From 56a984441b8f7c0aca8cceb36c7e2826a31797e2 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 28 Jan 2021 23:52:01 +0900 Subject: [PATCH 001/161] =?UTF-8?q?fix:=20=E3=82=BF=E3=83=83=E3=83=81?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=99=82=E3=81=AB=E3=82=B3=E3=83=B3=E3=83=86?= =?UTF-8?q?=E3=82=AD=E3=82=B9=E3=83=88=E3=83=A1=E3=83=8B=E3=83=A5=E3=83=BC?= =?UTF-8?q?=E3=81=8C=E6=93=8D=E4=BD=9C=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=84?= =?UTF-8?q?=E5=95=8F=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 適切にChange Detectionを発火させる --- src/app/service/pointer-device.service.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/app/service/pointer-device.service.ts b/src/app/service/pointer-device.service.ts index b04d89ce4..7fec6c440 100644 --- a/src/app/service/pointer-device.service.ts +++ b/src/app/service/pointer-device.service.ts @@ -33,7 +33,12 @@ export class PointerDeviceService { get pointerX(): number { return this.primaryPointer.x; } get pointerY(): number { return this.primaryPointer.y; } - isDragging: boolean = false; // todo + private _isDragging: boolean = false; // todo + get isDragging(): boolean { return this._isDragging; } + set isDragging(isDragging: boolean) { + if (isDragging === this._isDragging) return; + this.ngZone.run(() => this._isDragging = isDragging); + } constructor(private ngZone: NgZone) { } From 893c9766e7557ac1354ccb6c5be0009c3e2abf57 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 28 Jan 2021 23:52:39 +0900 Subject: [PATCH 002/161] =?UTF-8?q?refactor:=20=E5=9E=8B=E5=AE=9A=E7=BE=A9?= =?UTF-8?q?=E3=81=AE=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/component/game-table/table-touch-gesture.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/component/game-table/table-touch-gesture.ts b/src/app/component/game-table/table-touch-gesture.ts index 9b49cb308..4d302366e 100644 --- a/src/app/component/game-table/table-touch-gesture.ts +++ b/src/app/component/game-table/table-touch-gesture.ts @@ -2,7 +2,7 @@ import { NgZone } from '@angular/core'; type Callback = (srcEvent: TouchEvent | MouseEvent | PointerEvent) => void; type OnGestureCallback = (srcEvent: TouchEvent | MouseEvent | PointerEvent) => void; -type OnTransformCallback = (transformX: number, transformY: number, transformZ: number, rotateX: number, rotateY: number, rotateZ: number, event: string, srcEvent: TouchEvent | MouseEvent | PointerEvent) => void; +type OnTransformCallback = (transformX: number, transformY: number, transformZ: number, rotateX: number, rotateY: number, rotateZ: number, event: TableTouchGestureEvent, srcEvent: TouchEvent | MouseEvent | PointerEvent) => void; export enum TableTouchGestureEvent { PAN = 'pan', From 0a5f44c5f275f92239d2f43ed3ceef964232d513 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 28 Jan 2021 23:58:10 +0900 Subject: [PATCH 003/161] =?UTF-8?q?refactor:=20=E3=83=86=E3=83=BC=E3=83=96?= =?UTF-8?q?=E3=83=AB=E8=A6=96=E7=82=B9=E6=93=8D=E4=BD=9C=E3=82=92=E3=82=AF?= =?UTF-8?q?=E3=83=A9=E3=82=B9=E3=81=AB=E5=88=86=E9=9B=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../game-table/game-table.component.ts | 175 +++------------- .../game-table/table-mouse-gesture.ts | 196 ++++++++++++++++++ 2 files changed, 221 insertions(+), 150 deletions(-) create mode 100644 src/app/component/game-table/table-mouse-gesture.ts diff --git a/src/app/component/game-table/game-table.component.ts b/src/app/component/game-table/game-table.component.ts index f87aca1f2..4469a8832 100644 --- a/src/app/component/game-table/game-table.component.ts +++ b/src/app/component/game-table/game-table.component.ts @@ -16,7 +16,6 @@ import { Terrain } from '@udonarium/terrain'; import { TextNote } from '@udonarium/text-note'; import { GameTableSettingComponent } from 'component/game-table-setting/game-table-setting.component'; -import { InputHandler } from 'directive/input-handler'; import { ContextMenuAction, ContextMenuSeparator, ContextMenuService } from 'service/context-menu.service'; import { CoordinateService } from 'service/coordinate.service'; import { ImageService } from 'service/image.service'; @@ -26,15 +25,9 @@ import { TabletopActionService } from 'service/tabletop-action.service'; import { TabletopService } from 'service/tabletop.service'; import { GridLineRender } from './grid-line-render'; +import { TableMouseGesture } from './table-mouse-gesture'; import { TableTouchGesture, TableTouchGestureEvent } from './table-touch-gesture'; -enum Keyboard { - ArrowLeft = 'ArrowLeft', - ArrowUp = 'ArrowUp', - ArrowRight = 'ArrowRight', - ArrowDown = 'ArrowDown', -} - @Component({ selector: 'game-table', templateUrl: './game-table.component.html', @@ -65,9 +58,6 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { private isTransformMode: boolean = false; - private currentPositionX: number = 0; - private currentPositionY: number = 0; - get isPointerDragging(): boolean { return this.pointerDeviceService.isDragging; } private viewPotisonX: number = 100; @@ -78,8 +68,7 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { private viewRotateY: number = 0; private viewRotateZ: number = 10; - private buttonCode: number = 0; - private input: InputHandler = null; + private mouseGesture: TableMouseGesture = null; private gesture: TableTouchGesture = null; get characters(): GameCharacter[] { return this.tabletopService.characters; } @@ -94,7 +83,6 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { constructor( private ngZone: NgZone, private contextMenuService: ContextMenuService, - private elementRef: ElementRef, private pointerDeviceService: PointerDeviceService, private coordinateService: CoordinateService, private imageService: ImageService, @@ -123,12 +111,9 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { ngAfterViewInit() { this.ngZone.runOutsideAngular(() => { - this.input = new InputHandler(this.elementRef.nativeElement, { capture: true }); this.initializeTableTouchGesture(); + this.initializeTableMouseGesture(); }); - this.input.onStart = this.onInputStart.bind(this); - this.input.onMove = this.onInputMove.bind(this); - this.input.onEnd = this.onInputEnd.bind(this); this.cancelInput(); this.setGameTableGrid(this.currentTable.width, this.currentTable.height, this.currentTable.gridSize, this.currentTable.gridType, this.currentTable.gridColor); @@ -138,7 +123,7 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { ngOnDestroy() { EventSystem.unregister(this); - this.input.destroy(); + this.mouseGesture.destroy(); this.gesture.destroy(); } @@ -150,8 +135,15 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { this.gesture.ontransform = this.onTableTouchTransform.bind(this); } + initializeTableMouseGesture() { + this.mouseGesture = new TableMouseGesture(this.rootElementRef.nativeElement); + this.mouseGesture.onstart = this.onTableMouseStart.bind(this); + this.mouseGesture.onend = this.onTableMouseEnd.bind(this); + this.mouseGesture.ontransform = this.onTableMouseTransform.bind(this); + } + onTableTouchStart() { - this.input.cancel(); + this.mouseGesture.cancel(); } onTableTouchEnd() { @@ -163,7 +155,7 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { } onTableTouchTransform(transformX: number, transformY: number, transformZ: number, rotateX: number, rotateY: number, rotateZ: number, event: string, srcEvent: TouchEvent | MouseEvent | PointerEvent) { - if (event === TableTouchGestureEvent.PAN && (!this.isTransformMode || this.input.isGrabbing)) return; + if (event === TableTouchGestureEvent.PAN && (!this.isTransformMode || this.mouseGesture.isGrabbing)) return; if (!this.pointerDeviceService.isAllowedToOpenContextMenu && this.contextMenuService.isShow) { this.ngZone.run(() => this.contextMenuService.close()); @@ -182,10 +174,7 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { this.setTransform(transformX, transformY, transformZ, rotateX, rotateY, rotateZ); } - onInputStart(e: any) { - this.currentPositionX = this.input.pointer.x; - this.currentPositionY = this.input.pointer.y; - + onTableMouseStart(e: any) { if (e.target.contains(this.gameObjects.nativeElement) || e.button === 1 || e.button === 2) { this.isTransformMode = true; } else { @@ -194,144 +183,41 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { this.gridCanvas.nativeElement.style.opacity = 1.0 + ''; } - this.buttonCode = e.button; - if (!document.activeElement.contains(e.target)) { this.removeSelectionRanges(); this.removeFocus(); } } - onInputEnd(e: any) { + onTableMouseEnd(e: any) { this.cancelInput(); } - onInputMove(e: any) { - if (!this.isTransformMode) return; - - let x = this.input.pointer.x; - let y = this.input.pointer.y; - let deltaX = x - this.currentPositionX; - let deltaY = y - this.currentPositionY; - - let transformX = 0; - let transformY = 0; - let transformZ = 0; - - let rotateX = 0; - let rotateY = 0; - let rotateZ = 0; - - if (this.buttonCode === 2) { - rotateZ = -deltaX / 5; - rotateX = -deltaY / 5; - } else { - let scale = (1000 + Math.abs(this.viewPotisonZ)) / 1000; - transformX = deltaX * scale; - transformY = deltaY * scale; - } + onTableMouseTransform(transformX: number, transformY: number, transformZ: number, rotateX: number, rotateY: number, rotateZ: number, event: string, srcEvent: TouchEvent | MouseEvent | PointerEvent) { + if (!this.isTransformMode || document.body !== document.activeElement) return; if (!this.pointerDeviceService.isAllowedToOpenContextMenu && this.contextMenuService.isShow) { - this.ngZone.run(() => { this.contextMenuService.close(); }); + this.ngZone.run(() => this.contextMenuService.close()); } - this.currentPositionX = x; - this.currentPositionY = y; + if (srcEvent.cancelable) srcEvent.preventDefault(); + + // + let scale = (1000 + Math.abs(this.viewPotisonZ)) / 1000; + transformX *= scale; + transformY *= scale; - if (e.cancelable) e.preventDefault(); this.setTransform(transformX, transformY, transformZ, rotateX, rotateY, rotateZ); } cancelInput() { - this.input.cancel(); + this.mouseGesture.cancel(); this.isTransformMode = true; this.pointerDeviceService.isDragging = false; let opacity: number = this.tableSelecter.gridShow ? 1.0 : 0.0; this.gridCanvas.nativeElement.style.opacity = opacity + ''; } - @HostListener('wheel', ['$event']) - onWheel(e: WheelEvent) { - if (!this.isTransformMode) return; - - let pixelDeltaY = 0; - switch (e.deltaMode) { - case WheelEvent.DOM_DELTA_LINE: - pixelDeltaY = e.deltaY * 16; - break; - case WheelEvent.DOM_DELTA_PAGE: - pixelDeltaY = e.deltaY * window.innerHeight; - break; - default: - pixelDeltaY = e.deltaY; - break; - } - - let transformX = 0; - let transformY = 0; - let transformZ = 0; - - let rotateX = 0; - let rotateY = 0; - let rotateZ = 0; - - transformZ = pixelDeltaY * -1.5; - if (300 ** 2 < transformZ ** 2) transformZ = Math.min(Math.max(transformZ, -300), 300); - - this.setTransform(transformX, transformY, transformZ, rotateX, rotateY, rotateZ); - } - - @HostListener('document:keydown', ['$event']) - onKeydown(e: KeyboardEvent) { - if (!this.isTransformMode || document.body !== document.activeElement) return; - let transformX = 0; - let transformY = 0; - let transformZ = 0; - - let rotateX = 0; - let rotateY = 0; - let rotateZ = 0; - - let key = this.getKeyName(e); - switch (key) { - case Keyboard.ArrowLeft: - if (e.shiftKey) { - rotateZ = -2; - } else { - transformX = 10; - } - break; - case Keyboard.ArrowUp: - if (e.shiftKey) { - rotateX = -2; - } else if (e.ctrlKey) { - transformZ = 150; - } else { - transformY = 10; - } - break; - case Keyboard.ArrowRight: - if (e.shiftKey) { - rotateZ = 2; - } else { - transformX = -10; - } - break; - case Keyboard.ArrowDown: - if (e.shiftKey) { - rotateX = 2; - } else if (e.ctrlKey) { - transformZ = -150; - } else { - transformY = -10; - } - break; - } - let isArrowKey = Keyboard[key] != null; - if (isArrowKey) e.preventDefault(); - this.setTransform(transformX, transformY, transformZ, rotateX, rotateY, rotateZ); - } - @HostListener('contextmenu', ['$event']) onContextMenu(e: any) { if (!document.activeElement.contains(this.gameObjects.nativeElement)) return; @@ -353,17 +239,6 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { this.contextMenuService.open(menuPosition, menuActions, this.currentTable.name); } - private getKeyName(keyboard: KeyboardEvent): string { - if (keyboard.key) return keyboard.key; - switch (keyboard.keyCode) { - case 37: return Keyboard.ArrowLeft; - case 38: return Keyboard.ArrowUp; - case 39: return Keyboard.ArrowRight; - case 40: return Keyboard.ArrowDown; - default: return ''; - } - } - private setTransform(transformX: number, transformY: number, transformZ: number, rotateX: number, rotateY: number, rotateZ: number) { this.viewRotateX += rotateX; this.viewRotateY += rotateY; diff --git a/src/app/component/game-table/table-mouse-gesture.ts b/src/app/component/game-table/table-mouse-gesture.ts new file mode 100644 index 000000000..c49ed8e6e --- /dev/null +++ b/src/app/component/game-table/table-mouse-gesture.ts @@ -0,0 +1,196 @@ +import { InputHandler } from 'directive/input-handler'; + +type Callback = (srcEvent: TouchEvent | MouseEvent | PointerEvent) => void; +type OnTransformCallback = (transformX: number, transformY: number, transformZ: number, rotateX: number, rotateY: number, rotateZ: number, event: TableMouseGestureEvent, srcEvent: TouchEvent | MouseEvent | PointerEvent | KeyboardEvent) => void; + +export enum TableMouseGestureEvent { + DRAG = 'drag', + ZOOM = 'zoom', + ROTATE = 'rotate', + KEYBOARD = 'keyboard', +} + +enum Keyboard { + ArrowLeft = 'ArrowLeft', + ArrowUp = 'ArrowUp', + ArrowRight = 'ArrowRight', + ArrowDown = 'ArrowDown', +} + +export class TableMouseGesture { + private currentPositionX: number = 0; + private currentPositionY: number = 0; + + private buttonCode: number = 0; + private input: InputHandler = null; + + get isGrabbing(): boolean { return this.input.isGrabbing; } + get isDragging(): boolean { return this.input.isDragging; } + + private callbackOnWheel = (e) => this.onWheel(e); + private callbackOnKeydown = (e) => this.onKeydown(e); + + onstart: Callback = null; + onend: Callback = null; + ontransform: OnTransformCallback = null; + + constructor(readonly targetElement: HTMLElement) { + this.initialize(); + } + + private initialize() { + this.input = new InputHandler(this.targetElement, { capture: true }); + this.addEventListeners(); + this.input.onStart = this.onInputStart.bind(this); + this.input.onMove = this.onInputMove.bind(this); + this.input.onEnd = this.onInputEnd.bind(this); + } + + cancel() { + this.input.cancel(); + } + + destroy() { + this.input.destroy(); + this.removeEventListeners(); + } + + onInputStart(ev: any) { + this.currentPositionX = this.input.pointer.x; + this.currentPositionY = this.input.pointer.y; + this.buttonCode = ev.button; + if (this.onstart) this.onstart(ev); + } + + onInputEnd(ev: any) { + if (this.onend) this.onend(ev); + } + + onInputMove(ev: any) { + let x = this.input.pointer.x; + let y = this.input.pointer.y; + let deltaX = x - this.currentPositionX; + let deltaY = y - this.currentPositionY; + + let transformX = 0; + let transformY = 0; + let transformZ = 0; + + let rotateX = 0; + let rotateY = 0; + let rotateZ = 0; + + let event = TableMouseGestureEvent.DRAG; + + if (this.buttonCode === 2) { + event = TableMouseGestureEvent.ROTATE; + rotateZ = -deltaX / 5; + rotateX = -deltaY / 5; + } else { + transformX = deltaX; + transformY = deltaY; + } + + this.currentPositionX = x; + this.currentPositionY = y; + + if (this.ontransform) this.ontransform(transformX, transformY, transformZ, rotateX, rotateY, rotateZ, event, ev); + } + + onWheel(ev: WheelEvent) { + let pixelDeltaY = 0; + switch (ev.deltaMode) { + case WheelEvent.DOM_DELTA_LINE: + pixelDeltaY = ev.deltaY * 16; + break; + case WheelEvent.DOM_DELTA_PAGE: + pixelDeltaY = ev.deltaY * window.innerHeight; + break; + default: + pixelDeltaY = ev.deltaY; + break; + } + + let transformX = 0; + let transformY = 0; + let transformZ = 0; + + let rotateX = 0; + let rotateY = 0; + let rotateZ = 0; + + transformZ = pixelDeltaY * -1.5; + if (300 ** 2 < transformZ ** 2) transformZ = Math.min(Math.max(transformZ, -300), 300); + + if (this.ontransform) this.ontransform(transformX, transformY, transformZ, rotateX, rotateY, rotateZ, TableMouseGestureEvent.ZOOM, ev); + } + + onKeydown(ev: KeyboardEvent) { + let transformX = 0; + let transformY = 0; + let transformZ = 0; + + let rotateX = 0; + let rotateY = 0; + let rotateZ = 0; + + let key = this.getKeyName(ev); + switch (key) { + case Keyboard.ArrowLeft: + if (ev.shiftKey) { + rotateZ = -2; + } else { + transformX = 10; + } + break; + case Keyboard.ArrowUp: + if (ev.shiftKey) { + rotateX = -2; + } else if (ev.ctrlKey) { + transformZ = 150; + } else { + transformY = 10; + } + break; + case Keyboard.ArrowRight: + if (ev.shiftKey) { + rotateZ = 2; + } else { + transformX = -10; + } + break; + case Keyboard.ArrowDown: + if (ev.shiftKey) { + rotateX = 2; + } else if (ev.ctrlKey) { + transformZ = -150; + } else { + transformY = -10; + } + break; + } + let isArrowKey = Keyboard[key] != null; + if (isArrowKey && this.ontransform) this.ontransform(transformX, transformY, transformZ, rotateX, rotateY, rotateZ, TableMouseGestureEvent.KEYBOARD, ev); + } + + private getKeyName(keyboard: KeyboardEvent): string { + if (keyboard.key) return keyboard.key; + switch (keyboard.keyCode) { + case 37: return Keyboard.ArrowLeft; + case 38: return Keyboard.ArrowUp; + case 39: return Keyboard.ArrowRight; + case 40: return Keyboard.ArrowDown; + default: return ''; + } + } + + private addEventListeners() { + this.targetElement.addEventListener('wheel', this.callbackOnWheel, false); + document.body.addEventListener('keydown', this.callbackOnKeydown, false); + } + + private removeEventListeners() { + this.targetElement.removeEventListener('wheel', this.callbackOnWheel, false); + document.body.removeEventListener('keydown', this.callbackOnKeydown, false); + } +} From b088c8475a34d1b81f267d66e50adf4ac1bee090 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 29 Jan 2021 00:22:01 +0900 Subject: [PATCH 004/161] =?UTF-8?q?fix:=20=E6=9D=A1=E4=BB=B6=E5=BC=8F?= =?UTF-8?q?=E3=81=AE=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/component/game-table/game-table.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/component/game-table/game-table.component.ts b/src/app/component/game-table/game-table.component.ts index 4469a8832..8cdf81f7b 100644 --- a/src/app/component/game-table/game-table.component.ts +++ b/src/app/component/game-table/game-table.component.ts @@ -155,7 +155,7 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { } onTableTouchTransform(transformX: number, transformY: number, transformZ: number, rotateX: number, rotateY: number, rotateZ: number, event: string, srcEvent: TouchEvent | MouseEvent | PointerEvent) { - if (event === TableTouchGestureEvent.PAN && (!this.isTransformMode || this.mouseGesture.isGrabbing)) return; + if (!this.isTransformMode || document.body !== document.activeElement) return; if (!this.pointerDeviceService.isAllowedToOpenContextMenu && this.contextMenuService.isShow) { this.ngZone.run(() => this.contextMenuService.close()); From 0ffafa16ce3b47179d5068b9e0e75094fe52d411 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 29 Jan 2021 00:26:44 +0900 Subject: [PATCH 005/161] =?UTF-8?q?fix:=20maybeUnavailablePeerIds=E3=81=AE?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E3=82=BF=E3=82=A4=E3=83=9F=E3=83=B3=E3=82=B0?= =?UTF-8?q?=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/system/network/skyway-connection.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index c25712083..e58ca396c 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -224,6 +224,7 @@ export class SkyWayConnection implements Connection { let context: PeerContext = null; if (0 <= index) context = this.peerContexts[index]; + this.maybeUnavailablePeerIds.add(conn.remoteId); conn.on('data', data => { this.onData(conn, data); }); @@ -234,12 +235,10 @@ export class SkyWayConnection implements Connection { if (this.callback.onConnect) this.callback.onConnect(conn.remoteId); }); conn.on('close', () => { - this.maybeUnavailablePeerIds.add(conn.remoteId); this.closeDataConnection(conn); if (this.callback.onDisconnect) this.callback.onDisconnect(conn.remoteId); }); conn.on('error', err => { - this.maybeUnavailablePeerIds.add(conn.remoteId); this.closeDataConnection(conn); if (this.callback.onError) this.callback.onError(conn.remoteId, err); }); From 41fc8eb3769fb29b4653d864dd33d9da08ebc488 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 29 Jan 2021 00:44:02 +0900 Subject: [PATCH 006/161] =?UTF-8?q?refactor:=20=E5=86=97=E9=95=B7=E3=81=AA?= =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=82=92=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/component/dice-symbol/dice-symbol.component.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/component/dice-symbol/dice-symbol.component.ts b/src/app/component/dice-symbol/dice-symbol.component.ts index 015f2b9d0..3c9b48df7 100644 --- a/src/app/component/dice-symbol/dice-symbol.component.ts +++ b/src/app/component/dice-symbol/dice-symbol.component.ts @@ -77,7 +77,7 @@ export class DiceSymbolComponent implements OnInit, AfterViewInit, OnDestroy { get faces(): string[] { return this.diceSymbol.faces; } get imageFile(): ImageFile { let image = this.diceSymbol.imageFile; - return image ? image : this.emptyImage; + return image ? image : ImageFile.Empty; } get isMine(): boolean { return this.diceSymbol.isMine; } @@ -90,7 +90,6 @@ export class DiceSymbolComponent implements OnInit, AfterViewInit, OnDestroy { private iconHiddenTimer: NodeJS.Timer = null; get isIconHidden(): boolean { return this.iconHiddenTimer != null }; - private emptyImage: ImageFile = ImageFile.Empty; gridSize: number = 50; movableOption: MovableOption = {}; From a1ea635aefa439488f35295a2af614ebc981a767 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 30 Jan 2021 01:21:39 +0900 Subject: [PATCH 007/161] =?UTF-8?q?refactor:=20=E6=98=8E=E7=9E=AD=E3=81=AA?= =?UTF-8?q?=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/game-table/game-table.component.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/app/component/game-table/game-table.component.ts b/src/app/component/game-table/game-table.component.ts index 8cdf81f7b..f30a786d1 100644 --- a/src/app/component/game-table/game-table.component.ts +++ b/src/app/component/game-table/game-table.component.ts @@ -69,7 +69,7 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { private viewRotateZ: number = 10; private mouseGesture: TableMouseGesture = null; - private gesture: TableTouchGesture = null; + private touchGesture: TableTouchGesture = null; get characters(): GameCharacter[] { return this.tabletopService.characters; } get tableMasks(): GameTableMask[] { return this.tabletopService.tableMasks; } @@ -124,15 +124,15 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { ngOnDestroy() { EventSystem.unregister(this); this.mouseGesture.destroy(); - this.gesture.destroy(); + this.touchGesture.destroy(); } initializeTableTouchGesture() { - this.gesture = new TableTouchGesture(this.rootElementRef.nativeElement, this.ngZone); - this.gesture.onstart = this.onTableTouchStart.bind(this); - this.gesture.onend = this.onTableTouchEnd.bind(this); - this.gesture.ongesture = this.onTableTouchGesture.bind(this); - this.gesture.ontransform = this.onTableTouchTransform.bind(this); + this.touchGesture = new TableTouchGesture(this.rootElementRef.nativeElement, this.ngZone); + this.touchGesture.onstart = this.onTableTouchStart.bind(this); + this.touchGesture.onend = this.onTableTouchEnd.bind(this); + this.touchGesture.ongesture = this.onTableTouchGesture.bind(this); + this.touchGesture.ontransform = this.onTableTouchTransform.bind(this); } initializeTableMouseGesture() { From 3db3167090a4d43ba57010182bc58a2626c7db7b Mon Sep 17 00:00:00 2001 From: TK11235 Date: Tue, 2 Feb 2021 00:02:01 +0900 Subject: [PATCH 008/161] =?UTF-8?q?refactor:=20=E4=B8=8D=E8=A6=81=E3=81=AA?= =?UTF-8?q?import=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/component/game-table/game-table.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/component/game-table/game-table.component.ts b/src/app/component/game-table/game-table.component.ts index f30a786d1..bcd469795 100644 --- a/src/app/component/game-table/game-table.component.ts +++ b/src/app/component/game-table/game-table.component.ts @@ -26,7 +26,7 @@ import { TabletopService } from 'service/tabletop.service'; import { GridLineRender } from './grid-line-render'; import { TableMouseGesture } from './table-mouse-gesture'; -import { TableTouchGesture, TableTouchGestureEvent } from './table-touch-gesture'; +import { TableTouchGesture } from './table-touch-gesture'; @Component({ selector: 'game-table', From f129a70c69a2cfe35cbdc72eaa04160135a3f4e4 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Tue, 2 Feb 2021 00:06:23 +0900 Subject: [PATCH 009/161] =?UTF-8?q?feat:=20=E4=BB=AE=E3=81=AEImageFile?= =?UTF-8?q?=E3=82=92=E5=8F=96=E5=BE=97=E3=81=99=E3=82=8B=E3=83=A1=E3=82=BD?= =?UTF-8?q?=E3=83=83=E3=83=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/service/image.service.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/app/service/image.service.ts b/src/app/service/image.service.ts index c9bc4d7e2..3461faebe 100644 --- a/src/app/service/image.service.ts +++ b/src/app/service/image.service.ts @@ -1,5 +1,6 @@ import { Injectable } from '@angular/core'; import { ImageFile } from '@udonarium/core/file-storage/image-file'; +import { ImageStorage } from '@udonarium/core/file-storage/image-storage'; const skeletonImage: ImageFile = ImageFile.create('./assets/images/skeleton.png'); @@ -10,7 +11,17 @@ export class ImageService { constructor() { } - getSkeletonOr(image: ImageFile): ImageFile { + getSkeletonOr(image: ImageFile): ImageFile + getSkeletonOr(imageIdentifier: string): ImageFile + getSkeletonOr(arg: any): ImageFile { + let image: ImageFile = arg instanceof ImageFile ? arg : ImageStorage.instance.get(arg); return image && !image.isEmpty ? image : skeletonImage; } + + getEmptyOr(image: ImageFile): ImageFile + getEmptyOr(imageIdentifier: string): ImageFile + getEmptyOr(arg: any): ImageFile { + let image: ImageFile = arg instanceof ImageFile ? arg : ImageStorage.instance.get(arg); + return image && !image.isEmpty ? image : ImageFile.Empty; + } } From 28c07ddfff30803bdc40949be30ab2e973446b10 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Tue, 2 Feb 2021 00:07:22 +0900 Subject: [PATCH 010/161] =?UTF-8?q?refactor:=20ImageService=E3=82=92?= =?UTF-8?q?=E7=B5=8C=E7=94=B1=E3=81=97=E3=81=A6ImageFile=E3=82=92=E5=8F=96?= =?UTF-8?q?=E5=BE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/dice-symbol/dice-symbol.component.ts | 5 +++-- .../game-table-setting.component.ts | 11 ++++------- src/app/component/game-table/game-table.component.ts | 7 ++----- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/app/component/dice-symbol/dice-symbol.component.ts b/src/app/component/dice-symbol/dice-symbol.component.ts index 3c9b48df7..4c0576d4a 100644 --- a/src/app/component/dice-symbol/dice-symbol.component.ts +++ b/src/app/component/dice-symbol/dice-symbol.component.ts @@ -23,6 +23,7 @@ import { InputHandler } from 'directive/input-handler'; import { MovableOption } from 'directive/movable.directive'; import { RotableOption } from 'directive/rotable.directive'; import { ContextMenuAction, ContextMenuSeparator, ContextMenuService } from 'service/context-menu.service'; +import { ImageService } from 'service/image.service'; import { PanelOption, PanelService } from 'service/panel.service'; import { PointerDeviceService } from 'service/pointer-device.service'; @@ -76,8 +77,7 @@ export class DiceSymbolComponent implements OnInit, AfterViewInit, OnDestroy { get faces(): string[] { return this.diceSymbol.faces; } get imageFile(): ImageFile { - let image = this.diceSymbol.imageFile; - return image ? image : ImageFile.Empty; + return this.imageService.getEmptyOr(this.diceSymbol.imageFile); } get isMine(): boolean { return this.diceSymbol.isMine; } @@ -106,6 +106,7 @@ export class DiceSymbolComponent implements OnInit, AfterViewInit, OnDestroy { private contextMenuService: ContextMenuService, private elementRef: ElementRef, private changeDetector: ChangeDetectorRef, + private imageService: ImageService, private pointerDeviceService: PointerDeviceService) { } ngOnInit() { diff --git a/src/app/component/game-table-setting/game-table-setting.component.ts b/src/app/component/game-table-setting/game-table-setting.component.ts index e3cab860d..301ad63ac 100644 --- a/src/app/component/game-table-setting/game-table-setting.component.ts +++ b/src/app/component/game-table-setting/game-table-setting.component.ts @@ -1,7 +1,6 @@ import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core'; import { ImageFile } from '@udonarium/core/file-storage/image-file'; -import { ImageStorage } from '@udonarium/core/file-storage/image-storage'; import { ObjectSerializer } from '@udonarium/core/synchronize-object/object-serializer'; import { ObjectStore } from '@udonarium/core/synchronize-object/object-store'; import { EventSystem, Network } from '@udonarium/core/system'; @@ -9,6 +8,7 @@ import { FilterType, GameTable, GridType } from '@udonarium/game-table'; import { TableSelecter } from '@udonarium/table-selecter'; import { FileSelecterComponent } from 'component/file-selecter/file-selecter.component'; +import { ImageService } from 'service/image.service'; import { ModalService } from 'service/modal.service'; import { PanelService } from 'service/panel.service'; import { SaveDataService } from 'service/save-data.service'; @@ -22,15 +22,11 @@ export class GameTableSettingComponent implements OnInit, OnDestroy, AfterViewIn minSize: number = 1; maxSize: number = 100; get tableBackgroundImage(): ImageFile { - if (!this.selectedTable) return ImageFile.Empty; - let file = ImageStorage.instance.get(this.selectedTable.imageIdentifier); - return file ? file : ImageFile.Empty; + return this.imageService.getEmptyOr(this.selectedTable ? this.selectedTable.imageIdentifier : null); } get tableDistanceviewImage(): ImageFile { - if (!this.selectedTable) return ImageFile.Empty; - let file = ImageStorage.instance.get(this.selectedTable.backgroundImageIdentifier); - return file ? file : ImageFile.Empty; + return this.imageService.getEmptyOr(this.selectedTable ? this.selectedTable.backgroundImageIdentifier : null); } get tableName(): string { return this.selectedTable.name; } @@ -82,6 +78,7 @@ export class GameTableSettingComponent implements OnInit, OnDestroy, AfterViewIn constructor( private modalService: ModalService, private saveDataService: SaveDataService, + private imageService: ImageService, private panelService: PanelService ) { } diff --git a/src/app/component/game-table/game-table.component.ts b/src/app/component/game-table/game-table.component.ts index bcd469795..eaa0f249b 100644 --- a/src/app/component/game-table/game-table.component.ts +++ b/src/app/component/game-table/game-table.component.ts @@ -3,7 +3,6 @@ import { AfterViewInit, Component, ElementRef, HostListener, NgZone, OnDestroy, import { Card } from '@udonarium/card'; import { CardStack } from '@udonarium/card-stack'; import { ImageFile } from '@udonarium/core/file-storage/image-file'; -import { ImageStorage } from '@udonarium/core/file-storage/image-storage'; import { GameObject } from '@udonarium/core/synchronize-object/game-object'; import { EventSystem } from '@udonarium/core/system'; import { DiceSymbol } from '@udonarium/dice-symbol'; @@ -43,13 +42,11 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { get currentTable(): GameTable { return this.tabletopService.currentTable; } get tableImage(): ImageFile { - let file: ImageFile = ImageStorage.instance.get(this.currentTable.imageIdentifier); - return this.imageService.getSkeletonOr(file); + return this.imageService.getSkeletonOr(this.currentTable.imageIdentifier); } get backgroundImage(): ImageFile { - let file: ImageFile = ImageStorage.instance.get(this.currentTable.backgroundImageIdentifier); - return file ? file : ImageFile.Empty; + return this.imageService.getEmptyOr(this.currentTable.backgroundImageIdentifier); } get backgroundFilterType(): FilterType { From b98fadade6eb047ae4eb26ee6d2d57b748847658 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Wed, 3 Feb 2021 23:21:53 +0900 Subject: [PATCH 011/161] =?UTF-8?q?style:=20=E3=82=B3=E3=83=BC=E3=83=89?= =?UTF-8?q?=E6=95=B4=E5=BD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/Jukebox.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/class/Jukebox.ts b/src/app/class/Jukebox.ts index 4b81cb4a0..29f704671 100644 --- a/src/app/class/Jukebox.ts +++ b/src/app/class/Jukebox.ts @@ -54,7 +54,7 @@ export class Jukebox extends GameObject { } private _stop() { - this.unregisterEvent() + this.unregisterEvent(); this.audioPlayer.stop(); } From 7cc812159b22797d2063990b80f7931d099b7223 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 11 Feb 2021 21:25:04 +0900 Subject: [PATCH 012/161] =?UTF-8?q?refactor:=20=E4=B8=8D=E8=A6=81=E3=81=AA?= =?UTF-8?q?console.log=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/app.component.ts | 2 +- src/app/component/file-selecter/file-selecter.component.ts | 1 - src/app/service/app-config.service.ts | 2 -- 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 27cedf6bc..7c6a2c9b4 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -141,7 +141,7 @@ export class AppComponent implements AfterViewInit, OnDestroy { .on('SYNCHRONIZE_AUDIO_LIST', event => { if (event.isSendFromSelf) this.lazyNgZoneUpdate(false); }) .on('SYNCHRONIZE_FILE_LIST', event => { if (event.isSendFromSelf) this.lazyNgZoneUpdate(false); }) .on('LOAD_CONFIG', event => { - console.log('LOAD_CONFIG !!!', event.data); + console.log('LOAD_CONFIG !!!'); Network.setApiKey(event.data.webrtc.key); Network.open(); }) diff --git a/src/app/component/file-selecter/file-selecter.component.ts b/src/app/component/file-selecter/file-selecter.component.ts index 02f936e6c..c2b392875 100644 --- a/src/app/component/file-selecter/file-selecter.component.ts +++ b/src/app/component/file-selecter/file-selecter.component.ts @@ -50,7 +50,6 @@ export class FileSelecterComponent implements OnInit, OnDestroy, AfterViewInit { } onSelectedFile(file: ImageFile) { - console.log('onSelectedFile', file); EventSystem.call('SELECT_FILE', { fileIdentifier: file.identifier }, Network.peerId); this.modalService.resolve(file.identifier); } diff --git a/src/app/service/app-config.service.ts b/src/app/service/app-config.service.ts index 289634e5f..d6e6cb6aa 100644 --- a/src/app/service/app-config.service.ts +++ b/src/app/service/app-config.service.ts @@ -96,7 +96,6 @@ export class AppConfigService { let config = await this.loadYaml(); let obj = yaml.safeLoad(config); AppConfigService.applyConfig(obj); - console.log(AppConfigService.appConfig); } catch (e) { console.warn(e); } @@ -112,7 +111,6 @@ export class AppConfigService { return; } - console.log('loadYaml ready...', config); let configString = config.textContent; let url = config.getAttribute('src'); From 1f8f16d6d9973611ec02d3500252214e8629f81b Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 27 Feb 2021 00:36:27 +0900 Subject: [PATCH 013/161] =?UTF-8?q?build:=20=E4=BE=9D=E5=AD=98=E3=83=91?= =?UTF-8?q?=E3=83=83=E3=82=B1=E3=83=BC=E3=82=B8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- angular.json | 1 + package-lock.json | 178 ++++++++++++++---- package.json | 22 +-- .../core/file-storage/file-reader-util.ts | 4 +- .../class/core/system/network/peer-context.ts | 2 +- src/app/service/app-config.service.ts | 4 +- 6 files changed, 159 insertions(+), 52 deletions(-) diff --git a/angular.json b/angular.json index a8b8d5396..f608e2fdd 100644 --- a/angular.json +++ b/angular.json @@ -33,6 +33,7 @@ "crypto-js/lib-typedarrays.js", "file-saver", "msgpack-lite", + "lzbase62", "pako" ] }, diff --git a/package-lock.json b/package-lock.json index 85da83c62..51174638d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1734,15 +1734,15 @@ "dev": true }, "@types/crypto-js": { - "version": "3.1.47", - "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-3.1.47.tgz", - "integrity": "sha512-eI6gvpcGHLk3dAuHYnRCAjX+41gMv1nz/VP55wAe5HtmAKDOoPSfr3f6vkMc08ov1S0NsjvUBxDtHHxqQY1LGA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.0.1.tgz", + "integrity": "sha512-6+OPzqhKX/cx5xh+yO8Cqg3u3alrkhoxhE5ZOdSEv0DOzJ13lwJ6laqGU0Kv6+XDMFmlnGId04LtY22PsFLQUw==", "dev": true }, "@types/file-saver": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-1.3.1.tgz", - "integrity": "sha512-A+lNc0nnhtX3iTLEYd/DisKTZdNKTf1bN0aSfQD/fG8bQ6SfUe5u8Fm2ab8qQHaMY5GVZumAXLnYptwX+mmQgg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.1.tgz", + "integrity": "sha512-g1QUuhYVVAamfCifK7oB7G3aIl4BbOyzDOqVyUfEr4tfBKrXfeH+M+Tg7HKCXSrbzxYdhyCP7z9WbKo0R2hBCw==", "dev": true }, "@types/glob": { @@ -1756,9 +1756,9 @@ } }, "@types/hammerjs": { - "version": "2.0.36", - "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.36.tgz", - "integrity": "sha512-7TUK/k2/QGpEAv/BCwSHlYu3NXZhQ9ZwBYpzr9tjlPIL2C5BeGhH3DmVavRx3ZNyELX5TLC91JTz/cen6AAtIQ==", + "version": "2.0.39", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.39.tgz", + "integrity": "sha512-lYR2Y/tV2ujpk/WyUc7S0VLI0a9hrtVIN9EwnrNo5oSEJI2cK2/XrgwOQmXLL3eTulOESvh9qP6si9+DWM9cOA==", "dev": true }, "@types/jasmine": { @@ -1777,9 +1777,9 @@ } }, "@types/js-yaml": { - "version": "3.12.4", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.4.tgz", - "integrity": "sha512-fYMgzN+9e28R81weVN49inn/u798ruU91En1ZnGvSZzCRc5jXx9B2EDhlRaWmcO1RIxFHL8AajRXzxDuJu93+A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-4vlpCM5KPCL5CfGmTbpjwVKbISRYhduEJvvUWsH5EB7QInhEj94XPZ3ts/9FPiLZFqYO0xoW4ZL8z2AabTGgJA==", "dev": true }, "@types/json-schema": { @@ -2243,12 +2243,9 @@ "dev": true }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "aria-query": { "version": "3.0.0", @@ -2639,6 +2636,16 @@ "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "blob": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", @@ -2857,6 +2864,14 @@ "dev": true, "requires": { "pako": "~1.0.5" + }, + "dependencies": { + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + } } }, "browserslist": { @@ -3732,6 +3747,27 @@ "is-directory": "^0.3.1", "js-yaml": "^3.13.1", "parse-json": "^4.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } } }, "create-ecdh": { @@ -4813,7 +4849,8 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esrecurse": { "version": "4.3.0", @@ -5251,9 +5288,16 @@ } }, "file-saver": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.2.tgz", - "integrity": "sha512-Wz3c3XQ5xroCxd1G8b7yL0Ehkf0TC9oYC6buPFkNnU9EnaPlifeAFCyCh+iewXTyFRcg0a6j3J7FmJsIhlhBdw==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true }, "fill-range": { "version": "7.0.1", @@ -6837,12 +6881,11 @@ "dev": true }, "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, "jsbn": { @@ -6945,6 +6988,13 @@ "lie": "~3.1.0", "pako": "~1.0.2", "readable-stream": "~2.0.6" + }, + "dependencies": { + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + } } }, "karma": { @@ -7453,9 +7503,9 @@ } }, "lzbase62": { - "version": "1.4.9", - "resolved": "https://registry.npmjs.org/lzbase62/-/lzbase62-1.4.9.tgz", - "integrity": "sha1-Avv6AY5BHUUWlZoaDvzehp1inZw=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lzbase62/-/lzbase62-2.0.0.tgz", + "integrity": "sha512-hq7ZI8T42YVgSxCFHzg/Gt3GUKGZdQXKejvubdLjzxjiF5Tn9xKoWvZLZSY1u0+Orct+bxQMmb8XIcbXzR+2tg==" }, "magic-string": { "version": "0.25.7", @@ -7954,6 +8004,13 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "dev": true, + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -8840,9 +8897,9 @@ } }, "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.3.tgz", + "integrity": "sha512-WjR1hOeg+kki3ZIOjaf4b5WVcay1jaliKSYiEaB1XzwhMQZJxRdQRv0V31EKBYlxb4T7SK3hjfc/jxyU64BoSw==" }, "parallel-transform": { "version": "1.2.0", @@ -11815,7 +11872,8 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", @@ -12215,6 +12273,27 @@ "stable": "^0.1.8", "unquote": "~1.1.1", "util.promisify": "~1.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } } }, "symbol-observable": { @@ -12539,6 +12618,25 @@ "tsutils": "^2.29.0" }, "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -13085,7 +13183,11 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", @@ -13711,7 +13813,11 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", diff --git a/package.json b/package.json index 8b3d35e4e..c45e30080 100644 --- a/package.json +++ b/package.json @@ -20,17 +20,17 @@ "@angular/platform-browser": "^11.0.7", "@angular/platform-browser-dynamic": "^11.0.7", "@angular/router": "^11.0.7", - "crypto-js": "^3.1.9-1", - "file-saver": "^2.0.2", + "crypto-js": "^3.3.0", + "file-saver": "^2.0.5", "hammerjs": "^2.0.8", - "js-yaml": "^3.13.1", + "js-yaml": "^4.0.0", "jszip": "~3.1.5", - "lzbase62": "^1.4.9", + "lzbase62": "^2.0.0", "msgpack-lite": "^0.1.26", - "pako": "^1.0.10", + "pako": "^2.0.0", "rxjs": "^6.6.3", "tslib": "^2.0.0", - "vkbeautify": "^0.99.1", + "vkbeautify": "^0.99.3", "zone.js": "~0.10.3" }, "devDependencies": { @@ -38,17 +38,17 @@ "@angular/cli": "^11.0.6", "@angular/compiler-cli": "^11.0.7", "@angular/language-service": "^11.0.7", - "@types/crypto-js": "^3.1.33", - "@types/file-saver": "^1.3.0", - "@types/hammerjs": "^2.0.36", + "@types/crypto-js": "^4.0.1", + "@types/file-saver": "^2.0.1", + "@types/hammerjs": "^2.0.39", "@types/jasmine": "^3.5.0", "@types/jasminewd2": "^2.0.8", - "@types/js-yaml": "^3.12.1", + "@types/js-yaml": "^4.0.0", "@types/jszip": "^3.1.7", "@types/msgpack-lite": "^0.1.7", "@types/node": "^12.11.1", "@types/pako": "^1.0.1", - "@types/vkbeautify": "^0.99.1", + "@types/vkbeautify": "^0.99.2", "codelyzer": "^6.0.0", "jasmine-core": "~3.6.0", "jasmine-spec-reporter": "~5.0.0", diff --git a/src/app/class/core/file-storage/file-reader-util.ts b/src/app/class/core/file-storage/file-reader-util.ts index d130cab13..1e99fee22 100644 --- a/src/app/class/core/file-storage/file-reader-util.ts +++ b/src/app/class/core/file-storage/file-reader-util.ts @@ -36,7 +36,7 @@ export namespace FileReaderUtil { } function _calcSHA256(arrayBuffer: ArrayBuffer): string { - let wordArray = WordArray.create(arrayBuffer); - return SHA256(wordArray).toString(); + let wordArray = WordArray.create(arrayBuffer as any); + return SHA256(wordArray).toString(); } } diff --git a/src/app/class/core/system/network/peer-context.ts b/src/app/class/core/system/network/peer-context.ts index 092d2811c..23875e632 100644 --- a/src/app/class/core/system/network/peer-context.ts +++ b/src/app/class/core/system/network/peer-context.ts @@ -1,6 +1,6 @@ -import * as lzbase62 from 'lzbase62/lzbase62.min.js'; import * as CryptoJS from 'crypto-js/core.js'; import * as SHA256 from 'crypto-js/sha256.js'; +import * as lzbase62 from 'lzbase62'; import { base } from '../util/base-x'; diff --git a/src/app/service/app-config.service.ts b/src/app/service/app-config.service.ts index d6e6cb6aa..73c35d956 100644 --- a/src/app/service/app-config.service.ts +++ b/src/app/service/app-config.service.ts @@ -3,7 +3,7 @@ import { Injectable } from '@angular/core'; import { EventSystem, Network } from '@udonarium/core/system'; import { Database } from '@udonarium/database/database'; -import * as yaml from 'js-yaml/dist/js-yaml.min.js'; +import * as yaml from 'js-yaml'; export interface AppConfig { webrtc: { @@ -94,7 +94,7 @@ export class AppConfigService { try { console.log('YAML読み込み...'); let config = await this.loadYaml(); - let obj = yaml.safeLoad(config); + let obj = yaml.load(config); AppConfigService.applyConfig(obj); } catch (e) { console.warn(e); From 7a141096b87397c679de45d3e13b570970cf681a Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 27 Feb 2021 00:40:53 +0900 Subject: [PATCH 014/161] =?UTF-8?q?refactor:=20import=E5=AE=9A=E7=BE=A9?= =?UTF-8?q?=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- angular.json | 4 ++-- src/app/class/core/file-storage/file-reader-util.ts | 5 ++--- src/app/class/core/system/network/peer-context.ts | 3 +-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/angular.json b/angular.json index f608e2fdd..0f7fdf10d 100644 --- a/angular.json +++ b/angular.json @@ -29,8 +29,8 @@ "scripts": [], "allowedCommonJsDependencies": [ "hammerjs", - "crypto-js/sha256.js", - "crypto-js/lib-typedarrays.js", + "crypto-js/sha256", + "crypto-js/lib-typedarrays", "file-saver", "msgpack-lite", "lzbase62", diff --git a/src/app/class/core/file-storage/file-reader-util.ts b/src/app/class/core/file-storage/file-reader-util.ts index 1e99fee22..d54714fca 100644 --- a/src/app/class/core/file-storage/file-reader-util.ts +++ b/src/app/class/core/file-storage/file-reader-util.ts @@ -1,6 +1,5 @@ -import * as CryptoJS from 'crypto-js/core.js'; -import * as WordArray from 'crypto-js/lib-typedarrays.js'; -import * as SHA256 from 'crypto-js/sha256.js'; +import * as WordArray from 'crypto-js/lib-typedarrays'; +import * as SHA256 from 'crypto-js/sha256'; export namespace FileReaderUtil { export function readAsArrayBufferAsync(blob: Blob): Promise { diff --git a/src/app/class/core/system/network/peer-context.ts b/src/app/class/core/system/network/peer-context.ts index 23875e632..dfd7b1b46 100644 --- a/src/app/class/core/system/network/peer-context.ts +++ b/src/app/class/core/system/network/peer-context.ts @@ -1,6 +1,5 @@ -import * as CryptoJS from 'crypto-js/core.js'; -import * as SHA256 from 'crypto-js/sha256.js'; import * as lzbase62 from 'lzbase62'; +import * as SHA256 from 'crypto-js/sha256'; import { base } from '../util/base-x'; From a256fe6cfef246c45315ac7294cd8a6617bef380 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sun, 28 Feb 2021 02:04:35 +0900 Subject: [PATCH 015/161] =?UTF-8?q?build:=20angular=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 5968 +++++++++++++++++++++++++-------------------- package.json | 28 +- 2 files changed, 3325 insertions(+), 2671 deletions(-) diff --git a/package-lock.json b/package-lock.json index 51174638d..9932693e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,136 +5,188 @@ "requires": true, "dependencies": { "@angular-devkit/architect": { - "version": "0.1100.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1100.6.tgz", - "integrity": "sha512-4O+cg3AimI2bNAxxdu5NrqSf4Oa8r8xL0+G2Ycd3jLoFv0h0ecJiNKEG5F6IpTprb4aexZD6pcxBJCqQ8MmzWQ==", + "version": "0.1102.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.2.tgz", + "integrity": "sha512-FE7DeT13elqDlELF23QqvEFnT2BkxeC5t31/QW85IN/OR5Tf/q7XEpj7giJXyzKFQ60M3ZzbznZyRz0EqtfaBQ==", "dev": true, "requires": { - "@angular-devkit/core": "11.0.6", + "@angular-devkit/core": "11.2.2", "rxjs": "6.6.3" + }, + "dependencies": { + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "@angular-devkit/build-angular": { - "version": "0.1100.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1100.6.tgz", - "integrity": "sha512-HcqsWiSIUxExGg3HRQScLOmF+ckVkCKolfpPcNOCCpBYxH/i8n4wDGLBP5Rtxky+0Qz+3nnAaFIpNb9p9aUmbg==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1100.6", - "@angular-devkit/build-optimizer": "0.1100.6", - "@angular-devkit/build-webpack": "0.1100.6", - "@angular-devkit/core": "11.0.6", - "@babel/core": "7.12.3", - "@babel/generator": "7.12.1", - "@babel/plugin-transform-runtime": "7.12.1", - "@babel/preset-env": "7.12.1", - "@babel/runtime": "7.12.1", - "@babel/template": "7.10.4", + "version": "0.1102.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1102.2.tgz", + "integrity": "sha512-AjnvHrzkYTzDGzp0r5RmGoP9fyZXtaVFo0598PRusi1oWp1sW6B5FKPWw896iREOlotRXw3dsjqrGwbMcz0qyg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1102.2", + "@angular-devkit/build-optimizer": "0.1102.2", + "@angular-devkit/build-webpack": "0.1102.2", + "@angular-devkit/core": "11.2.2", + "@babel/core": "7.12.10", + "@babel/generator": "7.12.11", + "@babel/plugin-transform-async-to-generator": "7.12.1", + "@babel/plugin-transform-runtime": "7.12.10", + "@babel/preset-env": "7.12.11", + "@babel/runtime": "7.12.5", + "@babel/template": "7.12.7", "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@ngtools/webpack": "11.0.6", + "@ngtools/webpack": "11.2.2", "ansi-colors": "4.1.1", - "autoprefixer": "9.8.6", - "babel-loader": "8.1.0", + "autoprefixer": "10.2.4", + "babel-loader": "8.2.2", "browserslist": "^4.9.1", "cacache": "15.0.5", "caniuse-lite": "^1.0.30001032", - "circular-dependency-plugin": "5.2.0", - "copy-webpack-plugin": "6.2.1", - "core-js": "3.6.5", - "css-loader": "4.3.0", + "circular-dependency-plugin": "5.2.2", + "copy-webpack-plugin": "6.3.2", + "core-js": "3.8.3", + "critters": "0.0.7", + "css-loader": "5.0.1", "cssnano": "4.1.10", - "file-loader": "6.1.1", + "file-loader": "6.2.0", "find-cache-dir": "3.3.1", "glob": "7.1.6", + "https-proxy-agent": "5.0.0", "inquirer": "7.3.3", - "jest-worker": "26.5.0", + "jest-worker": "26.6.2", "karma-source-map-support": "1.4.0", - "less": "3.12.2", - "less-loader": "7.0.2", - "license-webpack-plugin": "2.3.1", + "less": "4.1.1", + "less-loader": "7.3.0", + "license-webpack-plugin": "2.3.11", "loader-utils": "2.0.0", - "mini-css-extract-plugin": "1.2.1", + "mini-css-extract-plugin": "1.3.5", "minimatch": "3.0.4", - "open": "7.3.0", - "ora": "5.1.0", + "open": "7.4.0", + "ora": "5.3.0", "parse5-html-rewriting-stream": "6.0.1", "pnp-webpack-plugin": "1.6.4", - "postcss": "7.0.32", - "postcss-import": "12.0.1", - "postcss-loader": "4.0.4", + "postcss": "8.2.4", + "postcss-import": "14.0.0", + "postcss-loader": "4.2.0", "raw-loader": "4.0.2", "regenerator-runtime": "0.13.7", "resolve-url-loader": "3.1.2", "rimraf": "3.0.2", - "rollup": "2.32.1", + "rollup": "2.38.4", "rxjs": "6.6.3", - "sass": "1.27.0", - "sass-loader": "10.0.5", - "semver": "7.3.2", + "sass": "1.32.6", + "sass-loader": "10.1.1", + "semver": "7.3.4", "source-map": "0.7.3", - "source-map-loader": "1.1.2", + "source-map-loader": "1.1.3", "source-map-support": "0.5.19", - "speed-measure-webpack-plugin": "1.3.3", + "speed-measure-webpack-plugin": "1.4.2", "style-loader": "2.0.0", "stylus": "0.54.8", - "stylus-loader": "4.3.1", - "terser": "5.3.7", + "stylus-loader": "4.3.3", + "terser": "5.5.1", "terser-webpack-plugin": "4.2.3", "text-table": "0.2.0", "tree-kill": "1.2.2", "webpack": "4.44.2", "webpack-dev-middleware": "3.7.2", - "webpack-dev-server": "3.11.0", - "webpack-merge": "5.2.0", - "webpack-sources": "2.0.1", - "webpack-subresource-integrity": "1.5.1", + "webpack-dev-server": "3.11.2", + "webpack-merge": "5.7.3", + "webpack-sources": "2.2.0", + "webpack-subresource-integrity": "1.5.2", "worker-plugin": "5.0.0" }, "dependencies": { "core-js": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz", + "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==", + "dev": true + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "@angular-devkit/build-optimizer": { - "version": "0.1100.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1100.6.tgz", - "integrity": "sha512-Qkq7n6510N+nXmfZqpqpI0I6Td+b+06RRNmS7KftSNJntU1z5QYh4FggwlthZ5P0QUT92cnBQsnT8OgYqGnwbg==", + "version": "0.1102.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1102.2.tgz", + "integrity": "sha512-TCWWqAe+pWZzLp/g2gG8Z5NC8JSgDNfyEuMBWxEUfo1Sm3BluXoz0BbmnietuhXJZ+fPAp9rLLzEGZlHvOlmOA==", "dev": true, "requires": { "loader-utils": "2.0.0", "source-map": "0.7.3", - "tslib": "2.0.3", - "typescript": "4.0.5", - "webpack-sources": "2.0.1" + "tslib": "2.1.0", + "typescript": "4.1.3", + "webpack-sources": "2.2.0" }, "dependencies": { - "tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "typescript": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", + "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", "dev": true } } }, "@angular-devkit/build-webpack": { - "version": "0.1100.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1100.6.tgz", - "integrity": "sha512-kK0FlpYJHP25o1yzIGHQqIvO5kp+p6V5OwGpD2GGRZLlJqd3WdjY5DxnyZoX3/IofO6KsTnmm76fzTRqc62z/Q==", + "version": "0.1102.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1102.2.tgz", + "integrity": "sha512-59CBbwbdN8lI5/whuNeAZHRJxPlOmDc5ux8aJJNwWI9w54fz0ut/MLT3iuPk+WZuKlGdpS1sGkObfZwWen5kIQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1100.6", - "@angular-devkit/core": "11.0.6", + "@angular-devkit/architect": "0.1102.2", + "@angular-devkit/core": "11.2.2", "rxjs": "6.6.3" + }, + "dependencies": { + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "@angular-devkit/core": { - "version": "11.0.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.0.6.tgz", - "integrity": "sha512-nhvU5hH01r9qcexAqvIFU233treWWeW3ncs9UFYjD9Hys9sDSvqC3+bvGvl9vCG5FsyY7oDsjaVAipyUc+SFAg==", + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.2.tgz", + "integrity": "sha512-LUDO1AdIjereiMh0j5p9xJcdr9ifhbWCPxlZqfu5wHzUfhCx9gO2Lvjp6rZXQ3OedXg5IZUnyxHlzkszQOsgiw==", "dev": true, "requires": { "ajv": "6.12.6", @@ -144,120 +196,127 @@ "source-map": "0.7.3" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", "dev": true, "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "tslib": "^1.9.0" } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true } } }, "@angular-devkit/schematics": { - "version": "11.0.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.0.6.tgz", - "integrity": "sha512-hCyu/SSSiC6dKl/NxdWctknIrBqKR6pRe7DMArWowrZX6P9oi36LpKEFnKutE8+tXjsOqQj8XMBq9L64sXZWqg==", + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.2.2.tgz", + "integrity": "sha512-6bIxMwafz/+lwdtcshwOuFfhxTMU4RLma1uxBS34DXupMauPGl0IIXAy5cK9dXPlHLxuGsjeBiOM6eq033RLgw==", "dev": true, "requires": { - "@angular-devkit/core": "11.0.6", - "ora": "5.1.0", + "@angular-devkit/core": "11.2.2", + "ora": "5.3.0", "rxjs": "6.6.3" + }, + "dependencies": { + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "@angular/animations": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-11.0.7.tgz", - "integrity": "sha512-P3cluDGIsaj7vqvqIGW7xFCIXWa1lJDsHsmY3Fexk+ZVCncokftp5ZUANb2+DwOD3BPgd/WjBdXVjwzFQFsoVA==", + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-11.2.3.tgz", + "integrity": "sha512-Z6sHIeTeeZrRAW83NI7FO7THF50cPCFkkuvVah3qmCqopY6FuoHKUBEENyGzQGH69LbGFYhEppY8KM/6JtVF6Q==", "requires": { "tslib": "^2.0.0" } }, "@angular/cli": { - "version": "11.0.6", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-11.0.6.tgz", - "integrity": "sha512-bwrXXyU23HjUlFl0CNCU+XMGa/enooqpMLcTAA15StVpKFHyaA4c57il/aqu+1IuB+zR6rGDzhAABuvRcHd+mQ==", + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-11.2.2.tgz", + "integrity": "sha512-rOVBzDzrMuOgJY43O46/7yYbncx0egGfr+DMJDQdazePGH1H3INN/eA9gkVcVK53ztCYb9X1sbZKOs9TUhF6nw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1100.6", - "@angular-devkit/core": "11.0.6", - "@angular-devkit/schematics": "11.0.6", - "@schematics/angular": "11.0.6", - "@schematics/update": "0.1100.6", + "@angular-devkit/architect": "0.1102.2", + "@angular-devkit/core": "11.2.2", + "@angular-devkit/schematics": "11.2.2", + "@schematics/angular": "11.2.2", + "@schematics/update": "0.1102.2", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", - "debug": "4.2.0", - "ini": "1.3.6", + "debug": "4.3.1", + "ini": "2.0.0", "inquirer": "7.3.3", + "jsonc-parser": "3.0.0", "npm-package-arg": "8.1.0", "npm-pick-manifest": "6.1.0", - "open": "7.3.0", - "pacote": "9.5.12", - "resolve": "1.18.1", + "open": "7.4.0", + "ora": "5.3.0", + "pacote": "11.2.4", + "resolve": "1.19.0", "rimraf": "3.0.2", - "semver": "7.3.2", - "symbol-observable": "2.0.3", + "semver": "7.3.4", + "symbol-observable": "3.0.0", "universal-analytics": "0.4.23", - "uuid": "8.3.1" + "uuid": "8.3.2" }, "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ini": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.6.tgz", - "integrity": "sha512-IZUoxEjNjubzrmvzZU4lKP7OnYmX72XRl3sqkfJhBKweKi5rnGi5+IUdlj/H1M+Ip5JQ1WzaDMOBRY90Ajc5jg==", - "dev": true - }, "resolve": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", - "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", "dev": true, "requires": { - "is-core-module": "^2.0.0", + "is-core-module": "^2.1.0", "path-parse": "^1.0.6" } }, "uuid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", - "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true } } }, "@angular/common": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-11.0.7.tgz", - "integrity": "sha512-9VuT9qrSP7Q91Wp276DDieCIZiTBrpLNoJzK/RygQShTymCVPg4Dsl3tQUKaHBPx9MexeqRG/HjN02DVpeqtsA==", + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-11.2.3.tgz", + "integrity": "sha512-51gVmr942SZtAFmhVfp7/3fcTQ+Tia7UxWjv6iUtYF3oCvTWbo/J1zki2VNSfmMNKJV8MaMq6XUw8UWbHA0sgQ==", "requires": { "tslib": "^2.0.0" } }, "@angular/compiler": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-11.0.7.tgz", - "integrity": "sha512-U+aGn6lP3iB184D2Z+OSK5vCwNtxtsF59T7nNJBMCCwcN7Qc5tfDBbSj1GI11XrIiuuoOxXbAp9BKS0dAyNCWw==", + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-11.2.3.tgz", + "integrity": "sha512-De8BwtSwPVYGdvQa6CDq2C1SLmB78YjS0t/KNlvfp85cl4Gb3BdjTDsKMkJXkm/3ubnIXi1BaRIsFNVTCCF70Q==", "requires": { "tslib": "^2.0.0" } }, "@angular/compiler-cli": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-11.0.7.tgz", - "integrity": "sha512-04agqIPmw1exMeZjJmRzeYFgTEXYJ7gKD8TZipsGlu99uU/NQJIsetpzR7/bhPAKDH6YO0p/uavxV0nRpSTIQw==", + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-11.2.3.tgz", + "integrity": "sha512-ObQVI6q2c0VTWbsDnWJDdUZv2Jz/u1jiQNcrdtu/rjtJARaldEno9dMakN838Q6Nw4FzKUO6uYZXmnvKCUjfxQ==", "dev": true, "requires": { "@babel/core": "^7.8.6", @@ -277,12 +336,6 @@ "yargs": "^16.1.1" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -330,15 +383,6 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -372,124 +416,97 @@ } }, "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "version": "20.2.6", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz", + "integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==", "dev": true } } }, "@angular/core": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-11.0.7.tgz", - "integrity": "sha512-Kj5uRZoK5+xfMTjkP3tw8oIF5hKTnoF9Bwh5m9GUKqg1wHVKOJcT5JBIEMc8qPyiFgALREA01reIzQdGMjX36A==", + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-11.2.3.tgz", + "integrity": "sha512-+G7rZj21Mcmf6nWjQ79EwomwEOVQ1WLqw6YvCXWzgJ9ZlVjLi/Sti0/jIzUpgK0E0Fn86yuXw/vgYq5kjGeOcQ==", "requires": { "tslib": "^2.0.0" } }, "@angular/forms": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-11.0.7.tgz", - "integrity": "sha512-+3A+SciMyHTdUwkKUz4XzC1DSYexQEbFLe0PKQIFSFOROmbssjnWJv7yO2HbzCpGa7oGKPYNlE5twYWyLxpvFg==", + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-11.2.3.tgz", + "integrity": "sha512-VfyKV8IxHTclcHQmt5gjGFmKC1kGz7sdNLYsEM+M0y88Bsufh3VIhK4kspfO4nhJxVfh6HFOt1JVQ5bvo6PDlQ==", "requires": { "tslib": "^2.0.0" } }, "@angular/language-service": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-11.0.7.tgz", - "integrity": "sha512-1IiJNwy/phjpYfqLVlhOp4Gr/A89joydwqPB7Nf7hbhl3xFnT98GOp/nsoZCwMBKotXYNk93m025LbJ++augfQ==", + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-11.2.3.tgz", + "integrity": "sha512-6PDInFDTQ2oP1mzD2W4fR5/pPFqbHRikXsNbIKnejeAxzcyoPQ9zxIKl7mmrS4N+8evtZUYLzR5AtHukvjYSpA==", "dev": true }, "@angular/platform-browser": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.0.7.tgz", - "integrity": "sha512-W8Wt8jMUjcbpqGtqrNWAj0p7CLdjOxgVlbrgBXTbaoqdchvXH85YzGr7ohA3MuE61H90OcVK9OhfYQk5o6joSg==", + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.2.3.tgz", + "integrity": "sha512-S0IP/kGinIH18+gfnX0gLFLbP0Euw1RBceDt/WipYhUeFZZryQHvot/6KFLFtO+8rVunfrg+UyBiaK65/TT9Og==", "requires": { "tslib": "^2.0.0" } }, "@angular/platform-browser-dynamic": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.0.7.tgz", - "integrity": "sha512-pUXCum1Z2DZV/34WR4Vfmkc5nWxbmVdwAA9pXbAarwAYqHIqOzX8rpRaHsuHBAR+SK+VH+xjproeLgsVfV8FSA==", + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.2.3.tgz", + "integrity": "sha512-QUPCvack7De6u5AqWcW8O6FzczwqoL858R1NlnqojnNbcnN/dCtXtKvvETEEgp/9VMwLfcuLd1BWdBJSah7f6A==", "requires": { "tslib": "^2.0.0" } }, "@angular/router": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-11.0.7.tgz", - "integrity": "sha512-oh/MOPRSOCLRPsM/3CVUNYZ3pz3g+CzLOk5Vad/zFJmnGwjA/lQGJo2pl7VXVq3RF7MieaHlDWG5TexGlXAP5w==", + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-11.2.3.tgz", + "integrity": "sha512-lRuEIlNj2BcBZ17mt5SZY7v80PsvlS4J6EbKSOFeSYhALM/AQnaaCdrrMlQ1WyEa5bBUabxGT9/zvahBosy2yA==", "requires": { "tslib": "^2.0.0" } }, "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", "dev": true, "requires": { - "@babel/highlight": "^7.10.1" + "@babel/highlight": "^7.12.13" } }, "@babel/compat-data": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", - "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.8.tgz", + "integrity": "sha512-EaI33z19T4qN3xLXsGf48M2cDqa6ei9tPZlfLdb2HC+e/cFtREiRd8hdSqDbwdLB0/+gLwqJmCYASH0z2bUdog==", "dev": true }, "@babel/core": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", - "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz", + "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.1", + "@babel/generator": "^7.12.10", "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.1", - "@babel/parser": "^7.12.3", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", "lodash": "^4.17.19", - "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -505,12 +522,12 @@ } }, "@babel/generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.1.tgz", - "integrity": "sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", + "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", "dev": true, "requires": { - "@babel/types": "^7.12.1", + "@babel/types": "^7.12.11", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -524,223 +541,212 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz", - "integrity": "sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", "dev": true, "requires": { - "@babel/types": "^7.12.10" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "@babel/types": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz", - "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.12.13" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@babel/helper-compilation-targets": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", - "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.8.tgz", + "integrity": "sha512-pBljUGC1y3xKLn1nrx2eAhurLMA8OqBtBP/JwG4U8skN7kf8/aqwwxpV1N6T0e7r6+7uNitIa/fUxPFagSXp3A==", "dev": true, "requires": { - "@babel/compat-data": "^7.12.5", - "@babel/helper-validator-option": "^7.12.1", + "@babel/compat-data": "^7.13.8", + "@babel/helper-validator-option": "^7.12.17", "browserslist": "^4.14.5", - "semver": "^5.5.0" + "semver": "^6.3.0" }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "@babel/helper-create-class-features-plugin": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", - "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.8.tgz", + "integrity": "sha512-qioaRrKHQbn4hkRKDHbnuQ6kAxmmOF+kzKGnIfxPK4j2rckSJCpKzr/SSTlohSCiE3uAQpNDJ9FIh4baeE8W+w==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", - "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-annotate-as-pure": "^7.12.13", "regexpu-core": "^4.7.1" } }, - "@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" - } - }, "@babel/helper-explode-assignable-expression": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", - "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", + "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + }, + "dependencies": { + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + } } }, "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.13" } }, "@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", + "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", - "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz", + "integrity": "sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.13.0" } }, "@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", + "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", "dev": true, "requires": { - "@babel/types": "^7.12.5" + "@babel/types": "^7.12.13" } }, "@babel/helper-module-transforms": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", - "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-simple-access": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/helper-validator-identifier": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz", + "integrity": "sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", "lodash": "^4.17.19" }, "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } } } }, "@babel/helper-optimise-call-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", - "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.13" } }, "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", - "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", + "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/types": "^7.12.1" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/helper-replace-supers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", - "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz", + "integrity": "sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/helper-simple-access": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", - "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", + "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.12.13" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -753,197 +759,225 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", "dev": true, "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.12.13" } }, "@babel/helper-validator-identifier": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", - "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz", - "integrity": "sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", - "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", + "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + }, + "dependencies": { + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + } } }, "@babel/helpers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", - "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.0.tgz", + "integrity": "sha512-aan1MeFPxFacZeSz6Ld7YZo5aPuqnKlD7+HZY75xQsueczFccP9A7V05+oe0XpLwHK3oLorPe9eaAUljL7WEaQ==", "dev": true, "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + }, + "dependencies": { + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + } } }, "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", + "integrity": "sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.1", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", - "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", + "version": "7.13.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.4.tgz", + "integrity": "sha512-uvoOulWHhI+0+1f9L4BoozY7U5cIkZ9PgJqvb041d6vypgUmtVPG4vmGm4pSggjl8BELzvHyUeJSUyEMY6b+qA==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz", - "integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", + "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", - "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", + "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", - "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", + "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", - "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", - "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", + "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", - "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", + "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", - "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", + "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", - "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", + "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.8", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.13.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", - "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", + "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz", - "integrity": "sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz", + "integrity": "sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", - "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", + "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", - "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { @@ -956,12 +990,12 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", - "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-dynamic-import": { @@ -1046,21 +1080,21 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", - "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", - "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", + "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-async-to-generator": { @@ -1075,250 +1109,240 @@ } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", - "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz", - "integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", + "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-classes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", - "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", + "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", - "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", + "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-destructuring": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", - "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", + "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", - "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", - "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", - "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-for-of": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", - "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", + "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", - "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", - "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", - "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", - "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", + "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", - "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", + "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", - "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", + "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", - "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", + "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", - "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", - "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", - "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@babel/plugin-transform-parameters": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", - "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", + "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", - "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", - "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", + "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", - "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-runtime": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz", - "integrity": "sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg==", + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz", + "integrity": "sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-module-imports": "^7.12.5", "@babel/helper-plugin-utils": "^7.10.4", - "resolve": "^1.8.1", "semver": "^5.5.1" }, "dependencies": { @@ -1331,81 +1355,81 @@ } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", - "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", - "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", + "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", - "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-template-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", - "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", + "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz", - "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", - "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", - "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/preset-env": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", - "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", + "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", "dev": true, "requires": { - "@babel/compat-data": "^7.12.1", - "@babel/helper-compilation-targets": "^7.12.1", - "@babel/helper-module-imports": "^7.12.1", + "@babel/compat-data": "^7.12.7", + "@babel/helper-compilation-targets": "^7.12.5", + "@babel/helper-module-imports": "^7.12.5", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-option": "^7.12.1", + "@babel/helper-validator-option": "^7.12.11", "@babel/plugin-proposal-async-generator-functions": "^7.12.1", "@babel/plugin-proposal-class-properties": "^7.12.1", "@babel/plugin-proposal-dynamic-import": "^7.12.1", @@ -1413,10 +1437,10 @@ "@babel/plugin-proposal-json-strings": "^7.12.1", "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", - "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.7", "@babel/plugin-proposal-object-rest-spread": "^7.12.1", "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", "@babel/plugin-proposal-private-methods": "^7.12.1", "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0", @@ -1434,7 +1458,7 @@ "@babel/plugin-transform-arrow-functions": "^7.12.1", "@babel/plugin-transform-async-to-generator": "^7.12.1", "@babel/plugin-transform-block-scoped-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.11", "@babel/plugin-transform-classes": "^7.12.1", "@babel/plugin-transform-computed-properties": "^7.12.1", "@babel/plugin-transform-destructuring": "^7.12.1", @@ -1458,14 +1482,14 @@ "@babel/plugin-transform-reserved-words": "^7.12.1", "@babel/plugin-transform-shorthand-properties": "^7.12.1", "@babel/plugin-transform-spread": "^7.12.1", - "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.7", "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.10", "@babel/plugin-transform-unicode-escapes": "^7.12.1", "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.12.1", - "core-js-compat": "^3.6.2", + "@babel/types": "^7.12.11", + "core-js-compat": "^3.8.0", "semver": "^5.5.0" }, "dependencies": { @@ -1491,107 +1515,53 @@ } }, "@babel/runtime": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz", - "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", + "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - } + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" } }, "@babel/traverse": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", - "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.12.5", - "@babel/types": "^7.12.5", + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" }, "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, "@babel/generator": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", - "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.0.tgz", + "integrity": "sha512-zBZfgvBB/ywjx0Rgc2+BwoH/3H+lDtlgD4hBOpEv5LxRnYsm/753iRuLepqnYlynpjC3AdQxtxsoeHJoEEwOAw==", "dev": true, "requires": { - "@babel/types": "^7.12.5", + "@babel/types": "^7.13.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -1601,28 +1571,20 @@ } }, "@babel/types": { - "version": "7.12.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", - "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", + "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - } } }, "@istanbuljs/schema": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", - "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, "@jsdevtools/coverage-istanbul-loader": { @@ -1639,14 +1601,14 @@ } }, "@ngtools/webpack": { - "version": "11.0.6", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.0.6.tgz", - "integrity": "sha512-vf5YNEpXWRa0fKC/BRq5sVVj2WnEqW8jn14YQRHwVt5ppUeyu8IKUF69p6W1MwZMgMqMaw/vPQ8LI5cFbyf3uw==", + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.2.2.tgz", + "integrity": "sha512-X1M/Xs0kLi9FrOIU6yJ74q3pCzhgwPQowO1XjJ68KLOoMbj/DM6Qm0Hi9N0Ay8h0s7BIdjKEu/C3pCdGu1Q54w==", "dev": true, "requires": { - "@angular-devkit/core": "11.0.6", - "enhanced-resolve": "5.3.1", - "webpack-sources": "2.0.1" + "@angular-devkit/core": "11.2.2", + "enhanced-resolve": "5.7.0", + "webpack-sources": "2.2.0" } }, "@nodelib/fs.scandir": { @@ -1675,62 +1637,160 @@ "fastq": "^1.6.0" } }, + "@npmcli/ci-detect": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz", + "integrity": "sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q==", + "dev": true + }, + "@npmcli/git": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.0.6.tgz", + "integrity": "sha512-a1MnTfeRPBaKbFY07fd+6HugY1WAkKJzdiJvlRub/9o5xz2F/JtPacZZapx5zRJUQFIzSL677vmTSxEcDMrDbg==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^1.1.0", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.3", + "npm-pick-manifest": "^6.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.2", + "unique-filename": "^1.1.1", + "which": "^2.0.2" + }, + "dependencies": { + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, "@npmcli/move-file": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz", - "integrity": "sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/node-gyp": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz", + "integrity": "sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg==", + "dev": true + }, + "@npmcli/promise-spawn": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.3.tgz", + "integrity": "sha512-ELPGWAVU/xyU+A+H3pEPj0QOvYwLTX71RArXcClFzeiyJ/b/McsZ+d0QxpznvfFtZzxGN/gz/1cvlqICR4/suQ==", "dev": true, "requires": { - "mkdirp": "^1.0.4" + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "infer-owner": "^1.0.4", + "node-gyp": "^7.1.0", + "puka": "^1.0.1", + "read-package-json-fast": "^2.0.1" }, "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true + "read-package-json-fast": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.2.tgz", + "integrity": "sha512-5fyFUyO9B799foVk4n6ylcoAktG/FbE3jwRKxvwaeSrIunaoMc0u81dzXxjeAFKOce7O5KncdfwpGvvs6r5PsQ==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } } } }, "@schematics/angular": { - "version": "11.0.6", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-11.0.6.tgz", - "integrity": "sha512-XUcpOrlcp55PBHrgpIVx69lnhDY6ro35BSRmqNmjXik56qcOkfvdki8vvyW9EsWvu9/sfBSsVDdparlbVois7w==", + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-11.2.2.tgz", + "integrity": "sha512-TcxPy58adUnkirGXyZVVSMuKkA0eIz2PWSQWEgB9l7kO+5LvDOn+RMoc6AVx0s/bU9nH+eozBUJ1XAD/E8QnYQ==", "dev": true, "requires": { - "@angular-devkit/core": "11.0.6", - "@angular-devkit/schematics": "11.0.6", - "jsonc-parser": "2.3.1" + "@angular-devkit/core": "11.2.2", + "@angular-devkit/schematics": "11.2.2", + "jsonc-parser": "3.0.0" } }, "@schematics/update": { - "version": "0.1100.6", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1100.6.tgz", - "integrity": "sha512-+B8n+k+zZ3VYOhjNBsLqzjp8O9ZdUWgdpf9L8XAA7mh/oPwufXpExyEc66uAS07imvUMmjz6i8E2eNWV/IjBJg==", + "version": "0.1102.2", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1102.2.tgz", + "integrity": "sha512-Nz8kjeixzDnOw00bnZznq3qrbIv8yWEWNb9eDkRBqgOUXQwlhKJY/sYBK58JF2D+conaRVuEqMsBlX08GlFtIA==", "dev": true, "requires": { - "@angular-devkit/core": "11.0.6", - "@angular-devkit/schematics": "11.0.6", + "@angular-devkit/core": "11.2.2", + "@angular-devkit/schematics": "11.2.2", "@yarnpkg/lockfile": "1.1.0", - "ini": "1.3.6", + "ini": "2.0.0", "npm-package-arg": "^8.0.0", - "pacote": "9.5.12", - "semver": "7.3.2", + "pacote": "11.2.4", + "semver": "7.3.4", "semver-intersect": "1.4.0" - }, - "dependencies": { - "ini": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.6.tgz", - "integrity": "sha512-IZUoxEjNjubzrmvzZU4lKP7OnYmX72XRl3sqkfJhBKweKi5rnGi5+IUdlj/H1M+Ip5JQ1WzaDMOBRY90Ajc5jg==", - "dev": true - } } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/component-emitter": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", + "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==", + "dev": true + }, + "@types/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==", + "dev": true + }, + "@types/cors": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", "dev": true }, "@types/crypto-js": { @@ -1762,9 +1822,9 @@ "dev": true }, "@types/jasmine": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.10.tgz", - "integrity": "sha512-3F8qpwBAiVc5+HPJeXJpbrl+XjawGmciN5LgiO7Gv1pl1RHtjoMNqZpqEksaPJW05ViKe8snYInRs6xB25Xdew==", + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.4.tgz", + "integrity": "sha512-CTdMERA4iGNcxeqzD7pavb4WLIFq6bGnx6nIJD+1D4Knx24GE6QBPrWVhO8UlIy7gf7rbIt3ZD7iIzryRD2TgA==", "dev": true }, "@types/jasminewd2": { @@ -1783,9 +1843,9 @@ "dev": true }, "@types/json-schema": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, "@types/jszip": { @@ -1813,9 +1873,9 @@ } }, "@types/node": { - "version": "12.12.47", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.47.tgz", - "integrity": "sha512-yzBInQFhdY8kaZmqoL2+3U5dSTMrKaYcb561VU+lDzAYvqt+2lojvBEy+hmpSNuXnPTx7m9+04CzWYOUqWME2A==", + "version": "12.20.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.4.tgz", + "integrity": "sha512-xRCgeE0Q4pT5UZ189TJ3SpYuX/QGl6QIAOAIeDSbAVAd2gX1NxSZup4jNVK7cxIeP8KDSbJgcckun495isP1jQ==", "dev": true }, "@types/pako": { @@ -2066,22 +2126,18 @@ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", "dev": true }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -2109,32 +2165,28 @@ } }, "adm-zip": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.14.tgz", - "integrity": "sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==", - "dev": true - }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", "dev": true }, "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "requires": { - "es6-promisify": "^5.0.0" + "debug": "4" } }, "agentkeepalive": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", - "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz", + "integrity": "sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==", "dev": true, "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", "humanize-ms": "^1.2.1" } }, @@ -2149,9 +2201,9 @@ } }, "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -2200,9 +2252,9 @@ "dev": true }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "ansi-styles": { @@ -2236,6 +2288,16 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -2305,12 +2367,6 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", - "dev": true - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -2339,9 +2395,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -2425,17 +2481,16 @@ "dev": true }, "autoprefixer": { - "version": "9.8.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", - "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.4.tgz", + "integrity": "sha512-DCCdUQiMD+P/as8m3XkeTUkUKuuRqLGcwD0nll7wevhqoJfMRpJlkFd1+MQh1pvupjiQuip42lc/VFvfUTMSKw==", "dev": true, "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", + "browserslist": "^4.16.1", + "caniuse-lite": "^1.0.30001181", "colorette": "^1.2.1", + "fraction.js": "^4.0.13", "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.32", "postcss-value-parser": "^4.1.0" } }, @@ -2446,9 +2501,9 @@ "dev": true }, "aws4": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", - "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, "axobject-query": { @@ -2461,29 +2516,17 @@ } }, "babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", "dev": true, "requires": { - "find-cache-dir": "^2.1.0", + "find-cache-dir": "^3.3.1", "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", + "make-dir": "^3.1.0", "schema-utils": "^2.6.5" }, "dependencies": { - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -2515,12 +2558,6 @@ "object.assign": "^4.1.0" } }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -2615,15 +2652,6 @@ "tweetnacl": "^0.14.3" } }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true, - "requires": { - "callsite": "1.0.0" - } - }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -2631,27 +2659,50 @@ "dev": true }, "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "optional": true, "requires": { - "file-uri-to-path": "1.0.0" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } } }, - "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", - "dev": true - }, "blocking-proxy": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", @@ -2668,9 +2719,9 @@ "dev": true }, "bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", "dev": true }, "body-parser": { @@ -2711,12 +2762,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true } } }, @@ -2875,36 +2920,65 @@ } }, "browserslist": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz", - "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001173", + "caniuse-lite": "^1.0.30001181", "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.634", + "electron-to-chromium": "^1.3.649", "escalade": "^3.1.1", - "node-releases": "^1.1.69" + "node-releases": "^1.1.70" } }, "browserstack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.0.tgz", - "integrity": "sha512-HJDJ0TSlmkwnt9RZ+v5gFpa1XZTBYTj0ywvLwJ3241J7vMw2jAsGNVhKHtmCOyg+VxeLZyaibO9UL71AsUeDIw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.1.tgz", + "integrity": "sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==", "dev": true, "requires": { "https-proxy-agent": "^2.2.1" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + } } }, "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, "buffer-from": { @@ -2972,14 +3046,6 @@ "ssri": "^8.0.0", "tar": "^6.0.2", "unique-filename": "^1.1.1" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } } }, "cache-base": { @@ -3000,9 +3066,9 @@ } }, "call-bind": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.1.tgz", - "integrity": "sha512-tvAvUwNcRikl3RVF20X9lsYmmepsovzTWeJiXjO0PkJp15uy/6xKFZOQtuiSULwYW+6ToZBprphCgWXC2dSgcQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -3027,12 +3093,6 @@ "caller-callsite": "^2.0.0" } }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true - }, "callsites": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", @@ -3040,9 +3100,9 @@ "dev": true }, "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "dev": true }, "caniuse-api": { @@ -3058,9 +3118,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001173", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001173.tgz", - "integrity": "sha512-R3aqmjrICdGCTAnSXtNyvWYMK3YtV5jwudbq0T7nN9k4kmE4CBuwPqyJ+KBzepSTh0huivV2gLbSMEzTTmfeYw==", + "version": "1.0.30001192", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001192.tgz", + "integrity": "sha512-63OrUnwJj5T1rUmoyqYTdRWBqFFxZFlyZnRRjDR8NSUQFB6A+j/uBORU/SyJ5WzDLg4SPiZH40hQCBNdZ/jmAw==", "dev": true }, "canonical-path": { @@ -3093,14 +3153,14 @@ "dev": true }, "chokidar": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", + "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", @@ -3142,9 +3202,9 @@ } }, "circular-dependency-plugin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz", - "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", + "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", "dev": true }, "class-utils": { @@ -3276,10 +3336,16 @@ "q": "^1.1.2" } }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, "codelyzer": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.0.tgz", - "integrity": "sha512-edJIQCIcxD9DhVSyBEdJ38AbLikm515Wl91t5RDGNT88uA6uQdTm4phTWfn9JhzAI8kXNUcfYyAE90lJElpGtA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.1.tgz", + "integrity": "sha512-cOyGQgMdhnRYtW2xrJUNrNYDjEgwQ+BrE2y93Bwz3h4DJ6vJRLfupemU5N3pbYsUlBHJf0u1j1UGk+NLW4d97g==", "dev": true, "requires": { "@angular/compiler": "9.0.0", @@ -3323,9 +3389,9 @@ "dev": true }, "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } @@ -3376,9 +3442,9 @@ } }, "colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, "colors": { @@ -3408,24 +3474,12 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true - }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", - "dev": true - }, "compose-function": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", @@ -3567,6 +3621,12 @@ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", "dev": true }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -3609,6 +3669,15 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, + "copy-anything": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz", + "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==", + "dev": true, + "requires": { + "is-what": "^3.12.0" + } + }, "copy-concurrently": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", @@ -3623,6 +3692,15 @@ "run-queue": "^1.0.0" }, "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -3641,9 +3719,9 @@ "dev": true }, "copy-webpack-plugin": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.2.1.tgz", - "integrity": "sha512-VH2ZTMIBsx4p++Lmpg77adZ0KUyM5gFR/9cuTrbneNnJlcQXUFvsNariPqq2dq2kV3F2skHiDGPQCyKWy1+U0Q==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.3.2.tgz", + "integrity": "sha512-MgJ1uouLIbDg4ST1GzqrGQyKoXY5iPqi6fghFqarijam7FQcBa/r6Rg0VkoIuzx75Xq8iAMghyOueMkWUQ5OaA==", "dev": true, "requires": { "cacache": "^15.0.5", @@ -3659,18 +3737,6 @@ "webpack-sources": "^1.4.3" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -3715,12 +3781,12 @@ "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=" }, "core-js-compat": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.2.tgz", - "integrity": "sha512-LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.0.tgz", + "integrity": "sha512-YK6fwFjCOKWwGnjFUR3c544YsnA/7DoLL0ysncuOJ4pwbriAtOpvM2bygdlcXbvQCQZ7bBU9CL4t7tGl7ETRpQ==", "dev": true, "requires": { - "browserslist": "^4.16.0", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { @@ -3737,6 +3803,16 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -3781,9 +3857,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -3815,6 +3891,70 @@ "sha.js": "^2.4.8" } }, + "critters": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.7.tgz", + "integrity": "sha512-qUF2SaAWFYjNPdCcPpu68p2DnHiosia84yx5mPTlUMQjkjChR+n6sO1/I7yn2U2qNDgSPTd2SoaTIDQcUL+EwQ==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "css": "^3.0.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "pretty-bytes": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -3861,15 +4001,14 @@ "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==" }, "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", "dev": true, "requires": { - "inherits": "^2.0.3", + "inherits": "^2.0.4", "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" + "source-map-resolve": "^0.6.0" }, "dependencies": { "source-map": { @@ -3894,33 +4033,66 @@ "requires": { "postcss": "^7.0.1", "timsort": "^0.3.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "css-loader": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-4.3.0.tgz", - "integrity": "sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.0.1.tgz", + "integrity": "sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw==", "dev": true, "requires": { - "camelcase": "^6.0.0", + "camelcase": "^6.2.0", "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", + "icss-utils": "^5.0.0", "loader-utils": "^2.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.3", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", + "postcss": "^8.1.4", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.1", + "schema-utils": "^3.0.0", "semver": "^7.3.2" }, "dependencies": { - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } } } }, @@ -3931,6 +4103,39 @@ "dev": true, "requires": { "css": "^2.0.0" + }, + "dependencies": { + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + } } }, "css-select": { @@ -4010,6 +4215,34 @@ "cssnano-preset-default": "^4.0.7", "is-resolvable": "^1.0.0", "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "cssnano-preset-default": { @@ -4048,6 +4281,34 @@ "postcss-reduce-transforms": "^4.0.2", "postcss-svgo": "^4.0.2", "postcss-unique-selectors": "^4.0.1" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "cssnano-util-get-arguments": { @@ -4069,6 +4330,34 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "cssnano-util-same-parent": { @@ -4154,12 +4443,12 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "decamelize": { @@ -4325,6 +4614,12 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -4383,9 +4678,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -4514,30 +4809,30 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.635", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.635.tgz", - "integrity": "sha512-RRriZOLs9CpW6KTLmgBqyUdnY0QNqqWs0HOtuQGGEMizOTNNn1P7sGRBxARnUeLejOsgwjDyRqT3E/CSst02ZQ==", + "version": "1.3.675", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.675.tgz", + "integrity": "sha512-GEQw+6dNWjueXGkGfjgm7dAMtXfEqrfDG3uWcZdeaD4cZ3dKYdPRQVruVXQRXtPLtOr5GNVVlNLRMChOZ611pQ==", "dev": true }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -4565,6 +4860,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, + "optional": true, "requires": { "iconv-lite": "^0.6.2" }, @@ -4574,6 +4870,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", "dev": true, + "optional": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } @@ -4590,111 +4887,51 @@ } }, "engine.io": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.2.tgz", - "integrity": "sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", + "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "0.3.1", - "debug": "~4.1.0", - "engine.io-parser": "~2.2.0", - "ws": "^7.1.2" + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.0", + "ws": "~7.4.2" }, "dependencies": { "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", "dev": true }, "ws": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz", - "integrity": "sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==", - "dev": true - } - } - }, - "engine.io-client": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.4.tgz", - "integrity": "sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ==", - "dev": true, - "requires": { - "component-emitter": "~1.3.0", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.2.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~6.1.0", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==", - "dev": true - }, - "parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz", + "integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==", "dev": true - }, - "ws": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", - "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } } } }, "engine.io-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", - "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", "dev": true, "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.4", - "blob": "0.0.5", - "has-binary2": "~1.0.2" + "base64-arraybuffer": "0.1.4" } }, "enhanced-resolve": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.3.1.tgz", - "integrity": "sha512-G1XD3MRGrGfNcf6Hg0LVZG7GIKcYkbfHa5QMxt1HDUTdYoXH0JR1xXyg+MaKLF73E9A27uWNVxvFivNRYeUB6w==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", "dev": true, "requires": { "graceful-fs": "^4.2.4", - "tapable": "^2.0.0" + "tapable": "^2.2.0" } }, "ent": { @@ -4704,15 +4941,21 @@ "dev": true }, "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, - "err-code": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", - "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true }, "errno": { @@ -4734,23 +4977,25 @@ } }, "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "version": "1.18.0-next.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", + "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", "dev": true, "requires": { + "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2", "has": "^1.0.3", "has-symbols": "^1.0.1", "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", + "is-negative-zero": "^2.0.1", "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", + "object-inspect": "^1.9.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.3", + "string.prototype.trimstart": "^1.0.3" } }, "es-to-primitive": { @@ -5052,12 +5297,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true } } }, @@ -5071,9 +5310,9 @@ }, "dependencies": { "type": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", - "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.3.0.tgz", + "integrity": "sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg==", "dev": true } } @@ -5194,9 +5433,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -5220,18 +5459,18 @@ "dev": true }, "fastq": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", - "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", "dev": true, "requires": { "reusify": "^1.0.4" } }, "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" @@ -5253,27 +5492,15 @@ } }, "file-loader": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.1.1.tgz", - "integrity": "sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "dev": true, "requires": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "schema-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", @@ -5292,13 +5519,6 @@ "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -5349,75 +5569,16 @@ "commondir": "^1.0.1", "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "flatted": { @@ -5469,9 +5630,9 @@ } }, "follow-redirects": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", - "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", + "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", "dev": true }, "for-in": { @@ -5503,6 +5664,12 @@ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", "dev": true }, + "fraction.js": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.0.13.tgz", + "integrity": "sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA==", + "dev": true + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -5567,9 +5734,9 @@ "dev": true }, "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, @@ -5579,11 +5746,58 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "genfun": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", - "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", - "dev": true + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } }, "gensync": { "version": "1.0.0-beta.2", @@ -5598,9 +5812,9 @@ "dev": true }, "get-intrinsic": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", - "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -5662,9 +5876,9 @@ "dev": true }, "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -5676,9 +5890,9 @@ } }, "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, "hammerjs": { @@ -5699,12 +5913,12 @@ "dev": true }, "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "dev": true, "requires": { - "ajv": "^6.5.5", + "ajv": "^6.12.3", "har-schema": "^2.0.0" } }, @@ -5724,31 +5938,16 @@ "dev": true, "requires": { "ansi-regex": "^2.0.0" - } - }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "dev": true, - "requires": { - "isarray": "2.0.1" }, "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true } } }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -5756,9 +5955,15 @@ "dev": true }, "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true }, "has-value": { @@ -5880,9 +6085,9 @@ } }, "hosted-git-info": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz", - "integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -5931,9 +6136,9 @@ "dev": true }, "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", "dev": true }, "http-deceiver": { @@ -5963,6 +6168,12 @@ } } }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, "http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", @@ -5975,30 +6186,14 @@ } }, "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "requires": { - "agent-base": "4", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" } }, "http-proxy-middleware": { @@ -6136,24 +6331,13 @@ "dev": true }, "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dev": true, "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } + "agent-base": "6", + "debug": "4" } }, "humanize-ms": { @@ -6175,18 +6359,15 @@ } }, "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "dev": true, - "requires": { - "postcss": "^7.0.14" - } + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true }, "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "iferr": { "version": "0.1.5", @@ -6239,6 +6420,51 @@ "requires": { "pkg-dir": "^3.0.0", "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } } }, "imurmurhash": { @@ -6259,12 +6485,6 @@ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, "infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", @@ -6287,9 +6507,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true }, "inquirer": { @@ -6313,12 +6533,6 @@ "through": "^2.3.6" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -6359,15 +6573,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6469,9 +6674,9 @@ "dev": true }, "is-callable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", "dev": true }, "is-color-stop": { @@ -6587,6 +6792,12 @@ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -6639,11 +6850,12 @@ } }, "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { + "call-bind": "^1.0.2", "has-symbols": "^1.0.1" } }, @@ -6683,6 +6895,12 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -6770,25 +6988,10 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -6796,6 +6999,25 @@ } } }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "istanbul-reports": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", @@ -6847,9 +7069,9 @@ "dev": true }, "jest-worker": { - "version": "26.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.5.0.tgz", - "integrity": "sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { "@types/node": "*", @@ -6937,18 +7159,18 @@ "dev": true }, "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, "requires": { "minimist": "^1.2.5" } }, "jsonc-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", - "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", "dev": true }, "jsonfile": { @@ -6998,43 +7220,36 @@ } }, "karma": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-5.1.1.tgz", - "integrity": "sha512-xAlOr5PMqUbiKXSv5PCniHWV3aiwj6wIZ0gUVcwpTCPVQm/qH2WAMFWxtnpM6KJqhkRWrIpovR4Rb0rn8GtJzQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.1.1.tgz", + "integrity": "sha512-vVDFxFGAsclgmFjZA/qGw5xqWdZIWxVD7xLyCukYUYd5xs/uGzYbXGOT5zOruVBQleKEmXIr4H2hzGCTn+M9Cg==", "dev": true, "requires": { "body-parser": "^1.19.0", "braces": "^3.0.2", - "chokidar": "^3.0.0", + "chokidar": "^3.4.2", "colors": "^1.4.0", "connect": "^3.7.0", "di": "^0.0.1", "dom-serialize": "^2.2.1", - "flatted": "^2.0.2", "glob": "^7.1.6", "graceful-fs": "^4.2.4", "http-proxy": "^1.18.1", "isbinaryfile": "^4.0.6", - "lodash": "^4.17.15", + "lodash": "^4.17.19", "log4js": "^6.2.1", "mime": "^2.4.5", "minimatch": "^3.0.4", "qjobs": "^1.2.0", "range-parser": "^1.2.1", "rimraf": "^3.0.2", - "socket.io": "^2.3.0", + "socket.io": "^3.1.0", "source-map": "^0.6.1", "tmp": "0.2.1", - "ua-parser-js": "0.7.21", - "yargs": "^15.3.1" + "ua-parser-js": "^0.7.23", + "yargs": "^16.1.1" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -7045,14 +7260,14 @@ } }, "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "wrap-ansi": "^7.0.0" } }, "color-convert": { @@ -7070,44 +7285,10 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", - "dev": true - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true }, "source-map": { @@ -7116,15 +7297,6 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, "tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -7135,9 +7307,9 @@ } }, "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -7145,34 +7317,32 @@ "strip-ansi": "^6.0.0" } }, + "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true + }, "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } }, "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "20.2.6", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz", + "integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==", + "dev": true } } }, @@ -7197,25 +7367,6 @@ "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.0", "minimatch": "^3.0.4" - }, - "dependencies": { - "istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "karma-jasmine": { @@ -7261,21 +7412,41 @@ "dev": true }, "less": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/less/-/less-3.12.2.tgz", - "integrity": "sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz", + "integrity": "sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw==", "dev": true, "requires": { + "copy-anything": "^2.0.1", "errno": "^0.1.1", "graceful-fs": "^4.1.2", "image-size": "~0.5.0", "make-dir": "^2.1.0", "mime": "^1.4.1", - "native-request": "^1.0.5", + "needle": "^2.5.2", + "parse-node-version": "^1.0.1", "source-map": "~0.6.0", "tslib": "^1.10.0" }, "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -7292,9 +7463,9 @@ } }, "less-loader": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.0.2.tgz", - "integrity": "sha512-7MKlgjnkCf63E3Lv6w2FvAEgLMx3d/tNBExITcanAq7ys5U8VPWT3F6xcRjYmdNfkoQ9udoVFb1r2azSiTnD6w==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", + "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", "dev": true, "requires": { "klona": "^2.0.4", @@ -7302,18 +7473,6 @@ "schema-utils": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "schema-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", @@ -7328,9 +7487,9 @@ } }, "license-webpack-plugin": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.1.tgz", - "integrity": "sha512-yhqTmlYIEpZWA122lf6E0G8+rkn0AzoQ1OpzUKKs/lXUqG1plmGnwmkuuPlfggzJR5y6DLOdot/Tv00CC51CeQ==", + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.11.tgz", + "integrity": "sha512-0iVGoX5vx0WDy8dmwTTpOOMYiGqILyUbDeVMFH52AjgBlS58lHwOlFMSoqg5nY8Kxl6+FRKyUZY/UdlQaOyqDw==", "dev": true, "requires": { "@types/webpack-sources": "^0.1.5", @@ -7387,19 +7546,18 @@ } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.memoize": { @@ -7517,19 +7675,18 @@ } }, "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "semver": "^6.0.0" }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } @@ -7541,85 +7698,37 @@ "dev": true }, "make-fetch-happen": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz", - "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==", - "dev": true, - "requires": { - "agentkeepalive": "^3.4.1", - "cacache": "^12.0.0", - "http-cache-semantics": "^3.8.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "node-fetch-npm": "^2.0.2", - "promise-retry": "^1.1.1", - "socks-proxy-agent": "^4.0.0", - "ssri": "^6.0.0" + "version": "8.0.14", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", + "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.0.5", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^5.0.0", + "ssri": "^8.0.0" }, "dependencies": { - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1" + "err-code": "^2.0.2", + "retry": "^0.12.0" } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true } } }, @@ -7733,9 +7842,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -7747,18 +7856,18 @@ "dev": true }, "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", "dev": true }, "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", "dev": true, "requires": { - "mime-db": "1.44.0" + "mime-db": "1.46.0" } }, "mimic-fn": { @@ -7768,9 +7877,9 @@ "dev": true }, "mini-css-extract-plugin": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.2.1.tgz", - "integrity": "sha512-G3yw7/TQaPfkuiR73MDcyiqhyP8SnbmLhUbpC76H+wtQxA6wfKhMCQOCb6wnPK0dQbjORAeOILQqEesg4/wF7A==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.5.tgz", + "integrity": "sha512-tvmzcwqJJXau4OQE5vT72pRT18o2zF+tQJp8CWchqvfQnTlflkzS+dANYcRdyPRWUWRkfmeNTKltx0NZI/b5dQ==", "dev": true, "requires": { "loader-utils": "^2.0.0", @@ -7778,18 +7887,6 @@ "webpack-sources": "^1.1.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "schema-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", @@ -7864,6 +7961,18 @@ "minipass": "^3.0.0" } }, + "minipass-fetch": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.3.3.tgz", + "integrity": "sha512-akCrLDWfbdAWkMLBxJEeWTdNsjML+dt5YgOI4gJ53vuO0vrmYQkUPxa6j6V65s9CcePIr2SSWqjT2EcrNseryQ==", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, "minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", @@ -7873,6 +7982,16 @@ "minipass": "^3.0.0" } }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, "minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", @@ -7882,6 +8001,15 @@ "minipass": "^3.0.0" } }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, "minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -7932,13 +8060,10 @@ } }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true }, "move-concurrently": { "version": "1.0.1", @@ -7954,6 +8079,15 @@ "run-queue": "^1.0.3" }, "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -8004,12 +8138,11 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", - "dev": true, - "optional": true + "nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "dev": true }, "nanomatch": { "version": "1.2.13", @@ -8030,12 +8163,29 @@ "to-regex": "^3.0.1" } }, - "native-request": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.8.tgz", - "integrity": "sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag==", + "needle": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", + "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", "dev": true, - "optional": true + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + } + } }, "negotiator": { "version": "0.6.2", @@ -8061,33 +8211,51 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node-fetch-npm": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", - "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==", - "dev": true, - "requires": { - "encoding": "^0.1.11", - "json-parse-better-errors": "^1.0.0", - "safe-buffer": "^5.1.1" - } - }, "node-forge": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", "dev": true }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "node-gyp": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", "dev": true, "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", "constants-browserify": "^1.0.0", "crypto-browserify": "^3.11.0", "domain-browser": "^1.1.1", @@ -8109,6 +8277,17 @@ "vm-browserify": "^1.0.1" }, "dependencies": { + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -8167,35 +8346,18 @@ } }, "node-releases": { - "version": "1.1.69", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.69.tgz", - "integrity": "sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA==", + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", "dev": true }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "abbrev": "1" } }, "normalize-path": { @@ -8252,13 +8414,14 @@ } }, "npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.1.4.tgz", + "integrity": "sha512-Qzg2pvXC9U4I4fLnUrBmcIT4x0woLtUgxUi9eC+Zrcv1Xx5eamytGAfbDWQ67j7xOcQ2VW1I3su9smVTIdu7Hw==", "dev": true, "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", "npm-normalize-package-bin": "^1.0.1" } }, @@ -8274,65 +8437,19 @@ } }, "npm-registry-fetch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz", - "integrity": "sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", + "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", "dev": true, "requires": { - "JSONStream": "^1.3.4", - "bluebird": "^3.5.1", - "figgy-pudding": "^3.4.1", - "lru-cache": "^5.1.1", - "make-fetch-happen": "^5.0.0", - "npm-package-arg": "^6.1.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "npm-package-arg": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", - "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", - "dev": true, - "requires": { - "hosted-git-info": "^2.7.1", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } + "@npmcli/ci-detect": "^1.0.0", + "lru-cache": "^6.0.0", + "make-fetch-happen": "^8.0.9", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" } }, "npm-run-path": { @@ -8344,6 +8461,18 @@ "path-key": "^2.0.0" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "nth-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", @@ -8353,10 +8482,10 @@ "boolbase": "~1.0.0" } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "oauth-sign": { @@ -8371,12 +8500,6 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true - }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -8415,12 +8538,12 @@ "dev": true }, "object-is": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", - "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3" } }, @@ -8452,14 +8575,14 @@ } }, "object.getownpropertydescriptors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", - "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "es-abstract": "^1.18.0-next.2" } }, "object.pick": { @@ -8472,14 +8595,14 @@ } }, "object.values": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", - "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", + "es-abstract": "^1.18.0-next.2", "has": "^1.0.3" } }, @@ -8523,9 +8646,9 @@ } }, "open": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.3.0.tgz", - "integrity": "sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.0.tgz", + "integrity": "sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA==", "dev": true, "requires": { "is-docker": "^2.0.0", @@ -8550,27 +8673,21 @@ } }, "ora": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.1.0.tgz", - "integrity": "sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", "dev": true, "requires": { + "bl": "^4.0.3", "chalk": "^4.1.0", "cli-cursor": "^3.1.0", - "cli-spinners": "^2.4.0", + "cli-spinners": "^2.5.0", "is-interactive": "^1.0.0", "log-symbols": "^4.0.0", - "mute-stream": "0.0.8", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -8611,15 +8728,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8646,28 +8754,12 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -8684,12 +8776,12 @@ } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-map": { @@ -8717,183 +8809,30 @@ "dev": true }, "pacote": { - "version": "9.5.12", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz", - "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==", + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.2.4.tgz", + "integrity": "sha512-GfTeVQGJ6WyBQbQD4t3ocHbyOmTQLmWjkCKSZPmKiGFKYKNUaM5U2gbLzUW8WG1XmS9yQFnsTFA0k3o1+q4klQ==", "dev": true, "requires": { - "bluebird": "^3.5.3", - "cacache": "^12.0.2", - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "get-stream": "^4.1.0", - "glob": "^7.1.3", + "@npmcli/git": "^2.0.1", + "@npmcli/installed-package-contents": "^1.0.5", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.3.0", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "make-fetch-happen": "^5.0.0", - "minimatch": "^3.0.4", - "minipass": "^2.3.5", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "normalize-package-data": "^2.4.0", - "npm-normalize-package-bin": "^1.0.0", - "npm-package-arg": "^6.1.0", - "npm-packlist": "^1.1.12", - "npm-pick-manifest": "^3.0.0", - "npm-registry-fetch": "^4.0.0", - "osenv": "^0.1.5", - "promise-inflight": "^1.0.1", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^9.0.0", "promise-retry": "^1.1.1", - "protoduck": "^5.0.1", - "rimraf": "^2.6.2", - "safe-buffer": "^5.1.2", - "semver": "^5.6.0", - "ssri": "^6.0.1", - "tar": "^4.4.10", - "unique-filename": "^1.1.1", - "which": "^1.3.1" - }, - "dependencies": { - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dev": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "npm-package-arg": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", - "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", - "dev": true, - "requires": { - "hosted-git-info": "^2.7.1", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" - } - }, - "npm-pick-manifest": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", - "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "npm-package-arg": "^6.0.0", - "semver": "^5.4.1" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "dev": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } + "read-package-json-fast": "^1.1.3", + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.1.0" } }, "pako": { @@ -8984,6 +8923,12 @@ "json-parse-better-errors": "^1.0.1" } }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, "parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", @@ -9000,31 +8945,22 @@ "parse5-sax-parser": "^6.0.1" } }, - "parse5-sax-parser": { + "parse5-htmlparser2-tree-adapter": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, "requires": { "parse5": "^6.0.1" } }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true, - "requires": { - "better-assert": "~1.0.0" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "parse5-sax-parser": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", + "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", "dev": true, "requires": { - "better-assert": "~1.0.0" + "parse5": "^6.0.1" } }, "parseurl": { @@ -9052,9 +8988,9 @@ "dev": true }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { @@ -9140,12 +9076,12 @@ } }, "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "find-up": "^3.0.0" + "find-up": "^4.0.0" } }, "pnp-webpack-plugin": { @@ -9176,6 +9112,15 @@ "requires": { "ms": "^2.1.1" } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } } } }, @@ -9186,14 +9131,14 @@ "dev": true }, "postcss": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", - "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.4.tgz", + "integrity": "sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "colorette": "^1.2.1", + "nanoid": "^3.1.20", + "source-map": "^0.6.1" }, "dependencies": { "source-map": { @@ -9201,15 +9146,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -9222,6 +9158,34 @@ "postcss": "^7.0.27", "postcss-selector-parser": "^6.0.2", "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-colormin": { @@ -9237,11 +9201,37 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9255,11 +9245,37 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9270,6 +9286,34 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-discard-duplicates": { @@ -9279,6 +9323,34 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-discard-empty": { @@ -9288,6 +9360,34 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-discard-overridden": { @@ -9297,53 +9397,60 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-import": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", - "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.0.tgz", + "integrity": "sha512-gFDDzXhqr9ELmnLHgCC3TbGfA6Dm/YMb/UN8/f7Uuq4fL7VTk2vOIj6hwINEwbokEmp123bLD7a5m+E+KIetRg==", "dev": true, "requires": { - "postcss": "^7.0.1", - "postcss-value-parser": "^3.2.3", + "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } } }, "postcss-loader": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.0.4.tgz", - "integrity": "sha512-pntA9zIR14drQo84yGTjQJg1m7T0DkXR4vXYHBngiRZdJtEeCrojL6lOpqUanMzG375lIJbT4Yug85zC/AJWGw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.2.0.tgz", + "integrity": "sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==", "dev": true, "requires": { "cosmiconfig": "^7.0.0", "klona": "^2.0.4", "loader-utils": "^2.0.0", "schema-utils": "^3.0.0", - "semver": "^7.3.2" + "semver": "^7.3.4" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "cosmiconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", @@ -9368,9 +9475,9 @@ } }, "parse-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", - "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -9410,11 +9517,37 @@ "stylehacks": "^4.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9432,6 +9565,17 @@ "vendors": "^1.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -9442,6 +9586,21 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9455,11 +9614,37 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9475,11 +9660,37 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9497,11 +9708,37 @@ "uniqs": "^2.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9517,6 +9754,17 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -9527,48 +9775,57 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "dev": true, - "requires": { - "postcss": "^7.0.5" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true }, "postcss-modules-local-by-default": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", - "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", "dev": true, "requires": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.32", + "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", "postcss-value-parser": "^4.1.0" } }, "postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "dev": true, "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" + "postcss-selector-parser": "^6.0.4" } }, "postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" + "icss-utils": "^5.0.0" } }, "postcss-normalize-charset": { @@ -9578,6 +9835,34 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-normalize-display-values": { @@ -9591,11 +9876,37 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9611,11 +9922,37 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9631,11 +9968,37 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9650,11 +10013,37 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9669,11 +10058,37 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9688,11 +10103,37 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9708,11 +10149,37 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9726,11 +10193,37 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9745,11 +10238,37 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9763,6 +10282,34 @@ "caniuse-api": "^3.0.0", "has": "^1.0.0", "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-reduce-transforms": { @@ -9777,11 +10324,37 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9809,11 +10382,37 @@ "svgo": "^1.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -9826,6 +10425,34 @@ "alphanum-sort": "^1.0.0", "postcss": "^7.0.0", "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-value-parser": { @@ -9834,6 +10461,12 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -9861,6 +10494,12 @@ "retry": "^0.10.0" }, "dependencies": { + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "retry": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", @@ -9869,15 +10508,6 @@ } } }, - "protoduck": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", - "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", - "dev": true, - "requires": { - "genfun": "^5.0.0" - } - }, "protractor": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", @@ -9908,9 +10538,9 @@ "dev": true }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { @@ -9928,6 +10558,12 @@ "array-uniq": "^1.0.1" } }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -9952,6 +10588,12 @@ "wrap-ansi": "^6.2.0" }, "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -9993,22 +10635,6 @@ "rimraf": "^2.2.8" } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, "globby": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", @@ -10023,10 +10649,10 @@ "pinkie-promise": "^2.0.0" } }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "is-path-cwd": { @@ -10053,45 +10679,6 @@ "path-is-inside": "^1.0.1" } }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -10134,26 +10721,13 @@ "source-map": "^0.5.6" } }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -10163,9 +10737,9 @@ "dev": true }, "webdriver-manager": { - "version": "12.1.7", - "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.7.tgz", - "integrity": "sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA==", + "version": "12.1.8", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz", + "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==", "dev": true, "requires": { "adm-zip": "^0.4.9", @@ -10192,13 +10766,18 @@ "strip-ansi": "^6.0.0" }, "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, @@ -10214,9 +10793,9 @@ } }, "yargs": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", - "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "requires": { "cliui": "^6.0.0", @@ -10229,7 +10808,7 @@ "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^18.1.1" + "yargs-parser": "^18.1.2" } }, "yargs-parser": { @@ -10281,13 +10860,19 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } }, + "puka": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/puka/-/puka-1.0.1.tgz", + "integrity": "sha512-ssjRZxBd7BT3dte1RR3VoeT2cT/ODH8x+h0rUF1rMqB0srHYf48stSDWfiYakTp5UBZMxroZhB2+ExLDHm7W3g==", + "dev": true + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -10340,9 +10925,9 @@ "dev": true }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", "dev": true }, "querystring": { @@ -10363,6 +10948,12 @@ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true }, + "queue-microtask": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", + "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -10418,18 +11009,6 @@ "schema-utils": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "schema-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", @@ -10460,6 +11039,16 @@ } } }, + "read-package-json-fast": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-1.2.2.tgz", + "integrity": "sha512-39DbPJjkltEzfXJXB6D8/Ir3GFOU2YbSKa2HaB/Y3nKrc/zY+0XrALpID6/13ezWyzqvOHrBbR4t4cjQuTdBVQ==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, "readable-stream": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", @@ -10535,34 +11124,13 @@ "dev": true }, "regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "regexpu-core": { @@ -10586,9 +11154,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", + "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -10646,6 +11214,14 @@ "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + } } }, "require-directory": { @@ -10667,11 +11243,12 @@ "dev": true }, "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -10714,6 +11291,12 @@ "source-map": "0.6.1" }, "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", @@ -10811,6 +11394,37 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", "dev": true + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } } } }, @@ -10821,9 +11435,9 @@ "dev": true }, "rfdc": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", - "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.2.0.tgz", + "integrity": "sha512-ijLyszTMmUrXvjSooucVQwimGUk84eRcmCuLV8Xghe3UO85mjUtRAHRyoMM6XtyqbECaXuBWx18La3523sXINA==", "dev": true }, "rgb-regex": { @@ -10858,12 +11472,12 @@ } }, "rollup": { - "version": "2.32.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.32.1.tgz", - "integrity": "sha512-Op2vWTpvK7t6/Qnm1TTh7VjEZZkN8RWgf0DHbkKzQBwNf748YhXbozHVefqpPp/Fuyk/PQPAnYsBxAEtlMvpUw==", + "version": "2.38.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.38.4.tgz", + "integrity": "sha512-B0LcJhjiwKkTl79aGVF/u5KdzsH8IylVfV56Ut6c9ouWLJcUK17T83aZBetNYSnZtXf2OHD4+2PbmRW+Fp5ulg==", "dev": true, "requires": { - "fsevents": "~2.1.2" + "fsevents": "~2.3.1" } }, "run-async": { @@ -10873,10 +11487,13 @@ "dev": true }, "run-parallel": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } }, "run-queue": { "version": "1.0.3", @@ -10888,9 +11505,9 @@ } }, "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "version": "6.6.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", + "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", "requires": { "tslib": "^1.9.0" }, @@ -10924,18 +11541,18 @@ "dev": true }, "sass": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.27.0.tgz", - "integrity": "sha512-0gcrER56OkzotK/GGwgg4fPrKuiFlPNitO7eUJ18Bs+/NBlofJfMxmxqpqJxjae9vu0Wq8TZzrSyxZal00WDig==", + "version": "1.32.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.6.tgz", + "integrity": "sha512-1bcDHDcSqeFtMr0JXI3xc/CXX6c4p0wHHivJdru8W7waM7a1WjKMm4m/Z5sY7CbVw4Whi2Chpcw6DFfSWwGLzQ==", "dev": true, "requires": { "chokidar": ">=2.0.0 <4.0.0" } }, "sass-loader": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.0.5.tgz", - "integrity": "sha512-2LqoNPtKkZq/XbXNQ4C64GFEleSEHKv6NPSI+bMC/l+jpEXGJhiRYkAQToO24MR7NU4JRY2RpLpJ/gjo2Uf13w==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz", + "integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==", "dev": true, "requires": { "klona": "^2.0.4", @@ -10945,18 +11562,6 @@ "semver": "^7.3.2" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "schema-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", @@ -10977,6 +11582,36 @@ "dev": true, "requires": { "https-proxy-agent": "^2.2.1" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + } } }, "sax": { @@ -10994,20 +11629,6 @@ "@types/json-schema": "^7.0.5", "ajv": "^6.12.4", "ajv-keywords": "^3.5.2" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - } } }, "select-hose": { @@ -11058,10 +11679,13 @@ } }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "semver-dsl": { "version": "1.0.1", @@ -11384,6 +12008,19 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } } } }, @@ -11459,149 +12096,62 @@ } }, "socket.io": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz", - "integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", + "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", "dev": true, "requires": { - "debug": "~4.1.0", - "engine.io": "~3.4.0", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.3.0", - "socket.io-parser": "~3.4.0" + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.8", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.1", + "engine.io": "~4.1.0", + "socket.io-adapter": "~2.1.0", + "socket.io-parser": "~4.0.3" } }, "socket.io-adapter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", - "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", + "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", "dev": true }, - "socket.io-client": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", - "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", - "dev": true, - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~4.1.0", - "engine.io-client": "~3.4.0", - "has-binary2": "~1.0.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - }, - "dependencies": { - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "socket.io-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.1.tgz", - "integrity": "sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ==", - "dev": true, - "requires": { - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "isarray": "2.0.1" - }, - "dependencies": { - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - } - } - }, "socket.io-parser": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", - "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", "dev": true, "requires": { - "component-emitter": "1.2.1", - "debug": "~4.1.0", - "isarray": "2.0.1" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true - } + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" } }, "sockjs": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", - "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", "dev": true, "requires": { - "faye-websocket": "^0.10.0", + "faye-websocket": "^0.11.3", "uuid": "^3.4.0", - "websocket-driver": "0.6.5" + "websocket-driver": "^0.7.4" } }, "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", + "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", "dev": true, "requires": { - "debug": "^3.2.5", + "debug": "^3.2.6", "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.4.7" }, "dependencies": { "debug": { @@ -11612,47 +12162,28 @@ "requires": { "ms": "^2.1.1" } - }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } } } }, "socks": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", - "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.5.1.tgz", + "integrity": "sha512-oZCsJJxapULAYJaEYBSzMcz8m3jqgGrHaGhkmU/o/PQfFWYWxkAaA0UMGImb6s6tEXfKi959X6VJjMMQ3P6TTQ==", "dev": true, "requires": { - "ip": "1.1.5", + "ip": "^1.1.5", "smart-buffer": "^4.1.0" } }, "socks-proxy-agent": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", - "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz", + "integrity": "sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==", "dev": true, "requires": { - "agent-base": "~4.2.1", - "socks": "~2.3.2" - }, - "dependencies": { - "agent-base": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", - "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } - } + "agent-base": "6", + "debug": "4", + "socks": "^2.3.3" } }, "source-list-map": { @@ -11668,9 +12199,9 @@ "dev": true }, "source-map-loader": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.2.tgz", - "integrity": "sha512-bjf6eSENOYBX4JZDfl9vVLNsGAQ6Uz90fLmOazcmMcyDYOBFsGxPNn83jXezWLY9bJsVAo1ObztxPcV8HAbjVA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.3.tgz", + "integrity": "sha512-6YHeF+XzDOrT/ycFJNI53cgEsp/tHTMl37hi7uVyqFAlTXW109JazaQCkbc+jjoL2637qkH1amLi+JzrIpt5lA==", "dev": true, "requires": { "abab": "^2.0.5", @@ -11681,18 +12212,6 @@ "whatwg-mimetype": "^2.3.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "iconv-lite": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", @@ -11722,16 +12241,13 @@ } }, "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", "dev": true, "requires": { "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "decode-uri-component": "^0.2.0" } }, "source-map-support": { @@ -11753,9 +12269,9 @@ } }, "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", "dev": true }, "sourcemap-codec": { @@ -11764,38 +12280,6 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", - "dev": true - }, "spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", @@ -11840,26 +12324,77 @@ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "speed-measure-webpack-plugin": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.4.2.tgz", + "integrity": "sha512-AtVzD0bnIy2/B0fWqJpJgmhcrfWFhBlduzSo0uwplr/QvB33ZNZj2NEth3NONgdnZJqicK0W0mSxnLSbsVCDbw==", + "dev": true, + "requires": { + "chalk": "^4.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "safe-buffer": "~5.2.0" + "has-flag": "^4.0.0" } } } }, - "speed-measure-webpack-plugin": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.3.tgz", - "integrity": "sha512-2ljD4Ch/rz2zG3HsLsnPfp23osuPBS0qPuz9sGpkNXTN1Ic4M+W9xB8l8rS8ob2cO4b1L+WTJw/0AJwWYVgcxQ==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -11893,9 +12428,9 @@ } }, "ssri": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz", - "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, "requires": { "minipass": "^3.1.1" @@ -12036,50 +12571,33 @@ } }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.1.tgz", + "integrity": "sha512-LL0OLyN6AnfV9xqGQpDBwedT2Rt63737LxvsRxbcwpa2aIeynBApG2Sm//F3TaLHIR1aJBN52DWklc06b94o5Q==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } } }, "string.prototype.trimend": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", - "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3" } }, "string.prototype.trimstart": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", - "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3" } }, @@ -12089,12 +12607,12 @@ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^5.0.0" } }, "strip-eof": { @@ -12113,18 +12631,6 @@ "schema-utils": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "schema-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", @@ -12149,6 +12655,17 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -12159,6 +12676,21 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -12187,12 +12719,6 @@ "ms": "2.0.0" } }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -12208,9 +12734,9 @@ } }, "stylus-loader": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-4.3.1.tgz", - "integrity": "sha512-apDYJEM5ZpOAWbWInWcsbtI8gHNr/XYVcSY/tWqOUPt7M5tqhtwXVsAkgyiVjhuvw2Yrjq474a9H+g4d047Ebw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-4.3.3.tgz", + "integrity": "sha512-PpWB5PnCXUzW4WMYhCvNzAHJBjIBPMXwsdfkkKuA9W7k8OQFMl/19/AQvaWsxz2IptxUlCseyJ6TY/eEKJ4+UQ==", "dev": true, "requires": { "fast-glob": "^3.2.4", @@ -12220,18 +12746,6 @@ "schema-utils": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "schema-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", @@ -12293,13 +12807,22 @@ "argparse": "^1.0.7", "esprima": "^4.0.0" } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } } } }, "symbol-observable": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", - "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-3.0.0.tgz", + "integrity": "sha512-6tDOXSHiVjuCaasQSWTmHUWn4PuG7qa3+1WT031yTc/swT7+rLiw3GOrFxaH1E3lLP09dH3bVuVDf2gK5rxG3Q==", "dev": true }, "tapable": { @@ -12320,20 +12843,12 @@ "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } } }, "terser": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.7.tgz", - "integrity": "sha512-lJbKdfxWvjpV330U4PBZStCT9h3N9A4zZVA5Y4k9sCWXknrpdyxi1oMsRKLmQ/YDMDxSBKIh88v0SkdhdqX06w==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", + "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", "dev": true, "requires": { "commander": "^2.20.0", @@ -12358,18 +12873,6 @@ "webpack-sources": "^1.4.3" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -12492,12 +12995,6 @@ "os-tmpdir": "~1.0.2" } }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", - "dev": true - }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -12593,14 +13090,14 @@ "dev": true }, "tslib": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", - "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" }, "tslint": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.2.tgz", - "integrity": "sha512-UyNrLdK3E0fQG/xWNqAFAC5ugtFyPO4JJR1KyyfQAyzR8W0fTRrC91A8Wej4BntFzcvETdCSDa/4PnNYJQLYiA==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -12614,7 +13111,7 @@ "mkdirp": "^0.5.3", "resolve": "^1.3.2", "semver": "^5.3.0", - "tslib": "^1.10.0", + "tslib": "^1.13.0", "tsutils": "^2.29.0" }, "dependencies": { @@ -12637,6 +13134,15 @@ "esprima": "^4.0.0" } }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -12644,9 +13150,9 @@ "dev": true }, "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } @@ -12661,9 +13167,9 @@ }, "dependencies": { "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } @@ -12718,15 +13224,15 @@ "dev": true }, "typescript": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz", - "integrity": "sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.7.tgz", + "integrity": "sha512-yi7M4y74SWvYbnazbn8/bmJmX4Zlej39ZOqwG/8dut/MYoSQ119GY9ZFbbGsD4PFZYWxqik/XsP3vk3+W5H3og==", "dev": true }, "ua-parser-js": { - "version": "0.7.21", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", - "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==", + "version": "0.7.24", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.24.tgz", + "integrity": "sha512-yo+miGzQx5gakzVK3QFfN0/L9uVhosXBBO7qmnk7c2iw1IhL212wfA3zbnI54B0obGwC/5NWub/iT9sReMx+Fw==", "dev": true }, "unicode-canonical-property-names-ecmascript": { @@ -12875,9 +13381,9 @@ "dev": true }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -12908,9 +13414,9 @@ } }, "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", + "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", "dev": true, "requires": { "querystringify": "^2.1.1", @@ -12990,16 +13496,6 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "validate-npm-package-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", @@ -13183,11 +13679,7 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } + "optional": true }, "glob-parent": { "version": "3.1.0", @@ -13409,9 +13901,9 @@ "dev": true }, "enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -13465,6 +13957,15 @@ "pkg-dir": "^3.0.0" } }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -13511,6 +14012,16 @@ "json5": "^1.0.1" } }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -13520,6 +14031,16 @@ "yallist": "^3.0.2" } }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -13541,6 +14062,39 @@ "to-regex": "^3.0.2" } }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -13561,6 +14115,12 @@ "ajv-keywords": "^3.1.0" } }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, "serialize-javascript": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", @@ -13661,17 +14221,26 @@ }, "dependencies": { "mime": { - "version": "2.4.7", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.7.tgz", - "integrity": "sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } } } }, "webpack-dev-server": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", - "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -13694,11 +14263,11 @@ "p-retry": "^3.0.1", "portfinder": "^1.0.26", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", + "selfsigned": "^1.10.8", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.20", - "sockjs-client": "1.4.0", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", @@ -13709,6 +14278,12 @@ "yargs": "^13.3.2" }, "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -13813,11 +14388,7 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } + "optional": true }, "glob-parent": { "version": "3.1.0", @@ -13924,6 +14495,15 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -13964,9 +14544,9 @@ } }, "webpack-merge": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.2.0.tgz", - "integrity": "sha512-QBglJBg5+lItm3/Lopv8KDDK01+hjdg2azEwi/4vKJ8ZmGPdtJsTpjtNNOW3a4WiqzXdCATtTudOZJngE7RKkA==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -13974,9 +14554,9 @@ } }, "webpack-sources": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.0.1.tgz", - "integrity": "sha512-A9oYz7ANQBK5EN19rUXbvNgfdfZf5U2gP0769OXsj9CvYkCR6OHOsd6OKyEy4H38GGxpsQPKIL83NC64QY6Xmw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", "dev": true, "requires": { "source-list-map": "^2.0.1", @@ -13992,9 +14572,9 @@ } }, "webpack-subresource-integrity": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.1.tgz", - "integrity": "sha512-uekbQ93PZ9e7BFB8Hl9cFIVYQyQqiXp2ExKk9Zv+qZfH/zHXHrCFAfw1VW0+NqWbTWrs/HnuDrto3+tiPXh//Q==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.2.tgz", + "integrity": "sha512-GBWYBoyalbo5YClwWop9qe6Zclp8CIXYGIz12OPclJhIrSplDxs1Ls1JDMH8xBPPrg1T6ISaTW9Y6zOrwEiAzw==", "dev": true, "requires": { "webpack-sources": "^1.3.0" @@ -14019,11 +14599,13 @@ } }, "websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, @@ -14054,6 +14636,48 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "wildcard": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", @@ -14182,12 +14806,6 @@ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true }, - "xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", - "dev": true - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -14195,9 +14813,9 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", "dev": true }, "yallist": { @@ -14242,12 +14860,46 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -14278,14 +14930,16 @@ "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } } }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true - }, "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index c45e30080..497dd01ea 100644 --- a/package.json +++ b/package.json @@ -12,14 +12,14 @@ }, "private": true, "dependencies": { - "@angular/animations": "^11.0.7", - "@angular/common": "^11.0.7", - "@angular/compiler": "^11.0.7", - "@angular/core": "^11.0.7", - "@angular/forms": "^11.0.7", - "@angular/platform-browser": "^11.0.7", - "@angular/platform-browser-dynamic": "^11.0.7", - "@angular/router": "^11.0.7", + "@angular/animations": "^11.2.3", + "@angular/common": "^11.2.3", + "@angular/compiler": "^11.2.3", + "@angular/core": "^11.2.3", + "@angular/forms": "^11.2.3", + "@angular/platform-browser": "^11.2.3", + "@angular/platform-browser-dynamic": "^11.2.3", + "@angular/router": "^11.2.3", "crypto-js": "^3.3.0", "file-saver": "^2.0.5", "hammerjs": "^2.0.8", @@ -28,16 +28,16 @@ "lzbase62": "^2.0.0", "msgpack-lite": "^0.1.26", "pako": "^2.0.0", - "rxjs": "^6.6.3", + "rxjs": "^6.6.6", "tslib": "^2.0.0", "vkbeautify": "^0.99.3", "zone.js": "~0.10.3" }, "devDependencies": { - "@angular-devkit/build-angular": "~0.1100.6", - "@angular/cli": "^11.0.6", - "@angular/compiler-cli": "^11.0.7", - "@angular/language-service": "^11.0.7", + "@angular-devkit/build-angular": "~0.1102.2", + "@angular/cli": "^11.2.2", + "@angular/compiler-cli": "^11.2.3", + "@angular/language-service": "^11.2.3", "@types/crypto-js": "^4.0.1", "@types/file-saver": "^2.0.1", "@types/hammerjs": "^2.0.39", @@ -52,7 +52,7 @@ "codelyzer": "^6.0.0", "jasmine-core": "~3.6.0", "jasmine-spec-reporter": "~5.0.0", - "karma": "~5.1.1", + "karma": "~6.1.1", "karma-chrome-launcher": "~3.1.0", "karma-coverage": "~2.0.3", "karma-jasmine": "~4.0.0", From 4d76178b64ec1d2c5d49befa0d3ad8f04c7f59a5 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sun, 28 Feb 2021 02:07:28 +0900 Subject: [PATCH 016/161] =?UTF-8?q?docs:=20=E3=83=90=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E6=83=85=E5=A0=B1=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 2 +- package.json | 2 +- src/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9932693e0..192f055b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "udonarium", - "version": "1.13.1", + "version": "1.13.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 497dd01ea..46d718e50 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "udonarium", - "version": "1.13.1", + "version": "1.13.2", "license": "MIT", "scripts": { "ng": "ng", diff --git a/src/index.html b/src/index.html index eae7e67dc..f0fb28fcf 100644 --- a/src/index.html +++ b/src/index.html @@ -3,7 +3,7 @@ - Udonarium 1.13.1 + Udonarium 1.13.2 From c2760128b6c59035adddc4938e5fde2cbb472674 Mon Sep 17 00:00:00 2001 From: blhsrwznrghfzpr Date: Sun, 14 Jun 2020 23:56:11 +0900 Subject: [PATCH 017/161] =?UTF-8?q?feat:=20bcdice-js=E3=82=92=E4=BD=BF?= =?UTF-8?q?=E3=81=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 5 + package.json | 1 + src/app/class/dice-bot.ts | 390 +----------------- .../chat-input/chat-input.component.html | 5 +- .../chat-input/chat-input.component.ts | 4 +- 5 files changed, 20 insertions(+), 385 deletions(-) diff --git a/package-lock.json b/package-lock.json index 192f055b6..ddfb33fe9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2643,6 +2643,11 @@ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, + "bcdice": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-1.4.0.tgz", + "integrity": "sha512-4mJaAxbrP5iofgXNAd5bmZwbDJ5Mydzdq66PlwlpR/agXI49jcrbDHK8KdbJZmSogEoiTkqo9VhrcRrawXY2xA==" + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", diff --git a/package.json b/package.json index 46d718e50..b2e3c73d7 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "@angular/platform-browser": "^11.2.3", "@angular/platform-browser-dynamic": "^11.2.3", "@angular/router": "^11.2.3", + "bcdice": "^1.4.0", "crypto-js": "^3.3.0", "file-saver": "^2.0.5", "hammerjs": "^2.0.8", diff --git a/src/app/class/dice-bot.ts b/src/app/class/dice-bot.ts index 6ee391306..06fc36023 100644 --- a/src/app/class/dice-bot.ts +++ b/src/app/class/dice-bot.ts @@ -1,3 +1,5 @@ +import BCDice, { Info } from 'bcdice'; + import { ChatMessage, ChatMessageContext } from './chat-message'; import { ChatTab } from './chat-tab'; import { SyncObject } from './core/synchronize-object/decorator'; @@ -7,13 +9,6 @@ import { EventSystem } from './core/system'; import { PromiseQueue } from './core/system/util/promise-queue'; import { StringUtil } from './core/system/util/string-util'; -declare var Opal - -interface DiceBotInfo { - script: string; - game: string; -} - interface DiceRollResult { result: string; isSecret: boolean; @@ -24,308 +19,11 @@ export class DiceBot extends GameObject { private static loadedDiceBots: { [gameType: string]: boolean } = {}; private static queue: PromiseQueue = new PromiseQueue('DiceBotQueue'); - public static diceBotInfos: DiceBotInfo[] = [ - { script: 'EarthDawn', game: 'アースドーン' }, - { script: 'EarthDawn3', game: 'アースドーン3版' }, - { script: 'EarthDawn4', game: 'アースドーン4版' }, - { script: 'Airgetlamh', game: '朱の孤塔のエアゲトラム' }, - { script: 'AFF2e', game: 'ADVANCED FIGHTING FANTASY 2nd Edition' }, - { script: 'AnimaAnimus', game: 'アニマアニムス' }, - { script: 'Amadeus', game: 'アマデウス' }, - { script: 'Arianrhod', game: 'アリアンロッドRPG' }, - { script: 'OrgaRain', game: '在りて遍くオルガレイン' }, - { script: 'Alshard', game: 'アルシャード' }, - { script: 'ArsMagica', game: 'アルスマギカ' }, - { script: 'AlterRaise', game: 'アルトレイズ' }, - { script: 'IthaWenUa', game: 'イサー・ウェン=アー' }, - { script: 'YearZeroEngine', game: 'YearZeroEngine' }, - { script: 'Insane', game: 'インセイン' }, - { script: 'VampireTheMasquerade5th', game: 'Vampire: The Masquerade 5th Edition' }, - { script: 'WitchQuest', game: 'ウィッチクエスト' }, - { script: 'Warhammer', game: 'ウォーハンマー' }, - { script: 'Utakaze', game: 'ウタカゼ' }, - { script: 'Alsetto', game: '詩片のアルセット' }, - { script: 'AceKillerGene', game: 'エースキラージーン' }, - { script: 'EclipsePhase', game: 'エクリプス・フェイズ' }, - { script: 'EmbryoMachine', game: 'エムブリオマシンRPG' }, - { script: 'Elysion', game: 'エリュシオン' }, - { script: 'Elric', game: 'エルリック!' }, - { script: 'EndBreaker', game: 'エンドブレイカー!' }, - { script: 'Oukahoushin3rd', game: '央華封神RPG 第三版' }, - { script: 'OracleEngine', game: 'オラクルエンジン' }, - { script: 'GardenOrder', game: 'ガーデンオーダー' }, - { script: 'CardRanker', game: 'カードランカー' }, - { script: 'Gurps', game: 'ガープス' }, - { script: 'GurpsFW', game: 'ガープスフィルトウィズ' }, - { script: 'ChaosFlare', game: 'カオスフレア' }, - { script: 'OneWayHeroics', game: '片道勇者TRPG' }, - { script: 'Kamigakari', game: '神我狩' }, - { script: 'Garako', game: 'ガラコと破界の塔' }, - { script: 'KanColle', game: '艦これRPG' }, - { script: 'Gundog', game: 'ガンドッグ' }, - { script: 'GundogZero', game: 'ガンドッグゼロ' }, - { script: 'GundogRevised', game: 'ガンドッグ・リヴァイズド' }, - { script: 'KillDeathBusiness', game: 'キルデスビジネス' }, - { script: 'StellarKnights', game: '銀剣のステラナイツ' }, - { script: 'Cthulhu', game: 'クトゥルフ神話TRPG' }, - { script: 'CthulhuTech', game: 'クトゥルフテック' }, - { script: 'KurayamiCrying', game: 'クラヤミクライン' }, - { script: 'GranCrest', game: 'グランクレストRPG' }, - { script: 'GeishaGirlwithKatana', game: 'ゲイシャ・ガール・ウィズ・カタナ' }, - { script: 'GehennaAn', game: 'ゲヘナ・アナスタシス' }, - { script: 'KemonoNoMori', game: '獸ノ森' }, - { script: 'StrangerOfSwordCity', game: '剣の街の異邦人TRPG' }, - { script: 'Illusio', game: '晃天のイルージオ' }, - { script: 'CodeLayerd', game: 'コード:レイヤード' }, - { script: 'Avandner', game: '黒絢のアヴァンドナー' }, - { script: 'GoblinSlayer', game: 'ゴブリンスレイヤーTRPG' }, - { script: 'Gorilla', game: 'ゴリラTRPG' }, - { script: 'ColossalHunter', game: 'コロッサルハンター' }, - { script: 'Postman', game: '壊れた世界のポストマン' }, - { script: 'Satasupe', game: 'サタスペ' }, - { script: 'SamsaraBallad', game: 'サンサーラ・バラッド' }, - { script: 'SharedFantasia', game: 'Shared†Fantasia' }, - { script: 'JamesBond', game: 'ジェームズ・ボンド007' }, - { script: 'LiveraDoll', game: '紫縞のリヴラドール' }, - { script: 'ShinobiGami', game: 'シノビガミ' }, - { script: 'ShadowRun', game: 'シャドウラン' }, - { script: 'ShadowRun4', game: 'シャドウラン 4th Edition' }, - { script: 'ShadowRun5', game: 'シャドウラン 5th Edition' }, - { script: 'ShoujoTenrankai', game: '少女展爛会TRPG' }, - { script: 'ShinkuuGakuen', game: '真空学園' }, - { script: 'Cthulhu7th', game: '新クトゥルフ神話TRPG' }, - { script: 'ShinMegamiTenseiKakuseihen', game: '真・女神転生TRPG 覚醒篇' }, - { script: 'Skynauts', game: '歯車の塔の探空士' }, - { script: 'ScreamHighSchool', game: 'スクリームハイスクール' }, - { script: 'SRS', game: 'スタンダードRPGシステム' }, - { script: 'SteamPunkers', game: 'スチームパンカーズ' }, - { script: 'SterileLife', game: 'ステラーライフTRPG' }, - { script: 'StratoShout', game: 'ストラトシャウト' }, - { script: 'EtrianOdysseySRS', game: '世界樹の迷宮SRS' }, - { script: 'ZettaiReido', game: '絶対隷奴' }, - { script: 'SevenFortressMobius', game: 'セブン=フォートレス メビウス' }, - { script: 'TherapieSein', game: 'セラフィザイン' }, - { script: 'Villaciel', game: '蒼天のヴィラシエル' }, - { script: 'SwordWorld', game: 'ソードワールドRPG' }, - { script: 'SwordWorld2_0', game: 'ソードワールド2.0' }, - { script: 'SwordWorld2_5', game: 'ソードワールド2.5' }, - { script: 'DarkSouls', game: 'ダークソウルTRPG' }, - { script: 'DarkDaysDrive', game: 'ダークデイズドライブ' }, - { script: 'DarkBlaze', game: 'ダークブレイズ' }, - { script: 'DiceOfTheDead', game: 'ダイス・オブ・ザ・デッド' }, - { script: 'DoubleCross', game: 'ダブルクロス2nd,3rd' }, - { script: 'DungeonsAndDragons', game: 'ダンジョンズ&ドラゴンズ' }, - { script: 'Paradiso', game: 'チェレステ色のパラディーゾ' }, - { script: 'Chill', game: 'Chill' }, - { script: 'Chill3', game: 'Chill 3rd Edition' }, - { script: 'CrashWorld', game: '墜落世界' }, - { script: 'DetatokoSaga', game: 'でたとこサーガ' }, - { script: 'DeadlineHeroes', game: 'デッドラインヒーローズRPG' }, - { script: 'DemonParasite', game: 'デモンパラサイト' }, - { script: 'TokyoGhostResearch', game: '東京ゴーストリサーチ' }, - { script: 'TokyoNova', game: 'トーキョーN◎VA' }, - { script: 'Torg', game: 'トーグ' }, - { script: 'Torg1_5', game: 'トーグ1.5版' }, - { script: 'TorgEternity', game: 'TORG Eternity' }, - { script: 'TokumeiTenkousei', game: '特命転攻生' }, - { script: 'Dracurouge', game: 'ドラクルージュ' }, - { script: 'TrinitySeven', game: 'トリニティセブンRPG' }, - { script: 'TwilightGunsmoke', game: 'トワイライトガンスモーク' }, - { script: 'TunnelsAndTrolls', game: 'トンネルズ&トロールズ' }, - { script: 'NightWizard', game: 'ナイトウィザード The 2nd Edition' }, - { script: 'NightWizard3rd', game: 'ナイトウィザード The 3rd Edition' }, - { script: 'NightmareHunterDeep', game: 'ナイトメアハンター=ディープ' }, - { script: 'NinjaSlayer', game: 'ニンジャスレイヤーTRPG' }, - { script: 'NjslyrBattle', game: 'NJSLYRBATTLE' }, - { script: 'Nuekagami', game: '鵺鏡' }, - { script: 'Nechronica', game: 'ネクロニカ' }, - { script: 'NeverCloud', game: 'ネバークラウドTRPG' }, - { script: 'HarnMaster', game: 'ハーンマスター' }, - { script: 'Pathfinder', game: 'Pathfinder' }, - { script: 'BadLife', game: 'バッドライフ' }, - { script: 'HatsuneMiku', game: '初音ミクTRPG ココロダンジョン' }, - { script: 'BattleTech', game: 'バトルテック' }, - { script: 'ParasiteBlood', game: 'パラサイトブラッドRPG' }, - { script: 'Paranoia', game: 'パラノイア' }, - { script: 'ParanoiaRebooted', game: 'パラノイア リブーテッド' }, - { script: 'BarnaKronika', game: 'バルナ・クロニカ' }, - { script: 'PulpCthulhu', game: 'パルプ・クトゥルフ' }, - { script: 'Raisondetre', game: '叛逆レゾンデートル' }, - { script: 'HuntersMoon', game: 'ハンターズ・ムーン' }, - { script: 'Peekaboo', game: 'ピーカーブー' }, - { script: 'BeastBindTrinity', game: 'ビーストバインド トリニティ' }, - { script: 'BBN', game: 'BBNTRPG' }, - { script: 'Hieizan', game: '比叡山炎上' }, - { script: 'BeginningIdol', game: 'ビギニングアイドル' }, - { script: 'PhantasmAdventure', game: 'ファンタズム・アドベンチャー' }, - { script: 'Fiasco', game: 'フィアスコ' }, - { script: 'FilledWith', game: 'フィルトウィズ' }, - { script: 'FutariSousa', game: 'フタリソウサ' }, - { script: 'BlindMythos', game: 'ブラインド・ミトスRPG' }, - { script: 'BloodCrusade', game: 'ブラッド・クルセイド' }, - { script: 'BloodMoon', game: 'ブラッド・ムーン' }, - { script: 'FullMetalPanic', game: 'フルメタル・パニック!RPG' }, - { script: 'BladeOfArcana', game: 'ブレイド・オブ・アルカナ' }, - { script: 'Strave', game: '碧空のストレイヴ' }, - { script: 'Pendragon', game: 'ペンドラゴン' }, - { script: 'HouraiGakuen', game: '蓬莱学園の冒険!!' }, - { script: 'MagicaLogia', game: 'マギカロギア' }, - { script: 'InfiniteFantasia', game: '無限のファンタジア' }, - { script: 'MeikyuKingdom', game: '迷宮キングダム' }, - { script: 'MeikyuKingdomBasic', game: '迷宮キングダム 基本ルールブック' }, - { script: 'MeikyuDays', game: '迷宮デイズ' }, - { script: 'MetallicGuardian', game: 'メタリックガーディアンRPG' }, - { script: 'MetalHead', game: 'メタルヘッド' }, - { script: 'MetalHeadExtream', game: 'メタルヘッドエクストリーム' }, - { script: 'MonotoneMuseum', game: 'モノトーンミュージアムRPG' }, - { script: 'YankeeYogSothoth', game: 'ヤンキー&ヨグ=ソトース' }, - { script: 'GoldenSkyStories', game: 'ゆうやけこやけ' }, - { script: 'Ryutama', game: 'りゅうたま' }, - { script: 'RyuTuber', game: 'リューチューバーとちいさな奇跡' }, - { script: 'RuneQuest', game: 'ルーンクエスト' }, - { script: 'RecordOfSteam', game: 'Record of Steam' }, - { script: 'RecordOfLodossWar', game: 'ロードス島戦記RPG' }, - { script: 'RoleMaster', game: 'ロールマスター' }, - { script: 'LogHorizon', game: 'ログ・ホライズンTRPG' }, - { script: 'RokumonSekai2', game: '六門世界RPG セカンドエディション' }, - { script: 'LostRecord', game: 'ロストレコード' }, - { script: 'LostRoyal', game: 'ロストロイヤル' }, - { script: 'WaresBlade', game: 'ワースブレイド' }, - { script: 'WARPS', game: 'ワープス' }, - { script: 'WorldOfDarkness', game: 'ワールド・オブ・ダークネス' }, - { script: 'Cthulhu7th_ChineseTraditional', game: '克蘇魯神話第7版' }, - { script: 'Cthulhu_ChineseTraditional', game: '克蘇魯神話' }, - { script: 'KillDeathBusiness_Korean', game: 'Kill Death Business (한국어)' }, - { script: 'Nechronica_Korean', game: '네크로니카' }, - { script: 'DoubleCross_Korean', game: '더블크로스2nd,3rd' }, - { script: 'DetatokoSaga_Korean', game: '데타토코 사가' }, - { script: 'FutariSousa_Korean', game: '둘이서 수사(후타리소우사)' }, - { script: 'Dracurouge_Korean', game: '드라크루주' }, - { script: 'LogHorizon_Korean', game: '로그 호라이즌' }, - { script: 'MonotoneMuseum_Korean', game: '모노톤 뮤지엄' }, - { script: 'BeginningIdol_Korean', game: '비기닝 아이돌' }, - { script: 'StratoShout_Korean', game: '스트라토 샤우트' }, - { script: 'Amadeus_Korean', game: '아마데우스' }, - { script: 'Insane_Korean', game: '인세인' }, - { script: 'Kamigakari_Korean', game: '카미가카리' }, - { script: 'Cthulhu7th_Korean', game: '크툴루의 부름 7판' }, - { script: 'Cthulhu_Korean', game: '크툴루' }, - { script: 'Fiasco_Korean', game: '피아스코' }, - ]; - - public static extratablesTables: string[] = [ - 'BloodCrusade_TD2T.txt', - 'BloodCrusade_TD3T.txt', - 'BloodCrusade_TD4T.txt', - 'BloodCrusade_TD5T.txt', - 'BloodCrusade_TD6T.txt', - 'BloodCrusade_TDHT.txt', - 'BloodMoon_ID2T.txt', - 'BloodMoon_IDT.txt', - 'BloodMoon_RAT.txt', - 'CardRanker_BFT.txt', - 'CardRanker_CDT.txt', - 'CardRanker_CST.txt', - 'CardRanker_DT.txt', - 'CardRanker_GDT.txt', - 'CardRanker_OST.txt', - 'CardRanker_SST.txt', - 'CardRanker_ST.txt', - 'CardRanker_TDT.txt', - 'CardRanker_WT.txt', - 'Elysion_EBT.txt', - 'Elysion_GIT.txt', - 'Elysion_HBT.txt', - 'Elysion_HT.txt', - 'Elysion_IT.txt', - 'Elysion_JH.txt', - 'Elysion_KT.txt', - 'Elysion_NA.txt', - 'Elysion_NT.txt', - 'Elysion_OJ1.txt', - 'Elysion_OJ2.txt', - 'Elysion_TBT.txt', - 'Elysion_UBT.txt', - 'Elysion_UT1.txt', - 'Elysion_UT2.txt', - 'Elysion_UT3.txt', - 'Elysion_UT4.txt', - 'HuntersMoon_DS1ET.txt', - 'HuntersMoon_DS2ET.txt', - 'HuntersMoon_DS3ET.txt', - 'HuntersMoon_EE1ET.txt', - 'HuntersMoon_EE2ET.txt', - 'HuntersMoon_EE3ET.txt', - 'HuntersMoon_ERT.txt', - 'HuntersMoon_ET1ET.txt', - 'HuntersMoon_ET2ET.txt', - 'HuntersMoon_ET3ET.txt', - 'HuntersMoon_MST.txt', - 'HuntersMoon_TK1ET.txt', - 'HuntersMoon_TK2ET.txt', - 'HuntersMoon_TK3ET.txt', - 'Kamigakari_ET.txt', - 'Kamigakari_KT.txt', - 'Kamigakari_NT.txt', - 'KanColle_BT2.txt', - 'KanColle_BT3.txt', - 'KanColle_BT4.txt', - 'KanColle_BT5.txt', - 'KanColle_BT6.txt', - 'KanColle_BT7.txt', - 'KanColle_BT8.txt', - 'KanColle_BT9.txt', - 'KanColle_BT10.txt', - 'KanColle_BT11.txt', - 'KanColle_BT12.txt', - 'KanColle_ETIT.txt', - 'KanColle_LFDT.txt', - 'KanColle_LFVT.txt', - 'KanColle_LSFT.txt', - 'KanColle_WPCN.txt', - 'KanColle_WPFA.txt', - 'KanColle_WPMC.txt', - 'KanColle_WPMCN.txt', - 'KillDeathBusiness_ANSPT.txt', - 'KillDeathBusiness_MASPT.txt', - 'KillDeathBusiness_MOSPT.txt', - 'KillDeathBusiness_PASPT.txt', - 'KillDeathBusiness_POSPT.txt', - 'KillDeathBusiness_UMSPT.txt', - 'Oukahoushin3rd_BKT.txt', - 'Oukahoushin3rd_KKT.txt', - 'Oukahoushin3rd_NHT.txt', - 'Oukahoushin3rd_SDT.txt', - 'Oukahoushin3rd_SKT.txt', - 'Oukahoushin3rd_STT.txt', - 'Oukahoushin3rd_UKT.txt', - 'ShinobiGami_AKST.txt', - 'ShinobiGami_CLST.txt', - 'ShinobiGami_DXST.txt', - 'ShinobiGami_HC.txt', - 'ShinobiGami_HK.txt', - 'ShinobiGami_HLST.txt', - 'ShinobiGami_HM.txt', - 'ShinobiGami_HO.txt', - 'ShinobiGami_HR.txt', - 'ShinobiGami_HS.txt', - 'ShinobiGami_HT.txt', - 'ShinobiGami_HY.txt', - 'ShinobiGami_NTST.txt', - 'ShinobiGami_OTKRT.txt', - 'ShinobiGami_PLST.txt', - 'BloodCrusade_BDST.txt', - 'BloodCrusade_CYST.txt', - 'BloodCrusade_DMST.txt', - 'BloodCrusade_MNST.txt', - 'BloodCrusade_SLST.txt', - 'BloodCrusade_TD1T.txt' - ]; + public static diceBotInfos: Info[] = BCDice.infoList; // GameObject Lifecycle onStoreAdded() { super.onStoreAdded(); - DiceBot.queue.add(DiceBot.loadScriptAsync('./assets/cgiDiceBot.js')); EventSystem.register(this) .on('SEND_MESSAGE', async event => { let chatMessage = ObjectStore.instance.get(event.data.messageIdentifier); @@ -395,21 +93,12 @@ export class DiceBot extends GameObject { static diceRollAsync(message: string, gameType: string): Promise { DiceBot.queue.add(DiceBot.loadDiceBotAsync(gameType)); return DiceBot.queue.add(() => { - if ('Opal' in window === false) { - console.warn('Opal is not loaded...'); - return { result: '', isSecret: false }; - } - let result = []; - let dir = []; - let diceBotTablePrefix = 'diceBotTable_'; - let isNeedResult = true; try { - Opal.gvars.isDebug = false; - let cgiDiceBot = Opal.CgiDiceBot.$new(); - result = cgiDiceBot.$roll(message, gameType, dir, diceBotTablePrefix, isNeedResult); + const bcdice = new BCDice(); + const result = bcdice.roll(message, gameType); console.log('diceRoll!!!', result); - console.log('isSecret!!!', cgiDiceBot.isSecret); - return { result: result[0], isSecret: cgiDiceBot.isSecret }; + console.log('isSecret!!!', bcdice.cgiDiceBot.isSecret); + return { result: result[0], isSecret: bcdice.cgiDiceBot.isSecret }; } catch (e) { console.error(e); } @@ -420,15 +109,10 @@ export class DiceBot extends GameObject { static getHelpMessage(gameType: string): Promise { DiceBot.queue.add(DiceBot.loadDiceBotAsync(gameType)); return DiceBot.queue.add(() => { - if ('Opal' in window === false) { - console.warn('Opal is not loaded...'); - return ''; - } let help = ''; try { - let bcdice = Opal.CgiDiceBot.$new().$newBcDice(); - bcdice.$setGameByTitle(gameType); - help = bcdice.diceBot.$getHelpMessage(); + const dicebotInfo = BCDice.infoList.find((info: Info) => info.gameType === gameType); + help = dicebotInfo.info; } catch (e) { console.error(e); } @@ -439,7 +123,6 @@ export class DiceBot extends GameObject { static loadDiceBotAsync(gameType: string): Promise { return new Promise((resolve, reject) => { console.log('loadDiceBotAsync'); - gameType = gameType.replace(/\./g, s => '_'); if ((!gameType && gameType.length < 1) || DiceBot.loadedDiceBots[gameType]) { console.log(gameType + ' is loaded'); @@ -449,63 +132,10 @@ export class DiceBot extends GameObject { DiceBot.loadedDiceBots[gameType] = false; - let promises: Promise[] = []; - let scriptPath = './assets/dicebot/' + gameType + '.js'; - - promises.push(DiceBot.loadScriptAsync(scriptPath)); - - for (let table of DiceBot.extratablesTables) { - if (!table.indexOf(gameType)) { - let path = './assets/extratables/' + table; - promises.push(DiceBot.loadExtratablesAsync(path, table)); - } - } - - Promise.all(promises).then(() => { + import(`bcdice/lib/diceBot/${gameType}`).then(() => { DiceBot.loadedDiceBots[gameType] = true; resolve(); }); }); } - - private static loadScriptAsync(path: string): Promise { - return new Promise((resolve, reject) => { - let head = document.head; - let script = document.createElement('script'); - script.src = path; - head.appendChild(script); - - script.onload = (e) => { - if (head && script.parentNode) head.removeChild(script); - console.log(path + ' is loading OK!!!'); - resolve(); - }; - - script.onabort = script.onerror = (e) => { - if (head && script.parentNode) head.removeChild(script); - console.error(e); - resolve(); - } - }); - } - - private static loadExtratablesAsync(path: string, table: string): Promise { - return new Promise((resolve, reject) => { - fetch(path) - .then(response => { - if (response.ok) return response.text(); - throw new Error('Network response was not ok.'); - }) - .then(text => { - let array = /((.+)_(.+)).txt$/ig.exec(table); - Opal.TableFileData.$setVirtualTableData(array[1], array[2], array[3], text); - console.log(table + ' is loading OK!!!'); - resolve(); - }) - .catch(error => { - console.warn('There has been a problem with your fetch operation: ', error.message); - resolve(); - }); - }); - } } diff --git a/src/app/component/chat-input/chat-input.component.html b/src/app/component/chat-input/chat-input.component.html index 512562d95..d58c9193c 100644 --- a/src/app/component/chat-input/chat-input.component.html +++ b/src/app/component/chat-input/chat-input.component.html @@ -17,8 +17,7 @@ @@ -38,4 +37,4 @@ - \ No newline at end of file + diff --git a/src/app/component/chat-input/chat-input.component.ts b/src/app/component/chat-input/chat-input.component.ts index f995c0453..95feeea8e 100644 --- a/src/app/component/chat-input/chat-input.component.ts +++ b/src/app/component/chat-input/chat-input.component.ts @@ -205,8 +205,8 @@ export class ChatInputComponent implements OnInit, OnDestroy { let gameName: string = 'ダイスボット'; for (let diceBotInfo of DiceBot.diceBotInfos) { - if (diceBotInfo.script === this.gameType) { - gameName = 'ダイスボット<' + diceBotInfo.game + '>' + if (diceBotInfo.gameType === this.gameType) { + gameName = 'ダイスボット<' + diceBotInfo.gameName + '>' } } gameName += 'の説明'; From dd80851f468f0153df4100c893246cad475ce7aa Mon Sep 17 00:00:00 2001 From: blhsrwznrghfzpr Date: Sun, 14 Jun 2020 23:56:49 +0900 Subject: [PATCH 018/161] =?UTF-8?q?fix:=20=E3=83=87=E3=83=95=E3=82=A9?= =?UTF-8?q?=E3=83=AB=E3=83=88=E3=81=AE=E3=83=80=E3=82=A4=E3=82=B9=E3=83=9C?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=82=92DiceBot=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/chat-palette.ts | 4 ++-- src/app/service/chat-message.service.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/class/chat-palette.ts b/src/app/class/chat-palette.ts index 5778b43c4..fe5479c09 100644 --- a/src/app/class/chat-palette.ts +++ b/src/app/class/chat-palette.ts @@ -15,7 +15,7 @@ export interface PaletteVariable { @SyncObject('chat-palette') export class ChatPalette extends ObjectNode { - @SyncVar() dicebot: string = ''; + @SyncVar() dicebot: string = 'DiceBot'; //TODO: キャラシ項目のコピー get paletteLines(): PaletteLine[] { @@ -111,4 +111,4 @@ export class ChatPalette extends ObjectNode { super.apply(context); this.isAnalized = false; } -} \ No newline at end of file +} diff --git a/src/app/service/chat-message.service.ts b/src/app/service/chat-message.service.ts index 26a24c52b..8ff0fff57 100644 --- a/src/app/service/chat-message.service.ts +++ b/src/app/service/chat-message.service.ts @@ -21,7 +21,7 @@ export class ChatMessageService { 'https://ntp-b1.nict.go.jp/cgi-bin/json', ]; - gameType: string = ''; + gameType: string = 'DiceBot'; constructor() { } From b334b88e5cf486af5dd640aaa1245c3f761153de Mon Sep 17 00:00:00 2001 From: blhsrwznrghfzpr Date: Mon, 15 Jun 2020 21:30:38 +0900 Subject: [PATCH 019/161] =?UTF-8?q?fix:=20=E4=BA=88=E6=9C=9F=E3=81=9B?= =?UTF-8?q?=E3=81=ACgameType=E3=81=8C=E5=85=A5=E5=8A=9B=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=81=9F=E6=99=82=E3=81=AB=E3=82=A8=E3=83=A9=E3=83=BC=E3=81=8C?= =?UTF-8?q?=E5=87=BA=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - xmlを直接編集されると発生しうる - BCDice側のアップデートによりgameTypeが変更される場合がある --- src/app/class/dice-bot.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/app/class/dice-bot.ts b/src/app/class/dice-bot.ts index 06fc36023..1738b4259 100644 --- a/src/app/class/dice-bot.ts +++ b/src/app/class/dice-bot.ts @@ -111,8 +111,12 @@ export class DiceBot extends GameObject { return DiceBot.queue.add(() => { let help = ''; try { - const dicebotInfo = BCDice.infoList.find((info: Info) => info.gameType === gameType); - help = dicebotInfo.info; + const dicebotInfo = BCDice.infoList.find( + (info) => info.gameType === gameType + ); + if (dicebotInfo) { + help = dicebotInfo.info; + } } catch (e) { console.error(e); } @@ -130,6 +134,13 @@ export class DiceBot extends GameObject { return; } + if (!BCDice.infoList.some((info) => info.gameType === gameType)) { + console.warn(gameType + ' is unsupported'); + DiceBot.loadedDiceBots[gameType] = true; + resolve(); + return; + } + DiceBot.loadedDiceBots[gameType] = false; import(`bcdice/lib/diceBot/${gameType}`).then(() => { From f0e66c66b48b0f1ae2c4036a359d6ec70093f725 Mon Sep 17 00:00:00 2001 From: blhsrwznrghfzpr Date: Mon, 15 Jun 2020 22:42:46 +0900 Subject: [PATCH 020/161] =?UTF-8?q?docs:=20BCDice=20v2.06.00=20=E3=81=A7?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E3=81=95=E3=82=8C=E3=81=9F=E3=82=B3=E3=83=9E?= =?UTF-8?q?=E3=83=B3=E3=83=89=E3=81=AE=E8=AA=AC=E6=98=8E=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BCDice#181 --- src/app/component/chat-input/chat-input.component.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/app/component/chat-input/chat-input.component.ts b/src/app/component/chat-input/chat-input.component.ts index 95feeea8e..16685f36d 100644 --- a/src/app/component/chat-input/chat-input.component.ts +++ b/src/app/component/chat-input/chat-input.component.ts @@ -232,6 +232,8 @@ export class ChatInputComponent implements OnInit, OnDestroy { + ' choice[a,b,c]:列挙した要素から一つを選択表示。ランダム攻撃対象決定などに\n' + ' S3d6 : 各コマンドの先頭に「S」を付けると他人結果の見えないシークレットロール\n' + ' 3d6/2 : ダイス出目を割り算(切り捨て)。切り上げは /2U、四捨五入は /2R。\n' + + ' 4D6KH3 : 大きな出目から3個取った後の和。大きな出目を取る KH、小さな出目を取る KL。\n' + + ' 2D20DL1+1 : 小さな出目から1個除いた後の和+1。大きな出目を除く DH、小さな出目を除く DL。\n' + ' D66 : D66ダイス。順序はゲームに依存。D66N:そのまま、D66S:昇順。\n' + '===================================\n' + this.gameHelp; From 49b8bae9de5bf69cc4a85f460dc97ebdf75b1d0b Mon Sep 17 00:00:00 2001 From: blhsrwznrghfzpr Date: Mon, 15 Jun 2020 21:46:38 +0900 Subject: [PATCH 021/161] =?UTF-8?q?remove:=20BCDice=E9=96=A2=E9=80=A3?= =?UTF-8?q?=E3=81=AE=E3=82=BD=E3=83=BC=E3=82=B9=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/cgiDiceBot.js | 30546 ---------------- src/assets/dicebot/AFF2e.js | 159 - src/assets/dicebot/AceKillerGene.js | 158 - src/assets/dicebot/Airgetlamh.js | 128 - src/assets/dicebot/Alsetto.js | 130 - src/assets/dicebot/Alshard.js | 1170 - src/assets/dicebot/AlterRaise.js | 211 - src/assets/dicebot/Amadeus.js | 154 - src/assets/dicebot/Amadeus_Korean.js | 154 - src/assets/dicebot/AnimaAnimus.js | 518 - src/assets/dicebot/Arianrhod.js | 58 - src/assets/dicebot/ArsMagica.js | 218 - src/assets/dicebot/Avandner.js | 121 - src/assets/dicebot/BBN.js | 130 - src/assets/dicebot/BadLife.js | 227 - src/assets/dicebot/BarnaKronika.js | 269 - src/assets/dicebot/BattleTech.js | 586 - src/assets/dicebot/BeastBindTrinity.js | 619 - src/assets/dicebot/BeginningIdol.js | 893 - src/assets/dicebot/BeginningIdol_Korean.js | 869 - src/assets/dicebot/BladeOfArcana.js | 170 - src/assets/dicebot/BlindMythos.js | 431 - src/assets/dicebot/BloodCrusade.js | 234 - src/assets/dicebot/BloodMoon.js | 231 - src/assets/dicebot/CardRanker.js | 135 - src/assets/dicebot/ChaosFlare.js | 682 - src/assets/dicebot/Chill.js | 177 - src/assets/dicebot/Chill3.js | 58 - src/assets/dicebot/CodeLayerd.js | 190 - src/assets/dicebot/ColossalHunter.js | 243 - src/assets/dicebot/CrashWorld.js | 68 - src/assets/dicebot/Cthulhu.js | 395 - src/assets/dicebot/Cthulhu7th.js | 498 - .../dicebot/Cthulhu7th_ChineseTraditional.js | 407 - src/assets/dicebot/Cthulhu7th_Korean.js | 407 - src/assets/dicebot/CthulhuTech.js | 1130 - .../dicebot/Cthulhu_ChineseTraditional.js | 216 - src/assets/dicebot/Cthulhu_Korean.js | 216 - src/assets/dicebot/DarkBlaze.js | 239 - src/assets/dicebot/DarkDaysDrive.js | 130 - src/assets/dicebot/DarkSouls.js | 114 - src/assets/dicebot/DeadlineHeroes.js | 507 - src/assets/dicebot/DemonParasite.js | 116 - src/assets/dicebot/DetatokoSaga.js | 272 - src/assets/dicebot/DetatokoSaga_Korean.js | 272 - src/assets/dicebot/DiceBot.js | 669 - src/assets/dicebot/DiceOfTheDead.js | 96 - src/assets/dicebot/DoubleCross.js | 1387 - src/assets/dicebot/DoubleCross_Korean.js | 1387 - src/assets/dicebot/Dracurouge.js | 616 - src/assets/dicebot/Dracurouge_Korean.js | 330 - src/assets/dicebot/DungeonsAndDragons.js | 16 - src/assets/dicebot/EarthDawn.js | 211 - src/assets/dicebot/EarthDawn3.js | 476 - src/assets/dicebot/EarthDawn4.js | 496 - src/assets/dicebot/EclipsePhase.js | 64 - src/assets/dicebot/Elric.js | 54 - src/assets/dicebot/Elysion.js | 569 - src/assets/dicebot/EmbryoMachine.js | 230 - src/assets/dicebot/EndBreaker.js | 124 - src/assets/dicebot/EtrianOdysseySRS.js | 1170 - src/assets/dicebot/Fiasco.js | 121 - src/assets/dicebot/Fiasco_Korean.js | 121 - src/assets/dicebot/FilledWith.js | 600 - src/assets/dicebot/FullMetalPanic.js | 1170 - src/assets/dicebot/FutariSousa.js | 619 - src/assets/dicebot/FutariSousa_Korean.js | 619 - src/assets/dicebot/Garako.js | 396 - src/assets/dicebot/GardenOrder.js | 120 - src/assets/dicebot/GehennaAn.js | 167 - src/assets/dicebot/GeishaGirlwithKatana.js | 116 - src/assets/dicebot/GoblinSlayer.js | 154 - src/assets/dicebot/GoldenSkyStories.js | 67 - src/assets/dicebot/Gorilla.js | 42 - src/assets/dicebot/GranCrest.js | 145 - src/assets/dicebot/Gundog.js | 72 - src/assets/dicebot/GundogRevised.js | 254 - src/assets/dicebot/GundogZero.js | 180 - src/assets/dicebot/Gurps.js | 248 - src/assets/dicebot/GurpsFW.js | 587 - src/assets/dicebot/HarnMaster.js | 185 - src/assets/dicebot/HatsuneMiku.js | 221 - src/assets/dicebot/Hieizan.js | 52 - src/assets/dicebot/HouraiGakuen.js | 225 - src/assets/dicebot/HuntersMoon.js | 294 - src/assets/dicebot/Illusio.js | 103 - src/assets/dicebot/InfiniteFantasia.js | 56 - src/assets/dicebot/Insane.js | 477 - src/assets/dicebot/Insane_Korean.js | 450 - src/assets/dicebot/IthaWenUa.js | 46 - src/assets/dicebot/JamesBond.js | 57 - src/assets/dicebot/Kamigakari.js | 185 - src/assets/dicebot/Kamigakari_Korean.js | 224 - src/assets/dicebot/KanColle.js | 309 - src/assets/dicebot/KemonoNoMori.js | 348 - src/assets/dicebot/KillDeathBusiness.js | 538 - .../dicebot/KillDeathBusiness_Korean.js | 534 - src/assets/dicebot/KurayamiCrying.js | 43 - src/assets/dicebot/LiveraDoll.js | 128 - src/assets/dicebot/LogHorizon.js | 774 - src/assets/dicebot/LogHorizon_Korean.js | 720 - src/assets/dicebot/LostRecord.js | 24 - src/assets/dicebot/LostRoyal.js | 266 - src/assets/dicebot/MagicaLogia.js | 947 - src/assets/dicebot/MeikyuDays.js | 359 - src/assets/dicebot/MeikyuKingdom.js | 1193 - src/assets/dicebot/MeikyuKingdomBasic.js | 2213 -- src/assets/dicebot/MetalHead.js | 599 - src/assets/dicebot/MetalHeadExtream.js | 494 - src/assets/dicebot/MetallicGuardian.js | 1170 - src/assets/dicebot/MonotoneMuseum.js | 274 - src/assets/dicebot/MonotoneMuseum_Korean.js | 172 - src/assets/dicebot/Nechronica.js | 230 - src/assets/dicebot/Nechronica_Korean.js | 193 - src/assets/dicebot/NeverCloud.js | 61 - src/assets/dicebot/NightWizard.js | 845 - src/assets/dicebot/NightWizard3rd.js | 873 - src/assets/dicebot/NightmareHunterDeep.js | 117 - src/assets/dicebot/NinjaSlayer.js | 928 - src/assets/dicebot/NjslyrBattle.js | 60 - src/assets/dicebot/Nuekagami.js | 37 - src/assets/dicebot/OneWayHeroics.js | 352 - src/assets/dicebot/OracleEngine.js | 836 - src/assets/dicebot/OrgaRain.js | 88 - src/assets/dicebot/Oukahoushin3rd.js | 28 - src/assets/dicebot/Paradiso.js | 288 - src/assets/dicebot/Paranoia.js | 62 - src/assets/dicebot/ParanoiaRebooted.js | 127 - src/assets/dicebot/ParasiteBlood.js | 207 - src/assets/dicebot/Pathfinder.js | 36 - src/assets/dicebot/Peekaboo.js | 88 - src/assets/dicebot/Pendragon.js | 48 - src/assets/dicebot/PhantasmAdventure.js | 105 - src/assets/dicebot/Postman.js | 174 - src/assets/dicebot/PulpCthulhu.js | 573 - src/assets/dicebot/Raisondetre.js | 226 - src/assets/dicebot/RecordOfLodossWar.js | 557 - src/assets/dicebot/RecordOfSteam.js | 163 - src/assets/dicebot/RokumonSekai2.js | 149 - src/assets/dicebot/RoleMaster.js | 29 - src/assets/dicebot/RuneQuest.js | 54 - src/assets/dicebot/RyuTuber.js | 77 - src/assets/dicebot/Ryutama.js | 208 - src/assets/dicebot/SRS.js | 1149 - src/assets/dicebot/SamsaraBallad.js | 602 - src/assets/dicebot/Satasupe.js | 589 - src/assets/dicebot/ScreamHighSchool.js | 219 - src/assets/dicebot/SevenFortressMobius.js | 878 - src/assets/dicebot/ShadowRun.js | 30 - src/assets/dicebot/ShadowRun4.js | 58 - src/assets/dicebot/ShadowRun5.js | 151 - src/assets/dicebot/SharedFantasia.js | 75 - .../dicebot/ShinMegamiTenseiKakuseihen.js | 97 - src/assets/dicebot/ShinkuuGakuen.js | 373 - src/assets/dicebot/ShinobiGami.js | 151 - src/assets/dicebot/ShoujoTenrankai.js | 66 - src/assets/dicebot/Skynauts.js | 363 - src/assets/dicebot/SteamPunkers.js | 159 - src/assets/dicebot/StellarKnights.js | 349 - src/assets/dicebot/SterileLife.js | 318 - src/assets/dicebot/StrangerOfSwordCity.js | 146 - src/assets/dicebot/StratoShout.js | 185 - src/assets/dicebot/StratoShout_Korean.js | 185 - src/assets/dicebot/Strave.js | 168 - src/assets/dicebot/SwordWorld.js | 445 - src/assets/dicebot/SwordWorld2_0.js | 909 - src/assets/dicebot/SwordWorld2_5.js | 1002 - src/assets/dicebot/TherapieSein.js | 90 - src/assets/dicebot/TokumeiTenkousei.js | 63 - src/assets/dicebot/TokyoGhostResearch.js | 100 - src/assets/dicebot/TokyoNova.js | 16 - src/assets/dicebot/Torg.js | 317 - src/assets/dicebot/Torg1_5.js | 417 - src/assets/dicebot/TorgEternity.js | 439 - src/assets/dicebot/TrinitySeven.js | 180 - src/assets/dicebot/TunnelsAndTrolls.js | 310 - src/assets/dicebot/TwilightGunsmoke.js | 273 - src/assets/dicebot/Utakaze.js | 215 - src/assets/dicebot/VampireTheMasquerade5th.js | 149 - src/assets/dicebot/Villaciel.js | 378 - src/assets/dicebot/WARPS.js | 43 - src/assets/dicebot/WaresBlade.js | 40 - src/assets/dicebot/Warhammer.js | 235 - src/assets/dicebot/WitchQuest.js | 130 - src/assets/dicebot/WorldOfDarkness.js | 145 - src/assets/dicebot/YankeeYogSothoth.js | 208 - src/assets/dicebot/YearZeroEngine.js | 149 - src/assets/dicebot/ZettaiReido.js | 154 - src/assets/extratables/BloodCrusade_BDST.txt | 12 - src/assets/extratables/BloodCrusade_CYST.txt | 12 - src/assets/extratables/BloodCrusade_DMST.txt | 12 - src/assets/extratables/BloodCrusade_MNST.txt | 12 - src/assets/extratables/BloodCrusade_SLST.txt | 22 - src/assets/extratables/BloodCrusade_TD1T.txt | 7 - src/assets/extratables/BloodCrusade_TD2T.txt | 7 - src/assets/extratables/BloodCrusade_TD3T.txt | 7 - src/assets/extratables/BloodCrusade_TD4T.txt | 7 - src/assets/extratables/BloodCrusade_TD5T.txt | 7 - src/assets/extratables/BloodCrusade_TD6T.txt | 7 - src/assets/extratables/BloodCrusade_TDHT.txt | 7 - src/assets/extratables/BloodMoon_ID2T.txt | 22 - src/assets/extratables/BloodMoon_IDT.txt | 7 - src/assets/extratables/BloodMoon_RAT.txt | 37 - src/assets/extratables/CardRanker_BFT.txt | 7 - src/assets/extratables/CardRanker_CDT.txt | 7 - src/assets/extratables/CardRanker_CST.txt | 7 - src/assets/extratables/CardRanker_DT.txt | 7 - src/assets/extratables/CardRanker_GDT.txt | 7 - src/assets/extratables/CardRanker_OST.txt | 7 - src/assets/extratables/CardRanker_SST.txt | 7 - src/assets/extratables/CardRanker_ST.txt | 7 - src/assets/extratables/CardRanker_TDT.txt | 7 - src/assets/extratables/CardRanker_WT.txt | 7 - src/assets/extratables/Elysion_EBT.txt | 12 - src/assets/extratables/Elysion_GIT.txt | 12 - src/assets/extratables/Elysion_HBT.txt | 12 - src/assets/extratables/Elysion_HT.txt | 12 - src/assets/extratables/Elysion_IT.txt | 7 - src/assets/extratables/Elysion_JH.txt | 12 - src/assets/extratables/Elysion_KT.txt | 12 - src/assets/extratables/Elysion_NA.txt | 12 - src/assets/extratables/Elysion_NT.txt | 7 - src/assets/extratables/Elysion_OJ1.txt | 7 - src/assets/extratables/Elysion_OJ2.txt | 7 - src/assets/extratables/Elysion_TBT.txt | 12 - src/assets/extratables/Elysion_UBT.txt | 12 - src/assets/extratables/Elysion_UT1.txt | 22 - src/assets/extratables/Elysion_UT2.txt | 22 - src/assets/extratables/Elysion_UT3.txt | 22 - src/assets/extratables/Elysion_UT4.txt | 22 - src/assets/extratables/HuntersMoon_DS1ET.txt | 7 - src/assets/extratables/HuntersMoon_DS2ET.txt | 7 - src/assets/extratables/HuntersMoon_DS3ET.txt | 7 - src/assets/extratables/HuntersMoon_EE1ET.txt | 7 - src/assets/extratables/HuntersMoon_EE2ET.txt | 7 - src/assets/extratables/HuntersMoon_EE3ET.txt | 7 - src/assets/extratables/HuntersMoon_ERT.txt | 7 - src/assets/extratables/HuntersMoon_ET1ET.txt | 7 - src/assets/extratables/HuntersMoon_ET2ET.txt | 7 - src/assets/extratables/HuntersMoon_ET3ET.txt | 7 - src/assets/extratables/HuntersMoon_MST.txt | 7 - src/assets/extratables/HuntersMoon_TK1ET.txt | 9 - src/assets/extratables/HuntersMoon_TK2ET.txt | 7 - src/assets/extratables/HuntersMoon_TK3ET.txt | 7 - src/assets/extratables/Kamigakari_ET.txt | 37 - src/assets/extratables/Kamigakari_KT.txt | 37 - src/assets/extratables/Kamigakari_NT.txt | 37 - src/assets/extratables/KanColle_BT10.txt | 7 - src/assets/extratables/KanColle_BT11.txt | 7 - src/assets/extratables/KanColle_BT12.txt | 7 - src/assets/extratables/KanColle_BT2.txt | 7 - src/assets/extratables/KanColle_BT3.txt | 7 - src/assets/extratables/KanColle_BT4.txt | 7 - src/assets/extratables/KanColle_BT5.txt | 7 - src/assets/extratables/KanColle_BT6.txt | 7 - src/assets/extratables/KanColle_BT7.txt | 7 - src/assets/extratables/KanColle_BT8.txt | 7 - src/assets/extratables/KanColle_BT9.txt | 7 - src/assets/extratables/KanColle_ETIT.txt | 12 - src/assets/extratables/KanColle_LFDT.txt | 7 - src/assets/extratables/KanColle_LFVT.txt | 7 - src/assets/extratables/KanColle_LSFT.txt | 7 - src/assets/extratables/KanColle_WPCN.txt | 22 - src/assets/extratables/KanColle_WPFA.txt | 22 - src/assets/extratables/KanColle_WPMC.txt | 12 - src/assets/extratables/KanColle_WPMCN.txt | 12 - .../extratables/KillDeathBusiness_ANSPT.txt | 7 - .../extratables/KillDeathBusiness_MASPT.txt | 7 - .../extratables/KillDeathBusiness_MOSPT.txt | 7 - .../extratables/KillDeathBusiness_PASPT.txt | 7 - .../extratables/KillDeathBusiness_POSPT.txt | 7 - .../extratables/KillDeathBusiness_UMSPT.txt | 7 - src/assets/extratables/Oukahoushin3rd_BKT.txt | 12 - src/assets/extratables/Oukahoushin3rd_KKT.txt | 12 - src/assets/extratables/Oukahoushin3rd_NHT.txt | 12 - src/assets/extratables/Oukahoushin3rd_SDT.txt | 7 - src/assets/extratables/Oukahoushin3rd_SKT.txt | 12 - src/assets/extratables/Oukahoushin3rd_STT.txt | 12 - src/assets/extratables/Oukahoushin3rd_UKT.txt | 12 - src/assets/extratables/ShinobiGami_AKST.txt | 12 - src/assets/extratables/ShinobiGami_CLST.txt | 7 - src/assets/extratables/ShinobiGami_DXST.txt | 12 - src/assets/extratables/ShinobiGami_HC.txt | 12 - src/assets/extratables/ShinobiGami_HK.txt | 12 - src/assets/extratables/ShinobiGami_HLST.txt | 12 - src/assets/extratables/ShinobiGami_HM.txt | 12 - src/assets/extratables/ShinobiGami_HO.txt | 12 - src/assets/extratables/ShinobiGami_HR.txt | 12 - src/assets/extratables/ShinobiGami_HS.txt | 7 - src/assets/extratables/ShinobiGami_HT.txt | 12 - src/assets/extratables/ShinobiGami_HY.txt | 12 - src/assets/extratables/ShinobiGami_NTST.txt | 12 - src/assets/extratables/ShinobiGami_OTKRT.txt | 31 - src/assets/extratables/ShinobiGami_PLST.txt | 7 - src/src_bcdice/CardTrader.rb | 1544 - src/src_bcdice/CountHolder.rb | 450 - src/src_bcdice/TableFileData.rb | 413 - src/src_bcdice/bcdice.rb | 47 - src/src_bcdice/bcdiceCore.rb | 1227 - src/src_bcdice/c.bat | 9 - src/src_bcdice/cgiDiceBot.rb | 180 - src/src_bcdice/configBcDice.rb | 13 - src/src_bcdice/dice/AddDice.rb | 53 - src/src_bcdice/dice/RerollDice.rb | 234 - src/src_bcdice/dice/UpperDice.rb | 168 - src/src_bcdice/dice/add_dice/node.rb | 456 - src/src_bcdice/dice/add_dice/parser.rb | 253 - src/src_bcdice/dice/add_dice/randomizer.rb | 92 - src/src_bcdice/diceBot/AFF2e.rb | 135 - src/src_bcdice/diceBot/AceKillerGene.rb | 52 - src/src_bcdice/diceBot/Airgetlamh.rb | 114 - src/src_bcdice/diceBot/Alsetto.rb | 121 - src/src_bcdice/diceBot/Alshard.rb | 22 - src/src_bcdice/diceBot/AlterRaise.rb | 278 - src/src_bcdice/diceBot/Amadeus.rb | 614 - src/src_bcdice/diceBot/Amadeus_Korean.rb | 493 - src/src_bcdice/diceBot/AnimaAnimus.rb | 95 - src/src_bcdice/diceBot/Arianrhod.rb | 46 - src/src_bcdice/diceBot/ArsMagica.rb | 142 - src/src_bcdice/diceBot/Avandner.rb | 98 - src/src_bcdice/diceBot/BBN.rb | 138 - src/src_bcdice/diceBot/BadLife.rb | 435 - src/src_bcdice/diceBot/BarnaKronika.rb | 205 - src/src_bcdice/diceBot/BattleTech.rb | 527 - src/src_bcdice/diceBot/BeastBindTrinity.rb | 345 - src/src_bcdice/diceBot/BeginningIdol.rb | 2522 -- .../diceBot/BeginningIdol_Korean.rb | 2372 -- src/src_bcdice/diceBot/BladeOfArcana.rb | 246 - src/src_bcdice/diceBot/BlindMythos.rb | 468 - src/src_bcdice/diceBot/BloodCrusade.rb | 553 - src/src_bcdice/diceBot/BloodMoon.rb | 450 - src/src_bcdice/diceBot/CardRanker.rb | 257 - src/src_bcdice/diceBot/ChaosFlare.rb | 188 - src/src_bcdice/diceBot/Chill.rb | 159 - src/src_bcdice/diceBot/Chill3.rb | 49 - src/src_bcdice/diceBot/CodeLayerd.rb | 138 - src/src_bcdice/diceBot/ColossalHunter.rb | 558 - src/src_bcdice/diceBot/CrashWorld.rb | 78 - src/src_bcdice/diceBot/Cthulhu.rb | 236 - src/src_bcdice/diceBot/Cthulhu7th.rb | 766 - .../diceBot/Cthulhu7th_ChineseTraditional.rb | 386 - src/src_bcdice/diceBot/Cthulhu7th_Korean.rb | 383 - src/src_bcdice/diceBot/CthulhuTech.rb | 264 - .../diceBot/Cthulhu_ChineseTraditional.rb | 240 - src/src_bcdice/diceBot/Cthulhu_Korean.rb | 238 - src/src_bcdice/diceBot/DarkBlaze.rb | 216 - src/src_bcdice/diceBot/DarkDaysDrive.rb | 504 - src/src_bcdice/diceBot/DarkSouls.rb | 85 - src/src_bcdice/diceBot/DeadlineHeroes.rb | 580 - src/src_bcdice/diceBot/DemonParasite.rb | 520 - src/src_bcdice/diceBot/DetatokoSaga.rb | 313 - src/src_bcdice/diceBot/DetatokoSaga_Korean.rb | 313 - src/src_bcdice/diceBot/DiceBot.rb | 584 - src/src_bcdice/diceBot/DiceBotLoader.rb | 246 - src/src_bcdice/diceBot/DiceBotLoaderList.rb | 155 - src/src_bcdice/diceBot/DiceOfTheDead.rb | 112 - src/src_bcdice/diceBot/DoubleCross.rb | 374 - src/src_bcdice/diceBot/DoubleCross_Korean.rb | 372 - src/src_bcdice/diceBot/Dracurouge.rb | 1848 - src/src_bcdice/diceBot/Dracurouge_Korean.rb | 312 - src/src_bcdice/diceBot/DungeonsAndDragons.rb | 16 - src/src_bcdice/diceBot/EarthDawn.rb | 222 - src/src_bcdice/diceBot/EarthDawn3.rb | 273 - src/src_bcdice/diceBot/EarthDawn4.rb | 271 - src/src_bcdice/diceBot/EclipsePhase.rb | 48 - src/src_bcdice/diceBot/Elric.rb | 33 - src/src_bcdice/diceBot/Elysion.rb | 1229 - src/src_bcdice/diceBot/EmbryoMachine.rb | 222 - src/src_bcdice/diceBot/EndBreaker.rb | 130 - src/src_bcdice/diceBot/EtrianOdysseySRS.rb | 22 - src/src_bcdice/diceBot/Fiasco.rb | 113 - src/src_bcdice/diceBot/Fiasco_Korean.rb | 112 - src/src_bcdice/diceBot/FilledWith.rb | 1542 - src/src_bcdice/diceBot/FullMetalPanic.rb | 22 - src/src_bcdice/diceBot/FutariSousa.rb | 1004 - src/src_bcdice/diceBot/FutariSousa_Korean.rb | 1004 - src/src_bcdice/diceBot/Garako.rb | 556 - src/src_bcdice/diceBot/GardenOrder.rb | 450 - src/src_bcdice/diceBot/GehennaAn.rb | 128 - .../diceBot/GeishaGirlwithKatana.rb | 119 - src/src_bcdice/diceBot/GoblinSlayer.rb | 150 - src/src_bcdice/diceBot/GoldenSkyStories.rb | 76 - src/src_bcdice/diceBot/Gorilla.rb | 41 - src/src_bcdice/diceBot/GranCrest.rb | 514 - src/src_bcdice/diceBot/Gundog.rb | 48 - src/src_bcdice/diceBot/GundogRevised.rb | 296 - src/src_bcdice/diceBot/GundogZero.rb | 259 - src/src_bcdice/diceBot/Gurps.rb | 399 - src/src_bcdice/diceBot/GurpsFW.rb | 2345 -- src/src_bcdice/diceBot/HarnMaster.rb | 200 - src/src_bcdice/diceBot/HatsuneMiku.rb | 772 - src/src_bcdice/diceBot/Hieizan.rb | 45 - src/src_bcdice/diceBot/HouraiGakuen.rb | 257 - src/src_bcdice/diceBot/HuntersMoon.rb | 648 - src/src_bcdice/diceBot/Illusio.rb | 86 - src/src_bcdice/diceBot/InfiniteFantasia.rb | 48 - src/src_bcdice/diceBot/Insane.rb | 816 - src/src_bcdice/diceBot/Insane_Korean.rb | 768 - src/src_bcdice/diceBot/IthaWenUa.rb | 35 - src/src_bcdice/diceBot/JamesBond.rb | 42 - src/src_bcdice/diceBot/Kamigakari.rb | 396 - src/src_bcdice/diceBot/Kamigakari_Korean.rb | 429 - src/src_bcdice/diceBot/KanColle.rb | 935 - src/src_bcdice/diceBot/KemonoNoMori.rb | 255 - src/src_bcdice/diceBot/KillDeathBusiness.rb | 1421 - .../diceBot/KillDeathBusiness_Korean.rb | 1504 - src/src_bcdice/diceBot/KurayamiCrying.rb | 57 - src/src_bcdice/diceBot/LiveraDoll.rb | 375 - src/src_bcdice/diceBot/LogHorizon.rb | 3552 -- src/src_bcdice/diceBot/LogHorizon_Korean.rb | 1393 - src/src_bcdice/diceBot/LostRecord.rb | 26 - src/src_bcdice/diceBot/LostRoyal.rb | 238 - src/src_bcdice/diceBot/MagicaLogia.rb | 1143 - src/src_bcdice/diceBot/MeikyuDays.rb | 511 - src/src_bcdice/diceBot/MeikyuKingdom.rb | 2260 -- src/src_bcdice/diceBot/MeikyuKingdomBasic.rb | 2394 -- src/src_bcdice/diceBot/MetalHead.rb | 246 - src/src_bcdice/diceBot/MetalHeadExtream.rb | 914 - src/src_bcdice/diceBot/MetallicGuardian.rb | 26 - src/src_bcdice/diceBot/MonotoneMuseum.rb | 348 - .../diceBot/MonotoneMuseum_Korean.rb | 299 - src/src_bcdice/diceBot/Nechronica.rb | 210 - src/src_bcdice/diceBot/Nechronica_Korean.rb | 163 - src/src_bcdice/diceBot/NeverCloud.rb | 70 - src/src_bcdice/diceBot/NightWizard.rb | 227 - src/src_bcdice/diceBot/NightWizard3rd.rb | 21 - src/src_bcdice/diceBot/NightmareHunterDeep.rb | 90 - src/src_bcdice/diceBot/NinjaSlayer.rb | 275 - src/src_bcdice/diceBot/NjslyrBattle.rb | 51 - src/src_bcdice/diceBot/Nuekagami.rb | 290 - src/src_bcdice/diceBot/OneWayHeroics.rb | 977 - src/src_bcdice/diceBot/OracleEngine.rb | 270 - src/src_bcdice/diceBot/OrgaRain.rb | 73 - src/src_bcdice/diceBot/Oukahoushin3rd.rb | 156 - src/src_bcdice/diceBot/Paradiso.rb | 320 - src/src_bcdice/diceBot/Paranoia.rb | 62 - src/src_bcdice/diceBot/ParanoiaRebooted.rb | 107 - src/src_bcdice/diceBot/ParasiteBlood.rb | 230 - src/src_bcdice/diceBot/Pathfinder.rb | 18 - src/src_bcdice/diceBot/Peekaboo.rb | 351 - src/src_bcdice/diceBot/Pendragon.rb | 36 - src/src_bcdice/diceBot/PhantasmAdventure.rb | 80 - src/src_bcdice/diceBot/Postman.rb | 177 - src/src_bcdice/diceBot/PulpCthulhu.rb | 181 - src/src_bcdice/diceBot/Raisondetre.rb | 166 - src/src_bcdice/diceBot/RecordOfLodossWar.rb | 56 - src/src_bcdice/diceBot/RecordOfSteam.rb | 147 - src/src_bcdice/diceBot/RokumonSekai2.rb | 118 - src/src_bcdice/diceBot/RoleMaster.rb | 22 - src/src_bcdice/diceBot/RuneQuest.rb | 44 - src/src_bcdice/diceBot/RyuTuber.rb | 264 - src/src_bcdice/diceBot/Ryutama.rb | 198 - src/src_bcdice/diceBot/SRS.rb | 345 - src/src_bcdice/diceBot/SamsaraBallad.rb | 108 - src/src_bcdice/diceBot/Satasupe.rb | 1171 - src/src_bcdice/diceBot/ScreamHighSchool.rb | 125 - src/src_bcdice/diceBot/SevenFortressMobius.rb | 31 - src/src_bcdice/diceBot/ShadowRun.rb | 23 - src/src_bcdice/diceBot/ShadowRun4.rb | 47 - src/src_bcdice/diceBot/ShadowRun5.rb | 81 - src/src_bcdice/diceBot/SharedFantasia.rb | 73 - .../diceBot/ShinMegamiTenseiKakuseihen.rb | 82 - src/src_bcdice/diceBot/ShinkuuGakuen.rb | 527 - src/src_bcdice/diceBot/ShinobiGami.rb | 676 - src/src_bcdice/diceBot/ShoujoTenrankai.rb | 674 - src/src_bcdice/diceBot/Skynauts.rb | 320 - src/src_bcdice/diceBot/SteamPunkers.rb | 483 - src/src_bcdice/diceBot/StellarKnights.rb | 915 - src/src_bcdice/diceBot/SterileLife.rb | 449 - src/src_bcdice/diceBot/StrangerOfSwordCity.rb | 101 - src/src_bcdice/diceBot/StratoShout.rb | 313 - src/src_bcdice/diceBot/StratoShout_Korean.rb | 311 - src/src_bcdice/diceBot/Strave.rb | 220 - src/src_bcdice/diceBot/SwordWorld.rb | 490 - src/src_bcdice/diceBot/SwordWorld2_0.rb | 307 - src/src_bcdice/diceBot/SwordWorld2_5.rb | 118 - src/src_bcdice/diceBot/TherapieSein.rb | 88 - src/src_bcdice/diceBot/TokumeiTenkousei.rb | 48 - src/src_bcdice/diceBot/TokyoGhostResearch.rb | 119 - src/src_bcdice/diceBot/TokyoNova.rb | 16 - src/src_bcdice/diceBot/Torg.rb | 368 - src/src_bcdice/diceBot/Torg1_5.rb | 136 - src/src_bcdice/diceBot/TorgEternity.rb | 410 - src/src_bcdice/diceBot/TrinitySeven.rb | 361 - src/src_bcdice/diceBot/TunnelsAndTrolls.rb | 256 - src/src_bcdice/diceBot/TwilightGunsmoke.rb | 521 - src/src_bcdice/diceBot/Utakaze.rb | 158 - .../diceBot/VampireTheMasquerade5th.rb | 138 - src/src_bcdice/diceBot/Villaciel.rb | 554 - src/src_bcdice/diceBot/WARPS.rb | 30 - src/src_bcdice/diceBot/WaresBlade.rb | 31 - src/src_bcdice/diceBot/Warhammer.rb | 335 - src/src_bcdice/diceBot/WitchQuest.rb | 273 - src/src_bcdice/diceBot/WorldOfDarkness.rb | 134 - src/src_bcdice/diceBot/YankeeYogSothoth.rb | 479 - src/src_bcdice/diceBot/YearZeroEngine.rb | 139 - src/src_bcdice/diceBot/ZettaiReido.rb | 139 - src/src_bcdice/diceBot/_Template.rb | 84 - src/src_bcdice/log.rb | 31 - src/src_bcdice/test.node.js | 89 - src/src_bcdice/test.rb | 60 - src/src_bcdice/test/.gitignore | 2 - src/src_bcdice/test/DiceBotTest.rb | 205 - src/src_bcdice/test/DiceBotTestData.rb | 50 - src/src_bcdice/test/add_dice_parser_test.rb | 184 - src/src_bcdice/test/data/AFF2e.txt | 113 - src/src_bcdice/test/data/AceKillerGene.txt | 216 - src/src_bcdice/test/data/Airgetlamh.txt | 174 - src/src_bcdice/test/data/Alsetto.txt | 150 - src/src_bcdice/test/data/Alshard.txt | 89 - src/src_bcdice/test/data/AlterRaise.txt | 141 - src/src_bcdice/test/data/Amadeus.txt | 516 - src/src_bcdice/test/data/Amadeus_Korean.txt | 264 - src/src_bcdice/test/data/AnimaAnimus.txt | 139 - src/src_bcdice/test/data/Arianrhod.txt | 161 - src/src_bcdice/test/data/ArsMagica.txt | 227 - src/src_bcdice/test/data/Avandner.txt | 120 - src/src_bcdice/test/data/BBN.txt | 174 - src/src_bcdice/test/data/BadLife.txt | 468 - src/src_bcdice/test/data/BarnaKronika.txt | 719 - src/src_bcdice/test/data/BattleTech.txt | 196 - src/src_bcdice/test/data/BeastBindTrinity.txt | 270 - src/src_bcdice/test/data/BeginningIdol.txt | 1296 - .../test/data/BeginningIdol_Korean.txt | 1268 - src/src_bcdice/test/data/BladeOfArcana.txt | 209 - src/src_bcdice/test/data/BlindMythos.txt | 274 - src/src_bcdice/test/data/BloodCrusade.txt | 261 - src/src_bcdice/test/data/BloodMoon.txt | 221 - src/src_bcdice/test/data/CardRanker.txt | 242 - src/src_bcdice/test/data/ChaosFlare.txt | 336 - src/src_bcdice/test/data/Chill.txt | 1373 - src/src_bcdice/test/data/Chill3.txt | 101 - src/src_bcdice/test/data/CodeLayerd.txt | 125 - src/src_bcdice/test/data/ColossalHunter.txt | 426 - src/src_bcdice/test/data/CrashWorld.txt | 65 - src/src_bcdice/test/data/Cthulhu.txt | 1176 - src/src_bcdice/test/data/Cthulhu7th.txt | 1055 - .../test/data/Cthulhu7th_Korean.txt | 535 - src/src_bcdice/test/data/CthulhuTech.txt | 407 - src/src_bcdice/test/data/Cthulhu_Korean.txt | 1152 - src/src_bcdice/test/data/DarkBlaze.txt | 605 - src/src_bcdice/test/data/DarkDaysDrive.txt | 299 - src/src_bcdice/test/data/DarkSouls.txt | 120 - src/src_bcdice/test/data/DeadlineHeroes.txt | 756 - src/src_bcdice/test/data/DemonParasite.txt | 857 - src/src_bcdice/test/data/DetatokoSaga.txt | 203 - .../test/data/DetatokoSaga_Korean.txt | 203 - src/src_bcdice/test/data/DiceOfTheDead.txt | 71 - src/src_bcdice/test/data/DoubleCross.txt | 700 - .../test/data/DoubleCross_Korean.txt | 700 - src/src_bcdice/test/data/Dracurouge.txt | 1469 - .../test/data/Dracurouge_Korean.txt | 222 - .../test/data/DungeonsAndDragons.txt | 47 - src/src_bcdice/test/data/EarthDawn.txt | 431 - src/src_bcdice/test/data/EarthDawn3.txt | 209 - src/src_bcdice/test/data/EarthDawn4.txt | 210 - src/src_bcdice/test/data/EclipsePhase.txt | 83 - src/src_bcdice/test/data/Elric.txt | 185 - src/src_bcdice/test/data/Elysion.txt | 548 - src/src_bcdice/test/data/EmbryoMachine.txt | 1265 - src/src_bcdice/test/data/EndBreaker.txt | 47 - src/src_bcdice/test/data/EtrianOdysseySRS.txt | 155 - src/src_bcdice/test/data/Fiasco.txt | 119 - src/src_bcdice/test/data/Fiasco_Korean.txt | 119 - src/src_bcdice/test/data/FilledWith.txt | 156 - src/src_bcdice/test/data/FullMetalPanic.txt | 173 - src/src_bcdice/test/data/FutariSousa.txt | 369 - .../test/data/FutariSousa_Korean.txt | 369 - src/src_bcdice/test/data/Garako.txt | 226 - src/src_bcdice/test/data/GardenOrder.txt | 216 - src/src_bcdice/test/data/GehennaAn.txt | 113 - .../test/data/GeishaGirlwithKatana.txt | 131 - src/src_bcdice/test/data/GoblinSlayer.txt | 293 - src/src_bcdice/test/data/GoldenSkyStories.txt | 35 - src/src_bcdice/test/data/Gorilla.txt | 107 - src/src_bcdice/test/data/GranCrest.txt | 199 - src/src_bcdice/test/data/Gundog.txt | 185 - src/src_bcdice/test/data/GundogRevised.txt | 191 - src/src_bcdice/test/data/GundogZero.txt | 1679 - src/src_bcdice/test/data/Gurps.txt | 191 - src/src_bcdice/test/data/GurpsFW.txt | 223 - src/src_bcdice/test/data/HarnMaster.txt | 107 - src/src_bcdice/test/data/HatsuneMiku.txt | 354 - src/src_bcdice/test/data/Hieizan.txt | 185 - src/src_bcdice/test/data/HouraiGakuen.txt | 314 - src/src_bcdice/test/data/HuntersMoon.txt | 1317 - src/src_bcdice/test/data/Illusio.txt | 54 - src/src_bcdice/test/data/InfiniteFantasia.txt | 185 - src/src_bcdice/test/data/Insane.txt | 371 - src/src_bcdice/test/data/Insane_Korean.txt | 348 - src/src_bcdice/test/data/IthaWenUa.txt | 41 - src/src_bcdice/test/data/JamesBond.txt | 101 - src/src_bcdice/test/data/Kamigakari.txt | 139 - .../test/data/Kamigakari_Korean.txt | 139 - src/src_bcdice/test/data/KanColle.txt | 432 - src/src_bcdice/test/data/KemonoNoMori.txt | 372 - .../test/data/KillDeathBusiness.txt | 809 - .../test/data/KillDeathBusiness_Korean.txt | 799 - src/src_bcdice/test/data/KurayamiCrying.txt | 18 - src/src_bcdice/test/data/LiveraDoll.txt | 150 - src/src_bcdice/test/data/LogHorizon.txt | 2461 -- .../test/data/LogHorizon_Korean.txt | 799 - src/src_bcdice/test/data/LostRecord.txt | 11 - src/src_bcdice/test/data/LostRoyal.txt | 306 - src/src_bcdice/test/data/MagicaLogia.txt | 1272 - src/src_bcdice/test/data/MeikyuDays.txt | 1505 - src/src_bcdice/test/data/MeikyuKingdom.txt | 3799 -- .../test/data/MeikyuKingdomBasic.txt | 1109 - src/src_bcdice/test/data/MetalHead.txt | 239 - src/src_bcdice/test/data/MetalHeadExtream.txt | 636 - src/src_bcdice/test/data/MetallicGuardian.txt | 89 - src/src_bcdice/test/data/Misonzai.txt | 5 - src/src_bcdice/test/data/MonotoneMuseum.txt | 188 - .../test/data/MonotoneMuseum_Korean.txt | 94 - src/src_bcdice/test/data/Nechronica.txt | 941 - .../test/data/Nechronica_Korean.txt | 905 - src/src_bcdice/test/data/NeverCloud.txt | 659 - src/src_bcdice/test/data/NightWizard.txt | 612 - src/src_bcdice/test/data/NightWizard3rd.txt | 17 - .../test/data/NightmareHunterDeep.txt | 305 - src/src_bcdice/test/data/NinjaSlayer.txt | 305 - src/src_bcdice/test/data/NjslyrBattle.txt | 53 - src/src_bcdice/test/data/None.txt | 1106 - src/src_bcdice/test/data/Nuekagami.txt | 60 - src/src_bcdice/test/data/OneWayHeroics.txt | 501 - src/src_bcdice/test/data/OracleEngine.txt | 696 - src/src_bcdice/test/data/OrgaRain.txt | 42 - src/src_bcdice/test/data/Oukahoushin3rd.txt | 89 - src/src_bcdice/test/data/Paradiso.txt | 85 - src/src_bcdice/test/data/Paranoia.txt | 53 - src/src_bcdice/test/data/ParanoiaRebooted.txt | 78 - src/src_bcdice/test/data/ParasiteBlood.txt | 899 - src/src_bcdice/test/data/Pathfinder.txt | 47 - src/src_bcdice/test/data/Peekaboo.txt | 629 - src/src_bcdice/test/data/Pendragon.txt | 185 - .../test/data/PhantasmAdventure.txt | 185 - src/src_bcdice/test/data/PlotTest.txt | 15 - src/src_bcdice/test/data/Postman.txt | 186 - src/src_bcdice/test/data/PulpCthulhu.txt | 135 - src/src_bcdice/test/data/Raisondetre.txt | 150 - .../test/data/RecordOfLodossWar.txt | 54 - src/src_bcdice/test/data/RecordOfSteam.txt | 47 - src/src_bcdice/test/data/RokumonSekai2.txt | 299 - src/src_bcdice/test/data/RoleMaster.txt | 719 - src/src_bcdice/test/data/RuneQuest.txt | 257 - src/src_bcdice/test/data/RyuTuber.txt | 144 - src/src_bcdice/test/data/Ryutama.txt | 274 - src/src_bcdice/test/data/SRS.txt | 257 - src/src_bcdice/test/data/SamsaraBallad.txt | 329 - src/src_bcdice/test/data/Satasupe.txt | 2093 -- src/src_bcdice/test/data/ScreamHighSchool.txt | 354 - .../test/data/SevenFortressMobius.txt | 23 - src/src_bcdice/test/data/ShadowRun.txt | 173 - src/src_bcdice/test/data/ShadowRun4.txt | 215 - src/src_bcdice/test/data/ShadowRun5.txt | 275 - src/src_bcdice/test/data/SharedFantasia.txt | 94 - .../test/data/ShinMegamiTenseiKakuseihen.txt | 71 - src/src_bcdice/test/data/ShinkuuGakuen.txt | 269 - src/src_bcdice/test/data/ShinobiGami.txt | 1338 - src/src_bcdice/test/data/ShoujoTenrankai.txt | 432 - src/src_bcdice/test/data/Skynauts.txt | 302 - src/src_bcdice/test/data/SteamPunkers.txt | 408 - src/src_bcdice/test/data/StellarKnights.txt | 577 - src/src_bcdice/test/data/SterileLife.txt | 54 - .../test/data/StrangerOfSwordCity.txt | 198 - src/src_bcdice/test/data/StratoShout.txt | 119 - .../test/data/StratoShout_Korean.txt | 119 - src/src_bcdice/test/data/Strave.txt | 72 - src/src_bcdice/test/data/SwordWorld.txt | 1487 - src/src_bcdice/test/data/SwordWorld2_0.txt | 371 - src/src_bcdice/test/data/SwordWorld2_5.txt | 371 - src/src_bcdice/test/data/TestDummy.txt | 5 - src/src_bcdice/test/data/TherapieSein.txt | 72 - src/src_bcdice/test/data/TokumeiTenkousei.txt | 185 - .../test/data/TokyoGhostResearch.txt | 166 - src/src_bcdice/test/data/TokyoNova.txt | 47 - src/src_bcdice/test/data/Torg.txt | 695 - src/src_bcdice/test/data/Torg1_5.txt | 95 - src/src_bcdice/test/data/TorgEternity.txt | 588 - src/src_bcdice/test/data/TrinitySeven.txt | 349 - src/src_bcdice/test/data/TunnelsAndTrolls.txt | 839 - src/src_bcdice/test/data/TwilightGunsmoke.txt | 185 - src/src_bcdice/test/data/UpperDice.txt | 102 - src/src_bcdice/test/data/Utakaze.txt | 233 - .../test/data/VampireTheMasquerade5th.txt | 287 - src/src_bcdice/test/data/Villaciel.txt | 302 - src/src_bcdice/test/data/WARPS.txt | 185 - src/src_bcdice/test/data/WaresBlade.txt | 77 - src/src_bcdice/test/data/Warhammer.txt | 1445 - src/src_bcdice/test/data/WitchQuest.txt | 46 - src/src_bcdice/test/data/WorldOfDarkness.txt | 329 - src/src_bcdice/test/data/YankeeYogSothoth.txt | 299 - src/src_bcdice/test/data/YearZeroEngine.txt | 422 - src/src_bcdice/test/data/ZettaiReido.txt | 89 - src/src_bcdice/test/data/dummyBot.txt | 113 - src/src_bcdice/test/data/test.rb | 1 - src/src_bcdice/test/others/README.txt | 3 - src/src_bcdice/test/others/testCard.rb | 484 - src/src_bcdice/test/others/testPointer.rb | 125 - src/src_bcdice/test/others/testSecretDice.rb | 81 - src/src_bcdice/test/range_table_test.rb | 156 - src/src_bcdice/test/setup.rb | 19 - src/src_bcdice/test/testDiceBotLoaders.rb | 861 - .../test/testDiceBotPrefixesCompatibility.rb | 38 - src/src_bcdice/test/testDiceBots.rb | 7 - src/src_bcdice/test/test_command_parser.rb | 150 - src/src_bcdice/test/test_d66_table.rb | 147 - src/src_bcdice/test/test_data_encoding.rb | 23 - .../test/test_detailed_rand_results.rb | 99 - .../test/test_dicebot_info_is_defined.rb | 61 - src/src_bcdice/test/test_srs_help_messages.rb | 89 - src/src_bcdice/utils/ArithmeticEvaluator.rb | 132 - src/src_bcdice/utils/command_parser.rb | 159 - src/src_bcdice/utils/d66_grid_table.rb | 23 - src/src_bcdice/utils/d66_range_table.rb | 24 - src/src_bcdice/utils/d66_table.rb | 31 - src/src_bcdice/utils/format.rb | 32 - src/src_bcdice/utils/modifier_formatter.rb | 24 - src/src_bcdice/utils/normalize.rb | 36 - src/src_bcdice/utils/range_table.rb | 266 - src/src_bcdice/utils/table.rb | 30 - 721 files changed, 251859 deletions(-) delete mode 100644 src/assets/cgiDiceBot.js delete mode 100644 src/assets/dicebot/AFF2e.js delete mode 100644 src/assets/dicebot/AceKillerGene.js delete mode 100644 src/assets/dicebot/Airgetlamh.js delete mode 100644 src/assets/dicebot/Alsetto.js delete mode 100644 src/assets/dicebot/Alshard.js delete mode 100644 src/assets/dicebot/AlterRaise.js delete mode 100644 src/assets/dicebot/Amadeus.js delete mode 100644 src/assets/dicebot/Amadeus_Korean.js delete mode 100644 src/assets/dicebot/AnimaAnimus.js delete mode 100644 src/assets/dicebot/Arianrhod.js delete mode 100644 src/assets/dicebot/ArsMagica.js delete mode 100644 src/assets/dicebot/Avandner.js delete mode 100644 src/assets/dicebot/BBN.js delete mode 100644 src/assets/dicebot/BadLife.js delete mode 100644 src/assets/dicebot/BarnaKronika.js delete mode 100644 src/assets/dicebot/BattleTech.js delete mode 100644 src/assets/dicebot/BeastBindTrinity.js delete mode 100644 src/assets/dicebot/BeginningIdol.js delete mode 100644 src/assets/dicebot/BeginningIdol_Korean.js delete mode 100644 src/assets/dicebot/BladeOfArcana.js delete mode 100644 src/assets/dicebot/BlindMythos.js delete mode 100644 src/assets/dicebot/BloodCrusade.js delete mode 100644 src/assets/dicebot/BloodMoon.js delete mode 100644 src/assets/dicebot/CardRanker.js delete mode 100644 src/assets/dicebot/ChaosFlare.js delete mode 100644 src/assets/dicebot/Chill.js delete mode 100644 src/assets/dicebot/Chill3.js delete mode 100644 src/assets/dicebot/CodeLayerd.js delete mode 100644 src/assets/dicebot/ColossalHunter.js delete mode 100644 src/assets/dicebot/CrashWorld.js delete mode 100644 src/assets/dicebot/Cthulhu.js delete mode 100644 src/assets/dicebot/Cthulhu7th.js delete mode 100644 src/assets/dicebot/Cthulhu7th_ChineseTraditional.js delete mode 100644 src/assets/dicebot/Cthulhu7th_Korean.js delete mode 100644 src/assets/dicebot/CthulhuTech.js delete mode 100644 src/assets/dicebot/Cthulhu_ChineseTraditional.js delete mode 100644 src/assets/dicebot/Cthulhu_Korean.js delete mode 100644 src/assets/dicebot/DarkBlaze.js delete mode 100644 src/assets/dicebot/DarkDaysDrive.js delete mode 100644 src/assets/dicebot/DarkSouls.js delete mode 100644 src/assets/dicebot/DeadlineHeroes.js delete mode 100644 src/assets/dicebot/DemonParasite.js delete mode 100644 src/assets/dicebot/DetatokoSaga.js delete mode 100644 src/assets/dicebot/DetatokoSaga_Korean.js delete mode 100644 src/assets/dicebot/DiceBot.js delete mode 100644 src/assets/dicebot/DiceOfTheDead.js delete mode 100644 src/assets/dicebot/DoubleCross.js delete mode 100644 src/assets/dicebot/DoubleCross_Korean.js delete mode 100644 src/assets/dicebot/Dracurouge.js delete mode 100644 src/assets/dicebot/Dracurouge_Korean.js delete mode 100644 src/assets/dicebot/DungeonsAndDragons.js delete mode 100644 src/assets/dicebot/EarthDawn.js delete mode 100644 src/assets/dicebot/EarthDawn3.js delete mode 100644 src/assets/dicebot/EarthDawn4.js delete mode 100644 src/assets/dicebot/EclipsePhase.js delete mode 100644 src/assets/dicebot/Elric.js delete mode 100644 src/assets/dicebot/Elysion.js delete mode 100644 src/assets/dicebot/EmbryoMachine.js delete mode 100644 src/assets/dicebot/EndBreaker.js delete mode 100644 src/assets/dicebot/EtrianOdysseySRS.js delete mode 100644 src/assets/dicebot/Fiasco.js delete mode 100644 src/assets/dicebot/Fiasco_Korean.js delete mode 100644 src/assets/dicebot/FilledWith.js delete mode 100644 src/assets/dicebot/FullMetalPanic.js delete mode 100644 src/assets/dicebot/FutariSousa.js delete mode 100644 src/assets/dicebot/FutariSousa_Korean.js delete mode 100644 src/assets/dicebot/Garako.js delete mode 100644 src/assets/dicebot/GardenOrder.js delete mode 100644 src/assets/dicebot/GehennaAn.js delete mode 100644 src/assets/dicebot/GeishaGirlwithKatana.js delete mode 100644 src/assets/dicebot/GoblinSlayer.js delete mode 100644 src/assets/dicebot/GoldenSkyStories.js delete mode 100644 src/assets/dicebot/Gorilla.js delete mode 100644 src/assets/dicebot/GranCrest.js delete mode 100644 src/assets/dicebot/Gundog.js delete mode 100644 src/assets/dicebot/GundogRevised.js delete mode 100644 src/assets/dicebot/GundogZero.js delete mode 100644 src/assets/dicebot/Gurps.js delete mode 100644 src/assets/dicebot/GurpsFW.js delete mode 100644 src/assets/dicebot/HarnMaster.js delete mode 100644 src/assets/dicebot/HatsuneMiku.js delete mode 100644 src/assets/dicebot/Hieizan.js delete mode 100644 src/assets/dicebot/HouraiGakuen.js delete mode 100644 src/assets/dicebot/HuntersMoon.js delete mode 100644 src/assets/dicebot/Illusio.js delete mode 100644 src/assets/dicebot/InfiniteFantasia.js delete mode 100644 src/assets/dicebot/Insane.js delete mode 100644 src/assets/dicebot/Insane_Korean.js delete mode 100644 src/assets/dicebot/IthaWenUa.js delete mode 100644 src/assets/dicebot/JamesBond.js delete mode 100644 src/assets/dicebot/Kamigakari.js delete mode 100644 src/assets/dicebot/Kamigakari_Korean.js delete mode 100644 src/assets/dicebot/KanColle.js delete mode 100644 src/assets/dicebot/KemonoNoMori.js delete mode 100644 src/assets/dicebot/KillDeathBusiness.js delete mode 100644 src/assets/dicebot/KillDeathBusiness_Korean.js delete mode 100644 src/assets/dicebot/KurayamiCrying.js delete mode 100644 src/assets/dicebot/LiveraDoll.js delete mode 100644 src/assets/dicebot/LogHorizon.js delete mode 100644 src/assets/dicebot/LogHorizon_Korean.js delete mode 100644 src/assets/dicebot/LostRecord.js delete mode 100644 src/assets/dicebot/LostRoyal.js delete mode 100644 src/assets/dicebot/MagicaLogia.js delete mode 100644 src/assets/dicebot/MeikyuDays.js delete mode 100644 src/assets/dicebot/MeikyuKingdom.js delete mode 100644 src/assets/dicebot/MeikyuKingdomBasic.js delete mode 100644 src/assets/dicebot/MetalHead.js delete mode 100644 src/assets/dicebot/MetalHeadExtream.js delete mode 100644 src/assets/dicebot/MetallicGuardian.js delete mode 100644 src/assets/dicebot/MonotoneMuseum.js delete mode 100644 src/assets/dicebot/MonotoneMuseum_Korean.js delete mode 100644 src/assets/dicebot/Nechronica.js delete mode 100644 src/assets/dicebot/Nechronica_Korean.js delete mode 100644 src/assets/dicebot/NeverCloud.js delete mode 100644 src/assets/dicebot/NightWizard.js delete mode 100644 src/assets/dicebot/NightWizard3rd.js delete mode 100644 src/assets/dicebot/NightmareHunterDeep.js delete mode 100644 src/assets/dicebot/NinjaSlayer.js delete mode 100644 src/assets/dicebot/NjslyrBattle.js delete mode 100644 src/assets/dicebot/Nuekagami.js delete mode 100644 src/assets/dicebot/OneWayHeroics.js delete mode 100644 src/assets/dicebot/OracleEngine.js delete mode 100644 src/assets/dicebot/OrgaRain.js delete mode 100644 src/assets/dicebot/Oukahoushin3rd.js delete mode 100644 src/assets/dicebot/Paradiso.js delete mode 100644 src/assets/dicebot/Paranoia.js delete mode 100644 src/assets/dicebot/ParanoiaRebooted.js delete mode 100644 src/assets/dicebot/ParasiteBlood.js delete mode 100644 src/assets/dicebot/Pathfinder.js delete mode 100644 src/assets/dicebot/Peekaboo.js delete mode 100644 src/assets/dicebot/Pendragon.js delete mode 100644 src/assets/dicebot/PhantasmAdventure.js delete mode 100644 src/assets/dicebot/Postman.js delete mode 100644 src/assets/dicebot/PulpCthulhu.js delete mode 100644 src/assets/dicebot/Raisondetre.js delete mode 100644 src/assets/dicebot/RecordOfLodossWar.js delete mode 100644 src/assets/dicebot/RecordOfSteam.js delete mode 100644 src/assets/dicebot/RokumonSekai2.js delete mode 100644 src/assets/dicebot/RoleMaster.js delete mode 100644 src/assets/dicebot/RuneQuest.js delete mode 100644 src/assets/dicebot/RyuTuber.js delete mode 100644 src/assets/dicebot/Ryutama.js delete mode 100644 src/assets/dicebot/SRS.js delete mode 100644 src/assets/dicebot/SamsaraBallad.js delete mode 100644 src/assets/dicebot/Satasupe.js delete mode 100644 src/assets/dicebot/ScreamHighSchool.js delete mode 100644 src/assets/dicebot/SevenFortressMobius.js delete mode 100644 src/assets/dicebot/ShadowRun.js delete mode 100644 src/assets/dicebot/ShadowRun4.js delete mode 100644 src/assets/dicebot/ShadowRun5.js delete mode 100644 src/assets/dicebot/SharedFantasia.js delete mode 100644 src/assets/dicebot/ShinMegamiTenseiKakuseihen.js delete mode 100644 src/assets/dicebot/ShinkuuGakuen.js delete mode 100644 src/assets/dicebot/ShinobiGami.js delete mode 100644 src/assets/dicebot/ShoujoTenrankai.js delete mode 100644 src/assets/dicebot/Skynauts.js delete mode 100644 src/assets/dicebot/SteamPunkers.js delete mode 100644 src/assets/dicebot/StellarKnights.js delete mode 100644 src/assets/dicebot/SterileLife.js delete mode 100644 src/assets/dicebot/StrangerOfSwordCity.js delete mode 100644 src/assets/dicebot/StratoShout.js delete mode 100644 src/assets/dicebot/StratoShout_Korean.js delete mode 100644 src/assets/dicebot/Strave.js delete mode 100644 src/assets/dicebot/SwordWorld.js delete mode 100644 src/assets/dicebot/SwordWorld2_0.js delete mode 100644 src/assets/dicebot/SwordWorld2_5.js delete mode 100644 src/assets/dicebot/TherapieSein.js delete mode 100644 src/assets/dicebot/TokumeiTenkousei.js delete mode 100644 src/assets/dicebot/TokyoGhostResearch.js delete mode 100644 src/assets/dicebot/TokyoNova.js delete mode 100644 src/assets/dicebot/Torg.js delete mode 100644 src/assets/dicebot/Torg1_5.js delete mode 100644 src/assets/dicebot/TorgEternity.js delete mode 100644 src/assets/dicebot/TrinitySeven.js delete mode 100644 src/assets/dicebot/TunnelsAndTrolls.js delete mode 100644 src/assets/dicebot/TwilightGunsmoke.js delete mode 100644 src/assets/dicebot/Utakaze.js delete mode 100644 src/assets/dicebot/VampireTheMasquerade5th.js delete mode 100644 src/assets/dicebot/Villaciel.js delete mode 100644 src/assets/dicebot/WARPS.js delete mode 100644 src/assets/dicebot/WaresBlade.js delete mode 100644 src/assets/dicebot/Warhammer.js delete mode 100644 src/assets/dicebot/WitchQuest.js delete mode 100644 src/assets/dicebot/WorldOfDarkness.js delete mode 100644 src/assets/dicebot/YankeeYogSothoth.js delete mode 100644 src/assets/dicebot/YearZeroEngine.js delete mode 100644 src/assets/dicebot/ZettaiReido.js delete mode 100644 src/assets/extratables/BloodCrusade_BDST.txt delete mode 100644 src/assets/extratables/BloodCrusade_CYST.txt delete mode 100644 src/assets/extratables/BloodCrusade_DMST.txt delete mode 100644 src/assets/extratables/BloodCrusade_MNST.txt delete mode 100644 src/assets/extratables/BloodCrusade_SLST.txt delete mode 100644 src/assets/extratables/BloodCrusade_TD1T.txt delete mode 100644 src/assets/extratables/BloodCrusade_TD2T.txt delete mode 100644 src/assets/extratables/BloodCrusade_TD3T.txt delete mode 100644 src/assets/extratables/BloodCrusade_TD4T.txt delete mode 100644 src/assets/extratables/BloodCrusade_TD5T.txt delete mode 100644 src/assets/extratables/BloodCrusade_TD6T.txt delete mode 100644 src/assets/extratables/BloodCrusade_TDHT.txt delete mode 100644 src/assets/extratables/BloodMoon_ID2T.txt delete mode 100644 src/assets/extratables/BloodMoon_IDT.txt delete mode 100644 src/assets/extratables/BloodMoon_RAT.txt delete mode 100644 src/assets/extratables/CardRanker_BFT.txt delete mode 100644 src/assets/extratables/CardRanker_CDT.txt delete mode 100644 src/assets/extratables/CardRanker_CST.txt delete mode 100644 src/assets/extratables/CardRanker_DT.txt delete mode 100644 src/assets/extratables/CardRanker_GDT.txt delete mode 100644 src/assets/extratables/CardRanker_OST.txt delete mode 100644 src/assets/extratables/CardRanker_SST.txt delete mode 100644 src/assets/extratables/CardRanker_ST.txt delete mode 100644 src/assets/extratables/CardRanker_TDT.txt delete mode 100644 src/assets/extratables/CardRanker_WT.txt delete mode 100644 src/assets/extratables/Elysion_EBT.txt delete mode 100644 src/assets/extratables/Elysion_GIT.txt delete mode 100644 src/assets/extratables/Elysion_HBT.txt delete mode 100644 src/assets/extratables/Elysion_HT.txt delete mode 100644 src/assets/extratables/Elysion_IT.txt delete mode 100644 src/assets/extratables/Elysion_JH.txt delete mode 100644 src/assets/extratables/Elysion_KT.txt delete mode 100644 src/assets/extratables/Elysion_NA.txt delete mode 100644 src/assets/extratables/Elysion_NT.txt delete mode 100644 src/assets/extratables/Elysion_OJ1.txt delete mode 100644 src/assets/extratables/Elysion_OJ2.txt delete mode 100644 src/assets/extratables/Elysion_TBT.txt delete mode 100644 src/assets/extratables/Elysion_UBT.txt delete mode 100644 src/assets/extratables/Elysion_UT1.txt delete mode 100644 src/assets/extratables/Elysion_UT2.txt delete mode 100644 src/assets/extratables/Elysion_UT3.txt delete mode 100644 src/assets/extratables/Elysion_UT4.txt delete mode 100644 src/assets/extratables/HuntersMoon_DS1ET.txt delete mode 100644 src/assets/extratables/HuntersMoon_DS2ET.txt delete mode 100644 src/assets/extratables/HuntersMoon_DS3ET.txt delete mode 100644 src/assets/extratables/HuntersMoon_EE1ET.txt delete mode 100644 src/assets/extratables/HuntersMoon_EE2ET.txt delete mode 100644 src/assets/extratables/HuntersMoon_EE3ET.txt delete mode 100644 src/assets/extratables/HuntersMoon_ERT.txt delete mode 100644 src/assets/extratables/HuntersMoon_ET1ET.txt delete mode 100644 src/assets/extratables/HuntersMoon_ET2ET.txt delete mode 100644 src/assets/extratables/HuntersMoon_ET3ET.txt delete mode 100644 src/assets/extratables/HuntersMoon_MST.txt delete mode 100644 src/assets/extratables/HuntersMoon_TK1ET.txt delete mode 100644 src/assets/extratables/HuntersMoon_TK2ET.txt delete mode 100644 src/assets/extratables/HuntersMoon_TK3ET.txt delete mode 100644 src/assets/extratables/Kamigakari_ET.txt delete mode 100644 src/assets/extratables/Kamigakari_KT.txt delete mode 100644 src/assets/extratables/Kamigakari_NT.txt delete mode 100644 src/assets/extratables/KanColle_BT10.txt delete mode 100644 src/assets/extratables/KanColle_BT11.txt delete mode 100644 src/assets/extratables/KanColle_BT12.txt delete mode 100644 src/assets/extratables/KanColle_BT2.txt delete mode 100644 src/assets/extratables/KanColle_BT3.txt delete mode 100644 src/assets/extratables/KanColle_BT4.txt delete mode 100644 src/assets/extratables/KanColle_BT5.txt delete mode 100644 src/assets/extratables/KanColle_BT6.txt delete mode 100644 src/assets/extratables/KanColle_BT7.txt delete mode 100644 src/assets/extratables/KanColle_BT8.txt delete mode 100644 src/assets/extratables/KanColle_BT9.txt delete mode 100644 src/assets/extratables/KanColle_ETIT.txt delete mode 100644 src/assets/extratables/KanColle_LFDT.txt delete mode 100644 src/assets/extratables/KanColle_LFVT.txt delete mode 100644 src/assets/extratables/KanColle_LSFT.txt delete mode 100644 src/assets/extratables/KanColle_WPCN.txt delete mode 100644 src/assets/extratables/KanColle_WPFA.txt delete mode 100644 src/assets/extratables/KanColle_WPMC.txt delete mode 100644 src/assets/extratables/KanColle_WPMCN.txt delete mode 100644 src/assets/extratables/KillDeathBusiness_ANSPT.txt delete mode 100644 src/assets/extratables/KillDeathBusiness_MASPT.txt delete mode 100644 src/assets/extratables/KillDeathBusiness_MOSPT.txt delete mode 100644 src/assets/extratables/KillDeathBusiness_PASPT.txt delete mode 100644 src/assets/extratables/KillDeathBusiness_POSPT.txt delete mode 100644 src/assets/extratables/KillDeathBusiness_UMSPT.txt delete mode 100644 src/assets/extratables/Oukahoushin3rd_BKT.txt delete mode 100644 src/assets/extratables/Oukahoushin3rd_KKT.txt delete mode 100644 src/assets/extratables/Oukahoushin3rd_NHT.txt delete mode 100644 src/assets/extratables/Oukahoushin3rd_SDT.txt delete mode 100644 src/assets/extratables/Oukahoushin3rd_SKT.txt delete mode 100644 src/assets/extratables/Oukahoushin3rd_STT.txt delete mode 100644 src/assets/extratables/Oukahoushin3rd_UKT.txt delete mode 100644 src/assets/extratables/ShinobiGami_AKST.txt delete mode 100644 src/assets/extratables/ShinobiGami_CLST.txt delete mode 100644 src/assets/extratables/ShinobiGami_DXST.txt delete mode 100644 src/assets/extratables/ShinobiGami_HC.txt delete mode 100644 src/assets/extratables/ShinobiGami_HK.txt delete mode 100644 src/assets/extratables/ShinobiGami_HLST.txt delete mode 100644 src/assets/extratables/ShinobiGami_HM.txt delete mode 100644 src/assets/extratables/ShinobiGami_HO.txt delete mode 100644 src/assets/extratables/ShinobiGami_HR.txt delete mode 100644 src/assets/extratables/ShinobiGami_HS.txt delete mode 100644 src/assets/extratables/ShinobiGami_HT.txt delete mode 100644 src/assets/extratables/ShinobiGami_HY.txt delete mode 100644 src/assets/extratables/ShinobiGami_NTST.txt delete mode 100644 src/assets/extratables/ShinobiGami_OTKRT.txt delete mode 100644 src/assets/extratables/ShinobiGami_PLST.txt delete mode 100644 src/src_bcdice/CardTrader.rb delete mode 100644 src/src_bcdice/CountHolder.rb delete mode 100644 src/src_bcdice/TableFileData.rb delete mode 100644 src/src_bcdice/bcdice.rb delete mode 100644 src/src_bcdice/bcdiceCore.rb delete mode 100644 src/src_bcdice/c.bat delete mode 100644 src/src_bcdice/cgiDiceBot.rb delete mode 100644 src/src_bcdice/configBcDice.rb delete mode 100644 src/src_bcdice/dice/AddDice.rb delete mode 100644 src/src_bcdice/dice/RerollDice.rb delete mode 100644 src/src_bcdice/dice/UpperDice.rb delete mode 100644 src/src_bcdice/dice/add_dice/node.rb delete mode 100644 src/src_bcdice/dice/add_dice/parser.rb delete mode 100644 src/src_bcdice/dice/add_dice/randomizer.rb delete mode 100644 src/src_bcdice/diceBot/AFF2e.rb delete mode 100644 src/src_bcdice/diceBot/AceKillerGene.rb delete mode 100644 src/src_bcdice/diceBot/Airgetlamh.rb delete mode 100644 src/src_bcdice/diceBot/Alsetto.rb delete mode 100644 src/src_bcdice/diceBot/Alshard.rb delete mode 100644 src/src_bcdice/diceBot/AlterRaise.rb delete mode 100644 src/src_bcdice/diceBot/Amadeus.rb delete mode 100644 src/src_bcdice/diceBot/Amadeus_Korean.rb delete mode 100644 src/src_bcdice/diceBot/AnimaAnimus.rb delete mode 100644 src/src_bcdice/diceBot/Arianrhod.rb delete mode 100644 src/src_bcdice/diceBot/ArsMagica.rb delete mode 100644 src/src_bcdice/diceBot/Avandner.rb delete mode 100644 src/src_bcdice/diceBot/BBN.rb delete mode 100644 src/src_bcdice/diceBot/BadLife.rb delete mode 100644 src/src_bcdice/diceBot/BarnaKronika.rb delete mode 100644 src/src_bcdice/diceBot/BattleTech.rb delete mode 100644 src/src_bcdice/diceBot/BeastBindTrinity.rb delete mode 100644 src/src_bcdice/diceBot/BeginningIdol.rb delete mode 100644 src/src_bcdice/diceBot/BeginningIdol_Korean.rb delete mode 100644 src/src_bcdice/diceBot/BladeOfArcana.rb delete mode 100644 src/src_bcdice/diceBot/BlindMythos.rb delete mode 100644 src/src_bcdice/diceBot/BloodCrusade.rb delete mode 100644 src/src_bcdice/diceBot/BloodMoon.rb delete mode 100644 src/src_bcdice/diceBot/CardRanker.rb delete mode 100644 src/src_bcdice/diceBot/ChaosFlare.rb delete mode 100644 src/src_bcdice/diceBot/Chill.rb delete mode 100644 src/src_bcdice/diceBot/Chill3.rb delete mode 100644 src/src_bcdice/diceBot/CodeLayerd.rb delete mode 100644 src/src_bcdice/diceBot/ColossalHunter.rb delete mode 100644 src/src_bcdice/diceBot/CrashWorld.rb delete mode 100644 src/src_bcdice/diceBot/Cthulhu.rb delete mode 100644 src/src_bcdice/diceBot/Cthulhu7th.rb delete mode 100644 src/src_bcdice/diceBot/Cthulhu7th_ChineseTraditional.rb delete mode 100644 src/src_bcdice/diceBot/Cthulhu7th_Korean.rb delete mode 100644 src/src_bcdice/diceBot/CthulhuTech.rb delete mode 100644 src/src_bcdice/diceBot/Cthulhu_ChineseTraditional.rb delete mode 100644 src/src_bcdice/diceBot/Cthulhu_Korean.rb delete mode 100644 src/src_bcdice/diceBot/DarkBlaze.rb delete mode 100644 src/src_bcdice/diceBot/DarkDaysDrive.rb delete mode 100644 src/src_bcdice/diceBot/DarkSouls.rb delete mode 100644 src/src_bcdice/diceBot/DeadlineHeroes.rb delete mode 100644 src/src_bcdice/diceBot/DemonParasite.rb delete mode 100644 src/src_bcdice/diceBot/DetatokoSaga.rb delete mode 100644 src/src_bcdice/diceBot/DetatokoSaga_Korean.rb delete mode 100644 src/src_bcdice/diceBot/DiceBot.rb delete mode 100644 src/src_bcdice/diceBot/DiceBotLoader.rb delete mode 100644 src/src_bcdice/diceBot/DiceBotLoaderList.rb delete mode 100644 src/src_bcdice/diceBot/DiceOfTheDead.rb delete mode 100644 src/src_bcdice/diceBot/DoubleCross.rb delete mode 100644 src/src_bcdice/diceBot/DoubleCross_Korean.rb delete mode 100644 src/src_bcdice/diceBot/Dracurouge.rb delete mode 100644 src/src_bcdice/diceBot/Dracurouge_Korean.rb delete mode 100644 src/src_bcdice/diceBot/DungeonsAndDragons.rb delete mode 100644 src/src_bcdice/diceBot/EarthDawn.rb delete mode 100644 src/src_bcdice/diceBot/EarthDawn3.rb delete mode 100644 src/src_bcdice/diceBot/EarthDawn4.rb delete mode 100644 src/src_bcdice/diceBot/EclipsePhase.rb delete mode 100644 src/src_bcdice/diceBot/Elric.rb delete mode 100644 src/src_bcdice/diceBot/Elysion.rb delete mode 100644 src/src_bcdice/diceBot/EmbryoMachine.rb delete mode 100644 src/src_bcdice/diceBot/EndBreaker.rb delete mode 100644 src/src_bcdice/diceBot/EtrianOdysseySRS.rb delete mode 100644 src/src_bcdice/diceBot/Fiasco.rb delete mode 100644 src/src_bcdice/diceBot/Fiasco_Korean.rb delete mode 100644 src/src_bcdice/diceBot/FilledWith.rb delete mode 100644 src/src_bcdice/diceBot/FullMetalPanic.rb delete mode 100644 src/src_bcdice/diceBot/FutariSousa.rb delete mode 100644 src/src_bcdice/diceBot/FutariSousa_Korean.rb delete mode 100644 src/src_bcdice/diceBot/Garako.rb delete mode 100644 src/src_bcdice/diceBot/GardenOrder.rb delete mode 100644 src/src_bcdice/diceBot/GehennaAn.rb delete mode 100644 src/src_bcdice/diceBot/GeishaGirlwithKatana.rb delete mode 100644 src/src_bcdice/diceBot/GoblinSlayer.rb delete mode 100644 src/src_bcdice/diceBot/GoldenSkyStories.rb delete mode 100644 src/src_bcdice/diceBot/Gorilla.rb delete mode 100644 src/src_bcdice/diceBot/GranCrest.rb delete mode 100644 src/src_bcdice/diceBot/Gundog.rb delete mode 100644 src/src_bcdice/diceBot/GundogRevised.rb delete mode 100644 src/src_bcdice/diceBot/GundogZero.rb delete mode 100644 src/src_bcdice/diceBot/Gurps.rb delete mode 100644 src/src_bcdice/diceBot/GurpsFW.rb delete mode 100644 src/src_bcdice/diceBot/HarnMaster.rb delete mode 100644 src/src_bcdice/diceBot/HatsuneMiku.rb delete mode 100644 src/src_bcdice/diceBot/Hieizan.rb delete mode 100644 src/src_bcdice/diceBot/HouraiGakuen.rb delete mode 100644 src/src_bcdice/diceBot/HuntersMoon.rb delete mode 100644 src/src_bcdice/diceBot/Illusio.rb delete mode 100644 src/src_bcdice/diceBot/InfiniteFantasia.rb delete mode 100644 src/src_bcdice/diceBot/Insane.rb delete mode 100644 src/src_bcdice/diceBot/Insane_Korean.rb delete mode 100644 src/src_bcdice/diceBot/IthaWenUa.rb delete mode 100644 src/src_bcdice/diceBot/JamesBond.rb delete mode 100644 src/src_bcdice/diceBot/Kamigakari.rb delete mode 100644 src/src_bcdice/diceBot/Kamigakari_Korean.rb delete mode 100644 src/src_bcdice/diceBot/KanColle.rb delete mode 100644 src/src_bcdice/diceBot/KemonoNoMori.rb delete mode 100644 src/src_bcdice/diceBot/KillDeathBusiness.rb delete mode 100644 src/src_bcdice/diceBot/KillDeathBusiness_Korean.rb delete mode 100644 src/src_bcdice/diceBot/KurayamiCrying.rb delete mode 100644 src/src_bcdice/diceBot/LiveraDoll.rb delete mode 100644 src/src_bcdice/diceBot/LogHorizon.rb delete mode 100644 src/src_bcdice/diceBot/LogHorizon_Korean.rb delete mode 100644 src/src_bcdice/diceBot/LostRecord.rb delete mode 100644 src/src_bcdice/diceBot/LostRoyal.rb delete mode 100644 src/src_bcdice/diceBot/MagicaLogia.rb delete mode 100644 src/src_bcdice/diceBot/MeikyuDays.rb delete mode 100644 src/src_bcdice/diceBot/MeikyuKingdom.rb delete mode 100644 src/src_bcdice/diceBot/MeikyuKingdomBasic.rb delete mode 100644 src/src_bcdice/diceBot/MetalHead.rb delete mode 100644 src/src_bcdice/diceBot/MetalHeadExtream.rb delete mode 100644 src/src_bcdice/diceBot/MetallicGuardian.rb delete mode 100644 src/src_bcdice/diceBot/MonotoneMuseum.rb delete mode 100644 src/src_bcdice/diceBot/MonotoneMuseum_Korean.rb delete mode 100644 src/src_bcdice/diceBot/Nechronica.rb delete mode 100644 src/src_bcdice/diceBot/Nechronica_Korean.rb delete mode 100644 src/src_bcdice/diceBot/NeverCloud.rb delete mode 100644 src/src_bcdice/diceBot/NightWizard.rb delete mode 100644 src/src_bcdice/diceBot/NightWizard3rd.rb delete mode 100644 src/src_bcdice/diceBot/NightmareHunterDeep.rb delete mode 100644 src/src_bcdice/diceBot/NinjaSlayer.rb delete mode 100644 src/src_bcdice/diceBot/NjslyrBattle.rb delete mode 100644 src/src_bcdice/diceBot/Nuekagami.rb delete mode 100644 src/src_bcdice/diceBot/OneWayHeroics.rb delete mode 100644 src/src_bcdice/diceBot/OracleEngine.rb delete mode 100644 src/src_bcdice/diceBot/OrgaRain.rb delete mode 100644 src/src_bcdice/diceBot/Oukahoushin3rd.rb delete mode 100644 src/src_bcdice/diceBot/Paradiso.rb delete mode 100644 src/src_bcdice/diceBot/Paranoia.rb delete mode 100644 src/src_bcdice/diceBot/ParanoiaRebooted.rb delete mode 100644 src/src_bcdice/diceBot/ParasiteBlood.rb delete mode 100644 src/src_bcdice/diceBot/Pathfinder.rb delete mode 100644 src/src_bcdice/diceBot/Peekaboo.rb delete mode 100644 src/src_bcdice/diceBot/Pendragon.rb delete mode 100644 src/src_bcdice/diceBot/PhantasmAdventure.rb delete mode 100644 src/src_bcdice/diceBot/Postman.rb delete mode 100644 src/src_bcdice/diceBot/PulpCthulhu.rb delete mode 100644 src/src_bcdice/diceBot/Raisondetre.rb delete mode 100644 src/src_bcdice/diceBot/RecordOfLodossWar.rb delete mode 100644 src/src_bcdice/diceBot/RecordOfSteam.rb delete mode 100644 src/src_bcdice/diceBot/RokumonSekai2.rb delete mode 100644 src/src_bcdice/diceBot/RoleMaster.rb delete mode 100644 src/src_bcdice/diceBot/RuneQuest.rb delete mode 100644 src/src_bcdice/diceBot/RyuTuber.rb delete mode 100644 src/src_bcdice/diceBot/Ryutama.rb delete mode 100644 src/src_bcdice/diceBot/SRS.rb delete mode 100644 src/src_bcdice/diceBot/SamsaraBallad.rb delete mode 100644 src/src_bcdice/diceBot/Satasupe.rb delete mode 100644 src/src_bcdice/diceBot/ScreamHighSchool.rb delete mode 100644 src/src_bcdice/diceBot/SevenFortressMobius.rb delete mode 100644 src/src_bcdice/diceBot/ShadowRun.rb delete mode 100644 src/src_bcdice/diceBot/ShadowRun4.rb delete mode 100644 src/src_bcdice/diceBot/ShadowRun5.rb delete mode 100644 src/src_bcdice/diceBot/SharedFantasia.rb delete mode 100644 src/src_bcdice/diceBot/ShinMegamiTenseiKakuseihen.rb delete mode 100644 src/src_bcdice/diceBot/ShinkuuGakuen.rb delete mode 100644 src/src_bcdice/diceBot/ShinobiGami.rb delete mode 100644 src/src_bcdice/diceBot/ShoujoTenrankai.rb delete mode 100644 src/src_bcdice/diceBot/Skynauts.rb delete mode 100644 src/src_bcdice/diceBot/SteamPunkers.rb delete mode 100644 src/src_bcdice/diceBot/StellarKnights.rb delete mode 100644 src/src_bcdice/diceBot/SterileLife.rb delete mode 100644 src/src_bcdice/diceBot/StrangerOfSwordCity.rb delete mode 100644 src/src_bcdice/diceBot/StratoShout.rb delete mode 100644 src/src_bcdice/diceBot/StratoShout_Korean.rb delete mode 100644 src/src_bcdice/diceBot/Strave.rb delete mode 100644 src/src_bcdice/diceBot/SwordWorld.rb delete mode 100644 src/src_bcdice/diceBot/SwordWorld2_0.rb delete mode 100644 src/src_bcdice/diceBot/SwordWorld2_5.rb delete mode 100644 src/src_bcdice/diceBot/TherapieSein.rb delete mode 100644 src/src_bcdice/diceBot/TokumeiTenkousei.rb delete mode 100644 src/src_bcdice/diceBot/TokyoGhostResearch.rb delete mode 100644 src/src_bcdice/diceBot/TokyoNova.rb delete mode 100644 src/src_bcdice/diceBot/Torg.rb delete mode 100644 src/src_bcdice/diceBot/Torg1_5.rb delete mode 100644 src/src_bcdice/diceBot/TorgEternity.rb delete mode 100644 src/src_bcdice/diceBot/TrinitySeven.rb delete mode 100644 src/src_bcdice/diceBot/TunnelsAndTrolls.rb delete mode 100644 src/src_bcdice/diceBot/TwilightGunsmoke.rb delete mode 100644 src/src_bcdice/diceBot/Utakaze.rb delete mode 100644 src/src_bcdice/diceBot/VampireTheMasquerade5th.rb delete mode 100644 src/src_bcdice/diceBot/Villaciel.rb delete mode 100644 src/src_bcdice/diceBot/WARPS.rb delete mode 100644 src/src_bcdice/diceBot/WaresBlade.rb delete mode 100644 src/src_bcdice/diceBot/Warhammer.rb delete mode 100644 src/src_bcdice/diceBot/WitchQuest.rb delete mode 100644 src/src_bcdice/diceBot/WorldOfDarkness.rb delete mode 100644 src/src_bcdice/diceBot/YankeeYogSothoth.rb delete mode 100644 src/src_bcdice/diceBot/YearZeroEngine.rb delete mode 100644 src/src_bcdice/diceBot/ZettaiReido.rb delete mode 100644 src/src_bcdice/diceBot/_Template.rb delete mode 100644 src/src_bcdice/log.rb delete mode 100644 src/src_bcdice/test.node.js delete mode 100644 src/src_bcdice/test.rb delete mode 100644 src/src_bcdice/test/.gitignore delete mode 100644 src/src_bcdice/test/DiceBotTest.rb delete mode 100644 src/src_bcdice/test/DiceBotTestData.rb delete mode 100644 src/src_bcdice/test/add_dice_parser_test.rb delete mode 100644 src/src_bcdice/test/data/AFF2e.txt delete mode 100644 src/src_bcdice/test/data/AceKillerGene.txt delete mode 100644 src/src_bcdice/test/data/Airgetlamh.txt delete mode 100644 src/src_bcdice/test/data/Alsetto.txt delete mode 100644 src/src_bcdice/test/data/Alshard.txt delete mode 100644 src/src_bcdice/test/data/AlterRaise.txt delete mode 100644 src/src_bcdice/test/data/Amadeus.txt delete mode 100644 src/src_bcdice/test/data/Amadeus_Korean.txt delete mode 100644 src/src_bcdice/test/data/AnimaAnimus.txt delete mode 100644 src/src_bcdice/test/data/Arianrhod.txt delete mode 100644 src/src_bcdice/test/data/ArsMagica.txt delete mode 100644 src/src_bcdice/test/data/Avandner.txt delete mode 100644 src/src_bcdice/test/data/BBN.txt delete mode 100644 src/src_bcdice/test/data/BadLife.txt delete mode 100644 src/src_bcdice/test/data/BarnaKronika.txt delete mode 100644 src/src_bcdice/test/data/BattleTech.txt delete mode 100644 src/src_bcdice/test/data/BeastBindTrinity.txt delete mode 100644 src/src_bcdice/test/data/BeginningIdol.txt delete mode 100644 src/src_bcdice/test/data/BeginningIdol_Korean.txt delete mode 100644 src/src_bcdice/test/data/BladeOfArcana.txt delete mode 100644 src/src_bcdice/test/data/BlindMythos.txt delete mode 100644 src/src_bcdice/test/data/BloodCrusade.txt delete mode 100644 src/src_bcdice/test/data/BloodMoon.txt delete mode 100644 src/src_bcdice/test/data/CardRanker.txt delete mode 100644 src/src_bcdice/test/data/ChaosFlare.txt delete mode 100644 src/src_bcdice/test/data/Chill.txt delete mode 100644 src/src_bcdice/test/data/Chill3.txt delete mode 100644 src/src_bcdice/test/data/CodeLayerd.txt delete mode 100644 src/src_bcdice/test/data/ColossalHunter.txt delete mode 100644 src/src_bcdice/test/data/CrashWorld.txt delete mode 100644 src/src_bcdice/test/data/Cthulhu.txt delete mode 100644 src/src_bcdice/test/data/Cthulhu7th.txt delete mode 100644 src/src_bcdice/test/data/Cthulhu7th_Korean.txt delete mode 100644 src/src_bcdice/test/data/CthulhuTech.txt delete mode 100644 src/src_bcdice/test/data/Cthulhu_Korean.txt delete mode 100644 src/src_bcdice/test/data/DarkBlaze.txt delete mode 100644 src/src_bcdice/test/data/DarkDaysDrive.txt delete mode 100644 src/src_bcdice/test/data/DarkSouls.txt delete mode 100644 src/src_bcdice/test/data/DeadlineHeroes.txt delete mode 100644 src/src_bcdice/test/data/DemonParasite.txt delete mode 100644 src/src_bcdice/test/data/DetatokoSaga.txt delete mode 100644 src/src_bcdice/test/data/DetatokoSaga_Korean.txt delete mode 100644 src/src_bcdice/test/data/DiceOfTheDead.txt delete mode 100644 src/src_bcdice/test/data/DoubleCross.txt delete mode 100644 src/src_bcdice/test/data/DoubleCross_Korean.txt delete mode 100644 src/src_bcdice/test/data/Dracurouge.txt delete mode 100644 src/src_bcdice/test/data/Dracurouge_Korean.txt delete mode 100644 src/src_bcdice/test/data/DungeonsAndDragons.txt delete mode 100644 src/src_bcdice/test/data/EarthDawn.txt delete mode 100644 src/src_bcdice/test/data/EarthDawn3.txt delete mode 100644 src/src_bcdice/test/data/EarthDawn4.txt delete mode 100644 src/src_bcdice/test/data/EclipsePhase.txt delete mode 100644 src/src_bcdice/test/data/Elric.txt delete mode 100644 src/src_bcdice/test/data/Elysion.txt delete mode 100644 src/src_bcdice/test/data/EmbryoMachine.txt delete mode 100644 src/src_bcdice/test/data/EndBreaker.txt delete mode 100644 src/src_bcdice/test/data/EtrianOdysseySRS.txt delete mode 100644 src/src_bcdice/test/data/Fiasco.txt delete mode 100644 src/src_bcdice/test/data/Fiasco_Korean.txt delete mode 100644 src/src_bcdice/test/data/FilledWith.txt delete mode 100644 src/src_bcdice/test/data/FullMetalPanic.txt delete mode 100644 src/src_bcdice/test/data/FutariSousa.txt delete mode 100644 src/src_bcdice/test/data/FutariSousa_Korean.txt delete mode 100644 src/src_bcdice/test/data/Garako.txt delete mode 100644 src/src_bcdice/test/data/GardenOrder.txt delete mode 100644 src/src_bcdice/test/data/GehennaAn.txt delete mode 100644 src/src_bcdice/test/data/GeishaGirlwithKatana.txt delete mode 100644 src/src_bcdice/test/data/GoblinSlayer.txt delete mode 100644 src/src_bcdice/test/data/GoldenSkyStories.txt delete mode 100644 src/src_bcdice/test/data/Gorilla.txt delete mode 100644 src/src_bcdice/test/data/GranCrest.txt delete mode 100644 src/src_bcdice/test/data/Gundog.txt delete mode 100644 src/src_bcdice/test/data/GundogRevised.txt delete mode 100644 src/src_bcdice/test/data/GundogZero.txt delete mode 100644 src/src_bcdice/test/data/Gurps.txt delete mode 100644 src/src_bcdice/test/data/GurpsFW.txt delete mode 100644 src/src_bcdice/test/data/HarnMaster.txt delete mode 100644 src/src_bcdice/test/data/HatsuneMiku.txt delete mode 100644 src/src_bcdice/test/data/Hieizan.txt delete mode 100644 src/src_bcdice/test/data/HouraiGakuen.txt delete mode 100644 src/src_bcdice/test/data/HuntersMoon.txt delete mode 100644 src/src_bcdice/test/data/Illusio.txt delete mode 100644 src/src_bcdice/test/data/InfiniteFantasia.txt delete mode 100644 src/src_bcdice/test/data/Insane.txt delete mode 100644 src/src_bcdice/test/data/Insane_Korean.txt delete mode 100644 src/src_bcdice/test/data/IthaWenUa.txt delete mode 100644 src/src_bcdice/test/data/JamesBond.txt delete mode 100644 src/src_bcdice/test/data/Kamigakari.txt delete mode 100644 src/src_bcdice/test/data/Kamigakari_Korean.txt delete mode 100644 src/src_bcdice/test/data/KanColle.txt delete mode 100644 src/src_bcdice/test/data/KemonoNoMori.txt delete mode 100644 src/src_bcdice/test/data/KillDeathBusiness.txt delete mode 100644 src/src_bcdice/test/data/KillDeathBusiness_Korean.txt delete mode 100644 src/src_bcdice/test/data/KurayamiCrying.txt delete mode 100644 src/src_bcdice/test/data/LiveraDoll.txt delete mode 100644 src/src_bcdice/test/data/LogHorizon.txt delete mode 100644 src/src_bcdice/test/data/LogHorizon_Korean.txt delete mode 100644 src/src_bcdice/test/data/LostRecord.txt delete mode 100644 src/src_bcdice/test/data/LostRoyal.txt delete mode 100644 src/src_bcdice/test/data/MagicaLogia.txt delete mode 100644 src/src_bcdice/test/data/MeikyuDays.txt delete mode 100644 src/src_bcdice/test/data/MeikyuKingdom.txt delete mode 100644 src/src_bcdice/test/data/MeikyuKingdomBasic.txt delete mode 100644 src/src_bcdice/test/data/MetalHead.txt delete mode 100644 src/src_bcdice/test/data/MetalHeadExtream.txt delete mode 100644 src/src_bcdice/test/data/MetallicGuardian.txt delete mode 100644 src/src_bcdice/test/data/Misonzai.txt delete mode 100644 src/src_bcdice/test/data/MonotoneMuseum.txt delete mode 100644 src/src_bcdice/test/data/MonotoneMuseum_Korean.txt delete mode 100644 src/src_bcdice/test/data/Nechronica.txt delete mode 100644 src/src_bcdice/test/data/Nechronica_Korean.txt delete mode 100644 src/src_bcdice/test/data/NeverCloud.txt delete mode 100644 src/src_bcdice/test/data/NightWizard.txt delete mode 100644 src/src_bcdice/test/data/NightWizard3rd.txt delete mode 100644 src/src_bcdice/test/data/NightmareHunterDeep.txt delete mode 100644 src/src_bcdice/test/data/NinjaSlayer.txt delete mode 100644 src/src_bcdice/test/data/NjslyrBattle.txt delete mode 100644 src/src_bcdice/test/data/None.txt delete mode 100644 src/src_bcdice/test/data/Nuekagami.txt delete mode 100644 src/src_bcdice/test/data/OneWayHeroics.txt delete mode 100644 src/src_bcdice/test/data/OracleEngine.txt delete mode 100644 src/src_bcdice/test/data/OrgaRain.txt delete mode 100644 src/src_bcdice/test/data/Oukahoushin3rd.txt delete mode 100644 src/src_bcdice/test/data/Paradiso.txt delete mode 100644 src/src_bcdice/test/data/Paranoia.txt delete mode 100644 src/src_bcdice/test/data/ParanoiaRebooted.txt delete mode 100644 src/src_bcdice/test/data/ParasiteBlood.txt delete mode 100644 src/src_bcdice/test/data/Pathfinder.txt delete mode 100644 src/src_bcdice/test/data/Peekaboo.txt delete mode 100644 src/src_bcdice/test/data/Pendragon.txt delete mode 100644 src/src_bcdice/test/data/PhantasmAdventure.txt delete mode 100644 src/src_bcdice/test/data/PlotTest.txt delete mode 100644 src/src_bcdice/test/data/Postman.txt delete mode 100644 src/src_bcdice/test/data/PulpCthulhu.txt delete mode 100644 src/src_bcdice/test/data/Raisondetre.txt delete mode 100644 src/src_bcdice/test/data/RecordOfLodossWar.txt delete mode 100644 src/src_bcdice/test/data/RecordOfSteam.txt delete mode 100644 src/src_bcdice/test/data/RokumonSekai2.txt delete mode 100644 src/src_bcdice/test/data/RoleMaster.txt delete mode 100644 src/src_bcdice/test/data/RuneQuest.txt delete mode 100644 src/src_bcdice/test/data/RyuTuber.txt delete mode 100644 src/src_bcdice/test/data/Ryutama.txt delete mode 100644 src/src_bcdice/test/data/SRS.txt delete mode 100644 src/src_bcdice/test/data/SamsaraBallad.txt delete mode 100644 src/src_bcdice/test/data/Satasupe.txt delete mode 100644 src/src_bcdice/test/data/ScreamHighSchool.txt delete mode 100644 src/src_bcdice/test/data/SevenFortressMobius.txt delete mode 100644 src/src_bcdice/test/data/ShadowRun.txt delete mode 100644 src/src_bcdice/test/data/ShadowRun4.txt delete mode 100644 src/src_bcdice/test/data/ShadowRun5.txt delete mode 100644 src/src_bcdice/test/data/SharedFantasia.txt delete mode 100644 src/src_bcdice/test/data/ShinMegamiTenseiKakuseihen.txt delete mode 100644 src/src_bcdice/test/data/ShinkuuGakuen.txt delete mode 100644 src/src_bcdice/test/data/ShinobiGami.txt delete mode 100644 src/src_bcdice/test/data/ShoujoTenrankai.txt delete mode 100644 src/src_bcdice/test/data/Skynauts.txt delete mode 100644 src/src_bcdice/test/data/SteamPunkers.txt delete mode 100644 src/src_bcdice/test/data/StellarKnights.txt delete mode 100644 src/src_bcdice/test/data/SterileLife.txt delete mode 100644 src/src_bcdice/test/data/StrangerOfSwordCity.txt delete mode 100644 src/src_bcdice/test/data/StratoShout.txt delete mode 100644 src/src_bcdice/test/data/StratoShout_Korean.txt delete mode 100644 src/src_bcdice/test/data/Strave.txt delete mode 100644 src/src_bcdice/test/data/SwordWorld.txt delete mode 100644 src/src_bcdice/test/data/SwordWorld2_0.txt delete mode 100644 src/src_bcdice/test/data/SwordWorld2_5.txt delete mode 100644 src/src_bcdice/test/data/TestDummy.txt delete mode 100644 src/src_bcdice/test/data/TherapieSein.txt delete mode 100644 src/src_bcdice/test/data/TokumeiTenkousei.txt delete mode 100644 src/src_bcdice/test/data/TokyoGhostResearch.txt delete mode 100644 src/src_bcdice/test/data/TokyoNova.txt delete mode 100644 src/src_bcdice/test/data/Torg.txt delete mode 100644 src/src_bcdice/test/data/Torg1_5.txt delete mode 100644 src/src_bcdice/test/data/TorgEternity.txt delete mode 100644 src/src_bcdice/test/data/TrinitySeven.txt delete mode 100644 src/src_bcdice/test/data/TunnelsAndTrolls.txt delete mode 100644 src/src_bcdice/test/data/TwilightGunsmoke.txt delete mode 100644 src/src_bcdice/test/data/UpperDice.txt delete mode 100644 src/src_bcdice/test/data/Utakaze.txt delete mode 100644 src/src_bcdice/test/data/VampireTheMasquerade5th.txt delete mode 100644 src/src_bcdice/test/data/Villaciel.txt delete mode 100644 src/src_bcdice/test/data/WARPS.txt delete mode 100644 src/src_bcdice/test/data/WaresBlade.txt delete mode 100644 src/src_bcdice/test/data/Warhammer.txt delete mode 100644 src/src_bcdice/test/data/WitchQuest.txt delete mode 100644 src/src_bcdice/test/data/WorldOfDarkness.txt delete mode 100644 src/src_bcdice/test/data/YankeeYogSothoth.txt delete mode 100644 src/src_bcdice/test/data/YearZeroEngine.txt delete mode 100644 src/src_bcdice/test/data/ZettaiReido.txt delete mode 100644 src/src_bcdice/test/data/dummyBot.txt delete mode 100644 src/src_bcdice/test/data/test.rb delete mode 100644 src/src_bcdice/test/others/README.txt delete mode 100644 src/src_bcdice/test/others/testCard.rb delete mode 100644 src/src_bcdice/test/others/testPointer.rb delete mode 100644 src/src_bcdice/test/others/testSecretDice.rb delete mode 100644 src/src_bcdice/test/range_table_test.rb delete mode 100644 src/src_bcdice/test/setup.rb delete mode 100644 src/src_bcdice/test/testDiceBotLoaders.rb delete mode 100644 src/src_bcdice/test/testDiceBotPrefixesCompatibility.rb delete mode 100644 src/src_bcdice/test/testDiceBots.rb delete mode 100644 src/src_bcdice/test/test_command_parser.rb delete mode 100644 src/src_bcdice/test/test_d66_table.rb delete mode 100644 src/src_bcdice/test/test_data_encoding.rb delete mode 100644 src/src_bcdice/test/test_detailed_rand_results.rb delete mode 100644 src/src_bcdice/test/test_dicebot_info_is_defined.rb delete mode 100644 src/src_bcdice/test/test_srs_help_messages.rb delete mode 100644 src/src_bcdice/utils/ArithmeticEvaluator.rb delete mode 100644 src/src_bcdice/utils/command_parser.rb delete mode 100644 src/src_bcdice/utils/d66_grid_table.rb delete mode 100644 src/src_bcdice/utils/d66_range_table.rb delete mode 100644 src/src_bcdice/utils/d66_table.rb delete mode 100644 src/src_bcdice/utils/format.rb delete mode 100644 src/src_bcdice/utils/modifier_formatter.rb delete mode 100644 src/src_bcdice/utils/normalize.rb delete mode 100644 src/src_bcdice/utils/range_table.rb delete mode 100644 src/src_bcdice/utils/table.rb diff --git a/src/assets/cgiDiceBot.js b/src/assets/cgiDiceBot.js deleted file mode 100644 index 1a374c69f..000000000 --- a/src/assets/cgiDiceBot.js +++ /dev/null @@ -1,30546 +0,0 @@ -(function(undefined) { - // @note - // A few conventions for the documentation of this file: - // 1. Always use "//" (in contrast with "/**/") - // 2. The syntax used is Yardoc (yardoc.org), which is intended for Ruby (se below) - // 3. `@param` and `@return` types should be preceded by `JS.` when referring to - // JavaScript constructors (e.g. `JS.Function`) otherwise Ruby is assumed. - // 4. `nil` and `null` being unambiguous refer to the respective - // objects/values in Ruby and JavaScript - // 5. This is still WIP :) so please give feedback and suggestions on how - // to improve or for alternative solutions - // - // The way the code is digested before going through Yardoc is a secret kept - // in the docs repo (https://github.com/opal/docs/tree/master). - - var global_object = this, console; - - // Detect the global object - if (typeof(global) !== 'undefined') { global_object = global; } - if (typeof(window) !== 'undefined') { global_object = window; } - - // Setup a dummy console object if missing - if (typeof(global_object.console) === 'object') { - console = global_object.console; - } else if (global_object.console == null) { - console = global_object.console = {}; - } else { - console = {}; - } - - if (!('log' in console)) { console.log = function () {}; } - if (!('warn' in console)) { console.warn = console.log; } - - if (typeof(this.Opal) !== 'undefined') { - console.warn('Opal already loaded. Loading twice can cause troubles, please fix your setup.'); - return this.Opal; - } - - var nil; - - // The actual class for BasicObject - var BasicObject; - - // The actual Object class. - // The leading underscore is to avoid confusion with window.Object() - var _Object; - - // The actual Module class - var Module; - - // The actual Class class - var Class; - - // The Opal object that is exposed globally - var Opal = this.Opal = {}; - - // This is a useful reference to global object inside ruby files - Opal.global = global_object; - global_object.Opal = Opal; - - // Configure runtime behavior with regards to require and unsupported fearures - Opal.config = { - missing_require_severity: 'error', // error, warning, ignore - unsupported_features_severity: 'warning', // error, warning, ignore - enable_stack_trace: true // true, false - }; - - // Minify common function calls - var $hasOwn = Object.hasOwnProperty; - var $bind = Function.prototype.bind; - var $setPrototype = Object.setPrototypeOf; - var $slice = Array.prototype.slice; - var $splice = Array.prototype.splice; - - // Nil object id is always 4 - var nil_id = 4; - - // Generates even sequential numbers greater than 4 - // (nil_id) to serve as unique ids for ruby objects - var unique_id = nil_id; - - // Return next unique id - Opal.uid = function() { - unique_id += 2; - return unique_id; - }; - - // Retrieve or assign the id of an object - Opal.id = function(obj) { - if (obj.$$is_number) return (obj * 2)+1; - if (obj.$$id != null) { - return obj.$$id; - } - $defineProperty(obj, '$$id', Opal.uid()); - return obj.$$id; - }; - - // Globals table - Opal.gvars = {}; - - // Exit function, this should be replaced by platform specific implementation - // (See nodejs and chrome for examples) - Opal.exit = function(status) { if (Opal.gvars.DEBUG) console.log('Exited with status '+status); }; - - // keeps track of exceptions for $! - Opal.exceptions = []; - - // @private - // Pops an exception from the stack and updates `$!`. - Opal.pop_exception = function() { - Opal.gvars["!"] = Opal.exceptions.pop() || nil; - }; - - // Inspect any kind of object, including non Ruby ones - Opal.inspect = function(obj) { - if (obj === undefined) { - return "undefined"; - } - else if (obj === null) { - return "null"; - } - else if (!obj.$$class) { - return obj.toString(); - } - else { - return obj.$inspect(); - } - }; - - function $defineProperty(object, name, initialValue) { - if (typeof(object) === "string") { - // Special case for: - // s = "string" - // def s.m; end - // String class is the only class that: - // + compiles to JS primitive - // + allows method definition directly on instances - // numbers, true, false and nil do not support it. - object[name] = initialValue; - } else { - Object.defineProperty(object, name, { - value: initialValue, - enumerable: false, - configurable: true, - writable: true - }); - } - } - - Opal.defineProperty = $defineProperty; - - Opal.slice = $slice; - - - // Truth - // ----- - - Opal.truthy = function(val) { - return (val !== nil && val != null && (!val.$$is_boolean || val == true)); - }; - - Opal.falsy = function(val) { - return (val === nil || val == null || (val.$$is_boolean && val == false)) - }; - - - // Constants - // --------- - // - // For future reference: - // - The Rails autoloading guide (http://guides.rubyonrails.org/v5.0/autoloading_and_reloading_constants.html) - // - @ConradIrwin's 2012 post on “Everything you ever wanted to know about constant lookup in Ruby” (http://cirw.in/blog/constant-lookup.html) - // - // Legend of MRI concepts/names: - // - constant reference (cref): the module/class that acts as a namespace - // - nesting: the namespaces wrapping the current scope, e.g. nesting inside - // `module A; module B::C; end; end` is `[B::C, A]` - - // Get the constant in the scope of the current cref - function const_get_name(cref, name) { - if (cref) return cref.$$const[name]; - } - - // Walk up the nesting array looking for the constant - function const_lookup_nesting(nesting, name) { - var i, ii, result, constant; - - if (nesting.length === 0) return; - - // If the nesting is not empty the constant is looked up in its elements - // and in order. The ancestors of those elements are ignored. - for (i = 0, ii = nesting.length; i < ii; i++) { - constant = nesting[i].$$const[name]; - if (constant != null) return constant; - } - } - - // Walk up the ancestors chain looking for the constant - function const_lookup_ancestors(cref, name) { - var i, ii, result, ancestors; - - if (cref == null) return; - - ancestors = Opal.ancestors(cref); - - for (i = 0, ii = ancestors.length; i < ii; i++) { - if (ancestors[i].$$const && $hasOwn.call(ancestors[i].$$const, name)) { - return ancestors[i].$$const[name]; - } - } - } - - // Walk up Object's ancestors chain looking for the constant, - // but only if cref is missing or a module. - function const_lookup_Object(cref, name) { - if (cref == null || cref.$$is_module) { - return const_lookup_ancestors(_Object, name); - } - } - - // Call const_missing if nothing else worked - function const_missing(cref, name, skip_missing) { - if (!skip_missing) { - return (cref || _Object).$const_missing(name); - } - } - - // Look for the constant just in the current cref or call `#const_missing` - Opal.const_get_local = function(cref, name, skip_missing) { - var result; - - if (cref == null) return; - - if (cref === '::') cref = _Object; - - if (!cref.$$is_module && !cref.$$is_class) { - throw new Opal.TypeError(cref.toString() + " is not a class/module"); - } - - result = const_get_name(cref, name); if (result != null) return result; - result = const_missing(cref, name, skip_missing); if (result != null) return result; - }; - - // Look for the constant relative to a cref or call `#const_missing` (when the - // constant is prefixed by `::`). - Opal.const_get_qualified = function(cref, name, skip_missing) { - var result, cache, cached, current_version = Opal.const_cache_version; - - if (cref == null) return; - - if (cref === '::') cref = _Object; - - if (!cref.$$is_module && !cref.$$is_class) { - throw new Opal.TypeError(cref.toString() + " is not a class/module"); - } - - if ((cache = cref.$$const_cache) == null) { - $defineProperty(cref, '$$const_cache', Object.create(null)); - cache = cref.$$const_cache; - } - cached = cache[name]; - - if (cached == null || cached[0] !== current_version) { - ((result = const_get_name(cref, name)) != null) || - ((result = const_lookup_ancestors(cref, name)) != null); - cache[name] = [current_version, result]; - } else { - result = cached[1]; - } - - return result != null ? result : const_missing(cref, name, skip_missing); - }; - - // Initialize the top level constant cache generation counter - Opal.const_cache_version = 1; - - // Look for the constant in the open using the current nesting and the nearest - // cref ancestors or call `#const_missing` (when the constant has no :: prefix). - Opal.const_get_relative = function(nesting, name, skip_missing) { - var cref = nesting[0], result, current_version = Opal.const_cache_version, cache, cached; - - if ((cache = nesting.$$const_cache) == null) { - $defineProperty(nesting, '$$const_cache', Object.create(null)); - cache = nesting.$$const_cache; - } - cached = cache[name]; - - if (cached == null || cached[0] !== current_version) { - ((result = const_get_name(cref, name)) != null) || - ((result = const_lookup_nesting(nesting, name)) != null) || - ((result = const_lookup_ancestors(cref, name)) != null) || - ((result = const_lookup_Object(cref, name)) != null); - - cache[name] = [current_version, result]; - } else { - result = cached[1]; - } - - return result != null ? result : const_missing(cref, name, skip_missing); - }; - - // Register the constant on a cref and opportunistically set the name of - // unnamed classes/modules. - Opal.const_set = function(cref, name, value) { - if (cref == null || cref === '::') cref = _Object; - - if (value.$$is_a_module) { - if (value.$$name == null || value.$$name === nil) value.$$name = name; - if (value.$$base_module == null) value.$$base_module = cref; - } - - cref.$$const = (cref.$$const || Object.create(null)); - cref.$$const[name] = value; - - // Add a short helper to navigate constants manually. - // @example - // Opal.$$.Regexp.$$.IGNORECASE - cref.$$ = cref.$$const; - - Opal.const_cache_version++; - - // Expose top level constants onto the Opal object - if (cref === _Object) Opal[name] = value; - - // Name new class directly onto current scope (Opal.Foo.Baz = klass) - $defineProperty(cref, name, value); - - return value; - }; - - // Get all the constants reachable from a given cref, by default will include - // inherited constants. - Opal.constants = function(cref, inherit) { - if (inherit == null) inherit = true; - - var module, modules = [cref], module_constants, i, ii, constants = {}, constant; - - if (inherit) modules = modules.concat(Opal.ancestors(cref)); - if (inherit && cref.$$is_module) modules = modules.concat([Opal.Object]).concat(Opal.ancestors(Opal.Object)); - - for (i = 0, ii = modules.length; i < ii; i++) { - module = modules[i]; - - // Don not show Objects constants unless we're querying Object itself - if (cref !== _Object && module == _Object) break; - - for (constant in module.$$const) { - constants[constant] = true; - } - } - - return Object.keys(constants); - }; - - // Remove a constant from a cref. - Opal.const_remove = function(cref, name) { - Opal.const_cache_version++; - - if (cref.$$const[name] != null) { - var old = cref.$$const[name]; - delete cref.$$const[name]; - return old; - } - - if (cref.$$autoload != null && cref.$$autoload[name] != null) { - delete cref.$$autoload[name]; - return nil; - } - - throw Opal.NameError.$new("constant "+cref+"::"+cref.$name()+" not defined"); - }; - - - // Modules & Classes - // ----------------- - - // A `class Foo; end` expression in ruby is compiled to call this runtime - // method which either returns an existing class of the given name, or creates - // a new class in the given `base` scope. - // - // If a constant with the given name exists, then we check to make sure that - // it is a class and also that the superclasses match. If either of these - // fail, then we raise a `TypeError`. Note, `superclass` may be null if one - // was not specified in the ruby code. - // - // We pass a constructor to this method of the form `function ClassName() {}` - // simply so that classes show up with nicely formatted names inside debuggers - // in the web browser (or node/sprockets). - // - // The `scope` is the current `self` value where the class is being created - // from. We use this to get the scope for where the class should be created. - // If `scope` is an object (not a class/module), we simple get its class and - // use that as the scope instead. - // - // @param scope [Object] where the class is being created - // @param superclass [Class,null] superclass of the new class (may be null) - // @param id [String] the name of the class to be created - // @param constructor [JS.Function] function to use as constructor - // - // @return new [Class] or existing ruby class - // - Opal.allocate_class = function(name, superclass) { - var klass, constructor; - - if (superclass != null && superclass.$$bridge) { - // Inheritance from bridged classes requires - // calling original JS constructors - constructor = function() { - var args = $slice.call(arguments), - self = new ($bind.apply(superclass.$$constructor, [null].concat(args)))(); - - // and replacing a __proto__ manually - $setPrototype(self, klass.$$prototype); - return self; - } - } else { - constructor = function(){}; - } - - if (name) { - $defineProperty(constructor, 'displayName', '::'+name); - } - - klass = constructor; - - $defineProperty(klass, '$$name', name); - $defineProperty(klass, '$$constructor', constructor); - $defineProperty(klass, '$$prototype', constructor.prototype); - $defineProperty(klass, '$$const', {}); - $defineProperty(klass, '$$is_class', true); - $defineProperty(klass, '$$is_a_module', true); - $defineProperty(klass, '$$super', superclass); - $defineProperty(klass, '$$cvars', {}); - $defineProperty(klass, '$$own_included_modules', []); - $defineProperty(klass, '$$own_prepended_modules', []); - $defineProperty(klass, '$$ancestors', []); - $defineProperty(klass, '$$ancestors_cache_version', null); - - $defineProperty(klass.$$prototype, '$$class', klass); - - // By default if there are no singleton class methods - // __proto__ is Class.prototype - // Later singleton methods generate a singleton_class - // and inject it into ancestors chain - if (Opal.Class) { - $setPrototype(klass, Opal.Class.prototype); - } - - if (superclass != null) { - $setPrototype(klass.$$prototype, superclass.$$prototype); - - if (superclass.$$meta) { - // If superclass has metaclass then we have explicitely inherit it. - Opal.build_class_singleton_class(klass); - } - } - - return klass; - }; - - - function find_existing_class(scope, name) { - // Try to find the class in the current scope - var klass = const_get_name(scope, name); - - // If the class exists in the scope, then we must use that - if (klass) { - // Make sure the existing constant is a class, or raise error - if (!klass.$$is_class) { - throw Opal.TypeError.$new(name + " is not a class"); - } - - return klass; - } - } - - function ensureSuperclassMatch(klass, superclass) { - if (klass.$$super !== superclass) { - throw Opal.TypeError.$new("superclass mismatch for class " + klass.$$name); - } - } - - Opal.klass = function(scope, superclass, name) { - var bridged; - - if (scope == null) { - // Global scope - scope = _Object; - } else if (!scope.$$is_class && !scope.$$is_module) { - // Scope is an object, use its class - scope = scope.$$class; - } - - // If the superclass is not an Opal-generated class then we're bridging a native JS class - if (superclass != null && !superclass.hasOwnProperty('$$is_class')) { - bridged = superclass; - superclass = _Object; - } - - var klass = find_existing_class(scope, name); - - if (klass) { - if (superclass) { - // Make sure existing class has same superclass - ensureSuperclassMatch(klass, superclass); - } - return klass; - } - - // Class doesn't exist, create a new one with given superclass... - - // Not specifying a superclass means we can assume it to be Object - if (superclass == null) { - superclass = _Object; - } - - // Create the class object (instance of Class) - klass = Opal.allocate_class(name, superclass); - Opal.const_set(scope, name, klass); - - // Call .inherited() hook with new class on the superclass - if (superclass.$inherited) { - superclass.$inherited(klass); - } - - if (bridged) { - Opal.bridge(bridged, klass); - } - - return klass; - }; - - // Define new module (or return existing module). The given `scope` is basically - // the current `self` value the `module` statement was defined in. If this is - // a ruby module or class, then it is used, otherwise if the scope is a ruby - // object then that objects real ruby class is used (e.g. if the scope is the - // main object, then the top level `Object` class is used as the scope). - // - // If a module of the given name is already defined in the scope, then that - // instance is just returned. - // - // If there is a class of the given name in the scope, then an error is - // generated instead (cannot have a class and module of same name in same scope). - // - // Otherwise, a new module is created in the scope with the given name, and that - // new instance is returned back (to be referenced at runtime). - // - // @param scope [Module, Class] class or module this definition is inside - // @param id [String] the name of the new (or existing) module - // - // @return [Module] - Opal.allocate_module = function(name) { - var constructor = function(){}; - if (name) { - $defineProperty(constructor, 'displayName', name+'.$$constructor'); - } - - var module = constructor; - - if (name) - $defineProperty(constructor, 'displayName', name+'.constructor'); - - $defineProperty(module, '$$name', name); - $defineProperty(module, '$$prototype', constructor.prototype); - $defineProperty(module, '$$const', {}); - $defineProperty(module, '$$is_module', true); - $defineProperty(module, '$$is_a_module', true); - $defineProperty(module, '$$cvars', {}); - $defineProperty(module, '$$iclasses', []); - $defineProperty(module, '$$own_included_modules', []); - $defineProperty(module, '$$own_prepended_modules', []); - $defineProperty(module, '$$ancestors', [module]); - $defineProperty(module, '$$ancestors_cache_version', null); - - $setPrototype(module, Opal.Module.prototype); - - return module; - }; - - function find_existing_module(scope, name) { - var module = const_get_name(scope, name); - if (module == null && scope === _Object) module = const_lookup_ancestors(_Object, name); - - if (module) { - if (!module.$$is_module && module !== _Object) { - throw Opal.TypeError.$new(name + " is not a module"); - } - } - - return module; - } - - Opal.module = function(scope, name) { - var module; - - if (scope == null) { - // Global scope - scope = _Object; - } else if (!scope.$$is_class && !scope.$$is_module) { - // Scope is an object, use its class - scope = scope.$$class; - } - - module = find_existing_module(scope, name); - - if (module) { - return module; - } - - // Module doesnt exist, create a new one... - module = Opal.allocate_module(name); - Opal.const_set(scope, name, module); - - return module; - }; - - // Return the singleton class for the passed object. - // - // If the given object alredy has a singleton class, then it will be stored on - // the object as the `$$meta` property. If this exists, then it is simply - // returned back. - // - // Otherwise, a new singleton object for the class or object is created, set on - // the object at `$$meta` for future use, and then returned. - // - // @param object [Object] the ruby object - // @return [Class] the singleton class for object - Opal.get_singleton_class = function(object) { - if (object.$$meta) { - return object.$$meta; - } - - if (object.hasOwnProperty('$$is_class')) { - return Opal.build_class_singleton_class(object); - } else if (object.hasOwnProperty('$$is_module')) { - return Opal.build_module_singletin_class(object); - } else { - return Opal.build_object_singleton_class(object); - } - }; - - // Build the singleton class for an existing class. Class object are built - // with their singleton class already in the prototype chain and inheriting - // from their superclass object (up to `Class` itself). - // - // NOTE: Actually in MRI a class' singleton class inherits from its - // superclass' singleton class which in turn inherits from Class. - // - // @param klass [Class] - // @return [Class] - Opal.build_class_singleton_class = function(klass) { - var superclass, meta; - - if (klass.$$meta) { - return klass.$$meta; - } - - // The singleton_class superclass is the singleton_class of its superclass; - // but BasicObject has no superclass (its `$$super` is null), thus we - // fallback on `Class`. - superclass = klass === BasicObject ? Class : Opal.get_singleton_class(klass.$$super); - - meta = Opal.allocate_class(null, superclass, function(){}); - - $defineProperty(meta, '$$is_singleton', true); - $defineProperty(meta, '$$singleton_of', klass); - $defineProperty(klass, '$$meta', meta); - $setPrototype(klass, meta.$$prototype); - // Restoring ClassName.class - $defineProperty(klass, '$$class', Opal.Class); - - return meta; - }; - - Opal.build_module_singletin_class = function(mod) { - if (mod.$$meta) { - return mod.$$meta; - } - - var meta = Opal.allocate_class(null, Opal.Module, function(){}); - - $defineProperty(meta, '$$is_singleton', true); - $defineProperty(meta, '$$singleton_of', mod); - $defineProperty(mod, '$$meta', meta); - $setPrototype(mod, meta.$$prototype); - // Restoring ModuleName.class - $defineProperty(mod, '$$class', Opal.Module); - - return meta; - }; - - // Build the singleton class for a Ruby (non class) Object. - // - // @param object [Object] - // @return [Class] - Opal.build_object_singleton_class = function(object) { - var superclass = object.$$class, - klass = Opal.allocate_class(nil, superclass, function(){}); - - $defineProperty(klass, '$$is_singleton', true); - $defineProperty(klass, '$$singleton_of', object); - - delete klass.$$prototype.$$class; - - $defineProperty(object, '$$meta', klass); - - $setPrototype(object, object.$$meta.$$prototype); - - return klass; - }; - - Opal.is_method = function(prop) { - return (prop[0] === '$' && prop[1] !== '$'); - }; - - Opal.instance_methods = function(mod) { - var exclude = [], results = [], ancestors = Opal.ancestors(mod); - - for (var i = 0, l = ancestors.length; i < l; i++) { - var ancestor = ancestors[i], - proto = ancestor.$$prototype; - - if (proto.hasOwnProperty('$$dummy')) { - proto = proto.$$define_methods_on; - } - - var props = Object.getOwnPropertyNames(proto); - - for (var j = 0, ll = props.length; j < ll; j++) { - var prop = props[j]; - - if (Opal.is_method(prop)) { - var method_name = prop.slice(1), - method = proto[prop]; - - if (method.$$stub && exclude.indexOf(method_name) === -1) { - exclude.push(method_name); - } - - if (!method.$$stub && results.indexOf(method_name) === -1 && exclude.indexOf(method_name) === -1) { - results.push(method_name); - } - } - } - } - - return results; - }; - - Opal.own_instance_methods = function(mod) { - var results = [], - proto = mod.$$prototype; - - if (proto.hasOwnProperty('$$dummy')) { - proto = proto.$$define_methods_on; - } - - var props = Object.getOwnPropertyNames(proto); - - for (var i = 0, length = props.length; i < length; i++) { - var prop = props[i]; - - if (Opal.is_method(prop)) { - var method = proto[prop]; - - if (!method.$$stub) { - var method_name = prop.slice(1); - results.push(method_name); - } - } - } - - return results; - }; - - Opal.methods = function(obj) { - return Opal.instance_methods(Opal.get_singleton_class(obj)); - }; - - Opal.own_methods = function(obj) { - return Opal.own_instance_methods(Opal.get_singleton_class(obj)); - }; - - Opal.receiver_methods = function(obj) { - var mod = Opal.get_singleton_class(obj); - var singleton_methods = Opal.own_instance_methods(mod); - var instance_methods = Opal.own_instance_methods(mod.$$super); - return singleton_methods.concat(instance_methods); - }; - - // Returns an object containing all pairs of names/values - // for all class variables defined in provided +module+ - // and its ancestors. - // - // @param module [Module] - // @return [Object] - Opal.class_variables = function(module) { - var ancestors = Opal.ancestors(module), - i, length = ancestors.length, - result = {}; - - for (i = length - 1; i >= 0; i--) { - var ancestor = ancestors[i]; - - for (var cvar in ancestor.$$cvars) { - result[cvar] = ancestor.$$cvars[cvar]; - } - } - - return result; - }; - - // Sets class variable with specified +name+ to +value+ - // in provided +module+ - // - // @param module [Module] - // @param name [String] - // @param value [Object] - Opal.class_variable_set = function(module, name, value) { - var ancestors = Opal.ancestors(module), - i, length = ancestors.length; - - for (i = length - 2; i >= 0; i--) { - var ancestor = ancestors[i]; - - if ($hasOwn.call(ancestor.$$cvars, name)) { - ancestor.$$cvars[name] = value; - return value; - } - } - - module.$$cvars[name] = value; - - return value; - }; - - function isRoot(proto) { - return proto.hasOwnProperty('$$iclass') && proto.hasOwnProperty('$$root'); - } - - function own_included_modules(module) { - var result = [], mod, proto = Object.getPrototypeOf(module.$$prototype); - - while (proto) { - if (proto.hasOwnProperty('$$class')) { - // superclass - break; - } - mod = protoToModule(proto); - if (mod) { - result.push(mod); - } - proto = Object.getPrototypeOf(proto); - } - - return result; - } - - function own_prepended_modules(module) { - var result = [], mod, proto = Object.getPrototypeOf(module.$$prototype); - - if (module.$$prototype.hasOwnProperty('$$dummy')) { - while (proto) { - if (proto === module.$$prototype.$$define_methods_on) { - break; - } - - mod = protoToModule(proto); - if (mod) { - result.push(mod); - } - - proto = Object.getPrototypeOf(proto); - } - } - - return result; - } - - - // The actual inclusion of a module into a class. - // - // ## Class `$$parent` and `iclass` - // - // To handle `super` calls, every class has a `$$parent`. This parent is - // used to resolve the next class for a super call. A normal class would - // have this point to its superclass. However, if a class includes a module - // then this would need to take into account the module. The module would - // also have to then point its `$$parent` to the actual superclass. We - // cannot modify modules like this, because it might be included in more - // then one class. To fix this, we actually insert an `iclass` as the class' - // `$$parent` which can then point to the superclass. The `iclass` acts as - // a proxy to the actual module, so the `super` chain can then search it for - // the required method. - // - // @param module [Module] the module to include - // @param includer [Module] the target class to include module into - // @return [null] - Opal.append_features = function(module, includer) { - var module_ancestors = Opal.ancestors(module); - var iclasses = []; - - if (module_ancestors.indexOf(includer) !== -1) { - throw Opal.ArgumentError.$new('cyclic include detected'); - } - - for (var i = 0, length = module_ancestors.length; i < length; i++) { - var ancestor = module_ancestors[i], iclass = create_iclass(ancestor); - $defineProperty(iclass, '$$included', true); - iclasses.push(iclass); - } - var includer_ancestors = Opal.ancestors(includer), - chain = chain_iclasses(iclasses), - start_chain_after, - end_chain_on; - - if (includer_ancestors.indexOf(module) === -1) { - // first time include - - // includer -> chain.first -> ...chain... -> chain.last -> includer.parent - start_chain_after = includer.$$prototype; - end_chain_on = Object.getPrototypeOf(includer.$$prototype); - } else { - // The module has been already included, - // we don't need to put it into the ancestors chain again, - // but this module may have new included modules. - // If it's true we need to copy them. - // - // The simplest way is to replace ancestors chain from - // parent - // | - // `module` iclass (has a $$root flag) - // | - // ...previos chain of module.included_modules ... - // | - // "next ancestor" (has a $$root flag or is a real class) - // - // to - // parent - // | - // `module` iclass (has a $$root flag) - // | - // ...regenerated chain of module.included_modules - // | - // "next ancestor" (has a $$root flag or is a real class) - // - // because there are no intermediate classes between `parent` and `next ancestor`. - // It doesn't break any prototypes of other objects as we don't change class references. - - var proto = includer.$$prototype, parent = proto, module_iclass = Object.getPrototypeOf(parent); - - while (module_iclass != null) { - if (isRoot(module_iclass) && module_iclass.$$module === module) { - break; - } - - parent = module_iclass; - module_iclass = Object.getPrototypeOf(module_iclass); - } - - var next_ancestor = Object.getPrototypeOf(module_iclass); - - // skip non-root iclasses (that were recursively included) - while (next_ancestor.hasOwnProperty('$$iclass') && !isRoot(next_ancestor)) { - next_ancestor = Object.getPrototypeOf(next_ancestor); - } - - start_chain_after = parent; - end_chain_on = next_ancestor; - } - - $setPrototype(start_chain_after, chain.first); - $setPrototype(chain.last, end_chain_on); - - // recalculate own_included_modules cache - includer.$$own_included_modules = own_included_modules(includer); - - Opal.const_cache_version++; - }; - - Opal.prepend_features = function(module, prepender) { - // Here we change the ancestors chain from - // - // prepender - // | - // parent - // - // to: - // - // dummy(prepender) - // | - // iclass(module) - // | - // iclass(prepender) - // | - // parent - var module_ancestors = Opal.ancestors(module); - var iclasses = []; - - if (module_ancestors.indexOf(prepender) !== -1) { - throw Opal.ArgumentError.$new('cyclic prepend detected'); - } - - for (var i = 0, length = module_ancestors.length; i < length; i++) { - var ancestor = module_ancestors[i], iclass = create_iclass(ancestor); - $defineProperty(iclass, '$$prepended', true); - iclasses.push(iclass); - } - - var chain = chain_iclasses(iclasses), - dummy_prepender = prepender.$$prototype, - previous_parent = Object.getPrototypeOf(dummy_prepender), - prepender_iclass, - start_chain_after, - end_chain_on; - - if (dummy_prepender.hasOwnProperty('$$dummy')) { - // The module already has some prepended modules - // which means that we don't need to make it "dummy" - prepender_iclass = dummy_prepender.$$define_methods_on; - } else { - // Making the module "dummy" - prepender_iclass = create_dummy_iclass(prepender); - flush_methods_in(prepender); - $defineProperty(dummy_prepender, '$$dummy', true); - $defineProperty(dummy_prepender, '$$define_methods_on', prepender_iclass); - - // Converting - // dummy(prepender) -> previous_parent - // to - // dummy(prepender) -> iclass(prepender) -> previous_parent - $setPrototype(dummy_prepender, prepender_iclass); - $setPrototype(prepender_iclass, previous_parent); - } - - var prepender_ancestors = Opal.ancestors(prepender); - - if (prepender_ancestors.indexOf(module) === -1) { - // first time prepend - - start_chain_after = dummy_prepender; - - // next $$root or prepender_iclass or non-$$iclass - end_chain_on = Object.getPrototypeOf(dummy_prepender); - while (end_chain_on != null) { - if ( - end_chain_on.hasOwnProperty('$$root') || - end_chain_on === prepender_iclass || - !end_chain_on.hasOwnProperty('$$iclass') - ) { - break; - } - - end_chain_on = Object.getPrototypeOf(end_chain_on); - } - } else { - throw Opal.RuntimeError.$new("Prepending a module multiple times is not supported"); - } - - $setPrototype(start_chain_after, chain.first); - $setPrototype(chain.last, end_chain_on); - - // recalculate own_prepended_modules cache - prepender.$$own_prepended_modules = own_prepended_modules(prepender); - - Opal.const_cache_version++; - }; - - function flush_methods_in(module) { - var proto = module.$$prototype, - props = Object.getOwnPropertyNames(proto); - - for (var i = 0; i < props.length; i++) { - var prop = props[i]; - if (Opal.is_method(prop)) { - delete proto[prop]; - } - } - } - - function create_iclass(module) { - var iclass = create_dummy_iclass(module); - - if (module.$$is_module) { - module.$$iclasses.push(iclass); - } - - return iclass; - } - - // Dummy iclass doesn't receive updates when the module gets a new method. - function create_dummy_iclass(module) { - var iclass = {}, - proto = module.$$prototype; - - if (proto.hasOwnProperty('$$dummy')) { - proto = proto.$$define_methods_on; - } - - var props = Object.getOwnPropertyNames(proto), - length = props.length, i; - - for (i = 0; i < length; i++) { - var prop = props[i]; - $defineProperty(iclass, prop, proto[prop]); - } - - $defineProperty(iclass, '$$iclass', true); - $defineProperty(iclass, '$$module', module); - - return iclass; - } - - function chain_iclasses(iclasses) { - var length = iclasses.length, first = iclasses[0]; - - $defineProperty(first, '$$root', true); - - if (length === 1) { - return { first: first, last: first }; - } - - var previous = first; - - for (var i = 1; i < length; i++) { - var current = iclasses[i]; - $setPrototype(previous, current); - previous = current; - } - - - return { first: iclasses[0], last: iclasses[length - 1] }; - } - - // For performance, some core Ruby classes are toll-free bridged to their - // native JavaScript counterparts (e.g. a Ruby Array is a JavaScript Array). - // - // This method is used to setup a native constructor (e.g. Array), to have - // its prototype act like a normal Ruby class. Firstly, a new Ruby class is - // created using the native constructor so that its prototype is set as the - // target for the new class. Note: all bridged classes are set to inherit - // from Object. - // - // Example: - // - // Opal.bridge(self, Function); - // - // @param klass [Class] the Ruby class to bridge - // @param constructor [JS.Function] native JavaScript constructor to use - // @return [Class] returns the passed Ruby class - // - Opal.bridge = function(native_klass, klass) { - if (native_klass.hasOwnProperty('$$bridge')) { - throw Opal.ArgumentError.$new("already bridged"); - } - - var klass_to_inject, klass_reference; - - klass_to_inject = klass.$$super || Opal.Object; - klass_reference = klass; - var original_prototype = klass.$$prototype; - - // constructor is a JS function with a prototype chain like: - // - constructor - // - super - // - // What we need to do is to inject our class (with its prototype chain) - // between constructor and super. For example, after injecting ::Object - // into JS String we get: - // - // - constructor (window.String) - // - Opal.Object - // - Opal.Kernel - // - Opal.BasicObject - // - super (window.Object) - // - null - // - $defineProperty(native_klass, '$$bridge', klass); - $setPrototype(native_klass.prototype, (klass.$$super || Opal.Object).$$prototype); - $defineProperty(klass, '$$prototype', native_klass.prototype); - - $defineProperty(klass.$$prototype, '$$class', klass); - $defineProperty(klass, '$$constructor', native_klass); - $defineProperty(klass, '$$bridge', true); - }; - - function protoToModule(proto) { - if (proto.hasOwnProperty('$$dummy')) { - return; - } else if (proto.hasOwnProperty('$$iclass')) { - return proto.$$module; - } else if (proto.hasOwnProperty('$$class')) { - return proto.$$class; - } - } - - function own_ancestors(module) { - return module.$$own_prepended_modules.concat([module]).concat(module.$$own_included_modules); - } - - // The Array of ancestors for a given module/class - Opal.ancestors = function(module) { - if (!module) { return []; } - - if (module.$$ancestors_cache_version === Opal.const_cache_version) { - return module.$$ancestors; - } - - var result = [], i, mods, length; - - for (i = 0, mods = own_ancestors(module), length = mods.length; i < length; i++) { - result.push(mods[i]); - } - - if (module.$$super) { - for (i = 0, mods = Opal.ancestors(module.$$super), length = mods.length; i < length; i++) { - result.push(mods[i]); - } - } - - module.$$ancestors_cache_version = Opal.const_cache_version; - module.$$ancestors = result; - - return result; - }; - - Opal.included_modules = function(module) { - var result = [], mod = null, proto = Object.getPrototypeOf(module.$$prototype); - - for (; proto && Object.getPrototypeOf(proto); proto = Object.getPrototypeOf(proto)) { - mod = protoToModule(proto); - if (mod && mod.$$is_module && proto.$$iclass && proto.$$included) { - result.push(mod); - } - } - - return result; - }; - - - // Method Missing - // -------------- - - // Methods stubs are used to facilitate method_missing in opal. A stub is a - // placeholder function which just calls `method_missing` on the receiver. - // If no method with the given name is actually defined on an object, then it - // is obvious to say that the stub will be called instead, and then in turn - // method_missing will be called. - // - // When a file in ruby gets compiled to javascript, it includes a call to - // this function which adds stubs for every method name in the compiled file. - // It should then be safe to assume that method_missing will work for any - // method call detected. - // - // Method stubs are added to the BasicObject prototype, which every other - // ruby object inherits, so all objects should handle method missing. A stub - // is only added if the given property name (method name) is not already - // defined. - // - // Note: all ruby methods have a `$` prefix in javascript, so all stubs will - // have this prefix as well (to make this method more performant). - // - // Opal.add_stubs(["$foo", "$bar", "$baz="]); - // - // All stub functions will have a private `$$stub` property set to true so - // that other internal methods can detect if a method is just a stub or not. - // `Kernel#respond_to?` uses this property to detect a methods presence. - // - // @param stubs [Array] an array of method stubs to add - // @return [undefined] - Opal.add_stubs = function(stubs) { - var proto = Opal.BasicObject.$$prototype; - - for (var i = 0, length = stubs.length; i < length; i++) { - var stub = stubs[i], existing_method = proto[stub]; - - if (existing_method == null || existing_method.$$stub) { - Opal.add_stub_for(proto, stub); - } - } - }; - - // Add a method_missing stub function to the given prototype for the - // given name. - // - // @param prototype [Prototype] the target prototype - // @param stub [String] stub name to add (e.g. "$foo") - // @return [undefined] - Opal.add_stub_for = function(prototype, stub) { - var method_missing_stub = Opal.stub_for(stub); - $defineProperty(prototype, stub, method_missing_stub); - }; - - // Generate the method_missing stub for a given method name. - // - // @param method_name [String] The js-name of the method to stub (e.g. "$foo") - // @return [undefined] - Opal.stub_for = function(method_name) { - function method_missing_stub() { - // Copy any given block onto the method_missing dispatcher - this.$method_missing.$$p = method_missing_stub.$$p; - - // Set block property to null ready for the next call (stop false-positives) - method_missing_stub.$$p = null; - - // call method missing with correct args (remove '$' prefix on method name) - var args_ary = new Array(arguments.length); - for(var i = 0, l = args_ary.length; i < l; i++) { args_ary[i] = arguments[i]; } - - return this.$method_missing.apply(this, [method_name.slice(1)].concat(args_ary)); - } - - method_missing_stub.$$stub = true; - - return method_missing_stub; - }; - - - // Methods - // ------- - - // Arity count error dispatcher for methods - // - // @param actual [Fixnum] number of arguments given to method - // @param expected [Fixnum] expected number of arguments - // @param object [Object] owner of the method +meth+ - // @param meth [String] method name that got wrong number of arguments - // @raise [ArgumentError] - Opal.ac = function(actual, expected, object, meth) { - var inspect = ''; - if (object.$$is_a_module) { - inspect += object.$$name + '.'; - } - else { - inspect += object.$$class.$$name + '#'; - } - inspect += meth; - - throw Opal.ArgumentError.$new('[' + inspect + '] wrong number of arguments(' + actual + ' for ' + expected + ')'); - }; - - // Arity count error dispatcher for blocks - // - // @param actual [Fixnum] number of arguments given to block - // @param expected [Fixnum] expected number of arguments - // @param context [Object] context of the block definition - // @raise [ArgumentError] - Opal.block_ac = function(actual, expected, context) { - var inspect = "`block in " + context + "'"; - - throw Opal.ArgumentError.$new(inspect + ': wrong number of arguments (' + actual + ' for ' + expected + ')'); - }; - - // Super dispatcher - Opal.find_super_dispatcher = function(obj, mid, current_func, defcheck, defs) { - var jsid = '$' + mid, ancestors, super_method; - - if (obj.hasOwnProperty('$$meta')) { - ancestors = Opal.ancestors(obj.$$meta); - } else { - ancestors = Opal.ancestors(obj.$$class); - } - - var current_index = ancestors.indexOf(current_func.$$owner); - - for (var i = current_index + 1; i < ancestors.length; i++) { - var ancestor = ancestors[i], - proto = ancestor.$$prototype; - - if (proto.hasOwnProperty('$$dummy')) { - proto = proto.$$define_methods_on; - } - - if (proto.hasOwnProperty(jsid)) { - var method = proto[jsid]; - - if (!method.$$stub) { - super_method = method; - } - break; - } - } - - if (!defcheck && super_method == null && Opal.Kernel.$method_missing === obj.$method_missing) { - // method_missing hasn't been explicitly defined - throw Opal.NoMethodError.$new('super: no superclass method `'+mid+"' for "+obj, mid); - } - - return super_method; - }; - - // Iter dispatcher for super in a block - Opal.find_iter_super_dispatcher = function(obj, jsid, current_func, defcheck, implicit) { - var call_jsid = jsid; - - if (!current_func) { - throw Opal.RuntimeError.$new("super called outside of method"); - } - - if (implicit && current_func.$$define_meth) { - throw Opal.RuntimeError.$new("implicit argument passing of super from method defined by define_method() is not supported. Specify all arguments explicitly"); - } - - if (current_func.$$def) { - call_jsid = current_func.$$jsid; - } - - return Opal.find_super_dispatcher(obj, call_jsid, current_func, defcheck); - }; - - // Used to return as an expression. Sometimes, we can't simply return from - // a javascript function as if we were a method, as the return is used as - // an expression, or even inside a block which must "return" to the outer - // method. This helper simply throws an error which is then caught by the - // method. This approach is expensive, so it is only used when absolutely - // needed. - // - Opal.ret = function(val) { - Opal.returner.$v = val; - throw Opal.returner; - }; - - // Used to break out of a block. - Opal.brk = function(val, breaker) { - breaker.$v = val; - throw breaker; - }; - - // Builds a new unique breaker, this is to avoid multiple nested breaks to get - // in the way of each other. - Opal.new_brk = function() { - return new Error('unexpected break'); - }; - - // handles yield calls for 1 yielded arg - Opal.yield1 = function(block, arg) { - if (typeof(block) !== "function") { - throw Opal.LocalJumpError.$new("no block given"); - } - - var has_mlhs = block.$$has_top_level_mlhs_arg, - has_trailing_comma = block.$$has_trailing_comma_in_args; - - if (block.length > 1 || ((has_mlhs || has_trailing_comma) && block.length === 1)) { - arg = Opal.to_ary(arg); - } - - if ((block.length > 1 || (has_trailing_comma && block.length === 1)) && arg.$$is_array) { - return block.apply(null, arg); - } - else { - return block(arg); - } - }; - - // handles yield for > 1 yielded arg - Opal.yieldX = function(block, args) { - if (typeof(block) !== "function") { - throw Opal.LocalJumpError.$new("no block given"); - } - - if (block.length > 1 && args.length === 1) { - if (args[0].$$is_array) { - return block.apply(null, args[0]); - } - } - - if (!args.$$is_array) { - var args_ary = new Array(args.length); - for(var i = 0, l = args_ary.length; i < l; i++) { args_ary[i] = args[i]; } - - return block.apply(null, args_ary); - } - - return block.apply(null, args); - }; - - // Finds the corresponding exception match in candidates. Each candidate can - // be a value, or an array of values. Returns null if not found. - Opal.rescue = function(exception, candidates) { - for (var i = 0; i < candidates.length; i++) { - var candidate = candidates[i]; - - if (candidate.$$is_array) { - var result = Opal.rescue(exception, candidate); - - if (result) { - return result; - } - } - else if (candidate === Opal.JS.Error) { - return candidate; - } - else if (candidate['$==='](exception)) { - return candidate; - } - } - - return null; - }; - - Opal.is_a = function(object, klass) { - if (klass != null && object.$$meta === klass || object.$$class === klass) { - return true; - } - - if (object.$$is_number && klass.$$is_number_class) { - return true; - } - - var i, length, ancestors = Opal.ancestors(object.$$is_class ? Opal.get_singleton_class(object) : (object.$$meta || object.$$class)); - - for (i = 0, length = ancestors.length; i < length; i++) { - if (ancestors[i] === klass) { - return true; - } - } - - return false; - }; - - // Helpers for extracting kwsplats - // Used for: { **h } - Opal.to_hash = function(value) { - if (value.$$is_hash) { - return value; - } - else if (value['$respond_to?']('to_hash', true)) { - var hash = value.$to_hash(); - if (hash.$$is_hash) { - return hash; - } - else { - throw Opal.TypeError.$new("Can't convert " + value.$$class + - " to Hash (" + value.$$class + "#to_hash gives " + hash.$$class + ")"); - } - } - else { - throw Opal.TypeError.$new("no implicit conversion of " + value.$$class + " into Hash"); - } - }; - - // Helpers for implementing multiple assignment - // Our code for extracting the values and assigning them only works if the - // return value is a JS array. - // So if we get an Array subclass, extract the wrapped JS array from it - - // Used for: a, b = something (no splat) - Opal.to_ary = function(value) { - if (value.$$is_array) { - return value; - } - else if (value['$respond_to?']('to_ary', true)) { - var ary = value.$to_ary(); - if (ary === nil) { - return [value]; - } - else if (ary.$$is_array) { - return ary; - } - else { - throw Opal.TypeError.$new("Can't convert " + value.$$class + - " to Array (" + value.$$class + "#to_ary gives " + ary.$$class + ")"); - } - } - else { - return [value]; - } - }; - - // Used for: a, b = *something (with splat) - Opal.to_a = function(value) { - if (value.$$is_array) { - // A splatted array must be copied - return value.slice(); - } - else if (value['$respond_to?']('to_a', true)) { - var ary = value.$to_a(); - if (ary === nil) { - return [value]; - } - else if (ary.$$is_array) { - return ary; - } - else { - throw Opal.TypeError.$new("Can't convert " + value.$$class + - " to Array (" + value.$$class + "#to_a gives " + ary.$$class + ")"); - } - } - else { - return [value]; - } - }; - - // Used for extracting keyword arguments from arguments passed to - // JS function. If provided +arguments+ list doesn't have a Hash - // as a last item, returns a blank Hash. - // - // @param parameters [Array] - // @return [Hash] - // - Opal.extract_kwargs = function(parameters) { - var kwargs = parameters[parameters.length - 1]; - if (kwargs != null && kwargs['$respond_to?']('to_hash', true)) { - $splice.call(parameters, parameters.length - 1, 1); - return kwargs.$to_hash(); - } - else { - return Opal.hash2([], {}); - } - }; - - // Used to get a list of rest keyword arguments. Method takes the given - // keyword args, i.e. the hash literal passed to the method containing all - // keyword arguemnts passed to method, as well as the used args which are - // the names of required and optional arguments defined. This method then - // just returns all key/value pairs which have not been used, in a new - // hash literal. - // - // @param given_args [Hash] all kwargs given to method - // @param used_args [Object] all keys used as named kwargs - // @return [Hash] - // - Opal.kwrestargs = function(given_args, used_args) { - var keys = [], - map = {}, - key , - given_map = given_args.$$smap; - - for (key in given_map) { - if (!used_args[key]) { - keys.push(key); - map[key] = given_map[key]; - } - } - - return Opal.hash2(keys, map); - }; - - // Calls passed method on a ruby object with arguments and block: - // - // Can take a method or a method name. - // - // 1. When method name gets passed it invokes it by its name - // and calls 'method_missing' when object doesn't have this method. - // Used internally by Opal to invoke method that takes a block or a splat. - // 2. When method (i.e. method body) gets passed, it doesn't trigger 'method_missing' - // because it doesn't know the name of the actual method. - // Used internally by Opal to invoke 'super'. - // - // @example - // var my_array = [1, 2, 3, 4] - // Opal.send(my_array, 'length') # => 4 - // Opal.send(my_array, my_array.$length) # => 4 - // - // Opal.send(my_array, 'reverse!') # => [4, 3, 2, 1] - // Opal.send(my_array, my_array['$reverse!']') # => [4, 3, 2, 1] - // - // @param recv [Object] ruby object - // @param method [Function, String] method body or name of the method - // @param args [Array] arguments that will be passed to the method call - // @param block [Function] ruby block - // @return [Object] returning value of the method call - Opal.send = function(recv, method, args, block) { - var body = (typeof(method) === 'string') ? recv['$'+method] : method; - - if (body != null) { - if (typeof block === 'function') { - body.$$p = block; - } - return body.apply(recv, args); - } - - return recv.$method_missing.apply(recv, [method].concat(args)); - }; - - Opal.lambda = function(block) { - block.$$is_lambda = true; - return block; - }; - - // Used to define methods on an object. This is a helper method, used by the - // compiled source to define methods on special case objects when the compiler - // can not determine the destination object, or the object is a Module - // instance. This can get called by `Module#define_method` as well. - // - // ## Modules - // - // Any method defined on a module will come through this runtime helper. - // The method is added to the module body, and the owner of the method is - // set to be the module itself. This is used later when choosing which - // method should show on a class if more than 1 included modules define - // the same method. Finally, if the module is in `module_function` mode, - // then the method is also defined onto the module itself. - // - // ## Classes - // - // This helper will only be called for classes when a method is being - // defined indirectly; either through `Module#define_method`, or by a - // literal `def` method inside an `instance_eval` or `class_eval` body. In - // either case, the method is simply added to the class' prototype. A special - // exception exists for `BasicObject` and `Object`. These two classes are - // special because they are used in toll-free bridged classes. In each of - // these two cases, extra work is required to define the methods on toll-free - // bridged class' prototypes as well. - // - // ## Objects - // - // If a simple ruby object is the object, then the method is simply just - // defined on the object as a singleton method. This would be the case when - // a method is defined inside an `instance_eval` block. - // - // @param obj [Object, Class] the actual obj to define method for - // @param jsid [String] the JavaScript friendly method name (e.g. '$foo') - // @param body [JS.Function] the literal JavaScript function used as method - // @return [null] - // - Opal.def = function(obj, jsid, body) { - // Special case for a method definition in the - // top-level namespace - if (obj === Opal.top) { - Opal.defn(Opal.Object, jsid, body) - } - // if instance_eval is invoked on a module/class, it sets inst_eval_mod - else if (!obj.$$eval && obj.$$is_a_module) { - Opal.defn(obj, jsid, body); - } - else { - Opal.defs(obj, jsid, body); - } - }; - - // Define method on a module or class (see Opal.def). - Opal.defn = function(module, jsid, body) { - body.displayName = jsid; - body.$$owner = module; - - var proto = module.$$prototype; - if (proto.hasOwnProperty('$$dummy')) { - proto = proto.$$define_methods_on; - } - $defineProperty(proto, jsid, body); - - if (module.$$is_module) { - if (module.$$module_function) { - Opal.defs(module, jsid, body) - } - - for (var i = 0, iclasses = module.$$iclasses, length = iclasses.length; i < length; i++) { - var iclass = iclasses[i]; - $defineProperty(iclass, jsid, body); - } - } - - var singleton_of = module.$$singleton_of; - if (module.$method_added && !module.$method_added.$$stub && !singleton_of) { - module.$method_added(jsid.substr(1)); - } - else if (singleton_of && singleton_of.$singleton_method_added && !singleton_of.$singleton_method_added.$$stub) { - singleton_of.$singleton_method_added(jsid.substr(1)); - } - }; - - // Define a singleton method on the given object (see Opal.def). - Opal.defs = function(obj, jsid, body) { - if (obj.$$is_string || obj.$$is_number) { - throw Opal.TypeError.$new("can't define singleton"); - } - Opal.defn(Opal.get_singleton_class(obj), jsid, body) - }; - - // Called from #remove_method. - Opal.rdef = function(obj, jsid) { - if (!$hasOwn.call(obj.$$prototype, jsid)) { - throw Opal.NameError.$new("method '" + jsid.substr(1) + "' not defined in " + obj.$name()); - } - - delete obj.$$prototype[jsid]; - - if (obj.$$is_singleton) { - if (obj.$$prototype.$singleton_method_removed && !obj.$$prototype.$singleton_method_removed.$$stub) { - obj.$$prototype.$singleton_method_removed(jsid.substr(1)); - } - } - else { - if (obj.$method_removed && !obj.$method_removed.$$stub) { - obj.$method_removed(jsid.substr(1)); - } - } - }; - - // Called from #undef_method. - Opal.udef = function(obj, jsid) { - if (!obj.$$prototype[jsid] || obj.$$prototype[jsid].$$stub) { - throw Opal.NameError.$new("method '" + jsid.substr(1) + "' not defined in " + obj.$name()); - } - - Opal.add_stub_for(obj.$$prototype, jsid); - - if (obj.$$is_singleton) { - if (obj.$$prototype.$singleton_method_undefined && !obj.$$prototype.$singleton_method_undefined.$$stub) { - obj.$$prototype.$singleton_method_undefined(jsid.substr(1)); - } - } - else { - if (obj.$method_undefined && !obj.$method_undefined.$$stub) { - obj.$method_undefined(jsid.substr(1)); - } - } - }; - - function is_method_body(body) { - return (typeof(body) === "function" && !body.$$stub); - } - - Opal.alias = function(obj, name, old) { - var id = '$' + name, - old_id = '$' + old, - body = obj.$$prototype['$' + old], - alias; - - // When running inside #instance_eval the alias refers to class methods. - if (obj.$$eval) { - return Opal.alias(Opal.get_singleton_class(obj), name, old); - } - - if (!is_method_body(body)) { - var ancestor = obj.$$super; - - while (typeof(body) !== "function" && ancestor) { - body = ancestor[old_id]; - ancestor = ancestor.$$super; - } - - if (!is_method_body(body) && obj.$$is_module) { - // try to look into Object - body = Opal.Object.$$prototype[old_id] - } - - if (!is_method_body(body)) { - throw Opal.NameError.$new("undefined method `" + old + "' for class `" + obj.$name() + "'") - } - } - - // If the body is itself an alias use the original body - // to keep the max depth at 1. - if (body.$$alias_of) body = body.$$alias_of; - - // We need a wrapper because otherwise properties - // would be ovrewritten on the original body. - alias = function() { - var block = alias.$$p, args, i, ii; - - args = new Array(arguments.length); - for(i = 0, ii = arguments.length; i < ii; i++) { - args[i] = arguments[i]; - } - - if (block != null) { alias.$$p = null } - - return Opal.send(this, body, args, block); - }; - - // Try to make the browser pick the right name - alias.displayName = name; - alias.length = body.length; - alias.$$arity = body.$$arity; - alias.$$parameters = body.$$parameters; - alias.$$source_location = body.$$source_location; - alias.$$alias_of = body; - alias.$$alias_name = name; - - Opal.defn(obj, id, alias); - - return obj; - }; - - Opal.alias_native = function(obj, name, native_name) { - var id = '$' + name, - body = obj.$$prototype[native_name]; - - if (typeof(body) !== "function" || body.$$stub) { - throw Opal.NameError.$new("undefined native method `" + native_name + "' for class `" + obj.$name() + "'") - } - - Opal.defn(obj, id, body); - - return obj; - }; - - - // Hashes - // ------ - - Opal.hash_init = function(hash) { - hash.$$smap = Object.create(null); - hash.$$map = Object.create(null); - hash.$$keys = []; - }; - - Opal.hash_clone = function(from_hash, to_hash) { - to_hash.$$none = from_hash.$$none; - to_hash.$$proc = from_hash.$$proc; - - for (var i = 0, keys = from_hash.$$keys, smap = from_hash.$$smap, len = keys.length, key, value; i < len; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = smap[key]; - } else { - value = key.value; - key = key.key; - } - - Opal.hash_put(to_hash, key, value); - } - }; - - Opal.hash_put = function(hash, key, value) { - if (key.$$is_string) { - if (!$hasOwn.call(hash.$$smap, key)) { - hash.$$keys.push(key); - } - hash.$$smap[key] = value; - return; - } - - var key_hash, bucket, last_bucket; - key_hash = hash.$$by_identity ? Opal.id(key) : key.$hash(); - - if (!$hasOwn.call(hash.$$map, key_hash)) { - bucket = {key: key, key_hash: key_hash, value: value}; - hash.$$keys.push(bucket); - hash.$$map[key_hash] = bucket; - return; - } - - bucket = hash.$$map[key_hash]; - - while (bucket) { - if (key === bucket.key || key['$eql?'](bucket.key)) { - last_bucket = undefined; - bucket.value = value; - break; - } - last_bucket = bucket; - bucket = bucket.next; - } - - if (last_bucket) { - bucket = {key: key, key_hash: key_hash, value: value}; - hash.$$keys.push(bucket); - last_bucket.next = bucket; - } - }; - - Opal.hash_get = function(hash, key) { - if (key.$$is_string) { - if ($hasOwn.call(hash.$$smap, key)) { - return hash.$$smap[key]; - } - return; - } - - var key_hash, bucket; - key_hash = hash.$$by_identity ? Opal.id(key) : key.$hash(); - - if ($hasOwn.call(hash.$$map, key_hash)) { - bucket = hash.$$map[key_hash]; - - while (bucket) { - if (key === bucket.key || key['$eql?'](bucket.key)) { - return bucket.value; - } - bucket = bucket.next; - } - } - }; - - Opal.hash_delete = function(hash, key) { - var i, keys = hash.$$keys, length = keys.length, value; - - if (key.$$is_string) { - if (!$hasOwn.call(hash.$$smap, key)) { - return; - } - - for (i = 0; i < length; i++) { - if (keys[i] === key) { - keys.splice(i, 1); - break; - } - } - - value = hash.$$smap[key]; - delete hash.$$smap[key]; - return value; - } - - var key_hash = key.$hash(); - - if (!$hasOwn.call(hash.$$map, key_hash)) { - return; - } - - var bucket = hash.$$map[key_hash], last_bucket; - - while (bucket) { - if (key === bucket.key || key['$eql?'](bucket.key)) { - value = bucket.value; - - for (i = 0; i < length; i++) { - if (keys[i] === bucket) { - keys.splice(i, 1); - break; - } - } - - if (last_bucket && bucket.next) { - last_bucket.next = bucket.next; - } - else if (last_bucket) { - delete last_bucket.next; - } - else if (bucket.next) { - hash.$$map[key_hash] = bucket.next; - } - else { - delete hash.$$map[key_hash]; - } - - return value; - } - last_bucket = bucket; - bucket = bucket.next; - } - }; - - Opal.hash_rehash = function(hash) { - for (var i = 0, length = hash.$$keys.length, key_hash, bucket, last_bucket; i < length; i++) { - - if (hash.$$keys[i].$$is_string) { - continue; - } - - key_hash = hash.$$keys[i].key.$hash(); - - if (key_hash === hash.$$keys[i].key_hash) { - continue; - } - - bucket = hash.$$map[hash.$$keys[i].key_hash]; - last_bucket = undefined; - - while (bucket) { - if (bucket === hash.$$keys[i]) { - if (last_bucket && bucket.next) { - last_bucket.next = bucket.next; - } - else if (last_bucket) { - delete last_bucket.next; - } - else if (bucket.next) { - hash.$$map[hash.$$keys[i].key_hash] = bucket.next; - } - else { - delete hash.$$map[hash.$$keys[i].key_hash]; - } - break; - } - last_bucket = bucket; - bucket = bucket.next; - } - - hash.$$keys[i].key_hash = key_hash; - - if (!$hasOwn.call(hash.$$map, key_hash)) { - hash.$$map[key_hash] = hash.$$keys[i]; - continue; - } - - bucket = hash.$$map[key_hash]; - last_bucket = undefined; - - while (bucket) { - if (bucket === hash.$$keys[i]) { - last_bucket = undefined; - break; - } - last_bucket = bucket; - bucket = bucket.next; - } - - if (last_bucket) { - last_bucket.next = hash.$$keys[i]; - } - } - }; - - Opal.hash = function() { - var arguments_length = arguments.length, args, hash, i, length, key, value; - - if (arguments_length === 1 && arguments[0].$$is_hash) { - return arguments[0]; - } - - hash = new Opal.Hash(); - Opal.hash_init(hash); - - if (arguments_length === 1 && arguments[0].$$is_array) { - args = arguments[0]; - length = args.length; - - for (i = 0; i < length; i++) { - if (args[i].length !== 2) { - throw Opal.ArgumentError.$new("value not of length 2: " + args[i].$inspect()); - } - - key = args[i][0]; - value = args[i][1]; - - Opal.hash_put(hash, key, value); - } - - return hash; - } - - if (arguments_length === 1) { - args = arguments[0]; - for (key in args) { - if ($hasOwn.call(args, key)) { - value = args[key]; - - Opal.hash_put(hash, key, value); - } - } - - return hash; - } - - if (arguments_length % 2 !== 0) { - throw Opal.ArgumentError.$new("odd number of arguments for Hash"); - } - - for (i = 0; i < arguments_length; i += 2) { - key = arguments[i]; - value = arguments[i + 1]; - - Opal.hash_put(hash, key, value); - } - - return hash; - }; - - // A faster Hash creator for hashes that just use symbols and - // strings as keys. The map and keys array can be constructed at - // compile time, so they are just added here by the constructor - // function. - // - Opal.hash2 = function(keys, smap) { - var hash = new Opal.Hash(); - - hash.$$smap = smap; - hash.$$map = Object.create(null); - hash.$$keys = keys; - - return hash; - }; - - // Create a new range instance with first and last values, and whether the - // range excludes the last value. - // - Opal.range = function(first, last, exc) { - var range = new Opal.Range(); - range.begin = first; - range.end = last; - range.excl = exc; - - return range; - }; - - // Get the ivar name for a given name. - // Mostly adds a trailing $ to reserved names. - // - Opal.ivar = function(name) { - if ( - // properties - name === "constructor" || - name === "displayName" || - name === "__count__" || - name === "__noSuchMethod__" || - name === "__parent__" || - name === "__proto__" || - - // methods - name === "hasOwnProperty" || - name === "valueOf" - ) - { - return name + "$"; - } - - return name; - }; - - - // Regexps - // ------- - - // Escape Regexp special chars letting the resulting string be used to build - // a new Regexp. - // - Opal.escape_regexp = function(str) { - return str.replace(/([-[\]\/{}()*+?.^$\\| ])/g, '\\$1') - .replace(/[\n]/g, '\\n') - .replace(/[\r]/g, '\\r') - .replace(/[\f]/g, '\\f') - .replace(/[\t]/g, '\\t'); - }; - - // Create a global Regexp from a RegExp object and cache the result - // on the object itself ($$g attribute). - // - Opal.global_regexp = function(pattern) { - if (pattern.global) { - return pattern; // RegExp already has the global flag - } - if (pattern.$$g == null) { - pattern.$$g = new RegExp(pattern.source, (pattern.multiline ? 'gm' : 'g') + (pattern.ignoreCase ? 'i' : '')); - } else { - pattern.$$g.lastIndex = null; // reset lastIndex property - } - return pattern.$$g; - }; - - // Create a global multiline Regexp from a RegExp object and cache the result - // on the object itself ($$gm or $$g attribute). - // - Opal.global_multiline_regexp = function(pattern) { - var result; - if (pattern.multiline) { - if (pattern.global) { - return pattern; // RegExp already has the global and multiline flag - } - // we are using the $$g attribute because the Regexp is already multiline - if (pattern.$$g != null) { - result = pattern.$$g; - } else { - result = pattern.$$g = new RegExp(pattern.source, 'gm' + (pattern.ignoreCase ? 'i' : '')); - } - } else if (pattern.$$gm != null) { - result = pattern.$$gm; - } else { - result = pattern.$$gm = new RegExp(pattern.source, 'gm' + (pattern.ignoreCase ? 'i' : '')); - } - result.lastIndex = null; // reset lastIndex property - return result; - }; - - // Require system - // -------------- - - Opal.modules = {}; - Opal.loaded_features = ['corelib/runtime']; - Opal.current_dir = '.'; - Opal.require_table = {'corelib/runtime': true}; - - Opal.normalize = function(path) { - var parts, part, new_parts = [], SEPARATOR = '/'; - - if (Opal.current_dir !== '.') { - path = Opal.current_dir.replace(/\/*$/, '/') + path; - } - - path = path.replace(/^\.\//, ''); - path = path.replace(/\.(rb|opal|js)$/, ''); - parts = path.split(SEPARATOR); - - for (var i = 0, ii = parts.length; i < ii; i++) { - part = parts[i]; - if (part === '') continue; - (part === '..') ? new_parts.pop() : new_parts.push(part) - } - - return new_parts.join(SEPARATOR); - }; - - Opal.loaded = function(paths) { - var i, l, path; - - for (i = 0, l = paths.length; i < l; i++) { - path = Opal.normalize(paths[i]); - - if (Opal.require_table[path]) { - continue; - } - - Opal.loaded_features.push(path); - Opal.require_table[path] = true; - } - }; - - Opal.load = function(path) { - path = Opal.normalize(path); - - Opal.loaded([path]); - - var module = Opal.modules[path]; - - if (module) { - module(Opal); - } - else { - var severity = Opal.config.missing_require_severity; - var message = 'cannot load such file -- ' + path; - - if (severity === "error") { - if (Opal.LoadError) { - throw Opal.LoadError.$new(message) - } else { - throw message - } - } - else if (severity === "warning") { - console.warn('WARNING: LoadError: ' + message); - } - } - - return true; - }; - - Opal.require = function(path) { - path = Opal.normalize(path); - - if (Opal.require_table[path]) { - return false; - } - - return Opal.load(path); - }; - - - // Initialization - // -------------- - function $BasicObject() {} - function $Object() {} - function $Module() {} - function $Class() {} - - Opal.BasicObject = BasicObject = Opal.allocate_class('BasicObject', null, $BasicObject); - Opal.Object = _Object = Opal.allocate_class('Object', Opal.BasicObject, $Object); - Opal.Module = Module = Opal.allocate_class('Module', Opal.Object, $Module); - Opal.Class = Class = Opal.allocate_class('Class', Opal.Module, $Class); - - $setPrototype(Opal.BasicObject, Opal.Class.$$prototype); - $setPrototype(Opal.Object, Opal.Class.$$prototype); - $setPrototype(Opal.Module, Opal.Class.$$prototype); - $setPrototype(Opal.Class, Opal.Class.$$prototype); - - // BasicObject can reach itself, avoid const_set to skip the $$base_module logic - BasicObject.$$const["BasicObject"] = BasicObject; - - // Assign basic constants - Opal.const_set(_Object, "BasicObject", BasicObject); - Opal.const_set(_Object, "Object", _Object); - Opal.const_set(_Object, "Module", Module); - Opal.const_set(_Object, "Class", Class); - - // Fix booted classes to have correct .class value - BasicObject.$$class = Class; - _Object.$$class = Class; - Module.$$class = Class; - Class.$$class = Class; - - // Forward .toString() to #to_s - $defineProperty(_Object.$$prototype, 'toString', function() { - var to_s = this.$to_s(); - if (to_s.$$is_string && typeof(to_s) === 'object') { - // a string created using new String('string') - return to_s.valueOf(); - } else { - return to_s; - } - }); - - // Make Kernel#require immediately available as it's needed to require all the - // other corelib files. - $defineProperty(_Object.$$prototype, '$require', Opal.require); - - // Add a short helper to navigate constants manually. - // @example - // Opal.$$.Regexp.$$.IGNORECASE - Opal.$$ = _Object.$$; - - // Instantiate the main object - Opal.top = new _Object(); - Opal.top.$to_s = Opal.top.$inspect = function() { return 'main' }; - - - // Nil - function $NilClass() {} - Opal.NilClass = Opal.allocate_class('NilClass', Opal.Object, $NilClass); - Opal.const_set(_Object, 'NilClass', Opal.NilClass); - nil = Opal.nil = new Opal.NilClass(); - nil.$$id = nil_id; - nil.call = nil.apply = function() { throw Opal.LocalJumpError.$new('no block given'); }; - - // Errors - Opal.breaker = new Error('unexpected break (old)'); - Opal.returner = new Error('unexpected return'); - TypeError.$$super = Error; -}).call(this); -Opal.loaded(["corelib/runtime.js"]); -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/helpers"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$new', '$class', '$===', '$respond_to?', '$raise', '$type_error', '$__send__', '$coerce_to', '$nil?', '$<=>', '$coerce_to!', '$!=', '$[]', '$upcase']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Opal'); - - var $nesting = [self].concat($parent_nesting), $Opal_bridge$1, $Opal_type_error$2, $Opal_coerce_to$3, $Opal_coerce_to$excl$4, $Opal_coerce_to$ques$5, $Opal_try_convert$6, $Opal_compare$7, $Opal_destructure$8, $Opal_respond_to$ques$9, $Opal_inspect_obj$10, $Opal_instance_variable_name$excl$11, $Opal_class_variable_name$excl$12, $Opal_const_name$excl$13, $Opal_pristine$14; - - - Opal.defs(self, '$bridge', $Opal_bridge$1 = function $$bridge(constructor, klass) { - var self = this; - - return Opal.bridge(constructor, klass); - }, $Opal_bridge$1.$$arity = 2); - Opal.defs(self, '$type_error', $Opal_type_error$2 = function $$type_error(object, type, method, coerced) { - var $a, self = this; - - - - if (method == null) { - method = nil; - }; - - if (coerced == null) { - coerced = nil; - }; - if ($truthy(($truthy($a = method) ? coerced : $a))) { - return $$($nesting, 'TypeError').$new("" + "can't convert " + (object.$class()) + " into " + (type) + " (" + (object.$class()) + "#" + (method) + " gives " + (coerced.$class()) + ")") - } else { - return $$($nesting, 'TypeError').$new("" + "no implicit conversion of " + (object.$class()) + " into " + (type)) - }; - }, $Opal_type_error$2.$$arity = -3); - Opal.defs(self, '$coerce_to', $Opal_coerce_to$3 = function $$coerce_to(object, type, method) { - var self = this; - - - if ($truthy(type['$==='](object))) { - return object}; - if ($truthy(object['$respond_to?'](method))) { - } else { - self.$raise(self.$type_error(object, type)) - }; - return object.$__send__(method); - }, $Opal_coerce_to$3.$$arity = 3); - Opal.defs(self, '$coerce_to!', $Opal_coerce_to$excl$4 = function(object, type, method) { - var self = this, coerced = nil; - - - coerced = self.$coerce_to(object, type, method); - if ($truthy(type['$==='](coerced))) { - } else { - self.$raise(self.$type_error(object, type, method, coerced)) - }; - return coerced; - }, $Opal_coerce_to$excl$4.$$arity = 3); - Opal.defs(self, '$coerce_to?', $Opal_coerce_to$ques$5 = function(object, type, method) { - var self = this, coerced = nil; - - - if ($truthy(object['$respond_to?'](method))) { - } else { - return nil - }; - coerced = self.$coerce_to(object, type, method); - if ($truthy(coerced['$nil?']())) { - return nil}; - if ($truthy(type['$==='](coerced))) { - } else { - self.$raise(self.$type_error(object, type, method, coerced)) - }; - return coerced; - }, $Opal_coerce_to$ques$5.$$arity = 3); - Opal.defs(self, '$try_convert', $Opal_try_convert$6 = function $$try_convert(object, type, method) { - var self = this; - - - if ($truthy(type['$==='](object))) { - return object}; - if ($truthy(object['$respond_to?'](method))) { - return object.$__send__(method) - } else { - return nil - }; - }, $Opal_try_convert$6.$$arity = 3); - Opal.defs(self, '$compare', $Opal_compare$7 = function $$compare(a, b) { - var self = this, compare = nil; - - - compare = a['$<=>'](b); - if ($truthy(compare === nil)) { - self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (a.$class()) + " with " + (b.$class()) + " failed")}; - return compare; - }, $Opal_compare$7.$$arity = 2); - Opal.defs(self, '$destructure', $Opal_destructure$8 = function $$destructure(args) { - var self = this; - - - if (args.length == 1) { - return args[0]; - } - else if (args.$$is_array) { - return args; - } - else { - var args_ary = new Array(args.length); - for(var i = 0, l = args_ary.length; i < l; i++) { args_ary[i] = args[i]; } - - return args_ary; - } - - }, $Opal_destructure$8.$$arity = 1); - Opal.defs(self, '$respond_to?', $Opal_respond_to$ques$9 = function(obj, method, include_all) { - var self = this; - - - - if (include_all == null) { - include_all = false; - }; - - if (obj == null || !obj.$$class) { - return false; - } - ; - return obj['$respond_to?'](method, include_all); - }, $Opal_respond_to$ques$9.$$arity = -3); - Opal.defs(self, '$inspect_obj', $Opal_inspect_obj$10 = function $$inspect_obj(obj) { - var self = this; - - return Opal.inspect(obj); - }, $Opal_inspect_obj$10.$$arity = 1); - Opal.defs(self, '$instance_variable_name!', $Opal_instance_variable_name$excl$11 = function(name) { - var self = this; - - - name = $$($nesting, 'Opal')['$coerce_to!'](name, $$($nesting, 'String'), "to_str"); - if ($truthy(/^@[a-zA-Z_][a-zA-Z0-9_]*?$/.test(name))) { - } else { - self.$raise($$($nesting, 'NameError').$new("" + "'" + (name) + "' is not allowed as an instance variable name", name)) - }; - return name; - }, $Opal_instance_variable_name$excl$11.$$arity = 1); - Opal.defs(self, '$class_variable_name!', $Opal_class_variable_name$excl$12 = function(name) { - var self = this; - - - name = $$($nesting, 'Opal')['$coerce_to!'](name, $$($nesting, 'String'), "to_str"); - if ($truthy(name.length < 3 || name.slice(0,2) !== '@@')) { - self.$raise($$($nesting, 'NameError').$new("" + "`" + (name) + "' is not allowed as a class variable name", name))}; - return name; - }, $Opal_class_variable_name$excl$12.$$arity = 1); - Opal.defs(self, '$const_name!', $Opal_const_name$excl$13 = function(const_name) { - var self = this; - - - const_name = $$($nesting, 'Opal')['$coerce_to!'](const_name, $$($nesting, 'String'), "to_str"); - if ($truthy(const_name['$[]'](0)['$!='](const_name['$[]'](0).$upcase()))) { - self.$raise($$($nesting, 'NameError'), "" + "wrong constant name " + (const_name))}; - return const_name; - }, $Opal_const_name$excl$13.$$arity = 1); - Opal.defs(self, '$pristine', $Opal_pristine$14 = function $$pristine(owner_class, $a) { - var $post_args, method_names, self = this; - - - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - method_names = $post_args;; - - var method_name, method; - for (var i = method_names.length - 1; i >= 0; i--) { - method_name = method_names[i]; - method = owner_class.$$prototype['$'+method_name]; - - if (method && !method.$$stub) { - method.$$pristine = true; - } - } - ; - return nil; - }, $Opal_pristine$14.$$arity = -2); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/module"] = function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $lambda = Opal.lambda, $range = Opal.range, $hash2 = Opal.hash2; - - Opal.add_stubs(['$module_eval', '$to_proc', '$===', '$raise', '$equal?', '$<', '$>', '$nil?', '$attr_reader', '$attr_writer', '$class_variable_name!', '$new', '$const_name!', '$=~', '$inject', '$split', '$const_get', '$==', '$!~', '$start_with?', '$bind', '$call', '$class', '$append_features', '$included', '$name', '$cover?', '$size', '$merge', '$compile', '$proc', '$any?', '$prepend_features', '$prepended', '$to_s', '$__id__', '$constants', '$include?', '$copy_class_variables', '$copy_constants']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Module'); - - var $nesting = [self].concat($parent_nesting), $Module_allocate$1, $Module_initialize$2, $Module_$eq_eq_eq$3, $Module_$lt$4, $Module_$lt_eq$5, $Module_$gt$6, $Module_$gt_eq$7, $Module_$lt_eq_gt$8, $Module_alias_method$9, $Module_alias_native$10, $Module_ancestors$11, $Module_append_features$12, $Module_attr_accessor$13, $Module_attr_reader$14, $Module_attr_writer$15, $Module_autoload$16, $Module_class_variables$17, $Module_class_variable_get$18, $Module_class_variable_set$19, $Module_class_variable_defined$ques$20, $Module_remove_class_variable$21, $Module_constants$22, $Module_constants$23, $Module_nesting$24, $Module_const_defined$ques$25, $Module_const_get$26, $Module_const_missing$28, $Module_const_set$29, $Module_public_constant$30, $Module_define_method$31, $Module_remove_method$33, $Module_singleton_class$ques$34, $Module_include$35, $Module_included_modules$36, $Module_include$ques$37, $Module_instance_method$38, $Module_instance_methods$39, $Module_included$40, $Module_extended$41, $Module_extend_object$42, $Module_method_added$43, $Module_method_removed$44, $Module_method_undefined$45, $Module_module_eval$46, $Module_module_exec$48, $Module_method_defined$ques$49, $Module_module_function$50, $Module_name$51, $Module_prepend$52, $Module_prepend_features$53, $Module_prepended$54, $Module_remove_const$55, $Module_to_s$56, $Module_undef_method$57, $Module_instance_variables$58, $Module_dup$59, $Module_copy_class_variables$60, $Module_copy_constants$61; - - - Opal.defs(self, '$allocate', $Module_allocate$1 = function $$allocate() { - var self = this; - - - var module = Opal.allocate_module(nil, function(){}); - // Link the prototype of Module subclasses - if (self !== Opal.Module) Object.setPrototypeOf(module, self.$$prototype); - return module; - - }, $Module_allocate$1.$$arity = 0); - - Opal.def(self, '$initialize', $Module_initialize$2 = function $$initialize() { - var $iter = $Module_initialize$2.$$p, block = $iter || nil, self = this; - - if ($iter) $Module_initialize$2.$$p = null; - - - if ($iter) $Module_initialize$2.$$p = null;; - if ((block !== nil)) { - return $send(self, 'module_eval', [], block.$to_proc()) - } else { - return nil - }; - }, $Module_initialize$2.$$arity = 0); - - Opal.def(self, '$===', $Module_$eq_eq_eq$3 = function(object) { - var self = this; - - - if ($truthy(object == null)) { - return false}; - return Opal.is_a(object, self);; - }, $Module_$eq_eq_eq$3.$$arity = 1); - - Opal.def(self, '$<', $Module_$lt$4 = function(other) { - var self = this; - - - if ($truthy($$($nesting, 'Module')['$==='](other))) { - } else { - self.$raise($$($nesting, 'TypeError'), "compared with non class/module") - }; - - var working = self, - ancestors, - i, length; - - if (working === other) { - return false; - } - - for (i = 0, ancestors = Opal.ancestors(self), length = ancestors.length; i < length; i++) { - if (ancestors[i] === other) { - return true; - } - } - - for (i = 0, ancestors = Opal.ancestors(other), length = ancestors.length; i < length; i++) { - if (ancestors[i] === self) { - return false; - } - } - - return nil; - ; - }, $Module_$lt$4.$$arity = 1); - - Opal.def(self, '$<=', $Module_$lt_eq$5 = function(other) { - var $a, self = this; - - return ($truthy($a = self['$equal?'](other)) ? $a : $rb_lt(self, other)) - }, $Module_$lt_eq$5.$$arity = 1); - - Opal.def(self, '$>', $Module_$gt$6 = function(other) { - var self = this; - - - if ($truthy($$($nesting, 'Module')['$==='](other))) { - } else { - self.$raise($$($nesting, 'TypeError'), "compared with non class/module") - }; - return $rb_lt(other, self); - }, $Module_$gt$6.$$arity = 1); - - Opal.def(self, '$>=', $Module_$gt_eq$7 = function(other) { - var $a, self = this; - - return ($truthy($a = self['$equal?'](other)) ? $a : $rb_gt(self, other)) - }, $Module_$gt_eq$7.$$arity = 1); - - Opal.def(self, '$<=>', $Module_$lt_eq_gt$8 = function(other) { - var self = this, lt = nil; - - - - if (self === other) { - return 0; - } - ; - if ($truthy($$($nesting, 'Module')['$==='](other))) { - } else { - return nil - }; - lt = $rb_lt(self, other); - if ($truthy(lt['$nil?']())) { - return nil}; - if ($truthy(lt)) { - return -1 - } else { - return 1 - }; - }, $Module_$lt_eq_gt$8.$$arity = 1); - - Opal.def(self, '$alias_method', $Module_alias_method$9 = function $$alias_method(newname, oldname) { - var self = this; - - - Opal.alias(self, newname, oldname); - return self; - }, $Module_alias_method$9.$$arity = 2); - - Opal.def(self, '$alias_native', $Module_alias_native$10 = function $$alias_native(mid, jsid) { - var self = this; - - - - if (jsid == null) { - jsid = mid; - }; - Opal.alias_native(self, mid, jsid); - return self; - }, $Module_alias_native$10.$$arity = -2); - - Opal.def(self, '$ancestors', $Module_ancestors$11 = function $$ancestors() { - var self = this; - - return Opal.ancestors(self); - }, $Module_ancestors$11.$$arity = 0); - - Opal.def(self, '$append_features', $Module_append_features$12 = function $$append_features(includer) { - var self = this; - - - Opal.append_features(self, includer); - return self; - }, $Module_append_features$12.$$arity = 1); - - Opal.def(self, '$attr_accessor', $Module_attr_accessor$13 = function $$attr_accessor($a) { - var $post_args, names, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - names = $post_args;; - $send(self, 'attr_reader', Opal.to_a(names)); - return $send(self, 'attr_writer', Opal.to_a(names)); - }, $Module_attr_accessor$13.$$arity = -1); - Opal.alias(self, "attr", "attr_accessor"); - - Opal.def(self, '$attr_reader', $Module_attr_reader$14 = function $$attr_reader($a) { - var $post_args, names, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - names = $post_args;; - - var proto = self.$$prototype; - - for (var i = names.length - 1; i >= 0; i--) { - var name = names[i], - id = '$' + name, - ivar = Opal.ivar(name); - - // the closure here is needed because name will change at the next - // cycle, I wish we could use let. - var body = (function(ivar) { - return function() { - if (this[ivar] == null) { - return nil; - } - else { - return this[ivar]; - } - }; - })(ivar); - - // initialize the instance variable as nil - Opal.defineProperty(proto, ivar, nil); - - body.$$parameters = []; - body.$$arity = 0; - - Opal.defn(self, id, body); - } - ; - return nil; - }, $Module_attr_reader$14.$$arity = -1); - - Opal.def(self, '$attr_writer', $Module_attr_writer$15 = function $$attr_writer($a) { - var $post_args, names, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - names = $post_args;; - - var proto = self.$$prototype; - - for (var i = names.length - 1; i >= 0; i--) { - var name = names[i], - id = '$' + name + '=', - ivar = Opal.ivar(name); - - // the closure here is needed because name will change at the next - // cycle, I wish we could use let. - var body = (function(ivar){ - return function(value) { - return this[ivar] = value; - } - })(ivar); - - body.$$parameters = [['req']]; - body.$$arity = 1; - - // initialize the instance variable as nil - Opal.defineProperty(proto, ivar, nil); - - Opal.defn(self, id, body); - } - ; - return nil; - }, $Module_attr_writer$15.$$arity = -1); - - Opal.def(self, '$autoload', $Module_autoload$16 = function $$autoload(const$, path) { - var self = this; - - - if (self.$$autoload == null) self.$$autoload = {}; - Opal.const_cache_version++; - self.$$autoload[const$] = path; - return nil; - - }, $Module_autoload$16.$$arity = 2); - - Opal.def(self, '$class_variables', $Module_class_variables$17 = function $$class_variables() { - var self = this; - - return Object.keys(Opal.class_variables(self)); - }, $Module_class_variables$17.$$arity = 0); - - Opal.def(self, '$class_variable_get', $Module_class_variable_get$18 = function $$class_variable_get(name) { - var self = this; - - - name = $$($nesting, 'Opal')['$class_variable_name!'](name); - - var value = Opal.class_variables(self)[name]; - if (value == null) { - self.$raise($$($nesting, 'NameError').$new("" + "uninitialized class variable " + (name) + " in " + (self), name)) - } - return value; - ; - }, $Module_class_variable_get$18.$$arity = 1); - - Opal.def(self, '$class_variable_set', $Module_class_variable_set$19 = function $$class_variable_set(name, value) { - var self = this; - - - name = $$($nesting, 'Opal')['$class_variable_name!'](name); - return Opal.class_variable_set(self, name, value);; - }, $Module_class_variable_set$19.$$arity = 2); - - Opal.def(self, '$class_variable_defined?', $Module_class_variable_defined$ques$20 = function(name) { - var self = this; - - - name = $$($nesting, 'Opal')['$class_variable_name!'](name); - return Opal.class_variables(self).hasOwnProperty(name);; - }, $Module_class_variable_defined$ques$20.$$arity = 1); - - Opal.def(self, '$remove_class_variable', $Module_remove_class_variable$21 = function $$remove_class_variable(name) { - var self = this; - - - name = $$($nesting, 'Opal')['$class_variable_name!'](name); - - if (Opal.hasOwnProperty.call(self.$$cvars, name)) { - var value = self.$$cvars[name]; - delete self.$$cvars[name]; - return value; - } else { - self.$raise($$($nesting, 'NameError'), "" + "cannot remove " + (name) + " for " + (self)) - } - ; - }, $Module_remove_class_variable$21.$$arity = 1); - - Opal.def(self, '$constants', $Module_constants$22 = function $$constants(inherit) { - var self = this; - - - - if (inherit == null) { - inherit = true; - }; - return Opal.constants(self, inherit);; - }, $Module_constants$22.$$arity = -1); - Opal.defs(self, '$constants', $Module_constants$23 = function $$constants(inherit) { - var self = this; - - - ; - - if (inherit == null) { - var nesting = (self.$$nesting || []).concat(Opal.Object), - constant, constants = {}, - i, ii; - - for(i = 0, ii = nesting.length; i < ii; i++) { - for (constant in nesting[i].$$const) { - constants[constant] = true; - } - } - return Object.keys(constants); - } else { - return Opal.constants(self, inherit) - } - ; - }, $Module_constants$23.$$arity = -1); - Opal.defs(self, '$nesting', $Module_nesting$24 = function $$nesting() { - var self = this; - - return self.$$nesting || []; - }, $Module_nesting$24.$$arity = 0); - - Opal.def(self, '$const_defined?', $Module_const_defined$ques$25 = function(name, inherit) { - var self = this; - - - - if (inherit == null) { - inherit = true; - }; - name = $$($nesting, 'Opal')['$const_name!'](name); - if ($truthy(name['$=~']($$$($$($nesting, 'Opal'), 'CONST_NAME_REGEXP')))) { - } else { - self.$raise($$($nesting, 'NameError').$new("" + "wrong constant name " + (name), name)) - }; - - var module, modules = [self], module_constants, i, ii; - - // Add up ancestors if inherit is true - if (inherit) { - modules = modules.concat(Opal.ancestors(self)); - - // Add Object's ancestors if it's a module – modules have no ancestors otherwise - if (self.$$is_module) { - modules = modules.concat([Opal.Object]).concat(Opal.ancestors(Opal.Object)); - } - } - - for (i = 0, ii = modules.length; i < ii; i++) { - module = modules[i]; - if (module.$$const[name] != null) { - return true; - } - } - - return false; - ; - }, $Module_const_defined$ques$25.$$arity = -2); - - Opal.def(self, '$const_get', $Module_const_get$26 = function $$const_get(name, inherit) { - var $$27, self = this; - - - - if (inherit == null) { - inherit = true; - }; - name = $$($nesting, 'Opal')['$const_name!'](name); - - if (name.indexOf('::') === 0 && name !== '::'){ - name = name.slice(2); - } - ; - if ($truthy(name.indexOf('::') != -1 && name != '::')) { - return $send(name.$split("::"), 'inject', [self], ($$27 = function(o, c){var self = $$27.$$s || this; - - - - if (o == null) { - o = nil; - }; - - if (c == null) { - c = nil; - }; - return o.$const_get(c);}, $$27.$$s = self, $$27.$$arity = 2, $$27))}; - if ($truthy(name['$=~']($$$($$($nesting, 'Opal'), 'CONST_NAME_REGEXP')))) { - } else { - self.$raise($$($nesting, 'NameError').$new("" + "wrong constant name " + (name), name)) - }; - - if (inherit) { - return $$([self], name); - } else { - return Opal.const_get_local(self, name); - } - ; - }, $Module_const_get$26.$$arity = -2); - - Opal.def(self, '$const_missing', $Module_const_missing$28 = function $$const_missing(name) { - var self = this, full_const_name = nil; - - - - if (self.$$autoload) { - var file = self.$$autoload[name]; - - if (file) { - self.$require(file); - - return self.$const_get(name); - } - } - ; - full_const_name = (function() {if (self['$==']($$($nesting, 'Object'))) { - return name - } else { - return "" + (self) + "::" + (name) - }; return nil; })(); - return self.$raise($$($nesting, 'NameError').$new("" + "uninitialized constant " + (full_const_name), name)); - }, $Module_const_missing$28.$$arity = 1); - - Opal.def(self, '$const_set', $Module_const_set$29 = function $$const_set(name, value) { - var $a, self = this; - - - name = $$($nesting, 'Opal')['$const_name!'](name); - if ($truthy(($truthy($a = name['$!~']($$$($$($nesting, 'Opal'), 'CONST_NAME_REGEXP'))) ? $a : name['$start_with?']("::")))) { - self.$raise($$($nesting, 'NameError').$new("" + "wrong constant name " + (name), name))}; - Opal.const_set(self, name, value); - return value; - }, $Module_const_set$29.$$arity = 2); - - Opal.def(self, '$public_constant', $Module_public_constant$30 = function $$public_constant(const_name) { - var self = this; - - return nil - }, $Module_public_constant$30.$$arity = 1); - - Opal.def(self, '$define_method', $Module_define_method$31 = function $$define_method(name, method) { - var $iter = $Module_define_method$31.$$p, block = $iter || nil, $a, $$32, self = this, $case = nil; - - if ($iter) $Module_define_method$31.$$p = null; - - - if ($iter) $Module_define_method$31.$$p = null;; - ; - if ($truthy(method === undefined && block === nil)) { - self.$raise($$($nesting, 'ArgumentError'), "tried to create a Proc object without a block")}; - block = ($truthy($a = block) ? $a : (function() {$case = method; - if ($$($nesting, 'Proc')['$===']($case)) {return method} - else if ($$($nesting, 'Method')['$===']($case)) {return method.$to_proc().$$unbound} - else if ($$($nesting, 'UnboundMethod')['$===']($case)) {return $lambda(($$32 = function($b){var self = $$32.$$s || this, $post_args, args, bound = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - bound = method.$bind(self); - return $send(bound, 'call', Opal.to_a(args));}, $$32.$$s = self, $$32.$$arity = -1, $$32))} - else {return self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + (block.$class()) + " (expected Proc/Method)")}})()); - - var id = '$' + name; - - block.$$jsid = name; - block.$$s = null; - block.$$def = block; - block.$$define_meth = true; - - Opal.defn(self, id, block); - - return name; - ; - }, $Module_define_method$31.$$arity = -2); - - Opal.def(self, '$remove_method', $Module_remove_method$33 = function $$remove_method($a) { - var $post_args, names, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - names = $post_args;; - - for (var i = 0, length = names.length; i < length; i++) { - Opal.rdef(self, "$" + names[i]); - } - ; - return self; - }, $Module_remove_method$33.$$arity = -1); - - Opal.def(self, '$singleton_class?', $Module_singleton_class$ques$34 = function() { - var self = this; - - return !!self.$$is_singleton; - }, $Module_singleton_class$ques$34.$$arity = 0); - - Opal.def(self, '$include', $Module_include$35 = function $$include($a) { - var $post_args, mods, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - mods = $post_args;; - - for (var i = mods.length - 1; i >= 0; i--) { - var mod = mods[i]; - - if (!mod.$$is_module) { - self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + ((mod).$class()) + " (expected Module)"); - } - - (mod).$append_features(self); - (mod).$included(self); - } - ; - return self; - }, $Module_include$35.$$arity = -1); - - Opal.def(self, '$included_modules', $Module_included_modules$36 = function $$included_modules() { - var self = this; - - return Opal.included_modules(self); - }, $Module_included_modules$36.$$arity = 0); - - Opal.def(self, '$include?', $Module_include$ques$37 = function(mod) { - var self = this; - - - if (!mod.$$is_module) { - self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + ((mod).$class()) + " (expected Module)"); - } - - var i, ii, mod2, ancestors = Opal.ancestors(self); - - for (i = 0, ii = ancestors.length; i < ii; i++) { - mod2 = ancestors[i]; - if (mod2 === mod && mod2 !== self) { - return true; - } - } - - return false; - - }, $Module_include$ques$37.$$arity = 1); - - Opal.def(self, '$instance_method', $Module_instance_method$38 = function $$instance_method(name) { - var self = this; - - - var meth = self.$$prototype['$' + name]; - - if (!meth || meth.$$stub) { - self.$raise($$($nesting, 'NameError').$new("" + "undefined method `" + (name) + "' for class `" + (self.$name()) + "'", name)); - } - - return $$($nesting, 'UnboundMethod').$new(self, meth.$$owner || self, meth, name); - - }, $Module_instance_method$38.$$arity = 1); - - Opal.def(self, '$instance_methods', $Module_instance_methods$39 = function $$instance_methods(include_super) { - var self = this; - - - - if (include_super == null) { - include_super = true; - }; - - if ($truthy(include_super)) { - return Opal.instance_methods(self); - } else { - return Opal.own_instance_methods(self); - } - ; - }, $Module_instance_methods$39.$$arity = -1); - - Opal.def(self, '$included', $Module_included$40 = function $$included(mod) { - var self = this; - - return nil - }, $Module_included$40.$$arity = 1); - - Opal.def(self, '$extended', $Module_extended$41 = function $$extended(mod) { - var self = this; - - return nil - }, $Module_extended$41.$$arity = 1); - - Opal.def(self, '$extend_object', $Module_extend_object$42 = function $$extend_object(object) { - var self = this; - - return nil - }, $Module_extend_object$42.$$arity = 1); - - Opal.def(self, '$method_added', $Module_method_added$43 = function $$method_added($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return nil; - }, $Module_method_added$43.$$arity = -1); - - Opal.def(self, '$method_removed', $Module_method_removed$44 = function $$method_removed($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return nil; - }, $Module_method_removed$44.$$arity = -1); - - Opal.def(self, '$method_undefined', $Module_method_undefined$45 = function $$method_undefined($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return nil; - }, $Module_method_undefined$45.$$arity = -1); - - Opal.def(self, '$module_eval', $Module_module_eval$46 = function $$module_eval($a) { - var $iter = $Module_module_eval$46.$$p, block = $iter || nil, $post_args, args, $b, $$47, self = this, string = nil, file = nil, _lineno = nil, default_eval_options = nil, compiling_options = nil, compiled = nil; - - if ($iter) $Module_module_eval$46.$$p = null; - - - if ($iter) $Module_module_eval$46.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - if ($truthy(($truthy($b = block['$nil?']()) ? !!Opal.compile : $b))) { - - if ($truthy($range(1, 3, false)['$cover?'](args.$size()))) { - } else { - $$($nesting, 'Kernel').$raise($$($nesting, 'ArgumentError'), "wrong number of arguments (0 for 1..3)") - }; - $b = [].concat(Opal.to_a(args)), (string = ($b[0] == null ? nil : $b[0])), (file = ($b[1] == null ? nil : $b[1])), (_lineno = ($b[2] == null ? nil : $b[2])), $b; - default_eval_options = $hash2(["file", "eval"], {"file": ($truthy($b = file) ? $b : "(eval)"), "eval": true}); - compiling_options = Opal.hash({ arity_check: false }).$merge(default_eval_options); - compiled = $$($nesting, 'Opal').$compile(string, compiling_options); - block = $send($$($nesting, 'Kernel'), 'proc', [], ($$47 = function(){var self = $$47.$$s || this; - - - return (function(self) { - return eval(compiled); - })(self) - }, $$47.$$s = self, $$47.$$arity = 0, $$47)); - } else if ($truthy(args['$any?']())) { - $$($nesting, 'Kernel').$raise($$($nesting, 'ArgumentError'), "" + ("" + "wrong number of arguments (" + (args.$size()) + " for 0)") + "\n\n NOTE:If you want to enable passing a String argument please add \"require 'opal-parser'\" to your script\n")}; - - var old = block.$$s, - result; - - block.$$s = null; - result = block.apply(self, [self]); - block.$$s = old; - - return result; - ; - }, $Module_module_eval$46.$$arity = -1); - Opal.alias(self, "class_eval", "module_eval"); - - Opal.def(self, '$module_exec', $Module_module_exec$48 = function $$module_exec($a) { - var $iter = $Module_module_exec$48.$$p, block = $iter || nil, $post_args, args, self = this; - - if ($iter) $Module_module_exec$48.$$p = null; - - - if ($iter) $Module_module_exec$48.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - - if (block === nil) { - self.$raise($$($nesting, 'LocalJumpError'), "no block given") - } - - var block_self = block.$$s, result; - - block.$$s = null; - result = block.apply(self, args); - block.$$s = block_self; - - return result; - ; - }, $Module_module_exec$48.$$arity = -1); - Opal.alias(self, "class_exec", "module_exec"); - - Opal.def(self, '$method_defined?', $Module_method_defined$ques$49 = function(method) { - var self = this; - - - var body = self.$$prototype['$' + method]; - return (!!body) && !body.$$stub; - - }, $Module_method_defined$ques$49.$$arity = 1); - - Opal.def(self, '$module_function', $Module_module_function$50 = function $$module_function($a) { - var $post_args, methods, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - methods = $post_args;; - - if (methods.length === 0) { - self.$$module_function = true; - } - else { - for (var i = 0, length = methods.length; i < length; i++) { - var meth = methods[i], - id = '$' + meth, - func = self.$$prototype[id]; - - Opal.defs(self, id, func); - } - } - - return self; - ; - }, $Module_module_function$50.$$arity = -1); - - Opal.def(self, '$name', $Module_name$51 = function $$name() { - var self = this; - - - if (self.$$full_name) { - return self.$$full_name; - } - - var result = [], base = self; - - while (base) { - // Give up if any of the ancestors is unnamed - if (base.$$name === nil || base.$$name == null) return nil; - - result.unshift(base.$$name); - - base = base.$$base_module; - - if (base === Opal.Object) { - break; - } - } - - if (result.length === 0) { - return nil; - } - - return self.$$full_name = result.join('::'); - - }, $Module_name$51.$$arity = 0); - - Opal.def(self, '$prepend', $Module_prepend$52 = function $$prepend($a) { - var $post_args, mods, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - mods = $post_args;; - - if (mods.length === 0) { - self.$raise($$($nesting, 'ArgumentError'), "wrong number of arguments (given 0, expected 1+)") - } - - for (var i = mods.length - 1; i >= 0; i--) { - var mod = mods[i]; - - if (!mod.$$is_module) { - self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + ((mod).$class()) + " (expected Module)"); - } - - (mod).$prepend_features(self); - (mod).$prepended(self); - } - ; - return self; - }, $Module_prepend$52.$$arity = -1); - - Opal.def(self, '$prepend_features', $Module_prepend_features$53 = function $$prepend_features(prepender) { - var self = this; - - - - if (!self.$$is_module) { - self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + (self.$class()) + " (expected Module)"); - } - - Opal.prepend_features(self, prepender) - ; - return self; - }, $Module_prepend_features$53.$$arity = 1); - - Opal.def(self, '$prepended', $Module_prepended$54 = function $$prepended(mod) { - var self = this; - - return nil - }, $Module_prepended$54.$$arity = 1); - - Opal.def(self, '$remove_const', $Module_remove_const$55 = function $$remove_const(name) { - var self = this; - - return Opal.const_remove(self, name); - }, $Module_remove_const$55.$$arity = 1); - - Opal.def(self, '$to_s', $Module_to_s$56 = function $$to_s() { - var $a, self = this; - - return ($truthy($a = Opal.Module.$name.call(self)) ? $a : "" + "#<" + (self.$$is_module ? 'Module' : 'Class') + ":0x" + (self.$__id__().$to_s(16)) + ">") - }, $Module_to_s$56.$$arity = 0); - - Opal.def(self, '$undef_method', $Module_undef_method$57 = function $$undef_method($a) { - var $post_args, names, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - names = $post_args;; - - for (var i = 0, length = names.length; i < length; i++) { - Opal.udef(self, "$" + names[i]); - } - ; - return self; - }, $Module_undef_method$57.$$arity = -1); - - Opal.def(self, '$instance_variables', $Module_instance_variables$58 = function $$instance_variables() { - var self = this, consts = nil; - - - consts = (Opal.Module.$$nesting = $nesting, self.$constants()); - - var result = []; - - for (var name in self) { - if (self.hasOwnProperty(name) && name.charAt(0) !== '$' && name !== 'constructor' && !consts['$include?'](name)) { - result.push('@' + name); - } - } - - return result; - ; - }, $Module_instance_variables$58.$$arity = 0); - - Opal.def(self, '$dup', $Module_dup$59 = function $$dup() { - var $iter = $Module_dup$59.$$p, $yield = $iter || nil, self = this, copy = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Module_dup$59.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - copy = $send(self, Opal.find_super_dispatcher(self, 'dup', $Module_dup$59, false), $zuper, $iter); - copy.$copy_class_variables(self); - copy.$copy_constants(self); - return copy; - }, $Module_dup$59.$$arity = 0); - - Opal.def(self, '$copy_class_variables', $Module_copy_class_variables$60 = function $$copy_class_variables(other) { - var self = this; - - - for (var name in other.$$cvars) { - self.$$cvars[name] = other.$$cvars[name]; - } - - }, $Module_copy_class_variables$60.$$arity = 1); - return (Opal.def(self, '$copy_constants', $Module_copy_constants$61 = function $$copy_constants(other) { - var self = this; - - - var name, other_constants = other.$$const; - - for (name in other_constants) { - Opal.const_set(self, name, other_constants[name]); - } - - }, $Module_copy_constants$61.$$arity = 1), nil) && 'copy_constants'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/class"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send; - - Opal.add_stubs(['$require', '$class_eval', '$to_proc', '$initialize_copy', '$allocate', '$name', '$to_s']); - - self.$require("corelib/module"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Class'); - - var $nesting = [self].concat($parent_nesting), $Class_new$1, $Class_allocate$2, $Class_inherited$3, $Class_initialize_dup$4, $Class_new$5, $Class_superclass$6, $Class_to_s$7; - - - Opal.defs(self, '$new', $Class_new$1 = function(superclass) { - var $iter = $Class_new$1.$$p, block = $iter || nil, self = this; - - if ($iter) $Class_new$1.$$p = null; - - - if ($iter) $Class_new$1.$$p = null;; - - if (superclass == null) { - superclass = $$($nesting, 'Object'); - }; - - if (!superclass.$$is_class) { - throw Opal.TypeError.$new("superclass must be a Class"); - } - - var klass = Opal.allocate_class(nil, superclass); - superclass.$inherited(klass); - (function() {if ((block !== nil)) { - return $send((klass), 'class_eval', [], block.$to_proc()) - } else { - return nil - }; return nil; })() - return klass; - ; - }, $Class_new$1.$$arity = -1); - - Opal.def(self, '$allocate', $Class_allocate$2 = function $$allocate() { - var self = this; - - - var obj = new self.$$constructor(); - obj.$$id = Opal.uid(); - return obj; - - }, $Class_allocate$2.$$arity = 0); - - Opal.def(self, '$inherited', $Class_inherited$3 = function $$inherited(cls) { - var self = this; - - return nil - }, $Class_inherited$3.$$arity = 1); - - Opal.def(self, '$initialize_dup', $Class_initialize_dup$4 = function $$initialize_dup(original) { - var self = this; - - - self.$initialize_copy(original); - - self.$$name = null; - self.$$full_name = null; - ; - }, $Class_initialize_dup$4.$$arity = 1); - - Opal.def(self, '$new', $Class_new$5 = function($a) { - var $iter = $Class_new$5.$$p, block = $iter || nil, $post_args, args, self = this; - - if ($iter) $Class_new$5.$$p = null; - - - if ($iter) $Class_new$5.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - - var object = self.$allocate(); - Opal.send(object, object.$initialize, args, block); - return object; - ; - }, $Class_new$5.$$arity = -1); - - Opal.def(self, '$superclass', $Class_superclass$6 = function $$superclass() { - var self = this; - - return self.$$super || nil; - }, $Class_superclass$6.$$arity = 0); - return (Opal.def(self, '$to_s', $Class_to_s$7 = function $$to_s() { - var $iter = $Class_to_s$7.$$p, $yield = $iter || nil, self = this; - - if ($iter) $Class_to_s$7.$$p = null; - - var singleton_of = self.$$singleton_of; - - if (singleton_of && (singleton_of.$$is_a_module)) { - return "" + "#"; - } - else if (singleton_of) { - // a singleton class created from an object - return "" + "#>"; - } - return $send(self, Opal.find_super_dispatcher(self, 'to_s', $Class_to_s$7, false), [], null); - - }, $Class_to_s$7.$$arity = 0), nil) && 'to_s'; - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/basic_object"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range, $hash2 = Opal.hash2, $send = Opal.send; - - Opal.add_stubs(['$==', '$!', '$nil?', '$cover?', '$size', '$raise', '$merge', '$compile', '$proc', '$any?', '$inspect', '$new']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BasicObject'); - - var $nesting = [self].concat($parent_nesting), $BasicObject_initialize$1, $BasicObject_$eq_eq$2, $BasicObject_eql$ques$3, $BasicObject___id__$4, $BasicObject___send__$5, $BasicObject_$excl$6, $BasicObject_$not_eq$7, $BasicObject_instance_eval$8, $BasicObject_instance_exec$10, $BasicObject_singleton_method_added$11, $BasicObject_singleton_method_removed$12, $BasicObject_singleton_method_undefined$13, $BasicObject_class$14, $BasicObject_method_missing$15; - - - - Opal.def(self, '$initialize', $BasicObject_initialize$1 = function $$initialize($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return nil; - }, $BasicObject_initialize$1.$$arity = -1); - - Opal.def(self, '$==', $BasicObject_$eq_eq$2 = function(other) { - var self = this; - - return self === other; - }, $BasicObject_$eq_eq$2.$$arity = 1); - - Opal.def(self, '$eql?', $BasicObject_eql$ques$3 = function(other) { - var self = this; - - return self['$=='](other) - }, $BasicObject_eql$ques$3.$$arity = 1); - Opal.alias(self, "equal?", "=="); - - Opal.def(self, '$__id__', $BasicObject___id__$4 = function $$__id__() { - var self = this; - - - if (self.$$id != null) { - return self.$$id; - } - Opal.defineProperty(self, '$$id', Opal.uid()); - return self.$$id; - - }, $BasicObject___id__$4.$$arity = 0); - - Opal.def(self, '$__send__', $BasicObject___send__$5 = function $$__send__(symbol, $a) { - var $iter = $BasicObject___send__$5.$$p, block = $iter || nil, $post_args, args, self = this; - - if ($iter) $BasicObject___send__$5.$$p = null; - - - if ($iter) $BasicObject___send__$5.$$p = null;; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - - var func = self['$' + symbol] - - if (func) { - if (block !== nil) { - func.$$p = block; - } - - return func.apply(self, args); - } - - if (block !== nil) { - self.$method_missing.$$p = block; - } - - return self.$method_missing.apply(self, [symbol].concat(args)); - ; - }, $BasicObject___send__$5.$$arity = -2); - - Opal.def(self, '$!', $BasicObject_$excl$6 = function() { - var self = this; - - return false - }, $BasicObject_$excl$6.$$arity = 0); - - Opal.def(self, '$!=', $BasicObject_$not_eq$7 = function(other) { - var self = this; - - return self['$=='](other)['$!']() - }, $BasicObject_$not_eq$7.$$arity = 1); - - Opal.def(self, '$instance_eval', $BasicObject_instance_eval$8 = function $$instance_eval($a) { - var $iter = $BasicObject_instance_eval$8.$$p, block = $iter || nil, $post_args, args, $b, $$9, self = this, string = nil, file = nil, _lineno = nil, default_eval_options = nil, compiling_options = nil, compiled = nil; - - if ($iter) $BasicObject_instance_eval$8.$$p = null; - - - if ($iter) $BasicObject_instance_eval$8.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - if ($truthy(($truthy($b = block['$nil?']()) ? !!Opal.compile : $b))) { - - if ($truthy($range(1, 3, false)['$cover?'](args.$size()))) { - } else { - $$$('::', 'Kernel').$raise($$$('::', 'ArgumentError'), "wrong number of arguments (0 for 1..3)") - }; - $b = [].concat(Opal.to_a(args)), (string = ($b[0] == null ? nil : $b[0])), (file = ($b[1] == null ? nil : $b[1])), (_lineno = ($b[2] == null ? nil : $b[2])), $b; - default_eval_options = $hash2(["file", "eval"], {"file": ($truthy($b = file) ? $b : "(eval)"), "eval": true}); - compiling_options = Opal.hash({ arity_check: false }).$merge(default_eval_options); - compiled = $$$('::', 'Opal').$compile(string, compiling_options); - block = $send($$$('::', 'Kernel'), 'proc', [], ($$9 = function(){var self = $$9.$$s || this; - - - return (function(self) { - return eval(compiled); - })(self) - }, $$9.$$s = self, $$9.$$arity = 0, $$9)); - } else if ($truthy(args['$any?']())) { - $$$('::', 'Kernel').$raise($$$('::', 'ArgumentError'), "" + "wrong number of arguments (" + (args.$size()) + " for 0)")}; - - var old = block.$$s, - result; - - block.$$s = null; - - // Need to pass $$eval so that method definitions know if this is - // being done on a class/module. Cannot be compiler driven since - // send(:instance_eval) needs to work. - if (self.$$is_a_module) { - self.$$eval = true; - try { - result = block.call(self, self); - } - finally { - self.$$eval = false; - } - } - else { - result = block.call(self, self); - } - - block.$$s = old; - - return result; - ; - }, $BasicObject_instance_eval$8.$$arity = -1); - - Opal.def(self, '$instance_exec', $BasicObject_instance_exec$10 = function $$instance_exec($a) { - var $iter = $BasicObject_instance_exec$10.$$p, block = $iter || nil, $post_args, args, self = this; - - if ($iter) $BasicObject_instance_exec$10.$$p = null; - - - if ($iter) $BasicObject_instance_exec$10.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - if ($truthy(block)) { - } else { - $$$('::', 'Kernel').$raise($$$('::', 'ArgumentError'), "no block given") - }; - - var block_self = block.$$s, - result; - - block.$$s = null; - - if (self.$$is_a_module) { - self.$$eval = true; - try { - result = block.apply(self, args); - } - finally { - self.$$eval = false; - } - } - else { - result = block.apply(self, args); - } - - block.$$s = block_self; - - return result; - ; - }, $BasicObject_instance_exec$10.$$arity = -1); - - Opal.def(self, '$singleton_method_added', $BasicObject_singleton_method_added$11 = function $$singleton_method_added($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return nil; - }, $BasicObject_singleton_method_added$11.$$arity = -1); - - Opal.def(self, '$singleton_method_removed', $BasicObject_singleton_method_removed$12 = function $$singleton_method_removed($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return nil; - }, $BasicObject_singleton_method_removed$12.$$arity = -1); - - Opal.def(self, '$singleton_method_undefined', $BasicObject_singleton_method_undefined$13 = function $$singleton_method_undefined($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return nil; - }, $BasicObject_singleton_method_undefined$13.$$arity = -1); - - Opal.def(self, '$class', $BasicObject_class$14 = function() { - var self = this; - - return self.$$class; - }, $BasicObject_class$14.$$arity = 0); - return (Opal.def(self, '$method_missing', $BasicObject_method_missing$15 = function $$method_missing(symbol, $a) { - var $iter = $BasicObject_method_missing$15.$$p, block = $iter || nil, $post_args, args, self = this, message = nil; - - if ($iter) $BasicObject_method_missing$15.$$p = null; - - - if ($iter) $BasicObject_method_missing$15.$$p = null;; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - message = (function() {if ($truthy(self.$inspect && !self.$inspect.$$stub)) { - return "" + "undefined method `" + (symbol) + "' for " + (self.$inspect()) + ":" + (self.$$class) - } else { - return "" + "undefined method `" + (symbol) + "' for " + (self.$$class) - }; return nil; })(); - return $$$('::', 'Kernel').$raise($$$('::', 'NoMethodError').$new(message, symbol)); - }, $BasicObject_method_missing$15.$$arity = -2), nil) && 'method_missing'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/kernel"] = function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $gvars = Opal.gvars, $hash2 = Opal.hash2, $send = Opal.send, $klass = Opal.klass; - - Opal.add_stubs(['$raise', '$new', '$inspect', '$!', '$=~', '$==', '$object_id', '$class', '$coerce_to?', '$<<', '$allocate', '$copy_instance_variables', '$copy_singleton_methods', '$initialize_clone', '$initialize_copy', '$define_method', '$singleton_class', '$to_proc', '$initialize_dup', '$for', '$empty?', '$pop', '$call', '$coerce_to', '$append_features', '$extend_object', '$extended', '$__id__', '$to_s', '$instance_variable_name!', '$respond_to?', '$to_int', '$coerce_to!', '$Integer', '$nil?', '$===', '$enum_for', '$result', '$any?', '$print', '$format', '$puts', '$each', '$<=', '$length', '$[]', '$exception', '$is_a?', '$rand', '$respond_to_missing?', '$try_convert!', '$expand_path', '$join', '$start_with?', '$new_seed', '$srand', '$sym', '$arg', '$open', '$include']); - - (function($base, $parent_nesting) { - var self = $module($base, 'Kernel'); - - var $nesting = [self].concat($parent_nesting), $Kernel_method_missing$1, $Kernel_$eq_tilde$2, $Kernel_$excl_tilde$3, $Kernel_$eq_eq_eq$4, $Kernel_$lt_eq_gt$5, $Kernel_method$6, $Kernel_methods$7, $Kernel_public_methods$8, $Kernel_Array$9, $Kernel_at_exit$10, $Kernel_caller$11, $Kernel_class$12, $Kernel_copy_instance_variables$13, $Kernel_copy_singleton_methods$14, $Kernel_clone$15, $Kernel_initialize_clone$16, $Kernel_define_singleton_method$17, $Kernel_dup$18, $Kernel_initialize_dup$19, $Kernel_enum_for$20, $Kernel_equal$ques$21, $Kernel_exit$22, $Kernel_extend$23, $Kernel_hash$24, $Kernel_initialize_copy$25, $Kernel_inspect$26, $Kernel_instance_of$ques$27, $Kernel_instance_variable_defined$ques$28, $Kernel_instance_variable_get$29, $Kernel_instance_variable_set$30, $Kernel_remove_instance_variable$31, $Kernel_instance_variables$32, $Kernel_Integer$33, $Kernel_Float$34, $Kernel_Hash$35, $Kernel_is_a$ques$36, $Kernel_itself$37, $Kernel_lambda$38, $Kernel_load$39, $Kernel_loop$40, $Kernel_nil$ques$42, $Kernel_printf$43, $Kernel_proc$44, $Kernel_puts$45, $Kernel_p$46, $Kernel_print$48, $Kernel_warn$49, $Kernel_raise$50, $Kernel_rand$51, $Kernel_respond_to$ques$52, $Kernel_respond_to_missing$ques$53, $Kernel_require$54, $Kernel_require_relative$55, $Kernel_require_tree$56, $Kernel_singleton_class$57, $Kernel_sleep$58, $Kernel_srand$59, $Kernel_String$60, $Kernel_tap$61, $Kernel_to_proc$62, $Kernel_to_s$63, $Kernel_catch$64, $Kernel_throw$65, $Kernel_open$66, $Kernel_yield_self$67; - - - - Opal.def(self, '$method_missing', $Kernel_method_missing$1 = function $$method_missing(symbol, $a) { - var $iter = $Kernel_method_missing$1.$$p, block = $iter || nil, $post_args, args, self = this; - - if ($iter) $Kernel_method_missing$1.$$p = null; - - - if ($iter) $Kernel_method_missing$1.$$p = null;; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - return self.$raise($$($nesting, 'NoMethodError').$new("" + "undefined method `" + (symbol) + "' for " + (self.$inspect()), symbol, args)); - }, $Kernel_method_missing$1.$$arity = -2); - - Opal.def(self, '$=~', $Kernel_$eq_tilde$2 = function(obj) { - var self = this; - - return false - }, $Kernel_$eq_tilde$2.$$arity = 1); - - Opal.def(self, '$!~', $Kernel_$excl_tilde$3 = function(obj) { - var self = this; - - return self['$=~'](obj)['$!']() - }, $Kernel_$excl_tilde$3.$$arity = 1); - - Opal.def(self, '$===', $Kernel_$eq_eq_eq$4 = function(other) { - var $a, self = this; - - return ($truthy($a = self.$object_id()['$=='](other.$object_id())) ? $a : self['$=='](other)) - }, $Kernel_$eq_eq_eq$4.$$arity = 1); - - Opal.def(self, '$<=>', $Kernel_$lt_eq_gt$5 = function(other) { - var self = this; - - - // set guard for infinite recursion - self.$$comparable = true; - - var x = self['$=='](other); - - if (x && x !== nil) { - return 0; - } - - return nil; - - }, $Kernel_$lt_eq_gt$5.$$arity = 1); - - Opal.def(self, '$method', $Kernel_method$6 = function $$method(name) { - var self = this; - - - var meth = self['$' + name]; - - if (!meth || meth.$$stub) { - self.$raise($$($nesting, 'NameError').$new("" + "undefined method `" + (name) + "' for class `" + (self.$class()) + "'", name)); - } - - return $$($nesting, 'Method').$new(self, meth.$$owner || self.$class(), meth, name); - - }, $Kernel_method$6.$$arity = 1); - - Opal.def(self, '$methods', $Kernel_methods$7 = function $$methods(all) { - var self = this; - - - - if (all == null) { - all = true; - }; - - if ($truthy(all)) { - return Opal.methods(self); - } else { - return Opal.own_methods(self); - } - ; - }, $Kernel_methods$7.$$arity = -1); - - Opal.def(self, '$public_methods', $Kernel_public_methods$8 = function $$public_methods(all) { - var self = this; - - - - if (all == null) { - all = true; - }; - - if ($truthy(all)) { - return Opal.methods(self); - } else { - return Opal.receiver_methods(self); - } - ; - }, $Kernel_public_methods$8.$$arity = -1); - - Opal.def(self, '$Array', $Kernel_Array$9 = function $$Array(object) { - var self = this; - - - var coerced; - - if (object === nil) { - return []; - } - - if (object.$$is_array) { - return object; - } - - coerced = $$($nesting, 'Opal')['$coerce_to?'](object, $$($nesting, 'Array'), "to_ary"); - if (coerced !== nil) { return coerced; } - - coerced = $$($nesting, 'Opal')['$coerce_to?'](object, $$($nesting, 'Array'), "to_a"); - if (coerced !== nil) { return coerced; } - - return [object]; - - }, $Kernel_Array$9.$$arity = 1); - - Opal.def(self, '$at_exit', $Kernel_at_exit$10 = function $$at_exit() { - var $iter = $Kernel_at_exit$10.$$p, block = $iter || nil, $a, self = this; - if ($gvars.__at_exit__ == null) $gvars.__at_exit__ = nil; - - if ($iter) $Kernel_at_exit$10.$$p = null; - - - if ($iter) $Kernel_at_exit$10.$$p = null;; - $gvars.__at_exit__ = ($truthy($a = $gvars.__at_exit__) ? $a : []); - return $gvars.__at_exit__['$<<'](block); - }, $Kernel_at_exit$10.$$arity = 0); - - Opal.def(self, '$caller', $Kernel_caller$11 = function $$caller($a) { - var $post_args, args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return []; - }, $Kernel_caller$11.$$arity = -1); - - Opal.def(self, '$class', $Kernel_class$12 = function() { - var self = this; - - return self.$$class; - }, $Kernel_class$12.$$arity = 0); - - Opal.def(self, '$copy_instance_variables', $Kernel_copy_instance_variables$13 = function $$copy_instance_variables(other) { - var self = this; - - - var keys = Object.keys(other), i, ii, name; - for (i = 0, ii = keys.length; i < ii; i++) { - name = keys[i]; - if (name.charAt(0) !== '$' && other.hasOwnProperty(name)) { - self[name] = other[name]; - } - } - - }, $Kernel_copy_instance_variables$13.$$arity = 1); - - Opal.def(self, '$copy_singleton_methods', $Kernel_copy_singleton_methods$14 = function $$copy_singleton_methods(other) { - var self = this; - - - var i, name, names, length; - - if (other.hasOwnProperty('$$meta')) { - var other_singleton_class = Opal.get_singleton_class(other); - var self_singleton_class = Opal.get_singleton_class(self); - names = Object.getOwnPropertyNames(other_singleton_class.$$prototype); - - for (i = 0, length = names.length; i < length; i++) { - name = names[i]; - if (Opal.is_method(name)) { - self_singleton_class.$$prototype[name] = other_singleton_class.$$prototype[name]; - } - } - - self_singleton_class.$$const = Object.assign({}, other_singleton_class.$$const); - Object.setPrototypeOf( - self_singleton_class.$$prototype, - Object.getPrototypeOf(other_singleton_class.$$prototype) - ); - } - - for (i = 0, names = Object.getOwnPropertyNames(other), length = names.length; i < length; i++) { - name = names[i]; - if (name.charAt(0) === '$' && name.charAt(1) !== '$' && other.hasOwnProperty(name)) { - self[name] = other[name]; - } - } - - }, $Kernel_copy_singleton_methods$14.$$arity = 1); - - Opal.def(self, '$clone', $Kernel_clone$15 = function $$clone($kwargs) { - var freeze, self = this, copy = nil; - - - - if ($kwargs == null) { - $kwargs = $hash2([], {}); - } else if (!$kwargs.$$is_hash) { - throw Opal.ArgumentError.$new('expected kwargs'); - }; - - freeze = $kwargs.$$smap["freeze"]; - if (freeze == null) { - freeze = true - }; - copy = self.$class().$allocate(); - copy.$copy_instance_variables(self); - copy.$copy_singleton_methods(self); - copy.$initialize_clone(self); - return copy; - }, $Kernel_clone$15.$$arity = -1); - - Opal.def(self, '$initialize_clone', $Kernel_initialize_clone$16 = function $$initialize_clone(other) { - var self = this; - - return self.$initialize_copy(other) - }, $Kernel_initialize_clone$16.$$arity = 1); - - Opal.def(self, '$define_singleton_method', $Kernel_define_singleton_method$17 = function $$define_singleton_method(name, method) { - var $iter = $Kernel_define_singleton_method$17.$$p, block = $iter || nil, self = this; - - if ($iter) $Kernel_define_singleton_method$17.$$p = null; - - - if ($iter) $Kernel_define_singleton_method$17.$$p = null;; - ; - return $send(self.$singleton_class(), 'define_method', [name, method], block.$to_proc()); - }, $Kernel_define_singleton_method$17.$$arity = -2); - - Opal.def(self, '$dup', $Kernel_dup$18 = function $$dup() { - var self = this, copy = nil; - - - copy = self.$class().$allocate(); - copy.$copy_instance_variables(self); - copy.$initialize_dup(self); - return copy; - }, $Kernel_dup$18.$$arity = 0); - - Opal.def(self, '$initialize_dup', $Kernel_initialize_dup$19 = function $$initialize_dup(other) { - var self = this; - - return self.$initialize_copy(other) - }, $Kernel_initialize_dup$19.$$arity = 1); - - Opal.def(self, '$enum_for', $Kernel_enum_for$20 = function $$enum_for($a, $b) { - var $iter = $Kernel_enum_for$20.$$p, block = $iter || nil, $post_args, method, args, self = this; - - if ($iter) $Kernel_enum_for$20.$$p = null; - - - if ($iter) $Kernel_enum_for$20.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - if ($post_args.length > 0) { - method = $post_args[0]; - $post_args.splice(0, 1); - } - if (method == null) { - method = "each"; - }; - - args = $post_args;; - return $send($$($nesting, 'Enumerator'), 'for', [self, method].concat(Opal.to_a(args)), block.$to_proc()); - }, $Kernel_enum_for$20.$$arity = -1); - Opal.alias(self, "to_enum", "enum_for"); - - Opal.def(self, '$equal?', $Kernel_equal$ques$21 = function(other) { - var self = this; - - return self === other; - }, $Kernel_equal$ques$21.$$arity = 1); - - Opal.def(self, '$exit', $Kernel_exit$22 = function $$exit(status) { - var $a, self = this, block = nil; - if ($gvars.__at_exit__ == null) $gvars.__at_exit__ = nil; - - - - if (status == null) { - status = true; - }; - $gvars.__at_exit__ = ($truthy($a = $gvars.__at_exit__) ? $a : []); - while (!($truthy($gvars.__at_exit__['$empty?']()))) { - - block = $gvars.__at_exit__.$pop(); - block.$call(); - }; - - if (status.$$is_boolean) { - status = status ? 0 : 1; - } else { - status = $$($nesting, 'Opal').$coerce_to(status, $$($nesting, 'Integer'), "to_int") - } - - Opal.exit(status); - ; - return nil; - }, $Kernel_exit$22.$$arity = -1); - - Opal.def(self, '$extend', $Kernel_extend$23 = function $$extend($a) { - var $post_args, mods, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - mods = $post_args;; - - var singleton = self.$singleton_class(); - - for (var i = mods.length - 1; i >= 0; i--) { - var mod = mods[i]; - - if (!mod.$$is_module) { - self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + ((mod).$class()) + " (expected Module)"); - } - - (mod).$append_features(singleton); - (mod).$extend_object(self); - (mod).$extended(self); - } - ; - return self; - }, $Kernel_extend$23.$$arity = -1); - - Opal.def(self, '$hash', $Kernel_hash$24 = function $$hash() { - var self = this; - - return self.$__id__() - }, $Kernel_hash$24.$$arity = 0); - - Opal.def(self, '$initialize_copy', $Kernel_initialize_copy$25 = function $$initialize_copy(other) { - var self = this; - - return nil - }, $Kernel_initialize_copy$25.$$arity = 1); - - Opal.def(self, '$inspect', $Kernel_inspect$26 = function $$inspect() { - var self = this; - - return self.$to_s() - }, $Kernel_inspect$26.$$arity = 0); - - Opal.def(self, '$instance_of?', $Kernel_instance_of$ques$27 = function(klass) { - var self = this; - - - if (!klass.$$is_class && !klass.$$is_module) { - self.$raise($$($nesting, 'TypeError'), "class or module required"); - } - - return self.$$class === klass; - - }, $Kernel_instance_of$ques$27.$$arity = 1); - - Opal.def(self, '$instance_variable_defined?', $Kernel_instance_variable_defined$ques$28 = function(name) { - var self = this; - - - name = $$($nesting, 'Opal')['$instance_variable_name!'](name); - return Opal.hasOwnProperty.call(self, name.substr(1));; - }, $Kernel_instance_variable_defined$ques$28.$$arity = 1); - - Opal.def(self, '$instance_variable_get', $Kernel_instance_variable_get$29 = function $$instance_variable_get(name) { - var self = this; - - - name = $$($nesting, 'Opal')['$instance_variable_name!'](name); - - var ivar = self[Opal.ivar(name.substr(1))]; - - return ivar == null ? nil : ivar; - ; - }, $Kernel_instance_variable_get$29.$$arity = 1); - - Opal.def(self, '$instance_variable_set', $Kernel_instance_variable_set$30 = function $$instance_variable_set(name, value) { - var self = this; - - - name = $$($nesting, 'Opal')['$instance_variable_name!'](name); - return self[Opal.ivar(name.substr(1))] = value;; - }, $Kernel_instance_variable_set$30.$$arity = 2); - - Opal.def(self, '$remove_instance_variable', $Kernel_remove_instance_variable$31 = function $$remove_instance_variable(name) { - var self = this; - - - name = $$($nesting, 'Opal')['$instance_variable_name!'](name); - - var key = Opal.ivar(name.substr(1)), - val; - if (self.hasOwnProperty(key)) { - val = self[key]; - delete self[key]; - return val; - } - ; - return self.$raise($$($nesting, 'NameError'), "" + "instance variable " + (name) + " not defined"); - }, $Kernel_remove_instance_variable$31.$$arity = 1); - - Opal.def(self, '$instance_variables', $Kernel_instance_variables$32 = function $$instance_variables() { - var self = this; - - - var result = [], ivar; - - for (var name in self) { - if (self.hasOwnProperty(name) && name.charAt(0) !== '$') { - if (name.substr(-1) === '$') { - ivar = name.slice(0, name.length - 1); - } else { - ivar = name; - } - result.push('@' + ivar); - } - } - - return result; - - }, $Kernel_instance_variables$32.$$arity = 0); - - Opal.def(self, '$Integer', $Kernel_Integer$33 = function $$Integer(value, base) { - var self = this; - - - ; - - var i, str, base_digits; - - if (!value.$$is_string) { - if (base !== undefined) { - self.$raise($$($nesting, 'ArgumentError'), "base specified for non string value") - } - if (value === nil) { - self.$raise($$($nesting, 'TypeError'), "can't convert nil into Integer") - } - if (value.$$is_number) { - if (value === Infinity || value === -Infinity || isNaN(value)) { - self.$raise($$($nesting, 'FloatDomainError'), value) - } - return Math.floor(value); - } - if (value['$respond_to?']("to_int")) { - i = value.$to_int(); - if (i !== nil) { - return i; - } - } - return $$($nesting, 'Opal')['$coerce_to!'](value, $$($nesting, 'Integer'), "to_i"); - } - - if (value === "0") { - return 0; - } - - if (base === undefined) { - base = 0; - } else { - base = $$($nesting, 'Opal').$coerce_to(base, $$($nesting, 'Integer'), "to_int"); - if (base === 1 || base < 0 || base > 36) { - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid radix " + (base)) - } - } - - str = value.toLowerCase(); - - str = str.replace(/(\d)_(?=\d)/g, '$1'); - - str = str.replace(/^(\s*[+-]?)(0[bodx]?)/, function (_, head, flag) { - switch (flag) { - case '0b': - if (base === 0 || base === 2) { - base = 2; - return head; - } - case '0': - case '0o': - if (base === 0 || base === 8) { - base = 8; - return head; - } - case '0d': - if (base === 0 || base === 10) { - base = 10; - return head; - } - case '0x': - if (base === 0 || base === 16) { - base = 16; - return head; - } - } - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid value for Integer(): \"" + (value) + "\"") - }); - - base = (base === 0 ? 10 : base); - - base_digits = '0-' + (base <= 10 ? base - 1 : '9a-' + String.fromCharCode(97 + (base - 11))); - - if (!(new RegExp('^\\s*[+-]?[' + base_digits + ']+\\s*$')).test(str)) { - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid value for Integer(): \"" + (value) + "\"") - } - - i = parseInt(str, base); - - if (isNaN(i)) { - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid value for Integer(): \"" + (value) + "\"") - } - - return i; - ; - }, $Kernel_Integer$33.$$arity = -2); - - Opal.def(self, '$Float', $Kernel_Float$34 = function $$Float(value) { - var self = this; - - - var str; - - if (value === nil) { - self.$raise($$($nesting, 'TypeError'), "can't convert nil into Float") - } - - if (value.$$is_string) { - str = value.toString(); - - str = str.replace(/(\d)_(?=\d)/g, '$1'); - - //Special case for hex strings only: - if (/^\s*[-+]?0[xX][0-9a-fA-F]+\s*$/.test(str)) { - return self.$Integer(str); - } - - if (!/^\s*[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\s*$/.test(str)) { - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid value for Float(): \"" + (value) + "\"") - } - - return parseFloat(str); - } - - return $$($nesting, 'Opal')['$coerce_to!'](value, $$($nesting, 'Float'), "to_f"); - - }, $Kernel_Float$34.$$arity = 1); - - Opal.def(self, '$Hash', $Kernel_Hash$35 = function $$Hash(arg) { - var $a, self = this; - - - if ($truthy(($truthy($a = arg['$nil?']()) ? $a : arg['$==']([])))) { - return $hash2([], {})}; - if ($truthy($$($nesting, 'Hash')['$==='](arg))) { - return arg}; - return $$($nesting, 'Opal')['$coerce_to!'](arg, $$($nesting, 'Hash'), "to_hash"); - }, $Kernel_Hash$35.$$arity = 1); - - Opal.def(self, '$is_a?', $Kernel_is_a$ques$36 = function(klass) { - var self = this; - - - if (!klass.$$is_class && !klass.$$is_module) { - self.$raise($$($nesting, 'TypeError'), "class or module required"); - } - - return Opal.is_a(self, klass); - - }, $Kernel_is_a$ques$36.$$arity = 1); - - Opal.def(self, '$itself', $Kernel_itself$37 = function $$itself() { - var self = this; - - return self - }, $Kernel_itself$37.$$arity = 0); - Opal.alias(self, "kind_of?", "is_a?"); - - Opal.def(self, '$lambda', $Kernel_lambda$38 = function $$lambda() { - var $iter = $Kernel_lambda$38.$$p, block = $iter || nil, self = this; - - if ($iter) $Kernel_lambda$38.$$p = null; - - - if ($iter) $Kernel_lambda$38.$$p = null;; - return Opal.lambda(block);; - }, $Kernel_lambda$38.$$arity = 0); - - Opal.def(self, '$load', $Kernel_load$39 = function $$load(file) { - var self = this; - - - file = $$($nesting, 'Opal')['$coerce_to!'](file, $$($nesting, 'String'), "to_str"); - return Opal.load(file); - }, $Kernel_load$39.$$arity = 1); - - Opal.def(self, '$loop', $Kernel_loop$40 = function $$loop() { - var $$41, $a, $iter = $Kernel_loop$40.$$p, $yield = $iter || nil, self = this, e = nil; - - if ($iter) $Kernel_loop$40.$$p = null; - - if (($yield !== nil)) { - } else { - return $send(self, 'enum_for', ["loop"], ($$41 = function(){var self = $$41.$$s || this; - - return $$$($$($nesting, 'Float'), 'INFINITY')}, $$41.$$s = self, $$41.$$arity = 0, $$41)) - }; - while ($truthy(true)) { - - try { - Opal.yieldX($yield, []) - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StopIteration')])) {e = $err; - try { - return e.$result() - } finally { Opal.pop_exception() } - } else { throw $err; } - }; - }; - return self; - }, $Kernel_loop$40.$$arity = 0); - - Opal.def(self, '$nil?', $Kernel_nil$ques$42 = function() { - var self = this; - - return false - }, $Kernel_nil$ques$42.$$arity = 0); - Opal.alias(self, "object_id", "__id__"); - - Opal.def(self, '$printf', $Kernel_printf$43 = function $$printf($a) { - var $post_args, args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - if ($truthy(args['$any?']())) { - self.$print($send(self, 'format', Opal.to_a(args)))}; - return nil; - }, $Kernel_printf$43.$$arity = -1); - - Opal.def(self, '$proc', $Kernel_proc$44 = function $$proc() { - var $iter = $Kernel_proc$44.$$p, block = $iter || nil, self = this; - - if ($iter) $Kernel_proc$44.$$p = null; - - - if ($iter) $Kernel_proc$44.$$p = null;; - if ($truthy(block)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "tried to create Proc object without a block") - }; - block.$$is_lambda = false; - return block; - }, $Kernel_proc$44.$$arity = 0); - - Opal.def(self, '$puts', $Kernel_puts$45 = function $$puts($a) { - var $post_args, strs, self = this; - if ($gvars.stdout == null) $gvars.stdout = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - strs = $post_args;; - return $send($gvars.stdout, 'puts', Opal.to_a(strs)); - }, $Kernel_puts$45.$$arity = -1); - - Opal.def(self, '$p', $Kernel_p$46 = function $$p($a) { - var $post_args, args, $$47, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - $send(args, 'each', [], ($$47 = function(obj){var self = $$47.$$s || this; - if ($gvars.stdout == null) $gvars.stdout = nil; - - - - if (obj == null) { - obj = nil; - }; - return $gvars.stdout.$puts(obj.$inspect());}, $$47.$$s = self, $$47.$$arity = 1, $$47)); - if ($truthy($rb_le(args.$length(), 1))) { - return args['$[]'](0) - } else { - return args - }; - }, $Kernel_p$46.$$arity = -1); - - Opal.def(self, '$print', $Kernel_print$48 = function $$print($a) { - var $post_args, strs, self = this; - if ($gvars.stdout == null) $gvars.stdout = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - strs = $post_args;; - return $send($gvars.stdout, 'print', Opal.to_a(strs)); - }, $Kernel_print$48.$$arity = -1); - - Opal.def(self, '$warn', $Kernel_warn$49 = function $$warn($a) { - var $post_args, strs, $b, self = this; - if ($gvars.VERBOSE == null) $gvars.VERBOSE = nil; - if ($gvars.stderr == null) $gvars.stderr = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - strs = $post_args;; - if ($truthy(($truthy($b = $gvars.VERBOSE['$nil?']()) ? $b : strs['$empty?']()))) { - return nil - } else { - return $send($gvars.stderr, 'puts', Opal.to_a(strs)) - }; - }, $Kernel_warn$49.$$arity = -1); - - Opal.def(self, '$raise', $Kernel_raise$50 = function $$raise(exception, string, _backtrace) { - var self = this; - if ($gvars["!"] == null) $gvars["!"] = nil; - - - ; - - if (string == null) { - string = nil; - }; - - if (_backtrace == null) { - _backtrace = nil; - }; - - if (exception == null && $gvars["!"] !== nil) { - throw $gvars["!"]; - } - if (exception == null) { - exception = $$($nesting, 'RuntimeError').$new(); - } - else if (exception.$$is_string) { - exception = $$($nesting, 'RuntimeError').$new(exception); - } - // using respond_to? and not an undefined check to avoid method_missing matching as true - else if (exception.$$is_class && exception['$respond_to?']("exception")) { - exception = exception.$exception(string); - } - else if (exception['$is_a?']($$($nesting, 'Exception'))) { - // exception is fine - } - else { - exception = $$($nesting, 'TypeError').$new("exception class/object expected"); - } - - if ($gvars["!"] !== nil) { - Opal.exceptions.push($gvars["!"]); - } - - $gvars["!"] = exception; - - throw exception; - ; - }, $Kernel_raise$50.$$arity = -1); - Opal.alias(self, "fail", "raise"); - - Opal.def(self, '$rand', $Kernel_rand$51 = function $$rand(max) { - var self = this; - - - ; - - if (max === undefined) { - return $$$($$($nesting, 'Random'), 'DEFAULT').$rand(); - } - - if (max.$$is_number) { - if (max < 0) { - max = Math.abs(max); - } - - if (max % 1 !== 0) { - max = max.$to_i(); - } - - if (max === 0) { - max = undefined; - } - } - ; - return $$$($$($nesting, 'Random'), 'DEFAULT').$rand(max); - }, $Kernel_rand$51.$$arity = -1); - - Opal.def(self, '$respond_to?', $Kernel_respond_to$ques$52 = function(name, include_all) { - var self = this; - - - - if (include_all == null) { - include_all = false; - }; - if ($truthy(self['$respond_to_missing?'](name, include_all))) { - return true}; - - var body = self['$' + name]; - - if (typeof(body) === "function" && !body.$$stub) { - return true; - } - ; - return false; - }, $Kernel_respond_to$ques$52.$$arity = -2); - - Opal.def(self, '$respond_to_missing?', $Kernel_respond_to_missing$ques$53 = function(method_name, include_all) { - var self = this; - - - - if (include_all == null) { - include_all = false; - }; - return false; - }, $Kernel_respond_to_missing$ques$53.$$arity = -2); - - Opal.def(self, '$require', $Kernel_require$54 = function $$require(file) { - var self = this; - - - file = $$($nesting, 'Opal')['$coerce_to!'](file, $$($nesting, 'String'), "to_str"); - return Opal.require(file); - }, $Kernel_require$54.$$arity = 1); - - Opal.def(self, '$require_relative', $Kernel_require_relative$55 = function $$require_relative(file) { - var self = this; - - - $$($nesting, 'Opal')['$try_convert!'](file, $$($nesting, 'String'), "to_str"); - file = $$($nesting, 'File').$expand_path($$($nesting, 'File').$join(Opal.current_file, "..", file)); - return Opal.require(file); - }, $Kernel_require_relative$55.$$arity = 1); - - Opal.def(self, '$require_tree', $Kernel_require_tree$56 = function $$require_tree(path) { - var self = this; - - - var result = []; - - path = $$($nesting, 'File').$expand_path(path) - path = Opal.normalize(path); - if (path === '.') path = ''; - for (var name in Opal.modules) { - if ((name)['$start_with?'](path)) { - result.push([name, Opal.require(name)]); - } - } - - return result; - - }, $Kernel_require_tree$56.$$arity = 1); - Opal.alias(self, "send", "__send__"); - Opal.alias(self, "public_send", "__send__"); - - Opal.def(self, '$singleton_class', $Kernel_singleton_class$57 = function $$singleton_class() { - var self = this; - - return Opal.get_singleton_class(self); - }, $Kernel_singleton_class$57.$$arity = 0); - - Opal.def(self, '$sleep', $Kernel_sleep$58 = function $$sleep(seconds) { - var self = this; - - - - if (seconds == null) { - seconds = nil; - }; - - if (seconds === nil) { - self.$raise($$($nesting, 'TypeError'), "can't convert NilClass into time interval") - } - if (!seconds.$$is_number) { - self.$raise($$($nesting, 'TypeError'), "" + "can't convert " + (seconds.$class()) + " into time interval") - } - if (seconds < 0) { - self.$raise($$($nesting, 'ArgumentError'), "time interval must be positive") - } - var get_time = Opal.global.performance ? - function() {return performance.now()} : - function() {return new Date()} - - var t = get_time(); - while (get_time() - t <= seconds * 1000); - return seconds; - ; - }, $Kernel_sleep$58.$$arity = -1); - - Opal.def(self, '$srand', $Kernel_srand$59 = function $$srand(seed) { - var self = this; - - - - if (seed == null) { - seed = $$($nesting, 'Random').$new_seed(); - }; - return $$($nesting, 'Random').$srand(seed); - }, $Kernel_srand$59.$$arity = -1); - - Opal.def(self, '$String', $Kernel_String$60 = function $$String(str) { - var $a, self = this; - - return ($truthy($a = $$($nesting, 'Opal')['$coerce_to?'](str, $$($nesting, 'String'), "to_str")) ? $a : $$($nesting, 'Opal')['$coerce_to!'](str, $$($nesting, 'String'), "to_s")) - }, $Kernel_String$60.$$arity = 1); - - Opal.def(self, '$tap', $Kernel_tap$61 = function $$tap() { - var $iter = $Kernel_tap$61.$$p, block = $iter || nil, self = this; - - if ($iter) $Kernel_tap$61.$$p = null; - - - if ($iter) $Kernel_tap$61.$$p = null;; - Opal.yield1(block, self); - return self; - }, $Kernel_tap$61.$$arity = 0); - - Opal.def(self, '$to_proc', $Kernel_to_proc$62 = function $$to_proc() { - var self = this; - - return self - }, $Kernel_to_proc$62.$$arity = 0); - - Opal.def(self, '$to_s', $Kernel_to_s$63 = function $$to_s() { - var self = this; - - return "" + "#<" + (self.$class()) + ":0x" + (self.$__id__().$to_s(16)) + ">" - }, $Kernel_to_s$63.$$arity = 0); - - Opal.def(self, '$catch', $Kernel_catch$64 = function(sym) { - var $iter = $Kernel_catch$64.$$p, $yield = $iter || nil, self = this, e = nil; - - if ($iter) $Kernel_catch$64.$$p = null; - try { - return Opal.yieldX($yield, []); - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'UncaughtThrowError')])) {e = $err; - try { - - if (e.$sym()['$=='](sym)) { - return e.$arg()}; - return self.$raise(); - } finally { Opal.pop_exception() } - } else { throw $err; } - } - }, $Kernel_catch$64.$$arity = 1); - - Opal.def(self, '$throw', $Kernel_throw$65 = function($a) { - var $post_args, args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return self.$raise($$($nesting, 'UncaughtThrowError'), args); - }, $Kernel_throw$65.$$arity = -1); - - Opal.def(self, '$open', $Kernel_open$66 = function $$open($a) { - var $iter = $Kernel_open$66.$$p, block = $iter || nil, $post_args, args, self = this; - - if ($iter) $Kernel_open$66.$$p = null; - - - if ($iter) $Kernel_open$66.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send($$($nesting, 'File'), 'open', Opal.to_a(args), block.$to_proc()); - }, $Kernel_open$66.$$arity = -1); - - Opal.def(self, '$yield_self', $Kernel_yield_self$67 = function $$yield_self() { - var $$68, $iter = $Kernel_yield_self$67.$$p, $yield = $iter || nil, self = this; - - if ($iter) $Kernel_yield_self$67.$$p = null; - - if (($yield !== nil)) { - } else { - return $send(self, 'enum_for', ["yield_self"], ($$68 = function(){var self = $$68.$$s || this; - - return 1}, $$68.$$s = self, $$68.$$arity = 0, $$68)) - }; - return Opal.yield1($yield, self);; - }, $Kernel_yield_self$67.$$arity = 0); - })($nesting[0], $nesting); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Object'); - - var $nesting = [self].concat($parent_nesting); - - return self.$include($$($nesting, 'Kernel')) - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/error"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $module = Opal.module, $hash2 = Opal.hash2; - - Opal.add_stubs(['$new', '$clone', '$to_s', '$empty?', '$class', '$raise', '$+', '$attr_reader', '$[]', '$>', '$length', '$inspect']); - - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Exception'); - - var $nesting = [self].concat($parent_nesting), $Exception_new$1, $Exception_exception$2, $Exception_initialize$3, $Exception_backtrace$4, $Exception_exception$5, $Exception_message$6, $Exception_inspect$7, $Exception_set_backtrace$8, $Exception_to_s$9; - - self.$$prototype.message = nil; - - var stack_trace_limit; - Opal.defs(self, '$new', $Exception_new$1 = function($a) { - var $post_args, args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - - var message = (args.length > 0) ? args[0] : nil; - var error = new self.$$constructor(message); - error.name = self.$$name; - error.message = message; - Opal.send(error, error.$initialize, args); - - // Error.captureStackTrace() will use .name and .toString to build the - // first line of the stack trace so it must be called after the error - // has been initialized. - // https://nodejs.org/dist/latest-v6.x/docs/api/errors.html - if (Opal.config.enable_stack_trace && Error.captureStackTrace) { - // Passing Kernel.raise will cut the stack trace from that point above - Error.captureStackTrace(error, stack_trace_limit); - } - - return error; - ; - }, $Exception_new$1.$$arity = -1); - stack_trace_limit = self.$new; - Opal.defs(self, '$exception', $Exception_exception$2 = function $$exception($a) { - var $post_args, args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send(self, 'new', Opal.to_a(args)); - }, $Exception_exception$2.$$arity = -1); - - Opal.def(self, '$initialize', $Exception_initialize$3 = function $$initialize($a) { - var $post_args, args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return self.message = (args.length > 0) ? args[0] : nil;; - }, $Exception_initialize$3.$$arity = -1); - - Opal.def(self, '$backtrace', $Exception_backtrace$4 = function $$backtrace() { - var self = this; - - - if (self.backtrace) { - // nil is a valid backtrace - return self.backtrace; - } - - var backtrace = self.stack; - - if (typeof(backtrace) === 'string') { - return backtrace.split("\n").slice(0, 15); - } - else if (backtrace) { - return backtrace.slice(0, 15); - } - - return []; - - }, $Exception_backtrace$4.$$arity = 0); - - Opal.def(self, '$exception', $Exception_exception$5 = function $$exception(str) { - var self = this; - - - - if (str == null) { - str = nil; - }; - - if (str === nil || self === str) { - return self; - } - - var cloned = self.$clone(); - cloned.message = str; - cloned.stack = self.stack; - return cloned; - ; - }, $Exception_exception$5.$$arity = -1); - - Opal.def(self, '$message', $Exception_message$6 = function $$message() { - var self = this; - - return self.$to_s() - }, $Exception_message$6.$$arity = 0); - - Opal.def(self, '$inspect', $Exception_inspect$7 = function $$inspect() { - var self = this, as_str = nil; - - - as_str = self.$to_s(); - if ($truthy(as_str['$empty?']())) { - return self.$class().$to_s() - } else { - return "" + "#<" + (self.$class().$to_s()) + ": " + (self.$to_s()) + ">" - }; - }, $Exception_inspect$7.$$arity = 0); - - Opal.def(self, '$set_backtrace', $Exception_set_backtrace$8 = function $$set_backtrace(backtrace) { - var self = this; - - - var valid = true, i, ii; - - if (backtrace === nil) { - self.backtrace = nil; - self.stack = ''; - } else if (backtrace.$$is_string) { - self.backtrace = [backtrace]; - self.stack = backtrace; - } else { - if (backtrace.$$is_array) { - for (i = 0, ii = backtrace.length; i < ii; i++) { - if (!backtrace[i].$$is_string) { - valid = false; - break; - } - } - } else { - valid = false; - } - - if (valid === false) { - self.$raise($$($nesting, 'TypeError'), "backtrace must be Array of String") - } - - self.backtrace = backtrace; - self.stack = backtrace.join('\n'); - } - - return backtrace; - - }, $Exception_set_backtrace$8.$$arity = 1); - return (Opal.def(self, '$to_s', $Exception_to_s$9 = function $$to_s() { - var $a, $b, self = this; - - return ($truthy($a = ($truthy($b = self.message) ? self.message.$to_s() : $b)) ? $a : self.$class().$to_s()) - }, $Exception_to_s$9.$$arity = 0), nil) && 'to_s'; - })($nesting[0], Error, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ScriptError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'Exception'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SyntaxError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'ScriptError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'LoadError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'ScriptError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'NotImplementedError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'ScriptError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SystemExit'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'Exception'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'NoMemoryError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'Exception'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SignalException'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'Exception'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Interrupt'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'Exception'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SecurityError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'Exception'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'StandardError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'Exception'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'EncodingError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'StandardError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ZeroDivisionError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'StandardError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'NameError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'StandardError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'NoMethodError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'NameError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RuntimeError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'StandardError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'FrozenError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'RuntimeError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'LocalJumpError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'StandardError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'TypeError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'StandardError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArgumentError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'StandardError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'IndexError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'StandardError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'StopIteration'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'IndexError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'KeyError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'IndexError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RangeError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'StandardError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'FloatDomainError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'RangeError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'IOError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'StandardError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SystemCallError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'StandardError'), $nesting); - (function($base, $parent_nesting) { - var self = $module($base, 'Errno'); - - var $nesting = [self].concat($parent_nesting); - - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'EINVAL'); - - var $nesting = [self].concat($parent_nesting), $EINVAL_new$10; - - return (Opal.defs(self, '$new', $EINVAL_new$10 = function(name) { - var $iter = $EINVAL_new$10.$$p, $yield = $iter || nil, self = this, message = nil; - - if ($iter) $EINVAL_new$10.$$p = null; - - - if (name == null) { - name = nil; - }; - message = "Invalid argument"; - if ($truthy(name)) { - message = $rb_plus(message, "" + " - " + (name))}; - return $send(self, Opal.find_super_dispatcher(self, 'new', $EINVAL_new$10, false, self.$$class.$$prototype), [message], null); - }, $EINVAL_new$10.$$arity = -1), nil) && 'new' - })($nesting[0], $$($nesting, 'SystemCallError'), $nesting) - })($nesting[0], $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'UncaughtThrowError'); - - var $nesting = [self].concat($parent_nesting), $UncaughtThrowError_initialize$11; - - self.$$prototype.sym = nil; - - self.$attr_reader("sym", "arg"); - return (Opal.def(self, '$initialize', $UncaughtThrowError_initialize$11 = function $$initialize(args) { - var $iter = $UncaughtThrowError_initialize$11.$$p, $yield = $iter || nil, self = this; - - if ($iter) $UncaughtThrowError_initialize$11.$$p = null; - - self.sym = args['$[]'](0); - if ($truthy($rb_gt(args.$length(), 1))) { - self.arg = args['$[]'](1)}; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', $UncaughtThrowError_initialize$11, false), ["" + "uncaught throw " + (self.sym.$inspect())], null); - }, $UncaughtThrowError_initialize$11.$$arity = 1), nil) && 'initialize'; - })($nesting[0], $$($nesting, 'ArgumentError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'NameError'); - - var $nesting = [self].concat($parent_nesting), $NameError_initialize$12; - - - self.$attr_reader("name"); - return (Opal.def(self, '$initialize', $NameError_initialize$12 = function $$initialize(message, name) { - var $iter = $NameError_initialize$12.$$p, $yield = $iter || nil, self = this; - - if ($iter) $NameError_initialize$12.$$p = null; - - - if (name == null) { - name = nil; - }; - $send(self, Opal.find_super_dispatcher(self, 'initialize', $NameError_initialize$12, false), [message], null); - return (self.name = name); - }, $NameError_initialize$12.$$arity = -2), nil) && 'initialize'; - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'NoMethodError'); - - var $nesting = [self].concat($parent_nesting), $NoMethodError_initialize$13; - - - self.$attr_reader("args"); - return (Opal.def(self, '$initialize', $NoMethodError_initialize$13 = function $$initialize(message, name, args) { - var $iter = $NoMethodError_initialize$13.$$p, $yield = $iter || nil, self = this; - - if ($iter) $NoMethodError_initialize$13.$$p = null; - - - if (name == null) { - name = nil; - }; - - if (args == null) { - args = []; - }; - $send(self, Opal.find_super_dispatcher(self, 'initialize', $NoMethodError_initialize$13, false), [message, name], null); - return (self.args = args); - }, $NoMethodError_initialize$13.$$arity = -2), nil) && 'initialize'; - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'StopIteration'); - - var $nesting = [self].concat($parent_nesting); - - return self.$attr_reader("result") - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'KeyError'); - - var $nesting = [self].concat($parent_nesting), $KeyError_initialize$14, $KeyError_receiver$15, $KeyError_key$16; - - self.$$prototype.receiver = self.$$prototype.key = nil; - - - Opal.def(self, '$initialize', $KeyError_initialize$14 = function $$initialize(message, $kwargs) { - var receiver, key, $iter = $KeyError_initialize$14.$$p, $yield = $iter || nil, self = this; - - if ($iter) $KeyError_initialize$14.$$p = null; - - - if ($kwargs == null) { - $kwargs = $hash2([], {}); - } else if (!$kwargs.$$is_hash) { - throw Opal.ArgumentError.$new('expected kwargs'); - }; - - receiver = $kwargs.$$smap["receiver"]; - if (receiver == null) { - receiver = nil - }; - - key = $kwargs.$$smap["key"]; - if (key == null) { - key = nil - }; - $send(self, Opal.find_super_dispatcher(self, 'initialize', $KeyError_initialize$14, false), [message], null); - self.receiver = receiver; - return (self.key = key); - }, $KeyError_initialize$14.$$arity = -2); - - Opal.def(self, '$receiver', $KeyError_receiver$15 = function $$receiver() { - var $a, self = this; - - return ($truthy($a = self.receiver) ? $a : self.$raise($$($nesting, 'ArgumentError'), "no receiver is available")) - }, $KeyError_receiver$15.$$arity = 0); - return (Opal.def(self, '$key', $KeyError_key$16 = function $$key() { - var $a, self = this; - - return ($truthy($a = self.key) ? $a : self.$raise($$($nesting, 'ArgumentError'), "no key is available")) - }, $KeyError_key$16.$$arity = 0), nil) && 'key'; - })($nesting[0], null, $nesting); - return (function($base, $parent_nesting) { - var self = $module($base, 'JS'); - - var $nesting = [self].concat($parent_nesting); - - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Error'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], null, $nesting) - })($nesting[0], $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/constants"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice; - - - Opal.const_set($nesting[0], 'RUBY_PLATFORM', "opal"); - Opal.const_set($nesting[0], 'RUBY_ENGINE', "opal"); - Opal.const_set($nesting[0], 'RUBY_VERSION', "2.5.7"); - Opal.const_set($nesting[0], 'RUBY_ENGINE_VERSION', "1.0.3"); - Opal.const_set($nesting[0], 'RUBY_RELEASE_DATE', "2020-02-01"); - Opal.const_set($nesting[0], 'RUBY_PATCHLEVEL', 0); - Opal.const_set($nesting[0], 'RUBY_REVISION', 0); - Opal.const_set($nesting[0], 'RUBY_COPYRIGHT', "opal - Copyright (C) 2013-2020 Adam Beynon and the Opal contributors"); - return Opal.const_set($nesting[0], 'RUBY_DESCRIPTION', "" + "opal " + ($$($nesting, 'RUBY_ENGINE_VERSION')) + " (" + ($$($nesting, 'RUBY_RELEASE_DATE')) + " revision " + ($$($nesting, 'RUBY_REVISION')) + ")"); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["opal/base"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice; - - Opal.add_stubs(['$require']); - - self.$require("corelib/runtime"); - self.$require("corelib/helpers"); - self.$require("corelib/module"); - self.$require("corelib/class"); - self.$require("corelib/basic_object"); - self.$require("corelib/kernel"); - self.$require("corelib/error"); - return self.$require("corelib/constants"); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/nil"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy; - - Opal.add_stubs(['$raise', '$name', '$new', '$>', '$length', '$Rational']); - - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'NilClass'); - - var $nesting = [self].concat($parent_nesting), $NilClass_$excl$2, $NilClass_$$3, $NilClass_$$4, $NilClass_$$5, $NilClass_$eq_eq$6, $NilClass_dup$7, $NilClass_clone$8, $NilClass_inspect$9, $NilClass_nil$ques$10, $NilClass_singleton_class$11, $NilClass_to_a$12, $NilClass_to_h$13, $NilClass_to_i$14, $NilClass_to_s$15, $NilClass_to_c$16, $NilClass_rationalize$17, $NilClass_to_r$18, $NilClass_instance_variables$19; - - - self.$$prototype.$$meta = self; - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $allocate$1; - - - - Opal.def(self, '$allocate', $allocate$1 = function $$allocate() { - var self = this; - - return self.$raise($$($nesting, 'TypeError'), "" + "allocator undefined for " + (self.$name())) - }, $allocate$1.$$arity = 0); - - - Opal.udef(self, '$' + "new");; - return nil;; - })(Opal.get_singleton_class(self), $nesting); - - Opal.def(self, '$!', $NilClass_$excl$2 = function() { - var self = this; - - return true - }, $NilClass_$excl$2.$$arity = 0); - - Opal.def(self, '$&', $NilClass_$$3 = function(other) { - var self = this; - - return false - }, $NilClass_$$3.$$arity = 1); - - Opal.def(self, '$|', $NilClass_$$4 = function(other) { - var self = this; - - return other !== false && other !== nil; - }, $NilClass_$$4.$$arity = 1); - - Opal.def(self, '$^', $NilClass_$$5 = function(other) { - var self = this; - - return other !== false && other !== nil; - }, $NilClass_$$5.$$arity = 1); - - Opal.def(self, '$==', $NilClass_$eq_eq$6 = function(other) { - var self = this; - - return other === nil; - }, $NilClass_$eq_eq$6.$$arity = 1); - - Opal.def(self, '$dup', $NilClass_dup$7 = function $$dup() { - var self = this; - - return nil - }, $NilClass_dup$7.$$arity = 0); - - Opal.def(self, '$clone', $NilClass_clone$8 = function $$clone($kwargs) { - var freeze, self = this; - - - - if ($kwargs == null) { - $kwargs = $hash2([], {}); - } else if (!$kwargs.$$is_hash) { - throw Opal.ArgumentError.$new('expected kwargs'); - }; - - freeze = $kwargs.$$smap["freeze"]; - if (freeze == null) { - freeze = true - }; - return nil; - }, $NilClass_clone$8.$$arity = -1); - - Opal.def(self, '$inspect', $NilClass_inspect$9 = function $$inspect() { - var self = this; - - return "nil" - }, $NilClass_inspect$9.$$arity = 0); - - Opal.def(self, '$nil?', $NilClass_nil$ques$10 = function() { - var self = this; - - return true - }, $NilClass_nil$ques$10.$$arity = 0); - - Opal.def(self, '$singleton_class', $NilClass_singleton_class$11 = function $$singleton_class() { - var self = this; - - return $$($nesting, 'NilClass') - }, $NilClass_singleton_class$11.$$arity = 0); - - Opal.def(self, '$to_a', $NilClass_to_a$12 = function $$to_a() { - var self = this; - - return [] - }, $NilClass_to_a$12.$$arity = 0); - - Opal.def(self, '$to_h', $NilClass_to_h$13 = function $$to_h() { - var self = this; - - return Opal.hash(); - }, $NilClass_to_h$13.$$arity = 0); - - Opal.def(self, '$to_i', $NilClass_to_i$14 = function $$to_i() { - var self = this; - - return 0 - }, $NilClass_to_i$14.$$arity = 0); - Opal.alias(self, "to_f", "to_i"); - - Opal.def(self, '$to_s', $NilClass_to_s$15 = function $$to_s() { - var self = this; - - return "" - }, $NilClass_to_s$15.$$arity = 0); - - Opal.def(self, '$to_c', $NilClass_to_c$16 = function $$to_c() { - var self = this; - - return $$($nesting, 'Complex').$new(0, 0) - }, $NilClass_to_c$16.$$arity = 0); - - Opal.def(self, '$rationalize', $NilClass_rationalize$17 = function $$rationalize($a) { - var $post_args, args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - if ($truthy($rb_gt(args.$length(), 1))) { - self.$raise($$($nesting, 'ArgumentError'))}; - return self.$Rational(0, 1); - }, $NilClass_rationalize$17.$$arity = -1); - - Opal.def(self, '$to_r', $NilClass_to_r$18 = function $$to_r() { - var self = this; - - return self.$Rational(0, 1) - }, $NilClass_to_r$18.$$arity = 0); - return (Opal.def(self, '$instance_variables', $NilClass_instance_variables$19 = function $$instance_variables() { - var self = this; - - return [] - }, $NilClass_instance_variables$19.$$arity = 0), nil) && 'instance_variables'; - })($nesting[0], null, $nesting); - return Opal.const_set($nesting[0], 'NIL', nil); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/boolean"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2; - - Opal.add_stubs(['$raise', '$name']); - - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Boolean'); - - var $nesting = [self].concat($parent_nesting), $Boolean___id__$2, $Boolean_$excl$3, $Boolean_$$4, $Boolean_$$5, $Boolean_$$6, $Boolean_$eq_eq$7, $Boolean_singleton_class$8, $Boolean_to_s$9, $Boolean_dup$10, $Boolean_clone$11; - - - Opal.defineProperty(self.$$prototype, '$$is_boolean', true); - Opal.defineProperty(self.$$prototype, '$$meta', self); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $allocate$1; - - - - Opal.def(self, '$allocate', $allocate$1 = function $$allocate() { - var self = this; - - return self.$raise($$($nesting, 'TypeError'), "" + "allocator undefined for " + (self.$name())) - }, $allocate$1.$$arity = 0); - - - Opal.udef(self, '$' + "new");; - return nil;; - })(Opal.get_singleton_class(self), $nesting); - - Opal.def(self, '$__id__', $Boolean___id__$2 = function $$__id__() { - var self = this; - - return self.valueOf() ? 2 : 0; - }, $Boolean___id__$2.$$arity = 0); - Opal.alias(self, "object_id", "__id__"); - - Opal.def(self, '$!', $Boolean_$excl$3 = function() { - var self = this; - - return self != true; - }, $Boolean_$excl$3.$$arity = 0); - - Opal.def(self, '$&', $Boolean_$$4 = function(other) { - var self = this; - - return (self == true) ? (other !== false && other !== nil) : false; - }, $Boolean_$$4.$$arity = 1); - - Opal.def(self, '$|', $Boolean_$$5 = function(other) { - var self = this; - - return (self == true) ? true : (other !== false && other !== nil); - }, $Boolean_$$5.$$arity = 1); - - Opal.def(self, '$^', $Boolean_$$6 = function(other) { - var self = this; - - return (self == true) ? (other === false || other === nil) : (other !== false && other !== nil); - }, $Boolean_$$6.$$arity = 1); - - Opal.def(self, '$==', $Boolean_$eq_eq$7 = function(other) { - var self = this; - - return (self == true) === other.valueOf(); - }, $Boolean_$eq_eq$7.$$arity = 1); - Opal.alias(self, "equal?", "=="); - Opal.alias(self, "eql?", "=="); - - Opal.def(self, '$singleton_class', $Boolean_singleton_class$8 = function $$singleton_class() { - var self = this; - - return $$($nesting, 'Boolean') - }, $Boolean_singleton_class$8.$$arity = 0); - - Opal.def(self, '$to_s', $Boolean_to_s$9 = function $$to_s() { - var self = this; - - return (self == true) ? 'true' : 'false'; - }, $Boolean_to_s$9.$$arity = 0); - - Opal.def(self, '$dup', $Boolean_dup$10 = function $$dup() { - var self = this; - - return self - }, $Boolean_dup$10.$$arity = 0); - return (Opal.def(self, '$clone', $Boolean_clone$11 = function $$clone($kwargs) { - var freeze, self = this; - - - - if ($kwargs == null) { - $kwargs = $hash2([], {}); - } else if (!$kwargs.$$is_hash) { - throw Opal.ArgumentError.$new('expected kwargs'); - }; - - freeze = $kwargs.$$smap["freeze"]; - if (freeze == null) { - freeze = true - }; - return self; - }, $Boolean_clone$11.$$arity = -1), nil) && 'clone'; - })($nesting[0], Boolean, $nesting); - Opal.const_set($nesting[0], 'TrueClass', $$($nesting, 'Boolean')); - Opal.const_set($nesting[0], 'FalseClass', $$($nesting, 'Boolean')); - Opal.const_set($nesting[0], 'TRUE', true); - return Opal.const_set($nesting[0], 'FALSE', false); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/comparable"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$>', '$<', '$===', '$raise', '$class', '$equal?', '$<=>']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Comparable'); - - var $nesting = [self].concat($parent_nesting), $Comparable_$eq_eq$1, $Comparable_$gt$2, $Comparable_$gt_eq$3, $Comparable_$lt$4, $Comparable_$lt_eq$5, $Comparable_between$ques$6, $Comparable_clamp$7, $case = nil; - - - - function normalize(what) { - if (Opal.is_a(what, Opal.Integer)) { return what; } - - if ($rb_gt(what, 0)) { return 1; } - if ($rb_lt(what, 0)) { return -1; } - return 0; - } - - function fail_comparison(lhs, rhs) { - var class_name; - (function() {$case = rhs; - if (nil['$===']($case) || true['$===']($case) || false['$===']($case) || $$($nesting, 'Integer')['$===']($case) || $$($nesting, 'Float')['$===']($case)) {return class_name = rhs.$inspect();} - else {return class_name = rhs.$$class;}})() - self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + ((lhs).$class()) + " with " + (class_name) + " failed") - } - ; - - Opal.def(self, '$==', $Comparable_$eq_eq$1 = function(other) { - var self = this, cmp = nil; - - - if ($truthy(self['$equal?'](other))) { - return true}; - - if (self["$<=>"] == Opal.Kernel["$<=>"]) { - return false; - } - - // check for infinite recursion - if (self.$$comparable) { - delete self.$$comparable; - return false; - } - ; - if ($truthy((cmp = self['$<=>'](other)))) { - } else { - return false - }; - return normalize(cmp) == 0;; - }, $Comparable_$eq_eq$1.$$arity = 1); - - Opal.def(self, '$>', $Comparable_$gt$2 = function(other) { - var self = this, cmp = nil; - - - if ($truthy((cmp = self['$<=>'](other)))) { - } else { - fail_comparison(self, other) - }; - return normalize(cmp) > 0;; - }, $Comparable_$gt$2.$$arity = 1); - - Opal.def(self, '$>=', $Comparable_$gt_eq$3 = function(other) { - var self = this, cmp = nil; - - - if ($truthy((cmp = self['$<=>'](other)))) { - } else { - fail_comparison(self, other) - }; - return normalize(cmp) >= 0;; - }, $Comparable_$gt_eq$3.$$arity = 1); - - Opal.def(self, '$<', $Comparable_$lt$4 = function(other) { - var self = this, cmp = nil; - - - if ($truthy((cmp = self['$<=>'](other)))) { - } else { - fail_comparison(self, other) - }; - return normalize(cmp) < 0;; - }, $Comparable_$lt$4.$$arity = 1); - - Opal.def(self, '$<=', $Comparable_$lt_eq$5 = function(other) { - var self = this, cmp = nil; - - - if ($truthy((cmp = self['$<=>'](other)))) { - } else { - fail_comparison(self, other) - }; - return normalize(cmp) <= 0;; - }, $Comparable_$lt_eq$5.$$arity = 1); - - Opal.def(self, '$between?', $Comparable_between$ques$6 = function(min, max) { - var self = this; - - - if ($rb_lt(self, min)) { - return false}; - if ($rb_gt(self, max)) { - return false}; - return true; - }, $Comparable_between$ques$6.$$arity = 2); - - Opal.def(self, '$clamp', $Comparable_clamp$7 = function $$clamp(min, max) { - var self = this, cmp = nil; - - - cmp = min['$<=>'](max); - if ($truthy(cmp)) { - } else { - fail_comparison(min, max) - }; - if ($truthy(normalize(cmp) > 0)) { - self.$raise($$($nesting, 'ArgumentError'), "min argument must be smaller than max argument")}; - if ($truthy(normalize(self['$<=>'](min)) < 0)) { - return min}; - if ($truthy(normalize(self['$<=>'](max)) > 0)) { - return max}; - return self; - }, $Comparable_clamp$7.$$arity = 2); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/regexp"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $gvars = Opal.gvars; - - Opal.add_stubs(['$nil?', '$[]', '$raise', '$escape', '$options', '$to_str', '$new', '$join', '$coerce_to!', '$!', '$match', '$coerce_to?', '$begin', '$coerce_to', '$=~', '$attr_reader', '$===', '$inspect', '$to_a']); - - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RegexpError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'StandardError'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Regexp'); - - var $nesting = [self].concat($parent_nesting), $Regexp_$eq_eq$6, $Regexp_$eq_eq_eq$7, $Regexp_$eq_tilde$8, $Regexp_inspect$9, $Regexp_match$10, $Regexp_match$ques$11, $Regexp_$$12, $Regexp_source$13, $Regexp_options$14, $Regexp_casefold$ques$15; - - - Opal.const_set($nesting[0], 'IGNORECASE', 1); - Opal.const_set($nesting[0], 'EXTENDED', 2); - Opal.const_set($nesting[0], 'MULTILINE', 4); - Opal.defineProperty(self.$$prototype, '$$is_regexp', true); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $allocate$1, $escape$2, $last_match$3, $union$4, $new$5; - - - - Opal.def(self, '$allocate', $allocate$1 = function $$allocate() { - var $iter = $allocate$1.$$p, $yield = $iter || nil, self = this, allocated = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $allocate$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - allocated = $send(self, Opal.find_super_dispatcher(self, 'allocate', $allocate$1, false), $zuper, $iter); - allocated.uninitialized = true; - return allocated; - }, $allocate$1.$$arity = 0); - - Opal.def(self, '$escape', $escape$2 = function $$escape(string) { - var self = this; - - return Opal.escape_regexp(string); - }, $escape$2.$$arity = 1); - - Opal.def(self, '$last_match', $last_match$3 = function $$last_match(n) { - var self = this; - if ($gvars["~"] == null) $gvars["~"] = nil; - - - - if (n == null) { - n = nil; - }; - if ($truthy(n['$nil?']())) { - return $gvars["~"] - } else { - return $gvars["~"]['$[]'](n) - }; - }, $last_match$3.$$arity = -1); - Opal.alias(self, "quote", "escape"); - - Opal.def(self, '$union', $union$4 = function $$union($a) { - var $post_args, parts, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - parts = $post_args;; - - var is_first_part_array, quoted_validated, part, options, each_part_options; - if (parts.length == 0) { - return /(?!)/; - } - // return fast if there's only one element - if (parts.length == 1 && parts[0].$$is_regexp) { - return parts[0]; - } - // cover the 2 arrays passed as arguments case - is_first_part_array = parts[0].$$is_array; - if (parts.length > 1 && is_first_part_array) { - self.$raise($$($nesting, 'TypeError'), "no implicit conversion of Array into String") - } - // deal with splat issues (related to https://github.com/opal/opal/issues/858) - if (is_first_part_array) { - parts = parts[0]; - } - options = undefined; - quoted_validated = []; - for (var i=0; i < parts.length; i++) { - part = parts[i]; - if (part.$$is_string) { - quoted_validated.push(self.$escape(part)); - } - else if (part.$$is_regexp) { - each_part_options = (part).$options(); - if (options != undefined && options != each_part_options) { - self.$raise($$($nesting, 'TypeError'), "All expressions must use the same options") - } - options = each_part_options; - quoted_validated.push('('+part.source+')'); - } - else { - quoted_validated.push(self.$escape((part).$to_str())); - } - } - ; - return self.$new((quoted_validated).$join("|"), options); - }, $union$4.$$arity = -1); - return (Opal.def(self, '$new', $new$5 = function(regexp, options) { - var self = this; - - - ; - - if (regexp.$$is_regexp) { - return new RegExp(regexp); - } - - regexp = $$($nesting, 'Opal')['$coerce_to!'](regexp, $$($nesting, 'String'), "to_str"); - - if (regexp.charAt(regexp.length - 1) === '\\' && regexp.charAt(regexp.length - 2) !== '\\') { - self.$raise($$($nesting, 'RegexpError'), "" + "too short escape sequence: /" + (regexp) + "/") - } - - if (options === undefined || options['$!']()) { - return new RegExp(regexp); - } - - if (options.$$is_number) { - var temp = ''; - if ($$($nesting, 'IGNORECASE') & options) { temp += 'i'; } - if ($$($nesting, 'MULTILINE') & options) { temp += 'm'; } - options = temp; - } - else { - options = 'i'; - } - - return new RegExp(regexp, options); - ; - }, $new$5.$$arity = -2), nil) && 'new'; - })(Opal.get_singleton_class(self), $nesting); - - Opal.def(self, '$==', $Regexp_$eq_eq$6 = function(other) { - var self = this; - - return other instanceof RegExp && self.toString() === other.toString(); - }, $Regexp_$eq_eq$6.$$arity = 1); - - Opal.def(self, '$===', $Regexp_$eq_eq_eq$7 = function(string) { - var self = this; - - return self.$match($$($nesting, 'Opal')['$coerce_to?'](string, $$($nesting, 'String'), "to_str")) !== nil - }, $Regexp_$eq_eq_eq$7.$$arity = 1); - - Opal.def(self, '$=~', $Regexp_$eq_tilde$8 = function(string) { - var $a, self = this; - if ($gvars["~"] == null) $gvars["~"] = nil; - - return ($truthy($a = self.$match(string)) ? $gvars["~"].$begin(0) : $a) - }, $Regexp_$eq_tilde$8.$$arity = 1); - Opal.alias(self, "eql?", "=="); - - Opal.def(self, '$inspect', $Regexp_inspect$9 = function $$inspect() { - var self = this; - - - var regexp_format = /^\/(.*)\/([^\/]*)$/; - var value = self.toString(); - var matches = regexp_format.exec(value); - if (matches) { - var regexp_pattern = matches[1]; - var regexp_flags = matches[2]; - var chars = regexp_pattern.split(''); - var chars_length = chars.length; - var char_escaped = false; - var regexp_pattern_escaped = ''; - for (var i = 0; i < chars_length; i++) { - var current_char = chars[i]; - if (!char_escaped && current_char == '/') { - regexp_pattern_escaped = regexp_pattern_escaped.concat('\\'); - } - regexp_pattern_escaped = regexp_pattern_escaped.concat(current_char); - if (current_char == '\\') { - if (char_escaped) { - // does not over escape - char_escaped = false; - } else { - char_escaped = true; - } - } else { - char_escaped = false; - } - } - return '/' + regexp_pattern_escaped + '/' + regexp_flags; - } else { - return value; - } - - }, $Regexp_inspect$9.$$arity = 0); - - Opal.def(self, '$match', $Regexp_match$10 = function $$match(string, pos) { - var $iter = $Regexp_match$10.$$p, block = $iter || nil, self = this; - if ($gvars["~"] == null) $gvars["~"] = nil; - - if ($iter) $Regexp_match$10.$$p = null; - - - if ($iter) $Regexp_match$10.$$p = null;; - ; - - if (self.uninitialized) { - self.$raise($$($nesting, 'TypeError'), "uninitialized Regexp") - } - - if (pos === undefined) { - if (string === nil) return ($gvars["~"] = nil); - var m = self.exec($$($nesting, 'Opal').$coerce_to(string, $$($nesting, 'String'), "to_str")); - if (m) { - ($gvars["~"] = $$($nesting, 'MatchData').$new(self, m)); - return block === nil ? $gvars["~"] : Opal.yield1(block, $gvars["~"]); - } else { - return ($gvars["~"] = nil); - } - } - - pos = $$($nesting, 'Opal').$coerce_to(pos, $$($nesting, 'Integer'), "to_int"); - - if (string === nil) { - return ($gvars["~"] = nil); - } - - string = $$($nesting, 'Opal').$coerce_to(string, $$($nesting, 'String'), "to_str"); - - if (pos < 0) { - pos += string.length; - if (pos < 0) { - return ($gvars["~"] = nil); - } - } - - // global RegExp maintains state, so not using self/this - var md, re = Opal.global_regexp(self); - - while (true) { - md = re.exec(string); - if (md === null) { - return ($gvars["~"] = nil); - } - if (md.index >= pos) { - ($gvars["~"] = $$($nesting, 'MatchData').$new(re, md)); - return block === nil ? $gvars["~"] : Opal.yield1(block, $gvars["~"]); - } - re.lastIndex = md.index + 1; - } - ; - }, $Regexp_match$10.$$arity = -2); - - Opal.def(self, '$match?', $Regexp_match$ques$11 = function(string, pos) { - var self = this; - - - ; - - if (self.uninitialized) { - self.$raise($$($nesting, 'TypeError'), "uninitialized Regexp") - } - - if (pos === undefined) { - return string === nil ? false : self.test($$($nesting, 'Opal').$coerce_to(string, $$($nesting, 'String'), "to_str")); - } - - pos = $$($nesting, 'Opal').$coerce_to(pos, $$($nesting, 'Integer'), "to_int"); - - if (string === nil) { - return false; - } - - string = $$($nesting, 'Opal').$coerce_to(string, $$($nesting, 'String'), "to_str"); - - if (pos < 0) { - pos += string.length; - if (pos < 0) { - return false; - } - } - - // global RegExp maintains state, so not using self/this - var md, re = Opal.global_regexp(self); - - md = re.exec(string); - if (md === null || md.index < pos) { - return false; - } else { - return true; - } - ; - }, $Regexp_match$ques$11.$$arity = -2); - - Opal.def(self, '$~', $Regexp_$$12 = function() { - var self = this; - if ($gvars._ == null) $gvars._ = nil; - - return self['$=~']($gvars._) - }, $Regexp_$$12.$$arity = 0); - - Opal.def(self, '$source', $Regexp_source$13 = function $$source() { - var self = this; - - return self.source; - }, $Regexp_source$13.$$arity = 0); - - Opal.def(self, '$options', $Regexp_options$14 = function $$options() { - var self = this; - - - if (self.uninitialized) { - self.$raise($$($nesting, 'TypeError'), "uninitialized Regexp") - } - var result = 0; - // should be supported in IE6 according to https://msdn.microsoft.com/en-us/library/7f5z26w4(v=vs.94).aspx - if (self.multiline) { - result |= $$($nesting, 'MULTILINE'); - } - if (self.ignoreCase) { - result |= $$($nesting, 'IGNORECASE'); - } - return result; - - }, $Regexp_options$14.$$arity = 0); - - Opal.def(self, '$casefold?', $Regexp_casefold$ques$15 = function() { - var self = this; - - return self.ignoreCase; - }, $Regexp_casefold$ques$15.$$arity = 0); - return Opal.alias(self, "to_s", "source"); - })($nesting[0], RegExp, $nesting); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'MatchData'); - - var $nesting = [self].concat($parent_nesting), $MatchData_initialize$16, $MatchData_$$$17, $MatchData_offset$18, $MatchData_$eq_eq$19, $MatchData_begin$20, $MatchData_end$21, $MatchData_captures$22, $MatchData_inspect$23, $MatchData_length$24, $MatchData_to_a$25, $MatchData_to_s$26, $MatchData_values_at$27; - - self.$$prototype.matches = nil; - - self.$attr_reader("post_match", "pre_match", "regexp", "string"); - - Opal.def(self, '$initialize', $MatchData_initialize$16 = function $$initialize(regexp, match_groups) { - var self = this; - - - $gvars["~"] = self; - self.regexp = regexp; - self.begin = match_groups.index; - self.string = match_groups.input; - self.pre_match = match_groups.input.slice(0, match_groups.index); - self.post_match = match_groups.input.slice(match_groups.index + match_groups[0].length); - self.matches = []; - - for (var i = 0, length = match_groups.length; i < length; i++) { - var group = match_groups[i]; - - if (group == null) { - self.matches.push(nil); - } - else { - self.matches.push(group); - } - } - ; - }, $MatchData_initialize$16.$$arity = 2); - - Opal.def(self, '$[]', $MatchData_$$$17 = function($a) { - var $post_args, args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send(self.matches, '[]', Opal.to_a(args)); - }, $MatchData_$$$17.$$arity = -1); - - Opal.def(self, '$offset', $MatchData_offset$18 = function $$offset(n) { - var self = this; - - - if (n !== 0) { - self.$raise($$($nesting, 'ArgumentError'), "MatchData#offset only supports 0th element") - } - return [self.begin, self.begin + self.matches[n].length]; - - }, $MatchData_offset$18.$$arity = 1); - - Opal.def(self, '$==', $MatchData_$eq_eq$19 = function(other) { - var $a, $b, $c, $d, self = this; - - - if ($truthy($$($nesting, 'MatchData')['$==='](other))) { - } else { - return false - }; - return ($truthy($a = ($truthy($b = ($truthy($c = ($truthy($d = self.string == other.string) ? self.regexp.toString() == other.regexp.toString() : $d)) ? self.pre_match == other.pre_match : $c)) ? self.post_match == other.post_match : $b)) ? self.begin == other.begin : $a); - }, $MatchData_$eq_eq$19.$$arity = 1); - Opal.alias(self, "eql?", "=="); - - Opal.def(self, '$begin', $MatchData_begin$20 = function $$begin(n) { - var self = this; - - - if (n !== 0) { - self.$raise($$($nesting, 'ArgumentError'), "MatchData#begin only supports 0th element") - } - return self.begin; - - }, $MatchData_begin$20.$$arity = 1); - - Opal.def(self, '$end', $MatchData_end$21 = function $$end(n) { - var self = this; - - - if (n !== 0) { - self.$raise($$($nesting, 'ArgumentError'), "MatchData#end only supports 0th element") - } - return self.begin + self.matches[n].length; - - }, $MatchData_end$21.$$arity = 1); - - Opal.def(self, '$captures', $MatchData_captures$22 = function $$captures() { - var self = this; - - return self.matches.slice(1) - }, $MatchData_captures$22.$$arity = 0); - - Opal.def(self, '$inspect', $MatchData_inspect$23 = function $$inspect() { - var self = this; - - - var str = "#"; - - }, $MatchData_inspect$23.$$arity = 0); - - Opal.def(self, '$length', $MatchData_length$24 = function $$length() { - var self = this; - - return self.matches.length - }, $MatchData_length$24.$$arity = 0); - Opal.alias(self, "size", "length"); - - Opal.def(self, '$to_a', $MatchData_to_a$25 = function $$to_a() { - var self = this; - - return self.matches - }, $MatchData_to_a$25.$$arity = 0); - - Opal.def(self, '$to_s', $MatchData_to_s$26 = function $$to_s() { - var self = this; - - return self.matches[0] - }, $MatchData_to_s$26.$$arity = 0); - return (Opal.def(self, '$values_at', $MatchData_values_at$27 = function $$values_at($a) { - var $post_args, args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - - var i, a, index, values = []; - - for (i = 0; i < args.length; i++) { - - if (args[i].$$is_range) { - a = (args[i]).$to_a(); - a.unshift(i, 1); - Array.prototype.splice.apply(args, a); - } - - index = $$($nesting, 'Opal')['$coerce_to!'](args[i], $$($nesting, 'Integer'), "to_int"); - - if (index < 0) { - index += self.matches.length; - if (index < 0) { - values.push(nil); - continue; - } - } - - values.push(self.matches[index]); - } - - return values; - ; - }, $MatchData_values_at$27.$$arity = -1), nil) && 'values_at'; - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/string"] = function(Opal) { - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $gvars = Opal.gvars; - - Opal.add_stubs(['$require', '$include', '$coerce_to?', '$coerce_to', '$raise', '$===', '$format', '$to_s', '$respond_to?', '$to_str', '$<=>', '$==', '$=~', '$new', '$force_encoding', '$casecmp', '$empty?', '$ljust', '$ceil', '$/', '$+', '$rjust', '$floor', '$to_a', '$each_char', '$to_proc', '$coerce_to!', '$copy_singleton_methods', '$initialize_clone', '$initialize_dup', '$enum_for', '$size', '$chomp', '$[]', '$to_i', '$each_line', '$encoding', '$class', '$match', '$match?', '$captures', '$proc', '$succ', '$escape']); - - self.$require("corelib/comparable"); - self.$require("corelib/regexp"); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'String'); - - var $nesting = [self].concat($parent_nesting), $String___id__$1, $String_try_convert$2, $String_new$3, $String_initialize$4, $String_$percent$5, $String_$$6, $String_$plus$7, $String_$lt_eq_gt$8, $String_$eq_eq$9, $String_$eq_tilde$10, $String_$$$11, $String_b$12, $String_capitalize$13, $String_casecmp$14, $String_casecmp$ques$15, $String_center$16, $String_chars$17, $String_chomp$18, $String_chop$19, $String_chr$20, $String_clone$21, $String_dup$22, $String_count$23, $String_delete$24, $String_delete_prefix$25, $String_delete_suffix$26, $String_downcase$27, $String_each_char$28, $String_each_line$30, $String_empty$ques$31, $String_end_with$ques$32, $String_gsub$33, $String_hash$34, $String_hex$35, $String_include$ques$36, $String_index$37, $String_inspect$38, $String_intern$39, $String_lines$40, $String_length$41, $String_ljust$42, $String_lstrip$43, $String_ascii_only$ques$44, $String_match$45, $String_match$ques$46, $String_next$47, $String_oct$48, $String_ord$49, $String_partition$50, $String_reverse$51, $String_rindex$52, $String_rjust$53, $String_rpartition$54, $String_rstrip$55, $String_scan$56, $String_split$57, $String_squeeze$58, $String_start_with$ques$59, $String_strip$60, $String_sub$61, $String_sum$62, $String_swapcase$63, $String_to_f$64, $String_to_i$65, $String_to_proc$66, $String_to_s$68, $String_tr$69, $String_tr_s$70, $String_upcase$71, $String_upto$72, $String_instance_variables$73, $String__load$74, $String_unicode_normalize$75, $String_unicode_normalized$ques$76, $String_unpack$77, $String_unpack1$78; - - - self.$include($$($nesting, 'Comparable')); - - Opal.defineProperty(self.$$prototype, '$$is_string', true); - - Opal.defineProperty(self.$$prototype, '$$cast', function(string) { - var klass = this.$$class; - if (klass.$$constructor === String) { - return string; - } else { - return new klass.$$constructor(string); - } - }); - ; - - Opal.def(self, '$__id__', $String___id__$1 = function $$__id__() { - var self = this; - - return self.toString(); - }, $String___id__$1.$$arity = 0); - Opal.alias(self, "object_id", "__id__"); - Opal.defs(self, '$try_convert', $String_try_convert$2 = function $$try_convert(what) { - var self = this; - - return $$($nesting, 'Opal')['$coerce_to?'](what, $$($nesting, 'String'), "to_str") - }, $String_try_convert$2.$$arity = 1); - Opal.defs(self, '$new', $String_new$3 = function(str) { - var self = this; - - - - if (str == null) { - str = ""; - }; - str = $$($nesting, 'Opal').$coerce_to(str, $$($nesting, 'String'), "to_str"); - return new self.$$constructor(str);; - }, $String_new$3.$$arity = -1); - - Opal.def(self, '$initialize', $String_initialize$4 = function $$initialize(str) { - var self = this; - - - ; - - if (str === undefined) { - return self; - } - ; - return self.$raise($$($nesting, 'NotImplementedError'), "Mutable strings are not supported in Opal."); - }, $String_initialize$4.$$arity = -1); - - Opal.def(self, '$%', $String_$percent$5 = function(data) { - var self = this; - - if ($truthy($$($nesting, 'Array')['$==='](data))) { - return $send(self, 'format', [self].concat(Opal.to_a(data))) - } else { - return self.$format(self, data) - } - }, $String_$percent$5.$$arity = 1); - - Opal.def(self, '$*', $String_$$6 = function(count) { - var self = this; - - - count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), "to_int"); - - if (count < 0) { - self.$raise($$($nesting, 'ArgumentError'), "negative argument") - } - - if (count === 0) { - return self.$$cast(''); - } - - var result = '', - string = self.toString(); - - // All credit for the bit-twiddling magic code below goes to Mozilla - // polyfill implementation of String.prototype.repeat() posted here: - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat - - if (string.length * count >= 1 << 28) { - self.$raise($$($nesting, 'RangeError'), "multiply count must not overflow maximum string size") - } - - for (;;) { - if ((count & 1) === 1) { - result += string; - } - count >>>= 1; - if (count === 0) { - break; - } - string += string; - } - - return self.$$cast(result); - - }, $String_$$6.$$arity = 1); - - Opal.def(self, '$+', $String_$plus$7 = function(other) { - var self = this; - - - other = $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'String'), "to_str"); - return self + other.$to_s(); - }, $String_$plus$7.$$arity = 1); - - Opal.def(self, '$<=>', $String_$lt_eq_gt$8 = function(other) { - var self = this; - - if ($truthy(other['$respond_to?']("to_str"))) { - - other = other.$to_str().$to_s(); - return self > other ? 1 : (self < other ? -1 : 0);; - } else { - - var cmp = other['$<=>'](self); - - if (cmp === nil) { - return nil; - } - else { - return cmp > 0 ? -1 : (cmp < 0 ? 1 : 0); - } - - } - }, $String_$lt_eq_gt$8.$$arity = 1); - - Opal.def(self, '$==', $String_$eq_eq$9 = function(other) { - var self = this; - - - if (other.$$is_string) { - return self.toString() === other.toString(); - } - if ($$($nesting, 'Opal')['$respond_to?'](other, "to_str")) { - return other['$=='](self); - } - return false; - - }, $String_$eq_eq$9.$$arity = 1); - Opal.alias(self, "eql?", "=="); - Opal.alias(self, "===", "=="); - - Opal.def(self, '$=~', $String_$eq_tilde$10 = function(other) { - var self = this; - - - if (other.$$is_string) { - self.$raise($$($nesting, 'TypeError'), "type mismatch: String given"); - } - - return other['$=~'](self); - - }, $String_$eq_tilde$10.$$arity = 1); - - Opal.def(self, '$[]', $String_$$$11 = function(index, length) { - var self = this; - - - ; - - var size = self.length, exclude; - - if (index.$$is_range) { - exclude = index.excl; - length = $$($nesting, 'Opal').$coerce_to(index.end, $$($nesting, 'Integer'), "to_int"); - index = $$($nesting, 'Opal').$coerce_to(index.begin, $$($nesting, 'Integer'), "to_int"); - - if (Math.abs(index) > size) { - return nil; - } - - if (index < 0) { - index += size; - } - - if (length < 0) { - length += size; - } - - if (!exclude) { - length += 1; - } - - length = length - index; - - if (length < 0) { - length = 0; - } - - return self.$$cast(self.substr(index, length)); - } - - - if (index.$$is_string) { - if (length != null) { - self.$raise($$($nesting, 'TypeError')) - } - return self.indexOf(index) !== -1 ? self.$$cast(index) : nil; - } - - - if (index.$$is_regexp) { - var match = self.match(index); - - if (match === null) { - ($gvars["~"] = nil) - return nil; - } - - ($gvars["~"] = $$($nesting, 'MatchData').$new(index, match)) - - if (length == null) { - return self.$$cast(match[0]); - } - - length = $$($nesting, 'Opal').$coerce_to(length, $$($nesting, 'Integer'), "to_int"); - - if (length < 0 && -length < match.length) { - return self.$$cast(match[length += match.length]); - } - - if (length >= 0 && length < match.length) { - return self.$$cast(match[length]); - } - - return nil; - } - - - index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); - - if (index < 0) { - index += size; - } - - if (length == null) { - if (index >= size || index < 0) { - return nil; - } - return self.$$cast(self.substr(index, 1)); - } - - length = $$($nesting, 'Opal').$coerce_to(length, $$($nesting, 'Integer'), "to_int"); - - if (length < 0) { - return nil; - } - - if (index > size || index < 0) { - return nil; - } - - return self.$$cast(self.substr(index, length)); - ; - }, $String_$$$11.$$arity = -2); - Opal.alias(self, "byteslice", "[]"); - - Opal.def(self, '$b', $String_b$12 = function $$b() { - var self = this; - - return self.$force_encoding("binary") - }, $String_b$12.$$arity = 0); - - Opal.def(self, '$capitalize', $String_capitalize$13 = function $$capitalize() { - var self = this; - - return self.$$cast(self.charAt(0).toUpperCase() + self.substr(1).toLowerCase()); - }, $String_capitalize$13.$$arity = 0); - - Opal.def(self, '$casecmp', $String_casecmp$14 = function $$casecmp(other) { - var self = this; - - - if ($truthy(other['$respond_to?']("to_str"))) { - } else { - return nil - }; - other = $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'String'), "to_str").$to_s(); - - var ascii_only = /^[\x00-\x7F]*$/; - if (ascii_only.test(self) && ascii_only.test(other)) { - self = self.toLowerCase(); - other = other.toLowerCase(); - } - ; - return self['$<=>'](other); - }, $String_casecmp$14.$$arity = 1); - - Opal.def(self, '$casecmp?', $String_casecmp$ques$15 = function(other) { - var self = this; - - - var cmp = self.$casecmp(other); - if (cmp === nil) { - return nil; - } else { - return cmp === 0; - } - - }, $String_casecmp$ques$15.$$arity = 1); - - Opal.def(self, '$center', $String_center$16 = function $$center(width, padstr) { - var self = this; - - - - if (padstr == null) { - padstr = " "; - }; - width = $$($nesting, 'Opal').$coerce_to(width, $$($nesting, 'Integer'), "to_int"); - padstr = $$($nesting, 'Opal').$coerce_to(padstr, $$($nesting, 'String'), "to_str").$to_s(); - if ($truthy(padstr['$empty?']())) { - self.$raise($$($nesting, 'ArgumentError'), "zero width padding")}; - if ($truthy(width <= self.length)) { - return self}; - - var ljustified = self.$ljust($rb_divide($rb_plus(width, self.length), 2).$ceil(), padstr), - rjustified = self.$rjust($rb_divide($rb_plus(width, self.length), 2).$floor(), padstr); - - return self.$$cast(rjustified + ljustified.slice(self.length)); - ; - }, $String_center$16.$$arity = -2); - - Opal.def(self, '$chars', $String_chars$17 = function $$chars() { - var $iter = $String_chars$17.$$p, block = $iter || nil, self = this; - - if ($iter) $String_chars$17.$$p = null; - - - if ($iter) $String_chars$17.$$p = null;; - if ($truthy(block)) { - } else { - return self.$each_char().$to_a() - }; - return $send(self, 'each_char', [], block.$to_proc()); - }, $String_chars$17.$$arity = 0); - - Opal.def(self, '$chomp', $String_chomp$18 = function $$chomp(separator) { - var self = this; - if ($gvars["/"] == null) $gvars["/"] = nil; - - - - if (separator == null) { - separator = $gvars["/"]; - }; - if ($truthy(separator === nil || self.length === 0)) { - return self}; - separator = $$($nesting, 'Opal')['$coerce_to!'](separator, $$($nesting, 'String'), "to_str").$to_s(); - - var result; - - if (separator === "\n") { - result = self.replace(/\r?\n?$/, ''); - } - else if (separator === "") { - result = self.replace(/(\r?\n)+$/, ''); - } - else if (self.length >= separator.length) { - var tail = self.substr(self.length - separator.length, separator.length); - - if (tail === separator) { - result = self.substr(0, self.length - separator.length); - } - } - - if (result != null) { - return self.$$cast(result); - } - ; - return self; - }, $String_chomp$18.$$arity = -1); - - Opal.def(self, '$chop', $String_chop$19 = function $$chop() { - var self = this; - - - var length = self.length, result; - - if (length <= 1) { - result = ""; - } else if (self.charAt(length - 1) === "\n" && self.charAt(length - 2) === "\r") { - result = self.substr(0, length - 2); - } else { - result = self.substr(0, length - 1); - } - - return self.$$cast(result); - - }, $String_chop$19.$$arity = 0); - - Opal.def(self, '$chr', $String_chr$20 = function $$chr() { - var self = this; - - return self.charAt(0); - }, $String_chr$20.$$arity = 0); - - Opal.def(self, '$clone', $String_clone$21 = function $$clone() { - var self = this, copy = nil; - - - copy = self.slice(); - copy.$copy_singleton_methods(self); - copy.$initialize_clone(self); - return copy; - }, $String_clone$21.$$arity = 0); - - Opal.def(self, '$dup', $String_dup$22 = function $$dup() { - var self = this, copy = nil; - - - copy = self.slice(); - copy.$initialize_dup(self); - return copy; - }, $String_dup$22.$$arity = 0); - - Opal.def(self, '$count', $String_count$23 = function $$count($a) { - var $post_args, sets, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - sets = $post_args;; - - if (sets.length === 0) { - self.$raise($$($nesting, 'ArgumentError'), "ArgumentError: wrong number of arguments (0 for 1+)") - } - var char_class = char_class_from_char_sets(sets); - if (char_class === null) { - return 0; - } - return self.length - self.replace(new RegExp(char_class, 'g'), '').length; - ; - }, $String_count$23.$$arity = -1); - - Opal.def(self, '$delete', $String_delete$24 = function($a) { - var $post_args, sets, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - sets = $post_args;; - - if (sets.length === 0) { - self.$raise($$($nesting, 'ArgumentError'), "ArgumentError: wrong number of arguments (0 for 1+)") - } - var char_class = char_class_from_char_sets(sets); - if (char_class === null) { - return self; - } - return self.$$cast(self.replace(new RegExp(char_class, 'g'), '')); - ; - }, $String_delete$24.$$arity = -1); - - Opal.def(self, '$delete_prefix', $String_delete_prefix$25 = function $$delete_prefix(prefix) { - var self = this; - - - if (!prefix.$$is_string) { - (prefix = $$($nesting, 'Opal').$coerce_to(prefix, $$($nesting, 'String'), "to_str")) - } - - if (self.slice(0, prefix.length) === prefix) { - return self.$$cast(self.slice(prefix.length)); - } else { - return self; - } - - }, $String_delete_prefix$25.$$arity = 1); - - Opal.def(self, '$delete_suffix', $String_delete_suffix$26 = function $$delete_suffix(suffix) { - var self = this; - - - if (!suffix.$$is_string) { - (suffix = $$($nesting, 'Opal').$coerce_to(suffix, $$($nesting, 'String'), "to_str")) - } - - if (self.slice(self.length - suffix.length) === suffix) { - return self.$$cast(self.slice(0, self.length - suffix.length)); - } else { - return self; - } - - }, $String_delete_suffix$26.$$arity = 1); - - Opal.def(self, '$downcase', $String_downcase$27 = function $$downcase() { - var self = this; - - return self.$$cast(self.toLowerCase()); - }, $String_downcase$27.$$arity = 0); - - Opal.def(self, '$each_char', $String_each_char$28 = function $$each_char() { - var $iter = $String_each_char$28.$$p, block = $iter || nil, $$29, self = this; - - if ($iter) $String_each_char$28.$$p = null; - - - if ($iter) $String_each_char$28.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["each_char"], ($$29 = function(){var self = $$29.$$s || this; - - return self.$size()}, $$29.$$s = self, $$29.$$arity = 0, $$29)) - }; - - for (var i = 0, length = self.length; i < length; i++) { - Opal.yield1(block, self.charAt(i)); - } - ; - return self; - }, $String_each_char$28.$$arity = 0); - - Opal.def(self, '$each_line', $String_each_line$30 = function $$each_line(separator) { - var $iter = $String_each_line$30.$$p, block = $iter || nil, self = this; - if ($gvars["/"] == null) $gvars["/"] = nil; - - if ($iter) $String_each_line$30.$$p = null; - - - if ($iter) $String_each_line$30.$$p = null;; - - if (separator == null) { - separator = $gvars["/"]; - }; - if ((block !== nil)) { - } else { - return self.$enum_for("each_line", separator) - }; - - if (separator === nil) { - Opal.yield1(block, self); - - return self; - } - - separator = $$($nesting, 'Opal').$coerce_to(separator, $$($nesting, 'String'), "to_str") - - var a, i, n, length, chomped, trailing, splitted; - - if (separator.length === 0) { - for (a = self.split(/(\n{2,})/), i = 0, n = a.length; i < n; i += 2) { - if (a[i] || a[i + 1]) { - var value = (a[i] || "") + (a[i + 1] || ""); - Opal.yield1(block, self.$$cast(value)); - } - } - - return self; - } - - chomped = self.$chomp(separator); - trailing = self.length != chomped.length; - splitted = chomped.split(separator); - - for (i = 0, length = splitted.length; i < length; i++) { - if (i < length - 1 || trailing) { - Opal.yield1(block, self.$$cast(splitted[i] + separator)); - } - else { - Opal.yield1(block, self.$$cast(splitted[i])); - } - } - ; - return self; - }, $String_each_line$30.$$arity = -1); - - Opal.def(self, '$empty?', $String_empty$ques$31 = function() { - var self = this; - - return self.length === 0; - }, $String_empty$ques$31.$$arity = 0); - - Opal.def(self, '$end_with?', $String_end_with$ques$32 = function($a) { - var $post_args, suffixes, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - suffixes = $post_args;; - - for (var i = 0, length = suffixes.length; i < length; i++) { - var suffix = $$($nesting, 'Opal').$coerce_to(suffixes[i], $$($nesting, 'String'), "to_str").$to_s(); - - if (self.length >= suffix.length && - self.substr(self.length - suffix.length, suffix.length) == suffix) { - return true; - } - } - ; - return false; - }, $String_end_with$ques$32.$$arity = -1); - Opal.alias(self, "equal?", "==="); - - Opal.def(self, '$gsub', $String_gsub$33 = function $$gsub(pattern, replacement) { - var $iter = $String_gsub$33.$$p, block = $iter || nil, self = this; - - if ($iter) $String_gsub$33.$$p = null; - - - if ($iter) $String_gsub$33.$$p = null;; - ; - - if (replacement === undefined && block === nil) { - return self.$enum_for("gsub", pattern); - } - - var result = '', match_data = nil, index = 0, match, _replacement; - - if (pattern.$$is_regexp) { - pattern = Opal.global_multiline_regexp(pattern); - } else { - pattern = $$($nesting, 'Opal').$coerce_to(pattern, $$($nesting, 'String'), "to_str"); - pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gm'); - } - - var lastIndex; - while (true) { - match = pattern.exec(self); - - if (match === null) { - ($gvars["~"] = nil) - result += self.slice(index); - break; - } - - match_data = $$($nesting, 'MatchData').$new(pattern, match); - - if (replacement === undefined) { - lastIndex = pattern.lastIndex; - _replacement = block(match[0]); - pattern.lastIndex = lastIndex; // save and restore lastIndex - } - else if (replacement.$$is_hash) { - _replacement = (replacement)['$[]'](match[0]).$to_s(); - } - else { - if (!replacement.$$is_string) { - replacement = $$($nesting, 'Opal').$coerce_to(replacement, $$($nesting, 'String'), "to_str"); - } - _replacement = replacement.replace(/([\\]+)([0-9+&`'])/g, function (original, slashes, command) { - if (slashes.length % 2 === 0) { - return original; - } - switch (command) { - case "+": - for (var i = match.length - 1; i > 0; i--) { - if (match[i] !== undefined) { - return slashes.slice(1) + match[i]; - } - } - return ''; - case "&": return slashes.slice(1) + match[0]; - case "`": return slashes.slice(1) + self.slice(0, match.index); - case "'": return slashes.slice(1) + self.slice(match.index + match[0].length); - default: return slashes.slice(1) + (match[command] || ''); - } - }).replace(/\\\\/g, '\\'); - } - - if (pattern.lastIndex === match.index) { - result += (_replacement + self.slice(index, match.index + 1)) - pattern.lastIndex += 1; - } - else { - result += (self.slice(index, match.index) + _replacement) - } - index = pattern.lastIndex; - } - - ($gvars["~"] = match_data) - return self.$$cast(result); - ; - }, $String_gsub$33.$$arity = -2); - - Opal.def(self, '$hash', $String_hash$34 = function $$hash() { - var self = this; - - return self.toString(); - }, $String_hash$34.$$arity = 0); - - Opal.def(self, '$hex', $String_hex$35 = function $$hex() { - var self = this; - - return self.$to_i(16) - }, $String_hex$35.$$arity = 0); - - Opal.def(self, '$include?', $String_include$ques$36 = function(other) { - var self = this; - - - if (!other.$$is_string) { - (other = $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'String'), "to_str")) - } - return self.indexOf(other) !== -1; - - }, $String_include$ques$36.$$arity = 1); - - Opal.def(self, '$index', $String_index$37 = function $$index(search, offset) { - var self = this; - - - ; - - var index, - match, - regex; - - if (offset === undefined) { - offset = 0; - } else { - offset = $$($nesting, 'Opal').$coerce_to(offset, $$($nesting, 'Integer'), "to_int"); - if (offset < 0) { - offset += self.length; - if (offset < 0) { - return nil; - } - } - } - - if (search.$$is_regexp) { - regex = Opal.global_multiline_regexp(search); - while (true) { - match = regex.exec(self); - if (match === null) { - ($gvars["~"] = nil); - index = -1; - break; - } - if (match.index >= offset) { - ($gvars["~"] = $$($nesting, 'MatchData').$new(regex, match)) - index = match.index; - break; - } - regex.lastIndex = match.index + 1; - } - } else { - search = $$($nesting, 'Opal').$coerce_to(search, $$($nesting, 'String'), "to_str"); - if (search.length === 0 && offset > self.length) { - index = -1; - } else { - index = self.indexOf(search, offset); - } - } - - return index === -1 ? nil : index; - ; - }, $String_index$37.$$arity = -2); - - Opal.def(self, '$inspect', $String_inspect$38 = function $$inspect() { - var self = this; - - - var escapable = /[\\\"\x00-\x1f\u007F-\u009F\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - meta = { - '\u0007': '\\a', - '\u001b': '\\e', - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '\v': '\\v', - '"' : '\\"', - '\\': '\\\\' - }, - escaped = self.replace(escapable, function (chr) { - return meta[chr] || '\\u' + ('0000' + chr.charCodeAt(0).toString(16).toUpperCase()).slice(-4); - }); - return '"' + escaped.replace(/\#[\$\@\{]/g, '\\$&') + '"'; - - }, $String_inspect$38.$$arity = 0); - - Opal.def(self, '$intern', $String_intern$39 = function $$intern() { - var self = this; - - return self.toString(); - }, $String_intern$39.$$arity = 0); - - Opal.def(self, '$lines', $String_lines$40 = function $$lines(separator) { - var $iter = $String_lines$40.$$p, block = $iter || nil, self = this, e = nil; - if ($gvars["/"] == null) $gvars["/"] = nil; - - if ($iter) $String_lines$40.$$p = null; - - - if ($iter) $String_lines$40.$$p = null;; - - if (separator == null) { - separator = $gvars["/"]; - }; - e = $send(self, 'each_line', [separator], block.$to_proc()); - if ($truthy(block)) { - return self - } else { - return e.$to_a() - }; - }, $String_lines$40.$$arity = -1); - - Opal.def(self, '$length', $String_length$41 = function $$length() { - var self = this; - - return self.length; - }, $String_length$41.$$arity = 0); - - Opal.def(self, '$ljust', $String_ljust$42 = function $$ljust(width, padstr) { - var self = this; - - - - if (padstr == null) { - padstr = " "; - }; - width = $$($nesting, 'Opal').$coerce_to(width, $$($nesting, 'Integer'), "to_int"); - padstr = $$($nesting, 'Opal').$coerce_to(padstr, $$($nesting, 'String'), "to_str").$to_s(); - if ($truthy(padstr['$empty?']())) { - self.$raise($$($nesting, 'ArgumentError'), "zero width padding")}; - if ($truthy(width <= self.length)) { - return self}; - - var index = -1, - result = ""; - - width -= self.length; - - while (++index < width) { - result += padstr; - } - - return self.$$cast(self + result.slice(0, width)); - ; - }, $String_ljust$42.$$arity = -2); - - Opal.def(self, '$lstrip', $String_lstrip$43 = function $$lstrip() { - var self = this; - - return self.replace(/^\s*/, ''); - }, $String_lstrip$43.$$arity = 0); - - Opal.def(self, '$ascii_only?', $String_ascii_only$ques$44 = function() { - var self = this; - - - if (self.$encoding()['$==']($$$($$($nesting, 'Encoding'), 'UTF_16BE'))) { - return false}; - return /^[\x00-\x7F]*$/.test(self);; - }, $String_ascii_only$ques$44.$$arity = 0); - - Opal.def(self, '$match', $String_match$45 = function $$match(pattern, pos) { - var $iter = $String_match$45.$$p, block = $iter || nil, $a, self = this; - - if ($iter) $String_match$45.$$p = null; - - - if ($iter) $String_match$45.$$p = null;; - ; - if ($truthy(($truthy($a = $$($nesting, 'String')['$==='](pattern)) ? $a : pattern['$respond_to?']("to_str")))) { - pattern = $$($nesting, 'Regexp').$new(pattern.$to_str())}; - if ($truthy($$($nesting, 'Regexp')['$==='](pattern))) { - } else { - self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + (pattern.$class()) + " (expected Regexp)") - }; - return $send(pattern, 'match', [self, pos], block.$to_proc()); - }, $String_match$45.$$arity = -2); - - Opal.def(self, '$match?', $String_match$ques$46 = function(pattern, pos) { - var $a, self = this; - - - ; - if ($truthy(($truthy($a = $$($nesting, 'String')['$==='](pattern)) ? $a : pattern['$respond_to?']("to_str")))) { - pattern = $$($nesting, 'Regexp').$new(pattern.$to_str())}; - if ($truthy($$($nesting, 'Regexp')['$==='](pattern))) { - } else { - self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + (pattern.$class()) + " (expected Regexp)") - }; - return pattern['$match?'](self, pos); - }, $String_match$ques$46.$$arity = -2); - - Opal.def(self, '$next', $String_next$47 = function $$next() { - var self = this; - - - var i = self.length; - if (i === 0) { - return self.$$cast(''); - } - var result = self; - var first_alphanum_char_index = self.search(/[a-zA-Z0-9]/); - var carry = false; - var code; - while (i--) { - code = self.charCodeAt(i); - if ((code >= 48 && code <= 57) || - (code >= 65 && code <= 90) || - (code >= 97 && code <= 122)) { - switch (code) { - case 57: - carry = true; - code = 48; - break; - case 90: - carry = true; - code = 65; - break; - case 122: - carry = true; - code = 97; - break; - default: - carry = false; - code += 1; - } - } else { - if (first_alphanum_char_index === -1) { - if (code === 255) { - carry = true; - code = 0; - } else { - carry = false; - code += 1; - } - } else { - carry = true; - } - } - result = result.slice(0, i) + String.fromCharCode(code) + result.slice(i + 1); - if (carry && (i === 0 || i === first_alphanum_char_index)) { - switch (code) { - case 65: - break; - case 97: - break; - default: - code += 1; - } - if (i === 0) { - result = String.fromCharCode(code) + result; - } else { - result = result.slice(0, i) + String.fromCharCode(code) + result.slice(i); - } - carry = false; - } - if (!carry) { - break; - } - } - return self.$$cast(result); - - }, $String_next$47.$$arity = 0); - - Opal.def(self, '$oct', $String_oct$48 = function $$oct() { - var self = this; - - - var result, - string = self, - radix = 8; - - if (/^\s*_/.test(string)) { - return 0; - } - - string = string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/i, function (original, head, flag, tail) { - switch (tail.charAt(0)) { - case '+': - case '-': - return original; - case '0': - if (tail.charAt(1) === 'x' && flag === '0x') { - return original; - } - } - switch (flag) { - case '0b': - radix = 2; - break; - case '0': - case '0o': - radix = 8; - break; - case '0d': - radix = 10; - break; - case '0x': - radix = 16; - break; - } - return head + tail; - }); - - result = parseInt(string.replace(/_(?!_)/g, ''), radix); - return isNaN(result) ? 0 : result; - - }, $String_oct$48.$$arity = 0); - - Opal.def(self, '$ord', $String_ord$49 = function $$ord() { - var self = this; - - return self.charCodeAt(0); - }, $String_ord$49.$$arity = 0); - - Opal.def(self, '$partition', $String_partition$50 = function $$partition(sep) { - var self = this; - - - var i, m; - - if (sep.$$is_regexp) { - m = sep.exec(self); - if (m === null) { - i = -1; - } else { - $$($nesting, 'MatchData').$new(sep, m); - sep = m[0]; - i = m.index; - } - } else { - sep = $$($nesting, 'Opal').$coerce_to(sep, $$($nesting, 'String'), "to_str"); - i = self.indexOf(sep); - } - - if (i === -1) { - return [self, '', '']; - } - - return [ - self.slice(0, i), - self.slice(i, i + sep.length), - self.slice(i + sep.length) - ]; - - }, $String_partition$50.$$arity = 1); - - Opal.def(self, '$reverse', $String_reverse$51 = function $$reverse() { - var self = this; - - return self.split('').reverse().join(''); - }, $String_reverse$51.$$arity = 0); - - Opal.def(self, '$rindex', $String_rindex$52 = function $$rindex(search, offset) { - var self = this; - - - ; - - var i, m, r, _m; - - if (offset === undefined) { - offset = self.length; - } else { - offset = $$($nesting, 'Opal').$coerce_to(offset, $$($nesting, 'Integer'), "to_int"); - if (offset < 0) { - offset += self.length; - if (offset < 0) { - return nil; - } - } - } - - if (search.$$is_regexp) { - m = null; - r = Opal.global_multiline_regexp(search); - while (true) { - _m = r.exec(self); - if (_m === null || _m.index > offset) { - break; - } - m = _m; - r.lastIndex = m.index + 1; - } - if (m === null) { - ($gvars["~"] = nil) - i = -1; - } else { - $$($nesting, 'MatchData').$new(r, m); - i = m.index; - } - } else { - search = $$($nesting, 'Opal').$coerce_to(search, $$($nesting, 'String'), "to_str"); - i = self.lastIndexOf(search, offset); - } - - return i === -1 ? nil : i; - ; - }, $String_rindex$52.$$arity = -2); - - Opal.def(self, '$rjust', $String_rjust$53 = function $$rjust(width, padstr) { - var self = this; - - - - if (padstr == null) { - padstr = " "; - }; - width = $$($nesting, 'Opal').$coerce_to(width, $$($nesting, 'Integer'), "to_int"); - padstr = $$($nesting, 'Opal').$coerce_to(padstr, $$($nesting, 'String'), "to_str").$to_s(); - if ($truthy(padstr['$empty?']())) { - self.$raise($$($nesting, 'ArgumentError'), "zero width padding")}; - if ($truthy(width <= self.length)) { - return self}; - - var chars = Math.floor(width - self.length), - patterns = Math.floor(chars / padstr.length), - result = Array(patterns + 1).join(padstr), - remaining = chars - result.length; - - return self.$$cast(result + padstr.slice(0, remaining) + self); - ; - }, $String_rjust$53.$$arity = -2); - - Opal.def(self, '$rpartition', $String_rpartition$54 = function $$rpartition(sep) { - var self = this; - - - var i, m, r, _m; - - if (sep.$$is_regexp) { - m = null; - r = Opal.global_multiline_regexp(sep); - - while (true) { - _m = r.exec(self); - if (_m === null) { - break; - } - m = _m; - r.lastIndex = m.index + 1; - } - - if (m === null) { - i = -1; - } else { - $$($nesting, 'MatchData').$new(r, m); - sep = m[0]; - i = m.index; - } - - } else { - sep = $$($nesting, 'Opal').$coerce_to(sep, $$($nesting, 'String'), "to_str"); - i = self.lastIndexOf(sep); - } - - if (i === -1) { - return ['', '', self]; - } - - return [ - self.slice(0, i), - self.slice(i, i + sep.length), - self.slice(i + sep.length) - ]; - - }, $String_rpartition$54.$$arity = 1); - - Opal.def(self, '$rstrip', $String_rstrip$55 = function $$rstrip() { - var self = this; - - return self.replace(/[\s\u0000]*$/, ''); - }, $String_rstrip$55.$$arity = 0); - - Opal.def(self, '$scan', $String_scan$56 = function $$scan(pattern) { - var $iter = $String_scan$56.$$p, block = $iter || nil, self = this; - - if ($iter) $String_scan$56.$$p = null; - - - if ($iter) $String_scan$56.$$p = null;; - - var result = [], - match_data = nil, - match; - - if (pattern.$$is_regexp) { - pattern = Opal.global_multiline_regexp(pattern); - } else { - pattern = $$($nesting, 'Opal').$coerce_to(pattern, $$($nesting, 'String'), "to_str"); - pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gm'); - } - - while ((match = pattern.exec(self)) != null) { - match_data = $$($nesting, 'MatchData').$new(pattern, match); - if (block === nil) { - match.length == 1 ? result.push(match[0]) : result.push((match_data).$captures()); - } else { - match.length == 1 ? block(match[0]) : block.call(self, (match_data).$captures()); - } - if (pattern.lastIndex === match.index) { - pattern.lastIndex += 1; - } - } - - ($gvars["~"] = match_data) - - return (block !== nil ? self : result); - ; - }, $String_scan$56.$$arity = 1); - Opal.alias(self, "size", "length"); - Opal.alias(self, "slice", "[]"); - - Opal.def(self, '$split', $String_split$57 = function $$split(pattern, limit) { - var $a, self = this; - if ($gvars[";"] == null) $gvars[";"] = nil; - - - ; - ; - - if (self.length === 0) { - return []; - } - - if (limit === undefined) { - limit = 0; - } else { - limit = $$($nesting, 'Opal')['$coerce_to!'](limit, $$($nesting, 'Integer'), "to_int"); - if (limit === 1) { - return [self]; - } - } - - if (pattern === undefined || pattern === nil) { - pattern = ($truthy($a = $gvars[";"]) ? $a : " "); - } - - var result = [], - string = self.toString(), - index = 0, - match, - i, ii; - - if (pattern.$$is_regexp) { - pattern = Opal.global_multiline_regexp(pattern); - } else { - pattern = $$($nesting, 'Opal').$coerce_to(pattern, $$($nesting, 'String'), "to_str").$to_s(); - if (pattern === ' ') { - pattern = /\s+/gm; - string = string.replace(/^\s+/, ''); - } else { - pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gm'); - } - } - - result = string.split(pattern); - - if (result.length === 1 && result[0] === string) { - return [self.$$cast(result[0])]; - } - - while ((i = result.indexOf(undefined)) !== -1) { - result.splice(i, 1); - } - - function castResult() { - for (i = 0; i < result.length; i++) { - result[i] = self.$$cast(result[i]); - } - } - - if (limit === 0) { - while (result[result.length - 1] === '') { - result.length -= 1; - } - castResult(); - return result; - } - - match = pattern.exec(string); - - if (limit < 0) { - if (match !== null && match[0] === '' && pattern.source.indexOf('(?=') === -1) { - for (i = 0, ii = match.length; i < ii; i++) { - result.push(''); - } - } - castResult(); - return result; - } - - if (match !== null && match[0] === '') { - result.splice(limit - 1, result.length - 1, result.slice(limit - 1).join('')); - castResult(); - return result; - } - - if (limit >= result.length) { - castResult(); - return result; - } - - i = 0; - while (match !== null) { - i++; - index = pattern.lastIndex; - if (i + 1 === limit) { - break; - } - match = pattern.exec(string); - } - result.splice(limit - 1, result.length - 1, string.slice(index)); - castResult(); - return result; - ; - }, $String_split$57.$$arity = -1); - - Opal.def(self, '$squeeze', $String_squeeze$58 = function $$squeeze($a) { - var $post_args, sets, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - sets = $post_args;; - - if (sets.length === 0) { - return self.$$cast(self.replace(/(.)\1+/g, '$1')); - } - var char_class = char_class_from_char_sets(sets); - if (char_class === null) { - return self; - } - return self.$$cast(self.replace(new RegExp('(' + char_class + ')\\1+', 'g'), '$1')); - ; - }, $String_squeeze$58.$$arity = -1); - - Opal.def(self, '$start_with?', $String_start_with$ques$59 = function($a) { - var $post_args, prefixes, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - prefixes = $post_args;; - - for (var i = 0, length = prefixes.length; i < length; i++) { - var prefix = $$($nesting, 'Opal').$coerce_to(prefixes[i], $$($nesting, 'String'), "to_str").$to_s(); - - if (self.indexOf(prefix) === 0) { - return true; - } - } - - return false; - ; - }, $String_start_with$ques$59.$$arity = -1); - - Opal.def(self, '$strip', $String_strip$60 = function $$strip() { - var self = this; - - return self.replace(/^\s*/, '').replace(/[\s\u0000]*$/, ''); - }, $String_strip$60.$$arity = 0); - - Opal.def(self, '$sub', $String_sub$61 = function $$sub(pattern, replacement) { - var $iter = $String_sub$61.$$p, block = $iter || nil, self = this; - - if ($iter) $String_sub$61.$$p = null; - - - if ($iter) $String_sub$61.$$p = null;; - ; - - if (!pattern.$$is_regexp) { - pattern = $$($nesting, 'Opal').$coerce_to(pattern, $$($nesting, 'String'), "to_str"); - pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')); - } - - var result, match = pattern.exec(self); - - if (match === null) { - ($gvars["~"] = nil) - result = self.toString(); - } else { - $$($nesting, 'MatchData').$new(pattern, match) - - if (replacement === undefined) { - - if (block === nil) { - self.$raise($$($nesting, 'ArgumentError'), "wrong number of arguments (1 for 2)") - } - result = self.slice(0, match.index) + block(match[0]) + self.slice(match.index + match[0].length); - - } else if (replacement.$$is_hash) { - - result = self.slice(0, match.index) + (replacement)['$[]'](match[0]).$to_s() + self.slice(match.index + match[0].length); - - } else { - - replacement = $$($nesting, 'Opal').$coerce_to(replacement, $$($nesting, 'String'), "to_str"); - - replacement = replacement.replace(/([\\]+)([0-9+&`'])/g, function (original, slashes, command) { - if (slashes.length % 2 === 0) { - return original; - } - switch (command) { - case "+": - for (var i = match.length - 1; i > 0; i--) { - if (match[i] !== undefined) { - return slashes.slice(1) + match[i]; - } - } - return ''; - case "&": return slashes.slice(1) + match[0]; - case "`": return slashes.slice(1) + self.slice(0, match.index); - case "'": return slashes.slice(1) + self.slice(match.index + match[0].length); - default: return slashes.slice(1) + (match[command] || ''); - } - }).replace(/\\\\/g, '\\'); - - result = self.slice(0, match.index) + replacement + self.slice(match.index + match[0].length); - } - } - - return self.$$cast(result); - ; - }, $String_sub$61.$$arity = -2); - Opal.alias(self, "succ", "next"); - - Opal.def(self, '$sum', $String_sum$62 = function $$sum(n) { - var self = this; - - - - if (n == null) { - n = 16; - }; - - n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), "to_int"); - - var result = 0, - length = self.length, - i = 0; - - for (; i < length; i++) { - result += self.charCodeAt(i); - } - - if (n <= 0) { - return result; - } - - return result & (Math.pow(2, n) - 1); - ; - }, $String_sum$62.$$arity = -1); - - Opal.def(self, '$swapcase', $String_swapcase$63 = function $$swapcase() { - var self = this; - - - var str = self.replace(/([a-z]+)|([A-Z]+)/g, function($0,$1,$2) { - return $1 ? $0.toUpperCase() : $0.toLowerCase(); - }); - - if (self.constructor === String) { - return str; - } - - return self.$class().$new(str); - - }, $String_swapcase$63.$$arity = 0); - - Opal.def(self, '$to_f', $String_to_f$64 = function $$to_f() { - var self = this; - - - if (self.charAt(0) === '_') { - return 0; - } - - var result = parseFloat(self.replace(/_/g, '')); - - if (isNaN(result) || result == Infinity || result == -Infinity) { - return 0; - } - else { - return result; - } - - }, $String_to_f$64.$$arity = 0); - - Opal.def(self, '$to_i', $String_to_i$65 = function $$to_i(base) { - var self = this; - - - - if (base == null) { - base = 10; - }; - - var result, - string = self.toLowerCase(), - radix = $$($nesting, 'Opal').$coerce_to(base, $$($nesting, 'Integer'), "to_int"); - - if (radix === 1 || radix < 0 || radix > 36) { - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid radix " + (radix)) - } - - if (/^\s*_/.test(string)) { - return 0; - } - - string = string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/, function (original, head, flag, tail) { - switch (tail.charAt(0)) { - case '+': - case '-': - return original; - case '0': - if (tail.charAt(1) === 'x' && flag === '0x' && (radix === 0 || radix === 16)) { - return original; - } - } - switch (flag) { - case '0b': - if (radix === 0 || radix === 2) { - radix = 2; - return head + tail; - } - break; - case '0': - case '0o': - if (radix === 0 || radix === 8) { - radix = 8; - return head + tail; - } - break; - case '0d': - if (radix === 0 || radix === 10) { - radix = 10; - return head + tail; - } - break; - case '0x': - if (radix === 0 || radix === 16) { - radix = 16; - return head + tail; - } - break; - } - return original - }); - - result = parseInt(string.replace(/_(?!_)/g, ''), radix); - return isNaN(result) ? 0 : result; - ; - }, $String_to_i$65.$$arity = -1); - - Opal.def(self, '$to_proc', $String_to_proc$66 = function $$to_proc() { - var $$67, $iter = $String_to_proc$66.$$p, $yield = $iter || nil, self = this, method_name = nil; - - if ($iter) $String_to_proc$66.$$p = null; - - method_name = $rb_plus("$", self.valueOf()); - return $send(self, 'proc', [], ($$67 = function($a){var self = $$67.$$s || this, $iter = $$67.$$p, block = $iter || nil, $post_args, args; - - - - if ($iter) $$67.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - - if (args.length === 0) { - self.$raise($$($nesting, 'ArgumentError'), "no receiver given") - } - - var recv = args[0]; - - if (recv == null) recv = nil; - - var body = recv[method_name]; - - if (!body) { - return recv.$method_missing.apply(recv, args); - } - - if (typeof block === 'function') { - body.$$p = block; - } - - if (args.length === 1) { - return body.call(recv); - } else { - return body.apply(recv, args.slice(1)); - } - ;}, $$67.$$s = self, $$67.$$arity = -1, $$67)); - }, $String_to_proc$66.$$arity = 0); - - Opal.def(self, '$to_s', $String_to_s$68 = function $$to_s() { - var self = this; - - return self.toString(); - }, $String_to_s$68.$$arity = 0); - Opal.alias(self, "to_str", "to_s"); - Opal.alias(self, "to_sym", "intern"); - - Opal.def(self, '$tr', $String_tr$69 = function $$tr(from, to) { - var self = this; - - - from = $$($nesting, 'Opal').$coerce_to(from, $$($nesting, 'String'), "to_str").$to_s(); - to = $$($nesting, 'Opal').$coerce_to(to, $$($nesting, 'String'), "to_str").$to_s(); - - if (from.length == 0 || from === to) { - return self; - } - - var i, in_range, c, ch, start, end, length; - var subs = {}; - var from_chars = from.split(''); - var from_length = from_chars.length; - var to_chars = to.split(''); - var to_length = to_chars.length; - - var inverse = false; - var global_sub = null; - if (from_chars[0] === '^' && from_chars.length > 1) { - inverse = true; - from_chars.shift(); - global_sub = to_chars[to_length - 1] - from_length -= 1; - } - - var from_chars_expanded = []; - var last_from = null; - in_range = false; - for (i = 0; i < from_length; i++) { - ch = from_chars[i]; - if (last_from == null) { - last_from = ch; - from_chars_expanded.push(ch); - } - else if (ch === '-') { - if (last_from === '-') { - from_chars_expanded.push('-'); - from_chars_expanded.push('-'); - } - else if (i == from_length - 1) { - from_chars_expanded.push('-'); - } - else { - in_range = true; - } - } - else if (in_range) { - start = last_from.charCodeAt(0); - end = ch.charCodeAt(0); - if (start > end) { - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") - } - for (c = start + 1; c < end; c++) { - from_chars_expanded.push(String.fromCharCode(c)); - } - from_chars_expanded.push(ch); - in_range = null; - last_from = null; - } - else { - from_chars_expanded.push(ch); - } - } - - from_chars = from_chars_expanded; - from_length = from_chars.length; - - if (inverse) { - for (i = 0; i < from_length; i++) { - subs[from_chars[i]] = true; - } - } - else { - if (to_length > 0) { - var to_chars_expanded = []; - var last_to = null; - in_range = false; - for (i = 0; i < to_length; i++) { - ch = to_chars[i]; - if (last_to == null) { - last_to = ch; - to_chars_expanded.push(ch); - } - else if (ch === '-') { - if (last_to === '-') { - to_chars_expanded.push('-'); - to_chars_expanded.push('-'); - } - else if (i == to_length - 1) { - to_chars_expanded.push('-'); - } - else { - in_range = true; - } - } - else if (in_range) { - start = last_to.charCodeAt(0); - end = ch.charCodeAt(0); - if (start > end) { - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") - } - for (c = start + 1; c < end; c++) { - to_chars_expanded.push(String.fromCharCode(c)); - } - to_chars_expanded.push(ch); - in_range = null; - last_to = null; - } - else { - to_chars_expanded.push(ch); - } - } - - to_chars = to_chars_expanded; - to_length = to_chars.length; - } - - var length_diff = from_length - to_length; - if (length_diff > 0) { - var pad_char = (to_length > 0 ? to_chars[to_length - 1] : ''); - for (i = 0; i < length_diff; i++) { - to_chars.push(pad_char); - } - } - - for (i = 0; i < from_length; i++) { - subs[from_chars[i]] = to_chars[i]; - } - } - - var new_str = '' - for (i = 0, length = self.length; i < length; i++) { - ch = self.charAt(i); - var sub = subs[ch]; - if (inverse) { - new_str += (sub == null ? global_sub : ch); - } - else { - new_str += (sub != null ? sub : ch); - } - } - return self.$$cast(new_str); - ; - }, $String_tr$69.$$arity = 2); - - Opal.def(self, '$tr_s', $String_tr_s$70 = function $$tr_s(from, to) { - var self = this; - - - from = $$($nesting, 'Opal').$coerce_to(from, $$($nesting, 'String'), "to_str").$to_s(); - to = $$($nesting, 'Opal').$coerce_to(to, $$($nesting, 'String'), "to_str").$to_s(); - - if (from.length == 0) { - return self; - } - - var i, in_range, c, ch, start, end, length; - var subs = {}; - var from_chars = from.split(''); - var from_length = from_chars.length; - var to_chars = to.split(''); - var to_length = to_chars.length; - - var inverse = false; - var global_sub = null; - if (from_chars[0] === '^' && from_chars.length > 1) { - inverse = true; - from_chars.shift(); - global_sub = to_chars[to_length - 1] - from_length -= 1; - } - - var from_chars_expanded = []; - var last_from = null; - in_range = false; - for (i = 0; i < from_length; i++) { - ch = from_chars[i]; - if (last_from == null) { - last_from = ch; - from_chars_expanded.push(ch); - } - else if (ch === '-') { - if (last_from === '-') { - from_chars_expanded.push('-'); - from_chars_expanded.push('-'); - } - else if (i == from_length - 1) { - from_chars_expanded.push('-'); - } - else { - in_range = true; - } - } - else if (in_range) { - start = last_from.charCodeAt(0); - end = ch.charCodeAt(0); - if (start > end) { - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") - } - for (c = start + 1; c < end; c++) { - from_chars_expanded.push(String.fromCharCode(c)); - } - from_chars_expanded.push(ch); - in_range = null; - last_from = null; - } - else { - from_chars_expanded.push(ch); - } - } - - from_chars = from_chars_expanded; - from_length = from_chars.length; - - if (inverse) { - for (i = 0; i < from_length; i++) { - subs[from_chars[i]] = true; - } - } - else { - if (to_length > 0) { - var to_chars_expanded = []; - var last_to = null; - in_range = false; - for (i = 0; i < to_length; i++) { - ch = to_chars[i]; - if (last_from == null) { - last_from = ch; - to_chars_expanded.push(ch); - } - else if (ch === '-') { - if (last_to === '-') { - to_chars_expanded.push('-'); - to_chars_expanded.push('-'); - } - else if (i == to_length - 1) { - to_chars_expanded.push('-'); - } - else { - in_range = true; - } - } - else if (in_range) { - start = last_from.charCodeAt(0); - end = ch.charCodeAt(0); - if (start > end) { - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") - } - for (c = start + 1; c < end; c++) { - to_chars_expanded.push(String.fromCharCode(c)); - } - to_chars_expanded.push(ch); - in_range = null; - last_from = null; - } - else { - to_chars_expanded.push(ch); - } - } - - to_chars = to_chars_expanded; - to_length = to_chars.length; - } - - var length_diff = from_length - to_length; - if (length_diff > 0) { - var pad_char = (to_length > 0 ? to_chars[to_length - 1] : ''); - for (i = 0; i < length_diff; i++) { - to_chars.push(pad_char); - } - } - - for (i = 0; i < from_length; i++) { - subs[from_chars[i]] = to_chars[i]; - } - } - var new_str = '' - var last_substitute = null - for (i = 0, length = self.length; i < length; i++) { - ch = self.charAt(i); - var sub = subs[ch] - if (inverse) { - if (sub == null) { - if (last_substitute == null) { - new_str += global_sub; - last_substitute = true; - } - } - else { - new_str += ch; - last_substitute = null; - } - } - else { - if (sub != null) { - if (last_substitute == null || last_substitute !== sub) { - new_str += sub; - last_substitute = sub; - } - } - else { - new_str += ch; - last_substitute = null; - } - } - } - return self.$$cast(new_str); - ; - }, $String_tr_s$70.$$arity = 2); - - Opal.def(self, '$upcase', $String_upcase$71 = function $$upcase() { - var self = this; - - return self.$$cast(self.toUpperCase()); - }, $String_upcase$71.$$arity = 0); - - Opal.def(self, '$upto', $String_upto$72 = function $$upto(stop, excl) { - var $iter = $String_upto$72.$$p, block = $iter || nil, self = this; - - if ($iter) $String_upto$72.$$p = null; - - - if ($iter) $String_upto$72.$$p = null;; - - if (excl == null) { - excl = false; - }; - if ((block !== nil)) { - } else { - return self.$enum_for("upto", stop, excl) - }; - stop = $$($nesting, 'Opal').$coerce_to(stop, $$($nesting, 'String'), "to_str"); - - var a, b, s = self.toString(); - - if (s.length === 1 && stop.length === 1) { - - a = s.charCodeAt(0); - b = stop.charCodeAt(0); - - while (a <= b) { - if (excl && a === b) { - break; - } - - block(String.fromCharCode(a)); - - a += 1; - } - - } else if (parseInt(s, 10).toString() === s && parseInt(stop, 10).toString() === stop) { - - a = parseInt(s, 10); - b = parseInt(stop, 10); - - while (a <= b) { - if (excl && a === b) { - break; - } - - block(a.toString()); - - a += 1; - } - - } else { - - while (s.length <= stop.length && s <= stop) { - if (excl && s === stop) { - break; - } - - block(s); - - s = (s).$succ(); - } - - } - return self; - ; - }, $String_upto$72.$$arity = -2); - - function char_class_from_char_sets(sets) { - function explode_sequences_in_character_set(set) { - var result = '', - i, len = set.length, - curr_char, - skip_next_dash, - char_code_from, - char_code_upto, - char_code; - for (i = 0; i < len; i++) { - curr_char = set.charAt(i); - if (curr_char === '-' && i > 0 && i < (len - 1) && !skip_next_dash) { - char_code_from = set.charCodeAt(i - 1); - char_code_upto = set.charCodeAt(i + 1); - if (char_code_from > char_code_upto) { - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid range \"" + (char_code_from) + "-" + (char_code_upto) + "\" in string transliteration") - } - for (char_code = char_code_from + 1; char_code < char_code_upto + 1; char_code++) { - result += String.fromCharCode(char_code); - } - skip_next_dash = true; - i++; - } else { - skip_next_dash = (curr_char === '\\'); - result += curr_char; - } - } - return result; - } - - function intersection(setA, setB) { - if (setA.length === 0) { - return setB; - } - var result = '', - i, len = setA.length, - chr; - for (i = 0; i < len; i++) { - chr = setA.charAt(i); - if (setB.indexOf(chr) !== -1) { - result += chr; - } - } - return result; - } - - var i, len, set, neg, chr, tmp, - pos_intersection = '', - neg_intersection = ''; - - for (i = 0, len = sets.length; i < len; i++) { - set = $$($nesting, 'Opal').$coerce_to(sets[i], $$($nesting, 'String'), "to_str"); - neg = (set.charAt(0) === '^' && set.length > 1); - set = explode_sequences_in_character_set(neg ? set.slice(1) : set); - if (neg) { - neg_intersection = intersection(neg_intersection, set); - } else { - pos_intersection = intersection(pos_intersection, set); - } - } - - if (pos_intersection.length > 0 && neg_intersection.length > 0) { - tmp = ''; - for (i = 0, len = pos_intersection.length; i < len; i++) { - chr = pos_intersection.charAt(i); - if (neg_intersection.indexOf(chr) === -1) { - tmp += chr; - } - } - pos_intersection = tmp; - neg_intersection = ''; - } - - if (pos_intersection.length > 0) { - return '[' + $$($nesting, 'Regexp').$escape(pos_intersection) + ']'; - } - - if (neg_intersection.length > 0) { - return '[^' + $$($nesting, 'Regexp').$escape(neg_intersection) + ']'; - } - - return null; - } - ; - - Opal.def(self, '$instance_variables', $String_instance_variables$73 = function $$instance_variables() { - var self = this; - - return [] - }, $String_instance_variables$73.$$arity = 0); - Opal.defs(self, '$_load', $String__load$74 = function $$_load($a) { - var $post_args, args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send(self, 'new', Opal.to_a(args)); - }, $String__load$74.$$arity = -1); - - Opal.def(self, '$unicode_normalize', $String_unicode_normalize$75 = function $$unicode_normalize(form) { - var self = this; - - - ; - return self.toString();; - }, $String_unicode_normalize$75.$$arity = -1); - - Opal.def(self, '$unicode_normalized?', $String_unicode_normalized$ques$76 = function(form) { - var self = this; - - - ; - return true; - }, $String_unicode_normalized$ques$76.$$arity = -1); - - Opal.def(self, '$unpack', $String_unpack$77 = function $$unpack(format) { - var self = this; - - return self.$raise("To use String#unpack, you must first require 'corelib/string/unpack'.") - }, $String_unpack$77.$$arity = 1); - return (Opal.def(self, '$unpack1', $String_unpack1$78 = function $$unpack1(format) { - var self = this; - - return self.$raise("To use String#unpack1, you must first require 'corelib/string/unpack'.") - }, $String_unpack1$78.$$arity = 1), nil) && 'unpack1'; - })($nesting[0], String, $nesting); - return Opal.const_set($nesting[0], 'Symbol', $$($nesting, 'String')); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/enumerable"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $send = Opal.send, $falsy = Opal.falsy, $hash2 = Opal.hash2, $lambda = Opal.lambda; - - Opal.add_stubs(['$each', '$public_send', '$destructure', '$to_enum', '$enumerator_size', '$new', '$yield', '$raise', '$slice_when', '$!', '$enum_for', '$flatten', '$map', '$warn', '$proc', '$==', '$nil?', '$respond_to?', '$coerce_to!', '$>', '$*', '$coerce_to', '$try_convert', '$<', '$+', '$-', '$ceil', '$/', '$size', '$__send__', '$length', '$<=', '$[]', '$push', '$<<', '$[]=', '$===', '$inspect', '$<=>', '$first', '$reverse', '$sort', '$to_proc', '$compare', '$call', '$dup', '$to_a', '$sort!', '$map!', '$key?', '$values', '$zip']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Enumerable'); - - var $nesting = [self].concat($parent_nesting), $Enumerable_all$ques$1, $Enumerable_any$ques$5, $Enumerable_chunk$9, $Enumerable_chunk_while$12, $Enumerable_collect$14, $Enumerable_collect_concat$16, $Enumerable_count$19, $Enumerable_cycle$23, $Enumerable_detect$25, $Enumerable_drop$27, $Enumerable_drop_while$28, $Enumerable_each_cons$29, $Enumerable_each_entry$31, $Enumerable_each_slice$33, $Enumerable_each_with_index$35, $Enumerable_each_with_object$37, $Enumerable_entries$39, $Enumerable_find_all$40, $Enumerable_find_index$42, $Enumerable_first$45, $Enumerable_grep$48, $Enumerable_grep_v$50, $Enumerable_group_by$52, $Enumerable_include$ques$54, $Enumerable_inject$56, $Enumerable_lazy$57, $Enumerable_enumerator_size$59, $Enumerable_max$60, $Enumerable_max_by$61, $Enumerable_min$63, $Enumerable_min_by$64, $Enumerable_minmax$66, $Enumerable_minmax_by$68, $Enumerable_none$ques$69, $Enumerable_one$ques$73, $Enumerable_partition$77, $Enumerable_reject$79, $Enumerable_reverse_each$81, $Enumerable_slice_before$83, $Enumerable_slice_after$85, $Enumerable_slice_when$88, $Enumerable_sort$90, $Enumerable_sort_by$92, $Enumerable_sum$97, $Enumerable_take$99, $Enumerable_take_while$100, $Enumerable_uniq$102, $Enumerable_zip$104; - - - - function comparableForPattern(value) { - if (value.length === 0) { - value = [nil]; - } - - if (value.length > 1) { - value = [value]; - } - - return value; - } - ; - - Opal.def(self, '$all?', $Enumerable_all$ques$1 = function(pattern) {try { - - var $iter = $Enumerable_all$ques$1.$$p, block = $iter || nil, $$2, $$3, $$4, self = this; - - if ($iter) $Enumerable_all$ques$1.$$p = null; - - - if ($iter) $Enumerable_all$ques$1.$$p = null;; - ; - if ($truthy(pattern !== undefined)) { - $send(self, 'each', [], ($$2 = function($a){var self = $$2.$$s || this, $post_args, value, comparable = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - comparable = comparableForPattern(value); - if ($truthy($send(pattern, 'public_send', ["==="].concat(Opal.to_a(comparable))))) { - return nil - } else { - Opal.ret(false) - };}, $$2.$$s = self, $$2.$$arity = -1, $$2)) - } else if ((block !== nil)) { - $send(self, 'each', [], ($$3 = function($a){var self = $$3.$$s || this, $post_args, value; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) { - return nil - } else { - Opal.ret(false) - };}, $$3.$$s = self, $$3.$$arity = -1, $$3)) - } else { - $send(self, 'each', [], ($$4 = function($a){var self = $$4.$$s || this, $post_args, value; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - if ($truthy($$($nesting, 'Opal').$destructure(value))) { - return nil - } else { - Opal.ret(false) - };}, $$4.$$s = self, $$4.$$arity = -1, $$4)) - }; - return true; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $Enumerable_all$ques$1.$$arity = -1); - - Opal.def(self, '$any?', $Enumerable_any$ques$5 = function(pattern) {try { - - var $iter = $Enumerable_any$ques$5.$$p, block = $iter || nil, $$6, $$7, $$8, self = this; - - if ($iter) $Enumerable_any$ques$5.$$p = null; - - - if ($iter) $Enumerable_any$ques$5.$$p = null;; - ; - if ($truthy(pattern !== undefined)) { - $send(self, 'each', [], ($$6 = function($a){var self = $$6.$$s || this, $post_args, value, comparable = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - comparable = comparableForPattern(value); - if ($truthy($send(pattern, 'public_send', ["==="].concat(Opal.to_a(comparable))))) { - Opal.ret(true) - } else { - return nil - };}, $$6.$$s = self, $$6.$$arity = -1, $$6)) - } else if ((block !== nil)) { - $send(self, 'each', [], ($$7 = function($a){var self = $$7.$$s || this, $post_args, value; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) { - Opal.ret(true) - } else { - return nil - };}, $$7.$$s = self, $$7.$$arity = -1, $$7)) - } else { - $send(self, 'each', [], ($$8 = function($a){var self = $$8.$$s || this, $post_args, value; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - if ($truthy($$($nesting, 'Opal').$destructure(value))) { - Opal.ret(true) - } else { - return nil - };}, $$8.$$s = self, $$8.$$arity = -1, $$8)) - }; - return false; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $Enumerable_any$ques$5.$$arity = -1); - - Opal.def(self, '$chunk', $Enumerable_chunk$9 = function $$chunk() { - var $iter = $Enumerable_chunk$9.$$p, block = $iter || nil, $$10, $$11, self = this; - - if ($iter) $Enumerable_chunk$9.$$p = null; - - - if ($iter) $Enumerable_chunk$9.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'to_enum', ["chunk"], ($$10 = function(){var self = $$10.$$s || this; - - return self.$enumerator_size()}, $$10.$$s = self, $$10.$$arity = 0, $$10)) - }; - return $send($$$('::', 'Enumerator'), 'new', [], ($$11 = function(yielder){var self = $$11.$$s || this; - - - - if (yielder == null) { - yielder = nil; - }; - - var previous = nil, accumulate = []; - - function releaseAccumulate() { - if (accumulate.length > 0) { - yielder.$yield(previous, accumulate) - } - } - - self.$each.$$p = function(value) { - var key = Opal.yield1(block, value); - - if (key === nil) { - releaseAccumulate(); - accumulate = []; - previous = nil; - } else { - if (previous === nil || previous === key) { - accumulate.push(value); - } else { - releaseAccumulate(); - accumulate = [value]; - } - - previous = key; - } - } - - self.$each(); - - releaseAccumulate(); - ;}, $$11.$$s = self, $$11.$$arity = 1, $$11)); - }, $Enumerable_chunk$9.$$arity = 0); - - Opal.def(self, '$chunk_while', $Enumerable_chunk_while$12 = function $$chunk_while() { - var $iter = $Enumerable_chunk_while$12.$$p, block = $iter || nil, $$13, self = this; - - if ($iter) $Enumerable_chunk_while$12.$$p = null; - - - if ($iter) $Enumerable_chunk_while$12.$$p = null;; - if ((block !== nil)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "no block given") - }; - return $send(self, 'slice_when', [], ($$13 = function(before, after){var self = $$13.$$s || this; - - - - if (before == null) { - before = nil; - }; - - if (after == null) { - after = nil; - }; - return Opal.yieldX(block, [before, after])['$!']();}, $$13.$$s = self, $$13.$$arity = 2, $$13)); - }, $Enumerable_chunk_while$12.$$arity = 0); - - Opal.def(self, '$collect', $Enumerable_collect$14 = function $$collect() { - var $iter = $Enumerable_collect$14.$$p, block = $iter || nil, $$15, self = this; - - if ($iter) $Enumerable_collect$14.$$p = null; - - - if ($iter) $Enumerable_collect$14.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["collect"], ($$15 = function(){var self = $$15.$$s || this; - - return self.$enumerator_size()}, $$15.$$s = self, $$15.$$arity = 0, $$15)) - }; - - var result = []; - - self.$each.$$p = function() { - var value = Opal.yieldX(block, arguments); - - result.push(value); - }; - - self.$each(); - - return result; - ; - }, $Enumerable_collect$14.$$arity = 0); - - Opal.def(self, '$collect_concat', $Enumerable_collect_concat$16 = function $$collect_concat() { - var $iter = $Enumerable_collect_concat$16.$$p, block = $iter || nil, $$17, $$18, self = this; - - if ($iter) $Enumerable_collect_concat$16.$$p = null; - - - if ($iter) $Enumerable_collect_concat$16.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["collect_concat"], ($$17 = function(){var self = $$17.$$s || this; - - return self.$enumerator_size()}, $$17.$$s = self, $$17.$$arity = 0, $$17)) - }; - return $send(self, 'map', [], ($$18 = function(item){var self = $$18.$$s || this; - - - - if (item == null) { - item = nil; - }; - return Opal.yield1(block, item);;}, $$18.$$s = self, $$18.$$arity = 1, $$18)).$flatten(1); - }, $Enumerable_collect_concat$16.$$arity = 0); - - Opal.def(self, '$count', $Enumerable_count$19 = function $$count(object) { - var $iter = $Enumerable_count$19.$$p, block = $iter || nil, $$20, $$21, $$22, self = this, result = nil; - - if ($iter) $Enumerable_count$19.$$p = null; - - - if ($iter) $Enumerable_count$19.$$p = null;; - ; - result = 0; - - if (object != null && block !== nil) { - self.$warn("warning: given block not used") - } - ; - if ($truthy(object != null)) { - block = $send(self, 'proc', [], ($$20 = function($a){var self = $$20.$$s || this, $post_args, args; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $$($nesting, 'Opal').$destructure(args)['$=='](object);}, $$20.$$s = self, $$20.$$arity = -1, $$20)) - } else if ($truthy(block['$nil?']())) { - block = $send(self, 'proc', [], ($$21 = function(){var self = $$21.$$s || this; - - return true}, $$21.$$s = self, $$21.$$arity = 0, $$21))}; - $send(self, 'each', [], ($$22 = function($a){var self = $$22.$$s || this, $post_args, args; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - if ($truthy(Opal.yieldX(block, args))) { - return result++; - } else { - return nil - };}, $$22.$$s = self, $$22.$$arity = -1, $$22)); - return result; - }, $Enumerable_count$19.$$arity = -1); - - Opal.def(self, '$cycle', $Enumerable_cycle$23 = function $$cycle(n) { - var $iter = $Enumerable_cycle$23.$$p, block = $iter || nil, $$24, self = this; - - if ($iter) $Enumerable_cycle$23.$$p = null; - - - if ($iter) $Enumerable_cycle$23.$$p = null;; - - if (n == null) { - n = nil; - }; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["cycle", n], ($$24 = function(){var self = $$24.$$s || this; - - if ($truthy(n['$nil?']())) { - if ($truthy(self['$respond_to?']("size"))) { - return $$$($$($nesting, 'Float'), 'INFINITY') - } else { - return nil - } - } else { - - n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); - if ($truthy($rb_gt(n, 0))) { - return $rb_times(self.$enumerator_size(), n) - } else { - return 0 - }; - }}, $$24.$$s = self, $$24.$$arity = 0, $$24)) - }; - if ($truthy(n['$nil?']())) { - } else { - - n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); - if ($truthy(n <= 0)) { - return nil}; - }; - - var result, - all = [], i, length, value; - - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments), - value = Opal.yield1(block, param); - - all.push(param); - } - - self.$each(); - - if (result !== undefined) { - return result; - } - - if (all.length === 0) { - return nil; - } - - if (n === nil) { - while (true) { - for (i = 0, length = all.length; i < length; i++) { - value = Opal.yield1(block, all[i]); - } - } - } - else { - while (n > 1) { - for (i = 0, length = all.length; i < length; i++) { - value = Opal.yield1(block, all[i]); - } - - n--; - } - } - ; - }, $Enumerable_cycle$23.$$arity = -1); - - Opal.def(self, '$detect', $Enumerable_detect$25 = function $$detect(ifnone) {try { - - var $iter = $Enumerable_detect$25.$$p, block = $iter || nil, $$26, self = this; - - if ($iter) $Enumerable_detect$25.$$p = null; - - - if ($iter) $Enumerable_detect$25.$$p = null;; - ; - if ((block !== nil)) { - } else { - return self.$enum_for("detect", ifnone) - }; - $send(self, 'each', [], ($$26 = function($a){var self = $$26.$$s || this, $post_args, args, value = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - value = $$($nesting, 'Opal').$destructure(args); - if ($truthy(Opal.yield1(block, value))) { - Opal.ret(value) - } else { - return nil - };}, $$26.$$s = self, $$26.$$arity = -1, $$26)); - - if (ifnone !== undefined) { - if (typeof(ifnone) === 'function') { - return ifnone(); - } else { - return ifnone; - } - } - ; - return nil; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $Enumerable_detect$25.$$arity = -1); - - Opal.def(self, '$drop', $Enumerable_drop$27 = function $$drop(number) { - var self = this; - - - number = $$($nesting, 'Opal').$coerce_to(number, $$($nesting, 'Integer'), "to_int"); - if ($truthy(number < 0)) { - self.$raise($$($nesting, 'ArgumentError'), "attempt to drop negative size")}; - - var result = [], - current = 0; - - self.$each.$$p = function() { - if (number <= current) { - result.push($$($nesting, 'Opal').$destructure(arguments)); - } - - current++; - }; - - self.$each() - - return result; - ; - }, $Enumerable_drop$27.$$arity = 1); - - Opal.def(self, '$drop_while', $Enumerable_drop_while$28 = function $$drop_while() { - var $iter = $Enumerable_drop_while$28.$$p, block = $iter || nil, self = this; - - if ($iter) $Enumerable_drop_while$28.$$p = null; - - - if ($iter) $Enumerable_drop_while$28.$$p = null;; - if ((block !== nil)) { - } else { - return self.$enum_for("drop_while") - }; - - var result = [], - dropping = true; - - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments); - - if (dropping) { - var value = Opal.yield1(block, param); - - if ($falsy(value)) { - dropping = false; - result.push(param); - } - } - else { - result.push(param); - } - }; - - self.$each(); - - return result; - ; - }, $Enumerable_drop_while$28.$$arity = 0); - - Opal.def(self, '$each_cons', $Enumerable_each_cons$29 = function $$each_cons(n) { - var $iter = $Enumerable_each_cons$29.$$p, block = $iter || nil, $$30, self = this; - - if ($iter) $Enumerable_each_cons$29.$$p = null; - - - if ($iter) $Enumerable_each_cons$29.$$p = null;; - if ($truthy(arguments.length != 1)) { - self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " for 1)")}; - n = $$($nesting, 'Opal').$try_convert(n, $$($nesting, 'Integer'), "to_int"); - if ($truthy(n <= 0)) { - self.$raise($$($nesting, 'ArgumentError'), "invalid size")}; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["each_cons", n], ($$30 = function(){var self = $$30.$$s || this, $a, enum_size = nil; - - - enum_size = self.$enumerator_size(); - if ($truthy(enum_size['$nil?']())) { - return nil - } else if ($truthy(($truthy($a = enum_size['$=='](0)) ? $a : $rb_lt(enum_size, n)))) { - return 0 - } else { - return $rb_plus($rb_minus(enum_size, n), 1) - };}, $$30.$$s = self, $$30.$$arity = 0, $$30)) - }; - - var buffer = [], result = nil; - - self.$each.$$p = function() { - var element = $$($nesting, 'Opal').$destructure(arguments); - buffer.push(element); - if (buffer.length > n) { - buffer.shift(); - } - if (buffer.length == n) { - Opal.yield1(block, buffer.slice(0, n)); - } - } - - self.$each(); - - return result; - ; - }, $Enumerable_each_cons$29.$$arity = 1); - - Opal.def(self, '$each_entry', $Enumerable_each_entry$31 = function $$each_entry($a) { - var $iter = $Enumerable_each_entry$31.$$p, block = $iter || nil, $post_args, data, $$32, self = this; - - if ($iter) $Enumerable_each_entry$31.$$p = null; - - - if ($iter) $Enumerable_each_entry$31.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - data = $post_args;; - if ((block !== nil)) { - } else { - return $send(self, 'to_enum', ["each_entry"].concat(Opal.to_a(data)), ($$32 = function(){var self = $$32.$$s || this; - - return self.$enumerator_size()}, $$32.$$s = self, $$32.$$arity = 0, $$32)) - }; - - self.$each.$$p = function() { - var item = $$($nesting, 'Opal').$destructure(arguments); - - Opal.yield1(block, item); - } - - self.$each.apply(self, data); - - return self; - ; - }, $Enumerable_each_entry$31.$$arity = -1); - - Opal.def(self, '$each_slice', $Enumerable_each_slice$33 = function $$each_slice(n) { - var $iter = $Enumerable_each_slice$33.$$p, block = $iter || nil, $$34, self = this; - - if ($iter) $Enumerable_each_slice$33.$$p = null; - - - if ($iter) $Enumerable_each_slice$33.$$p = null;; - n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), "to_int"); - if ($truthy(n <= 0)) { - self.$raise($$($nesting, 'ArgumentError'), "invalid slice size")}; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["each_slice", n], ($$34 = function(){var self = $$34.$$s || this; - - if ($truthy(self['$respond_to?']("size"))) { - return $rb_divide(self.$size(), n).$ceil() - } else { - return nil - }}, $$34.$$s = self, $$34.$$arity = 0, $$34)) - }; - - var result, - slice = [] - - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments); - - slice.push(param); - - if (slice.length === n) { - Opal.yield1(block, slice); - slice = []; - } - }; - - self.$each(); - - if (result !== undefined) { - return result; - } - - // our "last" group, if smaller than n then won't have been yielded - if (slice.length > 0) { - Opal.yield1(block, slice); - } - ; - return nil; - }, $Enumerable_each_slice$33.$$arity = 1); - - Opal.def(self, '$each_with_index', $Enumerable_each_with_index$35 = function $$each_with_index($a) { - var $iter = $Enumerable_each_with_index$35.$$p, block = $iter || nil, $post_args, args, $$36, self = this; - - if ($iter) $Enumerable_each_with_index$35.$$p = null; - - - if ($iter) $Enumerable_each_with_index$35.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["each_with_index"].concat(Opal.to_a(args)), ($$36 = function(){var self = $$36.$$s || this; - - return self.$enumerator_size()}, $$36.$$s = self, $$36.$$arity = 0, $$36)) - }; - - var result, - index = 0; - - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments); - - block(param, index); - - index++; - }; - - self.$each.apply(self, args); - - if (result !== undefined) { - return result; - } - ; - return self; - }, $Enumerable_each_with_index$35.$$arity = -1); - - Opal.def(self, '$each_with_object', $Enumerable_each_with_object$37 = function $$each_with_object(object) { - var $iter = $Enumerable_each_with_object$37.$$p, block = $iter || nil, $$38, self = this; - - if ($iter) $Enumerable_each_with_object$37.$$p = null; - - - if ($iter) $Enumerable_each_with_object$37.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["each_with_object", object], ($$38 = function(){var self = $$38.$$s || this; - - return self.$enumerator_size()}, $$38.$$s = self, $$38.$$arity = 0, $$38)) - }; - - var result; - - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments); - - block(param, object); - }; - - self.$each(); - - if (result !== undefined) { - return result; - } - ; - return object; - }, $Enumerable_each_with_object$37.$$arity = 1); - - Opal.def(self, '$entries', $Enumerable_entries$39 = function $$entries($a) { - var $post_args, args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - - var result = []; - - self.$each.$$p = function() { - result.push($$($nesting, 'Opal').$destructure(arguments)); - }; - - self.$each.apply(self, args); - - return result; - ; - }, $Enumerable_entries$39.$$arity = -1); - Opal.alias(self, "find", "detect"); - - Opal.def(self, '$find_all', $Enumerable_find_all$40 = function $$find_all() { - var $iter = $Enumerable_find_all$40.$$p, block = $iter || nil, $$41, self = this; - - if ($iter) $Enumerable_find_all$40.$$p = null; - - - if ($iter) $Enumerable_find_all$40.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["find_all"], ($$41 = function(){var self = $$41.$$s || this; - - return self.$enumerator_size()}, $$41.$$s = self, $$41.$$arity = 0, $$41)) - }; - - var result = []; - - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments), - value = Opal.yield1(block, param); - - if ($truthy(value)) { - result.push(param); - } - }; - - self.$each(); - - return result; - ; - }, $Enumerable_find_all$40.$$arity = 0); - - Opal.def(self, '$find_index', $Enumerable_find_index$42 = function $$find_index(object) {try { - - var $iter = $Enumerable_find_index$42.$$p, block = $iter || nil, $$43, $$44, self = this, index = nil; - - if ($iter) $Enumerable_find_index$42.$$p = null; - - - if ($iter) $Enumerable_find_index$42.$$p = null;; - ; - if ($truthy(object === undefined && block === nil)) { - return self.$enum_for("find_index")}; - - if (object != null && block !== nil) { - self.$warn("warning: given block not used") - } - ; - index = 0; - if ($truthy(object != null)) { - $send(self, 'each', [], ($$43 = function($a){var self = $$43.$$s || this, $post_args, value; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - if ($$($nesting, 'Opal').$destructure(value)['$=='](object)) { - Opal.ret(index)}; - return index += 1;;}, $$43.$$s = self, $$43.$$arity = -1, $$43)) - } else { - $send(self, 'each', [], ($$44 = function($a){var self = $$44.$$s || this, $post_args, value; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) { - Opal.ret(index)}; - return index += 1;;}, $$44.$$s = self, $$44.$$arity = -1, $$44)) - }; - return nil; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $Enumerable_find_index$42.$$arity = -1); - - Opal.def(self, '$first', $Enumerable_first$45 = function $$first(number) {try { - - var $$46, $$47, self = this, result = nil, current = nil; - - - ; - if ($truthy(number === undefined)) { - return $send(self, 'each', [], ($$46 = function(value){var self = $$46.$$s || this; - - - - if (value == null) { - value = nil; - }; - Opal.ret(value);}, $$46.$$s = self, $$46.$$arity = 1, $$46)) - } else { - - result = []; - number = $$($nesting, 'Opal').$coerce_to(number, $$($nesting, 'Integer'), "to_int"); - if ($truthy(number < 0)) { - self.$raise($$($nesting, 'ArgumentError'), "attempt to take negative size")}; - if ($truthy(number == 0)) { - return []}; - current = 0; - $send(self, 'each', [], ($$47 = function($a){var self = $$47.$$s || this, $post_args, args; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - result.push($$($nesting, 'Opal').$destructure(args)); - if ($truthy(number <= ++current)) { - Opal.ret(result) - } else { - return nil - };}, $$47.$$s = self, $$47.$$arity = -1, $$47)); - return result; - }; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $Enumerable_first$45.$$arity = -1); - Opal.alias(self, "flat_map", "collect_concat"); - - Opal.def(self, '$grep', $Enumerable_grep$48 = function $$grep(pattern) { - var $iter = $Enumerable_grep$48.$$p, block = $iter || nil, $$49, self = this, result = nil; - - if ($iter) $Enumerable_grep$48.$$p = null; - - - if ($iter) $Enumerable_grep$48.$$p = null;; - result = []; - $send(self, 'each', [], ($$49 = function($a){var self = $$49.$$s || this, $post_args, value, cmp = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - cmp = comparableForPattern(value); - if ($truthy($send(pattern, '__send__', ["==="].concat(Opal.to_a(cmp))))) { - } else { - return nil; - }; - if ((block !== nil)) { - - if ($truthy($rb_gt(value.$length(), 1))) { - value = [value]}; - value = Opal.yieldX(block, Opal.to_a(value)); - } else if ($truthy($rb_le(value.$length(), 1))) { - value = value['$[]'](0)}; - return result.$push(value);}, $$49.$$s = self, $$49.$$arity = -1, $$49)); - return result; - }, $Enumerable_grep$48.$$arity = 1); - - Opal.def(self, '$grep_v', $Enumerable_grep_v$50 = function $$grep_v(pattern) { - var $iter = $Enumerable_grep_v$50.$$p, block = $iter || nil, $$51, self = this, result = nil; - - if ($iter) $Enumerable_grep_v$50.$$p = null; - - - if ($iter) $Enumerable_grep_v$50.$$p = null;; - result = []; - $send(self, 'each', [], ($$51 = function($a){var self = $$51.$$s || this, $post_args, value, cmp = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - cmp = comparableForPattern(value); - if ($truthy($send(pattern, '__send__', ["==="].concat(Opal.to_a(cmp))))) { - return nil;}; - if ((block !== nil)) { - - if ($truthy($rb_gt(value.$length(), 1))) { - value = [value]}; - value = Opal.yieldX(block, Opal.to_a(value)); - } else if ($truthy($rb_le(value.$length(), 1))) { - value = value['$[]'](0)}; - return result.$push(value);}, $$51.$$s = self, $$51.$$arity = -1, $$51)); - return result; - }, $Enumerable_grep_v$50.$$arity = 1); - - Opal.def(self, '$group_by', $Enumerable_group_by$52 = function $$group_by() { - var $iter = $Enumerable_group_by$52.$$p, block = $iter || nil, $$53, $a, self = this, hash = nil, $writer = nil; - - if ($iter) $Enumerable_group_by$52.$$p = null; - - - if ($iter) $Enumerable_group_by$52.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["group_by"], ($$53 = function(){var self = $$53.$$s || this; - - return self.$enumerator_size()}, $$53.$$s = self, $$53.$$arity = 0, $$53)) - }; - hash = $hash2([], {}); - - var result; - - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments), - value = Opal.yield1(block, param); - - ($truthy($a = hash['$[]'](value)) ? $a : (($writer = [value, []]), $send(hash, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)]))['$<<'](param); - } - - self.$each(); - - if (result !== undefined) { - return result; - } - ; - return hash; - }, $Enumerable_group_by$52.$$arity = 0); - - Opal.def(self, '$include?', $Enumerable_include$ques$54 = function(obj) {try { - - var $$55, self = this; - - - $send(self, 'each', [], ($$55 = function($a){var self = $$55.$$s || this, $post_args, args; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - if ($$($nesting, 'Opal').$destructure(args)['$=='](obj)) { - Opal.ret(true) - } else { - return nil - };}, $$55.$$s = self, $$55.$$arity = -1, $$55)); - return false; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $Enumerable_include$ques$54.$$arity = 1); - - Opal.def(self, '$inject', $Enumerable_inject$56 = function $$inject(object, sym) { - var $iter = $Enumerable_inject$56.$$p, block = $iter || nil, self = this; - - if ($iter) $Enumerable_inject$56.$$p = null; - - - if ($iter) $Enumerable_inject$56.$$p = null;; - ; - ; - - var result = object; - - if (block !== nil && sym === undefined) { - self.$each.$$p = function() { - var value = $$($nesting, 'Opal').$destructure(arguments); - - if (result === undefined) { - result = value; - return; - } - - value = Opal.yieldX(block, [result, value]); - - result = value; - }; - } - else { - if (sym === undefined) { - if (!$$($nesting, 'Symbol')['$==='](object)) { - self.$raise($$($nesting, 'TypeError'), "" + (object.$inspect()) + " is not a Symbol"); - } - - sym = object; - result = undefined; - } - - self.$each.$$p = function() { - var value = $$($nesting, 'Opal').$destructure(arguments); - - if (result === undefined) { - result = value; - return; - } - - result = (result).$__send__(sym, value); - }; - } - - self.$each(); - - return result == undefined ? nil : result; - ; - }, $Enumerable_inject$56.$$arity = -1); - - Opal.def(self, '$lazy', $Enumerable_lazy$57 = function $$lazy() { - var $$58, self = this; - - return $send($$$($$($nesting, 'Enumerator'), 'Lazy'), 'new', [self, self.$enumerator_size()], ($$58 = function(enum$, $a){var self = $$58.$$s || this, $post_args, args; - - - - if (enum$ == null) { - enum$ = nil; - }; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - return $send(enum$, 'yield', Opal.to_a(args));}, $$58.$$s = self, $$58.$$arity = -2, $$58)) - }, $Enumerable_lazy$57.$$arity = 0); - - Opal.def(self, '$enumerator_size', $Enumerable_enumerator_size$59 = function $$enumerator_size() { - var self = this; - - if ($truthy(self['$respond_to?']("size"))) { - return self.$size() - } else { - return nil - } - }, $Enumerable_enumerator_size$59.$$arity = 0); - Opal.alias(self, "map", "collect"); - - Opal.def(self, '$max', $Enumerable_max$60 = function $$max(n) { - var $iter = $Enumerable_max$60.$$p, block = $iter || nil, self = this; - - if ($iter) $Enumerable_max$60.$$p = null; - - - if ($iter) $Enumerable_max$60.$$p = null;; - ; - - if (n === undefined || n === nil) { - var result, value; - - self.$each.$$p = function() { - var item = $$($nesting, 'Opal').$destructure(arguments); - - if (result === undefined) { - result = item; - return; - } - - if (block !== nil) { - value = Opal.yieldX(block, [item, result]); - } else { - value = (item)['$<=>'](result); - } - - if (value === nil) { - self.$raise($$($nesting, 'ArgumentError'), "comparison failed"); - } - - if (value > 0) { - result = item; - } - } - - self.$each(); - - if (result === undefined) { - return nil; - } else { - return result; - } - } - ; - n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), "to_int"); - return $send(self, 'sort', [], block.$to_proc()).$reverse().$first(n); - }, $Enumerable_max$60.$$arity = -1); - - Opal.def(self, '$max_by', $Enumerable_max_by$61 = function $$max_by() { - var $iter = $Enumerable_max_by$61.$$p, block = $iter || nil, $$62, self = this; - - if ($iter) $Enumerable_max_by$61.$$p = null; - - - if ($iter) $Enumerable_max_by$61.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["max_by"], ($$62 = function(){var self = $$62.$$s || this; - - return self.$enumerator_size()}, $$62.$$s = self, $$62.$$arity = 0, $$62)) - }; - - var result, - by; - - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments), - value = Opal.yield1(block, param); - - if (result === undefined) { - result = param; - by = value; - return; - } - - if ((value)['$<=>'](by) > 0) { - result = param - by = value; - } - }; - - self.$each(); - - return result === undefined ? nil : result; - ; - }, $Enumerable_max_by$61.$$arity = 0); - Opal.alias(self, "member?", "include?"); - - Opal.def(self, '$min', $Enumerable_min$63 = function $$min() { - var $iter = $Enumerable_min$63.$$p, block = $iter || nil, self = this; - - if ($iter) $Enumerable_min$63.$$p = null; - - - if ($iter) $Enumerable_min$63.$$p = null;; - - var result; - - if (block !== nil) { - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments); - - if (result === undefined) { - result = param; - return; - } - - var value = block(param, result); - - if (value === nil) { - self.$raise($$($nesting, 'ArgumentError'), "comparison failed"); - } - - if (value < 0) { - result = param; - } - }; - } - else { - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments); - - if (result === undefined) { - result = param; - return; - } - - if ($$($nesting, 'Opal').$compare(param, result) < 0) { - result = param; - } - }; - } - - self.$each(); - - return result === undefined ? nil : result; - ; - }, $Enumerable_min$63.$$arity = 0); - - Opal.def(self, '$min_by', $Enumerable_min_by$64 = function $$min_by() { - var $iter = $Enumerable_min_by$64.$$p, block = $iter || nil, $$65, self = this; - - if ($iter) $Enumerable_min_by$64.$$p = null; - - - if ($iter) $Enumerable_min_by$64.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["min_by"], ($$65 = function(){var self = $$65.$$s || this; - - return self.$enumerator_size()}, $$65.$$s = self, $$65.$$arity = 0, $$65)) - }; - - var result, - by; - - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments), - value = Opal.yield1(block, param); - - if (result === undefined) { - result = param; - by = value; - return; - } - - if ((value)['$<=>'](by) < 0) { - result = param - by = value; - } - }; - - self.$each(); - - return result === undefined ? nil : result; - ; - }, $Enumerable_min_by$64.$$arity = 0); - - Opal.def(self, '$minmax', $Enumerable_minmax$66 = function $$minmax() { - var $iter = $Enumerable_minmax$66.$$p, block = $iter || nil, $a, $$67, self = this; - - if ($iter) $Enumerable_minmax$66.$$p = null; - - - if ($iter) $Enumerable_minmax$66.$$p = null;; - block = ($truthy($a = block) ? $a : $send(self, 'proc', [], ($$67 = function(a, b){var self = $$67.$$s || this; - - - - if (a == null) { - a = nil; - }; - - if (b == null) { - b = nil; - }; - return a['$<=>'](b);}, $$67.$$s = self, $$67.$$arity = 2, $$67))); - - var min = nil, max = nil, first_time = true; - - self.$each.$$p = function() { - var element = $$($nesting, 'Opal').$destructure(arguments); - if (first_time) { - min = max = element; - first_time = false; - } else { - var min_cmp = block.$call(min, element); - - if (min_cmp === nil) { - self.$raise($$($nesting, 'ArgumentError'), "comparison failed") - } else if (min_cmp > 0) { - min = element; - } - - var max_cmp = block.$call(max, element); - - if (max_cmp === nil) { - self.$raise($$($nesting, 'ArgumentError'), "comparison failed") - } else if (max_cmp < 0) { - max = element; - } - } - } - - self.$each(); - - return [min, max]; - ; - }, $Enumerable_minmax$66.$$arity = 0); - - Opal.def(self, '$minmax_by', $Enumerable_minmax_by$68 = function $$minmax_by() { - var $iter = $Enumerable_minmax_by$68.$$p, block = $iter || nil, self = this; - - if ($iter) $Enumerable_minmax_by$68.$$p = null; - - - if ($iter) $Enumerable_minmax_by$68.$$p = null;; - return self.$raise($$($nesting, 'NotImplementedError')); - }, $Enumerable_minmax_by$68.$$arity = 0); - - Opal.def(self, '$none?', $Enumerable_none$ques$69 = function(pattern) {try { - - var $iter = $Enumerable_none$ques$69.$$p, block = $iter || nil, $$70, $$71, $$72, self = this; - - if ($iter) $Enumerable_none$ques$69.$$p = null; - - - if ($iter) $Enumerable_none$ques$69.$$p = null;; - ; - if ($truthy(pattern !== undefined)) { - $send(self, 'each', [], ($$70 = function($a){var self = $$70.$$s || this, $post_args, value, comparable = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - comparable = comparableForPattern(value); - if ($truthy($send(pattern, 'public_send', ["==="].concat(Opal.to_a(comparable))))) { - Opal.ret(false) - } else { - return nil - };}, $$70.$$s = self, $$70.$$arity = -1, $$70)) - } else if ((block !== nil)) { - $send(self, 'each', [], ($$71 = function($a){var self = $$71.$$s || this, $post_args, value; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) { - Opal.ret(false) - } else { - return nil - };}, $$71.$$s = self, $$71.$$arity = -1, $$71)) - } else { - $send(self, 'each', [], ($$72 = function($a){var self = $$72.$$s || this, $post_args, value, item = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - item = $$($nesting, 'Opal').$destructure(value); - if ($truthy(item)) { - Opal.ret(false) - } else { - return nil - };}, $$72.$$s = self, $$72.$$arity = -1, $$72)) - }; - return true; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $Enumerable_none$ques$69.$$arity = -1); - - Opal.def(self, '$one?', $Enumerable_one$ques$73 = function(pattern) {try { - - var $iter = $Enumerable_one$ques$73.$$p, block = $iter || nil, $$74, $$75, $$76, self = this, count = nil; - - if ($iter) $Enumerable_one$ques$73.$$p = null; - - - if ($iter) $Enumerable_one$ques$73.$$p = null;; - ; - count = 0; - if ($truthy(pattern !== undefined)) { - $send(self, 'each', [], ($$74 = function($a){var self = $$74.$$s || this, $post_args, value, comparable = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - comparable = comparableForPattern(value); - if ($truthy($send(pattern, 'public_send', ["==="].concat(Opal.to_a(comparable))))) { - - count = $rb_plus(count, 1); - if ($truthy($rb_gt(count, 1))) { - Opal.ret(false) - } else { - return nil - }; - } else { - return nil - };}, $$74.$$s = self, $$74.$$arity = -1, $$74)) - } else if ((block !== nil)) { - $send(self, 'each', [], ($$75 = function($a){var self = $$75.$$s || this, $post_args, value; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) { - } else { - return nil; - }; - count = $rb_plus(count, 1); - if ($truthy($rb_gt(count, 1))) { - Opal.ret(false) - } else { - return nil - };}, $$75.$$s = self, $$75.$$arity = -1, $$75)) - } else { - $send(self, 'each', [], ($$76 = function($a){var self = $$76.$$s || this, $post_args, value; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - value = $post_args;; - if ($truthy($$($nesting, 'Opal').$destructure(value))) { - } else { - return nil; - }; - count = $rb_plus(count, 1); - if ($truthy($rb_gt(count, 1))) { - Opal.ret(false) - } else { - return nil - };}, $$76.$$s = self, $$76.$$arity = -1, $$76)) - }; - return count['$=='](1); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $Enumerable_one$ques$73.$$arity = -1); - - Opal.def(self, '$partition', $Enumerable_partition$77 = function $$partition() { - var $iter = $Enumerable_partition$77.$$p, block = $iter || nil, $$78, self = this; - - if ($iter) $Enumerable_partition$77.$$p = null; - - - if ($iter) $Enumerable_partition$77.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["partition"], ($$78 = function(){var self = $$78.$$s || this; - - return self.$enumerator_size()}, $$78.$$s = self, $$78.$$arity = 0, $$78)) - }; - - var truthy = [], falsy = [], result; - - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments), - value = Opal.yield1(block, param); - - if ($truthy(value)) { - truthy.push(param); - } - else { - falsy.push(param); - } - }; - - self.$each(); - - return [truthy, falsy]; - ; - }, $Enumerable_partition$77.$$arity = 0); - Opal.alias(self, "reduce", "inject"); - - Opal.def(self, '$reject', $Enumerable_reject$79 = function $$reject() { - var $iter = $Enumerable_reject$79.$$p, block = $iter || nil, $$80, self = this; - - if ($iter) $Enumerable_reject$79.$$p = null; - - - if ($iter) $Enumerable_reject$79.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["reject"], ($$80 = function(){var self = $$80.$$s || this; - - return self.$enumerator_size()}, $$80.$$s = self, $$80.$$arity = 0, $$80)) - }; - - var result = []; - - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments), - value = Opal.yield1(block, param); - - if ($falsy(value)) { - result.push(param); - } - }; - - self.$each(); - - return result; - ; - }, $Enumerable_reject$79.$$arity = 0); - - Opal.def(self, '$reverse_each', $Enumerable_reverse_each$81 = function $$reverse_each() { - var $iter = $Enumerable_reverse_each$81.$$p, block = $iter || nil, $$82, self = this; - - if ($iter) $Enumerable_reverse_each$81.$$p = null; - - - if ($iter) $Enumerable_reverse_each$81.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["reverse_each"], ($$82 = function(){var self = $$82.$$s || this; - - return self.$enumerator_size()}, $$82.$$s = self, $$82.$$arity = 0, $$82)) - }; - - var result = []; - - self.$each.$$p = function() { - result.push(arguments); - }; - - self.$each(); - - for (var i = result.length - 1; i >= 0; i--) { - Opal.yieldX(block, result[i]); - } - - return result; - ; - }, $Enumerable_reverse_each$81.$$arity = 0); - Opal.alias(self, "select", "find_all"); - - Opal.def(self, '$slice_before', $Enumerable_slice_before$83 = function $$slice_before(pattern) { - var $iter = $Enumerable_slice_before$83.$$p, block = $iter || nil, $$84, self = this; - - if ($iter) $Enumerable_slice_before$83.$$p = null; - - - if ($iter) $Enumerable_slice_before$83.$$p = null;; - ; - if ($truthy(pattern === undefined && block === nil)) { - self.$raise($$($nesting, 'ArgumentError'), "both pattern and block are given")}; - if ($truthy(pattern !== undefined && block !== nil || arguments.length > 1)) { - self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " expected 1)")}; - return $send($$($nesting, 'Enumerator'), 'new', [], ($$84 = function(e){var self = $$84.$$s || this; - - - - if (e == null) { - e = nil; - }; - - var slice = []; - - if (block !== nil) { - if (pattern === undefined) { - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments), - value = Opal.yield1(block, param); - - if ($truthy(value) && slice.length > 0) { - e['$<<'](slice); - slice = []; - } - - slice.push(param); - }; - } - else { - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments), - value = block(param, pattern.$dup()); - - if ($truthy(value) && slice.length > 0) { - e['$<<'](slice); - slice = []; - } - - slice.push(param); - }; - } - } - else { - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments), - value = pattern['$==='](param); - - if ($truthy(value) && slice.length > 0) { - e['$<<'](slice); - slice = []; - } - - slice.push(param); - }; - } - - self.$each(); - - if (slice.length > 0) { - e['$<<'](slice); - } - ;}, $$84.$$s = self, $$84.$$arity = 1, $$84)); - }, $Enumerable_slice_before$83.$$arity = -1); - - Opal.def(self, '$slice_after', $Enumerable_slice_after$85 = function $$slice_after(pattern) { - var $iter = $Enumerable_slice_after$85.$$p, block = $iter || nil, $$86, $$87, self = this; - - if ($iter) $Enumerable_slice_after$85.$$p = null; - - - if ($iter) $Enumerable_slice_after$85.$$p = null;; - ; - if ($truthy(pattern === undefined && block === nil)) { - self.$raise($$($nesting, 'ArgumentError'), "both pattern and block are given")}; - if ($truthy(pattern !== undefined && block !== nil || arguments.length > 1)) { - self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " expected 1)")}; - if ($truthy(pattern !== undefined)) { - block = $send(self, 'proc', [], ($$86 = function(e){var self = $$86.$$s || this; - - - - if (e == null) { - e = nil; - }; - return pattern['$==='](e);}, $$86.$$s = self, $$86.$$arity = 1, $$86))}; - return $send($$($nesting, 'Enumerator'), 'new', [], ($$87 = function(yielder){var self = $$87.$$s || this; - - - - if (yielder == null) { - yielder = nil; - }; - - var accumulate; - - self.$each.$$p = function() { - var element = $$($nesting, 'Opal').$destructure(arguments), - end_chunk = Opal.yield1(block, element); - - if (accumulate == null) { - accumulate = []; - } - - if ($truthy(end_chunk)) { - accumulate.push(element); - yielder.$yield(accumulate); - accumulate = null; - } else { - accumulate.push(element) - } - } - - self.$each(); - - if (accumulate != null) { - yielder.$yield(accumulate); - } - ;}, $$87.$$s = self, $$87.$$arity = 1, $$87)); - }, $Enumerable_slice_after$85.$$arity = -1); - - Opal.def(self, '$slice_when', $Enumerable_slice_when$88 = function $$slice_when() { - var $iter = $Enumerable_slice_when$88.$$p, block = $iter || nil, $$89, self = this; - - if ($iter) $Enumerable_slice_when$88.$$p = null; - - - if ($iter) $Enumerable_slice_when$88.$$p = null;; - if ((block !== nil)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "wrong number of arguments (0 for 1)") - }; - return $send($$($nesting, 'Enumerator'), 'new', [], ($$89 = function(yielder){var self = $$89.$$s || this; - - - - if (yielder == null) { - yielder = nil; - }; - - var slice = nil, last_after = nil; - - self.$each_cons.$$p = function() { - var params = $$($nesting, 'Opal').$destructure(arguments), - before = params[0], - after = params[1], - match = Opal.yieldX(block, [before, after]); - - last_after = after; - - if (slice === nil) { - slice = []; - } - - if ($truthy(match)) { - slice.push(before); - yielder.$yield(slice); - slice = []; - } else { - slice.push(before); - } - } - - self.$each_cons(2); - - if (slice !== nil) { - slice.push(last_after); - yielder.$yield(slice); - } - ;}, $$89.$$s = self, $$89.$$arity = 1, $$89)); - }, $Enumerable_slice_when$88.$$arity = 0); - - Opal.def(self, '$sort', $Enumerable_sort$90 = function $$sort() { - var $iter = $Enumerable_sort$90.$$p, block = $iter || nil, $$91, self = this, ary = nil; - - if ($iter) $Enumerable_sort$90.$$p = null; - - - if ($iter) $Enumerable_sort$90.$$p = null;; - ary = self.$to_a(); - if ((block !== nil)) { - } else { - block = $lambda(($$91 = function(a, b){var self = $$91.$$s || this; - - - - if (a == null) { - a = nil; - }; - - if (b == null) { - b = nil; - }; - return a['$<=>'](b);}, $$91.$$s = self, $$91.$$arity = 2, $$91)) - }; - return $send(ary, 'sort', [], block.$to_proc()); - }, $Enumerable_sort$90.$$arity = 0); - - Opal.def(self, '$sort_by', $Enumerable_sort_by$92 = function $$sort_by() { - var $iter = $Enumerable_sort_by$92.$$p, block = $iter || nil, $$93, $$94, $$95, $$96, self = this, dup = nil; - - if ($iter) $Enumerable_sort_by$92.$$p = null; - - - if ($iter) $Enumerable_sort_by$92.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["sort_by"], ($$93 = function(){var self = $$93.$$s || this; - - return self.$enumerator_size()}, $$93.$$s = self, $$93.$$arity = 0, $$93)) - }; - dup = $send(self, 'map', [], ($$94 = function(){var self = $$94.$$s || this, arg = nil; - - - arg = $$($nesting, 'Opal').$destructure(arguments); - return [Opal.yield1(block, arg), arg];}, $$94.$$s = self, $$94.$$arity = 0, $$94)); - $send(dup, 'sort!', [], ($$95 = function(a, b){var self = $$95.$$s || this; - - - - if (a == null) { - a = nil; - }; - - if (b == null) { - b = nil; - }; - return (a[0])['$<=>'](b[0]);}, $$95.$$s = self, $$95.$$arity = 2, $$95)); - return $send(dup, 'map!', [], ($$96 = function(i){var self = $$96.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i[1];;}, $$96.$$s = self, $$96.$$arity = 1, $$96)); - }, $Enumerable_sort_by$92.$$arity = 0); - - Opal.def(self, '$sum', $Enumerable_sum$97 = function $$sum(initial) { - var $$98, $iter = $Enumerable_sum$97.$$p, $yield = $iter || nil, self = this, result = nil; - - if ($iter) $Enumerable_sum$97.$$p = null; - - - if (initial == null) { - initial = 0; - }; - result = initial; - $send(self, 'each', [], ($$98 = function($a){var self = $$98.$$s || this, $post_args, args, item = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - item = (function() {if (($yield !== nil)) { - return Opal.yieldX($yield, Opal.to_a(args)); - } else { - return $$($nesting, 'Opal').$destructure(args) - }; return nil; })(); - return (result = $rb_plus(result, item));}, $$98.$$s = self, $$98.$$arity = -1, $$98)); - return result; - }, $Enumerable_sum$97.$$arity = -1); - - Opal.def(self, '$take', $Enumerable_take$99 = function $$take(num) { - var self = this; - - return self.$first(num) - }, $Enumerable_take$99.$$arity = 1); - - Opal.def(self, '$take_while', $Enumerable_take_while$100 = function $$take_while() {try { - - var $iter = $Enumerable_take_while$100.$$p, block = $iter || nil, $$101, self = this, result = nil; - - if ($iter) $Enumerable_take_while$100.$$p = null; - - - if ($iter) $Enumerable_take_while$100.$$p = null;; - if ($truthy(block)) { - } else { - return self.$enum_for("take_while") - }; - result = []; - return $send(self, 'each', [], ($$101 = function($a){var self = $$101.$$s || this, $post_args, args, value = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - value = $$($nesting, 'Opal').$destructure(args); - if ($truthy(Opal.yield1(block, value))) { - } else { - Opal.ret(result) - }; - return result.push(value);;}, $$101.$$s = self, $$101.$$arity = -1, $$101)); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $Enumerable_take_while$100.$$arity = 0); - - Opal.def(self, '$uniq', $Enumerable_uniq$102 = function $$uniq() { - var $iter = $Enumerable_uniq$102.$$p, block = $iter || nil, $$103, self = this, hash = nil; - - if ($iter) $Enumerable_uniq$102.$$p = null; - - - if ($iter) $Enumerable_uniq$102.$$p = null;; - hash = $hash2([], {}); - $send(self, 'each', [], ($$103 = function($a){var self = $$103.$$s || this, $post_args, args, value = nil, produced = nil, $writer = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - value = $$($nesting, 'Opal').$destructure(args); - produced = (function() {if ((block !== nil)) { - return Opal.yield1(block, value); - } else { - return value - }; return nil; })(); - if ($truthy(hash['$key?'](produced))) { - return nil - } else { - - $writer = [produced, value]; - $send(hash, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)]; - };}, $$103.$$s = self, $$103.$$arity = -1, $$103)); - return hash.$values(); - }, $Enumerable_uniq$102.$$arity = 0); - Opal.alias(self, "to_a", "entries"); - - Opal.def(self, '$zip', $Enumerable_zip$104 = function $$zip($a) { - var $iter = $Enumerable_zip$104.$$p, block = $iter || nil, $post_args, others, self = this; - - if ($iter) $Enumerable_zip$104.$$p = null; - - - if ($iter) $Enumerable_zip$104.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - others = $post_args;; - return $send(self.$to_a(), 'zip', Opal.to_a(others)); - }, $Enumerable_zip$104.$$arity = -1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/enumerator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $falsy = Opal.falsy; - - Opal.add_stubs(['$require', '$include', '$allocate', '$new', '$to_proc', '$coerce_to', '$nil?', '$empty?', '$+', '$class', '$__send__', '$===', '$call', '$enum_for', '$size', '$destructure', '$inspect', '$any?', '$[]', '$raise', '$yield', '$each', '$enumerator_size', '$respond_to?', '$try_convert', '$<', '$for']); - - self.$require("corelib/enumerable"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Enumerator'); - - var $nesting = [self].concat($parent_nesting), $Enumerator_for$1, $Enumerator_initialize$2, $Enumerator_each$3, $Enumerator_size$4, $Enumerator_with_index$5, $Enumerator_inspect$7; - - self.$$prototype.size = self.$$prototype.args = self.$$prototype.object = self.$$prototype.method = nil; - - self.$include($$($nesting, 'Enumerable')); - self.$$prototype.$$is_enumerator = true; - Opal.defs(self, '$for', $Enumerator_for$1 = function(object, $a, $b) { - var $iter = $Enumerator_for$1.$$p, block = $iter || nil, $post_args, method, args, self = this; - - if ($iter) $Enumerator_for$1.$$p = null; - - - if ($iter) $Enumerator_for$1.$$p = null;; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - if ($post_args.length > 0) { - method = $post_args[0]; - $post_args.splice(0, 1); - } - if (method == null) { - method = "each"; - }; - - args = $post_args;; - - var obj = self.$allocate(); - - obj.object = object; - obj.size = block; - obj.method = method; - obj.args = args; - - return obj; - ; - }, $Enumerator_for$1.$$arity = -2); - - Opal.def(self, '$initialize', $Enumerator_initialize$2 = function $$initialize($a) { - var $iter = $Enumerator_initialize$2.$$p, block = $iter || nil, $post_args, self = this; - - if ($iter) $Enumerator_initialize$2.$$p = null; - - - if ($iter) $Enumerator_initialize$2.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - if ($truthy(block)) { - - self.object = $send($$($nesting, 'Generator'), 'new', [], block.$to_proc()); - self.method = "each"; - self.args = []; - self.size = arguments[0] || nil; - if ($truthy(self.size)) { - return (self.size = $$($nesting, 'Opal').$coerce_to(self.size, $$($nesting, 'Integer'), "to_int")) - } else { - return nil - }; - } else { - - self.object = arguments[0]; - self.method = arguments[1] || "each"; - self.args = $slice.call(arguments, 2); - return (self.size = nil); - }; - }, $Enumerator_initialize$2.$$arity = -1); - - Opal.def(self, '$each', $Enumerator_each$3 = function $$each($a) { - var $iter = $Enumerator_each$3.$$p, block = $iter || nil, $post_args, args, $b, self = this; - - if ($iter) $Enumerator_each$3.$$p = null; - - - if ($iter) $Enumerator_each$3.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - if ($truthy(($truthy($b = block['$nil?']()) ? args['$empty?']() : $b))) { - return self}; - args = $rb_plus(self.args, args); - if ($truthy(block['$nil?']())) { - return $send(self.$class(), 'new', [self.object, self.method].concat(Opal.to_a(args)))}; - return $send(self.object, '__send__', [self.method].concat(Opal.to_a(args)), block.$to_proc()); - }, $Enumerator_each$3.$$arity = -1); - - Opal.def(self, '$size', $Enumerator_size$4 = function $$size() { - var self = this; - - if ($truthy($$($nesting, 'Proc')['$==='](self.size))) { - return $send(self.size, 'call', Opal.to_a(self.args)) - } else { - return self.size - } - }, $Enumerator_size$4.$$arity = 0); - - Opal.def(self, '$with_index', $Enumerator_with_index$5 = function $$with_index(offset) { - var $iter = $Enumerator_with_index$5.$$p, block = $iter || nil, $$6, self = this; - - if ($iter) $Enumerator_with_index$5.$$p = null; - - - if ($iter) $Enumerator_with_index$5.$$p = null;; - - if (offset == null) { - offset = 0; - }; - offset = (function() {if ($truthy(offset)) { - return $$($nesting, 'Opal').$coerce_to(offset, $$($nesting, 'Integer'), "to_int") - } else { - return 0 - }; return nil; })(); - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["with_index", offset], ($$6 = function(){var self = $$6.$$s || this; - - return self.$size()}, $$6.$$s = self, $$6.$$arity = 0, $$6)) - }; - - var result, index = offset; - - self.$each.$$p = function() { - var param = $$($nesting, 'Opal').$destructure(arguments), - value = block(param, index); - - index++; - - return value; - } - - return self.$each(); - ; - }, $Enumerator_with_index$5.$$arity = -1); - Opal.alias(self, "with_object", "each_with_object"); - - Opal.def(self, '$inspect', $Enumerator_inspect$7 = function $$inspect() { - var self = this, result = nil; - - - result = "" + "#<" + (self.$class()) + ": " + (self.object.$inspect()) + ":" + (self.method); - if ($truthy(self.args['$any?']())) { - result = $rb_plus(result, "" + "(" + (self.args.$inspect()['$[]']($$($nesting, 'Range').$new(1, -2))) + ")")}; - return $rb_plus(result, ">"); - }, $Enumerator_inspect$7.$$arity = 0); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Generator'); - - var $nesting = [self].concat($parent_nesting), $Generator_initialize$8, $Generator_each$9; - - self.$$prototype.block = nil; - - self.$include($$($nesting, 'Enumerable')); - - Opal.def(self, '$initialize', $Generator_initialize$8 = function $$initialize() { - var $iter = $Generator_initialize$8.$$p, block = $iter || nil, self = this; - - if ($iter) $Generator_initialize$8.$$p = null; - - - if ($iter) $Generator_initialize$8.$$p = null;; - if ($truthy(block)) { - } else { - self.$raise($$($nesting, 'LocalJumpError'), "no block given") - }; - return (self.block = block); - }, $Generator_initialize$8.$$arity = 0); - return (Opal.def(self, '$each', $Generator_each$9 = function $$each($a) { - var $iter = $Generator_each$9.$$p, block = $iter || nil, $post_args, args, self = this, yielder = nil; - - if ($iter) $Generator_each$9.$$p = null; - - - if ($iter) $Generator_each$9.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - yielder = $send($$($nesting, 'Yielder'), 'new', [], block.$to_proc()); - - try { - args.unshift(yielder); - - Opal.yieldX(self.block, args); - } - catch (e) { - if (e === $breaker) { - return $breaker.$v; - } - else { - throw e; - } - } - ; - return self; - }, $Generator_each$9.$$arity = -1), nil) && 'each'; - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Yielder'); - - var $nesting = [self].concat($parent_nesting), $Yielder_initialize$10, $Yielder_yield$11, $Yielder_$lt$lt$12; - - self.$$prototype.block = nil; - - - Opal.def(self, '$initialize', $Yielder_initialize$10 = function $$initialize() { - var $iter = $Yielder_initialize$10.$$p, block = $iter || nil, self = this; - - if ($iter) $Yielder_initialize$10.$$p = null; - - - if ($iter) $Yielder_initialize$10.$$p = null;; - return (self.block = block); - }, $Yielder_initialize$10.$$arity = 0); - - Opal.def(self, '$yield', $Yielder_yield$11 = function($a) { - var $post_args, values, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - values = $post_args;; - - var value = Opal.yieldX(self.block, values); - - if (value === $breaker) { - throw $breaker; - } - - return value; - ; - }, $Yielder_yield$11.$$arity = -1); - return (Opal.def(self, '$<<', $Yielder_$lt$lt$12 = function($a) { - var $post_args, values, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - values = $post_args;; - $send(self, 'yield', Opal.to_a(values)); - return self; - }, $Yielder_$lt$lt$12.$$arity = -1), nil) && '<<'; - })($nesting[0], null, $nesting); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Lazy'); - - var $nesting = [self].concat($parent_nesting), $Lazy_initialize$13, $Lazy_lazy$16, $Lazy_collect$17, $Lazy_collect_concat$19, $Lazy_drop$23, $Lazy_drop_while$25, $Lazy_enum_for$27, $Lazy_find_all$28, $Lazy_grep$30, $Lazy_reject$33, $Lazy_take$35, $Lazy_take_while$37, $Lazy_inspect$39; - - self.$$prototype.enumerator = nil; - - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'StopLazyError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'Exception'), $nesting); - - Opal.def(self, '$initialize', $Lazy_initialize$13 = function $$initialize(object, size) { - var $iter = $Lazy_initialize$13.$$p, block = $iter || nil, $$14, self = this; - - if ($iter) $Lazy_initialize$13.$$p = null; - - - if ($iter) $Lazy_initialize$13.$$p = null;; - - if (size == null) { - size = nil; - }; - if ((block !== nil)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "tried to call lazy new without a block") - }; - self.enumerator = object; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', $Lazy_initialize$13, false), [size], ($$14 = function(yielder, $a){var self = $$14.$$s || this, $post_args, each_args, $$15; - - - - if (yielder == null) { - yielder = nil; - }; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - each_args = $post_args;; - try { - return $send(object, 'each', Opal.to_a(each_args), ($$15 = function($b){var self = $$15.$$s || this, $post_args, args; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - - args.unshift(yielder); - - Opal.yieldX(block, args); - ;}, $$15.$$s = self, $$15.$$arity = -1, $$15)) - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'Exception')])) { - try { - return nil - } finally { Opal.pop_exception() } - } else { throw $err; } - };}, $$14.$$s = self, $$14.$$arity = -2, $$14)); - }, $Lazy_initialize$13.$$arity = -2); - Opal.alias(self, "force", "to_a"); - - Opal.def(self, '$lazy', $Lazy_lazy$16 = function $$lazy() { - var self = this; - - return self - }, $Lazy_lazy$16.$$arity = 0); - - Opal.def(self, '$collect', $Lazy_collect$17 = function $$collect() { - var $iter = $Lazy_collect$17.$$p, block = $iter || nil, $$18, self = this; - - if ($iter) $Lazy_collect$17.$$p = null; - - - if ($iter) $Lazy_collect$17.$$p = null;; - if ($truthy(block)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "tried to call lazy map without a block") - }; - return $send($$($nesting, 'Lazy'), 'new', [self, self.$enumerator_size()], ($$18 = function(enum$, $a){var self = $$18.$$s || this, $post_args, args; - - - - if (enum$ == null) { - enum$ = nil; - }; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - - var value = Opal.yieldX(block, args); - - enum$.$yield(value); - ;}, $$18.$$s = self, $$18.$$arity = -2, $$18)); - }, $Lazy_collect$17.$$arity = 0); - - Opal.def(self, '$collect_concat', $Lazy_collect_concat$19 = function $$collect_concat() { - var $iter = $Lazy_collect_concat$19.$$p, block = $iter || nil, $$20, self = this; - - if ($iter) $Lazy_collect_concat$19.$$p = null; - - - if ($iter) $Lazy_collect_concat$19.$$p = null;; - if ($truthy(block)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "tried to call lazy map without a block") - }; - return $send($$($nesting, 'Lazy'), 'new', [self, nil], ($$20 = function(enum$, $a){var self = $$20.$$s || this, $post_args, args, $$21, $$22; - - - - if (enum$ == null) { - enum$ = nil; - }; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - - var value = Opal.yieldX(block, args); - - if ((value)['$respond_to?']("force") && (value)['$respond_to?']("each")) { - $send((value), 'each', [], ($$21 = function(v){var self = $$21.$$s || this; - - - - if (v == null) { - v = nil; - }; - return enum$.$yield(v);}, $$21.$$s = self, $$21.$$arity = 1, $$21)) - } - else { - var array = $$($nesting, 'Opal').$try_convert(value, $$($nesting, 'Array'), "to_ary"); - - if (array === nil) { - enum$.$yield(value); - } - else { - $send((value), 'each', [], ($$22 = function(v){var self = $$22.$$s || this; - - - - if (v == null) { - v = nil; - }; - return enum$.$yield(v);}, $$22.$$s = self, $$22.$$arity = 1, $$22)); - } - } - ;}, $$20.$$s = self, $$20.$$arity = -2, $$20)); - }, $Lazy_collect_concat$19.$$arity = 0); - - Opal.def(self, '$drop', $Lazy_drop$23 = function $$drop(n) { - var $$24, self = this, current_size = nil, set_size = nil, dropped = nil; - - - n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), "to_int"); - if ($truthy($rb_lt(n, 0))) { - self.$raise($$($nesting, 'ArgumentError'), "attempt to drop negative size")}; - current_size = self.$enumerator_size(); - set_size = (function() {if ($truthy($$($nesting, 'Integer')['$==='](current_size))) { - if ($truthy($rb_lt(n, current_size))) { - return n - } else { - return current_size - } - } else { - return current_size - }; return nil; })(); - dropped = 0; - return $send($$($nesting, 'Lazy'), 'new', [self, set_size], ($$24 = function(enum$, $a){var self = $$24.$$s || this, $post_args, args; - - - - if (enum$ == null) { - enum$ = nil; - }; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - if ($truthy($rb_lt(dropped, n))) { - return (dropped = $rb_plus(dropped, 1)) - } else { - return $send(enum$, 'yield', Opal.to_a(args)) - };}, $$24.$$s = self, $$24.$$arity = -2, $$24)); - }, $Lazy_drop$23.$$arity = 1); - - Opal.def(self, '$drop_while', $Lazy_drop_while$25 = function $$drop_while() { - var $iter = $Lazy_drop_while$25.$$p, block = $iter || nil, $$26, self = this, succeeding = nil; - - if ($iter) $Lazy_drop_while$25.$$p = null; - - - if ($iter) $Lazy_drop_while$25.$$p = null;; - if ($truthy(block)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "tried to call lazy drop_while without a block") - }; - succeeding = true; - return $send($$($nesting, 'Lazy'), 'new', [self, nil], ($$26 = function(enum$, $a){var self = $$26.$$s || this, $post_args, args; - - - - if (enum$ == null) { - enum$ = nil; - }; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - if ($truthy(succeeding)) { - - var value = Opal.yieldX(block, args); - - if ($falsy(value)) { - succeeding = false; - - $send(enum$, 'yield', Opal.to_a(args)); - } - - } else { - return $send(enum$, 'yield', Opal.to_a(args)) - };}, $$26.$$s = self, $$26.$$arity = -2, $$26)); - }, $Lazy_drop_while$25.$$arity = 0); - - Opal.def(self, '$enum_for', $Lazy_enum_for$27 = function $$enum_for($a, $b) { - var $iter = $Lazy_enum_for$27.$$p, block = $iter || nil, $post_args, method, args, self = this; - - if ($iter) $Lazy_enum_for$27.$$p = null; - - - if ($iter) $Lazy_enum_for$27.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - if ($post_args.length > 0) { - method = $post_args[0]; - $post_args.splice(0, 1); - } - if (method == null) { - method = "each"; - }; - - args = $post_args;; - return $send(self.$class(), 'for', [self, method].concat(Opal.to_a(args)), block.$to_proc()); - }, $Lazy_enum_for$27.$$arity = -1); - - Opal.def(self, '$find_all', $Lazy_find_all$28 = function $$find_all() { - var $iter = $Lazy_find_all$28.$$p, block = $iter || nil, $$29, self = this; - - if ($iter) $Lazy_find_all$28.$$p = null; - - - if ($iter) $Lazy_find_all$28.$$p = null;; - if ($truthy(block)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "tried to call lazy select without a block") - }; - return $send($$($nesting, 'Lazy'), 'new', [self, nil], ($$29 = function(enum$, $a){var self = $$29.$$s || this, $post_args, args; - - - - if (enum$ == null) { - enum$ = nil; - }; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - - var value = Opal.yieldX(block, args); - - if ($truthy(value)) { - $send(enum$, 'yield', Opal.to_a(args)); - } - ;}, $$29.$$s = self, $$29.$$arity = -2, $$29)); - }, $Lazy_find_all$28.$$arity = 0); - Opal.alias(self, "flat_map", "collect_concat"); - - Opal.def(self, '$grep', $Lazy_grep$30 = function $$grep(pattern) { - var $iter = $Lazy_grep$30.$$p, block = $iter || nil, $$31, $$32, self = this; - - if ($iter) $Lazy_grep$30.$$p = null; - - - if ($iter) $Lazy_grep$30.$$p = null;; - if ($truthy(block)) { - return $send($$($nesting, 'Lazy'), 'new', [self, nil], ($$31 = function(enum$, $a){var self = $$31.$$s || this, $post_args, args; - - - - if (enum$ == null) { - enum$ = nil; - }; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - - var param = $$($nesting, 'Opal').$destructure(args), - value = pattern['$==='](param); - - if ($truthy(value)) { - value = Opal.yield1(block, param); - - enum$.$yield(Opal.yield1(block, param)); - } - ;}, $$31.$$s = self, $$31.$$arity = -2, $$31)) - } else { - return $send($$($nesting, 'Lazy'), 'new', [self, nil], ($$32 = function(enum$, $a){var self = $$32.$$s || this, $post_args, args; - - - - if (enum$ == null) { - enum$ = nil; - }; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - - var param = $$($nesting, 'Opal').$destructure(args), - value = pattern['$==='](param); - - if ($truthy(value)) { - enum$.$yield(param); - } - ;}, $$32.$$s = self, $$32.$$arity = -2, $$32)) - }; - }, $Lazy_grep$30.$$arity = 1); - Opal.alias(self, "map", "collect"); - Opal.alias(self, "select", "find_all"); - - Opal.def(self, '$reject', $Lazy_reject$33 = function $$reject() { - var $iter = $Lazy_reject$33.$$p, block = $iter || nil, $$34, self = this; - - if ($iter) $Lazy_reject$33.$$p = null; - - - if ($iter) $Lazy_reject$33.$$p = null;; - if ($truthy(block)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "tried to call lazy reject without a block") - }; - return $send($$($nesting, 'Lazy'), 'new', [self, nil], ($$34 = function(enum$, $a){var self = $$34.$$s || this, $post_args, args; - - - - if (enum$ == null) { - enum$ = nil; - }; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - - var value = Opal.yieldX(block, args); - - if ($falsy(value)) { - $send(enum$, 'yield', Opal.to_a(args)); - } - ;}, $$34.$$s = self, $$34.$$arity = -2, $$34)); - }, $Lazy_reject$33.$$arity = 0); - - Opal.def(self, '$take', $Lazy_take$35 = function $$take(n) { - var $$36, self = this, current_size = nil, set_size = nil, taken = nil; - - - n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), "to_int"); - if ($truthy($rb_lt(n, 0))) { - self.$raise($$($nesting, 'ArgumentError'), "attempt to take negative size")}; - current_size = self.$enumerator_size(); - set_size = (function() {if ($truthy($$($nesting, 'Integer')['$==='](current_size))) { - if ($truthy($rb_lt(n, current_size))) { - return n - } else { - return current_size - } - } else { - return current_size - }; return nil; })(); - taken = 0; - return $send($$($nesting, 'Lazy'), 'new', [self, set_size], ($$36 = function(enum$, $a){var self = $$36.$$s || this, $post_args, args; - - - - if (enum$ == null) { - enum$ = nil; - }; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - if ($truthy($rb_lt(taken, n))) { - - $send(enum$, 'yield', Opal.to_a(args)); - return (taken = $rb_plus(taken, 1)); - } else { - return self.$raise($$($nesting, 'StopLazyError')) - };}, $$36.$$s = self, $$36.$$arity = -2, $$36)); - }, $Lazy_take$35.$$arity = 1); - - Opal.def(self, '$take_while', $Lazy_take_while$37 = function $$take_while() { - var $iter = $Lazy_take_while$37.$$p, block = $iter || nil, $$38, self = this; - - if ($iter) $Lazy_take_while$37.$$p = null; - - - if ($iter) $Lazy_take_while$37.$$p = null;; - if ($truthy(block)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "tried to call lazy take_while without a block") - }; - return $send($$($nesting, 'Lazy'), 'new', [self, nil], ($$38 = function(enum$, $a){var self = $$38.$$s || this, $post_args, args; - - - - if (enum$ == null) { - enum$ = nil; - }; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - - var value = Opal.yieldX(block, args); - - if ($truthy(value)) { - $send(enum$, 'yield', Opal.to_a(args)); - } - else { - self.$raise($$($nesting, 'StopLazyError')); - } - ;}, $$38.$$s = self, $$38.$$arity = -2, $$38)); - }, $Lazy_take_while$37.$$arity = 0); - Opal.alias(self, "to_enum", "enum_for"); - return (Opal.def(self, '$inspect', $Lazy_inspect$39 = function $$inspect() { - var self = this; - - return "" + "#<" + (self.$class()) + ": " + (self.enumerator.$inspect()) + ">" - }, $Lazy_inspect$39.$$arity = 0), nil) && 'inspect'; - })($nesting[0], self, $nesting); - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/numeric"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$include', '$instance_of?', '$class', '$Float', '$respond_to?', '$coerce', '$__send__', '$===', '$raise', '$equal?', '$-', '$*', '$div', '$<', '$-@', '$ceil', '$to_f', '$denominator', '$to_r', '$==', '$floor', '$/', '$%', '$Complex', '$zero?', '$numerator', '$abs', '$arg', '$coerce_to!', '$round', '$to_i', '$truncate', '$>']); - - self.$require("corelib/comparable"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Numeric'); - - var $nesting = [self].concat($parent_nesting), $Numeric_coerce$1, $Numeric___coerced__$2, $Numeric_$lt_eq_gt$3, $Numeric_$plus$$4, $Numeric_$minus$$5, $Numeric_$percent$6, $Numeric_abs$7, $Numeric_abs2$8, $Numeric_angle$9, $Numeric_ceil$10, $Numeric_conj$11, $Numeric_denominator$12, $Numeric_div$13, $Numeric_divmod$14, $Numeric_fdiv$15, $Numeric_floor$16, $Numeric_i$17, $Numeric_imag$18, $Numeric_integer$ques$19, $Numeric_nonzero$ques$20, $Numeric_numerator$21, $Numeric_polar$22, $Numeric_quo$23, $Numeric_real$24, $Numeric_real$ques$25, $Numeric_rect$26, $Numeric_round$27, $Numeric_to_c$28, $Numeric_to_int$29, $Numeric_truncate$30, $Numeric_zero$ques$31, $Numeric_positive$ques$32, $Numeric_negative$ques$33, $Numeric_dup$34, $Numeric_clone$35, $Numeric_finite$ques$36, $Numeric_infinite$ques$37; - - - self.$include($$($nesting, 'Comparable')); - - Opal.def(self, '$coerce', $Numeric_coerce$1 = function $$coerce(other) { - var self = this; - - - if ($truthy(other['$instance_of?'](self.$class()))) { - return [other, self]}; - return [self.$Float(other), self.$Float(self)]; - }, $Numeric_coerce$1.$$arity = 1); - - Opal.def(self, '$__coerced__', $Numeric___coerced__$2 = function $$__coerced__(method, other) { - var $a, $b, self = this, a = nil, b = nil, $case = nil; - - if ($truthy(other['$respond_to?']("coerce"))) { - - $b = other.$coerce(self), $a = Opal.to_ary($b), (a = ($a[0] == null ? nil : $a[0])), (b = ($a[1] == null ? nil : $a[1])), $b; - return a.$__send__(method, b); - } else { - return (function() {$case = method; - if ("+"['$===']($case) || "-"['$===']($case) || "*"['$===']($case) || "/"['$===']($case) || "%"['$===']($case) || "&"['$===']($case) || "|"['$===']($case) || "^"['$===']($case) || "**"['$===']($case)) {return self.$raise($$($nesting, 'TypeError'), "" + (other.$class()) + " can't be coerced into Numeric")} - else if (">"['$===']($case) || ">="['$===']($case) || "<"['$===']($case) || "<="['$===']($case) || "<=>"['$===']($case)) {return self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (other.$class()) + " failed")} - else { return nil }})() - } - }, $Numeric___coerced__$2.$$arity = 2); - - Opal.def(self, '$<=>', $Numeric_$lt_eq_gt$3 = function(other) { - var self = this; - - - if ($truthy(self['$equal?'](other))) { - return 0}; - return nil; - }, $Numeric_$lt_eq_gt$3.$$arity = 1); - - Opal.def(self, '$+@', $Numeric_$plus$$4 = function() { - var self = this; - - return self - }, $Numeric_$plus$$4.$$arity = 0); - - Opal.def(self, '$-@', $Numeric_$minus$$5 = function() { - var self = this; - - return $rb_minus(0, self) - }, $Numeric_$minus$$5.$$arity = 0); - - Opal.def(self, '$%', $Numeric_$percent$6 = function(other) { - var self = this; - - return $rb_minus(self, $rb_times(other, self.$div(other))) - }, $Numeric_$percent$6.$$arity = 1); - - Opal.def(self, '$abs', $Numeric_abs$7 = function $$abs() { - var self = this; - - if ($rb_lt(self, 0)) { - return self['$-@']() - } else { - return self - } - }, $Numeric_abs$7.$$arity = 0); - - Opal.def(self, '$abs2', $Numeric_abs2$8 = function $$abs2() { - var self = this; - - return $rb_times(self, self) - }, $Numeric_abs2$8.$$arity = 0); - - Opal.def(self, '$angle', $Numeric_angle$9 = function $$angle() { - var self = this; - - if ($rb_lt(self, 0)) { - return $$$($$($nesting, 'Math'), 'PI') - } else { - return 0 - } - }, $Numeric_angle$9.$$arity = 0); - Opal.alias(self, "arg", "angle"); - - Opal.def(self, '$ceil', $Numeric_ceil$10 = function $$ceil(ndigits) { - var self = this; - - - - if (ndigits == null) { - ndigits = 0; - }; - return self.$to_f().$ceil(ndigits); - }, $Numeric_ceil$10.$$arity = -1); - - Opal.def(self, '$conj', $Numeric_conj$11 = function $$conj() { - var self = this; - - return self - }, $Numeric_conj$11.$$arity = 0); - Opal.alias(self, "conjugate", "conj"); - - Opal.def(self, '$denominator', $Numeric_denominator$12 = function $$denominator() { - var self = this; - - return self.$to_r().$denominator() - }, $Numeric_denominator$12.$$arity = 0); - - Opal.def(self, '$div', $Numeric_div$13 = function $$div(other) { - var self = this; - - - if (other['$=='](0)) { - self.$raise($$($nesting, 'ZeroDivisionError'), "divided by o")}; - return $rb_divide(self, other).$floor(); - }, $Numeric_div$13.$$arity = 1); - - Opal.def(self, '$divmod', $Numeric_divmod$14 = function $$divmod(other) { - var self = this; - - return [self.$div(other), self['$%'](other)] - }, $Numeric_divmod$14.$$arity = 1); - - Opal.def(self, '$fdiv', $Numeric_fdiv$15 = function $$fdiv(other) { - var self = this; - - return $rb_divide(self.$to_f(), other) - }, $Numeric_fdiv$15.$$arity = 1); - - Opal.def(self, '$floor', $Numeric_floor$16 = function $$floor(ndigits) { - var self = this; - - - - if (ndigits == null) { - ndigits = 0; - }; - return self.$to_f().$floor(ndigits); - }, $Numeric_floor$16.$$arity = -1); - - Opal.def(self, '$i', $Numeric_i$17 = function $$i() { - var self = this; - - return self.$Complex(0, self) - }, $Numeric_i$17.$$arity = 0); - - Opal.def(self, '$imag', $Numeric_imag$18 = function $$imag() { - var self = this; - - return 0 - }, $Numeric_imag$18.$$arity = 0); - Opal.alias(self, "imaginary", "imag"); - - Opal.def(self, '$integer?', $Numeric_integer$ques$19 = function() { - var self = this; - - return false - }, $Numeric_integer$ques$19.$$arity = 0); - Opal.alias(self, "magnitude", "abs"); - Opal.alias(self, "modulo", "%"); - - Opal.def(self, '$nonzero?', $Numeric_nonzero$ques$20 = function() { - var self = this; - - if ($truthy(self['$zero?']())) { - return nil - } else { - return self - } - }, $Numeric_nonzero$ques$20.$$arity = 0); - - Opal.def(self, '$numerator', $Numeric_numerator$21 = function $$numerator() { - var self = this; - - return self.$to_r().$numerator() - }, $Numeric_numerator$21.$$arity = 0); - Opal.alias(self, "phase", "arg"); - - Opal.def(self, '$polar', $Numeric_polar$22 = function $$polar() { - var self = this; - - return [self.$abs(), self.$arg()] - }, $Numeric_polar$22.$$arity = 0); - - Opal.def(self, '$quo', $Numeric_quo$23 = function $$quo(other) { - var self = this; - - return $rb_divide($$($nesting, 'Opal')['$coerce_to!'](self, $$($nesting, 'Rational'), "to_r"), other) - }, $Numeric_quo$23.$$arity = 1); - - Opal.def(self, '$real', $Numeric_real$24 = function $$real() { - var self = this; - - return self - }, $Numeric_real$24.$$arity = 0); - - Opal.def(self, '$real?', $Numeric_real$ques$25 = function() { - var self = this; - - return true - }, $Numeric_real$ques$25.$$arity = 0); - - Opal.def(self, '$rect', $Numeric_rect$26 = function $$rect() { - var self = this; - - return [self, 0] - }, $Numeric_rect$26.$$arity = 0); - Opal.alias(self, "rectangular", "rect"); - - Opal.def(self, '$round', $Numeric_round$27 = function $$round(digits) { - var self = this; - - - ; - return self.$to_f().$round(digits); - }, $Numeric_round$27.$$arity = -1); - - Opal.def(self, '$to_c', $Numeric_to_c$28 = function $$to_c() { - var self = this; - - return self.$Complex(self, 0) - }, $Numeric_to_c$28.$$arity = 0); - - Opal.def(self, '$to_int', $Numeric_to_int$29 = function $$to_int() { - var self = this; - - return self.$to_i() - }, $Numeric_to_int$29.$$arity = 0); - - Opal.def(self, '$truncate', $Numeric_truncate$30 = function $$truncate(ndigits) { - var self = this; - - - - if (ndigits == null) { - ndigits = 0; - }; - return self.$to_f().$truncate(ndigits); - }, $Numeric_truncate$30.$$arity = -1); - - Opal.def(self, '$zero?', $Numeric_zero$ques$31 = function() { - var self = this; - - return self['$=='](0) - }, $Numeric_zero$ques$31.$$arity = 0); - - Opal.def(self, '$positive?', $Numeric_positive$ques$32 = function() { - var self = this; - - return $rb_gt(self, 0) - }, $Numeric_positive$ques$32.$$arity = 0); - - Opal.def(self, '$negative?', $Numeric_negative$ques$33 = function() { - var self = this; - - return $rb_lt(self, 0) - }, $Numeric_negative$ques$33.$$arity = 0); - - Opal.def(self, '$dup', $Numeric_dup$34 = function $$dup() { - var self = this; - - return self - }, $Numeric_dup$34.$$arity = 0); - - Opal.def(self, '$clone', $Numeric_clone$35 = function $$clone($kwargs) { - var freeze, self = this; - - - - if ($kwargs == null) { - $kwargs = $hash2([], {}); - } else if (!$kwargs.$$is_hash) { - throw Opal.ArgumentError.$new('expected kwargs'); - }; - - freeze = $kwargs.$$smap["freeze"]; - if (freeze == null) { - freeze = true - }; - return self; - }, $Numeric_clone$35.$$arity = -1); - - Opal.def(self, '$finite?', $Numeric_finite$ques$36 = function() { - var self = this; - - return true - }, $Numeric_finite$ques$36.$$arity = 0); - return (Opal.def(self, '$infinite?', $Numeric_infinite$ques$37 = function() { - var self = this; - - return nil - }, $Numeric_infinite$ques$37.$$arity = 0), nil) && 'infinite?'; - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/array"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send, $gvars = Opal.gvars; - - Opal.add_stubs(['$require', '$include', '$to_a', '$warn', '$raise', '$replace', '$respond_to?', '$to_ary', '$coerce_to', '$coerce_to?', '$===', '$join', '$to_str', '$class', '$hash', '$<=>', '$==', '$object_id', '$inspect', '$enum_for', '$bsearch_index', '$to_proc', '$nil?', '$coerce_to!', '$>', '$*', '$enumerator_size', '$empty?', '$size', '$map', '$equal?', '$dup', '$each', '$[]', '$dig', '$eql?', '$length', '$begin', '$end', '$exclude_end?', '$flatten', '$__id__', '$to_s', '$new', '$max', '$min', '$!', '$>=', '$**', '$delete_if', '$reverse', '$rotate', '$rand', '$at', '$keep_if', '$shuffle!', '$<', '$sort', '$sort_by', '$!=', '$times', '$[]=', '$-', '$<<', '$values', '$is_a?', '$last', '$first', '$upto', '$reject', '$pristine', '$singleton_class']); - - self.$require("corelib/enumerable"); - self.$require("corelib/numeric"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Array'); - - var $nesting = [self].concat($parent_nesting), $Array_$$$1, $Array_initialize$2, $Array_try_convert$3, $Array_$$4, $Array_$$5, $Array_$$6, $Array_$plus$7, $Array_$minus$8, $Array_$lt$lt$9, $Array_$lt_eq_gt$10, $Array_$eq_eq$11, $Array_$$$12, $Array_$$$eq$13, $Array_any$ques$14, $Array_assoc$15, $Array_at$16, $Array_bsearch_index$17, $Array_bsearch$18, $Array_cycle$19, $Array_clear$21, $Array_count$22, $Array_initialize_copy$23, $Array_collect$24, $Array_collect$excl$26, $Array_combination$28, $Array_repeated_combination$30, $Array_compact$32, $Array_compact$excl$33, $Array_concat$34, $Array_delete$37, $Array_delete_at$38, $Array_delete_if$39, $Array_dig$41, $Array_drop$42, $Array_dup$43, $Array_each$44, $Array_each_index$46, $Array_empty$ques$48, $Array_eql$ques$49, $Array_fetch$50, $Array_fill$51, $Array_first$52, $Array_flatten$53, $Array_flatten$excl$54, $Array_hash$55, $Array_include$ques$56, $Array_index$57, $Array_insert$58, $Array_inspect$59, $Array_join$60, $Array_keep_if$61, $Array_last$63, $Array_length$64, $Array_max$65, $Array_min$66, $Array_permutation$67, $Array_repeated_permutation$69, $Array_pop$71, $Array_product$72, $Array_push$73, $Array_rassoc$74, $Array_reject$75, $Array_reject$excl$77, $Array_replace$79, $Array_reverse$80, $Array_reverse$excl$81, $Array_reverse_each$82, $Array_rindex$84, $Array_rotate$85, $Array_rotate$excl$86, $Array_sample$89, $Array_select$90, $Array_select$excl$92, $Array_shift$94, $Array_shuffle$95, $Array_shuffle$excl$96, $Array_slice$excl$97, $Array_sort$98, $Array_sort$excl$99, $Array_sort_by$excl$100, $Array_take$102, $Array_take_while$103, $Array_to_a$104, $Array_to_h$105, $Array_transpose$106, $Array_uniq$109, $Array_uniq$excl$110, $Array_unshift$111, $Array_values_at$112, $Array_zip$115, $Array_inherited$116, $Array_instance_variables$117, $Array_pack$119; - - - self.$include($$($nesting, 'Enumerable')); - Opal.defineProperty(self.$$prototype, '$$is_array', true); - - function toArraySubclass(obj, klass) { - if (klass.$$name === Opal.Array) { - return obj; - } else { - return klass.$allocate().$replace((obj).$to_a()); - } - } - ; - Opal.defs(self, '$[]', $Array_$$$1 = function($a) { - var $post_args, objects, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - objects = $post_args;; - return toArraySubclass(objects, self);; - }, $Array_$$$1.$$arity = -1); - - Opal.def(self, '$initialize', $Array_initialize$2 = function $$initialize(size, obj) { - var $iter = $Array_initialize$2.$$p, block = $iter || nil, self = this; - - if ($iter) $Array_initialize$2.$$p = null; - - - if ($iter) $Array_initialize$2.$$p = null;; - - if (size == null) { - size = nil; - }; - - if (obj == null) { - obj = nil; - }; - - if (obj !== nil && block !== nil) { - self.$warn("warning: block supersedes default value argument") - } - - if (size > $$$($$($nesting, 'Integer'), 'MAX')) { - self.$raise($$($nesting, 'ArgumentError'), "array size too big") - } - - if (arguments.length > 2) { - self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " for 0..2)") - } - - if (arguments.length === 0) { - self.splice(0, self.length); - return self; - } - - if (arguments.length === 1) { - if (size.$$is_array) { - self.$replace(size.$to_a()) - return self; - } else if (size['$respond_to?']("to_ary")) { - self.$replace(size.$to_ary()) - return self; - } - } - - size = $$($nesting, 'Opal').$coerce_to(size, $$($nesting, 'Integer'), "to_int") - - if (size < 0) { - self.$raise($$($nesting, 'ArgumentError'), "negative array size") - } - - self.splice(0, self.length); - var i, value; - - if (block === nil) { - for (i = 0; i < size; i++) { - self.push(obj); - } - } - else { - for (i = 0, value; i < size; i++) { - value = block(i); - self[i] = value; - } - } - - return self; - ; - }, $Array_initialize$2.$$arity = -1); - Opal.defs(self, '$try_convert', $Array_try_convert$3 = function $$try_convert(obj) { - var self = this; - - return $$($nesting, 'Opal')['$coerce_to?'](obj, $$($nesting, 'Array'), "to_ary") - }, $Array_try_convert$3.$$arity = 1); - - Opal.def(self, '$&', $Array_$$4 = function(other) { - var self = this; - - - other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) { - return other.$to_a() - } else { - return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), "to_ary").$to_a() - }; return nil; })(); - - var result = [], hash = $hash2([], {}), i, length, item; - - for (i = 0, length = other.length; i < length; i++) { - Opal.hash_put(hash, other[i], true); - } - - for (i = 0, length = self.length; i < length; i++) { - item = self[i]; - if (Opal.hash_delete(hash, item) !== undefined) { - result.push(item); - } - } - - return result; - ; - }, $Array_$$4.$$arity = 1); - - Opal.def(self, '$|', $Array_$$5 = function(other) { - var self = this; - - - other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) { - return other.$to_a() - } else { - return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), "to_ary").$to_a() - }; return nil; })(); - - var hash = $hash2([], {}), i, length, item; - - for (i = 0, length = self.length; i < length; i++) { - Opal.hash_put(hash, self[i], true); - } - - for (i = 0, length = other.length; i < length; i++) { - Opal.hash_put(hash, other[i], true); - } - - return hash.$keys(); - ; - }, $Array_$$5.$$arity = 1); - - Opal.def(self, '$*', $Array_$$6 = function(other) { - var self = this; - - - if ($truthy(other['$respond_to?']("to_str"))) { - return self.$join(other.$to_str())}; - other = $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Integer'), "to_int"); - if ($truthy(other < 0)) { - self.$raise($$($nesting, 'ArgumentError'), "negative argument")}; - - var result = [], - converted = self.$to_a(); - - for (var i = 0; i < other; i++) { - result = result.concat(converted); - } - - return toArraySubclass(result, self.$class()); - ; - }, $Array_$$6.$$arity = 1); - - Opal.def(self, '$+', $Array_$plus$7 = function(other) { - var self = this; - - - other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) { - return other.$to_a() - } else { - return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), "to_ary").$to_a() - }; return nil; })(); - return self.concat(other);; - }, $Array_$plus$7.$$arity = 1); - - Opal.def(self, '$-', $Array_$minus$8 = function(other) { - var self = this; - - - other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) { - return other.$to_a() - } else { - return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), "to_ary").$to_a() - }; return nil; })(); - if ($truthy(self.length === 0)) { - return []}; - if ($truthy(other.length === 0)) { - return self.slice()}; - - var result = [], hash = $hash2([], {}), i, length, item; - - for (i = 0, length = other.length; i < length; i++) { - Opal.hash_put(hash, other[i], true); - } - - for (i = 0, length = self.length; i < length; i++) { - item = self[i]; - if (Opal.hash_get(hash, item) === undefined) { - result.push(item); - } - } - - return result; - ; - }, $Array_$minus$8.$$arity = 1); - - Opal.def(self, '$<<', $Array_$lt$lt$9 = function(object) { - var self = this; - - - self.push(object); - return self; - }, $Array_$lt$lt$9.$$arity = 1); - - Opal.def(self, '$<=>', $Array_$lt_eq_gt$10 = function(other) { - var self = this; - - - if ($truthy($$($nesting, 'Array')['$==='](other))) { - other = other.$to_a() - } else if ($truthy(other['$respond_to?']("to_ary"))) { - other = other.$to_ary().$to_a() - } else { - return nil - }; - - if (self.$hash() === other.$hash()) { - return 0; - } - - var count = Math.min(self.length, other.length); - - for (var i = 0; i < count; i++) { - var tmp = (self[i])['$<=>'](other[i]); - - if (tmp !== 0) { - return tmp; - } - } - - return (self.length)['$<=>'](other.length); - ; - }, $Array_$lt_eq_gt$10.$$arity = 1); - - Opal.def(self, '$==', $Array_$eq_eq$11 = function(other) { - var self = this; - - - var recursed = {}; - - function _eqeq(array, other) { - var i, length, a, b; - - if (array === other) - return true; - - if (!other.$$is_array) { - if ($$($nesting, 'Opal')['$respond_to?'](other, "to_ary")) { - return (other)['$=='](array); - } else { - return false; - } - } - - if (array.$$constructor !== Array) - array = (array).$to_a(); - if (other.$$constructor !== Array) - other = (other).$to_a(); - - if (array.length !== other.length) { - return false; - } - - recursed[(array).$object_id()] = true; - - for (i = 0, length = array.length; i < length; i++) { - a = array[i]; - b = other[i]; - if (a.$$is_array) { - if (b.$$is_array && b.length !== a.length) { - return false; - } - if (!recursed.hasOwnProperty((a).$object_id())) { - if (!_eqeq(a, b)) { - return false; - } - } - } else { - if (!(a)['$=='](b)) { - return false; - } - } - } - - return true; - } - - return _eqeq(self, other); - - }, $Array_$eq_eq$11.$$arity = 1); - - function $array_slice_range(self, index) { - var size = self.length, - exclude, from, to, result; - - exclude = index.excl; - from = Opal.Opal.$coerce_to(index.begin, Opal.Integer, 'to_int'); - to = Opal.Opal.$coerce_to(index.end, Opal.Integer, 'to_int'); - - if (from < 0) { - from += size; - - if (from < 0) { - return nil; - } - } - - if (from > size) { - return nil; - } - - if (to < 0) { - to += size; - - if (to < 0) { - return []; - } - } - - if (!exclude) { - to += 1; - } - - result = self.slice(from, to); - return toArraySubclass(result, self.$class()); - } - - function $array_slice_index_length(self, index, length) { - var size = self.length, - exclude, from, to, result; - - index = Opal.Opal.$coerce_to(index, Opal.Integer, 'to_int'); - - if (index < 0) { - index += size; - - if (index < 0) { - return nil; - } - } - - if (length === undefined) { - if (index >= size || index < 0) { - return nil; - } - - return self[index]; - } - else { - length = Opal.Opal.$coerce_to(length, Opal.Integer, 'to_int'); - - if (length < 0 || index > size || index < 0) { - return nil; - } - - result = self.slice(index, index + length); - } - return toArraySubclass(result, self.$class()); - } - ; - - Opal.def(self, '$[]', $Array_$$$12 = function(index, length) { - var self = this; - - - ; - - if (index.$$is_range) { - return $array_slice_range(self, index); - } - else { - return $array_slice_index_length(self, index, length); - } - ; - }, $Array_$$$12.$$arity = -2); - - Opal.def(self, '$[]=', $Array_$$$eq$13 = function(index, value, extra) { - var self = this, data = nil, length = nil; - - - ; - var i, size = self.length;; - if ($truthy($$($nesting, 'Range')['$==='](index))) { - - data = (function() {if ($truthy($$($nesting, 'Array')['$==='](value))) { - return value.$to_a() - } else if ($truthy(value['$respond_to?']("to_ary"))) { - return value.$to_ary().$to_a() - } else { - return [value] - }; return nil; })(); - - var exclude = index.excl, - from = $$($nesting, 'Opal').$coerce_to(index.begin, $$($nesting, 'Integer'), "to_int"), - to = $$($nesting, 'Opal').$coerce_to(index.end, $$($nesting, 'Integer'), "to_int"); - - if (from < 0) { - from += size; - - if (from < 0) { - self.$raise($$($nesting, 'RangeError'), "" + (index.$inspect()) + " out of range"); - } - } - - if (to < 0) { - to += size; - } - - if (!exclude) { - to += 1; - } - - if (from > size) { - for (i = size; i < from; i++) { - self[i] = nil; - } - } - - if (to < 0) { - self.splice.apply(self, [from, 0].concat(data)); - } - else { - self.splice.apply(self, [from, to - from].concat(data)); - } - - return value; - ; - } else { - - if ($truthy(extra === undefined)) { - length = 1 - } else { - - length = value; - value = extra; - data = (function() {if ($truthy($$($nesting, 'Array')['$==='](value))) { - return value.$to_a() - } else if ($truthy(value['$respond_to?']("to_ary"))) { - return value.$to_ary().$to_a() - } else { - return [value] - }; return nil; })(); - }; - - var old; - - index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); - length = $$($nesting, 'Opal').$coerce_to(length, $$($nesting, 'Integer'), "to_int"); - - if (index < 0) { - old = index; - index += size; - - if (index < 0) { - self.$raise($$($nesting, 'IndexError'), "" + "index " + (old) + " too small for array; minimum " + (-self.length)); - } - } - - if (length < 0) { - self.$raise($$($nesting, 'IndexError'), "" + "negative length (" + (length) + ")") - } - - if (index > size) { - for (i = size; i < index; i++) { - self[i] = nil; - } - } - - if (extra === undefined) { - self[index] = value; - } - else { - self.splice.apply(self, [index, length].concat(data)); - } - - return value; - ; - }; - }, $Array_$$$eq$13.$$arity = -3); - - Opal.def(self, '$any?', $Array_any$ques$14 = function(pattern) { - var $iter = $Array_any$ques$14.$$p, block = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Array_any$ques$14.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - - if ($iter) $Array_any$ques$14.$$p = null;; - ; - if (self.length === 0) return false; - return $send(self, Opal.find_super_dispatcher(self, 'any?', $Array_any$ques$14, false), $zuper, $iter); - }, $Array_any$ques$14.$$arity = -1); - - Opal.def(self, '$assoc', $Array_assoc$15 = function $$assoc(object) { - var self = this; - - - for (var i = 0, length = self.length, item; i < length; i++) { - if (item = self[i], item.length && (item[0])['$=='](object)) { - return item; - } - } - - return nil; - - }, $Array_assoc$15.$$arity = 1); - - Opal.def(self, '$at', $Array_at$16 = function $$at(index) { - var self = this; - - - index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); - - if (index < 0) { - index += self.length; - } - - if (index < 0 || index >= self.length) { - return nil; - } - - return self[index]; - ; - }, $Array_at$16.$$arity = 1); - - Opal.def(self, '$bsearch_index', $Array_bsearch_index$17 = function $$bsearch_index() { - var $iter = $Array_bsearch_index$17.$$p, block = $iter || nil, self = this; - - if ($iter) $Array_bsearch_index$17.$$p = null; - - - if ($iter) $Array_bsearch_index$17.$$p = null;; - if ((block !== nil)) { - } else { - return self.$enum_for("bsearch_index") - }; - - var min = 0, - max = self.length, - mid, - val, - ret, - smaller = false, - satisfied = nil; - - while (min < max) { - mid = min + Math.floor((max - min) / 2); - val = self[mid]; - ret = Opal.yield1(block, val); - - if (ret === true) { - satisfied = mid; - smaller = true; - } - else if (ret === false || ret === nil) { - smaller = false; - } - else if (ret.$$is_number) { - if (ret === 0) { return mid; } - smaller = (ret < 0); - } - else { - self.$raise($$($nesting, 'TypeError'), "" + "wrong argument type " + ((ret).$class()) + " (must be numeric, true, false or nil)") - } - - if (smaller) { max = mid; } else { min = mid + 1; } - } - - return satisfied; - ; - }, $Array_bsearch_index$17.$$arity = 0); - - Opal.def(self, '$bsearch', $Array_bsearch$18 = function $$bsearch() { - var $iter = $Array_bsearch$18.$$p, block = $iter || nil, self = this, index = nil; - - if ($iter) $Array_bsearch$18.$$p = null; - - - if ($iter) $Array_bsearch$18.$$p = null;; - if ((block !== nil)) { - } else { - return self.$enum_for("bsearch") - }; - index = $send(self, 'bsearch_index', [], block.$to_proc()); - - if (index != null && index.$$is_number) { - return self[index]; - } else { - return index; - } - ; - }, $Array_bsearch$18.$$arity = 0); - - Opal.def(self, '$cycle', $Array_cycle$19 = function $$cycle(n) { - var $iter = $Array_cycle$19.$$p, block = $iter || nil, $$20, $a, self = this; - - if ($iter) $Array_cycle$19.$$p = null; - - - if ($iter) $Array_cycle$19.$$p = null;; - - if (n == null) { - n = nil; - }; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["cycle", n], ($$20 = function(){var self = $$20.$$s || this; - - if ($truthy(n['$nil?']())) { - return $$$($$($nesting, 'Float'), 'INFINITY') - } else { - - n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); - if ($truthy($rb_gt(n, 0))) { - return $rb_times(self.$enumerator_size(), n) - } else { - return 0 - }; - }}, $$20.$$s = self, $$20.$$arity = 0, $$20)) - }; - if ($truthy(($truthy($a = self['$empty?']()) ? $a : n['$=='](0)))) { - return nil}; - - var i, length, value; - - if (n === nil) { - while (true) { - for (i = 0, length = self.length; i < length; i++) { - value = Opal.yield1(block, self[i]); - } - } - } - else { - n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); - if (n <= 0) { - return self; - } - - while (n > 0) { - for (i = 0, length = self.length; i < length; i++) { - value = Opal.yield1(block, self[i]); - } - - n--; - } - } - ; - return self; - }, $Array_cycle$19.$$arity = -1); - - Opal.def(self, '$clear', $Array_clear$21 = function $$clear() { - var self = this; - - - self.splice(0, self.length); - return self; - }, $Array_clear$21.$$arity = 0); - - Opal.def(self, '$count', $Array_count$22 = function $$count(object) { - var $iter = $Array_count$22.$$p, block = $iter || nil, $a, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Array_count$22.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - - if ($iter) $Array_count$22.$$p = null;; - - if (object == null) { - object = nil; - }; - if ($truthy(($truthy($a = object) ? $a : block))) { - return $send(self, Opal.find_super_dispatcher(self, 'count', $Array_count$22, false), $zuper, $iter) - } else { - return self.$size() - }; - }, $Array_count$22.$$arity = -1); - - Opal.def(self, '$initialize_copy', $Array_initialize_copy$23 = function $$initialize_copy(other) { - var self = this; - - return self.$replace(other) - }, $Array_initialize_copy$23.$$arity = 1); - - Opal.def(self, '$collect', $Array_collect$24 = function $$collect() { - var $iter = $Array_collect$24.$$p, block = $iter || nil, $$25, self = this; - - if ($iter) $Array_collect$24.$$p = null; - - - if ($iter) $Array_collect$24.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["collect"], ($$25 = function(){var self = $$25.$$s || this; - - return self.$size()}, $$25.$$s = self, $$25.$$arity = 0, $$25)) - }; - - var result = []; - - for (var i = 0, length = self.length; i < length; i++) { - var value = Opal.yield1(block, self[i]); - result.push(value); - } - - return result; - ; - }, $Array_collect$24.$$arity = 0); - - Opal.def(self, '$collect!', $Array_collect$excl$26 = function() { - var $iter = $Array_collect$excl$26.$$p, block = $iter || nil, $$27, self = this; - - if ($iter) $Array_collect$excl$26.$$p = null; - - - if ($iter) $Array_collect$excl$26.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["collect!"], ($$27 = function(){var self = $$27.$$s || this; - - return self.$size()}, $$27.$$s = self, $$27.$$arity = 0, $$27)) - }; - - for (var i = 0, length = self.length; i < length; i++) { - var value = Opal.yield1(block, self[i]); - self[i] = value; - } - ; - return self; - }, $Array_collect$excl$26.$$arity = 0); - - function binomial_coefficient(n, k) { - if (n === k || k === 0) { - return 1; - } - - if (k > 0 && n > k) { - return binomial_coefficient(n - 1, k - 1) + binomial_coefficient(n - 1, k); - } - - return 0; - } - ; - - Opal.def(self, '$combination', $Array_combination$28 = function $$combination(n) { - var $$29, $iter = $Array_combination$28.$$p, $yield = $iter || nil, self = this, num = nil; - - if ($iter) $Array_combination$28.$$p = null; - - num = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); - if (($yield !== nil)) { - } else { - return $send(self, 'enum_for', ["combination", num], ($$29 = function(){var self = $$29.$$s || this; - - return binomial_coefficient(self.length, num)}, $$29.$$s = self, $$29.$$arity = 0, $$29)) - }; - - var i, length, stack, chosen, lev, done, next; - - if (num === 0) { - Opal.yield1($yield, []) - } else if (num === 1) { - for (i = 0, length = self.length; i < length; i++) { - Opal.yield1($yield, [self[i]]) - } - } - else if (num === self.length) { - Opal.yield1($yield, self.slice()) - } - else if (num >= 0 && num < self.length) { - stack = []; - for (i = 0; i <= num + 1; i++) { - stack.push(0); - } - - chosen = []; - lev = 0; - done = false; - stack[0] = -1; - - while (!done) { - chosen[lev] = self[stack[lev+1]]; - while (lev < num - 1) { - lev++; - next = stack[lev+1] = stack[lev] + 1; - chosen[lev] = self[next]; - } - Opal.yield1($yield, chosen.slice()) - lev++; - do { - done = (lev === 0); - stack[lev]++; - lev--; - } while ( stack[lev+1] + num === self.length + lev + 1 ); - } - } - ; - return self; - }, $Array_combination$28.$$arity = 1); - - Opal.def(self, '$repeated_combination', $Array_repeated_combination$30 = function $$repeated_combination(n) { - var $$31, $iter = $Array_repeated_combination$30.$$p, $yield = $iter || nil, self = this, num = nil; - - if ($iter) $Array_repeated_combination$30.$$p = null; - - num = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); - if (($yield !== nil)) { - } else { - return $send(self, 'enum_for', ["repeated_combination", num], ($$31 = function(){var self = $$31.$$s || this; - - return binomial_coefficient(self.length + num - 1, num);}, $$31.$$s = self, $$31.$$arity = 0, $$31)) - }; - - function iterate(max, from, buffer, self) { - if (buffer.length == max) { - var copy = buffer.slice(); - Opal.yield1($yield, copy) - return; - } - for (var i = from; i < self.length; i++) { - buffer.push(self[i]); - iterate(max, i, buffer, self); - buffer.pop(); - } - } - - if (num >= 0) { - iterate(num, 0, [], self); - } - ; - return self; - }, $Array_repeated_combination$30.$$arity = 1); - - Opal.def(self, '$compact', $Array_compact$32 = function $$compact() { - var self = this; - - - var result = []; - - for (var i = 0, length = self.length, item; i < length; i++) { - if ((item = self[i]) !== nil) { - result.push(item); - } - } - - return result; - - }, $Array_compact$32.$$arity = 0); - - Opal.def(self, '$compact!', $Array_compact$excl$33 = function() { - var self = this; - - - var original = self.length; - - for (var i = 0, length = self.length; i < length; i++) { - if (self[i] === nil) { - self.splice(i, 1); - - length--; - i--; - } - } - - return self.length === original ? nil : self; - - }, $Array_compact$excl$33.$$arity = 0); - - Opal.def(self, '$concat', $Array_concat$34 = function $$concat($a) { - var $post_args, others, $$35, $$36, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - others = $post_args;; - others = $send(others, 'map', [], ($$35 = function(other){var self = $$35.$$s || this; - - - - if (other == null) { - other = nil; - }; - other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) { - return other.$to_a() - } else { - return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), "to_ary").$to_a() - }; return nil; })(); - if ($truthy(other['$equal?'](self))) { - other = other.$dup()}; - return other;}, $$35.$$s = self, $$35.$$arity = 1, $$35)); - $send(others, 'each', [], ($$36 = function(other){var self = $$36.$$s || this; - - - - if (other == null) { - other = nil; - }; - - for (var i = 0, length = other.length; i < length; i++) { - self.push(other[i]); - } - ;}, $$36.$$s = self, $$36.$$arity = 1, $$36)); - return self; - }, $Array_concat$34.$$arity = -1); - - Opal.def(self, '$delete', $Array_delete$37 = function(object) { - var $iter = $Array_delete$37.$$p, $yield = $iter || nil, self = this; - - if ($iter) $Array_delete$37.$$p = null; - - var original = self.length; - - for (var i = 0, length = original; i < length; i++) { - if ((self[i])['$=='](object)) { - self.splice(i, 1); - - length--; - i--; - } - } - - if (self.length === original) { - if (($yield !== nil)) { - return Opal.yieldX($yield, []); - } - return nil; - } - return object; - - }, $Array_delete$37.$$arity = 1); - - Opal.def(self, '$delete_at', $Array_delete_at$38 = function $$delete_at(index) { - var self = this; - - - index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); - - if (index < 0) { - index += self.length; - } - - if (index < 0 || index >= self.length) { - return nil; - } - - var result = self[index]; - - self.splice(index, 1); - - return result; - - }, $Array_delete_at$38.$$arity = 1); - - Opal.def(self, '$delete_if', $Array_delete_if$39 = function $$delete_if() { - var $iter = $Array_delete_if$39.$$p, block = $iter || nil, $$40, self = this; - - if ($iter) $Array_delete_if$39.$$p = null; - - - if ($iter) $Array_delete_if$39.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["delete_if"], ($$40 = function(){var self = $$40.$$s || this; - - return self.$size()}, $$40.$$s = self, $$40.$$arity = 0, $$40)) - }; - - for (var i = 0, length = self.length, value; i < length; i++) { - value = block(self[i]); - - if (value !== false && value !== nil) { - self.splice(i, 1); - - length--; - i--; - } - } - ; - return self; - }, $Array_delete_if$39.$$arity = 0); - - Opal.def(self, '$dig', $Array_dig$41 = function $$dig(idx, $a) { - var $post_args, idxs, self = this, item = nil; - - - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - idxs = $post_args;; - item = self['$[]'](idx); - - if (item === nil || idxs.length === 0) { - return item; - } - ; - if ($truthy(item['$respond_to?']("dig"))) { - } else { - self.$raise($$($nesting, 'TypeError'), "" + (item.$class()) + " does not have #dig method") - }; - return $send(item, 'dig', Opal.to_a(idxs)); - }, $Array_dig$41.$$arity = -2); - - Opal.def(self, '$drop', $Array_drop$42 = function $$drop(number) { - var self = this; - - - if (number < 0) { - self.$raise($$($nesting, 'ArgumentError')) - } - - return self.slice(number); - - }, $Array_drop$42.$$arity = 1); - - Opal.def(self, '$dup', $Array_dup$43 = function $$dup() { - var $iter = $Array_dup$43.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Array_dup$43.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - - if (self.$$class === Opal.Array && - self.$$class.$allocate.$$pristine && - self.$copy_instance_variables.$$pristine && - self.$initialize_dup.$$pristine) { - return self.slice(0); - } - ; - return $send(self, Opal.find_super_dispatcher(self, 'dup', $Array_dup$43, false), $zuper, $iter); - }, $Array_dup$43.$$arity = 0); - - Opal.def(self, '$each', $Array_each$44 = function $$each() { - var $iter = $Array_each$44.$$p, block = $iter || nil, $$45, self = this; - - if ($iter) $Array_each$44.$$p = null; - - - if ($iter) $Array_each$44.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["each"], ($$45 = function(){var self = $$45.$$s || this; - - return self.$size()}, $$45.$$s = self, $$45.$$arity = 0, $$45)) - }; - - for (var i = 0, length = self.length; i < length; i++) { - var value = Opal.yield1(block, self[i]); - } - ; - return self; - }, $Array_each$44.$$arity = 0); - - Opal.def(self, '$each_index', $Array_each_index$46 = function $$each_index() { - var $iter = $Array_each_index$46.$$p, block = $iter || nil, $$47, self = this; - - if ($iter) $Array_each_index$46.$$p = null; - - - if ($iter) $Array_each_index$46.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["each_index"], ($$47 = function(){var self = $$47.$$s || this; - - return self.$size()}, $$47.$$s = self, $$47.$$arity = 0, $$47)) - }; - - for (var i = 0, length = self.length; i < length; i++) { - var value = Opal.yield1(block, i); - } - ; - return self; - }, $Array_each_index$46.$$arity = 0); - - Opal.def(self, '$empty?', $Array_empty$ques$48 = function() { - var self = this; - - return self.length === 0; - }, $Array_empty$ques$48.$$arity = 0); - - Opal.def(self, '$eql?', $Array_eql$ques$49 = function(other) { - var self = this; - - - var recursed = {}; - - function _eql(array, other) { - var i, length, a, b; - - if (!other.$$is_array) { - return false; - } - - other = other.$to_a(); - - if (array.length !== other.length) { - return false; - } - - recursed[(array).$object_id()] = true; - - for (i = 0, length = array.length; i < length; i++) { - a = array[i]; - b = other[i]; - if (a.$$is_array) { - if (b.$$is_array && b.length !== a.length) { - return false; - } - if (!recursed.hasOwnProperty((a).$object_id())) { - if (!_eql(a, b)) { - return false; - } - } - } else { - if (!(a)['$eql?'](b)) { - return false; - } - } - } - - return true; - } - - return _eql(self, other); - - }, $Array_eql$ques$49.$$arity = 1); - - Opal.def(self, '$fetch', $Array_fetch$50 = function $$fetch(index, defaults) { - var $iter = $Array_fetch$50.$$p, block = $iter || nil, self = this; - - if ($iter) $Array_fetch$50.$$p = null; - - - if ($iter) $Array_fetch$50.$$p = null;; - ; - - var original = index; - - index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); - - if (index < 0) { - index += self.length; - } - - if (index >= 0 && index < self.length) { - return self[index]; - } - - if (block !== nil && defaults != null) { - self.$warn("warning: block supersedes default value argument") - } - - if (block !== nil) { - return block(original); - } - - if (defaults != null) { - return defaults; - } - - if (self.length === 0) { - self.$raise($$($nesting, 'IndexError'), "" + "index " + (original) + " outside of array bounds: 0...0") - } - else { - self.$raise($$($nesting, 'IndexError'), "" + "index " + (original) + " outside of array bounds: -" + (self.length) + "..." + (self.length)); - } - ; - }, $Array_fetch$50.$$arity = -2); - - Opal.def(self, '$fill', $Array_fill$51 = function $$fill($a) { - var $iter = $Array_fill$51.$$p, block = $iter || nil, $post_args, args, $b, $c, self = this, one = nil, two = nil, obj = nil, left = nil, right = nil; - - if ($iter) $Array_fill$51.$$p = null; - - - if ($iter) $Array_fill$51.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - var i, length, value;; - if ($truthy(block)) { - - if ($truthy(args.length > 2)) { - self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (args.$length()) + " for 0..2)")}; - $c = args, $b = Opal.to_ary($c), (one = ($b[0] == null ? nil : $b[0])), (two = ($b[1] == null ? nil : $b[1])), $c; - } else { - - if ($truthy(args.length == 0)) { - self.$raise($$($nesting, 'ArgumentError'), "wrong number of arguments (0 for 1..3)") - } else if ($truthy(args.length > 3)) { - self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (args.$length()) + " for 1..3)")}; - $c = args, $b = Opal.to_ary($c), (obj = ($b[0] == null ? nil : $b[0])), (one = ($b[1] == null ? nil : $b[1])), (two = ($b[2] == null ? nil : $b[2])), $c; - }; - if ($truthy($$($nesting, 'Range')['$==='](one))) { - - if ($truthy(two)) { - self.$raise($$($nesting, 'TypeError'), "length invalid with range")}; - left = $$($nesting, 'Opal').$coerce_to(one.$begin(), $$($nesting, 'Integer'), "to_int"); - if ($truthy(left < 0)) { - left += this.length}; - if ($truthy(left < 0)) { - self.$raise($$($nesting, 'RangeError'), "" + (one.$inspect()) + " out of range")}; - right = $$($nesting, 'Opal').$coerce_to(one.$end(), $$($nesting, 'Integer'), "to_int"); - if ($truthy(right < 0)) { - right += this.length}; - if ($truthy(one['$exclude_end?']())) { - } else { - right += 1 - }; - if ($truthy(right <= left)) { - return self}; - } else if ($truthy(one)) { - - left = $$($nesting, 'Opal').$coerce_to(one, $$($nesting, 'Integer'), "to_int"); - if ($truthy(left < 0)) { - left += this.length}; - if ($truthy(left < 0)) { - left = 0}; - if ($truthy(two)) { - - right = $$($nesting, 'Opal').$coerce_to(two, $$($nesting, 'Integer'), "to_int"); - if ($truthy(right == 0)) { - return self}; - right += left; - } else { - right = this.length - }; - } else { - - left = 0; - right = this.length; - }; - if ($truthy(left > this.length)) { - - for (i = this.length; i < right; i++) { - self[i] = nil; - } - }; - if ($truthy(right > this.length)) { - this.length = right}; - if ($truthy(block)) { - - for (length = this.length; left < right; left++) { - value = block(left); - self[left] = value; - } - - } else { - - for (length = this.length; left < right; left++) { - self[left] = obj; - } - - }; - return self; - }, $Array_fill$51.$$arity = -1); - - Opal.def(self, '$first', $Array_first$52 = function $$first(count) { - var self = this; - - - ; - - if (count == null) { - return self.length === 0 ? nil : self[0]; - } - - count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), "to_int"); - - if (count < 0) { - self.$raise($$($nesting, 'ArgumentError'), "negative array size"); - } - - return self.slice(0, count); - ; - }, $Array_first$52.$$arity = -1); - - Opal.def(self, '$flatten', $Array_flatten$53 = function $$flatten(level) { - var self = this; - - - ; - - function _flatten(array, level) { - var result = [], - i, length, - item, ary; - - array = (array).$to_a(); - - for (i = 0, length = array.length; i < length; i++) { - item = array[i]; - - if (!$$($nesting, 'Opal')['$respond_to?'](item, "to_ary", true)) { - result.push(item); - continue; - } - - ary = (item).$to_ary(); - - if (ary === nil) { - result.push(item); - continue; - } - - if (!ary.$$is_array) { - self.$raise($$($nesting, 'TypeError')); - } - - if (ary === self) { - self.$raise($$($nesting, 'ArgumentError')); - } - - switch (level) { - case undefined: - result = result.concat(_flatten(ary)); - break; - case 0: - result.push(ary); - break; - default: - result.push.apply(result, _flatten(ary, level - 1)); - } - } - return result; - } - - if (level !== undefined) { - level = $$($nesting, 'Opal').$coerce_to(level, $$($nesting, 'Integer'), "to_int"); - } - - return toArraySubclass(_flatten(self, level), self.$class()); - ; - }, $Array_flatten$53.$$arity = -1); - - Opal.def(self, '$flatten!', $Array_flatten$excl$54 = function(level) { - var self = this; - - - ; - - var flattened = self.$flatten(level); - - if (self.length == flattened.length) { - for (var i = 0, length = self.length; i < length; i++) { - if (self[i] !== flattened[i]) { - break; - } - } - - if (i == length) { - return nil; - } - } - - self.$replace(flattened); - ; - return self; - }, $Array_flatten$excl$54.$$arity = -1); - - Opal.def(self, '$hash', $Array_hash$55 = function $$hash() { - var self = this; - - - var top = (Opal.hash_ids === undefined), - result = ['A'], - hash_id = self.$object_id(), - item, i, key; - - try { - if (top) { - Opal.hash_ids = Object.create(null); - } - - // return early for recursive structures - if (Opal.hash_ids[hash_id]) { - return 'self'; - } - - for (key in Opal.hash_ids) { - item = Opal.hash_ids[key]; - if (self['$eql?'](item)) { - return 'self'; - } - } - - Opal.hash_ids[hash_id] = self; - - for (i = 0; i < self.length; i++) { - item = self[i]; - result.push(item.$hash()); - } - - return result.join(','); - } finally { - if (top) { - Opal.hash_ids = undefined; - } - } - - }, $Array_hash$55.$$arity = 0); - - Opal.def(self, '$include?', $Array_include$ques$56 = function(member) { - var self = this; - - - for (var i = 0, length = self.length; i < length; i++) { - if ((self[i])['$=='](member)) { - return true; - } - } - - return false; - - }, $Array_include$ques$56.$$arity = 1); - - Opal.def(self, '$index', $Array_index$57 = function $$index(object) { - var $iter = $Array_index$57.$$p, block = $iter || nil, self = this; - - if ($iter) $Array_index$57.$$p = null; - - - if ($iter) $Array_index$57.$$p = null;; - ; - - var i, length, value; - - if (object != null && block !== nil) { - self.$warn("warning: given block not used") - } - - if (object != null) { - for (i = 0, length = self.length; i < length; i++) { - if ((self[i])['$=='](object)) { - return i; - } - } - } - else if (block !== nil) { - for (i = 0, length = self.length; i < length; i++) { - value = block(self[i]); - - if (value !== false && value !== nil) { - return i; - } - } - } - else { - return self.$enum_for("index"); - } - - return nil; - ; - }, $Array_index$57.$$arity = -1); - - Opal.def(self, '$insert', $Array_insert$58 = function $$insert(index, $a) { - var $post_args, objects, self = this; - - - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - objects = $post_args;; - - index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); - - if (objects.length > 0) { - if (index < 0) { - index += self.length + 1; - - if (index < 0) { - self.$raise($$($nesting, 'IndexError'), "" + (index) + " is out of bounds"); - } - } - if (index > self.length) { - for (var i = self.length; i < index; i++) { - self.push(nil); - } - } - - self.splice.apply(self, [index, 0].concat(objects)); - } - ; - return self; - }, $Array_insert$58.$$arity = -2); - - Opal.def(self, '$inspect', $Array_inspect$59 = function $$inspect() { - var self = this; - - - var result = [], - id = self.$__id__(); - - for (var i = 0, length = self.length; i < length; i++) { - var item = self['$[]'](i); - - if ((item).$__id__() === id) { - result.push('[...]'); - } - else { - result.push((item).$inspect()); - } - } - - return '[' + result.join(', ') + ']'; - - }, $Array_inspect$59.$$arity = 0); - - Opal.def(self, '$join', $Array_join$60 = function $$join(sep) { - var self = this; - if ($gvars[","] == null) $gvars[","] = nil; - - - - if (sep == null) { - sep = nil; - }; - if ($truthy(self.length === 0)) { - return ""}; - if ($truthy(sep === nil)) { - sep = $gvars[","]}; - - var result = []; - var i, length, item, tmp; - - for (i = 0, length = self.length; i < length; i++) { - item = self[i]; - - if ($$($nesting, 'Opal')['$respond_to?'](item, "to_str")) { - tmp = (item).$to_str(); - - if (tmp !== nil) { - result.push((tmp).$to_s()); - - continue; - } - } - - if ($$($nesting, 'Opal')['$respond_to?'](item, "to_ary")) { - tmp = (item).$to_ary(); - - if (tmp === self) { - self.$raise($$($nesting, 'ArgumentError')); - } - - if (tmp !== nil) { - result.push((tmp).$join(sep)); - - continue; - } - } - - if ($$($nesting, 'Opal')['$respond_to?'](item, "to_s")) { - tmp = (item).$to_s(); - - if (tmp !== nil) { - result.push(tmp); - - continue; - } - } - - self.$raise($$($nesting, 'NoMethodError').$new("" + (Opal.inspect(item)) + " doesn't respond to #to_str, #to_ary or #to_s", "to_str")); - } - - if (sep === nil) { - return result.join(''); - } - else { - return result.join($$($nesting, 'Opal')['$coerce_to!'](sep, $$($nesting, 'String'), "to_str").$to_s()); - } - ; - }, $Array_join$60.$$arity = -1); - - Opal.def(self, '$keep_if', $Array_keep_if$61 = function $$keep_if() { - var $iter = $Array_keep_if$61.$$p, block = $iter || nil, $$62, self = this; - - if ($iter) $Array_keep_if$61.$$p = null; - - - if ($iter) $Array_keep_if$61.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["keep_if"], ($$62 = function(){var self = $$62.$$s || this; - - return self.$size()}, $$62.$$s = self, $$62.$$arity = 0, $$62)) - }; - - for (var i = 0, length = self.length, value; i < length; i++) { - value = block(self[i]); - - if (value === false || value === nil) { - self.splice(i, 1); - - length--; - i--; - } - } - ; - return self; - }, $Array_keep_if$61.$$arity = 0); - - Opal.def(self, '$last', $Array_last$63 = function $$last(count) { - var self = this; - - - ; - - if (count == null) { - return self.length === 0 ? nil : self[self.length - 1]; - } - - count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), "to_int"); - - if (count < 0) { - self.$raise($$($nesting, 'ArgumentError'), "negative array size"); - } - - if (count > self.length) { - count = self.length; - } - - return self.slice(self.length - count, self.length); - ; - }, $Array_last$63.$$arity = -1); - - Opal.def(self, '$length', $Array_length$64 = function $$length() { - var self = this; - - return self.length; - }, $Array_length$64.$$arity = 0); - Opal.alias(self, "map", "collect"); - Opal.alias(self, "map!", "collect!"); - - Opal.def(self, '$max', $Array_max$65 = function $$max(n) { - var $iter = $Array_max$65.$$p, block = $iter || nil, self = this; - - if ($iter) $Array_max$65.$$p = null; - - - if ($iter) $Array_max$65.$$p = null;; - ; - return $send(self.$each(), 'max', [n], block.$to_proc()); - }, $Array_max$65.$$arity = -1); - - Opal.def(self, '$min', $Array_min$66 = function $$min() { - var $iter = $Array_min$66.$$p, block = $iter || nil, self = this; - - if ($iter) $Array_min$66.$$p = null; - - - if ($iter) $Array_min$66.$$p = null;; - return $send(self.$each(), 'min', [], block.$to_proc()); - }, $Array_min$66.$$arity = 0); - - // Returns the product of from, from-1, ..., from - how_many + 1. - function descending_factorial(from, how_many) { - var count = how_many >= 0 ? 1 : 0; - while (how_many) { - count *= from; - from--; - how_many--; - } - return count; - } - ; - - Opal.def(self, '$permutation', $Array_permutation$67 = function $$permutation(num) { - var $iter = $Array_permutation$67.$$p, block = $iter || nil, $$68, self = this, perm = nil, used = nil; - - if ($iter) $Array_permutation$67.$$p = null; - - - if ($iter) $Array_permutation$67.$$p = null;; - ; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["permutation", num], ($$68 = function(){var self = $$68.$$s || this; - - return descending_factorial(self.length, num === undefined ? self.length : num);}, $$68.$$s = self, $$68.$$arity = 0, $$68)) - }; - - var permute, offensive, output; - - if (num === undefined) { - num = self.length; - } - else { - num = $$($nesting, 'Opal').$coerce_to(num, $$($nesting, 'Integer'), "to_int") - } - - if (num < 0 || self.length < num) { - // no permutations, yield nothing - } - else if (num === 0) { - // exactly one permutation: the zero-length array - Opal.yield1(block, []) - } - else if (num === 1) { - // this is a special, easy case - for (var i = 0; i < self.length; i++) { - Opal.yield1(block, [self[i]]) - } - } - else { - // this is the general case - (perm = $$($nesting, 'Array').$new(num)); - (used = $$($nesting, 'Array').$new(self.length, false)); - - permute = function(num, perm, index, used, blk) { - self = this; - for(var i = 0; i < self.length; i++){ - if(used['$[]'](i)['$!']()) { - perm[index] = i; - if(index < num - 1) { - used[i] = true; - permute.call(self, num, perm, index + 1, used, blk); - used[i] = false; - } - else { - output = []; - for (var j = 0; j < perm.length; j++) { - output.push(self[perm[j]]); - } - Opal.yield1(blk, output); - } - } - } - } - - if ((block !== nil)) { - // offensive (both definitions) copy. - offensive = self.slice(); - permute.call(offensive, num, perm, 0, used, block); - } - else { - permute.call(self, num, perm, 0, used, block); - } - } - ; - return self; - }, $Array_permutation$67.$$arity = -1); - - Opal.def(self, '$repeated_permutation', $Array_repeated_permutation$69 = function $$repeated_permutation(n) { - var $$70, $iter = $Array_repeated_permutation$69.$$p, $yield = $iter || nil, self = this, num = nil; - - if ($iter) $Array_repeated_permutation$69.$$p = null; - - num = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); - if (($yield !== nil)) { - } else { - return $send(self, 'enum_for', ["repeated_permutation", num], ($$70 = function(){var self = $$70.$$s || this; - - if ($truthy($rb_ge(num, 0))) { - return self.$size()['$**'](num) - } else { - return 0 - }}, $$70.$$s = self, $$70.$$arity = 0, $$70)) - }; - - function iterate(max, buffer, self) { - if (buffer.length == max) { - var copy = buffer.slice(); - Opal.yield1($yield, copy) - return; - } - for (var i = 0; i < self.length; i++) { - buffer.push(self[i]); - iterate(max, buffer, self); - buffer.pop(); - } - } - - iterate(num, [], self.slice()); - ; - return self; - }, $Array_repeated_permutation$69.$$arity = 1); - - Opal.def(self, '$pop', $Array_pop$71 = function $$pop(count) { - var self = this; - - - ; - if ($truthy(count === undefined)) { - - if ($truthy(self.length === 0)) { - return nil}; - return self.pop();}; - count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), "to_int"); - if ($truthy(count < 0)) { - self.$raise($$($nesting, 'ArgumentError'), "negative array size")}; - if ($truthy(self.length === 0)) { - return []}; - if ($truthy(count > self.length)) { - return self.splice(0, self.length); - } else { - return self.splice(self.length - count, self.length); - }; - }, $Array_pop$71.$$arity = -1); - - Opal.def(self, '$product', $Array_product$72 = function $$product($a) { - var $iter = $Array_product$72.$$p, block = $iter || nil, $post_args, args, self = this; - - if ($iter) $Array_product$72.$$p = null; - - - if ($iter) $Array_product$72.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - - var result = (block !== nil) ? null : [], - n = args.length + 1, - counters = new Array(n), - lengths = new Array(n), - arrays = new Array(n), - i, m, subarray, len, resultlen = 1; - - arrays[0] = self; - for (i = 1; i < n; i++) { - arrays[i] = $$($nesting, 'Opal').$coerce_to(args[i - 1], $$($nesting, 'Array'), "to_ary"); - } - - for (i = 0; i < n; i++) { - len = arrays[i].length; - if (len === 0) { - return result || self; - } - resultlen *= len; - if (resultlen > 2147483647) { - self.$raise($$($nesting, 'RangeError'), "too big to product") - } - lengths[i] = len; - counters[i] = 0; - } - - outer_loop: for (;;) { - subarray = []; - for (i = 0; i < n; i++) { - subarray.push(arrays[i][counters[i]]); - } - if (result) { - result.push(subarray); - } else { - Opal.yield1(block, subarray) - } - m = n - 1; - counters[m]++; - while (counters[m] === lengths[m]) { - counters[m] = 0; - if (--m < 0) break outer_loop; - counters[m]++; - } - } - - return result || self; - ; - }, $Array_product$72.$$arity = -1); - - Opal.def(self, '$push', $Array_push$73 = function $$push($a) { - var $post_args, objects, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - objects = $post_args;; - - for (var i = 0, length = objects.length; i < length; i++) { - self.push(objects[i]); - } - ; - return self; - }, $Array_push$73.$$arity = -1); - Opal.alias(self, "append", "push"); - - Opal.def(self, '$rassoc', $Array_rassoc$74 = function $$rassoc(object) { - var self = this; - - - for (var i = 0, length = self.length, item; i < length; i++) { - item = self[i]; - - if (item.length && item[1] !== undefined) { - if ((item[1])['$=='](object)) { - return item; - } - } - } - - return nil; - - }, $Array_rassoc$74.$$arity = 1); - - Opal.def(self, '$reject', $Array_reject$75 = function $$reject() { - var $iter = $Array_reject$75.$$p, block = $iter || nil, $$76, self = this; - - if ($iter) $Array_reject$75.$$p = null; - - - if ($iter) $Array_reject$75.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["reject"], ($$76 = function(){var self = $$76.$$s || this; - - return self.$size()}, $$76.$$s = self, $$76.$$arity = 0, $$76)) - }; - - var result = []; - - for (var i = 0, length = self.length, value; i < length; i++) { - value = block(self[i]); - - if (value === false || value === nil) { - result.push(self[i]); - } - } - return result; - ; - }, $Array_reject$75.$$arity = 0); - - Opal.def(self, '$reject!', $Array_reject$excl$77 = function() { - var $iter = $Array_reject$excl$77.$$p, block = $iter || nil, $$78, self = this, original = nil; - - if ($iter) $Array_reject$excl$77.$$p = null; - - - if ($iter) $Array_reject$excl$77.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["reject!"], ($$78 = function(){var self = $$78.$$s || this; - - return self.$size()}, $$78.$$s = self, $$78.$$arity = 0, $$78)) - }; - original = self.$length(); - $send(self, 'delete_if', [], block.$to_proc()); - if (self.$length()['$=='](original)) { - return nil - } else { - return self - }; - }, $Array_reject$excl$77.$$arity = 0); - - Opal.def(self, '$replace', $Array_replace$79 = function $$replace(other) { - var self = this; - - - other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) { - return other.$to_a() - } else { - return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), "to_ary").$to_a() - }; return nil; })(); - - self.splice(0, self.length); - self.push.apply(self, other); - ; - return self; - }, $Array_replace$79.$$arity = 1); - - Opal.def(self, '$reverse', $Array_reverse$80 = function $$reverse() { - var self = this; - - return self.slice(0).reverse(); - }, $Array_reverse$80.$$arity = 0); - - Opal.def(self, '$reverse!', $Array_reverse$excl$81 = function() { - var self = this; - - return self.reverse(); - }, $Array_reverse$excl$81.$$arity = 0); - - Opal.def(self, '$reverse_each', $Array_reverse_each$82 = function $$reverse_each() { - var $iter = $Array_reverse_each$82.$$p, block = $iter || nil, $$83, self = this; - - if ($iter) $Array_reverse_each$82.$$p = null; - - - if ($iter) $Array_reverse_each$82.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["reverse_each"], ($$83 = function(){var self = $$83.$$s || this; - - return self.$size()}, $$83.$$s = self, $$83.$$arity = 0, $$83)) - }; - $send(self.$reverse(), 'each', [], block.$to_proc()); - return self; - }, $Array_reverse_each$82.$$arity = 0); - - Opal.def(self, '$rindex', $Array_rindex$84 = function $$rindex(object) { - var $iter = $Array_rindex$84.$$p, block = $iter || nil, self = this; - - if ($iter) $Array_rindex$84.$$p = null; - - - if ($iter) $Array_rindex$84.$$p = null;; - ; - - var i, value; - - if (object != null && block !== nil) { - self.$warn("warning: given block not used") - } - - if (object != null) { - for (i = self.length - 1; i >= 0; i--) { - if (i >= self.length) { - break; - } - if ((self[i])['$=='](object)) { - return i; - } - } - } - else if (block !== nil) { - for (i = self.length - 1; i >= 0; i--) { - if (i >= self.length) { - break; - } - - value = block(self[i]); - - if (value !== false && value !== nil) { - return i; - } - } - } - else if (object == null) { - return self.$enum_for("rindex"); - } - - return nil; - ; - }, $Array_rindex$84.$$arity = -1); - - Opal.def(self, '$rotate', $Array_rotate$85 = function $$rotate(n) { - var self = this; - - - - if (n == null) { - n = 1; - }; - n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), "to_int"); - - var ary, idx, firstPart, lastPart; - - if (self.length === 1) { - return self.slice(); - } - if (self.length === 0) { - return []; - } - - ary = self.slice(); - idx = n % ary.length; - - firstPart = ary.slice(idx); - lastPart = ary.slice(0, idx); - return firstPart.concat(lastPart); - ; - }, $Array_rotate$85.$$arity = -1); - - Opal.def(self, '$rotate!', $Array_rotate$excl$86 = function(cnt) { - var self = this, ary = nil; - - - - if (cnt == null) { - cnt = 1; - }; - - if (self.length === 0 || self.length === 1) { - return self; - } - ; - cnt = $$($nesting, 'Opal').$coerce_to(cnt, $$($nesting, 'Integer'), "to_int"); - ary = self.$rotate(cnt); - return self.$replace(ary); - }, $Array_rotate$excl$86.$$arity = -1); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SampleRandom'); - - var $nesting = [self].concat($parent_nesting), $SampleRandom_initialize$87, $SampleRandom_rand$88; - - self.$$prototype.rng = nil; - - - Opal.def(self, '$initialize', $SampleRandom_initialize$87 = function $$initialize(rng) { - var self = this; - - return (self.rng = rng) - }, $SampleRandom_initialize$87.$$arity = 1); - return (Opal.def(self, '$rand', $SampleRandom_rand$88 = function $$rand(size) { - var self = this, random = nil; - - - random = $$($nesting, 'Opal').$coerce_to(self.rng.$rand(size), $$($nesting, 'Integer'), "to_int"); - if ($truthy(random < 0)) { - self.$raise($$($nesting, 'RangeError'), "random value must be >= 0")}; - if ($truthy(random < size)) { - } else { - self.$raise($$($nesting, 'RangeError'), "random value must be less than Array size") - }; - return random; - }, $SampleRandom_rand$88.$$arity = 1), nil) && 'rand'; - })($nesting[0], null, $nesting); - - Opal.def(self, '$sample', $Array_sample$89 = function $$sample(count, options) { - var $a, self = this, o = nil, rng = nil; - - - ; - ; - if ($truthy(count === undefined)) { - return self.$at($$($nesting, 'Kernel').$rand(self.length))}; - if ($truthy(options === undefined)) { - if ($truthy((o = $$($nesting, 'Opal')['$coerce_to?'](count, $$($nesting, 'Hash'), "to_hash")))) { - - options = o; - count = nil; - } else { - - options = nil; - count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), "to_int"); - } - } else { - - count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), "to_int"); - options = $$($nesting, 'Opal').$coerce_to(options, $$($nesting, 'Hash'), "to_hash"); - }; - if ($truthy(($truthy($a = count) ? count < 0 : $a))) { - self.$raise($$($nesting, 'ArgumentError'), "count must be greater than 0")}; - if ($truthy(options)) { - rng = options['$[]']("random")}; - rng = (function() {if ($truthy(($truthy($a = rng) ? rng['$respond_to?']("rand") : $a))) { - return $$($nesting, 'SampleRandom').$new(rng) - } else { - return $$($nesting, 'Kernel') - }; return nil; })(); - if ($truthy(count)) { - } else { - return self[rng.$rand(self.length)] - }; - - - var abandon, spin, result, i, j, k, targetIndex, oldValue; - - if (count > self.length) { - count = self.length; - } - - switch (count) { - case 0: - return []; - break; - case 1: - return [self[rng.$rand(self.length)]]; - break; - case 2: - i = rng.$rand(self.length); - j = rng.$rand(self.length); - if (i === j) { - j = i === 0 ? i + 1 : i - 1; - } - return [self[i], self[j]]; - break; - default: - if (self.length / count > 3) { - abandon = false; - spin = 0; - - result = $$($nesting, 'Array').$new(count); - i = 1; - - result[0] = rng.$rand(self.length); - while (i < count) { - k = rng.$rand(self.length); - j = 0; - - while (j < i) { - while (k === result[j]) { - spin++; - if (spin > 100) { - abandon = true; - break; - } - k = rng.$rand(self.length); - } - if (abandon) { break; } - - j++; - } - - if (abandon) { break; } - - result[i] = k; - - i++; - } - - if (!abandon) { - i = 0; - while (i < count) { - result[i] = self[result[i]]; - i++; - } - - return result; - } - } - - result = self.slice(); - - for (var c = 0; c < count; c++) { - targetIndex = rng.$rand(self.length); - oldValue = result[c]; - result[c] = result[targetIndex]; - result[targetIndex] = oldValue; - } - - return count === self.length ? result : (result)['$[]'](0, count); - } - ; - }, $Array_sample$89.$$arity = -1); - - Opal.def(self, '$select', $Array_select$90 = function $$select() { - var $iter = $Array_select$90.$$p, block = $iter || nil, $$91, self = this; - - if ($iter) $Array_select$90.$$p = null; - - - if ($iter) $Array_select$90.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["select"], ($$91 = function(){var self = $$91.$$s || this; - - return self.$size()}, $$91.$$s = self, $$91.$$arity = 0, $$91)) - }; - - var result = []; - - for (var i = 0, length = self.length, item, value; i < length; i++) { - item = self[i]; - - value = Opal.yield1(block, item); - - if (Opal.truthy(value)) { - result.push(item); - } - } - - return result; - ; - }, $Array_select$90.$$arity = 0); - - Opal.def(self, '$select!', $Array_select$excl$92 = function() { - var $iter = $Array_select$excl$92.$$p, block = $iter || nil, $$93, self = this; - - if ($iter) $Array_select$excl$92.$$p = null; - - - if ($iter) $Array_select$excl$92.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["select!"], ($$93 = function(){var self = $$93.$$s || this; - - return self.$size()}, $$93.$$s = self, $$93.$$arity = 0, $$93)) - }; - - var original = self.length; - $send(self, 'keep_if', [], block.$to_proc()); - return self.length === original ? nil : self; - ; - }, $Array_select$excl$92.$$arity = 0); - - Opal.def(self, '$shift', $Array_shift$94 = function $$shift(count) { - var self = this; - - - ; - if ($truthy(count === undefined)) { - - if ($truthy(self.length === 0)) { - return nil}; - return self.shift();}; - count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), "to_int"); - if ($truthy(count < 0)) { - self.$raise($$($nesting, 'ArgumentError'), "negative array size")}; - if ($truthy(self.length === 0)) { - return []}; - return self.splice(0, count);; - }, $Array_shift$94.$$arity = -1); - Opal.alias(self, "size", "length"); - - Opal.def(self, '$shuffle', $Array_shuffle$95 = function $$shuffle(rng) { - var self = this; - - - ; - return self.$dup().$to_a()['$shuffle!'](rng); - }, $Array_shuffle$95.$$arity = -1); - - Opal.def(self, '$shuffle!', $Array_shuffle$excl$96 = function(rng) { - var self = this; - - - ; - - var randgen, i = self.length, j, tmp; - - if (rng !== undefined) { - rng = $$($nesting, 'Opal')['$coerce_to?'](rng, $$($nesting, 'Hash'), "to_hash"); - - if (rng !== nil) { - rng = rng['$[]']("random"); - - if (rng !== nil && rng['$respond_to?']("rand")) { - randgen = rng; - } - } - } - - while (i) { - if (randgen) { - j = randgen.$rand(i).$to_int(); - - if (j < 0) { - self.$raise($$($nesting, 'RangeError'), "" + "random number too small " + (j)) - } - - if (j >= i) { - self.$raise($$($nesting, 'RangeError'), "" + "random number too big " + (j)) - } - } - else { - j = self.$rand(i); - } - - tmp = self[--i]; - self[i] = self[j]; - self[j] = tmp; - } - - return self; - ; - }, $Array_shuffle$excl$96.$$arity = -1); - Opal.alias(self, "slice", "[]"); - - Opal.def(self, '$slice!', $Array_slice$excl$97 = function(index, length) { - var self = this, result = nil, range = nil, range_start = nil, range_end = nil, start = nil; - - - ; - result = nil; - if ($truthy(length === undefined)) { - if ($truthy($$($nesting, 'Range')['$==='](index))) { - - range = index; - result = self['$[]'](range); - range_start = $$($nesting, 'Opal').$coerce_to(range.$begin(), $$($nesting, 'Integer'), "to_int"); - range_end = $$($nesting, 'Opal').$coerce_to(range.$end(), $$($nesting, 'Integer'), "to_int"); - - if (range_start < 0) { - range_start += self.length; - } - - if (range_end < 0) { - range_end += self.length; - } else if (range_end >= self.length) { - range_end = self.length - 1; - if (range.excl) { - range_end += 1; - } - } - - var range_length = range_end - range_start; - if (range.excl) { - range_end -= 1; - } else { - range_length += 1; - } - - if (range_start < self.length && range_start >= 0 && range_end < self.length && range_end >= 0 && range_length > 0) { - self.splice(range_start, range_length); - } - ; - } else { - - start = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); - - if (start < 0) { - start += self.length; - } - - if (start < 0 || start >= self.length) { - return nil; - } - - result = self[start]; - - if (start === 0) { - self.shift(); - } else { - self.splice(start, 1); - } - ; - } - } else { - - start = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), "to_int"); - length = $$($nesting, 'Opal').$coerce_to(length, $$($nesting, 'Integer'), "to_int"); - - if (length < 0) { - return nil; - } - - var end = start + length; - - result = self['$[]'](start, length); - - if (start < 0) { - start += self.length; - } - - if (start + length > self.length) { - length = self.length - start; - } - - if (start < self.length && start >= 0) { - self.splice(start, length); - } - ; - }; - return result; - }, $Array_slice$excl$97.$$arity = -2); - - Opal.def(self, '$sort', $Array_sort$98 = function $$sort() { - var $iter = $Array_sort$98.$$p, block = $iter || nil, self = this; - - if ($iter) $Array_sort$98.$$p = null; - - - if ($iter) $Array_sort$98.$$p = null;; - if ($truthy(self.length > 1)) { - } else { - return self - }; - - if (block === nil) { - block = function(a, b) { - return (a)['$<=>'](b); - }; - } - - return self.slice().sort(function(x, y) { - var ret = block(x, y); - - if (ret === nil) { - self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + ((x).$inspect()) + " with " + ((y).$inspect()) + " failed"); - } - - return $rb_gt(ret, 0) ? 1 : ($rb_lt(ret, 0) ? -1 : 0); - }); - ; - }, $Array_sort$98.$$arity = 0); - - Opal.def(self, '$sort!', $Array_sort$excl$99 = function() { - var $iter = $Array_sort$excl$99.$$p, block = $iter || nil, self = this; - - if ($iter) $Array_sort$excl$99.$$p = null; - - - if ($iter) $Array_sort$excl$99.$$p = null;; - - var result; - - if ((block !== nil)) { - result = $send((self.slice()), 'sort', [], block.$to_proc()); - } - else { - result = (self.slice()).$sort(); - } - - self.length = 0; - for(var i = 0, length = result.length; i < length; i++) { - self.push(result[i]); - } - - return self; - ; - }, $Array_sort$excl$99.$$arity = 0); - - Opal.def(self, '$sort_by!', $Array_sort_by$excl$100 = function() { - var $iter = $Array_sort_by$excl$100.$$p, block = $iter || nil, $$101, self = this; - - if ($iter) $Array_sort_by$excl$100.$$p = null; - - - if ($iter) $Array_sort_by$excl$100.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["sort_by!"], ($$101 = function(){var self = $$101.$$s || this; - - return self.$size()}, $$101.$$s = self, $$101.$$arity = 0, $$101)) - }; - return self.$replace($send(self, 'sort_by', [], block.$to_proc())); - }, $Array_sort_by$excl$100.$$arity = 0); - - Opal.def(self, '$take', $Array_take$102 = function $$take(count) { - var self = this; - - - if (count < 0) { - self.$raise($$($nesting, 'ArgumentError')); - } - - return self.slice(0, count); - - }, $Array_take$102.$$arity = 1); - - Opal.def(self, '$take_while', $Array_take_while$103 = function $$take_while() { - var $iter = $Array_take_while$103.$$p, block = $iter || nil, self = this; - - if ($iter) $Array_take_while$103.$$p = null; - - - if ($iter) $Array_take_while$103.$$p = null;; - - var result = []; - - for (var i = 0, length = self.length, item, value; i < length; i++) { - item = self[i]; - - value = block(item); - - if (value === false || value === nil) { - return result; - } - - result.push(item); - } - - return result; - ; - }, $Array_take_while$103.$$arity = 0); - - Opal.def(self, '$to_a', $Array_to_a$104 = function $$to_a() { - var self = this; - - return self - }, $Array_to_a$104.$$arity = 0); - Opal.alias(self, "to_ary", "to_a"); - - Opal.def(self, '$to_h', $Array_to_h$105 = function $$to_h() { - var self = this; - - - var i, len = self.length, ary, key, val, hash = $hash2([], {}); - - for (i = 0; i < len; i++) { - ary = $$($nesting, 'Opal')['$coerce_to?'](self[i], $$($nesting, 'Array'), "to_ary"); - if (!ary.$$is_array) { - self.$raise($$($nesting, 'TypeError'), "" + "wrong element type " + ((ary).$class()) + " at " + (i) + " (expected array)") - } - if (ary.length !== 2) { - self.$raise($$($nesting, 'ArgumentError'), "" + "wrong array length at " + (i) + " (expected 2, was " + ((ary).$length()) + ")") - } - key = ary[0]; - val = ary[1]; - Opal.hash_put(hash, key, val); - } - - return hash; - - }, $Array_to_h$105.$$arity = 0); - Opal.alias(self, "to_s", "inspect"); - - Opal.def(self, '$transpose', $Array_transpose$106 = function $$transpose() { - var $$107, self = this, result = nil, max = nil; - - - if ($truthy(self['$empty?']())) { - return []}; - result = []; - max = nil; - $send(self, 'each', [], ($$107 = function(row){var self = $$107.$$s || this, $a, $$108; - - - - if (row == null) { - row = nil; - }; - row = (function() {if ($truthy($$($nesting, 'Array')['$==='](row))) { - return row.$to_a() - } else { - return $$($nesting, 'Opal').$coerce_to(row, $$($nesting, 'Array'), "to_ary").$to_a() - }; return nil; })(); - max = ($truthy($a = max) ? $a : row.length); - if ($truthy((row.length)['$!='](max))) { - self.$raise($$($nesting, 'IndexError'), "" + "element size differs (" + (row.length) + " should be " + (max) + ")")}; - return $send((row.length), 'times', [], ($$108 = function(i){var self = $$108.$$s || this, $b, entry = nil, $writer = nil; - - - - if (i == null) { - i = nil; - }; - entry = ($truthy($b = result['$[]'](i)) ? $b : (($writer = [i, []]), $send(result, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - return entry['$<<'](row.$at(i));}, $$108.$$s = self, $$108.$$arity = 1, $$108));}, $$107.$$s = self, $$107.$$arity = 1, $$107)); - return result; - }, $Array_transpose$106.$$arity = 0); - - Opal.def(self, '$uniq', $Array_uniq$109 = function $$uniq() { - var $iter = $Array_uniq$109.$$p, block = $iter || nil, self = this; - - if ($iter) $Array_uniq$109.$$p = null; - - - if ($iter) $Array_uniq$109.$$p = null;; - - var hash = $hash2([], {}), i, length, item, key; - - if (block === nil) { - for (i = 0, length = self.length; i < length; i++) { - item = self[i]; - if (Opal.hash_get(hash, item) === undefined) { - Opal.hash_put(hash, item, item); - } - } - } - else { - for (i = 0, length = self.length; i < length; i++) { - item = self[i]; - key = Opal.yield1(block, item); - if (Opal.hash_get(hash, key) === undefined) { - Opal.hash_put(hash, key, item); - } - } - } - - return toArraySubclass((hash).$values(), self.$class()); - ; - }, $Array_uniq$109.$$arity = 0); - - Opal.def(self, '$uniq!', $Array_uniq$excl$110 = function() { - var $iter = $Array_uniq$excl$110.$$p, block = $iter || nil, self = this; - - if ($iter) $Array_uniq$excl$110.$$p = null; - - - if ($iter) $Array_uniq$excl$110.$$p = null;; - - var original_length = self.length, hash = $hash2([], {}), i, length, item, key; - - for (i = 0, length = original_length; i < length; i++) { - item = self[i]; - key = (block === nil ? item : Opal.yield1(block, item)); - - if (Opal.hash_get(hash, key) === undefined) { - Opal.hash_put(hash, key, item); - continue; - } - - self.splice(i, 1); - length--; - i--; - } - - return self.length === original_length ? nil : self; - ; - }, $Array_uniq$excl$110.$$arity = 0); - - Opal.def(self, '$unshift', $Array_unshift$111 = function $$unshift($a) { - var $post_args, objects, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - objects = $post_args;; - - for (var i = objects.length - 1; i >= 0; i--) { - self.unshift(objects[i]); - } - ; - return self; - }, $Array_unshift$111.$$arity = -1); - Opal.alias(self, "prepend", "unshift"); - - Opal.def(self, '$values_at', $Array_values_at$112 = function $$values_at($a) { - var $post_args, args, $$113, self = this, out = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - out = []; - $send(args, 'each', [], ($$113 = function(elem){var self = $$113.$$s || this, $$114, finish = nil, start = nil, i = nil; - - - - if (elem == null) { - elem = nil; - }; - if ($truthy(elem['$is_a?']($$($nesting, 'Range')))) { - - finish = $$($nesting, 'Opal').$coerce_to(elem.$last(), $$($nesting, 'Integer'), "to_int"); - start = $$($nesting, 'Opal').$coerce_to(elem.$first(), $$($nesting, 'Integer'), "to_int"); - - if (start < 0) { - start = start + self.length; - return nil;; - } - ; - - if (finish < 0) { - finish = finish + self.length; - } - if (elem['$exclude_end?']()) { - finish--; - } - if (finish < start) { - return nil;; - } - ; - return $send(start, 'upto', [finish], ($$114 = function(i){var self = $$114.$$s || this; - - - - if (i == null) { - i = nil; - }; - return out['$<<'](self.$at(i));}, $$114.$$s = self, $$114.$$arity = 1, $$114)); - } else { - - i = $$($nesting, 'Opal').$coerce_to(elem, $$($nesting, 'Integer'), "to_int"); - return out['$<<'](self.$at(i)); - };}, $$113.$$s = self, $$113.$$arity = 1, $$113)); - return out; - }, $Array_values_at$112.$$arity = -1); - - Opal.def(self, '$zip', $Array_zip$115 = function $$zip($a) { - var $iter = $Array_zip$115.$$p, block = $iter || nil, $post_args, others, $b, self = this; - - if ($iter) $Array_zip$115.$$p = null; - - - if ($iter) $Array_zip$115.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - others = $post_args;; - - var result = [], size = self.length, part, o, i, j, jj; - - for (j = 0, jj = others.length; j < jj; j++) { - o = others[j]; - if (o.$$is_array) { - continue; - } - if (o.$$is_enumerator) { - if (o.$size() === Infinity) { - others[j] = o.$take(size); - } else { - others[j] = o.$to_a(); - } - continue; - } - others[j] = ($truthy($b = $$($nesting, 'Opal')['$coerce_to?'](o, $$($nesting, 'Array'), "to_ary")) ? $b : $$($nesting, 'Opal')['$coerce_to!'](o, $$($nesting, 'Enumerator'), "each")).$to_a(); - } - - for (i = 0; i < size; i++) { - part = [self[i]]; - - for (j = 0, jj = others.length; j < jj; j++) { - o = others[j][i]; - - if (o == null) { - o = nil; - } - - part[j + 1] = o; - } - - result[i] = part; - } - - if (block !== nil) { - for (i = 0; i < size; i++) { - block(result[i]); - } - - return nil; - } - - return result; - ; - }, $Array_zip$115.$$arity = -1); - Opal.defs(self, '$inherited', $Array_inherited$116 = function $$inherited(klass) { - var self = this; - - - klass.$$prototype.$to_a = function() { - return this.slice(0, this.length); - } - - }, $Array_inherited$116.$$arity = 1); - - Opal.def(self, '$instance_variables', $Array_instance_variables$117 = function $$instance_variables() { - var $$118, $iter = $Array_instance_variables$117.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Array_instance_variables$117.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - return $send($send(self, Opal.find_super_dispatcher(self, 'instance_variables', $Array_instance_variables$117, false), $zuper, $iter), 'reject', [], ($$118 = function(ivar){var self = $$118.$$s || this, $a; - - - - if (ivar == null) { - ivar = nil; - }; - return ($truthy($a = /^@\d+$/.test(ivar)) ? $a : ivar['$==']("@length"));}, $$118.$$s = self, $$118.$$arity = 1, $$118)) - }, $Array_instance_variables$117.$$arity = 0); - $$($nesting, 'Opal').$pristine(self.$singleton_class(), "allocate"); - $$($nesting, 'Opal').$pristine(self, "copy_instance_variables", "initialize_dup"); - return (Opal.def(self, '$pack', $Array_pack$119 = function $$pack($a) { - var $post_args, args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return self.$raise("To use Array#pack, you must first require 'corelib/array/pack'."); - }, $Array_pack$119.$$arity = -1), nil) && 'pack'; - })($nesting[0], Array, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/hash"] = function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$include', '$coerce_to?', '$[]', '$merge!', '$allocate', '$raise', '$coerce_to!', '$each', '$fetch', '$>=', '$>', '$==', '$compare_by_identity', '$lambda?', '$abs', '$arity', '$enum_for', '$size', '$respond_to?', '$class', '$dig', '$new', '$inspect', '$map', '$to_proc', '$flatten', '$eql?', '$default', '$dup', '$default_proc', '$default_proc=', '$-', '$default=', '$proc']); - - self.$require("corelib/enumerable"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Hash'); - - var $nesting = [self].concat($parent_nesting), $Hash_$$$1, $Hash_allocate$2, $Hash_try_convert$3, $Hash_initialize$4, $Hash_$eq_eq$5, $Hash_$gt_eq$6, $Hash_$gt$8, $Hash_$lt$9, $Hash_$lt_eq$10, $Hash_$$$11, $Hash_$$$eq$12, $Hash_assoc$13, $Hash_clear$14, $Hash_clone$15, $Hash_compact$16, $Hash_compact$excl$17, $Hash_compare_by_identity$18, $Hash_compare_by_identity$ques$19, $Hash_default$20, $Hash_default$eq$21, $Hash_default_proc$22, $Hash_default_proc$eq$23, $Hash_delete$24, $Hash_delete_if$25, $Hash_dig$27, $Hash_each$28, $Hash_each_key$30, $Hash_each_value$32, $Hash_empty$ques$34, $Hash_fetch$35, $Hash_fetch_values$36, $Hash_flatten$38, $Hash_has_key$ques$39, $Hash_has_value$ques$40, $Hash_hash$41, $Hash_index$42, $Hash_indexes$43, $Hash_inspect$44, $Hash_invert$45, $Hash_keep_if$46, $Hash_keys$48, $Hash_length$49, $Hash_merge$50, $Hash_merge$excl$51, $Hash_rassoc$52, $Hash_rehash$53, $Hash_reject$54, $Hash_reject$excl$56, $Hash_replace$58, $Hash_select$59, $Hash_select$excl$61, $Hash_shift$63, $Hash_slice$64, $Hash_to_a$65, $Hash_to_h$66, $Hash_to_hash$67, $Hash_to_proc$68, $Hash_transform_keys$70, $Hash_transform_keys$excl$72, $Hash_transform_values$74, $Hash_transform_values$excl$76, $Hash_values$78; - - - self.$include($$($nesting, 'Enumerable')); - self.$$prototype.$$is_hash = true; - Opal.defs(self, '$[]', $Hash_$$$1 = function($a) { - var $post_args, argv, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - argv = $post_args;; - - var hash, argc = argv.length, i; - - if (argc === 1) { - hash = $$($nesting, 'Opal')['$coerce_to?'](argv['$[]'](0), $$($nesting, 'Hash'), "to_hash"); - if (hash !== nil) { - return self.$allocate()['$merge!'](hash); - } - - argv = $$($nesting, 'Opal')['$coerce_to?'](argv['$[]'](0), $$($nesting, 'Array'), "to_ary"); - if (argv === nil) { - self.$raise($$($nesting, 'ArgumentError'), "odd number of arguments for Hash") - } - - argc = argv.length; - hash = self.$allocate(); - - for (i = 0; i < argc; i++) { - if (!argv[i].$$is_array) continue; - switch(argv[i].length) { - case 1: - hash.$store(argv[i][0], nil); - break; - case 2: - hash.$store(argv[i][0], argv[i][1]); - break; - default: - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid number of elements (" + (argv[i].length) + " for 1..2)") - } - } - - return hash; - } - - if (argc % 2 !== 0) { - self.$raise($$($nesting, 'ArgumentError'), "odd number of arguments for Hash") - } - - hash = self.$allocate(); - - for (i = 0; i < argc; i += 2) { - hash.$store(argv[i], argv[i + 1]); - } - - return hash; - ; - }, $Hash_$$$1.$$arity = -1); - Opal.defs(self, '$allocate', $Hash_allocate$2 = function $$allocate() { - var self = this; - - - var hash = new self.$$constructor(); - - Opal.hash_init(hash); - - hash.$$none = nil; - hash.$$proc = nil; - - return hash; - - }, $Hash_allocate$2.$$arity = 0); - Opal.defs(self, '$try_convert', $Hash_try_convert$3 = function $$try_convert(obj) { - var self = this; - - return $$($nesting, 'Opal')['$coerce_to?'](obj, $$($nesting, 'Hash'), "to_hash") - }, $Hash_try_convert$3.$$arity = 1); - - Opal.def(self, '$initialize', $Hash_initialize$4 = function $$initialize(defaults) { - var $iter = $Hash_initialize$4.$$p, block = $iter || nil, self = this; - - if ($iter) $Hash_initialize$4.$$p = null; - - - if ($iter) $Hash_initialize$4.$$p = null;; - ; - - if (defaults !== undefined && block !== nil) { - self.$raise($$($nesting, 'ArgumentError'), "wrong number of arguments (1 for 0)") - } - self.$$none = (defaults === undefined ? nil : defaults); - self.$$proc = block; - - return self; - ; - }, $Hash_initialize$4.$$arity = -1); - - Opal.def(self, '$==', $Hash_$eq_eq$5 = function(other) { - var self = this; - - - if (self === other) { - return true; - } - - if (!other.$$is_hash) { - return false; - } - - if (self.$$keys.length !== other.$$keys.length) { - return false; - } - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value, other_value; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - other_value = other.$$smap[key]; - } else { - value = key.value; - other_value = Opal.hash_get(other, key.key); - } - - if (other_value === undefined || !value['$eql?'](other_value)) { - return false; - } - } - - return true; - - }, $Hash_$eq_eq$5.$$arity = 1); - - Opal.def(self, '$>=', $Hash_$gt_eq$6 = function(other) { - var $$7, self = this, result = nil; - - - other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), "to_hash"); - - if (self.$$keys.length < other.$$keys.length) { - return false - } - ; - result = true; - $send(other, 'each', [], ($$7 = function(other_key, other_val){var self = $$7.$$s || this, val = nil; - - - - if (other_key == null) { - other_key = nil; - }; - - if (other_val == null) { - other_val = nil; - }; - val = self.$fetch(other_key, null); - - if (val == null || val !== other_val) { - result = false; - return; - } - ;}, $$7.$$s = self, $$7.$$arity = 2, $$7)); - return result; - }, $Hash_$gt_eq$6.$$arity = 1); - - Opal.def(self, '$>', $Hash_$gt$8 = function(other) { - var self = this; - - - other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), "to_hash"); - - if (self.$$keys.length <= other.$$keys.length) { - return false - } - ; - return $rb_ge(self, other); - }, $Hash_$gt$8.$$arity = 1); - - Opal.def(self, '$<', $Hash_$lt$9 = function(other) { - var self = this; - - - other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), "to_hash"); - return $rb_gt(other, self); - }, $Hash_$lt$9.$$arity = 1); - - Opal.def(self, '$<=', $Hash_$lt_eq$10 = function(other) { - var self = this; - - - other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), "to_hash"); - return $rb_ge(other, self); - }, $Hash_$lt_eq$10.$$arity = 1); - - Opal.def(self, '$[]', $Hash_$$$11 = function(key) { - var self = this; - - - var value = Opal.hash_get(self, key); - - if (value !== undefined) { - return value; - } - - return self.$default(key); - - }, $Hash_$$$11.$$arity = 1); - - Opal.def(self, '$[]=', $Hash_$$$eq$12 = function(key, value) { - var self = this; - - - Opal.hash_put(self, key, value); - return value; - - }, $Hash_$$$eq$12.$$arity = 2); - - Opal.def(self, '$assoc', $Hash_assoc$13 = function $$assoc(object) { - var self = this; - - - for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - if ((key)['$=='](object)) { - return [key, self.$$smap[key]]; - } - } else { - if ((key.key)['$=='](object)) { - return [key.key, key.value]; - } - } - } - - return nil; - - }, $Hash_assoc$13.$$arity = 1); - - Opal.def(self, '$clear', $Hash_clear$14 = function $$clear() { - var self = this; - - - Opal.hash_init(self); - return self; - - }, $Hash_clear$14.$$arity = 0); - - Opal.def(self, '$clone', $Hash_clone$15 = function $$clone() { - var self = this; - - - var hash = new self.$$class(); - - Opal.hash_init(hash); - Opal.hash_clone(self, hash); - - return hash; - - }, $Hash_clone$15.$$arity = 0); - - Opal.def(self, '$compact', $Hash_compact$16 = function $$compact() { - var self = this; - - - var hash = Opal.hash(); - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - if (value !== nil) { - Opal.hash_put(hash, key, value); - } - } - - return hash; - - }, $Hash_compact$16.$$arity = 0); - - Opal.def(self, '$compact!', $Hash_compact$excl$17 = function() { - var self = this; - - - var changes_were_made = false; - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - if (value === nil) { - if (Opal.hash_delete(self, key) !== undefined) { - changes_were_made = true; - length--; - i--; - } - } - } - - return changes_were_made ? self : nil; - - }, $Hash_compact$excl$17.$$arity = 0); - - Opal.def(self, '$compare_by_identity', $Hash_compare_by_identity$18 = function $$compare_by_identity() { - var self = this; - - - var i, ii, key, keys = self.$$keys, identity_hash; - - if (self.$$by_identity) return self; - if (self.$$keys.length === 0) { - self.$$by_identity = true - return self; - } - - identity_hash = $hash2([], {}).$compare_by_identity(); - for(i = 0, ii = keys.length; i < ii; i++) { - key = keys[i]; - if (!key.$$is_string) key = key.key; - Opal.hash_put(identity_hash, key, Opal.hash_get(self, key)); - } - - self.$$by_identity = true; - self.$$map = identity_hash.$$map; - self.$$smap = identity_hash.$$smap; - return self; - - }, $Hash_compare_by_identity$18.$$arity = 0); - - Opal.def(self, '$compare_by_identity?', $Hash_compare_by_identity$ques$19 = function() { - var self = this; - - return self.$$by_identity === true; - }, $Hash_compare_by_identity$ques$19.$$arity = 0); - - Opal.def(self, '$default', $Hash_default$20 = function(key) { - var self = this; - - - ; - - if (key !== undefined && self.$$proc !== nil && self.$$proc !== undefined) { - return self.$$proc.$call(self, key); - } - if (self.$$none === undefined) { - return nil; - } - return self.$$none; - ; - }, $Hash_default$20.$$arity = -1); - - Opal.def(self, '$default=', $Hash_default$eq$21 = function(object) { - var self = this; - - - self.$$proc = nil; - self.$$none = object; - - return object; - - }, $Hash_default$eq$21.$$arity = 1); - - Opal.def(self, '$default_proc', $Hash_default_proc$22 = function $$default_proc() { - var self = this; - - - if (self.$$proc !== undefined) { - return self.$$proc; - } - return nil; - - }, $Hash_default_proc$22.$$arity = 0); - - Opal.def(self, '$default_proc=', $Hash_default_proc$eq$23 = function(default_proc) { - var self = this; - - - var proc = default_proc; - - if (proc !== nil) { - proc = $$($nesting, 'Opal')['$coerce_to!'](proc, $$($nesting, 'Proc'), "to_proc"); - - if ((proc)['$lambda?']() && (proc).$arity().$abs() !== 2) { - self.$raise($$($nesting, 'TypeError'), "default_proc takes two arguments"); - } - } - - self.$$none = nil; - self.$$proc = proc; - - return default_proc; - - }, $Hash_default_proc$eq$23.$$arity = 1); - - Opal.def(self, '$delete', $Hash_delete$24 = function(key) { - var $iter = $Hash_delete$24.$$p, block = $iter || nil, self = this; - - if ($iter) $Hash_delete$24.$$p = null; - - - if ($iter) $Hash_delete$24.$$p = null;; - - var value = Opal.hash_delete(self, key); - - if (value !== undefined) { - return value; - } - - if (block !== nil) { - return Opal.yield1(block, key); - } - - return nil; - ; - }, $Hash_delete$24.$$arity = 1); - - Opal.def(self, '$delete_if', $Hash_delete_if$25 = function $$delete_if() { - var $iter = $Hash_delete_if$25.$$p, block = $iter || nil, $$26, self = this; - - if ($iter) $Hash_delete_if$25.$$p = null; - - - if ($iter) $Hash_delete_if$25.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["delete_if"], ($$26 = function(){var self = $$26.$$s || this; - - return self.$size()}, $$26.$$s = self, $$26.$$arity = 0, $$26)) - }; - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - obj = block(key, value); - - if (obj !== false && obj !== nil) { - if (Opal.hash_delete(self, key) !== undefined) { - length--; - i--; - } - } - } - - return self; - ; - }, $Hash_delete_if$25.$$arity = 0); - Opal.alias(self, "dup", "clone"); - - Opal.def(self, '$dig', $Hash_dig$27 = function $$dig(key, $a) { - var $post_args, keys, self = this, item = nil; - - - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - keys = $post_args;; - item = self['$[]'](key); - - if (item === nil || keys.length === 0) { - return item; - } - ; - if ($truthy(item['$respond_to?']("dig"))) { - } else { - self.$raise($$($nesting, 'TypeError'), "" + (item.$class()) + " does not have #dig method") - }; - return $send(item, 'dig', Opal.to_a(keys)); - }, $Hash_dig$27.$$arity = -2); - - Opal.def(self, '$each', $Hash_each$28 = function $$each() { - var $iter = $Hash_each$28.$$p, block = $iter || nil, $$29, self = this; - - if ($iter) $Hash_each$28.$$p = null; - - - if ($iter) $Hash_each$28.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["each"], ($$29 = function(){var self = $$29.$$s || this; - - return self.$size()}, $$29.$$s = self, $$29.$$arity = 0, $$29)) - }; - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - Opal.yield1(block, [key, value]); - } - - return self; - ; - }, $Hash_each$28.$$arity = 0); - - Opal.def(self, '$each_key', $Hash_each_key$30 = function $$each_key() { - var $iter = $Hash_each_key$30.$$p, block = $iter || nil, $$31, self = this; - - if ($iter) $Hash_each_key$30.$$p = null; - - - if ($iter) $Hash_each_key$30.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["each_key"], ($$31 = function(){var self = $$31.$$s || this; - - return self.$size()}, $$31.$$s = self, $$31.$$arity = 0, $$31)) - }; - - for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { - key = keys[i]; - - block(key.$$is_string ? key : key.key); - } - - return self; - ; - }, $Hash_each_key$30.$$arity = 0); - Opal.alias(self, "each_pair", "each"); - - Opal.def(self, '$each_value', $Hash_each_value$32 = function $$each_value() { - var $iter = $Hash_each_value$32.$$p, block = $iter || nil, $$33, self = this; - - if ($iter) $Hash_each_value$32.$$p = null; - - - if ($iter) $Hash_each_value$32.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["each_value"], ($$33 = function(){var self = $$33.$$s || this; - - return self.$size()}, $$33.$$s = self, $$33.$$arity = 0, $$33)) - }; - - for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { - key = keys[i]; - - block(key.$$is_string ? self.$$smap[key] : key.value); - } - - return self; - ; - }, $Hash_each_value$32.$$arity = 0); - - Opal.def(self, '$empty?', $Hash_empty$ques$34 = function() { - var self = this; - - return self.$$keys.length === 0; - }, $Hash_empty$ques$34.$$arity = 0); - Opal.alias(self, "eql?", "=="); - - Opal.def(self, '$fetch', $Hash_fetch$35 = function $$fetch(key, defaults) { - var $iter = $Hash_fetch$35.$$p, block = $iter || nil, self = this; - - if ($iter) $Hash_fetch$35.$$p = null; - - - if ($iter) $Hash_fetch$35.$$p = null;; - ; - - var value = Opal.hash_get(self, key); - - if (value !== undefined) { - return value; - } - - if (block !== nil) { - return block(key); - } - - if (defaults !== undefined) { - return defaults; - } - ; - return self.$raise($$($nesting, 'KeyError').$new("" + "key not found: " + (key.$inspect()), $hash2(["key", "receiver"], {"key": key, "receiver": self}))); - }, $Hash_fetch$35.$$arity = -2); - - Opal.def(self, '$fetch_values', $Hash_fetch_values$36 = function $$fetch_values($a) { - var $iter = $Hash_fetch_values$36.$$p, block = $iter || nil, $post_args, keys, $$37, self = this; - - if ($iter) $Hash_fetch_values$36.$$p = null; - - - if ($iter) $Hash_fetch_values$36.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - keys = $post_args;; - return $send(keys, 'map', [], ($$37 = function(key){var self = $$37.$$s || this; - - - - if (key == null) { - key = nil; - }; - return $send(self, 'fetch', [key], block.$to_proc());}, $$37.$$s = self, $$37.$$arity = 1, $$37)); - }, $Hash_fetch_values$36.$$arity = -1); - - Opal.def(self, '$flatten', $Hash_flatten$38 = function $$flatten(level) { - var self = this; - - - - if (level == null) { - level = 1; - }; - level = $$($nesting, 'Opal')['$coerce_to!'](level, $$($nesting, 'Integer'), "to_int"); - - var result = []; - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - result.push(key); - - if (value.$$is_array) { - if (level === 1) { - result.push(value); - continue; - } - - result = result.concat((value).$flatten(level - 2)); - continue; - } - - result.push(value); - } - - return result; - ; - }, $Hash_flatten$38.$$arity = -1); - - Opal.def(self, '$has_key?', $Hash_has_key$ques$39 = function(key) { - var self = this; - - return Opal.hash_get(self, key) !== undefined; - }, $Hash_has_key$ques$39.$$arity = 1); - - Opal.def(self, '$has_value?', $Hash_has_value$ques$40 = function(value) { - var self = this; - - - for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { - key = keys[i]; - - if (((key.$$is_string ? self.$$smap[key] : key.value))['$=='](value)) { - return true; - } - } - - return false; - - }, $Hash_has_value$ques$40.$$arity = 1); - - Opal.def(self, '$hash', $Hash_hash$41 = function $$hash() { - var self = this; - - - var top = (Opal.hash_ids === undefined), - hash_id = self.$object_id(), - result = ['Hash'], - key, item; - - try { - if (top) { - Opal.hash_ids = Object.create(null); - } - - if (Opal[hash_id]) { - return 'self'; - } - - for (key in Opal.hash_ids) { - item = Opal.hash_ids[key]; - if (self['$eql?'](item)) { - return 'self'; - } - } - - Opal.hash_ids[hash_id] = self; - - for (var i = 0, keys = self.$$keys, length = keys.length; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - result.push([key, self.$$smap[key].$hash()]); - } else { - result.push([key.key_hash, key.value.$hash()]); - } - } - - return result.sort().join(); - - } finally { - if (top) { - Opal.hash_ids = undefined; - } - } - - }, $Hash_hash$41.$$arity = 0); - Opal.alias(self, "include?", "has_key?"); - - Opal.def(self, '$index', $Hash_index$42 = function $$index(object) { - var self = this; - - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - if ((value)['$=='](object)) { - return key; - } - } - - return nil; - - }, $Hash_index$42.$$arity = 1); - - Opal.def(self, '$indexes', $Hash_indexes$43 = function $$indexes($a) { - var $post_args, args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - - var result = []; - - for (var i = 0, length = args.length, key, value; i < length; i++) { - key = args[i]; - value = Opal.hash_get(self, key); - - if (value === undefined) { - result.push(self.$default()); - continue; - } - - result.push(value); - } - - return result; - ; - }, $Hash_indexes$43.$$arity = -1); - Opal.alias(self, "indices", "indexes"); - var inspect_ids; - - Opal.def(self, '$inspect', $Hash_inspect$44 = function $$inspect() { - var self = this; - - - var top = (inspect_ids === undefined), - hash_id = self.$object_id(), - result = []; - - try { - if (top) { - inspect_ids = {}; - } - - if (inspect_ids.hasOwnProperty(hash_id)) { - return '{...}'; - } - - inspect_ids[hash_id] = true; - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - result.push(key.$inspect() + '=>' + value.$inspect()); - } - - return '{' + result.join(', ') + '}'; - - } finally { - if (top) { - inspect_ids = undefined; - } - } - - }, $Hash_inspect$44.$$arity = 0); - - Opal.def(self, '$invert', $Hash_invert$45 = function $$invert() { - var self = this; - - - var hash = Opal.hash(); - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - Opal.hash_put(hash, value, key); - } - - return hash; - - }, $Hash_invert$45.$$arity = 0); - - Opal.def(self, '$keep_if', $Hash_keep_if$46 = function $$keep_if() { - var $iter = $Hash_keep_if$46.$$p, block = $iter || nil, $$47, self = this; - - if ($iter) $Hash_keep_if$46.$$p = null; - - - if ($iter) $Hash_keep_if$46.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["keep_if"], ($$47 = function(){var self = $$47.$$s || this; - - return self.$size()}, $$47.$$s = self, $$47.$$arity = 0, $$47)) - }; - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - obj = block(key, value); - - if (obj === false || obj === nil) { - if (Opal.hash_delete(self, key) !== undefined) { - length--; - i--; - } - } - } - - return self; - ; - }, $Hash_keep_if$46.$$arity = 0); - Opal.alias(self, "key", "index"); - Opal.alias(self, "key?", "has_key?"); - - Opal.def(self, '$keys', $Hash_keys$48 = function $$keys() { - var self = this; - - - var result = []; - - for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - result.push(key); - } else { - result.push(key.key); - } - } - - return result; - - }, $Hash_keys$48.$$arity = 0); - - Opal.def(self, '$length', $Hash_length$49 = function $$length() { - var self = this; - - return self.$$keys.length; - }, $Hash_length$49.$$arity = 0); - Opal.alias(self, "member?", "has_key?"); - - Opal.def(self, '$merge', $Hash_merge$50 = function $$merge(other) { - var $iter = $Hash_merge$50.$$p, block = $iter || nil, self = this; - - if ($iter) $Hash_merge$50.$$p = null; - - - if ($iter) $Hash_merge$50.$$p = null;; - return $send(self.$dup(), 'merge!', [other], block.$to_proc()); - }, $Hash_merge$50.$$arity = 1); - - Opal.def(self, '$merge!', $Hash_merge$excl$51 = function(other) { - var $iter = $Hash_merge$excl$51.$$p, block = $iter || nil, self = this; - - if ($iter) $Hash_merge$excl$51.$$p = null; - - - if ($iter) $Hash_merge$excl$51.$$p = null;; - - if (!other.$$is_hash) { - other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), "to_hash"); - } - - var i, other_keys = other.$$keys, length = other_keys.length, key, value, other_value; - - if (block === nil) { - for (i = 0; i < length; i++) { - key = other_keys[i]; - - if (key.$$is_string) { - other_value = other.$$smap[key]; - } else { - other_value = key.value; - key = key.key; - } - - Opal.hash_put(self, key, other_value); - } - - return self; - } - - for (i = 0; i < length; i++) { - key = other_keys[i]; - - if (key.$$is_string) { - other_value = other.$$smap[key]; - } else { - other_value = key.value; - key = key.key; - } - - value = Opal.hash_get(self, key); - - if (value === undefined) { - Opal.hash_put(self, key, other_value); - continue; - } - - Opal.hash_put(self, key, block(key, value, other_value)); - } - - return self; - ; - }, $Hash_merge$excl$51.$$arity = 1); - - Opal.def(self, '$rassoc', $Hash_rassoc$52 = function $$rassoc(object) { - var self = this; - - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - if ((value)['$=='](object)) { - return [key, value]; - } - } - - return nil; - - }, $Hash_rassoc$52.$$arity = 1); - - Opal.def(self, '$rehash', $Hash_rehash$53 = function $$rehash() { - var self = this; - - - Opal.hash_rehash(self); - return self; - - }, $Hash_rehash$53.$$arity = 0); - - Opal.def(self, '$reject', $Hash_reject$54 = function $$reject() { - var $iter = $Hash_reject$54.$$p, block = $iter || nil, $$55, self = this; - - if ($iter) $Hash_reject$54.$$p = null; - - - if ($iter) $Hash_reject$54.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["reject"], ($$55 = function(){var self = $$55.$$s || this; - - return self.$size()}, $$55.$$s = self, $$55.$$arity = 0, $$55)) - }; - - var hash = Opal.hash(); - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - obj = block(key, value); - - if (obj === false || obj === nil) { - Opal.hash_put(hash, key, value); - } - } - - return hash; - ; - }, $Hash_reject$54.$$arity = 0); - - Opal.def(self, '$reject!', $Hash_reject$excl$56 = function() { - var $iter = $Hash_reject$excl$56.$$p, block = $iter || nil, $$57, self = this; - - if ($iter) $Hash_reject$excl$56.$$p = null; - - - if ($iter) $Hash_reject$excl$56.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["reject!"], ($$57 = function(){var self = $$57.$$s || this; - - return self.$size()}, $$57.$$s = self, $$57.$$arity = 0, $$57)) - }; - - var changes_were_made = false; - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - obj = block(key, value); - - if (obj !== false && obj !== nil) { - if (Opal.hash_delete(self, key) !== undefined) { - changes_were_made = true; - length--; - i--; - } - } - } - - return changes_were_made ? self : nil; - ; - }, $Hash_reject$excl$56.$$arity = 0); - - Opal.def(self, '$replace', $Hash_replace$58 = function $$replace(other) { - var self = this, $writer = nil; - - - other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), "to_hash"); - - Opal.hash_init(self); - - for (var i = 0, other_keys = other.$$keys, length = other_keys.length, key, value, other_value; i < length; i++) { - key = other_keys[i]; - - if (key.$$is_string) { - other_value = other.$$smap[key]; - } else { - other_value = key.value; - key = key.key; - } - - Opal.hash_put(self, key, other_value); - } - ; - if ($truthy(other.$default_proc())) { - - $writer = [other.$default_proc()]; - $send(self, 'default_proc=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)]; - } else { - - $writer = [other.$default()]; - $send(self, 'default=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)]; - }; - return self; - }, $Hash_replace$58.$$arity = 1); - - Opal.def(self, '$select', $Hash_select$59 = function $$select() { - var $iter = $Hash_select$59.$$p, block = $iter || nil, $$60, self = this; - - if ($iter) $Hash_select$59.$$p = null; - - - if ($iter) $Hash_select$59.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["select"], ($$60 = function(){var self = $$60.$$s || this; - - return self.$size()}, $$60.$$s = self, $$60.$$arity = 0, $$60)) - }; - - var hash = Opal.hash(); - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - obj = block(key, value); - - if (obj !== false && obj !== nil) { - Opal.hash_put(hash, key, value); - } - } - - return hash; - ; - }, $Hash_select$59.$$arity = 0); - - Opal.def(self, '$select!', $Hash_select$excl$61 = function() { - var $iter = $Hash_select$excl$61.$$p, block = $iter || nil, $$62, self = this; - - if ($iter) $Hash_select$excl$61.$$p = null; - - - if ($iter) $Hash_select$excl$61.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["select!"], ($$62 = function(){var self = $$62.$$s || this; - - return self.$size()}, $$62.$$s = self, $$62.$$arity = 0, $$62)) - }; - - var result = nil; - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - obj = block(key, value); - - if (obj === false || obj === nil) { - if (Opal.hash_delete(self, key) !== undefined) { - length--; - i--; - } - result = self; - } - } - - return result; - ; - }, $Hash_select$excl$61.$$arity = 0); - - Opal.def(self, '$shift', $Hash_shift$63 = function $$shift() { - var self = this; - - - var keys = self.$$keys, - key; - - if (keys.length > 0) { - key = keys[0]; - - key = key.$$is_string ? key : key.key; - - return [key, Opal.hash_delete(self, key)]; - } - - return self.$default(nil); - - }, $Hash_shift$63.$$arity = 0); - Opal.alias(self, "size", "length"); - - Opal.def(self, '$slice', $Hash_slice$64 = function $$slice($a) { - var $post_args, keys, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - keys = $post_args;; - - var result = Opal.hash(); - - for (var i = 0, length = keys.length; i < length; i++) { - var key = keys[i], value = Opal.hash_get(self, key); - - if (value !== undefined) { - Opal.hash_put(result, key, value); - } - } - - return result; - ; - }, $Hash_slice$64.$$arity = -1); - Opal.alias(self, "store", "[]="); - - Opal.def(self, '$to_a', $Hash_to_a$65 = function $$to_a() { - var self = this; - - - var result = []; - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - result.push([key, value]); - } - - return result; - - }, $Hash_to_a$65.$$arity = 0); - - Opal.def(self, '$to_h', $Hash_to_h$66 = function $$to_h() { - var self = this; - - - if (self.$$class === Opal.Hash) { - return self; - } - - var hash = new Opal.Hash(); - - Opal.hash_init(hash); - Opal.hash_clone(self, hash); - - return hash; - - }, $Hash_to_h$66.$$arity = 0); - - Opal.def(self, '$to_hash', $Hash_to_hash$67 = function $$to_hash() { - var self = this; - - return self - }, $Hash_to_hash$67.$$arity = 0); - - Opal.def(self, '$to_proc', $Hash_to_proc$68 = function $$to_proc() { - var $$69, self = this; - - return $send(self, 'proc', [], ($$69 = function(key){var self = $$69.$$s || this; - - - ; - - if (key == null) { - self.$raise($$($nesting, 'ArgumentError'), "no key given") - } - ; - return self['$[]'](key);}, $$69.$$s = self, $$69.$$arity = -1, $$69)) - }, $Hash_to_proc$68.$$arity = 0); - Opal.alias(self, "to_s", "inspect"); - - Opal.def(self, '$transform_keys', $Hash_transform_keys$70 = function $$transform_keys() { - var $iter = $Hash_transform_keys$70.$$p, block = $iter || nil, $$71, self = this; - - if ($iter) $Hash_transform_keys$70.$$p = null; - - - if ($iter) $Hash_transform_keys$70.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["transform_keys"], ($$71 = function(){var self = $$71.$$s || this; - - return self.$size()}, $$71.$$s = self, $$71.$$arity = 0, $$71)) - }; - - var result = Opal.hash(); - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - key = Opal.yield1(block, key); - - Opal.hash_put(result, key, value); - } - - return result; - ; - }, $Hash_transform_keys$70.$$arity = 0); - - Opal.def(self, '$transform_keys!', $Hash_transform_keys$excl$72 = function() { - var $iter = $Hash_transform_keys$excl$72.$$p, block = $iter || nil, $$73, self = this; - - if ($iter) $Hash_transform_keys$excl$72.$$p = null; - - - if ($iter) $Hash_transform_keys$excl$72.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["transform_keys!"], ($$73 = function(){var self = $$73.$$s || this; - - return self.$size()}, $$73.$$s = self, $$73.$$arity = 0, $$73)) - }; - - var keys = Opal.slice.call(self.$$keys), - i, length = keys.length, key, value, new_key; - - for (i = 0; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - new_key = Opal.yield1(block, key); - - Opal.hash_delete(self, key); - Opal.hash_put(self, new_key, value); - } - - return self; - ; - }, $Hash_transform_keys$excl$72.$$arity = 0); - - Opal.def(self, '$transform_values', $Hash_transform_values$74 = function $$transform_values() { - var $iter = $Hash_transform_values$74.$$p, block = $iter || nil, $$75, self = this; - - if ($iter) $Hash_transform_values$74.$$p = null; - - - if ($iter) $Hash_transform_values$74.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["transform_values"], ($$75 = function(){var self = $$75.$$s || this; - - return self.$size()}, $$75.$$s = self, $$75.$$arity = 0, $$75)) - }; - - var result = Opal.hash(); - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - value = Opal.yield1(block, value); - - Opal.hash_put(result, key, value); - } - - return result; - ; - }, $Hash_transform_values$74.$$arity = 0); - - Opal.def(self, '$transform_values!', $Hash_transform_values$excl$76 = function() { - var $iter = $Hash_transform_values$excl$76.$$p, block = $iter || nil, $$77, self = this; - - if ($iter) $Hash_transform_values$excl$76.$$p = null; - - - if ($iter) $Hash_transform_values$excl$76.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["transform_values!"], ($$77 = function(){var self = $$77.$$s || this; - - return self.$size()}, $$77.$$s = self, $$77.$$arity = 0, $$77)) - }; - - for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - value = self.$$smap[key]; - } else { - value = key.value; - key = key.key; - } - - value = Opal.yield1(block, value); - - Opal.hash_put(self, key, value); - } - - return self; - ; - }, $Hash_transform_values$excl$76.$$arity = 0); - Opal.alias(self, "update", "merge!"); - Opal.alias(self, "value?", "has_value?"); - Opal.alias(self, "values_at", "indexes"); - return (Opal.def(self, '$values', $Hash_values$78 = function $$values() { - var self = this; - - - var result = []; - - for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { - key = keys[i]; - - if (key.$$is_string) { - result.push(self.$$smap[key]); - } else { - result.push(key.value); - } - } - - return result; - - }, $Hash_values$78.$$arity = 0), nil) && 'values'; - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/number"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$bridge', '$raise', '$name', '$class', '$Float', '$respond_to?', '$coerce_to!', '$__coerced__', '$===', '$!', '$>', '$**', '$new', '$<', '$to_f', '$==', '$nan?', '$infinite?', '$enum_for', '$+', '$-', '$gcd', '$lcm', '$%', '$/', '$frexp', '$to_i', '$ldexp', '$rationalize', '$*', '$<<', '$to_r', '$truncate', '$-@', '$size', '$<=', '$>=', '$<=>', '$compare', '$any?']); - - self.$require("corelib/numeric"); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Number'); - - var $nesting = [self].concat($parent_nesting), $Number_coerce$2, $Number___id__$3, $Number_$plus$4, $Number_$minus$5, $Number_$$6, $Number_$slash$7, $Number_$percent$8, $Number_$$9, $Number_$$10, $Number_$$11, $Number_$lt$12, $Number_$lt_eq$13, $Number_$gt$14, $Number_$gt_eq$15, $Number_$lt_eq_gt$16, $Number_$lt$lt$17, $Number_$gt$gt$18, $Number_$$$19, $Number_$plus$$20, $Number_$minus$$21, $Number_$$22, $Number_$$$23, $Number_$eq_eq_eq$24, $Number_$eq_eq$25, $Number_abs$26, $Number_abs2$27, $Number_allbits$ques$28, $Number_anybits$ques$29, $Number_angle$30, $Number_bit_length$31, $Number_ceil$32, $Number_chr$33, $Number_denominator$34, $Number_downto$35, $Number_equal$ques$37, $Number_even$ques$38, $Number_floor$39, $Number_gcd$40, $Number_gcdlcm$41, $Number_integer$ques$42, $Number_is_a$ques$43, $Number_instance_of$ques$44, $Number_lcm$45, $Number_next$46, $Number_nobits$ques$47, $Number_nonzero$ques$48, $Number_numerator$49, $Number_odd$ques$50, $Number_ord$51, $Number_pow$52, $Number_pred$53, $Number_quo$54, $Number_rationalize$55, $Number_remainder$56, $Number_round$57, $Number_step$58, $Number_times$60, $Number_to_f$62, $Number_to_i$63, $Number_to_r$64, $Number_to_s$65, $Number_truncate$66, $Number_digits$67, $Number_divmod$68, $Number_upto$69, $Number_zero$ques$71, $Number_size$72, $Number_nan$ques$73, $Number_finite$ques$74, $Number_infinite$ques$75, $Number_positive$ques$76, $Number_negative$ques$77; - - - $$($nesting, 'Opal').$bridge(Number, self); - Opal.defineProperty(self.$$prototype, '$$is_number', true); - self.$$is_number_class = true; - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $allocate$1; - - - - Opal.def(self, '$allocate', $allocate$1 = function $$allocate() { - var self = this; - - return self.$raise($$($nesting, 'TypeError'), "" + "allocator undefined for " + (self.$name())) - }, $allocate$1.$$arity = 0); - - - Opal.udef(self, '$' + "new");; - return nil;; - })(Opal.get_singleton_class(self), $nesting); - - Opal.def(self, '$coerce', $Number_coerce$2 = function $$coerce(other) { - var self = this; - - - if (other === nil) { - self.$raise($$($nesting, 'TypeError'), "" + "can't convert " + (other.$class()) + " into Float"); - } - else if (other.$$is_string) { - return [self.$Float(other), self]; - } - else if (other['$respond_to?']("to_f")) { - return [$$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Float'), "to_f"), self]; - } - else if (other.$$is_number) { - return [other, self]; - } - else { - self.$raise($$($nesting, 'TypeError'), "" + "can't convert " + (other.$class()) + " into Float"); - } - - }, $Number_coerce$2.$$arity = 1); - - Opal.def(self, '$__id__', $Number___id__$3 = function $$__id__() { - var self = this; - - return (self * 2) + 1; - }, $Number___id__$3.$$arity = 0); - Opal.alias(self, "object_id", "__id__"); - - Opal.def(self, '$+', $Number_$plus$4 = function(other) { - var self = this; - - - if (other.$$is_number) { - return self + other; - } - else { - return self.$__coerced__("+", other); - } - - }, $Number_$plus$4.$$arity = 1); - - Opal.def(self, '$-', $Number_$minus$5 = function(other) { - var self = this; - - - if (other.$$is_number) { - return self - other; - } - else { - return self.$__coerced__("-", other); - } - - }, $Number_$minus$5.$$arity = 1); - - Opal.def(self, '$*', $Number_$$6 = function(other) { - var self = this; - - - if (other.$$is_number) { - return self * other; - } - else { - return self.$__coerced__("*", other); - } - - }, $Number_$$6.$$arity = 1); - - Opal.def(self, '$/', $Number_$slash$7 = function(other) { - var self = this; - - - if (other.$$is_number) { - return self / other; - } - else { - return self.$__coerced__("/", other); - } - - }, $Number_$slash$7.$$arity = 1); - Opal.alias(self, "fdiv", "/"); - - Opal.def(self, '$%', $Number_$percent$8 = function(other) { - var self = this; - - - if (other.$$is_number) { - if (other == -Infinity) { - return other; - } - else if (other == 0) { - self.$raise($$($nesting, 'ZeroDivisionError'), "divided by 0"); - } - else if (other < 0 || self < 0) { - return (self % other + other) % other; - } - else { - return self % other; - } - } - else { - return self.$__coerced__("%", other); - } - - }, $Number_$percent$8.$$arity = 1); - - Opal.def(self, '$&', $Number_$$9 = function(other) { - var self = this; - - - if (other.$$is_number) { - return self & other; - } - else { - return self.$__coerced__("&", other); - } - - }, $Number_$$9.$$arity = 1); - - Opal.def(self, '$|', $Number_$$10 = function(other) { - var self = this; - - - if (other.$$is_number) { - return self | other; - } - else { - return self.$__coerced__("|", other); - } - - }, $Number_$$10.$$arity = 1); - - Opal.def(self, '$^', $Number_$$11 = function(other) { - var self = this; - - - if (other.$$is_number) { - return self ^ other; - } - else { - return self.$__coerced__("^", other); - } - - }, $Number_$$11.$$arity = 1); - - Opal.def(self, '$<', $Number_$lt$12 = function(other) { - var self = this; - - - if (other.$$is_number) { - return self < other; - } - else { - return self.$__coerced__("<", other); - } - - }, $Number_$lt$12.$$arity = 1); - - Opal.def(self, '$<=', $Number_$lt_eq$13 = function(other) { - var self = this; - - - if (other.$$is_number) { - return self <= other; - } - else { - return self.$__coerced__("<=", other); - } - - }, $Number_$lt_eq$13.$$arity = 1); - - Opal.def(self, '$>', $Number_$gt$14 = function(other) { - var self = this; - - - if (other.$$is_number) { - return self > other; - } - else { - return self.$__coerced__(">", other); - } - - }, $Number_$gt$14.$$arity = 1); - - Opal.def(self, '$>=', $Number_$gt_eq$15 = function(other) { - var self = this; - - - if (other.$$is_number) { - return self >= other; - } - else { - return self.$__coerced__(">=", other); - } - - }, $Number_$gt_eq$15.$$arity = 1); - - var spaceship_operator = function(self, other) { - if (other.$$is_number) { - if (isNaN(self) || isNaN(other)) { - return nil; - } - - if (self > other) { - return 1; - } else if (self < other) { - return -1; - } else { - return 0; - } - } - else { - return self.$__coerced__("<=>", other); - } - } - ; - - Opal.def(self, '$<=>', $Number_$lt_eq_gt$16 = function(other) { - var self = this; - - try { - return spaceship_operator(self, other); - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'ArgumentError')])) { - try { - return nil - } finally { Opal.pop_exception() } - } else { throw $err; } - } - }, $Number_$lt_eq_gt$16.$$arity = 1); - - Opal.def(self, '$<<', $Number_$lt$lt$17 = function(count) { - var self = this; - - - count = $$($nesting, 'Opal')['$coerce_to!'](count, $$($nesting, 'Integer'), "to_int"); - return count > 0 ? self << count : self >> -count; - }, $Number_$lt$lt$17.$$arity = 1); - - Opal.def(self, '$>>', $Number_$gt$gt$18 = function(count) { - var self = this; - - - count = $$($nesting, 'Opal')['$coerce_to!'](count, $$($nesting, 'Integer'), "to_int"); - return count > 0 ? self >> count : self << -count; - }, $Number_$gt$gt$18.$$arity = 1); - - Opal.def(self, '$[]', $Number_$$$19 = function(bit) { - var self = this; - - - bit = $$($nesting, 'Opal')['$coerce_to!'](bit, $$($nesting, 'Integer'), "to_int"); - - if (bit < 0) { - return 0; - } - if (bit >= 32) { - return self < 0 ? 1 : 0; - } - return (self >> bit) & 1; - ; - }, $Number_$$$19.$$arity = 1); - - Opal.def(self, '$+@', $Number_$plus$$20 = function() { - var self = this; - - return +self; - }, $Number_$plus$$20.$$arity = 0); - - Opal.def(self, '$-@', $Number_$minus$$21 = function() { - var self = this; - - return -self; - }, $Number_$minus$$21.$$arity = 0); - - Opal.def(self, '$~', $Number_$$22 = function() { - var self = this; - - return ~self; - }, $Number_$$22.$$arity = 0); - - Opal.def(self, '$**', $Number_$$$23 = function(other) { - var $a, $b, self = this; - - if ($truthy($$($nesting, 'Integer')['$==='](other))) { - if ($truthy(($truthy($a = $$($nesting, 'Integer')['$==='](self)['$!']()) ? $a : $rb_gt(other, 0)))) { - return Math.pow(self, other); - } else { - return $$($nesting, 'Rational').$new(self, 1)['$**'](other) - } - } else if ($truthy((($a = $rb_lt(self, 0)) ? ($truthy($b = $$($nesting, 'Float')['$==='](other)) ? $b : $$($nesting, 'Rational')['$==='](other)) : $rb_lt(self, 0)))) { - return $$($nesting, 'Complex').$new(self, 0)['$**'](other.$to_f()) - } else if ($truthy(other.$$is_number != null)) { - return Math.pow(self, other); - } else { - return self.$__coerced__("**", other) - } - }, $Number_$$$23.$$arity = 1); - - Opal.def(self, '$===', $Number_$eq_eq_eq$24 = function(other) { - var self = this; - - - if (other.$$is_number) { - return self.valueOf() === other.valueOf(); - } - else if (other['$respond_to?']("==")) { - return other['$=='](self); - } - else { - return false; - } - - }, $Number_$eq_eq_eq$24.$$arity = 1); - - Opal.def(self, '$==', $Number_$eq_eq$25 = function(other) { - var self = this; - - - if (other.$$is_number) { - return self.valueOf() === other.valueOf(); - } - else if (other['$respond_to?']("==")) { - return other['$=='](self); - } - else { - return false; - } - - }, $Number_$eq_eq$25.$$arity = 1); - - Opal.def(self, '$abs', $Number_abs$26 = function $$abs() { - var self = this; - - return Math.abs(self); - }, $Number_abs$26.$$arity = 0); - - Opal.def(self, '$abs2', $Number_abs2$27 = function $$abs2() { - var self = this; - - return Math.abs(self * self); - }, $Number_abs2$27.$$arity = 0); - - Opal.def(self, '$allbits?', $Number_allbits$ques$28 = function(mask) { - var self = this; - - - mask = $$($nesting, 'Opal')['$coerce_to!'](mask, $$($nesting, 'Integer'), "to_int"); - return (self & mask) == mask;; - }, $Number_allbits$ques$28.$$arity = 1); - - Opal.def(self, '$anybits?', $Number_anybits$ques$29 = function(mask) { - var self = this; - - - mask = $$($nesting, 'Opal')['$coerce_to!'](mask, $$($nesting, 'Integer'), "to_int"); - return (self & mask) !== 0;; - }, $Number_anybits$ques$29.$$arity = 1); - - Opal.def(self, '$angle', $Number_angle$30 = function $$angle() { - var self = this; - - - if ($truthy(self['$nan?']())) { - return self}; - - if (self == 0) { - if (1 / self > 0) { - return 0; - } - else { - return Math.PI; - } - } - else if (self < 0) { - return Math.PI; - } - else { - return 0; - } - ; - }, $Number_angle$30.$$arity = 0); - Opal.alias(self, "arg", "angle"); - Opal.alias(self, "phase", "angle"); - - Opal.def(self, '$bit_length', $Number_bit_length$31 = function $$bit_length() { - var self = this; - - - if ($truthy($$($nesting, 'Integer')['$==='](self))) { - } else { - self.$raise($$($nesting, 'NoMethodError').$new("" + "undefined method `bit_length` for " + (self) + ":Float", "bit_length")) - }; - - if (self === 0 || self === -1) { - return 0; - } - - var result = 0, - value = self < 0 ? ~self : self; - - while (value != 0) { - result += 1; - value >>>= 1; - } - - return result; - ; - }, $Number_bit_length$31.$$arity = 0); - - Opal.def(self, '$ceil', $Number_ceil$32 = function $$ceil(ndigits) { - var self = this; - - - - if (ndigits == null) { - ndigits = 0; - }; - - var f = self.$to_f(); - - if (f % 1 === 0 && ndigits >= 0) { - return f; - } - - var factor = Math.pow(10, ndigits), - result = Math.ceil(f * factor) / factor; - - if (f % 1 === 0) { - result = Math.round(result); - } - - return result; - ; - }, $Number_ceil$32.$$arity = -1); - - Opal.def(self, '$chr', $Number_chr$33 = function $$chr(encoding) { - var self = this; - - - ; - return String.fromCharCode(self);; - }, $Number_chr$33.$$arity = -1); - - Opal.def(self, '$denominator', $Number_denominator$34 = function $$denominator() { - var $a, $iter = $Number_denominator$34.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Number_denominator$34.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - if ($truthy(($truthy($a = self['$nan?']()) ? $a : self['$infinite?']()))) { - return 1 - } else { - return $send(self, Opal.find_super_dispatcher(self, 'denominator', $Number_denominator$34, false), $zuper, $iter) - } - }, $Number_denominator$34.$$arity = 0); - - Opal.def(self, '$downto', $Number_downto$35 = function $$downto(stop) { - var $iter = $Number_downto$35.$$p, block = $iter || nil, $$36, self = this; - - if ($iter) $Number_downto$35.$$p = null; - - - if ($iter) $Number_downto$35.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["downto", stop], ($$36 = function(){var self = $$36.$$s || this; - - - if ($truthy($$($nesting, 'Numeric')['$==='](stop))) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") - }; - if ($truthy($rb_gt(stop, self))) { - return 0 - } else { - return $rb_plus($rb_minus(self, stop), 1) - };}, $$36.$$s = self, $$36.$$arity = 0, $$36)) - }; - - if (!stop.$$is_number) { - self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") - } - for (var i = self; i >= stop; i--) { - block(i); - } - ; - return self; - }, $Number_downto$35.$$arity = 1); - Opal.alias(self, "eql?", "=="); - - Opal.def(self, '$equal?', $Number_equal$ques$37 = function(other) { - var $a, self = this; - - return ($truthy($a = self['$=='](other)) ? $a : isNaN(self) && isNaN(other)) - }, $Number_equal$ques$37.$$arity = 1); - - Opal.def(self, '$even?', $Number_even$ques$38 = function() { - var self = this; - - return self % 2 === 0; - }, $Number_even$ques$38.$$arity = 0); - - Opal.def(self, '$floor', $Number_floor$39 = function $$floor(ndigits) { - var self = this; - - - - if (ndigits == null) { - ndigits = 0; - }; - - var f = self.$to_f(); - - if (f % 1 === 0 && ndigits >= 0) { - return f; - } - - var factor = Math.pow(10, ndigits), - result = Math.floor(f * factor) / factor; - - if (f % 1 === 0) { - result = Math.round(result); - } - - return result; - ; - }, $Number_floor$39.$$arity = -1); - - Opal.def(self, '$gcd', $Number_gcd$40 = function $$gcd(other) { - var self = this; - - - if ($truthy($$($nesting, 'Integer')['$==='](other))) { - } else { - self.$raise($$($nesting, 'TypeError'), "not an integer") - }; - - var min = Math.abs(self), - max = Math.abs(other); - - while (min > 0) { - var tmp = min; - - min = max % min; - max = tmp; - } - - return max; - ; - }, $Number_gcd$40.$$arity = 1); - - Opal.def(self, '$gcdlcm', $Number_gcdlcm$41 = function $$gcdlcm(other) { - var self = this; - - return [self.$gcd(), self.$lcm()] - }, $Number_gcdlcm$41.$$arity = 1); - - Opal.def(self, '$integer?', $Number_integer$ques$42 = function() { - var self = this; - - return self % 1 === 0; - }, $Number_integer$ques$42.$$arity = 0); - - Opal.def(self, '$is_a?', $Number_is_a$ques$43 = function(klass) { - var $a, $iter = $Number_is_a$ques$43.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Number_is_a$ques$43.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - if ($truthy((($a = klass['$==']($$($nesting, 'Integer'))) ? $$($nesting, 'Integer')['$==='](self) : klass['$==']($$($nesting, 'Integer'))))) { - return true}; - if ($truthy((($a = klass['$==']($$($nesting, 'Integer'))) ? $$($nesting, 'Integer')['$==='](self) : klass['$==']($$($nesting, 'Integer'))))) { - return true}; - if ($truthy((($a = klass['$==']($$($nesting, 'Float'))) ? $$($nesting, 'Float')['$==='](self) : klass['$==']($$($nesting, 'Float'))))) { - return true}; - return $send(self, Opal.find_super_dispatcher(self, 'is_a?', $Number_is_a$ques$43, false), $zuper, $iter); - }, $Number_is_a$ques$43.$$arity = 1); - Opal.alias(self, "kind_of?", "is_a?"); - - Opal.def(self, '$instance_of?', $Number_instance_of$ques$44 = function(klass) { - var $a, $iter = $Number_instance_of$ques$44.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Number_instance_of$ques$44.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - if ($truthy((($a = klass['$==']($$($nesting, 'Integer'))) ? $$($nesting, 'Integer')['$==='](self) : klass['$==']($$($nesting, 'Integer'))))) { - return true}; - if ($truthy((($a = klass['$==']($$($nesting, 'Integer'))) ? $$($nesting, 'Integer')['$==='](self) : klass['$==']($$($nesting, 'Integer'))))) { - return true}; - if ($truthy((($a = klass['$==']($$($nesting, 'Float'))) ? $$($nesting, 'Float')['$==='](self) : klass['$==']($$($nesting, 'Float'))))) { - return true}; - return $send(self, Opal.find_super_dispatcher(self, 'instance_of?', $Number_instance_of$ques$44, false), $zuper, $iter); - }, $Number_instance_of$ques$44.$$arity = 1); - - Opal.def(self, '$lcm', $Number_lcm$45 = function $$lcm(other) { - var self = this; - - - if ($truthy($$($nesting, 'Integer')['$==='](other))) { - } else { - self.$raise($$($nesting, 'TypeError'), "not an integer") - }; - - if (self == 0 || other == 0) { - return 0; - } - else { - return Math.abs(self * other / self.$gcd(other)); - } - ; - }, $Number_lcm$45.$$arity = 1); - Opal.alias(self, "magnitude", "abs"); - Opal.alias(self, "modulo", "%"); - - Opal.def(self, '$next', $Number_next$46 = function $$next() { - var self = this; - - return self + 1; - }, $Number_next$46.$$arity = 0); - - Opal.def(self, '$nobits?', $Number_nobits$ques$47 = function(mask) { - var self = this; - - - mask = $$($nesting, 'Opal')['$coerce_to!'](mask, $$($nesting, 'Integer'), "to_int"); - return (self & mask) == 0;; - }, $Number_nobits$ques$47.$$arity = 1); - - Opal.def(self, '$nonzero?', $Number_nonzero$ques$48 = function() { - var self = this; - - return self == 0 ? nil : self; - }, $Number_nonzero$ques$48.$$arity = 0); - - Opal.def(self, '$numerator', $Number_numerator$49 = function $$numerator() { - var $a, $iter = $Number_numerator$49.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Number_numerator$49.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - if ($truthy(($truthy($a = self['$nan?']()) ? $a : self['$infinite?']()))) { - return self - } else { - return $send(self, Opal.find_super_dispatcher(self, 'numerator', $Number_numerator$49, false), $zuper, $iter) - } - }, $Number_numerator$49.$$arity = 0); - - Opal.def(self, '$odd?', $Number_odd$ques$50 = function() { - var self = this; - - return self % 2 !== 0; - }, $Number_odd$ques$50.$$arity = 0); - - Opal.def(self, '$ord', $Number_ord$51 = function $$ord() { - var self = this; - - return self - }, $Number_ord$51.$$arity = 0); - - Opal.def(self, '$pow', $Number_pow$52 = function $$pow(b, m) { - var self = this; - - - ; - - if (self == 0) { - self.$raise($$($nesting, 'ZeroDivisionError'), "divided by 0") - } - - if (m === undefined) { - return self['$**'](b); - } else { - if (!($$($nesting, 'Integer')['$==='](b))) { - self.$raise($$($nesting, 'TypeError'), "Integer#pow() 2nd argument not allowed unless a 1st argument is integer") - } - - if (b < 0) { - self.$raise($$($nesting, 'TypeError'), "Integer#pow() 1st argument cannot be negative when 2nd argument specified") - } - - if (!($$($nesting, 'Integer')['$==='](m))) { - self.$raise($$($nesting, 'TypeError'), "Integer#pow() 2nd argument not allowed unless all arguments are integers") - } - - if (m === 0) { - self.$raise($$($nesting, 'ZeroDivisionError'), "divided by 0") - } - - return self['$**'](b)['$%'](m) - } - ; - }, $Number_pow$52.$$arity = -2); - - Opal.def(self, '$pred', $Number_pred$53 = function $$pred() { - var self = this; - - return self - 1; - }, $Number_pred$53.$$arity = 0); - - Opal.def(self, '$quo', $Number_quo$54 = function $$quo(other) { - var $iter = $Number_quo$54.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Number_quo$54.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - if ($truthy($$($nesting, 'Integer')['$==='](self))) { - return $send(self, Opal.find_super_dispatcher(self, 'quo', $Number_quo$54, false), $zuper, $iter) - } else { - return $rb_divide(self, other) - } - }, $Number_quo$54.$$arity = 1); - - Opal.def(self, '$rationalize', $Number_rationalize$55 = function $$rationalize(eps) { - var $a, $b, self = this, f = nil, n = nil; - - - ; - - if (arguments.length > 1) { - self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " for 0..1)"); - } - ; - if ($truthy($$($nesting, 'Integer')['$==='](self))) { - return $$($nesting, 'Rational').$new(self, 1) - } else if ($truthy(self['$infinite?']())) { - return self.$raise($$($nesting, 'FloatDomainError'), "Infinity") - } else if ($truthy(self['$nan?']())) { - return self.$raise($$($nesting, 'FloatDomainError'), "NaN") - } else if ($truthy(eps == null)) { - - $b = $$($nesting, 'Math').$frexp(self), $a = Opal.to_ary($b), (f = ($a[0] == null ? nil : $a[0])), (n = ($a[1] == null ? nil : $a[1])), $b; - f = $$($nesting, 'Math').$ldexp(f, $$$($$($nesting, 'Float'), 'MANT_DIG')).$to_i(); - n = $rb_minus(n, $$$($$($nesting, 'Float'), 'MANT_DIG')); - return $$($nesting, 'Rational').$new($rb_times(2, f), (1)['$<<']($rb_minus(1, n))).$rationalize($$($nesting, 'Rational').$new(1, (1)['$<<']($rb_minus(1, n)))); - } else { - return self.$to_r().$rationalize(eps) - }; - }, $Number_rationalize$55.$$arity = -1); - - Opal.def(self, '$remainder', $Number_remainder$56 = function $$remainder(y) { - var self = this; - - return $rb_minus(self, $rb_times(y, $rb_divide(self, y).$truncate())) - }, $Number_remainder$56.$$arity = 1); - - Opal.def(self, '$round', $Number_round$57 = function $$round(ndigits) { - var $a, $b, self = this, _ = nil, exp = nil; - - - ; - if ($truthy($$($nesting, 'Integer')['$==='](self))) { - - if ($truthy(ndigits == null)) { - return self}; - if ($truthy(($truthy($a = $$($nesting, 'Float')['$==='](ndigits)) ? ndigits['$infinite?']() : $a))) { - self.$raise($$($nesting, 'RangeError'), "Infinity")}; - ndigits = $$($nesting, 'Opal')['$coerce_to!'](ndigits, $$($nesting, 'Integer'), "to_int"); - if ($truthy($rb_lt(ndigits, $$$($$($nesting, 'Integer'), 'MIN')))) { - self.$raise($$($nesting, 'RangeError'), "out of bounds")}; - if ($truthy(ndigits >= 0)) { - return self}; - ndigits = ndigits['$-@'](); - - if (0.415241 * ndigits - 0.125 > self.$size()) { - return 0; - } - - var f = Math.pow(10, ndigits), - x = Math.floor((Math.abs(x) + f / 2) / f) * f; - - return self < 0 ? -x : x; - ; - } else { - - if ($truthy(($truthy($a = self['$nan?']()) ? ndigits == null : $a))) { - self.$raise($$($nesting, 'FloatDomainError'), "NaN")}; - ndigits = $$($nesting, 'Opal')['$coerce_to!'](ndigits || 0, $$($nesting, 'Integer'), "to_int"); - if ($truthy($rb_le(ndigits, 0))) { - if ($truthy(self['$nan?']())) { - self.$raise($$($nesting, 'RangeError'), "NaN") - } else if ($truthy(self['$infinite?']())) { - self.$raise($$($nesting, 'FloatDomainError'), "Infinity")} - } else if (ndigits['$=='](0)) { - return Math.round(self) - } else if ($truthy(($truthy($a = self['$nan?']()) ? $a : self['$infinite?']()))) { - return self}; - $b = $$($nesting, 'Math').$frexp(self), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (exp = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy($rb_ge(ndigits, $rb_minus($rb_plus($$$($$($nesting, 'Float'), 'DIG'), 2), (function() {if ($truthy($rb_gt(exp, 0))) { - return $rb_divide(exp, 4) - } else { - return $rb_minus($rb_divide(exp, 3), 1) - }; return nil; })())))) { - return self}; - if ($truthy($rb_lt(ndigits, (function() {if ($truthy($rb_gt(exp, 0))) { - return $rb_plus($rb_divide(exp, 3), 1) - } else { - return $rb_divide(exp, 4) - }; return nil; })()['$-@']()))) { - return 0}; - return Math.round(self * Math.pow(10, ndigits)) / Math.pow(10, ndigits);; - }; - }, $Number_round$57.$$arity = -1); - - Opal.def(self, '$step', $Number_step$58 = function $$step($a, $b, $c) { - var $iter = $Number_step$58.$$p, block = $iter || nil, $post_args, $kwargs, limit, step, to, by, $$59, self = this, positional_args = nil, keyword_args = nil; - - if ($iter) $Number_step$58.$$p = null; - - - if ($iter) $Number_step$58.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - $kwargs = Opal.extract_kwargs($post_args); - - if ($kwargs == null) { - $kwargs = $hash2([], {}); - } else if (!$kwargs.$$is_hash) { - throw Opal.ArgumentError.$new('expected kwargs'); - }; - - if ($post_args.length > 0) { - limit = $post_args[0]; - $post_args.splice(0, 1); - }; - - if ($post_args.length > 0) { - step = $post_args[0]; - $post_args.splice(0, 1); - }; - - to = $kwargs.$$smap["to"];; - - by = $kwargs.$$smap["by"];; - - if (limit !== undefined && to !== undefined) { - self.$raise($$($nesting, 'ArgumentError'), "to is given twice") - } - - if (step !== undefined && by !== undefined) { - self.$raise($$($nesting, 'ArgumentError'), "step is given twice") - } - - function validateParameters() { - if (to !== undefined) { - limit = to; - } - - if (limit === undefined) { - limit = nil; - } - - if (step === nil) { - self.$raise($$($nesting, 'TypeError'), "step must be numeric") - } - - if (step === 0) { - self.$raise($$($nesting, 'ArgumentError'), "step can't be 0") - } - - if (by !== undefined) { - step = by; - } - - if (step === nil || step == null) { - step = 1; - } - - var sign = step['$<=>'](0); - - if (sign === nil) { - self.$raise($$($nesting, 'ArgumentError'), "" + "0 can't be coerced into " + (step.$class())) - } - - if (limit === nil || limit == null) { - limit = sign > 0 ? $$$($$($nesting, 'Float'), 'INFINITY') : $$$($$($nesting, 'Float'), 'INFINITY')['$-@'](); - } - - $$($nesting, 'Opal').$compare(self, limit) - } - - function stepFloatSize() { - if ((step > 0 && self > limit) || (step < 0 && self < limit)) { - return 0; - } else if (step === Infinity || step === -Infinity) { - return 1; - } else { - var abs = Math.abs, floor = Math.floor, - err = (abs(self) + abs(limit) + abs(limit - self)) / abs(step) * $$$($$($nesting, 'Float'), 'EPSILON'); - - if (err === Infinity || err === -Infinity) { - return 0; - } else { - if (err > 0.5) { - err = 0.5; - } - - return floor((limit - self) / step + err) + 1 - } - } - } - - function stepSize() { - validateParameters(); - - if (step === 0) { - return Infinity; - } - - if (step % 1 !== 0) { - return stepFloatSize(); - } else if ((step > 0 && self > limit) || (step < 0 && self < limit)) { - return 0; - } else { - var ceil = Math.ceil, abs = Math.abs, - lhs = abs(self - limit) + 1, - rhs = abs(step); - - return ceil(lhs / rhs); - } - } - ; - if ((block !== nil)) { - } else { - - positional_args = []; - keyword_args = $hash2([], {}); - - if (limit !== undefined) { - positional_args.push(limit); - } - - if (step !== undefined) { - positional_args.push(step); - } - - if (to !== undefined) { - Opal.hash_put(keyword_args, "to", to); - } - - if (by !== undefined) { - Opal.hash_put(keyword_args, "by", by); - } - - if (keyword_args['$any?']()) { - positional_args.push(keyword_args); - } - ; - return $send(self, 'enum_for', ["step"].concat(Opal.to_a(positional_args)), ($$59 = function(){var self = $$59.$$s || this; - - return stepSize();}, $$59.$$s = self, $$59.$$arity = 0, $$59)); - }; - - validateParameters(); - - if (step === 0) { - while (true) { - block(self); - } - } - - if (self % 1 !== 0 || limit % 1 !== 0 || step % 1 !== 0) { - var n = stepFloatSize(); - - if (n > 0) { - if (step === Infinity || step === -Infinity) { - block(self); - } else { - var i = 0, d; - - if (step > 0) { - while (i < n) { - d = i * step + self; - if (limit < d) { - d = limit; - } - block(d); - i += 1; - } - } else { - while (i < n) { - d = i * step + self; - if (limit > d) { - d = limit; - } - block(d); - i += 1 - } - } - } - } - } else { - var value = self; - - if (step > 0) { - while (value <= limit) { - block(value); - value += step; - } - } else { - while (value >= limit) { - block(value); - value += step - } - } - } - - return self; - ; - }, $Number_step$58.$$arity = -1); - Opal.alias(self, "succ", "next"); - - Opal.def(self, '$times', $Number_times$60 = function $$times() { - var $iter = $Number_times$60.$$p, block = $iter || nil, $$61, self = this; - - if ($iter) $Number_times$60.$$p = null; - - - if ($iter) $Number_times$60.$$p = null;; - if ($truthy(block)) { - } else { - return $send(self, 'enum_for', ["times"], ($$61 = function(){var self = $$61.$$s || this; - - return self}, $$61.$$s = self, $$61.$$arity = 0, $$61)) - }; - - for (var i = 0; i < self; i++) { - block(i); - } - ; - return self; - }, $Number_times$60.$$arity = 0); - - Opal.def(self, '$to_f', $Number_to_f$62 = function $$to_f() { - var self = this; - - return self - }, $Number_to_f$62.$$arity = 0); - - Opal.def(self, '$to_i', $Number_to_i$63 = function $$to_i() { - var self = this; - - return parseInt(self, 10); - }, $Number_to_i$63.$$arity = 0); - Opal.alias(self, "to_int", "to_i"); - - Opal.def(self, '$to_r', $Number_to_r$64 = function $$to_r() { - var $a, $b, self = this, f = nil, e = nil; - - if ($truthy($$($nesting, 'Integer')['$==='](self))) { - return $$($nesting, 'Rational').$new(self, 1) - } else { - - $b = $$($nesting, 'Math').$frexp(self), $a = Opal.to_ary($b), (f = ($a[0] == null ? nil : $a[0])), (e = ($a[1] == null ? nil : $a[1])), $b; - f = $$($nesting, 'Math').$ldexp(f, $$$($$($nesting, 'Float'), 'MANT_DIG')).$to_i(); - e = $rb_minus(e, $$$($$($nesting, 'Float'), 'MANT_DIG')); - return $rb_times(f, $$$($$($nesting, 'Float'), 'RADIX')['$**'](e)).$to_r(); - } - }, $Number_to_r$64.$$arity = 0); - - Opal.def(self, '$to_s', $Number_to_s$65 = function $$to_s(base) { - var $a, self = this; - - - - if (base == null) { - base = 10; - }; - base = $$($nesting, 'Opal')['$coerce_to!'](base, $$($nesting, 'Integer'), "to_int"); - if ($truthy(($truthy($a = $rb_lt(base, 2)) ? $a : $rb_gt(base, 36)))) { - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid radix " + (base))}; - return self.toString(base);; - }, $Number_to_s$65.$$arity = -1); - - Opal.def(self, '$truncate', $Number_truncate$66 = function $$truncate(ndigits) { - var self = this; - - - - if (ndigits == null) { - ndigits = 0; - }; - - var f = self.$to_f(); - - if (f % 1 === 0 && ndigits >= 0) { - return f; - } - - var factor = Math.pow(10, ndigits), - result = parseInt(f * factor, 10) / factor; - - if (f % 1 === 0) { - result = Math.round(result); - } - - return result; - ; - }, $Number_truncate$66.$$arity = -1); - Opal.alias(self, "inspect", "to_s"); - - Opal.def(self, '$digits', $Number_digits$67 = function $$digits(base) { - var self = this; - - - - if (base == null) { - base = 10; - }; - if ($rb_lt(self, 0)) { - self.$raise($$$($$($nesting, 'Math'), 'DomainError'), "out of domain")}; - base = $$($nesting, 'Opal')['$coerce_to!'](base, $$($nesting, 'Integer'), "to_int"); - if ($truthy($rb_lt(base, 2))) { - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid radix " + (base))}; - - var value = self, result = []; - - while (value !== 0) { - result.push(value % base); - value = parseInt(value / base, 10); - } - - return result; - ; - }, $Number_digits$67.$$arity = -1); - - Opal.def(self, '$divmod', $Number_divmod$68 = function $$divmod(other) { - var $a, $iter = $Number_divmod$68.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Number_divmod$68.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - if ($truthy(($truthy($a = self['$nan?']()) ? $a : other['$nan?']()))) { - return self.$raise($$($nesting, 'FloatDomainError'), "NaN") - } else if ($truthy(self['$infinite?']())) { - return self.$raise($$($nesting, 'FloatDomainError'), "Infinity") - } else { - return $send(self, Opal.find_super_dispatcher(self, 'divmod', $Number_divmod$68, false), $zuper, $iter) - } - }, $Number_divmod$68.$$arity = 1); - - Opal.def(self, '$upto', $Number_upto$69 = function $$upto(stop) { - var $iter = $Number_upto$69.$$p, block = $iter || nil, $$70, self = this; - - if ($iter) $Number_upto$69.$$p = null; - - - if ($iter) $Number_upto$69.$$p = null;; - if ((block !== nil)) { - } else { - return $send(self, 'enum_for', ["upto", stop], ($$70 = function(){var self = $$70.$$s || this; - - - if ($truthy($$($nesting, 'Numeric')['$==='](stop))) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") - }; - if ($truthy($rb_lt(stop, self))) { - return 0 - } else { - return $rb_plus($rb_minus(stop, self), 1) - };}, $$70.$$s = self, $$70.$$arity = 0, $$70)) - }; - - if (!stop.$$is_number) { - self.$raise($$($nesting, 'ArgumentError'), "" + "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") - } - for (var i = self; i <= stop; i++) { - block(i); - } - ; - return self; - }, $Number_upto$69.$$arity = 1); - - Opal.def(self, '$zero?', $Number_zero$ques$71 = function() { - var self = this; - - return self == 0; - }, $Number_zero$ques$71.$$arity = 0); - - Opal.def(self, '$size', $Number_size$72 = function $$size() { - var self = this; - - return 4 - }, $Number_size$72.$$arity = 0); - - Opal.def(self, '$nan?', $Number_nan$ques$73 = function() { - var self = this; - - return isNaN(self); - }, $Number_nan$ques$73.$$arity = 0); - - Opal.def(self, '$finite?', $Number_finite$ques$74 = function() { - var self = this; - - return self != Infinity && self != -Infinity && !isNaN(self); - }, $Number_finite$ques$74.$$arity = 0); - - Opal.def(self, '$infinite?', $Number_infinite$ques$75 = function() { - var self = this; - - - if (self == Infinity) { - return +1; - } - else if (self == -Infinity) { - return -1; - } - else { - return nil; - } - - }, $Number_infinite$ques$75.$$arity = 0); - - Opal.def(self, '$positive?', $Number_positive$ques$76 = function() { - var self = this; - - return self != 0 && (self == Infinity || 1 / self > 0); - }, $Number_positive$ques$76.$$arity = 0); - return (Opal.def(self, '$negative?', $Number_negative$ques$77 = function() { - var self = this; - - return self == -Infinity || 1 / self < 0; - }, $Number_negative$ques$77.$$arity = 0), nil) && 'negative?'; - })($nesting[0], $$($nesting, 'Numeric'), $nesting); - Opal.const_set($nesting[0], 'Fixnum', $$($nesting, 'Number')); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Integer'); - - var $nesting = [self].concat($parent_nesting); - - - self.$$is_number_class = true; - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $allocate$78, $eq_eq_eq$79, $sqrt$80; - - - - Opal.def(self, '$allocate', $allocate$78 = function $$allocate() { - var self = this; - - return self.$raise($$($nesting, 'TypeError'), "" + "allocator undefined for " + (self.$name())) - }, $allocate$78.$$arity = 0); - - Opal.udef(self, '$' + "new");; - - Opal.def(self, '$===', $eq_eq_eq$79 = function(other) { - var self = this; - - - if (!other.$$is_number) { - return false; - } - - return (other % 1) === 0; - - }, $eq_eq_eq$79.$$arity = 1); - return (Opal.def(self, '$sqrt', $sqrt$80 = function $$sqrt(n) { - var self = this; - - - n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); - - if (n < 0) { - self.$raise($$$($$($nesting, 'Math'), 'DomainError'), "Numerical argument is out of domain - \"isqrt\"") - } - - return parseInt(Math.sqrt(n), 10); - ; - }, $sqrt$80.$$arity = 1), nil) && 'sqrt'; - })(Opal.get_singleton_class(self), $nesting); - Opal.const_set($nesting[0], 'MAX', Math.pow(2, 30) - 1); - return Opal.const_set($nesting[0], 'MIN', -Math.pow(2, 30)); - })($nesting[0], $$($nesting, 'Numeric'), $nesting); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Float'); - - var $nesting = [self].concat($parent_nesting); - - - self.$$is_number_class = true; - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $allocate$81, $eq_eq_eq$82; - - - - Opal.def(self, '$allocate', $allocate$81 = function $$allocate() { - var self = this; - - return self.$raise($$($nesting, 'TypeError'), "" + "allocator undefined for " + (self.$name())) - }, $allocate$81.$$arity = 0); - - Opal.udef(self, '$' + "new");; - return (Opal.def(self, '$===', $eq_eq_eq$82 = function(other) { - var self = this; - - return !!other.$$is_number; - }, $eq_eq_eq$82.$$arity = 1), nil) && '==='; - })(Opal.get_singleton_class(self), $nesting); - Opal.const_set($nesting[0], 'INFINITY', Infinity); - Opal.const_set($nesting[0], 'MAX', Number.MAX_VALUE); - Opal.const_set($nesting[0], 'MIN', Number.MIN_VALUE); - Opal.const_set($nesting[0], 'NAN', NaN); - Opal.const_set($nesting[0], 'DIG', 15); - Opal.const_set($nesting[0], 'MANT_DIG', 53); - Opal.const_set($nesting[0], 'RADIX', 2); - return Opal.const_set($nesting[0], 'EPSILON', Number.EPSILON || 2.2204460492503130808472633361816E-16); - })($nesting[0], $$($nesting, 'Numeric'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/range"] = function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$include', '$attr_reader', '$raise', '$<=>', '$include?', '$<=', '$<', '$enum_for', '$upto', '$to_proc', '$respond_to?', '$class', '$succ', '$!', '$==', '$===', '$exclude_end?', '$eql?', '$begin', '$end', '$last', '$to_a', '$>', '$-', '$abs', '$to_i', '$coerce_to!', '$ceil', '$/', '$size', '$loop', '$+', '$*', '$>=', '$each_with_index', '$%', '$bsearch', '$inspect', '$[]', '$hash']); - - self.$require("corelib/enumerable"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Range'); - - var $nesting = [self].concat($parent_nesting), $Range_initialize$1, $Range_$eq_eq$2, $Range_$eq_eq_eq$3, $Range_cover$ques$4, $Range_each$5, $Range_eql$ques$6, $Range_exclude_end$ques$7, $Range_first$8, $Range_last$9, $Range_max$10, $Range_min$11, $Range_size$12, $Range_step$13, $Range_bsearch$17, $Range_to_s$18, $Range_inspect$19, $Range_marshal_load$20, $Range_hash$21; - - self.$$prototype.begin = self.$$prototype.end = self.$$prototype.excl = nil; - - self.$include($$($nesting, 'Enumerable')); - self.$$prototype.$$is_range = true; - self.$attr_reader("begin", "end"); - - Opal.def(self, '$initialize', $Range_initialize$1 = function $$initialize(first, last, exclude) { - var self = this; - - - - if (exclude == null) { - exclude = false; - }; - if ($truthy(self.begin)) { - self.$raise($$($nesting, 'NameError'), "'initialize' called twice")}; - if ($truthy(first['$<=>'](last))) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "bad value for range") - }; - self.begin = first; - self.end = last; - return (self.excl = exclude); - }, $Range_initialize$1.$$arity = -3); - - Opal.def(self, '$==', $Range_$eq_eq$2 = function(other) { - var self = this; - - - if (!other.$$is_range) { - return false; - } - - return self.excl === other.excl && - self.begin == other.begin && - self.end == other.end; - - }, $Range_$eq_eq$2.$$arity = 1); - - Opal.def(self, '$===', $Range_$eq_eq_eq$3 = function(value) { - var self = this; - - return self['$include?'](value) - }, $Range_$eq_eq_eq$3.$$arity = 1); - - Opal.def(self, '$cover?', $Range_cover$ques$4 = function(value) { - var $a, self = this, beg_cmp = nil, end_cmp = nil; - - - beg_cmp = self.begin['$<=>'](value); - if ($truthy(($truthy($a = beg_cmp) ? $rb_le(beg_cmp, 0) : $a))) { - } else { - return false - }; - end_cmp = value['$<=>'](self.end); - if ($truthy(self.excl)) { - return ($truthy($a = end_cmp) ? $rb_lt(end_cmp, 0) : $a) - } else { - return ($truthy($a = end_cmp) ? $rb_le(end_cmp, 0) : $a) - }; - }, $Range_cover$ques$4.$$arity = 1); - - Opal.def(self, '$each', $Range_each$5 = function $$each() { - var $iter = $Range_each$5.$$p, block = $iter || nil, $a, self = this, current = nil, last = nil; - - if ($iter) $Range_each$5.$$p = null; - - - if ($iter) $Range_each$5.$$p = null;; - if ((block !== nil)) { - } else { - return self.$enum_for("each") - }; - - var i, limit; - - if (self.begin.$$is_number && self.end.$$is_number) { - if (self.begin % 1 !== 0 || self.end % 1 !== 0) { - self.$raise($$($nesting, 'TypeError'), "can't iterate from Float") - } - - for (i = self.begin, limit = self.end + (function() {if ($truthy(self.excl)) { - return 0 - } else { - return 1 - }; return nil; })(); i < limit; i++) { - block(i); - } - - return self; - } - - if (self.begin.$$is_string && self.end.$$is_string) { - $send(self.begin, 'upto', [self.end, self.excl], block.$to_proc()) - return self; - } - ; - current = self.begin; - last = self.end; - if ($truthy(current['$respond_to?']("succ"))) { - } else { - self.$raise($$($nesting, 'TypeError'), "" + "can't iterate from " + (current.$class())) - }; - while ($truthy($rb_lt(current['$<=>'](last), 0))) { - - Opal.yield1(block, current); - current = current.$succ(); - }; - if ($truthy(($truthy($a = self.excl['$!']()) ? current['$=='](last) : $a))) { - Opal.yield1(block, current)}; - return self; - }, $Range_each$5.$$arity = 0); - - Opal.def(self, '$eql?', $Range_eql$ques$6 = function(other) { - var $a, $b, self = this; - - - if ($truthy($$($nesting, 'Range')['$==='](other))) { - } else { - return false - }; - return ($truthy($a = ($truthy($b = self.excl['$==='](other['$exclude_end?']())) ? self.begin['$eql?'](other.$begin()) : $b)) ? self.end['$eql?'](other.$end()) : $a); - }, $Range_eql$ques$6.$$arity = 1); - - Opal.def(self, '$exclude_end?', $Range_exclude_end$ques$7 = function() { - var self = this; - - return self.excl - }, $Range_exclude_end$ques$7.$$arity = 0); - - Opal.def(self, '$first', $Range_first$8 = function $$first(n) { - var $iter = $Range_first$8.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Range_first$8.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - ; - if ($truthy(n == null)) { - return self.begin}; - return $send(self, Opal.find_super_dispatcher(self, 'first', $Range_first$8, false), $zuper, $iter); - }, $Range_first$8.$$arity = -1); - Opal.alias(self, "include?", "cover?"); - - Opal.def(self, '$last', $Range_last$9 = function $$last(n) { - var self = this; - - - ; - if ($truthy(n == null)) { - return self.end}; - return self.$to_a().$last(n); - }, $Range_last$9.$$arity = -1); - - Opal.def(self, '$max', $Range_max$10 = function $$max() { - var $a, $iter = $Range_max$10.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Range_max$10.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - if (($yield !== nil)) { - return $send(self, Opal.find_super_dispatcher(self, 'max', $Range_max$10, false), $zuper, $iter) - } else if ($truthy($rb_gt(self.begin, self.end))) { - return nil - } else if ($truthy(($truthy($a = self.excl) ? self.begin['$=='](self.end) : $a))) { - return nil - } else { - return self.excl ? self.end - 1 : self.end - } - }, $Range_max$10.$$arity = 0); - Opal.alias(self, "member?", "cover?"); - - Opal.def(self, '$min', $Range_min$11 = function $$min() { - var $a, $iter = $Range_min$11.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Range_min$11.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - if (($yield !== nil)) { - return $send(self, Opal.find_super_dispatcher(self, 'min', $Range_min$11, false), $zuper, $iter) - } else if ($truthy($rb_gt(self.begin, self.end))) { - return nil - } else if ($truthy(($truthy($a = self.excl) ? self.begin['$=='](self.end) : $a))) { - return nil - } else { - return self.begin - } - }, $Range_min$11.$$arity = 0); - - Opal.def(self, '$size', $Range_size$12 = function $$size() { - var $a, self = this, range_begin = nil, range_end = nil, infinity = nil; - - - range_begin = self.begin; - range_end = self.end; - if ($truthy(self.excl)) { - range_end = $rb_minus(range_end, 1)}; - if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](range_begin)) ? $$($nesting, 'Numeric')['$==='](range_end) : $a))) { - } else { - return nil - }; - if ($truthy($rb_lt(range_end, range_begin))) { - return 0}; - infinity = $$$($$($nesting, 'Float'), 'INFINITY'); - if ($truthy([range_begin.$abs(), range_end.$abs()]['$include?'](infinity))) { - return infinity}; - return (Math.abs(range_end - range_begin) + 1).$to_i(); - }, $Range_size$12.$$arity = 0); - - Opal.def(self, '$step', $Range_step$13 = function $$step(n) { - var $$14, $$15, $$16, $iter = $Range_step$13.$$p, $yield = $iter || nil, self = this, i = nil; - - if ($iter) $Range_step$13.$$p = null; - - - if (n == null) { - n = 1; - }; - - function coerceStepSize() { - if (!n.$$is_number) { - n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int") - } - - if (n < 0) { - self.$raise($$($nesting, 'ArgumentError'), "step can't be negative") - } else if (n === 0) { - self.$raise($$($nesting, 'ArgumentError'), "step can't be 0") - } - } - - function enumeratorSize() { - if (!self.begin['$respond_to?']("succ")) { - return nil; - } - - if (self.begin.$$is_string && self.end.$$is_string) { - return nil; - } - - if (n % 1 === 0) { - return $rb_divide(self.$size(), n).$ceil(); - } else { - // n is a float - var begin = self.begin, end = self.end, - abs = Math.abs, floor = Math.floor, - err = (abs(begin) + abs(end) + abs(end - begin)) / abs(n) * $$$($$($nesting, 'Float'), 'EPSILON'), - size; - - if (err > 0.5) { - err = 0.5; - } - - if (self.excl) { - size = floor((end - begin) / n - err); - if (size * n + begin < end) { - size++; - } - } else { - size = floor((end - begin) / n + err) + 1 - } - - return size; - } - } - ; - if (($yield !== nil)) { - } else { - return $send(self, 'enum_for', ["step", n], ($$14 = function(){var self = $$14.$$s || this; - - - coerceStepSize(); - return enumeratorSize(); - }, $$14.$$s = self, $$14.$$arity = 0, $$14)) - }; - coerceStepSize(); - if ($truthy(self.begin.$$is_number && self.end.$$is_number)) { - - i = 0; - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$15 = function(){var self = $$15.$$s || this, current = nil; - if (self.begin == null) self.begin = nil; - if (self.excl == null) self.excl = nil; - if (self.end == null) self.end = nil; - - - current = $rb_plus(self.begin, $rb_times(i, n)); - if ($truthy(self.excl)) { - if ($truthy($rb_ge(current, self.end))) { - - Opal.brk(nil, $brk)} - } else if ($truthy($rb_gt(current, self.end))) { - - Opal.brk(nil, $brk)}; - Opal.yield1($yield, current); - return (i = $rb_plus(i, 1));}, $$15.$$s = self, $$15.$$brk = $brk, $$15.$$arity = 0, $$15)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - } else { - - - if (self.begin.$$is_string && self.end.$$is_string && n % 1 !== 0) { - self.$raise($$($nesting, 'TypeError'), "no implicit conversion to float from string") - } - ; - $send(self, 'each_with_index', [], ($$16 = function(value, idx){var self = $$16.$$s || this; - - - - if (value == null) { - value = nil; - }; - - if (idx == null) { - idx = nil; - }; - if (idx['$%'](n)['$=='](0)) { - return Opal.yield1($yield, value); - } else { - return nil - };}, $$16.$$s = self, $$16.$$arity = 2, $$16)); - }; - return self; - }, $Range_step$13.$$arity = -1); - - Opal.def(self, '$bsearch', $Range_bsearch$17 = function $$bsearch() { - var $iter = $Range_bsearch$17.$$p, block = $iter || nil, self = this; - - if ($iter) $Range_bsearch$17.$$p = null; - - - if ($iter) $Range_bsearch$17.$$p = null;; - if ((block !== nil)) { - } else { - return self.$enum_for("bsearch") - }; - if ($truthy(self.begin.$$is_number && self.end.$$is_number)) { - } else { - self.$raise($$($nesting, 'TypeError'), "" + "can't do binary search for " + (self.begin.$class())) - }; - return $send(self.$to_a(), 'bsearch', [], block.$to_proc()); - }, $Range_bsearch$17.$$arity = 0); - - Opal.def(self, '$to_s', $Range_to_s$18 = function $$to_s() { - var self = this; - - return "" + (self.begin) + ((function() {if ($truthy(self.excl)) { - return "..." - } else { - return ".." - }; return nil; })()) + (self.end) - }, $Range_to_s$18.$$arity = 0); - - Opal.def(self, '$inspect', $Range_inspect$19 = function $$inspect() { - var self = this; - - return "" + (self.begin.$inspect()) + ((function() {if ($truthy(self.excl)) { - return "..." - } else { - return ".." - }; return nil; })()) + (self.end.$inspect()) - }, $Range_inspect$19.$$arity = 0); - - Opal.def(self, '$marshal_load', $Range_marshal_load$20 = function $$marshal_load(args) { - var self = this; - - - self.begin = args['$[]']("begin"); - self.end = args['$[]']("end"); - return (self.excl = args['$[]']("excl")); - }, $Range_marshal_load$20.$$arity = 1); - return (Opal.def(self, '$hash', $Range_hash$21 = function $$hash() { - var self = this; - - return [self.begin, self.end, self.excl].$hash() - }, $Range_hash$21.$$arity = 0), nil) && 'hash'; - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/proc"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$raise', '$coerce_to!']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Proc'); - - var $nesting = [self].concat($parent_nesting), $Proc_new$1, $Proc_call$2, $Proc_to_proc$3, $Proc_lambda$ques$4, $Proc_arity$5, $Proc_source_location$6, $Proc_binding$7, $Proc_parameters$8, $Proc_curry$9, $Proc_dup$10; - - - Opal.defineProperty(self.$$prototype, '$$is_proc', true); - Opal.defineProperty(self.$$prototype, '$$is_lambda', false); - Opal.defs(self, '$new', $Proc_new$1 = function() { - var $iter = $Proc_new$1.$$p, block = $iter || nil, self = this; - - if ($iter) $Proc_new$1.$$p = null; - - - if ($iter) $Proc_new$1.$$p = null;; - if ($truthy(block)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "tried to create a Proc object without a block") - }; - return block; - }, $Proc_new$1.$$arity = 0); - - Opal.def(self, '$call', $Proc_call$2 = function $$call($a) { - var $iter = $Proc_call$2.$$p, block = $iter || nil, $post_args, args, self = this; - - if ($iter) $Proc_call$2.$$p = null; - - - if ($iter) $Proc_call$2.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - - if (block !== nil) { - self.$$p = block; - } - - var result, $brk = self.$$brk; - - if ($brk) { - try { - if (self.$$is_lambda) { - result = self.apply(null, args); - } - else { - result = Opal.yieldX(self, args); - } - } catch (err) { - if (err === $brk) { - return $brk.$v - } - else { - throw err - } - } - } - else { - if (self.$$is_lambda) { - result = self.apply(null, args); - } - else { - result = Opal.yieldX(self, args); - } - } - - return result; - ; - }, $Proc_call$2.$$arity = -1); - Opal.alias(self, "[]", "call"); - Opal.alias(self, "===", "call"); - Opal.alias(self, "yield", "call"); - - Opal.def(self, '$to_proc', $Proc_to_proc$3 = function $$to_proc() { - var self = this; - - return self - }, $Proc_to_proc$3.$$arity = 0); - - Opal.def(self, '$lambda?', $Proc_lambda$ques$4 = function() { - var self = this; - - return !!self.$$is_lambda; - }, $Proc_lambda$ques$4.$$arity = 0); - - Opal.def(self, '$arity', $Proc_arity$5 = function $$arity() { - var self = this; - - - if (self.$$is_curried) { - return -1; - } else { - return self.$$arity; - } - - }, $Proc_arity$5.$$arity = 0); - - Opal.def(self, '$source_location', $Proc_source_location$6 = function $$source_location() { - var self = this; - - - if (self.$$is_curried) { return nil; }; - return nil; - }, $Proc_source_location$6.$$arity = 0); - - Opal.def(self, '$binding', $Proc_binding$7 = function $$binding() { - var self = this; - - - if (self.$$is_curried) { self.$raise($$($nesting, 'ArgumentError'), "Can't create Binding") }; - return nil; - }, $Proc_binding$7.$$arity = 0); - - Opal.def(self, '$parameters', $Proc_parameters$8 = function $$parameters() { - var self = this; - - - if (self.$$is_curried) { - return [["rest"]]; - } else if (self.$$parameters) { - if (self.$$is_lambda) { - return self.$$parameters; - } else { - var result = [], i, length; - - for (i = 0, length = self.$$parameters.length; i < length; i++) { - var parameter = self.$$parameters[i]; - - if (parameter[0] === 'req') { - // required arguments always have name - parameter = ['opt', parameter[1]]; - } - - result.push(parameter); - } - - return result; - } - } else { - return []; - } - - }, $Proc_parameters$8.$$arity = 0); - - Opal.def(self, '$curry', $Proc_curry$9 = function $$curry(arity) { - var self = this; - - - ; - - if (arity === undefined) { - arity = self.length; - } - else { - arity = $$($nesting, 'Opal')['$coerce_to!'](arity, $$($nesting, 'Integer'), "to_int"); - if (self.$$is_lambda && arity !== self.length) { - self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arity) + " for " + (self.length) + ")") - } - } - - function curried () { - var args = $slice.call(arguments), - length = args.length, - result; - - if (length > arity && self.$$is_lambda && !self.$$is_curried) { - self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (length) + " for " + (arity) + ")") - } - - if (length >= arity) { - return self.$call.apply(self, args); - } - - result = function () { - return curried.apply(null, - args.concat($slice.call(arguments))); - } - result.$$is_lambda = self.$$is_lambda; - result.$$is_curried = true; - - return result; - }; - - curried.$$is_lambda = self.$$is_lambda; - curried.$$is_curried = true; - return curried; - ; - }, $Proc_curry$9.$$arity = -1); - - Opal.def(self, '$dup', $Proc_dup$10 = function $$dup() { - var self = this; - - - var original_proc = self.$$original_proc || self, - proc = function () { - return original_proc.apply(this, arguments); - }; - - for (var prop in self) { - if (self.hasOwnProperty(prop)) { - proc[prop] = self[prop]; - } - } - - return proc; - - }, $Proc_dup$10.$$arity = 0); - return Opal.alias(self, "clone", "dup"); - })($nesting[0], Function, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/method"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$attr_reader', '$arity', '$new', '$class', '$join', '$source_location', '$raise']); - - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Method'); - - var $nesting = [self].concat($parent_nesting), $Method_initialize$1, $Method_arity$2, $Method_parameters$3, $Method_source_location$4, $Method_comments$5, $Method_call$6, $Method_unbind$7, $Method_to_proc$8, $Method_inspect$9; - - self.$$prototype.method = self.$$prototype.receiver = self.$$prototype.owner = self.$$prototype.name = nil; - - self.$attr_reader("owner", "receiver", "name"); - - Opal.def(self, '$initialize', $Method_initialize$1 = function $$initialize(receiver, owner, method, name) { - var self = this; - - - self.receiver = receiver; - self.owner = owner; - self.name = name; - return (self.method = method); - }, $Method_initialize$1.$$arity = 4); - - Opal.def(self, '$arity', $Method_arity$2 = function $$arity() { - var self = this; - - return self.method.$arity() - }, $Method_arity$2.$$arity = 0); - - Opal.def(self, '$parameters', $Method_parameters$3 = function $$parameters() { - var self = this; - - return self.method.$$parameters - }, $Method_parameters$3.$$arity = 0); - - Opal.def(self, '$source_location', $Method_source_location$4 = function $$source_location() { - var $a, self = this; - - return ($truthy($a = self.method.$$source_location) ? $a : ["(eval)", 0]) - }, $Method_source_location$4.$$arity = 0); - - Opal.def(self, '$comments', $Method_comments$5 = function $$comments() { - var $a, self = this; - - return ($truthy($a = self.method.$$comments) ? $a : []) - }, $Method_comments$5.$$arity = 0); - - Opal.def(self, '$call', $Method_call$6 = function $$call($a) { - var $iter = $Method_call$6.$$p, block = $iter || nil, $post_args, args, self = this; - - if ($iter) $Method_call$6.$$p = null; - - - if ($iter) $Method_call$6.$$p = null;; - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - - self.method.$$p = block; - - return self.method.apply(self.receiver, args); - ; - }, $Method_call$6.$$arity = -1); - Opal.alias(self, "[]", "call"); - - Opal.def(self, '$unbind', $Method_unbind$7 = function $$unbind() { - var self = this; - - return $$($nesting, 'UnboundMethod').$new(self.receiver.$class(), self.owner, self.method, self.name) - }, $Method_unbind$7.$$arity = 0); - - Opal.def(self, '$to_proc', $Method_to_proc$8 = function $$to_proc() { - var self = this; - - - var proc = self.$call.bind(self); - proc.$$unbound = self.method; - proc.$$is_lambda = true; - proc.$$arity = self.method.$$arity; - proc.$$parameters = self.method.$$parameters; - return proc; - - }, $Method_to_proc$8.$$arity = 0); - return (Opal.def(self, '$inspect', $Method_inspect$9 = function $$inspect() { - var self = this; - - return "" + "#<" + (self.$class()) + ": " + (self.receiver.$class()) + "#" + (self.name) + " (defined in " + (self.owner) + " in " + (self.$source_location().$join(":")) + ")>" - }, $Method_inspect$9.$$arity = 0), nil) && 'inspect'; - })($nesting[0], null, $nesting); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'UnboundMethod'); - - var $nesting = [self].concat($parent_nesting), $UnboundMethod_initialize$10, $UnboundMethod_arity$11, $UnboundMethod_parameters$12, $UnboundMethod_source_location$13, $UnboundMethod_comments$14, $UnboundMethod_bind$15, $UnboundMethod_inspect$16; - - self.$$prototype.method = self.$$prototype.owner = self.$$prototype.name = self.$$prototype.source = nil; - - self.$attr_reader("source", "owner", "name"); - - Opal.def(self, '$initialize', $UnboundMethod_initialize$10 = function $$initialize(source, owner, method, name) { - var self = this; - - - self.source = source; - self.owner = owner; - self.method = method; - return (self.name = name); - }, $UnboundMethod_initialize$10.$$arity = 4); - - Opal.def(self, '$arity', $UnboundMethod_arity$11 = function $$arity() { - var self = this; - - return self.method.$arity() - }, $UnboundMethod_arity$11.$$arity = 0); - - Opal.def(self, '$parameters', $UnboundMethod_parameters$12 = function $$parameters() { - var self = this; - - return self.method.$$parameters - }, $UnboundMethod_parameters$12.$$arity = 0); - - Opal.def(self, '$source_location', $UnboundMethod_source_location$13 = function $$source_location() { - var $a, self = this; - - return ($truthy($a = self.method.$$source_location) ? $a : ["(eval)", 0]) - }, $UnboundMethod_source_location$13.$$arity = 0); - - Opal.def(self, '$comments', $UnboundMethod_comments$14 = function $$comments() { - var $a, self = this; - - return ($truthy($a = self.method.$$comments) ? $a : []) - }, $UnboundMethod_comments$14.$$arity = 0); - - Opal.def(self, '$bind', $UnboundMethod_bind$15 = function $$bind(object) { - var self = this; - - - if (self.owner.$$is_module || Opal.is_a(object, self.owner)) { - return $$($nesting, 'Method').$new(object, self.owner, self.method, self.name); - } - else { - self.$raise($$($nesting, 'TypeError'), "" + "can't bind singleton method to a different class (expected " + (object) + ".kind_of?(" + (self.owner) + " to be true)"); - } - - }, $UnboundMethod_bind$15.$$arity = 1); - return (Opal.def(self, '$inspect', $UnboundMethod_inspect$16 = function $$inspect() { - var self = this; - - return "" + "#<" + (self.$class()) + ": " + (self.source) + "#" + (self.name) + " (defined in " + (self.owner) + " in " + (self.$source_location().$join(":")) + ")>" - }, $UnboundMethod_inspect$16.$$arity = 0), nil) && 'inspect'; - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/variables"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $gvars = Opal.gvars, $hash2 = Opal.hash2; - - Opal.add_stubs(['$new']); - - $gvars['&'] = $gvars['~'] = $gvars['`'] = $gvars["'"] = nil; - $gvars.LOADED_FEATURES = ($gvars["\""] = Opal.loaded_features); - $gvars.LOAD_PATH = ($gvars[":"] = []); - $gvars["/"] = "\n"; - $gvars[","] = nil; - Opal.const_set($nesting[0], 'ARGV', []); - Opal.const_set($nesting[0], 'ARGF', $$($nesting, 'Object').$new()); - Opal.const_set($nesting[0], 'ENV', $hash2([], {})); - $gvars.VERBOSE = false; - $gvars.DEBUG = false; - return ($gvars.SAFE = 0); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["opal/regexp_anchors"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; - - Opal.add_stubs(['$==', '$new']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Opal'); - - var $nesting = [self].concat($parent_nesting); - - - Opal.const_set($nesting[0], 'REGEXP_START', (function() {if ($$($nesting, 'RUBY_ENGINE')['$==']("opal")) { - return "^" - } else { - return nil - }; return nil; })()); - Opal.const_set($nesting[0], 'REGEXP_END', (function() {if ($$($nesting, 'RUBY_ENGINE')['$==']("opal")) { - return "$" - } else { - return nil - }; return nil; })()); - Opal.const_set($nesting[0], 'FORBIDDEN_STARTING_IDENTIFIER_CHARS', "\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"); - Opal.const_set($nesting[0], 'FORBIDDEN_ENDING_IDENTIFIER_CHARS', "\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"); - Opal.const_set($nesting[0], 'INLINE_IDENTIFIER_REGEXP', $$($nesting, 'Regexp').$new("" + "[^" + ($$($nesting, 'FORBIDDEN_STARTING_IDENTIFIER_CHARS')) + "]*[^" + ($$($nesting, 'FORBIDDEN_ENDING_IDENTIFIER_CHARS')) + "]")); - Opal.const_set($nesting[0], 'FORBIDDEN_CONST_NAME_CHARS', "\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"); - Opal.const_set($nesting[0], 'CONST_NAME_REGEXP', $$($nesting, 'Regexp').$new("" + ($$($nesting, 'REGEXP_START')) + "(::)?[A-Z][^" + ($$($nesting, 'FORBIDDEN_CONST_NAME_CHARS')) + "]*" + ($$($nesting, 'REGEXP_END')))); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["opal/mini"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice; - - Opal.add_stubs(['$require']); - - self.$require("opal/base"); - self.$require("corelib/nil"); - self.$require("corelib/boolean"); - self.$require("corelib/string"); - self.$require("corelib/comparable"); - self.$require("corelib/enumerable"); - self.$require("corelib/enumerator"); - self.$require("corelib/array"); - self.$require("corelib/hash"); - self.$require("corelib/number"); - self.$require("corelib/range"); - self.$require("corelib/proc"); - self.$require("corelib/method"); - self.$require("corelib/regexp"); - self.$require("corelib/variables"); - return self.$require("opal/regexp_anchors"); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/kernel/format"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $gvars = Opal.gvars; - - Opal.add_stubs(['$==', '$length', '$respond_to?', '$[]', '$coerce_to?', '$nil?', '$to_a', '$raise', '$to_int', '$fetch', '$Integer', '$Float', '$to_ary', '$to_str', '$coerce_to', '$inspect', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Kernel'); - - var $nesting = [self].concat($parent_nesting), $Kernel_format$1; - - - - Opal.def(self, '$format', $Kernel_format$1 = function $$format(format_string, $a) { - var $post_args, args, $b, self = this, ary = nil; - if ($gvars.DEBUG == null) $gvars.DEBUG = nil; - - - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - if ($truthy((($b = args.$length()['$=='](1)) ? args['$[]'](0)['$respond_to?']("to_ary") : args.$length()['$=='](1)))) { - - ary = $$($nesting, 'Opal')['$coerce_to?'](args['$[]'](0), $$($nesting, 'Array'), "to_ary"); - if ($truthy(ary['$nil?']())) { - } else { - args = ary.$to_a() - };}; - - var result = '', - //used for slicing: - begin_slice = 0, - end_slice, - //used for iterating over the format string: - i, - len = format_string.length, - //used for processing field values: - arg, - str, - //used for processing %g and %G fields: - exponent, - //used for keeping track of width and precision: - width, - precision, - //used for holding temporary values: - tmp_num, - //used for processing %{} and %<> fileds: - hash_parameter_key, - closing_brace_char, - //used for processing %b, %B, %o, %x, and %X fields: - base_number, - base_prefix, - base_neg_zero_regex, - base_neg_zero_digit, - //used for processing arguments: - next_arg, - seq_arg_num = 1, - pos_arg_num = 0, - //used for keeping track of flags: - flags, - FNONE = 0, - FSHARP = 1, - FMINUS = 2, - FPLUS = 4, - FZERO = 8, - FSPACE = 16, - FWIDTH = 32, - FPREC = 64, - FPREC0 = 128; - - function CHECK_FOR_FLAGS() { - if (flags&FWIDTH) { self.$raise($$($nesting, 'ArgumentError'), "flag after width") } - if (flags&FPREC0) { self.$raise($$($nesting, 'ArgumentError'), "flag after precision") } - } - - function CHECK_FOR_WIDTH() { - if (flags&FWIDTH) { self.$raise($$($nesting, 'ArgumentError'), "width given twice") } - if (flags&FPREC0) { self.$raise($$($nesting, 'ArgumentError'), "width after precision") } - } - - function GET_NTH_ARG(num) { - if (num >= args.length) { self.$raise($$($nesting, 'ArgumentError'), "too few arguments") } - return args[num]; - } - - function GET_NEXT_ARG() { - switch (pos_arg_num) { - case -1: self.$raise($$($nesting, 'ArgumentError'), "" + "unnumbered(" + (seq_arg_num) + ") mixed with numbered") - case -2: self.$raise($$($nesting, 'ArgumentError'), "" + "unnumbered(" + (seq_arg_num) + ") mixed with named") - } - pos_arg_num = seq_arg_num++; - return GET_NTH_ARG(pos_arg_num - 1); - } - - function GET_POS_ARG(num) { - if (pos_arg_num > 0) { - self.$raise($$($nesting, 'ArgumentError'), "" + "numbered(" + (num) + ") after unnumbered(" + (pos_arg_num) + ")") - } - if (pos_arg_num === -2) { - self.$raise($$($nesting, 'ArgumentError'), "" + "numbered(" + (num) + ") after named") - } - if (num < 1) { - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid index - " + (num) + "$") - } - pos_arg_num = -1; - return GET_NTH_ARG(num - 1); - } - - function GET_ARG() { - return (next_arg === undefined ? GET_NEXT_ARG() : next_arg); - } - - function READ_NUM(label) { - var num, str = ''; - for (;; i++) { - if (i === len) { - self.$raise($$($nesting, 'ArgumentError'), "malformed format string - %*[0-9]") - } - if (format_string.charCodeAt(i) < 48 || format_string.charCodeAt(i) > 57) { - i--; - num = parseInt(str, 10) || 0; - if (num > 2147483647) { - self.$raise($$($nesting, 'ArgumentError'), "" + (label) + " too big") - } - return num; - } - str += format_string.charAt(i); - } - } - - function READ_NUM_AFTER_ASTER(label) { - var arg, num = READ_NUM(label); - if (format_string.charAt(i + 1) === '$') { - i++; - arg = GET_POS_ARG(num); - } else { - arg = GET_NEXT_ARG(); - } - return (arg).$to_int(); - } - - for (i = format_string.indexOf('%'); i !== -1; i = format_string.indexOf('%', i)) { - str = undefined; - - flags = FNONE; - width = -1; - precision = -1; - next_arg = undefined; - - end_slice = i; - - i++; - - switch (format_string.charAt(i)) { - case '%': - begin_slice = i; - case '': - case '\n': - case '\0': - i++; - continue; - } - - format_sequence: for (; i < len; i++) { - switch (format_string.charAt(i)) { - - case ' ': - CHECK_FOR_FLAGS(); - flags |= FSPACE; - continue format_sequence; - - case '#': - CHECK_FOR_FLAGS(); - flags |= FSHARP; - continue format_sequence; - - case '+': - CHECK_FOR_FLAGS(); - flags |= FPLUS; - continue format_sequence; - - case '-': - CHECK_FOR_FLAGS(); - flags |= FMINUS; - continue format_sequence; - - case '0': - CHECK_FOR_FLAGS(); - flags |= FZERO; - continue format_sequence; - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - tmp_num = READ_NUM('width'); - if (format_string.charAt(i + 1) === '$') { - if (i + 2 === len) { - str = '%'; - i++; - break format_sequence; - } - if (next_arg !== undefined) { - self.$raise($$($nesting, 'ArgumentError'), "" + "value given twice - %" + (tmp_num) + "$") - } - next_arg = GET_POS_ARG(tmp_num); - i++; - } else { - CHECK_FOR_WIDTH(); - flags |= FWIDTH; - width = tmp_num; - } - continue format_sequence; - - case '<': - case '\{': - closing_brace_char = (format_string.charAt(i) === '<' ? '>' : '\}'); - hash_parameter_key = ''; - - i++; - - for (;; i++) { - if (i === len) { - self.$raise($$($nesting, 'ArgumentError'), "malformed name - unmatched parenthesis") - } - if (format_string.charAt(i) === closing_brace_char) { - - if (pos_arg_num > 0) { - self.$raise($$($nesting, 'ArgumentError'), "" + "named " + (hash_parameter_key) + " after unnumbered(" + (pos_arg_num) + ")") - } - if (pos_arg_num === -1) { - self.$raise($$($nesting, 'ArgumentError'), "" + "named " + (hash_parameter_key) + " after numbered") - } - pos_arg_num = -2; - - if (args[0] === undefined || !args[0].$$is_hash) { - self.$raise($$($nesting, 'ArgumentError'), "one hash required") - } - - next_arg = (args[0]).$fetch(hash_parameter_key); - - if (closing_brace_char === '>') { - continue format_sequence; - } else { - str = next_arg.toString(); - if (precision !== -1) { str = str.slice(0, precision); } - if (flags&FMINUS) { - while (str.length < width) { str = str + ' '; } - } else { - while (str.length < width) { str = ' ' + str; } - } - break format_sequence; - } - } - hash_parameter_key += format_string.charAt(i); - } - - case '*': - i++; - CHECK_FOR_WIDTH(); - flags |= FWIDTH; - width = READ_NUM_AFTER_ASTER('width'); - if (width < 0) { - flags |= FMINUS; - width = -width; - } - continue format_sequence; - - case '.': - if (flags&FPREC0) { - self.$raise($$($nesting, 'ArgumentError'), "precision given twice") - } - flags |= FPREC|FPREC0; - precision = 0; - i++; - if (format_string.charAt(i) === '*') { - i++; - precision = READ_NUM_AFTER_ASTER('precision'); - if (precision < 0) { - flags &= ~FPREC; - } - continue format_sequence; - } - precision = READ_NUM('precision'); - continue format_sequence; - - case 'd': - case 'i': - case 'u': - arg = self.$Integer(GET_ARG()); - if (arg >= 0) { - str = arg.toString(); - while (str.length < precision) { str = '0' + str; } - if (flags&FMINUS) { - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - while (str.length < width) { str = str + ' '; } - } else { - if (flags&FZERO && precision === -1) { - while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0)) { str = '0' + str; } - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - } else { - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - while (str.length < width) { str = ' ' + str; } - } - } - } else { - str = (-arg).toString(); - while (str.length < precision) { str = '0' + str; } - if (flags&FMINUS) { - str = '-' + str; - while (str.length < width) { str = str + ' '; } - } else { - if (flags&FZERO && precision === -1) { - while (str.length < width - 1) { str = '0' + str; } - str = '-' + str; - } else { - str = '-' + str; - while (str.length < width) { str = ' ' + str; } - } - } - } - break format_sequence; - - case 'b': - case 'B': - case 'o': - case 'x': - case 'X': - switch (format_string.charAt(i)) { - case 'b': - case 'B': - base_number = 2; - base_prefix = '0b'; - base_neg_zero_regex = /^1+/; - base_neg_zero_digit = '1'; - break; - case 'o': - base_number = 8; - base_prefix = '0'; - base_neg_zero_regex = /^3?7+/; - base_neg_zero_digit = '7'; - break; - case 'x': - case 'X': - base_number = 16; - base_prefix = '0x'; - base_neg_zero_regex = /^f+/; - base_neg_zero_digit = 'f'; - break; - } - arg = self.$Integer(GET_ARG()); - if (arg >= 0) { - str = arg.toString(base_number); - while (str.length < precision) { str = '0' + str; } - if (flags&FMINUS) { - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - if (flags&FSHARP && arg !== 0) { str = base_prefix + str; } - while (str.length < width) { str = str + ' '; } - } else { - if (flags&FZERO && precision === -1) { - while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0) - ((flags&FSHARP && arg !== 0) ? base_prefix.length : 0)) { str = '0' + str; } - if (flags&FSHARP && arg !== 0) { str = base_prefix + str; } - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - } else { - if (flags&FSHARP && arg !== 0) { str = base_prefix + str; } - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - while (str.length < width) { str = ' ' + str; } - } - } - } else { - if (flags&FPLUS || flags&FSPACE) { - str = (-arg).toString(base_number); - while (str.length < precision) { str = '0' + str; } - if (flags&FMINUS) { - if (flags&FSHARP) { str = base_prefix + str; } - str = '-' + str; - while (str.length < width) { str = str + ' '; } - } else { - if (flags&FZERO && precision === -1) { - while (str.length < width - 1 - (flags&FSHARP ? 2 : 0)) { str = '0' + str; } - if (flags&FSHARP) { str = base_prefix + str; } - str = '-' + str; - } else { - if (flags&FSHARP) { str = base_prefix + str; } - str = '-' + str; - while (str.length < width) { str = ' ' + str; } - } - } - } else { - str = (arg >>> 0).toString(base_number).replace(base_neg_zero_regex, base_neg_zero_digit); - while (str.length < precision - 2) { str = base_neg_zero_digit + str; } - if (flags&FMINUS) { - str = '..' + str; - if (flags&FSHARP) { str = base_prefix + str; } - while (str.length < width) { str = str + ' '; } - } else { - if (flags&FZERO && precision === -1) { - while (str.length < width - 2 - (flags&FSHARP ? base_prefix.length : 0)) { str = base_neg_zero_digit + str; } - str = '..' + str; - if (flags&FSHARP) { str = base_prefix + str; } - } else { - str = '..' + str; - if (flags&FSHARP) { str = base_prefix + str; } - while (str.length < width) { str = ' ' + str; } - } - } - } - } - if (format_string.charAt(i) === format_string.charAt(i).toUpperCase()) { - str = str.toUpperCase(); - } - break format_sequence; - - case 'f': - case 'e': - case 'E': - case 'g': - case 'G': - arg = self.$Float(GET_ARG()); - if (arg >= 0 || isNaN(arg)) { - if (arg === Infinity) { - str = 'Inf'; - } else { - switch (format_string.charAt(i)) { - case 'f': - str = arg.toFixed(precision === -1 ? 6 : precision); - break; - case 'e': - case 'E': - str = arg.toExponential(precision === -1 ? 6 : precision); - break; - case 'g': - case 'G': - str = arg.toExponential(); - exponent = parseInt(str.split('e')[1], 10); - if (!(exponent < -4 || exponent >= (precision === -1 ? 6 : precision))) { - str = arg.toPrecision(precision === -1 ? (flags&FSHARP ? 6 : undefined) : precision); - } - break; - } - } - if (flags&FMINUS) { - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - while (str.length < width) { str = str + ' '; } - } else { - if (flags&FZERO && arg !== Infinity && !isNaN(arg)) { - while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0)) { str = '0' + str; } - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - } else { - if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } - while (str.length < width) { str = ' ' + str; } - } - } - } else { - if (arg === -Infinity) { - str = 'Inf'; - } else { - switch (format_string.charAt(i)) { - case 'f': - str = (-arg).toFixed(precision === -1 ? 6 : precision); - break; - case 'e': - case 'E': - str = (-arg).toExponential(precision === -1 ? 6 : precision); - break; - case 'g': - case 'G': - str = (-arg).toExponential(); - exponent = parseInt(str.split('e')[1], 10); - if (!(exponent < -4 || exponent >= (precision === -1 ? 6 : precision))) { - str = (-arg).toPrecision(precision === -1 ? (flags&FSHARP ? 6 : undefined) : precision); - } - break; - } - } - if (flags&FMINUS) { - str = '-' + str; - while (str.length < width) { str = str + ' '; } - } else { - if (flags&FZERO && arg !== -Infinity) { - while (str.length < width - 1) { str = '0' + str; } - str = '-' + str; - } else { - str = '-' + str; - while (str.length < width) { str = ' ' + str; } - } - } - } - if (format_string.charAt(i) === format_string.charAt(i).toUpperCase() && arg !== Infinity && arg !== -Infinity && !isNaN(arg)) { - str = str.toUpperCase(); - } - str = str.replace(/([eE][-+]?)([0-9])$/, '$10$2'); - break format_sequence; - - case 'a': - case 'A': - // Not implemented because there are no specs for this field type. - self.$raise($$($nesting, 'NotImplementedError'), "`A` and `a` format field types are not implemented in Opal yet") - - case 'c': - arg = GET_ARG(); - if ((arg)['$respond_to?']("to_ary")) { arg = (arg).$to_ary()[0]; } - if ((arg)['$respond_to?']("to_str")) { - str = (arg).$to_str(); - } else { - str = String.fromCharCode($$($nesting, 'Opal').$coerce_to(arg, $$($nesting, 'Integer'), "to_int")); - } - if (str.length !== 1) { - self.$raise($$($nesting, 'ArgumentError'), "%c requires a character") - } - if (flags&FMINUS) { - while (str.length < width) { str = str + ' '; } - } else { - while (str.length < width) { str = ' ' + str; } - } - break format_sequence; - - case 'p': - str = (GET_ARG()).$inspect(); - if (precision !== -1) { str = str.slice(0, precision); } - if (flags&FMINUS) { - while (str.length < width) { str = str + ' '; } - } else { - while (str.length < width) { str = ' ' + str; } - } - break format_sequence; - - case 's': - str = (GET_ARG()).$to_s(); - if (precision !== -1) { str = str.slice(0, precision); } - if (flags&FMINUS) { - while (str.length < width) { str = str + ' '; } - } else { - while (str.length < width) { str = ' ' + str; } - } - break format_sequence; - - default: - self.$raise($$($nesting, 'ArgumentError'), "" + "malformed format string - %" + (format_string.charAt(i))) - } - } - - if (str === undefined) { - self.$raise($$($nesting, 'ArgumentError'), "malformed format string - %") - } - - result += format_string.slice(begin_slice, end_slice) + str; - begin_slice = i + 1; - } - - if ($gvars.DEBUG && pos_arg_num >= 0 && seq_arg_num < args.length) { - self.$raise($$($nesting, 'ArgumentError'), "too many arguments for format string") - } - - return result + format_string.slice(begin_slice); - ; - }, $Kernel_format$1.$$arity = -2); - Opal.alias(self, "sprintf", "format"); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/string/encoding"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var $$12, $$15, $$18, $$21, $$24, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$+', '$[]', '$new', '$to_proc', '$each', '$const_set', '$sub', '$==', '$default_external', '$upcase', '$raise', '$attr_accessor', '$attr_reader', '$register', '$length', '$bytes', '$to_a', '$each_byte', '$bytesize', '$enum_for', '$each_codepoint', '$force_encoding', '$dup', '$coerce_to!', '$find', '$getbyte']); - - self.$require("corelib/string"); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Encoding'); - - var $nesting = [self].concat($parent_nesting), $Encoding_register$1, $Encoding_find$3, $Encoding_initialize$4, $Encoding_ascii_compatible$ques$5, $Encoding_dummy$ques$6, $Encoding_to_s$7, $Encoding_inspect$8, $Encoding_each_byte$9, $Encoding_getbyte$10, $Encoding_bytesize$11; - - self.$$prototype.ascii = self.$$prototype.dummy = self.$$prototype.name = nil; - - Opal.defineProperty(self, '$$register', {}); - Opal.defs(self, '$register', $Encoding_register$1 = function $$register(name, options) { - var $iter = $Encoding_register$1.$$p, block = $iter || nil, $a, $$2, self = this, names = nil, encoding = nil, register = nil; - - if ($iter) $Encoding_register$1.$$p = null; - - - if ($iter) $Encoding_register$1.$$p = null;; - - if (options == null) { - options = $hash2([], {}); - }; - names = $rb_plus([name], ($truthy($a = options['$[]']("aliases")) ? $a : [])); - encoding = $send($$($nesting, 'Class'), 'new', [self], block.$to_proc()).$new(name, names, ($truthy($a = options['$[]']("ascii")) ? $a : false), ($truthy($a = options['$[]']("dummy")) ? $a : false)); - register = self["$$register"]; - return $send(names, 'each', [], ($$2 = function(encoding_name){var self = $$2.$$s || this; - - - - if (encoding_name == null) { - encoding_name = nil; - }; - self.$const_set(encoding_name.$sub("-", "_"), encoding); - return register["" + "$$" + (encoding_name)] = encoding;}, $$2.$$s = self, $$2.$$arity = 1, $$2)); - }, $Encoding_register$1.$$arity = -2); - Opal.defs(self, '$find', $Encoding_find$3 = function $$find(name) { - var $a, self = this, register = nil, encoding = nil; - - - if (name['$==']("default_external")) { - return self.$default_external()}; - register = self["$$register"]; - encoding = ($truthy($a = register["" + "$$" + (name)]) ? $a : register["" + "$$" + (name.$upcase())]); - if ($truthy(encoding)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "unknown encoding name - " + (name)) - }; - return encoding; - }, $Encoding_find$3.$$arity = 1); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting); - - return self.$attr_accessor("default_external") - })(Opal.get_singleton_class(self), $nesting); - self.$attr_reader("name", "names"); - - Opal.def(self, '$initialize', $Encoding_initialize$4 = function $$initialize(name, names, ascii, dummy) { - var self = this; - - - self.name = name; - self.names = names; - self.ascii = ascii; - return (self.dummy = dummy); - }, $Encoding_initialize$4.$$arity = 4); - - Opal.def(self, '$ascii_compatible?', $Encoding_ascii_compatible$ques$5 = function() { - var self = this; - - return self.ascii - }, $Encoding_ascii_compatible$ques$5.$$arity = 0); - - Opal.def(self, '$dummy?', $Encoding_dummy$ques$6 = function() { - var self = this; - - return self.dummy - }, $Encoding_dummy$ques$6.$$arity = 0); - - Opal.def(self, '$to_s', $Encoding_to_s$7 = function $$to_s() { - var self = this; - - return self.name - }, $Encoding_to_s$7.$$arity = 0); - - Opal.def(self, '$inspect', $Encoding_inspect$8 = function $$inspect() { - var self = this; - - return "" + "#" - }, $Encoding_inspect$8.$$arity = 0); - - Opal.def(self, '$each_byte', $Encoding_each_byte$9 = function $$each_byte($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError')); - }, $Encoding_each_byte$9.$$arity = -1); - - Opal.def(self, '$getbyte', $Encoding_getbyte$10 = function $$getbyte($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError')); - }, $Encoding_getbyte$10.$$arity = -1); - - Opal.def(self, '$bytesize', $Encoding_bytesize$11 = function $$bytesize($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError')); - }, $Encoding_bytesize$11.$$arity = -1); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'EncodingError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'StandardError'), $nesting); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'CompatibilityError'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'EncodingError'), $nesting); - })($nesting[0], null, $nesting); - $send($$($nesting, 'Encoding'), 'register', ["UTF-8", $hash2(["aliases", "ascii"], {"aliases": ["CP65001"], "ascii": true})], ($$12 = function(){var self = $$12.$$s || this, $each_byte$13, $bytesize$14; - - - - Opal.def(self, '$each_byte', $each_byte$13 = function $$each_byte(string) { - var $iter = $each_byte$13.$$p, block = $iter || nil, self = this; - - if ($iter) $each_byte$13.$$p = null; - - - if ($iter) $each_byte$13.$$p = null;; - - for (var i = 0, length = string.length; i < length; i++) { - var code = string.charCodeAt(i); - - if (code <= 0x7f) { - Opal.yield1(block, code); - } - else { - var encoded = encodeURIComponent(string.charAt(i)).substr(1).split('%'); - - for (var j = 0, encoded_length = encoded.length; j < encoded_length; j++) { - Opal.yield1(block, parseInt(encoded[j], 16)); - } - } - } - ; - }, $each_byte$13.$$arity = 1); - return (Opal.def(self, '$bytesize', $bytesize$14 = function $$bytesize(string) { - var self = this; - - return string.$bytes().$length() - }, $bytesize$14.$$arity = 1), nil) && 'bytesize';}, $$12.$$s = self, $$12.$$arity = 0, $$12)); - $send($$($nesting, 'Encoding'), 'register', ["UTF-16LE"], ($$15 = function(){var self = $$15.$$s || this, $each_byte$16, $bytesize$17; - - - - Opal.def(self, '$each_byte', $each_byte$16 = function $$each_byte(string) { - var $iter = $each_byte$16.$$p, block = $iter || nil, self = this; - - if ($iter) $each_byte$16.$$p = null; - - - if ($iter) $each_byte$16.$$p = null;; - - for (var i = 0, length = string.length; i < length; i++) { - var code = string.charCodeAt(i); - - Opal.yield1(block, code & 0xff); - Opal.yield1(block, code >> 8); - } - ; - }, $each_byte$16.$$arity = 1); - return (Opal.def(self, '$bytesize', $bytesize$17 = function $$bytesize(string) { - var self = this; - - return string.$bytes().$length() - }, $bytesize$17.$$arity = 1), nil) && 'bytesize';}, $$15.$$s = self, $$15.$$arity = 0, $$15)); - $send($$($nesting, 'Encoding'), 'register', ["UTF-16BE"], ($$18 = function(){var self = $$18.$$s || this, $each_byte$19, $bytesize$20; - - - - Opal.def(self, '$each_byte', $each_byte$19 = function $$each_byte(string) { - var $iter = $each_byte$19.$$p, block = $iter || nil, self = this; - - if ($iter) $each_byte$19.$$p = null; - - - if ($iter) $each_byte$19.$$p = null;; - - for (var i = 0, length = string.length; i < length; i++) { - var code = string.charCodeAt(i); - - Opal.yield1(block, code >> 8); - Opal.yield1(block, code & 0xff); - } - ; - }, $each_byte$19.$$arity = 1); - return (Opal.def(self, '$bytesize', $bytesize$20 = function $$bytesize(string) { - var self = this; - - return string.$bytes().$length() - }, $bytesize$20.$$arity = 1), nil) && 'bytesize';}, $$18.$$s = self, $$18.$$arity = 0, $$18)); - $send($$($nesting, 'Encoding'), 'register', ["UTF-32LE"], ($$21 = function(){var self = $$21.$$s || this, $each_byte$22, $bytesize$23; - - - - Opal.def(self, '$each_byte', $each_byte$22 = function $$each_byte(string) { - var $iter = $each_byte$22.$$p, block = $iter || nil, self = this; - - if ($iter) $each_byte$22.$$p = null; - - - if ($iter) $each_byte$22.$$p = null;; - - for (var i = 0, length = string.length; i < length; i++) { - var code = string.charCodeAt(i); - - Opal.yield1(block, code & 0xff); - Opal.yield1(block, code >> 8); - } - ; - }, $each_byte$22.$$arity = 1); - return (Opal.def(self, '$bytesize', $bytesize$23 = function $$bytesize(string) { - var self = this; - - return string.$bytes().$length() - }, $bytesize$23.$$arity = 1), nil) && 'bytesize';}, $$21.$$s = self, $$21.$$arity = 0, $$21)); - $send($$($nesting, 'Encoding'), 'register', ["ASCII-8BIT", $hash2(["aliases", "ascii", "dummy"], {"aliases": ["BINARY", "US-ASCII", "ASCII"], "ascii": true, "dummy": true})], ($$24 = function(){var self = $$24.$$s || this, $each_byte$25, $bytesize$26; - - - - Opal.def(self, '$each_byte', $each_byte$25 = function $$each_byte(string) { - var $iter = $each_byte$25.$$p, block = $iter || nil, self = this; - - if ($iter) $each_byte$25.$$p = null; - - - if ($iter) $each_byte$25.$$p = null;; - - for (var i = 0, length = string.length; i < length; i++) { - var code = string.charCodeAt(i); - Opal.yield1(block, code & 0xff); - Opal.yield1(block, code >> 8); - } - ; - }, $each_byte$25.$$arity = 1); - return (Opal.def(self, '$bytesize', $bytesize$26 = function $$bytesize(string) { - var self = this; - - return string.$bytes().$length() - }, $bytesize$26.$$arity = 1), nil) && 'bytesize';}, $$24.$$s = self, $$24.$$arity = 0, $$24)); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'String'); - - var $nesting = [self].concat($parent_nesting), $String_bytes$27, $String_bytesize$28, $String_each_byte$29, $String_each_codepoint$30, $String_codepoints$31, $String_encode$32, $String_force_encoding$33, $String_getbyte$34, $String_valid_encoding$ques$35; - - self.$$prototype.encoding = nil; - - self.$attr_reader("encoding"); - Opal.defineProperty(String.prototype, 'encoding', $$$($$($nesting, 'Encoding'), 'UTF_16LE')); - - Opal.def(self, '$bytes', $String_bytes$27 = function $$bytes() { - var self = this; - - return self.$each_byte().$to_a() - }, $String_bytes$27.$$arity = 0); - - Opal.def(self, '$bytesize', $String_bytesize$28 = function $$bytesize() { - var self = this; - - return self.encoding.$bytesize(self) - }, $String_bytesize$28.$$arity = 0); - - Opal.def(self, '$each_byte', $String_each_byte$29 = function $$each_byte() { - var $iter = $String_each_byte$29.$$p, block = $iter || nil, self = this; - - if ($iter) $String_each_byte$29.$$p = null; - - - if ($iter) $String_each_byte$29.$$p = null;; - if ((block !== nil)) { - } else { - return self.$enum_for("each_byte") - }; - $send(self.encoding, 'each_byte', [self], block.$to_proc()); - return self; - }, $String_each_byte$29.$$arity = 0); - - Opal.def(self, '$each_codepoint', $String_each_codepoint$30 = function $$each_codepoint() { - var $iter = $String_each_codepoint$30.$$p, block = $iter || nil, self = this; - - if ($iter) $String_each_codepoint$30.$$p = null; - - - if ($iter) $String_each_codepoint$30.$$p = null;; - if ((block !== nil)) { - } else { - return self.$enum_for("each_codepoint") - }; - - for (var i = 0, length = self.length; i < length; i++) { - Opal.yield1(block, self.codePointAt(i)); - } - ; - return self; - }, $String_each_codepoint$30.$$arity = 0); - - Opal.def(self, '$codepoints', $String_codepoints$31 = function $$codepoints() { - var $iter = $String_codepoints$31.$$p, block = $iter || nil, self = this; - - if ($iter) $String_codepoints$31.$$p = null; - - - if ($iter) $String_codepoints$31.$$p = null;; - if ((block !== nil)) { - return $send(self, 'each_codepoint', [], block.$to_proc())}; - return self.$each_codepoint().$to_a(); - }, $String_codepoints$31.$$arity = 0); - - Opal.def(self, '$encode', $String_encode$32 = function $$encode(encoding) { - var self = this; - - return self.$dup().$force_encoding(encoding) - }, $String_encode$32.$$arity = 1); - - Opal.def(self, '$force_encoding', $String_force_encoding$33 = function $$force_encoding(encoding) { - var self = this; - - - if (encoding === self.encoding) { return self; } - - encoding = $$($nesting, 'Opal')['$coerce_to!'](encoding, $$($nesting, 'String'), "to_s"); - encoding = $$($nesting, 'Encoding').$find(encoding); - - if (encoding === self.encoding) { return self; } - - self.encoding = encoding; - return self; - - }, $String_force_encoding$33.$$arity = 1); - - Opal.def(self, '$getbyte', $String_getbyte$34 = function $$getbyte(idx) { - var self = this; - - return self.encoding.$getbyte(self, idx) - }, $String_getbyte$34.$$arity = 1); - return (Opal.def(self, '$valid_encoding?', $String_valid_encoding$ques$35 = function() { - var self = this; - - return true - }, $String_valid_encoding$ques$35.$$arity = 0), nil) && 'valid_encoding?'; - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/math"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$new', '$raise', '$Float', '$type_error', '$Integer', '$module_function', '$checked', '$float!', '$===', '$gamma', '$-', '$integer!', '$/', '$infinite?']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Math'); - - var $nesting = [self].concat($parent_nesting), $Math_checked$1, $Math_float$excl$2, $Math_integer$excl$3, $Math_acos$4, $Math_acosh$5, $Math_asin$6, $Math_asinh$7, $Math_atan$8, $Math_atan2$9, $Math_atanh$10, $Math_cbrt$11, $Math_cos$12, $Math_cosh$13, $Math_erf$14, $Math_erfc$15, $Math_exp$16, $Math_frexp$17, $Math_gamma$18, $Math_hypot$19, $Math_ldexp$20, $Math_lgamma$21, $Math_log$22, $Math_log10$23, $Math_log2$24, $Math_sin$25, $Math_sinh$26, $Math_sqrt$27, $Math_tan$28, $Math_tanh$29; - - - Opal.const_set($nesting[0], 'E', Math.E); - Opal.const_set($nesting[0], 'PI', Math.PI); - Opal.const_set($nesting[0], 'DomainError', $$($nesting, 'Class').$new($$($nesting, 'StandardError'))); - Opal.defs(self, '$checked', $Math_checked$1 = function $$checked(method, $a) { - var $post_args, args, self = this; - - - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - args = $post_args;; - - if (isNaN(args[0]) || (args.length == 2 && isNaN(args[1]))) { - return NaN; - } - - var result = Math[method].apply(null, args); - - if (isNaN(result)) { - self.$raise($$($nesting, 'DomainError'), "" + "Numerical argument is out of domain - \"" + (method) + "\""); - } - - return result; - ; - }, $Math_checked$1.$$arity = -2); - Opal.defs(self, '$float!', $Math_float$excl$2 = function(value) { - var self = this; - - try { - return self.$Float(value) - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'ArgumentError')])) { - try { - return self.$raise($$($nesting, 'Opal').$type_error(value, $$($nesting, 'Float'))) - } finally { Opal.pop_exception() } - } else { throw $err; } - } - }, $Math_float$excl$2.$$arity = 1); - Opal.defs(self, '$integer!', $Math_integer$excl$3 = function(value) { - var self = this; - - try { - return self.$Integer(value) - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'ArgumentError')])) { - try { - return self.$raise($$($nesting, 'Opal').$type_error(value, $$($nesting, 'Integer'))) - } finally { Opal.pop_exception() } - } else { throw $err; } - } - }, $Math_integer$excl$3.$$arity = 1); - self.$module_function(); - - Opal.def(self, '$acos', $Math_acos$4 = function $$acos(x) { - var self = this; - - return $$($nesting, 'Math').$checked("acos", $$($nesting, 'Math')['$float!'](x)) - }, $Math_acos$4.$$arity = 1); - if ($truthy((typeof(Math.acosh) !== "undefined"))) { - } else { - - Math.acosh = function(x) { - return Math.log(x + Math.sqrt(x * x - 1)); - } - - }; - - Opal.def(self, '$acosh', $Math_acosh$5 = function $$acosh(x) { - var self = this; - - return $$($nesting, 'Math').$checked("acosh", $$($nesting, 'Math')['$float!'](x)) - }, $Math_acosh$5.$$arity = 1); - - Opal.def(self, '$asin', $Math_asin$6 = function $$asin(x) { - var self = this; - - return $$($nesting, 'Math').$checked("asin", $$($nesting, 'Math')['$float!'](x)) - }, $Math_asin$6.$$arity = 1); - if ($truthy((typeof(Math.asinh) !== "undefined"))) { - } else { - - Math.asinh = function(x) { - return Math.log(x + Math.sqrt(x * x + 1)) - } - - }; - - Opal.def(self, '$asinh', $Math_asinh$7 = function $$asinh(x) { - var self = this; - - return $$($nesting, 'Math').$checked("asinh", $$($nesting, 'Math')['$float!'](x)) - }, $Math_asinh$7.$$arity = 1); - - Opal.def(self, '$atan', $Math_atan$8 = function $$atan(x) { - var self = this; - - return $$($nesting, 'Math').$checked("atan", $$($nesting, 'Math')['$float!'](x)) - }, $Math_atan$8.$$arity = 1); - - Opal.def(self, '$atan2', $Math_atan2$9 = function $$atan2(y, x) { - var self = this; - - return $$($nesting, 'Math').$checked("atan2", $$($nesting, 'Math')['$float!'](y), $$($nesting, 'Math')['$float!'](x)) - }, $Math_atan2$9.$$arity = 2); - if ($truthy((typeof(Math.atanh) !== "undefined"))) { - } else { - - Math.atanh = function(x) { - return 0.5 * Math.log((1 + x) / (1 - x)); - } - - }; - - Opal.def(self, '$atanh', $Math_atanh$10 = function $$atanh(x) { - var self = this; - - return $$($nesting, 'Math').$checked("atanh", $$($nesting, 'Math')['$float!'](x)) - }, $Math_atanh$10.$$arity = 1); - if ($truthy((typeof(Math.cbrt) !== "undefined"))) { - } else { - - Math.cbrt = function(x) { - if (x == 0) { - return 0; - } - - if (x < 0) { - return -Math.cbrt(-x); - } - - var r = x, - ex = 0; - - while (r < 0.125) { - r *= 8; - ex--; - } - - while (r > 1.0) { - r *= 0.125; - ex++; - } - - r = (-0.46946116 * r + 1.072302) * r + 0.3812513; - - while (ex < 0) { - r *= 0.5; - ex++; - } - - while (ex > 0) { - r *= 2; - ex--; - } - - r = (2.0 / 3.0) * r + (1.0 / 3.0) * x / (r * r); - r = (2.0 / 3.0) * r + (1.0 / 3.0) * x / (r * r); - r = (2.0 / 3.0) * r + (1.0 / 3.0) * x / (r * r); - r = (2.0 / 3.0) * r + (1.0 / 3.0) * x / (r * r); - - return r; - } - - }; - - Opal.def(self, '$cbrt', $Math_cbrt$11 = function $$cbrt(x) { - var self = this; - - return $$($nesting, 'Math').$checked("cbrt", $$($nesting, 'Math')['$float!'](x)) - }, $Math_cbrt$11.$$arity = 1); - - Opal.def(self, '$cos', $Math_cos$12 = function $$cos(x) { - var self = this; - - return $$($nesting, 'Math').$checked("cos", $$($nesting, 'Math')['$float!'](x)) - }, $Math_cos$12.$$arity = 1); - if ($truthy((typeof(Math.cosh) !== "undefined"))) { - } else { - - Math.cosh = function(x) { - return (Math.exp(x) + Math.exp(-x)) / 2; - } - - }; - - Opal.def(self, '$cosh', $Math_cosh$13 = function $$cosh(x) { - var self = this; - - return $$($nesting, 'Math').$checked("cosh", $$($nesting, 'Math')['$float!'](x)) - }, $Math_cosh$13.$$arity = 1); - if ($truthy((typeof(Math.erf) !== "undefined"))) { - } else { - - Opal.defineProperty(Math, 'erf', function(x) { - var A1 = 0.254829592, - A2 = -0.284496736, - A3 = 1.421413741, - A4 = -1.453152027, - A5 = 1.061405429, - P = 0.3275911; - - var sign = 1; - - if (x < 0) { - sign = -1; - } - - x = Math.abs(x); - - var t = 1.0 / (1.0 + P * x); - var y = 1.0 - (((((A5 * t + A4) * t) + A3) * t + A2) * t + A1) * t * Math.exp(-x * x); - - return sign * y; - }); - - }; - - Opal.def(self, '$erf', $Math_erf$14 = function $$erf(x) { - var self = this; - - return $$($nesting, 'Math').$checked("erf", $$($nesting, 'Math')['$float!'](x)) - }, $Math_erf$14.$$arity = 1); - if ($truthy((typeof(Math.erfc) !== "undefined"))) { - } else { - - Opal.defineProperty(Math, 'erfc', function(x) { - var z = Math.abs(x), - t = 1.0 / (0.5 * z + 1.0); - - var A1 = t * 0.17087277 + -0.82215223, - A2 = t * A1 + 1.48851587, - A3 = t * A2 + -1.13520398, - A4 = t * A3 + 0.27886807, - A5 = t * A4 + -0.18628806, - A6 = t * A5 + 0.09678418, - A7 = t * A6 + 0.37409196, - A8 = t * A7 + 1.00002368, - A9 = t * A8, - A10 = -z * z - 1.26551223 + A9; - - var a = t * Math.exp(A10); - - if (x < 0.0) { - return 2.0 - a; - } - else { - return a; - } - }); - - }; - - Opal.def(self, '$erfc', $Math_erfc$15 = function $$erfc(x) { - var self = this; - - return $$($nesting, 'Math').$checked("erfc", $$($nesting, 'Math')['$float!'](x)) - }, $Math_erfc$15.$$arity = 1); - - Opal.def(self, '$exp', $Math_exp$16 = function $$exp(x) { - var self = this; - - return $$($nesting, 'Math').$checked("exp", $$($nesting, 'Math')['$float!'](x)) - }, $Math_exp$16.$$arity = 1); - - Opal.def(self, '$frexp', $Math_frexp$17 = function $$frexp(x) { - var self = this; - - - x = $$($nesting, 'Math')['$float!'](x); - - if (isNaN(x)) { - return [NaN, 0]; - } - - var ex = Math.floor(Math.log(Math.abs(x)) / Math.log(2)) + 1, - frac = x / Math.pow(2, ex); - - return [frac, ex]; - ; - }, $Math_frexp$17.$$arity = 1); - - Opal.def(self, '$gamma', $Math_gamma$18 = function $$gamma(n) { - var self = this; - - - n = $$($nesting, 'Math')['$float!'](n); - - var i, t, x, value, result, twoN, threeN, fourN, fiveN; - - var G = 4.7421875; - - var P = [ - 0.99999999999999709182, - 57.156235665862923517, - -59.597960355475491248, - 14.136097974741747174, - -0.49191381609762019978, - 0.33994649984811888699e-4, - 0.46523628927048575665e-4, - -0.98374475304879564677e-4, - 0.15808870322491248884e-3, - -0.21026444172410488319e-3, - 0.21743961811521264320e-3, - -0.16431810653676389022e-3, - 0.84418223983852743293e-4, - -0.26190838401581408670e-4, - 0.36899182659531622704e-5 - ]; - - - if (isNaN(n)) { - return NaN; - } - - if (n === 0 && 1 / n < 0) { - return -Infinity; - } - - if (n === -1 || n === -Infinity) { - self.$raise($$($nesting, 'DomainError'), "Numerical argument is out of domain - \"gamma\""); - } - - if ($$($nesting, 'Integer')['$==='](n)) { - if (n <= 0) { - return isFinite(n) ? Infinity : NaN; - } - - if (n > 171) { - return Infinity; - } - - value = n - 2; - result = n - 1; - - while (value > 1) { - result *= value; - value--; - } - - if (result == 0) { - result = 1; - } - - return result; - } - - if (n < 0.5) { - return Math.PI / (Math.sin(Math.PI * n) * $$($nesting, 'Math').$gamma($rb_minus(1, n))); - } - - if (n >= 171.35) { - return Infinity; - } - - if (n > 85.0) { - twoN = n * n; - threeN = twoN * n; - fourN = threeN * n; - fiveN = fourN * n; - - return Math.sqrt(2 * Math.PI / n) * Math.pow((n / Math.E), n) * - (1 + 1 / (12 * n) + 1 / (288 * twoN) - 139 / (51840 * threeN) - - 571 / (2488320 * fourN) + 163879 / (209018880 * fiveN) + - 5246819 / (75246796800 * fiveN * n)); - } - - n -= 1; - x = P[0]; - - for (i = 1; i < P.length; ++i) { - x += P[i] / (n + i); - } - - t = n + G + 0.5; - - return Math.sqrt(2 * Math.PI) * Math.pow(t, n + 0.5) * Math.exp(-t) * x; - ; - }, $Math_gamma$18.$$arity = 1); - if ($truthy((typeof(Math.hypot) !== "undefined"))) { - } else { - - Math.hypot = function(x, y) { - return Math.sqrt(x * x + y * y) - } - - }; - - Opal.def(self, '$hypot', $Math_hypot$19 = function $$hypot(x, y) { - var self = this; - - return $$($nesting, 'Math').$checked("hypot", $$($nesting, 'Math')['$float!'](x), $$($nesting, 'Math')['$float!'](y)) - }, $Math_hypot$19.$$arity = 2); - - Opal.def(self, '$ldexp', $Math_ldexp$20 = function $$ldexp(mantissa, exponent) { - var self = this; - - - mantissa = $$($nesting, 'Math')['$float!'](mantissa); - exponent = $$($nesting, 'Math')['$integer!'](exponent); - - if (isNaN(exponent)) { - self.$raise($$($nesting, 'RangeError'), "float NaN out of range of integer"); - } - - return mantissa * Math.pow(2, exponent); - ; - }, $Math_ldexp$20.$$arity = 2); - - Opal.def(self, '$lgamma', $Math_lgamma$21 = function $$lgamma(n) { - var self = this; - - - if (n == -1) { - return [Infinity, 1]; - } - else { - return [Math.log(Math.abs($$($nesting, 'Math').$gamma(n))), $$($nesting, 'Math').$gamma(n) < 0 ? -1 : 1]; - } - - }, $Math_lgamma$21.$$arity = 1); - - Opal.def(self, '$log', $Math_log$22 = function $$log(x, base) { - var self = this; - - - ; - if ($truthy($$($nesting, 'String')['$==='](x))) { - self.$raise($$($nesting, 'Opal').$type_error(x, $$($nesting, 'Float')))}; - if ($truthy(base == null)) { - return $$($nesting, 'Math').$checked("log", $$($nesting, 'Math')['$float!'](x)) - } else { - - if ($truthy($$($nesting, 'String')['$==='](base))) { - self.$raise($$($nesting, 'Opal').$type_error(base, $$($nesting, 'Float')))}; - return $rb_divide($$($nesting, 'Math').$checked("log", $$($nesting, 'Math')['$float!'](x)), $$($nesting, 'Math').$checked("log", $$($nesting, 'Math')['$float!'](base))); - }; - }, $Math_log$22.$$arity = -2); - if ($truthy((typeof(Math.log10) !== "undefined"))) { - } else { - - Math.log10 = function(x) { - return Math.log(x) / Math.LN10; - } - - }; - - Opal.def(self, '$log10', $Math_log10$23 = function $$log10(x) { - var self = this; - - - if ($truthy($$($nesting, 'String')['$==='](x))) { - self.$raise($$($nesting, 'Opal').$type_error(x, $$($nesting, 'Float')))}; - return $$($nesting, 'Math').$checked("log10", $$($nesting, 'Math')['$float!'](x)); - }, $Math_log10$23.$$arity = 1); - if ($truthy((typeof(Math.log2) !== "undefined"))) { - } else { - - Math.log2 = function(x) { - return Math.log(x) / Math.LN2; - } - - }; - - Opal.def(self, '$log2', $Math_log2$24 = function $$log2(x) { - var self = this; - - - if ($truthy($$($nesting, 'String')['$==='](x))) { - self.$raise($$($nesting, 'Opal').$type_error(x, $$($nesting, 'Float')))}; - return $$($nesting, 'Math').$checked("log2", $$($nesting, 'Math')['$float!'](x)); - }, $Math_log2$24.$$arity = 1); - - Opal.def(self, '$sin', $Math_sin$25 = function $$sin(x) { - var self = this; - - return $$($nesting, 'Math').$checked("sin", $$($nesting, 'Math')['$float!'](x)) - }, $Math_sin$25.$$arity = 1); - if ($truthy((typeof(Math.sinh) !== "undefined"))) { - } else { - - Math.sinh = function(x) { - return (Math.exp(x) - Math.exp(-x)) / 2; - } - - }; - - Opal.def(self, '$sinh', $Math_sinh$26 = function $$sinh(x) { - var self = this; - - return $$($nesting, 'Math').$checked("sinh", $$($nesting, 'Math')['$float!'](x)) - }, $Math_sinh$26.$$arity = 1); - - Opal.def(self, '$sqrt', $Math_sqrt$27 = function $$sqrt(x) { - var self = this; - - return $$($nesting, 'Math').$checked("sqrt", $$($nesting, 'Math')['$float!'](x)) - }, $Math_sqrt$27.$$arity = 1); - - Opal.def(self, '$tan', $Math_tan$28 = function $$tan(x) { - var self = this; - - - x = $$($nesting, 'Math')['$float!'](x); - if ($truthy(x['$infinite?']())) { - return $$$($$($nesting, 'Float'), 'NAN')}; - return $$($nesting, 'Math').$checked("tan", $$($nesting, 'Math')['$float!'](x)); - }, $Math_tan$28.$$arity = 1); - if ($truthy((typeof(Math.tanh) !== "undefined"))) { - } else { - - Math.tanh = function(x) { - if (x == Infinity) { - return 1; - } - else if (x == -Infinity) { - return -1; - } - else { - return (Math.exp(x) - Math.exp(-x)) / (Math.exp(x) + Math.exp(-x)); - } - } - - }; - - Opal.def(self, '$tanh', $Math_tanh$29 = function $$tanh(x) { - var self = this; - - return $$($nesting, 'Math').$checked("tanh", $$($nesting, 'Math')['$float!'](x)) - }, $Math_tanh$29.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/complex"] = function(Opal) { - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $module = Opal.module; - - Opal.add_stubs(['$require', '$===', '$real?', '$raise', '$new', '$*', '$cos', '$sin', '$attr_reader', '$class', '$==', '$real', '$imag', '$Complex', '$-@', '$+', '$__coerced__', '$-', '$nan?', '$/', '$conj', '$abs2', '$quo', '$polar', '$exp', '$log', '$>', '$!=', '$divmod', '$**', '$hypot', '$atan2', '$lcm', '$denominator', '$finite?', '$infinite?', '$numerator', '$abs', '$arg', '$rationalize', '$to_f', '$to_i', '$to_r', '$inspect', '$positive?', '$zero?', '$Rational']); - - self.$require("corelib/numeric"); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Complex'); - - var $nesting = [self].concat($parent_nesting), $Complex_rect$1, $Complex_polar$2, $Complex_initialize$3, $Complex_coerce$4, $Complex_$eq_eq$5, $Complex_$minus$$6, $Complex_$plus$7, $Complex_$minus$8, $Complex_$$9, $Complex_$slash$10, $Complex_$$$11, $Complex_abs$12, $Complex_abs2$13, $Complex_angle$14, $Complex_conj$15, $Complex_denominator$16, $Complex_eql$ques$17, $Complex_fdiv$18, $Complex_finite$ques$19, $Complex_hash$20, $Complex_infinite$ques$21, $Complex_inspect$22, $Complex_numerator$23, $Complex_polar$24, $Complex_rationalize$25, $Complex_real$ques$26, $Complex_rect$27, $Complex_to_f$28, $Complex_to_i$29, $Complex_to_r$30, $Complex_to_s$31; - - self.$$prototype.real = self.$$prototype.imag = nil; - - Opal.defs(self, '$rect', $Complex_rect$1 = function $$rect(real, imag) { - var $a, $b, $c, self = this; - - - - if (imag == null) { - imag = 0; - }; - if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = $$($nesting, 'Numeric')['$==='](real)) ? real['$real?']() : $c)) ? $$($nesting, 'Numeric')['$==='](imag) : $b)) ? imag['$real?']() : $a))) { - } else { - self.$raise($$($nesting, 'TypeError'), "not a real") - }; - return self.$new(real, imag); - }, $Complex_rect$1.$$arity = -2); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting); - - return Opal.alias(self, "rectangular", "rect") - })(Opal.get_singleton_class(self), $nesting); - Opal.defs(self, '$polar', $Complex_polar$2 = function $$polar(r, theta) { - var $a, $b, $c, self = this; - - - - if (theta == null) { - theta = 0; - }; - if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = $$($nesting, 'Numeric')['$==='](r)) ? r['$real?']() : $c)) ? $$($nesting, 'Numeric')['$==='](theta) : $b)) ? theta['$real?']() : $a))) { - } else { - self.$raise($$($nesting, 'TypeError'), "not a real") - }; - return self.$new($rb_times(r, $$($nesting, 'Math').$cos(theta)), $rb_times(r, $$($nesting, 'Math').$sin(theta))); - }, $Complex_polar$2.$$arity = -2); - self.$attr_reader("real", "imag"); - - Opal.def(self, '$initialize', $Complex_initialize$3 = function $$initialize(real, imag) { - var self = this; - - - - if (imag == null) { - imag = 0; - }; - self.real = real; - return (self.imag = imag); - }, $Complex_initialize$3.$$arity = -2); - - Opal.def(self, '$coerce', $Complex_coerce$4 = function $$coerce(other) { - var $a, self = this; - - if ($truthy($$($nesting, 'Complex')['$==='](other))) { - return [other, self] - } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { - return [$$($nesting, 'Complex').$new(other, 0), self] - } else { - return self.$raise($$($nesting, 'TypeError'), "" + (other.$class()) + " can't be coerced into Complex") - } - }, $Complex_coerce$4.$$arity = 1); - - Opal.def(self, '$==', $Complex_$eq_eq$5 = function(other) { - var $a, self = this; - - if ($truthy($$($nesting, 'Complex')['$==='](other))) { - return (($a = self.real['$=='](other.$real())) ? self.imag['$=='](other.$imag()) : self.real['$=='](other.$real())) - } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { - return (($a = self.real['$=='](other)) ? self.imag['$=='](0) : self.real['$=='](other)) - } else { - return other['$=='](self) - } - }, $Complex_$eq_eq$5.$$arity = 1); - - Opal.def(self, '$-@', $Complex_$minus$$6 = function() { - var self = this; - - return self.$Complex(self.real['$-@'](), self.imag['$-@']()) - }, $Complex_$minus$$6.$$arity = 0); - - Opal.def(self, '$+', $Complex_$plus$7 = function(other) { - var $a, self = this; - - if ($truthy($$($nesting, 'Complex')['$==='](other))) { - return self.$Complex($rb_plus(self.real, other.$real()), $rb_plus(self.imag, other.$imag())) - } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { - return self.$Complex($rb_plus(self.real, other), self.imag) - } else { - return self.$__coerced__("+", other) - } - }, $Complex_$plus$7.$$arity = 1); - - Opal.def(self, '$-', $Complex_$minus$8 = function(other) { - var $a, self = this; - - if ($truthy($$($nesting, 'Complex')['$==='](other))) { - return self.$Complex($rb_minus(self.real, other.$real()), $rb_minus(self.imag, other.$imag())) - } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { - return self.$Complex($rb_minus(self.real, other), self.imag) - } else { - return self.$__coerced__("-", other) - } - }, $Complex_$minus$8.$$arity = 1); - - Opal.def(self, '$*', $Complex_$$9 = function(other) { - var $a, self = this; - - if ($truthy($$($nesting, 'Complex')['$==='](other))) { - return self.$Complex($rb_minus($rb_times(self.real, other.$real()), $rb_times(self.imag, other.$imag())), $rb_plus($rb_times(self.real, other.$imag()), $rb_times(self.imag, other.$real()))) - } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { - return self.$Complex($rb_times(self.real, other), $rb_times(self.imag, other)) - } else { - return self.$__coerced__("*", other) - } - }, $Complex_$$9.$$arity = 1); - - Opal.def(self, '$/', $Complex_$slash$10 = function(other) { - var $a, $b, $c, $d, self = this; - - if ($truthy($$($nesting, 'Complex')['$==='](other))) { - if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = ($truthy($d = $$($nesting, 'Number')['$==='](self.real)) ? self.real['$nan?']() : $d)) ? $c : ($truthy($d = $$($nesting, 'Number')['$==='](self.imag)) ? self.imag['$nan?']() : $d))) ? $b : ($truthy($c = $$($nesting, 'Number')['$==='](other.$real())) ? other.$real()['$nan?']() : $c))) ? $a : ($truthy($b = $$($nesting, 'Number')['$==='](other.$imag())) ? other.$imag()['$nan?']() : $b)))) { - return $$($nesting, 'Complex').$new($$$($$($nesting, 'Float'), 'NAN'), $$$($$($nesting, 'Float'), 'NAN')) - } else { - return $rb_divide($rb_times(self, other.$conj()), other.$abs2()) - } - } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) { - return self.$Complex(self.real.$quo(other), self.imag.$quo(other)) - } else { - return self.$__coerced__("/", other) - } - }, $Complex_$slash$10.$$arity = 1); - - Opal.def(self, '$**', $Complex_$$$11 = function(other) { - var $a, $b, $c, $d, self = this, r = nil, theta = nil, ore = nil, oim = nil, nr = nil, ntheta = nil, x = nil, z = nil, n = nil, div = nil, mod = nil; - - - if (other['$=='](0)) { - return $$($nesting, 'Complex').$new(1, 0)}; - if ($truthy($$($nesting, 'Complex')['$==='](other))) { - - $b = self.$polar(), $a = Opal.to_ary($b), (r = ($a[0] == null ? nil : $a[0])), (theta = ($a[1] == null ? nil : $a[1])), $b; - ore = other.$real(); - oim = other.$imag(); - nr = $$($nesting, 'Math').$exp($rb_minus($rb_times(ore, $$($nesting, 'Math').$log(r)), $rb_times(oim, theta))); - ntheta = $rb_plus($rb_times(theta, ore), $rb_times(oim, $$($nesting, 'Math').$log(r))); - return $$($nesting, 'Complex').$polar(nr, ntheta); - } else if ($truthy($$($nesting, 'Integer')['$==='](other))) { - if ($truthy($rb_gt(other, 0))) { - - x = self; - z = x; - n = $rb_minus(other, 1); - while ($truthy(n['$!='](0))) { - - $c = n.$divmod(2), $b = Opal.to_ary($c), (div = ($b[0] == null ? nil : $b[0])), (mod = ($b[1] == null ? nil : $b[1])), $c; - while (mod['$=='](0)) { - - x = self.$Complex($rb_minus($rb_times(x.$real(), x.$real()), $rb_times(x.$imag(), x.$imag())), $rb_times($rb_times(2, x.$real()), x.$imag())); - n = div; - $d = n.$divmod(2), $c = Opal.to_ary($d), (div = ($c[0] == null ? nil : $c[0])), (mod = ($c[1] == null ? nil : $c[1])), $d; - }; - z = $rb_times(z, x); - n = $rb_minus(n, 1); - }; - return z; - } else { - return $rb_divide($$($nesting, 'Rational').$new(1, 1), self)['$**'](other['$-@']()) - } - } else if ($truthy(($truthy($a = $$($nesting, 'Float')['$==='](other)) ? $a : $$($nesting, 'Rational')['$==='](other)))) { - - $b = self.$polar(), $a = Opal.to_ary($b), (r = ($a[0] == null ? nil : $a[0])), (theta = ($a[1] == null ? nil : $a[1])), $b; - return $$($nesting, 'Complex').$polar(r['$**'](other), $rb_times(theta, other)); - } else { - return self.$__coerced__("**", other) - }; - }, $Complex_$$$11.$$arity = 1); - - Opal.def(self, '$abs', $Complex_abs$12 = function $$abs() { - var self = this; - - return $$($nesting, 'Math').$hypot(self.real, self.imag) - }, $Complex_abs$12.$$arity = 0); - - Opal.def(self, '$abs2', $Complex_abs2$13 = function $$abs2() { - var self = this; - - return $rb_plus($rb_times(self.real, self.real), $rb_times(self.imag, self.imag)) - }, $Complex_abs2$13.$$arity = 0); - - Opal.def(self, '$angle', $Complex_angle$14 = function $$angle() { - var self = this; - - return $$($nesting, 'Math').$atan2(self.imag, self.real) - }, $Complex_angle$14.$$arity = 0); - Opal.alias(self, "arg", "angle"); - - Opal.def(self, '$conj', $Complex_conj$15 = function $$conj() { - var self = this; - - return self.$Complex(self.real, self.imag['$-@']()) - }, $Complex_conj$15.$$arity = 0); - Opal.alias(self, "conjugate", "conj"); - - Opal.def(self, '$denominator', $Complex_denominator$16 = function $$denominator() { - var self = this; - - return self.real.$denominator().$lcm(self.imag.$denominator()) - }, $Complex_denominator$16.$$arity = 0); - Opal.alias(self, "divide", "/"); - - Opal.def(self, '$eql?', $Complex_eql$ques$17 = function(other) { - var $a, $b, self = this; - - return ($truthy($a = ($truthy($b = $$($nesting, 'Complex')['$==='](other)) ? self.real.$class()['$=='](self.imag.$class()) : $b)) ? self['$=='](other) : $a) - }, $Complex_eql$ques$17.$$arity = 1); - - Opal.def(self, '$fdiv', $Complex_fdiv$18 = function $$fdiv(other) { - var self = this; - - - if ($truthy($$($nesting, 'Numeric')['$==='](other))) { - } else { - self.$raise($$($nesting, 'TypeError'), "" + (other.$class()) + " can't be coerced into Complex") - }; - return $rb_divide(self, other); - }, $Complex_fdiv$18.$$arity = 1); - - Opal.def(self, '$finite?', $Complex_finite$ques$19 = function() { - var $a, self = this; - - return ($truthy($a = self.real['$finite?']()) ? self.imag['$finite?']() : $a) - }, $Complex_finite$ques$19.$$arity = 0); - - Opal.def(self, '$hash', $Complex_hash$20 = function $$hash() { - var self = this; - - return "" + "Complex:" + (self.real) + ":" + (self.imag) - }, $Complex_hash$20.$$arity = 0); - Opal.alias(self, "imaginary", "imag"); - - Opal.def(self, '$infinite?', $Complex_infinite$ques$21 = function() { - var $a, self = this; - - return ($truthy($a = self.real['$infinite?']()) ? $a : self.imag['$infinite?']()) - }, $Complex_infinite$ques$21.$$arity = 0); - - Opal.def(self, '$inspect', $Complex_inspect$22 = function $$inspect() { - var self = this; - - return "" + "(" + (self) + ")" - }, $Complex_inspect$22.$$arity = 0); - Opal.alias(self, "magnitude", "abs"); - - Opal.udef(self, '$' + "negative?");; - - Opal.def(self, '$numerator', $Complex_numerator$23 = function $$numerator() { - var self = this, d = nil; - - - d = self.$denominator(); - return self.$Complex($rb_times(self.real.$numerator(), $rb_divide(d, self.real.$denominator())), $rb_times(self.imag.$numerator(), $rb_divide(d, self.imag.$denominator()))); - }, $Complex_numerator$23.$$arity = 0); - Opal.alias(self, "phase", "arg"); - - Opal.def(self, '$polar', $Complex_polar$24 = function $$polar() { - var self = this; - - return [self.$abs(), self.$arg()] - }, $Complex_polar$24.$$arity = 0); - - Opal.udef(self, '$' + "positive?");; - Opal.alias(self, "quo", "/"); - - Opal.def(self, '$rationalize', $Complex_rationalize$25 = function $$rationalize(eps) { - var self = this; - - - ; - - if (arguments.length > 1) { - self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " for 0..1)"); - } - ; - if ($truthy(self.imag['$!='](0))) { - self.$raise($$($nesting, 'RangeError'), "" + "can't' convert " + (self) + " into Rational")}; - return self.$real().$rationalize(eps); - }, $Complex_rationalize$25.$$arity = -1); - - Opal.def(self, '$real?', $Complex_real$ques$26 = function() { - var self = this; - - return false - }, $Complex_real$ques$26.$$arity = 0); - - Opal.def(self, '$rect', $Complex_rect$27 = function $$rect() { - var self = this; - - return [self.real, self.imag] - }, $Complex_rect$27.$$arity = 0); - Opal.alias(self, "rectangular", "rect"); - - Opal.def(self, '$to_f', $Complex_to_f$28 = function $$to_f() { - var self = this; - - - if (self.imag['$=='](0)) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + "can't convert " + (self) + " into Float") - }; - return self.real.$to_f(); - }, $Complex_to_f$28.$$arity = 0); - - Opal.def(self, '$to_i', $Complex_to_i$29 = function $$to_i() { - var self = this; - - - if (self.imag['$=='](0)) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + "can't convert " + (self) + " into Integer") - }; - return self.real.$to_i(); - }, $Complex_to_i$29.$$arity = 0); - - Opal.def(self, '$to_r', $Complex_to_r$30 = function $$to_r() { - var self = this; - - - if (self.imag['$=='](0)) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + "can't convert " + (self) + " into Rational") - }; - return self.real.$to_r(); - }, $Complex_to_r$30.$$arity = 0); - - Opal.def(self, '$to_s', $Complex_to_s$31 = function $$to_s() { - var $a, $b, $c, self = this, result = nil; - - - result = self.real.$inspect(); - result = $rb_plus(result, (function() {if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = $$($nesting, 'Number')['$==='](self.imag)) ? self.imag['$nan?']() : $c)) ? $b : self.imag['$positive?']())) ? $a : self.imag['$zero?']()))) { - return "+" - } else { - return "-" - }; return nil; })()); - result = $rb_plus(result, self.imag.$abs().$inspect()); - if ($truthy(($truthy($a = $$($nesting, 'Number')['$==='](self.imag)) ? ($truthy($b = self.imag['$nan?']()) ? $b : self.imag['$infinite?']()) : $a))) { - result = $rb_plus(result, "*")}; - return $rb_plus(result, "i"); - }, $Complex_to_s$31.$$arity = 0); - return Opal.const_set($nesting[0], 'I', self.$new(0, 1)); - })($nesting[0], $$($nesting, 'Numeric'), $nesting); - (function($base, $parent_nesting) { - var self = $module($base, 'Kernel'); - - var $nesting = [self].concat($parent_nesting), $Kernel_Complex$32; - - - Opal.def(self, '$Complex', $Kernel_Complex$32 = function $$Complex(real, imag) { - var self = this; - - - - if (imag == null) { - imag = nil; - }; - if ($truthy(imag)) { - return $$($nesting, 'Complex').$new(real, imag) - } else { - return $$($nesting, 'Complex').$new(real, 0) - }; - }, $Kernel_Complex$32.$$arity = -2) - })($nesting[0], $nesting); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'String'); - - var $nesting = [self].concat($parent_nesting), $String_to_c$33; - - return (Opal.def(self, '$to_c', $String_to_c$33 = function $$to_c() { - var self = this; - - - var str = self, - re = /[+-]?[\d_]+(\.[\d_]+)?(e\d+)?/, - match = str.match(re), - real, imag, denominator; - - function isFloat() { - return re.test(str); - } - - function cutFloat() { - var match = str.match(re); - var number = match[0]; - str = str.slice(number.length); - return number.replace(/_/g, ''); - } - - // handles both floats and rationals - function cutNumber() { - if (isFloat()) { - var numerator = parseFloat(cutFloat()); - - if (str[0] === '/') { - // rational real part - str = str.slice(1); - - if (isFloat()) { - var denominator = parseFloat(cutFloat()); - return self.$Rational(numerator, denominator); - } else { - // reverting '/' - str = '/' + str; - return numerator; - } - } else { - // float real part, no denominator - return numerator; - } - } else { - return null; - } - } - - real = cutNumber(); - - if (!real) { - if (str[0] === 'i') { - // i => Complex(0, 1) - return self.$Complex(0, 1); - } - if (str[0] === '-' && str[1] === 'i') { - // -i => Complex(0, -1) - return self.$Complex(0, -1); - } - if (str[0] === '+' && str[1] === 'i') { - // +i => Complex(0, 1) - return self.$Complex(0, 1); - } - // anything => Complex(0, 0) - return self.$Complex(0, 0); - } - - imag = cutNumber(); - if (!imag) { - if (str[0] === 'i') { - // 3i => Complex(0, 3) - return self.$Complex(0, real); - } else { - // 3 => Complex(3, 0) - return self.$Complex(real, 0); - } - } else { - // 3+2i => Complex(3, 2) - return self.$Complex(real, imag); - } - - }, $String_to_c$33.$$arity = 0), nil) && 'to_c' - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/rational"] = function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $module = Opal.module; - - Opal.add_stubs(['$require', '$to_i', '$==', '$raise', '$<', '$-@', '$new', '$gcd', '$/', '$nil?', '$===', '$reduce', '$to_r', '$equal?', '$!', '$coerce_to!', '$to_f', '$numerator', '$denominator', '$<=>', '$-', '$*', '$__coerced__', '$+', '$Rational', '$>', '$**', '$abs', '$ceil', '$with_precision', '$floor', '$<=', '$truncate', '$send', '$convert']); - - self.$require("corelib/numeric"); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Rational'); - - var $nesting = [self].concat($parent_nesting), $Rational_reduce$1, $Rational_convert$2, $Rational_initialize$3, $Rational_numerator$4, $Rational_denominator$5, $Rational_coerce$6, $Rational_$eq_eq$7, $Rational_$lt_eq_gt$8, $Rational_$plus$9, $Rational_$minus$10, $Rational_$$11, $Rational_$slash$12, $Rational_$$$13, $Rational_abs$14, $Rational_ceil$15, $Rational_floor$16, $Rational_hash$17, $Rational_inspect$18, $Rational_rationalize$19, $Rational_round$20, $Rational_to_f$21, $Rational_to_i$22, $Rational_to_r$23, $Rational_to_s$24, $Rational_truncate$25, $Rational_with_precision$26; - - self.$$prototype.num = self.$$prototype.den = nil; - - Opal.defs(self, '$reduce', $Rational_reduce$1 = function $$reduce(num, den) { - var self = this, gcd = nil; - - - num = num.$to_i(); - den = den.$to_i(); - if (den['$=='](0)) { - self.$raise($$($nesting, 'ZeroDivisionError'), "divided by 0") - } else if ($truthy($rb_lt(den, 0))) { - - num = num['$-@'](); - den = den['$-@'](); - } else if (den['$=='](1)) { - return self.$new(num, den)}; - gcd = num.$gcd(den); - return self.$new($rb_divide(num, gcd), $rb_divide(den, gcd)); - }, $Rational_reduce$1.$$arity = 2); - Opal.defs(self, '$convert', $Rational_convert$2 = function $$convert(num, den) { - var $a, $b, self = this; - - - if ($truthy(($truthy($a = num['$nil?']()) ? $a : den['$nil?']()))) { - self.$raise($$($nesting, 'TypeError'), "cannot convert nil into Rational")}; - if ($truthy(($truthy($a = $$($nesting, 'Integer')['$==='](num)) ? $$($nesting, 'Integer')['$==='](den) : $a))) { - return self.$reduce(num, den)}; - if ($truthy(($truthy($a = ($truthy($b = $$($nesting, 'Float')['$==='](num)) ? $b : $$($nesting, 'String')['$==='](num))) ? $a : $$($nesting, 'Complex')['$==='](num)))) { - num = num.$to_r()}; - if ($truthy(($truthy($a = ($truthy($b = $$($nesting, 'Float')['$==='](den)) ? $b : $$($nesting, 'String')['$==='](den))) ? $a : $$($nesting, 'Complex')['$==='](den)))) { - den = den.$to_r()}; - if ($truthy(($truthy($a = den['$equal?'](1)) ? $$($nesting, 'Integer')['$==='](num)['$!']() : $a))) { - return $$($nesting, 'Opal')['$coerce_to!'](num, $$($nesting, 'Rational'), "to_r") - } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](num)) ? $$($nesting, 'Numeric')['$==='](den) : $a))) { - return $rb_divide(num, den) - } else { - return self.$reduce(num, den) - }; - }, $Rational_convert$2.$$arity = 2); - - Opal.def(self, '$initialize', $Rational_initialize$3 = function $$initialize(num, den) { - var self = this; - - - self.num = num; - return (self.den = den); - }, $Rational_initialize$3.$$arity = 2); - - Opal.def(self, '$numerator', $Rational_numerator$4 = function $$numerator() { - var self = this; - - return self.num - }, $Rational_numerator$4.$$arity = 0); - - Opal.def(self, '$denominator', $Rational_denominator$5 = function $$denominator() { - var self = this; - - return self.den - }, $Rational_denominator$5.$$arity = 0); - - Opal.def(self, '$coerce', $Rational_coerce$6 = function $$coerce(other) { - var self = this, $case = nil; - - return (function() {$case = other; - if ($$($nesting, 'Rational')['$===']($case)) {return [other, self]} - else if ($$($nesting, 'Integer')['$===']($case)) {return [other.$to_r(), self]} - else if ($$($nesting, 'Float')['$===']($case)) {return [other, self.$to_f()]} - else { return nil }})() - }, $Rational_coerce$6.$$arity = 1); - - Opal.def(self, '$==', $Rational_$eq_eq$7 = function(other) { - var $a, self = this, $case = nil; - - return (function() {$case = other; - if ($$($nesting, 'Rational')['$===']($case)) {return (($a = self.num['$=='](other.$numerator())) ? self.den['$=='](other.$denominator()) : self.num['$=='](other.$numerator()))} - else if ($$($nesting, 'Integer')['$===']($case)) {return (($a = self.num['$=='](other)) ? self.den['$=='](1) : self.num['$=='](other))} - else if ($$($nesting, 'Float')['$===']($case)) {return self.$to_f()['$=='](other)} - else {return other['$=='](self)}})() - }, $Rational_$eq_eq$7.$$arity = 1); - - Opal.def(self, '$<=>', $Rational_$lt_eq_gt$8 = function(other) { - var self = this, $case = nil; - - return (function() {$case = other; - if ($$($nesting, 'Rational')['$===']($case)) {return $rb_minus($rb_times(self.num, other.$denominator()), $rb_times(self.den, other.$numerator()))['$<=>'](0)} - else if ($$($nesting, 'Integer')['$===']($case)) {return $rb_minus(self.num, $rb_times(self.den, other))['$<=>'](0)} - else if ($$($nesting, 'Float')['$===']($case)) {return self.$to_f()['$<=>'](other)} - else {return self.$__coerced__("<=>", other)}})() - }, $Rational_$lt_eq_gt$8.$$arity = 1); - - Opal.def(self, '$+', $Rational_$plus$9 = function(other) { - var self = this, $case = nil, num = nil, den = nil; - - return (function() {$case = other; - if ($$($nesting, 'Rational')['$===']($case)) { - num = $rb_plus($rb_times(self.num, other.$denominator()), $rb_times(self.den, other.$numerator())); - den = $rb_times(self.den, other.$denominator()); - return self.$Rational(num, den);} - else if ($$($nesting, 'Integer')['$===']($case)) {return self.$Rational($rb_plus(self.num, $rb_times(other, self.den)), self.den)} - else if ($$($nesting, 'Float')['$===']($case)) {return $rb_plus(self.$to_f(), other)} - else {return self.$__coerced__("+", other)}})() - }, $Rational_$plus$9.$$arity = 1); - - Opal.def(self, '$-', $Rational_$minus$10 = function(other) { - var self = this, $case = nil, num = nil, den = nil; - - return (function() {$case = other; - if ($$($nesting, 'Rational')['$===']($case)) { - num = $rb_minus($rb_times(self.num, other.$denominator()), $rb_times(self.den, other.$numerator())); - den = $rb_times(self.den, other.$denominator()); - return self.$Rational(num, den);} - else if ($$($nesting, 'Integer')['$===']($case)) {return self.$Rational($rb_minus(self.num, $rb_times(other, self.den)), self.den)} - else if ($$($nesting, 'Float')['$===']($case)) {return $rb_minus(self.$to_f(), other)} - else {return self.$__coerced__("-", other)}})() - }, $Rational_$minus$10.$$arity = 1); - - Opal.def(self, '$*', $Rational_$$11 = function(other) { - var self = this, $case = nil, num = nil, den = nil; - - return (function() {$case = other; - if ($$($nesting, 'Rational')['$===']($case)) { - num = $rb_times(self.num, other.$numerator()); - den = $rb_times(self.den, other.$denominator()); - return self.$Rational(num, den);} - else if ($$($nesting, 'Integer')['$===']($case)) {return self.$Rational($rb_times(self.num, other), self.den)} - else if ($$($nesting, 'Float')['$===']($case)) {return $rb_times(self.$to_f(), other)} - else {return self.$__coerced__("*", other)}})() - }, $Rational_$$11.$$arity = 1); - - Opal.def(self, '$/', $Rational_$slash$12 = function(other) { - var self = this, $case = nil, num = nil, den = nil; - - return (function() {$case = other; - if ($$($nesting, 'Rational')['$===']($case)) { - num = $rb_times(self.num, other.$denominator()); - den = $rb_times(self.den, other.$numerator()); - return self.$Rational(num, den);} - else if ($$($nesting, 'Integer')['$===']($case)) {if (other['$=='](0)) { - return $rb_divide(self.$to_f(), 0.0) - } else { - return self.$Rational(self.num, $rb_times(self.den, other)) - }} - else if ($$($nesting, 'Float')['$===']($case)) {return $rb_divide(self.$to_f(), other)} - else {return self.$__coerced__("/", other)}})() - }, $Rational_$slash$12.$$arity = 1); - - Opal.def(self, '$**', $Rational_$$$13 = function(other) { - var $a, self = this, $case = nil; - - return (function() {$case = other; - if ($$($nesting, 'Integer')['$===']($case)) {if ($truthy((($a = self['$=='](0)) ? $rb_lt(other, 0) : self['$=='](0)))) { - return $$$($$($nesting, 'Float'), 'INFINITY') - } else if ($truthy($rb_gt(other, 0))) { - return self.$Rational(self.num['$**'](other), self.den['$**'](other)) - } else if ($truthy($rb_lt(other, 0))) { - return self.$Rational(self.den['$**'](other['$-@']()), self.num['$**'](other['$-@']())) - } else { - return self.$Rational(1, 1) - }} - else if ($$($nesting, 'Float')['$===']($case)) {return self.$to_f()['$**'](other)} - else if ($$($nesting, 'Rational')['$===']($case)) {if (other['$=='](0)) { - return self.$Rational(1, 1) - } else if (other.$denominator()['$=='](1)) { - if ($truthy($rb_lt(other, 0))) { - return self.$Rational(self.den['$**'](other.$numerator().$abs()), self.num['$**'](other.$numerator().$abs())) - } else { - return self.$Rational(self.num['$**'](other.$numerator()), self.den['$**'](other.$numerator())) - } - } else if ($truthy((($a = self['$=='](0)) ? $rb_lt(other, 0) : self['$=='](0)))) { - return self.$raise($$($nesting, 'ZeroDivisionError'), "divided by 0") - } else { - return self.$to_f()['$**'](other) - }} - else {return self.$__coerced__("**", other)}})() - }, $Rational_$$$13.$$arity = 1); - - Opal.def(self, '$abs', $Rational_abs$14 = function $$abs() { - var self = this; - - return self.$Rational(self.num.$abs(), self.den.$abs()) - }, $Rational_abs$14.$$arity = 0); - - Opal.def(self, '$ceil', $Rational_ceil$15 = function $$ceil(precision) { - var self = this; - - - - if (precision == null) { - precision = 0; - }; - if (precision['$=='](0)) { - return $rb_divide(self.num['$-@'](), self.den)['$-@']().$ceil() - } else { - return self.$with_precision("ceil", precision) - }; - }, $Rational_ceil$15.$$arity = -1); - Opal.alias(self, "divide", "/"); - - Opal.def(self, '$floor', $Rational_floor$16 = function $$floor(precision) { - var self = this; - - - - if (precision == null) { - precision = 0; - }; - if (precision['$=='](0)) { - return $rb_divide(self.num['$-@'](), self.den)['$-@']().$floor() - } else { - return self.$with_precision("floor", precision) - }; - }, $Rational_floor$16.$$arity = -1); - - Opal.def(self, '$hash', $Rational_hash$17 = function $$hash() { - var self = this; - - return "" + "Rational:" + (self.num) + ":" + (self.den) - }, $Rational_hash$17.$$arity = 0); - - Opal.def(self, '$inspect', $Rational_inspect$18 = function $$inspect() { - var self = this; - - return "" + "(" + (self) + ")" - }, $Rational_inspect$18.$$arity = 0); - Opal.alias(self, "quo", "/"); - - Opal.def(self, '$rationalize', $Rational_rationalize$19 = function $$rationalize(eps) { - var self = this; - - - ; - - if (arguments.length > 1) { - self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (" + (arguments.length) + " for 0..1)"); - } - - if (eps == null) { - return self; - } - - var e = eps.$abs(), - a = $rb_minus(self, e), - b = $rb_plus(self, e); - - var p0 = 0, - p1 = 1, - q0 = 1, - q1 = 0, - p2, q2; - - var c, k, t; - - while (true) { - c = (a).$ceil(); - - if ($rb_le(c, b)) { - break; - } - - k = c - 1; - p2 = k * p1 + p0; - q2 = k * q1 + q0; - t = $rb_divide(1, $rb_minus(b, k)); - b = $rb_divide(1, $rb_minus(a, k)); - a = t; - - p0 = p1; - q0 = q1; - p1 = p2; - q1 = q2; - } - - return self.$Rational(c * p1 + p0, c * q1 + q0); - ; - }, $Rational_rationalize$19.$$arity = -1); - - Opal.def(self, '$round', $Rational_round$20 = function $$round(precision) { - var self = this, num = nil, den = nil, approx = nil; - - - - if (precision == null) { - precision = 0; - }; - if (precision['$=='](0)) { - } else { - return self.$with_precision("round", precision) - }; - if (self.num['$=='](0)) { - return 0}; - if (self.den['$=='](1)) { - return self.num}; - num = $rb_plus($rb_times(self.num.$abs(), 2), self.den); - den = $rb_times(self.den, 2); - approx = $rb_divide(num, den).$truncate(); - if ($truthy($rb_lt(self.num, 0))) { - return approx['$-@']() - } else { - return approx - }; - }, $Rational_round$20.$$arity = -1); - - Opal.def(self, '$to_f', $Rational_to_f$21 = function $$to_f() { - var self = this; - - return $rb_divide(self.num, self.den) - }, $Rational_to_f$21.$$arity = 0); - - Opal.def(self, '$to_i', $Rational_to_i$22 = function $$to_i() { - var self = this; - - return self.$truncate() - }, $Rational_to_i$22.$$arity = 0); - - Opal.def(self, '$to_r', $Rational_to_r$23 = function $$to_r() { - var self = this; - - return self - }, $Rational_to_r$23.$$arity = 0); - - Opal.def(self, '$to_s', $Rational_to_s$24 = function $$to_s() { - var self = this; - - return "" + (self.num) + "/" + (self.den) - }, $Rational_to_s$24.$$arity = 0); - - Opal.def(self, '$truncate', $Rational_truncate$25 = function $$truncate(precision) { - var self = this; - - - - if (precision == null) { - precision = 0; - }; - if (precision['$=='](0)) { - if ($truthy($rb_lt(self.num, 0))) { - return self.$ceil() - } else { - return self.$floor() - } - } else { - return self.$with_precision("truncate", precision) - }; - }, $Rational_truncate$25.$$arity = -1); - return (Opal.def(self, '$with_precision', $Rational_with_precision$26 = function $$with_precision(method, precision) { - var self = this, p = nil, s = nil; - - - if ($truthy($$($nesting, 'Integer')['$==='](precision))) { - } else { - self.$raise($$($nesting, 'TypeError'), "not an Integer") - }; - p = (10)['$**'](precision); - s = $rb_times(self, p); - if ($truthy($rb_lt(precision, 1))) { - return $rb_divide(s.$send(method), p).$to_i() - } else { - return self.$Rational(s.$send(method), p) - }; - }, $Rational_with_precision$26.$$arity = 2), nil) && 'with_precision'; - })($nesting[0], $$($nesting, 'Numeric'), $nesting); - (function($base, $parent_nesting) { - var self = $module($base, 'Kernel'); - - var $nesting = [self].concat($parent_nesting), $Kernel_Rational$27; - - - Opal.def(self, '$Rational', $Kernel_Rational$27 = function $$Rational(numerator, denominator) { - var self = this; - - - - if (denominator == null) { - denominator = 1; - }; - return $$($nesting, 'Rational').$convert(numerator, denominator); - }, $Kernel_Rational$27.$$arity = -2) - })($nesting[0], $nesting); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'String'); - - var $nesting = [self].concat($parent_nesting), $String_to_r$28; - - return (Opal.def(self, '$to_r', $String_to_r$28 = function $$to_r() { - var self = this; - - - var str = self.trimLeft(), - re = /^[+-]?[\d_]+(\.[\d_]+)?/, - match = str.match(re), - numerator, denominator; - - function isFloat() { - return re.test(str); - } - - function cutFloat() { - var match = str.match(re); - var number = match[0]; - str = str.slice(number.length); - return number.replace(/_/g, ''); - } - - if (isFloat()) { - numerator = parseFloat(cutFloat()); - - if (str[0] === '/') { - // rational real part - str = str.slice(1); - - if (isFloat()) { - denominator = parseFloat(cutFloat()); - return self.$Rational(numerator, denominator); - } else { - return self.$Rational(numerator, 1); - } - } else { - return self.$Rational(numerator, 1); - } - } else { - return self.$Rational(0, 1); - } - - }, $String_to_r$28.$$arity = 0), nil) && 'to_r' - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/time"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range; - - Opal.add_stubs(['$require', '$include', '$===', '$raise', '$coerce_to!', '$respond_to?', '$to_str', '$to_i', '$new', '$<=>', '$to_f', '$nil?', '$>', '$<', '$strftime', '$year', '$month', '$day', '$+', '$round', '$/', '$-', '$copy_instance_variables', '$initialize_dup', '$is_a?', '$zero?', '$wday', '$utc?', '$mon', '$yday', '$hour', '$min', '$sec', '$rjust', '$ljust', '$zone', '$to_s', '$[]', '$cweek_cyear', '$isdst', '$<=', '$!=', '$==', '$ceil']); - - self.$require("corelib/comparable"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Time'); - - var $nesting = [self].concat($parent_nesting), $Time_at$1, $Time_new$2, $Time_local$3, $Time_gm$4, $Time_now$5, $Time_$plus$6, $Time_$minus$7, $Time_$lt_eq_gt$8, $Time_$eq_eq$9, $Time_asctime$10, $Time_day$11, $Time_yday$12, $Time_isdst$13, $Time_dup$14, $Time_eql$ques$15, $Time_friday$ques$16, $Time_hash$17, $Time_hour$18, $Time_inspect$19, $Time_min$20, $Time_mon$21, $Time_monday$ques$22, $Time_saturday$ques$23, $Time_sec$24, $Time_succ$25, $Time_usec$26, $Time_zone$27, $Time_getgm$28, $Time_gmtime$29, $Time_gmt$ques$30, $Time_gmt_offset$31, $Time_strftime$32, $Time_sunday$ques$33, $Time_thursday$ques$34, $Time_to_a$35, $Time_to_f$36, $Time_to_i$37, $Time_tuesday$ques$38, $Time_wday$39, $Time_wednesday$ques$40, $Time_year$41, $Time_cweek_cyear$42; - - - self.$include($$($nesting, 'Comparable')); - - var days_of_week = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], - short_days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - short_months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - long_months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; - ; - Opal.defs(self, '$at', $Time_at$1 = function $$at(seconds, frac) { - var self = this; - - - ; - - var result; - - if ($$($nesting, 'Time')['$==='](seconds)) { - if (frac !== undefined) { - self.$raise($$($nesting, 'TypeError'), "can't convert Time into an exact number") - } - result = new Date(seconds.getTime()); - result.is_utc = seconds.is_utc; - return result; - } - - if (!seconds.$$is_number) { - seconds = $$($nesting, 'Opal')['$coerce_to!'](seconds, $$($nesting, 'Integer'), "to_int"); - } - - if (frac === undefined) { - return new Date(seconds * 1000); - } - - if (!frac.$$is_number) { - frac = $$($nesting, 'Opal')['$coerce_to!'](frac, $$($nesting, 'Integer'), "to_int"); - } - - return new Date(seconds * 1000 + (frac / 1000)); - ; - }, $Time_at$1.$$arity = -2); - - function time_params(year, month, day, hour, min, sec) { - if (year.$$is_string) { - year = parseInt(year, 10); - } else { - year = $$($nesting, 'Opal')['$coerce_to!'](year, $$($nesting, 'Integer'), "to_int"); - } - - if (month === nil) { - month = 1; - } else if (!month.$$is_number) { - if ((month)['$respond_to?']("to_str")) { - month = (month).$to_str(); - switch (month.toLowerCase()) { - case 'jan': month = 1; break; - case 'feb': month = 2; break; - case 'mar': month = 3; break; - case 'apr': month = 4; break; - case 'may': month = 5; break; - case 'jun': month = 6; break; - case 'jul': month = 7; break; - case 'aug': month = 8; break; - case 'sep': month = 9; break; - case 'oct': month = 10; break; - case 'nov': month = 11; break; - case 'dec': month = 12; break; - default: month = (month).$to_i(); - } - } else { - month = $$($nesting, 'Opal')['$coerce_to!'](month, $$($nesting, 'Integer'), "to_int"); - } - } - - if (month < 1 || month > 12) { - self.$raise($$($nesting, 'ArgumentError'), "" + "month out of range: " + (month)) - } - month = month - 1; - - if (day === nil) { - day = 1; - } else if (day.$$is_string) { - day = parseInt(day, 10); - } else { - day = $$($nesting, 'Opal')['$coerce_to!'](day, $$($nesting, 'Integer'), "to_int"); - } - - if (day < 1 || day > 31) { - self.$raise($$($nesting, 'ArgumentError'), "" + "day out of range: " + (day)) - } - - if (hour === nil) { - hour = 0; - } else if (hour.$$is_string) { - hour = parseInt(hour, 10); - } else { - hour = $$($nesting, 'Opal')['$coerce_to!'](hour, $$($nesting, 'Integer'), "to_int"); - } - - if (hour < 0 || hour > 24) { - self.$raise($$($nesting, 'ArgumentError'), "" + "hour out of range: " + (hour)) - } - - if (min === nil) { - min = 0; - } else if (min.$$is_string) { - min = parseInt(min, 10); - } else { - min = $$($nesting, 'Opal')['$coerce_to!'](min, $$($nesting, 'Integer'), "to_int"); - } - - if (min < 0 || min > 59) { - self.$raise($$($nesting, 'ArgumentError'), "" + "min out of range: " + (min)) - } - - if (sec === nil) { - sec = 0; - } else if (!sec.$$is_number) { - if (sec.$$is_string) { - sec = parseInt(sec, 10); - } else { - sec = $$($nesting, 'Opal')['$coerce_to!'](sec, $$($nesting, 'Integer'), "to_int"); - } - } - - if (sec < 0 || sec > 60) { - self.$raise($$($nesting, 'ArgumentError'), "" + "sec out of range: " + (sec)) - } - - return [year, month, day, hour, min, sec]; - } - ; - Opal.defs(self, '$new', $Time_new$2 = function(year, month, day, hour, min, sec, utc_offset) { - var self = this; - - - ; - - if (month == null) { - month = nil; - }; - - if (day == null) { - day = nil; - }; - - if (hour == null) { - hour = nil; - }; - - if (min == null) { - min = nil; - }; - - if (sec == null) { - sec = nil; - }; - - if (utc_offset == null) { - utc_offset = nil; - }; - - var args, result; - - if (year === undefined) { - return new Date(); - } - - if (utc_offset !== nil) { - self.$raise($$($nesting, 'ArgumentError'), "Opal does not support explicitly specifying UTC offset for Time") - } - - args = time_params(year, month, day, hour, min, sec); - year = args[0]; - month = args[1]; - day = args[2]; - hour = args[3]; - min = args[4]; - sec = args[5]; - - result = new Date(year, month, day, hour, min, 0, sec * 1000); - if (year < 100) { - result.setFullYear(year); - } - return result; - ; - }, $Time_new$2.$$arity = -1); - Opal.defs(self, '$local', $Time_local$3 = function $$local(year, month, day, hour, min, sec, millisecond, _dummy1, _dummy2, _dummy3) { - var self = this; - - - - if (month == null) { - month = nil; - }; - - if (day == null) { - day = nil; - }; - - if (hour == null) { - hour = nil; - }; - - if (min == null) { - min = nil; - }; - - if (sec == null) { - sec = nil; - }; - - if (millisecond == null) { - millisecond = nil; - }; - - if (_dummy1 == null) { - _dummy1 = nil; - }; - - if (_dummy2 == null) { - _dummy2 = nil; - }; - - if (_dummy3 == null) { - _dummy3 = nil; - }; - - var args, result; - - if (arguments.length === 10) { - args = $slice.call(arguments); - year = args[5]; - month = args[4]; - day = args[3]; - hour = args[2]; - min = args[1]; - sec = args[0]; - } - - args = time_params(year, month, day, hour, min, sec); - year = args[0]; - month = args[1]; - day = args[2]; - hour = args[3]; - min = args[4]; - sec = args[5]; - - result = new Date(year, month, day, hour, min, 0, sec * 1000); - if (year < 100) { - result.setFullYear(year); - } - return result; - ; - }, $Time_local$3.$$arity = -2); - Opal.defs(self, '$gm', $Time_gm$4 = function $$gm(year, month, day, hour, min, sec, millisecond, _dummy1, _dummy2, _dummy3) { - var self = this; - - - - if (month == null) { - month = nil; - }; - - if (day == null) { - day = nil; - }; - - if (hour == null) { - hour = nil; - }; - - if (min == null) { - min = nil; - }; - - if (sec == null) { - sec = nil; - }; - - if (millisecond == null) { - millisecond = nil; - }; - - if (_dummy1 == null) { - _dummy1 = nil; - }; - - if (_dummy2 == null) { - _dummy2 = nil; - }; - - if (_dummy3 == null) { - _dummy3 = nil; - }; - - var args, result; - - if (arguments.length === 10) { - args = $slice.call(arguments); - year = args[5]; - month = args[4]; - day = args[3]; - hour = args[2]; - min = args[1]; - sec = args[0]; - } - - args = time_params(year, month, day, hour, min, sec); - year = args[0]; - month = args[1]; - day = args[2]; - hour = args[3]; - min = args[4]; - sec = args[5]; - - result = new Date(Date.UTC(year, month, day, hour, min, 0, sec * 1000)); - if (year < 100) { - result.setUTCFullYear(year); - } - result.is_utc = true; - return result; - ; - }, $Time_gm$4.$$arity = -2); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting); - - - Opal.alias(self, "mktime", "local"); - return Opal.alias(self, "utc", "gm"); - })(Opal.get_singleton_class(self), $nesting); - Opal.defs(self, '$now', $Time_now$5 = function $$now() { - var self = this; - - return self.$new() - }, $Time_now$5.$$arity = 0); - - Opal.def(self, '$+', $Time_$plus$6 = function(other) { - var self = this; - - - if ($truthy($$($nesting, 'Time')['$==='](other))) { - self.$raise($$($nesting, 'TypeError'), "time + time?")}; - - if (!other.$$is_number) { - other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Integer'), "to_int"); - } - var result = new Date(self.getTime() + (other * 1000)); - result.is_utc = self.is_utc; - return result; - ; - }, $Time_$plus$6.$$arity = 1); - - Opal.def(self, '$-', $Time_$minus$7 = function(other) { - var self = this; - - - if ($truthy($$($nesting, 'Time')['$==='](other))) { - return (self.getTime() - other.getTime()) / 1000}; - - if (!other.$$is_number) { - other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Integer'), "to_int"); - } - var result = new Date(self.getTime() - (other * 1000)); - result.is_utc = self.is_utc; - return result; - ; - }, $Time_$minus$7.$$arity = 1); - - Opal.def(self, '$<=>', $Time_$lt_eq_gt$8 = function(other) { - var self = this, r = nil; - - if ($truthy($$($nesting, 'Time')['$==='](other))) { - return self.$to_f()['$<=>'](other.$to_f()) - } else { - - r = other['$<=>'](self); - if ($truthy(r['$nil?']())) { - return nil - } else if ($truthy($rb_gt(r, 0))) { - return -1 - } else if ($truthy($rb_lt(r, 0))) { - return 1 - } else { - return 0 - }; - } - }, $Time_$lt_eq_gt$8.$$arity = 1); - - Opal.def(self, '$==', $Time_$eq_eq$9 = function(other) { - var $a, self = this; - - return ($truthy($a = $$($nesting, 'Time')['$==='](other)) ? self.$to_f() === other.$to_f() : $a) - }, $Time_$eq_eq$9.$$arity = 1); - - Opal.def(self, '$asctime', $Time_asctime$10 = function $$asctime() { - var self = this; - - return self.$strftime("%a %b %e %H:%M:%S %Y") - }, $Time_asctime$10.$$arity = 0); - Opal.alias(self, "ctime", "asctime"); - - Opal.def(self, '$day', $Time_day$11 = function $$day() { - var self = this; - - return self.is_utc ? self.getUTCDate() : self.getDate(); - }, $Time_day$11.$$arity = 0); - - Opal.def(self, '$yday', $Time_yday$12 = function $$yday() { - var self = this, start_of_year = nil, start_of_day = nil, one_day = nil; - - - start_of_year = $$($nesting, 'Time').$new(self.$year()).$to_i(); - start_of_day = $$($nesting, 'Time').$new(self.$year(), self.$month(), self.$day()).$to_i(); - one_day = 86400; - return $rb_plus($rb_divide($rb_minus(start_of_day, start_of_year), one_day).$round(), 1); - }, $Time_yday$12.$$arity = 0); - - Opal.def(self, '$isdst', $Time_isdst$13 = function $$isdst() { - var self = this; - - - var jan = new Date(self.getFullYear(), 0, 1), - jul = new Date(self.getFullYear(), 6, 1); - return self.getTimezoneOffset() < Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset()); - - }, $Time_isdst$13.$$arity = 0); - Opal.alias(self, "dst?", "isdst"); - - Opal.def(self, '$dup', $Time_dup$14 = function $$dup() { - var self = this, copy = nil; - - - copy = new Date(self.getTime()); - copy.$copy_instance_variables(self); - copy.$initialize_dup(self); - return copy; - }, $Time_dup$14.$$arity = 0); - - Opal.def(self, '$eql?', $Time_eql$ques$15 = function(other) { - var $a, self = this; - - return ($truthy($a = other['$is_a?']($$($nesting, 'Time'))) ? self['$<=>'](other)['$zero?']() : $a) - }, $Time_eql$ques$15.$$arity = 1); - - Opal.def(self, '$friday?', $Time_friday$ques$16 = function() { - var self = this; - - return self.$wday() == 5 - }, $Time_friday$ques$16.$$arity = 0); - - Opal.def(self, '$hash', $Time_hash$17 = function $$hash() { - var self = this; - - return 'Time:' + self.getTime(); - }, $Time_hash$17.$$arity = 0); - - Opal.def(self, '$hour', $Time_hour$18 = function $$hour() { - var self = this; - - return self.is_utc ? self.getUTCHours() : self.getHours(); - }, $Time_hour$18.$$arity = 0); - - Opal.def(self, '$inspect', $Time_inspect$19 = function $$inspect() { - var self = this; - - if ($truthy(self['$utc?']())) { - return self.$strftime("%Y-%m-%d %H:%M:%S UTC") - } else { - return self.$strftime("%Y-%m-%d %H:%M:%S %z") - } - }, $Time_inspect$19.$$arity = 0); - Opal.alias(self, "mday", "day"); - - Opal.def(self, '$min', $Time_min$20 = function $$min() { - var self = this; - - return self.is_utc ? self.getUTCMinutes() : self.getMinutes(); - }, $Time_min$20.$$arity = 0); - - Opal.def(self, '$mon', $Time_mon$21 = function $$mon() { - var self = this; - - return (self.is_utc ? self.getUTCMonth() : self.getMonth()) + 1; - }, $Time_mon$21.$$arity = 0); - - Opal.def(self, '$monday?', $Time_monday$ques$22 = function() { - var self = this; - - return self.$wday() == 1 - }, $Time_monday$ques$22.$$arity = 0); - Opal.alias(self, "month", "mon"); - - Opal.def(self, '$saturday?', $Time_saturday$ques$23 = function() { - var self = this; - - return self.$wday() == 6 - }, $Time_saturday$ques$23.$$arity = 0); - - Opal.def(self, '$sec', $Time_sec$24 = function $$sec() { - var self = this; - - return self.is_utc ? self.getUTCSeconds() : self.getSeconds(); - }, $Time_sec$24.$$arity = 0); - - Opal.def(self, '$succ', $Time_succ$25 = function $$succ() { - var self = this; - - - var result = new Date(self.getTime() + 1000); - result.is_utc = self.is_utc; - return result; - - }, $Time_succ$25.$$arity = 0); - - Opal.def(self, '$usec', $Time_usec$26 = function $$usec() { - var self = this; - - return self.getMilliseconds() * 1000; - }, $Time_usec$26.$$arity = 0); - - Opal.def(self, '$zone', $Time_zone$27 = function $$zone() { - var self = this; - - - var string = self.toString(), - result; - - if (string.indexOf('(') == -1) { - result = string.match(/[A-Z]{3,4}/)[0]; - } - else { - result = string.match(/\((.+)\)(?:\s|$)/)[1] - } - - if (result == "GMT" && /(GMT\W*\d{4})/.test(string)) { - return RegExp.$1; - } - else { - return result; - } - - }, $Time_zone$27.$$arity = 0); - - Opal.def(self, '$getgm', $Time_getgm$28 = function $$getgm() { - var self = this; - - - var result = new Date(self.getTime()); - result.is_utc = true; - return result; - - }, $Time_getgm$28.$$arity = 0); - Opal.alias(self, "getutc", "getgm"); - - Opal.def(self, '$gmtime', $Time_gmtime$29 = function $$gmtime() { - var self = this; - - - self.is_utc = true; - return self; - - }, $Time_gmtime$29.$$arity = 0); - Opal.alias(self, "utc", "gmtime"); - - Opal.def(self, '$gmt?', $Time_gmt$ques$30 = function() { - var self = this; - - return self.is_utc === true; - }, $Time_gmt$ques$30.$$arity = 0); - - Opal.def(self, '$gmt_offset', $Time_gmt_offset$31 = function $$gmt_offset() { - var self = this; - - return self.is_utc ? 0 : -self.getTimezoneOffset() * 60; - }, $Time_gmt_offset$31.$$arity = 0); - - Opal.def(self, '$strftime', $Time_strftime$32 = function $$strftime(format) { - var self = this; - - - return format.replace(/%([\-_#^0]*:{0,2})(\d+)?([EO]*)(.)/g, function(full, flags, width, _, conv) { - var result = "", - zero = flags.indexOf('0') !== -1, - pad = flags.indexOf('-') === -1, - blank = flags.indexOf('_') !== -1, - upcase = flags.indexOf('^') !== -1, - invert = flags.indexOf('#') !== -1, - colons = (flags.match(':') || []).length; - - width = parseInt(width, 10); - - if (zero && blank) { - if (flags.indexOf('0') < flags.indexOf('_')) { - zero = false; - } - else { - blank = false; - } - } - - switch (conv) { - case 'Y': - result += self.$year(); - break; - - case 'C': - zero = !blank; - result += Math.round(self.$year() / 100); - break; - - case 'y': - zero = !blank; - result += (self.$year() % 100); - break; - - case 'm': - zero = !blank; - result += self.$mon(); - break; - - case 'B': - result += long_months[self.$mon() - 1]; - break; - - case 'b': - case 'h': - blank = !zero; - result += short_months[self.$mon() - 1]; - break; - - case 'd': - zero = !blank - result += self.$day(); - break; - - case 'e': - blank = !zero - result += self.$day(); - break; - - case 'j': - result += self.$yday(); - break; - - case 'H': - zero = !blank; - result += self.$hour(); - break; - - case 'k': - blank = !zero; - result += self.$hour(); - break; - - case 'I': - zero = !blank; - result += (self.$hour() % 12 || 12); - break; - - case 'l': - blank = !zero; - result += (self.$hour() % 12 || 12); - break; - - case 'P': - result += (self.$hour() >= 12 ? "pm" : "am"); - break; - - case 'p': - result += (self.$hour() >= 12 ? "PM" : "AM"); - break; - - case 'M': - zero = !blank; - result += self.$min(); - break; - - case 'S': - zero = !blank; - result += self.$sec() - break; - - case 'L': - zero = !blank; - width = isNaN(width) ? 3 : width; - result += self.getMilliseconds(); - break; - - case 'N': - width = isNaN(width) ? 9 : width; - result += (self.getMilliseconds().toString()).$rjust(3, "0"); - result = (result).$ljust(width, "0"); - break; - - case 'z': - var offset = self.getTimezoneOffset(), - hours = Math.floor(Math.abs(offset) / 60), - minutes = Math.abs(offset) % 60; - - result += offset < 0 ? "+" : "-"; - result += hours < 10 ? "0" : ""; - result += hours; - - if (colons > 0) { - result += ":"; - } - - result += minutes < 10 ? "0" : ""; - result += minutes; - - if (colons > 1) { - result += ":00"; - } - - break; - - case 'Z': - result += self.$zone(); - break; - - case 'A': - result += days_of_week[self.$wday()]; - break; - - case 'a': - result += short_days[self.$wday()]; - break; - - case 'u': - result += (self.$wday() + 1); - break; - - case 'w': - result += self.$wday(); - break; - - case 'V': - result += self.$cweek_cyear()['$[]'](0).$to_s().$rjust(2, "0"); - break; - - case 'G': - result += self.$cweek_cyear()['$[]'](1); - break; - - case 'g': - result += self.$cweek_cyear()['$[]'](1)['$[]']($range(-2, -1, false)); - break; - - case 's': - result += self.$to_i(); - break; - - case 'n': - result += "\n"; - break; - - case 't': - result += "\t"; - break; - - case '%': - result += "%"; - break; - - case 'c': - result += self.$strftime("%a %b %e %T %Y"); - break; - - case 'D': - case 'x': - result += self.$strftime("%m/%d/%y"); - break; - - case 'F': - result += self.$strftime("%Y-%m-%d"); - break; - - case 'v': - result += self.$strftime("%e-%^b-%4Y"); - break; - - case 'r': - result += self.$strftime("%I:%M:%S %p"); - break; - - case 'R': - result += self.$strftime("%H:%M"); - break; - - case 'T': - case 'X': - result += self.$strftime("%H:%M:%S"); - break; - - default: - return full; - } - - if (upcase) { - result = result.toUpperCase(); - } - - if (invert) { - result = result.replace(/[A-Z]/, function(c) { c.toLowerCase() }). - replace(/[a-z]/, function(c) { c.toUpperCase() }); - } - - if (pad && (zero || blank)) { - result = (result).$rjust(isNaN(width) ? 2 : width, blank ? " " : "0"); - } - - return result; - }); - - }, $Time_strftime$32.$$arity = 1); - - Opal.def(self, '$sunday?', $Time_sunday$ques$33 = function() { - var self = this; - - return self.$wday() == 0 - }, $Time_sunday$ques$33.$$arity = 0); - - Opal.def(self, '$thursday?', $Time_thursday$ques$34 = function() { - var self = this; - - return self.$wday() == 4 - }, $Time_thursday$ques$34.$$arity = 0); - - Opal.def(self, '$to_a', $Time_to_a$35 = function $$to_a() { - var self = this; - - return [self.$sec(), self.$min(), self.$hour(), self.$day(), self.$month(), self.$year(), self.$wday(), self.$yday(), self.$isdst(), self.$zone()] - }, $Time_to_a$35.$$arity = 0); - - Opal.def(self, '$to_f', $Time_to_f$36 = function $$to_f() { - var self = this; - - return self.getTime() / 1000; - }, $Time_to_f$36.$$arity = 0); - - Opal.def(self, '$to_i', $Time_to_i$37 = function $$to_i() { - var self = this; - - return parseInt(self.getTime() / 1000, 10); - }, $Time_to_i$37.$$arity = 0); - Opal.alias(self, "to_s", "inspect"); - - Opal.def(self, '$tuesday?', $Time_tuesday$ques$38 = function() { - var self = this; - - return self.$wday() == 2 - }, $Time_tuesday$ques$38.$$arity = 0); - Opal.alias(self, "tv_sec", "to_i"); - Opal.alias(self, "tv_usec", "usec"); - Opal.alias(self, "utc?", "gmt?"); - Opal.alias(self, "gmtoff", "gmt_offset"); - Opal.alias(self, "utc_offset", "gmt_offset"); - - Opal.def(self, '$wday', $Time_wday$39 = function $$wday() { - var self = this; - - return self.is_utc ? self.getUTCDay() : self.getDay(); - }, $Time_wday$39.$$arity = 0); - - Opal.def(self, '$wednesday?', $Time_wednesday$ques$40 = function() { - var self = this; - - return self.$wday() == 3 - }, $Time_wednesday$ques$40.$$arity = 0); - - Opal.def(self, '$year', $Time_year$41 = function $$year() { - var self = this; - - return self.is_utc ? self.getUTCFullYear() : self.getFullYear(); - }, $Time_year$41.$$arity = 0); - return (Opal.def(self, '$cweek_cyear', $Time_cweek_cyear$42 = function $$cweek_cyear() { - var $a, self = this, jan01 = nil, jan01_wday = nil, first_monday = nil, year = nil, offset = nil, week = nil, dec31 = nil, dec31_wday = nil; - - - jan01 = $$($nesting, 'Time').$new(self.$year(), 1, 1); - jan01_wday = jan01.$wday(); - first_monday = 0; - year = self.$year(); - if ($truthy(($truthy($a = $rb_le(jan01_wday, 4)) ? jan01_wday['$!='](0) : $a))) { - offset = $rb_minus(jan01_wday, 1) - } else { - - offset = $rb_minus($rb_minus(jan01_wday, 7), 1); - if (offset['$=='](-8)) { - offset = -1}; - }; - week = $rb_divide($rb_plus(self.$yday(), offset), 7.0).$ceil(); - if ($truthy($rb_le(week, 0))) { - return $$($nesting, 'Time').$new($rb_minus(self.$year(), 1), 12, 31).$cweek_cyear() - } else if (week['$=='](53)) { - - dec31 = $$($nesting, 'Time').$new(self.$year(), 12, 31); - dec31_wday = dec31.$wday(); - if ($truthy(($truthy($a = $rb_le(dec31_wday, 3)) ? dec31_wday['$!='](0) : $a))) { - - week = 1; - year = $rb_plus(year, 1);};}; - return [week, year]; - }, $Time_cweek_cyear$42.$$arity = 0), nil) && 'cweek_cyear'; - })($nesting[0], Date, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/struct"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$include', '$const_name!', '$unshift', '$map', '$coerce_to!', '$new', '$each', '$define_struct_attribute', '$allocate', '$initialize', '$alias_method', '$module_eval', '$to_proc', '$const_set', '$==', '$raise', '$<<', '$members', '$define_method', '$instance_eval', '$class', '$last', '$>', '$length', '$-', '$keys', '$any?', '$join', '$[]', '$[]=', '$each_with_index', '$hash', '$===', '$<', '$-@', '$size', '$>=', '$include?', '$to_sym', '$instance_of?', '$__id__', '$eql?', '$enum_for', '$name', '$+', '$each_pair', '$inspect', '$each_with_object', '$flatten', '$to_a', '$respond_to?', '$dig']); - - self.$require("corelib/enumerable"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Struct'); - - var $nesting = [self].concat($parent_nesting), $Struct_new$1, $Struct_define_struct_attribute$6, $Struct_members$9, $Struct_inherited$10, $Struct_initialize$12, $Struct_members$15, $Struct_hash$16, $Struct_$$$17, $Struct_$$$eq$18, $Struct_$eq_eq$19, $Struct_eql$ques$20, $Struct_each$21, $Struct_each_pair$24, $Struct_length$27, $Struct_to_a$28, $Struct_inspect$30, $Struct_to_h$32, $Struct_values_at$34, $Struct_dig$36; - - - self.$include($$($nesting, 'Enumerable')); - Opal.defs(self, '$new', $Struct_new$1 = function(const_name, $a, $b) { - var $iter = $Struct_new$1.$$p, block = $iter || nil, $post_args, $kwargs, args, keyword_init, $$2, $$3, self = this, klass = nil; - - if ($iter) $Struct_new$1.$$p = null; - - - if ($iter) $Struct_new$1.$$p = null;; - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - $kwargs = Opal.extract_kwargs($post_args); - - if ($kwargs == null) { - $kwargs = $hash2([], {}); - } else if (!$kwargs.$$is_hash) { - throw Opal.ArgumentError.$new('expected kwargs'); - }; - - args = $post_args;; - - keyword_init = $kwargs.$$smap["keyword_init"]; - if (keyword_init == null) { - keyword_init = false - }; - if ($truthy(const_name)) { - - try { - const_name = $$($nesting, 'Opal')['$const_name!'](const_name) - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'TypeError'), $$($nesting, 'NameError')])) { - try { - - args.$unshift(const_name); - const_name = nil; - } finally { Opal.pop_exception() } - } else { throw $err; } - };}; - $send(args, 'map', [], ($$2 = function(arg){var self = $$2.$$s || this; - - - - if (arg == null) { - arg = nil; - }; - return $$($nesting, 'Opal')['$coerce_to!'](arg, $$($nesting, 'String'), "to_str");}, $$2.$$s = self, $$2.$$arity = 1, $$2)); - klass = $send($$($nesting, 'Class'), 'new', [self], ($$3 = function(){var self = $$3.$$s || this, $$4; - - - $send(args, 'each', [], ($$4 = function(arg){var self = $$4.$$s || this; - - - - if (arg == null) { - arg = nil; - }; - return self.$define_struct_attribute(arg);}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - return (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $new$5; - - - - Opal.def(self, '$new', $new$5 = function($a) { - var $post_args, args, self = this, instance = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - instance = self.$allocate(); - instance.$$data = {}; - $send(instance, 'initialize', Opal.to_a(args)); - return instance; - }, $new$5.$$arity = -1); - return self.$alias_method("[]", "new"); - })(Opal.get_singleton_class(self), $nesting);}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - if ($truthy(block)) { - $send(klass, 'module_eval', [], block.$to_proc())}; - klass.$$keyword_init = keyword_init; - if ($truthy(const_name)) { - $$($nesting, 'Struct').$const_set(const_name, klass)}; - return klass; - }, $Struct_new$1.$$arity = -2); - Opal.defs(self, '$define_struct_attribute', $Struct_define_struct_attribute$6 = function $$define_struct_attribute(name) { - var $$7, $$8, self = this; - - - if (self['$==']($$($nesting, 'Struct'))) { - self.$raise($$($nesting, 'ArgumentError'), "you cannot define attributes to the Struct class")}; - self.$members()['$<<'](name); - $send(self, 'define_method', [name], ($$7 = function(){var self = $$7.$$s || this; - - return self.$$data[name];}, $$7.$$s = self, $$7.$$arity = 0, $$7)); - return $send(self, 'define_method', ["" + (name) + "="], ($$8 = function(value){var self = $$8.$$s || this; - - - - if (value == null) { - value = nil; - }; - return self.$$data[name] = value;;}, $$8.$$s = self, $$8.$$arity = 1, $$8)); - }, $Struct_define_struct_attribute$6.$$arity = 1); - Opal.defs(self, '$members', $Struct_members$9 = function $$members() { - var $a, self = this; - if (self.members == null) self.members = nil; - - - if (self['$==']($$($nesting, 'Struct'))) { - self.$raise($$($nesting, 'ArgumentError'), "the Struct class has no members")}; - return (self.members = ($truthy($a = self.members) ? $a : [])); - }, $Struct_members$9.$$arity = 0); - Opal.defs(self, '$inherited', $Struct_inherited$10 = function $$inherited(klass) { - var $$11, self = this, members = nil; - if (self.members == null) self.members = nil; - - - members = self.members; - return $send(klass, 'instance_eval', [], ($$11 = function(){var self = $$11.$$s || this; - - return (self.members = members)}, $$11.$$s = self, $$11.$$arity = 0, $$11)); - }, $Struct_inherited$10.$$arity = 1); - - Opal.def(self, '$initialize', $Struct_initialize$12 = function $$initialize($a) { - var $post_args, args, $b, $$13, $$14, self = this, kwargs = nil, extra = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - if ($truthy(self.$class().$$keyword_init)) { - - kwargs = ($truthy($b = args.$last()) ? $b : $hash2([], {})); - if ($truthy(($truthy($b = $rb_gt(args.$length(), 1)) ? $b : (args.length === 1 && !kwargs.$$is_hash)))) { - self.$raise($$($nesting, 'ArgumentError'), "" + "wrong number of arguments (given " + (args.$length()) + ", expected 0)")}; - extra = $rb_minus(kwargs.$keys(), self.$class().$members()); - if ($truthy(extra['$any?']())) { - self.$raise($$($nesting, 'ArgumentError'), "" + "unknown keywords: " + (extra.$join(", ")))}; - return $send(self.$class().$members(), 'each', [], ($$13 = function(name){var self = $$13.$$s || this, $writer = nil; - - - - if (name == null) { - name = nil; - }; - $writer = [name, kwargs['$[]'](name)]; - $send(self, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, $$13.$$s = self, $$13.$$arity = 1, $$13)); - } else { - - if ($truthy($rb_gt(args.$length(), self.$class().$members().$length()))) { - self.$raise($$($nesting, 'ArgumentError'), "struct size differs")}; - return $send(self.$class().$members(), 'each_with_index', [], ($$14 = function(name, index){var self = $$14.$$s || this, $writer = nil; - - - - if (name == null) { - name = nil; - }; - - if (index == null) { - index = nil; - }; - $writer = [name, args['$[]'](index)]; - $send(self, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, $$14.$$s = self, $$14.$$arity = 2, $$14)); - }; - }, $Struct_initialize$12.$$arity = -1); - - Opal.def(self, '$members', $Struct_members$15 = function $$members() { - var self = this; - - return self.$class().$members() - }, $Struct_members$15.$$arity = 0); - - Opal.def(self, '$hash', $Struct_hash$16 = function $$hash() { - var self = this; - - return $$($nesting, 'Hash').$new(self.$$data).$hash() - }, $Struct_hash$16.$$arity = 0); - - Opal.def(self, '$[]', $Struct_$$$17 = function(name) { - var self = this; - - - if ($truthy($$($nesting, 'Integer')['$==='](name))) { - - if ($truthy($rb_lt(name, self.$class().$members().$size()['$-@']()))) { - self.$raise($$($nesting, 'IndexError'), "" + "offset " + (name) + " too small for struct(size:" + (self.$class().$members().$size()) + ")")}; - if ($truthy($rb_ge(name, self.$class().$members().$size()))) { - self.$raise($$($nesting, 'IndexError'), "" + "offset " + (name) + " too large for struct(size:" + (self.$class().$members().$size()) + ")")}; - name = self.$class().$members()['$[]'](name); - } else if ($truthy($$($nesting, 'String')['$==='](name))) { - - if(!self.$$data.hasOwnProperty(name)) { - self.$raise($$($nesting, 'NameError').$new("" + "no member '" + (name) + "' in struct", name)) - } - - } else { - self.$raise($$($nesting, 'TypeError'), "" + "no implicit conversion of " + (name.$class()) + " into Integer") - }; - name = $$($nesting, 'Opal')['$coerce_to!'](name, $$($nesting, 'String'), "to_str"); - return self.$$data[name];; - }, $Struct_$$$17.$$arity = 1); - - Opal.def(self, '$[]=', $Struct_$$$eq$18 = function(name, value) { - var self = this; - - - if ($truthy($$($nesting, 'Integer')['$==='](name))) { - - if ($truthy($rb_lt(name, self.$class().$members().$size()['$-@']()))) { - self.$raise($$($nesting, 'IndexError'), "" + "offset " + (name) + " too small for struct(size:" + (self.$class().$members().$size()) + ")")}; - if ($truthy($rb_ge(name, self.$class().$members().$size()))) { - self.$raise($$($nesting, 'IndexError'), "" + "offset " + (name) + " too large for struct(size:" + (self.$class().$members().$size()) + ")")}; - name = self.$class().$members()['$[]'](name); - } else if ($truthy($$($nesting, 'String')['$==='](name))) { - if ($truthy(self.$class().$members()['$include?'](name.$to_sym()))) { - } else { - self.$raise($$($nesting, 'NameError').$new("" + "no member '" + (name) + "' in struct", name)) - } - } else { - self.$raise($$($nesting, 'TypeError'), "" + "no implicit conversion of " + (name.$class()) + " into Integer") - }; - name = $$($nesting, 'Opal')['$coerce_to!'](name, $$($nesting, 'String'), "to_str"); - return self.$$data[name] = value;; - }, $Struct_$$$eq$18.$$arity = 2); - - Opal.def(self, '$==', $Struct_$eq_eq$19 = function(other) { - var self = this; - - - if ($truthy(other['$instance_of?'](self.$class()))) { - } else { - return false - }; - - var recursed1 = {}, recursed2 = {}; - - function _eqeq(struct, other) { - var key, a, b; - - recursed1[(struct).$__id__()] = true; - recursed2[(other).$__id__()] = true; - - for (key in struct.$$data) { - a = struct.$$data[key]; - b = other.$$data[key]; - - if ($$($nesting, 'Struct')['$==='](a)) { - if (!recursed1.hasOwnProperty((a).$__id__()) || !recursed2.hasOwnProperty((b).$__id__())) { - if (!_eqeq(a, b)) { - return false; - } - } - } else { - if (!(a)['$=='](b)) { - return false; - } - } - } - - return true; - } - - return _eqeq(self, other); - ; - }, $Struct_$eq_eq$19.$$arity = 1); - - Opal.def(self, '$eql?', $Struct_eql$ques$20 = function(other) { - var self = this; - - - if ($truthy(other['$instance_of?'](self.$class()))) { - } else { - return false - }; - - var recursed1 = {}, recursed2 = {}; - - function _eqeq(struct, other) { - var key, a, b; - - recursed1[(struct).$__id__()] = true; - recursed2[(other).$__id__()] = true; - - for (key in struct.$$data) { - a = struct.$$data[key]; - b = other.$$data[key]; - - if ($$($nesting, 'Struct')['$==='](a)) { - if (!recursed1.hasOwnProperty((a).$__id__()) || !recursed2.hasOwnProperty((b).$__id__())) { - if (!_eqeq(a, b)) { - return false; - } - } - } else { - if (!(a)['$eql?'](b)) { - return false; - } - } - } - - return true; - } - - return _eqeq(self, other); - ; - }, $Struct_eql$ques$20.$$arity = 1); - - Opal.def(self, '$each', $Struct_each$21 = function $$each() { - var $$22, $$23, $iter = $Struct_each$21.$$p, $yield = $iter || nil, self = this; - - if ($iter) $Struct_each$21.$$p = null; - - if (($yield !== nil)) { - } else { - return $send(self, 'enum_for', ["each"], ($$22 = function(){var self = $$22.$$s || this; - - return self.$size()}, $$22.$$s = self, $$22.$$arity = 0, $$22)) - }; - $send(self.$class().$members(), 'each', [], ($$23 = function(name){var self = $$23.$$s || this; - - - - if (name == null) { - name = nil; - }; - return Opal.yield1($yield, self['$[]'](name));;}, $$23.$$s = self, $$23.$$arity = 1, $$23)); - return self; - }, $Struct_each$21.$$arity = 0); - - Opal.def(self, '$each_pair', $Struct_each_pair$24 = function $$each_pair() { - var $$25, $$26, $iter = $Struct_each_pair$24.$$p, $yield = $iter || nil, self = this; - - if ($iter) $Struct_each_pair$24.$$p = null; - - if (($yield !== nil)) { - } else { - return $send(self, 'enum_for', ["each_pair"], ($$25 = function(){var self = $$25.$$s || this; - - return self.$size()}, $$25.$$s = self, $$25.$$arity = 0, $$25)) - }; - $send(self.$class().$members(), 'each', [], ($$26 = function(name){var self = $$26.$$s || this; - - - - if (name == null) { - name = nil; - }; - return Opal.yield1($yield, [name, self['$[]'](name)]);;}, $$26.$$s = self, $$26.$$arity = 1, $$26)); - return self; - }, $Struct_each_pair$24.$$arity = 0); - - Opal.def(self, '$length', $Struct_length$27 = function $$length() { - var self = this; - - return self.$class().$members().$length() - }, $Struct_length$27.$$arity = 0); - Opal.alias(self, "size", "length"); - - Opal.def(self, '$to_a', $Struct_to_a$28 = function $$to_a() { - var $$29, self = this; - - return $send(self.$class().$members(), 'map', [], ($$29 = function(name){var self = $$29.$$s || this; - - - - if (name == null) { - name = nil; - }; - return self['$[]'](name);}, $$29.$$s = self, $$29.$$arity = 1, $$29)) - }, $Struct_to_a$28.$$arity = 0); - Opal.alias(self, "values", "to_a"); - - Opal.def(self, '$inspect', $Struct_inspect$30 = function $$inspect() { - var $a, $$31, self = this, result = nil; - - - result = "#"); - return result; - }, $Struct_inspect$30.$$arity = 0); - Opal.alias(self, "to_s", "inspect"); - - Opal.def(self, '$to_h', $Struct_to_h$32 = function $$to_h() { - var $$33, self = this; - - return $send(self.$class().$members(), 'each_with_object', [$hash2([], {})], ($$33 = function(name, h){var self = $$33.$$s || this, $writer = nil; - - - - if (name == null) { - name = nil; - }; - - if (h == null) { - h = nil; - }; - $writer = [name, self['$[]'](name)]; - $send(h, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, $$33.$$s = self, $$33.$$arity = 2, $$33)) - }, $Struct_to_h$32.$$arity = 0); - - Opal.def(self, '$values_at', $Struct_values_at$34 = function $$values_at($a) { - var $post_args, args, $$35, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - args = $send(args, 'map', [], ($$35 = function(arg){var self = $$35.$$s || this; - - - - if (arg == null) { - arg = nil; - }; - return arg.$$is_range ? arg.$to_a() : arg;}, $$35.$$s = self, $$35.$$arity = 1, $$35)).$flatten(); - - var result = []; - for (var i = 0, len = args.length; i < len; i++) { - if (!args[i].$$is_number) { - self.$raise($$($nesting, 'TypeError'), "" + "no implicit conversion of " + ((args[i]).$class()) + " into Integer") - } - result.push(self['$[]'](args[i])); - } - return result; - ; - }, $Struct_values_at$34.$$arity = -1); - return (Opal.def(self, '$dig', $Struct_dig$36 = function $$dig(key, $a) { - var $post_args, keys, self = this, item = nil; - - - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - keys = $post_args;; - item = (function() {if ($truthy(key.$$is_string && self.$$data.hasOwnProperty(key))) { - return self.$$data[key] || nil; - } else { - return nil - }; return nil; })(); - - if (item === nil || keys.length === 0) { - return item; - } - ; - if ($truthy(item['$respond_to?']("dig"))) { - } else { - self.$raise($$($nesting, 'TypeError'), "" + (item.$class()) + " does not have #dig method") - }; - return $send(item, 'dig', Opal.to_a(keys)); - }, $Struct_dig$36.$$arity = -2), nil) && 'dig'; - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/io"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $module = Opal.module, $send = Opal.send, $gvars = Opal.gvars, $truthy = Opal.truthy, $writer = nil; - - Opal.add_stubs(['$attr_accessor', '$size', '$write', '$join', '$map', '$String', '$empty?', '$concat', '$chomp', '$getbyte', '$getc', '$raise', '$new', '$write_proc=', '$-', '$extend']); - - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'IO'); - - var $nesting = [self].concat($parent_nesting), $IO_tty$ques$1, $IO_closed$ques$2, $IO_write$3, $IO_flush$4; - - self.$$prototype.tty = self.$$prototype.closed = nil; - - Opal.const_set($nesting[0], 'SEEK_SET', 0); - Opal.const_set($nesting[0], 'SEEK_CUR', 1); - Opal.const_set($nesting[0], 'SEEK_END', 2); - - Opal.def(self, '$tty?', $IO_tty$ques$1 = function() { - var self = this; - - return self.tty - }, $IO_tty$ques$1.$$arity = 0); - - Opal.def(self, '$closed?', $IO_closed$ques$2 = function() { - var self = this; - - return self.closed - }, $IO_closed$ques$2.$$arity = 0); - self.$attr_accessor("write_proc"); - - Opal.def(self, '$write', $IO_write$3 = function $$write(string) { - var self = this; - - - self.write_proc(string); - return string.$size(); - }, $IO_write$3.$$arity = 1); - self.$attr_accessor("sync", "tty"); - - Opal.def(self, '$flush', $IO_flush$4 = function $$flush() { - var self = this; - - return nil - }, $IO_flush$4.$$arity = 0); - (function($base, $parent_nesting) { - var self = $module($base, 'Writable'); - - var $nesting = [self].concat($parent_nesting), $Writable_$lt$lt$5, $Writable_print$6, $Writable_puts$8; - - - - Opal.def(self, '$<<', $Writable_$lt$lt$5 = function(string) { - var self = this; - - - self.$write(string); - return self; - }, $Writable_$lt$lt$5.$$arity = 1); - - Opal.def(self, '$print', $Writable_print$6 = function $$print($a) { - var $post_args, args, $$7, self = this; - if ($gvars[","] == null) $gvars[","] = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - self.$write($send(args, 'map', [], ($$7 = function(arg){var self = $$7.$$s || this; - - - - if (arg == null) { - arg = nil; - }; - return self.$String(arg);}, $$7.$$s = self, $$7.$$arity = 1, $$7)).$join($gvars[","])); - return nil; - }, $Writable_print$6.$$arity = -1); - - Opal.def(self, '$puts', $Writable_puts$8 = function $$puts($a) { - var $post_args, args, $$9, self = this, newline = nil; - if ($gvars["/"] == null) $gvars["/"] = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - newline = $gvars["/"]; - if ($truthy(args['$empty?']())) { - self.$write($gvars["/"]) - } else { - self.$write($send(args, 'map', [], ($$9 = function(arg){var self = $$9.$$s || this; - - - - if (arg == null) { - arg = nil; - }; - return self.$String(arg).$chomp();}, $$9.$$s = self, $$9.$$arity = 1, $$9)).$concat([nil]).$join(newline)) - }; - return nil; - }, $Writable_puts$8.$$arity = -1); - })($nesting[0], $nesting); - return (function($base, $parent_nesting) { - var self = $module($base, 'Readable'); - - var $nesting = [self].concat($parent_nesting), $Readable_readbyte$10, $Readable_readchar$11, $Readable_readline$12, $Readable_readpartial$13; - - - - Opal.def(self, '$readbyte', $Readable_readbyte$10 = function $$readbyte() { - var self = this; - - return self.$getbyte() - }, $Readable_readbyte$10.$$arity = 0); - - Opal.def(self, '$readchar', $Readable_readchar$11 = function $$readchar() { - var self = this; - - return self.$getc() - }, $Readable_readchar$11.$$arity = 0); - - Opal.def(self, '$readline', $Readable_readline$12 = function $$readline(sep) { - var self = this; - if ($gvars["/"] == null) $gvars["/"] = nil; - - - - if (sep == null) { - sep = $gvars["/"]; - }; - return self.$raise($$($nesting, 'NotImplementedError')); - }, $Readable_readline$12.$$arity = -1); - - Opal.def(self, '$readpartial', $Readable_readpartial$13 = function $$readpartial(integer, outbuf) { - var self = this; - - - - if (outbuf == null) { - outbuf = nil; - }; - return self.$raise($$($nesting, 'NotImplementedError')); - }, $Readable_readpartial$13.$$arity = -2); - })($nesting[0], $nesting); - })($nesting[0], null, $nesting); - Opal.const_set($nesting[0], 'STDERR', ($gvars.stderr = $$($nesting, 'IO').$new())); - Opal.const_set($nesting[0], 'STDIN', ($gvars.stdin = $$($nesting, 'IO').$new())); - Opal.const_set($nesting[0], 'STDOUT', ($gvars.stdout = $$($nesting, 'IO').$new())); - var console = Opal.global.console; - - $writer = [typeof(process) === 'object' && typeof(process.stdout) === 'object' ? function(s){process.stdout.write(s)} : function(s){console.log(s)}]; - $send($$($nesting, 'STDOUT'), 'write_proc=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [typeof(process) === 'object' && typeof(process.stderr) === 'object' ? function(s){process.stderr.write(s)} : function(s){console.warn(s)}]; - $send($$($nesting, 'STDERR'), 'write_proc=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - $$($nesting, 'STDOUT').$extend($$$($$($nesting, 'IO'), 'Writable')); - return $$($nesting, 'STDERR').$extend($$$($$($nesting, 'IO'), 'Writable')); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/main"] = function(Opal) { - var $to_s$1, $include$2, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice; - - Opal.add_stubs(['$include']); - - Opal.defs(self, '$to_s', $to_s$1 = function $$to_s() { - var self = this; - - return "main" - }, $to_s$1.$$arity = 0); - return (Opal.defs(self, '$include', $include$2 = function $$include(mod) { - var self = this; - - return $$($nesting, 'Object').$include(mod) - }, $include$2.$$arity = 1), nil) && 'include'; -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/dir"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$[]']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Dir'); - - var $nesting = [self].concat($parent_nesting); - - return (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $chdir$1, $pwd$2, $home$3; - - - - Opal.def(self, '$chdir', $chdir$1 = function $$chdir(dir) { - var $iter = $chdir$1.$$p, $yield = $iter || nil, self = this, prev_cwd = nil; - - if ($iter) $chdir$1.$$p = null; - return (function() { try { - - prev_cwd = Opal.current_dir; - Opal.current_dir = dir; - return Opal.yieldX($yield, []);; - } finally { - Opal.current_dir = prev_cwd - }; })() - }, $chdir$1.$$arity = 1); - - Opal.def(self, '$pwd', $pwd$2 = function $$pwd() { - var self = this; - - return Opal.current_dir || '.'; - }, $pwd$2.$$arity = 0); - Opal.alias(self, "getwd", "pwd"); - return (Opal.def(self, '$home', $home$3 = function $$home() { - var $a, self = this; - - return ($truthy($a = $$($nesting, 'ENV')['$[]']("HOME")) ? $a : ".") - }, $home$3.$$arity = 0), nil) && 'home'; - })(Opal.get_singleton_class(self), $nesting) - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/file"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range, $send = Opal.send; - - Opal.add_stubs(['$respond_to?', '$to_path', '$pwd', '$split', '$sub', '$+', '$unshift', '$join', '$home', '$raise', '$start_with?', '$absolute_path', '$coerce_to!', '$basename', '$empty?', '$rindex', '$[]', '$nil?', '$==', '$-', '$length', '$gsub', '$find', '$=~', '$map', '$each_with_index', '$flatten', '$reject', '$to_proc', '$end_with?']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'File'); - - var $nesting = [self].concat($parent_nesting), windows_root_rx = nil; - - - Opal.const_set($nesting[0], 'Separator', Opal.const_set($nesting[0], 'SEPARATOR', "/")); - Opal.const_set($nesting[0], 'ALT_SEPARATOR', nil); - Opal.const_set($nesting[0], 'PATH_SEPARATOR', ":"); - Opal.const_set($nesting[0], 'FNM_SYSCASE', 0); - windows_root_rx = /^[a-zA-Z]:(?:\\|\/)/; - return (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $absolute_path$1, $expand_path$2, $dirname$3, $basename$4, $extname$5, $exist$ques$6, $directory$ques$7, $join$9, $split$12; - - - - Opal.def(self, '$absolute_path', $absolute_path$1 = function $$absolute_path(path, basedir) { - var $a, self = this, sep = nil, sep_chars = nil, new_parts = nil, path_abs = nil, basedir_abs = nil, parts = nil, leading_sep = nil, abs = nil, new_path = nil; - - - - if (basedir == null) { - basedir = nil; - }; - sep = $$($nesting, 'SEPARATOR'); - sep_chars = $sep_chars(); - new_parts = []; - path = (function() {if ($truthy(path['$respond_to?']("to_path"))) { - return path.$to_path() - } else { - return path - }; return nil; })(); - basedir = ($truthy($a = basedir) ? $a : $$($nesting, 'Dir').$pwd()); - path_abs = path.substr(0, sep.length) === sep || windows_root_rx.test(path); - basedir_abs = basedir.substr(0, sep.length) === sep || windows_root_rx.test(basedir); - if ($truthy(path_abs)) { - - parts = path.$split(new RegExp("" + "[" + (sep_chars) + "]")); - leading_sep = windows_root_rx.test(path) ? '' : path.$sub(new RegExp("" + "^([" + (sep_chars) + "]+).*$"), "\\1"); - abs = true; - } else { - - parts = $rb_plus(basedir.$split(new RegExp("" + "[" + (sep_chars) + "]")), path.$split(new RegExp("" + "[" + (sep_chars) + "]"))); - leading_sep = windows_root_rx.test(basedir) ? '' : basedir.$sub(new RegExp("" + "^([" + (sep_chars) + "]+).*$"), "\\1"); - abs = basedir_abs; - }; - - var part; - for (var i = 0, ii = parts.length; i < ii; i++) { - part = parts[i]; - - if ( - (part === nil) || - (part === '' && ((new_parts.length === 0) || abs)) || - (part === '.' && ((new_parts.length === 0) || abs)) - ) { - continue; - } - if (part === '..') { - new_parts.pop(); - } else { - new_parts.push(part); - } - } - - if (!abs && parts[0] !== '.') { - new_parts.$unshift(".") - } - ; - new_path = new_parts.$join(sep); - if ($truthy(abs)) { - new_path = $rb_plus(leading_sep, new_path)}; - return new_path; - }, $absolute_path$1.$$arity = -2); - - Opal.def(self, '$expand_path', $expand_path$2 = function $$expand_path(path, basedir) { - var self = this, sep = nil, sep_chars = nil, home = nil, leading_sep = nil, home_path_regexp = nil; - - - - if (basedir == null) { - basedir = nil; - }; - sep = $$($nesting, 'SEPARATOR'); - sep_chars = $sep_chars(); - if ($truthy(path[0] === '~' || (basedir && basedir[0] === '~'))) { - - home = $$($nesting, 'Dir').$home(); - if ($truthy(home)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "couldn't find HOME environment -- expanding `~'") - }; - leading_sep = windows_root_rx.test(home) ? '' : home.$sub(new RegExp("" + "^([" + (sep_chars) + "]+).*$"), "\\1"); - if ($truthy(home['$start_with?'](leading_sep))) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "non-absolute home") - }; - home = $rb_plus(home, sep); - home_path_regexp = new RegExp("" + "^\\~(?:" + (sep) + "|$)"); - path = path.$sub(home_path_regexp, home); - if ($truthy(basedir)) { - basedir = basedir.$sub(home_path_regexp, home)};}; - return self.$absolute_path(path, basedir); - }, $expand_path$2.$$arity = -2); - Opal.alias(self, "realpath", "expand_path"); - - // Coerce a given path to a path string using #to_path and #to_str - function $coerce_to_path(path) { - if ($truthy((path)['$respond_to?']("to_path"))) { - path = path.$to_path(); - } - - path = $$($nesting, 'Opal')['$coerce_to!'](path, $$($nesting, 'String'), "to_str"); - - return path; - } - - // Return a RegExp compatible char class - function $sep_chars() { - if ($$($nesting, 'ALT_SEPARATOR') === nil) { - return Opal.escape_regexp($$($nesting, 'SEPARATOR')); - } else { - return Opal.escape_regexp($rb_plus($$($nesting, 'SEPARATOR'), $$($nesting, 'ALT_SEPARATOR'))); - } - } - ; - - Opal.def(self, '$dirname', $dirname$3 = function $$dirname(path) { - var self = this, sep_chars = nil; - - - sep_chars = $sep_chars(); - path = $coerce_to_path(path); - - var absolute = path.match(new RegExp("" + "^[" + (sep_chars) + "]")); - - path = path.replace(new RegExp("" + "[" + (sep_chars) + "]+$"), ''); // remove trailing separators - path = path.replace(new RegExp("" + "[^" + (sep_chars) + "]+$"), ''); // remove trailing basename - path = path.replace(new RegExp("" + "[" + (sep_chars) + "]+$"), ''); // remove final trailing separators - - if (path === '') { - return absolute ? '/' : '.'; - } - - return path; - ; - }, $dirname$3.$$arity = 1); - - Opal.def(self, '$basename', $basename$4 = function $$basename(name, suffix) { - var self = this, sep_chars = nil; - - - - if (suffix == null) { - suffix = nil; - }; - sep_chars = $sep_chars(); - name = $coerce_to_path(name); - - if (name.length == 0) { - return name; - } - - if (suffix !== nil) { - suffix = $$($nesting, 'Opal')['$coerce_to!'](suffix, $$($nesting, 'String'), "to_str") - } else { - suffix = null; - } - - name = name.replace(new RegExp("" + "(.)[" + (sep_chars) + "]*$"), '$1'); - name = name.replace(new RegExp("" + "^(?:.*[" + (sep_chars) + "])?([^" + (sep_chars) + "]+)$"), '$1'); - - if (suffix === ".*") { - name = name.replace(/\.[^\.]+$/, ''); - } else if(suffix !== null) { - suffix = Opal.escape_regexp(suffix); - name = name.replace(new RegExp("" + (suffix) + "$"), ''); - } - - return name; - ; - }, $basename$4.$$arity = -2); - - Opal.def(self, '$extname', $extname$5 = function $$extname(path) { - var $a, self = this, filename = nil, last_dot_idx = nil; - - - path = $coerce_to_path(path); - filename = self.$basename(path); - if ($truthy(filename['$empty?']())) { - return ""}; - last_dot_idx = filename['$[]']($range(1, -1, false)).$rindex("."); - if ($truthy(($truthy($a = last_dot_idx['$nil?']()) ? $a : $rb_plus(last_dot_idx, 1)['$==']($rb_minus(filename.$length(), 1))))) { - return "" - } else { - return filename['$[]'](Opal.Range.$new($rb_plus(last_dot_idx, 1), -1, false)) - }; - }, $extname$5.$$arity = 1); - - Opal.def(self, '$exist?', $exist$ques$6 = function(path) { - var self = this; - - return Opal.modules[path] != null - }, $exist$ques$6.$$arity = 1); - Opal.alias(self, "exists?", "exist?"); - - Opal.def(self, '$directory?', $directory$ques$7 = function(path) { - var $$8, self = this, files = nil, file = nil; - - - files = []; - - for (var key in Opal.modules) { - files.push(key) - } - ; - path = path.$gsub(new RegExp("" + "(^." + ($$($nesting, 'SEPARATOR')) + "+|" + ($$($nesting, 'SEPARATOR')) + "+$)")); - file = $send(files, 'find', [], ($$8 = function(f){var self = $$8.$$s || this; - - - - if (f == null) { - f = nil; - }; - return f['$=~'](new RegExp("" + "^" + (path)));}, $$8.$$s = self, $$8.$$arity = 1, $$8)); - return file; - }, $directory$ques$7.$$arity = 1); - - Opal.def(self, '$join', $join$9 = function $$join($a) { - var $post_args, paths, $$10, $$11, self = this, result = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - paths = $post_args;; - if ($truthy(paths['$empty?']())) { - return ""}; - result = ""; - paths = $send(paths.$flatten().$each_with_index(), 'map', [], ($$10 = function(item, index){var self = $$10.$$s || this, $b; - - - - if (item == null) { - item = nil; - }; - - if (index == null) { - index = nil; - }; - if ($truthy((($b = index['$=='](0)) ? item['$empty?']() : index['$=='](0)))) { - return $$($nesting, 'SEPARATOR') - } else if ($truthy((($b = paths.$length()['$==']($rb_plus(index, 1))) ? item['$empty?']() : paths.$length()['$==']($rb_plus(index, 1))))) { - return $$($nesting, 'SEPARATOR') - } else { - return item - };}, $$10.$$s = self, $$10.$$arity = 2, $$10)); - paths = $send(paths, 'reject', [], "empty?".$to_proc()); - $send(paths, 'each_with_index', [], ($$11 = function(item, index){var self = $$11.$$s || this, $b, next_item = nil; - - - - if (item == null) { - item = nil; - }; - - if (index == null) { - index = nil; - }; - next_item = paths['$[]']($rb_plus(index, 1)); - if ($truthy(next_item['$nil?']())) { - return (result = "" + (result) + (item)) - } else { - - if ($truthy(($truthy($b = item['$end_with?']($$($nesting, 'SEPARATOR'))) ? next_item['$start_with?']($$($nesting, 'SEPARATOR')) : $b))) { - item = item.$sub(new RegExp("" + ($$($nesting, 'SEPARATOR')) + "+$"), "")}; - return (result = (function() {if ($truthy(($truthy($b = item['$end_with?']($$($nesting, 'SEPARATOR'))) ? $b : next_item['$start_with?']($$($nesting, 'SEPARATOR'))))) { - return "" + (result) + (item) - } else { - return "" + (result) + (item) + ($$($nesting, 'SEPARATOR')) - }; return nil; })()); - };}, $$11.$$s = self, $$11.$$arity = 2, $$11)); - return result; - }, $join$9.$$arity = -1); - return (Opal.def(self, '$split', $split$12 = function $$split(path) { - var self = this; - - return path.$split($$($nesting, 'SEPARATOR')) - }, $split$12.$$arity = 1), nil) && 'split'; - })(Opal.get_singleton_class(self), $nesting); - })($nesting[0], $$($nesting, 'IO'), $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/process"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$const_set', '$size', '$<<', '$__register_clock__', '$to_f', '$now', '$new', '$[]', '$raise']); - - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Process'); - - var $nesting = [self].concat($parent_nesting), $Process___register_clock__$1, $Process_pid$2, $Process_times$3, $Process_clock_gettime$4, monotonic = nil; - - - self.__clocks__ = []; - Opal.defs(self, '$__register_clock__', $Process___register_clock__$1 = function $$__register_clock__(name, func) { - var self = this; - if (self.__clocks__ == null) self.__clocks__ = nil; - - - self.$const_set(name, self.__clocks__.$size()); - return self.__clocks__['$<<'](func); - }, $Process___register_clock__$1.$$arity = 2); - self.$__register_clock__("CLOCK_REALTIME", function() { return Date.now() }); - monotonic = false; - - if (Opal.global.performance) { - monotonic = function() { - return performance.now() - }; - } - else if (Opal.global.process && process.hrtime) { - // let now be the base to get smaller numbers - var hrtime_base = process.hrtime(); - - monotonic = function() { - var hrtime = process.hrtime(hrtime_base); - var us = (hrtime[1] / 1000) | 0; // cut below microsecs; - return ((hrtime[0] * 1000) + (us / 1000)); - }; - } - ; - if ($truthy(monotonic)) { - self.$__register_clock__("CLOCK_MONOTONIC", monotonic)}; - Opal.defs(self, '$pid', $Process_pid$2 = function $$pid() { - var self = this; - - return 0 - }, $Process_pid$2.$$arity = 0); - Opal.defs(self, '$times', $Process_times$3 = function $$times() { - var self = this, t = nil; - - - t = $$($nesting, 'Time').$now().$to_f(); - return $$$($$($nesting, 'Benchmark'), 'Tms').$new(t, t, t, t, t); - }, $Process_times$3.$$arity = 0); - return (Opal.defs(self, '$clock_gettime', $Process_clock_gettime$4 = function $$clock_gettime(clock_id, unit) { - var $a, self = this, clock = nil; - if (self.__clocks__ == null) self.__clocks__ = nil; - - - - if (unit == null) { - unit = "float_second"; - }; - ($truthy($a = (clock = self.__clocks__['$[]'](clock_id))) ? $a : self.$raise($$$($$($nesting, 'Errno'), 'EINVAL'), "" + "clock_gettime(" + (clock_id) + ") " + (self.__clocks__['$[]'](clock_id)))); - - var ms = clock(); - switch (unit) { - case 'float_second': return (ms / 1000); // number of seconds as a float (default) - case 'float_millisecond': return (ms / 1); // number of milliseconds as a float - case 'float_microsecond': return (ms * 1000); // number of microseconds as a float - case 'second': return ((ms / 1000) | 0); // number of seconds as an integer - case 'millisecond': return ((ms / 1) | 0); // number of milliseconds as an integer - case 'microsecond': return ((ms * 1000) | 0); // number of microseconds as an integer - case 'nanosecond': return ((ms * 1000000) | 0); // number of nanoseconds as an integer - default: self.$raise($$($nesting, 'ArgumentError'), "" + "unexpected unit: " + (unit)) - } - ; - }, $Process_clock_gettime$4.$$arity = -2), nil) && 'clock_gettime'; - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Signal'); - - var $nesting = [self].concat($parent_nesting), $Signal_trap$5; - - return (Opal.defs(self, '$trap', $Signal_trap$5 = function $$trap($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return nil; - }, $Signal_trap$5.$$arity = -1), nil) && 'trap' - })($nesting[0], null, $nesting); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'GC'); - - var $nesting = [self].concat($parent_nesting), $GC_start$6; - - return (Opal.defs(self, '$start', $GC_start$6 = function $$start() { - var self = this; - - return nil - }, $GC_start$6.$$arity = 0), nil) && 'start' - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/random"] = function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$attr_reader', '$new_seed', '$coerce_to!', '$reseed', '$rand', '$seed', '$<', '$raise', '$encode', '$join', '$new', '$chr', '$===', '$==', '$state', '$const_defined?', '$const_set']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Random'); - - var $nesting = [self].concat($parent_nesting), $Random_initialize$1, $Random_reseed$2, $Random_new_seed$3, $Random_rand$4, $Random_srand$5, $Random_urandom$6, $Random_$eq_eq$8, $Random_bytes$9, $Random_rand$11, $Random_generator$eq$12; - - - self.$attr_reader("seed", "state"); - - Opal.def(self, '$initialize', $Random_initialize$1 = function $$initialize(seed) { - var self = this; - - - - if (seed == null) { - seed = $$($nesting, 'Random').$new_seed(); - }; - seed = $$($nesting, 'Opal')['$coerce_to!'](seed, $$($nesting, 'Integer'), "to_int"); - self.state = seed; - return self.$reseed(seed); - }, $Random_initialize$1.$$arity = -1); - - Opal.def(self, '$reseed', $Random_reseed$2 = function $$reseed(seed) { - var self = this; - - - self.seed = seed; - return self.$rng = Opal.$$rand.reseed(seed);; - }, $Random_reseed$2.$$arity = 1); - Opal.defs(self, '$new_seed', $Random_new_seed$3 = function $$new_seed() { - var self = this; - - return Opal.$$rand.new_seed(); - }, $Random_new_seed$3.$$arity = 0); - Opal.defs(self, '$rand', $Random_rand$4 = function $$rand(limit) { - var self = this; - - - ; - return $$($nesting, 'DEFAULT').$rand(limit); - }, $Random_rand$4.$$arity = -1); - Opal.defs(self, '$srand', $Random_srand$5 = function $$srand(n) { - var self = this, previous_seed = nil; - - - - if (n == null) { - n = $$($nesting, 'Random').$new_seed(); - }; - n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), "to_int"); - previous_seed = $$($nesting, 'DEFAULT').$seed(); - $$($nesting, 'DEFAULT').$reseed(n); - return previous_seed; - }, $Random_srand$5.$$arity = -1); - Opal.defs(self, '$urandom', $Random_urandom$6 = function $$urandom(size) { - var $$7, self = this; - - - size = $$($nesting, 'Opal')['$coerce_to!'](size, $$($nesting, 'Integer'), "to_int"); - if ($truthy($rb_lt(size, 0))) { - self.$raise($$($nesting, 'ArgumentError'), "negative string size (or size too big)")}; - return $send($$($nesting, 'Array'), 'new', [size], ($$7 = function(){var self = $$7.$$s || this; - - return self.$rand(255).$chr()}, $$7.$$s = self, $$7.$$arity = 0, $$7)).$join().$encode("ASCII-8BIT"); - }, $Random_urandom$6.$$arity = 1); - - Opal.def(self, '$==', $Random_$eq_eq$8 = function(other) { - var $a, self = this; - - - if ($truthy($$($nesting, 'Random')['$==='](other))) { - } else { - return false - }; - return (($a = self.$seed()['$=='](other.$seed())) ? self.$state()['$=='](other.$state()) : self.$seed()['$=='](other.$seed())); - }, $Random_$eq_eq$8.$$arity = 1); - - Opal.def(self, '$bytes', $Random_bytes$9 = function $$bytes(length) { - var $$10, self = this; - - - length = $$($nesting, 'Opal')['$coerce_to!'](length, $$($nesting, 'Integer'), "to_int"); - return $send($$($nesting, 'Array'), 'new', [length], ($$10 = function(){var self = $$10.$$s || this; - - return self.$rand(255).$chr()}, $$10.$$s = self, $$10.$$arity = 0, $$10)).$join().$encode("ASCII-8BIT"); - }, $Random_bytes$9.$$arity = 1); - - Opal.def(self, '$rand', $Random_rand$11 = function $$rand(limit) { - var self = this; - - - ; - - function randomFloat() { - self.state++; - return Opal.$$rand.rand(self.$rng); - } - - function randomInt() { - return Math.floor(randomFloat() * limit); - } - - function randomRange() { - var min = limit.begin, - max = limit.end; - - if (min === nil || max === nil) { - return nil; - } - - var length = max - min; - - if (length < 0) { - return nil; - } - - if (length === 0) { - return min; - } - - if (max % 1 === 0 && min % 1 === 0 && !limit.excl) { - length++; - } - - return self.$rand(length) + min; - } - - if (limit == null) { - return randomFloat(); - } else if (limit.$$is_range) { - return randomRange(); - } else if (limit.$$is_number) { - if (limit <= 0) { - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid argument - " + (limit)) - } - - if (limit % 1 === 0) { - // integer - return randomInt(); - } else { - return randomFloat() * limit; - } - } else { - limit = $$($nesting, 'Opal')['$coerce_to!'](limit, $$($nesting, 'Integer'), "to_int"); - - if (limit <= 0) { - self.$raise($$($nesting, 'ArgumentError'), "" + "invalid argument - " + (limit)) - } - - return randomInt(); - } - ; - }, $Random_rand$11.$$arity = -1); - return (Opal.defs(self, '$generator=', $Random_generator$eq$12 = function(generator) { - var self = this; - - - Opal.$$rand = generator; - if ($truthy(self['$const_defined?']("DEFAULT"))) { - return $$($nesting, 'DEFAULT').$reseed() - } else { - return self.$const_set("DEFAULT", self.$new(self.$new_seed())) - }; - }, $Random_generator$eq$12.$$arity = 1), nil) && 'generator='; - })($nesting[0], null, $nesting) -}; - -/* -This is based on an adaptation of Makoto Matsumoto and Takuji Nishimura's code -done by Sean McCullough and Dave Heitzman -, subsequently readapted from an updated version of -ruby's random.c (rev c38a183032a7826df1adabd8aa0725c713d53e1c). - -The original copyright notice from random.c follows. - - This is based on trimmed version of MT19937. To get the original version, - contact . - - The original copyright notice follows. - - A C-program for MT19937, with initialization improved 2002/2/10. - Coded by Takuji Nishimura and Makoto Matsumoto. - This is a faster version by taking Shawn Cokus's optimization, - Matthe Bellew's simplification, Isaku Wada's real version. - - Before using, initialize the state by using init_genrand(mt, seed) - or init_by_array(mt, init_key, key_length). - - Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The names of its contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - Any feedback is very welcome. - http://www.math.keio.ac.jp/matumoto/emt.html - email: matumoto@math.keio.ac.jp -*/ -var MersenneTwister = (function() { - /* Period parameters */ - var N = 624; - var M = 397; - var MATRIX_A = 0x9908b0df; /* constant vector a */ - var UMASK = 0x80000000; /* most significant w-r bits */ - var LMASK = 0x7fffffff; /* least significant r bits */ - var MIXBITS = function(u,v) { return ( ((u) & UMASK) | ((v) & LMASK) ); }; - var TWIST = function(u,v) { return (MIXBITS((u),(v)) >>> 1) ^ ((v & 0x1) ? MATRIX_A : 0x0); }; - - function init(s) { - var mt = {left: 0, next: N, state: new Array(N)}; - init_genrand(mt, s); - return mt; - } - - /* initializes mt[N] with a seed */ - function init_genrand(mt, s) { - var j, i; - mt.state[0] = s >>> 0; - for (j=1; j> 30) >>> 0)) + j); - /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ - /* In the previous versions, MSBs of the seed affect */ - /* only MSBs of the array state[]. */ - /* 2002/01/09 modified by Makoto Matsumoto */ - mt.state[j] &= 0xffffffff; /* for >32 bit machines */ - } - mt.left = 1; - mt.next = N; - } - - /* generate N words at one time */ - function next_state(mt) { - var p = 0, _p = mt.state; - var j; - - mt.left = N; - mt.next = 0; - - for (j=N-M+1; --j; p++) - _p[p] = _p[p+(M)] ^ TWIST(_p[p+(0)], _p[p+(1)]); - - for (j=M; --j; p++) - _p[p] = _p[p+(M-N)] ^ TWIST(_p[p+(0)], _p[p+(1)]); - - _p[p] = _p[p+(M-N)] ^ TWIST(_p[p+(0)], _p[0]); - } - - /* generates a random number on [0,0xffffffff]-interval */ - function genrand_int32(mt) { - /* mt must be initialized */ - var y; - - if (--mt.left <= 0) next_state(mt); - y = mt.state[mt.next++]; - - /* Tempering */ - y ^= (y >>> 11); - y ^= (y << 7) & 0x9d2c5680; - y ^= (y << 15) & 0xefc60000; - y ^= (y >>> 18); - - return y >>> 0; - } - - function int_pair_to_real_exclusive(a, b) { - a >>>= 5; - b >>>= 6; - return(a*67108864.0+b)*(1.0/9007199254740992.0); - } - - // generates a random number on [0,1) with 53-bit resolution - function genrand_real(mt) { - /* mt must be initialized */ - var a = genrand_int32(mt), b = genrand_int32(mt); - return int_pair_to_real_exclusive(a, b); - } - - return { genrand_real: genrand_real, init: init }; -})(); -Opal.loaded(["corelib/random/MersenneTwister.js"]); -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/random/mersenne_twister"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send; - - Opal.add_stubs(['$require', '$generator=', '$-']); - - self.$require("corelib/random/MersenneTwister"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Random'); - - var $nesting = [self].concat($parent_nesting), $writer = nil; - - - var MAX_INT = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1; - Opal.const_set($nesting[0], 'MERSENNE_TWISTER_GENERATOR', { - new_seed: function() { return Math.round(Math.random() * MAX_INT); }, - reseed: function(seed) { return MersenneTwister.init(seed); }, - rand: function(mt) { return MersenneTwister.genrand_real(mt); } - }); - - $writer = [$$($nesting, 'MERSENNE_TWISTER_GENERATOR')]; - $send(self, 'generator=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["corelib/unsupported"] = function(Opal) { - var $public$35, $private$36, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $module = Opal.module; - - Opal.add_stubs(['$raise', '$warn', '$%']); - - - var warnings = {}; - - function handle_unsupported_feature(message) { - switch (Opal.config.unsupported_features_severity) { - case 'error': - $$($nesting, 'Kernel').$raise($$($nesting, 'NotImplementedError'), message) - break; - case 'warning': - warn(message) - break; - default: // ignore - // noop - } - } - - function warn(string) { - if (warnings[string]) { - return; - } - - warnings[string] = true; - self.$warn(string); - } -; - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'String'); - - var $nesting = [self].concat($parent_nesting), $String_$lt$lt$1, $String_capitalize$excl$2, $String_chomp$excl$3, $String_chop$excl$4, $String_downcase$excl$5, $String_gsub$excl$6, $String_lstrip$excl$7, $String_next$excl$8, $String_reverse$excl$9, $String_slice$excl$10, $String_squeeze$excl$11, $String_strip$excl$12, $String_sub$excl$13, $String_succ$excl$14, $String_swapcase$excl$15, $String_tr$excl$16, $String_tr_s$excl$17, $String_upcase$excl$18, $String_prepend$19, $String_$$$eq$20, $String_clear$21, $String_encode$excl$22, $String_unicode_normalize$excl$23; - - - var ERROR = "String#%s not supported. Mutable String methods are not supported in Opal."; - - Opal.def(self, '$<<', $String_$lt$lt$1 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("<<")); - }, $String_$lt$lt$1.$$arity = -1); - - Opal.def(self, '$capitalize!', $String_capitalize$excl$2 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("capitalize!")); - }, $String_capitalize$excl$2.$$arity = -1); - - Opal.def(self, '$chomp!', $String_chomp$excl$3 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("chomp!")); - }, $String_chomp$excl$3.$$arity = -1); - - Opal.def(self, '$chop!', $String_chop$excl$4 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("chop!")); - }, $String_chop$excl$4.$$arity = -1); - - Opal.def(self, '$downcase!', $String_downcase$excl$5 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("downcase!")); - }, $String_downcase$excl$5.$$arity = -1); - - Opal.def(self, '$gsub!', $String_gsub$excl$6 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("gsub!")); - }, $String_gsub$excl$6.$$arity = -1); - - Opal.def(self, '$lstrip!', $String_lstrip$excl$7 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("lstrip!")); - }, $String_lstrip$excl$7.$$arity = -1); - - Opal.def(self, '$next!', $String_next$excl$8 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("next!")); - }, $String_next$excl$8.$$arity = -1); - - Opal.def(self, '$reverse!', $String_reverse$excl$9 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("reverse!")); - }, $String_reverse$excl$9.$$arity = -1); - - Opal.def(self, '$slice!', $String_slice$excl$10 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("slice!")); - }, $String_slice$excl$10.$$arity = -1); - - Opal.def(self, '$squeeze!', $String_squeeze$excl$11 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("squeeze!")); - }, $String_squeeze$excl$11.$$arity = -1); - - Opal.def(self, '$strip!', $String_strip$excl$12 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("strip!")); - }, $String_strip$excl$12.$$arity = -1); - - Opal.def(self, '$sub!', $String_sub$excl$13 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("sub!")); - }, $String_sub$excl$13.$$arity = -1); - - Opal.def(self, '$succ!', $String_succ$excl$14 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("succ!")); - }, $String_succ$excl$14.$$arity = -1); - - Opal.def(self, '$swapcase!', $String_swapcase$excl$15 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("swapcase!")); - }, $String_swapcase$excl$15.$$arity = -1); - - Opal.def(self, '$tr!', $String_tr$excl$16 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("tr!")); - }, $String_tr$excl$16.$$arity = -1); - - Opal.def(self, '$tr_s!', $String_tr_s$excl$17 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("tr_s!")); - }, $String_tr_s$excl$17.$$arity = -1); - - Opal.def(self, '$upcase!', $String_upcase$excl$18 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("upcase!")); - }, $String_upcase$excl$18.$$arity = -1); - - Opal.def(self, '$prepend', $String_prepend$19 = function $$prepend($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("prepend")); - }, $String_prepend$19.$$arity = -1); - - Opal.def(self, '$[]=', $String_$$$eq$20 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("[]=")); - }, $String_$$$eq$20.$$arity = -1); - - Opal.def(self, '$clear', $String_clear$21 = function $$clear($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("clear")); - }, $String_clear$21.$$arity = -1); - - Opal.def(self, '$encode!', $String_encode$excl$22 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("encode!")); - }, $String_encode$excl$22.$$arity = -1); - return (Opal.def(self, '$unicode_normalize!', $String_unicode_normalize$excl$23 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%']("unicode_normalize!")); - }, $String_unicode_normalize$excl$23.$$arity = -1), nil) && 'unicode_normalize!'; - })($nesting[0], null, $nesting); - (function($base, $parent_nesting) { - var self = $module($base, 'Kernel'); - - var $nesting = [self].concat($parent_nesting), $Kernel_freeze$24, $Kernel_frozen$ques$25; - - - var ERROR = "Object freezing is not supported by Opal"; - - Opal.def(self, '$freeze', $Kernel_freeze$24 = function $$freeze() { - var self = this; - - - handle_unsupported_feature(ERROR); - return self; - }, $Kernel_freeze$24.$$arity = 0); - - Opal.def(self, '$frozen?', $Kernel_frozen$ques$25 = function() { - var self = this; - - - handle_unsupported_feature(ERROR); - return false; - }, $Kernel_frozen$ques$25.$$arity = 0); - })($nesting[0], $nesting); - (function($base, $parent_nesting) { - var self = $module($base, 'Kernel'); - - var $nesting = [self].concat($parent_nesting), $Kernel_taint$26, $Kernel_untaint$27, $Kernel_tainted$ques$28; - - - var ERROR = "Object tainting is not supported by Opal"; - - Opal.def(self, '$taint', $Kernel_taint$26 = function $$taint() { - var self = this; - - - handle_unsupported_feature(ERROR); - return self; - }, $Kernel_taint$26.$$arity = 0); - - Opal.def(self, '$untaint', $Kernel_untaint$27 = function $$untaint() { - var self = this; - - - handle_unsupported_feature(ERROR); - return self; - }, $Kernel_untaint$27.$$arity = 0); - - Opal.def(self, '$tainted?', $Kernel_tainted$ques$28 = function() { - var self = this; - - - handle_unsupported_feature(ERROR); - return false; - }, $Kernel_tainted$ques$28.$$arity = 0); - })($nesting[0], $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Module'); - - var $nesting = [self].concat($parent_nesting), $Module_public$29, $Module_private_class_method$30, $Module_private_method_defined$ques$31, $Module_private_constant$32; - - - - Opal.def(self, '$public', $Module_public$29 = function($a) { - var $post_args, methods, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - methods = $post_args;; - - if (methods.length === 0) { - self.$$module_function = false; - } - - return nil; - ; - }, $Module_public$29.$$arity = -1); - Opal.alias(self, "private", "public"); - Opal.alias(self, "protected", "public"); - Opal.alias(self, "nesting", "public"); - - Opal.def(self, '$private_class_method', $Module_private_class_method$30 = function $$private_class_method($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self; - }, $Module_private_class_method$30.$$arity = -1); - Opal.alias(self, "public_class_method", "private_class_method"); - - Opal.def(self, '$private_method_defined?', $Module_private_method_defined$ques$31 = function(obj) { - var self = this; - - return false - }, $Module_private_method_defined$ques$31.$$arity = 1); - - Opal.def(self, '$private_constant', $Module_private_constant$32 = function $$private_constant($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return nil; - }, $Module_private_constant$32.$$arity = -1); - Opal.alias(self, "protected_method_defined?", "private_method_defined?"); - Opal.alias(self, "public_instance_methods", "instance_methods"); - Opal.alias(self, "public_instance_method", "instance_method"); - return Opal.alias(self, "public_method_defined?", "method_defined?"); - })($nesting[0], null, $nesting); - (function($base, $parent_nesting) { - var self = $module($base, 'Kernel'); - - var $nesting = [self].concat($parent_nesting), $Kernel_private_methods$33; - - - - Opal.def(self, '$private_methods', $Kernel_private_methods$33 = function $$private_methods($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return []; - }, $Kernel_private_methods$33.$$arity = -1); - Opal.alias(self, "private_instance_methods", "private_methods"); - })($nesting[0], $nesting); - (function($base, $parent_nesting) { - var self = $module($base, 'Kernel'); - - var $nesting = [self].concat($parent_nesting), $Kernel_eval$34; - - - Opal.def(self, '$eval', $Kernel_eval$34 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return self.$raise($$($nesting, 'NotImplementedError'), "" + "To use Kernel#eval, you must first require 'opal-parser'. " + ("" + "See https://github.com/opal/opal/blob/" + ($$($nesting, 'RUBY_ENGINE_VERSION')) + "/docs/opal_parser.md for details.")); - }, $Kernel_eval$34.$$arity = -1) - })($nesting[0], $nesting); - Opal.defs(self, '$public', $public$35 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return nil; - }, $public$35.$$arity = -1); - return (Opal.defs(self, '$private', $private$36 = function($a) { - var $post_args, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - ; - return nil; - }, $private$36.$$arity = -1), nil) && 'private'; -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice; - - Opal.add_stubs(['$require']); - - self.$require("opal/base"); - self.$require("opal/mini"); - self.$require("corelib/kernel/format"); - self.$require("corelib/string/encoding"); - self.$require("corelib/math"); - self.$require("corelib/complex"); - self.$require("corelib/rational"); - self.$require("corelib/time"); - self.$require("corelib/struct"); - self.$require("corelib/io"); - self.$require("corelib/main"); - self.$require("corelib/dir"); - self.$require("corelib/file"); - self.$require("corelib/process"); - self.$require("corelib/random"); - self.$require("corelib/random/mersenne_twister.js"); - return self.$require("corelib/unsupported"); -})(Opal); - -/* Generated by Opal 1.0.3 */ -Opal.modules["log"] = function(Opal) { - var $debugPrint$1, $debugPuts$2, $debug$3, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $truthy = Opal.truthy, $gvars = Opal.gvars, $send = Opal.send; - - Opal.add_stubs(['$print', '$tosjis', '$puts', '$is_a?', '$inspect', '$empty?', '$debugPuts', '$map', '$join']); - - - Opal.def(self, '$debugPrint', $debugPrint$1 = function $$debugPrint(text) { - var self = this; - if ($gvars.RUBY18_WIN == null) $gvars.RUBY18_WIN = nil; - - return self.$print((function() {if ($truthy($gvars.RUBY18_WIN)) { - return text.$tosjis() - } else { - return text - }; return nil; })()) - }, $debugPrint$1.$$arity = 1); - - Opal.def(self, '$debugPuts', $debugPuts$2 = function $$debugPuts(text) { - var self = this, line = nil; - if ($gvars.RUBY18_WIN == null) $gvars.RUBY18_WIN = nil; - - - line = "" + (text) + "\n"; - return self.$puts((function() {if ($truthy($gvars.RUBY18_WIN)) { - return line.$tosjis() - } else { - return line - }; return nil; })()); - }, $debugPuts$2.$$arity = 1); - return (Opal.def(self, '$debug', $debug$3 = function $$debug(target, $a) { - var $post_args, values, $$4, self = this, targetStr = nil, valueStrs = nil; - if ($gvars.isDebug == null) $gvars.isDebug = nil; - - - - $post_args = Opal.slice.call(arguments, 1, arguments.length); - - values = $post_args;; - if ($truthy($gvars.isDebug)) { - } else { - return nil - }; - targetStr = (function() {if ($truthy(target['$is_a?']($$($nesting, 'String')))) { - return target - } else { - return target.$inspect() - }; return nil; })(); - if ($truthy(values['$empty?']())) { - return self.$debugPuts(targetStr) - } else { - - valueStrs = $send(values, 'map', [], ($$4 = function(value){var self = $$4.$$s || this; - - - - if (value == null) { - value = nil; - }; - if ($truthy(value['$is_a?']($$($nesting, 'String')))) { - return "" + "\"" + (value) + "\"" - } else { - return value.$inspect() - };}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - return self.$debugPuts("" + (targetStr) + ": " + (valueStrs.$join(", "))); - }; - }, $debug$3.$$arity = -2), nil) && 'debug'; -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["configBcDice"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $gvars = Opal.gvars; - - - $gvars.isDebug = false; - $gvars.bcDiceVersion = "2.08.00"; - $gvars.DICE_MAXCNT = 200; - $gvars.DICE_MAXNUM = 1000; - $gvars.isHandSort = true; - $gvars.OPEN_DICE = "Open Dice!"; - $gvars.OPEN_PLOT = "Open Plot!"; - $gvars.ADD_PLOT = "PLOT"; - return ($gvars.READY_CMD = "#HERE"); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["CountHolder"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $gvars = Opal.gvars, $hash2 = Opal.hash2, $send = Opal.send; - - Opal.add_stubs(['$require', '$debug', '$getNick', '$==', '$===', '$get_point_list', '$delete_point_list', '$nil?', '$rename_point_counter', '$!=', '$=~', '$executeSetCommand', '$last_match', '$to_i', '$setCountHolderByParams', '$setCount', '$changeCount', '$[]', '$[]=', '$-', '$getCharacterInfoList', '$+', '$to_s', '$downcase', '$parren_killer', '$getCharacterInfo', '$getValueText', '$getPointListAtSameNick', '$empty?', '$getPointListAtSameChannel', '$each', '$sort_point_hash', '$split', '$upcase', '$sort', '$keys', '$delete', '$setPointCounter', '$include?', '$<<', '$sort_by', '$getPointHashCurrentAndMax', '$<=>', '$b_crr', '$a_crr']); - - self.$require("log"); - self.$require("configBcDice.rb"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'CountHolder'); - - var $nesting = [self].concat($parent_nesting), $CountHolder_initialize$1, $CountHolder_executeCommand$2, $CountHolder_executeSetCommand$3, $CountHolder_setCountHolderByParams$4, $CountHolder_setCount$5, $CountHolder_changeCount$6, $CountHolder_getValueText$7, $CountHolder_getCharacterInfoList$8, $CountHolder_getCharacterInfo$9, $CountHolder_get_point_list$10, $CountHolder_getPointListAtSameNick$11, $CountHolder_getPointListAtSameChannel$16, $CountHolder_rename_point_counter$19, $CountHolder_setPointCounters$20, $CountHolder_setPointCounter$21, $CountHolder_sort_point_hash$22, $CountHolder_getPointHashCurrentAndMax$24; - - self.$$prototype.bcdice = self.$$prototype.command = self.$$prototype.nick = self.$$prototype.channel = self.$$prototype.pointerMode = self.$$prototype.maxValue = self.$$prototype.characterName = self.$$prototype.tagName = self.$$prototype.currentValue = self.$$prototype.modifyText = self.$$prototype.countInfos = nil; - - - Opal.def(self, '$initialize', $CountHolder_initialize$1 = function $$initialize(bcdice, countInfos) { - var self = this; - - - self.bcdice = bcdice; - return (self.countInfos = countInfos); - }, $CountHolder_initialize$1.$$arity = 2); - - Opal.def(self, '$executeCommand', $CountHolder_executeCommand$2 = function $$executeCommand(command, nick, channel, pointerMode) { - var self = this, output = nil, isSecret = nil, $case = nil; - - - self.$debug("point_counter_command begin(command, nick, channel, pointerMode)", command, nick, channel, pointerMode); - self.command = command; - self.nick = self.bcdice.$getNick(nick); - self.channel = channel; - self.pointerMode = pointerMode; - output = "1"; - isSecret = pointerMode['$==']("sameNick"); - $case = self.command; - if (/^#OPEN!/i['$===']($case)) {output = self.$get_point_list()} - else if (/^#(.*)DIED!/i['$===']($case)) { - output = self.$delete_point_list(); - if ($truthy(output['$nil?']())) { - } else { - - output = "" + (nick) + ": " + (output) + " のカウンタが削除されました"; - isSecret = true; - };} - else if (/^#RENAME!/i['$===']($case)) { - output = self.$rename_point_counter(); - if ($truthy(output['$!=']("1"))) { - - output = "" + (nick) + ": " + (output); - isSecret = false;};} - else {if ($truthy(/^#/['$=~'](self.command))) { - - output = self.$executeSetCommand(); - if ($truthy(output['$!=']("1"))) { - output = "" + (nick) + ": " + (output)};}}; - self.$debug("point_counter_command END output, isSecret", output, isSecret); - return [output, isSecret]; - }, $CountHolder_executeCommand$2.$$arity = 4); - - Opal.def(self, '$executeSetCommand', $CountHolder_executeSetCommand$3 = function $$executeSetCommand() { - var self = this, $case = nil; - if ($gvars.point_counter == null) $gvars.point_counter = nil; - - - self.$debug("setCountHolder nick, channel, pointerMode", self.nick, self.channel, self.pointerMode); - self.characterName = self.nick; - self.tagName = nil; - self.currentValue = nil; - self.maxValue = nil; - self.modifyText = nil; - self.$debug("$point_counter", $gvars.point_counter); - self.$debug("@command", self.command); - $case = self.command; - if (/^#([^:\uFF1A]+)(:|\uFF1A)(\w+?)\s*(\d+)(\/(\d+))?/['$===']($case)) { - self.$debug(" #(識別名):(タグ)(現在値)/(最大値) で指定します。最大値がないものは省略できます。"); - self.characterName = $$($nesting, 'Regexp').$last_match(1); - self.tagName = $$($nesting, 'Regexp').$last_match(3); - self.currentValue = $$($nesting, 'Regexp').$last_match(4).$to_i(); - self.maxValue = $$($nesting, 'Regexp').$last_match(6);} - else if (/^#([^::]+)(:|:)(\w+?)\s*([\+\-]\d+)/['$===']($case)) { - self.$debug(" #(識別名):(タグ)(変更量)"); - self.characterName = $$($nesting, 'Regexp').$last_match(1); - self.tagName = $$($nesting, 'Regexp').$last_match(3); - self.modifyText = $$($nesting, 'Regexp').$last_match(4);} - else if (/^#(\w+?)\s*(\d+)\/(\d+)/['$===']($case)) { - self.$debug(" #(タグ)(現在値)/(最大値) 現在値/最大値指定は半角のみ。"); - self.tagName = $$($nesting, 'Regexp').$last_match(1); - self.currentValue = $$($nesting, 'Regexp').$last_match(2).$to_i(); - self.maxValue = $$($nesting, 'Regexp').$last_match(3);} - else if (/^#(\w+?)\s*([\+\-]\d+)/['$===']($case)) { - self.$debug(" #(タグ)(変更量)"); - self.tagName = $$($nesting, 'Regexp').$last_match(1); - self.modifyText = $$($nesting, 'Regexp').$last_match(2);} - else if (/^#(\w+?)\s*(\d+)/['$===']($case)) { - self.$debug(" #(タグ)(現在値) で指定します。現在値は半角です。"); - self.tagName = $$($nesting, 'Regexp').$last_match(1); - self.currentValue = $$($nesting, 'Regexp').$last_match(2).$to_i();} - else { - self.$debug("not match command", self.command); - return "";}; - if ($truthy(self.maxValue['$nil?']())) { - } else { - self.maxValue = self.maxValue.$to_i() - }; - self.$debug("characterName", self.characterName); - self.$debug("tagName", self.tagName); - self.$debug("@currentValue", self.currentValue); - self.$debug("@maxValue", self.maxValue); - self.$debug("@modifyText", self.modifyText); - return self.$setCountHolderByParams(); - }, $CountHolder_executeSetCommand$3.$$arity = 0); - - Opal.def(self, '$setCountHolderByParams', $CountHolder_setCountHolderByParams$4 = function $$setCountHolderByParams() { - var self = this; - - - self.$debug("@modifyText", self.modifyText); - if ($truthy(self.modifyText['$nil?']())) { - return self.$setCount() - } else { - return self.$changeCount() - }; - }, $CountHolder_setCountHolderByParams$4.$$arity = 0); - - Opal.def(self, '$setCount', $CountHolder_setCount$5 = function $$setCount() { - var $a, self = this, $writer = nil, characterInfoList = nil, characterInfo = nil, output = nil; - - - ($truthy($a = self.countInfos['$[]'](self.channel)) ? $a : (($writer = [self.channel, $hash2([], {})]), $send(self.countInfos, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - characterInfoList = self.$getCharacterInfoList(); - ($truthy($a = characterInfoList['$[]'](self.characterName)) ? $a : (($writer = [self.characterName, $hash2([], {})]), $send(characterInfoList, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - characterInfo = characterInfoList['$[]'](self.characterName); - - $writer = [self.tagName, $hash2(["currentValue", "maxValue"], {"currentValue": self.currentValue, "maxValue": self.maxValue})]; - $send(characterInfo, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - self.$debug("setCount @nick, @characterName", self.nick, self.characterName); - output = ""; - if ($truthy(self.nick['$!='](self.characterName))) { - output = $rb_plus(output, self.characterName.$downcase().$to_s())}; - output = $rb_plus(output, "" + "(" + (self.tagName) + ") " + (self.currentValue)); - self.$debug("setCount @maxValue", self.maxValue); - if ($truthy(self.maxValue['$nil?']())) { - } else { - output = $rb_plus(output, "" + "/" + (self.maxValue)) - }; - return output; - }, $CountHolder_setCount$5.$$arity = 0); - - Opal.def(self, '$changeCount', $CountHolder_changeCount$6 = function $$changeCount() { - var self = this, modifyValue = nil, characterInfo = nil, info = nil, currentValue = nil, maxValue = nil, preText = nil, $writer = nil, nowText = nil, output = nil; - - - self.$debug("changeCount begin"); - modifyValue = self.bcdice.$parren_killer("" + "(0" + (self.modifyText) + ")").$to_i(); - characterInfo = self.$getCharacterInfo(self.channel, self.characterName); - info = characterInfo['$[]'](self.tagName); - self.$debug("characterInfo", characterInfo); - self.$debug("info", info); - if ($truthy(info['$nil?']())) { - return ""}; - currentValue = info['$[]']("currentValue"); - maxValue = info['$[]']("maxValue"); - preText = self.$getValueText(currentValue, maxValue); - self.$debug("currentValue", currentValue); - self.$debug("modifyValue", modifyValue); - currentValue = $rb_plus(currentValue, modifyValue); - - $writer = ["currentValue", currentValue]; - $send(info, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - nowText = self.$getValueText(currentValue, maxValue); - output = ""; - if ($truthy(self.nick['$!='](self.characterName))) { - output = $rb_plus(output, self.characterName.$downcase().$to_s())}; - output = $rb_plus(output, "" + "(" + (self.tagName) + ") " + (preText) + " -> " + (nowText)); - self.$debug("changeCount end output", output); - return output; - }, $CountHolder_changeCount$6.$$arity = 0); - - Opal.def(self, '$getValueText', $CountHolder_getValueText$7 = function $$getValueText(currentValue, maxValue) { - var self = this, text = nil; - - - text = currentValue.$to_s(); - if ($truthy(maxValue['$nil?']())) { - } else { - text = $rb_plus(text, "" + "/" + (maxValue)) - }; - return text; - }, $CountHolder_getValueText$7.$$arity = 2); - - Opal.def(self, '$getCharacterInfoList', $CountHolder_getCharacterInfoList$8 = function $$getCharacterInfoList(channel) { - var $a, self = this, $writer = nil, characterInfoList = nil; - - - - if (channel == null) { - channel = nil; - }; - channel = ($truthy($a = channel) ? $a : self.channel); - ($truthy($a = self.countInfos['$[]'](channel)) ? $a : (($writer = [channel, $hash2([], {})]), $send(self.countInfos, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - characterInfoList = self.countInfos['$[]'](channel); - return characterInfoList; - }, $CountHolder_getCharacterInfoList$8.$$arity = -1); - - Opal.def(self, '$getCharacterInfo', $CountHolder_getCharacterInfo$9 = function $$getCharacterInfo(channel, characterName) { - var $a, self = this, characterInfoList = nil, $writer = nil, characterInfo = nil; - - - characterName = ($truthy($a = characterName) ? $a : self.characterName); - characterInfoList = self.$getCharacterInfoList(channel); - ($truthy($a = characterInfoList['$[]'](characterName)) ? $a : (($writer = [characterName, $hash2([], {})]), $send(characterInfoList, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - characterInfo = characterInfoList['$[]'](characterName); - return characterInfo; - }, $CountHolder_getCharacterInfo$9.$$arity = 2); - - Opal.def(self, '$get_point_list', $CountHolder_get_point_list$10 = function $$get_point_list() { - var self = this, output = nil, tag = nil, $case = nil, pc_out = nil; - - - self.$debug("get_point_list(command, nick, channel, pointerMode)", self.command, self.nick, self.channel, self.pointerMode); - output = "1"; - if ($truthy(/^#OPEN![\s]*(\w*)(\s|$)/['$=~'](self.command))) { - } else { - return output - }; - tag = $$($nesting, 'Regexp').$last_match(1); - $case = self.pointerMode; - if ("sameNick"['$===']($case)) { - self.$debug("same nick"); - pc_out = self.$getPointListAtSameNick(tag); - if ($truthy(pc_out['$empty?']())) { - } else { - output = pc_out - };} - else if ("sameChannel"['$===']($case)) {if ($truthy(tag)) { - - self.$debug("same Channel"); - pc_out = self.$getPointListAtSameChannel(tag); - if ($truthy(pc_out['$empty?']())) { - } else { - output = pc_out - };}}; - return output; - }, $CountHolder_get_point_list$10.$$arity = 0); - - Opal.def(self, '$getPointListAtSameNick', $CountHolder_getPointListAtSameNick$11 = function $$getPointListAtSameNick(command, nick, channel, pointerMode, tag) { - var $$12, $$14, $$15, self = this, pc_list = nil, pc_out = nil, sort_pc = nil, out_pc = nil, pc_sorted = nil, tag_arr = nil, tag_out = nil; - if ($gvars.point_counter == null) $gvars.point_counter = nil; - - - self.$debug("getPointListAtSameNick(command, nick, channel, pointerMode, tag)", command, nick, channel, pointerMode, tag); - self.$debug("同一Nick, 自キャラの一覧表示(パラメータ指定不要)"); - pc_list = $gvars.point_counter['$[]'](nick); - pc_out = ""; - if ($truthy(pc_list)) { - - sort_pc = $hash2([], {}); - $send(pc_list, 'each', [], ($$12 = function(pc_o){var self = $$12.$$s || this, $$13, tag_out = nil, check_name = nil, $writer = nil, tag_arr = nil; - if ($gvars.point_counter == null) $gvars.point_counter = nil; - - - - if (pc_o == null) { - pc_o = nil; - }; - if ($truthy($gvars.point_counter['$[]']("" + (nick) + "," + (pc_o)))) { - } else { - return nil; - }; - tag_out = ""; - if ($truthy(tag)) { - - check_name = "" + (nick) + "," + (pc_o); - if ($truthy($gvars.point_counter['$[]']("" + (check_name) + "," + (tag) + ",0"))) { - - $writer = [check_name, $gvars.point_counter['$[]']("" + (check_name) + "," + (tag) + ",0")]; - $send(sort_pc, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];}; - if ($truthy($gvars.point_counter['$[]']("" + (check_name) + "," + (tag) + ",1"))) { - - $writer = [check_name, $gvars.point_counter['$[]']("" + (check_name) + "," + (tag) + ",1")]; - $send(sort_pc, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];}; - } else { - - tag_arr = $gvars.point_counter['$[]']("" + (nick) + "," + (pc_o)); - $send(tag_arr, 'each', [], ($$13 = function(tag_o){var self = $$13.$$s || this; - if ($gvars.point_counter == null) $gvars.point_counter = nil; - - - - if (tag_o == null) { - tag_o = nil; - }; - check_name = "" + (nick) + "," + (pc_o) + "," + (tag_o); - if ($truthy($gvars.point_counter['$[]']("" + (check_name) + ",0"))) { - tag_out = $rb_plus(tag_out, $rb_plus($rb_plus("$tag_o(", $gvars.point_counter['$[]']("" + (check_name) + ",0")), ") "))}; - if ($truthy($gvars.point_counter['$[]']("" + (check_name) + ",1"))) { - return (tag_out = $rb_plus(tag_out, $rb_plus($rb_plus("" + (tag_o) + "[", $gvars.point_counter['$[]']("" + (check_name) + ",1")), "] "))) - } else { - return nil - };}, $$13.$$s = self, $$13.$$arity = 1, $$13)); - }; - if ($truthy(tag_out)) { - } else { - return nil; - }; - self.$debug("中身があるなら"); - if ($truthy(pc_out)) { - pc_out = $rb_plus(pc_out, ", ")}; - return (pc_out = $rb_plus(pc_out, "" + (pc_o.$downcase()) + ":" + (tag_out)));}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - if ($truthy(tag)) { - - out_pc = ""; - pc_sorted = self.$sort_point_hash(sort_pc); - $send(pc_sorted, 'each', [], ($$14 = function(pc_o){var self = $$14.$$s || this, pc_name = nil; - if ($gvars.pc_name == null) $gvars.pc_name = nil; - if ($gvars.point_counter == null) $gvars.point_counter = nil; - - - - if (pc_o == null) { - pc_o = nil; - }; - pc_name = pc_o.$split(/,/); - if ($truthy(out_pc)) { - out_pc = $rb_plus(out_pc, ", ")}; - if ($truthy($gvars.pc_name['$[]'](1))) { - - if ($truthy($gvars.point_counter['$[]']("" + (pc_o) + "," + (tag) + ",0"))) { - out_pc = $rb_plus(out_pc, $rb_plus($rb_plus("" + (pc_name['$[]'](1).$upcase()) + "(", $gvars.point_counter['$[]']("" + (pc_o) + "," + (tag) + ",0")), ")"))}; - if ($truthy($gvars.point_counter['$[]']("" + (pc_o) + "," + (tag) + ",1"))) { - return (out_pc = $rb_plus(out_pc, $rb_plus($rb_plus("" + (pc_name['$[]'](1).$upcase()) + "[", $gvars.point_counter['$[]']("" + (pc_o) + "," + (tag) + ",1")), "]"))) - } else { - return nil - }; - } else { - - if ($truthy($gvars.point_counter['$[]']("" + (pc_o) + "," + (tag) + ",0"))) { - out_pc = $rb_plus(out_pc, $rb_plus($rb_plus("" + (pc_name['$[]'](0).$upcase()) + "(", $gvars.point_counter['$[]']("" + (pc_o) + "," + (tag) + ",0")), ")"))}; - if ($truthy($gvars.point_counter['$[]']("" + (pc_o) + "," + (tag) + ",1"))) { - return (out_pc = $rb_plus(out_pc, $rb_plus($rb_plus("" + (pc_name['$[]'](0).$upcase()) + "[", $gvars.point_counter['$[]']("" + (pc_o) + "," + (tag) + ",1")), "]"))) - } else { - return nil - }; - };}, $$14.$$s = self, $$14.$$arity = 1, $$14)); - if ($truthy(out_pc)) { - pc_out = "" + (tag) + ": " + (out_pc)};}; - } else if ($truthy($gvars.point_counter['$[]']("$nick,"))) { - - tag_arr = $gvars.point_counter['$[]']("$nick,"); - tag_out = ""; - $send(tag_arr, 'each', [], ($$15 = function(tag_o){var self = $$15.$$s || this, check_name = nil; - if ($gvars.point_counter == null) $gvars.point_counter = nil; - - - - if (tag_o == null) { - tag_o = nil; - }; - check_name = "" + (nick) + ",," + (tag_o); - if ($truthy($gvars.point_counter['$[]']("" + (check_name) + ",0"))) { - tag_out = $rb_plus(tag_out, $rb_plus($rb_plus("" + (tag_o) + "(", $gvars.point_counter['$[]']("" + (check_name) + ",0")), ") "))}; - if ($truthy($gvars.point_counter['$[]']("" + (check_name) + ",1"))) { - return (tag_out = $rb_plus(tag_out, $rb_plus($rb_plus("" + (tag_o) + "[", $gvars.point_counter['$[]']("" + (check_name) + ",1")), "] "))) - } else { - return nil - };}, $$15.$$s = self, $$15.$$arity = 1, $$15)); - if ($truthy(tag_out)) { - - self.$debug("中身があるなら"); - if ($truthy(pc_out)) { - pc_out = $rb_plus(pc_out, ", ")}; - pc_out = $rb_plus(pc_out, tag_out.$to_s());};}; - return pc_out; - }, $CountHolder_getPointListAtSameNick$11.$$arity = 5); - - Opal.def(self, '$getPointListAtSameChannel', $CountHolder_getPointListAtSameChannel$16 = function $$getPointListAtSameChannel(tagName) { - var $$17, self = this, output = nil, characterInfoList = nil; - - - self.$debug("getPointListAtSameChannel(command, nick, channel, pointerMode, tagName)", self.command, self.nick, self.channel, self.pointerMode, tagName); - self.$debug("同一チャンネル特定タグ(ポイント)の表示"); - output = ""; - if ($truthy(tagName['$empty?']())) { - } else { - output = $rb_plus(output, "" + (tagName) + ":") - }; - self.$debug("getPointListAtSameChannel @countInfos", self.countInfos); - characterInfoList = self.$getCharacterInfoList(); - $send(characterInfoList.$keys().$sort(), 'each', [], ($$17 = function(characterName){var self = $$17.$$s || this, $$18, characterInfo = nil, tagText = nil; - - - - if (characterName == null) { - characterName = nil; - }; - characterInfo = characterInfoList['$[]'](characterName); - tagText = ""; - $send(characterInfo.$keys().$sort(), 'each', [], ($$18 = function(currentTag){var self = $$18.$$s || this, info = nil, currentValue = nil, maxValue = nil; - - - - if (currentTag == null) { - currentTag = nil; - }; - if ($truthy(tagName['$empty?']())) { - } else if (tagName['$=='](currentTag)) { - } else { - return nil; - }; - info = characterInfo['$[]'](currentTag); - currentValue = info['$[]']("currentValue"); - maxValue = info['$[]']("maxValue"); - tagText = $rb_plus(tagText, currentValue.$to_s()); - if ($truthy(maxValue['$nil?']())) { - return nil - } else { - return (tagText = $rb_plus(tagText, "" + "/" + (maxValue))) - };}, $$18.$$s = self, $$18.$$arity = 1, $$18)); - if ($truthy(tagText['$empty?']())) { - return nil - } else { - - if ($truthy(output['$empty?']())) { - } else { - output = $rb_plus(output, " ") - }; - return (output = $rb_plus(output, "" + (characterName) + "(" + (tagText) + ")")); - };}, $$17.$$s = self, $$17.$$arity = 1, $$17)); - return output; - }, $CountHolder_getPointListAtSameChannel$16.$$arity = 1); - - Opal.def(self, '$rename_point_counter', $CountHolder_rename_point_counter$19 = function $$rename_point_counter() { - var self = this, output = nil, oldName = nil, newName = nil, characterInfoList = nil, counterInfo = nil, $writer = nil; - - - self.$debug("rename_point_counter @command, @nick", self.command, self.nick); - output = "1"; - if ($truthy(/^#RENAME!\s*(.+?)\s*\-\>\s*(.+?)(\s|$)/['$=~'](self.command))) { - } else { - return output - }; - oldName = $$($nesting, 'Regexp').$last_match(1); - newName = $$($nesting, 'Regexp').$last_match(2); - self.$debug("oldName, newName", oldName, newName); - characterInfoList = self.$getCharacterInfoList(self.channel); - counterInfo = characterInfoList.$delete(oldName); - if ($truthy(counterInfo['$nil?']())) { - return output}; - - $writer = [newName, counterInfo]; - $send(characterInfoList, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - output = "" + (oldName) + "->" + (newName); - return output; - }, $CountHolder_rename_point_counter$19.$$arity = 0); - - Opal.def(self, '$setPointCounters', $CountHolder_setPointCounters$20 = function $$setPointCounters(nick, pc, target) { - var self = this, key = nil; - - - key = "" + (nick) + "," + (pc); - self.$setPointCounter(key, pc); - key = "" + (nick) + "," + (pc) + "," + (target); - return self.$setPointCounter(key, target); - }, $CountHolder_setPointCounters$20.$$arity = 3); - - Opal.def(self, '$setPointCounter', $CountHolder_setPointCounter$21 = function $$setPointCounter(key, data) { - var self = this, $writer = nil, cnt_list = nil; - if ($gvars.point_counter == null) $gvars.point_counter = nil; - - - self.$debug("setPointCounter begin key, data", key, data); - if ($truthy($gvars.point_counter['$include?'](key))) { - } else { - - self.$debug("$point_counterにkeyが存在しないので新規作成"); - - $writer = [key, data]; - $send($gvars.point_counter, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return nil; - }; - self.$debug("$point_counterにkeyが存在する場合"); - cnt_list = $gvars.point_counter['$[]'](key); - if ($truthy(cnt_list['$include?'](data))) { - return nil - } else { - return cnt_list['$<<'](data) - }; - }, $CountHolder_setPointCounter$21.$$arity = 2); - - Opal.def(self, '$sort_point_hash', $CountHolder_sort_point_hash$22 = function $$sort_point_hash(base_hash) { - var $$23, self = this, keys = nil, pc_sorted = nil; - - - keys = base_hash.$keys(); - pc_sorted = $send(keys, 'sort_by', [], ($$23 = function(a, b){var self = $$23.$$s || this, $a, $b, a_current = nil, a_max = nil, b_current = nil, b_max = nil, compare = nil; - - - - if (a == null) { - a = nil; - }; - - if (b == null) { - b = nil; - }; - $b = self.$getPointHashCurrentAndMax(a), $a = Opal.to_ary($b), (a_current = ($a[0] == null ? nil : $a[0])), (a_max = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$getPointHashCurrentAndMax(b), $a = Opal.to_ary($b), (b_current = ($a[0] == null ? nil : $a[0])), (b_max = ($a[1] == null ? nil : $a[1])), $b; - compare = self.$b_crr()['$<=>'](self.$a_crr()); - if (compare['$=='](0)) { - - compare = a_max['$<=>'](b_max); - if (compare['$=='](0)) { - compare = a['$<=>'](b)};}; - return compare;}, $$23.$$s = self, $$23.$$arity = 2, $$23)); - return pc_sorted; - }, $CountHolder_sort_point_hash$22.$$arity = 1); - return (Opal.def(self, '$getPointHashCurrentAndMax', $CountHolder_getPointHashCurrentAndMax$24 = function $$getPointHashCurrentAndMax(key) { - var self = this, current = nil, max = nil; - - - if ($truthy(/(\d+)[\/](\d+)/['$=~'](key))) { - - current = $$($nesting, 'Regexp').$last_match(1); - max = $$($nesting, 'Regexp').$last_match(2); - return [current, max];}; - return [0, 0]; - }, $CountHolder_getPointHashCurrentAndMax$24.$$arity = 1), nil) && 'getPointHashCurrentAndMax'; - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["CardTrader"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $gvars = Opal.gvars, $klass = Opal.klass, $hash2 = Opal.hash2, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$freeze', '$attr_accessor', '$attr_reader', '$initValues', '$set1Deck1Joker', '$card_place=', '$-', '$clone', '$readExtraCard', '$sendMessageToOnlySender', '$to_s', '$sendMessage', '$sendMessageToChannels', '$nil?', '$empty?', '$debug', '$readlines', '$each', '$=~', '$to_i', '$last_match', '$push', '$[]=', '$raise', '$===', '$shuffleCards', '$drawCardByCommandText', '$drawCardOpen', '$getHandAndPlaceCardInfoText', '$+', '$playCardByCommandText', '$returnCards', '$clearAllPlaceAllPlayerCards', '$reviewCards', '$getAllCardLocation', '$transferCardsByCommandText', '$pickupCardCommandText', '$backCardCommandText', '$dealCard', '$lookAndDealCard', '$discardCardCommandText', '$sendCardToTargetNickPlaceCommandText', '$tapCardCommandText', '$printCardRestorationSpellResult', '$printMilStoneResult', '$drawCard', '$!', '$getCardsTextFromCards', '$length', '$[]', '$upcase', '$<=', '$times', '$ejectOneCardRandomFromCards', '$<<', '$pickupCard', '$>', '$!=', '$getCardsText', '$pickupCardByCardName', '$join', '$split', '$pickupCardByCards', '$pickupOneCard', '$==', '$delete_if', '$backCard', '$backCardByCommandSetAndPlace', '$backOneCard', '$getBurriedCard', '$transferOneCard', '$sendDealResult', '$discardCards', '$playCard', '$playCardByCardsBlockTextAndPlaceNo', '$playCardByCardsTextAndPlaceNo', '$playCardByCardAndPlaceNo', '$playOneCard', '$discardOneCard', '$discardCardsByCommandSetAndPlaceAndDestination', '$discardCardsByCardsAndPlace', '$getDestinationWhenPlaceIsNotHand', '$getCardsFromDealCards', '$reject!', '$transferCards', '$<', '$transferCardsByCommand', '$transferCardsByCards', '$transferTargetCard', '$transferTargetCardToNewMember', '$roll', '$delete_at', '$getSendCardToTargetNickPlace', '$printRegistCardResult', '$okCards', '$getSendCardToTargetNickPlaceByCardSetAndDestination', '$getSendCardToTargetNickPlaceByCards', '$tapCard', '$tapCardByCardsTextAndPlace', '$tapOneCardByCardAndPlace', '$*', '$getCardMilstone', '$clearAllPlayerCardsWhenPlayedPlace', '$clearAllPlayerCards', '$clear', '$shift', '$getCardLocationOnPlace', '$getCardLocationOnNumberdPlace', '$isTapCardPlace', '$getHandCardInfoText', '$getPlaceCardInfoText', '$getDealCardsText', '$compareCardByCardNumber', '$<=>', '$sort', '$compareCard', '$even?', '$throwCardRestorationSpell', '$getNewSpellText', '$setNewSpellText', '$keys', '$getSpellWords', '$getDealCardIndex', '$getIndexWord', '$shrinkSpellWords', '$each_with_index', '$include?', '$gsub', '$pop', '$expandSpellWords', '$getCardsFromIndexWordAndSpellText']); - - self.$require("configBcDice.rb"); - $gvars.ircNickRegExp = "[A-Za-z\\d\\-\\[\\]\\'^{}_]+"; - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'CardTrader'); - - var $nesting = [self].concat($parent_nesting), $CardTrader_initialize$1, $CardTrader_initValues$2, $CardTrader_set1Deck1Joker$3, $CardTrader_set1Deck2Jokers$4, $CardTrader_set2Decks2Jokers$5, $CardTrader_setBcDice$6, $CardTrader_setNick$7, $CardTrader_setTnick$8, $CardTrader_readCardSet$9, $CardTrader_sendMessage$10, $CardTrader_sendMessageToOnlySender$11, $CardTrader_sendMessageToChannels$12, $CardTrader_readExtraCard$13, $CardTrader_executeCard$15, $CardTrader_shuffleCards$16, $CardTrader_drawCardByCommandText$17, $CardTrader_drawCardOpen$18, $CardTrader_drawCard$19, $CardTrader_pickupCardCommandText$21, $CardTrader_pickupCard$22, $CardTrader_pickupCardByCardName$23, $CardTrader_pickupCardByCards$24, $CardTrader_pickupOneCard$26, $CardTrader_backCardCommandText$28, $CardTrader_backCard$29, $CardTrader_backCardByCommandSetAndPlace$30, $CardTrader_backOneCard$32, $CardTrader_dealCard$34, $CardTrader_sendDealResult$35, $CardTrader_lookAndDealCard$36, $CardTrader_discardCardCommandText$37, $CardTrader_playCardByCommandText$38, $CardTrader_playCard$39, $CardTrader_playCardByCardsBlockTextAndPlaceNo$40, $CardTrader_playCardByCardsTextAndPlaceNo$41, $CardTrader_playCardByCardAndPlaceNo$43, $CardTrader_playOneCard$44, $CardTrader_discardCards$45, $CardTrader_discardCardsByCommandSetAndPlaceAndDestination$46, $CardTrader_discardCardsByCardsAndPlace$47, $CardTrader_discardOneCard$49, $CardTrader_getDestinationWhenPlaceIsNotHand$51, $CardTrader_getCardsFromDealCards$52, $CardTrader_transferCardsByCommandText$53, $CardTrader_transferCards$54, $CardTrader_transferCardsByCommand$55, $CardTrader_transferCardsByCards$56, $CardTrader_transferOneCard$58, $CardTrader_ejectOneCardRandomFromCards$59, $CardTrader_transferTargetCard$60, $CardTrader_transferTargetCardToNewMember$62, $CardTrader_sendCardToTargetNickPlaceCommandText$63, $CardTrader_getSendCardToTargetNickPlace$64, $CardTrader_getSendCardToTargetNickPlaceByCardSetAndDestination$65, $CardTrader_getSendCardToTargetNickPlaceByCards$66, $CardTrader_printRegistCardResult$68, $CardTrader_tapCardCommandText$69, $CardTrader_tapCard$70, $CardTrader_tapCardByCardsTextAndPlace$71, $CardTrader_tapOneCardByCardAndPlace$73, $CardTrader_printMilStoneResult$74, $CardTrader_getCardMilstone$75, $CardTrader_clearAllPlaceAllPlayerCards$76, $CardTrader_clearAllPlayerCardsWhenPlayedPlace$78, $CardTrader_clearAllPlayerCards$79, $CardTrader_returnCards$80, $CardTrader_getBurriedCard$81, $CardTrader_reviewCards$82, $CardTrader_getAllCardLocation$83, $CardTrader_getCardLocationOnPlace$85, $CardTrader_getCardLocationOnNumberdPlace$86, $CardTrader_getHandAndPlaceCardInfoText$87, $CardTrader_getHandCardInfoText$88, $CardTrader_getDealCardsText$89, $CardTrader_compareCard$90, $CardTrader_compareCardByCardNumber$91, $CardTrader_getPlaceCardInfoText$92, $CardTrader_getCardsText$94, $CardTrader_getCardsTextFromCards$95, $CardTrader_isTapCardPlace$98, $CardTrader_printCardRestorationSpellResult$99, $CardTrader_throwCardRestorationSpell$100, $CardTrader_getNewSpellText$101, $CardTrader_getSpellWords$102, $CardTrader_getIndexWord$104, $CardTrader_getDealCardIndex$105, $CardTrader_shrinkSpellWords$107, $CardTrader_setNewSpellText$110, $CardTrader_expandSpellWords$112, $CardTrader_getCardsFromIndexWordAndSpellText$115; - - self.$$prototype.card_val = self.$$prototype.tnick = self.$$prototype.bcdice = self.$$prototype.channel = self.$$prototype.nick_e = self.$$prototype.cardRegExp = self.$$prototype.card_channels = self.$$prototype.cardRest = self.$$prototype.deal_cards = self.$$prototype.card_place = self.$$prototype.cardTitles = self.$$prototype.canTapCard = self.$$prototype.card_spell = nil; - - Opal.const_set($nesting[0], 'OK_RESULT', "_OK_".$freeze()); - Opal.const_set($nesting[0], 'NG_RESULT', "_NG_".$freeze()); - self.$attr_accessor("card_place"); - self.$attr_accessor("canTapCard"); - self.$attr_reader("numOfDecks"); - self.$attr_reader("numOfJokers"); - - Opal.def(self, '$initialize', $CardTrader_initialize$1 = function $$initialize() { - var self = this; - - - self.$initValues(); - self.card_channels = $hash2([], {}); - return (self.card_spell = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]); - }, $CardTrader_initialize$1.$$arity = 0); - - Opal.def(self, '$initValues', $CardTrader_initValues$2 = function $$initValues() { - var self = this, $writer = nil; - - - self.cardTitles = $hash2([], {}); - self.cardRegExp = "[DHSCJdhscj][\\d]+"; - self.deal_cards = $hash2(["card_played"], {"card_played": []}); - self.$set1Deck1Joker(); - - $writer = [1]; - $send(self, 'card_place=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return (self.canTapCard = true); - }, $CardTrader_initValues$2.$$arity = 0); - - Opal.def(self, '$set1Deck1Joker', $CardTrader_set1Deck1Joker$3 = function $$set1Deck1Joker() { - var self = this; - - - self.card_val = ["S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "S10", "S11", "S12", "S13", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12", "H13", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "D13", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "C13", "J1"]; - self.cardRest = self.card_val.$clone(); - self.numOfDecks = 1; - self.numOfJokers = 1; - return self; - }, $CardTrader_set1Deck1Joker$3.$$arity = 0); - - Opal.def(self, '$set1Deck2Jokers', $CardTrader_set1Deck2Jokers$4 = function $$set1Deck2Jokers() { - var self = this; - - - self.card_val = ["S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "S10", "S11", "S12", "S13", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12", "H13", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "D13", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "C13", "J1", "J0"]; - self.cardRest = self.card_val.$clone(); - self.numOfDecks = 1; - self.numOfJokers = 2; - return self; - }, $CardTrader_set1Deck2Jokers$4.$$arity = 0); - - Opal.def(self, '$set2Decks2Jokers', $CardTrader_set2Decks2Jokers$5 = function $$set2Decks2Jokers() { - var self = this; - - - self.card_val = ["S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "S10", "S11", "S12", "S13", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12", "H13", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "h10", "h11", "h12", "h13", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "D13", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "d10", "d11", "d12", "d13", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "C13", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10", "c11", "c12", "c13", "J1", "J2", "J3", "J4"]; - self.cardRest = self.card_val.$clone(); - self.numOfDecks = 2; - self.numOfJokers = 2; - return self; - }, $CardTrader_set2Decks2Jokers$5.$$arity = 0); - - Opal.def(self, '$setBcDice', $CardTrader_setBcDice$6 = function $$setBcDice(bcDice) { - var self = this; - - return (self.bcdice = bcDice) - }, $CardTrader_setBcDice$6.$$arity = 1); - - Opal.def(self, '$setNick', $CardTrader_setNick$7 = function $$setNick(nick_e) { - var self = this; - - return (self.nick_e = nick_e) - }, $CardTrader_setNick$7.$$arity = 1); - - Opal.def(self, '$setTnick', $CardTrader_setTnick$8 = function $$setTnick(t) { - var self = this; - - return (self.tnick = t) - }, $CardTrader_setTnick$8.$$arity = 1); - - Opal.def(self, '$readCardSet', $CardTrader_readCardSet$9 = function $$readCardSet() { - var self = this, e = nil; - - try { - - self.$readExtraCard(self.tnick); - return self.$sendMessageToOnlySender("カードセットの読み込み成功しました"); - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - return self.$sendMessageToOnlySender(e.$to_s()) - } finally { Opal.pop_exception() } - } else { throw $err; } - } - }, $CardTrader_readCardSet$9.$$arity = 0); - - Opal.def(self, '$sendMessage', $CardTrader_sendMessage$10 = function $$sendMessage(to, message) { - var self = this; - - return self.bcdice.$sendMessage(to, message) - }, $CardTrader_sendMessage$10.$$arity = 2); - - Opal.def(self, '$sendMessageToOnlySender', $CardTrader_sendMessageToOnlySender$11 = function $$sendMessageToOnlySender(message) { - var self = this; - - return self.bcdice.$sendMessageToOnlySender(message) - }, $CardTrader_sendMessageToOnlySender$11.$$arity = 1); - - Opal.def(self, '$sendMessageToChannels', $CardTrader_sendMessageToChannels$12 = function $$sendMessageToChannels(message) { - var self = this; - - return self.bcdice.$sendMessageToChannels(message) - }, $CardTrader_sendMessageToChannels$12.$$arity = 1); - - Opal.def(self, '$readExtraCard', $CardTrader_readExtraCard$13 = function $$readExtraCard(cardFileName) { - var $$14, self = this, lines = nil, e = nil; - - - if ($truthy(cardFileName['$nil?']())) { - return nil}; - if ($truthy(cardFileName['$empty?']())) { - return nil}; - self.$debug("" + "Loading Cardset『" + (cardFileName) + "』...\n"); - self.card_val = []; - - try { - - lines = $$($nesting, 'File').$readlines(cardFileName); - $send(lines, 'each', [], ($$14 = function(line){var self = $$14.$$s || this, cardNumber = nil, cardTitle = nil, $writer = nil; - if (self.card_val == null) self.card_val = nil; - if (self.cardTitles == null) self.cardTitles = nil; - - - - if (line == null) { - line = nil; - }; - if ($truthy(/^(\d+)->(.+)$/['$=~'](line))) { - } else { - return nil; - }; - cardNumber = $$($nesting, 'Regexp').$last_match(1).$to_i(); - cardTitle = $$($nesting, 'Regexp').$last_match(2); - self.card_val.$push(cardNumber); - - $writer = [cardNumber, cardTitle]; - $send(self.cardTitles, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];;}, $$14.$$s = self, $$14.$$arity = 1, $$14)); - self.cardRegExp = "[\\d]+"; - self.cardRest = self.card_val.$clone(); - self.deal_cards = $hash2(["card_played"], {"card_played": []}); - return self.$debug("Load Finished...\n"); - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - return self.$raise("" + "カードデータを開けません :『" + (cardFileName) + "』" + (e)) - } finally { Opal.pop_exception() } - } else { throw $err; } - };; - }, $CardTrader_readExtraCard$13.$$arity = 1); - - Opal.def(self, '$executeCard', $CardTrader_executeCard$15 = function $$executeCard(arg, channel) { - var $a, $b, self = this, count = nil, $case = nil, output_msg = nil, value = nil, name = nil, messageText = nil, out_msg = nil, place_msg = nil, sendTo = nil, targetNick = nil, spellText = nil, commandText = nil; - if ($gvars.ircNickRegExp == null) $gvars.ircNickRegExp = nil; - - - self.channel = channel; - self.$debug("executeCard arg", arg); - if ($truthy(/(c-)/['$=~'](arg))) { - } else { - return nil - }; - count = 0; - return (function() {$case = arg; - if (/(c-shuffle|c-sh)($|\s)/['$===']($case)) { - output_msg = self.$shuffleCards(); - return self.$sendMessage(self.channel, output_msg);} - else if (/c-draw(\[[\d]+\])?($|\s)/['$===']($case)) {return self.$drawCardByCommandText(arg)} - else if (/(c-odraw|c-opend)(\[[\d]+\])?($|\s)/['$===']($case)) { - value = $$($nesting, 'Regexp').$last_match(2); - return self.$drawCardOpen(value);} - else if (/c-hand($|\s)/['$===']($case)) {return self.$sendMessageToOnlySender(self.$getHandAndPlaceCardInfoText(arg, self.nick_e))} - else if (new RegExp("" + "c-vhand\\s*(" + ($gvars.ircNickRegExp) + ")($|\\s)")['$===']($case)) { - name = $$($nesting, 'Regexp').$last_match(1); - self.$debug("c-vhand name", name); - messageText = $rb_plus($rb_plus("" + (name) + " の手札は", self.$getHandAndPlaceCardInfoText("c-hand", name)), "です"); - return self.$sendMessageToOnlySender(messageText);} - else if (new RegExp("" + "c-play(\\d*)\\[" + (self.cardRegExp) + "(," + (self.cardRegExp) + ")*\\]($|\\s)")['$===']($case)) {return self.$playCardByCommandText(arg)} - else if (/(c-rshuffle|c-rsh)($|\s)/['$===']($case)) { - output_msg = self.$returnCards(); - return self.$sendMessage(self.channel, output_msg);} - else if (/c-clean($|\s)/['$===']($case)) { - output_msg = self.$clearAllPlaceAllPlayerCards(); - return self.$sendMessage(self.channel, output_msg);} - else if (/c-review($|\s)/['$===']($case)) { - output_msg = self.$reviewCards(); - return self.$sendMessageToOnlySender(output_msg);} - else if (/c-check($|\s)/['$===']($case)) { - $b = self.$getAllCardLocation(), $a = Opal.to_ary($b), (out_msg = ($a[0] == null ? nil : $a[0])), (place_msg = ($a[1] == null ? nil : $a[1])), $b; - self.$sendMessage(self.channel, out_msg); - return self.$sendMessage(self.channel, place_msg);} - else if (new RegExp("" + "c-pass(\\d)*(\\[" + (self.cardRegExp) + "(," + (self.cardRegExp) + ")*\\])?\\s*(" + ($gvars.ircNickRegExp) + ")($|\\s)")['$===']($case)) { - sendTo = $$($nesting, 'Regexp').$last_match(4); - return self.$transferCardsByCommandText(arg, sendTo);} - else if (new RegExp("" + "c-pick\\[" + (self.cardRegExp) + "(," + (self.cardRegExp) + ")*\\]($|\\s)")['$===']($case)) {return self.$pickupCardCommandText(arg)} - else if (new RegExp("" + "c-back(\\d)*\\[" + (self.cardRegExp) + "(," + (self.cardRegExp) + ")*\\]($|\\s)")['$===']($case)) {return self.$backCardCommandText(arg)} - else if (new RegExp("" + "c-deal(\\[[\\d]+\\]|\\s)\\s*(" + ($gvars.ircNickRegExp) + ")($|\\s)")['$===']($case)) { - count = $$($nesting, 'Regexp').$last_match(1); - targetNick = $$($nesting, 'Regexp').$last_match(2); - return self.$dealCard(count, targetNick);} - else if (new RegExp("" + "c-vdeal(\\[[\\d]+\\]|\\s)\\s*(" + ($gvars.ircNickRegExp) + ")($|\\s)")['$===']($case)) { - count = $$($nesting, 'Regexp').$last_match(1); - targetNick = $$($nesting, 'Regexp').$last_match(2); - return self.$lookAndDealCard(count, targetNick);} - else if (new RegExp("" + "c-(dis|discard)(\\d)*\\[" + (self.cardRegExp) + "(," + (self.cardRegExp) + ")*\\]($|\\s)")['$===']($case)) {return self.$discardCardCommandText(arg)} - else if (new RegExp("" + "c-place(\\d)*(\\[" + (self.cardRegExp) + "(," + (self.cardRegExp) + ")*\\])?\\s*(" + ($gvars.ircNickRegExp) + ")($|\\s)")['$===']($case)) { - targetNick = $$($nesting, 'Regexp').$last_match(4); - return self.$sendCardToTargetNickPlaceCommandText(arg, targetNick);} - else if (new RegExp("" + "c-(un)?tap(\\d+)\\[" + (self.cardRegExp) + "(," + (self.cardRegExp) + ")*\\]($|\\s)")['$===']($case)) {return self.$tapCardCommandText(arg)} - else if (new RegExp("" + "c-spell(\\[(" + ($gvars.ircNickRegExp) + "[^\\]]+?)\\])?($|\\s)")['$===']($case)) { - spellText = $$($nesting, 'Regexp').$last_match(2); - return self.$printCardRestorationSpellResult(spellText);} - else if (/(c-mil(stone)?(\[[\d]+\])?)($|\s)/['$===']($case)) { - commandText = $$($nesting, 'Regexp').$last_match(1); - return self.$printMilStoneResult(commandText);} - else { return nil }})(); - }, $CardTrader_executeCard$15.$$arity = 2); - - Opal.def(self, '$shuffleCards', $CardTrader_shuffleCards$16 = function $$shuffleCards() { - var self = this; - - - self.cardRest = self.card_val.$clone(); - self.deal_cards = $hash2(["card_played"], {"card_played": []}); - return "シャッフルしました"; - }, $CardTrader_shuffleCards$16.$$arity = 0); - - Opal.def(self, '$drawCardByCommandText', $CardTrader_drawCardByCommandText$17 = function $$drawCardByCommandText(arg) { - var $a, self = this, cards = nil, $writer = nil; - - - self.$debug("drawCardByCommandText arg", arg); - cards = self.$drawCard(arg); - self.$debug("drawCardByCommandText cards", cards); - if ($truthy(cards['$empty?']()['$!']())) { - - self.$sendMessageToOnlySender(self.$getCardsTextFromCards(cards)); - self.$sendMessage(self.channel, "" + (self.nick_e) + ": " + (cards.$length()) + "枚引きました"); - } else { - self.$sendMessage(self.channel, "カードが残っていません") - }; - return ($truthy($a = self.card_channels['$[]'](self.nick_e)) ? $a : (($writer = [self.nick_e, self.channel]), $send(self.card_channels, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - }, $CardTrader_drawCardByCommandText$17.$$arity = 1); - - Opal.def(self, '$drawCardOpen', $CardTrader_drawCardOpen$18 = function $$drawCardOpen(value) { - var $a, self = this, cmd = nil, cards = nil, $writer = nil; - - - cmd = "c-draw"; - if ($truthy(value['$nil?']())) { - } else { - cmd = $rb_plus(cmd, value) - }; - cards = self.$drawCard(cmd); - if ($truthy(cards['$empty?']()['$!']())) { - self.$sendMessage(self.channel, $rb_plus($rb_plus("" + (self.nick_e) + ": ", self.$getCardsTextFromCards(cards)), "を引きました")) - } else { - self.$sendMessage(self.channel, "カードが残っていません") - }; - return ($truthy($a = self.card_channels['$[]'](self.nick_e)) ? $a : (($writer = [self.nick_e, self.channel]), $send(self.card_channels, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - }, $CardTrader_drawCardOpen$18.$$arity = 1); - - Opal.def(self, '$drawCard', $CardTrader_drawCard$19 = function $$drawCard(command, destination) { - var $a, $$20, self = this, outputCards = nil, count = nil; - - - - if (destination == null) { - destination = nil; - }; - destination = ($truthy($a = destination) ? $a : self.nick_e); - destination = destination.$upcase(); - self.$debug("drawCard command, destination", command, destination); - outputCards = []; - self.$debug("@cardRest.length", self.cardRest.$length()); - if ($truthy($rb_le(self.cardRest.$length(), 0))) { - return outputCards}; - if ($truthy(/(c-draw(\[([\d]+)\])?)/['$=~'](command))) { - } else { - return outputCards - }; - count = $$($nesting, 'Regexp').$last_match(3); - count = ($truthy($a = count) ? $a : 1); - count = count.$to_i(); - self.$debug("draw count", count); - (function(){var $brk = Opal.new_brk(); try {return $send(count, 'times', [], ($$20 = function(_i){var self = $$20.$$s || this, $b, card = nil, $writer = nil; - if (self.cardRest == null) self.cardRest = nil; - if (self.deal_cards == null) self.deal_cards = nil; - - - - if (_i == null) { - _i = nil; - }; - if ($truthy($rb_le(self.cardRest.$length(), 0))) { - - Opal.brk(nil, $brk)}; - card = self.$ejectOneCardRandomFromCards(self.cardRest); - if ($truthy(card['$nil?']())) { - - Opal.brk(nil, $brk)}; - ($truthy($b = self.deal_cards['$[]'](destination)) ? $b : (($writer = [destination, []]), $send(self.deal_cards, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - self.deal_cards['$[]'](destination)['$<<'](card); - return outputCards['$<<'](card);}, $$20.$$s = self, $$20.$$brk = $brk, $$20.$$arity = 1, $$20)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return outputCards; - }, $CardTrader_drawCard$19.$$arity = -2); - - Opal.def(self, '$pickupCardCommandText', $CardTrader_pickupCardCommandText$21 = function $$pickupCardCommandText(string) { - var $a, $b, self = this, count = nil, output_msg = nil; - - - self.$debug("pickupCardCommandText string", string); - $b = self.$pickupCard(string), $a = Opal.to_ary($b), (count = ($a[0] == null ? nil : $a[0])), (output_msg = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy($rb_gt(count, 0))) { - self.$sendMessage(self.channel, "" + (self.nick_e) + ": " + (count) + "枚選んで引きました")}; - if ($truthy(output_msg['$!='](""))) { - self.$sendMessage(self.channel, $rb_plus($rb_plus("[", self.$getCardsText(output_msg)), "]がありません"))}; - return self.$sendMessageToOnlySender(self.$getHandAndPlaceCardInfoText("Auto")); - }, $CardTrader_pickupCardCommandText$21.$$arity = 1); - - Opal.def(self, '$pickupCard', $CardTrader_pickupCard$22 = function $$pickupCard(string) { - var $a, $b, self = this, okCount = nil, ngCardList = nil, cardName = nil, ngCardText = nil; - - - okCount = 0; - ngCardList = []; - if ($truthy(new RegExp("" + "(c-pick\\[((,)?" + (self.cardRegExp) + ")+\\])")['$=~'](string))) { - - cardName = $$($nesting, 'Regexp').$last_match(1); - $b = self.$pickupCardByCardName(cardName), $a = Opal.to_ary($b), (okCount = ($a[0] == null ? nil : $a[0])), (ngCardList = ($a[1] == null ? nil : $a[1])), $b;}; - ngCardText = ngCardList.$join(","); - return [okCount, ngCardText]; - }, $CardTrader_pickupCard$22.$$arity = 1); - - Opal.def(self, '$pickupCardByCardName', $CardTrader_pickupCardByCardName$23 = function $$pickupCardByCardName(cardName) { - var $a, $b, self = this, okCount = nil, ngCardList = nil, cards = nil; - - - okCount = 0; - ngCardList = []; - if ($truthy(new RegExp("" + "\\[(" + (self.cardRegExp) + "(," + (self.cardRegExp) + ")*)\\]")['$=~'](cardName))) { - - cards = $$($nesting, 'Regexp').$last_match(1).$split(/,/); - $b = self.$pickupCardByCards(cards), $a = Opal.to_ary($b), (okCount = ($a[0] == null ? nil : $a[0])), (ngCardList = ($a[1] == null ? nil : $a[1])), $b;}; - return [okCount, ngCardList]; - }, $CardTrader_pickupCardByCardName$23.$$arity = 1); - - Opal.def(self, '$pickupCardByCards', $CardTrader_pickupCardByCards$24 = function $$pickupCardByCards(cards) { - var $$25, self = this, okCount = nil, ngCardList = nil; - - - okCount = 0; - ngCardList = []; - $send(cards, 'each', [], ($$25 = function(card){var self = $$25.$$s || this, string = nil; - - - - if (card == null) { - card = nil; - }; - string = self.$pickupOneCard(card); - if (string['$==']($$($nesting, 'OK_RESULT'))) { - return (okCount = $rb_plus(okCount, 1)) - } else { - return ngCardList['$<<'](string) - };}, $$25.$$s = self, $$25.$$arity = 1, $$25)); - return [okCount, ngCardList]; - }, $CardTrader_pickupCardByCards$24.$$arity = 1); - - Opal.def(self, '$pickupOneCard', $CardTrader_pickupOneCard$26 = function $$pickupOneCard(card) { - var $$27, $a, self = this, targetCard = nil, destination = nil, isDelete = nil, $writer = nil; - - - if ($truthy($rb_le(self.cardRest.$length(), 0))) { - return "山札"}; - targetCard = card.$upcase(); - destination = self.nick_e.$upcase(); - isDelete = $send(self.cardRest, 'delete_if', [], ($$27 = function(c){var self = $$27.$$s || this; - - - - if (c == null) { - c = nil; - }; - return c['$=='](targetCard);}, $$27.$$s = self, $$27.$$arity = 1, $$27)); - if ($truthy(isDelete)) { - - ($truthy($a = self.deal_cards['$[]'](destination)) ? $a : (($writer = [destination, []]), $send(self.deal_cards, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - self.deal_cards['$[]'](destination)['$<<'](targetCard); - return $$($nesting, 'OK_RESULT'); - } else { - return targetCard - }; - }, $CardTrader_pickupOneCard$26.$$arity = 1); - - Opal.def(self, '$backCardCommandText', $CardTrader_backCardCommandText$28 = function $$backCardCommandText(command) { - var $a, $b, self = this, count = nil, output_msg = nil; - - - $b = self.$backCard(command), $a = Opal.to_ary($b), (count = ($a[0] == null ? nil : $a[0])), (output_msg = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy($rb_gt(count, 0))) { - self.$sendMessage(self.channel, "" + (self.nick_e) + ": " + (count) + "枚戻しました")}; - if ($truthy(output_msg['$!='](""))) { - return self.$sendMessage(self.channel, "" + "[" + (self.$getCardsText(output_msg)) + "]がありません") - } else { - return self.$sendMessageToOnlySender(self.$getHandAndPlaceCardInfoText("Auto")) - }; - }, $CardTrader_backCardCommandText$28.$$arity = 1); - - Opal.def(self, '$backCard', $CardTrader_backCard$29 = function $$backCard(command) { - var $a, $b, self = this, okCount = nil, ngCards = nil, commandset = nil, place = nil; - - - okCount = 0; - ngCards = []; - if ($truthy(new RegExp("" + "(c-back(\\d*)\\[((,)?" + (self.cardRegExp) + ")+\\])")['$=~'](command))) { - - commandset = $$($nesting, 'Regexp').$last_match(1); - place = $$($nesting, 'Regexp').$last_match(2).$to_i(); - $b = self.$backCardByCommandSetAndPlace(commandset, place), $a = Opal.to_ary($b), (okCount = ($a[0] == null ? nil : $a[0])), (ngCards = ($a[1] == null ? nil : $a[1])), $b;}; - return [okCount, ngCards.$join(",")]; - }, $CardTrader_backCard$29.$$arity = 1); - - Opal.def(self, '$backCardByCommandSetAndPlace', $CardTrader_backCardByCommandSetAndPlace$30 = function $$backCardByCommandSetAndPlace(commandset, place) { - var $$31, self = this, okCount = nil, ngCards = nil, destination = nil, cards = nil; - - - okCount = 0; - ngCards = []; - destination = self.nick_e.$upcase(); - if ($truthy(new RegExp("" + "\\[(" + (self.cardRegExp) + "(," + (self.cardRegExp) + ")*)\\]")['$=~'](commandset))) { - - cards = $$($nesting, 'Regexp').$last_match(1).$split(/,/); - $send(cards, 'each', [], ($$31 = function(card){var self = $$31.$$s || this, string = nil; - - - - if (card == null) { - card = nil; - }; - string = self.$backOneCard(card, destination, place); - if (string['$==']($$($nesting, 'OK_RESULT'))) { - return (okCount = $rb_plus(okCount, 1)) - } else { - return ngCards['$<<'](string) - };}, $$31.$$s = self, $$31.$$arity = 1, $$31));}; - return [okCount, ngCards]; - }, $CardTrader_backCardByCommandSetAndPlace$30.$$arity = 2); - - Opal.def(self, '$backOneCard', $CardTrader_backOneCard$32 = function $$backOneCard(targetCard, destination, place) { - var $a, $$33, self = this, string = nil, $writer = nil, cards = nil, isDelete = nil; - - - if ($truthy($rb_le(self.$getBurriedCard(), 0))) { - return "捨て札"}; - targetCard = targetCard.$upcase(); - if ($truthy($rb_gt(self.card_place, 0))) { - - string = self.$transferOneCard(targetCard, "" + (place) + (destination), destination); - if (string['$==']($$($nesting, 'OK_RESULT'))) { - return $$($nesting, 'OK_RESULT')};}; - ($truthy($a = self.deal_cards['$[]']("card_played")) ? $a : (($writer = ["card_played", []]), $send(self.deal_cards, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - cards = self.deal_cards['$[]']("card_played"); - isDelete = $send(cards, 'delete_if', [], ($$33 = function(i){var self = $$33.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](targetCard);}, $$33.$$s = self, $$33.$$arity = 1, $$33)); - if ($truthy(isDelete)) { - - self.deal_cards['$[]'](destination)['$<<'](targetCard); - return $$($nesting, 'OK_RESULT');}; - return "${targetCard}"; - }, $CardTrader_backOneCard$32.$$arity = 3); - - Opal.def(self, '$dealCard', $CardTrader_dealCard$34 = function $$dealCard(count, targetNick, isLook) { - var $a, self = this, cards = nil, $writer = nil; - - - - if (isLook == null) { - isLook = false; - }; - self.$debug("dealCard count, targetNick", count, targetNick); - cards = self.$drawCard("" + "c-draw" + (count), targetNick); - if ($truthy(cards['$empty?']()['$!']())) { - self.$sendDealResult(targetNick, count, self.$getCardsTextFromCards(cards), isLook) - } else { - self.$sendMessage(self.channel, "カードが残っていません") - }; - ($truthy($a = self.card_channels['$[]'](targetNick)) ? $a : (($writer = [targetNick, self.channel]), $send(self.card_channels, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - return count; - }, $CardTrader_dealCard$34.$$arity = -3); - - Opal.def(self, '$sendDealResult', $CardTrader_sendDealResult$35 = function $$sendDealResult(targetNick, count, output_msg, isLook) { - var self = this; - - - self.$sendMessage(targetNick, output_msg); - if ($truthy(isLook)) { - self.$sendMessage(self.nick_e, "" + (targetNick) + " に " + (output_msg) + " を配りました")}; - return self.$sendMessage(self.channel, "" + (self.nick_e) + ": " + (targetNick) + "に" + (count) + "枚配りました"); - }, $CardTrader_sendDealResult$35.$$arity = 4); - - Opal.def(self, '$lookAndDealCard', $CardTrader_lookAndDealCard$36 = function $$lookAndDealCard(count, targetNick) { - var self = this, isLook = nil; - - - isLook = true; - return self.$dealCard(count, targetNick, isLook); - }, $CardTrader_lookAndDealCard$36.$$arity = 2); - - Opal.def(self, '$discardCardCommandText', $CardTrader_discardCardCommandText$37 = function $$discardCardCommandText(commandText) { - var $a, $b, self = this, count = nil, output_msg = nil, _card_ok = nil, cardText = nil; - if ($gvars.card_ok == null) $gvars.card_ok = nil; - - - $b = self.$discardCards(commandText), $a = Opal.to_ary($b), (count = ($a[0] == null ? nil : $a[0])), (output_msg = ($a[1] == null ? nil : $a[1])), (_card_ok = ($a[2] == null ? nil : $a[2])), $b; - if ($truthy($rb_gt(count, 0))) { - - self.$sendMessage(self.channel, "" + (self.nick_e) + ": " + (count) + "枚捨てました"); - if ($truthy(self.cardTitles['$empty?']())) { - } else { - - cardText = self.$getCardsText($gvars.card_ok); - self.$sendMessage(self.channel, "" + "[" + (cardText) + "]"); - };}; - if ($truthy(output_msg['$!='](""))) { - - cardText = self.$getCardsText(output_msg); - return self.$sendMessageToOnlySender("" + "[" + (cardText) + "]がありません"); - } else { - return self.$sendMessageToOnlySender(self.$getHandAndPlaceCardInfoText("Auto")) - }; - }, $CardTrader_discardCardCommandText$37.$$arity = 1); - - Opal.def(self, '$playCardByCommandText', $CardTrader_playCardByCommandText$38 = function $$playCardByCommandText(arg) { - var $a, $b, self = this, count = nil, output_msg = nil, _card_ok = nil; - if ($gvars.card_ok == null) $gvars.card_ok = nil; - - - self.$debug("c-play pattern", arg); - $b = self.$playCard(arg), $a = Opal.to_ary($b), (count = ($a[0] == null ? nil : $a[0])), (output_msg = ($a[1] == null ? nil : $a[1])), (_card_ok = ($a[2] == null ? nil : $a[2])), $b; - if ($truthy($rb_gt(count, 0))) { - - self.$sendMessage(self.channel, "" + (self.nick_e) + ": " + (count) + "枚出しました"); - if ($truthy(self.cardTitles['$empty?']())) { - } else { - self.$sendMessage(self.channel, $rb_plus($rb_plus("[", self.$getCardsText($gvars.card_ok)), "]")) - };}; - if ($truthy(output_msg['$!='](""))) { - - self.$debug("output_msg", output_msg); - self.$sendMessage(self.channel, $rb_plus($rb_plus("[", self.$getCardsText(output_msg)), "]は持っていません"));}; - return self.$sendMessageToOnlySender(self.$getHandAndPlaceCardInfoText("Auto", self.nick_e)); - }, $CardTrader_playCardByCommandText$38.$$arity = 1); - - Opal.def(self, '$playCard', $CardTrader_playCard$39 = function $$playCard(cardPlayCommandText) { - var $a, $b, self = this, okCardCount = nil, okCardList = nil, ngCardList = nil, cardsBlockText = nil, place = nil, okCardText = nil, ngCardText = nil; - - - self.$debug("playCard cardPlayCommandText", cardPlayCommandText); - okCardCount = 0; - okCardList = []; - ngCardList = []; - if ($truthy(new RegExp("" + "(c-play(\\d*)\\[((,)?" + (self.cardRegExp) + ")+\\])")['$=~'](cardPlayCommandText))) { - - cardsBlockText = $$($nesting, 'Regexp').$last_match(1); - place = $$($nesting, 'Regexp').$last_match(2).$to_i(); - self.$debug("cardsBlockText", cardsBlockText); - self.$debug("place", place); - $b = self.$playCardByCardsBlockTextAndPlaceNo(cardsBlockText, place), $a = Opal.to_ary($b), (okCardList = ($a[0] == null ? nil : $a[0])), (ngCardList = ($a[1] == null ? nil : $a[1])), $b; - self.$debug("okCardList", okCardList); - self.$debug("ngCardList", ngCardList); - okCardCount = okCardList.$length(); - okCardText = okCardList.$join(","); - ngCardText = ngCardList.$join(",");}; - return [okCardCount, ngCardText, okCardText]; - }, $CardTrader_playCard$39.$$arity = 1); - - Opal.def(self, '$playCardByCardsBlockTextAndPlaceNo', $CardTrader_playCardByCardsBlockTextAndPlaceNo$40 = function $$playCardByCardsBlockTextAndPlaceNo(cardsBlockText, place) { - var $a, $b, self = this, okCardList = nil, ngCardList = nil, cardsText = nil; - - - okCardList = []; - ngCardList = []; - if ($truthy(new RegExp("" + "\\[(" + (self.cardRegExp) + "(," + (self.cardRegExp) + ")*)\\]")['$=~'](cardsBlockText))) { - - cardsText = $$($nesting, 'Regexp').$last_match(1); - $b = self.$playCardByCardsTextAndPlaceNo(cardsText, place), $a = Opal.to_ary($b), (okCardList = ($a[0] == null ? nil : $a[0])), (ngCardList = ($a[1] == null ? nil : $a[1])), $b;}; - return [okCardList, ngCardList]; - }, $CardTrader_playCardByCardsBlockTextAndPlaceNo$40.$$arity = 2); - - Opal.def(self, '$playCardByCardsTextAndPlaceNo', $CardTrader_playCardByCardsTextAndPlaceNo$41 = function $$playCardByCardsTextAndPlaceNo(cardsText, place) { - var $$42, self = this, cards = nil, okCardList = nil, ngCardList = nil; - - - cards = cardsText.$split(/,/); - okCardList = []; - ngCardList = []; - $send(cards, 'each', [], ($$42 = function(card){var self = $$42.$$s || this, $a, $b, okList = nil, ngList = nil; - - - - if (card == null) { - card = nil; - }; - $b = self.$playCardByCardAndPlaceNo(card, place), $a = Opal.to_ary($b), (okList = ($a[0] == null ? nil : $a[0])), (ngList = ($a[1] == null ? nil : $a[1])), $b; - okCardList = $rb_plus(okCardList, okList); - return (ngCardList = $rb_plus(ngCardList, ngList));}, $$42.$$s = self, $$42.$$arity = 1, $$42)); - return [okCardList, ngCardList]; - }, $CardTrader_playCardByCardsTextAndPlaceNo$41.$$arity = 2); - - Opal.def(self, '$playCardByCardAndPlaceNo', $CardTrader_playCardByCardAndPlaceNo$43 = function $$playCardByCardAndPlaceNo(card, place) { - var self = this, okList = nil, ngList = nil, result = nil; - - - self.$debug("playCardByCardAndPlaceNo card, place", card, place); - okList = []; - ngList = []; - result = self.$playOneCard(card, place); - self.$debug("playOneCard result", result); - if (result['$==']($$($nesting, 'OK_RESULT'))) { - okList['$<<'](card) - } else { - ngList['$<<'](result) - }; - return [okList, ngList]; - }, $CardTrader_playCardByCardAndPlaceNo$43.$$arity = 2); - - Opal.def(self, '$playOneCard', $CardTrader_playOneCard$44 = function $$playOneCard(card, place) { - var self = this, destination = nil, result = nil; - - - self.$debug("playOneCard card, place", card, place); - destination = self.nick_e.$upcase(); - result = ""; - if ($truthy($rb_gt(place, 0))) { - - self.$debug("playOneCard place > 0"); - result = self.$transferOneCard(card, destination, "" + (place) + (destination)); - } else { - - self.$debug("playOneCard place <= 0"); - result = self.$discardOneCard(card, place, destination); - }; - if (result['$==']($$($nesting, 'OK_RESULT'))) { - return result - } else { - return card - }; - }, $CardTrader_playOneCard$44.$$arity = 2); - - Opal.def(self, '$discardCards', $CardTrader_discardCards$45 = function $$discardCards(command, destination) { - var $a, $b, self = this, okList = nil, ngList = nil, commandSet = nil, place = nil, ngText = nil, okText = nil; - - - - if (destination == null) { - destination = nil; - }; - self.$debug("discardCards command, destination", command, destination); - if ($truthy(destination['$nil?']())) { - destination = self.nick_e}; - destination = destination.$upcase(); - okList = []; - ngList = []; - if ($truthy(new RegExp("" + "(c-(dis|discard)(\\d*)\\[((,)?" + (self.cardRegExp) + ")+\\])")['$=~'](command))) { - - self.$debug("discardCards reg OK"); - commandSet = $$($nesting, 'Regexp').$last_match(1); - place = $$($nesting, 'Regexp').$last_match(3).$to_i(); - $b = self.$discardCardsByCommandSetAndPlaceAndDestination(commandSet, place, destination), $a = Opal.to_ary($b), (okList = ($a[0] == null ? nil : $a[0])), (ngList = ($a[1] == null ? nil : $a[1])), $b;}; - ngText = ngList.$join(","); - okText = okList.$join(","); - return [okList.$length(), ngText, okText]; - }, $CardTrader_discardCards$45.$$arity = -2); - - Opal.def(self, '$discardCardsByCommandSetAndPlaceAndDestination', $CardTrader_discardCardsByCommandSetAndPlaceAndDestination$46 = function $$discardCardsByCommandSetAndPlaceAndDestination(commandSet, place, destination) { - var $a, $b, self = this, okList = nil, ngList = nil, cards = nil; - - - okList = []; - ngList = []; - if ($truthy(new RegExp("" + "\\[(" + (self.cardRegExp) + "(," + (self.cardRegExp) + ")*)\\]")['$=~'](commandSet))) { - - cards = $$($nesting, 'Regexp').$last_match(1).$split(/,/); - $b = self.$discardCardsByCardsAndPlace(cards, place, destination), $a = Opal.to_ary($b), (okList = ($a[0] == null ? nil : $a[0])), (ngList = ($a[1] == null ? nil : $a[1])), $b;}; - return [okList, ngList]; - }, $CardTrader_discardCardsByCommandSetAndPlaceAndDestination$46.$$arity = 3); - - Opal.def(self, '$discardCardsByCardsAndPlace', $CardTrader_discardCardsByCardsAndPlace$47 = function $$discardCardsByCardsAndPlace(cards, place, destination) { - var $$48, self = this, okList = nil, ngList = nil; - - - okList = []; - ngList = []; - $send(cards, 'each', [], ($$48 = function(card){var self = $$48.$$s || this, result = nil; - - - - if (card == null) { - card = nil; - }; - result = self.$discardOneCard(card, place, destination); - if (result['$==']($$($nesting, 'OK_RESULT'))) { - return okList['$<<'](card) - } else { - return ngList['$<<'](result) - };}, $$48.$$s = self, $$48.$$arity = 1, $$48)); - return [okList, ngList]; - }, $CardTrader_discardCardsByCardsAndPlace$47.$$arity = 3); - - Opal.def(self, '$discardOneCard', $CardTrader_discardOneCard$49 = function $$discardOneCard(card, place, destination) { - var $$50, $a, self = this, this_cards = nil, rest_cards = nil, temp_cards = nil, result = nil, isTargetCardInHand = nil, $writer = nil; - - - card = card.$upcase(); - destination = destination.$upcase(); - destination = self.$getDestinationWhenPlaceIsNotHand(place, destination); - this_cards = []; - rest_cards = []; - temp_cards = self.$getCardsFromDealCards(destination); - result = $send(temp_cards, 'reject!', [], ($$50 = function(i){var self = $$50.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](card);}, $$50.$$s = self, $$50.$$arity = 1, $$50)); - isTargetCardInHand = result['$nil?']()['$!'](); - if ($truthy(isTargetCardInHand)) { - this_cards['$<<'](card) - } else { - rest_cards['$<<'](card) - }; - self.$debug("isTargetCardInHand", isTargetCardInHand); - if ($truthy(isTargetCardInHand)) { - - self.$debug("isTargetCardInHand OK, so set card info"); - ($truthy($a = self.deal_cards['$[]'](destination)) ? $a : (($writer = [destination, []]), $send(self.deal_cards, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - - $writer = [destination, $rb_plus(self.deal_cards['$[]'](destination), rest_cards)]; - $send(self.deal_cards, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - ($truthy($a = self.deal_cards['$[]']("card_played")) ? $a : (($writer = ["card_played", []]), $send(self.deal_cards, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - - $writer = ["card_played", $rb_plus(self.deal_cards['$[]']("card_played"), this_cards)]; - $send(self.deal_cards, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - self.$debug("@deal_cards", self.deal_cards); - return $$($nesting, 'OK_RESULT'); - } else { - return card - }; - }, $CardTrader_discardOneCard$49.$$arity = 3); - - Opal.def(self, '$getDestinationWhenPlaceIsNotHand', $CardTrader_getDestinationWhenPlaceIsNotHand$51 = function $$getDestinationWhenPlaceIsNotHand(place, destination) { - var self = this; - - - if ($truthy($rb_gt(place, 0))) { - - destination = "" + (place) + (destination); - return destination;}; - return destination; - }, $CardTrader_getDestinationWhenPlaceIsNotHand$51.$$arity = 2); - - Opal.def(self, '$getCardsFromDealCards', $CardTrader_getCardsFromDealCards$52 = function $$getCardsFromDealCards(destination) { - var self = this, cards = nil; - - - self.$debug("getCardsFromDealCards destination", destination); - self.$debug("@deal_cards", self.deal_cards); - self.$debug("@deal_cards[destination]", self.deal_cards['$[]'](destination)); - if ($truthy(self.deal_cards['$[]'](destination)['$nil?']())) { - - self.$debug("getCardsFromDealCards empty"); - return [];}; - cards = self.deal_cards['$[]'](destination); - self.$debug("getCardsFromDealCards cards", cards); - return cards; - }, $CardTrader_getCardsFromDealCards$52.$$arity = 1); - - Opal.def(self, '$transferCardsByCommandText', $CardTrader_transferCardsByCommandText$53 = function $$transferCardsByCommandText(commandText, sendTo) { - var $a, $b, self = this, count = nil, output_msg = nil; - - - self.$debug("transferCardsByCommandText commandText, sendTo", commandText, sendTo); - $b = self.$transferCards(commandText), $a = Opal.to_ary($b), (count = ($a[0] == null ? nil : $a[0])), (output_msg = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy($rb_lt(count, 0))) { - self.$sendMessage(self.channel, "" + (self.nick_e) + ": 相手が登録されていません") - } else { - - if ($truthy(output_msg['$!='](""))) { - self.$sendMessage(self.channel, $rb_plus($rb_plus("[", self.$getCardsText(output_msg)), "]がありません"))}; - if ($truthy($rb_gt(count, 0))) { - - self.$sendMessage(self.channel, "" + (self.nick_e) + ": " + (count) + "枚渡しました"); - self.$debug("transferCardsByCommandText sendTo", sendTo); - self.$sendMessage(sendTo, self.$getHandAndPlaceCardInfoText("Auto", sendTo));}; - }; - return self.$sendMessageToOnlySender(self.$getHandAndPlaceCardInfoText("Auto")); - }, $CardTrader_transferCardsByCommandText$53.$$arity = 2); - - Opal.def(self, '$transferCards', $CardTrader_transferCards$54 = function $$transferCards(command) { - var $a, $b, self = this, okCount = nil, ngCardList = nil, destination = nil, commandset = nil, place = nil, ngCardText = nil; - if ($gvars.ircNickRegExp == null) $gvars.ircNickRegExp = nil; - - - self.$debug("transferCards command", command); - okCount = 0; - ngCardList = []; - if ($truthy(new RegExp("" + "(c-pass(\\d*)(\\[(((,)?" + (self.cardRegExp) + ")*)\\])?)\\s*(" + ($gvars.ircNickRegExp) + ")")['$=~'](command))) { - - destination = $$($nesting, 'Regexp').$last_match(7).$upcase(); - commandset = $$($nesting, 'Regexp').$last_match(1); - place = $$($nesting, 'Regexp').$last_match(2).$to_i(); - place = ($truthy($a = place) ? $a : 0); - $b = self.$transferCardsByCommand(commandset, place, destination), $a = Opal.to_ary($b), (okCount = ($a[0] == null ? nil : $a[0])), (ngCardList = ($a[1] == null ? nil : $a[1])), $b; - self.$debug("transferCardsByCommand resutl okCount, ngCardList", okCount, ngCardList);}; - ngCardText = ngCardList.$join(","); - return [okCount, ngCardText]; - }, $CardTrader_transferCards$54.$$arity = 1); - - Opal.def(self, '$transferCardsByCommand', $CardTrader_transferCardsByCommand$55 = function $$transferCardsByCommand(commandset, place, destination) { - var $a, $b, self = this, nick_e = nil, okCount = nil, ngCardList = nil, cards = nil; - - - self.$debug("transferCardsByCommand commandset, place, destination", commandset, place, destination); - nick_e = self.nick_e; - if ($truthy($rb_gt(place, 0))) { - nick_e = "" + (place) + (nick_e)}; - okCount = 0; - ngCardList = []; - self.$debug("LINE", 827); - cards = [""]; - if ($truthy(new RegExp("" + "\\[(" + (self.cardRegExp) + "(," + (self.cardRegExp) + ")*)\\]")['$=~'](commandset))) { - cards = $$($nesting, 'Regexp').$last_match(1).$split(/,/)}; - self.$debug("transferCardsByCommand cards", cards); - $b = self.$transferCardsByCards(cards, destination, nick_e), $a = Opal.to_ary($b), (okCount = ($a[0] == null ? nil : $a[0])), (ngCardList = ($a[1] == null ? nil : $a[1])), $b; - self.$debug("LINE", 837); - return [okCount, ngCardList]; - }, $CardTrader_transferCardsByCommand$55.$$arity = 3); - - Opal.def(self, '$transferCardsByCards', $CardTrader_transferCardsByCards$56 = function $$transferCardsByCards(cards, destination, nick_e) {try { - - var $$57, self = this, okCount = nil, ngCardList = nil; - - - okCount = 0; - ngCardList = []; - $send(cards, 'each', [], ($$57 = function(card){var self = $$57.$$s || this, result = nil, $case = nil; - - - - if (card == null) { - card = nil; - }; - self.$debug("transferCardsByCards card", card); - result = self.$transferOneCard(card, nick_e, destination); - self.$debug("transferOneCard result", result); - return (function() {$case = result; - if ($$($nesting, 'NG_RESULT')['$===']($case)) {Opal.ret([-1, ["渡す相手が登録されていません"]])} - else if ($$($nesting, 'OK_RESULT')['$===']($case)) {return (okCount = $rb_plus(okCount, 1))} - else {return ngCardList['$<<'](result)}})();}, $$57.$$s = self, $$57.$$arity = 1, $$57)); - return [okCount, ngCardList]; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $CardTrader_transferCardsByCards$56.$$arity = 3); - - Opal.def(self, '$transferOneCard', $CardTrader_transferOneCard$58 = function $$transferOneCard(card, from, toSend) { - var $a, $b, self = this, targetCard = nil, isTargetCardInHand = nil, restCards = nil, thisCard = nil, $writer = nil, cards = nil, isSuccess = nil; - - - self.$debug("transferOneCard card, from, toSend", card, from, toSend); - targetCard = card.$upcase(); - toSend = toSend.$upcase(); - from = from.$upcase(); - isTargetCardInHand = false; - restCards = []; - thisCard = ""; - ($truthy($a = self.deal_cards['$[]'](from)) ? $a : (($writer = [from, []]), $send(self.deal_cards, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - cards = self.deal_cards['$[]'](from); - self.$debug("from, cards, @deal_cards", from, cards, self.deal_cards); - if (targetCard['$==']("")) { - - self.$debug("カード指定がないのでランダムで一枚渡す"); - thisCard = self.$ejectOneCardRandomFromCards(cards); - isTargetCardInHand = true; - restCards = self.deal_cards['$[]'](from); - } else { - - self.$debug("カード指定あり targetCard", targetCard); - $b = self.$transferTargetCard(targetCard, cards, toSend, from), $a = Opal.to_ary($b), (thisCard = ($a[0] == null ? nil : $a[0])), (restCards = ($a[1] == null ? nil : $a[1])), (isTargetCardInHand = ($a[2] == null ? nil : $a[2])), $b; - }; - self.$debug("transferOneCard isTargetCardInHand", isTargetCardInHand); - if ($truthy(isTargetCardInHand)) { - } else { - return targetCard - }; - self.$debug("transferOneCard @deal_cards", self.deal_cards); - self.$debug("transferOneCard toSend", toSend); - if ($truthy(self.deal_cards['$[]'](toSend))) { - - self.$debug("alreadyRegisted"); - self.deal_cards['$[]'](toSend)['$<<'](thisCard); - } else { - - self.$debug("NOT registed"); - isSuccess = self.$transferTargetCardToNewMember(toSend, thisCard); - self.$debug("isSuccess", isSuccess); - if ($truthy(isSuccess)) { - } else { - return $$($nesting, 'NG_RESULT') - }; - }; - - $writer = [from, restCards]; - $send(self.deal_cards, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - self.$debug("transferOneCard @deal_cards", self.deal_cards); - return $$($nesting, 'OK_RESULT'); - }, $CardTrader_transferOneCard$58.$$arity = 3); - - Opal.def(self, '$ejectOneCardRandomFromCards', $CardTrader_ejectOneCardRandomFromCards$59 = function $$ejectOneCardRandomFromCards(cards) { - var $a, $b, self = this, cardNumber = nil, card = nil; - - - self.$debug("ejectOneCardRandomFromCards cards.length", cards.$length()); - if ($truthy(cards['$empty?']())) { - return nil}; - $b = self.bcdice.$roll(1, cards.$length()), $a = Opal.to_ary($b), (cardNumber = ($a[0] == null ? nil : $a[0])), $b; - cardNumber = $rb_minus(cardNumber, 1); - self.$debug("cardNumber", cardNumber); - card = cards.$delete_at(cardNumber); - self.$debug("card", card); - return card; - }, $CardTrader_ejectOneCardRandomFromCards$59.$$arity = 1); - - Opal.def(self, '$transferTargetCard', $CardTrader_transferTargetCard$60 = function $$transferTargetCard(targetCard, cards, toSend, from) { - var $$61, self = this, thisCard = nil, restCards = nil, isTargetCardInHand = nil; - - - self.$debug("transferTargetCard(targetCard, cards, toSend, from)", targetCard, cards, toSend, from); - thisCard = ""; - restCards = []; - isTargetCardInHand = false; - $send(cards, 'each', [], ($$61 = function(card){var self = $$61.$$s || this, $a; - - - - if (card == null) { - card = nil; - }; - if ($truthy(($truthy($a = isTargetCardInHand['$!']()) ? card['$=='](targetCard) : $a))) { - - isTargetCardInHand = true; - return (thisCard = card); - } else { - return restCards['$<<'](card) - };}, $$61.$$s = self, $$61.$$arity = 1, $$61)); - self.$debug("restCards", restCards); - return [thisCard, restCards, isTargetCardInHand]; - }, $CardTrader_transferTargetCard$60.$$arity = 4); - - Opal.def(self, '$transferTargetCardToNewMember', $CardTrader_transferTargetCardToNewMember$62 = function $$transferTargetCardToNewMember(destination, thisCard) { - var $a, self = this, isSuccess = nil, placeName = nil, $writer = nil; - - - self.$debug("transferTargetCardToNewMember destination, thisCard", destination, thisCard); - self.$debug("@card_place", self.card_place); - isSuccess = false; - if ($truthy($rb_gt(self.card_place, 0))) { - if ($truthy(/^\d+(.+)/['$=~'](destination))) { - - placeName = $$($nesting, 'Regexp').$last_match(1); - self.$debug("placeName", placeName); - if ($truthy(self.deal_cards['$[]'](placeName))) { - - ($truthy($a = self.deal_cards['$[]'](destination)) ? $a : (($writer = [destination, []]), $send(self.deal_cards, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - self.deal_cards['$[]'](destination)['$<<'](thisCard); - isSuccess = true;};}}; - return isSuccess; - }, $CardTrader_transferTargetCardToNewMember$62.$$arity = 2); - - Opal.def(self, '$sendCardToTargetNickPlaceCommandText', $CardTrader_sendCardToTargetNickPlaceCommandText$63 = function $$sendCardToTargetNickPlaceCommandText(commandText, targetNick) { - var $a, $b, self = this, okCardList = nil, ngCardList = nil, ngCardText = nil; - - - self.$debug("sendCardToTargetNickPlaceCommandText commandText, targetNick", commandText, targetNick); - $b = self.$getSendCardToTargetNickPlace(commandText, targetNick), $a = Opal.to_ary($b), (okCardList = ($a[0] == null ? nil : $a[0])), (ngCardList = ($a[1] == null ? nil : $a[1])), $b; - self.$debug("getSendCardToTargetNickPlace okCardList, ngCardList", okCardList, ngCardList); - if ($truthy($rb_lt(okCardList.$length(), 0))) { - - self.$sendMessage(self.channel, "" + (self.nick_e) + ": 相手が登録されていません"); - return nil;}; - if ($truthy(ngCardList['$empty?']())) { - } else { - - ngCardText = self.$getCardsTextFromCards(ngCardList); - self.$sendMessage(self.channel, "" + "[" + (ngCardText) + "]がありません"); - return nil; - }; - if ($truthy(okCardList['$empty?']())) { - } else { - self.$printRegistCardResult(targetNick, self.$okCards()) - }; - return self.$sendMessageToOnlySender(self.$getHandAndPlaceCardInfoText("Auto")); - }, $CardTrader_sendCardToTargetNickPlaceCommandText$63.$$arity = 2); - - Opal.def(self, '$getSendCardToTargetNickPlace', $CardTrader_getSendCardToTargetNickPlace$64 = function $$getSendCardToTargetNickPlace(commandText, _nick_e) { - var self = this, ngCardList = nil, okCardList = nil, cardset = nil, placeNumber = nil, destination = nil; - if ($gvars.ircNickRegExp == null) $gvars.ircNickRegExp = nil; - - - ngCardList = []; - okCardList = []; - self.$debug("commandText", commandText); - if ($truthy(new RegExp("" + "(c-place(\\d*)(\\[(((,)?" + (self.cardRegExp) + ")*)\\])?)\\s*(" + ($gvars.ircNickRegExp) + ")")['$=~'](commandText))) { - - cardset = $$($nesting, 'Regexp').$last_match(1); - placeNumber = $$($nesting, 'Regexp').$last_match(2).$to_i(); - destination = $$($nesting, 'Regexp').$last_match(7).$upcase(); - self.$getSendCardToTargetNickPlaceByCardSetAndDestination(cardset, placeNumber, destination);}; - return [okCardList, ngCardList]; - }, $CardTrader_getSendCardToTargetNickPlace$64.$$arity = 2); - - Opal.def(self, '$getSendCardToTargetNickPlaceByCardSetAndDestination', $CardTrader_getSendCardToTargetNickPlaceByCardSetAndDestination$65 = function $$getSendCardToTargetNickPlaceByCardSetAndDestination(cardset, placeNumber, destination) { - var $a, $b, self = this, toSend = nil, from = nil, cards = nil, okCardList = nil, ngCardList = nil; - - - self.$debug("getSendCardToTargetNickPlaceByCardSetAndDestination cardset, placeNumber, destination", cardset, placeNumber, destination); - self.$debug("今のところ場が1つしかないので相手の場は決めうち"); - toSend = "" + "1" + (destination); - self.$debug("toSend", toSend); - from = self.nick_e; - if ($truthy($rb_gt(placeNumber, 0))) { - from = "" + (placeNumber) + (from)}; - self.$debug("from", from); - if ($truthy(new RegExp("" + "\\[(" + (self.cardRegExp) + "(," + (self.cardRegExp) + ")*)\\]")['$=~'](cardset))) { - - cards = $$($nesting, 'Regexp').$last_match(1).$split(/,/); - $b = self.$getSendCardToTargetNickPlaceByCards(cards, from, toSend), $a = Opal.to_ary($b), (okCardList = ($a[0] == null ? nil : $a[0])), (ngCardList = ($a[1] == null ? nil : $a[1])), $b;}; - return [okCardList, ngCardList]; - }, $CardTrader_getSendCardToTargetNickPlaceByCardSetAndDestination$65.$$arity = 3); - - Opal.def(self, '$getSendCardToTargetNickPlaceByCards', $CardTrader_getSendCardToTargetNickPlaceByCards$66 = function $$getSendCardToTargetNickPlaceByCards(cards, destination, toSend) {try { - - var $$67, self = this, okCardList = nil, ngCardList = nil; - - - self.$debug("getSendCardToTargetNickPlaceByCards cards, destination, toSend", destination, toSend); - okCardList = []; - ngCardList = []; - $send(cards, 'each', [], ($$67 = function(card){var self = $$67.$$s || this, result = nil, $case = nil; - - - - if (card == null) { - card = nil; - }; - result = self.$transferOneCard(card, destination, toSend); - return (function() {$case = result; - if ($$($nesting, 'NG_RESULT')['$===']($case)) {Opal.ret([-1, "渡す相手が登録されていません"])} - else if ($$($nesting, 'OK_RESULT')['$===']($case)) {return okCardList['$<<'](card)} - else {return ngCardList['$<<'](result)}})();}, $$67.$$s = self, $$67.$$arity = 1, $$67)); - return [okCardList, ngCardList]; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $CardTrader_getSendCardToTargetNickPlaceByCards$66.$$arity = 3); - - Opal.def(self, '$printRegistCardResult', $CardTrader_printRegistCardResult$68 = function $$printRegistCardResult(targetNick, okCards) { - var self = this, cardText = nil; - - - self.$sendMessage(self.channel, "" + (self.nick_e) + ": " + (okCards.$length()) + "枚場に置きました"); - if ($truthy(self.cardTitles['$empty?']())) { - } else { - - cardText = self.$getCardsTextFromCards(okCards); - self.$sendMessage(self.channel, "" + "[" + (cardText) + "]"); - }; - return self.$sendMessage(targetNick, self.$getHandAndPlaceCardInfoText("Auto", targetNick)); - }, $CardTrader_printRegistCardResult$68.$$arity = 2); - - Opal.def(self, '$tapCardCommandText', $CardTrader_tapCardCommandText$69 = function $$tapCardCommandText(commandText) { - var $a, $b, self = this, okList = nil, ngList = nil, isUntap = nil, tapTypeName = nil; - - - self.$debug("tapCardCommandText commandText", commandText); - $b = self.$tapCard(commandText), $a = Opal.to_ary($b), (okList = ($a[0] == null ? nil : $a[0])), (ngList = ($a[1] == null ? nil : $a[1])), (isUntap = ($a[2] == null ? nil : $a[2])), $b; - if ($truthy(okList['$empty?']())) { - } else { - - tapTypeName = (function() {if ($truthy(isUntap)) { - return "アンタップ" - } else { - return "タップ" - }; return nil; })(); - self.$sendMessage(self.channel, "" + (self.nick_e) + ": " + (okList.$length()) + "枚" + (tapTypeName) + "しました"); - if ($truthy(self.cardTitles['$empty?']())) { - } else { - self.$sendMessage(self.channel, "" + "[" + (self.$getCardsTextFromCards(okList)) + "]") - }; - }; - if ($truthy(ngList['$empty?']())) { - } else { - self.$sendMessage(self.channel, "" + "[" + (self.$getCardsTextFromCards(ngList)) + "]は場にありません") - }; - return self.$sendMessageToOnlySender(self.$getHandAndPlaceCardInfoText("Auto", self.nick_e)); - }, $CardTrader_tapCardCommandText$69.$$arity = 1); - - Opal.def(self, '$tapCard', $CardTrader_tapCard$70 = function $$tapCard(command) { - var $a, $b, self = this, okCardList = nil, ngCardList = nil, place = nil, isUntap = nil, cardsText = nil; - - - okCardList = []; - ngCardList = []; - if ($truthy(($truthy($a = self.canTapCard) ? self.card_place : $a))) { - } else { - return [okCardList, ngCardList] - }; - if ($truthy(new RegExp("" + "(c-(un)?tap(\\d+)\\[((,)?" + (self.cardRegExp) + ")+\\])")['$=~'](command))) { - } else { - return [okCardList, ngCardList] - }; - place = $$($nesting, 'Regexp').$last_match(3).$to_i(); - isUntap = $$($nesting, 'Regexp').$last_match(2); - cardsText = $$($nesting, 'Regexp').$last_match(1); - $b = self.$tapCardByCardsTextAndPlace(cardsText, place, isUntap), $a = Opal.to_ary($b), (okCardList = ($a[0] == null ? nil : $a[0])), (ngCardList = ($a[1] == null ? nil : $a[1])), $b; - return [okCardList, ngCardList, isUntap]; - }, $CardTrader_tapCard$70.$$arity = 1); - - Opal.def(self, '$tapCardByCardsTextAndPlace', $CardTrader_tapCardByCardsTextAndPlace$71 = function $$tapCardByCardsTextAndPlace(cardsText, place, isUntap) { - var $$72, self = this, okCardList = nil, ngCardList = nil, cards = nil; - - - okCardList = []; - ngCardList = []; - if ($truthy(new RegExp("" + "\\[(" + (self.cardRegExp) + "(," + (self.cardRegExp) + ")*)\\]")['$=~'](cardsText))) { - - cards = $$($nesting, 'Regexp').$last_match(1).$split(/,/); - $send(cards, 'each', [], ($$72 = function(card){var self = $$72.$$s || this, $a, $b, okCard = nil, ngCard = nil; - - - - if (card == null) { - card = nil; - }; - $b = self.$tapOneCardByCardAndPlace(card, place, isUntap), $a = Opal.to_ary($b), (okCard = ($a[0] == null ? nil : $a[0])), (ngCard = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(okCard['$nil?']())) { - } else { - okCardList['$<<'](okCard) - }; - if ($truthy(ngCard['$nil?']())) { - return nil - } else { - return ngCardList['$<<'](ngCard) - };}, $$72.$$s = self, $$72.$$arity = 1, $$72));}; - return [okCardList, ngCardList]; - }, $CardTrader_tapCardByCardsTextAndPlace$71.$$arity = 3); - - Opal.def(self, '$tapOneCardByCardAndPlace', $CardTrader_tapOneCardByCardAndPlace$73 = function $$tapOneCardByCardAndPlace(card, place, isUntap) { - var self = this, result = nil, nick_e_original = nil, nick_to = nil, destination = nil; - - - card = card.$upcase(); - result = ""; - nick_e_original = self.nick_e; - self.nick_e = self.nick_e.$upcase(); - nick_to = ""; - if ($truthy(isUntap)) { - - destination = "" + ($rb_minus($rb_times(place, 2), 1)) + (self.nick_e); - nick_to = "" + ($rb_times(place, 2)) + (self.nick_e); - } else { - - destination = "" + ($rb_times(place, 2)) + (self.nick_e); - nick_to = "" + ($rb_minus($rb_times(place, 2), 1)) + (self.nick_e); - }; - result = self.$transferOneCard(card, nick_to, destination); - self.nick_e = nick_e_original; - if (result['$==']($$($nesting, 'OK_RESULT'))) { - return [card, nil] - } else { - return [nil, card] - }; - }, $CardTrader_tapOneCardByCardAndPlace$73.$$arity = 3); - - Opal.def(self, '$printMilStoneResult', $CardTrader_printMilStoneResult$74 = function $$printMilStoneResult(commandText) { - var $a, $b, self = this, count = nil, output_msg = nil; - - - $b = self.$getCardMilstone(commandText), $a = Opal.to_ary($b), (count = ($a[0] == null ? nil : $a[0])), (output_msg = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy($rb_gt(count, 0))) { - return self.$sendMessage(self.channel, "" + (self.nick_e) + ": " + (self.$getCardsText(output_msg)) + "が出ました") - } else { - return self.$sendMessage(self.channel, "カードが残っていません") - }; - }, $CardTrader_printMilStoneResult$74.$$arity = 1); - - Opal.def(self, '$getCardMilstone', $CardTrader_getCardMilstone$75 = function $$getCardMilstone(commandText) { - var $a, $b, self = this, command = nil, count = nil, cards = nil, text = nil, cardInfo = nil, okCount = nil, ngCount = nil; - - - command = "c-draw"; - count = 0; - if ($truthy(/\[(\d+)\]/['$=~'](commandText))) { - - count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - command = $rb_plus(command, "" + "[" + (count) + "]");}; - cards = self.$drawCard(command); - self.$debug("cards", cards); - text = ""; - if ($truthy(cards['$empty?']()['$!']())) { - - cardInfo = self.$getCardsTextFromCards(cards); - $b = self.$discardCards("" + "c-discard[" + (cardInfo) + "]"), $a = Opal.to_ary($b), (okCount = ($a[0] == null ? nil : $a[0])), (ngCount = ($a[1] == null ? nil : $a[1])), (text = ($a[2] == null ? nil : $a[2])), $b; - self.$debug("discardCards okCount, ngCount, text", okCount, ngCount, text); - count = okCount; - } else { - count = 0 - }; - self.$debug("count", count); - self.$debug("cardInfo", cardInfo); - return [count, cardInfo]; - }, $CardTrader_getCardMilstone$75.$$arity = 1); - - Opal.def(self, '$clearAllPlaceAllPlayerCards', $CardTrader_clearAllPlaceAllPlayerCards$76 = function $$clearAllPlaceAllPlayerCards() { - var $$77, self = this; - - - $send(self.deal_cards, 'each', [], ($$77 = function(place, cards){var self = $$77.$$s || this; - - - - if (place == null) { - place = nil; - }; - - if (cards == null) { - cards = nil; - }; - return self.$clearAllPlayerCardsWhenPlayedPlace(place, cards);}, $$77.$$s = self, $$77.$$arity = 2, $$77)); - return "場のカードを捨てました"; - }, $CardTrader_clearAllPlaceAllPlayerCards$76.$$arity = 0); - - Opal.def(self, '$clearAllPlayerCardsWhenPlayedPlace', $CardTrader_clearAllPlayerCardsWhenPlayedPlace$78 = function $$clearAllPlayerCardsWhenPlayedPlace(place, cards) { - var self = this; - - if ($truthy(place['$=~'](/^\d+/))) { - return self.$clearAllPlayerCards(place, cards) - } else { - return nil - } - }, $CardTrader_clearAllPlayerCardsWhenPlayedPlace$78.$$arity = 2); - - Opal.def(self, '$clearAllPlayerCards', $CardTrader_clearAllPlayerCards$79 = function $$clearAllPlayerCards(place, cards) { - var $a, self = this, cardset = nil, $writer = nil; - - - cardset = cards.$join(","); - self.$discardCards("" + "c-discard[" + (cardset) + "]", place); - ($truthy($a = self.deal_cards['$[]'](place)) ? $a : (($writer = [place, []]), $send(self.deal_cards, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - return self.deal_cards['$[]'](place).$clear(); - }, $CardTrader_clearAllPlayerCards$79.$$arity = 2); - - Opal.def(self, '$returnCards', $CardTrader_returnCards$80 = function $$returnCards() { - var $a, self = this, $writer = nil, cards = nil; - - - ($truthy($a = self.deal_cards['$[]']("card_played")) ? $a : (($writer = ["card_played", []]), $send(self.deal_cards, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - cards = self.deal_cards['$[]']("card_played"); - while ($truthy(cards['$empty?']()['$!']())) { - self.cardRest.$push(cards.$shift()) - }; - return "捨て札を山に戻しました"; - }, $CardTrader_returnCards$80.$$arity = 0); - - Opal.def(self, '$getBurriedCard', $CardTrader_getBurriedCard$81 = function $$getBurriedCard() { - var $a, self = this, $writer = nil, cards = nil; - - - ($truthy($a = self.deal_cards['$[]']("card_played")) ? $a : (($writer = ["card_played", []]), $send(self.deal_cards, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - cards = self.deal_cards['$[]']("card_played"); - return cards.$length(); - }, $CardTrader_getBurriedCard$81.$$arity = 0); - - Opal.def(self, '$reviewCards', $CardTrader_reviewCards$82 = function $$reviewCards() { - var self = this; - - return self.cardRest.$join(",") - }, $CardTrader_reviewCards$82.$$arity = 0); - - Opal.def(self, '$getAllCardLocation', $CardTrader_getAllCardLocation$83 = function $$getAllCardLocation() { - var $$84, self = this, allText = nil, allPlaceText = nil; - - - allText = "" + "山札:" + (self.cardRest.$length()) + "枚 捨札:" + (self.$getBurriedCard()) + "枚"; - allPlaceText = ""; - $send(self.deal_cards, 'each', [], ($$84 = function(place, cards){var self = $$84.$$s || this, $a, $b, text = nil, placeText = nil; - - - - if (place == null) { - place = nil; - }; - - if (cards == null) { - cards = nil; - }; - if (place['$==']("card_played")) { - return nil;}; - $b = self.$getCardLocationOnPlace(place, cards), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (placeText = ($a[1] == null ? nil : $a[1])), $b; - allText = $rb_plus(allText, text); - return (allPlaceText = $rb_plus(allPlaceText, placeText));}, $$84.$$s = self, $$84.$$arity = 2, $$84)); - return [allText, allPlaceText]; - }, $CardTrader_getAllCardLocation$83.$$arity = 0); - - Opal.def(self, '$getCardLocationOnPlace', $CardTrader_getCardLocationOnPlace$85 = function $$getCardLocationOnPlace(place, cards) { - var self = this, text = nil, placeText = nil, placeNumber = nil, cnick = nil; - if ($gvars.ircNickRegExp == null) $gvars.ircNickRegExp = nil; - - - text = ""; - placeText = ""; - if ($truthy(place['$=~'](new RegExp("" + "^(\\d+)(" + ($gvars.ircNickRegExp) + ")")))) { - - placeNumber = $$($nesting, 'Regexp').$last_match(1); - cnick = $$($nesting, 'Regexp').$last_match(2); - placeText = self.$getCardLocationOnNumberdPlace(cards, placeNumber, cnick); - } else { - text = "" + " " + (place) + ":" + (cards.$length()) + "枚" - }; - return [text, placeText]; - }, $CardTrader_getCardLocationOnPlace$85.$$arity = 2); - - Opal.def(self, '$getCardLocationOnNumberdPlace', $CardTrader_getCardLocationOnNumberdPlace$86 = function $$getCardLocationOnNumberdPlace(cards, placeNumber, cnick) { - var self = this, cardText = nil; - - - cardText = self.$getCardsText(cards); - if ($truthy(self.$isTapCardPlace(placeNumber))) { - return "" + " " + (cnick) + "のタップした場札:" + (cardText) - } else { - return "" + " " + (cnick) + "の場札:" + (cardText) - }; - }, $CardTrader_getCardLocationOnNumberdPlace$86.$$arity = 3); - - Opal.def(self, '$getHandAndPlaceCardInfoText', $CardTrader_getHandAndPlaceCardInfoText$87 = function $$getHandAndPlaceCardInfoText(str, destination) { - var self = this, hand = nil, place = nil; - - - - if (destination == null) { - destination = nil; - }; - self.$debug("getHandAndPlaceCardInfoText(str, destination)", str, destination); - if ($truthy(destination['$nil?']())) { - destination = self.nick_e}; - destination = destination.$upcase(); - hand = self.$getHandCardInfoText(destination); - self.$debug("hand", hand); - place = self.$getPlaceCardInfoText(destination); - self.$debug("place", place); - return $rb_plus(hand, place); - }, $CardTrader_getHandAndPlaceCardInfoText$87.$$arity = -2); - - Opal.def(self, '$getHandCardInfoText', $CardTrader_getHandCardInfoText$88 = function $$getHandCardInfoText(destination) { - var self = this, out_msg = nil; - - - destination = destination.$upcase(); - self.$debug("getHandCardInfoText destination", destination); - out_msg = self.$getDealCardsText(destination); - if ($truthy(out_msg['$empty?']())) { - out_msg = "カードを持っていません"}; - return out_msg; - }, $CardTrader_getHandCardInfoText$88.$$arity = 1); - - Opal.def(self, '$getDealCardsText', $CardTrader_getDealCardsText$89 = function $$getDealCardsText(destination) { - var self = this, cards = nil, cardsText = nil; - - - self.$debug("getDealCardsText destination", destination); - cards = self.deal_cards['$[]'](destination); - self.$debug("@deal_cards", self.deal_cards); - self.$debug("getDealCardsText cards", cards); - if ($truthy(cards['$nil?']())) { - return ""}; - cardsText = self.$getCardsTextFromCards(cards); - return "" + "[ " + (cardsText) + " ]"; - }, $CardTrader_getDealCardsText$89.$$arity = 1); - - Opal.def(self, '$compareCard', $CardTrader_compareCard$90 = function $$compareCard(a, b) { - var self = this; - - if ($truthy(a['$=~'](/[^\d]/))) { - return self.$compareCardByCardNumber(a, b) - } else { - return a['$<=>'](b) - } - }, $CardTrader_compareCard$90.$$arity = 2); - - Opal.def(self, '$compareCardByCardNumber', $CardTrader_compareCardByCardNumber$91 = function $$compareCardByCardNumber(a, b) { - var self = this, a1 = nil, a2 = nil, b1 = nil, b2 = nil, result = nil; - - - /([^\d]+)(\d+)/['$=~'](a); - a1 = $$($nesting, 'Regexp').$last_match(1); - a2 = $$($nesting, 'Regexp').$last_match(2); - /([^\d]+)(\d+)/['$=~'](b); - b1 = $$($nesting, 'Regexp').$last_match(1); - b2 = $$($nesting, 'Regexp').$last_match(2); - result = [a1, a2]['$<=>']([b1, b2]); - return result; - }, $CardTrader_compareCardByCardNumber$91.$$arity = 2); - - Opal.def(self, '$getPlaceCardInfoText', $CardTrader_getPlaceCardInfoText$92 = function $$getPlaceCardInfoText(destination) { - var $$93, self = this, out_msg = nil, place_max = nil; - - - destination = destination.$upcase(); - out_msg = ""; - if ($truthy($rb_gt(self.card_place, 0))) { - } else { - return out_msg - }; - place_max = self.card_place; - if ($truthy(self.canTapCard)) { - place_max = $rb_times(place_max, 2)}; - self.$debug("place_max", place_max); - $send(place_max, 'times', [], ($$93 = function(i){var self = $$93.$$s || this, $a, index = nil, dealCardsKey = nil, cards = nil, cardsText = nil; - if (self.deal_cards == null) self.deal_cards = nil; - - - - if (i == null) { - i = nil; - }; - index = $rb_plus(i, 1); - dealCardsKey = "" + (index) + (destination); - self.$debug("dealCardsKey", dealCardsKey); - cards = self.deal_cards['$[]'](dealCardsKey); - cards = ($truthy($a = cards) ? $a : []); - cardsText = self.$getCardsTextFromCards(cards); - if ($truthy(self.$isTapCardPlace(index))) { - return (out_msg = $rb_plus(out_msg, "" + " タップした場札:[ " + (cardsText) + " ]")) - } else { - return (out_msg = $rb_plus(out_msg, "" + " 場札:[ " + (cardsText) + " ]")) - };}, $$93.$$s = self, $$93.$$arity = 1, $$93)); - return out_msg; - }, $CardTrader_getPlaceCardInfoText$92.$$arity = 1); - - Opal.def(self, '$getCardsText', $CardTrader_getCardsText$94 = function $$getCardsText(cardsText) { - var self = this, cards = nil; - - - cards = cardsText.$split(/,/); - return self.$getCardsTextFromCards(cards); - }, $CardTrader_getCardsText$94.$$arity = 1); - - Opal.def(self, '$getCardsTextFromCards', $CardTrader_getCardsTextFromCards$95 = function $$getCardsTextFromCards(cards) { - var $$96, $$97, self = this, out_msg = nil; - if ($gvars.isHandSort == null) $gvars.isHandSort = nil; - - - if ($truthy($gvars.isHandSort)) { - cards = $send(cards, 'sort', [], ($$96 = function(a, b){var self = $$96.$$s || this; - - - - if (a == null) { - a = nil; - }; - - if (b == null) { - b = nil; - }; - return self.$compareCard(a, b);}, $$96.$$s = self, $$96.$$arity = 2, $$96))}; - if ($truthy(self.cardTitles['$empty?']())) { - return cards.$join(",")}; - out_msg = ""; - $send(cards, 'each', [], ($$97 = function(cardNumber){var self = $$97.$$s || this, title = nil; - if (self.cardTitles == null) self.cardTitles = nil; - - - - if (cardNumber == null) { - cardNumber = nil; - }; - if ($truthy(out_msg['$!='](""))) { - out_msg = $rb_plus(out_msg, ",")}; - title = self.cardTitles['$[]'](cardNumber); - return (out_msg = $rb_plus(out_msg, "" + (cardNumber) + "-" + (title)));}, $$97.$$s = self, $$97.$$arity = 1, $$97)); - if (out_msg['$==']("")) { - out_msg = "無し"}; - return out_msg; - }, $CardTrader_getCardsTextFromCards$95.$$arity = 1); - - Opal.def(self, '$isTapCardPlace', $CardTrader_isTapCardPlace$98 = function $$isTapCardPlace(index) { - var self = this; - - - if ($truthy(self.canTapCard)) { - } else { - return false - }; - return index['$even?'](); - }, $CardTrader_isTapCardPlace$98.$$arity = 1); - - Opal.def(self, '$printCardRestorationSpellResult', $CardTrader_printCardRestorationSpellResult$99 = function $$printCardRestorationSpellResult(spellText) { - var self = this, output_msg = nil; - - - output_msg = self.$throwCardRestorationSpell(spellText); - if (output_msg['$==']("readSpell")) { - return self.$sendMessage(self.channel, "" + (self.nick_e) + ": カード配置を復活しました") - } else { - return self.$sendMessage(self.channel, output_msg) - }; - }, $CardTrader_printCardRestorationSpellResult$99.$$arity = 1); - - Opal.def(self, '$throwCardRestorationSpell', $CardTrader_throwCardRestorationSpell$100 = function $$throwCardRestorationSpell(spellText) { - var self = this, output = nil; - - - output = "0"; - self.$debug("spellText", spellText); - if ($truthy(spellText['$nil?']())) { - - self.$debug("getNewSpellText"); - spellText = self.$getNewSpellText(); - output = "" + "復活の呪文 > [" + (spellText) + "]"; - } else { - - self.$debug("setNewSpellText"); - output = self.$setNewSpellText(spellText); - }; - self.$debug("throwCardRestorationSpell output", output); - return output; - }, $CardTrader_throwCardRestorationSpell$100.$$arity = 1); - - Opal.def(self, '$getNewSpellText', $CardTrader_getNewSpellText$101 = function $$getNewSpellText() { - var self = this, textList = nil, placeNames = nil, spellWords = nil; - - - self.$debug("getNewSpellText begin"); - textList = []; - placeNames = self.deal_cards.$keys().$sort(); - textList['$<<'](placeNames); - spellWords = self.$getSpellWords(); - textList['$<<'](spellWords); - return textList.$join(","); - }, $CardTrader_getNewSpellText$101.$$arity = 0); - - Opal.def(self, '$getSpellWords', $CardTrader_getSpellWords$102 = function $$getSpellWords() { - var $$103, self = this, spellWords = nil; - - - spellWords = ""; - $send(self.card_val, 'each', [], ($$103 = function(card){var self = $$103.$$s || this, index = nil, indexWord = nil; - - - - if (card == null) { - card = nil; - }; - index = self.$getDealCardIndex(card); - indexWord = self.$getIndexWord(index); - return spellWords['$<<'](indexWord);}, $$103.$$s = self, $$103.$$arity = 1, $$103)); - spellWords = self.$shrinkSpellWords(spellWords); - return spellWords; - }, $CardTrader_getSpellWords$102.$$arity = 0); - - Opal.def(self, '$getIndexWord', $CardTrader_getIndexWord$104 = function $$getIndexWord(index) { - var self = this; - - return self.card_spell['$[]']($rb_plus(index, 1)) - }, $CardTrader_getIndexWord$104.$$arity = 1); - - Opal.def(self, '$getDealCardIndex', $CardTrader_getDealCardIndex$105 = function $$getDealCardIndex(card) {try { - - var $$106, self = this; - - - $send(self.deal_cards.$keys().$sort(), 'each_with_index', [], ($$106 = function(place, index){var self = $$106.$$s || this, cards = nil; - if (self.deal_cards == null) self.deal_cards = nil; - - - - if (place == null) { - place = nil; - }; - - if (index == null) { - index = nil; - }; - cards = self.deal_cards['$[]'](place); - if ($truthy(cards['$include?'](card))) { - Opal.ret(index) - } else { - return nil - };}, $$106.$$s = self, $$106.$$arity = 2, $$106)); - return -1; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $CardTrader_getDealCardIndex$105.$$arity = 1); - - Opal.def(self, '$shrinkSpellWords', $CardTrader_shrinkSpellWords$107 = function $$shrinkSpellWords(spellWords) { - var $$108, self = this; - - - $send(self.card_spell, 'each', [], ($$108 = function(word){var self = $$108.$$s || this, $$109; - - - - if (word == null) { - word = nil; - }; - return (spellWords = $send(spellWords, 'gsub', [new RegExp("" + (word) + "(" + (word) + "+)")], ($$109 = function(){var self = $$109.$$s || this; - - return $rb_plus(word, $rb_plus($$($nesting, 'Regexp').$last_match(1).$length(), 1).$to_s())}, $$109.$$s = self, $$109.$$arity = 0, $$109)));}, $$108.$$s = self, $$108.$$arity = 1, $$108)); - return spellWords; - }, $CardTrader_shrinkSpellWords$107.$$arity = 1); - - Opal.def(self, '$setNewSpellText', $CardTrader_setNewSpellText$110 = function $$setNewSpellText(spellText) { - var $$111, self = this, textList = nil, spellWords = nil, placeNames = nil; - - - self.$shuffleCards(); - textList = spellText.$split(","); - spellWords = textList.$pop(); - placeNames = textList; - self.$debug("placeNames", placeNames); - self.$debug("spellWords", spellWords); - spellWords = self.$expandSpellWords(spellWords); - self.$debug("expanded spellWords", spellWords); - $send(placeNames, 'each_with_index', [], ($$111 = function(place, index){var self = $$111.$$s || this, indexWord = nil, cards = nil, $writer = nil; - if (self.deal_cards == null) self.deal_cards = nil; - - - - if (place == null) { - place = nil; - }; - - if (index == null) { - index = nil; - }; - indexWord = self.$getIndexWord(index); - cards = self.$getCardsFromIndexWordAndSpellText(indexWord, spellWords); - - $writer = [place, cards]; - $send(self.deal_cards, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];;}, $$111.$$s = self, $$111.$$arity = 2, $$111)); - self.$debug("setNewSpellText @deal_cards", self.deal_cards); - return "readSpell"; - }, $CardTrader_setNewSpellText$110.$$arity = 1); - - Opal.def(self, '$expandSpellWords', $CardTrader_expandSpellWords$112 = function $$expandSpellWords(spellWords) { - var $$113, self = this; - - - $send(self.card_spell, 'each', [], ($$113 = function(word){var self = $$113.$$s || this, $$114; - - - - if (word == null) { - word = nil; - }; - return (spellWords = $send(spellWords, 'gsub', [new RegExp("" + (word) + "(\\d+)")], ($$114 = function(){var self = $$114.$$s || this; - - return $rb_times(word, $$($nesting, 'Regexp').$last_match(1).$to_i())}, $$114.$$s = self, $$114.$$arity = 0, $$114)));}, $$113.$$s = self, $$113.$$arity = 1, $$113)); - return spellWords; - }, $CardTrader_expandSpellWords$112.$$arity = 1); - return (Opal.def(self, '$getCardsFromIndexWordAndSpellText', $CardTrader_getCardsFromIndexWordAndSpellText$115 = function $$getCardsFromIndexWordAndSpellText(indexWord, spellText) { - var $$116, self = this, cards = nil; - - - cards = []; - $send(spellText.$split(/(?:)/), 'each_with_index', [], ($$116 = function(word, index){var self = $$116.$$s || this, $$117, card = nil, isDelete = nil; - if (self.card_val == null) self.card_val = nil; - if (self.cardRest == null) self.cardRest = nil; - - - - if (word == null) { - word = nil; - }; - - if (index == null) { - index = nil; - }; - if (indexWord['$=='](word)) { - } else { - return nil; - }; - card = self.card_val['$[]'](index); - isDelete = $send(self.cardRest, 'delete_if', [], ($$117 = function(i){var self = $$117.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](card);}, $$117.$$s = self, $$117.$$arity = 1, $$117)); - if ($truthy(isDelete)) { - } else { - return nil; - }; - return cards['$<<'](card);}, $$116.$$s = self, $$116.$$arity = 2, $$116)); - return cards; - }, $CardTrader_getCardsFromIndexWordAndSpellText$115.$$arity = 2), nil) && 'getCardsFromIndexWordAndSpellText'; - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["fileutils"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice; - - return nil -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["TableFileData"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send, $gvars = Opal.gvars; - - Opal.add_stubs(['$require', '$new', '$searchTableFileDefine', '$[]=', '$-', '$include?', '$<<', '$merge!', '$nil?', '$exist?', '$directory?', '$glob', '$each', '$readGameCommandInfo', '$[]', '$empty?', '$basename', '$===', '$last_match', '$+', '$readOneTableData', '$=~', '$split', '$shift', '$getDiceAndTitle', '$getLineKeyValue', '$to_i', '$class', '$keys', '$isTargetGameType', '$!', '$changeEnterCode', '$gsub', '$==', '$getTableDataFromFile', '$getTableFileName', '$checkFile', '$getTableText', '$createFile', '$checkFileNotExist', '$raise', '$initCommand', '$checkCommand', '$is_a?', '$getFormatedTableText', '$each_with_index', '$tr!', '$checkTableKey', '$toutf8', '$open', '$write', '$checkFileWhenFileNameNotChanged', '$checkFileWhenFileNameChanged', '$checkFileExist', '$mv']); - - self.$require("fileutils"); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'TableFileData'); - - var $nesting = [self].concat($parent_nesting), $TableFileData_initialize$1, $TableFileData_setVirtualTableData$2, $TableFileData_setDir$3, $TableFileData_searchTableFileDefine$4, $TableFileData_readGameCommandInfo$6, $TableFileData_getAllTableInfo$7, $TableFileData_getGameCommandInfos$9, $TableFileData_getTableDataFromFile$11, $TableFileData_getLineKeyValue$13, $TableFileData_getLineKeyValue$14, $TableFileData_getDiceAndTitle$15, $TableFileData_getTableData$16, $TableFileData_changeEnterCode$18, $TableFileData_isTargetGameType$20, $TableFileData_readOneTableData$21; - - self.$$prototype.dir = self.$$prototype.dirs = self.$$prototype.tableData = nil; - - (Opal.class_variable_set($nesting[0], '@@virtualTableData', $$($nesting, 'Hash').$new())); - - Opal.def(self, '$initialize', $TableFileData_initialize$1 = function $$initialize(isLoadCommonTable) { - var $a, self = this; - - - - if (isLoadCommonTable == null) { - isLoadCommonTable = true; - }; - self.dirs = []; - self.tableData = $hash2([], {}); - if ($truthy(isLoadCommonTable)) { - } else { - return nil - }; - self.dir = "./"; - self.tableData = self.$searchTableFileDefine(self.dir); - return (self.tableData = (($a = $nesting[0].$$cvars['@@virtualTableData']) == null ? nil : $a)); - }, $TableFileData_initialize$1.$$arity = -1); - Opal.defs(self, '$setVirtualTableData', $TableFileData_setVirtualTableData$2 = function $$setVirtualTableData(hash, gameType, command, lines) { - var $a, self = this, $writer = nil; - - - $writer = [hash, $hash2(["fileName", "gameType", "command", "lines"], {"fileName": "" + (hash) + ".txt", "gameType": gameType, "command": command, "lines": lines})]; - $send((($a = $nesting[0].$$cvars['@@virtualTableData']) == null ? nil : $a), '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)]; - }, $TableFileData_setVirtualTableData$2.$$arity = 4); - - Opal.def(self, '$setDir', $TableFileData_setDir$3 = function $$setDir(dir, prefix) { - var self = this, tableData = nil; - - - - if (prefix == null) { - prefix = ""; - }; - if ($truthy(self.dirs['$include?'](dir))) { - return nil}; - self.dirs['$<<'](dir); - tableData = self.$searchTableFileDefine(dir, prefix); - return self.tableData['$merge!'](tableData); - }, $TableFileData_setDir$3.$$arity = -2); - - Opal.def(self, '$searchTableFileDefine', $TableFileData_searchTableFileDefine$4 = function $$searchTableFileDefine(dir, prefix) { - var $$5, self = this, tableData = nil, fileNames = nil; - - - - if (prefix == null) { - prefix = ""; - }; - tableData = $hash2([], {}); - if ($truthy(dir['$nil?']())) { - return tableData}; - if ($truthy($$($nesting, 'File')['$exist?'](dir))) { - } else { - return tableData - }; - if ($truthy($$($nesting, 'File')['$directory?'](dir))) { - } else { - return tableData - }; - fileNames = $$($nesting, 'Dir').$glob("" + (dir) + "/" + (prefix) + "*.txt"); - $send(fileNames, 'each', [], ($$5 = function(fileName){var self = $$5.$$s || this, $a, info = nil, gameType = nil, command = nil, $writer = nil; - - - - if (fileName == null) { - fileName = nil; - }; - info = self.$readGameCommandInfo(fileName, prefix); - gameType = info['$[]']("gameType"); - gameType = ($truthy($a = gameType) ? $a : ""); - command = info['$[]']("command"); - if ($truthy(command['$empty?']())) { - return nil;}; - - $writer = ["" + (gameType) + "_" + (command), info]; - $send(tableData, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];;}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - return tableData; - }, $TableFileData_searchTableFileDefine$4.$$arity = -2); - - Opal.def(self, '$readGameCommandInfo', $TableFileData_readGameCommandInfo$6 = function $$readGameCommandInfo(fileName, prefix) { - var self = this, info = nil, baseName = nil, $case = nil, $writer = nil; - - - info = $hash2(["fileName", "gameType", "command"], {"fileName": fileName, "gameType": "", "command": ""}); - baseName = $$($nesting, 'File').$basename(fileName, ".txt"); - $case = baseName; - if (new RegExp("" + "^" + (prefix) + "(.+)_(.+)_(.+)$")['$===']($case)) { - - $writer = ["command", $$($nesting, 'Regexp').$last_match(3)]; - $send(info, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = ["gameType", $rb_plus($rb_plus($$($nesting, 'Regexp').$last_match(1), ":"), $$($nesting, 'Regexp').$last_match(2))]; - $send(info, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];;} - else if (new RegExp("" + "^" + (prefix) + "(.+)_(.+)$")['$===']($case)) { - - $writer = ["command", $$($nesting, 'Regexp').$last_match(2)]; - $send(info, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = ["gameType", $$($nesting, 'Regexp').$last_match(1)]; - $send(info, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];;} - else if (new RegExp("" + "^" + (prefix) + "(.+)$")['$===']($case)) { - - $writer = ["command", $$($nesting, 'Regexp').$last_match(1)]; - $send(info, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = ["gameType", ""]; - $send(info, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];;}; - return info; - }, $TableFileData_readGameCommandInfo$6.$$arity = 2); - - Opal.def(self, '$getAllTableInfo', $TableFileData_getAllTableInfo$7 = function $$getAllTableInfo() { - var $$8, self = this, result = nil; - - - result = []; - $send(self.tableData, 'each', [], ($$8 = function(_key, oneTableData){var self = $$8.$$s || this, tableData = nil; - - - - if (_key == null) { - _key = nil; - }; - - if (oneTableData == null) { - oneTableData = nil; - }; - tableData = self.$readOneTableData(oneTableData); - return result['$<<'](tableData);}, $$8.$$s = self, $$8.$$arity = 2, $$8)); - return result; - }, $TableFileData_getAllTableInfo$7.$$arity = 0); - - Opal.def(self, '$getGameCommandInfos', $TableFileData_getGameCommandInfos$9 = function $$getGameCommandInfos() { - var $$10, self = this, commandInfos = nil; - - - commandInfos = []; - $send(self.tableData, 'each', [], ($$10 = function(_command, info){var self = $$10.$$s || this, commandInfo = nil; - - - - if (_command == null) { - _command = nil; - }; - - if (info == null) { - info = nil; - }; - commandInfo = $hash2(["gameType", "command"], {"gameType": info['$[]']("gameType"), "command": info['$[]']("command")}); - return commandInfos['$<<'](commandInfo);}, $$10.$$s = self, $$10.$$arity = 2, $$10)); - return commandInfos; - }, $TableFileData_getGameCommandInfos$9.$$arity = 0); - - Opal.def(self, '$getTableDataFromFile', $TableFileData_getTableDataFromFile$11 = function $$getTableDataFromFile(fileName) { - var $a, $b, $$12, self = this, table = nil, lines = nil, data = nil, defineLine = nil, dice = nil, title = nil; - - - table = []; - lines = []; - if ($truthy(/(.+)\.txt$/['$=~'](fileName))) { - - data = self.tableData['$[]']((($a = $gvars['~']) === nil ? nil : $a['$[]'](1))); - if ($truthy(data['$nil?']())) { - } else { - lines = data['$[]']("lines").$split("\n") - };}; - defineLine = lines.$shift(); - $b = self.$getDiceAndTitle(defineLine), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (title = ($a[1] == null ? nil : $a[1])), $b; - $send(lines, 'each', [], ($$12 = function(line){var self = $$12.$$s || this, $c, $d, key = nil, value = nil; - - - - if (line == null) { - line = nil; - }; - $d = self.$getLineKeyValue(line), $c = Opal.to_ary($d), (key = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - if ($truthy(key['$empty?']())) { - return nil;}; - key = key.$to_i(); - return table['$<<']([key, value]);}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - return [dice, title, table]; - }, $TableFileData_getTableDataFromFile$11.$$arity = 1); - - Opal.def(self, '$getLineKeyValue', $TableFileData_getLineKeyValue$13 = function $$getLineKeyValue(line) { - var self = this; - - return self.$class().$getLineKeyValue(line) - }, $TableFileData_getLineKeyValue$13.$$arity = 1); - Opal.defs(self, '$getLineKeyValue', $TableFileData_getLineKeyValue$14 = function $$getLineKeyValue(line) { - var self = this, key = nil, value = nil; - - - if ($truthy(/^[\s ]*([^::]+)[\s ]*[::][\s ]*(.+)/['$==='](line))) { - } else { - return ["", ""] - }; - key = $$($nesting, 'Regexp').$last_match(1); - value = $$($nesting, 'Regexp').$last_match(2); - return [key, value]; - }, $TableFileData_getLineKeyValue$14.$$arity = 1); - - Opal.def(self, '$getDiceAndTitle', $TableFileData_getDiceAndTitle$15 = function $$getDiceAndTitle(line) { - var $a, $b, self = this, dice = nil, title = nil; - - - $b = self.$getLineKeyValue(line), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (title = ($a[1] == null ? nil : $a[1])), $b; - return [dice, title]; - }, $TableFileData_getDiceAndTitle$15.$$arity = 1); - - Opal.def(self, '$getTableData', $TableFileData_getTableData$16 = function $$getTableData(arg, targetGameType) { - var $$17, self = this, oneTableData = nil, isSecret = nil, dice = nil, title = nil, table = nil; - - - oneTableData = $hash2([], {}); - isSecret = false; - (function(){var $brk = Opal.new_brk(); try {return $send(self.tableData.$keys(), 'each', [], ($$17 = function(fileName){var self = $$17.$$s || this, key = nil, data = nil, gameType = nil; - if (self.tableData == null) self.tableData = nil; - - - - if (fileName == null) { - fileName = nil; - }; - if ($truthy(/.*_(.+)/['$==='](fileName))) { - } else { - return nil; - }; - key = $$($nesting, 'Regexp').$last_match(1); - if ($truthy(new RegExp("" + "^(s|S)?" + (key) + "(\\s|$)", 'i')['$==='](arg))) { - } else { - return nil; - }; - data = self.tableData['$[]'](fileName); - gameType = data['$[]']("gameType"); - if ($truthy(self.$isTargetGameType(gameType, targetGameType))) { - } else { - return nil; - }; - oneTableData = data; - isSecret = $$($nesting, 'Regexp').$last_match(1)['$nil?']()['$!'](); - - Opal.brk(nil, $brk);}, $$17.$$s = self, $$17.$$brk = $brk, $$17.$$arity = 1, $$17)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - self.$readOneTableData(oneTableData); - dice = oneTableData['$[]']("dice"); - title = oneTableData['$[]']("title"); - table = oneTableData['$[]']("table"); - table = self.$changeEnterCode(table); - return [dice, title, table, isSecret]; - }, $TableFileData_getTableData$16.$$arity = 2); - - Opal.def(self, '$changeEnterCode', $TableFileData_changeEnterCode$18 = function $$changeEnterCode(table) { - var $$19, self = this, newTable = nil; - - - newTable = $hash2([], {}); - if ($truthy(table['$nil?']())) { - return newTable}; - $send(table, 'each', [], ($$19 = function(key, value){var self = $$19.$$s || this, $writer = nil; - - - - if (key == null) { - key = nil; - }; - - if (value == null) { - value = nil; - }; - value = value.$gsub(/\\n/, "\n"); - value = value.$gsub(/\\\n/, "\\n"); - - $writer = [key, value]; - $send(newTable, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];;}, $$19.$$s = self, $$19.$$arity = 2, $$19)); - return newTable; - }, $TableFileData_changeEnterCode$18.$$arity = 1); - - Opal.def(self, '$isTargetGameType', $TableFileData_isTargetGameType$20 = function $$isTargetGameType(gameType, targetGameType) { - var self = this; - - - if ($truthy(gameType['$empty?']())) { - return true}; - return gameType['$=='](targetGameType); - }, $TableFileData_isTargetGameType$20.$$arity = 2); - return (Opal.def(self, '$readOneTableData', $TableFileData_readOneTableData$21 = function $$readOneTableData(oneTableData) { - var $a, $b, self = this, command = nil, gameType = nil, fileName = nil, dice = nil, title = nil, table = nil, $writer = nil; - - - if ($truthy(oneTableData['$nil?']())) { - return nil}; - if ($truthy(oneTableData['$[]']("table")['$nil?']())) { - } else { - return nil - }; - command = oneTableData['$[]']("command"); - gameType = oneTableData['$[]']("gameType"); - fileName = oneTableData['$[]']("fileName"); - if ($truthy(command['$nil?']())) { - return nil}; - $b = self.$getTableDataFromFile(fileName), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (title = ($a[1] == null ? nil : $a[1])), (table = ($a[2] == null ? nil : $a[2])), $b; - - $writer = ["dice", dice]; - $send(oneTableData, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = ["title", title]; - $send(oneTableData, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = ["table", table]; - $send(oneTableData, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return oneTableData; - }, $TableFileData_readOneTableData$21.$$arity = 1), nil) && 'readOneTableData'; - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'TableFileCreator'); - - var $nesting = [self].concat($parent_nesting), $TableFileCreator_initialize$22, $TableFileCreator_execute$23, $TableFileCreator_checkFile$24, $TableFileCreator_checkFileNotExist$25, $TableFileCreator_checkFileExist$26, $TableFileCreator_getTableFileName$27, $TableFileCreator_initCommand$28, $TableFileCreator_checkCommand$29, $TableFileCreator_getTableText$30, $TableFileCreator_getFormatedTableText$31, $TableFileCreator_checkTableKey$33, $TableFileCreator_createFile$34; - - self.$$prototype.params = self.$$prototype.command = self.$$prototype.dir = self.$$prototype.prefix = nil; - - - Opal.def(self, '$initialize', $TableFileCreator_initialize$22 = function $$initialize(dir, prefix, params) { - var self = this; - - - self.dir = dir; - self.prefix = prefix; - return (self.params = params); - }, $TableFileCreator_initialize$22.$$arity = 3); - - Opal.def(self, '$execute', $TableFileCreator_execute$23 = function $$execute() { - var self = this, fileName = nil, text = nil; - - - fileName = self.$getTableFileName(); - self.$checkFile(fileName); - text = self.$getTableText(); - return self.$createFile(fileName, text); - }, $TableFileCreator_execute$23.$$arity = 0); - - Opal.def(self, '$checkFile', $TableFileCreator_checkFile$24 = function $$checkFile(fileName) { - var self = this; - - return self.$checkFileNotExist(fileName) - }, $TableFileCreator_checkFile$24.$$arity = 1); - - Opal.def(self, '$checkFileNotExist', $TableFileCreator_checkFileNotExist$25 = function $$checkFileNotExist(fileName) { - var self = this; - - if ($truthy($$($nesting, 'File')['$exist?'](fileName))) { - return self.$raise("commandNameAlreadyExist") - } else { - return nil - } - }, $TableFileCreator_checkFileNotExist$25.$$arity = 1); - - Opal.def(self, '$checkFileExist', $TableFileCreator_checkFileExist$26 = function $$checkFileExist(fileName) { - var self = this; - - if ($truthy($$($nesting, 'File')['$exist?'](fileName))) { - return nil - } else { - return self.$raise("commandNameIsNotExist") - } - }, $TableFileCreator_checkFileExist$26.$$arity = 1); - - Opal.def(self, '$getTableFileName', $TableFileCreator_getTableFileName$27 = function $$getTableFileName(command, gameType) { - var $a, self = this, prefix2 = nil, fileName = nil; - - - - if (command == null) { - command = nil; - }; - - if (gameType == null) { - gameType = nil; - }; - if ($truthy(gameType['$nil?']())) { - gameType = self.params['$[]']("gameType")}; - gameType = ($truthy($a = gameType) ? $a : ""); - gameType = gameType.$gsub(":", "_"); - if ($truthy(command['$nil?']())) { - - self.$initCommand(); - command = self.command;}; - self.$checkCommand(command); - prefix2 = ""; - if ($truthy(gameType['$empty?']())) { - } else { - prefix2 = "" + (gameType) + "_" - }; - fileName = "" + (self.dir) + "/" + (self.prefix) + (prefix2) + (command) + ".txt"; - return fileName; - }, $TableFileCreator_getTableFileName$27.$$arity = -1); - - Opal.def(self, '$initCommand', $TableFileCreator_initCommand$28 = function $$initCommand() { - var $a, self = this; - - - self.command = self.params['$[]']("command"); - self.command = ($truthy($a = self.command) ? $a : ""); - return (self.command = self.command.$gsub(/\./, "_")); - }, $TableFileCreator_initCommand$28.$$arity = 0); - - Opal.def(self, '$checkCommand', $TableFileCreator_checkCommand$29 = function $$checkCommand(command) { - var self = this; - - - if ($truthy(command['$empty?']())) { - self.$raise("commandNameIsEmpty")}; - if ($truthy(/^[a-zA-Z\d]+$/['$==='](command))) { - return nil - } else { - return self.$raise("commandNameCanUseOnlyAlphabetAndNumber") - }; - }, $TableFileCreator_checkCommand$29.$$arity = 1); - - Opal.def(self, '$getTableText', $TableFileCreator_getTableText$30 = function $$getTableText() { - var self = this, dice = nil, title = nil, table = nil, text = nil; - - - dice = self.params['$[]']("dice"); - title = self.params['$[]']("title"); - table = self.params['$[]']("table"); - text = ""; - text = $rb_plus(text, "" + (dice) + ":" + (title) + "\n"); - if ($truthy(table['$is_a?']($$($nesting, 'String')))) { - } else { - table = self.$getFormatedTableText(table) - }; - return (text = $rb_plus(text, table)); - }, $TableFileCreator_getTableText$30.$$arity = 0); - - Opal.def(self, '$getFormatedTableText', $TableFileCreator_getFormatedTableText$31 = function $$getFormatedTableText(table) { - var $$32, self = this, result = nil; - - - result = ""; - $send(table, 'each_with_index', [], ($$32 = function(line, index){var self = $$32.$$s || this, $a, $b, key = nil, value = nil; - - - - if (line == null) { - line = nil; - }; - - if (index == null) { - index = nil; - }; - $b = $$($nesting, 'TableFileData').$getLineKeyValue(line), $a = Opal.to_ary($b), (key = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $b; - key['$tr!'](" ", ""); - key['$tr!'](" ", ""); - key['$tr!']("0-9", "0-9"); - key = self.$checkTableKey(key, index); - return (result = $rb_plus(result, (((("" + (key)) + ":") + (value)) + "\n").$toutf8()));}, $$32.$$s = self, $$32.$$arity = 2, $$32)); - return result; - }, $TableFileCreator_getFormatedTableText$31.$$arity = 1); - - Opal.def(self, '$checkTableKey', $TableFileCreator_checkTableKey$33 = function $$checkTableKey(key, index) { - var self = this, keyValue = nil; - - - if (key['$==']("0")) { - return nil}; - keyValue = key.$to_i(); - if (keyValue['$=='](0)) { - self.$raise("" + "tableFormatIsInvalid\t" + ($rb_plus(index, 1)) + "\t" + (key))}; - return keyValue; - }, $TableFileCreator_checkTableKey$33.$$arity = 2); - return (Opal.def(self, '$createFile', $TableFileCreator_createFile$34 = function $$createFile(fileName, text) { - var $$35, self = this; - - return $send($$($nesting, 'File'), 'open', [fileName, "w+"], ($$35 = function(file){var self = $$35.$$s || this; - - - - if (file == null) { - file = nil; - }; - return file.$write(text);}, $$35.$$s = self, $$35.$$arity = 1, $$35)) - }, $TableFileCreator_createFile$34.$$arity = 2), nil) && 'createFile'; - })($nesting[0], null, $nesting); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'TableFileEditer'); - - var $nesting = [self].concat($parent_nesting), $TableFileEditer_checkFile$36, $TableFileEditer_checkFileWhenFileNameNotChanged$37, $TableFileEditer_checkFileWhenFileNameChanged$38; - - self.$$prototype.params = self.$$prototype.originalCommand = self.$$prototype.command = self.$$prototype.originalGameType = self.$$prototype.gameType = nil; - - - Opal.def(self, '$checkFile', $TableFileEditer_checkFile$36 = function $$checkFile(fileName) { - var $a, self = this; - - - self.originalCommand = self.params['$[]']("originalCommand"); - self.gameType = self.params['$[]']("gameType"); - self.originalGameType = self.params['$[]']("originalGameType"); - if ($truthy(($truthy($a = self.originalCommand['$=='](self.command)) ? self.originalGameType['$=='](self.gameType) : $a))) { - return self.$checkFileWhenFileNameNotChanged(fileName) - } else { - return self.$checkFileWhenFileNameChanged(fileName) - }; - }, $TableFileEditer_checkFile$36.$$arity = 1); - - Opal.def(self, '$checkFileWhenFileNameNotChanged', $TableFileEditer_checkFileWhenFileNameNotChanged$37 = function $$checkFileWhenFileNameNotChanged(fileName) { - var self = this; - - return self.$checkFileExist(fileName) - }, $TableFileEditer_checkFileWhenFileNameNotChanged$37.$$arity = 1); - return (Opal.def(self, '$checkFileWhenFileNameChanged', $TableFileEditer_checkFileWhenFileNameChanged$38 = function $$checkFileWhenFileNameChanged(fileName) { - var $a, self = this, originalCommand = nil, originalGameType = nil, originalFileName = nil, e = nil; - - - originalCommand = self.originalCommand; - originalCommand = ($truthy($a = originalCommand) ? $a : self.command); - originalGameType = self.originalGameType; - originalGameType = ($truthy($a = originalGameType) ? $a : self.gameType); - originalFileName = self.$getTableFileName(originalCommand, originalGameType); - self.$checkFileExist(originalFileName); - self.$checkFileNotExist(fileName); - - try { - return $$($nesting, 'FileUtils').$mv(originalFileName, fileName) - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - return self.$raise("changeCommandNameFaild") - } finally { Opal.pop_exception() } - } else { throw $err; } - };; - }, $TableFileEditer_checkFileWhenFileNameChanged$38.$$arity = 1), nil) && 'checkFileWhenFileNameChanged'; - })($nesting[0], $$($nesting, 'TableFileCreator'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/DiceBot"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$freeze', '$attr_reader', '$map', '$to_proc', '$join', '$private', '$clearPrefixes', '$!', '$empty?', '$prefixs', '$prefixes', '$class', '$warn', '$id', '$setPrefixes', '$attr_accessor', '$name', '$sort_key', '$help_message', '$attr_writer', '$rand', '$roll', '$marshalSignOfInequality', '$unlimitedRollDiceType', '$getD66Value', '$parren_killer', '$debug', '$isGetOriginalMessage', '$getOriginalMessage', '$=~', '$prefixesPattern', '$last_match', '$removeDiceCommandMessage', '$rollDiceCommandCatched', '$nil?', '$!=', '$sub', '$rollDiceCommand', '$to_s', '$backtrace', '$size', '$===', '$check_1D100', '$check_1D20', '$check_2D6', '$check_nD10', '$check_nD6', '$check_nDx', '$is_a?', '$==', '$send', '$get_table_by_nD6', '$get_table_by_nDx', '$getTableValue', '$[]', '$-', '$/', '$getD66', '$bcdice', '$get_table_by_number', '$+', '$*', '$<', '$each', '$>=', '$kind_of?', '$lambda', '$call', '$select', '$public_methods', '$upcase', '$to_i', '$getTableInfoFromExtraTableText', '$get_table_by_nDx_extratable', '$get_table_by_d66', '$floor', '$%', '$get_table_by_d66_swap', '$raise', '$gsub', '$rollTableMessageDiceText', '$split', '$inspect']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceBot'); - - var $nesting = [self].concat($parent_nesting), $DiceBot_initialize$4, $DiceBot_postSet$5, $DiceBot_info$6, $DiceBot_id$7, $DiceBot_gameType$8, $DiceBot_name$9, $DiceBot_gameName$10, $DiceBot_sort_key$11, $DiceBot_help_message$12, $DiceBot_getHelpMessage$13, $DiceBot_prefixes$14, $DiceBot_setSendMode$15, $DiceBot_bcdice$eq$16, $DiceBot_bcdice$17, $DiceBot_rand$18, $DiceBot_roll$19, $DiceBot_marshalSignOfInequality$20, $DiceBot_unlimitedRollDiceType$21, $DiceBot_setSortType$22, $DiceBot_d66$23, $DiceBot_parren_killer$24, $DiceBot_changeText$25, $DiceBot_dice_command$26, $DiceBot_isGetOriginalMessage$27, $DiceBot_removeDiceCommandMessage$28, $DiceBot_rollDiceCommandCatched$29, $DiceBot_rollDiceCommand$30, $DiceBot_dice_command_xRn$31, $DiceBot_check_result$32, $DiceBot_check_nDx$33, $DiceBot_check_1D100$34, $DiceBot_check_1D20$35, $DiceBot_check_nD10$36, $DiceBot_check_2D6$37, $DiceBot_check_nD6$38, $DiceBot_get_table_by_2d6$39, $DiceBot_get_table_by_1d6$40, $DiceBot_get_table_by_nD6$41, $DiceBot_get_table_by_nDx$42, $DiceBot_get_table_by_1d3$43, $DiceBot_getD66$44, $DiceBot_get_table_by_d66_swap$45, $DiceBot_get_table_by_d66$46, $DiceBot_getDiceRolledAdditionalText$47, $DiceBot_getDiceRevision$48, $DiceBot_isD9$49, $DiceBot_getGrichText$50, $DiceBot_should_reroll$ques$51, $DiceBot_get_table_by_number$52, $DiceBot_getTableValue$54, $DiceBot_analyzeDiceCommandResultMethod$56, $DiceBot_get_table_by_nDx_extratable$59, $DiceBot_getTableCommandResult$60, $DiceBot_getTableInfoFromExtraTableText$61, $DiceBot_roll_tables$63; - - self.$$prototype.rerollLimitCount = self.$$prototype.d66Type = nil; - - Opal.const_set($nesting[0], 'EMPTY_PREFIXES_PATTERN', /(^|\s)(S)?()(\s|$)/i.$freeze()); - Opal.const_set($nesting[0], 'ID', "DiceBot"); - Opal.const_set($nesting[0], 'NAME', "DiceBot"); - Opal.const_set($nesting[0], 'SORT_KEY', "*たいすほつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', ""); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $setPrefixes$1, $clearPrefixes$2, $inherited$3; - - - self.$attr_reader("prefixes"); - self.$attr_reader("prefixesPattern"); - - Opal.def(self, '$setPrefixes', $setPrefixes$1 = function $$setPrefixes(prefixes) { - var self = this; - - - self.prefixes = $send(prefixes, 'map', [], "freeze".$to_proc()).$freeze(); - self.prefixesPattern = new RegExp("" + "(^|\\s)(S)?(" + (prefixes.$join("|")) + ")(\\s|$)", 'i').$freeze(); - return self; - }, $setPrefixes$1.$$arity = 1); - - Opal.def(self, '$clearPrefixes', $clearPrefixes$2 = function $$clearPrefixes() { - var self = this; - - - self.prefixes = [].$freeze(); - self.prefixesPattern = $$($nesting, 'EMPTY_PREFIXES_PATTERN'); - return self; - }, $clearPrefixes$2.$$arity = 0); - self.$private(); - return (Opal.def(self, '$inherited', $inherited$3 = function $$inherited(subclass) { - var self = this; - - return subclass.$clearPrefixes() - }, $inherited$3.$$arity = 1), nil) && 'inherited'; - })(Opal.get_singleton_class(self), $nesting); - self.$clearPrefixes(); - (Opal.class_variable_set($nesting[0], '@@bcdice', nil)); - Opal.const_set($nesting[0], 'DEFAULT_SEND_MODE', 2); - - Opal.def(self, '$initialize', $DiceBot_initialize$4 = function $$initialize() { - var $a, self = this; - - - self.sendMode = $$($nesting, 'DEFAULT_SEND_MODE'); - self.sortType = 0; - self.sameDiceRerollCount = 0; - self.sameDiceRerollType = 0; - self.d66Type = 1; - self.isPrintMaxDice = false; - self.upperRollThreshold = 0; - self.unlimitedRollDiceType = 0; - self.rerollNumber = 0; - self.defaultSuccessTarget = ""; - self.rerollLimitCount = 10000; - self.fractionType = "omit"; - if ($truthy(($truthy($a = self.$prefixs()['$empty?']()['$!']()) ? self.$class().$prefixes()['$empty?']() : $a))) { - - self.$warn("" + (self.$id()) + ": #prefixs is deprecated. Please use .setPrefixes."); - return self.$class().$setPrefixes(self.$prefixs()); - } else { - return nil - }; - }, $DiceBot_initialize$4.$$arity = 0); - self.$attr_accessor("rerollLimitCount"); - self.$attr_reader("sendMode", "sameDiceRerollCount", "sameDiceRerollType", "d66Type"); - self.$attr_reader("isPrintMaxDice", "upperRollThreshold"); - self.$attr_reader("defaultSuccessTarget", "rerollNumber", "fractionType"); - - Opal.def(self, '$postSet', $DiceBot_postSet$5 = function $$postSet() { - var self = this; - - return nil - }, $DiceBot_postSet$5.$$arity = 0); - - Opal.def(self, '$info', $DiceBot_info$6 = function $$info() { - var self = this; - - return $hash2(["gameType", "name", "sortKey", "prefixs", "info"], {"gameType": self.$id(), "name": self.$name(), "sortKey": self.$sort_key(), "prefixs": self.$class().$prefixes(), "info": self.$help_message()}) - }, $DiceBot_info$6.$$arity = 0); - - Opal.def(self, '$id', $DiceBot_id$7 = function $$id() { - var self = this; - - return $$$(self.$class(), 'ID') - }, $DiceBot_id$7.$$arity = 0); - - Opal.def(self, '$gameType', $DiceBot_gameType$8 = function $$gameType() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameType is deprecated. Please use #id."); - return self.$id(); - }, $DiceBot_gameType$8.$$arity = 0); - - Opal.def(self, '$name', $DiceBot_name$9 = function $$name() { - var self = this; - - return $$$(self.$class(), 'NAME') - }, $DiceBot_name$9.$$arity = 0); - - Opal.def(self, '$gameName', $DiceBot_gameName$10 = function $$gameName() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameName is deprecated. Please use #name."); - return self.$name(); - }, $DiceBot_gameName$10.$$arity = 0); - - Opal.def(self, '$sort_key', $DiceBot_sort_key$11 = function $$sort_key() { - var self = this; - - return $$$(self.$class(), 'SORT_KEY') - }, $DiceBot_sort_key$11.$$arity = 0); - - Opal.def(self, '$help_message', $DiceBot_help_message$12 = function $$help_message() { - var self = this; - - return $$$(self.$class(), 'HELP_MESSAGE') - }, $DiceBot_help_message$12.$$arity = 0); - - Opal.def(self, '$getHelpMessage', $DiceBot_getHelpMessage$13 = function $$getHelpMessage() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #getHelpMessage is deprecated. Please use #help_message."); - return self.$help_message(); - }, $DiceBot_getHelpMessage$13.$$arity = 0); - - Opal.def(self, '$prefixes', $DiceBot_prefixes$14 = function $$prefixes() { - var self = this; - - return self.$class().$prefixes() - }, $DiceBot_prefixes$14.$$arity = 0); - Opal.alias(self, "prefixs", "prefixes"); - - Opal.def(self, '$setSendMode', $DiceBot_setSendMode$15 = function $$setSendMode(m) { - var self = this; - - return (self.sendMode = m) - }, $DiceBot_setSendMode$15.$$arity = 1); - self.$attr_writer("upperRollThreshold"); - - Opal.def(self, '$bcdice=', $DiceBot_bcdice$eq$16 = function(b) { - var self = this; - - return (Opal.class_variable_set($nesting[0], '@@bcdice', b)) - }, $DiceBot_bcdice$eq$16.$$arity = 1); - - Opal.def(self, '$bcdice', $DiceBot_bcdice$17 = function $$bcdice() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a) - }, $DiceBot_bcdice$17.$$arity = 0); - - Opal.def(self, '$rand', $DiceBot_rand$18 = function $$rand(max) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rand(max) - }, $DiceBot_rand$18.$$arity = 1); - - Opal.def(self, '$roll', $DiceBot_roll$19 = function $$roll($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'roll', Opal.to_a(args)); - }, $DiceBot_roll$19.$$arity = -1); - - Opal.def(self, '$marshalSignOfInequality', $DiceBot_marshalSignOfInequality$20 = function $$marshalSignOfInequality($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'marshalSignOfInequality', Opal.to_a(args)); - }, $DiceBot_marshalSignOfInequality$20.$$arity = -1); - - Opal.def(self, '$unlimitedRollDiceType', $DiceBot_unlimitedRollDiceType$21 = function $$unlimitedRollDiceType() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$unlimitedRollDiceType() - }, $DiceBot_unlimitedRollDiceType$21.$$arity = 0); - self.$attr_reader("sortType"); - - Opal.def(self, '$setSortType', $DiceBot_setSortType$22 = function $$setSortType(s) { - var self = this; - - return (self.sortType = s) - }, $DiceBot_setSortType$22.$$arity = 1); - - Opal.def(self, '$d66', $DiceBot_d66$23 = function $$d66($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'getD66Value', Opal.to_a(args)); - }, $DiceBot_d66$23.$$arity = -1); - - Opal.def(self, '$parren_killer', $DiceBot_parren_killer$24 = function $$parren_killer(string) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$parren_killer(string) - }, $DiceBot_parren_killer$24.$$arity = 1); - - Opal.def(self, '$changeText', $DiceBot_changeText$25 = function $$changeText(string) { - var self = this; - - - self.$debug("DiceBot.parren_killer_add called"); - return string; - }, $DiceBot_changeText$25.$$arity = 1); - - Opal.def(self, '$dice_command', $DiceBot_dice_command$26 = function $$dice_command(string, nick_e) { - var $a, $b, self = this, secret_flg = nil, secretMarker = nil, command = nil, output_msg = nil; - - - if ($truthy(self.$isGetOriginalMessage())) { - string = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$getOriginalMessage()}; - self.$debug("dice_command Begin string", string); - secret_flg = false; - if ($truthy(self.$class().$prefixesPattern()['$=~'](string))) { - } else { - - self.$debug("not match in prefixes"); - return ["1", secret_flg]; - }; - secretMarker = $$($nesting, 'Regexp').$last_match(2); - command = $$($nesting, 'Regexp').$last_match(3); - command = self.$removeDiceCommandMessage(command); - self.$debug("dicebot after command", command); - self.$debug("match"); - $b = self.$rollDiceCommandCatched(command), $a = Opal.to_ary($b), (output_msg = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = output_msg['$nil?']()) ? $a : output_msg['$empty?']()))) { - output_msg = "1"}; - secret_flg = ($truthy($a = secret_flg) ? $a : false); - if ($truthy(output_msg['$!=']("1"))) { - output_msg = "" + (nick_e) + ": " + (output_msg)}; - if ($truthy(secretMarker)) { - if ($truthy(output_msg['$!=']("1"))) { - secret_flg = true}}; - return [output_msg, secret_flg]; - }, $DiceBot_dice_command$26.$$arity = 2); - - Opal.def(self, '$isGetOriginalMessage', $DiceBot_isGetOriginalMessage$27 = function $$isGetOriginalMessage() { - var self = this; - - return false - }, $DiceBot_isGetOriginalMessage$27.$$arity = 0); - - Opal.def(self, '$removeDiceCommandMessage', $DiceBot_removeDiceCommandMessage$28 = function $$removeDiceCommandMessage(command) { - var self = this; - - return command.$sub(/[\s ].+/, "") - }, $DiceBot_removeDiceCommandMessage$28.$$arity = 1); - - Opal.def(self, '$rollDiceCommandCatched', $DiceBot_rollDiceCommandCatched$29 = function $$rollDiceCommandCatched(command) { - var $a, $b, self = this, result = nil, secret_flg = nil, e = nil; - - - result = nil; - - try { - - self.$debug("call rollDiceCommand command", command); - $b = self.$rollDiceCommand(command), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - self.$debug("executeCommand exception", e.$to_s(), e.$backtrace().$join("\n")) - } finally { Opal.pop_exception() } - } else { throw $err; } - };; - self.$debug("rollDiceCommand result", result); - return [result, secret_flg]; - }, $DiceBot_rollDiceCommandCatched$29.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $DiceBot_rollDiceCommand$30 = function $$rollDiceCommand(_command) { - var self = this; - - return nil - }, $DiceBot_rollDiceCommand$30.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $DiceBot_dice_command_xRn$31 = function $$dice_command_xRn(_string, _nick_e) { - var self = this; - - return "" - }, $DiceBot_dice_command_xRn$31.$$arity = 2); - - Opal.def(self, '$check_result', $DiceBot_check_result$32 = function $$check_result(total, dice_total, dice_list, sides, cmp_op, target) { - var $a, self = this, ret = nil, $case = nil; - - - ret = (function() {$case = [dice_list.$size(), sides]; - if ([1, 100]['$===']($case)) {return self.$check_1D100(total, dice_total, cmp_op, target)} - else if ([1, 20]['$===']($case)) {return self.$check_1D20(total, dice_total, cmp_op, target)} - else if ([2, 6]['$===']($case)) {return self.$check_2D6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - ret = (function() {$case = sides; - if ((10)['$===']($case)) {return self.$check_nD10(total, dice_total, dice_list, cmp_op, target)} - else if ((6)['$===']($case)) {return self.$check_nD6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - return self.$check_nDx(total, cmp_op, target); - }, $DiceBot_check_result$32.$$arity = 6); - - Opal.def(self, '$check_nDx', $DiceBot_check_nDx$33 = function $$check_nDx(total, cmp_op, target) { - var self = this, success = nil; - - - if ($truthy(target['$is_a?']($$($nesting, 'String')))) { - return " > 失敗"}; - success = (function() {if (cmp_op['$==']("!=")) { - return total['$!='](target) - } else { - return total.$send(cmp_op, target) - }; return nil; })(); - if ($truthy(success)) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $DiceBot_check_nDx$33.$$arity = 3); - - Opal.def(self, '$check_1D100', $DiceBot_check_1D100$34 = function $$check_1D100(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D100$34.$$arity = 4); - - Opal.def(self, '$check_1D20', $DiceBot_check_1D20$35 = function $$check_1D20(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D20$35.$$arity = 4); - - Opal.def(self, '$check_nD10', $DiceBot_check_nD10$36 = function $$check_nD10(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD10$36.$$arity = 5); - - Opal.def(self, '$check_2D6', $DiceBot_check_2D6$37 = function $$check_2D6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_2D6$37.$$arity = 5); - - Opal.def(self, '$check_nD6', $DiceBot_check_nD6$38 = function $$check_nD6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD6$38.$$arity = 5); - - Opal.def(self, '$get_table_by_2d6', $DiceBot_get_table_by_2d6$39 = function $$get_table_by_2d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 2) - }, $DiceBot_get_table_by_2d6$39.$$arity = 1); - - Opal.def(self, '$get_table_by_1d6', $DiceBot_get_table_by_1d6$40 = function $$get_table_by_1d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 1) - }, $DiceBot_get_table_by_1d6$40.$$arity = 1); - - Opal.def(self, '$get_table_by_nD6', $DiceBot_get_table_by_nD6$41 = function $$get_table_by_nD6(table, count) { - var self = this; - - return self.$get_table_by_nDx(table, count, 6) - }, $DiceBot_get_table_by_nD6$41.$$arity = 2); - - Opal.def(self, '$get_table_by_nDx', $DiceBot_get_table_by_nDx$42 = function $$get_table_by_nDx(table, count, diceType) { - var $a, $b, self = this, num = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(num, count))); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_nDx$42.$$arity = 3); - - Opal.def(self, '$get_table_by_1d3', $DiceBot_get_table_by_1d3$43 = function $$get_table_by_1d3(table) { - var $a, $b, self = this, count = nil, num = nil, index = nil, text = nil; - - - self.$debug("get_table_by_1d3"); - count = 1; - $b = self.$roll(count, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - self.$debug("num", num); - index = $rb_divide($rb_minus(num, 1), 2); - self.$debug("index", index); - text = table['$[]'](index); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_1d3$43.$$arity = 1); - - Opal.def(self, '$getD66', $DiceBot_getD66$44 = function $$getD66(isSwap) { - var self = this; - - return self.$bcdice().$getD66(isSwap) - }, $DiceBot_getD66$44.$$arity = 1); - - Opal.def(self, '$get_table_by_d66_swap', $DiceBot_get_table_by_d66_swap$45 = function $$get_table_by_d66_swap(table) { - var self = this, isSwap = nil, number = nil; - - - isSwap = true; - number = self.$bcdice().$getD66(isSwap); - return [self.$get_table_by_number(number, table), number]; - }, $DiceBot_get_table_by_d66_swap$45.$$arity = 1); - - Opal.def(self, '$get_table_by_d66', $DiceBot_get_table_by_d66$46 = function $$get_table_by_d66(table) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, num = nil, text = nil, indexText = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - num = $rb_plus($rb_times($rb_minus(dice1, 1), 6), $rb_minus(dice2, 1)); - text = table['$[]'](num); - indexText = "" + (dice1) + (dice2); - if ($truthy(text['$nil?']())) { - return ["1", indexText]}; - return [text, indexText]; - }, $DiceBot_get_table_by_d66$46.$$arity = 1); - - Opal.def(self, '$getDiceRolledAdditionalText', $DiceBot_getDiceRolledAdditionalText$47 = function $$getDiceRolledAdditionalText(_n1, _n_max, _dice_max) { - var self = this; - - return "" - }, $DiceBot_getDiceRolledAdditionalText$47.$$arity = 3); - - Opal.def(self, '$getDiceRevision', $DiceBot_getDiceRevision$48 = function $$getDiceRevision(_n_max, _dice_max, _total_n) { - var self = this; - - return ["", 0] - }, $DiceBot_getDiceRevision$48.$$arity = 3); - - Opal.def(self, '$isD9', $DiceBot_isD9$49 = function $$isD9() { - var self = this; - - return false - }, $DiceBot_isD9$49.$$arity = 0); - - Opal.def(self, '$getGrichText', $DiceBot_getGrichText$50 = function $$getGrichText(_numberSpot1, _dice_cnt_total, _suc) { - var self = this; - - return "" - }, $DiceBot_getGrichText$50.$$arity = 3); - - Opal.def(self, '$should_reroll?', $DiceBot_should_reroll$ques$51 = function(loop_count) { - var $a, self = this; - - return ($truthy($a = $rb_lt(loop_count, self.rerollLimitCount)) ? $a : self.rerollLimitCount['$=='](0)) - }, $DiceBot_should_reroll$ques$51.$$arity = 1); - - Opal.def(self, '$get_table_by_number', $DiceBot_get_table_by_number$52 = function $$get_table_by_number(index, table, default$) {try { - - var $$53, self = this; - - - - if (default$ == null) { - default$ = "1"; - }; - $send(table, 'each', [], ($$53 = function(item){var self = $$53.$$s || this, number = nil; - - - - if (item == null) { - item = nil; - }; - number = item['$[]'](0); - if ($truthy($rb_ge(number, index))) { - Opal.ret(self.$getTableValue(item['$[]'](1))) - } else { - return nil - };}, $$53.$$s = self, $$53.$$arity = 1, $$53)); - return self.$getTableValue(default$); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_get_table_by_number$52.$$arity = -3); - - Opal.def(self, '$getTableValue', $DiceBot_getTableValue$54 = function $$getTableValue(data) {try { - - var $$55, self = this, lambdaBlock = nil; - - - if ($truthy(data['$kind_of?']($$($nesting, 'Proc')))) { - - lambdaBlock = $send(self, 'lambda', [], ($$55 = function(){var self = $$55.$$s || this; - - Opal.ret(data.$call())}, $$55.$$s = self, $$55.$$arity = 0, $$55)); - return lambdaBlock.$call();}; - return data; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_getTableValue$54.$$arity = 1); - - Opal.def(self, '$analyzeDiceCommandResultMethod', $DiceBot_analyzeDiceCommandResultMethod$56 = function $$analyzeDiceCommandResultMethod(command) {try { - - var $$57, $$58, self = this, methodList = nil; - - - methodList = $send(self.$public_methods(), 'select', [], ($$57 = function(method){var self = $$57.$$s || this; - - - - if (method == null) { - method = nil; - }; - return /^get.+DiceCommandResult$/['$==='](method.$to_s());}, $$57.$$s = self, $$57.$$arity = 1, $$57)); - $send(methodList, 'each', [], ($$58 = function(method){var self = $$58.$$s || this, result = nil; - - - - if (method == null) { - method = nil; - }; - result = self.$send(method, command); - if ($truthy(result['$nil?']())) { - return nil - } else { - Opal.ret(result) - };}, $$58.$$s = self, $$58.$$arity = 1, $$58)); - return nil; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_analyzeDiceCommandResultMethod$56.$$arity = 1); - - Opal.def(self, '$get_table_by_nDx_extratable', $DiceBot_get_table_by_nDx_extratable$59 = function $$get_table_by_nDx_extratable(table, count, diceType) { - var $a, $b, self = this, number = nil, diceText = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(number, count))); - return [text, number, diceText]; - }, $DiceBot_get_table_by_nDx_extratable$59.$$arity = 3); - - Opal.def(self, '$getTableCommandResult', $DiceBot_getTableCommandResult$60 = function $$getTableCommandResult(command, tables, isPrintDiceText) { - var $a, $b, $c, $d, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, count = nil, diceType = nil, limit = nil, item = nil, value = nil, output = nil, diceText = nil, text = nil, number = nil; - - - - if (isPrintDiceText == null) { - isPrintDiceText = true; - }; - info = tables['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type").$upcase(); - table = info['$[]']("table"); - if ($truthy(($truthy($a = type['$==']("D66")) ? self.d66Type['$=='](2) : $a))) { - type = "D66S"}; - $b = (function() {$case = type; - if (/(\d+)D(\d+)/['$===']($case)) { - count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diceType = $$($nesting, 'Regexp').$last_match(2).$to_i(); - limit = $rb_minus($rb_times(diceType, count), $rb_minus(count, 1)); - table = self.$getTableInfoFromExtraTableText(table, limit); - return self.$get_table_by_nDx_extratable(table, count, diceType);} - else if ("D66"['$===']($case) || "D66N"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 36); - $d = self.$get_table_by_d66(table), $c = Opal.to_ary($d), (item = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - output = item['$[]'](1); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else if ("D66S"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 21); - $d = self.$get_table_by_d66_swap(table), $c = Opal.to_ary($d), (output = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else {return self.$raise("" + "invalid dice Type " + (command))}})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), (diceText = ($a[2] == null ? nil : $a[2])), $b; - text = text.$gsub("\\n", "\n"); - text = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rollTableMessageDiceText(text); - if ($truthy(text['$nil?']())) { - return nil}; - if ($truthy(($truthy($a = isPrintDiceText) ? diceText['$nil?']()['$!']() : $a))) { - return "" + (name) + "(" + (number) + "[" + (diceText) + "]) > " + (text)}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $DiceBot_getTableCommandResult$60.$$arity = -3); - - Opal.def(self, '$getTableInfoFromExtraTableText', $DiceBot_getTableInfoFromExtraTableText$61 = function $$getTableInfoFromExtraTableText(text, count) { - var $$62, self = this, newTable = nil; - - - - if (count == null) { - count = nil; - }; - if ($truthy(text['$is_a?']($$($nesting, 'String')))) { - text = text.$split(/\n/)}; - newTable = $send(text, 'map', [], ($$62 = function(item){var self = $$62.$$s || this, $a; - - - - if (item == null) { - item = nil; - }; - if ($truthy(($truthy($a = item['$is_a?']($$($nesting, 'String'))) ? /^(\d+):(.*)/['$==='](item) : $a))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2)] - } else { - return item - };}, $$62.$$s = self, $$62.$$arity = 1, $$62)); - if ($truthy(count['$nil?']())) { - } else if ($truthy(newTable.$size()['$!='](count))) { - self.$raise("" + "invalid table size:" + (newTable.$size()) + "\n" + (newTable.$inspect()))}; - return newTable; - }, $DiceBot_getTableInfoFromExtraTableText$61.$$arity = -2); - return (Opal.def(self, '$roll_tables', $DiceBot_roll_tables$63 = function $$roll_tables(command, tables) { - var self = this, table = nil; - - - table = tables['$[]'](command.$upcase()); - if ($truthy(table)) { - } else { - return nil - }; - return table.$roll(self.$bcdice()).$to_s(); - }, $DiceBot_roll_tables$63.$$arity = 2), nil) && 'roll_tables'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/DiceBotLoader"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send; - - Opal.add_stubs(['$freeze', '$===', '$!', '$include?', '$debug', '$new', '$const_get', '$to_s', '$downcase', '$map', '$to_proc', '$[]', '$raise', '$first']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceBotLoader'); - - var $nesting = [self].concat($parent_nesting), $DiceBotLoader_validGameType$ques$1, $DiceBotLoader_loadUnknownGame$2, $DiceBotLoader_collectDiceBots$3, $DiceBotLoader_initialize$4, $DiceBotLoader_match$ques$5, $DiceBotLoader_loadDiceBot$6; - - self.$$prototype.filenames = self.$$prototype.gameTitlePattern = self.$$prototype.diceBotClass = nil; - - Opal.const_set($nesting[0], 'BOT_NAME_PATTERN', /^[A-Z]\w*$/.$freeze()); - Opal.const_set($nesting[0], 'BOT_NAMES_TO_IGNORE', ["DiceBot", "DiceBotLoader", "DiceBotLoaderList"].$freeze()); - Opal.defs(self, '$validGameType?', $DiceBotLoader_validGameType$ques$1 = function(gameType) { - var $a, self = this; - - return ($truthy($a = $$($nesting, 'BOT_NAME_PATTERN')['$==='](gameType)) ? $$($nesting, 'BOT_NAMES_TO_IGNORE')['$include?'](gameType)['$!']() : $a) - }, $DiceBotLoader_validGameType$ques$1.$$arity = 1); - Opal.defs(self, '$loadUnknownGame', $DiceBotLoader_loadUnknownGame$2 = function $$loadUnknownGame(gameType) { - var self = this, e = nil; - - - self.$debug("DiceBotLoader.loadUnknownGame gameType", gameType); - - try { - return $$($nesting, 'Object').$const_get(gameType).$new() - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'LoadError'), $$($nesting, 'StandardError')])) {e = $err; - try { - - self.$debug("DiceBotLoader.loadUnknownGame: ダイスボットの読み込みに失敗しました", e.$to_s()); - return nil; - } finally { Opal.pop_exception() } - } else { throw $err; } - };; - }, $DiceBotLoader_loadUnknownGame$2.$$arity = 1); - Opal.defs(self, '$collectDiceBots', $DiceBotLoader_collectDiceBots$3 = function $$collectDiceBots() { - var self = this; - - return [] - }, $DiceBotLoader_collectDiceBots$3.$$arity = 0); - - Opal.def(self, '$initialize', $DiceBotLoader_initialize$4 = function $$initialize(gameTitlePattern, options) { - var $a, self = this, $case = nil, defaultFilenames = nil; - - - - if (options == null) { - options = $hash2([], {}); - }; - $case = gameTitlePattern; - if ($$($nesting, 'String')['$===']($case)) {self.gameTitlePattern = [gameTitlePattern.$downcase()]} - else if ($$($nesting, 'Array')['$===']($case)) {self.gameTitlePattern = $send(gameTitlePattern, 'map', [], "downcase".$to_proc())} - else if ($$($nesting, 'Regexp')['$===']($case)) { - if ($truthy(options['$[]']("filenames"))) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "options[:filenames] is required when gameTitlePattern is a Regexp") - }; - self.gameTitlePattern = gameTitlePattern;} - else {self.$raise($$($nesting, 'TypeError'), "gameTitlePattern must be a String or an Array or a Regexp")}; - defaultFilenames = (function() {$case = gameTitlePattern; - if ($$($nesting, 'String')['$===']($case)) {return [gameTitlePattern]} - else if ($$($nesting, 'Array')['$===']($case)) {return [gameTitlePattern.$first()]} - else if ($$($nesting, 'Regexp')['$===']($case)) {return []} - else { return nil }})(); - self.filenames = ($truthy($a = options['$[]']("filenames")) ? $a : defaultFilenames); - return (self.diceBotClass = ($truthy($a = options['$[]']("class")) ? $a : self.filenames.$first())); - }, $DiceBotLoader_initialize$4.$$arity = -2); - - Opal.def(self, '$match?', $DiceBotLoader_match$ques$5 = function(gameTitle) { - var self = this, $case = nil; - - return (function() {$case = self.gameTitlePattern; - if ($$($nesting, 'Array')['$===']($case)) {return self.gameTitlePattern['$include?'](gameTitle.$downcase())} - else if ($$($nesting, 'Regexp')['$===']($case)) {return self.gameTitlePattern['$==='](gameTitle)} - else { return nil }})() - }, $DiceBotLoader_match$ques$5.$$arity = 1); - return (Opal.def(self, '$loadDiceBot', $DiceBotLoader_loadDiceBot$6 = function $$loadDiceBot() { - var self = this; - - return $$($nesting, 'Object').$const_get(self.diceBotClass).$new() - }, $DiceBotLoader_loadDiceBot$6.$$arity = 0), nil) && 'loadDiceBot'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/DiceBotLoaderList"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$strip', '$empty?', '$find', '$match?', '$new']); - - self.$require("diceBot/DiceBotLoader"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceBotLoaderList'); - - var $nesting = [self].concat($parent_nesting), $DiceBotLoaderList_find$1; - - - Opal.defs(self, '$find', $DiceBotLoaderList_find$1 = function $$find(gameTitle) { - var $$2, self = this, strippedTitle = nil; - if (self.loaders == null) self.loaders = nil; - - - strippedTitle = gameTitle.$strip(); - if ($truthy(strippedTitle['$empty?']())) { - return nil}; - return $send(self.loaders, 'find', [], ($$2 = function(loader){var self = $$2.$$s || this; - - - - if (loader == null) { - loader = nil; - }; - return loader['$match?'](strippedTitle);}, $$2.$$s = self, $$2.$$arity = 1, $$2)); - }, $DiceBotLoaderList_find$1.$$arity = 1); - return (self.loaders = [$$($nesting, 'DiceBotLoader').$new(["Cthulhu", "COC"]), $$($nesting, 'DiceBotLoader').$new(["Hieizan", "COCH"]), $$($nesting, 'DiceBotLoader').$new(["Elric", "EL"], $hash2(["filenames"], {"filenames": ["Elric"]})), $$($nesting, 'DiceBotLoader').$new(["RuneQuest", "RQ"]), $$($nesting, 'DiceBotLoader').$new(["Chill", "CH"]), $$($nesting, 'DiceBotLoader').$new(["RoleMaster", "RM"]), $$($nesting, 'DiceBotLoader').$new(["ShadowRun", "SR"]), $$($nesting, 'DiceBotLoader').$new(["ShadowRun4", "SR4"]), $$($nesting, 'DiceBotLoader').$new(["Pendragon", "PD"]), $$($nesting, 'DiceBotLoader').$new(/^(?:SwordWorld|SW)\s*2\.0$/i, $hash2(["filenames", "class"], {"filenames": ["SwordWorld", "SwordWorld2_0"], "class": "SwordWorld2_0"})), $$($nesting, 'DiceBotLoader').$new(/^(?:SwordWorld|SW)\s*2\.5$/i, $hash2(["filenames", "class"], {"filenames": ["SwordWorld", "SwordWorld2_5"], "class": "SwordWorld2_5"})), $$($nesting, 'DiceBotLoader').$new(["SwordWorld", "SW"]), $$($nesting, 'DiceBotLoader').$new(["Arianrhod", "AR"]), $$($nesting, 'DiceBotLoader').$new(/^(?:Infinite\s*Fantasia|IF)$/i, $hash2(["filenames"], {"filenames": ["InfiniteFantasia"]})), $$($nesting, 'DiceBotLoader').$new("WARPS"), $$($nesting, 'DiceBotLoader').$new(/^(?:Demon\s*Parasite|DP)$/i, $hash2(["filenames"], {"filenames": ["DemonParasite"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Parasite\s*Blood|PB)$/i, $hash2(["filenames", "class"], {"filenames": ["DemonParasite", "ParasiteBlood"], "class": "ParasiteBlood"})), $$($nesting, 'DiceBotLoader').$new(/^(?:Gun\s*Dog|GD)$/i, $hash2(["filenames"], {"filenames": ["Gundog"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Gun\s*Dog\s*Zero|GDZ)$/i, $hash2(["filenames", "class"], {"filenames": ["Gundog", "GundogZero"], "class": "GundogZero"})), $$($nesting, 'DiceBotLoader').$new(/^(?:Tunnels\s*&\s*Trolls|TuT)$/i, $hash2(["filenames"], {"filenames": ["TunnelsAndTrolls"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Nightmare\s*Hunter[=\s]*Deep|NHD)$/i, $hash2(["filenames"], {"filenames": ["NightmareHunterDeep"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:War\s*Hammer(FRP)?|WH)$/i, $hash2(["filenames"], {"filenames": ["Warhammer"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Phantasm\s*Adventure|PA)$/i, $hash2(["filenames"], {"filenames": ["PhantasmAdventure"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Chaos\s*Flare|CF)$/i, $hash2(["filenames"], {"filenames": ["ChaosFlare"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Cthulhu\s*Tech|CT)$/i, $hash2(["filenames"], {"filenames": ["CthulhuTech"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Tokumei\s*Tenkousei|ToT)$/i, $hash2(["filenames"], {"filenames": ["TokumeiTenkousei"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Shinobi\s*Gami|SG)$/i, $hash2(["filenames"], {"filenames": ["ShinobiGami"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Double\s*Cross|DX)$/i, $hash2(["filenames"], {"filenames": ["DoubleCross"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Sata\s*Supe|SS)$/i, $hash2(["filenames"], {"filenames": ["Satasupe"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Ars\s*Magica|AM)$/i, $hash2(["filenames"], {"filenames": ["ArsMagica"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Dark\s*Blaze|DB)$/i, $hash2(["filenames"], {"filenames": ["DarkBlaze"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Night\s*Wizard|NW)$/i, $hash2(["filenames"], {"filenames": ["NightWizard"]})), $$($nesting, 'DiceBotLoader').$new("TORG", $hash2(["filenames"], {"filenames": ["Torg"]})), $$($nesting, 'DiceBotLoader').$new(/^TORG1.5$/i, $hash2(["filenames", "class"], {"filenames": ["Torg", "Torg1_5"], "class": "Torg1_5"})), $$($nesting, 'DiceBotLoader').$new(/^(?:hunters\s*moon|HM)$/i, $hash2(["filenames"], {"filenames": ["HuntersMoon"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Blood\s*Crusade|BC)$/i, $hash2(["filenames"], {"filenames": ["BloodCrusade"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Meikyu\s*Kingdom|MK)$/i, $hash2(["filenames"], {"filenames": ["MeikyuKingdom"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Earth\s*Dawn|ED)$/i, $hash2(["filenames"], {"filenames": ["EarthDawn"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:(?:Earth\s*Dawn|ED)3)$/i, $hash2(["filenames", "class"], {"filenames": ["EarthDawn", "EarthDawn3"], "class": "EarthDawn3"})), $$($nesting, 'DiceBotLoader').$new(/^(?:(?:Earth\s*Dawn|ED)4)$/i, $hash2(["filenames", "class"], {"filenames": ["EarthDawn", "EarthDawn4"], "class": "EarthDawn4"})), $$($nesting, 'DiceBotLoader').$new(/^(?:Embryo\s*Machine|EM)$/i, $hash2(["filenames"], {"filenames": ["EmbryoMachine"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Gehenna\s*An|GA)$/i, $hash2(["filenames"], {"filenames": ["GehennaAn"]})), $$($nesting, 'DiceBotLoader').$new(/^(?:Magica\s*Logia|ML)$/i, $hash2(["filenames"], {"filenames": ["MagicaLogia"]})), $$($nesting, 'DiceBotLoader').$new(["Nechronica", "NC"]), $$($nesting, 'DiceBotLoader').$new(/^(?:Meikyu\s*Days|MD)$/i, $hash2(["filenames"], {"filenames": ["MeikyuDays"]})), $$($nesting, 'DiceBotLoader').$new(["Peekaboo", "PK"]), $$($nesting, 'DiceBotLoader').$new(/^(?:Barna\s*Kronika|BK)$/i, $hash2(["filenames"], {"filenames": ["BarnaKronika"]})), $$($nesting, 'DiceBotLoader').$new(["RokumonSekai2", "RS2"]), $$($nesting, 'DiceBotLoader').$new(/^(?:Monotone\s*Museum|MM)$/i, $hash2(["filenames"], {"filenames": ["MonotoneMuseum"]})), $$($nesting, 'DiceBotLoader').$new(/^Zettai\s*Reido$/i, $hash2(["filenames"], {"filenames": ["ZettaiReido"]})), $$($nesting, 'DiceBotLoader').$new(/^Eclipse\s*Phase$/i, $hash2(["filenames"], {"filenames": ["EclipsePhase"]})), $$($nesting, 'DiceBotLoader').$new("NJSLYRBATTLE", $hash2(["filenames"], {"filenames": ["NjslyrBattle"]})), $$($nesting, 'DiceBotLoader').$new(["ShinMegamiTenseiKakuseihen", "SMTKakuseihen"]), $$($nesting, 'DiceBotLoader').$new("Ryutama"), $$($nesting, 'DiceBotLoader').$new("CardRanker"), $$($nesting, 'DiceBotLoader').$new("ShinkuuGakuen"), $$($nesting, 'DiceBotLoader').$new("CrashWorld"), $$($nesting, 'DiceBotLoader').$new("WitchQuest"), $$($nesting, 'DiceBotLoader').$new("BattleTech"), $$($nesting, 'DiceBotLoader').$new("Elysion"), $$($nesting, 'DiceBotLoader').$new("GeishaGirlwithKatana"), $$($nesting, 'DiceBotLoader').$new("GURPS", $hash2(["filenames"], {"filenames": ["Gurps"]})), $$($nesting, 'DiceBotLoader').$new("GurpsFW"), $$($nesting, 'DiceBotLoader').$new("FilledWith"), $$($nesting, 'DiceBotLoader').$new("HarnMaster"), $$($nesting, 'DiceBotLoader').$new("Insane"), $$($nesting, 'DiceBotLoader').$new("KillDeathBusiness"), $$($nesting, 'DiceBotLoader').$new("Kamigakari"), $$($nesting, 'DiceBotLoader').$new("RecordOfSteam"), $$($nesting, 'DiceBotLoader').$new("Oukahoushin3rd"), $$($nesting, 'DiceBotLoader').$new("BeastBindTrinity"), $$($nesting, 'DiceBotLoader').$new("BloodMoon"), $$($nesting, 'DiceBotLoader').$new("Utakaze"), $$($nesting, 'DiceBotLoader').$new("EndBreaker"), $$($nesting, 'DiceBotLoader').$new("KanColle"), $$($nesting, 'DiceBotLoader').$new("GranCrest"), $$($nesting, 'DiceBotLoader').$new("HouraiGakuen"), $$($nesting, 'DiceBotLoader').$new("TwilightGunsmoke"), $$($nesting, 'DiceBotLoader').$new("Garako"), $$($nesting, 'DiceBotLoader').$new("ShoujoTenrankai"), $$($nesting, 'DiceBotLoader').$new("GardenOrder"), $$($nesting, 'DiceBotLoader').$new("DarkSouls"), $$($nesting, 'DiceBotLoader').$new("SterileLife"), $$($nesting, 'DiceBotLoader').$new("Paradiso"), $$($nesting, 'DiceBotLoader').$new("SamsaraBallad"), $$($nesting, 'DiceBotLoader').$new("GoblinSlayer"), $$($nesting, 'DiceBotLoader').$new("RyuTuber"), $$($nesting, 'DiceBotLoader').$new("None", $hash2(["filenames", "class"], {"filenames": [], "class": "DiceBot"}))]); - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/normalize"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; - - Opal.add_stubs(['$module_function', '$===', '$==', '$to_i']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Normalize'); - - var $nesting = [self].concat($parent_nesting), $Normalize_comparison_operator$1, $Normalize_target_number$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Normalize_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if (/<=|==|=>/['$===']($case)) {return ">="} - else if (/<>|!=|=!/['$===']($case)) {return "!="} - else if (//['$===']($case)) {return ">"} - else if (/\=/['$===']($case)) {return "=="} - else { return nil }})() - }, $Normalize_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$target_number', $Normalize_target_number$2 = function $$target_number(val) { - var self = this; - - if (val['$==']("?")) { - return val - } else { - return val.$to_i() - } - }, $Normalize_target_number$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["dice/add_dice/node"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $module = Opal.module, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$attr_reader', '$+', '$to_s', '$cmp_op_text', '$s_exp', '$private', '$===', '$eval', '$calc', '$output', '$op_for_s_exp', '$send', '$rounding_method', '$class', '$zero?', '$divide_and_round', '$raise', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$literal', '$roll', '$reduce', '$flatten', '$to_proc', '$join', '$map', '$new', '$freeze', '$lambda', '$take', '$reverse', '$drop', '$sort', '$roll_once', '$[]', '$apply', '$abbr', '$inspect']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'AddDice'); - - var $nesting = [self].concat($parent_nesting); - - return (function($base, $parent_nesting) { - var self = $module($base, 'Node'); - - var $nesting = [self].concat($parent_nesting); - - - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Command'); - - var $nesting = [self].concat($parent_nesting), $Command_initialize$1, $Command_to_s$2, $Command_s_exp$3, $Command_cmp_op_text$4; - - self.$$prototype.lhs = self.$$prototype.rhs = self.$$prototype.cmp_op = nil; - - self.$attr_reader("lhs"); - self.$attr_reader("cmp_op"); - self.$attr_reader("rhs"); - - Opal.def(self, '$initialize', $Command_initialize$1 = function $$initialize(lhs, cmp_op, rhs) { - var self = this; - - - self.lhs = lhs; - self.cmp_op = cmp_op; - return (self.rhs = rhs); - }, $Command_initialize$1.$$arity = 3); - - Opal.def(self, '$to_s', $Command_to_s$2 = function $$to_s() { - var self = this; - - return $rb_plus($rb_plus(self.lhs.$to_s(), self.$cmp_op_text()), self.rhs.$to_s()) - }, $Command_to_s$2.$$arity = 0); - - Opal.def(self, '$s_exp', $Command_s_exp$3 = function $$s_exp() { - var self = this; - - if ($truthy(self.cmp_op)) { - return "" + "(Command (" + (self.cmp_op) + " " + (self.lhs.$s_exp()) + " " + (self.rhs) + "))" - } else { - return "" + "(Command " + (self.lhs.$s_exp()) + ")" - } - }, $Command_s_exp$3.$$arity = 0); - self.$private(); - return (Opal.def(self, '$cmp_op_text', $Command_cmp_op_text$4 = function $$cmp_op_text() { - var self = this, $case = nil; - - return (function() {$case = self.cmp_op; - if ("!="['$===']($case)) {return "<>"} - else if ("=="['$===']($case)) {return "="} - else {return self.cmp_op.$to_s()}})() - }, $Command_cmp_op_text$4.$$arity = 0), nil) && 'cmp_op_text'; - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BinaryOp'); - - var $nesting = [self].concat($parent_nesting), $BinaryOp_initialize$5, $BinaryOp_eval$6, $BinaryOp_to_s$7, $BinaryOp_output$8, $BinaryOp_s_exp$9, $BinaryOp_calc$10, $BinaryOp_op_for_s_exp$11; - - self.$$prototype.lhs = self.$$prototype.rhs = self.$$prototype.op = nil; - - - Opal.def(self, '$initialize', $BinaryOp_initialize$5 = function $$initialize(lhs, op, rhs) { - var self = this; - - - self.lhs = lhs; - self.op = op; - return (self.rhs = rhs); - }, $BinaryOp_initialize$5.$$arity = 3); - - Opal.def(self, '$eval', $BinaryOp_eval$6 = function(randomizer) { - var self = this, lhs = nil, rhs = nil; - - - lhs = self.lhs.$eval(randomizer); - rhs = self.rhs.$eval(randomizer); - return self.$calc(lhs, rhs); - }, $BinaryOp_eval$6.$$arity = 1); - - Opal.def(self, '$to_s', $BinaryOp_to_s$7 = function $$to_s() { - var self = this; - - return "" + (self.lhs) + (self.op) + (self.rhs) - }, $BinaryOp_to_s$7.$$arity = 0); - - Opal.def(self, '$output', $BinaryOp_output$8 = function $$output() { - var self = this; - - return "" + (self.lhs.$output()) + (self.op) + (self.rhs.$output()) - }, $BinaryOp_output$8.$$arity = 0); - - Opal.def(self, '$s_exp', $BinaryOp_s_exp$9 = function $$s_exp() { - var self = this; - - return "" + "(" + (self.$op_for_s_exp()) + " " + (self.lhs.$s_exp()) + " " + (self.rhs.$s_exp()) + ")" - }, $BinaryOp_s_exp$9.$$arity = 0); - self.$private(); - - Opal.def(self, '$calc', $BinaryOp_calc$10 = function $$calc(lhs, rhs) { - var self = this; - - return lhs.$send(self.op, rhs) - }, $BinaryOp_calc$10.$$arity = 2); - return (Opal.def(self, '$op_for_s_exp', $BinaryOp_op_for_s_exp$11 = function $$op_for_s_exp() { - var self = this; - - return self.op - }, $BinaryOp_op_for_s_exp$11.$$arity = 0), nil) && 'op_for_s_exp'; - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DivideBase'); - - var $nesting = [self].concat($parent_nesting), $DivideBase_initialize$12, $DivideBase_to_s$13, $DivideBase_output$14, $DivideBase_rounding_method$15, $DivideBase_op_for_s_exp$16, $DivideBase_calc$17, $DivideBase_divide_and_round$18; - - self.$$prototype.op = nil; - - - Opal.def(self, '$initialize', $DivideBase_initialize$12 = function $$initialize(lhs, rhs) { - var $iter = $DivideBase_initialize$12.$$p, $yield = $iter || nil, self = this; - - if ($iter) $DivideBase_initialize$12.$$p = null; - return $send(self, Opal.find_super_dispatcher(self, 'initialize', $DivideBase_initialize$12, false), [lhs, "/", rhs], null) - }, $DivideBase_initialize$12.$$arity = 2); - - Opal.def(self, '$to_s', $DivideBase_to_s$13 = function $$to_s() { - var $iter = $DivideBase_to_s$13.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $DivideBase_to_s$13.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - return "" + ($send(self, Opal.find_super_dispatcher(self, 'to_s', $DivideBase_to_s$13, false), $zuper, $iter)) + (self.$rounding_method()) - }, $DivideBase_to_s$13.$$arity = 0); - - Opal.def(self, '$output', $DivideBase_output$14 = function $$output() { - var $iter = $DivideBase_output$14.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $DivideBase_output$14.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - return "" + ($send(self, Opal.find_super_dispatcher(self, 'output', $DivideBase_output$14, false), $zuper, $iter)) + (self.$rounding_method()) - }, $DivideBase_output$14.$$arity = 0); - self.$private(); - - Opal.def(self, '$rounding_method', $DivideBase_rounding_method$15 = function $$rounding_method() { - var self = this; - - return $$$(self.$class(), 'ROUNDING_METHOD') - }, $DivideBase_rounding_method$15.$$arity = 0); - - Opal.def(self, '$op_for_s_exp', $DivideBase_op_for_s_exp$16 = function $$op_for_s_exp() { - var self = this; - - return "" + (self.op) + (self.$rounding_method()) - }, $DivideBase_op_for_s_exp$16.$$arity = 0); - - Opal.def(self, '$calc', $DivideBase_calc$17 = function $$calc(lhs, rhs) { - var self = this; - - - if ($truthy(rhs['$zero?']())) { - return 1}; - return self.$divide_and_round(lhs, rhs); - }, $DivideBase_calc$17.$$arity = 2); - return (Opal.def(self, '$divide_and_round', $DivideBase_divide_and_round$18 = function $$divide_and_round(_dividend, _divisor) { - var self = this; - - return self.$raise($$($nesting, 'NotImplementedError')) - }, $DivideBase_divide_and_round$18.$$arity = 2), nil) && 'divide_and_round'; - })($nesting[0], $$($nesting, 'BinaryOp'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DivideWithRoundingUp'); - - var $nesting = [self].concat($parent_nesting), $DivideWithRoundingUp_divide_and_round$19; - - - Opal.const_set($nesting[0], 'ROUNDING_METHOD', "U"); - self.$private(); - return (Opal.def(self, '$divide_and_round', $DivideWithRoundingUp_divide_and_round$19 = function $$divide_and_round(dividend, divisor) { - var self = this; - - return $rb_divide(dividend.$to_f(), divisor).$ceil() - }, $DivideWithRoundingUp_divide_and_round$19.$$arity = 2), nil) && 'divide_and_round'; - })($nesting[0], $$($nesting, 'DivideBase'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DivideWithRoundingOff'); - - var $nesting = [self].concat($parent_nesting), $DivideWithRoundingOff_divide_and_round$20; - - - Opal.const_set($nesting[0], 'ROUNDING_METHOD', "R"); - self.$private(); - return (Opal.def(self, '$divide_and_round', $DivideWithRoundingOff_divide_and_round$20 = function $$divide_and_round(dividend, divisor) { - var self = this; - - return $rb_divide(dividend.$to_f(), divisor).$round() - }, $DivideWithRoundingOff_divide_and_round$20.$$arity = 2), nil) && 'divide_and_round'; - })($nesting[0], $$($nesting, 'DivideBase'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DivideWithRoundingDown'); - - var $nesting = [self].concat($parent_nesting), $DivideWithRoundingDown_divide_and_round$21; - - - Opal.const_set($nesting[0], 'ROUNDING_METHOD', ""); - self.$private(); - return (Opal.def(self, '$divide_and_round', $DivideWithRoundingDown_divide_and_round$21 = function $$divide_and_round(dividend, divisor) { - var self = this; - - return $rb_divide(dividend, divisor).$floor() - }, $DivideWithRoundingDown_divide_and_round$21.$$arity = 2), nil) && 'divide_and_round'; - })($nesting[0], $$($nesting, 'DivideBase'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Negate'); - - var $nesting = [self].concat($parent_nesting), $Negate_initialize$22, $Negate_eval$23, $Negate_to_s$24, $Negate_output$25, $Negate_s_exp$26; - - self.$$prototype.body = nil; - - self.$attr_reader("body"); - - Opal.def(self, '$initialize', $Negate_initialize$22 = function $$initialize(body) { - var self = this; - - return (self.body = body) - }, $Negate_initialize$22.$$arity = 1); - - Opal.def(self, '$eval', $Negate_eval$23 = function(randomizer) { - var self = this; - - return self.body.$eval(randomizer)['$-@']() - }, $Negate_eval$23.$$arity = 1); - - Opal.def(self, '$to_s', $Negate_to_s$24 = function $$to_s() { - var self = this; - - return "" + "-" + (self.body) - }, $Negate_to_s$24.$$arity = 0); - - Opal.def(self, '$output', $Negate_output$25 = function $$output() { - var self = this; - - return "" + "-" + (self.body.$output()) - }, $Negate_output$25.$$arity = 0); - return (Opal.def(self, '$s_exp', $Negate_s_exp$26 = function $$s_exp() { - var self = this; - - return "" + "(- " + (self.body.$s_exp()) + ")" - }, $Negate_s_exp$26.$$arity = 0), nil) && 's_exp'; - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceRoll'); - - var $nesting = [self].concat($parent_nesting), $DiceRoll_initialize$27, $DiceRoll_eval$28, $DiceRoll_to_s$30, $DiceRoll_output$31, $DiceRoll_s_exp$32; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.text = nil; - - - Opal.def(self, '$initialize', $DiceRoll_initialize$27 = function $$initialize(times, sides) { - var self = this; - - - self.times = times.$literal(); - self.sides = sides.$literal(); - return (self.text = nil); - }, $DiceRoll_initialize$27.$$arity = 2); - - Opal.def(self, '$eval', $DiceRoll_eval$28 = function(randomizer) { - var $$29, self = this, dice_groups = nil, total = nil, dice_str = nil; - - - dice_groups = randomizer.$roll(self.times, self.sides); - total = $send(dice_groups.$flatten(), 'reduce', [0], "+".$to_proc()); - dice_str = $send(dice_groups, 'map', [], ($$29 = function(dice_list){var self = $$29.$$s || this; - - - - if (dice_list == null) { - dice_list = nil; - }; - return "" + "[" + (dice_list.$join(",")) + "]";}, $$29.$$s = self, $$29.$$arity = 1, $$29)).$join(); - self.text = "" + (total) + (dice_str); - return total; - }, $DiceRoll_eval$28.$$arity = 1); - - Opal.def(self, '$to_s', $DiceRoll_to_s$30 = function $$to_s() { - var self = this; - - return "" + (self.times) + "D" + (self.sides) - }, $DiceRoll_to_s$30.$$arity = 0); - - Opal.def(self, '$output', $DiceRoll_output$31 = function $$output() { - var self = this; - - return self.text - }, $DiceRoll_output$31.$$arity = 0); - return (Opal.def(self, '$s_exp', $DiceRoll_s_exp$32 = function $$s_exp() { - var self = this; - - return "" + "(DiceRoll " + (self.times) + " " + (self.sides) + ")" - }, $DiceRoll_s_exp$32.$$arity = 0), nil) && 's_exp'; - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceRollWithFilter'); - - var $nesting = [self].concat($parent_nesting), $DiceRollWithFilter$33, $DiceRollWithFilter$34, $DiceRollWithFilter$35, $DiceRollWithFilter$36, $DiceRollWithFilter_initialize$37, $DiceRollWithFilter_eval$38, $DiceRollWithFilter_to_s$39, $DiceRollWithFilter_output$40, $DiceRollWithFilter_s_exp$41; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.filter = self.$$prototype.n_filtering = self.$$prototype.text = nil; - - Opal.const_set($nesting[0], 'Filter', $$($nesting, 'Struct').$new("abbr", "apply")); - Opal.const_set($nesting[0], 'KEEP_HIGHEST', $$($nesting, 'Filter').$new("KH", $send(self, 'lambda', [], ($DiceRollWithFilter$33 = function(sorted_values, n){var self = $DiceRollWithFilter$33.$$s || this; - - - - if (sorted_values == null) { - sorted_values = nil; - }; - - if (n == null) { - n = nil; - }; - return sorted_values.$reverse().$take(n);}, $DiceRollWithFilter$33.$$s = self, $DiceRollWithFilter$33.$$arity = 2, $DiceRollWithFilter$33))).$freeze()); - Opal.const_set($nesting[0], 'KEEP_LOWEST', $$($nesting, 'Filter').$new("KL", $send(self, 'lambda', [], ($DiceRollWithFilter$34 = function(sorted_values, n){var self = $DiceRollWithFilter$34.$$s || this; - - - - if (sorted_values == null) { - sorted_values = nil; - }; - - if (n == null) { - n = nil; - }; - return sorted_values.$take(n);}, $DiceRollWithFilter$34.$$s = self, $DiceRollWithFilter$34.$$arity = 2, $DiceRollWithFilter$34))).$freeze()); - Opal.const_set($nesting[0], 'DROP_HIGHEST', $$($nesting, 'Filter').$new("DH", $send(self, 'lambda', [], ($DiceRollWithFilter$35 = function(sorted_values, n){var self = $DiceRollWithFilter$35.$$s || this; - - - - if (sorted_values == null) { - sorted_values = nil; - }; - - if (n == null) { - n = nil; - }; - return sorted_values.$reverse().$drop(n);}, $DiceRollWithFilter$35.$$s = self, $DiceRollWithFilter$35.$$arity = 2, $DiceRollWithFilter$35))).$freeze()); - Opal.const_set($nesting[0], 'DROP_LOWEST', $$($nesting, 'Filter').$new("DL", $send(self, 'lambda', [], ($DiceRollWithFilter$36 = function(sorted_values, n){var self = $DiceRollWithFilter$36.$$s || this; - - - - if (sorted_values == null) { - sorted_values = nil; - }; - - if (n == null) { - n = nil; - }; - return sorted_values.$drop(n);}, $DiceRollWithFilter$36.$$s = self, $DiceRollWithFilter$36.$$arity = 2, $DiceRollWithFilter$36))).$freeze()); - - Opal.def(self, '$initialize', $DiceRollWithFilter_initialize$37 = function $$initialize(times, sides, n_filtering, filter) { - var self = this; - - - self.times = times.$literal(); - self.sides = sides.$literal(); - self.n_filtering = n_filtering.$literal(); - self.filter = filter; - return (self.text = nil); - }, $DiceRollWithFilter_initialize$37.$$arity = 4); - - Opal.def(self, '$eval', $DiceRollWithFilter_eval$38 = function(randomizer) { - var self = this, sorted_values = nil, total = nil; - - - sorted_values = randomizer.$roll_once(self.times, self.sides).$sort(); - total = $send(self.filter.$apply()['$[]'](sorted_values, self.n_filtering), 'reduce', [0], "+".$to_proc()); - self.text = "" + (total) + "[" + (sorted_values.$join(",")) + "]"; - return total; - }, $DiceRollWithFilter_eval$38.$$arity = 1); - - Opal.def(self, '$to_s', $DiceRollWithFilter_to_s$39 = function $$to_s() { - var self = this; - - return "" + (self.times) + "D" + (self.sides) + (self.filter.$abbr()) + (self.n_filtering) - }, $DiceRollWithFilter_to_s$39.$$arity = 0); - - Opal.def(self, '$output', $DiceRollWithFilter_output$40 = function $$output() { - var self = this; - - return self.text - }, $DiceRollWithFilter_output$40.$$arity = 0); - return (Opal.def(self, '$s_exp', $DiceRollWithFilter_s_exp$41 = function $$s_exp() { - var self = this; - - return "" + "(DiceRollWithFilter " + (self.times) + " " + (self.sides) + " " + (self.filter.$abbr().$inspect()) + " " + (self.n_filtering) + ")" - }, $DiceRollWithFilter_s_exp$41.$$arity = 0), nil) && 's_exp'; - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Number'); - - var $nesting = [self].concat($parent_nesting), $Number_initialize$42, $Number_negate$43, $Number_eval$44, $Number_to_s$45; - - self.$$prototype.literal = nil; - - self.$attr_reader("literal"); - - Opal.def(self, '$initialize', $Number_initialize$42 = function $$initialize(literal) { - var self = this; - - return (self.literal = literal) - }, $Number_initialize$42.$$arity = 1); - - Opal.def(self, '$negate', $Number_negate$43 = function $$negate() { - var self = this; - - return $$($nesting, 'Number').$new(self.literal['$-@']()) - }, $Number_negate$43.$$arity = 0); - - Opal.def(self, '$eval', $Number_eval$44 = function(_randomizer) { - var self = this; - - return self.literal - }, $Number_eval$44.$$arity = 1); - - Opal.def(self, '$to_s', $Number_to_s$45 = function $$to_s() { - var self = this; - - return self.literal.$to_s() - }, $Number_to_s$45.$$arity = 0); - Opal.alias(self, "output", "to_s"); - return Opal.alias(self, "s_exp", "to_s"); - })($nesting[0], null, $nesting); - })($nesting[0], $nesting) - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["dice/add_dice/parser"] = function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$partition', '$comparison_operator', '$!', '$empty?', '$!=', '$eval', '$new', '$tokenize', '$expr', '$size', '$private', '$split', '$gsub', '$consume', '$add', '$mul', '$loop', '$sub_negative_number', '$is_a?', '$<', '$literal', '$==', '$negate', '$unary', '$divide_node_class', '$===', '$body', '$term', '$expect_number', '$dice_roll_filter', '$slice', '$length', '$+', '$[]', '$integer?', '$to_i', '$nil?', '$match']); - - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/normalize"); - self.$require("dice/add_dice/node"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'AddDice'); - - var $nesting = [self].concat($parent_nesting); - - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Parser'); - - var $nesting = [self].concat($parent_nesting), $Parser_initialize$1, $Parser_parse$2, $Parser_error$ques$3, $Parser_tokenize$4, $Parser_expr$6, $Parser_add$7, $Parser_sub_negative_number$9, $Parser_mul$10, $Parser_divide_node_class$12, $Parser_unary$13, $Parser_term$14, $Parser_dice_roll_filter$15, $Parser_consume$16, $Parser_expect$17, $Parser_expect_number$18, $Parser_integer$ques$19; - - self.$$prototype.expr = self.$$prototype.idx = self.$$prototype.tokens = self.$$prototype.contain_dice_roll = self.$$prototype.error = nil; - - - Opal.def(self, '$initialize', $Parser_initialize$1 = function $$initialize(expr) { - var self = this; - - - self.expr = expr; - self.idx = 0; - self.error = false; - return (self.contain_dice_roll = false); - }, $Parser_initialize$1.$$arity = 1); - - Opal.def(self, '$parse', $Parser_parse$2 = function $$parse() { - var $a, $b, self = this, lhs = nil, cmp_op = nil, rhs = nil; - - - $b = self.expr.$partition(/[<>=]+/), $a = Opal.to_ary($b), (lhs = ($a[0] == null ? nil : $a[0])), (cmp_op = ($a[1] == null ? nil : $a[1])), (rhs = ($a[2] == null ? nil : $a[2])), $b; - cmp_op = $$($nesting, 'Normalize').$comparison_operator(cmp_op); - if ($truthy(($truthy($a = rhs['$empty?']()['$!']()) ? rhs['$!=']("?") : $a))) { - rhs = $$($nesting, 'ArithmeticEvaluator').$new().$eval(rhs)}; - self.tokens = self.$tokenize(lhs); - lhs = self.$expr(); - if ($truthy(($truthy($a = self.idx['$!='](self.tokens.$size())) ? $a : self.contain_dice_roll['$!']()))) { - self.error = true}; - return $$$($$$($$($nesting, 'AddDice'), 'Node'), 'Command').$new(lhs, cmp_op, rhs); - }, $Parser_parse$2.$$arity = 0); - - Opal.def(self, '$error?', $Parser_error$ques$3 = function() { - var self = this; - - return self.error - }, $Parser_error$ques$3.$$arity = 0); - self.$private(); - - Opal.def(self, '$tokenize', $Parser_tokenize$4 = function $$tokenize(expr) { - var $$5, self = this; - - return $send(expr, 'gsub', [/[\+\-\*\/DURSKHL@]/], ($$5 = function(e){var self = $$5.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$5.$$s = self, $$5.$$arity = 1, $$5)).$split(" ") - }, $Parser_tokenize$4.$$arity = 1); - - Opal.def(self, '$expr', $Parser_expr$6 = function $$expr() { - var self = this; - - - self.$consume("S"); - return self.$add(); - }, $Parser_expr$6.$$arity = 0); - - Opal.def(self, '$add', $Parser_add$7 = function $$add() { - var $$8, self = this, node = nil; - - - node = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$8 = function(){var self = $$8.$$s || this, $a, $b, op = nil, rhs = nil; - - if ($truthy(self.$consume("+"))) { - - $b = self.$sub_negative_number("+", self.$mul()), $a = Opal.to_ary($b), (op = ($a[0] == null ? nil : $a[0])), (rhs = ($a[1] == null ? nil : $a[1])), $b; - return (node = $$$($$$($$($nesting, 'AddDice'), 'Node'), 'BinaryOp').$new(node, op, rhs)); - } else if ($truthy(self.$consume("-"))) { - - $b = self.$sub_negative_number("-", self.$mul()), $a = Opal.to_ary($b), (op = ($a[0] == null ? nil : $a[0])), (rhs = ($a[1] == null ? nil : $a[1])), $b; - return (node = $$$($$$($$($nesting, 'AddDice'), 'Node'), 'BinaryOp').$new(node, op, rhs)); - } else { - - Opal.brk(nil, $brk) - }}, $$8.$$s = self, $$8.$$brk = $brk, $$8.$$arity = 0, $$8)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return node; - }, $Parser_add$7.$$arity = 0); - - Opal.def(self, '$sub_negative_number', $Parser_sub_negative_number$9 = function $$sub_negative_number(op, rhs) { - var $a, self = this; - - - if ($truthy(($truthy($a = rhs['$is_a?']($$$($$($nesting, 'Node'), 'Number'))) ? $rb_lt(rhs.$literal(), 0) : $a))) { - if (op['$==']("+")) { - return ["-", rhs.$negate()] - } else if (op['$==']("-")) { - return ["+", rhs.$negate()]}}; - return [op, rhs]; - }, $Parser_sub_negative_number$9.$$arity = 2); - - Opal.def(self, '$mul', $Parser_mul$10 = function $$mul() { - var $$11, self = this, node = nil; - - - node = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$11 = function(){var self = $$11.$$s || this, rhs = nil, klass = nil; - - if ($truthy(self.$consume("*"))) { - return (node = $$$($$$($$($nesting, 'AddDice'), 'Node'), 'BinaryOp').$new(node, "*", self.$unary())) - } else if ($truthy(self.$consume("/"))) { - - rhs = self.$unary(); - klass = self.$divide_node_class(); - return (node = klass.$new(node, rhs)); - } else { - - Opal.brk(nil, $brk) - }}, $$11.$$s = self, $$11.$$brk = $brk, $$11.$$arity = 0, $$11)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return node; - }, $Parser_mul$10.$$arity = 0); - - Opal.def(self, '$divide_node_class', $Parser_divide_node_class$12 = function $$divide_node_class() { - var self = this; - - if ($truthy(self.$consume("U"))) { - return $$$($$($nesting, 'Node'), 'DivideWithRoundingUp') - } else if ($truthy(self.$consume("R"))) { - return $$$($$($nesting, 'Node'), 'DivideWithRoundingOff') - } else { - return $$$($$($nesting, 'Node'), 'DivideWithRoundingDown') - } - }, $Parser_divide_node_class$12.$$arity = 0); - - Opal.def(self, '$unary', $Parser_unary$13 = function $$unary() { - var self = this, node = nil, $case = nil; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - - node = self.$unary(); - return (function() {$case = node; - if ($$$($$($nesting, 'Node'), 'Negate')['$===']($case)) {return node.$body()} - else if ($$$($$($nesting, 'Node'), 'Number')['$===']($case)) {return node.$negate()} - else {return $$$($$$($$($nesting, 'AddDice'), 'Node'), 'Negate').$new(node)}})(); - } else { - return self.$term() - } - }, $Parser_unary$13.$$arity = 0); - - Opal.def(self, '$term', $Parser_term$14 = function $$term() { - var self = this, num = nil, times = nil, sides = nil, filter = nil, n_filtering = nil; - - - num = self.$expect_number(); - if ($truthy(self.$consume("D"))) { - - times = num; - sides = self.$expect_number(); - filter = self.$dice_roll_filter(); - if ($truthy(filter)) { - - n_filtering = self.$expect_number(); - self.contain_dice_roll = true; - return $$$($$($nesting, 'Node'), 'DiceRollWithFilter').$new(times, sides, n_filtering, filter);}; - self.contain_dice_roll = true; - return $$$($$($nesting, 'Node'), 'DiceRoll').$new(times, sides);}; - return num; - }, $Parser_term$14.$$arity = 0); - - Opal.def(self, '$dice_roll_filter', $Parser_dice_roll_filter$15 = function $$dice_roll_filter() { - var self = this; - - if ($truthy(self.$consume("K", "H"))) { - return $$$($$$($$($nesting, 'Node'), 'DiceRollWithFilter'), 'KEEP_HIGHEST') - } else if ($truthy(self.$consume("K", "L"))) { - return $$$($$$($$($nesting, 'Node'), 'DiceRollWithFilter'), 'KEEP_LOWEST') - } else if ($truthy(self.$consume("D", "H"))) { - return $$$($$$($$($nesting, 'Node'), 'DiceRollWithFilter'), 'DROP_HIGHEST') - } else if ($truthy(self.$consume("D", "L"))) { - return $$$($$$($$($nesting, 'Node'), 'DiceRollWithFilter'), 'DROP_LOWEST') - } else { - return nil - } - }, $Parser_dice_roll_filter$15.$$arity = 0); - - Opal.def(self, '$consume', $Parser_consume$16 = function $$consume($a) { - var $post_args, expected, self = this, target = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - expected = $post_args;; - target = self.tokens.$slice(self.idx, expected.$length()); - if (target['$=='](expected)) { - } else { - return false - }; - self.idx = $rb_plus(self.idx, expected.$length()); - return true; - }, $Parser_consume$16.$$arity = -1); - - Opal.def(self, '$expect', $Parser_expect$17 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $Parser_expect$17.$$arity = 1); - - Opal.def(self, '$expect_number', $Parser_expect_number$18 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return $$$($$$($$($nesting, 'AddDice'), 'Node'), 'Number').$new(0); - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return $$$($$$($$($nesting, 'AddDice'), 'Node'), 'Number').$new(ret); - }, $Parser_expect_number$18.$$arity = 0); - return (Opal.def(self, '$integer?', $Parser_integer$ques$19 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $Parser_integer$ques$19.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["dice/add_dice/randomizer"] = function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2; - - Opal.add_stubs(['$attr_reader', '$!', '$empty?', '$shift', '$roll_once', '$concat', '$push', '$enqueue_reroll', '$<', '$==', '$new', '$getD66Value', '$roll', '$&', '$sortType', '$map', '$split', '$to_proc', '$private', '$!=', '$sameDiceRerollCount', '$<=', '$sameDiceRerollType', '$debug', '$double_check?', '$>=', '$each', '$[]', '$[]=', '$-', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'AddDice'); - - var $nesting = [self].concat($parent_nesting); - - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Randomizer'); - - var $nesting = [self].concat($parent_nesting), $Randomizer_initialize$1, $Randomizer_roll$2, $Randomizer_roll_once$3, $Randomizer_double_check$ques$5, $Randomizer_enqueue_reroll$6; - - self.$$prototype.dice_list = self.$$prototype.sides = self.$$prototype.bcdice = self.$$prototype.dicebot = self.$$prototype.cmp_op = nil; - - self.$attr_reader("dicebot", "cmp_op", "dice_list", "sides"); - - Opal.def(self, '$initialize', $Randomizer_initialize$1 = function $$initialize(bcdice, dicebot, cmp_op) { - var self = this; - - - self.bcdice = bcdice; - self.dicebot = dicebot; - self.cmp_op = cmp_op; - self.sides = 0; - return (self.dice_list = []); - }, $Randomizer_initialize$1.$$arity = 3); - - Opal.def(self, '$roll', $Randomizer_roll$2 = function $$roll(times, sides) { - var $a, self = this, dice_groups = nil, queue = nil, dice_list = nil; - - - dice_groups = []; - queue = [times]; - while ($truthy(queue['$empty?']()['$!']())) { - - times = queue.$shift(); - dice_list = self.$roll_once(times, sides); - self.dice_list.$concat(dice_list); - dice_groups.$push(dice_list); - self.$enqueue_reroll(dice_list, queue, times); - }; - return dice_groups; - }, $Randomizer_roll$2.$$arity = 2); - - Opal.def(self, '$roll_once', $Randomizer_roll_once$3 = function $$roll_once(times, sides) { - var $$4, $a, $b, self = this, _ = nil, dice_str = nil; - - - if ($truthy($rb_lt(self.sides, sides))) { - self.sides = sides}; - if (sides['$=='](66)) { - return $send($$($nesting, 'Array'), 'new', [times], ($$4 = function(){var self = $$4.$$s || this; - if (self.bcdice == null) self.bcdice = nil; - - return self.bcdice.$getD66Value()}, $$4.$$s = self, $$4.$$arity = 0, $$4))}; - $b = self.bcdice.$roll(times, sides, self.dicebot.$sortType()['$&'](1)), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - return $send(dice_str.$split(","), 'map', [], "to_i".$to_proc()); - }, $Randomizer_roll_once$3.$$arity = 2); - self.$private(); - - Opal.def(self, '$double_check?', $Randomizer_double_check$ques$5 = function() { - var self = this; - - - if ($truthy(self.dicebot.$sameDiceRerollCount()['$!='](0))) { - if ($truthy($rb_le(self.dicebot.$sameDiceRerollType(), 0))) { - if ($truthy(self.cmp_op)) { - return true} - } else if ($truthy($rb_le(self.dicebot.$sameDiceRerollType(), 1))) { - - self.$debug("ダメージのみ振り足し"); - if ($truthy(self.cmp_op)) { - } else { - return true - }; - } else { - return true - }}; - return false; - }, $Randomizer_double_check$ques$5.$$arity = 0); - return (Opal.def(self, '$enqueue_reroll', $Randomizer_enqueue_reroll$6 = function $$enqueue_reroll(dice_list, dice_queue, roll_times) { - var $a, $$7, $$8, self = this, count_bucket = nil, reroll_threshold = nil; - - - if ($truthy(($truthy($a = self['$double_check?']()) ? $rb_ge(roll_times, 2) : $a))) { - } else { - return nil - }; - count_bucket = $hash2([], {}); - $send(dice_list, 'each', [], ($$7 = function(val){var self = $$7.$$s || this, $b, $writer = nil; - - - - if (val == null) { - val = nil; - }; - ($truthy($b = count_bucket['$[]'](val)) ? $b : (($writer = [val, 0]), $send(count_bucket, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - - $writer = [val, $rb_plus(count_bucket['$[]'](val), 1)]; - $send(count_bucket, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];;}, $$7.$$s = self, $$7.$$arity = 1, $$7)); - reroll_threshold = (function() {if (self.dicebot.$sameDiceRerollCount()['$=='](1)) { - return roll_times - } else { - return self.dicebot.$sameDiceRerollCount() - }; return nil; })(); - return $send(count_bucket, 'each', [], ($$8 = function(_, num){var self = $$8.$$s || this; - - - - if (_ == null) { - _ = nil; - }; - - if (num == null) { - num = nil; - }; - if ($truthy($rb_ge(num, reroll_threshold))) { - return dice_queue.$push(num) - } else { - return nil - };}, $$8.$$s = self, $$8.$$arity = 2, $$8)); - }, $Randomizer_enqueue_reroll$6.$$arity = 3), nil) && 'enqueue_reroll'; - })($nesting[0], null, $nesting) - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["dice/AddDice"] = function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$nick_e', '$new', '$parse', '$error?', '$cmp_op', '$eval', '$lhs', '$<=', '$size', '$dice_list', '$is_a?', '$output', '$count', '$sides', '$getDiceRevision', '$+', '$inject', '$to_proc', '$check_result', '$rhs', '$getDiceRolledAdditionalText']); - - self.$require("utils/normalize"); - self.$require("dice/add_dice/parser"); - self.$require("dice/add_dice/randomizer"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'AddDice'); - - var $nesting = [self].concat($parent_nesting), $AddDice_initialize$1, $AddDice_rollDice$2; - - self.$$prototype.bcdice = self.$$prototype.diceBot = self.$$prototype.nick_e = nil; - - - Opal.def(self, '$initialize', $AddDice_initialize$1 = function $$initialize(bcdice, diceBot) { - var self = this; - - - self.bcdice = bcdice; - self.diceBot = diceBot; - self.nick_e = self.bcdice.$nick_e(); - return (self.dice_list = []); - }, $AddDice_initialize$1.$$arity = 2); - return (Opal.def(self, '$rollDice', $AddDice_rollDice$2 = function $$rollDice(string) { - var $a, $b, self = this, parser = nil, command = nil, randomizer = nil, total = nil, output = nil, dice_list = nil, num_one = nil, num_max = nil, suffix = nil, revision = nil, dice_total = nil; - - - parser = $$($nesting, 'Parser').$new(string); - command = parser.$parse(); - if ($truthy(parser['$error?']())) { - return "1"}; - randomizer = $$($nesting, 'Randomizer').$new(self.bcdice, self.diceBot, command.$cmp_op()); - total = command.$lhs().$eval(randomizer); - output = (function() {if ($truthy(($truthy($a = $rb_le(randomizer.$dice_list().$size(), 1)) ? command.$lhs()['$is_a?']($$$($$($nesting, 'Node'), 'DiceRoll')) : $a))) { - return "" + (self.nick_e) + ": (" + (command) + ") > " + (total) - } else { - return "" + (self.nick_e) + ": (" + (command) + ") > " + (command.$lhs().$output()) + " > " + (total) - }; return nil; })(); - dice_list = randomizer.$dice_list(); - num_one = dice_list.$count(1); - num_max = dice_list.$count(randomizer.$sides()); - $b = self.diceBot.$getDiceRevision(num_max, randomizer.$sides(), total), $a = Opal.to_ary($b), (suffix = ($a[0] == null ? nil : $a[0])), (revision = ($a[1] == null ? nil : $a[1])), $b; - output = $rb_plus(output, suffix); - total = $rb_plus(total, revision); - if ($truthy(command.$cmp_op())) { - - dice_total = $send(dice_list, 'inject', [], "+".$to_proc()); - output = $rb_plus(output, self.diceBot.$check_result(total, dice_total, dice_list, randomizer.$sides(), command.$cmp_op(), command.$rhs()));}; - output = $rb_plus(output, self.diceBot.$getDiceRolledAdditionalText(num_one, num_max, randomizer.$sides())); - return output; - }, $AddDice_rollDice$2.$$arity = 1), nil) && 'rollDice'; - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/format"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$module_function', '$===', '$to_s', '$==', '$>']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Format'); - - var $nesting = [self].concat($parent_nesting), $Format_comparison_operator$1, $Format_modifier$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Format_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if ("=="['$===']($case)) {return "="} - else if ("!="['$===']($case)) {return "<>"} - else if ($$($nesting, 'Symbol')['$===']($case)) {return op.$to_s()} - else { return nil }})() - }, $Format_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$modifier', $Format_modifier$2 = function $$modifier(number) { - var self = this; - - if (number['$=='](0)) { - return "" - } else if ($truthy($rb_gt(number, 0))) { - return "" + "+" + (number) - } else { - return number.$to_s() - } - }, $Format_modifier$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["dice/UpperDice"] = function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$include', '$nick_e', '$match', '$[]', '$comparison_operator', '$to_i', '$reroll_threshold', '$eval', '$new', '$to_sym', '$fractionType', '$<=', '$expr', '$each', '$split', '$map', '$to_proc', '$concat', '$roll', '$count', '$+', '$==', '$!=', '$send', '$inject', '$max', '$dice_text', '$format_modifier', '$join', '$private', '$upperRollThreshold', '$roll_ones', '$&', '$sortType', '$sort_by', '$loop', '$push', '$<', '$size']); - - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/normalize"); - self.$require("utils/format"); - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'UpperDice'); - - var $nesting = [self].concat($parent_nesting), $UpperDice_initialize$1, $UpperDice_rollDice$2, $UpperDice_roll$7, $UpperDice_roll_ones$10, $UpperDice_dice_text$12, $UpperDice_reroll_threshold$14, $UpperDice_expr$15; - - self.$$prototype.bcdice = self.$$prototype.cmp_op = self.$$prototype.diceBot = self.$$prototype.reroll_threshold = self.$$prototype.nick_e = self.$$prototype.command = self.$$prototype.modify_number = self.$$prototype.target_number = nil; - - self.$include($$($nesting, 'ModifierFormatter')); - - Opal.def(self, '$initialize', $UpperDice_initialize$1 = function $$initialize(bcdice, diceBot) { - var self = this; - - - self.bcdice = bcdice; - self.diceBot = diceBot; - return (self.nick_e = self.bcdice.$nick_e()); - }, $UpperDice_initialize$1.$$arity = 2); - - Opal.def(self, '$rollDice', $UpperDice_rollDice$2 = function $$rollDice(string) { - var $a, $$3, $$4, $$5, $$6, self = this, m = nil, roll_list = nil, result = nil, success_count = nil, sum_list = nil, total = nil, max = nil, sequence = nil; - - - if ($truthy((m = /^S?(\d+U\d+(?:\+\d+U\d+)*)(?:\[(\d+)\])?([\+\-\d]*)(?:([<>=]+)(\d+))?(?:@(\d+))?/i.$match(string)))) { - } else { - return "1" - }; - self.command = m['$[]'](1); - self.cmp_op = $$($nesting, 'Normalize').$comparison_operator(m['$[]'](4)); - self.target_number = (function() {if ($truthy(self.cmp_op)) { - return m['$[]'](5).$to_i() - } else { - return nil - }; return nil; })(); - self.reroll_threshold = self.$reroll_threshold(($truthy($a = m['$[]'](2)) ? $a : m['$[]'](6))); - self.modify_number = (function() {if ($truthy(m['$[]'](3))) { - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(m['$[]'](3), self.diceBot.$fractionType().$to_sym()) - } else { - return 0 - }; return nil; })(); - if ($truthy($rb_le(self.reroll_threshold, 1))) { - return "" + (self.nick_e) + ": (" + (self.$expr()) + ") > 無限ロールの条件がまちがっています"}; - roll_list = []; - $send(self.command.$split("+"), 'each', [], ($$3 = function(u){var self = $$3.$$s || this, $b, $c, times = nil, sides = nil; - - - - if (u == null) { - u = nil; - }; - $c = $send(u.$split("U", 2), 'map', [], "to_i".$to_proc()), $b = Opal.to_ary($c), (times = ($b[0] == null ? nil : $b[0])), (sides = ($b[1] == null ? nil : $b[1])), $c; - return roll_list.$concat(self.$roll(times, sides));}, $$3.$$s = self, $$3.$$arity = 1, $$3)); - result = (function() {if ($truthy(self.cmp_op)) { - - success_count = $send(roll_list, 'count', [], ($$4 = function(e){var self = $$4.$$s || this, x = nil; - if (self.modify_number == null) self.modify_number = nil; - if (self.cmp_op == null) self.cmp_op = nil; - if (self.target_number == null) self.target_number = nil; - - - - if (e == null) { - e = nil; - }; - x = $rb_plus(e['$[]']("sum"), self.modify_number); - if (self.cmp_op['$==']("!=")) { - return x['$!='](self.target_number) - } else { - return x.$send(self.cmp_op, self.target_number) - };}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - return "" + "成功数" + (success_count); - } else { - - sum_list = $send(roll_list, 'map', [], ($$5 = function(e){var self = $$5.$$s || this; - - - - if (e == null) { - e = nil; - }; - return e['$[]']("sum");}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - total = $rb_plus(sum_list.$inject(0, "+"), self.modify_number); - max = $send(sum_list, 'map', [], ($$6 = function(i){var self = $$6.$$s || this; - if (self.modify_number == null) self.modify_number = nil; - - - - if (i == null) { - i = nil; - }; - return $rb_plus(i, self.modify_number);}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$max(); - return "" + (max) + "/" + (total) + "(最大/合計)"; - }; return nil; })(); - sequence = ["" + (self.nick_e) + ": (" + (self.$expr()) + ")", $rb_plus(self.$dice_text(roll_list), self.$format_modifier(self.modify_number)), result]; - return sequence.$join(" > "); - }, $UpperDice_rollDice$2.$$arity = 1); - self.$private(); - - Opal.def(self, '$roll', $UpperDice_roll$7 = function $$roll(times, sides) { - var $$8, $$9, self = this, ret = nil; - - - if (self.diceBot.$upperRollThreshold()['$==']("Max")) { - self.reroll_threshold = sides}; - ret = $send($$($nesting, 'Array'), 'new', [times], ($$8 = function(){var self = $$8.$$s || this, list = nil; - - - list = self.$roll_ones(sides); - return $hash2(["sum", "list"], {"sum": list.$inject(0, "+"), "list": list});}, $$8.$$s = self, $$8.$$arity = 0, $$8)); - if ($truthy(self.diceBot.$sortType()['$&'](2)['$!='](0))) { - ret = $send(ret, 'sort_by', [], ($$9 = function(e){var self = $$9.$$s || this; - - - - if (e == null) { - e = nil; - }; - return e['$[]']("sum");}, $$9.$$s = self, $$9.$$arity = 1, $$9))}; - return ret; - }, $UpperDice_roll$7.$$arity = 2); - - Opal.def(self, '$roll_ones', $UpperDice_roll_ones$10 = function $$roll_ones(sides) { - var $$11, self = this, dice_list = nil; - - - dice_list = []; - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$11 = function(){var self = $$11.$$s || this, $a, $b, value = nil; - if (self.bcdice == null) self.bcdice = nil; - if (self.reroll_threshold == null) self.reroll_threshold = nil; - - - $b = self.bcdice.$roll(1, sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - dice_list.$push(value); - if ($truthy($rb_lt(value, self.reroll_threshold))) { - - Opal.brk(nil, $brk) - } else { - return nil - };}, $$11.$$s = self, $$11.$$brk = $brk, $$11.$$arity = 0, $$11)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return dice_list; - }, $UpperDice_roll_ones$10.$$arity = 1); - - Opal.def(self, '$dice_text', $UpperDice_dice_text$12 = function $$dice_text(roll_list) { - var $$13, self = this; - - return $send(roll_list, 'map', [], ($$13 = function(e){var self = $$13.$$s || this; - - - - if (e == null) { - e = nil; - }; - if (e['$[]']("list").$size()['$=='](1)) { - return e['$[]']("sum") - } else { - return "" + (e['$[]']("sum")) + "[" + (e['$[]']("list").$join(",")) + "]" - };}, $$13.$$s = self, $$13.$$arity = 1, $$13)).$join(",") - }, $UpperDice_dice_text$12.$$arity = 1); - - Opal.def(self, '$reroll_threshold', $UpperDice_reroll_threshold$14 = function $$reroll_threshold(target) { - var self = this; - - if ($truthy(target)) { - return target.$to_i() - } else if (self.diceBot.$upperRollThreshold()['$==']("Max")) { - return 2 - } else { - return self.diceBot.$upperRollThreshold() - } - }, $UpperDice_reroll_threshold$14.$$arity = 1); - return (Opal.def(self, '$expr', $UpperDice_expr$15 = function $$expr() { - var self = this; - - return "" + (self.command) + "[" + (self.reroll_threshold) + "]" + (self.$format_modifier(self.modify_number)) + ($$($nesting, 'Format').$comparison_operator(self.cmp_op)) + (self.target_number) - }, $UpperDice_expr$15.$$arity = 0), nil) && 'expr'; - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["dice/RerollDice"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$nick_e', '$parse', '$msg_invalid_reroll_number', '$map', '$split', '$to_proc', '$all?', '$valid_reroll_rule?', '$[]', '$!', '$empty?', '$should_reroll?', '$shift', '$+', '$roll_', '$count', '$compare', '$push', '$join', '$zero?', '$>', '$getGrichText', '$compact', '$expr', '$trim_prefix', '$private', '$match', '$comparison_operator', '$to_i', '$target_from_default', '$decide_reroll_cmp_op', '$decide_reroll_threshold', '$defaultSuccessTarget', '$!=', '$rerollNumber', '$===', '$<', '$<=', '$>=', '$include?', '$roll', '$&', '$sortType', '$start_with?', '$size', '$==', '$send']); - - self.$require("utils/normalize"); - self.$require("utils/format"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RerollDice'); - - var $nesting = [self].concat($parent_nesting), $RerollDice_initialize$1, $RerollDice_rollDice$2, $RerollDice_parse$7, $RerollDice_target_from_default$8, $RerollDice_decide_reroll_cmp_op$9, $RerollDice_decide_reroll_threshold$10, $RerollDice_expr$11, $RerollDice_msg_invalid_reroll_number$12, $RerollDice_valid_reroll_rule$ques$13, $RerollDice_roll_$14, $RerollDice_trim_prefix$15, $RerollDice_compare$16; - - self.$$prototype.bcdice = self.$$prototype.reroll_threshold = self.$$prototype.notation = self.$$prototype.diceBot = self.$$prototype.cmp_op = self.$$prototype.nick_e = self.$$prototype.target_number = self.$$prototype.reroll_cmp_op = nil; - - - Opal.def(self, '$initialize', $RerollDice_initialize$1 = function $$initialize(bcdice, diceBot) { - var self = this; - - - self.bcdice = bcdice; - self.diceBot = diceBot; - return (self.nick_e = self.bcdice.$nick_e()); - }, $RerollDice_initialize$1.$$arity = 2); - - Opal.def(self, '$rollDice', $RerollDice_rollDice$2 = function $$rollDice(string) { - var $$3, $$4, $a, $b, $c, $$5, $$6, self = this, dice_queue = nil, success_count = nil, dice_str_list = nil, dice_cnt_total = nil, one_count = nil, loop_count = nil, dice_total_count = nil, x = nil, n = nil, depth = nil, dice_list = nil, reroll_count = nil, grich_text = nil, sequence = nil; - - - if ($truthy(self.$parse(string))) { - } else { - return nil - }; - if ($truthy(self.reroll_threshold)) { - } else { - return self.$msg_invalid_reroll_number(string) - }; - dice_queue = $send(self.notation.$split("+"), 'map', [], ($$3 = function(xRn){var self = $$3.$$s || this, $a, $b, x = nil, n = nil; - - - - if (xRn == null) { - xRn = nil; - }; - $b = $send(xRn.$split("R"), 'map', [], "to_i".$to_proc()), $a = Opal.to_ary($b), (x = ($a[0] == null ? nil : $a[0])), (n = ($a[1] == null ? nil : $a[1])), $b; - return [x, n, 0];}, $$3.$$s = self, $$3.$$arity = 1, $$3)); - if ($truthy($send(dice_queue, 'all?', [], ($$4 = function(d){var self = $$4.$$s || this; - if (self.reroll_cmp_op == null) self.reroll_cmp_op = nil; - if (self.reroll_threshold == null) self.reroll_threshold = nil; - - - - if (d == null) { - d = nil; - }; - return self['$valid_reroll_rule?'](d['$[]'](1), self.reroll_cmp_op, self.reroll_threshold);}, $$4.$$s = self, $$4.$$arity = 1, $$4)))) { - } else { - return self.$msg_invalid_reroll_number(string) - }; - success_count = 0; - dice_str_list = []; - dice_cnt_total = 0; - one_count = 0; - loop_count = 0; - dice_total_count = 0; - while ($truthy(($truthy($b = dice_queue['$empty?']()['$!']()) ? self.diceBot['$should_reroll?'](loop_count) : $b))) { - - $c = dice_queue.$shift(), $b = Opal.to_ary($c), (x = ($b[0] == null ? nil : $b[0])), (n = ($b[1] == null ? nil : $b[1])), (depth = ($b[2] == null ? nil : $b[2])), $c; - loop_count = $rb_plus(loop_count, 1); - dice_total_count = $rb_plus(dice_total_count, x); - dice_list = self.$roll_(x, n); - if ($truthy(self.cmp_op)) { - success_count = $rb_plus(success_count, $send(dice_list, 'count', [], ($$5 = function(val){var self = $$5.$$s || this; - if (self.cmp_op == null) self.cmp_op = nil; - if (self.target_number == null) self.target_number = nil; - - - - if (val == null) { - val = nil; - }; - return self.$compare(val, self.cmp_op, self.target_number);}, $$5.$$s = self, $$5.$$arity = 1, $$5)))}; - reroll_count = $send(dice_list, 'count', [], ($$6 = function(val){var self = $$6.$$s || this; - if (self.reroll_cmp_op == null) self.reroll_cmp_op = nil; - if (self.reroll_threshold == null) self.reroll_threshold = nil; - - - - if (val == null) { - val = nil; - }; - return self.$compare(val, self.reroll_cmp_op, self.reroll_threshold);}, $$6.$$s = self, $$6.$$arity = 1, $$6)); - dice_str_list.$push(dice_list.$join(",")); - if ($truthy(depth['$zero?']())) { - one_count = $rb_plus(one_count, dice_list.$count(1))}; - if ($truthy($rb_gt(reroll_count, 0))) { - dice_queue.$push([reroll_count, n, $rb_plus(depth, 1)])}; - }; - grich_text = self.diceBot.$getGrichText(one_count, dice_total_count, success_count); - sequence = [self.$expr(), dice_str_list.$join(" + "), "" + "成功数" + (success_count), self.$trim_prefix(" > ", grich_text)].$compact(); - return "" + (self.nick_e) + ": " + (sequence.$join(" > ")); - }, $RerollDice_rollDice$2.$$arity = 1); - self.$private(); - - Opal.def(self, '$parse', $RerollDice_parse$7 = function $$parse(command) { - var $a, $b, self = this, m = nil; - - - m = /^S?(\d+R\d+(?:\+\d+R\d+)*)(?:\[([<>=]+)?(\d+)\])?(?:([<>=]+)(\d+))?(?:@([<>=]+)?(\d+))?$/.$match(command); - if ($truthy(m)) { - } else { - return false - }; - self.notation = m['$[]'](1); - self.cmp_op = $$($nesting, 'Normalize').$comparison_operator(m['$[]'](4)); - self.target_number = (function() {if ($truthy(self.cmp_op)) { - return m['$[]'](5).$to_i() - } else { - return nil - }; return nil; })(); - if ($truthy(self.cmp_op)) { - } else { - $b = self.$target_from_default(), $a = Opal.to_ary($b), (self.cmp_op = ($a[0] == null ? nil : $a[0])), (self.target_number = ($a[1] == null ? nil : $a[1])), $b - }; - self.reroll_cmp_op = self.$decide_reroll_cmp_op(m); - self.reroll_threshold = self.$decide_reroll_threshold(($truthy($a = m['$[]'](3)) ? $a : m['$[]'](7)), self.target_number); - return true; - }, $RerollDice_parse$7.$$arity = 1); - - Opal.def(self, '$target_from_default', $RerollDice_target_from_default$8 = function $$target_from_default() { - var self = this, m = nil, cmp_op = nil, target_number = nil; - - - m = /^([<>=]+)(\d+)$/.$match(self.diceBot.$defaultSuccessTarget()); - if ($truthy(m)) { - } else { - return [nil, nil] - }; - cmp_op = $$($nesting, 'Normalize').$comparison_operator(m['$[]'](1)); - target_number = (function() {if ($truthy(cmp_op)) { - return m['$[]'](2).$to_i() - } else { - return nil - }; return nil; })(); - return [cmp_op, target_number]; - }, $RerollDice_target_from_default$8.$$arity = 0); - - Opal.def(self, '$decide_reroll_cmp_op', $RerollDice_decide_reroll_cmp_op$9 = function $$decide_reroll_cmp_op(m) { - var $a, self = this, bracket_op = nil, bracket_number = nil, at_op = nil, at_number = nil, cmp_op = nil, op = nil; - - - bracket_op = m['$[]'](2); - bracket_number = m['$[]'](3); - at_op = m['$[]'](6); - at_number = m['$[]'](7); - cmp_op = m['$[]'](4); - op = (function() {if ($truthy(($truthy($a = bracket_op) ? bracket_number : $a))) { - return bracket_op - } else if ($truthy(($truthy($a = at_op) ? at_number : $a))) { - return at_op - } else { - return cmp_op - }; return nil; })(); - return ($truthy($a = $$($nesting, 'Normalize').$comparison_operator(op)) ? $a : ">="); - }, $RerollDice_decide_reroll_cmp_op$9.$$arity = 1); - - Opal.def(self, '$decide_reroll_threshold', $RerollDice_decide_reroll_threshold$10 = function $$decide_reroll_threshold(captured_threshold, target_number) { - var self = this; - - if ($truthy(captured_threshold)) { - return captured_threshold.$to_i() - } else if ($truthy(self.diceBot.$rerollNumber()['$!='](0))) { - return self.diceBot.$rerollNumber() - } else { - return target_number - } - }, $RerollDice_decide_reroll_threshold$10.$$arity = 2); - - Opal.def(self, '$expr', $RerollDice_expr$11 = function $$expr() { - var self = this, reroll_cmp_op_text = nil, cmp_op_text = nil; - - - reroll_cmp_op_text = (function() {if ($truthy(self.cmp_op['$!='](self.reroll_cmp_op))) { - return $$($nesting, 'Format').$comparison_operator(self.reroll_cmp_op) - } else { - return nil - }; return nil; })(); - cmp_op_text = $$($nesting, 'Format').$comparison_operator(self.cmp_op); - return "" + "(" + (self.notation) + "[" + (reroll_cmp_op_text) + (self.reroll_threshold) + "]" + (cmp_op_text) + (self.target_number) + ")"; - }, $RerollDice_expr$11.$$arity = 0); - - Opal.def(self, '$msg_invalid_reroll_number', $RerollDice_msg_invalid_reroll_number$12 = function $$msg_invalid_reroll_number(command) { - var self = this; - - return "" + (self.nick_e) + ": " + (command) + " > 条件が間違っています。2R6>=5 あるいは 2R6[5] のように振り足し目標値を指定してください。" - }, $RerollDice_msg_invalid_reroll_number$12.$$arity = 1); - - Opal.def(self, '$valid_reroll_rule?', $RerollDice_valid_reroll_rule$ques$13 = function(sides, cmp_op, reroll_threshold) { - var self = this, $case = nil; - - return (function() {$case = cmp_op; - if ("<="['$===']($case)) {return $rb_lt(reroll_threshold, sides)} - else if ("<"['$===']($case)) {return $rb_le(reroll_threshold, sides)} - else if (">="['$===']($case)) {return $rb_gt(reroll_threshold, 1)} - else if (">"['$===']($case)) {return $rb_ge(reroll_threshold, 1)} - else if ("!="['$===']($case)) {return Opal.Range.$new(1, sides, false)['$include?'](reroll_threshold)} - else {return true}})() - }, $RerollDice_valid_reroll_rule$ques$13.$$arity = 3); - - Opal.def(self, '$roll_', $RerollDice_roll_$14 = function $$roll_(times, sides) { - var $a, $b, self = this, _ = nil, dice_list = nil; - - - $b = self.bcdice.$roll(times, sides, self.diceBot.$sortType()['$&'](2)), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dice_list = ($a[1] == null ? nil : $a[1])), $b; - return $send(dice_list.$split(","), 'map', [], "to_i".$to_proc()); - }, $RerollDice_roll_$14.$$arity = 2); - - Opal.def(self, '$trim_prefix', $RerollDice_trim_prefix$15 = function $$trim_prefix(prefix, string) { - var self = this; - - - if ($truthy(string['$start_with?'](prefix))) { - string = string['$[]'](Opal.Range.$new(prefix.$size(), -1, false))}; - if ($truthy(string['$empty?']())) { - return nil - } else { - return string - }; - }, $RerollDice_trim_prefix$15.$$arity = 2); - return (Opal.def(self, '$compare', $RerollDice_compare$16 = function $$compare(lhs, op, rhs) { - var self = this; - - if (op['$==']("!=")) { - return lhs['$!='](rhs) - } else { - return lhs.$send(op, rhs) - } - }, $RerollDice_compare$16.$$arity = 3), nil) && 'compare'; - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["bcdiceCore"] = function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var $a, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $gvars = Opal.gvars, $truthy = Opal.truthy, $hash2 = Opal.hash2, $klass = Opal.klass, $send = Opal.send, $range = Opal.range; - - Opal.add_stubs(['$require', '$<', '$===', '$new', '$initValues', '$attr_accessor', '$freeze', '$attr_reader', '$setDiceBot', '$setBcDice', '$setDir', '$id', '$nil?', '$bcdice=', '$-', '$readExtraCard', '$first', '$split', '$debug', '$parren_killer', '$upcase', '$recieveMessageCatched', '$printErrorMessage', '$sendMessageToOnlySender', '$+', '$to_s', '$join', '$backtrace', '$setTnick', '$executePointCounter', '$addPlot', '$clone', '$=~', '$getPrintPlotChannel', '$==', '$empty?', '$executeCommand', '$countHolder', '$sendMessage', '$last_match', '$addToSecretDiceResult', '$getNick', '$[]', '$recievePublicMessageCatched', '$setChannelForPlotOrSecretDice', '$printPlot', '$printSecretRoll', '$executePointCounterPublic', '$executeDiceRoll', '$!=', '$changeMessageOriginal', '$executeCard', '$openSecretRoll', '$each', '$setPrintPlotChannel', '$isTalkChannel', '$!', '$dice_command', '$broadmsg', '$setNick', '$rollD66', '$checkAddRoll', '$checkBDice', '$checkRnDice', '$checkUpperRoll', '$checkChoiceCommand', '$getTableDataResult', '$start_with?', '$rollDice', '$bdice', '$dice_command_xRn', '$choice_random', '$getTableData', '$getTableIndexDiceValueAndDiceText', '$find', '$rollTableMessageDiceText', '$nick_e', '$roll', '$getD66Infos', '$getD66ValueByMarker', '$floor', '$/', '$%', '$gsub', '$to_i', '$d66Type', '$isD9', '$<=', '$times', '$loop', '$roll_d9', '$rand', '$sendMode', '$>=', '$>', '$check_hit', '$push', '$sort_by', '$dice_num', '$randNomal', '$randFromRands', '$<<', '$rand_inner', '$push_to_detail', '$*', '$shift', '$raise', '$inspect', '$sub', '$marshalSignOfInequality', '$defaultSuccessTarget', '$&', '$sortType', '$getGrichText', '$d66dice', '$getD66', '$getD66Value', '$getSecretRollMembersHolderKey', '$getSecretDiceResultHolderKey', '$delete', '$addToSecretRollMembersHolder', '$saveSecretDiceResult', '$[]=', '$include?', '$length', '$is_a?', '$sendMessageToChannels', '$map', '$to_proc', '$changeRangeTextToNumberText', '$to_sym', '$fractionType', '$eval', '$changeText', '$loadDiceBot', '$loadUnknownGame', '$postSet', '$name']); - - self.$require("log"); - self.$require("configBcDice.rb"); - self.$require("CountHolder.rb"); - self.$require("utils/ArithmeticEvaluator.rb"); - $gvars.RUBY18_WIN = ($truthy($a = $rb_lt($$($nesting, 'RUBY_VERSION'), "1.9")) ? /mswin(?!ce)|mingw|cygwin|bccwin/i['$===']($$($nesting, 'RUBY_PLATFORM')) : $a); - $gvars.secretRollMembersHolder = $hash2([], {}); - $gvars.secretDiceResultHolder = $hash2([], {}); - $gvars.plotPrintChannels = $hash2([], {}); - $gvars.point_counter = $hash2([], {}); - self.$require("CardTrader"); - self.$require("TableFileData"); - self.$require("diceBot/DiceBot"); - self.$require("diceBot/DiceBotLoader"); - self.$require("diceBot/DiceBotLoaderList"); - self.$require("dice/AddDice"); - self.$require("dice/UpperDice"); - self.$require("dice/RerollDice"); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BCDiceMaker'); - - var $nesting = [self].concat($parent_nesting), $BCDiceMaker_initialize$1, $BCDiceMaker_newBcDice$2; - - self.$$prototype.cardTrader = self.$$prototype.diceBot = self.$$prototype.counterInfos = self.$$prototype.tableFileData = nil; - - - Opal.def(self, '$initialize', $BCDiceMaker_initialize$1 = function $$initialize() { - var self = this; - - - self.diceBot = $$($nesting, 'DiceBot').$new(); - self.cardTrader = $$($nesting, 'CardTrader').$new(); - self.cardTrader.$initValues(); - self.counterInfos = $hash2([], {}); - return (self.tableFileData = $$($nesting, 'TableFileData').$new()); - }, $BCDiceMaker_initialize$1.$$arity = 0); - self.$attr_accessor("diceBotPath"); - return (Opal.def(self, '$newBcDice', $BCDiceMaker_newBcDice$2 = function $$newBcDice() { - var self = this, bcdice = nil; - - - bcdice = $$($nesting, 'BCDice').$new(self, self.cardTrader, self.diceBot, self.counterInfos, self.tableFileData); - return bcdice; - }, $BCDiceMaker_newBcDice$2.$$arity = 0), nil) && 'newBcDice'; - })($nesting[0], null, $nesting); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BCDice'); - - var $nesting = [self].concat($parent_nesting), $BCDice_initialize$3, $BCDice_setDir$4, $BCDice_isKeepSecretDice$5, $BCDice_getGameType$6, $BCDice_setDiceBot$7, $BCDice_readExtraCard$8, $BCDice_setIrcClient$9, $BCDice_setMessage$10, $BCDice_getOriginalMessage$11, $BCDice_changeMessageOriginal$12, $BCDice_recieveMessage$13, $BCDice_printErrorMessage$14, $BCDice_recieveMessageCatched$15, $BCDice_executePointCounter$16, $BCDice_addPlot$17, $BCDice_getPrintPlotChannel$18, $BCDice_setChannel$19, $BCDice_recievePublicMessage$20, $BCDice_recievePublicMessageCatched$21, $BCDice_printPlot$22, $BCDice_setChannelForPlotOrSecretDice$24, $BCDice_isTalkChannel$25, $BCDice_printSecretRoll$26, $BCDice_executePointCounterPublic$28, $BCDice_executeDiceRoll$29, $BCDice_setTest$30, $BCDice_executeCard$31, $BCDice_dice_command$32, $BCDice_checkAddRoll$33, $BCDice_checkBDice$34, $BCDice_checkRnDice$35, $BCDice_checkUpperRoll$36, $BCDice_checkChoiceCommand$37, $BCDice_getTableDataResult$38, $BCDice_getTableIndexDiceValueAndDiceText$40, $BCDice_rollTableMessageDiceText$41, $BCDice_roll$43, $BCDice_setRandomValues$47, $BCDice_rand_inner$48, $BCDice_rand$49, $BCDice_roll_tens_d10$50, $BCDice_roll_d9$51, $BCDice_setCollectRandResult$52, $BCDice_push_to_detail$53, $BCDice_randNomal$54, $BCDice_randFromRands$55, $BCDice_dice_num$56, $BCDice_bdice$57, $BCDice_rollD66$59, $BCDice_d66dice$60, $BCDice_getD66Infos$62, $BCDice_getD66ValueByMarker$63, $BCDice_getD66Value$64, $BCDice_getD66$65, $BCDice_openSecretRoll$66, $BCDice_getNick$68, $BCDice_addToSecretDiceResult$69, $BCDice_addToSecretRollMembersHolder$70, $BCDice_getSecretRollMembersHolderKey$71, $BCDice_saveSecretDiceResult$72, $BCDice_getSecretDiceResultHolderKey$73, $BCDice_setPrintPlotChannel$74, $BCDice_choice_random$75, $BCDice_getMarshaledSignOfInequality$76, $BCDice_marshalSignOfInequality$77, $BCDice_check_hit$78, $BCDice_broadmsg$79, $BCDice_sendMessage$80, $BCDice_sendMessageToOnlySender$81, $BCDice_sendMessageToChannels$82, $BCDice_parren_killer$83, $BCDice_changeRangeTextToNumberText$87, $BCDice_setGameByTitle$88; - - self.$$prototype.cardTrader = self.$$prototype.tableFileData = self.$$prototype.diceBot = self.$$prototype.messageOriginal = self.$$prototype.message = self.$$prototype.nick_e = self.$$prototype.tnick = self.$$prototype.messages = self.$$prototype.channel = self.$$prototype.counterInfos = self.$$prototype.isTest = self.$$prototype.isKeepSecretDice = self.$$prototype.rands = self.$$prototype.collect_rand_results = self.$$prototype.rand_results = self.$$prototype.detailed_rand_results = self.$$prototype.ircClient = nil; - - Opal.const_set($nesting[0], 'VERSION', "2.08.00".$freeze()); - self.$attr_reader("diceBot"); - self.$attr_reader("cardTrader"); - self.$attr_reader("rand_results"); - Opal.alias(self, "getRandResults", "rand_results"); - self.$attr_reader("detailed_rand_results"); - self.$attr_reader("nick_e"); - - Opal.def(self, '$initialize', $BCDice_initialize$3 = function $$initialize(parent, cardTrader, diceBot, counterInfos, tableFileData) { - var self = this; - - - self.parent = parent; - self.$setDiceBot(diceBot); - self.cardTrader = cardTrader; - self.cardTrader.$setBcDice(self); - self.counterInfos = counterInfos; - self.tableFileData = tableFileData; - self.nick_e = ""; - self.tnick = ""; - self.rands = nil; - self.isKeepSecretDice = true; - self.collect_rand_results = false; - self.rand_results = []; - return (self.detailed_rand_results = []); - }, $BCDice_initialize$3.$$arity = 5); - - Opal.def(self, '$setDir', $BCDice_setDir$4 = function $$setDir(dir, prefix) { - var self = this; - - return self.tableFileData.$setDir(dir, prefix) - }, $BCDice_setDir$4.$$arity = 2); - - Opal.def(self, '$isKeepSecretDice', $BCDice_isKeepSecretDice$5 = function $$isKeepSecretDice(b) { - var self = this; - - return (self.isKeepSecretDice = b) - }, $BCDice_isKeepSecretDice$5.$$arity = 1); - - Opal.def(self, '$getGameType', $BCDice_getGameType$6 = function $$getGameType() { - var self = this; - - return self.diceBot.$id() - }, $BCDice_getGameType$6.$$arity = 0); - - Opal.def(self, '$setDiceBot', $BCDice_setDiceBot$7 = function $$setDiceBot(diceBot) { - var self = this, $writer = nil; - - - if ($truthy(diceBot['$nil?']())) { - return nil}; - self.diceBot = diceBot; - - $writer = [self]; - $send(self.diceBot, 'bcdice=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - }, $BCDice_setDiceBot$7.$$arity = 1); - - Opal.def(self, '$readExtraCard', $BCDice_readExtraCard$8 = function $$readExtraCard(cardFileName) { - var self = this; - - return self.cardTrader.$readExtraCard(cardFileName) - }, $BCDice_readExtraCard$8.$$arity = 1); - - Opal.def(self, '$setIrcClient', $BCDice_setIrcClient$9 = function $$setIrcClient(client) { - var self = this; - - return (self.ircClient = client) - }, $BCDice_setIrcClient$9.$$arity = 1); - - Opal.def(self, '$setMessage', $BCDice_setMessage$10 = function $$setMessage(message) { - var self = this, openPattern = nil, messageToSet = nil, $case = nil; - if ($gvars.OPEN_DICE == null) $gvars.OPEN_DICE = nil; - if ($gvars.OPEN_PLOT == null) $gvars.OPEN_PLOT = nil; - - - openPattern = new RegExp("" + "\\A\\s*(?:" + ($gvars.OPEN_DICE) + "|" + ($gvars.OPEN_PLOT) + ")\\s*\\z", 'i'); - messageToSet = (function() {$case = message; - if (openPattern['$===']($case)) {return message} - else {return message.$split(/\s/, 2).$first()}})(); - self.$debug("setMessage messageToSet", messageToSet); - self.messageOriginal = self.$parren_killer(messageToSet); - self.message = self.messageOriginal.$upcase(); - return self.$debug("@message", self.message); - }, $BCDice_setMessage$10.$$arity = 1); - - Opal.def(self, '$getOriginalMessage', $BCDice_getOriginalMessage$11 = function $$getOriginalMessage() { - var self = this; - - return self.messageOriginal - }, $BCDice_getOriginalMessage$11.$$arity = 0); - - Opal.def(self, '$changeMessageOriginal', $BCDice_changeMessageOriginal$12 = function $$changeMessageOriginal() { - var self = this; - - return (self.message = self.messageOriginal) - }, $BCDice_changeMessageOriginal$12.$$arity = 0); - - Opal.def(self, '$recieveMessage', $BCDice_recieveMessage$13 = function $$recieveMessage(nick_e, tnick) { - var self = this, e = nil; - - try { - return self.$recieveMessageCatched(nick_e, tnick) - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - return self.$printErrorMessage(e) - } finally { Opal.pop_exception() } - } else { throw $err; } - } - }, $BCDice_recieveMessage$13.$$arity = 2); - - Opal.def(self, '$printErrorMessage', $BCDice_printErrorMessage$14 = function $$printErrorMessage(e) { - var self = this; - - return self.$sendMessageToOnlySender($rb_plus($rb_plus("error ", e.$to_s()), e.$backtrace().$join("\n"))) - }, $BCDice_printErrorMessage$14.$$arity = 1); - - Opal.def(self, '$recieveMessageCatched', $BCDice_recieveMessageCatched$15 = function $$recieveMessageCatched(nick_e, tnick) { - var self = this; - - - self.$debug("recieveMessage nick_e, tnick", nick_e, tnick); - self.nick_e = nick_e; - self.cardTrader.$setTnick(self.nick_e); - self.tnick = tnick; - self.cardTrader.$setTnick(self.tnick); - self.$debug("@nick_e, @tnick", self.nick_e, self.tnick); - self.$executePointCounter(); - return self.$addPlot(self.messageOriginal.$clone()); - }, $BCDice_recieveMessageCatched$15.$$arity = 2); - - Opal.def(self, '$executePointCounter', $BCDice_executePointCounter$16 = function $$executePointCounter() { - var $a, $b, self = this, arg = nil, channel = nil, pointerMode = nil, output = nil, $case = nil; - - - arg = self.messages; - self.$debug("executePointCounter arg", arg); - if ($truthy(arg['$=~'](/^#/))) { - } else { - - self.$debug("executePointCounter is NOT matched"); - return nil; - }; - channel = self.$getPrintPlotChannel(self.nick_e); - self.$debug("getPrintPlotChannel get channel", channel); - if (channel['$==']("1")) { - - self.$sendMessageToOnlySender("表示チャンネルが登録されていません"); - return nil;}; - if ($truthy(self.tnick['$empty?']())) { - } else { - arg = $rb_plus(arg, "" + "->" + (self.tnick)) - }; - pointerMode = "sameNick"; - $b = self.$countHolder().$executeCommand(arg, self.nick_e, channel, pointerMode), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (pointerMode = ($a[1] == null ? nil : $a[1])), $b; - self.$debug("point_counter_command called, line", 195); - self.$debug("output", output); - self.$debug("pointerMode", pointerMode); - if (output['$==']("1")) { - - self.$debug("executePointCounter point_counter_command output is \"1\""); - return nil;}; - $case = pointerMode; - if ("sameNick"['$===']($case)) { - self.$debug("executePointCounter:Talkで返事"); - self.$sendMessageToOnlySender(output);} - else if ("sameChannel"['$===']($case)) { - self.$debug("executePointCounter:publicで返事"); - self.$sendMessage(channel, output);}; - return self.$debug("executePointCounter end"); - }, $BCDice_executePointCounter$16.$$arity = 0); - - Opal.def(self, '$addPlot', $BCDice_addPlot$17 = function $$addPlot(arg) { - var self = this, plot = nil, channel = nil; - if ($gvars.ADD_PLOT == null) $gvars.ADD_PLOT = nil; - - - self.$debug("addPlot begin arg", arg); - if ($truthy(new RegExp("" + ($gvars.ADD_PLOT) + "[::](.+)", 'i')['$=~'](arg))) { - } else { - - self.$debug("addPlot exit"); - return nil; - }; - plot = $$($nesting, 'Regexp').$last_match(1); - channel = self.$getPrintPlotChannel(self.nick_e); - self.$debug("addPlot channel", channel); - if ($truthy(channel['$nil?']())) { - - self.$debug("channel.nil?"); - return self.$sendMessageToOnlySender("プロット出力先が登録されていません"); - } else { - - self.$debug("addToSecretDiceResult calling..."); - self.$addToSecretDiceResult(plot, channel, 1); - return self.$sendMessage(channel, "" + (self.nick_e) + " さんがプロットしました"); - }; - }, $BCDice_addPlot$17.$$arity = 1); - - Opal.def(self, '$getPrintPlotChannel', $BCDice_getPrintPlotChannel$18 = function $$getPrintPlotChannel(nick) { - var self = this; - if ($gvars.plotPrintChannels == null) $gvars.plotPrintChannels = nil; - - - nick = self.$getNick(nick); - return $gvars.plotPrintChannels['$[]'](nick); - }, $BCDice_getPrintPlotChannel$18.$$arity = 1); - - Opal.def(self, '$setChannel', $BCDice_setChannel$19 = function $$setChannel(channel) { - var self = this; - - - self.$debug("setChannel called channel", channel); - return (self.channel = channel); - }, $BCDice_setChannel$19.$$arity = 1); - - Opal.def(self, '$recievePublicMessage', $BCDice_recievePublicMessage$20 = function $$recievePublicMessage(nick_e) { - var self = this, e = nil; - - try { - return self.$recievePublicMessageCatched(nick_e) - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - return self.$printErrorMessage(e) - } finally { Opal.pop_exception() } - } else { throw $err; } - } - }, $BCDice_recievePublicMessage$20.$$arity = 1); - - Opal.def(self, '$recievePublicMessageCatched', $BCDice_recievePublicMessageCatched$21 = function $$recievePublicMessageCatched(nick_e) { - var self = this, output = nil; - if ($gvars.OPEN_PLOT == null) $gvars.OPEN_PLOT = nil; - if ($gvars.OPEN_DICE == null) $gvars.OPEN_DICE = nil; - - - self.$debug("recievePublicMessageCatched begin nick_e", nick_e); - self.$debug("recievePublicMessageCatched @channel", self.channel); - self.$debug("recievePublicMessageCatched @message", self.message); - self.nick_e = nick_e; - self.$setChannelForPlotOrSecretDice(); - if ($truthy(new RegExp("" + "(^|\\s+)" + ($gvars.OPEN_PLOT) + "(\\s+|$)", 'i')['$=~'](self.message))) { - - self.$debug("print plot", self.message); - self.$printPlot();}; - if ($truthy(new RegExp("" + "(^|\\s+)" + ($gvars.OPEN_DICE) + "(\\s+|$)", 'i')['$=~'](self.message))) { - - self.$debug("print secret roll", self.message); - self.$printSecretRoll();}; - self.$executePointCounterPublic(); - self.$executeDiceRoll(); - if ($truthy(/(^|\s)C([-\d]+)\s*$/i['$=~'](self.message))) { - - output = $$($nesting, 'Regexp').$last_match(2); - if ($truthy(output['$!='](""))) { - self.$sendMessage(self.channel, "" + (self.nick_e) + ": 計算結果 > " + (output))};}; - self.$changeMessageOriginal(); - self.$executeCard(); - return self.$debug("\non_public end"); - }, $BCDice_recievePublicMessageCatched$21.$$arity = 1); - - Opal.def(self, '$printPlot', $BCDice_printPlot$22 = function $$printPlot() { - var $$23, self = this, messageList = nil; - - - self.$debug("printPlot begin"); - messageList = self.$openSecretRoll(self.channel, 1); - self.$debug("messageList", messageList); - return $send(messageList, 'each', [], ($$23 = function(message){var self = $$23.$$s || this; - if (self.channel == null) self.channel = nil; - - - - if (message == null) { - message = nil; - }; - if ($truthy(message['$empty?']())) { - - self.$debug("message is empty"); - return self.$setPrintPlotChannel(); - } else { - - self.$debug("message", message); - return self.$sendMessage(self.channel, message); - };}, $$23.$$s = self, $$23.$$arity = 1, $$23)); - }, $BCDice_printPlot$22.$$arity = 0); - - Opal.def(self, '$setChannelForPlotOrSecretDice', $BCDice_setChannelForPlotOrSecretDice$24 = function $$setChannelForPlotOrSecretDice() { - var self = this, channel = nil; - - - self.$debug("setChannelForPlotOrSecretDice Begin"); - if ($truthy(self.$isTalkChannel())) { - return nil}; - channel = self.$getPrintPlotChannel(self.nick_e); - if ($truthy(channel['$nil?']())) { - return self.$setPrintPlotChannel() - } else { - return nil - }; - }, $BCDice_setChannelForPlotOrSecretDice$24.$$arity = 0); - - Opal.def(self, '$isTalkChannel', $BCDice_isTalkChannel$25 = function $$isTalkChannel() { - var self = this; - - return /^#/['$==='](self.channel)['$!']() - }, $BCDice_isTalkChannel$25.$$arity = 0); - - Opal.def(self, '$printSecretRoll', $BCDice_printSecretRoll$26 = function $$printSecretRoll() { - var $$27, self = this, outputs = nil; - - - outputs = self.$openSecretRoll(self.channel, 0); - return $send(outputs, 'each', [], ($$27 = function(diceResult){var self = $$27.$$s || this; - if (self.channel == null) self.channel = nil; - - - - if (diceResult == null) { - diceResult = nil; - }; - if ($truthy(diceResult['$empty?']())) { - return nil;}; - return self.$sendMessage(self.channel, diceResult);}, $$27.$$s = self, $$27.$$arity = 1, $$27)); - }, $BCDice_printSecretRoll$26.$$arity = 0); - - Opal.def(self, '$executePointCounterPublic', $BCDice_executePointCounterPublic$28 = function $$executePointCounterPublic() { - var $a, $b, self = this, pointerMode = nil, countHolder = nil, output = nil, secret = nil; - if ($gvars.READY_CMD == null) $gvars.READY_CMD = nil; - - - self.$debug("executePointCounterPublic begin"); - if ($truthy(new RegExp("" + "^" + ($gvars.READY_CMD) + "(\\s+|$)", 'i')['$=~'](self.message))) { - - self.$setPrintPlotChannel(); - self.$sendMessageToOnlySender("表示チャンネルを設定しました"); - return nil;}; - if ($truthy(/^#/['$=~'](self.message))) { - } else { - - self.$debug("executePointCounterPublic NOT match"); - return nil; - }; - pointerMode = "sameChannel"; - countHolder = $$($nesting, 'CountHolder').$new(self, self.counterInfos); - $b = countHolder.$executeCommand(self.message, self.nick_e, self.channel, pointerMode), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (secret = ($a[1] == null ? nil : $a[1])), $b; - self.$debug("executePointCounterPublic output, secret", output, secret); - if ($truthy(secret)) { - - self.$debug("is secret"); - if ($truthy(output['$!=']("1"))) { - return self.$sendMessageToOnlySender(output) - } else { - return nil - }; - } else { - - self.$debug("is NOT secret"); - if ($truthy(output['$!=']("1"))) { - return self.$sendMessage(self.channel, output) - } else { - return nil - }; - }; - }, $BCDice_executePointCounterPublic$28.$$arity = 0); - - Opal.def(self, '$executeDiceRoll', $BCDice_executeDiceRoll$29 = function $$executeDiceRoll() { - var $a, $b, self = this, output = nil, secret = nil; - - - self.$debug("executeDiceRoll begin"); - self.$debug("channel", self.channel); - $b = self.$dice_command(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (secret = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(secret)) { - } else { - - self.$debug("executeDiceRoll @channel", self.channel); - if ($truthy(output['$!=']("1"))) { - self.$sendMessage(self.channel, output)}; - return nil; - }; - if (output['$==']("1")) { - return nil}; - if ($truthy(self.isTest)) { - output = $rb_plus(output, "###secret dice###")}; - self.$broadmsg(output, self.nick_e); - if ($truthy(self.isKeepSecretDice)) { - return self.$addToSecretDiceResult(output, self.channel, 0) - } else { - return nil - }; - }, $BCDice_executeDiceRoll$29.$$arity = 0); - - Opal.def(self, '$setTest', $BCDice_setTest$30 = function $$setTest(isTest) { - var self = this; - - return (self.isTest = isTest) - }, $BCDice_setTest$30.$$arity = 1); - - Opal.def(self, '$executeCard', $BCDice_executeCard$31 = function $$executeCard() { - var self = this; - - - self.$debug("executeCard begin"); - self.cardTrader.$setNick(self.nick_e); - self.cardTrader.$setTnick(self.tnick); - self.cardTrader.$executeCard(self.message, self.channel); - return self.$debug("executeCard end"); - }, $BCDice_executeCard$31.$$arity = 0); - - Opal.def(self, '$dice_command', $BCDice_dice_command$32 = function $$dice_command() { - var $a, $b, self = this, arg = nil, output = nil, secret = nil; - - - arg = self.message.$upcase(); - self.$debug("dice_command arg", arg); - $b = self.diceBot.$dice_command(self.message, self.nick_e), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (secret = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(output['$!=']("1"))) { - return [output, secret]}; - $b = self.$rollD66(arg), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (secret = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(output['$nil?']())) { - } else { - return [output, secret] - }; - $b = self.$checkAddRoll(arg), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (secret = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(output['$nil?']())) { - } else { - return [output, secret] - }; - $b = self.$checkBDice(arg), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (secret = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(output['$nil?']())) { - } else { - return [output, secret] - }; - $b = self.$checkRnDice(arg), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (secret = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(output['$nil?']())) { - } else { - return [output, secret] - }; - $b = self.$checkUpperRoll(arg), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (secret = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(output['$nil?']())) { - } else { - return [output, secret] - }; - $b = self.$checkChoiceCommand(arg), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (secret = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(output['$nil?']())) { - } else { - return [output, secret] - }; - $b = self.$getTableDataResult(arg), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (secret = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(output['$nil?']())) { - } else { - return [output, secret] - }; - output = "1"; - secret = false; - return [output, secret]; - }, $BCDice_dice_command$32.$$arity = 0); - - Opal.def(self, '$checkAddRoll', $BCDice_checkAddRoll$33 = function $$checkAddRoll(arg) { - var self = this, secret = nil, command = nil, dice = nil, output = nil; - - - self.$debug("check add roll"); - secret = arg['$start_with?']("S"); - command = (function() {if ($truthy(secret)) { - return arg['$[]']($range(1, -1, false)) - } else { - return arg - }; return nil; })(); - dice = $$($nesting, 'AddDice').$new(self, self.diceBot); - output = dice.$rollDice(command); - if (output['$==']("1")) { - return nil}; - return [output, secret]; - }, $BCDice_checkAddRoll$33.$$arity = 1); - - Opal.def(self, '$checkBDice', $BCDice_checkBDice$34 = function $$checkBDice(arg) { - var self = this, output = nil, secret = nil; - - - self.$debug("check barabara roll"); - output = self.$bdice(arg); - if (output['$==']("1")) { - return nil}; - secret = /S[\d]+B[\d]+/i['$==='](arg); - return [output, secret]; - }, $BCDice_checkBDice$34.$$arity = 1); - - Opal.def(self, '$checkRnDice', $BCDice_checkRnDice$35 = function $$checkRnDice(arg) { - var $a, self = this, secret = nil, output = nil, dice = nil; - - - self.$debug("check xRn roll arg", arg); - if ($truthy(/(S)?[\d]+R[\d]+/i['$==='](arg))) { - } else { - return nil - }; - secret = $$($nesting, 'Regexp').$last_match(1)['$nil?']()['$!'](); - output = self.diceBot.$dice_command_xRn(arg, self.nick_e); - if ($truthy(($truthy($a = output['$nil?']()) ? $a : output['$==']("1")))) { - return nil}; - if ($truthy(output['$empty?']())) { - - dice = $$($nesting, 'RerollDice').$new(self, self.diceBot); - output = dice.$rollDice(arg);}; - if ($truthy(($truthy($a = output['$nil?']()) ? $a : output['$==']("1")))) { - return nil}; - self.$debug("xRn output", output); - return [output, secret]; - }, $BCDice_checkRnDice$35.$$arity = 1); - - Opal.def(self, '$checkUpperRoll', $BCDice_checkUpperRoll$36 = function $$checkUpperRoll(arg) { - var self = this, secret = nil, dice = nil, output = nil; - - - self.$debug("check upper roll"); - if ($truthy(/(S)?[\d]+U[\d]+/i['$==='](arg))) { - } else { - return nil - }; - secret = $$($nesting, 'Regexp').$last_match(1)['$nil?']()['$!'](); - dice = $$($nesting, 'UpperDice').$new(self, self.diceBot); - output = dice.$rollDice(arg); - if (output['$==']("1")) { - return nil}; - return [output, secret]; - }, $BCDice_checkUpperRoll$36.$$arity = 1); - - Opal.def(self, '$checkChoiceCommand', $BCDice_checkChoiceCommand$37 = function $$checkChoiceCommand(arg) { - var self = this, secret = nil, output = nil; - - - self.$debug("check choice command"); - if ($truthy(/((^|\s)(S)?choice\[[^,]+(,[^,]+)+\]($|\s))/i['$==='](arg))) { - } else { - return nil - }; - secret = $$($nesting, 'Regexp').$last_match(3)['$nil?']()['$!'](); - output = self.$choice_random($$($nesting, 'Regexp').$last_match(1)); - return [output, secret]; - }, $BCDice_checkChoiceCommand$37.$$arity = 1); - - Opal.def(self, '$getTableDataResult', $BCDice_getTableDataResult$38 = function $$getTableDataResult(arg) { - var $a, $b, $$39, self = this, dice = nil, title = nil, table = nil, secret = nil, value = nil, diceText = nil, key = nil, message = nil, output = nil; - - - self.$debug("getTableDataResult Begin"); - $b = self.tableFileData.$getTableData(arg, self.diceBot.$id()), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (title = ($a[1] == null ? nil : $a[1])), (table = ($a[2] == null ? nil : $a[2])), (secret = ($a[3] == null ? nil : $a[3])), $b; - self.$debug("dice", dice); - if ($truthy(table['$nil?']())) { - - self.$debug("table is null"); - return nil;}; - $b = self.$getTableIndexDiceValueAndDiceText(dice), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(value['$nil?']())) { - return nil}; - self.$debug("value", value); - $b = $send(table, 'find', [], ($$39 = function(i){var self = $$39.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$first()['$==='](value);}, $$39.$$s = self, $$39.$$arity = 1, $$39)), $a = Opal.to_ary($b), (key = ($a[0] == null ? nil : $a[0])), (message = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(message['$nil?']())) { - return nil}; - message = self.$rollTableMessageDiceText(message); - output = "" + (self.$nick_e()) + ":" + (title) + "(" + (value) + "[" + (diceText) + "]) > " + (message); - return [output, secret]; - }, $BCDice_getTableDataResult$38.$$arity = 1); - - Opal.def(self, '$getTableIndexDiceValueAndDiceText', $BCDice_getTableIndexDiceValueAndDiceText$40 = function $$getTableIndexDiceValueAndDiceText(dice) { - var $a, $b, self = this, diceCount = nil, diceType = nil, value = nil, diceText = nil, string = nil, _secret = nil, _count = nil, swapMarker = nil; - - - if ($truthy(/(\d+)D(\d+)/i['$==='](dice))) { - - diceCount = $$($nesting, 'Regexp').$last_match(1); - diceType = $$($nesting, 'Regexp').$last_match(2); - $b = self.$roll(diceCount, diceType), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - return [value, diceText];}; - $b = self.$getD66Infos(dice), $a = Opal.to_ary($b), (string = ($a[0] == null ? nil : $a[0])), (_secret = ($a[1] == null ? nil : $a[1])), (_count = ($a[2] == null ? nil : $a[2])), (swapMarker = ($a[3] == null ? nil : $a[3])), $b; - if ($truthy(string['$nil?']())) { - } else { - - value = self.$getD66ValueByMarker(swapMarker); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [value, diceText]; - }; - return nil; - }, $BCDice_getTableIndexDiceValueAndDiceText$40.$$arity = 1); - - Opal.def(self, '$rollTableMessageDiceText', $BCDice_rollTableMessageDiceText$41 = function $$rollTableMessageDiceText(text) { - var $$42, self = this, message = nil; - - - message = $send(text, 'gsub', [/(\d+)D(\d+)/], ($$42 = function(){var self = $$42.$$s || this, $a, $b, m = nil, diceCount = nil, diceMax = nil, value = nil; - if ($gvars["~"] == null) $gvars["~"] = nil; - - - m = $gvars["~"]; - diceCount = m['$[]'](1); - diceMax = m['$[]'](2); - $b = self.$roll(diceCount, diceMax), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - return "" + (diceCount) + "D" + (diceMax) + "(=>" + (value) + ")";}, $$42.$$s = self, $$42.$$arity = 0, $$42)); - return message; - }, $BCDice_rollTableMessageDiceText$41.$$arity = 1); - - Opal.def(self, '$roll', $BCDice_roll$43 = function $$roll(dice_cnt, dice_max, dice_sort, dice_add, dice_ul, dice_diff, dice_re) { - var $a, $$44, $$46, self = this, total = nil, dice_str = nil, numberSpot1 = nil, cnt_max = nil, n_max = nil, cnt_suc = nil, d9_on = nil, rerollCount = nil, dice_result = nil; - if ($gvars.DICE_MAXCNT == null) $gvars.DICE_MAXCNT = nil; - if ($gvars.DICE_MAXNUM == null) $gvars.DICE_MAXNUM = nil; - - - - if (dice_sort == null) { - dice_sort = 0; - }; - - if (dice_add == null) { - dice_add = 0; - }; - - if (dice_ul == null) { - dice_ul = ""; - }; - - if (dice_diff == null) { - dice_diff = 0; - }; - - if (dice_re == null) { - dice_re = nil; - }; - dice_cnt = dice_cnt.$to_i(); - dice_max = dice_max.$to_i(); - dice_re = dice_re.$to_i(); - total = 0; - dice_str = ""; - numberSpot1 = 0; - cnt_max = 0; - n_max = 0; - cnt_suc = 0; - d9_on = false; - rerollCount = 0; - dice_result = []; - if ($truthy(($truthy($a = self.diceBot.$d66Type()['$!='](0)) ? dice_max['$=='](66) : $a))) { - - dice_sort = 0; - dice_cnt = 2; - dice_max = 6;}; - if ($truthy(($truthy($a = self.diceBot.$isD9()) ? dice_max['$=='](9) : $a))) { - - d9_on = true; - dice_max = $rb_plus(dice_max, 1);}; - if ($truthy(($truthy($a = $rb_le(dice_cnt, $gvars.DICE_MAXCNT)) ? $rb_le(dice_max, $gvars.DICE_MAXNUM) : $a))) { - } else { - return [total, dice_str, numberSpot1, cnt_max, n_max, cnt_suc, rerollCount] - }; - (function(){var $brk = Opal.new_brk(); try {return $send(dice_cnt, 'times', [], ($$44 = function(i){var self = $$44.$$s || this, $$45, $b, dice_now = nil, dice_n = nil, dice_st_n = nil, round = nil, suc = nil; - if (self.diceBot == null) self.diceBot = nil; - - - - if (i == null) { - i = nil; - }; - i = $rb_plus(i, 1); - dice_now = 0; - dice_n = 0; - dice_st_n = ""; - round = 0; - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$45 = function(){var self = $$45.$$s || this, $b; - if (self.diceBot == null) self.diceBot = nil; - - - if ($truthy(d9_on)) { - dice_n = self.$roll_d9() - } else { - dice_n = $rb_plus(self.$rand(dice_max).$to_i(), 1) - }; - dice_now = $rb_plus(dice_now, dice_n); - self.$debug("@diceBot.sendMode", self.diceBot.$sendMode()); - if ($truthy($rb_ge(self.diceBot.$sendMode(), 2))) { - - if ($truthy(dice_st_n['$empty?']())) { - } else { - dice_st_n = $rb_plus(dice_st_n, ",") - }; - dice_st_n = $rb_plus(dice_st_n, dice_n.$to_s());}; - round = $rb_plus(round, 1); - if ($truthy(($truthy($b = $rb_gt(dice_add, 1)) ? $rb_ge(dice_n, dice_add) : $b))) { - return nil - } else { - - Opal.brk(nil, $brk) - };}, $$45.$$s = self, $$45.$$brk = $brk, $$45.$$arity = 0, $$45)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - total = $rb_plus(total, dice_now); - if ($truthy(dice_ul['$!='](""))) { - - suc = self.$check_hit(dice_now, dice_ul, dice_diff); - cnt_suc = $rb_plus(cnt_suc, suc);}; - if ($truthy(dice_re)) { - if ($truthy($rb_ge(dice_now, dice_re))) { - rerollCount = $rb_plus(rerollCount, 1)}}; - if ($truthy(($truthy($b = $rb_ge(self.diceBot.$sendMode(), 2)) ? $rb_ge(round, 2) : $b))) { - dice_result.$push("" + (dice_now) + "[" + (dice_st_n) + "]") - } else { - dice_result.$push(dice_now) - }; - if (dice_now['$=='](1)) { - numberSpot1 = $rb_plus(numberSpot1, 1)}; - if (dice_now['$=='](dice_max)) { - cnt_max = $rb_plus(cnt_max, 1)}; - if ($truthy($rb_gt(dice_now, n_max))) { - return (n_max = dice_now) - } else { - return nil - };}, $$44.$$s = self, $$44.$$brk = $brk, $$44.$$arity = 1, $$44)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - if ($truthy(dice_sort['$!='](0))) { - dice_str = $send(dice_result, 'sort_by', [], ($$46 = function(a){var self = $$46.$$s || this; - - - - if (a == null) { - a = nil; - }; - return self.$dice_num(a);}, $$46.$$s = self, $$46.$$arity = 1, $$46)).$join(",") - } else { - dice_str = dice_result.$join(",") - }; - return [total, dice_str, numberSpot1, cnt_max, n_max, cnt_suc, rerollCount]; - }, $BCDice_roll$43.$$arity = -3); - - Opal.def(self, '$setRandomValues', $BCDice_setRandomValues$47 = function $$setRandomValues(rands) { - var self = this; - - return (self.rands = rands) - }, $BCDice_setRandomValues$47.$$arity = 1); - - Opal.def(self, '$rand_inner', $BCDice_rand_inner$48 = function $$rand_inner(max) { - var self = this, value = nil; - - - self.$debug("rand called @rands", self.rands); - value = 0; - if ($truthy(self.rands['$nil?']())) { - value = self.$randNomal(max) - } else { - value = self.$randFromRands(max) - }; - if ($truthy(self.collect_rand_results)) { - self.rand_results['$<<']([$rb_plus(value, 1), max])}; - return value; - }, $BCDice_rand_inner$48.$$arity = 1); - Opal.const_set($nesting[0], 'DetailedRandResult', $$($nesting, 'Struct').$new("kind", "sides", "value")); - - Opal.def(self, '$rand', $BCDice_rand$49 = function $$rand(max) { - var self = this, ret = nil; - - - ret = self.$rand_inner(max); - self.$push_to_detail("normal", max, $rb_plus(ret, 1)); - return ret; - }, $BCDice_rand$49.$$arity = 1); - - Opal.def(self, '$roll_tens_d10', $BCDice_roll_tens_d10$50 = function $$roll_tens_d10() { - var self = this, r = nil, ret = nil; - - - r = $rb_plus(self.$rand_inner(10), 1); - if (r['$=='](10)) { - r = 0}; - ret = $rb_times(r, 10); - self.$push_to_detail("tens_d10", 10, ret); - return ret; - }, $BCDice_roll_tens_d10$50.$$arity = 0); - - Opal.def(self, '$roll_d9', $BCDice_roll_d9$51 = function $$roll_d9() { - var self = this, ret = nil; - - - ret = self.$rand_inner(10); - self.$push_to_detail("d9", 10, ret); - return ret; - }, $BCDice_roll_d9$51.$$arity = 0); - - Opal.def(self, '$setCollectRandResult', $BCDice_setCollectRandResult$52 = function $$setCollectRandResult(b) { - var self = this; - - - self.collect_rand_results = b; - self.rand_results = []; - return (self.detailed_rand_results = []); - }, $BCDice_setCollectRandResult$52.$$arity = 1); - - Opal.def(self, '$push_to_detail', $BCDice_push_to_detail$53 = function $$push_to_detail(kind, sides, value) { - var self = this, detail = nil; - - if ($truthy(self.collect_rand_results)) { - - detail = $$($nesting, 'DetailedRandResult').$new(kind, sides, value); - return self.detailed_rand_results.$push(detail); - } else { - return nil - } - }, $BCDice_push_to_detail$53.$$arity = 3); - - Opal.def(self, '$randNomal', $BCDice_randNomal$54 = function $$randNomal(max) { - var self = this; - - return $$($nesting, 'Kernel').$rand(max) - }, $BCDice_randNomal$54.$$arity = 1); - - Opal.def(self, '$randFromRands', $BCDice_randFromRands$55 = function $$randFromRands(targetMax) { - var $a, $b, self = this, nextRand = nil, value = nil, max = nil; - - - nextRand = self.rands.$shift(); - if ($truthy(nextRand['$nil?']())) { - self.$raise("" + "nextRand is nil, so @rands is empty!! @rands:" + (self.rands.$inspect()))}; - $b = nextRand, $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), (max = ($a[1] == null ? nil : $a[1])), $b; - value = value.$to_i(); - max = max.$to_i(); - if ($truthy(max['$!='](targetMax))) { - self.$raise("" + "invalid max value! [ " + (value) + " / " + (max) + " ] but NEED [ " + (targetMax) + " ] dice")}; - return $rb_minus(value, 1); - }, $BCDice_randFromRands$55.$$arity = 1); - - Opal.def(self, '$dice_num', $BCDice_dice_num$56 = function $$dice_num(dice_str) { - var self = this; - - - dice_str = dice_str.$to_s(); - return dice_str.$sub(/\[[\d,]+\]/, "").$to_i(); - }, $BCDice_dice_num$56.$$arity = 1); - - Opal.def(self, '$bdice', $BCDice_bdice$57 = function $$bdice(string) { - var $$58, self = this, suc = nil, signOfInequality = nil, diff = nil, output = nil, dice_a = nil, dice_cnt_total = nil, numberSpot1 = nil; - - - suc = 0; - signOfInequality = ""; - diff = 0; - output = ""; - string = string.$gsub(/-[\d]+B[\d]+/, ""); - if ($truthy(/(^|\s)S?(([\d]+B[\d]+(\+[\d]+B[\d]+)*)(([<>=]+)([\d]+))?)($|\s)/['$=~'](string))) { - } else { - - output = "1"; - return output; - }; - string = $$($nesting, 'Regexp').$last_match(2); - if ($truthy($$($nesting, 'Regexp').$last_match(5))) { - - diff = $$($nesting, 'Regexp').$last_match(7).$to_i(); - string = $$($nesting, 'Regexp').$last_match(3); - signOfInequality = self.$marshalSignOfInequality($$($nesting, 'Regexp').$last_match(6)); - } else if ($truthy(/([<>=]+)(\d+)/['$=~'](self.diceBot.$defaultSuccessTarget()))) { - - diff = $$($nesting, 'Regexp').$last_match(2).$to_i(); - signOfInequality = self.$marshalSignOfInequality($$($nesting, 'Regexp').$last_match(1));}; - dice_a = string.$split(/\+/); - dice_cnt_total = 0; - numberSpot1 = 0; - $send(dice_a, 'each', [], ($$58 = function(dice_o){var self = $$58.$$s || this, $a, $b, dice_cnt = nil, dice_max = nil, dice_dat = nil; - if (self.diceBot == null) self.diceBot = nil; - - - - if (dice_o == null) { - dice_o = nil; - }; - $b = dice_o.$split(/[bB]/), $a = Opal.to_ary($b), (dice_cnt = ($a[0] == null ? nil : $a[0])), (dice_max = ($a[1] == null ? nil : $a[1])), $b; - dice_cnt = dice_cnt.$to_i(); - dice_max = dice_max.$to_i(); - dice_dat = self.$roll(dice_cnt, dice_max, self.diceBot.$sortType()['$&'](2), 0, signOfInequality, diff); - suc = $rb_plus(suc, dice_dat['$[]'](5)); - if ($truthy(output['$!='](""))) { - output = $rb_plus(output, ",")}; - output = $rb_plus(output, dice_dat['$[]'](1)); - numberSpot1 = $rb_plus(numberSpot1, dice_dat['$[]'](2)); - return (dice_cnt_total = $rb_plus(dice_cnt_total, dice_cnt));}, $$58.$$s = self, $$58.$$arity = 1, $$58)); - if ($truthy(signOfInequality['$!='](""))) { - - string = $rb_plus(string, "" + (signOfInequality) + (diff)); - output = "" + (output) + " > 成功数" + (suc); - output = $rb_plus(output, self.diceBot.$getGrichText(numberSpot1, dice_cnt_total, suc));}; - output = "" + (self.nick_e) + ": (" + (string) + ") > " + (output); - return output; - }, $BCDice_bdice$57.$$arity = 1); - - Opal.def(self, '$rollD66', $BCDice_rollD66$59 = function $$rollD66(string) { - var $a, $b, self = this, output = nil, secret = nil; - - - if ($truthy(/^S?D66/i['$==='](string))) { - } else { - return nil - }; - if (self.diceBot.$d66Type()['$=='](0)) { - return nil}; - self.$debug("match D66 roll"); - $b = self.$d66dice(string), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (secret = ($a[1] == null ? nil : $a[1])), $b; - return [output, secret]; - }, $BCDice_rollD66$59.$$arity = 1); - - Opal.def(self, '$d66dice', $BCDice_d66dice$60 = function $$d66dice(string) { - var $a, $b, $$61, self = this, secret = nil, output = nil, count = nil, swapMarker = nil, d66List = nil, d66Text = nil; - - - string = string.$upcase(); - secret = false; - output = "1"; - $b = self.$getD66Infos(string), $a = Opal.to_ary($b), (string = ($a[0] == null ? nil : $a[0])), (secret = ($a[1] == null ? nil : $a[1])), (count = ($a[2] == null ? nil : $a[2])), (swapMarker = ($a[3] == null ? nil : $a[3])), $b; - if ($truthy(string['$nil?']())) { - return [output, secret]}; - self.$debug("d66dice count", count); - d66List = []; - $send(count, 'times', [], ($$61 = function(_i){var self = $$61.$$s || this; - - - - if (_i == null) { - _i = nil; - }; - return d66List['$<<'](self.$getD66ValueByMarker(swapMarker));}, $$61.$$s = self, $$61.$$arity = 1, $$61)); - d66Text = d66List.$join(","); - self.$debug("d66Text", d66Text); - output = "" + (self.nick_e) + ": (" + (string) + ") > " + (d66Text); - return [output, secret]; - }, $BCDice_d66dice$60.$$arity = 1); - - Opal.def(self, '$getD66Infos', $BCDice_getD66Infos$62 = function $$getD66Infos(string) { - var $a, self = this, secret = nil, count = nil, swapMarker = nil; - - - self.$debug("getD66Infos, string", string); - if ($truthy(/(^|\s)(S)?((\d+)?D66(N|S)?)(\s|$)/i['$==='](string))) { - } else { - return nil - }; - secret = $$($nesting, 'Regexp').$last_match(2)['$nil?']()['$!'](); - string = $$($nesting, 'Regexp').$last_match(3); - count = ($truthy($a = $$($nesting, 'Regexp').$last_match(4)) ? $a : 1).$to_i(); - swapMarker = ($truthy($a = $$($nesting, 'Regexp').$last_match(5)) ? $a : "").$upcase(); - return [string, secret, count, swapMarker]; - }, $BCDice_getD66Infos$62.$$arity = 1); - - Opal.def(self, '$getD66ValueByMarker', $BCDice_getD66ValueByMarker$63 = function $$getD66ValueByMarker(swapMarker) { - var self = this, $case = nil, isSwap = nil; - - return (function() {$case = swapMarker; - if ("S"['$===']($case)) { - isSwap = true; - return self.$getD66(isSwap);} - else if ("N"['$===']($case)) { - isSwap = false; - return self.$getD66(isSwap);} - else {return self.$getD66Value()}})() - }, $BCDice_getD66ValueByMarker$63.$$arity = 1); - - Opal.def(self, '$getD66Value', $BCDice_getD66Value$64 = function $$getD66Value(mode) { - var $a, self = this, isSwap = nil; - - - - if (mode == null) { - mode = nil; - }; - mode = ($truthy($a = mode) ? $a : self.diceBot.$d66Type()); - isSwap = $rb_gt(mode, 1); - return self.$getD66(isSwap); - }, $BCDice_getD66Value$64.$$arity = -1); - - Opal.def(self, '$getD66', $BCDice_getD66$65 = function $$getD66(isSwap) { - var $a, self = this, output = nil, dice_a = nil, dice_b = nil; - - - output = 0; - dice_a = $rb_plus(self.$rand(6), 1); - dice_b = $rb_plus(self.$rand(6), 1); - self.$debug("dice_a", dice_a); - self.$debug("dice_b", dice_b); - if ($truthy(($truthy($a = isSwap) ? $rb_gt(dice_a, dice_b) : $a))) { - output = $rb_plus(dice_a, $rb_times(dice_b, 10)) - } else { - output = $rb_plus($rb_times(dice_a, 10), dice_b) - }; - self.$debug("output", output); - return output; - }, $BCDice_getD66$65.$$arity = 1); - - Opal.def(self, '$openSecretRoll', $BCDice_openSecretRoll$66 = function $$openSecretRoll(channel, mode) { - var $$67, self = this, messages = nil, memberKey = nil, members = nil; - if ($gvars.secretRollMembersHolder == null) $gvars.secretRollMembersHolder = nil; - - - self.$debug("openSecretRoll begin"); - channel = channel.$upcase(); - messages = []; - memberKey = self.$getSecretRollMembersHolderKey(channel, mode); - members = $gvars.secretRollMembersHolder['$[]'](memberKey); - if ($truthy(members['$nil?']())) { - - self.$debug("openSecretRoll members is nil. messages", messages); - return messages;}; - $send(members, 'each', [], ($$67 = function(member){var self = $$67.$$s || this, diceResultKey = nil, diceResult = nil; - if ($gvars.secretDiceResultHolder == null) $gvars.secretDiceResultHolder = nil; - - - - if (member == null) { - member = nil; - }; - diceResultKey = self.$getSecretDiceResultHolderKey(channel, mode, member); - self.$debug("openSecretRoll diceResulyKey", diceResultKey); - diceResult = $gvars.secretDiceResultHolder['$[]'](diceResultKey); - self.$debug("openSecretRoll diceResult", diceResult); - if ($truthy(diceResult)) { - - messages.$push(diceResult); - return $gvars.secretDiceResultHolder.$delete(diceResultKey); - } else { - return nil - };}, $$67.$$s = self, $$67.$$arity = 1, $$67)); - if ($truthy($rb_le(mode, 0))) { - - self.$debug("delete recorde data"); - $gvars.secretRollMembersHolder.$delete(channel);}; - self.$debug("openSecretRoll result messages", messages); - return messages; - }, $BCDice_openSecretRoll$66.$$arity = 2); - - Opal.def(self, '$getNick', $BCDice_getNick$68 = function $$getNick(nick) { - var $a, self = this; - - - - if (nick == null) { - nick = nil; - }; - nick = ($truthy($a = nick) ? $a : self.nick_e); - nick = nick.$upcase(); - if ($truthy(/[_\d]*(.+)[_\d]*/['$=~'](nick))) { - nick = $$($nesting, 'Regexp').$last_match(1)}; - return nick; - }, $BCDice_getNick$68.$$arity = -1); - - Opal.def(self, '$addToSecretDiceResult', $BCDice_addToSecretDiceResult$69 = function $$addToSecretDiceResult(diceResult, channel, mode) { - var self = this; - - - channel = channel.$upcase(); - self.$addToSecretRollMembersHolder(channel, mode); - return self.$saveSecretDiceResult(diceResult, channel, mode); - }, $BCDice_addToSecretDiceResult$69.$$arity = 3); - - Opal.def(self, '$addToSecretRollMembersHolder', $BCDice_addToSecretRollMembersHolder$70 = function $$addToSecretRollMembersHolder(channel, mode) { - var $a, self = this, key = nil, $writer = nil, members = nil, nick = nil; - if ($gvars.secretRollMembersHolder == null) $gvars.secretRollMembersHolder = nil; - - - key = self.$getSecretRollMembersHolderKey(channel, mode); - ($truthy($a = $gvars.secretRollMembersHolder['$[]'](key)) ? $a : (($writer = [key, []]), $send($gvars.secretRollMembersHolder, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); - members = $gvars.secretRollMembersHolder['$[]'](key); - nick = self.$getNick(); - if ($truthy(members['$include?'](nick))) { - return nil - } else { - return members.$push(nick) - }; - }, $BCDice_addToSecretRollMembersHolder$70.$$arity = 2); - - Opal.def(self, '$getSecretRollMembersHolderKey', $BCDice_getSecretRollMembersHolderKey$71 = function $$getSecretRollMembersHolderKey(channel, mode) { - var self = this; - - return "" + (mode) + "," + (channel) - }, $BCDice_getSecretRollMembersHolderKey$71.$$arity = 2); - - Opal.def(self, '$saveSecretDiceResult', $BCDice_saveSecretDiceResult$72 = function $$saveSecretDiceResult(diceResult, channel, mode) { - var self = this, nick = nil, key = nil, $writer = nil; - if ($gvars.secretDiceResultHolder == null) $gvars.secretDiceResultHolder = nil; - - - nick = self.$getNick(); - if ($truthy(mode['$!='](0))) { - diceResult = "" + (nick) + ": " + (diceResult)}; - key = self.$getSecretDiceResultHolderKey(channel, mode, nick); - - $writer = [key, diceResult]; - $send($gvars.secretDiceResultHolder, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - self.$debug("key", key); - return self.$debug("secretDiceResultHolder", $gvars.secretDiceResultHolder); - }, $BCDice_saveSecretDiceResult$72.$$arity = 3); - - Opal.def(self, '$getSecretDiceResultHolderKey', $BCDice_getSecretDiceResultHolderKey$73 = function $$getSecretDiceResultHolderKey(channel, mode, nick) { - var self = this, key = nil; - - - key = "" + (mode) + "," + (channel) + "," + (nick); - return key; - }, $BCDice_getSecretDiceResultHolderKey$73.$$arity = 3); - - Opal.def(self, '$setPrintPlotChannel', $BCDice_setPrintPlotChannel$74 = function $$setPrintPlotChannel() { - var self = this, nick = nil, $writer = nil; - if ($gvars.plotPrintChannels == null) $gvars.plotPrintChannels = nil; - - - nick = self.$getNick(); - - $writer = [nick, self.channel]; - $send($gvars.plotPrintChannels, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - }, $BCDice_setPrintPlotChannel$74.$$arity = 0); - - Opal.def(self, '$choice_random', $BCDice_choice_random$75 = function $$choice_random(string) { - var self = this, output = nil, targetList = nil, targets = nil, index = nil, target = nil; - - - output = "1"; - if ($truthy(/(^|\s)((S)?choice\[([^,]+(,[^,]+)+)\])($|\s)/i['$=~'](string))) { - } else { - return output - }; - string = $$($nesting, 'Regexp').$last_match(2); - targetList = $$($nesting, 'Regexp').$last_match(4); - if ($truthy(targetList)) { - } else { - return output - }; - targets = targetList.$split(/,/); - index = self.$rand(targets.$length()); - target = targets['$[]'](index); - output = "" + (self.nick_e) + ": (" + (string) + ") > " + (target); - return output; - }, $BCDice_choice_random$75.$$arity = 1); - - Opal.def(self, '$getMarshaledSignOfInequality', $BCDice_getMarshaledSignOfInequality$76 = function $$getMarshaledSignOfInequality(text) { - var self = this; - - - if ($truthy(text['$nil?']())) { - return ""}; - return self.$marshalSignOfInequality(text); - }, $BCDice_getMarshaledSignOfInequality$76.$$arity = 1); - - Opal.def(self, '$marshalSignOfInequality', $BCDice_marshalSignOfInequality$77 = function $$marshalSignOfInequality(signOfInequality) { - var self = this, $case = nil; - - - $case = signOfInequality; - if (/(<=|=<)/['$===']($case)) {return "<="} - else if (/(>=|=>)/['$===']($case)) {return ">="} - else if (/(<>)/['$===']($case)) {return "<>"} - else if (/[<]+/['$===']($case)) {return "<"} - else if (/[>]+/['$===']($case)) {return ">"} - else if (/[=]+/['$===']($case)) {return "="}; - return signOfInequality; - }, $BCDice_marshalSignOfInequality$77.$$arity = 1); - - Opal.def(self, '$check_hit', $BCDice_check_hit$78 = function $$check_hit(dice_now, signOfInequality, diff) { - var self = this, suc = nil, $case = nil; - - - suc = 0; - if ($truthy(diff['$is_a?']($$($nesting, 'String')))) { - - if ($truthy(/\d/['$=~'](diff))) { - } else { - return suc - }; - diff = diff.$to_i();}; - $case = signOfInequality; - if (/(<=|=<)/['$===']($case)) {if ($truthy($rb_le(dice_now, diff))) { - suc = $rb_plus(suc, 1)}} - else if (/(>=|=>)/['$===']($case)) {if ($truthy($rb_ge(dice_now, diff))) { - suc = $rb_plus(suc, 1)}} - else if (/(<>)/['$===']($case)) {if ($truthy(dice_now['$!='](diff))) { - suc = $rb_plus(suc, 1)}} - else if (/[<]+/['$===']($case)) {if ($truthy($rb_lt(dice_now, diff))) { - suc = $rb_plus(suc, 1)}} - else if (/[>]+/['$===']($case)) {if ($truthy($rb_gt(dice_now, diff))) { - suc = $rb_plus(suc, 1)}} - else if (/[=]+/['$===']($case)) {if (dice_now['$=='](diff)) { - suc = $rb_plus(suc, 1)}}; - return suc; - }, $BCDice_check_hit$78.$$arity = 3); - - Opal.def(self, '$broadmsg', $BCDice_broadmsg$79 = function $$broadmsg(output, nick) { - var self = this; - - - self.$debug("broadmsg output, nick", output, nick); - self.$debug("@nick_e", self.nick_e); - if (output['$==']("1")) { - return nil}; - if (nick['$=='](self.nick_e)) { - return self.$sendMessageToOnlySender(output) - } else { - return self.$sendMessage(nick, output) - }; - }, $BCDice_broadmsg$79.$$arity = 2); - - Opal.def(self, '$sendMessage', $BCDice_sendMessage$80 = function $$sendMessage(to, message) { - var self = this; - - - self.$debug("sendMessage to, message", to, message); - return self.ircClient.$sendMessage(to, message); - }, $BCDice_sendMessage$80.$$arity = 2); - - Opal.def(self, '$sendMessageToOnlySender', $BCDice_sendMessageToOnlySender$81 = function $$sendMessageToOnlySender(message) { - var self = this; - - - self.$debug("sendMessageToOnlySender message", message); - self.$debug("@nick_e", self.nick_e); - return self.ircClient.$sendMessageToOnlySender(self.nick_e, message); - }, $BCDice_sendMessageToOnlySender$81.$$arity = 1); - - Opal.def(self, '$sendMessageToChannels', $BCDice_sendMessageToChannels$82 = function $$sendMessageToChannels(message) { - var self = this; - - return self.ircClient.$sendMessageToChannels(message) - }, $BCDice_sendMessageToChannels$82.$$arity = 1); - - Opal.def(self, '$parren_killer', $BCDice_parren_killer$83 = function $$parren_killer(string) { - var $$84, $$85, $$86, self = this, round_type = nil; - - - self.$debug("parren_killer input", string); - string = $send(string, 'gsub', [/\[\d+D\d+\]/i], ($$84 = function(matched){var self = $$84.$$s || this, $a, $b, command = nil, times = nil, sides = nil, rolled = nil; - - - - if (matched == null) { - matched = nil; - }; - command = matched['$[]']($range(1, -2, false)).$upcase(); - $b = $send(command.$split("D"), 'map', [], "to_i".$to_proc()), $a = Opal.to_ary($b), (times = ($a[0] == null ? nil : $a[0])), (sides = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$roll(times, sides), $a = Opal.to_ary($b), (rolled = ($a[0] == null ? nil : $a[0])), $b; - return rolled;}, $$84.$$s = self, $$84.$$arity = 1, $$84)); - string = self.$changeRangeTextToNumberText(string); - round_type = self.diceBot.$fractionType().$to_sym(); - string = $send(string, 'gsub', [/\([\d\/\+\*\-\(\)]+\)/], ($$85 = function(expr){var self = $$85.$$s || this; - - - - if (expr == null) { - expr = nil; - }; - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(expr, round_type);}, $$85.$$s = self, $$85.$$arity = 1, $$85)); - self.$debug("diceBot.changeText(string) begin", string); - string = self.diceBot.$changeText(string); - self.$debug("diceBot.changeText(string) end", string); - string = $send(string, 'gsub', [/([\d]+[dD])([^\w]|$)/], ($$86 = function(){var self = $$86.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "6" + ($$($nesting, 'Regexp').$last_match(2))}, $$86.$$s = self, $$86.$$arity = 0, $$86)); - self.$debug("parren_killer output", string); - return string; - }, $BCDice_parren_killer$83.$$arity = 1); - - Opal.def(self, '$changeRangeTextToNumberText', $BCDice_changeRangeTextToNumberText$87 = function $$changeRangeTextToNumberText(string) { - var $a, $b, $c, self = this, beforeText = nil, rangeBegin = nil, rangeEnd = nil, afterText = nil, range = nil, rolledNumber = nil, resultNumber = nil; - - - self.$debug("[st...ed] before string", string); - while ($truthy(/^(.*?)\[(\d+)[.]{3}(\d+)\](.*)/['$=~'](string))) { - - beforeText = $$($nesting, 'Regexp').$last_match(1); - beforeText = ($truthy($b = beforeText) ? $b : ""); - rangeBegin = $$($nesting, 'Regexp').$last_match(2).$to_i(); - rangeEnd = $$($nesting, 'Regexp').$last_match(3).$to_i(); - afterText = $$($nesting, 'Regexp').$last_match(4); - afterText = ($truthy($b = afterText) ? $b : ""); - if ($truthy($rb_lt(rangeBegin, rangeEnd))) { - } else { - continue; - }; - range = $rb_plus($rb_minus(rangeEnd, rangeBegin), 1); - self.$debug("range", range); - $c = self.$roll(1, range), $b = Opal.to_ary($c), (rolledNumber = ($b[0] == null ? nil : $b[0])), $c; - resultNumber = $rb_plus($rb_minus(rangeBegin, 1), rolledNumber); - string = "" + (beforeText) + (resultNumber) + (afterText); - }; - self.$debug("[st...ed] after string", string); - return string; - }, $BCDice_changeRangeTextToNumberText$87.$$arity = 1); - return (Opal.def(self, '$setGameByTitle', $BCDice_setGameByTitle$88 = function $$setGameByTitle(gameTitle) { - var $a, self = this, loader = nil, diceBot = nil, message = nil; - - - self.$debug("setGameByTitle gameTitle", gameTitle); - self.cardTrader.$initValues(); - loader = $$($nesting, 'DiceBotLoaderList').$find(gameTitle); - diceBot = (function() {if ($truthy(loader)) { - return loader.$loadDiceBot() - } else { - return ($truthy($a = $$($nesting, 'DiceBotLoader').$loadUnknownGame(gameTitle)) ? $a : $$($nesting, 'DiceBot').$new()) - }; return nil; })(); - self.$setDiceBot(diceBot); - diceBot.$postSet(); - message = "" + "Game設定を" + (diceBot.$name()) + "に設定しました"; - self.$debug("setGameByTitle message", message); - return message; - }, $BCDice_setGameByTitle$88.$$arity = 1), nil) && 'setGameByTitle'; - })($nesting[0], null, $nesting); -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var $a, $b, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $truthy = Opal.truthy, $gvars = Opal.gvars, $klass = Opal.klass, $hash2 = Opal.hash2, bcDiceRoot = nil, bot = nil, result = nil, randResults = nil; - if ($gvars[":"] == null) $gvars[":"] = nil; - if ($gvars["0"] == null) $gvars["0"] = nil; - - Opal.add_stubs(['$expand_path', '$dirname', '$include?', '$unshift', '$require', '$attr_reader', '$new', '$params', '$rollFromCgiParams', '$cgiParams', '$[]', '$+', '$getDiceBotParamText', '$roll', '$executeDiceBot', '$gsub', '$empty?', '$newBcDice', '$setIrcClient', '$setRandomValues', '$isKeepSecretDice', '$setTest', '$setCollectRandResult', '$setDir', '$!=', '$getGameType', '$setGameByTitle', '$setMessage', '$setChannel', '$recievePublicMessage', '$getRandResults', '$nil?', '$getGameCommandInfos', '$rand_results', '$detailed_rand_results', '$===', '$!', '$rollFromCgiParamsDummy', '$print']); - - bcDiceRoot = $$($nesting, 'File').$expand_path($$($nesting, 'File').$dirname("./cgiDiceBot.rb".$force_encoding("US-ASCII"))); - if ($truthy($gvars[":"]['$include?'](bcDiceRoot))) { - } else { - $gvars[":"].$unshift(bcDiceRoot) - }; - self.$require("bcdiceCore.rb"); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'CgiDiceBot'); - - var $nesting = [self].concat($parent_nesting), $CgiDiceBot_initialize$1, $CgiDiceBot_rollFromCgi$2, $CgiDiceBot_rollFromCgiParamsDummy$3, $CgiDiceBot_rollFromCgiParams$4, $CgiDiceBot_getDiceBotParamText$5, $CgiDiceBot_roll$6, $CgiDiceBot_setTest$7, $CgiDiceBot_setRandomValues$8, $CgiDiceBot_executeDiceBot$9, $CgiDiceBot_newBcDice$10, $CgiDiceBot_getGameCommandInfos$11, $CgiDiceBot_sendMessage$12, $CgiDiceBot_sendMessageToOnlySender$13, $CgiDiceBot_sendMessageToChannels$14, $CgiDiceBot_rand_results$15, $CgiDiceBot_detailed_rand_results$16; - - self.$$prototype.cgi = self.$$prototype.cgiParams = self.$$prototype.isTest = self.$$prototype.rands = self.$$prototype.rollResult = self.$$prototype.bcdice = nil; - - - Opal.def(self, '$initialize', $CgiDiceBot_initialize$1 = function $$initialize() { - var self = this; - - - self.rollResult = ""; - self.isSecret = false; - self.rands = nil; - self.isTest = false; - return (self.bcdice = nil); - }, $CgiDiceBot_initialize$1.$$arity = 0); - self.$attr_reader("isSecret"); - - Opal.def(self, '$rollFromCgi', $CgiDiceBot_rollFromCgi$2 = function $$rollFromCgi() { - var self = this, cgi = nil; - - - cgi = $$($nesting, 'CGI').$new(); - self.cgiParams = self.cgi.$params(); - return self.$rollFromCgiParams(self.$cgiParams()); - }, $CgiDiceBot_rollFromCgi$2.$$arity = 0); - - Opal.def(self, '$rollFromCgiParamsDummy', $CgiDiceBot_rollFromCgiParamsDummy$3 = function $$rollFromCgiParamsDummy() { - var self = this; - - - self.cgiParams = $hash2(["message", "gameType", "channel", "state", "sendto", "color"], {"message": "STG20", "gameType": "TORG", "channel": "1", "state": "state", "sendto": "sendto", "color": "999999"}); - return self.$rollFromCgiParams(); - }, $CgiDiceBot_rollFromCgiParamsDummy$3.$$arity = 0); - - Opal.def(self, '$rollFromCgiParams', $CgiDiceBot_rollFromCgiParams$4 = function $$rollFromCgiParams() { - var $a, $b, self = this, message = nil, gameType = nil, result = nil, rollResult = nil, randResults = nil; - - - message = self.cgiParams['$[]']("message"); - gameType = self.cgiParams['$[]']("gameType"); - gameType = ($truthy($a = gameType) ? $a : "diceBot"); - result = ""; - result = $rb_plus(result, "##>customBot BEGIN<##"); - result = $rb_plus(result, self.$getDiceBotParamText("channel")); - result = $rb_plus(result, self.$getDiceBotParamText("name")); - result = $rb_plus(result, self.$getDiceBotParamText("state")); - result = $rb_plus(result, self.$getDiceBotParamText("sendto")); - result = $rb_plus(result, self.$getDiceBotParamText("color")); - result = $rb_plus(result, message); - $b = self.$roll(message, gameType), $a = Opal.to_ary($b), (rollResult = ($a[0] == null ? nil : $a[0])), (randResults = ($a[1] == null ? nil : $a[1])), $b; - result = $rb_plus(result, rollResult); - result = $rb_plus(result, "##>customBot END<##"); - return result; - }, $CgiDiceBot_rollFromCgiParams$4.$$arity = 0); - - Opal.def(self, '$getDiceBotParamText', $CgiDiceBot_getDiceBotParamText$5 = function $$getDiceBotParamText(paramName) { - var $a, self = this, param = nil; - - - param = self.cgiParams['$[]'](paramName); - param = ($truthy($a = param) ? $a : ""); - return "" + (param) + "\t"; - }, $CgiDiceBot_getDiceBotParamText$5.$$arity = 1); - - Opal.def(self, '$roll', $CgiDiceBot_roll$6 = function $$roll(message, gameType, dir, prefix, isNeedResult) { - var $a, $b, self = this, rollResult = nil, randResults = nil, result = nil; - - - - if (dir == null) { - dir = nil; - }; - - if (prefix == null) { - prefix = ""; - }; - - if (isNeedResult == null) { - isNeedResult = false; - }; - $b = self.$executeDiceBot(message, gameType, dir, prefix, isNeedResult), $a = Opal.to_ary($b), (rollResult = ($a[0] == null ? nil : $a[0])), (randResults = ($a[1] == null ? nil : $a[1])), (gameType = ($a[2] == null ? nil : $a[2])), $b; - result = ""; - if ($truthy(self.isTest)) {}; - gameType = gameType.$gsub(/:.+$/, ""); - if ($truthy(rollResult['$empty?']())) { - } else { - result = $rb_plus(result, "" + "\n" + (gameType) + " " + (rollResult)) - }; - return [result, randResults]; - }, $CgiDiceBot_roll$6.$$arity = -3); - - Opal.def(self, '$setTest', $CgiDiceBot_setTest$7 = function $$setTest() { - var self = this; - - return (self.isTest = true) - }, $CgiDiceBot_setTest$7.$$arity = 0); - - Opal.def(self, '$setRandomValues', $CgiDiceBot_setRandomValues$8 = function $$setRandomValues(rands) { - var self = this; - - return (self.rands = rands) - }, $CgiDiceBot_setRandomValues$8.$$arity = 1); - - Opal.def(self, '$executeDiceBot', $CgiDiceBot_executeDiceBot$9 = function $$executeDiceBot(message, gameType, dir, prefix, isNeedResult) { - var self = this, bcdice = nil, channel = nil, nick_e = nil, rollResult = nil, randResults = nil; - - - - if (dir == null) { - dir = nil; - }; - - if (prefix == null) { - prefix = ""; - }; - - if (isNeedResult == null) { - isNeedResult = false; - }; - bcdice = self.$newBcDice(); - bcdice.$setIrcClient(self); - bcdice.$setRandomValues(self.rands); - bcdice.$isKeepSecretDice(self.isTest); - bcdice.$setTest(self.isTest); - bcdice.$setCollectRandResult(isNeedResult); - bcdice.$setDir(dir, prefix); - if ($truthy(bcdice.$getGameType()['$!='](gameType))) { - - bcdice.$setGameByTitle(gameType); - gameType = bcdice.$getGameType();}; - bcdice.$setMessage(message); - channel = ""; - nick_e = ""; - bcdice.$setChannel(channel); - bcdice.$recievePublicMessage(nick_e); - rollResult = self.rollResult; - self.rollResult = ""; - randResults = bcdice.$getRandResults(); - return [rollResult, randResults, gameType]; - }, $CgiDiceBot_executeDiceBot$9.$$arity = -3); - - Opal.def(self, '$newBcDice', $CgiDiceBot_newBcDice$10 = function $$newBcDice() { - var self = this, bcdiceMaker = nil; - - - if ($truthy(self.bcdice['$nil?']())) { - - bcdiceMaker = $$($nesting, 'BCDiceMaker').$new(); - self.bcdice = bcdiceMaker.$newBcDice();}; - return self.bcdice; - }, $CgiDiceBot_newBcDice$10.$$arity = 0); - - Opal.def(self, '$getGameCommandInfos', $CgiDiceBot_getGameCommandInfos$11 = function $$getGameCommandInfos(dir, prefix) { - var self = this, tableFileData = nil, infos = nil; - - - self.$require("TableFileData"); - tableFileData = $$($nesting, 'TableFileData').$new(); - tableFileData.$setDir(dir, prefix); - infos = tableFileData.$getGameCommandInfos(); - return infos; - }, $CgiDiceBot_getGameCommandInfos$11.$$arity = 2); - - Opal.def(self, '$sendMessage', $CgiDiceBot_sendMessage$12 = function $$sendMessage(_to, message) { - var self = this; - - return (self.rollResult = $rb_plus(self.rollResult, message)) - }, $CgiDiceBot_sendMessage$12.$$arity = 2); - - Opal.def(self, '$sendMessageToOnlySender', $CgiDiceBot_sendMessageToOnlySender$13 = function $$sendMessageToOnlySender(_nick_e, message) { - var self = this; - - - self.isSecret = true; - return (self.rollResult = $rb_plus(self.rollResult, message)); - }, $CgiDiceBot_sendMessageToOnlySender$13.$$arity = 2); - - Opal.def(self, '$sendMessageToChannels', $CgiDiceBot_sendMessageToChannels$14 = function $$sendMessageToChannels(message) { - var self = this; - - return (self.rollResult = $rb_plus(self.rollResult, message)) - }, $CgiDiceBot_sendMessageToChannels$14.$$arity = 1); - - Opal.def(self, '$rand_results', $CgiDiceBot_rand_results$15 = function $$rand_results() { - var self = this; - - return self.bcdice.$rand_results() - }, $CgiDiceBot_rand_results$15.$$arity = 0); - return (Opal.def(self, '$detailed_rand_results', $CgiDiceBot_detailed_rand_results$16 = function $$detailed_rand_results() { - var self = this; - - return self.bcdice.$detailed_rand_results() - }, $CgiDiceBot_detailed_rand_results$16.$$arity = 0), nil) && 'detailed_rand_results'; - })($nesting[0], null, $nesting); - if ($truthy($gvars["0"]['$===']("./cgiDiceBot.rb".$force_encoding("US-ASCII")))) { - - bot = $$($nesting, 'CgiDiceBot').$new(); - result = ""; - if ($truthy($$($nesting, 'ARGV')['$empty?']()['$!']())) { - $b = bot.$roll($$($nesting, 'ARGV')['$[]'](0), $$($nesting, 'ARGV')['$[]'](1)), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (randResults = ($a[1] == null ? nil : $a[1])), $b - } else { - result = bot.$rollFromCgiParamsDummy() - }; - return self.$print($rb_plus(result, "\n")); - } else { - return nil - }; -})(Opal); diff --git a/src/assets/dicebot/AFF2e.js b/src/assets/dicebot/AFF2e.js deleted file mode 100644 index 67ae8ec9e..000000000 --- a/src/assets/dicebot/AFF2e.js +++ /dev/null @@ -1,159 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$format', '$scan', '$+', '$to_i', '$===', '$<=', '$>=', '$<', '$>', '$last_match', '$post_match', '$eval_term', '$roll', '$successful_or_failed', '$parentheses', '$explicit_sign', '$critical', '$compact', '$match', '$map', '$split', '$[]', '$!=', '$size', '$clamp', '$-', '$join']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'AFF2e'); - - var $nesting = [self].concat($parent_nesting), $AFF2e_explicit_sign$1, $AFF2e_eval_term$2, $AFF2e_parentheses$4, $AFF2e_successful_or_failed$5, $AFF2e_critical$6, $AFF2e_clamp$7, $AFF2e_rollDiceCommand$8; - - - Opal.const_set($nesting[0], 'ID', "AFF2e"); - Opal.const_set($nesting[0], 'NAME', "ADVANCED FIGHTING FANTASY 2nd Edition"); - Opal.const_set($nesting[0], 'SORT_KEY', "あとはんすとふあいていんくふあんたしい2"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "対抗なしロール\tFF{目標値}+{補正}\n" + "対抗ロール\tFR{能力値}+{補正}\n" + "武器ロール\tFD[2,3,3,3,3,3,4]+{補正}\n" + "防具ロール\tFD[0,0,0,0,1+1,1+1,2+2]+{補正}\n"); - self.$setPrefixes(["FF.+", "FR.+", "FD.+"]); - - Opal.def(self, '$explicit_sign', $AFF2e_explicit_sign$1 = function $$explicit_sign(i) { - var self = this; - - return self.$format("%+d", i) - }, $AFF2e_explicit_sign$1.$$arity = 1); - - Opal.def(self, '$eval_term', $AFF2e_eval_term$2 = function $$eval_term(term) { - var $$3, self = this, value = nil; - - - value = 0; - $send(term, 'scan', [/[+-]?\d+/], ($$3 = function(fact){var self = $$3.$$s || this; - - - - if (fact == null) { - fact = nil; - }; - return (value = $rb_plus(value, fact.$to_i()));}, $$3.$$s = self, $$3.$$arity = 1, $$3)); - return value; - }, $AFF2e_eval_term$2.$$arity = 1); - - Opal.def(self, '$parentheses', $AFF2e_parentheses$4 = function $$parentheses(str) { - var self = this; - - return $rb_plus($rb_plus("(", str), ")") - }, $AFF2e_parentheses$4.$$arity = 1); - - Opal.def(self, '$successful_or_failed', $AFF2e_successful_or_failed$5 = function $$successful_or_failed(total, diff) { - var self = this, $case = nil; - - return (function() {$case = total; - if ((2)['$===']($case)) {if ($truthy($rb_le(diff, 1))) { - return "成功(大成功ではない)" - } else { - return "大成功!" - }} - else if ((12)['$===']($case)) {if ($truthy($rb_ge(diff, 12))) { - return "失敗(大失敗ではない)" - } else { - return "大失敗!" - }} - else {if ($truthy($rb_le(total, diff))) { - return "成功" - } else { - return "失敗" - }}})() - }, $AFF2e_successful_or_failed$5.$$arity = 2); - - Opal.def(self, '$critical', $AFF2e_critical$6 = function $$critical(total) { - var self = this, $case = nil; - - return (function() {$case = total; - if ((2)['$===']($case)) {return "ファンブル!"} - else if ((12)['$===']($case)) {return "強打!"} - else { return nil }})() - }, $AFF2e_critical$6.$$arity = 1); - - Opal.def(self, '$clamp', $AFF2e_clamp$7 = function $$clamp(i, min, max) { - var self = this; - - if ($truthy($rb_lt(i, min))) { - return min - } else if ($truthy($rb_gt(i, max))) { - return max - } else { - return i - } - }, $AFF2e_clamp$7.$$arity = 3); - return (Opal.def(self, '$rollDiceCommand', $AFF2e_rollDiceCommand$8 = function $$rollDiceCommand(command) { - var $a, $b, $$9, self = this, $case = nil, md = nil, term = nil, diff = nil, dice_command = nil, total = nil, dice_str = nil, expr = nil, succ = nil, sequence = nil, corr = nil, crit = nil, damage_slots = nil, slot_number = nil, damage = nil, result = nil, secret = nil; - - - $case = command; - if (/^FF/['$===']($case)) { - md = $$($nesting, 'Regexp').$last_match(); - term = md.$post_match(); - diff = self.$eval_term(term); - dice_command = "" + "2D6<=" + (diff); - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - expr = "" + (total) + "[" + (dice_str) + "]"; - succ = self.$successful_or_failed(total, diff); - sequence = [self.$parentheses(dice_command), expr, succ];} - else if (/^FR/['$===']($case)) { - md = $$($nesting, 'Regexp').$last_match(); - term = md.$post_match(); - corr = self.$eval_term(term); - dice_command = "" + "2D6" + (self.$explicit_sign(corr)); - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - expr = "" + (total) + "[" + (dice_str) + "]" + (self.$explicit_sign(corr)); - crit = self.$critical(total); - sequence = [self.$parentheses(dice_command), expr, crit, $rb_plus(total, corr)].$compact();} - else if (/^FD/['$===']($case)) { - md = $$($nesting, 'Regexp').$last_match(); - term = md.$post_match(); - md = /^\[(.+)\]/.$match(term); - if ($truthy(md)) { - } else { - return ["ダメージスロットは必須です。", false] - }; - term = md.$post_match(); - damage_slots = $send(md['$[]'](1).$split(","), 'map', [], ($$9 = function(t){var self = $$9.$$s || this; - - - - if (t == null) { - t = nil; - }; - return self.$eval_term(t);}, $$9.$$s = self, $$9.$$arity = 1, $$9)); - if ($truthy(damage_slots.$size()['$!='](7))) { - return ["ダメージスロットの長さに誤りがあります。", false]}; - corr = self.$eval_term(term); - dice_command = "" + "1D6" + (self.$explicit_sign(corr)); - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - expr = "" + (total) + (self.$explicit_sign(corr)); - slot_number = self.$clamp($rb_plus(total, corr), 1, 7); - damage = damage_slots['$[]']($rb_minus(slot_number, 1)); - sequence = [self.$parentheses(dice_command), expr, $rb_plus(total, corr), "" + (damage) + "ダメージ"];}; - result = sequence.$join(" > "); - secret = false; - return [result, secret]; - }, $AFF2e_rollDiceCommand$8.$$arity = 1), nil) && 'rollDiceCommand'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/AceKillerGene.js b/src/assets/dicebot/AceKillerGene.js deleted file mode 100644 index 297d7912a..000000000 --- a/src/assets/dicebot/AceKillerGene.js +++ /dev/null @@ -1,158 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/GardenOrder"] = function(Opal) { - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$setPrefixes', '$===', '$to_i', '$last_match', '$get_critical_border', '$check_roll_repeat_attack', '$look_up_damage_chart', '$nil?', '$max', '$floor', '$/', '$check_roll', '$<', '$roll', '$get_check_result', '$<=', '$>=', '$get_damage_table_info_by_type', '$get_table_by_number', '$[]', '$freeze']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'GardenOrder'); - - var $nesting = [self].concat($parent_nesting), $GardenOrder_rollDiceCommand$1, $GardenOrder_get_critical_border$2, $GardenOrder_check_roll_repeat_attack$3, $GardenOrder_check_roll$4, $GardenOrder_get_check_result$5, $GardenOrder_look_up_damage_chart$6, $GardenOrder_get_damage_table_info_by_type$7; - - - Opal.const_set($nesting[0], 'ID', "GardenOrder"); - Opal.const_set($nesting[0], 'NAME', "ガーデンオーダー"); - Opal.const_set($nesting[0], 'SORT_KEY', "かあてんおおたあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・基本判定\n" + " GOx/y@z x:成功率、y:連続攻撃回数(省略可)、z:クリティカル値(省略可)\n" + " (連続攻撃では1回の判定のみが実施されます)\n" + " 例)GO55 GO100/2 GO70@10 GO155/3@44\n" + "・負傷表\n" + " DCxxy\n" + " xx:属性(切断:SL,銃弾:BL,衝撃:IM,灼熱:BR,冷却:RF,電撃:EL)\n" + " y:ダメージ\n" + " 例)DCSL7 DCEL22\n"); - self.$setPrefixes(["GO(\\-?\\d+)(\\/\\d+)?(@\\d+)?", "DC(SL|BL|IM|BR|RF|EL).+"]); - - Opal.def(self, '$rollDiceCommand', $GardenOrder_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, self = this, $case = nil, success_rate = nil, repeat_count = nil, critical_border_text = nil, critical_border = nil, type = nil, damage_value = nil; - - - $case = command; - if (/GO(\-?\d+)(\/(\d+))?(@(\d+))?/i['$===']($case)) { - success_rate = $$($nesting, 'Regexp').$last_match(1).$to_i(); - repeat_count = ($truthy($a = $$($nesting, 'Regexp').$last_match(3)) ? $a : 1).$to_i(); - critical_border_text = $$($nesting, 'Regexp').$last_match(5); - critical_border = self.$get_critical_border(critical_border_text, success_rate); - return self.$check_roll_repeat_attack(success_rate, repeat_count, critical_border);} - else if (/^DC(SL|BL|IM|BR|RF|EL)(\d+)/i['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1); - damage_value = $$($nesting, 'Regexp').$last_match(2).$to_i(); - return self.$look_up_damage_chart(type, damage_value);}; - return nil; - }, $GardenOrder_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$get_critical_border', $GardenOrder_get_critical_border$2 = function $$get_critical_border(critical_border_text, success_rate) { - var self = this, critical_border = nil; - - - if ($truthy(critical_border_text['$nil?']())) { - } else { - return critical_border_text.$to_i() - }; - critical_border = [$rb_divide(success_rate, 5).$floor(), 1].$max(); - return critical_border; - }, $GardenOrder_get_critical_border$2.$$arity = 2); - - Opal.def(self, '$check_roll_repeat_attack', $GardenOrder_check_roll_repeat_attack$3 = function $$check_roll_repeat_attack(success_rate, repeat_count, critical_border) { - var self = this, success_rate_per_one = nil; - - - success_rate_per_one = $rb_divide(success_rate, repeat_count).$floor(); - return self.$check_roll(success_rate_per_one, critical_border); - }, $GardenOrder_check_roll_repeat_attack$3.$$arity = 3); - - Opal.def(self, '$check_roll', $GardenOrder_check_roll$4 = function $$check_roll(success_rate, critical_border) { - var $a, $b, self = this, fumble_border = nil, dice_value = nil, result = nil, text = nil; - - - if ($truthy($rb_lt(success_rate, 0))) { - success_rate = 0}; - fumble_border = (function() {if ($truthy($rb_lt(success_rate, 100))) { - return 96 - } else { - return 99 - }; return nil; })(); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (dice_value = ($a[0] == null ? nil : $a[0])), $b; - result = self.$get_check_result(dice_value, success_rate, critical_border, fumble_border); - text = "" + "D100<=" + (success_rate) + "@" + (critical_border) + " > " + (dice_value) + " > " + (result); - return text; - }, $GardenOrder_check_roll$4.$$arity = 2); - - Opal.def(self, '$get_check_result', $GardenOrder_get_check_result$5 = function $$get_check_result(dice_value, success_rate, critical_border, fumble_border) { - var self = this; - - - if ($truthy($rb_le(dice_value, critical_border))) { - return "クリティカル"}; - if ($truthy($rb_ge(dice_value, fumble_border))) { - return "ファンブル"}; - if ($truthy($rb_le(dice_value, success_rate))) { - return "成功"}; - return "失敗"; - }, $GardenOrder_get_check_result$5.$$arity = 4); - - Opal.def(self, '$look_up_damage_chart', $GardenOrder_look_up_damage_chart$6 = function $$look_up_damage_chart(type, damage_value) { - var $a, $b, self = this, name = nil, table = nil, row = nil; - - - $b = self.$get_damage_table_info_by_type(type), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b; - row = self.$get_table_by_number(damage_value, table, nil); - if ($truthy(row['$nil?']())) { - return nil}; - return "" + "負傷表:" + (name) + "[" + (damage_value) + "] > " + (row['$[]']("damage")) + " | " + (row['$[]']("name")) + " … " + (row['$[]']("text")); - }, $GardenOrder_look_up_damage_chart$6.$$arity = 2); - - Opal.def(self, '$get_damage_table_info_by_type', $GardenOrder_get_damage_table_info_by_type$7 = function $$get_damage_table_info_by_type(type) { - var self = this, data = nil; - - - data = $$($nesting, 'DAMAGE_TABLE')['$[]'](type); - if ($truthy(data['$nil?']())) { - return nil}; - return [data['$[]']("name"), data['$[]']("table")]; - }, $GardenOrder_get_damage_table_info_by_type$7.$$arity = 1); - return Opal.const_set($nesting[0], 'DAMAGE_TABLE', $hash2(["SL", "BL", "IM", "BR", "RF", "EL"], {"SL": $hash2(["name", "table"], {"name": "切断", "table": [[5, $hash2(["name", "text", "damage"], {"name": "切り傷", "text": "皮膚が切り裂かれる。", "damage": "軽傷1"})], [10, $hash2(["name", "text", "damage"], {"name": "脚部負傷", "text": "足が切り裂かれ、思わずひざまずく。", "damage": "軽傷2/マヒ"})], [13, $hash2(["name", "text", "damage"], {"name": "出血", "text": "斬り裂かれた傷から出血が続く。", "damage": "軽傷3/DOT:軽傷1"})], [16, $hash2(["name", "text", "damage"], {"name": "胴部負傷", "text": "胴部に大きな傷を受ける。", "damage": "軽傷4"})], [19, $hash2(["name", "text", "damage"], {"name": "腕部負傷", "text": "腕に大きな傷を受ける。", "damage": "重傷1/DOT:軽傷1"})], [22, $hash2(["name", "text", "damage"], {"name": "腹部負傷", "text": "腹部を深く切り裂かれる。", "damage": "重傷2"})], [25, $hash2(["name", "text", "damage"], {"name": "大量出血", "text": "傷は深く、そこから大量に出血する。", "damage": "重傷2/DOT:軽傷2"})], [28, $hash2(["name", "text", "damage"], {"name": "裂傷", "text": "治りにくい傷をつけられる。", "damage": "重傷3"})], [31, $hash2(["name", "text", "damage"], {"name": "視界不良", "text": "頭部に受けた傷から血が流れ、視界がふさがれる。", "damage": "重傷3/スタン"})], [34, $hash2(["name", "text", "damage"], {"name": "胸部負傷", "text": "胸から腰にかけて大きく切り裂かれる。", "damage": "致命傷1"})], [37, $hash2(["name", "text", "damage"], {"name": "動脈切断", "text": "動脈が切り裂かれ、噴き出るように出血する。", "damage": "致命傷1/DOT:軽傷3"})], [39, $hash2(["name", "text", "damage"], {"name": "胸部切断", "text": "傷が肺にまで達し、喀血する。", "damage": "致命傷2"})], [9999, $hash2(["name", "text", "damage"], {"name": "脊髄損傷", "text": "脊髄が損傷する。", "damage": "致命傷2/放心、スタン、マヒ"})]]}), "BL": $hash2(["name", "table"], {"name": "銃弾", "table": [[5, $hash2(["name", "text", "damage"], {"name": "腕部損傷", "text": "銃弾が腕をかすめた。", "damage": "軽傷2"})], [10, $hash2(["name", "text", "damage"], {"name": "腕部貫通", "text": "銃弾が腕を貫く。痛みはあるが動作に支障はない。", "damage": "軽傷3"})], [13, $hash2(["name", "text", "damage"], {"name": "胴部負傷", "text": "胴部に銃弾をくらう。痛みで動きが鈍くなる。", "damage": "軽傷4/スロウ:-3"})], [16, $hash2(["name", "text", "damage"], {"name": "肩負傷", "text": "肩を貫かれる。骨が砕けたようだ。", "damage": "重傷1"})], [19, $hash2(["name", "text", "damage"], {"name": "腹部負傷", "text": "腹部が貫かれる。かろうじて内臓にダメージはないようだ。", "damage": "重傷2"})], [22, $hash2(["name", "text", "damage"], {"name": "脚部貫通", "text": "脚を銃弾に貫かれ、その場でひざまずく。", "damage": "重傷2/マヒ"})], [25, $hash2(["name", "text", "damage"], {"name": "消化器系損傷", "text": "胃などの消化器官にダメージを受ける。", "damage": "重傷3"})], [28, $hash2(["name", "text", "damage"], {"name": "盲管銃弾", "text": "身体に弾丸が深々と刺さる。激痛が走る。", "damage": "重傷3/スロウ:-5"})], [31, $hash2(["name", "text", "damage"], {"name": "内臓損傷", "text": "いくつかの内臓にダメージを受ける。", "damage": "致命傷1/スタン"})], [34, $hash2(["name", "text", "damage"], {"name": "胴部貫通", "text": "腹部への攻撃が貫通し、出血する。", "damage": "致命傷1/DOT:軽傷1"})], [37, $hash2(["name", "text", "damage"], {"name": "胸部負傷", "text": "銃弾で肺を貫かれる。", "damage": "致命傷2"})], [39, $hash2(["name", "text", "damage"], {"name": "致命的な一撃", "text": "銃弾が頭部に命中。ショックで意識を飛ばされる。", "damage": "致命傷2/放心"})], [9999, $hash2(["name", "text", "damage"], {"name": "必殺の一撃", "text": "銃弾が心臓の近くを貫く。動脈にダメージを受けたようだ。", "damage": "致命傷2/DOT:重傷1"})]]}), "IM": $hash2(["name", "table"], {"name": "衝撃", "table": [[5, $hash2(["name", "text", "damage"], {"name": "打撲", "text": "攻撃を受けた箇所がどす黒く腫れ上がる。", "damage": "軽傷1"})], [10, $hash2(["name", "text", "damage"], {"name": "転倒", "text": "衝撃で転倒する。", "damage": "軽傷1/マヒ"})], [13, $hash2(["name", "text", "damage"], {"name": "平衡感覚喪失", "text": "衝撃で三半規管にダメージを受ける。", "damage": "軽傷2、疲労2"})], [16, $hash2(["name", "text", "damage"], {"name": "ボディーブロー", "text": "腹部に直撃。痛みが継続し、体力を奪う。", "damage": "軽傷3/DOT:疲労3"})], [19, $hash2(["name", "text", "damage"], {"name": "痛打", "text": "胴部や脚部などに打撃を受ける。", "damage": "軽傷4/スタン"})], [22, $hash2(["name", "text", "damage"], {"name": "頭部痛打", "text": "頭部にクリーンヒット。意識がもうろうとする。", "damage": "軽傷5/放心"})], [25, $hash2(["name", "text", "damage"], {"name": "脚部骨折", "text": "攻撃が足に命中し、骨折する。", "damage": "重傷1/スロウ:-5"})], [28, $hash2(["name", "text", "damage"], {"name": "大転倒", "text": "激しい衝撃によって、負傷すると共に大きく体勢を崩す。", "damage": "重傷1/マヒ、スタン"})], [31, $hash2(["name", "text", "damage"], {"name": "脳震盪", "text": "脳が大きく揺さぶられ、意識が飛びそうになる。", "damage": "重傷2/放心"})], [34, $hash2(["name", "text", "damage"], {"name": "複雑骨折", "text": "攻撃を受けた部分が大きくひしゃげ、複雑骨折したようだ。", "damage": "重傷3/放心、スタン"})], [37, $hash2(["name", "text", "damage"], {"name": "頭部裂傷", "text": "頭部に命中。皮膚が大きく裂ける。", "damage": "致命傷1、疲労3"})], [39, $hash2(["name", "text", "damage"], {"name": "肋骨負傷", "text": "折れた肋骨が肺に突き刺さり、まともに呼吸を行なうことができない。", "damage": "致命傷1/放心、スタン"})], [9999, $hash2(["name", "text", "damage"], {"name": "内臓損傷", "text": "衝撃が身体の芯まで届き、内臓がいくつか傷ついたようだ。", "damage": "致命傷2/DOT:重傷1"})]]}), "BR": $hash2(["name", "table"], {"name": "灼熱", "table": [[5, $hash2(["name", "text", "damage"], {"name": "火傷", "text": "皮膚に小さな火傷を負う。", "damage": "軽傷1"})], [10, $hash2(["name", "text", "damage"], {"name": "温度上昇", "text": "熱によって、怪我だけではなく体力も奪われる。", "damage": "軽傷2、疲労1"})], [13, $hash2(["name", "text", "damage"], {"name": "恐怖", "text": "燃え上がる炎に恐怖を感じ、身体がすくんで動きが止まる。", "damage": "軽傷3/放心"})], [16, $hash2(["name", "text", "damage"], {"name": "発火", "text": "衣服や身体の一部に火が燃え移る。", "damage": "軽傷3/DOT:軽傷1"})], [19, $hash2(["name", "text", "damage"], {"name": "爆発", "text": "爆発により吹き飛ばされ、転倒する。", "damage": "重傷1/マヒ"})], [22, $hash2(["name", "text", "damage"], {"name": "大火傷", "text": "痕が残るほどの大きな火傷を負う。", "damage": "重傷2"})], [25, $hash2(["name", "text", "damage"], {"name": "熱波", "text": "火傷と強力な熱により意識がもうろうとする。", "damage": "重傷2/スタン"})], [28, $hash2(["name", "text", "damage"], {"name": "大爆発", "text": "激しい爆発で吹き飛ばされ、ダメージと共に転倒する。", "damage": "重傷3/マヒ"})], [31, $hash2(["name", "text", "damage"], {"name": "大発火", "text": "広範囲に火が燃え移る。", "damage": "重傷3/DOT:軽傷1"})], [34, $hash2(["name", "text", "damage"], {"name": "炭化", "text": "高熱のあまり、焼けた部分が炭化してしまう。", "damage": "致命傷1"})], [37, $hash2(["name", "text", "damage"], {"name": "内臓火傷", "text": "高温の空気を吸い込む、気道にも火傷を負ってしまう。", "damage": "致命傷1/DOT:軽傷1"})], [39, $hash2(["name", "text", "damage"], {"name": "全身火傷", "text": "身体の各所に深い火傷を負う。", "damage": "致命傷2"})], [9999, $hash2(["name", "text", "damage"], {"name": "致命的火傷", "text": "身体の大部分に焼けどを負う。", "damage": "致命傷2/スタン"})]]}), "RF": $hash2(["name", "table"], {"name": "冷却", "table": [[5, $hash2(["name", "text", "damage"], {"name": "冷気", "text": "軽い凍傷を受ける。", "damage": "軽傷1"})], [10, $hash2(["name", "text", "damage"], {"name": "霜の衣", "text": "身体が薄い氷で覆われ、動きが鈍る。", "damage": "軽傷1/疲労1"})], [13, $hash2(["name", "text", "damage"], {"name": "凍傷", "text": "凍傷により身体が傷つけられる。", "damage": "軽傷2"})], [16, $hash2(["name", "text", "damage"], {"name": "体温低下", "text": "冷気によって体温を奪われる。", "damage": "軽傷3/DOT:疲労1"})], [19, $hash2(["name", "text", "damage"], {"name": "氷の枷", "text": "肘や膝などが氷で覆われ、動きが取りにくくなる。", "damage": "重傷1/マヒ"})], [22, $hash2(["name", "text", "damage"], {"name": "大凍傷", "text": "身体の各所に凍傷を受ける。", "damage": "重傷1/DOT:疲労2"})], [25, $hash2(["name", "text", "damage"], {"name": "氷の束縛", "text": "下半身が凍りつき、動くことができない。", "damage": "重傷2/マヒ"})], [28, $hash2(["name", "text", "damage"], {"name": "視界不良", "text": "頭部にも氷が張り、視界がふさがれる。", "damage": "重傷2/スタン"})], [31, $hash2(["name", "text", "damage"], {"name": "腕部凍結", "text": "腕が凍りづけになり、動かすことができない。", "damage": "重傷3/放心"})], [34, $hash2(["name", "text", "damage"], {"name": "重度凍傷", "text": "さらに体温が低下し、深刻な凍傷を受ける。", "damage": "致命傷1"})], [37, $hash2(["name", "text", "damage"], {"name": "全身凍結", "text": "全身が凍りづけになる。", "damage": "致命傷1/DOT:疲労2"})], [39, $hash2(["name", "text", "damage"], {"name": "致命的凍傷", "text": "身体全身に凍傷を受ける。", "damage": "致命傷2"})], [9999, $hash2(["name", "text", "damage"], {"name": "氷の棺", "text": "完全に氷に閉じ込められる。", "damage": "致命傷2/スタン、マヒ"})]]}), "EL": $hash2(["name", "table"], {"name": "電撃", "table": [[5, $hash2(["name", "text", "damage"], {"name": "静電気", "text": "全身の毛が逆立つ。", "damage": "疲労3"})], [10, $hash2(["name", "text", "damage"], {"name": "電熱傷", "text": "電流によって傷つく。", "damage": "疲労1、軽傷1"})], [13, $hash2(["name", "text", "damage"], {"name": "感電", "text": "電流で傷つくと共に、身体が軽くしびれる。", "damage": "疲労2、軽傷2"})], [16, $hash2(["name", "text", "damage"], {"name": "閃光", "text": "激しい電光により、一時的に視界がふさがれる。", "damage": "軽傷3/スタン"})], [19, $hash2(["name", "text", "damage"], {"name": "脚部感電", "text": "電流により脚がしびれ、動けなくなる。", "damage": "重傷1/マヒ"})], [22, $hash2(["name", "text", "damage"], {"name": "大電熱傷", "text": "身体の各所が電流によって傷つく。", "damage": "疲労2、重傷2"})], [25, $hash2(["name", "text", "damage"], {"name": "腕部負傷", "text": "電流で腕がしびれ、動けなくなる。", "damage": "軽傷1、重傷2/放心"})], [28, $hash2(["name", "text", "damage"], {"name": "大感電", "text": "電流によって身体中がしびれ、動けなくなる。", "damage": "重傷2/スタン、マヒ"})], [31, $hash2(["name", "text", "damage"], {"name": "一時心停止", "text": "強力な電撃のショックにより、心臓がほんの一瞬だけ止まる。", "damage": "疲労3、重傷3"})], [34, $hash2(["name", "text", "damage"], {"name": "大電流", "text": "全身に電流が駆け巡る。", "damage": "重傷3/放心、マヒ"})], [37, $hash2(["name", "text", "damage"], {"name": "致命電熱傷", "text": "全身が電流によって傷つく。", "damage": "重傷1、致命傷1"})], [39, $hash2(["name", "text", "damage"], {"name": "心停止", "text": "強力な電撃のショックにより、心臓が一時的に止まる。死の淵が見える。", "damage": "疲労3、重傷1、致命傷1"})], [9999, $hash2(["name", "text", "damage"], {"name": "組織炭化", "text": "全身が電流で焼かれ、あちこちの組織が炭化する。", "damage": "致命傷2/スタン"})]]})}).$freeze()); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$setPrefixes', '$===', '$to_i', '$last_match', '$get_critical_border', '$check_roll_repeat_attack', '$look_up_damage_chart']); - - self.$require("diceBot/GardenOrder"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'AceKillerGene'); - - var $nesting = [self].concat($parent_nesting), $AceKillerGene_rollDiceCommand$1; - - - Opal.const_set($nesting[0], 'ID', "AceKillerGene"); - Opal.const_set($nesting[0], 'NAME', "エースキラージーン"); - Opal.const_set($nesting[0], 'SORT_KEY', "ええすきらあしいん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・基本判定\n" + " AKx/y@z x:成功率、y:連続攻撃回数(省略可)、z:クリティカル値(省略可)\n" + " (連続攻撃では1回の判定のみが実施されます)\n" + " 例)AK55 AK100/2 AK70@10 AK155/3@44\n" + "・負傷表\n" + " DCxxy\n" + " xx:属性(切断:SL,銃弾:BL,衝撃:IM,灼熱:BR,冷却:RF,電撃:EL)\n" + " y:ダメージ\n" + " 例)DCSL7 DCEL22\n"); - self.$setPrefixes(["(AK|AKG)(\\-?\\d+)(\\/\\d+)?(@\\d+)?", "DC(SL|BL|IM|BR|RF|EL).+"]); - return (Opal.def(self, '$rollDiceCommand', $AceKillerGene_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, self = this, $case = nil, success_rate = nil, repeat_count = nil, critical_border_text = nil, critical_border = nil, type = nil, damage_value = nil; - - - $case = command; - if (/(AK|AKG)(\-?\d+)(\/(\d+))?(@(\d+))?/i['$===']($case)) { - success_rate = $$($nesting, 'Regexp').$last_match(2).$to_i(); - repeat_count = ($truthy($a = $$($nesting, 'Regexp').$last_match(4)) ? $a : 1).$to_i(); - critical_border_text = $$($nesting, 'Regexp').$last_match(6); - critical_border = self.$get_critical_border(critical_border_text, success_rate); - return self.$check_roll_repeat_attack(success_rate, repeat_count, critical_border);} - else if (/^DC(SL|BL|IM|BR|RF|EL)(\d+)/i['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1); - damage_value = $$($nesting, 'Regexp').$last_match(2).$to_i(); - return self.$look_up_damage_chart(type, damage_value);}; - return nil; - }, $AceKillerGene_rollDiceCommand$1.$$arity = 1), nil) && 'rollDiceCommand'; - })($nesting[0], $$($nesting, 'GardenOrder'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Airgetlamh.js b/src/assets/dicebot/Airgetlamh.js deleted file mode 100644 index 5a41142a7..000000000 --- a/src/assets/dicebot/Airgetlamh.js +++ /dev/null @@ -1,128 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$===', '$to_i', '$last_match', '$==', '$>', '$checkRoll', '$roll', '$collect', '$split', '$count', '$<=', '$+', '$empty?', '$!=', '$*']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Airgetlamh'); - - var $nesting = [self].concat($parent_nesting), $Airgetlamh_initialize$1, $Airgetlamh_rollDiceCommand$2, $Airgetlamh_checkRoll$3; - - self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "Airgetlamh"); - Opal.const_set($nesting[0], 'NAME', "朱の孤塔のエアゲトラム"); - Opal.const_set($nesting[0], 'SORT_KEY', "あけのことうのえあけとらむ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "【Reg2.0『THE ANSWERER』~】\n" + "・調査判定(成功数を表示):[n]AA[m]\n" + "・命中判定(ダメージ表示):[n]AA[m]*p[+t][Cx]\n" + "【~Reg1.1『昇華』】\n" + "・調査判定(成功数を表示):[n]AL[m]\n" + "・命中判定(ダメージ表示):[n]AL[m]*p\n" + "----------------------------------------\n" + "[]内のコマンドは省略可能。\n" + "\n" + "「n」でダイス数(攻撃回数)を指定。省略時は「2」。\n" + "「m」で目標値を指定。省略時は「6」。\n" + "「p」で威力を指定。「*」は「x」で代用可。\n" + "「+t」でクリティカルトリガーを指定。省略可。\n" + "「Cx」でクリティカル値を指定。省略時は「1」、最大値は「3」、「0」でクリティカル無し。\n" + "\n" + "攻撃力指定で命中判定となり、成功数ではなく、ダメージを結果表示します。\n" + "クリティカルヒットの分だけ、自動で振り足し処理を行います。\n" + "(ALコマンドではクリティカル処理を行いません)\n" + "\n" + "【書式例】\n" + "・AL → 2d10で目標値6の調査判定。\n" + "・5AA7*12 → 5d10で目標値7、威力12の命中判定。\n" + "・AA7x28+5 → 2d10で目標値7、威力28、クリティカルトリガー5の命中判定。\n" + "・9aa5*10C2 → 9d10で目標値5、威力10、クリティカル値2の命中判定。\n" + "・15AAx4c0 → 15d10で目標値6、威力4、クリティカル無しの命中判定。\n"); - self.$setPrefixes([["(\\d+)?A(A|L)(\\d+)?((x|\\*)(\\d+)(\\+(\\d+))?)?(C(\\d+))?"]]); - - Opal.def(self, '$initialize', $Airgetlamh_initialize$1 = function $$initialize() { - var $iter = $Airgetlamh_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Airgetlamh_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Airgetlamh_initialize$1, false), $zuper, $iter); - return (self.sortType = 1); - }, $Airgetlamh_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Airgetlamh_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, self = this, diceCount = nil, target = nil, damage = nil, criticalTrigger = nil, criticalNumber = nil; - - - if ($truthy(/(\d+)?A(A|L)(\d+)?((x|\*)(\d+)(\+(\d+))?)?(C(\d+))?$/i['$==='](command))) { - - diceCount = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 2).$to_i(); - target = ($truthy($a = $$($nesting, 'Regexp').$last_match(3)) ? $a : 6).$to_i(); - damage = ($truthy($a = $$($nesting, 'Regexp').$last_match(6)) ? $a : 0).$to_i(); - if ($$($nesting, 'Regexp').$last_match(2)['$==']("L")) { - - criticalTrigger = 0; - criticalNumber = 0; - } else { - - criticalTrigger = ($truthy($a = $$($nesting, 'Regexp').$last_match(8)) ? $a : 0).$to_i(); - criticalNumber = ($truthy($a = $$($nesting, 'Regexp').$last_match(10)) ? $a : 1).$to_i(); - }; - if ($truthy($rb_gt(criticalNumber, 4))) { - criticalNumber = 3}; - return self.$checkRoll(diceCount, target, damage, criticalTrigger, criticalNumber);}; - return nil; - }, $Airgetlamh_rollDiceCommand$2.$$arity = 1); - return (Opal.def(self, '$checkRoll', $Airgetlamh_checkRoll$3 = function $$checkRoll(diceCount, target, damage, criticalTrigger, criticalNumber) { - var $a, $b, $c, $$4, $$5, $$6, self = this, totalSuccessCount = nil, totalCriticalCount = nil, text = nil, rollCount = nil, _dice = nil, diceText = nil, diceArray = nil, successCount = nil, criticalCount = nil, result = nil, isDamage = nil, totalDamage = nil; - - - totalSuccessCount = 0; - totalCriticalCount = 0; - text = ""; - rollCount = diceCount; - while ($truthy($rb_gt(rollCount, 0))) { - - $c = self.$roll(rollCount, 10, self.sortType), $b = Opal.to_ary($c), (_dice = ($b[0] == null ? nil : $b[0])), (diceText = ($b[1] == null ? nil : $b[1])), $c; - diceArray = $send(diceText.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - successCount = $send(diceArray, 'count', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - return $rb_le(i, target);}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - criticalCount = $send(diceArray, 'count', [], ($$6 = function(i){var self = $$6.$$s || this; - - - - if (i == null) { - i = nil; - }; - return $rb_le(i, criticalNumber);}, $$6.$$s = self, $$6.$$arity = 1, $$6)); - totalSuccessCount = $rb_plus(totalSuccessCount, successCount); - totalCriticalCount = $rb_plus(totalCriticalCount, criticalCount); - if ($truthy(text['$empty?']())) { - } else { - text = $rb_plus(text, "+") - }; - text = $rb_plus(text, "" + (successCount) + "[" + (diceText) + "]"); - rollCount = criticalCount; - }; - result = ""; - isDamage = damage['$!='](0); - if ($truthy(isDamage)) { - - totalDamage = $rb_plus($rb_times(totalSuccessCount, damage), $rb_times(totalCriticalCount, criticalTrigger)); - result = $rb_plus(result, "" + "(" + (diceCount) + "D10<=" + (target) + ") > " + (text) + " > Hits:" + (totalSuccessCount) + "*" + (damage)); - if ($truthy($rb_gt(criticalTrigger, 0))) { - result = $rb_plus(result, "" + " + Trigger:" + (totalCriticalCount) + "*" + (criticalTrigger))}; - result = $rb_plus(result, "" + " > " + (totalDamage) + "ダメージ"); - } else { - result = $rb_plus(result, "" + "(" + (diceCount) + "D10<=" + (target) + ") > " + (text) + " > 成功数:" + (totalSuccessCount)) - }; - if ($truthy($rb_gt(totalCriticalCount, 0))) { - result = $rb_plus(result, "" + " / " + (totalCriticalCount) + "クリティカル")}; - return result; - }, $Airgetlamh_checkRoll$3.$$arity = 5), nil) && 'checkRoll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Alsetto.js b/src/assets/dicebot/Alsetto.js deleted file mode 100644 index d682df60d..000000000 --- a/src/assets/dicebot/Alsetto.js +++ /dev/null @@ -1,130 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$===', '$to_i', '$last_match', '$nil?', '$==', '$checkRoll', '$>', '$roll', '$collect', '$split', '$each', '$<=', '$+', '$empty?', '$!=', '$*']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Alsetto'); - - var $nesting = [self].concat($parent_nesting), $Alsetto_initialize$1, $Alsetto_rollDiceCommand$2, $Alsetto_checkRoll$3; - - self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "Alsetto"); - Opal.const_set($nesting[0], 'NAME', "詩片のアルセット"); - Opal.const_set($nesting[0], 'SORT_KEY', "うたかたのあるせつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・成功判定:nAL[m]    ・トライアンフ無し:nALC[m]\n" + "・命中判定:nAL[m]*p   ・トライアンフ無し:nALC[m]*p\n" + "・命中判定(ガンスリンガーの根源詩):nALG[m]*p\n" + "[]内は省略可能。\n" + "\n" + "ALコマンドはトライアンフの分だけ、自動で振り足し処理を行います。\n" + "「n」でダイス数を指定。\n" + "「m」で目標値を指定。省略時は、デフォルトの「3」が使用されます。\n" + "「p」で攻撃力を指定。「*」は「x」でも可。\n" + "攻撃力指定で命中判定となり、成功数ではなく、ダメージを結果表示します。\n" + "\n" + "ALCコマンドはトライアンフ無しで、成功数、ダメージを結果表示します。\n" + "ALGコマンドは「2以下」でトライアンフ処理を行います。\n" + "\n" + "【書式例】\n" + "・5AL → 5d6で目標値3。\n" + "・5ALC → 5d6で目標値3。トライアンフ無し。\n" + "・6AL2 → 6d6で目標値2。\n" + "・4AL*5 → 4d6で目標値3、攻撃力5の命中判定。\n" + "・7AL2x10 → 7d6で目標値2、攻撃力10の命中判定。\n" + "・8ALC4x5 → 8d6で目標値4、攻撃力5、トライアンフ無しの命中判定。\n"); - self.$setPrefixes(["\\d+AL(C|G)?(\\d+)?(x|\\*)\\d+", "\\d+ALC?(\\d+)?"]); - - Opal.def(self, '$initialize', $Alsetto_initialize$1 = function $$initialize() { - var $iter = $Alsetto_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Alsetto_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Alsetto_initialize$1, false), $zuper, $iter); - return (self.sortType = 1); - }, $Alsetto_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Alsetto_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, self = this, rapid = nil, isCritical = nil, criticalNumber = nil, target = nil, damage = nil; - - - if ($truthy(/(\d+)AL(C|G)?(\d+)?((x|\*)(\d+))?$/i['$==='](command))) { - - rapid = $$($nesting, 'Regexp').$last_match(1).$to_i(); - isCritical = $$($nesting, 'Regexp').$last_match(2)['$nil?'](); - if ($truthy(isCritical)) { - criticalNumber = 1 - } else if ($$($nesting, 'Regexp').$last_match(2)['$==']("G")) { - - isCritical = true; - criticalNumber = 2; - } else { - criticalNumber = 0 - }; - target = ($truthy($a = $$($nesting, 'Regexp').$last_match(3)) ? $a : 3).$to_i(); - damage = ($truthy($a = $$($nesting, 'Regexp').$last_match(6)) ? $a : 0).$to_i(); - return self.$checkRoll(rapid, target, damage, isCritical, criticalNumber);}; - return nil; - }, $Alsetto_rollDiceCommand$2.$$arity = 1); - return (Opal.def(self, '$checkRoll', $Alsetto_checkRoll$3 = function $$checkRoll(rapid, target, damage, isCritical, criticalNumber) { - var $a, $b, $c, $$4, $$5, self = this, totalSuccessCount = nil, totalCriticalCount = nil, text = nil, rollCount = nil, _dice = nil, diceText = nil, diceArray = nil, successCount = nil, criticalCount = nil, isDamage = nil, totalDamage = nil, result = nil; - - - totalSuccessCount = 0; - totalCriticalCount = 0; - text = ""; - rollCount = rapid; - while ($truthy($rb_gt(rollCount, 0))) { - - $c = self.$roll(rollCount, 6, self.sortType), $b = Opal.to_ary($c), (_dice = ($b[0] == null ? nil : $b[0])), (diceText = ($b[1] == null ? nil : $b[1])), $c; - diceArray = $send(diceText.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - successCount = 0; - criticalCount = 0; - $send(diceArray, 'each', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - if ($truthy($rb_le(i, target))) { - successCount = $rb_plus(successCount, 1)}; - if ($truthy($rb_le(i, criticalNumber))) { - return (criticalCount = $rb_plus(criticalCount, 1)) - } else { - return nil - };}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - totalSuccessCount = $rb_plus(totalSuccessCount, successCount); - if (criticalCount['$=='](0)) { - } else { - totalCriticalCount = $rb_plus(totalCriticalCount, 1) - }; - if ($truthy(text['$empty?']())) { - } else { - text = $rb_plus(text, "+") - }; - text = $rb_plus(text, "" + (successCount) + "[" + (diceText) + "]"); - if ($truthy(isCritical)) { - } else { - break; - }; - rollCount = criticalCount; - }; - isDamage = damage['$!='](0); - if ($truthy(isDamage)) { - - totalDamage = $rb_times(totalSuccessCount, damage); - result = "" + "(" + (rapid) + "D6<=" + (target) + ") > " + (text) + " > Hits:" + (totalSuccessCount) + "*" + (damage) + " > " + (totalDamage) + "ダメージ"; - } else { - result = "" + "(" + (rapid) + "D6<=" + (target) + ") > " + (text) + " > 成功数:" + (totalSuccessCount) - }; - if ($truthy(isCritical)) { - result = $rb_plus(result, "" + " / " + (totalCriticalCount) + "トライアンフ")}; - return result; - }, $Alsetto_checkRoll$3.$$arity = 5), nil) && 'checkRoll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Alshard.js b/src/assets/dicebot/Alshard.js deleted file mode 100644 index 6cb744090..000000000 --- a/src/assets/dicebot/Alshard.js +++ /dev/null @@ -1,1170 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/DiceBot"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$freeze', '$attr_reader', '$map', '$to_proc', '$join', '$private', '$clearPrefixes', '$!', '$empty?', '$prefixs', '$prefixes', '$class', '$warn', '$id', '$setPrefixes', '$attr_accessor', '$name', '$sort_key', '$help_message', '$attr_writer', '$rand', '$roll', '$marshalSignOfInequality', '$unlimitedRollDiceType', '$getD66Value', '$parren_killer', '$debug', '$isGetOriginalMessage', '$getOriginalMessage', '$=~', '$prefixesPattern', '$last_match', '$removeDiceCommandMessage', '$rollDiceCommandCatched', '$nil?', '$!=', '$sub', '$rollDiceCommand', '$to_s', '$backtrace', '$size', '$===', '$check_1D100', '$check_1D20', '$check_2D6', '$check_nD10', '$check_nD6', '$check_nDx', '$is_a?', '$==', '$send', '$get_table_by_nD6', '$get_table_by_nDx', '$getTableValue', '$[]', '$-', '$/', '$getD66', '$bcdice', '$get_table_by_number', '$+', '$*', '$<', '$each', '$>=', '$kind_of?', '$lambda', '$call', '$select', '$public_methods', '$upcase', '$to_i', '$getTableInfoFromExtraTableText', '$get_table_by_nDx_extratable', '$get_table_by_d66', '$floor', '$%', '$get_table_by_d66_swap', '$raise', '$gsub', '$rollTableMessageDiceText', '$split', '$inspect']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceBot'); - - var $nesting = [self].concat($parent_nesting), $DiceBot_initialize$4, $DiceBot_postSet$5, $DiceBot_info$6, $DiceBot_id$7, $DiceBot_gameType$8, $DiceBot_name$9, $DiceBot_gameName$10, $DiceBot_sort_key$11, $DiceBot_help_message$12, $DiceBot_getHelpMessage$13, $DiceBot_prefixes$14, $DiceBot_setSendMode$15, $DiceBot_bcdice$eq$16, $DiceBot_bcdice$17, $DiceBot_rand$18, $DiceBot_roll$19, $DiceBot_marshalSignOfInequality$20, $DiceBot_unlimitedRollDiceType$21, $DiceBot_setSortType$22, $DiceBot_d66$23, $DiceBot_parren_killer$24, $DiceBot_changeText$25, $DiceBot_dice_command$26, $DiceBot_isGetOriginalMessage$27, $DiceBot_removeDiceCommandMessage$28, $DiceBot_rollDiceCommandCatched$29, $DiceBot_rollDiceCommand$30, $DiceBot_dice_command_xRn$31, $DiceBot_check_result$32, $DiceBot_check_nDx$33, $DiceBot_check_1D100$34, $DiceBot_check_1D20$35, $DiceBot_check_nD10$36, $DiceBot_check_2D6$37, $DiceBot_check_nD6$38, $DiceBot_get_table_by_2d6$39, $DiceBot_get_table_by_1d6$40, $DiceBot_get_table_by_nD6$41, $DiceBot_get_table_by_nDx$42, $DiceBot_get_table_by_1d3$43, $DiceBot_getD66$44, $DiceBot_get_table_by_d66_swap$45, $DiceBot_get_table_by_d66$46, $DiceBot_getDiceRolledAdditionalText$47, $DiceBot_getDiceRevision$48, $DiceBot_isD9$49, $DiceBot_getGrichText$50, $DiceBot_should_reroll$ques$51, $DiceBot_get_table_by_number$52, $DiceBot_getTableValue$54, $DiceBot_analyzeDiceCommandResultMethod$56, $DiceBot_get_table_by_nDx_extratable$59, $DiceBot_getTableCommandResult$60, $DiceBot_getTableInfoFromExtraTableText$61, $DiceBot_roll_tables$63; - - self.$$prototype.rerollLimitCount = self.$$prototype.d66Type = nil; - - Opal.const_set($nesting[0], 'EMPTY_PREFIXES_PATTERN', /(^|\s)(S)?()(\s|$)/i.$freeze()); - Opal.const_set($nesting[0], 'ID', "DiceBot"); - Opal.const_set($nesting[0], 'NAME', "DiceBot"); - Opal.const_set($nesting[0], 'SORT_KEY', "*たいすほつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', ""); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $setPrefixes$1, $clearPrefixes$2, $inherited$3; - - - self.$attr_reader("prefixes"); - self.$attr_reader("prefixesPattern"); - - Opal.def(self, '$setPrefixes', $setPrefixes$1 = function $$setPrefixes(prefixes) { - var self = this; - - - self.prefixes = $send(prefixes, 'map', [], "freeze".$to_proc()).$freeze(); - self.prefixesPattern = new RegExp("" + "(^|\\s)(S)?(" + (prefixes.$join("|")) + ")(\\s|$)", 'i').$freeze(); - return self; - }, $setPrefixes$1.$$arity = 1); - - Opal.def(self, '$clearPrefixes', $clearPrefixes$2 = function $$clearPrefixes() { - var self = this; - - - self.prefixes = [].$freeze(); - self.prefixesPattern = $$($nesting, 'EMPTY_PREFIXES_PATTERN'); - return self; - }, $clearPrefixes$2.$$arity = 0); - self.$private(); - return (Opal.def(self, '$inherited', $inherited$3 = function $$inherited(subclass) { - var self = this; - - return subclass.$clearPrefixes() - }, $inherited$3.$$arity = 1), nil) && 'inherited'; - })(Opal.get_singleton_class(self), $nesting); - self.$clearPrefixes(); - (Opal.class_variable_set($nesting[0], '@@bcdice', nil)); - Opal.const_set($nesting[0], 'DEFAULT_SEND_MODE', 2); - - Opal.def(self, '$initialize', $DiceBot_initialize$4 = function $$initialize() { - var $a, self = this; - - - self.sendMode = $$($nesting, 'DEFAULT_SEND_MODE'); - self.sortType = 0; - self.sameDiceRerollCount = 0; - self.sameDiceRerollType = 0; - self.d66Type = 1; - self.isPrintMaxDice = false; - self.upperRollThreshold = 0; - self.unlimitedRollDiceType = 0; - self.rerollNumber = 0; - self.defaultSuccessTarget = ""; - self.rerollLimitCount = 10000; - self.fractionType = "omit"; - if ($truthy(($truthy($a = self.$prefixs()['$empty?']()['$!']()) ? self.$class().$prefixes()['$empty?']() : $a))) { - - self.$warn("" + (self.$id()) + ": #prefixs is deprecated. Please use .setPrefixes."); - return self.$class().$setPrefixes(self.$prefixs()); - } else { - return nil - }; - }, $DiceBot_initialize$4.$$arity = 0); - self.$attr_accessor("rerollLimitCount"); - self.$attr_reader("sendMode", "sameDiceRerollCount", "sameDiceRerollType", "d66Type"); - self.$attr_reader("isPrintMaxDice", "upperRollThreshold"); - self.$attr_reader("defaultSuccessTarget", "rerollNumber", "fractionType"); - - Opal.def(self, '$postSet', $DiceBot_postSet$5 = function $$postSet() { - var self = this; - - return nil - }, $DiceBot_postSet$5.$$arity = 0); - - Opal.def(self, '$info', $DiceBot_info$6 = function $$info() { - var self = this; - - return $hash2(["gameType", "name", "sortKey", "prefixs", "info"], {"gameType": self.$id(), "name": self.$name(), "sortKey": self.$sort_key(), "prefixs": self.$class().$prefixes(), "info": self.$help_message()}) - }, $DiceBot_info$6.$$arity = 0); - - Opal.def(self, '$id', $DiceBot_id$7 = function $$id() { - var self = this; - - return $$$(self.$class(), 'ID') - }, $DiceBot_id$7.$$arity = 0); - - Opal.def(self, '$gameType', $DiceBot_gameType$8 = function $$gameType() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameType is deprecated. Please use #id."); - return self.$id(); - }, $DiceBot_gameType$8.$$arity = 0); - - Opal.def(self, '$name', $DiceBot_name$9 = function $$name() { - var self = this; - - return $$$(self.$class(), 'NAME') - }, $DiceBot_name$9.$$arity = 0); - - Opal.def(self, '$gameName', $DiceBot_gameName$10 = function $$gameName() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameName is deprecated. Please use #name."); - return self.$name(); - }, $DiceBot_gameName$10.$$arity = 0); - - Opal.def(self, '$sort_key', $DiceBot_sort_key$11 = function $$sort_key() { - var self = this; - - return $$$(self.$class(), 'SORT_KEY') - }, $DiceBot_sort_key$11.$$arity = 0); - - Opal.def(self, '$help_message', $DiceBot_help_message$12 = function $$help_message() { - var self = this; - - return $$$(self.$class(), 'HELP_MESSAGE') - }, $DiceBot_help_message$12.$$arity = 0); - - Opal.def(self, '$getHelpMessage', $DiceBot_getHelpMessage$13 = function $$getHelpMessage() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #getHelpMessage is deprecated. Please use #help_message."); - return self.$help_message(); - }, $DiceBot_getHelpMessage$13.$$arity = 0); - - Opal.def(self, '$prefixes', $DiceBot_prefixes$14 = function $$prefixes() { - var self = this; - - return self.$class().$prefixes() - }, $DiceBot_prefixes$14.$$arity = 0); - Opal.alias(self, "prefixs", "prefixes"); - - Opal.def(self, '$setSendMode', $DiceBot_setSendMode$15 = function $$setSendMode(m) { - var self = this; - - return (self.sendMode = m) - }, $DiceBot_setSendMode$15.$$arity = 1); - self.$attr_writer("upperRollThreshold"); - - Opal.def(self, '$bcdice=', $DiceBot_bcdice$eq$16 = function(b) { - var self = this; - - return (Opal.class_variable_set($nesting[0], '@@bcdice', b)) - }, $DiceBot_bcdice$eq$16.$$arity = 1); - - Opal.def(self, '$bcdice', $DiceBot_bcdice$17 = function $$bcdice() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a) - }, $DiceBot_bcdice$17.$$arity = 0); - - Opal.def(self, '$rand', $DiceBot_rand$18 = function $$rand(max) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rand(max) - }, $DiceBot_rand$18.$$arity = 1); - - Opal.def(self, '$roll', $DiceBot_roll$19 = function $$roll($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'roll', Opal.to_a(args)); - }, $DiceBot_roll$19.$$arity = -1); - - Opal.def(self, '$marshalSignOfInequality', $DiceBot_marshalSignOfInequality$20 = function $$marshalSignOfInequality($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'marshalSignOfInequality', Opal.to_a(args)); - }, $DiceBot_marshalSignOfInequality$20.$$arity = -1); - - Opal.def(self, '$unlimitedRollDiceType', $DiceBot_unlimitedRollDiceType$21 = function $$unlimitedRollDiceType() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$unlimitedRollDiceType() - }, $DiceBot_unlimitedRollDiceType$21.$$arity = 0); - self.$attr_reader("sortType"); - - Opal.def(self, '$setSortType', $DiceBot_setSortType$22 = function $$setSortType(s) { - var self = this; - - return (self.sortType = s) - }, $DiceBot_setSortType$22.$$arity = 1); - - Opal.def(self, '$d66', $DiceBot_d66$23 = function $$d66($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'getD66Value', Opal.to_a(args)); - }, $DiceBot_d66$23.$$arity = -1); - - Opal.def(self, '$parren_killer', $DiceBot_parren_killer$24 = function $$parren_killer(string) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$parren_killer(string) - }, $DiceBot_parren_killer$24.$$arity = 1); - - Opal.def(self, '$changeText', $DiceBot_changeText$25 = function $$changeText(string) { - var self = this; - - - self.$debug("DiceBot.parren_killer_add called"); - return string; - }, $DiceBot_changeText$25.$$arity = 1); - - Opal.def(self, '$dice_command', $DiceBot_dice_command$26 = function $$dice_command(string, nick_e) { - var $a, $b, self = this, secret_flg = nil, secretMarker = nil, command = nil, output_msg = nil; - - - if ($truthy(self.$isGetOriginalMessage())) { - string = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$getOriginalMessage()}; - self.$debug("dice_command Begin string", string); - secret_flg = false; - if ($truthy(self.$class().$prefixesPattern()['$=~'](string))) { - } else { - - self.$debug("not match in prefixes"); - return ["1", secret_flg]; - }; - secretMarker = $$($nesting, 'Regexp').$last_match(2); - command = $$($nesting, 'Regexp').$last_match(3); - command = self.$removeDiceCommandMessage(command); - self.$debug("dicebot after command", command); - self.$debug("match"); - $b = self.$rollDiceCommandCatched(command), $a = Opal.to_ary($b), (output_msg = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = output_msg['$nil?']()) ? $a : output_msg['$empty?']()))) { - output_msg = "1"}; - secret_flg = ($truthy($a = secret_flg) ? $a : false); - if ($truthy(output_msg['$!=']("1"))) { - output_msg = "" + (nick_e) + ": " + (output_msg)}; - if ($truthy(secretMarker)) { - if ($truthy(output_msg['$!=']("1"))) { - secret_flg = true}}; - return [output_msg, secret_flg]; - }, $DiceBot_dice_command$26.$$arity = 2); - - Opal.def(self, '$isGetOriginalMessage', $DiceBot_isGetOriginalMessage$27 = function $$isGetOriginalMessage() { - var self = this; - - return false - }, $DiceBot_isGetOriginalMessage$27.$$arity = 0); - - Opal.def(self, '$removeDiceCommandMessage', $DiceBot_removeDiceCommandMessage$28 = function $$removeDiceCommandMessage(command) { - var self = this; - - return command.$sub(/[\s ].+/, "") - }, $DiceBot_removeDiceCommandMessage$28.$$arity = 1); - - Opal.def(self, '$rollDiceCommandCatched', $DiceBot_rollDiceCommandCatched$29 = function $$rollDiceCommandCatched(command) { - var $a, $b, self = this, result = nil, secret_flg = nil, e = nil; - - - result = nil; - - try { - - self.$debug("call rollDiceCommand command", command); - $b = self.$rollDiceCommand(command), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - self.$debug("executeCommand exception", e.$to_s(), e.$backtrace().$join("\n")) - } finally { Opal.pop_exception() } - } else { throw $err; } - };; - self.$debug("rollDiceCommand result", result); - return [result, secret_flg]; - }, $DiceBot_rollDiceCommandCatched$29.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $DiceBot_rollDiceCommand$30 = function $$rollDiceCommand(_command) { - var self = this; - - return nil - }, $DiceBot_rollDiceCommand$30.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $DiceBot_dice_command_xRn$31 = function $$dice_command_xRn(_string, _nick_e) { - var self = this; - - return "" - }, $DiceBot_dice_command_xRn$31.$$arity = 2); - - Opal.def(self, '$check_result', $DiceBot_check_result$32 = function $$check_result(total, dice_total, dice_list, sides, cmp_op, target) { - var $a, self = this, ret = nil, $case = nil; - - - ret = (function() {$case = [dice_list.$size(), sides]; - if ([1, 100]['$===']($case)) {return self.$check_1D100(total, dice_total, cmp_op, target)} - else if ([1, 20]['$===']($case)) {return self.$check_1D20(total, dice_total, cmp_op, target)} - else if ([2, 6]['$===']($case)) {return self.$check_2D6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - ret = (function() {$case = sides; - if ((10)['$===']($case)) {return self.$check_nD10(total, dice_total, dice_list, cmp_op, target)} - else if ((6)['$===']($case)) {return self.$check_nD6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - return self.$check_nDx(total, cmp_op, target); - }, $DiceBot_check_result$32.$$arity = 6); - - Opal.def(self, '$check_nDx', $DiceBot_check_nDx$33 = function $$check_nDx(total, cmp_op, target) { - var self = this, success = nil; - - - if ($truthy(target['$is_a?']($$($nesting, 'String')))) { - return " > 失敗"}; - success = (function() {if (cmp_op['$==']("!=")) { - return total['$!='](target) - } else { - return total.$send(cmp_op, target) - }; return nil; })(); - if ($truthy(success)) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $DiceBot_check_nDx$33.$$arity = 3); - - Opal.def(self, '$check_1D100', $DiceBot_check_1D100$34 = function $$check_1D100(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D100$34.$$arity = 4); - - Opal.def(self, '$check_1D20', $DiceBot_check_1D20$35 = function $$check_1D20(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D20$35.$$arity = 4); - - Opal.def(self, '$check_nD10', $DiceBot_check_nD10$36 = function $$check_nD10(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD10$36.$$arity = 5); - - Opal.def(self, '$check_2D6', $DiceBot_check_2D6$37 = function $$check_2D6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_2D6$37.$$arity = 5); - - Opal.def(self, '$check_nD6', $DiceBot_check_nD6$38 = function $$check_nD6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD6$38.$$arity = 5); - - Opal.def(self, '$get_table_by_2d6', $DiceBot_get_table_by_2d6$39 = function $$get_table_by_2d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 2) - }, $DiceBot_get_table_by_2d6$39.$$arity = 1); - - Opal.def(self, '$get_table_by_1d6', $DiceBot_get_table_by_1d6$40 = function $$get_table_by_1d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 1) - }, $DiceBot_get_table_by_1d6$40.$$arity = 1); - - Opal.def(self, '$get_table_by_nD6', $DiceBot_get_table_by_nD6$41 = function $$get_table_by_nD6(table, count) { - var self = this; - - return self.$get_table_by_nDx(table, count, 6) - }, $DiceBot_get_table_by_nD6$41.$$arity = 2); - - Opal.def(self, '$get_table_by_nDx', $DiceBot_get_table_by_nDx$42 = function $$get_table_by_nDx(table, count, diceType) { - var $a, $b, self = this, num = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(num, count))); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_nDx$42.$$arity = 3); - - Opal.def(self, '$get_table_by_1d3', $DiceBot_get_table_by_1d3$43 = function $$get_table_by_1d3(table) { - var $a, $b, self = this, count = nil, num = nil, index = nil, text = nil; - - - self.$debug("get_table_by_1d3"); - count = 1; - $b = self.$roll(count, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - self.$debug("num", num); - index = $rb_divide($rb_minus(num, 1), 2); - self.$debug("index", index); - text = table['$[]'](index); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_1d3$43.$$arity = 1); - - Opal.def(self, '$getD66', $DiceBot_getD66$44 = function $$getD66(isSwap) { - var self = this; - - return self.$bcdice().$getD66(isSwap) - }, $DiceBot_getD66$44.$$arity = 1); - - Opal.def(self, '$get_table_by_d66_swap', $DiceBot_get_table_by_d66_swap$45 = function $$get_table_by_d66_swap(table) { - var self = this, isSwap = nil, number = nil; - - - isSwap = true; - number = self.$bcdice().$getD66(isSwap); - return [self.$get_table_by_number(number, table), number]; - }, $DiceBot_get_table_by_d66_swap$45.$$arity = 1); - - Opal.def(self, '$get_table_by_d66', $DiceBot_get_table_by_d66$46 = function $$get_table_by_d66(table) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, num = nil, text = nil, indexText = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - num = $rb_plus($rb_times($rb_minus(dice1, 1), 6), $rb_minus(dice2, 1)); - text = table['$[]'](num); - indexText = "" + (dice1) + (dice2); - if ($truthy(text['$nil?']())) { - return ["1", indexText]}; - return [text, indexText]; - }, $DiceBot_get_table_by_d66$46.$$arity = 1); - - Opal.def(self, '$getDiceRolledAdditionalText', $DiceBot_getDiceRolledAdditionalText$47 = function $$getDiceRolledAdditionalText(_n1, _n_max, _dice_max) { - var self = this; - - return "" - }, $DiceBot_getDiceRolledAdditionalText$47.$$arity = 3); - - Opal.def(self, '$getDiceRevision', $DiceBot_getDiceRevision$48 = function $$getDiceRevision(_n_max, _dice_max, _total_n) { - var self = this; - - return ["", 0] - }, $DiceBot_getDiceRevision$48.$$arity = 3); - - Opal.def(self, '$isD9', $DiceBot_isD9$49 = function $$isD9() { - var self = this; - - return false - }, $DiceBot_isD9$49.$$arity = 0); - - Opal.def(self, '$getGrichText', $DiceBot_getGrichText$50 = function $$getGrichText(_numberSpot1, _dice_cnt_total, _suc) { - var self = this; - - return "" - }, $DiceBot_getGrichText$50.$$arity = 3); - - Opal.def(self, '$should_reroll?', $DiceBot_should_reroll$ques$51 = function(loop_count) { - var $a, self = this; - - return ($truthy($a = $rb_lt(loop_count, self.rerollLimitCount)) ? $a : self.rerollLimitCount['$=='](0)) - }, $DiceBot_should_reroll$ques$51.$$arity = 1); - - Opal.def(self, '$get_table_by_number', $DiceBot_get_table_by_number$52 = function $$get_table_by_number(index, table, default$) {try { - - var $$53, self = this; - - - - if (default$ == null) { - default$ = "1"; - }; - $send(table, 'each', [], ($$53 = function(item){var self = $$53.$$s || this, number = nil; - - - - if (item == null) { - item = nil; - }; - number = item['$[]'](0); - if ($truthy($rb_ge(number, index))) { - Opal.ret(self.$getTableValue(item['$[]'](1))) - } else { - return nil - };}, $$53.$$s = self, $$53.$$arity = 1, $$53)); - return self.$getTableValue(default$); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_get_table_by_number$52.$$arity = -3); - - Opal.def(self, '$getTableValue', $DiceBot_getTableValue$54 = function $$getTableValue(data) {try { - - var $$55, self = this, lambdaBlock = nil; - - - if ($truthy(data['$kind_of?']($$($nesting, 'Proc')))) { - - lambdaBlock = $send(self, 'lambda', [], ($$55 = function(){var self = $$55.$$s || this; - - Opal.ret(data.$call())}, $$55.$$s = self, $$55.$$arity = 0, $$55)); - return lambdaBlock.$call();}; - return data; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_getTableValue$54.$$arity = 1); - - Opal.def(self, '$analyzeDiceCommandResultMethod', $DiceBot_analyzeDiceCommandResultMethod$56 = function $$analyzeDiceCommandResultMethod(command) {try { - - var $$57, $$58, self = this, methodList = nil; - - - methodList = $send(self.$public_methods(), 'select', [], ($$57 = function(method){var self = $$57.$$s || this; - - - - if (method == null) { - method = nil; - }; - return /^get.+DiceCommandResult$/['$==='](method.$to_s());}, $$57.$$s = self, $$57.$$arity = 1, $$57)); - $send(methodList, 'each', [], ($$58 = function(method){var self = $$58.$$s || this, result = nil; - - - - if (method == null) { - method = nil; - }; - result = self.$send(method, command); - if ($truthy(result['$nil?']())) { - return nil - } else { - Opal.ret(result) - };}, $$58.$$s = self, $$58.$$arity = 1, $$58)); - return nil; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_analyzeDiceCommandResultMethod$56.$$arity = 1); - - Opal.def(self, '$get_table_by_nDx_extratable', $DiceBot_get_table_by_nDx_extratable$59 = function $$get_table_by_nDx_extratable(table, count, diceType) { - var $a, $b, self = this, number = nil, diceText = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(number, count))); - return [text, number, diceText]; - }, $DiceBot_get_table_by_nDx_extratable$59.$$arity = 3); - - Opal.def(self, '$getTableCommandResult', $DiceBot_getTableCommandResult$60 = function $$getTableCommandResult(command, tables, isPrintDiceText) { - var $a, $b, $c, $d, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, count = nil, diceType = nil, limit = nil, item = nil, value = nil, output = nil, diceText = nil, text = nil, number = nil; - - - - if (isPrintDiceText == null) { - isPrintDiceText = true; - }; - info = tables['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type").$upcase(); - table = info['$[]']("table"); - if ($truthy(($truthy($a = type['$==']("D66")) ? self.d66Type['$=='](2) : $a))) { - type = "D66S"}; - $b = (function() {$case = type; - if (/(\d+)D(\d+)/['$===']($case)) { - count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diceType = $$($nesting, 'Regexp').$last_match(2).$to_i(); - limit = $rb_minus($rb_times(diceType, count), $rb_minus(count, 1)); - table = self.$getTableInfoFromExtraTableText(table, limit); - return self.$get_table_by_nDx_extratable(table, count, diceType);} - else if ("D66"['$===']($case) || "D66N"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 36); - $d = self.$get_table_by_d66(table), $c = Opal.to_ary($d), (item = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - output = item['$[]'](1); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else if ("D66S"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 21); - $d = self.$get_table_by_d66_swap(table), $c = Opal.to_ary($d), (output = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else {return self.$raise("" + "invalid dice Type " + (command))}})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), (diceText = ($a[2] == null ? nil : $a[2])), $b; - text = text.$gsub("\\n", "\n"); - text = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rollTableMessageDiceText(text); - if ($truthy(text['$nil?']())) { - return nil}; - if ($truthy(($truthy($a = isPrintDiceText) ? diceText['$nil?']()['$!']() : $a))) { - return "" + (name) + "(" + (number) + "[" + (diceText) + "]) > " + (text)}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $DiceBot_getTableCommandResult$60.$$arity = -3); - - Opal.def(self, '$getTableInfoFromExtraTableText', $DiceBot_getTableInfoFromExtraTableText$61 = function $$getTableInfoFromExtraTableText(text, count) { - var $$62, self = this, newTable = nil; - - - - if (count == null) { - count = nil; - }; - if ($truthy(text['$is_a?']($$($nesting, 'String')))) { - text = text.$split(/\n/)}; - newTable = $send(text, 'map', [], ($$62 = function(item){var self = $$62.$$s || this, $a; - - - - if (item == null) { - item = nil; - }; - if ($truthy(($truthy($a = item['$is_a?']($$($nesting, 'String'))) ? /^(\d+):(.*)/['$==='](item) : $a))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2)] - } else { - return item - };}, $$62.$$s = self, $$62.$$arity = 1, $$62)); - if ($truthy(count['$nil?']())) { - } else if ($truthy(newTable.$size()['$!='](count))) { - self.$raise("" + "invalid table size:" + (newTable.$size()) + "\n" + (newTable.$inspect()))}; - return newTable; - }, $DiceBot_getTableInfoFromExtraTableText$61.$$arity = -2); - return (Opal.def(self, '$roll_tables', $DiceBot_roll_tables$63 = function $$roll_tables(command, tables) { - var self = this, table = nil; - - - table = tables['$[]'](command.$upcase()); - if ($truthy(table)) { - } else { - return nil - }; - return table.$roll(self.$bcdice()).$to_s(); - }, $DiceBot_roll_tables$63.$$arity = 2), nil) && 'roll_tables'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/SRS"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$include', '$attr_reader', '$map', '$to_proc', '$join', '$escape', '$prepare_help_msg_for_aliases_for_srs_roll', '$concatenate_help_messages', '$private', '$clear_aliases_for_srs_roll', '$extend', '$setPrefixes', '$help_message', '$class', '$freeze', '$new', '$format_modifier', '$modifier', '$target_value', '$critical_value', '$fumble_value', '$replace_alias_for_srs_roll_with_2d6', '$parse', '$execute_srs_roll', '$===', '$aliases_re_for_srs_roll_with_target_value', '$last_match', '$aliases_re_for_srs_roll_without_target_value', '$parse_srs_roll_with_target_value', '$parse_srs_roll_without_target_value', '$eval', '$to_sym', '$eval_modifier', '$[]', '$to_i', '$roll', '$&', '$+', '$compare_result', '$compact', '$>=', '$<=']); - - self.$require("diceBot/DiceBot"); - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SRS'); - - var $nesting = [self].concat($parent_nesting), $SRS_initialize$12, $SRS_help_message$13, $SRS$14, $SRS_rollDiceCommand$16, $SRS_replace_alias_for_srs_roll_with_2d6$17, $SRS_parse$18, $SRS_eval_modifier$19, $SRS_parse_srs_roll_with_target_value$20, $SRS_parse_srs_roll_without_target_value$21, $SRS_execute_srs_roll$22, $SRS_compare_result$23; - - self.$$prototype.fractionType = self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "SRS"); - Opal.const_set($nesting[0], 'NAME', "スタンダードRPGシステム"); - Opal.const_set($nesting[0], 'SORT_KEY', "すたんたあとRPGしすてむ"); - self.$include($$($nesting, 'ModifierFormatter')); - Opal.const_set($nesting[0], 'HELP_MESSAGE_1', "" + "・判定\n" + " ・通常判定:2D6+m>=t[c,f]\n" + "  修正値m、目標値t、クリティカル値c、ファンブル値fで判定ロールを行います。\n" + "  修正値、クリティカル値、ファンブル値は省略可能です([]ごと省略可)。\n" + "  クリティカル値、ファンブル値の既定値は、それぞれ12、2です。\n" + "  自動成功、自動失敗、成功、失敗を自動表示します。\n" + "\n" + "  例) 2d6>=10     修正値0、目標値10で判定\n" + "  例) 2d6+2>=10    修正値+2、目標値10で判定\n" + "  例) 2d6+2>=10[11]  ↑をクリティカル値11で判定\n" + "  例) 2d6+2>=10[12,4] ↑をクリティカル値12、ファンブル値4で判定\n"); - Opal.const_set($nesting[0], 'HELP_MESSAGE_2', "" + " ・クリティカルおよびファンブルのみの判定:2D6+m[c,f]\n" + "  目標値を指定せず、修正値m、クリティカル値c、ファンブル値fで判定ロールを行います。\n" + "  修正値、クリティカル値、ファンブル値は省略可能です([]は省略不可)。\n" + "  自動成功、自動失敗を自動表示します。\n" + "\n" + "  例) 2d6[]    修正値0、クリティカル値12、ファンブル値2で判定\n" + "  例) 2d6+2[11]  修正値+2、クリティカル値11、ファンブル値2で判定\n" + "  例) 2d6+2[12,4] 修正値+2、クリティカル値12、ファンブル値4で判定\n"); - Opal.const_set($nesting[0], 'HELP_MESSAGE_3', "・D66ダイスあり(入れ替えなし)\n"); - Opal.const_set($nesting[0], 'DEFAULT_HELP_MESSAGE', "" + ($$($nesting, 'HELP_MESSAGE_1')) + "\n" + ($$($nesting, 'HELP_MESSAGE_2')) + "\n" + ($$($nesting, 'HELP_MESSAGE_3'))); - (function($base, $parent_nesting) { - var self = $module($base, 'ClassMethods'); - - var $nesting = [self].concat($parent_nesting), $ClassMethods_set_aliases_for_srs_roll$1, $ClassMethods_clear_aliases_for_srs_roll$3, $ClassMethods_prepare_help_msg_for_aliases_for_srs_roll$4, $ClassMethods_concatenate_help_messages$7; - - - self.$attr_reader("help_message"); - self.$attr_reader("aliases_re_for_srs_roll_with_target_value"); - self.$attr_reader("aliases_re_for_srs_roll_without_target_value"); - - Opal.def(self, '$set_aliases_for_srs_roll', $ClassMethods_set_aliases_for_srs_roll$1 = function $$set_aliases_for_srs_roll($a) { - var $post_args, aliases, $$2, self = this, aliases_upcase = nil, aliases_part = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - aliases = $post_args;; - aliases_upcase = $send(aliases, 'map', [], "upcase".$to_proc()); - aliases_part = $send(aliases_upcase, 'map', [], ($$2 = function(a){var self = $$2.$$s || this; - - - - if (a == null) { - a = nil; - }; - return $$($nesting, 'Regexp').$escape(a);}, $$2.$$s = self, $$2.$$arity = 1, $$2)).$join("|"); - self.aliases_re_for_srs_roll_with_target_value = new RegExp("" + "^(?:" + (aliases_part) + ")((?:[-+][-+\\d]+)?>=\\d+(?:\\[\\d*(?:,\\d+)?\\])?)$"); - self.aliases_re_for_srs_roll_without_target_value = new RegExp("" + "^(?:" + (aliases_part) + ")([-+][-+\\d]+)?(\\[\\d*(?:,\\d+)?\\])?$"); - self.$prepare_help_msg_for_aliases_for_srs_roll(aliases_upcase); - self.help_message = self.$concatenate_help_messages(); - return self; - }, $ClassMethods_set_aliases_for_srs_roll$1.$$arity = -1); - - Opal.def(self, '$clear_aliases_for_srs_roll', $ClassMethods_clear_aliases_for_srs_roll$3 = function $$clear_aliases_for_srs_roll() { - var self = this; - - - self.aliases_re_for_srs_roll_with_target_value = nil; - self.aliases_re_for_srs_roll_without_target_value = nil; - self.help_message = $$$($$($nesting, 'SRS'), 'DEFAULT_HELP_MESSAGE'); - return self; - }, $ClassMethods_clear_aliases_for_srs_roll$3.$$arity = 0); - self.$private(); - - Opal.def(self, '$prepare_help_msg_for_aliases_for_srs_roll', $ClassMethods_prepare_help_msg_for_aliases_for_srs_roll$4 = function $$prepare_help_msg_for_aliases_for_srs_roll(aliases) { - var $$5, $$6, self = this; - - - self.help_msg_for_aliases_for_srs_roll_with_target_value = $send(aliases, 'map', [], ($$5 = function(a){var self = $$5.$$s || this; - - - - if (a == null) { - a = nil; - }; - return "" + "  例) " + (a) + "+2>=10     2d6+2>=10と同じ(" + (a) + "が2D6のショートカットコマンド)\n";}, $$5.$$s = self, $$5.$$arity = 1, $$5)).$join(); - self.help_msg_for_aliases_for_srs_roll_without_target_value = $send(aliases, 'map', [], ($$6 = function(a){var self = $$6.$$s || this; - - - - if (a == null) { - a = nil; - }; - return "" + ("" + "  例) " + (a) + "      2d6[]と同じ(" + (a) + "が2D6のショートカットコマンド)\n") + ("" + "  例) " + (a) + "+2[12,4]  2d6+2[12,4]と同じ(" + (a) + "が2D6のショートカットコマンド)\n");}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$join(); - return self; - }, $ClassMethods_prepare_help_msg_for_aliases_for_srs_roll$4.$$arity = 1); - - Opal.def(self, '$concatenate_help_messages', $ClassMethods_concatenate_help_messages$7 = function $$concatenate_help_messages() { - var self = this; - if (self.help_msg_for_aliases_for_srs_roll_with_target_value == null) self.help_msg_for_aliases_for_srs_roll_with_target_value = nil; - if (self.help_msg_for_aliases_for_srs_roll_without_target_value == null) self.help_msg_for_aliases_for_srs_roll_without_target_value = nil; - - return "" + ("" + ($$$($$($nesting, 'SRS'), 'HELP_MESSAGE_1'))) + ("" + (self.help_msg_for_aliases_for_srs_roll_with_target_value) + "\n") + ("" + ($$$($$($nesting, 'SRS'), 'HELP_MESSAGE_2'))) + ("" + (self.help_msg_for_aliases_for_srs_roll_without_target_value) + "\n") + ("" + ($$$($$($nesting, 'SRS'), 'HELP_MESSAGE_3'))) - }, $ClassMethods_concatenate_help_messages$7.$$arity = 0); - })($nesting[0], $nesting); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $inherited$8, $help_message$9, $aliases_re_for_srs_roll_with_target_value$10, $aliases_re_for_srs_roll_without_target_value$11; - - - - Opal.def(self, '$inherited', $inherited$8 = function $$inherited(subclass) { - var self = this; - - return subclass.$extend($$($nesting, 'ClassMethods')).$clear_aliases_for_srs_roll() - }, $inherited$8.$$arity = 1); - - Opal.def(self, '$help_message', $help_message$9 = function $$help_message() { - var self = this; - - return $$($nesting, 'DEFAULT_HELP_MESSAGE') - }, $help_message$9.$$arity = 0); - - Opal.def(self, '$aliases_re_for_srs_roll_with_target_value', $aliases_re_for_srs_roll_with_target_value$10 = function $$aliases_re_for_srs_roll_with_target_value() { - var self = this; - - return nil - }, $aliases_re_for_srs_roll_with_target_value$10.$$arity = 0); - return (Opal.def(self, '$aliases_re_for_srs_roll_without_target_value', $aliases_re_for_srs_roll_without_target_value$11 = function $$aliases_re_for_srs_roll_without_target_value() { - var self = this; - - return nil - }, $aliases_re_for_srs_roll_without_target_value$11.$$arity = 0), nil) && 'aliases_re_for_srs_roll_without_target_value'; - })(Opal.get_singleton_class(self), $nesting); - self.$setPrefixes(["2D6.*"]); - - Opal.def(self, '$initialize', $SRS_initialize$12 = function $$initialize() { - var $iter = $SRS_initialize$12.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $SRS_initialize$12.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $SRS_initialize$12, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 1); - }, $SRS_initialize$12.$$arity = 0); - - Opal.def(self, '$help_message', $SRS_help_message$13 = function $$help_message() { - var self = this; - - return self.$class().$help_message() - }, $SRS_help_message$13.$$arity = 0); - Opal.const_set($nesting[0], 'DEFAULT_CRITICAL_VALUE', 12); - Opal.const_set($nesting[0], 'DEFAULT_FUMBLE_VALUE', 2); - Opal.const_set($nesting[0], 'SRS_ROLL_WITH_TARGET_VALUE_RE', /^2D6([-+][-+\d]+)?>=(\d+)(?:\[(\d+)?(?:,(\d+))?\])?$/.$freeze()); - Opal.const_set($nesting[0], 'SRS_ROLL_WITHOUT_TARGET_VALUE_RE', /^2D6([-+][-+\d]+)?\[(\d+)?(?:,(\d+))?\]$/.$freeze()); - Opal.const_set($nesting[0], 'SRS_ROLL_DEFAULT_THRESHOLDS', "" + "[" + ($$($nesting, 'DEFAULT_CRITICAL_VALUE')) + "," + ($$($nesting, 'DEFAULT_FUMBLE_VALUE')) + "]"); - Opal.const_set($nesting[0], 'SRSRollNode', $send($$($nesting, 'Struct'), 'new', ["modifier", "critical_value", "fumble_value", "target_value"], ($SRS$14 = function(){var self = $SRS$14.$$s || this, $to_s$15; - - - self.$include($$($nesting, 'ModifierFormatter')); - return (Opal.def(self, '$to_s', $to_s$15 = function $$to_s() { - var self = this, lhs = nil, expression = nil; - - - lhs = "" + "2D6" + (self.$format_modifier(self.$modifier())); - expression = (function() {if ($truthy(self.$target_value())) { - return "" + (lhs) + ">=" + (self.$target_value()) - } else { - return lhs - }; return nil; })(); - return "" + (expression) + "[" + (self.$critical_value()) + "," + (self.$fumble_value()) + "]"; - }, $to_s$15.$$arity = 0), nil) && 'to_s';}, $SRS$14.$$s = self, $SRS$14.$$arity = 0, $SRS$14))); - - Opal.def(self, '$rollDiceCommand', $SRS_rollDiceCommand$16 = function $$rollDiceCommand(command) { - var self = this, alias_replaced_with_2d6 = nil, node = nil; - - - alias_replaced_with_2d6 = self.$replace_alias_for_srs_roll_with_2d6(command); - if ($truthy((node = self.$parse(alias_replaced_with_2d6)))) { - return self.$execute_srs_roll(node)}; - return nil; - }, $SRS_rollDiceCommand$16.$$arity = 1); - self.$private(); - - Opal.def(self, '$replace_alias_for_srs_roll_with_2d6', $SRS_replace_alias_for_srs_roll_with_2d6$17 = function $$replace_alias_for_srs_roll_with_2d6(input) { - var $a, self = this, $case = nil, modifier = nil, thresholds = nil; - - return (function() {$case = input; - if (self.$class().$aliases_re_for_srs_roll_with_target_value()['$===']($case)) {return "" + "2D6" + ($$($nesting, 'Regexp').$last_match(1))} - else if (self.$class().$aliases_re_for_srs_roll_without_target_value()['$===']($case)) { - modifier = $$($nesting, 'Regexp').$last_match(1); - thresholds = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : $$($nesting, 'SRS_ROLL_DEFAULT_THRESHOLDS')); - return "" + "2D6" + (modifier) + (thresholds);} - else {return input}})() - }, $SRS_replace_alias_for_srs_roll_with_2d6$17.$$arity = 1); - - Opal.def(self, '$parse', $SRS_parse$18 = function $$parse(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if ($$($nesting, 'SRS_ROLL_WITH_TARGET_VALUE_RE')['$===']($case)) {return self.$parse_srs_roll_with_target_value($$($nesting, 'Regexp').$last_match())} - else if ($$($nesting, 'SRS_ROLL_WITHOUT_TARGET_VALUE_RE')['$===']($case)) {return self.$parse_srs_roll_without_target_value($$($nesting, 'Regexp').$last_match())} - else {return nil}})() - }, $SRS_parse$18.$$arity = 1); - - Opal.def(self, '$eval_modifier', $SRS_eval_modifier$19 = function $$eval_modifier(modifier_str) { - var self = this; - - - if ($truthy(modifier_str)) { - } else { - return 0 - }; - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(modifier_str, self.fractionType.$to_sym()); - }, $SRS_eval_modifier$19.$$arity = 1); - - Opal.def(self, '$parse_srs_roll_with_target_value', $SRS_parse_srs_roll_with_target_value$20 = function $$parse_srs_roll_with_target_value(m) { - var $a, $b, self = this, modifier = nil, target_value = nil, critical_value = nil, fumble_value = nil; - - - modifier = self.$eval_modifier(m['$[]'](1)); - target_value = m['$[]'](2).$to_i(); - critical_value = ($truthy($a = ($truthy($b = m['$[]'](3)) ? m['$[]'](3).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_CRITICAL_VALUE')); - fumble_value = ($truthy($a = ($truthy($b = m['$[]'](4)) ? m['$[]'](4).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_FUMBLE_VALUE')); - return $$($nesting, 'SRSRollNode').$new(modifier, critical_value, fumble_value, target_value); - }, $SRS_parse_srs_roll_with_target_value$20.$$arity = 1); - - Opal.def(self, '$parse_srs_roll_without_target_value', $SRS_parse_srs_roll_without_target_value$21 = function $$parse_srs_roll_without_target_value(m) { - var $a, $b, self = this, modifier = nil, critical_value = nil, fumble_value = nil; - - - modifier = self.$eval_modifier(m['$[]'](1)); - critical_value = ($truthy($a = ($truthy($b = m['$[]'](2)) ? m['$[]'](2).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_CRITICAL_VALUE')); - fumble_value = ($truthy($a = ($truthy($b = m['$[]'](3)) ? m['$[]'](3).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_FUMBLE_VALUE')); - return $$($nesting, 'SRSRollNode').$new(modifier, critical_value, fumble_value, nil); - }, $SRS_parse_srs_roll_without_target_value$21.$$arity = 1); - - Opal.def(self, '$execute_srs_roll', $SRS_execute_srs_roll$22 = function $$execute_srs_roll(srs_roll) { - var $a, $b, self = this, sum = nil, dice_str = nil, modified_sum = nil, parts = nil; - - - $b = self.$roll(2, 6, self.sortType['$&'](1)), $a = Opal.to_ary($b), (sum = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - modified_sum = $rb_plus(sum, srs_roll.$modifier()); - parts = ["" + "(" + (srs_roll) + ")", "" + (sum) + "[" + (dice_str) + "]" + (self.$format_modifier(srs_roll.$modifier())), modified_sum, self.$compare_result(srs_roll, sum, modified_sum)]; - return parts.$compact().$join(" > "); - }, $SRS_execute_srs_roll$22.$$arity = 1); - return (Opal.def(self, '$compare_result', $SRS_compare_result$23 = function $$compare_result(srs_roll, sum, modified_sum) { - var self = this; - - - if ($truthy($rb_ge(sum, srs_roll.$critical_value()))) { - return "自動成功"}; - if ($truthy($rb_le(sum, srs_roll.$fumble_value()))) { - return "自動失敗"}; - if ($truthy(srs_roll.$target_value())) { - return (function() {if ($truthy($rb_ge(modified_sum, srs_roll.$target_value()))) { - return "成功" - } else { - return "失敗" - }; return nil; })()}; - return nil; - }, $SRS_compare_result$23.$$arity = 3), nil) && 'compare_result'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; - - Opal.add_stubs(['$require', '$setPrefixes', '$set_aliases_for_srs_roll']); - - self.$require("diceBot/SRS"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Alshard'); - - var $nesting = [self].concat($parent_nesting); - - - Opal.const_set($nesting[0], 'NAME', "アルシャード"); - Opal.const_set($nesting[0], 'SORT_KEY', "あるしやあと"); - Opal.const_set($nesting[0], 'ID', "Alshard"); - self.$setPrefixes(["2D6.*", "AL.*"]); - return self.$set_aliases_for_srs_roll("AL"); - })($nesting[0], $$($nesting, 'SRS'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/AlterRaise.js b/src/assets/dicebot/AlterRaise.js deleted file mode 100644 index d9a95ae34..000000000 --- a/src/assets/dicebot/AlterRaise.js +++ /dev/null @@ -1,211 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$upcase', '$===', '$to_i', '$last_match', '$get_emancipation_table', '$get_personality_table', '$get_location_table', '$get_quiet_table', '$get_delight_table', '$get_trauma_table', '$get_scene_production_table', '$get_stance_table', '$get_emotion_table', '$>', '$roll', '$get_table_by_number', '$>=', '$+', '$get_AlterRaise_1d6_table_result', '$get_AlterRaise_d66_table_result', '$to_s', '$[]', '$<', '$*']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'AlterRaise'); - - var $nesting = [self].concat($parent_nesting), $AlterRaise_rollDiceCommand$1, $AlterRaise_get_emancipation_table$2, $AlterRaise_get_personality_table$3, $AlterRaise_get_location_table$4, $AlterRaise_get_quiet_table$5, $AlterRaise_get_delight_table$6, $AlterRaise_get_trauma_table$7, $AlterRaise_get_scene_production_table$8, $AlterRaise_get_stance_table$9, $AlterRaise_get_emotion_table$10, $AlterRaise_get_AlterRaise_1d6_table_result$11, $AlterRaise_get_AlterRaise_d66_table_result$12; - - - Opal.const_set($nesting[0], 'ID', "AlterRaise"); - Opal.const_set($nesting[0], 'NAME', "アルトレイズ"); - Opal.const_set($nesting[0], 'SORT_KEY', "あるとれいす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "◆解放判定:EMA[x]\n" + "\n" + "[x]で達成値を指定してください。省略時はダイスロールします。\n" + "\n" + "\n" + "【各種表】\n" + "◆性格傾向表:PER[n]       ◆場所表:LOC[ab]\n" + "◆平穏・経験表:QUI[ab]     ◆喜び・経験表:DEL[ab]\n" + "◆心の傷・経験表:TRA[ab]    ◆シーン演出表:SCE[n]\n" + "◆スタンス表:STA[n]       ◆感情表:EMO[ab]\n" + "\n" + "[]内のコマンドを省略でダイスロール、指定でROC結果を表示します。\n" + "[n]は「1D6」、[ab]は「D66」の出目を指定してください。\n" + "\n" + "【書式例】\n" + "PER3:性格傾向表の「3」をROC\n" + "LOC52:場所表の「52」をROC\n" + "QUI:平穏・経験表をダイスロール\n"); - self.$setPrefixes(["EMA(\\d+)?", "PER(\\d+)?", "LOC(\\d+)?", "QUI(\\d+)?", "DEL(\\d+)?", "TRA(\\d+)?", "SCE(\\d+)?", "STA(\\d+)?", "EMO(\\d+)?"]); - - Opal.def(self, '$rollDiceCommand', $AlterRaise_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, self = this, output = nil, $case = nil, roc = nil; - - - output = (function() {$case = command.$upcase(); - if (/EMA(\d+)?$/i['$===']($case)) { - roc = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 0).$to_i(); - return self.$get_emancipation_table(roc);} - else if (/PER(\d+)?$/i['$===']($case)) { - roc = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 0).$to_i(); - return self.$get_personality_table(roc);} - else if (/LOC(\d+)?$/i['$===']($case)) { - roc = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 0).$to_i(); - return self.$get_location_table(roc);} - else if (/QUI(\d+)?$/i['$===']($case)) { - roc = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 0).$to_i(); - return self.$get_quiet_table(roc);} - else if (/DEL(\d+)?$/i['$===']($case)) { - roc = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 0).$to_i(); - return self.$get_delight_table(roc);} - else if (/TRA(\d+)?$/i['$===']($case)) { - roc = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 0).$to_i(); - return self.$get_trauma_table(roc);} - else if (/SCE(\d+)?$/i['$===']($case)) { - roc = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 0).$to_i(); - return self.$get_scene_production_table(roc);} - else if (/STA(\d+)?$/i['$===']($case)) { - roc = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 0).$to_i(); - return self.$get_stance_table(roc);} - else if (/EMO(\d+)?$/i['$===']($case)) { - roc = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 0).$to_i(); - return self.$get_emotion_table(roc);} - else { return nil }})(); - return output; - }, $AlterRaise_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$get_emancipation_table', $AlterRaise_get_emancipation_table$2 = function $$get_emancipation_table(roc) { - var $a, $b, self = this, name = nil, table = nil, dice = nil, diceText = nil, tableText = nil; - - - name = "解放判定表"; - table = [[2, "激闘。今回の端末は想定をはるかに上回る脅威だった。幾本もの太刀筋と永遠のような時間の果てに、君たちは勝利した。深手を負ったが、ギリギリ致命傷ではない。"], [4, "辛勝。今回の端末は想定以上の大物だった。刃と牙のせめぎ合いの果て、君たちは辛くも勝利した。"], [6, "勝利。今回の端末は、おおむね想定される程度の個体であった。多少の傷は負ったが、君たちは問題なく勝利できた。"], [8, "快勝。今回の端末には、危うげも無く勝利できた。君とペアのコンビネーションの賜物だろう。かすり傷を負ったが、勲章のようなものだ。"], [10, "圧勝。今回の端末は、君たちの敵ではなかった。君とペアの剣撃は瞬く間に端末を寸断し、粒子の光に還元した。"], [12, "刹那。端末をその切っ先に捉えた刹那、君たちの前で粒子の光が舞う。それ以上何も起こることはなく、世界は色を取り戻した。"]]; - if ($truthy($rb_gt(roc, 1))) { - - dice = roc; - if ($truthy($rb_gt(dice, 12))) { - dice = 12}; - diceText = ""; - } else { - - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceText = "" + "(" + (diceText) + ")"; - }; - tableText = self.$get_table_by_number(dice, table); - if ($truthy($rb_ge(dice, 7))) { - tableText = $rb_plus(tableText, "\n【達成値7以上】GM:攻撃ルーチン1つを開示(番号はペアPLが指定) PL:戦闘開始時のアクセルレベル+1")}; - return "" + (name) + " > " + (dice) + (diceText) + ":" + (tableText); - }, $AlterRaise_get_emancipation_table$2.$$arity = 1); - - Opal.def(self, '$get_personality_table', $AlterRaise_get_personality_table$3 = function $$get_personality_table(roc) { - var self = this, name = nil, table = nil; - - - name = "性格傾向表"; - table = [[1, "挑戦"], [2, "調和"], [3, "感性"], [4, "信念"], [5, "論理"], [6, "思慮"]]; - return self.$get_AlterRaise_1d6_table_result(name, table, roc); - }, $AlterRaise_get_personality_table$3.$$arity = 1); - - Opal.def(self, '$get_location_table', $AlterRaise_get_location_table$4 = function $$get_location_table(roc) { - var self = this, name = nil, table = nil; - - - name = "場所表"; - table = [[13, "教室"], [16, "部室"], [23, "商店街"], [26, "田舎"], [33, "都会"], [36, "駅"], [43, "バイト"], [46, "ステージ"], [53, "図書館"], [56, "病院"], [63, "自然"], [66, "家"]]; - return self.$get_AlterRaise_d66_table_result(name, table, roc); - }, $AlterRaise_get_location_table$4.$$arity = 1); - - Opal.def(self, '$get_quiet_table', $AlterRaise_get_quiet_table$5 = function $$get_quiet_table(roc) { - var self = this, name = nil, table = nil; - - - name = "平穏・経験表"; - table = [[13, "友達"], [16, "幼馴染み"], [23, "両親"], [26, "兄弟"], [33, "親戚"], [36, "理解者"], [43, "友人"], [46, "仲間"], [53, "趣味"], [56, "練習"], [63, "一人"], [66, "お気に入り"]]; - return self.$get_AlterRaise_d66_table_result(name, table, roc); - }, $AlterRaise_get_quiet_table$5.$$arity = 1); - - Opal.def(self, '$get_delight_table', $AlterRaise_get_delight_table$6 = function $$get_delight_table(roc) { - var self = this, name = nil, table = nil; - - - name = "喜び・経験表"; - table = [[13, "勝利"], [16, "優勝"], [23, "出会い"], [26, "理解"], [33, "幸運"], [36, "プレゼント"], [43, "成就"], [46, "成長"], [53, "創造"], [56, "好転"], [63, "証明"], [66, "生還"]]; - return self.$get_AlterRaise_d66_table_result(name, table, roc); - }, $AlterRaise_get_delight_table$6.$$arity = 1); - - Opal.def(self, '$get_trauma_table', $AlterRaise_get_trauma_table$7 = function $$get_trauma_table(roc) { - var self = this, name = nil, table = nil; - - - name = "心の傷・経験表"; - table = [[13, "敗北"], [16, "仲違い"], [23, "失恋"], [26, "無理解"], [33, "無力"], [36, "孤独"], [43, "別離"], [46, "死別"], [53, "損壊"], [56, "喪失"], [63, "病"], [66, "事故"]]; - return self.$get_AlterRaise_d66_table_result(name, table, roc); - }, $AlterRaise_get_trauma_table$7.$$arity = 1); - - Opal.def(self, '$get_scene_production_table', $AlterRaise_get_scene_production_table$8 = function $$get_scene_production_table(roc) { - var self = this, name = nil, table = nil; - - - name = "シーン演出表"; - table = [[1, "相談。君は相手に相談したいことがあった。"], [2, "遊び。君は相手と遊びたかった。"], [3, "案内。君は自身のアリウス・パーソナルを案内したかった。"], [4, "勝負。君は相手と何らかの勝負をしたかった。"], [5, "お願い。君は相手にお願いしたいことがあった。"], [6, "扉を開く前に。アクセルダイブ・ゲートをくぐる前に、君は相手に話したいことがあった。(*ダイブした後のシーンも演出すること)"]]; - return self.$get_AlterRaise_1d6_table_result(name, table, roc); - }, $AlterRaise_get_scene_production_table$8.$$arity = 1); - - Opal.def(self, '$get_stance_table', $AlterRaise_get_stance_table$9 = function $$get_stance_table(roc) { - var self = this, name = nil, table = nil; - - - name = "スタンス表"; - table = [[1, "友人"], [2, "恋愛"], [3, "師事"], [4, "ライバル"], [5, "家族"], [6, "守護"]]; - return self.$get_AlterRaise_1d6_table_result(name, table, roc); - }, $AlterRaise_get_stance_table$9.$$arity = 1); - - Opal.def(self, '$get_emotion_table', $AlterRaise_get_emotion_table$10 = function $$get_emotion_table(roc) { - var self = this, name = nil, table = nil; - - - name = "感情表"; - table = [[13, "勇気"], [16, "怒り"], [23, "悲しみ"], [26, "喜び"], [33, "驚き"], [36, "恐れ"], [43, "安らぎ"], [46, "誠意"], [53, "庇護"], [56, "謝意"], [63, "信頼"], [66, "好意"]]; - return self.$get_AlterRaise_d66_table_result(name, table, roc); - }, $AlterRaise_get_emotion_table$10.$$arity = 1); - - Opal.def(self, '$get_AlterRaise_1d6_table_result', $AlterRaise_get_AlterRaise_1d6_table_result$11 = function $$get_AlterRaise_1d6_table_result(name, table, roc) { - var $a, $b, self = this, dice = nil, tableText = nil; - - - if ($truthy($rb_gt(roc, 0))) { - - dice = roc; - if ($truthy($rb_gt(dice, 6))) { - dice = 6}; - } else { - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b - }; - tableText = self.$get_table_by_number(dice, table); - return "" + (name) + " > " + (dice) + ":" + (tableText); - }, $AlterRaise_get_AlterRaise_1d6_table_result$11.$$arity = 3); - return (Opal.def(self, '$get_AlterRaise_d66_table_result', $AlterRaise_get_AlterRaise_d66_table_result$12 = function $$get_AlterRaise_d66_table_result(name, table, roc) { - var $a, $b, self = this, diceText = nil, dice1 = nil, dice2 = nil, dice = nil, tableText = nil; - - - if ($truthy($rb_gt(roc, 10))) { - - diceText = roc.$to_s(); - dice1 = diceText['$[]'](0, 1).$to_i(); - if ($truthy($rb_gt(dice1, 6))) { - dice1 = 6}; - dice2 = diceText['$[]'](1, 1).$to_i(); - if ($truthy($rb_lt(dice2, 1))) { - dice2 = 1}; - if ($truthy($rb_gt(dice2, 6))) { - dice2 = 6}; - } else if ($truthy($rb_gt(roc, 0))) { - - dice1 = roc; - if ($truthy($rb_gt(dice1, 6))) { - dice1 = 6}; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - } else { - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - }; - dice = $rb_plus($rb_times(dice1, 10), dice2); - diceText = "" + (dice1) + "," + (dice2); - tableText = self.$get_table_by_number(dice, table); - return "" + (name) + " > " + (diceText) + ":" + (tableText); - }, $AlterRaise_get_AlterRaise_d66_table_result$12.$$arity = 3), nil) && 'get_AlterRaise_d66_table_result'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Amadeus.js b/src/assets/dicebot/Amadeus.js deleted file mode 100644 index d9c8043f3..000000000 --- a/src/assets/dicebot/Amadeus.js +++ /dev/null @@ -1,154 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$amadeusDice', '$nil?', '$[]', '$upcase', '$===', '$get_table_by_1d6', '$get_table_by_2d6', '$get_table_by_d66_swap', '$=~', '$last_match', '$|', '$to_i', '$parren_killer', '$+', '$roll', '$collect', '$split', '$==', '$min', '$each', '$>', '$length', '$check_success', '$>=', '$check_hit', '$bcdice', '$freeze', '$setPrefixes', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Amadeus'); - - var $nesting = [self].concat($parent_nesting), $Amadeus_initialize$1, $Amadeus_rollDiceCommand$2, $Amadeus_amadeusDice$3, $Amadeus_check_success$6; - - - Opal.const_set($nesting[0], 'ID', "Amadeus"); - Opal.const_set($nesting[0], 'NAME', "アマデウス"); - Opal.const_set($nesting[0], 'SORT_KEY', "あまてうす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定(Rx±y@z>=t)\n" + " 能力値のダイスごとに成功・失敗の判定を行います。\n" + " x:能力ランク(S,A~D) y:修正値(省略可)\n" + " z:スペシャル最低値(省略:6) t:目標値(省略:4)\n" + "  例) RA RB-1 RC>=5 RD+2 RS-1@5>=6\n" + " 出力書式は\n" + "  (達成値)_(判定結果)[(出目)(対応するインガ)]\n" + " C,Dランクでは対応するインガは出力されません。\n" + "  出力例) 2_ファンブル![1黒] / 3_失敗[3青]\n" + "・各種表\n" + " 境遇表 ECT/関係表 RT/親心表 PRT/戦場表 BST/休憩表 BT/\n" + " ファンブル表 FT/致命傷表 FWT/戦果表 BRT/ランダムアイテム表 RIT/\n" + " 損傷表 WT/悪夢表 NMT/目標表 TGT/制約表 CST/\n" + " ランダムギフト表 RGT/決戦戦果表 FBT/\n" + " 店内雰囲気表 SAT/特殊メニュー表 SMT\n" + "・試練表(~VT)\n" + " ギリシャ神群 GCVT/ヤマト神群 YCVT/エジプト神群 ECVT/\n" + " クトゥルフ神群 CCVT/北欧神群 NCVT/中華神群 CHVT/\n" + " ラストクロニクル神群 LCVT/ケルト神群 KCVT/ダンジョン DGVT/日常 DAVT\n" + "・挑戦テーマ表(~CT)\n" + " 武勇 PRCT/技術 TCCT/頭脳 INCT/霊力 PSCT/愛 LVCT/日常 DACT\n"); - - Opal.def(self, '$initialize', $Amadeus_initialize$1 = function $$initialize() { - var $iter = $Amadeus_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Amadeus_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Amadeus_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $Amadeus_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Amadeus_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, $b, self = this, text = nil, info = nil, name = nil, type = nil, table = nil, $case = nil, number = nil; - - - text = self.$amadeusDice(command); - if ($truthy(text['$nil?']())) { - } else { - return text - }; - info = $$($nesting, 'TABLES')['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type"); - table = info['$[]']("table"); - $b = (function() {$case = type; - if ("1D6"['$===']($case)) {return self.$get_table_by_1d6(table)} - else if ("2D6"['$===']($case)) {return self.$get_table_by_2d6(table)} - else if ("D66"['$===']($case)) {return self.$get_table_by_d66_swap(table)} - else { return nil }})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(text['$nil?']())) { - return nil}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $Amadeus_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$amadeusDice', $Amadeus_amadeusDice$3 = function $$amadeusDice(command) { - var $a, $b, $$4, $$5, self = this, commandText = nil, skillRank = nil, modifyText = nil, signOfInequality = nil, targetText = nil, specialNum = nil, diceCount = nil, modify = nil, target = nil, _ = nil, diceText = nil, diceList = nil, specialText = nil, message = nil, is_loop = nil; - - - if ($truthy(/^(R([A-DS])([\+\-\d]*))(@(\d))?((>(=)?)([\+\-\d]*))?(@(\d))?$/i['$=~'](command))) { - } else { - return nil - }; - commandText = $$($nesting, 'Regexp').$last_match(1); - skillRank = $$($nesting, 'Regexp').$last_match(2); - modifyText = $$($nesting, 'Regexp').$last_match(3); - signOfInequality = (function() {if ($truthy($$($nesting, 'Regexp').$last_match(7)['$nil?']())) { - return ">=" - } else { - return $$($nesting, 'Regexp').$last_match(7) - }; return nil; })(); - targetText = (function() {if ($truthy($$($nesting, 'Regexp').$last_match(9)['$nil?']())) { - return "4" - } else { - return $$($nesting, 'Regexp').$last_match(9) - }; return nil; })(); - if ($truthy(nil['$|']($$($nesting, 'Regexp').$last_match(5)))) { - specialNum = $$($nesting, 'Regexp').$last_match(5).$to_i() - } else if ($truthy(nil['$|']($$($nesting, 'Regexp').$last_match(11)))) { - specialNum = $$($nesting, 'Regexp').$last_match(11).$to_i() - } else { - specialNum = 6 - }; - diceCount = $$($nesting, 'CHECK_DICE_COUNT')['$[]'](skillRank); - modify = self.$parren_killer($rb_plus($rb_plus("(", modifyText), ")")).$to_i(); - target = self.$parren_killer($rb_plus($rb_plus("(", targetText), ")")).$to_i(); - $b = self.$roll(diceCount, 6), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceList = $send(diceText.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - specialText = (function() {if (specialNum['$=='](6)) { - return "" - } else { - return "" + "@" + (specialNum) - }; return nil; })(); - message = "" + "(" + (commandText) + (specialText) + (signOfInequality) + (targetText) + ") > [" + (diceText) + "]" + (modifyText) + " > "; - if (skillRank['$==']("D")) { - diceList = [diceList.$min()]}; - is_loop = false; - $send(diceList, 'each', [], ($$5 = function(dice){var self = $$5.$$s || this, achieve = nil, result = nil; - - - - if (dice == null) { - dice = nil; - }; - if ($truthy(is_loop)) { - message = $rb_plus(message, " / ") - } else if ($truthy($rb_gt(diceList.$length(), 1))) { - is_loop = true}; - achieve = $rb_plus(dice, modify); - result = self.$check_success(achieve, dice, signOfInequality, target, specialNum); - if ($truthy(is_loop)) { - return (message = $rb_plus(message, "" + (achieve) + "_" + (result) + "[" + (dice) + ($$($nesting, 'INGA_TABLE')['$[]'](dice)) + "]")) - } else { - return (message = $rb_plus(message, "" + (achieve) + "_" + (result) + "[" + (dice) + "]")) - };}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - return message; - }, $Amadeus_amadeusDice$3.$$arity = 1); - - Opal.def(self, '$check_success', $Amadeus_check_success$6 = function $$check_success(total_n, dice_n, signOfInequality, diff, special_n) { - var self = this, success = nil; - - - if (dice_n['$=='](1)) { - return "ファンブル!"}; - if ($truthy($rb_ge(dice_n, special_n))) { - return "スペシャル!"}; - success = self.$bcdice().$check_hit(total_n, signOfInequality, diff); - if ($truthy($rb_ge(success, 1))) { - return "成功"}; - return "失敗"; - }, $Amadeus_check_success$6.$$arity = 5); - Opal.const_set($nesting[0], 'CHECK_DICE_COUNT', $hash2(["S", "A", "B", "C", "D"], {"S": 4, "A": 3, "B": 2, "C": 1, "D": 2}).$freeze()); - Opal.const_set($nesting[0], 'INGA_TABLE', [nil, "黒", "赤", "青", "緑", "白", "任意"].$freeze()); - Opal.const_set($nesting[0], 'TABLES', $hash2(["ECT", "BST", "RT", "PRT", "FT", "BT", "FWT", "BRT", "RIT", "WT", "NMT", "TGT", "CST", "GCVT", "YCVT", "ECVT", "CCVT", "NCVT", "DGVT", "DAVT", "PRCT", "TCCT", "INCT", "PSCT", "LVCT", "DACT", "RGT", "FBT", "CHVT", "LCVT", "KCVT", "SAT", "SMT"], {"ECT": $hash2(["name", "type", "table"], {"name": "境遇表", "type": "1D6", "table": ["告白。あなたは、神と人間(獣の子の場合は何らかの動物)が愛し合って生まれた神子です。最近になって、その事実と予言について、自分の親から知らされました。あなたに両親がいる場合、どちらかの親は義理の親となります。", "孤児。あなたは、親のことについて何も知りませんでした。過酷な環境で暮らすなか、あなたの兄弟姉妹が、あなたを迎えに来ました。そして、あなたが神の子どもであり、予言の持ち主だということを教えてくれました。", "家族。あなたは、神の子として幼い頃から生活していました。現実と<聖地>を行き来し、様々なことを神である親から教えてもらっています。そして、いつの日か冒険に旅立ち、英雄になる日を楽しみに待っていました。", "血脈。あなたの一族には、「大きな運命を持つ子が生まれる」という予言が伝わっていました。その予言の子があなたです。恐らく、あなたの遠い先祖に神がいたのでしょう。一族はあなたに大きな期待や畏怖を寄せています。", "加護。あなたは、その資質や才能を親神に見いだされました。そして、夢の中で親神と出会い、<神の血>を直接与えられました。それ以来、あなたは不思議なものが見えたり聞こえたりするようになりました。", "帰依。あなたは、怪物によって命の危機にさらされました。しかし、神の血を授かることによって、死の淵からよみがえりました。以来、あなたは自らを助けてくれた神に帰依し、その人生を捧げることにしました。"]}), "BST": $hash2(["name", "type", "table"], {"name": "戦場表", "type": "1D6", "table": ["墓場。ラウンドの終了時、PCと怪物の本体は、【生命力】が1D6点減少します。また、この戦場にいる場合、PCがギフトを使用するとき、黒の領域にインガが追加で2つあるものとして扱います。", "市街地。すべてのPCと怪物は、与えるダメージが1D6点上昇します。また、この戦場にいる場合、PCがギフトを使用するとき、赤の領域にインガが追加で2つあるものとして扱います。", "水中。潜水状態にないPCは、あらゆる判定にマイナス1の修正がつきます。ラウンドの終了時、潜水状態でないPCと怪物の本体は、【生命力】が1D6点減少します。また、この戦場にいる場合、PCがギフトを使用するとき、青の領域にインガが追加で2つあるものとして扱います。", "森林。すべてのPCと怪物は、受けるダメージが1D6点軽減します。また、この戦場にいる場合、PCがギフトを使用するとき、緑の領域にインガが追加で2つあるものとして扱います。", "空中。飛行状態にないPCは、あらゆる判定にマイナス1の修正がつきます。戦闘終了時、怪物の【生命力】が1点以上残っていた場合、その戦闘中に一度も飛行状態にならなかったPCと怪物の本体は、【生命力】が[戦闘に費やした乱戦ラウンド数×3D6]点減少します。また、この戦場にいる場合、PCがギフトを使用するとき、白の領域にインガが追加で2つあるものとして扱います。", "平地。特に変わった効果はありません。"]}), "RT": $hash2(["name", "type", "table"], {"name": "関係表", "type": "1D6", "table": ["恋心(プラス)/殺意(マイナス)", "同情(プラス)/侮蔑(マイナス)", "憧憬(プラス)/嫉妬(マイナス)", "信頼(プラス)/疑い(マイナス)", "共感(プラス)/不気味(マイナス)", "大切(プラス)/面倒(マイナス)"]}), "PRT": $hash2(["name", "type", "table"], {"name": "親心表", "type": "1D6", "table": ["かわいい(プラス)/生意気(マイナス)", "期待(プラス)/脅威(マイナス)", "自慢(プラス)/恥(マイナス)", "愛情(プラス)/無関心(マイナス)", "有用(プラス)/心配(マイナス)", "過保護(プラス)/執着(マイナス)"]}), "FT": $hash2(["name", "type", "table"], {"name": "ファンブル表", "type": "1D6", "table": ["運命の輪が回転する。運命の輪の上にある赤の領域のインガを青の領域に、青の領域のインガを緑の領域に、緑の領域のインガを白の領域に、白の領域のインガを赤の領域に、それぞれ同時に移動させる。", "仲間に迷惑をかけてしまう。自分以外のPC全員の【生命力】が1点減少する。", "この失敗は後に祟るかもしれない……。自分の【生命力】が1D6点減少する。", "あまりの失敗に、みんなの態度が変わる。自分に対して一番高い【想い】の値を持っているキャラクター全員の、【想い】の属性が反転する。", "心に大きな乱れが生まれる。自分の属性に対応した変調を受ける(黒なら絶望、赤なら憤怒、青なら臆病1、緑なら堕落、白なら恥辱)。", "周囲から活気が失われる。運命の輪のなかから、黒以外の領域のインガがすべて1つずつ減少する。"]}), "BT": $hash2(["name", "type", "table"], {"name": "休憩表", "type": "D66", "table": [[11, "土着の怪物が襲いかかってきた! なんとか撃退するが、傷を負ってしまった。1D6点のダメージを受ける。"], [12, "美女の沐浴をのぞいてしまった。1D6を振る。1~2なら「堕落」、3~4なら「恥辱」、5~6なら「重傷1」の変調を受ける。"], [13, "強欲な商人に出会う。このシーンに登場したキャラクターは、アイテムを購入することができる。ただし、すべてのアイテムの価格は通常の値段より1高い。"], [14, "自分の過去の話をする。なんで、こんな話しちゃったんだろう? PCの中から、自分に対してもっとも高い【想い】を持つPC全員の、関係の属性が反転する。"], [15, "周囲の空気が変わった。運命の輪が動き出す予感!運命の輪の上にある赤の領域のインガを青の領域に、青の領域のインガを緑の領域に、緑の領域のインガを白の領域に、白の領域のインガを赤の領域に、それぞれ同時に移動させる。"], [16, "突然の空腹に襲われる。このシーン中に食事を行わなかったPCは「重傷2」の変調を受ける。この変調は、食事を行うと回復できる(ほかの方法でも回復可能)。"], [22, "<絶界>の外の世界の友人のことを思い出す。みんなは元気にしているだろうか? この出目を振ったプレイヤーのPCは、【日常】で判定を行うことができる。成功すると、自分の変調を1つ回復するか、黒の領域からインガを1つ取り除くことができる。"], [23, "奇妙な商人に出会う。このシーンに登場したキャラクターは、アイテムを購入することができる。"], [24, "喋る動物に願いごとをされる。動物たちも、この神話災害で苦しんでいるようだ。あなたは、「この怪物の本体の【生命力】を0にする」という追加の【任務】を受けることができる。この【任務】を達成すると、追加で経験値を20点もらうことができる。"], [25, "素敵な夢を見る。この出目を振ったプレイヤーは、自分のPC以外の好きなキャラクター一人に対する【想い】が1点上昇する。"], [26, "大切な人から、あなたを心配するメールが届いていた。なんて返そう? この出目を振ったプレイヤーのPCは、【日常】で判定を行うことができる。成功すると、自分の変調を1つ回復するか、自分の好きなパトスマークについたチェックを1つ消す。"], [33, "親切な商人に出会う。このシーンに登場したキャラクターは、アイテムを購入することができる。ただし、すべてのアイテムの価格は通常の値段より1低い(価格1未満にはならない)。"], [34, "武器の手入れを行う。この出目を振ったプレイヤーのPCは、【日常】で判定を行うことができる。成功すると、そのセッションの間、自分の武器1つの威力を1点上昇させることができる。"], [35, "最後に買い物をしたときに、おつりを多くもらっていたことに気がついた。1神貨を手に入れる。"], [36, "食事をしながら、仲間と大いに語り合う。このシーンに登場して、食事を行ったキャラクターは、自分の好きなパトスマークについたチェックを一つ消す。"], [44, "一眠りしてしまったのか、不思議な夢を見る。この出目を振ったプレイヤーのPCは、【霊力】で判定を行うことができる。成功すると、好きな予言カード1枚を選び、その【真実】を見ることができる。"], [45, "チンピラにからまれている異性の子を見つける。この出目を振ったプレイヤーのPCは、【武勇】で判定を行うことができる。成功すると、その子は、そのPCに対して【想い】を1点獲得する。この子を協力者にするなら、そのプレイヤーはその子の名前と関係を自由に決めること。"], [46, "心地よい風に吹かれる。運命があなたに味方してくれるような気がした。好きな領域にインガを1つ配置する。"], [55, "目が覚めると、枕元に贈り物が。誰からだろう……? この出目を振ったプレイヤーのPCは、「ランダムアイテム表」を使用する。"], [56, "困っている神話生物を助けてあげた。【日常】で判定を行う。成功すると、次に移動判定を行うことになったとき、自動的にそれを成功にすることができる(達成値が必要な場合6として扱う)。"], [66, "親神が、あなたに話しかけてくる。親子の会話だ。この出目を振ったプレイヤーのPCは、【日常】で判定を行うことができる。成功すると、自分の親神に対する【想い】か、親神の自分に対する【想い】のいずれかを1点上昇する。"]]}), "FWT": $hash2(["name", "type", "table"], {"name": "致命傷表", "type": "1D6", "table": ["絶望的な攻撃を受ける。そのキャラクターは死亡する。", "苦痛の悲鳴をあげ、無惨にも崩れ落ちる。そのキャラクターは行動不能になる。また、黒の領域のインガが1つ増える。", "攻撃を受けた武器が砕け、敵の攻撃が直撃する。そのキャラクターは行動不能になる。また、自分の武器一つを破壊する。", "強烈な一撃を受けて気絶する。そのキャラクターは行動不能になる。", "意識はあるが、立ち上がることができない。そのキャラクターは行動不能になる。次のシーンになったら【生命力】が1点に回復する。", "奇跡的に持ちこたえる。【生命力】1点で踏みとどまる。"]}), "BRT": $hash2(["name", "type", "table"], {"name": "戦果表", "type": "1D6", "table": ["1神貨を獲得する。", "1D6神貨を獲得する。", "好きな領域にインガを1つ置く。", "黒の領域からインガを1つ取り除く。", "「ランダムアイテム」表で、アイテムを入手できる。", "PC全員、自分の人物欄の中から、パトスのチェックを1つ消すことができる。"]}), "RIT": $hash2(["name", "type", "table"], {"name": "ランダムアイテム表", "type": "2D6", "table": ["「鎧」を1個獲得する。", "「手がかり」を1個獲得する。", "「お洒落」を1個獲得する。", "「護符」を1個獲得する。", "「甘露」を1個獲得する。", "「食料」を1D6個獲得する。", "「お香」を1個獲得する。", "「供物」を1個獲得する。", "「霊薬」を1個獲得する。", "「ごちそう」を1個獲得する。", "「爆弾」を1個獲得する。"]}), "WT": $hash2(["name", "type", "table"], {"name": "損傷表", "type": "1D6", "table": ["自分の【生命力】を1D6点減少する。", "1D6神貨を失う。", "黒の領域にインガを1つ置く。", "「臆病2」の変調を受ける。", "「重傷3」の変調を受ける。", "自分の人物欄のもっとも高い【想い】1つを選び、それを1点減少する。"]}), "NMT": $hash2(["name", "type", "table"], {"name": "悪夢表", "type": "1D6", "table": ["絶望の闇に視界を遮断される。背後に怪物の気配を感じたと思ったときは遅かった。卑劣な攻撃があなたを襲う。好きな能力値で判定を行う。失敗すると死亡する。", "絶望の闇の中、悲痛な叫びが聞こえてくる。事件の被害者たちだろうか。あなたは、救えなかったのだ。【日常】で判定を行う。失敗すると、「絶望」の呪いを受ける。", "絶望の闇の中で怪物の笑いがこだまする。それは嘲りの笑いだった。怪物や仲間たち……何より自分への怒りがわき上がる。【日常】で判定を行う。失敗すると、「憤怒」の呪いを受ける。", "絶望の闇の中に一人取り残される。誰もあなたに気づかない。孤独に耐えながら、何とか日常へ帰還したが……そのときの恐怖がぬぐえない。【日常】で判定を行う。失敗すると、「臆病3」の呪いを受ける。", "絶望の闇から帰還したあなたを待っていたのは、代わり映えのない日常だった。あなたが任務に失敗しても、世界は変わらない。なら、もう、あんな怖い目をする必要はないんじゃないか? 【日常】で判定を行う。失敗すると、「堕落」の呪いを受ける。", "絶望の闇の中を必死で逃げ出した。背後から仲間の声が聞こえた気がする。しかし、あなたは振り返ることができなかった。【日常】で判定を行う。失敗すると、「恥辱」の呪いを受ける。"]}), "TGT": $hash2(["name", "type", "table"], {"name": "目標表", "type": "1D6", "table": ["悪意。PCの中でもっとも【生命力】の低いもの一人を目標に選ぶ。もっとも低い【生命力】の持ち主が複数いる場合、その中から、GMが自由に一人目標を選ぶ。", "狡猾。もっとも数値が高いパラグラフにいるPC一人を目標に選ぶ。全員が欄外にいる場合、欄外にいるPC全員を目標に選ぶ。", "非道。PCの中でもっとも低いランクの【武勇】の持ち主一人を目標に選ぶ。もっとも低いランクの持ち主が複数いる場合、その中から、もっとも低いモッドの持ち主一人を目標に選ぶ。モッドも同じ値だった場合、GMがその中から自由に一人目標を選ぶ。", "堅実。PCの中でもっとも低いランクの【技術】の持ち主一人を目標に選ぶ。もっとも低いランクの持ち主が複数いる場合、その中から、もっとも低いモッドの持ち主一人を目標に選ぶ。モッドも同じ値だった場合、GMがその中から自由に一人目標を選ぶ。", "豪快。PCの中でもっとも高いランクの【武勇】の持ち主一人を目標に選ぶ。もっとも高いランクの持ち主が複数いる場合、その中から、もっとも高いモッドの持ち主一人を目標に選ぶ。モッドも同じ値だった場合、GMがその中から自由に一人目標を選ぶ。", "単純。もっとも数値が低いパラグラフにいるPC一人を目標に選ぶ。全員が欄外にいる場合、欄外にいるPC全員を目標に選ぶ。"]}), "CST": $hash2(["name", "type", "table"], {"name": "制約表", "type": "1D6", "table": ["短命", "誘惑", "悪影響", "束縛", "喧嘩", "干渉"]}), "GCVT": $hash2(["name", "type", "table"], {"name": "ギリシャ神群試練表", "type": "1D6", "table": ["山の向こうから一つ目の巨人、サイクロプスがこちらを見ている。岩を投げてきた!1D6点のダメージを受ける。", "水音に目を向けると、アルテミスが泉で水浴びをしていた。美しい……あ、気づかれた?自分が男性なら、「重傷2」の変調を受ける。自分が女性なら、「恥辱」の変調を受ける。", "海を渡ろうとすると、海が渦巻き乗った船が引き寄せられていく。中心にいるのは怪物カリュブディスだ。このままだと、船ごと飲み込まれてしまう。[青の領域にあるインガの数]点ダメージを受ける。", "デュオニソスの女性信者、マイナスたちに取り囲まれる。彼女たちは完全に酔っ払っており、話は通じない上、酒を飲めと強要してくる。【生命力】が1点回復し、「堕落」の変調を受ける。", "巨大な天井を支えている巨人と出会う。巨人は「少しの間、支えるのを代わってくれないか?」と頼んでくる。断りにくい雰囲気だ……。【愛】で判定を行う。失敗すると、そのセッションの間、所持品の欄が一つ使えなくなる。その欄にアイテムが記入されていれば、それを捨てること。", "「あなた最近、調子に乗ってない?」アフロディーテに難癖をつけられた。「自分のことだけ見てればいいんじゃない?」鏡に映る自分が、とても美しく思えてきた。自分への【想い】が2点上昇し、それ以外の人物欄のパトスすべてにチェックを入れる。"]}), "YCVT": $hash2(["name", "type", "table"], {"name": "ヤマト神群試練表", "type": "1D6", "table": ["空が急に暗くなる。太陽がどこにも見えない。もしかして、アマテラスが隠れてしまったのか?黒の領域にインガを一つ配置する。", "いつのまにか、黄泉国に迷い込んでしまっていた。周囲は黄泉軍に取り囲まれている。どうにかして、逃げなくては!移動判定を行う。失敗すると、3点のダメージを受け、もう一度「試練表」を振る。", "目の前の海はワニザメでいっぱいだ。この海を渡らなければ、目的地にはたどり着けないのに。青の領域のインガを二つ取り除くか、自分が2D6点のダメージを受けるかを選ぶ。", "「みんなー楽しんでるー!?」ここはウズメが歌い踊るライブ会場だ。どうしよう、目的を忘れそうなほど楽しい!自分は、自分の属性のインガを一つ取り除くか、「堕落」の変調を受けるかを選ぶ。", "「龍の首の珠を取るのを手伝ってくれませんか?そうしたら、船に乗せてさしあげます」平安貴族のような格好をした男が話しかけてくる。手伝うしかないようだ。「重傷1」の変調を受ける。", "海岸でいじめられている亀を助けたら、海の中の宮殿につれてきてくれた。トヨタマヒメが現れ、盛大にもてなしてくれる。あっという間に、夢のような時間が過ぎていく。でも、そろそろ行かなくては。【日常】で判定する。失敗すると、自分の年齢を6D6歳増やし、「絶望」の変調を受ける。"]}), "ECVT": $hash2(["name", "type", "table"], {"name": "エジプト神群試練表", "type": "1D6", "table": ["大蛇アペプが今にも目の前の空で輝く太陽を、飲み込もうとしている!止めなくては!【武勇】で判定する。失敗すると、黒の領域にインガを二つ配置する。", "気がつけば、魂が羽の生えたバーだけになって、空を飛んでいた。早く肉体に戻らなくては。【霊力】で判定する。自分の【生命力】を1D6点減少し、もう一度「試練表」を振る。", "ぐつぐつと沸き立つ湖と、流れる火の川が見える。目的地は、この川を越えた先にある。【技術】で判定する。失敗すると、炎タグのついた2D6点のダメージを受け、黒以外の領域のインガが一つずつ取り除かれる。", "冥界ドゥアトの番人たちが、目の前に現れた。と畜場より来る吸血鬼、下半身の排泄物を喰らうものが近づいてくる。ここは冥界なのか、それとも、やつらが地上に這い出してきたのか。自分は、「重傷1」の変調を受けるか、「恥辱」の変調を受けるかを選ぶ。", "目の前にアヌビスがいる。アヌビスは天秤を掲げて、心臓を要求してくる。「お前の罪を数えろ」【日常】で判定を行う。失敗すると、【活力】が0点になる。この効果によって【生命力】の現在値が最大値を超えた場合、最大値と同じ値に調整する。", "獅子頭の神、シェセムが、悪人の頭を砕いて、死者のためのワインにしている。悪人と見なされれば、頭をもがれてしまうだろう。【日常】で判定を行う。失敗すると、「重傷2」の変調を受ける。"]}), "CCVT": $hash2(["name", "type", "table"], {"name": "クトゥルフ神群試練表", "type": "1D6", "table": ["新聞記者たちが忙しく行き来しているオフィスにいる。ここは、新聞社アーカムアドバタイザーの編集部だ。「君が大きなニュースを持っていると聞いたんだけれど」記者の一人が尋ねてくる。自分の【真実】が公開されていなければ、「臆病1」の変調を受ける。", "魚の顔と鱗に覆われた身体をもつ、ディープワンに取り囲まれる。あなたが女性ならば、彼らのすみかに連れ去られてしまう。男性ならば、暴力を振るわれ、1D6点のダメージを受ける。女性なら、衣服を奪われ、「恥辱」の変調を受ける。", "ここはどうやら夢の中らしい。目の前にクトゥルフがいる。「余になんの用だ。余を目覚めさせる気なら、容赦はしない」寝ぼけ眼のくせに、クトゥルフは怒っているようだ。「絶望」の変調を受ける。", "地下のもぐり酒場で一息つけた……と思ったら、トンプソン機関銃を構えた男たちが飛び込んできた。マフィアの抗争だ!4点のダメージを受ける。", "古ぼけた本を手に入れた。どうやら、魔導書のようだ。読むと正気を失う可能性もあるが、力が手に入る可能性も高い。【霊力】のランクがA以上なら、好きな領域にインガを二つ配置する。そうでない場合、「絶望」と「臆病2」の変調を受ける。", "なんの変哲も無い民家にいる。アーカムの静かな風景が……ああ、窓に!窓に!黒の領域にインガを一つ配置する。"]}), "NCVT": $hash2(["name", "type", "table"], {"name": "北欧神群試練表", "type": "1D6", "table": ["美しい乙女が告げる。「あなたはエインヘリアルたる資格がある」どうやら、戦乙女ヴァルキュリャに見初められたらしい。彼女たちは、戦死した者の魂を連れていくのだが。自分は、戦乙女から【想い】を2点獲得する。この【想い】の関係はマイナスの「殺意」となる。", "雄叫びと共に現れたのは、獣の皮を被った屈強な戦士たち、ベルセルクだった。手に手に斧を構え、こちらに向かってくる!【武勇】で判定を行う。失敗すると、2D6点のダメージを受ける。", "オーディンの神子、エインヘリアルたちの宴会に紛れ込んでしまった。山のように積まれたご馳走を好きに食べていいと思ったら、「勝負だ!」という声。食べ比べを挑まれている。神子としては、負けるわけにはいかない。【日常】で判定を行う。失敗すると、「恥辱」の変調を受ける。", "「ここは我々の土地だ。ただで通れると思っているのか?」ドヴェルグが行く手を塞ぎ、神貨を要求してくる。彼らはがめついことで有名だ。神貨を2点支払う。支払わない場合、自分の【生命力】を1点減少して、もう一度「試練表」を使用する。", "「このまま冒険を続けても簡単すぎるんじゃないか?」ロキが話し掛けてきた。気がつくと君は狼の姿に変わっていた。このセッションの間、自分に「獣」のタグがつき、【愛】のランクが1段階低くなる(Dは変化しない)。", "巨人が話し掛けてくる。「お前に力をやってもいい。代わりに、片目か、片腕をよこせ」オーディンは片目を差し出して、知恵を手に入れた。嘘ではないだろうが……。【生命力】を3D6点減少することで、好きな領域にインガを二つ配置できる。減少しなかった場合、「臆病1」の変調を受ける。"]}), "DGVT": $hash2(["name", "type", "table"], {"name": "ダンジョン試練表", "type": "1D6", "table": ["照明が切れてしまい、暗闇の中に放り出される。前が見えない。白の領域からインガを一つ取り除く。", "罠だ!こちらに向かって、巨大な岩が転がって来る!【技術】で判定する。失敗すると、2D6点のダメージを受ける。", "宝箱発見。罠がないかを慎重に調べてみよう。【技術】で判定する。成功すると、1神貨を獲得する。失敗すると、「憤怒」と「恥辱」の変調を受ける。", "謎解きが必要な部分に迷い込む。この謎を解かなければ、罠を無理矢理突破しなければならない。【頭脳】で判定を行う。失敗すると、「絶望」の変調を受け、1D6点のダメージを受ける。", "粘液が飛び散る部屋に入ってしまった。まずい、何でも溶かす酸だ!自分が装備しているアイテムの中から一つを選ぶ。選んだアイテムを破壊する。【食料】を選んだ場合は、すべての【食料】を破壊する。", "怪物たちのすみかに迷い込んでしまったようだ。怪物が一斉に襲ってくる!【武勇】で判定を行う。失敗すると、2D6点のダメージを受ける。"]}), "DAVT": $hash2(["name", "type", "table"], {"name": "日常試練表", "type": "1D6", "table": ["仲間と移動していると、一般人の友達と偶然出会ってしまう。今何をしているかを聞かれたので、なんとかごまかす。自分に対して【想い】の値を持っているPC全員の属性が反転する。", "仕事や勉強を催促する電話がかかってきた。今はそれどころじゃないんだって!「憤怒」の変調を受ける。", "ふと、見たかったテレビ番組を見逃していたことに気づいてしまう。録画もしてない。ちょっと凹む。自分の属性と同じ領域にあるインガを一つ取り除く。", "警官に捕まって、職務質問を受ける。ちょっと言えない理由で、急いでいるんですけど。黒の領域にインガを一つ配置する。", "自分の格好や言動が浮いていたらしい、自分を噂するひそひそ話が聞こえてきてしまう。「恥辱」の変調を受けるか、【食料】以外のアイテムを1つ破壊する。", "乗りたかった電車やバスに乗り遅れる。仕方ないから、走るか。移動判定を行う。失敗すると、「堕落」の変調を受け、もう一度「試練表」を使用する。"]}), "PRCT": $hash2(["name", "type", "table"], {"name": "挑戦テーマ表【武勇】", "type": "1D6", "table": ["腕相撲", "喧嘩", "度胸試し", "レスリング", "狩り", "武勇伝自慢"]}), "TCCT": $hash2(["name", "type", "table"], {"name": "挑戦テーマ表【技術】", "type": "1D6", "table": ["織物", "戦車レース", "マラソン", "アクションゲーム", "射的", "資格自慢"]}), "INCT": $hash2(["name", "type", "table"], {"name": "挑戦テーマ表【頭脳】", "type": "1D6", "table": ["パズル", "謎かけ", "チェス", "筆記試験", "禅問答", "学歴自慢"]}), "PSCT": $hash2(["name", "type", "table"], {"name": "挑戦テーマ表【霊力】", "type": "1D6", "table": ["詩作", "動物を手なずける", "北風と太陽", "絵画", "演奏", "のど自慢"]}), "LVCT": $hash2(["name", "type", "table"], {"name": "挑戦テーマ表【愛】", "type": "1D6", "table": ["ナンパ勝負", "誰かからより愛される", "美人コンテスト", "ティッシュ配り", "借り物競争", "恋愛自慢"]}), "DACT": $hash2(["name", "type", "table"], {"name": "挑戦テーマ表【日常】", "type": "1D6", "table": ["料理", "大食い", "呑み比べ", "倹約生活", "サバイバル", "リア充自慢"]}), "RGT": $hash2(["name", "type", "table"], {"name": "ランダムギフト表", "type": "1D6", "table": ["ランダムに選んだPCと同じ親神の親神ギフトの中から選ぶ。", "GMが選んだキャラクターと同じ親神の親神ギフトの中から選ぶ。", "ランダムに選んだPCと同じ神群の神群ギフトの中から選ぶ。", "GMが選んだキャラクターと同じ神群の神群ギフトの中から選ぶ。", "好きな背景ギフトの中から選ぶ。", "好きな汎用ギフトの中から選ぶ。"]}), "FBT": $hash2(["name", "type", "table"], {"name": "決戦戦果表", "type": "1D6", "table": ["1D6枚の神貨を獲得する。", "[戦闘に経過した偵察・乱戦・追撃ラウンド数の合計+2]枚の神貨を獲得する。", "[倒した怪物の本体レベル+2]枚の神貨を獲得する。", "[黒の領域の覚醒段階+2]枚の神貨を獲得。", "「ランダムアイテム表」で、アイテムを入手できる。", "「ランダムアイテム表」で、アイテムを入手できる。"]}), "CHVT": $hash2(["name", "type", "table"], {"name": "中華神群試練表", "type": "1D6", "table": ["たどりついた場所は、桃源郷であった。すべてを忘れて、しばらく楽しんでしまう。年齢が2D6点上昇し、「堕落」の変調を受ける。", "風にさらわれて、仙人に出会う。仙人は、稽古をつけてくれるが、激しい修行に体はボロボロになってしまった。好きな領域にインガを一つ配置し、「重傷4」の変調を受ける。", "美男・美女に誘惑されるが、それは妖怪の化けた姿だった。たぶらかされたことに、怒りを覚える。「憤怒」の変調を受ける。", "名前を呼ばれたので、返事をしたら、瓶の中に吸い込まれてしまった。瓶の中から脱出をするまでに苦労をする。2D6点のダメージを受け、「恥辱」の変調を受ける。", "地府で行われてる閻魔の裁判に参考人として招集される。下手な証言をしたために、疑われて地獄に落とされかかった。「絶望」の変調を受ける。", "麒麟の死骸を発見してしまう。これは、不吉の前触れだ。黒の領域にインガを一つ配置する。"]}), "LCVT": $hash2(["name", "type", "table"], {"name": "ラストクロニクル神群試練表", "type": "1D6", "table": ["レ・ムゥの五色の太陽がすべて輝きを失う「千年夜」の到来を幻視する。これは起こりうる未来なのだろうか……。黒の領域にインガを1つ配置する。", "召喚された小野小町が退屈を持て余してる。彼女の退屈を紛らわせるため【頭脳】か【愛】で判定する。失敗した場合、黒の領域にインガを1つ配置する。", "血肉を貨幣代わりに扱う商人・ブラッドトレーダーと出会う。ラストクロニクル神群の聖地の買い物リストからアイテムを1つ選ぶ。【生命力】を「価格×3点」消費することで、選んだアイテムを獲得する。", "あなたは旅の途中で美女と出会い、意気投合する。しかし、その女性はメレドゥスの魔闘士・メニズマだった。彼女は去り際にあなたの精気を奪い取る。【生命力】と【活力】がそれぞれ1D6点減少する。", "強欲なる司都官が治める街に迷い込んでしまう。通行料として神貨を1D6点支払う。支払えない場合、2D6点ダメージを受ける。", "放浪の勇者・アルマイルから挨拶代わりの一撃を受ける。1D6点ダメージを受け、アルマイルからの【想い】が1点上昇する。"]}), "KCVT": $hash2(["name", "type", "table"], {"name": "ケルト神群試練表", "type": "1D6", "table": ["怪物が奏でる銀の竪琴の音色が聞こえてきて、しばらくの間、眠ってしまう。眠っている間に、妖精たちに悪戯された。「恥辱」の変調を受け、アイテムを一つ選んで失う。", "かつて倒した敵の娘から呪いをかけられてしまい、左腕が麻痺して動かなくなる。このセッションの間、【武勇】のランクが一段階減少する(Dより下にはならない)。", "エイネーという女性に、泉の底にある指輪を取ってきて欲しいと頼まれる。泉の底に潜って戻って来ると、自分が加齢してしまっていることに気付く。罠だったのだ。自分の年齢をD66歳増やし、【活力】が0点になる。", "悪いドルイド僧から求婚を迫られる。急な話に戸惑っていると、ドルイド僧は怒りだし、PCを鹿に変える呪いをかけた。このセッションの間、【日常】のランクが一段階減少する(Dより下にはならない)。", "ウィッカーマンに閉じ込められ、焼かれてしまう。「重傷4」の変調を受ける。", "道案内をしてくれた美女にそそのかされて、女人の国にたどりついてしまう。誘惑に耐えながら、なんとか脱出する。「堕落」と「臆病2」の変調を受ける。"]}), "SAT": $hash2(["name", "type", "table"], {"name": "店内雰囲気表", "type": "D66", "table": [[11, "山の中にある峠の茶屋"], [12, "煙草の煙がたゆたうセルフ式コーヒーチェーン店"], [13, "山上りの座卓がある和風茶寮"], [14, "ロココ調の優美で華やかな雰囲気の高級サロン"], [15, "ヴィクトリア調のシックで上品なティーハウス"], [16, "古い歌謡曲がかかり、テーブル筐体が懐かしい純喫茶"], [22, "若い子で賑わうポップな内装のいかにもなチェーン店"], [23, "ミッドセンチュリーの家具がお洒落なカフェ"], [24, "ジュークボックスが目立つアメリカンダイナー"], [25, "ピアノ曲が静かに流れる落ち着いた喫茶店"], [26, "ノマドな若者が目立つコーヒーチェーン店"], [33, "かわいい給仕さんがたくさんいるメイドカフェ"], [34, "独特の茶器でゆったりお茶を楽しめる中国茶館"], [35, "アースカラーが懐かしい健康志向なナチュラルカフェ"], [36, "見晴らしのいいカフェテラスが自慢のオープンカフェ"], [44, "壁一面にレコードが飾られているジャズ喫茶"], [45, "24時間営業で荒れた雰囲気の漫画喫茶"], [46, "色々なアナログゲームが楽しめるゲームカフェ"], [55, "ショッピングモールのフードコート内にある出店"], [56, "ビジネスマンたちが商談にいそしむ談話室"], [66, "水タバコを吸いながら会話に興じる中東風カフェ"]]}), "SMT": $hash2(["name", "type", "table"], {"name": "特殊メニュー表", "type": "D66", "table": [[11, "アド・パトレス(ケルト)"], [12, "アムブロシア(ギリシア)"], [13, "ネクタル(ギリシア)"], [14, "アムリタ(インド)"], [15, "ソーマ(インド)"], [16, "ヤシオリ(ヤマト)"], [22, "変若水/おちみず(ヤマト)"], [23, "天舐酒/あまのたむけざけ(ヤマト)"], [24, "エリクサー(錬金術)"], [25, "ハオマ(ペルシア)"], [26, "金丹(中華)"], [33, "神農茶(中華)"], [34, "チョコラトル(アステカ)"], [35, "クヴァシル(北欧)"], [36, "ヘイズルーンの乳(北欧)"], [44, "ホワイト・ドロップ(エジプト)"], [45, "リキッド・ゴールド(エジプト)"], [46, "ジヴァヤ・ヴォジャ(スラブ)"], [55, "スハルジク(メソポタミア)"], [56, "ニンフサグのミルク(メソポタミア)"], [66, "黄金の蜂蜜酒(クトゥルフ)"]]})}).$freeze()); - return self.$setPrefixes($rb_plus(["R[A-DS].*"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Amadeus_Korean.js b/src/assets/dicebot/Amadeus_Korean.js deleted file mode 100644 index 6b6dcd0cf..000000000 --- a/src/assets/dicebot/Amadeus_Korean.js +++ /dev/null @@ -1,154 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$amadeusDice', '$nil?', '$[]', '$upcase', '$===', '$get_table_by_1d6', '$get_table_by_2d6', '$get_table_by_d66_swap', '$=~', '$last_match', '$|', '$to_i', '$parren_killer', '$+', '$roll', '$collect', '$split', '$==', '$min', '$each', '$>', '$length', '$check_success', '$>=', '$check_hit', '$bcdice', '$freeze', '$setPrefixes', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Amadeus_Korean'); - - var $nesting = [self].concat($parent_nesting), $Amadeus_Korean_initialize$1, $Amadeus_Korean_rollDiceCommand$2, $Amadeus_Korean_amadeusDice$3, $Amadeus_Korean_check_success$6; - - - Opal.const_set($nesting[0], 'ID', "Amadeus:Korean"); - Opal.const_set($nesting[0], 'NAME', "아마데우스"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:아마데우스"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・판정(Rx±y@z>=t)\n" + " 다이스별로 성공, 실패의 판정을 합니다.\n" + " x:x에 랭크(S,A~D)를 입력.\n" + " y:y에 수정치를 입력. ±의 계산에 대응. 생략가능.\n" + " z:z에 스페셜이 되는 주사위 눈의 최저치를 입력.\n" + " 생략한 경우, 6의 값만 스페셜이 됩니다.\n" + " t:t에 목표치를 입력. ±의 계산에 대응. 생략가능.\n" + " 목표치를 생략한 경우, 목표치는 4로 계산됩니다.\n" + " 예) RA RB-1 RC>=5 RD+2 RS-1@5>=6\n" + " ※ RB++ 나 RA- 같은, 플러스 마이너스만의 표기로는 계산되지 않습니다.\n" + " \"달성치\"_\"판정결과\"[\"주사위 눈\"\"대응하는 인과\"]와 같이 출력됩니다.\n" + " 단, C.D랭크에서는 대응하는 인과가 출력되지 않습니다.\n" + " 출력예) 1_펌블![1흑] / 3_실패[3청]\n" + "・각종표\n" + " ・조우표 ECT/관계표 RT/부모마음표 PRT/전장표 BST/휴식표 BT/\n" + "  펌블표 FT/치명상표 FWT/전과표 BRT/랜덤아이템표 RIT/\n" + "  손상표 WT/악몽표 NMT/목표표 TGT/制約表 CST\n" + "・試練表(~VT)\n" + " ギリシャ神群 GCVT/ヤマト神群 YCVT/エジプト神群 ECVT/\n" + " クトゥルフ神群 CCVT/北欧神群 NCVT/ダンジョン DGVT/日常 DAVT\n" + "・挑戦テーマ表(~CT)\n" + " 武勇 PRCT/技術 TCCT/頭脳 INCT/霊力 PSCT/愛 LVCT/日常 DACT\n"); - - Opal.def(self, '$initialize', $Amadeus_Korean_initialize$1 = function $$initialize() { - var $iter = $Amadeus_Korean_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Amadeus_Korean_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Amadeus_Korean_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $Amadeus_Korean_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Amadeus_Korean_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, $b, self = this, text = nil, info = nil, name = nil, type = nil, table = nil, $case = nil, number = nil; - - - text = self.$amadeusDice(command); - if ($truthy(text['$nil?']())) { - } else { - return text - }; - info = $$($nesting, 'TABLES')['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type"); - table = info['$[]']("table"); - $b = (function() {$case = type; - if ("1D6"['$===']($case)) {return self.$get_table_by_1d6(table)} - else if ("2D6"['$===']($case)) {return self.$get_table_by_2d6(table)} - else if ("D66"['$===']($case)) {return self.$get_table_by_d66_swap(table)} - else { return nil }})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(text['$nil?']())) { - return nil}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $Amadeus_Korean_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$amadeusDice', $Amadeus_Korean_amadeusDice$3 = function $$amadeusDice(command) { - var $a, $b, $$4, $$5, self = this, commandText = nil, skillRank = nil, modifyText = nil, signOfInequality = nil, targetText = nil, specialNum = nil, diceCount = nil, modify = nil, target = nil, _ = nil, diceText = nil, diceList = nil, specialText = nil, message = nil, is_loop = nil; - - - if ($truthy(/^(R([A-DS])([\+\-\d]*))(@(\d))?((>(=)?)([\+\-\d]*))?(@(\d))?$/i['$=~'](command))) { - } else { - return nil - }; - commandText = $$($nesting, 'Regexp').$last_match(1); - skillRank = $$($nesting, 'Regexp').$last_match(2); - modifyText = $$($nesting, 'Regexp').$last_match(3); - signOfInequality = (function() {if ($truthy($$($nesting, 'Regexp').$last_match(7)['$nil?']())) { - return ">=" - } else { - return $$($nesting, 'Regexp').$last_match(7) - }; return nil; })(); - targetText = (function() {if ($truthy($$($nesting, 'Regexp').$last_match(9)['$nil?']())) { - return "4" - } else { - return $$($nesting, 'Regexp').$last_match(9) - }; return nil; })(); - if ($truthy(nil['$|']($$($nesting, 'Regexp').$last_match(5)))) { - specialNum = $$($nesting, 'Regexp').$last_match(5).$to_i() - } else if ($truthy(nil['$|']($$($nesting, 'Regexp').$last_match(11)))) { - specialNum = $$($nesting, 'Regexp').$last_match(11).$to_i() - } else { - specialNum = 6 - }; - diceCount = $$($nesting, 'CHECK_DICE_COUNT')['$[]'](skillRank); - modify = self.$parren_killer($rb_plus($rb_plus("(", modifyText), ")")).$to_i(); - target = self.$parren_killer($rb_plus($rb_plus("(", targetText), ")")).$to_i(); - $b = self.$roll(diceCount, 6), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceList = $send(diceText.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - specialText = (function() {if (specialNum['$=='](6)) { - return "" - } else { - return "" + "@" + (specialNum) - }; return nil; })(); - message = "" + "(" + (commandText) + (specialText) + (signOfInequality) + (targetText) + ") > [" + (diceText) + "]" + (modifyText) + " > "; - if (skillRank['$==']("D")) { - diceList = [diceList.$min()]}; - is_loop = false; - $send(diceList, 'each', [], ($$5 = function(dice){var self = $$5.$$s || this, achieve = nil, result = nil; - - - - if (dice == null) { - dice = nil; - }; - if ($truthy(is_loop)) { - message = $rb_plus(message, " / ") - } else if ($truthy($rb_gt(diceList.$length(), 1))) { - is_loop = true}; - achieve = $rb_plus(dice, modify); - result = self.$check_success(achieve, dice, signOfInequality, target, specialNum); - if ($truthy(is_loop)) { - return (message = $rb_plus(message, "" + (achieve) + "_" + (result) + "[" + (dice) + ($$($nesting, 'INGA_TABLE')['$[]'](dice)) + "]")) - } else { - return (message = $rb_plus(message, "" + (achieve) + "_" + (result) + "[" + (dice) + "]")) - };}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - return message; - }, $Amadeus_Korean_amadeusDice$3.$$arity = 1); - - Opal.def(self, '$check_success', $Amadeus_Korean_check_success$6 = function $$check_success(total_n, dice_n, signOfInequality, diff, special_n) { - var self = this, success = nil; - - - if (dice_n['$=='](1)) { - return "펌블!"}; - if ($truthy($rb_ge(dice_n, special_n))) { - return "스페셜!"}; - success = self.$bcdice().$check_hit(total_n, signOfInequality, diff); - if ($truthy($rb_ge(success, 1))) { - return "성공"}; - return "실패"; - }, $Amadeus_Korean_check_success$6.$$arity = 5); - Opal.const_set($nesting[0], 'CHECK_DICE_COUNT', $hash2(["S", "A", "B", "C", "D"], {"S": 4, "A": 3, "B": 2, "C": 1, "D": 2}).$freeze()); - Opal.const_set($nesting[0], 'INGA_TABLE', [nil, "흑", "적", "청", "녹", "백", "임의"].$freeze()); - Opal.const_set($nesting[0], 'TABLES', $hash2(["ECT", "BST", "RT", "PRT", "FT", "BT", "FWT", "BRT", "RIT", "WT", "NMT", "TGT", "CST", "GCVT", "YCVT", "ECVT", "CCVT", "NCVT", "DGVT", "DAVT", "PRCT", "TCCT", "INCT", "PSCT", "LVCT", "DACT"], {"ECT": $hash2(["name", "type", "table"], {"name": "조우표", "type": "1D6", "table": ["고백. 당신은 신과 인간(짐승의 아이의 경우는 무언가의 동물)이 서로 사랑해 태어난 신의 아이입니다. 최근이 되어 그 사실과 예언에 관해 자신의 부모로부터 전해듣게 되었습니다. 당신은 양친이 있는 경우 어느 한쪽은 의붓부모가 됩니다.", "고아. 당신은 부모에 대해 아무것도 몰랐습니다. 가혹한 환경에서 사는 동안, 당신의 형제자매가 당신을 맞이하러 왔습니다. 그리고 당신은 신의 아이이자, 예언의 당사자라는 것을 전해듣습니다.", "가족. 당신은 신의 아이로서 어린 시절부터 생활해왔습니다. 현실과 <성지>를 왔다갔다하며 여러가지 것들을 신인 부모에게서 가르침 받았습니다. 그리고, 언젠가 모험에 나서, 영웅이 될 날을 즐겁게 기다리고 있었습니다.", "혈맥. 당신의 일족에게는 '거대한 운명의 소유자가 태어난다'라고 하는 예언이 전해져 왔습니다. 그 예언의 아이가 당신입니다. 아마도, 당신의 먼 선조는 신이었을 것입니다. 일족은 당신에게 큰 기대와 두려움을 가지고 있습니다.", "총애. 당신의 자질과 재능은 신에게 인정받았습니다. 그리고, 꿈 속에서 부모신과 만나, <신의 피>를 직접 하사받았습니다. 그 이후로, 당신은 불가사의한 것들이 보이거나 들리거나 하게 되었습니다.", "귀의. 당신은 괴물에 의해 생명의 위협을 받았습니다. 하지만, 신의 피를 받은 것으로 죽음의 문턱에서 되돌아 왔습니다. 그 이후로, 당신은 당신을 구해준 신에게 귀의하여 인생을 바치기로 했습니다."]}), "BST": $hash2(["name", "type", "table"], {"name": "전장표", "type": "1D6", "table": ["묘지. 라운드 종료 시 PC와 괴물의 본체는 【생명력】이 1D6점 감소한다. PC가 기프트를 사용할 때 흑의 영역의 인과가 추가로 2개 있는것으로 취급한다.", "시가지. 모든 PC와 괴물은 입히는 데미지가 1D6점 상승한다. PC가 기프트를 사용할 때 적의 영역의 인과가 추가로 2개 있는것으로 취급한다.", "수중. 잠수상태가 아닌 PC는 모든 판정에 -1의 수정치가 붙는다. 라운드 종료 시, 잠수상태가 아닌 PC와 괴물의 본체는 【생명력】이 1D6점 감소한다. PC가 기프트를 사용할 때 청의 영역의 인과가 추가로 2개 있는것으로 취급한다.", "삼림. 모든 PC와 괴물은 받는 데미지가 1D6점 감소한다. PC가 기프트를 사용할 때 녹의 영역의 인과가 추가로 2개 있는것으로 취급한다.", "공중. 비행상태가 아닌 PC는 모든 판정에 -1의 수정치가 붙는다. 전투종료 시 괴물의 【생명력】이 1점이상 남아있을 경우 그 전투중에 한번도 비행상태가 되지 않은 PC와 괴물의 본체는 【생명력】이 [전투에 소비한 난전 라운드 수x3D6]점 감소한다. PC가 기프트를 사용할 때 백의 영역의 인과가 추가로 2개 있는것으로 취급한다.", "평지. 아무런 효과도 없다."]}), "RT": $hash2(["name", "type", "table"], {"name": "관계표", "type": "1D6", "table": ["연심(플러스) / 살의(마이너스)", "동정(플러스) / 모멸(마이너스)", "동경(플러스) / 질투(마이너스)", "신뢰(플러스) / 의심(마이너스)", "공감(플러스) / 밥맛(마이너스)", "소중(플러스) / 귀찮(마이너스)"]}), "PRT": $hash2(["name", "type", "table"], {"name": "부모마음표", "type": "1D6", "table": ["귀엽다(플러스) / 건방지다(마이너스)", "기대(플러스) / 위협(마이너스)", "자랑(플러스) / 수치(마이너스)", "애정(플러스) / 무관심(마이너스)", "유용(플러스) / 걱정(마이너스)", "과보호(플러스) / 집착(마이너스)"]}), "FT": $hash2(["name", "type", "table"], {"name": "펌블표", "type": "1D6", "table": ["운명의 수레바퀴가 회전한다. 각각의 영역의 인과를 적->청->녹->백->적으로 옮긴다.", "동료에게 민폐를 끼친다. 자신 이외의 PC전원은 【생명력】이 1점 감소한다.", "이 실패는 나중에 빌미가 될지도 모른다. 자신의 【생명력】이 1D6점 감소한다.", "너무 큰 실패에 다른 사람들의 태도가 변한다. 자신에 대해 가장 높은 【마음】을 가지고 있는 캐릭터 전원의 【마음】의 속성이 반전한다.", "마음에 큰 동요가 생긴다. 자신에 속성에 대응한 상태이상을 획득한다.\n(흑->절망, 적->분노, 청->두려움3, 녹->타락, 백->수치)", "주변에 활기가 사라진다. 운명의 수레바퀴에서 흑의 영역 이외의 인과를 모두 1개씩 제거한다."]}), "BT": $hash2(["name", "type", "table"], {"name": "휴식표", "type": "D66", "table": [[11, "토착 괴물이 습격해왔다! 어떻게든 격퇴했지만 부상을 입었다. 자신은 1D6점 데미지를 입는다."], [12, "미녀의 목욕을 훔쳐보고 말았다. 1D6을 굴려 1~2라면 「타락」, 3~4라면 「수치」, 5~6이라면 「중상1」의 상태이상을 획득한다."], [13, "욕심이 강한 상인을 만났다. 이 신에 등장한 모든 캐릭터는 아이템을 살 수 있다. 단, 평소의 가격보다 1 높다."], [14, "자신의 과거의 이야기를 한다. 어째서 이런 얘기가 됐지? PC 중에서 자신에 대해 가장 높은 【마음】을 가지고 있는 PC 전원은 【마음】의 속성이 반전한다."], [15, "주변의 공기가 변한다. 운명의 수레바퀴가 움직일 예감! 각각의 영역의 인과를 적->청->녹->백->적으로 옮긴다."], [16, "당신은 무심코 노래를 부른다. 어느샌가 모두가 그 노래에 집중하고 있었다. 흑의 영역 이외의 원하는 인과 1개를 다른 영역으로 옮긴다."], [22, "〈절계〉의 바깥 세계의 친구를 떠올린다. 모두 건강하게 지내고 있을까? 이 PC가【일상】의 판정에 성공하면 자신의 상태이상 1개를 회복하거나 흑의 영역의 인과를 하나 제거할 수 있다."], [23, "기묘한 상인을 만났다. 이 신에 등장한 모든 캐릭터는 아이템을 살 수 있다."], [24, "말하는 동물에게 부탁을 받는다. 동물들도 이 신화재해로 고생하고 있는듯 하다. 이 PC는 「이 괴물의 본체의 【생명력】을 0으로 한다」라는 추가의 【임무】를 받는다. 이 【임무】를 달성하면 추가로 경험치를 20점 받는다."], [25, "멋진 꿈을 꾼다. 이 표를 굴린 PC는 자신의 PC 이외의 캐릭터 1명에 대한 【마음】이 1점 상승한다."], [26, "소중한 사람에게서 당신을 걱정하는 문자를 받았다. 뭐라고 답장하지? 이 표를 굴린 PC는 【일상】의 판정에 성공하면 자신의 상태이상을 1개 회복하거나 자신이 가진 【마음】의 체크를 1개 해제한다."], [33, "친절한 상인을 만났다. 이 신에 등장한 모든 캐릭터는 아이템을 살 수 있다. 단, 평소의 가격보다 1 낮다.(1 미만은 되지 않는다.)"], [34, "무기의 정비를 한다. 이 표를 굴린 PC는 【일상】의 판정에 성공하면 이 세션 동안 무기 1개의 위력을 1점 상승시킬 수 있다."], [35, "마지막으로 쇼핑을 했을때 잔돈을 더 받은걸 깨달았다. 코인을 1개 획득한다."], [36, "식사를 하면서 동료들과 떠든다. 이 신에 등장해서 식사를 한 PC 전원은 자신이 가진 【마음】의 체크를 1개 해제한다."], [44, "잠깐 잠들었는지 이상한 꿈을 꾼다. 이 표를 굴린 PC는 【영력】의 판정에 성공하면 원하는 예언카드 1장의 【진실】을 볼 수 있다."], [45, "양아치들에게 얽힌 이성을 발견한다. 이 표를 굴린 PC가 【무용】의 판정에 성공하면 그 NPC는 이 표를 굴린 PC에 대한 【마음】을 1점 획득한다. 이 NPC를 협력자로 한다면 이 표를 굴린 PC가 이름과 관계를 자유롭게 정한다."], [46, "기분좋은 바람이 분다. 운명이 당신을 도와주는듯한 기분이 든다. 원하는 영역에 인과를 1개 배치한다."], [55, "눈을 뜨면 머리맡에 선물이 있다. 누굴까……? 이 표를 굴린 PC는 「랜덤 아이템표」를 사용한다."], [56, "곤란해하는 신화생물을 도와줬다. 이 표를 굴린 PC는【일상】의 판정에 성공하면 다음 이동판정을 자동으로 성공한다.(달성치는 6으로 한다)"], [66, "부모신이 당신에게 이야기하고 있다. 부모자식간의 대화다. 이 표를 굴린 PC는 【일상】의 판정에 성공하면 자신의 부모신에 대한 【마음】이나 부모신의 자신에 대한 【마음】중 하나를 1점 상승시킨다."]]}), "FWT": $hash2(["name", "type", "table"], {"name": "치명상표", "type": "1D6", "table": ["절망적인 공격을 받는다. 이 캐릭터는 사망한다.", "고통의 비명을 지르고 무참하게 무너진다. 이 캐릭터는 행동불능이 되고 흑의 영역의 인과가 1 증가한다.", "공격을 받은 무기가 부숴지고 적의 공격에 직격당한다. 이 캐릭터는 행동불능이 되고 아이템란 에서 무기 하나를 파괴한다.", "강렬한 일격을 받아 기절한다. 이 캐릭터는 행동불능이 된다.", "의식은 있지만 일어날 수 없다. 이 캐릭터는 행동불능이 되고 다음 신이 되면 【생명력】이 1점으로 회복된다.", "기적적으로 버틴다. 【생명력】이 1점으로 회복된다."]}), "BRT": $hash2(["name", "type", "table"], {"name": "전과표", "type": "1D6", "table": ["코인을 1개 획득한다.", "코인을 1D6개 획득한다.", "원하는 영역에 인과를 1개 배치한다.", "흑의 영역의 인과를 1개 제거한다.", "「랜덤 아이템표」를 1번 사용한다.", "PC 전원은 인물란의 체크를 1개 해제한다."]}), "RIT": $hash2(["name", "type", "table"], {"name": "랜덤아이템표", "type": "2D6", "table": ["「갑옷」을 1개 획득한다.", "「단서」를 1개 획득한다.", "「패션 아이템」을 1개 획득한다.", "「수호부적」을 1개 획득한다.", "「감로」을 1개 획득한다.", "「식량」을 1D6개 획득한다.", "「향」을 1개 획득한다.", "「공물」을 1개 획득한다.", "「영약」을 1개 획득한다.", "「진수성찬」을 1개 획득한다.", "「폭탄」을 1개 획득한다."]}), "WT": $hash2(["name", "type", "table"], {"name": "부상표", "type": "1D6", "table": ["자신의 【생명력】이 1D6점 감소한다.", "코인을 1D6개 잃는다.", "흑의 영역에 인과를 1개 배치한다.", "「두려움3」의 상태이상을 획득한다.", "「중상3」의 상태이상을 획득한다.", "자신의 인물란의 가장 높은【마음】1개가 1점 감소한다. "]}), "NMT": $hash2(["name", "type", "table"], {"name": "악몽표", "type": "1D6", "table": ["절망의 어둠에 시야를 차단당한다. 등뒤에 괴물의 기척이 느껴진다고 생각했을때는 늦었다. 비열한 공격이 당신을 덮친다. 원하는 능력치로 판정해 실패하면 사망한다.", "절망의 어둠 속, 비통한 절규가 들려온다. 사건의 피해자들일까. 당신은 구하지 못했다. 【일상】의 판정에 실패하면 「절망」의 저주를 받는다.", "절망의 어둠 속에서 괴물의 웃음소리가 메아리친다. 그것은 비웃는 소리였다. 괴물이나 동료들…… 무엇보다 자신에 대한 분노가 끓어오른다. 【일상】의 판정에 실패하면 「분노」의 저주를 받는다.", "절망의 어둠 속에서 혼자 남겨졌다. 아무도 당신을 눈치채지 못한다. 고독에 견디면서 어떻게든 일상으로 귀환했지만…… 그 때의 공포를 극복하지 못했다. 【일상】의 판정에 실패하면 「두려움3」의 저주를 받는다.", "절망의 어둠에서 귀환한 당신을 기다리고 있는건 전보다 나은것이 없는 일상이었다. 당신이 임무에 실패해도 세계는 변하지 않는다. 그렇다면, 더이상 당신은 그런 무서운 일을 당할 필요가 없지 않을까? 【일상】의 판정에 실패하면 「타락」의 저주를 받는다.", "절망의 어둠 속에서 필사적으로 도망쳤다. 등뒤에서 동료의 목소리가 들린듯한 기분이 든다. 하지만, 당신은 돌아볼 수 없었다. 【일상】의 판정에 실패하면 「수치」의 저주를 받는다."]}), "TGT": $hash2(["name", "type", "table"], {"name": "목표표", "type": "1D6", "table": ["악의. PC 중에서 가장 【생명력】이 낮은 PC 1명을 선택한다. 가장 낮은 【생명력】인 사람이 여럿 있을 경우, 그 중에서 GM이 자유롭게 선택한다.", "교활. 가장 숫자가 높은 패러그래프에 있는 PC 1명을 선택한다. 전원이 장외에 있을 경우, 장외에 있는 PC 전원을 목표로 선택한다.", "비도. PC 중에서 가장 【무용】랭크가 낮은 PC 1명을 선택한다. 가장 낮은 랭크를 가진 사람이 여럿 있을 경우, 그 중에서 가장 낮은 모드를 가진 사람을 1명 선택한다. 모드도 같을 경우, 그 중에서 GM이 자유롭게 선택한다.", "견실. PC 중에서 가장 【기술】랭크가 낮은 PC 1명을 선택한다. 가장 낮은 랭크를 가진 사람이 여럿 있을 경우, 그 중에서 가장 낮은 모드를 가진 사람을 1명 선택한다. 모드도 같을 경우, 그 중에서 GM이 자유롭게 선택한다.", "호쾌. PC 중에서 가장 【무용】랭크가 높은 PC 1명을 선택한다. 가장 높은 랭크를 가진 사람이 여럿 있을 경우, 그 중에서 가장 높은 모드를 가진 사람을 1명 선택한다. 모드도 같을 경우, 그 중에서 GM이 자유롭게 선택한다.", "교활. 가장 숫자가 낮은 패러그래프에 있는 PC 1명을 선택한다. 전원이 장외에 있을 경우, 장외에 있는 PC 전원을 목표로 선택한다."]}), "CST": $hash2(["name", "type", "table"], {"name": "制約表", "type": "1D6", "table": ["短命", "誘惑", "悪影響", "束縛", "喧嘩", "干渉"]}), "GCVT": $hash2(["name", "type", "table"], {"name": "ギリシャ神群試練表", "type": "1D6", "table": ["山の向こうから一つ目の巨人、サイクロプスがこちらを見ている。岩を投げてきた!1D6点のダメージを受ける。", "水音に目を向けると、アルテミスが泉で水浴びをしていた。美しい……あ、気づかれた?自分が男性なら、「重傷2」の変調を受ける。自分が女性なら、「恥辱」の変調を受ける。", "海を渡ろうとすると、海が渦巻き乗った船が引き寄せられていく。中心にいるのは怪物カリュブディスだ。このままだと、船ごと飲み込まれてしまう。[青の領域にあるインガの数]点ダメージを受ける。", "デュオニソスの女性信者、マイナスたちに取り囲まれる。彼女たちは完全に酔っ払っており、話は通じない上、酒を飲めと強要してくる。【生命力】が1点回復し、「堕落」の変調を受ける。", "巨大な天井を支えている巨人と出会う。巨人は「少しの間、支えるのを代わってくれないか?」と頼んでくる。断りにくい雰囲気だ……。【愛】で判定を行う。失敗すると、そのセッションの間、所持品の欄が一つ使えなくなる。その欄にアイテムが記入されていれば、それを捨てること。", "「あなた最近、調子に乗ってない?」アフロディーテに難癖をつけられた。「自分のことだけ見てればいいんじゃない?」鏡に映る自分が、とても美しく思えてきた。自分への【想い】が2点上昇し、それ以外の人物欄のパトスすべてにチェックを入れる。"]}), "YCVT": $hash2(["name", "type", "table"], {"name": "ヤマト神群試練表", "type": "1D6", "table": ["空が急に暗くなる。太陽がどこにも見えない。もしかして、アマテラスが隠れてしまったのか?黒の領域にインガを一つ配置する。", "いつのまにか、黄泉国に迷い込んでしまっていた。周囲は黄泉軍に取り囲まれている。どうにかして、逃げなくては!移動判定を行う。失敗すると、3点のダメージを受け、もう一度「試練表」を振る。", "目の前の海はワニザメでいっぱいだ。この海を渡らなければ、目的地にはたどり着けないのに。青の領域のインガを二つ取り除くか、自分が2D6点のダメージを受けるかを選ぶ。", "「みんなー楽しんでるー!?」ここはウズメが歌い踊るライブ会場だ。どうしよう、目的を忘れそうなほど楽しい!自分は、自分の属性のインガを一つ取り除くか、「堕落」の変調を受けるかを選ぶ。", "「龍の首の珠を取るのを手伝ってくれませんか?そうしたら、船に乗せてさしあげます」平安貴族のような格好をした男が話しかけてくる。手伝うしかないようだ。「重傷1」の変調を受ける。", "海岸でいじめられている亀を助けたら、海の中の宮殿につれてきてくれた。トヨタマヒメが現れ、盛大にもてなしてくれる。あっという間に、夢のような時間が過ぎていく。でも、そろそろ行かなくては。【日常】で判定する。失敗すると、自分の年齢を6D6歳増やし、「絶望」の変調を受ける。"]}), "ECVT": $hash2(["name", "type", "table"], {"name": "エジプト神群試練表", "type": "1D6", "table": ["大蛇アペプが今にも目の前の空で輝く太陽を、飲み込もうとしている!止めなくては!【武勇】で判定する。失敗すると、黒の領域にインガを二つ配置する。", "気がつけば、魂が羽の生えたバーだけになって、空を飛んでいた。早く肉体に戻らなくては。【霊力】で判定する。自分の【生命力】を1D6点減少し、もう一度「試練表」を振る。", "ぐつぐつと沸き立つ湖と、流れる火の川が見える。目的地は、この川を越えた先にある。【技術】で判定する。失敗すると、炎タグのついた2D6点のダメージを受け、黒以外の領域のインガが一つずつ取り除かれる。", "冥界ドゥアトの番人たちが、目の前に現れた。と畜場より来る吸血鬼、下半身の排泄物を喰らうものが近づいてくる。ここは冥界なのか、それとも、やつらが地上に這い出してきたのか。自分は、「重傷1」の変調を受けるか、「恥辱」の変調を受けるかを選ぶ。", "目の前にアヌビスがいる。アヌビスは天秤を掲げて、心臓を要求してくる。「お前の罪を数えろ」【日常】で判定を行う。失敗すると、【活力】が0点になる。この効果によって【生命力】の現在値が最大値を超えた場合、最大値と同じ値に調整する。", "獅子頭の神、シェセムが、悪人の頭を砕いて、死者のためのワインにしている。悪人と見なされれば、頭をもがれてしまうだろう。【日常】で判定を行う。失敗すると、「重傷2」の変調を受ける。"]}), "CCVT": $hash2(["name", "type", "table"], {"name": "クトゥルフ神群試練表", "type": "1D6", "table": ["新聞記者たちが忙しく行き来しているオフィスにいる。ここは、新聞社アーカムアドバタイザーの編集部だ。「君が大きなニュースを持っていると聞いたんだけれど」記者の一人が尋ねてくる。自分の【真実】が公開されていなければ、「臆病1」の変調を受ける。", "魚の顔と鱗に覆われた身体をもつ、ディープワンに取り囲まれる。あなたが女性ならば、彼らのすみかに連れ去られてしまう。男性ならば、暴力を振るわれ、1D6点のダメージを受ける。女性なら、衣服を奪われ、「恥辱」の変調を受ける。", "ここはどうやら夢の中らしい。目の前にクトゥルフがいる。「余になんの用だ。余を目覚めさせる気なら、容赦はしない」寝ぼけ眼のくせに、クトゥルフは怒っているようだ。「絶望」の変調を受ける。", "地下のもぐり酒場で一息つけた……と思ったら、トンプソン機関銃を構えた男たちが飛び込んできた。マフィアの抗争だ!4点のダメージを受ける。", "古ぼけた本を手に入れた。どうやら、魔導書のようだ。読むと正気を失う可能性もあるが、力が手に入る可能性も高い。【霊力】のランクがA以上なら、好きな領域にインガを二つ配置する。そうでない場合、「絶望」と「臆病2」の変調を受ける。", "なんの変哲も無い民家にいる。アーカムの静かな風景が……ああ、窓に!窓に!黒の領域にインガを一つ配置する。"]}), "NCVT": $hash2(["name", "type", "table"], {"name": "北欧神群試練表", "type": "1D6", "table": ["美しい乙女が告げる。「あなたはエインヘリアルたる資格がある」どうやら、戦乙女ヴァルキュリャに見初められたらしい。彼女たちは、戦死した者の魂を連れていくのだが。自分は、戦乙女から【想い】を2点獲得する。この【想い】の関係はマイナスの「殺意」となる。", "雄叫びと共に現れたのは、獣の皮を被った屈強な戦士たち、ベルセルクだった。手に手に斧を構え、こちらに向かってくる!【武勇】で判定を行う。失敗すると、2D6点のダメージを受ける。", "オーディンの神子、エインヘリアルたちの宴会に紛れ込んでしまった。山のように積まれたご馳走を好きに食べていいと思ったら、「勝負だ!」という声。食べ比べを挑まれている。神子としては、負けるわけにはいかない。【日常】で判定を行う。失敗すると、「恥辱」の変調を受ける。", "「ここは我々の土地だ。ただで通れると思っているのか?」ドヴェルグが行く手を塞ぎ、神貨を要求してくる。彼らはがめついことで有名だ。神貨を2点支払う。支払わない場合、自分の【生命力】を1点減少して、もう一度「試練表」を使用する。", "「このまま冒険を続けても簡単すぎるんじゃないか?」ロキが話し掛けてきた。気がつくと君は狼の姿に変わっていた。このセッションの間、自分に「獣」のタグがつき、【愛】のランクが1段階低くなる(Dは変化しない)。", "巨人が話し掛けてくる。「お前に力をやってもいい。代わりに、片目か、片腕をよこせ」オーディンは片目を差し出して、知恵を手に入れた。嘘ではないだろうが……。【生命力】を3D6点減少することで、好きな領域にインガを二つ配置できる。減少しなかった場合、「臆病1」の変調を受ける。"]}), "DGVT": $hash2(["name", "type", "table"], {"name": "ダンジョン試練表", "type": "1D6", "table": ["照明が切れてしまい、暗闇の中に放り出される。前が見えない。白の領域からインガを一つ取り除く。", "罠だ!こちらに向かって、巨大な岩が転がって来る!【技術】で判定する。失敗すると、2D6点のダメージを受ける。", "宝箱発見。罠がないかを慎重に調べてみよう。【技術】で判定する。成功すると、1神貨を獲得する。失敗すると、「憤怒」と「恥辱」の変調を受ける。", "謎解きが必要な部分に迷い込む。この謎を解かなければ、罠を無理矢理突破しなければならない。【頭脳】で判定を行う。失敗すると、「絶望」の変調を受け、1D6点のダメージを受ける。", "粘液が飛び散る部屋に入ってしまった。まずい、何でも溶かす酸だ!自分が装備しているアイテムの中から一つを選ぶ。選んだアイテムを破壊する。【食料】を選んだ場合は、すべての【食料】を破壊する。", "怪物たちのすみかに迷い込んでしまったようだ。怪物が一斉に襲ってくる!【武勇】で判定を行う。失敗すると、2D6点のダメージを受ける。"]}), "DAVT": $hash2(["name", "type", "table"], {"name": "日常試練表", "type": "1D6", "table": ["仲間と移動していると、一般人の友達と偶然出会ってしまう。今何をしているかを聞かれたので、なんとかごまかす。自分に対して【想い】の値を持っているPC全員の属性が反転する。", "仕事や勉強を催促する電話がかかってきた。今はそれどころじゃないんだって!「憤怒」の変調を受ける。", "ふと、見たかったテレビ番組を見逃していたことに気づいてしまう。録画もしてない。ちょっと凹む。自分の属性と同じ領域にあるインガを一つ取り除く。", "警官に捕まって、職務質問を受ける。ちょっと言えない理由で、急いでいるんですけど。黒の領域にインガを一つ配置する。", "自分の格好や言動が浮いていたらしい、自分を噂するひそひそ話が聞こえてきてしまう。「恥辱」の変調を受けるか、【食料】以外のアイテムを1つ破壊する。", "乗りたかった電車やバスに乗り遅れる。仕方ないから、走るか。移動判定を行う。失敗すると、「堕落」の変調を受け、もう一度「試練表」を使用する。"]}), "PRCT": $hash2(["name", "type", "table"], {"name": "挑戦テーマ表【武勇】", "type": "1D6", "table": ["腕相撲", "喧嘩", "度胸試し", "レスリング", "狩り", "武勇伝自慢"]}), "TCCT": $hash2(["name", "type", "table"], {"name": "挑戦テーマ表【技術】", "type": "1D6", "table": ["織物", "戦車レース", "マラソン", "アクションゲーム", "射的", "資格自慢"]}), "INCT": $hash2(["name", "type", "table"], {"name": "挑戦テーマ表【頭脳】", "type": "1D6", "table": ["パズル", "謎かけ", "チェス", "筆記試験", "禅問答", "学歴自慢"]}), "PSCT": $hash2(["name", "type", "table"], {"name": "挑戦テーマ表【霊力】", "type": "1D6", "table": ["詩作", "動物を手なずける", "北風と太陽", "絵画", "演奏", "のど自慢"]}), "LVCT": $hash2(["name", "type", "table"], {"name": "挑戦テーマ表【愛】", "type": "1D6", "table": ["ナンパ勝負", "誰かからより愛される", "美人コンテスト", "ティッシュ配り", "借り物競争", "恋愛自慢"]}), "DACT": $hash2(["name", "type", "table"], {"name": "挑戦テーマ表【日常】", "type": "1D6", "table": ["料理", "大食い", "呑み比べ", "倹約生活", "サバイバル", "リア充自慢"]})}).$freeze()); - return self.$setPrefixes($rb_plus(["R[A-DS].*"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/AnimaAnimus.js b/src/assets/dicebot/AnimaAnimus.js deleted file mode 100644 index ca2b252a9..000000000 --- a/src/assets/dicebot/AnimaAnimus.js +++ /dev/null @@ -1,518 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$freeze', '$match', '$raise', '$to_i', '$[]', '$roll', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Table'); - - var $nesting = [self].concat($parent_nesting), $Table_initialize$1, $Table_roll$2; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $Table_initialize$1 = function $$initialize(name, type, items) { - var self = this, m = nil; - - - self.name = name; - self.items = items.$freeze(); - m = /(\d+)D(\d+)/i.$match(type); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "Unexpected table type: " + (type)) - }; - self.times = m['$[]'](1).$to_i(); - return (self.sides = m['$[]'](2).$to_i()); - }, $Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $Table_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, value = nil, index = nil; - - - $b = bcdice.$roll(self.times, self.sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(value, self.times); - return "" + (self.name) + "(" + (value) + ") > " + (self.items['$[]'](index)); - }, $Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/range_table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$new', '$alias_method', '$freeze', '$lambda', '$name', '$sum', '$content', '$attr_reader', '$match', '$raise', '$to_i', '$[]', '$store', '$find', '$include?', '$range', '$roll', '$map', '$split', '$to_proc', '$fetch', '$formatted=', '$-', '$private', '$coerce_to_int_range', '$sort_by', '$min', '$assert_min_sum_is_covered', '$assert_max_sum_is_covered', '$assert_no_gap_or_overlap_in_ranges', '$===', '$is_a?', '$begin', '$end', '$class', '$first', '$*', '$last', '$each_cons', '$max', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RangeTable'); - - var $nesting = [self].concat($parent_nesting), $RangeTable$1, $RangeTable$2, $RangeTable_initialize$3, $RangeTable_fetch$4, $RangeTable_roll$6, $RangeTable_store$7, $RangeTable_coerce_to_int_range$11, $RangeTable_assert_min_sum_is_covered$12, $RangeTable_assert_max_sum_is_covered$13, $RangeTable_assert_no_gap_or_overlap_in_ranges$14; - - self.$$prototype.name = self.$$prototype.items = self.$$prototype.num_of_dice = self.$$prototype.num_of_sides = self.$$prototype.formatter = nil; - - Opal.const_set($nesting[0], 'RollResult', $send($$($nesting, 'Struct'), 'new', ["sum", "values", "content", "formatted"], ($RangeTable$1 = function(){var self = $RangeTable$1.$$s || this; - - return self.$alias_method("to_s", "formatted")}, $RangeTable$1.$$s = self, $RangeTable$1.$$arity = 0, $RangeTable$1))); - Opal.const_set($nesting[0], 'Item', $$($nesting, 'Struct').$new("range", "content")); - Opal.const_set($nesting[0], 'DICE_ROLL_METHOD_RE', /^(\d+)D(\d+)$/i.$freeze()); - Opal.const_set($nesting[0], 'DEFAULT_FORMATTER', $send(self, 'lambda', [], ($RangeTable$2 = function(table, result){var self = $RangeTable$2.$$s || this; - - - - if (table == null) { - table = nil; - }; - - if (result == null) { - result = nil; - }; - return "" + (table.$name()) + "(" + (result.$sum()) + ") > " + (result.$content());}, $RangeTable$2.$$s = self, $RangeTable$2.$$arity = 2, $RangeTable$2))); - self.$attr_reader("name"); - self.$attr_reader("num_of_dice"); - self.$attr_reader("num_of_sides"); - - Opal.def(self, '$initialize', $RangeTable_initialize$3 = function $$initialize(name, dice_roll_method, items) { - var $iter = $RangeTable_initialize$3.$$p, formatter = $iter || nil, $a, self = this, m = nil; - - if ($iter) $RangeTable_initialize$3.$$p = null; - - - if ($iter) $RangeTable_initialize$3.$$p = null;; - self.name = name.$freeze(); - self.formatter = ($truthy($a = formatter) ? $a : $$($nesting, 'DEFAULT_FORMATTER')); - m = $$($nesting, 'DICE_ROLL_METHOD_RE').$match(dice_roll_method); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + (self.name) + ": invalid dice roll method: " + (dice_roll_method)) - }; - self.num_of_dice = m['$[]'](1).$to_i(); - self.num_of_sides = m['$[]'](2).$to_i(); - return self.$store(items); - }, $RangeTable_initialize$3.$$arity = 3); - - Opal.def(self, '$fetch', $RangeTable_fetch$4 = function $$fetch(value) { - var $$5, self = this, item = nil; - - - item = $send(self.items, 'find', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$range()['$include?'](value);}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - if ($truthy(item)) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": value is out of range: " + (value)) - }; - return item; - }, $RangeTable_fetch$4.$$arity = 1); - - Opal.def(self, '$roll', $RangeTable_roll$6 = function $$roll(bcdice) { - var $a, $b, self = this, sum = nil, values_str = nil, values = nil, result = nil, $writer = nil; - - - $b = bcdice.$roll(self.num_of_dice, self.num_of_sides), $a = Opal.to_ary($b), (sum = ($a[0] == null ? nil : $a[0])), (values_str = ($a[1] == null ? nil : $a[1])), $b; - values = $send(values_str.$split(","), 'map', [], "to_i".$to_proc()); - result = $$($nesting, 'RollResult').$new(sum, values, self.$fetch(sum).$content()); - - $writer = [self.formatter['$[]'](self, result)]; - $send(result, 'formatted=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return result; - }, $RangeTable_roll$6.$$arity = 1); - self.$private(); - - Opal.def(self, '$store', $RangeTable_store$7 = function $$store(items) { - var $$8, $$9, $$10, self = this, items_with_range = nil, sorted_items = nil; - - - items_with_range = $send(items, 'map', [], ($$8 = function(r, c){var self = $$8.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (c == null) { - c = nil; - }; - return [self.$coerce_to_int_range(r), c];}, $$8.$$s = self, $$8.$$arity = 2, $$8)); - sorted_items = $send(items_with_range, 'sort_by', [], ($$9 = function(r, _){var self = $$9.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (_ == null) { - _ = nil; - }; - return r.$min();}, $$9.$$s = self, $$9.$$arity = 2, $$9)); - self.$assert_min_sum_is_covered(sorted_items); - self.$assert_max_sum_is_covered(sorted_items); - self.$assert_no_gap_or_overlap_in_ranges(sorted_items); - self.items = $send(sorted_items, 'map', [], ($$10 = function(range, content){var self = $$10.$$s || this; - - - - if (range == null) { - range = nil; - }; - - if (content == null) { - content = nil; - }; - return $$($nesting, 'Item').$new(range, content.$freeze()).$freeze();}, $$10.$$s = self, $$10.$$arity = 2, $$10)).$freeze(); - return self; - }, $RangeTable_store$7.$$arity = 1); - - Opal.def(self, '$coerce_to_int_range', $RangeTable_coerce_to_int_range$11 = function $$coerce_to_int_range(x) { - var $a, self = this, $case = nil; - - - $case = x; - if ($$($nesting, 'Integer')['$===']($case)) {return $$($nesting, 'Range').$new(x, x)} - else if ($$($nesting, 'Range')['$===']($case)) {if ($truthy(($truthy($a = x.$begin()['$is_a?']($$($nesting, 'Integer'))) ? x.$end()['$is_a?']($$($nesting, 'Integer')) : $a))) { - return x}}; - return self.$raise($$($nesting, 'TypeError'), "" + (self.name) + ": " + (x) + " (" + (x.$class()) + ") must be an Integer or a Range with Integers "); - }, $RangeTable_coerce_to_int_range$11.$$arity = 1); - - Opal.def(self, '$assert_min_sum_is_covered', $RangeTable_assert_min_sum_is_covered$12 = function $$assert_min_sum_is_covered(sorted_items) { - var self = this, min_sum = nil, range = nil; - - - min_sum = self.num_of_dice; - range = sorted_items.$first()['$[]'](0); - if ($truthy(range['$include?'](min_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": min value (" + (min_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_min_sum_is_covered$12.$$arity = 1); - - Opal.def(self, '$assert_max_sum_is_covered', $RangeTable_assert_max_sum_is_covered$13 = function $$assert_max_sum_is_covered(sorted_items) { - var self = this, max_sum = nil, range = nil; - - - max_sum = $rb_times(self.num_of_dice, self.num_of_sides); - range = sorted_items.$last()['$[]'](0); - if ($truthy(range['$include?'](max_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": max value (" + (max_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_max_sum_is_covered$13.$$arity = 1); - return (Opal.def(self, '$assert_no_gap_or_overlap_in_ranges', $RangeTable_assert_no_gap_or_overlap_in_ranges$14 = function $$assert_no_gap_or_overlap_in_ranges(sorted_items) { - var $$15, self = this; - - - $send(sorted_items, 'each_cons', [2], ($$15 = function(i1, i2){var self = $$15.$$s || this, r1 = nil, r2 = nil, max1 = nil, next_of_max1 = nil; - if (self.name == null) self.name = nil; - - - - if (i1 == null) { - i1 = nil; - }; - - if (i2 == null) { - i2 = nil; - }; - r1 = i1['$[]'](0); - r2 = i2['$[]'](0); - max1 = r1.$max(); - next_of_max1 = $rb_plus(max1, 1); - if ($truthy(r2['$include?'](max1))) { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range overlap: " + (r1) + " and " + (r2))}; - if ($truthy(r2['$include?'](next_of_max1))) { - return nil - } else { - return self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range gap: " + (r1) + " and " + (r2)) - };}, $$15.$$s = self, $$15.$$arity = 2, $$15)); - return self; - }, $RangeTable_assert_no_gap_or_overlap_in_ranges$14.$$arity = 1), nil) && 'assert_no_gap_or_overlap_in_ranges'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2, $range = Opal.range; - - Opal.add_stubs(['$require', '$===', '$check_action', '$last_match', '$roll_tables', '$new', '$eval', '$[]', '$debug', '$roll', '$map', '$split', '$to_proc', '$count', '$<=', '$include?', '$+', '$>', '$freeze', '$setPrefixes', '$keys']); - - self.$require("utils/table.rb"); - self.$require("utils/range_table"); - self.$require("utils/ArithmeticEvaluator"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'AnimaAnimus'); - - var $nesting = [self].concat($parent_nesting), $AnimaAnimus_initialize$1, $AnimaAnimus_rollDiceCommand$2, $AnimaAnimus_check_action$3; - - - Opal.const_set($nesting[0], 'ID', "AnimaAnimus"); - Opal.const_set($nesting[0], 'NAME', "アニマアニムス"); - Opal.const_set($nesting[0], 'SORT_KEY', "あにまあにむす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・行為判定(xAN<=y±z)\n" + " 十面ダイスをx個振って判定します。達成値が算出されます(クリティカル発生時は2増加)。\n" + " x:振るダイスの数。魂魄値や攻撃値。\n" + " y:成功値。\n" + " z:成功値への補正。省略可能。\n" + " (例) 2AN<=3+1 5AN<=7\n" + "・各種表\n" + " 情報収集表 IGT/喪失表 LT\n"); - - Opal.def(self, '$initialize', $AnimaAnimus_initialize$1 = function $$initialize() { - var $iter = $AnimaAnimus_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $AnimaAnimus_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $AnimaAnimus_initialize$1, false), $zuper, $iter); - return (self.sendMode = 2); - }, $AnimaAnimus_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $AnimaAnimus_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if (/(\d+)AN<=(\d+([\+\-]\d+)*)/i['$===']($case)) {return self.$check_action($$($nesting, 'Regexp').$last_match())} - else {return self.$roll_tables(command, $$($nesting, 'TABLES'))}})() - }, $AnimaAnimus_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$check_action', $AnimaAnimus_check_action$3 = function $$check_action(match_data) { - var $a, $b, $$4, self = this, a = nil, dice_cnt = nil, target = nil, _ = nil, dice_str = nil, dice_arr = nil, suc_cnt = nil, has_critical = nil, result = nil; - - - a = $$($nesting, 'ArithmeticEvaluator').$new(); - dice_cnt = a.$eval(match_data['$[]'](1)); - target = a.$eval(match_data['$[]'](2)); - self.$debug("dice_cnt", dice_cnt); - self.$debug("target", target); - $b = self.$roll(dice_cnt, 10), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - dice_arr = $send(dice_str.$split(","), 'map', [], "to_i".$to_proc()); - suc_cnt = $send(dice_arr, 'count', [], ($$4 = function(x){var self = $$4.$$s || this; - - - - if (x == null) { - x = nil; - }; - return $rb_le(x, target);}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - has_critical = dice_arr['$include?'](1); - result = (function() {if ($truthy(has_critical)) { - return $rb_plus(suc_cnt, 2) - } else { - return suc_cnt - }; return nil; })(); - return "" + "(" + (dice_cnt) + "B10<=" + (target) + ") > " + (dice_str) + " > " + ((function() {if ($truthy($rb_gt(result, 0))) { - return "成功" - } else { - return "失敗" - }; return nil; })()) + "(達成値:" + (result) + ")" + ((function() {if ($truthy(has_critical)) { - return " (クリティカル発生)" - } else { - return "" - }; return nil; })()); - }, $AnimaAnimus_check_action$3.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["IGT", "LT"], {"IGT": $$($nesting, 'Table').$new("情報収集表", "1d10", ["ストリートファイト/<格闘>/「俺に勝てたら教えてやるよ」情報を知る魂願者から勝負を挑まれた。生き延びるためにもこの勝負、負けるわけにはいかない。", "追跡!/<追跡/逃走>/有益な情報を持っている人間を見つけたが、こちらの顔を見るなり逃げ出した。どうにかして捕まえなくてはならない。", "脅し/<威圧>/ならず者たちが集まるバーにやってきた。裏社会に生きる彼らを脅せば有益な情報が手に入るはずだ。", "インターネット/<コンピュータ>/SNSやニュースなど、インターネット上の情報を調査する。デマには騙されないようにしなくては。", "瀕死の情報提供者/<医学>/情報を知る人物がいると聞いてやってきたら、その人物が瀕死の重傷を負っていた。なんとかして蘇生させなくては。", "潜入捜査/<隠密>/敵対する魂願者たちのグループに潜り込んでの調査活動。リスクは高いが、有益な情報が手に入る確率は高い。", "情報交換/<交渉>/友好的な関係にある魂願者との情報交換。うまく話を聞き出すことができるとよいが。", "魔宴の情報屋/<調達>/魔宴の情報屋に接触して情報を聞き出すことにした。一筋縄ではいかない相手らしいが、はたして……?", "違法調査/<犯罪>/法に触れるやり方で情報を集めることにした。ハッキング、窃盗、恐喝、どんな手段を選ぼうか。", "聞き込み/<自我>/街ゆく人びとに聞き込みを行なう。地道な活動こそが目標にたどり着くための最短の方法だ。"]), "LT": $$($nesting, 'RangeTable').$new("喪失表", "1d10", [[$range(1, 2, false), "存在/存在が希薄になり、知り合いや友人に自分の存在を忘れられてしまう。いずれ大切なパートナーの記憶からも消え、この世界でひとりぼっちになる。\nあなたの出自を消去すること。"], [$range(3, 4, false), "記憶/自分の大切な記憶をひとつ失なう。これからは力を使うたびに記憶をひとつ失なうことになり、最後には大切なパートナーのことも思い出せなくなってしまう。\nあなたのメモリアをひとつ選択して消去すること。シナリオメモリアは選択できない。"], [$range(5, 6, false), "容姿/だんだんと以前とはかけ離れた姿に変わっていく。いずれ誰も自分のことを自分だと気づかなくなるのだろう。\nあなたの特徴的な外見を失なう。内容をふさわしいものに書き換えること(特徴的な外見が美しい髪であれば醜い髪など)。"], [$range(7, 8, false), "感情/喜怒哀楽の感情のうち、いずれかひとつを失なう。力を使うたびに他の感情も失っていき、最後にはただ生き残るために戦う機械となる。\nポジティブかネガティブのどちらかを選択する。選択した感情をすべてのメモリアから消去する。消去した結果、表出感情がなくなってしまった場合、残った感情を表出感情にすること。なお、新しくメモリアを取得した場合も、選んだ感情を得ることはできない。"], [$range(9, 10, false), "五感/少しずつ五感が鈍くなる。今までできていたはずのことができなくなってしまう。\nあなたの特技をひとつ選択する。選択した特技に×をつけること。×が付いた技能で判定を行なうことはできず、判定を求められた場合は自動的に失敗となる。"]])}).$freeze()); - return self.$setPrefixes($rb_plus(["\\d+AN<=\\d([\\+\\-]\\d+)*"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Arianrhod.js b/src/assets/dicebot/Arianrhod.js deleted file mode 100644 index 73e00cb36..000000000 --- a/src/assets/dicebot/Arianrhod.js +++ /dev/null @@ -1,58 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$count', '$==', '$size', '$>=', '$!=']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Arianrhod'); - - var $nesting = [self].concat($parent_nesting), $Arianrhod_initialize$1, $Arianrhod_check_nD6$2; - - - Opal.const_set($nesting[0], 'ID', "Arianrhod"); - Opal.const_set($nesting[0], 'NAME', "アリアンロッドRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "ありあんろつとRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・クリティカル、ファンブルの自動判定を行います。(クリティカル時の追加ダメージも表示されます)\n" + "・D66ダイスあり\n"); - - Opal.def(self, '$initialize', $Arianrhod_initialize$1 = function $$initialize() { - var $iter = $Arianrhod_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Arianrhod_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Arianrhod_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 1); - }, $Arianrhod_initialize$1.$$arity = 0); - - Opal.def(self, '$check_nD6', $Arianrhod_check_nD6$2 = function $$check_nD6(total, _dice_total, dice_list, cmp_op, target) { - var $a, self = this, n_max = nil; - - - n_max = dice_list.$count(6); - if (dice_list.$count(1)['$=='](dice_list.$size())) { - return " > ファンブル" - } else if ($truthy($rb_ge(n_max, 2))) { - if ($truthy($rb_ge(n_max, 2))) { - return "" + " > クリティカル(+" + (n_max) + "D6)" - } else { - return nil - } - } else if ($truthy(($truthy($a = cmp_op['$!='](">=")) ? $a : target['$==']("?")))) { - return "" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $Arianrhod_check_nD6$2.$$arity = 5); - return Opal.alias(self, "check_2D6", "check_nD6"); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/ArsMagica.js b/src/assets/dicebot/ArsMagica.js deleted file mode 100644 index fbd0c0b8c..000000000 --- a/src/assets/dicebot/ArsMagica.js +++ /dev/null @@ -1,218 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/normalize"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; - - Opal.add_stubs(['$module_function', '$===', '$==', '$to_i']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Normalize'); - - var $nesting = [self].concat($parent_nesting), $Normalize_comparison_operator$1, $Normalize_target_number$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Normalize_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if (/<=|==|=>/['$===']($case)) {return ">="} - else if (/<>|!=|=!/['$===']($case)) {return "!="} - else if (//['$===']($case)) {return ">"} - else if (/\=/['$===']($case)) {return "=="} - else { return nil }})() - }, $Normalize_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$target_number', $Normalize_target_number$2 = function $$target_number(val) { - var self = this; - - if (val['$==']("?")) { - return val - } else { - return val.$to_i() - } - }, $Normalize_target_number$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$setPrefixes', '$=~', '$gsub', '$last_match', '$arsmagica_stress', '$match', '$[]', '$to_i', '$comparison_operator', '$empty?', '$parren_killer', '$rand', '$==', '$times', '$+', '$push', '$!=', '$sortType', '$sort', '$join', '$>', '$<', '$*', '$sub', '$to_s', '$sendMode', '$>=']); - - self.$require("utils/normalize"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArsMagica'); - - var $nesting = [self].concat($parent_nesting), $ArsMagica_initialize$1, $ArsMagica_changeText$2, $ArsMagica_dice_command_xRn$7, $ArsMagica_arsmagica_stress$8; - - - Opal.const_set($nesting[0], 'ID', "ArsMagica"); - Opal.const_set($nesting[0], 'NAME', "アルスマギカ"); - Opal.const_set($nesting[0], 'SORT_KEY', "あるすまきか"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・ストレスダイス (ArSx+y)\n" + " \"ArS(ボッチダイス)+(修正)\"です。判定にも使えます。Rコマンド(1R10+y[m])に読替をします。\n" + " ボッチダイスと修正は省略可能です。(ボッチダイスを省略すると1として扱います)\n" + " botchダイスの0の数が2以上の時は、数えて表示します。\n" + " (注意!) botchの判断が発生したときには、そのダイスを含めてロールした全てのダイスを[]の中に並べて表示します。\n" + " 例) (1R10[5]) > 0[0,1,8,0,8,1] > Botch!\n" + "  最初の0が判断基準で、その右側5つがボッチダイスです。1*2,8*2,0*1なので1botchという訳です。\n"); - self.$setPrefixes(["ArS"]); - - Opal.def(self, '$initialize', $ArsMagica_initialize$1 = function $$initialize() { - var $iter = $ArsMagica_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $ArsMagica_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $ArsMagica_initialize$1, false), $zuper, $iter); - return (self.sendMode = 2); - }, $ArsMagica_initialize$1.$$arity = 0); - - Opal.def(self, '$changeText', $ArsMagica_changeText$2 = function $$changeText(string) { - var $$3, $$4, $$5, $$6, self = this; - - - if ($truthy(/ArS/i['$=~'](string))) { - } else { - return string - }; - string = $send(string, 'gsub', [/ArS(\d+)([^\d\s][\+\-\d]+)/i], ($$3 = function(){var self = $$3.$$s || this; - - return "" + "1R10" + ($$($nesting, 'Regexp').$last_match(2)) + "[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - string = $send(string, 'gsub', [/ArS([^\d\s][\+\-\d]+)/i], ($$4 = function(){var self = $$4.$$s || this; - - return "" + "1R10" + ($$($nesting, 'Regexp').$last_match(1))}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - string = $send(string, 'gsub', [/ArS(\d+)/i], ($$5 = function(){var self = $$5.$$s || this; - - return "" + "1R10[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$5.$$s = self, $$5.$$arity = 0, $$5)); - string = $send(string, 'gsub', [/ArS/i], ($$6 = function(){var self = $$6.$$s || this; - - return "1R10"}, $$6.$$s = self, $$6.$$arity = 0, $$6)); - return string; - }, $ArsMagica_changeText$2.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $ArsMagica_dice_command_xRn$7 = function $$dice_command_xRn(string, nick_e) { - var self = this; - - return self.$arsmagica_stress(string, nick_e) - }, $ArsMagica_dice_command_xRn$7.$$arity = 2); - return (Opal.def(self, '$arsmagica_stress', $ArsMagica_arsmagica_stress$8 = function $$arsmagica_stress(string, _nick_e) { - var $$9, $a, self = this, m = nil, diff = nil, botch = nil, bonus = nil, crit_mul = nil, total = nil, cmp_op = nil, bonusText = nil, die = nil, output = nil, count0 = nil, dice_n = nil, crit_dice = nil; - - - if ($truthy((m = /(^|\s)S?(1[rR]10([\+\-\d]*)(\[(\d+)\])?(([>=]+)(\d+))?)(\s|$)/i.$match(string)))) { - } else { - return "1" - }; - diff = 0; - botch = 1; - bonus = 0; - crit_mul = 1; - total = 0; - cmp_op = nil; - bonusText = m['$[]'](3); - if ($truthy(m['$[]'](4))) { - botch = m['$[]'](5).$to_i()}; - if ($truthy(m['$[]'](6))) { - - cmp_op = $$($nesting, 'Normalize').$comparison_operator(m['$[]'](7)); - diff = m['$[]'](8).$to_i();}; - if ($truthy(bonusText['$empty?']())) { - } else { - bonus = self.$parren_killer("" + "(0" + (bonusText) + ")").$to_i() - }; - die = self.$rand(10); - output = "" + "(" + (m['$[]'](2)) + ") > "; - if (die['$=='](0)) { - - count0 = 0; - dice_n = []; - $send(botch, 'times', [], ($$9 = function(_i){var self = $$9.$$s || this, botch_die = nil; - - - - if (_i == null) { - _i = nil; - }; - botch_die = self.$rand(10); - if (botch_die['$=='](0)) { - count0 = $rb_plus(count0, 1)}; - return dice_n.$push(botch_die);}, $$9.$$s = self, $$9.$$arity = 1, $$9)); - if ($truthy(self.$sortType()['$!='](0))) { - dice_n = dice_n.$sort()}; - output = $rb_plus(output, "" + "0[" + (die) + "," + (dice_n.$join(",")) + "]"); - if ($truthy(count0['$!='](0))) { - - bonus = 0; - if ($truthy($rb_gt(count0, 1))) { - output = $rb_plus(output, "" + " > " + (count0) + "Botch!") - } else { - output = $rb_plus(output, " > Botch!") - }; - cmp_op = nil; - } else { - - if ($truthy($rb_gt(bonus, 0))) { - output = $rb_plus(output, "" + "+" + (bonus) + " > " + (bonus)) - } else if ($truthy($rb_lt(bonus, 0))) { - output = $rb_plus(output, "" + (bonus) + " > " + (bonus)) - } else { - output = $rb_plus(output, " > 0") - }; - total = bonus; - }; - } else if (die['$=='](1)) { - - crit_dice = ""; - while (die['$=='](1)) { - - crit_mul = $rb_times(crit_mul, 2); - die = $rb_plus(self.$rand(10), 1); - crit_dice = $rb_plus(crit_dice, "" + (die) + ","); - }; - total = $rb_times(die, crit_mul); - crit_dice = crit_dice.$sub(/,$/, ""); - output = $rb_plus(output, total.$to_s()); - if ($truthy(self.$sendMode()['$!='](0))) { - output = $rb_plus(output, "" + "[1," + (crit_dice) + "]")}; - total = $rb_plus(total, bonus); - if ($truthy($rb_gt(bonus, 0))) { - output = $rb_plus(output, "" + "+" + (bonus) + " > " + (total)) - } else if ($truthy($rb_lt(bonus, 0))) { - output = $rb_plus(output, "" + (bonus) + " > " + (total))}; - } else { - - total = $rb_plus(die, bonus); - if ($truthy($rb_gt(bonus, 0))) { - output = $rb_plus(output, "" + (die) + "+" + (bonus) + " > " + (total)) - } else if ($truthy($rb_lt(bonus, 0))) { - output = $rb_plus(output, "" + (die) + (bonus) + " > " + (total)) - } else { - output = $rb_plus(output, total.$to_s()) - }; - }; - if (cmp_op['$=='](">=")) { - output = $rb_plus(output, (function() {if ($truthy($rb_ge(total, diff))) { - return " > 成功" - } else { - return " > 失敗" - }; return nil; })())}; - return "" + ": " + (output); - }, $ArsMagica_arsmagica_stress$8.$$arity = 2), nil) && 'arsmagica_stress'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Avandner.js b/src/assets/dicebot/Avandner.js deleted file mode 100644 index 404337ce6..000000000 --- a/src/assets/dicebot/Avandner.js +++ /dev/null @@ -1,121 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$===', '$to_i', '$last_match', '$>', '$checkRoll', '$roll', '$collect', '$split', '$count', '$<=', '$+', '$empty?', '$!=', '$*']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Avandner'); - - var $nesting = [self].concat($parent_nesting), $Avandner_initialize$1, $Avandner_rollDiceCommand$2, $Avandner_checkRoll$3; - - self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "Avandner"); - Opal.const_set($nesting[0], 'NAME', "黒絢のアヴァンドナー"); - Opal.const_set($nesting[0], 'SORT_KEY', "こつけんのあうあんとなあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・調査判定:nAVm[Cx]\n" + "・命中判定:nAVm*p[+t][Cx]\n" + "[]内は省略可能。\n" + "\n" + "クリティカルヒットの分だけ、自動で振り足し処理を行います。0\n" + "「n」でダイス数を指定。\n" + "「m」で目標値を指定。省略は出来ません。\n" + "「Cx」でクリティカル値を指定。省略時は「1」、最大値は「2」、「0」でクリティカル無し。\n" + "「p」で攻撃力を指定。「*」は「x」でも可。\n" + "「+t」でクリティカルトリガーを指定。省略可能です。\n" + "攻撃力指定で命中判定となり、成功数ではなく、ダメージを結果表示します。\n" + "\n" + "【書式例】\n" + "・5AV3 → 5d10で目標値3。\n" + "・6AV2C0 → 6d10で目標値2。クリティカル無し。\n" + "・4AV3*5 → 4d10で目標値3、攻撃力5の命中判定。\n" + "・7AV2x10 → 7d10で目標値2、攻撃力10の命中判定。\n" + "・8av4*7+10 → 8d10で目標値4、攻撃力7、クリティカルトリガー10の命中判定。\n"); - self.$setPrefixes(["\\d+AV\\d+((x|\\*)\\d+(\\+\\d+)?)?(c\\d+)?"]); - - Opal.def(self, '$initialize', $Avandner_initialize$1 = function $$initialize() { - var $iter = $Avandner_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Avandner_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Avandner_initialize$1, false), $zuper, $iter); - return (self.sortType = 1); - }, $Avandner_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Avandner_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, self = this, diceCount = nil, target = nil, damage = nil, criticalTrigger = nil, criticalNumber = nil; - - - if ($truthy(/(\d+)AV(\d+)((x|\*)(\d+))?(\+(\d+))?(C(\d+))?$/i['$==='](command))) { - - diceCount = $$($nesting, 'Regexp').$last_match(1).$to_i(); - target = $$($nesting, 'Regexp').$last_match(2).$to_i(); - damage = ($truthy($a = $$($nesting, 'Regexp').$last_match(5)) ? $a : 0).$to_i(); - criticalTrigger = ($truthy($a = $$($nesting, 'Regexp').$last_match(7)) ? $a : 0).$to_i(); - criticalNumber = ($truthy($a = $$($nesting, 'Regexp').$last_match(9)) ? $a : 1).$to_i(); - if ($truthy($rb_gt(criticalNumber, 3))) { - criticalNumber = 2}; - return self.$checkRoll(diceCount, target, damage, criticalTrigger, criticalNumber);}; - return nil; - }, $Avandner_rollDiceCommand$2.$$arity = 1); - return (Opal.def(self, '$checkRoll', $Avandner_checkRoll$3 = function $$checkRoll(diceCount, target, damage, criticalTrigger, criticalNumber) { - var $a, $b, $c, $$4, $$5, $$6, self = this, totalSuccessCount = nil, totalCriticalCount = nil, text = nil, rollCount = nil, _dice = nil, diceText = nil, diceArray = nil, successCount = nil, criticalCount = nil, result = nil, isDamage = nil, totalDamage = nil; - - - totalSuccessCount = 0; - totalCriticalCount = 0; - text = ""; - rollCount = diceCount; - while ($truthy($rb_gt(rollCount, 0))) { - - $c = self.$roll(rollCount, 10, self.sortType), $b = Opal.to_ary($c), (_dice = ($b[0] == null ? nil : $b[0])), (diceText = ($b[1] == null ? nil : $b[1])), $c; - diceArray = $send(diceText.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - successCount = $send(diceArray, 'count', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - return $rb_le(i, target);}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - criticalCount = $send(diceArray, 'count', [], ($$6 = function(i){var self = $$6.$$s || this; - - - - if (i == null) { - i = nil; - }; - return $rb_le(i, criticalNumber);}, $$6.$$s = self, $$6.$$arity = 1, $$6)); - totalSuccessCount = $rb_plus(totalSuccessCount, successCount); - totalCriticalCount = $rb_plus(totalCriticalCount, criticalCount); - if ($truthy(text['$empty?']())) { - } else { - text = $rb_plus(text, "+") - }; - text = $rb_plus(text, "" + (successCount) + "[" + (diceText) + "]"); - rollCount = criticalCount; - }; - result = ""; - isDamage = damage['$!='](0); - if ($truthy(isDamage)) { - - totalDamage = $rb_plus($rb_times(totalSuccessCount, damage), $rb_times(totalCriticalCount, criticalTrigger)); - result = $rb_plus(result, "" + "(" + (diceCount) + "D10<=" + (target) + ") > " + (text) + " > Hits:" + (totalSuccessCount) + "*" + (damage)); - if ($truthy($rb_gt(criticalTrigger, 0))) { - result = $rb_plus(result, "" + " + Trigger:" + (totalCriticalCount) + "*" + (criticalTrigger))}; - result = $rb_plus(result, "" + " > " + (totalDamage) + "ダメージ"); - } else { - result = $rb_plus(result, "" + "(" + (diceCount) + "D10<=" + (target) + ") > " + (text) + " > 成功数:" + (totalSuccessCount)) - }; - if ($truthy($rb_gt(totalCriticalCount, 0))) { - result = $rb_plus(result, "" + " / " + (totalCriticalCount) + "クリティカル")}; - return result; - }, $Avandner_checkRoll$3.$$arity = 5), nil) && 'checkRoll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/BBN.js b/src/assets/dicebot/BBN.js deleted file mode 100644 index f4d97fff6..000000000 --- a/src/assets/dicebot/BBN.js +++ /dev/null @@ -1,130 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$freeze', '$parse', '$roll', '$sort', '$map', '$split', '$to_proc', '$+', '$critical?', '$push', '$additional_roll', '$count', '$fumble?', '$>=', '$join', '$private', '$match', '$to_i', '$[]', '$critical_base', '$===', '$ceil', '$/', '$to_f', '$>', '$<']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BBN'); - - var $nesting = [self].concat($parent_nesting), $BBN_rollDiceCommand$1, $BBN_parse$2, $BBN_critical_base$3, $BBN_critical$ques$4, $BBN_fumble$ques$5, $BBN_additional_roll$6; - - self.$$prototype.roll_times = self.$$prototype.modify = self.$$prototype.modify_str = self.$$prototype.difficulty = self.$$prototype.critical = self.$$prototype.fumble = nil; - - self.$setPrefixes(["\\d+BN.*"]); - Opal.const_set($nesting[0], 'ID', "BBN".$freeze()); - Opal.const_set($nesting[0], 'NAME', "BBNTRPG".$freeze()); - Opal.const_set($nesting[0], 'SORT_KEY', "ひいひいえぬTRPG".$freeze()); - Opal.const_set($nesting[0], 'HELP_MESSAGE', ((((((((((("" + "・判定(xBN±y>=z[c,f])\n") + " xD6の判定。クリティカル、ファンブルの自動判定を行います。\n") + " 1Dのクリティカル値とファンブル値は1。2Dのクリティカル値とファンブル値は2。\n") + " nDのクリティカル値とファンブル値は n/2 の切り上げ。\n") + " クリティカルとファンブルが同時に発生した場合、クリティカルを優先。\n") + " x:xに振るダイス数を入力。\n") + " y:yに修正値を入力。省略可能。\n") + " z:zに目標値を入力。省略可能。\n") + " c:クリティカルに必要なダイス目「6」の数の増減。省略可能。\n") + " f:ファンブルに必要なダイス目「1」の数の増減。省略可能。\n") + " 例) 3BN+4 3BN>=8 3BN+1>=10[-1] 3BN+1>=10[,1] 3BN+1>=10[1,1]\n").$freeze()); - - Opal.def(self, '$rollDiceCommand', $BBN_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $b, self = this, dice = nil, dice_str = nil, dice_list = nil, total = nil, sequence = nil; - - - if ($truthy(self.$parse(command))) { - } else { - return nil - }; - $b = self.$roll(self.roll_times, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - dice_list = $send(dice_str.$split(","), 'map', [], "to_i".$to_proc()).$sort(); - total = $rb_plus(dice, self.modify); - sequence = ["" + "(" + (command) + ")", "" + (dice) + "[" + (dice_str) + "]" + (self.modify_str), total]; - if ($truthy(self['$critical?'](dice_list))) { - $send(sequence, 'push', ["クリティカル!"].concat(Opal.to_a(self.$additional_roll(dice_list.$count(6), total)))) - } else if ($truthy(self['$fumble?'](dice_list))) { - sequence.$push("ファンブル!") - } else if ($truthy(self.difficulty)) { - sequence.$push((function() {if ($truthy($rb_ge(total, self.difficulty))) { - return "成功" - } else { - return "失敗" - }; return nil; })())}; - return sequence.$join(" > "); - }, $BBN_rollDiceCommand$1.$$arity = 1); - self.$private(); - - Opal.def(self, '$parse', $BBN_parse$2 = function $$parse(command) { - var $a, self = this, m = nil, base = nil; - - - m = /^(\d+)BN([+-]\d+)?(>=(([+-]?\d+)))?(\[([+-]?\d+)?(,([+-]?\d+))?\])?/.$match(command); - if ($truthy(m)) { - } else { - return false - }; - self.roll_times = m['$[]'](1).$to_i(); - self.modify_str = ($truthy($a = m['$[]'](2)) ? $a : ""); - self.modify = m['$[]'](2).$to_i(); - self.difficulty = (function() {if ($truthy(m['$[]'](4))) { - return m['$[]'](4).$to_i() - } else { - return nil - }; return nil; })(); - base = self.$critical_base(self.roll_times); - self.critical = $rb_plus(base, m['$[]'](7).$to_i()); - self.fumble = $rb_plus(base, m['$[]'](9).$to_i()); - return true; - }, $BBN_parse$2.$$arity = 1); - - Opal.def(self, '$critical_base', $BBN_critical_base$3 = function $$critical_base(roll_times) { - var self = this, $case = nil; - - return (function() {$case = roll_times; - if ((1)['$===']($case) || (2)['$===']($case)) {return roll_times} - else {return $rb_divide(roll_times.$to_f(), 2).$ceil()}})() - }, $BBN_critical_base$3.$$arity = 1); - - Opal.def(self, '$critical?', $BBN_critical$ques$4 = function(dice_list) { - var self = this; - - return $rb_ge(dice_list.$count(6), self.critical) - }, $BBN_critical$ques$4.$$arity = 1); - - Opal.def(self, '$fumble?', $BBN_fumble$ques$5 = function(dice_list) { - var self = this; - - return $rb_ge(dice_list.$count(1), self.fumble) - }, $BBN_fumble$ques$5.$$arity = 1); - return (Opal.def(self, '$additional_roll', $BBN_additional_roll$6 = function $$additional_roll(additional_dice, total) { - var $a, $b, $c, self = this, sequence = nil, reroll_count = nil, dice_total = nil, dice_str = nil; - - - sequence = []; - reroll_count = 0; - while ($truthy(($truthy($b = $rb_gt(additional_dice, 0)) ? $rb_lt(reroll_count, 10) : $b))) { - - reroll_count = $rb_plus(reroll_count, 1); - $c = self.$roll(additional_dice, 6), $b = Opal.to_ary($c), (dice_total = ($b[0] == null ? nil : $b[0])), (dice_str = ($b[1] == null ? nil : $b[1])), $c; - additional_dice = $send(dice_str.$split(","), 'map', [], "to_i".$to_proc()).$count(6); - sequence.$push("" + (total) + "+" + (dice_total) + "[" + (dice_str) + "]"); - if ($truthy($rb_gt(additional_dice, 0))) { - sequence.$push("追加クリティカル!")}; - total = $rb_plus(total, dice_total); - }; - if ($truthy($rb_gt(additional_dice, 0))) { - sequence.$push("無限ループ防止のため中断")}; - sequence.$push(total); - if ($truthy(self.difficulty)) { - sequence.$push((function() {if ($truthy($rb_ge(total, self.difficulty))) { - return "成功" - } else { - return "失敗" - }; return nil; })())}; - return sequence; - }, $BBN_additional_roll$6.$$arity = 2), nil) && 'additional_roll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/BadLife.js b/src/assets/dicebot/BadLife.js deleted file mode 100644 index 7f47a7daf..000000000 --- a/src/assets/dicebot/BadLife.js +++ /dev/null @@ -1,227 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$upcase', '$judgeDice', '$nil?', '$===', '$last_match', '$get_name_table', '$get_skill_table', '$match', '$to_i', '$[]', '$==', '$-', '$+', '$get_value', '$get_critival_fumble', '$checkRoll', '$include?', '$roll', '$collect', '$split', '$each', '$>', '$<=', '$>=', '$!=', '$to_s', '$get_badlife_1d20_table_result', '$get_table_by_number', '$get_badlife_table_result', '$parren_killer']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BadLife'); - - var $nesting = [self].concat($parent_nesting), $BadLife_rollDiceCommand$1, $BadLife_judgeDice$2, $BadLife_get_critival_fumble$3, $BadLife_checkRoll$4, $BadLife_get_name_table$7, $BadLife_get_skill_table$8, $BadLife_get_badlife_1d20_table_result$9, $BadLife_get_badlife_table_result$10, $BadLife_get_value$11; - - - Opal.const_set($nesting[0], 'ID', "BadLife"); - Opal.const_set($nesting[0], 'NAME', "バッドライフ"); - Opal.const_set($nesting[0], 'SORT_KEY', "はつとらいふ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定:nBADm[±a][Cb±c][Fd±e][@X±f][!OP]  []内のコマンドは省略可。\n" + "・BADコマンドは「BL」コマンドで代用可。\n" + "・博徒は「GL」コマンドで〈波乱万丈〉の効果を適用。\n" + "\n" + "「n」で振るダイス数、「m」で特性値、「±a」で達成値への修正値、\n" + "「Cb±c」でクリティカル値への修正、「Fd±e」でファンブル値への修正、\n" + "「@X」で目標難易度を指定。\n" + "「±a」「Cb±c」「Fd±e」[@X±f]部分は「4+1-3」などの複数回指定可。\n" + "「!OP」部分で、一部のスキルやガジェットの追加効果を指定可。\n" + "使用可能なコマンドは以下の通り。順不同、複数同時使用も可。\n" + "A:〈先見の明〉  H:[重撃]\n" + "\n" + "【書式例】\n" + "BAD → 1ダイスで達成値を表示。\n" + "3BAD10+2-1 → 3ダイスで修正+11の達成値を表示。\n" + "BL8@15 → 1ダイスで修正+8、難易度15の判定。\n" + "2BL8C-1F1@15 → 2ダイスで修正+8、C値-1、F値+1、難易度15の判定。\n" + "GL6@20 → 1ダイスで修正+6、難易度20の判定。〈波乱万丈〉の効果。\n" + "GL6@20!HA → 上記に加えて〈先見の明〉[重撃]の効果。\n" + "\n" + "・コードネーム表\n" + "怪盗:TRN   闇医者:DRN  博徒:GRN\n" + "殺シ屋:KRN  業師:SRN   遊ビ人:BRN\n" + "\n" + "・スキル表:SKL\n"); - self.$setPrefixes(["\\d?(BAD|BL|GL).*", "[TDGKSB]RN", "SKL"]); - - Opal.def(self, '$rollDiceCommand', $BadLife_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, result = nil, output = nil, $case = nil, initials = nil; - - - command = command.$upcase(); - result = self.$judgeDice(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - output = (function() {$case = command; - if (/([TDGKSB])RN/i['$===']($case)) { - initials = $$($nesting, 'Regexp').$last_match(1); - return self.$get_name_table(initials);} - else if ("SKL"['$===']($case)) {return self.$get_skill_table()} - else { return nil }})(); - return output; - }, $BadLife_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$judgeDice', $BadLife_judgeDice$2 = function $$judgeDice(command) { - var $a, $b, self = this, m = nil, diceCount = nil, critical = nil, fumble = nil, isStormy = nil, modify = nil, target = nil, optionalText = nil; - - - if ($truthy((m = /(\d+)?(BAD|BL|GL)([-+\d]*)((C|F)([-+\d]*)?)?((C|F)([-+\d]*))?(\@([-+\d]*))?(\!(\D*))?/i.$match(command)))) { - } else { - return nil - }; - diceCount = ($truthy($a = m['$[]'](1)) ? $a : 1).$to_i(); - critical = 20; - fumble = 1; - isStormy = m['$[]'](2)['$==']("GL"); - if ($truthy(isStormy)) { - - critical = $rb_minus(critical, 3); - fumble = $rb_plus(fumble, 1);}; - modify = self.$get_value(m['$[]'](3)); - $b = self.$get_critival_fumble(critical, fumble, m['$[]'](5), m['$[]'](6)), $a = Opal.to_ary($b), (critical = ($a[0] == null ? nil : $a[0])), (fumble = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_critival_fumble(critical, fumble, m['$[]'](8), m['$[]'](9)), $a = Opal.to_ary($b), (critical = ($a[0] == null ? nil : $a[0])), (fumble = ($a[1] == null ? nil : $a[1])), $b; - target = self.$get_value(m['$[]'](11)); - optionalText = ($truthy($a = m['$[]'](13)) ? $a : ""); - return self.$checkRoll(diceCount, modify, critical, fumble, target, isStormy, optionalText); - }, $BadLife_judgeDice$2.$$arity = 1); - - Opal.def(self, '$get_critival_fumble', $BadLife_get_critival_fumble$3 = function $$get_critival_fumble(critical, fumble, marker, text) { - var self = this, $case = nil; - - - $case = marker; - if ("C"['$===']($case)) {critical = $rb_plus(critical, self.$get_value(text))} - else if ("F"['$===']($case)) {fumble = $rb_plus(fumble, self.$get_value(text))}; - return [critical, fumble]; - }, $BadLife_get_critival_fumble$3.$$arity = 4); - - Opal.def(self, '$checkRoll', $BadLife_checkRoll$4 = function $$checkRoll(diceCount, modify, critical, fumble, target, isStormy, optionalText) { - var $a, $b, $$5, $$6, self = this, isAnticipation = nil, isHeavyAttack = nil, _dice = nil, diceText = nil, diceMax = nil, diceArray = nil, isCritical = nil, isFumble = nil, total = nil, result = nil, success = nil, skillText = nil; - - - isAnticipation = optionalText['$include?']("A"); - isHeavyAttack = optionalText['$include?']("H"); - $b = self.$roll(diceCount, 20), $a = Opal.to_ary($b), (_dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceMax = 0; - diceArray = $send(diceText.$split(/,/), 'collect', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - $send(diceArray, 'each', [], ($$6 = function(i){var self = $$6.$$s || this; - - - - if (i == null) { - i = nil; - }; - if ($truthy($rb_gt(i, diceMax))) { - return (diceMax = i) - } else { - return nil - };}, $$6.$$s = self, $$6.$$arity = 1, $$6)); - if ($truthy(($truthy($a = isHeavyAttack) ? $rb_le(diceMax, 5) : $a))) { - diceMax = 5}; - isCritical = $rb_ge(diceMax, critical); - isFumble = $rb_le(diceMax, fumble); - if ($truthy(isCritical)) { - diceMax = 20}; - total = $rb_plus(diceMax, modify); - if ($truthy(($truthy($a = isAnticipation) ? $rb_le(diceMax, 7) : $a))) { - total = $rb_plus(total, 5)}; - if ($truthy(isFumble)) { - total = 0}; - result = "" + (diceCount) + "D20(C:" + (critical) + ",F:" + (fumble) + ") > "; - result = $rb_plus(result, "" + (diceMax) + "[" + (diceText) + "]"); - if ($truthy($rb_gt(modify, 0))) { - result = $rb_plus(result, "+")}; - if ($truthy(modify['$!='](0))) { - result = $rb_plus(result, modify.$to_s())}; - if ($truthy(($truthy($a = isAnticipation) ? $rb_le(diceMax, 7) : $a))) { - result = $rb_plus(result, "+5")}; - result = $rb_plus(result, "" + " > 達成値:" + (total)); - if ($truthy($rb_gt(target, 0))) { - - success = $rb_minus(total, target); - result = $rb_plus(result, "" + ">=" + (target) + " 成功度:" + (success) + " > "); - if ($truthy(isCritical)) { - result = $rb_plus(result, "成功(クリティカル)") - } else if ($truthy($rb_ge(total, target))) { - result = $rb_plus(result, "成功") - } else { - - result = $rb_plus(result, "失敗"); - if ($truthy(isFumble)) { - result = $rb_plus(result, "(ファンブル)")}; - }; - } else { - - if ($truthy(isCritical)) { - result = $rb_plus(result, " クリティカル")}; - if ($truthy(isFumble)) { - result = $rb_plus(result, " ファンブル")}; - }; - skillText = ""; - if ($truthy(isStormy)) { - skillText = $rb_plus(skillText, "〈波乱万丈〉")}; - if ($truthy(isAnticipation)) { - skillText = $rb_plus(skillText, "〈先見の明〉")}; - if ($truthy(isHeavyAttack)) { - skillText = $rb_plus(skillText, "[重撃]")}; - if ($truthy(skillText['$!='](""))) { - result = $rb_plus(result, "" + " " + (skillText))}; - return result; - }, $BadLife_checkRoll$4.$$arity = 7); - - Opal.def(self, '$get_name_table', $BadLife_get_name_table$7 = function $$get_name_table(initials) { - var self = this, $case = nil, name = nil, table = nil; - - - $case = initials; - if ("T"['$===']($case)) { - name = "怪盗コードネーム表"; - table = [[1, "フォックス"], [2, "フォックス"], [3, "ラット"], [4, "ラット"], [5, "キャット"], [6, "キャット"], [7, "タイガー"], [8, "タイガー"], [9, "シャーク"], [10, "シャーク"], [11, "コンドル"], [12, "コンドル"], [13, "スパイダー"], [14, "スパイダー"], [15, "ウルフ"], [16, "ウルフ"], [17, "コヨーテ"], [18, "コヨーテ"], [19, "ジャガー"], [20, "ジャガー"]];} - else if ("D"['$===']($case)) { - name = "闇医者コードネーム表"; - table = [[1, "キャンサー"], [2, "キャンサー"], [3, "ヘッドエイク"], [4, "ヘッドエイク"], [5, "ブラッド"], [6, "ブラッド"], [7, "ウーンズ"], [8, "ウーンズ"], [9, "ポイズン"], [10, "ポイズン"], [11, "ペイン"], [12, "ペイン"], [13, "スリープ"], [14, "スリープ"], [15, "キュア"], [16, "キュア"], [17, "デス"], [18, "デス"], [19, "リーンカーネイション"], [20, "リーンカーネイション"]];} - else if ("G"['$===']($case)) { - name = "博徒コードネーム表"; - table = [[1, "リトルダイス"], [2, "リトルダイス"], [3, "プラチナム"], [4, "プラチナム"], [5, "プレジデント"], [6, "プレジデント"], [7, "ドリーム"], [8, "ドリーム"], [9, "アクシデント"], [10, "アクシデント"], [11, "グリード"], [12, "グリード"], [13, "フォーチュン"], [14, "フォーチュン"], [15, "ミラクル"], [16, "ミラクル"], [17, "ホープ"], [18, "ホープ"], [19, "ビッグヒット"], [20, "ビッグヒット"]];} - else if ("K"['$===']($case)) { - name = "殺シ屋コードネーム表"; - table = [[1, "ハンマー"], [2, "ハンマー"], [3, "アロー"], [4, "アロー"], [5, "ボマー"], [6, "ボマー"], [7, "キャノン"], [8, "キャノン"], [9, "ブレード"], [10, "ブレード"], [11, "スティング"], [12, "スティング"], [13, "ガロット"], [14, "ガロット"], [15, "パイルバンカー"], [16, "パイルバンカー"], [17, "レイザー"], [18, "レイザー"], [19, "カタナ"], [20, "カタナ"]];} - else if ("S"['$===']($case)) { - name = "業師コードネーム表"; - table = [[1, "ローズ"], [2, "ローズ"], [3, "サクラ"], [4, "サクラ"], [5, "ライラック"], [6, "ライラック"], [7, "ダンデライオン"], [8, "ダンデライオン"], [9, "フリージア"], [10, "フリージア"], [11, "カクタス"], [12, "カクタス"], [13, "ロータス"], [14, "ロータス"], [15, "リリィ"], [16, "リリィ"], [17, "ラフレシア"], [18, "ラフレシア"], [19, "ヒヤシンス"], [20, "ヒヤシンス"]];} - else if ("B"['$===']($case)) { - name = "遊ビ人コードネーム表"; - table = [[1, "モノポリー"], [2, "モノポリー"], [3, "ブリッジ"], [4, "ブリッジ"], [5, "チェッカー"], [6, "チェッカー"], [7, "アクワイア"], [8, "アクワイア"], [9, "ジャンケン"], [10, "ジャンケン"], [11, "トランプ"], [12, "トランプ"], [13, "ケイドロ"], [14, "ケイドロ"], [15, "パンデミック"], [16, "パンデミック"], [17, "スゴロク"], [18, "スゴロク"], [19, "キャベツカンテイ"], [20, "キャベツカンテイ"]];} - else {return nil}; - return self.$get_badlife_1d20_table_result(name, table); - }, $BadLife_get_name_table$7.$$arity = 1); - - Opal.def(self, '$get_skill_table', $BadLife_get_skill_table$8 = function $$get_skill_table() { - var $a, $b, self = this, name = nil, table = nil, dice = nil, result = nil; - - - name = "スキル表"; - table = [[1, "一撃離脱"], [2, "一撃離脱"], [3, "チェイサー"], [4, "チェイサー"], [5, "影の外套"], [6, "影の外套"], [7, "二段ジャンプ"], [8, "二段ジャンプ"], [9, "韋駄天"], [10, "韋駄天"], [11, "手練"], [12, "手練"], [13, "ハニーテイスト"], [14, "ハニーテイスト"], [15, "先見の明"], [16, "先見の明"], [17, "ベテラン"], [18, "ベテラン"], [19, "応急手当"], [20, "応急手当"], [21, "セラピー"], [22, "セラピー"], [23, "緊急治療"], [24, "緊急治療"], [25, "ゴールドディガー"], [26, "ゴールドディガー"], [27, "デイリーミッション"], [28, "デイリーミッション"], [29, "見切り"], [30, "見切り"], [31, "鷹の目"], [32, "鷹の目"], [33, "しびれ罠"], [34, "しびれ罠"], [35, "大逆転"], [36, "大逆転"], [37, "武器習熟:○○"], [38, "武器習熟:○○"], [39, "百発百中"], [40, "百発百中"], [41, "屈強な肉体"], [42, "屈強な肉体"], [43, "二刀流"], [44, "二刀流"], [45, "クイックリカバリー"], [46, "クイックリカバリー"], [47, "体験主義"], [48, "体験主義"], [49, "破釜沈船"], [50, "破釜沈船"], [51, "想定の範囲内"], [52, "想定の範囲内"], [53, "セカンドチャンス"], [54, "セカンドチャンス"], [55, "優秀な子分"], [56, "優秀な子分"], [57, "時間管理術"], [58, "時間管理術"], [59, "連撃術"], [60, "連撃術"], [61, "罵詈雑言"], [62, "罵詈雑言"], [63, "ケセラセラ"], [64, "ケセラセラ"], [65, "ダンス&ミュージック"], [66, "ダンス&ミュージック"], [67, "フェイント"], [68, "フェイント"], [69, "ヘイトコントロール"], [70, "ヘイトコントロール"], [71, "惜別"], [72, "惜別"], [73, "戦闘マシーン"], [74, "戦闘マシーン"], [75, "戦闘マシーン"], [76, "名医"], [77, "名医"], [78, "名医"], [79, "忍者"], [80, "忍者"], [81, "忍者"], [82, "観察眼"], [83, "観察眼"], [84, "観察眼"], [85, "クレバー"], [86, "クレバー"], [87, "クレバー"], [88, "フェイスマン"], [89, "フェイスマン"], [90, "フェイスマン"], [91, "スポーツマン"], [92, "スポーツマン"], [93, "スポーツマン"], [94, "不屈"], [95, "不屈"], [96, "不屈"], [97, "慎重"], [98, "慎重"], [99, "慎重"], [100, "この表を2回振る"]]; - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - result = self.$get_table_by_number(dice, table); - return self.$get_badlife_table_result(name, dice, result); - }, $BadLife_get_skill_table$8.$$arity = 0); - - Opal.def(self, '$get_badlife_1d20_table_result', $BadLife_get_badlife_1d20_table_result$9 = function $$get_badlife_1d20_table_result(name, table) { - var $a, $b, self = this, dice = nil, output = nil; - - - $b = self.$roll(1, 20), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(dice, table); - return self.$get_badlife_table_result(name, dice, output); - }, $BadLife_get_badlife_1d20_table_result$9.$$arity = 2); - - Opal.def(self, '$get_badlife_table_result', $BadLife_get_badlife_table_result$10 = function $$get_badlife_table_result(name, dice, output) { - var self = this; - - return "" + (name) + "(" + (dice) + ") > " + (output) - }, $BadLife_get_badlife_table_result$10.$$arity = 3); - return (Opal.def(self, '$get_value', $BadLife_get_value$11 = function $$get_value(text) { - var $a, self = this; - - - text = ($truthy($a = text) ? $a : ""); - return self.$parren_killer("" + "(0" + (text) + ")").$to_i(); - }, $BadLife_get_value$11.$$arity = 1), nil) && 'get_value'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/BarnaKronika.js b/src/assets/dicebot/BarnaKronika.js deleted file mode 100644 index 31fa0abf0..000000000 --- a/src/assets/dicebot/BarnaKronika.js +++ /dev/null @@ -1,269 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$bcdice', '$set1Deck2Jokers', '$cardTrader', '$card_place=', '$-', '$canTapCard=', '$debug', '$gsub', '$last_match', '$check_barna_kronika', '$=~', '$collect', '$split', '$to_i', '$==', '$roll_barna_kronika', '$+', '$>', '$times', '$rand', '$[]', '$[]=', '$isCriticalCall', '$getAttackStringWhenCriticalCall', '$isNomalAttack', '$getAttackStringWhenNomal', '$!=', '$*', '$<', '$sub', '$getAttackHitLocation', '$get_table_by_number']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BarnaKronika'); - - var $nesting = [self].concat($parent_nesting), $BarnaKronika_initialize$1, $BarnaKronika_postSet$2, $BarnaKronika_changeText$3, $BarnaKronika_dice_command_xRn$8, $BarnaKronika_check_barna_kronika$9, $BarnaKronika_roll_barna_kronika$11, $BarnaKronika_isCriticalCall$15, $BarnaKronika_isNomalAttack$16, $BarnaKronika_getAttackStringWhenCriticalCall$17, $BarnaKronika_getAttackStringWhenNomal$18, $BarnaKronika_getAttackHitLocation$19; - - self.$$prototype.isBattleMode = self.$$prototype.nick_e = nil; - - Opal.const_set($nesting[0], 'ID', "BarnaKronika"); - Opal.const_set($nesting[0], 'NAME', "バルナ・クロニカ"); - Opal.const_set($nesting[0], 'SORT_KEY', "はるなくろにか"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・通常判定 nBK\n" + " ダイス数nで判定ロールを行います。\n" + " セット数が1以上の時はセット数も表示します。\n" + "・攻撃判定 nBA\n" + " ダイス数nで判定ロールを行い、攻撃値と命中部位も表示します。\n" + "・クリティカルコール nBKCt nBACt\n" + " 判定コマンドの後ろに「Ct」を付けるとクリティカルコールです。\n" + " ダイス数n,コール数tで判定ロールを行います。\n" + " ダイス数nで判定ロールを行います。\n" + " セット数が1以上の時はセット数も表示し、攻撃判定の場合は命中部位も表示します。\n"); - self.$setPrefixes(["\\d+BK", "\\d+BA", "\\d+BKC\\d+", "\\d+BAC\\d+"]); - - Opal.def(self, '$initialize', $BarnaKronika_initialize$1 = function $$initialize() { - var $iter = $BarnaKronika_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $BarnaKronika_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $BarnaKronika_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.sortType = 3); - }, $BarnaKronika_initialize$1.$$arity = 0); - - Opal.def(self, '$postSet', $BarnaKronika_postSet$2 = function $$postSet() { - var self = this, $writer = nil; - - if ($truthy(self.$bcdice())) { - - self.$bcdice().$cardTrader().$set1Deck2Jokers(); - - $writer = [0]; - $send(self.$bcdice().$cardTrader(), 'card_place=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [false]; - $send(self.$bcdice().$cardTrader(), 'canTapCard=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else { - return nil - } - }, $BarnaKronika_postSet$2.$$arity = 0); - - Opal.def(self, '$changeText', $BarnaKronika_changeText$3 = function $$changeText(string) { - var $$4, $$5, $$6, $$7, self = this; - - - self.$debug("parren_killer_add begin string", string); - string = $send(string, 'gsub', [/(\d+)BKC(\d)/], ($$4 = function(){var self = $$4.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6[0," + ($$($nesting, 'Regexp').$last_match(2)) + "]"}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - string = $send(string, 'gsub', [/(\d+)BAC(\d)/], ($$5 = function(){var self = $$5.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6[1," + ($$($nesting, 'Regexp').$last_match(2)) + "]"}, $$5.$$s = self, $$5.$$arity = 0, $$5)); - string = $send(string, 'gsub', [/(\d+)BK/], ($$6 = function(){var self = $$6.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6[0,0]"}, $$6.$$s = self, $$6.$$arity = 0, $$6)); - string = $send(string, 'gsub', [/(\d+)BA/], ($$7 = function(){var self = $$7.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6[1,0]"}, $$7.$$s = self, $$7.$$arity = 0, $$7)); - self.$debug("parren_killer_add end string", string); - return string; - }, $BarnaKronika_changeText$3.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $BarnaKronika_dice_command_xRn$8 = function $$dice_command_xRn(string, nick_e) { - var self = this; - - - self.nick_e = nick_e; - return self.$check_barna_kronika(string); - }, $BarnaKronika_dice_command_xRn$8.$$arity = 2); - - Opal.def(self, '$check_barna_kronika', $BarnaKronika_check_barna_kronika$9 = function $$check_barna_kronika(string) { - var $a, $b, $$10, self = this, output = nil, option = nil, dice_n = nil, criticalCallDice = nil, battleModeText = nil, dice_str = nil, suc = nil, set = nil, at_str = nil; - - - output = "1"; - if ($truthy(/(^|\s)S?((\d+)[rR]6(\[([,\d]+)\])?)(\s|$)/i['$=~'](string))) { - } else { - return output - }; - string = $$($nesting, 'Regexp').$last_match(2); - option = $$($nesting, 'Regexp').$last_match(5); - dice_n = $$($nesting, 'Regexp').$last_match(3); - dice_n = ($truthy($a = dice_n) ? $a : 1); - self.isBattleMode = false; - criticalCallDice = 0; - if ($truthy(option)) { - - $b = $send(option.$split(","), 'collect', [], ($$10 = function(i){var self = $$10.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$10.$$s = self, $$10.$$arity = 1, $$10)), $a = Opal.to_ary($b), (battleModeText = ($a[0] == null ? nil : $a[0])), (criticalCallDice = ($a[1] == null ? nil : $a[1])), $b; - self.isBattleMode = battleModeText['$=='](1);}; - self.$debug("@isBattleMode", self.isBattleMode); - $b = self.$roll_barna_kronika(dice_n, criticalCallDice), $a = Opal.to_ary($b), (dice_str = ($a[0] == null ? nil : $a[0])), (suc = ($a[1] == null ? nil : $a[1])), (set = ($a[2] == null ? nil : $a[2])), (at_str = ($a[3] == null ? nil : $a[3])), $b; - output = "" + (self.nick_e) + ": (" + (string) + ") > [" + (dice_str) + "] > "; - if ($truthy(self.isBattleMode)) { - output = $rb_plus(output, at_str) - } else { - - self.$debug("suc", suc); - if ($truthy($rb_gt(suc, 1))) { - output = $rb_plus(output, "" + "成功数" + (suc)) - } else { - output = $rb_plus(output, "失敗") - }; - self.$debug("set", set); - if ($truthy($rb_gt(set, 0))) { - output = $rb_plus(output, "" + ",セット" + (set))}; - }; - return output; - }, $BarnaKronika_check_barna_kronika$9.$$arity = 1); - - Opal.def(self, '$roll_barna_kronika', $BarnaKronika_roll_barna_kronika$11 = function $$roll_barna_kronika(dice_n, criticalCallDice) { - var $$12, $$13, $a, self = this, output = nil, suc = nil, set = nil, at_str = nil, diceCountList = nil, c_cnt = nil; - - - dice_n = dice_n.$to_i(); - output = ""; - suc = 0; - set = 0; - at_str = ""; - diceCountList = [0, 0, 0, 0, 0, 0]; - $send(dice_n, 'times', [], ($$12 = function(_i){var self = $$12.$$s || this, index = nil, $writer = nil; - - - - if (_i == null) { - _i = nil; - }; - index = self.$rand(6); - - $writer = [index, $rb_plus(diceCountList['$[]'](index), 1)]; - $send(diceCountList, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy($rb_gt(diceCountList['$[]'](index), suc))) { - return (suc = diceCountList['$[]'](index)) - } else { - return nil - };}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - $send((6), 'times', [], ($$13 = function(i){var self = $$13.$$s || this, $$14, diceCount = nil; - - - - if (i == null) { - i = nil; - }; - diceCount = diceCountList['$[]'](i); - if (diceCount['$=='](0)) { - return nil;}; - $send(diceCount, 'times', [], ($$14 = function(_j){var self = $$14.$$s || this; - - - - if (_j == null) { - _j = nil; - }; - return (output = $rb_plus(output, "" + ($rb_plus(i, 1)) + ","));}, $$14.$$s = self, $$14.$$arity = 1, $$14)); - if ($truthy(self.$isCriticalCall(i, criticalCallDice))) { - - self.$debug("isCriticalCall"); - at_str = $rb_plus(at_str, self.$getAttackStringWhenCriticalCall(i, diceCount)); - } else if ($truthy(self.$isNomalAttack(criticalCallDice, diceCount))) { - - self.$debug("isNomalAttack"); - at_str = $rb_plus(at_str, self.$getAttackStringWhenNomal(i, diceCount));}; - if ($truthy($rb_gt(diceCount, 1))) { - return (set = $rb_plus(set, 1)) - } else { - return nil - };}, $$13.$$s = self, $$13.$$arity = 1, $$13)); - if ($truthy(criticalCallDice['$!='](0))) { - - c_cnt = diceCountList['$[]']($rb_minus(criticalCallDice, 1)); - suc = $rb_times(c_cnt, 2); - if ($truthy(c_cnt['$!='](0))) { - set = 1 - } else { - set = 0 - };}; - if ($truthy(($truthy($a = self.isBattleMode) ? $rb_lt(suc, 2) : $a))) { - at_str = "失敗"}; - output = output.$sub(/,$/, ""); - at_str = at_str.$sub(/,$/, ""); - return [output, suc, set, at_str]; - }, $BarnaKronika_roll_barna_kronika$11.$$arity = 2); - - Opal.def(self, '$isCriticalCall', $BarnaKronika_isCriticalCall$15 = function $$isCriticalCall(index, criticalCallDice) { - var self = this; - - - if ($truthy(self.isBattleMode)) { - } else { - return false - }; - if (criticalCallDice['$=='](0)) { - return false}; - return criticalCallDice['$==']($rb_plus(index, 1)); - }, $BarnaKronika_isCriticalCall$15.$$arity = 2); - - Opal.def(self, '$isNomalAttack', $BarnaKronika_isNomalAttack$16 = function $$isNomalAttack(criticalCallDice, diceCount) { - var self = this; - - - if ($truthy(self.isBattleMode)) { - } else { - return false - }; - if ($truthy(criticalCallDice['$!='](0))) { - return false}; - return $rb_gt(diceCount, 1); - }, $BarnaKronika_isNomalAttack$16.$$arity = 2); - - Opal.def(self, '$getAttackStringWhenCriticalCall', $BarnaKronika_getAttackStringWhenCriticalCall$17 = function $$getAttackStringWhenCriticalCall(index, diceCount) { - var self = this, hitLocation = nil, attackValue = nil, result = nil; - - - hitLocation = self.$getAttackHitLocation($rb_plus(index, 1)); - attackValue = $rb_times(diceCount, 2); - result = $rb_plus(hitLocation, "" + ":攻撃値" + (attackValue) + ","); - return result; - }, $BarnaKronika_getAttackStringWhenCriticalCall$17.$$arity = 2); - - Opal.def(self, '$getAttackStringWhenNomal', $BarnaKronika_getAttackStringWhenNomal$18 = function $$getAttackStringWhenNomal(index, diceCount) { - var self = this, hitLocation = nil, attackValue = nil, result = nil; - - - hitLocation = self.$getAttackHitLocation($rb_plus(index, 1)); - attackValue = diceCount; - result = $rb_plus(hitLocation, "" + ":攻撃値" + (attackValue) + ","); - return result; - }, $BarnaKronika_getAttackStringWhenNomal$18.$$arity = 2); - return (Opal.def(self, '$getAttackHitLocation', $BarnaKronika_getAttackHitLocation$19 = function $$getAttackHitLocation(num) { - var self = this, table = nil; - - - table = [[1, "頭部"], [2, "右腕"], [3, "左腕"], [4, "右脚"], [5, "左脚"], [6, "胴体"]]; - return self.$get_table_by_number(num, table); - }, $BarnaKronika_getAttackHitLocation$19.$$arity = 1), nil) && 'getAttackHitLocation'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/BattleTech.js b/src/assets/dicebot/BattleTech.js deleted file mode 100644 index 4eef582a2..000000000 --- a/src/assets/dicebot/BattleTech.js +++ /dev/null @@ -1,586 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$freeze', '$match', '$raise', '$to_i', '$[]', '$roll', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Table'); - - var $nesting = [self].concat($parent_nesting), $Table_initialize$1, $Table_roll$2; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $Table_initialize$1 = function $$initialize(name, type, items) { - var self = this, m = nil; - - - self.name = name; - self.items = items.$freeze(); - m = /(\d+)D(\d+)/i.$match(type); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "Unexpected table type: " + (type)) - }; - self.times = m['$[]'](1).$to_i(); - return (self.sides = m['$[]'](2).$to_i()); - }, $Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $Table_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, value = nil, index = nil; - - - $b = bcdice.$roll(self.times, self.sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(value, self.times); - return "" + (self.name) + "(" + (value) + ") > " + (self.items['$[]'](index)); - }, $Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/range_table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$new', '$alias_method', '$freeze', '$lambda', '$name', '$sum', '$content', '$attr_reader', '$match', '$raise', '$to_i', '$[]', '$store', '$find', '$include?', '$range', '$roll', '$map', '$split', '$to_proc', '$fetch', '$formatted=', '$-', '$private', '$coerce_to_int_range', '$sort_by', '$min', '$assert_min_sum_is_covered', '$assert_max_sum_is_covered', '$assert_no_gap_or_overlap_in_ranges', '$===', '$is_a?', '$begin', '$end', '$class', '$first', '$*', '$last', '$each_cons', '$max', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RangeTable'); - - var $nesting = [self].concat($parent_nesting), $RangeTable$1, $RangeTable$2, $RangeTable_initialize$3, $RangeTable_fetch$4, $RangeTable_roll$6, $RangeTable_store$7, $RangeTable_coerce_to_int_range$11, $RangeTable_assert_min_sum_is_covered$12, $RangeTable_assert_max_sum_is_covered$13, $RangeTable_assert_no_gap_or_overlap_in_ranges$14; - - self.$$prototype.name = self.$$prototype.items = self.$$prototype.num_of_dice = self.$$prototype.num_of_sides = self.$$prototype.formatter = nil; - - Opal.const_set($nesting[0], 'RollResult', $send($$($nesting, 'Struct'), 'new', ["sum", "values", "content", "formatted"], ($RangeTable$1 = function(){var self = $RangeTable$1.$$s || this; - - return self.$alias_method("to_s", "formatted")}, $RangeTable$1.$$s = self, $RangeTable$1.$$arity = 0, $RangeTable$1))); - Opal.const_set($nesting[0], 'Item', $$($nesting, 'Struct').$new("range", "content")); - Opal.const_set($nesting[0], 'DICE_ROLL_METHOD_RE', /^(\d+)D(\d+)$/i.$freeze()); - Opal.const_set($nesting[0], 'DEFAULT_FORMATTER', $send(self, 'lambda', [], ($RangeTable$2 = function(table, result){var self = $RangeTable$2.$$s || this; - - - - if (table == null) { - table = nil; - }; - - if (result == null) { - result = nil; - }; - return "" + (table.$name()) + "(" + (result.$sum()) + ") > " + (result.$content());}, $RangeTable$2.$$s = self, $RangeTable$2.$$arity = 2, $RangeTable$2))); - self.$attr_reader("name"); - self.$attr_reader("num_of_dice"); - self.$attr_reader("num_of_sides"); - - Opal.def(self, '$initialize', $RangeTable_initialize$3 = function $$initialize(name, dice_roll_method, items) { - var $iter = $RangeTable_initialize$3.$$p, formatter = $iter || nil, $a, self = this, m = nil; - - if ($iter) $RangeTable_initialize$3.$$p = null; - - - if ($iter) $RangeTable_initialize$3.$$p = null;; - self.name = name.$freeze(); - self.formatter = ($truthy($a = formatter) ? $a : $$($nesting, 'DEFAULT_FORMATTER')); - m = $$($nesting, 'DICE_ROLL_METHOD_RE').$match(dice_roll_method); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + (self.name) + ": invalid dice roll method: " + (dice_roll_method)) - }; - self.num_of_dice = m['$[]'](1).$to_i(); - self.num_of_sides = m['$[]'](2).$to_i(); - return self.$store(items); - }, $RangeTable_initialize$3.$$arity = 3); - - Opal.def(self, '$fetch', $RangeTable_fetch$4 = function $$fetch(value) { - var $$5, self = this, item = nil; - - - item = $send(self.items, 'find', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$range()['$include?'](value);}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - if ($truthy(item)) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": value is out of range: " + (value)) - }; - return item; - }, $RangeTable_fetch$4.$$arity = 1); - - Opal.def(self, '$roll', $RangeTable_roll$6 = function $$roll(bcdice) { - var $a, $b, self = this, sum = nil, values_str = nil, values = nil, result = nil, $writer = nil; - - - $b = bcdice.$roll(self.num_of_dice, self.num_of_sides), $a = Opal.to_ary($b), (sum = ($a[0] == null ? nil : $a[0])), (values_str = ($a[1] == null ? nil : $a[1])), $b; - values = $send(values_str.$split(","), 'map', [], "to_i".$to_proc()); - result = $$($nesting, 'RollResult').$new(sum, values, self.$fetch(sum).$content()); - - $writer = [self.formatter['$[]'](self, result)]; - $send(result, 'formatted=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return result; - }, $RangeTable_roll$6.$$arity = 1); - self.$private(); - - Opal.def(self, '$store', $RangeTable_store$7 = function $$store(items) { - var $$8, $$9, $$10, self = this, items_with_range = nil, sorted_items = nil; - - - items_with_range = $send(items, 'map', [], ($$8 = function(r, c){var self = $$8.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (c == null) { - c = nil; - }; - return [self.$coerce_to_int_range(r), c];}, $$8.$$s = self, $$8.$$arity = 2, $$8)); - sorted_items = $send(items_with_range, 'sort_by', [], ($$9 = function(r, _){var self = $$9.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (_ == null) { - _ = nil; - }; - return r.$min();}, $$9.$$s = self, $$9.$$arity = 2, $$9)); - self.$assert_min_sum_is_covered(sorted_items); - self.$assert_max_sum_is_covered(sorted_items); - self.$assert_no_gap_or_overlap_in_ranges(sorted_items); - self.items = $send(sorted_items, 'map', [], ($$10 = function(range, content){var self = $$10.$$s || this; - - - - if (range == null) { - range = nil; - }; - - if (content == null) { - content = nil; - }; - return $$($nesting, 'Item').$new(range, content.$freeze()).$freeze();}, $$10.$$s = self, $$10.$$arity = 2, $$10)).$freeze(); - return self; - }, $RangeTable_store$7.$$arity = 1); - - Opal.def(self, '$coerce_to_int_range', $RangeTable_coerce_to_int_range$11 = function $$coerce_to_int_range(x) { - var $a, self = this, $case = nil; - - - $case = x; - if ($$($nesting, 'Integer')['$===']($case)) {return $$($nesting, 'Range').$new(x, x)} - else if ($$($nesting, 'Range')['$===']($case)) {if ($truthy(($truthy($a = x.$begin()['$is_a?']($$($nesting, 'Integer'))) ? x.$end()['$is_a?']($$($nesting, 'Integer')) : $a))) { - return x}}; - return self.$raise($$($nesting, 'TypeError'), "" + (self.name) + ": " + (x) + " (" + (x.$class()) + ") must be an Integer or a Range with Integers "); - }, $RangeTable_coerce_to_int_range$11.$$arity = 1); - - Opal.def(self, '$assert_min_sum_is_covered', $RangeTable_assert_min_sum_is_covered$12 = function $$assert_min_sum_is_covered(sorted_items) { - var self = this, min_sum = nil, range = nil; - - - min_sum = self.num_of_dice; - range = sorted_items.$first()['$[]'](0); - if ($truthy(range['$include?'](min_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": min value (" + (min_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_min_sum_is_covered$12.$$arity = 1); - - Opal.def(self, '$assert_max_sum_is_covered', $RangeTable_assert_max_sum_is_covered$13 = function $$assert_max_sum_is_covered(sorted_items) { - var self = this, max_sum = nil, range = nil; - - - max_sum = $rb_times(self.num_of_dice, self.num_of_sides); - range = sorted_items.$last()['$[]'](0); - if ($truthy(range['$include?'](max_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": max value (" + (max_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_max_sum_is_covered$13.$$arity = 1); - return (Opal.def(self, '$assert_no_gap_or_overlap_in_ranges', $RangeTable_assert_no_gap_or_overlap_in_ranges$14 = function $$assert_no_gap_or_overlap_in_ranges(sorted_items) { - var $$15, self = this; - - - $send(sorted_items, 'each_cons', [2], ($$15 = function(i1, i2){var self = $$15.$$s || this, r1 = nil, r2 = nil, max1 = nil, next_of_max1 = nil; - if (self.name == null) self.name = nil; - - - - if (i1 == null) { - i1 = nil; - }; - - if (i2 == null) { - i2 = nil; - }; - r1 = i1['$[]'](0); - r2 = i2['$[]'](0); - max1 = r1.$max(); - next_of_max1 = $rb_plus(max1, 1); - if ($truthy(r2['$include?'](max1))) { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range overlap: " + (r1) + " and " + (r2))}; - if ($truthy(r2['$include?'](next_of_max1))) { - return nil - } else { - return self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range gap: " + (r1) + " and " + (r2)) - };}, $$15.$$s = self, $$15.$$arity = 2, $$15)); - return self; - }, $RangeTable_assert_no_gap_or_overlap_in_ranges$14.$$arity = 1), nil) && 'assert_no_gap_or_overlap_in_ranges'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2, $range = Opal.range; - - Opal.add_stubs(['$require', '$setPrefixes', '$sub', '$roll_tables', '$===', '$to_i', '$last_match', '$debug', '$getCheckDieResult', '$lambda', '$getXrmDamage', '$getHitResult', '$key?', '$raise', '$[]', '$roll', '$bcdice', '$start_with?', '$content', '$*', '$sum', '$match', '$getBaseValue', '$times', '$getHitText', '$+', '$getDamages', '$<<', '$push', '$join', '$>', '$getTotalDamage', '$nil?', '$parren_killer', '$>=', '$call', '$ceil', '$/', '$getDamageInfo', '$getHitResultOne', '$[]=', '$-', '$empty?', '$to_s', '$each', '$delete', '$inject', '$size', '$inspect', '$critical_hit_may_occur', '$name', '$get_table_by_number', '$freeze', '$new']); - - self.$require("utils/table"); - self.$require("utils/range_table"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BattleTech'); - - var $nesting = [self].concat($parent_nesting), $BattleTech_changeText$1, $BattleTech_rollDiceCommand$2, $BattleTech_getXrmDamage$5, $BattleTech_getHitResult$6, $BattleTech_getBaseValue$8, $BattleTech_getHitText$9, $BattleTech_getDamages$10, $BattleTech_getDamageInfo$12, $BattleTech_getTotalDamage$13, $BattleTech_getHitResultOne$16, $BattleTech_getCheckDieResult$17; - - - Opal.const_set($nesting[0], 'ID', "BattleTech"); - Opal.const_set($nesting[0], 'NAME', "バトルテック"); - Opal.const_set($nesting[0], 'SORT_KEY', "はとるてつく"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定方法\n" + " (回数)BT(ダメージ)(部位)+(基本値)>=(目標値)\n" + " 回数は省略時 1固定。\n" + " 部位はC(正面)R(右)、L(左)。省略時はC(正面)固定\n" + " U(上半身)、L(下半身)を組み合わせ CU/RU/LU/CL/RL/LLも指定可能\n" + " 例)BT3+2>=4\n" + "  正面からダメージ3の攻撃を技能ベース2目標値4で1回判定\n" + " 例)2BT3RL+5>=8\n" + "  右下半身にダメージ3の攻撃を技能ベース5目標値8で2回判定\n" + " ミサイルによるダメージは BT(ダメージ)の変わりに SRM2/4/6, LRM5/10/15/20を指定\n" + " 例)3SRM6LU+5>=8\n" + "  左上半身にSRM6連を技能ベース5目標値8で3回判定\n" + "・CT:致命的命中表\n" + "・DW:転倒後の向き表\n" + "・CDx:メック戦士意識維持表。ダメージ値xで判定 例)CD3\n"); - self.$setPrefixes(["\\d*SRM\\d+.+", "\\d*LRM\\d+.+", "\\d*BT.+", "CT", "DW", "CD\\d+"]); - Opal.const_set($nesting[0], 'NO_CRITICAL_HIT_LIMIT', 7); - - Opal.def(self, '$changeText', $BattleTech_changeText$1 = function $$changeText(string) { - var self = this; - - return string.$sub(/PPC/, "BT10") - }, $BattleTech_changeText$1.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $BattleTech_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $$3, $$4, self = this, result = nil, count = nil, $case = nil, damage = nil, tail = nil, type = nil, damageFunc = nil, damageValue = nil; - - - result = self.$roll_tables(command, $$($nesting, 'TABLES')); - if ($truthy(result)) { - return result}; - count = 1; - if ($truthy(/^(\d+)(.+)/['$==='](command))) { - - count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - command = $$($nesting, 'Regexp').$last_match(2);}; - self.$debug("executeCommandCatched count", count); - self.$debug("executeCommandCatched command", command); - $case = command; - if (/^CD(\d+)$/['$===']($case)) { - damage = $$($nesting, 'Regexp').$last_match(1).$to_i(); - return self.$getCheckDieResult(damage);} - else if (/^((S|L)RM\d+)(.+)/['$===']($case)) { - tail = $$($nesting, 'Regexp').$last_match(3); - type = $$($nesting, 'Regexp').$last_match(1); - damageFunc = $send(self, 'lambda', [], ($$3 = function(){var self = $$3.$$s || this; - - return self.$getXrmDamage(type)}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - return self.$getHitResult(count, damageFunc, tail);} - else if (/^BT(\d+)(.+)/['$===']($case)) { - self.$debug("BT pattern"); - tail = $$($nesting, 'Regexp').$last_match(2); - damageValue = $$($nesting, 'Regexp').$last_match(1).$to_i(); - damageFunc = $send(self, 'lambda', [], ($$4 = function(){var self = $$4.$$s || this; - - return damageValue}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - return self.$getHitResult(count, damageFunc, tail);}; - return nil; - }, $BattleTech_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getXrmDamage', $BattleTech_getXrmDamage$5 = function $$getXrmDamage(type) { - var self = this, table = nil, roll_result = nil, lrm = nil, damage = nil, modified_damage = nil; - - - if ($truthy($$($nesting, 'XRM_DAMAGE_TABLES')['$key?'](type))) { - } else { - self.$raise("" + "unknown XRM type:" + (type)) - }; - table = $$($nesting, 'XRM_DAMAGE_TABLES')['$[]'](type); - roll_result = table.$roll(self.$bcdice()); - lrm = type['$start_with?']("L"); - damage = roll_result.$content(); - modified_damage = (function() {if ($truthy(lrm)) { - return damage - } else { - - return $rb_times(2, damage); - }; return nil; })(); - return [modified_damage, roll_result.$sum(), lrm]; - }, $BattleTech_getXrmDamage$5.$$arity = 1); - Opal.const_set($nesting[0], 'LRM_LIMIT', 5); - - Opal.def(self, '$getHitResult', $BattleTech_getHitResult$6 = function $$getHitResult(count, damageFunc, tail) { - var $a, $$7, self = this, m = nil, side = nil, baseString = nil, target = nil, base = nil, partTable = nil, resultTexts = nil, damages = nil, hitCount = nil, totalResultText = nil; - - - m = /([LCR][LU]?)?(\+\d+)?>=(\d+)/.$match(tail); - if ($truthy(m)) { - } else { - return nil - }; - side = ($truthy($a = m['$[]'](1)) ? $a : "C"); - baseString = m['$[]'](2); - target = m['$[]'](3).$to_i(); - base = self.$getBaseValue(baseString); - self.$debug("side, base, target", side, base, target); - partTable = $$$($$($nesting, 'HitPart'), 'TABLES')['$[]'](side); - resultTexts = []; - damages = $hash2([], {}); - hitCount = 0; - $send(count, 'times', [], ($$7 = function(){var self = $$7.$$s || this, $b, $c, isHit = nil, hitResult = nil, damageText = nil; - - - $c = self.$getHitText(base, target), $b = Opal.to_ary($c), (isHit = ($b[0] == null ? nil : $b[0])), (hitResult = ($b[1] == null ? nil : $b[1])), $c; - if ($truthy(isHit)) { - - hitCount = $rb_plus(hitCount, 1); - $c = self.$getDamages(damageFunc, partTable, damages), $b = Opal.to_ary($c), (damages = ($b[0] == null ? nil : $b[0])), (damageText = ($b[1] == null ? nil : $b[1])), $c; - hitResult = $rb_plus(hitResult, damageText);}; - return resultTexts['$<<'](hitResult);}, $$7.$$s = self, $$7.$$arity = 0, $$7)); - resultTexts.$push("" + " > " + (hitCount) + "回命中"); - totalResultText = resultTexts.$join("\n"); - if ($truthy($rb_gt(hitCount, 0))) { - totalResultText = $rb_plus(totalResultText, $rb_plus(" 命中箇所:", self.$getTotalDamage(damages)))}; - return totalResultText; - }, $BattleTech_getHitResult$6.$$arity = 3); - - Opal.def(self, '$getBaseValue', $BattleTech_getBaseValue$8 = function $$getBaseValue(baseString) { - var self = this, base = nil; - - - base = 0; - if ($truthy(baseString['$nil?']())) { - return base}; - base = self.$parren_killer($rb_plus($rb_plus("(", baseString), ")")).$to_i(); - return base; - }, $BattleTech_getBaseValue$8.$$arity = 1); - - Opal.def(self, '$getHitText', $BattleTech_getHitText$9 = function $$getHitText(base, target) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, total = nil, isHit = nil, baseString = nil, result = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - total = $rb_plus($rb_plus(dice1, dice2), base); - isHit = $rb_ge(total, target); - baseString = (function() {if ($truthy($rb_gt(base, 0))) { - return "" + "+" + (base) - } else { - return "" - }; return nil; })(); - result = "" + (total) + "[" + (dice1) + "," + (dice2) + (baseString) + "]>=" + (target) + " > "; - if ($truthy(isHit)) { - result = $rb_plus(result, "命中 > ") - } else { - result = $rb_plus(result, "外れ") - }; - return [isHit, result]; - }, $BattleTech_getHitText$9.$$arity = 2); - - Opal.def(self, '$getDamages', $BattleTech_getDamages$10 = function $$getDamages(damageFunc, partTable, damages) { - var $a, $b, $$11, self = this, resultText = nil, damage = nil, dice = nil, isLrm = nil, damagePartCount = nil; - - - resultText = ""; - $b = damageFunc.$call(), $a = Opal.to_ary($b), (damage = ($a[0] == null ? nil : $a[0])), (dice = ($a[1] == null ? nil : $a[1])), (isLrm = ($a[2] == null ? nil : $a[2])), $b; - damagePartCount = 1; - if ($truthy(isLrm)) { - - damagePartCount = $rb_divide($rb_times(1.0, damage), $$($nesting, 'LRM_LIMIT')).$ceil(); - resultText = $rb_plus(resultText, "" + "[" + (dice) + "] " + (damage) + "点");}; - $send(damagePartCount, 'times', [], ($$11 = function(damageIndex){var self = $$11.$$s || this, $c, $d, currentDamage = nil, damageText = nil, text = nil, part = nil, criticalText = nil, $writer = nil; - - - - if (damageIndex == null) { - damageIndex = nil; - }; - $d = self.$getDamageInfo(dice, damage, isLrm, damageIndex), $c = Opal.to_ary($d), (currentDamage = ($c[0] == null ? nil : $c[0])), (damageText = ($c[1] == null ? nil : $c[1])), $d; - $d = self.$getHitResultOne(damageText, partTable), $c = Opal.to_ary($d), (text = ($c[0] == null ? nil : $c[0])), (part = ($c[1] == null ? nil : $c[1])), (criticalText = ($c[2] == null ? nil : $c[2])), $d; - if ($truthy(isLrm)) { - resultText = $rb_plus(resultText, " ")}; - resultText = $rb_plus(resultText, text); - if ($truthy(damages['$[]'](part)['$nil?']())) { - - $writer = [part, $hash2(["partDamages", "criticals"], {"partDamages": [], "criticals": []})]; - $send(damages, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];}; - damages['$[]'](part)['$[]']("partDamages")['$<<'](currentDamage); - if ($truthy(criticalText['$empty?']())) { - return nil - } else { - return damages['$[]'](part)['$[]']("criticals")['$<<'](criticalText) - };}, $$11.$$s = self, $$11.$$arity = 1, $$11)); - return [damages, resultText]; - }, $BattleTech_getDamages$10.$$arity = 3); - - Opal.def(self, '$getDamageInfo', $BattleTech_getDamageInfo$12 = function $$getDamageInfo(dice, damage, isLrm, index) { - var self = this, currentDamage = nil; - - - if ($truthy(dice['$nil?']())) { - return [damage, damage.$to_s()]}; - if ($truthy(isLrm)) { - } else { - return [damage, "" + "[" + (dice) + "] " + (damage)] - }; - currentDamage = $rb_minus(damage, $rb_times($$($nesting, 'LRM_LIMIT'), index)); - if ($truthy($rb_gt(currentDamage, $$($nesting, 'LRM_LIMIT')))) { - currentDamage = $$($nesting, 'LRM_LIMIT')}; - return [currentDamage, currentDamage.$to_s()]; - }, $BattleTech_getDamageInfo$12.$$arity = 4); - - Opal.def(self, '$getTotalDamage', $BattleTech_getTotalDamage$13 = function $$getTotalDamage(damages) { - var $$14, self = this, parts = nil, allDamage = nil, damageTexts = nil, result = nil; - - - parts = ["頭", "胴中央", "右胴", "左胴", "右脚", "左脚", "右腕", "左腕"]; - allDamage = 0; - damageTexts = []; - $send(parts, 'each', [], ($$14 = function(part){var self = $$14.$$s || this, $$15, damageInfo = nil, damage = nil, damageCount = nil, criticals = nil, text = nil; - - - - if (part == null) { - part = nil; - }; - damageInfo = damages.$delete(part); - if ($truthy(damageInfo['$nil?']())) { - return nil;}; - damage = $send(damageInfo['$[]']("partDamages"), 'inject', [0], ($$15 = function(sum, i){var self = $$15.$$s || this; - - - - if (sum == null) { - sum = nil; - }; - - if (i == null) { - i = nil; - }; - return $rb_plus(sum, i);}, $$15.$$s = self, $$15.$$arity = 2, $$15)); - allDamage = $rb_plus(allDamage, damage); - damageCount = damageInfo['$[]']("partDamages").$size(); - criticals = damageInfo['$[]']("criticals"); - text = ""; - text = $rb_plus(text, "" + (part) + "(" + (damageCount) + "回) " + (damage) + "点"); - if ($truthy(criticals['$empty?']())) { - } else { - text = $rb_plus(text, "" + " " + (criticals.$join(" "))) - }; - return damageTexts['$<<'](text);}, $$14.$$s = self, $$14.$$arity = 1, $$14)); - if ($truthy(damages['$empty?']())) { - } else { - self.$raise("" + "damages rest!! " + (damages.$inspect())) - }; - result = damageTexts.$join(" / "); - result = $rb_plus(result, "" + " > 合計ダメージ " + (allDamage) + "点"); - return result; - }, $BattleTech_getTotalDamage$13.$$arity = 1); - - Opal.def(self, '$getHitResultOne', $BattleTech_getHitResultOne$16 = function $$getHitResultOne(damage_text, hit_part_table) { - var self = this, hit_part_roll_result = nil, hit_part = nil, critical_hit_may_occur_str = nil, result_parts = nil, critical_hit_occurred = nil, criticalText = nil, ct_roll_result = nil; - - - hit_part_roll_result = hit_part_table.$roll(self.$bcdice()); - hit_part = hit_part_roll_result.$content(); - critical_hit_may_occur_str = (function() {if ($truthy(hit_part.$critical_hit_may_occur())) { - return "(致命的命中)" - } else { - return "" - }; return nil; })(); - result_parts = [["" + "[" + (hit_part_roll_result.$sum()) + "]", "" + (hit_part.$name()) + (critical_hit_may_occur_str), "" + (damage_text) + "点"].$join(" ")]; - critical_hit_occurred = false; - criticalText = ""; - if ($truthy(hit_part.$critical_hit_may_occur())) { - - ct_roll_result = $$($nesting, 'TABLES')['$[]']("CT").$roll(self.$bcdice()); - critical_hit_occurred = $rb_gt(ct_roll_result.$sum(), $$($nesting, 'NO_CRITICAL_HIT_LIMIT')); - if ($truthy(critical_hit_occurred)) { - criticalText = ct_roll_result.$content()}; - result_parts.$push("" + "[" + (ct_roll_result.$sum()) + "] " + (ct_roll_result.$content()));}; - return [result_parts.$join(" > "), hit_part.$name(), criticalText]; - }, $BattleTech_getHitResultOne$16.$$arity = 2); - - Opal.def(self, '$getCheckDieResult', $BattleTech_getCheckDieResult$17 = function $$getCheckDieResult(damage) { - var $a, $b, self = this, table = nil, target = nil, dice1 = nil, dice2 = nil, total = nil, result = nil, text = nil; - - - if ($truthy($rb_ge(damage, 6))) { - return "死亡"}; - table = [[1, 3], [2, 5], [3, 7], [4, 10], [5, 11]]; - target = self.$get_table_by_number(damage, table, nil); - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - total = $rb_plus(dice1, dice2); - result = (function() {if ($truthy($rb_ge(total, target))) { - return "成功" - } else { - return "失敗" - }; return nil; })(); - text = "" + (total) + "[" + (dice1) + "," + (dice2) + "]>=" + (target) + " > " + (result); - return text; - }, $BattleTech_getCheckDieResult$17.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["CT", "DW"], {"CT": $$($nesting, 'RangeTable').$new("致命的命中表", "2D6", [[Opal.Range.$new(2, $$($nesting, 'NO_CRITICAL_HIT_LIMIT'), false), "致命的命中はなかった"], [$range(8, 9, false), "1箇所の致命的命中"], [$range(10, 11, false), "2箇所の致命的命中"], [12, "その部位が吹き飛ぶ(腕、脚、頭)または3箇所の致命的命中(胴)"]]), "DW": $$($nesting, 'Table').$new("転倒後の向き表", "1D6", ["同じ(前面から転倒) 正面/背面", "1ヘクスサイド右(側面から転倒) 右側面", "2ヘクスサイド右(側面から転倒) 右側面", "180度逆(背面から転倒) 正面/背面", "2ヘクスサイド左(側面から転倒) 左側面", "1ヘクスサイド左(側面から転倒) 左側面"])}).$freeze()); - Opal.const_set($nesting[0], 'HitPart', $$($nesting, 'Struct').$new("name", "critical_hit_may_occur")); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'HitPart'); - - var $nesting = [self].concat($parent_nesting); - - - Opal.const_set($nesting[0], 'LEFT_TORSO', "左胴"); - Opal.const_set($nesting[0], 'CENTER_TORSO', "胴中央"); - Opal.const_set($nesting[0], 'RIGHT_TORSO', "右胴"); - Opal.const_set($nesting[0], 'LEFT_ARM', "左腕"); - Opal.const_set($nesting[0], 'RIGHT_ARM', "右腕"); - Opal.const_set($nesting[0], 'LEFT_LEG', "左脚"); - Opal.const_set($nesting[0], 'RIGHT_LEG', "右脚"); - Opal.const_set($nesting[0], 'HEAD', "頭"); - return Opal.const_set($nesting[0], 'TABLES', $hash2(["L", "C", "R", "LU", "CU", "RU", "LL", "CL", "RL"], {"L": $$($nesting, 'RangeTable').$new("命中部位表(左)", "2D6", [[2, self.$new($$($nesting, 'LEFT_TORSO'), true)], [3, self.$new($$($nesting, 'LEFT_LEG'), false)], [$range(4, 5, false), self.$new($$($nesting, 'LEFT_ARM'), false)], [6, self.$new($$($nesting, 'LEFT_LEG'), false)], [7, self.$new($$($nesting, 'LEFT_TORSO'), false)], [8, self.$new($$($nesting, 'CENTER_TORSO'), false)], [9, self.$new($$($nesting, 'RIGHT_TORSO'), false)], [10, self.$new($$($nesting, 'RIGHT_ARM'), false)], [11, self.$new($$($nesting, 'RIGHT_LEG'), false)], [12, self.$new($$($nesting, 'HEAD'), false)]]), "C": $$($nesting, 'RangeTable').$new("命中部位表(正面)", "2D6", [[2, self.$new($$($nesting, 'CENTER_TORSO'), true)], [$range(3, 4, false), self.$new($$($nesting, 'RIGHT_ARM'), false)], [5, self.$new($$($nesting, 'RIGHT_LEG'), false)], [6, self.$new($$($nesting, 'RIGHT_TORSO'), false)], [7, self.$new($$($nesting, 'CENTER_TORSO'), false)], [8, self.$new($$($nesting, 'LEFT_TORSO'), false)], [9, self.$new($$($nesting, 'LEFT_LEG'), false)], [$range(10, 11, false), self.$new($$($nesting, 'LEFT_ARM'), false)], [12, self.$new($$($nesting, 'HEAD'), false)]]), "R": $$($nesting, 'RangeTable').$new("命中部位表(右)", "2D6", [[2, self.$new($$($nesting, 'RIGHT_TORSO'), true)], [3, self.$new($$($nesting, 'RIGHT_LEG'), false)], [$range(4, 5, false), self.$new($$($nesting, 'RIGHT_ARM'), false)], [6, self.$new($$($nesting, 'RIGHT_LEG'), false)], [7, self.$new($$($nesting, 'RIGHT_TORSO'), false)], [8, self.$new($$($nesting, 'CENTER_TORSO'), false)], [9, self.$new($$($nesting, 'LEFT_TORSO'), false)], [10, self.$new($$($nesting, 'LEFT_ARM'), false)], [11, self.$new($$($nesting, 'LEFT_LEG'), false)], [12, self.$new($$($nesting, 'HEAD'), false)]]), "LU": $$($nesting, 'RangeTable').$new("命中部位表(左上半身)", "1D6", [[$range(1, 2, false), self.$new($$($nesting, 'LEFT_TORSO'), false)], [3, self.$new($$($nesting, 'CENTER_TORSO'), false)], [$range(4, 5, false), self.$new($$($nesting, 'LEFT_ARM'), false)], [6, self.$new($$($nesting, 'HEAD'), false)]]), "CU": $$($nesting, 'RangeTable').$new("命中部位表(正面上半身)", "1D6", [[1, self.$new($$($nesting, 'LEFT_ARM'), false)], [2, self.$new($$($nesting, 'LEFT_TORSO'), false)], [3, self.$new($$($nesting, 'CENTER_TORSO'), false)], [4, self.$new($$($nesting, 'RIGHT_TORSO'), false)], [5, self.$new($$($nesting, 'RIGHT_ARM'), false)], [6, self.$new($$($nesting, 'HEAD'), false)]]), "RU": $$($nesting, 'RangeTable').$new("命中部位表(右上半身)", "1D6", [[$range(1, 2, false), self.$new($$($nesting, 'RIGHT_TORSO'), false)], [3, self.$new($$($nesting, 'CENTER_TORSO'), false)], [$range(4, 5, false), self.$new($$($nesting, 'RIGHT_ARM'), false)], [6, self.$new($$($nesting, 'HEAD'), false)]]), "LL": $$($nesting, 'RangeTable').$new("命中部位表(左下半身)", "1D6", [[$range(1, 6, false), self.$new($$($nesting, 'LEFT_LEG'), false)]]), "CL": $$($nesting, 'RangeTable').$new("命中部位表(右下半身)", "1D6", [[$range(1, 3, false), self.$new($$($nesting, 'RIGHT_LEG'), false)], [$range(4, 6, false), self.$new($$($nesting, 'LEFT_LEG'), false)]]), "RL": $$($nesting, 'RangeTable').$new("命中部位表(右下半身)", "1D6", [[$range(1, 6, false), self.$new($$($nesting, 'RIGHT_LEG'), false)]])}).$freeze()); - })($nesting[0], null, $nesting); - return Opal.const_set($nesting[0], 'XRM_DAMAGE_TABLES', $hash2(["SRM2", "SRM4", "SRM6", "LRM5", "LRM10", "LRM15", "LRM20"], {"SRM2": $$($nesting, 'RangeTable').$new("SRM2ダメージ表", "2D6", [[$range(2, 7, false), 1], [$range(8, 12, false), 2]]), "SRM4": $$($nesting, 'RangeTable').$new("SRM4ダメージ表", "2D6", [[2, 1], [$range(3, 6, false), 2], [$range(7, 10, false), 3], [$range(11, 12, false), 4]]), "SRM6": $$($nesting, 'RangeTable').$new("SRM6ダメージ表", "2D6", [[$range(2, 3, false), 2], [$range(4, 5, false), 3], [$range(6, 8, false), 4], [$range(9, 10, false), 5], [$range(11, 12, false), 6]]), "LRM5": $$($nesting, 'RangeTable').$new("LRM5ダメージ表", "2D6", [[2, 1], [$range(3, 4, false), 2], [$range(5, 8, false), 3], [$range(9, 10, false), 4], [$range(11, 12, false), 5]]), "LRM10": $$($nesting, 'RangeTable').$new("LRM10ダメージ表", "2D6", [[$range(2, 3, false), 3], [4, 4], [$range(5, 8, false), 6], [$range(9, 10, false), 8], [$range(11, 12, false), 10]]), "LRM15": $$($nesting, 'RangeTable').$new("LRM15ダメージ表", "2D6", [[$range(2, 3, false), 5], [4, 6], [$range(5, 8, false), 9], [$range(9, 10, false), 12], [$range(11, 12, false), 15]]), "LRM20": $$($nesting, 'RangeTable').$new("LRM20ダメージ表", "2D6", [[$range(2, 3, false), 6], [4, 9], [$range(5, 8, false), 12], [$range(9, 10, false), 16], [$range(11, 12, false), 20]])}).$freeze()); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/BeastBindTrinity.js b/src/assets/dicebot/BeastBindTrinity.js deleted file mode 100644 index b473ce766..000000000 --- a/src/assets/dicebot/BeastBindTrinity.js +++ /dev/null @@ -1,619 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/format"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$module_function', '$===', '$to_s', '$==', '$>']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Format'); - - var $nesting = [self].concat($parent_nesting), $Format_comparison_operator$1, $Format_modifier$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Format_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if ("=="['$===']($case)) {return "="} - else if ("!="['$===']($case)) {return "<>"} - else if ($$($nesting, 'Symbol')['$===']($case)) {return op.$to_s()} - else { return nil }})() - }, $Format_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$modifier', $Format_modifier$2 = function $$modifier(number) { - var self = this; - - if (number['$=='](0)) { - return "" - } else if ($truthy($rb_gt(number, 0))) { - return "" + "+" + (number) - } else { - return number.$to_s() - } - }, $Format_modifier$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/normalize"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; - - Opal.add_stubs(['$module_function', '$===', '$==', '$to_i']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Normalize'); - - var $nesting = [self].concat($parent_nesting), $Normalize_comparison_operator$1, $Normalize_target_number$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Normalize_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if (/<=|==|=>/['$===']($case)) {return ">="} - else if (/<>|!=|=!/['$===']($case)) {return "!="} - else if (//['$===']($case)) {return ">"} - else if (/\=/['$===']($case)) {return "=="} - else { return nil }})() - }, $Normalize_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$target_number', $Normalize_target_number$2 = function $$target_number(val) { - var self = this; - - if (val['$==']("?")) { - return val - } else { - return val.$to_i() - } - }, $Normalize_target_number$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$freeze', '$match', '$raise', '$to_i', '$[]', '$roll', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Table'); - - var $nesting = [self].concat($parent_nesting), $Table_initialize$1, $Table_roll$2; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $Table_initialize$1 = function $$initialize(name, type, items) { - var self = this, m = nil; - - - self.name = name; - self.items = items.$freeze(); - m = /(\d+)D(\d+)/i.$match(type); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "Unexpected table type: " + (type)) - }; - self.times = m['$[]'](1).$to_i(); - return (self.sides = m['$[]'](2).$to_i()); - }, $Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $Table_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, value = nil, index = nil; - - - $b = bcdice.$roll(self.times, self.sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(value, self.times); - return "" + (self.name) + "(" + (value) + ") > " + (self.items['$[]'](index)); - }, $Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/d66_grid_table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; - - Opal.add_stubs(['$freeze', '$roll', '$-', '$[]']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'D66GridTable'); - - var $nesting = [self].concat($parent_nesting), $D66GridTable_initialize$1, $D66GridTable_roll$2; - - self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $D66GridTable_initialize$1 = function $$initialize(name, items) { - var self = this; - - - self.name = name; - return (self.items = items.$freeze()); - }, $D66GridTable_initialize$1.$$arity = 2); - return (Opal.def(self, '$roll', $D66GridTable_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, index1 = nil, index2 = nil; - - - $b = bcdice.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = bcdice.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - index1 = $rb_minus(dice1, 1); - index2 = $rb_minus(dice2, 1); - return "" + (self.name) + "(" + (dice1) + (dice2) + ") > " + (self.items['$[]'](index1)['$[]'](index2)); - }, $D66GridTable_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$parse', '$roll_with_dice_pool', '$empty?', '$sort', '$map', '$max', '$inject', '$calc_total', '$!=', '$join', '$compact', '$command_expr', '$interim_expr', '$dice_status', '$to_s', '$result_compare', '$private', '$match', '$to_i', '$[]', '$eval', '$new', '$parse_critical', '$!', '$nil?', '$parse_fumble', '$split', '$to_proc', '$>', '$size', '$pop', '$-', '$comparison_operator', '$min', '$+', '$critical_from_humanity', '$<=', '$roll', '$modifier', '$critical?', '$fumble?', '$>=', '$<', '$send', '$roll_tables', '$freeze', '$setPrefixes', '$keys']); - - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/format"); - self.$require("utils/normalize"); - self.$require("utils/table"); - self.$require("utils/d66_grid_table"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BeastBindTrinity'); - - var $nesting = [self].concat($parent_nesting), $BeastBindTrinity_initialize$1, $BeastBindTrinity_rollDiceCommand$18; - - - Opal.const_set($nesting[0], 'ID', "BeastBindTrinity"); - Opal.const_set($nesting[0], 'NAME', "ビーストバインド トリニティ"); - Opal.const_set($nesting[0], 'SORT_KEY', "ひいすとはいんととりにてい"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 (nBB+m%w@x#y$z&v)\n" + " n個のD6を振り、出目の大きい2個から達成値を算出。修正mも可能。\n" + "\n" + " %w、@x、#y、$z、&vはすべて省略可能。\n" + ">%w:現在の人間性が w であるとして、クリティカル値(C値)を計算。\n" + "・省略した場合、C値=12として達成値を算出する。\n" + ">@x:クリティカル値修正。(加減式でも入力可能)\n" + "・xに直接数字を書くと、C値をその数字に上書きする。\n" + " 「絶対にクリティカルしない」状態は、@13など xを13以上に指定すること。\n" + "・xの先頭が「+」か「-」なら、計算したC値にその値を加算。例)@-1、@+2\n" + " この方法でC値をプラスする場合、上限は12となる。\n" + ">#y、#Ay:ファンブル値修正。(加減式でも入力可能)\n" + "・yに直接数字を書くと、ファンブル値をその数字に設定。\n" + "・yの数字の先頭が「+」か「-」なら、ファンブル値=2にその数字を加算。例)#+2\n" + "・※#Ayとすると、ファンブルしても達成値を通常通り算出。 例)#A+1\n" + ">$z:ダイスの出目をzに固定して判定する。複数指定可。\n" + "   《運命歪曲》など「ダイスの1個を振り直す」効果等に使用する。\n" + " 例)2BB$1 →ダイスを2個振る判定で、ダイス1個の出目を1で固定\n" + " 例)2BB$16→ダイスを2個振る判定で、ダイスの出目を1と6で固定\n" + ">&v:出目がv未満のダイスがあれば、出目がvだったものとして達成値を計算する。\n" + " 例)2BB&3 →出目3未満(→出目1、2)を出目3だったものとして計算。\n" + "\n" + "・D66ダイスあり\n" + "・邂逅表:EMO\n" + "・暴露表:EXPO_A\n" + "・魔獣化暴露表:EXPO_B\n" + "・アイドル専用暴露表:EXPO_I\n" + "・アイドル専用魔獣化暴露表:EXPO_J\n" + "・正体判明チャートA~C:FACE_A, FACE_B, FACE_C\n"); - - Opal.def(self, '$initialize', $BeastBindTrinity_initialize$1 = function $$initialize() { - var $iter = $BeastBindTrinity_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $BeastBindTrinity_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $BeastBindTrinity_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 0; - return (self.d66Type = 2); - }, $BeastBindTrinity_initialize$1.$$arity = 0); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BBCommand'); - - var $nesting = [self].concat($parent_nesting), $BBCommand_initialize$2, $BBCommand_roll$3, $BBCommand_parse$5, $BBCommand_parse_critical$6, $BBCommand_critical_from_humanity$7, $BBCommand_parse_fumble$8, $BBCommand_roll_with_dice_pool$9, $BBCommand_command_expr$11, $BBCommand_interim_expr$12, $BBCommand_dice_status$13, $BBCommand_fumble$ques$14, $BBCommand_critical$ques$15, $BBCommand_calc_total$16, $BBCommand_result_compare$17; - - self.$$prototype.parse_error = self.$$prototype.command = self.$$prototype.dice_pool = self.$$prototype.dice_num = self.$$prototype.modify_number = self.$$prototype.critical = self.$$prototype.fumble = self.$$prototype.cmp_op = self.$$prototype.target_number = self.$$prototype.dice_total = self.$$prototype.keep_value_on_fumble = nil; - - - Opal.def(self, '$initialize', $BBCommand_initialize$2 = function $$initialize(command) { - var self = this; - - - self.command = command; - return self.$parse(); - }, $BBCommand_initialize$2.$$arity = 1); - - Opal.def(self, '$roll', $BBCommand_roll$3 = function $$roll(bot) { - var $$4, self = this, dice_list_org = nil, dice_list_filtered = nil, total = nil, dice_list_org_str = nil, sequence = nil; - - - if ($truthy(self.parse_error)) { - return nil}; - self.bot = bot; - dice_list_org = self.$roll_with_dice_pool(); - if ($truthy(dice_list_org['$empty?']())) { - return "ERROR:振るダイスの数が0個です"}; - dice_list_filtered = $send(dice_list_org, 'map', [], ($$4 = function(dice){var self = $$4.$$s || this; - if (self.dice_value_lower_limit == null) self.dice_value_lower_limit = nil; - - - - if (dice == null) { - dice = nil; - }; - return [dice, self.dice_value_lower_limit].$max();}, $$4.$$s = self, $$4.$$arity = 1, $$4)).$sort(); - self.dice_total = dice_list_filtered.$inject(0, "+"); - total = self.$calc_total(); - if ($truthy(dice_list_filtered['$!='](dice_list_org))) { - dice_list_org_str = "" + "[" + (dice_list_org.$join(",")) + "]"}; - sequence = [self.$command_expr(), dice_list_org_str, self.$interim_expr(dice_list_filtered), self.$dice_status(), total.$to_s(), self.$result_compare(total)].$compact(); - return sequence.$join(" > "); - }, $BBCommand_roll$3.$$arity = 1); - self.$private(); - - Opal.def(self, '$parse', $BBCommand_parse$5 = function $$parse() { - var $a, self = this, m = nil; - - - m = /^(\d+)(?:R6|BB6?)((?:[\+\-]\d+)+)?(?:%(\-?\d+))?(?:@([\+\-\d]+))?(?:#(A)?([\+\-\d]+))?(?:\$([1-6]+))?(?:&([1-6]))?(?:([>=]+)(\d+))?$/.$match(self.command); - if ($truthy(m)) { - } else { - - self.parse_error = true; - return nil; - }; - self.dice_num = m['$[]'](1).$to_i(); - self.modify_number = (function() {if ($truthy(m['$[]'](2))) { - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(m['$[]'](2)) - } else { - return 0 - }; return nil; })(); - self.critical = self.$parse_critical(m['$[]'](3), m['$[]'](4)); - self.keep_value_on_fumble = m['$[]'](5)['$nil?']()['$!'](); - self.fumble = self.$parse_fumble(m['$[]'](6)); - self.dice_pool = (function() {if ($truthy(m['$[]'](7))) { - return $send(m['$[]'](7).$split(""), 'map', [], "to_i".$to_proc()) - } else { - return [] - }; return nil; })(); - if ($truthy($rb_gt(self.dice_pool.$size(), self.dice_num))) { - self.dice_pool.$pop($rb_minus(self.dice_pool.$size(), self.dice_num))}; - self.dice_value_lower_limit = m['$[]'](8).$to_i(); - self.cmp_op = $$($nesting, 'Normalize').$comparison_operator(m['$[]'](9)); - self.target_number = ($truthy($a = m['$[]'](10)) ? m['$[]'](10).$to_i() : $a); - return (self.parse_error = false); - }, $BBCommand_parse$5.$$arity = 0); - - Opal.def(self, '$parse_critical', $BBCommand_parse_critical$6 = function $$parse_critical(humanity, atmark) { - var self = this, atmark_value = nil, critical = nil; - - - humanity = (function() {if ($truthy(humanity)) { - return humanity.$to_i() - } else { - return 99 - }; return nil; })(); - atmark_value = (function() {if ($truthy(atmark)) { - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(atmark) - } else { - return 0 - }; return nil; })(); - critical = (function() {if ($truthy(/^[+-]/.$match(atmark))) { - return [$rb_plus(self.$critical_from_humanity(humanity), atmark_value), 12].$min() - } else if ($truthy(atmark)) { - return atmark_value - } else { - return self.$critical_from_humanity(humanity) - }; return nil; })(); - return critical; - }, $BBCommand_parse_critical$6.$$arity = 2); - - Opal.def(self, '$critical_from_humanity', $BBCommand_critical_from_humanity$7 = function $$critical_from_humanity(humanity) { - var self = this; - - if ($truthy($rb_le(humanity, 0))) { - return 9 - } else if ($truthy($rb_le(humanity, 20))) { - return 10 - } else if ($truthy($rb_le(humanity, 40))) { - return 11 - } else { - return 12 - } - }, $BBCommand_critical_from_humanity$7.$$arity = 1); - - Opal.def(self, '$parse_fumble', $BBCommand_parse_fumble$8 = function $$parse_fumble(sharp) { - var self = this, sharp_value = nil; - - - sharp_value = (function() {if ($truthy(sharp)) { - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(sharp) - } else { - return 0 - }; return nil; })(); - if ($truthy(/^[+-]/.$match(sharp))) { - return $rb_plus(2, sharp_value) - } else if ($truthy(sharp)) { - return sharp_value - } else { - return 2 - }; - }, $BBCommand_parse_fumble$8.$$arity = 1); - - Opal.def(self, '$roll_with_dice_pool', $BBCommand_roll_with_dice_pool$9 = function $$roll_with_dice_pool() { - var $$10, self = this, dice_times = nil, dice_list = nil; - - - dice_times = $rb_minus(self.dice_num, self.dice_pool.$size()); - dice_list = $rb_plus($send($$($nesting, 'Array'), 'new', [dice_times], ($$10 = function(){var self = $$10.$$s || this; - if (self.bot == null) self.bot = nil; - - return self.bot.$roll(1, 6)['$[]'](0)}, $$10.$$s = self, $$10.$$arity = 0, $$10)), self.dice_pool); - return dice_list.$sort(); - }, $BBCommand_roll_with_dice_pool$9.$$arity = 0); - - Opal.def(self, '$command_expr', $BBCommand_command_expr$11 = function $$command_expr() { - var self = this, modifier = nil; - - - modifier = $$($nesting, 'Format').$modifier(self.modify_number); - return "" + "(" + (self.dice_num) + "BB" + (modifier) + "@" + (self.critical) + "#" + (self.fumble) + (self.cmp_op) + (self.target_number) + ")"; - }, $BBCommand_command_expr$11.$$arity = 0); - - Opal.def(self, '$interim_expr', $BBCommand_interim_expr$12 = function $$interim_expr(dice_list) { - var self = this, expr = nil; - - - expr = "" + (self.dice_total) + "[" + (dice_list.$join(",")) + "]" + ($$($nesting, 'Format').$modifier(self.modify_number)); - if ($truthy(self['$critical?']())) { - expr = $rb_plus(expr, "+20")}; - return expr; - }, $BBCommand_interim_expr$12.$$arity = 1); - - Opal.def(self, '$dice_status', $BBCommand_dice_status$13 = function $$dice_status() { - var self = this; - - if ($truthy(self['$fumble?']())) { - return "ファンブル" - } else if ($truthy(self['$critical?']())) { - return "クリティカル" - } else { - return nil - } - }, $BBCommand_dice_status$13.$$arity = 0); - - Opal.def(self, '$fumble?', $BBCommand_fumble$ques$14 = function() { - var self = this; - - return $rb_le(self.dice_total, self.fumble) - }, $BBCommand_fumble$ques$14.$$arity = 0); - - Opal.def(self, '$critical?', $BBCommand_critical$ques$15 = function() { - var self = this; - - return $rb_ge(self.dice_total, self.critical) - }, $BBCommand_critical$ques$15.$$arity = 0); - - Opal.def(self, '$calc_total', $BBCommand_calc_total$16 = function $$calc_total() { - var self = this, total = nil; - - - total = $rb_plus(self.dice_total, self.modify_number); - if ($truthy(self['$fumble?']())) { - if ($truthy(self.keep_value_on_fumble)) { - } else { - total = 0 - } - } else if ($truthy(self['$critical?']())) { - total = $rb_plus(total, 20)}; - if ($truthy($rb_lt(total, 0))) { - total = 0}; - return total; - }, $BBCommand_calc_total$16.$$arity = 0); - return (Opal.def(self, '$result_compare', $BBCommand_result_compare$17 = function $$result_compare(total) { - var self = this; - - if ($truthy(self.cmp_op)) { - if ($truthy(total.$send(self.cmp_op, self.target_number))) { - return "成功" - } else { - return "失敗" - } - } else { - return nil - } - }, $BBCommand_result_compare$17.$$arity = 1), nil) && 'result_compare'; - })($nesting[0], null, $nesting); - - Opal.def(self, '$rollDiceCommand', $BeastBindTrinity_rollDiceCommand$18 = function $$rollDiceCommand(command) { - var self = this, ret = nil, bb = nil; - - - if ($truthy((ret = self.$roll_tables(command, $$($nesting, 'TABLES'))))) { - return ret}; - bb = $$($nesting, 'BBCommand').$new(command); - return bb.$roll(self); - }, $BeastBindTrinity_rollDiceCommand$18.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["EMO", "EXPO_A", "EXPO_B", "EXPO_I", "EXPO_J", "FACE_A", "FACE_B", "FACE_C"], {"EMO": $$($nesting, 'D66GridTable').$new("邂逅表", [["家族", "家族", "信頼", "信頼", "忘却", "忘却"], ["慈愛", "慈愛", "憧憬", "憧憬", "感銘", "感銘"], ["同志", "同志", "幼子", "幼子", "興味", "興味"], ["ビジネス", "ビジネス", "師事", "師事", "好敵手", "好敵手"], ["友情", "友情", "忠誠", "忠誠", "恐怖", "恐怖"], ["執着", "執着", "軽蔑", "軽蔑", "憎悪", "憎悪"]]), "EXPO_A": $$($nesting, 'Table').$new("暴露表", "1D6", ["噂になるがすぐ忘れられる", "都市伝説として処理される", "ワイドショーをにぎわす", "シナリオ中[迫害状態]になる", "絆の対象ひとりに正体が知られる", "魔獣化暴露表へ"]), "EXPO_B": $$($nesting, 'Table').$new("魔獣化暴露表", "1D6", ["トンデモ業界の伝説になる", "シナリオ中[迫害状態]になる", "シナリオ中[迫害状態]になる", "絆の対象ひとりに正体が知られる", "絆の対象ひとりに正体が知られる", "自衛隊退魔部隊×2D6体の襲撃"]), "EXPO_I": $$($nesting, 'Table').$new("アイドル専用暴露表", "1D6", ["愉快な伝説として人気になる", "ワイドショーをにぎわす", "炎上。シナリオ中[迫害状態]", "所属事務所に2D6時間説教される", "絆の対象ひとりに正体が知られる", "アイドル専用魔獣化暴露表へ"]), "EXPO_J": $$($nesting, 'Table').$new("アイドル専用魔獣化暴露表", "1D6", ["シナリオ中[迫害状態]になる", "シナリオ中[迫害状態]になる", "絆の対象ひとりに正体が知られる", "事務所から契約を解除される", "絆の対象ひとりに正体が知られる", "1D6本のレギュラー番組を失う"]), "FACE_A": $$($nesting, 'Table').$new("正体判明チャートA", "1D6", ["あなたを受け入れてくれる", "あなたを受け入れてくれる", "絆が(拒絶)に書き換わる", "絆がエゴに書き換わる", "気絶しその事実を忘れる", "精神崩壊する"]), "FACE_B": $$($nesting, 'Table').$new("正体判明チャートB", "1D6", ["あなたを受け入れてくれる", "狂乱し攻撃してくる", "退場。その場から逃亡。暴露表へ", "絆がエゴに書き換わる", "精神崩壊する", "精神崩壊する"]), "FACE_C": $$($nesting, 'Table').$new("正体判明チャートC", "1D6", ["あなたを受け入れてくれる", "退場。その場から逃亡。暴露表へ", "退場。その場から逃亡。暴露表へ", "絆がエゴに書き換わる", "精神崩壊する", "精神崩壊する"])}).$freeze()); - return self.$setPrefixes($rb_plus(["\\d+BB.*", "\\d+R6.*"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/BeginningIdol.js b/src/assets/dicebot/BeginningIdol.js deleted file mode 100644 index 4cc4d5213..000000000 --- a/src/assets/dicebot/BeginningIdol.js +++ /dev/null @@ -1,893 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range, $gvars = Opal.gvars; - - Opal.add_stubs(['$setPrefixes', '$==', '$<=', '$>=', '$upcase', '$===', '$to_i', '$last_match', '$rollPerformance', '$textFrom1D6Table', '$textFromD66Table', '$roll', '$even?', '$getD66', '$assoc', '$getSkillList', '$badStatus', '$+', '$[]', '$-', '$getSkillText', '$=~', '$getItem', '$get_table_by_1d6', '$index', '$nil?', '$push', '$setArrayFromD66Table', '$sort!', '$each', '$gsub', '$length', '$include?', '$costume', '$<', '$>', '$!', '$empty?', '$split', '$count', '$join', '$uniq', '$inject', '$map', '$to_proc', '$to_s', '$delete', '$sort', '$checkChance', '$replaceBadStatus', '$chomp', '$loop', '$get_table_by_2d6', '$times', '$sub', '$clone', '$first']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BeginningIdol'); - - var $nesting = [self].concat($parent_nesting), $BeginningIdol_initialize$1, $BeginningIdol_check_nD6$2, $BeginningIdol_rollDiceCommand$3, $BeginningIdol_rollPerformance$5, $BeginningIdol_textFromD66Table$7, $BeginningIdol_checkChance$8, $BeginningIdol_textFrom1D6Table$9, $BeginningIdol_getSkillList$11, $BeginningIdol_badStatus$12, $BeginningIdol_getSkillText$14, $BeginningIdol_setArrayFromD66Table$15, $BeginningIdol_getItem$16, $BeginningIdol_replaceBadStatus$18, $BeginningIdol_costume$19; - - - Opal.const_set($nesting[0], 'ID', "BeginningIdol"); - Opal.const_set($nesting[0], 'NAME', "ビギニングアイドル"); - Opal.const_set($nesting[0], 'SORT_KEY', "ひきにんくあいとる"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・パフォーマンス [r]PDn[+m/-m](r:場に残った出目 n:振る数 m:修正値)\n" + "・ワールドセッティング仕事表 BWT:大手芸能プロ LWT:弱小芸能プロ\n" + " TWT:ライブシアター CWT:アイドル部 LO[n]:地方アイドル(n:チャンス)\n" + " SU:情熱の夏 WI:ぬくもりの冬 NA:大自然 GA:女学園 BA:アカデミー\n" + "・仕事表 WT VA:バラエティ MU:音楽関係 DR:ドラマ関係\n" + " VI:ビジュアル関係 SP:スポーツ CHR:クリスマス PAR:パートナー関係\n" + " SW:お菓子 AN:動物 MOV:映画 FA:ファンタジー\n" + "・ランダムイベント RE\n" + "・ハプニング表 HA\n" + "・特技リスト AT[n](n:分野No.)\n" + "・アイドルスキル修得表 SGT:チャレンジガールズ RS:ロードトゥプリンス\n" + "・変調 BT[n](n:発生数)\n" + "・アイテム IT[n](n:獲得数)\n" + "・アクセサリー ACT:種別決定 ACB:ブランド決定 ACE:効果表\n" + "・衣装 DT:チャレンジガールズ RC:ロードトゥプリンス FC:フォーチュンスターズ\n" + "・無茶ぶり表 LUR:地方アイドル SUR:情熱の夏 WUR:ぬくもりの冬\n" + " NUR:大自然 GUR:女学園 BUR:アカデミー\n" + "・センタールール HW:向かい風シーン表 FL:駆け出しシーン表 LN:孤独表\n" + " マイスキル【MS:名前決定 MSE:効果表】 演出表【ST FST:ファンタジー】\n" + "・合宿ルール 散策表【SH:ショッピングモール MO:山 SEA:海 SPA:温泉街】\n" + " TN:夜語りシチュエーション表 成長表【CG:コモン GG:ゴールド】\n" + "・サビ表 CHO SCH:情熱の夏 WCH:ぬくもりの冬 NCH:大自然\n" + " GCH:女性向け PCH:力強い\n" + "・キャラ空白表 CBT:チャレンジガールズ RCB:ロードトゥプリンス\n" + "・趣味空白表 HBT:チャレンジガールズ RHB:ロードトゥプリンス\n" + "・マスコット暴走表 RU\n" + "・アイドル熱湯風呂 nC:バーストタイム(n:温度) BU:バースト表\n" + "・攻撃 n[S]A[r][+m/-m](n:振る数 S:失敗しない r:取り除く出目 m:修正値)\n" + "・かんたんパーソン表 SIP\n" + "・会場表\n" + " BVT:大手芸能プロ LVT:弱小芸能プロ TVT:ライブシアター CVT:アイドル部\n" + "・場所表\n" + " BST:大手芸能プロ LST:弱小芸能プロ TST:ライブシアター CST:アイドル部\n" + "・プレッシャー種別決定表\n" + " BPT:大手芸能プロ LPT:弱小芸能プロ TPT:ライブシアター CPT:アイドル部\n" + "・道具表\n" + " BIT:大手芸能プロ LIT:弱小芸能プロ TIT:ライブシアター CIT:アイドル部\n" + "[]内は省略可 D66入れ替えあり\n"); - self.$setPrefixes(["[1-7]*PD\\d+(?:[\\+\\-]\\d+)?", "HW", "BWT", "LWT", "TWT", "CWT", "LO\\d{0,2}", "SU", "WI", "NA", "GA", "BA", "WT", "VA", "MU", "DR", "VI", "SP", "CHR", "PAR", "SW", "AN", "MOV", "FA", "RE", "HA", "AT[1-6]?", "LUR", "SUR", "WUR", "NUR", "GUR", "BUR", "BT\\d*", "SGT", "RS", "SH", "MO", "SEA", "SPA", "TN", "CG", "GG", "FL", "LN", "MS", "MSE", "ST", "FST", "CHO", "SCH", "WCH", "NCH", "GCH", "PCH", "IT\\d*", "ACT", "ACB", "ACE", "DT", "RC", "FC", "CBT", "RCB", "HBT", "RHB", "RU", "\\d{2}C", "BU", "\\d+S?A[1-6]*(?:[\\+\\-]\\d+)?", "SIP", "BVT", "LVT", "TVT", "CVT", "BST", "LST", "TST", "CST", "BPT", "LPT", "TPT", "CPT", "BIT", "LIT", "TIT", "CIT"]); - - Opal.def(self, '$initialize', $BeginningIdol_initialize$1 = function $$initialize() { - var $iter = $BeginningIdol_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $BeginningIdol_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $BeginningIdol_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $BeginningIdol_initialize$1.$$arity = 0); - - Opal.def(self, '$check_nD6', $BeginningIdol_check_nD6$2 = function $$check_nD6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル(変調がランダムに1つ発生し、PCは【思い出】を1つ獲得する)" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > スペシャル!(PCは【思い出】を1つ獲得する)" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $BeginningIdol_check_nD6$2.$$arity = 5); - Opal.alias(self, "check_2D6", "check_nD6"); - - Opal.def(self, '$rollDiceCommand', $BeginningIdol_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var $a, $b, $$4, self = this, $case = nil, counts = nil, residual = nil, adjust = nil, title = nil, table = nil, value = nil, number = nil, name = nil, isSwap = nil, dice = nil, outcome = nil, text = nil, page = nil, table1 = nil, table2 = nil, skillTitle = nil, skillTable = nil, nameTable = nil, articleTitle = nil, articleTable = nil, describeTitle = nil, describeTable = nil, sceneTitle = nil, sceneTable = nil, materialTitle = nil, materialTable = nil, actionTitle = nil, actionTable = nil, nameNumber = nil, nameParts = nil, articleIndex = nil, numberString = nil, bookTitle = nil, degrees = nil, total = nil, string = nil, sure = nil, remove = nil, result = nil; - - - $case = command.$upcase(); - if (/^([1-7]*)PD(\d+)([\+\-]\d+)?$/['$===']($case)) { - counts = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($rb_le(counts, 0))) { - return nil}; - residual = $$($nesting, 'Regexp').$last_match(1); - adjust = $$($nesting, 'Regexp').$last_match(3).$to_i(); - return self.$rollPerformance(counts, residual, adjust);} - else if ("HW"['$===']($case)) { - title = "向かい風シーン表"; - table = ["誰もいない屋内。静寂が世界を包んでいる。嵐の前の静けさだ。", "話し声が絶えない夕暮れの帰り道。みんなが明るい声を上げる中、自分の周りだけがぽっかり穴が空いたかのように静かだ。", "曇り空になってきた。早く屋内に行かないと、雨でぬれてしまうかもしれない。", "ゲリラ豪雨だ。傘も持ってきていないので、激しい雨に打たれるしかない。ついてないな。", "夜空を雲が覆いつくしてしまっている。空を見上げても、星の輝きは見えない。", "屋内の電気がトラブルで点灯しないようだ。暗い世界は、気分まで滅入ってしまう。"]; - return self.$textFrom1D6Table(title, table);} - else if ("BWT"['$===']($case)) { - title = "大手芸能プロダクション仕事表"; - table = [[11, "オフ", ""], [12, "先輩アイドルが司会を務めるバラエティ番組に出演! どんなコーナーを任されるんだろう?", "趣味分野からランダム"], [13, "先輩アイドルと街歩き番組で共演。この街には何があるんだろう?", "出身分野からランダム"], [14, "先輩アイドルが音楽番組に出演。バックダンサーを務めることに。", "《ダンス/趣味9》"], [15, "先輩アイドルと一緒にグラビア撮影。負けないように目立とう。", "《マイペース/キャラ4》"], [16, "アイドル紹介番組で、先輩アイドルから紹介される。元気にいこう。", "《元気/キャラ8》"], [22, "オフ", ""], [23, "先輩アイドルのラジオ番組にゲスト出演。トークでうまく盛り上げられるかな?", "《キャラ分野の空白/キャラ7》"], [24, "同期アイドルたちと一緒に、大掛かりなアスレチックセットに挑戦!", "《運動神経/才能8》"], [25, "特別な衣装で行う演劇の仕事がやって来た。どんな衣装なんだろう?", "属性分野からランダム"], [26, "プロダクションの超大御所が出演する番組に呼ばれる。", "《胆力/才能5》"], [33, "オフ", ""], [34, "シーンプレイヤーのキャラクターを活かしたミニドラマが制作される。", "シーンプレイヤーの修得しているキャラ分野の特技"], [35, "海外ロケを行うプロダクション制作の旅番組に出演。今日はどこまで行くんだろうか?", "《海外/出身12》"], [36, "プロダクション内の劇場で、シーンプレイヤーの「好きなもの」を使った演劇が始まる。", "シーンプレイヤーの修得している趣味分野の特技"], [44, "オフ", ""], [45, "ファッションブランドと提携したファッションショーに招待される。", "《おしゃれ/趣味5》"], [46, "アイドル雑誌の出版社から取材がやってきた。うまく対応しよう。", "《物腰丁寧/キャラ10》"], [55, "オフ", ""], [56, "シリーズもののドラマにちょっとした役で出演!", "《演技力/才能12》"], [66, "プロダクション内で総選挙が開始! 今回のテーマは……?", "ランダム"]]; - return self.$textFromD66Table(title, table);} - else if ("LWT"['$===']($case)) { - title = "弱小芸能プロダクション仕事表"; - table = [[11, "オフ", ""], [12, "パートナープレイヤーの「身体的特徴」にびびっと来たTV曲からオファーが来る。", "パートナープレイヤーが修得している身長分野の特技"], [13, "スタントマンなしのアクションドラマが製作開始! オーディションを受けることに。", "《運動神経/才能8》"], [14, "歌番組のオーディションに挑戦! たくさんのライバルの中から、選ばれることを目指す!", "《集中力/キャラ4》"], [15, "飲み屋に営業へ。アイドルにあまり興味なさそうな客層だけど……。", "《マイペース/キャラ4》"], [16, "結婚式のパンフレット写真を撮ることに。花嫁さんってどんな気分だろう?", "《スタイル/才能3》"], [22, "オフ", ""], [23, "CDデビューをかけて、バラエティ番組で他のアイドルと対決!", "キャラ分野からランダム"], [24, "CDショップで、CDを手渡し販売。よろしくお願いします。", "《元気/キャラ8》"], [25, "ローカル番組に出演。この地方では、何が流行っているんだろう?", "出身分野からランダム"], [26, "劇の脇役を勝ち取るためにオーディションを受ける。平凡な女の子を演じるらしい。", "《プレーン/属性7》"], [33, "オフ", ""], [34, "パートナープレイヤーの「好きなもの」が題材のドラマが製作中。オーディションを受けよう。", "パートナープレイヤーが修得している属性分野の特技"], [35, "パートナープレイヤーの「嫌いなもの」を題材にしたドラマにオファーが……。", "パートナープレイヤーが修得している趣味分野の特技"], [36, "コーラスに欠員が出たアイドルライブの穴埋めとして選ばれる。主役のキャラに合わせないと。", "属性分野からランダム"], [44, "オフ", ""], [45, "PCたちの事務所にレポートのカメラが入る。小さいけどがんばってます!", "ランダム"], [46, "オフ", ""], [55, "オフ", ""], [56, "オフ", ""], [66, "オフ", ""]]; - return self.$textFromD66Table(title, table);} - else if ("TWT"['$===']($case)) { - title = "ライブシアター仕事表"; - table = [[11, "オフ", ""], [12, "シアター内でドラマを収録。テーマは、パートナープレイヤーの「好きなもの」だ。", "パートナープレイヤーが修得している属性分野の特技"], [13, "シアター内で売り出すCDを制作。テーマは、シーンプレイヤーの「好きなもの」だ。", "シーンプレイヤーが修得している趣味分野の特技"], [14, "シアターの売店に駆り出される。直接お客さんと触れ合うチャンス!", "《笑顔/才能7》"], [15, "シアター内でグッズを販売。今の売れ線は何かな?", "キャラ分野からランダム"], [16, "シアター内で握手会を開催! 来てくれたみんなに感謝を。", "《気配り/才能9》"], [22, "オフ", ""], [23, "今回の劇、シーンプレイヤーの【背景】を元にしたノンフィクションドラマ!", "趣味分野からランダム"], [24, "シアターを使って、バラエティの企画が開始。みんなを笑わせよう。", "《ばか/キャラ12》"], [25, "シアターに流れるミニラジオの収録。メンバーに無茶ぶりをするコーナーが見せ場。", "キャラ分野からランダム"], [26, "シアターにファッションデザイナーを招いてファッションショー。うまく魅せていこう。", "属性分野からランダム"], [33, "オフ", ""], [34, "シアター企画、1D6時間耐久ダンスが始まる……!", "《体力/才能6》"], [35, "シアター企画、パートナープレイヤーは「嫌いなもの」に何回挑戦できるか!", "パートナープレイヤーが修得している趣味分野の特技"], [36, "シアター企画、シーンプレイヤー対「嫌いなもの」!", "シーンプレイヤーが修得しているキャラ分野の特技"], [44, "オフ", ""], [45, "シアター企画、非常に高いゴールを使ったバスケット! ……本当にできるの?", "《190~/身長12》"], [46, "シアター企画、動物と触れ合うアイドルの姿を中継!", "《ペット/趣味3》"], [55, "オフ", ""], [56, "シアターの外で行う仕事をこなす。", "ランダム"], [66, "オフ", ""]]; - return self.$textFromD66Table(title, table);} - else if ("CWT"['$===']($case)) { - title = "アイドル部仕事表"; - table = [[11, "オフ", ""], [12, "先生に頼まれて、入部希望者たちの校内案内を務めることになった。", "《物腰丁寧/キャラ10》"], [13, "校内イベントの司会進行をすることになった。うまく盛り上げられるかな?", "《ポップ/属性9》"], [14, "校内放送に出演。全校生徒の前でも、緊張しないようにしないと。", "《胆力/才能5》"], [15, "部活の大会に応援をしに行くことに。長い試合は、体力勝負だ。", "《体力/才能6》"], [16, "アイドル部を取材する記者がやって来た。うまく自分たちの言葉を語れるかな?", "《気配り/才能9》"], [22, "オフ", ""], [23, "近くの幼稚園で歌を披露することになった。小さい子と目線を合わせないと……。", "《~125/身長2》"], [24, "メイド喫茶をすることになった。パートナープレイヤーの「好きなもの」が主なメニューだ。", "パートナープレイヤーが修得している趣味分野の特技"], [25, "校内のイベントを取材することになった。そこにはパートナープレイヤーの「嫌いなもの」が……。", "パートナープレイヤーが修得しているキャラ分野の特技"], [26, "パートナープレイヤーの「ファッション特徴」を活かした、校内ファッションショー。", "パートナープレイヤーが修得している属性分野の特技"], [33, "オフ", ""], [34, "地元の商店街からお店の手伝いを依頼される。町を盛り上げていこう。", "《ショッピング/趣味8》"], [35, "地元のイベントに出演。郷土愛が試される!", "プロデューサーが出身分野の特技から選ぶ"], [36, "パートナープレイヤーの「身体的特徴」に惹かれた企業からオファーが来た!", "《セクシー/属性4》"], [44, "オフ", ""], [45, "オフ", ""], [46, "オフ", ""], [55, "オフ", ""], [56, "オフ", ""], [66, "オフ", ""]]; - return self.$textFromD66Table(title, table);} - else if (/^LO(\d{0,2})$/['$===']($case)) { - value = $$($nesting, 'Regexp').$last_match(1); - title = "地方アイドル仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "握手会をすることになった。遠方から自分たち目当てにやって来るお客さんも多数見える。チャンスが5以下ならオフ。", "《アイドル/趣味12》"], [14, "ミニコンサートが全国放送で小さく紹介される。ちょっとだけ、外見が注目されたみたいだ。チャンスが4以下ならオフ。", "《スタイル/才能3》"], [15, "地元ラジオ局で自分たちの番組が始まる。チャンスが3以下ならオフ。", "《キャラ分野の空白/趣味7》"], [16, "地元のテレビ局にゲスト出演。うまく自分たちを紹介できるだろうか? チャンスが3以下ならオフ。", "好きな出身分野の特技"], [22, "オフ", ""], [23, "街頭でティッシュ配りの手伝いをする。笑顔を忘れずに、がんばろう。", "《笑顔/才能7》"], [24, "地元のお手伝いの一環として、害虫退治に駆り出された。なぜ、こんなことに。", "《胆力/才能5》"], [25, "畑仕事のお手伝いをすることになった。とりあえず、体力が要求される。", "《体力/才能6》"], [26, "ショッピングモールのお手伝いをすることになった。うまくお手伝いができれば、繁盛するかも。", "《ショッピング/趣味8》"], [33, "オフ", ""], [34, "インターネットラジオに出演。声とトークで。地域のことを伝えていこう。", "《異国文化/才能2》"], [35, "地元のテレビ局の取材が入る。テーマは、地方でがんばっている人たちだ。", "《元気/キャラ8》"], [36, "デパートで風船を配るお手伝い。子どもたち相手のお仕事は、ちょっと大変です。", "《気配り/才能9》"], [44, "オフ", ""], [45, "着ぐるみを着て、市民と交流。暑くてつらい仕事だけど、大切な交流の時間です。", "《バーニング/属性10》"], [46, "観光地の物販コーナーで地元の特産品を売るお手伝い。地方アイドル的に、大切なお仕事。", "好きな出身分野の特技"], [55, "オフ", ""], [56, "動画サイトのチャンネルで、自分たちの宣伝を行なうことに。世界中に発信!", "《スター/属性12》"], [66, "オフ", ""]]; - return self.$textFromD66Table(title, table, value);} - else if ("SU"['$===']($case)) { - title = "情熱の夏仕事表"; - table = [[11, "オフ", ""], [12, "飲料水のコマーシャル。美味しそうに飲もう。", "《演技力/才能12》"], [13, "夏のパレードのコマーシャル。今回のテーマは、パートナープレイヤーの「好きなもの」。", "パートナープレイヤーが修得している趣味分野の特技"], [14, "海水浴場のコマーシャル。見ている人に、元気をおすそ分けできればいいな。", "《ポップ/属性9》"], [15, "避暑地のコマーシャル。涼しいところで、ゆったりと過ごしているところをお届け。", "《マイペース/キャラ4》"], [16, "虫避け商品のコマーシャル。虫に立ち向かう男らしさを求められる。", "《硬派/キャラ9》"], [22, "オフ", ""], [23, "水族館で元気なイルカたちとショーをする。", "《元気/キャラ8》"], [24, "少年野球の始球式を任される。球児たちに恥ずかしくないピッチングを魅せないと。", "《スポーツ/趣味4》"], [25, "夏のファッションを雑誌で発表することになった。この時期のコーデはこれ!", "《おしゃれ/趣味5》"], [26, "番組で夏野菜を美味しく食べる必要に迫られる。ゴーヤをアイドルらしく食べよう。", "《沖縄/出身2》"], [33, "オフ", ""], [34, "ビーチバレーで敵のアイドルと対決だ! 夏の暑さに負けるな!", "《バーニング/属性10》"], [35, "ビーチで他のアイドルとナンパ対決をすることになった。どちらがうまくこなせるかな?", "《軟派/キャラ5》"], [36, "夏のグルメ特集! 夏バテ防止のためにも、たくさん食べるところを魅せなければ。", "《料理/趣味6》"], [44, "オフ", ""], [45, "夏休みの子供たちと触れ合う番組に呼ばれる。子供たちの相手も大変だ。", "《気配り/才能9》"], [46, "夏の旅行番組。夏ならではの、地元の強みを伝えることに。", "シーンプレイヤーが修得している出身分野の特技"], [55, "オフ", ""], [56, "夏だからアツアツのお風呂に叩きこまれる。リアクションを撮りたいようだ。", "《ばか/キャラ12》"], [66, "オフ", ""]]; - return self.$textFromD66Table(title, table);} - else if ("WI"['$===']($case)) { - title = "ぬくもりの冬仕事表"; - table = [[11, "オフ", ""], [12, "クリスマスがテーマのコマーシャルソングを歌う。恋人たちに祝福を!", "《パッション/属性8》"], [13, "スキー場のコマーシャルムービーを撮ることに。うまく滑れるといいな。", "《スポーツ/趣味4》"], [14, "苦い失恋をテーマにしたコマーシャルムービーを撮ることになった。クールに決めよう。", "《クール/属性11》"], [15, "スケートリンクのコマーシャルムービーに出演。氷上で華麗にダンスを決めよう。", "《ダンス/趣味9》"], [16, "アイスのコマーシャルムービーに出演。寒いのを耐えろ!", "《胆力/才能5》"], [22, "オフ", ""], [23, "年末年始に流れる鉄道のコマーシャルムービーに起用される。清潔感のある演技が必要だ。", "《プレーン/属性7》"], [24, "温泉地のコマーシャル。温泉に必要なのは、やっぱりセクシーさかな?", "《セクシー/属性4》"], [25, "冬ファッションを雑誌で紹介することになった。冬コーデはこれで決まり!", "《おしゃれ/趣味5》"], [26, "雪かきの大変さを伝えるために、東北で雪かきを手伝う。これは重労働だ。", "《東北地方/出身10》"], [33, "オフ", ""], [34, "年末のバラエティ番組で、関西の芸人と一緒にコントをやることになった。ノリを合わせよう。", "《近畿地方/出身6》"], [35, "年末のフェスで、有名アイドルたちと共演! スターに負けない迫力を出そう。", "《スター/属性12》"], [36, "冬の北海グルメを伝えるために、北海道に飛ぶ。果たして、寒さに耐えられるのか。", "《北海道/出身11》"], [44, "オフ", ""], [45, "冬のグルメ特集。鍋の作り方を教えます。", "《料理/趣味6》"], [46, "バレンタインに向けて、女の子たちにアドバイス。", "《フェミニン/属性5》"], [55, "オフ", ""], [56, "冬だからアツアツのお風呂に叩きこまれる。暖かいというか熱い!", "《ばか/キャラ12》"], [66, "オフ", ""]]; - return self.$textFromD66Table(title, table);} - else if ("NA"['$===']($case)) { - title = "大自然仕事表"; - table = [[11, "オフ", ""], [12, "渓流で釣り対決! たくさん釣ったほうが勝ち!", "《集中力/才能4》"], [13, "海岸で釣りをすることに。釣った魚がおいしいほうが勝ち。", "《胆力/才能5》"], [14, "虫取りに挑戦。元気に戯れる図を撮りたいとのこと。", "《元気/キャラ8》"], [15, "キャンプを張ろう。みんな快適に寝泊りができるように、心配りが大事。", "《気配り/才能9》"], [16, "海で泳ぎの対決。自分のペースを守って、戦おう。", "《マイペース/キャラ4》"], [22, "オフ", ""], [23, "森でナンパ対決! ……動物にモテた方が勝ち!", "《ペット/趣味3》"], [24, "森で鬼ごっこをすることになった。相手の動きを読めば勝てる!", "パートナープレイヤーが修得している身長分野の特技"], [25, "森の奥で、動物との戦いが始まった。や、やるしかない。", "《運動神経/才能8》"], [26, "オフ", ""], [33, "オフ", ""], [34, "料理ができる男をここでアピール! 飯盒炊爨(はんごうすいさん)に挑戦!", "《料理/趣味6》"], [35, "山登り対決。早く登るよりも、怪我をしないように気をつけたい。", "《体力/才能6》"], [36, "薪拾い。地味な絵面になってしまうので、退屈をさせないように魅せよう。", "《キャラ分野の空白/キャラ7》"], [44, "オフ", ""], [45, "視聴者が喜びそうなここだけの話をパートナープレイヤーにする。", "パートナープレイヤーが修得しているキャラ分野の特技"], [46, "些細なことでパートナープレイヤーと喧嘩になる。どっちが強いか勝負だ!", "パートナープレイヤーが修得している才能分野の特技"], [55, "オフ", ""], [56, "ドラム缶風呂を用意することに。……熱いんだけど!", "《バーニング/属性10》"], [66, "オフ", ""]]; - return self.$textFromD66Table(title, table);} - else if ("GA"['$===']($case)) { - title = "聖デトワール女学園仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "オフ", ""], [14, "オフ", ""], [15, "オフ", ""], [16, "オフ", ""], [22, "学園が主催しているアイドル触れ合いイベントに出演。美しく振舞おう。", "《スタイル/才能3》"], [23, "学園のアイドルたちが出ているラジオに出演。先輩たちに負けないように、がんばろう。", "《元気/キャラ8》"], [24, "学園と提携しているブランドのファッションショーに登場。", "《おしゃれ/趣味5》"], [25, "学園を紹介するDVDに出演。うまく魅力を紹介できるかな?", "《気配り/才能9》"], [26, "学内オーディションに出場。勝ち抜けば、歌番組に出場できる!", "《胆力/才能5》"], [33, "学園が制作しているアイドルドラマに吸血鬼役で出演。恐ろし気な演技、できるかな?", "《オカルト/趣味2》"], [34, "学園が制作しているドラマに出演。演技の中で、どうやって個性を出していこうか。", "キャラ分野からランダム"], [35, "学園主催のミニライブに出演。たくさんの出演者の中から、どうやって目立とう。", "キャラ分野からランダム"], [36, "学園の先輩たちと共演するライブイベントに出演。", "《胆力/才能5》"], [44, "学園の紹介で、おいしい芋の紹介番組に出演。北海道に出発だ!", "《北海道/出身11》"], [45, "学内オーディションで、ポップなCMのイメージガールを決定。戦い抜こう。", "《ポップ/属性9》"], [46, "学内のミュージカルに出演することになった。自分たちの実力を舞台の上で発揮しよう。", "《演技力/才能12》"], [55, "市内の店舗を手伝うドキュメンタリー番組を撮ることに。お店を手伝おう。", "《物腰丁寧/キャラ10》"], [56, "市内のスタジオで収録されている朝の情報番組に出演。朝から元気に行こう。", "《元気/キャラ8》"], [66, "裏山を使った簡単なPV撮影! 山での撮影は体力が要求される。", "《体力/才能6》"]]; - return self.$textFromD66Table(title, table);} - else if ("BA"['$===']($case)) { - title = "アカデミー仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "オフ", ""], [14, "オフ", ""], [15, "オフ", ""], [16, "オフ", ""], [22, "アカデミーの中でも、特に優秀な成績を収めた者を表彰する式が開催される。", "《スター/属性12》"], [23, "アカデミー主催の音楽祭に出演。楽器を演奏して、その姿で魅せよう。", "《音楽/趣味11》"], [24, "アカデミーが製作しているドラマに出演。脇役だけど、しっかりと存在感を出していこう。", "《演技力/才能12》"], [25, "番組の企画で、アカデミー生のアクションを見せることになった。", "《運動神経/才能9》"], [26, "番組の1コーナーで、アカデミー生が様々なスポーツに挑戦する必要があるらしい。がんばろう。", "《スポーツ/趣味4》"], [33, "先輩と一緒にバラエティ番組に出演。面白いリアクションを期待される。", "《ばか/キャラ10》"], [34, "先輩のライブでバックコーラスに参加。美しい声を添えよう。", "《音楽/趣味11》"], [35, "先輩のライブでバックダンサーとして出演。ダイナミックな演出に負けないようにしよう。", "《ダンス/趣味9》"], [36, "先輩が主演を務めているアニメ映画に脇役の声優として出演。光る演技を見せよう。", "《演技力/才能12》"], [44, "同級生と一緒に、漫画作品をモデルにしたミュージカルに出演。熱い気合を求められる。", "《バーニング/属性10》"], [45, "同級生と一緒にキャラ付けの強いビジュアル系バンドを組んで、試験のステージで発表。", "キャラ分野からランダム"], [46, "同級生とファッションを競い合う、セルフプロデュース試験が始まる。", "《おしゃれ/趣味5》"], [55, "一般教養の試験が始まる。恐ろしいことに、その様子を生中継するらしい。", "《学力/才能10》"], [56, "アイドルの歴史を使った、クイズ試験が始まる。", "《アイドル/趣味12》"], [66, "試験のテーマは耽美。セクシーさを仲間と競い合おう。", "《セクシー/属性4》"]]; - return self.$textFromD66Table(title, table);} - else if ("WT"['$===']($case)) { - title = "仕事表"; - table = [[11, "オフ", ""], [12, "握手会が始まる。アイドルとして重要な場面、集中していこう。", "《アイドル/趣味12》"], [13, "パートナープレイヤーの「嫌いなもの」に取材をすることになった。大丈夫かな……?", "パートナープレイヤーが修得している趣味分野の特技"], [14, "シーンプレイヤーの「好きなもの」に関する番組の仕事だ! テンション上がるー!", "シーンプレイヤーが修得している趣味分野の特技"], [15, "パートナープレイヤーの「ファッション特徴」を活かす仕事がやって来た。", "パートナープレイヤーが修得している属性分野の特技"], [16, "クライアントから、もっとパートナープレイヤーの「個性特技」を推していこうよ、と提案を受ける。", "パートナープレイヤーの個性特技"], [22, "オフ", ""], [23, "学園ドラマを撮影! 二人のキャラ付けはどうなるのかな?", "キャラ分野からランダム"], [24, "ドラマのアクションシーンを撮ることに。コンビネーションで切り抜けよう。", "身長分野からランダム"], [25, "感動系のドラマに出演。どんな能力が必要になるかな?", "才能分野からランダム"], [26, "趣味の番組に出演。こんな世界があるのか……。", "趣味分野からランダム"], [33, "オフ", ""], [34, "アイドルだらけのバラエティ番組に参戦! どのアイドルよりも高い点数を取るといいらしい!", "《ばか/キャラ12》"], [35, "スポーツ番組の賑やかしとして呼ばれた! スポーツのこと、わかりますか?", "《スポーツ/趣味4》"], [36, "クイズ番組に二人でゲスト出演。力を合わせて勝ち抜くか、それとも自分らしさを重視するか……。", "《学力/才能10》"], [44, "オフ", ""], [45, "料理番組に出演。どんな料理を作ろうかな。", "《料理/趣味8》"], [46, "CDショップでサイン会を開催。ファンを喜ばせることができるかな?", "《気配り/才能9》"], [55, "オフ", ""], [56, "二人にグラビア撮影の仕事が来た。スタイルのよさを魅せるチャンス?", "《スタイル/才能3》"], [66, "オフ", ""]]; - return self.$textFromD66Table(title, table);} - else if ("VA"['$===']($case)) { - title = "バラエティ仕事表"; - table = [[11, "オフ", ""], [12, "食べたものをリポートする番組に出演。どうすれば味を言葉で表現できるだろうか?", "《料理/趣味6》"], [13, "スポーツする番組に出演。どれだけ活躍できるかが試される。", "《スポーツ/趣味4》"], [14, "トーク番組に出演。二人の喋りをうまく魅せなければ。", "《気配り/才能9》"], [15, "猛獣の檻に入って、ボール遊びをすることに。度胸が肝心!", "《胆力/才能5》"], [16, "パートナープレイヤーの「好きなもの」を題材にした番組コーナーを任された。", "パートナープレイヤーの修得している趣味分野の特技"], [22, "オフ", ""], [23, "街歩き番組に出演。軽快なトークで、素人の人たちからうまい言葉を引き出そう。", "《軟派/キャラ5》"], [24, "釣り番組に出ることになったが、大物を釣るまで帰れないという。さて、動きの少ない釣りでどうやって目立つか……。", "《キャラ分野の空白/キャラ7》"], [25, "パートナープレイヤーの「嫌いなもの」を題材にした番組コーナーで、いじり役を任されることになった。", "パートナープレイヤーの修得しているキャラ分野の特技"], [26, "クイズ番組に出演。問題とどう向き合うか、それが大事だ。", "《学力/才能10》"], [33, "オフ", ""], [34, "農作業体験番組に出演。クワを持って畑に出かけよう。", "《体力/才能6》"], [35, "工作体験番組に出演。いい物をスタジオにお届けできるよう、物づくりを真剣に行おう。", "《集中力/才能4》"], [36, "電子ゲームやアナログゲームを遊ぶ番組に出演。どんな風に盛り上げられるかな?", "《ゲーム/趣味10》"], [44, "オフ", ""], [45, "今日は漫才をするようだ。笑わせるには、何が必要だろうか。", "《ばか/キャラ12》"], [46, "シチュエーションコントに出演。大げさな演技が求められる。", "《演技力/才能12》"], [55, "オフ", ""], [56, "趣味的な番組に出ることになった。今日のテーマは何かな。", "《趣味分野の空白/趣味7》"], [66, "オフ", ""]]; - return self.$textFromD66Table(title, table);} - else if ("MU"['$===']($case)) { - title = "音楽関係仕事表"; - table = [[11, "オフ", ""], [12, "シーンプレイヤーとパートナープレイヤーでミニライブをすることになった。うまく声を合わせよう。", "パートナープレイヤーの修得している属性分野の特技"], [13, "歌番組で取り上げられる。どんな気持ちで歌ったのか、うまく表現して伝えよう。", "《パッション/属性8》"], [14, "パートナープレイヤーとハーモニーを重ねる歌がやってきた。二人の特徴をうまく声に乗せよう。", "パートナープレイヤーの修得している才能分野の特技"], [15, "CDの手渡し販売が開始。心を込めて、笑顔で手渡しだ。", "《笑顔/才能7》"], [16, "レコーディングに音楽業界の大物が立ち会う。緊張せず、自分の実力を発揮しよう。", "《胆力/才能5》"], [22, "オフ", ""], [23, "パートナープレイヤーと話し合って歌詞を作ることになった。お互いのことをよく理解しよう。", "パートナープレイヤーの修得しているキャラ分野の特技"], [24, "活動範囲を広げるために、色々な楽器に挑戦!", "《音楽/趣味11》"], [25, "高級そうなバーで歌うことに。高級感のあるファッションを身につけることを条件に歌うことを許される。", "《セレブ/才能11》"], [26, "中学生がターゲットのCDを販売することになった。心の中の中学生を解放するときが来た!", "《中二病/キャラ2》"], [33, "オフ", ""], [34, "子供向けの歌を作ることになった。視線を子供に近づけないと。", "《~125/身長2》"], [35, "結婚式の歌を任される。祝福の気持ちを込めて歌おう。", "《気配り/才能9》"], [36, "レースを盛り上げるアップテンポな曲を作ることに。", "《元気/キャラ8》"], [44, "オフ", ""], [45, "パートナープレイヤーの地元を象徴するような歌を作ることになった。地元の話を聞き出そう。", "パートナープレイヤーの修得している出身分野の特技"], [46, "ホラームービーの主題歌を担当することになった。怖さを声で表現できるだろうか?", "《オカルト/趣味2》"], [55, "オフ", ""], [56, "作曲家の先生と打ち合わせ。自分のイメージをうまく伝えられるかな?", "《物腰丁寧/キャラ10》"], [66, "オフ", ""]]; - return self.$textFromD66Table(title, table);} - else if ("DR"['$===']($case)) { - title = "ドラマ関係仕事表"; - table = [[11, "オフ", ""], [12, "エキストラで出演。できるだけ目立たないように……。", "《プレーン/属性7》"], [13, "刑事ドラマに刑事役で出演。クールに決めよう。", "《クール/属性11》"], [14, "刑事ドラマに犯人役で出演。悪いことをはぐらかす演技が必要だ。", "《ミステリアス/キャラ3》"], [15, "医療ドラマに医者役で出演。臓器や血にひるまずがんばろう。", "《胆力/才能5》"], [16, "再現アニメの吹き替えに挑戦。できるだけ丁寧に。", "《物腰丁寧/キャラ10》"], [22, "オフ", ""], [23, "悪役に挑戦。暗い気持ちが必要だ。", "《ダーク/属性3》"], [24, "学園ドラマに悩める生徒役で出演。青春らしさをどこまで見せようか。", "《中二病/キャラ2》"], [25, "時代劇に出演。硬派に決めるシーンがやって来た。", "《硬派/キャラ9》"], [26, "特撮にヒーロー役で出演。熱い演技を見せるとき!", "《バーニング/属性10》"], [33, "オフ", ""], [34, "共演者に超有名人が! 緊張せずにがんばろう。", "《マイペース/キャラ4》"], [35, "気難しい監督にいろいろ注意される。どう対応したものか……。", "《スター/属性12》"], [36, "パートナープレイヤーの【背景】を再現したミニドラマを撮るようだ。彼の過去をどう表現したものか。", "パートナープレイヤーの修得している属性分野の特技"], [44, "オフ", ""], [45, "アクションドラマに出演。アクションを決められるかどうかがカギだ。", "《運動神経/才能8》"], [46, "恋愛ドラマに出演。共演者をどきどきさせる演技が必要とのこと。", "《セクシー/属性4》"], [55, "オフ", ""], [56, "感動系ドラマに出演。泣くシーンは、ここ一番の見せ場だ!", "《演技力/才能12》"], [66, "オフ", ""]]; - return self.$textFromD66Table(title, table);} - else if ("VI"['$===']($case)) { - title = "ビジュアル関係仕事表"; - table = [[11, "オフ", ""], [12, "ビーチでグラビア撮影の仕事が入る。肉体美を見せるとき。", "《セクシー/属性4》"], [13, "ファッション誌の取材がやって来て、自分らしいファッションを見せてほしいと頼まれる。", "《キャラ分野の空白/キャラ7》"], [14, "地方ごとのファッションを取り入れるファッションショーが開幕。出演することに。", "出身分野からランダム"], [15, "ファッションショーにモデルとして登場。完璧なスタイルを見せつけろ。", "《スタイル/才能3》"], [16, "雑誌でシーンプレイヤーおすすめコーデを紹介するようだ。どんな組み合わせを街に発信しようか。", "《おしゃれ/趣味5》"], [22, "オフ", ""], [23, "パートナープレイヤーの「身体的特徴」がちょっとした流行になった。乗るしかない、このビッグウェーブに。", "パートナープレイヤーが修得している身長分野の特技"], [24, "深夜番組の1コーナーに、シーンプレイヤーの「身体的特徴」の特集が組まれるようだ。それに乗っかろう。", "シーンプレイヤーが修得している身長分野の特技"], [25, "ニュース番組の1コーナーで、パートナープレイヤーの「ファッション特徴」が紹介される。うまくアシストしよう。", "パートナープレイヤーが修得している身長分野の特技"], [26, "シーンプレイヤーの「ファッション特徴」を売っている企業から、CMに出てくれないかと頼まれる。", "シーンプレイヤーが修得している属性分野の特技"], [33, "オフ", ""], [34, "女性のファッションについて語る番組に出演。", "《フェミニン/属性5》"], [35, "高い身長向けの衣装が届いた。これを使ってうまく魅せられるのか?", "《190~/身長12》"], [36, "テレビ番組でアニメキャラのコスプレをすることに。自分らしく決めポーズ。", "《趣味分野の空白/趣味7》"], [44, "オフ", ""], [45, "低身長向けコーデを作ったデザイナーから連絡が入る。それを見事に着こなしてほしいとのこと。", "《146/身長6》"], [46, "子供と共演するCMを撮ることになった。子供に愛されるファッションを考えよう。", "《~125/身長2》"], [55, "オフ", ""], [56, "パートナープレイヤーを宣材用の撮影向けにコーディネートすることになった。さて、どうしてやろうか。", "パートナープレイヤーが修得している身長分野の特技"], [66, "オフ", ""]]; - return self.$textFromD66Table(title, table);} - else if ("SP"['$===']($case)) { - title = "スポーツ仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "オフ", ""], [14, "オフ", ""], [15, "オフ", ""], [16, "オフ", ""], [22, "マラソン大会に参加することになった。とにかく、走ろう。", "《体力/才能6》"], [23, "サッカー選手たちにインタビュー! サッカーの魅力を聞き出そう。", "《スポーツ/趣味4》"], [24, "野球の始球式をすることになった。自分らしく、キャラクターを前面に出して投げるのがコツ。", "《キャラ分野の空白/キャラ7》"], [25, "バスケットボールを体験! その魅力を伝えよう。", "《スポーツ/趣味4》"], [26, "ラグビーのパワフルさを間近で体験。見ている人たちにも迫力を伝えないと。", "《スポーツ/趣味4》"], [33, "アメフトのハーフタイムショーの短い時間を任される。集中して魅力を出し切ろう。", "《集中力/才能4》"], [34, "チアリーディング(男性アイドルは応援団)でスポーツ選手たちの応援をすることに。みんながんばれ!", "《キュート/属性6》"], [35, "陸上競技を一通り体験! それぞれの種目の見どころを発信しよう。", "《運動神経/才能8》"], [36, "水泳をする仕事がやってきた。競泳水着をカッコよく着こなそう。", "《クール/属性11》"], [44, "スポーツドリンクのCMだ。「生き返る」感じを出していこう。", "《パッション/属性8》"], [45, "運動靴のCM。パートナープレイヤーを力強く追い抜いて、速くなれることをアピール!", "《バーニング/属性10》"], [46, "ジャージや体操服のCMが入ってきた。うまく着こなして、運動着もおしゃれなことを証明しよう。", "《おしゃれ/趣味5》"], [55, "近々開催される大会の応援団長を任された。出場する選手たちにエールを送ろう!", "《元気/キャラ8》"], [56, "テニスの試合をパートナープレイヤーとやることになった。ダブルスでいこう。", "パートナープレイヤーが修得している属性分野の特技"], [66, "ゴルフコースを回りながら、プロから手ほどきを受けることに。丁寧な言葉遣いで、大人っぽく振舞おう。", "《物腰丁寧/キャラ10》"]]; - return self.$textFromD66Table(title, table);} - else if ("CHR"['$===']($case)) { - title = "クリスマス仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "オフ", ""], [14, "オフ", ""], [15, "オフ", ""], [16, "オフ", ""], [22, "雪の積もる野外コンサートホールでミニライブ。苛酷な環境だけど、耐え抜かないと。", "《体力/才能6》"], [23, "ラジオの公開録音中に、クリスマスケーキ作りにチャレンジすることになった。うまく作れるかな?", "《料理/趣味6》"], [24, "アイドルが提案するクリスマスデート用のファッションを雑誌で紹介。勝てるコーデを考えてみよう。", "《おしゃれ/趣味5》"], [25, "ケーキ屋さんと提携して、クリスマスケーキの売り込みをすることに。", "《ショッピング/趣味8》"], [26, "地元の中学校のクリスマスイベントに登場。学生のみんなと一緒に盛り上がろう。", "《パッション/属性8》"], [33, "クリスマスに放映される特別ドラマにパートナープレイヤーの恋人役で出演。恋愛をうまく演じられるかな?", "《演技力/才能12》"], [34, "トークバラエティのクリスマス特番に呼ばれて収録を始める。本日のテーマは、「恋」について。", "《軟派/キャラ5》"], [35, "ラジオ番組で、家族と過ごすクリスマスの思い出について語ることになった。", "《異国文化/才能2》"], [36, "セクシーサンタグランプリというファッション大会に出ることになった。セクシーアイドルたちと対決だ!", "《セクシー/属性4》"], [44, "遊園地で行われるクリスマスイベントのCMを撮影することになった。楽しそうな笑顔を見せよう。", "《笑顔/才能7》"], [45, "サンタクロースの格好をして、小学生たちにプレゼントを配ることになった。オファーはかわいさ重視!", "《キュート/属性6》"], [46, "サンタクロースの格好をして、街でイベントをすることに。異国っぽさをうまく出せるかな?", "《海外/出身12》"], [55, "クリスマスをテーマにした写真集が発売。そのうちの何枚かを担当することに。", "《スタイル/才能3》"], [56, "新人アイドルたちが歌うクリスマスソングを収めたカバーアルバムが発売。自分たちも収録されています。", "《音楽/趣味11》"], [66, "アイドルとデートをした気分になれるDVDが発売。自分たちも、クリスマス編の収録を行った。", "《アイドル/趣味12》"]]; - return self.$textFromD66Table(title, table);} - else if ("PAR"['$===']($case)) { - title = "パートナー関係仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "オフ", ""], [14, "オフ", ""], [15, "オフ", ""], [16, "オフ", ""], [22, "パートナープレイヤーの【背景】に関する仕事がやって来る。こいつは何を見てきたんだ?", "パートナープレイヤーの個性特技"], [23, "パートナープレイヤーの「好きなもの」に関する仕事がやって来る。場を盛り上げていこう。", "パートナープレイヤーが修得している趣味分野の特技"], [24, "パートナープレイヤーの「嫌いなもの」に関する仕事がやって来る。どうフォローしたものか。", "パートナープレイヤーが修得しているキャラ分野の特技"], [25, "パートナープレイヤーの「身体的特徴」に関する仕事がやって来る。どこがいいのかを聞いてみる。", "パートナープレイヤーが修得している属性分野の特技"], [26, "パートナープレイヤーの「ファッション特徴」に関する仕事がやって来る。自分も真似をすることに。", "パートナープレイヤーが修得している身長分野の特技"], [33, "パートナープレイヤーの個性特技に関する仕事がやって来る。合わせてみよう。", "パートナープレイヤーの個性特技"], [34, "パートナープレイヤーの「身体的特徴」に関する仕事がやって来る。どこがいいのかを聞いてみる。", "パートナープレイヤーが修得している属性分野の特技"], [35, "パートナープレイヤーが修得している属性分野の特技に関する仕事がやって来る。", "パートナープレイヤーが修得している属性分野の特技"], [36, "パートナープレイヤーが修得しているキャラ分野の特技に関する仕事がやって来る。", "パートナープレイヤーが修得しているキャラ分野の特技"], [44, "シーンプレイヤーの【背景】を振り返らせるような仕事がやって来た。今はアイドルとしてそれをこなそう。", "シーンプレイヤーの個性特技"], [45, "パートナープレイヤーが修得している趣味分野の特技に関する仕事がやって来る。", "パートナープレイヤーが修得している趣味分野の特技"], [46, "パートナープレイヤーが修得している出身分野の特技に関する仕事がやって来る。", "パートナープレイヤーが修得している出身分野の特技"], [55, "シーンプレイヤーの個性特技に関する仕事がやって来る。今こそ見せ場だ!", "シーンプレイヤーの個性特技"], [56, "パートナープレイヤーが修得している才能分野の特技に関する仕事がやって来る。", "パートナープレイヤーが修得している才能分野の特技"], [66, "シーンプレイヤーの「好きなもの」に関する仕事がやって来る。やったぜ!", "シーンプレイヤーの個性特技"]]; - return self.$textFromD66Table(title, table);} - else if ("SW"['$===']($case)) { - title = "お菓子仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "オフ", ""], [14, "オフ", ""], [15, "オフ", ""], [16, "オフ", ""], [22, "おいし過ぎて止まらない様子を描く、ふわふわなお菓子のCMを行う。", "《ポップ/属性9》"], [23, "苦い恋模様を描く、ビターチョコレートのCM撮影を行う。", "《ダーク/属性3》"], [24, "甘い恋模様を描く、甘いチョコレートのCM撮影を行う。", "《キュート/属性6》"], [25, "家でポリポリ食べているところを描く、スナック菓子のCMを行う。", "《プレーン/属性7》"], [26, "青春の汗を流す様子を描く、甘い飲料水のCMを行う。", "《バーニング/属性10》"], [33, "チョコレートを食べて脳細胞を活性化させる探偵のドラマに出演する。", "《集中力/才能4》"], [34, "朝のシリアルを食べて元気いっぱいな様子を描く、CM撮影を行う。", "《元気/キャラ8》"], [35, "眠いときに目がすっきりと覚める様子を描く、刺激の強いお菓子のCM撮影を行う。", "《パッション/属性8》"], [36, "一本で栄養補給ができる様子を描く、健康補助食品なお菓子のCM撮影を行う。", "《クール/属性11》"], [44, "地元にある駄菓子屋さんのプロモーションを手伝う。", "《ショッピング/趣味8》"], [45, "料理番組で、市販のお菓子を使った新しいおやつの開発を任される。", "《料理/趣味6》"], [46, "お菓子の家を再現したアトラクション施設を宣伝する。", "《フェミニン/属性5》"], [55, "情報番組の1コーナーで、お勧めのケーキを紹介する。", "《料理/趣味6》"], [56, "お菓子をテーマにした、夢いっぱいの遊園地の宣伝を行う。", "《笑顔/才能7》"], [66, "チョコレートを使ったグラビア撮影をすることになる。", "《スタイル/才能3》"]]; - return self.$textFromD66Table(title, table);} - else if ("AN"['$===']($case)) { - title = "動物仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "オフ", ""], [14, "オフ", ""], [15, "オフ", ""], [16, "オフ", ""], [22, "ライオンの檻に、餌を届ける仕事がやって来る。勇気を出して踏み込もう。", "《胆力/才能5》"], [23, "ハムスターと戯れる絵を作る。", "《ペット/趣味4》"], [24, "牛の乳しぼり体験を動画にしよう。", "《集中力/才能4》"], [25, "かわいい猫の動画を撮るために、きまぐれな猫の機嫌をとりにいく。", "《ペット/趣味4》"], [26, "犬の散歩シーンを撮るためにも、犬と信頼関係を作る。", "《ペット/趣味4》"], [33, "公園の鳩に餌をあげるシーンの手伝いをする。", "《マイペース/キャラ4》"], [34, "象の上に乗って、コメントを述べる仕事。", "《エスニック/属性2》"], [35, "ぬるぬるしたどじょうを手づかみする絵を要求される。", "《セクシー/属性4》"], [36, "ウサギをなでる絵を作る仕事がやって来る。不安そうなウサギを安心させよう。", "《ペット/趣味4》"], [44, "奈良の鹿に餌をあげるドラマに出演。", "《近畿地方/出身6》"], [45, "馬に乗って、競馬場を駆ける映像を撮ることに。うまく乗りこなそう。", "《セレブ/才能11》"], [46, "水族館でペンギンたちと一緒に遊ぶシーンを撮影。", "《キュート/属性6》"], [55, "蛇を手づかみする番組企画が入る。", "《胆力/才能5》"], [56, "海に入って、魚や貝を見つける企画をすることになった。", "《元気/キャラ8》"], [66, "山奥で歩き回って、色々な昆虫を見つける仕事を行う。", "《体力/才能6》"]]; - return self.$textFromD66Table(title, table);} - else if ("MOV"['$===']($case)) { - title = "映画仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "オフ", ""], [14, "オフ", ""], [15, "オフ", ""], [16, "オフ", ""], [22, "ゾンビ映画にゾンビ役で出演。動く死体らしい演技を心がけよう。", "《ダーク/属性3》"], [23, "時代劇映画にサムライ役で出演。厚い忠義を見せよう。", "《硬派/キャラ9》"], [24, "西部劇映画にガンマン役で出演。静かに熱い役を演じよう。", "《バーニング/属性10》"], [25, "SF映画に未来のエンジニア役で出演。難しい言葉をクールに言い放とう。", "《クール/属性11》"], [26, "カンフー映画に若き拳法家役で出演。激しいアクションで敵と戦おう。", "《運動神経/才能8》"], [33, "恋愛映画に当て馬役として出演。フラれたあとに感情的になる演技が大事。", "《演技力/才能12》"], [34, "現代劇に中学二年生役として出演。現代の若者を演技で表現しよう。", "《中二病/キャラ2》"], [35, "特撮ヒーローにヒーロー役として出演。スーツアクターのアクションに、アフレコで魂を載せよう。", "《演技力/才能12》"], [36, "ホラー映画に主役として出演。悲鳴や動きで怖がっているところを見せよう。", "《ダーク/属性3》"], [44, "インド映画にダンサーとして出演。情熱的な踊りで映画を盛り上げよう。", "《ダンス/趣味9》"], [45, "ミステリー映画の犯人役として出演。怪しげな演技で人々を魅了しよう。", "《ミステリアス/キャラ3》"], [46, "戦争映画に出演。哀しみの叫びを上げよう。", "《演技力/才能12》"], [55, "ちょっとしたお色気シーンを撮ることに。", "《セクシー/属性4》"], [56, "ドキュメンタリー映画で、過去の偉人を演じることに。その人の一生をトレースしよう。", "《演技力/才能12》"], [66, "おバカな映画に、突き抜けたバカ役として出演。バカになれ!", "《ばか/キャラ12》"]]; - return self.$textFromD66Table(title, table);} - else if ("FA"['$===']($case)) { - title = "ファンタジー仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "オフ", ""], [14, "オフ", ""], [15, "オフ", ""], [16, "オフ", ""], [22, "ドラゴンと対峙しても、引かない勇気を見せるシーン。", "《胆力/才能5》"], [23, "怪物の群れを魔法で一掃するシーン。", "《ポップ/属性9》"], [24, "剣を使って街を荒らす盗賊たちを成敗するシーン。", "《硬派/キャラ9》"], [25, "斧を振るって、動く植物を破壊するシーン。", "《体力/才能6》"], [26, "仲間と一緒に槍で突いて、敵の兵士を追い返すシーン。", "《気配り/才能9》"], [33, "歌と踊りでファンタジーの住民たちを惹きつけるシーン。", "《音楽/趣味11》"], [34, "酒場で芸を披露して、人気者になるシーン。", "《軟派/キャラ5》"], [35, "無実の罪でとらえられ、牢屋から脱出するシーン。", "《ミステリアス/キャラ3》"], [36, "突然現れた魔物の群れに襲われるシーン。", "《どじ/キャラ11》"], [44, "巨大な魔物に、みんなで立ち向かっていくシーン。", "《気配り/才能9》"], [45, "悪の魔法使いによって、呪いをかけられるシーン。", "《ダーク/属性3》"], [46, "新しい武器と防具を調達して、着こなすシーン。", "《おしゃれ/趣味5》"], [55, "一面の草原を駆け抜けるシーン。", "《元気/キャラ8》"], [56, "疲れている王様を元気づけてあげるシーン。", "《パッション/属性8》"], [66, "空を駆ける不思議な船に乗って、感動するシーン。", "《笑顔/才能7》"]]; - return self.$textFromD66Table(title, table);} - else if ("RE"['$===']($case)) { - title = "ランダムイベント"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy(number['$even?']())) { - - name = "オンイベント表"; - table = [[11, "雨女は誰?", 96], [12, "千客万来☆アイドル喫茶", 97], [13, "フチドル", 98], [14, "生放送は踊る", 99], [15, "貸し切りプールの誘惑", 100], [16, "ケーオンストリート!", 101], [21, "アイドル×アニメ×ドリーマー!", 102], [22, "一日警察署長、緊急出動!?", 103], [23, "アイドルフィン!", 104], [24, "「カラオケ採点ガチバトル☆」", 105], [25, "「大正乙女ろまんてぃっく」", 106], [26, "鳩時計ラジオ", 107], [31, "「ガチ学院」CM", 108], [32, "「カラフルアイスクリーム」モデル", 109], [33, "忙しすぎる毎日", 110], [34, "悩める新人デザイナー", 112], [35, "「スクール☆ライフ」", 113], [36, "魔法のように", 114], [41, "食レポとその後", 115], [42, "ソロライブ!", 116], [43, "お昼の放送", 117], [44, "文化祭!", 118], [45, "商店街を救え!", 120], [46, "二つの仕事", 121], [51, "温泉にて", 122], [52, "アイドル探偵と豪華客船", 124], [53, "のうぎょう", 125], [54, "コント撮影", 127], [55, "アイドルVSサメ", 128], [56, "駅前で歌う", 130], [61, "街の清掃ボランティア", 131], [62, "ミニユニット活動", 132], [63, "カブトムシ狩り", 134], [64, "ポスター作り", 135], [65, "メロディ", 136], [66, "さいてい新聞部の取材", 138]]; - } else { - - name = "オフイベント表"; - table = [[11, "アイドル、未知との遭遇", 139], [12, "神様おねがい!", 140], [13, "プチ合宿の罠!?", 141], [14, "どこかで会ったような……", 142], [15, "アイデンティティがっ!", 143], [16, "ホリダシ×オオソウジ", 144], [21, "エンドレス!? 握手会", 146], [22, "不安な路線変更", 147], [23, "全力ねこレース", 148], [24, "恐怖の再テスト!", 149], [25, "たくさんのファンレター", 150], [26, "夕暮れの帰り道。", 152], [31, "どきどき♪ 調理実習", 153], [32, "超アイドル衣装?", 154], [33, "おもいでの修学旅行", 156], [34, "アルバイト!", 158], [35, "ドライブしよう!", 159], [36, "ファミレス攻防戦", 160], [41, "総合練習", 162], [42, "歌声はお腹から", 164], [43, "メイクレッスン基本から", 165], [44, "怪我", 166], [45, "エゴサ", 168], [46, "喫茶店でひと息", 169], [51, "天体観測ツアー", 170], [52, "謎のコーチ", 172], [53, "屋上にて", 174], [54, "クラスメイトより", 176], [55, "最強アイドル伝", 177], [56, "イメチェンしよう", 178], [61, "郊外ショッピング施設", 179], [62, "お見舞い", 180], [63, "ライブを観よう!", 181], [64, "頂を目指す", 182], [65, "重いコンダラ", 183], [66, "アイドル改造計画", 184]]; - }; - isSwap = false; - dice = self.$getD66(isSwap); - $b = table.$assoc(dice), $a = Opal.to_ary($b), (outcome = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (page = ($a[2] == null ? nil : $a[2])), $b; - return "" + (title) + " > (1D6) > " + (number) + "\n" + (name) + " > [" + (outcome) + "] > " + (text) + "(『ビギニングロード』" + (page) + "ページ)";} - else if ("HA"['$===']($case)) { - title = "ハプニング表"; - table = [[11, "ハプニングなし", ""], [12, "ハプニングなし", ""], [13, "ハプニングなし", ""], [14, "ハプニングなし", ""], [15, "ハプニングなし", ""], [16, "ハプニングなし", ""], [22, "パートナープレイヤーに、地方からオファーが来た。その土地独特の文化を学んで、パートナープレイヤーに伝えよう。", "AT6"], [23, "グラビア撮影だが、用意された衣装のサイズがパートナープレイヤーに合わなかった。何とかして、衣装を合わせなければいけない。", "パートナープレイヤーが修得している身長分野の特技"], [24, "ダンス撮影中。パートナープレイヤーのダンスに迷いが見えた。何かアドバイスをして、迷いを取り払いたい。", "《ダンス/趣味9》"], [25, "歌の仕事だが、パートナープレイヤーの歌がどこかぎこちない。うまく本来の歌を取り戻させよう。", "パートナープレイヤーが修得している属性分野の特技"], [26, "体力を消費する仕事の最中に、パートナープレイヤーが倒れてしまった! 急いで処置をしなければ!", "《気配り/才能9》"], [33, "パートナープレイヤーにマイナースポーツのCMが回ってきたが、知らない様子だ。ルールを教えよう。", "《スポーツ/趣味4》"], [34, "パートナープレイヤーのキャラに合わない仕事が舞い込んだ。演技力で乗り切ってほしい。", "《演技力/才能12》"], [35, "パートナープレイヤーが風邪をひいてしまう。次の仕事までに、なんとか治してもらわなければ。", "《元気/キャラ8》"], [36, "パートナープレイヤーの属性らしくない衣装が来てしまった。うまくアレンジできればいいけど。", "《おしゃれ/趣味5》"], [44, "パートナープレイヤーのテンションが低い。テンションを上げるようなことを言おう。", "《バーニング/属性10》"], [45, "パートナープレイヤーの仕事に必要な小道具が足りなくなった。調達しよう。", "《ショッピング/趣味8》"], [46, "パートナープレイヤーに外国から仕事が舞い込んできた。外国の文化に合わせた仕事をしなければ。", "《異国文化/才能2》"], [55, "パートナープレイヤーに大会社からの仕事のオファーがやって来る。プレッシャーに負けないように後押ししよう。", "《胆力/才能5》"], [56, "パートナープレイヤーと他のアイドルグループとのコラボイベントが行われる。そのアイドルの情報を集めてこよう。", "《アイドル/趣味12》"], [66, "パートナープレイヤーの周りで、幽霊騒ぎが起こる。安心させるためにも、調査に乗り出そう。", "《オカルト/趣味2》"]]; - return self.$textFromD66Table(title, table);} - else if (/^AT([1-6]?)$/['$===']($case)) { - value = $$($nesting, 'Regexp').$last_match(1).$to_i(); - return self.$getSkillList(value);} - else if ("LUR"['$===']($case)) { - title = "地方アイドル無茶ぶり表"; - table1 = ["地元の商店街で", "マスコットキャラクターと", "地元のプールで", "地元の小学校で", "地元のショッピングモールで", "田んぼの真ん中で"]; - table2 = ["愛について叫ぶ", "民謡を歌う", "ファッションショー", "水着で宣伝", "ネット配信", "お祭り騒ぎ"]; - return self.$textFrom1D6Table(title, table1, table2);} - else if ("SUR"['$===']($case)) { - title = "情熱の夏無茶ぶり表"; - table1 = ["海水浴場で", "偉い人の前で", "あの有名アイドルの前で", "仲間の前で", "カメラの前で", "一般客の前で"]; - table2 = ["かき氷いっき食い", "ナンパ", "スイカ割り", "カッコいいポーズ", "満面の笑顔", "喧嘩のふり"]; - return self.$textFrom1D6Table(title, table1, table2);} - else if ("WUR"['$===']($case)) { - title = "ぬくもりの冬無茶ぶり表"; - table1 = ["クリスマスツリーの前で", "子供たちの前で", "大雪の中で", "雪が降り始めた街で", "暖かい部屋の中で", "暖房が効きすぎの部屋の中で"]; - table2 = ["雪かき", "アイスを食べる", "薄着で登場", "歌ってください", "サンタのコスプレ", "おでんを急いで食べる"]; - return self.$textFrom1D6Table(title, table1, table2);} - else if ("NUR"['$===']($case)) { - title = "大自然無茶ぶり表"; - table1 = ["斧を持って", "クワを持って", "釣竿を持って", "虫取り網を持って", "栄養ドリンクの宣伝をしながら", "命綱をつけて"]; - table2 = ["木を倒す", "畑を耕す", "昆虫採集", "大物を釣る", "一晩過ごす", "崖を登る"]; - return self.$textFrom1D6Table(title, table1, table2);} - else if ("GUR"['$===']($case)) { - title = "聖デトワール女学園無茶ぶり表"; - table1 = ["裏山で", "食堂で", "先輩の前で", "全国放送で", "全校生徒の前で", "学園の様子を伝えるネット中継で"]; - table2 = ["歌を披露", "乗馬", "テニス", "「個性とは何か」を語る", "「アイドルとは何か」を語る", "「アイドルをやっていてよかった瞬間」を語る"]; - return self.$textFrom1D6Table(title, table1, table2);} - else if ("BUR"['$===']($case)) { - title = "アカデミー無茶ぶり表"; - table1 = ["TVカメラの前で", "ライバルと一緒に", "試験で", "寮で", "幼年部で", "初等部で"]; - table2 = ["反省会", "ゲリラライブ", "宿題をこなす", "食事を作る", "自作の歌を披露", "自作のポエムを披露"]; - return self.$textFrom1D6Table(title, table1, table2);} - else if (/^BT(\d+)?$/['$===']($case)) { - counts = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 1).$to_i(); - return self.$badStatus(counts);} - else if ("SGT"['$===']($case)) { - title = "アイドルスキル修得表(チャレンジガールズ)"; - table = ["シーンプレイヤーが修得している才能分野の特技が指定特技のアイドルスキル", "シーンプレイヤーが修得しているキャラ分野の特技が指定特技のアイドルスキル", "シーンプレイヤーが修得している趣味分野の特技が指定特技のアイドルスキル", "ランダムに決定した特技が指定特技のアイドルスキル(身長分野、属性分野、出身分野が出たら振り直し)", "《メンタルアップ》《パフォーマンスアップ》《アイテムアップ》のうちいずれか1つ", "《メンタルアップ》《パフォーマンスアップ》《アイテムアップ》のうちいずれか1つ"]; - return self.$textFrom1D6Table(title, table);} - else if ("RS"['$===']($case)) { - title = "アイドルスキル修得表(ロードトゥプリンス)"; - table = ["シーンプレイヤーが修得している属性分野の特技が指定特技のアイドルスキル", "シーンプレイヤーが修得しているキャラ分野の特技が指定特技のアイドルスキル", "シーンプレイヤーが修得している趣味分野の特技が指定特技のアイドルスキル", "ランダムに決定した特技が指定特技のアイドルスキル(身長分野、才能分野、出身分野が出たら振り直し)", "《メンタルディフェンス》《判定アップ》《個性アップ》のうちいずれか1つ", "《メンタルディフェンス》《判定アップ》《個性アップ》のうちいずれか1つ"]; - return self.$textFrom1D6Table(title, table);} - else if ("SH"['$===']($case)) { - title = "ショッピングモール散策表"; - table = [[11, "思いがけず、ブランドもの衣装を買えてしまった。これを、うまく使えないだろうか?\nシーンプレイヤーとパートナープレイヤーは、好きなブランドの衣装チケットを一つ獲得する。"], [12, "雑貨コーナーを回って、自分たちらしいアクセサリーを探す。\nシーンプレイヤーとパートナープレイヤーは、アイテム「キャラアイテム」を一つ獲得する。"], [13, "お歳暮コーナーが盛況だった。今のトレンドはなんだろうか。\nシーンプレイヤーとパートナープレイヤーは、アイテム「差し入れ」を一つ獲得する。"], [14, "お菓子売り場で、気になっていたお菓子のシリーズを買い漁る。\nシーンプレイヤーとパートナープレイヤーは、アイテム「お菓子」を一つ獲得する。"], [15, "スポーツショップに立ち寄って、スポーツドリンクを買い貯める。いつか使うかもしれない。\nシーンプレイヤーとパートナープレイヤーは、アイテム「スナミナドリンク」を一つ獲得する。"], [16, "スポーツウェアの展示会をやっていたので、見て回る。びびっと来たアイテムも見つかった。\nシーンプレイヤーとパートナープレイヤーは、アイテム「トレーニングウェア」を一つ獲得する。"], [22, "特売品を買い漁る。さて、使えるものかな?\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに二つ獲得する。"], [23, "シューズコーナーで、普段使いの靴を調達する。ダンスにちょうどいいのはどれかな?\nシーンプレイヤーとパートナープレイヤーは、アイテム「ドリーミングシューズ」を一つ獲得する。"], [24, "ふらりと買い物にやって来て、目についたものをとりあえず買ってみる。ちょっと疲れてたかも。\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], [25, "色々な洋服を見て回って、自分やパートナーに合ったコーディネートを考えてみる。\nシーンプレイヤーとパートナープレイヤーは、【ビジュアル】が1点上昇する。"], [26, "ちょうど買いたかったものが、格安で売られていた。タイミングがよかったみたいだ。\nシーンプレイヤーとパートナープレイヤーは、好きなアイテムを一つ獲得する。"], [33, "ショッピングモールを歩いているうちに、アイテムを落としてしまう。\nシーンプレイヤーとパートナープレイヤーは、アイテムをすべて失う。"], [34, "ショッピングモールを歩いていると、声をかけられた。地元の人たちから、応援のメッセージをもらう。\nシーンプレイヤーとパートナープレイヤーは、【獲得ファン人数】が4点上昇する。"], [35, "ショッピングモールでは何も買わなかったが、交わした会話はお互いを知るきっかけになった。\nシーンプレイヤーとパートナープレイヤーは、お互いに対する【理解度】が3点上昇する。"], [36, "ベンチで一休みしながら、お互いの長所について話し合う。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [44, "混雑中のフードコートで食事をしようとしたところ、一時間近く待たされる。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が2点減少する。"], [45, "フードコートで定番メニューを頼み、勝手知ったる味を楽しむ。やっぱり、知っている味がいい。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が2点上昇する。"], [46, "フードコートで新しいメニューにチャレンジ!\nシーンプレイヤーとパートナープレイヤーは、1D6を振る。出目が奇数の場合、そのPCは【メンタル】が5点減少し、出目が偶数の場合、そのPCは【メンタル】が5点上昇する。"], [55, "CDコーナーを探しているうちに、迷ってしまった。さて、ここはどこだろう?\n変調がランダムに一つ発生する。"], [56, "カフェコーナーで一休み。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が5点上昇する。"], [66, "家具や家電コーナーを回るうちに、自分たちの将来が不安になってきた。\n変調がランダムに二つ発生する。"]]; - return self.$textFromD66Table(title, table);} - else if ("MO"['$===']($case)) { - title = "山散策表"; - table = [[11, "山で迷っていたら、謎の仙人に助けられる。そのついでに、体をうまく動かす方法まで教わる。ありがとう! 謎の仙人!\nシーンプレイヤーとパートナープレイヤーの【合宿ポイント】が10点上昇する。"], [12, "山の幸を頂いて、幸福感に包まれる。うまい!\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [13, "星空の下で、二人の【背景】を語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [14, "森林浴をして、体調を整える。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇し、変調がすべて回復する。"], [15, "山登りを繰り返して、足腰を鍛える。\nシーンプレイヤーとパートナープレイヤーの【フィジカル】が1点上昇する。"], [16, "二人で一緒に朝日を見て、訳も分からず感動する。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [22, "山で迷った。\n変調がランダムに二つ発生する。"], [23, "山奥に住んでいるという、伝説のファッションデザイナーに着こなしの秘密を教えてもらう。\nシーンプレイヤーとパートナープレイヤーは、好きなブランドの衣装チケットを一つ獲得する。"], [24, "山奥に住んでいるという、伝説のレッスントレーナーに教えを乞いに足を延ばす。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [25, "ふらっと立ち寄った地元の飲食店で郷土料理を食べる。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [26, "山奥にある神社まで登って、お祈りをする。無事にライブが成功しますように。\nシーンプレイヤーとパートナープレイヤーの【合宿ポイント】が5点上昇する。"], [33, "虫にたかられて、嫌な思いをする。\n変調がランダムに一つ発生する。"], [34, "仲間たちみんなとバーベキューをして楽しむ。\nシーンプレイヤーとパートナープレイヤーは、PC全員に対する【理解度】が3点上昇する。"], [35, "キノコ狩りをする。\nシーンプレイヤーとパートナープレイヤーは、1D6を振る。その値が偶数だった場合、アイテム「スタミナドリンク」を一つ獲得する。奇数だった場合、【メンタル】が6点減少する。"], [36, "避暑地の喫茶店で一杯飲みながら、お互いのアイドル論について語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [44, "山を移動中に、落し物をしてしまう。\nシーンプレイヤーとパートナープレイヤーは、アイテムを一つ失う。"], [45, "山小屋で一晩を過ごす。お互いの生活習慣が見えてきた。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [46, "ハイキングをしながら、お互いの嫌いなものについて理解を深める。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [55, "野生の鹿に襲われそうになったので、プロデューサーが盾になった。\n変調「怪我」が発生する。"], [56, "高原の広々としたテニスコートでテニスを楽しむ。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [66, "山道を歩き疲れて、足が棒になる。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が3点減少する。"]]; - return self.$textFromD66Table(title, table);} - else if ("SEA"['$===']($case)) { - title = "海散策表"; - table = [[11, "浜辺で行われていたミスコンに強制的に参加させられる。\nシーンプレイヤーとパートナープレイヤーの【獲得ファン人数】が1D6点上昇する。"], [12, "浜辺を散歩しながら、お互いの好きなものについて語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [13, "とれたての魚を使った寿司を食べて満足する。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [14, "浜辺を歩いていると、アイドルだと気づいた地元の人たちから声援が飛んでくる。\nシーンプレイヤーとパートナープレイヤーの【獲得ファン人数】が5点上昇する。"], [15, "童心に返って、海に向かって走り出す。やったー海だー!\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [16, "水泳で体を鍛える。荒れやすい海は特訓にもってこいだ!\nシーンプレイヤーとパートナープレイヤーの【フィジカル】が1点上昇する。"], [22, "せっかくだから釣りをしてみる。何が釣れるかな?\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], [23, "二人で競い合いながら泳ぎまわる。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [24, "ちょっとだけ日に焼けて、違う自分をセルフプロデュース。ちゃんと事務所の許可はとれてます!\nシーンプレイヤーとパートナープレイヤーの【ビジュアル】が1点上昇する。"], [25, "砂浜にいい感じのタイヤがあったので、それを引っ張りながら走り込みをする。\nシーンプレイヤーとパートナープレイヤーの【フィジカル】が1点上昇する。"], [26, "海に向かって叫んで、すっきりする。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇し、【ボイス】が1点上昇する。"], [33, "しつこいナンパに誘われて、ちょっと意気消沈してしまう。\n変調がランダムに二つ発生する。"], [34, "みんなで花火をして楽しむ。\nシーンプレイヤーとパートナープレイヤーは、PC全員に対する【理解度】が2点上昇する。"], [35, "水着で決めるファンションをコーディネートして、浜辺の視線を一人占め。\nシーンプレイヤーとパートナープレイヤーは、【ビジュアル】が1点上昇する。"], [36, "魚料理を満足いくまで食べたはいいものの、食べ過ぎじゃないかが心配。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇する。"], [44, "穏やかな海を見ながら、これまでのことを思い返す。\n変調が一つ回復する。"], [45, "水族館に立ち寄ったら、お土産に色々持たされる。\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], [46, "水族館のイルカショーから、新しい技のヒントをもらう。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [55, "海で遊んでいたら、溺れかける。\n変調がランダムに三つ発生する。"], [56, "サーファーたちから、人を惹きつける技術について聞き出す。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [66, "夜の海に出没するという幽霊らしきものを見かけてしまい、ぞっとする。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が5点減少する。"]]; - return self.$textFromD66Table(title, table);} - else if ("SPA"['$===']($case)) { - title = "温泉街散策表"; - table = [[11, "地元のお祭りに遭遇! 一緒になって盛り上げる。\nシーンプレイヤーとパートナープレイヤーの【獲得ファン人数】が5点上昇する。"], [12, "卓球台を使って、お互いの力を出し切る。何かが掴めたような気がする。\nシーンプレイヤーとパートナープレイヤーの【合宿ポイント】が5点上昇する。"], [13, "お土産屋さんで、色々なものを買い込む。しかし、これは役に立つのだろうか。\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], [14, "温泉からあがった後に、ゆっくりと涼む。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇し、変調がすべて回復する。"], [15, "温泉街の名物料理を出してもらう。うまい!\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [16, "浴衣で活気のある街並みを歩きながら、お互いの【背景】を語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が1D6点上昇する。"], [22, "湯に浸かり過ぎて目が回る。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇し、変調がランダムに一つ発生する。"], [23, "たくさんの温泉に次々浸かる。楽しいけど疲れた。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [24, "湯船に浸かってリフレッシュ。ひとまずは一息入れましょう。\n変調がすべて回復し、シーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [25, "ジャグジー風呂で肩こりや足のむくみを癒す。温泉地でもこういう施設はあるんだな。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [26, "みんなやプロデューサーを連れて足湯に浸かる。いつもご苦労様。\n変調がすべて回復する。"], [33, "のぼせる。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が3点減少する。"], [34, "貸切風呂で、ゆったりとしながらお互いを理解をするための話し合いをする。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [35, "マッサージ機を使って、日ごろの疲れをたたき出す。\n変調をすべて回復する。"], [36, "お風呂の後の牛乳もうまい!\nシーンプレイヤーとパートナープレイヤーは、アイテム「スナミナドリンク」を一つ獲得する。"], [44, "ついつい無駄遣いをしてしまう。てへへ。\n変調がランダムに一つ発生する。"], [45, "屋台での観光客向けの料理に舌鼓をうつ。こういう味もありなのか。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇する。"], [46, "温泉街の女将さんたちに、人の心を豊かにする術を教えてもらう。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [55, "部屋の中でぼけっと過ごす。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が1点上昇する。"], [56, "観光客の人々と会話をして、自分たちの知名度を確認する。\nアイドルランク係数が「10」以上の場合、【獲得ファン人数】が4D6点上昇する。"], [66, "複雑な地形と坂道で疲れ始める。目的の場所はまだ?\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が3点減少する。"]]; - return self.$textFromD66Table(title, table);} - else if ("TN"['$===']($case)) { - title = "夜語りシチュエーション表"; - table = [["みんなが寝静まった寝室。二人だけのお話。", "好きな特技"], ["夜の街を歩きながら、【背景】をぽつぽつと語り出す。", "シーンプレイヤーの個性特技"], ["「好きなもの」を探しに出かけた帰り道。", "シーンプレイヤーが修得している趣味分野の特技"], ["「嫌いなもの」から逃げてきて、二人きりになってしまった。", "AT"], ["暗い道を往くとき、ふとしたきっかけで、「身体的特徴」に触れてしまう。", "シーンプレイヤーが修得している身長分野の特技"], ["「ファッション特徴」の話に夢中になっていたら、いつの間にか二人になっていたことに気づく。", "シーンプレイヤーが修得している属性分野の特技"]]; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - return $rb_plus($rb_plus("" + (title) + " > [" + (number) + "] > ", table['$[]']($rb_minus(number, 1))['$[]'](0)), self.$getSkillText(table['$[]']($rb_minus(number, 1))['$[]'](1)));} - else if ("CG"['$===']($case)) { - title = "コモン成長表"; - table = ["【メンタル】が2点上昇する。", "【メンタル】が4点上昇する。", "『チャレンジガールズ』か『ロードトゥプリンス』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。", "アイテムをランダムに一つ獲得する。", "アイテムをランダムに一つ獲得する。", "【獲得ファン人数】が3点上昇する。"]; - text = self.$textFrom1D6Table(title, table); - if ($truthy(/アイテムをランダムに一つ獲得する。$/['$=~'](text))) { - text = $rb_plus(text, $rb_plus("\n", self.$getItem()))}; - return text;} - else if ("GG"['$===']($case)) { - title = "ゴールド成長表"; - table = [[11, "好きなアイドルスキルを一つ選んで修得する。"], [12, "『チャレンジガールズ』か『ロードトゥプリンス』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [13, "『チャレンジガールズ』か『ロードトゥプリンス』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [14, "『チャレンジガールズ』か『ロードトゥプリンス』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [15, "『チャレンジガールズ』か『ロードトゥプリンス』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [16, "『チャレンジガールズ』か『ロードトゥプリンス』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [22, "好きなアイドルスキルを一つ選んで修得する。"], [23, "レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [24, "レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [25, "レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [26, "好きな能力値一つが1点上昇する。"], [33, "好きな能力値一つが2点上昇する。"], [34, "【ボイス】が1点上昇する。"], [35, "【フィジカル】が1点上昇する。"], [36, "【ビジュアル】が1点上昇する。"], [44, "個性特技を別の特技に変更することができる。"], [45, "好きな能力値二つが1点上昇する。"], [46, "すべての能力値が1点上昇する。"], [55, "【メンタル】が10点上昇する。"], [56, "アイテムをランダムに一つ獲得する。"], [66, "個性特技の目標値が1点減少する。"]]; - skillTitle = "レアアイドルスキル修得表"; - skillTable = ["【秘めたる素質】を修得する。", "【王者の風格】を修得する。", "【万能アイドル】を修得する。", "【最強の負けず嫌い】を修得する。", "【超絶無敵コーデ】を修得する。", "【強く正しく美しく】を修得する。"]; - text = self.$textFromD66Table(title, table); - if ($truthy(/レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。/['$=~'](text))) { - text = $rb_plus(text, $rb_plus("\n", self.$textFrom1D6Table(skillTitle, skillTable))) - } else if ($truthy(/アイテムをランダムに一つ獲得する。$/['$=~'](text))) { - text = $rb_plus(text, $rb_plus("\n", self.$getItem()))}; - return text;} - else if ("FL"['$===']($case)) { - title = "駆け出しシーン表"; - table = ["トレーニングルームで、皆が真剣な顔をしている。真面目な雰囲気が場を支配しており、軽い冗談も言えなさそう。", "いつものたまり場。なのに、今日に限って、騒がしさがどこかに行ってしまったようだ。", "誰も歩いていない夜道。人気もなく、不安を抱くような暗闇に、足音だけが響いている。", "強い風と強い雨が吹きつける事務所の中。外に出れば、吹き飛ばされてしまいそう。", "曇り空の下。そこにいるだけで、暗い気持ちになるような、どんよりとした天気。", "雨が降り続けている。雨は、ずっと続いている。いつになったら晴れるのだろう。"]; - return self.$textFrom1D6Table(title, table);} - else if ("LN"['$===']($case)) { - title = "孤独表"; - table = ["誰のことも信じられない。私は一人でやってみせる。\nPC全員の【理解度】すべてにチェックを入れる。センターPCは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。", "事件がきっかけで、事務所の空気が悪くなった。嫌な雰囲気。\n変調がランダムに三つ発生する。", "口調が荒くなり、きつい一言を仲間に言ってしまう。\nPC全員の【メンタル】が5点減少し、【理解度】すべてにチェックを入れる。", "ちょっとした注意がきっかけで、仲間と喧嘩をしてしまう。\nPC全員の【メンタル】が10点減少する。", "誰も、話をしない。気まずさと静寂が場を包んだ。このままでは、会場の空気も悪くなる。\n【目標動員数】が二倍になる。", "突然の強い雨に打たれる。ずぶぬれのところに一人。そんなところを誰かに目撃されてしまう。\nセンターPCの【獲得ファン人数】が半分になる。"]; - return self.$textFrom1D6Table(title, table);} - else if ("MS"['$===']($case)) { - title = "マイスキル名決定表"; - nameTable = ["形容表+情景表+マテリアル表", "形容表+情景表+アクション表", "形容表+マテリアル表+アクション表", "情景表+マテリアル表+アクション表", "形容表もしくは情景表+称号表+PCの名前", "マテリアル表もしくはアクション表+称号表+PCの名前"]; - articleTitle = "称号表"; - articleTable = ["アイドル", "ガール/ボーイ", "パラダイス", "プリンセス/プリンス", "スタイル", "クイーン/キング"]; - describeTitle = "形容表"; - describeTable = [[11, "ビギニング"], [12, "パワフル"], [13, "ビューティフル"], [14, "エターナル"], [15, "きらめき"], [16, "シャイニング"], [22, "パーフェクト"], [23, "1000%"], [24, "フレッシュ"], [25, "ドキドキ"], [26, "ワイルド"], [33, "ロイヤル"], [34, "ときめき"], [35, "ふわふわ"], [36, "スタイリッシュ"], [44, "小悪魔"], [45, "スーパー"], [46, "ウルトラ"], [55, "ハイパー"], [56, "ダイナマイト"], [66, "アルティメット"]]; - sceneTitle = "情景表"; - sceneTable = [[11, "マーメイド"], [12, "ドリーム"], [13, "ピュア"], [14, "アニマル"], [15, "サンシャイン"], [16, "ムーンライト"], [22, "かわいい/かっこいい"], [23, "フューチャリング"], [24, "ライジング"], [25, "バーニング"], [26, "スターライト"], [33, "ボンバー"], [34, "レインボー"], [35, "フローズン"], [36, "ヒート"], [44, "ダーク"], [45, "ぴかぴか"], [46, "サンライズ"], [55, "スターダスト"], [56, "オーロラ"], [66, "ギャラクシー"]]; - materialTitle = "マテリアル表"; - materialTable = [[11, "バスケット"], [12, "エクスプレス"], [13, "エアプレーン"], [14, "ロケット"], [15, "ハリケーン"], [16, "バイク"], [22, "タイガー"], [23, "ドルフィン"], [24, "ドッグ"], [25, "キャット"], [26, "バニー"], [33, "ドラゴン"], [34, "ソード"], [35, "ランス"], [36, "パラソル"], [44, "ローズ"], [45, "ロータス"], [46, "コスモス"], [55, "キャンディ"], [56, "ハート"], [66, "フェニックス"]]; - actionTitle = "アクション表"; - actionTable = [[11, "スパイラル"], [12, "フライ"], [13, "シャワー"], [14, "ダイブ"], [15, "イリュージョン"], [16, "ラッシュ"], [22, "ターン"], [23, "ラブ"], [24, "ハグ"], [25, "ダッシュ"], [26, "シュート"], [33, "ダイビング"], [34, "クロス"], [35, "トリック"], [36, "ビーム"], [44, "スラッシュ"], [45, "ボイス"], [46, "ドライブ"], [55, "くるくる"], [56, "ジャンプ"], [66, "アクション"]]; - $b = self.$get_table_by_1d6(nameTable), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (nameNumber = ($a[1] == null ? nil : $a[1])), $b; - nameParts = []; - articleIndex = name.$index(articleTitle); - if ($truthy(articleIndex['$nil?']())) { - } else { - - $b = self.$get_table_by_1d6(articleTable), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - nameParts.$push([articleIndex, articleTitle, text, number]); - }; - self.$setArrayFromD66Table(nameParts, name, describeTitle, describeTable); - self.$setArrayFromD66Table(nameParts, name, sceneTitle, sceneTable); - self.$setArrayFromD66Table(nameParts, name, materialTitle, materialTable); - self.$setArrayFromD66Table(nameParts, name, actionTitle, actionTable); - nameParts['$sort!'](); - numberString = ""; - $send(nameParts, 'each', [], ($$4 = function(_index, src, text1, number1){var self = $$4.$$s || this; - - - - if (_index == null) { - _index = nil; - }; - - if (src == null) { - src = nil; - }; - - if (text1 == null) { - text1 = nil; - }; - - if (number1 == null) { - number1 = nil; - }; - name = name.$gsub(src, text1); - return (numberString = $rb_plus(numberString, "" + (src) + (number1) + ","));}, $$4.$$s = self, $$4.$$arity = 4, $$4)); - numberString = numberString['$[]'](0, $rb_minus(numberString.$length(), 1)); - return "" + (title) + " > [" + (nameNumber) + "," + (numberString) + "] > " + (name);} - else if ("MSE"['$===']($case)) { - title = "マイスキル効果表"; - table = ["演目を行ったときに使用できる。自分の【メンタル】が15点になる。この効果は、1回のセッションに1度まで使用できる。", "ミラクル・ミラクルシンクロ・パーフェクトミラクルを発生させたときに使用できる。【パフォーマンス値】が10点上昇する。この効果は、1回のセッションに1度まで使用できる。", "ファンブルではない判定の後に使用する。判定の達成値を12にする。この効果は、1回のセッションに1度まで使用できる。", "演目を行ったときに使用できる。自分以外のPC全員の【メンタル】が2D6点上昇する。この効果は、1回のセッションに1度まで使用できる。", "ライブフェイズ開始時に使用する。このフェイズの間、すべての判定の達成値にプラス2の修正がつく。この効果は、1回のセッションに1度まで使用できる。", "パフォーマンスのサイコロを振った後に使用する。サイコロ1つの出目を6にすることができる。この効果は、1回のセッションに1度まで使用できる。"]; - return self.$textFrom1D6Table(title, table);} - else if ("ST"['$===']($case)) { - title = "演出表"; - table = ["見事なパフォーマンスに、人々が感動する。", "その声に観客が聞き惚れる。", "一糸乱れぬダンスが決まる。", "宙に飛ばしたマイクを見事にキャッチする。", "トランポリンなどを使って、会場の天井近くまでジャンプ。", "観客と一体になって決めポーズ。"]; - return self.$textFrom1D6Table(title, table);} - else if ("FST"['$===']($case)) { - title = "ファンタジー演出表"; - table = ["会場を覆っていた暗雲を退散させる。", "会場に花が咲く。", "炎の旋風が観客を燃え上がらせる。", "ハートの風船が会場中を飛び交う。", "羽を生やして会場を飛び回る。", "打ち上がった花火と共に決めポーズ。"]; - return self.$textFrom1D6Table(title, table);} - else if ("CHO"['$===']($case)) { - title = "サビ表"; - table = [[11, "冒険だ/アドベンチャー\nこの演目の間、スペシャル値が1点減少。"], [12, "世界中の愛/ラブ\nPC全員の【メンタル】が3点上昇。"], [13, "今届けたい/待ちきれない\nこの演目の【パフォーマンス値】が1点上昇。"], [14, "負けないぜ/勝ちたい\nこの演目のPPが5点減少(最低0)。"], [15, "感謝の言葉/ありがとうと\n変調がすべて回復する。"], [16, "キミとなら/あなたたちが\nこの演目の間、すべての【理解度】が2点高いものとして扱う。"], [22, "仲間となら/仲間の\nPC全員は、自分以外のキャラクターに対する【理解度】が1点上昇。"], [23, "マジで好き/MAX\nPC全員の【メンタル】が1D6点上昇。"], [24, "死にたいぐらいに/闇に落ちて\nこの演目の間、スペシャル値とファンブル値が1点減少。"], [25, "だけど/でも\nこの演目の間、一芸突破の目標値が5点になる。"], [26, "キスよりも/囁くよりも\nこの演目の間、【ビジュアル】が1点上昇する。"], [33, "一緒にいてほしい/ずっと\nアイドルクラスが「ほのぼの」のPC全員は【思い出】を1つ獲得。"], [34, "走る/走れ\nこの演目の間、【フィジカル】が1点上昇する。"], [35, "待ち焦がれる/いつまでも\nこの演目の間、シンフォニーを行ったとき、サイコロ1つの出目を1に変更できる。"], [36, "真夜中の/真昼の\nミラクル・ミラクルシンクロが発生したとき、【パフォーマンス値】にプラス5。"], [44, "笑おうぜ/笑顔で\nアイドルクラスが「コメディ」のPC全員は【獲得ファン人数】が[2D6に【ランク係数】をかけた数]点上昇。"], [45, "パーティだ/お金でも\nPC全員は、アイテムを1つランダムに獲得する。"], [46, "だから/それから\nこの演目の間、一芸突破以外の判定の達成値が1点上昇する。"], [55, "オレだけを見ろ/独占したい\n一芸突破を行っても、【メンタル】が減少しない。"], [56, "オレたちの歌/歌おう\nこの演目の間、【ボイス】が1点上昇する。"], [66, "愛しています/好きだ\nアイドルクラスが「マジメ」のPC全員の【メンタル】が5点上昇。"]]; - return self.$textFromD66Table(title, table);} - else if ("SCH"['$===']($case)) { - title = "情熱の夏サビ表"; - table = ["夏は\nこの演目の間、PC全員の【パフォーマンス値】が1点上昇。", "熱いぜ!\nこの演目の間、PC全員のスペシャル値が1点減少。", "水着が\nこの演目の間、衣装の効果によって上昇する値にプラス1。", "乾いた喉\nこの演目の間、PC全員のファンブル値が3点上昇。", "潤う\n【メンタル】が5点以下のPC全員の【メンタル】が10点上昇。", "弾けて\nこの演目の間、パーフェクトミラクルの【パフォーマンス値】が15点上昇。"]; - return self.$textFrom1D6Table(title, table);} - else if ("WCH"['$===']($case)) { - title = "ぬくもりの冬サビ表"; - table = ["雪のような\nPC全員の【メンタル】が3点上昇。", "チョコレートに\nPC1人の【メンタル】が10点上昇。", "溶かしてあげる\nこの演目の間、PC全員の判定の達成値が1点上昇。", "特別な日\nこの演目の間、PC1人のスペシャル値が3点減少。", "吹雪が\nこの演目の間、ミラクルの【パフォーマンス値】が10点上昇。", "寒さも忘れて\nこの演目の間、PCはファンブルが発生しても、変調が発生しない。"]; - return self.$textFrom1D6Table(title, table);} - else if ("NCH"['$===']($case)) { - title = "大自然サビ表"; - table = ["野生の\nPC全員の【メンタル】が1D6点上昇。", "パワーで\nこの演目の間、PC1人の【パフォーマンス値】が1D6点上昇。", "鍛えた体\nPC全員の【メンタル】が3点上昇。", "掴みとる\nこの演目の間、PC全員の【パフォーマンス値】が1点上昇。", "抱き留める\nこの演目の間、PC1人の【パフォーマンス値】が3点上昇。", "毎日が戦い\nPC1人の【獲得ファン人数】が[2D6に【ランク係数】をかけた数]点上昇。"]; - return self.$textFrom1D6Table(title, table);} - else if ("GCH"['$===']($case)) { - title = "女性向けサビ表"; - table = [[11, "女の子だから/キュンキュンしてる\nPC全員の【メンタル】が1D6点上昇する。"], [12, "見つめていたい/心の声\nこの演目の間、【パフォーマンス値】が2点上昇する。"], [13, "私の気持ち/あなたへ届け\nこの演目の間、【協調値】が1点上昇する。"], [14, "繋がりたい/夜を過ごしたい\nPC全員の【メンタル】が1D6点上昇する。"], [15, "手と手を繋いで/みんなと一緒に\nこの演目の間、シンフォニーをするたびに、【メンタル】が5点上昇する。"], [16, "ファッションで/おしゃれして\n衣装の効果が1点上昇する。"], [22, "アイドルだけど/アイドルとして\nこの演目の間、意地判定の達成値が2点上昇する。"], [23, "愛してる/好きです\nこの演目の間、【協調値】が1点上昇する。"], [24, "恋したい/恋してる\nこの演目の間、【協調値】が1点上昇する。"], [25, "LOVE/「大好き」\nこの演目の間、【協調値】が1点上昇する。"], [26, "お母さんには秘密/ヴェールでかくして\nこの演目の間、【メンタル】が減少しない。"], [33, "愛に溺れて/沈んでいく\nこの演目の間、シンフォニーをするたびに、【パフォーマンス値】が2点上昇する。"], [34, "潰してほしい/壊して\nこの演目の間、判定に失敗したPCは【獲得ファン人数】が2D6点上昇する。"], [35, "どんなに遠くに/離れても\nこの演目の間、すべてのギャップは埋まっているものとして扱う。"], [36, "想いを届けて/胸に秘めた鼓動\nPC全員の【メンタル】が1D6点上昇する。"], [44, "私のことが好きなら/一緒に死にたい\nこの演目の間、【メンタル】が0になっても、行動不能にならない。"], [45, "(台詞)/(ピアノソロ)\nPC全員の【メンタル】が1D6点上昇する。"], [46, "せーのっ/いくよー!\nこの演目の間、PCはパフォーマンスのサイコロすべてを一度だけ振り直すことができる。"], [55, "あの日みたいに/あの子のこと忘れて\nこの演目の間、判定に失敗しても、判定のサイコロを一度だけ振り直すことができる。"], [56, "歌を届けよう/声に想いを\nこの演目の間、【パフォーマンス値】が2点上昇する。"], [66, "(ユニット名)/(PCの名前)\n好きな能力値が1点上昇する。"]]; - return self.$textFromD66Table(title, table);} - else if ("PCH"['$===']($case)) { - title = "力強いサビ表"; - table = [[11, "バトル/戦いに臨む\nこの演目の間、判定の達成値が2点上昇する。"], [12, "宇宙に/銀河が\nこの演目の間、パフォーマンスのサイコロは取り除かれない。"], [13, "空へ/天に向けて\nこの演目の判定に成功したPCは、【メンタル】が10点上昇する。"], [14, "ぶち壊すぜ/むしゃくしゃして\nこの演目の間、一芸突破を行ったときの目標値が4になる。"], [15, "バイクに乗って/ヘリで飛ばして\nPC全員は、アイテム「キャラアイテム」を1個獲得する。"], [16, "アタック/殴りかかる\nこの演目の間、一芸突破を行ったときの判定の達成値が3点上昇する。"], [22, "情熱/熱情\nこの演目の間、スペシャル値が1点減少。"], [23, "走り切るのさ/星の輝き\nこの演目の間、PCの【メンタル】が減少しない。"], [24, "心赴くまま/願いを込めて\nPC全員の【メンタル】が[自分からの【理解度】の合計]点上昇する。"], [25, "高みへ/打ち破る\nこの演目の間、スペシャル値が1点減少。"], [26, "イメージを/覚悟を\nこの演目の間、スペシャル値が1点減少。"], [33, "弱気な自分に/暗闇裂く\nPC全員は、アイテム「ドリーミングシューズ」を1個獲得する。"], [34, "衝動(リビドー)/強敵(ライバル)\nこの演目の間、スペシャル値が1点減少。"], [35, "覚悟を決めて/クライマックス\nこの演目が最終演目の場合、判定の達成値が4点上昇する。"], [36, "最高の力を/最弱脱ぎ捨て\nこの演目の間、スペシャル値が1点減少。"], [44, "自我(エゴ)/瞬間(とき)\nこの演目の間、判定に失敗しても、判定のサイコロを一度だけ振り直すことができる。"], [45, "(台詞)/(ギターソロ)\nこの演目の間、スペシャル値が1点減少。"], [46, "Let's/try\nこの演目の間、判定の達成値が1点上昇する。"], [55, "起死回生/負けたりしない\nPC全員の【メンタル】が1D6点上昇する。"], [56, "共鳴していく/想いを束ねて\nこの演目の間、シンフォニーするたびに、【パフォーマンス値】が2点上昇する。"], [66, "運命(デスティニー)/正義(ジャスティス)\nこの演目の間、スペシャル値が1点減少。"]]; - return self.$textFromD66Table(title, table);} - else if (/^IT(\d+)?$/['$===']($case)) { - counts = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 1).$to_i(); - return self.$getItem(counts);} - else if ("ACT"['$===']($case)) { - title = "アクセサリー種別決定表"; - table = ["頭アクセサリー表を使用する。", "帽子アクセサリー表を使用する。", "胴アクセサリー表を使用する。", "腕アクセサリー表を使用する。", "足アクセサリー表を使用する。", "その他アクセサリー表を使用する。"]; - text = self.$textFrom1D6Table(title, table); - title = "頭アクセサリー表"; - if ($truthy(text['$include?'](title))) { - - table = [[11, "アイマスク"], [12, "うさみみ"], [13, "ねこみみ"], [14, "サングラス"], [15, "ピアス"], [16, "シュシュ"], [22, "仮面"], [23, "ティアラ"], [24, "エクステ"], [25, "バンダナ"], [26, "ヘアバンド"], [33, "インカム"], [34, "イヤリング"], [35, "ホワイトプリム"], [36, "ゴーグル"], [44, "つけひげ"], [45, "ヘッドホン"], [46, "耳あて"], [55, "トナカイの角"], [56, "花飾り"], [66, "かんざし"]]; - return $rb_plus($rb_plus(text, "\n"), self.$textFromD66Table(title, table));}; - title = "帽子アクセサリー表"; - if ($truthy(text['$include?'](title))) { - - table = [[11, "ヘルメット"], [12, "麦わら帽子"], [13, "サンタ帽子"], [14, "花冠"], [15, "学帽"], [16, "ハンチング帽"], [22, "シルクハット"], [23, "テンガロンハット"], [24, "ナイトキャップ"], [25, "ロシア帽"], [26, "ベレー帽"], [33, "コック帽"], [34, "パーティコーン"], [35, "とんがり帽子"], [36, "キャップ"], [44, "ナースキャップ"], [45, "カンカン帽"], [46, "ハット帽"], [55, "ターバン"], [56, "セーラーキャップ"], [66, "中共帽子"]]; - return $rb_plus($rb_plus(text, "\n"), self.$textFromD66Table(title, table));}; - title = "胴アクセサリー表"; - if ($truthy(text['$include?'](title))) { - - table = [[11, "首かけ指輪"], [12, "カウベル"], [13, "ネックレス"], [14, "蝶ネクタイ"], [15, "メガホン"], [16, "ペンダント"], [22, "ブローチ"], [23, "金の首輪"], [24, "チョーカー"], [25, "南京錠"], [26, "タスキ"], [33, "エプロン"], [34, "名札"], [35, "階級章"], [36, "胸当て"], [44, "ベルト"], [45, "ポシェット"], [46, "マフラー"], [55, "首かけカメラ"], [56, "リボン"], [66, "肩パット"]]; - return $rb_plus($rb_plus(text, "\n"), self.$textFromD66Table(title, table));}; - title = "腕アクセサリー表"; - if ($truthy(text['$include?'](title))) { - - table = [[11, "動物の手"], [12, "宝石の腕輪"], [13, "動物のマペット"], [14, "グローブ"], [15, "指ぬきグローブ"], [16, "リストバンド"], [22, "鍋掴み"], [23, "手袋"], [24, "長手袋"], [25, "腕章"], [26, "腕時計"], [33, "ドリル"], [34, "楽器"], [35, "マフ"], [36, "カフス"], [44, "ボクシンググローブ"], [45, "シルバーアクセサリー"], [46, "ゴールドアクセサリー"], [55, "ぬいぐるみ"], [56, "ミサンガ"], [66, "手甲"]]; - return $rb_plus($rb_plus(text, "\n"), self.$textFromD66Table(title, table));}; - title = "足アクセサリー表"; - if ($truthy(text['$include?'](title))) { - - table = [[11, "革靴"], [12, "ブーツ"], [13, "スポーツシューズ"], [14, "スキー靴"], [15, "アンクル"], [16, "バスケットシューズ"], [22, "スリッパ"], [23, "ミサンガ"], [24, "動物の足"], [25, "作業靴"], [26, "ルーズウォーマー"], [33, "ニーパッド"], [34, "ガーターリング"], [35, "ポーチ"], [36, "ローラースケート"], [44, "へんなタイツ"], [45, "白タイツ"], [46, "網タイツ"], [55, "ガラスの靴"], [56, "グリープ"], [66, "ベル"]]; - return $rb_plus($rb_plus(text, "\n"), self.$textFromD66Table(title, table));}; - title = "その他アクセサリー表"; - if ($truthy(text['$include?'](title))) { - - table = [[11, "ボンボン"], [12, "マント"], [13, "蝶の羽"], [14, "天使の羽"], [15, "悪魔の羽"], [16, "猫のしっぽ"], [22, "トレンチコート"], [23, "ばんそうこう"], [24, "パラソル"], [25, "ステッキ"], [26, "タトゥーシール"], [33, "バーコード"], [34, "バレーボール"], [35, "大きなリボン"], [36, "鎖"], [44, "キャラクターグッズ"], [45, "イメージカラーのネイル"], [46, "メガネ"], [55, "旗"], [56, "ジャケット"], [66, "サスペンダー"]]; - return $rb_plus($rb_plus(text, "\n"), self.$textFromD66Table(title, table));}; - return text;} - else if ("ACB"['$===']($case)) { - title = "アクセサリーブランド決定表"; - table = ["『チャレンジガールズ』の衣装ブランドからランダムに決定する。", "『チャレンジガールズ』の衣装ブランドからランダムに決定する。", "『ロードトゥプリンス』の衣装ブランドからランダムに決定する。", "『ロードトゥプリンス』の衣装ブランドからランダムに決定する。", "『フォーチュンスターズ』の衣装ブランドからランダムに決定する。", "『フォーチュンスターズ』の衣装ブランドからランダムに決定する。"]; - text = self.$textFrom1D6Table(title, table); - /『(.+)』/['$=~'](text); - bookTitle = $$($nesting, 'Regexp').$last_match(1); - return $rb_plus($rb_plus(text, "\n"), self.$costume($rb_plus($rb_plus("衣装(", bookTitle), ")"), true));} - else if ("ACE"['$===']($case)) { - title = "アクセサリー効果表"; - table = [[11, "好きな能力値が1点高いものとして扱う。"], [12, "【ボイス】が1点高いものとして扱う。"], [13, "【フィジカル】が1点高いものとして扱う。"], [14, "【ビジュアル】が1点高いものとして扱う。"], [15, "このアクセサリーを装備したとき、【メンタル】が5点上昇する。この効果は、1回のセッションに1度まで使用できる。"], [16, "【パフォーマンス値】が2点上昇する。"], [22, "このアクセサリーを装備したとき、「アイドルスキル修得表」を使って、ランダムにアイドルスキルを1つ修得する。リザルトフェイズにそのアイドルスキルは失われる。この効果は、1回のセッションに1度まで使用できる。"], [23, "開幕演目と最終演目で行う判定の達成値が2点上昇する。"], [24, "【協調値】が1点上昇する。"], [25, "アイドルスキルの効果が1点上昇する。"], [26, "意地判定の達成値が3点上昇する。"], [33, "特殊な演目によって上昇する【獲得ファン人数】が3点上昇する。"], [34, "一芸突破を行ったとき、判定の達成値が2点上昇する。"], [35, "このアクセサリーを装備したとき、好きな特技を1つ選ぶ。選んだ特技は、ライブフェイズの間、修得しているものとして扱う。この効果は、1回のセッションに1度まで使用できる。"], [36, "幕間での判定の達成値が2点上昇する。"], [44, "思い出を使用したとき、【メンタル】が3点上昇する。"], [45, "ミラクルが発生したときの【パフォーマンス値】が15点になる。"], [46, "アイドルスキルを使用したときの判定の達成値が2点上昇する。"], [55, "特別な演目を行っても、【メンタル】が減少しない。"], [56, "最終演目での【メンタル】減少が半分(端数切り捨て)になる。"], [66, "スペシャルが発生したとき、【メンタル】が10点上昇する。"]]; - return self.$textFromD66Table(title, table);} - else if ("DT"['$===']($case)) {return self.$costume("衣装(チャレンジガールズ)")} - else if ("RC"['$===']($case)) {return self.$costume("衣装(ロードトゥプリンス)")} - else if ("FC"['$===']($case)) {return self.$costume("衣装(フォーチュンスターズ)")} - else if ("CBT"['$===']($case)) { - title = "キャラ空白表(チャレンジガールズ)"; - table = [[11, "変わった言葉遣い"], [12, "口ぐせ"], [13, "動物っぽい"], [14, "和風"], [15, "お調子者"], [16, "計算高い"], [22, "妹/姉キャラ"], [23, "ポジティブ!"], [24, "ネガティブ……"], [25, "やんちゃ"], [26, "年齢"], [33, "きぐるみ"], [34, "負けず嫌い"], [35, "努力家"], [36, "語りたがり"], [44, "天然"], [45, "物まね"], [46, "特徴なし"], [55, "直感"], [56, "ピアノ"], [66, "大切な人"]]; - return self.$textFromD66Table(title, table);} - else if ("RCB"['$===']($case)) { - title = "キャラ空白表(ロードトゥプリンス)"; - table = [[11, "悩み多し"], [12, "俺様"], [13, "弟系"], [14, "がんばり屋"], [15, "物静か"], [16, "不器用"], [22, "二重人格"], [23, "ラッキーボーイ"], [24, "愛され系"], [25, "小悪魔"], [26, "のほほん"], [33, "静かな狂気"], [34, "肉体派"], [35, "ポエマー"], [36, "おせっかい"], [44, "恋愛好き"], [45, "おかん"], [46, "批評家"], [55, "孤高"], [56, "兄貴分"], [66, "女嫌い"]]; - return self.$textFromD66Table(title, table);} - else if ("HBT"['$===']($case)) { - title = "趣味空白表(チャレンジガールズ)"; - table = [[11, "無趣味"], [12, "ティータイム"], [13, "詩"], [14, "資格修得"], [15, "イラスト"], [16, "ぬいぐるみ"], [22, "睡眠"], [23, "長電話"], [24, "メール"], [25, "昆虫採集"], [26, "編み物"], [33, "食事"], [34, "散歩"], [35, "天体観測"], [36, "カフェ巡り"], [44, "お風呂"], [45, "小物コレクション"], [46, "ガーデニング"], [55, "登山"], [56, "歴史マニア"], [66, "家事"]]; - return self.$textFromD66Table(title, table);} - else if ("RHB"['$===']($case)) { - title = "趣味空白表(ロードトゥプリンス)"; - table = [[11, "鉄道"], [12, "華道"], [13, "旅行"], [14, "日曜大工"], [15, "習字"], [16, "俳句"], [22, "食べ歩き"], [23, "筋トレ"], [24, "工作"], [25, "資格修得"], [26, "釣り"], [33, "街歩き"], [34, "ファッション"], [35, "飼育"], [36, "いたずら"], [44, "街でナンパ"], [45, "読書"], [46, "家事全般"], [55, "昆虫採集"], [56, "アート"], [66, "睡眠"]]; - return self.$textFromD66Table(title, table);} - else if ("RU"['$===']($case)) { - title = "マスコット暴走表"; - table = ["激しいアクションで興味を持った人たちを呼び寄せる。\nPC全員の【獲得ファン人数】が5点上昇する。", "マスコットキャラクターから聞こえてはいけない音が聞こえてきて、次の瞬間には動かなくなってしまった。\nこのセッションの間、マスコットキャラクターが使用できなくなる。", "マスコットキャラクターが行方不明! プロデューサーが代わりに着ぐるみを着たけれども、負担が大きかった。\n変調「怪我」が発生する。", "マスコットキャラクターが不適切な発言をしてしまい、連帯責任で謝罪することになってしまう。\nPC全員の【獲得ファン人数】が、それぞれ5点減少する。", "マスコットキャラクターが転んで起き上がれなくなってしまった! みんなで力を合わせて助け起こそう。\nPC全員の【メンタル】が3点減少する。", "マスコットが突然PCに物申す。問題点を挙げて、鍛えてくれる。\nPC一人は、「アイドルスキル修得表」を使って、アイドルスキルを一つ修得する。"]; - return self.$textFrom1D6Table(title, table);} - else if (/^(\d{2})C$/['$===']($case)) { - title = "バーストタイム"; - degrees = $$($nesting, 'Regexp').$last_match(1).$to_i(); - counts = 6; - if ($truthy(($truthy($a = $rb_lt(degrees, 45)) ? $a : $rb_gt(degrees, 55)))) { - return nil - } else if ($truthy($rb_le(degrees, 49))) { - counts = 3 - } else if ($truthy($rb_le(degrees, 52))) { - counts = 4 - } else if ($truthy($rb_le(degrees, 54))) { - counts = 5}; - $b = self.$roll(counts, 6, 1), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (dice = ($a[1] == null ? nil : $a[1])), $b; - total = $rb_plus(total, degrees); - text = "" + (title) + " > " + (degrees) + "+[" + (dice) + "] > " + (total) + " > "; - if ($truthy($rb_ge(total, 80))) { - text = $rb_plus(text, "Burst!\n「バースト表」を使用する。") - } else if ($truthy($rb_ge(total, 65))) { - - string = "成功\n【獲得ファン人数】が2D6点上昇する。"; - if ($truthy($rb_ge(total, 75))) { - string = "" + "大" + (string) + "\nPC全員が挑戦者ではない場合、自分以外のPCを一人指名する。指名されたPCは、新たな挑戦者として、【メンタル】を減少させずに「バーストタイム」を行う。"}; - text = $rb_plus(text, string); - } else { - text = $rb_plus(text, "失敗") - }; - return text;} - else if ("BU"['$===']($case)) { - title = "バースト表"; - table = ["熱い! 熱い!\n【メンタル】が2点減少する。", "慌てて浴槽から出ようとしたが、足を滑らせて浴槽に落ちる。ウケたはいいが、とても熱い。\n【メンタル】が1D6点減少し、【獲得ファン人数】が3D6点上昇する。", "温かい目で見守っていた仲間の手を力いっぱい引っ張り、浴槽に引きずり込む。\n自分以外のPCを一人選ぶ。選ばれたPCは、【メンタル】を3点減少させ、「バーストタイム」を行う。", "あまりの熱さに浴槽へ入り損ねていたら、仲間の一人に叩き落とされる。\n【メンタル】を2点減少してから、PCを一人選ぶ。選んだPCに対する【理解度】が3点上昇し、チェックを外す。", "思い切って氷を頭から浴びる。クールダウン完了!\n【メンタル】を2点減少させることで、もう一度「バーストタイム」を行うことができる。", "熱湯風呂に入るための着替えに手間取ってしまい、急かされてしまう。結果、満足に着替えができなかった。\nこのライブフェイズの間、衣装の効果が無効化される。"]; - return self.$textFrom1D6Table(title, table);} - else if (/^(\d+)(S?)A([1-6]*)([\+\-]\d+)?$/['$===']($case)) { - title = "攻撃"; - counts = $$($nesting, 'Regexp').$last_match(1).$to_i(); - if ($truthy($rb_le(counts, 0))) { - return nil}; - sure = $$($nesting, 'Regexp').$last_match(2)['$empty?']()['$!'](); - remove = $$($nesting, 'Regexp').$last_match(3); - adjust = $$($nesting, 'Regexp').$last_match(4); - adjust = ($truthy($a = adjust) ? $a : ""); - result = self.$roll(counts, 6, 1); - dice = $rb_minus(result['$[]'](1).$split(","), remove.$split("")); - text = $rb_plus($rb_plus("" + (title) + " > [", result['$[]'](1)), "" + "]" + (adjust) + " > "); - if ($truthy(($truthy($a = dice.$count()['$=='](counts)) ? $a : dice['$empty?']()))) { - } else { - text = $rb_plus(text, $rb_plus($rb_plus("[", dice.$join(",")), "" + "]" + (adjust) + " > ")) - }; - if ($truthy(($truthy($a = sure) ? $a : dice.$count()['$=='](dice.$uniq().$count())))) { - - total = adjust.$to_i(); - if ($truthy(dice['$empty?']())) { - } else { - total = $rb_plus(total, $send(dice, 'map', [], "to_i".$to_proc()).$inject("+")) - }; - if ($truthy($rb_lt(total, 0))) { - total = 0}; - text = $rb_plus(text, "" + (total) + "ダメージ"); - } else { - text = $rb_plus(text, "失敗") - }; - return text;} - else if ("SIP"['$===']($case)) { - title = "かんたんパーソン表"; - table = ["テレビ番組に出て、ライブの宣伝をする。", "ラジオに出演して、ライブの宣伝をする。", "動画を配信して、ライブの宣伝をする。", "ライブの宣伝のために、街でビラ配りをする。", "ライブに人を集めるために、派手なパフォーマンスを街中でする。", "ライブの宣伝のために、あちこちを走り回る。"]; - return self.$textFrom1D6Table(title, table);} - else if ("BVT"['$===']($case)) { - title = "大手芸能プロダクション会場表"; - table = ["自社内テレビスタジオ", "自社内ライブステージ", "自社番組", "イベント会場", "ショッピングセンター", "自社主催フェス"]; - return self.$textFrom1D6Table(title, table);} - else if ("LVT"['$===']($case)) { - title = "弱小芸能プロダクション会場表"; - table = ["地方のお祭り", "CDショップ前", "小劇場", "音楽番組", "ローカルテレビ", "芸能関係社共同開催フェス"]; - return self.$textFrom1D6Table(title, table);} - else if ("TVT"['$===']($case)) { - title = "ライブシアター会場表"; - table = ["ライブシアター", "ライブシアター", "ライブシアター", "ライブシアター", "ライブシアター", "ライブシアター"]; - return self.$textFrom1D6Table(title, table);} - else if ("CVT"['$===']($case)) { - title = "アイドル部会場表"; - table = ["運動場", "体育館", "屋上", "街中", "地元のイベント", "学園アイドル大会"]; - return self.$textFrom1D6Table(title, table);} - else if ("BST"['$===']($case)) { - title = "大手芸能プロダクション場所表"; - table = ["社内プロジェクトルーム", "社内カフェ", "社内プール", "社内レッスンルーム", "ショッピングセンター", "社内エステルーム"]; - return self.$textFrom1D6Table(title, table);} - else if ("LST"['$===']($case)) { - title = "弱小芸能プロダクション場所表"; - table = ["給湯室", "客間", "居間", "屋上", "社長室", "近所の公演"]; - return self.$textFrom1D6Table(title, table);} - else if ("TST"['$===']($case)) { - title = "ライブシアター場所表"; - table = ["私たちの舞台", "控室", "売店", "シアター前", "レッスンルーム", "舞台袖"]; - return self.$textFrom1D6Table(title, table);} - else if ("CST"['$===']($case)) { - title = "アイドル部場所表"; - table = ["部室", "音楽室", "教室", "屋上", "運動場", "体育館"]; - return self.$textFrom1D6Table(title, table);} - else if ("BPT"['$===']($case)) { - title = "大手芸能プロダクションプレッシャー種別決定表"; - table = ["先輩アイドルたちの期待", "後輩アイドルたちからの憧れ", "社長の視察", "同期アイドルたちとの競い合い", "大物ゲスト登場", "TV番組のプロデューサー"]; - return self.$textFrom1D6Table(title, table);} - else if ("LPT"['$===']($case)) { - title = "弱小芸能プロダクションプレッシャー種別決定表"; - table = ["熱心にライブに来てくれるファン", "とても悪い条件でのステージ", "大手プロダクションの視察", "ドレスデザイナーの品定め", "新曲を提供したミュージシャン", "取材に来た芸能記者"]; - return self.$textFrom1D6Table(title, table);} - else if ("TPT"['$===']($case)) { - title = "ライブシアタープレッシャー種別決定表"; - table = ["ライブシアターに毎日来てくれるファン", "ライブシアターで働くスタッフ", "シアター経営者の視察", "シアターに偶然立ち寄った大勢の観客", "並行して行われるイベントのファン", "ライバルライブシアターのアイドルユニット"]; - return self.$textFrom1D6Table(title, table);} - else if ("CPT"['$===']($case)) { - title = "アイドル部プレッシャー種別決定表"; - table = ["ライバルチーム「海原校」の挑戦", "最強チーム「Tiara's」の偵察", "PTAの視察", "PCの親", "仲の良い同級生", "ライバルチーム「聖国際女学園」の挑戦"]; - return self.$textFrom1D6Table(title, table);} - else if ("BIT"['$===']($case)) { - title = "大手芸能プロダクション道具表"; - table = ["栄養ドリンク", "自動販売機", "先輩アイドルのポスター", "先輩アイドルのCD", "アイドル雑誌", "台本"]; - return self.$textFrom1D6Table(title, table);} - else if ("LIT"['$===']($case)) { - title = "弱小芸能プロダクション道具表"; - table = ["セロハンテープ", "冷蔵庫", "百円玉", "ボロボロのソファー", "おにぎり", "キッチン"]; - return self.$textFrom1D6Table(title, table);} - else if ("TIT"['$===']($case)) { - title = "ライブシアター道具表"; - table = ["舞台の照明", "企画書", "PCのグッズ", "ホワイトボード", "ライブポスター", "うどん"]; - return self.$textFrom1D6Table(title, table);} - else if ("CIT"['$===']($case)) { - title = "アイドル部道具表"; - table = ["パソコン", "机", "鞄", "ハンディカメラ", "ジャージ", "投票箱"]; - return self.$textFrom1D6Table(title, table);}; - return nil; - }, $BeginningIdol_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$rollPerformance', $BeginningIdol_rollPerformance$5 = function $$rollPerformance(counts, residual, adjust) { - var $$6, $a, self = this, title = nil, string = nil, result = nil, diceAll = nil, total = nil, diceUse = nil, text = nil; - - - title = "パフォーマンス"; - string = ""; - if ($truthy($rb_gt(adjust, 0))) { - string = $rb_plus(string, "+")}; - if (adjust['$=='](0)) { - } else { - string = $rb_plus(string, adjust.$to_s()) - }; - result = self.$roll(counts, 6, 1); - diceAll = $rb_plus(result['$[]'](1).$delete(","), residual); - total = 0; - diceUse = []; - $send($range(1, 7, false), 'each', [], ($$6 = function(i){var self = $$6.$$s || this; - - - - if (i == null) { - i = nil; - }; - if (diceAll.$count(i.$to_s())['$=='](1)) { - - total = $rb_plus(total, i); - return diceUse.$push(i); - } else { - return nil - };}, $$6.$$s = self, $$6.$$arity = 1, $$6)); - text = $rb_plus($rb_plus(" > [", result['$[]'](1)), "]"); - if ($truthy(residual['$empty?']())) { - text = "" + (title) + (text) - } else { - text = "" + "シンフォニー" + (text) - }; - if ($truthy(residual['$empty?']())) { - } else { - text = $rb_plus(text, $rb_plus($rb_plus(",[", residual.$split("").$sort().$join(",")), "]")) - }; - text = $rb_plus(text, "" + (string) + " > "); - if (total['$=='](0)) { - if ($truthy(residual['$empty?']())) { - - total = $rb_plus(10, adjust); - text = $rb_plus(text, "" + "【ミラクル】" + (total)); - } else { - - total = $rb_plus(15, adjust); - text = $rb_plus(text, "" + "【ミラクルシンクロ】" + (total) + "+シンフォニーを行った人数"); - } - } else if ($truthy(($truthy($a = total['$=='](21)) ? diceUse['$include?'](7)['$!']() : $a))) { - - if ($truthy(residual['$empty?']())) { - } else { - text = $rb_plus(text, $rb_plus($rb_plus("[", diceUse.$join(",")), "" + "]" + (string) + " > ")) - }; - total = $rb_plus(30, adjust); - text = $rb_plus(text, "" + "【パーフェクトミラクル】" + (total)); - } else { - - if ($truthy(($truthy($a = residual['$empty?']()) ? diceUse.$count()['$=='](diceAll.$length()) : $a))) { - } else { - text = $rb_plus(text, $rb_plus($rb_plus("[", diceUse.$join(",")), "" + "]" + (string) + " > ")) - }; - total = $rb_plus(total, adjust); - text = $rb_plus(text, total.$to_s()); - }; - return text; - }, $BeginningIdol_rollPerformance$5.$$arity = 3); - - Opal.def(self, '$textFromD66Table', $BeginningIdol_textFromD66Table$7 = function $$textFromD66Table(title, table, chance) { - var $a, $b, self = this, isSwap = nil, dice = nil, number = nil, text = nil, skill = nil; - - - - if (chance == null) { - chance = ""; - }; - isSwap = true; - dice = self.$getD66(isSwap); - $b = table.$assoc(dice), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (skill = ($a[2] == null ? nil : $a[2])), $b; - $b = self.$checkChance(text, skill, chance), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (skill = ($a[1] == null ? nil : $a[1])), $b; - return $rb_plus($rb_plus("" + (title) + " > [" + (number) + "] > ", self.$replaceBadStatus(text)), self.$getSkillText(skill)); - }, $BeginningIdol_textFromD66Table$7.$$arity = -3); - - Opal.def(self, '$checkChance', $BeginningIdol_checkChance$8 = function $$checkChance(text, skill, chance) { - var $a, self = this, target = nil, matchedText = nil; - - - if ($truthy(chance['$empty?']())) { - return [text, skill]}; - if ($truthy(/チャンスが(\d{1,2})以下ならオフ。/['$==='](text))) { - } else { - return [text, skill] - }; - target = $$($nesting, 'Regexp').$last_match(1).$to_i(); - matchedText = (($a = $gvars['~']) === nil ? nil : $a['$[]'](0)); - if ($truthy($rb_ge(target, chance.$to_i()))) { - - text = "オフ"; - skill = ""; - } else { - - text = text.$gsub(matchedText, ""); - text = text.$chomp(); - }; - return [text, skill]; - }, $BeginningIdol_checkChance$8.$$arity = 3); - - Opal.def(self, '$textFrom1D6Table', $BeginningIdol_textFrom1D6Table$9 = function $$textFrom1D6Table(title, table1, table2) { - var $a, $b, $$10, self = this, text1 = nil, number1 = nil, text = nil, text2 = nil, number2 = nil, category = nil; - - - - if (table2 == null) { - table2 = nil; - }; - $b = self.$get_table_by_1d6(table1), $a = Opal.to_ary($b), (text1 = ($a[0] == null ? nil : $a[0])), (number1 = ($a[1] == null ? nil : $a[1])), $b; - text = "" + (title) + " > "; - if ($truthy(table2['$nil?']())) { - text = $rb_plus(text, "" + "[" + (number1) + "] > " + (text1)) - } else { - - $b = self.$get_table_by_1d6(table2), $a = Opal.to_ary($b), (text2 = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - text = $rb_plus(text, "" + "[" + (number1) + "," + (number2) + "] > " + (text1) + (text2)); - }; - if ($truthy(/ランダムに決定した特技が指定特技のアイドルスキル\(身長分野、(属性|才能)分野、出身分野が出たら振り直し\)$/['$=~'](text))) { - - category = $$($nesting, 'Regexp').$last_match(1); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$10 = function(){var self = $$10.$$s || this, $c, $d, skill = nil; - - - skill = self.$getSkillList(); - text = $rb_plus(text, "" + "\n" + (skill)); - if ($truthy(($truthy($c = ($truthy($d = skill['$include?']("身長")) ? $d : skill['$include?'](category))) ? $c : skill['$include?']("出身")))) { - } else { - - Opal.brk(nil, $brk) - }; - return (text = $rb_plus(text, " > 振り直し"));}, $$10.$$s = self, $$10.$$brk = $brk, $$10.$$arity = 0, $$10)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();}; - return self.$replaceBadStatus(text); - }, $BeginningIdol_textFrom1D6Table$9.$$arity = -3); - - Opal.def(self, '$getSkillList', $BeginningIdol_getSkillList$11 = function $$getSkillList(field) { - var $a, $b, self = this, title = nil, table = nil, number1 = nil, fieldName = nil, skill = nil, number2 = nil, text = nil; - - - - if (field == null) { - field = 0; - }; - title = "特技リスト"; - table = [["身長", ["~125", "131", "136", "141", "146", "156", "166", "171", "176", "180", "190~"]], ["属性", ["エスニック", "ダーク", "セクシー", "フェミニン", "キュート", "プレーン", "パッション", "ポップ", "バーニング", "クール", "スター"]], ["才能", ["異国文化", "スタイル", "集中力", "胆力", "体力", "笑顔", "運動神経", "気配り", "学力", "セレブ", "演技力"]], ["キャラ", ["中二病", "ミステリアス", "マイペース", "軟派", "語尾", "キャラ分野の空白", "元気", "硬派", "物腰丁寧", "どじ", "ばか"]], ["趣味", ["オカルト", "ペット", "スポーツ", "おしゃれ", "料理", "趣味分野の空白", "ショッピング", "ダンス", "ゲーム", "音楽", "アイドル"]], ["出身", ["沖縄", "九州地方", "四国地方", "中国地方", "近畿地方", "中部地方", "関東地方", "北陸地方", "東北地方", "北海道", "海外"]]]; - number1 = 0; - if (field['$=='](0)) { - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (table = ($a[0] == null ? nil : $a[0])), (number1 = ($a[1] == null ? nil : $a[1])), $b - } else { - table = table['$[]']($rb_minus(field, 1)) - }; - $b = table, $a = Opal.to_ary($b), (fieldName = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (skill = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - text = title; - if (field['$=='](0)) { - text = $rb_plus(text, "" + " > [" + (number1) + "," + (number2) + "]") - } else { - text = $rb_plus(text, "" + "(" + (fieldName) + "分野) > [" + (number2) + "]") - }; - return "" + (text) + " > 《" + (skill) + "/" + (fieldName) + (number2) + "》"; - }, $BeginningIdol_getSkillList$11.$$arity = -1); - - Opal.def(self, '$badStatus', $BeginningIdol_badStatus$12 = function $$badStatus(counts) { - var $$13, self = this, title = nil, table = nil, result = nil, numbers = nil, text = nil, occurrences = nil; - - - - if (counts == null) { - counts = 1; - }; - title = "変調"; - table = ["「不穏な空気」 PCの【メンタル】が減少するとき、減少する数値が1点上昇する", "「微妙な距離感」 【理解度】が上昇しなくなる", "「ガラスの心」 PCのファンブル値が1点上昇する", "「怪我」 幕間のとき、プロデューサーは「回想」しか行えない", "「信じきれない」 PC全員の【理解度】を1点低いものとして扱う", "「すれ違い」 PCはアイテムの使用と、リザルトフェイズに「おねがい」をすることができなくなる"]; - if ($truthy($rb_le(counts, 0))) { - return ""}; - result = self.$roll(counts, 6, 1); - numbers = result['$[]'](1).$split(",").$uniq(); - text = $rb_plus($rb_plus("" + (title) + " > [", result['$[]'](1)), "] > "); - occurrences = numbers.$count(); - if ($truthy($rb_gt(occurrences, 1))) { - text = $rb_plus(text, "" + "以下の" + (occurrences) + "つが発生する。\n")}; - $send(occurrences, 'times', [], ($$13 = function(i){var self = $$13.$$s || this; - - - - if (i == null) { - i = nil; - }; - return (text = $rb_plus(text, $rb_plus(table['$[]']($rb_minus(numbers['$[]'](i).$to_i(), 1)), "\n")));}, $$13.$$s = self, $$13.$$arity = 1, $$13)); - return text['$[]'](0, $rb_minus(text.$length(), 1)); - }, $BeginningIdol_badStatus$12.$$arity = -1); - - Opal.def(self, '$getSkillText', $BeginningIdol_getSkillText$14 = function $$getSkillText(skill) { - var $a, self = this, text = nil; - - - if ($truthy(($truthy($a = skill['$nil?']()) ? $a : skill['$empty?']()))) { - return ""}; - text = skill; - if ($truthy(/^AT([1-6]?)$/['$=~'](text))) { - text = self.$getSkillList($$($nesting, 'Regexp').$last_match(1).$to_i()) - } else { - text = "" + "特技 : " + (text) - }; - return "" + "\n" + (text); - }, $BeginningIdol_getSkillText$14.$$arity = 1); - - Opal.def(self, '$setArrayFromD66Table', $BeginningIdol_setArrayFromD66Table$15 = function $$setArrayFromD66Table(array, name, src, table) { - var $a, $b, self = this, index = nil, isSwap = nil, dice = nil, number = nil, text = nil; - - - index = name.$index(src); - if ($truthy(index['$nil?']())) { - return nil}; - isSwap = true; - dice = self.$getD66(isSwap); - $b = table.$assoc(dice), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), $b; - return array.$push([index, src, text, number]); - }, $BeginningIdol_setArrayFromD66Table$15.$$arity = 4); - - Opal.def(self, '$getItem', $BeginningIdol_getItem$16 = function $$getItem(counts) { - var $$17, self = this, title = nil, table = nil, result = nil, numbers = nil, unique = nil, text = nil, acquisitions = nil, kinds = nil; - - - - if (counts == null) { - counts = 1; - }; - title = "アイテム"; - table = ["スタミナドリンク", "トレーニングウェア", "ドリーミングシューズ", "キャラアイテム", "お菓子", "差し入れ"]; - if ($truthy($rb_le(counts, 0))) { - return ""}; - result = self.$roll(counts, 6, 1); - numbers = result['$[]'](1).$split(","); - unique = numbers.$uniq(); - text = $rb_plus($rb_plus("" + (title) + " > [", result['$[]'](1)), "] > "); - acquisitions = numbers.$count(); - kinds = unique.$count(); - $send(kinds, 'times', [], ($$17 = function(i){var self = $$17.$$s || this, string = nil; - - - - if (i == null) { - i = nil; - }; - string = table['$[]']($rb_minus(unique['$[]'](i).$to_i(), 1)); - if (kinds['$=='](1)) { - } else { - string = "" + "「" + (string) + "」" - }; - text = $rb_plus(text, string); - if (acquisitions['$=='](kinds)) { - } else { - text = $rb_plus(text, $rb_plus(numbers.$count(unique['$[]'](i)).$to_s(), "つ")) - }; - return (text = $rb_plus(text, "と"));}, $$17.$$s = self, $$17.$$arity = 1, $$17)); - text = text.$sub(/と$/, ""); - return text; - }, $BeginningIdol_getItem$16.$$arity = -1); - - Opal.def(self, '$replaceBadStatus', $BeginningIdol_replaceBadStatus$18 = function $$replaceBadStatus(text) { - var $a, self = this, counts = nil, $case = nil, substitution = nil; - - - if ($truthy(/変調がランダムに(一|二|三)つ発生する。/['$=~'](text))) { - } else { - return text - }; - counts = 1; - $case = $$($nesting, 'Regexp').$last_match(1); - if ("二"['$===']($case)) {counts = 2} - else if ("三"['$===']($case)) {counts = 3}; - substitution = text.$clone(); - substitution = substitution.$gsub((($a = $gvars['~']) === nil ? nil : $a['$[]'](0)), ""); - if ($truthy(($truthy($a = substitution['$empty?']()) ? $a : /\n$/['$=~'](substitution)))) { - } else { - substitution = $rb_plus(substitution, "\n") - }; - return $rb_plus(substitution, self.$badStatus(counts)); - }, $BeginningIdol_replaceBadStatus$18.$$arity = 1); - return (Opal.def(self, '$costume', $BeginningIdol_costume$19 = function $$costume(title, brandOnly) { - var self = this, table = nil, text = nil; - - - - if (brandOnly == null) { - brandOnly = false; - }; - table = []; - if ($truthy(title['$include?']("チャレンジガールズ"))) { - table = [[11, "12&88\n自分の【パフォーマンス値】が決定したとき、その値を2点上昇する。"], [12, "Glow Up Princess\nパフォーマンスを行うとき、サイコロを追加で1つ振れる。"], [13, "しずく\nライブフェイズ開始時に、【メンタル】が5点上昇する。"], [14, "Pop☆Sweet\n自分の【メンタル】が上昇するとき、さらに1点上昇する。"], [15, "Ttype\n一芸突破をしても【メンタル】が減少しない。また、一芸突破をした時、達成値が1点上昇する。"], [16, "Vampire Story\nパフォーマンスの【パフォーマンス値】が10以上の場合、自分の【メンタル】が3点上昇する。"], [22, "Pure Mermaid\n【ビジュアル】の演目は、指定特技を《スタイル》に変更できる。指定特技が《スタイル》の演目では、【パフォーマンス値】が2点上昇する。"], [23, "I'm cute\nライブフェイズ開始時に【メンタル】が1点上昇する。幕間の開始時に能力値を1つ選ぶ。選ばれた能力値は、このライブフェイズの間、1点上昇する。"], [24, "No.1 Girl\n【パフォーマンス値】が決定するとき、【メンタル】を1点減少することで、【パフォーマンス値】が3点上昇する。"], [25, "Final Romance\n【ビジュアル】のパフォーマンスを行うとき、キャラクターを1人選ぶ。選んだキャラクターの自分に対する【理解度】と同じだけ、【パフォーマンス値】が上昇する。"], [26, "Prism Line\nパフォーマンス1回につき、1度だけパフォーマンスに使用したサイコロ1つを振り直すことができる。"], [33, "さーばんとさーびす\nシンフォニーを行うたびに、そのパフォーマンスの【パフォーマンス値】が3点上昇する。"], [34, "Travel Bag\n幕間に自分の【理解度】チェック1つを外すことができる。"], [35, "JewelC\n開幕演目と幕間にアイテムを1つ選んで獲得する。"], [36, "Sweet Girl\nパフォーマンスを行ったPCは、【メンタル】を2点上昇する。"], [44, "Satisfaction West\nミラクル、ミラクルシンクロ、パーフェクトミラクルが発生したとき【パフォーマンス値】を5点上昇する。"], [45, "Under Big Ben\n使用能力が【ボイス】のパフォーマンスの【パフォーマンス値】が10以上の場合、自分に対する【理解度】チェック1つを外すことができる。"], [46, "PIERO\n一芸突破の達成値が2点上昇する。"], [55, "甘々娘々\n使用能力が【ビジュアル】のパフォーマンスを行うとき、【パフォーマンス値】が3点上昇する。"], [56, "花鳥風月\nシンフォニーを行うとき、振るサイコロの数を1つ増やす、もしくは1つ減らすことができる。"], [66, "Jingle Bells\nリザルトフェイズに以下の効果が発生する。リザルトフェイズに、【獲得ファン人数】が1D6点上昇する。また、PC全員は、条件を満たしていなくても「お願い」をすることができる。"]] - } else if ($truthy(title['$include?']("ロードトゥプリンス"))) { - table = [[11, "Angel kiss\nパフォーマンスを行うとき、1の目が出たサイコロは取り除かれない。シンフォニーを行ったとき、1の目が出たサイコロをすべて取り除く。"], [12, "Pirate ship\n指定特技が属性分野の演目を行うとき、その指定特技を《セクシー/属性4》に変更することができる。"], [13, "ロードトゥプリンス\nミラクル、ミラクルシンクロ、パーフェクトミラクルが発生したとき、そのキャラクターは【メンタル】が10点上昇する。"], [14, "Princess Guardian\n自分以外のキャラクターの【メンタル】が0点になったときに、《気配り/才能9》で判定を行うことができる。この判定には、個性特技は使用できない。成功すると、そのキャラクターは、【獲得ファン人数】が半分にならない。"], [15, "Starlight TourS\nライブフェイズの間、演目を1つ選んで、指定特技を《スター/属性12》に変更できる。"], [16, "花鳥風月・裏\nライブフェイズ中、一度だけ場に残っているすべてのサイコロの目を反転(1なら6に、2なら5に、3なら4に)することができる。"], [22, "しくらま\n判定に使用したサイコロの目が7の場合、【メンタル】が7点上昇する。"], [23, "Chime\nミラクル、ミラクルシンクロ、パーフェクトミラクルが発生したとき、そのキャラクターはランダムにアイテムを1つ獲得する。"], [24, "砂上の光\nシンフォニーを行ったとき、シンフォニーを受けたキャラクターの【メンタル】が5点上昇する。"], [25, "Air by me\n幕間の開始時に、【メンタル】が5点上昇する。"], [26, "戦国ストリート\n演目の使用能力が【フィジカル】のとき、【パフォーマンス値】が2点上昇する。また、指定特技が《ダンス/趣味9》の場合、【パフォーマンス値】が2点上昇する。"], [33, "Wild man\n一芸突破の達成値が2点上昇する。ただし、スペシャルは発生しなくなる。"], [34, "Gray Stand\n【獲得ファン人数】が減少したとき、減少した値の半分(端数切り捨て)と同じ値だけ、【獲得ファン人数】が上昇する。"], [35, "トイ ARM\n演目の開始時に、2D6を振る。その結果が11以上の場合、この演目では【メンタル】が減少しない。"], [36, "white plan\nファンブルが発生しても変調を受けない。"], [44, "SINOBI\n開幕演目を行うとき、出ないことを選択することができる。"], [45, "V-X\nミラクルが発生したときの【パフォーマンス値】を15にできる。"], [46, "ドラゴンナックル\n幕間より後、PCが行うパフォーマンスの【パフォーマンス値】が4点上昇する。"], [55, "Halloween Magic\n後半PPによって【メンタル】が減少するとき、その値を4点減少する(最低0)。"], [56, "Satisfaction East\n【獲得ファン人数】が減少したとき、【メンタル】を20点にすることができる。"], [66, "Devil kiss\nパフォーマンスを行うとき、6の目が出たサイコロは取り除かれない。シンフォニーを行ったとき、6の目が出たサイコロをすべて取り除く。"]] - } else if ($truthy(title['$include?']("フォーチュンスターズ"))) { - table = [[11, "常峰製作所\n第一演目では、【メンタル】が減少しない。"], [12, "フォーチュンスター\n最終演目の【パフォーマンス値】が「【メンタル】÷2(端数切り捨て)」点上昇する。"], [13, "ファイタースケイル\n【メンタル】が5点以下の場合、【パフォーマンス値】が1D6点上昇する。"], [14, "Blood Scissors\n自分以外のキャラクター一人の【メンタル】を5点減少するか、プロデューサーに変調「怪我」を与えることで、自分の【メンタル】が5点上昇する。この効果は、プロデューサーが既に「怪我」の変調を受けていると、使用できない。"], [15, "蒸気式演技服\n判定を行うとき、【メンタル】を1点消費することで、判定の達成値が1点上昇する。"], [16, "ウェイトスター\n「スタミナドリンク」によって、他のキャラクターの【メンタル】を上昇する場合、さらに4点上昇する。"], [22, "Little Stage\n判定のサイコロやパフォーマンスで「1」の出目が1つ以上出た場合、【思い出】を1つ獲得する。"], [23, "Check It\n開幕演目前に、最終演目以外の好きな演目を指定する。指定された演目では、自分の【メンタル】が減少しない。"], [24, "12 Sword\nアイドル戦闘ルールを使用しているとき、与えるダメージが3点上昇し、上昇する【獲得ファン人数】が5点上昇する。"], [25, "Magi Magic\nパフォーマンスや自分が行うシンフォニーでサイコロを取り除くたびに、【メンタル】が2点上昇する。"], [26, "Jokers\n最終演目に行う一芸突破の目標値が3点減少する。"], [33, "Papillon Club\n自分以外のキャラクターがタイプが「補助」のアイドルスキルを使用するたびに、【メンタル】が3点上昇する。"], [34, "ネイキッドチャレンジ\n開幕演目開始時に、【メンタル】が5点減少する。このライブフェイズの間、好きな能力値が3点上昇する。"], [35, "Cold Vivit\n好きなギャップを1つ埋める。このギャップは、ライブフェイズ終了時に元に戻る。"], [36, "対魔絶伏\n特別な演目では、【メンタル】が減少しない。"], [44, "Rescue Power\n演目の判定でファンブルが発生した場合、好きな能力値でパフォーマンスを行うことができる。"], [45, "アニマルエンジン\n幕間の終了時に、好きな動物からの【理解度】が2点上昇する。"], [46, "ふわふわキッチン\n好きなときに、「お菓子」を一つ消費することで、好きなキャラクターの【メンタル】が1D6点上昇できる。また、幕間に「お菓子」を1つ獲得する。"], [55, "Night Talk\n幕間で「信用」を行ったとき、上昇する【メンタル】が10点になる。"], [56, "ティーチングタイム\n自分以外のキャラクターを1人指定する。このライブフェイズの間、指定されたPCの能力値が1点上昇する。"], [66, "See Diver\n演目名に「海」「水」「泡」「湖」「風呂」を含む演目を行った場合、【獲得ファン人数】が1D6点上昇する。"]] - } else { - return nil - }; - text = self.$textFromD66Table(title, table); - if ($truthy(brandOnly)) { - text = text.$split("\n").$first()}; - return text; - }, $BeginningIdol_costume$19.$$arity = -2), nil) && 'costume'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/BeginningIdol_Korean.js b/src/assets/dicebot/BeginningIdol_Korean.js deleted file mode 100644 index e1090c24c..000000000 --- a/src/assets/dicebot/BeginningIdol_Korean.js +++ /dev/null @@ -1,869 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range, $gvars = Opal.gvars; - - Opal.add_stubs(['$setPrefixes', '$==', '$<=', '$>=', '$upcase', '$===', '$to_i', '$last_match', '$rollPerformance', '$textFrom1D6Table', '$textFromD66Table', '$getSkillList', '$badStatus', '$roll', '$+', '$[]', '$-', '$getSkillText', '$=~', '$getItem', '$get_table_by_1d6', '$index', '$nil?', '$push', '$setArrayFromD66Table', '$sort!', '$each', '$gsub', '$length', '$include?', '$costume', '$<', '$>', '$!', '$empty?', '$split', '$count', '$join', '$uniq', '$inject', '$map', '$to_proc', '$to_s', '$delete', '$sort', '$getD66', '$assoc', '$checkChance', '$replaceBadStatus', '$sub', '$chomp', '$loop', '$get_table_by_2d6', '$times', '$clone', '$first']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BeginningIdol_Korean'); - - var $nesting = [self].concat($parent_nesting), $BeginningIdol_Korean_initialize$1, $BeginningIdol_Korean_check_nD6$2, $BeginningIdol_Korean_rollDiceCommand$3, $BeginningIdol_Korean_rollPerformance$5, $BeginningIdol_Korean_textFromD66Table$7, $BeginningIdol_Korean_checkChance$8, $BeginningIdol_Korean_textFrom1D6Table$9, $BeginningIdol_Korean_getSkillList$11, $BeginningIdol_Korean_badStatus$12, $BeginningIdol_Korean_getSkillText$14, $BeginningIdol_Korean_setArrayFromD66Table$15, $BeginningIdol_Korean_getItem$16, $BeginningIdol_Korean_replaceBadStatus$18, $BeginningIdol_Korean_costume$19; - - - Opal.const_set($nesting[0], 'ID', "BeginningIdol:Korean"); - Opal.const_set($nesting[0], 'NAME', "비기닝 아이돌"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:비기닝 아이돌"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・퍼포먼스 [r]PDn[+m/-m](r:남은 주사위 눈 n:굴릴 갯수 m:수정치)\n" + "・월드세팅 업무표 BWT:대형 연예 프로덕션 LWT:약소 연예 프로덕션\n" + " TWT:라이브 시어터 CWT:아이돌 부 LO[n]:로컬 아이돌(n:찬스)\n" + " SU:열정의 여름 WI:온기의 겨울 NA:대자연 GA:女学園 BA:アカデミー\n" + "・업무표 WT VA:버라이어티 MU:음악 관련 DR:드라마 관련\n" + " VI:비주얼 관련 SP:스포츠 CHR:크리스마스 PAR:파트너 관련\n" + "・특기 리스트 AN:動物 MOV:映画 FA:ファンタジー\n" + "・ハプニング表 HA\n" + "・特技リスト AT[n](n:分野No.)\n" + "・아이돌 스킬 습득표 SGT:챌린지 걸즈 RS:로드 투 프린스\n" + "・변조 BT[n](n:주사위눈)\n" + "・아이템 IT[n](n:보유 갯수)\n" + "・アクセサリー ACT:種別決定 ACB:ブランド決定 ACE:効果表\n" + "・의상 DT:챌린지 걸즈 RC:로드 투 프린스 FC:フォーチュンスターズ\n" + "・엉망진창 표 LUR:로컬 아이돌 SUR:정열의 여름 WUR:온기의 겨울\n" + " NUR:대자연 GUR:女学園 BUR:アカデミー\n" + "・센터 룰 HW:역풍 씬표 FL:신출내기 씬표 LN:고독표\n" + " マイスキル【MS:名前決定 MSE:効果表】 演出表【ST FST:ファンタジー】\n" + "・합숙 룰 산책표 【SH:쇼핑몰 MO:산 SEA:바다 SPA:온천】\n" + " TN:야밤의 대화 시츄에이션 성장표 【CG:커먼 GG:골드】\n" + "・작사표 CHO SCH:정열의 여름 WCH:온기의 겨울 NCH:대자연\n" + "・캐릭터 공백표 CBT:챌린지 걸즈 RCB:로드 투 프린스\n" + "・취미 공백표 HBT:챌린지 걸즈 RHB:로드 투 프린스\n" + "・마스코트 폭주표 RU\n" + "・버스트 타임 nC:バーストタイム(n:온도) BU:バースト表\n" + "・攻撃 n[S]A[r][+m/-m](n:振る数 S:失敗しない r:取り除く出目 m:修正値)\n" + "・かんたんパーソン表 SIP\n" + "・회장표\n" + " BVT:대형 예능 프로덕션 LVT:약소 예능 프로덕션 TVT:라이브 시어터 CVT:아이돌 부\n" + "・장소표\n" + " BST:대형 예능 프로덕션 LST:약소 예능 프로덕션 TST:라이브 시어터 CST:아이돌 부\n" + "・프레셔 종류 결정표\n" + " BPT:대형 예능 프로덕션 LPT:약소 예능 프로덕션 TPT:라이브 시어터 CPT:아이돌 부\n" + "・도구표\n" + " BIT:대형 예능 프로덕션 LIT:약소 예능 프로덕션 TIT:라이브 시어터 CIT:아이돌 부\n" + "[]内は省略可 D66 다이스가 존재\n"); - self.$setPrefixes(["[1-7]*PD\\d+(?:[\\+\\-]\\d+)?", "HW", "BWT", "LWT", "TWT", "CWT", "LO\\d{0,2}", "SU", "WI", "NA", "GA", "BA", "WT", "VA", "MU", "DR", "VI", "SP", "CHR", "PAR", "SW", "AN", "MOV", "FA", "HA", "AT[1-6]?", "LUR", "SUR", "WUR", "NUR", "GUR", "BUR", "BT\\d*", "SGT", "RS", "SH", "MO", "SEA", "SPA", "TN", "CG", "GG", "FL", "LN", "MS", "MSE", "ST", "FST", "CHO", "SCH", "WCH", "NCH", "IT\\d*", "ACT", "ACB", "ACE", "DT", "RC", "FC", "CBT", "RCB", "HBT", "RHB", "RU", "\\d{2}C", "BU", "\\d+S?A[1-6]*(?:[\\+\\-]\\d+)?", "SIP", "BVT", "LVT", "TVT", "CVT", "BST", "LST", "TST", "CST", "BPT", "LPT", "TPT", "CPT", "BIT", "LIT", "TIT", "CIT"]); - - Opal.def(self, '$initialize', $BeginningIdol_Korean_initialize$1 = function $$initialize() { - var $iter = $BeginningIdol_Korean_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $BeginningIdol_Korean_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $BeginningIdol_Korean_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $BeginningIdol_Korean_initialize$1.$$arity = 0); - - Opal.def(self, '$check_nD6', $BeginningIdol_Korean_check_nD6$2 = function $$check_nD6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル(変調がランダムに1つ発生し、PCは【思い出】を1つ獲得する)" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > 스페셜!(PC는 【추억】 1개 획득)" - } else if ($truthy($rb_ge(total, target))) { - return " > 성공" - } else { - return " > 실패" - }; - }, $BeginningIdol_Korean_check_nD6$2.$$arity = 5); - Opal.alias(self, "check_2D6", "check_nD6"); - - Opal.def(self, '$rollDiceCommand', $BeginningIdol_Korean_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var $a, $b, $$4, self = this, $case = nil, counts = nil, residual = nil, adjust = nil, title = nil, table = nil, value = nil, table1 = nil, table2 = nil, number = nil, text = nil, skillTitle = nil, skillTable = nil, nameTable = nil, articleTitle = nil, articleTable = nil, describeTitle = nil, describeTable = nil, sceneTitle = nil, sceneTable = nil, materialTitle = nil, materialTable = nil, actionTitle = nil, actionTable = nil, name = nil, nameNumber = nil, nameParts = nil, articleIndex = nil, numberString = nil, bookTitle = nil, degrees = nil, total = nil, dice = nil, string = nil, sure = nil, remove = nil, result = nil; - - - $case = command.$upcase(); - if (/^([1-7]*)PD(\d+)([\+\-]\d+)?$/['$===']($case)) { - counts = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($rb_le(counts, 0))) { - return nil}; - residual = $$($nesting, 'Regexp').$last_match(1); - adjust = $$($nesting, 'Regexp').$last_match(3).$to_i(); - return self.$rollPerformance(counts, residual, adjust);} - else if ("HW"['$===']($case)) { - title = "向かい風シーン表"; - table = ["誰もいない屋内。静寂が世界を包んでいる。嵐の前の静けさだ。", "話し声が絶えない夕暮れの帰り道。みんなが明るい声を上げる中、自分の周りだけがぽっかり穴が空いたかのように静かだ。", "曇り空になってきた。早く屋内に行かないと、雨でぬれてしまうかもしれない。", "ゲリラ豪雨だ。傘も持ってきていないので、激しい雨に打たれるしかない。ついてないな。", "夜空を雲が覆いつくしてしまっている。空を見上げても、星の輝きは見えない。", "屋内の電気がトラブルで点灯しないようだ。暗い世界は、気分まで滅入ってしまう。"]; - return self.$textFrom1D6Table(title, table);} - else if ("BWT"['$===']($case)) { - title = "대형 예능 프로덕션 업무표"; - table = [[11, "오프", ""], [12, "선배 아이돌이 사회를 맡는 버라이어티 프로그램에 출연! 어떤 코너를 맡는지?", "趣味分野からランダム"], [13, "선배 아이돌과 로드 워킹 프로그램에서 공동 출연. 이 거리에는 무엇이 있는지?", "出身分野からランダム"], [14, "선배 아이돌이 음악 프로그램에 출연. 백 댄서를 맡게 되었다", "《댄스/취미9》"], [15, "선배 아이돌과 함께 그라비아 촬영. 지지 않게 눈에 띄자.", "《마이페이스/캐릭터4》"], [16, "아이돌 소개 프로그램에서 선배 아이돌에게 소개된다. 기운차게 임하자", "《건강/캐릭터8》"], [22, "오프", ""], [23, "선배 아이돌의 라디오 프로그램에 게스트로 출연. 토크로 잘 북돋을 수 있을까?", "《캐릭터 분야 공백/캐릭터7》"], [24, "동기 아이돌들과 함께, 대대적인 에스테틱 세트에 도전!", "《운동신경/재능8》"], [25, "특별한 의상으로 실시하는 연극의 일이 왔다. 어떤 의상일까?", "パートナープレイヤーが修得しているキャラ分野の特技"], [26, "프로덕션의 초대형 중진이 출연하는 프로그램에 불린다.", "《담력/재능5》"], [33, "오프", ""], [34, "씬 플레이어의 캐릭터를 살린 미니 드라마가 제작된다.", "씬 플레이어가 보유한 캐릭터분야의특기"], [35, "해외 로케를 하는 프로덕션 내 여행 프로그램 출연. 오늘은 어디까지 갈 건가?", "《해외/출신12》"], [36, "프로덕션 내 극장에서 씬 플레이어가 「좋아하는 것」을 사용한 연극이 시작된다.", "씬 플레이어가 보유한 취미분야의특기"], [44, "오프", ""], [45, "패션 브랜드와 제휴한 패션쇼에 초대된다.", "《멋내기/취미5》"], [46, "아이돌 잡지 출판사로부터 취재가 왔다. 잘 대응해야.", "《언행정중/캐릭터10》"], [55, "오프", ""], [56, "시리즈 드라마에 단역으로 출연!", "《연기력/재능12》"], [66, "プロダクション内で総選挙が開始! 今回のテーマは……?", "ランダム"]]; - return self.$textFromD66Table(title, table);} - else if ("LWT"['$===']($case)) { - title = "약소 예능 프로덕션 업무표"; - table = [[11, "오프", ""], [12, "파트너 플레이어의 「신체적 특징」에 느낌이 확 온 TV방송국으로부터 섭외가 온다.", "파트너 플레이어가 보유한 신장분야의특기"], [13, "스턴트맨이 없는 액션 드라마가 제작 개시! 오디션을 받자.", "《운동신경/재능8》"], [14, "가요 프로그램 오디션에 도전! 많은 라이벌 중에 선택되는 것을 목표로 한다!", "《집중력/캐릭터4》"], [15, "선술집 영업. 아이돌에 별로 흥미 없을 것 같은 손님 층이지만…….", "《마이페이스/캐릭터4》"], [16, "결혼식의 팜플렛 사진을 찍는 촬영. 신부는 어떤 기분일까?", "《스타일/재능3》"], [22, "오프", ""], [23, "CD 데뷔를 걸고 버라이어티 프로그램에서 다른 아이돌과 대결!", "キャラ分野からランダム"], [24, "CD숍에서, CD를 손수 판매. 잘 부탁 드립니다.", "《건강/캐릭터8》"], [25, "로컬 프로그램에 출연. 이 지방에서는 무엇이 유행하고 있지?", "《プレーン/属性7》"], [26, "극 조역을 차지하기 위해 오디션을 받는다. 평범한 한 명의 여자아이를 연기하는 것 같다.", "《플레인/속성7》"], [33, "오프", ""], [34, "파트너 플레이어의 「좋아하는 것」이 소재인 드라마가 제작 중. 오디션을 받자.", "파트너 플레이어가 보유한 속성분야의특기"], [35, "파트너 플레이어의 「싫은 것」을 소재로 한 드라마에 섭외가…….", "파트너 플레이어가 보유한 취미분야의특기"], [36, "코러스에서 결원이 나온 아이돌 라이브의 보충으로서 선택된다. 주역에게 맞추지 않으면.", "属性分野からランダム"], [44, "오프", ""], [45, "PC들의 사무소에 리포트 카메라가 들어간다. 작은 곳이지만 힘내고 있습니다!", "ランダム"], [46, "오프", ""], [55, "오프", ""], [56, "오프", ""], [66, "오프", ""]]; - return self.$textFromD66Table(title, table);} - else if ("TWT"['$===']($case)) { - title = "라이브 시어터 업무표"; - table = [[11, "오프", ""], [12, "시어터 내 드라마를 수록. 테마는 파트너 플레이어의 「좋아하는 것」이다.", "파트너 플레이어가 보유한 속성분야의특기"], [13, "시어터 내 판매용 CD를 제작. 테마는 씬 플레이어의 「좋아하는 것」이다.。", "씬 플레이어가 보유한 취미분야의특기"], [14, "시어터의 매점에 끌려간다. 직접 손님과 접촉하는 찬스!", "《미소/재능7》"], [15, "시어터 내에서 상품을 판매. 지금의 판매되는 유행은 무엇이지?", "キャラ分野からランダム"], [16, "시어터 내에서 악수회를 개최! 와준 모두에게 감사를.", "《배려/재능9》"], [22, "오프", ""], [23, "이번 극은 씬 플레이어의 【배경】을 바탕으로 한 논픽션 드라마!", "趣味分野からランダム"], [24, "시어터를 이용한 버라이어티 기획이 개시되었다. 모두를 웃기자.", "《바보/캐릭터12》"], [25, "시어터에 흐르는 미니 라디오를 수록. 맴버의 엉뚱함 다루는 코너가 볼거리", "キャラ分野からランダム"], [26, "시어터에 패션 디자이너를 불러 패션쇼. 잘 매료시켜 나가자.。", "属性分野からランダム"], [33, "오프", ""], [34, "시어터 기획, 1D6시간 집중 댄스가 시작된다…….", "《체력/재능6》"], [35, "시어터 기획, 파트너 플레이어는 「싫은 것」에 몇 번이나 도전할 수 있을까!", "파트너 플레이어가 보유한 취미분야의특기"], [36, "시어터 기획, 씬 플레이어 vs 「싫은 것」!", "씬 플레이어가 보유한 캐릭터분야의특기"], [44, "오프", ""], [45, "시어터 기획, 매우 높은 골을 위해 패스! …… 정말로 할 수 있는 거야?", "《190~/신장12》"], [46, "시어터 기획, 동물을 대하는 아이돌의 모습을 중계!", "《펫/취미3》"], [55, "오프", ""], [56, "극장 밖에서 실시하는 일을 해낸다.", "ランダム"], [66, "오프", ""]]; - return self.$textFromD66Table(title, table);} - else if ("CWT"['$===']($case)) { - title = "아이돌 부 업무표"; - table = [[11, "오프", ""], [12, "선생님에게 부탁 받고 입학 희망자들의 교내 안내를 맡게 되었다.", "《언행정중/캐릭터10》"], [13, "교내 이벤트의 사회 진행을 하게 되었다. 잘 분위기를 북돋울 수 있을까?", "《팝/속성9》"], [14, "교내 방송에 출연. 전교생 앞에서 긴장하지 하지 않으려면.。", "《담력/재능5》"], [15, "동아리 대회에 응원을 하러 간다. 긴 시합은 체력 승부다.", "《체력/재능6》"], [16, "아이돌 부를 취재하는 기자가 왔다. 스스로의 말을 잘할 수 있을까?", "《배려/재능9》"], [22, "오프", ""], [23, "가까운 유치원에서 노래를 선보이게 되었다. 작은 아이와 시선을 맞추지 않으면…….", "《~125/신장2》"], [24, "메이드 카페를 하게 되었다. 파트너 플레이어의 「좋아하는 것」이 주된 메뉴다.", "파트너 플레이어가 보유한 취미분야의특기"], [25, "교내의 이벤트를 취재하게 되었다. 거기에는 파트너 플레이어의 「싫은 것」이…….", "파트너 플레이어가 보유한 캐릭터분야의특기"], [26, "파트너 플레이어의 「패션 특징」을 살린 교내 패션 쇼.", "파트너 플레이어가 보유한 속성분야의특기"], [33, "오프", ""], [34, "현지 상가에 가게의 심부름을 의뢰 받는다. 마을을 북돋워 주러 가자.", "《쇼핑/취미8》"], [35, "현지 이벤트에 출연. 향토애를 시험 받는다!", "프로듀서가 출신분야의특기를 골라준다"], [36, "파트너 플레이어의 「신체적 특징」에 매료된 기업으로부터 섭외가 왔다!", "《섹시/속성4》"], [44, "오프", ""], [45, "오프", ""], [46, "오프", ""], [55, "오프", ""], [56, "오프", ""], [66, "오프", ""]]; - return self.$textFromD66Table(title, table);} - else if (/^LO(\d{0,2})$/['$===']($case)) { - value = $$($nesting, 'Regexp').$last_match(1); - title = "로컬 아이돌 업무표"; - table = [[11, "오프", ""], [12, "오프", ""], [13, "握手会をすることになった。遠方から自分たち目当てにやって来るお客さんも多数見える。チャンスが5以下なら오프。", "《아이돌/취미12》"], [14, "ミニコンサートが全国放送で小さく紹介される。ちょっとだけ、外見が注目されたみたいだ。チャンスが4以下なら오프。", "《스타일/재능3》"], [15, "地元ラジオ局で自分たちの番組が始まる。チャンスが3以下なら오프。", "《캐릭터분야의 공백/취미7》"], [16, "地元のテレビ局にゲスト出演。うまく自分たちを紹介できるだろうか? チャンスが3以下なら오프。", "好きな출신분야의특기"], [22, "오프", ""], [23, "街頭でティッシュ配りの手伝いをする。미소を忘れずに、がんばろう。", "《미소/재능7》"], [24, "地元のお手伝いの一環として、害虫退治に駆り出された。なぜ、こんなことに。", "《담력/재능5》"], [25, "畑仕事のお手伝いをすることになった。とりあえず、体力が要求される。", "《체력/재능6》"], [26, "ショッピングモールのお手伝いをすることになった。うまくお手伝いができれば、繁盛するかも。", "《쇼핑/취미8》"], [33, "오프", ""], [34, "インターネットラジオに出演。声とトークで。地域のことを伝えていこう。", "《이국문화/재능2》"], [35, "地元のテレビ局の取材が入る。テーマは、地方でがんばっている人たちだ。", "《건강/캐릭터8》"], [36, "デパートで風船を配るお手伝い。子どもたち相手のお仕事は、ちょっと大変です。", "《배려/재능9》"], [44, "오프", ""], [45, "着ぐるみを着て、市民と交流。暑くてつらい仕事だけど、大切な交流の時間です。", "《버닝/속성10》"], [46, "観光地の物販コーナーで地元の特産品を売るお手伝い。로컬 아이돌的に、大切なお仕事。", "好きな출신분야의특기"], [55, "오프", ""], [56, "動画サイトのチャンネルで、自分たちの宣伝を行なうことに。世界中に発信!", "《스타/속성12》"], [66, "오프", ""]]; - return self.$textFromD66Table(title, table, value);} - else if ("SU"['$===']($case)) { - title = "정열의 여름 업무표"; - table = [[11, "오프", ""], [12, "음료수 커머셜(광고). 맛있을 것 같이 마시자.", "《연기력/재능12》"], [13, "여름의 퍼레이드의 커머셜. 이번 테마는 파트너 플레이어의 「좋아하는 것」.", "파트너 플레이어가 보유한 취미분야의특기"], [14, "해수욕장 커머셜. 보는 사람에게 활기를 나누어 줄 수 있으면 좋겠는데.", "《팝/속성9》"], [15, "피서지 커머셜. 시원한 곳에서 느긋하게 보냄을 전해 주도록 하자", "《마이페이스/캐릭터4》"], [16, "벌레 퇴치 용품의 커머셜. 벌레를 향한 남자다움이 요구된다.", "《외고집/캐릭터9》"], [22, "오프", ""], [23, "수족관에서 활기찬 돌고래들과 쇼를 한다.", "《건강/캐릭터8》"], [24, "소년야구 시구식을 맡는다. 야구소년들에게 부끄럽지 않은 피칭으로 매료 시키지 않으면.", "《스포츠/취미4》"], [25, "여름 패션을 잡지로 발표하게 되었다. 이 시기의 코디는 이것!", "《멋내기/취미5》"], [26, "프로그램에서 여름들판의 나물을 맛있게 먹을 필요성을 느낀다. 여주를 아이돌답게 먹자.", "《오키나와/출신2》"], [33, "오프", ""], [34, "비치 발리볼 적 아이돌과 대결이다! 여름 더위에 지치지 말자!", "《버닝/속성10》"], [35, "비치에서 타 아이돌과 헌팅대결을 하게 되었다. 어느 쪽을 잘 해낼 수 있을까?", "《유순/캐릭터5》"], [36, "여름의 음식 특집! 더위 방지를 위해서라도 많이 먹는 곳은 빠져야", "《요리/취미6》"], [44, "오프", ""], [45, "여름방학의 아이들과 접촉하는 프로그램에 불린다. 아이들 상대도 큰 일이다.", "《배려/재능9》"], [46, "여름의 여행 프로그램. 여름에만 가능한 현지의 강점을 몇 가지 있을 것이다.", "씬 플레이어가 보유한 출신분야의특기"], [55, "오프", ""], [56, "여름이니까 뜨끈뜨끈한 욕실이 난처할 수 있다. 리액션을 찍고 싶은 거 같다.", "《바보/캐릭터12》"], [66, "오프", ""]]; - return self.$textFromD66Table(title, table);} - else if ("WI"['$===']($case)) { - title = "온기의 겨울 업무표"; - table = [[11, "오프", ""], [12, "크리스마스 테마의 커머셜 송을 노래한다. 연인들에게 축복을!", "《패션/속성8》"], [13, "스키장의 커머셜 무비를 찍는다. 잘 탈 수 있으면 좋겠다.", "《스포츠/취미4》"], [14, "씁쓸한 실연을 테마로 한 커머셜 무비를 찍게 되었다. 쿨하게 가자.", "《쿨/속성11》"], [15, "스케이트 링크의 커머셜 무비에 출연. 빙상에서 화려하게 댄스를 하자.", "《댄스/취미9》"], [16, "아이스크림의 커머셜 무비에 출현. 추운 것을 참아라!", "《담력/재능5》"], [22, "오프", ""], [23, "연말 연시에 운행되는 철도 커머셜 무비에 기용된다. 깔끔한 연기가 필요하다.", "《플레인/속성7》"], [24, "온천지의 커머셜. 온천에 필요한 것은 역시 섹시함일까?", "《섹시/속성4》"], [25, "겨울 패션을 잡지로 소개하게 되었다. 겨울 코디는 이것으로 정한다!", "《멋내기/취미5》"], [26, "눈치우기가 큰일임을 알린다, 도호쿠의 눈치우기를 돕는다. 이것은 중노동이다.", "《도호쿠/출신10》"], [33, "오프", ""], [34, "연말 버라이어티 프로그램에서, 칸사이 연예인과 콩트를 하게 되었다. 말을 맞추자.", "《킨키/출신6》"], [35, "연말 페스티벌에 유명 아이돌 들과 공동출연 스타에게 지지 않는 박력을 내자.", "《스타/속성12》"], [36, "겨울 홋카이도 음식을 알리기 위해서, 홋카이도로 발 빠르게 가자. 과연, 추위에 견딜 수 있는 것 인가.", "《훗카이도/출신11》"], [44, "오프", ""], [45, "겨울의 음식 특집. 냄비요리를 만드는 방법을 가르칩니다.", "《요리/취미6》"], [46, "발렌타인으로 향하는 여자아이에게 어드바이스.", "《페미닌/속성5》"], [55, "오프", ""], [56, "겨울이니까 뜨끈뜨끈한 욕실에 찾아본다. 따뜻하다고 할까 뜨겁다!", "《바보/캐릭터12》"], [66, "오프", ""]]; - return self.$textFromD66Table(title, table);} - else if ("NA"['$===']($case)) { - title = "대자연 업무표"; - table = [[11, "오프", ""], [12, "계류에서 낚시 대결! 많이 낚시하는 쪽이 승리!", "《집중력/재능4》"], [13, "해안에서 낚시를 한다. 낚은 생선이 맛있는 쪽이 이긴다.", "《담력/재능5》"], [14, "곤충채집에 도전. 건강하게 노는 그림을 찍고 싶다.", "《건강/캐릭터8》"], [15, "캠프를 하자. 모두 쾌적하게 숙박을 할 수 있도록 하는 배려가 중요.", "《배려/재능9》"], [16, "바다 헤엄의 대결. 자신의 페이스를 지키면서 싸우자.", "《마이페이스/캐릭터4》"], [22, "오프", ""], [23, "숲에서 헌팅 대결! 동물에게 인기 있는 쪽이 승리!", "《펫/취미3》"], [24, "숲에서 술래잡기를 하게 되었다. 상대의 움직임을 읽으면 이길 수 있다!", "파트너 플레이어가 보유한 신장분야의특기"], [25, "숲 속 동물과의 싸움이 시작되었다. 아니 할 수 밖에 없다.", "《운동신경/재능8》"], [26, "오프", ""], [33, "오프", ""], [34, "요리할 수 있는 남자를 여기서 어필! 반합취사에 도전!", "《요리/취미6》"], [35, "등산 대결. 빨리 오르는 것보다도 다치지 않게 조심하고 싶다.", "《체력/재능6》"], [36, "땔감 줍기. 수수한 장면이 되어 버리므로 싫증을 나지 않게 하자!", "《캐릭터분야의 공백/캐릭터7》"], [44, "오프", ""], [45, "시청자들의 기뻐할 이 자리에서만의 이야기를 파트너 플레이어와 이야기 한다.", "파트너 플레이어가 보유한 캐릭터분야의특기"], [46, "사소한 일로 파트너 플레이어와 싸움이 났다. 어느 쪽이 강한지 승부다!", "파트너 플레이어가 보유한 재능분야의특기"], [55, "오프", ""], [56, "드럼통 욕조를 준비하자. ……뜨겁지만!", "《버닝/속성10》"], [66, "오프", ""]]; - return self.$textFromD66Table(title, table);} - else if ("GA"['$===']($case)) { - title = "聖デトワール女学園仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "オフ", ""], [14, "オフ", ""], [15, "オフ", ""], [16, "オフ", ""], [22, "学園が主催しているアイドル触れ合いイベントに出演。美しく振舞おう。", "《スタイル/才能3》"], [23, "学園のアイドルたちが出ているラジオに出演。先輩たちに負けないように、がんばろう。", "《元気/キャラ8》"], [24, "学園と提携しているブランドのファッションショーに登場。", "《おしゃれ/趣味5》"], [25, "学園を紹介するDVDに出演。うまく魅力を紹介できるかな?", "《気配り/才能9》"], [26, "学内オーディションに出場。勝ち抜けば、歌番組に出場できる!", "《胆力/才能5》"], [33, "学園が制作しているアイドルドラマに吸血鬼役で出演。恐ろし気な演技、できるかな?", "《オカルト/趣味2》"], [34, "学園が制作しているドラマに出演。演技の中で、どうやって個性を出していこうか。", "キャラ分野からランダム"], [35, "学園主催のミニライブに出演。たくさんの出演者の中から、どうやって目立とう。", "キャラ分野からランダム"], [36, "学園の先輩たちと共演するライブイベントに出演。", "《胆力/才能5》"], [44, "学園の紹介で、おいしい芋の紹介番組に出演。北海道に出発だ!", "《北海道/出身11》"], [45, "学内オーディションで、ポップなCMのイメージガールを決定。戦い抜こう。", "《ポップ/属性9》"], [46, "学内のミュージカルに出演することになった。自分たちの実力を舞台の上で発揮しよう。", "《演技力/才能12》"], [55, "市内の店舗を手伝うドキュメンタリー番組を撮ることに。お店を手伝おう。", "《物腰丁寧/キャラ10》"], [56, "市内のスタジオで収録されている朝の情報番組に出演。朝から元気に行こう。", "《元気/キャラ8》"], [66, "裏山を使った簡単なPV撮影! 山での撮影は体力が要求される。", "《体力/才能6》"]]; - return self.$textFromD66Table(title, table);} - else if ("BA"['$===']($case)) { - title = "アカデミー仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "オフ", ""], [14, "オフ", ""], [15, "オフ", ""], [16, "オフ", ""], [22, "アカデミーの中でも、特に優秀な成績を収めた者を表彰する式が開催される。", "《スター/属性12》"], [23, "アカデミー主催の音楽祭に出演。楽器を演奏して、その姿で魅せよう。", "《音楽/趣味11》"], [24, "アカデミーが製作しているドラマに出演。脇役だけど、しっかりと存在感を出していこう。", "《演技力/才能12》"], [25, "番組の企画で、アカデミー生のアクションを見せることになった。", "《運動神経/才能9》"], [26, "番組の1コーナーで、アカデミー生が様々なスポーツに挑戦する必要があるらしい。がんばろう。", "《スポーツ/趣味4》"], [33, "先輩と一緒にバラエティ番組に出演。面白いリアクションを期待される。", "《ばか/キャラ10》"], [34, "先輩のライブでバックコーラスに参加。美しい声を添えよう。", "《音楽/趣味11》"], [35, "先輩のライブでバックダンサーとして出演。ダイナミックな演出に負けないようにしよう。", "《ダンス/趣味9》"], [36, "先輩が主演を務めているアニメ映画に脇役の声優として出演。光る演技を見せよう。", "《演技力/才能12》"], [44, "同級生と一緒に、漫画作品をモデルにしたミュージカルに出演。熱い気合を求められる。", "《バーニング/属性10》"], [45, "同級生と一緒にキャラ付けの強いビジュアル系バンドを組んで、試験のステージで発表。", "キャラ分野からランダム"], [46, "同級生とファッションを競い合う、セルフプロデュース試験が始まる。", "《おしゃれ/趣味5》"], [55, "一般教養の試験が始まる。恐ろしいことに、その様子を生中継するらしい。", "《学力/才能10》"], [56, "アイドルの歴史を使った、クイズ試験が始まる。", "《アイドル/趣味12》"], [66, "試験のテーマは耽美。セクシーさを仲間と競い合おう。", "《セクシー/属性4》"]]; - return self.$textFromD66Table(title, table);} - else if ("WT"['$===']($case)) { - title = "업무표"; - table = [[11, "오프", ""], [12, "악수회가 시작된다. 아이돌로서는 중요한 순간, 집중하자.", "《아이돌/취미12》"], [13, "파트너 플레이어의 「싫은 것」 에 대해 취재를 하게 되었다. 괜찮을까……?", "파트너 플레이어가 보유한 취미분야의특기"], [14, "씬 플레이어의 「좋아하는 것」에 관한 프로그램 일이다! 텐션 오른다.", "씬 플레이어가 보유한 취미분야의특기"], [15, "파트너 플레이어의 「패션 특징」을 살리는 일이 왔다. 파트너.", "파트너 플레이어가 보유한 속성분야의특기"], [16, "클라이언트로부터 파트너 플레이어의 「개성특기」를 헤아려 보자고 제안 받는다.", "파트너 플레이어의 개성특기"], [22, "오프", ""], [23, "학원 드라마를 촬영! 둘의 캐릭터는 어떻게 될까?", "キャラ分野からランダム"], [24, "드라마 액션씬을 찍게 되었다. 콤비네이션으로 헤쳐나가자!", "身長分野からランダム"], [25, "감동계열의 드라마에 출연. 어떤 능력이 필요하게 될까?", "才能分野からランダム"], [26, "취미 프로그램에 출연. 이런 세계가 있는 것인가…….", "趣味分野からランダム"], [33, "오프", ""], [34, "아이돌이 우글거리는 버라이어티 프로그램에 참전! 어느 아이돌보다 높은 점수를 받아야 할 것 같다!", "《바보/캐릭터12》"], [35, "스포츠 프로그램을 떠들썩하게 하기 위해 불려졌다! 스포츠에 대해서 압니까?", "《스포츠/취미4》"], [36, "퀴즈 프로그램. 둘이서 게스트로 출연. 힘을 합쳐 이겨낼지, 그렇지 않으면 자신다움을 중시해야 할까…….", "《학력/재능10》"], [44, "오프", ""], [45, "요리프로그램에 출현. 어떤 요리를 만들까?", "《요리/취미8》"], [46, "CD샵에서 사인회를 개최. 팬을 기쁘게 할 수 있을까?", "《배려/재능9》"], [55, "오프", ""], [56, "둘에게 그라비아 촬영 일이 왔다. 좋은 스타일로 매료 시킬 찬스?", "《스타일/재능3》"], [66, "오프", ""]]; - return self.$textFromD66Table(title, table);} - else if ("VA"['$===']($case)) { - title = "버라이어티 업무표"; - table = [[11, "오프", ""], [12, "먹는 것에 관한 리포트를 하는 프로그램에 출연. 어떻게 해야 맛을 잘 표현할 수 있을까?", "《요리/취미6》"], [13, "스포츠를 하는 프로그램에 출연. 얼마나 활약할 수 있을 지 시험 받는다.", "《스포츠/취미4》"], [14, "토크 프로그램에 출연. 두 명의 말할 때 잘 이끌어 줄 수 있을까?", "《배려/재능9》"], [15, "맹수의 우리에게 들어가 볼 놀이를 한다. 담력이 중요!", "《담력/재능5》"], [16, "파트너 플레이어의 「좋아하는 것」를 소재로 한 프로그램을 맡았다.", "파트너 플레이어가 보유한 \t취미분야의특기"], [22, "오프", ""], [23, "거리는 걷는 프로그램에 출연. 경쾌한 토크로 일반인들을 상대로 능숙하게 말을 걸어보자", "《유순/캐릭터5》"], [24, "낚시 프로그램에 나오게 되었지만, 거물을 낚을 때까지는 돌아갈 수 없다고 한다. 그런데 움직임의 적은 낚시로 어떻게 눈에 띌까?", "《캐릭터분야의 공백/캐릭터7》"], [25, "파트너 플레이어의 「좋아하는 것」를 소재로 한 프로그램 코너로, 장난 치는 역을 맡게 되었다.", "파트너 플레이어가 보유한 캐릭터분야의특기"], [26, "퀴즈 프로그램에 출현. 문제를 어떻게 맞추는지 그것이 중요하다.", "《학력/재능10》"], [33, "오프", ""], [34, "농사일 체험 프로그램에 출연. 괭이를 가지고 밭으로 가자.", "《체력/재능6》"], [35, "공작 체험 프로그램에 출연. 좋은걸 스튜디오에 전달할 수 있도록 물건 만들기를 진지하게 실시하자.", "《집중력/재능4》"], [36, "전자게임이나 아날로그게임을 플레이 하는 프로그램에 출연. 어떤 식으로 북돋울 수 있을까?", "《게임/취미10》"], [44, "오프", ""], [45, "오늘은 만담을 하는 것 같다. 웃기려면 무엇이 필요할 것 일까?", "《바보/캐릭터12》"], [46, "시츄에이션 코너에 출현. 거창한 연기가 요구 된다.", "《연기력/재능12》"], [55, "오프", ""], [56, "취미에 관한 프로그램에 나오게 되었다. 오늘의 테마는 무엇이지.", "《취미분야의 공백/취미7》"], [66, "오프", ""]]; - return self.$textFromD66Table(title, table);} - else if ("MU"['$===']($case)) { - title = "음악 관련 업무표"; - table = [[11, "오프", ""], [12, "씬 플레이어와 파트너 플레이어가 미니라이브를 하게 되었다. 서로 소리를 잘 맞추어 보도록 하자.", "파트너 플레이어가 보유한속성분야의특기"], [13, "가요 프로그램에서 다루어진다. 어떤 기분으로 노래했는지 잘 표현해 전하자.", "《패션/속성8》"], [14, "파트너 플레이어와 하모니를 거듭하는 노래가 왔다. 둘의 특징을 목소리에 잘 실리도록 하자.", "파트너 플레이어가 보유한재능분야의특기"], [15, "CD를 손수 전하는 판매를 개시. 마음을 담아 웃는 얼굴로 손수 전하자.", "《미소/재능7》"], [16, "레코딩 음악 업계의 거물이 입회한다. 긴장하지 말고 자신의 실력을 발휘하자.", "《담력/재능5》"], [22, "오프", ""], [23, "파트너 플레이어하고 서로 이야기하며 가사를 만드는 것에 집중한다. 서로를 잘 이해하도록 하자,", "파트너 플레이어가 보유한캐릭터분야의특기"], [24, "활동 범위를 넓히기 위해 다양한 악기에 도전!", "《음악/취미11》"], [25, "고급스런 바에서 노래하는 것. 고급감이 있는 패션을 몸에 익히는 것을 조건으로 노래하는 것이 용서된다.", "《기품/재능11》"], [26, "중학생이 타겟으로 CD를 판매하게 되었다. 마음 속의 중학생을 해방할 때가 왔다!", "《중2병/캐릭터2》"], [33, "오프", ""], [34, "어린이용의 노래를 만들게 되었다. 시선을 아이에게 맞추지 않으면.", "《~125/신장2》"], [35, "결혼식의 노래를 맡는다. 축복의 기분을 담아 노래하자.", "《배려/재능9》"], [36, "레이스를 북돋우는 업 템포인 곡을 만드는 것이다.", "《건강/캐릭터8》"], [44, "오프", ""], [45, "파트너 플레이어의 현지를 상징하는 노래를 만들게 되었다. 현지의 이야기를 듣기 시작하자.", "파트너 플레이어가 보유한출신분야의특기"], [46, "호러 무비의 주제가를 담당하게 된, 무서움을 소리로 표현할 수 있을까?", "《오컬트/취미2》"], [55, "오프", ""], [56, "작곡자 선생님과의 회의. 자신의 이미지를 잘 전달해 줄 수 있을까?", "《언행정중/캐릭터10》"], [66, "오프", ""]]; - return self.$textFromD66Table(title, table);} - else if ("DR"['$===']($case)) { - title = "드라마 관련 업무표"; - table = [[11, "오프", ""], [12, "엑스트라로 출연. 가능한 한 눈에 띄지 않게 하자.", "《플레인/속성7》"], [13, "형사 드라마에 형사 역으로 출연. 쿨하게 하자.", "《쿨/속성11》"], [14, "형사 드라마에 범인 역으로 출연. 나쁜 것을 강조하는 연기가 필요하다.", "《ミステリアス/캐릭터3》"], [15, "의료 드라마에 의사 역으로 출연. 장기나 피 등에도 꿋꿋하게 힘내자.", "《담력/재능5》"], [16, "재현 애니메이션의 더빙에 도전. 가능한 한 정중하게.", "《언행정중/캐릭터10》"], [22, "오프", ""], [23, "악역에 도전. 어두운 기분이 필요하다.", "《다크/속성3》"], [24, "학원 드라마에 고뇌하는 학생 역으로 출연. 청춘인 것 같음을 어디까지 보여야?", "《중2병/캐릭터2》"], [25, "시대극에 출연. 강경파가 된 씬의 차례가 왔다.", "《외고집/캐릭터9》"], [26, "특수 촬영에 히어로 역으로 출연. 뜨거운 연기를 보일 때!", "《버닝/속성10》"], [33, "오프", ""], [34, "출연진 중에 초유명인이! 긴장하지 말고 힘내자.", "《마이페이스/캐릭터4》"], [35, "까다로운 감독에게 여러 가지 주의를 받는다. 어떻게 대응해 할 것인가", "《스타/속성12》"], [36, "파트너 플레이어의 [배경]을 재현한 미니 드라마를 찍는 것 같다. 그의 과거를 어떻게 표현할 것 인가.", "파트너 플레이어가 보유한속성분야의특기"], [44, "오프", ""], [45, "액션 드라마에 출연. 액션 씬을 잘 할 수 있을 지가 키 포인트다.", "《운동신경/재능8》"], [46, "연애 드라마에 출연. 출연진를 두근두근 시키는 연기가 필요라는 것.", "《섹시/속성4》"], [55, "오프", ""], [56, "감동계 드라마에 출연. 우는 씬이 여기의 제일 볼만한 장면이다!", "《연기력/재능12》"], [66, "오프", ""]]; - return self.$textFromD66Table(title, table);} - else if ("VI"['$===']($case)) { - title = "비주얼 관련 업무표"; - table = [[11, "오프", ""], [12, "비치에서 그라비아 촬영의 일이 생긴다. 육체미를 보여주어야.", "《섹시/속성4》"], [13, "패션잡지의 취재가 오고, 자신다운 패션을 보이면 좋겠다고 부탁받는다.", "《캐릭터분야의 공백/캐릭터7》"], [14, "지방마다의 패션을 도입하는 패션 쇼가 개막. 출연하게 되었다.", "出身分野からランダム"], [15, "패션 쇼에 모델로 등장. 완벽한 스타일을 과시해라.", "《스타일/재능3》"], [16, "잡지로 씬 플레이어 추천 코디를 소개한다. 어떤 조합을 소개 할까?", "《멋내기/취미5》"], [22, "오프", ""], [23, "파트너 플레이어의 「신체적 특징」이 약간 유행이 되었다. 이 빅 웨이브에 편승하려면", "파트너 플레이어가 보유한 신장분야의특기"], [24, "심야 프로그램 코너에, 씬 플레이어의 「신체적 특징」 특집이 짜여 지는 것 같다.그것을 나타내야한다.", "씬 플레이어가 보유한 신장분야의특기"], [25, "뉴스 프로그램 코너에서, 파트너 플레이어의 「패션 특징」이 소개된다. 잘 어시스트 하자.", "파트너 플레이어가 보유한 신장분야의특기"], [26, "씬 플레이어의 「패션 특징」을 팔고 있는 기업으로부터 CM에 대해 부탁 받는다.", "씬 플레이어가 보유한 속성분야의특기"], [33, "오프", ""], [34, "여성의 패션에 대해 말하는 프로그램에 출연.", "《페미닌/속성5》"], [35, "높은 신장 전용의 의상이 입게 된다. 이것을 입고 잘 나타낼 수 있으려나?", "《190~/신장12》"], [36, "TV프로에서 애니메이션 캐릭의 코스프레를 한다. 자신답게 결정 포즈.", "《취미분야의 공백/취미7》"], [44, "오프", ""], [45, "작은 신장을 위한 코디를 만든 디자이너로부터 연락이 들어온다. 그것을 보기 좋고 맵시 있게 입었으면 좋다는 것 같다.", "《146/신장6》"], [46, "아이와 공동으로 출연하는 CM를 찍게 되었다. 아이의 귀여운 패션을 생각하자.", "《~125/신장2》"], [55, "오프", ""], [56, "파트너 플레이어의 선전용 촬영의 코디를 하게 되었다. 그런데 어떻게 해야?", "파트너 플레이어가 보유한 신장분야의특기"], [66, "오프", ""]]; - return self.$textFromD66Table(title, table);} - else if ("SP"['$===']($case)) { - title = "스포츠 업무표"; - table = [[11, "오프", ""], [12, "오프", ""], [13, "오프", ""], [14, "오프", ""], [15, "오프", ""], [16, "오프", ""], [22, "マラソン大会に参加することになった。とにかく、走ろう。", "《체력/재능6》"], [23, "サッカー選手たちにインタビュー! サッカーの魅力を聞き出そう。", "《스포츠/취미4》"], [24, "野球の始球式をすることになった。自分らしく、캐릭터クターを前面に出して投げるのがコツ。", "《캐릭터분야의 공백/캐릭터7》"], [25, "バスケットボールを体験! その魅力を伝えよう。", "《스포츠/취미4》"], [26, "ラグビーのパワフルさを間近で体験。見ている人たちにも迫力を伝えないと。", "《스포츠/취미4》"], [33, "アメフトのハーフタイムショーの短い時間を任される。集中して魅力を出し切ろう。", "《집중력/재능4》"], [34, "チアリーディング(男性アイドルは応援団)で스포츠選手たちの応援をすることに。みんながんばれ!", "《キュート/속성6》"], [35, "陸上競技を一通り体験! それぞれの種目の見どころを発信しよう。", "《운동신경/재능8》"], [36, "水泳をする仕事がやってきた。競泳水着をカッコよく着こなそう。", "《쿨/속성11》"], [44, "스포츠ドリンクのCMだ。「生き返る」感じを出していこう。", "《패션/속성8》"], [45, "運動靴のCM。パートナープレイヤーを力強く追い抜いて、速くなれることをアピール!", "《버닝/속성10》"], [46, "ジャージや体操服のCMが入ってきた。うまく着こなして、運動着も멋내기なことを証明しよう。", "《멋내기/취미5》"], [55, "近々開催される大会の応援団長を任された。出場する選手たちにエールを送ろう!", "《건강/캐릭터8》"], [56, "テニスの試合をパートナープレイヤーとやることになった。ダブルスでいこう。", "파트너 플레이어가 보유한 속성분야의특기"], [66, "ゴルフコースを回りながら、プロから手ほどきを受けることに。丁寧な言葉遣いで、大人っぽく振舞おう。", "《언행정중/캐릭터10》"]]; - return self.$textFromD66Table(title, table);} - else if ("CHR"['$===']($case)) { - title = "クリスマス 업무표"; - table = [[11, "오프", ""], [12, "오프", ""], [13, "오프", ""], [14, "오프", ""], [15, "오프", ""], [16, "오프", ""], [22, "雪の積もる野外コンサートホールでミニライブ。苛酷な環境だけど、耐え抜かないと。", "《체력/재능6》"], [23, "ラジオの公開録音中に、クリスマスケーキ作りにチャレンジすることになった。うまく作れるかな?", "《요리/취미6》"], [24, "アイドルが提案するクリスマスデート用のファッションを雑誌で紹介。勝てるコーデを考えてみよう。", "《멋내기/취미5》"], [25, "ケーキ屋さんと提携して、クリスマスケーキの売り込みをすることに。", "《쇼핑/취미8》"], [26, "地元の中学校のクリスマスイベントに登場。学生のみんなと一緒に盛り上がろう。", "《패션/속성8》"], [33, "クリスマスに放映される特別ドラマにパートナープレイヤーの恋人役で出演。恋愛をうまく演じられるかな?", "《연기력/재능12》"], [34, "トークバラエティのクリスマス特番に呼ばれて収録を始める。本日のテーマは、「恋」について。", "《유순/캐릭터5》"], [35, "ラジオ番組で、家族と過ごすクリスマスの思い出について語ることになった。", "《이국문화/재능2》"], [36, "セクシーサンタグランプリというファッション大会に出ることになった。セクシーアイドルたちと対決だ!", "《섹시/속성4》"], [44, "遊園地で行われるクリスマスイベントのCMを撮影することになった。楽しそうな미소を見せよう。", "《미소/재능7》"], [45, "サンタクロースの格好をして、小学生たちにプレゼントを配ることになった。오프ァーはかわいさ重視!", "《キュート/속성6》"], [46, "サンタクロースの格好をして、街でイベントをすることに。異国っぽさをうまく出せるかな?", "《해외/출신12》"], [55, "クリスマスをテーマにした写真集が発売。そのうちの何枚かを担当することに。", "《스타일/재능3》"], [56, "新人アイドルたちが歌うクリスマスソングを収めたカバーアルバムが発売。自分たちも収録されています。", "《음악/취미11》"], [66, "アイドルとデートをした気分になれるDVDが発売。自分たちも、クリスマス編の収録を行った。", "《아이돌/취미12》"]]; - return self.$textFromD66Table(title, table);} - else if ("PAR"['$===']($case)) { - title = "パートナー関係 업무표"; - table = [[11, "오프", ""], [12, "오프", ""], [13, "오프", ""], [14, "오프", ""], [15, "오프", ""], [16, "오프", ""], [22, "パートナープレイヤーの【背景】に関する仕事がやって来る。こいつは何を見てきたんだ?", "파트너 플레이어의 개성특기"], [23, "パートナープレイヤーの「好きなもの」に関する仕事がやって来る。場を盛り上げていこう。", "파트너 플레이어가 보유한 취미분야의특기"], [24, "パートナープレイヤーの「嫌いなもの」に関する仕事がやって来る。どうフォローしたものか。", "파트너 플레이어가 보유한 캐릭터분야의특기"], [25, "パートナープレイヤーの「身体的特徴」に関する仕事がやって来る。どこがいいのかを聞いてみる。", "파트너 플레이어가 보유한 속성분야의특기"], [26, "パートナープレイヤーの「ファッション特徴」に関する仕事がやって来る。自分も真似をすることに。", "파트너 플레이어가 보유한 신장분야의특기"], [33, "파트너 플레이어의 개성특기に関する仕事がやって来る。合わせてみよう。", "파트너 플레이어의 개성특기"], [34, "パートナープレイヤーの「身体的特徴」に関する仕事がやって来る。どこがいいのかを聞いてみる。", "파트너 플레이어가 보유한 속성분야의특기"], [35, "파트너 플레이어가 보유한 속성분야의특기に関する仕事がやって来る。", "파트너 플레이어가 보유한 속성분야의특기"], [36, "파트너 플레이어가 보유한 캐릭터분야의특기に関する仕事がやって来る。", "파트너 플레이어가 보유한 캐릭터분야의특기"], [44, "씬 플레이어의【背景】を振り返らせるような仕事がやって来た。今はアイドルとしてそれをこなそう。", "씬 플레이어의個性特技"], [45, "파트너 플레이어가 보유한 취미분야의특기に関する仕事がやって来る。", "파트너 플레이어가 보유한 취미분야의특기"], [46, "파트너 플레이어가 보유한 출신분야의특기に関する仕事がやって来る。", "파트너 플레이어가 보유한 출신분야의특기"], [55, "씬 플레이어의個性特技に関する仕事がやって来る。今こそ見せ場だ!", "씬 플레이어의個性特技"], [56, "파트너 플레이어가 보유한 재능분야의특기に関する仕事がやって来る。", "파트너 플레이어가 보유한 재능분야의특기"], [66, "씬 플레이어의「好きなもの」に関する仕事がやって来る。やったぜ!", "씬 플레이어의個性特技"]]; - return self.$textFromD66Table(title, table);} - else if ("SW"['$===']($case)) { - title = "お菓子仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "オフ", ""], [14, "オフ", ""], [15, "オフ", ""], [16, "オフ", ""], [22, "おいし過ぎて止まらない様子を描く、ふわふわなお菓子のCMを行う。", "《ポップ/属性9》"], [23, "苦い恋模様を描く、ビターチョコレートのCM撮影を行う。", "《ダーク/属性3》"], [24, "甘い恋模様を描く、甘いチョコレートのCM撮影を行う。", "《キュート/属性6》"], [25, "家でポリポリ食べているところを描く、スナック菓子のCMを行う。", "《プレーン/属性7》"], [26, "青春の汗を流す様子を描く、甘い飲料水のCMを行う。", "《バーニング/属性10》"], [33, "チョコレートを食べて脳細胞を活性化させる探偵のドラマに出演する。", "《集中力/才能4》"], [34, "朝のシリアルを食べて元気いっぱいな様子を描く、CM撮影を行う。", "《元気/キャラ8》"], [35, "眠いときに目がすっきりと覚める様子を描く、刺激の強いお菓子のCM撮影を行う。", "《パッション/属性8》"], [36, "一本で栄養補給ができる様子を描く、健康補助食品なお菓子のCM撮影を行う。", "《クール/属性11》"], [44, "地元にある駄菓子屋さんのプロモーションを手伝う。", "《ショッピング/趣味8》"], [45, "料理番組で、市販のお菓子を使った新しいおやつの開発を任される。", "《料理/趣味6》"], [46, "お菓子の家を再現したアトラクション施設を宣伝する。", "《フェミニン/属性5》"], [55, "情報番組の1コーナーで、お勧めのケーキを紹介する。", "《料理/趣味6》"], [56, "お菓子をテーマにした、夢いっぱいの遊園地の宣伝を行う。", "《笑顔/才能7》"], [66, "チョコレートを使ったグラビア撮影をすることになる。", "《スタイル/才能3》"]]; - return self.$textFromD66Table(title, table);} - else if ("AN"['$===']($case)) { - title = "動物仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "オフ", ""], [14, "オフ", ""], [15, "オフ", ""], [16, "オフ", ""], [22, "ライオンの檻に、餌を届ける仕事がやって来る。勇気を出して踏み込もう。", "《胆力/才能5》"], [23, "ハムスターと戯れる絵を作る。", "《ペット/趣味4》"], [24, "牛の乳しぼり体験を動画にしよう。", "《集中力/才能4》"], [25, "かわいい猫の動画を撮るために、きまぐれな猫の機嫌をとりにいく。", "《ペット/趣味4》"], [26, "犬の散歩シーンを撮るためにも、犬と信頼関係を作る。", "《ペット/趣味4》"], [33, "公園の鳩に餌をあげるシーンの手伝いをする。", "《マイペース/キャラ4》"], [34, "象の上に乗って、コメントを述べる仕事。", "《エスニック/属性2》"], [35, "ぬるぬるしたどじょうを手づかみする絵を要求される。", "《セクシー/属性4》"], [36, "ウサギをなでる絵を作る仕事がやって来る。不安そうなウサギを安心させよう。", "《ペット/趣味4》"], [44, "奈良の鹿に餌をあげるドラマに出演。", "《近畿地方/出身6》"], [45, "馬に乗って、競馬場を駆ける映像を撮ることに。うまく乗りこなそう。", "《セレブ/才能11》"], [46, "水族館でペンギンたちと一緒に遊ぶシーンを撮影。", "《キュート/属性6》"], [55, "蛇を手づかみする番組企画が入る。", "《胆力/才能5》"], [56, "海に入って、魚や貝を見つける企画をすることになった。", "《元気/キャラ8》"], [66, "山奥で歩き回って、色々な昆虫を見つける仕事を行う。", "《体力/才能6》"]]; - return self.$textFromD66Table(title, table);} - else if ("MOV"['$===']($case)) { - title = "映画仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "オフ", ""], [14, "オフ", ""], [15, "オフ", ""], [16, "オフ", ""], [22, "ゾンビ映画にゾンビ役で出演。動く死体らしい演技を心がけよう。", "《ダーク/属性3》"], [23, "時代劇映画にサムライ役で出演。厚い忠義を見せよう。", "《硬派/キャラ9》"], [24, "西部劇映画にガンマン役で出演。静かに熱い役を演じよう。", "《バーニング/属性10》"], [25, "SF映画に未来のエンジニア役で出演。難しい言葉をクールに言い放とう。", "《クール/属性11》"], [26, "カンフー映画に若き拳法家役で出演。激しいアクションで敵と戦おう。", "《運動神経/才能8》"], [33, "恋愛映画に当て馬役として出演。フラれたあとに感情的になる演技が大事。", "《演技力/才能12》"], [34, "現代劇に中学二年生役として出演。現代の若者を演技で表現しよう。", "《中二病/キャラ2》"], [35, "特撮ヒーローにヒーロー役として出演。スーツアクターのアクションに、アフレコで魂を載せよう。", "《演技力/才能12》"], [36, "ホラー映画に主役として出演。悲鳴や動きで怖がっているところを見せよう。", "《ダーク/属性3》"], [44, "インド映画にダンサーとして出演。情熱的な踊りで映画を盛り上げよう。", "《ダンス/趣味9》"], [45, "ミステリー映画の犯人役として出演。怪しげな演技で人々を魅了しよう。", "《ミステリアス/キャラ3》"], [46, "戦争映画に出演。哀しみの叫びを上げよう。", "《演技力/才能12》"], [55, "ちょっとしたお色気シーンを撮ることに。", "《セクシー/属性4》"], [56, "ドキュメンタリー映画で、過去の偉人を演じることに。その人の一生をトレースしよう。", "《演技力/才能12》"], [66, "おバカな映画に、突き抜けたバカ役として出演。バカになれ!", "《ばか/キャラ12》"]]; - return self.$textFromD66Table(title, table);} - else if ("FA"['$===']($case)) { - title = "ファンタジー仕事表"; - table = [[11, "オフ", ""], [12, "オフ", ""], [13, "オフ", ""], [14, "オフ", ""], [15, "オフ", ""], [16, "オフ", ""], [22, "ドラゴンと対峙しても、引かない勇気を見せるシーン。", "《胆力/才能5》"], [23, "怪物の群れを魔法で一掃するシーン。", "《ポップ/属性9》"], [24, "剣を使って街を荒らす盗賊たちを成敗するシーン。", "《硬派/キャラ9》"], [25, "斧を振るって、動く植物を破壊するシーン。", "《体力/才能6》"], [26, "仲間と一緒に槍で突いて、敵の兵士を追い返すシーン。", "《気配り/才能9》"], [33, "歌と踊りでファンタジーの住民たちを惹きつけるシーン。", "《音楽/趣味11》"], [34, "酒場で芸を披露して、人気者になるシーン。", "《軟派/キャラ5》"], [35, "無実の罪でとらえられ、牢屋から脱出するシーン。", "《ミステリアス/キャラ3》"], [36, "突然現れた魔物の群れに襲われるシーン。", "《どじ/キャラ11》"], [44, "巨大な魔物に、みんなで立ち向かっていくシーン。", "《気配り/才能9》"], [45, "悪の魔法使いによって、呪いをかけられるシーン。", "《ダーク/属性3》"], [46, "新しい武器と防具を調達して、着こなすシーン。", "《おしゃれ/趣味5》"], [55, "一面の草原を駆け抜けるシーン。", "《元気/キャラ8》"], [56, "疲れている王様を元気づけてあげるシーン。", "《パッション/属性8》"], [66, "空を駆ける不思議な船に乗って、感動するシーン。", "《笑顔/才能7》"]]; - return self.$textFromD66Table(title, table);} - else if ("HA"['$===']($case)) { - title = "ハプニング表"; - table = [[11, "ハプニングなし", ""], [12, "ハプニングなし", ""], [13, "ハプニングなし", ""], [14, "ハプニングなし", ""], [15, "ハプニングなし", ""], [16, "ハプニングなし", ""], [22, "パートナープレイヤーに、地方からオファーが来た。その土地独特の文化を学んで、パートナープレイヤーに伝えよう。", "AT6"], [23, "グラビア撮影だが、用意された衣装のサイズがパートナープレイヤーに合わなかった。何とかして、衣装を合わせなければいけない。", "パートナープレイヤーが修得している身長分野の特技"], [24, "ダンス撮影中。パートナープレイヤーのダンスに迷いが見えた。何かアドバイスをして、迷いを取り払いたい。", "《ダンス/趣味9》"], [25, "歌の仕事だが、パートナープレイヤーの歌がどこかぎこちない。うまく本来の歌を取り戻させよう。", "パートナープレイヤーが修得している属性分野の特技"], [26, "体力を消費する仕事の最中に、パートナープレイヤーが倒れてしまった! 急いで処置をしなければ!", "《気配り/才能9》"], [33, "パートナープレイヤーにマイナースポーツのCMが回ってきたが、知らない様子だ。ルールを教えよう。", "《スポーツ/趣味4》"], [34, "パートナープレイヤーのキャラに合わない仕事が舞い込んだ。演技力で乗り切ってほしい。", "《演技力/才能12》"], [35, "パートナープレイヤーが風邪をひいてしまう。次の仕事までに、なんとか治してもらわなければ。", "《元気/キャラ8》"], [36, "パートナープレイヤーの属性らしくない衣装が来てしまった。うまくアレンジできればいいけど。", "《おしゃれ/趣味5》"], [44, "パートナープレイヤーのテンションが低い。テンションを上げるようなことを言おう。", "《バーニング/属性10》"], [45, "パートナープレイヤーの仕事に必要な小道具が足りなくなった。調達しよう。", "《ショッピング/趣味8》"], [46, "パートナープレイヤーに外国から仕事が舞い込んできた。外国の文化に合わせた仕事をしなければ。", "《異国文化/才能2》"], [55, "パートナープレイヤーに大会社からの仕事のオファーがやって来る。プレッシャーに負けないように後押ししよう。", "《胆力/才能5》"], [56, "パートナープレイヤーと他のアイドルグループとのコラボイベントが行われる。そのアイドルの情報を集めてこよう。", "《アイドル/趣味12》"], [66, "パートナープレイヤーの周りで、幽霊騒ぎが起こる。安心させるためにも、調査に乗り出そう。", "《オカルト/趣味2》"]]; - return self.$textFromD66Table(title, table);} - else if (/^AT([1-6]?)$/['$===']($case)) { - value = $$($nesting, 'Regexp').$last_match(1).$to_i(); - return self.$getSkillList(value);} - else if ("LUR"['$===']($case)) { - title = "로컬 아이돌 엉망진창표"; - table1 = ["地元の商店街で", "マスコット캐릭터クターと", "地元のプールで", "地元の小学校で", "地元のショッピングモールで", "田んぼの真ん中で"]; - table2 = ["愛について叫ぶ", "民謡を歌う", "ファッションショー", "水着で宣伝", "ネット配信", "お祭り騒ぎ"]; - return self.$textFrom1D6Table(title, table1, table2);} - else if ("SUR"['$===']($case)) { - title = "정열의 여름 엉망진창표"; - table1 = ["해수욕장에서", "훌륭한 사람의 앞에서", "그 유명 아이돌의 앞에서", "동료 앞에서", "카메라 앞에서", "일반관객 앞에서"]; - table2 = ["빙수를 단번에 먹는다", "헌팅", "수박을 깬다.", "멋진 포즈", "만면에 미소", "싸움의 행세"]; - return self.$textFrom1D6Table(title, table1, table2);} - else if ("WUR"['$===']($case)) { - title = "온기의 겨울 엉망진창표"; - table1 = ["크리스마스 트리 앞에서", "아이들 앞에서", "폭설 속에서", "눈 내리기 시작한 거리에서", "따뜻한 방 안에서", "난방이 너무 지나친 방에서"]; - table2 = ["눈 치우기", "아이스크림를 먹는다.", "얇게 입고 등장.", "노래를 불러 주세요.", "산타 코스프레", "오뎅을 서둘러 먹는다."]; - return self.$textFrom1D6Table(title, table1, table2);} - else if ("NUR"['$===']($case)) { - title = "대자연 엉망진창표"; - table1 = ["도끼를 가지고", "괭이를 가지고", "낚시대를 가지고", "포충망를 가지고", "영양 드링크 선전을 하면서", "생명 줄을 달고서"]; - table2 = ["나무를 넘어 뜨리다.", "밭을 경작한다.", "곤충채집.", "거물을 낚시한다.", "겁 없이 통과한다.", "벼랑을 오른다."]; - return self.$textFrom1D6Table(title, table1, table2);} - else if ("GUR"['$===']($case)) { - title = "聖デトワール女学園無茶ぶり表"; - table1 = ["裏山で", "食堂で", "先輩の前で", "全国放送で", "全校生徒の前で", "学園の様子を伝えるネット中継で"]; - table2 = ["歌を披露", "乗馬", "テニス", "「個性とは何か」を語る", "「アイドルとは何か」を語る", "「アイドルをやっていてよかった瞬間」を語る"]; - return self.$textFrom1D6Table(title, table1, table2);} - else if ("BUR"['$===']($case)) { - title = "アカデミー無茶ぶり表"; - table1 = ["TVカメラの前で", "ライバルと一緒に", "試験で", "寮で", "幼年部で", "初等部で"]; - table2 = ["反省会", "ゲリラライブ", "宿題をこなす", "食事を作る", "自作の歌を披露", "自作のポエムを披露"]; - return self.$textFrom1D6Table(title, table1, table2);} - else if (/^BT(\d+)?$/['$===']($case)) { - counts = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 1).$to_i(); - return self.$badStatus(counts);} - else if ("SGT"['$===']($case)) { - title = "아이돌 스킬 습득표(챌린지 걸즈)"; - table = ["씬 플레이어가 보유한 재능분야의특기가 지정 특기인 아이돌 스킬", "씬 플레이어가 보유한 캐릭터분야의특기가 지정 특기인 아이돌 스킬", "씬 플레이어가 보유한 취미분야의특기가 지정 특기인 아이돌 스킬", "랜덤으로 지정한 특기가 지정 특기인 아이돌 스킬(신장분야、속성분야、출신분야가 나올경우 재굴림)", "《멘탈 업》《퍼포먼스 업》《아이템 업》(챌린지 걸즈 216 페이지) 중 어느 쪽이든 1개", "《멘탈 업》《퍼포먼스 업》《아이템 업》(챌린지 걸즈 216 페이지) 중 어느 쪽이든 1개"]; - return self.$textFrom1D6Table(title, table);} - else if ("RS"['$===']($case)) { - title = "아이돌 스킬 습득표(로드 투 프린스)"; - table = ["씬 플레이어가 보유한 속성분야의특기가 지정 특기인 아이돌 스킬", "씬 플레이어가 보유한 캐릭터분야의특기가 지정 특기인 아이돌 스킬", "씬 플레이어가 보유한 취미분야의특기가 지정 특기인 아이돌 스킬", "랜덤으로 지정한 특기가 지정 특기인 아이돌 스킬(신장분야、재능분야、출신분야가 나올경우 재굴림)", "《멘탈 디펜스》《판정 업》《개성 업》중 어느 쪽이든 1개", "《멘탈 디펜스》《판정 업》《개성 업》중 어느 쪽이든 1개"]; - return self.$textFrom1D6Table(title, table);} - else if ("SH"['$===']($case)) { - title = "ショッピングモール散策表"; - table = [[11, "思いがけず、ブランドもの衣装を買えてしまった。これを、うまく使えないだろうか?\nシーンプレイヤーとパートナープレイヤーは、好きなブランドの衣装チケットを一つ獲得する。"], [12, "雑貨コーナーを回って、自分たちらしいアクセサリーを探す。\nシーンプレイヤーとパートナープレイヤーは、アイテム「캐릭터アイテム」を一つ獲得する。"], [13, "お歳暮コーナーが盛況だった。今のトレンドはなんだろうか。\nシーンプレイヤーとパートナープレイヤーは、アイテム「差し入れ」を一つ獲得する。"], [14, "お菓子売り場で、気になっていたお菓子のシリーズを買い漁る。\nシーンプレイヤーとパートナープレイヤーは、アイテム「お菓子」を一つ獲得する。"], [15, "스포츠ショップに立ち寄って、스포츠ドリンクを買い貯める。いつか使うかもしれない。\nシーンプレイヤーとパートナープレイヤーは、アイテム「スナミナドリンク」を一つ獲得する。"], [16, "스포츠ウェアの展示会をやっていたので、見て回る。びびっと来たアイテムも見つかった。\nシーンプレイヤーとパートナープレイヤーは、アイテム「トレーニングウェア」を一つ獲得する。"], [22, "特売品を買い漁る。さて、使えるものかな?\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに二つ獲得する。"], [23, "シューズコーナーで、普段使いの靴を調達する。댄스にちょうどいいのはどれかな?\nシーンプレイヤーとパートナープレイヤーは、アイテム「ドリーミングシューズ」を一つ獲得する。"], [24, "ふらりと買い物にやって来て、目についたものをとりあえず買ってみる。ちょっと疲れてたかも。\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], [25, "色々な洋服を見て回って、自分やパートナーに合ったコーディネートを考えてみる。\nシーンプレイヤーとパートナープレイヤーは、【ビジュアル】が1点上昇する。"], [26, "ちょうど買いたかったものが、格安で売られていた。タイミングがよかったみたいだ。\nシーンプレイヤーとパートナープレイヤーは、好きなアイテムを一つ獲得する。"], [33, "ショッピングモールを歩いているうちに、アイテムを落としてしまう。\nシーンプレイヤーとパートナープレイヤーは、アイテムをすべて失う。"], [34, "ショッピングモールを歩いていると、声をかけられた。地元の人たちから、応援のメッセージをもらう。\nシーンプレイヤーとパートナープレイヤーは、【獲得ファン人数】が4点上昇する。"], [35, "ショッピングモールでは何も買わなかったが、交わした会話はお互いを知るきっかけになった。\nシーンプレイヤーとパートナープレイヤーは、お互いに対する【理解度】が3点上昇する。"], [36, "ベンチで一休みしながら、お互いの長所について話し合う。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [44, "混雑中のフードコートで食事をしようとしたところ、一時間近く待たされる。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が2点減少する。"], [45, "フードコートで定番メニューを頼み、勝手知ったる味を楽しむ。やっぱり、知っている味がいい。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が2点上昇する。"], [46, "フードコートで新しいメニューにチャレンジ!\nシーンプレイヤーとパートナープレイヤーは、1D6を振る。出目が奇数の場合、そのPCは【メンタル】が5点減少し、出目が偶数の場合、そのPCは【メンタル】が5点上昇する。"], [55, "CDコーナーを探しているうちに、迷ってしまった。さて、ここはどこだろう?\n変調がランダムに一つ発生する。"], [56, "カフェコーナーで一休み。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が5点上昇する。"], [66, "家具や家電コーナーを回るうちに、自分たちの将来が不安になってきた。\n変調がランダムに二つ発生する。"]]; - return self.$textFromD66Table(title, table);} - else if ("MO"['$===']($case)) { - title = "山散策表"; - table = [[11, "山で迷っていたら、謎の仙人に助けられる。そのついでに、体をうまく動かす方法まで教わる。ありがとう! 謎の仙人!\nシーンプレイヤーとパートナープレイヤーの【合宿ポイント】が10点上昇する。"], [12, "山の幸を頂いて、幸福感に包まれる。うまい!\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [13, "星空の下で、二人の【背景】を語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [14, "森林浴をして、体調を整える。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇し、変調がすべて回復する。"], [15, "山登りを繰り返して、足腰を鍛える。\nシーンプレイヤーとパートナープレイヤーの【フィジカル】が1点上昇する。"], [16, "二人で一緒に朝日を見て、訳も分からず感動する。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [22, "山で迷った。\n変調がランダムに二つ発生する。"], [23, "山奥に住んでいるという、伝説のファッションデザイナーに着こなしの秘密を教えてもらう。\nシーンプレイヤーとパートナープレイヤーは、好きなブランドの衣装チケットを一つ獲得する。"], [24, "山奥に住んでいるという、伝説のレッスントレーナーに教えを乞いに足を延ばす。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [25, "ふらっと立ち寄った地元の飲食店で郷土요리を食べる。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [26, "山奥にある神社まで登って、お祈りをする。無事にライブが成功しますように。\nシーンプレイヤーとパートナープレイヤーの【合宿ポイント】が5点上昇する。"], [33, "虫にたかられて、嫌な思いをする。\n変調がランダムに一つ発生する。"], [34, "仲間たちみんなとバーベキューをして楽しむ。\nシーンプレイヤーとパートナープレイヤーは、PC全員に対する【理解度】が3点上昇する。"], [35, "キノコ狩りをする。\nシーンプレイヤーとパートナープレイヤーは、1D6を振る。その値が偶数だった場合、アイテム「スタミナドリンク」を一つ獲得する。奇数だった場合、【メンタル】が6点減少する。"], [36, "避暑地の喫茶店で一杯飲みながら、お互いのアイドル論について語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [44, "山を移動中に、落し物をしてしまう。\nシーンプレイヤーとパートナープレイヤーは、アイテムを一つ失う。"], [45, "山小屋で一晩を過ごす。お互いの生活習慣が見えてきた。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [46, "ハイキングをしながら、お互いの嫌いなものについて理解を深める。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [55, "野生の鹿に襲われそうになったので、프로듀서가 盾になった。\n変調「怪我」が発生する。"], [56, "高原の広々としたテニスコートでテニスを楽しむ。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [66, "山道を歩き疲れて、足が棒になる。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が3点減少する。"]]; - return self.$textFromD66Table(title, table);} - else if ("SEA"['$===']($case)) { - title = "海散策表"; - table = [[11, "浜辺で行われていたミスコンに強制的に参加させられる。\nシーンプレイヤーとパートナープレイヤーの【獲得ファン人数】が1D6点上昇する。"], [12, "浜辺を散歩しながら、お互いの好きなものについて語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [13, "とれたての魚を使った寿司を食べて満足する。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [14, "浜辺を歩いていると、アイドルだと気づいた地元の人たちから声援が飛んでくる。\nシーンプレイヤーとパートナープレイヤーの【獲得ファン人数】が5点上昇する。"], [15, "童心に返って、海に向かって走り出す。やったー海だー!\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [16, "水泳で体を鍛える。荒れやすい海は特訓にもってこいだ!\nシーンプレイヤーとパートナープレイヤーの【フィジカル】が1点上昇する。"], [22, "せっかくだから釣りをしてみる。何が釣れるかな?\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], [23, "二人で競い合いながら泳ぎまわる。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [24, "ちょっとだけ日に焼けて、違う自分をセルフプロデュース。ちゃんと事務所の許可はとれてます!\nシーンプレイヤーとパートナープレイヤーの【ビジュアル】が1点上昇する。"], [25, "砂浜にいい感じのタイヤがあったので、それを引っ張りながら走り込みをする。\nシーンプレイヤーとパートナープレイヤーの【フィジカル】が1点上昇する。"], [26, "海に向かって叫んで、すっきりする。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇し、【ボイス】が1点上昇する。"], [33, "しつこいナンパに誘われて、ちょっと意気消沈してしまう。\n変調がランダムに二つ発生する。"], [34, "みんなで花火をして楽しむ。\nシーンプレイヤーとパートナープレイヤーは、PC全員に対する【理解度】が2点上昇する。"], [35, "水着で決めるファンションをコーディネートして、浜辺の視線を一人占め。\nシーンプレイヤーとパートナープレイヤーは、【ビジュアル】が1点上昇する。"], [36, "魚요리を満足いくまで食べたはいいものの、食べ過ぎじゃないかが心配。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇する。"], [44, "穏やかな海を見ながら、これまでのことを思い返す。\n変調が一つ回復する。"], [45, "水族館に立ち寄ったら、お土産に色々持たされる。\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], [46, "水族館のイルカショーから、新しい技のヒントをもらう。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [55, "海で遊んでいたら、溺れかける。\n変調がランダムに三つ発生する。"], [56, "サーファーたちから、人を惹きつける技術について聞き出す。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [66, "夜の海に出没するという幽霊らしきものを見かけてしまい、ぞっとする。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が5点減少する。"]]; - return self.$textFromD66Table(title, table);} - else if ("SPA"['$===']($case)) { - title = "温泉街散策表"; - table = [[11, "地元のお祭りに遭遇! 一緒になって盛り上げる。\nシーンプレイヤーとパートナープレイヤーの【獲得ファン人数】が5点上昇する。"], [12, "卓球台を使って、お互いの力を出し切る。何かが掴めたような気がする。\nシーンプレイヤーとパートナープレイヤーの【合宿ポイント】が5点上昇する。"], [13, "お土産屋さんで、色々なものを買い込む。しかし、これは役に立つのだろうか。\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], [14, "温泉からあがった後に、ゆっくりと涼む。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇し、変調がすべて回復する。"], [15, "温泉街の名物요리を出してもらう。うまい!\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [16, "浴衣で活気のある街並みを歩きながら、お互いの【背景】を語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が1D6点上昇する。"], [22, "湯に浸かり過ぎて目が回る。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇し、変調がランダムに一つ発生する。"], [23, "たくさんの温泉に次々浸かる。楽しいけど疲れた。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [24, "湯船に浸かってリフレッシュ。ひとまずは一息入れましょう。\n変調がすべて回復し、シーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [25, "ジャグジー風呂で肩こりや足のむくみを癒す。温泉地でもこういう施設はあるんだな。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], [26, "みんなやプロデューサーを連れて足湯に浸かる。いつもご苦労様。\n変調がすべて回復する。"], [33, "のぼせる。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が3点減少する。"], [34, "貸切風呂で、ゆったりとしながらお互いを理解をするための話し合いをする。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], [35, "マッサージ機を使って、日ごろの疲れをたたき出す。\n変調をすべて回復する。"], [36, "お風呂の後の牛乳もうまい!\nシーンプレイヤーとパートナープレイヤーは、アイテム「スナミナドリンク」を一つ獲得する。"], [44, "ついつい無駄遣いをしてしまう。てへへ。\n変調がランダムに一つ発生する。"], [45, "屋台での観光客向けの요리に舌鼓をうつ。こういう味もありなのか。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇する。"], [46, "温泉街の女将さんたちに、人の心を豊かにする術を教えてもらう。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [55, "部屋の中でぼけっと過ごす。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が1点上昇する。"], [56, "観光客の人々と会話をして、自分たちの知名度を確認する。\nアイドルランク係数が「10」以上の場合、【獲得ファン人数】が4D6点上昇する。"], [66, "複雑な地形と坂道で疲れ始める。目的の場所はまだ?\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が3点減少する。"]]; - return self.$textFromD66Table(title, table);} - else if ("TN"['$===']($case)) { - title = "夜語りシチュエーション表"; - table = [["みんなが寝静まった寝室。二人だけのお話。", "好きな特技"], ["夜の街を歩きながら、【背景】をぽつぽつと語り出す。", "씬 플레이어의個性特技"], ["「好きなもの」を探しに出かけた帰り道。", "씬 플레이어가 보유한 취미분야의특기"], ["「嫌いなもの」から逃げてきて、二人きりになってしまった。", "AT"], ["暗い道を往くとき、ふとしたきっかけで、「身体的特徴」に触れてしまう。", "씬 플레이어가 보유한 신장분야의특기"], ["「ファッション特徴」の話に夢中になっていたら、いつの間にか二人になっていたことに気づく。", "씬 플레이어가 보유한 속성분야의특기"]]; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - return $rb_plus($rb_plus("" + (title) + " > [" + (number) + "] > ", table['$[]']($rb_minus(number, 1))['$[]'](0)), self.$getSkillText(table['$[]']($rb_minus(number, 1))['$[]'](1)));} - else if ("CG"['$===']($case)) { - title = "コモン成長表"; - table = ["【メンタル】が2点上昇する。", "【メンタル】が4点上昇する。", "『챌린지 걸즈』か『로드 투 프린스』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。", "アイテムをランダムに一つ獲得する。", "アイテムをランダムに一つ獲得する。", "【獲得ファン人数】が3点上昇する。"]; - text = self.$textFrom1D6Table(title, table); - if ($truthy(/アイテムをランダムに一つ獲得する。$/['$=~'](text))) { - text = $rb_plus(text, $rb_plus("\n", self.$getItem()))}; - return text;} - else if ("GG"['$===']($case)) { - title = "ゴールド成長表"; - table = [[11, "好きなアイドルスキルを一つ選んで修得する。"], [12, "『챌린지 걸즈』か『로드 투 프린스』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [13, "『챌린지 걸즈』か『로드 투 프린스』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [14, "『챌린지 걸즈』か『로드 투 프린스』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [15, "『챌린지 걸즈』か『로드 투 프린스』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [16, "『챌린지 걸즈』か『로드 투 프린스』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [22, "好きなアイドルスキルを一つ選んで修得する。"], [23, "レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [24, "レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [25, "レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], [26, "好きな能力値一つが1点上昇する。"], [33, "好きな能力値一つが2点上昇する。"], [34, "【ボイス】が1点上昇する。"], [35, "【フィジカル】が1点上昇する。"], [36, "【ビジュアル】が1点上昇する。"], [44, "個性特技を別の特技に変更することができる。"], [45, "好きな能力値二つが1点上昇する。"], [46, "すべての能力値が1点上昇する。"], [55, "【メンタル】が10点上昇する。"], [56, "アイテムをランダムに一つ獲得する。"], [66, "個性特技の目標値が1点減少する。"]]; - skillTitle = "レアアイドルスキル修得表"; - skillTable = ["【秘めたる素質】を修得する。", "【王者の風格】を修得する。", "【万能アイドル】を修得する。", "【最強の負けず嫌い】を修得する。", "【超絶無敵コーデ】を修得する。", "【強く正しく美しく】を修得する。"]; - text = self.$textFromD66Table(title, table); - if ($truthy(/レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。/['$=~'](text))) { - text = $rb_plus(text, $rb_plus("\n", self.$textFrom1D6Table(skillTitle, skillTable))) - } else if ($truthy(/アイテムをランダムに一つ獲得する。$/['$=~'](text))) { - text = $rb_plus(text, $rb_plus("\n", self.$getItem()))}; - return text;} - else if ("FL"['$===']($case)) { - title = "駆け出しシーン表"; - table = ["トレーニングルームで、皆が真剣な顔をしている。真面目な雰囲気が場を支配しており、軽い冗談も言えなさそう。", "いつものたまり場。なのに、今日に限って、騒がしさがどこかに行ってしまったようだ。", "誰も歩いていない夜道。人気もなく、不安を抱くような暗闇に、足音だけが響いている。", "強い風と強い雨が吹きつける事務所の中。外に出れば、吹き飛ばされてしまいそう。", "曇り空の下。そこにいるだけで、暗い気持ちになるような、どんよりとした天気。", "雨が降り続けている。雨は、ずっと続いている。いつになったら晴れるのだろう。"]; - return self.$textFrom1D6Table(title, table);} - else if ("LN"['$===']($case)) { - title = "孤独表"; - table = ["誰のことも信じられない。私は一人でやってみせる。\nPC全員の【理解度】すべてにチェックを入れる。センターPCは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。", "事件がきっかけで、事務所の空気が悪くなった。嫌な雰囲気。\n変調がランダムに三つ発生する。", "口調が荒くなり、きつい一言を仲間に言ってしまう。\nPC全員の【メンタル】が5点減少し、【理解度】すべてにチェックを入れる。", "ちょっとした注意がきっかけで、仲間と喧嘩をしてしまう。\nPC全員の【メンタル】が10点減少する。", "誰も、話をしない。気まずさと静寂が場を包んだ。このままでは、会場の空気も悪くなる。\n【目標動員数】が二倍になる。", "突然の強い雨に打たれる。ずぶぬれのところに一人。そんなところを誰かに目撃されてしまう。\nセンターPCの【獲得ファン人数】が半分になる。"]; - return self.$textFrom1D6Table(title, table);} - else if ("MS"['$===']($case)) { - title = "マイスキル名決定表"; - nameTable = ["形容表+情景表+マテリアル表", "形容表+情景表+アクション表", "形容表+マテリアル表+アクション表", "情景表+マテリアル表+アクション表", "形容表もしくは情景表+称号表+PCの名前", "マテリアル表もしくはアクション表+称号表+PCの名前"]; - articleTitle = "称号表"; - articleTable = ["アイドル", "ガール/ボーイ", "パラダイス", "プリンセス/プリンス", "스타일", "クイーン/キング"]; - describeTitle = "形容表"; - describeTable = [[11, "ビギニング"], [12, "パワフル"], [13, "ビューティフル"], [14, "エターナル"], [15, "きらめき"], [16, "シャイニング"], [22, "パーフェクト"], [23, "1000%"], [24, "フレッシュ"], [25, "ドキドキ"], [26, "ワイルド"], [33, "ロイヤル"], [34, "ときめき"], [35, "ふわふわ"], [36, "スタイリッシュ"], [44, "小悪魔"], [45, "スーパー"], [46, "ウルトラ"], [55, "ハイパー"], [56, "ダイナマイト"], [66, "アルティメット"]]; - sceneTitle = "情景表"; - sceneTable = [[11, "マーメイド"], [12, "ドリーム"], [13, "ピュア"], [14, "アニマル"], [15, "サンシャイン"], [16, "ムーンライト"], [22, "かわいい/かっこいい"], [23, "フューチャリング"], [24, "ライジング"], [25, "버닝"], [26, "스타ライト"], [33, "ボンバー"], [34, "レインボー"], [35, "フローズン"], [36, "ヒート"], [44, "ダーク"], [45, "ぴかぴか"], [46, "サンライズ"], [55, "스타ダスト"], [56, "オーロラ"], [66, "ギャラクシー"]]; - materialTitle = "マテリアル表"; - materialTable = [[11, "バスケット"], [12, "エクスプレス"], [13, "エア플레인"], [14, "ロケット"], [15, "ハリケーン"], [16, "バイク"], [22, "タイガー"], [23, "ドルフィン"], [24, "ドッグ"], [25, "キャット"], [26, "バニー"], [33, "ドラゴン"], [34, "ソード"], [35, "ランス"], [36, "パラソル"], [44, "ローズ"], [45, "ロータス"], [46, "コスモス"], [55, "キャンディ"], [56, "ハート"], [66, "フェニックス"]]; - actionTitle = "アクション表"; - actionTable = [[11, "スパイラル"], [12, "フライ"], [13, "シャワー"], [14, "ダイブ"], [15, "イリュージョン"], [16, "ラッシュ"], [22, "ターン"], [23, "ラブ"], [24, "ハグ"], [25, "ダッシュ"], [26, "シュート"], [33, "ダイビング"], [34, "クロス"], [35, "トリック"], [36, "ビーム"], [44, "スラッシュ"], [45, "ボイス"], [46, "ドライブ"], [55, "くるくる"], [56, "ジャンプ"], [66, "アクション"]]; - $b = self.$get_table_by_1d6(nameTable), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (nameNumber = ($a[1] == null ? nil : $a[1])), $b; - nameParts = []; - articleIndex = name.$index(articleTitle); - if ($truthy(articleIndex['$nil?']())) { - } else { - - $b = self.$get_table_by_1d6(articleTable), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - nameParts.$push([articleIndex, articleTitle, text, number]); - }; - self.$setArrayFromD66Table(nameParts, name, describeTitle, describeTable); - self.$setArrayFromD66Table(nameParts, name, sceneTitle, sceneTable); - self.$setArrayFromD66Table(nameParts, name, materialTitle, materialTable); - self.$setArrayFromD66Table(nameParts, name, actionTitle, actionTable); - nameParts['$sort!'](); - numberString = ""; - $send(nameParts, 'each', [], ($$4 = function(_index, src, text1, number1){var self = $$4.$$s || this; - - - - if (_index == null) { - _index = nil; - }; - - if (src == null) { - src = nil; - }; - - if (text1 == null) { - text1 = nil; - }; - - if (number1 == null) { - number1 = nil; - }; - name = name.$gsub(src, text1); - return (numberString = $rb_plus(numberString, "" + (src) + (number1) + ","));}, $$4.$$s = self, $$4.$$arity = 4, $$4)); - numberString = numberString['$[]'](0, $rb_minus(numberString.$length(), 1)); - return "" + (title) + " > [" + (nameNumber) + "," + (numberString) + "] > " + (name);} - else if ("MSE"['$===']($case)) { - title = "マイスキル効果表"; - table = ["演目を行ったときに使用できる。自分の【メンタル】が15点になる。この効果は、1回のセッションに1度まで使用できる。", "ミラクル・ミラクルシンクロ・パーフェクトミラクルを発生させたときに使用できる。【パフォーマンス値】が10点上昇する。この効果は、1回のセッションに1度まで使用できる。", "ファンブルではない判定の後に使用する。判定の達成値を12にする。この効果は、1回のセッションに1度まで使用できる。", "演目を行ったときに使用できる。自分以外のPC全員の【メンタル】が2D6点上昇する。この効果は、1回のセッションに1度まで使用できる。", "ライブフェイズ開始時に使用する。このフェイズの間、すべての判定の達成値にプラス2の修正がつく。この効果は、1回のセッションに1度まで使用できる。", "パフォーマンスのサイコロを振った後に使用する。サイコロ1つの出目を6にすることができる。この効果は、1回のセッションに1度まで使用できる。"]; - return self.$textFrom1D6Table(title, table);} - else if ("ST"['$===']($case)) { - title = "演出表"; - table = ["見事なパフォーマンスに、人々が感動する。", "その声に観客が聞き惚れる。", "一糸乱れぬ댄스が決まる。", "宙に飛ばしたマイクを見事にキャッチする。", "トランポリンなどを使って、会場の天井近くまでジャンプ。", "観客と一体になって決めポーズ。"]; - return self.$textFrom1D6Table(title, table);} - else if ("FST"['$===']($case)) { - title = "ファンタジー演出表"; - table = ["会場を覆っていた暗雲を退散させる。", "会場に花が咲く。", "炎の旋風が観客を燃え上がらせる。", "ハートの風船が会場中を飛び交う。", "羽を生やして会場を飛び回る。", "打ち上がった花火と共に決めポーズ。"]; - return self.$textFrom1D6Table(title, table);} - else if ("CHO"['$===']($case)) { - title = "하이라이트 표"; - table = [[11, "모험이다 / 어드벤처\n이 공연간에, 스페셜치가 1점 감소."], [12, "온 세상의 사랑 / 러브\nPC전원의【멘탈】이 3점 상승."], [13, "지금 보내고 싶은 / 기다릴 수 없는\n이 공연의 【퍼포먼스치】가 1점 상승."], [14, "지지 않는 거야 / 이기고 싶은\n이 공연의 PP가 5 점 감소(최저 0).。"], [15, "감사의 말 / 고마워요\n변조가 모두 회복한다."], [16, "너라면 / 당신들이\n이 공연 간에 모든 【이해도】가 2점 높은 것으로서 취급한다."], [22, "동료와 함께라면 / 동료의\nPC전원은 자신 이외의 캐릭터에 대해 【이해도】가 1점 상승."], [23, "정말로 좋아해 / MAX\nPC 전원의 【멘탈】이 1D6점 상승.。"], [24, "죽고 싶을 정도로 / 어둠으로 떨어져\n이 공연 간에 스페셜치와 펌블치가 1점 감소."], [25, "이지만 / 에서도、이 공연 간에 단기돌파 목표치가 5점이 된다."], [26, "키스보다 / 속삭이는 것보다\n이 공연 목록의 간에 【비주얼】이 1점 상승한다."], [33, "함께 있으면 좋은 / 쭉\n아이돌 클래스가 「훈훈한」인 PC전원은 【추억】을 획득"], [34, "달리다 / 달리는\n이 공연 간에 【피지컬】이 1점 상승한다."], [35, "기다림에 애태우는 / 언제까지나\n공연 간에 심포니를 실시했을 때 주사위 눈 하나를 1로 변경할 수 있다."], [36, "한밤 중에 / 한낮에の\n미라클• 미라클 싱크로가 발생했을 때 【퍼포먼스치】에 +5."], [44, "笑おうぜ/미소で\n아이돌 클래스가 「코메디」인 PC전원은 【획득 팬 인원수】가 [2D6에] 랭크 계수】를 적용한 수만큼 상승."], [45, "파티다 / 돈으로도\nPC전원은, 아이템을 1개 랜덤에 획득한다."], [46, "이니까 / 그리고\n공연 간에 단기돌파 이외의 판정 달성치가 1점 상승한다"], [55, "나만 봐 / 독점하고 싶은\n단기돌파를 실시해도 【멘탈】이 감소하지 않는다."], [56, "우리들의 노래 / 노래하자\n이 공연 간에 【보이스】가 1점 상승한다.。"], [66, "사랑하고 있는 것 / 좋아해\n아이돌 클래스가 「진지한」인 PC전원의 【멘탈】이 5점 상승."]]; - return self.$textFromD66Table(title, table);} - else if ("SCH"['$===']($case)) { - title = "정열의 여름 하이라이트 표"; - table = ["여름은\n이 공연간에 PC전원의 【퍼포먼스치】가 1점 상승.", "뜨거운 거야!\n이 공연간에 PC전원의 스페셜치가 1점 감소.", "수영복이\n이 공연간에 의상효과에 의해 상승하는 값이 +1.", "목 마른\n이 공연간에 PC전원의 펌블치가 3점 상승.", "촉촉한\n【멘탈】이 5점 이하인 PC전원은 【멘탈】이 10점 상승.", "튀는\n이 공연간에 퍼펙트 미러클의【퍼포먼스치】가 15점 상승."]; - return self.$textFrom1D6Table(title, table);} - else if ("WCH"['$===']($case)) { - title = "온기의 겨울 하이라이트 표"; - table = ["눈과 같은\nPC전원의 【멘탈】이 3점 상승.", "초콜릿에\nPC1인의 【멘탈】이 10점 상승.", "녹여 주는\n이 공연 간, PC전원의 판정의 달성치가 1점 상승.", "특별한 날\n이 공연 간, PC1인의 스페셜치가 3점 감소.", "눈보라가\n이 공연 간, 미라클의 【퍼포먼스치】가 10점 상승.", "추위도 잊어\n이 공연 간, 펌블이 발생해도 변조가 생기지 않는다."]; - return self.$textFrom1D6Table(title, table);} - else if ("NCH"['$===']($case)) { - title = "대자연 하이라이트 표"; - table = ["야생의\n전원 【멘탈】이 1D6점 상승.", "파워로\n이 공연간에 PC 1명의 【퍼포먼스치】가 1D6점 상승.", "단련된 몸\n전원 【멘탈】이 3점상승.", "잡고 있는\n이 공연 간에 PC 전원 【파포먼스치】가 1점 상승.", "부축 하는\n이 공연 간에 PC 1명의 【퍼포먼스치】가 3점 상승.", "매일 싸워 나가는\nPC 1명의 【획득 팬 인원수】가 2D6에 【랭크계수】 걸친 수만큼 상승."]; - return self.$textFrom1D6Table(title, table);} - else if (/^IT(\d+)?$/['$===']($case)) { - counts = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 1).$to_i(); - return self.$getItem(counts);} - else if ("ACT"['$===']($case)) { - title = "アクセサリー種別決定表"; - table = ["頭アクセサリー表を使用する。", "帽子アクセサリー表を使用する。", "胴アクセサリー表を使用する。", "腕アクセサリー表を使用する。", "足アクセサリー表を使用する。", "その他アクセサリー表を使用する。"]; - text = self.$textFrom1D6Table(title, table); - title = "頭アクセサリー表"; - if ($truthy(text['$include?'](title))) { - - table = [[11, "アイマスク"], [12, "うさみみ"], [13, "ねこみみ"], [14, "サングラス"], [15, "ピアス"], [16, "シュシュ"], [22, "仮面"], [23, "ティアラ"], [24, "エクステ"], [25, "バンダナ"], [26, "ヘアバンド"], [33, "インカム"], [34, "イヤリング"], [35, "ホワイトプリム"], [36, "ゴーグル"], [44, "つけひげ"], [45, "ヘッドホン"], [46, "耳あて"], [55, "トナカイの角"], [56, "花飾り"], [66, "かんざし"]]; - return $rb_plus($rb_plus(text, "\n"), self.$textFromD66Table(title, table));}; - title = "帽子アクセサリー表"; - if ($truthy(text['$include?'](title))) { - - table = [[11, "ヘルメット"], [12, "麦わら帽子"], [13, "サンタ帽子"], [14, "花冠"], [15, "学帽"], [16, "ハンチング帽"], [22, "シルクハット"], [23, "テンガロンハット"], [24, "ナイトキャップ"], [25, "ロシア帽"], [26, "ベレー帽"], [33, "コック帽"], [34, "パーティコーン"], [35, "とんがり帽子"], [36, "キャップ"], [44, "ナースキャップ"], [45, "カンカン帽"], [46, "ハット帽"], [55, "ターバン"], [56, "セーラーキャップ"], [66, "中共帽子"]]; - return $rb_plus($rb_plus(text, "\n"), self.$textFromD66Table(title, table));}; - title = "胴アクセサリー表"; - if ($truthy(text['$include?'](title))) { - - table = [[11, "首かけ指輪"], [12, "カウベル"], [13, "ネックレス"], [14, "蝶ネクタイ"], [15, "メガホン"], [16, "ペンダント"], [22, "ブローチ"], [23, "金の首輪"], [24, "チョーカー"], [25, "南京錠"], [26, "タスキ"], [33, "エプロン"], [34, "名札"], [35, "階級章"], [36, "胸当て"], [44, "ベルト"], [45, "ポシェット"], [46, "マフラー"], [55, "首かけカメラ"], [56, "リボン"], [66, "肩パット"]]; - return $rb_plus($rb_plus(text, "\n"), self.$textFromD66Table(title, table));}; - title = "腕アクセサリー表"; - if ($truthy(text['$include?'](title))) { - - table = [[11, "動物の手"], [12, "宝石の腕輪"], [13, "動物のマペット"], [14, "グローブ"], [15, "指ぬきグローブ"], [16, "リストバンド"], [22, "鍋掴み"], [23, "手袋"], [24, "長手袋"], [25, "腕章"], [26, "腕時計"], [33, "ドリル"], [34, "楽器"], [35, "マフ"], [36, "カフス"], [44, "ボクシンググローブ"], [45, "シルバーアクセサリー"], [46, "ゴールドアクセサリー"], [55, "ぬいぐるみ"], [56, "ミサンガ"], [66, "手甲"]]; - return $rb_plus($rb_plus(text, "\n"), self.$textFromD66Table(title, table));}; - title = "足アクセサリー表"; - if ($truthy(text['$include?'](title))) { - - table = [[11, "革靴"], [12, "ブーツ"], [13, "スポーツシューズ"], [14, "スキー靴"], [15, "アンクル"], [16, "バスケットシューズ"], [22, "スリッパ"], [23, "ミサンガ"], [24, "動物の足"], [25, "作業靴"], [26, "ルーズウォーマー"], [33, "ニーパッド"], [34, "ガーターリング"], [35, "ポーチ"], [36, "ローラースケート"], [44, "へんなタイツ"], [45, "白タイツ"], [46, "網タイツ"], [55, "ガラスの靴"], [56, "グリープ"], [66, "ベル"]]; - return $rb_plus($rb_plus(text, "\n"), self.$textFromD66Table(title, table));}; - title = "その他アクセサリー表"; - if ($truthy(text['$include?'](title))) { - - table = [[11, "ボンボン"], [12, "マント"], [13, "蝶の羽"], [14, "天使の羽"], [15, "悪魔の羽"], [16, "猫のしっぽ"], [22, "トレンチコート"], [23, "ばんそうこう"], [24, "パラソル"], [25, "ステッキ"], [26, "タトゥーシール"], [33, "バーコード"], [34, "バレーボール"], [35, "大きなリボン"], [36, "鎖"], [44, "キャラクターグッズ"], [45, "イメージカラーのネイル"], [46, "メガネ"], [55, "旗"], [56, "ジャケット"], [66, "サスペンダー"]]; - return $rb_plus($rb_plus(text, "\n"), self.$textFromD66Table(title, table));}; - return text;} - else if ("ACB"['$===']($case)) { - title = "アクセサリーブランド決定表"; - table = ["『챌린지 걸즈』の衣装ブランドからランダムに決定する。", "『챌린지 걸즈』の衣装ブランドからランダムに決定する。", "『로드 투 프린스』の衣装ブランドからランダムに決定する。", "『로드 투 프린스』の衣装ブランドからランダムに決定する。", "『フォーチュンスターズ』の衣装ブランドからランダムに決定する。", "『フォーチュンスターズ』の衣装ブランドからランダムに決定する。"]; - text = self.$textFrom1D6Table(title, table); - /『(.+)』/['$=~'](text); - bookTitle = $$($nesting, 'Regexp').$last_match(1); - return $rb_plus($rb_plus(text, "\n"), self.$costume($rb_plus($rb_plus("의상(", bookTitle), ")"), true));} - else if ("ACE"['$===']($case)) { - title = "アクセサリー効果表"; - table = [[11, "好きな能力値が1点高いものとして扱う。"], [12, "【ボイス】が1点高いものとして扱う。"], [13, "【フィジカル】が1点高いものとして扱う。"], [14, "【ビジュアル】が1点高いものとして扱う。"], [15, "このアクセサリーを装備したとき、【メンタル】が5点上昇する。この効果は、1回のセッションに1度まで使用できる。"], [16, "【パフォーマンス値】が2点上昇する。"], [22, "このアクセサリーを装備したとき、「アイドルスキル修得表」を使って、ランダムにアイドルスキルを1つ修得する。リザルトフェイズにそのアイドルスキルは失われる。この効果は、1回のセッションに1度まで使用できる。"], [23, "開幕演目と最終演目で行う判定の達成値が2点上昇する。"], [24, "【協調値】が1点上昇する。"], [25, "アイドルスキルの効果が1点上昇する。"], [26, "意地判定の達成値が3点上昇する。"], [33, "特殊な演目によって上昇する【獲得ファン人数】が3点上昇する。"], [34, "一芸突破を行ったとき、判定の達成値が2点上昇する。"], [35, "このアクセサリーを装備したとき、好きな特技を1つ選ぶ。選んだ特技は、ライブフェイズの間、修得しているものとして扱う。この効果は、1回のセッションに1度まで使用できる。"], [36, "幕間での判定の達成値が2点上昇する。"], [44, "思い出を使用したとき、【メンタル】が3点上昇する。"], [45, "ミラクルが発生したときの【パフォーマンス値】が15点になる。"], [46, "アイドルスキルを使用したときの判定の達成値が2点上昇する。"], [55, "特別な演目を行っても、【メンタル】が減少しない。"], [56, "最終演目での【メンタル】減少が半分(端数切り捨て)になる。"], [66, "スペシャルが発生したとき、【メンタル】が10点上昇する。"]]; - return self.$textFromD66Table(title, table);} - else if ("DT"['$===']($case)) {return self.$costume("의상(챌린지 걸즈)")} - else if ("RC"['$===']($case)) {return self.$costume("의상(로드 투 프린스)")} - else if ("FC"['$===']($case)) {return self.$costume("의상(フォーチュンスターズ)")} - else if ("CBT"['$===']($case)) { - title = "캐릭터공백표(챌린지 걸즈)"; - table = [[11, "바뀌는 말투"], [12, "~버릇"], [13, "동물 같은"], [14, "일본식"], [15, "경박함"], [16, "계산이 빠름"], [22, "여동생/누나 캐릭터"], [23, "포지티브!"], [24, "네거티브……"], [25, "응석받이"], [26, "연령"], [33, "동물의상"], [34, "지기 싫어함"], [35, "노력가"], [36, "말하고 싶어함"], [44, "천연"], [45, "흉내"], [46, "특징 없음"], [55, "직감"], [56, "피아노"], [66, "소중한 사람"]]; - return self.$textFromD66Table(title, table);} - else if ("RCB"['$===']($case)) { - title = "캐릭터공백표(로드 투 프린스)"; - table = [[11, "걱정이 많은"], [12, "본좌 (어르신)"], [13, "남동생"], [14, "노력가"], [15, "차분함"], [16, "서투름"], [22, "이중인격"], [23, "럭키보이"], [24, "귀여운"], [25, "소악마"], [26, "유유자적"], [33, "조용한 광기"], [34, "육체파"], [35, "시인"], [36, "참견"], [44, "연애를 좋아함"], [45, "비평가"], [46, "차가움"], [55, "고고함"], [56, "오빠"], [66, "여자를 접하기 싫어함"]]; - return self.$textFromD66Table(title, table);} - else if ("HBT"['$===']($case)) { - title = "취미공백표(챌린지 걸즈)"; - table = [[11, "취미없음"], [12, "티타임"], [13, "시"], [14, "자격증 습득"], [15, "일러스트레이트"], [16, "인형"], [22, "수면"], [23, "천체관측"], [24, "산책"], [25, "식사"], [26, "뜨개딜"], [33, "곤충채집"], [34, "문자"], [35, "긴통화"], [36, "카페순례"], [44, "목욕"], [45, "수집"], [46, "조경"], [55, "등산"], [56, "역사 애호가"], [66, "가사"]]; - return self.$textFromD66Table(title, table);} - else if ("RHB"['$===']($case)) { - title = "취미공백표(로드 투 프린스)"; - table = [[11, "철도"], [12, "꽃꽃이"], [13, "여행"], [14, "일요목수"], [15, "서예"], [16, "단형시 짓기"], [22, "식도락"], [23, "근력 트레이닝"], [24, "공작"], [25, "자격증 습득"], [26, "낚시"], [33, "산보"], [34, "패션"], [35, "사육"], [36, "장난"], [44, "거리에서 헌팅"], [45, "독서"], [46, "가사전반"], [55, "곤충채집"], [56, "아트"], [66, "수면"]]; - return self.$textFromD66Table(title, table);} - else if ("RU"['$===']($case)) { - title = "マスコット暴走表"; - table = ["激しいアクションで興味を持った人たちを呼び寄せる。\nPC全員の【獲得ファン人数】が5点上昇する。", "マスコット캐릭터クターから聞こえてはいけない音が聞こえてきて、次の瞬間には動かなくなってしまった。\nこのセッションの間、マスコット캐릭터クターが使用できなくなる。", "マスコット캐릭터クターが行方不明! 프로듀서가 代わりに着ぐるみを着たけれども、負担が大きかった。\n変調「怪我」が発生する。", "マスコット캐릭터クターが不適切な発言をしてしまい、連帯責任で謝罪することになってしまう。\nPC全員の【獲得ファン人数】が、それぞれ5点減少する。", "マスコット캐릭터クターが転んで起き上がれなくなってしまった! みんなで力を合わせて助け起こそう。\nPC全員の【メンタル】が3点減少する。", "マスコットが突然PCに物申す。問題点を挙げて、鍛えてくれる。\nPC一人は、「アイドルスキル修得表」を使って、アイドルスキルを一つ修得する。"]; - return self.$textFrom1D6Table(title, table);} - else if (/^(\d{2})C$/['$===']($case)) { - title = "バーストタイム"; - degrees = $$($nesting, 'Regexp').$last_match(1).$to_i(); - counts = 6; - if ($truthy(($truthy($a = $rb_lt(degrees, 45)) ? $a : $rb_gt(degrees, 55)))) { - return nil - } else if ($truthy($rb_le(degrees, 49))) { - counts = 3 - } else if ($truthy($rb_le(degrees, 52))) { - counts = 4 - } else if ($truthy($rb_le(degrees, 54))) { - counts = 5}; - $b = self.$roll(counts, 6, 1), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (dice = ($a[1] == null ? nil : $a[1])), $b; - total = $rb_plus(total, degrees); - text = "" + (title) + " > " + (degrees) + "+[" + (dice) + "] > " + (total) + " > "; - if ($truthy($rb_ge(total, 80))) { - text = $rb_plus(text, "Burst!\n「バースト表」を使用する。") - } else if ($truthy($rb_ge(total, 65))) { - - string = "成功\n【獲得ファン人数】が2D6点上昇する。"; - if ($truthy($rb_ge(total, 75))) { - string = "" + "大" + (string) + "\nPC全員が挑戦者ではない場合、自分以外のPCを一人指名する。指名されたPCは、新たな挑戦者として、【メンタル】を減少させずに「バーストタイム」を行う。"}; - text = $rb_plus(text, string); - } else { - text = $rb_plus(text, "失敗") - }; - return text;} - else if ("BU"['$===']($case)) { - title = "バースト表"; - table = ["熱い! 熱い!\n【メンタル】が2点減少する。", "慌てて浴槽から出ようとしたが、足を滑らせて浴槽に落ちる。ウケたはいいが、とても熱い。\n【メンタル】が1D6点減少し、【獲得ファン人数】が3D6点上昇する。", "温かい目で見守っていた仲間の手を力いっぱい引っ張り、浴槽に引きずり込む。\n自分以外のPCを一人選ぶ。選ばれたPCは、【メンタル】を3点減少させ、「バーストタイム」を行う。", "あまりの熱さに浴槽へ入り損ねていたら、仲間の一人に叩き落とされる。\n【メンタル】を2点減少してから、PCを一人選ぶ。選んだPCに対する【理解度】が3点上昇し、チェックを外す。", "思い切って氷を頭から浴びる。쿨ダウン完了!\n【メンタル】を2点減少させることで、もう一度「バーストタイム」を行うことができる。", "熱湯風呂に入るための着替えに手間取ってしまい、急かされてしまう。結果、満足に着替えができなかった。\nこのライブフェイズの間、衣装の効果が無効化される。"]; - return self.$textFrom1D6Table(title, table);} - else if (/^(\d+)(S?)A([1-6]*)([\+\-]\d+)?$/['$===']($case)) { - title = "攻撃"; - counts = $$($nesting, 'Regexp').$last_match(1).$to_i(); - if ($truthy($rb_le(counts, 0))) { - return nil}; - sure = $$($nesting, 'Regexp').$last_match(2)['$empty?']()['$!'](); - remove = $$($nesting, 'Regexp').$last_match(3); - adjust = $$($nesting, 'Regexp').$last_match(4); - adjust = ($truthy($a = adjust) ? $a : ""); - result = self.$roll(counts, 6, 1); - dice = $rb_minus(result['$[]'](1).$split(","), remove.$split("")); - text = $rb_plus($rb_plus("" + (title) + " > [", result['$[]'](1)), "" + "]" + (adjust) + " > "); - if ($truthy(($truthy($a = dice.$count()['$=='](counts)) ? $a : dice['$empty?']()))) { - } else { - text = $rb_plus(text, $rb_plus($rb_plus("[", dice.$join(",")), "" + "]" + (adjust) + " > ")) - }; - if ($truthy(($truthy($a = sure) ? $a : dice.$count()['$=='](dice.$uniq().$count())))) { - - total = adjust.$to_i(); - if ($truthy(dice['$empty?']())) { - } else { - total = $rb_plus(total, $send(dice, 'map', [], "to_i".$to_proc()).$inject("+")) - }; - if ($truthy($rb_lt(total, 0))) { - total = 0}; - text = $rb_plus(text, "" + (total) + "ダメージ"); - } else { - text = $rb_plus(text, "失敗") - }; - return text;} - else if ("SIP"['$===']($case)) { - title = "かんたんパーソン表"; - table = ["テレビ番組に出て、ライブの宣伝をする。", "ラジオに出演して、ライブの宣伝をする。", "動画を配信して、ライブの宣伝をする。", "ライブの宣伝のために、街でビラ配りをする。", "ライブに人を集めるために、派手なパフォーマンスを街中でする。", "ライブの宣伝のために、あちこちを走り回る。"]; - return self.$textFrom1D6Table(title, table);} - else if ("BVT"['$===']($case)) { - title = "대형 예능 프로덕션 회장표"; - table = ["자사내 TV 스튜디오", "사내 라이브 스테이지", "자사 프로그램", "이벤트 회장", "쇼핑센터", "자사 주최 페스티벌"]; - return self.$textFrom1D6Table(title, table);} - else if ("LVT"['$===']($case)) { - title = "약소 예능 프로덕션 회장표"; - table = ["지방 축제", "CD샵 앞", "소극장", "음악 프로그램", "로컬 TV", "예능 관계사 공동개최 페스티벌"]; - return self.$textFrom1D6Table(title, table);} - else if ("TVT"['$===']($case)) { - title = "라이브 시어터 회장표"; - table = ["라이브 시어터", "라이브 시어터", "라이브 시어터", "라이브 시어터", "라이브 시어터", "라이브 시어터"]; - return self.$textFrom1D6Table(title, table);} - else if ("CVT"['$===']($case)) { - title = "아이돌 부 회장표"; - table = ["運動場", "体育館", "屋上", "街中", "地元のイベント", "学園アイドル大会"]; - return self.$textFrom1D6Table(title, table);} - else if ("BST"['$===']($case)) { - title = "대형 예능 프로덕션 장소표"; - table = ["사내 프로젝트 룸", "사내 카페", "사내 풀", "사내 레슨 룸", "쇼핑센터", "사내 에스테틱 룸"]; - return self.$textFrom1D6Table(title, table);} - else if ("LST"['$===']($case)) { - title = "약소 예능 프로덕션 장소표"; - table = ["급탕실", "응접실", "거실", "옥상", "사장실", "근처공원"]; - return self.$textFrom1D6Table(title, table);} - else if ("TST"['$===']($case)) { - title = "라이브 시어터 장소표"; - table = ["우리의 무대", "대기실", "매점", "극장 앞", "레슨 룸", "무대 옆"]; - return self.$textFrom1D6Table(title, table);} - else if ("CST"['$===']($case)) { - title = "아이돌 부 장소표"; - table = ["부실", "음악실", "교실", "옥상", "운동장", "체육관"]; - return self.$textFrom1D6Table(title, table);} - else if ("BPT"['$===']($case)) { - title = "대형 예능 프로덕션 프레셔 종류 결정표"; - table = ["선배 아이돌의 기대", "후배 아이돌의 동경", "사장의 시찰", "동기 아이돌들과의 경쟁", "거물 게스트 등장", "TV프로그램의 프로듀서"]; - return self.$textFrom1D6Table(title, table);} - else if ("LPT"['$===']($case)) { - title = "약소 예능 프로덕션 프레셔 종류 결정표"; - table = ["열심히 라이브 와주는 팬", "매우 나쁜 조건의 스테이지", "대형 프로덕션의 시찰", "드레스 디자이너의 품평", "신곡을 제공한 뮤지션", "취재하러 온 예능기자"]; - return self.$textFrom1D6Table(title, table);} - else if ("TPT"['$===']($case)) { - title = "라이브 시어터 프레셔 종류 결정표"; - table = ["라이브 시어터에 매일 와주는 팬", "라이브 시어터에서 일하는 스텝", "시어터 경영자의 시찰", "시어터에 우연히 들린 많은 관객", "병행으로 행해지는 이벤트의 팬", "라이벌 시어터의 아이돌 유닛"]; - return self.$textFrom1D6Table(title, table);} - else if ("CPT"['$===']($case)) { - title = "아이돌 부 프레셔 종류 결정표"; - table = ["라이벌 팀 「카이와라교」의 도전", "최강 팀 「Tiara's」의 정찰", "학부모 교사 협회(PTA)의 시찰", "PC의 부모", "친한 동급생", "라이벌 팀 「성 국제 여학원」의 도전"]; - return self.$textFrom1D6Table(title, table);} - else if ("BIT"['$===']($case)) { - title = "대형 예능 프로덕션 도구표"; - table = ["영양 드링크", "자동 판매기", "선배 아이돌의 포스터", "선배 아이돌의 CD", "아이돌 잡지", "대본"]; - return self.$textFrom1D6Table(title, table);} - else if ("LIT"['$===']($case)) { - title = "약소 예능 프로덕션 도구표"; - table = ["셀로판 테이프", "냉장고", "백엔 동전", "너덜너덜한 소파", "주먹밥", "키친"]; - return self.$textFrom1D6Table(title, table);} - else if ("TIT"['$===']($case)) { - title = "라이브 시어터 도구표"; - table = ["무대의 조명", "기획서", "PC의 굿즈", "화이트 보드", "라이브 포스터", "우동"]; - return self.$textFrom1D6Table(title, table);} - else if ("CIT"['$===']($case)) { - title = "아이돌 부 도구표"; - table = ["퍼스널 컴퓨터", "책상", "가방", "핸드 카메라", "저지", "투표함"]; - return self.$textFrom1D6Table(title, table);}; - return nil; - }, $BeginningIdol_Korean_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$rollPerformance', $BeginningIdol_Korean_rollPerformance$5 = function $$rollPerformance(counts, residual, adjust) { - var $$6, $a, self = this, title = nil, string = nil, result = nil, diceAll = nil, total = nil, diceUse = nil, text = nil; - - - title = "パフォーマンス"; - string = ""; - if ($truthy($rb_gt(adjust, 0))) { - string = $rb_plus(string, "+")}; - if (adjust['$=='](0)) { - } else { - string = $rb_plus(string, adjust.$to_s()) - }; - result = self.$roll(counts, 6, 1); - diceAll = $rb_plus(result['$[]'](1).$delete(","), residual); - total = 0; - diceUse = []; - $send($range(1, 7, false), 'each', [], ($$6 = function(i){var self = $$6.$$s || this; - - - - if (i == null) { - i = nil; - }; - if (diceAll.$count(i.$to_s())['$=='](1)) { - - total = $rb_plus(total, i); - return diceUse.$push(i); - } else { - return nil - };}, $$6.$$s = self, $$6.$$arity = 1, $$6)); - text = $rb_plus($rb_plus(" > [", result['$[]'](1)), "]"); - if ($truthy(residual['$empty?']())) { - text = "" + (title) + (text) - } else { - text = "" + "シンフォニー" + (text) - }; - if ($truthy(residual['$empty?']())) { - } else { - text = $rb_plus(text, $rb_plus($rb_plus(",[", residual.$split("").$sort().$join(",")), "]")) - }; - text = $rb_plus(text, "" + (string) + " > "); - if (total['$=='](0)) { - if ($truthy(residual['$empty?']())) { - - total = $rb_plus(10, adjust); - text = $rb_plus(text, "" + "【ミラクル】" + (total)); - } else { - - total = $rb_plus(15, adjust); - text = $rb_plus(text, "" + "【ミラクルシンクロ】" + (total) + "+シンフォニーを行った人数"); - } - } else if ($truthy(($truthy($a = total['$=='](21)) ? diceUse['$include?'](7)['$!']() : $a))) { - - if ($truthy(residual['$empty?']())) { - } else { - text = $rb_plus(text, $rb_plus($rb_plus("[", diceUse.$join(",")), "" + "]" + (string) + " > ")) - }; - total = $rb_plus(30, adjust); - text = $rb_plus(text, "" + "【パーフェクトミラクル】" + (total)); - } else { - - if ($truthy(($truthy($a = residual['$empty?']()) ? diceUse.$count()['$=='](diceAll.$length()) : $a))) { - } else { - text = $rb_plus(text, $rb_plus($rb_plus("[", diceUse.$join(",")), "" + "]" + (string) + " > ")) - }; - total = $rb_plus(total, adjust); - text = $rb_plus(text, total.$to_s()); - }; - return text; - }, $BeginningIdol_Korean_rollPerformance$5.$$arity = 3); - - Opal.def(self, '$textFromD66Table', $BeginningIdol_Korean_textFromD66Table$7 = function $$textFromD66Table(title, table, chance) { - var $a, $b, self = this, isSwap = nil, dice = nil, number = nil, text = nil, skill = nil; - - - - if (chance == null) { - chance = ""; - }; - isSwap = true; - dice = self.$getD66(isSwap); - $b = table.$assoc(dice), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (skill = ($a[2] == null ? nil : $a[2])), $b; - $b = self.$checkChance(text, skill, chance), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (skill = ($a[1] == null ? nil : $a[1])), $b; - return $rb_plus($rb_plus("" + (title) + " > [" + (number) + "] > ", self.$replaceBadStatus(text)), self.$getSkillText(skill)); - }, $BeginningIdol_Korean_textFromD66Table$7.$$arity = -3); - - Opal.def(self, '$checkChance', $BeginningIdol_Korean_checkChance$8 = function $$checkChance(text, skill, chance) { - var $a, self = this, target = nil, matchedText = nil; - - - if ($truthy(chance['$empty?']())) { - return [text, skill]}; - if ($truthy(/チャンスが(\d{1,2})以下なら오프。/['$==='](text))) { - } else { - return [text, skill] - }; - target = $$($nesting, 'Regexp').$last_match(1).$to_i(); - matchedText = (($a = $gvars['~']) === nil ? nil : $a['$[]'](0)); - if ($truthy($rb_ge(target, chance.$to_i()))) { - - text = "오프"; - skill = ""; - } else { - - text = text.$sub(matchedText, ""); - text = text.$chomp(); - }; - return [text, skill]; - }, $BeginningIdol_Korean_checkChance$8.$$arity = 3); - - Opal.def(self, '$textFrom1D6Table', $BeginningIdol_Korean_textFrom1D6Table$9 = function $$textFrom1D6Table(title, table1, table2) { - var $a, $b, $$10, self = this, text1 = nil, number1 = nil, text = nil, text2 = nil, number2 = nil, category = nil; - - - - if (table2 == null) { - table2 = nil; - }; - $b = self.$get_table_by_1d6(table1), $a = Opal.to_ary($b), (text1 = ($a[0] == null ? nil : $a[0])), (number1 = ($a[1] == null ? nil : $a[1])), $b; - text = "" + (title) + " > "; - if ($truthy(table2['$nil?']())) { - text = $rb_plus(text, "" + "[" + (number1) + "] > " + (text1)) - } else { - - $b = self.$get_table_by_1d6(table2), $a = Opal.to_ary($b), (text2 = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - text = $rb_plus(text, "" + "[" + (number1) + "," + (number2) + "] > " + (text1) + (text2)); - }; - if ($truthy(/랜덤으로 지정한 특기가 지정 특기인 아이돌 스킬\(신장분야、(속성|재능)분야、출신분야가 나올경우 재굴림\)$/['$=~'](text))) { - - category = $$($nesting, 'Regexp').$last_match(1); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$10 = function(){var self = $$10.$$s || this, $c, $d, skill = nil; - - - skill = self.$getSkillList(); - text = $rb_plus(text, "" + "\n" + (skill)); - if ($truthy(($truthy($c = ($truthy($d = skill['$include?']("신장")) ? $d : skill['$include?'](category))) ? $c : skill['$include?']("출신")))) { - } else { - - Opal.brk(nil, $brk) - }; - return (text = $rb_plus(text, " > 振り直し"));}, $$10.$$s = self, $$10.$$brk = $brk, $$10.$$arity = 0, $$10)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();}; - return self.$replaceBadStatus(text); - }, $BeginningIdol_Korean_textFrom1D6Table$9.$$arity = -3); - - Opal.def(self, '$getSkillList', $BeginningIdol_Korean_getSkillList$11 = function $$getSkillList(field) { - var $a, $b, self = this, title = nil, table = nil, number1 = nil, fieldName = nil, skill = nil, number2 = nil, text = nil; - - - - if (field == null) { - field = 0; - }; - title = "特技リスト"; - table = [["신장", ["~125", "131", "136", "141", "146", "156", "166", "171", "176", "180", "190~"]], ["속성", ["에스닉", "다크", "섹시", "페미닌", "큐트", "플레인", "패션", "팝", "버닝", "쿨", "스타"]], ["재능", ["이국문화", "스타일", "집중력", "담력", "체력", "미소", "운동신경", "배려", "학력", "기품", "연기력"]], ["캐릭터", ["중2병", "신비", "마이페이스", "유순", "말버릇", "캐릭터분야의 공백", "건강", "외고집", "언행정중", "덜렁이", "바보"]], ["취미", ["오컬트", "펫", "스포츠", "멋내기", "요리", "취미분야의 공백", "쇼핑", "댄스", "ゲーム", "음악", "아이돌"]], ["출신", ["오키나와", "큐슈", "시코쿠", "주코쿠", "킨키", "주부", "간토", "호쿠리쿠", "도호쿠", "훗카이도", "해외"]]]; - number1 = 0; - if (field['$=='](0)) { - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (table = ($a[0] == null ? nil : $a[0])), (number1 = ($a[1] == null ? nil : $a[1])), $b - } else { - table = table['$[]']($rb_minus(field, 1)) - }; - $b = table, $a = Opal.to_ary($b), (fieldName = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (skill = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - text = title; - if (field['$=='](0)) { - text = $rb_plus(text, "" + " > [" + (number1) + "," + (number2) + "]") - } else { - text = $rb_plus(text, "" + "(" + (fieldName) + "분야) > [" + (number2) + "]") - }; - return "" + (text) + " > 《" + (skill) + "/" + (fieldName) + (number2) + "》"; - }, $BeginningIdol_Korean_getSkillList$11.$$arity = -1); - - Opal.def(self, '$badStatus', $BeginningIdol_Korean_badStatus$12 = function $$badStatus(counts) { - var $$13, self = this, title = nil, table = nil, result = nil, numbers = nil, text = nil, occurrences = nil; - - - - if (counts == null) { - counts = 1; - }; - title = "변조"; - table = ["「불온한 공기」 PC의 【멘탈】이 감소할 때, 감소하는 수치가 1점 상승한다.", "「미묘한 거리감」 【이해도】가 상승하지 않게 된다.", "「유리의 마음」 PC의 펌블치가 1점 상승한다.", "「부상」 막간 때, 프로듀서는 「회상」만 실시할 수 있다.", "「믿지 못하는」 PC전원의 【이해도】를 1점 낮은 것으로 취급한다.", "「엇갈림」 PC는 아이템 사용과 리절트 페이즈에 「부탁」을 할 수 없게 된다."]; - if ($truthy($rb_le(counts, 0))) { - return ""}; - result = self.$roll(counts, 6, 1); - numbers = result['$[]'](1).$split(",").$uniq(); - text = $rb_plus($rb_plus("" + (title) + " > [", result['$[]'](1)), "] > "); - occurrences = numbers.$count(); - if ($truthy($rb_gt(occurrences, 1))) { - text = $rb_plus(text, "" + "以下の" + (occurrences) + "つが発生する。\n")}; - $send(occurrences, 'times', [], ($$13 = function(i){var self = $$13.$$s || this; - - - - if (i == null) { - i = nil; - }; - return (text = $rb_plus(text, $rb_plus(table['$[]']($rb_minus(numbers['$[]'](i).$to_i(), 1)), "\n")));}, $$13.$$s = self, $$13.$$arity = 1, $$13)); - return text['$[]'](0, $rb_minus(text.$length(), 1)); - }, $BeginningIdol_Korean_badStatus$12.$$arity = -1); - - Opal.def(self, '$getSkillText', $BeginningIdol_Korean_getSkillText$14 = function $$getSkillText(skill) { - var $a, self = this, text = nil; - - - if ($truthy(($truthy($a = skill['$nil?']()) ? $a : skill['$empty?']()))) { - return ""}; - text = skill; - if ($truthy(/^AT([1-6]?)$/['$=~'](text))) { - text = self.$getSkillList($$($nesting, 'Regexp').$last_match(1).$to_i()) - } else { - text = "" + "特技 : " + (text) - }; - return "" + "\n" + (text); - }, $BeginningIdol_Korean_getSkillText$14.$$arity = 1); - - Opal.def(self, '$setArrayFromD66Table', $BeginningIdol_Korean_setArrayFromD66Table$15 = function $$setArrayFromD66Table(array, name, src, table) { - var $a, $b, self = this, index = nil, isSwap = nil, dice = nil, number = nil, text = nil; - - - index = name.$index(src); - if ($truthy(index['$nil?']())) { - return nil}; - isSwap = true; - dice = self.$getD66(isSwap); - $b = table.$assoc(dice), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), $b; - return array.$push([index, src, text, number]); - }, $BeginningIdol_Korean_setArrayFromD66Table$15.$$arity = 4); - - Opal.def(self, '$getItem', $BeginningIdol_Korean_getItem$16 = function $$getItem(counts) { - var $$17, self = this, title = nil, table = nil, result = nil, numbers = nil, unique = nil, text = nil, acquisitions = nil, kinds = nil; - - - - if (counts == null) { - counts = 1; - }; - title = "アイテム"; - table = ["スタミナドリンク", "トレーニングウェア", "ドリーミングシューズ", "캐릭터アイテム", "お菓子", "差し入れ"]; - if ($truthy($rb_le(counts, 0))) { - return ""}; - result = self.$roll(counts, 6, 1); - numbers = result['$[]'](1).$split(","); - unique = numbers.$uniq(); - text = $rb_plus($rb_plus("" + (title) + " > [", result['$[]'](1)), "] > "); - acquisitions = numbers.$count(); - kinds = unique.$count(); - $send(kinds, 'times', [], ($$17 = function(i){var self = $$17.$$s || this, string = nil; - - - - if (i == null) { - i = nil; - }; - string = table['$[]']($rb_minus(unique['$[]'](i).$to_i(), 1)); - if (kinds['$=='](1)) { - } else { - string = "" + "「" + (string) + "」" - }; - text = $rb_plus(text, string); - if (acquisitions['$=='](kinds)) { - } else { - text = $rb_plus(text, $rb_plus(numbers.$count(unique['$[]'](i)).$to_s(), "つ")) - }; - return (text = $rb_plus(text, "と"));}, $$17.$$s = self, $$17.$$arity = 1, $$17)); - text = text.$sub(/と$/, ""); - return text; - }, $BeginningIdol_Korean_getItem$16.$$arity = -1); - - Opal.def(self, '$replaceBadStatus', $BeginningIdol_Korean_replaceBadStatus$18 = function $$replaceBadStatus(text) { - var $a, self = this, counts = nil, $case = nil, substitution = nil; - - - if ($truthy(/変調がランダムに(一|二|三)つ発生する。/['$=~'](text))) { - } else { - return text - }; - counts = 1; - $case = $$($nesting, 'Regexp').$last_match(1); - if ("二"['$===']($case)) {counts = 2} - else if ("三"['$===']($case)) {counts = 3}; - substitution = text.$clone(); - substitution = substitution.$gsub((($a = $gvars['~']) === nil ? nil : $a['$[]'](0)), ""); - if ($truthy(($truthy($a = substitution['$empty?']()) ? $a : /\n$/['$=~'](substitution)))) { - } else { - substitution = $rb_plus(substitution, "\n") - }; - return $rb_plus(substitution, self.$badStatus(counts)); - }, $BeginningIdol_Korean_replaceBadStatus$18.$$arity = 1); - return (Opal.def(self, '$costume', $BeginningIdol_Korean_costume$19 = function $$costume(title, brandOnly) { - var self = this, table = nil, text = nil; - - - - if (brandOnly == null) { - brandOnly = false; - }; - table = []; - if ($truthy(title['$include?']("의상(챌린지 걸즈)"))) { - table = [[11, "12&88\n자신의 【퍼포먼스치】가 결정되었을 때, 그 값을 2점 상승한다."], [12, "Glow Up Princess\n퍼포먼스를 할 때 주사위를 추가로 1개 더 굴린다."], [13, "시즈쿠\n라이브페이즈 개시 시 【멘탈】이 5점 상승한다."], [14, "Pop☆Sweet\n자신의 【멘탈】이 상승할 때 추가로 1점 더 상승한다."], [15, "Ttype\n단기돌파 시 【멘탈】이 감소하지 않는다. 또한 단기돌파를 할 때 달성치가 1점 상승한다."], [16, "Vampire Story\n퍼포먼스의 【퍼포먼스치】가 10이상일 경우, 자신의 【멘탈】이 3점 상승한다."], [22, "Pure Mermaid\n【비주얼】 공연 중 지정 특기를 《스타일》로 변경할 수 있다. 지정 특기가 《스타일》인 공연에서는 【퍼포먼스치】가 2점 상승한다."], [23, "I'm cute\n라이브 페이즈 개시 시 【멘탈】이 1점 상승한다. 막간 개시 시 능력치를 1개 선택한다. 선택된 능력치는 이 라이브 페이즈 간에 1점 상승한다."], [24, "No.1 Girl\n【퍼포먼스치】가 결정될 때 【멘탈】을 1점 감소시키고 【퍼포먼스치】가 3점 상승한다."], [25, "Final Romance\n【비주얼】 퍼포먼스를 실시할 때 캐릭터를 1인 선택한다. 선택한 캐릭터의 자신에 대한 【이해도】와 같은 【퍼포먼스치】가 상승한다."], [26, "Prism Line\n퍼포먼스 1회에 1번만 퍼포먼스에 사용한 주사위 1개를 다시 굴릴 수 있다."], [33, "서번트 서비스\n심포니를 할 때마다 그 퍼포먼스 스의 【퍼포먼스치】가 3점 상승한다."], [34, "Travel Bag\n막간에 자신의 【이해도】 체크 1개를 해제할 수 있다."], [35, "JewelC\n개막공연과 막간에 아이템을 1개 선택해 획득한다."], [36, "Sweet Girl\n퍼포먼스를 실시한 PC는 【멘탈】이 2점 상승한다."], [44, "Satisfaction West\n미라클, 미라클 싱크로, 퍼펙트 미라클이 발생했을 때 【퍼포먼스치】가 5점 상승한다."], [45, "Under Big Ben\n사용 능력이 【보이스】인 퍼포먼스의 【퍼포먼스치】가 10이상인 경우 자신에 대한 【이해도】 체크 1개를 해제할 수 있다."], [46, "PIERO\n단기돌파의 달성치가 2점 상승한다."], [55, "캉캉냥냥\n사용 능력이 【비주얼】인 퍼포먼스를 실시 할 때 【퍼포먼스치】가 3점 상승한다."], [56, "화조풍월\n심포니를 실시할 때 굴리는 주사위의 수를 1개 늘린다, 혹은 1개 줄일 수 있다."], [66, "Jingle Bells\n리절트페이즈에서 이하의 효과가 발생한다. 리절트페이즈에서 【획득 팬 인원수】가 1D6점 상승한다. 또 PC전원은 조건을 채우지 않아도 「부탁」을 할 수 있다."]] - } else if ($truthy(title['$include?']("의상(로드 투 프린스)"))) { - table = [[11, "Angel kiss\n퍼포먼스를 할 때 1의 눈이 나온 주사위는 제거되지 않는다. 심포니를 실시했을 때, 1의 눈이 나온 주사위는 제거한다."], [12, "Pirate ship\n공연목록에서 지정특기가 속성 분야일 경우 그 지정특기를 《섹시/속성4》로 변경할 수 있다."], [13, "로드 투 프린스\n미러클 ・ 미라클 싱크로 ・ 퍼펙트 미라클・ 퍼펙트 미라클 싱크로가 발생했을 때, 그 캐릭터는 【멘탈】이 10점 상승한다."], [14, "Princess Guardian\n자신 이외의 캐릭터가 【멘탈】이 o점이 되었을 때, 《배려/재능9》로 판정을 한다. 이 판정에 개성특기는 사용할 수 없다. 성공한다면 그 캐릭터는 [획득 팬 인원수]가 반감 되지 않는다."], [15, "Starlight TourS\n라이브 페이즈 간에, 공연 목록을 1개 선택하고, 지정특기를 《스타/속성12》로 변경할 수 있다."], [16, "화조풍월•속편\n라이프 페이즈 중, 한 번 남아있는 모든 주사위의 눈을 재반전(1이라면 4, 2라면 5, 3이라면 6으로)할 수 있다."], [22, "시쿠라마\n판정에 사용한 주사위의 값이 7인 경우 【멘탈】이 7점 상승한다."], [23, "Chime\n미러클 ・ 미라클 싱크로 ・ 퍼펙트 미라클・ 퍼펙트 미라클 싱크로가 발생했을 때, 그 캐릭터는 랜덤으로 아이템 1개를 얻는다."], [24, "사상지광\n심포니를 할 때 심포니를 받은 캐릭터의 【멘탈】이 5점상승한다."], [25, "Air by me\n막간 개시 시 【멘탈】이 5점 상승한다."], [26, "전국 스트리트\n공연목록의 사용 능력이 【피지컬】이면 【퍼포먼스치】가 2점 상승한다. 또한 지정 특기가 《댄스/취미 9》일 경우, 【퍼포먼스치】가 2점 상승한다."], [33, "Wild man\n단기돌파의 달성치가 2점 상승한다. 다만, 스페셜은 발생하지 않는다."], [34, "Gray Stand\n【획득 팬 인원수】가 감소했을 때, 감소한 값의 반(소수점이하 버림)과 같은 값의 【획득 팬 인원수】가 상승한다."], [35, "토이ARM\n공연을 개시할 때, 2D6을 굴린다. 그 결과가 11이상이면, 이 공연에서는 【멘탈】이 감소하지 않는다,"], [36, "white plan\n펌블이 발생해도 변조를 받지 않는다.。"], [44, "SINOBI\n개막 공연을 실시할 때, 나오지 않는 의상을 선택할 수 있다.."], [45, "V-X\n미라클이 발생하면 퍼포먼스치를 15로 할 수 있다."], [46, "드래곤 너클\n막간 후에, PC가 행하는 퍼포먼스의 【퍼포먼스치】가 4점 상승한다."], [55, "Halloween Magic\n후반PP로 【멘탈】이 감소할 때, 그 값을 4점 감소시킨다. (최저 0)"], [56, "Satisfaction East\n【획득 팬 인원수】가 감소하게 되면 【멘탈】을 20점으로 할 수 있다."], [66, "Devil kiss\n퍼포먼스를 할 때 6의 눈이 나온 주사위는 제거되지 않는다. 심포니를 실시했을 때, 6의 눈이 나온 주사위는 제거한다."]] - } else if ($truthy(title['$include?']("フォーチュンスターズ"))) { - table = [[11, "常峰製作所\n第一演目では、【メンタル】が減少しない。"], [12, "フォーチュンスター\n最終演目の【パフォーマンス値】が「【メンタル】÷2(端数切り捨て)」点上昇する。"], [13, "ファイタースケイル\n【メンタル】が5点以下の場合、【パフォーマンス値】が1D6点上昇する。"], [14, "Blood Scissors\n自分以外のキャラクター一人の【メンタル】を5点減少するか、プロデューサーに変調「怪我」を与えることで、自分の【メンタル】が5点上昇する。この効果は、プロデューサーが既に「怪我」の変調を受けていると、使用できない。"], [15, "蒸気式演技服\n判定を行うとき、【メンタル】を1点消費することで、判定の達成値が1点上昇する。"], [16, "ウェイトスター\n「スタミナドリンク」によって、他のキャラクターの【メンタル】を上昇する場合、さらに4点上昇する。"], [22, "Little Stage\n判定のサイコロやパフォーマンスで「1」の出目が1つ以上出た場合、【思い出】を1つ獲得する。"], [23, "Check It\n開幕演目前に、最終演目以外の好きな演目を指定する。指定された演目では、自分の【メンタル】が減少しない。"], [24, "12 Sword\nアイドル戦闘ルールを使用しているとき、与えるダメージが3点上昇し、上昇する【獲得ファン人数】が5点上昇する。"], [25, "Magi Magic\nパフォーマンスや自分が行うシンフォニーでサイコロを取り除くたびに、【メンタル】が2点上昇する。"], [26, "Jokers\n最終演目に行う一芸突破の目標値が3点減少する。"], [33, "Papillon Club\n自分以外のキャラクターがタイプが「補助」のアイドルスキルを使用するたびに、【メンタル】が3点上昇する。"], [34, "ネイキッドチャレンジ\n開幕演目開始時に、【メンタル】が5点減少する。このライブフェイズの間、好きな能力値が3点上昇する。"], [35, "Cold Vivit\n好きなギャップを1つ埋める。このギャップは、ライブフェイズ終了時に元に戻る。"], [36, "対魔絶伏\n特別な演目では、【メンタル】が減少しない。"], [44, "Rescue Power\n演目の判定でファンブルが発生した場合、好きな能力値でパフォーマンスを行うことができる。"], [45, "アニマルエンジン\n幕間の終了時に、好きな動物からの【理解度】が2点上昇する。"], [46, "ふわふわキッチン\n好きなときに、「お菓子」を一つ消費することで、好きなキャラクターの【メンタル】が1D6点上昇できる。また、幕間に「お菓子」を1つ獲得する。"], [55, "Night Talk\n幕間で「信用」を行ったとき、上昇する【メンタル】が10点になる。"], [56, "ティーチングタイム\n自分以外のキャラクターを1人指定する。このライブフェイズの間、指定されたPCの能力値が1点上昇する。"], [66, "See Diver\n演目名に「海」「水」「泡」「湖」「風呂」を含む演目を行った場合、【獲得ファン人数】が1D6点上昇する。"]] - } else { - return nil - }; - text = self.$textFromD66Table(title, table); - if ($truthy(brandOnly)) { - text = text.$split("\n").$first()}; - return text; - }, $BeginningIdol_Korean_costume$19.$$arity = -2), nil) && 'costume'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/BladeOfArcana.js b/src/assets/dicebot/BladeOfArcana.js deleted file mode 100644 index f25960ed3..000000000 --- a/src/assets/dicebot/BladeOfArcana.js +++ /dev/null @@ -1,170 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$upcase', '$===', '$to_i', '$last_match', '$!=', '$empty?', '$!', '$==', '$rollAct', '$tableText', '$<', '$<=', '$>', '$-', '$roll', '$min', '$map', '$split', '$to_proc', '$+', '$>=', '$[]']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BladeOfArcana'); - - var $nesting = [self].concat($parent_nesting), $BladeOfArcana_initialize$1, $BladeOfArcana_rollDiceCommand$2, $BladeOfArcana_rollAct$3, $BladeOfArcana_tableText$4; - - - Opal.const_set($nesting[0], 'ID', "BladeOfArcana"); - Opal.const_set($nesting[0], 'NAME', "ブレイド・オブ・アルカナ"); - Opal.const_set($nesting[0], 'SORT_KEY', "ふれいとおふあるかな"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "■行為判定 nA[m][Cx][Fy]\n" + " n:ダイス数  m:判定値(省略時はクリティカル値と同じ)\n" + " x:クリティカル値(省略時は1)  y:ファンブル値(省略時は20)\n" + " 注)[m]、[Cx]、[Fy]は省略可能。\n" + "  例)3A12C4F15→3個振り12以下で成功。C値4、F値は15。\n" + "  例)3A12→3個振り12以下で成功。C値1、F値は20。\n" + "\n" + "■各種表 (+:出目2~21に変更 -:出目0~19に変更)\n" + "●リインカーネイション\n" + " 因縁表 CTR[+/-]  前世邂逅表 DJV[-]\n" + " 悪徳シーン表 AKST[+/-]\n" + "●The 3rd(第三版)\n" + " 因縁表 CT3[+/-]\n" + " 注)[]内は省略可能。\n" + "  例)CTR→因縁表(R版)を出目1~20でロールする。\n" + "  例)CTR+→因縁表(R版)を出目2~21でロールする。\n"); - self.$setPrefixes(["\\d+A\\d*[CF]?\\d*[CF]?\\d*", "CT3[\\+\\-]?", "CTR[\\+\\-]?", "DJV\\-?", "AKST[\\+\\-]?"]); - - Opal.def(self, '$initialize', $BladeOfArcana_initialize$1 = function $$initialize() { - var $iter = $BladeOfArcana_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $BladeOfArcana_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $BladeOfArcana_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.sortType = 1); - }, $BladeOfArcana_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $BladeOfArcana_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, $b, self = this, $case = nil, counts = nil, judgment = nil, option1 = nil, argument1 = nil, option2 = nil, argument2 = nil, critical = nil, fumble = nil, sign = nil, title = nil, table = nil; - - - $case = command.$upcase(); - if (/^(\d+)A(\d*)([CF]?)(\d*)([CF]?)(\d*)$/['$===']($case)) { - counts = $$($nesting, 'Regexp').$last_match(1).$to_i(); - judgment = $$($nesting, 'Regexp').$last_match(2).$to_i(); - option1 = $$($nesting, 'Regexp').$last_match(3); - argument1 = $$($nesting, 'Regexp').$last_match(4); - option2 = $$($nesting, 'Regexp').$last_match(5); - argument2 = $$($nesting, 'Regexp').$last_match(6); - if ($truthy(($truthy($a = ($truthy($b = option1['$empty?']()['$!='](argument1['$empty?']())) ? $b : option2['$empty?']()['$!='](argument2['$empty?']()))) ? $a : ($truthy($b = option2['$empty?']()['$!']()) ? option1['$=='](option2) : $b)))) { - return nil}; - if (option1['$==']("C")) { - - critical = argument1.$to_i(); - fumble = argument2.$to_i(); - } else { - - critical = argument2.$to_i(); - fumble = argument1.$to_i(); - }; - return self.$rollAct(counts, judgment, critical, fumble);} - else if (/^CT3([\+\-]?)$/['$===']($case)) { - sign = $$($nesting, 'Regexp').$last_match(1); - title = "因縁表(The 3rd) 『BoA3』P292"; - table = ["【他生】", "【師弟】", "【忘却】", "【兄姉】", "【貸し】", "【慕情】", "【主従】", "【強敵】", "【秘密】", "【恩人】", "【告発】", "【友人】", "【仇敵】", "【父母】", "【借り】", "【信頼】", "【幼子】", "【取引】", "【地縁】", "【同志】", "【不審】", "【自身】"]; - return self.$tableText(title, table, sign);} - else if (/^CTR([\+\-]?)$/['$===']($case)) { - sign = $$($nesting, 'Regexp').$last_match(1); - title = "因縁表(リインカーネイション) 『BAR』P51、299"; - table = ["【他生】", "【師弟】", "【忘却】", "【兄姉】", "【貸し】", "【憧憬】", "【主従】", "【強敵】", "【秘密】", "【恩人】", "【取引】", "【友人】", "【怨敵】", "【後援】", "【借り】", "【信頼】", "【弟妹】", "【商売】", "【奇縁】", "【同志】", "【有為】", "【自身】"]; - return self.$tableText(title, table, sign);} - else if (/^DJV(\-?)$/['$===']($case)) { - sign = $$($nesting, 'Regexp').$last_match(1); - title = "前世邂逅表(デジャブ) 『BAR』P235"; - table = ["【鮮烈な風】\n風は懐かしい匂いを、香りを運んでくる。それは……。", "【薄暗い影】\nまるで時が止まってしまっているかのようだ。", "【操りの糸】\nそれはあなたを導く蜘蛛の糸。", "【天上の光】\n偉大なるものがもたらす、天上からの御しるし。", "【温もり】\n春のひなたのような温かさを感じる。", "【鋭いナイフ】\n鋭いナイフのような視線を感じる。これは……。", "【共鳴】\n同じ感覚を感じる、ふたりは通じ合っている。", "【城壁】\n厳しく高い城壁のように重く堅く厚い。", "【砕ける器】\n落ちれば砕ける。砕ければそれは器ではない。", "【陽炎】\n求めれば揺らいで消える。", "【終わりなき円環】\nそれはあなたを捉え巡る輪廻の輪。", "【天秤】\n揺れるバランス、揺れ続ける安定。", "【流れる水】\nひとつ所にとどまらず、姿を固めることはない", "【光る刃】\n鋭く光る刃のような、鋭いまなざし。", "【悪魔】\nあまりにも危険な魅力、それは悪魔的だった。", "【牙】\n獲物を引き裂く鋭く長い、牙。", "【輝く星】\n星は暗く小さい。だがそこに輝く。", "【冴え渡る月光】\n冷たさと安らかさが同居している。", "【照りつける太陽】\n暑い。", "【燃えさかる炎】\n炎はすべてを破壊し、すべてを滅ぼす。", "【世界】\nすべてはこの世界の中で起こり、終わる。", "【なし】"]; - return self.$tableText(title, table, sign);} - else if (/^AKST([\+\-]?)$/['$===']($case)) { - sign = $$($nesting, 'Regexp').$last_match(1); - title = "悪徳シーン表 『GoV』P16、164"; - table = ["▼ウェントス/止まない風\n【行動】殺戮者の狂気に当てられたのか、通り魔的殺人者が現れる。切り裂かれた人々の悲鳴が響き渡る。", "▼エフェクトス/原初の力\n【行動】殺戮者の配下が無法を働く。店先で金品を要求したり、暴力を振るったりしている。", "▼クレアータ/傀儡人形の王\n【行動】殺戮者の配下が人々の行動を監視している。違反した者には即座に罰が与えられる。", "▼マーテル/生ける神\n【行動】殺戮者の配下が人々に殺戮者への信仰を告白し、忠誠を宣誓するように強要している。", "▼コロナ/簒奪者\n【行動】嘆き悲しんでいる者がいる。殺戮者によって、財産、地位、家族あるいは、恋人を奪い取られたという。", "▼フィニス/永遠の人\n【行動】怪物が人々を虐殺している。この地には人間が多すぎるのだという。それが彼らの主の決定だ。", "▼エルス/無私なる愛\n【行動】殺戮者の配下が略奪を働いている。どうやら、殺戮者に献上するものを争っているようだ。", "▼アダマス/万物の保護者\n【行動】反逆者と名指しされる。人々は君たちに接触しようとしない。情報を集めるにも苦労しそうだ。", "▼アルドール/終わりなき戦い\n【行動】ならず者の集団が人々を襲っている。力を示さなければ切り捨てられるのは彼らなのだ。", "▼ファンタスマ/謀略の渦\n【行動】人々は君を見るなり逃げ出した。どうやら恐ろしい殺人者だと思われているようだ。", "▼アクシス/真理の探究者\n【行動】殺戮者の配下の手によって、人々が連れ去られている。誰ひとりもどってこない。", "▼レクス/捕縛者\n【行動】殺戮者への恐怖に駆られた人々はその命令にしたがって徒党を組み、PCたちを捜索している。", "▼アクア/澱んだ水\n【行動】人々は獣のように生きている。言葉は通じない。有効なのは力、暴力だけだ。", "▼グラディウス/暗き死の刃\n【行動】殺戮者とその配下によって虐殺が行なわれている。見渡す限り、死者ばかりだ。", "▼アングルス/純白の恐怖\n【行動】遊びとして人間狩りが行なわれている。人々は逃げ惑い、殺戮者は愉悦に笑う。", "▼ディアボルス/悪魔の囁き\n【行動】殺戮者は少年少女を召し上げている。召し上げられた者たちは音信不通となってしまう。", "▼フルキフェル/裏切り者\n【行動】人々は猜疑の目で君を見る。嘘を吐くのが普通の場所で真実を見いだせるだろうか。", "▼ステラ/破滅への愛\n【行動】街や村落が破壊されている。焼け野原の中、人々は力なくうずくまる。ここには絶望だけがあった。", "▼ルナ/奪う者\n【行動】君たちの目の前に略奪が繰り返される。略奪のために略奪を行なう殺戮者の配下たち。", "▼デクストラ/邪悪な技\n【行動】殺戮者による非道な人体実験が繰り返されている。そのための実験材料が集められている。", "▼イグニス/根源たる炎\n【行動】街や集落、あるいは店舗や住宅が焼き討ちに合う。人々は互いに陥れ、磔刑が行なわれている。", "▼オービス/闇の鎖\n【行動】世界の完全なる破滅、人類の絶滅、無作為で広範囲な虐殺が行なわれる。"]; - return self.$tableText(title, table, sign);}; - return nil; - }, $BladeOfArcana_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$rollAct', $BladeOfArcana_rollAct$3 = function $$rollAct(counts, judgment, critical, fumble) { - var $a, $b, self = this, value = nil, string = nil, text = nil; - - - - if (judgment == null) { - judgment = 0; - }; - - if (critical == null) { - critical = 0; - }; - - if (fumble == null) { - fumble = 0; - }; - if ($truthy($rb_lt(critical, 1))) { - critical = 1}; - if ($truthy($rb_le(judgment, 0))) { - judgment = critical - } else if ($truthy($rb_gt(critical, judgment))) { - critical = judgment}; - if ($truthy($rb_le(fumble, 0))) { - fumble = 20}; - if ($truthy($rb_le(counts, 0))) { - - counts = 1; - fumble = $rb_minus(fumble, 5);}; - if ($truthy($rb_lt(fumble, 2))) { - fumble = 2 - } else if ($truthy($rb_gt(fumble, 20))) { - fumble = 20}; - $b = self.$roll(counts, 20, 1), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), (string = ($a[1] == null ? nil : $a[1])), $b; - text = "" + "(" + (counts) + "A" + (judgment) + "C" + (critical) + "F" + (fumble) + ") > " + (string) + " > "; - if (counts['$=='](1)) { - } else { - - value = $send(string.$split(","), 'map', [], "to_i".$to_proc()).$min(); - text = $rb_plus(text, "" + (value) + " > "); - }; - if ($truthy($rb_ge(value, fumble))) { - text = $rb_plus(text, "ファンブル") - } else if ($truthy($rb_le(value, critical))) { - text = $rb_plus(text, "クリティカル") - } else if ($truthy($rb_gt(value, judgment))) { - text = $rb_plus(text, "失敗") - } else { - text = $rb_plus(text, "成功") - }; - return text; - }, $BladeOfArcana_rollAct$3.$$arity = -2); - return (Opal.def(self, '$tableText', $BladeOfArcana_tableText$4 = function $$tableText(title, table, sign) { - var $a, $b, self = this, number = nil, index = nil, text = nil; - - - - if (sign == null) { - sign = ""; - }; - $b = self.$roll(1, 20), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - index = number; - if (sign['$==']("+")) { - index = $rb_plus(index, 1) - } else if (sign['$==']("-")) { - index = $rb_minus(index, 1)}; - text = "" + (title) + " > " + (index); - if ($truthy(sign['$empty?']())) { - } else { - text = $rb_plus(text, "" + "[" + (number) + (sign) + "1]") - }; - return $rb_plus($rb_plus(text, " > "), table['$[]'](index)); - }, $BladeOfArcana_tableText$4.$$arity = -3), nil) && 'tableText'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/BlindMythos.js b/src/assets/dicebot/BlindMythos.js deleted file mode 100644 index c6335b680..000000000 --- a/src/assets/dicebot/BlindMythos.js +++ /dev/null @@ -1,431 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2; - - Opal.add_stubs(['$debug', '$judgeRoll', '$nil?', '$reRoll', '$getRulingPlanetDiceCommandResult', '$getDurtyTableCommandReuslt', '$getTableCommandResult', '$=~', '$!', '$last_match', '$to_i', '$+', '$getRollResult', '$getTotalResultMessageText', '$collect', '$split', '$each', '$empty?', '$>', '$size', '$each_with_index', '$==', '$-', '$roll', '$getSuccessResultText', '$find_all', '$>=', '$<<', '$getSameDieList', '$join', '$count', '$inject', '$uniq', '$<=', '$length', '$===', '$getRulingPlanetDice', '$include?', '$changeRulingPlanetDice', '$*', '$ceil', '$/', '$[]', '$freeze', '$setPrefixes', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BlindMythos'); - - var $nesting = [self].concat($parent_nesting), $BlindMythos_rollDiceCommand$1, $BlindMythos_judgeRoll$2, $BlindMythos_reRoll$3, $BlindMythos_getRollResult$6, $BlindMythos_getTotalResultMessageText$12, $BlindMythos_getSameDieList$15, $BlindMythos_getSuccessResultText$18, $BlindMythos_getRulingPlanetDiceCommandResult$20, $BlindMythos_getRulingPlanetDice$23, $BlindMythos_changeRulingPlanetDice$24, $BlindMythos_getDurtyTableCommandReuslt$25; - - - Opal.const_set($nesting[0], 'ID', "BlindMythos"); - Opal.const_set($nesting[0], 'NAME', "ブラインド・ミトスRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "ふらいんとみとすRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定:BMx@y>=z、BMSx@y>=z\n" + "  x:スキルレベル\n" + "  y:目標難易度(省略可。デフォルト4)\n" + "  z:必要成功度\n" + " BMコマンドはダイスの振り足しを常に行い、\n" + " BMSは振り足しを自動では行いません。\n" + " 例)BM>=1 BM@3>=1 BMS2>=1\n" + "\n" + "・判定振り足し:ReRollx,x,x...@y>=1\n" + "  x:振るダイスの個数\n" + "  y:目標難易度(省略可。デフォルト4)\n" + "  z:必要成功度\n" + " 振り足しを自動で行わない場合(BMSコマンド)に使用します。\n" + "\n" + "・LE:失う感情表\n" + "・感情後遺症表 ESx\n" + " ESH:喜、ESA:怒、ESS:哀、ESP:楽、ESL:愛、ESE:感\n" + "・DT:汚染チャート\n" + "・RPxyz:守護星表チェック\n" + " xyz:守護星ナンバーを指定\n" + " 例)RP123 RP258\n"); - - Opal.def(self, '$rollDiceCommand', $BlindMythos_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $b, self = this, text = nil, isStop = nil; - - - self.$debug("rollDiceCommand Begin"); - text = self.$judgeRoll(command); - if ($truthy(text['$nil?']())) { - } else { - return text - }; - isStop = true; - $b = self.$reRoll(command, isStop), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy(text['$nil?']())) { - } else { - return text - }; - text = self.$getRulingPlanetDiceCommandResult(command); - if ($truthy(text['$nil?']())) { - } else { - return text - }; - text = self.$getDurtyTableCommandReuslt(command); - if ($truthy(text['$nil?']())) { - } else { - return text - }; - text = self.$getTableCommandResult(command, $$($nesting, 'TABLES')); - return text; - }, $BlindMythos_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$judgeRoll', $BlindMythos_judgeRoll$2 = function $$judgeRoll(command) { - var $a, $b, self = this, isStop = nil, skillRank = nil, judgeNumberText = nil, judgeNumber = nil, targetNumber = nil, message = nil, diceCount = nil, isReRoll = nil, text = nil, bitList = nil, successList = nil, countOneList = nil, canReRoll = nil; - - - if ($truthy(/^BM(S)?(\d*)(@(\d+))?>=(\d+)$/i['$=~'](command))) { - } else { - return nil - }; - isStop = $$($nesting, 'Regexp').$last_match(1)['$nil?']()['$!'](); - skillRank = $$($nesting, 'Regexp').$last_match(2).$to_i(); - judgeNumberText = $$($nesting, 'Regexp').$last_match(3); - judgeNumber = ($truthy($a = $$($nesting, 'Regexp').$last_match(4)) ? $a : 4).$to_i(); - targetNumber = ($truthy($a = $$($nesting, 'Regexp').$last_match(5)) ? $a : 1).$to_i(); - message = ""; - diceCount = $rb_plus(skillRank, 2); - isReRoll = false; - $b = self.$getRollResult([diceCount], judgeNumberText, judgeNumber, targetNumber, isReRoll, isStop), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (bitList = ($a[1] == null ? nil : $a[1])), (successList = ($a[2] == null ? nil : $a[2])), (countOneList = ($a[3] == null ? nil : $a[3])), (canReRoll = ($a[4] == null ? nil : $a[4])), $b; - message = $rb_plus(message, text); - message = $rb_plus(message, self.$getTotalResultMessageText(bitList, successList, countOneList, targetNumber, isStop, canReRoll)); - return message; - }, $BlindMythos_judgeRoll$2.$$arity = 1); - - Opal.def(self, '$reRoll', $BlindMythos_reRoll$3 = function $$reRoll(command, isStop) { - var $a, $$4, $$5, $b, self = this, rerollCountsText = nil, judgeNumberText = nil, judgeNumber = nil, targetNumber = nil, rerollCounts = nil, commandText = nil, message = nil, isReRoll = nil, text = nil, _bitList = nil, successList = nil, countOneList = nil; - - - self.$debug("ReRoll Begin", command); - if ($truthy(/^ReRoll([\d,]+)(@(\d+))?>=(\d+)$/i['$=~'](command))) { - } else { - return nil - }; - self.$debug("ReRoll pass"); - rerollCountsText = $$($nesting, 'Regexp').$last_match(1); - judgeNumberText = $$($nesting, 'Regexp').$last_match(2); - judgeNumber = ($truthy($a = $$($nesting, 'Regexp').$last_match(3)) ? $a : 4).$to_i(); - targetNumber = $$($nesting, 'Regexp').$last_match(4).$to_i(); - rerollCounts = $send(rerollCountsText.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - commandText = ""; - $send(rerollCounts, 'each', [], ($$5 = function(diceCount){var self = $$5.$$s || this; - - - - if (diceCount == null) { - diceCount = nil; - }; - if ($truthy(commandText['$empty?']())) { - } else { - commandText = $rb_plus(commandText, ",") - }; - return (commandText = $rb_plus(commandText, "" + "ReRoll" + (diceCount) + (judgeNumberText) + ">=" + (targetNumber)));}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - self.$debug("commandText", commandText); - message = ""; - if ($truthy($rb_gt(rerollCounts.$size(), 1))) { - if ($truthy(isStop)) { - message = $rb_plus(message, "" + "(" + (commandText) + ")")}}; - message = $rb_plus(message, "\n"); - isReRoll = true; - $b = self.$getRollResult(rerollCounts, judgeNumberText, judgeNumber, targetNumber, isReRoll, isStop), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (_bitList = ($a[1] == null ? nil : $a[1])), (successList = ($a[2] == null ? nil : $a[2])), (countOneList = ($a[3] == null ? nil : $a[3])), $b; - message = $rb_plus(message, text); - return [message, successList, countOneList, targetNumber]; - }, $BlindMythos_reRoll$3.$$arity = 2); - - Opal.def(self, '$getRollResult', $BlindMythos_getRollResult$6 = function $$getRollResult(rerollCounts, judgeNumberText, judgeNumber, targetNumber, isReRoll, isStop) { - var $$7, $a, $b, self = this, bitList = nil, successList = nil, countOneList = nil, rerollTargetList = nil, message = nil, rerollCommand = nil, canReRoll = nil, text = nil, successListTmp = nil, countOneListTmp = nil; - - - bitList = []; - successList = []; - countOneList = []; - rerollTargetList = []; - message = ""; - $send(rerollCounts, 'each_with_index', [], ($$7 = function(diceCount, index){var self = $$7.$$s || this, $a, $b, $$8, $$9, $$10, $$11, commandName = nil, commandText = nil, isSort = nil, _ = nil, diceText = nil, diceList = nil, success = nil, countOne = nil, resultText = nil, sameDiceList = nil, rerollText = nil; - - - - if (diceCount == null) { - diceCount = nil; - }; - - if (index == null) { - index = nil; - }; - if (index['$=='](0)) { - } else { - message = $rb_plus(message, "\n") - }; - commandName = "" + "ReRoll" + (diceCount); - if ($truthy(isReRoll)) { - } else if ($truthy(isStop)) { - commandName = "" + "BMS" + ($rb_minus(diceCount, 2)) - } else { - commandName = "" + "BM" + ($rb_minus(diceCount, 2)) - }; - commandText = "" + (commandName) + (judgeNumberText) + ">=" + (targetNumber); - isSort = 1; - $b = self.$roll(diceCount, 6, isSort), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceList = $send(diceText.$split(/,/), 'collect', [], ($$8 = function(i){var self = $$8.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$8.$$s = self, $$8.$$arity = 1, $$8)); - if ($truthy(isReRoll)) { - message = $rb_plus(message, " > ")}; - message = $rb_plus(message, "" + "(" + (commandText) + ") > " + (diceCount) + "D6[" + (diceText) + "] > "); - $b = self.$getSuccessResultText(diceList, judgeNumber), $a = Opal.to_ary($b), (success = ($a[0] == null ? nil : $a[0])), (countOne = ($a[1] == null ? nil : $a[1])), (resultText = ($a[2] == null ? nil : $a[2])), $b; - if ($truthy(isReRoll)) { - } else { - bitList = $rb_plus(bitList, $send(diceList, 'find_all', [], ($$9 = function(i){var self = $$9.$$s || this; - - - - if (i == null) { - i = nil; - }; - return $rb_ge(i, 4);}, $$9.$$s = self, $$9.$$arity = 1, $$9))) - }; - successList['$<<'](success); - countOneList['$<<'](countOne); - message = $rb_plus(message, resultText); - sameDiceList = self.$getSameDieList(diceList); - if ($truthy(sameDiceList['$empty?']())) { - return nil;}; - rerollText = ""; - $send(sameDiceList, 'each', [], ($$10 = function(list){var self = $$10.$$s || this; - - - - if (list == null) { - list = nil; - }; - if ($truthy(rerollText['$empty?']())) { - } else { - rerollText = $rb_plus(rerollText, ",") - }; - return (rerollText = $rb_plus(rerollText, list.$join("")));}, $$10.$$s = self, $$10.$$arity = 1, $$10)); - rerollTargetList['$<<']($send(sameDiceList, 'collect', [], ($$11 = function(i){var self = $$11.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$count();}, $$11.$$s = self, $$11.$$arity = 1, $$11)).$join(",")); - return (message = $rb_plus(message, "" + "、リロール[" + (rerollText) + "]"));}, $$7.$$s = self, $$7.$$arity = 2, $$7)); - rerollCommand = ""; - if ($truthy(rerollTargetList['$empty?']())) { - } else { - - rerollCommand = "" + "ReRoll" + (rerollTargetList.$join(",")) + (judgeNumberText) + ">=" + (targetNumber); - if ($truthy(isStop)) { - message = $rb_plus(message, "" + "\n > コマンド:" + (rerollCommand))}; - }; - canReRoll = rerollCommand['$empty?']()['$!'](); - if ($truthy(canReRoll)) { - if ($truthy(isStop)) { - } else { - - $b = self.$reRoll(rerollCommand, isStop), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (successListTmp = ($a[1] == null ? nil : $a[1])), (countOneListTmp = ($a[2] == null ? nil : $a[2])), $b; - message = $rb_plus(message, text); - successList = $rb_plus(successList, successListTmp); - countOneList = $rb_plus(countOneList, countOneListTmp); - }}; - return [message, bitList, successList, countOneList, canReRoll]; - }, $BlindMythos_getRollResult$6.$$arity = 6); - - Opal.def(self, '$getTotalResultMessageText', $BlindMythos_getTotalResultMessageText$12 = function $$getTotalResultMessageText(bitList, successList, countOneList, targetNumber, isStop, canReRoll) { - var $$13, $$14, $a, self = this, success = nil, countOne = nil, result = nil; - - - success = $send(successList, 'inject', [], ($$13 = function(sum, i){var self = $$13.$$s || this; - - - - if (sum == null) { - sum = nil; - }; - - if (i == null) { - i = nil; - }; - return $rb_plus(sum, i);}, $$13.$$s = self, $$13.$$arity = 2, $$13)); - countOne = $send(countOneList, 'inject', [], ($$14 = function(sum, i){var self = $$14.$$s || this; - - - - if (sum == null) { - sum = nil; - }; - - if (i == null) { - i = nil; - }; - return $rb_plus(sum, i);}, $$14.$$s = self, $$14.$$arity = 2, $$14)); - result = ""; - if ($truthy($rb_gt(successList.$size(), 1))) { - result = $rb_plus(result, "" + "\n > 最終成功数:" + (success))}; - if ($truthy(($truthy($a = canReRoll) ? isStop : $a))) { - - result = $rb_plus(result, "\n"); - if ($truthy($rb_ge(success, targetNumber))) { - result = $rb_plus(result, " > 現状で成功。コマンド実行で追加リロールも可能") - } else { - - result = $rb_plus(result, " > 現状のままでは失敗"); - if ($truthy($rb_ge(countOne, 1))) { - result = $rb_plus(result, "" + "。汚染ポイント+" + (countOne))}; - }; - return result;}; - if ($truthy($rb_ge(success, targetNumber))) { - - result = $rb_plus(result, " > 成功"); - if ($truthy($rb_ge(bitList.$size(), 1))) { - result = $rb_plus(result, "" + "、禁書ビット発生[" + (bitList.$join(",")) + "]")}; - } else { - - result = $rb_plus(result, " > 失敗"); - if ($truthy($rb_ge(countOne, 1))) { - result = $rb_plus(result, "" + "。汚染ポイント+" + (countOne))}; - }; - return result; - }, $BlindMythos_getTotalResultMessageText$12.$$arity = 6); - - Opal.def(self, '$getSameDieList', $BlindMythos_getSameDieList$15 = function $$getSameDieList(diceList) { - var $$16, self = this, sameDiceList = nil; - - - sameDiceList = []; - $send(diceList.$uniq(), 'each', [], ($$16 = function(i){var self = $$16.$$s || this, $$17, list = nil; - - - - if (i == null) { - i = nil; - }; - if (i['$=='](1)) { - return nil;}; - list = $send(diceList, 'find_all', [], ($$17 = function(dice){var self = $$17.$$s || this; - - - - if (dice == null) { - dice = nil; - }; - return dice['$=='](i);}, $$17.$$s = self, $$17.$$arity = 1, $$17)); - if ($truthy($rb_le(list.$length(), 1))) { - return nil;}; - return sameDiceList['$<<'](list);}, $$16.$$s = self, $$16.$$arity = 1, $$16)); - return sameDiceList; - }, $BlindMythos_getSameDieList$15.$$arity = 1); - - Opal.def(self, '$getSuccessResultText', $BlindMythos_getSuccessResultText$18 = function $$getSuccessResultText(diceList, judgeNumber) { - var $$19, self = this, success = nil, countOne = nil, result = nil; - - - success = 0; - countOne = 0; - $send(diceList, 'each', [], ($$19 = function(i){var self = $$19.$$s || this; - - - - if (i == null) { - i = nil; - }; - if (i['$=='](1)) { - countOne = $rb_plus(countOne, 1)}; - if ($truthy($rb_ge(i, judgeNumber))) { - } else { - return nil; - }; - return (success = $rb_plus(success, 1));}, $$19.$$s = self, $$19.$$arity = 1, $$19)); - result = "" + "成功数:" + (success); - return [success, countOne, result]; - }, $BlindMythos_getSuccessResultText$18.$$arity = 2); - - Opal.def(self, '$getRulingPlanetDiceCommandResult', $BlindMythos_getRulingPlanetDiceCommandResult$20 = function $$getRulingPlanetDiceCommandResult(command) { - var $$21, $$22, self = this, targetNumbers = nil, diceList = nil, matchResult = nil, text = nil; - - - if ($truthy(/^RP(\d+)/i['$==='](command))) { - } else { - return nil - }; - targetNumbers = $send($$($nesting, 'Regexp').$last_match(1).$split(/(?:)/), 'collect', [], ($$21 = function(i){var self = $$21.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$21.$$s = self, $$21.$$arity = 1, $$21)); - diceList = self.$getRulingPlanetDice(); - matchResult = "失敗"; - (function(){var $brk = Opal.new_brk(); try {return $send(targetNumbers, 'each', [], ($$22 = function(i){var self = $$22.$$s || this; - - - - if (i == null) { - i = nil; - }; - if ($truthy(diceList['$include?'](i))) { - - matchResult = "発動"; - - Opal.brk(nil, $brk); - } else { - return nil - };}, $$22.$$s = self, $$22.$$brk = $brk, $$22.$$arity = 1, $$22)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - text = "" + "守護星表チェック(" + (targetNumbers.$join(",")) + ") > " + (diceList.$count()) + "D10[" + (diceList.$join(",")) + "] > " + (matchResult); - return text; - }, $BlindMythos_getRulingPlanetDiceCommandResult$20.$$arity = 1); - - Opal.def(self, '$getRulingPlanetDice', $BlindMythos_getRulingPlanetDice$23 = function $$getRulingPlanetDice() { - var $a, $b, $c, self = this, dice1 = nil, dice2 = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - dice2 = dice1; - while (dice1['$=='](dice2)) { - $c = self.$roll(1, 10), $b = Opal.to_ary($c), (dice2 = ($b[0] == null ? nil : $b[0])), $c - }; - dice1 = self.$changeRulingPlanetDice(dice1); - dice2 = self.$changeRulingPlanetDice(dice2); - return [dice1, dice2]; - }, $BlindMythos_getRulingPlanetDice$23.$$arity = 0); - - Opal.def(self, '$changeRulingPlanetDice', $BlindMythos_changeRulingPlanetDice$24 = function $$changeRulingPlanetDice(dice) { - var self = this; - - - if (dice['$=='](10)) { - return 0}; - return dice; - }, $BlindMythos_changeRulingPlanetDice$24.$$arity = 1); - - Opal.def(self, '$getDurtyTableCommandReuslt', $BlindMythos_getDurtyTableCommandReuslt$25 = function $$getDurtyTableCommandReuslt(command) { - var $a, $b, self = this, table = nil, dice1 = nil, dice2 = nil, index = nil; - - - if ($truthy(/^DT$/i['$=~'](command))) { - } else { - return nil - }; - table = "" + "汚染チャートを2回振り、その効果を適用する(1・2-2,5・6-12 なら振り直す)\n" + "PC全員の「トラウマ」「喪失」すべてに2ダメージ\n" + "PC全員の「喪失」2つに4ダメージ\n" + "PC全員の「トラウマ」すべてに2ダメージ。その後さらに汚染が2増える\n" + "PC全員、1つの【記憶】の両方の値が0になる。このときアクロバットダイス獲得不可\n" + "PC全員の「喪失」1つに4ダメージ。このときアクロバットダイス獲得不可\n" + "PC全員の「トラウマ」すべてに1ダメージ。その後さらに汚染が3増える\n" + "PC全員の「トラウマ」すべてに1ダメージ。その後アクロバットダイスをPC人数分失う\n" + "PC全員の「喪失」すべてに2ダメージ。禁書ビットをすべて失う\n" + "PC全員の「トラウマ」2つに3ダメージ。その後さらに汚染が1増える\n" + "PC全員の「トラウマ」「喪失」すべてに1ダメージ\n" + "PC全員の「喪失」1つに4ダメージ。禁書ビットをすべて失う\n" + "PC全員の「トラウマ」すべてに2ダメージ\n" + "PC全員の1つの【記憶】の「トラウマ」「喪失」それぞれに3ダメージ\n" + "PC全員の「喪失」すべてに1ダメージ\n" + "PC全員の「トラウマ」3つに2ダメージ\n" + "PC全員の「トラウマ」と「喪失」それぞれ1つに3ダメージ\n" + "PC全員の「喪失」3つに2ダメージ\n" + "PC全員のすべての「トラウマ」に1 ダメージ\n" + "PC全員のひとつの【記憶】の「トラウマ」「喪失」それぞれに3ダメージ\n" + "PC全員の「喪失」すべてに2ダメージ\n" + "PC全員の「トラウマ」ひとつに4ダメージ。禁書ビットをすべて失う\n" + "PC全員の「トラウマ」「喪失」すべてに1ダメージ\n" + "PC全員の「喪失」2つに3ダメージ。その後さらに汚染が1増える\n" + "PC全員の「トラウマ」すべてに2ダメージ。禁書ビットをすべて失う\n" + "PC全員の「喪失」すべてに1ダメージ。その後アクロバットダイスをPC人数分失う\n" + "PC全員の「喪失」すべてに1ダメージ。その後さらに汚染が3増える\n" + "PC全員の「トラウマ」1つに4ダメージ。このときアクロバットダイス獲得不可\n" + "PC全員、1つの【記憶】の両方の値が0になる。このときアクロバットダイス獲得不可\n" + "PC全員の「喪失」すべてに2ダメージ。その後さらに汚染が2増える\n" + "PC全員の「トラウマ」2つに4ダメージ\n" + "PC全員の「トラウマ」「喪失」すべてに2ダメージ\n" + "汚染チャートを2回振り、その効果を適用する(1・2-2,5・6-12 なら振り直す)\n"; - table = table.$split("\n"); - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus($rb_plus($rb_times($rb_minus(dice2, 2), 3), $rb_divide(dice1, 2.0).$ceil()), 1); - return "" + "汚染チャート(" + (dice1) + "," + (dice2) + ") > " + (table['$[]'](index)); - }, $BlindMythos_getDurtyTableCommandReuslt$25.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["LE", "ESH", "ESA", "ESS", "ESP", "ESL", "ESE"], {"LE": $hash2(["name", "type", "table"], {"name": "失う感情表", "type": "1D6", "table": ["喜:喜びは消えた。嬉しい気持ちとは、なんだっただろう。", "怒:激情は失われ、憎しみもどこかへと消える。", "哀:どんなに辛くても、悲しさを感じない。どうやら涙も涸れたらしい。", "楽:もはや楽しいことなどない。希望を抱くだけ無駄なのだ。", "愛:愛など幻想……無力で儚い、役に立たない世迷い言だ。", "感:なにを見ても、感動はない。心は凍てついている。"]}), "ESH": $hash2(["name", "type", "table"], {"name": "「喜」の感情後遺症表", "type": "2D6", "table": ["日々喜びを求めてしまう。", "日々喜びを求めてしまう。", "嬉しい時間が長続きしない。", "素直に喜びを共有できないことがある。", "小さなことで大きく喜びを感じる。", "小さなことで大きく喜びを感じる。", "影響なし。", "影響なし。", "「喜」の後遺症をひとつ消してもよい。", "「喜」の後遺症をひとつ消してもよい。", "「喜」の後遺症をひとつ消してもよい。"]}), "ESA": $hash2(["name", "type", "table"], {"name": "「怒」の感情後遺症表", "type": "2D6", "table": ["始終不機嫌になる。", "始終不機嫌になる。", "一度怒ると、なかなか収まらない。", "怒りっぽくなる", "怒りかたが激しくなる。", "怒りかたが激しくなる。", "影響なし。", "影響なし。", "「怒」の後遺症をひとつ消してもよい。", "「怒」の後遺症をひとつ消してもよい。", "「怒」の後遺症をひとつ消してもよい。"]}), "ESS": $hash2(["name", "type", "table"], {"name": "「哀」の感情後遺症表", "type": "2D6", "table": ["一度涙が出るとなかなか止まらない。", "一度涙が出るとなかなか止まらない。", "夜、哀しいことを思い出して目が覚める。", "不意に哀しい気持ちになる。", "涙もろくなる。", "涙もろくなる。", "影響なし。", "影響なし。", "「哀」の後遺症をひとつ消してもよい。", "「哀」の後遺症をひとつ消してもよい。", "「哀」の後遺症をひとつ消してもよい。"]}), "ESP": $hash2(["name", "type", "table"], {"name": "「楽」の感情後遺症表", "type": "2D6", "table": ["突然陽気になったり、不意に笑い出してしまう。", "突然陽気になったり、不意に笑い出してしまう。", "周りが楽しくなさそうだと不安になる。", "楽しいことがないと落ち着かない。", "些細なことでも笑ってしまう。", "些細なことでも笑ってしまう。", "影響なし。", "影響なし。", "「楽」の後遺症をひとつ消してもよい。", "「楽」の後遺症をひとつ消してもよい。", "「楽」の後遺症をひとつ消してもよい。"]}), "ESL": $hash2(["name", "type", "table"], {"name": "「愛」の感情後遺症表", "type": "2D6", "table": ["少しでも気になる相手に愛を求めてしまう。", "少しでも気になる相手に愛を求めてしまう。", "愛する相手(恋人・家族・ペット・空想)から離れたくない。", "誰彼構わず優しくしてしまう。", "ひとりでいると不安を感じる。", "ひとりでいると不安を感じる。", "影響なし。", "影響なし。", "「愛」の後遺症をひとつ消してもよい。", "「愛」の後遺症をひとつ消してもよい。", "「愛」の後遺症をひとつ消してもよい。"]}), "ESE": $hash2(["name", "type", "table"], {"name": "「感」の感情後遺症表", "type": "2D6", "table": ["感動を共有できない相手を不信に思ってしまう。", "感動を共有できない相手を不信に思ってしまう。", "嬉しくても哀しくてもすぐに涙が出る。", "リアクションがオーバーになる。", "ちょっとしたことで感動する。", "ちょっとしたことで感動する。", "影響なし。", "影響なし。", "「感」の後遺症をひとつ消してもよい。", "「感」の後遺症をひとつ消してもよい。", "「感」の後遺症をひとつ消してもよい。"]})}).$freeze()); - return self.$setPrefixes($rb_plus(["BM.*", "ReRoll\\d+.*", "RP\\d+", "DT"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/BloodCrusade.js b/src/assets/dicebot/BloodCrusade.js deleted file mode 100644 index 36dafa659..000000000 --- a/src/assets/dicebot/BloodCrusade.js +++ /dev/null @@ -1,234 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$==', '$<=', '$>=', '$upcase', '$debug', '$===', '$getRelationTable', '$getSceneTable', '$getInitiativeSkillTable', '$getBodyRegionTable', '$getConfidenceHappyTable', '$getStatusHappyTable', '$getDailyHappyTable', '$getLinkHappyTable', '$getEvacuationHappyTable', '$getAllSkillTable', '$getMildInsanityTable', '$getSevereInsanityTable', '$getTableCommandResult', '$get_table_by_1d6', '$get_table_by_2d6', '$roll', '$freeze', '$setPrefixes', '$+', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BloodCrusade'); - - var $nesting = [self].concat($parent_nesting), $BloodCrusade_initialize$1, $BloodCrusade_check_2D6$2, $BloodCrusade_rollDiceCommand$3, $BloodCrusade_getRelationTable$4, $BloodCrusade_getSceneTable$5, $BloodCrusade_getInitiativeSkillTable$6, $BloodCrusade_getBodyRegionTable$7, $BloodCrusade_getConfidenceHappyTable$8, $BloodCrusade_getStatusHappyTable$9, $BloodCrusade_getDailyHappyTable$10, $BloodCrusade_getLinkHappyTable$11, $BloodCrusade_getEvacuationHappyTable$12, $BloodCrusade_getAllSkillTable$13, $BloodCrusade_getMildInsanityTable$14, $BloodCrusade_getSevereInsanityTable$15; - - - Opal.const_set($nesting[0], 'ID', "BloodCrusade"); - Opal.const_set($nesting[0], 'NAME', "ブラッド・クルセイド"); - Opal.const_set($nesting[0], 'SORT_KEY', "ふらつとくるせいと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・各種表\n" + " ・関係属性表 RT\n" + " ・シーン表 ST\n" + " ・先制判定指定特技表 IST\n" + " ・身体部位決定表   BRT\n" + " ・自信幸福表     CHT\n" + " ・地位幸福表     SHT\n" + " ・日常幸福表     DHT\n" + " ・人脈幸福表     LHT\n" + " ・退路幸福表     EHT\n" + " ・ランダム全特技表  AST\n" + " ・軽度狂気表     MIT\n" + " ・重度狂気表     SIT\n" + " ・戦場シーン表    BDST\n" + " ・夢シーン表     DMST\n" + " ・田舎シーン表    CYST\n" + " ・学校シーン表    SLST\n" + " ・館シーン表     MNST\n" + " ・時間経過表(10代~60代、半吸血鬼)TD1T~TD6T、TDHT\n" + "・D66ダイスあり\n"); - - Opal.def(self, '$initialize', $BloodCrusade_initialize$1 = function $$initialize() { - var $iter = $BloodCrusade_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $BloodCrusade_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $BloodCrusade_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - self.d66Type = 2; - return (self.fractionType = "roundUp"); - }, $BloodCrusade_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $BloodCrusade_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル(【モラル】-3。追跡フェイズなら吸血シーンを追加。戦闘フェイズなら吸血鬼は追加行動を一回得る)" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > スペシャル(【モラル】+3。追跡フェイズならあなたに関係を持つPCの【モラル】+2。攻撃判定ならダメージ+1D6)" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $BloodCrusade_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $BloodCrusade_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var $a, $b, self = this, output = nil, type = nil, total_n = nil, $case = nil; - - - command = command.$upcase(); - output = "1"; - type = ""; - total_n = ""; - self.$debug("getTableResult command", command); - $case = command; - if ("RT"['$===']($case)) { - type = "関係属性表"; - $b = self.$getRelationTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("ST"['$===']($case)) { - type = "シーン表"; - $b = self.$getSceneTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("IST"['$===']($case)) { - type = "先制判定指定特技表"; - $b = self.$getInitiativeSkillTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BRT"['$===']($case)) { - type = "身体部位決定表"; - $b = self.$getBodyRegionTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("CHT"['$===']($case)) { - type = "自信幸福表"; - $b = self.$getConfidenceHappyTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHT"['$===']($case)) { - type = "地位幸福表"; - $b = self.$getStatusHappyTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("DHT"['$===']($case)) { - type = "日常幸福表"; - $b = self.$getDailyHappyTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("LHT"['$===']($case)) { - type = "人脈幸福表"; - $b = self.$getLinkHappyTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EHT"['$===']($case)) { - type = "退路幸福表"; - $b = self.$getEvacuationHappyTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("AST"['$===']($case)) { - type = "ランダム全特技表"; - $b = self.$getAllSkillTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MIT"['$===']($case)) { - type = "軽度狂気表"; - $b = self.$getMildInsanityTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SIT"['$===']($case)) { - type = "重度狂気表"; - $b = self.$getSevereInsanityTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else {return self.$getTableCommandResult(command, $$($nesting, 'TABLES'))}; - if (output['$==']("1")) { - return output}; - output = "" + (type) + "(" + (total_n) + ") > " + (output); - return output; - }, $BloodCrusade_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$getRelationTable', $BloodCrusade_getRelationTable$4 = function $$getRelationTable() { - var self = this, table = nil; - - - table = ["共感/不信", "友情/忌避", "愛情/嫌悪", "忠義/侮蔑", "憧憬/引け目", "保護欲/殺意"]; - return self.$get_table_by_1d6(table); - }, $BloodCrusade_getRelationTable$4.$$arity = 0); - - Opal.def(self, '$getSceneTable', $BloodCrusade_getSceneTable$5 = function $$getSceneTable() { - var self = this, table = nil; - - - table = ["どこまでも広がる荒野。風が吹き抜けていく。", "血まみれの惨劇の跡。いったい誰がこんなことを?", "都市の地下。かぼそい明かりがコンクリートを照らす。", "豪華な調度が揃えられた室内。くつろぎの空間を演出。", "普通の道端。様々な人が道を行き交う。", "明るく浮かぶ月の下。暴力の気配が満ちていく。", "打ち捨てられた廃墟。荒れ果てた景色に心も荒む。", "生活の様子が色濃く残る部屋の中。誰の部屋だろう?", "喧しい飲食店。騒ぐ人々に紛れつつ自体は進行する。", "ざわめく木立。踊る影。", "高い塔の上。都市を一望できる。"]; - return self.$get_table_by_2d6(table); - }, $BloodCrusade_getSceneTable$5.$$arity = 0); - - Opal.def(self, '$getInitiativeSkillTable', $BloodCrusade_getInitiativeSkillTable$6 = function $$getInitiativeSkillTable() { - var self = this, table = nil; - - - table = ["《自信/社会5》", "《地位/社会9》", "《日常/環境3》", "《人脈/環境9》", "《退路/環境11》", "《心臓/胴部7》"]; - return self.$get_table_by_1d6(table); - }, $BloodCrusade_getInitiativeSkillTable$6.$$arity = 0); - - Opal.def(self, '$getBodyRegionTable', $BloodCrusade_getBodyRegionTable$7 = function $$getBodyRegionTable() { - var self = this, table = nil; - - - table = ["《脳》", "《利き腕》", "《利き脚》", "《消化器》", "《感覚器》", "《攻撃したキャラクターの任意》", "《口》", "《呼吸器》", "《逆脚》", "《逆腕》", "《心臓》"]; - return self.$get_table_by_2d6(table); - }, $BloodCrusade_getBodyRegionTable$7.$$arity = 0); - - Opal.def(self, '$getConfidenceHappyTable', $BloodCrusade_getConfidenceHappyTable$8 = function $$getConfidenceHappyTable() { - var self = this, table = nil; - - - table = ["【戦闘能力】あなたは吸血鬼狩人としての自分の戦闘能力に自信を持っています。たとえ負けようとも、それは運か相手か仲間が悪かったので、あなたの戦闘能力が低いわけではありません。", "【美貌】あなたは自分が美しいことを知っています。他人もあなたを美しいと思っているはず。鏡を見るたびに、あなたは自分の美しさに惚れ惚れしてしまいます。", "【血筋】あなたは名家の血を引く者です。祖先の栄光を背負い、家門の名誉を更に増すために、偉業をなす運命にあります。または、普通にいい家族に恵まれているのかもしれません。", "【趣味の技量】あなたは趣味の分野では第一人者です。必ずしも名前が知れ渡っているわけではありませんが、どんな相手にも負けない自信があります。どんな趣味かは自由です。", "【仕事の技量】職場で最も有能なもの、それがあなたです。誰もあなたの仕事の量とクオリティを超えられません。どんな仕事をしているかは自由に決めて構いません。", "【長生き】あなたは吸血鬼狩人としてかなりの年月を過ごしてきたが、まだ死んでいません。これは誇るべきことです。そこらの若造には、まだまだ負けていません。"]; - return self.$get_table_by_1d6(table); - }, $BloodCrusade_getConfidenceHappyTable$8.$$arity = 0); - - Opal.def(self, '$getStatusHappyTable', $BloodCrusade_getStatusHappyTable$9 = function $$getStatusHappyTable() { - var self = this, table = nil; - - - table = ["【役職】あなたは職場、あるいは吸血鬼狩人の組織のなかで高い階級についています。そのため、下にいるものには命令でき、相応の敬意を払われます。", "【英雄】あなたはかつて偉業を成し遂げたことがあり、誰でもそれを知っています。少々くすぐったい気もしますが、英雄として扱われるのは悪くありません。", "【お金持ち】あなたには財産があります。それも生半可な財産ではなく、人が敬意を払うだけの財産です。あなたはお金に困ることはなく、その幸せを知っています", "【特権階級】あなたは国が定める特権階級の一員です。王族や貴族をイメージするとわかりやすいでしょう。あなたは、どこに行っても、それ相応の扱いを受けることになります。", "【人格者】誰もが認める人格者としての評判を持っているため、あなたのところには悩みを抱えた人々が引きも切らずに押しかけてきます。大変ですが、ちょっと楽しい", "【リーダー】あなたは所属している何らかの組織を率いる立場にあります。会社の社長や、部活動の部長などです。あなたは求められてその地位にあります"]; - return self.$get_table_by_1d6(table); - }, $BloodCrusade_getStatusHappyTable$9.$$arity = 0); - - Opal.def(self, '$getDailyHappyTable', $BloodCrusade_getDailyHappyTable$10 = function $$getDailyHappyTable() { - var self = this, table = nil; - - - table = ["【家】あなたの家はとても快適な空間です。コストと時間をかけて作り上げられた、あなたが居住するための空間。それはあなたの幸せの源なのです。", "【職場】あなたは仕事が楽しくて仕方ありません。意義ある仕事で払いも悪くなく、チームの仲間はみんないい奴ばかりです。残業は……ちょっとあるかもしれません。", "【行きつけの店】あなたには休みの日や職場帰りに立ち寄る行きつけの店があり、そこにいる時間は安らぎを感じることができます。店員とも顔見知りです。", "【ベッド】あなたは動物を飼っています。よく懐いた可愛い、またはかっこいい動物です。一緒に過ごす時間はあなたに幸せを感じさせてくれます", "【親しい隣人】おとなりさんやお向かいさん。よくお土産を渡したり、小さな子供を預かったりするような仲です。風邪を引いたときには、家事を手伝ってくれることも。", "【思い出】あなたは昔の思い出を心の支えにしています。何らかの幸せな記憶……それがあれば、この先にどんなつらいことが待っていても大丈夫でしょう。"]; - return self.$get_table_by_1d6(table); - }, $BloodCrusade_getDailyHappyTable$10.$$arity = 0); - - Opal.def(self, '$getLinkHappyTable', $BloodCrusade_getLinkHappyTable$11 = function $$getLinkHappyTable() { - var self = this, table = nil; - - - table = ["【理解ある家族】あなたの家族は、あなたが吸血鬼狩人であることを知ったうえで協力してくれます。これがどれほど稀なことかは、仲間に聞けば分かるでしょう。", "【有能な友人】あなたの友人は、吸血鬼の存在とあなたの本当の仕事を知っています。そして、直接戦うだけの技量はないものの、あなたの探索をサポートしてくれます。", "【愛する恋人】あなたには愛する人がいます。見つめあうだけで、あなたの心は舞い上がり……帰ってきません。この恋人を失うなんて、考えるだけでも恐ろしいことです。", "【同志の権力者】あなたには吸血鬼の存在を知りながら、奴らに屈していない権力者との繋がりがあります。様々な違法行為をはたらく際に、役に立つでしょう。", "【得がたい師匠】あなたは使う武器を学んだ師匠がいて、それを通して兄弟弟子とも繋がりがあります。過酷な訓練を経て、彼らとあなたには強い絆ができています。", "【可愛い子供】あなたには子供がいます。聡明で魅力的、しかも健康な……将来を嘱望される子供です。子供が掴む幸せな未来を思う時、あなたの顔には笑みが広がります。"]; - return self.$get_table_by_1d6(table); - }, $BloodCrusade_getLinkHappyTable$11.$$arity = 0); - - Opal.def(self, '$getEvacuationHappyTable', $BloodCrusade_getEvacuationHappyTable$12 = function $$getEvacuationHappyTable() { - var self = this, table = nil; - - - table = ["【故郷の町】あなたは生まれ育った街を離れて吸血鬼狩人として活動しています。いつの日かあの町へ帰る……その思いがあなたを戦いのなかで支えています。", "【待っている人】あなたが吸血鬼狩人をやめて、普通の暮らしに戻ることを待ちわびている人がいます。そして、あなたはその思いに応えたいと思っています。", "【就職先】あなたは吸血鬼狩りの報酬がなくなっても、すぐに入ることができる就職先があるので安心です。有能なのか過疎地域なのかは分かりませんが。", "【配偶者】あなたは吸血鬼狩人をやめたあとに家庭に入ろうと考えています。暮らしの設計はすでに済み、あとは実行するだけなのですが、なかなかそうはいきません。", "【大志】あなたが吸血鬼狩人として活動しているのは、やむにやまれぬ事情があるからです。あなたには「本当にやりたかったこと」があり、いつかその夢をかなえる気でいます。", "【空想の王国】あなたには辛いことがあると白昼夢にふける、あるいは物語に没入する癖があり、そのときには非常に幸せな気分になることができます。"]; - return self.$get_table_by_1d6(table); - }, $BloodCrusade_getEvacuationHappyTable$12.$$arity = 0); - - Opal.def(self, '$getAllSkillTable', $BloodCrusade_getAllSkillTable$13 = function $$getAllSkillTable() { - var $a, $b, self = this, tableCSKT = nil, tableHSKT = nil, tableASKT = nil, tableBSKT = nil, tableLSKT = nil, tableESKT = nil, categoryNum = nil, detailText = nil, detailNum = nil; - - - tableCSKT = ["社会2:怯える", "社会3:脅す", "社会4:考えない", "社会5:自信", "社会6:黙る", "社会7:伝える", "社会8:だます", "社会9:地位", "社会10:笑う", "社会11:話す", "社会12:怒る"]; - tableHSKT = ["頭部2:聴く", "頭部3:感覚器", "頭部4:見る", "頭部5:反応", "頭部6:考える", "頭部7:脳", "頭部8:閃く", "頭部9:予感", "頭部10:叫ぶ", "頭部11:口", "頭部12:噛む"]; - tableASKT = ["腕部2:締める", "腕部3:殴る", "腕部4:斬る", "腕部5:利き腕", "腕部6:撃つ", "腕部7:操作", "腕部8:刺す", "腕部9:逆腕", "腕部10:振る", "腕部11:掴む", "腕部12:投げる"]; - tableBSKT = ["胴部2:塞ぐ", "胴部3:呼吸器", "胴部4:止める", "胴部5:受ける", "胴部6:測る", "胴部7:心臓", "胴部8:逸らす", "胴部9:かわす", "胴部10:耐える", "胴部11:消化器", "胴部12:落ちる"]; - tableLSKT = ["脚部2:走る", "脚部3:迫る", "脚部4:蹴る", "脚部5:利き脚", "脚部6:跳ぶ", "脚部7:仕掛ける", "脚部8:踏む", "脚部9:逆脚", "脚部10:這う", "脚部11:伏せる", "脚部12:歩く"]; - tableESKT = ["環境2:休む", "環境3:日常", "環境4:隠れる", "環境5:待つ", "環境6:現れる", "環境7:人脈", "環境8:捕らえる", "環境9:開ける", "環境10:逃げる", "環境11:退路", "環境12:休まない"]; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (categoryNum = ($a[0] == null ? nil : $a[0])), $b; - detailText = nil; - detailNum = 0; - if (categoryNum['$=='](1)) { - $b = self.$get_table_by_2d6(tableCSKT), $a = Opal.to_ary($b), (detailText = ($a[0] == null ? nil : $a[0])), (detailNum = ($a[1] == null ? nil : $a[1])), $b - } else if (categoryNum['$=='](2)) { - $b = self.$get_table_by_2d6(tableHSKT), $a = Opal.to_ary($b), (detailText = ($a[0] == null ? nil : $a[0])), (detailNum = ($a[1] == null ? nil : $a[1])), $b - } else if (categoryNum['$=='](3)) { - $b = self.$get_table_by_2d6(tableBSKT), $a = Opal.to_ary($b), (detailText = ($a[0] == null ? nil : $a[0])), (detailNum = ($a[1] == null ? nil : $a[1])), $b - } else if (categoryNum['$=='](4)) { - $b = self.$get_table_by_2d6(tableASKT), $a = Opal.to_ary($b), (detailText = ($a[0] == null ? nil : $a[0])), (detailNum = ($a[1] == null ? nil : $a[1])), $b - } else if (categoryNum['$=='](5)) { - $b = self.$get_table_by_2d6(tableLSKT), $a = Opal.to_ary($b), (detailText = ($a[0] == null ? nil : $a[0])), (detailNum = ($a[1] == null ? nil : $a[1])), $b - } else if (categoryNum['$=='](6)) { - $b = self.$get_table_by_2d6(tableESKT), $a = Opal.to_ary($b), (detailText = ($a[0] == null ? nil : $a[0])), (detailNum = ($a[1] == null ? nil : $a[1])), $b}; - return [detailText, "" + (categoryNum) + "," + (detailNum)]; - }, $BloodCrusade_getAllSkillTable$13.$$arity = 0); - - Opal.def(self, '$getMildInsanityTable', $BloodCrusade_getMildInsanityTable$14 = function $$getMildInsanityTable() { - var self = this, table = nil; - - - table = ["【誇大妄想】(判定に失敗するたびに【感情】が1増加する。)", "【記憶喪失】(【幸福】の修復判定にマイナス2の修正。)", "【こだわり】(戦闘中の行動を「パス」以外で一つ選択し、その行動をすると【感情】が6増加する。)", "【お守り中毒】(「幸運のお守り」を装備していない場合、全ての2d6判定にマイナス1の修正。)", "【不死幻想】(自分が受けるダメージが全て1増加する。)", "【血の飢え】(戦闘中に最低1体でも死亡させないと、戦闘終了時に【感情】10増加。【激情】は獲得できない。)"]; - return self.$get_table_by_1d6(table); - }, $BloodCrusade_getMildInsanityTable$14.$$arity = 0); - - Opal.def(self, '$getSevereInsanityTable', $BloodCrusade_getSevereInsanityTable$15 = function $$getSevereInsanityTable() { - var self = this, table = nil; - - - table = ["【幸福依存】(【幸福】を一つ選択し、その【幸福】が結果フェイズに失われたとき、死亡する。)", "【見えない友達】(自分の関わる「関係を深める」判定にマイナス3の修正がつく。)", "【臆病】(自分の行う妨害判定にマイナス2の修正がつく。)", "【陰謀論】(「幸福を味わう」判定にマイナス3の修正がつく。)", "【指令受信】(追跡フェイズBでの自分の行動は、可能な範囲でGMが決定する。)", "【猜疑心】(自分が「連携攻撃」を行うとき、関係の【深度】をダメージに加えられない。)"]; - return self.$get_table_by_1d6(table); - }, $BloodCrusade_getSevereInsanityTable$15.$$arity = 0); - Opal.const_set($nesting[0], 'TABLES', $hash2(["BDST", "CYST", "DMST", "MNST", "SLST", "TD1T", "TD2T", "TD3T", "TD4T", "TD5T", "TD6T", "TDHT"], {"BDST": $hash2(["name", "type", "table"], {"name": "戦場シーン表", "type": "2d6", "table": "" + "塹壕。迫撃砲が唸りを上げ、兵士たちの悲鳴が響き渡る。\n" + "港の堤防。遠ざかっていく貨物船と、ゆっくりと揺れる鉛色の水面。\n" + "一面の草に覆われた野原。膝から下は見えない。\n" + "ドーム競技場。中のフィールドよりも外の通路が使われることが多い。\n" + "建物と建物の間に、いつの間にかできた空き地。入る道は狭い。\n" + "採石場。背景を爆破するのに向いた場所だ。\n" + "工場。用途の分からない巨大機械が放置され、雰囲気を盛り上げる。\n" + "暗いトンネル。停められた車のヘッドライトだけが頼りだ。\n" + "競馬場。人のいない観客席を広告板が見下ろしている。\n" + "河川敷。土手の補強用ブロックの規則的な並びが目眩を引き起こす。\n" + "司令室。壁の巨大スクリーンでは、何かのカウントダウンが進行中。\n"}), "CYST": $hash2(["name", "type", "table"], {"name": "田舎シーン表", "type": "2d6", "table": "" + "誰かの家。庭付き二階建て。部屋は余っている。\n" + "山。周囲は木に囲まれ、その向こうの景色は全く見えない。\n" + "さびれたバス停。時刻表は錆に覆われていて読むのが難しい。\n" + "国道沿いのファミレス。巨大な駐車場にトラックが並ぶ。\n" + "大型量販店。服や靴、電化製品などの大きな店。\n" + "あぜ道。周りには季節によって違う姿を見せる水田が広がる。\n" + "大型ショッピングモール。何でも揃う。\n" + "コンビニ。11時で閉まるので夜は開いていないこともある。\n" + "野菜の無人販売所。木の棚に人参やジャガイモが置いてある。\n" + "廃屋。近所の学生がよく忍び込んで悪さをしているとか。\n" + "駅。ホームには屋根がなく、周りには山と森が広がっている。\n"}), "DMST": $hash2(["name", "type", "table"], {"name": "夢シーン表", "type": "2d6", "table": "" + "愛しい人を抱きしめていると、いつのまにか別人に変わっていて驚く。\n" + "もらった種を鉢に植えて待っていると、人が生えてきた。\n" + "ひたすら落下し続けている。一緒に堕ちている人が何か叫んでいる。\n" + "誰かをひどく殴りつけている。一発ごとに周りの観客から喝采が上がる。\n" + "知らない人ばかりのパーティのなか、必死に知り合いを探している。\n" + "何かに追いかけられて暗い道を走っている。そして追いつかれた。\n" + "列車に乗って、通り過ぎていく景色を見ている。向かいの客席に誰かがいる。\n" + "朝起きて冷蔵庫を開けにいくと、ありえない人物が朝食を作っていた。\n" + "なぜか分からないが捕まって留置された。入れられた房には意外な人が。\n" + "道端にいた散歩の犬が「これは夢だ」と事情を語り始めた。\n" + "みんな死んでしまった。墓の前で座っていると、近づいてくる人影がある。\n"}), "MNST": $hash2(["name", "type", "table"], {"name": "館シーン表", "type": "2d6", "table": "" + "地下牢。朽ち果てた骸の手首には鉄枷がはまったままだ。\n" + "礼拝堂。何千本もの蝋燭が祭壇を照らす。\n" + "厨房。得体の知れない鍋の中で何かが煮えたぎっている。\n" + "客間。天蓋付きの寝台は分厚く暖かそうだ。\n" + "中庭。ガゼボが配置されているが斬りかかってはいけない。\n" + "天井の高い廊下。あちこちに風景画が飾られている。\n" + "植木の迷路。動物型の植木が沈黙の咆哮をあげている。\n" + "玄関ホール。もちろん二階まで吹き抜けで階段がある。\n" + "食堂。果てしなく長いテーブルに椅子がセットされている。\n" + "時計塔。巨大な歯車とシャフトの組み合わせが回る。\n" + "領主の部屋。重厚なデスクと背後の本棚が威圧的だ。\n"}), "SLST": $hash2(["name", "type", "table"], {"name": "学校シーン表", "type": "2d6", "table": "" + "廊下。消防ホースの箱がやたらと赤く目立つ\n" + "運動場。石灰と混ざり合った白っぽい砂が積もっている。\n" + "保健室。白いカーテンが揺れ、同じく白いベッドで影がおどる。\n" + "講堂。ワックスのかかった床が、靴とこすれて甲高い音で鳴る。\n" + "人でいっぱいの教室。みな座ってはいるがやかましい。\n" + "誰もいない教室。時計の音がやけに大きく響く。\n" + "昇降口。いくつも並んだ大きな下駄箱に名前が書かれている。\n" + "音楽室。作曲家の肖像画がピアノを見下ろしている。\n" + "理科室。薬品と埃の臭いが鼻をつく。\n" + "工作室。机の大きな傷には木くずが詰まっている。\n" + "開かずの教室。ここは真っ暗だ……出口も入り口もない。\n"}), "TD1T": $hash2(["name", "type", "table"], {"name": "時間経過表十代", "type": "1d6", "table": "" + "自分探しの旅に出た。旅先で見つけた新しい自分は、なかなか好きになれるやつだった。\\n狩人は主武装のうち一つを変更してもかまわない。変更したらキャラクターの再構築を行う。\n" + "吸血鬼狩りを通して、仲間との絆が深まる。\\n仲間の狩人から一人を目標として選び、その狩人に対する関係【震度】を2増加させる。\\nその状態でセッションを開始する。\n" + "自分の将来に不安を覚え、吸血鬼狩り以外のことにチャレンジしてみるものの、どれも中途半端でうまくいかない。\\n狩人は「動転」の変調を発動した状態でセッションを開始する。\n" + "最近イヤなことがあって、相当不機嫌な状態になっている。\\n【モラル】の現在値を0にし、その状態でセッションを開始する。\n" + "新しい友達が出来る。\\n狩人と同じ年齢の協力者を、狩人のプレイヤーが作成する。レベルは1とすること。\\nこの協力者はセッションに登場し、獲得すれば使用できる。\n" + "ちょっと見ないうちに協力者が成長する。\\n協力者を獲得している場合、その中から一人を選ぶ。\\nその協力者のレベルが1上昇する。\\n協力者を獲得していない場合、効果はない。\n"}), "TD2T": $hash2(["name", "type", "table"], {"name": "時間経過表二十代", "type": "1d6", "table": "" + "表の仕事や学業で大抜擢され、若き天才として大いに名をはせる。\\n【モラル】が3増加し、その状態でセッションを開始する。\n" + "人生の新たな楽しみを発見する。\\n【幸福】を一つ新たに設定し、獲得できる。\\n【人間力】が足りない場合は、入れ替えるか無視すること。\n" + "恋人との関係がシリアスなトラブルに変化する。\\nまだ解決してはいないが、かなりのストレスだ。\\n【感情】が3増加した状態でセッションを開始する。\n" + "休暇中に無茶をして大怪我を負ってしまう。\\n吸血鬼狩りはタイミングが命なので、怪我をおして参加することになる。\\n狩人は「重症」の変調を発動した状態でセッションを開始する。\n" + "新しい友達が出来た。\\n狩人と五歳差までで任意の年齢の協力者を、狩人のプレイヤーが作成する。\\nレベルは1とすること。この協力者はセッションに登場し、獲得すれば使用できる。\n" + "協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\\n協力者を獲得していない場合、狩人のイベントとなり効果はない。\n"}), "TD3T": $hash2(["name", "type", "table"], {"name": "時間経過表三十代", "type": "1d6", "table": "" + "ある種の慎重さを身につけ、常に狩りの準備を怠らないようになる。\\n再殺武装から一つを選び、それをすでに獲得した状態でセッションを開始する。\n" + "拠点の運営に協力し、管理を最適化して簡単に利用できるようにした。\\n狩人側の拠点を一つ選び、その必要レベルを1減少させる。\\nただし1未満にはならない。\n" + "だんだんと責任のある立場になるにつれ、それに縛られているような感慨を覚えるようになる。\\n「捕縛」の変調を発動した状態でセッションを開始する。\n" + "狩人の噂を聞きつけた協力者が現れ、知己を得る。\\n狩人と十歳差までで任意の年齢の協力者を、狩人のプレイヤーが作成する。\\nレベルは1とすること。\\nこの協力者はセッションに登場し、獲得すれば使用できる。\n" + "軽い生活習慣病を発症する。特に狩りに影響はしない。\n" + "協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\\n協力者を獲得していない場合、狩人のイベントとなり効果はない。\n"}), "TD4T": $hash2(["name", "type", "table"], {"name": "時間経過表四十代", "type": "1d6", "table": "" + "だんだんと物事に動じず、迷わなくなってきた自分に気づく。\\nこのセッションの遭遇シーンでは感情属性を任意に設定できる。\n" + "重厚さを増す大人のオーラによって、他の狩人からの尊敬を勝ち取ることに成功する。\\n仲間の狩人から目標を一人選び、目標から狩人への関係【深度】を1増加する。\n" + "後進の育成に熱心になる。\\nこのセッションの間、自分の追跡シーンに自分より若い味方キャラクターが登場している場合、判定にプラス1の修正がつく。\\nこの修正は累積しない。\n" + "大病発覚。\\n狩人に後継者がいる場合、結果フェイズで狩人は死亡する。\\n後継者がいない場合、またはセッション中に決別したり裏切られた場合には、奇跡的に回復する。\n" + "幅広い人脈の中から吸血鬼の実在に耐えられる人物を見つけ出す。\\n狩人と二十歳差までで任意の年齢の協力者を、狩人のプレイヤーが作成する。\\nレベル1とすること。\\nこの協力者はセッションに登場し、獲得すれば使用できる。\n" + "協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\\n協力者を獲得していない場合、狩人のイベントとなり効果はない。\n"}), "TD5T": $hash2(["name", "type", "table"], {"name": "時間経過表五十代", "type": "1d6", "table": "" + "長年の経験によって【人間力】がこのセッションの間だけ1増加し、【幸福】も一つ獲得する。\\nこの効果は累積せず、すでに【人間力】が5の場合は効果なし。\n" + "武器の扱いにトリックを付け加える。\\n【ダメージ修正】がこのセッションの間だけ1増加する。この効果は累積しない。\n" + "長年酷使されてきた体が、そろそろ狩りについていけなくなる。\\n「捕縛」の変調を発動した状態でセッションを開始する。\n" + "大病発覚。狩人に後継者がいる場合、結果フェイズで狩人は死亡する。\\n後継者がいない場合、またはセッション中に決別したり裏切られた場合には、奇跡的に回復する。\n" + "協力者を獲得している場合、そのうち一人が爆発的な成長を見せる。\\nその協力者のレベルを2上げる。協力者を獲得していない場合、効果はなし。\n" + "協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\\n協力者を獲得していない場合、狩人のイベントとなり効果はない。\n"}), "TD6T": $hash2(["name", "type", "table"], {"name": "時間経過表六十代", "type": "1d6", "table": "" + "偉大な狩人の風格を漂わせることに成功。\\n狩人のことを慕い、狩人に対して【深度】5の関係があるレベル7の協力者を獲得する。\\n望むなら即座に後継者にしてもよい。\n" + "吸血鬼の永遠の命に対する憧れが膨れあがってくる。\\nセッションの間、「誘惑」に対する抵抗判定にマイナス2の修正がつく。\\nこの効果は累積しない。\n" + "隠退生活に思いをはせ始める。\\nもはや狩りにあまり積極的にはなれず、【モラル】の現在値を0にし、その状態でセッションを開始する。\n" + "大病発覚。\\n狩人に後継者がいる場合、結果フェイズで狩人は死亡する。\\n後継者がいない場合、またはセッション中に決別したり裏切られた場合には、奇跡的に回復する。\n" + "ふと死期を悟る。次の狩りが最後になるだろう。\\nセッションの間、暴走のたびに【激情】を二つ獲得できる。\\n結果フェイズで狩人は死亡する。\n" + "協力者を獲得している場合、その指導に一年をかける。\\n協力者のなかから一人を選び、その協力者のレベルを2上げる。\\n協力者を獲得していない場合、のんびりした一年だった。\n"}), "TDHT": $hash2(["name", "type", "table"], {"name": "時間経過表半吸血鬼", "type": "1d6", "table": "" + "じっくりと時間をかけて、敵吸血鬼の個性を研究する。\\nこのセッションの間、吸血鬼を目標とした「前哨戦」の判定にプラス1の修正がつく。\\nこの効果は累積しない。\n" + "自分の血の力について考慮を深め、より自由に使いこなせるようになる。\\n修得している血戒グループのアビリティから一つを選び、その名前に「+」をつけること。\\nそのアビリティの反動はやはり二倍だが、【感情】の増加にすることができる。\n" + "吸血鬼の強大な力に対する憧れが膨れあがってくる。\\nセッションの間、「誘惑」に対する抵抗判定にマイナス2の修正がつく。\\nこの効果は累積しない。\n" + "種族がらみのイヤなイベントが起こった。\\n【モラル】の現在値を0にし、その状態でセッションを開始する。\n" + "吸血鬼に転成を持ちかけられる。\\n敵の吸血鬼に対する関係【深度】が1増加し、その状態でセッションを開始する。\n" + "新しい友達が出来る。\\n任意の年齢の協力者を、狩人のプレイヤーが作成する。\\nレベルは1とすること。\\nこの協力者はセッションに登場し、獲得すれば使用できる。\n"})}).$freeze()); - return self.$setPrefixes($rb_plus(["RT", "ST", "IST", "BRT", "CHT", "SHT", "DHT", "LHT", "EHT", "AST", "MIT", "SIT"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/BloodMoon.js b/src/assets/dicebot/BloodMoon.js deleted file mode 100644 index ad8eb6875..000000000 --- a/src/assets/dicebot/BloodMoon.js +++ /dev/null @@ -1,231 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$==', '$<=', '$>=', '$upcase', '$debug', '$===', '$getSceneTable', '$getInitiativeSkillTable', '$getBodyRegionTable', '$getConfidenceHappyTable', '$getStatusHappyTable', '$getDailyHappyTable', '$getLinkHappyTable', '$getEvacuationHappyTable', '$getAllSkillTable', '$getMildInsanityTable', '$getSevereInsanityTable', '$getTableCommandResult', '$get_table_by_1d6', '$get_table_by_2d6', '$roll', '$freeze', '$setPrefixes', '$+', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'BloodMoon'); - - var $nesting = [self].concat($parent_nesting), $BloodMoon_initialize$1, $BloodMoon_check_2D6$2, $BloodMoon_rollDiceCommand$3, $BloodMoon_getRelationTable$4, $BloodMoon_getSceneTable$5, $BloodMoon_getInitiativeSkillTable$6, $BloodMoon_getBodyRegionTable$7, $BloodMoon_getConfidenceHappyTable$8, $BloodMoon_getStatusHappyTable$9, $BloodMoon_getDailyHappyTable$10, $BloodMoon_getLinkHappyTable$11, $BloodMoon_getEvacuationHappyTable$12, $BloodMoon_getAllSkillTable$13, $BloodMoon_getMildInsanityTable$14, $BloodMoon_getSevereInsanityTable$15; - - - Opal.const_set($nesting[0], 'ID', "BloodMoon"); - Opal.const_set($nesting[0], 'NAME', "ブラッド・ムーン"); - Opal.const_set($nesting[0], 'SORT_KEY', "ふらつとむうん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・各種表\n" + " ・関係属性表 RAT\n" + " ・導入タイプ決定表(ノーマル) IDT\n" + " ・導入タイプ決定表(ハード込み) ID2T\n" + " ・シーン表 ST\n" + " ・先制判定指定特技表 IST\n" + " ・身体部位決定表   BRT\n" + " ・自信幸福表     CHT\n" + " ・地位幸福表     SHT\n" + " ・日常幸福表     DHT\n" + " ・人脈幸福表     LHT\n" + " ・退路幸福表     EHT\n" + " ・ランダム全特技表  AST\n" + " ・軽度狂気表     MIT\n" + " ・重度狂気表     SIT\n" + "・D66ダイスあり\n"); - - Opal.def(self, '$initialize', $BloodMoon_initialize$1 = function $$initialize() { - var $iter = $BloodMoon_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $BloodMoon_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $BloodMoon_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - self.d66Type = 2; - return (self.fractionType = "roundUp"); - }, $BloodMoon_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $BloodMoon_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル(【余裕】が 0 に)" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > スペシャル(【余裕】+3)" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $BloodMoon_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $BloodMoon_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var $a, $b, self = this, output = nil, type = nil, total_n = nil, $case = nil; - - - command = command.$upcase(); - output = "1"; - type = ""; - total_n = ""; - self.$debug("getTableResult command", command); - $case = command; - if ("ST"['$===']($case)) { - type = "シーン表"; - $b = self.$getSceneTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("IST"['$===']($case)) { - type = "先制判定指定特技表"; - $b = self.$getInitiativeSkillTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BRT"['$===']($case)) { - type = "身体部位決定表"; - $b = self.$getBodyRegionTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("CHT"['$===']($case)) { - type = "自信幸福表"; - $b = self.$getConfidenceHappyTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHT"['$===']($case)) { - type = "地位幸福表"; - $b = self.$getStatusHappyTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("DHT"['$===']($case)) { - type = "日常幸福表"; - $b = self.$getDailyHappyTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("LHT"['$===']($case)) { - type = "人脈幸福表"; - $b = self.$getLinkHappyTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EHT"['$===']($case)) { - type = "退路幸福表"; - $b = self.$getEvacuationHappyTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("AST"['$===']($case)) { - type = "ランダム全特技表"; - $b = self.$getAllSkillTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MIT"['$===']($case)) { - type = "軽度狂気表"; - $b = self.$getMildInsanityTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SIT"['$===']($case)) { - type = "重度狂気表"; - $b = self.$getSevereInsanityTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else {return self.$getTableCommandResult(command, $$($nesting, 'TABLES'))}; - if (output['$==']("1")) { - return output}; - output = "" + (type) + "(" + (total_n) + ") > " + (output); - return output; - }, $BloodMoon_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$getRelationTable', $BloodMoon_getRelationTable$4 = function $$getRelationTable() { - var self = this, table = nil; - - - table = ["共感/不信", "友情/忌避", "愛情/嫌悪", "忠義/侮蔑", "憧憬/引け目", "保護欲/殺意"]; - return self.$get_table_by_1d6(table); - }, $BloodMoon_getRelationTable$4.$$arity = 0); - - Opal.def(self, '$getSceneTable', $BloodMoon_getSceneTable$5 = function $$getSceneTable() { - var self = this, table = nil; - - - table = ["どこまでも広がる荒野。風が吹き抜けていく。", "血まみれの惨劇の跡。いったい誰がこんなことを?", "都市の地下。かぼそい明かりがコンクリートを照らす。", "豪華な調度が揃えられた室内。くつろぎの空間を演出。", "普通の道端。様々な人が道を行き交う。", "明るく浮かぶ月の下。暴力の気配が満ちていく。", "打ち捨てられた廃墟。荒れ果てた景色に心も荒む。", "生活の様子が色濃く残る部屋の中。誰の部屋だろう?", "喧しい飲食店。騒ぐ人々に紛れつつ自体は進行する。", "ざわめく木立。踊る影。", "高い塔の上。都市を一望できる。"]; - return self.$get_table_by_2d6(table); - }, $BloodMoon_getSceneTable$5.$$arity = 0); - - Opal.def(self, '$getInitiativeSkillTable', $BloodMoon_getInitiativeSkillTable$6 = function $$getInitiativeSkillTable() { - var self = this, table = nil; - - - table = ["《自信/社会5》", "《地位/社会9》", "《日常/環境3》", "《人脈/環境9》", "《退路/環境11》", "《心臓/胴部7》"]; - return self.$get_table_by_1d6(table); - }, $BloodMoon_getInitiativeSkillTable$6.$$arity = 0); - - Opal.def(self, '$getBodyRegionTable', $BloodMoon_getBodyRegionTable$7 = function $$getBodyRegionTable() { - var self = this, table = nil; - - - table = ["《脳》", "《利き腕》", "《利き脚》", "《消化器》", "《感覚器》", "《攻撃したキャラクターの任意》", "《口》", "《呼吸器》", "《逆脚》", "《逆腕》", "《心臓》"]; - return self.$get_table_by_2d6(table); - }, $BloodMoon_getBodyRegionTable$7.$$arity = 0); - - Opal.def(self, '$getConfidenceHappyTable', $BloodMoon_getConfidenceHappyTable$8 = function $$getConfidenceHappyTable() { - var self = this, table = nil; - - - table = ["【戦闘能力】あなたはハンターとしての自分の戦闘能力に自信を持っています。たとえ負けようとも、それは運か相手か仲間が悪かったので、あなたの戦闘能力が低いわけではありません。", "【美貌】あなたは自分が美しいことを知っています。他人もあなたを美しいと思っているはず。鏡を見るたびに、あなたは自分の美しさに惚れ惚れしてしまいます。", "【血筋】あなたは名家の血を引く者です。祖先の栄光を背負い、家門の名誉を更に増すために、偉業をなす運命にあります。または、普通にいい家族に恵まれているのかもしれません。", "【趣味の技量】あなたは趣味の分野では第一人者です。必ずしも名前が知れ渡っているわけではありませんが、どんな相手にも負けない自信があります。どんな趣味かは自由です。", "【仕事の技量】職場で最も有能なもの、それがあなたです。誰もあなたの仕事の量とクオリティを超えられません。どんな仕事をしているかは自由に決めて構いません。", "【長生き】あなたはハンターとしてかなりの年月を過ごしてきたが、まだ死んでいません。これは誇るべきことです。そこらの若造には、まだまだ負けていません。"]; - return self.$get_table_by_1d6(table); - }, $BloodMoon_getConfidenceHappyTable$8.$$arity = 0); - - Opal.def(self, '$getStatusHappyTable', $BloodMoon_getStatusHappyTable$9 = function $$getStatusHappyTable() { - var self = this, table = nil; - - - table = ["【役職】あなたは職場、あるいはハンターの組織のなかで高い階級についています。そのため、下にいるものには命令でき、相応の敬意を払われます。", "【英雄】あなたはかつて偉業を成し遂げたことがあり、誰でもそれを知っています。少々くすぐったい気もしますが、英雄として扱われるのは悪くありません。", "【お金持ち】あなたには財産があります。それも生半可な財産ではなく、人が敬意を払うだけの財産です。あなたはお金に困ることはなく、その幸せを知っています", "【特権階級】あなたは国が定める特権階級の一員です。王族や貴族をイメージするとわかりやすいでしょう。あなたは、どこに行っても、それ相応の扱いを受けることになります。", "【人格者】誰もが認める人格者としての評判を持っているため、あなたのところには悩みを抱えた人々が引きも切らずに押しかけてきます。大変ですが、ちょっと楽しい", "【リーダー】あなたは所属している何らかの組織を率いる立場にあります。会社の社長や、部活動の部長などです。あなたは求められてその地位にあります"]; - return self.$get_table_by_1d6(table); - }, $BloodMoon_getStatusHappyTable$9.$$arity = 0); - - Opal.def(self, '$getDailyHappyTable', $BloodMoon_getDailyHappyTable$10 = function $$getDailyHappyTable() { - var self = this, table = nil; - - - table = ["【家】あなたの家はとても快適な空間です。コストと時間をかけて作り上げられた、あなたが居住するための空間。それはあなたの幸せの源なのです。", "【職場】あなたは仕事が楽しくて仕方ありません。意義ある仕事で払いも悪くなく、チームの仲間はみんないい奴ばかりです。残業は……ちょっとあるかもしれません。", "【行きつけの店】あなたには休みの日や職場帰りに立ち寄る行きつけの店があり、そこにいる時間は安らぎを感じることができます。店員とも顔見知りです。", "【ベッド】あなたは動物を飼っています。よく懐いた可愛い、またはかっこいい動物です。一緒に過ごす時間はあなたに幸せを感じさせてくれます", "【親しい隣人】おとなりさんやお向かいさん。よくお土産を渡したり、小さな子供を預かったりするような仲です。風邪を引いたときには、家事を手伝ってくれることも。", "【思い出】あなたは昔の思い出を心の支えにしています。何らかの幸せな記憶……それがあれば、この先にどんなつらいことが待っていても大丈夫でしょう。"]; - return self.$get_table_by_1d6(table); - }, $BloodMoon_getDailyHappyTable$10.$$arity = 0); - - Opal.def(self, '$getLinkHappyTable', $BloodMoon_getLinkHappyTable$11 = function $$getLinkHappyTable() { - var self = this, table = nil; - - - table = ["【理解ある家族】あなたの家族は、あなたがハンターであることを知ったうえで協力してくれます。これがどれほど稀なことかは、仲間に聞けば分かるでしょう。", "【有能な友人】あなたの友人は、モンスターの存在とあなたの本当の仕事を知っています。そして、直接戦うだけの技量はないものの、あなたの探索をサポートしてくれます。", "【愛する恋人】あなたには愛する人がいます。見つめあうだけで、あなたの心は舞い上がり……帰ってきません。この恋人を失うなんて、考えるだけでも恐ろしいことです。", "【同志の権力者】あなたにはモンスターの存在を知りながら、奴らに屈していない権力者との繋がりがあります。様々な違法行為をはたらく際に、役に立つでしょう。", "【得がたい師匠】あなたは使う武器を学んだ師匠がいて、それを通して兄弟弟子とも繋がりがあります。過酷な訓練を経て、彼らとあなたには強い絆ができています。", "【可愛い子供】あなたには子供がいます。聡明で魅力的、しかも健康な……将来を嘱望される子供です。子供が掴む幸せな未来を思う時、あなたの顔には笑みが広がります。"]; - return self.$get_table_by_1d6(table); - }, $BloodMoon_getLinkHappyTable$11.$$arity = 0); - - Opal.def(self, '$getEvacuationHappyTable', $BloodMoon_getEvacuationHappyTable$12 = function $$getEvacuationHappyTable() { - var self = this, table = nil; - - - table = ["【故郷の町】あなたは生まれ育った街を離れてハンターとして活動しています。いつの日かあの町へ帰る……その思いがあなたを戦いのなかで支えています。", "【待っている人】あなたがハンターをやめて、普通の暮らしに戻ることを待ちわびている人がいます。そして、あなたはその思いに応えたいと思っています。", "【就職先】あなたは狩りの報酬がなくなっても、すぐに入ることができる就職先があるので安心です。有能なのか過疎地域なのかは分かりませんが。", "【配偶者】あなたはハンターをやめたあとに家庭に入ろうと考えています。暮らしの設計はすでに済み、あとは実行するだけなのですが、なかなかそうはいきません。", "【大志】あなたがハンターとして活動しているのは、やむにやまれぬ事情があるからです。あなたには「本当にやりたかったこと」があり、いつかその夢をかなえる気でいます。", "【空想の王国】あなたには辛いことがあると白昼夢にふける、あるいは物語に没入する癖があり、そのときには非常に幸せな気分になることができます。"]; - return self.$get_table_by_1d6(table); - }, $BloodMoon_getEvacuationHappyTable$12.$$arity = 0); - - Opal.def(self, '$getAllSkillTable', $BloodMoon_getAllSkillTable$13 = function $$getAllSkillTable() { - var $a, $b, self = this, tableCSKT = nil, tableHSKT = nil, tableASKT = nil, tableBSKT = nil, tableLSKT = nil, tableESKT = nil, categoryNum = nil, detailText = nil, detailNum = nil; - - - tableCSKT = ["社会2:怯える", "社会3:脅す", "社会4:考えない", "社会5:自信", "社会6:黙る", "社会7:伝える", "社会8:だます", "社会9:地位", "社会10:笑う", "社会11:話す", "社会12:怒る"]; - tableHSKT = ["頭部2:聴く", "頭部3:感覚器", "頭部4:見る", "頭部5:反応", "頭部6:考える", "頭部7:脳", "頭部8:閃く", "頭部9:予感", "頭部10:叫ぶ", "頭部11:口", "頭部12:噛む"]; - tableASKT = ["腕部2:締める", "腕部3:殴る", "腕部4:斬る", "腕部5:利き腕", "腕部6:撃つ", "腕部7:操作", "腕部8:刺す", "腕部9:逆腕", "腕部10:振る", "腕部11:掴む", "腕部12:投げる"]; - tableBSKT = ["胴部2:塞ぐ", "胴部3:呼吸器", "胴部4:止める", "胴部5:受ける", "胴部6:測る", "胴部7:心臓", "胴部8:逸らす", "胴部9:かわす", "胴部10:耐える", "胴部11:消化器", "胴部12:落ちる"]; - tableLSKT = ["脚部2:走る", "脚部3:迫る", "脚部4:蹴る", "脚部5:利き脚", "脚部6:跳ぶ", "脚部7:仕掛ける", "脚部8:踏む", "脚部9:逆脚", "脚部10:這う", "脚部11:伏せる", "脚部12:歩く"]; - tableESKT = ["環境2:休む", "環境3:日常", "環境4:隠れる", "環境5:待つ", "環境6:現れる", "環境7:人脈", "環境8:捕らえる", "環境9:開ける", "環境10:逃げる", "環境11:退路", "環境12:休まない"]; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (categoryNum = ($a[0] == null ? nil : $a[0])), $b; - detailText = nil; - detailNum = 0; - if (categoryNum['$=='](1)) { - $b = self.$get_table_by_2d6(tableCSKT), $a = Opal.to_ary($b), (detailText = ($a[0] == null ? nil : $a[0])), (detailNum = ($a[1] == null ? nil : $a[1])), $b - } else if (categoryNum['$=='](2)) { - $b = self.$get_table_by_2d6(tableHSKT), $a = Opal.to_ary($b), (detailText = ($a[0] == null ? nil : $a[0])), (detailNum = ($a[1] == null ? nil : $a[1])), $b - } else if (categoryNum['$=='](3)) { - $b = self.$get_table_by_2d6(tableBSKT), $a = Opal.to_ary($b), (detailText = ($a[0] == null ? nil : $a[0])), (detailNum = ($a[1] == null ? nil : $a[1])), $b - } else if (categoryNum['$=='](4)) { - $b = self.$get_table_by_2d6(tableASKT), $a = Opal.to_ary($b), (detailText = ($a[0] == null ? nil : $a[0])), (detailNum = ($a[1] == null ? nil : $a[1])), $b - } else if (categoryNum['$=='](5)) { - $b = self.$get_table_by_2d6(tableLSKT), $a = Opal.to_ary($b), (detailText = ($a[0] == null ? nil : $a[0])), (detailNum = ($a[1] == null ? nil : $a[1])), $b - } else if (categoryNum['$=='](6)) { - $b = self.$get_table_by_2d6(tableESKT), $a = Opal.to_ary($b), (detailText = ($a[0] == null ? nil : $a[0])), (detailNum = ($a[1] == null ? nil : $a[1])), $b}; - return [detailText, "" + (categoryNum) + "," + (detailNum)]; - }, $BloodMoon_getAllSkillTable$13.$$arity = 0); - - Opal.def(self, '$getMildInsanityTable', $BloodMoon_getMildInsanityTable$14 = function $$getMildInsanityTable() { - var self = this, table = nil; - - - table = ["【誇大妄想】(判定に失敗するたびに【感情】が1増加する。)", "【記憶喪失】(【幸福】の修復判定にマイナス2の修正。)", "【こだわり】(戦闘中の行動を「パス」以外で一つ選択し、その行動をすると【感情】が6増加する。)", "【お守り中毒】(「幸運のお守り」を装備していない場合、全ての2d6判定にマイナス1の修正。)", "【不死幻想】(自分が受けるダメージが全て1増加する。)", "【血の飢え】(戦闘中に最低1体でも死亡させないと、戦闘終了時に【感情】10増加。【激情】は獲得できない。)"]; - return self.$get_table_by_1d6(table); - }, $BloodMoon_getMildInsanityTable$14.$$arity = 0); - - Opal.def(self, '$getSevereInsanityTable', $BloodMoon_getSevereInsanityTable$15 = function $$getSevereInsanityTable() { - var self = this, table = nil; - - - table = ["【幸福依存】(【幸福】を一つ選択し、その【幸福】が結果フェイズに失われたとき、死亡する。)", "【見えない友達】(自分の関わる「関係を深める」判定にマイナス3の修正がつく。)", "【臆病】(自分の行う妨害判定にマイナス2の修正がつく。)", "【陰謀論】(「幸福を味わう」判定にマイナス3の修正がつく。)", "【指令受信】(追跡フェイズBでの自分の行動は、可能な範囲でGMが決定する。)", "【猜疑心】(自分が「連携攻撃」を行うとき、関係の【深度】をダメージに加えられない。)"]; - return self.$get_table_by_1d6(table); - }, $BloodMoon_getSevereInsanityTable$15.$$arity = 0); - Opal.const_set($nesting[0], 'TABLES', $hash2(["ID2T", "IDT", "RAT"], {"ID2T": $hash2(["name", "type", "table"], {"name": "導入タイプ決定表(ハード込み)", "type": "D66", "table": "" + "11:依頼\\n《概要》 ハンターは任意のキャラクターに他のハンターの【幸福】を守るように依頼され、その依頼を受ける。\\n《目的》 他のハンターの【幸福】のうち一つを結果フェイズまで破壊されないこと。この【幸福】は、ゲームマスターが指定する。\\n《報酬》 経験値2\n" + "12:防衛\\n《概要》 ハンターは今回の敵となるモンスターに【幸福】を狙われている。モンスターを倒さなければ【幸福】を守る事は出来ない。\\n《目的》 自分の獲得している【幸福】のうち一つを結果フェイズで失わないこと。この【幸福】はゲームマスターが指定する。\\n《報酬》 経験値2\n" + "13:復讐\\n《概要》 ハンターは今回の敵となるモンスターに負けたことがある。戦闘に敗北したのか、それとも【幸福】を壊されたのか。いずれにせよ、復讐の時だ。\\n《目的》 結果フェイズまでにモンスターを無力化すること。\\n《報酬》 経験値2\n" + "14:関係\\n《概要》 ハンターは、特定の人物が参加しているから、という理由で狩りに参加する。憧れているのかライバルなのか、単に仲がいいのかは自由。\\n《目的》 結果フェイズの時点で他のハンターのうち一人との関係が、お互いに【深度】3以上になっていること。対象のハンターはシーンプレイヤーが決定する。\\n《報酬》 経験値2\n" + "15:挑戦\\n《概要》 ハンターは今回の敵となるモンスターのことをなんらかの理由で知り、自分から戦いに赴く。\\n《目的》 結果フェイズまでハンター全員が生き残り、かつ、フォロワーやモンスターに変化していないこと。\\n《報酬》 経験値2\n" + "16:救済\\n《概要》 ハンターは今回の敵となるフォロワーのうち一人を救うために戦う。\\n《目的》 結果フェイズまでに対象のフォロワーを「説得」で無力化する。このフォロワーはシーンプレイヤーが決定する。\\n《報酬》 経験値2\n" + "22:復調\\n 《概要》 ハンターは正気を取り戻し、【狂気】を癒すために戦う。\\n《目的》 結果フェイズまでに自分の【狂気】を2減らす。\\n《報酬》 経験値2\n" + "23:撃滅 \\n《概要》 ハンターは狩りの対象であるモンスターを倒すために育成されていたり、モンスターに【幸福】を全て破壊された過去を持っている。\\n《目的》 モンスターを自分で無力化する。\\n《報酬》 経験値6\n" + "24:競争 \\n《概要》 ハンターは自分で決めたライバルに勝つために狩りを行う。\\n《目的》 他のプレイヤーのハンターからライバルを一人選ぶ。結果フェイズの段階で、ライバルよりも多くのモンスターとフォロワーを攻撃で倒している事。このライバルはシーンプレイヤーが選択する。\\n《報酬》 経験値6\n" + "25:育成 \\n《概要》 ハンターは仲間を成長させるために狩りに出る。\\n《目的》 他の狩人すべてに導入タイプの目的を達成させる。\\n《報酬》 達成した人数+2の経験値\n" + "26:窮乏 \\n《概要》 ハンターは貧乏なので、金のために狩りをしなければならない。\\n《目的》 自分が装備しているアイテムから一つを対象として選ぶ。対象は即座に破壊される。そのうえで、結果フェイズまで対象が書いてあったアイテム欄を使用しない。この対象はシーンプレイヤーが選択する。\\n《報酬》 経験値6\n" + "33:泰然 \\n《概要》 ハンターはクールでかっこいい自分のスタイルを守るために狩りをする。\\n《目的》 結果フェイズまで【激情】を使用しない。\\n《報酬》 経験値8\n" + "34:対話 \\n《概要》 ハンターはモンスターと話をするために追いかけていく。\\n《目的》 モンスターに対する関係【深度】が2以上になっている状態で決戦フェイズに入る。\\n《報酬》 経験値8\n" + "35:完勝 \\n《概要》 ハンターは今回の敵となるモンスターに勝ったことがある。今度こそ、とどめを刺すのだ。\\n《目的》 部位ダメージを受けずにモンスターを無力化する。\\n《報酬》 経験値4\n" + "36:依頼(ハード) \\n《概要》 ハンターは任意のキャラクターに他のハンターの【幸福】を守るように依頼され、その依頼を受ける。\\n《目的》 他のハンターの【幸福】を一つも結果フェイズまで破壊されないこと。対象となるハンターは、ゲームマスターが指定する。\\n《報酬》 経験値4\n" + "44:防衛(ハード) \\n《概要》 ハンターは今回の敵となるモンスターに自分の【幸福】を狙われている。モンスターを倒さなければ、【幸福】を守ることはできない。\\n《目的》 自分の獲得している【幸福】を一つも結果フェイズで失わないこと。\\n《報酬》 経験値4\n" + "45:復讐(ハード) \\n《概要》 ハンターは今回の敵となるモンスターに負けたことがある。戦闘に敗北したのか、それとも、【幸福】を壊されたのか。いずれにせよ、復讐の時だ。\\n《目的》 結果フェイズまでにモンスターとフォロワー全てを攻撃で倒すこと。自分の攻撃でなくてもかまわない。\\n《報酬》 経験値6\n" + "46:関係(ハード) \\n《概要》 ハンターは、特定の人物が参加しているから、という理由で狩りに参加する。憧れているのかライバルなのか、単に仲がいいのかは自由。\\n《目的》 結果フェイズの時点で他のハンターのうち一人との関係が、お互いに【深度】5になっていること。対象のハンターはシーンプレイヤーが決定する。\\n《報酬》 経験値4\n" + "55:挑戦(ハード) \\n《概要》 ハンターは今回の敵となるモンスターのことをなんらかの理由で知り、自分から戦いに赴く。\\n《目的》 結果フェイズまでハンター全員が一度も無力化されずに生き残り、かつ、フォロワーやモンスターに変化していないこと。\\n《報酬》 経験値6\n" + "56:救済(ハード) \\n《概要》 ハンターは今回の敵となるフォロワー全員を救うために戦う。\\n《目的》 結果フェイズまでにフォロワー全員を「説得」で無力化する。\\n《報酬》 経験値6\n" + "66:振り直し\n"}), "IDT": $hash2(["name", "type", "table"], {"name": "導入タイプ決定表(ノーマル)", "type": "1d6", "table": "" + "依頼\\n《概要》 ハンターは任意のキャラクターに他のハンターの【幸福】を守るように依頼され、その依頼を受ける。\\n《目的》 他のハンターの【幸福】のうち一つを結果フェイズまで破壊されないこと。この【幸福】は、ゲームマスターが指定する。\\n《報酬》 経験値2\n" + "防衛\\n《概要》 ハンターは今回の敵となるモンスターに【幸福】を狙われている。モンスターを倒さなければ【幸福】を守る事は出来ない。\\n《目的》 自分の獲得している【幸福】のうち一つを結果フェイズで失わないこと。この【幸福】はゲームマスターが指定する。\\n《報酬》 経験値2\n" + "復讐\\n《概要》 ハンターは今回の敵となるモンスターに負けたことがある。戦闘に敗北したのか、それとも【幸福】を壊されたのか。いずれにせよ、復讐の時だ。\\n《目的》 結果フェイズまでにモンスターを無力化すること。\\n《報酬》 経験値2\n" + "関係\\n《概要》 ハンターは、特定の人物が参加しているから、という理由で狩りに参加する。憧れているのかライバルなのか、単に仲がいいのかは自由。\\n《目的》 結果フェイズの時点で他のハンターのうち一人との関係が、お互いに【深度】3以上になっていること。対象のハンターはシーンプレイヤーが決定する。\\n《報酬》 経験値2\n" + "挑戦\\n《概要》 ハンターは今回の敵となるモンスターのことをなんらかの理由で知り、自分から戦いに赴く。\\n《目的》 結果フェイズまでハンター全員が生き残り、かつ、フォロワーやモンスターに変化していないこと。\\n《報酬》 経験値2\n" + "救済\\n《概要》 ハンターは今回の敵となるフォロワーのうち一人を救うために戦う。\\n《目的》 結果フェイズまでに対象のフォロワーを「説得」で無力化する。このフォロワーはシーンプレイヤーが決定する。\\n《報酬》 経験値2\n"}), "RAT": $hash2(["name", "type", "table"], {"name": "関係属性表", "type": "d66n", "table": "" + "11:愛情\n" + "12:憧れ\n" + "13:怒り\n" + "14:悲しみ\n" + "15:感謝\n" + "16:期待\n" + "21:憧れ\n" + "22:共感\n" + "23:恐怖\n" + "24:嫌悪\n" + "25:困惑\n" + "26:罪悪感\n" + "31:怒り\n" + "32:恐怖\n" + "33:殺意\n" + "34:嫉妬\n" + "35:憎悪\n" + "36:忠義\n" + "41:悲しみ\n" + "42:嫌悪\n" + "43:嫉妬\n" + "44:不信感\n" + "45:侮蔑\n" + "46:保護欲\n" + "51:感謝\n" + "52:困惑\n" + "53:憎悪\n" + "54:侮蔑\n" + "55:満足感\n" + "56:友情\n" + "61:期待\n" + "62:罪悪感\n" + "63:忠義\n" + "64:保護欲\n" + "65:友情\n" + "66:喜び\n"})}).$freeze()); - return self.$setPrefixes($rb_plus(["ST", "IST", "BRT", "CHT", "SHT", "DHT", "LHT", "EHT", "AST", "MIT", "SIT"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/CardRanker.js b/src/assets/dicebot/CardRanker.js deleted file mode 100644 index 50f8218a8..000000000 --- a/src/assets/dicebot/CardRanker.js +++ /dev/null @@ -1,135 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$==', '$<=', '$>=', '$+', '$getRandumMonster', '$upcase', '$===', '$last_match', '$to_i', '$getMonster', '$getTableCommandResult', '$getColorTable', '$get_table_by_1d6', '$getMonsterTables', '$-', '$get_table_by_2d6', '$[]', '$<', '$index', '$debug', '$nil?', '$freeze', '$setPrefixes', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'CardRanker'); - - var $nesting = [self].concat($parent_nesting), $CardRanker_initialize$1, $CardRanker_check_2D6$2, $CardRanker_rollDiceCommand$3, $CardRanker_getRandumMonster$4, $CardRanker_getColorTable$5, $CardRanker_getMonsterTables$6, $CardRanker_getMonster$7; - - - Opal.const_set($nesting[0], 'ID', "CardRanker"); - Opal.const_set($nesting[0], 'NAME', "カードランカー"); - Opal.const_set($nesting[0], 'SORT_KEY', "かあとらんかあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "ランダムでモンスターカードを選ぶ (RM)\n" + "特定のモンスターカードを選ぶ (CMxy x:色、y:番号)\n" + " 白:W、青:U、緑:V、金:G、赤:R、黒:B\n" + " 例)CMW1→白の2:白竜 CMG12→金の12:土精霊\n" + "場所表 (ST)\n" + "街中場所表 (CST)\n" + "郊外場所表 (OST)\n" + "学園場所表 (GST)\n" + "運命表 (DT)\n" + "大会運命表 (TDT)\n" + "学園運命表 (GDT)\n" + "崩壊運命表 (CDT)\n"); - - Opal.def(self, '$initialize', $CardRanker_initialize$1 = function $$initialize() { - var $iter = $CardRanker_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $CardRanker_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $CardRanker_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $CardRanker_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $CardRanker_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル" - } else if ($truthy($rb_ge(dice_total, 12))) { - return $rb_plus(" > スペシャル > ", self.$getRandumMonster()) - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $CardRanker_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $CardRanker_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var self = this, $case = nil, color = nil, index = nil; - - - command = command.$upcase(); - return (function() {$case = command; - if (/^RM$/i['$===']($case)) {return self.$getRandumMonster()} - else if (/^CM(\w)(\d+)$/i['$===']($case)) { - color = $$($nesting, 'Regexp').$last_match(1).$upcase(); - index = $$($nesting, 'Regexp').$last_match(2).$to_i(); - return self.$getMonster(color, index);} - else {return self.$getTableCommandResult(command, $$($nesting, 'TABLES'))}})(); - }, $CardRanker_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$getRandumMonster', $CardRanker_getRandumMonster$4 = function $$getRandumMonster() { - var $a, $b, self = this, type = nil, colorTable = nil, color = nil, colorIndex = nil, monsters = nil, monsterName = nil, monsterIndex = nil, output = nil; - - - type = "ランダムモンスター選択"; - colorTable = self.$getColorTable(); - $b = self.$get_table_by_1d6(colorTable), $a = Opal.to_ary($b), (color = ($a[0] == null ? nil : $a[0])), (colorIndex = ($a[1] == null ? nil : $a[1])), $b; - monsters = self.$getMonsterTables($rb_minus(colorIndex, 1)); - $b = self.$get_table_by_2d6(monsters), $a = Opal.to_ary($b), (monsterName = ($a[0] == null ? nil : $a[0])), (monsterIndex = ($a[1] == null ? nil : $a[1])), $b; - output = "" + (type) + "(" + (colorIndex) + "," + (monsterIndex) + ") > " + (color) + "の" + (monsterIndex) + ":" + (monsterName); - return output; - }, $CardRanker_getRandumMonster$4.$$arity = 0); - - Opal.def(self, '$getColorTable', $CardRanker_getColorTable$5 = function $$getColorTable() { - var self = this; - - return ["白", "青", "緑", "金", "赤", "黒"] - }, $CardRanker_getColorTable$5.$$arity = 0); - - Opal.def(self, '$getMonsterTables', $CardRanker_getMonsterTables$6 = function $$getMonsterTables(colorIndex) { - var self = this, tables = nil; - - - tables = [["白竜", "僧侶", "格闘家", "斧使い", "剣士", "槍士", "歩兵", "弓兵", "砲兵", "天使", "軍神"], ["水竜", "魚", "魚人", "イカ", "蟹", "探偵", "海賊", "魔術師", "使い魔", "雲", "水精霊"], ["緑竜", "ワーム", "鳥人", "鳥", "獣", "獣人", "エルフ", "妖精", "昆虫", "植物", "森精霊"], ["金竜", "宝石", "岩石", "鋼", "錬金術師", "魔法生物", "ドワーフ", "機械", "運命", "女神", "土精霊"], ["火竜", "竜人", "恐竜", "戦車", "蛮族", "小鬼", "大鬼", "巨人", "雷", "炎", "火精霊"], ["黒竜", "闇騎士", "怪物", "忍者", "妖怪", "蝙蝠", "吸血鬼", "不死者", "幽霊", "悪魔", "邪神"]]; - return tables['$[]'](colorIndex); - }, $CardRanker_getMonsterTables$6.$$arity = 1); - - Opal.def(self, '$getMonster', $CardRanker_getMonster$7 = function $$getMonster(color, monsterIndex) { - var self = this, type = nil, colorWords = nil, colorIndex = nil, colorTable = nil, monsters = nil, monsterName = nil, output = nil; - - - if ($truthy($rb_lt(monsterIndex, 2))) { - return nil}; - type = "モンスター選択"; - colorWords = ["W", "U", "V", "G", "R", "B"]; - colorIndex = colorWords.$index(color); - self.$debug("colorIndex"); - if ($truthy(colorIndex['$nil?']())) { - return nil}; - colorTable = self.$getColorTable(); - color = colorTable['$[]'](colorIndex); - monsters = self.$getMonsterTables(colorIndex); - self.$debug("monsters", monsters); - self.$debug("monsterIndex", monsterIndex); - monsterName = monsters['$[]']($rb_minus(monsterIndex, 2)); - if ($truthy(monsterName['$nil?']())) { - return nil}; - output = "" + (type) + " > " + (color) + "の" + (monsterIndex) + ":" + (monsterName); - return output; - }, $CardRanker_getMonster$7.$$arity = 2); - Opal.const_set($nesting[0], 'TABLES', $hash2(["BFT", "CDT", "CST", "DT", "GDT", "OST", "GST", "ST", "TDT", "WT"], {"BFT": $hash2(["name", "type", "table"], {"name": "バトルフィールド表", "type": "1D6", "table": "" + "ハイ・アンティ/戦闘フェイズの終了時、勝者は通常習得できるモンスターカード一つに加えて、もう一つ敗者からモンスターカードを選んで手に入れることができる。//通常よりも多くのカードを賭けの対象にするルール。\n" + "バーニング/ラウンドの終了時、すべてのキャラクターは【LP】現在値を3点失う。//マグマの近くや極寒の地など体力を削られるような過酷な環境で行われるルール。\n" + "ノーマル/特に影響なし。//通常のルール。\n" + "ハード/すべてのキャラクターの判定にプラス1の修正を加える。また、ラウンド終了時にすべてのキャラクターはモンスターカードを一つ選んで破壊状態(ルールブックP187参照)にしなければならない。//風の強い場所や水中など、カードを扱いにくい環境でのルール。\n" + "スピード/モンスターカードのリスクが1高いものとして扱われる。また、判定に失敗した場合、速度から振り落とされて1D6のダメージを受ける。//バイクやローラーボードなどを使って行われる高速カードバトルルール。\n" + "デスルール/戦闘フェイズでも死亡判定が発声する。また、戦闘不能になったキャラクターは即座に死亡判定を行う。ただし、攻撃を行った側がデスルールを使用しないことを選択すれば、死亡判定は発生しない。//モンスターによって実際のダメージを与える、死の危険性があるルール。\n"}), "CDT": $hash2(["name", "type", "table"], {"name": "崩壊運命表", "type": "1D6", "table": "" + "レジェンドカードがあなたを崩壊する大地に呼び寄せた。暴虐な振る舞いをするダークランカーを倒すことをレジェンドカードは望んでいる。\n" + "あなたはひょんなことから人を助けた。すると、あなたはいつの間にか救世主と呼ばれる存在になっていた、救世主であるあなたに人々は懇願する。ダークランカーを倒してくれと。\n" + "あなたの住むところはダークランカーの力が及ばない楽園であった。しかし、楽園はダークランカー一味の襲撃にあい、あなただけが生き残ってしまった。楽園を出たあなたは戦いを決意する。\n" + "世の中は変わった。だが、愛する人(もしくは愛する物や家族)は健在だ。あなたは愛する人を護るためにも、ダークランカーを倒すべく動き始めた。\n" + "あなたはこの世界が好きだ。それはどんな理由でもよい。しかし、ダークランカーが持つダークカードはこの世界を壊す。ならば、倒してこの世界を守らねばならない。\n" + "崩壊していく大地。泣き叫ぶ人々の声。あなたはこの状況を作ったのが、あなたの身内であると知る。ダークカードの手から身内を救うためにも、あなたはカードを手にとった。\n"}), "CST": $hash2(["name", "type", "table"], {"name": "街中場所表", "type": "1D6", "table": "" + "カードショップ/ソウルカードを遊ぶ者たちが集まる場所。プレイスペースもあれば、カードの販売もしている。\n" + "ビル街/ビルが立ち並ぶ街。ビジネスマンが忙しなく動き、チェーン店が多く見られる。\n" + "駅前/人が集まる駅前。電車から降りてくる人は多く、今日も人と人がすれ違う。\n" + "食事処/レストランから大衆食堂、喫茶店やバーなど、食事は人の活力であり、カードランカーにも元気は必要だ。\n" + "道路/長く広い道路。車と人が通過していく場所だが、時おりトラブルを抱えたカードランカー同士が戦っている。\n" + "プール/都会にあるプール。都会の生活に疲れた人々が集まる場所。時おり、ソウルカードの戦いも見られる。\n"}), "DT": $hash2(["name", "type", "table"], {"name": "運命表", "type": "1D6", "table": "" + "あなたが欲しているカードはダークランカーが持っているかもしれないという情報を掴んだ。ダークランカーを倒し、アンティルールでカードを手に入れなければならない。\n" + "ダークランカーとなった人物とあなたはカード仲間であったが、ある日見たその人物はダークカードの力にとり憑かれて豹変していた。あなたは仲間をカードによって救うため、戦いを決意した。\n" + "ダークランカーはあなたの仲間や身内、大切なモノを傷つけた(壊した)。あなたの大切なものを傷つけたダークランカー、許しはしない。\n" + "あなたの持つレジェンドカードが、ダークランカーもしくは他のレジェンドカードが出現することを察知した。レジェンドカードに導かれるまま、キミはダークランカー(レジェンドカード)を探し始めた。\n" + "カードランカーの組織やソウルカードの安定を願う人からそのダークランカーを倒すように依頼を受けた、あなたはその仕事を受ける価値があると思った。そう思った理由は報酬でもいいし、あなたの流儀でもよい。\n" + "ダークランカーとあなたは偶然にも出会ってしまった。ダークランカーは危険な存在だ。見てしまった以上、放っておくわけにはいかない。\n"}), "GDT": $hash2(["name", "type", "table"], {"name": "学園運命表", "type": "1D6", "table": "" + "あなたが過ごしているクラスや寮、部活が潰されそうになった。その裏にはダークランカーの影響があるらしい。\n" + "学園の偉い人から、カードランカーであるあなたに調査依頼が入った。どうやらダークランカーが学園に干渉しているとのこと。\n" + "学園内のカードが奪われた。ダークランカーの影響だろう。大切にされていたカードを取り戻すために、あなたは立ち上がった。\n" + "学内に邪悪な影響を受けたカードが入り込んでいた。おそらく、ダークランカーの仕業に違いない。\n" + "ダークランカーによって被害を受けた生徒があなたに相談してきた。あなたはその生徒のためにもダークランカーの調査に乗り出した。\n" + "ダークランカーの影響を受け、授業や部活動はまともにできなくなってしまった。あなたは元の学校生活を再開させるためにも、調査を始めた。\n"}), "OST": $hash2(["name", "type", "table"], {"name": "郊外場所表", "type": "1D6", "table": "" + "カードショップ/ソウルカードを遊ぶ者たちが集まる場所。少し治安と客層が悪いが、賞金稼ぎも集まる。\n" + "荒野/動植物も少なく、ピリピリとした雰囲気のある場所。\n" + "遺跡/古代の遺跡。レジェンドカードやモンスターカードはこうした場所に発生したり、隠されていたりすることが多い。\n" + "平原/どこまでも続く平原。動物も温厚であり、生い茂る草花が柔らかな印象を与える場所だ。\n" + "山岳/険しい道が続く山。カードの精霊たちが生息していることもあるが、カード山賊団には気をつけねばならない。\n" + "海川/海や川。山と同じくカードの精霊たちが住んでいる場所だ。安らげる場所でもあり、休憩している人がソウルカードをしている。\n"}), "GST": $hash2(["name", "type", "table"], {"name": "学園場所表", "type": "1D6", "table": "" + "購買/学生にとっては学園内で唯一買い物ができる場所。パンの他に、カードパックが売っている。\n" + "グラウンド/体育館/運動するのに適した広い空間だが、同時にソウルカードをやるのにもうってつけの場所である。\n" + "屋上/校舎の屋上は一部の生徒には人気のスポットだ。今日も強い風が彼らを迎えている。\n" + "教室/日が昇っている間は、学生たちの声で賑やかな場所。夕暮れからは少し物哀しく、寂しい。\n" + "校舎裏/学校の中でも珍しく人目につかない場所。不良たちがソウルカードをやっている姿が見られる。\n" + "部活棟/部活をやる者のために用意された場所。しかし、サボってソウルカードをやっているところも。\n"}), "ST": $hash2(["name", "type", "table"], {"name": "場所表", "type": "1D6", "table": "" + "カード系/ショップや大会の会場など、ソウルカードに関係がある場所。カードランカーたちも集まってくる。\n" + "自然/公園や山など、自然の息吹が感じられる場所。耳を澄ませばカードの声も聞こえるかもしれない。\n" + "神秘/古代の施設や、神社・教会などの神秘的な場所。レジェンドカードが隠されているかもしれない。\n" + "安息/自宅など、安らげる空間。そこはあなたが安らげる場所であり、思い出の地なのかもしれない。\n" + "街中/人々が住む街中。何気なく落ちているカードの中には、価値があるものもあるかも。\n" + "水辺/プールや海岸など、水が近くに存在する場所。ひとまず、ここでひと息つけそうだ。\n"}), "TDT": $hash2(["name", "type", "table"], {"name": "大会運命表", "type": "1D6", "table": "" + "あなたは友人と共に大会に出場した。しかし、友人はダークランカーによって倒されてしまった。\n" + "あなたは大会の商品を狙い、大会に出場した。だが、ダークランカーもそれを狙っているらしい。\n" + "あなたは大会の運営者から、大会に関わっているダークランカーの撃破を依頼された。\n" + "あなたはカードの導くままに、大会に関わってくるダークランカーの出現を察知した。\n" + "あなたは大会の一選手として戦っていた。だが、謎の刺客によって襲われた。きっとダークランカーの仕業に違いない。\n" + "あなたは大会に出場し、優勝候補と言われているカードランカーだ。だが、そんなキミをダークランカーは襲った。\n"}), "WT": $hash2(["name", "type", "table"], {"name": "変調表", "type": "1D6", "table": "" + "猛毒/ラウンド終了時に【LP】の現在値を3点失う。また【LP】の現在値を回復できない。\n" + "炎上/ラウンド終了時に、モンスターカードを一つ選び破壊状態にしなければならない。既に破壊状態になっているものは選べない。\n" + "妨害/攻撃判定にマイナス2の修正を受ける。\n" + "捕縛/ブロック判定にマイナス2の修正を受ける。\n" + "召喚制限/「タイプ:補助」のモンスターカードを使用できない。\n" + "暗闇/「タイプ:支援」のモンスターカードを使用できない。\n"})}).$freeze()); - return self.$setPrefixes($rb_plus(["RM", "CM.*"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/ChaosFlare.js b/src/assets/dicebot/ChaosFlare.js deleted file mode 100644 index 125cc4a6d..000000000 --- a/src/assets/dicebot/ChaosFlare.js +++ /dev/null @@ -1,682 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/normalize"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; - - Opal.add_stubs(['$module_function', '$===', '$==', '$to_i']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Normalize'); - - var $nesting = [self].concat($parent_nesting), $Normalize_comparison_operator$1, $Normalize_target_number$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Normalize_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if (/<=|==|=>/['$===']($case)) {return ">="} - else if (/<>|!=|=!/['$===']($case)) {return "!="} - else if (//['$===']($case)) {return ">"} - else if (/\=/['$===']($case)) {return "=="} - else { return nil }})() - }, $Normalize_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$target_number', $Normalize_target_number$2 = function $$target_number(val) { - var self = this; - - if (val['$==']("?")) { - return val - } else { - return val.$to_i() - } - }, $Normalize_target_number$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/command_parser"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$attr_accessor', '$include', '$format_modifier', '$===', '$join', '$tokenize', '$new', '$lhs', '$take_cmp_op', '$cmp_op=', '$-', '$cmp_op', '$expr', '$target_number=', '$<', '$size', '$private', '$split', '$gsub', '$take', '$literal?', '$command_suffix', '$loop', '$consume', '$+', '$mul', '$command=', '$modify_number=', '$critical', '$unary', '$critical=', '$fumble', '$fumble=', '$dollar', '$dollar=', '$each', '$==', '$=~', '$[]', '$comparison_operator']); - - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/normalize"); - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'CommandParser'); - - var $nesting = [self].concat($parent_nesting), $CommandParser_initialize$1, $CommandParser_parse$4, $CommandParser_tokenize$5, $CommandParser_lhs$7, $CommandParser_command_suffix$9, $CommandParser_literal$ques$11, $CommandParser_take$13, $CommandParser_take_cmp_op$14; - - self.$$prototype.error = self.$$prototype.parsed = self.$$prototype.idx = self.$$prototype.tokens = self.$$prototype.literals = nil; - - - Opal.def(self, '$initialize', $CommandParser_initialize$1 = function $$initialize($a) { - var $post_args, literals, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - literals = $post_args;; - self.literals = literals; - return (self.round_type = "omit"); - }, $CommandParser_initialize$1.$$arity = -1); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Parsed'); - - var $nesting = [self].concat($parent_nesting), $Parsed_initialize$2, $Parsed_to_s$3; - - self.$$prototype.critical = self.$$prototype.fumble = self.$$prototype.dollar = self.$$prototype.modify_number = self.$$prototype.command = self.$$prototype.cmp_op = self.$$prototype.target_number = nil; - - self.$attr_accessor("command", "critical", "fumble", "dollar", "modify_number", "cmp_op", "target_number"); - self.$include($$($nesting, 'ModifierFormatter')); - - Opal.def(self, '$initialize', $Parsed_initialize$2 = function $$initialize() { - var self = this; - - - self.critical = nil; - self.fumble = nil; - return (self.dollar = nil); - }, $Parsed_initialize$2.$$arity = 0); - return (Opal.def(self, '$to_s', $Parsed_to_s$3 = function $$to_s(suffix_position) { - var self = this, c = nil, f = nil, d = nil, m = nil, $case = nil; - - - - if (suffix_position == null) { - suffix_position = "after_command"; - }; - c = (function() {if ($truthy(self.critical)) { - return "" + "@" + (self.critical) - } else { - return nil - }; return nil; })(); - f = (function() {if ($truthy(self.fumble)) { - return "" + "#" + (self.fumble) - } else { - return nil - }; return nil; })(); - d = (function() {if ($truthy(self.dollar)) { - return "" + "$" + (self.dollar) - } else { - return nil - }; return nil; })(); - m = self.$format_modifier(self.modify_number); - return (function() {$case = suffix_position; - if ("after_command"['$===']($case)) {return [self.command, c, f, d, m, self.cmp_op, self.target_number].$join()} - else if ("after_modify_number"['$===']($case)) {return [self.command, m, c, f, d, self.cmp_op, self.target_number].$join()} - else if ("after_target_number"['$===']($case)) {return [self.command, m, self.cmp_op, self.target_number, c, f, d].$join()} - else { return nil }})(); - }, $Parsed_to_s$3.$$arity = -1), nil) && 'to_s'; - })($nesting[0], null, $nesting); - - Opal.def(self, '$parse', $CommandParser_parse$4 = function $$parse(expr, round_type) { - var $a, self = this, $writer = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - self.parsed = $$($nesting, 'Parsed').$new(); - self.$lhs(); - if ($truthy(self.error)) { - return nil}; - - $writer = [self.$take_cmp_op()]; - $send(self.parsed, 'cmp_op=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(self.parsed.$cmp_op())) { - return self.$expr() - } else { - return nil - }; return nil; })()]; - $send(self.parsed, 'target_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy(($truthy($a = $rb_lt(self.idx, self.tokens.$size())) ? $a : self.error))) { - return nil}; - return self.parsed; - }, $CommandParser_parse$4.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $CommandParser_tokenize$5 = function $$tokenize(expr) { - var $$6, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-*\/@#\$]|[<>!=]+/], ($$6 = function(e){var self = $$6.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$split(" ") - }, $CommandParser_tokenize$5.$$arity = 1); - - Opal.def(self, '$lhs', $CommandParser_lhs$7 = function $$lhs() { - var $$8, self = this, command = nil, ret = nil, $writer = nil; - - - command = self.$take(); - if ($truthy(self['$literal?'](command))) { - } else { - - self.error = true; - return nil; - }; - self.$command_suffix(); - ret = 0; - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$8 = function(){var self = $$8.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$8.$$s = self, $$8.$$brk = $brk, $$8.$$arity = 0, $$8)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - self.$command_suffix(); - - $writer = [command]; - $send(self.parsed, 'command=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [ret]; - $send(self.parsed, 'modify_number=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - }, $CommandParser_lhs$7.$$arity = 0); - - Opal.def(self, '$command_suffix', $CommandParser_command_suffix$9 = function $$command_suffix() { - var $$10, self = this; - - return (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$10 = function(){var self = $$10.$$s || this, $writer = nil; - if (self.parsed == null) self.parsed = nil; - - if ($truthy(self.$consume("@"))) { - - if ($truthy(self.parsed.$critical())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'critical=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else if ($truthy(self.$consume("#"))) { - - if ($truthy(self.parsed.$fumble())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'fumble=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else if ($truthy(self.$consume("$"))) { - - if ($truthy(self.parsed.$dollar())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'dollar=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else { - - Opal.brk(nil, $brk) - }}, $$10.$$s = self, $$10.$$brk = $brk, $$10.$$arity = 0, $$10)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})() - }, $CommandParser_command_suffix$9.$$arity = 0); - - Opal.def(self, '$literal?', $CommandParser_literal$ques$11 = function(command) {try { - - var $$12, self = this; - - - $send(self.literals, 'each', [], ($$12 = function(lit){var self = $$12.$$s || this, $case = nil; - - - - if (lit == null) { - lit = nil; - }; - return (function() {$case = lit; - if ($$($nesting, 'String')['$===']($case)) {if (command['$=='](lit)) { - Opal.ret(true) - } else { - return nil - }} - else if ($$($nesting, 'Regexp')['$===']($case)) {if ($truthy(command['$=~'](lit))) { - Opal.ret(true) - } else { - return nil - }} - else { return nil }})();}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - return false; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $CommandParser_literal$ques$11.$$arity = 1); - - Opal.def(self, '$take', $CommandParser_take$13 = function $$take() { - var self = this, ret = nil; - - - ret = self.tokens['$[]'](self.idx); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $CommandParser_take$13.$$arity = 0); - return (Opal.def(self, '$take_cmp_op', $CommandParser_take_cmp_op$14 = function $$take_cmp_op() { - var self = this; - - return $$($nesting, 'Normalize').$comparison_operator(self.$take()) - }, $CommandParser_take_cmp_op$14.$$arity = 0), nil) && 'take_cmp_op'; - })($nesting[0], $$($nesting, 'ArithmeticEvaluator'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range; - - Opal.add_stubs(['$require', '$setPrefixes', '$bcdice', '$set2Decks2Jokers', '$cardTrader', '$card_place=', '$-', '$canTapCard=', '$==', '$<=', '$>=', '$+', '$>', '$start_with?', '$roll_fate_table', '$cf_roll', '$private', '$match', '$[]', '$to_i', '$include?', '$floor', '$/', '$%', '$!', '$roll', '$new', '$parse', '$command', '$critical', '$fumble', '$dollar=', '$<', '$cmp_op', '$modify_number', '$compact', '$to_s', '$target_number', '$difference', '$join', '$-@', '$freeze']); - - self.$require("utils/command_parser"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ChaosFlare'); - - var $nesting = [self].concat($parent_nesting), $ChaosFlare_postSet$1, $ChaosFlare_check_2D6$2, $ChaosFlare_rollDiceCommand$3, $ChaosFlare_roll_fate_table$4, $ChaosFlare_cf_roll$5, $ChaosFlare_difference$6; - - self.$$prototype.cmd = nil; - - Opal.const_set($nesting[0], 'ID', "ChaosFlare"); - Opal.const_set($nesting[0], 'NAME', "カオスフレア"); - Opal.const_set($nesting[0], 'SORT_KEY', "かおすふれあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "判定\n" + "CF\n" + " 書式: [ダイスの数]CF[修正値][@クリティカル値][#ファンブル値][>=目標値]\n" + " CF以外は全て省略可能\n" + " 例:\n" + " - CF 2D6,クリティカル値12,ファンブル値2で判定\n" + " - CF+10@10 修正値+10,クリティカル値10で判定\n" + " - CF+10#3 修正値+10,ファンブル値3で判定\n" + " - CF+10>=10 目標値を指定した場合、差分値も出力する\n" + " - 3CF+10@10#3>=10 3D6での判定\n" + " - CF@9#3+8>=10\n" + "\n" + "2D6\n" + " ファンブル値2で判定する。クリティカルの判定は行われない。\n" + " 目標値が設定された場合、差分値を出力する。\n" + " - 2D6+4>=10\n" + "\n" + "各種表\n" + " FT: 因縁表\n" + " FTx: 数値を指定すると因果表の値を出力する\n" + " - FT -> 11から66の間でランダム決定\n" + " - FT23 -> 23の項目を出力\n" + " - FT0\n" + " - FT7\n"); - self.$setPrefixes(["\\d*CF.*", "FT\\d*"]); - - Opal.def(self, '$postSet', $ChaosFlare_postSet$1 = function $$postSet() { - var self = this, $writer = nil; - - if ($truthy(self.$bcdice())) { - - self.$bcdice().$cardTrader().$set2Decks2Jokers(); - - $writer = [0]; - $send(self.$bcdice().$cardTrader(), 'card_place=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [false]; - $send(self.$bcdice().$cardTrader(), 'canTapCard=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else { - return nil - } - }, $ChaosFlare_postSet$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $ChaosFlare_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this, output = nil; - - - if (target['$==']("?")) { - return ""}; - output = ""; - if ($truthy($rb_le(dice_total, 2))) { - - total = $rb_minus(total, 20); - output = " > ファンブル(-20)";}; - if (cmp_op['$=='](">=")) { - } else { - return output - }; - if ($truthy($rb_ge(total, target))) { - - output = $rb_plus(output, " > 成功"); - if ($truthy($rb_gt(total, target))) { - output = $rb_plus(output, "" + " > 差分値" + ($rb_minus(total, target)))}; - } else { - output = $rb_plus(output, "" + " > 失敗 > 差分値" + ($rb_minus(total, target))) - }; - return output; - }, $ChaosFlare_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $ChaosFlare_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var self = this; - - if ($truthy(command['$start_with?']("FT"))) { - return self.$roll_fate_table(command) - } else { - return self.$cf_roll(command) - } - }, $ChaosFlare_rollDiceCommand$3.$$arity = 1); - self.$private(); - - Opal.def(self, '$roll_fate_table', $ChaosFlare_roll_fate_table$4 = function $$roll_fate_table(command) { - var $a, $b, self = this, m = nil, num = nil, dice1 = nil, dice2 = nil, index1 = nil, index2 = nil; - - - m = /^FT(\d+)?/.$match(command); - if ($truthy(m['$[]'](1))) { - - num = m['$[]'](1).$to_i(); - if ($truthy([0, 7]['$include?'](num))) { - return "" + "因果表(" + (num) + ") > " + ($$($nesting, 'FATE_TABLE')['$[]'](num)['$[]'](0))}; - dice1 = $rb_divide(num, 10).$floor(); - dice2 = num['$%'](10); - if ($truthy(($truthy($a = $range(1, 6, false)['$include?'](dice1)['$!']()) ? $a : $range(1, 6, false)['$include?'](dice2)['$!']()))) { - return nil}; - } else { - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - }; - index1 = dice1; - index2 = $rb_minus($rb_divide(dice2, 2).$floor(), 1); - return "" + "因果表(" + (dice1) + (dice2) + ") > " + ($$($nesting, 'FATE_TABLE')['$[]'](index1)['$[]'](index2)); - }, $ChaosFlare_roll_fate_table$4.$$arity = 1); - - Opal.def(self, '$cf_roll', $ChaosFlare_cf_roll$5 = function $$cf_roll(command) { - var $a, $b, self = this, parser = nil, times = nil, critical = nil, fumble = nil, $writer = nil, dice_total = nil, dice_list_text = nil, is_critical = nil, is_fumble = nil, total = nil, sequence = nil; - - - parser = $$($nesting, 'CommandParser').$new(/\d*CF/); - self.cmd = parser.$parse(command); - if ($truthy(self.cmd)) { - } else { - return nil - }; - times = (function() {if (self.cmd.$command()['$==']("CF")) { - return 2 - } else { - return self.cmd.$command().$to_i() - }; return nil; })(); - critical = ($truthy($a = self.cmd.$critical()) ? $a : 12); - fumble = ($truthy($a = self.cmd.$fumble()) ? $a : 2); - - $writer = [nil]; - $send(self.cmd, 'dollar=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy(($truthy($a = $rb_lt(times, 0)) ? $a : [">=", nil]['$include?'](self.cmd.$cmp_op())['$!']()))) { - return nil}; - $b = self.$roll(times, 6), $a = Opal.to_ary($b), (dice_total = ($a[0] == null ? nil : $a[0])), (dice_list_text = ($a[1] == null ? nil : $a[1])), $b; - is_critical = $rb_ge(dice_total, critical); - is_fumble = $rb_le(dice_total, fumble); - total = (function() {if ($truthy(is_critical)) { - return 30 - } else if ($truthy(is_fumble)) { - return -20 - } else { - return dice_total - }; return nil; })(); - total = $rb_plus(total, self.cmd.$modify_number()); - sequence = ["" + "(" + (self.cmd.$to_s("after_modify_number")) + ")", "" + (dice_total) + "[" + (dice_list_text) + "]", total.$to_s(), (function() {if ($truthy($rb_lt(total, 0))) { - return "0" - } else { - return nil - }; return nil; })(), (function() {if ($truthy(is_critical)) { - return "クリティカル" - } else { - return nil - }; return nil; })(), (function() {if ($truthy(is_fumble)) { - return "ファンブル" - } else { - return nil - }; return nil; })(), (function() {if ($truthy(self.cmd.$target_number())) { - return "" + "差分値 " + (self.$difference(total)) - } else { - return nil - }; return nil; })()].$compact(); - return sequence.$join(" > "); - }, $ChaosFlare_cf_roll$5.$$arity = 1); - - Opal.def(self, '$difference', $ChaosFlare_difference$6 = function $$difference(total) { - var self = this; - - if ($truthy($rb_lt(total, 0))) { - return self.cmd.$target_number()['$-@']() - } else { - return $rb_minus(total, self.cmd.$target_number()) - } - }, $ChaosFlare_difference$6.$$arity = 1); - return Opal.const_set($nesting[0], 'FATE_TABLE', [["腐れ縁"], ["純愛", "親近感", "庇護"], ["信頼", "感服", "共感"], ["友情", "尊敬", "慕情"], ["好敵手", "期待", "借り"], ["興味", "憎悪", "悲しみ"], ["恐怖", "執着", "利用"], ["任意"]].$freeze()); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Chill.js b/src/assets/dicebot/Chill.js deleted file mode 100644 index b2c3c4495..000000000 --- a/src/assets/dicebot/Chill.js +++ /dev/null @@ -1,177 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$==', '$!=', '$>=', '$>', '$*', '$/', '$roll_strike_rank_result', '$debug', '$=~', '$to_i', '$last_match', '$<', '$check_strike_rank', '$-', '$+', '$roll', '$to_s', '$sendMode', '$empty?']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Chill'); - - var $nesting = [self].concat($parent_nesting), $Chill_check_1D100$1, $Chill_rollDiceCommand$2, $Chill_roll_strike_rank_result$3, $Chill_check_strike_rank$4; - - - Opal.const_set($nesting[0], 'ID', "Chill"); - Opal.const_set($nesting[0], 'NAME', "Chill"); - Opal.const_set($nesting[0], 'SORT_KEY', "ちる"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・ストライク・ランク (SRx)\n" + " \"SRストライク・ランク\"の形で記入します。\n" + " ストライク・ランク・チャートに従って自動でダイスロールを行い、\n" + " 負傷とスタミナロスを計算します。\n" + " ダイスロールと同様に、他のプレイヤーに隠れてロールすることも可能です。\n" + " 例)SR7   sr13   SR(7+4)   Ssr10\n"); - self.$setPrefixes(["SR\\d+.*"]); - - Opal.def(self, '$check_1D100', $Chill_check_1D100$1 = function $$check_1D100(total, _dice_total, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if ($truthy(cmp_op['$!=']("<="))) { - return ""}; - if ($truthy($rb_ge(total, 100))) { - return " > ファンブル" - } else if ($truthy($rb_gt(total, target))) { - return " > 失敗" - } else if ($truthy($rb_ge(total, $rb_times(target, 0.9)))) { - return " > L成功" - } else if ($truthy($rb_ge(total, $rb_divide(target, 2)))) { - return " > M成功" - } else if ($truthy($rb_ge(total, $rb_divide(target, 10)))) { - return " > H成功" - } else { - return " > C成功" - }; - }, $Chill_check_1D100$1.$$arity = 4); - - Opal.def(self, '$rollDiceCommand', $Chill_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this; - - return self.$roll_strike_rank_result(command) - }, $Chill_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$roll_strike_rank_result', $Chill_roll_strike_rank_result$3 = function $$roll_strike_rank_result(string) { - var $a, $b, self = this, output = nil, wounds = nil, sta_loss = nil, dice = nil, dice_add = nil, dice_str = nil, strikeRank = nil, dice_w = nil, dice_ws = nil, dice_wa = nil, wounds_wk = nil; - - - self.$debug("strike_rank begin string", string); - output = ""; - wounds = 0; - sta_loss = 0; - dice = ""; - dice_add = ""; - dice_str = ""; - if ($truthy(/(^|\s)[sS]?(SR|sr)(\d+)($|\s)/['$=~'](string))) { - } else { - - self.$debug("invalid string", string); - return "1"; - }; - strikeRank = $$($nesting, 'Regexp').$last_match(3).$to_i(); - dice_w = ""; - dice_ws = ""; - dice_wa = ""; - if ($truthy($rb_lt(strikeRank, 14))) { - - $b = self.$check_strike_rank(strikeRank), $a = Opal.to_ary($b), (sta_loss = ($a[0] == null ? nil : $a[0])), (dice = ($a[1] == null ? nil : $a[1])), (dice_add = ($a[2] == null ? nil : $a[2])), (dice_str = ($a[3] == null ? nil : $a[3])), $b; - $b = self.$check_strike_rank($rb_minus(strikeRank, 3)), $a = Opal.to_ary($b), (wounds = ($a[0] == null ? nil : $a[0])), (dice_w = ($a[1] == null ? nil : $a[1])), (dice_wa = ($a[2] == null ? nil : $a[2])), (dice_ws = ($a[3] == null ? nil : $a[3])), $b; - dice = $rb_plus($rb_plus(dice, ", "), dice_w); - dice_add = $rb_plus(dice_add, $rb_plus(", ", dice_wa)); - dice_str = $rb_plus($rb_plus(dice_str, ", "), dice_ws); - } else { - - wounds_wk = 0; - $b = self.$check_strike_rank(13), $a = Opal.to_ary($b), (sta_loss = ($a[0] == null ? nil : $a[0])), (dice = ($a[1] == null ? nil : $a[1])), (dice_add = ($a[2] == null ? nil : $a[2])), (dice_str = ($a[3] == null ? nil : $a[3])), $b; - $b = self.$roll(4, 10), $a = Opal.to_ary($b), (wounds = ($a[0] == null ? nil : $a[0])), (dice_ws = ($a[1] == null ? nil : $a[1])), $b; - dice = $rb_plus($rb_plus("5d10*3, 4d10+", $rb_times($rb_minus(strikeRank, 13), 2).$to_s()), "d10"); - dice_add = $rb_plus(dice_add, $rb_plus(", ", wounds.$to_s())); - dice_str = "" + (dice_str) + ", " + (dice_ws); - $b = self.$roll($rb_times($rb_minus(strikeRank, 13), 2), 10), $a = Opal.to_ary($b), (wounds_wk = ($a[0] == null ? nil : $a[0])), (dice_ws = ($a[1] == null ? nil : $a[1])), $b; - dice_str = $rb_plus(dice_str, "" + "+" + (dice_ws)); - dice_add = $rb_plus(dice_add, "" + "+" + (wounds_wk)); - wounds = $rb_plus(wounds, wounds_wk); - }; - if ($truthy($rb_gt(self.$sendMode(), 1))) { - output = "" + (dice_str) + " > " + (dice_add) + " > スタミナ損失" + (sta_loss) + ", 負傷" + (wounds) - } else if ($truthy($rb_gt(self.$sendMode(), 0))) { - output = "" + (dice_add) + " > スタミナ損失" + (sta_loss) + ", 負傷" + (wounds) - } else { - output = $rb_plus($rb_plus($rb_plus("スタミナ損失", sta_loss), ", 負傷"), wounds) - }; - string = $rb_plus(string, $rb_plus(":", dice)); - if ($truthy(output['$empty?']())) { - return "1"}; - output = "" + "(" + (string) + ") > " + (output); - self.$debug("strike_rank end output", output); - return output; - }, $Chill_roll_strike_rank_result$3.$$arity = 1); - return (Opal.def(self, '$check_strike_rank', $Chill_check_strike_rank$4 = function $$check_strike_rank(strikeRank) { - var $a, $b, self = this, dice = nil, dice_add = nil, dice_str = nil, damage = nil; - - - strikeRank = strikeRank.$to_i(); - dice = ""; - dice_add = ""; - dice_str = ""; - damage = 0; - if ($truthy($rb_lt(strikeRank, 1))) { - - damage = 0; - dice_str = "-"; - dice_add = "-"; - dice = "-"; - } else if ($truthy($rb_lt(strikeRank, 2))) { - - dice = "0or1"; - $b = self.$roll(1, 2), $a = Opal.to_ary($b), (damage = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - damage = $rb_minus(damage, 1); - dice_add = damage.$to_s(); - } else if ($truthy($rb_lt(strikeRank, 3))) { - - dice = "1or2"; - $b = self.$roll(1, 2), $a = Opal.to_ary($b), (damage = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - dice_add = damage.$to_s(); - } else if ($truthy($rb_lt(strikeRank, 4))) { - - dice = "1d5"; - $b = self.$roll(1, 5), $a = Opal.to_ary($b), (damage = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - dice_add = damage.$to_s(); - } else if ($truthy($rb_lt(strikeRank, 10))) { - - dice = $rb_plus($rb_minus(strikeRank, 3).$to_s(), "d10"); - $b = self.$roll($rb_minus(strikeRank, 3), 10), $a = Opal.to_ary($b), (damage = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - dice_add = damage.$to_s(); - } else if ($truthy($rb_lt(strikeRank, 13))) { - - dice = $rb_plus($rb_minus(strikeRank, 6).$to_s(), "d10*2"); - $b = self.$roll($rb_minus(strikeRank, 6), 10), $a = Opal.to_ary($b), (damage = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - dice_add = $rb_plus(damage.$to_s(), "*2"); - damage = $rb_times(damage, 2); - dice_str = "" + "(" + (dice_str) + ")*2"; - } else { - - dice = "5d10*3"; - $b = self.$roll(5, 10), $a = Opal.to_ary($b), (damage = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - dice_add = $rb_plus(damage.$to_s(), "*3"); - damage = $rb_times(damage, 3); - dice_str = "" + "(" + (dice_str) + ")*3"; - }; - return [damage, dice, dice_add, dice_str]; - }, $Chill_check_strike_rank$4.$$arity = 1), nil) && 'check_strike_rank'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Chill3.js b/src/assets/dicebot/Chill3.js deleted file mode 100644 index 2c3abab98..000000000 --- a/src/assets/dicebot/Chill3.js +++ /dev/null @@ -1,58 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$%', '$floor', '$/', '$>', '$<=']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Chill3'); - - var $nesting = [self].concat($parent_nesting), $Chill3_check_1D100$1; - - - Opal.const_set($nesting[0], 'ID', "Chill3"); - Opal.const_set($nesting[0], 'NAME', "Chill 3rd Edition"); - Opal.const_set($nesting[0], 'SORT_KEY', "ちる3"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・1D100で判定時に成否、Botchを判定\n" + " 例)1D100<=50\n" + "   Chill3 : (1D100<=50) > 55 > Botch\n"); - return (Opal.def(self, '$check_1D100', $Chill3_check_1D100$1 = function $$check_1D100(total, dice_total, cmp_op, target) { - var $a, self = this, tens = nil, ones = nil; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return "" - }; - tens = $rb_divide(dice_total, 10).$floor()['$%'](10); - ones = dice_total['$%'](10); - if (tens['$=='](ones)) { - if ($truthy(($truthy($a = $rb_gt(total, target)) ? $a : dice_total['$=='](100)))) { - if ($truthy($rb_gt(target, 100))) { - return " > 失敗" - } else { - return " > Botch" - } - } else { - return " > C成功" - } - } else if ($truthy(($truthy($a = $rb_le(total, target)) ? $a : dice_total['$=='](1)))) { - if ($truthy($rb_le(total, $rb_divide(target, 2)))) { - return " > H成功" - } else { - return " > L成功" - } - } else { - return " > 失敗" - }; - }, $Chill3_check_1D100$1.$$arity = 4), nil) && 'check_1D100'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/CodeLayerd.js b/src/assets/dicebot/CodeLayerd.js deleted file mode 100644 index 19a0d06ef..000000000 --- a/src/assets/dicebot/CodeLayerd.js +++ /dev/null @@ -1,190 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$include', '$setPrefixes', '$debug', '$===', '$last_match', '$to_i', '$[]', '$checkRoll', '$+', '$empty?', '$getValue', '$<=', '$>', '$format_modifier', '$roll', '$sort', '$collect', '$split', '$join', '$getRollResultString', '$getSuccessInfo', '$==', '$!=', '$getSuccessResultText', '$to_s', '$>=', '$each']); - - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'CodeLayerd'); - - var $nesting = [self].concat($parent_nesting), $CodeLayerd_isGetOriginalMessage$1, $CodeLayerd_rollDiceCommand$2, $CodeLayerd_checkRoll$3, $CodeLayerd_getRollResultString$5, $CodeLayerd_getSuccessResultText$6, $CodeLayerd_getSuccessInfo$7, $CodeLayerd_getValue$9; - - - self.$include($$($nesting, 'ModifierFormatter')); - Opal.const_set($nesting[0], 'ID', "CodeLayerd"); - Opal.const_set($nesting[0], 'NAME', "コード:レイヤード"); - Opal.const_set($nesting[0], 'SORT_KEY', "こおとれいやあと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・行為判定(nCL@m[c]+x または nCL+x@m[c]) クリティカル・ファンブル判定あり\n" + " (ダイス数)CL+(修正値)@(判定値)[(クリティカル値)]+(修正値2)\n" + "\n" + " @m,[c],+xは省略可能。(@6[1]として処理)\n" + " n個のD10でmを判定値、cをクリティカル値とした行為判定を行う。\n" + " nが0以下のときはクリティカルしない1CL判定を行う。(1CL[0]と同一)\n" + " 例)\n" + " 7CL>=5 :サイコロ7個で判定値6のロールを行い、目標値5に対して判定\n" + " 4CL@7 :サイコロ4個で判定値7のロールを行い達成値を出す\n" + " 4CL+2@7 または 4CL@7+2 :サイコロ4個で判定値7のロールを行い達成値を出し、修正値2を足す。\n" + " 4CL[2] :サイコロ4個でクリティカル値2のロールを行う。\n" + " 0CL : 1CL[0]と同じ判定\n"); - self.$setPrefixes(["[+-]?\\d*CL([+-]\\d+)?[@\\d]*.*"]); - - Opal.def(self, '$isGetOriginalMessage', $CodeLayerd_isGetOriginalMessage$1 = function $$isGetOriginalMessage() { - var self = this; - - return true - }, $CodeLayerd_isGetOriginalMessage$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $CodeLayerd_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, self = this, result = nil, $case = nil, m = nil, base = nil, modifier1 = nil, target = nil, criticalTarget = nil, modifier2 = nil, diff = nil; - - - self.$debug("rollDiceCommand command", command); - result = ""; - $case = command; - if (/([+-]?\d+)?CL([+-]\d+)?(\@(\d))?(\[(\d+)\])?([+-]\d+)?(>=(\d+))?/i['$===']($case)) { - m = $$($nesting, 'Regexp').$last_match(); - base = ($truthy($a = m['$[]'](1)) ? $a : 1).$to_i(); - modifier1 = m['$[]'](2).$to_i(); - target = ($truthy($a = m['$[]'](4)) ? $a : 6).$to_i(); - criticalTarget = ($truthy($a = m['$[]'](6)) ? $a : 1).$to_i(); - modifier2 = m['$[]'](7).$to_i(); - diff = m['$[]'](9).$to_i(); - result = self.$checkRoll(base, target, criticalTarget, diff, $rb_plus(modifier1, modifier2));}; - if ($truthy(result['$empty?']())) { - return nil}; - return "" + (command) + " > " + (result); - }, $CodeLayerd_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$checkRoll', $CodeLayerd_checkRoll$3 = function $$checkRoll(base, target, criticalTarget, diff, modifier) { - var $a, $b, $$4, self = this, result = nil, _ = nil, diceText = nil, diceList = nil; - - - result = ""; - base = self.$getValue(base); - target = self.$getValue(target); - criticalTarget = self.$getValue(criticalTarget); - if ($truthy($rb_le(base, 0))) { - - criticalTarget = 0; - base = 1;}; - if ($truthy($rb_gt(target, 10))) { - target = 10}; - result = $rb_plus(result, "" + "(" + (base) + "d10" + (self.$format_modifier(modifier)) + ")"); - $b = self.$roll(base, 10), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceList = $send(diceText.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)).$sort(); - result = $rb_plus(result, "" + " > [" + (diceList.$join(",")) + "]" + (self.$format_modifier(modifier)) + " > "); - result = $rb_plus(result, self.$getRollResultString(diceList, target, criticalTarget, diff, modifier)); - return result; - }, $CodeLayerd_checkRoll$3.$$arity = 5); - - Opal.def(self, '$getRollResultString', $CodeLayerd_getRollResultString$5 = function $$getRollResultString(diceList, target, criticalTarget, diff, modifier) { - var $a, $b, self = this, successCount = nil, criticalCount = nil, successTotal = nil, result = nil, successText = nil; - - - $b = self.$getSuccessInfo(diceList, target, criticalTarget), $a = Opal.to_ary($b), (successCount = ($a[0] == null ? nil : $a[0])), (criticalCount = ($a[1] == null ? nil : $a[1])), $b; - successTotal = $rb_plus($rb_plus(successCount, criticalCount), modifier); - result = ""; - if (target['$=='](6)) { - } else { - result = $rb_plus(result, "" + "判定値[" + (target) + "] ") - }; - if (criticalTarget['$=='](1)) { - } else { - result = $rb_plus(result, "" + "クリティカル値[" + (criticalTarget) + "] ") - }; - result = $rb_plus(result, "" + "達成値[" + (successCount) + "]"); - if ($truthy($rb_le(successCount, 0))) { - - result = $rb_plus(result, " > ファンブル!"); - return result;}; - if ($truthy($rb_gt(criticalCount, 0))) { - result = $rb_plus(result, "" + "+クリティカル[" + (criticalCount) + "]")}; - result = $rb_plus(result, self.$format_modifier(modifier)); - if ($truthy(($truthy($a = $rb_gt(criticalCount, 0)) ? $a : modifier['$!='](0)))) { - result = $rb_plus(result, "" + "=[" + (successTotal) + "]")}; - successText = self.$getSuccessResultText(successTotal, diff); - result = $rb_plus(result, "" + " > " + (successText)); - return result; - }, $CodeLayerd_getRollResultString$5.$$arity = 5); - - Opal.def(self, '$getSuccessResultText', $CodeLayerd_getSuccessResultText$6 = function $$getSuccessResultText(successTotal, diff) { - var self = this; - - - if (diff['$=='](0)) { - return successTotal.$to_s()}; - if ($truthy($rb_ge(successTotal, diff))) { - return "成功"}; - return "失敗"; - }, $CodeLayerd_getSuccessResultText$6.$$arity = 2); - - Opal.def(self, '$getSuccessInfo', $CodeLayerd_getSuccessInfo$7 = function $$getSuccessInfo(diceList, target, criticalTarget) { - var $$8, self = this, successCount = nil, criticalCount = nil; - - - self.$debug("checkSuccess diceList, target, criticalTarget", diceList, target, criticalTarget); - successCount = 0; - criticalCount = 0; - $send(diceList, 'each', [], ($$8 = function(dice){var self = $$8.$$s || this; - - - - if (dice == null) { - dice = nil; - }; - if ($truthy($rb_le(dice, target))) { - successCount = $rb_plus(successCount, 1)}; - if ($truthy($rb_le(dice, criticalTarget))) { - return (criticalCount = $rb_plus(criticalCount, 1)) - } else { - return nil - };}, $$8.$$s = self, $$8.$$arity = 1, $$8)); - return [successCount, criticalCount]; - }, $CodeLayerd_getSuccessInfo$7.$$arity = 3); - return (Opal.def(self, '$getValue', $CodeLayerd_getValue$9 = function $$getValue(number) { - var self = this; - - - if ($truthy($rb_gt(number, 100))) { - return 0}; - return number; - }, $CodeLayerd_getValue$9.$$arity = 1), nil) && 'getValue'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/ColossalHunter.js b/src/assets/dicebot/ColossalHunter.js deleted file mode 100644 index 11cc38626..000000000 --- a/src/assets/dicebot/ColossalHunter.js +++ /dev/null @@ -1,243 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$analyzeDiceCommandResultMethod', '$debug', '$===', '$to_i', '$last_match', '$getValue', '$roll', '$+', '$nil?', '$isFamble', '$isCritical', '$getJudgeResultString', '$>=', '$empty?', '$parren_killer', '$<=', '$getBig6Table', '$getYearTableResult', '$get_table_by_d66', '$getYear', '$gsub', '$getD6xResult', '$length', '$==', '$times', '$*', '$to_s', '$getD66Item', '$[]', '$get_table_by_2d6', '$get_table_by_1d6', '$freeze', '$setPrefixes', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ColossalHunter'); - - var $nesting = [self].concat($parent_nesting), $ColossalHunter_initialize$1, $ColossalHunter_rollDiceCommand$2, $ColossalHunter_getCheckRollDiceCommandResult$3, $ColossalHunter_getJudgeResultString$4, $ColossalHunter_getValue$5, $ColossalHunter_isCritical$6, $ColossalHunter_isFamble$7, $ColossalHunter_getSourceSceneDiceCommandResult$8, $ColossalHunter_getYearTableResult$9, $ColossalHunter_getYear$10, $ColossalHunter_getD6xResult$12, $ColossalHunter_getBig6Table$15, $ColossalHunter_getCreateNpcDiceCommandResult$16, $ColossalHunter_getD66Item$17, $ColossalHunter_getTableDiceCommandResult$18; - - - Opal.const_set($nesting[0], 'ID', "ColossalHunter"); - Opal.const_set($nesting[0], 'NAME', "コロッサルハンター"); - Opal.const_set($nesting[0], 'SORT_KEY', "ころつさるはんたあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定(CH±x>=y)\n" + " 3D6の判定。クリティカル、ファンブルの自動判定を行います。\n" + " x:修正値。省略可能。y:目標値。省略可能。\n" + " 例) CH CH+1 CH+2>=10\n" + "・BIG-6表(B6T)\n" + "・覚醒表(AWT)\n" + "・現状表(CST)\n" + "・ハンターマーク表(HMT)\n" + "・特徴表(SPT)\n" + "・プレシャス表(PRT)\n" + "・専門能力表(EXT)\n" + "・コロッサル行動表(CAT)\n" + "・NPC作成表(CNP)\n" + "・D66ダイスあり\n"); - - Opal.def(self, '$initialize', $ColossalHunter_initialize$1 = function $$initialize() { - var $iter = $ColossalHunter_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $ColossalHunter_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $ColossalHunter_initialize$1, false), $zuper, $iter); - return (self.d66Type = 1); - }, $ColossalHunter_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $ColossalHunter_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this; - - return self.$analyzeDiceCommandResultMethod(command) - }, $ColossalHunter_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getCheckRollDiceCommandResult', $ColossalHunter_getCheckRollDiceCommandResult$3 = function $$getCheckRollDiceCommandResult(command) { - var $a, $b, self = this, diceCount = nil, modifyText = nil, difficultyText = nil, modify = nil, difficulty = nil, dice = nil, dice_str = nil, total = nil, result = nil; - - - self.$debug("getCheckRollDiceCommandResult command", command); - if ($truthy(/(\d+)?CH([\+\-\d]*)(>=([\+\-\d]*))?$/i['$==='](command))) { - } else { - return nil - }; - diceCount = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 3).$to_i(); - modifyText = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : ""); - difficultyText = $$($nesting, 'Regexp').$last_match(4); - modify = self.$getValue(modifyText, 0); - difficulty = self.$getValue(difficultyText, nil); - $b = self.$roll(diceCount, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - total = $rb_plus(dice, modify); - command = "" + (diceCount) + "CH" + (modifyText); - if ($truthy(difficulty['$nil?']())) { - } else { - command = $rb_plus(command, "" + ">=" + (difficulty)) - }; - result = "" + "(" + (command) + ") > " + (dice) + "[" + (dice_str) + "]" + (modifyText) + " > " + (total); - if ($truthy(self.$isFamble(dice))) { - result = $rb_plus(result, " > ファンブル") - } else if ($truthy(self.$isCritical(total))) { - result = $rb_plus(result, " > クリティカル") - } else { - result = $rb_plus(result, self.$getJudgeResultString(difficulty, total)) - }; - return result; - }, $ColossalHunter_getCheckRollDiceCommandResult$3.$$arity = 1); - - Opal.def(self, '$getJudgeResultString', $ColossalHunter_getJudgeResultString$4 = function $$getJudgeResultString(difficulty, total) { - var self = this; - - - if ($truthy(difficulty['$nil?']())) { - return ""}; - if ($truthy($rb_ge(total, difficulty))) { - return " > 成功"}; - return " > 失敗"; - }, $ColossalHunter_getJudgeResultString$4.$$arity = 2); - - Opal.def(self, '$getValue', $ColossalHunter_getValue$5 = function $$getValue(text, defaultValue) { - var $a, self = this; - - - if ($truthy(($truthy($a = text['$nil?']()) ? $a : text['$empty?']()))) { - return defaultValue}; - return self.$parren_killer($rb_plus($rb_plus("(0", text), ")")).$to_i(); - }, $ColossalHunter_getValue$5.$$arity = 2); - - Opal.def(self, '$isCritical', $ColossalHunter_isCritical$6 = function $$isCritical(total) { - var self = this; - - return $rb_ge(total, 16) - }, $ColossalHunter_isCritical$6.$$arity = 1); - - Opal.def(self, '$isFamble', $ColossalHunter_isFamble$7 = function $$isFamble(total) { - var self = this; - - return $rb_le(total, 5) - }, $ColossalHunter_isFamble$7.$$arity = 1); - - Opal.def(self, '$getSourceSceneDiceCommandResult', $ColossalHunter_getSourceSceneDiceCommandResult$8 = function $$getSourceSceneDiceCommandResult(command) { - var self = this, name = nil, table = nil, yearTitle = nil; - - - if ($truthy(/^B6T$/['$==='](command))) { - } else { - return nil - }; - name = "BIG-6表"; - table = self.$getBig6Table(); - yearTitle = "年齢"; - return self.$getYearTableResult(name, table, yearTitle); - }, $ColossalHunter_getSourceSceneDiceCommandResult$8.$$arity = 1); - - Opal.def(self, '$getYearTableResult', $ColossalHunter_getYearTableResult$9 = function $$getYearTableResult(name, table, yearTitle) { - var $a, $b, self = this, item = nil, index = nil, title = nil, text = nil, yearText = nil, year = nil, calculateText = nil, result = nil; - - - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (item = ($a[0] == null ? nil : $a[0])), (index = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(item['$nil?']())) { - return nil}; - $b = item, $a = Opal.to_ary($b), (title = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (yearText = ($a[2] == null ? nil : $a[2])), $b; - self.$debug("yearText", yearText); - $b = self.$getYear(yearText), $a = Opal.to_ary($b), (year = ($a[0] == null ? nil : $a[0])), (calculateText = ($a[1] == null ? nil : $a[1])), $b; - result = "" + (name) + "(" + (index) + ") > " + (title) + ":" + (text) + " > " + (yearTitle) + ":" + (yearText); - if ($truthy(year['$nil?']())) { - } else { - result = $rb_plus(result, "" + " > " + (calculateText) + " > " + (yearTitle) + ":" + (year)) - }; - result = $rb_plus(result, "歳"); - return result; - }, $ColossalHunter_getYearTableResult$9.$$arity = 3); - - Opal.def(self, '$getYear', $ColossalHunter_getYear$10 = function $$getYear(yearText) { - var $$11, self = this, text = nil, calculateText = nil, year = nil; - - - text = $send(yearText, 'gsub', [/(\d+)D(6+)/], ($$11 = function(){var self = $$11.$$s || this; - - return self.$getD6xResult($$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2).$length())}, $$11.$$s = self, $$11.$$arity = 0, $$11)); - calculateText = "" + "(" + (text) + ")"; - year = self.$parren_killer(calculateText.$gsub(/×/, "*")); - if (year['$=='](calculateText)) { - return nil}; - if (year['$=='](text)) { - return nil}; - return [year, calculateText]; - }, $ColossalHunter_getYear$10.$$arity = 1); - - Opal.def(self, '$getD6xResult', $ColossalHunter_getD6xResult$12 = function $$getD6xResult(count, dice6Count) { - var $$13, self = this, total = nil; - - - total = 0; - $send(count, 'times', [], ($$13 = function(_i){var self = $$13.$$s || this, $$14, number = nil; - - - - if (_i == null) { - _i = nil; - }; - number = 0; - $send(dice6Count, 'times', [], ($$14 = function(_i){var self = $$14.$$s || this, $a, $b, dice = nil; - - - - if (_i == null) { - _i = nil; - }; - number = $rb_times(number, 10); - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - return (number = $rb_plus(number, dice));}, $$14.$$s = self, $$14.$$arity = 1, $$14)); - return (total = $rb_plus(total, number));}, $$13.$$s = self, $$13.$$arity = 1, $$13)); - return total.$to_s(); - }, $ColossalHunter_getD6xResult$12.$$arity = 2); - - Opal.def(self, '$getBig6Table', $ColossalHunter_getBig6Table$15 = function $$getBig6Table() { - var self = this, table = nil; - - - table = [["この世の地獄", "あれはまさに地獄。屍の山。嘆く者。呆然とする者。目の前で潰される者。あの日、人類は霊長ではなく……弱き獣の一種となった。", "15+2D6"], ["悪の時代", "全ての崩壊、呆然の時。救援が望めぬとわかったなら、少なからぬ者が悪に走った。あの頃は、あなたもまた下劣なる略奪者だった。", "18+2D6"], ["消えざる罪", "混乱の中、あなたは……私怨を晴らした。許せない人間を、その手で始末した。罪に問う者はいない……他ならぬあなた自身以外は。", "18+2D6"], ["言葉にできない", "ただ呆然と。廃人のようにあの期間を過ごした。目の前で何が起きていたかは覚えているけれど。思い出したくは……ない。", "任意(最低14)"], ["望む時代", "あの平和で膿んだ世界が嫌いだった。全てが壊れて、訪れた無法の時代。あなたは、あの日常が壊れた今を歓迎している。", "18+2D6"], ["あなたの呪い", "世界を怨み、自殺しようとした時、世界は変わった。あなたの呪詛が形になったように……コロッサルが全てを破壊し始めたのだ。", "任意(最低20)"], ["肉親の命日", "家族は、あなたの全てだった。だからあの日は、全てが失われた日だ。注ぐ愛も注がれる愛も、きっとあの日に枯れたのだ。", "任意(最低14)"], ["戦友の命日", "あなたとその仲間は無抵抗をよしとせず、コロッサルに立ち向かった。そして……あなた以外は全員が死んだ。彼らの分も生きなければ。", "30+3D6"], ["トラウマ", "あの日を思い出すだけで、震えが止まらず汗と涙が溢れ出す。忘れるためには、コロッサルと戦い続けるしかないだろう、きっと。", "任意(最低14)"], ["死を逃した時", "意識を失い、目覚めれば全ては壊れた後。生き延びたのは幸運なのか。不幸なのか。あるいはそれとも、呪いなのか。", "10+3D6"], ["呪縛", "あの時、無数の死を見た。その中で、ある一人が言った言葉が忘れられない。それは今も、あなたを縛る呪いとなっている。", "18+2D6"], ["ひっかかり", "あの日、配偶者あるいは恋人と別れた。恋の終わりと、世界の終わり。あれ以来、相手が生きているかもわからない……。", "25+3D6"], ["重症", "昏睡BIG-6で重い疵を負ったあなたは、長く昏睡状態だった。幸いにも人工冬眠装置によって、あなたは年を経ずに目を覚ましたが……。", "任意"], ["些末事", "あなたにはコロッサルの出現などよりも重要な目的がある。BIG-6など、どうでもよい。あなたは決して揺らぎはしないのだ。", "任意"], ["財産の消滅", "築き上げていた全てが失われた日。あなたにとって全てだった財貨も、権力も、消滅したあの日を、どうして忘れられようか。", "35+3D6"], ["告白未遂", "告白しようとしていたその日、コロッサルが現れた。崩れる日常。あの人が生きているのか、どうなったのか、何もわからない。", "18+2D6"], ["記憶喪失", "あの時、何があったのか、どうしても思い出せない。何か重大なことがあったはずなのに……思い出そうとすると頭痛が襲うのだ。", "任意(最低14)"], ["誕生の時", "BIG-6と同年、コロッサル襲撃の最中に生まれ、赤ん坊の状態で生存者らに保護された。親はわからない。あなたの生存は奇跡である。", "10"], ["ルーツ", "コロッサルによって破壊された瓦礫の合間に残されていた子……それがあなただ。親という概念すらなく、あなたは育ってきた。", "8+1D6"], ["伝え聞くのみ", "物心ついた時には周囲はコロッサルの脅威にさらされていた。BIG-6以前については何も知らない。遥か過去のようにすら思えている。", "8+1D6"], ["語られざること", "ZOSで育ったあなたには誰もBIG-6について教えてくれなかった。大人の会話の合間から、なんとなく想像するだけだ。", "8+1D6"], ["絵物語", "瓦礫でない建物。人が街にあふれかえる。なんという子供だましのおとぎ話だろう。あなたはBIG-6以前の存在を信じていない。", "8+1D6"], ["何それ", "隊商に見つけられるまで、獣同然に生きていた。BIG-6などあったことも知らない。物心ついた時には、餌を求め走っていたのだ。", "9+1D6"], ["嫉妬", "BIG-6時をあなたは覚えていない。そして、BIG-6以前の豊かさと平和に激しい嫉妬を抱き、守れなかった大人たちを恨む。", "9+1D6"], ["忘れたい記憶", "あなたはあの日を忘れようと努めた。今ではほとんど忘れたと言っていい。けれど、ふとした時にあの地獄の光景は現れて……。", "任意(最低14)"], ["始まりの時", "あなたにとってあれは終わりではなく、始まり。停滞して行き詰まった世界が動き出し、どうでもよかった己の命を感じさせてくれた瞬間。", "15+3D6"], ["かすかな記憶", "当時のあなたは幼かった。それでもうっすらと、あの平和で豊かだった時代を覚えている。いっそ知らなければ……と思うのだけれど。", "10+1D6"], ["崩壊と再生", "あなたの人生は、BIG-6による社会崩壊と……その後の再生をなぞるものだ。あなたはBIG-6以後を何より間近で見て来た。", "10+1D6"], ["他人事", "とても辺鄙な地方にいたせいか、コロッサルは出現しなかった。無論、影響はあったが……ゆっくりとしたもので。大災害の印象は薄い。", "6+3D6"], ["新たな時代", "まだマテリアルの価値が定かでなかった頃から、あなたはその価値に目を付けていた。応用法も含め……社会崩壊後に備えたのだ。", "任意(最低17)"], ["動乱", "当時は現役かつ、責任ある立場だった。守るために、あなたは全力で戦い、逃げ……そして時には同じ人間からも奪った。", "40+4D6"], ["自信の元", "あなたは一家の長として家族を守り、導いた。全てが破壊される中、家族は確かに生き延びて、あなた自身も未だ生き残れたのだ。", "35+3D6"], ["本能的記憶", "気が付けばゾーンに“いた”。コロッサルはさまざまな生物をクラフトする。中には小型のコロッサルとして独立して活動を開始するものもいるという。あなたもまた、気づいてほどなくハンターとして目覚めた。そう……あなたはクラフトされた存在。人よりもコロッサルに近い存在。記憶も感情も、どこまでが己のものなのか……。これは、およそ知られていい秘密ではない。(注意:外見年齢は任意)", "2D6-2"], ["体験無き事象", "あなたは母から生まれた人間ではなく、人工的なハンター作成の副産物たるクローニング技術の結晶だ。親は知らないが“作者”は知っている。肌にはバーコードが刻まれ、その体が通常の人間ではないと思い知らされるだろう。丁寧に記憶まで、一定量が流し込まれており、日常生活には支障がない。この出生は隠さねばならない。(注意:外見年齢は任意。覚醒表の内容は作られた記憶である)", "2D6-2"], ["特異点", "あのBIG-6の中では奇妙な時空のねじれが発生した。そして、あなたのようにありえざる時代や世界から、迷い込む者も現れたのだ。この事実は隠さねばならない……が、教えても誰も本気にはしないだろう。なお、あなたがどれほど特殊な能力や知識を持っていたとしても、データ上において他のPCと何ら変わらない。演出において、他の時代や異世界の知識や技術をいくらか使える程度である。", "任意(最低10)"], ["覚醒の時", "BIG-6時に絶望の中でコロッサルに抗い、生まれた第一世代のハンター。平和の時代を知る存在。そして平和を壊され、平和を取り戻さんと渇望する存在だ。ハンターの中でも、最初期であり最も経験豊富であり、同じハンターらからは敬意を捧げられる。もちろん、相応の振る舞いも求められるだろうが……。(注意:覚醒表における「ZOS」は、「故郷」か「組織」に変わる)", "任意(最低17)"]]; - return table; - }, $ColossalHunter_getBig6Table$15.$$arity = 0); - - Opal.def(self, '$getCreateNpcDiceCommandResult', $ColossalHunter_getCreateNpcDiceCommandResult$16 = function $$getCreateNpcDiceCommandResult(command) { - var $a, $b, self = this, name = nil, table = nil, nature = nil, nature_number = nil, type = nil, type_number = nil, secret = nil, secret_number = nil, result = nil; - - - if ($truthy(/^CNP$/['$==='](command))) { - } else { - return nil - }; - name = "NPC作成表"; - table = [["ハンター嫌いの", "ごろつき", "全てへの絶望"], ["心に傷を負った", "罪人", "あなたへの殺意"], ["精神不安定な", "浮浪者", "ハンターへの殺意"], ["病に伏した", "盗人", "己自身への殺意"], ["重傷を負った", "終末論者", "ハンターへの憎悪"], ["悪名高い", "旅人", "コロッサルへの崇拝"], ["横暴な", "難民", "人間への嫌悪"], ["あなたに依存している", "子供", "あなたへの恐怖"], ["無謀な", "老人", "左隣PCへの殺意"], ["乱暴な", "少年", "窃盗への依存"], ["信用できない", "少女", "快楽への依存"], ["臆病な", "若者", "愛情への依存"], ["だらしない", "芸人", "未来への絶望"], ["短絡的な", "娼婦/男娼", "弱者への蔑視"], ["怠け者の", "元軍人", "己自身への嫌悪"], ["享楽的な", "ハンター志願者", "あなたへの疑念"], ["エキセントリックな", "元ハンター", "ギャンブルへの依存"], ["ずる賢い", "労働者", "アルコールへの依存"], ["恋人のいる", "スカベンジャー", "孤独への恐怖"], ["残念な", "仕立て屋", "ハンターへの恐怖"], ["空回りしている", "職人", "コロッサルへの憎悪"], ["酒びたりの", "教師", "ハンターへの不安"], ["妄想癖のある", "建築家", "ハンターへの嫉妬"], ["努力家の", "商人", "コロッサルへの恐怖"], ["やさしい", "料理人", "己の命への執着"], ["神秘的な", "漁師/猟師", "あなたへの打算"], ["世馴れた", "農家", "過去への執着"], ["信用できる", "自警団員", "マテリアルへの執着"], ["達観した", "看護師", "ハンターへの憧憬"], ["血気盛んな", "研究者", "あなたへの嫉妬"], ["美貌の", "技師", "異性への執着"], ["気高い", "医師", "力への渇望"], ["優秀な", "神父/シスター", "ZOSへの依存"], ["天才肌の", "事務屋", "左隣PCへの執着"], ["誰からも愛される", "指導者", "あなたへの羨望"], ["あなたに恋をしている", "ハンター", "あなたへの執着"]]; - $b = self.$getD66Item(table, 0), $a = Opal.to_ary($b), (nature = ($a[0] == null ? nil : $a[0])), (nature_number = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$getD66Item(table, 1), $a = Opal.to_ary($b), (type = ($a[0] == null ? nil : $a[0])), (type_number = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$getD66Item(table, 2), $a = Opal.to_ary($b), (secret = ($a[0] == null ? nil : $a[0])), (secret_number = ($a[1] == null ? nil : $a[1])), $b; - result = "" + (name) + "(" + (nature_number) + ", " + (type_number) + ", " + (secret_number) + ") > 性質:" + (nature) + "/タイプ:" + (type) + "/心の秘密:" + (secret); - return result; - }, $ColossalHunter_getCreateNpcDiceCommandResult$16.$$arity = 1); - - Opal.def(self, '$getD66Item', $ColossalHunter_getD66Item$17 = function $$getD66Item(table, index) { - var $a, $b, self = this, item = nil, number = nil; - - - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (item = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [item['$[]'](index), number]; - }, $ColossalHunter_getD66Item$17.$$arity = 2); - - Opal.def(self, '$getTableDiceCommandResult', $ColossalHunter_getTableDiceCommandResult$18 = function $$getTableDiceCommandResult(command) { - var $a, $b, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, text = nil, number = nil; - - - info = $$($nesting, 'TABLES')['$[]'](command); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type"); - table = info['$[]']("table"); - $b = (function() {$case = type; - if ("2D6"['$===']($case)) {return self.$get_table_by_2d6(table)} - else if ("1D6"['$===']($case)) {return self.$get_table_by_1d6(table)} - else if ("D66"['$===']($case)) {return self.$get_table_by_d66(table)} - else { return nil }})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(text['$nil?']())) { - return nil}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $ColossalHunter_getTableDiceCommandResult$18.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["AWT", "CST", "HMT", "SPT", "PRT", "EXT", "CAT"], {"AWT": $hash2(["name", "type", "table"], {"name": "覚醒表", "type": "D66", "table": ["実験体:当時ハンターを人工的に作り出すべく、倫理を無視した研究が多数行われていた。あなたこそ、無数の犠牲の上に生まれた……数少ない成功作なのだ。", "ゾーン留置刑:刑罰としてコロッサルの進路に拘束され放置される罪人がいる。多くは命を落とすが、ハンターとして目覚める可能性もあるのだ。他ならぬあなたのように……。", "ハンター殺し:相応の理由はあったから。頭部への一撃で、非道のハンターを殺してやった。その報いか。その瞬間、あなた自身がハンターになってしまったのだ。", "目の前の変異:死んだハンターのコアが目の前でコロッサルと化す。しかし何という皮肉か。発生したゾーン。まき散らされるマテリアル。あなたはハンターとして覚醒した。", "ZOS壊滅:住んでいたZOSがコロッサルに蹂躙される。全てが破壊され、大切なものは全て失われる。無力感の中……皮肉にも、あなたは新たな力に目覚めた。", "生贄:ハンターのいない集団は時として奇妙な行為をする。弱者を生贄に捧げるのだ。それは、あなたというハンターを生み出し……集団はコロッサルに滅ぼされた。", "崩壊と追跡:ZOSの崩壊。誰も生き残らず。あなたは一人、復讐者と化して旅立つ。決意と覚悟が、あなたにハンターの力を与えてくれた。これは復讐の刃なのだ。", "臨死経験:コロッサルの一撃であなたは死んだ……だが、唯一無事だった脳がコアと化し、肉体を再構築し……あなたは再び立ち上がったのだ。", "脱走:実験施設か牢獄か、あるいは監禁場所か。あなたは死に物狂いで逃げ出した。偶然ゾーンに入っていたのか。あなたはハンターとなり、無事逃げ延びた。", "感情の暴発:それは狂気だったのかもしれない。あなたはその時、抑えきれぬ感情を爆発させ、ありえぬ行動を、ありえぬように行った。ハンターとして覚醒したのだ。", "肉体の欠損:まともな医療がないこの時代。体の一部を失う者は多い。あなたは絶望に呑まれず、失った体を、意志の力でクラフトした。そう、ハンターになったのだ。", "飢餓:荒野で飢え、渇き、あがいた。誰にも助けてもらえない中……幸運にもそのゾーンであなたは力に目覚める。鳥や獣を捕らえ貪り、生き延びたのだ。", "過剰な復讐:憎悪を募らせ、あなたは後先を考えず怨念の一撃を繰り出す。いつの間にか手には強大な武器があり、相手は建物ごと破壊された。憎悪に満ちた覚醒。", "遅すぎた覚醒:大切な人が死ぬ。故郷が破壊される。全てを失い、絶望に打ちひしがれながら、仇たるコロッサルの遥か背後で、ハンターとして覚醒した。何もかも手遅れなのに。", "贖罪の印:大切な人をあなた自身の手で殺してしまった。後悔と絶望の中、あなたはなぜかハンターとなる。それは己の贖罪のために与えられた力と思えた。", "瓦礫の闇:瓦礫の中、身動きは取れない。誰も助けてくれない。閉塞感と飢餓感と絶望、理不尽への怒り。最後まで足掻きに足掻いてハンターとして目覚め、脱出した。", "無謀なる突撃:ただ許せなかったのだ。故郷を蹂躙するコロッサルへ、武器とも呼べぬものを手に突撃する。ハンターとしての覚醒は、幸運の結果だったのだろう。", "残された遺志:コロッサルの襲撃の中、一人のハンターがあなたを守り……命を落とした。その後の残ったマテリアルに触れた瞬間、あなたはハンターとして覚醒したのだ。", "危機的覚醒:迫り来るコロッサルの一撃。けれど死を覚悟した瞬間、自身でも信じられない動きで攻撃を回避していた。そう、あなたはハンターになったのだ。", "猛る夜:その夜、あなたは恐怖と不安の中で、湧き上がる欲望のまま獣となって猛り、貪った。その欲望の一夜を経て、あなたは人を超えてハンターへと変わる。", "コロッサル接触:瀕死のあなたに、コロッサルが触れる。その瞬間、あなたはハンターとなり生き延びた。あのコロッサルはなぜ、人を救うようなことをしたのだろう?", "記憶喪失:何か大きな出来事があったはずなのだ。けれど思い出せない……いったいどうして、あなたがハンターとなったのか。かつて何があったのか、あなたは知りたい。", "偶然の獲得:ちっぽけな反抗、隔意、逃避。あなたはその日、ZOSを飛び出しコロッサルの領域内に立ち入ってしまい、偶然、ハンターとして目覚め、無事に生還した。", "ゾーン研究:あなたは学術的な興味から、ハンターに守られ何度もゾーンに入った。そして気づけば、あなた自身がハンターの力を得ていたのだ。", "ハンター志願:希望のない世界で、希望を得るため。多くは生きて帰れぬことを知りながら、コロッサルに立ち向かった。幸運にも……あなたはハンターとして覚醒できた。", "野生の日々:集団に属せず、あなたは半ば野生の中で一人生き延びていた。コロッサルにも狙われず、ゾーンで共存すらした。ハンターの力を得たのも必然だろう。", "自由落下:の中でふとした事故で、あなたは高所から落下した。けれど落下中、足場をクラフトし、あなたは九死に一生を得た。ハンターとして覚醒したのだ!", "昏睡:重傷を負って昏睡に陥り、夢の中で地の底からの囁きを聞いた。そして目覚めた時、あなたは能力にも目覚め、ハンターとなっていたのだ。", "極限の修練:愚直に信じて、信じて、信じて、嘲笑われても修練を繰り返した。努力の価値はわからない。それでもあなたは、己の覚醒を修練の結果だと信じている。", "ハンターとの恋:あなたの恋人はハンターだ。あるいは、ハンターだった。その交わりの中で、恋人のゾーンに深く影響され……気づけばハンターの能力を得ていた。", "恩人の危機:ZOSを守って来たハンター。逃げ遅れたあなた。目の前でハンターがコロッサルの一撃を受けて散ろうとするその瞬間……あなた自身が力に目覚めた。", "守る力:大切な人を守るため、迫り来るコロッサルの前であなたは目覚めた。新たな力は、コロッサルを倒し……あなたは無事に、守るべき人を守り切ったのだ。", "蟷螂の斧:たとえ無意味でも無価値でも、反抗の意を見せずにいられないから、あなたはコロッサルに立ち向かった。そして、己が無力ではないと、証明したのだ。", "ガイアの声:地の底から、呼びかける声を聞いた。コロッサルの傍にいたわけではない。しかし、その声を聞いた瞬間、あなたはハンターとなった。なってしまったのだ。", "天性のハンター:初めてコロッサルに対峙した時、自然にリクラフトして武装していた。しかも、歴戦のハンターと同等以上の巧みさで。あなたはこの時代、待望された天才だ。", "ありえぬ存在:BIG-6以前から、あるいはものごころつく以前から、ハンターの能力が開花していた。周囲の目は期待と不安、そして打算にまみれている。"]}), "CST": $hash2(["name", "type", "table"], {"name": "現状表", "type": "D66", "table": ["逃れえぬ恐怖:かつての悪夢は心を握りしめ、離してはくれない。平時は暗がりの隅で一人震え、ぶつぶつと呟くばかり。友らは、立ち直らせようとしてくれているが……。 リーダー度:2", "人間証明:いつからか自傷癖が身についてしまった。己が人間だと証明したいから。流れる血が赤いと知りたくて。己の手首を何度も何度も切り刻んでしまうのだ。 リーダー度:3", "裏切者:かつて、あなたはコロッサルと戦う仲間を見捨てて逃げ出した。連携は崩れ、多くの仲間が散った。以来、あなたを信用する者はいない。いるわけがない。 リーダー度:1", "人間不信:あなたは人々に裏切られ、罵られ、追放された身。ハンター同士ならまだしも、もはや人は信じられない。コロッサル以上に人間がおぞましいのだ。 リーダー度:2", "孤独:力を得れば、周囲は距離を取る。それがつらくて……逃げてしまった。もう人には関わらない。今や誰も近づいては来ない。あなたは独りぼっちなのだ。 リーダー度:2", "無法の首魁:力を得て増長したあなたには、多数の取り巻きがいる。暴虐も我儘も、ある程度は許されるのがハンターだ。今のあなたは、無法者の首領も同然である。 リーダー度:9", "生存者:何も守れず……あなたのZOSはコロッサルに破壊された。ただ一人……ハンターの力で生き延びたのだ。今はただ前へ足を進めるだけで精一杯。 リーダー度:3", "検体:乞われて研究者の検体に立候補した。あなたには何もない。どうされてもいい。力が手に入るならよし。誰かの礎になるならそれも……よし。 リーダー度:5", "刹那の快楽:何度出撃しようとも、コロッサルは恐ろしい。生きて戻ってくれば、次の出撃を恐れる。あなたは酒色に溺れ、現実から少しでも逃れようともがくだろう。 リーダー度:3", "戦闘機械:戦う以外は考えられなくなってしまった。何をすればいいのかわからないのだ。ただぼんやりと空を眺めているしか……することがない。 リーダー度:5", "亡霊を背負う:毎日、散っていった者たちの姿が脳裏に浮かぶ。彼らはあなたに力をくれるのだろうか。それとも、あなたを彼らと同じ場所へ導こうとしているのだろうか。 リーダー度:8", "雇用契約:大切な人を保護してもらう代わり、あなたはZOSのハンターになった。その人にはなかなか会えないけれど。きっと満足な生活を送っている……はずだ。 リーダー度:7", "鍛錬の日々:共にハンターとして組んで来た戦友がいた。今はもう全て土の下だ。彼らの分まで戦わねばならない。幸せになってはいけない。己の修練が全てだ。 リーダー度:9", "悪党の末路:悪事を重ね、ZOSを追放された。根無し草となり放浪する中、あなたの性根も少しは正されたろうか? それとも逆恨みの炎は消えていないのか? リーダー度:1", "ワーカホリック:恐怖があなたを働かせる。どんな雑務でもいいから仕事が必要だ。楽しみを知らないわけではないが……働いていないと、背後にまた恐怖が迫ってくる。 リーダー度:10", "虚ろな愛:恋人ないし配偶者がいる。しかし関係はもはや形だけ。その心はあなたに向いていない。心を向ける相手は別にいるのだ……しかし、それでも、あなたは。 リーダー度:6", "餓えしもの:今の世の中、マテリアルが金だ。コロッサルと戦えば戦うほど、あなたは財力と権力を得る。あなたは力に餓えて餓えて、戦いにも餓えているのだ。 リーダー度:8", "家族を背負い:病か老いか、あるいは重傷を負ってまともに働けない家族がいる。家族を養い、RIACTの保護を受けるためにも、あなたは働かねばならない。 リーダー度:7", "多情:こんな世の中では人の命は儚く、人の心もまた儚い。だからあなたは、いつも恋をして、いつも愛を囁いて。せめて己の軌跡を多くの人に残そうとする。 リーダー度:5", "人捜しの旅:かつて生き別れた大切な人を捜して、ZOSからZOSへと渡り歩いている。きっと、必ず、どこかで生き延びている……はずだ。 リーダー度:1", "善き狩人:特に働くわけではないが……あなたが披露する武勇伝は新世代を鼓舞し、ハンターへの憧れを抱かせる。人はコロッサルを恐れてばかりでは前に進めない。 リーダー度:8", "カジノ:ハンターならざる人々も、刹那的な享楽で全てを忘れようとしている。あなたは小さなカジノを営み、人々を楽しませる一方で、己の懐をあたためている。 リーダー度:4", "恋々的日々:あなたは恋人のためハンターとして活躍する。恋の中で日々は輝き、全ての悪夢はかき消される。今のあなたは、幸福な夢にどこまでも盲目でいられる。 リーダー度:9", "語り手:現実は、つらい。今の世には逃避する先が必要なのだ。だからはあなたは物語を読み漁り、時には自ら物語を書き、また時にはTRPGをする。 リーダー度:4", "スカベンジャー:崩壊した世界には隠されし謎・宝が無数にある。あなたは日々、廃墟を漁って機材や情報媒体を拾い集める。それは確かなZOSへの貢献となるのだ。 リーダー度:7", "エンジニア:機械いじりは楽しい。かつてあった文明の遺産から、新たなものを生み出す時、あなたは人類の前に広がる、明るい未来を信じられるのだ。 リーダー度:6", "医師:既に人と言えないハンターの体。しかし、それでも自らが何度も壊れ、再構成してきたからこそ……人の体を知る。平時のあなたは、ZOSの医師だ。 リーダー度:10", "訓練教官:最低限の自衛を覚えてもらうため。コロッサルについて若者らに教え、緊急時の対応を訓練する。その中にハンターとなる者もいるのだろうか? リーダー度:12", "農家:コロッサルとの戦闘で少なからぬ人々が死ぬ。新たな命を芽生えさせ生かすべく……あなたは平時、農業に精を出している。農地と実りはあなたの宝だ。 リーダー度:11", "一家の主:恋人ないし配偶者がいる。もうすぐ家族は増えそうだ。未来は明るい。だから出撃したなら……きっと生きて、帰らねばならない。 リーダー度:10", "トレーダー:あなたはハンターである以上に商人だ。自らZOSからZOSへ商品を運び、マテリアルを獲得する。マテリアルの貯蓄が、今のあなたの生き甲斐だ。 リーダー度:4", "アイドル:荒廃した世界だからこそ、人には娯楽が必要だ。あなたは自らの歌や踊りで人々を鼓舞し、その心に輝きを取り戻さんとする。未来はきっと、明るいはずだ。 リーダー度:6", "自警団長:ZOSの治安はよくない。人々は皆、自暴自棄だ。ハンターにも不埒の輩は多い。あなたは人が人らしくあるべく、自警団を組織している。 リーダー度:12", "孤児院長:偽善と知りつつ、あなたは多数の孤児らを集め育てている。彼らを受け入れ、育てられるのはマテリアルを直接獲得してくるハンターくらいなのだ。 リーダー度:11", "導き手:自身も葛藤しつつ、あなたは宗教者として人に教えを説く。神に見放されたこの世界でも、心の支えは必要だ。人の心は救われねばならない。 リーダー度:11", "指導者:あなたはZOSの顔役だ。多くの人望を集め、ハンターの地位を向上させている。一挙一動が注目を受ける。気をひきしめて日々を過ごさねば。 リーダー度:12"]}), "HMT": $hash2(["name", "type", "table"], {"name": "ハンターマーク表", "type": "D66", "table": ["顔", "胸", "背中", "胴", "肩", "腕", "顔", "胸", "背中", "胴", "肩", "腕", "顔", "胸", "背中", "胴", "肩", "腕", "掌", "腿", "脛", "足裏", "全身", "片眼", "掌", "腿", "脛", "足裏", "全身", "片眼", "掌", "腿", "脛", "足裏", "全身", "片眼"]}), "SPT": $hash2(["name", "type", "table"], {"name": "特徴表", "type": "D66", "table": ["死んだ魚の目", "凶悪な容貌", "子供のように小柄", "目の下の隈", "疲れ切った背中", "威圧的な筋肉", "ガリガリの痩身cc", "中性的な顔立ち", "無数の傷痕", "顔に残る傷痕", "隻眼", "男装・女装", "樽のような肥満", "目立つ犬歯", "ぎらつく眼光", "奇妙なタトゥー", "見上げるような長身", "泣きボクロ", "滑らかな髪", "手入れされた髪型", "腰まで届くロングヘア", "ベリーショート", "ドレッド", "スキンヘッド", "特殊な形の瞳", "三白眼", "オッドアイ", "糸目", "眼鏡", "冷たい眼差し", "きれいな指", "すべやかな肌", "優しげな声", "明るい笑顔", "健康的な体", "整った容貌"]}), "PRT": $hash2(["name", "type", "table"], {"name": "プレシャス表", "type": "D66", "table": ["壊れたスマートフォン", "誰かの写真", "鳴らないヘッドホン", "記念の指輪", "血まみれの布", "空のスキットル(酒用の水筒)", "錆びたナイフ", "骨の欠片", "古い銃と弾丸1発", "銀の十字架", "謎の携帯メモリ", "インクが空の万年筆", "色あせたお守り", "使い込まれたパイプ", "よれた手帳", "読み込まれた本", "ケースに入った楽器", "綺麗な鈴", "写真の入ったロケット", "古びた鍵", "汚れた帽子", "片耳分のピアス", "一房の髪", "血塗られたストール", "裂けた服", "ヒビの入ったゴーグル", "壊れた眼鏡", "曇ったモノクル", "革製の眼帯", "ボロボロの財布", "よく手入れされた工具", "止まった腕時計", "子ども用の傘", "千切れたネックレス", "開かない懐中時計", "一組のダイス"]}), "EXT": $hash2(["name", "type", "table"], {"name": "専門能力表", "type": "D66", "table": ["メンタル 分類:準備", "宗教 分類:準備", "危険物 分類:準備", "化学 分類:準備", "狩猟 分類:準備", "警備 分類:準備", "採掘 分類:準備", "トレーニング 分類:準備", "輸送・保管 分類:準備", "サバイバル 分類:準備", "通信 分類:調査", "運転 分類:調査", "探偵 分類:調査", "地理 分類:調査", "ドローン 分類:調査", "交渉 分類:調査", "文献調査 分類:調査", "IT 分類:調査", "建築 分類:調査", "土木 分類:復興", "農業・畜産 分類:復興", "醸造 分類:復興", "教育 分類:復興", "公衆衛生 分類:復興", "治安 分類:復興", "電気 分類:復興", "機械 分類:復興", "芸術・芸能 分類:復興", "単純作業 分類:日常", "ゲーム 分類:日常", "調理 分類:日常", "医療 分類:日常", "スポーツ 分類:日常", "ナイトビジネス 分類:日常", "祭事 分類:日常", "商売 分類:日常"]}), "CAT": $hash2(["name", "type", "table"], {"name": "コロッサル行動表", "type": "1D6", "table": ["ZOWが急速に拡大してゆく!左右いずれかのエリアをZOWにする。対象エリアはZOWとなり、既存のイベントは消滅する。対象エリアは相談して選択し、そのエリアのイベントは消滅する。", "あのコロッサルの反応は……。コロッサルの情報をひとつ得る。", "何もしない。", "何もしない。", "何もしない。", "何もしない。"]})}).$freeze()); - return self.$setPrefixes($rb_plus(["CH.*", "B6T", "CNP"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/CrashWorld.js b/src/assets/dicebot/CrashWorld.js deleted file mode 100644 index 2c579ad8a..000000000 --- a/src/assets/dicebot/CrashWorld.js +++ /dev/null @@ -1,68 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$===', '$getCrashWorldRoll', '$to_i', '$last_match', '$debug', '$!', '$roll', '$==', '$<=', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'CrashWorld'); - - var $nesting = [self].concat($parent_nesting), $CrashWorld_rollDiceCommand$1, $CrashWorld_getCrashWorldRoll$2; - - - Opal.const_set($nesting[0], 'ID', "CrashWorld"); - Opal.const_set($nesting[0], 'NAME', "墜落世界"); - Opal.const_set($nesting[0], 'SORT_KEY', "ついらくせかい"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 CWn\n" + "初期目標値n (必須)\n" + "例・CW8\n"); - self.$setPrefixes(["CW\\d+"]); - - Opal.def(self, '$rollDiceCommand', $CrashWorld_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, result = nil, $case = nil; - - - result = nil; - $case = command; - if (/CW(\d+)/i['$===']($case)) {result = self.$getCrashWorldRoll($$($nesting, 'Regexp').$last_match(1).$to_i())}; - return result; - }, $CrashWorld_rollDiceCommand$1.$$arity = 1); - return (Opal.def(self, '$getCrashWorldRoll', $CrashWorld_getCrashWorldRoll$2 = function $$getCrashWorldRoll(target) { - var $a, $b, $c, self = this, output = nil, isEnd = nil, successness = nil, num = nil; - - - self.$debug("target", target); - output = "("; - isEnd = false; - successness = 0; - num = 0; - while ($truthy(isEnd['$!']())) { - - $c = self.$roll(1, 12), $b = Opal.to_ary($c), (num = ($b[0] == null ? nil : $b[0])), $c; - if (output['$==']("(")) { - output = "" + "(" + (num) - } else { - output = "" + (output) + ", " + (num) - }; - if ($truthy(($truthy($b = $rb_le(num, target)) ? $b : num['$=='](11)))) { - - target = num; - successness = $rb_plus(successness, 1); - } else if (num['$=='](12)) { - isEnd = true - } else { - isEnd = true - }; - }; - if (num['$=='](12)) { - successness = 0}; - output = "" + (output) + ") 成功度 : " + (successness); - if (num['$=='](12)) { - output = "" + (output) + " ファンブル"}; - return output; - }, $CrashWorld_getCrashWorldRoll$2.$$arity = 1), nil) && 'getCrashWorldRoll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Cthulhu.js b/src/assets/dicebot/Cthulhu.js deleted file mode 100644 index df565201e..000000000 --- a/src/assets/dicebot/Cthulhu.js +++ /dev/null @@ -1,395 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$setPrefixes', '$===', '$getCheckResult', '$getRegistResult', '$getCombineRoll', '$match', '$to_i', '$[]', '$eval', '$new', '$>', '$+', '$roll', '$getCheckResultText', '$floor', '$/', '$*', '$<', '$<=', '$>=', '$-', '$include?', '$debug', '$==']); - - self.$require("utils/ArithmeticEvaluator"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Cthulhu'); - - var $nesting = [self].concat($parent_nesting), $Cthulhu_initialize$1, $Cthulhu_rollDiceCommand$2, $Cthulhu_getCheckResult$3, $Cthulhu_getCheckResultText$4, $Cthulhu_getRegistResult$5, $Cthulhu_getCombineRoll$6; - - self.$$prototype.special_percentage = self.$$prototype.critical_percentage = self.$$prototype.fumble_percentage = nil; - - Opal.const_set($nesting[0], 'ID', "Cthulhu"); - Opal.const_set($nesting[0], 'NAME', "クトゥルフ神話TRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "くとうるふしんわTRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "c=クリティカル値 / f=ファンブル値 / s=スペシャル\n" + "\n" + "1d100<=n c・f・sすべてオフ(単純な数値比較判定のみ行います)\n" + "\n" + "・cfs判定付き判定コマンド\n" + "\n" + "CC\t 1d100ロールを行う c=1、f=100\n" + "CCB 同上、c=5、f=96\n" + "\n" + "例:CC<=80 (技能値80で行為判定。1%ルールでcf適用)\n" + "例:CCB<=55 (技能値55で行為判定。5%ルールでcf適用)\n" + "\n" + "・組み合わせロールについて\n" + "\n" + "CBR(x,y)\tc=1、f=100\n" + "CBRB(x,y)\tc=5、f=96\n" + "\n" + "・抵抗表ロールについて\n" + "RES(x-y)\tc=1、f=100\n" + "RESB(x-y)\tc=5、f=96\n" + "\n" + "※故障ナンバー判定\n" + "\n" + "・CC(x) c=1、f=100\n" + "x=故障ナンバー。出目x以上が出た上で、ファンブルが同時に発生した場合、共に出力する(テキスト「ファンブル&故障」)\n" + "ファンブルでない場合、成功・失敗に関わらずテキスト「故障」のみを出力する(成功・失敗を出力せず、上書きしたものを出力する形)\n" + "\n" + "・CCB(x) c=5、f=96\n" + "同上\n" + "\n"); - self.$setPrefixes(["CC(B)?\\(\\d+\\)", "CC(B)?.*", "RES(B)?.*", "CBR(B)?\\(\\d+,\\d+\\)"]); - - Opal.def(self, '$initialize', $Cthulhu_initialize$1 = function $$initialize() { - var $iter = $Cthulhu_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Cthulhu_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Cthulhu_initialize$1, false), $zuper, $iter); - self.special_percentage = 20; - self.critical_percentage = 1; - return (self.fumble_percentage = 1); - }, $Cthulhu_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Cthulhu_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - - $case = command; - if (/CCB/i['$===']($case)) { - self.critical_percentage = 5; - self.fumble_percentage = 5; - return self.$getCheckResult(command);} - else if (/CC/i['$===']($case)) { - self.critical_percentage = 1; - self.fumble_percentage = 1; - return self.$getCheckResult(command);} - else if (/RESB/i['$===']($case)) { - self.critical_percentage = 5; - self.fumble_percentage = 5; - return self.$getRegistResult(command);} - else if (/CBRB/i['$===']($case)) { - self.critical_percentage = 5; - self.fumble_percentage = 5; - return self.$getCombineRoll(command);} - else if (/RES/i['$===']($case)) { - self.critical_percentage = 1; - self.fumble_percentage = 1; - return self.$getRegistResult(command);} - else if (/CBR/i['$===']($case)) { - self.critical_percentage = 1; - self.fumble_percentage = 1; - return self.$getCombineRoll(command);}; - return nil; - }, $Cthulhu_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getCheckResult', $Cthulhu_getCheckResult$3 = function $$getCheckResult(command) { - var $a, $b, self = this, broken_num = nil, diff = nil, m = nil, output = nil, total_n = nil; - - - broken_num = 0; - diff = 0; - if ($truthy((m = /CCB?(\d+)?<=([+-\/*\d]+)/i.$match(command)))) { - - broken_num = m['$[]'](1).$to_i(); - diff = $$($nesting, 'ArithmeticEvaluator').$new().$eval(m['$[]'](2));}; - output = ""; - if ($truthy($rb_gt(diff, 0))) { - - output = "" + "(1D100<=" + (diff) + ")"; - if ($truthy($rb_gt(broken_num, 0))) { - output = $rb_plus(output, "" + " 故障ナンバー[" + (broken_num) + "]")}; - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = $rb_plus(output, "" + " > " + (total_n)); - output = $rb_plus(output, "" + " > " + (self.$getCheckResultText(total_n, diff, broken_num))); - } else { - - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = "" + "(1D100) > " + (total_n); - }; - return output; - }, $Cthulhu_getCheckResult$3.$$arity = 1); - - Opal.def(self, '$getCheckResultText', $Cthulhu_getCheckResultText$4 = function $$getCheckResultText(total_n, diff, broken_num) { - var $a, self = this, result = nil, diff_special = nil, fumble = nil; - - - - if (broken_num == null) { - broken_num = 0; - }; - result = ""; - diff_special = 0; - fumble = false; - if ($truthy($rb_gt(self.special_percentage, 0))) { - - diff_special = $rb_divide($rb_times(diff, self.special_percentage), 100).$floor(); - if ($truthy($rb_lt(diff_special, 1))) { - diff_special = 1};}; - if ($truthy(($truthy($a = $rb_le(total_n, diff)) ? $rb_lt(total_n, 100) : $a))) { - - result = "成功"; - if ($truthy($rb_gt(diff_special, 0))) { - if ($truthy($rb_le(total_n, self.critical_percentage))) { - if ($truthy($rb_le(total_n, diff_special))) { - result = "決定的成功/スペシャル" - } else { - result = "決定的成功" - } - } else if ($truthy($rb_le(total_n, diff_special))) { - result = "スペシャル"}}; - } else { - - result = "失敗"; - if ($truthy($rb_gt(diff_special, 0))) { - if ($truthy(($truthy($a = $rb_ge(total_n, $rb_minus(101, self.fumble_percentage))) ? $rb_lt(diff, 100) : $a))) { - - result = "致命的失敗"; - fumble = true;}}; - }; - if ($truthy($rb_gt(broken_num, 0))) { - if ($truthy($rb_ge(total_n, broken_num))) { - if ($truthy(fumble)) { - result = $rb_plus(result, "/故障") - } else { - result = "故障" - }}}; - return result; - }, $Cthulhu_getCheckResultText$4.$$arity = -3); - - Opal.def(self, '$getRegistResult', $Cthulhu_getRegistResult$5 = function $$getRegistResult(command) { - var $a, $b, self = this, m = nil, value = nil, target = nil, total_n = nil, result = nil; - - - m = /RES(B)?([-\d]+)/i.$match(command); - if ($truthy(m)) { - } else { - return "1" - }; - value = m['$[]'](2).$to_i(); - target = $rb_plus($rb_times(value, 5), 50); - if ($truthy($rb_lt(target, 5))) { - return "" + "(1d100<=" + (target) + ") > 自動失敗"}; - if ($truthy($rb_gt(target, 95))) { - return "" + "(1d100<=" + (target) + ") > 自動成功"}; - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - result = self.$getCheckResultText(total_n, target); - return "" + "(1d100<=" + (target) + ") > " + (total_n) + " > " + (result); - }, $Cthulhu_getRegistResult$5.$$arity = 1); - return (Opal.def(self, '$getCombineRoll', $Cthulhu_getCombineRoll$6 = function $$getCombineRoll(command) { - var $a, $b, self = this, m = nil, diff_1 = nil, diff_2 = nil, total = nil, result_1 = nil, result_2 = nil, successList = nil, succesCount = nil, rank = nil; - - - m = /CBR(B)?\((\d+),(\d+)\)/i.$match(command); - if ($truthy(m)) { - } else { - return "1" - }; - diff_1 = m['$[]'](2).$to_i(); - diff_2 = m['$[]'](3).$to_i(); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), $b; - result_1 = self.$getCheckResultText(total, diff_1); - result_2 = self.$getCheckResultText(total, diff_2); - successList = ["決定的成功/スペシャル", "決定的成功", "スペシャル", "成功"]; - succesCount = 0; - if ($truthy(successList['$include?'](result_1))) { - succesCount = $rb_plus(succesCount, 1)}; - if ($truthy(successList['$include?'](result_2))) { - succesCount = $rb_plus(succesCount, 1)}; - self.$debug("succesCount", succesCount); - rank = (function() {if ($truthy($rb_ge(succesCount, 2))) { - return "成功" - } else if (succesCount['$=='](1)) { - return "部分的成功" - } else { - return "失敗" - }; return nil; })(); - return "" + "(1d100<=" + (diff_1) + "," + (diff_2) + ") > " + (total) + "[" + (result_1) + "," + (result_2) + "] > " + (rank); - }, $Cthulhu_getCombineRoll$6.$$arity = 1), nil) && 'getCombineRoll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Cthulhu7th.js b/src/assets/dicebot/Cthulhu7th.js deleted file mode 100644 index f608ad525..000000000 --- a/src/assets/dicebot/Cthulhu7th.js +++ /dev/null @@ -1,498 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $range = Opal.range, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$setPrefixes', '$===', '$getCheckResult', '$getCombineRoll', '$getFullAutoResult', '$roll_bmr_table', '$roll_bms_table', '$roll_1d8_table', '$roll_1d100_table', '$private', '$roll', '$-', '$[]', '$match', '$to_i', '$nil?', '$<=', '$==', '$include?', '$min', '$max', '$roll_with_bonus', '$+', '$join', '$getCheckResultText', '$new', '$abs', '$roll_tens_d10', '$bcdice', '$roll_ones_d10', '$map', '$>=', '$/', '$<', '$=~', '$last_match', '$debug', '$downcase', '$to_s', '$floor', '$>', '$!', '$rollFullAuto', '$each', '$getNextDifficultyMessage', '$getHitResultInfos', '$getHitResultText', '$getHitType', '$getBulletResults', '$[]=', '$shouldStopRollFullAuto?', '$freeze', '$getFumbleable', '$getSuccessListImpaleBulletList', '$getSetOfBullet', '$getHitBulletCountBase', '$to_f', '$isLastBulletTurn', '$ceil', '$getLastHitBulletCount']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Cthulhu7th'); - - var $nesting = [self].concat($parent_nesting), $Cthulhu7th_initialize$1, $Cthulhu7th_rollDiceCommand$2, $Cthulhu7th_roll_1d8_table$3, $Cthulhu7th_roll_1d100_table$4, $Cthulhu7th_getCheckResult$5, $Cthulhu7th_roll_ones_d10$6, $Cthulhu7th_roll_with_bonus$7, $Cthulhu7th_getCheckResultText$10, $Cthulhu7th_getCombineRoll$11, $Cthulhu7th_getFullAutoResult$12, $Cthulhu7th_rollFullAuto$13, $Cthulhu7th_shouldStopRollFullAuto$ques$15, $Cthulhu7th_getHitResultInfos$16, $Cthulhu7th_getHitResultText$17, $Cthulhu7th_getHitType$18, $Cthulhu7th_getBulletResults$19, $Cthulhu7th_getSuccessListImpaleBulletList$20, $Cthulhu7th_getNextDifficultyMessage$21, $Cthulhu7th_getSetOfBullet$22, $Cthulhu7th_getHitBulletCountBase$23, $Cthulhu7th_isLastBulletTurn$24, $Cthulhu7th_getLastHitBulletCount$25, $Cthulhu7th_getFumbleable$26, $Cthulhu7th_roll_bmr_table$27, $Cthulhu7th_roll_bms_table$28; - - self.$$prototype.bonus_dice_range = nil; - - Opal.const_set($nesting[0], 'ID', "Cthulhu7th"); - Opal.const_set($nesting[0], 'NAME', "新クトゥルフ神話TRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "しんくとうるふしんわTRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "※コマンドは入力内容の前方一致で検出しています。\n" + "・判定 CC(x)<=(目標値)\n" + " x:ボーナス・ペナルティダイス (2~-2)。省略可。\n" + " 目標値が無くても1D100は表示される。\n" + " ファンブル/失敗/ レギュラー成功/ハード成功/\n" + " イクストリーム成功/クリティカル を自動判定。\n" + "例)CC<=30 CC(2)<=50 CC(+2)<=50 CC(-1)<=75 CC-1<=50 CC1<=65 CC+1<=65 CC\n" + "\n" + "・組み合わせ判定 (CBR(x,y))\n" + " 目標値 x と y で%ロールを行い、成否を判定。\n" + " 例)CBR(50,20)\n" + "\n" + "・自動火器の射撃判定 FAR(w,x,y,z,d,v)\n" + " w:弾丸の数(1~100)、x:技能値(1~100)、y:故障ナンバー、\n" + " z:ボーナス・ペナルティダイス(-2~2)。省略可。\n" + " d:指定難易度で連射を終える(レギュラー:r,ハード:h,イクストリーム:e)。省略可。\n" + " v:ボレーの弾丸の数を変更する。省略可。\n" + " 命中数と貫通数、残弾数のみ算出。ダメージ算出はありません。\n" + "例)FAR(25,70,98) FAR(50,80,98,-1) far(30,70,99,1,R)\n" + "  far(25,88,96,2,h,5) FaR(40,77,100,,e,4) fAr(20,47,100,,,3)\n" + "\n" + "・各種表\n" + " 【狂気関連】\n" + " ・狂気の発作(リアルタイム)(Bouts of Madness Real Time) BMR\n" + " ・狂気の発作(サマリー)(Bouts of Madness Summary) BMS\n" + " ・恐怖症(Sample Phobias)表 PH/マニア(Sample Manias)表 MA\n" + " 【魔術関連】\n" + " ・プッシュ時のキャスティング・ロール(Casting Roll)の失敗表\n" + "  強力でない呪文の場合 FCL/強力な呪文の場合 FCM\n"); - self.$setPrefixes(["CC\\(\\d+\\)", "CC.*", "CBR\\(\\d+,\\d+\\)", "FAR.*", "BMR", "BMS", "FCL", "FCM", "PH", "MA"]); - - Opal.def(self, '$initialize', $Cthulhu7th_initialize$1 = function $$initialize() { - var $iter = $Cthulhu7th_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Cthulhu7th_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Cthulhu7th_initialize$1, false), $zuper, $iter); - return (self.bonus_dice_range = $range(-2, 2, false)); - }, $Cthulhu7th_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Cthulhu7th_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if (/^CC/i['$===']($case)) {return self.$getCheckResult(command)} - else if (/^CBR/i['$===']($case)) {return self.$getCombineRoll(command)} - else if (/^FAR/i['$===']($case)) {return self.$getFullAutoResult(command)} - else if (/^BMR/i['$===']($case)) {return self.$roll_bmr_table()} - else if (/^BMS/i['$===']($case)) {return self.$roll_bms_table()} - else if (/^FCL/i['$===']($case)) {return self.$roll_1d8_table("キャスティング・ロール失敗(小)表", $$($nesting, 'FAILED_CASTING_L_TABLE'))} - else if (/^FCM/i['$===']($case)) {return self.$roll_1d8_table("キャスティング・ロール失敗(大)表", $$($nesting, 'FAILED_CASTING_M_TABLE'))} - else if (/^PH/i['$===']($case)) {return self.$roll_1d100_table("恐怖症表", $$($nesting, 'PHOBIAS_TABLE'))} - else if (/^MA/i['$===']($case)) {return self.$roll_1d100_table("マニア表", $$($nesting, 'MANIAS_TABLE'))} - else {return nil}})() - }, $Cthulhu7th_rollDiceCommand$2.$$arity = 1); - self.$private(); - - Opal.def(self, '$roll_1d8_table', $Cthulhu7th_roll_1d8_table$3 = function $$roll_1d8_table(table_name, table) { - var $a, $b, self = this, total_n = nil, index = nil, text = nil; - - - $b = self.$roll(1, 8), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(total_n, 1); - text = table['$[]'](index); - return "" + (table_name) + "(" + (total_n) + ") > " + (text); - }, $Cthulhu7th_roll_1d8_table$3.$$arity = 2); - - Opal.def(self, '$roll_1d100_table', $Cthulhu7th_roll_1d100_table$4 = function $$roll_1d100_table(table_name, table) { - var $a, $b, self = this, total_n = nil, index = nil, text = nil; - - - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(total_n, 1); - text = table['$[]'](index); - return "" + (table_name) + "(" + (total_n) + ") > " + (text); - }, $Cthulhu7th_roll_1d100_table$4.$$arity = 2); - - Opal.def(self, '$getCheckResult', $Cthulhu7th_getCheckResult$5 = function $$getCheckResult(command) { - var $a, $b, self = this, m = nil, bonus_dice_count = nil, diff = nil, without_compare = nil, dice = nil, total = nil, total_list = nil, output = nil, result_text = nil; - - - m = /^CC([-+]?\d+)?(<=(\d+))?/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - bonus_dice_count = m['$[]'](1).$to_i(); - diff = m['$[]'](3).$to_i(); - without_compare = ($truthy($a = m['$[]'](2)['$nil?']()) ? $a : $rb_le(diff, 0)); - if ($truthy((($a = bonus_dice_count['$=='](0)) ? $rb_le(diff, 0) : bonus_dice_count['$=='](0)))) { - - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - return "" + "1D100 > " + (dice);}; - if ($truthy(self.bonus_dice_range['$include?'](bonus_dice_count))) { - } else { - return "" + "エラー。ボーナス・ペナルティダイスの値は" + (self.bonus_dice_range.$min()) + "~" + (self.bonus_dice_range.$max()) + "です。" - }; - $b = self.$roll_with_bonus(bonus_dice_count), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (total_list = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(without_compare)) { - - output = "" + "(1D100) ボーナス・ペナルティダイス[" + (bonus_dice_count) + "]"; - output = $rb_plus(output, "" + " > " + (total_list.$join(", ")) + " > " + (total)); - } else { - - result_text = self.$getCheckResultText(total, diff); - output = "" + "(1D100<=" + (diff) + ") ボーナス・ペナルティダイス[" + (bonus_dice_count) + "]"; - output = $rb_plus(output, "" + " > " + (total_list.$join(", ")) + " > " + (total) + " > " + (result_text)); - }; - return output; - }, $Cthulhu7th_getCheckResult$5.$$arity = 1); - - Opal.def(self, '$roll_ones_d10', $Cthulhu7th_roll_ones_d10$6 = function $$roll_ones_d10() { - var $a, $b, self = this, dice = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - if (dice['$=='](10)) { - return 0}; - return dice; - }, $Cthulhu7th_roll_ones_d10$6.$$arity = 0); - - Opal.def(self, '$roll_with_bonus', $Cthulhu7th_roll_with_bonus$7 = function $$roll_with_bonus(bonus) { - var $$8, $$9, self = this, tens_list = nil, ones = nil, dice_list = nil, dice = nil; - - - tens_list = $send($$($nesting, 'Array'), 'new', [$rb_plus(bonus.$abs(), 1)], ($$8 = function(){var self = $$8.$$s || this; - - return self.$bcdice().$roll_tens_d10()}, $$8.$$s = self, $$8.$$arity = 0, $$8)); - ones = self.$roll_ones_d10(); - dice_list = $send(tens_list, 'map', [], ($$9 = function(tens){var self = $$9.$$s || this, dice = nil; - - - - if (tens == null) { - tens = nil; - }; - dice = $rb_plus(tens, ones); - if (dice['$=='](0)) { - return 100 - } else { - return dice - };}, $$9.$$s = self, $$9.$$arity = 1, $$9)); - dice = (function() {if ($truthy($rb_ge(bonus, 0))) { - return dice_list.$min() - } else { - return dice_list.$max() - }; return nil; })(); - return [dice, dice_list]; - }, $Cthulhu7th_roll_with_bonus$7.$$arity = 1); - - Opal.def(self, '$getCheckResultText', $Cthulhu7th_getCheckResultText$10 = function $$getCheckResultText(total, diff, fumbleable) { - var self = this, fumble_text = nil; - - - - if (fumbleable == null) { - fumbleable = false; - }; - if ($truthy($rb_le(total, diff))) { - - if (total['$=='](1)) { - return "クリティカル"}; - if ($truthy($rb_le(total, $rb_divide(diff, 5)))) { - return "イクストリーム成功"}; - if ($truthy($rb_le(total, $rb_divide(diff, 2)))) { - return "ハード成功"}; - return "レギュラー成功";}; - fumble_text = "ファンブル"; - if (total['$=='](100)) { - return fumble_text}; - if ($truthy($rb_ge(total, 96))) { - if ($truthy($rb_lt(diff, 50))) { - return fumble_text - } else if ($truthy(fumbleable)) { - return fumble_text}}; - return "失敗"; - }, $Cthulhu7th_getCheckResultText$10.$$arity = -3); - - Opal.def(self, '$getCombineRoll', $Cthulhu7th_getCombineRoll$11 = function $$getCombineRoll(command) { - var $a, $b, self = this, diff_1 = nil, diff_2 = nil, total = nil, result_1 = nil, result_2 = nil, successList = nil, succesCount = nil, rank = nil; - - - if ($truthy(/CBR\((\d+),(\d+)\)/i['$=~'](command))) { - } else { - return nil - }; - diff_1 = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diff_2 = $$($nesting, 'Regexp').$last_match(2).$to_i(); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), $b; - result_1 = self.$getCheckResultText(total, diff_1); - result_2 = self.$getCheckResultText(total, diff_2); - successList = ["クリティカル", "イクストリーム成功", "ハード成功", "レギュラー成功"]; - succesCount = 0; - if ($truthy(successList['$include?'](result_1))) { - succesCount = $rb_plus(succesCount, 1)}; - if ($truthy(successList['$include?'](result_2))) { - succesCount = $rb_plus(succesCount, 1)}; - self.$debug("succesCount", succesCount); - rank = (function() {if ($truthy($rb_ge(succesCount, 2))) { - return "成功" - } else if (succesCount['$=='](1)) { - return "部分的成功" - } else { - return "失敗" - }; return nil; })(); - return "" + "(1d100<=" + (diff_1) + "," + (diff_2) + ") > " + (total) + "[" + (result_1) + "," + (result_2) + "] > " + (rank); - }, $Cthulhu7th_getCombineRoll$11.$$arity = 1); - - Opal.def(self, '$getFullAutoResult', $Cthulhu7th_getFullAutoResult$12 = function $$getFullAutoResult(command) { - var $a, $b, self = this, bullet_count = nil, diff = nil, broken_number = nil, bonus_dice_count = nil, stop_count = nil, bullet_set_count_cap = nil, output = nil, bullet_count_limit = nil; - - - if ($truthy(/^FAR\((-?\d+),(-?\d+),(-?\d+)(?:,(-?\d+)?)?(?:,(-?\w+)?)?(?:,(-?\d+)?)?\)/i['$=~'](command))) { - } else { - return nil - }; - bullet_count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diff = $$($nesting, 'Regexp').$last_match(2).$to_i(); - broken_number = $$($nesting, 'Regexp').$last_match(3).$to_i(); - bonus_dice_count = ($truthy($a = $$($nesting, 'Regexp').$last_match(4)) ? $a : 0).$to_i(); - stop_count = ($truthy($a = $$($nesting, 'Regexp').$last_match(5)) ? $a : "").$to_s().$downcase(); - bullet_set_count_cap = ($truthy($a = $$($nesting, 'Regexp').$last_match(6)) ? $a : $rb_divide(diff, 10).$floor()).$to_i(); - output = ""; - bullet_count_limit = 100; - if ($truthy($rb_gt(bullet_count, bullet_count_limit))) { - - output = $rb_plus(output, "" + "弾薬が多すぎます。装填された弾薬を" + (bullet_count_limit) + "発に変更します。\n"); - bullet_count = bullet_count_limit;}; - if ($truthy(($truthy($a = ($truthy($b = $rb_gt(bullet_set_count_cap, $rb_divide(diff, 10).$floor())) ? $rb_gt(diff, 39) : $b)) ? $$($nesting, 'Regexp').$last_match(6)['$nil?']()['$!']() : $a))) { - - bullet_set_count_cap = $rb_divide(diff, 10).$floor(); - output = $rb_plus(output, "" + "ボレーの弾丸の数の上限は[技能値÷10(切り捨て)]発なので、それより高い数を指定できません。ボレーの弾丸の数を" + (bullet_set_count_cap) + "発に変更します。\n"); - } else if ($truthy(($truthy($a = ($truthy($b = $rb_le(diff, 39)) ? $rb_gt(bullet_set_count_cap, 3) : $b)) ? $$($nesting, 'Regexp').$last_match(6)['$nil?']()['$!']() : $a))) { - - bullet_set_count_cap = 3; - output = $rb_plus(output, "" + "技能値が39以下ではボレーの弾丸の数の上限および下限は3発です。ボレーの弾丸の数を" + (bullet_set_count_cap) + "発に変更します。\n");}; - if ($truthy(($truthy($a = $rb_le(bullet_set_count_cap, 0)) ? $$($nesting, 'Regexp').$last_match(6)['$nil?']()['$!']() : $a))) { - return "ボレーの弾丸の数は正の数です。"}; - if ($truthy(($truthy($a = $rb_lt(bullet_set_count_cap, 3)) ? $$($nesting, 'Regexp').$last_match(6)['$nil?']()['$!']() : $a))) { - - bullet_set_count_cap = 3; - output = $rb_plus(output, "ボレーの弾丸の数の下限は3発です。ボレーの弾丸の数を3発に変更します。\n");}; - if ($truthy($rb_le(bullet_count, 0))) { - return "弾薬は正の数です。"}; - if ($truthy($rb_le(diff, 0))) { - return "目標値は正の数です。"}; - if ($truthy($rb_lt(broken_number, 0))) { - - output = $rb_plus(output, "故障ナンバーは正の数です。マイナス記号を外します。\n"); - broken_number = broken_number.$abs();}; - if ($truthy(self.bonus_dice_range['$include?'](bonus_dice_count))) { - } else { - return "" + "エラー。ボーナス・ペナルティダイスの値は" + (self.bonus_dice_range.$min()) + "~" + (self.bonus_dice_range.$max()) + "です。" - }; - output = $rb_plus(output, "" + "ボーナス・ペナルティダイス[" + (bonus_dice_count) + "]"); - output = $rb_plus(output, self.$rollFullAuto(bullet_count, diff, broken_number, bonus_dice_count, stop_count, bullet_set_count_cap)); - return output; - }, $Cthulhu7th_getFullAutoResult$12.$$arity = 1); - - Opal.def(self, '$rollFullAuto', $Cthulhu7th_rollFullAuto$13 = function $$rollFullAuto(bullet_count, diff, broken_number, dice_num, stop_count, bullet_set_count_cap) {try { - - var $$14, self = this, output = nil, loopCount = nil, counts = nil; - - - output = ""; - loopCount = 0; - counts = $hash2(["hit_bullet", "impale_bullet", "bullet"], {"hit_bullet": 0, "impale_bullet": 0, "bullet": bullet_count}); - (function(){var $brk = Opal.new_brk(); try {return $send($range(0, 3, false), 'each', [], ($$14 = function(more_difficulty){var self = $$14.$$s || this, $a, $b, $c, hit_result = nil, total = nil, total_list = nil, hit_type = nil, hit_bullet = nil, impale_bullet = nil, lost_bullet = nil, $writer = nil; - if (self.bonus_dice_range == null) self.bonus_dice_range = nil; - - - - if (more_difficulty == null) { - more_difficulty = nil; - }; - output = $rb_plus(output, self.$getNextDifficultyMessage(more_difficulty)); - while ($truthy($rb_ge(dice_num, self.bonus_dice_range.$min()))) { - - loopCount = $rb_plus(loopCount, 1); - $c = self.$getHitResultInfos(dice_num, diff, more_difficulty), $b = Opal.to_ary($c), (hit_result = ($b[0] == null ? nil : $b[0])), (total = ($b[1] == null ? nil : $b[1])), (total_list = ($b[2] == null ? nil : $b[2])), $c; - output = $rb_plus(output, "" + "\n" + (loopCount) + "回目: > " + (total_list.$join(", ")) + " > " + (hit_result)); - if ($truthy($rb_ge(total, broken_number))) { - - output = $rb_plus(output, " ジャム"); - Opal.ret(self.$getHitResultText(output, counts));}; - hit_type = self.$getHitType(more_difficulty, hit_result); - $c = self.$getBulletResults(counts['$[]']("bullet"), hit_type, diff, bullet_set_count_cap), $b = Opal.to_ary($c), (hit_bullet = ($b[0] == null ? nil : $b[0])), (impale_bullet = ($b[1] == null ? nil : $b[1])), (lost_bullet = ($b[2] == null ? nil : $b[2])), $c; - output = $rb_plus(output, "" + " (" + (hit_bullet) + "発が命中、" + (impale_bullet) + "発が貫通)"); - - $writer = ["hit_bullet", $rb_plus(counts['$[]']("hit_bullet"), hit_bullet)]; - $send(counts, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = ["impale_bullet", $rb_plus(counts['$[]']("impale_bullet"), impale_bullet)]; - $send(counts, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = ["bullet", $rb_minus(counts['$[]']("bullet"), lost_bullet)]; - $send(counts, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy($rb_le(counts['$[]']("bullet"), 0))) { - Opal.ret(self.$getHitResultText(output, counts))}; - dice_num = $rb_minus(dice_num, 1); - }; - if ($truthy(self['$shouldStopRollFullAuto?'](stop_count, more_difficulty))) { - - output = $rb_plus(output, "\n【指定の難易度となったので、処理を終了します。】"); - - Opal.brk(nil, $brk);}; - return (dice_num = $rb_plus(dice_num, 1));}, $$14.$$s = self, $$14.$$brk = $brk, $$14.$$arity = 1, $$14)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return self.$getHitResultText(output, counts); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $Cthulhu7th_rollFullAuto$13.$$arity = 6); - Opal.const_set($nesting[0], 'ROLL_FULL_AUTO_DIFFICULTY_THRESHOLD', $hash2(["r", "h", "e"], {"r": 0, "h": 1, "e": 2}).$freeze()); - - Opal.def(self, '$shouldStopRollFullAuto?', $Cthulhu7th_shouldStopRollFullAuto$ques$15 = function(stop_count, difficulty) { - var $a, self = this, difficulty_threshold = nil; - - - difficulty_threshold = $$($nesting, 'ROLL_FULL_AUTO_DIFFICULTY_THRESHOLD')['$[]'](stop_count); - return ($truthy($a = difficulty_threshold) ? $rb_ge(difficulty, difficulty_threshold) : $a); - }, $Cthulhu7th_shouldStopRollFullAuto$ques$15.$$arity = 2); - - Opal.def(self, '$getHitResultInfos', $Cthulhu7th_getHitResultInfos$16 = function $$getHitResultInfos(dice_num, diff, more_difficulty) { - var $a, $b, self = this, total = nil, total_list = nil, fumbleable = nil, hit_result = nil; - - - $b = self.$roll_with_bonus(dice_num), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (total_list = ($a[1] == null ? nil : $a[1])), $b; - fumbleable = self.$getFumbleable(more_difficulty); - hit_result = self.$getCheckResultText(total, diff, fumbleable); - return [hit_result, total, total_list]; - }, $Cthulhu7th_getHitResultInfos$16.$$arity = 3); - - Opal.def(self, '$getHitResultText', $Cthulhu7th_getHitResultText$17 = function $$getHitResultText(output, counts) { - var self = this; - - return "" + (output) + "\n> " + (counts['$[]']("hit_bullet")) + "発が通常命中、" + (counts['$[]']("impale_bullet")) + "発が貫通、残弾" + (counts['$[]']("bullet")) + "発" - }, $Cthulhu7th_getHitResultText$17.$$arity = 2); - - Opal.def(self, '$getHitType', $Cthulhu7th_getHitType$18 = function $$getHitType(more_difficulty, hit_result) { - var $a, $b, self = this, successList = nil, impaleBulletList = nil; - - - $b = self.$getSuccessListImpaleBulletList(more_difficulty), $a = Opal.to_ary($b), (successList = ($a[0] == null ? nil : $a[0])), (impaleBulletList = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(successList['$include?'](hit_result))) { - return "hit"}; - if ($truthy(impaleBulletList['$include?'](hit_result))) { - return "impale"}; - return ""; - }, $Cthulhu7th_getHitType$18.$$arity = 2); - - Opal.def(self, '$getBulletResults', $Cthulhu7th_getBulletResults$19 = function $$getBulletResults(bullet_count, hit_type, diff, bullet_set_count_cap) { - var self = this, bullet_set_count = nil, hit_bullet_count_base = nil, impale_bullet_count_base = nil, lost_bullet_count = nil, hit_bullet_count = nil, impale_bullet_count = nil, $case = nil; - - - bullet_set_count = self.$getSetOfBullet(diff, bullet_set_count_cap); - hit_bullet_count_base = self.$getHitBulletCountBase(diff, bullet_set_count); - impale_bullet_count_base = $rb_divide(bullet_set_count, (2).$to_f()); - lost_bullet_count = 0; - hit_bullet_count = 0; - impale_bullet_count = 0; - if ($truthy(self.$isLastBulletTurn(bullet_count, bullet_set_count)['$!']())) { - - $case = hit_type; - if ("hit"['$===']($case)) {hit_bullet_count = hit_bullet_count_base} - else if ("impale"['$===']($case)) { - impale_bullet_count = impale_bullet_count_base.$floor(); - hit_bullet_count = impale_bullet_count_base.$ceil();}; - lost_bullet_count = bullet_set_count; - } else { - - $case = hit_type; - if ("hit"['$===']($case)) {hit_bullet_count = self.$getLastHitBulletCount(bullet_count)} - else if ("impale"['$===']($case)) { - impale_bullet_count = self.$getLastHitBulletCount(bullet_count); - hit_bullet_count = $rb_minus(bullet_count, impale_bullet_count);}; - lost_bullet_count = bullet_count; - }; - return [hit_bullet_count, impale_bullet_count, lost_bullet_count]; - }, $Cthulhu7th_getBulletResults$19.$$arity = 4); - - Opal.def(self, '$getSuccessListImpaleBulletList', $Cthulhu7th_getSuccessListImpaleBulletList$20 = function $$getSuccessListImpaleBulletList(more_difficulty) { - var self = this, successList = nil, impaleBulletList = nil, $case = nil; - - - successList = []; - impaleBulletList = []; - $case = more_difficulty; - if ((0)['$===']($case)) { - successList = ["ハード成功", "レギュラー成功"]; - impaleBulletList = ["クリティカル", "イクストリーム成功"];} - else if ((1)['$===']($case)) { - successList = ["ハード成功"]; - impaleBulletList = ["クリティカル", "イクストリーム成功"];} - else if ((2)['$===']($case)) { - successList = []; - impaleBulletList = ["クリティカル", "イクストリーム成功"];} - else if ((3)['$===']($case)) { - successList = ["クリティカル"]; - impaleBulletList = [];}; - return [successList, impaleBulletList]; - }, $Cthulhu7th_getSuccessListImpaleBulletList$20.$$arity = 1); - - Opal.def(self, '$getNextDifficultyMessage', $Cthulhu7th_getNextDifficultyMessage$21 = function $$getNextDifficultyMessage(more_difficulty) { - var self = this, $case = nil; - - - $case = more_difficulty; - if ((1)['$===']($case)) {return "\n【難易度がハードに変更】"} - else if ((2)['$===']($case)) {return "\n【難易度がイクストリームに変更】"} - else if ((3)['$===']($case)) {return "\n【難易度がクリティカルに変更】"}; - return ""; - }, $Cthulhu7th_getNextDifficultyMessage$21.$$arity = 1); - - Opal.def(self, '$getSetOfBullet', $Cthulhu7th_getSetOfBullet$22 = function $$getSetOfBullet(diff, bullet_set_count_cap) { - var $a, self = this, bullet_set_count = nil; - - - bullet_set_count = $rb_divide(diff, 10).$floor(); - if ($truthy($rb_lt(bullet_set_count_cap, bullet_set_count))) { - bullet_set_count = bullet_set_count_cap}; - if ($truthy(($truthy($a = $rb_ge(diff, 1)) ? $rb_lt(diff, 30) : $a))) { - bullet_set_count = 3}; - return bullet_set_count; - }, $Cthulhu7th_getSetOfBullet$22.$$arity = 2); - - Opal.def(self, '$getHitBulletCountBase', $Cthulhu7th_getHitBulletCountBase$23 = function $$getHitBulletCountBase(diff, bullet_set_count) { - var $a, self = this, hit_bullet_count_base = nil; - - - hit_bullet_count_base = $rb_divide(bullet_set_count, 2).$floor(); - if ($truthy(($truthy($a = $rb_ge(diff, 1)) ? $rb_lt(diff, 30) : $a))) { - hit_bullet_count_base = 1}; - return hit_bullet_count_base; - }, $Cthulhu7th_getHitBulletCountBase$23.$$arity = 2); - - Opal.def(self, '$isLastBulletTurn', $Cthulhu7th_isLastBulletTurn$24 = function $$isLastBulletTurn(bullet_count, bullet_set_count) { - var self = this; - - return $rb_lt($rb_minus(bullet_count, bullet_set_count), 0) - }, $Cthulhu7th_isLastBulletTurn$24.$$arity = 2); - - Opal.def(self, '$getLastHitBulletCount', $Cthulhu7th_getLastHitBulletCount$25 = function $$getLastHitBulletCount(bullet_count) { - var self = this, count = nil; - - - if (bullet_count['$=='](1)) { - return 1}; - count = $rb_divide(bullet_count, (2).$to_f()).$floor(); - return count; - }, $Cthulhu7th_getLastHitBulletCount$25.$$arity = 1); - - Opal.def(self, '$getFumbleable', $Cthulhu7th_getFumbleable$26 = function $$getFumbleable(more_difficulty) { - var self = this; - - return $rb_ge(more_difficulty, 1) - }, $Cthulhu7th_getFumbleable$26.$$arity = 1); - - Opal.def(self, '$roll_bmr_table', $Cthulhu7th_roll_bmr_table$27 = function $$roll_bmr_table() { - var $a, $b, self = this, total_n = nil, text = nil, time_n = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - text = $$($nesting, 'MADNESS_REAL_TIME_TABLE')['$[]']($rb_minus(total_n, 1)); - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (time_n = ($a[0] == null ? nil : $a[0])), $b; - return "" + "狂気の発作(リアルタイム)(" + (total_n) + ") > " + (text) + "(1D10>" + (time_n) + "ラウンド)"; - }, $Cthulhu7th_roll_bmr_table$27.$$arity = 0); - Opal.const_set($nesting[0], 'MADNESS_REAL_TIME_TABLE', ["健忘症:探索者は、最後に安全な場所にいた時からあとに起こった出来事の記憶を持たない。例えば、朝食を食べていた次の瞬間には怪物と向かい合っている。これは1D10ラウンド続く。", "身体症状症:探索者は1D10ラウンドの間、狂気によって視覚や聴覚に異常が生じたり、四肢の1つまたは複数が動かなくなる。", "暴力衝動:赤い霧が探索者に降り、1D10ラウンドの間、抑えの利かない暴力と破壊を敵味方を問わず周囲に向かって爆発させる。", "偏執症:探索者は1D10ラウンドの間、重い偏執症に襲われる。誰もが探索者に襲い掛かろうとしている。信用できる者はいない。監視されている。裏切ったやつがいる。これはわなだ。", "重要な人々:探索者のバックストーリーの重要な人々を見直す。探索者はその場にいた人物を、自分にとっての重要な人々だと思い込む。人間関係の性質を考慮した上で、探索者はそれに従って行動する。1D10ラウンド続く。", "失神:探索者は失神する。1D10ラウンド後に回復する。", "パニックになって逃亡する:探索者は利用できるあらゆる手段を使って、可能なかぎり遠くへ逃げ出さずにはいられない。それが唯一の車両を奪って仲間を置き去りにすることであっても。探索者は1D10ラウンドの間、逃げ続ける。", "身体的ヒステリーもしくは感情爆発:探索者は1D10ラウンドの間、笑ったり、泣いたり、あるいは叫んだりし続け、行動できなくなる。", "恐怖症:探索者は新しい恐怖症に陥る。恐怖症表(PHコマンド)をロールするか、キーパーが恐怖症を1つ選ぶ。恐怖症の原因は存在しなくとも、その探索者は次の1D10ラウンドの間、それがそこにあると思い込む。", "マニア:探索者は新しいマニアに陥る。マニア表(MAコマンド)をロールするか、キーパーがマニアを1つ選ぶ。その探索者は次の1D10ラウンドの間、自分の新しいマニアに没頭しようとする。"].$freeze()); - - Opal.def(self, '$roll_bms_table', $Cthulhu7th_roll_bms_table$28 = function $$roll_bms_table() { - var $a, $b, self = this, total_n = nil, text = nil, time_n = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - text = $$($nesting, 'MADNESS_SUMMARY_TABLE')['$[]']($rb_minus(total_n, 1)); - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (time_n = ($a[0] == null ? nil : $a[0])), $b; - return "" + "狂気の発作(サマリー)(" + (total_n) + ") > " + (text) + "(1D10>" + (time_n) + "時間)"; - }, $Cthulhu7th_roll_bms_table$28.$$arity = 0); - Opal.const_set($nesting[0], 'MADNESS_SUMMARY_TABLE', ["健忘症:探索者が意識を取り戻すと、見知らぬ場所におり、自分が誰かもわからない。記憶は時間をかけてゆっくりと戻るだろう。", "盗難:探索者は1D10時間後に意識を取り戻すが、盗難の被害を受けている。傷つけられてはいない。探索者が秘蔵の品を身に着けていた場合(「探索者のバックストーリー」参照)、〈幸運〉ロールを行い、それが盗まれていないか判定する。値打ちのあるものはすべて自動的に失われる。", "暴行:探索者は1D10時間後に意識を取り戻し、自分が暴行を受け、傷ついていることに気づく。耐久力は狂気に陥る前の半分に減少している。ただし重症は生じていない。盗まれたものはない。どのようにダメージが加えられたかは、キーパーに委ねられる。", "暴力:探索者は暴力と破壊の噴流を爆発させる。探索者が意識を取り戻した時、その行動を認識し記憶していることもあればそうでないこともある。探索者が暴力を振るった物、もしくは人、そして相手を殺してしまったのか、あるいは単に傷つけただけなのかはキーパーに委ねられる。", "イデオロギー/信念:探索者のバックストーリーのイデオロギーと信念を参照する。探索者はこれらの1つの権化となり、急進的かつ狂気じみて、感情もあらわに主張するようになる。例えば、宗教に関係する者は、その後地下鉄で声高に福音を説教しているところを目撃されるかもしれない。", "重要な人々:探索者のバックストーリーの重要な人々を参照し、なぜその人物との関係が重要かを考える。時間がたってから(1D10時間以上)、探索者はその人物に近づくための最善の行動、そしてその人物との関係にとって最善の行動をとる。", "収容:探索者は精神療養施設あるいは警察の留置所で意識を取り戻す。探索者は徐々にそこにいたった出来事を思い出すかもしれない。", "パニック:探索者は非常に遠い場所で意識を取り戻す。荒野で道に迷っているか、列車に乗っているか、長距離バスに乗っているかもしれない。", "恐怖症:探索者は新たな恐怖症を獲得する。恐怖症表(PHコマンド)をロールするか、キーパーがどれか1つ選ぶ。探索者は1D10時間後に意識を取り戻し、この新たな恐怖症の対象を避けるためにあらゆる努力をする。", "マニア:探索者は新たなマニアを獲得する。マニア表(MAコマンド)をロールするか、キーパーがどれか1つ選ぶ。この狂気の発作の間、探索者はこの新たなマニアに完全に溺れているだろう。これがほかの人々に気づかれるかどうかは、キーパーとプレイヤーに委ねられる。"].$freeze()); - Opal.const_set($nesting[0], 'FAILED_CASTING_L_TABLE', ["視界がぼんやりするか、あるいは一時的な失明。", "悲鳴、声、あるいはほかの雑音が肉体から発せられる。", "強風やほかの大気の現象。", "術者、ほかのその場に居合わせた者が出血する。あるいは環境(例えば、壁)から出血する。", "奇妙な幻視と幻覚。", "その付近の小動物たちが爆発する。", "硫黄の悪臭。", "クトゥルフ神話の怪物が偶然召喚される。"].$freeze()); - Opal.const_set($nesting[0], 'FAILED_CASTING_M_TABLE', ["大地が震え、壁に亀裂が入って崩れる。", "叙事詩的な電撃。", "血が空から降る。", "術者の手がしなび、焼けただれる。", "術者は不自然に年をとる(年齢に+2D10歳、30ページの「年齢」を参照し、能力値に修正を適用すること)。", "強力な、あるいは無数のクトゥルフ神話存在が現れ、術者を手始めに、近くの全員を攻撃する!", "術者や近くの全員が遠い時代か場所に吸い込まれる。", "クトゥルフ神話の神格が偶然招来される。"].$freeze()); - Opal.const_set($nesting[0], 'PHOBIAS_TABLE', ["入浴恐怖症:体、手、顔を洗うのが怖い。", "高所恐怖症:高いところが怖い。", "飛行恐怖症:飛ぶのが怖い。", "広場恐怖症:広場、公共の(混雑した)場所が怖い。", "鶏肉恐怖症:鶏肉が怖い。", "ニンニク恐怖症:ニンニクが怖い。", "乗車恐怖症:車両の中にいたり車両に乗るのが怖い。", "風恐怖症:風が怖い。", "男性恐怖症:男性が怖い。", "イングランド恐怖症:イングランド、もしくはイングランド文化などが怖い。", "花恐怖症:花が怖い。", "切断恐怖症:手足や指などが切断された人が怖い。", "クモ恐怖症:クモが怖い。", "稲妻恐怖症:稲妻が怖い。", "廃墟恐怖症:廃墟が怖い。", "笛恐怖症:笛(フルート)が怖い。", "細菌恐怖症:細菌、バクテリアが怖い。", "銃弾恐怖症:投擲物や銃弾が怖い。", "落下恐怖症:落下が怖い。", "書物恐怖症:本が怖い。", "植物恐怖症:植物が怖い。", "美女恐怖症:美しい女性が怖い。", "低温恐怖症:冷たいものが怖い。", "時計恐怖症:時計が怖い。", "閉所恐怖症:壁に囲まれた場所が怖い。", "道化師恐怖症:道化師が怖い。", "犬恐怖症:犬が怖い。", "悪魔恐怖症:悪魔が怖い。", "群集恐怖症:人混みが怖い。", "歯科医恐怖症:歯科医が怖い。", "処分恐怖症:物を捨てるのが怖い(ためこみ症)", "毛皮恐怖症:毛皮が怖い。", "構断恐怖症:道路を横断するのが怖い。", "教会恐怖症:教会が怖い。", "鏡恐怖症:鏡が怖い。", "ピン恐怖症:針やピンが怖い。", "昆虫恐怖症:昆虫が怖い。", "猫恐怖症:猫が怖い。", "橋恐怖症:橋を渡るのが怖い。", "老人恐怖症:老人や年をとることが怖い。", "女性恐怖症:女性が怖い。", "血液恐怖症:血が怖い。", "過失恐怖症:失敗が怖い。", "接触恐怖症:触ることが怖い。", "爬虫類恐怖症:爬虫類が怖い。", "霧恐怖症:霧が怖い。", "銃器恐怖症:銃器が怖い。", "水恐怖症:水が怖い。", "睡眠恐怖症:眠ったり、催眠状態に陥るのが怖い。", "医師恐怖症:医師が怖い。", "魚恐怖症:魚が怖い。", "ゴキブリ恐怖症:ゴキブリが怖い。", "雷鳴恐怖症:雷鳴が怖い。", "野菜恐怖症:野菜が怖い。", "大騒音恐怖症:大きな騒音が怖い。", "湖恐怖症:湖が怖い。", "機械恐怖症:機械や装置が怖い。", "巨大物恐怖症:巨大なものが怖い。", "拘束恐怖症:縛られたり結びつけられたりするのが怖い。", "隕石恐怖症:流星や隕石が怖い。", "孤独恐怖症:独りでいることが怖い。", "汚染恐怖症:汚れたり汚染されたりするのが怖い。", "粘液恐怖症:粘液、粘体が怖い。", "死体恐怖症:死体が怖い。", "8恐怖症:8の数字が怖い。", "歯恐怖症:歯が怖い。", "夢恐怖症:夢が怖い。", "名称恐怖症:特定の言葉(1つまたは複数)を聞くのが怖い。", "蛇恐怖症:蛇が怖い。", "鳥恐怖症:鳥が怖い。", "寄生生物恐怖症:寄生生物が怖い。", "人形恐怖症:人形が怖い。", "恐食症:のみ込むこと食べること、もしくは食べられることが怖い。", "薬物恐怖症:薬物が怖い。", "幽霊恐怖症:幽霊が怖い。", "羞明:日光が怖い。", "ひげ恐怖症:ひげが怖い", "河川恐怖症:川が怖い", "アルコール恐怖症:アルコールやアルコール飲料が怖い。", "火恐怖症:火が怖い。", "魔術恐怖症:魔術が怖い。", "暗黒恐怖症:暗闇や夜が怖い。", "月恐怖症:月が怖い。", "鉄道恐怖症:列車の旅が怖い。", "星恐怖症:星が怖い。", "狭所恐怖症:狭いものや場所が怖い。", "対称恐怖症:左右対称が怖い。", "生き埋め恐怖症:生き埋めになることや墓地が怖い。", "雄牛恐怖症:雄牛が怖い。", "電話恐怖症:電話が怖い。", "奇形恐怖症:怪物が怖い。", "海洋恐怖症:海が怖い。", "手術恐怖症:外科手術が怖い。", "13恐怖症:13の数字が怖い。", "衣類恐怖症:衣服が怖い。", "魔女恐怖症:魔女と魔術が怖い。", "黄色恐怖症:黄色や「黄色」という言葉が怖い。", "外国語恐怖症:外国語が怖い。", "外国人恐怖症:外国人が怖い。", "動物恐怖症:動物が怖い。"].$freeze()); - return Opal.const_set($nesting[0], 'MANIAS_TABLE', ["洗浄マニア:自分の体を洗わずにはいられない。", "無為マニア:病的な優柔不断。", "暗闇マニア:暗黒に関する過度の嗜好。", "高所マニア:高い場所に登らずにはいられない。", "善良マニア:病的な親切。", "広場マニア:開けた場所にいたいという激しい願望。", "先鋭マニア:鋭いもの、とがったものへの執着。", "猫マニア:猫に関する異常な愛好心。", "疼痛性愛:痛みへの執着。", "にんにくマニア:にんにくへの執着。", "乗り物マニア:車の中にいることへの執着。", "病的快活:不合理なほがらかさ。", "花マニア:花への執着。", "計算マニア:数への偏執的な没頭。", "浪費マニア:衝動的あるいは無謀な浪費。", "自己マニア:孤独への過度の嗜好。", "バレエマニア:バレエに関する異常な愛好心。", "書籍約盗癖:本を盗みたいという強迫的衝動。", "書物マニア:本または読書、あるいはその両方への執着。", "歯ぎしりマニア:歯ぎしりしたいという強迫的衝動。", "悪霊マニア:誰かの中に邪悪な精霊がいるという病的な信念。", "自己愛マニア:自分自身の美への執着。", "地図マニア:いたる所の地図を見る制御不可能な強迫的衝動。", "飛び降りマニア:高い場所から跳躍することへの執着。", "寒冷マニア:冷たさ、または冷たいもの、あるいはその両方への異常な欲望。", "舞踏マニア:踊ることへの愛好もしくは制御不可能な熱狂。", "睡眠マニア:寝ることへの過度の願望。", "墓地マニア:墓地への執着。", "色彩マニア:特定の色への執着。", "ピエロマニア:ピエロへの執着。", "遭遇マニア:恐ろしい状況を経験したいという強迫的衝動。", "殺害マニア:殺害への執着。", "悪魔マニア:誰かが悪魔にとりつかれているという病的な信念。", "皮膚マニア:人の皮膚を引っぱりたいという強迫的衝動。", "正義マニア:正義が完遂されるのを見たいという執着。", "アルコールマニア:アルコールに関する異常な欲求。", "毛皮マニア:毛皮を所有することへの執着。", "贈り物マニア:贈り物を与えることへの執着。", "逃走マニア:逃走することへの迫的衝動。", "外出マニア:外を歩き回ることの強迫的衝動。", "自己中心マニア:不合理な自心の態度か自己崇拝。", "公職マニア:公的な職業に就きいという強欲な衝動。", "戦慄マニア:誰かが罪を犯したという病的な信念", "知識マニア:知識を得ることへ執着。", "静寂マニア:静寂であることへ強迫的衝動。", "エーテルマニア:エーテルへの切望", "求婚マニア:奇妙な求婚をすることへの執着。", "笑いマニア:制御不可能な笑うことへの強迫的衝動。", "魔術マニア:魔女と魔術への執着。", "筆記マニア:すべてを書き留めることへの執着。", "裸体マニア:裸になりたいという強迫的衝動。", "幻想マニア:快い幻想(現実とは関係なく)にとらわれやすい異常な傾向。", "蟲マニア:蟲に関する過度の嗜好。", "火器マニア:火器への執着。", "水マニア:水に関する不合理な渇望。", "魚マニア:魚への執着。", "アイコンマニア:像や肖像への執着。", "アイドルマニア:偶像への執着または献身。", "情報マニア:事実を集めることへの過度の献身。", "絶叫マニア:叫ぶことへの説明できない強迫的衝動。", "窃盗マニア:盗むことへの説明できない強迫的衝動。", "騒音マニア:大きな、あるいは甲高い騒音を出すことへの制御不可能な強迫的衝動。", "ひもマニア:ひもへの執着。", "宝くじマニア:宝くじに参加したいという極度の願望。", "うつマニア:異常に深くふさぎ込む傾向。", "巨石マニア:環状列石/立石があると奇妙な考えにとらわれる異常な傾向。", "音楽マニア:音楽もしくは特定の旋律への執着。", "作詩マニア:詩を書くことへの強欲な願望。", "憎悪マニア:何らかの対象あるいはグループの何もかもを憎む執着。", "偏執マニア:ただ1つの思想やアイデアへの異常な執着。", "虚言マニア:異常なほどにうそをついたり、誇張して話す。", "疾病マニア:想像上の病気に苦められる幻想。", "記録マニア:あらゆるものを記録に残そうという強迫的衝動。", "名前マニア:人々、場所、ものなどの名前への執着", "単語マニア:ある単語を繰り返したいという押さえ切れない欲求。", "爪損傷マニア:指の爪をむしったりはがそうとする強迫的衝動。", "美食マニア:1種類の食物への異常な愛。", "不平マニア:不平を言うことへの異常な喜び。", "仮面マニア:仮面や覆面を着けたいという強迫的衝動。", "幽霊マニア:幽霊への執着。", "殺人マニア:殺人への病的な傾向。", "光線マニア:光への病的な願望。", "放浪マニア:社会の規範に背きたいという異常な欲望。", "長者マニア:富への強迫的な欲望。", "病的虚言マニア:うそをつきたくてたまらない強迫的衝動。", "放火マニア:火をつけることへの強迫的衝動。", "質問マニア:質問したいという激しい強迫的衝動。", "鼻マニア:鼻をいじりたいという強迫的衝動。", "落書きマニア:いらずら書きや落書きへの執着。", "列車マニア:列車と鉄道旅行への強い魅了。", "知性マニア:誰かが信じられないほど知的であるという幻想。", "テクノマニア:新技術への執着。", "タナトスマニア:誰かが死を招く魔術によって呪われているという信念。", "宗教マニア:その人が神であるという信仰。", "かき傷マニア:かき傷をつけることへの強迫的衝動。", "手術マニア:外科手術を行なうことへの不合理な嗜好。", "抜毛マニア:自分の髪を引き抜くことへの切望。", "失明マニア:病的な視覚障害。", "異国マニア:外国のものへの執着。", "動物マニア:動物への正気でない溺愛。"].$freeze()); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Cthulhu7th_ChineseTraditional.js b/src/assets/dicebot/Cthulhu7th_ChineseTraditional.js deleted file mode 100644 index ed165138b..000000000 --- a/src/assets/dicebot/Cthulhu7th_ChineseTraditional.js +++ /dev/null @@ -1,407 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $range = Opal.range, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$setPrefixes', '$===', '$getCheckResult', '$getCombineRoll', '$getFullAutoResult', '$=~', '$to_i', '$last_match', '$<=', '$include?', '$min', '$max', '$+', '$rollPercentD10', '$getTotalLists', '$getTotal', '$getCheckResultText', '$join', '$roll', '$==', '$abs', '$times', '$*', '$push', '$>=', '$/', '$<', '$debug', '$>', '$rollFullAuto', '$each', '$getNextDifficltyMessage', '$getHitResultInfos', '$getHitResultText', '$getHitType', '$getBulletResults', '$[]', '$[]=', '$-', '$getFumbleable', '$getSuccessListImpaleBulletList', '$getSetOfBullet', '$getHitBulletCountBase', '$to_f', '$!', '$isLastBulletTurn', '$floor', '$ceil', '$getLastHitBulletCount']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Cthulhu7th_ChineseTraditional'); - - var $nesting = [self].concat($parent_nesting), $Cthulhu7th_ChineseTraditional_initialize$1, $Cthulhu7th_ChineseTraditional_rollDiceCommand$2, $Cthulhu7th_ChineseTraditional_getCheckResult$3, $Cthulhu7th_ChineseTraditional_rollPercentD10$4, $Cthulhu7th_ChineseTraditional_getTotalLists$5, $Cthulhu7th_ChineseTraditional_getTotal$7, $Cthulhu7th_ChineseTraditional_getCheckResultText$8, $Cthulhu7th_ChineseTraditional_getCombineRoll$9, $Cthulhu7th_ChineseTraditional_getFullAutoResult$10, $Cthulhu7th_ChineseTraditional_rollFullAuto$11, $Cthulhu7th_ChineseTraditional_getHitResultInfos$13, $Cthulhu7th_ChineseTraditional_getHitResultText$14, $Cthulhu7th_ChineseTraditional_getHitType$15, $Cthulhu7th_ChineseTraditional_getBulletResults$16, $Cthulhu7th_ChineseTraditional_getSuccessListImpaleBulletList$17, $Cthulhu7th_ChineseTraditional_getNextDifficltyMessage$18, $Cthulhu7th_ChineseTraditional_getSetOfBullet$19, $Cthulhu7th_ChineseTraditional_getHitBulletCountBase$20, $Cthulhu7th_ChineseTraditional_isLastBulletTurn$21, $Cthulhu7th_ChineseTraditional_getLastHitBulletCount$22, $Cthulhu7th_ChineseTraditional_getFumbleable$23; - - self.$$prototype.bonus_dice_range = nil; - - Opal.const_set($nesting[0], 'ID', "Cthulhu7th:ChineseTraditional"); - Opal.const_set($nesting[0], 'NAME', "克蘇魯神話第7版"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Chinese Traditional:克蘇魯神話"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 CC(x)<=(目標値)\n" + " x:獎勵骰/懲罰骰:Bonus/Penalty Dice (2~-2)。沒有的話可以省略。\n" + " 致命的失敗:Fumble/失敗:Failure/通常成功:Regular success/\n" + " 困難成功:Hard success/極限成功:Extreme success/\n" + " 決定性的成功:Critical success 自動判定。\n" + "例)CC<=30 CC(2)<=50 CC(-1)<=75\n" + "\n" + "・組合判定 (CBR(x,y))\n" + " 進行目標値 x 和 y 的判定。\n" + " 例)CBR(50,20)\n" + "\n" + "・連射(Full Auto)判定 FAR(w,x,y,z)\n" + " w:彈數(1~100)、x:技能値(1~100)、y:故障率\n" + " z:獎勵、懲罰骰(-2~2)。可省略。\n" + " 只計算命中數、貫穿數及剩餘彈藥,不計算傷害。\n" + "例)FAR(25,70,98) FAR(50,80,98,-1)\n" + "\n" + "・瘋狂表\n" + "・實時型 Short/總結型 Longer\n"); - self.$setPrefixes(["CC\\(\\d+\\)", "CC.*", "CBR\\(\\d+,\\d+\\)", "FAR\\(\\d+\\)", "FAR.*"]); - - Opal.def(self, '$initialize', $Cthulhu7th_ChineseTraditional_initialize$1 = function $$initialize() { - var $iter = $Cthulhu7th_ChineseTraditional_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Cthulhu7th_ChineseTraditional_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Cthulhu7th_ChineseTraditional_initialize$1, false), $zuper, $iter); - return (self.bonus_dice_range = $range(-2, 2, false)); - }, $Cthulhu7th_ChineseTraditional_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Cthulhu7th_ChineseTraditional_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - - $case = command; - if (/CC/i['$===']($case)) {return self.$getCheckResult(command)} - else if (/CBR/i['$===']($case)) {return self.$getCombineRoll(command)} - else if (/FAR/i['$===']($case)) {return self.$getFullAutoResult(command)}; - return nil; - }, $Cthulhu7th_ChineseTraditional_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getCheckResult', $Cthulhu7th_ChineseTraditional_getCheckResult$3 = function $$getCheckResult(command) { - var self = this, bonus_dice_count = nil, diff = nil, output = nil, units_digit = nil, total_list = nil, total = nil, result_text = nil; - - - if ($truthy(/^CC([-\d]+)?<=(\d+)/i['$=~'](command))) { - } else { - nil - }; - bonus_dice_count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diff = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($rb_le(diff, 0))) { - return "錯誤。目標值需為1以上。"}; - if ($truthy(self.bonus_dice_range['$include?'](bonus_dice_count))) { - } else { - return "" + "錯誤。獎勵、懲罰骰値為" + (self.bonus_dice_range.$min()) + "~" + (self.bonus_dice_range.$max()) + "。" - }; - output = ""; - output = $rb_plus(output, "" + "(1D100<=" + (diff) + ")"); - output = $rb_plus(output, "" + " 獎勵、懲罰骰値[" + (bonus_dice_count) + "]"); - units_digit = self.$rollPercentD10(); - total_list = self.$getTotalLists(bonus_dice_count, units_digit); - total = self.$getTotal(total_list, bonus_dice_count); - result_text = self.$getCheckResultText(total, diff); - output = $rb_plus(output, "" + " > " + (total_list.$join(", ")) + " > " + (total) + " > " + (result_text)); - return output; - }, $Cthulhu7th_ChineseTraditional_getCheckResult$3.$$arity = 1); - - Opal.def(self, '$rollPercentD10', $Cthulhu7th_ChineseTraditional_rollPercentD10$4 = function $$rollPercentD10() { - var $a, $b, self = this, dice = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - if (dice['$=='](10)) { - dice = 0}; - return dice; - }, $Cthulhu7th_ChineseTraditional_rollPercentD10$4.$$arity = 0); - - Opal.def(self, '$getTotalLists', $Cthulhu7th_ChineseTraditional_getTotalLists$5 = function $$getTotalLists(bonus_dice_count, units_digit) { - var $$6, self = this, total_list = nil, tens_digit_count = nil; - - - total_list = []; - tens_digit_count = $rb_plus(1, bonus_dice_count.$abs()); - $send(tens_digit_count, 'times', [], ($$6 = function(){var self = $$6.$$s || this, bonus = nil, total = nil; - - - bonus = self.$rollPercentD10(); - total = $rb_plus($rb_times(bonus, 10), units_digit); - if (total['$=='](0)) { - total = 100}; - return total_list.$push(total);}, $$6.$$s = self, $$6.$$arity = 0, $$6)); - return total_list; - }, $Cthulhu7th_ChineseTraditional_getTotalLists$5.$$arity = 2); - - Opal.def(self, '$getTotal', $Cthulhu7th_ChineseTraditional_getTotal$7 = function $$getTotal(total_list, bonus_dice_count) { - var self = this; - - - if ($truthy($rb_ge(bonus_dice_count, 0))) { - return total_list.$min()}; - return total_list.$max(); - }, $Cthulhu7th_ChineseTraditional_getTotal$7.$$arity = 2); - - Opal.def(self, '$getCheckResultText', $Cthulhu7th_ChineseTraditional_getCheckResultText$8 = function $$getCheckResultText(total, diff, fumbleable) { - var self = this, fumble_text = nil; - - - - if (fumbleable == null) { - fumbleable = false; - }; - if ($truthy($rb_le(total, diff))) { - - if (total['$=='](1)) { - return "決定性的成功"}; - if ($truthy($rb_le(total, $rb_divide(diff, 5)))) { - return "極限的成功"}; - if ($truthy($rb_le(total, $rb_divide(diff, 2)))) { - return "困難的成功"}; - return "通常成功";}; - fumble_text = "致命的失敗"; - if (total['$=='](100)) { - return fumble_text}; - if ($truthy($rb_ge(total, 96))) { - if ($truthy($rb_lt(diff, 50))) { - return fumble_text - } else if ($truthy(fumbleable)) { - return fumble_text}}; - return "失敗"; - }, $Cthulhu7th_ChineseTraditional_getCheckResultText$8.$$arity = -3); - - Opal.def(self, '$getCombineRoll', $Cthulhu7th_ChineseTraditional_getCombineRoll$9 = function $$getCombineRoll(command) { - var $a, $b, self = this, diff_1 = nil, diff_2 = nil, total = nil, result_1 = nil, result_2 = nil, successList = nil, succesCount = nil, rank = nil; - - - if ($truthy(/CBR\((\d+),(\d+)\)/i['$=~'](command))) { - } else { - return nil - }; - diff_1 = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diff_2 = $$($nesting, 'Regexp').$last_match(2).$to_i(); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), $b; - result_1 = self.$getCheckResultText(total, diff_1); - result_2 = self.$getCheckResultText(total, diff_2); - successList = ["決定性的成功", "極限的成功", "困難的成功", "通常成功"]; - succesCount = 0; - if ($truthy(successList['$include?'](result_1))) { - succesCount = $rb_plus(succesCount, 1)}; - if ($truthy(successList['$include?'](result_2))) { - succesCount = $rb_plus(succesCount, 1)}; - self.$debug("succesCount", succesCount); - rank = (function() {if ($truthy($rb_ge(succesCount, 2))) { - return "成功" - } else if (succesCount['$=='](1)) { - return "部分的成功" - } else { - return "失敗" - }; return nil; })(); - return "" + "(1d100<=" + (diff_1) + "," + (diff_2) + ") > " + (total) + "[" + (result_1) + "," + (result_2) + "] > " + (rank); - }, $Cthulhu7th_ChineseTraditional_getCombineRoll$9.$$arity = 1); - - Opal.def(self, '$getFullAutoResult', $Cthulhu7th_ChineseTraditional_getFullAutoResult$10 = function $$getFullAutoResult(command) { - var $a, self = this, bullet_count = nil, diff = nil, broken_number = nil, bonus_dice_count = nil, output = nil, bullet_count_limit = nil; - - - if ($truthy(/^FAR\((-?\d+)(,(-?\d+))(,(-?\d+))(,(-?\d+))?\)/i['$=~'](command))) { - } else { - return nil - }; - bullet_count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diff = $$($nesting, 'Regexp').$last_match(3).$to_i(); - broken_number = $$($nesting, 'Regexp').$last_match(5).$to_i(); - bonus_dice_count = ($truthy($a = $$($nesting, 'Regexp').$last_match(7)) ? $a : 0).$to_i(); - output = ""; - bullet_count_limit = 100; - if ($truthy($rb_gt(bullet_count, bullet_count_limit))) { - - output = $rb_plus(output, "" + "\n彈藥太多。請改裝填" + (bullet_count_limit) + "發。\n"); - bullet_count = bullet_count_limit;}; - if ($truthy($rb_le(bullet_count, 0))) { - return "正確裝填數。"}; - if ($truthy($rb_le(diff, 0))) { - return "正確目標值。"}; - if ($truthy($rb_lt(broken_number, 0))) { - - output = $rb_plus(output, "\n正確故障值。排除獎勵記號。\n"); - broken_number = broken_number.$abs();}; - if ($truthy(self.bonus_dice_range['$include?'](bonus_dice_count))) { - } else { - return "" + "\n錯誤。獎勵、懲罰骰値為" + (self.bonus_dice_range.$min()) + "~" + (self.bonus_dice_range.$max()) + "です。" - }; - output = $rb_plus(output, "" + "獎勵、懲罰骰値[" + (bonus_dice_count) + "]"); - output = $rb_plus(output, self.$rollFullAuto(bullet_count, diff, broken_number, bonus_dice_count)); - return output; - }, $Cthulhu7th_ChineseTraditional_getFullAutoResult$10.$$arity = 1); - - Opal.def(self, '$rollFullAuto', $Cthulhu7th_ChineseTraditional_rollFullAuto$11 = function $$rollFullAuto(bullet_count, diff, broken_number, dice_num) {try { - - var $$12, self = this, output = nil, loopCount = nil, counts = nil; - - - output = ""; - loopCount = 0; - counts = $hash2(["hit_bullet", "impale_bullet", "bullet"], {"hit_bullet": 0, "impale_bullet": 0, "bullet": bullet_count}); - $send($range(0, 3, false), 'each', [], ($$12 = function(more_difficlty){var self = $$12.$$s || this, $a, $b, $c, hit_result = nil, total = nil, total_list = nil, hit_type = nil, hit_bullet = nil, impale_bullet = nil, lost_bullet = nil, $writer = nil; - if (self.bonus_dice_range == null) self.bonus_dice_range = nil; - - - - if (more_difficlty == null) { - more_difficlty = nil; - }; - output = $rb_plus(output, self.$getNextDifficltyMessage(more_difficlty)); - while ($truthy($rb_ge(dice_num, self.bonus_dice_range.$min()))) { - - loopCount = $rb_plus(loopCount, 1); - $c = self.$getHitResultInfos(dice_num, diff, more_difficlty), $b = Opal.to_ary($c), (hit_result = ($b[0] == null ? nil : $b[0])), (total = ($b[1] == null ? nil : $b[1])), (total_list = ($b[2] == null ? nil : $b[2])), $c; - output = $rb_plus(output, "" + "\n" + (loopCount) + "次: > " + (total_list.$join(", ")) + " > " + (hit_result)); - if ($truthy($rb_ge(total, broken_number))) { - - output = $rb_plus(output, "卡彈"); - Opal.ret(self.$getHitResultText(output, counts));}; - hit_type = self.$getHitType(more_difficlty, hit_result); - $c = self.$getBulletResults(counts['$[]']("bullet"), hit_type, diff), $b = Opal.to_ary($c), (hit_bullet = ($b[0] == null ? nil : $b[0])), (impale_bullet = ($b[1] == null ? nil : $b[1])), (lost_bullet = ($b[2] == null ? nil : $b[2])), $c; - - $writer = ["hit_bullet", $rb_plus(counts['$[]']("hit_bullet"), hit_bullet)]; - $send(counts, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = ["impale_bullet", $rb_plus(counts['$[]']("impale_bullet"), impale_bullet)]; - $send(counts, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = ["bullet", $rb_minus(counts['$[]']("bullet"), lost_bullet)]; - $send(counts, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy($rb_le(counts['$[]']("bullet"), 0))) { - Opal.ret(self.$getHitResultText(output, counts))}; - dice_num = $rb_minus(dice_num, 1); - }; - return (dice_num = $rb_plus(dice_num, 1));}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - return self.$getHitResultText(output, counts); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $Cthulhu7th_ChineseTraditional_rollFullAuto$11.$$arity = 4); - - Opal.def(self, '$getHitResultInfos', $Cthulhu7th_ChineseTraditional_getHitResultInfos$13 = function $$getHitResultInfos(dice_num, diff, more_difficlty) { - var self = this, units_digit = nil, total_list = nil, total = nil, fumbleable = nil, hit_result = nil; - - - units_digit = self.$rollPercentD10(); - total_list = self.$getTotalLists(dice_num, units_digit); - total = self.$getTotal(total_list, dice_num); - fumbleable = self.$getFumbleable(more_difficlty); - hit_result = self.$getCheckResultText(total, diff, fumbleable); - return [hit_result, total, total_list]; - }, $Cthulhu7th_ChineseTraditional_getHitResultInfos$13.$$arity = 3); - - Opal.def(self, '$getHitResultText', $Cthulhu7th_ChineseTraditional_getHitResultText$14 = function $$getHitResultText(output, counts) { - var self = this; - - return "" + (output) + "\n> " + (counts['$[]']("hit_bullet")) + "發射擊命中、" + (counts['$[]']("impale_bullet")) + "射擊貫穿、剩餘彈藥" + (counts['$[]']("bullet")) + "發" - }, $Cthulhu7th_ChineseTraditional_getHitResultText$14.$$arity = 2); - - Opal.def(self, '$getHitType', $Cthulhu7th_ChineseTraditional_getHitType$15 = function $$getHitType(more_difficlty, hit_result) { - var $a, $b, self = this, successList = nil, impaleBulletList = nil; - - - $b = self.$getSuccessListImpaleBulletList(more_difficlty), $a = Opal.to_ary($b), (successList = ($a[0] == null ? nil : $a[0])), (impaleBulletList = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(successList['$include?'](hit_result))) { - return "hit"}; - if ($truthy(impaleBulletList['$include?'](hit_result))) { - return "impale"}; - return ""; - }, $Cthulhu7th_ChineseTraditional_getHitType$15.$$arity = 2); - - Opal.def(self, '$getBulletResults', $Cthulhu7th_ChineseTraditional_getBulletResults$16 = function $$getBulletResults(bullet_count, hit_type, diff) { - var self = this, bullet_set_count = nil, hit_bullet_count_base = nil, impale_bullet_count_base = nil, lost_bullet_count = nil, hit_bullet_count = nil, impale_bullet_count = nil, $case = nil, halfbull = nil; - - - bullet_set_count = self.$getSetOfBullet(diff); - hit_bullet_count_base = self.$getHitBulletCountBase(diff, bullet_set_count); - impale_bullet_count_base = $rb_divide(bullet_set_count, (2).$to_f()); - lost_bullet_count = 0; - hit_bullet_count = 0; - impale_bullet_count = 0; - if ($truthy(self.$isLastBulletTurn(bullet_count, bullet_set_count)['$!']())) { - - $case = hit_type; - if ("hit"['$===']($case)) {hit_bullet_count = hit_bullet_count_base} - else if ("impale"['$===']($case)) { - hit_bullet_count = impale_bullet_count_base.$floor(); - impale_bullet_count = impale_bullet_count_base.$ceil();}; - lost_bullet_count = bullet_set_count; - } else { - - $case = hit_type; - if ("hit"['$===']($case)) {hit_bullet_count = self.$getLastHitBulletCount(bullet_count)} - else if ("impale"['$===']($case)) { - halfbull = $rb_divide(bullet_count, (2).$to_f()); - hit_bullet_count = halfbull.$floor(); - impale_bullet_count = halfbull.$ceil();}; - lost_bullet_count = bullet_count; - }; - return [hit_bullet_count, impale_bullet_count, lost_bullet_count]; - }, $Cthulhu7th_ChineseTraditional_getBulletResults$16.$$arity = 3); - - Opal.def(self, '$getSuccessListImpaleBulletList', $Cthulhu7th_ChineseTraditional_getSuccessListImpaleBulletList$17 = function $$getSuccessListImpaleBulletList(more_difficlty) { - var self = this, successList = nil, impaleBulletList = nil, $case = nil; - - - successList = []; - impaleBulletList = []; - $case = more_difficlty; - if ((0)['$===']($case)) { - successList = ["困難的成功", "通常成功"]; - impaleBulletList = ["決定性的成功", "極限的成功"];} - else if ((1)['$===']($case)) { - successList = ["困難的成功"]; - impaleBulletList = ["決定性的成功", "極限的成功"];} - else if ((2)['$===']($case)) { - successList = []; - impaleBulletList = ["決定性的成功", "極限的成功"];} - else if ((3)['$===']($case)) { - successList = ["決定性的成功"]; - impaleBulletList = [];}; - return [successList, impaleBulletList]; - }, $Cthulhu7th_ChineseTraditional_getSuccessListImpaleBulletList$17.$$arity = 1); - - Opal.def(self, '$getNextDifficltyMessage', $Cthulhu7th_ChineseTraditional_getNextDifficltyMessage$18 = function $$getNextDifficltyMessage(more_difficlty) { - var self = this, $case = nil; - - - $case = more_difficlty; - if ((1)['$===']($case)) {return "\n 變更難度為困難的成功"} - else if ((2)['$===']($case)) {return "\n 變更難度為極限的成功"} - else if ((3)['$===']($case)) {return "\n 變更難度為決定性的成功"}; - return ""; - }, $Cthulhu7th_ChineseTraditional_getNextDifficltyMessage$18.$$arity = 1); - - Opal.def(self, '$getSetOfBullet', $Cthulhu7th_ChineseTraditional_getSetOfBullet$19 = function $$getSetOfBullet(diff) { - var $a, self = this, bullet_set_count = nil; - - - bullet_set_count = $rb_divide(diff, 10).$floor(); - if ($truthy(($truthy($a = $rb_ge(diff, 1)) ? $rb_lt(diff, 10) : $a))) { - bullet_set_count = 1}; - return bullet_set_count; - }, $Cthulhu7th_ChineseTraditional_getSetOfBullet$19.$$arity = 1); - - Opal.def(self, '$getHitBulletCountBase', $Cthulhu7th_ChineseTraditional_getHitBulletCountBase$20 = function $$getHitBulletCountBase(diff, bullet_set_count) { - var $a, self = this, hit_bullet_count_base = nil; - - - hit_bullet_count_base = $rb_divide(bullet_set_count, 2).$floor(); - if ($truthy(($truthy($a = $rb_ge(diff, 1)) ? $rb_lt(diff, 10) : $a))) { - hit_bullet_count_base = 1}; - return hit_bullet_count_base; - }, $Cthulhu7th_ChineseTraditional_getHitBulletCountBase$20.$$arity = 2); - - Opal.def(self, '$isLastBulletTurn', $Cthulhu7th_ChineseTraditional_isLastBulletTurn$21 = function $$isLastBulletTurn(bullet_count, bullet_set_count) { - var self = this; - - return $rb_lt($rb_minus(bullet_count, bullet_set_count), 0) - }, $Cthulhu7th_ChineseTraditional_isLastBulletTurn$21.$$arity = 2); - - Opal.def(self, '$getLastHitBulletCount', $Cthulhu7th_ChineseTraditional_getLastHitBulletCount$22 = function $$getLastHitBulletCount(bullet_count) { - var self = this, count = nil; - - - if (bullet_count['$=='](1)) { - return 1}; - count = $rb_divide(bullet_count, (2).$to_f()).$floor(); - return count; - }, $Cthulhu7th_ChineseTraditional_getLastHitBulletCount$22.$$arity = 1); - return (Opal.def(self, '$getFumbleable', $Cthulhu7th_ChineseTraditional_getFumbleable$23 = function $$getFumbleable(more_difficlty) { - var self = this; - - return $rb_ge(more_difficlty, 1) - }, $Cthulhu7th_ChineseTraditional_getFumbleable$23.$$arity = 1), nil) && 'getFumbleable'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Cthulhu7th_Korean.js b/src/assets/dicebot/Cthulhu7th_Korean.js deleted file mode 100644 index dc72eb738..000000000 --- a/src/assets/dicebot/Cthulhu7th_Korean.js +++ /dev/null @@ -1,407 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $range = Opal.range, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$setPrefixes', '$===', '$getCheckResult', '$getCombineRoll', '$getFullAutoResult', '$=~', '$to_i', '$last_match', '$<=', '$include?', '$min', '$max', '$+', '$rollPercentD10', '$getTotalLists', '$getTotal', '$getCheckResultText', '$join', '$roll', '$==', '$abs', '$times', '$*', '$push', '$>=', '$/', '$<', '$debug', '$>', '$rollFullAuto', '$each', '$getNextDifficltyMessage', '$getHitResultInfos', '$getHitResultText', '$getHitType', '$getBulletResults', '$[]', '$[]=', '$-', '$getFumbleable', '$getSuccessListImpaleBulletList', '$getSetOfBullet', '$getHitBulletCountBase', '$to_f', '$!', '$isLastBulletTurn', '$floor', '$ceil', '$getLastHitBulletCount']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Cthulhu7th_Korean'); - - var $nesting = [self].concat($parent_nesting), $Cthulhu7th_Korean_initialize$1, $Cthulhu7th_Korean_rollDiceCommand$2, $Cthulhu7th_Korean_getCheckResult$3, $Cthulhu7th_Korean_rollPercentD10$4, $Cthulhu7th_Korean_getTotalLists$5, $Cthulhu7th_Korean_getTotal$7, $Cthulhu7th_Korean_getCheckResultText$8, $Cthulhu7th_Korean_getCombineRoll$9, $Cthulhu7th_Korean_getFullAutoResult$10, $Cthulhu7th_Korean_rollFullAuto$11, $Cthulhu7th_Korean_getHitResultInfos$13, $Cthulhu7th_Korean_getHitResultText$14, $Cthulhu7th_Korean_getHitType$15, $Cthulhu7th_Korean_getBulletResults$16, $Cthulhu7th_Korean_getSuccessListImpaleBulletList$17, $Cthulhu7th_Korean_getNextDifficltyMessage$18, $Cthulhu7th_Korean_getSetOfBullet$19, $Cthulhu7th_Korean_getHitBulletCountBase$20, $Cthulhu7th_Korean_isLastBulletTurn$21, $Cthulhu7th_Korean_getLastHitBulletCount$22, $Cthulhu7th_Korean_getFumbleable$23; - - self.$$prototype.bonus_dice_range = nil; - - Opal.const_set($nesting[0], 'ID', "Cthulhu7th:Korean"); - Opal.const_set($nesting[0], 'NAME', "크툴루의 부름 7판"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:크툴루"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・판정 CC(x)<=(목표치)\n" + " x:보너스, 패널티 주사위:Bonus/Penalty Dice (2~-2). 생략 가능.\n" + " 대실패:Fumble/실패:Failure/보통 성공:Regular success/\n" + " 어려운 성공:Hard success/대단한 성공:Extreme success/\n" + " 대성공:Critical success 을 자동판정.\n" + "예)CC<=30 CC(2)<=50 CC(-1)<=75\n" + "\n" + "・조합 판정 (CBR(x,y))\n" + " 목표치 x 와 y 로 동시에 %판정을 한다.\n" + " 예)CBR(50,20)\n" + "\n" + "・연사(Full Auto)판정 FAR(w,x,y,z)\n" + " w:탄수(1~100), x:기능 수치(1~100), y:고장 넘버\n" + " z:보너스, 패널티 주사위(-2~2). 생략 가능.\n" + " 명중수와 관통수, 잔탄수만을 계산. 데미지는 계산하지 않습니다.\n" + "예)FAR(25,70,98) FAR(50,80,98,-1)\n"); - self.$setPrefixes(["CC\\(\\d+\\)", "CC.*", "CBR\\(\\d+,\\d+\\)", "FAR\\(\\d+\\)", "FAR.*"]); - - Opal.def(self, '$initialize', $Cthulhu7th_Korean_initialize$1 = function $$initialize() { - var $iter = $Cthulhu7th_Korean_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Cthulhu7th_Korean_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Cthulhu7th_Korean_initialize$1, false), $zuper, $iter); - return (self.bonus_dice_range = $range(-2, 2, false)); - }, $Cthulhu7th_Korean_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Cthulhu7th_Korean_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - - $case = command; - if (/CC/i['$===']($case)) {return self.$getCheckResult(command)} - else if (/CBR/i['$===']($case)) {return self.$getCombineRoll(command)} - else if (/FAR/i['$===']($case)) {return self.$getFullAutoResult(command)}; - return nil; - }, $Cthulhu7th_Korean_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getCheckResult', $Cthulhu7th_Korean_getCheckResult$3 = function $$getCheckResult(command) { - var self = this, bonus_dice_count = nil, diff = nil, output = nil, units_digit = nil, total_list = nil, total = nil, result_text = nil; - - - if ($truthy(/^CC([-\d]+)?<=(\d+)/i['$=~'](command))) { - } else { - nil - }; - bonus_dice_count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diff = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($rb_le(diff, 0))) { - return "에러. 목표치는 1 이상입니다."}; - if ($truthy(self.bonus_dice_range['$include?'](bonus_dice_count))) { - } else { - return "" + "에러. 보너스, 패널티 주사위의 수치는 " + (self.bonus_dice_range.$min()) + "~" + (self.bonus_dice_range.$max()) + "입니다." - }; - output = ""; - output = $rb_plus(output, "" + "(1D100<=" + (diff) + ")"); - output = $rb_plus(output, "" + " 보너스, 패널티 주사위[" + (bonus_dice_count) + "]"); - units_digit = self.$rollPercentD10(); - total_list = self.$getTotalLists(bonus_dice_count, units_digit); - total = self.$getTotal(total_list, bonus_dice_count); - result_text = self.$getCheckResultText(total, diff); - output = $rb_plus(output, "" + " > " + (total_list.$join(", ")) + " > " + (total) + " > " + (result_text)); - return output; - }, $Cthulhu7th_Korean_getCheckResult$3.$$arity = 1); - - Opal.def(self, '$rollPercentD10', $Cthulhu7th_Korean_rollPercentD10$4 = function $$rollPercentD10() { - var $a, $b, self = this, dice = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - if (dice['$=='](10)) { - dice = 0}; - return dice; - }, $Cthulhu7th_Korean_rollPercentD10$4.$$arity = 0); - - Opal.def(self, '$getTotalLists', $Cthulhu7th_Korean_getTotalLists$5 = function $$getTotalLists(bonus_dice_count, units_digit) { - var $$6, self = this, total_list = nil, tens_digit_count = nil; - - - total_list = []; - tens_digit_count = $rb_plus(1, bonus_dice_count.$abs()); - $send(tens_digit_count, 'times', [], ($$6 = function(){var self = $$6.$$s || this, bonus = nil, total = nil; - - - bonus = self.$rollPercentD10(); - total = $rb_plus($rb_times(bonus, 10), units_digit); - if (total['$=='](0)) { - total = 100}; - return total_list.$push(total);}, $$6.$$s = self, $$6.$$arity = 0, $$6)); - return total_list; - }, $Cthulhu7th_Korean_getTotalLists$5.$$arity = 2); - - Opal.def(self, '$getTotal', $Cthulhu7th_Korean_getTotal$7 = function $$getTotal(total_list, bonus_dice_count) { - var self = this; - - - if ($truthy($rb_ge(bonus_dice_count, 0))) { - return total_list.$min()}; - return total_list.$max(); - }, $Cthulhu7th_Korean_getTotal$7.$$arity = 2); - - Opal.def(self, '$getCheckResultText', $Cthulhu7th_Korean_getCheckResultText$8 = function $$getCheckResultText(total, diff, fumbleable) { - var self = this, fumble_text = nil; - - - - if (fumbleable == null) { - fumbleable = false; - }; - if ($truthy($rb_le(total, diff))) { - - if (total['$=='](1)) { - return "대성공"}; - if ($truthy($rb_le(total, $rb_divide(diff, 5)))) { - return "대단한 성공"}; - if ($truthy($rb_le(total, $rb_divide(diff, 2)))) { - return "어려운 성공"}; - return "보통 성공";}; - fumble_text = "대실패"; - if (total['$=='](100)) { - return fumble_text}; - if ($truthy($rb_ge(total, 96))) { - if ($truthy($rb_lt(diff, 50))) { - return fumble_text - } else if ($truthy(fumbleable)) { - return fumble_text}}; - return "실패"; - }, $Cthulhu7th_Korean_getCheckResultText$8.$$arity = -3); - - Opal.def(self, '$getCombineRoll', $Cthulhu7th_Korean_getCombineRoll$9 = function $$getCombineRoll(command) { - var $a, $b, self = this, diff_1 = nil, diff_2 = nil, total = nil, result_1 = nil, result_2 = nil, successList = nil, succesCount = nil, rank = nil; - - - if ($truthy(/CBR\((\d+),(\d+)\)/i['$=~'](command))) { - } else { - return nil - }; - diff_1 = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diff_2 = $$($nesting, 'Regexp').$last_match(2).$to_i(); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), $b; - result_1 = self.$getCheckResultText(total, diff_1); - result_2 = self.$getCheckResultText(total, diff_2); - successList = ["대성공", "대단한 성공", "어려운 성공", "보통성공"]; - succesCount = 0; - if ($truthy(successList['$include?'](result_1))) { - succesCount = $rb_plus(succesCount, 1)}; - if ($truthy(successList['$include?'](result_2))) { - succesCount = $rb_plus(succesCount, 1)}; - self.$debug("succesCount", succesCount); - rank = (function() {if ($truthy($rb_ge(succesCount, 2))) { - return "성공" - } else if (succesCount['$=='](1)) { - return "부분적 성공" - } else { - return "실패" - }; return nil; })(); - return "" + "(1d100<=" + (diff_1) + "," + (diff_2) + ") > " + (total) + "[" + (result_1) + "," + (result_2) + "] > " + (rank); - }, $Cthulhu7th_Korean_getCombineRoll$9.$$arity = 1); - - Opal.def(self, '$getFullAutoResult', $Cthulhu7th_Korean_getFullAutoResult$10 = function $$getFullAutoResult(command) { - var $a, self = this, bullet_count = nil, diff = nil, broken_number = nil, bonus_dice_count = nil, output = nil, bullet_count_limit = nil; - - - if ($truthy(/^FAR\((-?\d+)(,(-?\d+))(,(-?\d+))(,(-?\d+))?\)/i['$=~'](command))) { - } else { - return nil - }; - bullet_count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diff = $$($nesting, 'Regexp').$last_match(3).$to_i(); - broken_number = $$($nesting, 'Regexp').$last_match(5).$to_i(); - bonus_dice_count = ($truthy($a = $$($nesting, 'Regexp').$last_match(7)) ? $a : 0).$to_i(); - output = ""; - bullet_count_limit = 100; - if ($truthy($rb_gt(bullet_count, bullet_count_limit))) { - - output = $rb_plus(output, "" + "\n탄약이 너무 많습니다. 장전된 탄약을 " + (bullet_count_limit) + "개로 변경합니다.\n"); - bullet_count = bullet_count_limit;}; - if ($truthy($rb_le(bullet_count, 0))) { - return "탄약은 1 이상입니다."}; - if ($truthy($rb_le(diff, 0))) { - return "목표치는 1 이상입니다."}; - if ($truthy($rb_lt(broken_number, 0))) { - - output = $rb_plus(output, "\n고장 넘버는 1 이상입니다. 마이너스 기호를 제거합니다.\n"); - broken_number = broken_number.$abs();}; - if ($truthy(self.bonus_dice_range['$include?'](bonus_dice_count))) { - } else { - return "" + "\n에러. 보너스, 패널티 주사위의 수치는 " + (self.bonus_dice_range.$min()) + "~" + (self.bonus_dice_range.$max()) + "입니다." - }; - output = $rb_plus(output, "" + "보너스, 패널티 주사위 [" + (bonus_dice_count) + "]"); - output = $rb_plus(output, self.$rollFullAuto(bullet_count, diff, broken_number, bonus_dice_count)); - return output; - }, $Cthulhu7th_Korean_getFullAutoResult$10.$$arity = 1); - - Opal.def(self, '$rollFullAuto', $Cthulhu7th_Korean_rollFullAuto$11 = function $$rollFullAuto(bullet_count, diff, broken_number, dice_num) {try { - - var $$12, self = this, output = nil, loopCount = nil, counts = nil; - - - output = ""; - loopCount = 0; - counts = $hash2(["hit_bullet", "impale_bullet", "bullet"], {"hit_bullet": 0, "impale_bullet": 0, "bullet": bullet_count}); - $send($range(0, 3, false), 'each', [], ($$12 = function(more_difficlty){var self = $$12.$$s || this, $a, $b, $c, hit_result = nil, total = nil, total_list = nil, hit_type = nil, hit_bullet = nil, impale_bullet = nil, lost_bullet = nil, $writer = nil; - if (self.bonus_dice_range == null) self.bonus_dice_range = nil; - - - - if (more_difficlty == null) { - more_difficlty = nil; - }; - output = $rb_plus(output, self.$getNextDifficltyMessage(more_difficlty)); - while ($truthy($rb_ge(dice_num, self.bonus_dice_range.$min()))) { - - loopCount = $rb_plus(loopCount, 1); - $c = self.$getHitResultInfos(dice_num, diff, more_difficlty), $b = Opal.to_ary($c), (hit_result = ($b[0] == null ? nil : $b[0])), (total = ($b[1] == null ? nil : $b[1])), (total_list = ($b[2] == null ? nil : $b[2])), $c; - output = $rb_plus(output, "" + "\n" + (loopCount) + "번째: > " + (total_list.$join(", ")) + " > " + (hit_result)); - if ($truthy($rb_ge(total, broken_number))) { - - output = $rb_plus(output, " 총알 걸림"); - Opal.ret(self.$getHitResultText(output, counts));}; - hit_type = self.$getHitType(more_difficlty, hit_result); - $c = self.$getBulletResults(counts['$[]']("bullet"), hit_type, diff), $b = Opal.to_ary($c), (hit_bullet = ($b[0] == null ? nil : $b[0])), (impale_bullet = ($b[1] == null ? nil : $b[1])), (lost_bullet = ($b[2] == null ? nil : $b[2])), $c; - - $writer = ["hit_bullet", $rb_plus(counts['$[]']("hit_bullet"), hit_bullet)]; - $send(counts, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = ["impale_bullet", $rb_plus(counts['$[]']("impale_bullet"), impale_bullet)]; - $send(counts, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = ["bullet", $rb_minus(counts['$[]']("bullet"), lost_bullet)]; - $send(counts, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy($rb_le(counts['$[]']("bullet"), 0))) { - Opal.ret(self.$getHitResultText(output, counts))}; - dice_num = $rb_minus(dice_num, 1); - }; - return (dice_num = $rb_plus(dice_num, 1));}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - return self.$getHitResultText(output, counts); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $Cthulhu7th_Korean_rollFullAuto$11.$$arity = 4); - - Opal.def(self, '$getHitResultInfos', $Cthulhu7th_Korean_getHitResultInfos$13 = function $$getHitResultInfos(dice_num, diff, more_difficlty) { - var self = this, units_digit = nil, total_list = nil, total = nil, fumbleable = nil, hit_result = nil; - - - units_digit = self.$rollPercentD10(); - total_list = self.$getTotalLists(dice_num, units_digit); - total = self.$getTotal(total_list, dice_num); - fumbleable = self.$getFumbleable(more_difficlty); - hit_result = self.$getCheckResultText(total, diff, fumbleable); - return [hit_result, total, total_list]; - }, $Cthulhu7th_Korean_getHitResultInfos$13.$$arity = 3); - - Opal.def(self, '$getHitResultText', $Cthulhu7th_Korean_getHitResultText$14 = function $$getHitResultText(output, counts) { - var self = this; - - return "" + (output) + "\n> " + (counts['$[]']("hit_bullet")) + "발이 명중, " + (counts['$[]']("impale_bullet")) + "발이 관통, 잔탄 " + (counts['$[]']("bullet")) + "발" - }, $Cthulhu7th_Korean_getHitResultText$14.$$arity = 2); - - Opal.def(self, '$getHitType', $Cthulhu7th_Korean_getHitType$15 = function $$getHitType(more_difficlty, hit_result) { - var $a, $b, self = this, successList = nil, impaleBulletList = nil; - - - $b = self.$getSuccessListImpaleBulletList(more_difficlty), $a = Opal.to_ary($b), (successList = ($a[0] == null ? nil : $a[0])), (impaleBulletList = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(successList['$include?'](hit_result))) { - return "hit"}; - if ($truthy(impaleBulletList['$include?'](hit_result))) { - return "impale"}; - return ""; - }, $Cthulhu7th_Korean_getHitType$15.$$arity = 2); - - Opal.def(self, '$getBulletResults', $Cthulhu7th_Korean_getBulletResults$16 = function $$getBulletResults(bullet_count, hit_type, diff) { - var self = this, bullet_set_count = nil, hit_bullet_count_base = nil, impale_bullet_count_base = nil, lost_bullet_count = nil, hit_bullet_count = nil, impale_bullet_count = nil, $case = nil, halfbull = nil; - - - bullet_set_count = self.$getSetOfBullet(diff); - hit_bullet_count_base = self.$getHitBulletCountBase(diff, bullet_set_count); - impale_bullet_count_base = $rb_divide(bullet_set_count, (2).$to_f()); - lost_bullet_count = 0; - hit_bullet_count = 0; - impale_bullet_count = 0; - if ($truthy(self.$isLastBulletTurn(bullet_count, bullet_set_count)['$!']())) { - - $case = hit_type; - if ("hit"['$===']($case)) {hit_bullet_count = hit_bullet_count_base} - else if ("impale"['$===']($case)) { - hit_bullet_count = impale_bullet_count_base.$floor(); - impale_bullet_count = impale_bullet_count_base.$ceil();}; - lost_bullet_count = bullet_set_count; - } else { - - $case = hit_type; - if ("hit"['$===']($case)) {hit_bullet_count = self.$getLastHitBulletCount(bullet_count)} - else if ("impale"['$===']($case)) { - halfbull = $rb_divide(bullet_count, (2).$to_f()); - hit_bullet_count = halfbull.$floor(); - impale_bullet_count = halfbull.$ceil();}; - lost_bullet_count = bullet_count; - }; - return [hit_bullet_count, impale_bullet_count, lost_bullet_count]; - }, $Cthulhu7th_Korean_getBulletResults$16.$$arity = 3); - - Opal.def(self, '$getSuccessListImpaleBulletList', $Cthulhu7th_Korean_getSuccessListImpaleBulletList$17 = function $$getSuccessListImpaleBulletList(more_difficlty) { - var self = this, successList = nil, impaleBulletList = nil, $case = nil; - - - successList = []; - impaleBulletList = []; - $case = more_difficlty; - if ((0)['$===']($case)) { - successList = ["어려운 성공", "보통 성공"]; - impaleBulletList = ["대성공", "대단한 성공"];} - else if ((1)['$===']($case)) { - successList = ["어려운 성공"]; - impaleBulletList = ["대성공", "대단한 성공"];} - else if ((2)['$===']($case)) { - successList = []; - impaleBulletList = ["대성공", "대단한 성공"];} - else if ((3)['$===']($case)) { - successList = ["대성공"]; - impaleBulletList = [];}; - return [successList, impaleBulletList]; - }, $Cthulhu7th_Korean_getSuccessListImpaleBulletList$17.$$arity = 1); - - Opal.def(self, '$getNextDifficltyMessage', $Cthulhu7th_Korean_getNextDifficltyMessage$18 = function $$getNextDifficltyMessage(more_difficlty) { - var self = this, $case = nil; - - - $case = more_difficlty; - if ((1)['$===']($case)) {return "\n 난이도가 어려운 성공으로 변경"} - else if ((2)['$===']($case)) {return "\n 난이도가 대단한 성공으로 변경"} - else if ((3)['$===']($case)) {return "\n 난이도가 대성공으로 변경"}; - return ""; - }, $Cthulhu7th_Korean_getNextDifficltyMessage$18.$$arity = 1); - - Opal.def(self, '$getSetOfBullet', $Cthulhu7th_Korean_getSetOfBullet$19 = function $$getSetOfBullet(diff) { - var $a, self = this, bullet_set_count = nil; - - - bullet_set_count = $rb_divide(diff, 10).$floor(); - if ($truthy(($truthy($a = $rb_ge(diff, 1)) ? $rb_lt(diff, 10) : $a))) { - bullet_set_count = 1}; - return bullet_set_count; - }, $Cthulhu7th_Korean_getSetOfBullet$19.$$arity = 1); - - Opal.def(self, '$getHitBulletCountBase', $Cthulhu7th_Korean_getHitBulletCountBase$20 = function $$getHitBulletCountBase(diff, bullet_set_count) { - var $a, self = this, hit_bullet_count_base = nil; - - - hit_bullet_count_base = $rb_divide(bullet_set_count, 2).$floor(); - if ($truthy(($truthy($a = $rb_ge(diff, 1)) ? $rb_lt(diff, 10) : $a))) { - hit_bullet_count_base = 1}; - return hit_bullet_count_base; - }, $Cthulhu7th_Korean_getHitBulletCountBase$20.$$arity = 2); - - Opal.def(self, '$isLastBulletTurn', $Cthulhu7th_Korean_isLastBulletTurn$21 = function $$isLastBulletTurn(bullet_count, bullet_set_count) { - var self = this; - - return $rb_lt($rb_minus(bullet_count, bullet_set_count), 0) - }, $Cthulhu7th_Korean_isLastBulletTurn$21.$$arity = 2); - - Opal.def(self, '$getLastHitBulletCount', $Cthulhu7th_Korean_getLastHitBulletCount$22 = function $$getLastHitBulletCount(bullet_count) { - var self = this, count = nil; - - - if (bullet_count['$=='](1)) { - return 1}; - count = $rb_divide(bullet_count, (2).$to_f()).$floor(); - return count; - }, $Cthulhu7th_Korean_getLastHitBulletCount$22.$$arity = 1); - return (Opal.def(self, '$getFumbleable', $Cthulhu7th_Korean_getFumbleable$23 = function $$getFumbleable(more_difficlty) { - var self = this; - - return $rb_ge(more_difficlty, 1) - }, $Cthulhu7th_Korean_getFumbleable$23.$$arity = 1), nil) && 'getFumbleable'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/CthulhuTech.js b/src/assets/dicebot/CthulhuTech.js deleted file mode 100644 index e7f5766e3..000000000 --- a/src/assets/dicebot/CthulhuTech.js +++ /dev/null @@ -1,1130 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/DiceBot"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$freeze', '$attr_reader', '$map', '$to_proc', '$join', '$private', '$clearPrefixes', '$!', '$empty?', '$prefixs', '$prefixes', '$class', '$warn', '$id', '$setPrefixes', '$attr_accessor', '$name', '$sort_key', '$help_message', '$attr_writer', '$rand', '$roll', '$marshalSignOfInequality', '$unlimitedRollDiceType', '$getD66Value', '$parren_killer', '$debug', '$isGetOriginalMessage', '$getOriginalMessage', '$=~', '$prefixesPattern', '$last_match', '$removeDiceCommandMessage', '$rollDiceCommandCatched', '$nil?', '$!=', '$sub', '$rollDiceCommand', '$to_s', '$backtrace', '$size', '$===', '$check_1D100', '$check_1D20', '$check_2D6', '$check_nD10', '$check_nD6', '$check_nDx', '$is_a?', '$==', '$send', '$get_table_by_nD6', '$get_table_by_nDx', '$getTableValue', '$[]', '$-', '$/', '$getD66', '$bcdice', '$get_table_by_number', '$+', '$*', '$<', '$each', '$>=', '$kind_of?', '$lambda', '$call', '$select', '$public_methods', '$upcase', '$to_i', '$getTableInfoFromExtraTableText', '$get_table_by_nDx_extratable', '$get_table_by_d66', '$floor', '$%', '$get_table_by_d66_swap', '$raise', '$gsub', '$rollTableMessageDiceText', '$split', '$inspect']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceBot'); - - var $nesting = [self].concat($parent_nesting), $DiceBot_initialize$4, $DiceBot_postSet$5, $DiceBot_info$6, $DiceBot_id$7, $DiceBot_gameType$8, $DiceBot_name$9, $DiceBot_gameName$10, $DiceBot_sort_key$11, $DiceBot_help_message$12, $DiceBot_getHelpMessage$13, $DiceBot_prefixes$14, $DiceBot_setSendMode$15, $DiceBot_bcdice$eq$16, $DiceBot_bcdice$17, $DiceBot_rand$18, $DiceBot_roll$19, $DiceBot_marshalSignOfInequality$20, $DiceBot_unlimitedRollDiceType$21, $DiceBot_setSortType$22, $DiceBot_d66$23, $DiceBot_parren_killer$24, $DiceBot_changeText$25, $DiceBot_dice_command$26, $DiceBot_isGetOriginalMessage$27, $DiceBot_removeDiceCommandMessage$28, $DiceBot_rollDiceCommandCatched$29, $DiceBot_rollDiceCommand$30, $DiceBot_dice_command_xRn$31, $DiceBot_check_result$32, $DiceBot_check_nDx$33, $DiceBot_check_1D100$34, $DiceBot_check_1D20$35, $DiceBot_check_nD10$36, $DiceBot_check_2D6$37, $DiceBot_check_nD6$38, $DiceBot_get_table_by_2d6$39, $DiceBot_get_table_by_1d6$40, $DiceBot_get_table_by_nD6$41, $DiceBot_get_table_by_nDx$42, $DiceBot_get_table_by_1d3$43, $DiceBot_getD66$44, $DiceBot_get_table_by_d66_swap$45, $DiceBot_get_table_by_d66$46, $DiceBot_getDiceRolledAdditionalText$47, $DiceBot_getDiceRevision$48, $DiceBot_isD9$49, $DiceBot_getGrichText$50, $DiceBot_should_reroll$ques$51, $DiceBot_get_table_by_number$52, $DiceBot_getTableValue$54, $DiceBot_analyzeDiceCommandResultMethod$56, $DiceBot_get_table_by_nDx_extratable$59, $DiceBot_getTableCommandResult$60, $DiceBot_getTableInfoFromExtraTableText$61, $DiceBot_roll_tables$63; - - self.$$prototype.rerollLimitCount = self.$$prototype.d66Type = nil; - - Opal.const_set($nesting[0], 'EMPTY_PREFIXES_PATTERN', /(^|\s)(S)?()(\s|$)/i.$freeze()); - Opal.const_set($nesting[0], 'ID', "DiceBot"); - Opal.const_set($nesting[0], 'NAME', "DiceBot"); - Opal.const_set($nesting[0], 'SORT_KEY', "*たいすほつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', ""); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $setPrefixes$1, $clearPrefixes$2, $inherited$3; - - - self.$attr_reader("prefixes"); - self.$attr_reader("prefixesPattern"); - - Opal.def(self, '$setPrefixes', $setPrefixes$1 = function $$setPrefixes(prefixes) { - var self = this; - - - self.prefixes = $send(prefixes, 'map', [], "freeze".$to_proc()).$freeze(); - self.prefixesPattern = new RegExp("" + "(^|\\s)(S)?(" + (prefixes.$join("|")) + ")(\\s|$)", 'i').$freeze(); - return self; - }, $setPrefixes$1.$$arity = 1); - - Opal.def(self, '$clearPrefixes', $clearPrefixes$2 = function $$clearPrefixes() { - var self = this; - - - self.prefixes = [].$freeze(); - self.prefixesPattern = $$($nesting, 'EMPTY_PREFIXES_PATTERN'); - return self; - }, $clearPrefixes$2.$$arity = 0); - self.$private(); - return (Opal.def(self, '$inherited', $inherited$3 = function $$inherited(subclass) { - var self = this; - - return subclass.$clearPrefixes() - }, $inherited$3.$$arity = 1), nil) && 'inherited'; - })(Opal.get_singleton_class(self), $nesting); - self.$clearPrefixes(); - (Opal.class_variable_set($nesting[0], '@@bcdice', nil)); - Opal.const_set($nesting[0], 'DEFAULT_SEND_MODE', 2); - - Opal.def(self, '$initialize', $DiceBot_initialize$4 = function $$initialize() { - var $a, self = this; - - - self.sendMode = $$($nesting, 'DEFAULT_SEND_MODE'); - self.sortType = 0; - self.sameDiceRerollCount = 0; - self.sameDiceRerollType = 0; - self.d66Type = 1; - self.isPrintMaxDice = false; - self.upperRollThreshold = 0; - self.unlimitedRollDiceType = 0; - self.rerollNumber = 0; - self.defaultSuccessTarget = ""; - self.rerollLimitCount = 10000; - self.fractionType = "omit"; - if ($truthy(($truthy($a = self.$prefixs()['$empty?']()['$!']()) ? self.$class().$prefixes()['$empty?']() : $a))) { - - self.$warn("" + (self.$id()) + ": #prefixs is deprecated. Please use .setPrefixes."); - return self.$class().$setPrefixes(self.$prefixs()); - } else { - return nil - }; - }, $DiceBot_initialize$4.$$arity = 0); - self.$attr_accessor("rerollLimitCount"); - self.$attr_reader("sendMode", "sameDiceRerollCount", "sameDiceRerollType", "d66Type"); - self.$attr_reader("isPrintMaxDice", "upperRollThreshold"); - self.$attr_reader("defaultSuccessTarget", "rerollNumber", "fractionType"); - - Opal.def(self, '$postSet', $DiceBot_postSet$5 = function $$postSet() { - var self = this; - - return nil - }, $DiceBot_postSet$5.$$arity = 0); - - Opal.def(self, '$info', $DiceBot_info$6 = function $$info() { - var self = this; - - return $hash2(["gameType", "name", "sortKey", "prefixs", "info"], {"gameType": self.$id(), "name": self.$name(), "sortKey": self.$sort_key(), "prefixs": self.$class().$prefixes(), "info": self.$help_message()}) - }, $DiceBot_info$6.$$arity = 0); - - Opal.def(self, '$id', $DiceBot_id$7 = function $$id() { - var self = this; - - return $$$(self.$class(), 'ID') - }, $DiceBot_id$7.$$arity = 0); - - Opal.def(self, '$gameType', $DiceBot_gameType$8 = function $$gameType() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameType is deprecated. Please use #id."); - return self.$id(); - }, $DiceBot_gameType$8.$$arity = 0); - - Opal.def(self, '$name', $DiceBot_name$9 = function $$name() { - var self = this; - - return $$$(self.$class(), 'NAME') - }, $DiceBot_name$9.$$arity = 0); - - Opal.def(self, '$gameName', $DiceBot_gameName$10 = function $$gameName() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameName is deprecated. Please use #name."); - return self.$name(); - }, $DiceBot_gameName$10.$$arity = 0); - - Opal.def(self, '$sort_key', $DiceBot_sort_key$11 = function $$sort_key() { - var self = this; - - return $$$(self.$class(), 'SORT_KEY') - }, $DiceBot_sort_key$11.$$arity = 0); - - Opal.def(self, '$help_message', $DiceBot_help_message$12 = function $$help_message() { - var self = this; - - return $$$(self.$class(), 'HELP_MESSAGE') - }, $DiceBot_help_message$12.$$arity = 0); - - Opal.def(self, '$getHelpMessage', $DiceBot_getHelpMessage$13 = function $$getHelpMessage() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #getHelpMessage is deprecated. Please use #help_message."); - return self.$help_message(); - }, $DiceBot_getHelpMessage$13.$$arity = 0); - - Opal.def(self, '$prefixes', $DiceBot_prefixes$14 = function $$prefixes() { - var self = this; - - return self.$class().$prefixes() - }, $DiceBot_prefixes$14.$$arity = 0); - Opal.alias(self, "prefixs", "prefixes"); - - Opal.def(self, '$setSendMode', $DiceBot_setSendMode$15 = function $$setSendMode(m) { - var self = this; - - return (self.sendMode = m) - }, $DiceBot_setSendMode$15.$$arity = 1); - self.$attr_writer("upperRollThreshold"); - - Opal.def(self, '$bcdice=', $DiceBot_bcdice$eq$16 = function(b) { - var self = this; - - return (Opal.class_variable_set($nesting[0], '@@bcdice', b)) - }, $DiceBot_bcdice$eq$16.$$arity = 1); - - Opal.def(self, '$bcdice', $DiceBot_bcdice$17 = function $$bcdice() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a) - }, $DiceBot_bcdice$17.$$arity = 0); - - Opal.def(self, '$rand', $DiceBot_rand$18 = function $$rand(max) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rand(max) - }, $DiceBot_rand$18.$$arity = 1); - - Opal.def(self, '$roll', $DiceBot_roll$19 = function $$roll($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'roll', Opal.to_a(args)); - }, $DiceBot_roll$19.$$arity = -1); - - Opal.def(self, '$marshalSignOfInequality', $DiceBot_marshalSignOfInequality$20 = function $$marshalSignOfInequality($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'marshalSignOfInequality', Opal.to_a(args)); - }, $DiceBot_marshalSignOfInequality$20.$$arity = -1); - - Opal.def(self, '$unlimitedRollDiceType', $DiceBot_unlimitedRollDiceType$21 = function $$unlimitedRollDiceType() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$unlimitedRollDiceType() - }, $DiceBot_unlimitedRollDiceType$21.$$arity = 0); - self.$attr_reader("sortType"); - - Opal.def(self, '$setSortType', $DiceBot_setSortType$22 = function $$setSortType(s) { - var self = this; - - return (self.sortType = s) - }, $DiceBot_setSortType$22.$$arity = 1); - - Opal.def(self, '$d66', $DiceBot_d66$23 = function $$d66($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'getD66Value', Opal.to_a(args)); - }, $DiceBot_d66$23.$$arity = -1); - - Opal.def(self, '$parren_killer', $DiceBot_parren_killer$24 = function $$parren_killer(string) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$parren_killer(string) - }, $DiceBot_parren_killer$24.$$arity = 1); - - Opal.def(self, '$changeText', $DiceBot_changeText$25 = function $$changeText(string) { - var self = this; - - - self.$debug("DiceBot.parren_killer_add called"); - return string; - }, $DiceBot_changeText$25.$$arity = 1); - - Opal.def(self, '$dice_command', $DiceBot_dice_command$26 = function $$dice_command(string, nick_e) { - var $a, $b, self = this, secret_flg = nil, secretMarker = nil, command = nil, output_msg = nil; - - - if ($truthy(self.$isGetOriginalMessage())) { - string = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$getOriginalMessage()}; - self.$debug("dice_command Begin string", string); - secret_flg = false; - if ($truthy(self.$class().$prefixesPattern()['$=~'](string))) { - } else { - - self.$debug("not match in prefixes"); - return ["1", secret_flg]; - }; - secretMarker = $$($nesting, 'Regexp').$last_match(2); - command = $$($nesting, 'Regexp').$last_match(3); - command = self.$removeDiceCommandMessage(command); - self.$debug("dicebot after command", command); - self.$debug("match"); - $b = self.$rollDiceCommandCatched(command), $a = Opal.to_ary($b), (output_msg = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = output_msg['$nil?']()) ? $a : output_msg['$empty?']()))) { - output_msg = "1"}; - secret_flg = ($truthy($a = secret_flg) ? $a : false); - if ($truthy(output_msg['$!=']("1"))) { - output_msg = "" + (nick_e) + ": " + (output_msg)}; - if ($truthy(secretMarker)) { - if ($truthy(output_msg['$!=']("1"))) { - secret_flg = true}}; - return [output_msg, secret_flg]; - }, $DiceBot_dice_command$26.$$arity = 2); - - Opal.def(self, '$isGetOriginalMessage', $DiceBot_isGetOriginalMessage$27 = function $$isGetOriginalMessage() { - var self = this; - - return false - }, $DiceBot_isGetOriginalMessage$27.$$arity = 0); - - Opal.def(self, '$removeDiceCommandMessage', $DiceBot_removeDiceCommandMessage$28 = function $$removeDiceCommandMessage(command) { - var self = this; - - return command.$sub(/[\s ].+/, "") - }, $DiceBot_removeDiceCommandMessage$28.$$arity = 1); - - Opal.def(self, '$rollDiceCommandCatched', $DiceBot_rollDiceCommandCatched$29 = function $$rollDiceCommandCatched(command) { - var $a, $b, self = this, result = nil, secret_flg = nil, e = nil; - - - result = nil; - - try { - - self.$debug("call rollDiceCommand command", command); - $b = self.$rollDiceCommand(command), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - self.$debug("executeCommand exception", e.$to_s(), e.$backtrace().$join("\n")) - } finally { Opal.pop_exception() } - } else { throw $err; } - };; - self.$debug("rollDiceCommand result", result); - return [result, secret_flg]; - }, $DiceBot_rollDiceCommandCatched$29.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $DiceBot_rollDiceCommand$30 = function $$rollDiceCommand(_command) { - var self = this; - - return nil - }, $DiceBot_rollDiceCommand$30.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $DiceBot_dice_command_xRn$31 = function $$dice_command_xRn(_string, _nick_e) { - var self = this; - - return "" - }, $DiceBot_dice_command_xRn$31.$$arity = 2); - - Opal.def(self, '$check_result', $DiceBot_check_result$32 = function $$check_result(total, dice_total, dice_list, sides, cmp_op, target) { - var $a, self = this, ret = nil, $case = nil; - - - ret = (function() {$case = [dice_list.$size(), sides]; - if ([1, 100]['$===']($case)) {return self.$check_1D100(total, dice_total, cmp_op, target)} - else if ([1, 20]['$===']($case)) {return self.$check_1D20(total, dice_total, cmp_op, target)} - else if ([2, 6]['$===']($case)) {return self.$check_2D6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - ret = (function() {$case = sides; - if ((10)['$===']($case)) {return self.$check_nD10(total, dice_total, dice_list, cmp_op, target)} - else if ((6)['$===']($case)) {return self.$check_nD6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - return self.$check_nDx(total, cmp_op, target); - }, $DiceBot_check_result$32.$$arity = 6); - - Opal.def(self, '$check_nDx', $DiceBot_check_nDx$33 = function $$check_nDx(total, cmp_op, target) { - var self = this, success = nil; - - - if ($truthy(target['$is_a?']($$($nesting, 'String')))) { - return " > 失敗"}; - success = (function() {if (cmp_op['$==']("!=")) { - return total['$!='](target) - } else { - return total.$send(cmp_op, target) - }; return nil; })(); - if ($truthy(success)) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $DiceBot_check_nDx$33.$$arity = 3); - - Opal.def(self, '$check_1D100', $DiceBot_check_1D100$34 = function $$check_1D100(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D100$34.$$arity = 4); - - Opal.def(self, '$check_1D20', $DiceBot_check_1D20$35 = function $$check_1D20(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D20$35.$$arity = 4); - - Opal.def(self, '$check_nD10', $DiceBot_check_nD10$36 = function $$check_nD10(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD10$36.$$arity = 5); - - Opal.def(self, '$check_2D6', $DiceBot_check_2D6$37 = function $$check_2D6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_2D6$37.$$arity = 5); - - Opal.def(self, '$check_nD6', $DiceBot_check_nD6$38 = function $$check_nD6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD6$38.$$arity = 5); - - Opal.def(self, '$get_table_by_2d6', $DiceBot_get_table_by_2d6$39 = function $$get_table_by_2d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 2) - }, $DiceBot_get_table_by_2d6$39.$$arity = 1); - - Opal.def(self, '$get_table_by_1d6', $DiceBot_get_table_by_1d6$40 = function $$get_table_by_1d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 1) - }, $DiceBot_get_table_by_1d6$40.$$arity = 1); - - Opal.def(self, '$get_table_by_nD6', $DiceBot_get_table_by_nD6$41 = function $$get_table_by_nD6(table, count) { - var self = this; - - return self.$get_table_by_nDx(table, count, 6) - }, $DiceBot_get_table_by_nD6$41.$$arity = 2); - - Opal.def(self, '$get_table_by_nDx', $DiceBot_get_table_by_nDx$42 = function $$get_table_by_nDx(table, count, diceType) { - var $a, $b, self = this, num = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(num, count))); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_nDx$42.$$arity = 3); - - Opal.def(self, '$get_table_by_1d3', $DiceBot_get_table_by_1d3$43 = function $$get_table_by_1d3(table) { - var $a, $b, self = this, count = nil, num = nil, index = nil, text = nil; - - - self.$debug("get_table_by_1d3"); - count = 1; - $b = self.$roll(count, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - self.$debug("num", num); - index = $rb_divide($rb_minus(num, 1), 2); - self.$debug("index", index); - text = table['$[]'](index); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_1d3$43.$$arity = 1); - - Opal.def(self, '$getD66', $DiceBot_getD66$44 = function $$getD66(isSwap) { - var self = this; - - return self.$bcdice().$getD66(isSwap) - }, $DiceBot_getD66$44.$$arity = 1); - - Opal.def(self, '$get_table_by_d66_swap', $DiceBot_get_table_by_d66_swap$45 = function $$get_table_by_d66_swap(table) { - var self = this, isSwap = nil, number = nil; - - - isSwap = true; - number = self.$bcdice().$getD66(isSwap); - return [self.$get_table_by_number(number, table), number]; - }, $DiceBot_get_table_by_d66_swap$45.$$arity = 1); - - Opal.def(self, '$get_table_by_d66', $DiceBot_get_table_by_d66$46 = function $$get_table_by_d66(table) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, num = nil, text = nil, indexText = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - num = $rb_plus($rb_times($rb_minus(dice1, 1), 6), $rb_minus(dice2, 1)); - text = table['$[]'](num); - indexText = "" + (dice1) + (dice2); - if ($truthy(text['$nil?']())) { - return ["1", indexText]}; - return [text, indexText]; - }, $DiceBot_get_table_by_d66$46.$$arity = 1); - - Opal.def(self, '$getDiceRolledAdditionalText', $DiceBot_getDiceRolledAdditionalText$47 = function $$getDiceRolledAdditionalText(_n1, _n_max, _dice_max) { - var self = this; - - return "" - }, $DiceBot_getDiceRolledAdditionalText$47.$$arity = 3); - - Opal.def(self, '$getDiceRevision', $DiceBot_getDiceRevision$48 = function $$getDiceRevision(_n_max, _dice_max, _total_n) { - var self = this; - - return ["", 0] - }, $DiceBot_getDiceRevision$48.$$arity = 3); - - Opal.def(self, '$isD9', $DiceBot_isD9$49 = function $$isD9() { - var self = this; - - return false - }, $DiceBot_isD9$49.$$arity = 0); - - Opal.def(self, '$getGrichText', $DiceBot_getGrichText$50 = function $$getGrichText(_numberSpot1, _dice_cnt_total, _suc) { - var self = this; - - return "" - }, $DiceBot_getGrichText$50.$$arity = 3); - - Opal.def(self, '$should_reroll?', $DiceBot_should_reroll$ques$51 = function(loop_count) { - var $a, self = this; - - return ($truthy($a = $rb_lt(loop_count, self.rerollLimitCount)) ? $a : self.rerollLimitCount['$=='](0)) - }, $DiceBot_should_reroll$ques$51.$$arity = 1); - - Opal.def(self, '$get_table_by_number', $DiceBot_get_table_by_number$52 = function $$get_table_by_number(index, table, default$) {try { - - var $$53, self = this; - - - - if (default$ == null) { - default$ = "1"; - }; - $send(table, 'each', [], ($$53 = function(item){var self = $$53.$$s || this, number = nil; - - - - if (item == null) { - item = nil; - }; - number = item['$[]'](0); - if ($truthy($rb_ge(number, index))) { - Opal.ret(self.$getTableValue(item['$[]'](1))) - } else { - return nil - };}, $$53.$$s = self, $$53.$$arity = 1, $$53)); - return self.$getTableValue(default$); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_get_table_by_number$52.$$arity = -3); - - Opal.def(self, '$getTableValue', $DiceBot_getTableValue$54 = function $$getTableValue(data) {try { - - var $$55, self = this, lambdaBlock = nil; - - - if ($truthy(data['$kind_of?']($$($nesting, 'Proc')))) { - - lambdaBlock = $send(self, 'lambda', [], ($$55 = function(){var self = $$55.$$s || this; - - Opal.ret(data.$call())}, $$55.$$s = self, $$55.$$arity = 0, $$55)); - return lambdaBlock.$call();}; - return data; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_getTableValue$54.$$arity = 1); - - Opal.def(self, '$analyzeDiceCommandResultMethod', $DiceBot_analyzeDiceCommandResultMethod$56 = function $$analyzeDiceCommandResultMethod(command) {try { - - var $$57, $$58, self = this, methodList = nil; - - - methodList = $send(self.$public_methods(), 'select', [], ($$57 = function(method){var self = $$57.$$s || this; - - - - if (method == null) { - method = nil; - }; - return /^get.+DiceCommandResult$/['$==='](method.$to_s());}, $$57.$$s = self, $$57.$$arity = 1, $$57)); - $send(methodList, 'each', [], ($$58 = function(method){var self = $$58.$$s || this, result = nil; - - - - if (method == null) { - method = nil; - }; - result = self.$send(method, command); - if ($truthy(result['$nil?']())) { - return nil - } else { - Opal.ret(result) - };}, $$58.$$s = self, $$58.$$arity = 1, $$58)); - return nil; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_analyzeDiceCommandResultMethod$56.$$arity = 1); - - Opal.def(self, '$get_table_by_nDx_extratable', $DiceBot_get_table_by_nDx_extratable$59 = function $$get_table_by_nDx_extratable(table, count, diceType) { - var $a, $b, self = this, number = nil, diceText = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(number, count))); - return [text, number, diceText]; - }, $DiceBot_get_table_by_nDx_extratable$59.$$arity = 3); - - Opal.def(self, '$getTableCommandResult', $DiceBot_getTableCommandResult$60 = function $$getTableCommandResult(command, tables, isPrintDiceText) { - var $a, $b, $c, $d, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, count = nil, diceType = nil, limit = nil, item = nil, value = nil, output = nil, diceText = nil, text = nil, number = nil; - - - - if (isPrintDiceText == null) { - isPrintDiceText = true; - }; - info = tables['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type").$upcase(); - table = info['$[]']("table"); - if ($truthy(($truthy($a = type['$==']("D66")) ? self.d66Type['$=='](2) : $a))) { - type = "D66S"}; - $b = (function() {$case = type; - if (/(\d+)D(\d+)/['$===']($case)) { - count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diceType = $$($nesting, 'Regexp').$last_match(2).$to_i(); - limit = $rb_minus($rb_times(diceType, count), $rb_minus(count, 1)); - table = self.$getTableInfoFromExtraTableText(table, limit); - return self.$get_table_by_nDx_extratable(table, count, diceType);} - else if ("D66"['$===']($case) || "D66N"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 36); - $d = self.$get_table_by_d66(table), $c = Opal.to_ary($d), (item = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - output = item['$[]'](1); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else if ("D66S"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 21); - $d = self.$get_table_by_d66_swap(table), $c = Opal.to_ary($d), (output = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else {return self.$raise("" + "invalid dice Type " + (command))}})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), (diceText = ($a[2] == null ? nil : $a[2])), $b; - text = text.$gsub("\\n", "\n"); - text = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rollTableMessageDiceText(text); - if ($truthy(text['$nil?']())) { - return nil}; - if ($truthy(($truthy($a = isPrintDiceText) ? diceText['$nil?']()['$!']() : $a))) { - return "" + (name) + "(" + (number) + "[" + (diceText) + "]) > " + (text)}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $DiceBot_getTableCommandResult$60.$$arity = -3); - - Opal.def(self, '$getTableInfoFromExtraTableText', $DiceBot_getTableInfoFromExtraTableText$61 = function $$getTableInfoFromExtraTableText(text, count) { - var $$62, self = this, newTable = nil; - - - - if (count == null) { - count = nil; - }; - if ($truthy(text['$is_a?']($$($nesting, 'String')))) { - text = text.$split(/\n/)}; - newTable = $send(text, 'map', [], ($$62 = function(item){var self = $$62.$$s || this, $a; - - - - if (item == null) { - item = nil; - }; - if ($truthy(($truthy($a = item['$is_a?']($$($nesting, 'String'))) ? /^(\d+):(.*)/['$==='](item) : $a))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2)] - } else { - return item - };}, $$62.$$s = self, $$62.$$arity = 1, $$62)); - if ($truthy(count['$nil?']())) { - } else if ($truthy(newTable.$size()['$!='](count))) { - self.$raise("" + "invalid table size:" + (newTable.$size()) + "\n" + (newTable.$inspect()))}; - return newTable; - }, $DiceBot_getTableInfoFromExtraTableText$61.$$arity = -2); - return (Opal.def(self, '$roll_tables', $DiceBot_roll_tables$63 = function $$roll_tables(command, tables) { - var self = this, table = nil; - - - table = tables['$[]'](command.$upcase()); - if ($truthy(table)) { - } else { - return nil - }; - return table.$roll(self.$bcdice()).$to_s(); - }, $DiceBot_roll_tables$63.$$arity = 2), nil) && 'roll_tables'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$setPrefixes', '$include', '$new', '$[]', '$roll', '$>=', '$count', '$floor', '$/', '$+', '$length', '$sort', '$calculate_roll_result', '$-', '$!', '$send', '$class', '$expression', '$test_value_expression', '$result_str', '$join', '$private', '$format_modifier', '$last', '$sum_of_highest_set_of_multiples', '$sum_of_largest_straight', '$max', '$map', '$group_by', '$reduce', '$to_proc', '$<', '$each', '$uniq', '$>', '$ceil', '$parse', '$execute', '$freeze', '$match', '$to_i', '$eval', '$==']); - - self.$require("diceBot/DiceBot"); - self.$require("utils/modifier_formatter"); - self.$require("utils/ArithmeticEvaluator"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'CthulhuTech'); - - var $nesting = [self].concat($parent_nesting), $CthulhuTech_initialize$14, $CthulhuTech_rollDiceCommand$15, $CthulhuTech_parse$16; - - - self.$setPrefixes(["\\d+D10.*"]); - Opal.const_set($nesting[0], 'ID', "CthulhuTech"); - Opal.const_set($nesting[0], 'NAME', "クトゥルフテック"); - Opal.const_set($nesting[0], 'SORT_KEY', "くとうるふてつく"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・行為判定(test):nD10+m>=d\n" + " n個のダイスを使用して、修正値m、難易度dで行為判定(test)を行います。\n" + " 修正値mは省略可能、複数指定可能(例:+2-4)です。\n" + " 成功、失敗、クリティカル、ファンブルを自動判定します。\n" + " 例)2D10>=12 4D10+2>=28 5D10+2-4>=32\n" + "\n" + "・対抗判定(contest):nD10+m>d\n" + " 行為判定と同様ですが、防御側有利のため「>=」ではなく「>」を入力します。\n" + " ダメージダイスも表示します。\n"); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Test'); - - var $nesting = [self].concat($parent_nesting), $Test_initialize$1, $Test_execute$2, $Test_expression$4, $Test_test_value_expression$5, $Test_result_str$6, $Test_calculate_roll_result$7, $Test_sum_of_highest_set_of_multiples$8, $Test_sum_of_largest_straight$11; - - self.$$prototype.num = self.$$prototype.modifier = self.$$prototype.difficulty = nil; - - self.$include($$($nesting, 'ModifierFormatter')); - Opal.const_set($nesting[0], 'COMPARE_OP', ">="); - - Opal.def(self, '$initialize', $Test_initialize$1 = function $$initialize(num, modifier, difficulty) { - var self = this; - - - self.num = num; - self.modifier = modifier; - return (self.difficulty = difficulty); - }, $Test_initialize$1.$$arity = 3); - - Opal.def(self, '$execute', $Test_execute$2 = function $$execute(bot) { - var $$3, $a, self = this, dice_values = nil, fumble = nil, sorted_dice_values = nil, roll_result = nil, test_value = nil, diff = nil, success = nil, critical = nil, output_parts = nil; - - - dice_values = $send($$($nesting, 'Array'), 'new', [self.num], ($$3 = function(){var self = $$3.$$s || this; - - return bot.$roll(1, 10)['$[]'](0)}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - fumble = $rb_ge(dice_values.$count(1), $rb_divide($rb_plus(dice_values.$length(), 1), 2).$floor()); - sorted_dice_values = dice_values.$sort(); - roll_result = self.$calculate_roll_result(sorted_dice_values); - test_value = $rb_plus(roll_result, self.modifier); - diff = $rb_minus(test_value, self.difficulty); - success = ($truthy($a = fumble['$!']()) ? diff.$send($$$(self.$class(), 'COMPARE_OP'), 0) : $a); - critical = $rb_ge(diff, 10); - output_parts = ["" + "(" + (self.$expression()) + ")", self.$test_value_expression(sorted_dice_values, roll_result), test_value, self.$result_str(success, fumble, critical, diff)]; - return output_parts.$join(" > "); - }, $Test_execute$2.$$arity = 1); - self.$private(); - - Opal.def(self, '$expression', $Test_expression$4 = function $$expression() { - var self = this, modifier_str = nil; - - - modifier_str = self.$format_modifier(self.modifier); - return "" + (self.num) + "D10" + (modifier_str) + ($$$(self.$class(), 'COMPARE_OP')) + (self.difficulty); - }, $Test_expression$4.$$arity = 0); - - Opal.def(self, '$test_value_expression', $Test_test_value_expression$5 = function $$test_value_expression(dice_values, roll_result) { - var self = this, dice_str = nil, modifier_str = nil; - - - dice_str = dice_values.$join(","); - modifier_str = self.$format_modifier(self.modifier); - return "" + (roll_result) + "[" + (dice_str) + "]" + (modifier_str); - }, $Test_test_value_expression$5.$$arity = 2); - - Opal.def(self, '$result_str', $Test_result_str$6 = function $$result_str(success, fumble, critical, _diff) { - var self = this; - - - if ($truthy(fumble)) { - return "ファンブル"}; - if ($truthy(critical)) { - return "クリティカル"}; - return (function() {if ($truthy(success)) { - return "成功" - } else { - return "失敗" - }; return nil; })(); - }, $Test_result_str$6.$$arity = 4); - - Opal.def(self, '$calculate_roll_result', $Test_calculate_roll_result$7 = function $$calculate_roll_result(sorted_dice_values) { - var self = this, highest_single_roll = nil, candidates = nil; - - - highest_single_roll = sorted_dice_values.$last(); - candidates = [highest_single_roll, self.$sum_of_highest_set_of_multiples(sorted_dice_values), self.$sum_of_largest_straight(sorted_dice_values)]; - return candidates.$max(); - }, $Test_calculate_roll_result$7.$$arity = 1); - - Opal.def(self, '$sum_of_highest_set_of_multiples', $Test_sum_of_highest_set_of_multiples$8 = function $$sum_of_highest_set_of_multiples(dice_values) { - var $$9, $$10, self = this; - - return $send($send(dice_values, 'group_by', [], ($$9 = function(i){var self = $$9.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i;}, $$9.$$s = self, $$9.$$arity = 1, $$9)), 'map', [], ($$10 = function(_, value_group){var self = $$10.$$s || this; - - - - if (_ == null) { - _ = nil; - }; - - if (value_group == null) { - value_group = nil; - }; - return $send(value_group, 'reduce', [0], "+".$to_proc());}, $$10.$$s = self, $$10.$$arity = 2, $$10)).$max() - }, $Test_sum_of_highest_set_of_multiples$8.$$arity = 1); - return (Opal.def(self, '$sum_of_largest_straight', $Test_sum_of_largest_straight$11 = function $$sum_of_largest_straight(sorted_dice_values) { - var $$12, self = this, max_sum = nil, n_consecutive_values = nil, sum = nil, last = nil; - - - if ($truthy($rb_lt(sorted_dice_values.$length(), 3))) { - return 0}; - max_sum = 0; - n_consecutive_values = 0; - sum = 0; - last = -1; - $send(sorted_dice_values.$uniq(), 'each', [], ($$12 = function(value){var self = $$12.$$s || this, $a; - - - - if (value == null) { - value = nil; - }; - if ($truthy($rb_gt($rb_minus(value, last), 1))) { - - n_consecutive_values = 1; - sum = value; - last = value; - return nil;;}; - n_consecutive_values = $rb_plus(n_consecutive_values, 1); - sum = $rb_plus(sum, value); - last = value; - if ($truthy(($truthy($a = $rb_ge(n_consecutive_values, 3)) ? $rb_gt(sum, max_sum) : $a))) { - return (max_sum = sum) - } else { - return nil - };}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - return max_sum; - }, $Test_sum_of_largest_straight$11.$$arity = 1), nil) && 'sum_of_largest_straight'; - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Contest'); - - var $nesting = [self].concat($parent_nesting), $Contest_result_str$13; - - - Opal.const_set($nesting[0], 'COMPARE_OP', ">"); - return (Opal.def(self, '$result_str', $Contest_result_str$13 = function $$result_str(success, _fumble, _critical, diff) { - var $iter = $Contest_result_str$13.$$p, $yield = $iter || nil, self = this, formatted = nil, damage_roll_num = nil, damage_roll = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Contest_result_str$13.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - formatted = $send(self, Opal.find_super_dispatcher(self, 'result_str', $Contest_result_str$13, false), $zuper, $iter); - if ($truthy(success)) { - - damage_roll_num = $rb_divide(diff, 5.0).$ceil(); - damage_roll = "" + (damage_roll_num) + "D10"; - return "" + (formatted) + "(ダメージ:" + (damage_roll) + ")"; - } else { - return formatted - }; - }, $Contest_result_str$13.$$arity = 4), nil) && 'result_str'; - })($nesting[0], $$($nesting, 'Test'), $nesting); - - Opal.def(self, '$initialize', $CthulhuTech_initialize$14 = function $$initialize() { - var $iter = $CthulhuTech_initialize$14.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $CthulhuTech_initialize$14.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $CthulhuTech_initialize$14, false), $zuper, $iter); - return (self.sortType = 1); - }, $CthulhuTech_initialize$14.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $CthulhuTech_rollDiceCommand$15 = function $$rollDiceCommand(command) { - var self = this, node = nil; - - - node = self.$parse(command); - if ($truthy(node)) { - } else { - return nil - }; - return node.$execute(self); - }, $CthulhuTech_rollDiceCommand$15.$$arity = 1); - self.$private(); - Opal.const_set($nesting[0], 'TEST_RE', /^(\d+)D10((?:[-+]\d+)+)?(>=?)(\d+)$/.$freeze()); - return (Opal.def(self, '$parse', $CthulhuTech_parse$16 = function $$parse(command) { - var self = this, m = nil, num = nil, modifier = nil, node_class = nil, difficulty = nil; - - - m = $$($nesting, 'TEST_RE').$match(command); - if ($truthy(m)) { - } else { - return nil - }; - num = m['$[]'](1).$to_i(); - modifier = (function() {if ($truthy(m['$[]'](2))) { - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(m['$[]'](2)) - } else { - return 0 - }; return nil; })(); - node_class = (function() {if (m['$[]'](3)['$=='](">")) { - return $$($nesting, 'Contest') - } else { - return $$($nesting, 'Test') - }; return nil; })(); - difficulty = m['$[]'](4).$to_i(); - return node_class.$new(num, modifier, difficulty); - }, $CthulhuTech_parse$16.$$arity = 1), nil) && 'parse'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Cthulhu_ChineseTraditional.js b/src/assets/dicebot/Cthulhu_ChineseTraditional.js deleted file mode 100644 index 586184604..000000000 --- a/src/assets/dicebot/Cthulhu_ChineseTraditional.js +++ /dev/null @@ -1,216 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$===', '$getCheckResult', '$getRegistResult', '$getCombineRoll', '$match', '$to_i', '$[]', '$>', '$+', '$roll', '$getCheckResultText', '$floor', '$/', '$*', '$<', '$<=', '$>=', '$-', '$include?', '$debug', '$==']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Cthulhu_ChineseTraditional'); - - var $nesting = [self].concat($parent_nesting), $Cthulhu_ChineseTraditional_initialize$1, $Cthulhu_ChineseTraditional_rollDiceCommand$2, $Cthulhu_ChineseTraditional_getCheckResult$3, $Cthulhu_ChineseTraditional_getCheckResultText$4, $Cthulhu_ChineseTraditional_getRegistResult$5, $Cthulhu_ChineseTraditional_getCombineRoll$6; - - self.$$prototype.special_percentage = self.$$prototype.critical_percentage = self.$$prototype.fumble_percentage = nil; - - Opal.const_set($nesting[0], 'ID', "Cthulhu:ChineseTraditional"); - Opal.const_set($nesting[0], 'NAME', "克蘇魯神話"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Chinese Traditional:克蘇魯神話7"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "c=爆擊率 / f=大失敗值 / s=特殊\n" + "\n" + "1d100<=n c・f・s全關閉(只進行單純數值比較判定)\n" + "\n" + "・cfs付註判定指令\n" + "\n" + "CC\t 1d100擲骰 c=1、f=100\n" + "CCB 同上、c=5、f=96\n" + "\n" + "例:CC<=80 (以技能值80來判定。cf適用於1%規則)\n" + "例:CCB<=55 (以技能值55來判定。cf適用於5%規則)\n" + "\n" + "・關於組合骰組\n" + "\n" + "CBR(x,y)\tc=1、f=100\n" + "CBRB(x,y)\tc=5、f=96\n" + "\n" + "・關於對抗骰\n" + "RES(x-y)\tc=1、f=100\n" + "RESB(x-y)\tc=5、f=96\n" + "\n" + "※故障率判定\n" + "\n" + "・CC(x) c=1、f=100\n" + "x=故障率。擲出骰值x以上時、需在大失敗發生同時輸出(參照「大失敗&故障」)\n" + "沒有大失敗時,無論成功或失敗只需參考[故障]來輸出(並非成功或失敗來輸出,而是覆蓋上去並對其輸出)\n" + "\n" + "・CCB(x) c=5、f=96\n" + "同上\n" + "\n" + "・瘋狂表\n" + "・短期瘋期 Short/長期瘋狂 Longer\n" + "\n"); - self.$setPrefixes(["CC(B)?\\(\\d+\\)", "CC(B)?.*", "RES(B)?.*", "CBR(B)?\\(\\d+,\\d+\\)"]); - - Opal.def(self, '$initialize', $Cthulhu_ChineseTraditional_initialize$1 = function $$initialize() { - var $iter = $Cthulhu_ChineseTraditional_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Cthulhu_ChineseTraditional_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Cthulhu_ChineseTraditional_initialize$1, false), $zuper, $iter); - self.special_percentage = 20; - self.critical_percentage = 1; - return (self.fumble_percentage = 1); - }, $Cthulhu_ChineseTraditional_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Cthulhu_ChineseTraditional_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - - $case = command; - if (/CCB/i['$===']($case)) { - self.critical_percentage = 5; - self.fumble_percentage = 5; - return self.$getCheckResult(command);} - else if (/CC/i['$===']($case)) { - self.critical_percentage = 1; - self.fumble_percentage = 1; - return self.$getCheckResult(command);} - else if (/RESB/i['$===']($case)) { - self.critical_percentage = 5; - self.fumble_percentage = 5; - return self.$getRegistResult(command);} - else if (/CBRB/i['$===']($case)) { - self.critical_percentage = 5; - self.fumble_percentage = 5; - return self.$getCombineRoll(command);} - else if (/RES/i['$===']($case)) { - self.critical_percentage = 1; - self.fumble_percentage = 1; - return self.$getRegistResult(command);} - else if (/CBR/i['$===']($case)) { - self.critical_percentage = 1; - self.fumble_percentage = 1; - return self.$getCombineRoll(command);}; - return nil; - }, $Cthulhu_ChineseTraditional_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getCheckResult', $Cthulhu_ChineseTraditional_getCheckResult$3 = function $$getCheckResult(command) { - var $a, $b, self = this, broken_num = nil, diff = nil, m = nil, output = nil, total_n = nil; - - - broken_num = 0; - diff = 0; - if ($truthy((m = /CC(B)?(\d+)<=(\d+)/i.$match(command)))) { - - broken_num = m['$[]'](2).$to_i(); - diff = m['$[]'](3).$to_i(); - } else if ($truthy((m = /CC(B)?<=(\d+)/i.$match(command)))) { - diff = m['$[]'](2).$to_i()}; - output = ""; - if ($truthy($rb_gt(diff, 0))) { - - output = "" + "(1D100<=" + (diff) + ")"; - if ($truthy($rb_gt(broken_num, 0))) { - output = $rb_plus(output, "" + " 故障率[" + (broken_num) + "]")}; - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = $rb_plus(output, "" + " > " + (total_n)); - output = $rb_plus(output, "" + " > " + (self.$getCheckResultText(total_n, diff, broken_num))); - } else { - - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = "" + "(1D100) > " + (total_n); - }; - return output; - }, $Cthulhu_ChineseTraditional_getCheckResult$3.$$arity = 1); - - Opal.def(self, '$getCheckResultText', $Cthulhu_ChineseTraditional_getCheckResultText$4 = function $$getCheckResultText(total_n, diff, broken_num) { - var $a, self = this, result = nil, diff_special = nil, fumble = nil; - - - - if (broken_num == null) { - broken_num = 0; - }; - result = ""; - diff_special = 0; - fumble = false; - if ($truthy($rb_gt(self.special_percentage, 0))) { - - diff_special = $rb_divide($rb_times(diff, self.special_percentage), 100).$floor(); - if ($truthy($rb_lt(diff_special, 1))) { - diff_special = 1};}; - if ($truthy(($truthy($a = $rb_le(total_n, diff)) ? $rb_lt(total_n, 100) : $a))) { - - result = "成功"; - if ($truthy($rb_gt(diff_special, 0))) { - if ($truthy($rb_le(total_n, self.critical_percentage))) { - if ($truthy($rb_le(total_n, diff_special))) { - result = "決定性的成功/特殊" - } else { - result = "決定性的成功" - } - } else if ($truthy($rb_le(total_n, diff_special))) { - result = "特殊"}}; - } else { - - result = "失敗"; - if ($truthy($rb_gt(diff_special, 0))) { - if ($truthy(($truthy($a = $rb_ge(total_n, $rb_minus(101, self.fumble_percentage))) ? $rb_lt(diff, 100) : $a))) { - - result = "致命性失敗"; - fumble = true;}}; - }; - if ($truthy($rb_gt(broken_num, 0))) { - if ($truthy($rb_ge(total_n, broken_num))) { - if ($truthy(fumble)) { - result = $rb_plus(result, "/故障") - } else { - result = "故障" - }}}; - return result; - }, $Cthulhu_ChineseTraditional_getCheckResultText$4.$$arity = -3); - - Opal.def(self, '$getRegistResult', $Cthulhu_ChineseTraditional_getRegistResult$5 = function $$getRegistResult(command) { - var $a, $b, self = this, m = nil, value = nil, target = nil, total_n = nil, result = nil; - - - m = /RES(B)?([-\d]+)/i.$match(command); - if ($truthy(m)) { - } else { - return "1" - }; - value = m['$[]'](2).$to_i(); - target = $rb_plus($rb_times(value, 5), 50); - if ($truthy($rb_lt(target, 5))) { - return "" + "(1d100<=" + (target) + ") > 自動失敗"}; - if ($truthy($rb_gt(target, 95))) { - return "" + "(1d100<=" + (target) + ") > 自動成功"}; - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - result = self.$getCheckResultText(total_n, target); - return "" + "(1d100<=" + (target) + ") > " + (total_n) + " > " + (result); - }, $Cthulhu_ChineseTraditional_getRegistResult$5.$$arity = 1); - return (Opal.def(self, '$getCombineRoll', $Cthulhu_ChineseTraditional_getCombineRoll$6 = function $$getCombineRoll(command) { - var $a, $b, self = this, m = nil, diff_1 = nil, diff_2 = nil, total = nil, result_1 = nil, result_2 = nil, successList = nil, succesCount = nil, rank = nil; - - - m = /CBR(B)?\((\d+),(\d+)\)/i.$match(command); - if ($truthy(m)) { - } else { - return "1" - }; - diff_1 = m['$[]'](2).$to_i(); - diff_2 = m['$[]'](3).$to_i(); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), $b; - result_1 = self.$getCheckResultText(total, diff_1); - result_2 = self.$getCheckResultText(total, diff_2); - successList = ["決定性成功/特殊", "決定性成功", "特殊", "成功"]; - succesCount = 0; - if ($truthy(successList['$include?'](result_1))) { - succesCount = $rb_plus(succesCount, 1)}; - if ($truthy(successList['$include?'](result_2))) { - succesCount = $rb_plus(succesCount, 1)}; - self.$debug("succesCount", succesCount); - rank = (function() {if ($truthy($rb_ge(succesCount, 2))) { - return "成功" - } else if (succesCount['$=='](1)) { - return "部分性成功" - } else { - return "失敗" - }; return nil; })(); - return "" + "(1d100<=" + (diff_1) + "," + (diff_2) + ") > " + (total) + "[" + (result_1) + "," + (result_2) + "] > " + (rank); - }, $Cthulhu_ChineseTraditional_getCombineRoll$6.$$arity = 1), nil) && 'getCombineRoll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Cthulhu_Korean.js b/src/assets/dicebot/Cthulhu_Korean.js deleted file mode 100644 index 7ce0e9552..000000000 --- a/src/assets/dicebot/Cthulhu_Korean.js +++ /dev/null @@ -1,216 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$===', '$getCheckResult', '$getRegistResult', '$getCombineRoll', '$match', '$to_i', '$[]', '$>', '$+', '$roll', '$getCheckResultText', '$floor', '$/', '$*', '$<', '$<=', '$>=', '$-', '$include?', '$debug', '$==']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Cthulhu_Korean'); - - var $nesting = [self].concat($parent_nesting), $Cthulhu_Korean_initialize$1, $Cthulhu_Korean_rollDiceCommand$2, $Cthulhu_Korean_getCheckResult$3, $Cthulhu_Korean_getCheckResultText$4, $Cthulhu_Korean_getRegistResult$5, $Cthulhu_Korean_getCombineRoll$6; - - self.$$prototype.special_percentage = self.$$prototype.critical_percentage = self.$$prototype.fumble_percentage = nil; - - Opal.const_set($nesting[0], 'ID', "Cthulhu:Korean"); - Opal.const_set($nesting[0], 'NAME', "크툴루"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:크툴루의부름7"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "c=크리티컬치 / f=펌블치 / s=스페셜\n" + "\n" + "1d100<=n c・f・s 모두 오프(단순하게 수치만을 뽑아낼 때 사용)\n" + "\n" + "・cfs이 붙는 판정의 커맨드\n" + "\n" + "CC\t 1d100 판정을 행함 c=1、f=100\n" + "CCB 위와 동일、c=5、f=96\n" + "\n" + "예:CC<=80 (기능치 80로 행휘판정. 1%룰으로 cf적용)\n" + "예:CCB<=55 (기능치 55로 행휘판정. 5%룰으로 cf적용)\n" + "\n" + "・경우의 수 판정에 대해서\n" + "\n" + "CBR(x,y)\tc=1、f=100\n" + "CBRB(x,y)\tc=5、f=96\n" + "\n" + "・저항 판정에 대해서\n" + "RES(x-y)\tc=1、f=100\n" + "RESB(x-y)\tc=5、f=96\n" + "\n" + "※고장 넘버 판정\n" + "\n" + "・CC(x) c=1、f=100\n" + "x=고장 넘버. 주사위 눈x이상이 나온 후에, 펌블이 동시에 발생했을 경우. 모두 출력한다. (텍스트 「펌블&고장」)\n" + "펌블이 아닌 경우, 성공・실패에 관련되지 않고 「고장」만을 출력한다. (성공・실패를 출력하지 않고 덧쓰기한 것을 출력하는 형태)\n" + "\n" + "・CCB(x) c=5、f=96\n" + "위와 동일\n"); - self.$setPrefixes(["CC(B)?\\(\\d+\\)", "CC(B)?.*", "RES(B)?.*", "CBR(B)?\\(\\d+,\\d+\\)"]); - - Opal.def(self, '$initialize', $Cthulhu_Korean_initialize$1 = function $$initialize() { - var $iter = $Cthulhu_Korean_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Cthulhu_Korean_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Cthulhu_Korean_initialize$1, false), $zuper, $iter); - self.special_percentage = 20; - self.critical_percentage = 1; - return (self.fumble_percentage = 1); - }, $Cthulhu_Korean_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Cthulhu_Korean_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - - $case = command; - if (/CCB/i['$===']($case)) { - self.critical_percentage = 5; - self.fumble_percentage = 5; - return self.$getCheckResult(command);} - else if (/CC/i['$===']($case)) { - self.critical_percentage = 1; - self.fumble_percentage = 1; - return self.$getCheckResult(command);} - else if (/RESB/i['$===']($case)) { - self.critical_percentage = 5; - self.fumble_percentage = 5; - return self.$getRegistResult(command);} - else if (/CBRB/i['$===']($case)) { - self.critical_percentage = 5; - self.fumble_percentage = 5; - return self.$getCombineRoll(command);} - else if (/RES/i['$===']($case)) { - self.critical_percentage = 1; - self.fumble_percentage = 1; - return self.$getRegistResult(command);} - else if (/CBR/i['$===']($case)) { - self.critical_percentage = 1; - self.fumble_percentage = 1; - return self.$getCombineRoll(command);}; - return nil; - }, $Cthulhu_Korean_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getCheckResult', $Cthulhu_Korean_getCheckResult$3 = function $$getCheckResult(command) { - var $a, $b, self = this, broken_num = nil, diff = nil, m = nil, output = nil, total_n = nil; - - - broken_num = 0; - diff = 0; - if ($truthy((m = /CC(B)?(\d+)<=(\d+)/i.$match(command)))) { - - broken_num = m['$[]'](2).$to_i(); - diff = m['$[]'](3).$to_i(); - } else if ($truthy((m = /CC(B)?<=(\d+)/i.$match(command)))) { - diff = m['$[]'](2).$to_i()}; - output = ""; - if ($truthy($rb_gt(diff, 0))) { - - output = "" + "(1D100<=" + (diff) + ")"; - if ($truthy($rb_gt(broken_num, 0))) { - output = $rb_plus(output, "" + " 고장넘버[" + (broken_num) + "]")}; - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = $rb_plus(output, "" + " > " + (total_n)); - output = $rb_plus(output, "" + " > " + (self.$getCheckResultText(total_n, diff, broken_num))); - } else { - - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = "" + "(1D100) > " + (total_n); - }; - return output; - }, $Cthulhu_Korean_getCheckResult$3.$$arity = 1); - - Opal.def(self, '$getCheckResultText', $Cthulhu_Korean_getCheckResultText$4 = function $$getCheckResultText(total_n, diff, broken_num) { - var $a, self = this, result = nil, diff_special = nil, fumble = nil; - - - - if (broken_num == null) { - broken_num = 0; - }; - result = ""; - diff_special = 0; - fumble = false; - if ($truthy($rb_gt(self.special_percentage, 0))) { - - diff_special = $rb_divide($rb_times(diff, self.special_percentage), 100).$floor(); - if ($truthy($rb_lt(diff_special, 1))) { - diff_special = 1};}; - if ($truthy(($truthy($a = $rb_le(total_n, diff)) ? $rb_lt(total_n, 100) : $a))) { - - result = "성공"; - if ($truthy($rb_gt(diff_special, 0))) { - if ($truthy($rb_le(total_n, self.critical_percentage))) { - if ($truthy($rb_le(total_n, diff_special))) { - result = "크리티컬/스페셜" - } else { - result = "크리티컬" - } - } else if ($truthy($rb_le(total_n, diff_special))) { - result = "스페셜"}}; - } else { - - result = "실패"; - if ($truthy($rb_gt(diff_special, 0))) { - if ($truthy(($truthy($a = $rb_ge(total_n, $rb_minus(101, self.fumble_percentage))) ? $rb_lt(diff, 100) : $a))) { - - result = "펌블"; - fumble = true;}}; - }; - if ($truthy($rb_gt(broken_num, 0))) { - if ($truthy($rb_ge(total_n, broken_num))) { - if ($truthy(fumble)) { - result = $rb_plus(result, "/고장") - } else { - result = "고장" - }}}; - return result; - }, $Cthulhu_Korean_getCheckResultText$4.$$arity = -3); - - Opal.def(self, '$getRegistResult', $Cthulhu_Korean_getRegistResult$5 = function $$getRegistResult(command) { - var $a, $b, self = this, m = nil, value = nil, target = nil, total_n = nil, result = nil; - - - m = /RES(B)?([-\d]+)/i.$match(command); - if ($truthy(m)) { - } else { - return "1" - }; - value = m['$[]'](2).$to_i(); - target = $rb_plus($rb_times(value, 5), 50); - if ($truthy($rb_lt(target, 5))) { - return "" + "(1d100<=" + (target) + ") > 자동실패"}; - if ($truthy($rb_gt(target, 95))) { - return "" + "(1d100<=" + (target) + ") > 자동성공"}; - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - result = self.$getCheckResultText(total_n, target); - return "" + "(1d100<=" + (target) + ") > " + (total_n) + " > " + (result); - }, $Cthulhu_Korean_getRegistResult$5.$$arity = 1); - return (Opal.def(self, '$getCombineRoll', $Cthulhu_Korean_getCombineRoll$6 = function $$getCombineRoll(command) { - var $a, $b, self = this, m = nil, diff_1 = nil, diff_2 = nil, total = nil, result_1 = nil, result_2 = nil, successList = nil, succesCount = nil, rank = nil; - - - m = /CBR(B)?\((\d+),(\d+)\)/i.$match(command); - if ($truthy(m)) { - } else { - return "1" - }; - diff_1 = m['$[]'](2).$to_i(); - diff_2 = m['$[]'](3).$to_i(); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), $b; - result_1 = self.$getCheckResultText(total, diff_1); - result_2 = self.$getCheckResultText(total, diff_2); - successList = ["크리티컬/스페셜", "크리티컬", "스페셜", "성공"]; - succesCount = 0; - if ($truthy(successList['$include?'](result_1))) { - succesCount = $rb_plus(succesCount, 1)}; - if ($truthy(successList['$include?'](result_2))) { - succesCount = $rb_plus(succesCount, 1)}; - self.$debug("succesCount", succesCount); - rank = (function() {if ($truthy($rb_ge(succesCount, 2))) { - return "성공" - } else if (succesCount['$=='](1)) { - return "부분적 성공" - } else { - return "실패" - }; return nil; })(); - return "" + "(1d100<=" + (diff_1) + "," + (diff_2) + ") > " + (total) + "[" + (result_1) + "," + (result_2) + "] > " + (rank); - }, $Cthulhu_Korean_getCombineRoll$6.$$arity = 1), nil) && 'getCombineRoll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/DarkBlaze.js b/src/assets/dicebot/DarkBlaze.js deleted file mode 100644 index 5d6b675aa..000000000 --- a/src/assets/dicebot/DarkBlaze.js +++ /dev/null @@ -1,239 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$=~', '$gsub', '$last_match', '$check_roll', '$!=', '$==', '$>=', '$match', '$[]', '$to_i', '$parren_killer', '$marshalSignOfInequality', '$get_dice', '$inject', '$to_proc', '$comparison_operator', '$+', '$check_result', '$abs', '$roll', '$shift', '$collect', '$split', '$times', '$<', '$-', '$<=', '$===', '$get_horidasibukuro_table', '$debug', '$/']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DarkBlaze'); - - var $nesting = [self].concat($parent_nesting), $DarkBlaze_initialize$1, $DarkBlaze_changeText$2, $DarkBlaze_dice_command_xRn$8, $DarkBlaze_check_nD6$9, $DarkBlaze_check_roll$10, $DarkBlaze_get_dice$11, $DarkBlaze_rollDiceCommand$14, $DarkBlaze_get_horidasibukuro_table$15; - - - Opal.const_set($nesting[0], 'ID', "DarkBlaze"); - Opal.const_set($nesting[0], 'NAME', "ダークブレイズ"); - Opal.const_set($nesting[0], 'SORT_KEY', "たあくふれいす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・行為判定 (DBxy#n)\n" + " 行為判定専用のコマンドです。\n" + " \"DB(能力)(技能)#(修正)\"でロールします。Rコマンド(3R6+n[x,y]>=m mは難易度)に読替をします。\n" + " クリティカルとファンブルも自動で処理されます。\n" + " DB@x@y#m と DBx,y#m にも対応しました。\n" + " 例)DB33   DB32#-1   DB@3@1#1   DB3,2   DB23#1>=4   3R6+1[3,3]>=4\n" + "\n" + "・掘り出し袋表 (BTx)\n" + " \"BT(ダイス数)\"で掘り出し袋表を自動で振り、結果を表示します。\n" + " 例)BT1   BT2   BT[1...3]\n"); - self.$setPrefixes(["DB.*", "BT.*"]); - - Opal.def(self, '$initialize', $DarkBlaze_initialize$1 = function $$initialize() { - var $iter = $DarkBlaze_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $DarkBlaze_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $DarkBlaze_initialize$1, false), $zuper, $iter); - return (self.sendMode = 2); - }, $DarkBlaze_initialize$1.$$arity = 0); - - Opal.def(self, '$changeText', $DarkBlaze_changeText$2 = function $$changeText(string) { - var $$3, $$4, $$5, $$6, $$7, self = this; - - - if ($truthy(string['$=~'](/DB/i))) { - } else { - return string - }; - string = $send(string, 'gsub', [/DB(\d),(\d)/], ($$3 = function(){var self = $$3.$$s || this; - - return "" + "DB" + ($$($nesting, 'Regexp').$last_match(1)) + ($$($nesting, 'Regexp').$last_match(2))}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - string = $send(string, 'gsub', [/DB\@(\d)\@(\d)/], ($$4 = function(){var self = $$4.$$s || this; - - return "" + "DB" + ($$($nesting, 'Regexp').$last_match(1)) + ($$($nesting, 'Regexp').$last_match(2))}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - string = $send(string, 'gsub', [/DB(\d)(\d)(#([\d][\+\-\d]*))/], ($$5 = function(){var self = $$5.$$s || this; - - return "" + "3R6+" + ($$($nesting, 'Regexp').$last_match(4)) + "[" + ($$($nesting, 'Regexp').$last_match(1)) + "," + ($$($nesting, 'Regexp').$last_match(2)) + "]"}, $$5.$$s = self, $$5.$$arity = 0, $$5)); - string = $send(string, 'gsub', [/DB(\d)(\d)(#([\+\-\d]*))/], ($$6 = function(){var self = $$6.$$s || this; - - return "" + "3R6" + ($$($nesting, 'Regexp').$last_match(4)) + "[" + ($$($nesting, 'Regexp').$last_match(1)) + "," + ($$($nesting, 'Regexp').$last_match(2)) + "]"}, $$6.$$s = self, $$6.$$arity = 0, $$6)); - string = $send(string, 'gsub', [/DB(\d)(\d)/], ($$7 = function(){var self = $$7.$$s || this; - - return "" + "3R6[" + ($$($nesting, 'Regexp').$last_match(1)) + "," + ($$($nesting, 'Regexp').$last_match(2)) + "]"}, $$7.$$s = self, $$7.$$arity = 0, $$7)); - return string; - }, $DarkBlaze_changeText$2.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $DarkBlaze_dice_command_xRn$8 = function $$dice_command_xRn(string, nick_e) { - var self = this; - - return self.$check_roll(string, nick_e) - }, $DarkBlaze_dice_command_xRn$8.$$arity = 2); - - Opal.def(self, '$check_nD6', $DarkBlaze_check_nD6$9 = function $$check_nD6(total, _dice_total, _dice_list, cmp_op, target) { - var $a, self = this; - - if ($truthy(($truthy($a = cmp_op['$!='](">=")) ? $a : target['$==']("?")))) { - return "" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - } - }, $DarkBlaze_check_nD6$9.$$arity = 5); - - Opal.def(self, '$check_roll', $DarkBlaze_check_roll$10 = function $$check_roll(string, nick_e) { - var $a, $b, self = this, output = nil, m = nil, mod = nil, abl = nil, skl = nil, signOfInequality = nil, diff = nil, total = nil, out_str = nil, dice_list = nil, dice_total = nil, cmp_op = nil; - - - output = "1"; - if ($truthy((m = /(^|\s)S?(3[rR]6([\+\-\d]+)?(\[(\d+),(\d+)\])(([>=]+)(\d+))?)(\s|$)/i.$match(string)))) { - } else { - return "1" - }; - string = m['$[]'](2); - mod = 0; - abl = 1; - skl = 1; - signOfInequality = ""; - diff = 0; - if ($truthy(m['$[]'](3))) { - mod = self.$parren_killer("" + "(0" + (m['$[]'](3)) + ")").$to_i()}; - if ($truthy(m['$[]'](4))) { - - abl = m['$[]'](5).$to_i(); - skl = m['$[]'](6).$to_i();}; - if ($truthy(m['$[]'](7))) { - - signOfInequality = self.$marshalSignOfInequality(m['$[]'](8)); - diff = m['$[]'](9).$to_i();}; - $b = self.$get_dice(mod, abl, skl), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (out_str = ($a[1] == null ? nil : $a[1])), (dice_list = ($a[2] == null ? nil : $a[2])), $b; - output = "" + (nick_e) + ": (" + (string) + ") > " + (out_str); - if ($truthy(signOfInequality['$!='](""))) { - - dice_total = $send(dice_list, 'inject', [], "+".$to_proc()); - cmp_op = $$($nesting, 'Normalize').$comparison_operator(signOfInequality); - output = $rb_plus(output, self.$check_result(total, dice_total, dice_list, 6, cmp_op, diff));}; - return output; - }, $DarkBlaze_check_roll$10.$$arity = 2); - - Opal.def(self, '$get_dice', $DarkBlaze_get_dice$11 = function $$get_dice(mod, abl, skl) { - var $$12, $$13, self = this, total = nil, crit = nil, fumble = nil, dice_c = nil, dummy = nil, dice_str = nil, dice_arr = nil, resultText = nil, output = nil; - - - total = 0; - crit = 0; - fumble = 0; - dice_c = $rb_plus(3, mod.$abs()); - dummy = self.$roll(dice_c, 6, 1); - dummy.$shift(); - dice_str = dummy.$shift(); - dice_arr = $send(dice_str.$split(/,/), 'collect', [], ($$12 = function(i){var self = $$12.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - $send((3), 'times', [], ($$13 = function(i){var self = $$13.$$s || this, ch = nil; - - - - if (i == null) { - i = nil; - }; - ch = dice_arr['$[]'](i); - if ($truthy($rb_lt(mod, 0))) { - ch = dice_arr['$[]']($rb_minus($rb_minus(dice_c, i), 1))}; - if ($truthy($rb_le(ch, abl))) { - total = $rb_plus(total, 1)}; - if ($truthy($rb_le(ch, skl))) { - total = $rb_plus(total, 1)}; - if ($truthy($rb_le(ch, 2))) { - crit = $rb_plus(crit, 1)}; - if ($truthy($rb_ge(ch, 5))) { - return (fumble = $rb_plus(fumble, 1)) - } else { - return nil - };}, $$13.$$s = self, $$13.$$arity = 1, $$13)); - resultText = ""; - if ($truthy($rb_ge(crit, 3))) { - - resultText = " > クリティカル"; - total = $rb_plus(6, skl);}; - if ($truthy($rb_ge(fumble, 3))) { - - resultText = " > ファンブル"; - total = 0;}; - output = "" + (total) + "[" + (dice_str) + "]" + (resultText); - return [total, output, dice_arr]; - }, $DarkBlaze_get_dice$11.$$arity = 3); - - Opal.def(self, '$rollDiceCommand', $DarkBlaze_rollDiceCommand$14 = function $$rollDiceCommand(command) { - var $a, self = this, $case = nil, dice = nil; - - - $case = command; - if (/BT(\d+)?/i['$===']($case)) { - dice = $$($nesting, 'Regexp').$last_match(1); - dice = ($truthy($a = dice) ? $a : 1); - return self.$get_horidasibukuro_table(dice);}; - return nil; - }, $DarkBlaze_rollDiceCommand$14.$$arity = 1); - return (Opal.def(self, '$get_horidasibukuro_table', $DarkBlaze_get_horidasibukuro_table$15 = function $$get_horidasibukuro_table(dice) { - var $a, $b, self = this, output = nil, material_kind = nil, magic_stone = nil, num1 = nil, num2 = nil, magic_stone_result = nil, type = nil; - - - output = "1"; - material_kind = ["蟲甲", "金属", "金貨", "植物", "獣皮", "竜鱗", "レアモノ", "レアモノ"]; - magic_stone = ["火炎石", "雷撃石", "氷結石"]; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (num1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(dice, 6), $a = Opal.to_ary($b), (num2 = ($a[0] == null ? nil : $a[0])), $b; - self.$debug("dice", dice); - self.$debug("num1", num1); - self.$debug("num2", num2); - if ($truthy($rb_le(num1, 4))) { - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (num2 = ($a[0] == null ? nil : $a[0])), $b; - magic_stone_result = magic_stone['$[]']($rb_minus($rb_divide(num2, 2).$to_i(), 1)); - output = "" + "《" + (magic_stone_result) + "》を" + (dice) + "個獲得"; - } else if (num1['$=='](7)) { - output = "" + "《金貨》を" + (num2) + "枚獲得" - } else { - - type = material_kind['$[]']($rb_minus(num1, 5)); - if ($truthy($rb_le(num2, 3))) { - output = "" + "《" + (type) + " I》を1個獲得" - } else if ($truthy($rb_le(num2, 5))) { - output = "" + "《" + (type) + " I》を2個獲得" - } else if ($truthy($rb_le(num2, 7))) { - output = "" + "《" + (type) + " I》を3個獲得" - } else if ($truthy($rb_le(num2, 9))) { - output = "" + "《" + (type) + " II》を1個獲得" - } else if ($truthy($rb_le(num2, 11))) { - output = "" + "《" + (type) + " I》を2個《" + (type) + " II》を1個獲得" - } else if ($truthy($rb_le(num2, 13))) { - output = "" + "《" + (type) + " I》を2個《" + (type) + " II》を2個獲得" - } else if ($truthy($rb_le(num2, 15))) { - output = "" + "《" + (type) + " III》を1個獲得" - } else if ($truthy($rb_le(num2, 17))) { - output = "" + "《" + (type) + " II》を2個《" + (type) + " III》を1個獲得" - } else { - output = "" + "《" + (type) + " II》を2個《" + (type) + " III》を2個獲得" - }; - }; - if ($truthy(output['$!=']("1"))) { - output = "" + "掘り出し袋表[" + (num1) + "," + (num2) + "] > " + (output)}; - return output; - }, $DarkBlaze_get_horidasibukuro_table$15.$$arity = 1), nil) && 'get_horidasibukuro_table'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/DarkDaysDrive.js b/src/assets/dicebot/DarkDaysDrive.js deleted file mode 100644 index 22f13a820..000000000 --- a/src/assets/dicebot/DarkDaysDrive.js +++ /dev/null @@ -1,130 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$==', '$<=', '$>=', '$upcase', '$===', '$getRandomSkillTableResult', '$getTableDiceCommandResult', '$get_table_by_1d6', '$get_table_by_2d6', '$[]', '$nil?', '$getD66Table', '$get_table_by_d66_swap', '$getD66', '$bcdice', '$get_table_by_number', '$map', '$is_a?', '$to_i', '$last_match', '$freeze', '$setPrefixes', '$+', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DarkDaysDrive'); - - var $nesting = [self].concat($parent_nesting), $DarkDaysDrive_initialize$1, $DarkDaysDrive_check_2D6$2, $DarkDaysDrive_rollDiceCommand$3, $DarkDaysDrive_getRandomSkillTableResult$4, $DarkDaysDrive_getTableDiceCommandResult$5, $DarkDaysDrive_getD66Table$6; - - - Opal.const_set($nesting[0], 'ID', "DarkDaysDrive"); - Opal.const_set($nesting[0], 'NAME', "ダークデイズドライブ"); - Opal.const_set($nesting[0], 'SORT_KEY', "たあくていすとらいふ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + "スペシャル/ファンブル/成功/失敗を判定\n" + "・各種表\n" + "RTT\tランダム特技決定表\n" + "ABRT アビリティ決定表\n" + "DT ダメージ表\n" + "FT 失敗表\n" + "GJT 大成功表\n" + "ITT 移動トラブル表\n" + "NTT 任務トラブル表\n" + "STT 襲撃トラブル表\n" + "HTT 変身トラブル表\n" + "DET ドライブイベント表\n" + "BET ブレイクイベント表\n" + "CT キャンプ表\n" + "KZT 関係属性表\n" + "IA イケメンアクション決定表\n" + " IAA 遠距離\n" + " IAB 移動\n" + " IAC 近距離\n" + " IAD 善人\n" + " IAE 悪人\n" + " IAF 幼い\n" + " IAG バカ\n" + " IAH 渋い\n" + " IAI 賢い\n" + " IAJ 超自然\n" + "・D66ダイスあり\n"); - - Opal.def(self, '$initialize', $DarkDaysDrive_initialize$1 = function $$initialize() { - var $iter = $DarkDaysDrive_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $DarkDaysDrive_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $DarkDaysDrive_initialize$1, false), $zuper, $iter); - return (self.d66Type = 2); - }, $DarkDaysDrive_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $DarkDaysDrive_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル(判定失敗。失敗表(FT)を追加で1回振る)" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > スペシャル(判定成功。大成功表(GJT)を1回使用可能)" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $DarkDaysDrive_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $DarkDaysDrive_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var self = this, string = nil, $case = nil; - - - string = command.$upcase(); - $case = string; - if ("RTT"['$===']($case)) {return self.$getRandomSkillTableResult(command)}; - return self.$getTableDiceCommandResult(command); - }, $DarkDaysDrive_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$getRandomSkillTableResult', $DarkDaysDrive_getRandomSkillTableResult$4 = function $$getRandomSkillTableResult(_command) { - var $a, $b, self = this, name = nil, skillTableFull = nil, skillTable = nil, total_n = nil, tableName = nil, skill = nil, total_n2 = nil, output = nil; - - - name = "ランダム"; - skillTableFull = [["背景", ["呪い", "絶望", "孤児", "死別", "一般人", "獲物", "憧れ", "友人", "挑戦者", "血縁", "永遠"]], ["仕事", ["脅迫", "捨てる", "拉致", "盗む", "ハッキング", "侵入", "変装", "だます", "隠す", "のぞく", "聞き出す"]], ["捜索", ["トイレ", "食事", "自然", "運動施設", "街", "友愛会", "暗部", "史跡", "文化施設", "温泉", "宿泊"]], ["趣味", ["お酒", "グルメ", "ダンス", "スポーツ", "健康", "ファッション", "恋愛", "フェス", "音楽", "物語", "学問"]], ["雰囲気", ["だらしない", "のんびり", "暖かい", "明るい", "甘い", "普通", "洗練", "渋い", "静か", "真面目", "冷たい"]], ["戦闘法", ["忍術", "古武術", "剣術", "棒術", "拳法", "ケンカ", "総合格闘技", "レスリング", "軍隊格闘術", "射撃", "弓術"]]]; - $b = self.$get_table_by_1d6(skillTableFull), $a = Opal.to_ary($b), (skillTable = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b; - $b = skillTable, $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (skillTable = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_2d6(skillTable), $a = Opal.to_ary($b), (skill = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b; - output = "" + (name) + "指定特技表(" + (total_n) + "," + (total_n2) + ") > 『" + (tableName) + "』" + (skill); - return output; - }, $DarkDaysDrive_getRandomSkillTableResult$4.$$arity = 1); - - Opal.def(self, '$getTableDiceCommandResult', $DarkDaysDrive_getTableDiceCommandResult$5 = function $$getTableDiceCommandResult(command) { - var $a, $b, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, isSwap = nil, number = nil, result = nil, text = nil; - - - info = $$($nesting, 'TABLES')['$[]'](command); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type"); - table = info['$[]']("table"); - $b = (function() {$case = type; - if ("2D6"['$===']($case)) {return self.$get_table_by_2d6(table)} - else if ("1D6"['$===']($case)) {return self.$get_table_by_1d6(table)} - else if ("D66S"['$===']($case)) { - table = self.$getD66Table(table); - return self.$get_table_by_d66_swap(table);} - else if ("D66N"['$===']($case)) { - table = self.$getD66Table(table); - isSwap = false; - number = self.$bcdice().$getD66(isSwap); - result = self.$get_table_by_number(number, table); - return [result, number];} - else { return nil }})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(text['$nil?']())) { - return nil}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $DarkDaysDrive_getTableDiceCommandResult$5.$$arity = 1); - - Opal.def(self, '$getD66Table', $DarkDaysDrive_getD66Table$6 = function $$getD66Table(table) { - var $$7, self = this; - - return $send(table, 'map', [], ($$7 = function(item){var self = $$7.$$s || this, $a; - - - - if (item == null) { - item = nil; - }; - if ($truthy(($truthy($a = item['$is_a?']($$($nesting, 'String'))) ? /^(\d+):(.*)/['$==='](item) : $a))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2)] - } else { - return item - };}, $$7.$$s = self, $$7.$$arity = 1, $$7)) - }, $DarkDaysDrive_getD66Table$6.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["ABRT", "DT", "FT", "GJT", "ITT", "NTT", "STT", "HTT", "DET", "BET", "CT", "KZT", "IA", "IAA", "IAB", "IAC", "IAD", "IAE", "IAF", "IAG", "IAH", "IAI", "IAJ"], {"ABRT": $hash2(["name", "type", "table"], {"name": "アビリティ決定表", "type": "D66S", "table": ["11:インストラクター(P155)", "12:運送業(P155)", "13:運転手(P155)", "14:カフェ店員(P155)", "15:趣味人(P155)", "16:ショップ店員(P155)", "22:正社員(P156)", "23:大工(P156)", "24:探偵(P156)", "25:バイヤー(P156)", "26:俳優(P156)", "33:派遣社員(P156)", "34:犯罪者(P157)", "35:バンドマン(P157)", "36:バーテンダー(P157)", "44:ヒモ(P157)", "45:ホスト(P157)", "46:ホテルマン(P157)", "55:無職(P158)", "56:用心棒(P158)", "66:料理人(P158)"]}), "DT": $hash2(["name", "type", "table"], {"name": "ダメージ表", "type": "1D6", "table": ["疲れ", "痛み", "焦り", "不調", "ショック", "ケガ"]}), "FT": $hash2(["name", "type", "table"], {"name": "失敗表", "type": "1D6", "table": ["任意のアイテムを一つ失う", "1ダメージを受ける", "【所持金ランク】が1減少する(最低0)", "2ダメージを受ける", "【所持金ランク】が2減少する(最低0)", "標的レベルが1増加する"]}), "GJT": $hash2(["name", "type", "table"], {"name": "大成功表", "type": "1D6", "table": ["主人からお褒めの言葉をいただく", "ダメージを1回復する", "ダメージを1回復する", "関係のチェックを一つ消す", "ダメージを2回復する", "【所持金ランク】が1増加する"]}), "ITT": $hash2(["name", "type", "table"], {"name": "移動トラブル表", "type": "1D6", "table": ["検問(P220)", "急な腹痛(P220)", "黒煙(P221)", "蚊(P221)", "落とし物(P222)", "空腹(P222)"]}), "NTT": $hash2(["name", "type", "table"], {"name": "任務トラブル表", "type": "1D6", "table": ["通報(P223)", "プレッシャー(P223)", "マナー違反(P224)", "志願者(P224)", "仲間割れ(P225)", "狩人の噂(P225)"]}), "STT": $hash2(["name", "type", "table"], {"name": "襲撃トラブル表", "type": "1D6", "table": ["孤独な追跡者(P226)", "地元の若者たち(P226)", "V-FILES(P227)", "チンピラの群れ(P227)", "孤独な狩人(P228)", "狩人の群れ(P228)"]}), "HTT": $hash2(["name", "type", "table"], {"name": "変身トラブル表", "type": "D66N", "table": ["11:あれを食べたい(P214)", "12:あれを着たい(P214)", "13:あれを見たい(P215)", "14:あれを狩りたい(P215)", "15:あれを踊りたい(P216)", "16:あれに入りたい(P216)", "21:強奪(P217)", "22:暴行(P217)", "23:虐殺(P218)", "24:誘拐(P218)", "25:無精(P219)", "26:失踪(P219)", "31:あれを食べたい(P214)", "32:あれを着たい(P214)", "33:あれを見たい(P215)", "34:あれを狩りたい(P215)", "35:あれを踊りたい(P216)", "36:あれに入りたい(P216)", "41:強奪(P217)", "42:暴行(P217)", "43:虐殺(P218)", "44:誘拐(P218)", "45:無精(P219)", "46:失踪(P219)", "51:あれを食べたい(P214)", "52:あれを着たい(P214)", "53:あれを見たい(P215)", "54:あれを狩りたい(P215)", "55:あれを踊りたい(P216)", "56:あれに入りたい(P216)", "61:強奪(P217)", "62:暴行(P217)", "63:虐殺(P218)", "64:誘拐(P218)", "65:無精(P219)", "66:失踪(P219)"]}), "DET": $hash2(["name", "type", "table"], {"name": "ドライブイベント表", "type": "1D6", "table": ["身の上話をする。目標が背景分野で選択している特技がドライブ判定の指定特技になる。", "スキル自慢をする。目標が仕事分野で選択している特技がドライブ判定の指定特技になる。", "むかし行った場所の話をする。目標が捜索分野で選択している特技がドライブ判定の指定特技になる。", "趣味の話をする。目標が趣味分野で選択している特技がドライブ判定の指定特技になる。", "テーマがない雑談をする。目標が雰囲気分野で選択している特技がドライブ判定の指定特技になる。", "物騒な話をする。目標が戦闘法分野で選択している特技がドライブ判定の指定特技になる。"]}), "BET": $hash2(["name", "type", "table"], {"name": "ブレイクイベント表", "type": "1D6", "table": ["イケメンの車は風光明美な場所に到着する。197ページの「観光地」を参照。", "イケメンの車は明るい光に照らされた小さな店に到着する。197ページの「コンビニ」を参照。", "イケメンの車は巨大かつ何でも売っている店に到着する。198ページの「ホームセンター」を参照。", "イケメンの車はドライバーたちの憩いの地に到着する。198ページの「サービスエリア」を参照。", "イケメンの車は大きなサービスエリアのような場所に到着する。199ページの「道の駅」を参照。", "イケメンの車は闇の底に隠された秘密の場所に到着する。199ページの「友愛会支部」を参照。"]}), "CT": $hash2(["name", "type", "table"], {"name": "キャンプ表", "type": "1D6", "table": ["無料仮眠所・いい感じの空き地:定員無制限/居住性-2/価格0/発見率2", "カプセルホテル:定員1/居住性-1/価格3/発見率2", "ラブホテル:定員2/居住性0/価格4/発見率1", "ビジネスホテル:定員2/居住性0/価格4/発見率1", "観光ホテル:定員4/居住性1/価格5/発見率1", "高級ホテル:定員4/居住性2/価格6/発見率0"]}), "KZT": $hash2(["name", "type", "table"], {"name": "関係属性表", "type": "1D6", "table": ["軽蔑", "反感", "混乱", "興味", "共感", "憧れ"]}), "IA": $hash2(["name", "type", "table"], {"name": "イケメンアクション決定表", "type": "D66S", "table": ["11:遠距離", "12:遠距離", "13:移動", "14:移動", "15:近距離", "16:近距離", "22:善人", "23:善人", "24:悪人", "25:悪人", "26:幼い", "33:幼い", "34:バカ", "35:バカ", "36:渋い", "44:渋い", "45:賢い", "46:賢い", "55:超自然", "56:超自然", "66:振り直しor自由選択"]}), "IAA": $hash2(["name", "type", "table"], {"name": "イケメンアクション(遠距離)表", "type": "1D6", "table": ["目を合わせて微笑む(かっこよさ:4)", "場所を譲る(かっこよさ:4)", "髪をかきあげる(かっこよさ:5)", "複雑なポーズで座る(かっこよさ:5)", "物憂げな表情で振り返る(かっこよさ:6)", "ものを上に持つ(かっこよさ:6)"]}), "IAB": $hash2(["name", "type", "table"], {"name": "イケメンアクション(移動)表", "type": "1D6", "table": ["車道側を歩く(かっこよさ:4)", "乗り物から降りる(かっこよさ:4)", "真剣な表情で近づく(かっこよさ:4)", "馬に乗る(かっこよさ:6)", "ダメージを受けつつ移動(かっこよさ:6)", "瞬間移動(かっこよさ:6)"]}), "IAC": $hash2(["name", "type", "table"], {"name": "イケメンアクション(近距離)表", "type": "1D6", "table": ["黙って見つめる(かっこよさ:3)", "ちょっとしたプレゼント(かっこよさ:3)", "顎クイ(かっこよさ:5)", "壁ドン(かっこよさ:5)", "お姫様抱っこ(かっこよさ:7)", "床ドン(かっこよさ:7)"]}), "IAD": $hash2(["name", "type", "table"], {"name": "イケメンアクション(善人)表", "type": "1D6", "table": ["手を引いて逃げる(かっこよさ:4)", "毛布を掛ける(かっこよさ:4)", "守る(かっこよさ:5)", "笑って去る(かっこよさ:5)", "全てを捧げる(かっこよさ:6)", "悪堕ち(かっこよさ:6)"]}), "IAE": $hash2(["name", "type", "table"], {"name": "イケメンアクション(悪人)表", "type": "1D6", "table": ["攻撃する(かっこよさ:4)", "暗く笑う(かっこよさ:4)", "奪う(かっこよさ:4)", "目論見を口にする(かっこよさ:6)", "罠にかける(かっこよさ:6)", "改心する(かっこよさ:6)"]}), "IAF": $hash2(["name", "type", "table"], {"name": "イケメンアクション(幼い)表", "type": "1D6", "table": ["甘える(かっこよさ:3)", "疲れる(かっこよさ:3)", "無邪気な発言(かっこよさ:5)", "おねだり(かっこよさ:5)", "上目遣い(かっこよさ:7)", "抱きつく(かっこよさ:7)"]}), "IAG": $hash2(["name", "type", "table"], {"name": "イケメンアクション(バカ)表", "type": "1D6", "table": ["苦悩する(かっこよさ:4)", "屈託のない笑顔(かっこよさ:4)", "転ぶ(かっこよさ:4)", "叫ぶ(かっこよさ:6)", "間違える(かっこよさ:6)", "怖がる(かっこよさ:6)"]}), "IAH": $hash2(["name", "type", "table"], {"name": "イケメンアクション(渋い)表", "type": "1D6", "table": ["説教(かっこよさ:4)", "気づかせる(かっこよさ:4)", "見守る(かっこよさ:5)", "残心(かっこよさ:5)", "称える(かっこよさ:6)", "いい位置を取る(かっこよさ:6)"]}), "IAI": $hash2(["name", "type", "table"], {"name": "イケメンアクション(賢い)表", "type": "1D6", "table": ["難しい本を読む(かっこよさ:3)", "アドバイスをする(かっこよさ:3)", "眼鏡を持ち上げる(かっこよさ:5)", "状況を解説する(かっこよさ:5)", "計算できなくなる(かっこよさ:7)", "大丈夫だと言う(かっこよさ:7)"]}), "IAJ": $hash2(["name", "type", "table"], {"name": "イケメンアクション(超自然)表", "type": "1D6", "table": ["水に濡れる(かっこよさ:4)", "風を纏う(かっこよさ:4)", "地割れ(かっこよさ:5)", "火を放つ(かっこよさ:5)", "闇を生み出す(かっこよさ:6)", "光る(かっこよさ:6)"]})}).$freeze()); - return self.$setPrefixes($rb_plus(["RTT"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/DarkSouls.js b/src/assets/dicebot/DarkSouls.js deleted file mode 100644 index 452c2b9b5..000000000 --- a/src/assets/dicebot/DarkSouls.js +++ /dev/null @@ -1,114 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$match', '$upcase', '$to_i', '$[]', '$!', '$nil?', '$getValue', '$checkRoll', '$roll', '$+', '$getValueText', '$==', '$collect', '$split', '$count', '$>', '$*', '$>=', '$to_s', '$parren_killer', '$<']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DarkSouls'); - - var $nesting = [self].concat($parent_nesting), $DarkSouls_rollDiceCommand$1, $DarkSouls_checkRoll$2, $DarkSouls_getValue$5, $DarkSouls_getValueText$6; - - - Opal.const_set($nesting[0], 'ID', "DarkSouls"); - Opal.const_set($nesting[0], 'NAME', "ダークソウルTRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "たあくそうるTRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・行為判定:[n]DS[a±b][@t]  []内のコマンドは省略可\n" + "・能動判定:[n]ADS[a±b][@t]  FP消費を判定\n" + " n:ダイス数。省略時は「2」\n" + " a±b:修正値。「1+2-1」のように、複数定可\n" + " @t:目標値。省略時は達成値を、指定時は判定の正否を表示\n" + "例)DS → 2D6の達成値を表示\n" + "  1DS → 1D6の達成値を表示\n" + "  ADS+2-2 → 2D6+2の達成値を表示(能動判定)\n" + "  DS+2@10 → 2D6+2で目標値10の判定\n"); - self.$setPrefixes(["(\\d+)?(A)?DS([-+\\d]*)(@\\d+)?"]); - - Opal.def(self, '$rollDiceCommand', $DarkSouls_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, self = this, m = nil, diceCount = nil, isActive = nil, modify = nil, target = nil, output = nil; - - - if ($truthy((m = /(\d+)?(A)?DS([-+\d]*)(@(\d+))?$/i.$match(command.$upcase())))) { - } else { - return nil - }; - diceCount = ($truthy($a = m['$[]'](1)) ? $a : 2).$to_i(); - isActive = m['$[]'](2)['$nil?']()['$!'](); - modify = self.$getValue(m['$[]'](3)); - target = ($truthy($a = m['$[]'](5)) ? $a : 0).$to_i(); - output = self.$checkRoll(diceCount, isActive, modify, target); - return output; - }, $DarkSouls_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$checkRoll', $DarkSouls_checkRoll$2 = function $$checkRoll(diceCount, isActive, modify, target) { - var $a, $b, $$3, $$4, self = this, dice = nil, diceText = nil, successValue = nil, modifyText = nil, targetText = nil, diceArray = nil, focusDamage = nil, focusText = nil, result = nil; - - - $b = self.$roll(diceCount, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - successValue = $rb_plus(dice, modify); - modifyText = self.$getValueText(modify); - targetText = (function() {if (target['$=='](0)) { - return "" - } else { - return "" + ">=" + (target) - }; return nil; })(); - if ($truthy(isActive)) { - - diceArray = $send(diceText.$split(/,/), 'collect', [], ($$3 = function(i){var self = $$3.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$3.$$s = self, $$3.$$arity = 1, $$3)); - focusDamage = $send(diceArray, 'count', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](1);}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - if ($truthy($rb_gt(focusDamage, 0))) { - - focusText = $rb_times("■", focusDamage); - focusText = "" + "(FP" + (focusText) + "消費)";};}; - result = "" + "(" + (diceCount) + "D6" + (modifyText) + (targetText) + ")"; - result = $rb_plus(result, "" + " > " + (dice) + "(" + (diceText) + ")" + (modifyText)); - result = $rb_plus(result, "" + " > " + (successValue) + (targetText)); - if ($truthy($rb_gt(target, 0))) { - if ($truthy($rb_ge(successValue, target))) { - result = $rb_plus(result, " > 【成功】") - } else { - result = $rb_plus(result, " > 【失敗】") - }}; - result = $rb_plus(result, focusText.$to_s()); - return result; - }, $DarkSouls_checkRoll$2.$$arity = 4); - - Opal.def(self, '$getValue', $DarkSouls_getValue$5 = function $$getValue(text) { - var $a, self = this; - - - text = ($truthy($a = text) ? $a : ""); - return self.$parren_killer("" + "(0" + (text) + ")").$to_i(); - }, $DarkSouls_getValue$5.$$arity = 1); - return (Opal.def(self, '$getValueText', $DarkSouls_getValueText$6 = function $$getValueText(value) { - var self = this; - - - if (value['$=='](0)) { - return ""}; - if ($truthy($rb_lt(value, 0))) { - return value.$to_s()}; - return "" + "+" + (value); - }, $DarkSouls_getValueText$6.$$arity = 1), nil) && 'getValueText'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/DeadlineHeroes.js b/src/assets/dicebot/DeadlineHeroes.js deleted file mode 100644 index ad8ef751e..000000000 --- a/src/assets/dicebot/DeadlineHeroes.js +++ /dev/null @@ -1,507 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/range_table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$new', '$alias_method', '$freeze', '$lambda', '$name', '$sum', '$content', '$attr_reader', '$match', '$raise', '$to_i', '$[]', '$store', '$find', '$include?', '$range', '$roll', '$map', '$split', '$to_proc', '$fetch', '$formatted=', '$-', '$private', '$coerce_to_int_range', '$sort_by', '$min', '$assert_min_sum_is_covered', '$assert_max_sum_is_covered', '$assert_no_gap_or_overlap_in_ranges', '$===', '$is_a?', '$begin', '$end', '$class', '$first', '$*', '$last', '$each_cons', '$max', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RangeTable'); - - var $nesting = [self].concat($parent_nesting), $RangeTable$1, $RangeTable$2, $RangeTable_initialize$3, $RangeTable_fetch$4, $RangeTable_roll$6, $RangeTable_store$7, $RangeTable_coerce_to_int_range$11, $RangeTable_assert_min_sum_is_covered$12, $RangeTable_assert_max_sum_is_covered$13, $RangeTable_assert_no_gap_or_overlap_in_ranges$14; - - self.$$prototype.name = self.$$prototype.items = self.$$prototype.num_of_dice = self.$$prototype.num_of_sides = self.$$prototype.formatter = nil; - - Opal.const_set($nesting[0], 'RollResult', $send($$($nesting, 'Struct'), 'new', ["sum", "values", "content", "formatted"], ($RangeTable$1 = function(){var self = $RangeTable$1.$$s || this; - - return self.$alias_method("to_s", "formatted")}, $RangeTable$1.$$s = self, $RangeTable$1.$$arity = 0, $RangeTable$1))); - Opal.const_set($nesting[0], 'Item', $$($nesting, 'Struct').$new("range", "content")); - Opal.const_set($nesting[0], 'DICE_ROLL_METHOD_RE', /^(\d+)D(\d+)$/i.$freeze()); - Opal.const_set($nesting[0], 'DEFAULT_FORMATTER', $send(self, 'lambda', [], ($RangeTable$2 = function(table, result){var self = $RangeTable$2.$$s || this; - - - - if (table == null) { - table = nil; - }; - - if (result == null) { - result = nil; - }; - return "" + (table.$name()) + "(" + (result.$sum()) + ") > " + (result.$content());}, $RangeTable$2.$$s = self, $RangeTable$2.$$arity = 2, $RangeTable$2))); - self.$attr_reader("name"); - self.$attr_reader("num_of_dice"); - self.$attr_reader("num_of_sides"); - - Opal.def(self, '$initialize', $RangeTable_initialize$3 = function $$initialize(name, dice_roll_method, items) { - var $iter = $RangeTable_initialize$3.$$p, formatter = $iter || nil, $a, self = this, m = nil; - - if ($iter) $RangeTable_initialize$3.$$p = null; - - - if ($iter) $RangeTable_initialize$3.$$p = null;; - self.name = name.$freeze(); - self.formatter = ($truthy($a = formatter) ? $a : $$($nesting, 'DEFAULT_FORMATTER')); - m = $$($nesting, 'DICE_ROLL_METHOD_RE').$match(dice_roll_method); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + (self.name) + ": invalid dice roll method: " + (dice_roll_method)) - }; - self.num_of_dice = m['$[]'](1).$to_i(); - self.num_of_sides = m['$[]'](2).$to_i(); - return self.$store(items); - }, $RangeTable_initialize$3.$$arity = 3); - - Opal.def(self, '$fetch', $RangeTable_fetch$4 = function $$fetch(value) { - var $$5, self = this, item = nil; - - - item = $send(self.items, 'find', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$range()['$include?'](value);}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - if ($truthy(item)) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": value is out of range: " + (value)) - }; - return item; - }, $RangeTable_fetch$4.$$arity = 1); - - Opal.def(self, '$roll', $RangeTable_roll$6 = function $$roll(bcdice) { - var $a, $b, self = this, sum = nil, values_str = nil, values = nil, result = nil, $writer = nil; - - - $b = bcdice.$roll(self.num_of_dice, self.num_of_sides), $a = Opal.to_ary($b), (sum = ($a[0] == null ? nil : $a[0])), (values_str = ($a[1] == null ? nil : $a[1])), $b; - values = $send(values_str.$split(","), 'map', [], "to_i".$to_proc()); - result = $$($nesting, 'RollResult').$new(sum, values, self.$fetch(sum).$content()); - - $writer = [self.formatter['$[]'](self, result)]; - $send(result, 'formatted=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return result; - }, $RangeTable_roll$6.$$arity = 1); - self.$private(); - - Opal.def(self, '$store', $RangeTable_store$7 = function $$store(items) { - var $$8, $$9, $$10, self = this, items_with_range = nil, sorted_items = nil; - - - items_with_range = $send(items, 'map', [], ($$8 = function(r, c){var self = $$8.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (c == null) { - c = nil; - }; - return [self.$coerce_to_int_range(r), c];}, $$8.$$s = self, $$8.$$arity = 2, $$8)); - sorted_items = $send(items_with_range, 'sort_by', [], ($$9 = function(r, _){var self = $$9.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (_ == null) { - _ = nil; - }; - return r.$min();}, $$9.$$s = self, $$9.$$arity = 2, $$9)); - self.$assert_min_sum_is_covered(sorted_items); - self.$assert_max_sum_is_covered(sorted_items); - self.$assert_no_gap_or_overlap_in_ranges(sorted_items); - self.items = $send(sorted_items, 'map', [], ($$10 = function(range, content){var self = $$10.$$s || this; - - - - if (range == null) { - range = nil; - }; - - if (content == null) { - content = nil; - }; - return $$($nesting, 'Item').$new(range, content.$freeze()).$freeze();}, $$10.$$s = self, $$10.$$arity = 2, $$10)).$freeze(); - return self; - }, $RangeTable_store$7.$$arity = 1); - - Opal.def(self, '$coerce_to_int_range', $RangeTable_coerce_to_int_range$11 = function $$coerce_to_int_range(x) { - var $a, self = this, $case = nil; - - - $case = x; - if ($$($nesting, 'Integer')['$===']($case)) {return $$($nesting, 'Range').$new(x, x)} - else if ($$($nesting, 'Range')['$===']($case)) {if ($truthy(($truthy($a = x.$begin()['$is_a?']($$($nesting, 'Integer'))) ? x.$end()['$is_a?']($$($nesting, 'Integer')) : $a))) { - return x}}; - return self.$raise($$($nesting, 'TypeError'), "" + (self.name) + ": " + (x) + " (" + (x.$class()) + ") must be an Integer or a Range with Integers "); - }, $RangeTable_coerce_to_int_range$11.$$arity = 1); - - Opal.def(self, '$assert_min_sum_is_covered', $RangeTable_assert_min_sum_is_covered$12 = function $$assert_min_sum_is_covered(sorted_items) { - var self = this, min_sum = nil, range = nil; - - - min_sum = self.num_of_dice; - range = sorted_items.$first()['$[]'](0); - if ($truthy(range['$include?'](min_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": min value (" + (min_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_min_sum_is_covered$12.$$arity = 1); - - Opal.def(self, '$assert_max_sum_is_covered', $RangeTable_assert_max_sum_is_covered$13 = function $$assert_max_sum_is_covered(sorted_items) { - var self = this, max_sum = nil, range = nil; - - - max_sum = $rb_times(self.num_of_dice, self.num_of_sides); - range = sorted_items.$last()['$[]'](0); - if ($truthy(range['$include?'](max_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": max value (" + (max_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_max_sum_is_covered$13.$$arity = 1); - return (Opal.def(self, '$assert_no_gap_or_overlap_in_ranges', $RangeTable_assert_no_gap_or_overlap_in_ranges$14 = function $$assert_no_gap_or_overlap_in_ranges(sorted_items) { - var $$15, self = this; - - - $send(sorted_items, 'each_cons', [2], ($$15 = function(i1, i2){var self = $$15.$$s || this, r1 = nil, r2 = nil, max1 = nil, next_of_max1 = nil; - if (self.name == null) self.name = nil; - - - - if (i1 == null) { - i1 = nil; - }; - - if (i2 == null) { - i2 = nil; - }; - r1 = i1['$[]'](0); - r2 = i2['$[]'](0); - max1 = r1.$max(); - next_of_max1 = $rb_plus(max1, 1); - if ($truthy(r2['$include?'](max1))) { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range overlap: " + (r1) + " and " + (r2))}; - if ($truthy(r2['$include?'](next_of_max1))) { - return nil - } else { - return self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range gap: " + (r1) + " and " + (r2)) - };}, $$15.$$s = self, $$15.$$arity = 2, $$15)); - return self; - }, $RangeTable_assert_no_gap_or_overlap_in_ranges$14.$$arity = 1), nil) && 'assert_no_gap_or_overlap_in_ranges'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send, $range = Opal.range; - - Opal.add_stubs(['$require', '$setPrefixes', '$===', '$resolute_action', '$roll_death_chart', '$roll_hero_name_chart', '$roll_tables', '$private', '$match', '$eval', '$new', '$[]', '$roll_d100', '$format', '$action_result', '$to_s', '$join', '$freeze', '$+', '$==', '$<=', '$-', '$roll', '$*', '$!=', '$size', '$raise', '$inspect', '$at', '$<', '$first', '$>', '$last', '$to_i', '$map', '$mix_column', '$zip', '$each', '$push', '$sub', '$gsub']); - - self.$require("utils/range_table"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DeadlineHeroes'); - - var $nesting = [self].concat($parent_nesting), $DeadlineHeroes_rollDiceCommand$1, $DeadlineHeroes_resolute_action$2, $DeadlineHeroes_action_result$3, $DeadlineHeroes_roll_d100$4, $DeadlineHeroes_roll_death_chart$8, $DeadlineHeroes_roll_hero_name_chart$13; - - - Opal.const_set($nesting[0], 'ID', "DeadlineHeroes"); - Opal.const_set($nesting[0], 'NAME', "デッドラインヒーローズRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "てつとらいんひいろおすRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・行為判定(DLHx)\n" + " x:成功率\n" + " 例)DLH80\n" + " クリティカル、ファンブルの自動的判定を行います。\n" + " 「DLH50+20-30」のように加減算記述も可能。\n" + " 成功率は上限100%、下限0%\n" + "・デスチャート(DCxY)\n" + " x:チャートの種類。肉体:DCL、精神:DCS、環境:DCC\n" + " Y=マイナス値\n" + " 例)DCL5:ライフが -5 の判定\n" + "   DCS3:サニティーが -3 の判定\n" + "   DCC0:クレジット 0 の判定\n" + "・ヒーローネームチャート(HNC)\n" + "・リアルネームチャート 日本(RNCJ)、海外(RNCO)\n"); - self.$setPrefixes(["DLH\\d+([\\+\\-]\\d+)*", "DC(L|S|C)\\d+", "RNC[JO]", "HNC"]); - - Opal.def(self, '$rollDiceCommand', $DeadlineHeroes_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if (/^DLH/i['$===']($case)) {return self.$resolute_action(command)} - else if (/^DC\w/i['$===']($case)) {return self.$roll_death_chart(command)} - else if ("HNC"['$===']($case)) {return self.$roll_hero_name_chart()} - else {return self.$roll_tables(command, $$($nesting, 'TABLES'))}})() - }, $DeadlineHeroes_rollDiceCommand$1.$$arity = 1); - self.$private(); - - Opal.def(self, '$resolute_action', $DeadlineHeroes_resolute_action$2 = function $$resolute_action(command) { - var $a, $b, self = this, m = nil, success_rate = nil, roll_result = nil, dice10 = nil, dice01 = nil, roll_result_text = nil, result = nil, sequence = nil; - - - m = /^DLH(\d+([\+\-]\d+)*)$/.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - success_rate = $$($nesting, 'ArithmeticEvaluator').$new().$eval(m['$[]'](1)); - $b = self.$roll_d100(), $a = Opal.to_ary($b), (roll_result = ($a[0] == null ? nil : $a[0])), (dice10 = ($a[1] == null ? nil : $a[1])), (dice01 = ($a[2] == null ? nil : $a[2])), $b; - roll_result_text = self.$format("%02d", roll_result); - result = self.$action_result(roll_result, dice10, dice01, success_rate); - sequence = ["" + "行為判定(成功率:" + (success_rate) + "%)", "" + "1D100[" + (dice10) + "," + (dice01) + "]=" + (roll_result_text), roll_result_text.$to_s(), result]; - return sequence.$join(" > "); - }, $DeadlineHeroes_resolute_action$2.$$arity = 1); - Opal.const_set($nesting[0], 'SUCCESS_STR', "成功"); - Opal.const_set($nesting[0], 'FAILURE_STR', "失敗"); - Opal.const_set($nesting[0], 'CRITICAL_STR', $rb_plus($$($nesting, 'SUCCESS_STR'), " > クリティカル! パワーの代償1/2").$freeze()); - Opal.const_set($nesting[0], 'FUMBLE_STR', $rb_plus($$($nesting, 'FAILURE_STR'), " > ファンブル! パワーの代償2倍&振り直し不可").$freeze()); - - Opal.def(self, '$action_result', $DeadlineHeroes_action_result$3 = function $$action_result(total, tens, ones, success_rate) { - var $a, self = this; - - if ($truthy(($truthy($a = total['$=='](100)) ? $a : $rb_le(success_rate, 0)))) { - return $$($nesting, 'FUMBLE_STR') - } else if ($truthy($rb_le(total, $rb_minus(success_rate, 100)))) { - return $$($nesting, 'CRITICAL_STR') - } else if (tens['$=='](ones)) { - if ($truthy($rb_le(total, success_rate))) { - return $$($nesting, 'CRITICAL_STR') - } else { - return $$($nesting, 'FUMBLE_STR') - } - } else if ($truthy($rb_le(total, success_rate))) { - return $$($nesting, 'SUCCESS_STR') - } else { - return $$($nesting, 'FAILURE_STR') - } - }, $DeadlineHeroes_action_result$3.$$arity = 4); - - Opal.def(self, '$roll_d100', $DeadlineHeroes_roll_d100$4 = function $$roll_d100() { - var $a, $b, self = this, dice10 = nil, dice01 = nil, roll_result = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice10 = ($a[0] == null ? nil : $a[0])), $b; - if (dice10['$=='](10)) { - dice10 = 0}; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice01 = ($a[0] == null ? nil : $a[0])), $b; - if (dice01['$=='](10)) { - dice01 = 0}; - roll_result = $rb_plus($rb_times(dice10, 10), dice01); - if (roll_result['$=='](0)) { - roll_result = 100}; - return [roll_result, dice10, dice01]; - }, $DeadlineHeroes_roll_d100$4.$$arity = 0); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DeathChart'); - - var $nesting = [self].concat($parent_nesting), $DeathChart_initialize$5, $DeathChart_roll$6, $DeathChart_at$7; - - self.$$prototype.chart = self.$$prototype.name = nil; - - - Opal.def(self, '$initialize', $DeathChart_initialize$5 = function $$initialize(name, chart) { - var self = this; - - - self.name = name; - self.chart = chart.$freeze(); - if ($truthy(self.chart.$size()['$!='](11))) { - return self.$raise($$($nesting, 'ArgumentError'), "" + "unexpected chart size " + (name.$inspect()) + " (given " + (self.chart.$size()) + ", expected 11)") - } else { - return nil - }; - }, $DeathChart_initialize$5.$$arity = 2); - - Opal.def(self, '$roll', $DeathChart_roll$6 = function $$roll(bot, minus_score) { - var $a, $b, self = this, dice = nil, key_number = nil, key_text = nil, chosen = nil; - - - $b = bot.$roll(1, 10), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - key_number = $rb_plus(dice, minus_score); - $b = self.$at(key_number), $a = Opal.to_ary($b), (key_text = ($a[0] == null ? nil : $a[0])), (chosen = ($a[1] == null ? nil : $a[1])), $b; - return "" + "デスチャート(" + (self.name) + ")[マイナス値:" + (minus_score) + " + 1D10(->" + (dice) + ") = " + (key_number) + "] > " + (key_text) + " : " + (chosen); - }, $DeathChart_roll$6.$$arity = 2); - self.$private(); - return (Opal.def(self, '$at', $DeathChart_at$7 = function $$at(key_number) { - var self = this; - - if ($truthy($rb_lt(key_number, 10))) { - return ["10以下", self.chart.$first()] - } else if ($truthy($rb_gt(key_number, 20))) { - return ["20以上", self.chart.$last()] - } else { - return [key_number.$to_s(), self.chart['$[]']($rb_minus(key_number, 10))] - } - }, $DeathChart_at$7.$$arity = 1), nil) && 'at'; - })($nesting[0], null, $nesting); - - Opal.def(self, '$roll_death_chart', $DeadlineHeroes_roll_death_chart$8 = function $$roll_death_chart(command) { - var self = this, m = nil, chart = nil, minus_score = nil; - - - m = /^DC([LSC])(\d+)$/i.$match(command); - if ($truthy(m)) { - } else { - return m - }; - chart = $$($nesting, 'DEATH_CHARTS')['$[]'](m['$[]'](1)); - minus_score = m['$[]'](2).$to_i(); - return chart.$roll(self, minus_score); - }, $DeadlineHeroes_roll_death_chart$8.$$arity = 1); - Opal.const_set($nesting[0], 'DEATH_CHARTS', $hash2(["L", "S", "C"], {"L": $$($nesting, 'DeathChart').$new("肉体", ["何も無し。キミは奇跡的に一命を取り留めた。闘いは続く。", "激痛が走る。以後、イベント終了時まで、全ての判定の成功率-10%。", "キミは[硬直]ポイント2点を得る。[硬直]ポイントを所持している間、キミは「属性:妨害」のパワーを使用することができない。各ラウンド終了時、キミは所持している[硬直]ポイントを1点減らしてもよい。", "渾身の一撃!! キミは〈生存〉判定を行なう。失敗した場合、[死亡]する。", "キミは[気絶]ポイント2点を得る。[気絶]ポイントを所持している間、キミはあらゆるパワーを使用できず、自身のターンを得ることもできない。各ラウンド終了時、キミは所持している[気絶]ポイントを1点減らしてもよい。", "以後、イベント終了時まで、全ての判定の成功率-20%。", "記録的一撃!! キミは〈生存〉-20%の判定を行なう。失敗した場合、[死亡]する。", "キミは[瀕死]ポイント2点を得る。[瀕死]ポイントを所持している間、キミはあらゆるパワーを使用できず、自身のターンを得ることもできない。各ラウンド終了時、キミは所持している[瀕死]ポイントを1点を失う。全ての[瀕死]ポイントを失う前に戦闘が終了しなかった場合、キミは[死亡]する。", "叙事詩的一撃!! キミは〈生存〉-30%の判定を行なう。失敗した場合、[死亡]する。", "以後、イベント終了時まで、全ての判定の成功率-30%。", "神話的一撃!! キミは宙を舞って三回転ほどした後、地面に叩きつけられる。見るも無惨な姿。肉体は原型を留めていない(キミは[死亡]した)。"]), "S": $$($nesting, 'DeathChart').$new("精神", ["何も無し。キミは歯を食いしばってストレスに耐えた。", "以後、イベント終了時まで、全ての判定の成功率-10%。", "キミは[恐怖]ポイント2点を得る。[恐怖]ポイントを所持している間、キミは「属性:攻撃」のパワーを使用できない。各ラウンド終了時、キミは所持している[恐怖]ポイントを1点減らしてもよい。", "とても傷ついた。キミは〈意志〉判定を行なう。失敗した場合、[絶望]してNPCとなる。", "キミは[気絶]ポイント2点を得る。[気絶]ポイントを所持している間、キミはあらゆるパワーを使用できず、自身のターンを得ることもできない。各ラウンド終了時、キミは所持している[気絶]ポイントを1点減らしてもよい。", "以後、イベント終了時まで、全ての判定の成功率-20%。", "信じるものに裏切られたような痛み。キミは〈意志〉-20%の判定を行なう。失敗した場合、[絶望]してNPCとなる。", "キミは[混乱]ポイント2点を得る。[混乱]ポイントを所持している間、キミは本来味方であったキャラクターに対して、可能な限り最大の被害を与える様、行動し続ける。各ラウンド終了時、キミは所持している[混乱]ポイントを1点減らしてもよい。", "あまりに残酷な現実。キミは〈意志〉-30%の判定を行なう。失敗した場合、[絶望]してNPCとなる。", "以後、イベント終了時まで、全ての判定の成功率-30%。", "宇宙開闢の理に触れるも、それは人類の認識限界を超える何かであった。キミは[絶望]し、以後NPCとなる。"]), "C": $$($nesting, 'DeathChart').$new("環境", ["何も無し。キミは黒い噂を握りつぶした。", "以後、イベント終了時まで、全ての判定の成功率-10%。", "ピンチ! 以後、イベント終了時まで、キミは《支援》を使用できない。", "裏切り!! キミは〈経済〉判定を行なう。失敗した場合、キミはヒーローとしての名声を失い、[汚名]を受ける。", "以後、シナリオ終了時まで、代償にクレジットを消費するパワーを使用できない。", "キミの悪評は大変なもののようだ。協力者からの支援が打ち切られる。以後、シナリオ終了時まで、全ての判定の成功率-20%。", "信頼の失墜!! キミは〈経済〉-20%の判定を行なう。失敗した場合、キミはヒーローとしての名声を失い、[汚名]を受ける。", "以後、シナリオ終了時まで、【環境】系の技能のレベルがすべて0となる。", "捏造報道!! 身の覚えのない犯罪への荷担が、スクープとして報道される。キミは〈経済〉-30%の判定を行なう。失敗した場合、キミはヒーローとしての名声を失い、[汚名]を受ける。", "以後、イベント終了時まで、全ての判定の成功率-30%。", "キミの名は史上最悪の汚点として永遠に歴史に刻まれる。もはやキミを信じる仲間はなく、キミを助ける社会もない。キミは[汚名]を受けた。"])}).$freeze()); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RealNameChart'); - - var $nesting = [self].concat($parent_nesting), $RealNameChart_initialize$9, $RealNameChart_mix_column$11; - - - - Opal.def(self, '$initialize', $RealNameChart_initialize$9 = function $$initialize(name, columns, chart) { - var $$10, $iter = $RealNameChart_initialize$9.$$p, $yield = $iter || nil, self = this, items = nil; - - if ($iter) $RealNameChart_initialize$9.$$p = null; - - items = $send(chart, 'map', [], ($$10 = function(l){var self = $$10.$$s || this; - - - - if (l == null) { - l = nil; - }; - return self.$mix_column(columns, l);}, $$10.$$s = self, $$10.$$arity = 1, $$10)); - return $send(self, Opal.find_super_dispatcher(self, 'initialize', $RealNameChart_initialize$9, false), [name, "1D100", items], null); - }, $RealNameChart_initialize$9.$$arity = 3); - self.$private(); - return (Opal.def(self, '$mix_column', $RealNameChart_mix_column$11 = function $$mix_column(columns, item) { - var $a, $b, $$12, self = this, range = nil, names = nil, candidate = nil; - - - $b = item, $a = Opal.to_ary($b), (range = ($a[0] == null ? nil : $a[0])), (names = ($a[1] == null ? nil : $a[1])), $b; - if (names.$size()['$=='](1)) { - return [range, names['$[]'](0)]}; - candidate = $send(columns.$zip(names), 'map', [], ($$12 = function(l){var self = $$12.$$s || this; - - - - if (l == null) { - l = nil; - }; - return $rb_plus("\n", l.$join(": "));}, $$12.$$s = self, $$12.$$arity = 1, $$12)).$join(""); - return [range, candidate]; - }, $RealNameChart_mix_column$11.$$arity = 2), nil) && 'mix_column'; - })($nesting[0], $$($nesting, 'RangeTable'), $nesting); - Opal.const_set($nesting[0], 'TABLES', $hash2(["RNCJ", "RNCO"], {"RNCJ": $$($nesting, 'RealNameChart').$new("リアルネームチャート(日本)", ["姓", "名(男)", "名(女)"], [[$range(1, 6, false), ["アイカワ/相川、愛川", "アキラ/晶、章", "アン/杏"]], [$range(7, 12, false), ["アマミヤ/雨宮", "エイジ/映司、英治", "イノリ/祈鈴、祈"]], [$range(13, 18, false), ["イブキ/伊吹", "カズキ/和希、一輝", "エマ/英真、恵茉"]], [$range(19, 24, false), ["オガミ/尾上", "ギンガ/銀河", "カノン/花音、観音"]], [$range(25, 30, false), ["カイ/甲斐", "ケンイチロウ/健一郎", "サラ/沙羅"]], [$range(31, 36, false), ["サカキ/榊、阪木", "ゴウ/豪、剛", "シズク/雫"]], [$range(37, 42, false), ["シシド/宍戸", "ジロー/次郎、治郎", "チズル/千鶴、千尋"]], [$range(43, 48, false), ["タチバナ/橘、立花", "タケシ/猛、武", "ナオミ/直美、尚美"]], [$range(49, 54, false), ["ツブラヤ/円谷", "ツバサ/翼", "ハル/華、波留"]], [$range(55, 60, false), ["ハヤカワ/早川", "テツ/鉄、哲", "ヒカル/光"]], [$range(61, 66, false), ["ハラダ/原田", "ヒデオ/英雄", "ベニ/紅"]], [$range(67, 72, false), ["フジカワ/藤川", "マサムネ/正宗、政宗", "マチ/真知、町"]], [$range(73, 78, false), ["ホシ/星", "ヤマト/大和", "ミア/深空、美杏"]], [$range(79, 84, false), ["ミゾグチ/溝口", "リュウセイ/流星", "ユリコ/由里子"]], [$range(85, 90, false), ["ヤシダ/矢志田", "レツ/烈、裂", "ルイ/瑠衣、涙"]], [$range(91, 96, false), ["ユウキ/結城", "レン/連、錬", "レナ/玲奈"]], [$range(97, 100, false), ["名無し(何らかの理由で名前を持たない、もしくは失った)"]]]), "RNCO": $$($nesting, 'RealNameChart').$new("リアルネームチャート(海外)", ["名(男)", "名(女)", "姓"], [[$range(1, 6, false), ["アルバス", "アイリス", "アレン"]], [$range(7, 12, false), ["クリス", "オリーブ", "ウォーケン"]], [$range(13, 18, false), ["サミュエル", "カーラ", "ウルフマン"]], [$range(19, 24, false), ["シドニー", "キルスティン", "オルセン"]], [$range(25, 30, false), ["スパイク", "グウェン", "カーター"]], [$range(31, 36, false), ["ダミアン", "サマンサ", "キャラダイン"]], [$range(37, 42, false), ["ディック", "ジャスティナ", "シーゲル"]], [$range(43, 48, false), ["デンゼル", "タバサ", "ジョーンズ"]], [$range(49, 54, false), ["ドン", "ナディン", "パーカー"]], [$range(55, 60, false), ["ニコラス", "ノエル", "フリーマン"]], [$range(61, 66, false), ["ネビル", "ハーリーン", "マーフィー"]], [$range(67, 72, false), ["バリ", "マルセラ", "ミラー"]], [$range(73, 78, false), ["ビリー", "ラナ", "ムーア"]], [$range(79, 84, false), ["ブルース", "リンジー", "リーヴ"]], [$range(85, 90, false), ["マーヴ", "ロザリー", "レイノルズ"]], [$range(91, 96, false), ["ライアン", "ワンダ", "ワード"]], [$range(97, 100, false), ["名無し(何らかの理由で名前を持たない、もしくは失った)"]]])}).$freeze()); - - Opal.def(self, '$roll_hero_name_chart', $DeadlineHeroes_roll_hero_name_chart$13 = function $$roll_hero_name_chart() { - var $a, $b, $$14, self = this, dice = nil, template = nil, template_result = nil, results = nil, elements = nil, hero_name = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - template = $$($nesting, 'HERO_NAME_TEMPLATES')['$[]']($rb_minus(dice, 1)); - template_result = "" + "ヒーローネームチャート(" + (dice) + ") > " + (template['$[]']("text")); - if (template['$[]']("text")['$==']("任意")) { - return template_result}; - results = [template_result]; - elements = []; - $send(template['$[]']("elements"), 'each', [], ($$14 = function(type){var self = $$14.$$s || this, $c, $d, base_chart = nil, result = nil, element = nil; - - - - if (type == null) { - type = nil; - }; - base_chart = $$($nesting, 'HERO_NAME_BASE_CHARTS')['$[]'](type); - if ($truthy(base_chart)) { - } else { - - elements.$push(type); - return nil;; - }; - $d = base_chart.$roll(self), $c = Opal.to_ary($d), (result = ($c[0] == null ? nil : $c[0])), (element = ($c[1] == null ? nil : $c[1])), $d; - results.$push(result); - return elements.$push(element);}, $$14.$$s = self, $$14.$$arity = 1, $$14)); - hero_name = elements.$join("").$gsub(/・{2,}/, "・").$sub(/・$/, ""); - results.$push("" + "ヒーローネーム > " + (hero_name)); - return results.$join("\n"); - }, $DeadlineHeroes_roll_hero_name_chart$13.$$arity = 0); - Opal.const_set($nesting[0], 'HERO_NAME_TEMPLATES', [$hash2(["text", "elements"], {"text": "ベースA+ベースA", "elements": ["ベースA", "ベースB"]}), $hash2(["text", "elements"], {"text": "ベースB", "elements": ["ベースB"]}), $hash2(["text", "elements"], {"text": "ベースB×2回", "elements": ["ベースB", "ベースB"]}), $hash2(["text", "elements"], {"text": "ベースB+ベースC", "elements": ["ベースB", "ベースC"]}), $hash2(["text", "elements"], {"text": "ベースA+ベースB+ベースC", "elements": ["ベースA", "ベースB", "ベースC"]}), $hash2(["text", "elements"], {"text": "ベースA+ベースB×2回", "elements": ["ベースA", "ベースB", "ベースB"]}), $hash2(["text", "elements"], {"text": "ベースB×2回+ベースC", "elements": ["ベースB", "ベースB", "ベースC"]}), $hash2(["text", "elements"], {"text": "(ベースB)・オブ・(ベースB)", "elements": ["ベースB", "・オブ・", "ベースB"]}), $hash2(["text", "elements"], {"text": "(ベースB)・ザ・(ベースB)", "elements": ["ベースB", "・ザ・", "ベースB"]}), $hash2(["text", "elements"], {"text": "任意", "elements": ["任意"]})].$freeze()); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'HeroNameBaseChart'); - - var $nesting = [self].concat($parent_nesting), $HeroNameBaseChart_initialize$15, $HeroNameBaseChart_roll$16; - - self.$$prototype.items = self.$$prototype.name = nil; - - - Opal.def(self, '$initialize', $HeroNameBaseChart_initialize$15 = function $$initialize(name, items) { - var self = this; - - - self.name = name; - return (self.items = items); - }, $HeroNameBaseChart_initialize$15.$$arity = 2); - return (Opal.def(self, '$roll', $HeroNameBaseChart_roll$16 = function $$roll(bot) { - var $a, $b, self = this, dice = nil, chosen = nil, result = nil, m = nil, element_type = nil, element_chart = nil, element_result = nil; - - - $b = bot.$roll(1, 10), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - chosen = self.items['$[]']($rb_minus(dice, 1)); - result = "" + (self.name) + "(" + (dice) + ") > " + (chosen); - if ($truthy((m = chosen.$match(/^[(.+)]$/)))) { - - element_type = m['$[]'](1); - element_chart = $$($nesting, 'HERO_NAME_ELEMENT_CHARTS')['$[]'](element_type); - $b = element_chart.$roll(bot), $a = Opal.to_ary($b), (element_result = ($a[0] == null ? nil : $a[0])), (chosen = ($a[1] == null ? nil : $a[1])), $b; - result = [result, element_result].$join(" > ");}; - return [result, chosen]; - }, $HeroNameBaseChart_roll$16.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'HeroNameElementChart'); - - var $nesting = [self].concat($parent_nesting), $HeroNameElementChart_initialize$17, $HeroNameElementChart_roll$18; - - self.$$prototype.items = self.$$prototype.name = nil; - - - Opal.def(self, '$initialize', $HeroNameElementChart_initialize$17 = function $$initialize(name, items) { - var self = this; - - - self.name = name; - return (self.items = items); - }, $HeroNameElementChart_initialize$17.$$arity = 2); - return (Opal.def(self, '$roll', $HeroNameElementChart_roll$18 = function $$roll(bot) { - var $a, $b, self = this, dice = nil, chosen = nil, result = nil; - - - $b = bot.$roll(1, 10), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - chosen = self.items['$[]']($rb_minus(dice, 1)); - result = "" + (self.name) + "(" + (dice) + ") > " + (chosen['$[]']("element")) + " (意味:" + (chosen['$[]']("mean")) + ")"; - return [result, chosen['$[]']("element")]; - }, $HeroNameElementChart_roll$18.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting); - Opal.const_set($nesting[0], 'HERO_NAME_BASE_CHARTS', $hash2(["ベースA", "ベースB", "ベースC"], {"ベースA": $$($nesting, 'HeroNameBaseChart').$new("ベースA", ["ザ・", "キャプテン・", "ミスター/ミス/ミセス・", "ドクター/プロフェッサー・", "ロード/バロン/ジェネラル・", "マン・オブ・", "[強さ]", "[色]", "マダム/ミドル・", "数字(1~10)・"]), "ベースB": $$($nesting, 'HeroNameBaseChart').$new("ベースB", ["[神話/夢]", "[武器]", "[動物]", "[鳥]", "[虫/爬虫類]", "[部位]", "[光]", "[攻撃]", "[その他]", "数字(1~10)・"]), "ベースC": $$($nesting, 'HeroNameBaseChart').$new("ベースC", ["マン/ウーマン", "ボーイ/ガール", "マスク/フード", "ライダー", "マスター", "ファイター/ソルジャー", "キング/クイーン", "[色]", "ヒーロー/スペシャル", "ヒーロー/スペシャル"])}).$freeze()); - return Opal.const_set($nesting[0], 'HERO_NAME_ELEMENT_CHARTS', $hash2(["部位", "武器", "色", "動物", "神話/夢", "攻撃", "その他", "鳥", "光", "虫/爬虫類", "強さ"], {"部位": $$($nesting, 'HeroNameElementChart').$new("部位", [$hash2(["element", "mean"], {"element": "ハート", "mean": "心臓"}), $hash2(["element", "mean"], {"element": "フェイス", "mean": "顔"}), $hash2(["element", "mean"], {"element": "アーム", "mean": "腕"}), $hash2(["element", "mean"], {"element": "ショルダー", "mean": "肩"}), $hash2(["element", "mean"], {"element": "ヘッド", "mean": "頭"}), $hash2(["element", "mean"], {"element": "アイ", "mean": "眼"}), $hash2(["element", "mean"], {"element": "フィスト", "mean": "拳"}), $hash2(["element", "mean"], {"element": "ハンド", "mean": "手"}), $hash2(["element", "mean"], {"element": "クロウ", "mean": "爪"}), $hash2(["element", "mean"], {"element": "ボーン", "mean": "骨"})]), "武器": $$($nesting, 'HeroNameElementChart').$new("武器", [$hash2(["element", "mean"], {"element": "ナイヴス", "mean": "短剣"}), $hash2(["element", "mean"], {"element": "ソード", "mean": "剣"}), $hash2(["element", "mean"], {"element": "ハンマー", "mean": "鎚"}), $hash2(["element", "mean"], {"element": "ガン", "mean": "銃"}), $hash2(["element", "mean"], {"element": "スティール", "mean": "刃"}), $hash2(["element", "mean"], {"element": "タスク", "mean": "牙"}), $hash2(["element", "mean"], {"element": "ニューク", "mean": "核"}), $hash2(["element", "mean"], {"element": "アロー", "mean": "矢"}), $hash2(["element", "mean"], {"element": "ソウ", "mean": "ノコギリ"}), $hash2(["element", "mean"], {"element": "レイザー", "mean": "剃刀"})]), "色": $$($nesting, 'HeroNameElementChart').$new("色", [$hash2(["element", "mean"], {"element": "ブラック", "mean": "黒"}), $hash2(["element", "mean"], {"element": "グリーン", "mean": "緑"}), $hash2(["element", "mean"], {"element": "ブルー", "mean": "青"}), $hash2(["element", "mean"], {"element": "イエロー", "mean": "黃"}), $hash2(["element", "mean"], {"element": "レッド", "mean": "赤"}), $hash2(["element", "mean"], {"element": "バイオレット", "mean": "紫"}), $hash2(["element", "mean"], {"element": "シルバー", "mean": "銀"}), $hash2(["element", "mean"], {"element": "ゴールド", "mean": "金"}), $hash2(["element", "mean"], {"element": "ホワイト", "mean": "白"}), $hash2(["element", "mean"], {"element": "クリア", "mean": "透明"})]), "動物": $$($nesting, 'HeroNameElementChart').$new("動物", [$hash2(["element", "mean"], {"element": "バニー", "mean": "ウサギ"}), $hash2(["element", "mean"], {"element": "タイガー", "mean": "虎"}), $hash2(["element", "mean"], {"element": "シャーク", "mean": "鮫"}), $hash2(["element", "mean"], {"element": "キャット", "mean": "猫"}), $hash2(["element", "mean"], {"element": "コング", "mean": "ゴリラ"}), $hash2(["element", "mean"], {"element": "ドッグ", "mean": "犬"}), $hash2(["element", "mean"], {"element": "フォックス", "mean": "狐"}), $hash2(["element", "mean"], {"element": "パンサー", "mean": "豹"}), $hash2(["element", "mean"], {"element": "アス", "mean": "ロバ"}), $hash2(["element", "mean"], {"element": "バット", "mean": "蝙蝠"})]), "神話/夢": $$($nesting, 'HeroNameElementChart').$new("神話/夢", [$hash2(["element", "mean"], {"element": "アポカリプス", "mean": "黙示録"}), $hash2(["element", "mean"], {"element": "ウォー", "mean": "戦争"}), $hash2(["element", "mean"], {"element": "エターナル", "mean": "永遠"}), $hash2(["element", "mean"], {"element": "エンジェル", "mean": "天使"}), $hash2(["element", "mean"], {"element": "デビル", "mean": "悪魔"}), $hash2(["element", "mean"], {"element": "イモータル", "mean": "死なない"}), $hash2(["element", "mean"], {"element": "デス", "mean": "死神"}), $hash2(["element", "mean"], {"element": "ドリーム", "mean": "夢"}), $hash2(["element", "mean"], {"element": "ゴースト", "mean": "幽霊"}), $hash2(["element", "mean"], {"element": "デッド", "mean": "死んでいる"})]), "攻撃": $$($nesting, 'HeroNameElementChart').$new("攻撃", [$hash2(["element", "mean"], {"element": "ストローク", "mean": "一撃"}), $hash2(["element", "mean"], {"element": "クラッシュ", "mean": "壊す"}), $hash2(["element", "mean"], {"element": "ブロウ", "mean": "吹き飛ばす"}), $hash2(["element", "mean"], {"element": "ヒット", "mean": "打つ"}), $hash2(["element", "mean"], {"element": "パンチ", "mean": "殴る"}), $hash2(["element", "mean"], {"element": "キック", "mean": "蹴る"}), $hash2(["element", "mean"], {"element": "スラッシュ", "mean": "斬る"}), $hash2(["element", "mean"], {"element": "ペネトレイト", "mean": "貫く"}), $hash2(["element", "mean"], {"element": "ショット", "mean": "撃つ"}), $hash2(["element", "mean"], {"element": "キル", "mean": "殺す"})]), "その他": $$($nesting, 'HeroNameElementChart').$new("その他", [$hash2(["element", "mean"], {"element": "ヒューマン", "mean": "人間"}), $hash2(["element", "mean"], {"element": "エージェント", "mean": "代理人"}), $hash2(["element", "mean"], {"element": "ブースター", "mean": "泥棒"}), $hash2(["element", "mean"], {"element": "アイアン", "mean": "鉄"}), $hash2(["element", "mean"], {"element": "サンダー", "mean": "雷"}), $hash2(["element", "mean"], {"element": "ウォッチャー", "mean": "監視者"}), $hash2(["element", "mean"], {"element": "プール", "mean": "水たまり"}), $hash2(["element", "mean"], {"element": "マシーン", "mean": "機械"}), $hash2(["element", "mean"], {"element": "コールド", "mean": "冷たい"}), $hash2(["element", "mean"], {"element": "サイド", "mean": "側面"})]), "鳥": $$($nesting, 'HeroNameElementChart').$new("鳥", [$hash2(["element", "mean"], {"element": "ホーク", "mean": "鷹"}), $hash2(["element", "mean"], {"element": "ファルコン", "mean": "隼"}), $hash2(["element", "mean"], {"element": "キャナリー", "mean": "カナリア"}), $hash2(["element", "mean"], {"element": "ロビン", "mean": "コマツグミ"}), $hash2(["element", "mean"], {"element": "イーグル", "mean": "鷲"}), $hash2(["element", "mean"], {"element": "オウル", "mean": "フクロウ"}), $hash2(["element", "mean"], {"element": "レイブン", "mean": "ワタリガラス"}), $hash2(["element", "mean"], {"element": "ダック", "mean": "アヒル"}), $hash2(["element", "mean"], {"element": "ペンギン", "mean": "ペンギン"}), $hash2(["element", "mean"], {"element": "フェニックス", "mean": "不死鳥"})]), "光": $$($nesting, 'HeroNameElementChart').$new("光", [$hash2(["element", "mean"], {"element": "ライト", "mean": "光"}), $hash2(["element", "mean"], {"element": "シャドウ", "mean": "影"}), $hash2(["element", "mean"], {"element": "ファイアー", "mean": "炎"}), $hash2(["element", "mean"], {"element": "ダーク", "mean": "暗い"}), $hash2(["element", "mean"], {"element": "ナイト", "mean": "夜"}), $hash2(["element", "mean"], {"element": "ファントム", "mean": "幻影"}), $hash2(["element", "mean"], {"element": "トーチ", "mean": "灯火"}), $hash2(["element", "mean"], {"element": "フラッシュ", "mean": "閃光"}), $hash2(["element", "mean"], {"element": "ランタン", "mean": "手さげランプ"}), $hash2(["element", "mean"], {"element": "サン", "mean": "太陽"})]), "虫/爬虫類": $$($nesting, 'HeroNameElementChart').$new("虫/爬虫類", [$hash2(["element", "mean"], {"element": "ビートル", "mean": "甲虫"}), $hash2(["element", "mean"], {"element": "バタフライ/モス", "mean": "蝶/蛾"}), $hash2(["element", "mean"], {"element": "スネーク/コブラ", "mean": "蛇"}), $hash2(["element", "mean"], {"element": "アリゲーター", "mean": "ワニ"}), $hash2(["element", "mean"], {"element": "ローカスト", "mean": "バッタ"}), $hash2(["element", "mean"], {"element": "リザード", "mean": "トカゲ"}), $hash2(["element", "mean"], {"element": "タートル", "mean": "亀"}), $hash2(["element", "mean"], {"element": "スパイダー", "mean": "蜘蛛"}), $hash2(["element", "mean"], {"element": "アント", "mean": "アリ"}), $hash2(["element", "mean"], {"element": "マンティス", "mean": "カマキリ"})]), "強さ": $$($nesting, 'HeroNameElementChart').$new("強さ", [$hash2(["element", "mean"], {"element": "スーパー/ウルトラ", "mean": "超"}), $hash2(["element", "mean"], {"element": "ワンダー", "mean": "驚異的"}), $hash2(["element", "mean"], {"element": "アルティメット", "mean": "究極の"}), $hash2(["element", "mean"], {"element": "ファンタスティック", "mean": "途方もない"}), $hash2(["element", "mean"], {"element": "マイティ", "mean": "強い"}), $hash2(["element", "mean"], {"element": "インクレディブル", "mean": "凄い"}), $hash2(["element", "mean"], {"element": "アメージング", "mean": "素晴らしい"}), $hash2(["element", "mean"], {"element": "ワイルド", "mean": "狂乱の"}), $hash2(["element", "mean"], {"element": "グレイテスト", "mean": "至高の"}), $hash2(["element", "mean"], {"element": "マーベラス", "mean": "驚くべき"})])}).$freeze()); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/DemonParasite.js b/src/assets/dicebot/DemonParasite.js deleted file mode 100644 index 4d7f38b12..000000000 --- a/src/assets/dicebot/DemonParasite.js +++ /dev/null @@ -1,116 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$>=', '$count', '$==', '$include?', '$send', '$get_urge', '$match', '$[]', '$to_i', '$===', '$<', '$>', '$roll', '$-', '$freeze']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DemonParasite'); - - var $nesting = [self].concat($parent_nesting), $DemonParasite_initialize$1, $DemonParasite_check_nD6$2, $DemonParasite_rollDiceCommand$3, $DemonParasite_get_urge$4; - - - Opal.const_set($nesting[0], 'ID', "DemonParasite"); - Opal.const_set($nesting[0], 'NAME', "デモンパラサイト"); - Opal.const_set($nesting[0], 'SORT_KEY', "てもんはらさいと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・衝動表 (URGEx)\n" + " \"URGE衝動レベル\"の形で指定します。\n" + " 衝動表に従って自動でダイスロールを行い、結果を表示します。\n" + " ダイスロールと同様に、他のプレイヤーに隠れてロールすることも可能です。\n" + " 頭に識別文字を追加して、デフォルト以外の衝動表もロールできます。\n" + " ・NURGEx 頭に「N」を付けると「新衝動表」。\n" + " ・AURGEx 頭に「A」を付けると「誤作動表」。\n" + " ・MURGEx 頭に「M」を付けると「ミュータント衝動表」になります。\n" + " ・UURGEx 頭に「U」が付くと鬼御魂の戦闘外衝動表。\n" + " ・CURGEx 頭に「C」で鬼御魂の戦闘中衝動表になります。\n" + "例)URGE1   urge5   Surge2\n" + "・D66ダイスあり\n"); - self.$setPrefixes(["[NAMUC]?URGE\\d+"]); - - Opal.def(self, '$initialize', $DemonParasite_initialize$1 = function $$initialize() { - var $iter = $DemonParasite_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $DemonParasite_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $DemonParasite_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 1); - }, $DemonParasite_initialize$1.$$arity = 0); - - Opal.def(self, '$check_nD6', $DemonParasite_check_nD6$2 = function $$check_nD6(total, _dice_total, dice_list, cmp_op, target) { - var self = this; - - - if ($truthy($rb_ge(dice_list.$count(1), 2))) { - return " > 致命的失敗" - } else if ($truthy($rb_ge(dice_list.$count(6), 2))) { - return " > 効果的成功" - } else if (target['$==']("?")) { - return ""}; - if ($truthy([">=", ">"]['$include?'](cmp_op))) { - if ($truthy(total.$send(cmp_op, target))) { - return " > 成功" - } else { - return " > 失敗" - } - } else { - return nil - }; - }, $DemonParasite_check_nD6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $DemonParasite_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var self = this; - - return self.$get_urge(command) - }, $DemonParasite_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$get_urge', $DemonParasite_get_urge$4 = function $$get_urge(string) { - var $a, $b, self = this, m = nil, initialWord = nil, urgelv = nil, $case = nil, title = nil, urge = nil, dice_now = nil, resultText = nil; - - - m = /([NAMUC])?URGE\s*(\d+)/i.$match(string); - if ($truthy(m)) { - } else { - return "1" - }; - initialWord = m['$[]'](1); - urgelv = m['$[]'](2).$to_i(); - $case = initialWord; - if (nil['$===']($case)) { - title = "衝動表"; - urge = $$($nesting, 'URGE_TABLE');} - else if ("N"['$===']($case)) { - title = "新衝動表"; - urge = $$($nesting, 'NEW_URGE_TABLE');} - else if ("A"['$===']($case)) { - title = "誤作動表"; - urge = $$($nesting, 'MALFUNCTION_TABLE');} - else if ("M"['$===']($case)) { - title = "ミュータント衝動表"; - urge = $$($nesting, 'MUTANT_TABLE');} - else if ("U"['$===']($case)) { - title = "鬼御魂(戦闘外)衝動表"; - urge = $$($nesting, 'ONIMITAMA_OUT_OF_BATTLE_TABLE');} - else if ("C"['$===']($case)) { - title = "鬼御魂(戦闘中)衝動表"; - urge = $$($nesting, 'ONIMITAMA_BATTLE_TABLE');} - else {return "1"}; - if ($truthy(($truthy($a = $rb_lt(urgelv, 1)) ? $a : $rb_gt(urgelv, 5)))) { - return "衝動段階は1から5です"}; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice_now = ($a[0] == null ? nil : $a[0])), $b; - resultText = urge['$[]']($rb_minus(urgelv, 1))['$[]']($rb_minus(dice_now, 2)); - return "" + (title) + (urgelv) + "-" + (dice_now) + ":" + (resultText); - }, $DemonParasite_get_urge$4.$$arity = 1); - Opal.const_set($nesting[0], 'URGE_TABLE', [["『怒り』突然強い怒りに駆られる。近くの対象に(非暴力の)怒りを全力でぶつける。このターンの終了まで「行動不能」となる。[経験値20点]", "『絶叫』寄生生物が体内で蠢く。その恐怖に絶叫。このターンの終了まで「行動不能」となる。[経験値10点]", "『悲哀』急に悲しいことを思い出して動きが止まる。このターンの終了まで「行動不能」となる。[経験値10点]", "『微笑』可笑しくてしょうがない。くすくす笑いが止まらず、このターンの終了まで「行動不能」となる。[経験値10点]", "『鈍感』衝動に気が付かなかった。何も起こらない。[経験値0点]", "『抑制』衝動を抑え込んだ。何も起こらない。[経験値0点]", "『我慢』衝動を我慢した。何も起こらない。[経験値0点]", "『前兆』悪魔的特徴が一瞬目立つ。1ターン(10秒)持続。変身中なら影響なし。[経験値10点]", "『発現』悪魔的特徴が急に目立つ。60ターン(10分)持続。変身中なら影響なし。[経験値10点]", "『変化』利き腕/前脚が2ターン(20秒)かけて悪魔化する。18ターン(3分)持続。変身中なら影響なし。[経験値20点]", "『顕現』利き腕/前脚が瞬時に悪魔化。60ターン(10分)持続。変身中なら影響なし。[経験値20点]"], ["『茫然』思考が止まり、このターンの終了まで「攻撃」行動を行えない。回避行動に影響はない。[経験値20点]", "『激怒』側にいるもの(生物、物体問わず)が憎く、殴る。変身後ならば次のターンの終了まで、すべての命中判定+5、回避判定-5。[経験値20点]", "『残忍』殺意、破壊衝動が一瞬増す。戦闘中ならば次のターンに行われる「攻撃」行動の達成値に+5。[経験値20点]", "『落涙』過去の悲しい想い出が去来し、涙が溢れる。1ターン(10秒)「通常」行動を行えない。回避行動に影響はない。[経験値10点]", "『抑制』衝動を抑え込んだ。何も起こらない。[経験値0点]", "『我慢』衝動を我慢した。何も起こらない。[経験値0点]", "『忍耐』肉体を傷つけて衝動に耐えた。5ダメージ。[経験値10点]", "『辛抱』ほんの一瞬、全身が変身しかかる。無理に抑えたので、5ダメージ。変身中なら影響なし。[経験値10点]", "『異貌』3ターン(30秒)かけて顔が変身する。18ターン(3分)持続。変身中なら影響なし。[経験値20点]", "『苦痛』寄生生物が体内で暴れ、痛みにのけぞる。10ダメージ。[経験値20点]", "『変貌』変身後の(特異な)外見的特徴が3ターン(30秒)かけて現れる。18ターン(3分)持続。変身中なら影響なし。[経験値20点]"], ["『憤怒』怒りに全身が満たされる。次のターンの終了まで、すべてのダメージのサイコロを+1個する。[経験値20点]", "『加速』ほとばしる衝動により。次のターンは【行動値】が2倍になる。[経験値20点]", "『発露』力が溢れ出る。次のターンの終了まで、すべてのダメージに+5、防御点-5(最低0)される。[経験値20点]", "『乾き』攻撃衝動を抑えられない。次のターンの終了まで全ての命中判定+5、回避判定-5。[経験値10点]", "『絶叫』あらん限りの声で叫ぶ。このターンの終了まで、全ての回避判定に-10。[経験値10点]", "『我慢』衝動を我慢した。何も起こらない。[経験値0点]", "『限界』衝動を無理矢理抑え込む。あちこちの血管が破裂し、10ダメージ。[経験値10点]", "『解放』衝動に耐えられず変身が始まる。3ターン(30秒)かけて変身。変身中なら影響なし。[経験値10点]", "『本能』衝動に駆られ、瞬時に変身。次のターン、目の前の動くものを敵味方区別無く攻撃する。[経験値20点]", "『保身』次のターンの終了まで、敵を攻撃できない。全ての防御力に+5。[経験値20点]", "『救済』悪魔寄生体が危機を察知し、【エナジー】を20点回復する。[経験値20点]"], ["『癒し』衝動を1点使った回復を行う。[経験値20点]", "『離脱』その場から逃げ出す。逃げられない場合は、うずくまって動けなくなる。1ターン(10秒)経過すれば我に返る。[経験値20点]", "『脱力』急に力が抜ける。次のターンの終了まで、全ての判定に-5される。[経験値20点]", "『全力』激しい躁状態。次のターンの終了まで、命中判定に+10、回避判定に-10[経験値20点]", "『混沌』意味のある言葉を話せなくなる。1時間持続する。[経験値10点]", "『限界』衝動を無理矢理抑え込む。あちこちの血管が破裂し、10ダメージ。[経験値10点]", "『本能』衝動に駆られ、瞬時に変身。次のターン、目の前の動くものを敵味方区別無く攻撃する。[経験値20点]", "『焦燥』焦りから「転倒」する。[経験値20点]", "『猜疑』味方が急に敵に思える。即座に近くの味方に一回攻撃し、自動命中となる。いなければ影響なし。[経験値20点]", "『自虐』自分が許せない。自分へ攻撃(自動命中。ダメージは通常)。[経験値20点]", "『自浄』少し我に返る。衝動が2点回復する。[経験値20点]"], ["『絶望』自殺を試みる。変身中ならば最強の攻撃(特殊能力等を使用しての攻撃)を自分へ与える。[経験値30点]", "『賛美』敵(複数いる場合はリーダー格)を主と思いこむ。主が倒されるか、このターンの終了まで主の命令を聞く。[経験値30点]", "『拒絶』変身が解除される。変身していなければ影響なし。[経験値20点]", "『飢餓』近くの無防備な対象を喰らおうとする。邪魔する物は敵として攻撃する。次ターンの終了時に我に返る。[経験値20点]", "『暗闇』視神経に影響が出る。以後1日「暗闇」になる。[経験値20点]", "『混乱』意味のある言葉を話せなくなる。1時間持続する。[経験値20点]", "『嫉妬』仲間に猛烈な嫉妬を覚える。即座に一番近くの味方を攻撃。判定は自動的に効果的成功となる。いなければ影響なし。[経験値20点]", "『暴君』自分が最強に思えてしかたがない。60ターン(10分)攻撃判定の達成値に+10、回避判定の達成値は-10。[経験値20点]", "『無双』全力だが無防備。60ターン(10分)、全てのダメージに+10、防御点0、【行動値】0。[経験値20点]", "『定着』変身していなければ、即座に変身。肉体が変身に馴染んでしまう。24時間、変身が解除されなくなる。[経験値30点]", "『眠り』猛烈な睡魔に襲われる。60ターン(10分)、もしくは戦闘終了まで起こしても起きない。[経験値30点]"]].$freeze()); - Opal.const_set($nesting[0], 'NEW_URGE_TABLE', [["『開眼』潜在能力が発揮される。10分間、あらゆる戦闘以外の判定に+5。", "『集中』感覚が研ぎ澄まされる。次のターンの終了まで、射撃の命中判定に+5。", "『迅速』運動神経が上昇する。20分間、戦闘以外の【機敏】判定に+5。", "『怪力』怪力を発揮する。20分間、戦闘以外の【肉体】判定に+5。", "『鈍感』衝動に気が付かない。何も起こらない。", "『抑制』衝動を抑え込む。何も起こらない。", "『我慢』衝動を我慢する。何も起こらない。", "『無心』冷静になる。20分間、戦闘以外の【精神】判定に+5。", "『解放』感覚が解放される。20分間、戦闘以外の【感覚】判定に+5。", "『攻撃』攻撃の姿勢を取る。次のターンの終了まで、すべてのダメージが+5。", "『防御』防御の姿勢を取る。このターンの終了まで、すべての防御力が+5。"], ["『敵視』激しい攻撃本能に駆られる。次のターンの終了まで、肉弾ダメージ+10。", "『忘我』怒りに痛みを忘れる。エナジー5点回復。", "『閃き』頭が冴える。20分間、戦闘以外の【知力】判定に+5。", "『全力』筋肉のリミッターが一時的にはずれる。次のターンの終了まで、肉弾ダメージに+5。", "『抑制』衝動を抑え込む。何も起こらない。", "『我慢』衝動を我慢する。何も起こらない。", "『反射』反射神経が研ぎ澄まされる。次のターンの終了まで、射撃の回避判定に+5。", "『機転』わずかなチャンスを見逃さなくなる。20分間、戦闘以外の【幸運】判定に+5。", "『耐性』精神力が上昇する。次のターンの終了まで、特殊防御力+5。", "『怒り』敵に対する怒りにとらわれる。次のターンの終了まで、肉弾の命中判定に+10。", "『活発』明るく活発になる。戦闘終了まで【行動値】+5。"], ["『漲り』体の奥底から力がみなぎってくる。エナジー10点回復。", "『分析』相手の動きを冷静に分析できるようになる。5ターンの間、射撃ダメージに+10。", "『慈愛』万人に対して慈愛を感じるようになる。5ターンの間、回復に振るダイスが+1d。", "『慎重』敵の攻撃に慎重になる。次のターンの終了まで、すべての回避判定に+5。", "『本能』攻撃本能がむき出しになる。5ターンの間、特殊の命中判定に+5。", "『性急』気が早くなる。次のターンの終了まで、【行動値】に+3", "『凶暴』イライラが止まらなくなる。5ターンの間、肉弾の命中判定に+5。", "『楽観』気分がリラックスする。エナジー5点回復。", "『自閉』自分の殻に閉じこもろうとする。5ターンの間、特殊防御力に+5。", "『反射』敵の攻撃に即座に反応できる。5ターンの間、肉弾の回避判定に+10。", "『快感』快感を覚える。衝動が1点回復する。"], ["『情熱』激しい情熱が噴き出してくる。エナジー10点と衝動1点回復。", "『気合』体中に気合いが入る。10ターンの間、すべてのダメージに+10。", "『加速』体中の神経が加速する。10ターンの間、すべての命中判定に+10。", "『利己』考え方が利己的になる。10ターンの間、特殊の命中判定に+10。", "『頑強』肉体が鋼のように強くなる。10ターンの間、肉弾防御力に+5。", "『察知』相手の動きを察知できる。10ターンの間、射撃防御力に+5。", "『殺意』激しい殺意にとらわれる。10ターンの間、特殊ダメージに+10。", "『静観』心が落ち着き冷静になる。10ターンの間、射撃の回避判定に+5。", "『是空』頭が冴えて敵の行動が読める。10ターンの間、すべての回避判定に+5。", "『心眼』心の目で相手の行動を読める。5ターンの間、射撃の回避判定に+10。", "『自愛』何をおいても自分が愛しく思える。5ターンの間、特殊の回避判定に+10。"], ["『神速』人知を超えたスピードに目覚める。戦闘終了まで「通常」行動を2回行えるようになる。", "『流水』超感覚に目覚める。10ターンの間、すべての回避判定に+10。", "『覚醒』肉体の回復力が限界突破。エナジー20点回復。", "『忍耐』あらゆる苦痛に耐える鋼の精神が宿る。10ターンの間、すべての防御力に+5。", "『予知』第六感が研ぎ澄まされる。10ターンの間、射撃の命中とダメージに+10。", "『豪傑』身体能力が限界を超えて上昇する。10ターンの間、肉弾の命中とダメージに+10。", "『殺気』猛烈な殺意がみなぎる。10ターンの間、特殊の命中判定とダメージに+10。", "『発動』反射神経が飛躍的に加速される。10ターンの間、【行動値】+10。", "『激情』激しい感情があふれ出す。10ターンの間、すべてのダメージに+10。", "『超人』運動神経が飛躍的に加速される。10ターンの間、すべての命中判定に+15。", "『悟り』心が解放され無我の境地に達する。衝動が3点回復する"]].$freeze()); - Opal.const_set($nesting[0], 'MALFUNCTION_TABLE', [["『緊急停止』機能に異常発生。次のターンの終了まで、「行動不能」になる。[30点]", "『動力不調』動力装置に異常発生。このターンの終了時まで、「行動不能」になる。[30点]", "『腕部停止』腕部機構に異常発生。このターンの終了時まで、「タイミング:攻撃」が行えない。[20点]", "『脚部停止』脚部機構に異常発生。このターンの終了時まで、あらゆる「移動」を行えない。[20点]", "『機能制動』機能が一瞬停止するが、影響なし。[10点]", "『不良調整』機能に違和感。影響なし。[10点]", "『機能安定』機能が安定した。影響なし。[10点]", "『機能暴発』直前に使用した《兵装》がこのターンの終了時まで使用不能。未使用なら影響なし。[20点]", "『離脱機能』機能の異常発生。行動を消費することなく、即座に敵から「移動(全力)」で離れる。[20点]", "『排熱暴走』排熱機能に異常発生。次のターン終了時まで「着火」状態となる。[30点]", "『作動予測』次に起きる誤作動を予測できる。「第2限界点」に達したとき、「作動予測」以外の任意の誤作動を選択できる。[30点]"], ["『安全機能』安全機能が作動。このターンの終了時まで、あらゆる判定に-5。[40点]", "『筋肉萎縮』人工筋肉に異常発生。次のターン終了時まで、【肉体】判定に-2。[30点]", "『出力低下』駆動部に異常発生。次のターンの終了時まで、【機敏】判定に-2。[30点]", "『感覚異常』視界機能に異常発生。次のターンの終了時まで、【感覚】判定に-2。[20点]", "『視界不良』視界機能に異常発生。次のターンの終了時まで、【幸運】判定に-2。[20点]", "『機能制動』機能が一瞬停止するが、影響なし。[10点]", "『不良調整』機能に違和感。影響なし。[10点]", "『援護不通』援護ソフトが誤作動。次のターンの終了時まで、【知力】判定-2。[20点]", "『発声変調』発声機能に異常発生。次のターンの終了時まで、【精神】判定-2。[30点]", "『装甲軟化』防御機構に異常発生。あらゆる防御力に-5。[30点]", "『作動予測』次に起きる誤作動を予測できる。「第3限界点」に達したとき、「作動予測」以外の任意の誤作動を選択できる。[40点]"], ["『動力漏電』動力から漏電。『負荷』が2点上昇。[40点]", "『駆動異常』脚部に異常発生。次のターンの終了時まで、「移動」距離半減。[40点]", "『足下転倒』バランサーに異常発生。「転倒」状態となる。[30点]", "『出力向上』《兵装》機能が向上。次のターンの終了時まで、特殊ダメージに+1d点。[30点]", "『機能制動』機能が一瞬停止するが、影響なし。[20点]", "『機能暴走』攻撃機能が暴走し、戦闘能力が上昇。「着火」状態になるが、あらゆるダメージに+10。[20点]", "『身体向上』格闘機能が向上。次のターンの終了時まで、肉弾ダメージに+1d点。[30点]", "『反射向上』反応速度が向上。次のターンの終了時まで、【行動値】が+5。[30点]", "『精度向上』標準機能が向上。次のターンの終了時まで、射撃ダメージに+1d点。[30点]", "『電子賦活』電磁障壁が突如回復。【電力】が10点回復する。[30点]", "『作動予測』次に起きる誤作動を予測できる。「第4限界点」に達したとき、「作動予測」以外の任意の誤作動を選択できる。[40点]"], ["『照準誤認』照準機能に異常発生。即座に最も近い味方を全力攻撃。[50点]", "『攻撃特化』攻撃機能が上昇。次のターン終了時まで、あらゆるダメージに+2dされるが「タイミング:防御」を行えない。[40点]", "『機内窒息』呼吸補助機能に異常発生。次のターン終了時まで、「窒息」状態。[40点]", "『機能増強』全機能が飛躍的に向上。次のターン終了時まで、《兵装》のコストを払わなくて良い。[30点]", "『音声遮断』聴覚機能に異常発生。次のターン終了時まで、一切の物音が聞こえず、あらゆる回避判定に-5。[30点]", "『電流加速』電磁障壁が効率的に流れる。『負荷』が1点回復。[20点]", "『精密射撃』照準の精度が向上。あらゆるダメージに+5点。[30点]", "『電力浪費』電磁障壁が過剰に使用される。【電力】が10点減少。[30点]", "『荷電暴走』【電力】を5点消費するが、次のターン終了時まで、あらゆるダメージに+10点。[40点]", "『状況分析』視界機能が向上。あらゆる命中判定に+5。[40点]", "『作動予測』次に起きる誤作動を予測できる。「第5限界点」に達したとき、「作動予測」以外の任意の誤作動を選択できる。[50点]"], ["『出力過剰』全出力が過剰。次のターン終了時まで、あらゆるダメージの総計が2倍になるが《兵装》のコストも2倍になる。[50点]", "『機関暴走』放熱機能が暴走。自分を中心に半径5m以内すべての対象を「着火」状態にする。[50点]", "『機体清冽』機能異常から復帰。「気絶」「死亡」を除く、あらゆる状態変化がすべて消滅。[40点]", "『鉄壁装甲』防御機能が向上。次のターン終了時まで、あらゆる防御力に+5。[30点]", "『緊急駆動』回避機能が向上。次のターン終了時まで、あらゆる回避判定に+5。[30点]", "『出力増大』装備補助機能が向上。次のターン終了時まで、「所持品」あるいは《兵装》を使用したダメージ総計が2倍になる。[30点]", "『機体加速』運動機能が暴走。次のターン終了時まで、【行動値】が2倍となる。[30点]", "『自動追尾』自動追尾機能が発動。次のターン終了時まで、あらゆる命中値に+5。[40点]", "『限定解除』全機能の限界を解除。次のターン終了時まで、あらゆるダメージに+10。[50点]", "『負荷軽減』急激に機体の負荷が低下。『負荷』が2点回復する。[50点]", "『複合反応』この表を2回振る。ただし、同じ結果が出た場合は適用するのは一度だけ。獲得経験値は累積する。[0点]"]].$freeze()); - Opal.const_set($nesting[0], 'MUTANT_TABLE', [["『怒り』突然強い怒りに駆られる。近くの対象にあたりちらす。このターンの終了まで「行動不能」となる。[20点]", "『絶叫』悪魔寄生体が蠢きだす。その恐怖に絶叫。このターンの終了まで「行動不能」となる。[10点]", "『悲哀』急に悲しいことを思い出す。このターンの終了まで「行動不能」となる。[10点]", "『微笑』可笑しくてしょうがない。くすくす笑いが止まらず、このターンの終了まで「行動不能」となる。[10点]", "『鈍感』衝動に気が付かなかった。何も起こらない。[0点]", "『抑制』衝動を抑え込んだ。何も起こらない。[0点]", "『我慢』衝動を我慢した。何も起こらない。[0点]", "『前兆』悪魔的特徴が一瞬目立つ。1ターン(10秒)持続。《擬態変化》を解いているなら影響なし。[10点]", "『発現』悪魔的特徴が急に目立つ。60ターン(10分)持続。《擬態変化》を解いているなら影響なし。[10点]", "『解除』利き腕/前脚の《擬態変化》が2ターン(20秒)かけて解除される。18ターン(3分)持続。《擬態変化》を解いているなら影響なし。[20点]", "『顕現』利き腕/前脚の《擬態変化》が瞬時に解除。60ターン(10分)持続。《擬態変化》を解いているなら影響なし。[20点]"], ["『茫然』思考が止まり、このターンの終了まで「攻撃」行動を行えない。その他の行動は影響なし。[20点]", "『激怒』側にいるもの(生物、物体問わず)が憎くなり、殴る。《擬態変化》を解いているならば次のターンの終了まで、すべての命中判定+5、回避判定-5。[20点]", "『残忍』殺意、破壊衝動が一瞬増す。戦闘中ならば次のターンに行われる「攻撃」行動の達成値に+5。[20点]", "『落涙』過去の悲しい想い出が去来し、涙が溢れる。1ターン(10秒)「通常」行動を行えない。その他の行動に影響はない。[10点]", "『抑制』衝動を抑え込んだ。何も起こらない。[0点]", "『我慢』衝動を我慢した。何も起こらない。[0点]", "『忍耐』肉体を傷つけて衝動に耐えた。5点ダメージ。[10点]", "『辛抱』ほんの一瞬、《擬態変化》が解けかかる。無理に抑えたので5点ダメージ。《擬態変化》を解いているなら影響なし。[10点]", "『異貌』3ターン(30秒)かけて《擬態変化》が解除される。18ターン(3分)持続。《擬態変化》を解いているなら影響なし。[20点]", "『苦痛』寄生生物が体内で暴れ狂う。10点ダメージ。[20点]", "『変貌』特異な外見的特徴が3ターン(30秒)かけて現れる。18ターン(3分)持続。《擬態変化》を解いているなら影響なし。[20点]"], ["『憤怒』怒りに全身が満たされる。次のターンの終了まで、すべてのダメージを+1d点する。[20点]", "『加速』ほとばしる衝動により。次のターンは【行動値】が2倍になる。[20点]", "『発露』力が溢れ出る。次のターンの終了まで、すべてのダメージに+5、防御点-5(最低0)される。[20点]", "『乾き』攻撃衝動を抑えられない。次のターンの終了まで全ての命中判定+5、回避判定-5。[10点]", "『絶叫』あらん限りの声で叫ぶ。このターンの終了まで、あらゆる回避判定に-10。[10点]", "『我慢』衝動を我慢した。何も起こらない。[0点]", "『限界』衝動を無理矢理抑え込む。10点ダメージ。[10点]", "『解放』衝動に耐えられず擬態が解ける。3ターン(30秒)かけて解除。《擬態変化》を解いているなら影響なし。[10点]", "『本能』衝動に駆られ、《擬態変化》が瞬時に解除。次のターンは、目の前の動くものを敵味方区別無く攻撃する。[20点]", "『保身』次のターンの終了まで、敵を攻撃できない。全ての防御力に+5。[20点]", "『救済』悪魔寄生体が危機を察知し、【エナジー】を20点回復する。[20点]"], ["『癒し』【エナジー】が即座に3d点回復。[20点]", "『離脱』その場から逃げ出す。逃げられない場合は、うずくまって動けなくなる。1ターン(10秒)経過すれば我に返る。[20点]", "『脱力』急に力が抜ける。次のターンの終了まで、全ての判定に-5される。[20点]", "『全力』激しい躁状態。次のターンの終了まで、命中判定に+10、回避判定に-10。[20点]", "『混沌』1時間の間、意味のある言葉を話せなくなる。[10点]", "『争乱』体内で共生生物同士が争い、暴れ回る。衝動が1点増える。[10点]", "『本能』衝動に駆られ、《擬態変化》が瞬時に解除。次のターン、目の前の動くものを敵味方区別無く攻撃する。[20点]", "『焦燥』焦りから「転倒」する。[20点]", "『猜疑』味方が急に敵に思える。即座に近くの味方に1回攻撃(自動命中。ダメージは通常)。いなければ影響なし。[20点]", "『自虐』自分が許せない。自分へ素手攻撃(自動命中。ダメージは通常)。[20点]", "『自浄』少し我に返る。衝動が2点回復する。[20点]"], ["『絶望』無力感にさいなまれる。次のターンの終了時まで「行動不能」となる。[30点]", "『眠り』猛烈な睡魔に襲われる。60ターン(10分)、もしくは戦闘終了まで起こしても起きない。[30点]", "『誤動』突然《擬態変化》が使用され、人間の姿になる(衝動も通常通り使用する)。既に使用していた場合は変化無し。[20点]", "『暗闇』視神経に影響が出る。以後1日「暗闇」になる。[20点]", "『再生』共生生物が危機を察知し、【エナジー】を10点回復する。[20点]", "『混乱』1時間の間、意味のある言葉を話せなくなる。[20点]", "『硬化』急に体が硬直する。このターンの終了時まで、あらゆる命中判定に-10、防御力に+10。[20点]", "『暴君』自分が最強に思えてしかたがない。60ターン(10分)攻撃判定に+10、回避判定に-10。[20点]", "『無双』全力だが無防備。60ターン(10分)、全てのダメージに+10、防御点と【行動値】は0。[20点]", "『喪失』《擬態変化》が使用中なら、即座に解除。さらに24時間、《擬態変化》が使えなくなる。[30点]", "『進化』共生生物たちが上手く混じって身体能力が向上する。次の判定の達成値+10。[30点]"]].$freeze()); - Opal.const_set($nesting[0], 'ONIMITAMA_OUT_OF_BATTLE_TABLE', [["『恐怖』恐怖の感情が爆発し、目に映るすべてが恐ろしくなる。[20点]", "『落涙』過去の悲しい思い出が去来し、涙が溢れる。[10点]", "『哄笑』突如として精神が高揚し、狂ったように笑う。[10点]", "『咆哮』<和魂>によって怒りが増し、突如として雄たけびを上げる。[10点]", "『抑制』衝動を完全に律する。何も起こらない。[0点]", "『沈静』穏やかな気分になる。[0点]", "『理性』衝動を理性で押さえ込む。何も起こらない。[0点]", "『破裂』衝動を押さえ込もうとして体内の欠陥が破裂、喀血する。[10点]", "『喪失』一瞬、〈和魂〉の神通力が失われる。[10点]", "『枯渇』吸血への渇望が押さえられず、一般人を血走った目で見つめる。[10点]", "『内包』凄まじい勢いで体内に妖気が内包され、力が増す。[20点]"], ["『飢餓』突然の吸血衝動。一般人を猛烈に襲いたくなる。[20点]", "『封印』妖気を操作できず、1分間《特殊能力》を使用できない。[20点]", "『拒絶』情緒が不安定となり、味方が急に怖くなる。[20点]", "『拡散』突如として全身から妖気が噴出、目の前の対象を吹き飛ばす。[10点]", "『抑制』衝動を完全に律する。なにも起こらない。[0点]", "『治癒』疲れが癒される。[0点]", "『本能』暴力衝動に駆られ、瞬時に\"異形化\"してしまう。[10点]", "『破砕』破壊衝動が巻き起こり、目の前の障害物を破壊する。[20点]", "『悪寒』突如として悪寒が走り、物事に集中できなくなる。", "『心傷』突如としてトラウマを思い出し、立ちつくす。[20点]", "『回想』過去の思い出が去来、活力がみなぎる。[30点]"], ["『不動』妖気が全身を駆け巡り、激痛によって動けなくなる。[20点]", "『脱力』突如として妖気が衰え、脱力のあまり膝をつく。[20点]", "『異形』瞬時にして犬歯が肥大し、目が紅く、邪悪に輝く。[20点]", "『精密』突如として視界が広がり、目視せずとも背後の風景や人物を見通せる。[10点]", "『獰猛』突如として怒りの感情が湧き起こり、目前の対象を罵倒する。[0点]", "『高揚』〈和魂〉の影響により精神が高揚、躁状態となる。[0点]", "『憎悪』突如として憎悪が沸き起こり、目前の対象に掴みかかる。[0点]", "『加速』全身に妖気が駆け巡り、反射速度が増し、10秒を1分のように感じる。[10点]", "『平穏』精神に変調が起こり、異常なほど理性的になる。[20点]", "『慈愛』あらゆる者に自愛を抱き、親身に接する。[20点]", "『支配』一瞬〈和魂〉を完全支配、次に行う戦闘外の判定を1回だけ効果的成功する。[20点]"], ["『変質』突如として妖気が変質、半径5mにわたって透明な壁を展開する。[30点]", "『増強』妖気によって身体能力が増強され、10分間[運動]上級を取得する。[20点]", "『拡大』妖気が目視できるほど両腕から発散、20m先の物体を操作できる。[20点]", "『清浄』妖気を開放、<鬼御魂>を持たない半径10m内全ての生物を眠らせる。[10点]", "『透視』濃密な妖気が瞳に宿り、1分間20mの距離を透視できる。[10点]", "『強行』突如として妖気が増し、接触した対象を【肉体】x2m吹き飛ばす。[0点]", "『衝撃』妖気が殺傷能力を帯び、接触した物体を破壊。20秒間、手足が簡易の肉弾武器となる。[10点]", "『撃滅』妖気が稲妻や火災へと変異し、接触した物体を「着火」させる。[20点]", "『展開』全身を包む妖気の層が厚くなり、1分間物理的な接触を行えない。[20点]", "『模倣』<和魂>が精神を活性化させ、異常な記憶力を手に入れる。[20点]", "『支配』一瞬<和魂>を完全支配、次に行う戦闘外の判定を1回だけ効果的成功する。[20点]"], ["『解放』妖気を無尽蔵に解放、1分間、戦闘外で使用する「コスト」を無視できる。[30点]", "『加速』妖気が両足に集中、1分間、時速50kmで疾走できる。[20点]", "『付与』妖気が感覚に集中、1分間50m先を透視できる。[20点]", "『強固』妖気が全身に浸透、1分間「窒息」「状態変化」のダメージを無効。[20点]", "『破壊』全妖気が膂力に変換され、1分間【肉体】判定の達成値を2倍にする。[20点]", "『爆散』1分間妖気が変質、接触した対象を爆破でき、障害物を瞬時に破壊。[10点]", "『浄化』半径10m全てを浄化、範囲内で持続する《特殊能力》の効果を無効化。[20点]", "『律動』半径10m内の<鬼御魂>を持たない生物を1分間気絶させる。[20点]", "『修復』妖気が極限まで活性化され、疲労を取り払う。[20点]", "『本性』瞬時に異形化。異形化中であれば、さらに禍々しい姿へ変質する。[20点]", "『覚醒』1時間、全身から閃光を発し、高さが【精神】mの\"光の柱\"に包まれる。[30点]"]].$freeze()); - return Opal.const_set($nesting[0], 'ONIMITAMA_BATTLE_TABLE', [["『恐怖』効果が発生したターンの終了時まで「行動不能」状態となる。", "『落涙』1ターン(10秒)「通常」行動を行えない。回避行動に影響はない。", "『哄笑』効果が発生したターンの終了時まで「行動不能」となる。", "『咆哮』効果が発生したターンの終了時まで「行動不能」となる。", "『抑制』影響なし。", "『沈静』【エナジー】を3点回復する。", "『理性』影響なし。", "『破裂』【エナジー】が5点減少する。", "『喪失』次ターンの【行動値】が半減(端数切捨て)。", "『枯渇』次ターンの終了時まで、あらゆるダメージに「+2」点。", "『内包』『衝動』が2点回復する。"], ["『飢餓』最も近くの無防備な対象から血液摂取を試みる。対象が<鬼御魂>を持たない場合、血液採取の効果を得られる。", "『封印』効果が発生したターンの終了時まで《特殊能力》を使用できない。", "『拒絶』効果が発生したターンの終了時まで、味方を対象とした《特殊効果》を使用不可。", "『拡散』半径5m以内の対象全ての【エナジー】を1d点減少する(抵抗不可、防御力無視)。", "『抑制』影響なし。", "『治癒』【エナジー】を5点回復する。", "『本能』即座に\"異形化\"、ターン終了まで任意のダメージ1つに「+1d」点。", "『破砕』行動を消費することなく、近くに存在する障害物1つを瞬時に破壊。", "『悪寒』効果が発生したターンの終了時まで、あらゆる判定の達成値に「-5」。", "『心傷』効果が発生したターンの終了時まで、「タイミング:攻撃」を行えない。", "『回想』『衝動』を3点回復する。"], ["『不動』次のターンの終了時まで「タイミング:通常」を行えない。", "『脱力』次のターンの終了時まで「転倒」状態となる。", "『異形』次に行う行為判定は、出目に関係なく効果的成功として扱う。", "『精密』次のターンの終了時まで、射撃ダメージに「+5」点。", "『獰猛』次のターンの終了時まで、肉弾ダメージに「+5」点。", "『高揚』次のターンの終了時まで、あらゆるダメージに「+1d」点。", "『憎悪』次のターンの終了時まで、特殊ダメージに「+5」点。", "『加速』次のターンの終了時まで【行動値】に「+5」。", "『平穏』あらゆる「状態変化」を任意で1つ消滅させる。", "『慈愛』半径5m内の味方全ての【エナジー】を5点回復する。", "『支配』「衝動表」の結果を、第三段階の中から任意のものから1つ選択できる。"], ["『変質』次のターンの終了時まで、任意の防御力の1つに「+10」点。", "『増強』次のターンの終了時まで、任意の回避判定1つに「+5」。", "『拡大』次のターンの終了時まで、任意の命中判定1つに「+5」。", "『清浄』半径10m内の味方全ての【エナジー】を5点回復する。", "『透視』次のターン終了時まで、射撃ダメージに「+10」点。", "『強行』次のターンは、「タイミング:攻撃」を余分に1回行うことができる。", "『衝撃』次のターンの終了時まで、肉弾ダメージに「+10」点。", "『撃滅』次のターンの終了時まで、特殊ダメージに「+10」点。", "『展開』次のターンの終了時まで、本人が受けるあらゆるダメージを半減できる。", "『模倣』次のターンの終了時まで、敵が使用した《特殊能力》1つを1回だけ使用可能。", "『支配』「衝動表」の結果を、第四段階の中から任意のものから1つ選択できる。"], ["『解放』次のターンの終了時まで、あらゆる戦闘修正が2倍となる。", "『加速』次のターンの終了時まで、【行動値】が2倍となる。", "『付与』次のターンの終了時まで、射撃ダメージの総計を2倍にできる。", "『強固』次のターンの終了時まで、あらゆる防御力に「+10」点。", "『破壊』次のターンの終了時まで、肉弾ダメージの総計を2倍にできる。", "『爆散』次のターンの終了時まで、あらゆるダメージに「+2d」点。", "『浄化』『衝動』を1d点回復する。", "『律動』次のターンの終了時まで、特殊ダメージの総計を2倍にできる。", "『修復』【エナジー】が最大値まで回復する。", "『本性』この戦闘中のみ、最終能力を2回使用できる。", "『覚醒』第五段階を2回振り、双方の効果を適応する。"]].$freeze()); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/DetatokoSaga.js b/src/assets/dicebot/DetatokoSaga.js deleted file mode 100644 index 1e0193c00..000000000 --- a/src/assets/dicebot/DetatokoSaga.js +++ /dev/null @@ -1,272 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$debug', '$checkRoll', '$empty?', '$checkJudgeValue', '$rollTableCommand', '$=~', '$to_i', '$last_match', '$nil?', '$getRollResult', '$+', '$getSuccess', '$getCheckFlagResult', '$==', '$times', '$roll', '$[]=', '$join', '$sort', '$!=', '$reverse', '$[]', '$>=', '$>', '$getDownWill', '$getModifyText', '$getTotalResultValue', '$===', '$-', '$getTotalResultValueWhenSlash', '$ceil', '$/', '$*', '$upcase', '$choiceStrengthStigmaTable', '$choiceWillStigmaTable', '$choiceStrengthBadEndTable', '$choiceWillBadEndTable', '$get_table_by_2d6']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DetatokoSaga'); - - var $nesting = [self].concat($parent_nesting), $DetatokoSaga_initialize$1, $DetatokoSaga_rollDiceCommand$2, $DetatokoSaga_checkRoll$3, $DetatokoSaga_getRollResult$4, $DetatokoSaga_getSuccess$6, $DetatokoSaga_getCheckFlagResult$7, $DetatokoSaga_getDownWill$8, $DetatokoSaga_checkJudgeValue$9, $DetatokoSaga_getModifyText$10, $DetatokoSaga_getTotalResultValue$11, $DetatokoSaga_getTotalResultValueWhenSlash$12, $DetatokoSaga_rollTableCommand$13, $DetatokoSaga_choiceStrengthStigmaTable$14, $DetatokoSaga_choiceWillStigmaTable$15, $DetatokoSaga_choiceStrengthBadEndTable$16, $DetatokoSaga_choiceWillBadEndTable$17; - - - Opal.const_set($nesting[0], 'ID', "DetatokoSaga"); - Opal.const_set($nesting[0], 'NAME', "でたとこサーガ"); - Opal.const_set($nesting[0], 'SORT_KEY', "てたとこさあか"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・通常判定 xDS or xDSy or xDS>=z or xDSy>=z\n" + " (x=スキルレベル、y=現在フラグ値(省略時0)、z=目標値(省略時8))\n" + " 例)3DS 2DS5 0DS 3DS>=10 3DS7>=12\n" + "・判定値 xJD or xJDy or xJDy+z or xJDy-z or xJDy/z\n" + " (x=スキルレベル、y=現在フラグ値(省略時0)、z=修正値(省略時0))\n" + " 例)3JD 2JD5 3JD7+1 4JD/3\n" + "・体力烙印表 SST (StrengthStigmaTable)\n" + "・気力烙印表 WST (WillStigmaTable)\n" + "・体力バッドエンド表 SBET (StrengthBadEndTable)\n" + "・気力バッドエンド表 WBET (WillBadEndTable)\n"); - self.$setPrefixes(["\\d+DS.*", "\\d+JD.*", "SST", "StrengthStigmaTable", "WST", "WillStigmaTable", "SBET", "StrengthBadEndTable", "WBET", "WillBadEndTable"]); - - Opal.def(self, '$initialize', $DetatokoSaga_initialize$1 = function $$initialize() { - var $iter = $DetatokoSaga_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $DetatokoSaga_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $DetatokoSaga_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $DetatokoSaga_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $DetatokoSaga_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, result = nil; - - - self.$debug("rollDiceCommand begin string", command); - result = ""; - result = self.$checkRoll(command); - if ($truthy(result['$empty?']())) { - } else { - return result - }; - result = self.$checkJudgeValue(command); - if ($truthy(result['$empty?']())) { - } else { - return result - }; - self.$debug("各種表として処理"); - return self.$rollTableCommand(command); - }, $DetatokoSaga_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$checkRoll', $DetatokoSaga_checkRoll$3 = function $$checkRoll(string) { - var $a, $b, self = this, target = nil, skill = nil, flag = nil, result = nil, total = nil, rollText = nil, success = nil; - - - self.$debug("checkRoll begin string", string); - if ($truthy(/^(\d+)DS(\d+)?((>=)(\d+))?$/i['$=~'](string))) { - } else { - return "" - }; - target = 8; - skill = $$($nesting, 'Regexp').$last_match(1).$to_i(); - flag = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($$($nesting, 'Regexp').$last_match(5)['$nil?']())) { - } else { - target = $$($nesting, 'Regexp').$last_match(5).$to_i() - }; - result = "" + "判定! スキルレベル:" + (skill) + " フラグ:" + (flag) + " 目標値:" + (target); - $b = self.$getRollResult(skill), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (rollText = ($a[1] == null ? nil : $a[1])), $b; - result = $rb_plus(result, "" + " > " + (total) + "[" + (rollText) + "] > 判定値:" + (total)); - success = self.$getSuccess(total, target); - result = $rb_plus(result, "" + " > " + (success)); - result = $rb_plus(result, self.$getCheckFlagResult(total, flag)); - return result; - }, $DetatokoSaga_checkRoll$3.$$arity = 1); - - Opal.def(self, '$getRollResult', $DetatokoSaga_getRollResult$4 = function $$getRollResult(skill) { - var $$5, self = this, diceCount = nil, dice = nil, diceText = nil, total = nil; - - - diceCount = $rb_plus(skill, 1); - if (skill['$=='](0)) { - diceCount = 3}; - dice = []; - $send(diceCount, 'times', [], ($$5 = function(i){var self = $$5.$$s || this, $a, $b; - - - - if (i == null) { - i = nil; - }; - return $b = self.$roll(1, 6), $a = Opal.to_ary($b), dice['$[]='](i, ($a[0] == null ? nil : $a[0])), $b;}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - diceText = dice.$join(","); - dice = dice.$sort(); - if ($truthy(skill['$!='](0))) { - dice = dice.$reverse()}; - total = $rb_plus(dice['$[]'](0), dice['$[]'](1)); - return [total, diceText]; - }, $DetatokoSaga_getRollResult$4.$$arity = 1); - - Opal.def(self, '$getSuccess', $DetatokoSaga_getSuccess$6 = function $$getSuccess(check, target) { - var self = this; - - - if ($truthy($rb_ge(check, target))) { - return "目標値以上!【成功】"}; - return "目標値未満…【失敗】"; - }, $DetatokoSaga_getSuccess$6.$$arity = 2); - - Opal.def(self, '$getCheckFlagResult', $DetatokoSaga_getCheckFlagResult$7 = function $$getCheckFlagResult(total, flag) { - var self = this, willText = nil, result = nil; - - - if ($truthy($rb_gt(total, flag))) { - return ""}; - willText = self.$getDownWill(flag); - result = "" + "、フラグ以下!【気力" + (willText) + "点減少】"; - result = $rb_plus(result, "【判定値変更不可】"); - return result; - }, $DetatokoSaga_getCheckFlagResult$7.$$arity = 2); - - Opal.def(self, '$getDownWill', $DetatokoSaga_getDownWill$8 = function $$getDownWill(flag) { - var $a, $b, self = this, dice = nil; - - - if ($truthy($rb_ge(flag, 10))) { - return "6"}; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - return "" + "1D6->" + (dice); - }, $DetatokoSaga_getDownWill$8.$$arity = 1); - - Opal.def(self, '$checkJudgeValue', $DetatokoSaga_checkJudgeValue$9 = function $$checkJudgeValue(string) { - var $a, $b, self = this, skill = nil, flag = nil, operator = nil, value = nil, result = nil, modifyText = nil, total = nil, rollText = nil, totalResult = nil; - - - self.$debug("checkJudgeValue begin string", string); - if ($truthy(/^(\d+)JD(\d+)?(([+]|[-]|[\/])(\d+))?$/i['$=~'](string))) { - } else { - return "" - }; - skill = $$($nesting, 'Regexp').$last_match(1).$to_i(); - flag = $$($nesting, 'Regexp').$last_match(2).$to_i(); - operator = $$($nesting, 'Regexp').$last_match(4); - value = $$($nesting, 'Regexp').$last_match(5).$to_i(); - result = "" + "判定! スキルレベル:" + (skill) + " フラグ:" + (flag); - modifyText = self.$getModifyText(operator, value); - if ($truthy(modifyText['$empty?']())) { - } else { - result = $rb_plus(result, "" + " 修正値:" + (modifyText)) - }; - $b = self.$getRollResult(skill), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (rollText = ($a[1] == null ? nil : $a[1])), $b; - result = $rb_plus(result, "" + " > " + (total) + "[" + (rollText) + "]" + (modifyText)); - totalResult = self.$getTotalResultValue(total, value, operator); - result = $rb_plus(result, "" + " > " + (totalResult)); - result = $rb_plus(result, self.$getCheckFlagResult(total, flag)); - return result; - }, $DetatokoSaga_checkJudgeValue$9.$$arity = 1); - - Opal.def(self, '$getModifyText', $DetatokoSaga_getModifyText$10 = function $$getModifyText(operator, value) { - var self = this, operatorText = nil, $case = nil; - - - if (value['$=='](0)) { - return ""}; - operatorText = (function() {$case = operator; - if ("+"['$===']($case)) {return "+"} - else if ("-"['$===']($case)) {return "-"} - else if ("/"['$===']($case)) {return "÷"} - else {return ""}})(); - return "" + (operatorText) + (value); - }, $DetatokoSaga_getModifyText$10.$$arity = 2); - - Opal.def(self, '$getTotalResultValue', $DetatokoSaga_getTotalResultValue$11 = function $$getTotalResultValue(total, value, operator) { - var self = this, $case = nil; - - return (function() {$case = operator; - if ("+"['$===']($case)) {return "" + (total) + "+" + (value) + " > 判定値:" + ($rb_plus(total, value))} - else if ("-"['$===']($case)) {return "" + (total) + "-" + (value) + " > 判定値:" + ($rb_minus(total, value))} - else if ("/"['$===']($case)) {return self.$getTotalResultValueWhenSlash(total, value)} - else {return "" + "判定値:" + (total)}})() - }, $DetatokoSaga_getTotalResultValue$11.$$arity = 3); - - Opal.def(self, '$getTotalResultValueWhenSlash', $DetatokoSaga_getTotalResultValueWhenSlash$12 = function $$getTotalResultValueWhenSlash(total, value) { - var self = this, quotient = nil, result = nil; - - - if (value['$=='](0)) { - return "0では割れません"}; - quotient = $rb_divide($rb_times(1.0, total), value).$ceil(); - result = "" + (total) + "÷" + (value) + " > 判定値:" + (quotient); - return result; - }, $DetatokoSaga_getTotalResultValueWhenSlash$12.$$arity = 2); - - Opal.def(self, '$rollTableCommand', $DetatokoSaga_rollTableCommand$13 = function $$rollTableCommand(command) { - var $a, $b, self = this, result = nil, name = nil, text = nil, total = nil, $case = nil; - - - command = command.$upcase(); - result = []; - self.$debug("rollDiceCommand command", command); - name = ""; - text = ""; - total = 0; - $case = command.$upcase(); - if ("SST"['$===']($case) || "StrengthStigmaTable".$upcase()['$===']($case)) {$b = self.$choiceStrengthStigmaTable(), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (total = ($a[2] == null ? nil : $a[2])), $b} - else if ("WST"['$===']($case) || "WillStigmaTable".$upcase()['$===']($case)) {$b = self.$choiceWillStigmaTable(), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (total = ($a[2] == null ? nil : $a[2])), $b} - else if ("SBET"['$===']($case) || "StrengthBadEndTable".$upcase()['$===']($case)) {$b = self.$choiceStrengthBadEndTable(), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (total = ($a[2] == null ? nil : $a[2])), $b} - else if ("WBET"['$===']($case) || "WillBadEndTable".$upcase()['$===']($case)) {$b = self.$choiceWillBadEndTable(), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (total = ($a[2] == null ? nil : $a[2])), $b} - else {return nil}; - result = "" + (name) + "(" + (total) + ") > " + (text); - return result; - }, $DetatokoSaga_rollTableCommand$13.$$arity = 1); - - Opal.def(self, '$choiceStrengthStigmaTable', $DetatokoSaga_choiceStrengthStigmaTable$14 = function $$choiceStrengthStigmaTable() { - var $a, $b, self = this, name = nil, table = nil, text = nil, total = nil; - - - name = "体力烙印表"; - table = ["あなたは【烙印】を2つ受ける。この表をさらに2回振って受ける【烙印】を決める(その結果、再びこの出目が出ても【烙印】は増えない)。", "【痛手】手負い傷を負った。何とか戦えているが……。", "【流血】血があふれ出し、目がかすむ……。", "【衰弱】体が弱り、その心さえも萎えてしまいそうだ……。", "【苦悶】痛みと苦しみ、情けなさ。目に涙がにじむ。", "【衝撃】吹き飛ばされ、壁や樹木にめりこむ。早く起き上がらねば。", "【疲労】あなたの顔に疲労の色が強まる……この戦いがつらくなってきた。", "【怒号】うっとうしい攻撃に怒りの叫びを放つ。怒りが戦いを迷わせるか?", "【負傷】手傷を負わされた……。", "【軽症】あなたの肌に傷が残った。これだけなら何ということもない。", "奇跡的にあなたは【烙印】を受けなかった。"]; - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (total = ($a[1] == null ? nil : $a[1])), $b; - return [name, text, total]; - }, $DetatokoSaga_choiceStrengthStigmaTable$14.$$arity = 0); - - Opal.def(self, '$choiceWillStigmaTable', $DetatokoSaga_choiceWillStigmaTable$15 = function $$choiceWillStigmaTable() { - var $a, $b, self = this, name = nil, table = nil, text = nil, total = nil; - - - name = "気力烙印表"; - table = ["あなたは【烙印】を2つ受ける。この表をさらに2回振って受ける【烙印】を決める(その結果、再びこの出目が出ても【烙印】は増えない)。", "【絶望】どうしようもない状況。希望は失われ……膝を付くことしかできない。", "【号泣】あまりの理不尽に、子供のように泣き叫ぶことしかできない。", "【後悔】こんなはずじゃなかったのに。しかし現実は非情だった。", "【恐怖】恐怖に囚われてしまった!敵が、己の手が、恐ろしくてならない!", "【葛藤】本当にこれでいいのか?何度も自身への問いかけが起こる……。", "【憎悪】怒りと憎しみに囚われたあなたは、本来の力を発揮できるだろうか?", "【呆然】これは現実なのか?ぼんやりとしながらあなたは考える。", "【迷い】迷いを抱いてしまった。それは戦う意志を鈍らせるだろうか?", "【悪夢】これから時折、あなたはこの時を悪夢に見ることだろう。", "奇跡的にあなたは【烙印】を受けなかった。"]; - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (total = ($a[1] == null ? nil : $a[1])), $b; - return [name, text, total]; - }, $DetatokoSaga_choiceWillStigmaTable$15.$$arity = 0); - - Opal.def(self, '$choiceStrengthBadEndTable', $DetatokoSaga_choiceStrengthBadEndTable$16 = function $$choiceStrengthBadEndTable() { - var $a, $b, self = this, name = nil, table = nil, text = nil, total = nil; - - - name = "体力バッドエンド表"; - table = ["【死亡】あなたは死んだ。次のセッションに参加するには、クラス1つを『モンスター』か『暗黒』にクラスチェンジしなくてはいけない。", "【命乞】あなたは恐怖に駆られ、命乞いをしてしまった!次のセッション開始時に、クラス1つが『ザコ』に変更される!", "【忘却】あなたは記憶を失い、ぼんやりと立ち尽くす。次のセッションに参加するには、クラス1つを変更しなくてはならない。", "【悲劇】あなたの攻撃は敵ではなく味方を撃った!全てが終わるまであなたは立ち尽くしていた。任意の味方の【体力】を1D6点減少させる。", "【暴走】あなたは正気を失い、衝動のまま暴走する!同じシーンにいる全員の【体力】を1D6点減少させる。", "【転落】あなたは断崖絶壁から転落した。", "【虜囚】あなたは敵に囚われた。", "【逃走】あなたは恐れをなし、仲間を見捨てて逃げ出した。", "【重症】あなたはどうしようもない痛手を負い、倒れた。", "【気絶】あなたは気を失った。そして目覚めれば全てが終わっていた。", "それでもまだ立ち上がる!あなたはバッドエンドを迎えなかった。体力の【烙印】を1つ打ち消してよい。"]; - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (total = ($a[1] == null ? nil : $a[1])), $b; - return [name, text, total]; - }, $DetatokoSaga_choiceStrengthBadEndTable$16.$$arity = 0); - return (Opal.def(self, '$choiceWillBadEndTable', $DetatokoSaga_choiceWillBadEndTable$17 = function $$choiceWillBadEndTable() { - var $a, $b, self = this, name = nil, table = nil, text = nil, total = nil; - - - name = "気力バッドエンド表"; - table = ["【自害】あなたは自ら死を選んだ。次のセッションに参加するには、クラス1つを『暗黒』にクラスチェンジしなくてはいけない。", "【堕落】あなたは心の中の闇に飲まれた。次のセッション開始時に、クラス1つが『暗黒』か『モンスター』に変更される!", "【隷属】あなたは敵の言うことに逆らえない。次のセッションであなたのスタンスは『従属』になる。", "【裏切】裏切りの衝動。任意の味方の【体力】を1D6点減少させ、その場から逃げ出す。", "【暴走】あなたは正気を失い、衝動のまま暴走する!同じシーンにいる全員の【体力】を1D6点減少させる。", "【呪い】心の闇が顕在化したのか。敵の怨嗟か。呪いに蝕まれたあなたは、のたうちまわることしかできない。", "【虜囚】あなたは敵に囚われ、その場から連れ去られる。", "【逃走】あなたは恐れをなし、仲間を見捨てて逃げ出した。", "【放心】あなたはただぼんやりと立ち尽くすしかなかった。我に返った時、全ては終わっていた。", "【気絶】あなたは気を失った。そして目覚めれば全てが終わっていた。", "それでもまだ諦めない!あなたはバッドエンドを迎えなかった。あなたは気力の【烙印】を1つ打ち消してよい。"]; - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (total = ($a[1] == null ? nil : $a[1])), $b; - return [name, text, total]; - }, $DetatokoSaga_choiceWillBadEndTable$17.$$arity = 0), nil) && 'choiceWillBadEndTable'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/DetatokoSaga_Korean.js b/src/assets/dicebot/DetatokoSaga_Korean.js deleted file mode 100644 index 027c45f1d..000000000 --- a/src/assets/dicebot/DetatokoSaga_Korean.js +++ /dev/null @@ -1,272 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$debug', '$checkRoll', '$empty?', '$checkJudgeValue', '$rollTableCommand', '$=~', '$to_i', '$last_match', '$nil?', '$getRollResult', '$+', '$getSuccess', '$getCheckFlagResult', '$==', '$times', '$roll', '$[]=', '$join', '$sort', '$!=', '$reverse', '$[]', '$>=', '$>', '$getDownWill', '$getModifyText', '$getTotalResultValue', '$===', '$-', '$getTotalResultValueWhenSlash', '$ceil', '$/', '$*', '$upcase', '$choiceStrengthStigmaTable', '$choiceWillStigmaTable', '$choiceStrengthBadEndTable', '$choiceWillBadEndTable', '$get_table_by_2d6']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DetatokoSaga_Korean'); - - var $nesting = [self].concat($parent_nesting), $DetatokoSaga_Korean_initialize$1, $DetatokoSaga_Korean_rollDiceCommand$2, $DetatokoSaga_Korean_checkRoll$3, $DetatokoSaga_Korean_getRollResult$4, $DetatokoSaga_Korean_getSuccess$6, $DetatokoSaga_Korean_getCheckFlagResult$7, $DetatokoSaga_Korean_getDownWill$8, $DetatokoSaga_Korean_checkJudgeValue$9, $DetatokoSaga_Korean_getModifyText$10, $DetatokoSaga_Korean_getTotalResultValue$11, $DetatokoSaga_Korean_getTotalResultValueWhenSlash$12, $DetatokoSaga_Korean_rollTableCommand$13, $DetatokoSaga_Korean_choiceStrengthStigmaTable$14, $DetatokoSaga_Korean_choiceWillStigmaTable$15, $DetatokoSaga_Korean_choiceStrengthBadEndTable$16, $DetatokoSaga_Korean_choiceWillBadEndTable$17; - - - Opal.const_set($nesting[0], 'ID', "DetatokoSaga:Korean"); - Opal.const_set($nesting[0], 'NAME', "데타토코 사가"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:데타토코 사가"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・통상판정 xDS or xDSy or xDS>=z or xDSy>=z\n" + " (x=스킬레벨, y=현재 플래그(생략=0), z=목표치(생략=8))\n" + " 예)3DS 2DS5 0DS 3DS>=10 3DS7>=12\n" + "・판정치 xJD or xJDy or xJDy+z or xJDy-z or xJDy/z\n" + " (x=스킬레벨, y=현재 플래그(생략=0), z=수정치(생략=0))\n" + " 예)3JD 2JD5 3JD7+1 4JD/3\n" + "・체력 낙인표 SST (StrengthStigmaTable)\n" + "・기력 낙인표 WST (WillStigmaTable)\n" + "・체력 배드엔딩표 SBET (StrengthBadEndTable)\n" + "・기력 배드엔딩표 WBET (WillBadEndTable)\n"); - self.$setPrefixes(["\\d+DS.*", "\\d+JD.*", "SST", "StrengthStigmaTable", "WST", "WillStigmaTable", "SBET", "StrengthBadEndTable", "WBET", "WillBadEndTable"]); - - Opal.def(self, '$initialize', $DetatokoSaga_Korean_initialize$1 = function $$initialize() { - var $iter = $DetatokoSaga_Korean_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $DetatokoSaga_Korean_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $DetatokoSaga_Korean_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $DetatokoSaga_Korean_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $DetatokoSaga_Korean_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, result = nil; - - - self.$debug("rollDiceCommand begin string", command); - result = ""; - result = self.$checkRoll(command); - if ($truthy(result['$empty?']())) { - } else { - return result - }; - result = self.$checkJudgeValue(command); - if ($truthy(result['$empty?']())) { - } else { - return result - }; - self.$debug("각종표로서 처리"); - return self.$rollTableCommand(command); - }, $DetatokoSaga_Korean_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$checkRoll', $DetatokoSaga_Korean_checkRoll$3 = function $$checkRoll(string) { - var $a, $b, self = this, target = nil, skill = nil, flag = nil, result = nil, total = nil, rollText = nil, success = nil; - - - self.$debug("checkRoll begin string", string); - if ($truthy(/^(\d+)DS(\d+)?((>=)(\d+))?$/i['$=~'](string))) { - } else { - return "" - }; - target = 8; - skill = $$($nesting, 'Regexp').$last_match(1).$to_i(); - flag = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($$($nesting, 'Regexp').$last_match(5)['$nil?']())) { - } else { - target = $$($nesting, 'Regexp').$last_match(5).$to_i() - }; - result = "" + "판정! 스킬레벨:" + (skill) + " 플래그:" + (flag) + " 목표치:" + (target); - $b = self.$getRollResult(skill), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (rollText = ($a[1] == null ? nil : $a[1])), $b; - result = $rb_plus(result, "" + " > " + (total) + "[" + (rollText) + "] > 판정치:" + (total)); - success = self.$getSuccess(total, target); - result = $rb_plus(result, "" + " > " + (success)); - result = $rb_plus(result, self.$getCheckFlagResult(total, flag)); - return result; - }, $DetatokoSaga_Korean_checkRoll$3.$$arity = 1); - - Opal.def(self, '$getRollResult', $DetatokoSaga_Korean_getRollResult$4 = function $$getRollResult(skill) { - var $$5, self = this, diceCount = nil, dice = nil, diceText = nil, total = nil; - - - diceCount = $rb_plus(skill, 1); - if (skill['$=='](0)) { - diceCount = 3}; - dice = []; - $send(diceCount, 'times', [], ($$5 = function(i){var self = $$5.$$s || this, $a, $b; - - - - if (i == null) { - i = nil; - }; - return $b = self.$roll(1, 6), $a = Opal.to_ary($b), dice['$[]='](i, ($a[0] == null ? nil : $a[0])), $b;}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - diceText = dice.$join(","); - dice = dice.$sort(); - if ($truthy(skill['$!='](0))) { - dice = dice.$reverse()}; - total = $rb_plus(dice['$[]'](0), dice['$[]'](1)); - return [total, diceText]; - }, $DetatokoSaga_Korean_getRollResult$4.$$arity = 1); - - Opal.def(self, '$getSuccess', $DetatokoSaga_Korean_getSuccess$6 = function $$getSuccess(check, target) { - var self = this; - - - if ($truthy($rb_ge(check, target))) { - return "목표치 이상!【성공】"}; - return "목표치 미달… 【실패】"; - }, $DetatokoSaga_Korean_getSuccess$6.$$arity = 2); - - Opal.def(self, '$getCheckFlagResult', $DetatokoSaga_Korean_getCheckFlagResult$7 = function $$getCheckFlagResult(total, flag) { - var self = this, willText = nil, result = nil; - - - if ($truthy($rb_gt(total, flag))) { - return ""}; - willText = self.$getDownWill(flag); - result = "" + ", 플래그 이하! 【기력" + (willText) + "점 감소】"; - result = $rb_plus(result, " 【판정치 변경 불가】"); - return result; - }, $DetatokoSaga_Korean_getCheckFlagResult$7.$$arity = 2); - - Opal.def(self, '$getDownWill', $DetatokoSaga_Korean_getDownWill$8 = function $$getDownWill(flag) { - var $a, $b, self = this, dice = nil; - - - if ($truthy($rb_ge(flag, 10))) { - return "6"}; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - return "" + "1D6->" + (dice); - }, $DetatokoSaga_Korean_getDownWill$8.$$arity = 1); - - Opal.def(self, '$checkJudgeValue', $DetatokoSaga_Korean_checkJudgeValue$9 = function $$checkJudgeValue(string) { - var $a, $b, self = this, skill = nil, flag = nil, operator = nil, value = nil, result = nil, modifyText = nil, total = nil, rollText = nil, totalResult = nil; - - - self.$debug("checkJudgeValue begin string", string); - if ($truthy(/^(\d+)JD(\d+)?(([+]|[-]|[\/])(\d+))?$/i['$=~'](string))) { - } else { - return "" - }; - skill = $$($nesting, 'Regexp').$last_match(1).$to_i(); - flag = $$($nesting, 'Regexp').$last_match(2).$to_i(); - operator = $$($nesting, 'Regexp').$last_match(4); - value = $$($nesting, 'Regexp').$last_match(5).$to_i(); - result = "" + "판정! 스킬레벨:" + (skill) + " 플래그:" + (flag); - modifyText = self.$getModifyText(operator, value); - if ($truthy(modifyText['$empty?']())) { - } else { - result = $rb_plus(result, "" + " 수정치:" + (modifyText)) - }; - $b = self.$getRollResult(skill), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (rollText = ($a[1] == null ? nil : $a[1])), $b; - result = $rb_plus(result, "" + " > " + (total) + "[" + (rollText) + "]" + (modifyText)); - totalResult = self.$getTotalResultValue(total, value, operator); - result = $rb_plus(result, "" + " > " + (totalResult)); - result = $rb_plus(result, self.$getCheckFlagResult(total, flag)); - return result; - }, $DetatokoSaga_Korean_checkJudgeValue$9.$$arity = 1); - - Opal.def(self, '$getModifyText', $DetatokoSaga_Korean_getModifyText$10 = function $$getModifyText(operator, value) { - var self = this, operatorText = nil, $case = nil; - - - if (value['$=='](0)) { - return ""}; - operatorText = (function() {$case = operator; - if ("+"['$===']($case)) {return "+"} - else if ("-"['$===']($case)) {return "-"} - else if ("/"['$===']($case)) {return "÷"} - else {return ""}})(); - return "" + (operatorText) + (value); - }, $DetatokoSaga_Korean_getModifyText$10.$$arity = 2); - - Opal.def(self, '$getTotalResultValue', $DetatokoSaga_Korean_getTotalResultValue$11 = function $$getTotalResultValue(total, value, operator) { - var self = this, $case = nil; - - return (function() {$case = operator; - if ("+"['$===']($case)) {return "" + (total) + "+" + (value) + " > 판정치:" + ($rb_plus(total, value))} - else if ("-"['$===']($case)) {return "" + (total) + "-" + (value) + " > 판정치:" + ($rb_minus(total, value))} - else if ("/"['$===']($case)) {return self.$getTotalResultValueWhenSlash(total, value)} - else {return "" + "판정치:" + (total)}})() - }, $DetatokoSaga_Korean_getTotalResultValue$11.$$arity = 3); - - Opal.def(self, '$getTotalResultValueWhenSlash', $DetatokoSaga_Korean_getTotalResultValueWhenSlash$12 = function $$getTotalResultValueWhenSlash(total, value) { - var self = this, quotient = nil, result = nil; - - - if (value['$=='](0)) { - return "0으로는 나누어지지 않습니다"}; - quotient = $rb_divide($rb_times(1.0, total), value).$ceil(); - result = "" + (total) + "÷" + (value) + " > 판정치:" + (quotient); - return result; - }, $DetatokoSaga_Korean_getTotalResultValueWhenSlash$12.$$arity = 2); - - Opal.def(self, '$rollTableCommand', $DetatokoSaga_Korean_rollTableCommand$13 = function $$rollTableCommand(command) { - var $a, $b, self = this, result = nil, name = nil, text = nil, total = nil, $case = nil; - - - command = command.$upcase(); - result = []; - self.$debug("rollDiceCommand command", command); - name = ""; - text = ""; - total = 0; - $case = command.$upcase(); - if ("SST"['$===']($case) || "StrengthStigmaTable".$upcase()['$===']($case)) {$b = self.$choiceStrengthStigmaTable(), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (total = ($a[2] == null ? nil : $a[2])), $b} - else if ("WST"['$===']($case) || "WillStigmaTable".$upcase()['$===']($case)) {$b = self.$choiceWillStigmaTable(), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (total = ($a[2] == null ? nil : $a[2])), $b} - else if ("SBET"['$===']($case) || "StrengthBadEndTable".$upcase()['$===']($case)) {$b = self.$choiceStrengthBadEndTable(), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (total = ($a[2] == null ? nil : $a[2])), $b} - else if ("WBET"['$===']($case) || "WillBadEndTable".$upcase()['$===']($case)) {$b = self.$choiceWillBadEndTable(), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (total = ($a[2] == null ? nil : $a[2])), $b} - else {return nil}; - result = "" + (name) + "(" + (total) + ") > " + (text); - return result; - }, $DetatokoSaga_Korean_rollTableCommand$13.$$arity = 1); - - Opal.def(self, '$choiceStrengthStigmaTable', $DetatokoSaga_Korean_choiceStrengthStigmaTable$14 = function $$choiceStrengthStigmaTable() { - var $a, $b, self = this, name = nil, table = nil, text = nil, total = nil; - - - name = "체력 낙인표"; - table = ["당신은 【낙인】을 2개 받는다. 이 표를 다시 2번 굴려 받을 【낙인】을 정한다(그 경우, 다시 이 눈이 나와도 【낙인】은 늘어나지 않는다).", "【상처】 심한 상처를 입었다. 어떻게든 싸울 수는 있지만…….", "【출혈】 피가 흘러넘쳐, 눈이 흐릿하다…….", "【쇠약】 몸이 약해져, 그 마음마저도 시들어버릴 거 같다.", "【고통】 아픔과 괴로움, 한심함. 눈에서 눈물이 새어 나온다.", "【충격】 날려져서, 벽이나 나무에 부딪힌다. 빨리 일어서지 않으면.", "【피로】 당신의 얼굴에 피로의 색이 강해진다……이 싸움이 힘겨워졌다.", "【노호】 성가신 공격에 분노의 함성을 지른다. 분노가 싸움을 어렵게 할까?", "【부상】 상처를 입었다…….", "【경상】 당신의 피부에 상처가 남았다. 이것만이라면 아무렇지도 않다.", "기적적으로 당신은 【낙인】을 받지 않았다."]; - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (total = ($a[1] == null ? nil : $a[1])), $b; - return [name, text, total]; - }, $DetatokoSaga_Korean_choiceStrengthStigmaTable$14.$$arity = 0); - - Opal.def(self, '$choiceWillStigmaTable', $DetatokoSaga_Korean_choiceWillStigmaTable$15 = function $$choiceWillStigmaTable() { - var $a, $b, self = this, name = nil, table = nil, text = nil, total = nil; - - - name = "기력 낙인표"; - table = ["당신은 【낙인】을 2개 받는다. 이 표를 다시 2번 굴려 받을 【낙인】을 정한다(그 경우, 다시 이 눈이 나와도 【낙인】은 늘어나지 않는다).", "【절망】 어떻게 하지 못하는 상황. 희망은 사라지고……무릎을 꿇을 수밖에 없다.", "【통곡】 너무도 부조리함에, 어린아이처럼 울음을 터트릴 수밖에 없다.", "【후회】 이럴 생각은 아니었는데. 하지만 현실은 비정했다.", "【공포】 공포에 사로잡혔다! 적이, 자신의 손이, 무서워서 참을 수 없다!", "【갈등】 정말로 이걸로 괜찮은 걸까? 몇 번이고 자신에게 의문이 일어난다…….", "【증오】 분노와 증오에 사로잡힌 당신은, 본래의 힘을 발휘할 수 있을까?", "【망연】 이것은 현실인가? 몽롱한 정신으로 당신은 생각한다.", "【주저】 망설임을 가졌다. 그것은 싸울 의지를 둔하게 할 것인가?", "【악몽】 이제부터 때때로, 당신은 이 순간을 악몽으로 볼 것이다.", "기적적으로 당신은 【낙인】을 받지 않았다."]; - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (total = ($a[1] == null ? nil : $a[1])), $b; - return [name, text, total]; - }, $DetatokoSaga_Korean_choiceWillStigmaTable$15.$$arity = 0); - - Opal.def(self, '$choiceStrengthBadEndTable', $DetatokoSaga_Korean_choiceStrengthBadEndTable$16 = function $$choiceStrengthBadEndTable() { - var $a, $b, self = this, name = nil, table = nil, text = nil, total = nil; - - - name = "체력 배드엔딩표"; - table = ["【사망】 당신은 죽었다. 다음 세션에 참가하기 위해서는, 클래스 1개를 『몬스터』나 『암흑』으로 클래스 체인지해야만 한다.", "【목숨 구걸】 당신은 공포를 느껴, 목숨을 구걸했다! 다음 세션 개시 시에, 클래스 1개가 『자코』로 변경된다!", "【망각】 당신은 기억을 잃고, 우두커니 섰다. 다음 세션에 참가하기 위해서는, 클래스 1개를 변경해야만 한다.", "【비극】 당신의 공격은 적이 아니라 아군을 맞췄다! 모든 것이 끝날 때까지 당신은 우두커니 서 있게 된다. 임의의 아군의 【체력】을 1D6점 감소시킨다.", "【폭주】 당신은 이성을 잃고, 충동에 따라 폭주한다! 같은 씬에 있는 전원의 【체력】을 1D6점 감소시킨다.", "【전락】 당신은 단애절벽에서 떨어진다.", "【포로】 당신은 적에게 사로잡혔다.", "【도주】 당신은 겁에 질려, 동료를 버리고 도망쳤다.", "【중상】 당신은 어찌할 수 없는 상처를 입고, 쓰러졌다.", "【기절】 당신은 의식을 잃었다. 그리고 정신이 들면 모든 것이 끝나있었다.", "그래도 아직 일어선다! 당신은 배드엔드를 맞이하지 않았다. 체력의 【낙인】을 1개 지워도 좋다."]; - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (total = ($a[1] == null ? nil : $a[1])), $b; - return [name, text, total]; - }, $DetatokoSaga_Korean_choiceStrengthBadEndTable$16.$$arity = 0); - return (Opal.def(self, '$choiceWillBadEndTable', $DetatokoSaga_Korean_choiceWillBadEndTable$17 = function $$choiceWillBadEndTable() { - var $a, $b, self = this, name = nil, table = nil, text = nil, total = nil; - - - name = "기력 배드엔딩표"; - table = ["【자해】 당신은 스스로 죽음을 골랐다. 다음 세션에 참가하기 위해서는 클래스 1개를 『암흑』으로 클래스 체인지해야만 한다.", "【타락】 당신은 마음속의 어둠에 먹혔다. 다음 세션 개시 시에, 클래스 1개가 『암흑』이나 『몬스터』로 변경된다!", "【예속】 당신은 적의 말에 거스를 수 없다. 다음 세션에 당신의 스탠스는 『종속』이 된다.", "【배반】 배반의 충동. 임의의 아군의 【체력】을 1D6점 감소시키고, 그 자리에서 도망친다.", "【폭주】 당신은 이성을 잃고, 충동에 따라 폭주한다! 같은 씬에 있는 전원의 【체력】을 1D6점 감소시킨다.", "【저주】 마음의 어둠이 현재화한 것인가. 적의 원한인가. 저주에 삼켜진 당신은, 그저 고통에 몸부림칠 수밖에 없다.", "【포로】 당신은 적에게 사로잡혀, 그 자리에서 끌려갔다.", "【도주】 당신은 겁에 질려, 동료를 버리고 도망쳤다.", "【방심】 당신은 그저 멍하니 서 있을 수밖에 없다. 정신을 차렸을 때, 모든 것은 끝나있었다.", "【기절】 당신은 의식을 잃었다. 그리고 정신이 들면 모든 것이 끝나있었다.", "그래도 아직 포기하지 않아! 당신은 배드엔드를 맞이하지 않았다. 기력의 【낙인】을 1개 지워도 좋다."]; - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (total = ($a[1] == null ? nil : $a[1])), $b; - return [name, text, total]; - }, $DetatokoSaga_Korean_choiceWillBadEndTable$17.$$arity = 0), nil) && 'choiceWillBadEndTable'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/DiceBot.js b/src/assets/dicebot/DiceBot.js deleted file mode 100644 index c69ac598f..000000000 --- a/src/assets/dicebot/DiceBot.js +++ /dev/null @@ -1,669 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$freeze', '$attr_reader', '$map', '$to_proc', '$join', '$private', '$clearPrefixes', '$!', '$empty?', '$prefixs', '$prefixes', '$class', '$warn', '$id', '$setPrefixes', '$attr_accessor', '$name', '$sort_key', '$help_message', '$attr_writer', '$rand', '$roll', '$marshalSignOfInequality', '$unlimitedRollDiceType', '$getD66Value', '$parren_killer', '$debug', '$isGetOriginalMessage', '$getOriginalMessage', '$=~', '$prefixesPattern', '$last_match', '$removeDiceCommandMessage', '$rollDiceCommandCatched', '$nil?', '$!=', '$sub', '$rollDiceCommand', '$to_s', '$backtrace', '$size', '$===', '$check_1D100', '$check_1D20', '$check_2D6', '$check_nD10', '$check_nD6', '$check_nDx', '$is_a?', '$==', '$send', '$get_table_by_nD6', '$get_table_by_nDx', '$getTableValue', '$[]', '$-', '$/', '$getD66', '$bcdice', '$get_table_by_number', '$+', '$*', '$<', '$each', '$>=', '$kind_of?', '$lambda', '$call', '$select', '$public_methods', '$upcase', '$to_i', '$getTableInfoFromExtraTableText', '$get_table_by_nDx_extratable', '$get_table_by_d66', '$floor', '$%', '$get_table_by_d66_swap', '$raise', '$gsub', '$rollTableMessageDiceText', '$split', '$inspect']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceBot'); - - var $nesting = [self].concat($parent_nesting), $DiceBot_initialize$4, $DiceBot_postSet$5, $DiceBot_info$6, $DiceBot_id$7, $DiceBot_gameType$8, $DiceBot_name$9, $DiceBot_gameName$10, $DiceBot_sort_key$11, $DiceBot_help_message$12, $DiceBot_getHelpMessage$13, $DiceBot_prefixes$14, $DiceBot_setSendMode$15, $DiceBot_bcdice$eq$16, $DiceBot_bcdice$17, $DiceBot_rand$18, $DiceBot_roll$19, $DiceBot_marshalSignOfInequality$20, $DiceBot_unlimitedRollDiceType$21, $DiceBot_setSortType$22, $DiceBot_d66$23, $DiceBot_parren_killer$24, $DiceBot_changeText$25, $DiceBot_dice_command$26, $DiceBot_isGetOriginalMessage$27, $DiceBot_removeDiceCommandMessage$28, $DiceBot_rollDiceCommandCatched$29, $DiceBot_rollDiceCommand$30, $DiceBot_dice_command_xRn$31, $DiceBot_check_result$32, $DiceBot_check_nDx$33, $DiceBot_check_1D100$34, $DiceBot_check_1D20$35, $DiceBot_check_nD10$36, $DiceBot_check_2D6$37, $DiceBot_check_nD6$38, $DiceBot_get_table_by_2d6$39, $DiceBot_get_table_by_1d6$40, $DiceBot_get_table_by_nD6$41, $DiceBot_get_table_by_nDx$42, $DiceBot_get_table_by_1d3$43, $DiceBot_getD66$44, $DiceBot_get_table_by_d66_swap$45, $DiceBot_get_table_by_d66$46, $DiceBot_getDiceRolledAdditionalText$47, $DiceBot_getDiceRevision$48, $DiceBot_isD9$49, $DiceBot_getGrichText$50, $DiceBot_should_reroll$ques$51, $DiceBot_get_table_by_number$52, $DiceBot_getTableValue$54, $DiceBot_analyzeDiceCommandResultMethod$56, $DiceBot_get_table_by_nDx_extratable$59, $DiceBot_getTableCommandResult$60, $DiceBot_getTableInfoFromExtraTableText$61, $DiceBot_roll_tables$63; - - self.$$prototype.rerollLimitCount = self.$$prototype.d66Type = nil; - - Opal.const_set($nesting[0], 'EMPTY_PREFIXES_PATTERN', /(^|\s)(S)?()(\s|$)/i.$freeze()); - Opal.const_set($nesting[0], 'ID', "DiceBot"); - Opal.const_set($nesting[0], 'NAME', "DiceBot"); - Opal.const_set($nesting[0], 'SORT_KEY', "*たいすほつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', ""); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $setPrefixes$1, $clearPrefixes$2, $inherited$3; - - - self.$attr_reader("prefixes"); - self.$attr_reader("prefixesPattern"); - - Opal.def(self, '$setPrefixes', $setPrefixes$1 = function $$setPrefixes(prefixes) { - var self = this; - - - self.prefixes = $send(prefixes, 'map', [], "freeze".$to_proc()).$freeze(); - self.prefixesPattern = new RegExp("" + "(^|\\s)(S)?(" + (prefixes.$join("|")) + ")(\\s|$)", 'i').$freeze(); - return self; - }, $setPrefixes$1.$$arity = 1); - - Opal.def(self, '$clearPrefixes', $clearPrefixes$2 = function $$clearPrefixes() { - var self = this; - - - self.prefixes = [].$freeze(); - self.prefixesPattern = $$($nesting, 'EMPTY_PREFIXES_PATTERN'); - return self; - }, $clearPrefixes$2.$$arity = 0); - self.$private(); - return (Opal.def(self, '$inherited', $inherited$3 = function $$inherited(subclass) { - var self = this; - - return subclass.$clearPrefixes() - }, $inherited$3.$$arity = 1), nil) && 'inherited'; - })(Opal.get_singleton_class(self), $nesting); - self.$clearPrefixes(); - (Opal.class_variable_set($nesting[0], '@@bcdice', nil)); - Opal.const_set($nesting[0], 'DEFAULT_SEND_MODE', 2); - - Opal.def(self, '$initialize', $DiceBot_initialize$4 = function $$initialize() { - var $a, self = this; - - - self.sendMode = $$($nesting, 'DEFAULT_SEND_MODE'); - self.sortType = 0; - self.sameDiceRerollCount = 0; - self.sameDiceRerollType = 0; - self.d66Type = 1; - self.isPrintMaxDice = false; - self.upperRollThreshold = 0; - self.unlimitedRollDiceType = 0; - self.rerollNumber = 0; - self.defaultSuccessTarget = ""; - self.rerollLimitCount = 10000; - self.fractionType = "omit"; - if ($truthy(($truthy($a = self.$prefixs()['$empty?']()['$!']()) ? self.$class().$prefixes()['$empty?']() : $a))) { - - self.$warn("" + (self.$id()) + ": #prefixs is deprecated. Please use .setPrefixes."); - return self.$class().$setPrefixes(self.$prefixs()); - } else { - return nil - }; - }, $DiceBot_initialize$4.$$arity = 0); - self.$attr_accessor("rerollLimitCount"); - self.$attr_reader("sendMode", "sameDiceRerollCount", "sameDiceRerollType", "d66Type"); - self.$attr_reader("isPrintMaxDice", "upperRollThreshold"); - self.$attr_reader("defaultSuccessTarget", "rerollNumber", "fractionType"); - - Opal.def(self, '$postSet', $DiceBot_postSet$5 = function $$postSet() { - var self = this; - - return nil - }, $DiceBot_postSet$5.$$arity = 0); - - Opal.def(self, '$info', $DiceBot_info$6 = function $$info() { - var self = this; - - return $hash2(["gameType", "name", "sortKey", "prefixs", "info"], {"gameType": self.$id(), "name": self.$name(), "sortKey": self.$sort_key(), "prefixs": self.$class().$prefixes(), "info": self.$help_message()}) - }, $DiceBot_info$6.$$arity = 0); - - Opal.def(self, '$id', $DiceBot_id$7 = function $$id() { - var self = this; - - return $$$(self.$class(), 'ID') - }, $DiceBot_id$7.$$arity = 0); - - Opal.def(self, '$gameType', $DiceBot_gameType$8 = function $$gameType() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameType is deprecated. Please use #id."); - return self.$id(); - }, $DiceBot_gameType$8.$$arity = 0); - - Opal.def(self, '$name', $DiceBot_name$9 = function $$name() { - var self = this; - - return $$$(self.$class(), 'NAME') - }, $DiceBot_name$9.$$arity = 0); - - Opal.def(self, '$gameName', $DiceBot_gameName$10 = function $$gameName() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameName is deprecated. Please use #name."); - return self.$name(); - }, $DiceBot_gameName$10.$$arity = 0); - - Opal.def(self, '$sort_key', $DiceBot_sort_key$11 = function $$sort_key() { - var self = this; - - return $$$(self.$class(), 'SORT_KEY') - }, $DiceBot_sort_key$11.$$arity = 0); - - Opal.def(self, '$help_message', $DiceBot_help_message$12 = function $$help_message() { - var self = this; - - return $$$(self.$class(), 'HELP_MESSAGE') - }, $DiceBot_help_message$12.$$arity = 0); - - Opal.def(self, '$getHelpMessage', $DiceBot_getHelpMessage$13 = function $$getHelpMessage() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #getHelpMessage is deprecated. Please use #help_message."); - return self.$help_message(); - }, $DiceBot_getHelpMessage$13.$$arity = 0); - - Opal.def(self, '$prefixes', $DiceBot_prefixes$14 = function $$prefixes() { - var self = this; - - return self.$class().$prefixes() - }, $DiceBot_prefixes$14.$$arity = 0); - Opal.alias(self, "prefixs", "prefixes"); - - Opal.def(self, '$setSendMode', $DiceBot_setSendMode$15 = function $$setSendMode(m) { - var self = this; - - return (self.sendMode = m) - }, $DiceBot_setSendMode$15.$$arity = 1); - self.$attr_writer("upperRollThreshold"); - - Opal.def(self, '$bcdice=', $DiceBot_bcdice$eq$16 = function(b) { - var self = this; - - return (Opal.class_variable_set($nesting[0], '@@bcdice', b)) - }, $DiceBot_bcdice$eq$16.$$arity = 1); - - Opal.def(self, '$bcdice', $DiceBot_bcdice$17 = function $$bcdice() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a) - }, $DiceBot_bcdice$17.$$arity = 0); - - Opal.def(self, '$rand', $DiceBot_rand$18 = function $$rand(max) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rand(max) - }, $DiceBot_rand$18.$$arity = 1); - - Opal.def(self, '$roll', $DiceBot_roll$19 = function $$roll($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'roll', Opal.to_a(args)); - }, $DiceBot_roll$19.$$arity = -1); - - Opal.def(self, '$marshalSignOfInequality', $DiceBot_marshalSignOfInequality$20 = function $$marshalSignOfInequality($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'marshalSignOfInequality', Opal.to_a(args)); - }, $DiceBot_marshalSignOfInequality$20.$$arity = -1); - - Opal.def(self, '$unlimitedRollDiceType', $DiceBot_unlimitedRollDiceType$21 = function $$unlimitedRollDiceType() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$unlimitedRollDiceType() - }, $DiceBot_unlimitedRollDiceType$21.$$arity = 0); - self.$attr_reader("sortType"); - - Opal.def(self, '$setSortType', $DiceBot_setSortType$22 = function $$setSortType(s) { - var self = this; - - return (self.sortType = s) - }, $DiceBot_setSortType$22.$$arity = 1); - - Opal.def(self, '$d66', $DiceBot_d66$23 = function $$d66($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'getD66Value', Opal.to_a(args)); - }, $DiceBot_d66$23.$$arity = -1); - - Opal.def(self, '$parren_killer', $DiceBot_parren_killer$24 = function $$parren_killer(string) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$parren_killer(string) - }, $DiceBot_parren_killer$24.$$arity = 1); - - Opal.def(self, '$changeText', $DiceBot_changeText$25 = function $$changeText(string) { - var self = this; - - - self.$debug("DiceBot.parren_killer_add called"); - return string; - }, $DiceBot_changeText$25.$$arity = 1); - - Opal.def(self, '$dice_command', $DiceBot_dice_command$26 = function $$dice_command(string, nick_e) { - var $a, $b, self = this, secret_flg = nil, secretMarker = nil, command = nil, output_msg = nil; - - - if ($truthy(self.$isGetOriginalMessage())) { - string = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$getOriginalMessage()}; - self.$debug("dice_command Begin string", string); - secret_flg = false; - if ($truthy(self.$class().$prefixesPattern()['$=~'](string))) { - } else { - - self.$debug("not match in prefixes"); - return ["1", secret_flg]; - }; - secretMarker = $$($nesting, 'Regexp').$last_match(2); - command = $$($nesting, 'Regexp').$last_match(3); - command = self.$removeDiceCommandMessage(command); - self.$debug("dicebot after command", command); - self.$debug("match"); - $b = self.$rollDiceCommandCatched(command), $a = Opal.to_ary($b), (output_msg = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = output_msg['$nil?']()) ? $a : output_msg['$empty?']()))) { - output_msg = "1"}; - secret_flg = ($truthy($a = secret_flg) ? $a : false); - if ($truthy(output_msg['$!=']("1"))) { - output_msg = "" + (nick_e) + ": " + (output_msg)}; - if ($truthy(secretMarker)) { - if ($truthy(output_msg['$!=']("1"))) { - secret_flg = true}}; - return [output_msg, secret_flg]; - }, $DiceBot_dice_command$26.$$arity = 2); - - Opal.def(self, '$isGetOriginalMessage', $DiceBot_isGetOriginalMessage$27 = function $$isGetOriginalMessage() { - var self = this; - - return false - }, $DiceBot_isGetOriginalMessage$27.$$arity = 0); - - Opal.def(self, '$removeDiceCommandMessage', $DiceBot_removeDiceCommandMessage$28 = function $$removeDiceCommandMessage(command) { - var self = this; - - return command.$sub(/[\s ].+/, "") - }, $DiceBot_removeDiceCommandMessage$28.$$arity = 1); - - Opal.def(self, '$rollDiceCommandCatched', $DiceBot_rollDiceCommandCatched$29 = function $$rollDiceCommandCatched(command) { - var $a, $b, self = this, result = nil, secret_flg = nil, e = nil; - - - result = nil; - - try { - - self.$debug("call rollDiceCommand command", command); - $b = self.$rollDiceCommand(command), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - self.$debug("executeCommand exception", e.$to_s(), e.$backtrace().$join("\n")) - } finally { Opal.pop_exception() } - } else { throw $err; } - };; - self.$debug("rollDiceCommand result", result); - return [result, secret_flg]; - }, $DiceBot_rollDiceCommandCatched$29.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $DiceBot_rollDiceCommand$30 = function $$rollDiceCommand(_command) { - var self = this; - - return nil - }, $DiceBot_rollDiceCommand$30.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $DiceBot_dice_command_xRn$31 = function $$dice_command_xRn(_string, _nick_e) { - var self = this; - - return "" - }, $DiceBot_dice_command_xRn$31.$$arity = 2); - - Opal.def(self, '$check_result', $DiceBot_check_result$32 = function $$check_result(total, dice_total, dice_list, sides, cmp_op, target) { - var $a, self = this, ret = nil, $case = nil; - - - ret = (function() {$case = [dice_list.$size(), sides]; - if ([1, 100]['$===']($case)) {return self.$check_1D100(total, dice_total, cmp_op, target)} - else if ([1, 20]['$===']($case)) {return self.$check_1D20(total, dice_total, cmp_op, target)} - else if ([2, 6]['$===']($case)) {return self.$check_2D6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - ret = (function() {$case = sides; - if ((10)['$===']($case)) {return self.$check_nD10(total, dice_total, dice_list, cmp_op, target)} - else if ((6)['$===']($case)) {return self.$check_nD6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - return self.$check_nDx(total, cmp_op, target); - }, $DiceBot_check_result$32.$$arity = 6); - - Opal.def(self, '$check_nDx', $DiceBot_check_nDx$33 = function $$check_nDx(total, cmp_op, target) { - var self = this, success = nil; - - - if ($truthy(target['$is_a?']($$($nesting, 'String')))) { - return " > 失敗"}; - success = (function() {if (cmp_op['$==']("!=")) { - return total['$!='](target) - } else { - return total.$send(cmp_op, target) - }; return nil; })(); - if ($truthy(success)) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $DiceBot_check_nDx$33.$$arity = 3); - - Opal.def(self, '$check_1D100', $DiceBot_check_1D100$34 = function $$check_1D100(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D100$34.$$arity = 4); - - Opal.def(self, '$check_1D20', $DiceBot_check_1D20$35 = function $$check_1D20(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D20$35.$$arity = 4); - - Opal.def(self, '$check_nD10', $DiceBot_check_nD10$36 = function $$check_nD10(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD10$36.$$arity = 5); - - Opal.def(self, '$check_2D6', $DiceBot_check_2D6$37 = function $$check_2D6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_2D6$37.$$arity = 5); - - Opal.def(self, '$check_nD6', $DiceBot_check_nD6$38 = function $$check_nD6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD6$38.$$arity = 5); - - Opal.def(self, '$get_table_by_2d6', $DiceBot_get_table_by_2d6$39 = function $$get_table_by_2d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 2) - }, $DiceBot_get_table_by_2d6$39.$$arity = 1); - - Opal.def(self, '$get_table_by_1d6', $DiceBot_get_table_by_1d6$40 = function $$get_table_by_1d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 1) - }, $DiceBot_get_table_by_1d6$40.$$arity = 1); - - Opal.def(self, '$get_table_by_nD6', $DiceBot_get_table_by_nD6$41 = function $$get_table_by_nD6(table, count) { - var self = this; - - return self.$get_table_by_nDx(table, count, 6) - }, $DiceBot_get_table_by_nD6$41.$$arity = 2); - - Opal.def(self, '$get_table_by_nDx', $DiceBot_get_table_by_nDx$42 = function $$get_table_by_nDx(table, count, diceType) { - var $a, $b, self = this, num = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(num, count))); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_nDx$42.$$arity = 3); - - Opal.def(self, '$get_table_by_1d3', $DiceBot_get_table_by_1d3$43 = function $$get_table_by_1d3(table) { - var $a, $b, self = this, count = nil, num = nil, index = nil, text = nil; - - - self.$debug("get_table_by_1d3"); - count = 1; - $b = self.$roll(count, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - self.$debug("num", num); - index = $rb_divide($rb_minus(num, 1), 2); - self.$debug("index", index); - text = table['$[]'](index); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_1d3$43.$$arity = 1); - - Opal.def(self, '$getD66', $DiceBot_getD66$44 = function $$getD66(isSwap) { - var self = this; - - return self.$bcdice().$getD66(isSwap) - }, $DiceBot_getD66$44.$$arity = 1); - - Opal.def(self, '$get_table_by_d66_swap', $DiceBot_get_table_by_d66_swap$45 = function $$get_table_by_d66_swap(table) { - var self = this, isSwap = nil, number = nil; - - - isSwap = true; - number = self.$bcdice().$getD66(isSwap); - return [self.$get_table_by_number(number, table), number]; - }, $DiceBot_get_table_by_d66_swap$45.$$arity = 1); - - Opal.def(self, '$get_table_by_d66', $DiceBot_get_table_by_d66$46 = function $$get_table_by_d66(table) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, num = nil, text = nil, indexText = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - num = $rb_plus($rb_times($rb_minus(dice1, 1), 6), $rb_minus(dice2, 1)); - text = table['$[]'](num); - indexText = "" + (dice1) + (dice2); - if ($truthy(text['$nil?']())) { - return ["1", indexText]}; - return [text, indexText]; - }, $DiceBot_get_table_by_d66$46.$$arity = 1); - - Opal.def(self, '$getDiceRolledAdditionalText', $DiceBot_getDiceRolledAdditionalText$47 = function $$getDiceRolledAdditionalText(_n1, _n_max, _dice_max) { - var self = this; - - return "" - }, $DiceBot_getDiceRolledAdditionalText$47.$$arity = 3); - - Opal.def(self, '$getDiceRevision', $DiceBot_getDiceRevision$48 = function $$getDiceRevision(_n_max, _dice_max, _total_n) { - var self = this; - - return ["", 0] - }, $DiceBot_getDiceRevision$48.$$arity = 3); - - Opal.def(self, '$isD9', $DiceBot_isD9$49 = function $$isD9() { - var self = this; - - return false - }, $DiceBot_isD9$49.$$arity = 0); - - Opal.def(self, '$getGrichText', $DiceBot_getGrichText$50 = function $$getGrichText(_numberSpot1, _dice_cnt_total, _suc) { - var self = this; - - return "" - }, $DiceBot_getGrichText$50.$$arity = 3); - - Opal.def(self, '$should_reroll?', $DiceBot_should_reroll$ques$51 = function(loop_count) { - var $a, self = this; - - return ($truthy($a = $rb_lt(loop_count, self.rerollLimitCount)) ? $a : self.rerollLimitCount['$=='](0)) - }, $DiceBot_should_reroll$ques$51.$$arity = 1); - - Opal.def(self, '$get_table_by_number', $DiceBot_get_table_by_number$52 = function $$get_table_by_number(index, table, default$) {try { - - var $$53, self = this; - - - - if (default$ == null) { - default$ = "1"; - }; - $send(table, 'each', [], ($$53 = function(item){var self = $$53.$$s || this, number = nil; - - - - if (item == null) { - item = nil; - }; - number = item['$[]'](0); - if ($truthy($rb_ge(number, index))) { - Opal.ret(self.$getTableValue(item['$[]'](1))) - } else { - return nil - };}, $$53.$$s = self, $$53.$$arity = 1, $$53)); - return self.$getTableValue(default$); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_get_table_by_number$52.$$arity = -3); - - Opal.def(self, '$getTableValue', $DiceBot_getTableValue$54 = function $$getTableValue(data) {try { - - var $$55, self = this, lambdaBlock = nil; - - - if ($truthy(data['$kind_of?']($$($nesting, 'Proc')))) { - - lambdaBlock = $send(self, 'lambda', [], ($$55 = function(){var self = $$55.$$s || this; - - Opal.ret(data.$call())}, $$55.$$s = self, $$55.$$arity = 0, $$55)); - return lambdaBlock.$call();}; - return data; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_getTableValue$54.$$arity = 1); - - Opal.def(self, '$analyzeDiceCommandResultMethod', $DiceBot_analyzeDiceCommandResultMethod$56 = function $$analyzeDiceCommandResultMethod(command) {try { - - var $$57, $$58, self = this, methodList = nil; - - - methodList = $send(self.$public_methods(), 'select', [], ($$57 = function(method){var self = $$57.$$s || this; - - - - if (method == null) { - method = nil; - }; - return /^get.+DiceCommandResult$/['$==='](method.$to_s());}, $$57.$$s = self, $$57.$$arity = 1, $$57)); - $send(methodList, 'each', [], ($$58 = function(method){var self = $$58.$$s || this, result = nil; - - - - if (method == null) { - method = nil; - }; - result = self.$send(method, command); - if ($truthy(result['$nil?']())) { - return nil - } else { - Opal.ret(result) - };}, $$58.$$s = self, $$58.$$arity = 1, $$58)); - return nil; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_analyzeDiceCommandResultMethod$56.$$arity = 1); - - Opal.def(self, '$get_table_by_nDx_extratable', $DiceBot_get_table_by_nDx_extratable$59 = function $$get_table_by_nDx_extratable(table, count, diceType) { - var $a, $b, self = this, number = nil, diceText = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(number, count))); - return [text, number, diceText]; - }, $DiceBot_get_table_by_nDx_extratable$59.$$arity = 3); - - Opal.def(self, '$getTableCommandResult', $DiceBot_getTableCommandResult$60 = function $$getTableCommandResult(command, tables, isPrintDiceText) { - var $a, $b, $c, $d, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, count = nil, diceType = nil, limit = nil, item = nil, value = nil, output = nil, diceText = nil, text = nil, number = nil; - - - - if (isPrintDiceText == null) { - isPrintDiceText = true; - }; - info = tables['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type").$upcase(); - table = info['$[]']("table"); - if ($truthy(($truthy($a = type['$==']("D66")) ? self.d66Type['$=='](2) : $a))) { - type = "D66S"}; - $b = (function() {$case = type; - if (/(\d+)D(\d+)/['$===']($case)) { - count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diceType = $$($nesting, 'Regexp').$last_match(2).$to_i(); - limit = $rb_minus($rb_times(diceType, count), $rb_minus(count, 1)); - table = self.$getTableInfoFromExtraTableText(table, limit); - return self.$get_table_by_nDx_extratable(table, count, diceType);} - else if ("D66"['$===']($case) || "D66N"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 36); - $d = self.$get_table_by_d66(table), $c = Opal.to_ary($d), (item = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - output = item['$[]'](1); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else if ("D66S"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 21); - $d = self.$get_table_by_d66_swap(table), $c = Opal.to_ary($d), (output = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else {return self.$raise("" + "invalid dice Type " + (command))}})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), (diceText = ($a[2] == null ? nil : $a[2])), $b; - text = text.$gsub("\\n", "\n"); - text = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rollTableMessageDiceText(text); - if ($truthy(text['$nil?']())) { - return nil}; - if ($truthy(($truthy($a = isPrintDiceText) ? diceText['$nil?']()['$!']() : $a))) { - return "" + (name) + "(" + (number) + "[" + (diceText) + "]) > " + (text)}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $DiceBot_getTableCommandResult$60.$$arity = -3); - - Opal.def(self, '$getTableInfoFromExtraTableText', $DiceBot_getTableInfoFromExtraTableText$61 = function $$getTableInfoFromExtraTableText(text, count) { - var $$62, self = this, newTable = nil; - - - - if (count == null) { - count = nil; - }; - if ($truthy(text['$is_a?']($$($nesting, 'String')))) { - text = text.$split(/\n/)}; - newTable = $send(text, 'map', [], ($$62 = function(item){var self = $$62.$$s || this, $a; - - - - if (item == null) { - item = nil; - }; - if ($truthy(($truthy($a = item['$is_a?']($$($nesting, 'String'))) ? /^(\d+):(.*)/['$==='](item) : $a))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2)] - } else { - return item - };}, $$62.$$s = self, $$62.$$arity = 1, $$62)); - if ($truthy(count['$nil?']())) { - } else if ($truthy(newTable.$size()['$!='](count))) { - self.$raise("" + "invalid table size:" + (newTable.$size()) + "\n" + (newTable.$inspect()))}; - return newTable; - }, $DiceBot_getTableInfoFromExtraTableText$61.$$arity = -2); - return (Opal.def(self, '$roll_tables', $DiceBot_roll_tables$63 = function $$roll_tables(command, tables) { - var self = this, table = nil; - - - table = tables['$[]'](command.$upcase()); - if ($truthy(table)) { - } else { - return nil - }; - return table.$roll(self.$bcdice()).$to_s(); - }, $DiceBot_roll_tables$63.$$arity = 2), nil) && 'roll_tables'; - })($nesting[0], null, $nesting) -})(Opal); diff --git a/src/assets/dicebot/DiceOfTheDead.js b/src/assets/dicebot/DiceOfTheDead.js deleted file mode 100644 index 00b9c3020..000000000 --- a/src/assets/dicebot/DiceOfTheDead.js +++ /dev/null @@ -1,96 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$upcase', '$===', '$to_i', '$last_match', '$checkInfection', '$rollZombie', '$times', '$roll', '$+', '$-', '$ceil', '$/', '$[]', '$first', '$last', '$max', '$min', '$assoc']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceOfTheDead'); - - var $nesting = [self].concat($parent_nesting), $DiceOfTheDead_initialize$1, $DiceOfTheDead_rollDiceCommand$2, $DiceOfTheDead_checkInfection$3, $DiceOfTheDead_rollZombie$5; - - - Opal.const_set($nesting[0], 'ID', "DiceOfTheDead"); - Opal.const_set($nesting[0], 'NAME', "ダイス・オブ・ザ・デッド"); - Opal.const_set($nesting[0], 'SORT_KEY', "たいすおふさてつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・ゾンビ化表 ZMB+x\n" + "(x=オープン中の感染度マスの数。+xは省略可能、省略時は0)\n" + "・感染度表 BIOx\n" + "(xは被弾回数。xは省略可能、省略時は1)\n" + "(上記二つは最初からシークレットダイスで行われます)\n"); - self.$setPrefixes(["(ZMB|BIO).*"]); - - Opal.def(self, '$initialize', $DiceOfTheDead_initialize$1 = function $$initialize() { - var $iter = $DiceOfTheDead_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $DiceOfTheDead_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $DiceOfTheDead_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $DiceOfTheDead_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $DiceOfTheDead_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, self = this, result = nil, secret_flg = nil, $case = nil, roll_times = nil, value = nil; - - - command = command.$upcase(); - result = ""; - secret_flg = false; - $case = command; - if (/^BIO(\d+)?$/i['$===']($case)) { - roll_times = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 1).$to_i(); - result = self.$checkInfection(roll_times); - secret_flg = true;} - else if (/^ZMB(\+(\d+))?$/i['$===']($case)) { - value = $$($nesting, 'Regexp').$last_match(2).$to_i(); - result = self.$rollZombie(value); - secret_flg = true;}; - return [result, secret_flg]; - }, $DiceOfTheDead_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$checkInfection', $DiceOfTheDead_checkInfection$3 = function $$checkInfection(roll_times) { - var $$4, self = this, result = nil; - - - result = "感染度表"; - $send(roll_times, 'times', [], ($$4 = function(){var self = $$4.$$s || this, $a, $b, d1 = nil, d2 = nil, index1 = nil, index2 = nil, table = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d2 = ($a[0] == null ? nil : $a[0])), $b; - result = $rb_plus(result, "" + " > 出目:" + (d1) + "、" + (d2) + " "); - index1 = $rb_minus($rb_divide(d1, 2.0).$ceil(), 1); - index2 = $rb_minus($rb_divide(d2, 2.0).$ceil(), 1); - table = [["「右下(【足】+1)」", "「右中(【足】+1)」", "「右上(【足】+1)」"], ["「中下(【腕】+1)」", "「真中(【腕】+1)」", "「中上(【腕】+1)」"], ["「左下(【頭】+1)」", "「左中(【頭】+1)」", "「左上(【頭】+1)」"]]; - return (result = $rb_plus(result, table['$[]'](index1)['$[]'](index2)));}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - return result; - }, $DiceOfTheDead_checkInfection$3.$$arity = 1); - return (Opal.def(self, '$rollZombie', $DiceOfTheDead_rollZombie$5 = function $$rollZombie(value) { - var $a, $b, self = this, d1 = nil, d2 = nil, diceTotal = nil, table = nil, minDice = nil, maxDice = nil, index = nil, _number = nil, text = nil, result = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d2 = ($a[0] == null ? nil : $a[0])), $b; - diceTotal = $rb_plus($rb_plus(d1, d2), value); - table = [[5, "5以下:影響なし"], [6, "6:任意の部位を1点回復"], [7, "7:〈アイテム〉武器を1つその場に落とす"], [8, "8:〈アイテム〉便利道具1つをその場に落とす"], [9, "9:〈アイテム〉消耗品1つをその場に落とす"], [10, "10:腕の傷が広がる。「部位:【腕】」1点ダメージ"], [11, "11:足の傷が広がる。「部位:【足】」1点ダメージ"], [12, "12:頭の傷が広がる。「部位:【頭】」1点ダメージ"], [13, "13:【ゾンビ化表】が新たに適用されるまで「【感染度】+1マス」の効果を受ける"], [14, "14:即座に自分以外の味方1人のスロット内の〈アイテム〉1つをランダムに捨てさせる"], [15, "15:味方1人に素手で攻撃を行う"], [16, "16:即座に感染度が1上昇する"], [17, "17:次のターンのみ、すべての【能力値】を2倍にする"], [18, "18以上:自分以外の味方1人にできる限り全力で攻撃を行う。〈アイテム〉も可能な限り使用する"]]; - minDice = table.$first().$first(); - maxDice = table.$last().$first(); - index = diceTotal; - index = [minDice, index].$max(); - index = [index, maxDice].$min(); - $b = table.$assoc(index), $a = Opal.to_ary($b), (_number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), $b; - result = "" + "ゾンビ化表 > 出目:" + (d1) + "+" + (d2) + " 感染度:" + (value) + " 合計値:" + (diceTotal) + " > " + (text); - return result; - }, $DiceOfTheDead_rollZombie$5.$$arity = 1), nil) && 'rollZombie'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/DoubleCross.js b/src/assets/dicebot/DoubleCross.js deleted file mode 100644 index ae1fe4d29..000000000 --- a/src/assets/dicebot/DoubleCross.js +++ /dev/null @@ -1,1387 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/DiceBot"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$freeze', '$attr_reader', '$map', '$to_proc', '$join', '$private', '$clearPrefixes', '$!', '$empty?', '$prefixs', '$prefixes', '$class', '$warn', '$id', '$setPrefixes', '$attr_accessor', '$name', '$sort_key', '$help_message', '$attr_writer', '$rand', '$roll', '$marshalSignOfInequality', '$unlimitedRollDiceType', '$getD66Value', '$parren_killer', '$debug', '$isGetOriginalMessage', '$getOriginalMessage', '$=~', '$prefixesPattern', '$last_match', '$removeDiceCommandMessage', '$rollDiceCommandCatched', '$nil?', '$!=', '$sub', '$rollDiceCommand', '$to_s', '$backtrace', '$size', '$===', '$check_1D100', '$check_1D20', '$check_2D6', '$check_nD10', '$check_nD6', '$check_nDx', '$is_a?', '$==', '$send', '$get_table_by_nD6', '$get_table_by_nDx', '$getTableValue', '$[]', '$-', '$/', '$getD66', '$bcdice', '$get_table_by_number', '$+', '$*', '$<', '$each', '$>=', '$kind_of?', '$lambda', '$call', '$select', '$public_methods', '$upcase', '$to_i', '$getTableInfoFromExtraTableText', '$get_table_by_nDx_extratable', '$get_table_by_d66', '$floor', '$%', '$get_table_by_d66_swap', '$raise', '$gsub', '$rollTableMessageDiceText', '$split', '$inspect']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceBot'); - - var $nesting = [self].concat($parent_nesting), $DiceBot_initialize$4, $DiceBot_postSet$5, $DiceBot_info$6, $DiceBot_id$7, $DiceBot_gameType$8, $DiceBot_name$9, $DiceBot_gameName$10, $DiceBot_sort_key$11, $DiceBot_help_message$12, $DiceBot_getHelpMessage$13, $DiceBot_prefixes$14, $DiceBot_setSendMode$15, $DiceBot_bcdice$eq$16, $DiceBot_bcdice$17, $DiceBot_rand$18, $DiceBot_roll$19, $DiceBot_marshalSignOfInequality$20, $DiceBot_unlimitedRollDiceType$21, $DiceBot_setSortType$22, $DiceBot_d66$23, $DiceBot_parren_killer$24, $DiceBot_changeText$25, $DiceBot_dice_command$26, $DiceBot_isGetOriginalMessage$27, $DiceBot_removeDiceCommandMessage$28, $DiceBot_rollDiceCommandCatched$29, $DiceBot_rollDiceCommand$30, $DiceBot_dice_command_xRn$31, $DiceBot_check_result$32, $DiceBot_check_nDx$33, $DiceBot_check_1D100$34, $DiceBot_check_1D20$35, $DiceBot_check_nD10$36, $DiceBot_check_2D6$37, $DiceBot_check_nD6$38, $DiceBot_get_table_by_2d6$39, $DiceBot_get_table_by_1d6$40, $DiceBot_get_table_by_nD6$41, $DiceBot_get_table_by_nDx$42, $DiceBot_get_table_by_1d3$43, $DiceBot_getD66$44, $DiceBot_get_table_by_d66_swap$45, $DiceBot_get_table_by_d66$46, $DiceBot_getDiceRolledAdditionalText$47, $DiceBot_getDiceRevision$48, $DiceBot_isD9$49, $DiceBot_getGrichText$50, $DiceBot_should_reroll$ques$51, $DiceBot_get_table_by_number$52, $DiceBot_getTableValue$54, $DiceBot_analyzeDiceCommandResultMethod$56, $DiceBot_get_table_by_nDx_extratable$59, $DiceBot_getTableCommandResult$60, $DiceBot_getTableInfoFromExtraTableText$61, $DiceBot_roll_tables$63; - - self.$$prototype.rerollLimitCount = self.$$prototype.d66Type = nil; - - Opal.const_set($nesting[0], 'EMPTY_PREFIXES_PATTERN', /(^|\s)(S)?()(\s|$)/i.$freeze()); - Opal.const_set($nesting[0], 'ID', "DiceBot"); - Opal.const_set($nesting[0], 'NAME', "DiceBot"); - Opal.const_set($nesting[0], 'SORT_KEY', "*たいすほつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', ""); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $setPrefixes$1, $clearPrefixes$2, $inherited$3; - - - self.$attr_reader("prefixes"); - self.$attr_reader("prefixesPattern"); - - Opal.def(self, '$setPrefixes', $setPrefixes$1 = function $$setPrefixes(prefixes) { - var self = this; - - - self.prefixes = $send(prefixes, 'map', [], "freeze".$to_proc()).$freeze(); - self.prefixesPattern = new RegExp("" + "(^|\\s)(S)?(" + (prefixes.$join("|")) + ")(\\s|$)", 'i').$freeze(); - return self; - }, $setPrefixes$1.$$arity = 1); - - Opal.def(self, '$clearPrefixes', $clearPrefixes$2 = function $$clearPrefixes() { - var self = this; - - - self.prefixes = [].$freeze(); - self.prefixesPattern = $$($nesting, 'EMPTY_PREFIXES_PATTERN'); - return self; - }, $clearPrefixes$2.$$arity = 0); - self.$private(); - return (Opal.def(self, '$inherited', $inherited$3 = function $$inherited(subclass) { - var self = this; - - return subclass.$clearPrefixes() - }, $inherited$3.$$arity = 1), nil) && 'inherited'; - })(Opal.get_singleton_class(self), $nesting); - self.$clearPrefixes(); - (Opal.class_variable_set($nesting[0], '@@bcdice', nil)); - Opal.const_set($nesting[0], 'DEFAULT_SEND_MODE', 2); - - Opal.def(self, '$initialize', $DiceBot_initialize$4 = function $$initialize() { - var $a, self = this; - - - self.sendMode = $$($nesting, 'DEFAULT_SEND_MODE'); - self.sortType = 0; - self.sameDiceRerollCount = 0; - self.sameDiceRerollType = 0; - self.d66Type = 1; - self.isPrintMaxDice = false; - self.upperRollThreshold = 0; - self.unlimitedRollDiceType = 0; - self.rerollNumber = 0; - self.defaultSuccessTarget = ""; - self.rerollLimitCount = 10000; - self.fractionType = "omit"; - if ($truthy(($truthy($a = self.$prefixs()['$empty?']()['$!']()) ? self.$class().$prefixes()['$empty?']() : $a))) { - - self.$warn("" + (self.$id()) + ": #prefixs is deprecated. Please use .setPrefixes."); - return self.$class().$setPrefixes(self.$prefixs()); - } else { - return nil - }; - }, $DiceBot_initialize$4.$$arity = 0); - self.$attr_accessor("rerollLimitCount"); - self.$attr_reader("sendMode", "sameDiceRerollCount", "sameDiceRerollType", "d66Type"); - self.$attr_reader("isPrintMaxDice", "upperRollThreshold"); - self.$attr_reader("defaultSuccessTarget", "rerollNumber", "fractionType"); - - Opal.def(self, '$postSet', $DiceBot_postSet$5 = function $$postSet() { - var self = this; - - return nil - }, $DiceBot_postSet$5.$$arity = 0); - - Opal.def(self, '$info', $DiceBot_info$6 = function $$info() { - var self = this; - - return $hash2(["gameType", "name", "sortKey", "prefixs", "info"], {"gameType": self.$id(), "name": self.$name(), "sortKey": self.$sort_key(), "prefixs": self.$class().$prefixes(), "info": self.$help_message()}) - }, $DiceBot_info$6.$$arity = 0); - - Opal.def(self, '$id', $DiceBot_id$7 = function $$id() { - var self = this; - - return $$$(self.$class(), 'ID') - }, $DiceBot_id$7.$$arity = 0); - - Opal.def(self, '$gameType', $DiceBot_gameType$8 = function $$gameType() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameType is deprecated. Please use #id."); - return self.$id(); - }, $DiceBot_gameType$8.$$arity = 0); - - Opal.def(self, '$name', $DiceBot_name$9 = function $$name() { - var self = this; - - return $$$(self.$class(), 'NAME') - }, $DiceBot_name$9.$$arity = 0); - - Opal.def(self, '$gameName', $DiceBot_gameName$10 = function $$gameName() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameName is deprecated. Please use #name."); - return self.$name(); - }, $DiceBot_gameName$10.$$arity = 0); - - Opal.def(self, '$sort_key', $DiceBot_sort_key$11 = function $$sort_key() { - var self = this; - - return $$$(self.$class(), 'SORT_KEY') - }, $DiceBot_sort_key$11.$$arity = 0); - - Opal.def(self, '$help_message', $DiceBot_help_message$12 = function $$help_message() { - var self = this; - - return $$$(self.$class(), 'HELP_MESSAGE') - }, $DiceBot_help_message$12.$$arity = 0); - - Opal.def(self, '$getHelpMessage', $DiceBot_getHelpMessage$13 = function $$getHelpMessage() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #getHelpMessage is deprecated. Please use #help_message."); - return self.$help_message(); - }, $DiceBot_getHelpMessage$13.$$arity = 0); - - Opal.def(self, '$prefixes', $DiceBot_prefixes$14 = function $$prefixes() { - var self = this; - - return self.$class().$prefixes() - }, $DiceBot_prefixes$14.$$arity = 0); - Opal.alias(self, "prefixs", "prefixes"); - - Opal.def(self, '$setSendMode', $DiceBot_setSendMode$15 = function $$setSendMode(m) { - var self = this; - - return (self.sendMode = m) - }, $DiceBot_setSendMode$15.$$arity = 1); - self.$attr_writer("upperRollThreshold"); - - Opal.def(self, '$bcdice=', $DiceBot_bcdice$eq$16 = function(b) { - var self = this; - - return (Opal.class_variable_set($nesting[0], '@@bcdice', b)) - }, $DiceBot_bcdice$eq$16.$$arity = 1); - - Opal.def(self, '$bcdice', $DiceBot_bcdice$17 = function $$bcdice() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a) - }, $DiceBot_bcdice$17.$$arity = 0); - - Opal.def(self, '$rand', $DiceBot_rand$18 = function $$rand(max) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rand(max) - }, $DiceBot_rand$18.$$arity = 1); - - Opal.def(self, '$roll', $DiceBot_roll$19 = function $$roll($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'roll', Opal.to_a(args)); - }, $DiceBot_roll$19.$$arity = -1); - - Opal.def(self, '$marshalSignOfInequality', $DiceBot_marshalSignOfInequality$20 = function $$marshalSignOfInequality($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'marshalSignOfInequality', Opal.to_a(args)); - }, $DiceBot_marshalSignOfInequality$20.$$arity = -1); - - Opal.def(self, '$unlimitedRollDiceType', $DiceBot_unlimitedRollDiceType$21 = function $$unlimitedRollDiceType() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$unlimitedRollDiceType() - }, $DiceBot_unlimitedRollDiceType$21.$$arity = 0); - self.$attr_reader("sortType"); - - Opal.def(self, '$setSortType', $DiceBot_setSortType$22 = function $$setSortType(s) { - var self = this; - - return (self.sortType = s) - }, $DiceBot_setSortType$22.$$arity = 1); - - Opal.def(self, '$d66', $DiceBot_d66$23 = function $$d66($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'getD66Value', Opal.to_a(args)); - }, $DiceBot_d66$23.$$arity = -1); - - Opal.def(self, '$parren_killer', $DiceBot_parren_killer$24 = function $$parren_killer(string) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$parren_killer(string) - }, $DiceBot_parren_killer$24.$$arity = 1); - - Opal.def(self, '$changeText', $DiceBot_changeText$25 = function $$changeText(string) { - var self = this; - - - self.$debug("DiceBot.parren_killer_add called"); - return string; - }, $DiceBot_changeText$25.$$arity = 1); - - Opal.def(self, '$dice_command', $DiceBot_dice_command$26 = function $$dice_command(string, nick_e) { - var $a, $b, self = this, secret_flg = nil, secretMarker = nil, command = nil, output_msg = nil; - - - if ($truthy(self.$isGetOriginalMessage())) { - string = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$getOriginalMessage()}; - self.$debug("dice_command Begin string", string); - secret_flg = false; - if ($truthy(self.$class().$prefixesPattern()['$=~'](string))) { - } else { - - self.$debug("not match in prefixes"); - return ["1", secret_flg]; - }; - secretMarker = $$($nesting, 'Regexp').$last_match(2); - command = $$($nesting, 'Regexp').$last_match(3); - command = self.$removeDiceCommandMessage(command); - self.$debug("dicebot after command", command); - self.$debug("match"); - $b = self.$rollDiceCommandCatched(command), $a = Opal.to_ary($b), (output_msg = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = output_msg['$nil?']()) ? $a : output_msg['$empty?']()))) { - output_msg = "1"}; - secret_flg = ($truthy($a = secret_flg) ? $a : false); - if ($truthy(output_msg['$!=']("1"))) { - output_msg = "" + (nick_e) + ": " + (output_msg)}; - if ($truthy(secretMarker)) { - if ($truthy(output_msg['$!=']("1"))) { - secret_flg = true}}; - return [output_msg, secret_flg]; - }, $DiceBot_dice_command$26.$$arity = 2); - - Opal.def(self, '$isGetOriginalMessage', $DiceBot_isGetOriginalMessage$27 = function $$isGetOriginalMessage() { - var self = this; - - return false - }, $DiceBot_isGetOriginalMessage$27.$$arity = 0); - - Opal.def(self, '$removeDiceCommandMessage', $DiceBot_removeDiceCommandMessage$28 = function $$removeDiceCommandMessage(command) { - var self = this; - - return command.$sub(/[\s ].+/, "") - }, $DiceBot_removeDiceCommandMessage$28.$$arity = 1); - - Opal.def(self, '$rollDiceCommandCatched', $DiceBot_rollDiceCommandCatched$29 = function $$rollDiceCommandCatched(command) { - var $a, $b, self = this, result = nil, secret_flg = nil, e = nil; - - - result = nil; - - try { - - self.$debug("call rollDiceCommand command", command); - $b = self.$rollDiceCommand(command), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - self.$debug("executeCommand exception", e.$to_s(), e.$backtrace().$join("\n")) - } finally { Opal.pop_exception() } - } else { throw $err; } - };; - self.$debug("rollDiceCommand result", result); - return [result, secret_flg]; - }, $DiceBot_rollDiceCommandCatched$29.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $DiceBot_rollDiceCommand$30 = function $$rollDiceCommand(_command) { - var self = this; - - return nil - }, $DiceBot_rollDiceCommand$30.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $DiceBot_dice_command_xRn$31 = function $$dice_command_xRn(_string, _nick_e) { - var self = this; - - return "" - }, $DiceBot_dice_command_xRn$31.$$arity = 2); - - Opal.def(self, '$check_result', $DiceBot_check_result$32 = function $$check_result(total, dice_total, dice_list, sides, cmp_op, target) { - var $a, self = this, ret = nil, $case = nil; - - - ret = (function() {$case = [dice_list.$size(), sides]; - if ([1, 100]['$===']($case)) {return self.$check_1D100(total, dice_total, cmp_op, target)} - else if ([1, 20]['$===']($case)) {return self.$check_1D20(total, dice_total, cmp_op, target)} - else if ([2, 6]['$===']($case)) {return self.$check_2D6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - ret = (function() {$case = sides; - if ((10)['$===']($case)) {return self.$check_nD10(total, dice_total, dice_list, cmp_op, target)} - else if ((6)['$===']($case)) {return self.$check_nD6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - return self.$check_nDx(total, cmp_op, target); - }, $DiceBot_check_result$32.$$arity = 6); - - Opal.def(self, '$check_nDx', $DiceBot_check_nDx$33 = function $$check_nDx(total, cmp_op, target) { - var self = this, success = nil; - - - if ($truthy(target['$is_a?']($$($nesting, 'String')))) { - return " > 失敗"}; - success = (function() {if (cmp_op['$==']("!=")) { - return total['$!='](target) - } else { - return total.$send(cmp_op, target) - }; return nil; })(); - if ($truthy(success)) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $DiceBot_check_nDx$33.$$arity = 3); - - Opal.def(self, '$check_1D100', $DiceBot_check_1D100$34 = function $$check_1D100(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D100$34.$$arity = 4); - - Opal.def(self, '$check_1D20', $DiceBot_check_1D20$35 = function $$check_1D20(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D20$35.$$arity = 4); - - Opal.def(self, '$check_nD10', $DiceBot_check_nD10$36 = function $$check_nD10(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD10$36.$$arity = 5); - - Opal.def(self, '$check_2D6', $DiceBot_check_2D6$37 = function $$check_2D6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_2D6$37.$$arity = 5); - - Opal.def(self, '$check_nD6', $DiceBot_check_nD6$38 = function $$check_nD6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD6$38.$$arity = 5); - - Opal.def(self, '$get_table_by_2d6', $DiceBot_get_table_by_2d6$39 = function $$get_table_by_2d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 2) - }, $DiceBot_get_table_by_2d6$39.$$arity = 1); - - Opal.def(self, '$get_table_by_1d6', $DiceBot_get_table_by_1d6$40 = function $$get_table_by_1d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 1) - }, $DiceBot_get_table_by_1d6$40.$$arity = 1); - - Opal.def(self, '$get_table_by_nD6', $DiceBot_get_table_by_nD6$41 = function $$get_table_by_nD6(table, count) { - var self = this; - - return self.$get_table_by_nDx(table, count, 6) - }, $DiceBot_get_table_by_nD6$41.$$arity = 2); - - Opal.def(self, '$get_table_by_nDx', $DiceBot_get_table_by_nDx$42 = function $$get_table_by_nDx(table, count, diceType) { - var $a, $b, self = this, num = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(num, count))); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_nDx$42.$$arity = 3); - - Opal.def(self, '$get_table_by_1d3', $DiceBot_get_table_by_1d3$43 = function $$get_table_by_1d3(table) { - var $a, $b, self = this, count = nil, num = nil, index = nil, text = nil; - - - self.$debug("get_table_by_1d3"); - count = 1; - $b = self.$roll(count, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - self.$debug("num", num); - index = $rb_divide($rb_minus(num, 1), 2); - self.$debug("index", index); - text = table['$[]'](index); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_1d3$43.$$arity = 1); - - Opal.def(self, '$getD66', $DiceBot_getD66$44 = function $$getD66(isSwap) { - var self = this; - - return self.$bcdice().$getD66(isSwap) - }, $DiceBot_getD66$44.$$arity = 1); - - Opal.def(self, '$get_table_by_d66_swap', $DiceBot_get_table_by_d66_swap$45 = function $$get_table_by_d66_swap(table) { - var self = this, isSwap = nil, number = nil; - - - isSwap = true; - number = self.$bcdice().$getD66(isSwap); - return [self.$get_table_by_number(number, table), number]; - }, $DiceBot_get_table_by_d66_swap$45.$$arity = 1); - - Opal.def(self, '$get_table_by_d66', $DiceBot_get_table_by_d66$46 = function $$get_table_by_d66(table) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, num = nil, text = nil, indexText = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - num = $rb_plus($rb_times($rb_minus(dice1, 1), 6), $rb_minus(dice2, 1)); - text = table['$[]'](num); - indexText = "" + (dice1) + (dice2); - if ($truthy(text['$nil?']())) { - return ["1", indexText]}; - return [text, indexText]; - }, $DiceBot_get_table_by_d66$46.$$arity = 1); - - Opal.def(self, '$getDiceRolledAdditionalText', $DiceBot_getDiceRolledAdditionalText$47 = function $$getDiceRolledAdditionalText(_n1, _n_max, _dice_max) { - var self = this; - - return "" - }, $DiceBot_getDiceRolledAdditionalText$47.$$arity = 3); - - Opal.def(self, '$getDiceRevision', $DiceBot_getDiceRevision$48 = function $$getDiceRevision(_n_max, _dice_max, _total_n) { - var self = this; - - return ["", 0] - }, $DiceBot_getDiceRevision$48.$$arity = 3); - - Opal.def(self, '$isD9', $DiceBot_isD9$49 = function $$isD9() { - var self = this; - - return false - }, $DiceBot_isD9$49.$$arity = 0); - - Opal.def(self, '$getGrichText', $DiceBot_getGrichText$50 = function $$getGrichText(_numberSpot1, _dice_cnt_total, _suc) { - var self = this; - - return "" - }, $DiceBot_getGrichText$50.$$arity = 3); - - Opal.def(self, '$should_reroll?', $DiceBot_should_reroll$ques$51 = function(loop_count) { - var $a, self = this; - - return ($truthy($a = $rb_lt(loop_count, self.rerollLimitCount)) ? $a : self.rerollLimitCount['$=='](0)) - }, $DiceBot_should_reroll$ques$51.$$arity = 1); - - Opal.def(self, '$get_table_by_number', $DiceBot_get_table_by_number$52 = function $$get_table_by_number(index, table, default$) {try { - - var $$53, self = this; - - - - if (default$ == null) { - default$ = "1"; - }; - $send(table, 'each', [], ($$53 = function(item){var self = $$53.$$s || this, number = nil; - - - - if (item == null) { - item = nil; - }; - number = item['$[]'](0); - if ($truthy($rb_ge(number, index))) { - Opal.ret(self.$getTableValue(item['$[]'](1))) - } else { - return nil - };}, $$53.$$s = self, $$53.$$arity = 1, $$53)); - return self.$getTableValue(default$); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_get_table_by_number$52.$$arity = -3); - - Opal.def(self, '$getTableValue', $DiceBot_getTableValue$54 = function $$getTableValue(data) {try { - - var $$55, self = this, lambdaBlock = nil; - - - if ($truthy(data['$kind_of?']($$($nesting, 'Proc')))) { - - lambdaBlock = $send(self, 'lambda', [], ($$55 = function(){var self = $$55.$$s || this; - - Opal.ret(data.$call())}, $$55.$$s = self, $$55.$$arity = 0, $$55)); - return lambdaBlock.$call();}; - return data; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_getTableValue$54.$$arity = 1); - - Opal.def(self, '$analyzeDiceCommandResultMethod', $DiceBot_analyzeDiceCommandResultMethod$56 = function $$analyzeDiceCommandResultMethod(command) {try { - - var $$57, $$58, self = this, methodList = nil; - - - methodList = $send(self.$public_methods(), 'select', [], ($$57 = function(method){var self = $$57.$$s || this; - - - - if (method == null) { - method = nil; - }; - return /^get.+DiceCommandResult$/['$==='](method.$to_s());}, $$57.$$s = self, $$57.$$arity = 1, $$57)); - $send(methodList, 'each', [], ($$58 = function(method){var self = $$58.$$s || this, result = nil; - - - - if (method == null) { - method = nil; - }; - result = self.$send(method, command); - if ($truthy(result['$nil?']())) { - return nil - } else { - Opal.ret(result) - };}, $$58.$$s = self, $$58.$$arity = 1, $$58)); - return nil; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_analyzeDiceCommandResultMethod$56.$$arity = 1); - - Opal.def(self, '$get_table_by_nDx_extratable', $DiceBot_get_table_by_nDx_extratable$59 = function $$get_table_by_nDx_extratable(table, count, diceType) { - var $a, $b, self = this, number = nil, diceText = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(number, count))); - return [text, number, diceText]; - }, $DiceBot_get_table_by_nDx_extratable$59.$$arity = 3); - - Opal.def(self, '$getTableCommandResult', $DiceBot_getTableCommandResult$60 = function $$getTableCommandResult(command, tables, isPrintDiceText) { - var $a, $b, $c, $d, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, count = nil, diceType = nil, limit = nil, item = nil, value = nil, output = nil, diceText = nil, text = nil, number = nil; - - - - if (isPrintDiceText == null) { - isPrintDiceText = true; - }; - info = tables['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type").$upcase(); - table = info['$[]']("table"); - if ($truthy(($truthy($a = type['$==']("D66")) ? self.d66Type['$=='](2) : $a))) { - type = "D66S"}; - $b = (function() {$case = type; - if (/(\d+)D(\d+)/['$===']($case)) { - count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diceType = $$($nesting, 'Regexp').$last_match(2).$to_i(); - limit = $rb_minus($rb_times(diceType, count), $rb_minus(count, 1)); - table = self.$getTableInfoFromExtraTableText(table, limit); - return self.$get_table_by_nDx_extratable(table, count, diceType);} - else if ("D66"['$===']($case) || "D66N"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 36); - $d = self.$get_table_by_d66(table), $c = Opal.to_ary($d), (item = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - output = item['$[]'](1); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else if ("D66S"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 21); - $d = self.$get_table_by_d66_swap(table), $c = Opal.to_ary($d), (output = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else {return self.$raise("" + "invalid dice Type " + (command))}})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), (diceText = ($a[2] == null ? nil : $a[2])), $b; - text = text.$gsub("\\n", "\n"); - text = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rollTableMessageDiceText(text); - if ($truthy(text['$nil?']())) { - return nil}; - if ($truthy(($truthy($a = isPrintDiceText) ? diceText['$nil?']()['$!']() : $a))) { - return "" + (name) + "(" + (number) + "[" + (diceText) + "]) > " + (text)}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $DiceBot_getTableCommandResult$60.$$arity = -3); - - Opal.def(self, '$getTableInfoFromExtraTableText', $DiceBot_getTableInfoFromExtraTableText$61 = function $$getTableInfoFromExtraTableText(text, count) { - var $$62, self = this, newTable = nil; - - - - if (count == null) { - count = nil; - }; - if ($truthy(text['$is_a?']($$($nesting, 'String')))) { - text = text.$split(/\n/)}; - newTable = $send(text, 'map', [], ($$62 = function(item){var self = $$62.$$s || this, $a; - - - - if (item == null) { - item = nil; - }; - if ($truthy(($truthy($a = item['$is_a?']($$($nesting, 'String'))) ? /^(\d+):(.*)/['$==='](item) : $a))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2)] - } else { - return item - };}, $$62.$$s = self, $$62.$$arity = 1, $$62)); - if ($truthy(count['$nil?']())) { - } else if ($truthy(newTable.$size()['$!='](count))) { - self.$raise("" + "invalid table size:" + (newTable.$size()) + "\n" + (newTable.$inspect()))}; - return newTable; - }, $DiceBot_getTableInfoFromExtraTableText$61.$$arity = -2); - return (Opal.def(self, '$roll_tables', $DiceBot_roll_tables$63 = function $$roll_tables(command, tables) { - var self = this, table = nil; - - - table = tables['$[]'](command.$upcase()); - if ($truthy(table)) { - } else { - return nil - }; - return table.$roll(self.$bcdice()).$to_s(); - }, $DiceBot_roll_tables$63.$$arity = 2), nil) && 'roll_tables'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/range_table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$new', '$alias_method', '$freeze', '$lambda', '$name', '$sum', '$content', '$attr_reader', '$match', '$raise', '$to_i', '$[]', '$store', '$find', '$include?', '$range', '$roll', '$map', '$split', '$to_proc', '$fetch', '$formatted=', '$-', '$private', '$coerce_to_int_range', '$sort_by', '$min', '$assert_min_sum_is_covered', '$assert_max_sum_is_covered', '$assert_no_gap_or_overlap_in_ranges', '$===', '$is_a?', '$begin', '$end', '$class', '$first', '$*', '$last', '$each_cons', '$max', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RangeTable'); - - var $nesting = [self].concat($parent_nesting), $RangeTable$1, $RangeTable$2, $RangeTable_initialize$3, $RangeTable_fetch$4, $RangeTable_roll$6, $RangeTable_store$7, $RangeTable_coerce_to_int_range$11, $RangeTable_assert_min_sum_is_covered$12, $RangeTable_assert_max_sum_is_covered$13, $RangeTable_assert_no_gap_or_overlap_in_ranges$14; - - self.$$prototype.name = self.$$prototype.items = self.$$prototype.num_of_dice = self.$$prototype.num_of_sides = self.$$prototype.formatter = nil; - - Opal.const_set($nesting[0], 'RollResult', $send($$($nesting, 'Struct'), 'new', ["sum", "values", "content", "formatted"], ($RangeTable$1 = function(){var self = $RangeTable$1.$$s || this; - - return self.$alias_method("to_s", "formatted")}, $RangeTable$1.$$s = self, $RangeTable$1.$$arity = 0, $RangeTable$1))); - Opal.const_set($nesting[0], 'Item', $$($nesting, 'Struct').$new("range", "content")); - Opal.const_set($nesting[0], 'DICE_ROLL_METHOD_RE', /^(\d+)D(\d+)$/i.$freeze()); - Opal.const_set($nesting[0], 'DEFAULT_FORMATTER', $send(self, 'lambda', [], ($RangeTable$2 = function(table, result){var self = $RangeTable$2.$$s || this; - - - - if (table == null) { - table = nil; - }; - - if (result == null) { - result = nil; - }; - return "" + (table.$name()) + "(" + (result.$sum()) + ") > " + (result.$content());}, $RangeTable$2.$$s = self, $RangeTable$2.$$arity = 2, $RangeTable$2))); - self.$attr_reader("name"); - self.$attr_reader("num_of_dice"); - self.$attr_reader("num_of_sides"); - - Opal.def(self, '$initialize', $RangeTable_initialize$3 = function $$initialize(name, dice_roll_method, items) { - var $iter = $RangeTable_initialize$3.$$p, formatter = $iter || nil, $a, self = this, m = nil; - - if ($iter) $RangeTable_initialize$3.$$p = null; - - - if ($iter) $RangeTable_initialize$3.$$p = null;; - self.name = name.$freeze(); - self.formatter = ($truthy($a = formatter) ? $a : $$($nesting, 'DEFAULT_FORMATTER')); - m = $$($nesting, 'DICE_ROLL_METHOD_RE').$match(dice_roll_method); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + (self.name) + ": invalid dice roll method: " + (dice_roll_method)) - }; - self.num_of_dice = m['$[]'](1).$to_i(); - self.num_of_sides = m['$[]'](2).$to_i(); - return self.$store(items); - }, $RangeTable_initialize$3.$$arity = 3); - - Opal.def(self, '$fetch', $RangeTable_fetch$4 = function $$fetch(value) { - var $$5, self = this, item = nil; - - - item = $send(self.items, 'find', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$range()['$include?'](value);}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - if ($truthy(item)) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": value is out of range: " + (value)) - }; - return item; - }, $RangeTable_fetch$4.$$arity = 1); - - Opal.def(self, '$roll', $RangeTable_roll$6 = function $$roll(bcdice) { - var $a, $b, self = this, sum = nil, values_str = nil, values = nil, result = nil, $writer = nil; - - - $b = bcdice.$roll(self.num_of_dice, self.num_of_sides), $a = Opal.to_ary($b), (sum = ($a[0] == null ? nil : $a[0])), (values_str = ($a[1] == null ? nil : $a[1])), $b; - values = $send(values_str.$split(","), 'map', [], "to_i".$to_proc()); - result = $$($nesting, 'RollResult').$new(sum, values, self.$fetch(sum).$content()); - - $writer = [self.formatter['$[]'](self, result)]; - $send(result, 'formatted=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return result; - }, $RangeTable_roll$6.$$arity = 1); - self.$private(); - - Opal.def(self, '$store', $RangeTable_store$7 = function $$store(items) { - var $$8, $$9, $$10, self = this, items_with_range = nil, sorted_items = nil; - - - items_with_range = $send(items, 'map', [], ($$8 = function(r, c){var self = $$8.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (c == null) { - c = nil; - }; - return [self.$coerce_to_int_range(r), c];}, $$8.$$s = self, $$8.$$arity = 2, $$8)); - sorted_items = $send(items_with_range, 'sort_by', [], ($$9 = function(r, _){var self = $$9.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (_ == null) { - _ = nil; - }; - return r.$min();}, $$9.$$s = self, $$9.$$arity = 2, $$9)); - self.$assert_min_sum_is_covered(sorted_items); - self.$assert_max_sum_is_covered(sorted_items); - self.$assert_no_gap_or_overlap_in_ranges(sorted_items); - self.items = $send(sorted_items, 'map', [], ($$10 = function(range, content){var self = $$10.$$s || this; - - - - if (range == null) { - range = nil; - }; - - if (content == null) { - content = nil; - }; - return $$($nesting, 'Item').$new(range, content.$freeze()).$freeze();}, $$10.$$s = self, $$10.$$arity = 2, $$10)).$freeze(); - return self; - }, $RangeTable_store$7.$$arity = 1); - - Opal.def(self, '$coerce_to_int_range', $RangeTable_coerce_to_int_range$11 = function $$coerce_to_int_range(x) { - var $a, self = this, $case = nil; - - - $case = x; - if ($$($nesting, 'Integer')['$===']($case)) {return $$($nesting, 'Range').$new(x, x)} - else if ($$($nesting, 'Range')['$===']($case)) {if ($truthy(($truthy($a = x.$begin()['$is_a?']($$($nesting, 'Integer'))) ? x.$end()['$is_a?']($$($nesting, 'Integer')) : $a))) { - return x}}; - return self.$raise($$($nesting, 'TypeError'), "" + (self.name) + ": " + (x) + " (" + (x.$class()) + ") must be an Integer or a Range with Integers "); - }, $RangeTable_coerce_to_int_range$11.$$arity = 1); - - Opal.def(self, '$assert_min_sum_is_covered', $RangeTable_assert_min_sum_is_covered$12 = function $$assert_min_sum_is_covered(sorted_items) { - var self = this, min_sum = nil, range = nil; - - - min_sum = self.num_of_dice; - range = sorted_items.$first()['$[]'](0); - if ($truthy(range['$include?'](min_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": min value (" + (min_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_min_sum_is_covered$12.$$arity = 1); - - Opal.def(self, '$assert_max_sum_is_covered', $RangeTable_assert_max_sum_is_covered$13 = function $$assert_max_sum_is_covered(sorted_items) { - var self = this, max_sum = nil, range = nil; - - - max_sum = $rb_times(self.num_of_dice, self.num_of_sides); - range = sorted_items.$last()['$[]'](0); - if ($truthy(range['$include?'](max_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": max value (" + (max_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_max_sum_is_covered$13.$$arity = 1); - return (Opal.def(self, '$assert_no_gap_or_overlap_in_ranges', $RangeTable_assert_no_gap_or_overlap_in_ranges$14 = function $$assert_no_gap_or_overlap_in_ranges(sorted_items) { - var $$15, self = this; - - - $send(sorted_items, 'each_cons', [2], ($$15 = function(i1, i2){var self = $$15.$$s || this, r1 = nil, r2 = nil, max1 = nil, next_of_max1 = nil; - if (self.name == null) self.name = nil; - - - - if (i1 == null) { - i1 = nil; - }; - - if (i2 == null) { - i2 = nil; - }; - r1 = i1['$[]'](0); - r2 = i2['$[]'](0); - max1 = r1.$max(); - next_of_max1 = $rb_plus(max1, 1); - if ($truthy(r2['$include?'](max1))) { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range overlap: " + (r1) + " and " + (r2))}; - if ($truthy(r2['$include?'](next_of_max1))) { - return nil - } else { - return self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range gap: " + (r1) + " and " + (r2)) - };}, $$15.$$s = self, $$15.$$arity = 2, $$15)); - return self; - }, $RangeTable_assert_no_gap_or_overlap_in_ranges$14.$$arity = 1), nil) && 'assert_no_gap_or_overlap_in_ranges'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range; - - Opal.add_stubs(['$require', '$setPrefixes', '$include', '$format_modifier', '$node_expression', '$<', '$>', '$should_reroll?', '$new', '$[]', '$roll', '$push', '$num_of_critical_occurrences', '$+', '$result_str', '$private', '$all?', '$values', '$==', '$reduce', '$map', '$to_proc', '$join', '$achieved_value_with_if_fumble', '$compare_result', '$compact', '$to_s', '$>=', '$attr_reader', '$sort', '$max', '$any?', '$critical?', '$length', '$select', '$count', '$size', '$parse_dx', '$execute', '$roll_emotion_table', '$freeze', '$===', '$parse_dx_od', '$last_match', '$parse_dx_shippu_doto', '$to_i', '$eval', '$bcdice', '$content', '$sum']); - - self.$require("diceBot/DiceBot"); - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/modifier_formatter"); - self.$require("utils/range_table"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DoubleCross'); - - var $nesting = [self].concat($parent_nesting), $DoubleCross_check_nD10$16, $DoubleCross_rollDiceCommand$17, $DoubleCross_parse_dx$18, $DoubleCross_parse_dx_od$19, $DoubleCross_parse_dx_shippu_doto$20, $DoubleCross_roll_emotion_table$21; - - - Opal.const_set($nesting[0], 'ID', "DoubleCross"); - Opal.const_set($nesting[0], 'NAME', "ダブルクロス2nd,3rd"); - Opal.const_set($nesting[0], 'SORT_KEY', "たふるくろす2"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定コマンド(xDX+y@c or xDXc+y)\n" + " \"(個数)DX(修正)@(クリティカル値)\" もしくは \"(個数)DX(クリティカル値)(修正)\" で指定します。\n" + " 修正値も付けられます。\n" + " 例)10dx  10dx+5@8(OD tool式)  5DX7+7-3(疾風怒濤式)\n" + "\n" + "・各種表\n" + " ・感情表(ET)\n" + "  ポジティブとネガティブの両方を振って、表になっている側に○を付けて表示します。\n" + "  もちろん任意で選ぶ部分は変更して構いません。\n" + "\n" + "・D66ダイスあり\n"); - self.$setPrefixes(["\\d+DX.*", "ET"]); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DX'); - - var $nesting = [self].concat($parent_nesting), $DX_initialize$1, $DX_execute$2, $DX_node_expression$4, $DX_result_str$5, $DX_achieved_value_with_if_fumble$7, $DX_compare_result$8; - - self.$$prototype.modifier = self.$$prototype.critical_value = self.$$prototype.expression = self.$$prototype.num = self.$$prototype.modifier_str = self.$$prototype.target_value = nil; - - self.$include($$($nesting, 'ModifierFormatter')); - - Opal.def(self, '$initialize', $DX_initialize$1 = function $$initialize(num, critical_value, modifier, target_value) { - var self = this; - - - self.num = num; - self.critical_value = critical_value; - self.modifier = modifier; - self.target_value = target_value; - self.modifier_str = self.$format_modifier(self.modifier); - return (self.expression = self.$node_expression()); - }, $DX_initialize$1.$$arity = 4); - - Opal.def(self, '$execute', $DX_execute$2 = function $$execute(bot) { - var $a, $b, $$3, self = this, value_groups = nil, num_of_dice = nil, loop_count = nil, values = nil, value_group = nil; - - - if ($truthy($rb_lt(self.critical_value, 2))) { - return "" + "(" + (self.expression) + ") > クリティカル値が低すぎます。2以上を指定してください。"}; - if ($truthy($rb_lt(self.num, 1))) { - return "" + "(" + (self.expression) + ") > 自動失敗"}; - value_groups = []; - num_of_dice = self.num; - loop_count = 0; - while ($truthy(($truthy($b = $rb_gt(num_of_dice, 0)) ? bot['$should_reroll?'](loop_count) : $b))) { - - values = $send($$($nesting, 'Array'), 'new', [num_of_dice], ($$3 = function(){var self = $$3.$$s || this; - - return bot.$roll(1, 10)['$[]'](0)}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - value_group = $$($nesting, 'ValueGroup').$new(values, self.critical_value); - value_groups.$push(value_group); - num_of_dice = value_group.$num_of_critical_occurrences(); - loop_count = $rb_plus(loop_count, 1); - }; - return self.$result_str(value_groups); - }, $DX_execute$2.$$arity = 1); - self.$private(); - - Opal.def(self, '$node_expression', $DX_node_expression$4 = function $$node_expression() { - var self = this, lhs = nil; - - - lhs = "" + (self.num) + "DX" + (self.critical_value) + (self.modifier_str); - return (function() {if ($truthy(self.target_value)) { - return "" + (lhs) + ">=" + (self.target_value) - } else { - return lhs - }; return nil; })(); - }, $DX_node_expression$4.$$arity = 0); - - Opal.def(self, '$result_str', $DX_result_str$5 = function $$result_str(value_groups) { - var $$6, self = this, fumble = nil, sum = nil, achieved_value = nil, parts = nil; - - - fumble = $send(value_groups['$[]'](0).$values(), 'all?', [], ($$6 = function(value){var self = $$6.$$s || this; - - - - if (value == null) { - value = nil; - }; - return value['$=='](1);}, $$6.$$s = self, $$6.$$arity = 1, $$6)); - sum = $send($send(value_groups, 'map', [], "max".$to_proc()), 'reduce', [0], "+".$to_proc()); - achieved_value = (function() {if ($truthy(fumble)) { - return 0 - } else { - - return $rb_plus(sum, self.modifier); - }; return nil; })(); - parts = ["" + "(" + (self.expression) + ")", "" + (value_groups.$join("+")) + (self.modifier_str), self.$achieved_value_with_if_fumble(achieved_value, fumble), self.$compare_result(achieved_value, fumble)]; - return parts.$compact().$join(" > "); - }, $DX_result_str$5.$$arity = 1); - - Opal.def(self, '$achieved_value_with_if_fumble', $DX_achieved_value_with_if_fumble$7 = function $$achieved_value_with_if_fumble(achieved_value, fumble) { - var self = this; - - if ($truthy(fumble)) { - return "" + (achieved_value) + " (ファンブル)" - } else { - return achieved_value.$to_s() - } - }, $DX_achieved_value_with_if_fumble$7.$$arity = 2); - return (Opal.def(self, '$compare_result', $DX_compare_result$8 = function $$compare_result(achieved_value, fumble) { - var self = this; - - - if ($truthy(self.target_value)) { - } else { - return nil - }; - if ($truthy(fumble)) { - return "失敗"}; - return (function() {if ($truthy($rb_ge(achieved_value, self.target_value))) { - return "成功" - } else { - return "失敗" - }; return nil; })(); - }, $DX_compare_result$8.$$arity = 2), nil) && 'compare_result'; - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ValueGroup'); - - var $nesting = [self].concat($parent_nesting), $ValueGroup_initialize$9, $ValueGroup_to_s$10, $ValueGroup_max$11, $ValueGroup_num_of_critical_occurrences$13, $ValueGroup_critical$ques$15; - - self.$$prototype.values = self.$$prototype.critical_value = nil; - - self.$attr_reader("values"); - self.$attr_reader("critical_value"); - - Opal.def(self, '$initialize', $ValueGroup_initialize$9 = function $$initialize(values, critical_value) { - var self = this; - - - self.values = values.$sort(); - return (self.critical_value = critical_value); - }, $ValueGroup_initialize$9.$$arity = 2); - - Opal.def(self, '$to_s', $ValueGroup_to_s$10 = function $$to_s() { - var self = this; - - return "" + (self.$max()) + "[" + (self.values.$join(",")) + "]" - }, $ValueGroup_to_s$10.$$arity = 0); - - Opal.def(self, '$max', $ValueGroup_max$11 = function $$max() { - var $$12, self = this; - - if ($truthy($send(self.values, 'any?', [], ($$12 = function(value){var self = $$12.$$s || this; - - - - if (value == null) { - value = nil; - }; - return self['$critical?'](value);}, $$12.$$s = self, $$12.$$arity = 1, $$12)))) { - return 10 - } else { - return self.values.$max() - } - }, $ValueGroup_max$11.$$arity = 0); - - Opal.def(self, '$num_of_critical_occurrences', $ValueGroup_num_of_critical_occurrences$13 = function $$num_of_critical_occurrences() { - var $$14, self = this; - - return $send(self.values, 'select', [], ($$14 = function(value){var self = $$14.$$s || this; - - - - if (value == null) { - value = nil; - }; - return self['$critical?'](value);}, $$14.$$s = self, $$14.$$arity = 1, $$14)).$length() - }, $ValueGroup_num_of_critical_occurrences$13.$$arity = 0); - self.$private(); - return (Opal.def(self, '$critical?', $ValueGroup_critical$ques$15 = function(value) { - var self = this; - - return $rb_ge(value, self.critical_value) - }, $ValueGroup_critical$ques$15.$$arity = 1), nil) && 'critical?'; - })($nesting[0], null, $nesting); - - Opal.def(self, '$check_nD10', $DoubleCross_check_nD10$16 = function $$check_nD10(total, _dice_total, dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if (dice_list.$count(1)['$=='](dice_list.$size())) { - return " > ファンブル" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $DoubleCross_check_nD10$16.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $DoubleCross_rollDiceCommand$17 = function $$rollDiceCommand(command) { - var self = this, dx = nil; - - - if ($truthy((dx = self.$parse_dx(command)))) { - return dx.$execute(self)}; - if (command['$==']("ET")) { - return self.$roll_emotion_table()}; - return nil; - }, $DoubleCross_rollDiceCommand$17.$$arity = 1); - self.$private(); - Opal.const_set($nesting[0], 'DX_OD_TOOL_RE', /^(\d+)DX([-+]\d+(?:[-+*]\d+)*)?@(\d+)(?:>=(\d+))?$/i.$freeze()); - Opal.const_set($nesting[0], 'DX_SHIPPU_DOTO_RE', /^(\d+)DX(\d+)?([-+]\d+(?:[-+*]\d+)*)?(?:>=(\d+))?$/i.$freeze()); - - Opal.def(self, '$parse_dx', $DoubleCross_parse_dx$18 = function $$parse_dx(command) { - var self = this, $case = nil; - - - $case = command; - if ($$($nesting, 'DX_OD_TOOL_RE')['$===']($case)) {return self.$parse_dx_od($$($nesting, 'Regexp').$last_match())} - else if ($$($nesting, 'DX_SHIPPU_DOTO_RE')['$===']($case)) {return self.$parse_dx_shippu_doto($$($nesting, 'Regexp').$last_match())}; - return nil; - }, $DoubleCross_parse_dx$18.$$arity = 1); - - Opal.def(self, '$parse_dx_od', $DoubleCross_parse_dx_od$19 = function $$parse_dx_od(m) { - var $a, self = this, num = nil, modifier = nil, critical_value = nil, target_value = nil; - - - num = m['$[]'](1).$to_i(); - modifier = (function() {if ($truthy(m['$[]'](2))) { - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(m['$[]'](2)) - } else { - return 0 - }; return nil; })(); - critical_value = (function() {if ($truthy(m['$[]'](3))) { - return m['$[]'](3).$to_i() - } else { - return 10 - }; return nil; })(); - target_value = ($truthy($a = m['$[]'](4)) ? m['$[]'](4).$to_i() : $a); - return $$($nesting, 'DX').$new(num, critical_value, modifier, target_value); - }, $DoubleCross_parse_dx_od$19.$$arity = 1); - - Opal.def(self, '$parse_dx_shippu_doto', $DoubleCross_parse_dx_shippu_doto$20 = function $$parse_dx_shippu_doto(m) { - var $a, self = this, num = nil, critical_value = nil, modifier = nil, target_value = nil; - - - num = m['$[]'](1).$to_i(); - critical_value = (function() {if ($truthy(m['$[]'](2))) { - return m['$[]'](2).$to_i() - } else { - return 10 - }; return nil; })(); - modifier = (function() {if ($truthy(m['$[]'](3))) { - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(m['$[]'](3)) - } else { - return 0 - }; return nil; })(); - target_value = ($truthy($a = m['$[]'](4)) ? m['$[]'](4).$to_i() : $a); - return $$($nesting, 'DX').$new(num, critical_value, modifier, target_value); - }, $DoubleCross_parse_dx_shippu_doto$20.$$arity = 1); - - Opal.def(self, '$roll_emotion_table', $DoubleCross_roll_emotion_table$21 = function $$roll_emotion_table() { - var self = this, pos_result = nil, neg_result = nil, positive = nil, pos_neg_text = nil, output_parts = nil; - - - pos_result = $$($nesting, 'POSITIVE_EMOTION_TABLE').$roll(self.$bcdice()); - neg_result = $$($nesting, 'NEGATIVE_EMOTION_TABLE').$roll(self.$bcdice()); - positive = self.$roll(1, 2)['$[]'](0)['$=='](1); - pos_neg_text = (function() {if ($truthy(positive)) { - return ["" + "○" + (pos_result.$content()), neg_result.$content()] - } else { - return [pos_result.$content(), "" + "○" + (neg_result.$content())] - }; return nil; })(); - output_parts = ["" + "感情表(" + (pos_result.$sum()) + "-" + (neg_result.$sum()) + ")", pos_neg_text.$join(" - ")]; - return output_parts.$join(" > "); - }, $DoubleCross_roll_emotion_table$21.$$arity = 0); - Opal.const_set($nesting[0], 'POSITIVE_EMOTION_TABLE', $$($nesting, 'RangeTable').$new("感情表(ポジティブ)", "1D100", [[$range(1, 5, false), "好奇心(こうきしん)"], [$range(6, 10, false), "憧憬(どうけい)"], [$range(11, 15, false), "尊敬(そんけい)"], [$range(16, 20, false), "連帯感(れんたいかん)"], [$range(21, 25, false), "慈愛(じあい)"], [$range(26, 30, false), "感服(かんぷく)"], [$range(31, 35, false), "純愛(じゅんあい)"], [$range(36, 40, false), "友情(ゆうじょう)"], [$range(41, 45, false), "慕情(ぼじょう)"], [$range(46, 50, false), "同情(どうじょう)"], [$range(51, 55, false), "遺志(いし)"], [$range(56, 60, false), "庇護(ひご)"], [$range(61, 65, false), "幸福感(こうふくかん)"], [$range(66, 70, false), "信頼(しんらい)"], [$range(71, 75, false), "執着(しゅうちゃく)"], [$range(76, 80, false), "親近感(しんきんかん)"], [$range(81, 85, false), "誠意(せいい)"], [$range(86, 90, false), "好意(こうい)"], [$range(91, 95, false), "有為(ゆうい)"], [$range(96, 100, false), "尽力(じんりょく)"]]).$freeze()); - return Opal.const_set($nesting[0], 'NEGATIVE_EMOTION_TABLE', $$($nesting, 'RangeTable').$new("感情表(ネガティブ)", "1D100", [[$range(1, 5, false), "食傷(しょくしょう)"], [$range(6, 10, false), "脅威(きょうい)"], [$range(11, 15, false), "嫉妬(しっと)"], [$range(16, 20, false), "悔悟(かいご)"], [$range(21, 25, false), "恐怖(きょうふ)"], [$range(26, 30, false), "不安(ふあん)"], [$range(31, 35, false), "劣等感(れっとうかん)"], [$range(36, 40, false), "疎外感(そがいかん)"], [$range(41, 45, false), "恥辱(ちじょく)"], [$range(46, 50, false), "憐憫(れんびん)"], [$range(51, 55, false), "偏愛(へんあい)"], [$range(56, 60, false), "憎悪(ぞうお)"], [$range(61, 65, false), "隔意(かくい)"], [$range(66, 70, false), "嫌悪(けんお)"], [$range(71, 75, false), "猜疑心(さいぎしん)"], [$range(76, 80, false), "厭気(いやけ)"], [$range(81, 85, false), "不信感(ふしんかん)"], [$range(86, 90, false), "不快感(ふかいかん)"], [$range(91, 95, false), "憤懣(ふんまん)"], [$range(96, 100, false), "敵愾心(てきがいしん)"]]).$freeze()); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/DoubleCross_Korean.js b/src/assets/dicebot/DoubleCross_Korean.js deleted file mode 100644 index 6fe3d57fc..000000000 --- a/src/assets/dicebot/DoubleCross_Korean.js +++ /dev/null @@ -1,1387 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/DiceBot"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$freeze', '$attr_reader', '$map', '$to_proc', '$join', '$private', '$clearPrefixes', '$!', '$empty?', '$prefixs', '$prefixes', '$class', '$warn', '$id', '$setPrefixes', '$attr_accessor', '$name', '$sort_key', '$help_message', '$attr_writer', '$rand', '$roll', '$marshalSignOfInequality', '$unlimitedRollDiceType', '$getD66Value', '$parren_killer', '$debug', '$isGetOriginalMessage', '$getOriginalMessage', '$=~', '$prefixesPattern', '$last_match', '$removeDiceCommandMessage', '$rollDiceCommandCatched', '$nil?', '$!=', '$sub', '$rollDiceCommand', '$to_s', '$backtrace', '$size', '$===', '$check_1D100', '$check_1D20', '$check_2D6', '$check_nD10', '$check_nD6', '$check_nDx', '$is_a?', '$==', '$send', '$get_table_by_nD6', '$get_table_by_nDx', '$getTableValue', '$[]', '$-', '$/', '$getD66', '$bcdice', '$get_table_by_number', '$+', '$*', '$<', '$each', '$>=', '$kind_of?', '$lambda', '$call', '$select', '$public_methods', '$upcase', '$to_i', '$getTableInfoFromExtraTableText', '$get_table_by_nDx_extratable', '$get_table_by_d66', '$floor', '$%', '$get_table_by_d66_swap', '$raise', '$gsub', '$rollTableMessageDiceText', '$split', '$inspect']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceBot'); - - var $nesting = [self].concat($parent_nesting), $DiceBot_initialize$4, $DiceBot_postSet$5, $DiceBot_info$6, $DiceBot_id$7, $DiceBot_gameType$8, $DiceBot_name$9, $DiceBot_gameName$10, $DiceBot_sort_key$11, $DiceBot_help_message$12, $DiceBot_getHelpMessage$13, $DiceBot_prefixes$14, $DiceBot_setSendMode$15, $DiceBot_bcdice$eq$16, $DiceBot_bcdice$17, $DiceBot_rand$18, $DiceBot_roll$19, $DiceBot_marshalSignOfInequality$20, $DiceBot_unlimitedRollDiceType$21, $DiceBot_setSortType$22, $DiceBot_d66$23, $DiceBot_parren_killer$24, $DiceBot_changeText$25, $DiceBot_dice_command$26, $DiceBot_isGetOriginalMessage$27, $DiceBot_removeDiceCommandMessage$28, $DiceBot_rollDiceCommandCatched$29, $DiceBot_rollDiceCommand$30, $DiceBot_dice_command_xRn$31, $DiceBot_check_result$32, $DiceBot_check_nDx$33, $DiceBot_check_1D100$34, $DiceBot_check_1D20$35, $DiceBot_check_nD10$36, $DiceBot_check_2D6$37, $DiceBot_check_nD6$38, $DiceBot_get_table_by_2d6$39, $DiceBot_get_table_by_1d6$40, $DiceBot_get_table_by_nD6$41, $DiceBot_get_table_by_nDx$42, $DiceBot_get_table_by_1d3$43, $DiceBot_getD66$44, $DiceBot_get_table_by_d66_swap$45, $DiceBot_get_table_by_d66$46, $DiceBot_getDiceRolledAdditionalText$47, $DiceBot_getDiceRevision$48, $DiceBot_isD9$49, $DiceBot_getGrichText$50, $DiceBot_should_reroll$ques$51, $DiceBot_get_table_by_number$52, $DiceBot_getTableValue$54, $DiceBot_analyzeDiceCommandResultMethod$56, $DiceBot_get_table_by_nDx_extratable$59, $DiceBot_getTableCommandResult$60, $DiceBot_getTableInfoFromExtraTableText$61, $DiceBot_roll_tables$63; - - self.$$prototype.rerollLimitCount = self.$$prototype.d66Type = nil; - - Opal.const_set($nesting[0], 'EMPTY_PREFIXES_PATTERN', /(^|\s)(S)?()(\s|$)/i.$freeze()); - Opal.const_set($nesting[0], 'ID', "DiceBot"); - Opal.const_set($nesting[0], 'NAME', "DiceBot"); - Opal.const_set($nesting[0], 'SORT_KEY', "*たいすほつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', ""); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $setPrefixes$1, $clearPrefixes$2, $inherited$3; - - - self.$attr_reader("prefixes"); - self.$attr_reader("prefixesPattern"); - - Opal.def(self, '$setPrefixes', $setPrefixes$1 = function $$setPrefixes(prefixes) { - var self = this; - - - self.prefixes = $send(prefixes, 'map', [], "freeze".$to_proc()).$freeze(); - self.prefixesPattern = new RegExp("" + "(^|\\s)(S)?(" + (prefixes.$join("|")) + ")(\\s|$)", 'i').$freeze(); - return self; - }, $setPrefixes$1.$$arity = 1); - - Opal.def(self, '$clearPrefixes', $clearPrefixes$2 = function $$clearPrefixes() { - var self = this; - - - self.prefixes = [].$freeze(); - self.prefixesPattern = $$($nesting, 'EMPTY_PREFIXES_PATTERN'); - return self; - }, $clearPrefixes$2.$$arity = 0); - self.$private(); - return (Opal.def(self, '$inherited', $inherited$3 = function $$inherited(subclass) { - var self = this; - - return subclass.$clearPrefixes() - }, $inherited$3.$$arity = 1), nil) && 'inherited'; - })(Opal.get_singleton_class(self), $nesting); - self.$clearPrefixes(); - (Opal.class_variable_set($nesting[0], '@@bcdice', nil)); - Opal.const_set($nesting[0], 'DEFAULT_SEND_MODE', 2); - - Opal.def(self, '$initialize', $DiceBot_initialize$4 = function $$initialize() { - var $a, self = this; - - - self.sendMode = $$($nesting, 'DEFAULT_SEND_MODE'); - self.sortType = 0; - self.sameDiceRerollCount = 0; - self.sameDiceRerollType = 0; - self.d66Type = 1; - self.isPrintMaxDice = false; - self.upperRollThreshold = 0; - self.unlimitedRollDiceType = 0; - self.rerollNumber = 0; - self.defaultSuccessTarget = ""; - self.rerollLimitCount = 10000; - self.fractionType = "omit"; - if ($truthy(($truthy($a = self.$prefixs()['$empty?']()['$!']()) ? self.$class().$prefixes()['$empty?']() : $a))) { - - self.$warn("" + (self.$id()) + ": #prefixs is deprecated. Please use .setPrefixes."); - return self.$class().$setPrefixes(self.$prefixs()); - } else { - return nil - }; - }, $DiceBot_initialize$4.$$arity = 0); - self.$attr_accessor("rerollLimitCount"); - self.$attr_reader("sendMode", "sameDiceRerollCount", "sameDiceRerollType", "d66Type"); - self.$attr_reader("isPrintMaxDice", "upperRollThreshold"); - self.$attr_reader("defaultSuccessTarget", "rerollNumber", "fractionType"); - - Opal.def(self, '$postSet', $DiceBot_postSet$5 = function $$postSet() { - var self = this; - - return nil - }, $DiceBot_postSet$5.$$arity = 0); - - Opal.def(self, '$info', $DiceBot_info$6 = function $$info() { - var self = this; - - return $hash2(["gameType", "name", "sortKey", "prefixs", "info"], {"gameType": self.$id(), "name": self.$name(), "sortKey": self.$sort_key(), "prefixs": self.$class().$prefixes(), "info": self.$help_message()}) - }, $DiceBot_info$6.$$arity = 0); - - Opal.def(self, '$id', $DiceBot_id$7 = function $$id() { - var self = this; - - return $$$(self.$class(), 'ID') - }, $DiceBot_id$7.$$arity = 0); - - Opal.def(self, '$gameType', $DiceBot_gameType$8 = function $$gameType() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameType is deprecated. Please use #id."); - return self.$id(); - }, $DiceBot_gameType$8.$$arity = 0); - - Opal.def(self, '$name', $DiceBot_name$9 = function $$name() { - var self = this; - - return $$$(self.$class(), 'NAME') - }, $DiceBot_name$9.$$arity = 0); - - Opal.def(self, '$gameName', $DiceBot_gameName$10 = function $$gameName() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameName is deprecated. Please use #name."); - return self.$name(); - }, $DiceBot_gameName$10.$$arity = 0); - - Opal.def(self, '$sort_key', $DiceBot_sort_key$11 = function $$sort_key() { - var self = this; - - return $$$(self.$class(), 'SORT_KEY') - }, $DiceBot_sort_key$11.$$arity = 0); - - Opal.def(self, '$help_message', $DiceBot_help_message$12 = function $$help_message() { - var self = this; - - return $$$(self.$class(), 'HELP_MESSAGE') - }, $DiceBot_help_message$12.$$arity = 0); - - Opal.def(self, '$getHelpMessage', $DiceBot_getHelpMessage$13 = function $$getHelpMessage() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #getHelpMessage is deprecated. Please use #help_message."); - return self.$help_message(); - }, $DiceBot_getHelpMessage$13.$$arity = 0); - - Opal.def(self, '$prefixes', $DiceBot_prefixes$14 = function $$prefixes() { - var self = this; - - return self.$class().$prefixes() - }, $DiceBot_prefixes$14.$$arity = 0); - Opal.alias(self, "prefixs", "prefixes"); - - Opal.def(self, '$setSendMode', $DiceBot_setSendMode$15 = function $$setSendMode(m) { - var self = this; - - return (self.sendMode = m) - }, $DiceBot_setSendMode$15.$$arity = 1); - self.$attr_writer("upperRollThreshold"); - - Opal.def(self, '$bcdice=', $DiceBot_bcdice$eq$16 = function(b) { - var self = this; - - return (Opal.class_variable_set($nesting[0], '@@bcdice', b)) - }, $DiceBot_bcdice$eq$16.$$arity = 1); - - Opal.def(self, '$bcdice', $DiceBot_bcdice$17 = function $$bcdice() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a) - }, $DiceBot_bcdice$17.$$arity = 0); - - Opal.def(self, '$rand', $DiceBot_rand$18 = function $$rand(max) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rand(max) - }, $DiceBot_rand$18.$$arity = 1); - - Opal.def(self, '$roll', $DiceBot_roll$19 = function $$roll($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'roll', Opal.to_a(args)); - }, $DiceBot_roll$19.$$arity = -1); - - Opal.def(self, '$marshalSignOfInequality', $DiceBot_marshalSignOfInequality$20 = function $$marshalSignOfInequality($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'marshalSignOfInequality', Opal.to_a(args)); - }, $DiceBot_marshalSignOfInequality$20.$$arity = -1); - - Opal.def(self, '$unlimitedRollDiceType', $DiceBot_unlimitedRollDiceType$21 = function $$unlimitedRollDiceType() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$unlimitedRollDiceType() - }, $DiceBot_unlimitedRollDiceType$21.$$arity = 0); - self.$attr_reader("sortType"); - - Opal.def(self, '$setSortType', $DiceBot_setSortType$22 = function $$setSortType(s) { - var self = this; - - return (self.sortType = s) - }, $DiceBot_setSortType$22.$$arity = 1); - - Opal.def(self, '$d66', $DiceBot_d66$23 = function $$d66($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'getD66Value', Opal.to_a(args)); - }, $DiceBot_d66$23.$$arity = -1); - - Opal.def(self, '$parren_killer', $DiceBot_parren_killer$24 = function $$parren_killer(string) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$parren_killer(string) - }, $DiceBot_parren_killer$24.$$arity = 1); - - Opal.def(self, '$changeText', $DiceBot_changeText$25 = function $$changeText(string) { - var self = this; - - - self.$debug("DiceBot.parren_killer_add called"); - return string; - }, $DiceBot_changeText$25.$$arity = 1); - - Opal.def(self, '$dice_command', $DiceBot_dice_command$26 = function $$dice_command(string, nick_e) { - var $a, $b, self = this, secret_flg = nil, secretMarker = nil, command = nil, output_msg = nil; - - - if ($truthy(self.$isGetOriginalMessage())) { - string = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$getOriginalMessage()}; - self.$debug("dice_command Begin string", string); - secret_flg = false; - if ($truthy(self.$class().$prefixesPattern()['$=~'](string))) { - } else { - - self.$debug("not match in prefixes"); - return ["1", secret_flg]; - }; - secretMarker = $$($nesting, 'Regexp').$last_match(2); - command = $$($nesting, 'Regexp').$last_match(3); - command = self.$removeDiceCommandMessage(command); - self.$debug("dicebot after command", command); - self.$debug("match"); - $b = self.$rollDiceCommandCatched(command), $a = Opal.to_ary($b), (output_msg = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = output_msg['$nil?']()) ? $a : output_msg['$empty?']()))) { - output_msg = "1"}; - secret_flg = ($truthy($a = secret_flg) ? $a : false); - if ($truthy(output_msg['$!=']("1"))) { - output_msg = "" + (nick_e) + ": " + (output_msg)}; - if ($truthy(secretMarker)) { - if ($truthy(output_msg['$!=']("1"))) { - secret_flg = true}}; - return [output_msg, secret_flg]; - }, $DiceBot_dice_command$26.$$arity = 2); - - Opal.def(self, '$isGetOriginalMessage', $DiceBot_isGetOriginalMessage$27 = function $$isGetOriginalMessage() { - var self = this; - - return false - }, $DiceBot_isGetOriginalMessage$27.$$arity = 0); - - Opal.def(self, '$removeDiceCommandMessage', $DiceBot_removeDiceCommandMessage$28 = function $$removeDiceCommandMessage(command) { - var self = this; - - return command.$sub(/[\s ].+/, "") - }, $DiceBot_removeDiceCommandMessage$28.$$arity = 1); - - Opal.def(self, '$rollDiceCommandCatched', $DiceBot_rollDiceCommandCatched$29 = function $$rollDiceCommandCatched(command) { - var $a, $b, self = this, result = nil, secret_flg = nil, e = nil; - - - result = nil; - - try { - - self.$debug("call rollDiceCommand command", command); - $b = self.$rollDiceCommand(command), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - self.$debug("executeCommand exception", e.$to_s(), e.$backtrace().$join("\n")) - } finally { Opal.pop_exception() } - } else { throw $err; } - };; - self.$debug("rollDiceCommand result", result); - return [result, secret_flg]; - }, $DiceBot_rollDiceCommandCatched$29.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $DiceBot_rollDiceCommand$30 = function $$rollDiceCommand(_command) { - var self = this; - - return nil - }, $DiceBot_rollDiceCommand$30.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $DiceBot_dice_command_xRn$31 = function $$dice_command_xRn(_string, _nick_e) { - var self = this; - - return "" - }, $DiceBot_dice_command_xRn$31.$$arity = 2); - - Opal.def(self, '$check_result', $DiceBot_check_result$32 = function $$check_result(total, dice_total, dice_list, sides, cmp_op, target) { - var $a, self = this, ret = nil, $case = nil; - - - ret = (function() {$case = [dice_list.$size(), sides]; - if ([1, 100]['$===']($case)) {return self.$check_1D100(total, dice_total, cmp_op, target)} - else if ([1, 20]['$===']($case)) {return self.$check_1D20(total, dice_total, cmp_op, target)} - else if ([2, 6]['$===']($case)) {return self.$check_2D6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - ret = (function() {$case = sides; - if ((10)['$===']($case)) {return self.$check_nD10(total, dice_total, dice_list, cmp_op, target)} - else if ((6)['$===']($case)) {return self.$check_nD6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - return self.$check_nDx(total, cmp_op, target); - }, $DiceBot_check_result$32.$$arity = 6); - - Opal.def(self, '$check_nDx', $DiceBot_check_nDx$33 = function $$check_nDx(total, cmp_op, target) { - var self = this, success = nil; - - - if ($truthy(target['$is_a?']($$($nesting, 'String')))) { - return " > 失敗"}; - success = (function() {if (cmp_op['$==']("!=")) { - return total['$!='](target) - } else { - return total.$send(cmp_op, target) - }; return nil; })(); - if ($truthy(success)) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $DiceBot_check_nDx$33.$$arity = 3); - - Opal.def(self, '$check_1D100', $DiceBot_check_1D100$34 = function $$check_1D100(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D100$34.$$arity = 4); - - Opal.def(self, '$check_1D20', $DiceBot_check_1D20$35 = function $$check_1D20(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D20$35.$$arity = 4); - - Opal.def(self, '$check_nD10', $DiceBot_check_nD10$36 = function $$check_nD10(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD10$36.$$arity = 5); - - Opal.def(self, '$check_2D6', $DiceBot_check_2D6$37 = function $$check_2D6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_2D6$37.$$arity = 5); - - Opal.def(self, '$check_nD6', $DiceBot_check_nD6$38 = function $$check_nD6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD6$38.$$arity = 5); - - Opal.def(self, '$get_table_by_2d6', $DiceBot_get_table_by_2d6$39 = function $$get_table_by_2d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 2) - }, $DiceBot_get_table_by_2d6$39.$$arity = 1); - - Opal.def(self, '$get_table_by_1d6', $DiceBot_get_table_by_1d6$40 = function $$get_table_by_1d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 1) - }, $DiceBot_get_table_by_1d6$40.$$arity = 1); - - Opal.def(self, '$get_table_by_nD6', $DiceBot_get_table_by_nD6$41 = function $$get_table_by_nD6(table, count) { - var self = this; - - return self.$get_table_by_nDx(table, count, 6) - }, $DiceBot_get_table_by_nD6$41.$$arity = 2); - - Opal.def(self, '$get_table_by_nDx', $DiceBot_get_table_by_nDx$42 = function $$get_table_by_nDx(table, count, diceType) { - var $a, $b, self = this, num = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(num, count))); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_nDx$42.$$arity = 3); - - Opal.def(self, '$get_table_by_1d3', $DiceBot_get_table_by_1d3$43 = function $$get_table_by_1d3(table) { - var $a, $b, self = this, count = nil, num = nil, index = nil, text = nil; - - - self.$debug("get_table_by_1d3"); - count = 1; - $b = self.$roll(count, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - self.$debug("num", num); - index = $rb_divide($rb_minus(num, 1), 2); - self.$debug("index", index); - text = table['$[]'](index); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_1d3$43.$$arity = 1); - - Opal.def(self, '$getD66', $DiceBot_getD66$44 = function $$getD66(isSwap) { - var self = this; - - return self.$bcdice().$getD66(isSwap) - }, $DiceBot_getD66$44.$$arity = 1); - - Opal.def(self, '$get_table_by_d66_swap', $DiceBot_get_table_by_d66_swap$45 = function $$get_table_by_d66_swap(table) { - var self = this, isSwap = nil, number = nil; - - - isSwap = true; - number = self.$bcdice().$getD66(isSwap); - return [self.$get_table_by_number(number, table), number]; - }, $DiceBot_get_table_by_d66_swap$45.$$arity = 1); - - Opal.def(self, '$get_table_by_d66', $DiceBot_get_table_by_d66$46 = function $$get_table_by_d66(table) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, num = nil, text = nil, indexText = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - num = $rb_plus($rb_times($rb_minus(dice1, 1), 6), $rb_minus(dice2, 1)); - text = table['$[]'](num); - indexText = "" + (dice1) + (dice2); - if ($truthy(text['$nil?']())) { - return ["1", indexText]}; - return [text, indexText]; - }, $DiceBot_get_table_by_d66$46.$$arity = 1); - - Opal.def(self, '$getDiceRolledAdditionalText', $DiceBot_getDiceRolledAdditionalText$47 = function $$getDiceRolledAdditionalText(_n1, _n_max, _dice_max) { - var self = this; - - return "" - }, $DiceBot_getDiceRolledAdditionalText$47.$$arity = 3); - - Opal.def(self, '$getDiceRevision', $DiceBot_getDiceRevision$48 = function $$getDiceRevision(_n_max, _dice_max, _total_n) { - var self = this; - - return ["", 0] - }, $DiceBot_getDiceRevision$48.$$arity = 3); - - Opal.def(self, '$isD9', $DiceBot_isD9$49 = function $$isD9() { - var self = this; - - return false - }, $DiceBot_isD9$49.$$arity = 0); - - Opal.def(self, '$getGrichText', $DiceBot_getGrichText$50 = function $$getGrichText(_numberSpot1, _dice_cnt_total, _suc) { - var self = this; - - return "" - }, $DiceBot_getGrichText$50.$$arity = 3); - - Opal.def(self, '$should_reroll?', $DiceBot_should_reroll$ques$51 = function(loop_count) { - var $a, self = this; - - return ($truthy($a = $rb_lt(loop_count, self.rerollLimitCount)) ? $a : self.rerollLimitCount['$=='](0)) - }, $DiceBot_should_reroll$ques$51.$$arity = 1); - - Opal.def(self, '$get_table_by_number', $DiceBot_get_table_by_number$52 = function $$get_table_by_number(index, table, default$) {try { - - var $$53, self = this; - - - - if (default$ == null) { - default$ = "1"; - }; - $send(table, 'each', [], ($$53 = function(item){var self = $$53.$$s || this, number = nil; - - - - if (item == null) { - item = nil; - }; - number = item['$[]'](0); - if ($truthy($rb_ge(number, index))) { - Opal.ret(self.$getTableValue(item['$[]'](1))) - } else { - return nil - };}, $$53.$$s = self, $$53.$$arity = 1, $$53)); - return self.$getTableValue(default$); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_get_table_by_number$52.$$arity = -3); - - Opal.def(self, '$getTableValue', $DiceBot_getTableValue$54 = function $$getTableValue(data) {try { - - var $$55, self = this, lambdaBlock = nil; - - - if ($truthy(data['$kind_of?']($$($nesting, 'Proc')))) { - - lambdaBlock = $send(self, 'lambda', [], ($$55 = function(){var self = $$55.$$s || this; - - Opal.ret(data.$call())}, $$55.$$s = self, $$55.$$arity = 0, $$55)); - return lambdaBlock.$call();}; - return data; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_getTableValue$54.$$arity = 1); - - Opal.def(self, '$analyzeDiceCommandResultMethod', $DiceBot_analyzeDiceCommandResultMethod$56 = function $$analyzeDiceCommandResultMethod(command) {try { - - var $$57, $$58, self = this, methodList = nil; - - - methodList = $send(self.$public_methods(), 'select', [], ($$57 = function(method){var self = $$57.$$s || this; - - - - if (method == null) { - method = nil; - }; - return /^get.+DiceCommandResult$/['$==='](method.$to_s());}, $$57.$$s = self, $$57.$$arity = 1, $$57)); - $send(methodList, 'each', [], ($$58 = function(method){var self = $$58.$$s || this, result = nil; - - - - if (method == null) { - method = nil; - }; - result = self.$send(method, command); - if ($truthy(result['$nil?']())) { - return nil - } else { - Opal.ret(result) - };}, $$58.$$s = self, $$58.$$arity = 1, $$58)); - return nil; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_analyzeDiceCommandResultMethod$56.$$arity = 1); - - Opal.def(self, '$get_table_by_nDx_extratable', $DiceBot_get_table_by_nDx_extratable$59 = function $$get_table_by_nDx_extratable(table, count, diceType) { - var $a, $b, self = this, number = nil, diceText = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(number, count))); - return [text, number, diceText]; - }, $DiceBot_get_table_by_nDx_extratable$59.$$arity = 3); - - Opal.def(self, '$getTableCommandResult', $DiceBot_getTableCommandResult$60 = function $$getTableCommandResult(command, tables, isPrintDiceText) { - var $a, $b, $c, $d, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, count = nil, diceType = nil, limit = nil, item = nil, value = nil, output = nil, diceText = nil, text = nil, number = nil; - - - - if (isPrintDiceText == null) { - isPrintDiceText = true; - }; - info = tables['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type").$upcase(); - table = info['$[]']("table"); - if ($truthy(($truthy($a = type['$==']("D66")) ? self.d66Type['$=='](2) : $a))) { - type = "D66S"}; - $b = (function() {$case = type; - if (/(\d+)D(\d+)/['$===']($case)) { - count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diceType = $$($nesting, 'Regexp').$last_match(2).$to_i(); - limit = $rb_minus($rb_times(diceType, count), $rb_minus(count, 1)); - table = self.$getTableInfoFromExtraTableText(table, limit); - return self.$get_table_by_nDx_extratable(table, count, diceType);} - else if ("D66"['$===']($case) || "D66N"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 36); - $d = self.$get_table_by_d66(table), $c = Opal.to_ary($d), (item = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - output = item['$[]'](1); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else if ("D66S"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 21); - $d = self.$get_table_by_d66_swap(table), $c = Opal.to_ary($d), (output = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else {return self.$raise("" + "invalid dice Type " + (command))}})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), (diceText = ($a[2] == null ? nil : $a[2])), $b; - text = text.$gsub("\\n", "\n"); - text = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rollTableMessageDiceText(text); - if ($truthy(text['$nil?']())) { - return nil}; - if ($truthy(($truthy($a = isPrintDiceText) ? diceText['$nil?']()['$!']() : $a))) { - return "" + (name) + "(" + (number) + "[" + (diceText) + "]) > " + (text)}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $DiceBot_getTableCommandResult$60.$$arity = -3); - - Opal.def(self, '$getTableInfoFromExtraTableText', $DiceBot_getTableInfoFromExtraTableText$61 = function $$getTableInfoFromExtraTableText(text, count) { - var $$62, self = this, newTable = nil; - - - - if (count == null) { - count = nil; - }; - if ($truthy(text['$is_a?']($$($nesting, 'String')))) { - text = text.$split(/\n/)}; - newTable = $send(text, 'map', [], ($$62 = function(item){var self = $$62.$$s || this, $a; - - - - if (item == null) { - item = nil; - }; - if ($truthy(($truthy($a = item['$is_a?']($$($nesting, 'String'))) ? /^(\d+):(.*)/['$==='](item) : $a))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2)] - } else { - return item - };}, $$62.$$s = self, $$62.$$arity = 1, $$62)); - if ($truthy(count['$nil?']())) { - } else if ($truthy(newTable.$size()['$!='](count))) { - self.$raise("" + "invalid table size:" + (newTable.$size()) + "\n" + (newTable.$inspect()))}; - return newTable; - }, $DiceBot_getTableInfoFromExtraTableText$61.$$arity = -2); - return (Opal.def(self, '$roll_tables', $DiceBot_roll_tables$63 = function $$roll_tables(command, tables) { - var self = this, table = nil; - - - table = tables['$[]'](command.$upcase()); - if ($truthy(table)) { - } else { - return nil - }; - return table.$roll(self.$bcdice()).$to_s(); - }, $DiceBot_roll_tables$63.$$arity = 2), nil) && 'roll_tables'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/range_table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$new', '$alias_method', '$freeze', '$lambda', '$name', '$sum', '$content', '$attr_reader', '$match', '$raise', '$to_i', '$[]', '$store', '$find', '$include?', '$range', '$roll', '$map', '$split', '$to_proc', '$fetch', '$formatted=', '$-', '$private', '$coerce_to_int_range', '$sort_by', '$min', '$assert_min_sum_is_covered', '$assert_max_sum_is_covered', '$assert_no_gap_or_overlap_in_ranges', '$===', '$is_a?', '$begin', '$end', '$class', '$first', '$*', '$last', '$each_cons', '$max', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RangeTable'); - - var $nesting = [self].concat($parent_nesting), $RangeTable$1, $RangeTable$2, $RangeTable_initialize$3, $RangeTable_fetch$4, $RangeTable_roll$6, $RangeTable_store$7, $RangeTable_coerce_to_int_range$11, $RangeTable_assert_min_sum_is_covered$12, $RangeTable_assert_max_sum_is_covered$13, $RangeTable_assert_no_gap_or_overlap_in_ranges$14; - - self.$$prototype.name = self.$$prototype.items = self.$$prototype.num_of_dice = self.$$prototype.num_of_sides = self.$$prototype.formatter = nil; - - Opal.const_set($nesting[0], 'RollResult', $send($$($nesting, 'Struct'), 'new', ["sum", "values", "content", "formatted"], ($RangeTable$1 = function(){var self = $RangeTable$1.$$s || this; - - return self.$alias_method("to_s", "formatted")}, $RangeTable$1.$$s = self, $RangeTable$1.$$arity = 0, $RangeTable$1))); - Opal.const_set($nesting[0], 'Item', $$($nesting, 'Struct').$new("range", "content")); - Opal.const_set($nesting[0], 'DICE_ROLL_METHOD_RE', /^(\d+)D(\d+)$/i.$freeze()); - Opal.const_set($nesting[0], 'DEFAULT_FORMATTER', $send(self, 'lambda', [], ($RangeTable$2 = function(table, result){var self = $RangeTable$2.$$s || this; - - - - if (table == null) { - table = nil; - }; - - if (result == null) { - result = nil; - }; - return "" + (table.$name()) + "(" + (result.$sum()) + ") > " + (result.$content());}, $RangeTable$2.$$s = self, $RangeTable$2.$$arity = 2, $RangeTable$2))); - self.$attr_reader("name"); - self.$attr_reader("num_of_dice"); - self.$attr_reader("num_of_sides"); - - Opal.def(self, '$initialize', $RangeTable_initialize$3 = function $$initialize(name, dice_roll_method, items) { - var $iter = $RangeTable_initialize$3.$$p, formatter = $iter || nil, $a, self = this, m = nil; - - if ($iter) $RangeTable_initialize$3.$$p = null; - - - if ($iter) $RangeTable_initialize$3.$$p = null;; - self.name = name.$freeze(); - self.formatter = ($truthy($a = formatter) ? $a : $$($nesting, 'DEFAULT_FORMATTER')); - m = $$($nesting, 'DICE_ROLL_METHOD_RE').$match(dice_roll_method); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + (self.name) + ": invalid dice roll method: " + (dice_roll_method)) - }; - self.num_of_dice = m['$[]'](1).$to_i(); - self.num_of_sides = m['$[]'](2).$to_i(); - return self.$store(items); - }, $RangeTable_initialize$3.$$arity = 3); - - Opal.def(self, '$fetch', $RangeTable_fetch$4 = function $$fetch(value) { - var $$5, self = this, item = nil; - - - item = $send(self.items, 'find', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$range()['$include?'](value);}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - if ($truthy(item)) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": value is out of range: " + (value)) - }; - return item; - }, $RangeTable_fetch$4.$$arity = 1); - - Opal.def(self, '$roll', $RangeTable_roll$6 = function $$roll(bcdice) { - var $a, $b, self = this, sum = nil, values_str = nil, values = nil, result = nil, $writer = nil; - - - $b = bcdice.$roll(self.num_of_dice, self.num_of_sides), $a = Opal.to_ary($b), (sum = ($a[0] == null ? nil : $a[0])), (values_str = ($a[1] == null ? nil : $a[1])), $b; - values = $send(values_str.$split(","), 'map', [], "to_i".$to_proc()); - result = $$($nesting, 'RollResult').$new(sum, values, self.$fetch(sum).$content()); - - $writer = [self.formatter['$[]'](self, result)]; - $send(result, 'formatted=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return result; - }, $RangeTable_roll$6.$$arity = 1); - self.$private(); - - Opal.def(self, '$store', $RangeTable_store$7 = function $$store(items) { - var $$8, $$9, $$10, self = this, items_with_range = nil, sorted_items = nil; - - - items_with_range = $send(items, 'map', [], ($$8 = function(r, c){var self = $$8.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (c == null) { - c = nil; - }; - return [self.$coerce_to_int_range(r), c];}, $$8.$$s = self, $$8.$$arity = 2, $$8)); - sorted_items = $send(items_with_range, 'sort_by', [], ($$9 = function(r, _){var self = $$9.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (_ == null) { - _ = nil; - }; - return r.$min();}, $$9.$$s = self, $$9.$$arity = 2, $$9)); - self.$assert_min_sum_is_covered(sorted_items); - self.$assert_max_sum_is_covered(sorted_items); - self.$assert_no_gap_or_overlap_in_ranges(sorted_items); - self.items = $send(sorted_items, 'map', [], ($$10 = function(range, content){var self = $$10.$$s || this; - - - - if (range == null) { - range = nil; - }; - - if (content == null) { - content = nil; - }; - return $$($nesting, 'Item').$new(range, content.$freeze()).$freeze();}, $$10.$$s = self, $$10.$$arity = 2, $$10)).$freeze(); - return self; - }, $RangeTable_store$7.$$arity = 1); - - Opal.def(self, '$coerce_to_int_range', $RangeTable_coerce_to_int_range$11 = function $$coerce_to_int_range(x) { - var $a, self = this, $case = nil; - - - $case = x; - if ($$($nesting, 'Integer')['$===']($case)) {return $$($nesting, 'Range').$new(x, x)} - else if ($$($nesting, 'Range')['$===']($case)) {if ($truthy(($truthy($a = x.$begin()['$is_a?']($$($nesting, 'Integer'))) ? x.$end()['$is_a?']($$($nesting, 'Integer')) : $a))) { - return x}}; - return self.$raise($$($nesting, 'TypeError'), "" + (self.name) + ": " + (x) + " (" + (x.$class()) + ") must be an Integer or a Range with Integers "); - }, $RangeTable_coerce_to_int_range$11.$$arity = 1); - - Opal.def(self, '$assert_min_sum_is_covered', $RangeTable_assert_min_sum_is_covered$12 = function $$assert_min_sum_is_covered(sorted_items) { - var self = this, min_sum = nil, range = nil; - - - min_sum = self.num_of_dice; - range = sorted_items.$first()['$[]'](0); - if ($truthy(range['$include?'](min_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": min value (" + (min_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_min_sum_is_covered$12.$$arity = 1); - - Opal.def(self, '$assert_max_sum_is_covered', $RangeTable_assert_max_sum_is_covered$13 = function $$assert_max_sum_is_covered(sorted_items) { - var self = this, max_sum = nil, range = nil; - - - max_sum = $rb_times(self.num_of_dice, self.num_of_sides); - range = sorted_items.$last()['$[]'](0); - if ($truthy(range['$include?'](max_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": max value (" + (max_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_max_sum_is_covered$13.$$arity = 1); - return (Opal.def(self, '$assert_no_gap_or_overlap_in_ranges', $RangeTable_assert_no_gap_or_overlap_in_ranges$14 = function $$assert_no_gap_or_overlap_in_ranges(sorted_items) { - var $$15, self = this; - - - $send(sorted_items, 'each_cons', [2], ($$15 = function(i1, i2){var self = $$15.$$s || this, r1 = nil, r2 = nil, max1 = nil, next_of_max1 = nil; - if (self.name == null) self.name = nil; - - - - if (i1 == null) { - i1 = nil; - }; - - if (i2 == null) { - i2 = nil; - }; - r1 = i1['$[]'](0); - r2 = i2['$[]'](0); - max1 = r1.$max(); - next_of_max1 = $rb_plus(max1, 1); - if ($truthy(r2['$include?'](max1))) { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range overlap: " + (r1) + " and " + (r2))}; - if ($truthy(r2['$include?'](next_of_max1))) { - return nil - } else { - return self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range gap: " + (r1) + " and " + (r2)) - };}, $$15.$$s = self, $$15.$$arity = 2, $$15)); - return self; - }, $RangeTable_assert_no_gap_or_overlap_in_ranges$14.$$arity = 1), nil) && 'assert_no_gap_or_overlap_in_ranges'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range; - - Opal.add_stubs(['$require', '$setPrefixes', '$include', '$format_modifier', '$node_expression', '$<', '$>', '$should_reroll?', '$new', '$[]', '$roll', '$push', '$num_of_critical_occurrences', '$+', '$result_str', '$private', '$all?', '$values', '$==', '$reduce', '$map', '$to_proc', '$join', '$achieved_value_with_if_fumble', '$compare_result', '$compact', '$to_s', '$>=', '$attr_reader', '$sort', '$max', '$any?', '$critical?', '$length', '$select', '$count', '$size', '$parse_dx', '$execute', '$roll_emotion_table', '$freeze', '$===', '$parse_dx_od', '$last_match', '$parse_dx_shippu_doto', '$to_i', '$eval', '$bcdice', '$content', '$sum']); - - self.$require("diceBot/DiceBot"); - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/modifier_formatter"); - self.$require("utils/range_table"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DoubleCross_Korean'); - - var $nesting = [self].concat($parent_nesting), $DoubleCross_Korean_check_nD10$16, $DoubleCross_Korean_rollDiceCommand$17, $DoubleCross_Korean_parse_dx$18, $DoubleCross_Korean_parse_dx_od$19, $DoubleCross_Korean_parse_dx_shippu_doto$20, $DoubleCross_Korean_roll_emotion_table$21; - - - Opal.const_set($nesting[0], 'ID', "DoubleCross:Korean"); - Opal.const_set($nesting[0], 'NAME', "더블크로스2nd,3rd"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:더블크로스"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・판정 커맨드(xDX+y@c or xDXc+y)\n" + " \"(개수)DX(수정)@(크리티컬치)\" 혹은 \"(개수)DX(크리티컬치)(수정)\" 으로 지정합니다.\n" + " 수정치도 붙일 수 있습니다.\n" + " 예)10dx  10dx+5@8(OD tool식)  5DX7+7-3(질풍노도식)\n" + "・각종표\n" + " ・감정표(ET)\n" + "  포지티브와 네거티브 양쪽을 굴려, 겉으로 나타는 쪽에 O를 붙여 표시합니다.\n" + "  물론 임의로 정하는 부분을 변경해도 괜찮습니다.\n" + "・D66다이스 있음\n"); - self.$setPrefixes(["\\d+DX.*", "ET"]); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DX'); - - var $nesting = [self].concat($parent_nesting), $DX_initialize$1, $DX_execute$2, $DX_node_expression$4, $DX_result_str$5, $DX_achieved_value_with_if_fumble$7, $DX_compare_result$8; - - self.$$prototype.modifier = self.$$prototype.critical_value = self.$$prototype.expression = self.$$prototype.num = self.$$prototype.modifier_str = self.$$prototype.target_value = nil; - - self.$include($$($nesting, 'ModifierFormatter')); - - Opal.def(self, '$initialize', $DX_initialize$1 = function $$initialize(num, critical_value, modifier, target_value) { - var self = this; - - - self.num = num; - self.critical_value = critical_value; - self.modifier = modifier; - self.target_value = target_value; - self.modifier_str = self.$format_modifier(self.modifier); - return (self.expression = self.$node_expression()); - }, $DX_initialize$1.$$arity = 4); - - Opal.def(self, '$execute', $DX_execute$2 = function $$execute(bot) { - var $a, $b, $$3, self = this, value_groups = nil, num_of_dice = nil, loop_count = nil, values = nil, value_group = nil; - - - if ($truthy($rb_lt(self.critical_value, 2))) { - return "" + "(" + (self.expression) + ") > 크리티컬치가 너무 낮습니다. 2 이상을 지정해주세요."}; - if ($truthy($rb_lt(self.num, 1))) { - return "" + "(" + (self.expression) + ") > 자동실패"}; - value_groups = []; - num_of_dice = self.num; - loop_count = 0; - while ($truthy(($truthy($b = $rb_gt(num_of_dice, 0)) ? bot['$should_reroll?'](loop_count) : $b))) { - - values = $send($$($nesting, 'Array'), 'new', [num_of_dice], ($$3 = function(){var self = $$3.$$s || this; - - return bot.$roll(1, 10)['$[]'](0)}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - value_group = $$($nesting, 'ValueGroup').$new(values, self.critical_value); - value_groups.$push(value_group); - num_of_dice = value_group.$num_of_critical_occurrences(); - loop_count = $rb_plus(loop_count, 1); - }; - return self.$result_str(value_groups); - }, $DX_execute$2.$$arity = 1); - self.$private(); - - Opal.def(self, '$node_expression', $DX_node_expression$4 = function $$node_expression() { - var self = this, lhs = nil; - - - lhs = "" + (self.num) + "DX" + (self.critical_value) + (self.modifier_str); - return (function() {if ($truthy(self.target_value)) { - return "" + (lhs) + ">=" + (self.target_value) - } else { - return lhs - }; return nil; })(); - }, $DX_node_expression$4.$$arity = 0); - - Opal.def(self, '$result_str', $DX_result_str$5 = function $$result_str(value_groups) { - var $$6, self = this, fumble = nil, sum = nil, achieved_value = nil, parts = nil; - - - fumble = $send(value_groups['$[]'](0).$values(), 'all?', [], ($$6 = function(value){var self = $$6.$$s || this; - - - - if (value == null) { - value = nil; - }; - return value['$=='](1);}, $$6.$$s = self, $$6.$$arity = 1, $$6)); - sum = $send($send(value_groups, 'map', [], "max".$to_proc()), 'reduce', [0], "+".$to_proc()); - achieved_value = (function() {if ($truthy(fumble)) { - return 0 - } else { - - return $rb_plus(sum, self.modifier); - }; return nil; })(); - parts = ["" + "(" + (self.expression) + ")", "" + (value_groups.$join("+")) + (self.modifier_str), self.$achieved_value_with_if_fumble(achieved_value, fumble), self.$compare_result(achieved_value, fumble)]; - return parts.$compact().$join(" > "); - }, $DX_result_str$5.$$arity = 1); - - Opal.def(self, '$achieved_value_with_if_fumble', $DX_achieved_value_with_if_fumble$7 = function $$achieved_value_with_if_fumble(achieved_value, fumble) { - var self = this; - - if ($truthy(fumble)) { - return "" + (achieved_value) + " (펌블)" - } else { - return achieved_value.$to_s() - } - }, $DX_achieved_value_with_if_fumble$7.$$arity = 2); - return (Opal.def(self, '$compare_result', $DX_compare_result$8 = function $$compare_result(achieved_value, fumble) { - var self = this; - - - if ($truthy(self.target_value)) { - } else { - return nil - }; - if ($truthy(fumble)) { - return "실패"}; - return (function() {if ($truthy($rb_ge(achieved_value, self.target_value))) { - return "성공" - } else { - return "실패" - }; return nil; })(); - }, $DX_compare_result$8.$$arity = 2), nil) && 'compare_result'; - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ValueGroup'); - - var $nesting = [self].concat($parent_nesting), $ValueGroup_initialize$9, $ValueGroup_to_s$10, $ValueGroup_max$11, $ValueGroup_num_of_critical_occurrences$13, $ValueGroup_critical$ques$15; - - self.$$prototype.values = self.$$prototype.critical_value = nil; - - self.$attr_reader("values"); - self.$attr_reader("critical_value"); - - Opal.def(self, '$initialize', $ValueGroup_initialize$9 = function $$initialize(values, critical_value) { - var self = this; - - - self.values = values.$sort(); - return (self.critical_value = critical_value); - }, $ValueGroup_initialize$9.$$arity = 2); - - Opal.def(self, '$to_s', $ValueGroup_to_s$10 = function $$to_s() { - var self = this; - - return "" + (self.$max()) + "[" + (self.values.$join(",")) + "]" - }, $ValueGroup_to_s$10.$$arity = 0); - - Opal.def(self, '$max', $ValueGroup_max$11 = function $$max() { - var $$12, self = this; - - if ($truthy($send(self.values, 'any?', [], ($$12 = function(value){var self = $$12.$$s || this; - - - - if (value == null) { - value = nil; - }; - return self['$critical?'](value);}, $$12.$$s = self, $$12.$$arity = 1, $$12)))) { - return 10 - } else { - return self.values.$max() - } - }, $ValueGroup_max$11.$$arity = 0); - - Opal.def(self, '$num_of_critical_occurrences', $ValueGroup_num_of_critical_occurrences$13 = function $$num_of_critical_occurrences() { - var $$14, self = this; - - return $send(self.values, 'select', [], ($$14 = function(value){var self = $$14.$$s || this; - - - - if (value == null) { - value = nil; - }; - return self['$critical?'](value);}, $$14.$$s = self, $$14.$$arity = 1, $$14)).$length() - }, $ValueGroup_num_of_critical_occurrences$13.$$arity = 0); - self.$private(); - return (Opal.def(self, '$critical?', $ValueGroup_critical$ques$15 = function(value) { - var self = this; - - return $rb_ge(value, self.critical_value) - }, $ValueGroup_critical$ques$15.$$arity = 1), nil) && 'critical?'; - })($nesting[0], null, $nesting); - - Opal.def(self, '$check_nD10', $DoubleCross_Korean_check_nD10$16 = function $$check_nD10(total, _dice_total, dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if (dice_list.$count(1)['$=='](dice_list.$size())) { - return " > 펌블" - } else if ($truthy($rb_ge(total, target))) { - return " > 성공" - } else { - return " > 실패" - }; - }, $DoubleCross_Korean_check_nD10$16.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $DoubleCross_Korean_rollDiceCommand$17 = function $$rollDiceCommand(command) { - var self = this, dx = nil; - - - if ($truthy((dx = self.$parse_dx(command)))) { - return dx.$execute(self)}; - if (command['$==']("ET")) { - return self.$roll_emotion_table()}; - return nil; - }, $DoubleCross_Korean_rollDiceCommand$17.$$arity = 1); - self.$private(); - Opal.const_set($nesting[0], 'DX_OD_TOOL_RE', /^(\d+)DX([-+]\d+(?:[-+*]\d+)*)?@(\d+)(?:>=(\d+))?$/i.$freeze()); - Opal.const_set($nesting[0], 'DX_SHIPPU_DOTO_RE', /^(\d+)DX(\d+)?([-+]\d+(?:[-+*]\d+)*)?(?:>=(\d+))?$/i.$freeze()); - - Opal.def(self, '$parse_dx', $DoubleCross_Korean_parse_dx$18 = function $$parse_dx(command) { - var self = this, $case = nil; - - - $case = command; - if ($$($nesting, 'DX_OD_TOOL_RE')['$===']($case)) {return self.$parse_dx_od($$($nesting, 'Regexp').$last_match())} - else if ($$($nesting, 'DX_SHIPPU_DOTO_RE')['$===']($case)) {return self.$parse_dx_shippu_doto($$($nesting, 'Regexp').$last_match())}; - return nil; - }, $DoubleCross_Korean_parse_dx$18.$$arity = 1); - - Opal.def(self, '$parse_dx_od', $DoubleCross_Korean_parse_dx_od$19 = function $$parse_dx_od(m) { - var $a, self = this, num = nil, modifier = nil, critical_value = nil, target_value = nil; - - - num = m['$[]'](1).$to_i(); - modifier = (function() {if ($truthy(m['$[]'](2))) { - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(m['$[]'](2)) - } else { - return 0 - }; return nil; })(); - critical_value = (function() {if ($truthy(m['$[]'](3))) { - return m['$[]'](3).$to_i() - } else { - return 10 - }; return nil; })(); - target_value = ($truthy($a = m['$[]'](4)) ? m['$[]'](4).$to_i() : $a); - return $$($nesting, 'DX').$new(num, critical_value, modifier, target_value); - }, $DoubleCross_Korean_parse_dx_od$19.$$arity = 1); - - Opal.def(self, '$parse_dx_shippu_doto', $DoubleCross_Korean_parse_dx_shippu_doto$20 = function $$parse_dx_shippu_doto(m) { - var $a, self = this, num = nil, critical_value = nil, modifier = nil, target_value = nil; - - - num = m['$[]'](1).$to_i(); - critical_value = (function() {if ($truthy(m['$[]'](2))) { - return m['$[]'](2).$to_i() - } else { - return 10 - }; return nil; })(); - modifier = (function() {if ($truthy(m['$[]'](3))) { - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(m['$[]'](3)) - } else { - return 0 - }; return nil; })(); - target_value = ($truthy($a = m['$[]'](4)) ? m['$[]'](4).$to_i() : $a); - return $$($nesting, 'DX').$new(num, critical_value, modifier, target_value); - }, $DoubleCross_Korean_parse_dx_shippu_doto$20.$$arity = 1); - - Opal.def(self, '$roll_emotion_table', $DoubleCross_Korean_roll_emotion_table$21 = function $$roll_emotion_table() { - var self = this, pos_result = nil, neg_result = nil, positive = nil, pos_neg_text = nil, output_parts = nil; - - - pos_result = $$($nesting, 'POSITIVE_EMOTION_TABLE').$roll(self.$bcdice()); - neg_result = $$($nesting, 'NEGATIVE_EMOTION_TABLE').$roll(self.$bcdice()); - positive = self.$roll(1, 2)['$[]'](0)['$=='](1); - pos_neg_text = (function() {if ($truthy(positive)) { - return ["" + "○" + (pos_result.$content()), neg_result.$content()] - } else { - return [pos_result.$content(), "" + "○" + (neg_result.$content())] - }; return nil; })(); - output_parts = ["" + "감정표(" + (pos_result.$sum()) + "-" + (neg_result.$sum()) + ")", pos_neg_text.$join(" - ")]; - return output_parts.$join(" > "); - }, $DoubleCross_Korean_roll_emotion_table$21.$$arity = 0); - Opal.const_set($nesting[0], 'POSITIVE_EMOTION_TABLE', $$($nesting, 'RangeTable').$new("감정표(포지티브)", "1D100", [[$range(1, 5, false), "호기심"], [$range(6, 10, false), "동경"], [$range(11, 15, false), "존경"], [$range(16, 20, false), "연대감"], [$range(21, 25, false), "자애"], [$range(26, 30, false), "감복"], [$range(31, 35, false), "순애"], [$range(36, 40, false), "우정"], [$range(41, 45, false), "모정(慕情)"], [$range(46, 50, false), "동정"], [$range(51, 55, false), "유지(遺志)"], [$range(56, 60, false), "비호"], [$range(61, 65, false), "행복감"], [$range(66, 70, false), "신뢰"], [$range(71, 75, false), "집착"], [$range(76, 80, false), "친근감"], [$range(81, 85, false), "성의"], [$range(86, 90, false), "호의"], [$range(91, 95, false), "유위(有為)"], [$range(96, 100, false), "진력"]]).$freeze()); - return Opal.const_set($nesting[0], 'NEGATIVE_EMOTION_TABLE', $$($nesting, 'RangeTable').$new("감정표(네거티브)", "1D100", [[$range(1, 5, false), "식상"], [$range(6, 10, false), "위협"], [$range(11, 15, false), "질투"], [$range(16, 20, false), "회개"], [$range(21, 25, false), "공포"], [$range(26, 30, false), "불안"], [$range(31, 35, false), "열등감"], [$range(36, 40, false), "소외감"], [$range(41, 45, false), "치욕"], [$range(46, 50, false), "연민"], [$range(51, 55, false), "편애"], [$range(56, 60, false), "증오"], [$range(61, 65, false), "격의"], [$range(66, 70, false), "혐오"], [$range(71, 75, false), "시의심"], [$range(76, 80, false), "싫음"], [$range(81, 85, false), "불신감"], [$range(86, 90, false), "불쾌감"], [$range(91, 95, false), "분만(憤懣)"], [$range(96, 100, false), "적개심"]]).$freeze()); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Dracurouge.js b/src/assets/dicebot/Dracurouge.js deleted file mode 100644 index 64984ac28..000000000 --- a/src/assets/dicebot/Dracurouge.js +++ /dev/null @@ -1,616 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$debug', '$analyzeDiceCommandResultMethod', '$===', '$to_i', '$last_match', '$==', '$rollDiceList', '$getGloryDiceCount', '$times', '$<<', '$getThirstyAddedResult', '$empty?', '$+', '$join', '$roll', '$sort', '$collect', '$split', '$countTargetDice', '$floor', '$/', '$count', '$select', '$rindex', '$<=', '$nil?', '$each_with_index', '$to_s', '$[]', '$[]=', '$-', '$getReactionText', '$getReactionInfoBlood', '$getReactionInfoStyle', '$getHeresyReactionInfoBlood', '$getHeresyReactionInfoStyle', '$checkTypeText', '$<', '$*', '$getReactionTextFull', '$find', '$getReactionTex', '$include?', '$each', '$get_table_by_number', '$get_table_by_2d6', '$get_table_by_1d6', '$get_table_by_d66', '$getSourceSceneTable', '$getTitleD66TableResult', '$getPassionTable', '$getConfermentTable', '$getYearTableResult', '$getConfermentAfterTable', '$getElderPastTable', '$getOriginalSinTable', '$getRecentStateTable', '$getPeacefulPastTable', '$getYear', '$gsub', '$getD6xResult', '$length', '$parren_killer', '$freeze', '$setPrefixes', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Dracurouge'); - - var $nesting = [self].concat($parent_nesting), $Dracurouge_initialize$1, $Dracurouge_rollDiceCommand$2, $Dracurouge_getConductDiceCommandResult$3, $Dracurouge_rollDiceList$5, $Dracurouge_getGloryDiceCount$7, $Dracurouge_countTargetDice$8, $Dracurouge_getThirstyAddedResult$10, $Dracurouge_getResistDiceCommandResult$13, $Dracurouge_getReactionDiceCommandResult$14, $Dracurouge_getHeresyReactionDiceCommandResult$15, $Dracurouge_getReactionText$16, $Dracurouge_checkTypeText$18, $Dracurouge_getReactionTextFull$20, $Dracurouge_getReactionTex$22, $Dracurouge_getReactionInfoBlood$23, $Dracurouge_getReactionInfoStyle$24, $Dracurouge_getHeresyReactionInfoBlood$25, $Dracurouge_getHeresyReactionInfoStyle$26, $Dracurouge_getCorruptionDiceCommandResult$27, $Dracurouge_getTableDiceCommandResult$28, $Dracurouge_getSourceSceneDiceCommandResult$29, $Dracurouge_getPassionDiceCommandResult$30, $Dracurouge_getTitleD66TableResult$31, $Dracurouge_getConfermentDiceCommandResult$32, $Dracurouge_getConfermentAfterDiceCommandResult$33, $Dracurouge_getElderPastDiceCommandResult$34, $Dracurouge_getOriginalSinDiceCommandResult$35, $Dracurouge_getRecentStateDiceCommandResult$36, $Dracurouge_getPeacefulPastDiceCommandResult$37, $Dracurouge_getYearTableResult$38, $Dracurouge_getYear$39, $Dracurouge_getD6xResult$41, $Dracurouge_getSourceSceneTable$44, $Dracurouge_getConfermentTable$45, $Dracurouge_getConfermentAfterTable$46, $Dracurouge_getElderPastTable$47, $Dracurouge_getOriginalSinTable$48, $Dracurouge_getPassionTable$49, $Dracurouge_getRecentStateTable$50, $Dracurouge_getPeacefulPastTable$51; - - - Opal.const_set($nesting[0], 'ID', "Dracurouge"); - Opal.const_set($nesting[0], 'NAME', "ドラクルージュ"); - Opal.const_set($nesting[0], 'SORT_KEY', "とらくるうしゆ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・行い判定(DRx+y)\n" + " x:振るサイコロの数(省略時4)、y:渇き修正(省略時0)\n" + " 例) DR DR6 DR+1 DR5+2\n" + "・抗い判定(DRRx)\n" + " x:振るサイコロの数\n" + " 例) DRR3\n" + "・原風景表(ST)、叙勲表(CO)、叙勲後表(CA)、遥か過去表(EP)\n" + " 原罪表(OS)、受難表(PN)、近況表(RS)、平和な過去表(PP)\n" + "・堕落表(CTx) x:渇き (例) CT3\n" + "・堕落の兆し表(CS)、拡張・堕落の兆し表(ECS)\n" + "・絆内容決定表(BT)\n" + "・反応表(RTxy)x:血統、y:道 xy省略で一括表示\n" + " 血統 D:ドラク、R:ローゼンブルク、H:ヘルズガルド、M:ダストハイム\n" + "    A:アヴァローム N:ノスフェラス、G:ゲイズヴァルト、K:カインシルト\n" + " 道 F:領主、G:近衛、R:遍歴、W:賢者、J:狩人、N:夜獣\n" + "   E:将軍、B:僧正、H:空駆、K:船長、L:寵童、V:仲立、U:技師、D:博士\n" + "   S:星読、G2:後見\n" + " 例)RT(一括表示)、RTDF(ドラクの領主)、RTAG2(アヴァロームの後見人)\n" + "・異端の反応表(HRTxy)x:血統、y:道 xy省略で一括表示\n" + " 血統 L:異端卿、V:ヴルコラク、N:ナハツェーラ、K:カルンシュタイン\n" + "    G:グリマルキン、S:ストリガ、M:メリュジーヌ、F:フォーン\n" + "    H:ホムンクルス、E:エナメルム、S2:サングィナリエ、A:アールヴ\n" + "    V2:ヴィーヴル、L2:ルーガルー、A2:アルラウネ、F2:フリッガ\n" + " 道 W:野伏、N:流浪、S:密使、H:魔女、F:剣士、X:検体\n" + " 例)HRT(一括表示)、HRTVW(ヴルコラクの野伏)、HRTF2X(フリッガの検体)\n" + "・D66ダイスあり\n"); - - Opal.def(self, '$initialize', $Dracurouge_initialize$1 = function $$initialize() { - var $iter = $Dracurouge_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Dracurouge_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Dracurouge_initialize$1, false), $zuper, $iter); - return (self.d66Type = 1); - }, $Dracurouge_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Dracurouge_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this; - - - self.$debug("rollDiceCommand"); - return self.$analyzeDiceCommandResultMethod(command); - }, $Dracurouge_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getConductDiceCommandResult', $Dracurouge_getConductDiceCommandResult$3 = function $$getConductDiceCommandResult(command) { - var $$4, $a, $b, self = this, diceCount = nil, thirstyPoint = nil, diceList = nil, gloryDiceCount = nil, calculationProcess = nil, thirstyPointMarker = nil, result = nil; - - - if ($truthy(/^DR(\d*)(\+(\d+))?$/['$==='](command))) { - } else { - return nil - }; - diceCount = $$($nesting, 'Regexp').$last_match(1).$to_i(); - if (diceCount['$=='](0)) { - diceCount = 4}; - thirstyPoint = $$($nesting, 'Regexp').$last_match(3).$to_i(); - diceList = self.$rollDiceList(diceCount); - gloryDiceCount = self.$getGloryDiceCount(diceList); - $send(gloryDiceCount, 'times', [], ($$4 = function(){var self = $$4.$$s || this; - - return diceList['$<<'](10)}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - $b = self.$getThirstyAddedResult(diceList, thirstyPoint), $a = Opal.to_ary($b), (diceList = ($a[0] == null ? nil : $a[0])), (calculationProcess = ($a[1] == null ? nil : $a[1])), $b; - thirstyPointMarker = (function() {if (thirstyPoint['$=='](0)) { - return "" - } else { - return "" + "+" + (thirstyPoint) - }; return nil; })(); - result = "" + "(" + (command) + ") > " + (diceCount) + "D6" + (thirstyPointMarker) + " > "; - if ($truthy(calculationProcess['$empty?']())) { - } else { - result = $rb_plus(result, "" + "[ " + (calculationProcess) + " ] > ") - }; - result = $rb_plus(result, "" + "[ " + (diceList.$join(", ")) + " ]"); - return result; - }, $Dracurouge_getConductDiceCommandResult$3.$$arity = 1); - - Opal.def(self, '$rollDiceList', $Dracurouge_rollDiceList$5 = function $$rollDiceList(diceCount) { - var $a, $b, $$6, self = this, _ = nil, str = nil, diceList = nil; - - - $b = self.$roll(diceCount, 6), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (str = ($a[1] == null ? nil : $a[1])), $b; - diceList = $send(str.$split(/,/), 'collect', [], ($$6 = function(i){var self = $$6.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$sort(); - return diceList; - }, $Dracurouge_rollDiceList$5.$$arity = 1); - - Opal.def(self, '$getGloryDiceCount', $Dracurouge_getGloryDiceCount$7 = function $$getGloryDiceCount(diceList) { - var self = this, oneCount = nil, sixCount = nil, gloryDiceCount = nil; - - - oneCount = self.$countTargetDice(diceList, 1); - sixCount = self.$countTargetDice(diceList, 6); - gloryDiceCount = $rb_plus($rb_divide(oneCount, 2).$floor(), $rb_divide(sixCount, 2).$floor()); - return gloryDiceCount; - }, $Dracurouge_getGloryDiceCount$7.$$arity = 1); - - Opal.def(self, '$countTargetDice', $Dracurouge_countTargetDice$8 = function $$countTargetDice(diceList, target) { - var $$9, self = this; - - return $send(diceList, 'select', [], ($$9 = function(i){var self = $$9.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](target);}, $$9.$$s = self, $$9.$$arity = 1, $$9)).$count() - }, $Dracurouge_countTargetDice$8.$$arity = 2); - - Opal.def(self, '$getThirstyAddedResult', $Dracurouge_getThirstyAddedResult$10 = function $$getThirstyAddedResult(diceList, thirstyPoint) { - var $$11, $$12, self = this, targetIndex = nil, textList = nil, $writer = nil; - - - if (thirstyPoint['$=='](0)) { - return [diceList, ""]}; - targetIndex = $send(diceList, 'rindex', [], ($$11 = function(i){var self = $$11.$$s || this; - - - - if (i == null) { - i = nil; - }; - return $rb_le(i, 6);}, $$11.$$s = self, $$11.$$arity = 1, $$11)); - if ($truthy(targetIndex['$nil?']())) { - return [diceList, ""]}; - textList = []; - $send(diceList, 'each_with_index', [], ($$12 = function(item, index){var self = $$12.$$s || this; - - - - if (item == null) { - item = nil; - }; - - if (index == null) { - index = nil; - }; - if (targetIndex['$=='](index)) { - return textList['$<<']("" + (item) + "+" + (thirstyPoint)) - } else { - return textList['$<<'](item.$to_s()) - };}, $$12.$$s = self, $$12.$$arity = 2, $$12)); - - $writer = [targetIndex, $rb_plus(diceList['$[]'](targetIndex), thirstyPoint)]; - $send(diceList, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return [diceList, textList.$join(", ")]; - }, $Dracurouge_getThirstyAddedResult$10.$$arity = 2); - - Opal.def(self, '$getResistDiceCommandResult', $Dracurouge_getResistDiceCommandResult$13 = function $$getResistDiceCommandResult(command) { - var self = this, diceCount = nil, diceList = nil, result = nil; - - - if ($truthy(/^DRR(\d+)$/['$==='](command))) { - } else { - return nil - }; - diceCount = $$($nesting, 'Regexp').$last_match(1).$to_i(); - if (diceCount['$=='](0)) { - diceCount = 4}; - diceList = self.$rollDiceList(diceCount); - result = "" + "(" + (command) + ") > " + (diceCount) + "D6 > [ " + (diceList.$join(", ")) + " ]"; - return result; - }, $Dracurouge_getResistDiceCommandResult$13.$$arity = 1); - - Opal.def(self, '$getReactionDiceCommandResult', $Dracurouge_getReactionDiceCommandResult$14 = function $$getReactionDiceCommandResult(command) { - var self = this, typeText1 = nil, typeText2 = nil, name = nil; - - - if ($truthy(/^RT((\w\d*)(\w\d*))?/['$==='](command))) { - } else { - return nil - }; - typeText1 = $$($nesting, 'Regexp').$last_match(2); - typeText2 = $$($nesting, 'Regexp').$last_match(3); - name = "反応表"; - return self.$getReactionText(name, typeText1, typeText2, self.$getReactionInfoBlood(), self.$getReactionInfoStyle()); - }, $Dracurouge_getReactionDiceCommandResult$14.$$arity = 1); - - Opal.def(self, '$getHeresyReactionDiceCommandResult', $Dracurouge_getHeresyReactionDiceCommandResult$15 = function $$getHeresyReactionDiceCommandResult(command) { - var self = this, typeText1 = nil, typeText2 = nil, name = nil; - - - if ($truthy(/^HRT((\w\d*)(\w\d*))?/['$==='](command))) { - } else { - return nil - }; - typeText1 = $$($nesting, 'Regexp').$last_match(2); - typeText2 = $$($nesting, 'Regexp').$last_match(3); - name = "異端の反応表"; - return self.$getReactionText(name, typeText1, typeText2, self.$getHeresyReactionInfoBlood(), self.$getHeresyReactionInfoStyle()); - }, $Dracurouge_getHeresyReactionDiceCommandResult$15.$$arity = 1); - - Opal.def(self, '$getReactionText', $Dracurouge_getReactionText$16 = function $$getReactionText(name, typeText1, typeText2, infos1, infos2) { - var $a, $b, $$17, self = this, ten_value = nil, one_value = nil, number = nil, isBefore = nil, infos = nil, typeText = nil, index = nil, resultText = nil, info = nil; - - - if ($truthy(self.$checkTypeText(typeText1, infos1))) { - } else { - return nil - }; - if ($truthy(self.$checkTypeText(typeText2, infos2))) { - } else { - return nil - }; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (ten_value = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (one_value = ($a[0] == null ? nil : $a[0])), $b; - number = "" + (ten_value) + (one_value); - isBefore = $rb_lt(ten_value, 4); - infos = (function() {if ($truthy(isBefore)) { - return infos1 - } else { - return infos2 - }; return nil; })(); - typeText = (function() {if ($truthy(isBefore)) { - return typeText1 - } else { - return typeText2 - }; return nil; })(); - index = $rb_plus($rb_minus(one_value, 1), $rb_times((function() {if ($truthy(isBefore)) { - - return $rb_minus(ten_value, 1); - } else { - - return $rb_minus(ten_value, 4); - }; return nil; })(), 6)); - self.$debug("index", index); - resultText = ""; - if ($truthy(typeText['$nil?']())) { - resultText = self.$getReactionTextFull(infos, index) - } else { - - info = $send(infos, 'find', [], ($$17 = function(i){var self = $$17.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$[]']("type")['$=='](typeText);}, $$17.$$s = self, $$17.$$arity = 1, $$17)); - if ($truthy(info['$nil?']())) { - return nil}; - resultText = self.$getReactionTex(info, index); - }; - return "" + (name) + "(" + (number) + ") > " + (resultText); - }, $Dracurouge_getReactionText$16.$$arity = 5); - - Opal.def(self, '$checkTypeText', $Dracurouge_checkTypeText$18 = function $$checkTypeText(typeText, infos) { - var $$19, self = this, keys = nil; - - - if ($truthy(typeText['$nil?']())) { - return true}; - keys = $send(infos, 'collect', [], ($$19 = function(i){var self = $$19.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$[]']("type");}, $$19.$$s = self, $$19.$$arity = 1, $$19)); - return keys['$include?'](typeText); - }, $Dracurouge_checkTypeText$18.$$arity = 2); - - Opal.def(self, '$getReactionTextFull', $Dracurouge_getReactionTextFull$20 = function $$getReactionTextFull(infos, index) { - var $$21, self = this, resultTexts = nil; - - - resultTexts = []; - $send(infos, 'each', [], ($$21 = function(info){var self = $$21.$$s || this; - - - - if (info == null) { - info = nil; - }; - return resultTexts['$<<'](self.$getReactionTex(info, index));}, $$21.$$s = self, $$21.$$arity = 1, $$21)); - return resultTexts.$join("/"); - }, $Dracurouge_getReactionTextFull$20.$$arity = 2); - - Opal.def(self, '$getReactionTex', $Dracurouge_getReactionTex$22 = function $$getReactionTex(info, index) { - var self = this, typeName = nil, text = nil; - - - typeName = info['$[]']("name"); - text = info['$[]']("table")['$[]'](index); - return "" + (typeName) + ":" + (text); - }, $Dracurouge_getReactionTex$22.$$arity = 2); - - Opal.def(self, '$getReactionInfoBlood', $Dracurouge_getReactionInfoBlood$23 = function $$getReactionInfoBlood() { - var self = this, infos = nil; - - - infos = [$hash2(["type", "name", "table"], {"type": "D", "name": "ドラク", "table": ["空に輝く紅い月を仰ぐ", "小さくため息をつく", "相手を見下すように見る", "じっと目を合わせ語りかける", "かすかに微笑んで見せる", "懐から蝙蝠が飛び立つ", "頭上を蝙蝠が渦巻くように飛ぶ", "眉を寄せると共に、目が紅く光る", "手の中のワインを一口すする", "全身から薄紅色のオーラを発する", "不敵な笑みを浮かべる", "風もなく髪が舞う", "飽きた目で相手を見据える", "足元に小さなつむじ風が起こる", "激情や緊張感に髪が逆立つ", "紅い月の光を浴び、目を閉じる", "武器を掲げ、誓いの音頭を取る", "己の紋章をじっと見つめる"]}), $hash2(["type", "name", "table"], {"type": "R", "name": "ローゼンブルク", "table": ["鼻で笑う", "前髪をかき上げる", "己の髪をいじる", "一人小さく笑う", "ハミングで歌を口ずさむ", "片足を軸に、くるりと回る", "花弁を具現化し散らす", "衣装や鎧の色や装飾を変える", "己に酔い、目を閉じる", "具現化した華を手の中で弄ぶ", "気になる相手を口説こうとする", "肩をすくめる", "己の武器に口づけをする", "誘うように誰かの手を取る", "楽器を具現化し音を奏でる", "相手にウィンクする", "衣装についた埃を払う", "マントから無数の蝶が飛び立つ"]}), $hash2(["type", "name", "table"], {"type": "H", "name": "ヘルズガルド", "table": ["自粛を呼びかける咳払いをする", "眉をひそめる", "小言を言う", "無表情で相手を観察する", "足元に小さな地獄門が生じる", "周囲にわずかな怨嗟の声が響く", "咎めるような目を向ける", "直立不動の姿勢で立つ", "呆れた様子でため息をつく", "突然、振り返って睨む", "周囲の空気が凍りつく", "胸に手を当て、己を落ち着かせる", "手の中に具現化した鎖を弄ぶ", "周囲を厳しい目で見渡す", "仲間に疑いの視線を向ける", "感情に合わせ周囲に鎖が具現化", "堕落について忠告する", "冷たい視線で相手を一瞥する"]}), $hash2(["type", "name", "table"], {"type": "M", "name": "ダストハイム", "table": ["眉を寄せて考え込む", "周りを値踏みする目で見る", "手元に本を具現化し書き込む", "つまらなそうに眺める", "落ち着いた歩調で近づく", "目を閉じ、過去に想いを馳せる", "歩む跡、かすかな霧が舞う", "苦笑を浮かべて歩み寄る", "現状を分析する独り言を言う", "興味深そうに質問する", "目の前の様式に文句を言う", "無感動に会釈をする", "手の中に具現化したペンを弄ぶ", "目を見開き、感心する", "本、袖、マントなどで口元を隠す", "宙に浮かび、すべるように進む", "無感情に状況を検分する", "一瞬、姿が霧に包まれぼやける"]}), $hash2(["type", "name", "table"], {"type": "A", "name": "アヴァローム", "table": ["欠伸を噛み殺す", "頭をかく", "手元に生じた果実を食べる", "人懐っこい笑みを浮かべる", "夜鳥が肩にとまって来る", "黒猫が足元にじゃれて来る", "周囲を妖精の光が舞う", "瞬時に相手の側に現れる", "瞬時に相手から離れる", "虫や植物に気を取られる", "無垢な笑みを見せる", "うっかり誰かを巻き込んでころぶ", "誰かに甘えるようにもたれかかる", "笑みを浮かべながら頷く", "小さく首をかしげる", "無数の黒い鳥の羽根が宙を舞う", "果実を取り出して食べる", "思わせぶりな言葉や仕草をする"]}), $hash2(["type", "name", "table"], {"type": "N", "name": "ノスフェラス", "table": ["冥王領の方角を睨む", "舌打ちをする", "俯いて床や地面を睨む", "無意識に涙が伝う", "唇を噛む", "胸を押さえじっと考える", "首を打ち振って邪念を払う", "内心の怒りに険しい貌となる", "毅然とした態度で立ち向かう", "渇いた笑い声を漏らす", "己の血族を貶める言葉を紡ぐ", "静かな怒りと共に目が青白く光る", "野の花に触れ、それを枯らす", "疲れた様子で淡く光る吐息を吐く", "己の紋章をぼんやりと見つめる", "自嘲的に小さく笑う", "疲れた目でぼんやりと他を見る", "何か決心したように顔を上げる"]}), $hash2(["type", "name", "table"], {"type": "G", "name": "ゲイズヴァルト", "table": ["相手を見下すように見る", "激情に合わせ頭髪が", "高らかに自らの血統を名乗る", "武器を具現化し、掲げる", "他者を睨みつける", "相対する者が、圧迫感を感じる", "じっと目を閉じる", "他に威圧的な態度をとる", "不敵な笑みを浮かべる", "片目に手を当て、眉を寄せる", "目が一瞬だけ異様に光る", "鋭い視線を周囲に巡らせる", "髪が淡く光る", "背後の者が、貴卿の視線を感じる", "眼球の白目が異様な色に光る", "目隠しを具現化して目を隠す", "余裕のある笑みを浮かべる", "目から光が炎のように噴き上がる"]}), $hash2(["type", "name", "table"], {"type": "K", "name": "カインシルト", "table": ["両手で顔を覆う", "逆立つ小さく肩を落とす", "過去を思い出し、眉をひそめる", "疲れ切ったように座り込む", "己の紋章に触れ、ためいきをつく", "ワインの水面をじっと見つめる", "疲れ、渇いた笑みを浮かべる", "居心地悪そうに下を向く", "故郷の方角をちらりと見る", "衣装の襟や裾をいじる", "他の騎士から少し距離をとり、離れる", "他の騎士を、自虐的に褒める", "胸に手を当て、沈思黙考する", "己のかつての血統の名を呟く", "沈痛な面持ちで空を見上げる", "誇りを持って、己の紋章を掲げる", "己の罪や信仰を吐露する", "血統を捨てた理由について語る"]})]; - return infos; - }, $Dracurouge_getReactionInfoBlood$23.$$arity = 0); - - Opal.def(self, '$getReactionInfoStyle', $Dracurouge_getReactionInfoStyle$24 = function $$getReactionInfoStyle() { - var self = this, infos = nil; - - - infos = [$hash2(["type", "name", "table"], {"type": "F", "name": "領主", "table": ["相手の目を覗き心を探る", "己の領地に想いを馳せる", "従者を侍らせる", "従者の世話を受ける", "好ましい相手を手招きする", "憂いに満ちた物思いにふける", "重々しく頷く", "優しげな微笑を浮かべる", "ちらりと己の紋章を示す", "ワインの杯を他の騎士に渡す", "じっと風景を眺める", "手の中にチェスの駒を具現化する", "胸を張り、自信を持って発言する", "速やかに謝罪する", "他の騎士を正面から褒める", "他の騎士の髪や頬を撫でる", "重々しく名乗りを上げる", "口元を隠しつつ上品に笑う"]}), $hash2(["type", "name", "table"], {"type": "G", "name": "近衛", "table": ["主の傍にそっと寄り添う", "紋章の刻まれた盾を掲げる", "武器を構えて上品に一礼する", "己の盾の紋章を指でなぞる", "他の騎士に寄り添う", "主の背後から相手を睨む", "主の前、または傍らにひざまずく", "きまり悪そうに顔を赤く染める", "誰かの前に立ちはだかる", "落ち着かなげに歩き回る", "はにかんだ笑みを浮かべる", "緊張した視線を周囲に巡らす", "心の中で他の騎士と試合をする", "じっと動かず控えている", "主をじっと見つめる", "主を褒めたたえる", "主の袖を握りしめる", "主に対する、周囲の態度を咎める"]}), $hash2(["type", "name", "table"], {"type": "R", "name": "遍歴", "table": ["かつての戦いについて語る", "風に髪をなびかせる", "具現化した乗騎を撫でる", "仲間の肩を叩く、あるいは抱く", "爽やかに笑う", "高らかに名乗りをあげる", "周囲に積極的に話しかける", "己の名に誓い、約束をする", "大げさに誰かを褒めたたえる", "他の騎士に手合わせを乞う", "マントを大げさにひるがえす", "相手を褒めそやし口づけを求める", "己の故郷を思い出す", "己の紋章について語る", "他の騎士と世間話をする", "困ったように小さく唸る", "格上の前に跪いて礼を尽くす", "格下や人間に微笑みかける"]}), $hash2(["type", "name", "table"], {"type": "W", "name": "賢者", "table": ["相手を推し測るように見つめる", "メガネを具現化してかける", "わずかな点に目を留める", "大げさにため息をついて見せる", "目を閉じて思索にふける", "他の騎士に助言する", "ごまかすように咳払いする", "わずかな会釈をする", "他の騎士に目で合図をする", "謎めいた笑みを浮かべる", "空に浮かぶ星々を眺める", "深い知識で詳しい説明をする", "未来について占ってみる", "ささやかな予言をする", "噂の類を他の騎士に囁く", "ふとした品を興味深く観察する", "月を見上げドラクルを褒め讃える", "他の騎士の感情をいさめる"]}), $hash2(["type", "name", "table"], {"type": "J", "name": "狩人", "table": ["“敵”を思い出し険しい目になる", "唾を吐く", "具現化した武器を撫でる", "陰鬱な目で虚空を睨む", "裾から現れた蛇か蜘蛛を撫でる", "思いつめた目で夜空を見る", "己の武器を舐めて見せる", "暗い笑みを浮かべる", "物陰に隠れる", "他の騎士の紋章を観察する", "空気を読まない発言をする", "突然振り向いて背後に警戒する", "過去の無念に血涙を流す", "鮫のように笑う", "その場にいない騎士を嘲笑う", "他の騎士とのへだたりを感じる", "ぼそりと名乗りをあげる", "格下を見下した目で見る"]}), $hash2(["type", "name", "table"], {"type": "N", "name": "夜獣", "table": ["獣のような荒い呼吸をする", "潤んだ上目遣いで相手を見る", "俯いて深呼吸する", "壁や床に爪を立てて引っかく", "己に言い聞かせる独り言を言う", "堕落の兆しをじっと見る", "他の騎士から目をそらす", "他の騎士の機嫌を窺う", "相手を睨み唸る", "己の指先をちろりと舐め上げる", "他の騎士から距離を取り離れる", "獰猛な笑みを浮かべる", "己の肌を、爪などで傷つける", "こっそり舌なめずりをする", "妖しい流し目を送る", "哀しげな目で己の紋章を見る", "獲物を狙う目で、他の騎士を見る", "自虐的な言葉をつぶやく"]}), $hash2(["type", "name", "table"], {"type": "E", "name": "将軍", "table": ["机や壁を叩きつつ、激昂する", "失敗した部下をたしなめる", "凶悪な笑みを浮かべる", "音を立てて踵をそろえ、直立する", "不機嫌そうに酒杯をあおる", "壁や卓上に周辺地図を具現化する", "口をつぐみ、厳めしい顔をする", "部下から情報を耳打ちされる", "他の騎士を品定めするように見る", "内密の話のため、移動する", "他の騎士に助言する", "他者をいさめる", "目を閉じ、戦場に想いを馳せる", "部下や民に酒食をふるまう", "かつての戦場について語る", "戦術について他の騎士と語る", "他者を激励する", "部下や民からの報告を聞く"]}), $hash2(["type", "name", "table"], {"type": "B", "name": "僧正", "table": ["深々とため息をつく", "紅い月を眺め、涙を溢れさせる", "他者を咎め説教する", "その場に跪き、月へ祈る", "他の騎士を心配する", "教典の一文を読み上げる", "他の騎士や民を諌める", "教典を具現化し、他者に手渡す", "真祖へ感謝の言葉を述べる", "壇上などに真祖の印を具現化する", "騎士や民を微笑み眺める", "他者の言葉に大いに感動する", "他の騎士の行いを戒める", "相手を慈しむ微笑みを浮かべる", "他者を大いに褒める", "他者をいたわるように撫でる", "真祖の印を強く握りしめる", "天の紅き月へ感謝を捧げる"]}), $hash2(["type", "name", "table"], {"type": "H", "name": "空駆", "table": ["乗騎が他を退け、過剰に守ろうとする", "粗相した乗騎を、軽く叱る", "他の者らを警戒する乗騎をなだめる", "他の者に心許す乗騎に嫉妬する", "己の乗騎と、子供のように戯れる", "乗騎に乗り、共に駆ける素晴らしさを語る", "高らかに、己と乗騎の名乗りをあげる", "つい礼法を忘れ、誰かの髪を撫でる", "乗騎にもたれかかり、目を細める", "周りと話しつつも、己の乗騎を気に掛ける", "己の乗騎に語りかける", "己の乗騎と、食事を分け合う", "己の乗騎を褒められて照れる", "己の乗騎の頼もしさについて語る", "様々な装飾を具現化し、己の乗騎を飾る", "具現化ではない小鳥や小動物が集まる", "乗騎を抱きしめて撫でながら褒める", "己の乗騎を得た次第について語る"]}), $hash2(["type", "name", "table"], {"type": "K", "name": "船長", "table": ["少しばかり下世話な冗句を言う", "礼式に肩をすくめ、居心地悪そうにする", "かすかな潮風を具現化させ、吹かせる", "口笛で素朴な曲を披露して見せる", "瀟洒ならずとも快活な笑いをこぼす", "その周囲にかすかな潮騒が聞こえ始める", "異国風の歌や曲を披露して見せる", "誰かに、美しい貝殻を土産として手渡す", "誰かの手を取り、異国風の踊りに誘う", "異郷の珍味、酒を周りに勧める", "己の船の小さな模型を具現化して見せる", "情熱的に、誰かをかき口説く", "他の領地で見聞した話を語る", "己の船と、その名の由来について語る", "誰かを次の航海に誘う", "海の脅威について法螺交じりに語る", "異郷の様々な情景を具現化して見せる", "遥か遠い奇妙な島や海域について語る"]}), $hash2(["type", "name", "table"], {"type": "L", "name": "寵童", "table": ["主の影にそっと隠れる", "主から離れず、ぴったりと密着する", "主の袖を小さく摘まみ、軽く引っ張る", "主に頭を撫でてもらう", "主の髪に指を絡め、梳いたり弄ったりする", "主に甘えるようにもたれかかる", "主に、ちょっとした我儘を言う", "はにかんだ笑顔を浮かべて見せる", "目を潤ませ、熱い溜息をつく", "きまり悪そうに頬を赤く染め、顔を背ける", "申し訳なさそうな顔で、うつむいてしまう", "主以外の騎士を、じっと見つめてしまう", "無意識に誘うような仕草をしてしまう", "誰かに飛びつき、しがみついて抱きしめる", "庇護欲をそそらせる微笑を浮かべる", "主以外の騎士に、熱心に質問を重ねる", "切なげな溜息をつく", "主の手を取り、その指を舐める"]}), $hash2(["type", "name", "table"], {"type": "V", "name": "仲立", "table": ["他者を冷たい目で品定めする", "人目を避けて、露骨に不機嫌な顔になる", "音を立てずに舌打ちする", "ほがらかな笑顔だが、目は笑っていない", "敢えて周囲に軽んじられるよう、振る舞う", "顎に手を当て、軽く考え込む", "会話に入り込めない者を話に誘う", "他の者らを紹介させ合い、縁を取り持つ", "目論見を思案し、悪い顔で目を細める", "周囲の人間模様をそれとなく観察する", "誰かに積極的に話しかける", "笑顔で会話しつつ、相手の真意を探る", "そっと相手の唇に指を当て、言葉を封じる", "様々な人々との談笑にふける", "誰かにちょっとした贈り物を手渡す", "誰かに相談事はないかと、軽く聞く", "誰かについて、惜しみない賞賛を語る", "誰かを嫌味でない程度に褒めそやす"]}), $hash2(["type", "name", "table"], {"type": "U", "name": "技師", "table": ["持ち歩いていた人形の部位を弄ぶ", "過去の作品を具現化し、自画自賛する", "己の技巧の未熟さについて嘆く", "己の作品以外が褒められるを聞いて嫉妬", "ふとした品を興味深そうに分解し始める", "人形に活かすべく誰かの体を撫で回す", "誰かの手を取り、弄り回す", "突然、羊皮紙に図面を書き始める", "メガネを具現化してかける", "人形の美しさについて、周囲の意見を問う", "相手の美しさを奇妙な視点で賛辞する", "思いついた人形の部位を具現化してみる", "他愛ない事象から、新たな着想を得る", "自動人形のための衣装を具現化してみる", "魂と堕落について、誰かと語り合う", "己の理想とする人形について語る", "誰かの美しさに目を奪われる", "誰かの仕草に、嘆息して感動を覚える"]}), $hash2(["type", "name", "table"], {"type": "D", "name": "博士", "table": ["素晴らしい着想を得て、奇声をあげる", "誰かの非理論的な発言に食ってかかる", "他の騎士の非合理的作法を鼻で笑う", "突然、満面の笑みを浮かべる", "己の研究について嬉々として語る", "平然と場の空気を無視した発言をする", "実験動物を見る目で、誰かを見つめる", "衣装の機能性について、誰かを批判する", "己の才に酔い、一人ほくそえむ", "閃いた着想を紙片に書き留めておく", "行き詰った研究について独り言を呟く", "誰かのあまりに低い知的水準を嘆く", "メガネを具現化してかける", "黙り込んで様々な試行錯誤に専念する", "目を閉じて、学術的瞑想にふける", "ふとした品を興味深く観察し、分析する", "誰かに研究への協力を頼みこむ", "己なりに知的な言葉で誰かを賛辞する"]}), $hash2(["type", "name", "table"], {"type": "S", "name": "星読", "table": ["空に同調しすぎて、一瞬だけ具現化が解ける", "目を開き空を見上げたまま、仰向けに横たわる", "じっと空を見上げたまま、反応しなくなる", "星辰の変化に驚愕し、奇声をあげてしまう", "ほんやりと空の星を見上げる", "星を掴もうとするように両手を広げ、空を見上げる", "目を見開き、じっと空の星を集中して見つめる", "星辰について感覚的な言葉を並べ続ける", "ぶつぶつと星の在り方について呟き、計算する", "手近な誰かに、星辰の在り様を細かく説明する", "思わぬ星の動きを見つけ、興奮する", "誰かに、興味深い星が宿っていることに気づく", "誰かに、星の定めた運命を予言する", "誰かに、その運命を変えると宣言する", "空を指差し、その先にある星を輝かせる", "空に手を軽く振り、風を起こして雲をどかす", "空に手を軽く振り、雲で特定の星を隠す", "空に手を差し出し、紅月をさらに輝かせる"]}), $hash2(["type", "name", "table"], {"type": "G2", "name": "後見", "table": ["己の過去に搦めて、誰かを説教してしまう", "庇護対象の未熟さに、小さな溜息をつく", "少し離れた場所から庇護対象を見守る", "昂り、出しゃばってしまいそうな己を抑える", "庇護対象の背後に、黙って控える", "誰かと語らいつつ、庇護対象を時折うかがう", "若き騎士らの様子を、まぶしそうに見守る", "己の紋章を撫でて、若き日々に思いを馳せる", "そっと、庇護対象を背後から抱き寄せる", "顎に手を当て、軽く考え込む", "会話に入り込めない者を話に誘う", "他の者らを紹介させ合い、縁を取り持つ", "誰かに、庇護対象の良き逸話を話す", "ふと、自身の騎士道の果てが近づいたと感じる", "民らの様子を、注意深く観察する", "庇護対象の成長に、、思わず顔をほころばせる", "庇護対象に、控えめな助言を与える", "庇護対象に微笑みかけ、わずかに褒める"]})]; - return infos; - }, $Dracurouge_getReactionInfoStyle$24.$$arity = 0); - - Opal.def(self, '$getHeresyReactionInfoBlood', $Dracurouge_getHeresyReactionInfoBlood$25 = function $$getHeresyReactionInfoBlood() { - var self = this, infos = nil; - - - infos = [$hash2(["type", "name", "table"], {"type": "L", "name": "異端卿", "table": ["床を睨み意識を何とか保つ", "歩いた跡に、消えゆく塵を遺す", "鎧全体に、光が脈打つ", "金の軋むような呻き声を漏らす", "足音に悲嘆がこもる", "声なき咆哮を放つ", "他者を威圧する", "胸に手を当て、己を落ち着かせる", "一瞬、かつての紋章が浮かぶ", "鎧の中で金属の軋む音がする", "鎧に一瞬、無数の棘が生える", "兜の中の目がギラギラと光る", "体が痙攣したように震える", "鎧の一部が一瞬、武器化する", "鎧が蠢いて奇怪な形になる", "周囲に青白い光が立ち昇る", "己の目的について語る", "恐ろしい目で他者を見る"]}), $hash2(["type", "name", "table"], {"type": "V", "name": "ヴルコラク", "table": ["己の頭をかきむしる", "膝をついて、苦しみもがく", "一瞬、人狼の姿が重なる", "他者の喉を凝視する", "獣のように呼吸が荒くなる", "己に言い聞かせる独り言を言う", "唇を噛み、口の端から血を流す", "ざわざわと衣服の下で肉が蠢く", "牙を剥きだして唸る", "顔を険しくしかめる", "思いつめた目で押し黙る", "壁にすがりつき、嗚咽を漏らす", "己の胸を押さえて深呼吸する", "獲物を狙う目で、騎士を見る", "月をじっと見つめる", "一瞬、頭に狼の耳が現れる", "月を見上げ、怒りの唸りを漏らす", "決意した顔で、正面を見る"]}), $hash2(["type", "name", "table"], {"type": "N", "name": "ナハツェーラ", "table": ["生きたものをじっと見つめる", "己の手を見て、深いため息をつく", "少しだけ遅れて受け応えする", "一瞬、脱力して死体に戻る", "ひからびたような笑い声を漏らす", "歩いた跡に血の足跡が残る", "周囲に生ぬるい湿った風が吹く", "手がどろりと血に塗れる", "無意識に、涙が流れてしまう", "植物に触れ、一瞬で枯らす", "裾から多数の骨が溢れ出す", "触れた通常の品が、朽ち果てる", "周囲の温度が下がる", "目が青白く光る", "淡く光るため息を漏らす", "傍らに鬼火を具現化する", "生前について語る", "手の中に髑髏を具現化する"]}), $hash2(["type", "name", "table"], {"type": "K", "name": "カルンシュタイン", "table": ["姿が霧に包まれぼやける", "一瞬、白目が黒く染まる", "存在感を消して物陰に佇む", "周囲の些細な音に警戒する", "騎士から目をそらす", "一人小さく笑う", "床を浮かび、すべるように進む", "歩む跡、かすかに黒い霧が舞う", "黒い蒸気のような吐息を吐く", "片足を軸に、くるりと回る", "己の髪をいじったり、かき上げる", "衣装についた埃を払う", "口元を隠して笑みをこぼす", "他から距離を取って、闇に潜む", "騎士の紋章をじろじろと見る", "貴族的な笑みをこぼす", "自信に溢れた様子で胸を張る", "豪奢な衣装を具現化してまとう"]}), $hash2(["type", "name", "table"], {"type": "G", "name": "グリマルキン", "table": ["その場で居眠りする", "大きな欠伸をする", "猫の姿で、居眠りをする", "猫の姿で、壁をひっかく", "他者の具現化に飛びかかる", "黒猫が足元にじゃれて来る", "尻尾をぴんと伸ばす", "猫の姿で、他者を威嚇する", "不満を漏らす", "猫の姿で、狭い所に入り込む", "耳と尻尾がぴくぴくと動く", "家具や木の上に登る", "猫の声で鳴く", "退屈そうに小物をいじり回す", "周囲に近隣の猫が集まる", "猫の姿で、他者の膝上にのる", "適当な小物にじゃれついて遊ぶ", "他者にじゃれつく"]}), $hash2(["type", "name", "table"], {"type": "S", "name": "ストリガ", "table": ["翼をきつく閉じて怯える", "他の騎士や異端にとにかく謝る", "弱者をいじめる", "他のストリガを貶める言葉を紡ぐ", "強者にへりくだって媚びを売る", "民などに高慢な態度をとる", "民の小さな失敗をなじる", "肩にとまった小鳥と語らう", "翼を広げ、他者に手をさしのべる", "袖から小鳥が飛び立つ", "ハミングで歌を口ずさむ", "上空で鳥が輪を描き、歌う", "他者に愛想よく微笑みかける", "無数の黒い鳥の羽根が宙を舞う", "他者を翼で包み抱きしめる", "美しい声で歌い始める", "肩に舞い降りた鳥が耳元で鳴く", "周囲に無数の小鳥が集まる"]}), $hash2(["type", "name", "table"], {"type": "M", "name": "メリュジーヌ", "table": ["ぼんやりと遠くを眺める", "口から小さく威嚇音を漏らす", "一瞬舌を出し、香りを舐めとる", "つまらなさそうに様子を眺める", "過去を思い出すように考え込む", "目を見開き、他者に感心する", "湿った風が渦巻く", "下半身を人間のものに変える", "手から水を生み出し、杯に注ぐ", "周囲に水たまりができる", "謎めいた笑みを浮かべる", "舌を伸ばし、他者の顔を舐める", "下半身の蛇を、他者に絡ませる", "興味深そうに質問する", "毒蛇を具現化し、身に絡め弄ぶ", "袖から無数の蛇が現れる", "卵を取り出して丸呑みする", "他者に下半身を絡め抱きしめる"]}), $hash2(["type", "name", "table"], {"type": "F", "name": "フォーン", "table": ["より退廃的な衣装をまとう", "悪戯っぽく首をかしげてみせる", "よこしまな笑顔を見せる", "ふしだらな舌なめずりをする", "顔を上気させ、ため息をつく", "己を抱きしめて身をよじる", "己の指先をちろりと舐め上げる", "ひどく淫らな声を漏らす", "武器にいやらしく舌を這わす", "濡れた上目遣いを見せる", "扇情的な仕草をする", "頭髪があやしく波打つ", "妖しい流し目を送る", "他者の耳元に囁き、息をかける", "他者にしなだれかかる", "他者の体に手を這わせ愛撫する", "謎めいた笑みを浮かべる", "他者を口説き始める"]}), $hash2(["type", "name", "table"], {"type": "H", "name": "ホムンクルス", "table": ["苦しそうに咳き込みながら膝をつく", "ふらつき、壁や他の騎士にもたれる", "己の胸に手を当て、沈痛な顔を見せる", "腕か脚が一瞬、霧のように崩れかける", "自嘲的な乾いた笑いが漏れる", "無表情に周りの様子をぼんやり眺める", "月光を避けるように影や屋内に入る", "他の騎士に手を伸ばしかけて、止める", "不意に月光を浴びてしまい、苦痛を耐える", "会話に入ろうとするが、やめてしまう", "具現化した花の消える様子に己を重ねる", "他の騎士たちをまぶしそうに見守る", "未来について、詳細な推理を述べる", "疲れた様子で、淡く光る吐息を深々と吐く", "瞬時に予想し、落ちかけた品を受け止める", "遠い先の話題に、自虐的な笑みを漏らす", "一刻後の天候を、正確に言い当てる", "ほんのかすかな笑顔が浮かぶ"]}), $hash2(["type", "name", "table"], {"type": "E", "name": "エナメルム", "table": ["人形の虚ろな表情からは何もわからない", "居心地悪そうに、隅にいる", "何かを口にしかけるが、うつむいてしまう", "何かに触れ、カチンと金属音を立てる", "ぎこちない動きで体を動かす", "誰かに無言で、何かを訴える", "身振り手振りで、己の感情を伝えようとする", "せめて感触を得ようと、誰かに触れ続ける", "誰かをじっと、硝子の瞳で見つめている", "人の体にはできない動きで、奇妙に舞う", "立ったまま、微動だにしない", "己の記憶を取り戻そうと、辺りを見回す", "無意識に、表情も動かぬまま涙が溢れる", "誰かの所作を、己に取り入れようとする", "声ではない、楽器の音色のような歌を披露", "無機的な目で、冷たく誰かを一瞥する", "無言でただそっと、誰かに寄り添う", "断片的に、かつての魂の記憶が蘇る"]}), $hash2(["type", "name", "table"], {"type": "S2", "name": "サングィナリエ", "table": ["怒りや欲望で、顔が怪物のように醜くゆがむ", "衝動的に誰かを抱き寄せ、首筋に顔を寄せる", "騎士を嘲るように見て、鼻で笑う", "渇きと共に、口の端から紅い唾液が垂れる", "足元から真紅の血だまりが広がり、場を覆う", "目が光り、誰かの首筋を舐めるように見る", "騎士道の偽善性を説き、嘲笑う", "誰かの首筋を、じいっと凝視する", "胸に手を当て、深呼吸して己を落ち着かせる", "誰かの血の味を口の中に思い出し、ほくそ笑む", "切なげなため息をつき、舌なめずりする", "誰かに、慇懃無礼な皮肉めいた誉め言葉を送る", "マントをひるがえして誰かに近づくか、傍から退く", "目が異様な光を灯す、民がいるなら陶然となる", "わざとらしく衣装についた埃を払ってみせる", "高らかに、サングィナリエの血統を名乗る", "騎士の在り方について、異端の論を披露する", "余裕のある不敵な笑みを浮かべる"]}), $hash2(["type", "name", "table"], {"type": "A", "name": "アールヴ", "table": ["平然と場の空気を無視した発言をする", "他の誰かが褒められて様子に、嫉妬する", "ハミングで、妖精の歌を口ずさむ", "好奇心も露に、誰かに話しかける", "肩にとまった小鳥と語らう", "野の花をそっと愛でて、微笑む", "誰かに、剣での立ち合いを求める", "流れるような動きで誰かに近づき、手を取る", "妖精の美酒を手元に出し、誰かの盃に注ぐ", "周囲に小さな妖精たちが、光の点となって舞う", "妖精郷の歌や舞を披露してみせる", "様々な人々との談笑にふける", "誰かに愛の言葉を捧げ、口説き始める", "誰かについて、惜しみない称賛を語る", "少し奇妙な言い回しで、誰かを賛辞する", "騎士道について、熱く語る", "己の属する妖精郷の宮廷に、誰かを誘う", "誰かの振る舞いに嘆息し、大いに感動を覚える"]}), $hash2(["type", "name", "table"], {"type": "V2", "name": "ヴィーヴル", "table": ["周囲の者は、圧迫感と居心地の悪さを感じる", "誰かに、理不尽な我儘を言う", "つまらなさそうに他の者達の様子を眺める", "話題を断ち切り、己の目的を率直に遂げんとす", "傲慢とも取れる目で誰かを見下ろし、品定めする", "威嚇するように、腕に翼を大きく広げる", "誰かを子供扱いし、わざと挑発してからかう", "幻に包まれたように、その姿が一瞬だけ揺らぐ", "表情を変えずとも、ぞわりと龍体の色が変わる", "浮かんだまま、遠い目をする", "他の者達の絆の強さを、見定めようと観察する", "誰かに髪の手入れを求める", "各地の様々な事象について、次々と質問する", "真祖と龍と月について、滔々と語り始める", "誰かの行いを諫め、戒める", "誰かを龍の翼で包むように抱きしめ、褒める", "誰かを慈しむように撫で、いたわる", "その姿が一瞬、巨大な龍に見える"]}), $hash2(["type", "name", "table"], {"type": "L2", "name": "ルーガルー", "table": ["巨大な狼の姿となって、警戒も露にうなる", "怒りを耐えるように、拳をきつく握りしめる", "苛立たしげに、狼の口から牙を剥きだしてうなる", "怒りを抑えるが、獣毛が逆立つ", "疲労や緊張から、獣のように呼吸が荒くなる", "疲れ、乾いた笑みを浮かべる", "周囲の些細な音に警戒し、耳を動かす", "誰かを睨みつけ、威圧する", "狼の鼻先が、ひくひくと動く", "鋭い視線を無表情で巡らせ、状況を把握する", "目を閉じ、腕を組んで、じっと立ち続ける", "1人遠く、故郷の方角へと視線を向けて佇む", "決意した顔で、正面から誰かと向かい合う", "沈痛な面持ちで空を見上げ、うなる", "自然の在り様について、言葉少なに語る", "たとえ屋内であろうと、野の風が吹く", "誰かの美しさに、思わず目を奪われる", "目を閉じて、故郷たる自然に思いを馳せる"]}), $hash2(["type", "name", "table"], {"type": "A2", "name": "アルラウネ", "table": ["不満を漏らしたり、軽い我儘を言ったりする", "そっと誰かの耳元に何かを囁く", "己の髪に指を絡め、梳いたり弄ったりする", "感じ取った未来を口にしかけるが、やめてしまう", "1悪戯っほい、謎めいた笑みを浮かべる", "誰かに己の身をすりつけるように、絡みつく", "瞬時に予知し、落ちかけた品を受け止める", "わずかに動くごとに、周囲を花の香りが包む", "舞うような足取りで、誰かに密着するよう近づく", "煽情的な仕草をしつつ、妖しい流し目を送る", "誰かに甘えるようにもたれかかる", "誰かの運命について、断片的に口にする", "足元に妖しくも美しい花畑が具現化される", "具現化した蔓と葉が、その肢体に絡みつく", "周囲に無数の花弁を具現化しつつ、舞う", "より華麗で美しい衣装をまとう", "未来について、曖昧な予言を口にする", "己に咲く花を摘み、誰かに手渡す(瞬時に再生)"]}), $hash2(["type", "name", "table"], {"type": "F2", "name": "フリッガ", "table": ["その影が巨大な蜘蛛となって、蠢く", "他の騎士や異端にとにかく謝る", "居心地悪そうに、隅にいる", "ほがらかな笑顔だが、目は笑っていない", "恋の話題に、自虐的な笑みしか浮かばない", "己に口い聞かせるように、独り言を言う", "会話に入ろうとするが、やめてしまう", "申し訳なさそうな顔で、うつむいてしまう", "無意識に、己の腹をいとおしげに撫でる", "誰かの腕や袖をしっかりと掴んで、離さない", "誰かを思いつめた目で、じっと見つめている", "目を潤ませ、熱い溜息をつく", "他の騎士に手を伸ばしかけて、止める", "具現化した糸を、誰かの指とつなぐ", "困ったような、泣き笑いの微笑みを浮かべる", "誰かにびったりと密着して離れない", "そっと相手の唇に指を当て、言葉を封じる", "誰かに、狂気の如き恋心を抱き始める"]})]; - return infos; - }, $Dracurouge_getHeresyReactionInfoBlood$25.$$arity = 0); - - Opal.def(self, '$getHeresyReactionInfoStyle', $Dracurouge_getHeresyReactionInfoStyle$26 = function $$getHeresyReactionInfoStyle() { - var self = this, infos = nil; - - - infos = [$hash2(["type", "name", "table"], {"type": "W", "name": "野伏", "table": ["露骨に、騎士から距離をとる", "騎士や民を見て、舌打ちする", "騎士について不満を口にする", "民の在り様について批判する", "獰猛な笑みで周りをねめつける", "粗野に体をぼりぼりと掻く", "床に唾を吐き捨てる", "武骨な武具を具現化する", "革袋の酒や水を飲み干す", "他者に咎めるような目を向ける", "手づかみで、粗野に食事する", "騎士を見下した目で見る", "正面から相手を見据え会話する", "取り出した肉を噛みちぎり喰らう", "自然の力について語る", "周囲を厳しい目で見渡す", "無礼な発言をする", "己の土地について語る"]}), $hash2(["type", "name", "table"], {"type": "N", "name": "流浪", "table": ["呆れた様子でため息をつく", "欠伸を噛み殺す", "大げさに肩をすくめて見せる", "他から距離を取り、様子を眺める", "具現化した果実を食べる", "口笛を吹く", "一組のカードを具現化して弄ぶ", "名もなき野草の花を愛でる", "楽器を具現化し、音を奏でる", "他者と世間話をする", "風評を元に他者を褒めたたえる", "吹く風に目を細める", "小鳥や虫、植物らに話しかける", "仲間の肩を叩く、あるいは抱く", "風に髪をなびかせる", "旅の土産話を披露する", "目を閉じてリラックスする", "他者に異郷の珍しい品を渡す"]}), $hash2(["type", "name", "table"], {"type": "S", "name": "密使", "table": ["周りを値踏みする目で見る", "冷たい目で外を眺める", "濁った眼で、他者をじっと見る", "無感情に状況を検分する", "小さな名もなき花を目に留める", "他の騎士に目で合図を送る", "感情のない目で他者を見る", "小さく自嘲的な笑みを浮かべる", "過剰なほどに周囲を警戒する", "他者をちらちらと観察する", "手の中でナイフを弄ぶ", "騎士に深々と礼をする", "自虐的な言葉を呟く", "そっと騎士に寄り添い控える", "他者と世間話をし、談笑する", "主の名を、心の中で唱える", "騎士を褒めたたえる", "他者に積極的に話しかける"]}), $hash2(["type", "name", "table"], {"type": "H", "name": "魔女", "table": ["誰もいないところに話しかける", "含み笑いから、やがて高笑いへ", "眉を寄せて、水面を見つめる", "騎士を胡乱な目で見る", "大鍋を具現化し、かき混ぜる", "胡散臭い笑みを浮かべる", "足元をゴブリンが駆けていく", "小さく含み笑いを漏らす", "奇妙な言い回しの言葉を言う", "具現化した杖で、床を叩く", "思わせぶりな言葉や仕草をする", "周囲を魔法や妖精の光が舞う", "奇妙な知識で状況説明する", "奇怪な呪文を呟く", "あやしげな護符を取り出す", "袖から現れた小動物と会話する", "他者の人相などを占う", "手の中に青白い炎を具現化する"]}), $hash2(["type", "name", "table"], {"type": "F", "name": "剣士", "table": ["騎士の礼儀作法を嘲笑い、茶化す", "具現化した武器の柄に手を伸ばす", "凶悪な笑みを浮かべ、相手をねめつける", "油断なく周囲に視線を走らせ、警戒する", "剣を手の中に具現化し、弄ぶ", "口笛やハミングで、簡単な曲を奏でる", "不敵な笑みを浮かべながら、名乗る", "周囲の騎士や異端との戦いを、思い描く", "誰かに関する風聞と、実際の印象を語る", "警戒と同時に、手が武器に伸びてしまう", "自信に溢れた様子で、堂々と会話する", "過去の敗北から得た教訓について語る", "闘志により周りの風景が、ぐにゃりと歪む", "周囲に風が渦巻き、衣装をはためかせる", "気に入った相手を口説こうとする", "勇ましく迫力に満ちた剣舞を披露する", "騎士や民に目を向けて、舌打ちする", "かつての戦いや冒険について語る"]}), $hash2(["type", "name", "table"], {"type": "X", "name": "検体", "table": ["肉体が異形化しようとするように、波打つ", "発作的にうずくまり、呻き苦しむ", "指の長さが異様に伸びたり縮んだりする", "ふとした金属音に、異様なほど怯える", "汗をかきながら、俯いて深呼吸する", "己に言い聞かせるように、独り言をいう", "蘇る苦痛の記憶に、震えが止まらない", "誰かにぴったりとしがみついて離れない", "一瞬、肌に無数の傷跡が浮かび上がる", "過去を振り払うように、首を打ち振る", "初対面の人物の所作に、怯え隠れる", "体の内から、脈打つように異様な光を放つ", "一瞬、爪や犬歯が伸びて異形の姿となる", "何かの拍子に、異様なほどの跳躍をする", "他の者を妬み呪う言葉が口から溢れる", "目から血が涙のように流れ出す", "壁にすがりつき、何かを抑え嗚咽を漏らす", "誰かに、己の苦しみからの助けを求める"]})]; - return infos; - }, $Dracurouge_getHeresyReactionInfoStyle$26.$$arity = 0); - - Opal.def(self, '$getCorruptionDiceCommandResult', $Dracurouge_getCorruptionDiceCommandResult$27 = function $$getCorruptionDiceCommandResult(command) { - var $a, $b, self = this, modify = nil, name = nil, table = nil, number = nil, number_text = nil, index = nil, text = nil; - - - if ($truthy(/^CT(\d+)$/['$==='](command))) { - } else { - return nil - }; - modify = $$($nesting, 'Regexp').$last_match(1).$to_i(); - name = "堕落表"; - table = [[0, "あなたは完全に堕落した。この時点であなたは[壁の華]となり、人狼、黒山羊、夜獣卿のいずれかとなる。その[幕]の終了後にセッションから退場する。247ページの「消滅・完全なる堕落」も参照すること。"], [1, "あなたの肉体は精神にふさわしい変異を起こす……。「堕落の兆し表」を2回振って特徴を得る。このセッション終了後、【道】を「夜獣」にすること。(既に「夜獣」なら【道】は変わらない)"], [3, "あなたの肉体は精神にふさわしい変異を起こす……。「堕落の兆し表」を1回振って特徴を得る。このセッション終了後、【道】を「夜獣」にすること。(既に「夜獣」なら【道】は変わらない)"], [5, "気高き心もやがて堕ちる。あなたが今、最も多くルージュを持つ対象へのルージュを全て失い、同じだけのノワールを得る。ノワールを得た結果【渇き】が3点以上になった場合は、再度堕落表を振ること。"], [6, "内なる獣の息遣い……あなたが今【渇き】を得たノワールの対象へ、任意のノワール2点を獲得する。"], [7, "内なる獣の息遣い……あなたが今【渇き】を得たノワールの対象へ、任意のノワール1点を獲得する。"], [8, "荒ぶる心を鎮める……幸いにも何も起きなかった。"], [99, "あなたは荒れ狂う感情を抑え、己を律した! 【渇き】が1減少する!"]]; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (number_text = ($a[1] == null ? nil : $a[1])), $b; - index = $rb_minus(number, modify); - self.$debug("index", index); - text = self.$get_table_by_number(index, table); - return "" + "2D6[" + (number_text) + "]-" + (modify) + " > " + (name) + "(" + (index) + ") > " + (text); - }, $Dracurouge_getCorruptionDiceCommandResult$27.$$arity = 1); - - Opal.def(self, '$getTableDiceCommandResult', $Dracurouge_getTableDiceCommandResult$28 = function $$getTableDiceCommandResult(command) { - var $a, $b, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, text = nil, number = nil; - - - info = $$($nesting, 'TABLES')['$[]'](command); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type"); - table = info['$[]']("table"); - $b = (function() {$case = type; - if ("2D6"['$===']($case)) {return self.$get_table_by_2d6(table)} - else if ("1D6"['$===']($case)) {return self.$get_table_by_1d6(table)} - else if ("D66"['$===']($case)) {return self.$get_table_by_d66(table)} - else { return nil }})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(text['$nil?']())) { - return nil}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $Dracurouge_getTableDiceCommandResult$28.$$arity = 1); - - Opal.def(self, '$getSourceSceneDiceCommandResult', $Dracurouge_getSourceSceneDiceCommandResult$29 = function $$getSourceSceneDiceCommandResult(command) { - var self = this, name = nil, table = nil; - - - if ($truthy(/^ST$/['$==='](command))) { - } else { - return nil - }; - name = "原風景表"; - table = self.$getSourceSceneTable(); - return self.$getTitleD66TableResult(name, table); - }, $Dracurouge_getSourceSceneDiceCommandResult$29.$$arity = 1); - - Opal.def(self, '$getPassionDiceCommandResult', $Dracurouge_getPassionDiceCommandResult$30 = function $$getPassionDiceCommandResult(command) { - var self = this, name = nil, table = nil; - - - if ($truthy(/^PN$/['$==='](command))) { - } else { - return nil - }; - name = "受難表"; - table = self.$getPassionTable(); - return self.$getTitleD66TableResult(name, table); - }, $Dracurouge_getPassionDiceCommandResult$30.$$arity = 1); - - Opal.def(self, '$getTitleD66TableResult', $Dracurouge_getTitleD66TableResult$31 = function $$getTitleD66TableResult(name, table) { - var $a, $b, self = this, item = nil, index = nil, title = nil, text = nil; - - - self.$debug("getTitleD66TableResult"); - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (item = ($a[0] == null ? nil : $a[0])), (index = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(item['$nil?']())) { - return nil}; - $b = item, $a = Opal.to_ary($b), (title = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), $b; - return "" + (name) + "(" + (index) + ") > " + (title) + ":" + (text); - }, $Dracurouge_getTitleD66TableResult$31.$$arity = 2); - - Opal.def(self, '$getConfermentDiceCommandResult', $Dracurouge_getConfermentDiceCommandResult$32 = function $$getConfermentDiceCommandResult(command) { - var self = this, name = nil, table = nil, yearTitle = nil; - - - if ($truthy(/^CO$/['$==='](command))) { - } else { - return nil - }; - name = "叙勲表"; - table = self.$getConfermentTable(); - yearTitle = "叙勲年齢"; - return self.$getYearTableResult(name, table, yearTitle); - }, $Dracurouge_getConfermentDiceCommandResult$32.$$arity = 1); - - Opal.def(self, '$getConfermentAfterDiceCommandResult', $Dracurouge_getConfermentAfterDiceCommandResult$33 = function $$getConfermentAfterDiceCommandResult(command) { - var self = this, name = nil, table = nil, yearTitle = nil; - - - if ($truthy(/^CA$/['$==='](command))) { - } else { - return nil - }; - name = "叙勲後表"; - table = self.$getConfermentAfterTable(); - yearTitle = "騎士歴"; - return self.$getYearTableResult(name, table, yearTitle); - }, $Dracurouge_getConfermentAfterDiceCommandResult$33.$$arity = 1); - - Opal.def(self, '$getElderPastDiceCommandResult', $Dracurouge_getElderPastDiceCommandResult$34 = function $$getElderPastDiceCommandResult(command) { - var self = this, name = nil, table = nil, yearTitle = nil; - - - if ($truthy(/^EP$/['$==='](command))) { - } else { - return nil - }; - name = "遥か過去表"; - table = self.$getElderPastTable(); - yearTitle = "騎士歴"; - return self.$getYearTableResult(name, table, yearTitle); - }, $Dracurouge_getElderPastDiceCommandResult$34.$$arity = 1); - - Opal.def(self, '$getOriginalSinDiceCommandResult', $Dracurouge_getOriginalSinDiceCommandResult$35 = function $$getOriginalSinDiceCommandResult(command) { - var self = this, name = nil, table = nil, yearTitle = nil; - - - if ($truthy(/^OS$/['$==='](command))) { - } else { - return nil - }; - name = "原罪表"; - table = self.$getOriginalSinTable(); - yearTitle = "外見年齢"; - return self.$getYearTableResult(name, table, yearTitle); - }, $Dracurouge_getOriginalSinDiceCommandResult$35.$$arity = 1); - - Opal.def(self, '$getRecentStateDiceCommandResult', $Dracurouge_getRecentStateDiceCommandResult$36 = function $$getRecentStateDiceCommandResult(command) { - var self = this, name = nil, table = nil, yearTitle = nil; - - - if ($truthy(/^RS$/['$==='](command))) { - } else { - return nil - }; - name = "近況表"; - table = self.$getRecentStateTable(); - yearTitle = "活動年数"; - return self.$getYearTableResult(name, table, yearTitle); - }, $Dracurouge_getRecentStateDiceCommandResult$36.$$arity = 1); - - Opal.def(self, '$getPeacefulPastDiceCommandResult', $Dracurouge_getPeacefulPastDiceCommandResult$37 = function $$getPeacefulPastDiceCommandResult(command) { - var self = this, name = nil, table = nil, yearTitle = nil; - - - if ($truthy(/^PP$/['$==='](command))) { - } else { - return nil - }; - name = "平和な過去表"; - table = self.$getPeacefulPastTable(); - yearTitle = "外見年齢"; - return self.$getYearTableResult(name, table, yearTitle); - }, $Dracurouge_getPeacefulPastDiceCommandResult$37.$$arity = 1); - - Opal.def(self, '$getYearTableResult', $Dracurouge_getYearTableResult$38 = function $$getYearTableResult(name, table, yearTitle) { - var $a, $b, self = this, item = nil, index = nil, title = nil, text = nil, yearText = nil, year = nil, calculateText = nil; - - - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (item = ($a[0] == null ? nil : $a[0])), (index = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(item['$nil?']())) { - return nil}; - $b = item, $a = Opal.to_ary($b), (title = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (yearText = ($a[2] == null ? nil : $a[2])), $b; - $b = self.$getYear(yearText), $a = Opal.to_ary($b), (year = ($a[0] == null ? nil : $a[0])), (calculateText = ($a[1] == null ? nil : $a[1])), $b; - return "" + (name) + "(" + (index) + ") > " + (title) + ":" + (text) + " > " + (yearTitle) + ":" + (yearText) + " > " + (calculateText) + " > " + (yearTitle) + ":" + (year) + "年"; - }, $Dracurouge_getYearTableResult$38.$$arity = 3); - - Opal.def(self, '$getYear', $Dracurouge_getYear$39 = function $$getYear(yearText) { - var $$40, self = this, text = nil, year = nil; - - - text = $send(yearText, 'gsub', [/(\d+)D(6+)/], ($$40 = function(){var self = $$40.$$s || this; - - return self.$getD6xResult($$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2).$length())}, $$40.$$s = self, $$40.$$arity = 0, $$40)); - text = "" + "(" + (text) + ")"; - year = self.$parren_killer(text.$gsub(/×/, "*")); - return [year, text]; - }, $Dracurouge_getYear$39.$$arity = 1); - - Opal.def(self, '$getD6xResult', $Dracurouge_getD6xResult$41 = function $$getD6xResult(count, dice6Count) { - var $$42, self = this, total = nil; - - - total = 0; - $send(count, 'times', [], ($$42 = function(_i){var self = $$42.$$s || this, $$43, number = nil; - - - - if (_i == null) { - _i = nil; - }; - number = 0; - $send(dice6Count, 'times', [], ($$43 = function(_i){var self = $$43.$$s || this, $a, $b, dice = nil; - - - - if (_i == null) { - _i = nil; - }; - number = $rb_times(number, 10); - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - return (number = $rb_plus(number, dice));}, $$43.$$s = self, $$43.$$arity = 1, $$43)); - return (total = $rb_plus(total, number));}, $$42.$$s = self, $$42.$$arity = 1, $$42)); - return total.$to_s(); - }, $Dracurouge_getD6xResult$41.$$arity = 2); - - Opal.def(self, '$getSourceSceneTable', $Dracurouge_getSourceSceneTable$44 = function $$getSourceSceneTable() { - var self = this, table = nil; - - - table = [["虐待", "あの地獄のような日々で、貴卿がされてきたことを思えば……騎士となっても、人を見る目は暗い。"], ["野良犬の如く", "孤児だった貴卿はひたすら盗み殺し騙して。手段を問わず生き抜いた。騎士の前には罪人として突き出された。"], ["悪行", "貴卿は叙勲以前、悪しき不徳の行いに手を染めていた。幸いにも主には気づかれず、騎士となったが……行いは正されているだろうか?"], ["忌まわしの火", "故郷は太陽の欠片に襲われた。家族は命を落とし、騎士が貴卿を救った。あの呪わしい炎を貴卿は忘れない。"], ["太陽の夢", "今はなき太陽の照らす……美しく生命に満ちた世界を、幼い頃から夢で見る。奇妙な疑念が内から消えない。"], ["黒い衝動", "暴力性や残虐性が、貴卿の中に眠っている。それは時折突発的に現れて……大事なものを破壊するのだ。"], ["氷の心", "過酷な日々を暮らす中、貴卿の心は凍てついた。能力を買われ騎士となるが……心の氷はまだ溶けない。"], ["腰抜け", "かつての貴卿は、立ち向かうべきものから逃げ出した。それは騎士となってなお残る、心の疵だ。"], ["孤独", "貴卿はずっと孤独だった。手を差し伸べてくれたのは主のみ。主なき日々など考えられない。"], ["野心", "貴卿はより高い地位が欲しい。民では足りない。騎士になりたい。もっともっと多くを支配したいのだ。"], ["惚れっぽい", "簡単に恋をしてしまう。わずかな縁でも恋人のつもりになって、心から尽くしてしまうのだ。"], ["間近の堕落", "故郷の領主が堕落し、暴虐を為した。貴卿は、騎士というものについて他ほど無邪気には信じられまい。"], ["妄想", "夢見がちな貴卿は、自らが騎士となる夢想を何度もしてきた。今も、ともすれば夢を見ているのだろうか。"], ["空白", "かつての時間の中には思い出せない時期がある。その間に何があったのか、貴卿には何もわからない。"], ["敬虔なる心", "貴卿は人の頃より紅き月とドラクルを深く信仰してきた。たゆまぬ信仰こそ、己を騎士に導いたと信じている。"], ["妖精の導き", "入ってはならぬ森で妖精と親しくなった。そして戯れる中、気づけば貴卿は騎士の城にいた。"], ["従者の一族", "生まれつき従者として生きる一族もいる。貴卿はその中に生まれ、才見出されて騎士となったのだ。"], ["市井の心", "ごく凡俗な民の家にて長く育った貴卿は世俗的ながらも、民の視野を持つ騎士となるであろう。"], ["流浪", "貴卿は人の頃から流浪の身。視野を広げるつもりの旅であったが、従者としてこの地に居つくこととなった。"], ["人の血縁", "血縁者が騎士となった。そしたまた貴卿も……。貴卿には、人としての血縁者が、同胞にいるのだ。"], ["妖精の友", "妖精を引き寄せる、奇妙な魅力を持って生まれた。幼き頃より、貴卿は妖精や獣の友である。"], ["無垢なる魂", "浮世の邪念から余りに遠く生きて来たがゆえに、貴卿の魂はあまりに気高く美しい。そして脆い。"], ["戦場の獣", "主と共に、貴卿は数多の戦場を渡った。戦いは貴卿の呼吸であり歩み。何処にあろうとも戦いの嵐は逃さぬ。"], ["古き格式", "貴卿は非常に格式を重んじる地に生まれ育った。たとえ形骸化しようと、古き格式を忘れて何が騎士か。"], ["カリスマ", "人に頼られ注目を浴びやすい。貴卿は生まれつき、人々のまとめ役だ。騎士には必要な才と言えるだろう。"], ["鍛錬の日々", "騎士となる日を目指し、幼き頃から武の鍛錬欠かさず。いまや貴卿はこれほどの武勇を得たのだ。"], ["恩返し", "かつて、貴卿はある騎士に助けられた。そして彼の方を助けるべく従者となり……ついに騎士となったのだ。"], ["騎士の養子", "幼くして見いだされ、物ごころついた頃には、騎士手づからの教育と鍛錬を受けて来た。人の親は知らない。"], ["英雄志願", "守られる民としての生活に耐えられなかった。貴卿は英雄への道を求め家を飛び出し、従者となったのだ。"], ["燃える恋", "一目見て、ある騎士に恋をした。人の身では叶わぬ恋。しかし貴卿はついに叙勲を受け、騎士となる。"], ["救世の想い", "人々は様々な恐怖に怯え、困窮している。己の努力で何とかできれば……と、貴卿は騎士への道を選んだ。"], ["美貌", "貴卿の美貌が評判になる頃、その美を耳にした騎士が訪れ、貴卿を城に導いた。"], ["憧れの騎士", "貴卿には憧れる騎士がいる。いつかきっとその人と同じ高みに立つのだと、心に決めた人物がいるのだ。"], ["ドラクルの夢", "ある日の夢の中、貴卿のもとにドラクルが降りた。そして人生の全てを変える神託を賜ったのだ。"], ["神童", "時として、貴卿のように有り余る才を持って生まれる者がいる。そして定められたように騎士への道を歩むのだ。"], ["運命の子", "貴卿の生まれた折、旅の賢者が訪れた。貴卿はきっと伝説に残る騎士となるだろう。そう約束されているのだ。"]]; - return table; - }, $Dracurouge_getSourceSceneTable$44.$$arity = 0); - - Opal.def(self, '$getConfermentTable', $Dracurouge_getConfermentTable$45 = function $$getConfermentTable() { - var self = this, table = nil; - - - table = [["堕落の血", "貴卿は堕落者に襲われ、その結果……騎士となった。貴卿に流れるは堕落した血なのだ。", "7+1D6×1D6"], ["忌まわしの血", "乱心した主は堕落の間際、公爵の許しも得ず貴卿を叙勲した。残された貴卿には……疑いの目が向けられた。", "7+1D6×1D6"], ["悪しき取引", "貴卿は主と悪しき取引の後、叙勲を受けた。主は不徳の身、今や貴卿の立場は主の奴隷も同然である。", "7+1D6×1D6"], ["裏切の予言", "叙勲の折、賢者は貴卿に予言をした……いずれ信じた者に裏切られる日が来るであろうと。", "7+1D6×1D6"], ["謀略", "貴卿は騎士にあるまじき行いによって他を蹴落とし、叙勲を得た。その秘密を知る者はいない。今のところは。", "7+1D6×1D6"], ["不吉な予言", "叙勲の折、賢者は貴卿に予言をした……大切な人を自らの手で殺めるだろうと。", "7+1D6×1D6"], ["堕落の誘い", "その叙勲の折、貴卿の脳裏に堕落した己が現れた。そして、堕落すべしと囁きかけて来た。今も、時折。", "7+1D6×1D6"], ["不相応", "他の従者はみんな優れた才能を持っていた。貴卿には何もない……なのに主は、なぜか貴卿を選んだ。", "10+2D6"], ["矮小なる主", "叙勲と共にものの見方は変わる。叙勲後、主がくだらない存在と見えた。貴卿は主のもとを離れた。", "7+1D6×1D6"], ["家庭あれど", "貴卿は人として家庭を築いていた。しかし、主より叙勲を受けられるならばと……貴卿は家庭を捨てたのだ。", "14+1D6×1D6"], ["かき口説き", "貴卿は主を甘き言葉で口説き、心蕩かして叙勲を与えさせた。精神面において主はむしろ……貴卿なのだ。", "7+1D6×1D6"], ["不安", "騎士とは何か。叙勲とは何か。騎士そのものとなった今も、貴卿は言い知れぬ不安を感じている……。", "10+1D6×1D6"], ["忘却", "誰が貴卿を騎士にしたのか。正直わからない……気が付いたら騎士になっていたのだ。", "7+1D6×1D6"], ["ある夜の寝室", "それは衝動的な行いだったのだろう。主はある夜、突如訪れ……あなたに口づけをし、叙勲を施したのだ。", "10+2D6"], ["生存者", "堕落者、あるいは太陽の欠片の襲撃を受け、主の従者は全滅。貴卿のみが生き延び……叙勲を受けた。", "7+1D6×1D6"], ["献身の誓い", "叙勲の折、貴卿は民を守り続けると誓った。貴卿は民の盾にして、数多の敵を退ける矛である。", "14+1D6×1D6"], ["罪許されて", "貴卿は罪を犯した。罪人として処罰を受ける中、主は貴卿を認め叙勲すら与えてくれた。報わねばなるまい。", "10+2D6"], ["守秘の誓い", "叙勲の折、貴卿は主から秘密を知らされた。そしてそれを決して他に漏らさぬ誓いを立てたのだ。", "7+1D6×1D6"], ["勝者は一人", "その日、主の従者数多において武術の試合が行われた。貴卿は最後に勝ち残り、ついに叙勲を得たのだ。", "14+1D6×1D6"], ["磨かれし技", "今まで一つの技を磨き、極め続けた。その愚直に磨かれた技が評価され、貴卿は叙勲を受けたのだ。", "18+1D6×1D6"], ["武勲の予言", "叙勲の折、賢者は貴卿に予言をした……いずれ大乱が起こる中にて目覚ましき武勲を上げんと。", "10+2D6"], ["癒えぬ傷痕", "貴卿の体には消えぬ傷痕が刻まれている。しかし、傷を受けてまで主を守った功こそ、貴卿を騎士にした。", "7+1D6×1D6"], ["隆盛の予言", "叙勲の折、賢者は貴卿に予言をした……その名は財と誉れに包まれ安らかにあらんと。", "7+1D6×1D6"], ["胆力", "貴卿は主と共に堕落者に襲われ……一歩も退かずあれば、その胆力を認められ叙勲を受けた。", "7+1D6×1D6"], ["友情の予言", "叙勲の折、賢者は貴卿に予言をした……いずれ素晴らしき友を得んと。", "7+1D6×1D6"], ["惜しまれり", "長く従者として生きる中、貴卿は老いた。しかし、老いてなお、主は貴卿を必要とした。それゆえの叙勲である。", "30+1D6×1D6"], ["守護の誓い", "叙勲の折、ある人を、町を、国を守ると誓った。それを背に敵に立ち向かう限り、あなたは逃げ出したりしない。", "14+1D6×1D6"], ["返しきれぬ恩", "あの日、貴卿は死んだ……。しかし貴卿は、主の叙勲により蘇った。主は罰を受けたが、それでも笑っていた。", "7+1D6×1D6"], ["信仰の誓い", "叙勲の折、貴卿はドラクルへの篤き信仰を誓った。紅き月の下、貴卿の勝利はドラクルに捧げられよう。", "14+1D6×1D6"], ["終わらじの恋", "騎士と互いに恋に落ちた。甘く狂おしい時間、移ろいゆく時。貴卿は恋人の手で叙勲を受け、騎士となった。", "10+2D6"], ["英雄の予言", "叙勲の折、賢者は貴卿に予言をした……恐るべき敵を打ち倒し、その名は諸国に響くであろうと。", "14+1D6×1D6"], ["忠義の誓い", "叙勲の折、ある人に深き忠誠を誓った。たとえ世界を敵に回そうと、貴卿が裏切ることなどありはしない。", "14+1D6×1D6"], ["生ける芸術", "叙勲により、貴卿の美貌はさらなる高みに上った。もはや貴卿を見て心奪われぬ者などいない。", "7+4D6"], ["思わぬ武勲", "貴卿は従者の身ながら、思わぬ武勲を立てた。その功は叙勲を受けるに十分のものである。", "14+1D6×1D6"], ["当主の寵愛", "貴卿は、公爵家当主その人の寵愛を得た。宮廷において、重き地位を得られるであろう。", "7+1D6×1D6"], ["始祖の寵愛", "貴卿は、始祖その人の寵愛を得た。真祖ドラクルに最も近しい、誇るべき身の一人となったのだ。", "7+1D6×1D6"]]; - return table; - }, $Dracurouge_getConfermentTable$45.$$arity = 0); - - Opal.def(self, '$getConfermentAfterTable', $Dracurouge_getConfermentAfterTable$46 = function $$getConfermentAfterTable() { - var self = this, table = nil; - - - table = [["滅亡", "貴卿の領地は敵に滅ぼされた。守るべき民は絶え、名誉は失われた。彼の者らを許すわけにはいかない。", "2D6×10"], ["冤罪", "貴卿は身に覚えのない罪を背負っている。何者かの陰謀が貴卿を絡めとり、罪を負わせたのだ。", "1D6×1D6"], ["呪い", "かつて貴卿は、妖精から呪いを受けた。呪いはゆっくりと貴卿を蝕み、その身に災いを招いている。", "1D6×1D6"], ["血の昂ぶり", "戦った後は体が火照り昂ぶり、どうしようもなく疼く。堕落の日は遠くない……貴卿の中には確信がある。", "2D6×5"], ["報復の序章", "かつて貴卿の名誉は友に裏切られ、奪われた。今や新たな道を歩んでいるが、復讐は今も忘れていない。", "2D6×10"], ["仇敵", "忘れてはならぬ敵がいる。やつの胸を貫き、首を落とすまで、貴卿に安息の日は来ない。来ないのだ。", "1D6×1D6"], ["堕落の共鳴", "貴卿の魂は堕ちかけているのだろうか。堕落した者たちがどうしようもなく近しく思えてしまうのだ。", "2D6×10"], ["不徳の日々", "かつての貴卿は品行方正とは言い難い人物だった。心入れかえた貴卿だが、まだまだ世間の目は厳しい。", "1D6×5"], ["主の堕落", "貴卿を叙勲した主が堕落した。主を誇って来た貴卿は、心ない他の騎士から、侮蔑や疑惑を受けがちだ。", "2D6×10"], ["冥王の虜囚", "冥王の侵攻の中。貴卿は敗れ、一時なれど虜囚の辱めを受けた。奴らを許すわけにはいかない。", "2D6×3"], ["近しき堕落", "貴卿の友や恋人が堕落した。それは決して拭えず、忘れられない。常に心に幽鬼の如く頭をもたげるのだ。", "1D6×1D6"], ["修羅", "貴卿は戦い続けて来た。功を他に譲ってでも戦い、戦い、戦い続けて。戦うだけの存在となりつつある。", "1D6×1D6"], ["空白", "騎士となってから、思い出せない時期がある。その間に何があったのか、貴卿には何もわからない。", "2D6×10"], ["追跡", "堕落した友を捜している。彼の者が大切だからこそ、貴卿がケリをつけねばならないのだ。", "2D6×10"], ["退屈", "変わらぬ日常。甲斐なき日々。仲間の武勲を聞き、貴卿は自らも勲を立てんと立ち上がった。", "2D6×20"], ["失恋", "愛深きゆえに貴卿は愛を捨てた。……捨てきってはいないかもしれないが、捨てたと信じた。", "2D6×10"], ["隠遁", "戦いに虚しさを感じたのはいつからか。勇猛な騎士だったあなただが、今は静かに隠者として暮らしている。", "2D6×20"], ["謎の失踪", "貴卿の大切な人が突然、姿を消してしまった。攫われたのか、逃げたのか、それともまさか……。", "1D6×1D6"], ["井の中の蛙", "己こそ最高の騎士と思っていた貴卿だが……彼の騎士を見て全ては崩れた。まだまだ修練が足りぬ。", "1D6×3"], ["賢者の予言", "貴卿は予言に導かれている。貴卿は誰かと出会わねばならぬ。それは主君か友か恋人……あるいは敵か。", "1D6×1D6"], ["浮名", "多くの恋を振りまく貴卿の名は宮廷では有名だ。敵も味方も、きっと抱えきれぬほどにいることだろう。", "1D6×5"], ["見届け人", "民の移り変わる様をじっと眺めている。貴卿は目まぐるしく変わる彼らを眺めるのが好きなのだ。", "2D6×10"], ["人捜し", "貴卿はその心を動かした人を捜している。人間だ。人は脆く移ろいやすい……早く見つけねば。", "1D6×1D6"], ["深い寵愛", "貴卿は主より深い愛情を注がれ続けた。そのため叙勲は随分以前だが、騎士の活動は始めたばかりだ。", "2D6×10"], ["血気盛ん", "貴卿は多くの騎士と立ち合い、自らの技と力を磨きたい。腕のある騎士を見れば、挑まずにいられぬ。", "2D6"], ["啓蒙", "至高なる騎士と違い、世界は愚かで哀れな民で溢れている。騎士として彼らを導いてやらねばなるまい……。", "1D6×1D6"], ["叙勲すべし", "必要な人がいる。彼の人を叙勲せねばならぬ。貴卿はそのため、功に焦り始めている。", "2D6"], ["憂国の士", "貴卿は己が国の現状を憂う。宮廷の問題を正さねばならぬと、心に深く誓っている。", "1D6×1D6"], ["叙勲与えり", "功少なくともそれなりの古株として、貴卿は己の従者を叙勲し、騎士に取り立てた経験がある。", "2D6×20"], ["堕落の虜囚", "貴卿は一時、堕落者の虜囚となり、慰み者として日々を過ごしたことがある。屈辱であり汚名だ……。", "2D6×10"], ["名勝負", "貴卿は己の意志を貫くため決闘し、勝利した。その決闘は、近隣でも噂の名勝負とされている。", "1D6×1D6"], ["長き眠り", "貴卿はかつて太陽の欠片と戦い、体の多くを喪失して眠りについた……随分と長く寝ていたようだ。", "2D6×50"], ["世界は広く", "騎士となって世界の広さを知った。可能な限り世界を知りたい……貴卿は広き世界を見聞せんとしている。", "2D6×10"], ["王器", "叙勲以来、人をひれ伏させる圧倒的な魅力を得た。それはまさしく、支配者となるべく与えられた資質だ。", "1D6×1D6"], ["高名", "数多の決闘や馬上試合で実力を示してきた。あなたは実力ある騎士として名を馳せている。", "2D6×5"], ["伝説", "貴卿は未だ偉業わずかなれど、その逸話は伝説の域。すでに吟遊詩人らの歌にさえ歌われている。", "1D6×1D6"]]; - return table; - }, $Dracurouge_getConfermentAfterTable$46.$$arity = 0); - - Opal.def(self, '$getElderPastTable', $Dracurouge_getElderPastTable$47 = function $$getElderPastTable() { - var self = this, table = nil; - - - table = [["古き罪人", "地獄が生まれるより前。誰もが忘れた牢に閉じ込められていた罪人……それが貴卿だ。幾百年を経て、ついに牢は破られた。", "1D66+1300"], ["地獄漏れ", "貴卿は不徳と堕落を重ね、地獄へと幽閉された……はずだ。しかし、気づけば外におり、数百年が過ぎていた……。", "1D666"], ["禁忌の探求", "とうに死した一人の民……あるいは騎士を、貴卿は蘇らさんとしている。外法の類だ。わかっていても……諦められぬのだ。", "1D666"], ["堕落せし身", "一度は堕落し、恥と穢れにまみれた。心ある友らが救い出してくれたが、汚名は今も付きまとう。堕落の兆しが全て消えようとも。", "1D666"], ["臆病の失態", "太陽竜の現れた時、貴卿は恐怖から討伐の招集より逃げ出した。この恥は、長き時を経た今も貴卿の心を苛んでいる。", "1D66+1250"], ["無限の復讐", "貴卿はこの世の理不尽に泣かされた。ゆえに終わらぬ復讐を始めたのだ。この世界全てを、変えてしまうために……。", "1D666"], ["悪しき発端", "かつて貴卿は、よからぬ考えに取りつかれていた。かつての活動は、今も悪しき後継者を生んでいる。止めねばなるまい。", "3D6×100"], ["妖精の輪", "妖精に誘われ、一夜の宴を楽しんだ。そして今……かつてより、幾百年が過ぎている。貴卿を知る騎士は、まずいない。", "2D6×100"], ["破滅の疫病", "あの頃、疫病はノスフェラス以外も侵した。貴卿の故郷もまた……民を見殺しにした貴卿に、彼の冥王を責められようか。", "1D66+1210"], ["主の堕落", "貴卿を叙勲した主が堕落した。主を誇って来た貴卿は、己の中から何か大切なものが……すっぽりと抜けたように思えた。", "1D666"], ["異端の友", "かつて、異端と騎士の距離は近かった。貴卿には異端の友がおり、距離を取りつつもお互いに助け合って来たのだが……。", "2D6×100"], ["時を超えて", "何があったのかわからない。しかし、気づけば遥か未来の大地に立っていた。幾百年もの空白が、今も貴卿を苛んでいる。", "3D6×100"], ["太陽竜襲撃", "彼の太陽竜による襲撃を、貴卿はまともに受けた。守るべき領地は失われ、討つべき太陽竜も、己の手では討てなかったのだ。", "1D66+1300"], ["数多の堕落", "知る者の多くが堕落していった。かつての友で今も残るはわずか。決して堕落すまいと、固い決意をしているが……。", "2D6×100"], ["最後の命令", "太陽竜討伐の折、ある将軍が貴卿を庇い、帰らぬ人となった。最後の命令は「生きろ」――以来、貴卿は命令を守り続けている。", "1D6+1250"], ["今は後日談", "貴卿は復讐を成し遂げた。そして、為すべきことを失った。かろうじて堕落は避けているが、新たな生きる甲斐を見つけねば。", "1D666"], ["守るべき地", "ある領主が、堕落した。惨劇の後、もはやそこには誰も住まない。だが、貴卿が彼の人と過ごした思い出はある。守らねば。", "1D666"], ["開拓者", "民の心を知りたくて。貴卿は一人荒野を拓き耕した。やがて村ができ、貴卿は領主となった。彼の地は貴卿の第二の故郷だ。", "1D666"], ["己だけが", "太陽竜討伐の折、目の前でゲイズヴァルト家が滅んだ。貴卿にわずかでも勇気があれば、彼の家は残っていたのでは……。", "1D66+1250"], ["信仰の日々", "僧正として拝殿にこもり、大いなるドラクルへの感謝を捧げてきた。今も、紅き月を見上げる時、貴卿の内には感謝が満ちる。", "2D6×100"], ["寵童の日々", "叙勲の主によって、屋敷の中で大事に大事に扱われてきた。騎士として不本意でもあったが、人として彼の方を愛している。", "1D666"], ["傍観の日々", "民の移り変わる様をじっと眺めている。貴卿は目まぐるしく彼らを、隠者として眺めているのが好きだった。", "3D6×100"], ["遍歴の日々", "遍歴の騎士として諸領を巡り、数多の騎士、数多の冒険、数多の恋の中で過ごしてきた。今も色あせぬ美しき思い出だ。", "2D6×100"], ["忠義の日々", "仕えるべき御方を見つけ、貴卿は全てを捧げて彼の人を守ってきた。その忠誠は未だ損なわれてはいない……。", "2D6×100"], ["民の血統", "叙勲され、騎士になったが……民の頃を捨てられなかった。貴卿はずっと、ずっと、己の血縁や友の子孫を見守っている。", "1D6×150"], ["長い眠り", "生き疲れてか、傷を負ってか。貴卿は長い長い眠りについた。そうして近年ようやく目を覚ましたばかりである。", "2D6×100"], ["冥王と後悔", "かつてノスフェラスにて地位を得ていた。しかしあの災禍の中で貴卿は逃げたのだ。冥王と化す彼女を見捨てて……。", "1D66+1250"], ["勃興の協力者", "貴卿はローゼンブルク勃興のため、グランツ公へと協力してきた。彼の裏も表もよく知っているし、彼の地で勢力も築いている。", "1D66+400"], ["ノスフェラス", "貴卿はノスフェラス末期、疫病の中で叙勲を受けて救われたる騎士。冥王とその一党の風評を何より苦々しく見てきた者だ。", "1212"], ["財産", "長い年月の中、貴卿は多くの品や建物を具現化し、永続化した。貴卿の周囲は己の生み出したもので溢れている。", "2D6×100"], ["妖精の国", "騎士を引退し、歴代アヴァローム公の如く、妖精らの国で楽しく暮らしていた。今宵、騎士として世に出たは、気まぐれに過ぎぬ。", "2D6×100"], ["数多の叙勲", "数多の戦いを経て来た貴卿は、数え切れぬ武勲を立てて来た。一つ一つを数えるのも、もはや馬鹿らしいほどだ。", "1D66×10"], ["血統の重鎮", "血統とは、騎士の最も大きな枠組みであり派閥だ。そして貴卿は、血統内において大きな発言力を持つ重鎮なのだ。", "3D6×100"], ["始祖の懇意", "始祖とて心寂しい時はある。貴卿はある始祖と懇意にしていた。彼女にとって、あなたは数少ない心許せる存在なのだ。", "3D6×100"], ["太陽竜討伐", "彼の恐るべき太陽竜討伐に参加し、華々しき活躍を飾った。その一方で貴卿は、多くの犠牲者らも目にしている。", "1D66+1300"], ["最初の騎士", "貴卿こそは、真祖百年の喪が明けし時、始祖その人より最初期に叙勲されたる騎士。常夜全ての歴史の生き証人だ。", "1D66+1833"]]; - return table; - }, $Dracurouge_getElderPastTable$47.$$arity = 0); - - Opal.def(self, '$getOriginalSinTable', $Dracurouge_getOriginalSinTable$48 = function $$getOriginalSinTable() { - var self = this, table = nil; - - - table = [["虐待", "あの地獄のような日々で、御身がされてきたことを思えば……誰も彼も、常夜国すべて等しく呪うしかない。", "7+1D6×1D6"], ["野良犬の如く", "孤児だった御身は盗み殺し騙して。手段を問わず生き抜いた。罪人として捕まらず、逃げ延びたは天運か。", "7+1D6×1D6"], ["弱肉強食", "暴力で欲しいものを奪ってきた御身は、略奪者にして狩人。どれだけ取り繕っても、世を支配するのは獣の法。", "7+1D6×1D6"], ["黒い衝動", "暴力性や残虐性が、御身の中に眠っている。それは時折突発的に表れて……大事なものを破壊するのだ。", "7+1D6×1D6"], ["氷の心", "過酷な日々を暮らす中、御身の心は凍てついた。異端として力を得た今も……心の氷はまだ溶けない。", "7+1D6×1D6"], ["生存者", "堕落者、あるいは太陽の欠片の襲撃を受け、故郷は全滅。御身のみが生き延びた。背負う魂は数多い。", "7+1D6×1D6"], ["血の渇き", "民の体を流れる血に、異様な執着を覚えてしまう。どうしても満たされぬ時は、己の血を舐めるほどに。", "7+1D6×1D6"], ["嘲笑の的", "いつも、周りで誰かが嘲笑う。誰も彼も御身を嘲笑う。何が間違っているというのか、何がおかしいというのか。", "7+1D6×1D6"], ["死者を前", "に大切な人が死んだ。朽ちゆく死体を見て、死のおぞましさを知った。何があろうと絶対に、死んでなるものか。", "7+1D6×1D6"], ["騎士への嫉妬", "御身は騎士という存在に嫉妬していた。美しく強く老いぬ者ら……なぜ奴らは華々しく、己は惨めなのか。", "13+1D6×1D6"], ["背負う罪", "かつて、ふとした悪戯心が、人を死なせてしまった。どれほど時を経ても、最初に刻まれた罪は消えない。", "7+1D6×1D6"], ["騎士の堕落", "よく知る騎士が堕落し、暴虐を為した。御身は、騎士というものが異端と何も変わらぬと知っている。", "13+1D6×1D6"], ["太陽の幻視", "昔から時折、太陽に照らされた大地の夢を見る。それは決して、悪い世界ではなかったと思えるのだが……。", "7+1D6×1D6"], ["退廃", "酒色に御身は、どうしようもない屑と化していた。思い出したくもない、怠惰と強欲に溺れた日々。", "13+1D6×1D6"], ["虚栄", "誰かに認めて欲しくて、己を嘘で塗り固めて。努力以上に、嘘を重ねて生きて来た。", "13+1D6×1D6"], ["黒い歴史", "かつての己は弱く、愚かで。思い返せば、頭を掻きむしりながら消え去りたいという想いばかりが。", "13+1D6×1D6"], ["刻まれた恐怖", "恐ろしい存在に出会った。堕落者か、妖精か、太陽か。御身の中には、それに対する恐怖が刻まれたままだ。", "7+1D6×1D6"], ["血気盛ん", "性急に過ぎると、古くから言われていた。しかし年を経ても、気質は治らぬ。御身の心は今も、若く、未熟だ。", "7+1D6×1D6"], ["孤独への恐怖", "一人きりは怖い。寂しさは恐怖だ。媚びてでも、使われてでも、傍にいてくれないと、気が狂いそうになる。", "10+1D6×1D6"], ["野育ち", "森や荒野で一人生きて来た。獣も人も何も変わりはしない。ただ一匹の獣として生きて来たのだ。", "7+1D6×1D6"], ["唸る獣", "人に、威圧的に接してしまう。友好的に接したくても、それができない。御身の笑顔は牙を剥く獣の如し。", "15+1D6×1D6"], ["移り気", "どうにも目先のものに気をとられがちだ。落ち着いてものごとを考えられない。年経ても変わらぬ性分だ。", "6+2D6"], ["空白", "遠い昔、異端の力を得る前の己について、覚えていない。思い出そうとすると、脳中に霧がかかるのだ。", "7+1D6×1D6"], ["蘇生の願い", "大切な人が死んだ。けれど諦められない。諦めない。何か、解決策が、蘇らせる方法が、きっと。", "7+1D6×1D6"], ["本の虫", "静かに本を読むのが好きだ。本の中の世界、己の世界に没頭したい。外で駆けまわるのは苦手なのだ。", "13+1D6×1D6"], ["老醜", "老いて朽ちゆく恐怖。死への忌避感。必死でもがいて足掻いて、御身はそれから逃れようとした。", "35+1D6×1D6"], ["好奇心", "気を引くものがあれば、目を向ける。秘密とあれば暴かずにいられない。知らぬままでは、済ませられぬのだ。", "9+2D6"], ["惚れっぽい", "簡単に恋をしてしまう。わずかな縁でも恋人のつもりになって、心まで尽くしてしまうのだ。", "13+1D6×1D6"], ["叶わぬ初恋", "ある民に恋をした。恋は叶わず、彼の人は御身の前から姿を消した。けれど、あの笑顔は、今も御身を力づける。", "9+2D6"], ["無垢なる魂", "浮世の邪念から余りに遠く生きて来たがゆえに、御身の魂はどこまでも穢れなく美しい。そして脆い。", "6+2D6"], ["平穏", "御身は家族に囲まれ、愛情に満ちた生活を送っていた。平凡な生活、平凡な日々。とても、とても幸せだった。", "7+1D6×1D6"], ["甘い夢", "世界を何も知らなかった甘い夢の日々。その夢から覚めたのは幸福か、不幸か。あるいは今も、夢の中か。", "7+2D6"], ["美貌", "誰もが羨み、振り返る美貌。その美貌は周囲に響き、また騎士すらも御身を賛美した。", "7+1D6×1D5"], ["妖精の友", "妖精を引き寄せる、奇妙な魅力を持って生まれた。幼き頃より、御身は妖精や獣の友である。", "7+1D6×1D6"], ["騎士の奉仕者", "御身は麗しき騎士に仕えていた。信頼と憧れを育み、その立場に誇りを持っていたのだが……。", "13+1D6×1D6"], ["神童", "御身は有り余る才を持って生まれた。騎士になるかと思われていたのだが……。", "7+1D6×1D6"]]; - return table; - }, $Dracurouge_getOriginalSinTable$48.$$arity = 0); - - Opal.def(self, '$getPassionTable', $Dracurouge_getPassionTable$49 = function $$getPassionTable() { - var self = this, table = nil; - - - table = [["地獄", "騎士らによって、御身は一度は地獄に封じられた。何とか脱出できたのは、幸運以外のなにものでもあるまい。"], ["暴発する殺意", "殺すつもりなどなかったのに。ふとした口論から、かっとなって……一人の民をその手で、殺めてしまった。"], ["復讐の道", "かつて御身は友に裏切られ、全てを奪われた。今や御身の命は、かつての友を葬るためにある。"], ["異端審問", "あの忌まわしき異端審問官らに捕まり、屈辱と苦痛を受けた。彼の者らの存在など決して認めぬ……。"], ["仇敵", "忘れてはならぬ敵がいる。やつの胸を貫き、首を落とすまで、御身に安息の日は来ない。来ないのだ。"], ["堕落の冤罪", "一人の騎士が堕落した。その罪を民や他の騎士らは、当人ではなく……異端である御身に押し付けたのだ。"], ["忌まわしの火", "故郷は太陽の欠片に襲われた。全てが焼かれ、御身も傷を負った。あの呪わしい炎、決して忘れはしない。"], ["惨劇に佇む", "気がつけば、無数の民の血肉舞う惨状の中に立っていた。これは己の所業なのか……? 答える者はいない。"], ["異相の拒絶", "かつての御身は己の異端の体を受け入れられなかった。何度も己の異相を切り落とし、堕落の淵に迷った。"], ["堕落の道標", "何気ない言葉が、友の心を傷つけた。彼の者は堕落した。御身の言葉が切っ掛けでないと、どうして言えようか。"], ["力に酔う", "異端の力を得て、有頂天となった。己こそ王と信じ、民に暴虐を為した。すぐに誤りを思い知りはしたが……。"], ["近しき堕落", "友や恋人が堕落した。それは忘れられぬ過去。ともすれば己もまた、と悪しき未来を思い描いてしまう。"], ["民への失望", "信頼を育んで来た民が、異端審問官らの言葉に流され、御身を罵り始めた。御身が何をしたというのか。"], ["民の罠", "快く迎えられ、宿に泊められ……眠りについた御身を襲ったのは異端審問官だった。もはや、民など信じぬ。"], ["異端卿の友", "御身のよく知る異端が、御身の友たる騎士を再叙勲し、異端卿に変えた。御身一人だけが……何も知らされず。"], ["堕落の様相", "御身は堕落者に襲われた。何とか生き残ったが、あの怪物の様相は……己もまた、ああなってしまうのか?"], ["それでも力が", "御身は騎士になれなかった。それでも力が欲しくて……異端にすがりつき、隷属と引き換えに力を得たのだ。"], ["石もて追われ", "人外の力を持つ御身に、民は石を投げつけ追い払わんとした。何もしてはいないのに……民は信じられぬ。"], ["呪い", "妖精から呪いを受けた。呪いはゆっくりと御身を蝕み、その身に災いを招く。すでに呪いは解けたろうか?"], ["望まぬ救い", "受難より御身を救った者は、さらなる災いであった。救い手は暴君となり、御身の全てを支配したのだ。"], ["汚い仕事", "騎士に雇われ、下劣な仕事をした。結果、汚名をかぶせられ、その地を逃げ出す羽目となったのだが。"], ["異端の住処", "行ってはならぬ場所に行き。逢ってはならぬ異端に逢って。御身はそのまま、故郷へ帰れぬ身となった。"], ["死別", "特別な存在だった民が……少し見ぬ間に死んでいた。同じ異端に変え、時を過ごすつもりだったのに。"], ["真の恋", "これまでの恋とはただの欲望であった。御身は真の恋を知ったのだ。全てが手遅れになった後に……。"], ["拒絶", "愛した民がいた。同じ異端に変えて、長い時の伴侶としたかったが……当人から拒絶された。"], ["最期の足掻き", "民として死にかけ。潔く散るはずが……最後の最後で執着に囚われた。代価を差し出し、異端と化したのだ。"], ["死の味", "きっと御身は一度は死んだのだ。命を失い、体が冷たい塊と化すあの時を……とてもよく、覚えているのだから。"], ["妖精の導き", "入ってはならぬ森で妖精と親しくなった。そして戯れる中、気づけば見知らぬ土地と時代にいたのだ。"], ["つまずき", "ほんのわずかなつまずきが、いつまでも澱のように残っている。この憂いが晴れる日は来るのだろうか。"], ["忘却", "御身に何か忌まわしいことが起きた……はずだ。しかし思い出せない。いったい何が……?"], ["人でなしの恋", "御身は異端との恋に落ちた。甘く狂おしい時間、移ろいゆく時。御身は恋人の手で、異端の体を得た。"], ["主の気まぐれ", "あの日、死んだはずの御身……。しかし、通りすがった主が、御身を異端へと変えて救ってくれたのだ。"], ["悲劇の予言", "魔女が御身に予言をした……いつか、大切な人を自らの手で殺めるだろうと。"], ["かき口説き", "御身は、孤独な異端を甘き言葉で口説き、心蕩かし、己を仲間に加えさせた。精神面において主はむしろ……。"], ["孤独", "ずっと孤独だった。異端となってなお孤独。御身はこのまま、堕落を待つばかりかと思ったのだが……。"], ["井の中の蛙", "己こそ最強と思っていた御身だが……一人の騎士を見て、全ては崩れた。まだまだ、世界は広い。"]]; - return table; - }, $Dracurouge_getPassionTable$49.$$arity = 0); - - Opal.def(self, '$getRecentStateTable', $Dracurouge_getRecentStateTable$50 = function $$getRecentStateTable() { - var self = this, table = nil; - - - table = [["悪夢", "眠りにつくたび、受難の記憶が蘇る。御身の心は晴れず、忌まわしい悪夢がつきまとい続けているのだ。", "2D6×10"], ["血の昂ぶり", "戦った後は体が火照り昂ぶり、どうしようもなく疼く。堕落の日は遠くない……御身には確信がある。", "1D6×1D6"], ["逃走", "異端審問官に追われ、住み慣れた地を離れねばならなかった。民も、異端に不審の目を向ける。生きづらい。", "1D6×1D6"], ["堕落の共鳴", "御身の魂は堕ちかけているのだろうか。堕落した者たちがどうしようもなく近しく思えてしまうのだ。", "1D6×1D6"], ["死にたがり", "もう飽きるほど生きた。堕落者や太陽を少しでも巻き添えに……己にふさわしい場所で、消滅してしまいたい。", "3D6×30"], ["再叙勲の儀", "騎士を異端卿に変える方法を、御身は知っている。そして実際に一人の異端卿を生み出してもいるのだ。", "3D6×30"], ["改心", "かつての御身はろくでもない悪党だった。心入れかえたのだが……異端に対する世間の目は厳しい。", "2D6×10"], ["追跡", "堕落した友を探している。彼の者が大切だからこそ、御身の手でケリをつけねばならないのだ。", "2D6×10"], ["嵐の予感", "御身には予感がある――常夜国に近く、恐るべき災厄が起きるであろう。少しでも多くに知らせ、備えねば。", "2D6×10"], ["仮面", "傷つくのが怖くて、表情を作った。本当の己を隠した。今や御身はもう、本当の己を忘れてしまっている……。", "2D6×10"], ["墓守", "親しくして死んでいった者たちの墓を見守っている。誰もが拝殿の墓場に葬られるわけではないのだ。", "2D6×20"], ["空白", "その体となってから、思い出せない時期がある。その間に何があったのか、御身には何もわからない。", "1D6×1D6"], ["失恋", "御身は異端ゆえか、その性格ゆえか。一つの恋を終えた。今は傷心のままに彷徨っている。", "1D6×1D6"], ["主がために", "騎士か異端か。御身には、心に決めた特定の主がいる。その方の命に従い、御身は行動する。", "1D6×1D6"], ["新米", "御身は未だ、異端となったばかり。得た力に振り回され、受難にも懲りず(古き異端は選択できない)。", "1"], ["退屈", "変わらぬ日常。甲斐なき日々。ゆっくりと朽ちていく感覚。このまま己を失い、堕落してしまうのだろうか。", "2D6×10"], ["隠遁", "民の目、騎士の目は、平穏を乱す。御身は自らの平穏のため、厳しき自然の中で隠棲している。", "2D6×20"], ["愛がほしい", "寂しくて人恋しい日々。誰かを信じたい。誰かに信じられたい。利用されてもいいから、人の側にいたい。", "1D6×1D6"], ["魔女の予言", "御身は予言に導かれている。御身は誰かと出会わねばならぬ。それは主か友か恋人……あるいは敵か。", "1D6×1D6"], ["見届け人", "民の移り変わる様をじっと眺めている。御身は目まぐるしく彼らを眺めるのが好きなのだ。", "3D6×30"], ["後継探し", "御身は己の心を動かす民を探している。己と同じ存在に変え、永遠の時を共に過ごすのだ……。", "3D6×20"], ["ゴブリン", "ゴブリンたちに懐かれている。彼らは頻繁に、御身の前へと姿を現し、ちょっとした悪戯や贈り物をしていくのだ。", "1D6×1D6"], ["血の後継", "御身は目に留めた者を仲間に加えたことがある。そして、その者との親交は未だ途絶えてはいない。", "3D6×30"], ["神秘の伝承", "神秘の技を、民や他の異端に伝えている。古い知識を伝えるためあるいは単に驚く顔を見ようと。 ", "3D6×20"], ["変革の狼煙", "異端と蔑まれ、このような立場に追いやられた現状を是とするのか? 立ち上がり、変えるべきではないか?", "1D6×1D6"], ["民と共に", "長く民と交わり、彼らとの交流の中で生きて来た。多くの感謝と、いくらかの疑いを受けながら生きている。", "1D6×1D6"], ["放浪癖", "一つ所に留まる気になれない。御身は常に道を歩き、数多の村、数多の都市を渡り歩いてきた。", "1D6×1D6"], ["民の間に", "積極的に民と交わり、彼らの生活に関わっている。御身は人が好きで、彼らと接してこそ、己を感じられるのだ。", "1D6×1D6"], ["恩返し", "かつて、御身はある騎士、または異端に助けられた。いつか、この恩は返さねばならない。", "1D6×10"], ["騎士の友", "騎士と時を過ごし、信頼を築いた。騎士という連中への忌避感は少ない。彼らとは助け合えるだろう。", "2D6×10"], ["長き眠り", "御身はかつて人知れず太陽の欠片と戦い、体の多くを喪失して眠りについた……随分と長く寝ていたようだ。", "3D6×50"], ["英雄の星", "出会った魔女が予言した……いずれ御身が恐るべき敵を打ち倒し、その名は諸領に響くであろうと。", "1D6×1D6"], ["導くもの", "多くの異端が、蔑まれる立場に甘んじ、堕落していく。御身が誇りと、家族と、愛情を教えねばならない。", "3D6×20"], ["慈愛", "御身は全てを慈しむ。たとえ今は不幸な行き違いがあろうとも、彼らを救い続ける手を止めてはなるまい。", "2D6×10"], ["生ける芸術", "その美しさゆえ、御身に平穏は訪れぬ。姿を見ただけで、あらゆる者が御身に焦がれ、愛を捧げよう。", "1D6×1D6"], ["伝説", "御身は異端なれど、常夜国の歴史に少なからず関わってきた。吟遊詩人にも歌われる伝説の存在だ。", "3D6×50"]]; - return table; - }, $Dracurouge_getRecentStateTable$50.$$arity = 0); - - Opal.def(self, '$getPeacefulPastTable', $Dracurouge_getPeacefulPastTable$51 = function $$getPeacefulPastTable() { - var self = this, table = nil; - - - table = [["乱暴者", "短気で、気性が荒く、ついつい手が出て乱暴を働いてしまう。故郷での評判はあまりよくない。今はどうだろう?", "8+2D6"], ["孤児", "親兄弟もなく、ただ一人で知恵を働かせて生きて来た。自由だが、厳しい環境の中で御身の魂は磨かれてきたのだ。", "6+2D6"], ["絶対の恐怖", "ある生き物が、どうしようもなく恐い。とにかく生理的に無理。それを見れば御身は無様に飛び上がり逃げまどう。", "7+1D6×1D6"], ["酒乱", "昔から酒に酔うと、どうにもろくなことをしない。民でなくなった今、酒には酔わないはずだが……。", "15+1D6×1D6"], ["怠け者", "才能はあっても、動くのはどうにも億劫で。いつも、どうにかしてラクに過ごそうと、そればかり考えていた。", "7+1D6×1D6"], ["内気", "臆病で人見知りする性格。人との交流も苦手。付き合いは深く狭く。そんな御身でも縁はあるもので……。", "7+1D6×1D6"], ["血気盛ん", "性急に過ぎると、古くから言われていた。しかし年を経ても、気質は直らぬ。御身の心は今も若く、未熟だ。", "7+1D6×1D6"], ["幼馴染", "とても仲のいい幼馴染がおり、将来について語り合っていた。今、彼の人はどうしていることだろうか。", "7+1D6×1D6"], ["忘れざる味", "御身には、どうしても忘れがたい大好物がある。民でなくなった今も、それを夢中で口にしてしまうだろう。", "7+1D6×1D6"], ["朴念仁", "かつて多数の異性から想いを向けられたが、御身は気づかなかった。最近ふと思い出し、気づいたのだ。", "7+1D6×1D6"], ["ある別れ", "親友や家族が、騎士または異端となり……故郷を離れた。しかし、同じ時を生きる今なら、きっと会 えるはずだ。", "7+1D6×1D6"], ["本の虫", "静かに本を読むのが好きだ。本の中の世界、己の世界に没頭したい。外で駆けまわるのは苦手なのだ。", "7+1D6×1D6"], ["はねっかえり", "どうにも人の言葉を、素直に聞けない。ついつい反抗しては周りに迷惑をかけてしまう。時を経た今も変わらず。", "6+2D6"], ["お調子者", "あれこれと失敗しているのに、ついつい調子に乗ってしまう。勢いのままに、無謀な行動をしてしまいがちだ。", "7+1D6×1D6"], ["好奇心", "気を引くものがあれば、目を向ける。秘密とあれば暴かずにいられない。知らぬままでは、済ませられぬのだ。", "9+2D6"], ["説教癖", "何かと人の所作が気になり、つい人にうるさく言ってしまう。己自身にも厳しくあろうとしているのだが……。", "15+1D6×1D6"], ["腕自慢", "恵まれた体躯と身体能力で、故郷において並ぶものなき腕自慢、力自慢だった。無論、民としては……だが。", "9+3D6"], ["自然の中で", "故郷が僻地にあったのか。それとも野に暮らしていたのか。御身は自然に溶け込み、自然をよく知っている。", "7+1D6×1D6"], ["旅人", "様々な村や街を行き来する旅人だった。流浪の異端や、遍歴の騎士にも、それなりの知り合いがいる。", "10+1D6×1D6"], ["自由に焦がれ", "平凡な日々への反発。己という枠を超えて、異端になってしまえば、きっと自由になれると思った。", "9+2D6"], ["叶わぬ初恋", "ある民に恋をした。恋は叶わず、彼の人は御身の前から姿を消した。けれど、あの笑顔は、今も御身を力づける。", "9+2D6"], ["奇妙な初恋", "一人の異端と出会い、その美しさに恋をした。彼の人を求め、すべてを打ち捨て……同じ時を生きる身となった", "9+3D6"], ["移り気", "どうにも目先のものに気をとられがちだ。落ち着いてものごとを考えられない。年経ても変わらぬ性分だ。", "6+2D6"], ["鳥獣の友", "鳥や獣の意思がなんとなくわかる。御身は彼らの友であり、様々な場で助けられ、また助けてもきた。", "7+1D6×1D6"], ["妖精の友", "妖精を引き寄せる、奇妙な魅力を持って生まれた。幼き頃より、御身は妖精や獣の友である。", "7+1D6×1D6"], ["おせっかい", "周りの人が気になって仕方がない。困っている人には、迷惑がられても口出ししてしまう性分なのだ。", "7+1D6×1D6"], ["無垢なる魂", "浮世の邪念から余りに遠く生きて来たがゆえに、御身の魂はどこまでも穢れなく美しい。そして脆い。", "6+2D6"], ["修道僧", "真祖の拝殿にて、僧正に仕える修道僧だった。もっとも、異端審問のような視野の狭い考えは持っていない。", "10+1D6×1D6"], ["平穏", "御身は家族に囲まれ、愛情に満ちた生活を送っていた。平凡な生活、平凡な日々。とても、とても幸せだった。", "7+1D6×1D6"], ["働き者", "故郷では評判の働き者。誠実な人柄でも知られていた。その気質は今も変わらず、余裕を持って行動できない。", "12+1D6×1D6"], ["熟練者", "ある専門技術について、天才的な能力を持っている。故郷の領主も、御身の意見や技術を頼みとしたほどだ。", "15+1D6×1D6"], ["熱愛", "とても深く、激しい、熱病のような恋をした。恋の炎は今も、御身の中でくすぶっている。決して消えてはいない。", "9+3D6"], ["美貌", "誰もが羨み、振り返る美貌。その美貌は周囲に響き、また騎士すらも御身を賛美した。", "7+1D6×1D6"], ["魔女の弟子", "故郷の近くに住む魔女にかわいがられていた。薬草や占い、異端について、御身は人よりよく知るだろう。", "7+1D6×1D6"], ["騎士の友", "ある騎士によく寵愛を受けていた。否、立場の差を超えた、友情や親愛と言ってもいい対等の絆をつないだのだ。", "7+1D6×1D6"], ["血統を遺す身", "伴侶を得て、子を為し、家庭を築いた。その血は、御身が民ならざる身となった今も脈絡と続いている。", "12+4D6"]]; - return table; - }, $Dracurouge_getPeacefulPastTable$51.$$arity = 0); - Opal.const_set($nesting[0], 'TABLES', $hash2(["CS", "ECS", "BT"], {"CS": $hash2(["name", "type", "table"], {"name": "堕落の兆し表", "type": "2D6", "table": ["あなたは完全に堕落した。この時点であなたは[壁の華]となり、人狼、黒山羊、夜獣卿のいずれかとなる。その[幕]の終了後にセッションから退場する。247ページの「消滅・完全なる堕落」も参照すること。", "獣そのものの頭(狼、山羊、蝙蝠のいずれか)", "夜鳥の翼", "コウモリの翼", "鉤爪ある異形の腕", "ねじれた二本角", "狼の耳と尾", "青ざめた肌", "異様な光を宿す目", "突き出した犬歯", "目に見える変化はない……"]}), "ECS": $hash2(["name", "type", "table"], {"name": "拡張・堕落の兆し表", "type": "D66", "table": ["完全なる堕落:あなたは〔壁の華〕となり、いずれかの堕落者となる。その〔幕〕の終了後にセッションから退場する。(基本247ページ参照)", "異様な体躯:体が膨れ上がったように、過剰なまでの筋肉を付け、体格も巨躯となる。堕落は近い。", "殺戮鬼:民に触れれば、もう貴卿は衝動を抑えきれない。引き裂き殺し、血を啜ってしまう。民に近づいてはならない……。", "獣頭:頭が狼や山羊、蝙蝠そのものとなる。遠目にもわかる異常であり、人狼と間違えられて討たれる騎士もいるという。", "原初の鎧:体の多くが硬い漆黒の塊となり、禍々しい怪物のような体となる。顔または顔の半分は、元の形を維持できるだろう。", "夜鳥の翼:背中に黒い鳥の翼が生える。ストリガともはや変わらず、貴卿は常に異端と並べ揶揄されるだろう。", "蝙蝠の翼:背中に蝙蝠の翼が生える。決して隠せず、限定的ながらも空を飛べる……毛の生えた黒い翼だ。", "割れた肌:全身の肌がひび割れる。中からじわりと紅い光が常に漏れる。姿が美しかろうと、その様子はもはや怪物だ。", "退廃の香り:甘く心蕩かす香りが体から発せられる。騎士ならばともかく、民には麻薬や媚薬のように作用するものだ。", "異形の腕:悪鬼を思わせる鉤爪を備えた腕。表面はタールのような漆黒の塊で覆われ……歪んだ凶悪な形をしている。", "鬼火を宿す目:目に鬼火が宿る。この異様な光は目から溢れ、炎となって常に揺らめいている。貴卿とまともに向き合う者はもういない。", "悪の棘:肘や膝、拳、額、あるいはより思わぬところから、黒か赤の鋭い棘が生える。周囲の皮膚も硬質化を始める。", "異様なる刻印:顔を含めた全身の肌に、紅い光による異端の如き刻印が現れる。欲望の性質によって、刻印の様相は常に変わる。", "毒蛇:肩からか、あるいは尾のように、禍々しい毒蛇が生える。袖や裾から見せれば具現化させた使役獣に見えなくもないが……。", "第三の目:貴卿の額に、第三の目が開く。髪やフードで隠せなくもないが……隠し通すのは難しいだろう。", "拡がる鱗:貴卿の体のそこかしこが鱗に覆われ始める。ゆっくりと拡がるそれは、やがて隠しきれなくなるだろう。", "獣の唸り:貴卿の内から、獣の唸り声が聞こえるようになる。やがては獣臭も漂い始めるだろう。内は既に獣となりつつある。", "変身:なぜこのような……貴卿は性別、外見年齢、体格のいずれか、時にはすべてが大きく変わってしまう。", "山羊の角:頭から二本の、ねじれた長い山羊角が生えてくる。この角は、具現化などによって隠したりはできない。", "牙の咢:歯が全て犬歯となり、口自体も大きく開くようになる。笑顔も、威嚇しているかのように見えるだろう。", "竜の翼:背中に鱗で覆われた頑強な翼が生える。滑空程度はできるだろう。幸いにも竜翼は……吉兆と見る騎士も多い。", "山羊の脚:衣装で何とか隠せるのが救いだが……その脚は黒山羊のものとなってしまった。見た者は嫌悪に眉をひそめるだろう。", "狼の耳と尾:貴卿の頭に狼の耳が、尻に狼の尾が現れる。これらは獣のように、貴卿の感情に合わせて動く。", "闇溢れの目:目の、白目が黒くなる。さらに目からは闇がにじみ出しあふれ、黒い炎の如く揺らめく。", "青ざめた肌:死体のように冷たく、また異様に青ざめた肌となる。一見して貴卿の堕落は明らかだ。", "発作的変身:【渇き】が増えるごとに貴卿の姿は一瞬だけ、特定の堕落者の姿に変身してしまう。おぞましき末路の暗示なのだ。", "具現化不安定:具現化が不安定となる。貴卿が具現化するものは全て歪み、優雅さを失った異形となるだろう。", "異様に光る眼:目が鬼火のように光っている。それは闇におぞましい尾を引いて、無意識の内に獲物を狙うだろう。", "目立つ犬歯:八重歯と言うには長く、鋭すぎる犬歯。口づけの折、ともすれば相手の肌を傷つけてしまいそうになる……。", "魔女爪:手足の爪が、異様な鉤爪となる。具現化でごまかすこともできない……籠手などを常に着けておけば可能だろうか。", "加減困難:貴卿の力は制御が難しくなる。ふとした拍子に、家具を壊したり民を傷つけてしまうだろう。", "長い舌:貴卿の舌は、己の目まで届くほどに長くなる。幸いにも伸ばして見せない限りは、外部からわかるまいが……。", "不埒な口づけ:口づけのごとに、貴卿を異様な劣情が襲う。その作法は浅ましく、淫らがましいものとなってしまうだろう。", "堕落の影:紅い月光が照らす貴卿の影は、もはや堕落者のものだ。初対面ならともかく、長く気づかれずには……いられまい。", "月光欲:屋根があると不快感を感じる。なるべく月光を浴びられる場所でいたい。宮廷でも庭園やバルコニーを好むだろう。", "幸運:自覚するような兆しはないようだが……己を戒めねばなるまい。貴卿は今や堕落の瀬戸際にいると自覚せよ。"]}), "BT": $hash2(["name", "type", "table"], {"name": "絆内容決定表:ルージュ/ノワール", "type": "1D6", "table": ["憐(Pity) 相手を憐れみ、慈しむ。/侮(Contempt) 相手を侮り、軽蔑する。", "友(Friend) 相手に友情を持つ。/妬(Jealousy) 相手を羨望し、妬む。", "信(Trust) 相手を信頼する。/欲(Desire) 相手を欲し、我がものにしたいと思う。", "恋(Love) 相手に恋し、愛する。/怒(Anger) 相手に怒りを感じる。", "敬(Respect) 相手の実力や精神を敬う。/殺(Kill) 相手に殺意を持ち、滅ぼそうと思う。", "主(Obey) 相手を主と仰ぎ、忠誠を誓う。/仇(Vendetta) 相手を怨み、仇と狙う。"]})}).$freeze()); - return self.$setPrefixes($rb_plus(["DR.*", "RT.*", "HRT.*", "CT\\d+", "ST", "CO", "CA", "EP", "OS", "PN", "RS", "PP"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Dracurouge_Korean.js b/src/assets/dicebot/Dracurouge_Korean.js deleted file mode 100644 index ca2f98eb3..000000000 --- a/src/assets/dicebot/Dracurouge_Korean.js +++ /dev/null @@ -1,330 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$debug', '$getConductResult', '$nil?', '$getResistResult', '$getReactionResult', '$getCorruptionResult', '$getTableResult', '$===', '$to_i', '$last_match', '$==', '$rollDiceList', '$getGloryDiceCount', '$times', '$<<', '$getThirstyAddedResult', '$empty?', '$+', '$join', '$roll', '$sort', '$collect', '$split', '$countTargetDice', '$floor', '$/', '$count', '$select', '$rindex', '$<=', '$each_with_index', '$to_s', '$[]', '$[]=', '$-', '$upcase', '$getReactionTable', '$get_table_by_d66', '$<', '$getReactionTextFull', '$index', '$getReactionTex', '$get_table_by_number', '$get_table_by_2d6', '$get_table_by_1d6', '$freeze', '$setPrefixes', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Dracurouge_Korean'); - - var $nesting = [self].concat($parent_nesting), $Dracurouge_Korean_initialize$1, $Dracurouge_Korean_rollDiceCommand$2, $Dracurouge_Korean_getConductResult$3, $Dracurouge_Korean_rollDiceList$5, $Dracurouge_Korean_getGloryDiceCount$7, $Dracurouge_Korean_countTargetDice$8, $Dracurouge_Korean_getThirstyAddedResult$10, $Dracurouge_Korean_getResistResult$13, $Dracurouge_Korean_getReactionResult$14, $Dracurouge_Korean_getReactionTextFull$15, $Dracurouge_Korean_getReactionTex$17, $Dracurouge_Korean_getReactionTable$18, $Dracurouge_Korean_getCorruptionResult$19, $Dracurouge_Korean_getTableResult$20, $Dracurouge_Korean_getCorruptionTable$21; - - - Opal.const_set($nesting[0], 'ID', "Dracurouge:Korean"); - Opal.const_set($nesting[0], 'NAME', "드라크루주"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:드라크루주"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・행동판정(DRx+y)\n" + " x:굴리는 주사위의 수(생략시4), y:갈증수정(생략시0)\n" + " 예) DR DR6 DR+1 DR5+2\n" + "・저항판정(DRRx)\n" + " x:굴리는 주사위의\n" + " 예) DRR3\n" + "・타락표(CTx) x:갈증(예) CT3\n" + "・타락의 전조표(CS)\n" + "・인연 내용 결정표(BT)\n" + "・반응표(RTxy)x:혈통, y:길 xy생략으로 일괄표시\n" + "  혈통 D:드라크, R:로젠부르크, H:헬스가르드, M:더스트하임,\n" + "     A:아발롬 N:노스페라스\n" + "  길  F:영주, G:근위, R:방랑, W:현자, J:사냥꾼, N:야수\n" + " 예)RT(일괄표시), RTDF(드라크 영주), RTAN(아발롬 야수)\n" + "・D66 다이스 있음\n"); - - Opal.def(self, '$initialize', $Dracurouge_Korean_initialize$1 = function $$initialize() { - var $iter = $Dracurouge_Korean_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Dracurouge_Korean_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Dracurouge_Korean_initialize$1, false), $zuper, $iter); - return (self.d66Type = 1); - }, $Dracurouge_Korean_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Dracurouge_Korean_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, result = nil; - - - self.$debug("rollDiceCommand"); - result = self.$getConductResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - result = self.$getResistResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - result = self.$getReactionResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - result = self.$getCorruptionResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - result = self.$getTableResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - return nil; - }, $Dracurouge_Korean_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getConductResult', $Dracurouge_Korean_getConductResult$3 = function $$getConductResult(command) { - var $$4, $a, $b, self = this, diceCount = nil, thirstyPoint = nil, diceList = nil, gloryDiceCount = nil, calculationProcess = nil, thirstyPointMarker = nil, result = nil; - - - if ($truthy(/^DR(\d*)(\+(\d+))?$/['$==='](command))) { - } else { - return nil - }; - diceCount = $$($nesting, 'Regexp').$last_match(1).$to_i(); - if (diceCount['$=='](0)) { - diceCount = 4}; - thirstyPoint = $$($nesting, 'Regexp').$last_match(3).$to_i(); - diceList = self.$rollDiceList(diceCount); - gloryDiceCount = self.$getGloryDiceCount(diceList); - $send(gloryDiceCount, 'times', [], ($$4 = function(){var self = $$4.$$s || this; - - return diceList['$<<'](10)}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - $b = self.$getThirstyAddedResult(diceList, thirstyPoint), $a = Opal.to_ary($b), (diceList = ($a[0] == null ? nil : $a[0])), (calculationProcess = ($a[1] == null ? nil : $a[1])), $b; - thirstyPointMarker = (function() {if (thirstyPoint['$=='](0)) { - return "" - } else { - return "" + "+" + (thirstyPoint) - }; return nil; })(); - result = "" + "(" + (command) + ") > " + (diceCount) + "D6" + (thirstyPointMarker) + " > "; - if ($truthy(calculationProcess['$empty?']())) { - } else { - result = $rb_plus(result, "" + "[ " + (calculationProcess) + " ] > ") - }; - result = $rb_plus(result, "" + "[ " + (diceList.$join(", ")) + " ]"); - return result; - }, $Dracurouge_Korean_getConductResult$3.$$arity = 1); - - Opal.def(self, '$rollDiceList', $Dracurouge_Korean_rollDiceList$5 = function $$rollDiceList(diceCount) { - var $a, $b, $$6, self = this, _dice = nil, str = nil, diceList = nil; - - - $b = self.$roll(diceCount, 6), $a = Opal.to_ary($b), (_dice = ($a[0] == null ? nil : $a[0])), (str = ($a[1] == null ? nil : $a[1])), $b; - diceList = $send(str.$split(/,/), 'collect', [], ($$6 = function(i){var self = $$6.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$sort(); - return diceList; - }, $Dracurouge_Korean_rollDiceList$5.$$arity = 1); - - Opal.def(self, '$getGloryDiceCount', $Dracurouge_Korean_getGloryDiceCount$7 = function $$getGloryDiceCount(diceList) { - var self = this, oneCount = nil, sixCount = nil, gloryDiceCount = nil; - - - oneCount = self.$countTargetDice(diceList, 1); - sixCount = self.$countTargetDice(diceList, 6); - gloryDiceCount = $rb_plus($rb_divide(oneCount, 2).$floor(), $rb_divide(sixCount, 2).$floor()); - return gloryDiceCount; - }, $Dracurouge_Korean_getGloryDiceCount$7.$$arity = 1); - - Opal.def(self, '$countTargetDice', $Dracurouge_Korean_countTargetDice$8 = function $$countTargetDice(diceList, target) { - var $$9, self = this; - - return $send(diceList, 'select', [], ($$9 = function(i){var self = $$9.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](target);}, $$9.$$s = self, $$9.$$arity = 1, $$9)).$count() - }, $Dracurouge_Korean_countTargetDice$8.$$arity = 2); - - Opal.def(self, '$getThirstyAddedResult', $Dracurouge_Korean_getThirstyAddedResult$10 = function $$getThirstyAddedResult(diceList, thirstyPoint) { - var $$11, $$12, self = this, targetIndex = nil, textList = nil, $writer = nil; - - - if (thirstyPoint['$=='](0)) { - return [diceList, ""]}; - targetIndex = $send(diceList, 'rindex', [], ($$11 = function(i){var self = $$11.$$s || this; - - - - if (i == null) { - i = nil; - }; - return $rb_le(i, 6);}, $$11.$$s = self, $$11.$$arity = 1, $$11)); - if ($truthy(targetIndex['$nil?']())) { - return [diceList, ""]}; - textList = []; - $send(diceList, 'each_with_index', [], ($$12 = function(item, index){var self = $$12.$$s || this; - - - - if (item == null) { - item = nil; - }; - - if (index == null) { - index = nil; - }; - if (targetIndex['$=='](index)) { - return textList['$<<']("" + (item) + "+" + (thirstyPoint)) - } else { - return textList['$<<'](item.$to_s()) - };}, $$12.$$s = self, $$12.$$arity = 2, $$12)); - - $writer = [targetIndex, $rb_plus(diceList['$[]'](targetIndex), thirstyPoint)]; - $send(diceList, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return [diceList, textList.$join(", ")]; - }, $Dracurouge_Korean_getThirstyAddedResult$10.$$arity = 2); - - Opal.def(self, '$getResistResult', $Dracurouge_Korean_getResistResult$13 = function $$getResistResult(command) { - var self = this, diceCount = nil, diceList = nil; - - - if ($truthy(/^DRR(\d+)$/['$==='](command))) { - } else { - return nil - }; - diceCount = $$($nesting, 'Regexp').$last_match(1).$to_i(); - if (diceCount['$=='](0)) { - diceCount = 4}; - diceList = self.$rollDiceList(diceCount); - return "" + "(" + (command) + ") > " + (diceCount) + "D6 > [ " + (diceList.$join(", ")) + " ]"; - }, $Dracurouge_Korean_getResistResult$13.$$arity = 1); - - Opal.def(self, '$getReactionResult', $Dracurouge_Korean_getReactionResult$14 = function $$getReactionResult(command) { - var $a, $b, self = this, typeText1 = nil, typeText2 = nil, name = nil, table = nil, tableText = nil, number = nil, type1 = nil, type1_indexTexts = nil, type2 = nil, type2_indexTexts = nil, tensValue = nil, isBefore = nil, type = nil, indexTexts = nil, typeText = nil, resultText = nil, index = nil; - - - if ($truthy(/^RT((\w)(\w))?/['$==='](command.$upcase()))) { - } else { - return nil - }; - typeText1 = $$($nesting, 'Regexp').$last_match(2); - typeText2 = $$($nesting, 'Regexp').$last_match(3); - name = "반응표"; - table = self.$getReactionTable(); - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (tableText = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - type1 = ["드라크", "로젠부르크", "헬스가르드", "더스트하임", "아발롬", "노스페라스"]; - type1_indexTexts = ["D", "R", "H", "M", "A", "N"]; - type2 = ["영주", "근위", "방랑", "현자", "사냥꾼", "야수"]; - type2_indexTexts = ["F", "G", "R", "W", "J", "N"]; - tensValue = $rb_divide(number.$to_i(), 10).$floor(); - isBefore = $rb_lt(tensValue, 4); - type = (function() {if ($truthy(isBefore)) { - return type1 - } else { - return type2 - }; return nil; })(); - indexTexts = (function() {if ($truthy(isBefore)) { - return type1_indexTexts - } else { - return type2_indexTexts - }; return nil; })(); - typeText = (function() {if ($truthy(isBefore)) { - return typeText1 - } else { - return typeText2 - }; return nil; })(); - resultText = ""; - if ($truthy(typeText['$nil?']())) { - resultText = self.$getReactionTextFull(type, tableText) - } else { - - index = indexTexts.$index(typeText); - if ($truthy(index['$nil?']())) { - return nil}; - resultText = self.$getReactionTex(index, type, tableText); - }; - return "" + (name) + "(" + (number) + ") > " + (resultText); - }, $Dracurouge_Korean_getReactionResult$14.$$arity = 1); - - Opal.def(self, '$getReactionTextFull', $Dracurouge_Korean_getReactionTextFull$15 = function $$getReactionTextFull(type, tableText) { - var $$16, self = this, resultTexts = nil; - - - resultTexts = []; - $send(type.$count(), 'times', [], ($$16 = function(index){var self = $$16.$$s || this; - - - - if (index == null) { - index = nil; - }; - return resultTexts['$<<'](self.$getReactionTex(index, type, tableText));}, $$16.$$s = self, $$16.$$arity = 1, $$16)); - return resultTexts.$join("/"); - }, $Dracurouge_Korean_getReactionTextFull$15.$$arity = 2); - - Opal.def(self, '$getReactionTex', $Dracurouge_Korean_getReactionTex$17 = function $$getReactionTex(index, type, tableText) { - var self = this, typeName = nil, texts = nil, string = nil; - - - typeName = type['$[]'](index); - texts = tableText.$split(/\t/); - string = texts['$[]'](index); - return "" + (typeName) + ":" + (string); - }, $Dracurouge_Korean_getReactionTex$17.$$arity = 3); - - Opal.def(self, '$getReactionTable', $Dracurouge_Korean_getReactionTable$18 = function $$getReactionTable() { - var self = this, text = nil; - - - text = "" + "하늘에 빛나는 붉은 달을 올려본다\t콧방귀를 뀐다\t헛기침을 한다\t미간을 찌푸리고 생각에 잠긴다\t하품을 참는다\t명왕령의 방향을 노려본다\n" + "작게 한숨을 쉰다\t앞머리를 쓸어 올린다\t눈썹을 찌푸린다\t주변을 평가하는 눈으로 본다\t머리를 긁적인다\t혀를 찬다\n" + "상대를 내려다보듯이 본다\t자신의 머리를 만진다\t투덜거린다\t손에 책을 구현화시켜 적어넣는다\t손에 생긴 과일을 먹는다\t고개숙여 바닥이나 지면을 노려본다\n" + "지그시 눈을 감고 말을 건다\t혼자서 작게 웃는다\t무표정하게 상대를 관찰한다\t재미없다는 듯이 바라본다\t붙임성 좋은 웃음을 짓는다\t무의식적으로 눈물이 흐른다\n" + "희미하게 미소짓는다\t콧노래를 부른다\t발밑에 지옥문이 생긴다\t안정된 발걸음으로 다가간다\t밤새가 어깨에 날아든다\t입술을 깨문다\n" + "품 속에서 박쥐가 날아오른다\t한쪽 발을 중심으로 빙그르르 돈다\t주변에 작게 원망하는 목소리가 울린다\t눈을 감고 과거를 생각한다\t검은 고양이가 발밑에 재롱부리며 달라붙는다\t가슴을 누르고 지그시 생각한다\n" + "머리 위를 박쥐가 소용돌이 치듯이 난다\t꽃잎을 구현화해 흩날린다\t비난하는 듯한 눈빛을 향한다\t발자취에 옅은 안개가 낀다\t주변에 요정의 빛이 춤춘다\t고개를 크게 흔들어 사념을 쫓는다\n" + "눈썹을 찌푸리는 동시에 눈이 붉게 빛난다\t의상이나 갑옷의 색이나 장식을 바꾼다\t직립부동의 자세로 서있는다\t쓴웃음을 지으며 다가선다\t순식간에 상대편에 나타난다\t마음 속의 분노로 험악한 얼굴이 된다\n" + "손에 있는 와인을 가볍게 마신다\t자신에게 취해 눈을 감는다\t질린듯한 모습으로 한숨을 쉰다\t현상을 분석하는 혼잣말을 한다\t순식간에 상대에게서 멀어진다\t의연한 태도로 맞선다\n" + "몸 전체에서 옅은 붉은 색의 오오라가 피어난다\t구현화한 꽃을 손에서 가지고 논다\t갑자기 돌아서며 노려본다\t흥미깊은듯이 질문한다\t벌레나 식물에게 정신이 팔린다\t마른 웃음소리를 흘린다\n" + "겁 없는 웃음을 짓는다\t마음에 드는 상대를 꼬시려고 한다\t주변의 공기가 얼어붙는다\t눈 앞의 양식에 불평을 말한다\t순수한 웃음을 보인다\t자신의 혈족을 깎아내리는 말을 한다\n" + "바람 없이 머리카락이 날린다\t어깨를 움츠린다\t가슴에 손을 얹고 자신을 안정시킨다\t무감동하게 가볍게 인사한다\t실수로 누군가를 말려들게해서 넘어진다\t조용한 분노와 함께 눈이 창백하게 빛난다\n" + "질린 눈으로 상대를 응시한다\t자신의 무기에 입맞춤을 한다\t손에 구현화한 사슬을 가지고 논다\t손에 구현화한 펜을 가지고 논다\t누군가에게 응석부리듯이 기댄다\t들꽃을 만지고 그것을 시들게 한다\n" + "발밑에 작은 회오리바람이 일어난다\t권유하는 듯이 누군가의 손을 잡는다\t주변을 엄격한 눈으로 바라본다\t눈을 뜨고 감탄한다\t웃음을 띠며 고개를 끄덕인다\t지친 모습으로 희미하게 빛나는 숨을 내뱉는다\n" + "격정이나 긴장감에 머리가 거꾸로 선다\t악기를 구현화해 연주한다\t동료에게 의심의 시선을 보낸다\t책, 소매, 망토 등으로 입가를 가린다\t작게 고개를 갸웃거린다\t자신의 문장을 멍하게 바라본다\n" + "붉은 달빛을 받으며 눈을 감는다\t상대에게 윙크한다\t감정에 맞춰 주변에 사슬이 구현화된다\t공중에 떠서 미끄러지듯이 나아간다\t수많은 검은 깃털이 하늘에 흩날린다\t자조적으로 작게 웃는다\n" + "무기를 들고 맹세를 선창한다\t의상에 붙은 먼지를 털어낸다\t타락에 대해 충고한다\t무감정하게 상황을 분석한다\t과일을 꺼내서 먹는다\t지친 눈으로 멍하게 다른 사람을 본다\n" + "자신의 문장을 쭉 바라본다\t망토에서 무수한 나비가 날아오른다\t차가운 시선으로 상대를 훑어본다\t순간, 모습이 안개에 휩싸여 희미해진다\t뭔가 있어 보이는 말이나 행동을 한다\t뭔가 결심한듯한듯이 얼굴을 들어올린다\n" + "상대의 눈을 들여다 봐 마음을 짐작한다\t주군의 옆에 살짝 다가선다\t일전의 싸움에 대해 얘기한다\t상대를 헤아리듯이 바라본다\t“적”을 생각해내 험악한 눈이 된다\t짐승과 같이 거칠게 호흡한다\n" + "자신의 영지를 생각한다\t문장이 새겨진 방패를 들어 올린다\t바람에 머리카락이 나부낀다\t안경을 구현화해 쓴다\t침을 뱉는다\t그렁그렁한 눈으로 상대를 올려다본다\n" + "종자를 시중들게 한다\t무기를 차고 기품있게 인사한다\t구현화한 탈것을 쓰다듬는다\t조그마한 점을 주의깊게 본다\t구현화한 무기를 쓰다듬는다\t고개를 숙이고 심호흡한다\n" + "종자의 시중을 받는다\t자신의 방패의 문장을 손가락으로 따라그린다\t동료의 어깨를 두드린다, 혹은 안는다\t과장되게 한숨을 쉬어보인다\t음울한 눈으로 허공을 노려본다\t벽이나 바닥에 손톱을 세워 할퀸다\n" + "마음에 드는 상대에게 손짓한다\t다른 기사에게 바싹 다가간다\t상쾌하게 웃는다\t눈을 감고 사색에 잠긴다\t옷자락에서 나타난 뱀이나 거미를 쓰다듬는다\t자신에게 이르는 혼잣말을 한다\n" + "근심에 가득차 생각에 잠긴다\t주군의 등뒤에서 상대를 노려본다\t소리 높여 이름을 댄다\t다른 기사에게 조언한다\t골똘히 생각하는 눈으로 밤하늘을 본다\t타락의 전조를 지그시 본다\n" + "무겁게 끄덕인다\t주군의 앞, 또는 옆에서 무릎꿇는다\t주변에 적극적으로 말을 건다\t얼버무리듯이 헛기침을 한다\t자신의 무기를 핥는다\t다른 기사에게서 눈을 돌린다\n" + "상냥한 미소를 짓는다\t겸연쩍다는듯 얼굴을 붉힌다\t자신의 이름에 맹세한다\t작게 인사한다\t어둡게 웃음짓는다\t다른 기사의 눈치를 살핀다\n" + "슬쩍 자신의 문장을 보여준다\t누군가의 앞을 가로막고 선다\t과장되게 누군가를 치켜세운다\t다른 기사에게 눈으로 신호를 보낸다\t그늘에 숨는다\t상대를 노려보며 신음한다\n" + "와인잔을 다른 기사에게 건넨다\t정신사납게 돌아다닌다\t다른 기사에게 시합을 신청한다\t불가사의한 웃음을 짓는다\t다른 기사의 문장을 관찰한다\t자신의 손가락을 가볍게 핥는다\n" + "가만히 풍경을 바라본다\t수줍은 웃음을 짓는다\t망토를 과장되게 펄럭인다\t하늘에 뜬 별들을 바라본다\t분위기를 못읽는 발언을 한다\t다른 기사에게 거리를 두어진다\n" + "손바닥에 체스말을 구현화한다\t긴장한 시선으로 주변을 둘러본다\t상대를 치켜 세우며 입맞춤을 요구한다\t깊은 지식으로 자세한 설명을 한다\t갑자기 뒤돌아보며 등뒤를 경계한다\t영악한 웃음을 짓는다\n" + "가슴을 펴고 자신있게 발언한다\t마음 속에서 다른 기사와 시합을 한다\t자신의 고향을 떠올린다\t미래에 대해 점쳐본다\t과거의 원통함에 피눈물을 흘린다\t자신의 피부를 손톱등으로 상처입힌다\n" + "빠르게 사죄한다\t가만히 기다리고 있는다\t자신의 문장에 대해 얘기한다\t사소한 예언을 한다\t상어와 같이 웃는다\t몰래 입맛을 다신다\n" + "다른 기사를 정면에서 칭찬한다\t주군을 지그시 바라본다\t다른 기사와 잡담을 한다\t소문의 일종을 다른 기사에게 속삭인다\t그 자리에 없는 기사를 비웃는다\t요염하게 곁눈질을 보낸다\n" + "다른 기사의 머리나 볼을 쓰다듬는다\t주군을 치켜 세운다\t곤란한듯이 작게 신음한다\t사소한 물건을 흥미깊게 관찰한다\t다른 기사와의 거리를 느낀다\t애처로운 눈으로 자신의 문장을 바라본다\n" + "우렁차게 이름을 댄다\t주군의 소매를 꽉 쥔다\t윗사람의 앞에서 무릎을 꿇고 예를 다한다\t달을 올려다보고 드라쿨을 칭송한다\t나직하게 이름을 댄다\t사냥감을 노리는 눈으로 다른 기사를 본다\n" + "입가를 가리며 기품있게 웃는다\t주군에 대한 주변의 태도를 비난한다\t아랫사람에게 미소짓는다\t다른 기사의 감정에 충고한다\t아랫사람을 내려다보는 눈으로 본다\t자학적인 말을 한다\n"; - return text.$split(/\n/); - }, $Dracurouge_Korean_getReactionTable$18.$$arity = 0); - - Opal.def(self, '$getCorruptionResult', $Dracurouge_Korean_getCorruptionResult$19 = function $$getCorruptionResult(command) { - var $a, $b, self = this, modify = nil, name = nil, table = nil, number = nil, number_text = nil, index = nil, text = nil; - - - if ($truthy(/^CT(\d+)$/['$==='](command.$upcase()))) { - } else { - return nil - }; - modify = $$($nesting, 'Regexp').$last_match(1).$to_i(); - name = "타락표"; - table = [[0, "당신은 완전히 타락했다. 이 시점에서 당신은 [월 플라워]가 되어 늑대인간, 검은 산양, 야수 중 하나가 된다. 그 [막]의 종료 후에 세션에서 퇴장한다. 247페이지의 「소멸・완전한 타락」을 참조한다."], [1, "당신의 육체는 정신에 걸맞는 변화를 일으킨다……. 「타락의 전조표」를 2번 굴리고 특징을 얻는다. 이 세션 종료 후, 【길】을 「야수」로 변경한다.(이미「야수」라면 【길】은 변하지 않는다)"], [3, "당신의 육체는 정신에 걸맞는 변화를 일으킨다……. 「타락의 전조표」를 1번 굴리고 특징을 얻는다. 이 세션 종료 후, 【길】을 「야수」로 변경한다.(이미「야수」라면 【길】은 변하지 않는다)"], [5, "고귀한 마음도 언젠가는 타락한다. 당신이 지금 가장 많은 루주를 얻은 대상에 대한 루주를 전부 잃고, 같은 수 만큼의 누아르를 얻는다. 누아르를 얻은 결과, 【갈증】이 3점 이상이 된 경우 다시 타락표를 굴린다."], [6, "내면에 잠든 짐승의 숨결……당신이 지금 【갈증】을 얻은 누아르의 대상에게 임의의 누아르 2점을 획득한다."], [7, "내면에 잠든 짐승의 숨결……당신이 지금 【갈증】을 얻은 누아르의 대상에게 임의의 누아르 1점을 획득한다."], [8, "날뛰는 마음을 가라앉힌다……다행히 아무 일도 없었다."], [99, "당신은 미쳐 날뛰는 감정을 억누르고 이성을 되찾았다! 【갈증】이 1 감소한다!"]]; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (number_text = ($a[1] == null ? nil : $a[1])), $b; - index = $rb_minus(number, modify); - self.$debug("index", index); - text = self.$get_table_by_number(index, table); - return "" + "2D6[" + (number_text) + "]-" + (modify) + " > " + (name) + "(" + (index) + ") > " + (text); - }, $Dracurouge_Korean_getCorruptionResult$19.$$arity = 1); - - Opal.def(self, '$getTableResult', $Dracurouge_Korean_getTableResult$20 = function $$getTableResult(command) { - var $a, $b, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, text = nil, number = nil; - - - info = $$($nesting, 'TABLES')['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type"); - table = info['$[]']("table"); - $b = (function() {$case = type; - if ("2D6"['$===']($case)) {return self.$get_table_by_2d6(table)} - else if ("1D6"['$===']($case)) {return self.$get_table_by_1d6(table)} - else { return nil }})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(text['$nil?']())) { - return nil}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $Dracurouge_Korean_getTableResult$20.$$arity = 1); - - Opal.def(self, '$getCorruptionTable', $Dracurouge_Korean_getCorruptionTable$21 = function $$getCorruptionTable() { - var self = this; - - return nil - }, $Dracurouge_Korean_getCorruptionTable$21.$$arity = 0); - Opal.const_set($nesting[0], 'TABLES', $hash2(["CS", "BT"], {"CS": $hash2(["name", "type", "table"], {"name": "타락의 전조표", "type": "2D6", "table": ["당신은 완전히 타락했다. 이 시점에서 당신은 [월 플라워]가 되어 늑대인간, 검은 산양, 야수 중 하나가 된다. 그 [막]의 종료 후에 세션에서 퇴장한다. 247페이지의 「소멸・완전한 타락」을 참조한다.", "짐승 그 자체의 머리(늑대, 산양, 박쥐 중 하나)", "밤새의 날개", "박쥐의 날개", "갈퀴발톱이 있는 이형의 팔", "뒤틀린 두 개의 뿔", "늑대의 귀와 꼬리", "창백해진 피부", "이상한 빛을 발하는 눈", "튀어나온 송곳니", "눈에 보이는 변화는 없다……"]}), "BT": $hash2(["name", "type", "table"], {"name": "인연 내용 결정표:루주/누아르", "type": "1D6", "table": ["연민(Pity) 상대를 불쌍히 여기고 동정한다. /모멸(Contempt) 상대를 깔보고 경멸한다.", "친구(Friend) 상대에게 우정을 갖는다. /질투(Jealousy) 상대를 부러워하고 질투한다. ", "신뢰(Trust) 상대를 신뢰한다. /욕망(Desire) 상대를 원하고 나의 것으로 만들고 싶어한다.", "사랑(Love) 상대를 좋아하고 사랑한다. /분노(Anger) 상대에게 분노를 느낀다. ", "존경(Respect) 상대의 실력이나 정신을 존경한다. /살의(Kill) 상대에게 살의를 느끼고 없애고자 한다.", "복종(Obey) 상대를 주군으로서 받들고 충의를 맹세한다. /복수(Vendetta) 상대를 원망하고 원수로 여긴다."]})}).$freeze()); - return self.$setPrefixes($rb_plus(["DR.*", "RT.*", "CT\\d+"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/DungeonsAndDragons.js b/src/assets/dicebot/DungeonsAndDragons.js deleted file mode 100644 index 3e2760cba..000000000 --- a/src/assets/dicebot/DungeonsAndDragons.js +++ /dev/null @@ -1,16 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; - - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DungeonsAndDragons'); - - var $nesting = [self].concat($parent_nesting); - - - Opal.const_set($nesting[0], 'ID', "DungeonsAndDragons"); - Opal.const_set($nesting[0], 'NAME', "ダンジョンズ&ドラゴンズ"); - Opal.const_set($nesting[0], 'SORT_KEY', "たんしよんすあんととらこんす"); - return Opal.const_set($nesting[0], 'HELP_MESSAGE', "※このダイスボットは部屋のシステム名表示用となります。\n"); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/EarthDawn.js b/src/assets/dicebot/EarthDawn.js deleted file mode 100644 index 60b5ecda5..000000000 --- a/src/assets/dicebot/EarthDawn.js +++ /dev/null @@ -1,211 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$ed_step', '$getStepResult', '$=~', '$to_i', '$last_match', '$>', '$<', '$getStepTable', '$[]', '$-', '$===', '$+', '$debug', '$rollStep', '$!=', '$to_s', '$==', '$>=', '$empty?', '$times', '$roll']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'EarthDawn'); - - var $nesting = [self].concat($parent_nesting), $EarthDawn_initialize$1, $EarthDawn_rollDiceCommand$2, $EarthDawn_ed_step$3, $EarthDawn_getStepResult$4, $EarthDawn_getStepTable$5, $EarthDawn_rollStep$6; - - self.$$prototype.string = self.$$prototype.isFailed = nil; - - Opal.const_set($nesting[0], 'ID', "EarthDawn"); - Opal.const_set($nesting[0], 'NAME', "アースドーン"); - Opal.const_set($nesting[0], 'SORT_KEY', "ああすとおん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "ステップダイス (xEn+k)\n" + "ステップx、目標値n(省略可能)、カルマダイスk(D2-D20)でステップダイスをロールします。\n" + "振り足しも自動。\n" + "例)9E 10E8 10E+D12\n"); - self.$setPrefixes(["\\d+e.*"]); - - Opal.def(self, '$initialize', $EarthDawn_initialize$1 = function $$initialize() { - var $iter = $EarthDawn_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $EarthDawn_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $EarthDawn_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.sortType = 1); - }, $EarthDawn_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $EarthDawn_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this; - - return self.$ed_step(command) - }, $EarthDawn_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$ed_step', $EarthDawn_ed_step$3 = function $$ed_step(str) { - var self = this, output = nil; - - - output = self.$getStepResult(str); - return output; - }, $EarthDawn_ed_step$3.$$arity = 1); - - Opal.def(self, '$getStepResult', $EarthDawn_getStepResult$4 = function $$getStepResult(str) { - var self = this, stepTotal = nil, step = nil, targetNumber = nil, hasKarmaDice = nil, karmaDiceCount = nil, karmaDiceType = nil, stable = nil, nmod = nil, d20step = nil, d12step = nil, d10step = nil, d8step = nil, d6step = nil, d4step = nil, $case = nil, output = nil, excelentSuccessNumber = nil, superSuccessNumber = nil, goodSuccessNumber = nil, failedNumber = nil; - - - if ($truthy(/(\d+)E(\d+)?(\+)?(\d+)?(d\d+)?/i['$=~'](str))) { - } else { - return nil - }; - stepTotal = 0; - self.isFailed = true; - step = $$($nesting, 'Regexp').$last_match(1).$to_i(); - targetNumber = 0; - hasKarmaDice = false; - karmaDiceCount = 0; - karmaDiceType = 0; - if ($truthy($rb_gt(step, 40))) { - step = 40}; - if ($truthy($$($nesting, 'Regexp').$last_match(2))) { - - targetNumber = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($rb_gt(targetNumber, 43))) { - targetNumber = 42};}; - if ($truthy($$($nesting, 'Regexp').$last_match(3))) { - hasKarmaDice = $$($nesting, 'Regexp').$last_match(3).$to_i()}; - if ($truthy($$($nesting, 'Regexp').$last_match(4))) { - karmaDiceCount = $$($nesting, 'Regexp').$last_match(4).$to_i()}; - if ($truthy($$($nesting, 'Regexp').$last_match(5))) { - karmaDiceType = $$($nesting, 'Regexp').$last_match(5)}; - if ($truthy($rb_lt(targetNumber, 0))) { - return nil}; - stable = self.$getStepTable(); - nmod = stable['$[]'](0)['$[]']($rb_minus(step, 1)); - d20step = stable['$[]'](1)['$[]']($rb_minus(step, 1)); - d12step = stable['$[]'](2)['$[]']($rb_minus(step, 1)); - d10step = stable['$[]'](3)['$[]']($rb_minus(step, 1)); - d8step = stable['$[]'](4)['$[]']($rb_minus(step, 1)); - d6step = stable['$[]'](5)['$[]']($rb_minus(step, 1)); - d4step = stable['$[]'](6)['$[]']($rb_minus(step, 1)); - if ($truthy(hasKarmaDice)) { - $case = karmaDiceType; - if (/d20/i['$===']($case)) {d20step = $rb_plus(d20step, karmaDiceCount)} - else if (/d12/i['$===']($case)) {d12step = $rb_plus(d12step, karmaDiceCount)} - else if (/d10/i['$===']($case)) {d10step = $rb_plus(d10step, karmaDiceCount)} - else if (/d8/i['$===']($case)) {d8step = $rb_plus(d8step, karmaDiceCount)} - else if (/d6/i['$===']($case)) {d6step = $rb_plus(d6step, karmaDiceCount)} - else if (/d4/i['$===']($case)) {d4step = $rb_plus(d4step, karmaDiceCount)} - else {nmod = $rb_plus(nmod, karmaDiceCount)}}; - self.string = ""; - self.$debug("d20step, d12step, d10step, d8step, d6step, d4step", d20step, d12step, d10step, d8step, d6step, d4step); - stepTotal = $rb_plus(stepTotal, self.$rollStep(20, d20step)); - stepTotal = $rb_plus(stepTotal, self.$rollStep(12, d12step)); - stepTotal = $rb_plus(stepTotal, self.$rollStep(10, d10step)); - stepTotal = $rb_plus(stepTotal, self.$rollStep(8, d8step)); - stepTotal = $rb_plus(stepTotal, self.$rollStep(6, d6step)); - stepTotal = $rb_plus(stepTotal, self.$rollStep(4, d4step)); - if ($truthy($rb_gt(nmod, 0))) { - self.string = $rb_plus(self.string, "+")}; - if ($truthy(nmod['$!='](0))) { - - self.string = $rb_plus(self.string, nmod.$to_s()); - stepTotal = $rb_plus(stepTotal, nmod);}; - self.string = $rb_plus(self.string, "" + " > " + (stepTotal)); - output = "" + "ステップ" + (step) + " > " + (self.string); - if (targetNumber['$=='](0)) { - return output}; - self.string = $rb_plus(self.string, " > "); - excelentSuccessNumber = stable['$[]'](7)['$[]']($rb_minus(targetNumber, 1)); - superSuccessNumber = stable['$[]'](8)['$[]']($rb_minus(targetNumber, 1)); - goodSuccessNumber = stable['$[]'](9)['$[]']($rb_minus(targetNumber, 1)); - failedNumber = stable['$[]'](11)['$[]']($rb_minus(targetNumber, 1)); - if ($truthy(self.isFailed)) { - self.string = $rb_plus(self.string, "自動失敗") - } else if ($truthy($rb_ge(stepTotal, excelentSuccessNumber))) { - self.string = $rb_plus(self.string, "最良成功") - } else if ($truthy($rb_ge(stepTotal, superSuccessNumber))) { - self.string = $rb_plus(self.string, "優成功") - } else if ($truthy($rb_ge(stepTotal, goodSuccessNumber))) { - self.string = $rb_plus(self.string, "良成功") - } else if ($truthy($rb_ge(stepTotal, targetNumber))) { - self.string = $rb_plus(self.string, "成功") - } else if ($truthy($rb_lt(stepTotal, failedNumber))) { - self.string = $rb_plus(self.string, "大失敗") - } else { - self.string = $rb_plus(self.string, "失敗") - }; - output = "" + "ステップ" + (step) + ">=" + (targetNumber) + " > " + (self.string); - return output; - }, $EarthDawn_getStepResult$4.$$arity = 1); - - Opal.def(self, '$getStepTable', $EarthDawn_getStepTable$5 = function $$getStepTable() { - var self = this, mod = nil, d20 = nil, d12 = nil, d10 = nil, d8 = nil, d6 = nil, d4 = nil, exsuc = nil, ssuc = nil, gsuc = nil, nsuc = nil, fsuc = nil, stable = nil; - - - mod = [-2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - d20 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - d12 = [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]; - d10 = [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 3, 2, 1, 1, 1, 2, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 1]; - d8 = [0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0]; - d6 = [0, 0, 0, 1, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, 0, 0, 0]; - d4 = [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - exsuc = [6, 8, 10, 12, 14, 17, 19, 20, 22, 24, 25, 27, 29, 32, 33, 35, 37, 38, 39, 41, 42, 44, 45, 47, 48, 49, 51, 52, 54, 55, 56, 58, 59, 60, 62, 64, 65, 67, 68, 70, 71, 72]; - ssuc = [4, 6, 8, 10, 11, 13, 15, 16, 18, 19, 21, 22, 24, 26, 27, 29, 30, 32, 33, 34, 35, 37, 38, 40, 41, 42, 43, 45, 46, 47, 48, 49, 51, 52, 53, 55, 56, 58, 59, 60, 61, 62]; - gsuc = [2, 4, 6, 7, 9, 10, 12, 13, 14, 15, 17, 18, 20, 21, 22, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, 50, 51, 52, 53, 54]; - nsuc = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42]; - fsuc = [0, 1, 1, 1, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 11, 12, 13, 13, 14, 15, 16, 17, 18, 18, 18, 20, 21, 22, 23, 23, 24, 25, 26, 26, 27, 28, 29, 30]; - stable = [mod, d20, d12, d10, d8, d6, d4, exsuc, ssuc, gsuc, nsuc, fsuc]; - return stable; - }, $EarthDawn_getStepTable$5.$$arity = 0); - return (Opal.def(self, '$rollStep', $EarthDawn_rollStep$6 = function $$rollStep(diceType, diceCount) { - var $$7, self = this, stepTotal = nil; - - - self.$debug("rollStep diceType, diceCount, @string", diceType, diceCount, self.string); - stepTotal = 0; - if ($truthy($rb_gt(diceCount, 0))) { - } else { - return stepTotal - }; - if ($truthy(self.string['$empty?']())) { - } else { - self.string = $rb_plus(self.string, "+") - }; - self.string = $rb_plus(self.string, "" + (diceCount) + "d" + (diceType) + "["); - self.$debug("rollStep @string", self.string); - $send(diceCount, 'times', [], ($$7 = function(i){var self = $$7.$$s || this, $a, $b, $c, dice_now = nil, dice_in = nil; - if (self.string == null) self.string = nil; - - - - if (i == null) { - i = nil; - }; - $b = self.$roll(1, diceType), $a = Opal.to_ary($b), (dice_now = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy(dice_now['$!='](1))) { - self.isFailed = false}; - dice_in = dice_now; - while (dice_now['$=='](diceType)) { - - $c = self.$roll(1, diceType), $b = Opal.to_ary($c), (dice_now = ($b[0] == null ? nil : $b[0])), $c; - dice_in = $rb_plus(dice_in, dice_now); - }; - stepTotal = $rb_plus(stepTotal, dice_in); - if ($truthy(i['$!='](0))) { - self.string = $rb_plus(self.string, ",")}; - return (self.string = $rb_plus(self.string, dice_in.$to_s()));}, $$7.$$s = self, $$7.$$arity = 1, $$7)); - self.string = $rb_plus(self.string, "]"); - return stepTotal; - }, $EarthDawn_rollStep$6.$$arity = 2), nil) && 'rollStep'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/EarthDawn3.js b/src/assets/dicebot/EarthDawn3.js deleted file mode 100644 index b41a904c5..000000000 --- a/src/assets/dicebot/EarthDawn3.js +++ /dev/null @@ -1,476 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/EarthDawn"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$ed_step', '$getStepResult', '$=~', '$to_i', '$last_match', '$>', '$<', '$getStepTable', '$[]', '$-', '$===', '$+', '$debug', '$rollStep', '$!=', '$to_s', '$==', '$>=', '$empty?', '$times', '$roll']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'EarthDawn'); - - var $nesting = [self].concat($parent_nesting), $EarthDawn_initialize$1, $EarthDawn_rollDiceCommand$2, $EarthDawn_ed_step$3, $EarthDawn_getStepResult$4, $EarthDawn_getStepTable$5, $EarthDawn_rollStep$6; - - self.$$prototype.string = self.$$prototype.isFailed = nil; - - Opal.const_set($nesting[0], 'ID', "EarthDawn"); - Opal.const_set($nesting[0], 'NAME', "アースドーン"); - Opal.const_set($nesting[0], 'SORT_KEY', "ああすとおん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "ステップダイス (xEn+k)\n" + "ステップx、目標値n(省略可能)、カルマダイスk(D2-D20)でステップダイスをロールします。\n" + "振り足しも自動。\n" + "例)9E 10E8 10E+D12\n"); - self.$setPrefixes(["\\d+e.*"]); - - Opal.def(self, '$initialize', $EarthDawn_initialize$1 = function $$initialize() { - var $iter = $EarthDawn_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $EarthDawn_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $EarthDawn_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.sortType = 1); - }, $EarthDawn_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $EarthDawn_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this; - - return self.$ed_step(command) - }, $EarthDawn_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$ed_step', $EarthDawn_ed_step$3 = function $$ed_step(str) { - var self = this, output = nil; - - - output = self.$getStepResult(str); - return output; - }, $EarthDawn_ed_step$3.$$arity = 1); - - Opal.def(self, '$getStepResult', $EarthDawn_getStepResult$4 = function $$getStepResult(str) { - var self = this, stepTotal = nil, step = nil, targetNumber = nil, hasKarmaDice = nil, karmaDiceCount = nil, karmaDiceType = nil, stable = nil, nmod = nil, d20step = nil, d12step = nil, d10step = nil, d8step = nil, d6step = nil, d4step = nil, $case = nil, output = nil, excelentSuccessNumber = nil, superSuccessNumber = nil, goodSuccessNumber = nil, failedNumber = nil; - - - if ($truthy(/(\d+)E(\d+)?(\+)?(\d+)?(d\d+)?/i['$=~'](str))) { - } else { - return nil - }; - stepTotal = 0; - self.isFailed = true; - step = $$($nesting, 'Regexp').$last_match(1).$to_i(); - targetNumber = 0; - hasKarmaDice = false; - karmaDiceCount = 0; - karmaDiceType = 0; - if ($truthy($rb_gt(step, 40))) { - step = 40}; - if ($truthy($$($nesting, 'Regexp').$last_match(2))) { - - targetNumber = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($rb_gt(targetNumber, 43))) { - targetNumber = 42};}; - if ($truthy($$($nesting, 'Regexp').$last_match(3))) { - hasKarmaDice = $$($nesting, 'Regexp').$last_match(3).$to_i()}; - if ($truthy($$($nesting, 'Regexp').$last_match(4))) { - karmaDiceCount = $$($nesting, 'Regexp').$last_match(4).$to_i()}; - if ($truthy($$($nesting, 'Regexp').$last_match(5))) { - karmaDiceType = $$($nesting, 'Regexp').$last_match(5)}; - if ($truthy($rb_lt(targetNumber, 0))) { - return nil}; - stable = self.$getStepTable(); - nmod = stable['$[]'](0)['$[]']($rb_minus(step, 1)); - d20step = stable['$[]'](1)['$[]']($rb_minus(step, 1)); - d12step = stable['$[]'](2)['$[]']($rb_minus(step, 1)); - d10step = stable['$[]'](3)['$[]']($rb_minus(step, 1)); - d8step = stable['$[]'](4)['$[]']($rb_minus(step, 1)); - d6step = stable['$[]'](5)['$[]']($rb_minus(step, 1)); - d4step = stable['$[]'](6)['$[]']($rb_minus(step, 1)); - if ($truthy(hasKarmaDice)) { - $case = karmaDiceType; - if (/d20/i['$===']($case)) {d20step = $rb_plus(d20step, karmaDiceCount)} - else if (/d12/i['$===']($case)) {d12step = $rb_plus(d12step, karmaDiceCount)} - else if (/d10/i['$===']($case)) {d10step = $rb_plus(d10step, karmaDiceCount)} - else if (/d8/i['$===']($case)) {d8step = $rb_plus(d8step, karmaDiceCount)} - else if (/d6/i['$===']($case)) {d6step = $rb_plus(d6step, karmaDiceCount)} - else if (/d4/i['$===']($case)) {d4step = $rb_plus(d4step, karmaDiceCount)} - else {nmod = $rb_plus(nmod, karmaDiceCount)}}; - self.string = ""; - self.$debug("d20step, d12step, d10step, d8step, d6step, d4step", d20step, d12step, d10step, d8step, d6step, d4step); - stepTotal = $rb_plus(stepTotal, self.$rollStep(20, d20step)); - stepTotal = $rb_plus(stepTotal, self.$rollStep(12, d12step)); - stepTotal = $rb_plus(stepTotal, self.$rollStep(10, d10step)); - stepTotal = $rb_plus(stepTotal, self.$rollStep(8, d8step)); - stepTotal = $rb_plus(stepTotal, self.$rollStep(6, d6step)); - stepTotal = $rb_plus(stepTotal, self.$rollStep(4, d4step)); - if ($truthy($rb_gt(nmod, 0))) { - self.string = $rb_plus(self.string, "+")}; - if ($truthy(nmod['$!='](0))) { - - self.string = $rb_plus(self.string, nmod.$to_s()); - stepTotal = $rb_plus(stepTotal, nmod);}; - self.string = $rb_plus(self.string, "" + " > " + (stepTotal)); - output = "" + "ステップ" + (step) + " > " + (self.string); - if (targetNumber['$=='](0)) { - return output}; - self.string = $rb_plus(self.string, " > "); - excelentSuccessNumber = stable['$[]'](7)['$[]']($rb_minus(targetNumber, 1)); - superSuccessNumber = stable['$[]'](8)['$[]']($rb_minus(targetNumber, 1)); - goodSuccessNumber = stable['$[]'](9)['$[]']($rb_minus(targetNumber, 1)); - failedNumber = stable['$[]'](11)['$[]']($rb_minus(targetNumber, 1)); - if ($truthy(self.isFailed)) { - self.string = $rb_plus(self.string, "自動失敗") - } else if ($truthy($rb_ge(stepTotal, excelentSuccessNumber))) { - self.string = $rb_plus(self.string, "最良成功") - } else if ($truthy($rb_ge(stepTotal, superSuccessNumber))) { - self.string = $rb_plus(self.string, "優成功") - } else if ($truthy($rb_ge(stepTotal, goodSuccessNumber))) { - self.string = $rb_plus(self.string, "良成功") - } else if ($truthy($rb_ge(stepTotal, targetNumber))) { - self.string = $rb_plus(self.string, "成功") - } else if ($truthy($rb_lt(stepTotal, failedNumber))) { - self.string = $rb_plus(self.string, "大失敗") - } else { - self.string = $rb_plus(self.string, "失敗") - }; - output = "" + "ステップ" + (step) + ">=" + (targetNumber) + " > " + (self.string); - return output; - }, $EarthDawn_getStepResult$4.$$arity = 1); - - Opal.def(self, '$getStepTable', $EarthDawn_getStepTable$5 = function $$getStepTable() { - var self = this, mod = nil, d20 = nil, d12 = nil, d10 = nil, d8 = nil, d6 = nil, d4 = nil, exsuc = nil, ssuc = nil, gsuc = nil, nsuc = nil, fsuc = nil, stable = nil; - - - mod = [-2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - d20 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - d12 = [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]; - d10 = [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 3, 2, 1, 1, 1, 2, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 1]; - d8 = [0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0]; - d6 = [0, 0, 0, 1, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, 0, 0, 0]; - d4 = [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - exsuc = [6, 8, 10, 12, 14, 17, 19, 20, 22, 24, 25, 27, 29, 32, 33, 35, 37, 38, 39, 41, 42, 44, 45, 47, 48, 49, 51, 52, 54, 55, 56, 58, 59, 60, 62, 64, 65, 67, 68, 70, 71, 72]; - ssuc = [4, 6, 8, 10, 11, 13, 15, 16, 18, 19, 21, 22, 24, 26, 27, 29, 30, 32, 33, 34, 35, 37, 38, 40, 41, 42, 43, 45, 46, 47, 48, 49, 51, 52, 53, 55, 56, 58, 59, 60, 61, 62]; - gsuc = [2, 4, 6, 7, 9, 10, 12, 13, 14, 15, 17, 18, 20, 21, 22, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, 50, 51, 52, 53, 54]; - nsuc = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42]; - fsuc = [0, 1, 1, 1, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 11, 12, 13, 13, 14, 15, 16, 17, 18, 18, 18, 20, 21, 22, 23, 23, 24, 25, 26, 26, 27, 28, 29, 30]; - stable = [mod, d20, d12, d10, d8, d6, d4, exsuc, ssuc, gsuc, nsuc, fsuc]; - return stable; - }, $EarthDawn_getStepTable$5.$$arity = 0); - return (Opal.def(self, '$rollStep', $EarthDawn_rollStep$6 = function $$rollStep(diceType, diceCount) { - var $$7, self = this, stepTotal = nil; - - - self.$debug("rollStep diceType, diceCount, @string", diceType, diceCount, self.string); - stepTotal = 0; - if ($truthy($rb_gt(diceCount, 0))) { - } else { - return stepTotal - }; - if ($truthy(self.string['$empty?']())) { - } else { - self.string = $rb_plus(self.string, "+") - }; - self.string = $rb_plus(self.string, "" + (diceCount) + "d" + (diceType) + "["); - self.$debug("rollStep @string", self.string); - $send(diceCount, 'times', [], ($$7 = function(i){var self = $$7.$$s || this, $a, $b, $c, dice_now = nil, dice_in = nil; - if (self.string == null) self.string = nil; - - - - if (i == null) { - i = nil; - }; - $b = self.$roll(1, diceType), $a = Opal.to_ary($b), (dice_now = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy(dice_now['$!='](1))) { - self.isFailed = false}; - dice_in = dice_now; - while (dice_now['$=='](diceType)) { - - $c = self.$roll(1, diceType), $b = Opal.to_ary($c), (dice_now = ($b[0] == null ? nil : $b[0])), $c; - dice_in = $rb_plus(dice_in, dice_now); - }; - stepTotal = $rb_plus(stepTotal, dice_in); - if ($truthy(i['$!='](0))) { - self.string = $rb_plus(self.string, ",")}; - return (self.string = $rb_plus(self.string, dice_in.$to_s()));}, $$7.$$s = self, $$7.$$arity = 1, $$7)); - self.string = $rb_plus(self.string, "]"); - return stepTotal; - }, $EarthDawn_rollStep$6.$$arity = 2), nil) && 'rollStep'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$setPrefixes', '$ed_step', '$getStepResult', '$=~', '$to_i', '$last_match', '$min', '$!', '$nil?', '$max', '$new', '$[]=', '$-', '$<', '$getStepInfo', '$debug', '$each', '$+', '$rollStep', '$shift', '$getModifyText', '$==', '$getSuccess', '$>', '$to_s', '$getBaseStepTable', '$first', '$last', '$<=', '$get_table_by_number', '$floor', '$/', '$size', '$times', '$addStepToResult', '$%', '$[]', '$getSuccessTable', '$>=', '$empty?', '$roll', '$!=']); - - self.$require("diceBot/EarthDawn"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'EarthDawn3'); - - var $nesting = [self].concat($parent_nesting), $EarthDawn3_initialize$1, $EarthDawn3_rollDiceCommand$2, $EarthDawn3_ed_step$3, $EarthDawn3_getStepResult$4, $EarthDawn3_getModifyText$7, $EarthDawn3_getBaseStepTable$8, $EarthDawn3_getStepInfo$9, $EarthDawn3_addStepToResult$11, $EarthDawn3_getSuccess$13, $EarthDawn3_getSuccessTable$14, $EarthDawn3_rollStep$15; - - self.$$prototype.string = self.$$prototype.isFailed = nil; - - Opal.const_set($nesting[0], 'ID', "EarthDawn3"); - Opal.const_set($nesting[0], 'NAME', "アースドーン3版"); - Opal.const_set($nesting[0], 'SORT_KEY', "ああすとおん3"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "ステップダイス (xEn+k)\n" + "ステップx、目標値n(省略可能)、カルマダイスk(D2~D20)でステップダイスをロールします。\n" + "振り足しも自動。\n" + "例)ステップ10:10E\n" + "  ステップ10、目標値8:10E8\n" + "  ステップ12、目標値8、カルマダイスD12:10E8+1D6\n"); - self.$setPrefixes(["\\d+e.*"]); - - Opal.def(self, '$initialize', $EarthDawn3_initialize$1 = function $$initialize() { - var $iter = $EarthDawn3_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $EarthDawn3_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $EarthDawn3_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.sortType = 1); - }, $EarthDawn3_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $EarthDawn3_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this; - - return self.$ed_step(command) - }, $EarthDawn3_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$ed_step', $EarthDawn3_ed_step$3 = function $$ed_step(str) { - var self = this, output = nil; - - - output = self.$getStepResult(str); - return output; - }, $EarthDawn3_ed_step$3.$$arity = 1); - - Opal.def(self, '$getStepResult', $EarthDawn3_getStepResult$4 = function $$getStepResult(str) { - var $$5, $$6, self = this, stepTotal = nil, step = nil, targetNumber = nil, hasKarmaDice = nil, karmaDiceCount = nil, karmaDiceType = nil, diceModify = nil, karmaDiceInfo = nil, $writer = nil, stepInfo = nil, diceTypes = nil, modify = nil, output = nil; - - - if ($truthy(/^(\d+)E(\d+)?(\+(\d*)D(\d+))?(\+\d)?/i['$=~'](str))) { - } else { - return nil - }; - stepTotal = 0; - self.isFailed = true; - step = $$($nesting, 'Regexp').$last_match(1).$to_i(); - targetNumber = [$$($nesting, 'Regexp').$last_match(2).$to_i(), 20].$min(); - hasKarmaDice = $$($nesting, 'Regexp').$last_match(3)['$nil?']()['$!'](); - karmaDiceCount = [1, $$($nesting, 'Regexp').$last_match(4).$to_i()].$max(); - karmaDiceType = $$($nesting, 'Regexp').$last_match(5).$to_i(); - diceModify = $$($nesting, 'Regexp').$last_match(6).$to_i(); - karmaDiceInfo = $$($nesting, 'Hash').$new(0); - if ($truthy(hasKarmaDice)) { - - $writer = [karmaDiceType, karmaDiceCount]; - $send(karmaDiceInfo, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];}; - if ($truthy($rb_lt(targetNumber, 0))) { - return nil}; - stepInfo = self.$getStepInfo(step); - self.$debug("stepInfo", stepInfo); - self.string = ""; - diceTypes = [20, 12, 10, 8, 6, 4]; - $send(diceTypes, 'each', [], ($$5 = function(type){var self = $$5.$$s || this; - - - - if (type == null) { - type = nil; - }; - return (stepTotal = $rb_plus(stepTotal, self.$rollStep(type, stepInfo.$shift())));}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - modify = stepInfo.$shift(); - $send(karmaDiceInfo, 'each', [], ($$6 = function(diceType, diceCount){var self = $$6.$$s || this; - - - - if (diceType == null) { - diceType = nil; - }; - - if (diceCount == null) { - diceCount = nil; - }; - return (stepTotal = $rb_plus(stepTotal, self.$rollStep(diceType, diceCount)));}, $$6.$$s = self, $$6.$$arity = 2, $$6)); - self.string = $rb_plus(self.string, $rb_plus(self.$getModifyText(modify), self.$getModifyText(diceModify))); - stepTotal = $rb_plus(stepTotal, $rb_plus(modify, diceModify)); - self.string = $rb_plus(self.string, "" + " > " + (stepTotal)); - output = "" + "ステップ" + (step) + " > " + (self.string); - if (targetNumber['$=='](0)) { - return output}; - self.string = $rb_plus(self.string, $rb_plus(" > ", self.$getSuccess(targetNumber, stepTotal))); - output = "" + "ステップ" + (step) + ">=" + (targetNumber) + " > " + (self.string); - return output; - }, $EarthDawn3_getStepResult$4.$$arity = 1); - - Opal.def(self, '$getModifyText', $EarthDawn3_getModifyText$7 = function $$getModifyText(modify) { - var self = this; - - - self.string = ""; - if (modify['$=='](0)) { - return self.string}; - if ($truthy($rb_gt(modify, 0))) { - self.string = $rb_plus(self.string, "+")}; - self.string = $rb_plus(self.string, modify.$to_s()); - return self.string; - }, $EarthDawn3_getModifyText$7.$$arity = 1); - - Opal.def(self, '$getBaseStepTable', $EarthDawn3_getBaseStepTable$8 = function $$getBaseStepTable() { - var self = this, stepTable = nil; - - - stepTable = [[1, [0, 0, 0, 0, 1, 0, -3]], [2, [0, 0, 0, 0, 1, 0, -2]], [3, [0, 0, 0, 0, 1, 0, -1]], [4, [0, 0, 0, 0, 1, 0, 0]], [5, [0, 0, 0, 1, 0, 0, 0]], [6, [0, 0, 1, 0, 0, 0, 0]], [7, [0, 1, 0, 0, 0, 0, 0]]]; - return stepTable; - }, $EarthDawn3_getBaseStepTable$8.$$arity = 0); - - Opal.def(self, '$getStepInfo', $EarthDawn3_getStepInfo$9 = function $$getStepInfo(step) { - var $$10, self = this, baseStepTable = nil, baseMaxStep = nil, baseStepInfo = nil, overStep = nil, stepRythm = nil, result = nil, loopCount = nil, index = nil, restStepInfo = nil; - - - baseStepTable = self.$getBaseStepTable(); - baseMaxStep = baseStepTable.$last().$first(); - if ($truthy($rb_le(step, baseMaxStep))) { - return self.$get_table_by_number(step, baseStepTable)}; - baseStepInfo = [0, 1, 0, 0, 0, 0, 0]; - overStep = $rb_minus($rb_minus(step, baseMaxStep), 1); - stepRythm = [[0, 0, 0, 0, 2, 0, 0], [0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 2, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0], [0, 0, 2, 0, 0, 0, 0], [0, 1, 1, 0, 0, 0, 0], [0, 2, 0, 0, 0, 0, 0]]; - result = [0, 0, 0, 0, 0, 0, 0]; - loopCount = $rb_divide(overStep, stepRythm.$size()).$floor(); - $send(loopCount, 'times', [], ($$10 = function(){var self = $$10.$$s || this; - - return self.$addStepToResult(result, baseStepInfo)}, $$10.$$s = self, $$10.$$arity = 0, $$10)); - index = overStep['$%'](stepRythm.$size()); - restStepInfo = stepRythm['$[]'](index); - self.$addStepToResult(result, restStepInfo); - return result; - }, $EarthDawn3_getStepInfo$9.$$arity = 1); - - Opal.def(self, '$addStepToResult', $EarthDawn3_addStepToResult$11 = function $$addStepToResult(result, step) { - var $$12, self = this; - - - $send(result.$size(), 'times', [], ($$12 = function(i){var self = $$12.$$s || this, $writer = nil; - - - - if (i == null) { - i = nil; - }; - $writer = [i, $rb_plus(result['$[]'](i), step['$[]'](i))]; - $send(result, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - return result; - }, $EarthDawn3_addStepToResult$11.$$arity = 2); - - Opal.def(self, '$getSuccess', $EarthDawn3_getSuccess$13 = function $$getSuccess(targetNumber, stepTotal) { - var $a, $b, self = this, successTable = nil, successInfo = nil, pathetic = nil, poor = nil, average = nil, good = nil, excelent = nil, extraordinary = nil; - - - if ($truthy(self.isFailed)) { - return "自動失敗"}; - successTable = self.$getSuccessTable(); - successInfo = self.$get_table_by_number(targetNumber, successTable); - $b = successInfo, $a = Opal.to_ary($b), (pathetic = ($a[0] == null ? nil : $a[0])), (poor = ($a[1] == null ? nil : $a[1])), (average = ($a[2] == null ? nil : $a[2])), (good = ($a[3] == null ? nil : $a[3])), (excelent = ($a[4] == null ? nil : $a[4])), (extraordinary = ($a[5] == null ? nil : $a[5])), $b; - if ($truthy($rb_ge(stepTotal, extraordinary))) { - return "Extraordinary(極上)"}; - if ($truthy($rb_ge(stepTotal, excelent))) { - return "Excelent(最高)"}; - if ($truthy($rb_ge(stepTotal, good))) { - return "Good(上出来)"}; - if ($truthy($rb_ge(stepTotal, average))) { - return "Average(そこそこ)"}; - if ($truthy($rb_ge(stepTotal, poor))) { - return "Poor(お粗末)"}; - if ($truthy($rb_ge(stepTotal, pathetic))) { - return "Pathetic(惨め)" - } else { - return nil - }; - }, $EarthDawn3_getSuccess$13.$$arity = 2); - - Opal.def(self, '$getSuccessTable', $EarthDawn3_getSuccessTable$14 = function $$getSuccessTable() { - var self = this, successTable = nil; - - - successTable = [[2, [0, 1, 2, 5, 7, 9]], [3, [0, 1, 3, 6, 8, 10]], [4, [0, 1, 4, 7, 10, 12]], [5, [1, 2, 5, 8, 11, 14]], [6, [1, 2, 6, 9, 13, 17]], [7, [1, 3, 7, 11, 15, 19]], [8, [1, 4, 8, 13, 16, 20]], [9, [1, 5, 9, 15, 18, 22]], [10, [1, 6, 10, 16, 20, 24]], [11, [1, 6, 11, 17, 21, 25]], [12, [1, 7, 12, 18, 23, 27]], [13, [1, 7, 13, 20, 25, 29]], [14, [1, 8, 14, 21, 26, 31]], [15, [1, 9, 15, 23, 27, 31]], [16, [1, 10, 16, 24, 28, 33]], [17, [1, 11, 17, 25, 30, 34]], [18, [1, 12, 18, 26, 31, 36]], [19, [1, 12, 19, 28, 33, 37]], [20, [1, 13, 20, 29, 34, 39]], [21, [1, 14, 21, 30, 36, 41]], [22, [1, 15, 22, 31, 37, 42]], [23, [1, 16, 23, 33, 38, 43]], [24, [1, 16, 24, 34, 39, 44]], [25, [1, 17, 25, 35, 41, 46]], [26, [1, 18, 26, 36, 42, 47]], [27, [1, 19, 27, 37, 43, 49]], [28, [1, 19, 28, 39, 45, 50]], [29, [1, 21, 29, 40, 46, 51]], [30, [1, 21, 30, 41, 47, 53]], [31, [1, 22, 31, 42, 48, 54]], [32, [1, 23, 32, 43, 49, 55]], [33, [1, 24, 33, 45, 51, 57]], [34, [1, 24, 34, 46, 52, 58]], [35, [1, 25, 35, 47, 53, 60]], [36, [1, 26, 36, 48, 54, 60]], [37, [1, 27, 37, 49, 56, 62]], [38, [1, 28, 38, 51, 57, 63]], [39, [1, 29, 39, 52, 58, 64]], [40, [1, 30, 40, 53, 59, 66]]]; - return successTable; - }, $EarthDawn3_getSuccessTable$14.$$arity = 0); - return (Opal.def(self, '$rollStep', $EarthDawn3_rollStep$15 = function $$rollStep(diceType, diceCount) { - var $$16, self = this, stepTotal = nil; - - - self.$debug("rollStep diceType, diceCount, @string", diceType, diceCount, self.string); - stepTotal = 0; - if ($truthy($rb_gt(diceCount, 0))) { - } else { - return stepTotal - }; - if ($truthy(self.string['$empty?']())) { - } else { - self.string = $rb_plus(self.string, "+") - }; - self.string = $rb_plus(self.string, "" + (diceCount) + "d" + (diceType) + "["); - self.$debug("rollStep @string", self.string); - $send(diceCount, 'times', [], ($$16 = function(i){var self = $$16.$$s || this, $a, $b, $c, dice_now = nil, dice_in = nil; - if (self.string == null) self.string = nil; - - - - if (i == null) { - i = nil; - }; - $b = self.$roll(1, diceType), $a = Opal.to_ary($b), (dice_now = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy(dice_now['$!='](1))) { - self.isFailed = false}; - dice_in = dice_now; - while (dice_now['$=='](diceType)) { - - $c = self.$roll(1, diceType), $b = Opal.to_ary($c), (dice_now = ($b[0] == null ? nil : $b[0])), $c; - dice_in = $rb_plus(dice_in, dice_now); - }; - stepTotal = $rb_plus(stepTotal, dice_in); - if ($truthy(i['$!='](0))) { - self.string = $rb_plus(self.string, ",")}; - return (self.string = $rb_plus(self.string, dice_in.$to_s()));}, $$16.$$s = self, $$16.$$arity = 1, $$16)); - self.string = $rb_plus(self.string, "]"); - return stepTotal; - }, $EarthDawn3_rollStep$15.$$arity = 2), nil) && 'rollStep'; - })($nesting[0], $$($nesting, 'EarthDawn'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/EarthDawn4.js b/src/assets/dicebot/EarthDawn4.js deleted file mode 100644 index 9d191b9dd..000000000 --- a/src/assets/dicebot/EarthDawn4.js +++ /dev/null @@ -1,496 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/EarthDawn"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$ed_step', '$getStepResult', '$=~', '$to_i', '$last_match', '$>', '$<', '$getStepTable', '$[]', '$-', '$===', '$+', '$debug', '$rollStep', '$!=', '$to_s', '$==', '$>=', '$empty?', '$times', '$roll']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'EarthDawn'); - - var $nesting = [self].concat($parent_nesting), $EarthDawn_initialize$1, $EarthDawn_rollDiceCommand$2, $EarthDawn_ed_step$3, $EarthDawn_getStepResult$4, $EarthDawn_getStepTable$5, $EarthDawn_rollStep$6; - - self.$$prototype.string = self.$$prototype.isFailed = nil; - - Opal.const_set($nesting[0], 'ID', "EarthDawn"); - Opal.const_set($nesting[0], 'NAME', "アースドーン"); - Opal.const_set($nesting[0], 'SORT_KEY', "ああすとおん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "ステップダイス (xEn+k)\n" + "ステップx、目標値n(省略可能)、カルマダイスk(D2-D20)でステップダイスをロールします。\n" + "振り足しも自動。\n" + "例)9E 10E8 10E+D12\n"); - self.$setPrefixes(["\\d+e.*"]); - - Opal.def(self, '$initialize', $EarthDawn_initialize$1 = function $$initialize() { - var $iter = $EarthDawn_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $EarthDawn_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $EarthDawn_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.sortType = 1); - }, $EarthDawn_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $EarthDawn_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this; - - return self.$ed_step(command) - }, $EarthDawn_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$ed_step', $EarthDawn_ed_step$3 = function $$ed_step(str) { - var self = this, output = nil; - - - output = self.$getStepResult(str); - return output; - }, $EarthDawn_ed_step$3.$$arity = 1); - - Opal.def(self, '$getStepResult', $EarthDawn_getStepResult$4 = function $$getStepResult(str) { - var self = this, stepTotal = nil, step = nil, targetNumber = nil, hasKarmaDice = nil, karmaDiceCount = nil, karmaDiceType = nil, stable = nil, nmod = nil, d20step = nil, d12step = nil, d10step = nil, d8step = nil, d6step = nil, d4step = nil, $case = nil, output = nil, excelentSuccessNumber = nil, superSuccessNumber = nil, goodSuccessNumber = nil, failedNumber = nil; - - - if ($truthy(/(\d+)E(\d+)?(\+)?(\d+)?(d\d+)?/i['$=~'](str))) { - } else { - return nil - }; - stepTotal = 0; - self.isFailed = true; - step = $$($nesting, 'Regexp').$last_match(1).$to_i(); - targetNumber = 0; - hasKarmaDice = false; - karmaDiceCount = 0; - karmaDiceType = 0; - if ($truthy($rb_gt(step, 40))) { - step = 40}; - if ($truthy($$($nesting, 'Regexp').$last_match(2))) { - - targetNumber = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($rb_gt(targetNumber, 43))) { - targetNumber = 42};}; - if ($truthy($$($nesting, 'Regexp').$last_match(3))) { - hasKarmaDice = $$($nesting, 'Regexp').$last_match(3).$to_i()}; - if ($truthy($$($nesting, 'Regexp').$last_match(4))) { - karmaDiceCount = $$($nesting, 'Regexp').$last_match(4).$to_i()}; - if ($truthy($$($nesting, 'Regexp').$last_match(5))) { - karmaDiceType = $$($nesting, 'Regexp').$last_match(5)}; - if ($truthy($rb_lt(targetNumber, 0))) { - return nil}; - stable = self.$getStepTable(); - nmod = stable['$[]'](0)['$[]']($rb_minus(step, 1)); - d20step = stable['$[]'](1)['$[]']($rb_minus(step, 1)); - d12step = stable['$[]'](2)['$[]']($rb_minus(step, 1)); - d10step = stable['$[]'](3)['$[]']($rb_minus(step, 1)); - d8step = stable['$[]'](4)['$[]']($rb_minus(step, 1)); - d6step = stable['$[]'](5)['$[]']($rb_minus(step, 1)); - d4step = stable['$[]'](6)['$[]']($rb_minus(step, 1)); - if ($truthy(hasKarmaDice)) { - $case = karmaDiceType; - if (/d20/i['$===']($case)) {d20step = $rb_plus(d20step, karmaDiceCount)} - else if (/d12/i['$===']($case)) {d12step = $rb_plus(d12step, karmaDiceCount)} - else if (/d10/i['$===']($case)) {d10step = $rb_plus(d10step, karmaDiceCount)} - else if (/d8/i['$===']($case)) {d8step = $rb_plus(d8step, karmaDiceCount)} - else if (/d6/i['$===']($case)) {d6step = $rb_plus(d6step, karmaDiceCount)} - else if (/d4/i['$===']($case)) {d4step = $rb_plus(d4step, karmaDiceCount)} - else {nmod = $rb_plus(nmod, karmaDiceCount)}}; - self.string = ""; - self.$debug("d20step, d12step, d10step, d8step, d6step, d4step", d20step, d12step, d10step, d8step, d6step, d4step); - stepTotal = $rb_plus(stepTotal, self.$rollStep(20, d20step)); - stepTotal = $rb_plus(stepTotal, self.$rollStep(12, d12step)); - stepTotal = $rb_plus(stepTotal, self.$rollStep(10, d10step)); - stepTotal = $rb_plus(stepTotal, self.$rollStep(8, d8step)); - stepTotal = $rb_plus(stepTotal, self.$rollStep(6, d6step)); - stepTotal = $rb_plus(stepTotal, self.$rollStep(4, d4step)); - if ($truthy($rb_gt(nmod, 0))) { - self.string = $rb_plus(self.string, "+")}; - if ($truthy(nmod['$!='](0))) { - - self.string = $rb_plus(self.string, nmod.$to_s()); - stepTotal = $rb_plus(stepTotal, nmod);}; - self.string = $rb_plus(self.string, "" + " > " + (stepTotal)); - output = "" + "ステップ" + (step) + " > " + (self.string); - if (targetNumber['$=='](0)) { - return output}; - self.string = $rb_plus(self.string, " > "); - excelentSuccessNumber = stable['$[]'](7)['$[]']($rb_minus(targetNumber, 1)); - superSuccessNumber = stable['$[]'](8)['$[]']($rb_minus(targetNumber, 1)); - goodSuccessNumber = stable['$[]'](9)['$[]']($rb_minus(targetNumber, 1)); - failedNumber = stable['$[]'](11)['$[]']($rb_minus(targetNumber, 1)); - if ($truthy(self.isFailed)) { - self.string = $rb_plus(self.string, "自動失敗") - } else if ($truthy($rb_ge(stepTotal, excelentSuccessNumber))) { - self.string = $rb_plus(self.string, "最良成功") - } else if ($truthy($rb_ge(stepTotal, superSuccessNumber))) { - self.string = $rb_plus(self.string, "優成功") - } else if ($truthy($rb_ge(stepTotal, goodSuccessNumber))) { - self.string = $rb_plus(self.string, "良成功") - } else if ($truthy($rb_ge(stepTotal, targetNumber))) { - self.string = $rb_plus(self.string, "成功") - } else if ($truthy($rb_lt(stepTotal, failedNumber))) { - self.string = $rb_plus(self.string, "大失敗") - } else { - self.string = $rb_plus(self.string, "失敗") - }; - output = "" + "ステップ" + (step) + ">=" + (targetNumber) + " > " + (self.string); - return output; - }, $EarthDawn_getStepResult$4.$$arity = 1); - - Opal.def(self, '$getStepTable', $EarthDawn_getStepTable$5 = function $$getStepTable() { - var self = this, mod = nil, d20 = nil, d12 = nil, d10 = nil, d8 = nil, d6 = nil, d4 = nil, exsuc = nil, ssuc = nil, gsuc = nil, nsuc = nil, fsuc = nil, stable = nil; - - - mod = [-2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - d20 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - d12 = [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]; - d10 = [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 3, 2, 1, 1, 1, 2, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 1]; - d8 = [0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0]; - d6 = [0, 0, 0, 1, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, 0, 0, 0]; - d4 = [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - exsuc = [6, 8, 10, 12, 14, 17, 19, 20, 22, 24, 25, 27, 29, 32, 33, 35, 37, 38, 39, 41, 42, 44, 45, 47, 48, 49, 51, 52, 54, 55, 56, 58, 59, 60, 62, 64, 65, 67, 68, 70, 71, 72]; - ssuc = [4, 6, 8, 10, 11, 13, 15, 16, 18, 19, 21, 22, 24, 26, 27, 29, 30, 32, 33, 34, 35, 37, 38, 40, 41, 42, 43, 45, 46, 47, 48, 49, 51, 52, 53, 55, 56, 58, 59, 60, 61, 62]; - gsuc = [2, 4, 6, 7, 9, 10, 12, 13, 14, 15, 17, 18, 20, 21, 22, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, 50, 51, 52, 53, 54]; - nsuc = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42]; - fsuc = [0, 1, 1, 1, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 11, 12, 13, 13, 14, 15, 16, 17, 18, 18, 18, 20, 21, 22, 23, 23, 24, 25, 26, 26, 27, 28, 29, 30]; - stable = [mod, d20, d12, d10, d8, d6, d4, exsuc, ssuc, gsuc, nsuc, fsuc]; - return stable; - }, $EarthDawn_getStepTable$5.$$arity = 0); - return (Opal.def(self, '$rollStep', $EarthDawn_rollStep$6 = function $$rollStep(diceType, diceCount) { - var $$7, self = this, stepTotal = nil; - - - self.$debug("rollStep diceType, diceCount, @string", diceType, diceCount, self.string); - stepTotal = 0; - if ($truthy($rb_gt(diceCount, 0))) { - } else { - return stepTotal - }; - if ($truthy(self.string['$empty?']())) { - } else { - self.string = $rb_plus(self.string, "+") - }; - self.string = $rb_plus(self.string, "" + (diceCount) + "d" + (diceType) + "["); - self.$debug("rollStep @string", self.string); - $send(diceCount, 'times', [], ($$7 = function(i){var self = $$7.$$s || this, $a, $b, $c, dice_now = nil, dice_in = nil; - if (self.string == null) self.string = nil; - - - - if (i == null) { - i = nil; - }; - $b = self.$roll(1, diceType), $a = Opal.to_ary($b), (dice_now = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy(dice_now['$!='](1))) { - self.isFailed = false}; - dice_in = dice_now; - while (dice_now['$=='](diceType)) { - - $c = self.$roll(1, diceType), $b = Opal.to_ary($c), (dice_now = ($b[0] == null ? nil : $b[0])), $c; - dice_in = $rb_plus(dice_in, dice_now); - }; - stepTotal = $rb_plus(stepTotal, dice_in); - if ($truthy(i['$!='](0))) { - self.string = $rb_plus(self.string, ",")}; - return (self.string = $rb_plus(self.string, dice_in.$to_s()));}, $$7.$$s = self, $$7.$$arity = 1, $$7)); - self.string = $rb_plus(self.string, "]"); - return stepTotal; - }, $EarthDawn_rollStep$6.$$arity = 2), nil) && 'rollStep'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$setPrefixes', '$ed_step', '$getStepResult', '$getStepResultInfos', '$nil?', '$==', '$getSuccess', '$!', '$empty?', '$debug', '$getStepResultInfo', '$<<', '$join', '$inject', '$+', '$>', '$size', '$=~', '$to_i', '$last_match', '$<', '$getStepInfo', '$each', '$rollStep', '$shift', '$getModifyText', '$to_s', '$getBaseStepTable', '$first', '$last', '$<=', '$get_table_by_number', '$-', '$floor', '$/', '$times', '$addStepToResult', '$%', '$[]', '$[]=', '$roll', '$!=']); - - self.$require("diceBot/EarthDawn"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'EarthDawn4'); - - var $nesting = [self].concat($parent_nesting), $EarthDawn4_initialize$1, $EarthDawn4_rollDiceCommand$2, $EarthDawn4_ed_step$3, $EarthDawn4_getStepResult$4, $EarthDawn4_getStepResultInfos$5, $EarthDawn4_getStepResultInfo$7, $EarthDawn4_getModifyText$9, $EarthDawn4_getBaseStepTable$10, $EarthDawn4_getStepInfo$11, $EarthDawn4_addStepToResult$13, $EarthDawn4_getSuccess$15, $EarthDawn4_rollStep$16; - - self.$$prototype.calcText = self.$$prototype.isFailed = nil; - - Opal.const_set($nesting[0], 'ID', "EarthDawn4"); - Opal.const_set($nesting[0], 'NAME', "アースドーン4版"); - Opal.const_set($nesting[0], 'SORT_KEY', "ああすとおん4"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "ステップダイス (xEnK)\n" + "ステップx、目標値n(省略可能)でステップダイスをロール。\n" + "カルマダイス使用時は末尾にKを追加(省略可能)\n" + "例)ステップ10:10E\n" + "  ステップ10、目標値8:10E8\n" + "  ステップ10、目標値8、カルマダイス:10E8K\n"); - self.$setPrefixes(["\\d+e.*"]); - - Opal.def(self, '$initialize', $EarthDawn4_initialize$1 = function $$initialize() { - var $iter = $EarthDawn4_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $EarthDawn4_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $EarthDawn4_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.calcText = ""); - }, $EarthDawn4_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $EarthDawn4_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this; - - return self.$ed_step(command) - }, $EarthDawn4_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$ed_step', $EarthDawn4_ed_step$3 = function $$ed_step(str) { - var self = this, output = nil; - - - output = self.$getStepResult(str); - return output; - }, $EarthDawn4_ed_step$3.$$arity = 1); - - Opal.def(self, '$getStepResult', $EarthDawn4_getStepResult$4 = function $$getStepResult(str) { - var $a, $b, self = this, stepText = nil, calcText = nil, stepTotal = nil, targetNumber = nil, output = nil, successText = nil; - - - $b = self.$getStepResultInfos(str), $a = Opal.to_ary($b), (stepText = ($a[0] == null ? nil : $a[0])), (calcText = ($a[1] == null ? nil : $a[1])), (stepTotal = ($a[2] == null ? nil : $a[2])), (targetNumber = ($a[3] == null ? nil : $a[3])), $b; - if ($truthy(stepText['$nil?']())) { - return nil}; - if (targetNumber['$=='](0)) { - - output = "" + (stepText) + " > " + (calcText) + " > " + (stepTotal); - return output;}; - successText = self.$getSuccess(targetNumber, stepTotal); - output = "" + (stepText) + ">=" + (targetNumber) + " > " + (calcText) + " > " + (stepTotal) + " > " + (successText); - return output; - }, $EarthDawn4_getStepResult$4.$$arity = 1); - - Opal.def(self, '$getStepResultInfos', $EarthDawn4_getStepResultInfos$5 = function $$getStepResultInfos(str) { - var $a, $b, $c, $$6, self = this, steps = nil, calcs = nil, totals = nil, target = nil, step = nil, calc = nil, total = nil, value = nil, nextText = nil, stepText = nil, calcText = nil, stepTotal = nil; - - - steps = []; - calcs = []; - totals = []; - target = 0; - while ($truthy(($truthy($b = str['$nil?']()['$!']()) ? str['$empty?']()['$!']() : $b))) { - - self.$debug("=====>!! str", str); - $c = self.$getStepResultInfo(str), $b = Opal.to_ary($c), (step = ($b[0] == null ? nil : $b[0])), (calc = ($b[1] == null ? nil : $b[1])), (total = ($b[2] == null ? nil : $b[2])), (value = ($b[3] == null ? nil : $b[3])), (nextText = ($b[4] == null ? nil : $b[4])), $c; - self.$debug("=====> step", step); - if ($truthy(step['$nil?']())) { - return nil}; - steps['$<<'](step); - calcs['$<<'](calc); - totals['$<<'](total); - if (value['$=='](0)) { - } else { - target = value - }; - self.$debug("=====> nextText", nextText); - if (nextText['$=='](str)) { - break;}; - str = nextText; - }; - stepText = steps.$join("+"); - calcText = calcs.$join(")+("); - stepTotal = $send(totals, 'inject', [], ($$6 = function(sum, i){var self = $$6.$$s || this; - - - - if (sum == null) { - sum = nil; - }; - - if (i == null) { - i = nil; - }; - return $rb_plus(sum, i);}, $$6.$$s = self, $$6.$$arity = 2, $$6)); - if ($truthy($rb_gt(calcs.$size(), 1))) { - calcText = $rb_plus($rb_plus("(", calcText), ")")}; - if ($truthy($rb_gt(totals.$size(), 1))) { - calcText = $rb_plus(calcText, "" + " > (" + (totals.$join("+")) + ")")}; - return [stepText, calcText, stepTotal, target]; - }, $EarthDawn4_getStepResultInfos$5.$$arity = 1); - - Opal.def(self, '$getStepResultInfo', $EarthDawn4_getStepResultInfo$7 = function $$getStepResultInfo(str) { - var $$8, self = this, stepTotal = nil, step = nil, targetNumber = nil, hasKarmaDice = nil, diceModify = nil, nextText = nil, stepInfo = nil, diceTypes = nil, modify = nil, stepText = nil; - - - if ($truthy(/^(\d+)E(\d+)?(K)?(\+\d+$)?(\+(.*))?/i['$=~'](str))) { - } else { - return nil - }; - stepTotal = 0; - self.isFailed = true; - step = $$($nesting, 'Regexp').$last_match(1).$to_i(); - targetNumber = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($rb_lt(targetNumber, 0))) { - return nil}; - hasKarmaDice = $$($nesting, 'Regexp').$last_match(3)['$nil?']()['$!'](); - diceModify = $$($nesting, 'Regexp').$last_match(4).$to_i(); - nextText = $$($nesting, 'Regexp').$last_match(6); - stepInfo = self.$getStepInfo(step); - self.$debug("stepInfo", stepInfo); - self.calcText = ""; - diceTypes = [20, 12, 10, 8, 6, 4]; - $send(diceTypes, 'each', [], ($$8 = function(type){var self = $$8.$$s || this; - - - - if (type == null) { - type = nil; - }; - return (stepTotal = $rb_plus(stepTotal, self.$rollStep(type, stepInfo.$shift())));}, $$8.$$s = self, $$8.$$arity = 1, $$8)); - modify = stepInfo.$shift(); - if ($truthy(hasKarmaDice)) { - stepTotal = $rb_plus(stepTotal, self.$rollStep(6, 1))}; - self.calcText = $rb_plus(self.calcText, $rb_plus(self.$getModifyText(modify), self.$getModifyText(diceModify))); - stepTotal = $rb_plus(stepTotal, $rb_plus(modify, diceModify)); - stepText = "" + "ステップ" + (step); - return [stepText, self.calcText, stepTotal, targetNumber, nextText]; - }, $EarthDawn4_getStepResultInfo$7.$$arity = 1); - - Opal.def(self, '$getModifyText', $EarthDawn4_getModifyText$9 = function $$getModifyText(modify) { - var self = this, string = nil; - - - string = ""; - if (modify['$=='](0)) { - return string}; - if ($truthy($rb_gt(modify, 0))) { - string = $rb_plus(string, "+")}; - string = $rb_plus(string, modify.$to_s()); - return string; - }, $EarthDawn4_getModifyText$9.$$arity = 1); - - Opal.def(self, '$getBaseStepTable', $EarthDawn4_getBaseStepTable$10 = function $$getBaseStepTable() { - var self = this, stepTable = nil; - - - stepTable = [[1, [0, 0, 0, 0, 0, 1, -2]], [2, [0, 0, 0, 0, 0, 1, -1]], [3, [0, 0, 0, 0, 0, 1, 0]], [4, [0, 0, 0, 0, 1, 0, 0]], [5, [0, 0, 0, 1, 0, 0, 0]], [6, [0, 0, 1, 0, 0, 0, 0]], [7, [0, 1, 0, 0, 0, 0, 0]]]; - return stepTable; - }, $EarthDawn4_getBaseStepTable$10.$$arity = 0); - - Opal.def(self, '$getStepInfo', $EarthDawn4_getStepInfo$11 = function $$getStepInfo(step) { - var $$12, self = this, baseStepTable = nil, baseMaxStep = nil, overBounusStep = nil, overStep = nil, stepRythm = nil, result = nil, loopCount = nil, index = nil, restStepInfo = nil; - - - baseStepTable = self.$getBaseStepTable(); - baseMaxStep = baseStepTable.$last().$first(); - if ($truthy($rb_le(step, baseMaxStep))) { - return self.$get_table_by_number(step, baseStepTable)}; - overBounusStep = [1, 0, 0, 0, 0, 0, 0]; - overStep = $rb_minus($rb_minus(step, baseMaxStep), 1); - stepRythm = [[0, 0, 0, 0, 2, 0, 0], [0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 2, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0], [0, 0, 2, 0, 0, 0, 0], [0, 1, 1, 0, 0, 0, 0], [0, 2, 0, 0, 0, 0, 0], [0, 1, 0, 0, 2, 0, 0], [0, 1, 0, 1, 1, 0, 0], [0, 1, 0, 2, 0, 0, 0], [0, 1, 1, 1, 0, 0, 0]]; - result = [0, 0, 0, 0, 0, 0, 0]; - loopCount = $rb_divide(overStep, stepRythm.$size()).$floor(); - $send(loopCount, 'times', [], ($$12 = function(){var self = $$12.$$s || this; - - return self.$addStepToResult(result, overBounusStep)}, $$12.$$s = self, $$12.$$arity = 0, $$12)); - index = overStep['$%'](stepRythm.$size()); - restStepInfo = stepRythm['$[]'](index); - self.$addStepToResult(result, restStepInfo); - return result; - }, $EarthDawn4_getStepInfo$11.$$arity = 1); - - Opal.def(self, '$addStepToResult', $EarthDawn4_addStepToResult$13 = function $$addStepToResult(result, step) { - var $$14, self = this; - - - $send(result.$size(), 'times', [], ($$14 = function(i){var self = $$14.$$s || this, $writer = nil; - - - - if (i == null) { - i = nil; - }; - $writer = [i, $rb_plus(result['$[]'](i), step['$[]'](i))]; - $send(result, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, $$14.$$s = self, $$14.$$arity = 1, $$14)); - return result; - }, $EarthDawn4_addStepToResult$13.$$arity = 2); - - Opal.def(self, '$getSuccess', $EarthDawn4_getSuccess$15 = function $$getSuccess(targetNumber, stepTotal) { - var self = this, diff = nil, level = nil; - - - if ($truthy(self.isFailed)) { - return "自動失敗"}; - diff = $rb_minus(stepTotal, targetNumber); - self.$debug("diff", diff); - if ($truthy($rb_lt(diff, 0))) { - return "失敗"}; - level = $rb_plus($rb_divide(diff, 5).$floor(), 1); - return "" + "成功 レベル:" + (level); - }, $EarthDawn4_getSuccess$15.$$arity = 2); - return (Opal.def(self, '$rollStep', $EarthDawn4_rollStep$16 = function $$rollStep(diceType, diceCount) { - var $$17, self = this, stepTotal = nil; - - - self.$debug("rollStep diceType, diceCount, @calcText", diceType, diceCount, self.calcText); - stepTotal = 0; - if ($truthy($rb_gt(diceCount, 0))) { - } else { - return stepTotal - }; - if ($truthy(self.calcText['$empty?']())) { - } else { - self.calcText = $rb_plus(self.calcText, "+") - }; - self.calcText = $rb_plus(self.calcText, "" + (diceCount) + "d" + (diceType) + "["); - self.$debug("rollStep string", self.calcText); - $send(diceCount, 'times', [], ($$17 = function(i){var self = $$17.$$s || this, $a, $b, $c, dice_now = nil, dice_in = nil; - if (self.calcText == null) self.calcText = nil; - - - - if (i == null) { - i = nil; - }; - $b = self.$roll(1, diceType), $a = Opal.to_ary($b), (dice_now = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy(dice_now['$!='](1))) { - self.isFailed = false}; - dice_in = dice_now; - while (dice_now['$=='](diceType)) { - - $c = self.$roll(1, diceType), $b = Opal.to_ary($c), (dice_now = ($b[0] == null ? nil : $b[0])), $c; - dice_in = $rb_plus(dice_in, dice_now); - }; - stepTotal = $rb_plus(stepTotal, dice_in); - if ($truthy(i['$!='](0))) { - self.calcText = $rb_plus(self.calcText, ",")}; - return (self.calcText = $rb_plus(self.calcText, dice_in.$to_s()));}, $$17.$$s = self, $$17.$$arity = 1, $$17)); - self.calcText = $rb_plus(self.calcText, "]"); - return stepTotal; - }, $EarthDawn4_rollStep$16.$$arity = 2), nil) && 'rollStep'; - })($nesting[0], $$($nesting, 'EarthDawn'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/EclipsePhase.js b/src/assets/dicebot/EclipsePhase.js deleted file mode 100644 index 45c7bd2e5..000000000 --- a/src/assets/dicebot/EclipsePhase.js +++ /dev/null @@ -1,64 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$%', '$floor', '$/', '$<=', '$>=', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'EclipsePhase'); - - var $nesting = [self].concat($parent_nesting), $EclipsePhase_check_1D100$1; - - - Opal.const_set($nesting[0], 'ID', "EclipsePhase"); - Opal.const_set($nesting[0], 'NAME', "エクリプス・フェイズ"); - Opal.const_set($nesting[0], 'SORT_KEY', "えくりふすふえいす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "1D100<=m 方式の判定で成否、クリティカル・ファンブルを自動判定"); - return (Opal.def(self, '$check_1D100', $EclipsePhase_check_1D100$1 = function $$check_1D100(total, _dice_total, cmp_op, target) { - var self = this, diceValue = nil, dice_ten_place = nil, dice_one_place = nil, diff_threshold = nil; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return "" - }; - diceValue = total['$%'](100); - dice_ten_place = $rb_divide(diceValue, 10).$floor(); - dice_one_place = diceValue['$%'](10); - if (dice_ten_place['$=='](dice_one_place)) { - - if (diceValue['$=='](99)) { - return " > 決定的失敗"}; - if (diceValue['$=='](0)) { - return " > 00 > 決定的成功"}; - if ($truthy($rb_le(total, target))) { - return " > 決定的成功"}; - return " > 決定的失敗";}; - diff_threshold = 30; - if ($truthy($rb_le(total, target))) { - if ($truthy($rb_ge(total, diff_threshold))) { - return " > エクセレント" - } else { - return " > 成功" - } - } else if ($truthy($rb_ge($rb_minus(total, target), diff_threshold))) { - return " > シビア" - } else { - return " > 失敗" - }; - }, $EclipsePhase_check_1D100$1.$$arity = 4), nil) && 'check_1D100'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Elric.js b/src/assets/dicebot/Elric.js deleted file mode 100644 index 0d9db9aab..000000000 --- a/src/assets/dicebot/Elric.js +++ /dev/null @@ -1,54 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$<=', '$>=', '$+', '$/', '$<']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Elric'); - - var $nesting = [self].concat($parent_nesting), $Elric_check_1D100$1; - - - Opal.const_set($nesting[0], 'ID', "Elric"); - Opal.const_set($nesting[0], 'NAME', "エルリック!"); - Opal.const_set($nesting[0], 'SORT_KEY', "えるりつく"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "貫通、クリティカル、ファンブルの自動判定を行います。\n"); - return (Opal.def(self, '$check_1D100', $Elric_check_1D100$1 = function $$check_1D100(total, _dice_total, cmp_op, target) { - var $a, self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return "" - }; - if ($truthy($rb_le(total, 1))) { - return " > 貫通"}; - if ($truthy($rb_ge(total, 100))) { - return " > 致命的失敗"}; - if ($truthy($rb_le(total, $rb_plus($rb_divide(target, 5), 0.9)))) { - return " > 決定的成功"}; - if ($truthy($rb_le(total, target))) { - return " > 成功"}; - if ($truthy(($truthy($a = $rb_ge(total, 99)) ? $rb_lt(target, 100) : $a))) { - return " > 致命的失敗"}; - return " > 失敗"; - }, $Elric_check_1D100$1.$$arity = 4), nil) && 'check_1D100'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Elysion.js b/src/assets/dicebot/Elysion.js deleted file mode 100644 index ed1f8e7c0..000000000 --- a/src/assets/dicebot/Elysion.js +++ /dev/null @@ -1,569 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$debug', '$===', '$last_match', '$check', '$getDateBothResult', '$to_i', '$getDateResult', '$getDateValue', '$checkAnyCommand', '$empty?', '$getTableCommandResult', '$upcase', '$getClassRoomBreakTable', '$getSchoolStoreBrakeTable', '$getClubRoomBrakeTable', '$getStudentCouncilBrakeTable', '$getDormitoryBrakeTable', '$getLibraryBrakeTable', '$getRoofBrakeTable', '$getLaboratoryBrakeTable', '$getPoolBrakeTable', '$getInnerCourtBrakeTable', '$getShoppingAvenueBrakeTable', '$getDevastationBrakeTable', '$getGateBrakeTable', '$getBattleFieldTable', '$getFatalWoundsTable', '$getFumbleTable', '$getRandomNpcSchoolLife', '$getRandomNpcOther', '$getRandomNpcDownClassmen', '$getRandomNpcUpperClassmen', '$getUsuallyEncount', '$getBossEncount', '$getValue', '$roll', '$+', '$getValueString', '$==', '$getSpecialResult', '$getCheckResult', '$nil?', '$>', '$<', '$getSuccessRank', '$getSuccessResult', '$>=', '$ceil', '$/', '$-', '$getCriticalResult', '$getFambleResultText', '$*', '$getDateTableByType', '$get_table_by_number', '$changePcName', '$getDateTable', '$getFrindDateTable', '$getOnewayDateTable', '$getMidnightDateTable', '$gsub', '$to_s', '$getBreakTable', '$[]', '$getD6Table', '$getRandomNpc', '$get_table_by_d66_swap', '$getEncountTableResult', '$last', '$freeze', '$setPrefixes', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Elysion'); - - var $nesting = [self].concat($parent_nesting), $Elysion_initialize$1, $Elysion_isGetOriginalMessage$2, $Elysion_rollDiceCommand$3, $Elysion_checkAnyCommand$4, $Elysion_check$5, $Elysion_getValue$6, $Elysion_getValueString$7, $Elysion_getCheckResult$8, $Elysion_getSuccessResult$9, $Elysion_getSuccessRank$10, $Elysion_getSpecialResult$11, $Elysion_getCriticalResult$12, $Elysion_getFambleResultText$13, $Elysion_getDateBothResult$14, $Elysion_getDateResult$15, $Elysion_getDateTableByType$16, $Elysion_getDateTable$17, $Elysion_getFrindDateTable$18, $Elysion_getOnewayDateTable$19, $Elysion_getMidnightDateTable$20, $Elysion_changePcName$21, $Elysion_getDateValue$23, $Elysion_getClassRoomBreakTable$24, $Elysion_getSchoolStoreBrakeTable$25, $Elysion_getClubRoomBrakeTable$26, $Elysion_getStudentCouncilBrakeTable$27, $Elysion_getDormitoryBrakeTable$28, $Elysion_getLibraryBrakeTable$29, $Elysion_getRoofBrakeTable$30, $Elysion_getLaboratoryBrakeTable$31, $Elysion_getPoolBrakeTable$32, $Elysion_getInnerCourtBrakeTable$33, $Elysion_getShoppingAvenueBrakeTable$34, $Elysion_getDevastationBrakeTable$35, $Elysion_getGateBrakeTable$36, $Elysion_getBreakTable$37, $Elysion_getD6Table$38, $Elysion_getBattleFieldTable$39, $Elysion_getFatalWoundsTable$40, $Elysion_getFumbleTable$41, $Elysion_getRandomNpcSchoolLife$42, $Elysion_getRandomNpcOther$43, $Elysion_getRandomNpcDownClassmen$44, $Elysion_getRandomNpcUpperClassmen$45, $Elysion_getRandomNpc$46, $Elysion_getUsuallyEncount$47, $Elysion_getBossEncount$48, $Elysion_getEncountTableResult$49; - - - Opal.const_set($nesting[0], 'ID', "Elysion"); - Opal.const_set($nesting[0], 'NAME', "エリュシオン"); - Opal.const_set($nesting[0], 'SORT_KEY', "えりゆしおん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定(ELn+m)\n" + " 能力値 n 、既存の達成値 m(アシストの場合)\n" + "例)EL3 :能力値3で判定。\n" + "  EL5+10:能力値5、達成値が10の状態にアシストで判定。\n" + "・ファンブル表 FT\n" + "・戦場表 BFT\n" + "・致命傷表 FWT\n" + "・陰謀表 GIT\n" + "・新初期アイテム決定表 NA\n" + "・授業ハプニング表 JH\n" + "・日常遭遇表 NJ1~NJ11/ボスキャラクター遭遇表 BS1~BS11\n" + "ファーストオーディション\n" + "・ユニット名決定表1A UT1/ユニット名決定表2A UT3\n" + "・ユニット名決定表1B UT2/ユニット名決定表2B UT4\n" + "・音楽ジャンル決定表A OJ1/・音楽ジャンル決定表B OJ2\n" + "ライトオブカオス\n" + "・ニュートラル表 NT/・釣り人表 IT\n" + "・ロウ表 HT/・カオス表 KT\n" + "・休憩表(〜BT)\n" + " 教室 RBT/購買 SBT/部室 BBT/生徒会室 CBT/学生寮 DBT/図書館 IBT/屋上 FBT/研究室 LBT/プール PBT/中庭 NBT/商店街 ABT/廃墟 VBT/ゲート GBT/温泉 HBT/修学旅行 TBT/お祭り室 EBT/潜入調査 UBT\n" + " ・ランダムNPC表(〜RT)\n" + " 学生生活関連NPC表 SRT/その他NPC表 ORT/学生図鑑 下級生表 DRT/学生図鑑 上級生表 URT\n" + "・デート表(DATE)/友達デート表(FDATE)/片思いデート表(ODATE)/真夜中デート表(MDATE)\n" + " デート表のためにD6を振ります。\n" + " DATE14 のようにコマンドの後に数値を入れると、その項目を参照します。\n" + "・デート表(DATE[PC名1,PC名2])\n" + " 1コマンドでデート判定を行い、デート表の結果を表示します。\n" + "・D66ダイスあり\n"); - - Opal.def(self, '$initialize', $Elysion_initialize$1 = function $$initialize() { - var $iter = $Elysion_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Elysion_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Elysion_initialize$1, false), $zuper, $iter); - return (self.d66Type = 2); - }, $Elysion_initialize$1.$$arity = 0); - - Opal.def(self, '$isGetOriginalMessage', $Elysion_isGetOriginalMessage$2 = function $$isGetOriginalMessage() { - var self = this; - - return true - }, $Elysion_isGetOriginalMessage$2.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Elysion_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var self = this, result = nil, $case = nil, base = nil, modify = nil, type = nil, pc1 = nil, pc2 = nil, number = nil; - - - self.$debug("rollDiceCommand command", command); - result = ""; - $case = command; - if (/^EL(\d*)(\+\d+)?/i['$===']($case)) { - base = $$($nesting, 'Regexp').$last_match(1); - modify = $$($nesting, 'Regexp').$last_match(2); - result = self.$check(base, modify);} - else if (/^(F|O|M)?DATE\[(.*),(.*)\]/i['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1); - pc1 = $$($nesting, 'Regexp').$last_match(2); - pc2 = $$($nesting, 'Regexp').$last_match(3); - result = self.$getDateBothResult(type, pc1, pc2);} - else if (/^(F|O|M)?DATE(\d\d)(\[(.*),(.*)\])?/i['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1); - number = $$($nesting, 'Regexp').$last_match(2).$to_i(); - pc1 = $$($nesting, 'Regexp').$last_match(4); - pc2 = $$($nesting, 'Regexp').$last_match(5); - result = self.$getDateResult(type, number, pc1, pc2);} - else if (/^(F|O|M)?DATE/i['$===']($case)) {result = self.$getDateValue()} - else { - result = self.$checkAnyCommand(command); - if ($truthy(result['$empty?']())) { - return self.$getTableCommandResult(command, $$($nesting, 'TABLES'))};}; - if ($truthy(result['$empty?']())) { - return ""}; - return "" + (command) + " > " + (result); - }, $Elysion_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$checkAnyCommand', $Elysion_checkAnyCommand$4 = function $$checkAnyCommand(command) { - var self = this, result = nil, $case = nil, level = nil; - - - result = (function() {$case = command.$upcase(); - if ("RBT"['$===']($case)) {return self.$getClassRoomBreakTable()} - else if ("SBT"['$===']($case)) {return self.$getSchoolStoreBrakeTable()} - else if ("BBT"['$===']($case)) {return self.$getClubRoomBrakeTable()} - else if ("CBT"['$===']($case)) {return self.$getStudentCouncilBrakeTable()} - else if ("DBT"['$===']($case)) {return self.$getDormitoryBrakeTable()} - else if ("IBT"['$===']($case)) {return self.$getLibraryBrakeTable()} - else if ("FBT"['$===']($case)) {return self.$getRoofBrakeTable()} - else if ("LBT"['$===']($case)) {return self.$getLaboratoryBrakeTable()} - else if ("PBT"['$===']($case)) {return self.$getPoolBrakeTable()} - else if ("NBT"['$===']($case)) {return self.$getInnerCourtBrakeTable()} - else if ("ABT"['$===']($case)) {return self.$getShoppingAvenueBrakeTable()} - else if ("VBT"['$===']($case)) {return self.$getDevastationBrakeTable()} - else if ("GBT"['$===']($case)) {return self.$getGateBrakeTable()} - else if ("BFT"['$===']($case)) {return self.$getBattleFieldTable()} - else if ("FWT"['$===']($case)) {return self.$getFatalWoundsTable()} - else if ("FT"['$===']($case)) {return self.$getFumbleTable()} - else if ("SRT"['$===']($case)) {return self.$getRandomNpcSchoolLife()} - else if ("ORT"['$===']($case)) {return self.$getRandomNpcOther()} - else if ("DRT"['$===']($case)) {return self.$getRandomNpcDownClassmen()} - else if ("URT"['$===']($case)) {return self.$getRandomNpcUpperClassmen()} - else if (/^NJ(\d+)$/i['$===']($case)) { - level = $$($nesting, 'Regexp').$last_match(1).$to_i(); - return self.$getUsuallyEncount(level);} - else if (/^BS(\d+)$/i['$===']($case)) { - level = $$($nesting, 'Regexp').$last_match(1).$to_i(); - return self.$getBossEncount(level);} - else {return ""}})(); - return result; - }, $Elysion_checkAnyCommand$4.$$arity = 1); - - Opal.def(self, '$check', $Elysion_check$5 = function $$check(base, modify) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, diceTotal = nil, addTotal = nil, total = nil, result = nil; - - - base = self.$getValue(base); - modify = self.$getValue(modify); - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - diceTotal = $rb_plus(dice1, dice2); - addTotal = $rb_plus(base, modify); - total = $rb_plus(diceTotal, addTotal); - result = ""; - result = $rb_plus(result, "" + "(2D6" + (self.$getValueString(base)) + (self.$getValueString(modify)) + ")"); - result = $rb_plus(result, "" + " > " + (diceTotal) + "[" + (dice1) + "," + (dice2) + "]" + (self.$getValueString(addTotal)) + " > " + (total)); - if (dice1['$=='](dice2)) { - - result = $rb_plus(result, self.$getSpecialResult(dice1, total)); - return result;}; - result = $rb_plus(result, self.$getCheckResult(total)); - return result; - }, $Elysion_check$5.$$arity = 2); - - Opal.def(self, '$getValue', $Elysion_getValue$6 = function $$getValue(string) { - var self = this; - - - if ($truthy(string['$nil?']())) { - return 0}; - return string.$to_i(); - }, $Elysion_getValue$6.$$arity = 1); - - Opal.def(self, '$getValueString', $Elysion_getValueString$7 = function $$getValueString(value) { - var self = this; - - - if ($truthy($rb_gt(value, 0))) { - return "" + "+" + (value)}; - if ($truthy($rb_lt(value, 0))) { - return "" + "-" + (value)}; - return ""; - }, $Elysion_getValueString$7.$$arity = 1); - - Opal.def(self, '$getCheckResult', $Elysion_getCheckResult$8 = function $$getCheckResult(total) { - var self = this, success = nil; - - - success = self.$getSuccessRank(total); - if (success['$=='](0)) { - return " > 失敗"}; - return self.$getSuccessResult(success); - }, $Elysion_getCheckResult$8.$$arity = 1); - - Opal.def(self, '$getSuccessResult', $Elysion_getSuccessResult$9 = function $$getSuccessResult(success) { - var self = this, result = nil; - - - result = "" + " > 成功度" + (success); - if ($truthy($rb_ge(success, $$($nesting, 'SUCCESS_MAX')))) { - result = $rb_plus(result, " > 大成功 《アウル》2点獲得")}; - return result; - }, $Elysion_getSuccessResult$9.$$arity = 1); - Opal.const_set($nesting[0], 'SUCCESS_MAX', 5); - - Opal.def(self, '$getSuccessRank', $Elysion_getSuccessRank$10 = function $$getSuccessRank(total) { - var self = this, success = nil; - - - success = $rb_divide($rb_minus(total, 9), 5.0).$ceil(); - if ($truthy($rb_lt(success, 0))) { - success = 0}; - if ($truthy($rb_gt(success, $$($nesting, 'SUCCESS_MAX')))) { - success = $$($nesting, 'SUCCESS_MAX')}; - return success; - }, $Elysion_getSuccessRank$10.$$arity = 1); - - Opal.def(self, '$getSpecialResult', $Elysion_getSpecialResult$11 = function $$getSpecialResult(number, total) { - var self = this; - - - self.$debug("getSpecialResult", number); - if (number['$=='](6)) { - return self.$getCriticalResult()}; - return self.$getFambleResultText(number, total); - }, $Elysion_getSpecialResult$11.$$arity = 2); - - Opal.def(self, '$getCriticalResult', $Elysion_getCriticalResult$12 = function $$getCriticalResult() { - var self = this; - - return self.$getSuccessResult($$($nesting, 'SUCCESS_MAX')) - }, $Elysion_getCriticalResult$12.$$arity = 0); - - Opal.def(self, '$getFambleResultText', $Elysion_getFambleResultText$13 = function $$getFambleResultText(number, total) { - var self = this, result = nil; - - - self.$debug("getFambleResultText number", number); - if (number['$=='](1)) { - return " > 大失敗"}; - result = self.$getCheckResult(total); - result = $rb_plus(result, "" + " / (" + ($rb_minus(number, 1)) + "回目のアシストなら)大失敗"); - self.$debug("getFambleResultText result", result); - return result; - }, $Elysion_getFambleResultText$13.$$arity = 2); - - Opal.def(self, '$getDateBothResult', $Elysion_getDateBothResult$14 = function $$getDateBothResult(type, pc1, pc2) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, result = nil, number = nil, tmp = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - result = "" + (pc1) + "[" + (dice1) + "]," + (pc2) + "[" + (dice2) + "] > "; - number = $rb_plus($rb_times(dice1, 10), dice2); - if ($truthy($rb_gt(dice1, dice2))) { - - tmp = pc1; - pc1 = pc2; - pc2 = tmp; - number = $rb_plus($rb_times(dice2, 10), dice1);}; - result = $rb_plus(result, self.$getDateResult(type, number, pc1, pc2)); - return result; - }, $Elysion_getDateBothResult$14.$$arity = 3); - - Opal.def(self, '$getDateResult', $Elysion_getDateResult$15 = function $$getDateResult(type, number, pc1, pc2) { - var $a, $b, self = this, name = nil, table = nil, text = nil; - - - $b = self.$getDateTableByType(type), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b; - self.$debug("getDateTable name", name); - text = self.$get_table_by_number(number, table); - text = self.$changePcName(text, "受け身キャラ", pc1); - text = self.$changePcName(text, "攻め気キャラ", pc2); - return "" + (name) + "表(" + (number) + ") > " + (text); - }, $Elysion_getDateResult$15.$$arity = 4); - - Opal.def(self, '$getDateTableByType', $Elysion_getDateTableByType$16 = function $$getDateTableByType(type) { - var self = this, $case = nil; - - - $case = type; - if (nil['$===']($case)) {return self.$getDateTable()} - else if (/^F$/i['$===']($case)) {return self.$getFrindDateTable()} - else if (/^O$/i['$===']($case)) {return self.$getOnewayDateTable()} - else if (/^M$/i['$===']($case)) {return self.$getMidnightDateTable()}; - return ["", []]; - }, $Elysion_getDateTableByType$16.$$arity = 1); - - Opal.def(self, '$getDateTable', $Elysion_getDateTable$17 = function $$getDateTable() { - var self = this, name = nil, table = nil; - - - name = "デート"; - table = [[11, "「こんなはずじゃなかったのにッ!」仲良くするつもりが、ひどい喧嘩になってしまう。この表の使用者のお互いに対する《感情値》が1点上昇し、属性が《敵意》になる。"], [12, "「あなたってサイテー!!」大きな誤解が生まれる。受け身キャラの攻め気キャラ以外に対する《感情値》がすべて0になり、その値のぶんだけ攻め気キャラに対する《感情値》が上昇し、その属性が《敵意》になる。"], [13, "「ねぇねぇ知ってる…?」せっかく二人きりなのに、他人の話で盛り上がる。この表の使用者は、PCの中からこの表の使用者以外のキャラクター一人を選び、そのキャラクターに対する《感情値》が1点上昇する。"], [14, "「そこもっとくわしく!」互いの好きなものについて語り合う。受け身キャラは、攻め気キャラの「好きなもの」一つを選ぶ。受け身キャラは、自分の「好きなもの」一つをそれに変更したうえで、攻め気キャラへの《感情値》が2点上昇し、その属性が《好意》になる。"], [15, "「なぁ、オレのことどう思う?」思い切った質問!受け身キャラは、攻め気キャラに対する《感情値》を2上昇させ、その属性を好きなものに変更できる。"], [16, "「あなたのこと心配してるわけじゃないんだからね!」少し前の失敗について色々と言われてしまう。ありがたいんだけど、少しムカつく。受け身キャラは、攻め気キャラに対する《感情値》が2点上昇する。"], [22, "「え、もうこんな時間!?」一休みするつもりが、気がつくとかなり時間がたっている。この表の使用者のお互いに対する《感情値》が1点上昇し、《アウル》1点を獲得する。"], [23, "「気になってることがあるんだけど…?」何気ない質問だが、これは難しい。変な答えはできないぞ。攻め気キャラは〔学力〕で判定を行う。成功すると、この表の使用者のお互いに対する《感情値》が成功度の値だけ上昇し、その属性が《好意》になる。失敗すると、何とか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《感情値》が1点上昇し、その属性が《敵意》になる。"], [24, "「なんか面白いとこ連れてって」うーん、これは難しい注文かも?攻め気キャラは、〔政治力〕で判定を行う。成功すると、この表の使用者のお互いに対する《感情値》が成功度の値だけ上昇し、その属性が《好意》になる。失敗すると、何とか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《感情値》が1点上昇し、その属性が《敵意》になる。"], [25, "「うーん、ちょっと困ったことがあってさ」悩みを相談されてしまう。ここはちゃんと答えないと。攻め気キャラは、〔青春力〕で判定を行う。成功すると、この表の使用者のお互いに対する《感情値》が成功度の値だけ上昇し、その属性が《好意》になる。失敗すると、何とか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《感情値》が1点上昇し、その属性が《敵意》になる。"], [26, "「天魔だ。後ろにさがってろ!」何処からとも無く現れた天魔に襲われる。攻め気キャラは好きな能力値で判定を行う。成功すると、この表の使用者のお互いに対する《感情値》が成功度の値だけ上昇し、その属性が《好意》になる。失敗すると、互いに1D6点のダメージを受けつつ、何とか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《感情値》が1点上昇し、その属性が《敵意》になる。"], [33, "「ごめん、勘違いしてた」誤解が解ける。この表の使用者のお互いに対する《感情値》が1点上昇し、《好意》になる。"], [34, "「これ、キミにしか言ってないんだ。二人だけの秘密」受け身キャラが隠している夢や秘密を攻め気キャラが知ってしまう。受け身キャラの攻め気キャラに対する《感情値》が2点上昇する。"], [35, "「これからも、よろしく頼むぜ。相棒」攻め気キャラが快活に微笑む。受け身キャラの攻め気キャラに対する《感情値》が2点上昇する。"], [36, "「わ、わたしは、あなたのことが…」受け身キャラの思わぬ告白!受け身キャラの攻め気キャラに対する《感情値》が2点上昇する。"], [44, "「大丈夫?痛くないか?」互いに傷を治療しあう。この表の使用者は、お互いの自分に対する[《好意》×1D6]点だけ、自分の《生命力》を回復する事ができる。でちらかの《生命力》が1点以上回復したら、この表の使用者のお互いに対する《感情値》が1点上昇する。"], [45, "「この事件が終わったら、伝えたい事が…あるんだ」攻め気キャラの真剣な言葉。え、それって…?受け身キャラの攻め気キャラに対する《感情値》が1点上昇し、その属性が《好意》になる。エピローグに攻め気キャラが生きていれば、この表の使用者のお互いに対する《感情値》がさらに2点上昇する。ただし、以降このセッションの間、攻め気キャラは「致命傷表」を使用したとき、二つのサイコロを振って低い目を使う。"], [46, "「停電ッ!?…って、どこ触ってるんですかッ!?」辺りが不意に暗くなり、思わず変なところを触ってしまう。攻め気キャラの受け身キャラに対する《感情値》が2点上昇し、その属性が《好意》になる。また、受け身キャラの攻め気キャラに対する《感情値》が2点上昇し、その属性が《敵意》になる。"], [55, "「お前ってそんなやつだったんだ?」意外な一面を発見する。互いに対する《感情値》が1点上昇し、その属性が反転する。"], [56, "「え?え?えぇぇぇぇッ?!」ふとした拍子に唇がふれあう。受け身キャラの攻め気キャラ以外に対する《感情値》が全て0になり、その値の分だけ攻め気キャラに対する《感情値》が上昇し、その属性が《好意》になる。"], [66, "「…………」気がつくとお互い、目をそらせなくなってしまう。そのまま顔を寄せ合い…。この表の使用者のお互いに対する《感情値》が3点上昇する。"]]; - return [name, table]; - }, $Elysion_getDateTable$17.$$arity = 0); - - Opal.def(self, '$getFrindDateTable', $Elysion_getFrindDateTable$18 = function $$getFrindDateTable() { - var self = this, name = nil, table = nil; - - - name = "友達デート"; - table = [[11, "「こんなはずじゃなかったのにッ!」\n仲良くするつもりが、ひどい喧嘩になってしまう。この表の使用者のお互いに対する《感情値》が1点上昇し、属性が《敵意》になる。"], [12, "「……。」\n会話が続かなくて、非常に気まずい。この表の使用者は《生命力》が1D6天回復するが、お互いに対する《感情値》が1点減点する。"], [13, "「そういえば、キミってアレやってる?」\nお互いの趣味について語り合う。この表の使用者の「好きなもの」の中に近い内容のものを探す。近い内容一つにつき、この表の使用者のお互いに対する《感情値》が1点上昇し、その属性は《好意》になる。"], [14, "「キミと僕は似ている?」\n攻め気キャラは、受け身キャラと自分の共通点を探す(ジョブやアイテム、髪型やクラス、好き嫌いなど)。1つでも見つけると、攻め気キャラの受け身キャラに対する《感情値》が1点上昇する。属性は攻め気キャラが決定できる。"], [15, "「いや、全然似てないよ」\n受け身キャラは、攻め気キャラと自分の違うところを探す。3つ以上見つけた場合、受け身キャラの攻め気キャラに対する《感情値》は1点上昇する。属性は受け身キャラが決定できる。"], [16, "「え、そうだったの!?」\nお互いに意外なところを発見してしまう。この表の使用者のお互いに対する《感情値》が1点上昇し、属性を反転する。"], [22, "「えーっと、アレがソレでコレになって。\n」非情に当たり障りのない言葉でぼんやりとした会話をする。何も起こらない。"], [23, "「一緒に体を動かさない?」\n一緒に汗をかいて、リフレッシュ。攻め気キャラの受け身キャラに対する《感情値》が1点上昇し、属性が《好意》になる。受け身キャラは[青春力]で判定を行う。判定に成功すると、受け身キャラから攻め気キャラに対する《感情値》が1点上昇し、属性は《好意》になる。失敗すると、受け身キャラの《アウル》が1点減少する。"], [24, "「一緒に勉強しようか。」\n一緒に勉強に励む。この表の使用者は[学力]で判定を行う。二人とも成功すると、お互いに対する《感情値》が1点上昇し、属性が《好意》になり、好きな授業の□にチェックを入れる。一人でも失敗すると、攻め気キャラの受け身キャラに対する《感情値》の属性は《敵意》になる。"], [25, "「一緒に遊ぼうよ!」\n一緒に一つのゲームに向かい合って遊んでみる。お互いに2D6を振る。攻め気キャラの出目が高かった場合、攻め気キャラの受け身キャラに対する《感情値》1点上昇する。受け身キャラの出目が高かった場合、受け身キャラの攻め気キャラに対する《感情値》が2点上昇し、属性は《好意》となる。"], [26, "「奢るよ。」\n攻め気キャラは、分類「食物」のアイテムを一つ選んで調達判定を行う。成功すると、受け身キャラに調達したアイテムを渡し、受け身キャラの攻め気キャラに対する《感情値》が2点上昇し、属性は《好意》になる。"], [33, "「交換してみる?」\nこの表の使用者は、武器と防具を一つずつ選ぶ。この表の使用者はお互いに選んだアイテムを交換して、お互いに対する《感情値》が2点上昇し、属性が《好意》になる。このセッションの間、交換したアイテムがこの表の使用者以外の手に渡ったり、消えてしまった場合、この表の使用者はお互いに対する感情の属性は《敵意》になる。"], [34, "「ショッピングしよう!」\n二人で買い物を始める。攻め気キャラは好きなアイテムを1つ選んで調達判定を行える。調達判定に成功すると、受け身キャラは選んだアイテムを手に入れ、攻め気キャラの《感情値》が1点上昇し、属性は《好意》になる。"], [35, "「ちょっと休憩しようか。」\n二人でゆっくり過ごす。受け身キャラは、攻め気キャラに対する《感情値》が1点上昇し、属性は《好意》になる。攻め気キャラはプレイスを一つ選び、休憩表を振る。"], [36, "「二人でやる仕事があるんだけど……。」\n攻め気キャラは好きな能力値で判定を行う。成功すると、続いて受け身キャラが同じ能力値で判定を行う。成功すると、この表の使用者の成功度を足した数と同じだけ【お金】を手に入れる。お互いに対する《感情値》の属性が《好意》になる。どちらかでも失敗すると、お互いに対する《感情値》の属性が《敵意》になる。"], [44, "「一緒にご飯を食べよう。」\n二人で同じテーブルを囲んでご飯を食べる。この表の使用者は好きなだけ【お金】を消費する。この表の使用者は《生命力》を[消費した【お金】の合計×1]点回復し、お互いに対する《感情値》が[消費した【お金】の合計+1]点上昇し、属性は《好意》になる。"], [45, "「キミといると楽しいね!」\n会話が弾んで、また遊びたいと思えるような関係になる。この表の使用者はお互いに対する《感情値》が2点上昇し、属性は《好意》となる。さらに、受け身キャラは《感情値》を1点上昇させる。"], [46, "「あの、さ。」\n悩み事を相談する。受け身キャラは[政治力]で判定を行う。成功すると、攻め気キャラの変調を1つ回復し、攻め気キャラの受け身キャラに対する《感情値》が2点上昇し、属性は《好意》となる。"], [55, "「ズッ友だよ!」\nこの表の使用者はお互いに対する《感情値》が2点上昇し、属性は《好意》になる。さらに、このセッションの終了フェイズ中、「データのリセット」のタイミングで「自分のアドレスにある《感情値》の合計」を算出する際に、数えなくてもよく、調整もしなくてよい。"], [56, "「あ。ご、ごめん。」\nふとした拍子に、触れてはならない場所を触れてしまった。受け身キャラの攻め気キャラに対する《感情値》を0にして、元の値と同じだけ攻め気キャラの受け身キャラに対する《感情値》が上昇する。"], [66, "「実はコイツ……。」\n思っていたよりずっと近かった二人の距離に気付く。この表の使用者のお互いに対する《感情値》が3点上昇し、属性は《好意》になる。"]]; - return [name, table]; - }, $Elysion_getFrindDateTable$18.$$arity = 0); - - Opal.def(self, '$getOnewayDateTable', $Elysion_getOnewayDateTable$19 = function $$getOnewayDateTable() { - var self = this, name = nil, table = nil; - - - name = "片思いデート"; - table = [[11, "「気付いてくれないあなたが悪いんだから……!」\n突然の告白と、刃物沙汰。撃退士じゃなかったら死んでいた。受け身キャラは《生命力》が3D6点減少する。攻め気キャラの受け身キャラに対する《感情値》が3点上昇し、属性が《敵意》にあんる。受け身キャラは攻め気キャラに対するフラグがあった場合、フラグを折る。"], [12, "「どうしてあの子の話ばかりするのかな?」\nあの人は、いつもそう。私の前であの子の話ばかり。受け身キャラはこの表の使用者以外のキャラクターを一人選ぶ。攻め気キャラは選ばれたキャラクターに対する《感情値》が2点上昇し、属性が《敵意》になる。"], [13, "「お仕置き、しないとね。」\n受け身キャラが持っている一番高い《好意》を持っているキャラクターを選ぶ。選ばれたキャラクターは《生命力》を1D6点減少し、攻め気キャラに対する感情の属性が《敵意》になる。選んだキャラクターが攻め気キャラだった場合、攻め気キャラの受け身キャラに対する《感情値》が1点上昇し《生命力》が1D6天回復する。"], [14, "「負け犬って何のこと?」\n受け身キャラが持っている中で、一番高い《好意》を持っているキャラクターが攻め気キャラでない場合、攻め気キャラの受け身キャラに対するフラグと、受け身キャラの攻め気キャラに対するフラグを折る。攻め気キャラが最も高い場合攻め気キャラは《アウル》を3点回復する。"], [15, "「何で気づいてくれないの?」\n一方的に思いは募る。攻め気キャラは受け身キャラに対する《感情値》が2点上昇し、属性が《好意》になる。受け身キャラの攻め気キャラに対するフラグがあった場合、フラグを折る。"], [16, "「贈り物…だよ……。」\n愛情がたくさん入ったアイテム……だけど呪術的なものも入っている気がする。攻め気キャラは好きなアイテムを一つ選び、調達判定を行う。成功した場合、手に入れたアイテムを受け身キャラに渡す。受け身キャラは、渡したアイテムの価格と同じだけ《アウル》が減少する。攻め気キャラは受け身キャラに対する《感情値》が2点上昇する。"], [22, "「神様、勇気をください。」\n勇気を出して声をかけていく。受け身キャラは攻め気キャラに対する《感情値》が1点上昇し、属性は《好意》になる。"], [23, "「大変だ!何とかしないと!」\n献身的な看病で、体の調子を戻す。受け身キャラが受けている変調をすべて回復する。攻め気キャラは受け身キャラが持っていた変調をすべて受け、受け身キャラに対する《感情値》が受けた変調と同じ値だけ上昇する。受け身キャラが変調を受けていなかった場合、受け身キャラは【ポーション】を1つ獲得する。"], [24, "「調べてきたよ!」\n想い人のために、役立つ情報を調べてくる。攻め気キャラは[学力]で判定を行う。成功すると、受け身キャラは好きな授業を一つ選んで□にチェックを入れる。攻め気キャラは受け身キャラに対する《感情値》が1点上昇する。"], [25, "「どうかこの時間がずっと続きますように。」\n幸せの一瞬。一緒にいるだけでいいのに、時は無情にも過ぎていく。攻め気キャラは《生命力》が限界値まで回復し、《アウル》が2点回復する。ただし、このセッション中に受け身キャラと違うキャラクターとデートを行ったとき、攻め気キャラの《アウル》は0になる。"], [26, "「お似合いだなんて、そんな……。」\n一緒に歩いているところを冷やかされる。攻め気キャラは受け身キャラに対する《感情値》が2点上昇し、属性は《好意》になる。受け身キャラは攻め気キャラに対するフラグがあった場合フラグを折る。"], [33, "「応援してるよ!」\n本心を隠して、恋や友情の応援!攻め気キャラは、キャラクターを一人選ぶ。受け身キャラは選ばれたキャラクターに対する《感情値》が2点上昇し、属性が《好意》になる。攻め気キャラが受け身キャラに対するフラグがあった場合、フラグを折る。"], [34, "「頭が沸騰しそうだよッ!」\n手と手が触れ合って、とても幸せになる。攻め気キャラの《アウル》が受け身キャラに対する《好意》の点数と同じ値だけ回復する。"], [35, "「あなたは死んでも守る。」\n絶対に守るという固い意志を示す。攻め気キャラの受け身キャラに対する《感情値》が1点上昇する。また、このセッション中に一度だけ、受け身キャラが受けたダメージを代わりに攻め気キャラが受けることができる。"], [36, "「もう死んでもいいかも……。」\n突然のハプニングでお互い大事なところが触れ合う!思い人と急接近!この表の使用者はお互いに対する《感情値》が1点上昇し属性が《好意》になる。"], [44, "「何かと必要のはず!」\nお金を工面して、想い人に渡す。受け身キャラは【お金】を1個獲得する。攻め気キャラは受け身キャラに対する《感情値》が1点上昇し、属性は《好意》になる。"], [45, "「あなたの行きたいところなら!」\n想い人が行くところならどこまでもついて行きますとも。受け身キャラはプレイスを一つ選ぶ。選んだプレイスの休憩表を振って効果を適応する。攻め気キャラは受け身キャラに対する《感情値》が1点上昇し、属性は《好意》になる。"], [46, "「きっと食べるよね。」\nお菓子を用意して、戻ってくるのを待っている。受け身キャラは《アウル》が1点回復し、攻め気キャラは受け身キャラに対する《感情値》が1点上昇し、属性は《好意》になる。"], [55, "「肩、揉んであげようか?」\n疲れを察して、率先して動いて休ませてあげる。受け身キャラは《生命力》が1D6点回復し、攻め気キャラに対する《感情値》の属性が《好意》になる。"], [56, "「贈り物だよっ!」\n愛情がたくさん入ったアイテムを送る。攻め気キャラは好きなアイテムを一つ選び、調達判定を行う。成功した場合、アイテムを受け身キャラに渡す。渡したアイテムの価格の値と同じだけ、攻め気キャラの受け身キャラに対する《感情値》が上昇する。"], [66, "「そっか、私……。」\n思いが届かないうちに、片思いの相手が他の人と仲良くしているところをみせつけられる。受け身キャラは攻め気キャラ以外のキャラクターを一人選んで《感情値》を3点上昇し、属性を《好意》にする。この表の使用者のお互いに対するフラグがあった場合、フラグを折る。"]]; - return [name, table]; - }, $Elysion_getOnewayDateTable$19.$$arity = 0); - - Opal.def(self, '$getMidnightDateTable', $Elysion_getMidnightDateTable$20 = function $$getMidnightDateTable() { - var self = this, name = nil, table = nil; - - - name = "真夜中デート"; - table = [[11, "「こんなはずじゃなかったのにッ!」\n仲良くするつもりが、ひどい喧嘩になってしまう。この表の使用者のお互いに対する《感情値》が1点上昇し、属性が《敵意》になる。"], [12, "「夜風が気持ちいい。」\n夜の風が二人を優しく撫でる。落ち着いて話をしよう。この表の使用者は、持っている《感情値》を一つ選んで好きな属性に変更できる。"], [13, "「夜の散歩に出かけてみようか。」\n攻め気キャラはプレイスを一つ選び、この表の使用者はお互いに選んだプレイスの休憩表を振る。この休憩表によって上昇する《感情値》は二倍になる。"], [14, "「やべっ、風紀委員だ!」\n風紀委員に見つかって、二人で逃げ回るはめに。この表の使用者はお互いに対する《感情値》の属性を反転させる。"], [15, "「夜は別の顔があるんだよ。」\n夜はいつもと違った一面を見せる時間だ。攻め気キャラは[政治力]判定を行う。成功すると、受け身キャラに対する《感情値》が2点上昇する。受け身キャラは、攻め気キャラに対する《感情値》の属性を判定させる。"], [16, "「ね、ねむい。」\n眠くてデートどころではなかったが、寝顔は見られた。受け身キャラは行動の「睡眠」を行い、攻め気キャラは受け身キャラに対する《感情値》が2点上昇し、属性は《好意》になる。"], [22, "「夜通し遊ぶぜ!」\nついつい張り切ってしまって、夜通し遊んでしまう。この表の使用者はお互いに対する《感情値》が3点上昇し、「眠気」の変調を受ける。"], [23, "「夜の学校っていいもんだな。」\n夜の学園に忍び込み、二人で探検する。攻め気キャラは1D6を振る。出た目と同じだけ、お互いに対する《感情値》が上昇し、属性が反転する。"], [24, "「夜の個人授業。」\n夜中の教室で二人だけの授業をする。攻め気キャラは[学力]判定を行う。成功すると、受け身キャラは好きな授業を1つ選び、□にチェックをする。さらに、攻め気キャラの受け身キャラに対する《感情値》1点上昇する。失敗すると、受け身キャラの攻め気キャラに対する《感情値》が2点上昇する。"], [25, "「怖い話。」\n思い立って、怖い話をしてみる。攻め気キャラは好きな能力値で判定を行う。成功すると、受け身キャラは「恐怖」の変調を受け、受け身キャラに攻め気キャラに対する《感情値》が3点上昇する。受け身キャラは攻め気キャラに対するフラグがあった場合、フラグを折る。"], [26, "「綺麗な星だな。」\n空を見上げて二人で天体観測。二人の距離はずっと近くに。この表の使用者がお互いに対する《好意》を持っている場合、お互いに対する感情値が1D6点上昇する。"], [33, "「眼が冴えてきたな。」\n目が冴えてきて、夜中でも問題なく動けそうだ。この表の使用者は、このパートの間「真夜中パートに睡眠を行わなかったキャラクターは、そのパート終了時に1D6点を振って、その目に対応した変調を受けます。」というルールを無効化し、「真夜中デート表」をもう一度振る。"], [34, "「夜の騎士!」\n夜に紛れて悪さをしようとしていた悪人を懲らしめて戦利品を手に入れる。攻め気キャラは好きな能力値で判定を行う。成功すると、受け身キャラの攻め気キャラに対する《感情値》が判定の成功度だけ上昇する。攻め気キャラは【タバコ】か【お金】を手に入れる。"], [35, "「いいものアルヨ。」\n妖しいポーションの勧誘に引っかかってしまった。攻め気キャラは[政治力]で判定を行う。判定に成功すると、受け身キャラは《生命力》を1D6点回復し、《感情値》が回復した《生命力》の値と同じだけ上昇し、属性が《好意》になる。判定に失敗すると、受け身キャラは「病気」の変調を受け、《感情値》が2点上昇する。"], [36, "「私といいことしない?」\n夜闇に乗じて、セクシーな悪魔が誘惑してくる。攻め気キャラは好きな能力値で判定を行う。判定に成功すると、この表の使用者のお互いに対する《感情値》が判定の成功度だけ上昇し、属性は《好意》になる。判定に失敗し、お互いにフラグがあった場合、フラグを折る。"], [44, "「出歯亀だ!?」\n二人だけの真夜中デートだと思ったら、誰かが見ていたのだ。攻め気キャラは、攻め気キャラでも受け身キャラでもない好きなPCを一人選ぶ。選ばれたPCは、この表の使用者二人に対する《感情値》が2点上昇する。この表の使用者二人は、選ばれたPCに対する感情の属性が《敵意》になる。"], [45, "「夜の宴が始まる。」\n夜中にパーティーを開き、大騒ぎだ。この表の使用者は、【ごちそう】か【お酒】をすべて消費する。消費した場合、この表の使用者は《生命力》が限界値まで回復し、《アウル》が2点回復する。さらに、お互いに対する《感情値》が2点上昇し、属性が反転する。消費出来なかった場合、何も起こらない。"], [46, "「月以外、誰も見ていないさ……。」\n見つめ合ったまま、二人の夜が更けていく。この表の使用者はお互いの《感情値》が1D6点上昇し、属性は好きなものを選ぶことができる。"], [55, "「夜のコスプレショー!」\nお互いに似合うコスチュームを探ってみる。この表の使用者は、同時に「分類:防具/魔装」のアイテムの名前を一つ挙げる(相談禁止)。お互いに同じアイテムの名前を挙げた場合、お互いに対する《感情値》が4点上昇し、挙げたアイテムを一つ獲得する。"], [56, "「ふー。」\nお互いに色々ぶちまけてスッキリした。この表の使用者は変調をすべて回復し、1D6をどちらかが振る。この表の使用者は、お互いの《感情値》が1D6の目と同じになる。"], [66, "「帰りの電車がなくなったの……。」\n二人で一夜を過ごす。この表の使用者はお互いに対する《感情値》が5点上昇するが、お互いに「バカ」の変調を受ける。"]]; - return [name, table]; - }, $Elysion_getMidnightDateTable$20.$$arity = 0); - - Opal.def(self, '$changePcName', $Elysion_changePcName$21 = function $$changePcName(text, base, name) { - var $a, $$22, self = this; - - - if ($truthy(($truthy($a = name['$nil?']()) ? $a : name['$empty?']()))) { - return text}; - return $send(text, 'gsub', [new RegExp("" + "(" + (base) + ")")], ($$22 = function(){var self = $$22.$$s || this; - - return $rb_plus($$($nesting, 'Regexp').$last_match(1), "" + "(" + (name) + ")")}, $$22.$$s = self, $$22.$$arity = 0, $$22)); - }, $Elysion_changePcName$21.$$arity = 3); - - Opal.def(self, '$getDateValue', $Elysion_getDateValue$23 = function $$getDateValue() { - var $a, $b, self = this, dice1 = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - return dice1.$to_s(); - }, $Elysion_getDateValue$23.$$arity = 0); - - Opal.def(self, '$getClassRoomBreakTable', $Elysion_getClassRoomBreakTable$24 = function $$getClassRoomBreakTable() { - var self = this, name = nil, table = nil; - - - name = "教室"; - table = ["風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が真夜中パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。真夜中パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", "引き出しのパン\n「お!こんなとこにッ!?」机の中に以前買った食べ物を発見する。アイテムの【焼きそばパン】を一つ獲得する。使用するときに1D6を振ること。奇数が出たら、問題なく使用できる。偶数が出たら、それは腐っている。【焼きそばパン】の効果の変わりに「病気」の変調を受ける事。", "授業の質問\n「ねぇねぇ、ここ分かる?」クラスメイトに授業の質問を受ける。〔学力〕で判定を行う。成功すると、質問に答えるうちに自分の理解も深まる。自分の授業欄の中から好きなもの一つを選び、□にチェックを入れる。", "先生の依頼\n「丁度いいところにいるな。手伝ってくれ」先生に用事を言いつけられる。〔政治力〕で判定を行う。成功すると、感謝されてアイテムの【タリスマン】を一つ獲得する", "誰かの視線\n……誰かの視線を感じる。もしかして? 教室にいるキャラクターの中から好きな者を一人選び、そのキャラクターの自分に対する《感情値》が1点上昇する。(教室に誰がいるのかは、最終的にGMが決定すること)。", "遊びの誘い\n「ねぇねぇ、明日の放課後ひま?」クラスメイトに遊びに誘われる。翌日の放課後、自由行動として「遊び」を行うことができる。「遊び」を行うと、《アウル》が1D6点回復する。", "居眠り\n「ZZZ……」教室での居眠りは最高だ。《アウル》1点を変調一つを回復する。ただし、今が授業パートなら、〔青春力〕で判定を行う。失敗すると、先生に怒られて《生命力》が1D6点減少し、《アウル》も変調も回復しない。", "お腹空いた\n「ねぇねぇ。お腹空いた。なんかない?」クラスメイトに食事をねだられた。分類が「食物」のアイテムを一つ消費することができたら、教室にいるキャラクターの中から好きな者を一人選び、そのキャラクターの自分に対する《感情値》が1点上昇する。", "クラスの噂\n「ねぇねぇ、これ知ってる?」クラスメイトの噂話……。〔政治力〕の判定を行う。成功すると、手がかり一つを選び、その情報を公開する。失敗すると、あなたについての噂をたてられる。あなたの周囲に、あなたに対して《感情値》を持つキャラクターがいたら、それを反転させる。", "ラブレター!?\n「こ、これは……ッ!?」机の中に何かを発見。〔青春力〕で判定を行う。成功すると、誰かからのラブレターを発見! 好きなNPC一人を選び、そのキャラクターの自分に対する《感情値》が1点上昇し、属性を《好意》にする。", "笑い声\n「あはははははは」にぎやかな笑い声が響く。〔青春力〕で判定を行う。成功したら輪の中に溶け込み、《アウル》が1点回復する。失敗すると「孤独」の変調を受ける。"]; - return self.$getBreakTable(name, table); - }, $Elysion_getClassRoomBreakTable$24.$$arity = 0); - - Opal.def(self, '$getSchoolStoreBrakeTable', $Elysion_getSchoolStoreBrakeTable$25 = function $$getSchoolStoreBrakeTable() { - var self = this, name = nil, table = nil; - - - name = "購買"; - table = ["風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", "まとめ買いセール\n「まとめ買いセール!」好きなアイテムを一つ選ぶ。そのアイテムの調達の判定を一度行う事ができる。このとき、そのアイテムの価格を1高くするたび、追加でもう一個そのアイテムを獲得することができる。", "防具セール!\n「うわぁ。これ欲しいなぁ」セール品を見つける。分類が「防具」のアイテムの中から好きなものを一つ選ぶ。そのアイテムの価格が1低いものとして調達の判定を一度行うことができる(ただし1未満にはならない)。", "武器セール!\n「何と!こんなものまで!」セール品を見つける。分類が「武器」のアイテムの中から好きなものを一つ選ぶ。そのアイテムの価格が1低いものとして調達の判定を一度行うことができる(ただし1未満にはならない)。", "色々セール!\n「ほほう!これはお買い得!」セール品を見つける。分類が「一般」のアイテムの中から好きなものを一つ選ぶ。そのアイテムの価格が1低いものとして調達の判定を一度行うことができる(ただし1未満にはならない)。", "ウィンドウショッピング\n「へぇ、こんな商品出たんだ」ウインドウショッピングでも、結構気分は晴れるもんだよね。《アウル》が1点回復する。", "試食\n「お!良かったら食べてみて!」新商品の試食を頼まれる。1D6を振ること。奇数なら美味しさのあまり《生命力》が1D6点と「空腹」の変調が回復する。偶数なら微妙すぎて《生命力》が1点減少する。", "購買での出会い\n「……あ」陳列棚の商品に伸ばした手と手が触れあう。購買にいるキャラクターの中から好きなキャラクターの自分に対する《感情値》が1点上昇する(購買に誰がいるのかは、最終的にGMが決定すること)。", "高価買い取り!\n「いいもの持ってるね。よかったら、それ引き取るよ」好きなアイテム一つと【お金】一つを交換することができる。", "デリバリー\n「あー、今は品切れだねぇ。補充したら届けるよ」好きなアイテムを一つ選ぶ。そのアイテムの調達の判定を一度行うことができる。調達の判定に成功すると、そのアイテムを次のパート以降、好きなタイミングで入手することができる。", "サイフ紛失\n「あれ? あれれれッ!?」サイフを落としてしまった。【お金】を持っていたら、それを全て失う。"]; - return self.$getBreakTable(name, table); - }, $Elysion_getSchoolStoreBrakeTable$25.$$arity = 0); - - Opal.def(self, '$getClubRoomBrakeTable', $Elysion_getClubRoomBrakeTable$26 = function $$getClubRoomBrakeTable() { - var self = this, name = nil, table = nil; - - - name = "部室"; - table = ["風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", "謎の忠告\n「霊があなたに何かを訴えかけようとしてる…」〔政治力〕の判定を行う。成功すると、手がかり一つを選び、その情報を公開する。失敗すると「恐怖」の変調を受ける。", "後輩現る!\n「どこまでもついていきますよ先輩!」いつのまにか可愛い後輩ができていた。もしも【クラブ】のコミュを修得していたら、アイテムの【後輩】一つを獲得する。", "先輩現る!\n「おう、さしいれ持ってきたぞ!」先輩がやってくる。アイテムの「ごちそう」を一つ獲得する。", "青春の汗\n「ダハハハ! 青春の汗を流そうぜ!」部室の中から体育会系部員の熱い会話が聞こえてきた。好きな能力値で判定を行う。成功すると、このセッションの間、〔青春力〕の修整が1点上昇する。失敗すると「バカ」の変調を受ける。", "茶飲み話\n「まぁまぁ。お茶でも飲んでいきなよ」知り合いの所属する部室でお茶を飲む。〔政治力〕の判定を行う。成功すると、《アウル》が1点回復する。", "熱い議論「もっと本質的な部分に目を向けようよ!」部室の中から文科系部員の高度な会話が聞こえてきた。好きな能力値で判定を行う。成功すると、このセッションの間、〔学力〕の修整が1点上昇する。失敗すると「孤独」の変調を受ける。", "マネージャー\n「あれ? ケガしてるじゃないですか」もしも【クラブ】のコミュを修得していたら、可愛いマネージャーが絆創膏をくれる。《生命力》が1D6点回復する。", "突然の料理\n「ちょっと付き合えよ」もしも【クラブ】のコミュを修得していたら、仲間の部員に呼び止められる。〔政治力〕で判定を行う。成功すると、自分の放課後欄の中から好きな【クラブ】一つを選び、□にチェックを入れる。", "仲間の告白\n「キミ、最近なんかいい感じだよね」もしも【クラブ】のコミュを修得していたら、部室にいるキャラクターの中から好きな者を一人選び、そのキャラクターの自分に対する《感情値》が1点上昇する(部室に誰がいるのかは、最終的にGMが決定する事)", "門外不出品?\n「なんだこれ……?」部室の奥から、いわれのありそうな古書が出てくる。外国の言葉で書かれているみたいだけど……?〔学力〕で判定を行う。必要な成功度は、自分のカオスレートの絶対値となる(1未満にはならない)。成功すると、そのセッションの間、自分のカオスレートを1点上昇するか、1点減少する。"]; - return self.$getBreakTable(name, table); - }, $Elysion_getClubRoomBrakeTable$26.$$arity = 0); - - Opal.def(self, '$getStudentCouncilBrakeTable', $Elysion_getStudentCouncilBrakeTable$27 = function $$getStudentCouncilBrakeTable() { - var self = this, name = nil, table = nil; - - - name = "生徒会室"; - table = ["風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が真夜中パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。真夜中パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", "秘密の会話\n「これ……極秘……はい……早急……対処……」生徒会質の面々の内緒話が漏れ聞こえてくる。これはいいことを聞かせてもらった。次に自分が調査の判定を行ったとき、その達成値が3点上昇する。", "天魔情報\n「むむ!これは……」天魔に対する情報を検索していたら、気になる情報が……。〔学力〕の判定を行う。成功すると、このシナリオに登場する可能性のある天魔の種類すべてをGMから教えてもらえる。", "気になるあいつ\n「不運。そういう名前なのか、あいつ」もしこのシナリオに登場しているNPCで、名前がわからないキャラクターがいたら、それを知ることができる。また、「好きなもの」と「嫌いなもの」が分からないキャラクターがいたら、「単語表」を使ってランダムに決める事ができる。", "調べられてる?\n「あれ、これって……?」誰かが自分のことを検索した形跡がある。〔政治力〕で判定を行う。成功すると、自分について調査していた人物を発見!好きなNPC一人を選び、そのキャラクターの自分に対する《感情値》が1点上昇する。", "プロフィール更新\n「自分のプロフィールを更新しておこう」〔政治力〕で判定を行う。成功すると、好きなキャラクター一人を選ぶ。そのキャラクターの自分に対する《感情値》の属性を《好意》にすることができる。", "思わぬ一面\n「へぇ。こいつって、こんなヤツだったんだ」生徒会質で知り合いの思わぬ一面を知る。自分が《感情値》を持っているキャラクター一人を選ぶ。そのキャラクターへの《感情値》の属性を反転する。", "友達検索\n「折角なんで、あいつのこと調べてみるか」友人の情報を検索してみる。〔政治力〕で判定を行う。成功すると、PCの中から好きなキャラクター一人を選ぶ。そのキャラクターに対する《感情値》が1点上昇する。", "同僚との遭遇\n「こんなとこで何してんの?」もしも【委員会】のコミュを修得していたら、仲間の委員に呼び止められる。〔政治力〕で判定を行う。成功すると、自分の放課後欄の中から好きな【委員会】一つを選び、□にチェックを入れる。", "旧友との再会\n「おう!久しぶりッ!!」昔の友人とばったり再会。〔青春力〕の判定を行う。成功すると、昔貸していた本を返してくれる。アイテムの【参考書】を一つ獲得する。", "謎の警告\n「深追いはするな。これは警告だ」携帯電話に謎の脅迫メールが届く。何者かに目をつけられたようだ。〔政治力〕で判定を行う。失敗すると「恐怖」の変調を受ける。"]; - return self.$getBreakTable(name, table); - }, $Elysion_getStudentCouncilBrakeTable$27.$$arity = 0); - - Opal.def(self, '$getDormitoryBrakeTable', $Elysion_getDormitoryBrakeTable$28 = function $$getDormitoryBrakeTable() { - var self = this, name = nil, table = nil; - - - name = "学生寮"; - table = ["風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", "友達との時間\n「だよねー」友達の部屋でお茶とお菓子をごちそうになる。《生命力》が1D6点、《アウル》が1点回復する。", "思い出の日\n寮の友人とハメを外して、寮長に怒られる。学生寮にいるキャラクターの中から好きな者を一人選ぶ。自分とそのキャラクターは「バカ」の変調を受け、お互いに対する《感情値》が2点上昇する(寮に誰がいるのかは、最終的にGMが決定する事)。", "引越しの手伝い\n「あ、今日からここに住む者です。よろしく」行きがかり上、引越しの手伝いをすることに。〔青春力〕で判定を行う。成功すると、感謝されてアイテムの【ごちそう】を一つ獲得する。", "色々トーク\n友達を自分の部屋に呼んでボーイズトーク!ガールズトーク♪ 「青春力」の判定を行う。成功すると、自分に対して《好意》を持っている同姓のキャラクター全員の、自分に対する《感情値》が1点上昇する。判定に失敗するか、自分に対して《好意》を持っているキャラクターが一人もいないと「孤独」の変調を受ける。", "好物発見!\n「お、ラッキー♪」冷蔵庫の中に好物を発見。分類が「食物」のアイテムの中から好きなものを一つ選ぶ。それを一つ獲得する。使用するときに1D6を振ること。奇数が出たら、問題なく使用できる。偶数が出たら、それは腐っている。そのアイテムの効果の代わりに「病気」の変調を受ける事。", "お見舞い\n「ねぇ、大丈夫?」もしも「病気」か「孤独」の変調を受けていたら、友人がお見舞いに来てくれる。好きなキャラクター一人を選ぶ。自分とそのキャラクターは、お互いに対する《感情値》が1点上昇する。そして好きな変調一つが回復する。", "魔蟲襲来!\n「カサカサカサ……」黒くて素早く動くアイツが現れた!〔学力〕で判定を行う。失敗すると、《アウル》が1点減少する。", "恋の相談\n寮の友人から恋人に関する相談を受ける。もしも【恋人】のコミュを修得していたら、《アウル》が2点回復する。修得していなかったら「孤独」の変調を受ける。", "寮に潜入\n「こっそり遊びにきてみない?」異性の友人を呼んでスリルを味わう。好きなキャラクター一人を選び、「青春力」で判定を行う。成功すると、自分とそのキャラクターは《アウル》が2点回復する。失敗すると、互いに対する《感情値》が1点減少する。", "ささいなケンカ\n「なんだとーッ!」「なにをーッ!」ささいな行き違いから、他の住人とケンカになってしまう。〔青春力〕か〔政治力〕で判定を行う。〔青春力〕の判定に失敗すると《生命力》が2D6点減少する。〔政治力〕の判定に失敗すると「孤独」の変調を受ける。"]; - return self.$getBreakTable(name, table); - }, $Elysion_getDormitoryBrakeTable$28.$$arity = 0); - - Opal.def(self, '$getLibraryBrakeTable', $Elysion_getLibraryBrakeTable$29 = function $$getLibraryBrakeTable() { - var self = this, name = nil, table = nil; - - - name = "図書館"; - table = ["風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", "重たい空気\n静かな気配に圧倒される。とりあえず手近にあった本のページを開いてみるが……。〔学力〕で判定を行う。失敗すると「バカ」の変調を受ける。", "文献調査\n「過去にも似たような事件があったようだ」文献を調べる。次に自分が調査の判定を行ったとき、その達成値が3点上昇する。", "天魔対策\n「アイツの習性は……」天魔の事を調べる。天使か悪魔のエネミー一種を選んで、〔学力〕の判定を行う。成功すると、そのセッションの間、そのエネミーの攻撃に対して、ガード判定を行う場合、その達成値が2点上昇する。", "物語の世界へ\n「…………」シーンと静まり返った雰囲気の中、読書が進む。本の中にどんどん入り込んでいく。すべての変調が回復し、「空腹」の変調を受ける。", "本の貸し出し\n「へー、こんな本もあるんだ」アイテムの【週刊誌】か【参考書】のいずれか一つを獲得する。", "授業の予習\nせっかく図書館に来たので、気になっていた科目について調べる。〔学力〕で判定を行う。成功すると、疑問点が解消される。自分の授業欄の中から好きなものを一つ選び、□にチェックを入れる。", "図書館での出会い\n「……あ」書架の本に伸ばした手と手が触れ合う。図書館にいるキャラクターの中から好きな者を一人選び、そのキャラクターの自分に対する《感情値》が1点上昇する(図書館に誰がいるのかは、最終的にGMが決定する事)。", "書物の夢\n本を読んでいるうちにいつの間にか眠ってしまったようだ。何か面白い夢を見たような気がするんだけど……うーん、まだ眠い。「眠気」の変調を受け、《アウル》が2点回復する。", "謎の手紙\n「……ッ!?」本を開いてみると、そこにはあなた宛の手紙が……どうして、この本を読む事が分かったんだろう。〔青春力〕で判定を行う。成功すると、手がかり一つを選び、その情報を公開する。失敗すると、「恐怖」の変調を受ける。", "残念!\n目当ての本はすでに借りられていた。残念!《アウル》が1点減少する。"]; - return self.$getBreakTable(name, table); - }, $Elysion_getLibraryBrakeTable$29.$$arity = 0); - - Opal.def(self, '$getRoofBrakeTable', $Elysion_getRoofBrakeTable$30 = function $$getRoofBrakeTable() { - var self = this, name = nil, table = nil; - - - name = "屋上"; - table = ["風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", "通り雨\n「キャ〜〜〜〜!」突然雨がふってきた!みんな屋上を去っていく。屋上にいるキャラクターの中から好きな者を一人選び、そのキャラクターの自分に対する《感情値》が1点上昇する(屋上に誰がいるのかは、最終的にGMが決定すること)。", "自動販売機\n「なんで屋上に自動販売機があるんだ?」細かい事は気にせず何かのもう。〔政治力〕の判定を行う。成功すると、アイテムの【ポーション】か【お酒】か【タバコ】のいずれか一つを獲得できる。", "青空\n空を見上げると、自分がちっぽけな存在に思えてくる。〔青春力〕で判定を行う。成功すると、使用回数に制限がある授業かコミュを一つ選ぶ。その使用回数が一度分回復する。", "物思い\n空をながめながら、物思いにふける。俺ってアイツの事、どう思ってるんだろう?〔青春力〕で判定を行う。成功すると、PCの中から好きなキャラクター一人を選ぶ。そのキャラクターに対する、《感情値》が1点上昇する。", "開放感\n開放的で非常に気分がいい。《アウル》が1点と「眠気」の変調が回復する。", "学園は広大だわ\n街並みを見下ろす。一体、この学園で何が起きているんだろう?〔学力〕で判定を行う。成功すると手がかり一つを選び、その情報を公開する。失敗すると、ほかの学生たちの姿が目に映り、今の自分に疑問がわいてくる。《アウル》が1点減少する。", "嵐の予感\n雲の動きが早くなっている。吹き荒ぶ風に、嵐の予感を感じた。〔青春力〕で判定を行う。成功すると、そのセッションの間、《アウル》の限界値が1点上昇する。失敗すると風に吹かれて風邪をひいてしまう。「病気」の変調を受ける。", "昼寝屋\nハンモックを貸し出している「昼寝屋」を発見。気持ちよさそうだ。〔政治力〕で判定を行う。成功すると、《生命力》が2D6点と「眠気」の変調が回復する。", "欲望の宴\n美味しそうな弁当を食べる者、恋人同士でイチャイチャするもの、怠惰な眠りを貪る者……屋上は欲望の見本市のようだ。「空腹」、「孤独」、「眠気」の内、好きな変調を受けることができる。受けた変調一種につき《アウル》が2点回復する。", "サビシガリヤ\n「……あなたも一人?」もしも「孤独」の変調を受けていたら、寂しそうな異性に声をかけられる。好きな異性のキャラクター一人を選ぶ。自分とそのキャラクターは、お互いに対する《感情値》が2点上昇する。そして好きな変調一つが回復する。"]; - return self.$getBreakTable(name, table); - }, $Elysion_getRoofBrakeTable$30.$$arity = 0); - - Opal.def(self, '$getLaboratoryBrakeTable', $Elysion_getLaboratoryBrakeTable$31 = function $$getLaboratoryBrakeTable() { - var self = this, name = nil, table = nil; - - - name = "研究室"; - table = ["風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が真夜中パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。真夜中パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", "装甲強化実験\n「ほう。面白い防具を使っているようだな」白衣を着た怪しげな生徒が防具の改造を申し出る。申し出を受け入れるなら、自分のもっている好きな防具一つを選んで、1D6を振る。奇数が出ると、そのセッションの間、その防具の装甲が1上昇する。偶数が出ると、その防具は破壊される。", "試薬\n「この試薬を飲んでみてくれないか」毒々しい色のポーションを渡される。「政治力」で判定を行う。失敗すると、断りきれずそれを飲むハメになる。。1D6を振る。奇数が出ると《生命力》が2D6点、《アウル》が1点回復する。偶数が出ると、「恐怖」と「病気」の変調を受ける。", "爆発事故\n「逃げろー!」研究室から数人の生徒が逃げ出してくる。なにかヤな予感。〔青春力〕で判定を行う。失敗すると、実験の爆発に巻き込まれる。《生命力》に2D6点のダメージを受ける。", "威力強化実験\n「ほう。面白い武器を使っているようだな」白衣を着た怪しげな生徒が武器の改造を申し出る。申し出を受け入れるなら、自分のもっている好きな武器一つを選んで、1D6を振る。奇数が出ると、そのセッションの間、その武器の威力が1上昇する。偶数が出ると、その武器は破壊される。", "命中強化実験\n「ほう。面白い武器を使っているようだな」白衣を着た怪しげな生徒が武器の改造を申し出る。申し出を受け入れるなら、自分のもっている好きな武器一つを選んで、1D6を振る。奇数が出ると、そのセッションの間、その武器に「精度2」の特殊効果が加わる(すでに「精度」の特殊効果のある武器は、その値が2上昇する)。偶数が出ると、その武器は破壊される。", "威力安定実験\n「ほう。面白い武器を使っているようだな」白衣を着た怪しげな生徒が武器の改造を申し出る。申し出を受け入れるなら、自分のもっている好きな武器一つを選んで、1D6を振る。奇数が出ると、そのセッションの間、その武器に「安定性3」の特殊効果が加わる(すでに「安定性」の特殊効果のある武器は、その値が1上昇する)。偶数が出ると、その武器は破壊される。", "バイオハザード\n「ピーーーー!ピーーーー!ピーーーー!」不吉な警告音が鳴り響く。バ、バイオハザードッ!?〔政治力〕で判定を行う。失敗すると、実験施設から漏れ出した奇妙な細菌に感染する。1D6を二回振って、ランダムに変調を二つ選び、それを受ける。", "ビーカーコーヒー\n「一杯やるかい?」ビーカーに注がれた珈琲を貰う。結構美味いんだけど、ちゃんと洗ってるのかな?「眠気」と「空腹」の変調が回復する。", "装甲安定実験\n「ほう。面白い防具を使っているようだな」白衣を着た怪しげな生徒が防具の改造を申し出る。申し出を受け入れるなら、自分のもっている好きな防具一つを選んで、1D6を振る。奇数が出ると、そのセッションの間、その防具に「堅牢2」の特殊効果が加わる(すでに「堅牢」の特殊効果のある防具は、その値が2上昇する)。偶数が出ると、その防具は破壊される。", "失敗作\n「そいつは失敗作だよ。欲しければ持っていって構わない」価格が3以下の好きなアイテム一つを選ぶ。それを一個獲得する。このアイテムは、持ち主がファンブルすると、破壊される。"]; - return self.$getBreakTable(name, table); - }, $Elysion_getLaboratoryBrakeTable$31.$$arity = 0); - - Opal.def(self, '$getPoolBrakeTable', $Elysion_getPoolBrakeTable$32 = function $$getPoolBrakeTable() { - var self = this, name = nil, table = nil; - - - name = "プール"; - table = ["風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", "熱いシャワー\n「……ふぅ」プールから出て、暖かいシャワーで冷えた体を暖める。疲れが少しずつほぐれていく。《生命力》が1D6点回復する。", "新作水着\n新しい水着の評判はどうかな?〔青春力〕の判定を行う。成功すると、プールにいるキャラクターの中から好きな者をその成功度と同じ人数だけ選び、そのキャラクターの自分に対する《感情値》が1点上昇する(プールに誰がいるのかは、最終的にGMが決定すること)。", "ポロリもあるよ\nプールからあがろうとしたき、思わず水着がポロリ。げげ。今の誰か見てたッ!?周囲にいる異性のキャラクターの自分に対する《感情値》の属性が反転する。", "熱視線\n誰かが、美しいフォームで飛び込み、水しぶきがあがる。思わず見惚れてしまう。プールにいるキャラクターの中から好きな者を一人選び、自分のそのキャラクターに対する《感情値》が1点上昇する(プールに誰がいるのかは、最終的にGMが決定すること)。", "眼福眼福\n水着がまぶしい!いい眺めかも……。《アウル》が1点回復する。", "人魚のように\n華麗なターンが決まり、周囲から賞賛の声があがる。プールにいるキャラクターの中から好きな者を一人を選び、そのキャラクターの自分に対する《感情値》が1点上昇する(プールに誰がいるのかは、最終的にGMが決定すること)。", "プカプカ\n水に浮かんでのんびりプカプカ。《アウル》が1点回復する。", "心地よい疲れ\n結構長い時間泳いだぞ。いい運動になったけど、お腹ペコペコダー。「空腹」の変調を受け、そのセッションの間、《生命力》の限界値が1D6点上昇する。", "記録に挑戦!\n「今日は、どこまで泳げるかな?」」自己新記録に挑戦!〔学力〕で判定を行う。成功すると、自己新記録を更新して《アウル》が2点回復する。失敗すると、溺れてしまう。《生命力》を2D6点減少する。", "地獄の特訓\n様々な地獄プールで特訓!みっちり自分の体をおいじめて、鍛えたぞ。〔青春力〕の判定を行う。成功すると、《生命力》が2D6点減少し、そのセッションの間、《生命力》の限界値が減少した《生命力》と同じ値だけ上昇する。"]; - return self.$getBreakTable(name, table); - }, $Elysion_getPoolBrakeTable$32.$$arity = 0); - - Opal.def(self, '$getInnerCourtBrakeTable', $Elysion_getInnerCourtBrakeTable$33 = function $$getInnerCourtBrakeTable() { - var self = this, name = nil, table = nil; - - - name = "中庭"; - table = ["風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", "オープンカフェ\nカフェテリアでお茶にする。優雅なひと時。《アウル》が1点回復する。", "犬登場\n「ワンワンワン!」不思議な犬がグラウンドに現れる。ここを掘れと言っているようだが……。1D6を振ること。奇数なら、地面にはお金が埋まっていた【お金】を一つ獲得する。偶数なら、低級の天魔が封印されていた。「学力」で判定を行う。失敗すると《生命力》に3D6点のダメージを受ける。", "観戦中\nグラウンドで行われている撃退士同士の特訓風景を眺めている。踏む。なるほどなぁ……。〔学力〕で判定を行う。成功すると、自分の授業欄の中から好きなものを一つ選び、□にチェックを入れる。", "占い師\n「そこのあなた。死相がでています。」そう言って、占い研のメンバーに呼び止められる。〔政治力〕の判定を行う。成功すると、危険を回避する方法を占ってもらうことができる。次に自分が判定で大失敗したとき、その判定のサイコロを1度だけ振り直すことができる。", "屋台\nお弁当屋さんや屋台が軒を並べている。美味しそうな匂いが漂ってきた。〔政治力〕の判定を行う。成功すると、色々な食事を食べて、《生命力》が1D6点と「空腹」の変調が回復する。", "特訓参加\n「おい、そこのお前!お前も一緒にやれ!」授業中の先生に、無理やり授業に参加させられる。ひたすら攻撃を避けまくる。ふは。疲れたー。《生命力》が2D6点減少し、そのセッションの間、《生命力》の限界値が減少した《生命力》と同じ値だけ上昇する。", "落し物\nあれ?こんなものが落ちてる。どうしたんだろう? 1なら【タバコ】、2なら【情報誌】、3なら【お洒落グッズ】、4なら【参考書】、5なら【阻霊符】、6なら【タリスマン】を一個獲得する。", "突然の告白!\n「先輩、ずっと前から憧れてました!」そう言って、後輩が告白して来た。え?ええッ!?突然の事に頭が真っ白になってしまった。好きな異性のキャラクター一人を選ぶ。そのキャラクターの自分に対する《感情値》が2点上昇する。その後、〔青春力〕で判定を行う。失敗すると「バカ」の変調を受ける。", "鉄球飛来!\n「おーい!危ないぞーッ!!」陸上部の投げた砲丸が飛んでくる。〔青春力〕で判定を行う。失敗すると《生命力》に2D6点のダメージを受ける。", "ちょっぴり贅沢\n今日は自分にご褒美。学食で贅沢しちゃおっかなー〔政治力〕で判定を行う。成功すると《生命力》が2D6点と《アウル》1点が回復する。"]; - return self.$getBreakTable(name, table); - }, $Elysion_getInnerCourtBrakeTable$33.$$arity = 0); - - Opal.def(self, '$getShoppingAvenueBrakeTable', $Elysion_getShoppingAvenueBrakeTable$34 = function $$getShoppingAvenueBrakeTable() { - var self = this, name = nil, table = nil; - - - name = "商店街"; - table = ["風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", "自習\nファーストフード店でレポート執筆。……あまり進まないなぁ。〔学力〕で判定を行う。成功度を2以上獲得すると、レポートは完成。自分の授業欄の中から好きなもの一つを選び、□にチェックを入れる。", "立ち話\n「よう。寄ってかないかい!」店の主人が陽気に声をかけてくる。〔政治力〕で判定を行う。成功すると、気になる話を聞かせてくれる。手がかり一つを選び、その情報を公開する。失敗すると、退屈な話に付き合わされる。「眠気」の変調を受ける。", "雰囲気のいい店\n「へぇ。こんな店あったんだ」とても雰囲気のいい店を見つける。次に自分がデート判定を行うとき、その達成値が2点上昇する。", "お気に入り!\n「おお!すごくいいッ!!」とってもこのみなオシャレアイテムを見つける。〔政治力〕の判定を行う。成功すると、アイテムの〔お洒落グッズ〕一個を獲得し、《アウル》1点を獲得する。", "大売出し\n「スーパークリアランスバザール!」お買い得なキャンペーンをやっている。アイテムの中から好きなものを一つ選ぶ。そのアイテムの価格が1低いものとして調達の判定を一度行う事ができる(ただし1未満にはならない)", "なじみの店\n先輩のアルバイトしているお店に遊びに行ってみた。色々サービスしてくれて大満足。《生命力》1D6点と《アウル》1点を回復する。", "休日\nお目当ての店に行ってみたら、シャッターが閉まっていた。どうやら臨時休業の模様。がっくりきて、《アウル》を1点減少する。", "泥棒\n「泥棒よー!捕まえてー!」商店街を走って逃げる不良生徒たち……捕まえるなら〔青春力〕で判定を行う。成功すると、泥棒を捕まえ、そのお礼としてアイテムの〔ポーション〕か〔タリスマン〕を一つ獲得する。失敗すると、泥棒を逃がした上に商店街の色々な場所を壊してしまい、しばらく出入り禁止に。このセッションの間、商店街で休憩を行うことができなくなる。", "福引\n福引をやっていた!1D6を振る。1〜5の目がでたら残念賞。アイテムの【焼きそばパン】一つを手に入れる。6の目がでたら【お金】を二つ手に入れる。", "家庭教師\n「ねぇねぇ、教えて酔う」近所の子供に勉強を教えてくれと頼まれる。〔学力で〕判定を行う。成功すると、彼らは尊敬の目できみを見つめる。アイテムの【後輩】を一つ獲得する。失敗すると「バカ」の変調を受ける。"]; - return self.$getBreakTable(name, table); - }, $Elysion_getShoppingAvenueBrakeTable$34.$$arity = 0); - - Opal.def(self, '$getDevastationBrakeTable', $Elysion_getDevastationBrakeTable$35 = function $$getDevastationBrakeTable() { - var self = this, name = nil, table = nil; - - - name = "廃墟"; - table = ["迷子\n「きゃーーー!」少女がディアボロに襲われている。〔青春力〕で判定を行う。成功すると、少女を助けて感謝される。少女の自分に対する《感情値》が3点上昇し、その属性が《好意》になる。失敗すると、少女は命は取り留めたものの、傷つき倒れてしまう。《生命力》に2D6点のダメージと「孤独」変調を受ける。", "ライバル登場?\n「一度、お前と手合わせしてみたかったんだよ」撃退士らしき見覚えある人物が現れる。好きなNPCを一人選び、そのキャラクターの自分に対する《感情値》が1点上昇する。", "無人の部屋\n「…………」誰もいないはずなのに、何かの気配がする。イヤな感じだ。〔青春力〕で判定を行う。成功すると、視線の正体を発見する。それはかわいい子猫だった。あまりのかわいらしさに《アウル》を1点獲得する。失敗すると「恐怖」の変調を受ける。", "戦いの跡\n戦いがあったであろう場所に、一振りの剣が突き刺さっていた。この剣の持ち主はどうなったんだろう…?アイテムの【大剣】一個を獲得する。", "裏の事情通\n「あんたの知りたい情報を売ってやろうか?」情報屋らしき男が情報の購入を持ちかける。手がかり一つを選び、調達の判定を一度行うことができる。情報の価格は、手がかりの[必要成功度-1(1未満にはならない)]になる。情報の調達に成功すると、その情報を公開する。", "怪しげな男\n「いいものがあるぜ。欲しいかい?]怪しげな男が【ポーション】を打っている。アイテムの【ポーション】の調達の判定を一度行うことができる。この【ポーション】の価格は3になるが、回復する《生命力》は3D6点になる。", "縄張り\n「おいおい、ここは俺たちの縄張りだぜ]不良たちに絡まれる。〔政治力〕で判定を行う。成功すると、不良たちは捨て台詞と共に逃げ出す。もし、廃墟に自分に対して《敵意》の属性の《感情値》の持ち主がいた場合、その属性を反転する(廃墟に誰がいるのかは、最終的にGMが決定すること)。失敗すると、1D6点のダメージを受ける。", "野良犬\n「グルルルルルッ!」野良犬たちが牙をむいている。〔青春力〕の判定を行う。失敗すると2D6点のダメージを受ける。", "隠れ家\n「学園だとどうしても気分が出なくてなぁ」【酒】か【タバコ】を何個でも使用することができる。ここで【酒】か【タバコ】を一個使用するたびに追加で《アウル》が1点回復する。また、ここで【酒】や【タバコ】を使った場合、その効果によって「眠気」や「孤独」の変調を受けない。", "実験\n「一度試してみたかったんだよな]ここでなら思い切り暴れても特に問題なさそうだ。あの技を試してみるか……。[青春力]で判定を行う。成功すると、自分の授業欄の中から好きなもの一つを選び、□にチェックを入れる。", "不良撃退士\n「ほう。いいもの持ってるじゃないか。そいつを寄こしたら見逃してやるよ」自分の携行品の中で一番価格の高いものを一つ選ぶ。それを渡せば特に何も起こらない。もし渡すのを断るのなら、〔青春力〕で判定を行う。成功度が2以下だった場合、3D6点のダメージを受ける。"]; - return self.$getBreakTable(name, table); - }, $Elysion_getDevastationBrakeTable$35.$$arity = 0); - - Opal.def(self, '$getGateBrakeTable', $Elysion_getGateBrakeTable$36 = function $$getGateBrakeTable() { - var self = this, name = nil, table = nil; - - - name = "ゲート"; - table = ["尋問\nゲート内にひそんでいた天魔から情報を収集する。〔政治力〕の判定を行う。成功すると、このシナリオに登場する可能性のある天魔の種類すべてをGMから教えてもらえる。失敗すると、1D6点のダメージを受ける。", "計略\n敵の計略に掛かる。〔政治力〕で判定を行う。失敗すると、GMは手がかり一つを選ぶ。その手がかりの必要成功度が1上昇する。この効果は累積しない。", "活性化\n戦いを通じて、《アウル》の使い方を学んで行く。〔学力〕で判定を行う。成功すると、《アウル》を2点回復する。失敗すると、1D6点のダメージを受ける。", "克服\n無数の敵と戦ううちに、心が研ぎ澄まされていく。好きな能力地で判定を行う。成功すると、その成功度と同じ数だけ変調を回復する。失敗すると、1D6点のダメージを受ける。", "経験\nゲート内で多くの天魔と戦う。好きな能力値で判定を行う。成功すると、その成功度の数と同じだけ、成長欄のまだチェックの入っていない□をチェックする事ができる。失敗すると、1D6点のダメージを受ける。", "不意打ち\n「……あれは、もしや?]ゲートの中で、恐ろしい程の殺気の持ち主を見かける。もしや、今回の事件の黒幕か?彼に不意打ちを仕掛けることができる。不意打ちを仕掛けるなら〔青春力〕の判定を行う。成功すると、そのシナリオの黒幕(ボス)に[判定成功度×1]D6点のダメージを与える事ができる。失敗すると、3D6点のダメージを受ける。", "捜索\nゲート内を捜索する。〔学力〕で判定を行う。成功すると、「初期アイテム決定表」を一度使用し、そのアイテム一個を獲得する。失敗すると、1D6点のダメージを受ける。", "戦友\n一緒に敵と戦ううちに、絆が芽生えてくる。〔青春力〕で判定を行う。成功すると、ゲートにいるキャラクターの中から好きなものを一人選ぶ。自分とそのキャラクターは、お互いに対する《感情値》が1点上昇する(ゲートに誰がいるのかは、最終的にGMが決定すること)。失敗すると1D6点のダメージを受ける。", "援軍\nゲートには大量の敵が待ち構えていた。〔政治力〕のはんていを行う。成功すると、仲間が助けに来てくれて逃げ出すことができる。アイテムの【ポーション】を一つ獲得する。失敗すると、1D6点のダメージを受ける。", "罠\nゲートに仕掛けられた罠が発動する!〔学力〕で判定を行う。失敗すると、1D6点のダメージとランダムに選んだ変調一つを受ける。", "魔剣\n敵と戦う内に、武器の切れ味が鋭くなっている。〔学力〕で判定を行う。成功すると好きな武器一つを選ぶ。このセッションの間、威力が1点上昇する。失敗すると、1D6点のダメージを受ける。"]; - return self.$getBreakTable(name, table); - }, $Elysion_getGateBrakeTable$36.$$arity = 0); - - Opal.def(self, '$getBreakTable', $Elysion_getBreakTable$37 = function $$getBreakTable(name, table) { - var $a, $b, self = this, number = nil, index = nil, text = nil; - - - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(number, 2); - text = table['$[]'](index); - if ($truthy(text['$nil?']())) { - return ""}; - return "" + (name) + "休憩表(" + (number) + ") " + (text); - }, $Elysion_getBreakTable$37.$$arity = 2); - - Opal.def(self, '$getD6Table', $Elysion_getD6Table$38 = function $$getD6Table(name, table) { - var $a, $b, self = this, number = nil, index = nil, text = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(number, 1); - text = table['$[]'](index); - if ($truthy(text['$nil?']())) { - return ""}; - return "" + (name) + "(" + (number) + ") " + (text); - }, $Elysion_getD6Table$38.$$arity = 2); - - Opal.def(self, '$getBattleFieldTable', $Elysion_getBattleFieldTable$39 = function $$getBattleFieldTable() { - var self = this, name = nil, table = nil; - - - name = "戦場表"; - table = ["平地。\n特に特殊効果はない。", "罠。\n落とし穴やセキュリティー装置など、無数の罠が仕掛けられた戦場。この戦場にいるキャラクターは、ダメージを受けたとき、速度によるダメージ修整が2倍になる。", "障害物。\n林の中や狭い部屋の中など、自由に身動きすることが難しい戦場。この戦場にいるキャラクターは、プロットを行うとき、5以上の速度をプロットできなくなる。", "機動戦\n車や電車、船や飛行機など、動いているものの上での戦闘を表す。この戦場にいるキャラクターは、何らかの行為判定にファンブルした場合〔青春力〕で判定を行う。失敗すると、行動済みになり、速度が0になる。", "力場。\n展開や魔界の影響を強く受けている戦場。この戦場にいるキャラクターは、ラウンドの終了時に速度0にいると、〔学力〕の判定を行うことができる。成功すると、《アウル》を1点獲得できる。", "修羅場\n自分たちとは別の撃退士や天魔たちが戦闘を行っていたり、悪意に満ちた第三勢力に囲まれていたりする戦場。この戦場にいるキャラクターは、ラウンドの終了時に速度0にいると、〔政治力〕の判定を行う。失敗すると、《生命力》が1D6点減少する。"]; - return self.$getD6Table(name, table); - }, $Elysion_getBattleFieldTable$39.$$arity = 0); - - Opal.def(self, '$getFatalWoundsTable', $Elysion_getFatalWoundsTable$40 = function $$getFatalWoundsTable() { - var self = this, name = nil, table = nil; - - - name = "致命傷表"; - table = ["圧倒的な攻撃が急所をつらぬく。\n行動不能になる。1D6ラウンド後の「ラウンドの終了時」に、まだ戦闘が継続しており、行動不能が回復していなければ、そのキャラクターは死亡する。", "昏睡し、身体中から血と生きる意志が失われていく。\n行動不能になる。また、この行動不能から回復した後、1D6を振り、ランダムに選んだ変調一つを受ける。", "大きな傷を負う。行動不能になる。", "凄まじい一撃に意識を失う。\n《生命力》が0点になり、行動不能になる。", "一瞬、気を失う。\n行動不能になる。1D6ラウンド後の「ラウンドの終了時」、もしくは、戦闘終了時に《生命力》が1点まで回復する(1D6ラウンドが経過するまでに、すでに《生命力》が1点以上に回復していた場合は、この効果は無効になる)。", "凄まじい幸運。\nそのシーンに自分に《好意》を持っているキャラクターがいたら、代わりにそのキャラクターがダメージを受けることができる(ダメージを代わりに受けるかどうかは、そのキャラクターを操るプレイヤー、もしくはGMが決定する)。誰もダメージを代わりに受けなかった場合、行動不能になる。"]; - return self.$getD6Table(name, table); - }, $Elysion_getFatalWoundsTable$40.$$arity = 0); - - Opal.def(self, '$getFumbleTable', $Elysion_getFumbleTable$41 = function $$getFumbleTable() { - var self = this, name = nil, table = nil; - - - name = "ファンブル表"; - table = ["何もかもむなしくなる。誰かに対する《感情値》を1点減少する。", "あまりの失敗に心理的変調をきたす。1D6を振ってランダムに変調一つを選び、それを受ける。", "ポッキリと心が折れる。《アウル》を1点失う。", "あまりにも酷い大失敗を見られてしまい、周囲のキャラクターからの評価が変わる。自分の周囲に、自分に対して《感情値》を持つキャラクターがいたら、それを反転させる。", "敵の罠にかかる。自分の周りにいる、自分以外のすべての見方キャラクターは《生命力》を1D6点減少する。", "アウルが暴走して、大惨事に。自分の《生命力》を2D6点減少する。"]; - return self.$getD6Table(name, table); - }, $Elysion_getFumbleTable$41.$$arity = 0); - - Opal.def(self, '$getRandomNpcSchoolLife', $Elysion_getRandomNpcSchoolLife$42 = function $$getRandomNpcSchoolLife() { - var self = this, name = nil, table = nil; - - - name = "学生生活関連NPC表"; - table = [[11, "振り直し/任意"], [12, "大山恵(おおやま・めぐみ):中等部3年0組:P84"], [13, "黒瀧辰馬(くろたき・たつま):風紀委員長・大学部5年0組:P82"], [14, "シルヴァリティア・ドーン:大学部1年0組:P83"], [15, "岸崎蔵人(きしざき・くらんど):大学部5年0組:P84"], [16, "レミエル・N・V:大学部2年0組:P83"], [22, "神楽坂茜(かぐらざか・あかね):生徒会会長・高等部2年0組:P82"], [23, "炎條忍(えんじょう・しのぶ):高等部1年0組:P83"], [24, "中山寧々美(なかやま・ねねみ):新聞同好会会長・高等部3年0組:P83"], [25, "恵ヴィヴァルディ(めぐみ・−):大学部2年0組:P83"], [26, "轟闘吾(とどろき・とうご):高等部3年0組:P84"], [33, "鬼島武(きじま・たけし):生徒会副会長・大学部1年0組:P82"], [34, "クリスティーナ・カーティス:大学部1年0組:P83"], [35, "潮崎紘乃(しおざき・ひろの):依頼斡旋所受付:P84"], [36, "ライゼ:教師・寮長:P85"], [44, "大塔寺源九郎(だいとうじ・げんくろう):生徒会書記・高等部3年0組:P82"], [45, "ストローベレー:用務員:P83"], [46, "竜崎アリス(りゅうざき・−):オペレーター:P84"], [55, "大鳥南(おおとり・みなみ):生徒会会計・高等部3年0組:P82"], [56, "筧鷹政(かけい・たかまさ):OB:P83"], [66, "振り直し/任意"]]; - return self.$getRandomNpc(name, table); - }, $Elysion_getRandomNpcSchoolLife$42.$$arity = 0); - - Opal.def(self, '$getRandomNpcOther', $Elysion_getRandomNpcOther$43 = function $$getRandomNpcOther() { - var self = this, name = nil, table = nil; - - - name = "教師・その他NPC表"; - table = [[11, "振り直し/任意"], [12, "月摘紫蝶(るつみ・しちょう):教師:P84"], [13, "棄棄(すてき):教師:P84"], [14, "遠野冴草(とおの・さえぐさ):教師:P84"], [15, "速水風子(はやみ・ふうこ):教師:P85"], [16, "アリス・ペンデルトン:教師:P85"], [22, "宝井正博(たからい・まさひろ):学園長:P82"], [23, "白田悠里(しろた・ゆうり):教師:P85"], [24, "常盤楓(ときわ・かえで):教師:P85"], [25, "ダイナマ伊藤(−・いとう):保健医:P85"], [26, "小日向千陰(おびなた・ちかげ):教師・司書:P85"], [33, "ウーネミリア:悪魔:P114"], [34, "太珀(たいはく):教師:P85"], [35, "神無月灯(みなづき・あかり):ヴァニタス:P114"], [36, "キーヨ:ヴァニタス:P114"], [44, "マッド・ザ・クラウン:悪魔:P114"], [45, "劉玄盛(りゅう・げんせい):シュトラッサー:P114"], [46, "厄蔵(やくぞう):シュトラッサー:P114"], [55, "ギメル・ツァダイ:天使:P114"], [56, "ナターシャ:シュトラッサー:P114"], [66, "振り直し/任意"]]; - return self.$getRandomNpc(name, table); - }, $Elysion_getRandomNpcOther$43.$$arity = 0); - - Opal.def(self, '$getRandomNpcDownClassmen', $Elysion_getRandomNpcDownClassmen$44 = function $$getRandomNpcDownClassmen() { - var self = this, name = nil, table = nil; - - - name = "学生図鑑 下級学年表"; - table = [[11, "若菜白兎(わかな・しろう):初等部2年2組:P72"], [12, "海原満月(かいばら・みづき):初等部4年1組:P66"], [13, "雫(しずく):初等部4年1組:P60"], [14, "相馬カズヤ(そうま・−):初等部4年1組:P48"], [15, "廿九日神無(ひづめ・かんな):初等部4年1組:P62"], [16, "カイン大澤(−・おおさわ):初等部5年2組:P12"], [22, "機嶋結(きじま・ゆう):初等部6年2組:P123"], [23, "静馬源一(しずま・げんいち):初等部6年12組:P78"], [24, "花菱彪臥(はなびし・ひょうが):中等部1年1組:P53"], [25, "天菱東希(てんびし・あずき):中等部2年2組:P61"], [26, "御守陸(みもり・りく):中等部2年2組:P51"], [33, "西園寺勇(さいおんじ・ゆう):中等部2年3組:P47"], [34, "九条朔(くじょう・さく):中等部3年1組:P77"], [35, "柴島華桜璃(くにじま・かおり):中等部3年1組:P48"], [36, "唐沢完子(からさわ・かんこ):中等部3年2組:P57"], [44, "雪成藤花(ゆきなり・とうか):中等部3年2組:P53"], [45, "桐原雅(きりはら・みやび):高等部1年1組:P18"], [46, "アイリス・L・橋場(−・るなくるす・はしば):高等部1年11組:P79"], [55, "双星一(そうせい・はじめ):高等部1年120組:P152"], [56, "影野恭弥(かげの・きょうや):高等部2年2組:P78"], [66, "振り直し/任意"]]; - return self.$getRandomNpc(name, table); - }, $Elysion_getRandomNpcDownClassmen$44.$$arity = 0); - - Opal.def(self, '$getRandomNpcUpperClassmen', $Elysion_getRandomNpcUpperClassmen$45 = function $$getRandomNpcUpperClassmen() { - var self = this, name = nil, table = nil; - - - name = "学生図鑑 上級学年表"; - table = [[11, "下妻笹緒(しもつま・ささお):高等部2年2組:P117"], [12, "ファティナ・V・アイゼンブルク(−・フォン・−):高等部2年3組:P110"], [13, "姫川翔(ひめかわ・しょう):高等部2年5組:P111"], [14, "イシュタル:高等部2年115組:P152"], [15, "小田切ルビィ(おだぎり・−):高等部3年4組:P109"], [16, "大炊御門菫(おおいのみかど・すみれ):高等部3年6組:P112"], [22, "朱頼天山楓(しゅらい・てんざん・かえで):高等部3年114組:P152"], [23, "米流是武武(べるぜぶぶ):高等部3年117組:P152"], [24, "麻生遊夜(あそう・ゆうや):大学部1年1組:P122"], [25, "フィオナ・ボールドウィン:大学部1年1組:P79"], [26, "アデル・リーヴィス:大学部1年50組:P152"], [33, "エルディン:大学部1年50組:P152"], [34, "斐川幽夜(ひかわ・ももや):大学部2年2組:P57"], [35, "ミハイル・エッカート:大学部2年4組:P122"], [36, "阿岳恭司(あたけ・きょうじ):大学部2年9組:P119"], [44, "アンジェラ・アップルトン:大学部2年9組:P75"], [45, "アウリーエ・F・ダッチマン(−・フライング・−):大学部3年50組:P152"], [46, "ジェディファ・エルクラステ:大学部3年50組:P152"], [55, "有田アリストテレス(ありた・−):大学部4年6組:P69"], [56, "澄野絣(すみの・かすり):大学部4年6組:P61"], [66, "振り直し/任意"]]; - return self.$getRandomNpc(name, table); - }, $Elysion_getRandomNpcUpperClassmen$45.$$arity = 0); - - Opal.def(self, '$getRandomNpc', $Elysion_getRandomNpc$46 = function $$getRandomNpc(name, table) { - var $a, $b, self = this, result = nil, number = nil; - - - $b = self.$get_table_by_d66_swap(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return "" + (name) + "(" + (number) + ") " + (result); - }, $Elysion_getRandomNpc$46.$$arity = 2); - - Opal.def(self, '$getUsuallyEncount', $Elysion_getUsuallyEncount$47 = function $$getUsuallyEncount(level) { - var self = this, name = nil, table = nil; - - - name = "日常遭遇表"; - table = [[2, "ブラックシープ(基本p129)×2"], [3, "イフリート(基本p126)、グリフォン(基本p126)"], [4, "ファウスト(基本p129)、ワーウルフ(基本p129)"], [5, "焔の蝶(p99)"], [6, "デビルキャリアー(p102)、狂信者(p104)"], [7, "ケルベロス(p99)、百足女(p99)"], [8, "カプリコーン(p102)×2"], [9, "邪神怪人(基本p135)"], [10, "聖少女(基本p127)"], [11, "業魔(基本p129)、デュアル(基本p126)"], [12, "ファイアレーベン(p98)×2、ゴーレム(p99)"], [13, "ブラッドウォーリア(p103)、ブラッドロード(p103)"], [14, "フェニックス(p99)、ドラゴンゾンビ(p99)"], [15, "マッドマーマンティス(p102)×2、バンパイアロード(p103)"], [16, "ドラゴン(p99)×2"], [17, "風紀委員(p107)、保安委員(p107)×2"]]; - return self.$getEncountTableResult(name, table, level); - }, $Elysion_getUsuallyEncount$47.$$arity = 1); - - Opal.def(self, '$getBossEncount', $Elysion_getBossEncount$48 = function $$getBossEncount(level) { - var self = this, name = nil, table = nil; - - - name = "ボスキャラクター遭遇表"; - table = [[2, "剥奪天使(p101)、イフリート(基本p126)×PCと同じ数"], [3, "没落悪魔(p105)、ブラックシープ(基本p129)×PCと同じ数"], [4, "技巧派教員(基本p134)、一般人×PCと同じ数"], [5, "肉体派教員(基本p135)、オペレーター×PCと同じ数"], [6, "フェニックス(p99)、焔の蝶(p99)×PCと同じ数"], [7, "美しきバンシー(p103)、デビルキャリアー(p102)×PCと同じ数"], [8, "ドラゴン(p99)、キラー(基本p126)×PCと同じ数"], [9, "バンパイアロード(p103)、戦闘員(基本p132)×PCと同じ数"], [10, "殺戮天使(p101)、下級使徒(p100)×PCと同じ数"], [11, "小悪魔(p105)、デスストーカー(p102)×PCと同じ数"], [12, "仙人(基本p127)、サブラヒナイト(基本p126)×PCと同じ数"], [13, "狂犬(p104)、ワーウルフ(基本p129)×PCと同じ数"], [14, "下級天使(基本p128)、ケルベロス(p99)×PCと同じ数"], [15, "誘惑悪魔(p105)、カプリコーン(p102)×PCと同じ数"], [16, "権天使(基本p128)、百足女(p99)×PCと同じ数"], [17, "悪魔貴族(基本p131)、ブラッドウォーリア(p103)×PCと同じ数"]]; - return self.$getEncountTableResult(name, table, level); - }, $Elysion_getBossEncount$48.$$arity = 1); - - Opal.def(self, '$getEncountTableResult', $Elysion_getEncountTableResult$49 = function $$getEncountTableResult(name, table, level) { - var $a, $b, self = this, dice = nil, index = nil, text = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_plus(dice, level); - text = self.$get_table_by_number(index, table, table.$last().$last()); - if ($truthy(text['$nil?']())) { - return ""}; - return "" + (name) + "(" + (index) + ") " + (text); - }, $Elysion_getEncountTableResult$49.$$arity = 3); - Opal.const_set($nesting[0], 'TABLES', $hash2(["EBT", "GIT", "HBT", "HT", "IT", "JH", "KT", "NA", "NT", "OJ1", "OJ2", "TBT", "UBT", "UT1", "UT2", "UT3", "UT4"], {"EBT": $hash2(["name", "type", "table"], {"name": "お祭り室休憩表", "type": "2d6", "table": "" + "花火\\n「たーまやー!」大きな花火があがって、祭りの雰囲気を盛り上げる。真夜中パートだった場合《好意》を持っているキャラクター一人を選ぶ。選んだキャラクターに対する《感情値》が2点上昇する。真夜中パート以外の場合ゆっくりして《アウル》が1点上昇する。\n" + "客天魔\\n「今日は客として来たんだよ。」天魔が客としてやって来ている!?何もしなければいいけど……。[政治力]で判定を行う。成功すると天魔から称賛され、《アウル》が1点回復する。失敗すると、天魔が暴れて帰ってしまい、[政治力]が2D6点減少する。\n" + "クタクタ……\\n「休ませて……。」祭りの準備にかり出されて、骨の髄まで疲れてしまった。【お金】を1個手に入れるが、「眠気」の変調を受ける。\n" + "意外な一面\\n「あいつ、あんな表情もできたんだ。」お祭りの中で、仲間の意外な一面を知る。PCの中から好きなキャラクターを選ぶ。選んだキャラクターに対する《感情値》の属性を反転する。\n" + "出店!\\nクラブやクラスでお店を出すことになった。[青春力]で判定を行う。判定に成功すると、お店は繁盛して【お金】を1個手に入れる。判定に失敗すると、恥ずかしい目に遭って【アウル】が1点減少する。\n" + "お祭りの雰囲気\\n「ワイワイ、ガヤガヤ。」お祭りだ!つい開放的な気分になって、隣の人を誘ってしまおうかなと思える。好きなPCを一人選ぶ。選んだキャラクターとデートを行う。このデートは選んだキャラクターが行動済みでも行え、デートを行っても行動済みにならない。必ず「友達デート表」を使用すること。\n" + "対抗レース!\\nグラウンドでクラブや委員会を巻き込んだ大レースが始まった!【クラブ】か【委員会】のコミュに所属しているPCは全員、[青春力]で判定を行う。成功すると、《アウル》が1点回復する。さらに、最も達成値が低いキャラクターはMVPとなり、【後輩】を手に入れる。\n" + "水泳大会!\\n「あの子の為に、泳ぐぞ!」大規模な水泳大会!さあ、新記録は出るのか!好きなPCを一人選び、[青春力]で判定を行う。判定に成功すると、選んだPCの自分に対する《感情値》が[判定値の成功度×1]点上昇する。このとき、【水着】もしくは【派手な水着】を持っている場合、この判定の達成値が3点上昇する。\n" + "応援合戦!\\n「フレー!フレー!」応援団に交じって仲間を鼓舞しよう!このパートの間、自分は「行動済み」であってもアシストを行うことができる。\n" + "怪しげなお店\\n「いらっしゃい。……ふふふ。」怪しいクラブが出店しているお店がある。本当に大丈夫か?1D6を振る。1の目が出た場合、【メイド服】を手に入れる。2の目が出た場合、【究極鉛筆】を手に入れる。3の目が出た場合、【みそかれーうどん】を手に入れる。4の目が出た場合、【進化の石】を手に入れる。5の目が出た場合、【牛乳】を手に入れる。6の目が出た場合、【安眠セット】を手に入れる。ただし、ここで手に入れた種別が「食物」のアイテムを使用すると「病気」の変調を受ける。\n" + "キャンプファイヤーの下で……\\nキャンプファイヤーを囲みながら、みんなで踊る。PC全員は、好きなPCを一人選ぶ。PC全員は、選んだPCに対する《感情値》が1点上昇し、属性は《好意》となる。\n"}), "GIT": $hash2(["name", "type", "table"], {"name": "陰謀表", "type": "2d6", "table": "" + "「お前たちの血を邪神様の生贄に捧げてやる!」\\n世界征服同好会の仕掛けた邪悪で陰湿なトラップにひっかかる。PC全員は《生命力》が2D6点減少する。このシナリオに登場する世界征服同好会のキャラクターの名前が分かっている場合、そのキャラクターに対する《感情値》を1点上昇させ、その属性を《敵意》にする。\n" + "「……キミ、よく見るとかわいいね。ちょっとつきあわない?」\\n世界征服同好会の一員からデートを申し込まれる。ランダムにPC一人を選ぶ。そのPCは、このシナリオに登場ソウル正解征服同好会のキャラクター一人と、デートを一回行うことができる。(行動済みにはならない。)\n" + "「すみません、少し道を尋ねたいのですが……。」\\n謎の老婆に道を尋ねられる。PCの代表者は1D6を振ること。奇数だと老婆に変装した世界征服同好会の刺客だった。PC全員は《生命力》が1D6点減少し、「バカ」の変調を受ける。偶数だと助けた老人から感謝される。【焼きそばパン】一個か【タリスマン】一個を獲得する。\n" + "「あなたは、だんだん眠くなるぅ〜。」\\n世界征服同好会の催眠に合う。PC全員が受けている変調をすべて回復し、「眠気」の変調を受ける。\n" + "「ねぇねぇ、あの人たちって……。」\\n世界征服同好会が、PCたちの悪い噂をばらまく。このパートに判定を行う場合、[学力]以外の能力値で行う判定は、ファンブル率が3上昇する。\n" + "「ねぇねぇ、ボクともっと遊んでよ。」\\n世界征服同好会が、様々な妨害工作を行っている。このパートに行う判定は、ファンブル率が1上昇する。\n" + "「ねぇねぇ、あの人って……。」\\nPCたちの一人に世界征服同好会の一員であるという嫌疑がかけられる。ランダムにPC一人を選ぶ。そのPCに対して《好意》を持っているPCがいたら、そのPCは[政治力]で判定を行う。失敗するとNPCのそのキャラクターに対する《好意》が《敵意》に変わる。\n" + "「ふふふ、僕の言う未来に興味はないかい?」\\n世界征服同好会の催眠に合う。PC全員の《アウル》の現在値を1にする。\n" + "「これ以上我々の邪魔をすると死ぬことになるぞ。」\\n物陰から世界征服同好会の構成員が襲い掛かってきた。PCの代表者は[青春力]の判定を行う。成功すると、襲いかかってきた構成員を返り討ちにできる。GMは決戦フェイズに登場するエネミーから一体を選び、《生命力》を3D6点減少させること。失敗すると、戦いに敗れてしまう。PC全員は、《生命力》が1D6点減少し「恐怖」の変調を受ける。\n" + "「ふふふふふ、ここで大人しくしておけ。」\\n世界征服同好会に監禁されてしまう。PCの代表者は[学力]の判定を行う。失敗すると、プレイスの中から好きなものを一つ選ぶ。PC全員、そのパートは、そのプレイスで休憩する以外の行動を行えなくなる。\n" + "「我々のファミリーに近づく者には消えてもらおう。」\\n世界征服同好会の仕掛けた周到で悪逆なトラップにひっかかる。PC全員はゲームマスターの選んだ変調を一つ受ける。(PCごとにばらばらの変調を選んでもよい)。このシナリオに登場する世界征服同好会のキャラクターの名前が分かっている場合、そのキャラクターに対する《感情値》を1点上昇させ、その属性を《敵意》にする。\n"}), "HBT": $hash2(["name", "type", "table"], {"name": "温泉休憩表", "type": "2d6", "table": "" + "風紀委員の巡回!\\n\"「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであればこっぴどく叱られる。[政治力]で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。\n" + "サウナで激闘!\\n「……あいつに負けるわけには。」サウナでがまん比べが始ってしまう。[政治力]で判定を行う。成功すると《アウル》1点を獲得する。失敗すると、「病気」の変調を受ける。\n" + "湯上りの一杯\\n\"「お風呂の後はこれだよな!」[政治力]で判定を行う。成功すると、変調をすべて回復することができる。\n" + "あれ?服が……\\n「あれ?何だこれ?」自分の着替えを入れたはずのロッカーを開けてみると、服が消えて、別の何かが……。「防具」を装備していたら、その中から一つを選び、それを消費する。そして消費したアイテムの代わりに「初期アイテム決定表(基本P43)」を一度使用して、ランダムに一つのアイテムを獲得する。\n" + "偶然の出会い\\n「あれ?来てたんだ。」知り合いと偶然出会う。好きなキャラクター一人を選び、[青春力]の判定を行う。成功すると、そのキャラクターとデートを一度行うことができる。\n" + "いいお湯♪\\n「ふう。体の芯から温まるぅ。」疲れがとれていく。《生命力》が1D6点、《アウル》が1点回復する。\n" + "転倒!\\n「はわわわわッ!」洗い場で滑って転びそうになる。[学力]で判定を行う。失敗すると、獲得していた「手がかり」を一つ失う。(「手がかり」の活用が行えなくなるだけで、情報を忘れるわけではない。)\n" + "命の洗濯\\n「……。」お風呂に入りながら、今週の出来事を振り返る。失敗を次に活かさないと……。もしも、このセッションの間に一度以上判定に失敗していたら、《アウル》の限界値が1点上昇する。\n" + "湯あたり\\n「うう。のぼせちゃった。」お風呂に長時間入ってのぼせてしまった。1D6点のダメージを受けるか、次のパート行動しないか、どちらかを選ぶ。\n" + "美容効果\\nお肌がツルツルピカピカ!そのセッションの間、[青春力]の判定の達成値が1点上昇する。\n" + "混浴ッッ!?\\n湯船に入ってみると、そこには異性の姿が……ええッ!?男湯と女湯間違えたッ!?好きな異性のキャラクターを1人選ぶ。そのキャラクターの自分に対する《達成値》が2点上昇する。その後、[青春力]で判定を行う。失敗すると「バカ」の変調を受ける。\n"}), "HT": $hash2(["name", "type", "table"], {"name": "ロウ表", "type": "2d6", "table": "" + "「たまには釣りにでも行くか」「釣り人表」を振る。\n" + "「汚い下着があったので没収!」【インナー】(基本p104)を取得し《アウル》を1点取得する。ただし、誰のものかはPCの中からランダムで決定する。\n" + "「街をきれいに!……ふー、心がきれいになったなあ!」ボランティア活動をしよう!プレイスの中から1つ選び、その表を振る。その後、生命力を1D6点回復する。\n" + "「いやー、いいことを言ったなあ」お説教をする。あなた以外のPCを一人選ぶ。選ばれたPCとあなたはカオスレートを+1する。\n" + "ついつい人の恋愛事情に口出ししてしまう。自分以外の任意のPC(できれば異性)2人をデートさせる。この表によるデートは行動を消費しない。\n" + "身近にいるカオスなやつがむかついてしょうがない。理由もなく殴ってすべてのカオスレートが-2以下のPCに2D6点のダメージを与える。成功度を1として扱い好きな能力値でガードが可能。\n" + "「な、なんでもないはずなのに!」叱っていたアイツのことが気になってきた……。もっともカオスレートが低い異性のキャラクターに対する《感情値》が2点上昇する。\n" + "ネット上で情報について検索していたら、いつの間にかネット上で喧嘩していた。つい熱くなってしまう。「バカ」の変調を受けるが、好きな感情を1つだけ公開することができる。\n" + "ありがたい高級なツボを手近にいたPCに売りつける。ランダムに【お金】を持つあなた以外のPCを選ぶ。そのキャラクターは【お金】をすべて消費し、【タリスマン】(基本p107)を入手するが、あなたは「孤独」を受ける。【お金】がなかった場合、舌打ちだけする。\n" + "「欲望には勝てなかったよ……」ちょっとした誘惑から悪堕ちして、露出度の高い格好になるしやたらと黒と漢字を好むようになった。カオスレートを-5する。【タバコ】(基本p160)と【お酒】(基本p160)を1個ずつ獲得する。\n" + "ロウとカオスの境界線なんて曖昧なものなのかもしれない。「カオス表」を振る。\n"}), "IT": $hash2(["name", "type", "table"], {"name": "釣り人表", "type": "1d6", "table": "" + "「良い物が釣れたぞ!」価格3以下のアイテムを1つ選んで入手する。\n" + "足を釣った。行動済でなかった場合、行動済みになる。\n" + "下着を釣ってしまった。【インナー】(基本p104)を入手する。ただし、誰のものかはPCの中からランダムで決定する。\n" + "「太公望になった気分だ」釣りをしながら、政治を語る。カオスレートを+1もしくは-1できる。\n" + "「大漁大漁!」お魚を換金して【お金】を1個入手する。\n" + "ついサメを釣ってしまった。【キラー】(基本p126)と戦闘を行う。この戦闘はイベントシーン扱いとし、撤退できない。\n"}), "JH": $hash2(["name", "type", "table"], {"name": "授業ハプニング表", "type": "2d6", "table": "" + "授業中に突然テロリストが侵入してくる。「日常遭遇表(p97)」を使ってエネミーを決定する。そのエネミーと、この授業判定を行ったキャラクターは戦闘を行う。\n" + "もうすこしがんばりましょう。先生からのプレゼント。もし、この授業判定に失敗していたら、この表を使用したキャラクターは【参考書】(基本p107)を一つ獲得する。\n" + "居眠りしてたらリフレッシュ!この表を使用したキャラクターは、《生命力》を1D6点回復する。\n" + "先生からお使いを頼まれる。この表を利用したキャラクターは、「図書館」(基本p92)の「図書館休憩表」を使用する。\n" + "アウルが暴走して事故発生!この表を使用したキャラクターは《生命力》を1D6点減少する。\n" + "授業中に生徒同士で口論になる。この授業判定を行ったキャラクターの中に、この表を使用したキャラクターに対して《好意》を持っていたキャラクターがいたら、その属性を《敵意》にする。\n" + "先生から課題をもらう。この表を使用したキャラクターは、次に[学力]で判定に成功するまで、この授業の□にチェックを入れることができない(チェックを入れることができないような場合は、特に効果はない)。\n" + "先生は受講態度が気にくわなかったようだ。なぜか廊下に立たされる。この表を使用したキャラクターは、1D6を振って、ランダムに変調一つを選び、それを受ける。\n" + "ちょっとだけ自習になる。この授業判定に参加したキャラクター全員は、「教室」(基本p87)の「教室休憩表」を一度ずつ使用する。\n" + "を?こんなところにパンが落ちてる。この表を使用したキャラクターは【焼きそばパン】(基本p106)を一つ獲得する。この【焼きそばパン】を使用した時1D6を振る。1が出ると、通常の【焼きそばパン】の効果の代わりに《生命力》が1点減少する。\n" + "先生はみんなの授業態度に大いに満足したようだ。授業判定の成否や授業レベル、授業の種類に関わらず、授業判定に参加したキャラクター全員は、この曜日の授業の□にチェックを入れる。\n"}), "KT": $hash2(["name", "type", "table"], {"name": "カオス表", "type": "2d6", "table": "" + "「たまには釣りにでも行くか」「釣り人表」を振る。\n" + "悪いとわかっていたがつい下着を手に取ってしまう。【インナー】(基本p104)を取得し《アウル》を1点獲得する。ただし、誰のものかはPCの中からランダムで決定する。\n" + "「ヒャッハー!」カオスに染まってとりあえず手近なところに襲撃を行う。プレイスの中から1つを選び、その表を振る。その後【お金】を1個入手し、カオスレートを-1する。\n" + "「なあ、ちょっとやってみないか。ちょっとでいいから、な?」ワルの道に勧誘する。あなた以外のPCを一人選ぶ。選ばれたPCとあなたはカオスレートを-1する。\n" + "「横恋慕をしてナンボ」それがカオスの恋愛だ。一度でもデートをしたPCの片方に対してデートを行う。デートしたPCが居ない場合、任意のPCに対してデートを行う。この表によるデートは行動を消費しない。\n" + "身近にいるロウなやつがムカついてしょうがない。理由もなく殴ってすべてのカオスレートが+2以上のPCに2D6点のダメージを与える。この攻撃は成功度を1として扱い、好きな能力値でガード可能。\n" + "「だるい……休もう……」あなたの《生命力》を2D6点回復する。ただし、「眠気」の変調を受ける。\n" + "ゲームセンターに行ってストレスを発散!……できればいいな。「青春力」の判定を行う。成功すると、《アウル》を2個獲得する。失敗するとムキになって【お金】を1個失う上に「バカ」の変調を受ける。\n" + "「せっかくだから覗きをしよう。フヘへ……」「プール休憩表」もしくは「温泉休憩表(p78)を任意のPCに振らせ、その効果をPCに適応させる。その後あなたのそのPCに対する《感情値》を2点上昇させる。\n" + "捨て猫を披露。あなたのカオスレートが+5され、あなたに対する《感情値》の属性がすべて反転する。また【後輩】(基本p106)を獲得する。\n" + "ロウとカオスの境界線なんて曖昧なものなのかもしれない。「ロウ表」を振る。\n"}), "NA": $hash2(["name", "type", "table"], {"name": "新初期アイテム決定表", "type": "2d6", "table": "" + "従 者 p89\n" + "菓子折り p88\n" + "ホイッスル p89\n" + "おせっかいな友人 p89\n" + "釣り竿 p89\n" + "牛 乳 p88\n" + "究極六角鉛筆 p90\n" + "使い捨てカメラ p89\n" + "メイド服 p89\n" + "マスコットストラップ p89\n" + "秘薬の小瓶 p88\n"}), "NT": $hash2(["name", "type", "table"], {"name": "ニュートラル表", "type": "1d6", "table": "" + "「善とか悪とか、全部煩わしくなってきた」カオスレートが+2以上もしくは2以下のPCがいる場合、そのキャラクター全てを理由もなく殴りつける。。殴りつけられたPCに2D6点のダメージを与える。この攻撃は成功度を1として扱い、好きな能力値でガード可能。\n" + "「危ない!」電車に轢かれそうな子供が!?【生命力】を1D6点失うものの、助けて感謝される。いいことをすると気持ちいいなあ。カオスレート+1。\n" + "心のバランスを保つため、釣りでもしよう。「釣り人表」を振る。\n" + "「どうしよう」落し物の財布を拾っちゃった……。ネコババすると、カオスレートが-3されて【お金】を2つ入手。ちゃんと交番に届けるとカオスレートが+1されて、お礼に【お金】を1つ入手。\n" + "急に興奮する。「ロウ表」もしくは「カオス表」のどちらか好きな方を振る。\n" + "人に影響される。すべてのPCのカオスレートを合計し、+1以上だった場合、あなたのカオスレートを+2する。-1以下だった場合、あなたのカオスレートを-2する。0だった場合、特に何も起こらない。\n"}), "OJ1": $hash2(["name", "type", "table"], {"name": "音楽ジャンル決定表A", "type": "1d6", "table": "" + "さわやかな\n" + "ちょっと大人な\n" + "正統派\n" + "初恋色の\n" + "女の子らしい\n" + "カオス全開☆\n"}), "OJ2": $hash2(["name", "type", "table"], {"name": "音楽ジャンル決定表B", "type": "1d6", "table": "" + "アイドルポップス\n" + "ロックチューン\n" + "ラブソング\n" + "バラード\n" + "テクノポップ\n" + "電波ソング\n"}), "TBT": $hash2(["name", "type", "table"], {"name": "修学旅行休憩表", "type": "2d6", "table": "" + "見回り先生の巡回!\\n「そこ、何やってる!」見回りの先生に見つかった。現在真夜中パートであれば、こっぴどく叱られる。[政治力]で判断を行う。失敗すると、次のパートは行動できない。真夜中パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。\n" + "自然災害\\n修学旅行先で自然災害に遭ってしまい、観光しようにもできない。仕方ないのでホテルでゆっくりしよう。《生命力》を2D6点回復する。\n" + "地元の天魔!\\n「見かけない撃退士だな。」「初めて見る天魔だ。」好きな能力値で判定を行う。判定に成功すると、このシナリオで登場する天魔の種類をすべてGMから教えてもらえる。失敗すると《生命力》が1D6点減少する。\n" + "二人で迷子\\n「あれれ?こっちの道でよかったのかな?」二人ではぐれてしまう。PCの中から好きなキャラクターを1人選ぶ。自分の選んだキャラクターに対する《感情値》が1点上昇し、属性が《敵意》になる。\n" + "ホームシック\\n不意に、久遠ヶ原学園が懐かしくなっていしまう。「孤独」の変調を受ける。\n" + "歴史的観光地\\n歴史のある観光地を見て回り、自分の五感で知識を蓄える。[学力]で判定を行う。西欧すると、自分の修得している授業から好きなものを一つ選び、□にチェックを入れる。\n" + "お土産屋\\n「旅のお土産にお一ついかがですか?」お土産屋でいろいろなものをチェックする!役立つものもあるかも?[青春力]で判定を行う。成功すると、分類が[一般]、価値が2以下の好きなアイテムを一個獲得する。失敗すると、木刀やペナントなど役に立たないものを買い込んでしまう。【お金】を1個失う。\n" + "名産品\\nその他の名産品を食べて舌鼓を打つ。おいしい!《アウル》が1点回復し、「空腹」の変調が回復する。\n" + "地元の学校\\n「よろしゅーに。」「なかようせんとあかんよ。」地元の学校と共同授業だ。これは負けていられない。[学力]で判定を行う。判定に成功すると、地元の生徒からの《好意》が2点上昇し、「バカ」の変調が回復する。失敗すると、「バカ」の変調を受ける。\n" + "枕投げ!\\nやっぱり修学旅行といえば枕投げでしょ!PCの中から好きなキャラクターを一人選ぶ。[青春力]で判定を行う。成功すると、そのキャラクターは《生命力》が1D6点減少し、そのキャラクターの自分に対する《感情値》が2点上昇する。失敗すると、自分の《生命力》が1D6点減少し、そのキャラクターに対する《感情値》が2点上昇する。\n" + "好きな人語り!\\n「ねえねえ、この際だからハッキリ言っちゃおうよ。」修学旅行での楽しみ、それがこの好きな人を語り合う時間だ。真夜中パートならば、PC全員はそれぞれ《好意》が最も高いPCを一人発表する。発表したPCは、発表されたPCに対する《感情値》が2点上昇する。真夜中パート以外であれば、よく眠ってリフレッシュ。《アウル》が1点回復する。\n"}), "UBT": $hash2(["name", "type", "table"], {"name": "潜入調査休憩表", "type": "2d6", "table": "" + "風紀委員の巡回!\\n「そこ、何をやっている!」他校の風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。[政治力]で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。\n" + "協力者\\n「キミが、久遠ヶ原学園から来た子だね。」正体を知っている協力者との密会。次に行う調査判定が2点上昇する。\n" + "変装中\\n「どう?似合ってる?」変装をする為に、支援物資が届いていた。【メガネ】か【ジャージ】の内、好きな方を獲得する。\n" + "不良に絡まれる\\n「おい、テメェ最近目立ってるんだってな。」どうやら、他校の不良生徒に絡まれてしまったようだ。穏便に解決しなければ。【お金】か【タバコ】か【お酒】があれば、1個消費する。消費できなかった場合、殴られて《生命力》が1D6点減少する。\n" + "教師からの注意\\n「キミ、ちゃんとしてくれないと困るよ。」規律をいつの間にか破っていたらしい。教師から注意を受けて、《アウル》が1点減少する。\n" + "一般授業\\n「で、あるからして……。」一般的な授業を受ける。これが外の世界の普通か……。[学力]で判定を行う。成功すると【一般授業】か【交流授業】の□にチェックを入れる。どちらもない場合、スケジュールの好きな欄に【一般授業】を入れられる。\n" + "お昼\\n「はい、今日のメニューはこれ。」少々混むことはあるが、問題なく普通に食べることができる。コメントし辛い味で、なんだか物足りないような気もするけど……。《生命力》を1D6点回復する。\n" + "おっかけ\\n「びびびっと来ました!」どうしても目立ってしまう自分に、おっかけができてしまう。やりにくい……。おっかけとデートを行うことを選べる。デートを行わなかった場合、「孤独」の変調を受ける。\n" + "うっかり\\n「え、なにあれ……?」いつもの調子で、学校の中で能力を使いそうになる。[政治力]で判定を行う。成功すると、うまく説得して協力者にできる。【おせっかいな友人】を獲得する。失敗すると、なんとか誤魔化せたが視線が痛い。撃退士以外の生徒の自分に対する《感情値》が2点上昇し、その属性は《敵意》となる。\n" + "襲撃\\n「きゃあー!」一般生徒が天魔に襲われている!バレないように助けないと……。好きな能力値で判定を行う。成功すると、うまくバレずに助け出せる。撃退士以外の生徒に対する《感情値》が3点上昇し、その属性は《好意》となる。失敗すると、助けることには成功したが、傷を負ってしまう。《生命力》が2D6点減少する。\n" + "疑い\\n「キミって、ひょっとすると……。」勘のいい生徒から、本格的に疑われてしまう。[政治力]で判定を行う。成功すると、疑いを晴らすことができた上に、重要な情報をくれる。GMが選択した手がかり一つの情報を公開する。失敗すると、疑いの視線が学校中から向けられてしまう。《アウル》を2点減少する。\n"}), "UT1": $hash2(["name", "type", "table"], {"name": "ユニット名決定表1A", "type": "d66", "table": "" + "11:白い\n" + "12:月の\n" + "13:私は\n" + "14:虹色の\n" + "15:放課後\n" + "16:はじめての\n" + "22:乙女の\n" + "23:ピンクの\n" + "24:魔法の\n" + "25:蒼い\n" + "26:恋の\n" + "33:ときめき\n" + "34:太陽の\n" + "35:燃えよ\n" + "36:雨の\n" + "44:星の\n" + "45:君に\n" + "46:思い出の\n" + "55:都会の\n" + "56:やさしい\n" + "66:黒い\n"}), "UT2": $hash2(["name", "type", "table"], {"name": "ユニット名決定表1B", "type": "d66", "table": "" + "11:革命\n" + "12:エージェント\n" + "13:アリス\n" + "14:自転車\n" + "15:忍者\n" + "16:予知夢\n" + "22:リボン\n" + "23:メロディー\n" + "24:バースデイ\n" + "25:チョコレート\n" + "26:プレゼント\n" + "33:カオス\n" + "34:つばさ\n" + "35:夏\n" + "36:ココロ\n" + "44:ジェラシー\n" + "45:朝ご飯\n" + "46:保健室\n" + "55:祈り\n" + "56:迷宮\n" + "66:久遠ヶ原学園\n"}), "UT3": $hash2(["name", "type", "table"], {"name": "ユニット名決定表2A", "type": "d66", "table": "" + "11:堕天使\n" + "12:ラヴクラフト\n" + "13:セレブリティ\n" + "14:スターダスト\n" + "15:ロリポップ\n" + "16:ファースト\n" + "22:ストロベリー\n" + "23:シャイニー\n" + "24:ドリーム\n" + "25:ヴァンパイア\n" + "26:シンデレラ\n" + "33:スウィート\n" + "34:ウィッチ\n" + "35:フラワー\n" + "36:オレンジ\n" + "44:ダイアモンド\n" + "45:モノクロ\n" + "46:バレンタイン\n" + "55:スタイリッシュ\n" + "56:コンクリート\n" + "66:ニンジャ\n"}), "UT4": $hash2(["name", "type", "table"], {"name": "ユニット名決定表2B", "type": "d66", "table": "" + "11:スレイヤー\n" + "12:ファイター\n" + "13:セッション\n" + "14:ドーナツ\n" + "15:ワルツ\n" + "16:ティアラ\n" + "22:ガール\n" + "23:スカイ\n" + "24:キス\n" + "25:シティ\n" + "26:ステージ\n" + "33:ラブ\n" + "34:ロマンス\n" + "35:ノート\n" + "36:ショコラ\n" + "44:プリンセス\n" + "45:キャンディ\n" + "46:ハニー\n" + "55:ハンター\n" + "56:ディスコ\n" + "66:ブルー\n"})}).$freeze()); - return self.$setPrefixes($rb_plus(["EL.*", "DATE.*", "FDATE.*", "ODATE.*", "MDATE.*", "RBT", "SBT", "BBT", "CBT", "DBT", "IBT", "FBT", "LBT", "PBT", "NBT", "ABT", "VBT", "GBT", "HBT", "BFT", "FWT", "FT", "SRT", "ORT", "DRT", "URT", "NJ\\d+", "BS\\d+"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/EmbryoMachine.js b/src/assets/dicebot/EmbryoMachine.js deleted file mode 100644 index 74e76aa11..000000000 --- a/src/assets/dicebot/EmbryoMachine.js +++ /dev/null @@ -1,230 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$gsub', '$last_match', '$checkRoll', '$==', '$<=', '$>=', '$=~', '$to_i', '$parren_killer', '$roll', '$&', '$sortType', '$collect', '$split', '$[]', '$+', '$>', '$<', '$to_s', '$get_hit_level_table', '$get_hit_location_table', '$debug', '$===', '$get_shoot_fumble_table', '$get_melee_fumble_table', '$!=', '$get_table_by_number', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'EmbryoMachine'); - - var $nesting = [self].concat($parent_nesting), $EmbryoMachine_initialize$1, $EmbryoMachine_changeText$2, $EmbryoMachine_dice_command_xRn$11, $EmbryoMachine_check_nD10$12, $EmbryoMachine_checkRoll$13, $EmbryoMachine_rollDiceCommand$15, $EmbryoMachine_get_hit_location_table$16, $EmbryoMachine_get_shoot_fumble_table$17, $EmbryoMachine_get_melee_fumble_table$18, $EmbryoMachine_get_hit_level_table$19; - - - Opal.const_set($nesting[0], 'ID', "EmbryoMachine"); - Opal.const_set($nesting[0], 'NAME', "エムブリオマシンRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "えむふりおましんRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定ロール(EMt+m@c#f)\n" + " 目標値t、修正値m、クリティカル値c(省略時は20)、ファンブル値f(省略時は2)で攻撃判定を行います。\n" + " 命中した場合は命中レベルと命中部位も自動出力します。\n" + " Rコマンドに読み替えされます。\n" + "・各種表\n" + " ・命中部位表 HLT\n" + " ・白兵攻撃ファンブル表 MFT\n" + " ・射撃攻撃ファンブル表 SFT\n"); - self.$setPrefixes(["(EM\\t+|HLT|MFT|SFT)"]); - - Opal.def(self, '$initialize', $EmbryoMachine_initialize$1 = function $$initialize() { - var $iter = $EmbryoMachine_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $EmbryoMachine_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $EmbryoMachine_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.sortType = 1); - }, $EmbryoMachine_initialize$1.$$arity = 0); - - Opal.def(self, '$changeText', $EmbryoMachine_changeText$2 = function $$changeText(string) { - var $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, self = this; - - - string = $send(string, 'gsub', [/EM(\d+)([\+\-][\+\-\d]+)(@(\d+))(\#(\d+))/i], ($$3 = function(){var self = $$3.$$s || this; - - return "" + "2R10" + ($$($nesting, 'Regexp').$last_match(2)) + ">=" + ($$($nesting, 'Regexp').$last_match(1)) + "[" + ($$($nesting, 'Regexp').$last_match(4)) + "," + ($$($nesting, 'Regexp').$last_match(6)) + "]"}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - string = $send(string, 'gsub', [/EM(\d+)([\+\-][\+\-\d]+)(\#(\d+))/i], ($$4 = function(){var self = $$4.$$s || this; - - return "" + "2R10" + ($$($nesting, 'Regexp').$last_match(2)) + ">=" + ($$($nesting, 'Regexp').$last_match(1)) + "[20," + ($$($nesting, 'Regexp').$last_match(4)) + "]"}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - string = $send(string, 'gsub', [/EM(\d+)([\+\-][\+\-\d]+)(@(\d+))/i], ($$5 = function(){var self = $$5.$$s || this; - - return "" + "2R10" + ($$($nesting, 'Regexp').$last_match(2)) + ">=" + ($$($nesting, 'Regexp').$last_match(1)) + "[" + ($$($nesting, 'Regexp').$last_match(4)) + ",2]"}, $$5.$$s = self, $$5.$$arity = 0, $$5)); - string = $send(string, 'gsub', [/EM(\d+)([\+\-][\+\-\d]+)/i], ($$6 = function(){var self = $$6.$$s || this; - - return "" + "2R10" + ($$($nesting, 'Regexp').$last_match(2)) + ">=" + ($$($nesting, 'Regexp').$last_match(1)) + "[20,2]"}, $$6.$$s = self, $$6.$$arity = 0, $$6)); - string = $send(string, 'gsub', [/EM(\d+)(@(\d+))(\#(\d+))/i], ($$7 = function(){var self = $$7.$$s || this; - - return "" + "2R10>=" + ($$($nesting, 'Regexp').$last_match(1)) + "[" + ($$($nesting, 'Regexp').$last_match(3)) + "," + ($$($nesting, 'Regexp').$last_match(5)) + "]"}, $$7.$$s = self, $$7.$$arity = 0, $$7)); - string = $send(string, 'gsub', [/EM(\d+)(\#(\d+))/i], ($$8 = function(){var self = $$8.$$s || this; - - return "" + "2R10>=" + ($$($nesting, 'Regexp').$last_match(1)) + "[20," + ($$($nesting, 'Regexp').$last_match(3)) + "]"}, $$8.$$s = self, $$8.$$arity = 0, $$8)); - string = $send(string, 'gsub', [/EM(\d+)(@(\d+))/i], ($$9 = function(){var self = $$9.$$s || this; - - return "" + "2R10>=" + ($$($nesting, 'Regexp').$last_match(1)) + "[" + ($$($nesting, 'Regexp').$last_match(3)) + ",2]"}, $$9.$$s = self, $$9.$$arity = 0, $$9)); - return (string = $send(string, 'gsub', [/EM(\d+)/i], ($$10 = function(){var self = $$10.$$s || this; - - return "" + "2R10>=" + ($$($nesting, 'Regexp').$last_match(1)) + "[20,2]"}, $$10.$$s = self, $$10.$$arity = 0, $$10))); - }, $EmbryoMachine_changeText$2.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $EmbryoMachine_dice_command_xRn$11 = function $$dice_command_xRn(string, nick_e) { - var self = this; - - return self.$checkRoll(string, nick_e) - }, $EmbryoMachine_dice_command_xRn$11.$$arity = 2); - - Opal.def(self, '$check_nD10', $EmbryoMachine_check_nD10$12 = function $$check_nD10(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル" - } else if ($truthy($rb_ge(dice_total, 20))) { - return " > クリティカル" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $EmbryoMachine_check_nD10$12.$$arity = 5); - - Opal.def(self, '$checkRoll', $EmbryoMachine_checkRoll$13 = function $$checkRoll(string, nick_e) { - var $a, $b, $$14, self = this, output = nil, diff = nil, crit = nil, fumble = nil, mod = nil, total_n = nil, modText = nil, dice_now = nil, dice_str = nil, dice_loc = nil, dice_arr = nil, big_dice = nil; - - - output = "1"; - if ($truthy(/(^|\s)S?(2[rR]10([\+\-\d]+)?([>=]+(\d+))(\[(\d+),(\d+)\]))(\s|$)/i['$=~'](string))) { - } else { - return output - }; - string = $$($nesting, 'Regexp').$last_match(2); - diff = 0; - crit = 20; - fumble = 2; - mod = 0; - total_n = 0; - modText = $$($nesting, 'Regexp').$last_match(3); - if ($truthy($$($nesting, 'Regexp').$last_match(5))) { - diff = $$($nesting, 'Regexp').$last_match(5).$to_i()}; - if ($truthy($$($nesting, 'Regexp').$last_match(7))) { - crit = $$($nesting, 'Regexp').$last_match(7).$to_i()}; - if ($truthy($$($nesting, 'Regexp').$last_match(8))) { - fumble = $$($nesting, 'Regexp').$last_match(8).$to_i()}; - if ($truthy(modText)) { - mod = self.$parren_killer("" + "(0" + (modText) + ")").$to_i()}; - $b = self.$roll(2, 10, self.$sortType()['$&'](1)), $a = Opal.to_ary($b), (dice_now = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$roll(2, 10), $a = Opal.to_ary($b), (dice_loc = ($a[0] == null ? nil : $a[0])), $b; - dice_arr = $send(dice_str.$split(/,/), 'collect', [], ($$14 = function(i){var self = $$14.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$14.$$s = self, $$14.$$arity = 1, $$14)); - big_dice = dice_arr['$[]'](1); - output = "" + (dice_now) + "[" + (dice_str) + "]"; - total_n = $rb_plus(dice_now, mod); - if ($truthy($rb_gt(mod, 0))) { - output = $rb_plus(output, "" + "+" + (mod)) - } else if ($truthy($rb_lt(mod, 0))) { - output = $rb_plus(output, mod.$to_s())}; - if ($truthy(output['$=~'](/[^\d\[\]]+/))) { - output = "" + (nick_e) + ": (" + (string) + ") > " + (output) + " > " + (total_n) - } else { - output = "" + (nick_e) + ": (" + (string) + ") > " + (output) - }; - if ($truthy($rb_le(dice_now, fumble))) { - output = $rb_plus(output, " > ファンブル") - } else if ($truthy($rb_ge(dice_now, crit))) { - output = $rb_plus(output, $rb_plus($rb_plus(" > クリティカル > ", self.$get_hit_level_table(big_dice)), "" + "(ダメージ+10) > [" + (dice_loc) + "]" + (self.$get_hit_location_table(dice_loc)))) - } else if ($truthy($rb_ge(total_n, diff))) { - output = $rb_plus(output, $rb_plus($rb_plus(" > 成功 > ", self.$get_hit_level_table(big_dice)), "" + " > [" + (dice_loc) + "]" + (self.$get_hit_location_table(dice_loc)))) - } else { - output = $rb_plus(output, " > 失敗") - }; - return output; - }, $EmbryoMachine_checkRoll$13.$$arity = 2); - - Opal.def(self, '$rollDiceCommand', $EmbryoMachine_rollDiceCommand$15 = function $$rollDiceCommand(command) { - var $a, $b, self = this, output = nil, type = nil, number = nil, $case = nil; - - - self.$debug("rollDiceCommand command", command); - output = "1"; - type = ""; - number = 0; - $case = command; - if (/HLT/i['$===']($case)) { - type = "命中部位"; - $b = self.$roll(2, 10), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_hit_location_table(number);} - else if (/SFT/i['$===']($case)) { - type = "射撃ファンブル"; - $b = self.$roll(2, 10), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_shoot_fumble_table(number);} - else if (/MFT/i['$===']($case)) { - type = "白兵ファンブル"; - $b = self.$roll(2, 10), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_melee_fumble_table(number);}; - if ($truthy(output['$!=']("1"))) { - output = "" + (type) + "表(" + (number) + ") > " + (output)}; - return output; - }, $EmbryoMachine_rollDiceCommand$15.$$arity = 1); - - Opal.def(self, '$get_hit_location_table', $EmbryoMachine_get_hit_location_table$16 = function $$get_hit_location_table(num) { - var self = this, table = nil; - - - table = [[4, "頭"], [7, "左脚"], [9, "左腕"], [12, "胴"], [14, "右腕"], [17, "右脚"], [20, "頭"]]; - return self.$get_table_by_number(num, table); - }, $EmbryoMachine_get_hit_location_table$16.$$arity = 1); - - Opal.def(self, '$get_shoot_fumble_table', $EmbryoMachine_get_shoot_fumble_table$17 = function $$get_shoot_fumble_table(num) { - var self = this, output = nil, table = nil, dc = nil; - - - output = "1"; - table = ["暴発した。使用した射撃武器が搭載されている部位に命中レベルAで命中する。", "あまりに無様な誤射をした。パイロットの精神的負傷が2段階上昇する。", "誤射をした。自機に最も近い味方機体に命中レベルAで命中する。", "誤射をした。対象に最も近い味方機体に命中レベルAで命中する。", "武装が暴発した。使用した射撃武器が破損する。ダメージは発生しない。", "転倒した。次のセグメントのアクションが待機に変更される。", "弾詰まりを起こした。使用した射撃武器は戦闘終了まで使用できなくなる。", "砲身が大きく歪んだ。使用した射撃武器による射撃攻撃の命中値が戦闘終了まで-3される。", "熱量が激しく増大した。使用した射撃武器の消費弾薬が戦闘終了まで+3される。", "暴発した。使用した射撃武器が搭載されている部位に命中レベルBで命中する。", "弾薬が劣化した。使用した射撃武器の全てのダメージが戦闘終了まで-2される。", "無様な誤射をした。パイロットの精神的負傷が1段階上昇する。", "誤射をした。対象に最も近い味方機体に命中レベルBで命中する。", "誤射をした。自機に最も近い味方機体に命中レベルBで命中する。", "砲身が歪んだ。使用した射撃武器による射撃攻撃の命中値が戦闘終了まで-2される。", "熱量が増大した。使用した射撃武器の消費弾薬が戦闘終了まで+2される。", "砲身がわずかに歪んだ。使用した射撃武器による射撃攻撃の命中値が戦闘終了まで-1される。", "熱量がやや増大した。使用した射撃武器の消費弾薬が戦闘終了まで+1される。", "何も起きなかった。"]; - dc = 2; - if ($truthy(table['$[]']($rb_minus(num, dc)))) { - output = table['$[]']($rb_minus(num, dc))}; - return output; - }, $EmbryoMachine_get_shoot_fumble_table$17.$$arity = 1); - - Opal.def(self, '$get_melee_fumble_table', $EmbryoMachine_get_melee_fumble_table$18 = function $$get_melee_fumble_table(num) { - var self = this, output = nil, table = nil, dc = nil; - - - output = "1"; - table = ["大振りしすぎた。使用した白兵武器が搭載されている部位の反対の部位(右腕に搭載されているなら左側)に命中レベルAで命中する。", "激しく頭を打った。パイロットの肉体的負傷が2段階上昇する。", "過負荷で部位が爆発した。使用した白兵武器が搭載されている部位が全壊する。ダメージは発生せず、搭載されている武装も破損しない。", "大振りしすぎた。使用した白兵武器が搭載されている部位の反対の部位(右腕に搭載されているなら左側)に命中レベルBで命中する。", "武装が爆発した。使用した白兵武器が破損する。ダメージは発生しない。", "部分的に機能停止した。使用した白兵武器は戦闘終了まで使用できなくなる。", "転倒した。次のセグメントのアクションが待機に変更される。", "激しい刃こぼれを起こした。使用した白兵武器の全てのダメージが戦闘終了まで-3される。", "地面の凹凸にはまった。次の2セグメントは移動を行うことができない。", "刃こぼれを起こした。使用した白兵武器の全てのダメージが戦闘終了まで-2される。", "大振りしすぎた。使用した白兵武器が搭載されている部位の反対の部位(右腕に搭載されているなら左側)に命中レベルCで命中する。", "頭を打った。パイロットの肉体的負傷が1段階上昇する。", "駆動系が損傷した。移動力が戦闘終了まで-2される(最低1)。", "間合いを取り損ねた。隣接している機体(複数の場合は1機をランダムに決定)に激突する。", "機体ごと突っ込んだ。機体が向いている方角へ移動力をすべて消費するまで移動する。", "制御系が損傷した。回避値が戦闘終了まで-1される(最低1)。", "踏み誤った。機体が向いている方角へ移動力の半分を消費するまで移動する。", "たたらを踏んだ。機体が向いている方角へ1の移動力で移動する。", "何も起きなかった。"]; - dc = 2; - if ($truthy(table['$[]']($rb_minus(num, dc)))) { - output = table['$[]']($rb_minus(num, dc))}; - return output; - }, $EmbryoMachine_get_melee_fumble_table$18.$$arity = 1); - return (Opal.def(self, '$get_hit_level_table', $EmbryoMachine_get_hit_level_table$19 = function $$get_hit_level_table(num) { - var self = this, table = nil; - - - table = [[6, "命中レベルC"], [9, "命中レベルB"], [10, "命中レベルA"]]; - return self.$get_table_by_number(num, table); - }, $EmbryoMachine_get_hit_level_table$19.$$arity = 1), nil) && 'get_hit_level_table'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/EndBreaker.js b/src/assets/dicebot/EndBreaker.js deleted file mode 100644 index b616dccf1..000000000 --- a/src/assets/dicebot/EndBreaker.js +++ /dev/null @@ -1,124 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range; - - Opal.add_stubs(['$setPrefixes', '$===', '$to_i', '$last_match', '$checkRoll', '$getLifeAndDeathUnknownResult', '$debug', '$!=', '$roll', '$sort', '$collect', '$split', '$concat', '$*', '$size', '$select', '$==', '$+', '$join', '$>', '$each', '$get_table_by_d66']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'EndBreaker'); - - var $nesting = [self].concat($parent_nesting), $EndBreaker_initialize$1, $EndBreaker_rollDiceCommand$2, $EndBreaker_checkRoll$3, $EndBreaker_getLifeAndDeathUnknownResult$8; - - - Opal.const_set($nesting[0], 'ID', "EndBreaker"); - Opal.const_set($nesting[0], 'NAME', "エンドブレイカー!"); - Opal.const_set($nesting[0], 'SORT_KEY', "えんとふれいかあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 (nEB)\n" + " n個のD6を振る判定。ダブルトリガー発動で自動振り足し。\n" + "・各種表\n" + " ・生死不明表 (LDUT)\n"); - self.$setPrefixes(["\\d+EB", "LDUT"]); - - Opal.def(self, '$initialize', $EndBreaker_initialize$1 = function $$initialize() { - var $iter = $EndBreaker_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $EndBreaker_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $EndBreaker_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.d66Type = 1); - }, $EndBreaker_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $EndBreaker_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, $b, self = this, diceCount = nil, tableName = nil, text = nil, number = nil, $case = nil, result = nil; - - - if ($truthy(/(\d+)EB/i['$==='](command))) { - - diceCount = $$($nesting, 'Regexp').$last_match(1).$to_i(); - return self.$checkRoll(diceCount);}; - tableName = ""; - text = ""; - number = 0; - $case = command; - if ("LDUT"['$===']($case)) { - tableName = "生死不明表"; - $b = self.$getLifeAndDeathUnknownResult(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b;} - else {return nil}; - result = "" + (tableName) + "(" + (number) + "):" + (text); - return result; - }, $EndBreaker_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$checkRoll', $EndBreaker_checkRoll$3 = function $$checkRoll(diceCount) { - var $a, $b, $c, $$4, $$5, $$6, self = this, rollCount = nil, result = nil, diceFullList = nil, _ = nil, dice_str = nil, diceList = nil; - - - self.$debug("EndBreaker diceCount", diceCount); - rollCount = diceCount; - result = ""; - diceFullList = []; - while ($truthy(rollCount['$!='](0))) { - - $c = self.$roll(rollCount, 6), $b = Opal.to_ary($c), (_ = ($b[0] == null ? nil : $b[0])), (dice_str = ($b[1] == null ? nil : $b[1])), $c; - diceList = $send(dice_str.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)).$sort(); - diceFullList.$concat(diceList); - rollCount = $rb_times($send(diceList, 'select', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](1);}, $$5.$$s = self, $$5.$$arity = 1, $$5)).$size(), 2); - result = $rb_plus(result, "" + "[" + (diceList.$join()) + "]"); - if ($truthy($rb_gt(rollCount, 0))) { - result = $rb_plus(result, " ダブルトリガー! ")}; - }; - result = $rb_plus(result, " >"); - $send($range(2, 6, false), 'each', [], ($$6 = function(num){var self = $$6.$$s || this, $$7, count = nil; - - - - if (num == null) { - num = nil; - }; - count = $send(diceFullList, 'select', [], ($$7 = function(i){var self = $$7.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](num);}, $$7.$$s = self, $$7.$$arity = 1, $$7)).$size(); - if (count['$=='](0)) { - return nil - } else { - return (result = $rb_plus(result, "" + " [" + (num) + ":" + (count) + "個]")) - };}, $$6.$$s = self, $$6.$$arity = 1, $$6)); - return result; - }, $EndBreaker_checkRoll$3.$$arity = 1); - return (Opal.def(self, '$getLifeAndDeathUnknownResult', $EndBreaker_getLifeAndDeathUnknownResult$8 = function $$getLifeAndDeathUnknownResult() { - var self = this, table = nil; - - - table = [" 1日:生還!", " 1日:生還!", " 1日:生還!", " 1日:生還!", " 1日:生還!", " 1日:生還!", " 1日:生還!", " 5日:敵に捕らわれ、ひどい暴行と拷問を受けた。", " 2日:謎の人物に命を救われた。", "10日:奴隷として売り飛ばされた。", " 8日:おぞましい儀式の生贄として連れ去られた。", " 9日:幽閉・投獄された。", " 1日:生還!", " 7日:モンスター蠢く地下迷宮に滑落した。", "12日強力なマスカレイドにとらわれ、実験台にされた。", " 8日:放浪中に遭遇した事件を、颯爽と解決していた。", " 5日:飢餓状態に追い込まれた。", "15日:記憶を失い放浪した。", " 1日:生還!", "10日:異性に命を救われて、手厚い看病を受けた。", " 3日:負傷からくる熱病で、生死の境を彷徨った。", "11日:闘奴にされたが、戦いと友情の末に自由を獲得した。", " 6日:負傷したまま川に落ち、遥か下流まで流された。", " 9日:敵に連れ去られ、執拗な拷問を受け続けた。", " 1日:生還!", " 4日:繰り返す「死の悪夢」に苛まれた。", " 3日:巨獣の巣に連れ去られた。", "10日:謎の集団に救われて、手厚い看病を受けた。", " 3日:チッタニアンの集落に迷い込み、もてなしを受けた。", " 7日:ピュアリィの群れにとらわれ、弄ばれた。", " 1日:生還!", " 6日:楽園のような場所を発見し、しばらく逗留した。", " 9日:盗賊団に救われ、恩返しとして少し用心棒をした。", "10日:熱病の見せる官能的な幻影にとらわれ、彷徨った。", " 5日:謎の賞金首に狙われ、傷めつけられていた。", " - :「五分五分」の一般判定。失敗すると死亡。"]; - return self.$get_table_by_d66(table); - }, $EndBreaker_getLifeAndDeathUnknownResult$8.$$arity = 0), nil) && 'getLifeAndDeathUnknownResult'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/EtrianOdysseySRS.js b/src/assets/dicebot/EtrianOdysseySRS.js deleted file mode 100644 index ea2074325..000000000 --- a/src/assets/dicebot/EtrianOdysseySRS.js +++ /dev/null @@ -1,1170 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/DiceBot"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$freeze', '$attr_reader', '$map', '$to_proc', '$join', '$private', '$clearPrefixes', '$!', '$empty?', '$prefixs', '$prefixes', '$class', '$warn', '$id', '$setPrefixes', '$attr_accessor', '$name', '$sort_key', '$help_message', '$attr_writer', '$rand', '$roll', '$marshalSignOfInequality', '$unlimitedRollDiceType', '$getD66Value', '$parren_killer', '$debug', '$isGetOriginalMessage', '$getOriginalMessage', '$=~', '$prefixesPattern', '$last_match', '$removeDiceCommandMessage', '$rollDiceCommandCatched', '$nil?', '$!=', '$sub', '$rollDiceCommand', '$to_s', '$backtrace', '$size', '$===', '$check_1D100', '$check_1D20', '$check_2D6', '$check_nD10', '$check_nD6', '$check_nDx', '$is_a?', '$==', '$send', '$get_table_by_nD6', '$get_table_by_nDx', '$getTableValue', '$[]', '$-', '$/', '$getD66', '$bcdice', '$get_table_by_number', '$+', '$*', '$<', '$each', '$>=', '$kind_of?', '$lambda', '$call', '$select', '$public_methods', '$upcase', '$to_i', '$getTableInfoFromExtraTableText', '$get_table_by_nDx_extratable', '$get_table_by_d66', '$floor', '$%', '$get_table_by_d66_swap', '$raise', '$gsub', '$rollTableMessageDiceText', '$split', '$inspect']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceBot'); - - var $nesting = [self].concat($parent_nesting), $DiceBot_initialize$4, $DiceBot_postSet$5, $DiceBot_info$6, $DiceBot_id$7, $DiceBot_gameType$8, $DiceBot_name$9, $DiceBot_gameName$10, $DiceBot_sort_key$11, $DiceBot_help_message$12, $DiceBot_getHelpMessage$13, $DiceBot_prefixes$14, $DiceBot_setSendMode$15, $DiceBot_bcdice$eq$16, $DiceBot_bcdice$17, $DiceBot_rand$18, $DiceBot_roll$19, $DiceBot_marshalSignOfInequality$20, $DiceBot_unlimitedRollDiceType$21, $DiceBot_setSortType$22, $DiceBot_d66$23, $DiceBot_parren_killer$24, $DiceBot_changeText$25, $DiceBot_dice_command$26, $DiceBot_isGetOriginalMessage$27, $DiceBot_removeDiceCommandMessage$28, $DiceBot_rollDiceCommandCatched$29, $DiceBot_rollDiceCommand$30, $DiceBot_dice_command_xRn$31, $DiceBot_check_result$32, $DiceBot_check_nDx$33, $DiceBot_check_1D100$34, $DiceBot_check_1D20$35, $DiceBot_check_nD10$36, $DiceBot_check_2D6$37, $DiceBot_check_nD6$38, $DiceBot_get_table_by_2d6$39, $DiceBot_get_table_by_1d6$40, $DiceBot_get_table_by_nD6$41, $DiceBot_get_table_by_nDx$42, $DiceBot_get_table_by_1d3$43, $DiceBot_getD66$44, $DiceBot_get_table_by_d66_swap$45, $DiceBot_get_table_by_d66$46, $DiceBot_getDiceRolledAdditionalText$47, $DiceBot_getDiceRevision$48, $DiceBot_isD9$49, $DiceBot_getGrichText$50, $DiceBot_should_reroll$ques$51, $DiceBot_get_table_by_number$52, $DiceBot_getTableValue$54, $DiceBot_analyzeDiceCommandResultMethod$56, $DiceBot_get_table_by_nDx_extratable$59, $DiceBot_getTableCommandResult$60, $DiceBot_getTableInfoFromExtraTableText$61, $DiceBot_roll_tables$63; - - self.$$prototype.rerollLimitCount = self.$$prototype.d66Type = nil; - - Opal.const_set($nesting[0], 'EMPTY_PREFIXES_PATTERN', /(^|\s)(S)?()(\s|$)/i.$freeze()); - Opal.const_set($nesting[0], 'ID', "DiceBot"); - Opal.const_set($nesting[0], 'NAME', "DiceBot"); - Opal.const_set($nesting[0], 'SORT_KEY', "*たいすほつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', ""); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $setPrefixes$1, $clearPrefixes$2, $inherited$3; - - - self.$attr_reader("prefixes"); - self.$attr_reader("prefixesPattern"); - - Opal.def(self, '$setPrefixes', $setPrefixes$1 = function $$setPrefixes(prefixes) { - var self = this; - - - self.prefixes = $send(prefixes, 'map', [], "freeze".$to_proc()).$freeze(); - self.prefixesPattern = new RegExp("" + "(^|\\s)(S)?(" + (prefixes.$join("|")) + ")(\\s|$)", 'i').$freeze(); - return self; - }, $setPrefixes$1.$$arity = 1); - - Opal.def(self, '$clearPrefixes', $clearPrefixes$2 = function $$clearPrefixes() { - var self = this; - - - self.prefixes = [].$freeze(); - self.prefixesPattern = $$($nesting, 'EMPTY_PREFIXES_PATTERN'); - return self; - }, $clearPrefixes$2.$$arity = 0); - self.$private(); - return (Opal.def(self, '$inherited', $inherited$3 = function $$inherited(subclass) { - var self = this; - - return subclass.$clearPrefixes() - }, $inherited$3.$$arity = 1), nil) && 'inherited'; - })(Opal.get_singleton_class(self), $nesting); - self.$clearPrefixes(); - (Opal.class_variable_set($nesting[0], '@@bcdice', nil)); - Opal.const_set($nesting[0], 'DEFAULT_SEND_MODE', 2); - - Opal.def(self, '$initialize', $DiceBot_initialize$4 = function $$initialize() { - var $a, self = this; - - - self.sendMode = $$($nesting, 'DEFAULT_SEND_MODE'); - self.sortType = 0; - self.sameDiceRerollCount = 0; - self.sameDiceRerollType = 0; - self.d66Type = 1; - self.isPrintMaxDice = false; - self.upperRollThreshold = 0; - self.unlimitedRollDiceType = 0; - self.rerollNumber = 0; - self.defaultSuccessTarget = ""; - self.rerollLimitCount = 10000; - self.fractionType = "omit"; - if ($truthy(($truthy($a = self.$prefixs()['$empty?']()['$!']()) ? self.$class().$prefixes()['$empty?']() : $a))) { - - self.$warn("" + (self.$id()) + ": #prefixs is deprecated. Please use .setPrefixes."); - return self.$class().$setPrefixes(self.$prefixs()); - } else { - return nil - }; - }, $DiceBot_initialize$4.$$arity = 0); - self.$attr_accessor("rerollLimitCount"); - self.$attr_reader("sendMode", "sameDiceRerollCount", "sameDiceRerollType", "d66Type"); - self.$attr_reader("isPrintMaxDice", "upperRollThreshold"); - self.$attr_reader("defaultSuccessTarget", "rerollNumber", "fractionType"); - - Opal.def(self, '$postSet', $DiceBot_postSet$5 = function $$postSet() { - var self = this; - - return nil - }, $DiceBot_postSet$5.$$arity = 0); - - Opal.def(self, '$info', $DiceBot_info$6 = function $$info() { - var self = this; - - return $hash2(["gameType", "name", "sortKey", "prefixs", "info"], {"gameType": self.$id(), "name": self.$name(), "sortKey": self.$sort_key(), "prefixs": self.$class().$prefixes(), "info": self.$help_message()}) - }, $DiceBot_info$6.$$arity = 0); - - Opal.def(self, '$id', $DiceBot_id$7 = function $$id() { - var self = this; - - return $$$(self.$class(), 'ID') - }, $DiceBot_id$7.$$arity = 0); - - Opal.def(self, '$gameType', $DiceBot_gameType$8 = function $$gameType() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameType is deprecated. Please use #id."); - return self.$id(); - }, $DiceBot_gameType$8.$$arity = 0); - - Opal.def(self, '$name', $DiceBot_name$9 = function $$name() { - var self = this; - - return $$$(self.$class(), 'NAME') - }, $DiceBot_name$9.$$arity = 0); - - Opal.def(self, '$gameName', $DiceBot_gameName$10 = function $$gameName() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameName is deprecated. Please use #name."); - return self.$name(); - }, $DiceBot_gameName$10.$$arity = 0); - - Opal.def(self, '$sort_key', $DiceBot_sort_key$11 = function $$sort_key() { - var self = this; - - return $$$(self.$class(), 'SORT_KEY') - }, $DiceBot_sort_key$11.$$arity = 0); - - Opal.def(self, '$help_message', $DiceBot_help_message$12 = function $$help_message() { - var self = this; - - return $$$(self.$class(), 'HELP_MESSAGE') - }, $DiceBot_help_message$12.$$arity = 0); - - Opal.def(self, '$getHelpMessage', $DiceBot_getHelpMessage$13 = function $$getHelpMessage() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #getHelpMessage is deprecated. Please use #help_message."); - return self.$help_message(); - }, $DiceBot_getHelpMessage$13.$$arity = 0); - - Opal.def(self, '$prefixes', $DiceBot_prefixes$14 = function $$prefixes() { - var self = this; - - return self.$class().$prefixes() - }, $DiceBot_prefixes$14.$$arity = 0); - Opal.alias(self, "prefixs", "prefixes"); - - Opal.def(self, '$setSendMode', $DiceBot_setSendMode$15 = function $$setSendMode(m) { - var self = this; - - return (self.sendMode = m) - }, $DiceBot_setSendMode$15.$$arity = 1); - self.$attr_writer("upperRollThreshold"); - - Opal.def(self, '$bcdice=', $DiceBot_bcdice$eq$16 = function(b) { - var self = this; - - return (Opal.class_variable_set($nesting[0], '@@bcdice', b)) - }, $DiceBot_bcdice$eq$16.$$arity = 1); - - Opal.def(self, '$bcdice', $DiceBot_bcdice$17 = function $$bcdice() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a) - }, $DiceBot_bcdice$17.$$arity = 0); - - Opal.def(self, '$rand', $DiceBot_rand$18 = function $$rand(max) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rand(max) - }, $DiceBot_rand$18.$$arity = 1); - - Opal.def(self, '$roll', $DiceBot_roll$19 = function $$roll($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'roll', Opal.to_a(args)); - }, $DiceBot_roll$19.$$arity = -1); - - Opal.def(self, '$marshalSignOfInequality', $DiceBot_marshalSignOfInequality$20 = function $$marshalSignOfInequality($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'marshalSignOfInequality', Opal.to_a(args)); - }, $DiceBot_marshalSignOfInequality$20.$$arity = -1); - - Opal.def(self, '$unlimitedRollDiceType', $DiceBot_unlimitedRollDiceType$21 = function $$unlimitedRollDiceType() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$unlimitedRollDiceType() - }, $DiceBot_unlimitedRollDiceType$21.$$arity = 0); - self.$attr_reader("sortType"); - - Opal.def(self, '$setSortType', $DiceBot_setSortType$22 = function $$setSortType(s) { - var self = this; - - return (self.sortType = s) - }, $DiceBot_setSortType$22.$$arity = 1); - - Opal.def(self, '$d66', $DiceBot_d66$23 = function $$d66($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'getD66Value', Opal.to_a(args)); - }, $DiceBot_d66$23.$$arity = -1); - - Opal.def(self, '$parren_killer', $DiceBot_parren_killer$24 = function $$parren_killer(string) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$parren_killer(string) - }, $DiceBot_parren_killer$24.$$arity = 1); - - Opal.def(self, '$changeText', $DiceBot_changeText$25 = function $$changeText(string) { - var self = this; - - - self.$debug("DiceBot.parren_killer_add called"); - return string; - }, $DiceBot_changeText$25.$$arity = 1); - - Opal.def(self, '$dice_command', $DiceBot_dice_command$26 = function $$dice_command(string, nick_e) { - var $a, $b, self = this, secret_flg = nil, secretMarker = nil, command = nil, output_msg = nil; - - - if ($truthy(self.$isGetOriginalMessage())) { - string = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$getOriginalMessage()}; - self.$debug("dice_command Begin string", string); - secret_flg = false; - if ($truthy(self.$class().$prefixesPattern()['$=~'](string))) { - } else { - - self.$debug("not match in prefixes"); - return ["1", secret_flg]; - }; - secretMarker = $$($nesting, 'Regexp').$last_match(2); - command = $$($nesting, 'Regexp').$last_match(3); - command = self.$removeDiceCommandMessage(command); - self.$debug("dicebot after command", command); - self.$debug("match"); - $b = self.$rollDiceCommandCatched(command), $a = Opal.to_ary($b), (output_msg = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = output_msg['$nil?']()) ? $a : output_msg['$empty?']()))) { - output_msg = "1"}; - secret_flg = ($truthy($a = secret_flg) ? $a : false); - if ($truthy(output_msg['$!=']("1"))) { - output_msg = "" + (nick_e) + ": " + (output_msg)}; - if ($truthy(secretMarker)) { - if ($truthy(output_msg['$!=']("1"))) { - secret_flg = true}}; - return [output_msg, secret_flg]; - }, $DiceBot_dice_command$26.$$arity = 2); - - Opal.def(self, '$isGetOriginalMessage', $DiceBot_isGetOriginalMessage$27 = function $$isGetOriginalMessage() { - var self = this; - - return false - }, $DiceBot_isGetOriginalMessage$27.$$arity = 0); - - Opal.def(self, '$removeDiceCommandMessage', $DiceBot_removeDiceCommandMessage$28 = function $$removeDiceCommandMessage(command) { - var self = this; - - return command.$sub(/[\s ].+/, "") - }, $DiceBot_removeDiceCommandMessage$28.$$arity = 1); - - Opal.def(self, '$rollDiceCommandCatched', $DiceBot_rollDiceCommandCatched$29 = function $$rollDiceCommandCatched(command) { - var $a, $b, self = this, result = nil, secret_flg = nil, e = nil; - - - result = nil; - - try { - - self.$debug("call rollDiceCommand command", command); - $b = self.$rollDiceCommand(command), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - self.$debug("executeCommand exception", e.$to_s(), e.$backtrace().$join("\n")) - } finally { Opal.pop_exception() } - } else { throw $err; } - };; - self.$debug("rollDiceCommand result", result); - return [result, secret_flg]; - }, $DiceBot_rollDiceCommandCatched$29.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $DiceBot_rollDiceCommand$30 = function $$rollDiceCommand(_command) { - var self = this; - - return nil - }, $DiceBot_rollDiceCommand$30.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $DiceBot_dice_command_xRn$31 = function $$dice_command_xRn(_string, _nick_e) { - var self = this; - - return "" - }, $DiceBot_dice_command_xRn$31.$$arity = 2); - - Opal.def(self, '$check_result', $DiceBot_check_result$32 = function $$check_result(total, dice_total, dice_list, sides, cmp_op, target) { - var $a, self = this, ret = nil, $case = nil; - - - ret = (function() {$case = [dice_list.$size(), sides]; - if ([1, 100]['$===']($case)) {return self.$check_1D100(total, dice_total, cmp_op, target)} - else if ([1, 20]['$===']($case)) {return self.$check_1D20(total, dice_total, cmp_op, target)} - else if ([2, 6]['$===']($case)) {return self.$check_2D6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - ret = (function() {$case = sides; - if ((10)['$===']($case)) {return self.$check_nD10(total, dice_total, dice_list, cmp_op, target)} - else if ((6)['$===']($case)) {return self.$check_nD6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - return self.$check_nDx(total, cmp_op, target); - }, $DiceBot_check_result$32.$$arity = 6); - - Opal.def(self, '$check_nDx', $DiceBot_check_nDx$33 = function $$check_nDx(total, cmp_op, target) { - var self = this, success = nil; - - - if ($truthy(target['$is_a?']($$($nesting, 'String')))) { - return " > 失敗"}; - success = (function() {if (cmp_op['$==']("!=")) { - return total['$!='](target) - } else { - return total.$send(cmp_op, target) - }; return nil; })(); - if ($truthy(success)) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $DiceBot_check_nDx$33.$$arity = 3); - - Opal.def(self, '$check_1D100', $DiceBot_check_1D100$34 = function $$check_1D100(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D100$34.$$arity = 4); - - Opal.def(self, '$check_1D20', $DiceBot_check_1D20$35 = function $$check_1D20(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D20$35.$$arity = 4); - - Opal.def(self, '$check_nD10', $DiceBot_check_nD10$36 = function $$check_nD10(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD10$36.$$arity = 5); - - Opal.def(self, '$check_2D6', $DiceBot_check_2D6$37 = function $$check_2D6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_2D6$37.$$arity = 5); - - Opal.def(self, '$check_nD6', $DiceBot_check_nD6$38 = function $$check_nD6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD6$38.$$arity = 5); - - Opal.def(self, '$get_table_by_2d6', $DiceBot_get_table_by_2d6$39 = function $$get_table_by_2d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 2) - }, $DiceBot_get_table_by_2d6$39.$$arity = 1); - - Opal.def(self, '$get_table_by_1d6', $DiceBot_get_table_by_1d6$40 = function $$get_table_by_1d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 1) - }, $DiceBot_get_table_by_1d6$40.$$arity = 1); - - Opal.def(self, '$get_table_by_nD6', $DiceBot_get_table_by_nD6$41 = function $$get_table_by_nD6(table, count) { - var self = this; - - return self.$get_table_by_nDx(table, count, 6) - }, $DiceBot_get_table_by_nD6$41.$$arity = 2); - - Opal.def(self, '$get_table_by_nDx', $DiceBot_get_table_by_nDx$42 = function $$get_table_by_nDx(table, count, diceType) { - var $a, $b, self = this, num = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(num, count))); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_nDx$42.$$arity = 3); - - Opal.def(self, '$get_table_by_1d3', $DiceBot_get_table_by_1d3$43 = function $$get_table_by_1d3(table) { - var $a, $b, self = this, count = nil, num = nil, index = nil, text = nil; - - - self.$debug("get_table_by_1d3"); - count = 1; - $b = self.$roll(count, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - self.$debug("num", num); - index = $rb_divide($rb_minus(num, 1), 2); - self.$debug("index", index); - text = table['$[]'](index); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_1d3$43.$$arity = 1); - - Opal.def(self, '$getD66', $DiceBot_getD66$44 = function $$getD66(isSwap) { - var self = this; - - return self.$bcdice().$getD66(isSwap) - }, $DiceBot_getD66$44.$$arity = 1); - - Opal.def(self, '$get_table_by_d66_swap', $DiceBot_get_table_by_d66_swap$45 = function $$get_table_by_d66_swap(table) { - var self = this, isSwap = nil, number = nil; - - - isSwap = true; - number = self.$bcdice().$getD66(isSwap); - return [self.$get_table_by_number(number, table), number]; - }, $DiceBot_get_table_by_d66_swap$45.$$arity = 1); - - Opal.def(self, '$get_table_by_d66', $DiceBot_get_table_by_d66$46 = function $$get_table_by_d66(table) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, num = nil, text = nil, indexText = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - num = $rb_plus($rb_times($rb_minus(dice1, 1), 6), $rb_minus(dice2, 1)); - text = table['$[]'](num); - indexText = "" + (dice1) + (dice2); - if ($truthy(text['$nil?']())) { - return ["1", indexText]}; - return [text, indexText]; - }, $DiceBot_get_table_by_d66$46.$$arity = 1); - - Opal.def(self, '$getDiceRolledAdditionalText', $DiceBot_getDiceRolledAdditionalText$47 = function $$getDiceRolledAdditionalText(_n1, _n_max, _dice_max) { - var self = this; - - return "" - }, $DiceBot_getDiceRolledAdditionalText$47.$$arity = 3); - - Opal.def(self, '$getDiceRevision', $DiceBot_getDiceRevision$48 = function $$getDiceRevision(_n_max, _dice_max, _total_n) { - var self = this; - - return ["", 0] - }, $DiceBot_getDiceRevision$48.$$arity = 3); - - Opal.def(self, '$isD9', $DiceBot_isD9$49 = function $$isD9() { - var self = this; - - return false - }, $DiceBot_isD9$49.$$arity = 0); - - Opal.def(self, '$getGrichText', $DiceBot_getGrichText$50 = function $$getGrichText(_numberSpot1, _dice_cnt_total, _suc) { - var self = this; - - return "" - }, $DiceBot_getGrichText$50.$$arity = 3); - - Opal.def(self, '$should_reroll?', $DiceBot_should_reroll$ques$51 = function(loop_count) { - var $a, self = this; - - return ($truthy($a = $rb_lt(loop_count, self.rerollLimitCount)) ? $a : self.rerollLimitCount['$=='](0)) - }, $DiceBot_should_reroll$ques$51.$$arity = 1); - - Opal.def(self, '$get_table_by_number', $DiceBot_get_table_by_number$52 = function $$get_table_by_number(index, table, default$) {try { - - var $$53, self = this; - - - - if (default$ == null) { - default$ = "1"; - }; - $send(table, 'each', [], ($$53 = function(item){var self = $$53.$$s || this, number = nil; - - - - if (item == null) { - item = nil; - }; - number = item['$[]'](0); - if ($truthy($rb_ge(number, index))) { - Opal.ret(self.$getTableValue(item['$[]'](1))) - } else { - return nil - };}, $$53.$$s = self, $$53.$$arity = 1, $$53)); - return self.$getTableValue(default$); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_get_table_by_number$52.$$arity = -3); - - Opal.def(self, '$getTableValue', $DiceBot_getTableValue$54 = function $$getTableValue(data) {try { - - var $$55, self = this, lambdaBlock = nil; - - - if ($truthy(data['$kind_of?']($$($nesting, 'Proc')))) { - - lambdaBlock = $send(self, 'lambda', [], ($$55 = function(){var self = $$55.$$s || this; - - Opal.ret(data.$call())}, $$55.$$s = self, $$55.$$arity = 0, $$55)); - return lambdaBlock.$call();}; - return data; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_getTableValue$54.$$arity = 1); - - Opal.def(self, '$analyzeDiceCommandResultMethod', $DiceBot_analyzeDiceCommandResultMethod$56 = function $$analyzeDiceCommandResultMethod(command) {try { - - var $$57, $$58, self = this, methodList = nil; - - - methodList = $send(self.$public_methods(), 'select', [], ($$57 = function(method){var self = $$57.$$s || this; - - - - if (method == null) { - method = nil; - }; - return /^get.+DiceCommandResult$/['$==='](method.$to_s());}, $$57.$$s = self, $$57.$$arity = 1, $$57)); - $send(methodList, 'each', [], ($$58 = function(method){var self = $$58.$$s || this, result = nil; - - - - if (method == null) { - method = nil; - }; - result = self.$send(method, command); - if ($truthy(result['$nil?']())) { - return nil - } else { - Opal.ret(result) - };}, $$58.$$s = self, $$58.$$arity = 1, $$58)); - return nil; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_analyzeDiceCommandResultMethod$56.$$arity = 1); - - Opal.def(self, '$get_table_by_nDx_extratable', $DiceBot_get_table_by_nDx_extratable$59 = function $$get_table_by_nDx_extratable(table, count, diceType) { - var $a, $b, self = this, number = nil, diceText = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(number, count))); - return [text, number, diceText]; - }, $DiceBot_get_table_by_nDx_extratable$59.$$arity = 3); - - Opal.def(self, '$getTableCommandResult', $DiceBot_getTableCommandResult$60 = function $$getTableCommandResult(command, tables, isPrintDiceText) { - var $a, $b, $c, $d, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, count = nil, diceType = nil, limit = nil, item = nil, value = nil, output = nil, diceText = nil, text = nil, number = nil; - - - - if (isPrintDiceText == null) { - isPrintDiceText = true; - }; - info = tables['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type").$upcase(); - table = info['$[]']("table"); - if ($truthy(($truthy($a = type['$==']("D66")) ? self.d66Type['$=='](2) : $a))) { - type = "D66S"}; - $b = (function() {$case = type; - if (/(\d+)D(\d+)/['$===']($case)) { - count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diceType = $$($nesting, 'Regexp').$last_match(2).$to_i(); - limit = $rb_minus($rb_times(diceType, count), $rb_minus(count, 1)); - table = self.$getTableInfoFromExtraTableText(table, limit); - return self.$get_table_by_nDx_extratable(table, count, diceType);} - else if ("D66"['$===']($case) || "D66N"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 36); - $d = self.$get_table_by_d66(table), $c = Opal.to_ary($d), (item = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - output = item['$[]'](1); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else if ("D66S"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 21); - $d = self.$get_table_by_d66_swap(table), $c = Opal.to_ary($d), (output = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else {return self.$raise("" + "invalid dice Type " + (command))}})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), (diceText = ($a[2] == null ? nil : $a[2])), $b; - text = text.$gsub("\\n", "\n"); - text = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rollTableMessageDiceText(text); - if ($truthy(text['$nil?']())) { - return nil}; - if ($truthy(($truthy($a = isPrintDiceText) ? diceText['$nil?']()['$!']() : $a))) { - return "" + (name) + "(" + (number) + "[" + (diceText) + "]) > " + (text)}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $DiceBot_getTableCommandResult$60.$$arity = -3); - - Opal.def(self, '$getTableInfoFromExtraTableText', $DiceBot_getTableInfoFromExtraTableText$61 = function $$getTableInfoFromExtraTableText(text, count) { - var $$62, self = this, newTable = nil; - - - - if (count == null) { - count = nil; - }; - if ($truthy(text['$is_a?']($$($nesting, 'String')))) { - text = text.$split(/\n/)}; - newTable = $send(text, 'map', [], ($$62 = function(item){var self = $$62.$$s || this, $a; - - - - if (item == null) { - item = nil; - }; - if ($truthy(($truthy($a = item['$is_a?']($$($nesting, 'String'))) ? /^(\d+):(.*)/['$==='](item) : $a))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2)] - } else { - return item - };}, $$62.$$s = self, $$62.$$arity = 1, $$62)); - if ($truthy(count['$nil?']())) { - } else if ($truthy(newTable.$size()['$!='](count))) { - self.$raise("" + "invalid table size:" + (newTable.$size()) + "\n" + (newTable.$inspect()))}; - return newTable; - }, $DiceBot_getTableInfoFromExtraTableText$61.$$arity = -2); - return (Opal.def(self, '$roll_tables', $DiceBot_roll_tables$63 = function $$roll_tables(command, tables) { - var self = this, table = nil; - - - table = tables['$[]'](command.$upcase()); - if ($truthy(table)) { - } else { - return nil - }; - return table.$roll(self.$bcdice()).$to_s(); - }, $DiceBot_roll_tables$63.$$arity = 2), nil) && 'roll_tables'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/SRS"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$include', '$attr_reader', '$map', '$to_proc', '$join', '$escape', '$prepare_help_msg_for_aliases_for_srs_roll', '$concatenate_help_messages', '$private', '$clear_aliases_for_srs_roll', '$extend', '$setPrefixes', '$help_message', '$class', '$freeze', '$new', '$format_modifier', '$modifier', '$target_value', '$critical_value', '$fumble_value', '$replace_alias_for_srs_roll_with_2d6', '$parse', '$execute_srs_roll', '$===', '$aliases_re_for_srs_roll_with_target_value', '$last_match', '$aliases_re_for_srs_roll_without_target_value', '$parse_srs_roll_with_target_value', '$parse_srs_roll_without_target_value', '$eval', '$to_sym', '$eval_modifier', '$[]', '$to_i', '$roll', '$&', '$+', '$compare_result', '$compact', '$>=', '$<=']); - - self.$require("diceBot/DiceBot"); - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SRS'); - - var $nesting = [self].concat($parent_nesting), $SRS_initialize$12, $SRS_help_message$13, $SRS$14, $SRS_rollDiceCommand$16, $SRS_replace_alias_for_srs_roll_with_2d6$17, $SRS_parse$18, $SRS_eval_modifier$19, $SRS_parse_srs_roll_with_target_value$20, $SRS_parse_srs_roll_without_target_value$21, $SRS_execute_srs_roll$22, $SRS_compare_result$23; - - self.$$prototype.fractionType = self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "SRS"); - Opal.const_set($nesting[0], 'NAME', "スタンダードRPGシステム"); - Opal.const_set($nesting[0], 'SORT_KEY', "すたんたあとRPGしすてむ"); - self.$include($$($nesting, 'ModifierFormatter')); - Opal.const_set($nesting[0], 'HELP_MESSAGE_1', "" + "・判定\n" + " ・通常判定:2D6+m>=t[c,f]\n" + "  修正値m、目標値t、クリティカル値c、ファンブル値fで判定ロールを行います。\n" + "  修正値、クリティカル値、ファンブル値は省略可能です([]ごと省略可)。\n" + "  クリティカル値、ファンブル値の既定値は、それぞれ12、2です。\n" + "  自動成功、自動失敗、成功、失敗を自動表示します。\n" + "\n" + "  例) 2d6>=10     修正値0、目標値10で判定\n" + "  例) 2d6+2>=10    修正値+2、目標値10で判定\n" + "  例) 2d6+2>=10[11]  ↑をクリティカル値11で判定\n" + "  例) 2d6+2>=10[12,4] ↑をクリティカル値12、ファンブル値4で判定\n"); - Opal.const_set($nesting[0], 'HELP_MESSAGE_2', "" + " ・クリティカルおよびファンブルのみの判定:2D6+m[c,f]\n" + "  目標値を指定せず、修正値m、クリティカル値c、ファンブル値fで判定ロールを行います。\n" + "  修正値、クリティカル値、ファンブル値は省略可能です([]は省略不可)。\n" + "  自動成功、自動失敗を自動表示します。\n" + "\n" + "  例) 2d6[]    修正値0、クリティカル値12、ファンブル値2で判定\n" + "  例) 2d6+2[11]  修正値+2、クリティカル値11、ファンブル値2で判定\n" + "  例) 2d6+2[12,4] 修正値+2、クリティカル値12、ファンブル値4で判定\n"); - Opal.const_set($nesting[0], 'HELP_MESSAGE_3', "・D66ダイスあり(入れ替えなし)\n"); - Opal.const_set($nesting[0], 'DEFAULT_HELP_MESSAGE', "" + ($$($nesting, 'HELP_MESSAGE_1')) + "\n" + ($$($nesting, 'HELP_MESSAGE_2')) + "\n" + ($$($nesting, 'HELP_MESSAGE_3'))); - (function($base, $parent_nesting) { - var self = $module($base, 'ClassMethods'); - - var $nesting = [self].concat($parent_nesting), $ClassMethods_set_aliases_for_srs_roll$1, $ClassMethods_clear_aliases_for_srs_roll$3, $ClassMethods_prepare_help_msg_for_aliases_for_srs_roll$4, $ClassMethods_concatenate_help_messages$7; - - - self.$attr_reader("help_message"); - self.$attr_reader("aliases_re_for_srs_roll_with_target_value"); - self.$attr_reader("aliases_re_for_srs_roll_without_target_value"); - - Opal.def(self, '$set_aliases_for_srs_roll', $ClassMethods_set_aliases_for_srs_roll$1 = function $$set_aliases_for_srs_roll($a) { - var $post_args, aliases, $$2, self = this, aliases_upcase = nil, aliases_part = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - aliases = $post_args;; - aliases_upcase = $send(aliases, 'map', [], "upcase".$to_proc()); - aliases_part = $send(aliases_upcase, 'map', [], ($$2 = function(a){var self = $$2.$$s || this; - - - - if (a == null) { - a = nil; - }; - return $$($nesting, 'Regexp').$escape(a);}, $$2.$$s = self, $$2.$$arity = 1, $$2)).$join("|"); - self.aliases_re_for_srs_roll_with_target_value = new RegExp("" + "^(?:" + (aliases_part) + ")((?:[-+][-+\\d]+)?>=\\d+(?:\\[\\d*(?:,\\d+)?\\])?)$"); - self.aliases_re_for_srs_roll_without_target_value = new RegExp("" + "^(?:" + (aliases_part) + ")([-+][-+\\d]+)?(\\[\\d*(?:,\\d+)?\\])?$"); - self.$prepare_help_msg_for_aliases_for_srs_roll(aliases_upcase); - self.help_message = self.$concatenate_help_messages(); - return self; - }, $ClassMethods_set_aliases_for_srs_roll$1.$$arity = -1); - - Opal.def(self, '$clear_aliases_for_srs_roll', $ClassMethods_clear_aliases_for_srs_roll$3 = function $$clear_aliases_for_srs_roll() { - var self = this; - - - self.aliases_re_for_srs_roll_with_target_value = nil; - self.aliases_re_for_srs_roll_without_target_value = nil; - self.help_message = $$$($$($nesting, 'SRS'), 'DEFAULT_HELP_MESSAGE'); - return self; - }, $ClassMethods_clear_aliases_for_srs_roll$3.$$arity = 0); - self.$private(); - - Opal.def(self, '$prepare_help_msg_for_aliases_for_srs_roll', $ClassMethods_prepare_help_msg_for_aliases_for_srs_roll$4 = function $$prepare_help_msg_for_aliases_for_srs_roll(aliases) { - var $$5, $$6, self = this; - - - self.help_msg_for_aliases_for_srs_roll_with_target_value = $send(aliases, 'map', [], ($$5 = function(a){var self = $$5.$$s || this; - - - - if (a == null) { - a = nil; - }; - return "" + "  例) " + (a) + "+2>=10     2d6+2>=10と同じ(" + (a) + "が2D6のショートカットコマンド)\n";}, $$5.$$s = self, $$5.$$arity = 1, $$5)).$join(); - self.help_msg_for_aliases_for_srs_roll_without_target_value = $send(aliases, 'map', [], ($$6 = function(a){var self = $$6.$$s || this; - - - - if (a == null) { - a = nil; - }; - return "" + ("" + "  例) " + (a) + "      2d6[]と同じ(" + (a) + "が2D6のショートカットコマンド)\n") + ("" + "  例) " + (a) + "+2[12,4]  2d6+2[12,4]と同じ(" + (a) + "が2D6のショートカットコマンド)\n");}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$join(); - return self; - }, $ClassMethods_prepare_help_msg_for_aliases_for_srs_roll$4.$$arity = 1); - - Opal.def(self, '$concatenate_help_messages', $ClassMethods_concatenate_help_messages$7 = function $$concatenate_help_messages() { - var self = this; - if (self.help_msg_for_aliases_for_srs_roll_with_target_value == null) self.help_msg_for_aliases_for_srs_roll_with_target_value = nil; - if (self.help_msg_for_aliases_for_srs_roll_without_target_value == null) self.help_msg_for_aliases_for_srs_roll_without_target_value = nil; - - return "" + ("" + ($$$($$($nesting, 'SRS'), 'HELP_MESSAGE_1'))) + ("" + (self.help_msg_for_aliases_for_srs_roll_with_target_value) + "\n") + ("" + ($$$($$($nesting, 'SRS'), 'HELP_MESSAGE_2'))) + ("" + (self.help_msg_for_aliases_for_srs_roll_without_target_value) + "\n") + ("" + ($$$($$($nesting, 'SRS'), 'HELP_MESSAGE_3'))) - }, $ClassMethods_concatenate_help_messages$7.$$arity = 0); - })($nesting[0], $nesting); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $inherited$8, $help_message$9, $aliases_re_for_srs_roll_with_target_value$10, $aliases_re_for_srs_roll_without_target_value$11; - - - - Opal.def(self, '$inherited', $inherited$8 = function $$inherited(subclass) { - var self = this; - - return subclass.$extend($$($nesting, 'ClassMethods')).$clear_aliases_for_srs_roll() - }, $inherited$8.$$arity = 1); - - Opal.def(self, '$help_message', $help_message$9 = function $$help_message() { - var self = this; - - return $$($nesting, 'DEFAULT_HELP_MESSAGE') - }, $help_message$9.$$arity = 0); - - Opal.def(self, '$aliases_re_for_srs_roll_with_target_value', $aliases_re_for_srs_roll_with_target_value$10 = function $$aliases_re_for_srs_roll_with_target_value() { - var self = this; - - return nil - }, $aliases_re_for_srs_roll_with_target_value$10.$$arity = 0); - return (Opal.def(self, '$aliases_re_for_srs_roll_without_target_value', $aliases_re_for_srs_roll_without_target_value$11 = function $$aliases_re_for_srs_roll_without_target_value() { - var self = this; - - return nil - }, $aliases_re_for_srs_roll_without_target_value$11.$$arity = 0), nil) && 'aliases_re_for_srs_roll_without_target_value'; - })(Opal.get_singleton_class(self), $nesting); - self.$setPrefixes(["2D6.*"]); - - Opal.def(self, '$initialize', $SRS_initialize$12 = function $$initialize() { - var $iter = $SRS_initialize$12.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $SRS_initialize$12.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $SRS_initialize$12, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 1); - }, $SRS_initialize$12.$$arity = 0); - - Opal.def(self, '$help_message', $SRS_help_message$13 = function $$help_message() { - var self = this; - - return self.$class().$help_message() - }, $SRS_help_message$13.$$arity = 0); - Opal.const_set($nesting[0], 'DEFAULT_CRITICAL_VALUE', 12); - Opal.const_set($nesting[0], 'DEFAULT_FUMBLE_VALUE', 2); - Opal.const_set($nesting[0], 'SRS_ROLL_WITH_TARGET_VALUE_RE', /^2D6([-+][-+\d]+)?>=(\d+)(?:\[(\d+)?(?:,(\d+))?\])?$/.$freeze()); - Opal.const_set($nesting[0], 'SRS_ROLL_WITHOUT_TARGET_VALUE_RE', /^2D6([-+][-+\d]+)?\[(\d+)?(?:,(\d+))?\]$/.$freeze()); - Opal.const_set($nesting[0], 'SRS_ROLL_DEFAULT_THRESHOLDS', "" + "[" + ($$($nesting, 'DEFAULT_CRITICAL_VALUE')) + "," + ($$($nesting, 'DEFAULT_FUMBLE_VALUE')) + "]"); - Opal.const_set($nesting[0], 'SRSRollNode', $send($$($nesting, 'Struct'), 'new', ["modifier", "critical_value", "fumble_value", "target_value"], ($SRS$14 = function(){var self = $SRS$14.$$s || this, $to_s$15; - - - self.$include($$($nesting, 'ModifierFormatter')); - return (Opal.def(self, '$to_s', $to_s$15 = function $$to_s() { - var self = this, lhs = nil, expression = nil; - - - lhs = "" + "2D6" + (self.$format_modifier(self.$modifier())); - expression = (function() {if ($truthy(self.$target_value())) { - return "" + (lhs) + ">=" + (self.$target_value()) - } else { - return lhs - }; return nil; })(); - return "" + (expression) + "[" + (self.$critical_value()) + "," + (self.$fumble_value()) + "]"; - }, $to_s$15.$$arity = 0), nil) && 'to_s';}, $SRS$14.$$s = self, $SRS$14.$$arity = 0, $SRS$14))); - - Opal.def(self, '$rollDiceCommand', $SRS_rollDiceCommand$16 = function $$rollDiceCommand(command) { - var self = this, alias_replaced_with_2d6 = nil, node = nil; - - - alias_replaced_with_2d6 = self.$replace_alias_for_srs_roll_with_2d6(command); - if ($truthy((node = self.$parse(alias_replaced_with_2d6)))) { - return self.$execute_srs_roll(node)}; - return nil; - }, $SRS_rollDiceCommand$16.$$arity = 1); - self.$private(); - - Opal.def(self, '$replace_alias_for_srs_roll_with_2d6', $SRS_replace_alias_for_srs_roll_with_2d6$17 = function $$replace_alias_for_srs_roll_with_2d6(input) { - var $a, self = this, $case = nil, modifier = nil, thresholds = nil; - - return (function() {$case = input; - if (self.$class().$aliases_re_for_srs_roll_with_target_value()['$===']($case)) {return "" + "2D6" + ($$($nesting, 'Regexp').$last_match(1))} - else if (self.$class().$aliases_re_for_srs_roll_without_target_value()['$===']($case)) { - modifier = $$($nesting, 'Regexp').$last_match(1); - thresholds = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : $$($nesting, 'SRS_ROLL_DEFAULT_THRESHOLDS')); - return "" + "2D6" + (modifier) + (thresholds);} - else {return input}})() - }, $SRS_replace_alias_for_srs_roll_with_2d6$17.$$arity = 1); - - Opal.def(self, '$parse', $SRS_parse$18 = function $$parse(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if ($$($nesting, 'SRS_ROLL_WITH_TARGET_VALUE_RE')['$===']($case)) {return self.$parse_srs_roll_with_target_value($$($nesting, 'Regexp').$last_match())} - else if ($$($nesting, 'SRS_ROLL_WITHOUT_TARGET_VALUE_RE')['$===']($case)) {return self.$parse_srs_roll_without_target_value($$($nesting, 'Regexp').$last_match())} - else {return nil}})() - }, $SRS_parse$18.$$arity = 1); - - Opal.def(self, '$eval_modifier', $SRS_eval_modifier$19 = function $$eval_modifier(modifier_str) { - var self = this; - - - if ($truthy(modifier_str)) { - } else { - return 0 - }; - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(modifier_str, self.fractionType.$to_sym()); - }, $SRS_eval_modifier$19.$$arity = 1); - - Opal.def(self, '$parse_srs_roll_with_target_value', $SRS_parse_srs_roll_with_target_value$20 = function $$parse_srs_roll_with_target_value(m) { - var $a, $b, self = this, modifier = nil, target_value = nil, critical_value = nil, fumble_value = nil; - - - modifier = self.$eval_modifier(m['$[]'](1)); - target_value = m['$[]'](2).$to_i(); - critical_value = ($truthy($a = ($truthy($b = m['$[]'](3)) ? m['$[]'](3).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_CRITICAL_VALUE')); - fumble_value = ($truthy($a = ($truthy($b = m['$[]'](4)) ? m['$[]'](4).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_FUMBLE_VALUE')); - return $$($nesting, 'SRSRollNode').$new(modifier, critical_value, fumble_value, target_value); - }, $SRS_parse_srs_roll_with_target_value$20.$$arity = 1); - - Opal.def(self, '$parse_srs_roll_without_target_value', $SRS_parse_srs_roll_without_target_value$21 = function $$parse_srs_roll_without_target_value(m) { - var $a, $b, self = this, modifier = nil, critical_value = nil, fumble_value = nil; - - - modifier = self.$eval_modifier(m['$[]'](1)); - critical_value = ($truthy($a = ($truthy($b = m['$[]'](2)) ? m['$[]'](2).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_CRITICAL_VALUE')); - fumble_value = ($truthy($a = ($truthy($b = m['$[]'](3)) ? m['$[]'](3).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_FUMBLE_VALUE')); - return $$($nesting, 'SRSRollNode').$new(modifier, critical_value, fumble_value, nil); - }, $SRS_parse_srs_roll_without_target_value$21.$$arity = 1); - - Opal.def(self, '$execute_srs_roll', $SRS_execute_srs_roll$22 = function $$execute_srs_roll(srs_roll) { - var $a, $b, self = this, sum = nil, dice_str = nil, modified_sum = nil, parts = nil; - - - $b = self.$roll(2, 6, self.sortType['$&'](1)), $a = Opal.to_ary($b), (sum = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - modified_sum = $rb_plus(sum, srs_roll.$modifier()); - parts = ["" + "(" + (srs_roll) + ")", "" + (sum) + "[" + (dice_str) + "]" + (self.$format_modifier(srs_roll.$modifier())), modified_sum, self.$compare_result(srs_roll, sum, modified_sum)]; - return parts.$compact().$join(" > "); - }, $SRS_execute_srs_roll$22.$$arity = 1); - return (Opal.def(self, '$compare_result', $SRS_compare_result$23 = function $$compare_result(srs_roll, sum, modified_sum) { - var self = this; - - - if ($truthy($rb_ge(sum, srs_roll.$critical_value()))) { - return "自動成功"}; - if ($truthy($rb_le(sum, srs_roll.$fumble_value()))) { - return "自動失敗"}; - if ($truthy(srs_roll.$target_value())) { - return (function() {if ($truthy($rb_ge(modified_sum, srs_roll.$target_value()))) { - return "成功" - } else { - return "失敗" - }; return nil; })()}; - return nil; - }, $SRS_compare_result$23.$$arity = 3), nil) && 'compare_result'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; - - Opal.add_stubs(['$require', '$setPrefixes', '$set_aliases_for_srs_roll']); - - self.$require("diceBot/SRS"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'EtrianOdysseySRS'); - - var $nesting = [self].concat($parent_nesting); - - - Opal.const_set($nesting[0], 'ID', "EtrianOdysseySRS"); - Opal.const_set($nesting[0], 'NAME', "世界樹の迷宮SRS"); - Opal.const_set($nesting[0], 'SORT_KEY', "せかいしゆのめいきゆうSRS"); - self.$setPrefixes(["2D6.*", "EO.*", "SQ.*"]); - return self.$set_aliases_for_srs_roll("EO", "SQ"); - })($nesting[0], $$($nesting, 'SRS'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Fiasco.js b/src/assets/dicebot/Fiasco.js deleted file mode 100644 index 882b59cbc..000000000 --- a/src/assets/dicebot/Fiasco.js +++ /dev/null @@ -1,121 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$match', '$[]', '$==', '$makeStartDiceRoll', '$makeWhiteBlackDiceRoll', '$roll', '$each', '$split', '$-', '$to_i', '$+', '$[]=', '$makeArgsDiceRoll', '$>', '$<']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Fiasco'); - - var $nesting = [self].concat($parent_nesting), $Fiasco_rollDiceCommand$1, $Fiasco_makeStartDiceRoll$2, $Fiasco_makeWhiteBlackDiceRoll$4, $Fiasco_makeArgsDiceRoll$5; - - - Opal.const_set($nesting[0], 'ID', "Fiasco"); - Opal.const_set($nesting[0], 'NAME', "フィアスコ"); - Opal.const_set($nesting[0], 'SORT_KEY', "ふいあすこ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + " ・判定コマンド(FSx, WxBx)\n" + " 相関図・転落要素用(FSx):相関図や転落要素のためにx個ダイスを振り、出目ごとに分類する\n" + " 黒白差分判定用(WxBx) :転落、残響のために白ダイス(W指定)と黒ダイス(B指定)で差分を求める\n" + " ※ WとBは片方指定(Bx, Wx)、入替指定(WxBx,BxWx)可能\n" + "\n"); - Opal.const_set($nesting[0], 'COMMAND_TYPE_INDEX', 1); - Opal.const_set($nesting[0], 'START_DICE_INDEX', 2); - Opal.const_set($nesting[0], 'BW_FIRST_DICE_INDEX', 2); - Opal.const_set($nesting[0], 'BW_SECOND_DICE_INDEX', 5); - Opal.const_set($nesting[0], 'BW_SECOND_DICE_TAG_INDEX', 4); - Opal.const_set($nesting[0], 'START_COMMAND_TAG', "FS"); - Opal.const_set($nesting[0], 'W_DICEROLL_COMMAND_TAG', "W"); - Opal.const_set($nesting[0], 'B_DICEROLL_COMMAND_TAG', "B"); - self.$setPrefixes(["(FS|[WB])(\\d+).*"]); - - Opal.def(self, '$rollDiceCommand', $Fiasco_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, m = nil, type = nil; - - - m = /^(FS|[WB])(\d+)(([WB])(\d+))?/.$match(command); - if ($truthy(m)) { - } else { - return "" - }; - type = m['$[]']($$($nesting, 'COMMAND_TYPE_INDEX')); - if (type['$==']($$($nesting, 'START_COMMAND_TAG'))) { - return self.$makeStartDiceRoll(m) - } else { - return self.$makeWhiteBlackDiceRoll(type, m) - }; - }, $Fiasco_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$makeStartDiceRoll', $Fiasco_makeStartDiceRoll$2 = function $$makeStartDiceRoll(m) { - var $a, $b, $$3, self = this, dice = nil, _ = nil, diceText = nil, diceList = nil; - - - dice = m['$[]']($$($nesting, 'START_DICE_INDEX')); - $b = self.$roll(dice, 6), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceList = [0, 0, 0, 0, 0, 0]; - $send(diceText.$split(","), 'each', [], ($$3 = function(takeDice){var self = $$3.$$s || this, $writer = nil; - - - - if (takeDice == null) { - takeDice = nil; - }; - $writer = [$rb_minus(takeDice.$to_i(), 1), $rb_plus(diceList['$[]']($rb_minus(takeDice.$to_i(), 1)), 1)]; - $send(diceList, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, $$3.$$s = self, $$3.$$arity = 1, $$3)); - return "" + "1 => " + (diceList['$[]'](0)) + "個 2 => " + (diceList['$[]'](1)) + "個 3 => " + (diceList['$[]'](2)) + "個 4 => " + (diceList['$[]'](3)) + "個 5 => " + (diceList['$[]'](4)) + "個 6 => " + (diceList['$[]'](5)) + "個"; - }, $Fiasco_makeStartDiceRoll$2.$$arity = 1); - - Opal.def(self, '$makeWhiteBlackDiceRoll', $Fiasco_makeWhiteBlackDiceRoll$4 = function $$makeWhiteBlackDiceRoll(type, m) { - var $a, $b, self = this, whiteTotal = nil, whiteDiceText = nil, blackTotal = nil, blackDiceText = nil, result = nil; - - - if (type['$==']($$($nesting, 'W_DICEROLL_COMMAND_TAG'))) { - - $b = self.$makeArgsDiceRoll(m['$[]']($$($nesting, 'BW_FIRST_DICE_INDEX')), m['$[]']($$($nesting, 'BW_SECOND_DICE_INDEX'))), $a = Opal.to_ary($b), (whiteTotal = ($a[0] == null ? nil : $a[0])), (whiteDiceText = ($a[1] == null ? nil : $a[1])), (blackTotal = ($a[2] == null ? nil : $a[2])), (blackDiceText = ($a[3] == null ? nil : $a[3])), $b; - result = "" + "白" + (whiteTotal) + "[" + (whiteDiceText) + "]"; - if ($truthy(blackDiceText)) { - - if (m['$[]']($$($nesting, 'BW_SECOND_DICE_TAG_INDEX'))['$==']($$($nesting, 'W_DICEROLL_COMMAND_TAG'))) { - return "" + (m) + ":白指定(" + ($$($nesting, 'W_DICEROLL_COMMAND_TAG')) + ")は重複できません。"}; - result = $rb_plus(result, "" + " 黒" + (blackTotal) + "[" + (blackDiceText) + "]");}; - } else if (type['$==']($$($nesting, 'B_DICEROLL_COMMAND_TAG'))) { - - $b = self.$makeArgsDiceRoll(m['$[]']($$($nesting, 'BW_FIRST_DICE_INDEX')), m['$[]']($$($nesting, 'BW_SECOND_DICE_INDEX'))), $a = Opal.to_ary($b), (blackTotal = ($a[0] == null ? nil : $a[0])), (blackDiceText = ($a[1] == null ? nil : $a[1])), (whiteTotal = ($a[2] == null ? nil : $a[2])), (whiteDiceText = ($a[3] == null ? nil : $a[3])), $b; - result = "" + "黒" + (blackTotal) + "[" + (blackDiceText) + "]"; - if ($truthy(whiteDiceText)) { - - if (m['$[]']($$($nesting, 'BW_SECOND_DICE_TAG_INDEX'))['$==']($$($nesting, 'B_DICEROLL_COMMAND_TAG'))) { - return "" + (m) + ":黒指定(" + ($$($nesting, 'B_DICEROLL_COMMAND_TAG')) + ")は重複できません。"}; - result = $rb_plus(result, "" + " 白" + (whiteTotal) + "[" + (whiteDiceText) + "]");}; - } else { - return "" - }; - if ($truthy($rb_gt(blackTotal, whiteTotal))) { - return "" + (result) + " > 黒" + ($rb_minus(blackTotal, whiteTotal)) - } else if ($truthy($rb_lt(blackTotal, whiteTotal))) { - return "" + (result) + " > 白" + ($rb_minus(whiteTotal, blackTotal))}; - return "" + (result) + " > 0"; - }, $Fiasco_makeWhiteBlackDiceRoll$4.$$arity = 2); - return (Opal.def(self, '$makeArgsDiceRoll', $Fiasco_makeArgsDiceRoll$5 = function $$makeArgsDiceRoll(firstDice, secondDice) { - var $a, $b, self = this, secondTotal = nil, firstTotal = nil, firstDiceText = nil, secondDiceText = nil; - - - secondTotal = 0; - $b = self.$roll(firstDice, 6), $a = Opal.to_ary($b), (firstTotal = ($a[0] == null ? nil : $a[0])), (firstDiceText = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(secondDice)) { - if ($truthy($rb_gt(secondDice.$to_i(), 0))) { - $b = self.$roll(secondDice, 6), $a = Opal.to_ary($b), (secondTotal = ($a[0] == null ? nil : $a[0])), (secondDiceText = ($a[1] == null ? nil : $a[1])), $b - } else { - secondDiceText = "0" - }}; - return [firstTotal, firstDiceText, secondTotal, secondDiceText]; - }, $Fiasco_makeArgsDiceRoll$5.$$arity = 2), nil) && 'makeArgsDiceRoll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Fiasco_Korean.js b/src/assets/dicebot/Fiasco_Korean.js deleted file mode 100644 index cab7ec95c..000000000 --- a/src/assets/dicebot/Fiasco_Korean.js +++ /dev/null @@ -1,121 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$match', '$[]', '$==', '$makeStartDiceRoll', '$makeWhiteBlackDiceRoll', '$roll', '$each', '$split', '$-', '$to_i', '$+', '$[]=', '$makeArgsDiceRoll', '$>', '$<']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Fiasco_Korean'); - - var $nesting = [self].concat($parent_nesting), $Fiasco_Korean_rollDiceCommand$1, $Fiasco_Korean_makeStartDiceRoll$2, $Fiasco_Korean_makeWhiteBlackDiceRoll$4, $Fiasco_Korean_makeArgsDiceRoll$5; - - - Opal.const_set($nesting[0], 'ID', "Fiasco:Korean"); - Opal.const_set($nesting[0], 'NAME', "피아스코"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:피아스코"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + " ・판정 커맨드(FSx, WxBx)\n" + " 관계, 비틀기 요소용(FSx):관계나 비틀기 요소를 위해 x개의 다이스를 굴려 나온 값별로 분류한다.\n" + " 흑백차이판정용(WxBx) :비틀기, 후기를 위해 흰 다이스(W지정)과 검은 다이스(B지정)으로 차이를 구한다.\n" + " ※ W와B는 한 쪽만 지정(Bx, Wx), 앞뒤 바꿔 지정(WxBx,BxWx)도 가능\n"); - Opal.const_set($nesting[0], 'COMMAND_TYPE_INDEX', 1); - Opal.const_set($nesting[0], 'START_DICE_INDEX', 2); - Opal.const_set($nesting[0], 'BW_FIRST_DICE_INDEX', 2); - Opal.const_set($nesting[0], 'BW_SECOND_DICE_INDEX', 5); - Opal.const_set($nesting[0], 'BW_SECOND_DICE_TAG_INDEX', 4); - Opal.const_set($nesting[0], 'START_COMMAND_TAG', "FS"); - Opal.const_set($nesting[0], 'W_DICEROLL_COMMAND_TAG', "W"); - Opal.const_set($nesting[0], 'B_DICEROLL_COMMAND_TAG', "B"); - self.$setPrefixes(["(FS|[WB])(\\d+).*"]); - - Opal.def(self, '$rollDiceCommand', $Fiasco_Korean_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, m = nil, type = nil; - - - m = /^(FS|[WB])(\d+)(([WB])(\d+))?/.$match(command); - if ($truthy(m)) { - } else { - return "" - }; - type = m['$[]']($$($nesting, 'COMMAND_TYPE_INDEX')); - if (type['$==']($$($nesting, 'START_COMMAND_TAG'))) { - return self.$makeStartDiceRoll(m) - } else { - return self.$makeWhiteBlackDiceRoll(type, m) - }; - }, $Fiasco_Korean_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$makeStartDiceRoll', $Fiasco_Korean_makeStartDiceRoll$2 = function $$makeStartDiceRoll(m) { - var $a, $b, $$3, self = this, dice = nil, _ = nil, diceText = nil, diceList = nil; - - - dice = m['$[]']($$($nesting, 'START_DICE_INDEX')); - $b = self.$roll(dice, 6), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceList = [0, 0, 0, 0, 0, 0]; - $send(diceText.$split(","), 'each', [], ($$3 = function(takeDice){var self = $$3.$$s || this, $writer = nil; - - - - if (takeDice == null) { - takeDice = nil; - }; - $writer = [$rb_minus(takeDice.$to_i(), 1), $rb_plus(diceList['$[]']($rb_minus(takeDice.$to_i(), 1)), 1)]; - $send(diceList, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, $$3.$$s = self, $$3.$$arity = 1, $$3)); - return "" + "1 => " + (diceList['$[]'](0)) + "개 2 => " + (diceList['$[]'](1)) + "개 3 => " + (diceList['$[]'](2)) + "개 4 => " + (diceList['$[]'](3)) + "개 5 => " + (diceList['$[]'](4)) + "개 6 => " + (diceList['$[]'](5)) + "개"; - }, $Fiasco_Korean_makeStartDiceRoll$2.$$arity = 1); - - Opal.def(self, '$makeWhiteBlackDiceRoll', $Fiasco_Korean_makeWhiteBlackDiceRoll$4 = function $$makeWhiteBlackDiceRoll(type, m) { - var $a, $b, self = this, whiteTotal = nil, whiteDiceText = nil, blackTotal = nil, blackDiceText = nil, result = nil; - - - if (type['$==']($$($nesting, 'W_DICEROLL_COMMAND_TAG'))) { - - $b = self.$makeArgsDiceRoll(m['$[]']($$($nesting, 'BW_FIRST_DICE_INDEX')), m['$[]']($$($nesting, 'BW_SECOND_DICE_INDEX'))), $a = Opal.to_ary($b), (whiteTotal = ($a[0] == null ? nil : $a[0])), (whiteDiceText = ($a[1] == null ? nil : $a[1])), (blackTotal = ($a[2] == null ? nil : $a[2])), (blackDiceText = ($a[3] == null ? nil : $a[3])), $b; - result = "" + "흰색" + (whiteTotal) + "[" + (whiteDiceText) + "]"; - if ($truthy(blackDiceText)) { - - if (m['$[]']($$($nesting, 'BW_SECOND_DICE_TAG_INDEX'))['$==']($$($nesting, 'W_DICEROLL_COMMAND_TAG'))) { - return "" + (m) + ":흰색 지정(" + ($$($nesting, 'W_DICEROLL_COMMAND_TAG')) + ")은 중복될 수 없습니다."}; - result = $rb_plus(result, "" + " 검은색" + (blackTotal) + "[" + (blackDiceText) + "]");}; - } else if (type['$==']($$($nesting, 'B_DICEROLL_COMMAND_TAG'))) { - - $b = self.$makeArgsDiceRoll(m['$[]']($$($nesting, 'BW_FIRST_DICE_INDEX')), m['$[]']($$($nesting, 'BW_SECOND_DICE_INDEX'))), $a = Opal.to_ary($b), (blackTotal = ($a[0] == null ? nil : $a[0])), (blackDiceText = ($a[1] == null ? nil : $a[1])), (whiteTotal = ($a[2] == null ? nil : $a[2])), (whiteDiceText = ($a[3] == null ? nil : $a[3])), $b; - result = "" + "검은색" + (blackTotal) + "[" + (blackDiceText) + "]"; - if ($truthy(whiteDiceText)) { - - if (m['$[]']($$($nesting, 'BW_SECOND_DICE_TAG_INDEX'))['$==']($$($nesting, 'B_DICEROLL_COMMAND_TAG'))) { - return "" + (m) + ":검은색 지정(" + ($$($nesting, 'B_DICEROLL_COMMAND_TAG')) + ")은 중복될 수 없습니다."}; - result = $rb_plus(result, "" + " 흰색" + (whiteTotal) + "[" + (whiteDiceText) + "]");}; - } else { - return "" - }; - if ($truthy($rb_gt(blackTotal, whiteTotal))) { - return "" + (result) + " > 검은색" + ($rb_minus(blackTotal, whiteTotal)) - } else if ($truthy($rb_lt(blackTotal, whiteTotal))) { - return "" + (result) + " > 흰색" + ($rb_minus(whiteTotal, blackTotal))}; - return "" + (result) + " > 0"; - }, $Fiasco_Korean_makeWhiteBlackDiceRoll$4.$$arity = 2); - return (Opal.def(self, '$makeArgsDiceRoll', $Fiasco_Korean_makeArgsDiceRoll$5 = function $$makeArgsDiceRoll(firstDice, secondDice) { - var $a, $b, self = this, secondTotal = nil, firstTotal = nil, firstDiceText = nil, secondDiceText = nil; - - - secondTotal = 0; - $b = self.$roll(firstDice, 6), $a = Opal.to_ary($b), (firstTotal = ($a[0] == null ? nil : $a[0])), (firstDiceText = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(secondDice)) { - if ($truthy($rb_gt(secondDice.$to_i(), 0))) { - $b = self.$roll(secondDice, 6), $a = Opal.to_ary($b), (secondTotal = ($a[0] == null ? nil : $a[0])), (secondDiceText = ($a[1] == null ? nil : $a[1])), $b - } else { - secondDiceText = "0" - }}; - return [firstTotal, firstDiceText, secondTotal, secondDiceText]; - }, $Fiasco_Korean_makeArgsDiceRoll$5.$$arity = 2), nil) && 'makeArgsDiceRoll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/FilledWith.js b/src/assets/dicebot/FilledWith.js deleted file mode 100644 index 095c02d58..000000000 --- a/src/assets/dicebot/FilledWith.js +++ /dev/null @@ -1,600 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$checkRoll', '$nil?', '$===', '$last_match', '$==', '$getLotResult', '$getSpecialResult', '$to_i', '$getCookResult', '$getTrapResult', '$getTresureResult', '$getRandomEventResult', '$getRandomEnemyDataResult', '$getRandomOptionResult', '$getValue', '$roll', '$+', '$<=', '$>=', '$-', '$empty?', '$parren_killer', '$first', '$<', '$last', '$>', '$get_table_by_1d6', '$cook', '$lambda', '$name', '$class', '$[]', '$premium', '$normal', '$get_table_by_nD6', '$get_table_by_d66', '$floor', '$/', '$get_table_by_number']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'FilledWith'); - - var $nesting = [self].concat($parent_nesting), $FilledWith_initialize$1, $FilledWith_rollDiceCommand$2, $FilledWith_checkRoll$3, $FilledWith_getValue$4, $FilledWith_getAdjustNumber$5, $FilledWith_getSpecialResult$6, $FilledWith_getCookResult$7, $FilledWith_cook$8, $FilledWith_getLotResult$25, $FilledWith_normal$26, $FilledWith_premium$35, $FilledWith_getTresureResult$44, $FilledWith_getTrapResult$45, $FilledWith_getRandomOptionResult$46, $FilledWith_getRandomEventResult$47, $FilledWith_getRandomEnemyDataResult$48; - - - Opal.const_set($nesting[0], 'ID', "FilledWith"); - Opal.const_set($nesting[0], 'NAME', "フィルトウィズ"); - Opal.const_set($nesting[0], 'SORT_KEY', "ふいるとういす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 (3FW@x#y<=z or z-3FW@x#y)\n" + " 3個の6面ダイスを振る判定。\n" + " @x:xにクリティカル値を入力。省略可。(省略時クリティカル値4)\n" + " #y:yにファンブル値を入力。省略可(省略時ファンブル値17)\n" + " <=z or z-:zに目標値を入力。±の計算に対応。省略可。\n" + "・【必殺技!】 (HST)\n" + " ホムンクルス特技【必殺技!】表。\n" + "・マジカルクッキング (COOKx)\n" + " マジカルクッキングのシェフのおすすめコース。\n" + " xにクッキングレベルを入力。(1-8)\n" + "・ナンバーワンくじ (LOTN or LOTP)\n" + " LOTNでノーマルくじ、LOTPでプレミアムくじ。(GURPS-FW版)\n" + "----------夢幻の迷宮用----------\n" + "・共通書式\n" + " a:aに地形(1-6の数字)を入力。省略可。(省略時ランダム決定)\n" + " (1:洞窟 2:遺跡 3:山岳 4:水辺 5:森林 6:墓場)\n" + " d:dに難易度を入力。(E:初級 N:中級 H:上級 L:悪夢)\n" + "・ランダムイベント表 (RANDda)\n" + "・ランダムエンカウント表 (RENCda)\n" + "・エネミーデータ表 (REDde)\n" + " エネミーデータ参照表。\n" + " GMがシークレットダイスで参照するとPLに知られずにエネミーデータを参照可能。\n" + " e:3桁のイベントダイスを入力(D666の結果)。\n" + "・トラップ表 (TRAPd)\n" + "・財宝表 (TRSr±x)\n" + " r:rに財宝ランクを入力。\n" + " ±x:xに財宝ランク修正値を入力。省略可。\n" + "・迷宮追加オプション表(ROPd)\n"); - self.$setPrefixes(["3FW.*", "[\\+\\-\\d]*-3FW.*", "LOT[NP]", "HST", "COOK[1-8]", "RAND.*", "RENC.*", "RED.*", "TRS.*", "TRAP[ENHL]", "ROP[ENHL]"]); - - Opal.def(self, '$initialize', $FilledWith_initialize$1 = function $$initialize() { - var $iter = $FilledWith_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $FilledWith_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $FilledWith_initialize$1, false), $zuper, $iter); - return (self.d66Type = 1); - }, $FilledWith_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $FilledWith_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, $b, self = this, result = nil, tableName = nil, text = nil, number = nil, $case = nil, type = nil, lv = nil; - - - result = self.$checkRoll(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - tableName = ""; - text = ""; - number = 0; - $case = command; - if (/LOT(N|P)/['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1); - if (type['$==']("P")) { - tableName = "ナンバーワンプレミアムくじ" - } else { - tableName = "ナンバーワンノーマルくじ" - }; - $b = self.$getLotResult(type), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b;} - else if ("HST"['$===']($case)) { - tableName = "【必殺技!】"; - $b = self.$getSpecialResult(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b;} - else if (/COOK([1-8])/['$===']($case)) { - lv = $$($nesting, 'Regexp').$last_match(1).$to_i(); - tableName = "マジカルクッキング"; - $b = self.$getCookResult(lv), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b;} - else if (/TRAP[ENHL]/['$===']($case)) {return self.$getTrapResult(command)} - else if (/TRS.*/i['$===']($case)) {return self.$getTresureResult(command)} - else if (/RAND.*/['$===']($case)) {return self.$getRandomEventResult(command)} - else if (/RENC.*/['$===']($case)) {return self.$getRandomEventResult(command)} - else if (/RED.*/i['$===']($case)) {return self.$getRandomEnemyDataResult(command)} - else if (/ROP[ENHL]/['$===']($case)) {return self.$getRandomOptionResult(command)} - else {return nil}; - text = "" + (tableName) + "(" + (number) + "):" + (result); - return text; - }, $FilledWith_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$checkRoll', $FilledWith_checkRoll$3 = function $$checkRoll(command) { - var $a, $b, self = this, crt = nil, fmb = nil, difficultyText = nil, diceCount = nil, difficulty = nil, dice = nil, dice_str = nil, result = nil, success = nil; - - - crt = 4; - fmb = 17; - if ($truthy(/(\d[\+\-\d]*)-(\d+)FW(\@(\d+))?(\#(\d+))?/i['$==='](command))) { - - difficultyText = $$($nesting, 'Regexp').$last_match(1); - diceCount = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($$($nesting, 'Regexp').$last_match(3)['$nil?']())) { - } else { - crt = $$($nesting, 'Regexp').$last_match(4).$to_i() - }; - if ($truthy($$($nesting, 'Regexp').$last_match(5)['$nil?']())) { - } else { - fmb = $$($nesting, 'Regexp').$last_match(6).$to_i() - }; - } else if ($truthy(/(\d+)FW(\@(\d+))?(\#(\d+))?(<=([\+\-\d]*))?/i['$==='](command))) { - - diceCount = $$($nesting, 'Regexp').$last_match(1).$to_i(); - if ($truthy($$($nesting, 'Regexp').$last_match(2)['$nil?']())) { - } else { - crt = $$($nesting, 'Regexp').$last_match(3).$to_i() - }; - if ($truthy($$($nesting, 'Regexp').$last_match(4)['$nil?']())) { - } else { - fmb = $$($nesting, 'Regexp').$last_match(5).$to_i() - }; - difficultyText = $$($nesting, 'Regexp').$last_match(7); - } else { - return nil - }; - difficulty = self.$getValue(difficultyText, nil); - $b = self.$roll(diceCount, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - command = "" + (diceCount) + "FW"; - if (crt['$=='](4)) { - } else { - command = $rb_plus(command, "" + "@" + (crt)) - }; - if (fmb['$=='](17)) { - } else { - command = $rb_plus(command, "" + "#" + (fmb)) - }; - if ($truthy(difficulty['$nil?']())) { - } else { - command = $rb_plus(command, "" + "<=" + (difficulty)) - }; - result = "" + "(" + (command) + ") > " + (dice) + "[" + (dice_str) + "]"; - if ($truthy($rb_le(dice, crt))) { - result = $rb_plus(result, " > クリティカル!") - } else if ($truthy($rb_ge(dice, fmb))) { - result = $rb_plus(result, " > ファンブル!") - } else if ($truthy(difficultyText['$nil?']())) { - } else { - - success = $rb_minus(difficulty, dice); - if ($truthy($rb_le(dice, difficulty))) { - result = $rb_plus(result, "" + " > 成功(成功度:" + (success) + ")") - } else { - result = $rb_plus(result, "" + " > 失敗(失敗度:" + (success) + ")") - }; - }; - return result; - }, $FilledWith_checkRoll$3.$$arity = 1); - - Opal.def(self, '$getValue', $FilledWith_getValue$4 = function $$getValue(text, defaultValue) { - var $a, self = this; - - - if ($truthy(($truthy($a = text['$nil?']()) ? $a : text['$empty?']()))) { - return defaultValue}; - return self.$parren_killer($rb_plus($rb_plus("(0", text), ")")).$to_i(); - }, $FilledWith_getValue$4.$$arity = 2); - - Opal.def(self, '$getAdjustNumber', $FilledWith_getAdjustNumber$5 = function $$getAdjustNumber(number, table) { - var self = this, min = nil, max = nil; - - - min = table.$first().$first(); - if ($truthy($rb_lt(number, min))) { - return min}; - max = table.$last().$first(); - if ($truthy($rb_gt(number, max))) { - return max}; - return number; - }, $FilledWith_getAdjustNumber$5.$$arity = 2); - - Opal.def(self, '$getSpecialResult', $FilledWith_getSpecialResult$6 = function $$getSpecialResult() { - var self = this, table = nil; - - - table = ["[命中]判定に出目[1,1,1]でクリティカル。更に致傷力に「SLv×20」のボーナスを得る。", "[命中]判定と致傷力に「SLv×10」のボーナスを得る。", "致傷力に「SLv×10」のボーナスを得る。", "攻撃が命中するとバッドステータス「転倒」を与える。", "通常攻撃。", "[命中]判定に[6,6,6]でファンブル。更に、使用者がバッドステータス「転倒」を受ける。"]; - return self.$get_table_by_1d6(table); - }, $FilledWith_getSpecialResult$6.$$arity = 0); - - Opal.def(self, '$getCookResult', $FilledWith_getCookResult$7 = function $$getCookResult(lv) { - var self = this; - - return self.$cook(lv, "") - }, $FilledWith_getCookResult$7.$$arity = 1); - - Opal.def(self, '$cook', $FilledWith_cook$8 = function $$cook(lv, num) {try { - - var $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24, $a, $b, self = this, $case = nil, table = nil, result = nil, number = nil; - - - $case = lv; - if ((1)['$===']($case)) {table = ["おべんとミートボール", "パリパリ小魚", "キャロットタルト", "おにぎり", $send(self, 'lambda', [], ($$9 = function(){var self = $$9.$$s || this; - - Opal.ret(self.$cook(2, 5))}, $$9.$$s = self, $$9.$$arity = 0, $$9)), $send(self, 'lambda', [], ($$10 = function(){var self = $$10.$$s || this; - - Opal.ret(self.$cook(2, 6))}, $$10.$$s = self, $$10.$$arity = 0, $$10))]} - else if ((2)['$===']($case)) {table = ["カリカリミミズ肉", "竹つきチクワ", "トロピカルジュース", "イナリ寿司", $send(self, 'lambda', [], ($$11 = function(){var self = $$11.$$s || this; - - Opal.ret(self.$cook(3, 5))}, $$11.$$s = self, $$11.$$arity = 0, $$11)), $send(self, 'lambda', [], ($$12 = function(){var self = $$12.$$s || this; - - Opal.ret(self.$cook(3, 6))}, $$12.$$s = self, $$12.$$arity = 0, $$12))]} - else if ((3)['$===']($case)) {table = ["ホットミートパイ", "魔界魚の目玉", "パンプキンプリン", "スタミナ丼", $send(self, 'lambda', [], ($$13 = function(){var self = $$13.$$s || this; - - Opal.ret(self.$cook(4, 5))}, $$13.$$s = self, $$13.$$arity = 0, $$13)), $send(self, 'lambda', [], ($$14 = function(){var self = $$14.$$s || this; - - Opal.ret(self.$cook(4, 6))}, $$14.$$s = self, $$14.$$arity = 0, $$14))]} - else if ((4)['$===']($case)) {table = ["ジャンボ串焼き", "シルヴァまっしぐら", "フラウアイスクリーム", "ピクニックランチ", $send(self, 'lambda', [], ($$15 = function(){var self = $$15.$$s || this; - - Opal.ret(self.$cook(5, 5))}, $$15.$$s = self, $$15.$$arity = 0, $$15)), $send(self, 'lambda', [], ($$16 = function(){var self = $$16.$$s || this; - - Opal.ret(self.$cook(5, 6))}, $$16.$$s = self, $$16.$$arity = 0, $$16))]} - else if ((5)['$===']($case)) {table = ["グラント風香草焼き", "エドマエスシ", "スターフルーツパフェ", "具沢山本格カレー", $send(self, 'lambda', [], ($$17 = function(){var self = $$17.$$s || this; - - Opal.ret(self.$cook(6, 5))}, $$17.$$s = self, $$17.$$arity = 0, $$17)), $send(self, 'lambda', [], ($$18 = function(){var self = $$18.$$s || this; - - Opal.ret(self.$cook(6, 6))}, $$18.$$s = self, $$18.$$arity = 0, $$18))]} - else if ((6)['$===']($case)) {table = ["ドラゴンステーキ", "刺身盛り合わせ", "エデンのアップルパイ", "フォートレス炒飯", $send(self, 'lambda', [], ($$19 = function(){var self = $$19.$$s || this; - - Opal.ret(self.$cook(7, 5))}, $$19.$$s = self, $$19.$$arity = 0, $$19)), $send(self, 'lambda', [], ($$20 = function(){var self = $$20.$$s || this; - - Opal.ret(self.$cook(7, 6))}, $$20.$$s = self, $$20.$$arity = 0, $$20))]} - else if ((7)['$===']($case)) {table = ["マツザカスペシャル", "オオトロスシ", "スノーホワイトボンブ", "よもつへぐい", $send(self, 'lambda', [], ($$21 = function(){var self = $$21.$$s || this; - - Opal.ret(self.$cook(8, 5))}, $$21.$$s = self, $$21.$$arity = 0, $$21)), $send(self, 'lambda', [], ($$22 = function(){var self = $$22.$$s || this; - - Opal.ret(self.$cook(8, 6))}, $$22.$$s = self, $$22.$$arity = 0, $$22))]} - else if ((8)['$===']($case)) {table = ["超特大マンガ肉", "特上うな丼", "魔将樹のかき氷", "ヘブンズランチ", $send(self, 'lambda', [], ($$23 = function(){var self = $$23.$$s || this; - - Opal.ret(self.$cook(9, 5))}, $$23.$$s = self, $$23.$$arity = 0, $$23)), $send(self, 'lambda', [], ($$24 = function(){var self = $$24.$$s || this; - - Opal.ret(self.$cook(9, 6))}, $$24.$$s = self, $$24.$$arity = 0, $$24))]} - else if ((9)['$===']($case)) {table = ["世界樹のサラダ", "世界樹のサラダ", "世界樹のサラダ", "黄金のラダマン鍋", "黄金のラダマン鍋", "黄金のラダマン鍋"]}; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - if (result.$class().$name()['$==']("Array")) { - - number = result['$[]'](1); - result = result['$[]'](0);}; - number = "" + (num) + (number); - return [result, number]; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $FilledWith_cook$8.$$arity = 2); - - Opal.def(self, '$getLotResult', $FilledWith_getLotResult$25 = function $$getLotResult(type) { - var self = this; - - if (type['$==']("P")) { - return self.$premium(1, "") - } else { - return self.$normal(1, "") - } - }, $FilledWith_getLotResult$25.$$arity = 1); - - Opal.def(self, '$normal', $FilledWith_normal$26 = function $$normal(phase, num) {try { - - var $$27, $$28, $$29, $$30, $$31, $$32, $$33, $$34, $a, $b, self = this, $case = nil, table = nil, result = nil, number = nil; - - - $case = phase; - if ((1)['$===']($case)) {table = ["イレブンチキン", "イレブンチキン", "イレブンチキン", $send(self, 'lambda', [], ($$27 = function(){var self = $$27.$$s || this; - - Opal.ret(self.$normal(2, 4))}, $$27.$$s = self, $$27.$$arity = 0, $$27)), $send(self, 'lambda', [], ($$28 = function(){var self = $$28.$$s || this; - - Opal.ret(self.$normal(2, 5))}, $$28.$$s = self, $$28.$$arity = 0, $$28)), $send(self, 'lambda', [], ($$29 = function(){var self = $$29.$$s || this; - - Opal.ret(self.$normal(3, 6))}, $$29.$$s = self, $$29.$$arity = 0, $$29))]} - else if ((2)['$===']($case)) {table = ["バロールたわし", "イグニスジッポ", "ヤコ仮面or梟の文鎮(選択可)", "ナレッジのハンモックorジンジャビースト", $send(self, 'lambda', [], ($$30 = function(){var self = $$30.$$s || this; - - Opal.ret(self.$normal(3, 5))}, $$30.$$s = self, $$30.$$arity = 0, $$30)), $send(self, 'lambda', [], ($$31 = function(){var self = $$31.$$s || this; - - Opal.ret(self.$normal(3, 6))}, $$31.$$s = self, $$31.$$arity = 0, $$31))]} - else if ((3)['$===']($case)) {table = ["特性HPポーション", "特性MPポーション", "黒い甲冑", "天体望遠鏡", "金獅子の剥製", $send(self, 'lambda', [], ($$32 = function(){var self = $$32.$$s || this; - - Opal.ret(self.$normal(4, 6))}, $$32.$$s = self, $$32.$$arity = 0, $$32))]} - else if ((4)['$===']($case)) {table = ["特性スタミナポーション", "戦乙女の兜", "フェンリルの首輪", "フェニックスカーペット", "動くアダマンゴーレム", $send(self, 'lambda', [], ($$33 = function(){var self = $$33.$$s || this; - - Opal.ret(self.$normal(5, 6))}, $$33.$$s = self, $$33.$$arity = 0, $$33))]} - else if ((5)['$===']($case)) {table = ["キャンディークッション", "屑鉄の金床", "薪割り王の斧", "ロジエの水差し", "箱舟の模型", $send(self, 'lambda', [], ($$34 = function(){var self = $$34.$$s || this; - - Opal.ret(self.$premium(5, 6))}, $$34.$$s = self, $$34.$$arity = 0, $$34))]}; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - if (result.$class().$name()['$==']("Array")) { - - number = result['$[]'](1); - result = result['$[]'](0);}; - number = "" + (num) + (number); - return [result, number]; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $FilledWith_normal$26.$$arity = 2); - - Opal.def(self, '$premium', $FilledWith_premium$35 = function $$premium(phase, num) {try { - - var $$36, $$37, $$38, $$39, $$40, $$41, $$42, $$43, $a, $b, self = this, $case = nil, table = nil, result = nil, number = nil; - - - $case = phase; - if ((1)['$===']($case)) {table = ["プレミアムチキン", "プレミアムチキン", "プレミアムチキン", $send(self, 'lambda', [], ($$36 = function(){var self = $$36.$$s || this; - - Opal.ret(self.$normal(3, 4))}, $$36.$$s = self, $$36.$$arity = 0, $$36)), $send(self, 'lambda', [], ($$37 = function(){var self = $$37.$$s || this; - - Opal.ret(self.$premium(2, 5))}, $$37.$$s = self, $$37.$$arity = 0, $$37)), $send(self, 'lambda', [], ($$38 = function(){var self = $$38.$$s || this; - - Opal.ret(self.$premium(2, 6))}, $$38.$$s = self, $$38.$$arity = 0, $$38))]} - else if ((2)['$===']($case)) {table = ["親衛隊バッジ", "ハタモトチャブダイ", "星のコンパス", "白銀の甲冑", $send(self, 'lambda', [], ($$39 = function(){var self = $$39.$$s || this; - - Opal.ret(self.$normal(4, 5))}, $$39.$$s = self, $$39.$$arity = 0, $$39)), $send(self, 'lambda', [], ($$40 = function(){var self = $$40.$$s || this; - - Opal.ret(self.$premium(3, 6))}, $$40.$$s = self, $$40.$$arity = 0, $$40))]} - else if ((3)['$===']($case)) {table = ["特性クイックHPポーション", "特性クイックMPポーション", "特製クイックスタミナポーション", "火龍のフィギュアor氷龍のフィギュア(選択可)", "ヒメショーグンドレス", $send(self, 'lambda', [], ($$41 = function(){var self = $$41.$$s || this; - - Opal.ret(self.$premium(4, 6))}, $$41.$$s = self, $$41.$$arity = 0, $$41))]} - else if ((4)['$===']($case)) {table = ["クイックユグドラポーション", "銀河龍のフィギュア/ドラゴン", "銀河龍のフィギュア/魔族", "魔族チェスセット", "イグニスコンロ", $send(self, 'lambda', [], ($$42 = function(){var self = $$42.$$s || this; - - Opal.ret(self.$premium(5, 6))}, $$42.$$s = self, $$42.$$arity = 0, $$42))]} - else if ((5)['$===']($case)) {table = ["グレヴディバリウス", "天使の望遠鏡orデスの目覚まし時計(選択可)", "世界樹の蔦", "死神の飾りドレス", "ザバーニヤ等身大フィギュア", $send(self, 'lambda', [], ($$43 = function(){var self = $$43.$$s || this; - - Opal.ret(self.$premium(6, 6))}, $$43.$$s = self, $$43.$$arity = 0, $$43))]} - else if ((6)['$===']($case)) {table = ["イレブンチキン", "イレブンチキン(2ピース)", "イレブンチキン(3ピース)", "イレブンチキン(6ピース)", "イレブンチキン(12ピース)", "wish star"]}; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - if (result.$class().$name()['$==']("Array")) { - - number = result['$[]'](1); - result = result['$[]'](0);}; - number = "" + (num) + (number); - return [result, number]; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $FilledWith_premium$35.$$arity = 2); - - Opal.def(self, '$getTresureResult', $FilledWith_getTresureResult$44 = function $$getTresureResult(command) { - var $a, $b, self = this, rank = nil, modify = nil, tableName = nil, $case = nil, table = nil, result = nil, number = nil; - - - if ($truthy(/TRS(\d+)([\+\-]\d)?/['$==='](command))) { - } else { - return nil - }; - rank = $$($nesting, 'Regexp').$last_match(1).$to_i(); - modify = $$($nesting, 'Regexp').$last_match(2).$to_i(); - tableName = "財宝表"; - if ($truthy(modify['$nil?']())) { - } else { - rank = $rb_plus(rank, modify) - }; - if ($truthy($rb_lt(rank, 0))) { - rank = 0}; - if ($truthy($rb_gt(rank, 10))) { - rank = 10}; - $case = rank; - if ((0)['$===']($case)) {table = ["HPポーション(消耗品)", "FPポーション(消耗品)", "マジックパウダー:火(消耗品)", "マジックパウダー:氷(消耗品)", "マジックパウダー:雷(消耗品)", "500GP"]} - else if ((1)['$===']($case)) {table = ["高級HPポーション(消耗品)", "高級FPポーション(消耗品)", "高級抵抗ポーション(消耗品)", "高級鉄壁ポーション(消耗品)", "マジックパウダー:火、氷、雷の3点セット(消耗品)", "1000GP"]} - else if ((2)['$===']($case)) {table = ["鈴のお守り(装飾品)", "盗賊の小手(装飾品)", "狩人の羽帽子(装飾品)", "狙撃手の指貫(装飾品)", "「スタミナバンド」「健康お守り」「レザーマント」3点セット", "2000GP"]} - else if ((3)['$===']($case)) {table = ["最高級HPポーション(消耗品)", "最高級FPポーション(消耗品)", "最高級抵抗ポーション(消耗品)", "任意の装飾品1つ(3000GPまでのもの)", "アタッチメント割引券(全員に1枚)", "GP"]} - else if ((4)['$===']($case)) {table = ["任意の「ミスリル」武器1つ", "ミスリルシールド(盾)", "ミスリルメイル(鎧)", "任意の装飾品1つ(5000GPまでのもの)", "アタッチメント割引券(全員に2枚)", "5000GP"]} - else if ((5)['$===']($case)) {table = ["任意の武器1つ(10000GPまでのもの)", "任意の盾1つ(10000GPまでのもの)", "任意の鎧1つ(10000GPまでのもの)", "最高級HPポーション(人数分)", "任意の装飾品1つ(10000GPまでのもの)", "7500GP"]} - else if ((6)['$===']($case)) {table = ["任意の武器1つ(15000GPまでのもの)", "任意の盾1つ(15000GPまでのもの)", "任意の鎧1つ(15000GPまでのもの)", "任意の装飾品1つ(15000GPまでのもの)", "最高級FPポーション(人数分)", "10000GP"]} - else if ((7)['$===']($case)) {table = ["任意の武器1つ(30000GPまでのもの)", "任意の盾1つ(30000GPまでのもの)", "任意の鎧1つ(30000GPまでのもの)", "任意の装飾品1つ(30000GPまでのもの)", "蘇生ポーション(消耗品)", "20000GP"]} - else if ((8)['$===']($case)) {table = ["任意の武器1つ(60000GPまでのもの)", "任意の盾1つ(60000GPまでのもの)", "任意の鎧1つ(60000GPまでのもの)", "任意の装飾品1つ(60000GPまでのもの)", "蘇生ポーション(装飾品)+アタッチメント割引券10枚(割引券は人数分)", "40000GP"]} - else if ((9)['$===']($case)) {table = ["任意の武器1つ(100000GPまでのもの)", "任意の盾1つ(100000GPまでのもの)", "任意の鎧1つ(100000GPまでのもの)", "任意の装飾品1つ(100000GPまでのもの)", "蘇生ポーション(装飾品)+アタッチメント割引券20枚(割引券は人数分)", "60000GP"]} - else if ((10)['$===']($case)) {table = ["任意の武器1つ(150000GPまでのもの)", "任意の盾1つ(150000GPまでのもの)", "任意の鎧1つ(150000GPまでのもの)", "任意の装飾品1つ(200000GPまでのもの)", "蘇生ポーション(装飾品)+アタッチメント割引券30枚(割引券は人数分)", "黄金の守護者の証(装飾品)(【ハッキング】があれば黄金の電子暗号キー(装飾品)も追加)"]} - else {return nil}; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return "" + (tableName) + "(" + (number) + "):" + (result); - }, $FilledWith_getTresureResult$44.$$arity = 1); - - Opal.def(self, '$getTrapResult', $FilledWith_getTrapResult$45 = function $$getTrapResult(command) { - var $a, $b, self = this, dif = nil, tableName = nil, $case = nil, difficultyText = nil, difficulty = nil, table = nil, result = nil, number = nil; - - - if ($truthy(/TRAP(E|N|H|L)/['$==='](command))) { - } else { - return nil - }; - dif = $$($nesting, 'Regexp').$last_match(1); - tableName = "トラップ表"; - $case = dif; - if ("E"['$===']($case)) { - difficultyText = "初級"; - difficulty = 0;} - else if ("N"['$===']($case)) { - difficultyText = "中級"; - difficulty = 1;} - else if ("H"['$===']($case)) { - difficultyText = "上級"; - difficulty = 2;} - else if ("L"['$===']($case)) { - difficultyText = "悪夢"; - difficulty = 3;} - else {return nil}; - table = ["" + "トライディザスター:宝箱から広範囲に火炎・冷気・電撃が放たれる罠。PC全員に「3D+" + ([3, 50, 70, 100]['$[]'](difficulty)) + "」の「火炎」「冷気」「電撃」属性ダメージ。", "" + "ペトロブラスター:広範囲に石化光線を放つ罠。PC全員[抵抗-" + ([2, 4, 6, 8]['$[]'](difficulty)) + "]判定を行い、失敗したPCはBS「石化」を受ける。", "" + "クロスボウストリーム:宝箱から矢の嵐が放たれる罠。PC全員に「3D+" + ([20, 40, 60, 90]['$[]'](difficulty)) + "」の「刺突」属性ダメージ。「ドッジ-" + ([4, 6, 8, 10]['$[]'](difficulty)) + "」で[回避]が可能。", "" + "フォーチュンイーター:PC全員の幸運を食らい、Ftを" + ([1, 2, 3, 4]['$[]'](difficulty)) + "点減少させる。Ftが0の場合「3D+" + ([30, 50, 70, 100]['$[]'](difficulty)) + "」点の防護点無視ダメージ。", "" + "スロット:解除に失敗しても害はないが、スロットが揃うまで開かない宝箱。スロットを1回まわすには" + ([100, 300, 600, 1000]['$[]'](difficulty)) + "GPが必要。行動を消費して[感覚-" + ([4, 6, 8, 10]['$[]'](difficulty)) + "]判定に成功すればスロットは揃う。有利な特異点「ビビット反射」があれば判定に+4のボーナス。", "テレポーター:PC全員(とエンカウントしているエネミー)を転送して道に迷わせる。「財宝ランク」が1段階減少する。", "" + "アイスコフィン:宝箱を開けようとしたキャラクターを氷漬けにする罠。対象1体に「3D+" + ([30, 50, 70, 100]['$[]'](difficulty)) + "」の「冷気」属性ダメージ。更にFPにも" + ([5, 10, 15, 20]['$[]'](difficulty)) + "点の防護点無視ダメージ。", "" + "クロスボウ:宝箱を開けようとしたキャラクターに強力な矢が放たれる罠。対象1体に「3D+" + ([20, 40, 60, 90]['$[]'](difficulty)) + "」の「刺突」属性ダメージ。「ドッジ-" + ([4, 6, 8, 10]['$[]'](difficulty)) + "」", "" + "毒針:宝箱を開けようとしたキャラクターに毒針を突き刺す罠対象1体に" + ([15, 30, 45, 60]['$[]'](difficulty)) + "点の防護点無視ダメージ。更に[抵抗-" + ([4, 6, 8, 10]['$[]'](difficulty)) + "]判定に失敗するとシナリオ終了まであらゆる判定に-2のペナルティ。", "アラーム:即座にその地形のエンカウント表を振って、それに対応したエネミーが出現する。出現したエネミーはそのターンから行動順に組み込まれる。出現するエネミー以外の記述は無視する。", "" + "殺人鬼の斧:宝箱を開けようとしたキャラクターに斧が振り下ろされる罠。対象1体に「3D+" + ([30, 50, 70, 100]['$[]'](difficulty)) + "」の「打撃」「斬撃」属性ダメージ。「ドッジ-" + ([4, 6, 8, 10]['$[]'](difficulty)) + "」か「シールド-" + ([4, 6, 8, 10]['$[]'](difficulty)) + "」で[回避]が可能。", "" + "死神:宝箱を開けようとしたキャラクターに死神を取り憑かせる罠。4ラウンド目が終了するまであらゆる判定に-3のペナルティを受け、4ラウンド目の終了と同時に「3D+" + ([30, 50, 70, 100]['$[]'](difficulty)) + "」の防護点無視ダメージ。", "幻の宝:宝箱に偽の財宝を入れ、本物の財宝を入手させない罠。トラップが発動すると価値の無い偽の宝物「幻の宝」を入手してしまう。「幻の宝」はアイテム欄を3つ占有し、シナリオ終了まで捨てられない。アイテム欄に空きがない場合は、何かを捨てて誰かが必ず持たなくてはならない。", "" + "エクスプロージョン:宝箱が大爆発を起こし、中身を粉々にしてしまう罠。宝箱の中身は消滅する。PC全員に「3D+" + ([10, 30, 50, 80]['$[]'](difficulty)) + "」の「打撃」「火炎」属性ダメージ。", "" + "レインボーポイズン:宝箱から七色の毒ガスが放たれる罠。PC全員に「3D+" + ([10, 30, 45, 60]['$[]'](difficulty)) + "」の防護点無視ダメージ。更にシナリオ終了まであらゆる判定に-2のペナルティ。[抵抗-" + ([4, 6, 8, 10]['$[]'](difficulty)) + "]判定に成功すれば無効。", "" + "デスクラウド:宝箱から致死性の毒ガスを放つ罠。PC全員を即死させる。[抵抗-" + ([2, 4, 6, 8]['$[]'](difficulty)) + "]判定に成功すれば無効。"]; - $b = self.$get_table_by_nD6(table, 3), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return "" + (tableName) + "<" + (difficultyText) + ">(" + (number) + "):" + (result); - }, $FilledWith_getTrapResult$45.$$arity = 1); - - Opal.def(self, '$getRandomOptionResult', $FilledWith_getRandomOptionResult$46 = function $$getRandomOptionResult(command) { - var $a, $b, self = this, dif = nil, tableName = nil, $case = nil, difficultyText = nil, difficulty = nil, table = nil, result = nil, number = nil, _ = nil; - - - if ($truthy(/ROP(E|N|H|L)/['$==='](command))) { - } else { - return nil - }; - dif = $$($nesting, 'Regexp').$last_match(1); - tableName = "迷宮追加オプション表"; - $case = dif; - if ("E"['$===']($case)) { - difficultyText = "初級"; - difficulty = 0;} - else if ("N"['$===']($case)) { - difficultyText = "中級"; - difficulty = 1;} - else if ("H"['$===']($case)) { - difficultyText = "上級"; - difficulty = 2;} - else if ("L"['$===']($case)) { - difficultyText = "悪夢"; - difficulty = 3;} - else {return nil}; - table = [[11, "黄金の迷宮(財宝ランク+2):全てが黄金で彩られた迷宮。財宝ランクが大きく上昇する。"], [12, "密林の迷宮(財宝ランク+1):密林の中にひっそりとたたずむ迷宮。分類が「魔獣」「獣人」「霊獣」のエネミーが行うあらゆる判定に+2のボーナス。"], [13, "" + "カラクリの迷宮:複雑なカラクリが周囲で絶え間なく動いている迷宮。分類「ギア」のエネミーが行うあらゆる判定に+2のボーナス。クリア時に「アタッチメント割引券」を全員が" + ([1, 2, 3, 5]['$[]'](difficulty)) + "枚獲得。"], [14, "" + "フラウの舞踏会:あちこちに花畑のある迷宮。フラウが発生するランダムイベントが発生した際、「この迷宮を制覇して、私達が舞踏会を開けるようにしてね」とお願いされ、クリア時の報酬に" + (["「キノコの帽子」(装飾品)", "「猛毒の花」(装飾品)", "「フルブロウン」(鎧)", "「緊急召喚の宝珠」(装飾品)"]['$[]'](difficulty)) + "が追加される。"], [15, "" + "アズマ風の迷宮:風流なアズマ風の迷宮。武器に「刀」を持つエネミーが行うあらゆる判定に+2のボーナス。クリア時に「アタッチメント割引券」を全員が" + ([1, 2, 3, 5]['$[]'](difficulty)) + "枚獲得。"], [16, "枯れた泉の迷宮:「全地形1-1」の回復の泉が全て枯れており、回復効果を得ることができない。「断崖1-6」の貴重な水源や、「水辺1-6」の毒の泉などはそのまま存在する。"], [21, "天空への道(財宝ランク+1):上へ上へと果てしなく登っていく迷宮。空気が薄くなって疲労しやすくなる。【特技】特技などによるFP消費が全て+3。"], [22, "" + "灼熱焦土の迷宮(財宝ランク+1):とてつもなく暑く、あちこちで炎が燃え盛る迷宮。エネミーが行う「火炎」属性を含む攻撃の致傷力に+" + ([10, 20, 30, 50]['$[]'](difficulty)) + "のボーナス。"], [23, "" + "灼熱焦土の迷宮(財宝ランク+1):とてつもなく寒く、気温が氷点下の迷宮。エネミーが行う「冷気」属性を含む攻撃の致傷力に+" + ([10, 20, 30, 50]['$[]'](difficulty)) + "のボーナス。"], [24, "盗賊王の迷宮:迷宮内での罠や鍵を解除する[感覚]判定に-3のペナルティ。4ラウンドまでに出現した宝箱の「財宝ランク」+1。"], [25, "" + "ミミック狂暴化:「全地形2-5」のミミックの致傷力に+" + ([20, 30, 50, 80]['$[]'](difficulty)) + "のボーナス。ミミックを見破った場合に得られるGPが" + ([500, 1000, 3000, 5000]['$[]'](difficulty)) + "GP増加する。"], [26, "トレジャーイーター狂暴化:「全地形2-6」のトレジャーイーターを見破る[感覚]判定に-3のペナルティ。4ラウンドまでに出現した宝箱の「財宝ランク」+1。"], [31, "暗闇の迷宮:どこもかしこも真っ暗な迷宮。「猫の目」がなければ視覚に関する[感覚]判定に-5のペナルティ。"], [32, "騒音の迷宮:常に大音量で謎の音楽(BGM)が鳴っている迷宮。聴覚に関する[感覚]判定に-5のペナルティ。"], [33, "未知の怪物の迷宮(財宝ランク+1):エネミーの姿がシルエットのみになる迷宮。エネミーのデータがいかなる手段でも判明させられなくなる。(通常通り[HP][FP][先制]は判明する)"], [34, "氾濫中の迷宮:大雨が降っており、川などが氾濫している迷宮。水泳を行う際の[敏捷]判定に-5のペナルティ。「森林3-6」の山火事イベントの効果は無視できる。"], [35, "間抜けの迷宮(財宝ランク+1):頭がおかしくなりそうな極彩色の迷宮。[知力][意志]判定に-2のペナルティ。[知力]や[意志]そのものが下がるわけではない。"], [36, "瘴気の迷宮(財宝ランク+1):生命力を奪う紫の霧で満ちた迷宮。"], [41, "加速する迷宮:狂ったように針の動く時計が多数された迷宮。「CT:安息の日」以外の【特技】が「CT:なし」になる。"], [42, "停滞する迷宮(財宝ランク+1):動かない時計が多数設置された迷宮。「CT:安息の日」以外のCTの存在する【特技】が「CT:シナリオ終了」になる。この効果はシナリオ終了まで持続する。"], [43, "" + "猛毒の迷宮(財宝ランク+1):見るからに毒々しい紫色の沼があちこちにある迷宮。エネミーが行う、名称に「毒」もしくは「ポイズン」が入る【特技】や、名称に「毒」もしくは「ポイズン」が入るトラップの致傷力に+" + ([10, 20, 40, 50]['$[]'](difficulty)) + "のボーナス。"], [44, "死の迷宮(財宝ランク+2):死の運命から逃れることのできない、血まみれの迷宮。「生命保険証」の効果が適用されない。"], [45, "幸運の迷宮:何者かの加護を感じる迷宮。PC全員のFtの最大値と現在値に+1のボーナス。この効果はシナリオ終了まで持続する。"], [46, "不運の迷宮:PC全員のFt最大値と現在値に-1のペナルティ。この効果はシナリオ終了まで持続する。"], [51, "レアメタルの迷宮:非常にレアなエネミー「レアメタルキャンディー」「レアメタルクラウン」が生息している迷宮。キャンディークラウン(CL40)、ゴールデンクラウン(CL177)から獲得できる通常ドロップのGPが5倍になる。"], [52, "魔力の泉:PCとエネミーの双方が、[FP]を消費せずに【魔法】を使用できるようになる。最終的な消費[FP]が最大[FP]より大きい【魔法】は使用できない。"], [53, "ブルーの迷宮:陰鬱な気分になり、他のキャラクターと関わる気力を失う。PC全員が不利な特異点「嫌な奴」を1段階得る。"], [54, "レッドの迷宮:なぜか興奮して非常に好戦的になる。PC全員が不利な特異点「脳みそ筋肉」を得る。交戦中に「1:回復系」のイベントが発生しても戦闘を終了させることができない。"], [55, "ピンクの迷宮:なんだか身近な異性(同性も?)が気になって仕方なくなる。PC全員が不利な特異点「英雄色を好む」を得る。魔族も戦闘意欲を失い、「分類:魔族」のエネミーが出現するイベントは無視する。"], [56, "ハズレの迷宮(財宝ランク-1):ツギハギだらけの壁などでできた、ハリボテのような貧相な迷宮。宝箱の中身もなんだか貧相になる。"], [61, "" + "ラダマンティスの迷宮(財宝ランク+2):第一魔将ラダマンティスの像が入口に設置された迷宮。全てのエネミーが行うあらゆる判定に+2のボーナス。また、「遺跡6-6」のイベントのダメージ+" + ([20, 40, 60, 80]['$[]'](difficulty)) + "。"], [62, "グレイヴディガーの迷宮(財宝ランク+2):第二魔将グレイブディガーの像が入口に設置された迷宮。「分類:アンデッド」のエネミーが行うあらゆる判定に+5のボーナス。"], [63, "ハイペリオンの迷宮(財宝ランク+2):第三魔将ハイペリオンの像が入口に設置された迷宮。全てのエネミーが「ターン開始」時に[HP]を全回復する。"], [64, "" + "ムスペルニヴルの迷宮(財宝ランク+2):勇ましくも美しい女性の像が設置された迷宮。エネミーが行う「火炎」もしくは「冷気」属性を含む攻撃の致傷力に+" + ([20, 40, 60, 80]['$[]'](difficulty)) + "のボーナス。"], [65, "ウェルスの迷宮:人懐っこそうなアズマ風の青年が設置された迷宮。シナリオ上で第五魔将の正体が明らかに鳴っている場合のみ、PC全員のFtの最大値と現在値に+5のボーナス。この効果はシナリオ終了まで持続する。"], [66, "バロールの迷宮(財宝ランク+2):第六魔将バロールの像が入口に設置された迷宮。「分類:ギア」のエネミーが行うあらゆる判定に+5のボーナス。"]]; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - $b = result, $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), $b; - return "" + (tableName) + "<" + (difficultyText) + ">(" + (number) + "):" + (result); - }, $FilledWith_getRandomOptionResult$46.$$arity = 1); - - Opal.def(self, '$getRandomEventResult', $FilledWith_getRandomEventResult$47 = function $$getRandomEventResult(command) { - var $a, $b, self = this, dif = nil, area = nil, type = nil, tableName = nil, $case = nil, difficultyText = nil, difficulty = nil, areaText = nil, table = nil, result = nil, event = nil, number = nil; - - - if ($truthy(/RAND(E|N|H|L)([1-6])?/['$==='](command))) { - - dif = $$($nesting, 'Regexp').$last_match(1); - area = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($$($nesting, 'Regexp').$last_match(2)['$nil?']())) { - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (area = ($a[0] == null ? nil : $a[0])), $b}; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (type = ($a[0] == null ? nil : $a[0])), $b; - } else if ($truthy(/RENC(E|N|H|L)([1-6])?/['$==='](command))) { - - dif = $$($nesting, 'Regexp').$last_match(1); - area = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($$($nesting, 'Regexp').$last_match(2)['$nil?']())) { - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (area = ($a[0] == null ? nil : $a[0])), $b}; - type = 4; - } else { - return nil - }; - tableName = "ランダムイベント表"; - $case = dif; - if ("E"['$===']($case)) { - difficultyText = "初級"; - difficulty = 0;} - else if ("N"['$===']($case)) { - difficultyText = "中級"; - difficulty = 1;} - else if ("H"['$===']($case)) { - difficultyText = "上級"; - difficulty = 2;} - else if ("L"['$===']($case)) { - difficultyText = "悪夢"; - difficulty = 3;} - else {return nil}; - $case = area; - if ((1)['$===']($case)) { - areaText = "洞窟"; - $case = type; - if ((1)['$===']($case)) {table = ["回復の泉。PC全員の[HP][FP]が完全に回復する。「死亡」以外のあらゆるBSも回復する。", "" + "淡い光を放つ鉱石に包まれた部屋に出る。Ftが" + ([1, 2, 3, 4]['$[]'](difficulty)) + "点回復する。", "" + "天井が開いていて植物の育っている洞窟内庭園。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すると、力の枠木の実を見つけてPC全員の[HP][FP]を" + ([20, 30, 40, 50]['$[]'](difficulty)) + "点回復できる。有効:「自然と生きる」【賢人の知恵】", "" + "「きのこっきのこっげんきでろ~♪」洞窟内で栽培できる特殊なキノコを栽培する、キノコのフラウに出会う。100GP支払うことでキノコを1つ譲ってもらうことができ、[HP]が全回復してシナリオ終了まで[HP]の最大値に+" + ([10, 15, 20, 25]['$[]'](difficulty)) + "のボーナスを得る。", "ギア技術を用いた強力な懐中電灯のおいてある休憩室。迷宮を出るまでPC全員に有利な特異点「猫の目」があるものとして扱う。迷宮を出ると懐中電灯は寿命が来たのか壊れてしまう。", "" + "不思議な光を放つ水が湧いている。PCの[HP][FP]のいずれかが減少している場合、このイベントは拒否できない。また全快でも不利な特異点「好奇心は猫を殺す」を持つPCは飲みにいこうとする。飲んだキャラクターは1Dを振り、以下の様な効果が発生する。\n" + " ----------\n" + " 1:[HP][FP]と「死亡」以外のBS全回復\n" + " 2:シナリオ終了まで不利な特異点が全て消滅する\n" + " 3:シナリオ終了まで精神的に不利な特徴が1つ消滅する\n" + " 4:[HP]が1点になってしまう。[HP]が0以下の場合は[HP][FP]が全回復\n" + " 5:シナリオ終了まで余分な獣っぽい耳や尻尾が生える。既に生えているキャラクターはそれが大きくなる。聴覚に関する[感覚]判定+4。\n" + " 6:あいやー!それ呪いの泉アルよ!シナリオ終了まで性別が男女入替わる。ロールプレイが面白かった場合、シナリオ終了時に「アタッチメント割引券」を与えても良い"]} - else if ((2)['$===']($case)) {table = ["" + "財宝ランク" + ([0, 2, 4, 6]['$[]'](difficulty)) + "の宝箱を発見する。カギやトラップはかかっていない。行動を消費することで開けることができる。", "" + "財宝ランク" + ([1, 3, 5, 7]['$[]'](difficulty)) + "の宝箱を発見する。難易度" + ([3, 6, 9, 12]['$[]'](difficulty)) + "のカギがかかっている。行動を消費して[感覚-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定でカギを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", "" + "財宝ランク" + ([1, 3, 5, 7]['$[]'](difficulty)) + "の宝箱を発見する。難易度" + ([3, 6, 9, 12]['$[]'](difficulty)) + "のトラップがかかっている。行動を消費して[感覚-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定でトラップを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", "" + "頑丈な岩壁に阻まれた隠し財宝の部屋を発見する。岩壁は「打撃」属性で合計" + ([100, 200, 300, 500]['$[]'](difficulty)) + "点のダメージを与えると破壊され、財宝ランク" + ([2, 4, 6, 8]['$[]'](difficulty)) + "のアイテムを入手可能。岩壁はどのHexからでも隣接扱いで攻撃可能。", "" + "ミミックの罠。ランダムなキャラクターに「3D+" + ([30, 50, 70, 100]['$[]'](difficulty)) + "」の「斬撃」属性ダメージを与える。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すればこの罠を見抜いて無効化でき、なおかつ" + ([1000, 2000, 5000, 10000]['$[]'](difficulty)) + "GPを入手可能。有効:【盗賊の心得】【ロックスミス】", "" + "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すればこの罠を見抜いて無効化することができ、なおかつ" + ([1000, 2000, 5000, 10000]['$[]'](difficulty)) + "GP入手可能。"]} - else if ((3)['$===']($case)) {table = ["洞窟内で暗がりの中に近道を発見!有利な特異点「猫の目」を持つキャラクターがいればクリア時の財宝ランク+1。", "洞窟内で近道を発見!だが狭くて通れるかどうか…?有利な特異点「軟体動物」を持つキャラクターがいればクリア時の財宝ランク+1。", "6つの分かれ道だ、どちらに進めばいいのだろうか…?1Dを振って1~3が出ればクリア時の財宝ランク+1。4~6が出ればクリア時の財宝ランク-1。有効:「非凡な直感」", "" + "足場の悪い道だ。うまく降りられればいいが…。[敏捷-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すればクリア時の財宝ランク+1。失敗すると判定を行ったキャラクターに[3D+20]の防護点無視ダメージ。有効:「軟体動物」", "" + "大きな岩でふさがれた近道。力づくでどかせてやる![体力-" + ([2, 4, 6, 8]['$[]'](difficulty)) + "]判定に成功すれば売り味の財宝ランク+1。失敗すると判定を行ったキャラクターは[FP]を5点消費する。", "6つの分かれ道だ、どうやら正解の道以外はエネミーの巣だが…。1Dを振って1が出ればクリア時の財宝ランク+1。2~6が出れば即座に洞窟のエンカウントイベントが発生する!有効:「非凡な直感」"]} - else if ((4)['$===']($case)) {table = ["水あめ状のボディに王冠をのせた、珍しいエネミーだ!エネミーとエンカウント。", "獣の皮をかぶった魔族が狩った獲物の取り分でもめているようだ。彼らは興奮して争っているが、PCたちを見つけると向きを変えて襲い掛かってくる!エネミーとエンカウント。「マジカルクッキング」で持ち歩くタイプのものを作っていた場合、それを渡すことで戦闘を回避することもできる。", "岩だと思って通りすぎようとしたら魔族だった!?エネミーとエンカウント。相手は洞窟で巧妙に擬態しており、[先制]に+10のボーナスを得る。有利な特異点「虫の知らせ」があれば[先制]ボーナスを無効化できる。", "" + "洞窟でトロッコに乗ったら暴走するギア魔族に追いかけられた!エネミーとエンカウント。トロッコに乗って逃げつつの戦闘になり、2ラウンド以内に倒せなければ轢かれてPC全員が「3D+" + ([30, 30, 30, 100]['$[]'](difficulty)) + "」の防護点無視ダメージを受ける。また、1ラウンドに1人誰かが行動を消費してトロッコを運転する必要があり、これに失敗すると即座に轢かれてしまう。轢かれると戦闘は終了する。PCにケイヴウォーカーがいればトロッコの運転を「支援ターン」で行える。", "" + "炎の燃え盛る洞窟だ!運の悪いことに魔獣までいるようだ…。イベント詳細決定時に敵味方全員が「3D+" + ([10, 20, 30, 50]['$[]'](difficulty)) + "」の「火炎」属性ダメージを受ける。さらにエネミーとエンカウント。", "" + "冷気に包まれた洞窟だ。更に氷の魔族や魔獣まで棲息している!イベント詳細決定時に敵味方全員が「3D+" + ([10, 20, 30, 50]['$[]'](difficulty)) + "」の「冷気」属性ダメージを受ける。さらにエネミーとエンカウント。"]} - else if ((5)['$===']($case)) {table = ["突然の落盤がエネミーを押しつぶす!戦闘中の場合、ランダムにエネミー1体を即死させ、ドロップ品も入手可能。それ以外の場合は特に何も起きない。「分類:ネームド」「分類:魔将」のエネミーには「3D+50」の防護点無視ダメージ。", "" + "採掘用のダイナマイトが打ち捨てられている。ケイヴウォーカー用の消耗品" + (["「ダイナマイト」", "「特性ダイナマイト」2個と「ダイナマイト」", "「特性ダイナマイト」4個と「ダイナマイト」", "「特性ダイナマイト」"]['$[]'](difficulty)) + "を持てるだけ持つことができる。", "" + "洞窟内に有毒ガスが発生している!敵味方全員[抵抗-" + ([4, 6, 8, 10]['$[]'](difficulty)) + "]で判定し、失敗したキャラクターは" + ([15, 30, 45, 60]['$[]'](difficulty)) + "点の防護点無視ダメージを受ける。有効:【ガシンショウタン】", "" + "溶岩の流れる部屋だ、早くおさらばしたいところだが…。[敏捷-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すれば何事も無く渡り切ることができる。失敗するとPC全員に「3D+" + ([20, 40, 60, 90]['$[]'](difficulty)) + "」の「火炎」属性ダメージ。PCにドラコニアンがいれば判定不要。有効:【野伏の歩み】", "" + "突然の落盤がPCのうちランダムに1人を押しつぶす!「3D+" + ([40, 60, 80, 120]['$[]'](difficulty)) + "」の防護点無視ダメージを受ける。「ドッジ-" + ([4, 6, 8, 10]['$[]'](difficulty)) + "」で回避可能。有利な特異点「猫の目」か「虫の知らせ」があれば判定不要。", "" + "突然の地震が起きて洞窟全体が崩落を始める!このイベントが発生すると戦闘は強制終了する。PC全員[敏捷" + (["", "-1", "-2", "-4"]['$[]'](difficulty)) + "]で判定し、失敗したキャラクターは[HP]が0になる。[HP]が0以下だった場合は死亡してしまう。全員が判定に成功した場合、クリア時の財宝ランク+1。"]} - else if ((6)['$===']($case)) {table = ["" + "プラネタリウムのように鉱石が輝く部屋。星の配置に関する謎かけになっている。行動を消費して[知力-" + ([6, 9, 12, 15]['$[]'](difficulty)) + "]判定に成功するとこの謎を解くことができる。謎が解けると「うぃっしゅすたー」(大事なもの)" + (["か、10000GP", "2個か、20000GP", "3個か、30000GP", "5個か、50000GP"]['$[]'](difficulty)) + "の好きな方を入手可能。有効:【賢人の知恵】", "" + "地熱で温泉が湧いている!みんなで一休みできそうだ。このイベントが発生すると戦闘は強制終了する。PC全員の[HP][FP][Ft]が全回復する。また、シナリオ終了まで「ターン開始」時に[HP]が" + ([5, 10, 15, 20]['$[]'](difficulty)) + "点ずつ回復する。", "" + "地下渓流を発見する。どうやらここを進んでいくしかないようだ…。このラウンドではPCが「水中」にいるものとする。また、[敏捷-" + ([6, 9, 12, 15]['$[]'](difficulty)) + "]判定に成功すると水中に沈んだ宝箱を発見する。中身は「" + (["3Dx100GP", "(3D+10)x100GP", "(3D+30)x100GP", "3Dx1000GP"]['$[]'](difficulty)) + "」で、カギやトラップはかかっていない。行動を消費することで開けることができる。有効:【野伏の歩み】", "" + "とてつもない量のアダマン合金の原石を発見する!持ち帰り放題だ!「アダマン原石」は1つ" + ([300, 500, 1000, 2000]['$[]'](difficulty)) + "GPで売却可能で、行動を消費することで自分のアイテム欄に好きなだけ入手可能。", "地面から強力な重力で引きつけられる!敵味方全員が[移動]に-5のペナルティを受ける。さらに洞窟のエンカウントイベントが発生。「4-5」と「4-6」の部屋のダメージは適用しない。", "" + "怪しい光を放つ鉱石の部屋。鉱石は不気味な振動を放っており、ラウンド終了時にランダムなPC1人の武器が1つ壊れてシナリオ終了まで使用できなくなる。鉱石は「打撃」属性で合計" + ([100, 200, 300, 500]['$[]'](difficulty)) + "点のダメージを与えると破壊される。鉱石はどのヘクスからでも隣接扱いで攻撃可能。"]} - else {return nil};} - else if ((2)['$===']($case)) { - areaText = "遺跡"; - $case = type; - if ((1)['$===']($case)) {table = ["回復の泉。PC全員の[HP][FP]が完全に回復する。「死亡」以外のあらゆるBSも回復する。", "" + "随分進んだし一休みしよう。ラウンド数が奇数の場合は[FP]が「" + (["3D", "3D+5", "3D+10", "3D+15"]['$[]'](difficulty)) + "」回復する。ラウンド数が偶数の場合は進んだように見せかけて迷っているだけだった。どっと疲れてしまい[FP]は回復せず、クリア時の財宝ランク-1。有利な特異点「精緻な記憶」があれば、偶数ラウンドでも[FP]が回復して財宝ランクも減少しない。", "" + "どうやらここは古代の医務室らしい。なにやら怪しげな機械がたくさんあるが…。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すればPC全員の[HP][FP]が完全に回復する。「死亡」以外のあらゆるBSも回復する。有効:【魔導工学のススメ】", "「きみたちの道に光りあれ…お金?いらないよ」道標の光ゴケを栽培している、苔のフラウに出会う。以後「いくつかの道から正解を選ぶ」イベントが発生した場合、光ゴケがそのうちの1つに飛んでいき、必ず正解の道を選ぶことができる。", "ダンジョンの見取り図を書いた部屋に出る。次のランダムイベントでは、好きな地形を選択してからイベント表を振ることができる。次が最終イベントだった場合、クリア時の財宝ランク+1。", "" + "「パワーアップ装置!」と書かれた怪しげな機械が置いてある。" + ([3000, 5000, 10000, 20000]['$[]'](difficulty)) + "GPを支払って使用するとキャラクターを強化(?)可能。使用するかは自由だが、不利な特異点「好奇心は猫を殺す」を持っているキャラクターはGPがあるなら入ってしまう。使用したキャラクターは1Dを振り、以下のような効果が発生する。\n" + " ----------\n" + " 1:なんと、ランダムな[主能力]が1点上昇する!\n" + " 2:ただの日焼けサロンだ!健康的に焼け、シナリオ終了まで「火炎」に対する防護点+10。\n" + " 3:CLが1上昇する!やったね!【特技】はシナリオが終了してから習得する。\n" + " 4:装置は突然爆発する!ダメージは受けないが髪型がアフロに。装置は壊れる。\n" + " 5:巨大化してシナリオ終了まで第代[HP]+50![HP][FP]も全回復。装置は壊れる。\n" + " 6:故障のせいかランダムな[主能力]が1点下降する…大ショック…"]} - else if ((2)['$===']($case)) {table = ["" + "財宝ランク" + ([0, 2, 4, 6]['$[]'](difficulty)) + "の宝箱を発見する。カギやトラップはかかっていない。行動を消費することで開けることができる。", "" + "財宝ランク" + ([1, 3, 5, 7]['$[]'](difficulty)) + "の宝箱を発見する。難易度" + ([3, 6, 9, 12]['$[]'](difficulty)) + "のカギがかかっている。行動を消費して[感覚-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定でカギを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", "" + "財宝ランク" + ([1, 3, 5, 7]['$[]'](difficulty)) + "の宝箱を発見する。難易度" + ([3, 6, 9, 12]['$[]'](difficulty)) + "のトラップがかかっている。行動を消費して[感覚-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定でトラップを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", "" + "部屋で脱出ゲームのような様々な仕掛けをとかないと開かない宝箱。行動を消費して[知力-" + ([6, 9, 12, 15]['$[]'](difficulty)) + "]判定に成功すれば開けることができ、財宝ランク" + ([2, 4, 6, 8]['$[]'](difficulty)) + "のアイテムを入手可能。判定に失敗すると宝箱を入手可能。判定に失敗すると宝箱は爆発してしまい、中身も失われる。有効:【盗賊の心得】", "" + "ミミックの罠。ランダムなキャラクターに「3D+" + ([30, 50, 70, 100]['$[]'](difficulty)) + "」の「斬撃」属性ダメージを与える。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すればこの罠を見抜いて無効化でき、なおかつ" + ([1000, 2000, 5000, 10000]['$[]'](difficulty)) + "GPを入手可能。有効:【盗賊の心得】【ロックスミス】", "" + "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すればこの罠を見抜いて無効化することができ、なおかつ" + ([1000, 2000, 5000, 10000]['$[]'](difficulty)) + "GP入手可能。"]} - else if ((3)['$===']($case)) {table = ["" + "鏡に映る怪人が自分の真似をしろとジェスチャーしている。[敏捷-" + ([6, 8, 10, 12]['$[]'](difficulty)) + "]判定に成功するとうまく真似してパントマイムすることができ、鏡が消滅して隠し通路が開かれる。クリア時の財宝ランク+1。【華劇:○○】を習得したフラウがいれば判定不要。", "" + "小さな魔将の像がフィルトウィズの地図上で乱雑に置かれている。[知力-" + ([6, 9, 12, 15]['$[]'](difficulty)) + "]判定に成功すれば魔将の所在地を正しく配置することができ、隠し通路が開かれる。クリア時の財宝ランク+1。有効:【賢人の知恵】", "シュートの罠に引っかかるが、結果的に新たな道を発見できた!このイベントが発生すると戦闘は強制終了する。PC全員が「3D+10」の「打撃」属性ダメージを受けるが、クリア時の財宝ランク+1。", "" + "ラダマンティス崇拝者が創りだした巨大な甲羅のようなものが置かれた部屋。登っていけば近道することができそうだが、これはかなり骨が折れそうだ…。行動を消費して[敏捷-" + ([6, 9, 12, 15]['$[]'](difficulty)) + "]判定を行い、成功すればクリア時の財宝ランク+1。判定に挑戦したキャラクターは次のターンまで[回避]判定を行えない。有効:「軟体動物」【野伏の歩み】", "" + "後ろから重い物が転がってくる音がする。ローリングストーンだ!このイベントが発生すると戦闘は強制終了する。ラウンド終了時に全員の[移動]が" + ([6, 8, 10, 12]['$[]'](difficulty)) + "以上であればクリア時の財宝ランク+1。[移動]が" + ([6, 8, 10, 12]['$[]'](difficulty)) + "未満のPCは「3D+" + ([30, 50, 70, 100]['$[]'](difficulty)) + "」の防護点無視ダメージを受ける。", "通路が複雑に入り組んでおり道に迷いそうだ…。2Dを振り、ゾロ目ならクリア時の財宝ランク+1。それ以外の場合はクリア時の財宝ランク-1。有効:「非凡な直感」"]} - else if ((4)['$===']($case)) {table = ["絶体絶命、モンスターハウスだ!危機感を煽るBGMも流れてくる。1Dをふって無限の迷宮の地形から1つ選択する。その地形で該当する難易度に名前の書かれたエネミーが全て1体ずつ出現する。特別な強化が施されている場合それも適用する。これらのエネミーを全滅させた際、最後に倒したエネミーからは必ず「レア」を入手できる。エネミー決定後に逃亡を宣言しても良い。その場合クリア時の財宝ランク-2。", "石像が並んでいる通路があるが…なんと石像は警備装置だった!エネミーとエンカウント。奇襲攻撃のため、エネミーからの攻撃の[回避]に-4のペナルティを受ける。【魔導工学のススメ】があれば警戒していたため、このペナルティは受けない。", "魔族が障害物に身を隠しながら狙撃してきた!エネミーとエンカウント。障害物のため、エネミーは近接攻撃に対する防護点に+30のボーナス。", "「汝が戦う理由とは何か?答えい人間!」ブツゼンにモンスターが仁王立ちしており、問答を行ってくる。[意思-6]判定に成功すると戦闘を回避することができ、ドロップ品も入手可能。判定に失敗するか戦闘を望んだ場合、エネミーとエンカウント。有効:【詩人の交渉術】", "" + "進路上に鎖に繋がれたモンスターを発見する。どうやら普通のモンスターより凶暴なようだ、戦うべきか避けるべきか…エネミーとエンカウント。エネミーはあらゆる致傷力に+" + ([10, 20, 30, 40]['$[]'](difficulty)) + "のボーナスを得る。戦闘を避けた場合クリア時の財宝ランク-1。", "暴れゴーレムが襲い掛かってくる!暴走しているせいか凄まじいスピードだ!エネミーとエンカウント。このエネミーは[移動][先制]に+10のボーナスを得ており、全員が行動終了した後、ラウンド終了前にもう1度ターンがまわってくる。"]} - else if ((5)['$===']($case)) {table = ["" + "一斉に周囲の壁の射出光が開き、無数の矢が放たれる!PC全員に「3D+" + ([20, 40, 60, 90]['$[]'](difficulty)) + "」の「刺突」属性ダメージ。「ドッジ-" + ([4, 6, 8, 10]['$[]'](difficulty)) + "」で[回避]が可能。有利な特異点「虫の知らせ」があれば[回避]に+4のボーナスを得る。", "" + "突然部屋に白いガスが充満して睡魔が襲ってくる!PC全員がBS「睡眠」を受ける。[抵抗-" + ([2, 4, 6, 8]['$[]'](difficulty)) + "]判定で無効化。", "" + "フロアイミテーターの罠だ!突然部屋の入口が閉まり、君たちを消化し始める!「斬撃」属性で合計" + ([100, 200, 300, 500]['$[]'](difficulty)) + "点のダメージを与えると入り口が開き脱出できるが、それまでPC全員は「ターン開始」時に" + ([10, 20, 30, 40]['$[]'](difficulty)) + "点の防護点無視ダメージを受ける。ラウンドごとの地形変化やイベントは行われず、最終イベントにも進めなくなる。入り口はどのヘクスからでも隣接扱いで攻撃可能。誰も「斬撃」属性の攻撃ができないなら君たちの冒険はここまでだ。", "" + "休憩室のようだ。寝心地のよさそうなふかふかのベッドまである。このイベントが発生すると戦闘は強制終了する。PC全員が[意思-" + ([2, 4, 6, 8]['$[]'](difficulty)) + "]判定を行い、失敗したPCはBS「眠り」を受ける。この「眠り」は誰かが行動を羊皮して叩き起こさない限り、シナリオ終了まで持続する。全員が判定に失敗した場合、君たちの冒険はここまでだ。もう目覚めることはないが、せめていい夢を見れるといいだろう。ホムンクルスは「居眠り禁止」を厳命されているため、「眠り」を受けない。", "「ラダマンティスの蛇」の像と目が合ってしまった。どうやらダンジョンの監視者に見つかってしまったらしい!以後探索中にエネミーと遭遇した場合、CLの最も高いエネミーが1体増加する。このイベントの効果は累積せず、「分類:ネームド」「分類:魔将」のエネミーの数は変化しない。", "" + "怪しげな卵が置かれた部屋。君たちが近寄ると卵が割れて…?1Dを振り、その出目によって中から様々なものが出現する。\n" + " ----------\n" + " 1~2:これは財宝だ!財宝ランク" + ([2, 4, 6, 8]['$[]'](difficulty)) + "のアイテムが入手可能。\n" + " 3~4:卵はそのまま大爆発!PC全員に「3D+" + ([30, 50, 70, 100]['$[]'](difficulty)) + "」の「打撃」「火炎」属性ダメージ。\n" + " 5~6:卵からドラゴンが!エネミーとエンカウント。"]} - else if ((6)['$===']($case)) {table = ["突然ダンジョンの明かりが消えてほぼ真っ暗になってしまう!次のラウンドに入るまであらゆる判定に-6のペナルティを受ける。有利な特異点「猫の目」があればペナルティを受けない。また「洞窟1-5の懐中電灯」や「遺跡1-4の光ゴケ」などがあれば無効。", "" + "どうやら古代の訓練施設のようだ。「パンチングマシーン」と書かれたものがあり、行動を消費すれば100GPを支払って挑戦可能。「格闘」武器でのダメージ判定を1回行い、与えたダメージによってファンファーレとともに景品が出る。1回挑戦すると、ガタが来ていたのか壊れてしまう。\n" + " ----------\n" + " ダメージ" + ([20, 40, 60, 80]['$[]'](difficulty)) + "以上:財宝ランク" + ([0, 2, 4, 6]['$[]'](difficulty)) + "のアイテム\n" + " ダメージ" + ([30, 50, 70, 90]['$[]'](difficulty)) + "以上:財宝ランク" + ([1, 3, 5, 7]['$[]'](difficulty)) + "のアイテム\n" + " ダメージ" + ([40, 60, 80, 100]['$[]'](difficulty)) + "以上:財宝ランク" + ([2, 4, 6, 8]['$[]'](difficulty)) + "のアイテム", "謎の装置のせいで気になるあの子と体が入れ替わってしまった!?シナリオ終了までPCのうち2人の体や能力が入れ替わってしまう。入れ替わるキャラクターはランダムで決定するか、面白くなるようにGMが選ぶ。戦闘で扱うデータは今までどおりだが、入れ替わったキャラクターのロールプレイを行うこと。", "やった、きんきらきんの宝物庫だ!「2-1」「2-2」「2-3」の宝箱が3つ同時に出現する。ただし、「2-3」の罠の解除に失敗すると、宝箱を開けようとしたキャラクターは黄金像になってしまう。めでたく財宝の仲間入りだ。BS「石化」と同様に扱うが、シナリオ終了までいかなる手段でも治せない。", "キャンディークラウンハウスだ!エネミーとエンカウント。4ラウンド終了までに1体も倒せなかった場合、チャンスを逃した悔しさからPC全員が[FP]に「逃げたキャンディークラウンの数x5」の防護点無視ダメージを受ける。", "" + "なぜここに呼ばれたかお分かりになりますでしょうか?ラダマンティス崇拝者の作りだした審判の部屋に飛ばされてしまった!ラウンド終了時に部屋の中央のラダマンティス像から裁きの光が放たれ、PC全員が「3D+" + ([50, 80, 110, 150]['$[]'](difficulty)) + "」の防護点無視ダメージを受ける。" + ([200, 400, 600, 1000]['$[]'](difficulty)) + "点のダメージを与えれば破壊可能でダメージも受けない。ラダマンティス像はどのヘクスからでも隣接扱いで攻撃可能。破壊に成功すると財宝ランク" + ([3, 5, 7, 9]['$[]'](difficulty)) + "のアイテムが入手可能。"]} - else {return nil};} - else if ((3)['$===']($case)) { - areaText = "山岳"; - $case = type; - if ((1)['$===']($case)) {table = ["回復の泉。PC全員の[HP][FP]が完全に回復する。「死亡」以外のあらゆるBSも回復する。", "" + "休憩に丁度いい広場を見つけた。[FP]が3D" + (["", "+5", "+10", "+15"]['$[]'](difficulty)) + "点回復する!だが、居心地が良すぎて離れづらくなってしまう。PC全員が[意思-" + ([2, 3, 4, 6]['$[]'](difficulty)) + "]判定を行う。PCのうち半分以上が失敗した場合、次のラウンドもこのイベントが発生して、クリア時の財宝ランク-1。", "" + "山小屋を発見し一休み。[HP]と[FP]が3D" + (["", "+5", "+10", "+15"]['$[]'](difficulty)) + "点回復する。PCが4人の時にこのイベントが発生した場合、休憩中の暇つぶしに山小屋の四隅をぐるぐるまわって運動し始める。だが、後から妙なことに気が付きFtが1点減少する…", "" + "「へーっ、こんなとこまでよく来たね!これ、食べる?食べる?」キイチゴを栽培しているフラウに出会う。栄養満点で幸せになる。PC全員の[HP]と[FP]を10点、Ftを1点回復することができる。さらに、【魔法の料理人】を持つPCがいれば、消耗品「いちごジャム」をSLv個入手可能。\n" + " ----------\n" + " 名称:いちごジャム\n" + " 価格:非売品\n" + " 解説:[HP]と[FP]を10点、Ftを1点回復する。戦闘中には使用できない。", "" + "少し休憩できそうな洞窟を発見する。PC全員の[FP]を10点回復する。中には他のエクスプローラーが残していったと思われる道具もあった。「" + (["高級HPポーション", "最高級HPポーション", "特性HPポーション", "うぃっしゅすたー"]['$[]'](difficulty)) + "」を入手することができる。大雨が降っていたり、火災が起こったりしていた場合、その効果も消滅する。", "" + "回復の泉。PC全員の[HP][FP]が完全に回復する。「死亡」以外のあらゆるBSも回復する。しかし山間の貴重な水源のため亜人によって管理されており、使用するには" + ([500, 1000, 2000, 4000]['$[]'](difficulty)) + "GPが必要。PCのパーティーに管理している亜人と同じ種族がいるか、【詩人の交渉術" + ([1, 2, 3, 4]['$[]'](difficulty)) + "】を持つキャラクターがいれば無料で使用可能。どの種族が管理しているかは1Dを振って決定する。\n" + " ----------\n" + " 1:ドラコニアン\n" + " 2:リザードとワイズマン\n" + " 3:フラウ\n" + " 4:シルヴァテイル\n" + " 5:ストームコーザー\n" + " 6:グラント"]} - else if ((2)['$===']($case)) {table = ["" + "財宝ランク" + ([0, 2, 4, 6]['$[]'](difficulty)) + "の宝箱を発見する。カギやトラップはかかっていない。行動を消費することで開けることができる。", "" + "財宝ランク" + ([1, 3, 5, 7]['$[]'](difficulty)) + "の宝箱を発見する。難易度" + ([3, 6, 9, 12]['$[]'](difficulty)) + "のカギがかかっている。行動を消費して[感覚-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定でカギを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", "" + "財宝ランク" + ([1, 3, 5, 7]['$[]'](difficulty)) + "の宝箱を発見する。難易度" + ([3, 6, 9, 12]['$[]'](difficulty)) + "のトラップがかかっている。行動を消費して[感覚-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定でトラップを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", "" + "狭い谷底に宝箱があるのが見える。そして手元には岩とロープが。これはもうバンジージャンプで取ってくるしかない!行動を消費して[敏捷-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "][意思-" + ([3, 5, 7, 9]['$[]'](difficulty)) + "]で判定を行い、両方に成功すれば財宝ランク" + ([3, 5, 7, 9]['$[]'](difficulty)) + "のアイテムを入手できる。[敏捷]判定がファンブルだった場合ロープがちぎれてしまい、4ラウンド目が終了するまで戻ってこれない。有効:【野伏の歩み】([敏捷]判定のみ)", "" + "ミミックの罠。ランダムなキャラクターに「3D+" + ([30, 50, 70, 100]['$[]'](difficulty)) + "」の「斬撃」属性ダメージを与える。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すればこの罠を見抜いて無効化でき、なおかつ" + ([1000, 2000, 5000, 10000]['$[]'](difficulty)) + "GPを入手可能。有効:【盗賊の心得】【ロックスミス】", "" + "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すればこの罠を見抜いて無効化することができ、なおかつ" + ([1000, 2000, 5000, 10000]['$[]'](difficulty)) + "GP入手可能。"]} - else if ((3)['$===']($case)) {table = ["" + "山歩きの達人だけが発見できるショートカットコース。有利な特異点「鷹の目」" + (["", "", "2段階", "2段階"]['$[]'](difficulty)) + "か【野伏の歩み" + ([1, 2, 3, 4]['$[]'](difficulty)) + "】を持つキャラクターがいればクリア時の財宝ランク+1。", "" + "鉱物を運んでいたのであろう、運搬用トロッコを発見する。うまく運転できれば素早く進行できそうだが…?[敏捷-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すればクリア時の財宝ランク+1。判定に失敗すると脱線して放り出されてしまい、PC全員が「3D+10」の防護点無視ダメージを受ける。PCにケイヴウォーカーがいれば判定不要。", "" + "険しい斜面が続く。これは体力勝負になりそうだ…。PC全員が[体力" + (["", "-1", "-2", "-4"]['$[]'](difficulty)) + "]判定を行い、全員が成功すればクリア時の財宝ランク+1。判定に失敗したキャラクターは[FP]に" + ([5, 10, 15, 20]['$[]'](difficulty)) + "点の防護点無視ダメージを受ける。", "空を飛べればショートカットできそうな崖を発見する。なんらかの飛行手段のあるPCがいる場合、クリア時の財宝ランク+1。元々飛行できなくてもラウンド中に【フライト】などの【特技】を使用してラウンド終了時に「飛行状態」であれば良い。", "遠くから山彦のような不思議な声が聞こえる。山彦と会話をすると迷いやすい道を教えてくれるが、大声で会話をしているのでエネミーに見つかりやすくなる。会話をするなら次のイベントは必ず山岳のエンカウントイベントになり、会話を諦めるならクリア時の財宝ランク-1。有利な特異点「天体時計」があれば会話を諦めてもデメリットはない。", "" + "急に突風が吹いてきて、体力のないものは吹き飛ばされてしまう!もっとも「体力」の低いPC1人が[体力-" + ([2, 3, 4, 6]['$[]'](difficulty)) + "]判定を行い、失敗すると「3D+" + ([20, 40, 60, 90]['$[]'](difficulty)) + "」の防護点無視ダメージを受ける。さらに、救助に時間がかかるためクリア時の財宝ランク-1。PCにストームコーザーがいればイベントの効果を無視できる(演出は自由)。"]} - else if ((4)['$===']($case)) {table = ["" + "高いところから多数の岩がごろごろと…いや、これは魔物だ!エネミーとエンカウント。高低差で勢いがついているため、エネミーは[移動]に+5、物理攻撃の致傷力に+" + ([10, 30, 60, 120]['$[]'](difficulty)) + "のボーナスを得る", "" + "空中から羽をもった魔物があちこちから攻撃を仕掛けてきた!エネミーとエンカウント。エネミーのうち" + ([3, 3, 1, 1]['$[]'](difficulty)) + "体は任意の「PC配置ヘクス」に設置される。", "「た、隊長、もうダメです!」「バカもん!この程度で根を上げるな!」登山訓練中の魔族の正体と出くわす。だが相手は疲れているようだ?エネミーとエンカウント。[FP]は最大値から10点減少している。", "山道の横から突然穴が空き、魔物と鉢合わせしてしまう!エネミーとエンカウント。PC全員が[感覚-3]判定を行い、失敗したキャラクターはそのラウンド中に行動することができない。([回避]や[抵抗]の判定、自分のターン以外で行う【特技】は可能)有効:「狐の耳」", "ケタケタ笑いながら空から襲撃される。エネミーとエンカウント。彼女達はとても飽きっぽいので2ラウンド行動した後、3ラウンド目の開始前に立ち去ってしまう。(ドロップは入手できない)", "フェニックスがつがいで暮らす縄張りに足を踏み入れてしまった!エネミーとエンカウント。すぐに引き返せば戦闘を回避できるが、クリア時の財宝ランク-1。そのまま進むのであれば[意思-6]で判定を行い、成功すれば見逃してもらうことができる。失敗するとフェニックスは怒り狂い、襲ってくる。有効:【詩人の交渉術】"]} - else if ((5)['$===']($case)) {table = ["" + "ジャーンジャーン!げぇ、落石だ!!上から魔族が岩を落とし始める。PC全員に「3D+" + ([20, 40, 60, 90]['$[]'](difficulty)) + "」点の「打撃」属性ダメージ。「ドッジ-" + ([3, 5, 7, 9]['$[]'](difficulty)) + "」で[回避]が可能。", "" + "ファイトー!いっぱーつ!!足場が崩れ出す。PC全員が[敏捷-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定を行い、失敗すると「3D+" + ([20, 40, 60, 90]['$[]'](difficulty)) + "」点の防護点無視ダメージを受ける。成功したPCは[体力]判定を行い、失敗したPC1人を支えることができる。この判定に失敗した場合、支えようとしたキャラクターも一緒にダメージを受ける。有効:【野伏の歩み】", "滑りやすい岩を飛び移っていく道が続いている。敵味方全員が[敏捷-2]で判定を行い、失敗したキャラクターはBS「転倒」を受ける。飛行可能なキャラクターはこの影響を受けない。有効:【野伏の歩み】", "先に進む道に『銀糸の甲殻』アルゲントゥムの巣がびっしり張られている。幸い主はいないようだが、巣が邪魔で移動がしにくい…敵味方全員が4ラウンド目まで飛行状態になれなくなり、[移動]にも-5のペナルティを受ける。不利な特異点「トラウマ:虫」などがあればそれも適用する。", "" + "美しい万年雪の中を進んでいたと思ったのも束の間、雪崩に遭遇してしまう!全員が「3D+" + ([30, 50, 70, 100]['$[]'](difficulty)) + "」点の「打撃」「冷気」属性ダメージを受け、クリア時の財宝ランク-2。[感覚-" + ([6, 9, 12, 15]['$[]'](difficulty)) + "]の判定に成功すれば、すぐに洞窟に避難してやり過ごすことができる。洞窟の中には" + (["スノーの結晶(装飾品/3000GP)", "紺碧の瞳(装飾品/10000GP)", "氷狼の爪(装飾品/25000GP)", "氷河龍の盾(盾/65000GP)"]['$[]'](difficulty)) + "があり、入手可能。有効:「狐の耳」【野伏の歩み】", "" + "下から魔族の大群が登ってくる!ジャーンジャーン!石を落として撃退だ!魔族の群れは射撃攻撃で合計" + ([100, 200, 300, 500]['$[]'](difficulty)) + "点のダメージを与えれば撃退可能。複数の対象を攻撃できる【特技】を使用した場合は、ダメージを2回計算可能。ラウンド終了時までに撃退できなかった場合、PC全員が撃破に足りなかったダメージに等しい防護点無視ダメージを受ける。魔族の群れはどのヘクスからでも攻撃可能だが、射程が10ヘクス以上の攻撃でなければならない。石を落としても攻撃可能で、「3D+" + ([10, 20, 30, 50]['$[]'](difficulty)) + "」点の「打撃」属性ダメージを与える。この攻撃は判定なしで自動的に命中する。"]} - else if ((6)['$===']($case)) {table = ["" + "急に大雨が降り出した、屋内に避難したいところだが…地形が「洞窟」か「遺跡」に変更されるまで、ラウンド終了時、[FP]に「" + (["1D", "2D", "3D", "3D+5"]['$[]'](difficulty)) + "」点の防護点無視ダメージを受ける。[FP]に受けるダメージはPCがそれぞれダイスを振って決定する。「水中行動」が可能なPCはこの効果を受けない。", "" + "色とりどりの石が岩肌に…これはカラーストーンの原石だ![知力-" + ([6, 9, 12, 15]['$[]'](difficulty)) + "]判定に成功すればカラーストーン原石を持ち帰ることができる。「カラーストーン原石」は1つ" + ([500, 1000, 2000, 3000]['$[]'](difficulty)) + "GPで売却可能で、行動を消費することで自分のアイテム欄に好きなだけ入手可能。有効:【魔導工学のススメ】", "" + "不思議な岩がある。1Dを振って1~2であれば「火炎」属性、3~4であれば「冷気」属性、5~6であれば「電撃」属性の攻撃で、4ラウンド目終了までに" + ([30, 60, 100, 200]['$[]'](difficulty)) + "点のダメージを与えれば破壊可能。不思議な岩はどのヘクスからでも隣接扱いで攻撃可能で、破壊したあとには財宝ランク" + ([2, 4, 6, 8]['$[]'](difficulty)) + "のアイテムが発見できる。", "「こんなところで人間に会うなんて珍しいな、お前らも食っていくか?」ストームコーザーが獲物を取った後調理している。このイベントが発生するとエネミーは消滅する。マジカルクッキングLv4「ジャンボ串焼き」を食べさせてもらえる。【魔法の料理人】を習得したPCがいれば、Lv5「グラント風香草焼き」にパワーアップする。この料理の効果は、自分たちが「マジカルクッキング」で作った料理と累積する。", "" + "高山植物の群生地を発見する。薬草の材料になるものもありそうだ?[知力-" + ([6, 9, 12, 15]['$[]'](difficulty)) + "]判定に成功すれば、薬草を持ち帰ることができる。「高山の薬草」は1つ" + ([500, 1000, 2000, 3000]['$[]'](difficulty)) + "GPで売却可能で、行動を消費することで自分のアイテム欄に好きなだけ入手可能。【ポーションナレッジ】があれば判定は不要。有効:【賢人の知恵】「自然と生きる」", "" + "岩壁が大きく崩れていく!崩落に巻き込まれて入口付近まで戻されてしまい、クリア時の財宝ランク-2。だが、崩落した後に鈍く輝くアイテムが転がっている…?[感覚-" + ([6, 9, 12, 15]['$[]'](difficulty)) + "]判定に成功すれば" + (["アダマンソード(剣/8000GP)", "アダマンスケイル(鎧/15000GP)", "アダマンプレート(鎧/30000GP)", "ヒュージーブレード(剣/45000GP)"]['$[]'](difficulty)) + "を入手可能。有効:「鷹の目」"]} - else {return nil};} - else if ((4)['$===']($case)) { - areaText = "水辺"; - $case = type; - if ((1)['$===']($case)) {table = ["回復の泉。PC全員の[HP][FP]が完全に回復する。「死亡」以外のあらゆるBSも回復する。", "" + "甲羅干しに適した暖かい小島を見つける。少しだけ休憩しよう。[HP]と[FP]が「3D" + (["", "+5", "+10", "+15"]['$[]'](difficulty)) + "」点回復する。ワイズマンのPCは全回復する。何か面白い寝言を言ったPCに「" + (["HPポーション", "高級HPポーション", "最高級HPポーション", "うぃっしゅすたー"]['$[]'](difficulty)) + "」が空から降ってくる。", "" + "魚の群れを発見!捕まえてたらふくいただくとしよう!【魔法の料理人】があればマジカルクッキングの「魔界魚の目玉」(Lv3)" + (["", "、【魔法の料理人2】があれば「シルヴァまっしぐら」(Lv4)と「エドマエスシ」(Lv5)", "、【魔法の料理人2】があれば「シルヴァまっしぐら」(Lv4)と「エドマエスシ」(Lv5)", "、【魔法の料理人2】があれば「シルヴァまっしぐら」(Lv4)と「エドマエスシ」(Lv5)"]['$[]'](difficulty)) + (["", "", "、【魔法の料理人3】があれば「刺身盛り合わせ」(Lv6)と「オオトロスシ」(Lv7)", "、【魔法の料理人3】があれば「刺身盛り合わせ」(Lv6)と「オオトロスシ」(Lv7)"]['$[]'](difficulty)) + (["", "", "", "、【魔法の料理人4】があれば「特上うな丼」(Lv8)"]['$[]'](difficulty)) + "の全ての効果を得られる。この効果はすでにマジカルクッキングを使用していても累積する。", "「こんにちは、スーっとして気持ちいいよ。…ふふ、一緒に入ろうか?」ミントや菖蒲を育てているフラウに出会い、薬湯に浸かって[FP]が全回復する。さらに、「火炎」属性に対する防護点に+10のボーナス。", "リザードの集落につく。[HP]の減ったキャラクターがいれば持て囃され、マジカルクッキング「カリカリミミズ肉」(Lv2)をごちそうしてもらい、この先の道案内も買って出てくれる。クリア時の財宝ランク+1。全員の[HP]が満タンの場合は、そっけない扱いをされ何も起こらない。この効果はすでにマジカルクッキングを使用していても累積する。", "" + "回復の泉に見せかけた毒の泉。パーティーメンバーの[HP][FP]のいずれかが減少している場合このイベントは拒否できない。毒の水で「3D+" + ([10, 20, 30, 50]['$[]'](difficulty)) + "」点の防護点無視ダメージを受ける。[HP][FP]が全快のキャラクターと「虫の知らせ」があるPCはこの効果を受けない。[知力-6]判定に成功すればこれが毒の泉だとわかる。有効:【野伏の歩み】【賢人の知恵】"]} - else if ((2)['$===']($case)) {table = ["" + "財宝ランク" + ([0, 2, 4, 6]['$[]'](difficulty)) + "の宝箱を発見する。カギやトラップはかかっていない。行動を消費することで開けることができる。", "" + "財宝ランク" + ([1, 3, 5, 7]['$[]'](difficulty)) + "の宝箱を発見する。難易度" + ([3, 6, 9, 12]['$[]'](difficulty)) + "のカギがかかっている。行動を消費して[感覚-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定でカギを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", "" + "財宝ランク" + ([1, 3, 5, 7]['$[]'](difficulty)) + "の宝箱を発見する。難易度" + ([3, 6, 9, 12]['$[]'](difficulty)) + "のトラップがかかっている。行動を消費して[感覚-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定でトラップを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", "" + "水中の奥深くに宝箱があるのが見える。とってくるのは無理そうに見えるが…行動を消費して[敏捷-" + ([9, 12, 15, 18]['$[]'](difficulty)) + "]判定を行い、成功すれば財宝ランク" + ([3, 5, 7, 9]['$[]'](difficulty)) + "のアイテムを入手できる。有利な特異点「水中行動」があれば判定不要。有効:【野伏の歩み】", "" + "ミミックの罠。ランダムなキャラクターに「3D+" + ([30, 50, 70, 100]['$[]'](difficulty)) + "」の「斬撃」属性ダメージを与える。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すればこの罠を見抜いて無効化でき、なおかつ" + ([1000, 2000, 5000, 10000]['$[]'](difficulty)) + "GPを入手可能。有効:【盗賊の心得】【ロックスミス】", "" + "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すればこの罠を見抜いて無効化することができ、なおかつ" + ([1000, 2000, 5000, 10000]['$[]'](difficulty)) + "GP入手可能。"]} - else if ((3)['$===']($case)) {table = ["進みやすい浅瀬が続き、すいすいと進める。クリア時の財宝ランク+1。有利な特異点「水中行動」や【ミズグモ】をもつPCがいればクリア時の財宝ランク+2。ただしグラントがいると浅瀬にもかかわらず溺れてしまい、財宝ランクは変化しない。(RP次第でグラントがいるデメリットをなくしても良い)", "様々な漂流物が流れこむ船の墓場だ。お宝もありそうだが探索は大変そうだ…[FP]を3点消費する代わりに水辺の財宝系イベント「2-1~2-6」が発生する。この効果を望まない場合は特に何も起きない。", "" + "ヒャッハー、ウォータースライダーだ!巨大な植物の幹を滑って進むことができるが、かなり怖いので勇気が必要。PC全員が[意思" + (["", "-1", "-2", "-4"]['$[]'](difficulty)) + "]判定を行い、全員成功すればクリア時の財宝ランク+1。この判定に成功したPCは、失敗したPCを1人まで抱えて滑り落ちることで成功扱いにできる。", "大蓮のような植物の群生地を渡っていく。重たい装備を身に着けていると沈んでしまいそうだ…[必要体力]が15以上の装備を所有しているPCがいるとクリア時の財宝ランク-1。そのPCに有利な特異点「水中行動」や【ミズグモ】があればこのデメリットは受けない。", "" + "水流が複雑になっており、思うように進めず戻されてしまう。[体力-" + ([4, 5, 6, 8]['$[]'](difficulty)) + "]判定に失敗するとクリア時の財宝ランク-1。", "" + "突然の激流にイカダが巻き込まれる!身を任せている場合じゃない!敵味方全員が[敏捷-" + ([2, 3, 4, 6]['$[]'](difficulty)) + "]判定を行い、失敗したキャラクターは4ラウンド終了まで帰ってこれなくなる。全員が失敗してしまった場合、冒険は強制的に失敗となりダンジョンの入口に戻されてしまう。ダンジョン内で手に入れたアイテムも消耗品とGP以外はセバて水に流されて消滅する。有効:【野伏の歩み】"]} - else if ((4)['$===']($case)) {table = ["蟹の魔物がイカダをちょんぎろうとしている!早く倒さなくては!エネミーとエンカウント。1ラウンド以内に倒せなかった場合、イカダをちょんぎられてクリア時の財宝ランク-1。", "" + "アシガル潜水隊と遭遇。エネミーとエンカウント。エネミーは奇襲攻撃を仕掛けてくるため[先制]に+5のボーナスを得る。[感覚-" + ([6, 8, 10, 12]['$[]'](difficulty)) + "]判定に成功すると水面に動く竹筒を発見可能で、その場合は[先制]へのボーナスは無効化可能。有効:「鷹の目」", "" + "何か水面が揺れている…まさか、あれはニンジャ!?エネミーとエンカウント。エネミーは謎の光学迷彩ギアで姿を隠しており、[回避]に+" + ([2, 2, 4, 6]['$[]'](difficulty)) + "のボーナス。", "水辺で花を育てている少女に出会う…が、少女は魔族だった!エネミーとエンカウント。彼女が育てている花の根元には無数の動物の死体が無残にも肥料にされている。戦闘開始時に[意思]判定を行い、失敗したキャラクターは戦慄して1ターン行動不可。[回避][抵抗]の判定を行うことはできる。", "高波にのった魔族の騎士が現れる!エネミーとエンカウント。エネミーは波で勢いがついているため、最初のターンは[移動][先制]に+5のボーナス。", "" + "湖の上を渡っていると思ったら巨大なスライムの上だった!?エネミーとエンカウント。エネミーは巨大なため[HP]に+" + ([50, 100, 150, 250]['$[]'](difficulty)) + "のボーナスを得ている。また、全てのヘクスに対して隣接しているものとする。(移動妨害も全てのヘクスで受ける)"]} - else if ((5)['$===']($case)) {table = ["" + "美しい歌声が響き渡る、意識が引きずり込まれそうだ。その場にいる敵味方全員は[抵抗-" + ([2, 4, 6, 8]['$[]'](difficulty)) + "]判定を行い、失敗すると1ターンBS「☆眠り」を受ける。有効:【音響補正装置】", "" + "小舟で進んでいると、なにやら激しい水の音がする。この先は滝のようだ!PC全員が[移動-" + ([3, 4, 5, 7]['$[]'](difficulty)) + "]判定を行い(「水中行動」があれば+5のボーナスを得る)、成功したキャラクターがいれば事なきを得る。更に滝の裏の洞窟から財宝ランク" + ([3, 5, 7, 9]['$[]'](difficulty)) + "のアイテムを入手可能。[移動]判定に全員失敗した場合、全員が滝から転落して「3D+" + ([20, 30, 40, 60]['$[]'](difficulty)) + "」の防護点無視ダメージを受ける。有効:【野伏の歩み】", "" + "船の墓場を進んでいると、強風でマストが倒れてくる!PC全員が「ドッジ-" + ([2, 4, 6, 8]['$[]'](difficulty)) + "」判定を行い、失敗すると「3D+" + ([10, 20, 30, 50]['$[]'](difficulty)) + "」の防護点無視ダメージを受け、BS「☆転倒」を受ける。", "" + "ぺっぺっ、水がしょっぱい!濃い塩水がギアをダメにしてしまう。所有している武器と盾についたアタッチメントがシナリオ終了まで消滅してしまう。【魔導工学のススメ" + ([1, 1, 2, 3]['$[]'](difficulty)) + "】があれば応急処置を行い、この効果を受けない。", "" + "とても寒く冷たい水辺で、体力をどんどん奪われてしまう。「冷気」属性に対する防護点が" + ([10, 15, 20, 25]['$[]'](difficulty)) + "以下のキャラクターは、ラウンド終了時に[FP]を" + ([5, 10, 15, 20]['$[]'](difficulty)) + "点消費する。", "" + "突然間欠泉が吹き出してダメージを受ける!敵味方全員のうちランダムで1体に3D+" + ([40, 60, 80, 120]['$[]'](difficulty)) + "点の「火炎」属性ダメージとBS「☆転倒」を与える。このイベントが2ラウンド目で発生した場合、4ラウンド目のイベントはダイスを振らず「洞窟6-2」の温泉イベントになる。"]} - else if ((6)['$===']($case)) {table = ["" + "傷ついた" + (["スワンプランナー", "スカイサーチャー", "グリマルキン", "ゴールデンコーン"]['$[]'](difficulty)) + "を発見する。ラウンド終了までに[HP]を" + ([30, 50, 70, 100]['$[]'](difficulty)) + "点まで回復させればなついて" + (["スワンプランナー(ペット/4000GP)", "スカイサーチャー(ペット/6000GP)", "グリマルキン(ペット/15000GP)", "ゴールデンコーン(ペット/30000GP)"]['$[]'](difficulty)) + "を入手可能。回復できなかった場合、" + (["スワンプランナー", "スカイサーチャー", "グリマルキン", "ゴールデンコーン"]['$[]'](difficulty)) + "は逃走する。", "" + "なにやら派手な魚を見つける。あれはもしやアズマに伝わる幻の魚「ニシキゴイ」か!?行動を消費して[敏捷-" + ([8, 10, 12, 15]['$[]'](difficulty)) + "]判定に成功すれば見事に捕まえ、アイテム欄に入手することができる。売却すると" + ([3000, 6000, 12000, 24000]['$[]'](difficulty)) + "GPになる。この判定は4ラウンド目が終了するまで何度でも行うことができる。有効:【野伏の歩み】", "" + "カエルの合唱が響き渡る。何やら意味がある歌声に聞こえるが…[知力-" + ([6, 9, 12, 15]['$[]'](difficulty)) + "]判定に成功すると歌の意味を理解できる。カエル達は安全な道を教えてくれていたのだ!判定に成功した場合クリア時の財宝ランク+1。判定に失敗すると毒の沼に足を踏み入れ、PC全員が「3D+" + ([10, 20, 30, 50]['$[]'](difficulty)) + "」点の防護点無視ダメージを受ける。有効:「自然と生きる」【賢人の知恵】", "" + "老齢のグラントが岩に腰かけ釣りをしている。このイベントが発生するとエネミーは消滅する。「どうだね、よかったら釣り勝負をやっていかないか?」PC全員が行動を消費して3Dを振り、誰かが3か4を出せば見事勝利することができる。「見事じゃ、そこにあるガラクタはワシには必要ないものじゃから好きに持って行くがいい」と財宝を渡してくれる。財宝ランク" + ([3, 5, 7, 9]['$[]'](difficulty)) + "のアイテムを2つ入手可能。", "" + "沈没した「死者の方舟」だ。探せば何かありそうだが危険そうだ…1Dを振って以下の結果を適用すること。このイベントは無視することができ、その場合は何も起きない。\n" + " ----------\n" + " 1~2:…これは財宝だ!財宝ランク" + ([3, 5, 7, 9]['$[]'](difficulty)) + "のアイテムと" + (["スケルトンメイル(鎧)", "死者の心臓(装飾品)", "死霊貴族の服(鎧)", "デュラハンの盾(盾)"]['$[]'](difficulty)) + "を入手。\n" + " 3~4:…マストが倒れてきた!「水辺5-3」と同様のイベントが発生する。\n" + " 5~6:…船に残っていたアンデッドが襲ってきた!エネミーとエンカウント。", "" + "貝の群生地だ。貝の中にはキラリと光るものが…あれは真珠だ!行動を消費して[敏捷-" + ([6, 9, 12, 15]['$[]'](difficulty)) + "]判定を行い、成功すれば1回ごとにアイテム「真珠」を入手可能。これは1つ" + ([1000, 2000, 4000, 8000]['$[]'](difficulty)) + "GPで売却可能で、4ラウンド目が終了するまで何回でも入手可能。ただし、判定の成否に関わらず[FP]を2点消費する。「水中行動」があれば判定不要で[FP]も消費しない。有効:【野伏の歩み】"]} - else {return nil};} - else if ((5)['$===']($case)) { - areaText = "森林"; - $case = type; - if ((1)['$===']($case)) {table = ["回復の泉。PC全員の[HP][FP]が完全に回復する。「死亡」以外のあらゆるBSも回復する。", "" + "鬱蒼とした森の奥に見事な佇まいの茶室を見つける。ラウンド中に【ソチャデスカ】を使用した際の回復量が2倍になる。茶室の中には友好的なカラクリフラウがいて、" + ([100, 200, 300, 500]['$[]'](difficulty)) + "GPを支払ったPC全員の[HP][FP]を「3D+" + ([10, 20, 30, 50]['$[]'](difficulty)) + "」点回復してくれる。", "" + "おいしそうな果実の木だ!とてもおいしく、食べるとやたらとテンションが高くなる。[HP][FP]が「3D" + (["", "+5", "+10", "+15"]['$[]'](difficulty)) + "」点回復するが、シナリオ終了まで不利な特異点「脳みそ筋肉」を得たかのように猪突猛進型の性格になってしまう。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すれば興奮作用のある種をどけてデメリットは受けない。有効:「自然と生きる」【賢人の知恵】", "「ひんやりおいしい森のアイスやさんですよ~。今なら私との握手券付き~♪」フラウが果物いっぱいのトロピカルなアイスクリームを売っている。マジカルクッキング「フラウアイスクリーム」(Lv4)を食べさせてもらえる。この料理の効果は、自分たちが「マジカルクッキング」で作った料理と累積する。", "森のなかにひっそりとたたずむジンジャを発見して、ナインテイルのカンヌシかミコが旅の無事を祈ってくれる。PT全員に【不死なる炎】がかかり、最終イベントに入るまで、死亡判定に自動成功するようになる。", "" + "食人植物の花粉による回復の泉の幻影。PTメンバーの[HP][FP]のいずれかが減少している場合このイベントは拒否できない。[知力-6]判定に失敗すると食人植物の群生地にふらふらと入り、PC全員が「3D+" + ([20, 30, 40, 60]['$[]'](difficulty)) + "」の「斬撃」属性ダメージを受ける。有利な特異点「自然と生きる」があれば、事前に気が付きダメージは受けない。有効:【賢人の知恵】"]} - else if ((2)['$===']($case)) {table = ["" + "財宝ランク" + ([0, 2, 4, 6]['$[]'](difficulty)) + "の宝箱を発見する。カギやトラップはかかっていない。行動を消費することで開けることができる。", "" + "財宝ランク" + ([1, 3, 5, 7]['$[]'](difficulty)) + "の宝箱を発見する。難易度" + ([3, 6, 9, 12]['$[]'](difficulty)) + "のカギがかかっている。行動を消費して[感覚-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定でカギを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", "" + "財宝ランク" + ([1, 3, 5, 7]['$[]'](difficulty)) + "の宝箱を発見する。難易度" + ([3, 6, 9, 12]['$[]'](difficulty)) + "のトラップがかかっている。行動を消費して[感覚-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定でトラップを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", "" + "上から3本の蔓が垂れ下がっている。すごく引っ張りたくなる形状だ…行動を消費して引っ張ったキャラクターは1Dを振って以下のものを入手する。蔦を1つ引っ張ると他の蔦はスルスルっと上に消えていってしまう。有効:「非凡な直感」\n" + " ----------\n" + " 1~2:大当たり!財宝ランク" + ([3, 5, 7, 9]['$[]'](difficulty)) + "の財宝\n" + " 3~4:小当たり!おいしい果物(" + (["HPポーション", "高級HPポーション", "最高級HPポーション", "奇跡のポーション"]['$[]'](difficulty)) + "と同等)\n" + " 5~6:「ハズレ」と書かれた硬い木の実が直撃!「3D+" + ([10, 20, 30, 50]['$[]'](difficulty)) + "」点の「打撃属性ダメージを受ける」", "" + "ミミックの罠。ランダムなキャラクターに「3D+" + ([30, 50, 70, 100]['$[]'](difficulty)) + "」の「斬撃」属性ダメージを与える。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すればこの罠を見抜いて無効化でき、なおかつ" + ([1000, 2000, 5000, 10000]['$[]'](difficulty)) + "GPを入手可能。有効:【盗賊の心得】【ロックスミス】", "" + "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すればこの罠を見抜いて無効化することができ、なおかつ" + ([1000, 2000, 5000, 10000]['$[]'](difficulty)) + "GP入手可能。"]} - else if ((3)['$===']($case)) {table = ["この獣道を通れば近道になりそうだ!しかし狭くて動きにくい…クリア時の財宝ランクが+1されるが、ラウンド中の[移動]に-3のペナルティ。", "「ホウホウホーウ。そっちの道は危ないぞ…」鳥たちが古い言葉で道案内をしてくれる。[知力-6]判定に成功すれば、クリア時の財宝ランク+1。失敗すると次のイベントは必ず「森林」のエンカウントイベントになる。このイベントが4ラウンド目だった場合、道に迷ってクリア時の財宝ランク-1。有効:「自然と生きる」【賢人の知恵】", "時計をもった兎が忙しそうに走っている。追いかけていくと木の幹に落っこちて妙な場所についてしまった!4ラウンド目が終了するまで「迷宮オプション」を新たに1つ追加する。このイベントが4ラウンド目だった場合、近道になりクリア時の財宝ランク+1。", "" + "毒草の群生地だ!突っ切れば近道になりそうだが…気にせず直進すればシナリオ終了まで[HP]の最大値と現在値が" + ([10, 15, 20, 25]['$[]'](difficulty)) + "点減少するが、クリア時の財宝ランク+1。迂回すると悪い効果は受けないがクリア時の財宝ランク-1。", "" + "「花の香りのする方においで」と看板がある。[感覚-" + ([6, 9, 12, 15]['$[]'](difficulty)) + "]判定に失敗すると遠回りになりクリア時の財宝ランク-1。有利な特徴「犬の鼻」が" + (["あれば判定不要。", "あれば判定不要。", "二段階あれば判定不要。一段階はボーナスのみ。", "二段階あれば判定不要。一段階はボーナスのみ。"]['$[]'](difficulty)), "" + "おや、進行方向から動物たちが逃げてくるぞ?…大変だ、森林火災だ!引き返して火災から逃げるとクリア時の財宝ランク-2。構わず突っ切るなら4ラウンド目が終了するまで、ターン開始時に「3D+" + ([10, 15, 20, 30]['$[]'](difficulty)) + "」点の「火炎」属性ダメージを受ける。"]} - else if ((4)['$===']($case)) {table = ["森の盗賊団がこちらの懐を狙ってきた!エネミーとエンカウント。このエネミーからダメージをうけるたびに所持品のうち価格の安いものを奪われてしまう。4ラウンド目までに倒せばうばいかえすことができる。", "動物刈りを楽しんでいた魔族と偶然遭遇してしまう。エネミーとエンカウント。「分類:魔物」「分類:魔獣」のエネミーが登場していた場合、魔族たちにに狩られると思い逃亡する。", "" + "魔族の偵察隊と遭遇する。報告される前に倒さなくては!指定のエネミーを1ラウンド以内に倒せなかった場合、次のエンカウントが発生した際、新たに登場するエネミーは準備万端で待ち構えているため[先制]に+10、あらゆる致傷力に+" + ([10, 20, 30, 40]['$[]'](difficulty)) + "のボーナス。", "" + "森を支配する木の魔族の王に遭遇してしまった!エネミーとエンカウント。" + (["エネミーは[HP]に+100のボーナス。", "エネミーは[HP]に+150のボーナス。", "エネミーは[HP]に+200のボーナス。", ""]['$[]'](difficulty)) + "4ラウンド終了までに討伐に成功すると財宝ランク" + ([3, 5, 7, 9]['$[]'](difficulty)) + "のアイテムを入手できる。", "フラウとその尖兵が道案内をしてくれる…と思ったらカラーコンタクトをつけてフラウのふりをした魔族とその尖兵だった!エネミーとエンカウント。尖兵は「PC配置ヘクス」に配置すること。PCはラウンド終了まで[回避]に-6のペナルティ。有利な特異点「背中の目」があれば[回避]へのペナルティは受けない。", "迷彩服をキて軍事訓練中の第3師団精鋭コンバット部隊だ!エネミーとエンカウント。エネミーは[先制]に+4のボーナス。"]} - else if ((5)['$===']($case)) {table = ["良い香りが周囲に満ちていく。戦闘中だった場合、闘争心を失わせるキノコの香りで敵味方ともに剣を収め強制的に戦闘終了となる。戦闘中ではなかった場合は[知力-6]判定に失敗すると香りをまともにかいで闘争心を失ってしまい、シナリオ終了まであらゆる致傷力に-5のペナルティ。有効:「犬の鼻」「自然と生きる」【賢人の知恵】", "" + "突然上から木の蔓が誰かを吊り上げて首を絞めようとする!ランダムなPC1人は[感覚-" + ([3, 4, 5, 7]['$[]'](difficulty)) + "]判定を行い、失敗すると「3D+" + ([30, 50, 70, 100]['$[]'](difficulty)) + "」点の防護点無視ダメージを受け、そのラウンド中は行動も[回避]も行えない。有利な特異点「自然と生きる」をもつPCが対象になった場合は何も起きない。有効:【野伏の歩み】", "" + "巧妙なベアトラップが仕掛けてある。ランダムなキャラクター1人(エネミーも含む)に「3D+" + ([10, 20, 30, 50]['$[]'](difficulty)) + "」点の「斬撃」属性ダメージを与え、[移動][回避]を0にする。このトラップにかかったキャラクターか隣接したキャラクターが行動を消費して[感覚-" + ([6, 8, 10, 12]['$[]'](difficulty)) + "]判定に成功すれば解除可能。有効:【盗賊の心得】【ロックスミス】", "突然前も見えないほどのスコールに見舞われる!敵味方全員の攻撃や【特技】の射程が全て1になってしまう。森林「3-6」の山火事が起きていた場合、鎮火する。", "ランダムなPC1人が巨大な食虫植物に喰われてしまう!幸いすぐに助け出すことができたのだが、鎧も服もボロボロにされてしまう(イヤーン)喰われたPCが装備していた鎧はシナリオ終了まで使用不可能になる。", "すさまじい悪臭を放つ巨大な花だ!あまりの悪臭にPCの装備していた「ペット」じゃ全て気絶してシナリオ終了まで使用不可能になる。なぜかギア製のペットももれなく気絶する。有利な得意点「犬の鼻」をもつPCがいれば近寄る前に回避可能。"]} - else if ((6)['$===']($case)) {table = ["" + "魔族の狩りで傷ついた狼を発見する。ラウンド終了までに[HP]を1点でも回復してやればふらふらと歩きだし、木の根元でここを掘れというように吠える。埋まっていたものは1Dを振って決定する。\n" + "----------\n" + "1:犬の糞(ゴミ)\n" + "2:10GP\n" + "3:財宝ランク" + ([0, 2, 4, 6]['$[]'](difficulty)) + "のアイテム\n" + "4:財宝ランク" + ([1, 3, 5, 7]['$[]'](difficulty)) + "のアイテム\n" + "5:財宝ランク" + ([2, 4, 6, 8]['$[]'](difficulty)) + "のアイテム\n" + "6:うぃっしゅすたー(大事なもの)", "" + "少し開けた原っぱでフラウのダンスパーティーに誘われる。このイベントが発生するとエネミーは消滅する。行動を消費して[敏捷-" + ([6, 8, 10, 12]['$[]'](difficulty)) + "]判定に成功してダンスを踊ると原っぱの中心からすくすくと大きなキノコが育ち、キノコの馬車でダンジョンのゴール付近まで一気にすっとばしてくれる。第4ラウンドが終了したものと扱い、クリア時の財宝ランク+2。", "" + "フラウたちが「森ガールファッションコンテスト」を開催しており、その助っ人を依頼される。このイベントが発生するとエネミーは消滅する。[意思-" + ([6, 8, 10, 12]['$[]'](difficulty)) + "]判定に成功すれば的確なアドバイスで助っ人を依頼したフラウを優勝に導くことができ、その謝礼として" + (["狩人の羽根帽子(装飾品)", "緊急召喚の宝珠(装飾品)", "毒の香水瓶(装飾品)", "女王の花冠(装飾品)"]['$[]'](difficulty)), "霊樹の花にたまった水が神秘的な魔力を帯びている。[知力-6]判定に成功するとそれにポーションとしての効果があることがわかり、奇跡のポーション(消耗品)を入手する。【ポーションナレッジ】を習得したPCがいれば判定不要。有効:【賢人の知恵】", "" + "迷子のフラウを見つける。4ラウンド目が終了するまでに他のフラウに出会うイベントが発生した場合、偶然にもそのフラウと知り合いで、お礼に財宝ランク" + ([3, 5, 7, 9]['$[]'](difficulty)) + "のアイテムを渡してくれる。フラウに出会えずシナリオをクリアした場合も、迷宮からひとまず出ることができたお礼に財宝ランク" + ([1, 3, 5, 7]['$[]'](difficulty)) + "のアイテムを渡してくれる。", "" + "ランダムに選んだPC1人が、うっかり泉に武器を落としてしまう。すると泉から女神が出現して、落とした武器と同じ種類の超高級品の武器(魔将ドロップ品など)を落としたかどうかを聞いてくる。[意思" + (["", "-2", "-4", "-6"]['$[]'](difficulty)) + "]判定に成功すれば正直に答え、武器に" + ([5000, 10000, 30000, 50000]['$[]'](difficulty)) + "GPまでの任意のアタッチメントを追加してくれる。失敗すると嘘をついて女神を怒らせてしまい、装備していた武器を失ってしまう。"]} - else {return nil};} - else if ((6)['$===']($case)) { - areaText = "墓場"; - $case = type; - if ((1)['$===']($case)) {table = ["回復の泉。PC全員の[HP][FP]が完全に回復する。「☆死亡」以外のあらゆるBSも回復する。", "" + "「彼らは生前の思いが強すぎ成仏できません。語りかけて鎮めてやるとよいでしょう…」アズマ風の墓石が佇んでいる。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定か[意思-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功するとアズマ式お祈りや語りかけにより霊に感謝され、[HP][FP][Ft]が全回復する。失敗すると霊を怒らせて呪われ、全員の[Ft]が1点減少する。有効:【賢人の知恵】(知力)【詩人の交渉術】(意思)", "" + "墓守の休憩所を見つける。心の落ち着くお線香の香りがする…[HP][FP]" + ([10, 15, 20, 25]['$[]'](difficulty)) + "点とBSを回復する。更にシナリオ終了まで[抵抗]に+2のボーナス。", "「人間か。キミたちはここの亡者のようにならないようにね…」ヒガンバナの世話をするフラウと出会い、「ヒガンバナの毒」を武器に塗ってもらうことができる。物理攻撃の致傷力に+5のボーナス。", "シルヴァテイルのネクロマンサー達が集まって、何やら怪しい儀式をしている。道中で「☆死亡」した、もしくは保険を適用して強制送還されたキャラクターがいれば、[HP][FP]とBSが全回復した状態で復活させてもらうことができる。それ以外の場合は不気味な儀式に不安を感じ、FPを1点消費する。", "回復の泉があるのだが…?PCのうち1人でも[HP][FP]のいずれかが減少している場合このイベントは拒否できない。PC全員の[HP][FP]が完全に回復する。「☆死亡」以外のあらゆるBSも回復する。黄泉の国の水を飲んだことでシナリオ終了まで「分類:アンデッド」となり、【死者に鞭】【アマテラスの光】などの、一部の【特技】の効果を受ける。"]} - else if ((2)['$===']($case)) {table = ["" + "財宝ランク" + ([0, 2, 4, 6]['$[]'](difficulty)) + "の宝箱を発見する。カギやトラップはかかっていない。行動を消費することで開けることができる。", "" + "財宝ランク" + ([1, 3, 5, 7]['$[]'](difficulty)) + "の宝箱を発見する。難易度" + ([3, 6, 9, 12]['$[]'](difficulty)) + "のカギがかかっている。行動を消費して[感覚-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定でカギを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", "" + "財宝ランク" + ([1, 3, 5, 7]['$[]'](difficulty)) + "の宝箱を発見する。難易度" + ([3, 6, 9, 12]['$[]'](difficulty)) + "のトラップがかかっている。行動を消費して[感覚-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定でトラップを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", "" + "骸が何かを大事そうに握りしめている(抱きかかえている)。行動を消費して[体力-" + ([2, 4, 6, 10]['$[]'](difficulty)) + "]判定に成功すれば、財宝ランク" + ([2, 4, 6, 8]['$[]'](difficulty)) + "のアイテムを入手できるが、Ftが1点減少する。", "" + "ミミックの罠。ランダムなキャラクターに「3D+" + ([30, 50, 70, 100]['$[]'](difficulty)) + "」の「斬撃」属性ダメージを与える。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すればこの罠を見抜いて無効化でき、なおかつ" + ([1000, 2000, 5000, 10000]['$[]'](difficulty)) + "GPを入手可能。有効:【盗賊の心得】【ロックスミス】", "" + "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。[知力-" + ([3, 6, 9, 12]['$[]'](difficulty)) + "]判定に成功すればこの罠を見抜いて無効化することができ、なおかつ" + ([1000, 2000, 5000, 10000]['$[]'](difficulty)) + "GP入手可能。"]} - else if ((3)['$===']($case)) {table = ["ちょっとなにか出そうな、柳の木でできたトンネルを発見する。PC全員が[意思]判定を行い、全員成功した場合はクリア時の財宝ランク+1。最も成功度の低かった(失敗度の大きかった)PCは揺れる柳を幽霊と思い込み、4ラウンド終了まであらゆる判定に-2のペナルティ。", "石畳の道を歩いている途中で朽ちた祠を発見する。何かお供え物をしたほうが良いだろうか?アイテム欄の消耗品1つをお供えすると祠が動いて地下通路が出現する!この通路を通ることで近道できて、クリア時の財宝ランク+1。", "" + "道が途切れ、草が伸び放題の荒れ地に出る。方向もわからず、進むには骨が折れそうだ…[体力-" + ([2, 4, 6, 8]['$[]'](difficulty)) + "]判定を行い、成功すればクリア時の財宝ランク+1。失敗するとクリア時の財宝ランク-1。", "どこまでも卒塔婆とススキしかない…同じ景色が続き、進んでいるか怪しくなる。1Dを振って1~3が出れば何もないが、4~6が出るとクリア時の財宝ランク-1。有利な特異点「天体時計」があればペナルティは受けない。", "" + "地面から突如骨の手が伸びて足を掴んでくる!PC全員が[移動" + (["+4", "+2", "", "-2"]['$[]'](difficulty)) + "]判定を行い、クリア時の財宝ランクが「失敗した人数」分減少する。【死者に鞭】を持つPCがいれば骨は威圧されて引っ込み、この効果は無視できる。", "先へ進む道には纏わりつくような死者の呪いが満ちている。直進するとシナリオ終了まであらゆる判定に-2のペナルティ。遠回りをすると悪影響は受けないがクリア時の財宝ランク-2。【死者に鞭】か【鎮魂の盾】を持つPCがいれば呪いをはねつけ、直進してもペナルティを受けない。"]} - else if ((4)['$===']($case)) {table = ["墓場に浮かんでいた人魂が突如魔物になって襲いかかってきた!エネミーとエンカウント。", "" + "朽ちていた骨が突如起き上がり襲いかかってきた!エネミーとエンカウント。このエネミーは業物の武器を持っており、物理攻撃の致傷力に+" + ([5, 10, 15, 20]['$[]'](difficulty)) + "のボーナス。", "不吉な歌を口ずさみ、ステップを踏みながらかわいらしい少女が近づいてくる。エネミーとエンカウント。", "" + "遠くから不吉な進軍の音を聞く。PC全員が[感覚-" + ([2, 4, 6, 8]['$[]'](difficulty)) + "]判定を行い、誰か1人でも成功すれば、第二魔将グレヴディガーの軍勢が迫っているのを知る。全員判定に失敗してしまうとPCは第二魔将グレイヴディガーとその配下である無数の亡霊騎士団と相対することになる。" + (["「保険」に入っていなければPCたちは死亡して、グレイヴディガーの配下にさせられてしまう。君たちの冒険はここで終了だ。", "「保険」に入っていなければPCたちは死亡して、グレイヴディガーの配下にさせられてしまう。君たちの冒険はここで終了だ。", "「保険」に入っていなければPCたちは死亡して、グレイヴディガーの配下にさせられてしまう。君たちの冒険はここで終了だ。", "エネミーとエンカウント。"]['$[]'](difficulty)) + "有効:「狐の耳」「虫の知らせ」", "「我らの眠りを妨げるものは誰だ…!」貴族の棺とそれを守る人形だ。墓荒らしには容赦なく襲い掛かる!エネミーとエンカウント。棺の中には貴金属が入っており、一部エネミーの通常ドロップの金額が増加する。", "壁に埋まった10mはあろうかという巨大な蛇の骨が動き出し襲い掛かってくる!エネミーとエンカウント。"]} - else if ((5)['$===']($case)) {table = ["PC全員に墓から突然幻影が襲いかかる。幻影なので実害はないのだが、本当の攻撃と思って「パリイ」か「シールド」を1回消費してしまう。どちらも行えない場合、腰を抜かしてBS「☆転倒」を受ける。【トゥルービジョン】などがかかっているPCには無効。", "" + "「ひひっ、かかったなボケが!」理不尽にもギロチンが突如ランダムなPC1人に落ちてくる!「ドッジ-" + ([4, 6, 8, 10]['$[]'](difficulty)) + "」判定を行い、失敗すると「3D+" + ([40, 60, 80, 120]['$[]'](difficulty)) + "」点の「斬撃」属性ダメージを受ける。", "" + "「すいっちおーん。私達の仲間にしてやるよ!」用途不明の建物に迷い込んでしまったが…なんてこった、ここは火葬場だ!早く脱出しないと灰になるまで焼かれてしまうぞ!PC全員が「3D+" + ([30, 40, 50, 70]['$[]'](difficulty)) + "」点の「火炎」属性ダメージを受ける。[移動]が" + ([8, 9, 10, 12]['$[]'](difficulty)) + "以上のPCは何とか逃げ出しダメージを受けず、さらに自分より[体力]の低いキャラクター1人を連れて脱出可能。有効:【盗賊の心得】【ロックスミス】", "" + "墓石が動き出し中から何かが出てこようとしている![体力-" + ([4, 6, 8, 10]['$[]'](difficulty)) + "]判定に成功すればなにも起こらないが、失敗すると探索中に倒されたエネミーの中で最もCLが高いエネミーが再度出現する。該当モンスターが存在しなかった場合は、昼寝をしていたフラウが出てくるだけ。", "" + "金の亡者のゾンビが群がってくる。金を渡してやるまで満足しそうにない…" + ([1000, 2000, 4000, 8000]['$[]'](difficulty)) + "GPを支払うと満足して去っていくが、支払いを拒否した場合(もしくはお金が足りなかった場合)はPC全員が「3D+" + ([10, 20, 30, 50]['$[]'](difficulty)) + "」の「打撃」属性ダメージを受ける。【死者に鞭】を持つPCがいればひと睨みでそそくさと去っていく。", "「おやおや。死者に気に入られましたか…困りましたねえホッホッ」ランダムなPC1人の武器が死者の怨念を吸い取り魔剣となる!魔剣は攻撃力に+5のボーナスを得るが、装備していると[HP]の最大値が10点減少する。魔剣となった武器は売却不可能で、不要な場合は捨てるしかない。すでに魔剣となっている武器と、【特技】によって入手した武器は魔剣にならない。"]} - else if ((6)['$===']($case)) {table = ["" + "雷が突然鳴り響く。敵味方全員が3Dを振り、出目が一番高いキャラクターは「3D+" + ([30, 50, 70, 100]['$[]'](difficulty)) + "」点の「電撃」属性ダメージを受ける。", "" + "「いいところに来たナ。どうだ、お前らも飲んでいくカ?」タルの上に腰かけ、減ることのない酒を口に運び続けるスケルトンがいる。このイベントが発生するとエネミーは消滅する。酒を飲む場合、行動を消費して[意思" + (["", "-1", "-2", "-4"]['$[]'](difficulty)) + "]判定を4回連続で行う。全て成功すると、「ついに酒が切れたカ、最後の晩酌に付き合ってもらって感謝するゼ」と感謝を述べて消滅し、あとには財宝ランク3のアイテムが残る。途中で1度でも失敗した場合、酒に悪酔いしてシナリオ終了まであらゆる判定に-2のペナルティ。", "" + "怪しい輝きを放つ宝石を発見する。手にとったPCは呪われてシナリオ終了まであらゆる判定に-2のペナルティ。手に取らない場合は全員に[意思" + (["", "-1", "-2", "-3"]['$[]'](difficulty)) + "]判定が必要で、不利な特異点「金の亡者」「好奇心は猫を殺す」があるとこの[意思]判定に-4のペナルティ。無事持ち帰った場合呪いは解け、" + ([2000, 6000, 20000, 60000]['$[]'](difficulty)) + "GPで売却できる。", "" + "朽ちたギアの墓場だ。まだ使えるギアがあるかもしれない。【魔導工学のススメ】があれば、SLvに応じたアイテムが1つ入手可能。\n" + " ----------\n" + " SLv1:カラクリバランサー(装飾品)\n" + " SLv2:カラクリお茶キット(装飾品)\n" + " SLv3:ゴーレムアーム(装飾品)\n" + " " + (["", "SLv4:ホイールブースター(装飾品)", "SLv4:ホイールブースター(装飾品)", "SLv4:ホイールブースター(装飾品)"]['$[]'](difficulty)) + "\n" + " " + (["", "", "SLv5:ナグルファル装甲(装飾品)", "SLv5:ナグルファル装甲(装飾品)"]['$[]'](difficulty)) + "\n" + " " + (["", "", "", "SLv6:死者の止まらない歯車(装飾品)"]['$[]'](difficulty)), "" + "「ほーらよっといでーよっといでー、地獄の沙汰も金次第…」うすら寒い気配の漂う川辺に出る。川辺には渡し守らしき、ローブをかぶった2人の少女がいる。1人あたり" + ([200, 500, 1000, 2000]['$[]'](difficulty)) + "GPを支払えばクリア時の財宝ランク+1。支払いを拒否したかお金が足りない場合、エネミーとエンカウント。", "" + "『千ノ戦イデ千ノ勝チヲ知ル者、ココニ眠ル』と刻まれた棺を見つける。棺を開けた場合はエネミーとエンカウント。勝利すると" + (["キメラパーツ(装飾品)", "キメラパーツ(装飾品)", "グレートキメラパーツ(装飾品)", "ウェポンマスターの証(装飾品)"]['$[]'](difficulty)) + "を入手できる。不利な特異点「好奇心は猫を殺す」「脳みそ筋肉」を持つキャラクターは[意思]判定を行い、失敗すると棺を開けてしまう。"]} - else {return nil};} - else {return nil}; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (event = ($a[1] == null ? nil : $a[1])), $b; - number = "" + (area) + (type) + (event); - return "" + (tableName) + "(" + (number) + "):" + (areaText) + "<" + (difficultyText) + ">:" + (result); - }, $FilledWith_getRandomEventResult$47.$$arity = 1); - return (Opal.def(self, '$getRandomEnemyDataResult', $FilledWith_getRandomEnemyDataResult$48 = function $$getRandomEnemyDataResult(command) { - var self = this, dif = nil, area = nil, event = nil, number = nil, tableName = nil, $case = nil, difficultyText = nil, difficulty = nil, areaText = nil, table = nil, result = nil; - - - if ($truthy(/RED(E|N|H|L)(256|265|465|665|666)/['$==='](command))) { - - dif = $$($nesting, 'Regexp').$last_match(1); - area = 0; - event = $$($nesting, 'Regexp').$last_match(2).$to_i(); - number = event; - } else if ($truthy(/RED(E|N|H|L)([1-6])4([1-6])/['$==='](command))) { - - dif = $$($nesting, 'Regexp').$last_match(1); - area = $$($nesting, 'Regexp').$last_match(2).$to_i(); - event = $$($nesting, 'Regexp').$last_match(3).$to_i(); - number = "" + (area) + "4" + (event); - } else { - return nil - }; - tableName = "エネミーデータ表"; - $case = dif; - if ("E"['$===']($case)) { - difficultyText = "初級"; - difficulty = 0;} - else if ("N"['$===']($case)) { - difficultyText = "中級"; - difficulty = 1;} - else if ("H"['$===']($case)) { - difficultyText = "上級"; - difficulty = 2;} - else if ("L"['$===']($case)) { - difficultyText = "悪夢"; - difficulty = 3;} - else {return nil}; - $case = area; - if ((1)['$===']($case)) { - areaText = "洞窟"; - table = [[1, ["キャンディークラウン(CL40)1匹", "キャンディクラウン(CL40)「1D-3」匹(最低1匹)", "キャンディークラウン「1D-2」匹(最低1匹)出目が6だった場合ゴールデンクラウン(CL177)1匹", "ゴールデンクラウン(CL177)とエンカウント"]], [2, ["ベルセルク(CL7)3匹", "ベルセルク(CL7)3匹([命中]+4、[HP]+30、[FP]+10、あらゆる致傷力+20)", "ベルセルク(CL7)3匹([命中]+8、[HP]+60、[FP]+20、あらゆる致傷力+40)", "ベルセルク(CL7)3匹([命中]+16、[HP]+120、[FP]+40、あらゆる致傷力+80)"]], [3, ["ガーゴイル(CL10)2匹", "ガーゴイル(CL10)2匹([命中]+4、[HP]+20、[FP]+10、あらゆる致傷力と防護点+20)", "ガーゴイル(CL10)2匹([命中]+8、[HP]+40、[FP]+20、あらゆる致傷力と防護点+40)", "ザッハーク(CL39)3匹"]], [4, ["デビルホイール(CL18)1匹", "デビルホイール(CL18)1匹、あらゆる致傷力+20", "デビルホイール(CL18)1匹、あらゆる致傷力+40", "ムスペルヘイムの獣(CL65)、あらゆる防護点+20"]], [5, ["ヘルハウンド(CL12)1匹、インプ(CL3)2匹", "フェニックス(CL25)2匹", "火龍ヘルブレイザー(CL50)1匹、ケルベロス(CL33)1匹", "煉獄龍バーガトリ(CL100)1匹"]], [6, ["アイスメイデン(CL10)1匹、アイスリザード(CL7)2匹", "クリスタルビースト(CL25)2匹", "氷河龍グレイシャル(CL65)1匹", "冥界龍コキュートス(CL110)1匹"]]];} - else if ((2)['$===']($case)) { - areaText = "遺跡"; - table = [[1, ["1Dをふって無限の迷宮の地形から1つ選択する。その地形で該当する難易度[初級]に名前の書かれたエネミーが全て1体ずつ出現する。特別な強化が施されている場合それも適用する。", "1Dをふって無限の迷宮の地形から1つ選択する。その地形で該当する難易度[中級]に名前の書かれたエネミーが全て1体ずつ出現する。特別な強化が施されている場合それも適用する。", "1Dをふって無限の迷宮の地形から1つ選択する。その地形で該当する難易度[上級]に名前の書かれたエネミーが全て1体ずつ出現する。特別な強化が施されている場合それも適用する。", "1Dをふって無限の迷宮の地形から1つ選択する。その地形で該当する難易度[悪夢]に名前の書かれたエネミーが全て1体ずつ出現する。特別な強化が施されている場合それも適用する。"]], [2, ["アルテミス(CL8)3匹", "アルテミス(CL8)3匹([命中]+4、[HP]+30、[FP]+20、あらゆる致傷力+20)", "アルテミス(CL8)3匹([命中]+8、[HP]+60、[FP]+30、あらゆる致傷力+40)", "アルテミス(CL8)3匹([命中]+16、[HP]+120、[FP]+40、あらゆる致傷力+80)"]], [3, ["スターゲイザー(CL10)2匹", "コスモロジスト(CL20)2匹", "コスモロジスト(CL20)4匹", "デスサジタリー(CL45)2匹"]], [4, ["ヤシャ(CL10)1匹、スケルトン(CL3)3匹", "ヤシャ(CL10)3匹([命中]+4、[HP]+30、[FP]+10、あらゆる致傷力+15)", "アシュラ(CL48)2匹", "コンゴウ(CL60)2匹"]], [5, ["ヘルハウンド(CL12)2匹", "クリスタルビースト(CL25)2匹", "火龍ヘルブレイザー(CL50)1匹、氷河龍グレイシャル(CL65)", "『単眼の巨神』アイングロース(CL100/ネームド)"]], [6, ["ゴーレム(CL13)1匹", "ミスリルゴーレム(CL27)1匹", "アダマンゴーレム(CL45)1匹", "カラクリヒメショーグン(CL75)1匹"]]];} - else if ((3)['$===']($case)) { - areaText = "山岳"; - table = [[1, ["アイアンプリチン(CL5)5匹", "アイアンプリチン(CL5)5匹([命中]+4、[HP]+30、[FP]+10)", "アイアンプリチン(CL5)5匹([命中]+8、[HP]+60、[FP]+20)", "アイアンプリチン(CL5)5匹([命中]+16、[HP]+120、[FP]+40)"]], [2, ["ウイングスレイブ(CL4)5匹", "ウイングスレイブ(CL4)5匹([命中]+4、[HP]+30、[FP]+10、あらゆる致傷力+20)", "ガルーダ(CL40)2匹", "栄光の天使(CL60)2匹"]], [3, ["ブラックナイト(CL10)1匹、ソルジャー(CL4)3匹", "デュラハン(CL22)1匹、ブラックナイト(CL10)2匹", "サーバントマスター(CL35)1匹、デュラハン(CL22)2匹", "ジェネラル(CL55)1匹、サーバントマスター(CL35)2匹"]], [4, ["ソルジャーアント(CL8)2匹", "ソルジャーアント(CL8)2匹([命中]+4、[HP]+30、[FP]+10、あらゆる致傷力+20)", "インペリアルアント(CL30)2匹", "『女王キノコ』アカシックツリー(CL50/ネームド)1匹、インペリアルアント(CL30)2匹"]], [5, ["カボチャの魔女(CL8)2匹", "カボチャの魔女(CL8)2匹([命中]+4、[HP]+30、[FP]+10、あらゆる致傷力+20)", "カボチャの大魔女(CL35)2匹", "堕落の黒天使(CL60)2匹"]], [6, ["フェニックス(CL25)2匹", "フェニックス(CL25)2匹([命中]+4、[HP]+40、[FP]+10、あらゆる致傷力+30)", "フェニックス(CL25)2匹([命中]+8、[HP]+80、[FP]+20、あらゆる致傷力+60)", "煉獄フェニックス(CL85)2匹"]]];} - else if ((4)['$===']($case)) { - areaText = "水辺"; - table = [[1, ["フロストクラブ(CL6)2匹", "フロストクラブ(CL6)3匹", "『氷海の主』ギガントキャンサー(CL20/ネームド)", "『氷海の主』ギガントキャンサー(CL20/ネームド)、フロストクラブ(CL6)3匹"]], [2, ["アシガル(CL4)3匹", "ハタモト(CL10)3匹", "ヒトキリ(CL33)2匹", "スカーレス(CL38)3匹"]], [3, ["アンブッシュマン(CL5)3匹", "アンブッシュマン(CL5)3匹([命中]+4、[HP]+20、[FP]+10、あらゆる致傷力+10)", "シャドウストーカー(CL35)2匹", "シャドウストーカー(CL35)3匹"]], [4, ["アップルドール(CL12)2匹", "アップルドール(CL12)2匹、ポイズンリリー(CL7)2匹", "テラードール(CL30)2匹", "テラードール(CL30)2匹、バリアリーフ(CL27)2匹"]], [5, ["ナイトライダー(CL15)1匹", "ナイトライダー(CL15)2匹", "ジェネラル(CL55)1匹", "ジェネラル(CL55)2匹"]], [6, ["ジェルスケルトン(CL10)1匹", "ジェルスケルトン(CL10)1匹([命中]+4、[FP]+10、あらゆる致傷力+20)", "ジェルスケルトン(CL10)1匹([命中]+8、[FP]+20、あらゆる致傷力+40)", "ジェルスケルトン(CL10)1匹([命中]+12、[FP]+40、あらゆる致傷力+80)"]]];} - else if ((5)['$===']($case)) { - areaText = "森林"; - table = [[1, ["スナッチャー(CL4)3匹", "ゴールデンビースト(CL10)3匹", "ヨウコ(CL30)2匹", "イビルオーメン(CL42)2匹"]], [2, ["スターゲイザー(CL10)1匹、オーク(CL3)3匹", "スターゲイザー(CL10)1匹、ヘルハウンド(CL12)2匹", "コスモロジスト(CL20)1匹、ケルベロス(CL33)1匹", "サーバントマスター(CL35)1匹、ケルベロス(CL33)2匹"]], [3, ["オウルセージ(CL5)1匹、インプ(CL3)3匹。指定エネミー:オウルセージ", "オウルセージ(CL5)3匹。指定エネミー:オウルセージ", "オウルコマンダー(CL18)1匹、キメラ(CL15)2匹。指定エネミー:オウルコマンダー", "オウルコマンダー(CL18)2匹、キメラグレート(CL60)1匹。指定エネミー:オウルコマンダー"]], [4, ["グリーンアクトレス(CL22)1匹", "魔将樹の騎士(CL40)1匹", "魔将樹の番人(CL80)1匹", "『魔将樹の剣姫』ロジエモール(CL120/ネームド)1匹"]], [5, ["ポイズンリリー(CL7)1匹、リリーの尖兵(CL5)1匹", "ポイズンリリー(CL7)1匹、リリーの尖兵(CL5)1匹([命中]+4、[HP]+30、[FP]+10、あらゆる致傷力+20)", "バリアリーフ(CL27)1匹、リリーの尖兵(CL5)1匹([命中]+8、[HP]+60、[FP]+20、あらゆる致傷力+40)", "『密林の女王』クイーンリリー(CL70/ネームド)1匹、リリーの尖兵(CL5)1匹([命中]+16、[HP]+120、[FP]+40、あらゆる致傷力+80)"]], [6, ["ブラックナイト(CL10)1匹、ソルジャー(CL4)3匹", "ヴァルキリー(CL20)1匹、ブラックナイト(CL10)2匹", "フレイヤ(CL45)1匹、ヴァルキリー(CL20)2匹", "ジェネラル(CL55)1匹、フレイヤ(CL45)2匹"]]];} - else if ((6)['$===']($case)) { - areaText = "墓場"; - table = [[1, ["ヤコ(CL6)3匹(【狐の送り火】のデータを「疲労:なし」に変更)", "ヨウコ(CL30)1匹(【狐の送り火】のデータを「疲労:なし」に変更)", "ヨウコ(CL30)3匹(【狐の送り火】のデータを「疲労:なし」に変更)", "タタリドラゴン(CL60/ネームド)1匹(【狐の送り火】のデータを「疲労:なし」に変更)"]], [2, ["スケルトン(CL3)4匹", "ナイトスケルトン(CL12)3匹", "ヒトキリ(CL33)2匹(「分類:アンデッド」を追加)", "堕ちた黒龍(CL48)2匹"]], [3, ["ポイズンリリー(CL7)1匹(【華劇:リリーオブザバレー】使用済み)、ファントム(CL5)2匹", "ポイズンリリー(CL7)1匹(【華劇:リリーオブザバレー】使用済み)、ゴースト(CL10)3匹", "グリーンアクトレス(CL22)1匹(【華劇:フォレストステップ】使用済み)、デュラハン(CL22)2匹", "グリーンアクトレス(CL22)1匹(【華劇:フォレストステップ】使用済み)、カラクリヒメショーグン(CL75)1匹"]], [4, ["君たちの冒険はここで終了だ。", "君たちの冒険はここで終了だ。", "君たちの冒険はここで終了だ。", "第二魔将『葬送者』グレイヴディガー(CL200/魔将)1匹、『ディガー様親衛隊長』フネライユ(CL66/ネームド)1匹、『トラップマスター』アンテルモン(CL65/ネームド)1匹"]], [5, ["ゴースト(CL10)1匹(通常ドロップ「1000GP」)、ソルジャー(CL4)2匹", "ゴースト(CL10)1匹(通常ドロップ「2000GP」)、ハタモト(CL10)3匹", "リッチ(CL44)1匹(通常ドロップ「4000GP」)、ミスリルゴーレム(CL27)1匹", "エルダーリッチ(CL55)1匹(通常ドロップ「8000GP」)、アダマンゴーレム(CL45)1匹"]], [6, ["ボーンスネーク(CL20)1匹", "ボーンスネーク(CL20)2匹", "ラダマンティスの蛇(CL50)1匹", "ラダマンティスの蛇(CL50)1匹(ネームド仕様[HP4倍、【ネームドエネミー】習得])"]]];} - else if ((0)['$===']($case)) { - table = [[256, ["ボーンスネーク(CL50)1匹", "ラダマンティスの蛇(CL50)1匹", "銀河龍ラクテア/ドラゴン形態(CL90)1匹", "『三つ首の災厄』トライディザスター(CL100/ネームド)1匹"]], [265, ["キャンディークラウン(CL40)「1D」匹", "キャンディークラウン(CL40)「1D+1」匹", "キャンディークラウン(CL40)「1D」匹、ゴールデンクラウン(CL177)1匹", "キャンディークラウン(CL40)「1D」匹、ゴールデンクラウン(CL177)2匹"]], [465, ["リビングデッド(CL5)3匹", "ゴースト(CL10)3匹", "デュラハン(CL22)3匹", "リッチ(CL44)3匹"]], [665, ["カロン(CL12)2匹", "カロンキャプテン(CL25)2匹", "リッチ(CL44)2匹", "エルダーリッチ(CL55)2匹([HP]+10)"]], [666, ["『漆黒の戦鬼』ブラックナイト(CL10/ネームド)1匹", "『漆黒の戦鬼』ブラックナイト(CL10/ネームド)1匹([命中]+4、あらゆる致傷力+20、[HP]+200)", "『白銀の猛将』ジェネラル(CL55/ネームド)1匹", "『白銀の猛将』ジェネラル(CL55/ネームド)1匹([命中]+4、あらゆる致傷力+20、[HP]+500)"]]]; - $case = $rb_divide(event, 100).$floor(); - if ((1)['$===']($case)) {areaText = "洞窟"} - else if ((2)['$===']($case)) {areaText = "遺跡"} - else if ((3)['$===']($case)) {areaText = "山岳"} - else if ((4)['$===']($case)) {areaText = "水辺"} - else if ((5)['$===']($case)) {areaText = "森林"} - else if ((6)['$===']($case)) {areaText = "墓場"} - else {return nil};} - else {return nil}; - result = self.$get_table_by_number(event, table); - return "" + (tableName) + "(" + (number) + "):" + (areaText) + "<" + (difficultyText) + ">:" + (result['$[]'](difficulty)); - }, $FilledWith_getRandomEnemyDataResult$48.$$arity = 1), nil) && 'getRandomEnemyDataResult'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/FullMetalPanic.js b/src/assets/dicebot/FullMetalPanic.js deleted file mode 100644 index 6489eb6de..000000000 --- a/src/assets/dicebot/FullMetalPanic.js +++ /dev/null @@ -1,1170 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/DiceBot"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$freeze', '$attr_reader', '$map', '$to_proc', '$join', '$private', '$clearPrefixes', '$!', '$empty?', '$prefixs', '$prefixes', '$class', '$warn', '$id', '$setPrefixes', '$attr_accessor', '$name', '$sort_key', '$help_message', '$attr_writer', '$rand', '$roll', '$marshalSignOfInequality', '$unlimitedRollDiceType', '$getD66Value', '$parren_killer', '$debug', '$isGetOriginalMessage', '$getOriginalMessage', '$=~', '$prefixesPattern', '$last_match', '$removeDiceCommandMessage', '$rollDiceCommandCatched', '$nil?', '$!=', '$sub', '$rollDiceCommand', '$to_s', '$backtrace', '$size', '$===', '$check_1D100', '$check_1D20', '$check_2D6', '$check_nD10', '$check_nD6', '$check_nDx', '$is_a?', '$==', '$send', '$get_table_by_nD6', '$get_table_by_nDx', '$getTableValue', '$[]', '$-', '$/', '$getD66', '$bcdice', '$get_table_by_number', '$+', '$*', '$<', '$each', '$>=', '$kind_of?', '$lambda', '$call', '$select', '$public_methods', '$upcase', '$to_i', '$getTableInfoFromExtraTableText', '$get_table_by_nDx_extratable', '$get_table_by_d66', '$floor', '$%', '$get_table_by_d66_swap', '$raise', '$gsub', '$rollTableMessageDiceText', '$split', '$inspect']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceBot'); - - var $nesting = [self].concat($parent_nesting), $DiceBot_initialize$4, $DiceBot_postSet$5, $DiceBot_info$6, $DiceBot_id$7, $DiceBot_gameType$8, $DiceBot_name$9, $DiceBot_gameName$10, $DiceBot_sort_key$11, $DiceBot_help_message$12, $DiceBot_getHelpMessage$13, $DiceBot_prefixes$14, $DiceBot_setSendMode$15, $DiceBot_bcdice$eq$16, $DiceBot_bcdice$17, $DiceBot_rand$18, $DiceBot_roll$19, $DiceBot_marshalSignOfInequality$20, $DiceBot_unlimitedRollDiceType$21, $DiceBot_setSortType$22, $DiceBot_d66$23, $DiceBot_parren_killer$24, $DiceBot_changeText$25, $DiceBot_dice_command$26, $DiceBot_isGetOriginalMessage$27, $DiceBot_removeDiceCommandMessage$28, $DiceBot_rollDiceCommandCatched$29, $DiceBot_rollDiceCommand$30, $DiceBot_dice_command_xRn$31, $DiceBot_check_result$32, $DiceBot_check_nDx$33, $DiceBot_check_1D100$34, $DiceBot_check_1D20$35, $DiceBot_check_nD10$36, $DiceBot_check_2D6$37, $DiceBot_check_nD6$38, $DiceBot_get_table_by_2d6$39, $DiceBot_get_table_by_1d6$40, $DiceBot_get_table_by_nD6$41, $DiceBot_get_table_by_nDx$42, $DiceBot_get_table_by_1d3$43, $DiceBot_getD66$44, $DiceBot_get_table_by_d66_swap$45, $DiceBot_get_table_by_d66$46, $DiceBot_getDiceRolledAdditionalText$47, $DiceBot_getDiceRevision$48, $DiceBot_isD9$49, $DiceBot_getGrichText$50, $DiceBot_should_reroll$ques$51, $DiceBot_get_table_by_number$52, $DiceBot_getTableValue$54, $DiceBot_analyzeDiceCommandResultMethod$56, $DiceBot_get_table_by_nDx_extratable$59, $DiceBot_getTableCommandResult$60, $DiceBot_getTableInfoFromExtraTableText$61, $DiceBot_roll_tables$63; - - self.$$prototype.rerollLimitCount = self.$$prototype.d66Type = nil; - - Opal.const_set($nesting[0], 'EMPTY_PREFIXES_PATTERN', /(^|\s)(S)?()(\s|$)/i.$freeze()); - Opal.const_set($nesting[0], 'ID', "DiceBot"); - Opal.const_set($nesting[0], 'NAME', "DiceBot"); - Opal.const_set($nesting[0], 'SORT_KEY', "*たいすほつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', ""); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $setPrefixes$1, $clearPrefixes$2, $inherited$3; - - - self.$attr_reader("prefixes"); - self.$attr_reader("prefixesPattern"); - - Opal.def(self, '$setPrefixes', $setPrefixes$1 = function $$setPrefixes(prefixes) { - var self = this; - - - self.prefixes = $send(prefixes, 'map', [], "freeze".$to_proc()).$freeze(); - self.prefixesPattern = new RegExp("" + "(^|\\s)(S)?(" + (prefixes.$join("|")) + ")(\\s|$)", 'i').$freeze(); - return self; - }, $setPrefixes$1.$$arity = 1); - - Opal.def(self, '$clearPrefixes', $clearPrefixes$2 = function $$clearPrefixes() { - var self = this; - - - self.prefixes = [].$freeze(); - self.prefixesPattern = $$($nesting, 'EMPTY_PREFIXES_PATTERN'); - return self; - }, $clearPrefixes$2.$$arity = 0); - self.$private(); - return (Opal.def(self, '$inherited', $inherited$3 = function $$inherited(subclass) { - var self = this; - - return subclass.$clearPrefixes() - }, $inherited$3.$$arity = 1), nil) && 'inherited'; - })(Opal.get_singleton_class(self), $nesting); - self.$clearPrefixes(); - (Opal.class_variable_set($nesting[0], '@@bcdice', nil)); - Opal.const_set($nesting[0], 'DEFAULT_SEND_MODE', 2); - - Opal.def(self, '$initialize', $DiceBot_initialize$4 = function $$initialize() { - var $a, self = this; - - - self.sendMode = $$($nesting, 'DEFAULT_SEND_MODE'); - self.sortType = 0; - self.sameDiceRerollCount = 0; - self.sameDiceRerollType = 0; - self.d66Type = 1; - self.isPrintMaxDice = false; - self.upperRollThreshold = 0; - self.unlimitedRollDiceType = 0; - self.rerollNumber = 0; - self.defaultSuccessTarget = ""; - self.rerollLimitCount = 10000; - self.fractionType = "omit"; - if ($truthy(($truthy($a = self.$prefixs()['$empty?']()['$!']()) ? self.$class().$prefixes()['$empty?']() : $a))) { - - self.$warn("" + (self.$id()) + ": #prefixs is deprecated. Please use .setPrefixes."); - return self.$class().$setPrefixes(self.$prefixs()); - } else { - return nil - }; - }, $DiceBot_initialize$4.$$arity = 0); - self.$attr_accessor("rerollLimitCount"); - self.$attr_reader("sendMode", "sameDiceRerollCount", "sameDiceRerollType", "d66Type"); - self.$attr_reader("isPrintMaxDice", "upperRollThreshold"); - self.$attr_reader("defaultSuccessTarget", "rerollNumber", "fractionType"); - - Opal.def(self, '$postSet', $DiceBot_postSet$5 = function $$postSet() { - var self = this; - - return nil - }, $DiceBot_postSet$5.$$arity = 0); - - Opal.def(self, '$info', $DiceBot_info$6 = function $$info() { - var self = this; - - return $hash2(["gameType", "name", "sortKey", "prefixs", "info"], {"gameType": self.$id(), "name": self.$name(), "sortKey": self.$sort_key(), "prefixs": self.$class().$prefixes(), "info": self.$help_message()}) - }, $DiceBot_info$6.$$arity = 0); - - Opal.def(self, '$id', $DiceBot_id$7 = function $$id() { - var self = this; - - return $$$(self.$class(), 'ID') - }, $DiceBot_id$7.$$arity = 0); - - Opal.def(self, '$gameType', $DiceBot_gameType$8 = function $$gameType() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameType is deprecated. Please use #id."); - return self.$id(); - }, $DiceBot_gameType$8.$$arity = 0); - - Opal.def(self, '$name', $DiceBot_name$9 = function $$name() { - var self = this; - - return $$$(self.$class(), 'NAME') - }, $DiceBot_name$9.$$arity = 0); - - Opal.def(self, '$gameName', $DiceBot_gameName$10 = function $$gameName() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameName is deprecated. Please use #name."); - return self.$name(); - }, $DiceBot_gameName$10.$$arity = 0); - - Opal.def(self, '$sort_key', $DiceBot_sort_key$11 = function $$sort_key() { - var self = this; - - return $$$(self.$class(), 'SORT_KEY') - }, $DiceBot_sort_key$11.$$arity = 0); - - Opal.def(self, '$help_message', $DiceBot_help_message$12 = function $$help_message() { - var self = this; - - return $$$(self.$class(), 'HELP_MESSAGE') - }, $DiceBot_help_message$12.$$arity = 0); - - Opal.def(self, '$getHelpMessage', $DiceBot_getHelpMessage$13 = function $$getHelpMessage() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #getHelpMessage is deprecated. Please use #help_message."); - return self.$help_message(); - }, $DiceBot_getHelpMessage$13.$$arity = 0); - - Opal.def(self, '$prefixes', $DiceBot_prefixes$14 = function $$prefixes() { - var self = this; - - return self.$class().$prefixes() - }, $DiceBot_prefixes$14.$$arity = 0); - Opal.alias(self, "prefixs", "prefixes"); - - Opal.def(self, '$setSendMode', $DiceBot_setSendMode$15 = function $$setSendMode(m) { - var self = this; - - return (self.sendMode = m) - }, $DiceBot_setSendMode$15.$$arity = 1); - self.$attr_writer("upperRollThreshold"); - - Opal.def(self, '$bcdice=', $DiceBot_bcdice$eq$16 = function(b) { - var self = this; - - return (Opal.class_variable_set($nesting[0], '@@bcdice', b)) - }, $DiceBot_bcdice$eq$16.$$arity = 1); - - Opal.def(self, '$bcdice', $DiceBot_bcdice$17 = function $$bcdice() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a) - }, $DiceBot_bcdice$17.$$arity = 0); - - Opal.def(self, '$rand', $DiceBot_rand$18 = function $$rand(max) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rand(max) - }, $DiceBot_rand$18.$$arity = 1); - - Opal.def(self, '$roll', $DiceBot_roll$19 = function $$roll($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'roll', Opal.to_a(args)); - }, $DiceBot_roll$19.$$arity = -1); - - Opal.def(self, '$marshalSignOfInequality', $DiceBot_marshalSignOfInequality$20 = function $$marshalSignOfInequality($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'marshalSignOfInequality', Opal.to_a(args)); - }, $DiceBot_marshalSignOfInequality$20.$$arity = -1); - - Opal.def(self, '$unlimitedRollDiceType', $DiceBot_unlimitedRollDiceType$21 = function $$unlimitedRollDiceType() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$unlimitedRollDiceType() - }, $DiceBot_unlimitedRollDiceType$21.$$arity = 0); - self.$attr_reader("sortType"); - - Opal.def(self, '$setSortType', $DiceBot_setSortType$22 = function $$setSortType(s) { - var self = this; - - return (self.sortType = s) - }, $DiceBot_setSortType$22.$$arity = 1); - - Opal.def(self, '$d66', $DiceBot_d66$23 = function $$d66($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'getD66Value', Opal.to_a(args)); - }, $DiceBot_d66$23.$$arity = -1); - - Opal.def(self, '$parren_killer', $DiceBot_parren_killer$24 = function $$parren_killer(string) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$parren_killer(string) - }, $DiceBot_parren_killer$24.$$arity = 1); - - Opal.def(self, '$changeText', $DiceBot_changeText$25 = function $$changeText(string) { - var self = this; - - - self.$debug("DiceBot.parren_killer_add called"); - return string; - }, $DiceBot_changeText$25.$$arity = 1); - - Opal.def(self, '$dice_command', $DiceBot_dice_command$26 = function $$dice_command(string, nick_e) { - var $a, $b, self = this, secret_flg = nil, secretMarker = nil, command = nil, output_msg = nil; - - - if ($truthy(self.$isGetOriginalMessage())) { - string = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$getOriginalMessage()}; - self.$debug("dice_command Begin string", string); - secret_flg = false; - if ($truthy(self.$class().$prefixesPattern()['$=~'](string))) { - } else { - - self.$debug("not match in prefixes"); - return ["1", secret_flg]; - }; - secretMarker = $$($nesting, 'Regexp').$last_match(2); - command = $$($nesting, 'Regexp').$last_match(3); - command = self.$removeDiceCommandMessage(command); - self.$debug("dicebot after command", command); - self.$debug("match"); - $b = self.$rollDiceCommandCatched(command), $a = Opal.to_ary($b), (output_msg = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = output_msg['$nil?']()) ? $a : output_msg['$empty?']()))) { - output_msg = "1"}; - secret_flg = ($truthy($a = secret_flg) ? $a : false); - if ($truthy(output_msg['$!=']("1"))) { - output_msg = "" + (nick_e) + ": " + (output_msg)}; - if ($truthy(secretMarker)) { - if ($truthy(output_msg['$!=']("1"))) { - secret_flg = true}}; - return [output_msg, secret_flg]; - }, $DiceBot_dice_command$26.$$arity = 2); - - Opal.def(self, '$isGetOriginalMessage', $DiceBot_isGetOriginalMessage$27 = function $$isGetOriginalMessage() { - var self = this; - - return false - }, $DiceBot_isGetOriginalMessage$27.$$arity = 0); - - Opal.def(self, '$removeDiceCommandMessage', $DiceBot_removeDiceCommandMessage$28 = function $$removeDiceCommandMessage(command) { - var self = this; - - return command.$sub(/[\s ].+/, "") - }, $DiceBot_removeDiceCommandMessage$28.$$arity = 1); - - Opal.def(self, '$rollDiceCommandCatched', $DiceBot_rollDiceCommandCatched$29 = function $$rollDiceCommandCatched(command) { - var $a, $b, self = this, result = nil, secret_flg = nil, e = nil; - - - result = nil; - - try { - - self.$debug("call rollDiceCommand command", command); - $b = self.$rollDiceCommand(command), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - self.$debug("executeCommand exception", e.$to_s(), e.$backtrace().$join("\n")) - } finally { Opal.pop_exception() } - } else { throw $err; } - };; - self.$debug("rollDiceCommand result", result); - return [result, secret_flg]; - }, $DiceBot_rollDiceCommandCatched$29.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $DiceBot_rollDiceCommand$30 = function $$rollDiceCommand(_command) { - var self = this; - - return nil - }, $DiceBot_rollDiceCommand$30.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $DiceBot_dice_command_xRn$31 = function $$dice_command_xRn(_string, _nick_e) { - var self = this; - - return "" - }, $DiceBot_dice_command_xRn$31.$$arity = 2); - - Opal.def(self, '$check_result', $DiceBot_check_result$32 = function $$check_result(total, dice_total, dice_list, sides, cmp_op, target) { - var $a, self = this, ret = nil, $case = nil; - - - ret = (function() {$case = [dice_list.$size(), sides]; - if ([1, 100]['$===']($case)) {return self.$check_1D100(total, dice_total, cmp_op, target)} - else if ([1, 20]['$===']($case)) {return self.$check_1D20(total, dice_total, cmp_op, target)} - else if ([2, 6]['$===']($case)) {return self.$check_2D6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - ret = (function() {$case = sides; - if ((10)['$===']($case)) {return self.$check_nD10(total, dice_total, dice_list, cmp_op, target)} - else if ((6)['$===']($case)) {return self.$check_nD6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - return self.$check_nDx(total, cmp_op, target); - }, $DiceBot_check_result$32.$$arity = 6); - - Opal.def(self, '$check_nDx', $DiceBot_check_nDx$33 = function $$check_nDx(total, cmp_op, target) { - var self = this, success = nil; - - - if ($truthy(target['$is_a?']($$($nesting, 'String')))) { - return " > 失敗"}; - success = (function() {if (cmp_op['$==']("!=")) { - return total['$!='](target) - } else { - return total.$send(cmp_op, target) - }; return nil; })(); - if ($truthy(success)) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $DiceBot_check_nDx$33.$$arity = 3); - - Opal.def(self, '$check_1D100', $DiceBot_check_1D100$34 = function $$check_1D100(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D100$34.$$arity = 4); - - Opal.def(self, '$check_1D20', $DiceBot_check_1D20$35 = function $$check_1D20(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D20$35.$$arity = 4); - - Opal.def(self, '$check_nD10', $DiceBot_check_nD10$36 = function $$check_nD10(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD10$36.$$arity = 5); - - Opal.def(self, '$check_2D6', $DiceBot_check_2D6$37 = function $$check_2D6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_2D6$37.$$arity = 5); - - Opal.def(self, '$check_nD6', $DiceBot_check_nD6$38 = function $$check_nD6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD6$38.$$arity = 5); - - Opal.def(self, '$get_table_by_2d6', $DiceBot_get_table_by_2d6$39 = function $$get_table_by_2d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 2) - }, $DiceBot_get_table_by_2d6$39.$$arity = 1); - - Opal.def(self, '$get_table_by_1d6', $DiceBot_get_table_by_1d6$40 = function $$get_table_by_1d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 1) - }, $DiceBot_get_table_by_1d6$40.$$arity = 1); - - Opal.def(self, '$get_table_by_nD6', $DiceBot_get_table_by_nD6$41 = function $$get_table_by_nD6(table, count) { - var self = this; - - return self.$get_table_by_nDx(table, count, 6) - }, $DiceBot_get_table_by_nD6$41.$$arity = 2); - - Opal.def(self, '$get_table_by_nDx', $DiceBot_get_table_by_nDx$42 = function $$get_table_by_nDx(table, count, diceType) { - var $a, $b, self = this, num = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(num, count))); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_nDx$42.$$arity = 3); - - Opal.def(self, '$get_table_by_1d3', $DiceBot_get_table_by_1d3$43 = function $$get_table_by_1d3(table) { - var $a, $b, self = this, count = nil, num = nil, index = nil, text = nil; - - - self.$debug("get_table_by_1d3"); - count = 1; - $b = self.$roll(count, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - self.$debug("num", num); - index = $rb_divide($rb_minus(num, 1), 2); - self.$debug("index", index); - text = table['$[]'](index); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_1d3$43.$$arity = 1); - - Opal.def(self, '$getD66', $DiceBot_getD66$44 = function $$getD66(isSwap) { - var self = this; - - return self.$bcdice().$getD66(isSwap) - }, $DiceBot_getD66$44.$$arity = 1); - - Opal.def(self, '$get_table_by_d66_swap', $DiceBot_get_table_by_d66_swap$45 = function $$get_table_by_d66_swap(table) { - var self = this, isSwap = nil, number = nil; - - - isSwap = true; - number = self.$bcdice().$getD66(isSwap); - return [self.$get_table_by_number(number, table), number]; - }, $DiceBot_get_table_by_d66_swap$45.$$arity = 1); - - Opal.def(self, '$get_table_by_d66', $DiceBot_get_table_by_d66$46 = function $$get_table_by_d66(table) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, num = nil, text = nil, indexText = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - num = $rb_plus($rb_times($rb_minus(dice1, 1), 6), $rb_minus(dice2, 1)); - text = table['$[]'](num); - indexText = "" + (dice1) + (dice2); - if ($truthy(text['$nil?']())) { - return ["1", indexText]}; - return [text, indexText]; - }, $DiceBot_get_table_by_d66$46.$$arity = 1); - - Opal.def(self, '$getDiceRolledAdditionalText', $DiceBot_getDiceRolledAdditionalText$47 = function $$getDiceRolledAdditionalText(_n1, _n_max, _dice_max) { - var self = this; - - return "" - }, $DiceBot_getDiceRolledAdditionalText$47.$$arity = 3); - - Opal.def(self, '$getDiceRevision', $DiceBot_getDiceRevision$48 = function $$getDiceRevision(_n_max, _dice_max, _total_n) { - var self = this; - - return ["", 0] - }, $DiceBot_getDiceRevision$48.$$arity = 3); - - Opal.def(self, '$isD9', $DiceBot_isD9$49 = function $$isD9() { - var self = this; - - return false - }, $DiceBot_isD9$49.$$arity = 0); - - Opal.def(self, '$getGrichText', $DiceBot_getGrichText$50 = function $$getGrichText(_numberSpot1, _dice_cnt_total, _suc) { - var self = this; - - return "" - }, $DiceBot_getGrichText$50.$$arity = 3); - - Opal.def(self, '$should_reroll?', $DiceBot_should_reroll$ques$51 = function(loop_count) { - var $a, self = this; - - return ($truthy($a = $rb_lt(loop_count, self.rerollLimitCount)) ? $a : self.rerollLimitCount['$=='](0)) - }, $DiceBot_should_reroll$ques$51.$$arity = 1); - - Opal.def(self, '$get_table_by_number', $DiceBot_get_table_by_number$52 = function $$get_table_by_number(index, table, default$) {try { - - var $$53, self = this; - - - - if (default$ == null) { - default$ = "1"; - }; - $send(table, 'each', [], ($$53 = function(item){var self = $$53.$$s || this, number = nil; - - - - if (item == null) { - item = nil; - }; - number = item['$[]'](0); - if ($truthy($rb_ge(number, index))) { - Opal.ret(self.$getTableValue(item['$[]'](1))) - } else { - return nil - };}, $$53.$$s = self, $$53.$$arity = 1, $$53)); - return self.$getTableValue(default$); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_get_table_by_number$52.$$arity = -3); - - Opal.def(self, '$getTableValue', $DiceBot_getTableValue$54 = function $$getTableValue(data) {try { - - var $$55, self = this, lambdaBlock = nil; - - - if ($truthy(data['$kind_of?']($$($nesting, 'Proc')))) { - - lambdaBlock = $send(self, 'lambda', [], ($$55 = function(){var self = $$55.$$s || this; - - Opal.ret(data.$call())}, $$55.$$s = self, $$55.$$arity = 0, $$55)); - return lambdaBlock.$call();}; - return data; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_getTableValue$54.$$arity = 1); - - Opal.def(self, '$analyzeDiceCommandResultMethod', $DiceBot_analyzeDiceCommandResultMethod$56 = function $$analyzeDiceCommandResultMethod(command) {try { - - var $$57, $$58, self = this, methodList = nil; - - - methodList = $send(self.$public_methods(), 'select', [], ($$57 = function(method){var self = $$57.$$s || this; - - - - if (method == null) { - method = nil; - }; - return /^get.+DiceCommandResult$/['$==='](method.$to_s());}, $$57.$$s = self, $$57.$$arity = 1, $$57)); - $send(methodList, 'each', [], ($$58 = function(method){var self = $$58.$$s || this, result = nil; - - - - if (method == null) { - method = nil; - }; - result = self.$send(method, command); - if ($truthy(result['$nil?']())) { - return nil - } else { - Opal.ret(result) - };}, $$58.$$s = self, $$58.$$arity = 1, $$58)); - return nil; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_analyzeDiceCommandResultMethod$56.$$arity = 1); - - Opal.def(self, '$get_table_by_nDx_extratable', $DiceBot_get_table_by_nDx_extratable$59 = function $$get_table_by_nDx_extratable(table, count, diceType) { - var $a, $b, self = this, number = nil, diceText = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(number, count))); - return [text, number, diceText]; - }, $DiceBot_get_table_by_nDx_extratable$59.$$arity = 3); - - Opal.def(self, '$getTableCommandResult', $DiceBot_getTableCommandResult$60 = function $$getTableCommandResult(command, tables, isPrintDiceText) { - var $a, $b, $c, $d, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, count = nil, diceType = nil, limit = nil, item = nil, value = nil, output = nil, diceText = nil, text = nil, number = nil; - - - - if (isPrintDiceText == null) { - isPrintDiceText = true; - }; - info = tables['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type").$upcase(); - table = info['$[]']("table"); - if ($truthy(($truthy($a = type['$==']("D66")) ? self.d66Type['$=='](2) : $a))) { - type = "D66S"}; - $b = (function() {$case = type; - if (/(\d+)D(\d+)/['$===']($case)) { - count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diceType = $$($nesting, 'Regexp').$last_match(2).$to_i(); - limit = $rb_minus($rb_times(diceType, count), $rb_minus(count, 1)); - table = self.$getTableInfoFromExtraTableText(table, limit); - return self.$get_table_by_nDx_extratable(table, count, diceType);} - else if ("D66"['$===']($case) || "D66N"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 36); - $d = self.$get_table_by_d66(table), $c = Opal.to_ary($d), (item = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - output = item['$[]'](1); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else if ("D66S"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 21); - $d = self.$get_table_by_d66_swap(table), $c = Opal.to_ary($d), (output = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else {return self.$raise("" + "invalid dice Type " + (command))}})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), (diceText = ($a[2] == null ? nil : $a[2])), $b; - text = text.$gsub("\\n", "\n"); - text = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rollTableMessageDiceText(text); - if ($truthy(text['$nil?']())) { - return nil}; - if ($truthy(($truthy($a = isPrintDiceText) ? diceText['$nil?']()['$!']() : $a))) { - return "" + (name) + "(" + (number) + "[" + (diceText) + "]) > " + (text)}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $DiceBot_getTableCommandResult$60.$$arity = -3); - - Opal.def(self, '$getTableInfoFromExtraTableText', $DiceBot_getTableInfoFromExtraTableText$61 = function $$getTableInfoFromExtraTableText(text, count) { - var $$62, self = this, newTable = nil; - - - - if (count == null) { - count = nil; - }; - if ($truthy(text['$is_a?']($$($nesting, 'String')))) { - text = text.$split(/\n/)}; - newTable = $send(text, 'map', [], ($$62 = function(item){var self = $$62.$$s || this, $a; - - - - if (item == null) { - item = nil; - }; - if ($truthy(($truthy($a = item['$is_a?']($$($nesting, 'String'))) ? /^(\d+):(.*)/['$==='](item) : $a))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2)] - } else { - return item - };}, $$62.$$s = self, $$62.$$arity = 1, $$62)); - if ($truthy(count['$nil?']())) { - } else if ($truthy(newTable.$size()['$!='](count))) { - self.$raise("" + "invalid table size:" + (newTable.$size()) + "\n" + (newTable.$inspect()))}; - return newTable; - }, $DiceBot_getTableInfoFromExtraTableText$61.$$arity = -2); - return (Opal.def(self, '$roll_tables', $DiceBot_roll_tables$63 = function $$roll_tables(command, tables) { - var self = this, table = nil; - - - table = tables['$[]'](command.$upcase()); - if ($truthy(table)) { - } else { - return nil - }; - return table.$roll(self.$bcdice()).$to_s(); - }, $DiceBot_roll_tables$63.$$arity = 2), nil) && 'roll_tables'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/SRS"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$include', '$attr_reader', '$map', '$to_proc', '$join', '$escape', '$prepare_help_msg_for_aliases_for_srs_roll', '$concatenate_help_messages', '$private', '$clear_aliases_for_srs_roll', '$extend', '$setPrefixes', '$help_message', '$class', '$freeze', '$new', '$format_modifier', '$modifier', '$target_value', '$critical_value', '$fumble_value', '$replace_alias_for_srs_roll_with_2d6', '$parse', '$execute_srs_roll', '$===', '$aliases_re_for_srs_roll_with_target_value', '$last_match', '$aliases_re_for_srs_roll_without_target_value', '$parse_srs_roll_with_target_value', '$parse_srs_roll_without_target_value', '$eval', '$to_sym', '$eval_modifier', '$[]', '$to_i', '$roll', '$&', '$+', '$compare_result', '$compact', '$>=', '$<=']); - - self.$require("diceBot/DiceBot"); - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SRS'); - - var $nesting = [self].concat($parent_nesting), $SRS_initialize$12, $SRS_help_message$13, $SRS$14, $SRS_rollDiceCommand$16, $SRS_replace_alias_for_srs_roll_with_2d6$17, $SRS_parse$18, $SRS_eval_modifier$19, $SRS_parse_srs_roll_with_target_value$20, $SRS_parse_srs_roll_without_target_value$21, $SRS_execute_srs_roll$22, $SRS_compare_result$23; - - self.$$prototype.fractionType = self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "SRS"); - Opal.const_set($nesting[0], 'NAME', "スタンダードRPGシステム"); - Opal.const_set($nesting[0], 'SORT_KEY', "すたんたあとRPGしすてむ"); - self.$include($$($nesting, 'ModifierFormatter')); - Opal.const_set($nesting[0], 'HELP_MESSAGE_1', "" + "・判定\n" + " ・通常判定:2D6+m>=t[c,f]\n" + "  修正値m、目標値t、クリティカル値c、ファンブル値fで判定ロールを行います。\n" + "  修正値、クリティカル値、ファンブル値は省略可能です([]ごと省略可)。\n" + "  クリティカル値、ファンブル値の既定値は、それぞれ12、2です。\n" + "  自動成功、自動失敗、成功、失敗を自動表示します。\n" + "\n" + "  例) 2d6>=10     修正値0、目標値10で判定\n" + "  例) 2d6+2>=10    修正値+2、目標値10で判定\n" + "  例) 2d6+2>=10[11]  ↑をクリティカル値11で判定\n" + "  例) 2d6+2>=10[12,4] ↑をクリティカル値12、ファンブル値4で判定\n"); - Opal.const_set($nesting[0], 'HELP_MESSAGE_2', "" + " ・クリティカルおよびファンブルのみの判定:2D6+m[c,f]\n" + "  目標値を指定せず、修正値m、クリティカル値c、ファンブル値fで判定ロールを行います。\n" + "  修正値、クリティカル値、ファンブル値は省略可能です([]は省略不可)。\n" + "  自動成功、自動失敗を自動表示します。\n" + "\n" + "  例) 2d6[]    修正値0、クリティカル値12、ファンブル値2で判定\n" + "  例) 2d6+2[11]  修正値+2、クリティカル値11、ファンブル値2で判定\n" + "  例) 2d6+2[12,4] 修正値+2、クリティカル値12、ファンブル値4で判定\n"); - Opal.const_set($nesting[0], 'HELP_MESSAGE_3', "・D66ダイスあり(入れ替えなし)\n"); - Opal.const_set($nesting[0], 'DEFAULT_HELP_MESSAGE', "" + ($$($nesting, 'HELP_MESSAGE_1')) + "\n" + ($$($nesting, 'HELP_MESSAGE_2')) + "\n" + ($$($nesting, 'HELP_MESSAGE_3'))); - (function($base, $parent_nesting) { - var self = $module($base, 'ClassMethods'); - - var $nesting = [self].concat($parent_nesting), $ClassMethods_set_aliases_for_srs_roll$1, $ClassMethods_clear_aliases_for_srs_roll$3, $ClassMethods_prepare_help_msg_for_aliases_for_srs_roll$4, $ClassMethods_concatenate_help_messages$7; - - - self.$attr_reader("help_message"); - self.$attr_reader("aliases_re_for_srs_roll_with_target_value"); - self.$attr_reader("aliases_re_for_srs_roll_without_target_value"); - - Opal.def(self, '$set_aliases_for_srs_roll', $ClassMethods_set_aliases_for_srs_roll$1 = function $$set_aliases_for_srs_roll($a) { - var $post_args, aliases, $$2, self = this, aliases_upcase = nil, aliases_part = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - aliases = $post_args;; - aliases_upcase = $send(aliases, 'map', [], "upcase".$to_proc()); - aliases_part = $send(aliases_upcase, 'map', [], ($$2 = function(a){var self = $$2.$$s || this; - - - - if (a == null) { - a = nil; - }; - return $$($nesting, 'Regexp').$escape(a);}, $$2.$$s = self, $$2.$$arity = 1, $$2)).$join("|"); - self.aliases_re_for_srs_roll_with_target_value = new RegExp("" + "^(?:" + (aliases_part) + ")((?:[-+][-+\\d]+)?>=\\d+(?:\\[\\d*(?:,\\d+)?\\])?)$"); - self.aliases_re_for_srs_roll_without_target_value = new RegExp("" + "^(?:" + (aliases_part) + ")([-+][-+\\d]+)?(\\[\\d*(?:,\\d+)?\\])?$"); - self.$prepare_help_msg_for_aliases_for_srs_roll(aliases_upcase); - self.help_message = self.$concatenate_help_messages(); - return self; - }, $ClassMethods_set_aliases_for_srs_roll$1.$$arity = -1); - - Opal.def(self, '$clear_aliases_for_srs_roll', $ClassMethods_clear_aliases_for_srs_roll$3 = function $$clear_aliases_for_srs_roll() { - var self = this; - - - self.aliases_re_for_srs_roll_with_target_value = nil; - self.aliases_re_for_srs_roll_without_target_value = nil; - self.help_message = $$$($$($nesting, 'SRS'), 'DEFAULT_HELP_MESSAGE'); - return self; - }, $ClassMethods_clear_aliases_for_srs_roll$3.$$arity = 0); - self.$private(); - - Opal.def(self, '$prepare_help_msg_for_aliases_for_srs_roll', $ClassMethods_prepare_help_msg_for_aliases_for_srs_roll$4 = function $$prepare_help_msg_for_aliases_for_srs_roll(aliases) { - var $$5, $$6, self = this; - - - self.help_msg_for_aliases_for_srs_roll_with_target_value = $send(aliases, 'map', [], ($$5 = function(a){var self = $$5.$$s || this; - - - - if (a == null) { - a = nil; - }; - return "" + "  例) " + (a) + "+2>=10     2d6+2>=10と同じ(" + (a) + "が2D6のショートカットコマンド)\n";}, $$5.$$s = self, $$5.$$arity = 1, $$5)).$join(); - self.help_msg_for_aliases_for_srs_roll_without_target_value = $send(aliases, 'map', [], ($$6 = function(a){var self = $$6.$$s || this; - - - - if (a == null) { - a = nil; - }; - return "" + ("" + "  例) " + (a) + "      2d6[]と同じ(" + (a) + "が2D6のショートカットコマンド)\n") + ("" + "  例) " + (a) + "+2[12,4]  2d6+2[12,4]と同じ(" + (a) + "が2D6のショートカットコマンド)\n");}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$join(); - return self; - }, $ClassMethods_prepare_help_msg_for_aliases_for_srs_roll$4.$$arity = 1); - - Opal.def(self, '$concatenate_help_messages', $ClassMethods_concatenate_help_messages$7 = function $$concatenate_help_messages() { - var self = this; - if (self.help_msg_for_aliases_for_srs_roll_with_target_value == null) self.help_msg_for_aliases_for_srs_roll_with_target_value = nil; - if (self.help_msg_for_aliases_for_srs_roll_without_target_value == null) self.help_msg_for_aliases_for_srs_roll_without_target_value = nil; - - return "" + ("" + ($$$($$($nesting, 'SRS'), 'HELP_MESSAGE_1'))) + ("" + (self.help_msg_for_aliases_for_srs_roll_with_target_value) + "\n") + ("" + ($$$($$($nesting, 'SRS'), 'HELP_MESSAGE_2'))) + ("" + (self.help_msg_for_aliases_for_srs_roll_without_target_value) + "\n") + ("" + ($$$($$($nesting, 'SRS'), 'HELP_MESSAGE_3'))) - }, $ClassMethods_concatenate_help_messages$7.$$arity = 0); - })($nesting[0], $nesting); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $inherited$8, $help_message$9, $aliases_re_for_srs_roll_with_target_value$10, $aliases_re_for_srs_roll_without_target_value$11; - - - - Opal.def(self, '$inherited', $inherited$8 = function $$inherited(subclass) { - var self = this; - - return subclass.$extend($$($nesting, 'ClassMethods')).$clear_aliases_for_srs_roll() - }, $inherited$8.$$arity = 1); - - Opal.def(self, '$help_message', $help_message$9 = function $$help_message() { - var self = this; - - return $$($nesting, 'DEFAULT_HELP_MESSAGE') - }, $help_message$9.$$arity = 0); - - Opal.def(self, '$aliases_re_for_srs_roll_with_target_value', $aliases_re_for_srs_roll_with_target_value$10 = function $$aliases_re_for_srs_roll_with_target_value() { - var self = this; - - return nil - }, $aliases_re_for_srs_roll_with_target_value$10.$$arity = 0); - return (Opal.def(self, '$aliases_re_for_srs_roll_without_target_value', $aliases_re_for_srs_roll_without_target_value$11 = function $$aliases_re_for_srs_roll_without_target_value() { - var self = this; - - return nil - }, $aliases_re_for_srs_roll_without_target_value$11.$$arity = 0), nil) && 'aliases_re_for_srs_roll_without_target_value'; - })(Opal.get_singleton_class(self), $nesting); - self.$setPrefixes(["2D6.*"]); - - Opal.def(self, '$initialize', $SRS_initialize$12 = function $$initialize() { - var $iter = $SRS_initialize$12.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $SRS_initialize$12.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $SRS_initialize$12, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 1); - }, $SRS_initialize$12.$$arity = 0); - - Opal.def(self, '$help_message', $SRS_help_message$13 = function $$help_message() { - var self = this; - - return self.$class().$help_message() - }, $SRS_help_message$13.$$arity = 0); - Opal.const_set($nesting[0], 'DEFAULT_CRITICAL_VALUE', 12); - Opal.const_set($nesting[0], 'DEFAULT_FUMBLE_VALUE', 2); - Opal.const_set($nesting[0], 'SRS_ROLL_WITH_TARGET_VALUE_RE', /^2D6([-+][-+\d]+)?>=(\d+)(?:\[(\d+)?(?:,(\d+))?\])?$/.$freeze()); - Opal.const_set($nesting[0], 'SRS_ROLL_WITHOUT_TARGET_VALUE_RE', /^2D6([-+][-+\d]+)?\[(\d+)?(?:,(\d+))?\]$/.$freeze()); - Opal.const_set($nesting[0], 'SRS_ROLL_DEFAULT_THRESHOLDS', "" + "[" + ($$($nesting, 'DEFAULT_CRITICAL_VALUE')) + "," + ($$($nesting, 'DEFAULT_FUMBLE_VALUE')) + "]"); - Opal.const_set($nesting[0], 'SRSRollNode', $send($$($nesting, 'Struct'), 'new', ["modifier", "critical_value", "fumble_value", "target_value"], ($SRS$14 = function(){var self = $SRS$14.$$s || this, $to_s$15; - - - self.$include($$($nesting, 'ModifierFormatter')); - return (Opal.def(self, '$to_s', $to_s$15 = function $$to_s() { - var self = this, lhs = nil, expression = nil; - - - lhs = "" + "2D6" + (self.$format_modifier(self.$modifier())); - expression = (function() {if ($truthy(self.$target_value())) { - return "" + (lhs) + ">=" + (self.$target_value()) - } else { - return lhs - }; return nil; })(); - return "" + (expression) + "[" + (self.$critical_value()) + "," + (self.$fumble_value()) + "]"; - }, $to_s$15.$$arity = 0), nil) && 'to_s';}, $SRS$14.$$s = self, $SRS$14.$$arity = 0, $SRS$14))); - - Opal.def(self, '$rollDiceCommand', $SRS_rollDiceCommand$16 = function $$rollDiceCommand(command) { - var self = this, alias_replaced_with_2d6 = nil, node = nil; - - - alias_replaced_with_2d6 = self.$replace_alias_for_srs_roll_with_2d6(command); - if ($truthy((node = self.$parse(alias_replaced_with_2d6)))) { - return self.$execute_srs_roll(node)}; - return nil; - }, $SRS_rollDiceCommand$16.$$arity = 1); - self.$private(); - - Opal.def(self, '$replace_alias_for_srs_roll_with_2d6', $SRS_replace_alias_for_srs_roll_with_2d6$17 = function $$replace_alias_for_srs_roll_with_2d6(input) { - var $a, self = this, $case = nil, modifier = nil, thresholds = nil; - - return (function() {$case = input; - if (self.$class().$aliases_re_for_srs_roll_with_target_value()['$===']($case)) {return "" + "2D6" + ($$($nesting, 'Regexp').$last_match(1))} - else if (self.$class().$aliases_re_for_srs_roll_without_target_value()['$===']($case)) { - modifier = $$($nesting, 'Regexp').$last_match(1); - thresholds = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : $$($nesting, 'SRS_ROLL_DEFAULT_THRESHOLDS')); - return "" + "2D6" + (modifier) + (thresholds);} - else {return input}})() - }, $SRS_replace_alias_for_srs_roll_with_2d6$17.$$arity = 1); - - Opal.def(self, '$parse', $SRS_parse$18 = function $$parse(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if ($$($nesting, 'SRS_ROLL_WITH_TARGET_VALUE_RE')['$===']($case)) {return self.$parse_srs_roll_with_target_value($$($nesting, 'Regexp').$last_match())} - else if ($$($nesting, 'SRS_ROLL_WITHOUT_TARGET_VALUE_RE')['$===']($case)) {return self.$parse_srs_roll_without_target_value($$($nesting, 'Regexp').$last_match())} - else {return nil}})() - }, $SRS_parse$18.$$arity = 1); - - Opal.def(self, '$eval_modifier', $SRS_eval_modifier$19 = function $$eval_modifier(modifier_str) { - var self = this; - - - if ($truthy(modifier_str)) { - } else { - return 0 - }; - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(modifier_str, self.fractionType.$to_sym()); - }, $SRS_eval_modifier$19.$$arity = 1); - - Opal.def(self, '$parse_srs_roll_with_target_value', $SRS_parse_srs_roll_with_target_value$20 = function $$parse_srs_roll_with_target_value(m) { - var $a, $b, self = this, modifier = nil, target_value = nil, critical_value = nil, fumble_value = nil; - - - modifier = self.$eval_modifier(m['$[]'](1)); - target_value = m['$[]'](2).$to_i(); - critical_value = ($truthy($a = ($truthy($b = m['$[]'](3)) ? m['$[]'](3).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_CRITICAL_VALUE')); - fumble_value = ($truthy($a = ($truthy($b = m['$[]'](4)) ? m['$[]'](4).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_FUMBLE_VALUE')); - return $$($nesting, 'SRSRollNode').$new(modifier, critical_value, fumble_value, target_value); - }, $SRS_parse_srs_roll_with_target_value$20.$$arity = 1); - - Opal.def(self, '$parse_srs_roll_without_target_value', $SRS_parse_srs_roll_without_target_value$21 = function $$parse_srs_roll_without_target_value(m) { - var $a, $b, self = this, modifier = nil, critical_value = nil, fumble_value = nil; - - - modifier = self.$eval_modifier(m['$[]'](1)); - critical_value = ($truthy($a = ($truthy($b = m['$[]'](2)) ? m['$[]'](2).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_CRITICAL_VALUE')); - fumble_value = ($truthy($a = ($truthy($b = m['$[]'](3)) ? m['$[]'](3).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_FUMBLE_VALUE')); - return $$($nesting, 'SRSRollNode').$new(modifier, critical_value, fumble_value, nil); - }, $SRS_parse_srs_roll_without_target_value$21.$$arity = 1); - - Opal.def(self, '$execute_srs_roll', $SRS_execute_srs_roll$22 = function $$execute_srs_roll(srs_roll) { - var $a, $b, self = this, sum = nil, dice_str = nil, modified_sum = nil, parts = nil; - - - $b = self.$roll(2, 6, self.sortType['$&'](1)), $a = Opal.to_ary($b), (sum = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - modified_sum = $rb_plus(sum, srs_roll.$modifier()); - parts = ["" + "(" + (srs_roll) + ")", "" + (sum) + "[" + (dice_str) + "]" + (self.$format_modifier(srs_roll.$modifier())), modified_sum, self.$compare_result(srs_roll, sum, modified_sum)]; - return parts.$compact().$join(" > "); - }, $SRS_execute_srs_roll$22.$$arity = 1); - return (Opal.def(self, '$compare_result', $SRS_compare_result$23 = function $$compare_result(srs_roll, sum, modified_sum) { - var self = this; - - - if ($truthy($rb_ge(sum, srs_roll.$critical_value()))) { - return "自動成功"}; - if ($truthy($rb_le(sum, srs_roll.$fumble_value()))) { - return "自動失敗"}; - if ($truthy(srs_roll.$target_value())) { - return (function() {if ($truthy($rb_ge(modified_sum, srs_roll.$target_value()))) { - return "成功" - } else { - return "失敗" - }; return nil; })()}; - return nil; - }, $SRS_compare_result$23.$$arity = 3), nil) && 'compare_result'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; - - Opal.add_stubs(['$require', '$setPrefixes', '$set_aliases_for_srs_roll']); - - self.$require("diceBot/SRS"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'FullMetalPanic'); - - var $nesting = [self].concat($parent_nesting); - - - Opal.const_set($nesting[0], 'ID', "FullMetalPanic"); - Opal.const_set($nesting[0], 'NAME', "フルメタル・パニック!RPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "ふるめたるはにつくRPG"); - self.$setPrefixes(["2D6.*", "MG.*", "FP.*"]); - return self.$set_aliases_for_srs_roll("MG", "FP"); - })($nesting[0], $$($nesting, 'SRS'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/FutariSousa.js b/src/assets/dicebot/FutariSousa.js deleted file mode 100644 index a7d03a08d..000000000 --- a/src/assets/dicebot/FutariSousa.js +++ /dev/null @@ -1,619 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$===', '$to_i', '$last_match', '$get_dt', '$get_as', '$get_strange_habit_random', '$get_strange_habit_from_mouth', '$get_strange_habit_bull_through', '$get_strange_habit_play_innocent', '$get_strange_habit_engrossed', '$get_strange_habit_with_partner', '$get_strange_habit_do_something', '$get_strange_habit_fantastic', '$get_strange_habit_inspiration', '$get_strange_habit_emotion', '$get_event_scene', '$get_event_why', '$get_event_npc', '$get_event_coming', '$get_event_vs', '$get_obstruction_table', '$get_abnormal_condition', '$get_eyewitness_table', '$get_wrapped_in_mystery_table', '$get_background_detective_destiny', '$get_background_detective_genius', '$get_background_detective_mania', '$get_background_assistant_justice', '$get_background_assistant_passion', '$get_background_assistant_involved', '$get_height_table', '$get_base_table', '$get_guest_relation_table', '$get_memorial_item_table', '$get_job_table_66', '$get_job_table_10', '$get_fashion_table_66', '$get_fashion_table_10', '$get_feeling_table_66', '$get_feeling_table_10', '$get_like_dislike_table_66', '$get_like_dislike_table_10', '$get_name_to_call_table_66', '$get_name_to_call_table_10', '$times', '$roll', '$<<', '$get_dt_result', '$join', '$max', '$<=', '$include?', '$>=', '$get_as_result', '$assoc', '$respond_to?', '$+', '$call', '$lambda', '$getAddRoll', '$rollDiceCommand', '$nil?', '$get_table_by_number', '$get_table_by_1d6', '$get_table_by_d66_swap']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'FutariSousa'); - - var $nesting = [self].concat($parent_nesting), $FutariSousa_initialize$1, $FutariSousa_rollDiceCommand$2, $FutariSousa_get_dt$3, $FutariSousa_get_dt_result$5, $FutariSousa_get_as$6, $FutariSousa_get_as_result$8, $FutariSousa_getTableResult$9, $FutariSousa_getAddRollProc$10, $FutariSousa_getAddRoll$12, $FutariSousa_get_strange_habit_random$13, $FutariSousa_get_strange_habit_from_mouth$14, $FutariSousa_get_strange_habit_bull_through$15, $FutariSousa_get_strange_habit_play_innocent$16, $FutariSousa_get_strange_habit_engrossed$17, $FutariSousa_get_strange_habit_with_partner$18, $FutariSousa_get_strange_habit_do_something$19, $FutariSousa_get_strange_habit_fantastic$20, $FutariSousa_get_strange_habit_inspiration$21, $FutariSousa_get_strange_habit_emotion$22, $FutariSousa_get_event_scene$23, $FutariSousa_get_event_why$24, $FutariSousa_get_event_npc$25, $FutariSousa_get_event_coming$26, $FutariSousa_get_event_vs$27, $FutariSousa_get_obstruction_table$28, $FutariSousa_get_abnormal_condition$29, $FutariSousa_get_eyewitness_table$30, $FutariSousa_get_wrapped_in_mystery_table$31, $FutariSousa_get_background_detective_destiny$32, $FutariSousa_get_background_detective_genius$33, $FutariSousa_get_background_detective_mania$34, $FutariSousa_get_background_assistant_justice$35, $FutariSousa_get_background_assistant_passion$36, $FutariSousa_get_background_assistant_involved$37, $FutariSousa_get_height_table$38, $FutariSousa_get_base_table$39, $FutariSousa_get_guest_relation_table$40, $FutariSousa_get_memorial_item_table$41, $FutariSousa_get_job_table_66$42, $FutariSousa_get_job_table_10$43, $FutariSousa_get_fashion_table_66$44, $FutariSousa_get_fashion_table_10$45, $FutariSousa_get_like_dislike_table_66$46, $FutariSousa_get_like_dislike_table_10$47, $FutariSousa_get_feeling_table_66$48, $FutariSousa_get_feeling_table_10$49, $FutariSousa_get_name_to_call_table_66$50, $FutariSousa_get_name_to_call_table_10$51; - - self.$$prototype.special_dice = self.$$prototype.success_threshold = nil; - - Opal.const_set($nesting[0], 'ID', "FutariSousa"); - Opal.const_set($nesting[0], 'NAME', "フタリソウサ"); - Opal.const_set($nesting[0], 'SORT_KEY', "ふたりそうさ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定用コマンド\n" + "探偵用:【DT】…10面ダイスを2つ振って判定します。『有利』なら【3DT】、『不利』なら【1DT】を使います。\n" + "助手用:【AS】…6面ダイスを2つ振って判定します。『有利』なら【3AS】、『不利』なら【1AS】を使います。\n" + "・各種表\n" + "【調査時】\n" + "異常な癖決定表 SHRD\n" + " 口から出る表 SHFM/強引な捜査表    SHBT/すっとぼけ表  SHPI\n" + " 事件に夢中表 SHEG/パートナーと……表 SHWP/何かしている表 SHDS\n" + " 奇想天外表  SHFT/急なひらめき表   SHIN/喜怒哀楽表   SHEM\n" + "イベント表\n" + " 現場にて  EVS/なぜ?  EVW/協力者と共に EVN\n" + " 向こうから EVC/VS容疑者 EVV\n" + "調査の障害表 OBT  変調表 ACT  目撃者表 EWT  迷宮入り表 WMT\n" + "【設定時】\n" + "背景表\n" + " 探偵 運命の血統 BGDD/天性の才能 BGDG/マニア     BGDM\n" + " 助手 正義の人  BGAJ/情熱の人  BGAP/巻き込まれの人 BGAI\n" + "身長表 HT  たまり場表 BT  関係表 GRT  思い出の品決定表 MIT\n" + "職業表A・B  JBT66・JBT10  ファッション特徴表A・B    FST66・FST10\n" + "感情表A/B  FLT66・FLT10  好きなもの/嫌いなもの表A・B LDT66・LDT10\n" + "呼び名表A・B NCT66・NCT10\n"); - - Opal.def(self, '$initialize', $FutariSousa_initialize$1 = function $$initialize() { - var $iter = $FutariSousa_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $FutariSousa_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $FutariSousa_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.d66Type = 2; - self.success_threshold = 4; - return (self.special_dice = 6); - }, $FutariSousa_initialize$1.$$arity = 0); - self.$setPrefixes(["(\\d+)?DT", "(\\d+)?AS", "SHRD", "SHFM", "SHBT", "SHPI", "SHEG", "SHWP", "SHDS", "SHFT", "SHIN", "SHEM", "EVS", "EVW", "EVN", "EVC", "EVV", "OBT", "ACT", "EWT", "WMT", "BGDD", "BGDG", "BGDM", "BGAJ", "BGAP", "BGAI", "HT", "BT", "GRT", "MIT", "JBT66", "JBT10", "FST66", "FST10", "FLT66", "FLT10", "LDT66", "LDT10", "NCT66", "NCT10"]); - - Opal.def(self, '$rollDiceCommand', $FutariSousa_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, $b, self = this, output = nil, type = nil, diceText = nil, $case = nil, count = nil; - - - output = "1"; - type = ""; - diceText = ""; - $case = command; - if (/^(\d+)?DT$/i['$===']($case)) { - type = command; - count = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 2).$to_i(); - $b = self.$get_dt(count), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^(\d+)?AS$/i['$===']($case)) { - type = command; - count = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 2).$to_i(); - $b = self.$get_as(count), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHRD"['$===']($case)) { - type = "異常な癖決定表"; - $b = self.$get_strange_habit_random(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHFM"['$===']($case)) { - type = "異常な癖・口から出る表"; - $b = self.$get_strange_habit_from_mouth(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHBT"['$===']($case)) { - type = "異常な癖・強引な捜査表"; - $b = self.$get_strange_habit_bull_through(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHPI"['$===']($case)) { - type = "異常な癖・すっとぼけ表"; - $b = self.$get_strange_habit_play_innocent(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHEG"['$===']($case)) { - type = "異常な癖・事件に夢中表"; - $b = self.$get_strange_habit_engrossed(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHWP"['$===']($case)) { - type = "異常な癖・パートナーと……表"; - $b = self.$get_strange_habit_with_partner(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHDS"['$===']($case)) { - type = "異常な癖・何かしている表"; - $b = self.$get_strange_habit_do_something(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHFT"['$===']($case)) { - type = "異常な癖・奇想天外表"; - $b = self.$get_strange_habit_fantastic(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHIN"['$===']($case)) { - type = "異常な癖・急なひらめき表"; - $b = self.$get_strange_habit_inspiration(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHEM"['$===']($case)) { - type = "異常な癖・喜怒哀楽表"; - $b = self.$get_strange_habit_emotion(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EVS"['$===']($case)) { - type = "現場にて/イベント表"; - $b = self.$get_event_scene(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EVW"['$===']($case)) { - type = "なぜ?/イベント表"; - $b = self.$get_event_why(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EVN"['$===']($case)) { - type = "協力者と共に/イベント表"; - $b = self.$get_event_npc(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EVC"['$===']($case)) { - type = "向こうから/イベント表"; - $b = self.$get_event_coming(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EVV"['$===']($case)) { - type = "VS容疑者/イベント表"; - $b = self.$get_event_vs(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("OBT"['$===']($case)) { - type = "調査の障害表"; - $b = self.$get_obstruction_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("ACT"['$===']($case)) { - type = "変調表"; - $b = self.$get_abnormal_condition(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EWT"['$===']($case)) { - type = "目撃者表"; - $b = self.$get_eyewitness_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("WMT"['$===']($case)) { - type = "迷宮入り表"; - $b = self.$get_wrapped_in_mystery_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BGDD"['$===']($case)) { - type = "探偵・運命の血統 背景表"; - $b = self.$get_background_detective_destiny(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BGDG"['$===']($case)) { - type = "探偵・天性の才能 背景表"; - $b = self.$get_background_detective_genius(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BGDM"['$===']($case)) { - type = "探偵・マニア 背景表"; - $b = self.$get_background_detective_mania(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BGAJ"['$===']($case)) { - type = "助手・正義の人 背景表"; - $b = self.$get_background_assistant_justice(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BGAP"['$===']($case)) { - type = "助手・情熱の人 背景表"; - $b = self.$get_background_assistant_passion(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BGAI"['$===']($case)) { - type = "助手・巻き込まれの人 背景表"; - $b = self.$get_background_assistant_involved(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("HT"['$===']($case)) { - type = "身長表"; - $b = self.$get_height_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BT"['$===']($case)) { - type = "たまり場表"; - $b = self.$get_base_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("GRT"['$===']($case)) { - type = "関係表"; - $b = self.$get_guest_relation_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MIT"['$===']($case)) { - type = "思い出の品決定表"; - $b = self.$get_memorial_item_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("JBT66"['$===']($case)) { - type = "職業表A"; - $b = self.$get_job_table_66(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("JBT10"['$===']($case)) { - type = "職業表B"; - $b = self.$get_job_table_10(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FST66"['$===']($case)) { - type = "ファッション特徴表A"; - $b = self.$get_fashion_table_66(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FST10"['$===']($case)) { - type = "ファッション特徴表B"; - $b = self.$get_fashion_table_10(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FLT66"['$===']($case)) { - type = "感情表A"; - $b = self.$get_feeling_table_66(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FLT10"['$===']($case)) { - type = "感情表B"; - $b = self.$get_feeling_table_10(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("LDT66"['$===']($case)) { - type = "好きなもの/嫌いなもの表A"; - $b = self.$get_like_dislike_table_66(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("LDT10"['$===']($case)) { - type = "好きなもの/嫌いなもの表B"; - $b = self.$get_like_dislike_table_10(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("NCT66"['$===']($case)) { - type = "呼び名表A"; - $b = self.$get_name_to_call_table_66(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("NCT10"['$===']($case)) { - type = "呼び名表B"; - $b = self.$get_name_to_call_table_10(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;}; - return "" + (type) + "(" + (diceText) + ") > " + (output); - }, $FutariSousa_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$get_dt', $FutariSousa_get_dt$3 = function $$get_dt(count) { - var $$4, self = this, diceList = nil, output = nil, diceText = nil; - - - diceList = []; - $send(count, 'times', [], ($$4 = function(){var self = $$4.$$s || this, $a, $b, dice = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - return diceList['$<<'](dice);}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - output = self.$get_dt_result(diceList); - diceText = diceList.$join(","); - return [output, diceText]; - }, $FutariSousa_get_dt$3.$$arity = 1); - - Opal.def(self, '$get_dt_result', $FutariSousa_get_dt_result$5 = function $$get_dt_result(diceList) { - var self = this, max = nil; - - - max = diceList.$max(); - if ($truthy($rb_le(max, 1))) { - return "ファンブル(変調を受け、助手の心労が1点上昇)"}; - if ($truthy(diceList['$include?'](self.special_dice))) { - return "スペシャル(助手の余裕を1点獲得)"}; - if ($truthy($rb_ge(max, self.success_threshold))) { - return "成功"}; - return "失敗"; - }, $FutariSousa_get_dt_result$5.$$arity = 1); - - Opal.def(self, '$get_as', $FutariSousa_get_as$6 = function $$get_as(count) { - var $$7, self = this, diceList = nil, output = nil, diceText = nil; - - - diceList = []; - $send(count, 'times', [], ($$7 = function(){var self = $$7.$$s || this, $a, $b, dice = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - return diceList['$<<'](dice);}, $$7.$$s = self, $$7.$$arity = 0, $$7)); - output = self.$get_as_result(diceList); - diceText = diceList.$join(","); - return [output, diceText]; - }, $FutariSousa_get_as$6.$$arity = 1); - - Opal.def(self, '$get_as_result', $FutariSousa_get_as_result$8 = function $$get_as_result(diceList) { - var self = this, max = nil; - - - max = diceList.$max(); - if ($truthy($rb_le(max, 1))) { - return "ファンブル(変調を受け、心労が1点上昇)"}; - if ($truthy(diceList['$include?'](self.special_dice))) { - return "スペシャル(余裕2点と、探偵から助手への感情を獲得)"}; - if ($truthy($rb_ge(max, self.success_threshold))) { - return "成功(余裕1点と、探偵から助手への感情を獲得)"}; - return "失敗"; - }, $FutariSousa_get_as_result$8.$$arity = 1); - - Opal.def(self, '$getTableResult', $FutariSousa_getTableResult$9 = function $$getTableResult(table, dice) { - var $a, $b, self = this, number = nil, text = nil, command = nil; - - - $b = table.$assoc(dice), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (command = ($a[2] == null ? nil : $a[2])), $b; - if ($truthy(command['$respond_to?']("call"))) { - text = $rb_plus(text, command.$call(self))}; - return [number, text]; - }, $FutariSousa_getTableResult$9.$$arity = 2); - - Opal.def(self, '$getAddRollProc', $FutariSousa_getAddRollProc$10 = function $$getAddRollProc(command) { - var $$11, self = this; - - return $send(self, 'lambda', [], ($$11 = function(){var self = $$11.$$s || this; - - return self.$getAddRoll(command)}, $$11.$$s = self, $$11.$$arity = 0, $$11)) - }, $FutariSousa_getAddRollProc$10.$$arity = 1); - - Opal.def(self, '$getAddRoll', $FutariSousa_getAddRoll$12 = function $$getAddRoll(command) { - var self = this, text = nil; - - - if ($truthy(/^\s/['$==='](command))) { - return command}; - text = self.$rollDiceCommand(command); - if ($truthy(text['$nil?']())) { - return "" + " > " + (command) + " is NOT found."}; - return "" + " > \n " + (command) + " > " + (text); - }, $FutariSousa_getAddRoll$12.$$arity = 1); - - Opal.def(self, '$get_strange_habit_random', $FutariSousa_get_strange_habit_random$13 = function $$get_strange_habit_random() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "「異常な癖・口から出る表」の表を使用する。"], [2, "「異常な癖・強引な捜査表」の表を使用する。"], [3, "「異常な癖・すっとぼけ表」の表を使用する。"], [4, "「異常な癖・事件に夢中表」の表を使用する。"], [5, "「異常な癖・パートナーと……表」の表を使用する。"], [6, "「異常な癖・何かしている表」の表を使用する。"], [7, "「異常な癖・急なひらめき表」の表を使用する。"], [8, "「異常な癖・喜怒哀楽表」の表を使用する。"], [9, "「異常な癖・奇想天外表」の表を使用する。"], [10, "好きな「異常な癖」の表を使用する。"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_strange_habit_random$13.$$arity = 0); - - Opal.def(self, '$get_strange_habit_from_mouth', $FutariSousa_get_strange_habit_from_mouth$14 = function $$get_strange_habit_from_mouth() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "猛烈に感謝の言葉を述べる"], [2, "皮肉ばかり言ってしまう"], [3, "相手の言葉を肯定してから否定する"], [4, "ニヤニヤ笑いながら謝る"], [5, "相手の言葉を聞かずに自分だけ喋る"], [6, "「こうは考えられないでしょうか」"], [7, "「それとも、何か隠していることでも?」"], [8, "「妙ですね」"], [9, "「だいたいわかりました」"], [10, "「黙っていろ」"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_strange_habit_from_mouth$14.$$arity = 0); - - Opal.def(self, '$get_strange_habit_bull_through', $FutariSousa_get_strange_habit_bull_through$15 = function $$get_strange_habit_bull_through() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "勝手に捜査対象の鞄や引き出しを開ける"], [2, "警察の捜査に割り込む"], [3, "捜査のためにハッキングや不法侵入を行う"], [4, "許可されていないところに立ち入る"], [5, "警察の捜査を盗み見や盗み聞きする"], [6, "証拠品を許可なく解体する"], [7, "捜査対象を騙して情報を聞き出す"], [8, "勝手に関係者の持ち物を触る"], [9, "証拠品を勝手に持ち歩いている"], [10, "勝手に鑑識を始める"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_strange_habit_bull_through$15.$$arity = 0); - - Opal.def(self, '$get_strange_habit_play_innocent', $FutariSousa_get_strange_habit_play_innocent$16 = function $$get_strange_habit_play_innocent() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "自分の身分を偽って関係者に話を聞く"], [2, "情報を隠しながら話を聞く"], [3, "パートナーと演技をして情報を聞き出そうとする"], [4, "通行人のふりをして、関係者の話を盗み聞き"], [5, "偶然を装って証拠品を手に入れてしまう"], [6, "わざとらしくすっとぼける"], [7, "関係者を怒らせる演技をして、情報を引き出す"], [8, "やんわりと関係者を脅す"], [9, "落し物をしたと主張して現場や証拠品を漁る"], [10, "関係者に誘導尋問を仕掛ける"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_strange_habit_play_innocent$16.$$arity = 0); - - Opal.def(self, '$get_strange_habit_engrossed', $FutariSousa_get_strange_habit_engrossed$17 = function $$get_strange_habit_engrossed() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "パートナーの体を使って事件を再現しようとする"], [2, "謎を解くことが楽しくて笑ってしまう"], [3, "寝食を忘れて捜査をしていたので急に倒れる"], [4, "考え事をしていて、誰の声も聞こえない"], [5, "事件の相関図を手近な壁や床に描き始める"], [6, "事件に関係する言葉を次々に発して止まらない"], [7, "事件解決以外のことをまったく考えていない"], [8, "事件の流れをぶつぶつと喋り始める"], [9, "事件現場に踏み込んで調べ物をする"], [10, "食事中でも、かまわずに事件の話をする"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_strange_habit_engrossed$17.$$arity = 0); - - Opal.def(self, '$get_strange_habit_with_partner', $FutariSousa_get_strange_habit_with_partner$18 = function $$get_strange_habit_with_partner() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "パートナーの信頼に甘える"], [2, "パートナーを置いて先に行ってしまう"], [3, "パートナーに事件についてどう思っているか質問する"], [4, "パートナーに自慢する"], [5, "パートナーに事件に関するクイズを出題する"], [6, "パートナーと些細なことで喧嘩をする"], [7, "パートナーに教師のようにふるまう"], [8, "パートナーがついてくる前提で勝手に動く"], [9, "パートナーに対して懇切丁寧に事件を説明する"], [10, "パートナーの耳元でいきなり喋り始める"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_strange_habit_with_partner$18.$$arity = 0); - - Opal.def(self, '$get_strange_habit_do_something', $FutariSousa_get_strange_habit_do_something$19 = function $$get_strange_habit_do_something() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "大量の本を読んでいる"], [2, "好きな音楽を大音量で流している"], [3, "何かの数式を解いている"], [4, "大量の好物をずっと食べている"], [5, "ずっとパソコンやスマートフォンなどの画面と向かい合って調べている"], [6, "小さな謎を解いている"], [7, "チェスや将棋などを指している"], [8, "喫茶店の席に座って何かを待っている"], [9, "ずっと眠っていたが急に起きる"], [10, "しばらく何もしていない"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_strange_habit_do_something$19.$$arity = 0); - - Opal.def(self, '$get_strange_habit_fantastic', $FutariSousa_get_strange_habit_fantastic$20 = function $$get_strange_habit_fantastic() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "やめろと言われていることをする"], [2, "しばらく姿を消していたが戻って来た"], [3, "予想もつかないところ(地中や空中など)から登場する"], [4, "何かを思いついて突然走り出す"], [5, "ふがいない自分を責める"], [6, "知らないうちに事件の謎を一つ解いていた"], [7, "事件について分かった様子だが誰にも教えない"], [8, "置き手紙やメールで報告をするも姿が見えない"], [9, "時計を見て、急に動き出した"], [10, "事件とは関係なさそうな新聞の記事を読んでいる"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_strange_habit_fantastic$20.$$arity = 0); - - Opal.def(self, '$get_strange_habit_inspiration', $FutariSousa_get_strange_habit_inspiration$21 = function $$get_strange_habit_inspiration() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "食事をとっていたら急に謎が解ける"], [2, "助手との何気ない会話から急に謎が解ける"], [3, "聞こえてきた会話から急に謎が解ける"], [4, "風呂に入っていたら急に謎が解ける"], [5, "夢の中で急に謎が解ける"], [6, "風が吹いて飛んできた物で謎が解ける"], [7, "本を読んでいたら事件のヒントが見つかる"], [8, "現場を再び訪れてひらめく"], [9, "資料を確認している最中にひらめく"], [10, "関係者と会話をしている最中にひらめく"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_strange_habit_inspiration$21.$$arity = 0); - - Opal.def(self, '$get_strange_habit_emotion', $FutariSousa_get_strange_habit_emotion$22 = function $$get_strange_habit_emotion() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "急に泣く"], [2, "急に怒る"], [3, "急に笑いだす"], [4, "急にハイテンションになる"], [5, "急に喜ぶ"], [6, "急に叫ぶ"], [7, "急にニヤニヤし始める"], [8, "急にこの事件の悲しさを語る"], [9, "淡々と物事を進める"], [10, "ロボットのように決められたことだけをやる"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_strange_habit_emotion$22.$$arity = 0); - - Opal.def(self, '$get_event_scene', $FutariSousa_get_event_scene$23 = function $$get_event_scene() { - var self = this, table = nil; - - - table = ["気になるもの(P.165)\n 事件の起きた現場は、まだ残されている。\n ここで起きた“何か”は、霧の向こうに隠されていた。\n その霧に手を突っ込む者たちがいる。", "煙たがられる(P.166)\n 刑事が一人、現場を熱心に見て回っている。\n この事件の担当を任された刑部正義という男だ。\n 彼は、PCたちの顔を見るなり、顔をしかめた。歓迎されていない。", "聞き込み(P.167)\n PCたちは、現場付近を通りがかったり、事件を目撃したりした人物がいないか探し回っていた。\n しかし、どこで何を聞いても、それらしい手がかりはない。\n そろそろ、足に疲労が蓄積してきた。", "頑なな関係者(P.168)\n 事件現場に、とある人物が現れた。\n 探偵たちは、神妙な顔で現場を見つめていたその人物が気になって、声をかける。\n その人物は、自らを被害者の関係者と名乗った……。", "現場徹底調査!(P.169)\n 事件現場に残された証拠は、あらかた見つけた。\n ……はたして、本当にそうだろうか?\n あらゆる角度から調査と検証をし、現場に残されたものはないか、調べることになった。", "逃げた人物(P.170)\n 脱兎のごとく、誰かが現場から逃げている。\n その人物の走り方、焦り方は普通ではなかった。\n これは、何かを知っている。あるいは、何かを持ち去った可能性がある。\n PCたちは、追いかけ始めた。"]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_get_event_scene$23.$$arity = 0); - - Opal.def(self, '$get_event_why', $FutariSousa_get_event_why$24 = function $$get_event_why() { - var self = this, table = nil; - - - table = ["移動ルート(P.171)\n この道を通ったとき、あの人は何を思っただろうか?\n この道を通った時、あの人は何をしなければならなかったのか?\n 事件関係者の足取りには、事件に繋がる何かが残されている。\n そう信じて、道を歩く。", "自分なら……(P.172)\n 探偵と助手が事件について語り合っていた。\n 話のお題は、「この状況で、自分が犯人ならどうするか」。\n その仮定は、ヒントを与えてくれるかもしれない。", "謎のメッセージ(P.173)\n それは、謎の言葉だった。\n ただの文字列かもしれないし、意味不明な言葉かもしれない。\n 事件に関わる場所にあったからといって、事件に関わっているとは限らない。\n だけど、これは事件に関わっている。そう直感が告げている。", "事件のおさらい(P.174)\n ホワイトボード、黒板、ノート。\n なんでもいいから、書くものが必要だ。\n 今から、事件についてまとめるのだから。", "怪しい人物は?(P.175)\n 探偵たちは、一人の人物を追っている。\n その人物は、事件に繋がる何かを持っている。そういう確信があった。\n さて、実際のところ、彼は何者なのだろうか?", "被害者の視点(P.176)\n 被害者の身に何が起こったのか。\n 被害者は何を見たのか。\n そのヒントは、被害者自身が知っているはずだ。"]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_get_event_why$24.$$arity = 0); - - Opal.def(self, '$get_event_npc', $FutariSousa_get_event_npc$25 = function $$get_event_npc() { - var self = this, table = nil; - - - table = ["事件の映像(P.177)\n PCたちは目を細めて、映像を眺めている。\n それは、偶然にも現場で撮られたものだった。\n 果たして、真実はこの映像の中に、映っているのだろうか?", "変わった目撃者(P.178)\n 探偵たちは捜査の結果、事件に関する何かを見たという目撃者を見つける。\n しかし、その人物は目撃証言を渋った。どうしてだろうか?", "専門家(P.179)\n 調査中、どうしても専門的な知識が必要な場面が出てくる。\n 今がその時であり、探偵たちはどうしようかと悩んでいた。", "情報屋(P.180)\n メールソフトに連絡が入った。\n 連絡を入れてきたのは、界隈では有名な情報屋だった。\n その情報屋にかかれば、手に入らない情報はないという。\n さて、どうしようか。", "関係者と一緒に(P.181)\n 事件関係者の一人が、突然協力を持ちかけてきた。\n どうやら、その人もこの事件には思うところがあるらしい。", "素人推理(P.182)\n 事件関係者の前で、ゲストNPCが推理を披露している。\n だけど、その推理は穴だらけで……。"]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_get_event_npc$25.$$arity = 0); - - Opal.def(self, '$get_event_coming', $FutariSousa_get_event_coming$26 = function $$get_event_coming() { - var self = this, table = nil; - - - table = ["不審な電話(P.183)\n 突然、電話が鳴り響いた。\n その電話は調査を進展させることになるが……。\n 同時に、新たな謎を残した。", "今は余暇を(P.184)\n 果報は寝て待て。\n 待てば海路の日和あり。\n ということで、ひとまずたまり場にいる。\n 果たして、事態は好転するのだろうか?", "道端でばったり(P.185)\n 犬も歩けば棒に当たる。\n この言葉には、幸運にぶつかるという意味も、災難に当たるという意味も込められている。\n では、探偵と助手が歩いたら、何に当たるのだろうか?", "ひらめきの瞬間(P.186)\n ふとしたきっかけで、探偵はひらめくことがある。\n 今回は、一体何がきっかけだったのだろうか?", "知り合いから(P.187)\n 事件捜査の手がかりを持ってきたのは、知り合いだった。\n 持つべきものは友。\n と言いたいところだが……。", "探偵たちのピンチ(P.188)\n 捜査は突然ストップした。\n その原因はわかっている。\n 原因を取り除かなければ、事件の調査どころではない。"]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_get_event_coming$26.$$arity = 0); - - Opal.def(self, '$get_event_vs', $FutariSousa_get_event_vs$27 = function $$get_event_vs() { - var self = this, table = nil; - - - table = ["容疑者の嘘(P.189)\n 人は、何か後ろめたいことがあったとき、嘘をつく。\n この容疑者は嘘をついている。\n なら、何を隠しているのだろうか?", "ゆさぶり(P.190)\n その容疑者は、何かを隠していた。\n 目立った嘘をついているわけではない。\n だけれども、何かを隠している。探偵には、そう見えた。", "外見からの推理(P.191)\n 少しだけ、話をした。\n 少しだけ、その姿を見た。\n 少しだけ、その人を知った。\n それだけで、探偵という生き物は十を知ってしまう。そういうものなのだ。", "直接尋ねる(P.192)\n ここにきて、探偵と助手は大胆な手に出た。\n 容疑者に対して、事件の具体的なところまで突っ込んだ質問をしたのだ。\n それに対して、容疑者は……。", "脅される(P.193)\n どうやら、自分たちは脅されているようだ。", "鬼の居ぬ間に(P.194)\n その容疑者の元を訪ねたとき、偶然にも席をはずしていた。\n これはチャンス。\n そう思ってしまうのが、探偵の悲しい性だ。"]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_get_event_vs$27.$$arity = 0); - - Opal.def(self, '$get_obstruction_table', $FutariSousa_get_obstruction_table$28 = function $$get_obstruction_table() { - var self = this, table = nil; - - - table = [[11, "探偵と助手が警察にマークされる"], [12, "探偵の気まぐれ"], [13, "探偵のやる気"], [14, "探偵の奇行に耐えられなくなる"], [15, "探偵が奇異の眼に晒される"], [16, "探偵が疲れる"], [22, "探偵と助手が不審者に間違われる"], [23, "助手がパートナーに信頼されていないと思う"], [24, "探偵に助手がついていけない"], [25, "助手の苦労がいつも以上に大きい"], [26, "助手の捜査だけがうまくいかない"], [33, "捜査のための資金がない"], [34, "世間の眼が厳しい"], [35, "警察から疎ましく思われる"], [36, "関係者に協力してもらえない"], [44, "捜査してはいけないと圧力がかかる"], [45, "犯人による妨害"], [46, "犯人による裏工作"], [55, "植木鉢や鉄骨など、不自然に危険な物が飛んでくる"], [56, "何者かが探偵と助手に襲い掛かる"], [66, "偶然が積み重なってうまくいかない"]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_get_obstruction_table$28.$$arity = 0); - - Opal.def(self, '$get_abnormal_condition', $FutariSousa_get_abnormal_condition$29 = function $$get_abnormal_condition() { - var self = this, table = nil; - - - table = ["すれ違い", "探偵の暴走", "喧嘩", "迷子", "悪い噂", "注目の的"]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_get_abnormal_condition$29.$$arity = 0); - - Opal.def(self, '$get_eyewitness_table', $FutariSousa_get_eyewitness_table$30 = function $$get_eyewitness_table() { - var self = this, table = nil; - - - table = ["遊び相手が欲しい若者。判定技能:≪流行≫", "物覚えが悪い人。判定技能:なし", "忙しい人。判定技能:≪ビジネス≫", "犯人の知り合い。判定技能:≪説得≫", "探偵(警察)嫌い。判定技能:≪嘘≫", "反社会主義者。判定技能:≪突破≫"]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_get_eyewitness_table$30.$$arity = 0); - - Opal.def(self, '$get_wrapped_in_mystery_table', $FutariSousa_get_wrapped_in_mystery_table$31 = function $$get_wrapped_in_mystery_table() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "真犯人とは別の人間が犯人にされてしまい、実刑を食らってしまった。その証拠はないが、そう直感できる。"], [2, "解決されないまま時が過ぎ、やがて事件のことは忘れられた。探偵と助手、それから事件関係者だけが覚えている。"], [3, "被害者遺族や関係者は悲しみに暮れている。探偵と助手は、それを黙ってみていることしかできない。あのとき、犯人を捕まえていれば……。"], [4, "警察によって、犯人が検挙された。だけど、その人が本当に犯人かどうかはわからない。探偵も、何とも言えないようだ。"], [5, "証拠がなくなってしまっている。あれさえあれば、事件の調査を再開できるのに……。犯人の仕業かどうかすら、わからない。"], [6, "関係者がいなくなってしまた。その後、消息も不明だ。いったい何を思って消えたのだろうか? ともかく、調査はできなくなった。"], [7, "関係者から嫌われてしまい、近寄ることすらできなくなった。探偵と助手は揃って出禁になってしまったようだ。これでは、調査ができない。"], [8, "助手はときどき、被害者の関係者と会っている。彼らの話を聞いて、彼らの感情を受け止めているようだ。"], [9, "探偵と助手は機会を見つけては、事件を再調査している。しかし、確かな証拠は見つからないまま時が過ぎていく。"], [10, "探偵は直感によって、真犯人を突き止めた。だが、真犯人を捕まえるための証拠がない。犯人を告発することができず、歯噛みをした。"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_wrapped_in_mystery_table$31.$$arity = 0); - - Opal.def(self, '$get_background_detective_destiny', $FutariSousa_get_background_detective_destiny$32 = function $$get_background_detective_destiny() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "『名探偵の先祖(真)』自分の先祖に著名な探偵がいる。その名を出せば、誰もが知るような大人物だ。自分はその血を濃く引いているようで、探偵としての才能を存分に発揮している。"], [2, "『名探偵の先祖(想)』自分の先祖は著名な探偵だ。しかし、その活躍は「フィクション」として語られている。その人物は実在しないと言われているが……それは真実ではない。自分がその血を引いているのだから。"], [3, "『親が世界的探偵』自分の親は、世界的に名の知れた名探偵だ。数々の難事件も解決している。自分にもその血が流れていて、事件に対する鋭い洞察力を受け継ぐことになった。"], [4, "『街の名探偵』自分の親は、街ではよく名の知れた名探偵だ。街の人々から愛され、頼りにされていた。自分もその血を引いているのか、探偵として活動する力が備わっている。"], [5, "『推理作家』自分を育てた人物は、著名な推理作家であった。その思考能力は自分にも継がれており、トリックを暴く力は探偵並みにあると言っていいだろう。"], [6, "『育ての親』自分を育ててくれた人物は、事件を解決に導いたことのある人物である。その人物の教えを受けて、自分は探偵の才を開花させた。"], [7, "『堕ちた名探偵』かつて、自分の親はあらゆる事件を解決し、名探偵として有名だった。しかし、今では優れた思考能力を悪用し、人々を駒のように扱っている。能力を引き継いだ自分もいつかはそうなるのだろうか?"], [8, "『大悪人の血』世間を騒がせた大悪党や大怪盗。その血が自分にも流れている。故に悪人の思考をトレースすることができ、結果として名探偵のようにふるまえる。"], [9, "『隠された血筋』どういう訳か、自分のルーツは抹消されている。自分が何者なのかすら、わからない。ただ、自分には事件を解決できる力があって、それがルーツに関係していると直感できる。"], [10, "『クローン』自分は有名な名探偵のDNAから生まれた存在だ。そのためか、名探偵の力は生まれながらに備わっていた。"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_background_detective_destiny$32.$$arity = 0); - - Opal.def(self, '$get_background_detective_genius', $FutariSousa_get_background_detective_genius$33 = function $$get_background_detective_genius() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "『超エリート』自分はエリートとして活躍すべく、あらゆる分野の訓練を行った。そして、望まれるままに優秀な人間となった。"], [2, "『瞬間記憶能力』見たものはすべて頭の中にインプットされる。そして、決して忘れない。自分はそういう能力を備えている。"], [3, "『知識の泉』頭の中にある引き出しの中には、あらゆる知識が収められている。つまり、知らないことはないということだ。"], [4, "『スパルタ教育』厳しい教育を受け、その結果知識を得ることができた。その代わり、少し変わった思考方法になってしまったが……。大したことではないだろう。"], [5, "『既に名探偵』既に幾多の事件を解決している天才である。数々の難事件も、自分の手腕で解決してきた。その傍らには、パートナーの姿もあった。"], [6, "『憧れの背中』自分には憧れている相手がいた。その存在に追いつくために、努力をし、今の能力を手に入れた。その人物は、今は……。"], [7, "『ライバル』自分と競い合っていたライバルがいる。能力としては、ほぼ互角だった。競い合いの中で、自分の能力は磨かれていったのである。"], [8, "『かつての名探偵』かつては、あらゆる事件を解決に導いた天才であった。しかし、今は事件解決に消極的である。事件を遠ざけたいと思う何かがあったのだ。"], [9, "『孤立した名探偵』自分は天才的な能力を持って数多の事件を解決した名探偵である。それ故に疎まれ、恐れられ、世間や組織の中で孤立をしてしまっている。"], [10, "『人工名探偵』自分は何者かによって軟禁されて探偵知識を詰め込まれた、「人口名探偵」だ。名探偵になるべくして育てられた自分は、その能力を期待通りに発揮することができる。"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_background_detective_genius$33.$$arity = 0); - - Opal.def(self, '$get_background_detective_mania', $FutariSousa_get_background_detective_mania$34 = function $$get_background_detective_mania() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "『サスペンスマニア』自分はサスペンスもののフィクションや、実在する事件に対して非常に強い関心を寄せている。ため込んだトリックの知識を活かすことができる機会を窺っている。"], [2, "『死体マニア』自分は死体に対して強い関心を寄せている。死体の状態や詳細を知ることによって、強い興奮を覚えるという性質なのだ。困ったものだ。"], [3, "『科学マニア』科学によって解明できないことはない。自分はそう考えているし、そのために能力を磨いてきた。人の起こす事件であれ、科学はすべてを見通すことができるだろう。"], [4, "『いわゆるオタク』ゲームや漫画などで得た知識というのは、案外バカにならないものだ。自分はゲームを通じて様々な知識をため込んでおり、それを応用することであらゆる事件を解決する。"], [5, "『人間マニア』自分は人間が好きだ。それ故に、観察もしている。行動に当人もわからない理由があることも知っている。事件も、どうしてそんなことを起こしたのかに興味がある。"], [6, "『書物マニア』書物には、あらゆることが書かれている。少なくとも自分はそう考えているし、その証拠に本の知識を応用することで、難事件も解決できる。紙上の名探偵のように。"], [7, "『オカルトマニア』オカルトや超常現象を信じている。それ故に、インチキを見破る術も知っているし、許せないと感じている。それが、どういうわけか難事件の解決にも繋がる。不思議だ。"], [8, "『探偵マニア』古今東西、様々な探偵がいる。それについて調べていくうちに、自分もまた探偵としての能力が備わった。"], [9, "『暴走する知識欲』自分は一つのことのマニアであるが、それから派生した物の知識もよく知っている。自分の知識欲は、それからさらに派生したものまで及ぶ。"], [10, "『正義のマニア』自分が信奉している何か(書物や科学など)が、事件に関わっているとなると、居ても立っても居られない。マニアとして、その謎を解明しなければならない。"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_background_detective_mania$34.$$arity = 0); - - Opal.def(self, '$get_background_assistant_justice', $FutariSousa_get_background_assistant_justice$35 = function $$get_background_assistant_justice() { - var self = this, table = nil; - - - table = ["『お人よし』自分は他者からよくお人よしと言われている。そのため、人に頼まれて事件に絡むことがよくあった。だから、人の悩みを解決できる能力があるパートナーと一緒にいる。", "『許せない』自分は事件の被害者に対して入れ込むタイプだ。被害者の気持ちを考えると、やりきれない思いと共に、犯人を許せないという気持ちが湧いてくる。だから、犯人を追うためにパートナーが必要だ。", "『納得したい』自分が事件に対して首を突っ込むのは、自分の中に納得が欲しいからだ。事件を通じて何らかの解答を見つけるために、正義を行っている。パートナーは、そのために必要な人間だ。", "『利用している』どんな手段を使ってでも、事件を解決するのが正しいと自分は考えている。そのための道具として、パートナーを使っているだけだ。", "『頼れる協力者』パートナーのことを頼れる協力者であると感じている。パートナーは自分が困ったとき、迷ったときに、答えを示してくれる人間だと思っている。相手がどう思っていようが、それは変わらない。", "『正義の同志』パートナーも、一緒に正義のために事件解決をしてくれている。自分はそう感じている。思い込んでいるだけかもしれないが、その思い込みは止められない。ひょっとしたら自分の方がパートナーを振り回しているのかも。"]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_get_background_assistant_justice$35.$$arity = 0); - - Opal.def(self, '$get_background_assistant_passion', $FutariSousa_get_background_assistant_passion$36 = function $$get_background_assistant_passion() { - var self = this, table = nil; - - - table = ["『能力にほれ込んだ』自分はパートナーの事件に関する能力にほれ込んだ。その鋭い洞察力や、推理力、知識の深さ。すべてが自分を魅了している。", "『人柄にほれ込んだ』自分がパートナーと組んでいるのは、人格の面が大きい。一見わかりづらいところもあるが、隠された本質に自分はほれ込んでいる。", "『一目惚れ』はじめて会ったときから、パートナーのことが気になっていた。その能力もさることながら、直感めいたものを感じたのだ。だから一緒にいる。", "『ウマが合った』自分とパートナーは話が合う。二人なら盛り上がれるし、二人ならなんでもできる。そう思っている。……自分がそう思っているだけかもしれないが。", "『対立』パートナーと自分は対立している。それでも一緒にいるのは、パートナーのことを理解するためだ。……いつか、パートナーを倒す手段を見つけるために。", "『放っておけない』パートナーのことを放っておくと何をしでかすかわからない。だから、自分が見張っていないといけない。そう感じた。"]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_get_background_assistant_passion$36.$$arity = 0); - - Opal.def(self, '$get_background_assistant_involved', $FutariSousa_get_background_assistant_involved$37 = function $$get_background_assistant_involved() { - var self = this, table = nil; - - - table = ["『一方的に気に入られた』パートナーから、一方的に気に入られている。どうしてそうなったのかはわからないが、そういうものらしい。一緒にいるのは、不本意なのだけど……。", "『リアクション要員』パートナーによると、自分はリアクションを期待されているらしい。事件を解決したときや、何らかの驚きがあったときに見せる反応が楽しいのだとか。", "『過去のツケ』過去に、パートナーに秘密や弱味を握られた。それ以来、パートナーの手伝いをさせられている。まだ、逃げられていない。", "『必要な人材』パートナーに、自分が必要だと頼まれた。だから、一緒に事件を解決している。どうして自分が必要なのかは、まだわからない。", "『親しい人』パートナーにとって自分は、親しい人物だ。幼馴染や友人、親戚など。それ故に、昔から振り回されているし、これからも振り回されるだろう。", "『偶然の積み重ね』パートナーが事件に直面するたびに居合わせる。それが繰り返されるうちに、いつの間にか親しくなっていた。今では、一緒にいることも多い。"]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_get_background_assistant_involved$37.$$arity = 0); - - Opal.def(self, '$get_height_table', $FutariSousa_get_height_table$38 = function $$get_height_table() { - var self = this, table = nil; - - - table = ["非常に高い", "高め", "平均的", "低め", "非常に低い", "パートナーより少し高い/少し低い"]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_get_height_table$38.$$arity = 0); - - Opal.def(self, '$get_base_table', $FutariSousa_get_base_table$39 = function $$get_base_table() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "PCが働いている職場"], [2, "静かな雰囲気の喫茶店"], [3, "騒がしい雰囲気の居酒屋"], [4, "探偵活動のために借りた事務所"], [5, "PCのうち、どちらかの家"], [6, "行きつけの料理屋"], [7, "移動に使う車の中"], [8, "知り合いから譲り受けた倉庫"], [9, "いつもパートナーと会う交差点"], [10, "二人だけが知っている秘密の場所"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_base_table$39.$$arity = 0); - - Opal.def(self, '$get_guest_relation_table', $FutariSousa_get_guest_relation_table$40 = function $$get_guest_relation_table() { - var self = this, table = nil; - - - table = [[11, "昔のバディ"], [12, "友人"], [13, "親友"], [14, "顔見知り"], [15, "戦友"], [16, "腐れ縁"], [22, "過去に何かあった"], [23, "いとこ"], [24, "友達の友達"], [25, "遠い親戚"], [26, "近所の人"], [33, "迷惑をかけた"], [34, "師匠"], [35, "ネットで知り合った"], [36, "偶然知り合った"], [44, "前に一度だけ会った"], [45, "パートナーのことで相談された"], [46, "パートナーについて質問された"], [55, "幼馴染"], [56, "パートナーを追っている"], [66, "一方的に知られている"]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_get_guest_relation_table$40.$$arity = 0); - - Opal.def(self, '$get_memorial_item_table', $FutariSousa_get_memorial_item_table$41 = function $$get_memorial_item_table() { - var self = this, table = nil; - - - table = [[11, "たまり場にずっと置いてある宅配ピザの箱"], [12, "一緒に解決した事件のファイル"], [13, "二人が出会うきっかけになった本"], [14, "二人で遊んだチェスボードや将棋盤"], [15, "二人の思い出が詰まったゲーム機"], [16, "自分たちを写した写真"], [22, "二人の捜査ノート"], [23, "一緒に使った掃除道具"], [24, "被害者から贈られたぬいぐるみ"], [25, "二人で一緒に座ったソファー"], [26, "いつも座っている椅子"], [33, "よく使う電話機"], [34, "二人の時を刻んだ時計"], [35, "いつも置いてある机"], [36, "事件の解説をしたホワイトボードや黒板"], [44, "なぜかある人体模型"], [45, "お気に入りのコップ"], [46, "事件解決に使った小道具"], [55, "一緒に飲む約束をしたお酒やジュース"], [56, "お気に入りの料理"], [66, "二人だけの秘密の交換日記"]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_get_memorial_item_table$41.$$arity = 0); - - Opal.def(self, '$get_job_table_66', $FutariSousa_get_job_table_66$42 = function $$get_job_table_66() { - var self = this, table = nil; - - - table = [[11, "パートナーと同じ"], [12, "フリーター"], [13, "学生(優秀)"], [14, "学生(普通)"], [15, "学生(不真面目)"], [16, "教師・講師"], [22, "パートナーと同じ"], [23, "会社員"], [24, "主夫・主婦"], [25, "自営業者"], [26, "ディレッタント"], [33, "パートナーと同じ"], [34, "刑事(新人)"], [35, "刑事(エリート)"], [36, "公務員"], [44, "パートナーと同じ"], [45, "探偵助手"], [46, "探偵"], [55, "パートナーと同じ"], [56, "無職"], [66, "パートナーと同じ"]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_get_job_table_66$42.$$arity = 0); - - Opal.def(self, '$get_job_table_10', $FutariSousa_get_job_table_10$43 = function $$get_job_table_10() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "ディレッタント"], [2, "刑事"], [3, "探偵(有名)"], [4, "探偵(不人気)"], [5, "探偵助手"], [6, "研究者"], [7, "自営業者"], [8, "会社員"], [9, "作家"], [10, "学生"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_job_table_10$43.$$arity = 0); - - Opal.def(self, '$get_fashion_table_66', $FutariSousa_get_fashion_table_66$44 = function $$get_fashion_table_66() { - var self = this, table = nil; - - - table = [[11, "高級志向"], [12, "スーツ"], [13, "カジュアルウェア"], [14, "フォーマルウェア"], [15, "スポーツウェア"], [16, "リーズナブル"], [22, "サングラス"], [23, "Yシャツ"], [24, "Tシャツ"], [25, "ネックレス"], [26, "帽子"], [33, "ミリタリー風"], [34, "ピアス"], [35, "ジャージ"], [36, "エクステ"], [44, "和服"], [45, "指輪"], [46, "チョーカー"], [55, "サンダル"], [56, "ジャンパー"], [66, "ファッションにこだわりがない"]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_get_fashion_table_66$44.$$arity = 0); - - Opal.def(self, '$get_fashion_table_10', $FutariSousa_get_fashion_table_10$45 = function $$get_fashion_table_10() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "スーツ"], [2, "インバネスコート"], [3, "白衣"], [4, "グローブ"], [5, "パイプ"], [6, "チョッキ"], [7, "和服"], [8, "カラフルな色使い"], [9, "パートナーと同じ"], [10, "ファッションにこだわりがない"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_fashion_table_10$45.$$arity = 0); - - Opal.def(self, '$get_like_dislike_table_66', $FutariSousa_get_like_dislike_table_66$46 = function $$get_like_dislike_table_66() { - var self = this, table = nil; - - - table = [[11, "死体"], [12, "犬"], [13, "猫"], [14, "サスペンス"], [15, "物語"], [16, "アイドル"], [22, "犯罪"], [23, "オカルト"], [24, "健康"], [25, "ジャンクフード"], [26, "高級な食事"], [33, "ファッション"], [34, "権力"], [35, "名誉"], [36, "友情"], [44, "おやつ"], [45, "地元"], [46, "家族"], [55, "警察"], [56, "音楽"], [66, "銃"]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_get_like_dislike_table_66$46.$$arity = 0); - - Opal.def(self, '$get_like_dislike_table_10', $FutariSousa_get_like_dislike_table_10$47 = function $$get_like_dislike_table_10() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "犯罪"], [2, "謎"], [3, "探偵"], [4, "パートナー"], [5, "パートナーの好きなもの"], [6, "パートナーの嫌いなもの"], [7, "特になし"], [8, "チェスや将棋などボードゲーム"], [9, "人間"], [10, "知らないこと"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_like_dislike_table_10$47.$$arity = 0); - - Opal.def(self, '$get_feeling_table_66', $FutariSousa_get_feeling_table_66$48 = function $$get_feeling_table_66() { - var self = this, table = nil; - - - table = [[11, "顔"], [12, "雰囲気"], [13, "外見"], [14, "捜査方法"], [15, "立ち振る舞い"], [16, "匂い"], [22, "存在そのもの"], [23, "言葉遣い"], [24, "趣味"], [25, "なんとなく"], [26, "他人への態度"], [33, "金銭感覚"], [34, "生活習慣"], [35, "技能"], [36, "服装"], [44, "喋るタイミング"], [45, "倫理観"], [46, "自分への態度"], [55, "距離感"], [56, "自分との関係"], [66, "生活習慣"]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_get_feeling_table_66$48.$$arity = 0); - - Opal.def(self, '$get_feeling_table_10', $FutariSousa_get_feeling_table_10$49 = function $$get_feeling_table_10() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "人間性"], [2, "趣味"], [3, "技能"], [4, "なんとなく"], [5, "感覚"], [6, "雰囲気"], [7, "自分が知らないところ"], [8, "自分がよく知っているところ"], [9, "自分への態度"], [10, "自分との関係"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_feeling_table_10$49.$$arity = 0); - - Opal.def(self, '$get_name_to_call_table_66', $FutariSousa_get_name_to_call_table_66$50 = function $$get_name_to_call_table_66() { - var self = this, table = nil; - - - table = [[11, "ダーリン、ハニー"], [12, "呼び捨て"], [13, "~くん"], [14, "~さん"], [15, "~ちゃん"], [16, "~様、~殿"], [22, "~先輩、~後輩"], [23, "相棒"], [24, "あんた"], [25, "あなた"], [26, "先生、センセ"], [33, "物で例える"], [34, "貴様、貴殿"], [35, "てめえ、おまえ"], [36, "あだ名"], [44, "ユー"], [45, "お前さん"], [46, "探偵くん、探偵さん"], [55, "親友"], [56, "パートナーと同じ"], [66, "毎回呼び方が変わる"]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_get_name_to_call_table_66$50.$$arity = 0); - return (Opal.def(self, '$get_name_to_call_table_10', $FutariSousa_get_name_to_call_table_10$51 = function $$get_name_to_call_table_10() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "呼び捨て"], [2, "~くん"], [3, "~さん"], [4, "~ちゃん"], [5, "~様、~殿"], [6, "相棒"], [7, "あんた、あなた"], [8, "キミ"], [9, "愛しの~"], [10, "あだ名"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_get_name_to_call_table_10$51.$$arity = 0), nil) && 'get_name_to_call_table_10'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/FutariSousa_Korean.js b/src/assets/dicebot/FutariSousa_Korean.js deleted file mode 100644 index 4a6a49af2..000000000 --- a/src/assets/dicebot/FutariSousa_Korean.js +++ /dev/null @@ -1,619 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$===', '$to_i', '$last_match', '$get_dt', '$get_as', '$get_strange_habit_random', '$get_strange_habit_from_mouth', '$get_strange_habit_bull_through', '$get_strange_habit_play_innocent', '$get_strange_habit_engrossed', '$get_strange_habit_with_partner', '$get_strange_habit_do_something', '$get_strange_habit_fantastic', '$get_strange_habit_inspiration', '$get_strange_habit_emotion', '$get_event_scene', '$get_event_why', '$get_event_npc', '$get_event_coming', '$get_event_vs', '$get_obstruction_table', '$get_abnormal_condition', '$get_eyewitness_table', '$get_wrapped_in_mystery_table', '$get_background_detective_destiny', '$get_background_detective_genius', '$get_background_detective_mania', '$get_background_assistant_justice', '$get_background_assistant_passion', '$get_background_assistant_involved', '$get_height_table', '$get_base_table', '$get_guest_relation_table', '$get_memorial_item_table', '$get_job_table_66', '$get_job_table_10', '$get_fashion_table_66', '$get_fashion_table_10', '$get_feeling_table_66', '$get_feeling_table_10', '$get_like_dislike_table_66', '$get_like_dislike_table_10', '$get_name_to_call_table_66', '$get_name_to_call_table_10', '$times', '$roll', '$<<', '$get_dt_result', '$join', '$max', '$<=', '$include?', '$>=', '$get_as_result', '$assoc', '$respond_to?', '$+', '$call', '$lambda', '$getAddRoll', '$match', '$rollDiceCommand', '$nil?', '$get_table_by_number', '$get_table_by_1d6', '$get_table_by_d66_swap']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'FutariSousa_Korean'); - - var $nesting = [self].concat($parent_nesting), $FutariSousa_Korean_initialize$1, $FutariSousa_Korean_rollDiceCommand$2, $FutariSousa_Korean_get_dt$3, $FutariSousa_Korean_get_dt_result$5, $FutariSousa_Korean_get_as$6, $FutariSousa_Korean_get_as_result$8, $FutariSousa_Korean_getTableResult$9, $FutariSousa_Korean_getAddRollProc$10, $FutariSousa_Korean_getAddRoll$12, $FutariSousa_Korean_get_strange_habit_random$13, $FutariSousa_Korean_get_strange_habit_from_mouth$14, $FutariSousa_Korean_get_strange_habit_bull_through$15, $FutariSousa_Korean_get_strange_habit_play_innocent$16, $FutariSousa_Korean_get_strange_habit_engrossed$17, $FutariSousa_Korean_get_strange_habit_with_partner$18, $FutariSousa_Korean_get_strange_habit_do_something$19, $FutariSousa_Korean_get_strange_habit_fantastic$20, $FutariSousa_Korean_get_strange_habit_inspiration$21, $FutariSousa_Korean_get_strange_habit_emotion$22, $FutariSousa_Korean_get_event_scene$23, $FutariSousa_Korean_get_event_why$24, $FutariSousa_Korean_get_event_npc$25, $FutariSousa_Korean_get_event_coming$26, $FutariSousa_Korean_get_event_vs$27, $FutariSousa_Korean_get_obstruction_table$28, $FutariSousa_Korean_get_abnormal_condition$29, $FutariSousa_Korean_get_eyewitness_table$30, $FutariSousa_Korean_get_wrapped_in_mystery_table$31, $FutariSousa_Korean_get_background_detective_destiny$32, $FutariSousa_Korean_get_background_detective_genius$33, $FutariSousa_Korean_get_background_detective_mania$34, $FutariSousa_Korean_get_background_assistant_justice$35, $FutariSousa_Korean_get_background_assistant_passion$36, $FutariSousa_Korean_get_background_assistant_involved$37, $FutariSousa_Korean_get_height_table$38, $FutariSousa_Korean_get_base_table$39, $FutariSousa_Korean_get_guest_relation_table$40, $FutariSousa_Korean_get_memorial_item_table$41, $FutariSousa_Korean_get_job_table_66$42, $FutariSousa_Korean_get_job_table_10$43, $FutariSousa_Korean_get_fashion_table_66$44, $FutariSousa_Korean_get_fashion_table_10$45, $FutariSousa_Korean_get_like_dislike_table_66$46, $FutariSousa_Korean_get_like_dislike_table_10$47, $FutariSousa_Korean_get_feeling_table_66$48, $FutariSousa_Korean_get_feeling_table_10$49, $FutariSousa_Korean_get_name_to_call_table_66$50, $FutariSousa_Korean_get_name_to_call_table_10$51; - - self.$$prototype.special_dice = self.$$prototype.success_threshold = nil; - - Opal.const_set($nesting[0], 'ID', "FutariSousa:Korean"); - Opal.const_set($nesting[0], 'NAME', "둘이서 수사(후타리소우사)"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:둘이서 수사"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・판정용 커맨드\n" + "탐정용:【DT】…10면체 주사위를 2개 굴려 판정합니다.『유리』라면【3DT】, 『불리』라면【1DT】를 사용합니다.\n" + "조수용:【AS】…6면체 주사위를 2개 굴려 판정합니다. 『유리』라면【3AS】, 『불리』라면【1AS】를 사용합니다.\n" + "・각종표\n" + "【조사】\n" + "이상한 버릇 결정표 SHRD\n" + " 지껄이다표  SHFM/강압적인 수사표  SHBT/시치미 떼기표   SHPI\n" + " 사건에 몰두표 SHEG/파트너와……표  SHWP/무언가 하고 있다표 SHDS\n" + " 기상천외표  SHFT/갑작스런 번뜩임표 SHIN/희노애락표     SHEM\n" + "이벤트표\n" + " 현장에서  EVS/어째서? EVW/협력자와 함께 EVN\n" + " 상대쪽에서 EVC/VS용의자 EVV\n" + "조사의 장애표 OBT  변조표 ACT  목격자표 EWT  미제사건표 WMT\n" + "【설정】\n" + "배경표\n" + " 탐정 운명의 혈통  BGDD/천상의 재능  BGDG/마니아    BGDM\n" + " 조수 정의로운 사람 BGAJ/정렬적인 사람 BGAP/말려든 사람 BGAI\n" + "신장표 HT  아지트표 BT  관계표 GRT  추억의 물건 결정표 MIT\n" + "직업표A・B  JBT66・JBT10  패션 특징표A・B    FST66・FST10\n" + "감정표A・B  FLT66・FLT10  좋아하는 것/싫어하는 것표A・B LDT66・LDT10\n" + "호칭표A・B NCT66・NCT10\n"); - - Opal.def(self, '$initialize', $FutariSousa_Korean_initialize$1 = function $$initialize() { - var $iter = $FutariSousa_Korean_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $FutariSousa_Korean_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $FutariSousa_Korean_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.d66Type = 2; - self.success_threshold = 4; - return (self.special_dice = 6); - }, $FutariSousa_Korean_initialize$1.$$arity = 0); - self.$setPrefixes(["(\\d+)?DT", "(\\d+)?AS", "SHRD", "SHFM", "SHBT", "SHPI", "SHEG", "SHWP", "SHDS", "SHFT", "SHIN", "SHEM", "EVS", "EVW", "EVN", "EVC", "EVV", "OBT", "ACT", "EWT", "WMT", "BGDD", "BGDG", "BGDM", "BGAJ", "BGAP", "BGAI", "HT", "BT", "GRT", "MIT", "JBT66", "JBT10", "FST66", "FST10", "FLT66", "FLT10", "LDT66", "LDT10", "NCT66", "NCT10"]); - - Opal.def(self, '$rollDiceCommand', $FutariSousa_Korean_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, $b, self = this, output = nil, type = nil, diceText = nil, $case = nil, count = nil; - - - output = "1"; - type = ""; - diceText = ""; - $case = command; - if (/^(\d+)?DT$/i['$===']($case)) { - type = command; - count = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 2).$to_i(); - $b = self.$get_dt(count), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^(\d+)?AS$/i['$===']($case)) { - type = command; - count = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 2).$to_i(); - $b = self.$get_as(count), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHRD"['$===']($case)) { - type = "이상한 버릇 결정표"; - $b = self.$get_strange_habit_random(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHFM"['$===']($case)) { - type = "이상한 버릇・지껄이다표"; - $b = self.$get_strange_habit_from_mouth(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHBT"['$===']($case)) { - type = "이상한 버릇・강압적인 수사표"; - $b = self.$get_strange_habit_bull_through(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHPI"['$===']($case)) { - type = "이상한 버릇・시치미 떼기표"; - $b = self.$get_strange_habit_play_innocent(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHEG"['$===']($case)) { - type = "이상한 버릇・사건에 몰두표"; - $b = self.$get_strange_habit_engrossed(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHWP"['$===']($case)) { - type = "이상한 버릇・파트너와……표"; - $b = self.$get_strange_habit_with_partner(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHDS"['$===']($case)) { - type = "이상한 버릇・무언가 하고 있다표"; - $b = self.$get_strange_habit_do_something(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHFT"['$===']($case)) { - type = "이상한 버릇・기상천외표"; - $b = self.$get_strange_habit_fantastic(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHIN"['$===']($case)) { - type = "이상한 버릇・갑작스런 번뜩임표"; - $b = self.$get_strange_habit_inspiration(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SHEM"['$===']($case)) { - type = "이상한 버릇・희노애락표"; - $b = self.$get_strange_habit_emotion(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EVS"['$===']($case)) { - type = "현장에서/이벤트표"; - $b = self.$get_event_scene(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EVW"['$===']($case)) { - type = "어째서?/이벤트표"; - $b = self.$get_event_why(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EVN"['$===']($case)) { - type = "협력자와 함께/이벤트표"; - $b = self.$get_event_npc(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EVC"['$===']($case)) { - type = "상대쪽에서/이벤트표"; - $b = self.$get_event_coming(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EVV"['$===']($case)) { - type = "VS용의자/이벤트표"; - $b = self.$get_event_vs(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("OBT"['$===']($case)) { - type = "조사의 장애표"; - $b = self.$get_obstruction_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("ACT"['$===']($case)) { - type = "변조표"; - $b = self.$get_abnormal_condition(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EWT"['$===']($case)) { - type = "목격자표"; - $b = self.$get_eyewitness_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("WMT"['$===']($case)) { - type = "미제사건표"; - $b = self.$get_wrapped_in_mystery_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BGDD"['$===']($case)) { - type = "탐정・운명의 혈통 배경표"; - $b = self.$get_background_detective_destiny(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BGDG"['$===']($case)) { - type = "탐정・천성의 재능 배경표"; - $b = self.$get_background_detective_genius(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BGDM"['$===']($case)) { - type = "탐정・마니아 배경표"; - $b = self.$get_background_detective_mania(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BGAJ"['$===']($case)) { - type = "조수・정의로운 사람 배경표"; - $b = self.$get_background_assistant_justice(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BGAP"['$===']($case)) { - type = "조수・정렬적인 사람 배경표"; - $b = self.$get_background_assistant_passion(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BGAI"['$===']($case)) { - type = "조수・말려든 사람 배경표"; - $b = self.$get_background_assistant_involved(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("HT"['$===']($case)) { - type = "신장표"; - $b = self.$get_height_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BT"['$===']($case)) { - type = "아지트표"; - $b = self.$get_base_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("GRT"['$===']($case)) { - type = "관계표"; - $b = self.$get_guest_relation_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MIT"['$===']($case)) { - type = "추억의 물건 결정표"; - $b = self.$get_memorial_item_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("JBT66"['$===']($case)) { - type = "직업표A"; - $b = self.$get_job_table_66(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("JBT10"['$===']($case)) { - type = "직업표B"; - $b = self.$get_job_table_10(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FST66"['$===']($case)) { - type = "패션 특징표A"; - $b = self.$get_fashion_table_66(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FST10"['$===']($case)) { - type = "패션 특징표B"; - $b = self.$get_fashion_table_10(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FLT66"['$===']($case)) { - type = "감정표A"; - $b = self.$get_feeling_table_66(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FLT10"['$===']($case)) { - type = "감정표B"; - $b = self.$get_feeling_table_10(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("LDT66"['$===']($case)) { - type = "좋아하는 것/싫어하는 것표A"; - $b = self.$get_like_dislike_table_66(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("LDT10"['$===']($case)) { - type = "좋아하는 것/싫어하는 것표B"; - $b = self.$get_like_dislike_table_10(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("NCT66"['$===']($case)) { - type = "호칭표A"; - $b = self.$get_name_to_call_table_66(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;} - else if ("NCT10"['$===']($case)) { - type = "호칭표B"; - $b = self.$get_name_to_call_table_10(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b;}; - return "" + (type) + "(" + (diceText) + ") > " + (output); - }, $FutariSousa_Korean_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$get_dt', $FutariSousa_Korean_get_dt$3 = function $$get_dt(count) { - var $$4, self = this, diceList = nil, output = nil, diceText = nil; - - - diceList = []; - $send(count, 'times', [], ($$4 = function(){var self = $$4.$$s || this, $a, $b, dice = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - return diceList['$<<'](dice);}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - output = self.$get_dt_result(diceList); - diceText = diceList.$join(","); - return [output, diceText]; - }, $FutariSousa_Korean_get_dt$3.$$arity = 1); - - Opal.def(self, '$get_dt_result', $FutariSousa_Korean_get_dt_result$5 = function $$get_dt_result(diceList) { - var self = this, max = nil; - - - max = diceList.$max(); - if ($truthy($rb_le(max, 1))) { - return "펌블(변조를 받고, 조수의 마음고생이 1점 상승)"}; - if ($truthy(diceList['$include?'](self.special_dice))) { - return "스페셜(조수의 여유를 1점 획득)"}; - if ($truthy($rb_ge(max, self.success_threshold))) { - return "성공"}; - return "실패"; - }, $FutariSousa_Korean_get_dt_result$5.$$arity = 1); - - Opal.def(self, '$get_as', $FutariSousa_Korean_get_as$6 = function $$get_as(count) { - var $$7, self = this, diceList = nil, output = nil, diceText = nil; - - - diceList = []; - $send(count, 'times', [], ($$7 = function(){var self = $$7.$$s || this, $a, $b, dice = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - return diceList['$<<'](dice);}, $$7.$$s = self, $$7.$$arity = 0, $$7)); - output = self.$get_as_result(diceList); - diceText = diceList.$join(","); - return [output, diceText]; - }, $FutariSousa_Korean_get_as$6.$$arity = 1); - - Opal.def(self, '$get_as_result', $FutariSousa_Korean_get_as_result$8 = function $$get_as_result(diceList) { - var self = this, max = nil; - - - max = diceList.$max(); - if ($truthy($rb_le(max, 1))) { - return "펌블(변조를 받고, 조수의 마음고생이 1점 상승)"}; - if ($truthy(diceList['$include?'](self.special_dice))) { - return "스페셜(여유 2점과, 탐정의 조수를 향한 감정을 획득)"}; - if ($truthy($rb_ge(max, self.success_threshold))) { - return "성공(여유 1점과, 탐정의 조수를 향한 감정을 획득)"}; - return "실패"; - }, $FutariSousa_Korean_get_as_result$8.$$arity = 1); - - Opal.def(self, '$getTableResult', $FutariSousa_Korean_getTableResult$9 = function $$getTableResult(table, dice) { - var $a, $b, self = this, number = nil, text = nil, command = nil; - - - $b = table.$assoc(dice), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (command = ($a[2] == null ? nil : $a[2])), $b; - if ($truthy(command['$respond_to?']("call"))) { - text = $rb_plus(text, command.$call(self))}; - return [number, text]; - }, $FutariSousa_Korean_getTableResult$9.$$arity = 2); - - Opal.def(self, '$getAddRollProc', $FutariSousa_Korean_getAddRollProc$10 = function $$getAddRollProc(command) { - var $$11, self = this; - - return $send(self, 'lambda', [], ($$11 = function(){var self = $$11.$$s || this; - - return self.$getAddRoll(command)}, $$11.$$s = self, $$11.$$arity = 0, $$11)) - }, $FutariSousa_Korean_getAddRollProc$10.$$arity = 1); - - Opal.def(self, '$getAddRoll', $FutariSousa_Korean_getAddRoll$12 = function $$getAddRoll(command) { - var self = this, text = nil; - - - if ($truthy(/^\s/.$match(command))) { - return command}; - text = self.$rollDiceCommand(command); - if ($truthy(text['$nil?']())) { - return "" + " > " + (command) + " is NOT found."}; - return "" + " > \n " + (command) + " > " + (text); - }, $FutariSousa_Korean_getAddRoll$12.$$arity = 1); - - Opal.def(self, '$get_strange_habit_random', $FutariSousa_Korean_get_strange_habit_random$13 = function $$get_strange_habit_random() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "「이상한 버릇・지껄이다표」를 사용한다."], [2, "「이상한 버릇・강압적인 수사표」를 사용한다."], [3, "「이상한 버릇・시치미 떼기표」를 사용한다."], [4, "「이상한 버릇・사건에 몰두표」를 사용한다."], [5, "「이상한 버릇・파트너와……표」를 사용한다."], [6, "「이상한 버릇・무언가 하고 있다표」를 사용한다."], [7, "「이상한 버릇・기상천외표」를 사용한다."], [8, "「이상한 버릇・갑작스런 번뜩임표」를 사용한다."], [9, "「이상한 버릇・희노애락표」를 사용한다."], [10, "원하는「이상한 버릇표」를 사용한다."]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_strange_habit_random$13.$$arity = 0); - - Opal.def(self, '$get_strange_habit_from_mouth', $FutariSousa_Korean_get_strange_habit_from_mouth$14 = function $$get_strange_habit_from_mouth() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "맹렬하게 감사인사를 한다."], [2, "빈정거리는 투로 말해버린다."], [3, "상대의 말을 긍정한 뒤 부정한다."], [4, "히죽히죽 웃으며 사과한다."], [5, "상대의 말을 듣지 않고 자신만 말한다."], [6, "「이렇게는 생각할 수 없을까요?」"], [7, "「아니면, 뭔가 숨기고 있는 거라도 있나요?」"], [8, "「묘하네요.」"], [9, "「대충 알겠어요.」"], [10, "「잠자코 있어.」"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_strange_habit_from_mouth$14.$$arity = 0); - - Opal.def(self, '$get_strange_habit_bull_through', $FutariSousa_Korean_get_strange_habit_bull_through$15 = function $$get_strange_habit_bull_through() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "마음대로 수사대상의 가방이나 서랍을 연다."], [2, "경찰의 수사에 끼어든다."], [3, "수사를 위해 해킹이나 불법침입을 한다."], [4, "허가 받지 않은 곳에 들어간다."], [5, "경찰의 수사를 엿보거나 엿듣는다."], [6, "증거품을 허가 없이 해체한다."], [7, "수사대상을 속여 정보를 캐낸다."], [8, "마음대로 관계자의 소지품을 만진다."], [9, "증거품을 마음대로 들고 다닌다."], [10, "마음대로 감식을 시작한다."]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_strange_habit_bull_through$15.$$arity = 0); - - Opal.def(self, '$get_strange_habit_play_innocent', $FutariSousa_Korean_get_strange_habit_play_innocent$16 = function $$get_strange_habit_play_innocent() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "자신의 신분을 속이고 관계자에게 이야기를 듣는다"], [2, "정보를 숨기며 이야기를 듣는다"], [3, "파트너와 연기를 하며 정보를 캐내려 한다"], [4, "행인인 척하며 관계자의 이야기를 엿듣는다."], [5, "우연을 가장해 증거품을 손에 넣어버린다."], [6, "부자연스럽게 시치미를 뗀다."], [7, "관계자를 화나게 하는 연기를 하여 정보를 끌어낸다."], [8, "완곡하게 관계자를 위협한다"], [9, "물건을 잃어버렸다고 말하며 현장이나 증거품을 뒤진다."], [10, "관계자에게 유도 신문을 한다."]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_strange_habit_play_innocent$16.$$arity = 0); - - Opal.def(self, '$get_strange_habit_engrossed', $FutariSousa_Korean_get_strange_habit_engrossed$17 = function $$get_strange_habit_engrossed() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "파트너의 몸을 사용해 사건을 재현하려고 한다"], [2, "수수께끼를 푸는 것이 즐거워서 웃어 버린다"], [3, "먹지도 자지도 않고 수사를 하다 갑자기 쓰러진다"], [4, "생각을 하느라 누구의 목소리도 들리지 않는다."], [5, "사건의 관계도를 가까운 벽이나 바닥에 그리기 시작한다"], [6, "사건에 관계되는 말을 계속해서 말해나간다."], [7, "사건 해결 이외의 것은 전혀 생각하고 있지 않다."], [8, "사건의 흐름을 중얼중얼 말하기 시작한다."], [9, "사건 현장을 파고들어 조사를 한다."], [10, "식사중이라도, 상관 없이 사건 이야기를 한다."]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_strange_habit_engrossed$17.$$arity = 0); - - Opal.def(self, '$get_strange_habit_with_partner', $FutariSousa_Korean_get_strange_habit_with_partner$18 = function $$get_strange_habit_with_partner() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "파트너의 신뢰에 응석부린다."], [2, "파트너를 두고 먼저 가버린다."], [3, "파트너에게 사건에 대해 어떻게 생각하는지 질문한다."], [4, "파트너에게 자랑한다."], [5, "파트너에게 사건에 관한 퀴즈를 낸다."], [6, "파트너와 사소한 일로 싸움을 한다."], [7, "파트너에게 선생님 행세를 한다."], [8, "파트너가 따라오는 전제로 멋대로 움직인다."], [9, "파트너에 대해서 친절하고 정중하게 사건을 설명한다."], [10, "파트너의 귓가에 갑자기 말하기 시작한다."]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_strange_habit_with_partner$18.$$arity = 0); - - Opal.def(self, '$get_strange_habit_do_something', $FutariSousa_Korean_get_strange_habit_do_something$19 = function $$get_strange_habit_do_something() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "많은 양의 책을 읽고 있다."], [2, "좋아하는 음악을 큰 소리로 틀고 있다."], [3, "어떤 수식을 풀고 있다."], [4, "많은 양의 좋아하는 음식을 계속 먹고 있다."], [5, "계속 컴퓨터나 스마트폰 등의 화면과 마주보며 조사하고 있다."], [6, "작은 수수께끼를 풀고 있다."], [7, "체스나 장기 등을 두고 있다."], [8, "찻집 자리에 앉아 무언가를 기다리고 있다."], [9, "계속 잠들어 있다가 갑자기 일어난다."], [10, "잠시 아무 것도 하지 않는다."]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_strange_habit_do_something$19.$$arity = 0); - - Opal.def(self, '$get_strange_habit_fantastic', $FutariSousa_Korean_get_strange_habit_fantastic$20 = function $$get_strange_habit_fantastic() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "그만두라는 말을 듣고 있는 일을 한다."], [2, "잠시 사라졌다가 돌아온다."], [3, "예상치 못한 곳(땅 속이나 공중 등)에서 등장한다."], [4, "뭔가 생각나서 갑자기 달리기 시작한다."], [5, "한심한 자신을 비난한다."], [6, "모르는 사이에 사건의 수수께끼를 하나 풀고 있었다."], [7, "사건에 대해 알아차린 모양이지만 누구에게도 가르쳐 주지 않는다."], [8, "두고 가는 편지나 메일로 보고를 하면 모습이 보이지 않는다."], [9, "시계를 보고 갑자기 움직인다."], [10, "사건과는 관계 없을 것 같은 신문의 기사를 읽고 있다."]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_strange_habit_fantastic$20.$$arity = 0); - - Opal.def(self, '$get_strange_habit_inspiration', $FutariSousa_Korean_get_strange_habit_inspiration$21 = function $$get_strange_habit_inspiration() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "식사를 하고 있으면 갑자기 수수께끼가 풀린다."], [2, "조수와의 아무렇지도 않은 대화에서 갑자기 수수께끼가 풀린다."], [3, "들려온 대화로부터 갑자기 수수께끼가 풀린다."], [4, "목욕을 하고 있으면 갑자기 수수께끼가 풀린다."], [5, "꿈 속에서 갑자기 수수께끼가 풀린다."], [6, "바람이 불어 날아온 물건으로 수수께끼가 풀린다."], [7, "책을 읽다가 사건의 힌트가 발견된다."], [8, "현장을 다시 방문하니 번뜩인다."], [9, "자료를 확인하는 중에 번뜩인다."], [10, "관계자와 대화를 나누는 중에 번뜩이다."]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_strange_habit_inspiration$21.$$arity = 0); - - Opal.def(self, '$get_strange_habit_emotion', $FutariSousa_Korean_get_strange_habit_emotion$22 = function $$get_strange_habit_emotion() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "갑자기 운다."], [2, "갑자기 화낸다."], [3, "갑자기 웃기 시작한다."], [4, "갑자기 하이텐션이 된다."], [5, "갑자기 기뻐한다."], [6, "갑자기 소리친다."], [7, "갑자기 히죽거리기 시작한다."], [8, "갑자기 이 사건의 슬픔을 말한다."], [9, "담담하게 일을 진행한다."], [10, "로봇처럼 정해진 것만 한다."]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_strange_habit_emotion$22.$$arity = 0); - - Opal.def(self, '$get_event_scene', $FutariSousa_Korean_get_event_scene$23 = function $$get_event_scene() { - var self = this, table = nil; - - - table = ["신경쓰이는 것(P.165)\n 사건이 일어난 현장은 아직 남아 있다.\n 여기서 일어난 '무언가'는 안개 저편에 숨겨져 있었다.\n 그 안개에 손을 뻗는 자들이 있다.", "거북해하다(P.166)\n 한 형사가 현장을 열심히 둘러보고 있다.\n 이 사건의 담당을 맡은 오사카베 마사요시(刑部正義)라는 남자다.\n 그는 PC들의 얼굴을 보자마자 얼굴을 찡그린다. 환영받지 못하고 있다.", "탐문(P.167)\n PC들은 현장 부근을 지나다니거나 사건을 목격한 인물이 없는지 찾아다녔다.\n 그러나 어디서 무엇을 물어도 그럴 듯한 단서는 없다.\n 슬슬 다리에 피로가 쌓이기 시작했다.", "완고한 관계자(P.168)\n 사건 현장에 어떤 인물이 나타났다.\n PC들은, 신묘한 얼굴로 현장을 바라보던 그 인물이 궁금해 말을 건다.\n 그 인물은 자신을 피해자의 관계자라고 자칭했다…….", "현장을 철저히 조사!(P.169)\n 사건 현장에 남겨진 증거는 거의 찾아냈다.\n ……과연 정말 그럴까?\n 모든 각도에서 조사와 검증을 하여 현장에 남겨진 것은 없는지 찾아보게 됐다.", "도망친 인물(P.170)\n 매우 빠르게 누군가가 현장에서 도망치고 있다.\n 그 인물의 달리는 모습이나 초조해하는 모습은 평범하지 않았다.\n 이건, 무언가를 알고 있다. 혹은 무언가를 가지고 떠났을 가능성이 있다.\n PC들은 쫓기 시작했다."]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_Korean_get_event_scene$23.$$arity = 0); - - Opal.def(self, '$get_event_why', $FutariSousa_Korean_get_event_why$24 = function $$get_event_why() { - var self = this, table = nil; - - - table = ["이동 루트(P.171)\n 이 길을 지나갔을 때, 그 사람은 무슨 생각을 했을까?\n 이 길을 지나갔을 때, 그 사람은 무엇을 해야 했을까?\n 사건관계자들의 행적에는 사건에 이어지는 무언가가 남아 있다.\n 그렇게 믿으며, 길을 걷는다.", "자신이라면……(P.172)\n 탐정과 조수가 사건에 대해 이야기를 나누고 있었다.\n 이야기의 주제는,「 이 상황에서 자신이 범인이라면 어떻게 할 것인가.」\n 그 가정은 힌트를 줄 수도 있다.", "수수께끼의 메시지(P.173)\n 그것은, 수수께끼의 말이었다.\n 단순한 문자열일 수도 있고 뜻 모를 말일 수도 있다.\n 사건과 관련된 장소에 있었다고 해서, 사건에 관련되어 있다고는 할 수 없다.\n 하지만, 이것은 사건에 연루되어 있다. 그렇게 직감이 고하고 있다.", "사건 복습(P.174)\n 화이트보드, 칠판, 노트.\n 뭐든지 간에 쓸 것이 필요하다.\n 지금부터 사건에 대해 정리하는 거니까.", "수상한 인물은?(P.175)\n PC들은 한 인물을 쫓고 있다.\n 그 인물은 사건에 이어지는 무언가를 가지고 있다. 그런 확신이 들었다.\n 자, 그는 어떤 사람일까?", "피해자의 시점(P.176)\n 피해자의 몸에 무슨 일이 일어났는가.\n 피해자는 무엇을 보았는가.\n 그 힌트는 피해자 자신이 알 것이다."]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_Korean_get_event_why$24.$$arity = 0); - - Opal.def(self, '$get_event_npc', $FutariSousa_Korean_get_event_npc$25 = function $$get_event_npc() { - var self = this, table = nil; - - - table = ["사건의 영상(P.177)\n PC들은 눈을 가늘게 뜨고 영상을 바라보고 있다.\n 그것은 공교롭게도 현장에서 찍힌 것이었다.\n 과연 진실은 이 영상 속에 담겨있는 것일까?", "특이한 목격자(P.178)\n PC들은 수사 결과, 사건에 관한 무언가를 봤다는 목격자를 발견한다.\n 그러나 그 사람은 목격증언을 꺼렸다. 왜 그럴까?", "전문가(P.179)\n 조사 중, 아무래도 전문적인 지식이 필요한 곳이 나온다.\n 지금이 그 때이고 PC들은 어떻게 할지 고민하고 있었다.", "정보상(P.180)\n 메일 소프트웨어에 연락이 왔다.\n 연락해온 곳은 이 일대에서 유명한 정보상이었다.\n 그 정보상에게 걸리면 얻을 수 없는 정보는 없다고 한다.\n 자, 어떻게 할까?", "관계자와 함께(P.181)\n 사건관계자 중 한명이 갑자기 협력을 제안했다.\n 아무래도 그 사람도 이 사건에 대해서는 생각하는 구석이 있는 것 같다.", "아마추어 추리(P.182)\n 사건관계자 앞에서, 게스트 NPC가 추리를 선보이고 있다.\n 하지만 그 추리는 구멍투성이고……."]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_Korean_get_event_npc$25.$$arity = 0); - - Opal.def(self, '$get_event_coming', $FutariSousa_Korean_get_event_coming$26 = function $$get_event_coming() { - var self = this, table = nil; - - - table = ["수상한 전화(P.183)\n 갑자기 전화가 울렸다.\n 그 전화는 조사를 진전시키게 될까…….\n 동시에, 새로운 수수께끼를 남겼다.", "지금은 여가를(P.184)\n 행운은 누워서 기다려라.\n 쥐구멍에도 볕 들 날이 있다.\n 라는 걸로, 일단은 아지트에 있다.\n 과연 상황이 나아질까?", "길에서 딱(P.185)\n 개도 쏘다니면 몽둥이에 맞는다.\n 이 말에는 행운을 만난다는 의미도, 봉변을 당한다는 의미도 있다.\n 그럼, 탐정과 조수가 걸으면 무엇에 해당할까?", "번뜩이는 순간(P.186)\n 우연한 계기로 탐정은 번뜩이는 수가 있다.\n 이번엔 대체 무엇이 계기였을까?", "지인으로부터(P.187)\n 사건 수사의 단서를 가져온 것은, 지인이었다.\n 역시 친구밖에 없다.\n 라고 말하고 싶은 참인데…….", "PC들의 위기(P.188)\n 수사는 갑자기 멈췄다.\n 그 원인은 알고 있다.\n 원인을 제거하지 않으면 사건 조사는 할 수 없다."]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_Korean_get_event_coming$26.$$arity = 0); - - Opal.def(self, '$get_event_vs', $FutariSousa_Korean_get_event_vs$27 = function $$get_event_vs() { - var self = this, table = nil; - - - table = ["용의자의 거짓말(P.189)\n 사람은 뭔가 떳떳하지 못한 일이 있을 때 거짓말을 한다.\n 이 용의자는 거짓말을 하고 있다.\n 그렇다면, 무엇을 숨기고 있을까?", "흔들림(P.190)\n 그 용의자는 뭔가를 숨기고 있었다.\n 눈에 띄는 거짓말을 하고 있는 것은 아니다.\n 그렇지만 무언가 숨기고 있다. 탐정에겐, 그렇게 보였다.", "외모로부터의 추리(P.191)\n 조금만 이야기를 했다.\n 조금만 그 모습을 보았다.\n 조금만, 그 사람을 알았다.\n 그것만으로 탐정이라는 생물은 열을 안다. 원래 그런 것이다.", "직접 묻다(P.192)\n 여기서 탐정과 조수는 대담한 수를 썼다.\n 용의자를 상대로 사건의 구체적인 부분까지 파고드는 질문을 한 것이다.\n 그것에 대해 용의자는…….", "위협 받다(P.193)\n 아무래도 우리는 위협을 받는 것 같다.", "술래가 없는 사이에(P.194)\n 그 용의자를 찾아갔을 때 우연히 자리를 비우고 있었다.\n 이건 기회다.\n 그렇게 생각하는 것이 바로 탐정의 슬픈 천성이다."]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_Korean_get_event_vs$27.$$arity = 0); - - Opal.def(self, '$get_obstruction_table', $FutariSousa_Korean_get_obstruction_table$28 = function $$get_obstruction_table() { - var self = this, table = nil; - - - table = [[11, "탐정과 조수가 경찰에게 마크당한다."], [12, "탐정의 변덕"], [13, "탐정의 의욕"], [14, "탐정의 기행을 견딜 수 없게 되다."], [15, "탐정이 기이한 의심을 받다."], [16, "탐정이 피곤하다."], [22, "탐정과 조수가 수상한 인물로 오인받는다."], [23, "조수가 파트너에게 신뢰받지 못한다고 생각한다."], [24, "조수가 탐정에게 따라갈 수 없다."], [25, "조수의 수고가 어느 때보다 크다."], [26, "조수의 수사만이 잘 안 된다."], [33, "수사를 위한 자금이 없다."], [34, "세상의 눈이 매섭다."], [35, "경찰로부터 역겹다고 여겨진다."], [36, "관계자가 협력해주지 않는다."], [44, "수사해서는 안 된다고 압력이 들어온다."], [45, "범인에 의한 방해"], [46, "범인에 의한 이면공작"], [55, "화분이나 철골 등 부자연스럽게 위험한 물건이 날아온다."], [56, "누군가가 탐정과 조수에게 덤벼든다."], [66, "우연이 겹쳐서 잘 안 된다."]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_Korean_get_obstruction_table$28.$$arity = 0); - - Opal.def(self, '$get_abnormal_condition', $FutariSousa_Korean_get_abnormal_condition$29 = function $$get_abnormal_condition() { - var self = this, table = nil; - - - table = ["엇갈림", "탐정의 폭주", "다툼", "미아", "나쁜 소문", "주목의 대상"]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_Korean_get_abnormal_condition$29.$$arity = 0); - - Opal.def(self, '$get_eyewitness_table', $FutariSousa_Korean_get_eyewitness_table$30 = function $$get_eyewitness_table() { - var self = this, table = nil; - - - table = ["놀이 상대를 원하는 젊은이. 판정기능:≪유행≫", "기억력이 나쁜 사람. 판정기능:없음", "바쁜 사람. 판정기능:≪비즈니스≫", "범인의 지인. 판정기능:≪설득≫", "탐정(경찰)을 싫어하는 사람. 판정기능:≪거짓말≫", "반사회주의자. 판정기능:≪돌파≫"]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_Korean_get_eyewitness_table$30.$$arity = 0); - - Opal.def(self, '$get_wrapped_in_mystery_table', $FutariSousa_Korean_get_wrapped_in_mystery_table$31 = function $$get_wrapped_in_mystery_table() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "진범이 아닌 인간이 범인이 되어, 실형을 받고 말았다. 그 증거는 없지만 그렇게 직감할 수 있다."], [2, "해결되지 않은 채 시간이 흐르고, 이윽고 사건은 잊혀졌다. 탐정과 조수, 그리고 사건관계자들만 기억한다."], [3, "피해자 유족과 관계자들은 슬픔에 잠겨 있다. 탐정과 조수는 그저 잠자코 보고만 있을 뿐이다. 그때, 범인을 잡았다면……."], [4, "경찰에 의해 범인이 검거되었다고 하지만, 그 사람이 정말로 범인인지 어떤지는 알 수 없다. 탐정도, 뭐라고 말할 수 없는 것 같다."], [5, "증거가 없어져 버렸다. 그것만 있다면, 사건의 조사를 재개할 수 있을 텐데……. 범인의 소행인지조차 알 수 없다."], [6, "관계자가 없어져 버렸다. 그 후 소식도 묘연하다. 도대체 무슨 생각을 하며 사라진 것일까? 어쨌든, 조사는 할 수 없게 되었다."], [7, "관계자에게 미움 받아, 접근 조차 할 수 없게 되었다. 탐정과 조수는 모두 출입금지가 되어 버린 것 같다. 이래서는 조사를 할 수 없다."], [8, "조수는 때때로 피해자의 관계자와 만나고 있다. 그들의 말을 듣고 그들의 감정을 받아들이는 것 같다."], [9, "탐정과 조수는 기회를 발견하고 사건을 재조사하고 있다. 그러나 확실한 증거는 찾지 못한 채 시간이 흘러간다."], [10, "탐정은 직감으로 진범을 밝혀냈다. 하지만 진범을 잡기 위한 증거가 없다. 범인을 고발하지 못해 이를 갈았다."]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_wrapped_in_mystery_table$31.$$arity = 0); - - Opal.def(self, '$get_background_detective_destiny', $FutariSousa_Korean_get_background_detective_destiny$32 = function $$get_background_detective_destiny() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "『명탐정인 조상(실재)』자신의 조상에 저명한 탐정이 있다. 그 이름을 대면 누구나 알 만한 대인물이다. 자신은 그 피를 진하게 잇고 있는 것 같고, 탐정으로서의 재능을 마음껏 발휘하고 있다."], [2, "『명탐정인 조상(허구)』자신의 조상은 저명한 탐정이다. 그러나 그 활약은 픽션으로 알려져 있다. 그 인물은 실존하지 않는다고 말하지지만… 그것은 사실이 아니다. 자신이 그 피를 잇고 있으니까."], [3, "『부모가 세계적인 탐정』자신의 부모는 세계적으로 알려진 명탐정이다. 숱한 난사건도 해결했다. 자신에게도 그 피가 흐르고 있어 사건에 대한 날카로운 통찰력을 이어받게 되었다."], [4, "『마을의 명탐정』자신의 부모는, 마을에서는 잘 알려진 명탐정이다. 마을 사람들에게 사랑받고 의지가 되는 존재였다. 자신도 그 피를 잇고 있는지 탐정으로서 활동할 힘이 있다."], [5, "『추리작가』자신을 키운 인물은 저명한 추리작가였다. 그 사고능력은 자신에게도 계승되었고, 트릭을 파헤치는 힘은 탐정 수준에 있다고 해도 좋을 것이다."], [6, "『양부모』자신을 키워 준 인물은, 사건을 해결로 이끈 적이 있는 인물이다. 그 사람의 가르침을 받고 자신은 탐정의 재능을 꽃피웠다."], [7, "『타락한 명탐정』일찍이, 자신의 부모는 모든 사건을 해결하여, 명탐정으로 유명했다. 그러나 지금은 뛰어난 사고능력을 악용해 사람들을 장기말마냥 다룬다. 능력을 이어받은 자신도 언젠가는 그렇게 될까?"], [8, "『대악인의 피』세상을 떠들썩하게 했던 대악당과 대괴도. 그 피가 자신에게도 흐르고 있다. 그러므로 악인의 사고를 추적할 수 있으며 결과적으로 명탐정처럼 행동한다."], [9, "『숨겨진 핏줄』무슨 이유에서인지, 자신의 뿌리는 말소되어 있다. 내가 누구인지조차 모른다. 단지, 자신에게는 사건을 해결할 수 있는 힘이 있고, 그것이 뿌리와 관계가 있다고 직감할 수 있다."], [10, "『클론』자신은 유명한 명탐정의 DNA에서 태어난 존재다. 그래서인지 명탐정의 힘은 타고난 것이었다."]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_background_detective_destiny$32.$$arity = 0); - - Opal.def(self, '$get_background_detective_genius', $FutariSousa_Korean_get_background_detective_genius$33 = function $$get_background_detective_genius() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "『초엘리트』자신은 엘리트로 활약하기 위해 모든 분야의 훈련을 받았다. 그리고 원하는 대로 우수한 사람이 되었다."], [2, "『순간기억능력』본 것은 모두 머릿속에 입력된다. 그리고, 절대로 잊지 않는다. 자신은 그런 능력을 갖추고 있다."], [3, "『지식의 샘』머리 속에 있는 서랍 속에는 온갖 지식이 담겨 있다. 즉, 모르는 게 없다는 얘기다."], [4, "『스파르타 교육』엄격한 교육을 받았고, 그 결과 지식을 얻을 수 있었다. 그 대신, 조금 별난 사고방식이 되어 버렸지만……. 별 것 아닐 것이다."], [5, "『이미 명탐정』이미 수많은 사건을 해결하고 있는 천재이다. 숱한 난사건도 자신의 수완으로 해결해 왔다. 그 옆에는 파트너의 모습도 있었다."], [6, "『동경하는 등』자신에게는 동경하고 있는 상대가 있었다. 그 존재를 따라잡기 위해 노력했고 지금의 능력을 얻었다. 그 인물은, 지금은……."], [7, "『라이벌』자신과 겨루던 라이벌이 있다. 능력으로는 거의 호각이었다. 경쟁 속에서, 자신의 능력은 연마되어 간 것이다."], [8, "『과거의 명탐정』이전에는, 모든 사건을 해결로 이끈 천재였다. 그러나 지금은 사건 해결에 소극적이다. 사건을 멀리하고 싶은 무언가가 있었던 것이다."], [9, "『고립된 명탐정』자신은 천재적인 능력을 가지고 수많은 사건을 해결한 명탐정이다. 그 때문에 소외되고, 두려운 존재로 여겨져, 세간이나 조직 속에서 고립되었다."], [10, "『인공 명탐정』자신은 누군가에게 연금되어 탐정 지식을 주입당한 「인공 명탐정」이다. 명탐정이 되도록 길러진 자신은 그 능력을 기대한 대로 발휘할 수 있다."]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_background_detective_genius$33.$$arity = 0); - - Opal.def(self, '$get_background_detective_mania', $FutariSousa_Korean_get_background_detective_mania$34 = function $$get_background_detective_mania() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "『서스펜스 마니아』자신은 서스펜스물의 픽션이나, 실존하는 사건에 대해서 매우 큰 관심을 가지고 있다. 쌓아온 트릭의 지식을 활용할 수 있는 기회를 노리고 있다."], [2, "『시체 마니아』자기는 시체에 대해 큰 관심을 갖고 있다. 시체의 상태나 상세정보를 아는 것으로써, 강한 흥분을 느끼는 성질인 것이다. 난처한 일이다."], [3, "『과학 마니아』과학에 의해 해명되지 못할 것은 없다. 나는 그렇게 생각하고 있으며 이를 위해 능력을 닦아 왔다. 사람이 일으키는 사건이라도, 과학은 모든 것을 내다볼 수 있을 것이다."], [4, "『이른바 오타쿠』게임이나 만화 등에서 얻은 지식이란 의외로 바보 취급할 수 없다. 자신은 게임을 통해 다양한 지식을 쌓아왔으며 이를 응용함으로써 모든 사건을 해결한다."], [5, "『인간 마니아』자신은 인간을 좋아한다. 그래서 관찰도 하고 있다. 행동에 당사자도 모르는 이유가 있다는 것도 알고 있다. 사건도, 왜 그런 일을 저질렀는지에 관심이 있다."], [6, "『서적 마니아』책에는 모든 것이 적혀 있다. 적어도 자신은 그렇게 생각하고 있고, 그 증거로 책의 지식을 응용함으로써 어려운 사건도 해결할 수 있다. 종이 속의 명탐정처럼."], [7, "『오컬트 마니아』오컬트나 초상현상을 믿는다. 그래서 가짜를 알아보는 법도 알며, 용서할 수 없다고 느끼고 있다. 그것이, 어찌된 영문인지 난사건 해결로도 연결된다. 신기하다."], [8, "『탐정 마니아』동서고금, 다양한 탐정이 있다. 그에 대해 조사해 가는 동안, 자신 또한 탐정으로서의 능력이 갖추어졌다."], [9, "『폭주하는 지식욕』자신은 한 가지 일에 마니아이지만, 그로부터 파생된 것의 지식도 잘 알고 있다. 자신의 지식욕은, 거기서부터 또다시 파생된 것까지 이른다."], [10, "『정의의 마니아』자신이 신봉하고 있는 무언가(서적, 과학 등)가 사건에 연루되면 좌불안석이다. 마니아로서 그 수수께끼를 풀어야 한다."]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_background_detective_mania$34.$$arity = 0); - - Opal.def(self, '$get_background_assistant_justice', $FutariSousa_Korean_get_background_assistant_justice$35 = function $$get_background_assistant_justice() { - var self = this, table = nil; - - - table = ["『착한 사람』자신은 다른 사람으로부터 곧잘 좋은 사람이라는 말을 듣는다. 그렇기 때문에 다른 사람의 부탁을 받고 사건에 얽히는 일이 잦았다. 그래니 남의 고민을 해결할 수 있는 능력이 있는 파트너와 함께 있다.", "『용서할 수 없다』자신은 사건의 피해자에 이입하는 타입이다. 피해자의 심정을 생각하면 참담하면서도 범인을 용서할 수 없다는 생각이 든다. 그래서 범인을 쫓기 위해 파트너가 필요하다.", "『납득하고 싶다』자신이 사건에 대해 깊이 관여하는 것은, 자신이 납득하길 원하기 때문이다. 사건을 통해 어떤 해답을 찾기 위해 정의를 행하고 있다. 파트너는 이를 위해 필요한 사람이다.", "『이용하고 있다』어떤 수단을 써서라도 사건을 해결하는 것이 옳다고 자신은 생각하고 있다. 그것을 위한 도구로서 파트너를 쓰고 있을 뿐이다.", "『믿을 수 있는 협력자』파트너를 의지할 수 있는 협력자라고 느끼고 있다. 파트너는 자신이 곤란할 때, 방황할 때, 대답을 해주는 사람이라고 생각한다. 상대가 어떻게 생각하든 그것은 변하지 않는다.", "『정의의 동지』파트너도 함께 정의를 위해 사건 해결을 해주고 있다. 자신은 그렇게 느끼고 있다. 그렇게 믿고 있을 뿐일지도 모르지만, 그 믿음은 멈출 수 없다. 어쩌면 자신이 파트너를 휘두르고 있는지도 모르겠다."]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_Korean_get_background_assistant_justice$35.$$arity = 0); - - Opal.def(self, '$get_background_assistant_passion', $FutariSousa_Korean_get_background_assistant_passion$36 = function $$get_background_assistant_passion() { - var self = this, table = nil; - - - table = ["『능력에 반했다』자신은 파트너의 사건에 관한 능력에 반했다. 그 예리한 통찰력과 추리력, 지식의 깊이. 모든 것이 자신을 매료시키고 있다.", "『인품에 반했다』자신이 파트너와 손을 잡고 있는 것은 인격적인 면이 크다. 언뜻 보기 힘든 대목도 있지만 감춰진 본질에 자신은 푹 빠져 있다.", "『첫눈에 반했다』처음 만났을 때부터 파트너가 마음에 걸렸다. 그 능력도 그렇지만 직감적인 것을 느꼈던 것이다. 그래서 같이 있는다.", "『마음이 맞았다』자신과 파트너는 마음이 잘 맞는다. 두 사람이면 흥을 돋울 수 있고, 두 사람이면 뭐든지 할 수 있다. 그렇게 생각한다……자신이 그렇게 생각하는 것일 뿐일지도 모르지만.", "『대립』자신과 파트너는 대립하고 있다. 그래도 함께 있는 것은 파트너를 이해하기 위해서다…… 언젠가, 파트너를 쓰러뜨릴 수단을 찾기 위해서.", "『내버려둘 수 없다』파트너를 내버려두면 무슨 짓을 할지 모른다. 그러니까 자신이 지켜보고 있어야 돼. 그렇게 느꼈다."]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_Korean_get_background_assistant_passion$36.$$arity = 0); - - Opal.def(self, '$get_background_assistant_involved', $FutariSousa_Korean_get_background_assistant_involved$37 = function $$get_background_assistant_involved() { - var self = this, table = nil; - - - table = ["『일방적으로 마음에 들었다』파트너가 일방적으로 좋아한다. 어쩌다 그랬는지는 모르겠지만 그런 것 같다. 함께 있는 것은 자신의 의지가 아니지만…….", "『리액션 요원』파트너에 의하면, 자신에게 리액션을 기대하고 있는 것 같다. 사건을 해결했을 때나, 어떤 놀라움이 있었을 때에 보이는 반응이 즐겁다던가.", "『과거의 빚』과거, 파트너에게 비밀이나 약점을 잡혔다. 그 이후, 파트너가 부려먹고 있다. 아직 도망치지 못했다.", "『필요한 인재』파트너에게 자신이 필요하다고 부탁받았다. 그래서, 함께 사건을 해결하고 있다. 왜 자신이 필요한지는 아직 모른다.", "『친한 사람』파트너에게 자신은 친근한 인물이다. 소꿉친구와 친구, 친척 등. 그래서 옛날부터 휘둘리고 있고 앞으로도 계속 휘둘릴 것이다.", "『우연의 연속』파트너가 사건에 직면할 때마다 마침 그 자리에 있다. 그러다 보니 어느새 친해져 있었다. 지금은 함께 있는 일도 많다."]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_Korean_get_background_assistant_involved$37.$$arity = 0); - - Opal.def(self, '$get_height_table', $FutariSousa_Korean_get_height_table$38 = function $$get_height_table() { - var self = this, table = nil; - - - table = ["매우 크다", "큰 편", "평균적", "작은 편", "매우 작다", "파트너보다 조금 크다/조금 작다"]; - return self.$get_table_by_1d6(table); - }, $FutariSousa_Korean_get_height_table$38.$$arity = 0); - - Opal.def(self, '$get_base_table', $FutariSousa_Korean_get_base_table$39 = function $$get_base_table() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "PC가 일하고 있는 직장"], [2, "조용한 분위기의 찻집"], [3, "떠들썩한 분위기의 술집"], [4, "탐정활동을 위해 빌린 사무소"], [5, "PC 중 한쪽의 집"], [6, "단골 음식점"], [7, "이동에 쓰이는 차 안"], [8, "지인에게 양도받은 창고"], [9, "언제나 파트너와 만나는 교차점"], [10, "둘만 알고 있는 비밀장소"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_base_table$39.$$arity = 0); - - Opal.def(self, '$get_guest_relation_table', $FutariSousa_Korean_get_guest_relation_table$40 = function $$get_guest_relation_table() { - var self = this, table = nil; - - - table = [[11, "옛날 친구"], [12, "친구(友人)"], [13, "친구(親友)"], [14, "안면이 있다"], [15, "전우"], [16, "악연"], [22, "과거에 무언가 있었다"], [23, "사촌"], [24, "친구의 친구"], [25, "먼 친척"], [26, "이웃"], [33, "민폐를 끼쳤다"], [34, "스승"], [35, "인터넷으로 알게 되었다"], [36, "우연히 알게 되었다"], [44, "전에 딱 한 번 만났다"], [45, "파트너의 일로 상담 받았다"], [46, "파트너에 대해 질문 받았다"], [55, "소꿉친구"], [56, "파트너를 쫓고 있다"], [66, "일방적으로 알려져 있다"]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_Korean_get_guest_relation_table$40.$$arity = 0); - - Opal.def(self, '$get_memorial_item_table', $FutariSousa_Korean_get_memorial_item_table$41 = function $$get_memorial_item_table() { - var self = this, table = nil; - - - table = [[11, "아지트에 계속 놓여 있는 배달피자상자"], [12, "같이 해결한 사건의 파일"], [13, "두 사람이 만난 계기가 된 책"], [14, "둘이서 놀았던 체스판이나 장기판"], [15, "두 사람의 추억이 쌓인 게임기"], [16, "두 사람이 찍힌 사진"], [22, "두 사람의 수사노트"], [23, "같이 사용한 청소도구"], [24, "피해자로부터 받은 인형"], [25, "둘이서 같이 앉은 소파"], [26, "언제나 앉아있는 의자"], [33, "자주 사용하는 전화기"], [34, "둘의 시간을 새긴 시계"], [35, "언제나 놓여있는 책상"], [36, "사건 해설을 한 화이트보드나 칠판"], [44, "어째선지 있는 인체모형"], [45, "좋아하는 컵"], [46, "사건해결에 쓴 소도구"], [55, "같이 마시기로 약속한 술이나 주스"], [56, "좋아하는 요리"], [66, "둘만의 비밀교환일기"]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_Korean_get_memorial_item_table$41.$$arity = 0); - - Opal.def(self, '$get_job_table_66', $FutariSousa_Korean_get_job_table_66$42 = function $$get_job_table_66() { - var self = this, table = nil; - - - table = [[11, "파트너와 같음"], [12, "프리터"], [13, "학생(우수)"], [14, "학생(보통)"], [15, "학생(불성실)"], [16, "교사,강사"], [22, "파트너와 같음"], [23, "회사원"], [24, "주부"], [25, "자영업자"], [26, "딜레탕트"], [33, "파트너와 같음"], [34, "형사(신입)"], [35, "형사(엘리트)"], [36, "공무원"], [44, "파트너와 같음"], [45, "탐정조수"], [46, "탐정"], [55, "파트너와 같음"], [56, "무직"], [66, "파트너와 같음"]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_Korean_get_job_table_66$42.$$arity = 0); - - Opal.def(self, '$get_job_table_10', $FutariSousa_Korean_get_job_table_10$43 = function $$get_job_table_10() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "딜레탕트"], [2, "형사"], [3, "탐정(유명)"], [4, "탐정(인기없음)"], [5, "탐정조수"], [6, "연구자"], [7, "자영업자"], [8, "회사원"], [9, "작가"], [10, "학생"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_job_table_10$43.$$arity = 0); - - Opal.def(self, '$get_fashion_table_66', $FutariSousa_Korean_get_fashion_table_66$44 = function $$get_fashion_table_66() { - var self = this, table = nil; - - - table = [[11, "고급지향"], [12, "정장"], [13, "캐주얼 웨어(평상복)"], [14, "포멀 웨어(정장)"], [15, "스포츠웨어"], [16, "합리적임"], [22, "선글라스"], [23, "와이셔츠"], [24, "티셔츠"], [25, "목걸이"], [26, "모자"], [33, "밀리터리"], [34, "피어스"], [35, "추리닝"], [36, "붙임머리"], [44, "일본전통옷"], [45, "반지"], [46, "초커"], [55, "샌들"], [56, "점퍼"], [66, "패션에 구애받지 않는다"]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_Korean_get_fashion_table_66$44.$$arity = 0); - - Opal.def(self, '$get_fashion_table_10', $FutariSousa_Korean_get_fashion_table_10$45 = function $$get_fashion_table_10() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "정장"], [2, "인버네스"], [3, "백의"], [4, "글로브"], [5, "파이프"], [6, "조끼"], [7, "일본전통옷"], [8, "컬러풀한 색 사용"], [9, "파트너와 같음"], [10, "패션에 구애받지 않는다"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_fashion_table_10$45.$$arity = 0); - - Opal.def(self, '$get_like_dislike_table_66', $FutariSousa_Korean_get_like_dislike_table_66$46 = function $$get_like_dislike_table_66() { - var self = this, table = nil; - - - table = [[11, "시체"], [12, "개"], [13, "고양이"], [14, "서스펜스"], [15, "이야기"], [16, "아이돌"], [22, "범죄"], [23, "오컬트"], [24, "건강"], [25, "정크푸드"], [26, "고급식사"], [33, "패션"], [34, "권력"], [35, "명예"], [36, "우정"], [44, "간식"], [45, "고향"], [46, "가족"], [55, "경찰"], [56, "음악"], [66, "총"]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_Korean_get_like_dislike_table_66$46.$$arity = 0); - - Opal.def(self, '$get_like_dislike_table_10', $FutariSousa_Korean_get_like_dislike_table_10$47 = function $$get_like_dislike_table_10() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "범죄"], [2, "수수께끼"], [3, "탐정"], [4, "파트너"], [5, "파트너가 좋아하는 것"], [6, "파트너가 싫어하는 것"], [7, "딱히 없음"], [8, "체스나 장기 등의 보드게임"], [9, "인간"], [10, "모르는 것"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_like_dislike_table_10$47.$$arity = 0); - - Opal.def(self, '$get_feeling_table_66', $FutariSousa_Korean_get_feeling_table_66$48 = function $$get_feeling_table_66() { - var self = this, table = nil; - - - table = [[11, "얼굴"], [12, "분위기"], [13, "외관"], [14, "수사방법"], [15, "행동거지"], [16, "냄새"], [22, "존재 그 자체"], [23, "말투"], [24, "취미(취향)"], [25, "왠지 모르게"], [26, "타인을 향한 태도"], [33, "금전감각"], [34, "생활습관"], [35, "기능"], [36, "복장"], [44, "말할 타이밍"], [45, "윤리관"], [46, "자신을 향한 태도"], [55, "거리감"], [56, "자신과의 관계"], [66, "생활습관"]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_Korean_get_feeling_table_66$48.$$arity = 0); - - Opal.def(self, '$get_feeling_table_10', $FutariSousa_Korean_get_feeling_table_10$49 = function $$get_feeling_table_10() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "인간성"], [2, "취미(취향)"], [3, "기능"], [4, "왠지 모르게"], [5, "감각"], [6, "분위기"], [7, "자신이 모르는 점"], [8, "자신이 잘 알고 있는 점"], [9, "자신을 향한 태도"], [10, "자신과의 관계"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_feeling_table_10$49.$$arity = 0); - - Opal.def(self, '$get_name_to_call_table_66', $FutariSousa_Korean_get_name_to_call_table_66$50 = function $$get_name_to_call_table_66() { - var self = this, table = nil; - - - table = [[11, "달링, 허니"], [12, "이름"], [13, "~군(くん)"], [14, "~씨(さん)"], [15, "~쨩(ちゃん)"], [16, "~님(様), ~공(殿)"], [22, "~선배, ~후배"], [23, "파트너(相棒)"], [24, "당신(あんた)"], [25, "당신(あなた)"], [26, "선생(님)"], [33, "물건으로 비유한다."], [34, "네놈/자네(貴様)、귀하(貴殿)"], [35, "너(てめえ、おまえ)"], [36, "별명"], [44, "유(ユー)"], [45, "자네(お前さん)"], [46, "탐정군, 탐정씨"], [55, "친구"], [56, "파트너와 같다."], [66, "매번 호칭이 바뀐다."]]; - return self.$get_table_by_d66_swap(table); - }, $FutariSousa_Korean_get_name_to_call_table_66$50.$$arity = 0); - return (Opal.def(self, '$get_name_to_call_table_10', $FutariSousa_Korean_get_name_to_call_table_10$51 = function $$get_name_to_call_table_10() { - var $a, $b, self = this, table = nil, diceText = nil, output = nil; - - - table = [[1, "이름"], [2, "~군(くん)"], [3, "~씨(さん)"], [4, "~쨩(ちゃん)"], [5, "~님(様), ~공(殿)"], [6, "파트너(相棒)"], [7, "당신(あんた、あなた)"], [8, "너(キミ)"], [9, "사랑하는~"], [10, "별명"]]; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (diceText = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(diceText, table); - return [output, diceText]; - }, $FutariSousa_Korean_get_name_to_call_table_10$51.$$arity = 0), nil) && 'get_name_to_call_table_10'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Garako.js b/src/assets/dicebot/Garako.js deleted file mode 100644 index 7d49c01d3..000000000 --- a/src/assets/dicebot/Garako.js +++ /dev/null @@ -1,396 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$freeze', '$match', '$raise', '$to_i', '$[]', '$roll', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Table'); - - var $nesting = [self].concat($parent_nesting), $Table_initialize$1, $Table_roll$2; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $Table_initialize$1 = function $$initialize(name, type, items) { - var self = this, m = nil; - - - self.name = name; - self.items = items.$freeze(); - m = /(\d+)D(\d+)/i.$match(type); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "Unexpected table type: " + (type)) - }; - self.times = m['$[]'](1).$to_i(); - return (self.sides = m['$[]'](2).$to_i()); - }, $Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $Table_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, value = nil, index = nil; - - - $b = bcdice.$roll(self.times, self.sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(value, self.times); - return "" + (self.name) + "(" + (value) + ") > " + (self.items['$[]'](index)); - }, $Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/range_table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$new', '$alias_method', '$freeze', '$lambda', '$name', '$sum', '$content', '$attr_reader', '$match', '$raise', '$to_i', '$[]', '$store', '$find', '$include?', '$range', '$roll', '$map', '$split', '$to_proc', '$fetch', '$formatted=', '$-', '$private', '$coerce_to_int_range', '$sort_by', '$min', '$assert_min_sum_is_covered', '$assert_max_sum_is_covered', '$assert_no_gap_or_overlap_in_ranges', '$===', '$is_a?', '$begin', '$end', '$class', '$first', '$*', '$last', '$each_cons', '$max', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RangeTable'); - - var $nesting = [self].concat($parent_nesting), $RangeTable$1, $RangeTable$2, $RangeTable_initialize$3, $RangeTable_fetch$4, $RangeTable_roll$6, $RangeTable_store$7, $RangeTable_coerce_to_int_range$11, $RangeTable_assert_min_sum_is_covered$12, $RangeTable_assert_max_sum_is_covered$13, $RangeTable_assert_no_gap_or_overlap_in_ranges$14; - - self.$$prototype.name = self.$$prototype.items = self.$$prototype.num_of_dice = self.$$prototype.num_of_sides = self.$$prototype.formatter = nil; - - Opal.const_set($nesting[0], 'RollResult', $send($$($nesting, 'Struct'), 'new', ["sum", "values", "content", "formatted"], ($RangeTable$1 = function(){var self = $RangeTable$1.$$s || this; - - return self.$alias_method("to_s", "formatted")}, $RangeTable$1.$$s = self, $RangeTable$1.$$arity = 0, $RangeTable$1))); - Opal.const_set($nesting[0], 'Item', $$($nesting, 'Struct').$new("range", "content")); - Opal.const_set($nesting[0], 'DICE_ROLL_METHOD_RE', /^(\d+)D(\d+)$/i.$freeze()); - Opal.const_set($nesting[0], 'DEFAULT_FORMATTER', $send(self, 'lambda', [], ($RangeTable$2 = function(table, result){var self = $RangeTable$2.$$s || this; - - - - if (table == null) { - table = nil; - }; - - if (result == null) { - result = nil; - }; - return "" + (table.$name()) + "(" + (result.$sum()) + ") > " + (result.$content());}, $RangeTable$2.$$s = self, $RangeTable$2.$$arity = 2, $RangeTable$2))); - self.$attr_reader("name"); - self.$attr_reader("num_of_dice"); - self.$attr_reader("num_of_sides"); - - Opal.def(self, '$initialize', $RangeTable_initialize$3 = function $$initialize(name, dice_roll_method, items) { - var $iter = $RangeTable_initialize$3.$$p, formatter = $iter || nil, $a, self = this, m = nil; - - if ($iter) $RangeTable_initialize$3.$$p = null; - - - if ($iter) $RangeTable_initialize$3.$$p = null;; - self.name = name.$freeze(); - self.formatter = ($truthy($a = formatter) ? $a : $$($nesting, 'DEFAULT_FORMATTER')); - m = $$($nesting, 'DICE_ROLL_METHOD_RE').$match(dice_roll_method); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + (self.name) + ": invalid dice roll method: " + (dice_roll_method)) - }; - self.num_of_dice = m['$[]'](1).$to_i(); - self.num_of_sides = m['$[]'](2).$to_i(); - return self.$store(items); - }, $RangeTable_initialize$3.$$arity = 3); - - Opal.def(self, '$fetch', $RangeTable_fetch$4 = function $$fetch(value) { - var $$5, self = this, item = nil; - - - item = $send(self.items, 'find', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$range()['$include?'](value);}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - if ($truthy(item)) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": value is out of range: " + (value)) - }; - return item; - }, $RangeTable_fetch$4.$$arity = 1); - - Opal.def(self, '$roll', $RangeTable_roll$6 = function $$roll(bcdice) { - var $a, $b, self = this, sum = nil, values_str = nil, values = nil, result = nil, $writer = nil; - - - $b = bcdice.$roll(self.num_of_dice, self.num_of_sides), $a = Opal.to_ary($b), (sum = ($a[0] == null ? nil : $a[0])), (values_str = ($a[1] == null ? nil : $a[1])), $b; - values = $send(values_str.$split(","), 'map', [], "to_i".$to_proc()); - result = $$($nesting, 'RollResult').$new(sum, values, self.$fetch(sum).$content()); - - $writer = [self.formatter['$[]'](self, result)]; - $send(result, 'formatted=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return result; - }, $RangeTable_roll$6.$$arity = 1); - self.$private(); - - Opal.def(self, '$store', $RangeTable_store$7 = function $$store(items) { - var $$8, $$9, $$10, self = this, items_with_range = nil, sorted_items = nil; - - - items_with_range = $send(items, 'map', [], ($$8 = function(r, c){var self = $$8.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (c == null) { - c = nil; - }; - return [self.$coerce_to_int_range(r), c];}, $$8.$$s = self, $$8.$$arity = 2, $$8)); - sorted_items = $send(items_with_range, 'sort_by', [], ($$9 = function(r, _){var self = $$9.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (_ == null) { - _ = nil; - }; - return r.$min();}, $$9.$$s = self, $$9.$$arity = 2, $$9)); - self.$assert_min_sum_is_covered(sorted_items); - self.$assert_max_sum_is_covered(sorted_items); - self.$assert_no_gap_or_overlap_in_ranges(sorted_items); - self.items = $send(sorted_items, 'map', [], ($$10 = function(range, content){var self = $$10.$$s || this; - - - - if (range == null) { - range = nil; - }; - - if (content == null) { - content = nil; - }; - return $$($nesting, 'Item').$new(range, content.$freeze()).$freeze();}, $$10.$$s = self, $$10.$$arity = 2, $$10)).$freeze(); - return self; - }, $RangeTable_store$7.$$arity = 1); - - Opal.def(self, '$coerce_to_int_range', $RangeTable_coerce_to_int_range$11 = function $$coerce_to_int_range(x) { - var $a, self = this, $case = nil; - - - $case = x; - if ($$($nesting, 'Integer')['$===']($case)) {return $$($nesting, 'Range').$new(x, x)} - else if ($$($nesting, 'Range')['$===']($case)) {if ($truthy(($truthy($a = x.$begin()['$is_a?']($$($nesting, 'Integer'))) ? x.$end()['$is_a?']($$($nesting, 'Integer')) : $a))) { - return x}}; - return self.$raise($$($nesting, 'TypeError'), "" + (self.name) + ": " + (x) + " (" + (x.$class()) + ") must be an Integer or a Range with Integers "); - }, $RangeTable_coerce_to_int_range$11.$$arity = 1); - - Opal.def(self, '$assert_min_sum_is_covered', $RangeTable_assert_min_sum_is_covered$12 = function $$assert_min_sum_is_covered(sorted_items) { - var self = this, min_sum = nil, range = nil; - - - min_sum = self.num_of_dice; - range = sorted_items.$first()['$[]'](0); - if ($truthy(range['$include?'](min_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": min value (" + (min_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_min_sum_is_covered$12.$$arity = 1); - - Opal.def(self, '$assert_max_sum_is_covered', $RangeTable_assert_max_sum_is_covered$13 = function $$assert_max_sum_is_covered(sorted_items) { - var self = this, max_sum = nil, range = nil; - - - max_sum = $rb_times(self.num_of_dice, self.num_of_sides); - range = sorted_items.$last()['$[]'](0); - if ($truthy(range['$include?'](max_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": max value (" + (max_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_max_sum_is_covered$13.$$arity = 1); - return (Opal.def(self, '$assert_no_gap_or_overlap_in_ranges', $RangeTable_assert_no_gap_or_overlap_in_ranges$14 = function $$assert_no_gap_or_overlap_in_ranges(sorted_items) { - var $$15, self = this; - - - $send(sorted_items, 'each_cons', [2], ($$15 = function(i1, i2){var self = $$15.$$s || this, r1 = nil, r2 = nil, max1 = nil, next_of_max1 = nil; - if (self.name == null) self.name = nil; - - - - if (i1 == null) { - i1 = nil; - }; - - if (i2 == null) { - i2 = nil; - }; - r1 = i1['$[]'](0); - r2 = i2['$[]'](0); - max1 = r1.$max(); - next_of_max1 = $rb_plus(max1, 1); - if ($truthy(r2['$include?'](max1))) { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range overlap: " + (r1) + " and " + (r2))}; - if ($truthy(r2['$include?'](next_of_max1))) { - return nil - } else { - return self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range gap: " + (r1) + " and " + (r2)) - };}, $$15.$$s = self, $$15.$$arity = 2, $$15)); - return self; - }, $RangeTable_assert_no_gap_or_overlap_in_ranges$14.$$arity = 1), nil) && 'assert_no_gap_or_overlap_in_ranges'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/format"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$module_function', '$===', '$to_s', '$==', '$>']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Format'); - - var $nesting = [self].concat($parent_nesting), $Format_comparison_operator$1, $Format_modifier$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Format_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if ("=="['$===']($case)) {return "="} - else if ("!="['$===']($case)) {return "<>"} - else if ($$($nesting, 'Symbol')['$===']($case)) {return op.$to_s()} - else { return nil }})() - }, $Format_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$modifier', $Format_modifier$2 = function $$modifier(number) { - var self = this; - - if (number['$=='](0)) { - return "" - } else if ($truthy($rb_gt(number, 0))) { - return "" + "+" + (number) - } else { - return number.$to_s() - } - }, $Format_modifier$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $range = Opal.range; - - Opal.add_stubs(['$require', '$roll_tables', '$roll_gr', '$roll_damage_chart', '$private', '$match', '$to_i', '$[]', '$roll', '$+', '$==', '$>=', '$modifier', '$to_s', '$join', '$clamp', '$-', '$<', '$>', '$freeze', '$new', '$setPrefixes', '$keys']); - - self.$require("utils/table"); - self.$require("utils/range_table"); - self.$require("utils/format"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Garako'); - - var $nesting = [self].concat($parent_nesting), $Garako_rollDiceCommand$1, $Garako_roll_gr$2, $Garako_roll_damage_chart$3, $Garako_clamp$4; - - - Opal.const_set($nesting[0], 'ID', "Garako"); - Opal.const_set($nesting[0], 'NAME', "ガラコと破界の塔"); - Opal.const_set($nesting[0], 'SORT_KEY', "からことはかいのとう"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + "GR+n>=X:「+n」で判定値を指定、「X」で目標値を指定。\n" + "・部位決定チャート:HIT\n" + "・ダメージチャート:xDCy(CDC/EDC/FDC/ADC/LDC)\n" + " xは C:コックピット、E:エンジン、F:フレーム、A:アーム、L:レッグ\n" + " yはダメージ値\n" + "各種表\n" + "・個性表:IDI/動機決定表:MTV\n" + "・名前表\n" + "ピグマー族  男:PNM 女:PNF  エレメント族 男:ENM 女:ENF\n" + "ノーマッド族 男:NNM 女:NNF  ラット族   男:RNM 女:RNF\n" + "ブレイン族  1:BN1 2:BN2  テンタクル族 1:TN1 2:TN2\n" + "・ガラコ改造チャート表:GCC\n" + "・武器改造チャート表:WCC\n" + "・イベントチャート表:EVC\n" + "・戦闘開始距離:BSD\n"); - - Opal.def(self, '$rollDiceCommand', $Garako_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $b, self = this; - - return ($truthy($a = ($truthy($b = self.$roll_tables(command, $$($nesting, 'TABLES'))) ? $b : self.$roll_gr(command))) ? $a : self.$roll_damage_chart(command)) - }, $Garako_rollDiceCommand$1.$$arity = 1); - self.$private(); - - Opal.def(self, '$roll_gr', $Garako_roll_gr$2 = function $$roll_gr(command) { - var $a, $b, self = this, m = nil, modify_number = nil, target_number = nil, dice = nil, total = nil, result = nil, formated_modifier = nil, sequence = nil; - - - m = /^GR([+-]\d+)?>=(\d+)$/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - modify_number = m['$[]'](1).$to_i(); - target_number = m['$[]'](2).$to_i(); - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - total = $rb_plus(dice, modify_number); - result = (function() {if (dice['$=='](1)) { - return "ファンブル" - } else if (dice['$=='](10)) { - return "クリティカル" - } else if ($truthy($rb_ge(total, target_number))) { - return "成功" - } else { - return "失敗" - }; return nil; })(); - formated_modifier = $$($nesting, 'Format').$modifier(modify_number); - sequence = ["" + "(1D10" + (formated_modifier) + ">=" + (target_number) + ")", "" + (dice) + "[" + (dice) + "]" + (formated_modifier), total.$to_s(), result]; - return sequence.$join(" > "); - }, $Garako_roll_gr$2.$$arity = 1); - - Opal.def(self, '$roll_damage_chart', $Garako_roll_damage_chart$3 = function $$roll_damage_chart(command) { - var self = this, m = nil, part = nil, damage = nil, index = nil, chart = nil, chosen = nil; - - - m = /^(\wDC)(\d+)$/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - part = m['$[]'](1); - damage = self.$clamp(m['$[]'](2).$to_i(), 1, 10); - index = $rb_minus(damage, 1); - chart = $$($nesting, 'DAMAGE_CHARTS')['$[]'](part); - if ($truthy(chart)) { - } else { - return nil - }; - chosen = chart['$[]']("table")['$[]'](index); - return "" + (chart['$[]']("name")) + "(" + (damage) + ") > " + (chosen); - }, $Garako_roll_damage_chart$3.$$arity = 1); - - Opal.def(self, '$clamp', $Garako_clamp$4 = function $$clamp(i, min, max) { - var self = this; - - if ($truthy($rb_lt(i, min))) { - return min - } else if ($truthy($rb_gt(i, max))) { - return max - } else { - return i - } - }, $Garako_clamp$4.$$arity = 3); - Opal.const_set($nesting[0], 'DAMAGE_CHARTS', $hash2(["CDC", "EDC", "FDC", "ADC", "LDC"], {"CDC": $hash2(["name", "table"], {"name": "部位ダメージチャート:コックピット", "table": ["小破(アーマー損傷):以後、この部位の【部位装甲】-1。", "小破(視界不良):モニターやハッチの歪み等により、視界を大きく遮られる。以後、【視認性】-1、【部位装甲】-1。", "小破(強震):大きく揺さぶられる。キミは【身体】10の判定を行う。失敗した場合、次のターンを失う。【部位装甲】-1。", "小破(収納直撃):アイテム収納スペースに直撃! 所持品一つにつき1d10を振れ。出目が5以下だった所持品は破壊される。【部位装甲】-1。", "中破(計器損傷):コンソールの一部が停止する。[弱体1]を受ける。", "中破(制御不能):コントロールが効かなくなる。キミは次のターンを失う。[弱体1]を受ける。", "中破(貫通!):パイロットに被害が! キミはHPダメージ(1d10-【身体】)に加え、[弱体1]を受ける。", "大破(故障):コックピットが完全にいかれる。キミは次のラウンド終了時まで、あらゆる判定に自動的にファンブルする。[弱体1]を受ける。", "大破(貫通!):パイロットに被害が! キミはHPダメージ(1d10+3-【身体】)に加え、[弱体1]を受ける。", "修復不能(破壊):コックピットが[修復不能]となる。キミは2d10-【身体】点のHPダメージを受ける。ガラコはすべての機能を停止する。コックピットのハッチが自動的に開く。"]}), "EDC": $hash2(["name", "table"], {"name": "部位ダメージチャート:エンジン", "table": ["小破(アーマー損傷):以後、この部位の【部位装甲】-1。", "小破(アーマー損傷):以後、この部位の【部位装甲】-1。", "小破(燃料漏れ):タンクから燃料が漏れる。燃料-1。この部位の【部位装甲】-1。", "小破(燃料漏れ):タンクから燃料が漏れる。燃料-2。この部位の【部位装甲】-1。", "中破(エンジン不調):時々エンジンが動かなくなる。[弱体1]を受ける。", "中破(燃料漏れ):タンクから燃料が漏れる。燃料-2。[弱体1]を受ける。", "中破(ヒート):オーバーヒートする。次のターンの終了時まで、移動と攻撃を行えない。[弱体1]を受ける。", "大破(エンジン不調):キミは次のターンを失う。[弱体1]を受ける。", "大破(故障):以後、この部位の【部位装甲】が0になる。[弱体1]を受ける。", "修復不能(エンジン停止):エンジンが停止する。ガラコはすべての機能を停止する。コックピットのハッチが自動的に開く。【操作性】10の判定を行うこと。失敗するとエンジンが爆発する。その場合、すべての部位が[修復不能]となり、キミは2d10-【身体】点のダメージを受ける。"]}), "FDC": $hash2(["name", "table"], {"name": "部位ダメージチャート:フレーム", "table": ["小破(不安定):体勢を崩す。次のターン、キミは攻撃を行えない。この部位の【部位装甲】-1。", "小破(スクラッチ!):フレームに醜い傷が残る。この部位の【部位装甲】-1。", "小破(アーマー損傷):フレームが歪む。この部位の【部位装甲】-1。", "小破(アーマー損傷):フレームがきしみ始め、ガラコの動きを阻害し始める。【移動力】-1。さらに、この部位の【部位装甲】-1。", "中破(放熱板損傷):熱を機体外に逃すことができなくなる。[弱体1]を受ける。", "中破(スタビライザー損傷):機体のバランス調整装置が故障する。【身体】10の判定を行うこと。失敗した場合、キミは次のターンを失う。[弱体1]を受ける。", "中破(貫通!):パイロットに被害が! キミはHPダメージ(1d10-【身体】)を受ける。[弱体1]を受ける。", "大破(停止):フレームが動かない。キミは次のターンを失う。[弱体1]を受ける。", "大破(アーマー損傷):フレームに甚大なダメージを受ける。以後、この部位の【部位装甲】に-3。[弱体1]を受ける。", "修復不能(フレーム崩壊):フレームが[修復不能]となる。フレームの大部分が剥がれ落ち、ガラコの内部が晒される。以後、キミに対して部位狙いが行われる場合、その命中判定に対する修正(p21)は発生しなくなる。[弱体2]を受ける。"]}), "ADC": $hash2(["name", "table"], {"name": "部位ダメージチャート:アーム", "table": ["小破(アーマー損傷):アームの装甲にヒビが入る。【部位装甲】-1。", "小破(武器落とし!):【身体】8の判定を行う。失敗した場合、ダメージを受けた側のアームに(スロットを消費して)装着していた武器を落とす。【部位装甲】-1。", "小破(マニュピレータ損傷):指が何本かちぎれ飛んだ。【操作性】-1、【部位装甲】-1。", "小破(機能停止):次のターンの終了時まで、このアームを使った攻撃はできない。以後、この部位の【部位装甲】-1。", "中破(痙攣):アームの動きがぶれ始める。[弱体1]を受ける。", "中破(武器落とし!):ダメージを受けた側のアームに(スロットを消費して)装着していた武器を落とす。[弱体1]を受ける。", "中破(スピン):機体が大きく回転する。【身体】10の判定を行うこと。失敗した場合、[伏せ]状態となった上、次のターンを失う。[弱体1]を受ける。", "大破(アーマー損傷):以後、この部位の【部位装甲】を-3。[弱体1]を受ける。", "大破(武器落とし!):ダメージを受けた側のアームに(スロットを消費して)装着していた武器を落とす。以後、この部位の【部位装甲】が0になる。[弱体1]を受ける。", "修復不能(破壊):ダメージを受けた側のアームが[修復不能]となる。[弱体2]を受ける。"]}), "LDC": $hash2(["name", "table"], {"name": "部位ダメージチャート:レッグ", "table": ["小破(アーマー損傷):以後、この部位の【部位装甲】-1。", "小破(よろめき):以後、この部位の【部位装甲】-1。次のターン終了時まで、キミは移動できない。", "小破(スネア):足元をすくわれる。【部位装甲】-1。さらに【身体】8の判定を行うこと。失敗した場合、キミは[伏せ]状態になる。", "小破(跛足):以後、【移動力】-1、【部位装甲】-1。", "中破(シャフト損傷):脚部の軸に歪みが生じる。[弱体1]を受ける。", "中破(アクチュエータ損傷):脚部のアクチュエータに大きな損傷を受ける。【移動力】-1。[弱体1]を受ける。", "中破(スピン):機体が大きく回転する。【身体】10の判定を行うこと。失敗した場合、[伏せ]状態となった上、次のターンを失う。[弱体1]を受ける。", "大破(アーマー損傷):以後、この部位の【部位装甲】を-3。[弱体1]を受ける。", "大破(跛足):以後、【移動力】-2。この部位の【部位装甲】が0になる。[弱体1]を受ける。", "修復不能(破壊):ダメージを受けた側のレッグが[修復不能]となる。【移動力】-2。[弱体2]を受ける。"]})}).$freeze()); - Opal.const_set($nesting[0], 'TABLES', $hash2(["PNM", "PNF", "ENM", "ENF", "NNM", "NNF", "RNM", "RNF", "BN1", "BN2", "TN1", "TN2", "MTV", "HIT", "GCC", "WCC", "EVC", "BSD", "IDI"], {"PNM": $$($nesting, 'Table').$new("名前表:ピグマー族(男)", "1D10", ["バビロン", "グリニッジ", "デトロイト", "ヨコスカ", "ボルドー", "テキサス", "シチリア", "チェルノブイリ", "グンマ", "サマルトリア"]), "PNF": $$($nesting, 'Table').$new("名前表:ピグマー族(女)", "1D10", ["ルアンダ", "ローマ", "フロリダ", "ホノルル", "ツガル", "ゲルニカ", "シャンハイ", "モナコ", "チグリス", "オーサカ"]), "ENM": $$($nesting, 'Table').$new("名前表:エレメント族(男)", "1D10", ["アポロン", "ミキストリ", "アザゼル", "フマクト", "マサカド", "ククルカン", "ルシフェル", "ザギグ", "フェムト", "マイトレーヤ"]), "ENF": $$($nesting, 'Table').$new("名前表:エレメント族(女)", "1D10", ["クシナダ", "アルテミス", "ゼノビア", "フレイヤ", "イシュタム", "ベルゼバブ", "マイシェラ", "バステト", "スクルド", "アテナ"]), "NNM": $$($nesting, 'Table').$new("名前表:ノーマッド族(男)", "1D10", ["ドラム", "カホン", "ハレルヤ", "トリノウタ", "スリラー", "シンバル", "リュート", "ウクレレ", "タンバリン", "ユメコウネン"]), "NNF": $$($nesting, 'Table').$new("名前表:ノーマッド族(女)", "1D10", ["ピアノ", "テルミン", "ソバカス", "イマジン", "ツナミ", "ピッコロ", "ハープ", "シャミセン", "ミザルー", "ドナドナ"]), "RNM": $$($nesting, 'Table').$new("名前表:ラット族(男)", "1D10", ["ポチ", "シシマル", "ポンタ", "コテツ", "アルフォンス", "パトラッシュ", "ミッキー", "ジジ", "サカモト", "オンソクマル"]), "RNF": $$($nesting, 'Table').$new("名前表:ラット族(女)", "1D10", ["タマ", "ココ", "ラブ", "ピーコ", "モカ", "オリガミ", "ヒメ", "ミィ", "ルナ", "ク・メル"]), "BN1": $$($nesting, 'Table').$new("名前表:ブレイン族(その1)", "1D10", ["マリファナ", "バファリン", "タミフル", "セーロガン", "モルヒネ", "ハルシオン", "トリカブト", "バイアグラ", "エリクサー", "クラレ"]), "BN2": $$($nesting, 'Table').$new("名前表:ブレイン族(その2)", "1D10", ["ニトロ", "ダイオキシン", "タウリン", "コイーバ", "マールボロ", "キャメル", "ドクダミ", "アブサン", "ドブロク", "マティーニ"]), "TN1": $$($nesting, 'Table').$new("名前表:テンタクル族(その1)", "1D10", ["アップル", "プリン", "ビフテキ", "ガンモ", "レバニラ", "カボチャ", "コロッケ", "マトン", "ギョーザ", "タバスコ"]), "TN2": $$($nesting, 'Table').$new("名前表:テンタクル族(その2)", "1D10", ["キノコ", "セロリ", "ラザニア", "ユドーフ", "ニンジン", "カイワレ", "ボルシチ", "ハクサイ", "キャラメル", "ワタアメ"]), "MTV": $$($nesting, 'Table').$new("動機決定表", "1D10", ["金。お宝の臭いがした。", "正義。破界の塔は災いのもと。絶たねばならない。", "友情。この破界の塔のせいで友人が困っている。助けなくちゃ。", "探究心。破界の塔のことをもっと知りたい。", "戦闘狂。もっと戦いたい。", "暇つぶし。退屈な日常を忘れたい。", "自殺願望。なんかもう死にたい。", "冒険家。ワクワクしたい。", "山男。シティが肌に合わない。", "特に動機らしい動機はない。"]), "HIT": $$($nesting, 'Table').$new("部位決定チャート", "1D10", ["コックピット", "エンジン", "フレーム", "フレーム", "フレーム", "フレーム", "ライトアーム", "レフトアーム", "ライトレッグ", "レフトレッグ"]), "GCC": $$($nesting, 'Table').$new("ガラコ改造チャート表", "1D10", ["【命中+】価格+200。【操作性】+1。[不安定]1。", "【回避+】価格+200。【機動性】+1。[不安定]1。", "【視界+】価格+200。【視認性】+2。[不安定]1。", "【移動+】価格+100。【移動力】+1。", "【火力+】価格+200。その部位に装着した武器の火力を常に+2する。", "【部位装甲+】価格+100。【部位装甲】+2。", "【限界重量+】価格+100。【限界重量】+1000。", "【安定性+】価格+50。[不安定]-1。", "【スロット+】価格+500。【スロット】+1。", "【弱体無効】価格+500。このパーツへの部位ダメージによる[弱体]の効果を無視する。"]), "WCC": $$($nesting, 'Table').$new("武器改造チャート表", "1D10", ["【命中+】価格+200。【操作性】+1。", "【火力+】価格+200。【火力】+2。", "【射程】価格+200。【射程】+3。「射程:近接」の場合、「射程:3 or 近接」となる(攻撃する度にどちらかを選ぶ)。", "【範囲+】価格+200。1シーンにつき1回、この武器の目標を「範囲2」に変更してもよい(フリーアクション)。もともと範囲攻撃できる武器の場合は、「範囲n+1」にできる(1シーン1回、フリーアクション)。", "【部位変更】価格+200。装着できる部位がランダムに追加される。部位決定チャート(『GHT』p21)を使用して決めること。", "【部位装甲+】価格+100。装着した部位の【部位装甲】+2。", "【精度+】価格+100。この武器を使って狙い撃ちをする場合、命中判定に+1。", "【装飾+】価格+500。特に効果はないが、売却した時の金額が上昇する。", "【幸運+】価格+500。この武器による命中判定の出目が1だった場合、判定を振り直しても良い(1シーン1回まで)。", "【回数無限】価格+500。武器の使用回数制限がなくなる。"]), "EVC": $$($nesting, 'Table').$new("イベントチャート表", "1D10", ["【クリーチャー】スタートル(『GTD』p30)が1d10+3体現れる。戦闘開始。", "【ビット】コーンノーズ(『GTD』p23)が1d10+3体現れる。戦闘開始。", "【ノーマッド】ノーマッド族のランドクローラーと遭遇する。このシーンはノーマッドからアイテムを購入しても良い。ノーマッド族は天蓋都市で購入できるすべてのアイテムを販売している(ただし金額は20%増し)。", "【ピグマー族】君達の目的地方面から、ボロボロになったピグマー族のNPCが歩いてくる。NPCに何があったのかはGMが決めよ。ピグマー族を天蓋都市まで送った場合、謝礼として200クレジットを受け取ることが出来る。NPCは重量50のアイテムとして扱う。", "【ビット】ダスクウォッチ(『GTD』p23)が1d10+3体現れる。戦闘開始。", "【異常気象】嵐、竜巻、豪雨など、異常な気象によって行動を阻害される。PCのうち代表者1名が【視認】10の判定を行うこと。失敗した場合、次のシーンはスポットを移動できない。現在のスポットに留まることになる。", "【クリーチャー】ナグ(『GTD』p31)が1d10+4体現れる。戦闘開始。", "【ビット】ランオーバー(『GTD』p25)が3体現れる。戦闘開始。", "【猛毒の霧】付近に毒の霧が立ち込める。全てのキャラクターは毒によって1d10のHPダメージを受ける。", "【最悪の敵】ズルワーン(『GTD』p29)が1体現れる。戦闘開始。"]), "BSD": $$($nesting, 'Table').$new("戦闘開始距離", "1D10", ["3マス", "3マス", "6マス", "6マス", "9マス", "9マス", "12マス", "12マス", "15マス", "15マス"]), "IDI": $$($nesting, 'RangeTable').$new("個性表", "1D100", [[$range(1, 5, false), "〈近接武器熟練〉 近接攻撃の火力+1。"], [$range(6, 10, false), "〈遠隔武器熟練〉 遠隔攻撃の火力+1。"], [$range(11, 15, false), "〈天才〉 【技術】+1。"], [$range(16, 20, false), "〈頑強〉 【身体】+1。"], [$range(21, 25, false), "〈早業〉 【速度】+1。"], [$range(26, 30, false), "〈スイフトフット〉 【移動力】+1。"], [$range(31, 35, false), "〈超反応〉 行動判定値+2。"], [$range(36, 40, false), "〈警戒心〉 罠を発見するための判定に+2。"], [$range(41, 45, false), "〈解除屋〉 罠を解除するための判定に+2。"], [$range(46, 50, false), "〈タフガイ〉 最大HP+5。"], [51, "〈踏み込み〉 キミが使用する近接武器のデータを「射程:2」に変更する。"], [52, "〈不動〉 キミは強制移動の効果を受けない。"], [53, "〈ペイローダー〉 ガラコの【限界重量】+2000。"], [54, "〈魅力〉 キミがHPを回復するアイテム、もしくは超能力の目標になった時、キミのHPを追加で1点回復する。"], [55, "〈ダブルタップ〉 キミのターン開始時に使用。このターンの間、キミは追加で1回の遠隔攻撃を行うことができる。"], [56, "〈薙ぎ払い〉 キミのターン開始時に使用。このターンの間、キミが行う近接攻撃の目標を「周囲1マス以内にいるすべての敵」に変更する。"], [57, "〈武器落とし〉 キミは部位ひとつを指定する。目標は指定された部位に(スロットを消費して)装着している武器すべてを地面に落とす。"], [58, "〈切り払い〉 キミが行う回避判定の直前に使用。その判定を、【機動性】ではなく【操作性】で判定してよい。ただし、キミは近接武器を装着していなければならない。"], [59, "〈体崩しの達人〉 キミが目標のレッグに攻撃を命中させる度、その目標は【機動性】10の判定を行う。失敗した場合、目標は[伏せ]状態になる。"], [60, "〈超分解術〉 アイテムひとつを目標にする。目標のアイテムの重量を1/4にする。ただし、そのアイテムは使用できなくなる。再度〈超分解術〉の判定に成功することで、元に戻せる(重量が元に戻り、アイテムが使用可能になる)。"], [61, "〈即時換装〉 キミは、ガラコのパーツ換装を(ベースアクションではなく)ムーブアクションで行ってもよい。"], [62, "〈ノックバック〉 キミが目標に5点以上の最終ダメージを与えた直後に使用。目標を1マス、任意の方向に強制移動させる。近接武器で攻撃した場合のみ使用できる。"], [63, "〈照準〉 このターンの間、次に行う攻撃の命中判定+1。"], [64, "〈燃料節約術〉 戦闘時以外、キミは燃料を消費しなくてよい。"], [65, "〈追撃〉 キミの敵が、隣接するマスから離れるような移動を宣言した直後に使用。キミはその敵に対して近接攻撃を行う。近接攻撃の後、敵は移動を行うこと。"], [66, "〈連撃〉 キミが敵の部位を[修復不能]にした直後に使用。キミは再度、その敵に対して攻撃を行う。"], [67, "〈殺し屋〉 キミがコックピットに攻撃を命中させる度、そのガラコの操縦者は2点のHPを失う。"], [68, "〈極大射程〉 キミが扱う遠隔武器の射程を2倍にする。"], [69, "〈援護射撃〉 目標が回避判定を行った直後に使用。目標の回避判定の達成値-1。その後、キミは準備済みの遠隔武器ひとつの使用回数を1減らすこと。"], [70, "〈鉄壁〉 キミがダメージを受けた直後に使用。そのダメージを無効化する。"], [71, "〈心臓狙い〉 キミが部位狙いを行い、コックピット、もしくはエンジンに対して攻撃を行う際、命中判定+1。"], [72, "〈四肢狙い〉 キミが部位狙いを行い、アーム、もしくはレッグに対して攻撃を行う際、命中判定+1。"], [73, "〈窮地逆転〉 キミの判定の出目が1だった時、その出目を10に変更する。"], [74, "〈防御重視〉 ラウンド開始時に使用。【操作性】-1。【機動性】+2。ラウンド終了時まで。"], [75, "〈チアガール〉 目標は即座に追加のターンを得る。"], [76, "〈毒半減〉 キミが[毒]状態になった時、毎回失うHPを1点減らす。ノーマッド族はこの個性を取得できない。"], [77, "〈毒無効〉 キミは[毒]状態にならない。この個性はノーマッド族だけが取得できる。"], [78, "〈生存術〉 キミは各シーン終了時、HPを減らさなくてよい。"], [79, "〈平衡感覚〉 キミは[不安定]状態のペナルティを受けない。"], [80, "〈不屈〉 キミのターン開始時に使用。このターンの間、キミはガラコの損傷による[弱体]の効果を受けない。"], [81, "〈プレデターセンス〉 近接攻撃の命中判定+2。この個性はラット族だけが取得できる。"], [82, "〈鷹の目〉 遠隔攻撃の命中判定+2。この個性はラット族だけが取得できる。"], [83, "〈超リペア術〉 部位をひとつ選択する。目標の部位の被ダメージすべてを一時的に回復する(修復不能を除く)。回復したダメージは、シーン終了時に元に戻る(再度壊れる)。この個性はブレイン族のみが取得できる。"], [84, "〈浮遊術〉 キミは[飛行]状態になる。シーン終了時まで。この個性はテンタクル人のみが取得できる。"], [85, "〈瞬間移動術〉 キミは任意のマスに瞬間移動する。この個性はテンタクル人のみが取得できる。"], [86, "〈ハイボルテージ〉 4ラウンドめ以降、キミが持つすべての武器の火力を+2する。"], [87, "〈スライドディフェンス〉 キミが部位決定チャートを振った直後に使用。チャートの結果を+1する。"], [88, "〈カーブアタック〉 目標が部位決定チャートを振った直後に使用。チャートの結果を-1する。"], [89, "〈サイコショット〉 目標に[火力0]の攻撃を行う(自動命中)。(超能力)"], [90, "〈ファイア〉 目標に[火力5]の攻撃を行う。(超能力)"], [91, "〈アイス〉 目標に[火力3]の攻撃を行う。(超能力)"], [92, "〈サンダー〉 目標に[火力2]の攻撃を行う。(超能力)"], [93, "〈テレパシー〉 キミは念話によって会話することができる。(超能力)"], [94, "〈ミラー〉 目標が超能力の使用を宣言した直後に使用。超能力の目標を使用者自身に変更する。(超能力)"], [95, "〈バインド〉 目標のターン開始時に使用。目標の移動力-3。ターン終了時まで。(超能力)"], [96, "〈アーマー〉 目標のすべての部位装甲+2。シーン終了時まで。(超能力)"], [97, "〈バリア〉 目標がダメージを受けた直後に使用。ダメージを3点軽減する。(超能力)"], [98, "〈ヒール〉 目標のHPを[1d10-4]点回復する。出目が低いとHPを失う可能性があることに注意。(超能力)"], [99, "〈カース〉 目標が判定を行った直後に使用。その判定の達成値を-3する。"], [100, "〈リザレクション〉 死んだ目標を生き返らせる。生き返った目標のHPは10になる。このシーンの間に死亡したキャラクターのみ目標にできる。(超能力)"]])}).$freeze()); - return self.$setPrefixes($rb_plus(["GR.*", "(C|E|F|A|L)DC\\d+"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/GardenOrder.js b/src/assets/dicebot/GardenOrder.js deleted file mode 100644 index e6fd26715..000000000 --- a/src/assets/dicebot/GardenOrder.js +++ /dev/null @@ -1,120 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$setPrefixes', '$===', '$to_i', '$last_match', '$get_critical_border', '$check_roll_repeat_attack', '$look_up_damage_chart', '$nil?', '$max', '$floor', '$/', '$check_roll', '$<', '$roll', '$get_check_result', '$<=', '$>=', '$get_damage_table_info_by_type', '$get_table_by_number', '$[]', '$freeze']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'GardenOrder'); - - var $nesting = [self].concat($parent_nesting), $GardenOrder_rollDiceCommand$1, $GardenOrder_get_critical_border$2, $GardenOrder_check_roll_repeat_attack$3, $GardenOrder_check_roll$4, $GardenOrder_get_check_result$5, $GardenOrder_look_up_damage_chart$6, $GardenOrder_get_damage_table_info_by_type$7; - - - Opal.const_set($nesting[0], 'ID', "GardenOrder"); - Opal.const_set($nesting[0], 'NAME', "ガーデンオーダー"); - Opal.const_set($nesting[0], 'SORT_KEY', "かあてんおおたあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・基本判定\n" + " GOx/y@z x:成功率、y:連続攻撃回数(省略可)、z:クリティカル値(省略可)\n" + " (連続攻撃では1回の判定のみが実施されます)\n" + " 例)GO55 GO100/2 GO70@10 GO155/3@44\n" + "・負傷表\n" + " DCxxy\n" + " xx:属性(切断:SL,銃弾:BL,衝撃:IM,灼熱:BR,冷却:RF,電撃:EL)\n" + " y:ダメージ\n" + " 例)DCSL7 DCEL22\n"); - self.$setPrefixes(["GO(\\-?\\d+)(\\/\\d+)?(@\\d+)?", "DC(SL|BL|IM|BR|RF|EL).+"]); - - Opal.def(self, '$rollDiceCommand', $GardenOrder_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, self = this, $case = nil, success_rate = nil, repeat_count = nil, critical_border_text = nil, critical_border = nil, type = nil, damage_value = nil; - - - $case = command; - if (/GO(\-?\d+)(\/(\d+))?(@(\d+))?/i['$===']($case)) { - success_rate = $$($nesting, 'Regexp').$last_match(1).$to_i(); - repeat_count = ($truthy($a = $$($nesting, 'Regexp').$last_match(3)) ? $a : 1).$to_i(); - critical_border_text = $$($nesting, 'Regexp').$last_match(5); - critical_border = self.$get_critical_border(critical_border_text, success_rate); - return self.$check_roll_repeat_attack(success_rate, repeat_count, critical_border);} - else if (/^DC(SL|BL|IM|BR|RF|EL)(\d+)/i['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1); - damage_value = $$($nesting, 'Regexp').$last_match(2).$to_i(); - return self.$look_up_damage_chart(type, damage_value);}; - return nil; - }, $GardenOrder_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$get_critical_border', $GardenOrder_get_critical_border$2 = function $$get_critical_border(critical_border_text, success_rate) { - var self = this, critical_border = nil; - - - if ($truthy(critical_border_text['$nil?']())) { - } else { - return critical_border_text.$to_i() - }; - critical_border = [$rb_divide(success_rate, 5).$floor(), 1].$max(); - return critical_border; - }, $GardenOrder_get_critical_border$2.$$arity = 2); - - Opal.def(self, '$check_roll_repeat_attack', $GardenOrder_check_roll_repeat_attack$3 = function $$check_roll_repeat_attack(success_rate, repeat_count, critical_border) { - var self = this, success_rate_per_one = nil; - - - success_rate_per_one = $rb_divide(success_rate, repeat_count).$floor(); - return self.$check_roll(success_rate_per_one, critical_border); - }, $GardenOrder_check_roll_repeat_attack$3.$$arity = 3); - - Opal.def(self, '$check_roll', $GardenOrder_check_roll$4 = function $$check_roll(success_rate, critical_border) { - var $a, $b, self = this, fumble_border = nil, dice_value = nil, result = nil, text = nil; - - - if ($truthy($rb_lt(success_rate, 0))) { - success_rate = 0}; - fumble_border = (function() {if ($truthy($rb_lt(success_rate, 100))) { - return 96 - } else { - return 99 - }; return nil; })(); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (dice_value = ($a[0] == null ? nil : $a[0])), $b; - result = self.$get_check_result(dice_value, success_rate, critical_border, fumble_border); - text = "" + "D100<=" + (success_rate) + "@" + (critical_border) + " > " + (dice_value) + " > " + (result); - return text; - }, $GardenOrder_check_roll$4.$$arity = 2); - - Opal.def(self, '$get_check_result', $GardenOrder_get_check_result$5 = function $$get_check_result(dice_value, success_rate, critical_border, fumble_border) { - var self = this; - - - if ($truthy($rb_le(dice_value, critical_border))) { - return "クリティカル"}; - if ($truthy($rb_ge(dice_value, fumble_border))) { - return "ファンブル"}; - if ($truthy($rb_le(dice_value, success_rate))) { - return "成功"}; - return "失敗"; - }, $GardenOrder_get_check_result$5.$$arity = 4); - - Opal.def(self, '$look_up_damage_chart', $GardenOrder_look_up_damage_chart$6 = function $$look_up_damage_chart(type, damage_value) { - var $a, $b, self = this, name = nil, table = nil, row = nil; - - - $b = self.$get_damage_table_info_by_type(type), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b; - row = self.$get_table_by_number(damage_value, table, nil); - if ($truthy(row['$nil?']())) { - return nil}; - return "" + "負傷表:" + (name) + "[" + (damage_value) + "] > " + (row['$[]']("damage")) + " | " + (row['$[]']("name")) + " … " + (row['$[]']("text")); - }, $GardenOrder_look_up_damage_chart$6.$$arity = 2); - - Opal.def(self, '$get_damage_table_info_by_type', $GardenOrder_get_damage_table_info_by_type$7 = function $$get_damage_table_info_by_type(type) { - var self = this, data = nil; - - - data = $$($nesting, 'DAMAGE_TABLE')['$[]'](type); - if ($truthy(data['$nil?']())) { - return nil}; - return [data['$[]']("name"), data['$[]']("table")]; - }, $GardenOrder_get_damage_table_info_by_type$7.$$arity = 1); - return Opal.const_set($nesting[0], 'DAMAGE_TABLE', $hash2(["SL", "BL", "IM", "BR", "RF", "EL"], {"SL": $hash2(["name", "table"], {"name": "切断", "table": [[5, $hash2(["name", "text", "damage"], {"name": "切り傷", "text": "皮膚が切り裂かれる。", "damage": "軽傷1"})], [10, $hash2(["name", "text", "damage"], {"name": "脚部負傷", "text": "足が切り裂かれ、思わずひざまずく。", "damage": "軽傷2/マヒ"})], [13, $hash2(["name", "text", "damage"], {"name": "出血", "text": "斬り裂かれた傷から出血が続く。", "damage": "軽傷3/DOT:軽傷1"})], [16, $hash2(["name", "text", "damage"], {"name": "胴部負傷", "text": "胴部に大きな傷を受ける。", "damage": "軽傷4"})], [19, $hash2(["name", "text", "damage"], {"name": "腕部負傷", "text": "腕に大きな傷を受ける。", "damage": "重傷1/DOT:軽傷1"})], [22, $hash2(["name", "text", "damage"], {"name": "腹部負傷", "text": "腹部を深く切り裂かれる。", "damage": "重傷2"})], [25, $hash2(["name", "text", "damage"], {"name": "大量出血", "text": "傷は深く、そこから大量に出血する。", "damage": "重傷2/DOT:軽傷2"})], [28, $hash2(["name", "text", "damage"], {"name": "裂傷", "text": "治りにくい傷をつけられる。", "damage": "重傷3"})], [31, $hash2(["name", "text", "damage"], {"name": "視界不良", "text": "頭部に受けた傷から血が流れ、視界がふさがれる。", "damage": "重傷3/スタン"})], [34, $hash2(["name", "text", "damage"], {"name": "胸部負傷", "text": "胸から腰にかけて大きく切り裂かれる。", "damage": "致命傷1"})], [37, $hash2(["name", "text", "damage"], {"name": "動脈切断", "text": "動脈が切り裂かれ、噴き出るように出血する。", "damage": "致命傷1/DOT:軽傷3"})], [39, $hash2(["name", "text", "damage"], {"name": "胸部切断", "text": "傷が肺にまで達し、喀血する。", "damage": "致命傷2"})], [9999, $hash2(["name", "text", "damage"], {"name": "脊髄損傷", "text": "脊髄が損傷する。", "damage": "致命傷2/放心、スタン、マヒ"})]]}), "BL": $hash2(["name", "table"], {"name": "銃弾", "table": [[5, $hash2(["name", "text", "damage"], {"name": "腕部損傷", "text": "銃弾が腕をかすめた。", "damage": "軽傷2"})], [10, $hash2(["name", "text", "damage"], {"name": "腕部貫通", "text": "銃弾が腕を貫く。痛みはあるが動作に支障はない。", "damage": "軽傷3"})], [13, $hash2(["name", "text", "damage"], {"name": "胴部負傷", "text": "胴部に銃弾をくらう。痛みで動きが鈍くなる。", "damage": "軽傷4/スロウ:-3"})], [16, $hash2(["name", "text", "damage"], {"name": "肩負傷", "text": "肩を貫かれる。骨が砕けたようだ。", "damage": "重傷1"})], [19, $hash2(["name", "text", "damage"], {"name": "腹部負傷", "text": "腹部が貫かれる。かろうじて内臓にダメージはないようだ。", "damage": "重傷2"})], [22, $hash2(["name", "text", "damage"], {"name": "脚部貫通", "text": "脚を銃弾に貫かれ、その場でひざまずく。", "damage": "重傷2/マヒ"})], [25, $hash2(["name", "text", "damage"], {"name": "消化器系損傷", "text": "胃などの消化器官にダメージを受ける。", "damage": "重傷3"})], [28, $hash2(["name", "text", "damage"], {"name": "盲管銃弾", "text": "身体に弾丸が深々と刺さる。激痛が走る。", "damage": "重傷3/スロウ:-5"})], [31, $hash2(["name", "text", "damage"], {"name": "内臓損傷", "text": "いくつかの内臓にダメージを受ける。", "damage": "致命傷1/スタン"})], [34, $hash2(["name", "text", "damage"], {"name": "胴部貫通", "text": "腹部への攻撃が貫通し、出血する。", "damage": "致命傷1/DOT:軽傷1"})], [37, $hash2(["name", "text", "damage"], {"name": "胸部負傷", "text": "銃弾で肺を貫かれる。", "damage": "致命傷2"})], [39, $hash2(["name", "text", "damage"], {"name": "致命的な一撃", "text": "銃弾が頭部に命中。ショックで意識を飛ばされる。", "damage": "致命傷2/放心"})], [9999, $hash2(["name", "text", "damage"], {"name": "必殺の一撃", "text": "銃弾が心臓の近くを貫く。動脈にダメージを受けたようだ。", "damage": "致命傷2/DOT:重傷1"})]]}), "IM": $hash2(["name", "table"], {"name": "衝撃", "table": [[5, $hash2(["name", "text", "damage"], {"name": "打撲", "text": "攻撃を受けた箇所がどす黒く腫れ上がる。", "damage": "軽傷1"})], [10, $hash2(["name", "text", "damage"], {"name": "転倒", "text": "衝撃で転倒する。", "damage": "軽傷1/マヒ"})], [13, $hash2(["name", "text", "damage"], {"name": "平衡感覚喪失", "text": "衝撃で三半規管にダメージを受ける。", "damage": "軽傷2、疲労2"})], [16, $hash2(["name", "text", "damage"], {"name": "ボディーブロー", "text": "腹部に直撃。痛みが継続し、体力を奪う。", "damage": "軽傷3/DOT:疲労3"})], [19, $hash2(["name", "text", "damage"], {"name": "痛打", "text": "胴部や脚部などに打撃を受ける。", "damage": "軽傷4/スタン"})], [22, $hash2(["name", "text", "damage"], {"name": "頭部痛打", "text": "頭部にクリーンヒット。意識がもうろうとする。", "damage": "軽傷5/放心"})], [25, $hash2(["name", "text", "damage"], {"name": "脚部骨折", "text": "攻撃が足に命中し、骨折する。", "damage": "重傷1/スロウ:-5"})], [28, $hash2(["name", "text", "damage"], {"name": "大転倒", "text": "激しい衝撃によって、負傷すると共に大きく体勢を崩す。", "damage": "重傷1/マヒ、スタン"})], [31, $hash2(["name", "text", "damage"], {"name": "脳震盪", "text": "脳が大きく揺さぶられ、意識が飛びそうになる。", "damage": "重傷2/放心"})], [34, $hash2(["name", "text", "damage"], {"name": "複雑骨折", "text": "攻撃を受けた部分が大きくひしゃげ、複雑骨折したようだ。", "damage": "重傷3/放心、スタン"})], [37, $hash2(["name", "text", "damage"], {"name": "頭部裂傷", "text": "頭部に命中。皮膚が大きく裂ける。", "damage": "致命傷1、疲労3"})], [39, $hash2(["name", "text", "damage"], {"name": "肋骨負傷", "text": "折れた肋骨が肺に突き刺さり、まともに呼吸を行なうことができない。", "damage": "致命傷1/放心、スタン"})], [9999, $hash2(["name", "text", "damage"], {"name": "内臓損傷", "text": "衝撃が身体の芯まで届き、内臓がいくつか傷ついたようだ。", "damage": "致命傷2/DOT:重傷1"})]]}), "BR": $hash2(["name", "table"], {"name": "灼熱", "table": [[5, $hash2(["name", "text", "damage"], {"name": "火傷", "text": "皮膚に小さな火傷を負う。", "damage": "軽傷1"})], [10, $hash2(["name", "text", "damage"], {"name": "温度上昇", "text": "熱によって、怪我だけではなく体力も奪われる。", "damage": "軽傷2、疲労1"})], [13, $hash2(["name", "text", "damage"], {"name": "恐怖", "text": "燃え上がる炎に恐怖を感じ、身体がすくんで動きが止まる。", "damage": "軽傷3/放心"})], [16, $hash2(["name", "text", "damage"], {"name": "発火", "text": "衣服や身体の一部に火が燃え移る。", "damage": "軽傷3/DOT:軽傷1"})], [19, $hash2(["name", "text", "damage"], {"name": "爆発", "text": "爆発により吹き飛ばされ、転倒する。", "damage": "重傷1/マヒ"})], [22, $hash2(["name", "text", "damage"], {"name": "大火傷", "text": "痕が残るほどの大きな火傷を負う。", "damage": "重傷2"})], [25, $hash2(["name", "text", "damage"], {"name": "熱波", "text": "火傷と強力な熱により意識がもうろうとする。", "damage": "重傷2/スタン"})], [28, $hash2(["name", "text", "damage"], {"name": "大爆発", "text": "激しい爆発で吹き飛ばされ、ダメージと共に転倒する。", "damage": "重傷3/マヒ"})], [31, $hash2(["name", "text", "damage"], {"name": "大発火", "text": "広範囲に火が燃え移る。", "damage": "重傷3/DOT:軽傷1"})], [34, $hash2(["name", "text", "damage"], {"name": "炭化", "text": "高熱のあまり、焼けた部分が炭化してしまう。", "damage": "致命傷1"})], [37, $hash2(["name", "text", "damage"], {"name": "内臓火傷", "text": "高温の空気を吸い込む、気道にも火傷を負ってしまう。", "damage": "致命傷1/DOT:軽傷1"})], [39, $hash2(["name", "text", "damage"], {"name": "全身火傷", "text": "身体の各所に深い火傷を負う。", "damage": "致命傷2"})], [9999, $hash2(["name", "text", "damage"], {"name": "致命的火傷", "text": "身体の大部分に焼けどを負う。", "damage": "致命傷2/スタン"})]]}), "RF": $hash2(["name", "table"], {"name": "冷却", "table": [[5, $hash2(["name", "text", "damage"], {"name": "冷気", "text": "軽い凍傷を受ける。", "damage": "軽傷1"})], [10, $hash2(["name", "text", "damage"], {"name": "霜の衣", "text": "身体が薄い氷で覆われ、動きが鈍る。", "damage": "軽傷1/疲労1"})], [13, $hash2(["name", "text", "damage"], {"name": "凍傷", "text": "凍傷により身体が傷つけられる。", "damage": "軽傷2"})], [16, $hash2(["name", "text", "damage"], {"name": "体温低下", "text": "冷気によって体温を奪われる。", "damage": "軽傷3/DOT:疲労1"})], [19, $hash2(["name", "text", "damage"], {"name": "氷の枷", "text": "肘や膝などが氷で覆われ、動きが取りにくくなる。", "damage": "重傷1/マヒ"})], [22, $hash2(["name", "text", "damage"], {"name": "大凍傷", "text": "身体の各所に凍傷を受ける。", "damage": "重傷1/DOT:疲労2"})], [25, $hash2(["name", "text", "damage"], {"name": "氷の束縛", "text": "下半身が凍りつき、動くことができない。", "damage": "重傷2/マヒ"})], [28, $hash2(["name", "text", "damage"], {"name": "視界不良", "text": "頭部にも氷が張り、視界がふさがれる。", "damage": "重傷2/スタン"})], [31, $hash2(["name", "text", "damage"], {"name": "腕部凍結", "text": "腕が凍りづけになり、動かすことができない。", "damage": "重傷3/放心"})], [34, $hash2(["name", "text", "damage"], {"name": "重度凍傷", "text": "さらに体温が低下し、深刻な凍傷を受ける。", "damage": "致命傷1"})], [37, $hash2(["name", "text", "damage"], {"name": "全身凍結", "text": "全身が凍りづけになる。", "damage": "致命傷1/DOT:疲労2"})], [39, $hash2(["name", "text", "damage"], {"name": "致命的凍傷", "text": "身体全身に凍傷を受ける。", "damage": "致命傷2"})], [9999, $hash2(["name", "text", "damage"], {"name": "氷の棺", "text": "完全に氷に閉じ込められる。", "damage": "致命傷2/スタン、マヒ"})]]}), "EL": $hash2(["name", "table"], {"name": "電撃", "table": [[5, $hash2(["name", "text", "damage"], {"name": "静電気", "text": "全身の毛が逆立つ。", "damage": "疲労3"})], [10, $hash2(["name", "text", "damage"], {"name": "電熱傷", "text": "電流によって傷つく。", "damage": "疲労1、軽傷1"})], [13, $hash2(["name", "text", "damage"], {"name": "感電", "text": "電流で傷つくと共に、身体が軽くしびれる。", "damage": "疲労2、軽傷2"})], [16, $hash2(["name", "text", "damage"], {"name": "閃光", "text": "激しい電光により、一時的に視界がふさがれる。", "damage": "軽傷3/スタン"})], [19, $hash2(["name", "text", "damage"], {"name": "脚部感電", "text": "電流により脚がしびれ、動けなくなる。", "damage": "重傷1/マヒ"})], [22, $hash2(["name", "text", "damage"], {"name": "大電熱傷", "text": "身体の各所が電流によって傷つく。", "damage": "疲労2、重傷2"})], [25, $hash2(["name", "text", "damage"], {"name": "腕部負傷", "text": "電流で腕がしびれ、動けなくなる。", "damage": "軽傷1、重傷2/放心"})], [28, $hash2(["name", "text", "damage"], {"name": "大感電", "text": "電流によって身体中がしびれ、動けなくなる。", "damage": "重傷2/スタン、マヒ"})], [31, $hash2(["name", "text", "damage"], {"name": "一時心停止", "text": "強力な電撃のショックにより、心臓がほんの一瞬だけ止まる。", "damage": "疲労3、重傷3"})], [34, $hash2(["name", "text", "damage"], {"name": "大電流", "text": "全身に電流が駆け巡る。", "damage": "重傷3/放心、マヒ"})], [37, $hash2(["name", "text", "damage"], {"name": "致命電熱傷", "text": "全身が電流によって傷つく。", "damage": "重傷1、致命傷1"})], [39, $hash2(["name", "text", "damage"], {"name": "心停止", "text": "強力な電撃のショックにより、心臓が一時的に止まる。死の淵が見える。", "damage": "疲労3、重傷1、致命傷1"})], [9999, $hash2(["name", "text", "damage"], {"name": "組織炭化", "text": "全身が電流で焼かれ、あちこちの組織が炭化する。", "damage": "致命傷2/スタン"})]]})}).$freeze()); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/GehennaAn.js b/src/assets/dicebot/GehennaAn.js deleted file mode 100644 index ab9b28aca..000000000 --- a/src/assets/dicebot/GehennaAn.js +++ /dev/null @@ -1,167 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$gsub', '$last_match', '$checkGehenaAn', '$=~', '$to_i', '$parren_killer', '$roll', '$&', '$sortType', '$collect', '$split', '$each', '$!=', '$<', '$>=', '$+', '$>', '$*', '$-', '$to_s', '$getAnastasisBonusText', '$==', '$/', '$getTougiBonus', '$get_table_by_number']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'GehennaAn'); - - var $nesting = [self].concat($parent_nesting), $GehennaAn_initialize$1, $GehennaAn_changeText$2, $GehennaAn_dice_command_xRn$7, $GehennaAn_checkGehenaAn$8, $GehennaAn_getAnastasisBonusText$11, $GehennaAn_getTougiBonus$12; - - - Opal.const_set($nesting[0], 'ID', "GehennaAn"); - Opal.const_set($nesting[0], 'NAME', "ゲヘナ・アナスタシス"); - Opal.const_set($nesting[0], 'SORT_KEY', "けへなあなすたしす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "戦闘判定と通常判定に対応。幸運の助け、連撃増加値(戦闘判定)、闘技チット(戦闘判定)を自動表示します。\n" + "・戦闘判定 (nGAt+m)\n" + " ダイス数n、目標値t、修正値mで戦闘判定を行います。\n" + " 幸運の助け、連撃増加値、闘技チットを自動処理します。\n" + "・通常判定 (nGt+m)\n" + " ダイス数n、目標値t、修正値mで通常判定を行います。\n" + " 幸運の助けを自動処理します。(連撃増加値、闘技チットを表示抑制します)\n"); - self.$setPrefixes(["(\\d+G\\d+|\\d+GA\\d+)"]); - - Opal.def(self, '$initialize', $GehennaAn_initialize$1 = function $$initialize() { - var $iter = $GehennaAn_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $GehennaAn_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $GehennaAn_initialize$1, false), $zuper, $iter); - self.sendMode = 3; - return (self.sortType = 3); - }, $GehennaAn_initialize$1.$$arity = 0); - - Opal.def(self, '$changeText', $GehennaAn_changeText$2 = function $$changeText(string) { - var $$3, $$4, $$5, $$6, self = this; - - - string = $send(string, 'gsub', [/(\d+)GA(\d+)([\+\-][\+\-\d]+)/], ($$3 = function(){var self = $$3.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6" + ($$($nesting, 'Regexp').$last_match(3)) + ">=" + ($$($nesting, 'Regexp').$last_match(2)) + "[1]"}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - string = $send(string, 'gsub', [/(\d+)GA(\d+)/], ($$4 = function(){var self = $$4.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6>=" + ($$($nesting, 'Regexp').$last_match(2)) + "[1]"}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - string = $send(string, 'gsub', [/(\d+)G(\d+)([\+\-][\+\-\d]+)/], ($$5 = function(){var self = $$5.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6" + ($$($nesting, 'Regexp').$last_match(3)) + ">=" + ($$($nesting, 'Regexp').$last_match(2)) + "[0]"}, $$5.$$s = self, $$5.$$arity = 0, $$5)); - return (string = $send(string, 'gsub', [/(\d+)G(\d+)/], ($$6 = function(){var self = $$6.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6>=" + ($$($nesting, 'Regexp').$last_match(2)) + "[0]"}, $$6.$$s = self, $$6.$$arity = 0, $$6))); - }, $GehennaAn_changeText$2.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $GehennaAn_dice_command_xRn$7 = function $$dice_command_xRn(string, nick_e) { - var self = this; - - return self.$checkGehenaAn(string, nick_e) - }, $GehennaAn_dice_command_xRn$7.$$arity = 2); - - Opal.def(self, '$checkGehenaAn', $GehennaAn_checkGehenaAn$8 = function $$checkGehenaAn(string, nick_e) { - var $a, $b, $$9, $$10, self = this, output = nil, diceCount = nil, modText = nil, diff = nil, mode = nil, mod = nil, diceValue = nil, diceText = nil, diceArray = nil, dice_1st = nil, isLuck = nil, success = nil, failed = nil; - - - output = "1"; - if ($truthy(/(^|\s)S?((\d+)[rR]6([\+\-\d]+)?([>=]+(\d+))(\[(\d)\]))(\s|$)/i['$=~'](string))) { - } else { - return output - }; - string = $$($nesting, 'Regexp').$last_match(2); - diceCount = $$($nesting, 'Regexp').$last_match(3).$to_i(); - modText = $$($nesting, 'Regexp').$last_match(4); - diff = $$($nesting, 'Regexp').$last_match(6).$to_i(); - mode = $$($nesting, 'Regexp').$last_match(8).$to_i(); - mod = self.$parren_killer("" + "(0" + (modText) + ")").$to_i(); - $b = self.$roll(diceCount, 6, self.$sortType()['$&'](1)), $a = Opal.to_ary($b), (diceValue = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceArray = $send(diceText.$split(/,/), 'collect', [], ($$9 = function(i){var self = $$9.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$9.$$s = self, $$9.$$arity = 1, $$9)); - dice_1st = ""; - isLuck = true; - diceValue = 0; - $send(diceArray, 'each', [], ($$10 = function(i){var self = $$10.$$s || this, $c; - - - - if (i == null) { - i = nil; - }; - if ($truthy(dice_1st['$!='](""))) { - if ($truthy(($truthy($c = dice_1st['$!='](i)) ? $c : $rb_lt(i, diff)))) { - isLuck = false} - } else { - dice_1st = i - }; - if ($truthy($rb_ge(i, diff))) { - return (diceValue = $rb_plus(diceValue, 1)) - } else { - return nil - };}, $$10.$$s = self, $$10.$$arity = 1, $$10)); - if ($truthy(($truthy($a = isLuck) ? $rb_gt(diceCount, 1) : $a))) { - diceValue = $rb_times(diceValue, 2)}; - output = "" + (diceValue) + "[" + (diceText) + "]"; - success = $rb_plus(diceValue, mod); - if ($truthy($rb_lt(success, 0))) { - success = 0}; - failed = $rb_minus(diceCount, diceValue); - if ($truthy($rb_lt(failed, 0))) { - failed = 0}; - if ($truthy($rb_gt(mod, 0))) { - output = $rb_plus(output, "" + "+" + (mod)) - } else if ($truthy($rb_lt(mod, 0))) { - output = $rb_plus(output, mod.$to_s())}; - if ($truthy(/[^\d\[\]]+/['$=~'](output))) { - output = "" + (nick_e) + ": (" + (string) + ") > " + (output) + " > 成功" + (success) + "、失敗" + (failed) - } else { - output = "" + (nick_e) + ": (" + (string) + ") > " + (output) - }; - output = $rb_plus(output, self.$getAnastasisBonusText(mode, success)); - return output; - }, $GehennaAn_checkGehenaAn$8.$$arity = 2); - - Opal.def(self, '$getAnastasisBonusText', $GehennaAn_getAnastasisBonusText$11 = function $$getAnastasisBonusText(mode, success) { - var self = this, ma_bonus = nil, bonus_str = nil; - - - if (mode['$=='](0)) { - return ""}; - ma_bonus = $rb_divide($rb_minus(success, 1), 2).$to_i(); - if ($truthy($rb_gt(ma_bonus, 7))) { - ma_bonus = 7}; - bonus_str = ""; - if ($truthy($rb_gt(ma_bonus, 0))) { - bonus_str = $rb_plus(bonus_str, "" + "連撃[+" + (ma_bonus) + "]/")}; - bonus_str = $rb_plus(bonus_str, "" + "闘技[" + (self.$getTougiBonus(success)) + "]"); - return "" + " > " + (bonus_str); - }, $GehennaAn_getAnastasisBonusText$11.$$arity = 2); - return (Opal.def(self, '$getTougiBonus', $GehennaAn_getTougiBonus$12 = function $$getTougiBonus(success) { - var self = this, table = nil; - - - table = [[6, "1"], [13, "2"], [18, "3"], [22, "4"], [99, "5"]]; - return self.$get_table_by_number(success, table); - }, $GehennaAn_getTougiBonus$12.$$arity = 1), nil) && 'getTougiBonus'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/GeishaGirlwithKatana.js b/src/assets/dicebot/GeishaGirlwithKatana.js deleted file mode 100644 index 20468483a..000000000 --- a/src/assets/dicebot/GeishaGirlwithKatana.js +++ /dev/null @@ -1,116 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash = Opal.hash; - - Opal.add_stubs(['$setPrefixes', '$=~', '$getChombaResultText', '$last_match', '$isChomba', '$roll', '$collect', '$split', '$to_i', '$sort!', '$getYaku', '$nil?', '$getResultTextByDice', '$getDemeZorome', '$==', '$debug', '$<=', '$getResultText', '$[]', '$join']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'GeishaGirlwithKatana'); - - var $nesting = [self].concat($parent_nesting), $GeishaGirlwithKatana_rollDiceCommand$1, $GeishaGirlwithKatana_isChomba$3, $GeishaGirlwithKatana_getChombaResultText$4, $GeishaGirlwithKatana_getYaku$5, $GeishaGirlwithKatana_getDemeZorome$6, $GeishaGirlwithKatana_getResultTextByDice$7, $GeishaGirlwithKatana_getResultText$8; - - - Opal.const_set($nesting[0], 'ID', "GeishaGirlwithKatana"); - Opal.const_set($nesting[0], 'NAME', "ゲイシャ・ガール・ウィズ・カタナ"); - Opal.const_set($nesting[0], 'SORT_KEY', "けいしやかあるういすかたな"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 (GK#n)\n" + " 役やチョムバを含めて1回分のダイスロールを判定します。\n" + " 役は (通常判定)/(戦闘時) の順で両方出力されます。\n" + " GK のみの場合5%の確率でチョムバます。\n" + " GK#3 の様に #n をつけることによってチョムバの確率をn%にすることができます。\n" + " 例)GK GK#10\n" + "・隠しコマンド (GL)\n" + " 必ずチョムバします。GMが空気を読んでチョムバさせたいときや、\n" + " GKコマンドを打ち間違えてチョムバするを想定してます。\n" + " 例)GL\n"); - self.$setPrefixes(["GK(#\\d+)?", "GL"]); - - Opal.def(self, '$rollDiceCommand', $GeishaGirlwithKatana_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $b, $$2, self = this, output = nil, chomba_counter = nil, _ = nil, dice_str = nil, diceList = nil, yakuResult = nil, deme = nil, zorome = nil, yp = nil; - - - output = nil; - if ($truthy(/^GL$/i['$=~'](command))) { - return self.$getChombaResultText()}; - if ($truthy(/^GK(#(\d+))?$/i['$=~'](command))) { - } else { - return output - }; - chomba_counter = $$($nesting, 'Regexp').$last_match(2); - if ($truthy(self.$isChomba(chomba_counter))) { - return self.$getChombaResultText()}; - $b = self.$roll(3, 6), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - diceList = $send(dice_str.$split(/,/), 'collect', [], ($$2 = function(i){var self = $$2.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$2.$$s = self, $$2.$$arity = 1, $$2)); - diceList['$sort!'](); - yakuResult = self.$getYaku(diceList); - if ($truthy(yakuResult['$nil?']())) { - } else { - return self.$getResultTextByDice(diceList, "" + "【役】" + (yakuResult)) - }; - $b = self.$getDemeZorome(diceList), $a = Opal.to_ary($b), (deme = ($a[0] == null ? nil : $a[0])), (zorome = ($a[1] == null ? nil : $a[1])), $b; - if (deme['$=='](0)) { - return self.$getResultTextByDice(diceList, "失敗")}; - yp = (function() {if (zorome['$=='](1)) { - return " YPが1増加" - } else { - return "" - }; return nil; })(); - output = self.$getResultTextByDice(diceList, "" + "達成値" + (deme) + (yp)); - self.$debug("getGGwKResult(command) result", output); - return output; - }, $GeishaGirlwithKatana_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$isChomba', $GeishaGirlwithKatana_isChomba$3 = function $$isChomba(chomba_counter) { - var $a, $b, self = this, chomba = nil; - - - chomba_counter = ($truthy($a = chomba_counter) ? $a : 5); - chomba_counter = chomba_counter.$to_i(); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (chomba = ($a[0] == null ? nil : $a[0])), $b; - return $rb_le(chomba, chomba_counter); - }, $GeishaGirlwithKatana_isChomba$3.$$arity = 1); - - Opal.def(self, '$getChombaResultText', $GeishaGirlwithKatana_getChombaResultText$4 = function $$getChombaResultText() { - var self = this; - - return self.$getResultText("チョムバ!!") - }, $GeishaGirlwithKatana_getChombaResultText$4.$$arity = 0); - - Opal.def(self, '$getYaku', $GeishaGirlwithKatana_getYaku$5 = function $$getYaku(diceList) { - var self = this, rule = nil, yaku = nil; - - - rule = $hash([1, 2, 3], "自動失敗/自分の装甲効果無しでダメージを受けてしまう", [4, 5, 6], "自動成功/敵の装甲を無視してダメージを与える", [1, 1, 1], "10倍成功 YPが10増加/10倍ダメージ YPが10増加", [2, 2, 2], "2倍成功/2倍ダメージ", [3, 3, 3], "3倍成功/3倍ダメージ", [4, 4, 4], "4倍成功/4倍ダメージ", [5, 5, 5], "5倍成功/5倍ダメージ", [6, 6, 6], "6倍成功/6倍ダメージ"); - yaku = rule['$[]'](diceList); - return yaku; - }, $GeishaGirlwithKatana_getYaku$5.$$arity = 1); - - Opal.def(self, '$getDemeZorome', $GeishaGirlwithKatana_getDemeZorome$6 = function $$getDemeZorome(diceList) { - var self = this, deme = nil, zorome = nil; - - - deme = 0; - zorome = 0; - if (diceList['$[]'](0)['$=='](diceList['$[]'](1))) { - - deme = diceList['$[]'](2); - zorome = diceList['$[]'](0); - } else if (diceList['$[]'](1)['$=='](diceList['$[]'](2))) { - - deme = diceList['$[]'](0); - zorome = diceList['$[]'](1);}; - return [deme, zorome]; - }, $GeishaGirlwithKatana_getDemeZorome$6.$$arity = 1); - - Opal.def(self, '$getResultTextByDice', $GeishaGirlwithKatana_getResultTextByDice$7 = function $$getResultTextByDice(diceList, result) { - var self = this; - - return self.$getResultText("" + (diceList.$join(",")) + " > " + (result)) - }, $GeishaGirlwithKatana_getResultTextByDice$7.$$arity = 2); - return (Opal.def(self, '$getResultText', $GeishaGirlwithKatana_getResultText$8 = function $$getResultText(result) { - var self = this; - - return "" + "(3B6) > " + (result) - }, $GeishaGirlwithKatana_getResultText$8.$$arity = 1), nil) && 'getResultText'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/GoblinSlayer.js b/src/assets/dicebot/GoblinSlayer.js deleted file mode 100644 index 22fe483fb..000000000 --- a/src/assets/dicebot/GoblinSlayer.js +++ /dev/null @@ -1,154 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$===', '$getCheckResult', '$murmurChantPrayInvoke', '$damageBonus', '$match', '$to_i', '$[]', '$nil?', '$<=', '$roll', '$+', '$==', '$resultStr', '$!', '$>=', '$>']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'GoblinSlayer'); - - var $nesting = [self].concat($parent_nesting), $GoblinSlayer_initialize$1, $GoblinSlayer_rollDiceCommand$2, $GoblinSlayer_getCheckResult$3, $GoblinSlayer_murmurChantPrayInvoke$4, $GoblinSlayer_damageBonus$5, $GoblinSlayer_resultStr$6; - - - Opal.const_set($nesting[0], 'ID', "GoblinSlayer"); - Opal.const_set($nesting[0], 'NAME', "ゴブリンスレイヤーTRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "こふりんすれいやあTRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 GS(x)>=y\n" + " 2d6の判定を行い、達成値を出力します。\n" + " xは基準値、yは目標値です。いずれも省略可能です。\n" + " yが設定されている場合、大成功/成功/失敗/大失敗を自動判定します。\n" + " 例)GS>=12 GS>10 GS(10)>14 GS+10>=15 GS10>=15 GS(10) GS+10 GS10 GS\n" + "\n" + "・祈念 MCPI(n)$m\n" + " 祈念を行います。\n" + " nは【幸運】などによるボーナスです。この値は省略可能です。\n" + " mは因果点の現在値です。\n" + " 因果点の現在値を使用して祈念を行い、成功/失敗を自動判定します。\n" + " 例)MCPI$3 MCPI(1)$4 MCPI+2$5 MCPI2$6\n" + "\n" + "・命中判定の効力値によるボーナス DB(n)\n" + " ダメージ効力表による威力へのボーナスを自動で求めます。\n" + " nは命中判定の効力値です。\n" + " 例)DB(15) DB12\n" + "\n" + "※上記コマンドの計算内で割り算を行った場合、小数点以下は切り上げされます。\n" + " ただしダイス出目を割り算した場合、小数点以下は切り捨てされます。\n" + " 例)入力:GS(8+3/2) 実行結果:(GS10) > 10 + 3[1,2] > 13\n" + "   入力:2d6/2  実行結果:(2D6/2) > 3[1,2]/2 > 1\n" + "\n" + "※MCPIでは、シークレットダイスを使用できません。\n"); - self.$setPrefixes(["GS\\(\\d+\\)", "GS.*", "^MCPI.*\\$\\d+$", "DB\\d+"]); - - Opal.def(self, '$initialize', $GoblinSlayer_initialize$1 = function $$initialize() { - var $iter = $GoblinSlayer_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $GoblinSlayer_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $GoblinSlayer_initialize$1, false), $zuper, $iter); - return (self.fractionType = "roundUp"); - }, $GoblinSlayer_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $GoblinSlayer_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if (/^GS/i['$===']($case)) {return self.$getCheckResult(command)} - else if (/^MCPI/i['$===']($case)) {return self.$murmurChantPrayInvoke(command)} - else if (/^DB/i['$===']($case)) {return self.$damageBonus(command)} - else {return nil}})() - }, $GoblinSlayer_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getCheckResult', $GoblinSlayer_getCheckResult$3 = function $$getCheckResult(command) { - var $a, $b, self = this, m = nil, basis = nil, target = nil, without_compare = nil, cmp_op = nil, total = nil, diceText = nil, achievement = nil, fumble = nil, critical = nil, result = nil, basis_str = nil; - - - m = /^GS([-+]?\d+)?((>=?)(\d+))?$/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - basis = m['$[]'](1).$to_i(); - target = m['$[]'](4).$to_i(); - without_compare = ($truthy($a = m['$[]'](2)['$nil?']()) ? $a : $rb_le(target, 0)); - cmp_op = m['$[]'](3); - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - achievement = $rb_plus(basis, total); - fumble = diceText['$==']("1,1"); - critical = diceText['$==']("6,6"); - result = "" + " > " + (self.$resultStr(achievement, target, cmp_op, fumble, critical)); - if ($truthy(($truthy($a = ($truthy($b = without_compare) ? fumble['$!']() : $b)) ? critical['$!']() : $a))) { - result = ""}; - basis_str = (function() {if (basis['$=='](0)) { - return "" - } else { - return "" + (basis) + " + " - }; return nil; })(); - return "" + "(" + (command) + ") > " + (basis_str) + (total) + "[" + (diceText) + "] > " + (achievement) + (result); - }, $GoblinSlayer_getCheckResult$3.$$arity = 1); - - Opal.def(self, '$murmurChantPrayInvoke', $GoblinSlayer_murmurChantPrayInvoke$4 = function $$murmurChantPrayInvoke(command) { - var $a, $b, self = this, m = nil, luck = nil, volition = nil, total = nil, diceText = nil, achievement = nil, result = nil, luck_str = nil; - - - m = /^MCPI(\+?\d+)?\$(\d+)$/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - luck = m['$[]'](1).$to_i(); - volition = m['$[]'](2).$to_i(); - if ($truthy($rb_ge(volition, 12))) { - return "因果点が12点以上の場合、因果点は使用できません。"}; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - achievement = $rb_plus(total, luck); - result = "" + " > " + (self.$resultStr(achievement, volition, ">=", false, false)); - luck_str = (function() {if (luck['$=='](0)) { - return "" - } else { - return "" + "+" + (luck) - }; return nil; })(); - return "" + "祈念(2d6" + (luck_str) + ") > " + (total) + "[" + (diceText) + "]" + (luck_str) + " > " + (achievement) + (result) + ", 因果点:" + (volition) + "点 → " + ($rb_plus(volition, 1)) + "点"; - }, $GoblinSlayer_murmurChantPrayInvoke$4.$$arity = 1); - - Opal.def(self, '$damageBonus', $GoblinSlayer_damageBonus$5 = function $$damageBonus(command) { - var $a, $b, self = this, m = nil, num = nil, fmt = nil, total = nil, diceText = nil; - - - m = /^DB(\d+)$/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - num = m['$[]'](1).$to_i(); - fmt = "命中判定の効力値によるボーナス > "; - if ($truthy($rb_ge(num, 40))) { - $b = self.$roll(5, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b - } else if ($truthy($rb_ge(num, 30))) { - $b = self.$roll(4, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b - } else if ($truthy($rb_ge(num, 25))) { - $b = self.$roll(3, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b - } else if ($truthy($rb_ge(num, 20))) { - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b - } else if ($truthy($rb_ge(num, 15))) { - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b - } else { - return $rb_plus(fmt, "なし") - }; - return $rb_plus(fmt, "" + (total) + "[" + (diceText) + "] > " + (total)); - }, $GoblinSlayer_damageBonus$5.$$arity = 1); - return (Opal.def(self, '$resultStr', $GoblinSlayer_resultStr$6 = function $$resultStr(achievement, target, cmp_op, fumble, critical) { - var self = this; - - - if ($truthy(fumble)) { - return "大失敗"}; - if ($truthy(critical)) { - return "大成功"}; - if (cmp_op['$=='](">=")) { - return (function() {if ($truthy($rb_ge(achievement, target))) { - return "成功" - } else { - return "失敗" - }; return nil; })() - } else { - return (function() {if ($truthy($rb_gt(achievement, target))) { - return "成功" - } else { - return "失敗" - }; return nil; })() - }; - }, $GoblinSlayer_resultStr$6.$$arity = 5), nil) && 'resultStr'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/GoldenSkyStories.js b/src/assets/dicebot/GoldenSkyStories.js deleted file mode 100644 index 3fbb3e703..000000000 --- a/src/assets/dicebot/GoldenSkyStories.js +++ /dev/null @@ -1,67 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$debug', '$===', '$getaRoll', '$empty?', '$roll', '$collect', '$split', '$to_i', '$+', '$[]']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'GoldenSkyStories'); - - var $nesting = [self].concat($parent_nesting), $GoldenSkyStories_isGetOriginalMessage$1, $GoldenSkyStories_rollDiceCommand$2, $GoldenSkyStories_getaRoll$3; - - - Opal.const_set($nesting[0], 'ID', "GoldenSkyStories"); - Opal.const_set($nesting[0], 'NAME', "ゆうやけこやけ"); - Opal.const_set($nesting[0], 'SORT_KEY', "ゆうやけこやけ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "※「ゆうやけこやけ」はダイスロールを使用しないシステムです。\n" + "※このダイスボットは部屋のシステム名表示用となります。\n" + "\n" + "・下駄占い (GETA)\n" + " あーしたてんきになーれ\n"); - self.$setPrefixes(["geta"]); - - Opal.def(self, '$isGetOriginalMessage', $GoldenSkyStories_isGetOriginalMessage$1 = function $$isGetOriginalMessage() { - var self = this; - - return true - }, $GoldenSkyStories_isGetOriginalMessage$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $GoldenSkyStories_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, result = nil, $case = nil; - - - self.$debug("rollDiceCommand command", command); - result = ""; - $case = command; - if (/geta/i['$===']($case)) {result = self.$getaRoll()}; - if ($truthy(result['$empty?']())) { - return nil}; - return "" + (command) + " > " + (result); - }, $GoldenSkyStories_rollDiceCommand$2.$$arity = 1); - return (Opal.def(self, '$getaRoll', $GoldenSkyStories_getaRoll$3 = function $$getaRoll() { - var $a, $b, $$4, self = this, result = nil, _ = nil, diceText = nil, diceList = nil, getaString = nil, $case = nil; - - - result = ""; - $b = self.$roll(1, 7), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceList = $send(diceText.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - result = $rb_plus(result, "下駄占い > "); - getaString = ""; - $case = diceList['$[]'](0); - if ((1)['$===']($case)) {getaString = "裏:あめ"} - else if ((2)['$===']($case)) {getaString = "表:はれ"} - else if ((3)['$===']($case)) {getaString = "裏:あめ"} - else if ((4)['$===']($case)) {getaString = "表:はれ"} - else if ((5)['$===']($case)) {getaString = "裏:あめ"} - else if ((6)['$===']($case)) {getaString = "表:はれ"} - else if ((7)['$===']($case)) {getaString = "横:くもり"}; - result = $rb_plus(result, getaString); - return result; - }, $GoldenSkyStories_getaRoll$3.$$arity = 0), nil) && 'getaRoll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Gorilla.js b/src/assets/dicebot/Gorilla.js deleted file mode 100644 index c006b7630..000000000 --- a/src/assets/dicebot/Gorilla.js +++ /dev/null @@ -1,42 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$gsub', '$last_match', '$==', '$send']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Gorilla'); - - var $nesting = [self].concat($parent_nesting), $Gorilla_changeText$1, $Gorilla_check_2D6$3; - - - Opal.const_set($nesting[0], 'ID', "Gorilla"); - Opal.const_set($nesting[0], 'NAME', "ゴリラTRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "こりらTRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "2D6ロール時のゴリティカル自動判定を行います。\n" + "\n" + "G = 2D6のショートカット\n" + "\n" + "例) G>=7 : 2D6して7以上なら成功\n"); - self.$setPrefixes(["G.*"]); - - Opal.def(self, '$changeText', $Gorilla_changeText$1 = function $$changeText(string) { - var $$2, self = this; - - - string = $send(string, 'gsub', [/^(S)?G/i], ($$2 = function(){var self = $$2.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "2D6"}, $$2.$$s = self, $$2.$$arity = 0, $$2)); - return string; - }, $Gorilla_changeText$1.$$arity = 1); - return (Opal.def(self, '$check_2D6', $Gorilla_check_2D6$3 = function $$check_2D6(total, _dice_total, dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (dice_list['$==']([5, 5])) { - return " > ゴリティカル(自動的成功)" - } else if ($truthy(total.$send(cmp_op, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $Gorilla_check_2D6$3.$$arity = 5), nil) && 'check_2D6'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/GranCrest.js b/src/assets/dicebot/GranCrest.js deleted file mode 100644 index a5b131e97..000000000 --- a/src/assets/dicebot/GranCrest.js +++ /dev/null @@ -1,145 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$>=', '$count', '$+', '$!=', '$==', '$debug', '$===', '$getMeetingTableResult', '$getFeelingTableResult', '$getCountryTableResult', '$get_table_by_d66', '$=~', '$get_table_by_1d6']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'GranCrest'); - - var $nesting = [self].concat($parent_nesting), $GranCrest_initialize$1, $GranCrest_check_nD6$2, $GranCrest_rollDiceCommand$3, $GranCrest_getMeetingTableResult$4, $GranCrest_getFeelingTableResult$5, $GranCrest_getCountryTableResult$6; - - - Opal.const_set($nesting[0], 'ID', "GranCrest"); - Opal.const_set($nesting[0], 'NAME', "グランクレストRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "くらんくれすとRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・2D6の目標値判定でクリティカル処理\n" + " 例)3d6>=19 3d6+5>=24\n" + "・邂逅表(MT)\n" + "・感情表(-FT)\n" + " ポジティブ感情表(PFT)、ネガティブ感情表(NFT)\n" + "・国特徴表(-CT)\n" + " カテゴリー表(CT)、地形表(TCT)、産業表(ICT)、人物表(PCT)\n" + " 組織表(OCT)、拠点表(BCT)、文化表(CCT)\n"); - self.$setPrefixes(["MT", "PFT", "NFT", "CT", "TCT", "ICT", "PCT", "OCT", "BCT", "CCT"]); - - Opal.def(self, '$initialize', $GranCrest_initialize$1 = function $$initialize() { - var $iter = $GranCrest_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $GranCrest_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $GranCrest_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - self.d66Type = 1; - return (self.fractionType = "omit"); - }, $GranCrest_initialize$1.$$arity = 0); - - Opal.def(self, '$check_nD6', $GranCrest_check_nD6$2 = function $$check_nD6(total, _dice_total, dice_list, cmp_op, target) { - var $a, self = this, result = nil; - - - result = ""; - if ($truthy($rb_ge(dice_list.$count(6), 2))) { - - total = $rb_plus(total, 10); - result = "" + "(クリティカル) > " + (total);}; - if ($truthy(($truthy($a = cmp_op['$!='](">=")) ? $a : target['$==']("?")))) { - return result}; - if ($truthy($rb_ge(total, target))) { - result = $rb_plus(result, " > 成功") - } else { - result = $rb_plus(result, " > 失敗") - }; - return result; - }, $GranCrest_check_nD6$2.$$arity = 5); - Opal.alias(self, "check_2D6", "check_nD6"); - - Opal.def(self, '$rollDiceCommand', $GranCrest_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var $a, $b, self = this, tableName = nil, result = nil, $case = nil, number = nil, text = nil; - - - self.$debug("rollDiceCommand command", command); - tableName = ""; - result = ""; - $case = command; - if ("MT"['$===']($case)) {$b = self.$getMeetingTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if (/^.+FT$/i['$===']($case)) {$b = self.$getFeelingTableResult(command), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if (/^.*CT$/i['$===']($case)) {$b = self.$getCountryTableResult(command), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else { - self.$debug("rollDiceCommand commandNOT matched -> command:", command); - return "";}; - text = "" + (tableName) + "(" + (number) + ") > " + (result); - return text; - }, $GranCrest_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$getMeetingTableResult', $GranCrest_getMeetingTableResult$4 = function $$getMeetingTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "邂逅表"; - table = ["師匠\nあなたは彼(彼女)から多くのものを学んだ。あなたにとって、彼(彼女)は師であった。", "保護者\nあなたは彼(彼女)を兄や姉、あるいは父親のように慕っている。もちろん本当に血縁関係があってもよい。", "恩人\nあなたは彼(彼女)に恩義があり、その恩を返したいと思っている。", "忠誠\nあなたは彼(彼女)に忠誠を誓っている。それはあなたが望んでそうしているのか、別の事情があるのかは好きに設定すること。", "借り\nあなたは彼(彼女)に何らかの借りがある。その借りは必ず返さねばならないものだ。", "興味\nあなたは彼(彼女)に興味がある。善悪の問題ではない。どこかで、彼(彼女)を面白いと感じるのだ。", "師匠\nあなたは彼(彼女)から多くのものを学んだ。あなたにとって、彼(彼女)は師であった。", "保護者\nあなたは彼(彼女)を兄や姉、あるいは父親のように慕っている。もちろん本当に血縁関係があってもよい。", "恩人\nあなたは彼(彼女)に恩義があり、その恩を返したいと思っている。", "忠誠\nあなたは彼(彼女)に忠誠を誓っている。それはあなたが望んでそうしているのか、別の事情があるのかは好きに設定すること。", "借り\nあなたは彼(彼女)に何らかの借りがある。その借りは必ず返さねばならないものだ。", "興味\nあなたは彼(彼女)に興味がある。善悪の問題ではない。どこかで、彼(彼女)を面白いと感じるのだ。", "家族\nあなたは彼(彼女)は家族同然の関係だ。もちろん本当に血縁関係があってもよい。", "友人\nあなたと彼(彼女)は友人だ。共に時間を過ごし、その友情を育んできた。", "仲間\nあなたと彼(彼女)は仲間同士だ。同じ目的、同じ志を持ち、共に協力してこれまで事に当たってきた。", "仕事\nあなたと彼(彼女)は仕事上でのつきあいだ。仕事相手として信頼できる相手ではあるが、それ以上でもそれ以下でもない。", "腐れ縁\nあなたと彼(彼女)は、何かにつけてよく顔を合わせる腐れ縁だ。長いつきあいと言えるだろう。", "忘却\nあなたと彼(彼女)は、どこかで出会ったことがある。だが、それがいつ、どこだったかを思い出すことはできない。", "家族\nあなたは彼(彼女)は家族同然の関係だ。もちろん本当に血縁関係があってもよい。", "友人\nあなたと彼(彼女)は友人だ。共に時間を過ごし、その友情を育んできた。", "仲間\nあなたと彼(彼女)は仲間同士だ。同じ目的、同じ志を持ち、共に協力してこれまで事に当たってきた。", "仕事\nあなたと彼(彼女)は仕事上でのつきあいだ。仕事相手として信頼できる相手ではあるが、それ以上でもそれ以下でもない。", "腐れ縁\nあなたと彼(彼女)は、何かにつけてよく顔を合わせる腐れ縁だ。長いつきあいと言えるだろう。", "忘却\nあなたと彼(彼女)は、どこかで出会ったことがある。だが、それがいつ、どこだったかを思い出すことはできない。", "慕情\nあなたは彼(彼女)を慕っている。心の底から、純粋に、それは恋愛感情と呼べるものかもしれない。", "貸し\nあなたは彼(彼女)に貸しがある。いつか、この貸しは必ず返してもらわねばならない。", "弟妹\nあなたは彼(彼女)を弟や妹のように思っている。もちろん本当に血縁関係があってもよい。", "秘密\nあなたと彼(彼女)は秘密を共有している仲だ。一方的に秘密を握られているのかもしれない。", "好敵手\nあなたと彼(彼女)は好敵手――ライバルという関係がふさわしい。いつかヤツに勝つため、あなたは研鑽を積む。", "仇敵\n彼(彼女)はあなたの仇敵だ。いつかヤツを殺し、雪辱を果たさなければ気が済まない。", "慕情\nあなたは彼(彼女)を慕っている。心の底から、純粋に、それは恋愛感情と呼べるものかもしれない。", "貸し\nあなたは彼(彼女)に貸しがある。いつか、この貸しは必ず返してもらわねばならない。", "弟妹\nあなたは彼(彼女)を弟や妹のように思っている。もちろん本当に血縁関係があってもよい。", "秘密\nあなたと彼(彼女)は秘密を共有している仲だ。一方的に秘密を握られているのかもしれない。", "好敵手\nあなたと彼(彼女)は好敵手――ライバルという関係がふさわしい。いつかヤツに勝つため、あなたは研鑽を積む。", "仇敵\n彼(彼女)はあなたの仇敵だ。いつかヤツを殺し、雪辱を果たさなければ気が済まない。"]; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $GranCrest_getMeetingTableResult$4.$$arity = 0); - - Opal.def(self, '$getFeelingTableResult', $GranCrest_getFeelingTableResult$5 = function $$getFeelingTableResult(command) { - var $a, $b, self = this, tableName = nil, table = nil, $case = nil, result = nil, number = nil; - - - self.$debug("getFeelingTableResult command", command); - tableName = ""; - table = []; - $case = command; - if (/^PFT$/i['$===']($case) || /^PositiveFT$/i['$===']($case)) { - tableName = "ポジティブ感情表"; - table = ["好奇心\nあなたは彼(彼女)に好奇心を感じた。彼(彼女)はとても面白い。もっと知ってみたいと感じた。", "憧憬\nあなたは彼(彼女)にあこがれを感じた。彼(彼女)のようになりたいと思った。その思いは今でも続いている。", "尊敬\nあなたは彼(彼女)を尊敬している。彼(彼女)を敬い、決して下には見ないだろう。", "同志\nあなたは彼(彼女)と同じ志を持つものだと感じている。共に道を行く仲間、もしかしたら好敵手なのかもしれない。", "友情\nあなたは彼(彼女)に友情を感じている。彼(彼女)は得がたい友人だ。あなたを助け、そしてあなたも向こうを助けることだろう。", "慕情\nあなたは彼(彼女)にほのかな愛情を感じている。それは恋と呼ばれるものかもしれないし、違うかもしれない。", "好奇心\nあなたは彼(彼女)に好奇心を感じた。彼(彼女)はとても面白い。もっと知ってみたいと感じた。", "憧憬\nあなたは彼(彼女)にあこがれを感じた。彼(彼女)のようになりたいと思った。その思いは今でも続いている。", "尊敬\nあなたは彼(彼女)を尊敬している。彼(彼女)を敬い、決して下には見ないだろう。", "同志\nあなたは彼(彼女)と同じ志を持つものだと感じている。共に道を行く仲間、もしかしたら好敵手なのかもしれない。", "友情\nあなたは彼(彼女)に友情を感じている。彼(彼女)は得がたい友人だ。あなたを助け、そしてあなたも向こうを助けることだろう。", "慕情\nあなたは彼(彼女)にほのかな愛情を感じている。それは恋と呼ばれるものかもしれないし、違うかもしれない。", "庇護\nあなたは彼(彼女)を守ってやらねばならぬ、と感じている。あなたが彼(彼女)を苦難から救うのだ。", "幸福感\nあなたは彼(彼女)を見ると、幸福感に包まれる。彼(彼女)がそばにいる、それがあなたにとっては幸せなのだ。", "信頼\nあなたは彼(彼女)を信用している。その能力を、もしくは性格を、信じ、頼っている。", "尽力\nあなたは彼(彼女)に力を尽くしたいと考えている。彼(彼女)の役に立つ、それがあなたのしたいことだ。", "可能性\nあなたは彼(彼女)に、何らかの可能性を感じている。今はまだ未熟でも、彼(彼女)はいつか花開くだろう。", "慈愛\nあなたは彼(彼女)に愛情を感じている。見返りなどなくとも、あなたは彼(彼女)の力となるだろう。", "庇護\nあなたは彼(彼女)を守ってやらねばならぬ、と感じている。あなたが彼(彼女)を苦難から救うのだ。", "幸福感\nあなたは彼(彼女)を見ると、幸福感に包まれる。彼(彼女)がそばにいる、それがあなたにとっては幸せなのだ。", "信頼\nあなたは彼(彼女)を信用している。その能力を、もしくは性格を、信じ、頼っている。", "尽力\nあなたは彼(彼女)に力を尽くしたいと考えている。彼(彼女)の役に立つ、それがあなたのしたいことだ。", "可能性\nあなたは彼(彼女)に、何らかの可能性を感じている。今はまだ未熟でも、彼(彼女)はいつか花開くだろう。", "慈愛\nあなたは彼(彼女)に愛情を感じている。見返りなどなくとも、あなたは彼(彼女)の力となるだろう。", "かわいい\nあなたは彼(彼女)をかわいいと思っている。いつまでも愛でることができたら、それはどんなに幸せだろうか。", "同情\nあなたは彼(彼女)に同情している。その過去か、それとも別のものか、あなたは彼(彼女)をかわいそうだと思っている。", "連帯感\nあなたは彼(彼女)に連帯感を持っている。彼(彼女)はどこかで自分と似ていると思っている。", "親近感\nあなたは彼(彼女)に親近感を抱いている。彼(彼女)は家族のようなものだ。そう接してもよいだろう。", "感服\nあなたは彼(彼女)に感服している。その能力か、それとも別の事柄か、彼(彼女)をすごいと感じ、認めている。", "誠意\nあなたは彼(彼女)に誠意を感じている。他がどうであろうとも、彼(彼女)はあなたにとってみれば誠実だ。", "かわいい\nあなたは彼(彼女)をかわいいと思っている。いつまでも愛でることができたら、それはどんなに幸せだろうか。", "同情\nあなたは彼(彼女)に同情している。その過去か、それとも別のものか、あなたは彼(彼女)をかわいそうだと思っている。", "連帯感\nあなたは彼(彼女)に連帯感を持っている。彼(彼女)はどこかで自分と似ていると思っている。", "親近感\nあなたは彼(彼女)に親近感を抱いている。彼(彼女)は家族のようなものだ。そう接してもよいだろう。", "感服\nあなたは彼(彼女)に感服している。その能力か、それとも別の事柄か、彼(彼女)をすごいと感じ、認めている。", "誠意\nあなたは彼(彼女)に誠意を感じている。他がどうであろうとも、彼(彼女)はあなたにとってみれば誠実だ。"];} - else if (/^NFT$/i['$===']($case) || /^NegativeFT$/i['$===']($case)) { - tableName = "ネガティブ感情表"; - table = ["憤憑\nあなたは彼(彼女)に憤憑を覚えている。性格か、その癖か、何かにあなたは怒りを覚えているのだ。", "悲哀\nあなたは彼(彼女)に悲哀を感じている。その過去か、それとも別のものか、あなたは彼(彼女)をかわいそうだと感じている。", "寂しさ\nあなたは彼(彼女)を見ると寂しさを覚える。もっと距離を近づけたいのか、別の理由なのか、ともあれ、どこか寂しいのだ。", "食傷\nあなたは彼(彼女)に食傷を覚えている。口癖や考え方、あるいは別のものにうんざりしているのだ。", "敵愾心\nあなたは彼(彼女)に敵愾心を覚えている。ここだけは彼(彼女)に負けたくないと思っているのだ。", "不快感\nあなたは彼(彼女)に不快感を覚えている。他のところはともかく、どうしてもここだけはイヤだ、という部分があるのだ。", "憤憑\nあなたは彼(彼女)に憤憑を覚えている。性格か、その癖か、何かにあなたは怒りを覚えているのだ。", "悲哀\nあなたは彼(彼女)に悲哀を感じている。その過去か、それとも別のものか、あなたは彼(彼女)をかわいそうだと感じている。", "寂しさ\nあなたは彼(彼女)を見ると寂しさを覚える。もっと距離を近づけたいのか、別の理由なのか、ともあれ、どこか寂しいのだ。", "食傷\nあなたは彼(彼女)に食傷を覚えている。口癖や考え方、あるいは別のものにうんざりしているのだ。", "敵愾心\nあなたは彼(彼女)に敵愾心を覚えている。ここだけは彼(彼女)に負けたくないと思っているのだ。", "不快感\nあなたは彼(彼女)に不快感を覚えている。他のところはともかく、どうしてもここだけはイヤだ、という部分があるのだ。", "猜疑心\nあなたは彼(彼女)に猜疑心を覚えている。なぜか、彼(彼女)のことを信じられない。どこかで疑ってしまうのだ。", "嫌悪\nあなたは彼(彼女)のことを嫌っている。考え方なのか、癖なのか、どうしても拒否感を覚えずにはいられない。", "隔意\nあなたは彼(彼女)とは隔たりがあると感じている。何かの分野について、向こうと自分には距離があると思っている。", "憎悪\nあなたは彼(彼女)を憎んでいる。ここだけは許せない、という部分について、憎しみを燃やさずにはいられない。", "偏愛\nあなたは彼(彼女)を愛している。だが、その愛はどこか偏りがある、一方通行気味のものだ。", "疎外感\nあなたは彼(彼女)に疎外感を覚えている。なぜか仲間はずれにされているような、そんな感覚がまとわりつく。", "猜疑心\nあなたは彼(彼女)に猜疑心を覚えている。なぜか、彼(彼女)のことを信じられない。どこかで疑ってしまうのだ。", "嫌悪\nあなたは彼(彼女)のことを嫌っている。考え方なのか、癖なのか、どうしても拒否感を覚えずにはいられない。", "隔意\nあなたは彼(彼女)とは隔たりがあると感じている。何かの分野について、向こうと自分には距離があると思っている。", "憎悪\nあなたは彼(彼女)を憎んでいる。ここだけは許せない、という部分について、憎しみを燃やさずにはいられない。", "偏愛\nあなたは彼(彼女)を愛している。だが、その愛はどこか偏りがある、一方通行気味のものだ。", "疎外感\nあなたは彼(彼女)に疎外感を覚えている。なぜか仲間はずれにされているような、そんな感覚がまとわりつく。", "劣等感\nあなたは彼(彼女)に劣等感を覚えている。彼(彼女)には敵わない、なぜか上に行かれる、そんなコンプレックスを持っている。", "不安\nあなたは彼(彼女)を見ると、どこか不安を覚える。理由は無いのかもしれない、なぜかイヤな予感を覚えるのだ。", "恐怖\nあなたは彼(彼女)を怖がっている。その能力や考え方、あるいは彼(彼女)自身ではなく、失うことを恐れているのかもしれない。", "嫉妬\nあなたは彼(彼女)に嫉妬している。その過去や能力、あるいは環境を羨ましいと思わずにはいられない。", "驚異\nあなたは彼(彼女)に脅威を感じている。自分にとって致命的な存在になるかもしれないと考えている。", "侮蔑\nあなたは彼(彼女)を侮り、蔑んでいる。彼(彼女)は自分より下の存在であると思っている。", "劣等感\nあなたは彼(彼女)に劣等感を覚えている。彼(彼女)には敵わない、なぜか上に行かれる、そんなコンプレックスを持っている。", "不安\nあなたは彼(彼女)を見ると、どこか不安を覚える。理由は無いのかもしれない、なぜかイヤな予感を覚えるのだ。", "恐怖\nあなたは彼(彼女)を怖がっている。その能力や考え方、あるいは彼(彼女)自身ではなく、失うことを恐れているのかもしれない。", "嫉妬\nあなたは彼(彼女)に嫉妬している。その過去や能力、あるいは環境を羨ましいと思わずにはいられない。", "驚異\nあなたは彼(彼女)に脅威を感じている。自分にとって致命的な存在になるかもしれないと考えている。", "侮蔑\nあなたは彼(彼女)を侮り、蔑んでいる。彼(彼女)は自分より下の存在であると思っている。"];}; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - self.$debug("getFeelingTableResult result", result); - return [tableName, result, number]; - }, $GranCrest_getFeelingTableResult$5.$$arity = 1); - return (Opal.def(self, '$getCountryTableResult', $GranCrest_getCountryTableResult$6 = function $$getCountryTableResult(command) { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil, $case = nil; - - - self.$debug("getCountryTableResult command", command); - tableName = ""; - table = []; - if ($truthy(($truthy($a = /^CT$/i['$=~'](command)) ? $a : /^CategoryCT$/i['$=~'](command)))) { - - tableName = "国特徴・カテゴリー表"; - table = ["地形(TCT)\n森林、山岳、河川など、その国に存在する地勢を表す。", "産業(ICT)\n農耕が盛ん、鍛冶技術に優れるなど、その国の産業を表す。", "人物(PCT)\n腕のよい鍛冶屋がいる、知識豊富な薬師がいるなど、その国にいる人物を表す。", "組織(OCT)\n狩人の組合がある、キャラバンがいるなど、その国にある組織を表す。", "拠点(BCT)\n砦や関所などの軍用拠点の他、市場や街道など、その国にある拠点を表す。", "文化(CCT)\n食のバリエーションが多い、森に造詣が深いなどのその国の文化や風習を表す。"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - } else { - - $case = command; - if (/^TCT$/i['$===']($case)) { - tableName = "国特徴・地形表"; - table = ["水辺\nあなたの国は大河や海洋に面しており、水運の便に優れている。\n技術+2、資金+1", "森林\nあなたの国には大きな森がいくつもある。ただ風光明媚なだけでなく、木材資源にも恵まれている。\n森林+3", "山岳\nあなたの国は大きな山に囲まれている。山は国にさまざまな実りをもたらしてくれる。\n鉱物+2、森林+1", "草原\nあなたの国は見渡す限りの大草原から構成されている。馬を育てたり交易を行なうには、絶好の土地と言えるだろう。\n食料+1、馬+2", "沼地\nあなたの国は小さな川と、それが流れ込む池や沼地から構成されている。\n食料+2、森林+1", "荒野\nあなたの国のほとんどは荒野からなっている。野生のごつごつした荒々しさが国土の特徴だ。\n鉱物+2、馬+2、資金-1", "水辺\nあなたの国は大河や海洋に面しており、水運の便に優れている。\n技術+2、資金+1", "森林\nあなたの国には大きな森がいくつもある。ただ風光明媚なだけでなく、木材資源にも恵まれている。\n森林+3", "山岳\nあなたの国は大きな山に囲まれている。山は国にさまざまな実りをもたらしてくれる。\n鉱物+2、森林+1", "草原\nあなたの国は見渡す限りの大草原から構成されている。馬を育てたり交易を行なうには、絶好の土地と言えるだろう。\n食料+1、馬+2", "沼地\nあなたの国は小さな川と、それが流れ込む池や沼地から構成されている。\n食料+2、森林+1", "荒野\nあなたの国のほとんどは荒野からなっている。野生のごつごつした荒々しさが国土の特徴だ。\n鉱物+2、馬+2、資金-1", "水辺\nあなたの国は大河や海洋に面しており、水運の便に優れている。\n技術+2、資金+1", "森林\nあなたの国には大きな森がいくつもある。ただ風光明媚なだけでなく、木材資源にも恵まれている。\n森林+3", "山岳\nあなたの国は大きな山に囲まれている。山は国にさまざまな実りをもたらしてくれる。\n鉱物+2、森林+1", "草原\nあなたの国は見渡す限りの大草原から構成されている。馬を育てたり交易を行なうには、絶好の土地と言えるだろう。\n食料+1、馬+2", "沼地\nあなたの国は小さな川と、それが流れ込む池や沼地から構成されている。\n食料+2、森林+1", "荒野\nあなたの国のほとんどは荒野からなっている。野生のごつごつした荒々しさが国土の特徴だ。\n鉱物+2、馬+2、資金-1", "砂漠\nあなたの国は砂漠に取り巻かれている。灼熱の昼と極寒の夜があなたたちの日常だ。\n技術+2、資金+2、森林-1", "寒冷地\nあなたの国は雪と氷を友としている。夏は短く、冬は長い。鉛色の雲の下であなたたちは育った。\n鉱物+2、資金+1", "熱帯雨林\nあなたの国は焦熱の地である。雨期になれば大量の雨が降り注ぎ、巨大な密林を構成する。\n食料+1、森林+2", "火山\nあなたの国は火山地帯にある。山は火を噴き大地を揺らすが、それ故の豊かさもある。\n鉱物+3", "諸島群\nあなたの国はいくつもの小さな島によって構成されている。交易にこれほど適した土地もないだろう。\n資金+3", "秘境\nあなたの国は、混沌の影響によってこの世ならぬ光景を持っている。空を飛ぶ島や形を取った虹などだ。商才はGMと相談せよ。\n国資源ひとつを+3", "砂漠\nあなたの国は砂漠に取り巻かれている。灼熱の昼と極寒の夜があなたたちの日常だ。\n技術+2、資金+2、森林-1", "寒冷地\nあなたの国は雪と氷を友としている。夏は短く、冬は長い。鉛色の雲の下であなたたちは育った。\n鉱物+2、資金+1", "熱帯雨林\nあなたの国は焦熱の地である。雨期になれば大量の雨が降り注ぎ、巨大な密林を構成する。\n食料+1、森林+2", "火山\nあなたの国は火山地帯にある。山は火を噴き大地を揺らすが、それ故の豊かさもある。\n鉱物+3", "諸島群\nあなたの国はいくつもの小さな島によって構成されている。交易にこれほど適した土地もないだろう。\n資金+3", "秘境\nあなたの国は、混沌の影響によってこの世ならぬ光景を持っている。空を飛ぶ島や形を取った虹などだ。商才はGMと相談せよ。\n国資源ひとつを+3", "砂漠\nあなたの国は砂漠に取り巻かれている。灼熱の昼と極寒の夜があなたたちの日常だ。\n技術+2、資金+2、森林-1", "寒冷地\nあなたの国は雪と氷を友としている。夏は短く、冬は長い。鉛色の雲の下であなたたちは育った。\n鉱物+2、資金+1", "熱帯雨林\nあなたの国は焦熱の地である。雨期になれば大量の雨が降り注ぎ、巨大な密林を構成する。\n食料+1、森林+2", "火山\nあなたの国は火山地帯にある。山は火を噴き大地を揺らすが、それ故の豊かさもある。\n鉱物+3", "諸島群\nあなたの国はいくつもの小さな島によって構成されている。交易にこれほど適した土地もないだろう。\n資金+3", "秘境\nあなたの国は、混沌の影響によってこの世ならぬ光景を持っている。空を飛ぶ島や形を取った虹などだ。商才はGMと相談せよ。\n国資源ひとつを+3"];} - else if (/^ICT$/i['$===']($case)) { - tableName = "国特徴・産業表"; - table = ["農業\nあなたの国は農業生産力に優れている。大地の恵みが国の基だ。\n食料+3", "手工業\nあなたの国は織物や細工物といった人間の手作業から生み出される道具作りに秀でている。\n技術+3", "鉱業\nあなたの国は大地そのものに眠る鉱物資源が豊富なことで知られている。\n鉱物+4、森林-1", "牧畜\nあなたの国は広大な領地を生かして、牛や馬のような牧畜産業が豊かである。\n食料+1、馬+2", "漁業\nあなたの国は海または河川を生かした大規模な漁業で名を轟かせている。\n技術+1、食料+2", "貿易\nあなたの国は国と国とを結びつけ、その仲立ちをして利益を得ている。\n資金+3", "農業\nあなたの国は農業生産力に優れている。大地の恵みが国の基だ。\n食料+3", "手工業\nあなたの国は織物や細工物といった人間の手作業から生み出される道具作りに秀でている。\n技術+3", "鉱業\nあなたの国は大地そのものに眠る鉱物資源が豊富なことで知られている。\n鉱物+4、森林-1", "牧畜\nあなたの国は広大な領地を活かして、牛や馬のような牧畜産業が豊かである。\n食料+1、馬+2", "漁業\nあなたの国は海または河川を生かした大規模な漁業で名を轟かせている。\n技術+1、食料+2", "貿易\nあなたの国は国と国とを結びつけ、その仲立ちをして利益を得ている。\n資金+3", "農業\nあなたの国は農業生産力に優れている。大地の恵みが国の基だ。\n食料+3", "手工業\nあなたの国は織物や細工物といった人間の手作業から生み出される道具作りに秀でている。\n技術+3", "鉱業\nあなたの国は大地そのものに眠る鉱物資源が豊富なことで知られている。\n鉱物+4、森林-1", "牧畜\nあなたの国は広大な領地を活かして、牛や馬のような牧畜産業が豊かである。\n食料+1、馬+2", "漁業\nあなたの国は海または河川を生かした大規模な漁業で名を轟かせている。\n技術+1、食料+2", "貿易\nあなたの国は国と国とを結びつけ、その仲立ちをして利益を得ている。\n資金+3", "金融\nあなたの国は他社の金を預かり、その金を貸し付けることで富を得ている。\n資金+3", "金属加工\nあなたの国は刀剣鍛冶や金細工といった、金属を加工して別の何かに変える産業を有している。\n技術+2、鉱物+2、森林-1", "ガラス\nあなたの国はガラス工芸技術を保持している。列国でも稀な技術だ。\n技術+2、資金+2、森林-1", "香辛料\nあなたの国は胡椒や唐辛子のようなスパイスの産地である。\n食料+1、資金+2", "酒造\nあなたの国は葡萄酒や蜂蜜酒のようなアルコールの産地として知られている。\n食料+2、資金+1", "サービス業\nあなたの国は演劇や酒場、レストランといった文化的な産業で名を馳せている。\n技術+1、資金+2", "金融\nあなたの国は他社の金を預かり、その金を貸し付けることで富を得ている。\n資金+3", "金属加工\nあなたの国は刀剣鍛冶や金細工といった、金属を加工して別の何かに変える産業を有している。\n技術+2、資金+2、森林-1", "ガラス\nあなたの国はガラス工芸技術を保持している。列国でも稀な技術だ。\n技術+2、資金+2、森林-1", "香辛料\nあなたの国は胡椒や唐辛子のようなスパイスの産地である。\n食料+1、資金+2", "酒造\nあなたの国は葡萄酒や蜂蜜酒のようなアルコールの産地として知られている。\n食料+2、資金+1", "サービス業\nあなたの国は演劇や酒場、レストランといった文化的な産業で名を馳せている。\n技術+1、資金+2", "金融\nあなたの国は他社の金を預かり、その金を貸し付けることで富を得ている。\n資金+3", "金属加工\nあなたの国は刀剣鍛冶や金細工といった、金属を加工して別の何かに変える産業を有している。\n技術+2、資金+2、森林-1", "ガラス\nあなたの国はガラス工芸技術を保持している。列国でも稀な技術だ。\n技術+2、資金+2、森林-1", "香辛料\nあなたの国は胡椒や唐辛子のようなスパイスの産地である。\n食料+1、資金+2", "酒造\nあなたの国は葡萄酒や蜂蜜酒のようなアルコールの産地として知られている。\n食料+2、資金+1", "サービス業\nあなたの国は演劇や酒場、レストランといった文化的な産業で名を馳せている。\n技術+1、資金+2"];} - else if (/^PCT$/i['$===']($case)) { - tableName = "国特徴・人物表"; - table = ["哲学者\nあなたの国には高名な哲学者がいる。あなたの国には知的な国家だと考えられている。\n技術+1、資金+2", "科学者\nあなたの国には混沌に立ち向かう科学者(メイジではない)がおり、技術に優れている。\n技術+3", "高名な騎士\nあなたの国には高名な騎士がおり、その武勇を慕ってさまざまな武芸者が集まってくる。\n技術+1、", "芸能者\nあなたの国には偉大な芸術家や歌姫がおり、その人気は他国にも響いている。\n技術+1、資金+2", "大商人\nあなたの国に居を構えている大商人の富は、一国にも匹敵する。その税収はばかにならない。\n資金+3", "聖人\nあなたの国には聖人と呼ばれる偉大な宗教的指導者がいる。その名声は素晴らしい。\n食料+2、資金+1", "哲学者\nあなたの国には高名な哲学者がいる。あなたの国には知的な国家だと考えられている。\n技術+1、資金+2", "科学者\nあなたの国には混沌に立ち向かう科学者(メイジではない)がおり、技術に優れている。\n技術+3", "高名な騎士\nあなたの国には高名な騎士がおり、その武勇を慕ってさまざまな武芸者が集まってくる。\n技術+1、", "芸能者\nあなたの国には偉大な芸術家や歌姫がおり、その人気は他国にも響いている。\n技術+1、資金+2", "大商人\nあなたの国に居を構えている大商人の富は、一国にも匹敵する。その税収はばかにならない。\n資金+3", "聖人\nあなたの国には聖人と呼ばれる偉大な宗教的指導者がいる。その名声は素晴らしい。\n食料+2、資金+1", "哲学者\nあなたの国には高名な哲学者がいる。あなたの国には知的な国家だと考えられている。\n技術+1、資金+2", "科学者\nあなたの国には混沌に立ち向かう科学者(メイジではない)がおり、技術に優れている。\n技術+3", "高名な騎士\nあなたの国には高名な騎士がおり、その武勇を慕ってさまざまな武芸者が集まってくる。\n技術+1、", "芸能者\nあなたの国には偉大な芸術家や歌姫がおり、その人気は他国にも響いている。\n技術+1、資金+2", "大商人\nあなたの国に居を構えている大商人の富は、一国にも匹敵する。その税収はばかにならない。\n資金+3", "聖人\nあなたの国には聖人と呼ばれる偉大な宗教的指導者がいる。その名声は素晴らしい。\n食料+2、資金+1", "森林官\nあなたの国には森林資源を管理する森林官がおり、その技術を弟子たちに分け与えている。\n森林+3", "名工\nあなたの国には非常に優秀な鍛冶職人がおり、その技術を弟子たちに分け与えている。\n技術+2、資金+1", "売国奴\nあなたの国には極めて油断ならない臣下がいる。大変有能だが、裏切りを考えていることは明白なのだ。\n資金+4、技術-1", "農民指導者\nあなたの国には農民たちを指導する偉大な英雄がいる。彼は常に農民の味方だ。\n食料+3", "亡命者\nあなたの国には他国から亡命してきた優秀な技術者がいる。その事がいずれ災厄を呼び込むかもしれない\n国資源ふたつに+2", "かつての英雄\nあなたの国土の一部は、かつての英雄たるアーティストと融合している。彼は時折あなたに力を貸してくれる。\n食料に+1、森林+2", "森林官\nあなたの国には森林資源を管理する森林官がおり、その技術を弟子たちに分け与えている。\n森林+3", "名工\nあなたの国には非常に優秀な鍛冶職人がおり、その技術を弟子たちに分け与えている。\n技術+2、資金+1", "売国奴\nあなたの国には極めて油断ならない臣下がいる。大変有能だが、裏切りを考えていることは明白なのだ。\n資金+4、技術-1", "農民指導者\nあなたの国には農民たちを指導する偉大な英雄がいる。彼は常に農民の味方だ。\n食料+3", "亡命者\nあなたの国には他国から亡命してきた優秀な技術者がいる。その事がいずれ災厄を呼び込むかもしれない\n国資源ふたつに+2", "かつての英雄\nあなたの国土の一部は、かつての英雄たるアーティストと融合している。彼は時折あなたに力を貸してくれる。\n食料に+1、森林+2", "森林官\nあなたの国には森林資源を管理する森林官がおり、その技術を弟子たちに分け与えている。\n森林+3", "名工\nあなたの国には非常に優秀な鍛冶職人がおり、その技術を弟子たちに分け与えている。\n技術+2、資金+1", "売国奴\nあなたの国には極めて油断ならない臣下がいる。大変有能だが、裏切りを考えていることは明白なのだ。\n資金+4、技術-1", "農民指導者\nあなたの国には農民たちを指導する偉大な英雄がいる。彼は常に農民の味方だ。\n食料+3", "亡命者\nあなたの国には他国から亡命してきた優秀な技術者がいる。その事がいずれ災厄を呼び込むかもしれない\n国資源ふたつに+2", "かつての英雄\nあなたの国土の一部は、かつての英雄たるアーティストと融合している。彼は時折あなたに力を貸してくれる。\n食料に+1、森林+2"];} - else if (/^OCT$/i['$===']($case)) { - tableName = "国特徴・組織表"; - table = ["運搬業者\nあなたの国には水運や運搬など、輸送に携わる人々が多い。\n食料+3", "職人学校\nあなたの国は技術を伝授し発展させる学校を有している。\n技術+3", "森番\nあなたの国は森を守るための独自の警察を有している。\n森林+3", "金掘り衆\nあなたの国はいわゆる山師を組織化しており、鉱山開発に熱心だ。\n鉱物+3", "民会\nあなたの国は豪商や大農場主からなる議会を持ち、意見を取り入れている。\n資金+3", "飛脚\nあなたの国は飛脚や早馬といった高速通信網が発達している。\n馬+3", "運搬業者\nあなたの国には水運や運搬など、輸送に携わる人々が多い。\n食料+3", "職人学校\nあなたの国は技術を伝授し発展させる学校を有している。\n技術+3", "森番\nあなたの国は森を守るための独自の警察を有している。\n森林+3", "金掘り衆\nあなたの国はいわゆる山師を組織化しており、鉱山開発に熱心だ。\n鉱物+3", "民会\nあなたの国は豪商や大農場主からなる議会を持ち、意見を取り入れている。\n資金+3", "飛脚\nあなたの国は飛脚や早馬といった高速通信網が発達している。\n馬+3", "運搬業者\nあなたの国には水運や運搬など、輸送に携わる人々が多い。\n食料+3", "職人学校\nあなたの国は技術を伝授し発展させる学校を有している。\n技術+3", "森番\nあなたの国は森を守るための独自の警察を有している。\n森林+3", "金掘り衆\nあなたの国はいわゆる山師を組織化しており、鉱山開発に熱心だ。\n鉱物+3", "民会\nあなたの国は豪商や大農場主からなる議会を持ち、意見を取り入れている。\n資金+3", "飛脚\nあなたの国は飛脚や早馬といった高速通信網が発達している。\n馬+3", "放浪民\nあなたの国には、騎馬民族や放浪民といった人々が訪れることが多い。\n馬+2、資金+1", "宗教結社\nあなたの国には巨大な宗教結社が存在する。悩んだらクレスト教団とせよ。\n技術+2、資金+1", "学術団体\nあなたの国にはアカデミーの分校、あるいは何らかの研究施設が存在する。\n食料+1、技術+2", "異民族\nあなたの国には主流民族とは別の異民族が発生しており、目下のところ共存している。\n技術+1、資金+2", "難民\nあなたの国には他国の戦乱を逃れてきた難民たちが避難してきている。しかし、安価な労働力の供給源であることも確かだ。\n食料-2、技術+2、資金+3", "犯罪結社\nあなたの国は豊かで、それゆえに犯罪結社が跳梁している。\n資金+3", "放浪民\nあなたの国には、騎馬民族や放浪民といった人々が訪れることが多い。\n馬+2、資金+1", "宗教結社\nあなたの国には巨大な宗教結社が存在する。悩んだらクレスト教団とせよ。\n技術+2、資金+1", "学術団体\nあなたの国にはアカデミーの分校、あるいは何らかの研究施設が存在する。\n食料+1、技術+2", "異民族\nあなたの国には主流民族とは別の異民族が発生しており、目下のところ共存している。\n技術+1、資金+2", "難民\nあなたの国には他国の戦乱を逃れてきた難民たちが避難してきている。しかし、安価な労働力の供給源であることも確かだ。\n食料-2、技術+2、資金+3", "犯罪結社\nあなたの国は豊かで、それゆえに犯罪結社が跳梁している。\n資金+3", "放浪民\nあなたの国には、騎馬民族や放浪民といった人々が訪れることが多い。\n馬+2、資金+1", "宗教結社\nあなたの国には巨大な宗教結社が存在する。悩んだらクレスト教団とせよ。\n技術+2、資金+1", "学術団体\nあなたの国にはアカデミーの分校、あるいは何らかの研究施設が存在する。\n食料+1、技術+2", "異民族\nあなたの国には主流民族とは別の異民族が発生しており、目下のところ共存している。\n技術+1、資金+2", "難民\nあなたの国には他国の戦乱を逃れてきた難民たちが避難してきている。しかし、安価な労働力の供給源であることも確かだ。\n食料-2、技術+2、資金+3", "犯罪結社\nあなたの国は豊かで、それゆえに犯罪結社が跳梁している。\n資金+3"];} - else if (/^BCT$/i['$===']($case)) { - tableName = "国特徴・拠点表"; - table = ["城塞\nあなたの首都はその難攻不落の防壁で知られている。\n技術+3", "長城\nあなたの国境線は堅牢な長城で守られている。それが国境線の全域に及ぶかどうかはGMと相談せよ。\n技術+2、資金+1", "良港\nあなたの国には誰もがうらやむ非常に安定した広い港がある。\n資金+3", "運河\nあなたの国には巨大な運河があり、人々に流通と治水とをもたらしている。\n食料+2、技術+1", "図書館\nあなたの国には図書館があり、膨大な知識を過去から蓄積している。\n技術+3", "訓練所\nあなたの国には訓練所があり、兵士たちを常に鍛えることができる。\n技術+2、馬+1", "城塞\nあなたの首都はその難攻不落の防壁で知られている。\n技術+3", "長城\nあなたの国境線は堅牢な長城で守られている。それが国境線の全域に及ぶかどうかはGMと相談せよ。\n技術+2、資金+1", "良港\nあなたの国には誰もがうらやむ非常に安定した広い港がある。\n資金+3", "運河\nあなたの国には巨大な運河があり、人々に流通と治水とをもたらしている。\n食料+2、技術+1", "図書館\nあなたの国には図書館があり、膨大な知識を過去から蓄積している。\n技術+3", "訓練所\nあなたの国には訓練所があり、兵士たちを常に鍛えることができる。\n技術+2、馬+1", "城塞\nあなたの首都はその難攻不落の防壁で知られている。\n技術+3", "長城\nあなたの国境線は堅牢な長城で守られている。それが国境線の全域に及ぶかどうかはGMと相談せよ。\n技術+2、資金+1", "良港\nあなたの国には誰もがうらやむ非常に安定した広い港がある。\n資金+3", "運河\nあなたの国には巨大な運河があり、人々に流通と治水とをもたらしている。\n食料+2、技術+1", "図書館\nあなたの国には図書館があり、膨大な知識を過去から蓄積している。\n技術+3", "訓練所\nあなたの国には訓練所があり、兵士たちを常に鍛えることができる。\n技術+2、馬+1", "下町\nあなたの国には貧しい人々が住まう下町(悪い言い方をすれば貧民街)がある。豊かではないが、そこには活気がある。\n食料+2、資金+1", "高級住宅街\nあなたの国には豊かな人々が多く、そこに住みたいと考える人も多い。\n資金+3", "保養地\nあなたの国には風光明媚で過ごしやすい土地がある。外国人であっても、そこで休暇を取ることを好むのだ。\n森林+1、資金+2", "宗教的聖地\nあなたの国には、それに実際的な効果があるかどうかはともかく宗教的な聖地があり、人々を集めている。\n食料+2、森林+1", "鉱山街\nあなたの国には鉱山があり、その鉱山で働く人たちのための酒場や学校や病院が完備されている。\n鉱物+3", "歓楽街\nあなたの国は楽しく過ごせる酒場や劇場といったもので評判だ。人々の笑顔がさらなる富をもたらすのだ。\n食料+1、資金+2", "下町\nあなたの国には貧しい人々が住まう下町(悪い言い方をすれば貧民街)がある。豊かではないが、そこには活気がある。\n食料+2、資金+1", "高級住宅街\nあなたの国には豊かな人々が多く、そこに住みたいと考える人も多い。\n資金+3", "保養地\nあなたの国には風光明媚で過ごしやすい土地がある。外国人であっても、そこで休暇を取ることを好むのだ。\n森林+1、資金+2", "宗教的聖地\nあなたの国には、それに実際的な効果があるかどうかはともかく宗教的な聖地があり、人々を集めている。\n食料+2、森林+1", "鉱山街\nあなたの国には鉱山があり、その鉱山で働く人たちのための酒場や学校や病院が完備されている。\n鉱物+3", "歓楽街\nあなたの国は楽しく過ごせる酒場や劇場といったもので評判だ。人々の笑顔がさらなる富をもたらすのだ。\n食料+1、資金+2", "下町\nあなたの国には貧しい人々が住まう下町(悪い言い方をすれば貧民街)がある。豊かではないが、そこには活気がある。\n食料+2、資金+1", "高級住宅街\nあなたの国には豊かな人々が多く、そこに住みたいと考える人も多い。\n資金+3", "保養地\nあなたの国には風光明媚で過ごしやすい土地がある。外国人であっても、そこで休暇を取ることを好むのだ。\n森林+1、資金+2", "宗教的聖地\nあなたの国には、それに実際的な効果があるかどうかはともかく宗教的な聖地があり、人々を集めている。\n食料+2、森林+1", "鉱山街\nあなたの国には鉱山があり、その鉱山で働く人たちのための酒場や学校や病院が完備されている。\n鉱物+3", "歓楽街\nあなたの国は楽しく過ごせる酒場や劇場といったもので評判だ。人々の笑顔がさらなる富をもたらすのだ。\n食料+1、資金+2"];} - else if (/^CCT$/i['$===']($case)) { - tableName = "国特徴・文化表"; - table = ["芸術指向\nあなたの国の人々は芸術に高い価値を与えている。\n資金+3", "享楽的\nあなたの国民は、今日を楽しく過ごすことが大切だと考えている。\n食料+1、資金+2", "禁欲的\nあなたの国民は、道徳を重んじ、常に自分の欲望を制限することが理想的だと考えている。\n食料+4、資金-1", "好戦的\nあなたの国民は好戦的だ。物事は剣と暴力によって解決するべきだと考えている。\n技術+1、馬+2", "平和主義\nあなたの国民は平和を愛している。まず話し合うことが大事だと思っているのだ。\n食料+1、森林+2", "理知的\nあなたの国民は論理性を重んじる。道理が通っているかが問題だ。\n技術+3", "芸術指向\nあなたの国の人々は芸術に高い価値を与えている。\n資金+3", "享楽的\nあなたの国民は、今日を楽しく過ごすことが大切だと考えている。\n食料+1、資金+2", "禁欲的\nあなたの国民は、道徳を重んじ、常に自分の欲望を制限することが理想的だと考えている。\n食料+4、資金-1", "好戦的\nあなたの国民は好戦的だ。物事は剣と暴力によって解決するべきだと考えている。\n技術+1、馬+2", "平和主義\nあなたの国民は平和を愛している。まず話し合うことが大事だと思っているのだ。\n食料+1、森林+2", "理知的\nあなたの国民は論理性を重んじる。道理が通っているかが問題だ。\n技術+3", "芸術指向\nあなたの国の人々は芸術に高い価値を与えている。\n資金+3", "享楽的\nあなたの国民は、今日を楽しく過ごすことが大切だと考えている。\n食料+1、資金+2", "禁欲的\nあなたの国民は、道徳を重んじ、常に自分の欲望を制限することが理想的だと考えている。\n食料+4、資金-1", "好戦的\nあなたの国民は好戦的だ。物事は剣と暴力によって解決するべきだと考えている。\n技術+1、馬+2", "平和主義\nあなたの国民は平和を愛している。まず話し合うことが大事だと思っているのだ。\n食料+1、森林+2", "理知的\nあなたの国民は論理性を重んじる。道理が通っているかが問題だ。\n技術+3", "情念深い\nあなたの国民は感情を重視する。恩は忘れず、恨みもまた決して忘れない。\n鉱物+1、森林+2", "礼儀重視\nあなたの国民は建前としての礼儀を重んじる。礼儀こそ平和と繁栄への道だ。\n技術+2、馬+1", "拝金主義\nあなたの国民にとって、もっとも重要なのは金である。金がなくてどうして生きて行けよう。\n森林-1、資金+4", "農本主義\nあなたの国では農民が国の基である。大地を耕すことが理想的なのだ。\n食料+3", "富国強兵\nあなたの国は技術を発展させ軍隊を近代化させるべく一丸となっている。\n技術+2、馬+1", "呑気\nあなたの国は豊かだ。人々は思い煩うことなく、日々をのんびりと楽しく生きている。\n技術-1、食料+4", "情念深い\nあなたの国民は感情を重視する。恩は忘れず、恨みもまた決して忘れない。\n鉱物+1、森林+2", "礼儀重視\nあなたの国民は建前としての礼儀を重んじる。礼儀こそ平和と繁栄への道だ。\n技術+2、馬+1", "拝金主義\nあなたの国民にとって、もっとも重要なのは金である。金がなくてどうして生きて行けよう。\n森林-1、資金+4", "農本主義\nあなたの国では農民が国の基である。大地を耕すことが理想的なのだ。\n食料+3", "富国強兵\nあなたの国は技術を発展させ軍隊を近代化させるべく一丸となっている。\n技術+2、馬+1", "呑気\nあなたの国は豊かだ。人々は思い煩うことなく、日々をのんびりと楽しく生きている。\n技術-1、食料+4", "情念深い\nあなたの国民は感情を重視する。恩は忘れず、恨みもまた決して忘れない。\n鉱物+1、森林+2", "礼儀重視\nあなたの国民は建前としての礼儀を重んじる。礼儀こそ平和と繁栄への道だ。\n技術+2、馬+1", "拝金主義\nあなたの国民にとって、もっとも重要なのは金である。金がなくてどうして生きて行けよう。\n森林-1、資金+4", "農本主義\nあなたの国では農民が国の基である。大地を耕すことが理想的なのだ。\n食料+3", "富国強兵\nあなたの国は技術を発展させ軍隊を近代化させるべく一丸となっている。\n技術+2、馬+1", "呑気\nあなたの国は豊かだ。人々は思い煩うことなく、日々をのんびりと楽しく生きている。\n技術-1、食料+4"];}; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - }; - self.$debug("getCountryTableResult result", result); - return [tableName, result, number]; - }, $GranCrest_getCountryTableResult$6.$$arity = 1), nil) && 'getCountryTableResult'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Gundog.js b/src/assets/dicebot/Gundog.js deleted file mode 100644 index f654c6b29..000000000 --- a/src/assets/dicebot/Gundog.js +++ /dev/null @@ -1,72 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>=', '$<=', '$floor', '$/', '$-', '$*', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Gundog'); - - var $nesting = [self].concat($parent_nesting), $Gundog_check_1D100$1, $Gundog_isD9$2; - - - Opal.const_set($nesting[0], 'ID', "Gundog"); - Opal.const_set($nesting[0], 'NAME', "ガンドッグ"); - Opal.const_set($nesting[0], 'SORT_KEY', "かんとつく"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "失敗、成功、クリティカル、ファンブルとロールの達成値の自動判定を行います。\n" + "nD9ロールも対応。\n"); - - Opal.def(self, '$check_1D100', $Gundog_check_1D100$1 = function $$check_1D100(total, _dice_total, cmp_op, target) { - var self = this, dig10 = nil, dig1 = nil; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return "" - }; - if ($truthy($rb_ge(total, 100))) { - return " > ファンブル" - } else if ($truthy($rb_le(total, 1))) { - return " > 絶対成功(達成値1+SL)" - } else if ($truthy($rb_le(total, target))) { - - dig10 = $rb_divide(total, 10).$floor(); - dig1 = $rb_minus(total, $rb_times(dig10, 10)); - if ($truthy($rb_ge(dig10, 10))) { - dig10 = 0}; - if ($truthy($rb_ge(dig1, 10))) { - dig1 = 0}; - if ($truthy($rb_le(dig1, 0))) { - return " > クリティカル(達成値20+SL)" - } else { - return "" + " > 成功(達成値" + ($rb_plus(dig10, dig1)) + "+SL)" - }; - } else { - return " > 失敗" - }; - }, $Gundog_check_1D100$1.$$arity = 4); - return (Opal.def(self, '$isD9', $Gundog_isD9$2 = function $$isD9() { - var self = this; - - return true - }, $Gundog_isD9$2.$$arity = 0), nil) && 'isD9'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/GundogRevised.js b/src/assets/dicebot/GundogRevised.js deleted file mode 100644 index 9928f3982..000000000 --- a/src/assets/dicebot/GundogRevised.js +++ /dev/null @@ -1,254 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/Gundog"] = function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>=', '$<=', '$floor', '$/', '$-', '$*', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Gundog'); - - var $nesting = [self].concat($parent_nesting), $Gundog_check_1D100$1, $Gundog_isD9$2; - - - Opal.const_set($nesting[0], 'ID', "Gundog"); - Opal.const_set($nesting[0], 'NAME', "ガンドッグ"); - Opal.const_set($nesting[0], 'SORT_KEY', "かんとつく"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "失敗、成功、クリティカル、ファンブルとロールの達成値の自動判定を行います。\n" + "nD9ロールも対応。\n"); - - Opal.def(self, '$check_1D100', $Gundog_check_1D100$1 = function $$check_1D100(total, _dice_total, cmp_op, target) { - var self = this, dig10 = nil, dig1 = nil; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return "" - }; - if ($truthy($rb_ge(total, 100))) { - return " > ファンブル" - } else if ($truthy($rb_le(total, 1))) { - return " > 絶対成功(達成値1+SL)" - } else if ($truthy($rb_le(total, target))) { - - dig10 = $rb_divide(total, 10).$floor(); - dig1 = $rb_minus(total, $rb_times(dig10, 10)); - if ($truthy($rb_ge(dig10, 10))) { - dig10 = 0}; - if ($truthy($rb_ge(dig1, 10))) { - dig1 = 0}; - if ($truthy($rb_le(dig1, 0))) { - return " > クリティカル(達成値20+SL)" - } else { - return "" + " > 成功(達成値" + ($rb_plus(dig10, dig1)) + "+SL)" - }; - } else { - return " > 失敗" - }; - }, $Gundog_check_1D100$1.$$arity = 4); - return (Opal.def(self, '$isD9', $Gundog_isD9$2 = function $$isD9() { - var self = this; - - return true - }, $Gundog_isD9$2.$$arity = 0), nil) && 'isD9'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$setPrefixes', '$==', '$>=', '$<=', '$floor', '$/', '$-', '$*', '$+', '$upcase', '$=~', '$last_match', '$to_i', '$parren_killer', '$getDamageTypeAndTable', '$getFumbleTypeAndTable', '$empty?', '$roll', '$collect', '$split', '$each', '$<', '$>', '$[]', '$===']); - - self.$require("diceBot/Gundog"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'GundogRevised'); - - var $nesting = [self].concat($parent_nesting), $GundogRevised_check_1D100$1, $GundogRevised_isD9$2, $GundogRevised_rollDiceCommand$3, $GundogRevised_getDamageTypeAndTable$6, $GundogRevised_getFumbleTypeAndTable$7; - - - Opal.const_set($nesting[0], 'ID', "GundogRevised"); - Opal.const_set($nesting[0], 'NAME', "ガンドッグ・リヴァイズド"); - Opal.const_set($nesting[0], 'SORT_KEY', "かんとつくりうあいすと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "失敗、成功、クリティカル、ファンブルとロールの達成値の自動判定を行います。\n" + "nD9ロールも対応。\n" + "・ダメージペナルティ表  (~DPTx) (x:修正)\n" + " 射撃(SDPT)、格闘(MDPT)、車両(VDPT)、汎用(GDPT)の各表を引くことが出来ます。\n" + " 修正を後ろに書くことも出来ます。\n" + "・ファンブル表      (~FTx) (x:修正)\n" + " 射撃(SFT)、格闘(MFT)、投擲(TFT)の各表を引くことが出来ます。\n" + " 修正を後ろに書くことも出来ます。\n"); - self.$setPrefixes(["(.DPT|.FT)(\\+|\\-)?\\d*"]); - - Opal.def(self, '$check_1D100', $GundogRevised_check_1D100$1 = function $$check_1D100(total, _dice_total, cmp_op, target) { - var self = this, dig10 = nil, dig1 = nil; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return "" - }; - if ($truthy($rb_ge(total, 100))) { - return " > ファンブル" - } else if ($truthy($rb_le(total, 1))) { - return " > ベアリー(達成値1+SL)" - } else if ($truthy($rb_le(total, target))) { - - dig10 = $rb_divide(total, 10).$floor(); - dig1 = $rb_minus(total, $rb_times(dig10, 10)); - if ($truthy($rb_ge(dig10, 10))) { - dig10 = 0}; - if ($truthy($rb_ge(dig1, 10))) { - dig1 = 0}; - if ($truthy($rb_le(dig1, 0))) { - return " > クリティカル(達成値20+SL)" - } else { - return "" + " > 成功(達成値" + ($rb_plus(dig10, dig1)) + "+SL)" - }; - } else { - return " > 失敗" - }; - }, $GundogRevised_check_1D100$1.$$arity = 4); - - Opal.def(self, '$isD9', $GundogRevised_isD9$2 = function $$isD9() { - var self = this; - - return true - }, $GundogRevised_isD9$2.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $GundogRevised_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var $a, $b, $$4, $$5, self = this, string = nil, table = nil, ttype = nil, type = nil, dice = nil, mod = nil, head = nil, diceText = nil, diceArray = nil, diceOriginalText = nil, output = nil; - - - string = command.$upcase(); - table = []; - ttype = ""; - type = ""; - dice = 0; - mod = 0; - if ($truthy(/(\w)DPT([\+\-\d]*)/i['$=~'](string))) { - - ttype = "ダメージペナルティー"; - head = $$($nesting, 'Regexp').$last_match(1); - if ($truthy($$($nesting, 'Regexp').$last_match(2))) { - mod = self.$parren_killer("" + "(0" + ($$($nesting, 'Regexp').$last_match(2)) + ")").$to_i()}; - $b = self.$getDamageTypeAndTable(head), $a = Opal.to_ary($b), (type = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b;}; - if ($truthy(/(\w)FT([\+\-\d]*)/i['$=~'](string))) { - - ttype = "ファンブル"; - head = $$($nesting, 'Regexp').$last_match(1); - if ($truthy($$($nesting, 'Regexp').$last_match(2))) { - mod = self.$parren_killer("" + "(0" + ($$($nesting, 'Regexp').$last_match(2)) + ")").$to_i()}; - $b = self.$getFumbleTypeAndTable(head), $a = Opal.to_ary($b), (type = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b;}; - if ($truthy(type['$empty?']())) { - return "1"}; - $b = self.$roll(2, 10), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - dice = mod; - diceArray = $send(diceText.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - $send(diceArray, 'each', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - if ($truthy($rb_lt(i, 10))) { - return (dice = $rb_plus(dice, i)) - } else { - return nil - };}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - diceOriginalText = dice; - if ($truthy($rb_lt(dice, 0))) { - dice = 0}; - if ($truthy($rb_gt(dice, 18))) { - dice = 18}; - output = "" + (type) + (ttype) + "表[" + (diceOriginalText) + "] > " + (table['$[]'](dice)); - return output; - }, $GundogRevised_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$getDamageTypeAndTable', $GundogRevised_getDamageTypeAndTable$6 = function $$getDamageTypeAndTable(head) { - var $a, $b, self = this, $case = nil, type = nil, table = nil; - - - $case = head; - if ("S"['$===']($case)) { - type = "射撃"; - table = ["対象は[死亡]", "[追加D]4D6/[出血]2D6/[重傷]-40%/[朦朧判定]15", "[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]14", "[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]13", "[追加D]3D6/[出血]1D6/[重傷]-20%/[朦朧判定]12", "[追加D]2D6/[出血]1D6/[重傷]-20%/[朦朧判定]11", "[追加D]2D6/[軽傷]-20%/[朦朧判定]11", "[追加D]2D6/[軽傷]-20%/[朦朧判定]10", "[追加D]2D6/[軽傷]-20%/[朦朧判定]8", "[追加D]2D6/[軽傷]-20%/[朦朧判定]6", "[追加D]2D6/[軽傷]-10%/[朦朧判定]4", "[追加D]2D6/[軽傷]-20%", "[追加D]1D6/[軽傷]-20%", "[追加D]1D6/[軽傷]-10%", "[ショック]-20%", "[ショック]-10%", "[不安定]", "手に持った武器を落とす。複数ある場合はランダム", "ペナルティー無し"];} - else if ("M"['$===']($case)) { - type = "格闘"; - table = ["対象は[死亡]", "[追加D]4D6/[出血]2D6/[重傷]-40%/[朦朧判定]15", "[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]14", "[追加D]3D6/[出血]1D6/[重傷]-20%/[朦朧判定]14/[不安定]", "[追加D]2D6/[出血]1D6/[重傷]-20%/[朦朧判定]14", "[追加D]2D6/[重傷]-20%/[朦朧判定]12/[不安定]", "[追加D]2D6/[軽傷]-20%/[朦朧判定]11", "[追加D]2D6/[軽傷]-20%/[朦朧判定]10", "[追加D]2D6/[軽傷]-20%/[朦朧判定]8", "[追加D]2D6/[軽傷]-20%/[朦朧判定]6", "[追加D]1D6/[軽傷]-20%/[朦朧判定]6", "[追加D]1D6/[軽傷]-10%/[朦朧判定]6", "[追加D]1D6/[軽傷]-10%/[不安定]", "[追加D]1D6/[軽傷]-10%", "[ショック]-20%", "[ショック]-10%", "[不安定]", "手に持った武器を落とす。複数ある場合はランダム", "ペナルティー無し"];} - else if ("V"['$===']($case)) { - type = "車両"; - table = ["[クラッシュ]する。[チェイス]から除外", "[車両D]4D6/[乗員D]3D6/[操作性]-40%/[スピン判定]", "[車両D]3D6/[乗員D]3D6/[操作性]-30%/[スピン判定]", "[乗員D]3D6/[操作性]-20%/[スピン判定]", "[乗員D]3D6/[操作性]-20%/[スピン判定]", "[乗員D]3D6/[操作性]-10%/[スピン判定]", "[乗員D]3D6/[操作性]-10%/[スピン判定]", "[乗員D]2D6/[スピード]-2/[スピン判定]", "[乗員D]2D6/[スピード]-2/[スピン判定]", "[乗員D]2D6/[操縦判定]-20%/[スピン判定]", "[乗員D]2D6/[操縦判定]-20%/[スピン判定]", "[乗員D]2D6/[操縦判定]-20%", "[乗員D]2D6/[操縦判定]-20%", "[乗員D]1D6/[操縦判定]-20%", "[乗員D]1D6/[操縦判定]-10%", "攻撃が乗員をかすめる。ランダムな乗員1人に[ショック]-20%", "攻撃が乗員に当たりかける。ランダムな乗員1人に[ショック]-10%", "車両が蛇行。乗員全員は〈運動〉判定。失敗で[不安定]", "ペナルティー無し"];} - else if ("G"['$===']($case)) { - type = "汎用"; - table = ["対象は[死亡]", "[追加D]4D6/[出血]2D6/[重傷]-40%/[朦朧判定]15", "[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]14", "[追加D]2D6/[出血]1D6/[重傷]-30%/[朦朧判定]13/[不安定]", "[追加D]2D6/[出血]1D6/[重傷]-30%/[朦朧判定]12", "[追加D]2D6/[重傷]-20%/[朦朧判定]12/[不安定]", "[追加D]1D6/[重傷]-20%/[朦朧判定]11", "[追加D]1D6/[軽傷]-30%/[朦朧判定]10", "[追加D]1D6/[軽傷]-30%/[朦朧判定]8", "[追加D]1D6/[軽傷]-30%/[朦朧判定]6", "[追加D]1D6/[軽傷]-20%/[朦朧判定]6", "[軽傷]-20%/[朦朧判定]6", "[軽傷]-20%/[不安定]", "[軽傷]-20%", "[軽傷]-10%", "[ショック]-20%", "[ショック]-10%", "[不安定]", "ペナルティー無し"];} - else { - head = "S"; - $b = self.$getDamageTypeAndTable(head), $a = Opal.to_ary($b), (type = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b;}; - return [type, table]; - }, $GundogRevised_getDamageTypeAndTable$6.$$arity = 1); - return (Opal.def(self, '$getFumbleTypeAndTable', $GundogRevised_getFumbleTypeAndTable$7 = function $$getFumbleTypeAndTable(head) { - var $a, $b, self = this, $case = nil, type = nil, table = nil; - - - $case = head; - if ("S"['$===']($case)) { - type = "射撃"; - table = ["銃器が暴発、自分に命中。[貫通D]。武装喪失", "銃器が暴発、自分に命中。[非貫通D]。武装喪失", "誤射。射線に最も近い味方に命中。[貫通D]", "誤射。射線に最も近い味方に命中。[非貫通D]", "銃器が完全に故障。直せない", "故障。30分かけて〈メカニック〉判定に成功するまで使用不可。", "故障。〈メカニック〉-20%の判定に成功するまで使用不可。", "故障。〈メカニック〉判定に成功するまで射撃不可", "作動不良。[アイテム使用]を2回行って修理するまで射撃不可", "作動不良。[アイテム使用]を行って修理するまで射撃不可", "足がもつれて倒れる。[転倒]", "無理な射撃姿勢で腕を痛める。[軽傷]-20%", "無理な射撃姿勢でどこかの筋を痛める。[軽傷]-10%", "武装を落とす。スリング(肩ひも)も切れる", "武装を落とす。スリング(肩ひも)があれば落とさない", "排莢された薬莢が服の中に。[ショック]-20%", "排莢された薬莢が顔に当たる。[ショック]-10%", "薬莢を踏んで態勢を崩す。[不安定]", "ペナルティー無し"];} - else if ("M"['$===']($case)) { - type = "格闘"; - table = ["自分に命中。[貫通D]", "自分に命中。[非貫通D]", "最も近い味方(射程内にいなければ自分)に[貫通D]", "最も近い味方(射程内にいなければ自分)に[非貫通D]", "頭を強く打ちつける。[朦朧]", "武装が壊れる。直せない。[格闘タイプ]なら[重傷]-20%", "武装がすっぽ抜ける。グレネードの誤差で落下先を決定", "武装が損傷。30分かけて〈手先〉判定に成功するまで使用不可。[格闘タイプ]なら[重傷]-10%", "武装がガタつく。〈手先〉判定([格闘タイプ]なら〈強靭〉)に成功するまで使用不可。", "武装に違和感。[アイテム使用]を行って調整するまで、命中率-20%", "足がもつれる。[転倒]", "足がつる。2[ラウンド]の間、移動距離1/2", "無理な体勢で腕(あるいは脚)を痛める。[軽傷]-20%", "無理な体勢でどこかの筋を痛める。[軽傷]-10%", "武装を落とす", "武装で自分が負傷。[ショック]-20%", "武装の扱いを間違える。[ショック]-10%", "攻撃を避けられて体勢を崩す。[不安定]", "ペナルティー無し"];} - else if ("T"['$===']($case)) { - type = "投擲"; - table = ["勢いをつけすぎて転倒し、頭を打つ。[気絶]", "自分に命中。(手榴弾なら自分の足元に落ちる)[貫通D]", "自分に命中。(手榴弾なら自分の足元に落ちる)[非貫通D]", "暴投。射線に最も近い味方に命中。[貫通D]。手榴弾なら新たな中心点からさらに誤差が生じる", "暴投。射線に最も近い味方に命中。[非貫通D]。手榴弾なら新たな中心点からさらに誤差が生じる", "頭を強く打ちつける。[朦朧]", "肩の筋肉断裂。この腕を使う判定に、[重傷]-20%", "ヒジの筋肉断裂。この腕を使う判定に、[重傷]-10%", "肩の筋をひどく痛める。〈医療〉判定に成功するまで、この腕を使う判定に-20%", "肩の筋を痛める。[行動]を使って休めるまで、この腕を使う判定に-20%", "腰を痛める。[軽傷]-30%", "足がもつれて倒れる。[転倒]", "足がつる。2[ラウンド]の間、移動距離1/2", "無理な投擲体勢で腕(あるいは脚)を痛める。[軽傷]-20%", "無理な投擲体勢でどこかの筋を痛める。[軽傷]-10%", "肩に違和感。[ショック]-20%", "ヒジに違和感。[ショック]-10%", "つまずいて姿勢を崩す。[不安定]", "ペナルティー無し"];} - else { - head = "S"; - $b = self.$getFumbleTypeAndTable(head), $a = Opal.to_ary($b), (type = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b;}; - return [type, table]; - }, $GundogRevised_getFumbleTypeAndTable$7.$$arity = 1), nil) && 'getFumbleTypeAndTable'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/GundogZero.js b/src/assets/dicebot/GundogZero.js deleted file mode 100644 index b1e633758..000000000 --- a/src/assets/dicebot/GundogZero.js +++ /dev/null @@ -1,180 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/Gundog"] = function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>=', '$<=', '$floor', '$/', '$-', '$*', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Gundog'); - - var $nesting = [self].concat($parent_nesting), $Gundog_check_1D100$1, $Gundog_isD9$2; - - - Opal.const_set($nesting[0], 'ID', "Gundog"); - Opal.const_set($nesting[0], 'NAME', "ガンドッグ"); - Opal.const_set($nesting[0], 'SORT_KEY', "かんとつく"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "失敗、成功、クリティカル、ファンブルとロールの達成値の自動判定を行います。\n" + "nD9ロールも対応。\n"); - - Opal.def(self, '$check_1D100', $Gundog_check_1D100$1 = function $$check_1D100(total, _dice_total, cmp_op, target) { - var self = this, dig10 = nil, dig1 = nil; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return "" - }; - if ($truthy($rb_ge(total, 100))) { - return " > ファンブル" - } else if ($truthy($rb_le(total, 1))) { - return " > 絶対成功(達成値1+SL)" - } else if ($truthy($rb_le(total, target))) { - - dig10 = $rb_divide(total, 10).$floor(); - dig1 = $rb_minus(total, $rb_times(dig10, 10)); - if ($truthy($rb_ge(dig10, 10))) { - dig10 = 0}; - if ($truthy($rb_ge(dig1, 10))) { - dig1 = 0}; - if ($truthy($rb_le(dig1, 0))) { - return " > クリティカル(達成値20+SL)" - } else { - return "" + " > 成功(達成値" + ($rb_plus(dig10, dig1)) + "+SL)" - }; - } else { - return " > 失敗" - }; - }, $Gundog_check_1D100$1.$$arity = 4); - return (Opal.def(self, '$isD9', $Gundog_isD9$2 = function $$isD9() { - var self = this; - - return true - }, $Gundog_isD9$2.$$arity = 0), nil) && 'isD9'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$setPrefixes', '$upcase', '$=~', '$last_match', '$to_i', '$parren_killer', '$getDamageTypeAndTable', '$getFumbleTypeAndTable', '$empty?', '$+', '$rand', '$<', '$>', '$[]', '$===']); - - self.$require("diceBot/Gundog"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'GundogZero'); - - var $nesting = [self].concat($parent_nesting), $GundogZero_rollDiceCommand$1, $GundogZero_getDamageTypeAndTable$2, $GundogZero_getFumbleTypeAndTable$3; - - - Opal.const_set($nesting[0], 'ID', "GundogZero"); - Opal.const_set($nesting[0], 'NAME', "ガンドッグゼロ"); - Opal.const_set($nesting[0], 'SORT_KEY', "かんとつくせろ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "失敗、成功、クリティカル、ファンブルとロールの達成値の自動判定を行います。\n" + "nD9ロールも対応。\n" + "・ダメージペナルティ表  (〜DPTx) (x:修正)\n" + " 射撃(SDPT)、格闘(MDPT)、車両(VDPT)、汎用(GDPT)の各表を引くことが出来ます。\n" + " 修正を後ろに書くことも出来ます。\n" + "・ファンブル表      (〜FTx) (x:修正)\n" + " 射撃(SFT)、格闘(MFT)、投擲(TFT)の各表を引くことが出来ます。\n" + " 修正を後ろに書くことも出来ます。\n"); - self.$setPrefixes(["(.DPT|.FT)\\d*"]); - - Opal.def(self, '$rollDiceCommand', $GundogZero_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $b, self = this, string = nil, table = nil, ttype = nil, type = nil, dice = nil, mod = nil, head = nil, diceOriginalText = nil, output = nil; - - - string = command.$upcase(); - table = []; - ttype = ""; - type = ""; - dice = 0; - mod = 0; - if ($truthy(/(\w)DPT([\+\-\d]*)/i['$=~'](string))) { - - ttype = "ダメージペナルティー"; - head = $$($nesting, 'Regexp').$last_match(1); - if ($truthy($$($nesting, 'Regexp').$last_match(2))) { - mod = self.$parren_killer("" + "(0" + ($$($nesting, 'Regexp').$last_match(2)) + ")").$to_i()}; - $b = self.$getDamageTypeAndTable(head), $a = Opal.to_ary($b), (type = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b;}; - if ($truthy(/(\w)FT([\+\-\d]*)/i['$=~'](string))) { - - ttype = "ファンブル"; - head = $$($nesting, 'Regexp').$last_match(1); - if ($truthy($$($nesting, 'Regexp').$last_match(2))) { - mod = self.$parren_killer("" + "(0" + ($$($nesting, 'Regexp').$last_match(2)) + ")").$to_i()}; - $b = self.$getFumbleTypeAndTable(head), $a = Opal.to_ary($b), (type = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b;}; - if ($truthy(type['$empty?']())) { - return "1"}; - dice = $rb_plus($rb_plus(self.$rand(10), self.$rand(10)), mod); - diceOriginalText = dice; - if ($truthy($rb_lt(dice, 0))) { - dice = 0}; - if ($truthy($rb_gt(dice, 18))) { - dice = 18}; - output = "" + (type) + (ttype) + "表[" + (diceOriginalText) + "] > " + (table['$[]'](dice)); - return output; - }, $GundogZero_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$getDamageTypeAndTable', $GundogZero_getDamageTypeAndTable$2 = function $$getDamageTypeAndTable(head) { - var $a, $b, self = this, $case = nil, type = nil, table = nil; - - - $case = head; - if ("S"['$===']($case)) { - type = "射撃"; - table = ["対象は[死亡]", "[追加D]4D6/[出血]2D6/[重傷]-30%/[朦朧判定]15", "[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]14", "[追加D]3D6/[出血]2D6/[重傷]-20%/[朦朧判定]14", "[追加D]3D6/[出血]1D6/[重傷]-20%/[朦朧判定]12", "[追加D]2D6/[出血]1D6/[重傷]-10%/[朦朧判定]12", "[追加D]2D6/[軽傷]-20%/[朦朧判定]10", "[追加D]2D6/[軽傷]-10%/[朦朧判定]10", "[追加D]2D6/[軽傷]-20%/[朦朧判定]8", "[追加D]2D6/[軽傷]-20%/[朦朧判定]6", "[追加D]2D6/[軽傷]-10%/[朦朧判定]4", "[追加D]1D6/[軽傷]-20%", "[追加D]1D6/[軽傷]-20%", "[追加D]1D6/[軽傷]-10%", "[軽傷]-20%", "[軽傷]-10%", "[軽傷]-10%", "手に持った武器を落とす", "ペナルティー無し"];} - else if ("M"['$===']($case)) { - type = "格闘"; - table = ["対象は[死亡]", "[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]15", "[追加D]2D6/[出血]2D6/[重傷]-30%/[朦朧判定]14", "[追加D]2D6/[出血]1D6/[重傷]-20%/[朦朧判定]14", "[追加D]3D6/[出血]1D6/[重傷]-10%/[朦朧判定]12", "[追加D]2D6/[軽傷]-20%/[朦朧判定]12", "[追加D]2D6/[軽傷]-10%/[朦朧判定]12", "[追加D]2D6/[軽傷]-10%/[朦朧判定]10", "[追加D]1D6/[軽傷]-20%/[朦朧判定]8", "[追加D]1D6/[軽傷]-10%/[朦朧判定]8", "[追加D]1D6/[軽傷]-10%/[朦朧判定]6", "[軽傷]-20%/[朦朧判定]6", "[軽傷]-10%/[朦朧判定]6", "[軽傷]-10%/[朦朧判定]4", "[軽傷]-20%", "[軽傷]-10%", "[軽傷]-10%", "手に持った武器を落とす", "ペナルティー無し"];} - else if ("V"['$===']($case)) { - type = "車両"; - table = ["[クラッシュ]する。[チェイス]から除外", "[乗員D]3D6/[操縦性]-20%/[スピン判定]", "[乗員D]3D6/[操縦性]-20%/[スピン判定]", "[乗員D]2D6/[操縦性]-10%/[スピン判定]", "[乗員D]2D6/[操縦性]-10%/[スピン判定]", "[乗員D]3D6/[スピード]-2/[スピン判定]", "[乗員D]3D6/[スピード]-2/[スピン判定]", "[乗員D]2D6/[スピード]-1/[スピン判定]", "[乗員D]2D6/[スピード]-1/[スピン判定]", "[乗員D]2D6/[操縦判定]-20%", "[乗員D]2D6/[操縦判定]-20%", "[乗員D]1D6/[操縦判定]-10%", "[乗員D]1D6/[操縦判定]-10%", "[スピン判定]", "[スピン判定]", "乗員に[ショック]-20%", "乗員に[ショック]-10%", "乗員に[ショック]-10%", "ペナルティー無し"];} - else if ("G"['$===']($case)) { - type = "汎用"; - table = ["対象は[死亡]", "[追加D]4D6/[出血]2D6/[重傷]-30%/[朦朧判定]18", "[追加D]4D6/[出血]2D6/[重傷]-30%/[朦朧判定]16", "[追加D]3D6/[出血]2D6/[重傷]-20%/[朦朧判定]14", "[追加D]3D6/[出血]2D6/[重傷]-20%/[朦朧判定]14", "[追加D]3D6/[出血]1D6/[重傷]-10%/[朦朧判定]12", "[追加D]2D6/[出血]1D6/[重傷]-10%/[朦朧判定]12", "[追加D]2D6/[軽傷]-30%/[朦朧判定]12", "[追加D]2D6/[軽傷]-30%/[朦朧判定]10", "[追加D]2D6/[軽傷]-30%/[朦朧判定]8", "[追加D]2D6/[軽傷]-20%/[朦朧判定]8", "[追加D]2D6/[軽傷]-20%/[朦朧判定]6", "[追加D]2D6/[軽傷]-10%/[朦朧判定]6", "[追加D]1D6/[軽傷]-20%/[朦朧判定]4", "[追加D]1D6/[軽傷]-20%", "[追加D]1D6/[軽傷]-10%", "[軽傷]-20%", "[軽傷]-10%", "ペナルティー無し"];} - else { - head = "S"; - $b = self.$getDamageTypeAndTable(head), $a = Opal.to_ary($b), (type = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b;}; - return [type, table]; - }, $GundogZero_getDamageTypeAndTable$2.$$arity = 1); - return (Opal.def(self, '$getFumbleTypeAndTable', $GundogZero_getFumbleTypeAndTable$3 = function $$getFumbleTypeAndTable(head) { - var $a, $b, self = this, $case = nil, type = nil, table = nil; - - - $case = head; - if ("S"['$===']($case)) { - type = "射撃"; - table = ["銃器が暴発、自分に命中。[貫通D]", "銃器が暴発、自分に命中。[非貫通D]", "誤射。ランダムに味方に命中。[貫通D]", "誤射。ランダムに味方に命中。[非貫通D]", "銃器が完全に故障", "銃器が完全に故障", "故障。〈メカニック〉判定に成功するまで射撃不可", "故障。〈メカニック〉判定に成功するまで射撃不可", "作動不良。[アイテム使用]を2回行って修理するまで射撃不可", "作動不良。[アイテム使用]を2回行って修理するまで射撃不可", "作動不良。[アイテム使用]を行って修理するまで射撃不可", "作動不良。[アイテム使用]を行って修理するまで射撃不可", "姿勢を崩す。[不安定]", "姿勢を崩す。[不安定]", "姿勢を崩す。[ショック]-20%", "姿勢を崩す。[ショック]-20%", "姿勢を崩す。[ショック]-10%", "姿勢を崩す。[ショック]-10%", "ペナルティー無し"];} - else if ("M"['$===']($case)) { - type = "格闘"; - table = ["避けられて[転倒]、[朦朧]状態", "ランダムに[至近距離]の味方(居なければ自分)に命中。[貫通D]", "ランダムに[至近距離]の味方(居なければ自分)に命中。[貫通D]", "武器が完全に壊れる", "武器がガタつく。〈手先〉判定に成功するまで使用不可", "武器がガタつく。〈手先〉判定に成功するまで使用不可", "無理な姿勢で筋を伸ばす。[軽傷]-30%", "無理な姿勢で筋を伸ばす。[軽傷]-30%", "無理な姿勢で筋を伸ばす。[軽傷]-20%", "無理な姿勢で筋を伸ばす。[軽傷]-20%", "無理な姿勢で筋を伸ばす。[軽傷]-10%", "無理な姿勢で筋を伸ばす。[軽傷]-10%", "姿勢を崩す。[不安定]", "姿勢を崩す。[不安定]", "姿勢を崩す。[ショック]-20%", "姿勢を崩す。[ショック]-20%", "姿勢を崩す。[ショック]-10%", "姿勢を崩す。[ショック]-10%", "ペナルティー無し"];} - else if ("T"['$===']($case)) { - type = "投擲"; - table = ["[転倒]、[朦朧]状態", "自分に命中。[貫通D]", "自分に命中。[非貫通D]", "ランダムに味方(居なければ自分)に命中。[非貫通D]", "ランダムに味方(居なければ自分)に命中。[非貫通D]", "武器が完全に壊れる", "武器が完全に壊れる", "腰を痛める。[軽傷]-30%", "肩を痛める。[軽傷]-20%", "肩を痛める。[軽傷]-20%", "肘に違和感。[軽傷]-10%", "肘に違和感。[軽傷]-10%", "姿勢を崩す。[不安定]", "姿勢を崩す。[不安定]", "姿勢を崩す。[ショック]-20%", "姿勢を崩す。[ショック]-20%", "姿勢を崩す。[ショック]-10%", "姿勢を崩す。[ショック]-10%", "ペナルティー無し"];} - else { - head = "S"; - $b = self.$getFumbleTypeAndTable(head), $a = Opal.to_ary($b), (type = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b;}; - return [type, table]; - }, $GundogZero_getFumbleTypeAndTable$3.$$arity = 1), nil) && 'getFumbleTypeAndTable'; - })($nesting[0], $$($nesting, 'Gundog'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Gurps.js b/src/assets/dicebot/Gurps.js deleted file mode 100644 index 5c0a44d12..000000000 --- a/src/assets/dicebot/Gurps.js +++ /dev/null @@ -1,248 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$==', '$size', '$-', '$<=', '$>=', '$getRollDiceResult', '$nil?', '$getCFTableResult', '$getFearResult', '$getReactResult', '$getHitResult', '$===', '$last_match', '$roll', '$sort', '$map', '$split', '$to_proc', '$getValue', '$+', '$check_nD6', '$get_table_by_nD6', '$to_i', '$>', '$[]', '$<', '$empty?', '$parren_killer']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Gurps'); - - var $nesting = [self].concat($parent_nesting), $Gurps_initialize$1, $Gurps_check_nD6$2, $Gurps_rollDiceCommand$3, $Gurps_getRollDiceResult$4, $Gurps_getCFTableResult$5, $Gurps_getFearResult$6, $Gurps_getReactResult$7, $Gurps_getHitResult$8, $Gurps_getValue$9; - - - Opal.const_set($nesting[0], 'ID', "GURPS"); - Opal.const_set($nesting[0], 'NAME', "ガープス"); - Opal.const_set($nesting[0], 'SORT_KEY', "かあふす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定においてクリティカル・ファンブルの自動判別、成功度の自動計算。(3d6<=目標値/目標値-3d6)\n" + " ・祝福等のダイス目にかかる修正は「3d6-1<=目標値」といった記述で計算されます。(ダイス目の修正値はクリティカル・ファンブルに影響を与えません)\n" + " ・クリティカル値・ファンブル値への修正については現在対応していません。\n" + "・クリティカル表 (CRT)\n" + "・頭部打撃クリティカル表 (HCRT)\n" + "・ファンブル表 (FMB)\n" + "・呪文ファンブル表 (MFMB)\n" + "・妖魔夜行スペシャルクリティカル表 (YSCRT)\n" + "・妖魔夜行スペシャルファンブル表 (YSFMB)\n" + "・妖術ファンブル表 (YFMB)\n" + "・命中部位表 (HIT)\n" + "・恐怖表 (FEAR+n)\n" + " nには恐怖判定の失敗度を入れてください。\n" + "・反応判定表 (REACT, REACT±n)\n" + " nには反応修正を入れてください。\n" + "・D66ダイスあり\n"); - self.$setPrefixes(["\\w*CRT", "\\w*FMB", "HIT", "FEAR((\\+)?\\d*)", "REACT((\\+|\\-)?\\d*)", "[\\d\\+\\-]+\\-3[dD]6?[\\d\\+\\-]*"]); - - Opal.def(self, '$initialize', $Gurps_initialize$1 = function $$initialize() { - var $iter = $Gurps_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Gurps_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Gurps_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.d66Type = 1); - }, $Gurps_initialize$1.$$arity = 0); - - Opal.def(self, '$check_nD6', $Gurps_check_nD6$2 = function $$check_nD6(total, dice_total, dice_list, cmp_op, target) { - var $a, self = this, success = nil, crt_string = nil, fmb_string = nil, fail_string = nil; - - - if (target['$==']("?")) { - return ""}; - if ($truthy((($a = dice_list.$size()['$=='](3)) ? cmp_op['$==']("<=") : dice_list.$size()['$=='](3)))) { - } else { - return "" - }; - success = $rb_minus(target, total); - crt_string = "" + " > クリティカル(成功度:" + (success) + ")"; - fmb_string = "" + " > ファンブル(失敗度:" + (success) + ")"; - fail_string = "" + " > 自動失敗(失敗度:" + (success) + ")"; - if ($truthy(($truthy($a = $rb_le(dice_total, 6)) ? $rb_ge(target, 16) : $a))) { - return crt_string - } else if ($truthy(($truthy($a = $rb_le(dice_total, 5)) ? $rb_ge(target, 15) : $a))) { - return crt_string - } else if ($truthy($rb_le(dice_total, 4))) { - return crt_string}; - if ($truthy($rb_le($rb_minus(target, dice_total), -10))) { - return fmb_string - } else if ($truthy(($truthy($a = $rb_ge(dice_total, 17)) ? $rb_le(target, 15) : $a))) { - return fmb_string - } else if ($truthy($rb_ge(dice_total, 18))) { - return fmb_string - } else if ($truthy($rb_ge(dice_total, 17))) { - return fail_string}; - if ($truthy($rb_le(total, target))) { - return "" + " > 成功(成功度:" + (success) + ")" - } else { - return "" + " > 失敗(失敗度:" + (success) + ")" - }; - }, $Gurps_check_nD6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $Gurps_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var self = this, result = nil; - - - result = self.$getRollDiceResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - result = self.$getCFTableResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - result = self.$getFearResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - result = self.$getReactResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - result = self.$getHitResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - return ""; - }, $Gurps_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$getRollDiceResult', $Gurps_getRollDiceResult$4 = function $$getRollDiceResult(command) { - var $a, $b, self = this, diffStr = nil, modStr = nil, dice_cnt = nil, dice_max = nil, dice_n = nil, dice_str = nil, diceList = nil, diff = nil, total_n = nil, result = nil; - - - if ($truthy(/([\d\+\-]+)\-3[dD]6?([\d\+\-]*)/['$==='](command))) { - } else { - return nil - }; - diffStr = $$($nesting, 'Regexp').$last_match(1); - modStr = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : ""); - dice_cnt = 3; - dice_max = 6; - $b = self.$roll(dice_cnt, dice_max), $a = Opal.to_ary($b), (dice_n = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - diceList = $send(dice_str.$split(","), 'map', [], "to_i".$to_proc()).$sort(); - diff = self.$getValue(diffStr, 0); - total_n = $rb_plus(dice_n, self.$getValue(modStr, 0)); - result = "" + "(3D6" + (modStr) + "<=" + (diff) + ") > " + (dice_n) + "[" + (dice_str) + "]" + (modStr) + " > " + (total_n) + (self.$check_nD6(total_n, dice_n, diceList, "<=", diff)); - return result; - }, $Gurps_getRollDiceResult$4.$$arity = 1); - - Opal.def(self, '$getCFTableResult', $Gurps_getCFTableResult$5 = function $$getCFTableResult(command) { - var $a, $b, self = this, $case = nil, tableName = nil, table = nil, result = nil, number = nil; - - - if ($truthy(/\w*(FMB|CRT)/['$==='](command))) { - } else { - return nil - }; - $case = command; - if ("CRT"['$===']($case)) { - tableName = "クリティカル表"; - table = ["体を狙っていたら、相手は気絶(回復は30分後に生命力判定)。他はダメージ3倍。", "相手の防御点を無視。", "ダメージ3倍。", "ダメージ2倍。", "相手は生命力判定を行い、失敗すると朦朧状態となる。", "四肢を狙っていたら、6ターンそこが使えなくなる。通常ダメージ。", "通常ダメージ。", "通常ダメージ。", "通常ダメージ。", "四肢を狙っていたら、6ターンそこが使えなくなる。通常ダメージ。", "相手の防御点を無視。", "四肢を狙っていたら、そこが使えなくなる(通常ダメージ)。他は2倍ダメージ。", "相手は武器を落とす。通常ダメージ。", "ダメージ2倍。", "ダメージ3倍。", "体を狙っていたら、相手は気絶(回復は30分後に生命力判定)。他はダメージ3倍。"];} - else if ("HCRT"['$===']($case)) { - tableName = "頭部打撃クリティカル表"; - table = ["敵は即死する。", "敵は意識を失う。30分ごとに生命力判定をして、成功すると意識を回復する。", "敵は意識を失う。30分ごとに生命力判定をして、成功すると意識を回復する。", "敵は両目を負傷する。朦朧状態になる。目が見えないので、敏捷力-10。", "敵は片目を負傷する。朦朧状態になる。敏捷力-2。", "敵はバランスを失う。次のターンまで、防御しかできない。", "通常ダメージのみ。", "通常ダメージのみ。", "通常ダメージのみ。", "「叩き」攻撃なら、敵は24時間のあいだ耳が聞こえなくなる。「切り」「刺し」なら、1点しかダメージを与えられないが、傷跡が残る。", "「叩き」攻撃なら、敵は耳が聞こえなくなる。「切り」「刺し」なら、2点しかダメージを与えられないが、傷跡が残る。", "敵は逃げ腰になって武器を落とす(両手に武器を持っていたらランダムに決定)。", "敵は通常のダメージを受け、朦朧状態になる。", "敵は通常のダメージを受け、朦朧状態になる。", "敵は通常のダメージを受け、朦朧状態になる。", "敵は通常のダメージを受け、朦朧状態になる。"];} - else if ("FMB"['$===']($case)) { - tableName = "ファンブル表"; - table = ["武器が壊れる。ただし、メイスなど固い\"叩き\"武器は壊れない(ふりなおし)。", "武器が壊れる。ただし、フレイルなど固い\"叩き\"武器は壊れない(ふりなおし)。", "自分の腕か足に命中(通常ダメージ)。ただし\"刺し\"武器や射撃ならふりなおし。", "自分の腕か足に命中(半分ダメージ)。ただし\"刺し\"武器や射撃ならふりなおし。", "バランスを失い、次ターンは行動不可。次ターンの行動の番まで、能動防御-2。", "使った武器が非準備状態になる。1ターンよぶんに準備行動を行わないと、準備状態にならない。", "武器を落とす。", "武器を落とす。", "武器を落とす。", "使った武器が非準備状態になる。1ターンよぶんに準備行動を行わないと、準備状態にならない。", "バランスを失い、次ターンは行動不可。次ターンの行動の番まで、能動防御-2。", "前か後ろ(ランダム)に武器が1メートル飛んでいく。その場にいるキャラクターは敏捷力判定を行い、失敗するとダメージ(通常の半分)を受ける。ただし、\"刺し\"武器や弓矢はその場に落ちるだけ。", "利き腕をくじいてしまう。30分間、攻撃にも防御にも使えない。", "足をすべらせ、その場に倒れる。", "武器が壊れる。ただし、モールなど固い\"叩き\"武器は壊れない(ふりなおし)。", "武器が壊れる。ただし、金属バットなど固い\"叩き\"武器は壊れない(ふりなおし)。"];} - else if ("MFMB"['$===']($case)) { - tableName = "呪文ファンブル表"; - table = ["呪文が完全に失敗する。術者は1D点のダメージを受ける。", "呪文が術者にかかる。", "呪文が術者の仲間にかかる(対象はランダムに決定)。", "呪文が近くの敵にかかる(対象はランダムに決定)。", "哀れな物音があがり、硫黄のひどい匂いが立ち込める。", "呪文が目標以外のもの(仲間、敵、品物)にかかる。対象はランダムに決定するか、おもしろくなるようにGMが決定する。", "呪文が完全に失敗する。術者は1点のダメージを受ける。", "呪文が完全に失敗する。術者は朦朧状態になる(立ち直るには知力判定を行う)。", "大きな物音があがり、色とりどりの閃光が走る。", "見せ掛けの効果があらわれるが、弱くてとても役に立たない。", "意図した効果と逆の効果があらわれる。", "違った目標に、意図した効果とは逆の効果があらわれる(対象はランダムに決定)。", "何も起こらないが、術者は一時的にその呪文を忘れてしまう。思い出すまで、1週間ごとに知力判定を行う。", "呪文がかかったように思えるが、役に立たないただの見せかけだけ。", "呪文が完全に失敗し、術者の右腕が損なわれる。回復に1週間を要する。", "呪文が完全に失敗する。GMから見て、術者や呪文が純粋で善良なものでなければ、悪魔(第3版文庫版P.384参照)があらわれ、術者を攻撃する。"];} - else if ("YSCRT"['$===']($case)) { - tableName = "妖魔夜行スペシャルクリティカル表"; - table = ["目(あるいは急所)に当たった!目(あるいは急所)が無ければ3倍ダメージ。", "胴体を狙っていたら、相手は気絶(回復は30分後に生命力判定)。他は3倍ダメージ。", "相手の防護点を無視。通常ダメージ。", "ダメージ3倍。", "ダメージ2倍", "敵は転倒する。通常ダメージ。", "四肢を狙っていたら、6ターンの間そこが使えなくなる。通常ダメージ。", "通常ダメージ。", "相手は武器を落とす。通常ダメージ。", "相手は生命力判定を行い、失敗すると朦朧状態になる。回復判定は毎ターンはじめに行う。通常ダメージ。", "相手の防護点を無視。通常ダメージ。", "四肢を狙っていたら、その四肢は使えなくなる(通常ダメージ)。他は2倍ダメージ。", "攻撃者は、目(あるいはその他の主要感覚部位)がくらんでしまう。1D-3ターン(最低1ターン)盲目状態。通常ダメージ。", "ダメージ2倍。", "ダメージ3倍。", "胴体を狙っていたら、相手は気絶(回復は30分後に生命力判定)。他は3倍ダメージ。"];} - else if ("YSFMB"['$===']($case)) { - tableName = "妖魔夜行スペシャルファンブル表"; - table = ["この表を2回振って、両方の結果を適用する。", "自分に命中。通常ダメージ。防護点、吸収、反射は無視(「◯◯に無敵」の妖力は有効)。", "自分に命中。半分ダメージ。防護点、吸収、反射は無視(「◯◯に無敵」の妖力は有効)。", "足などが傷つき、30分のあいだ、移動手段が失われる。能動防御-4。", "攻撃に使った部位に1D点のダメージ。防護点は無視。", "バランスを失い、次ターンは行動不可。次ターンの行動の番まで、能動防御-2。", "攻撃に使った部位に1D-2点のダメージ。防護点は無視。", "よろけてしまう。次のターンは移動できない。", "バランスを失う。次のターンの行動の番まで、能動防御-2。", "足をすべらせその場に倒れる。飛行中なら50m落下(高度が50m以下なら墜落)。", "近くに味方(または無関係の人物)がいれば、攻撃が命中してしまう。いなければ、振り直し。", "大きな隙ができる。接近戦なら、敵は、即座に一撃をくわえられる。能動防御は-2で可能。射撃戦なら振り直し。", "攻撃に使った部位をくじいてしまう。30分間、攻撃にも防御にも使えない。", "攻撃者は、目(あるいはその他の主要感覚部位)がくらんでしまう。1D-3ターン(最低1ターン)盲目状態。通常ダメージ。", "自分に命中。半分ダメージ。防護点は無効。", "この表を2回振って、プレイヤーが好きな方を適用する。"];} - else if ("YFMB"['$===']($case)) { - tableName = "妖術ファンブル表"; - table = ["妖術が完全に失敗する。術者は3D点のダメージを受ける。", "妖術が完全に失敗する。術者は1D点のダメージを受ける。", "妖術が術者にかかる。", "妖術が術者の仲間にかかる(誰にかかるかは、ランダムに決定する)。", "妖術が近くの敵にかかる(誰にかかるかは、ランダムに決定する)。", "妖術が目標以外のもの(仲間、敵、品物)にかかる。何にかかるかは、ランダムに決定するか、おもしろくなるようにGMが選ぶ。", "妖術が発動したように見えるが、実際の効果はない。効果があったように見えても、GMがいちばん面白いと思った時に消滅させられる。", "妖術は発動するが、威力レベルが半分になっている。", "妖術は発動するが、威力レベルが半分になっている。さらに大きな音があがり、色とりどりの閃光が走り、悪臭(善い意図で使われたなら芳香)がたちこめる。", "妖術が完全に失敗する。術者は朦朧状態になる(立ち直るにはターンの頭ごとに意志判定を行う)。", "妖術は発動する。しかし制御することができない。次のターンでも、妖術を使ってしまうが、自動的にファンブルになる。", "目標に、意図した効果と正反対の効果があらわれる。", "何も怒らない。術者は一時的にその妖術を忘れてしまう。思い出すまで、1日ごとに知力判定を行う。", "違った目標に、意図した効果とは正反対の効果があらわれる(どこにあらわれるかはランダムに決定)。とっさに思いつかなければ\"振り直す\"。", "妖術が完全に失敗し、術者の弱点が明らかにされる。弱点がなければ振り直して良い。", "妖術が完全に失敗する。術者は完全な行動不能におちいる。回復は反日ごとに生命力で判定を行う。"];} - else {return nil}; - $b = self.$get_table_by_nD6(table, 3), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return "" + (tableName) + "(" + (number) + "):" + (result); - }, $Gurps_getCFTableResult$5.$$arity = 1); - - Opal.def(self, '$getFearResult', $Gurps_getFearResult$6 = function $$getFearResult(command) { - var $a, $b, self = this, modify = nil, tableName = nil, table = nil, dice = nil, number = nil, num = nil, result = nil; - - - if ($truthy(/FEAR((\+)?\d+)?/['$==='](command))) { - } else { - return nil - }; - modify = $$($nesting, 'Regexp').$last_match(1).$to_i(); - tableName = "恐怖表"; - table = ["1ターン朦朧状態。2ターン目に自動回復。", "1ターン朦朧状態。2ターン目に自動回復。", "1ターン朦朧状態。以後、毎ターン不利な修正を無視した意志判定を行い、成功すると回復。", "1ターン朦朧状態。以後、毎ターン不利な修正を無視した意志判定を行い、成功すると回復。", "1ターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "1ターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "2Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "思考不能。15ターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "新たな癖をひとつ植え付けられる。", "1D点疲労。さらに1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "1D点疲労。さらに1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "新たな癖をひとつ獲得。さらに1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。", "生命力判定を行い、失敗すると1点の負傷を受ける。さらに1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。", "1点負傷。2D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。", "卒倒。4D分間意識不明。1D点疲労。", "パニック。1D分間のあいだ、叫びながら走り回ったり、座り込んで泣きわめいたりする。以後、1分ごとに知力判定(修正なし)を行い、成功すると回復。", "-10CPの妄想を植え付けられる。", "-10CPの軽い恐怖症を植え付けられる。", "肉体的な変化。髪が真白になったり、老化したりする。-15CPぶんの肉体的特徴に等しい。", "その恐怖に関連する軽い恐怖症を持っているならそれが強い恐怖症(CP2倍)になる。そうでなければ、-10CPぶんの精神的特徴を植え付けられる。", "-10CPの妄想を植え付けられる。生命力判定を行い、失敗すると1点の負傷を受ける。さらに1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。", "-10CPの軽い恐怖症を植え付けられる。生命力判定を行い、失敗すると1点の負傷を受ける。さらに1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。", "浅い昏睡状態。30分ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。", "昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。", "硬直。1D日のあいだ身動きしない。その時点で生命力判定を行い、成功すると動けるようになる。失敗するとさらに1D日硬直。その間、適切な医学的処置を受けていないかぎり、初日に1点、2日目に2点、3日目に3点と生命力を失っていく。動けるようになってからも、硬直していたのと同じ日数だけ、あらゆる判定に-2の修正。", "痙攣。1D分間地面に倒れて痙攣する。2D点疲労。また、生命力判定に失敗すると1D点負傷。これがファンブルなら生命力1点を永遠に失う。", "発作。軽い心臓発作を起こし、地面に倒れる。2D点負傷。", "大パニック。キャラクターは支離滅裂な行動に出る。GMが3Dを振り、目が大きければ大きいほど馬鹿げた行動を行う。その行動が終わったら知力判定を行い、成功すると我に返る。失敗すると新たな馬鹿げた行動をとる。", "強い妄想(-15CP)を植え付けられる。", "強い恐怖症、ないし-15CPぶんの精神的特徴を植え付けられる。", "激しい肉体的変化。髪が真白になったり、老化したりする。-20CPぶんの肉体的特徴に等しい。", "激しい肉体的変化。髪が真白になったり、老化したりする。-30CPぶんの肉体的特徴に等しい。", "昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。さらに強い妄想(-15CP)を植え付けられる。", "昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。さらに強い恐怖症、ないし-30CPぶんの精神的特徴を植え付けられる。", "昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。さらに強い恐怖症、ないし-30CPぶんの精神的特徴を植え付けられる。知力が1点永遠に低下する。あわせて精神系の技能、呪文、超能力のレベルも低下する。"]; - $b = self.$roll(3, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - number = $rb_plus(dice, modify); - if ($truthy($rb_gt(number, 40))) { - num = 36 - } else { - num = $rb_minus(number, 4) - }; - result = table['$[]'](num); - return "" + (tableName) + "(" + (number) + "):" + (result); - }, $Gurps_getFearResult$6.$$arity = 1); - - Opal.def(self, '$getReactResult', $Gurps_getReactResult$7 = function $$getReactResult(command) { - var $a, $b, self = this, modify = nil, tableName = nil, dice = nil, number = nil, result = nil; - - - if ($truthy(/REACT((\+|\-)?\d*)/['$==='](command))) { - } else { - return nil - }; - modify = $$($nesting, 'Regexp').$last_match(1).$to_i(); - tableName = "反応表"; - $b = self.$roll(3, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - number = $rb_plus(dice, modify); - if ($truthy($rb_lt(number, 1))) { - result = "最悪" - } else if ($truthy($rb_lt(number, 4))) { - result = "とても悪い" - } else if ($truthy($rb_lt(number, 7))) { - result = "悪い" - } else if ($truthy($rb_lt(number, 10))) { - result = "良くない" - } else if ($truthy($rb_lt(number, 13))) { - result = "中立" - } else if ($truthy($rb_lt(number, 16))) { - result = "良い" - } else if ($truthy($rb_lt(number, 19))) { - result = "とても良い" - } else { - result = "最高" - }; - return "" + (tableName) + "(" + (number) + "):" + (result); - }, $Gurps_getReactResult$7.$$arity = 1); - - Opal.def(self, '$getHitResult', $Gurps_getHitResult$8 = function $$getHitResult(command) { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - if ($truthy("HIT"['$==='](command))) { - } else { - return nil - }; - tableName = "命中部位表"; - table = ["脳", "脳", "頭", "遠い腕", "手首(左右ランダム)", "近い腕", "胴体", "胴体", "胴体", "遠い足", "近い足", "近い足", "足首(左右ランダム)", "足首(左右ランダム)", "重要機関(胴体の)", "武器"]; - $b = self.$get_table_by_nD6(table, 3), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return "" + (tableName) + "(" + (number) + "):" + (result); - }, $Gurps_getHitResult$8.$$arity = 1); - return (Opal.def(self, '$getValue', $Gurps_getValue$9 = function $$getValue(text, defaultValue) { - var $a, self = this; - - - if ($truthy(($truthy($a = text['$nil?']()) ? $a : text['$empty?']()))) { - return defaultValue}; - return self.$parren_killer($rb_plus($rb_plus("(0", text), ")")).$to_i(); - }, $Gurps_getValue$9.$$arity = 2), nil) && 'getValue'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/GurpsFW.js b/src/assets/dicebot/GurpsFW.js deleted file mode 100644 index d5c1dba1d..000000000 --- a/src/assets/dicebot/GurpsFW.js +++ /dev/null @@ -1,587 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$=~', '$prefixesPattern', '$class', '$last_match', '$upcase', '$getCommandResult', '$!=', '$==', '$size', '$-', '$<=', '$>=', '$===', '$get_table_by_nD6', '$to_i', '$roll', '$+', '$>', '$[]', '$<', '$getTrapTable', '$nil?', '$floor', '$/', '$getTresureTable', '$get_table_by_1d6', '$!', '$getRandomEvent', '$get_table_by_d66', '$getLotResult', '$lambda', '$to_s', '$normal2', '$normal3', '$normal4', '$normal5', '$premium5', '$premium2', '$premium3', '$premium4', '$premium6', '$premium1', '$normal1', '$getRandomDiff', '$get_table_by_number']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'GurpsFW'); - - var $nesting = [self].concat($parent_nesting), $GurpsFW_initialize$1, $GurpsFW_dice_command$2, $GurpsFW_check_nD6$3, $GurpsFW_getCommandResult$4, $GurpsFW_normal1$5, $GurpsFW_normal2$9, $GurpsFW_normal3$12, $GurpsFW_normal4$14, $GurpsFW_normal5$16, $GurpsFW_premium1$18, $GurpsFW_premium2$22, $GurpsFW_premium3$25, $GurpsFW_premium4$27, $GurpsFW_premium5$29, $GurpsFW_premium6$31, $GurpsFW_getLotResult$32, $GurpsFW_getTresureTable$33, $GurpsFW_getTrapTable$34, $GurpsFW_getRandomEvent$35, $GurpsFW_getRandomDiff$36; - - - Opal.const_set($nesting[0], 'ID', "GurpsFW"); - Opal.const_set($nesting[0], 'NAME', "ガープスフィルトウィズ"); - Opal.const_set($nesting[0], 'SORT_KEY', "かあふすふいるとういす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "--GURPS汎用コマンド----------\n" + "・判定においてクリティカル・ファンブルの自動判別、成功度の自動計算。(3d6<=目標値)\n" + " ・祝福等のダイス目にかかる修正は「3d6-1<=目標値」といった記述で計算されます。\n" + " (ダイス目の修正値はクリティカル・ファンブルに影響を与えません。)\n" + " ・クリティカル値・ファンブル値への修正については現在対応していません。\n" + "・クリティカル表 (CRT)\n" + "・頭部打撃クリティカル表 (HCRT)\n" + "・ファンブル表 (FMB)\n" + "・呪文ファンブル表 (MFMB)\n" + "・命中部位表 (HIT)\n" + "・恐怖表 (FEAR+n)\n" + " nには恐怖判定の失敗度を入れてください。\n" + "・反応判定表 (REACT, REACT±n)\n" + " nには反応修正を入れてください。\n" + "・D66ダイスあり\n" + "--GURPS-FW専用コマンド----------\n" + "・ドロップ判定(DROP)/ネームドドロップ判定(DROPN)\n" + " ・ドロップ判定に修正が付く場合は末尾に+xを記述(xは修正値)。(DROP+x、DROPN+x)\n" + "・必殺技表(HST)/驚異的必殺技表(KHST)\n" + " ・ホムンクルスの【必殺技!】/【驚異的必殺技!】用コマンド。\n" + "・ナンバーワンくじ/ノーマル(LOTN)/プレミアム(LOTP)\n" + "--夢幻の迷宮(ver.2013/11/07)----------\n" + "・コマンド中のdには難易度を入れてください。(初級:E 中級:N 上級:H 悪夢:L)\n" + "・コマンド中のaには地形を入れてください。\n" + " (1:洞窟 2:遺跡 3:断崖 4:水辺 5:森林 6:墓地)\n" + "・ランダムイベント(RANDd)/地形固定(RANDda)\n" + "・ランダムエンカウント(RENCd)/地形固定(RENCda)\n" + "・トラップリスト(TRAPd)\n" + "・報酬財宝テーブル(xに到達深度を記述)。 (TRSdx)\n" + " ・財宝テーブルの段階が変動する場合、末尾に±yを記述(yは変動段階)。(TRSdx±y)\n" + " [例:TRSE5-1、TRSH36+2]\n" + "・地形決定表(AREA)\n" + "・迷宮追加オプション表(RANDOP)\n"); - self.$setPrefixes(["CRT", "HCRT", "FMB", "MFMB", "HIT", "FEAR((\\+)?\\d*)", "REACT((\\+|\\-)?\\d*)", "TRAP(E|N|H|L)", "TRS((E|N|H|L)\\d+)((\\+|\\-)?\\d*)", "RAND(E|N|H|L)[1-6]?", "RENC(E|N|H|L)[1-6]?", "AREA", "DROP(N)?((\\+)?\\d)?", "HST", "KHST", "RANDOP", "LOT(N|P)"]); - - Opal.def(self, '$initialize', $GurpsFW_initialize$1 = function $$initialize() { - var $iter = $GurpsFW_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $GurpsFW_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $GurpsFW_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.d66Type = 1); - }, $GurpsFW_initialize$1.$$arity = 0); - - Opal.def(self, '$dice_command', $GurpsFW_dice_command$2 = function $$dice_command(string, name) { - var self = this, secret_flg = nil, secretMarker = nil, command = nil, output_msg = nil; - - - secret_flg = false; - if ($truthy(self.$class().$prefixesPattern()['$=~'](string))) { - } else { - return ["1", secret_flg] - }; - secretMarker = $$($nesting, 'Regexp').$last_match(2); - command = $$($nesting, 'Regexp').$last_match(3).$upcase(); - output_msg = self.$getCommandResult(command, name); - if ($truthy(secretMarker)) { - if ($truthy(output_msg['$!=']("1"))) { - secret_flg = true}}; - return [output_msg, secret_flg]; - }, $GurpsFW_dice_command$2.$$arity = 2); - - Opal.def(self, '$check_nD6', $GurpsFW_check_nD6$3 = function $$check_nD6(total, dice_total, dice_list, cmp_op, target) { - var $a, self = this, success = nil, crt_string = nil, fmb_string = nil, fail_string = nil; - - - if (target['$==']("?")) { - return ""}; - if ($truthy((($a = dice_list.$size()['$=='](3)) ? cmp_op['$==']("<=") : dice_list.$size()['$=='](3)))) { - } else { - return "" - }; - success = $rb_minus(target, total); - crt_string = "" + " > クリティカル(成功度:" + (success) + ")"; - fmb_string = "" + " > ファンブル(失敗度:" + (success) + ")"; - fail_string = "" + " > 自動失敗(失敗度:" + (success) + ")"; - if ($truthy(($truthy($a = $rb_le(dice_total, 6)) ? $rb_ge(target, 16) : $a))) { - return crt_string - } else if ($truthy(($truthy($a = $rb_le(dice_total, 5)) ? $rb_ge(target, 15) : $a))) { - return crt_string - } else if ($truthy($rb_le(dice_total, 4))) { - return crt_string}; - if ($truthy($rb_le($rb_minus(target, dice_total), -10))) { - return fmb_string - } else if ($truthy(($truthy($a = $rb_ge(dice_total, 17)) ? $rb_le(target, 15) : $a))) { - return fmb_string - } else if ($truthy($rb_ge(dice_total, 18))) { - return fmb_string - } else if ($truthy($rb_ge(dice_total, 17))) { - return fail_string}; - if ($truthy($rb_le(total, target))) { - return "" + " > 成功(成功度:" + (success) + ")" - } else { - return "" + " > 失敗(失敗度:" + (success) + ")" - }; - }, $GurpsFW_check_nD6$3.$$arity = 5); - - Opal.def(self, '$getCommandResult', $GurpsFW_getCommandResult$4 = function $$getCommandResult(string, nick_e) { - var $a, $b, self = this, tableName = nil, result = nil, number = nil, $case = nil, table = nil, modify = nil, dice = nil, num = nil, diff = nil, dif = nil, depth = nil, dice1 = nil, dice2 = nil, area = nil, dice3 = nil, mode = nil, text = nil, type = nil; - - - tableName = ""; - result = ""; - number = 0; - $case = string; - if ("CRT"['$===']($case)) { - tableName = "クリティカル表"; - table = ["体を狙っていたら、相手は気絶(回復は30分後に生命力判定)。他はダメージ3倍。", "相手の防御点を無視。", "ダメージ3倍。", "ダメージ2倍。", "相手は生命力判定を行い、失敗すると朦朧状態となる。", "四肢を狙っていたら、6ターンそこが使えなくなる。通常ダメージ。", "通常ダメージ。", "通常ダメージ。", "通常ダメージ。", "四肢を狙っていたら、6ターンそこが使えなくなる。通常ダメージ。", "相手の防御点を無視。", "四肢を狙っていたら、そこが使えなくなる(通常ダメージ)。他は2倍ダメージ。", "相手は武器を落とす。通常ダメージ。", "ダメージ2倍。", "ダメージ3倍。", "体を狙っていたら、相手は気絶(回復は30分後に生命力判定)。他はダメージ3倍。"]; - $b = self.$get_table_by_nD6(table, 3), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b;} - else if ("HCRT"['$===']($case)) { - tableName = "頭部打撃クリティカル表"; - table = ["敵は即死する", "敵は意識を失う。30分ごとに生命力判定をして、成功すると意識を回復する。", "敵は意識を失う。30分ごとに生命力判定をして、成功すると意識を回復する。", "敵は両目を負傷する。朦朧状態になる。目が見えないので、敏捷力-10。", "敵は片目を負傷する。朦朧状態になる。敏捷力-2。", "敵はバランスを失う。次のターンまで、防御しかできない。", "通常ダメージのみ。", "通常ダメージのみ。", "通常ダメージのみ。", "「叩き」攻撃なら、敵は24時間のあいだ耳が聞こえなくなる。「切り」「刺し」なら、1点しかダメージを与えられないが、傷跡が残る。", "「叩き」攻撃なら、敵は耳が聞こえなくなる。「切り」「刺し」なら、2点しかダメージを与えられないが、傷跡が残る。", "敵は逃げ腰になって武器を落とす(両手に武器を持っていたらランダムに決定)。", "敵は通常のダメージを受け、朦朧状態になる。", "敵は通常のダメージを受け、朦朧状態になる。", "敵は通常のダメージを受け、朦朧状態になる。", "敵は通常のダメージを受け、朦朧状態になる。"]; - $b = self.$get_table_by_nD6(table, 3), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FMB"['$===']($case)) { - tableName = "ファンブル表"; - table = ["武器が壊れる。ただし、メイスなど固い\"叩き\"武器は壊れない(ふりなおし)。", "武器が壊れる。ただし、フレイルなど固い\"叩き\"武器は壊れない(ふりなおし)。", "自分の腕か足に命中(通常ダメージ)。ただし\"刺し\"武器や射撃ならふりなおし。", "自分の腕か足に命中(半分ダメージ)。ただし\"刺し\"武器や射撃ならふりなおし。", "バランスを失い、次ターンは行動不可。次ターンの行動の番まで、能動防御-2。", "使った武器が非準備状態になる。1ターンよぶんに準備行動を行わないと、準備状態にならない。", "武器を落とす。", "武器を落とす。", "武器を落とす。", "使った武器が非準備状態になる。1ターンよぶんに準備行動を行わないと、準備状態にならない。", "バランスを失い、次ターンは行動不可。次ターンの行動の番まで、能動防御-2。", "前か後ろ(ランダム)に武器が1メートル飛んでいく。その場にいるキャラクターは敏捷力判定を行い、失敗するとダメージ(通常の半分)を受ける。ただし、\"刺し\"武器や弓矢はその場に落ちるだけ。", "利き腕をくじいてしまう。30分間、攻撃にも防御にも使えない。", "足をすべらせ、その場に倒れる。", "武器が壊れる。ただし、モールなど固い\"叩き\"武器は壊れない(ふりなおし)。", "武器が壊れる。ただし、金属バットなど固い\"叩き\"武器は壊れない(ふりなおし)。"]; - $b = self.$get_table_by_nD6(table, 3), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MFMB"['$===']($case)) { - tableName = "呪文ファンブル表"; - table = ["呪文が完全に失敗する。術者は1D点のダメージを受ける。", "呪文が術者にかかる。", "呪文が術者の仲間にかかる(対象はランダムに決定)。", "呪文が近くの敵にかかる(対象はランダムに決定)。", "哀れな物音があがり、硫黄のひどい匂いが立ち込める。", "呪文が目標以外のもの(仲間、敵、品物)にかかる。対象はランダムに決定するか、おもしろくなるようにGMが決定する。", "呪文が完全に失敗する。術者は1点のダメージを受ける。", "呪文が完全に失敗する。術者は朦朧状態になる(立ち直るには知力判定を行う)。", "大きな物音があがり、色とりどりの閃光が走る。", "見せ掛けの効果があらわれるが、弱くてとても役に立たない。", "意図した効果と逆の効果があらわれる。", "違った目標に、意図した効果とは逆の効果があらわれる(対象はランダムに決定)。", "何も起こらないが、術者は一時的にその呪文を忘れてしまう。思い出すまで、1週間ごとに知力判定を行う。", "呪文がかかったように思えるが、役に立たないただの見せかけだけ。", "呪文が完全に失敗し、術者の右腕が損なわれる。回復に1週間を要する。", "呪文が完全に失敗する。GMから見て、術者や呪文が純粋で善良なものでなければ、悪魔(第3版文庫版P.384参照)があらわれ、術者を攻撃する。"]; - $b = self.$get_table_by_nD6(table, 3), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b;} - else if ("HIT"['$===']($case)) { - tableName = "命中部位表"; - table = ["脳", "脳", "頭", "遠い腕", "手首(左右ランダム)", "近い腕", "胴体", "胴体", "胴体", "遠い足", "近い足", "近い足", "足首(左右ランダム)", "足首(左右ランダム)", "重要機関(胴体の)", "武器"]; - $b = self.$get_table_by_nD6(table, 3), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b;} - else if (/FEAR((\+)?\d+)?/['$===']($case)) { - modify = $$($nesting, 'Regexp').$last_match(1).$to_i(); - tableName = "恐怖表"; - table = ["1ターン朦朧状態。2ターン目に自動回復。", "1ターン朦朧状態。2ターン目に自動回復。", "1ターン朦朧状態。以後、毎ターン不利な修正を無視した意志判定を行い、成功すると回復。", "1ターン朦朧状態。以後、毎ターン不利な修正を無視した意志判定を行い、成功すると回復。", "1ターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "1ターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "2Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "思考不能。15ターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "新たな癖をひとつ植え付けられる。", "1D点疲労。さらに1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "1D点疲労。さらに1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "新たな癖をひとつ獲得。さらに1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。", "1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。", "生命力判定を行い、失敗すると1点の負傷を受ける。さらに1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。", "1点負傷。2D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。", "卒倒。4D分間意識不明。1D点疲労。", "パニック。1D分間のあいだ、叫びながら走り回ったり、座り込んで泣きわめいたりする。以後、1分ごとに知力判定(修正なし)を行い、成功すると回復。", "-10CPの妄想を植え付けられる。", "-10CPの軽い恐怖症を植え付けられる。", "肉体的な変化。髪が真白になったり、老化したりする。-15CPぶんの肉体的特徴に等しい。", "その恐怖に関連する軽い恐怖症を持っているならそれが強い恐怖症(CP2倍)になる。そうでなければ、-10CPぶんの精神的特徴を植え付けられる。", "-10CPの妄想を植え付けられる。生命力判定を行い、失敗すると1点の負傷を受ける。さらに1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。", "-10CPの軽い恐怖症を植え付けられる。生命力判定を行い、失敗すると1点の負傷を受ける。さらに1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。", "浅い昏睡状態。30分ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。", "昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。", "硬直。1D日のあいだ身動きしない。その時点で生命力判定を行い、成功すると動けるようになる。失敗するとさらに1D日硬直。その間、適切な医学的処置を受けていないかぎり、初日に1点、2日目に2点、3日目に3点と生命力を失っていく。動けるようになってからも、硬直していたのと同じ日数だけ、あらゆる判定に-2の修正。", "痙攣。1D分間地面に倒れて痙攣する。2D点疲労。また、生命力判定に失敗すると1D点負傷。これがファンブルなら生命力1点を永遠に失う。", "発作。軽い心臓発作を起こし、地面に倒れる。2D点負傷。", "大パニック。キャラクターは支離滅裂な行動に出る。GMが3Dを振り、目が大きければ大きいほど馬鹿げた行動を行う。その行動が終わったら知力判定を行い、成功すると我に返る。失敗すると新たな馬鹿げた行動をとる。", "強い妄想(-15CP)を植え付けられる。", "強い恐怖症、ないし-15CPぶんの精神的特徴を植え付けられる。", "激しい肉体的変化。髪が真白になったり、老化したりする。-20CPぶんの肉体的特徴に等しい。", "激しい肉体的変化。髪が真白になったり、老化したりする。-30CPぶんの肉体的特徴に等しい。", "昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。さらに強い妄想(-15CP)を植え付けられる。", "昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。さらに強い恐怖症、ないし-30CPぶんの精神的特徴を植え付けられる。", "昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。さらに強い恐怖症、ないし-30CPぶんの精神的特徴を植え付けられる。知力が1点永遠に低下する。あわせて精神系の技能、呪文、超能力のレベルも低下する。"]; - $b = self.$roll(3, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - number = $rb_plus(dice, modify); - if ($truthy($rb_gt(number, 40))) { - num = 36 - } else { - num = $rb_minus(number, 4) - }; - result = table['$[]'](num);} - else if (/REACT((\+|\-)?\d*)/['$===']($case)) { - modify = $$($nesting, 'Regexp').$last_match(1).$to_i(); - tableName = "反応表"; - $b = self.$roll(3, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - number = $rb_plus(dice, modify); - if ($truthy($rb_lt(number, 1))) { - result = "最悪" - } else if ($truthy($rb_lt(number, 4))) { - result = "とても悪い" - } else if ($truthy($rb_lt(number, 7))) { - result = "悪い" - } else if ($truthy($rb_lt(number, 10))) { - result = "良くない" - } else if ($truthy($rb_lt(number, 13))) { - result = "中立" - } else if ($truthy($rb_lt(number, 16))) { - result = "良い" - } else if ($truthy($rb_lt(number, 19))) { - result = "とても良い" - } else { - result = "最高" - };} - else if (/TRAP(\w)/['$===']($case)) { - tableName = "トラップリスト"; - diff = $$($nesting, 'Regexp').$last_match(1); - $b = self.$getTrapTable(diff), $a = Opal.to_ary($b), (dif = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(table['$nil?']())) { - return ""}; - $b = self.$get_table_by_nD6(table, 3), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - result = "" + (dif) + ":" + (result);} - else if (/TRS(E|N|H|L)(\d+)((\+|\-)?\d*)/['$===']($case)) { - tableName = "財宝テーブル"; - diff = $$($nesting, 'Regexp').$last_match(1); - depth = $$($nesting, 'Regexp').$last_match(2).$to_i(); - num = $rb_divide(depth, 10).$floor(); - if ($truthy($rb_ge(num, 6))) { - num = 5}; - $case = diff; - if ("N"['$===']($case)) {num = $rb_plus(num, 1)} - else if ("H"['$===']($case)) {num = $rb_plus(num, 2)} - else if ("L"['$===']($case)) {num = $rb_plus(num, 3)}; - if ($truthy($$($nesting, 'Regexp').$last_match(4)['$nil?']())) { - } else { - num = $rb_plus(num, $$($nesting, 'Regexp').$last_match(3).$to_i()) - }; - table = self.$getTresureTable(num); - if ($truthy(table['$nil?']())) { - return ""}; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b;} - else if (/RAND(E|N|H|L)(\d)?/['$===']($case)) { - tableName = "ランダムイベント表"; - diff = $$($nesting, 'Regexp').$last_match(1); - if ($truthy($$($nesting, 'Regexp').$last_match(2)['$nil?']()['$!']())) { - dice1 = $$($nesting, 'Regexp').$last_match(2).$to_i() - } else { - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b - }; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$getRandomEvent(dice1, dice2, diff), $a = Opal.to_ary($b), (area = ($a[0] == null ? nil : $a[0])), (dif = ($a[1] == null ? nil : $a[1])), (table = ($a[2] == null ? nil : $a[2])), $b; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (dice3 = ($a[1] == null ? nil : $a[1])), $b; - number = "" + (dice1) + (dice2) + (dice3); - result = "" + (area) + "(" + (dif) + "):" + (result);} - else if (/RENC(E|N|H|L)(\d)?/['$===']($case)) { - tableName = "ランダムエンカウント表"; - diff = $$($nesting, 'Regexp').$last_match(1); - if ($truthy($$($nesting, 'Regexp').$last_match(2)['$nil?']()['$!']())) { - dice1 = $$($nesting, 'Regexp').$last_match(2).$to_i() - } else { - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b - }; - dice2 = 4; - $b = self.$getRandomEvent(dice1, dice2, diff), $a = Opal.to_ary($b), (area = ($a[0] == null ? nil : $a[0])), (dif = ($a[1] == null ? nil : $a[1])), (table = ($a[2] == null ? nil : $a[2])), $b; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (dice3 = ($a[1] == null ? nil : $a[1])), $b; - number = "" + (dice1) + (dice2) + (dice3); - result = "" + (area) + "(" + (dif) + "):" + (result);} - else if ("AREA"['$===']($case)) { - tableName = "地形決定表"; - table = ["" + "洞窟\n" + "「ん、暗くて先が見えないって?そりゃこのフィルトウィズのことかい?」\n" + "姿を様々に変える洞窟。ケイヴウォーカーがいれば有利に探索可能。非常に暗く「暗視」がなければ満足に進むことはできないだろう。\n" + "☆深度判定:体力判定(「暗視」があれば深度判定に+3のボーナスを受ける)\n" + "☆屋内(飛行不可)\n" + "☆薄暗い(ストームコーザー「鳥目」を適用)", "" + "遺跡\n" + "「どんな仕掛けにだって意味はある。人が作ったものだからな」\n" + "人為的に作られた様々な建造物の内部。\n" + "様々な恐ろしい仕掛けが行く手を阻む。\n" + "☆深度判定:<探索>\n" + "☆屋内(飛行不可)", "" + "断崖\n" + "「うーん、とっても気持ちのいい風ね。ん?何を震えてるの?」\n" + "一歩踏み外せば奈落の底。過酷な自然の要塞。\n" + "ストームコーザーなどの飛行可能な仲間がいると心強いだろう。\n" + "☆深度判定:<軽業>\n" + "☆屋外", "" + "水辺\n" + "「人間とは何かと不便なことが多い種族ですな」\n" + "川、湖などを泳いだりして進んでいくダンジョン。\n" + "リザードやワイズマンがその力を発揮するだろう。\n" + "☆深度判定:<水泳>\n" + "(水泳に「自動的に成功」するキャラクターは敏捷力+4で判定可能。\n" + " 《水泳》のかかっているキャラクターがいた場合も同様。\n" + " 【ミズグモ】があれば敏捷力+2で深度判定可能)\n" + "☆屋外 ", "" + "森林\n" + "「ここが危険だと思う?それはアナタがこの森では『異質』だからよ」\n" + "鬱蒼とした森林は、人間にはとても過酷な環境となっている。\n" + "フラウなどの自然と共に生きる者の力が助けになるだろう。\n" + "☆深度判定:<生存>\n" + "☆屋外", "" + "墓地\n" + "「客人とは珍しい・・・『死者の王』に出会わぬよう、ゆめゆめご注意を・・・」\n" + "死者どもの彷徨う、暗く冷たい墓地。\n" + "ローブをかぶった得体の知れない墓守を<追跡>して脱出せよ。\n" + "☆深度判定:<追跡>\n" + "☆屋外\n" + "☆薄暗い(ストームコーザー「鳥目」を適用)"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b;} - else if (/DROP(N)?((\+)?(\d))?/['$===']($case)) { - tableName = "ドロップ判定"; - mode = "S"; - text = ""; - modify = 0; - if ($truthy($$($nesting, 'Regexp').$last_match(1)['$nil?']())) { - } else { - mode = $$($nesting, 'Regexp').$last_match(1) - }; - if ($truthy($$($nesting, 'Regexp').$last_match(4)['$nil?']())) { - } else { - modify = $$($nesting, 'Regexp').$last_match(4).$to_i() - }; - $b = self.$roll(3, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - number = $rb_minus(dice, modify); - if ($truthy($rb_le(number, 3))) { - result = "レアアイテム1" - } else if ($truthy(($truthy($a = $rb_le(number, 4)) ? mode['$==']("N") : $a))) { - result = "レアアイテム2" - } else if ($truthy($rb_lt(number, 7))) { - if (mode['$==']("N")) { - result = "CL×200GP" - } else { - result = "CL×100GP" - } - } else if (mode['$==']("N")) { - result = "CL×20GP" - } else { - result = "CL×10GP" - };} - else if ("HST"['$===']($case)) { - tableName = "必殺技表"; - table = ["命中判定に[1,1,1]でクリティカル(クリティカル表も参照)。", "命中判定に+20のボーナス。", "ダメージを与えると「生命力-2」で気絶判定。", "ダメージを与えると「敏捷力-4」で転倒判定。", "致傷力+2D。", "命中判定に[6,6,6]でファンブル(ファンブル表も参照)。"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b;} - else if ("KHST"['$===']($case)) { - tableName = "驚異的必殺技表"; - table = ["命中判定に[1,1,1]でクリティカル。クリティカル表は参照せず、相手は即死。「分類:ネームド」「分類:魔将」に対しては最大HPの半分のダメージを与える。", "命中判定に[1,1,1]でクリティカル。クリティカル表は参照せず、致傷力3倍。", "命中判定に[1,1,1]でクリティカル。クリティカル表は参照せず、致傷力2倍。", "命中判定に[1,1,1]でクリティカル(クリティカル表も参照)。", "命中判定に+40のボーナス。", "致傷力+4D(火炎特性)。", "致傷力+3D(雷撃特性)。", "与えたダメージに等しいHPを回復する。回避に-3のペナルティを与える。", "1点でもダメージを与えた場合、対象を転倒状態にする。回避に-3のペナルティを与える。", "致傷力+3D。", "致傷力+4D(冷気特性)。", "1点でもダメージを与えた場合、-6のペナルティで気絶判定。", "致傷力+4D。防護点無視。", "致傷力+6D。回避に-3のペナルティを与える。", "命中判定に[6,6,5]でファンブル(ファンブル表も参照)。目標値が16以上だった場合は自動失敗。", "命中判定に[6,6,6]でファンブル(ファンブル表も参照)。"]; - $b = self.$get_table_by_nD6(table, 3), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RANDOP"['$===']($case)) { - tableName = "迷宮追加オプション表"; - table = ["" + "「宝物の迷宮」\n" + "財宝決定の際、1段階深度の高い財宝テーブルを使用する。", "" + "「密林の迷宮」 初期深度+10\n" + "分類が「魔獣」「獣人」「霊獣」のモンスターは全ての判定に+2のボーナスを得る。", "" + "「カラクリ技師の迷宮」\n" + "分類「ギア」のモンスターは全ての判定に+2のボーナスを得る。\n" + "クリア時に獲得できるAPが2倍になる。", "" + "「フラウの舞踏会」\n" + "フラウが登場するランダムイベントが発生した際、\n" + "「この迷宮を制覇して、私達が舞踏会を開けるようにしてね」とお願いされ、\n" + "迷宮クリア時の獲得CPに+1のボーナスを得る。", "" + "「アズマ風の迷宮」 初期深度+10\n" + "風流なアズマ風の迷宮。\n" + "アシガルファイター(CL4)、アンブッシュマン(CL5)、カラクリフラウ(CL6)、\n" + "ヤコ(CL6)、ヤシャ(CL10)、ヒトキリ(CL33)、シャドウストーカー(CL35)、\n" + "アシュラ(CL48)、コンゴウ(CL60)、カラクリヒメショーグン(CL75)が行う、\n" + "全ての判定に+2のボーナスを得る。", "" + "「枯れた泉の迷宮」 初期深度+5\n" + "回復の泉が全て枯れており、回復効果を得ることができない。毒の泉はそのまま存在する。", "" + "「天空への道」 初期深度+15\n" + "上へ上へと果てしなく昇っていく迷宮。空気が薄くなって疲労しやすくなる。\n" + "技などによるFPの最終的な消費と、FPに受ける最終的なダメージが2倍になる。", "" + "「灼熱焦土の塔」 初期深度+10\n" + "とてつもなく熱く、気温が50度以上の塔。\n" + "「特性:火炎」の攻撃でPCが受ける最終的なダメージが2倍になる。", "" + "「永久凍土の塔」 初期深度+10\n" + "とてつもなく寒く、気温が氷点下の塔。\n" + "「特性:冷気」の攻撃でPCが受ける最終的なダメージが2倍になる。\n" + "リザードやワイズマンなどの寒さに弱いキャラクターは動きが鈍り、あらゆる判定に-2のペナルティを受ける。", "" + "「盗賊王の迷宮」 初期深度+10\n" + "<罠><鍵開け>に+3のペナルティを受ける。", "" + "「ミミック狂暴化」\n" + "「全地形2-5」のミミックを見破る<罠>の判定に-3のペナルティを受け、\n" + "ミミックの致傷力も2倍になる。ミミックから獲得できるGPが3倍になる。", "" + "「トレジャーイーター狂暴化」 初期深度+10\n" + "「全地形2-6」のトレジャーイーターを見破る<罠>の判定に-5のペナルティを受ける。", "" + "「暗闇の迷宮」 初期深度+5\n" + "「暗視」がなければ視覚判定に-5のペナルティを受ける。\n" + "ストームコーザーはペナルティが2倍。", "" + "「騒音の迷宮」 初期深度+5\n" + "「音量自動補正装置」がなければ聴覚判定に-5のペナルティを受ける。\n" + "シルヴァテイルはペナルティが2倍。", "" + "「未知の怪物の迷宮」 初期深度+10\n" + "モンスターのデータが判明させられなくなる。\n" + "モンスター名は全て「謎の影」となる", "" + "「氾濫中の迷宮」 初期深度+10\n" + "<水泳>に-5のペナルティを受ける。", "" + "「間抜けの迷宮」 初期深度+15\n" + "あらゆる知力を基準とした判定(精神系技能含む)に-2のペナルティを受ける。", "" + "「瘴気の迷宮」 初期深度+15\n" + "あらゆる生命力判定に-4のペナルティを受ける。", "" + "「加速する迷宮」\n" + "1ラウンドで1日が経過する迷宮。技のCTやフラウの水分補給に影響する。\n" + "「CT:1日」までの技も次ターンで使用可能になっている。", "" + "「停滞する迷宮」\n" + "敵味方双方が、「CT:次ターン」の技を使用すると最終イベントまで再使用不可。\n" + "また、「次ターンまで」有効な技は最終イベントまでずっと適用される。", "" + "「猛毒の迷宮」 初期深度+20\n" + "最大HP、MP、FPに-5のペナルティを受ける。最低1点は残る。\n" + "中級:-10 上級:-15 悪夢:-20", "" + "「死の迷宮」 初期深度+25\n" + "「保険」の効果が適用されない迷宮。", "" + "「幸運の迷宮」\n" + "PC全員のフォーチュン最大値+1。", "" + "「不運の迷宮」 初期深度+10\n" + "PC全員のフォーチュン最大値が半減する。", "" + "「レアメタルの迷宮」\n" + "非常にレアなモンスター「レアメタルキャンディー」「レアメタルクラウン」が生息している迷宮。\n" + "キャンディークラウン(CL40)、ゴールデンクラウン(CL177)から\n" + "獲得できるAPが5倍になる。ただし、この2体の防護点は10になる。", "" + "「魔力の泉」\n" + "PCとモンスターの双方が、MPを減少させずに魔法を使用できるようになる。\n" + "最大MPの足りていない魔法は使用できない。", "" + "「青色の迷宮」 初期深度+10\n" + "PCは全員「内気3」の特徴を得る。\n" + "迷宮内で他のNPCに出会った際のイベントは全て無視する。", "" + "「赤色の迷宮」 初期深度+10\n" + "PCは全員「直情」「自信過剰」の特徴を得る。「撤退」はできなくなる。", "" + "「ピンクの迷宮」\n" + "PCは全員「好色」「平和愛好/専守防衛」の特徴を得る。「分類:魔族」とのエンカウントは無視する。", "" + "「ハズレの迷宮」\n" + "財宝決定の際、1段階深度の低い財宝テーブルを使用する。", "" + "「ラダマンティスの迷宮」 初期深度+20\n" + "「分類:岩石」のモンスターは全ての判定に+3のボーナスを得る。\n" + "また、「遺跡6-6」のイベントの致傷力が2倍になる。", "" + "「グレイヴディガーの迷宮」 初期深度+20\n" + "「分類:アンデッド」のモンスターは全ての判定に+3のボーナスを得る。\n" + "また、「墓場」の深度判定に-5のペナルティを受ける。", "" + "「ハイペリオンの迷宮」 初期深度+20\n" + "全てのモンスターがターンの最初にHPを5点ずつ回復する。\n" + "中級:10点 上級:20点 悪夢:30点。", "" + "「ムスペルニブルの迷宮」 初期深度+20\n" + "「特性:火炎」「特性:冷気」の攻撃で、PCが受ける最終的なダメージが2倍になる。", "" + "「 の迷宮」\n" + "何も起きない。第五魔将の封印が解除されている場合のみ、フォーチュン最大値+5。", "" + "「バロールの迷宮」 初期深度+20\n" + "「分類:ギア」のモンスターは全ての判定とあらゆる攻撃の致傷力に+3のボーナスを得る。"]; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b;} - else if (/LOT(N|P)/['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1); - if (type['$==']("P")) { - tableName = "ナンバーワンプレミアムくじ" - } else { - tableName = "ナンバーワンノーマルくじ" - }; - result = self.$getLotResult(type); - return "" + (nick_e) + ": " + (tableName) + ":" + (result);} - else {return ""}; - text = "" + (nick_e) + ": " + (tableName) + "(" + (number) + "):" + (result); - return text; - }, $GurpsFW_getCommandResult$4.$$arity = 2); - - Opal.def(self, '$normal1', $GurpsFW_normal1$5 = function $$normal1() {try { - - var $$6, $$7, $$8, $a, $b, self = this, table = nil, result = nil; - - - table = ["イレブンチキン", "イレブンチキン", "イレブンチキン", $send(self, 'lambda', [], ($$6 = function(){var self = $$6.$$s || this; - - Opal.ret(self.$normal2().$to_s())}, $$6.$$s = self, $$6.$$arity = 0, $$6)), $send(self, 'lambda', [], ($$7 = function(){var self = $$7.$$s || this; - - Opal.ret(self.$normal2().$to_s())}, $$7.$$s = self, $$7.$$arity = 0, $$7)), $send(self, 'lambda', [], ($$8 = function(){var self = $$8.$$s || this; - - Opal.ret(self.$normal3().$to_s())}, $$8.$$s = self, $$8.$$arity = 0, $$8))]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), $b; - return result; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $GurpsFW_normal1$5.$$arity = 0); - - Opal.def(self, '$normal2', $GurpsFW_normal2$9 = function $$normal2() {try { - - var $$10, $$11, $a, $b, self = this, table = nil, result = nil; - - - table = ["バロールたわし", "イグニスジッポ", "ヤコ仮面or梟の文鎮(選択可)", "ナレッジのハンモックorジンジャビースト", $send(self, 'lambda', [], ($$10 = function(){var self = $$10.$$s || this; - - Opal.ret(self.$normal3().$to_s())}, $$10.$$s = self, $$10.$$arity = 0, $$10)), $send(self, 'lambda', [], ($$11 = function(){var self = $$11.$$s || this; - - Opal.ret(self.$normal3().$to_s())}, $$11.$$s = self, $$11.$$arity = 0, $$11))]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), $b; - return result; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $GurpsFW_normal2$9.$$arity = 0); - - Opal.def(self, '$normal3', $GurpsFW_normal3$12 = function $$normal3() {try { - - var $$13, $a, $b, self = this, table = nil, result = nil; - - - table = ["特性HPポーション", "特性MPポーション", "黒い甲冑", "天体望遠鏡", "金獅子の剥製", $send(self, 'lambda', [], ($$13 = function(){var self = $$13.$$s || this; - - Opal.ret(self.$normal4().$to_s())}, $$13.$$s = self, $$13.$$arity = 0, $$13))]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), $b; - return result; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $GurpsFW_normal3$12.$$arity = 0); - - Opal.def(self, '$normal4', $GurpsFW_normal4$14 = function $$normal4() {try { - - var $$15, $a, $b, self = this, table = nil, result = nil; - - - table = ["特性スタミナポーション", "戦乙女の兜", "フェンリルの首輪", "フェニックスカーペット", "動くアダマンゴーレム", $send(self, 'lambda', [], ($$15 = function(){var self = $$15.$$s || this; - - Opal.ret(self.$normal5().$to_s())}, $$15.$$s = self, $$15.$$arity = 0, $$15))]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), $b; - return result; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $GurpsFW_normal4$14.$$arity = 0); - - Opal.def(self, '$normal5', $GurpsFW_normal5$16 = function $$normal5() {try { - - var $$17, $a, $b, self = this, table = nil, result = nil; - - - table = ["キャンディークッション", "屑鉄の金床", "薪割り王の斧", "ロジエの水差し", "箱舟の模型", $send(self, 'lambda', [], ($$17 = function(){var self = $$17.$$s || this; - - Opal.ret(self.$premium5().$to_s())}, $$17.$$s = self, $$17.$$arity = 0, $$17))]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), $b; - return result; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $GurpsFW_normal5$16.$$arity = 0); - - Opal.def(self, '$premium1', $GurpsFW_premium1$18 = function $$premium1() {try { - - var $$19, $$20, $$21, $a, $b, self = this, table = nil, result = nil; - - - table = ["プレミアムチキン", "プレミアムチキン", "プレミアムチキン", $send(self, 'lambda', [], ($$19 = function(){var self = $$19.$$s || this; - - Opal.ret(self.$normal3().$to_s())}, $$19.$$s = self, $$19.$$arity = 0, $$19)), $send(self, 'lambda', [], ($$20 = function(){var self = $$20.$$s || this; - - Opal.ret(self.$premium2().$to_s())}, $$20.$$s = self, $$20.$$arity = 0, $$20)), $send(self, 'lambda', [], ($$21 = function(){var self = $$21.$$s || this; - - Opal.ret(self.$premium2().$to_s())}, $$21.$$s = self, $$21.$$arity = 0, $$21))]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), $b; - return result; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $GurpsFW_premium1$18.$$arity = 0); - - Opal.def(self, '$premium2', $GurpsFW_premium2$22 = function $$premium2() {try { - - var $$23, $$24, $a, $b, self = this, table = nil, result = nil; - - - table = ["親衛隊バッジ", "ハタモトチャブダイ", "星のコンパス", "白銀の甲冑", $send(self, 'lambda', [], ($$23 = function(){var self = $$23.$$s || this; - - Opal.ret(self.$normal4().$to_s())}, $$23.$$s = self, $$23.$$arity = 0, $$23)), $send(self, 'lambda', [], ($$24 = function(){var self = $$24.$$s || this; - - Opal.ret(self.$premium3().$to_s())}, $$24.$$s = self, $$24.$$arity = 0, $$24))]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), $b; - return result; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $GurpsFW_premium2$22.$$arity = 0); - - Opal.def(self, '$premium3', $GurpsFW_premium3$25 = function $$premium3() {try { - - var $$26, $a, $b, self = this, table = nil, result = nil; - - - table = ["特性クイックHPポーション", "特性クイックMPポーション", "特製クイックスタミナポーション", "火龍のフィギュアor氷龍のフィギュア(選択可)", "ヒメショーグンドレス", $send(self, 'lambda', [], ($$26 = function(){var self = $$26.$$s || this; - - Opal.ret(self.$premium4().$to_s())}, $$26.$$s = self, $$26.$$arity = 0, $$26))]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), $b; - return result; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $GurpsFW_premium3$25.$$arity = 0); - - Opal.def(self, '$premium4', $GurpsFW_premium4$27 = function $$premium4() {try { - - var $$28, $a, $b, self = this, table = nil, result = nil; - - - table = ["クイックユグドラポーション", "銀河龍のフィギュア/ドラゴン", "銀河龍のフィギュア/魔族", "魔族チェスセット", "イグニスコンロ", $send(self, 'lambda', [], ($$28 = function(){var self = $$28.$$s || this; - - Opal.ret(self.$premium5().$to_s())}, $$28.$$s = self, $$28.$$arity = 0, $$28))]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), $b; - return result; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $GurpsFW_premium4$27.$$arity = 0); - - Opal.def(self, '$premium5', $GurpsFW_premium5$29 = function $$premium5() {try { - - var $$30, $a, $b, self = this, table = nil, result = nil; - - - table = ["グレヴディバリウス", "天使の望遠鏡orデスの目覚まし時計(選択可)", "世界樹の蔦", "死神の飾りドレス", "ザバーニヤ等身大フィギュア", $send(self, 'lambda', [], ($$30 = function(){var self = $$30.$$s || this; - - Opal.ret(self.$premium6().$to_s())}, $$30.$$s = self, $$30.$$arity = 0, $$30))]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), $b; - return result; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $GurpsFW_premium5$29.$$arity = 0); - - Opal.def(self, '$premium6', $GurpsFW_premium6$31 = function $$premium6() { - var $a, $b, self = this, table = nil, result = nil; - - - table = ["イレブンチキン", "イレブンチキン(2ピース)", "イレブンチキン(3ピース)", "イレブンチキン(6ピース)", "イレブンチキン(12ピース)", "wish star"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), $b; - return result; - }, $GurpsFW_premium6$31.$$arity = 0); - - Opal.def(self, '$getLotResult', $GurpsFW_getLotResult$32 = function $$getLotResult(type) { - var self = this; - - if (type['$==']("P")) { - return self.$premium1() - } else { - return self.$normal1() - } - }, $GurpsFW_getLotResult$32.$$arity = 1); - - Opal.def(self, '$getTresureTable', $GurpsFW_getTresureTable$33 = function $$getTresureTable(num) { - var self = this, $case = nil, table = nil; - - - $case = num; - if ((-1)['$===']($case)) {table = ["HPポーション(消耗品)", "MPポーション(消耗品)", "スタミナポーション(消耗品)", "抵抗ポーション(消耗品)", "マジックパウダー:無(消耗品)", "200GP"]} - else if ((0)['$===']($case)) {table = ["高級HPポーション(消耗品)", "高級MPポーション(消耗品)", "高級スタミナポーション(消耗品)", "高級抵抗ポーション(消耗品)", "マジックパウダー:銀(消耗品)", "600GP"]} - else if ((1)['$===']($case)) {table = ["大地の守り(装飾品)", "ファインウェポンケース(装飾品)", "狩人の羽帽子(装飾品)", "狙撃手の指貫(装飾品)", "スタミナバンド・健康お守り・レザーマント3点セット(装飾品)", "1200GP"]} - else if ((2)['$===']($case)) {table = ["ミスリルダガーorミスリルシールドを選択(短剣or盾)", "高級クイック能力増加ポーション(消耗品)", "高級クイックHPポーション(消耗品)", "高級クイックMPポーション(消耗品)", "装飾品1つ(3000GPまでのもの)", "2000GP"]} - else if ((3)['$===']($case)) {table = ["ミスリル武器(4000GPまでのもの)", "最高級能力増加ポーション(消耗品)", "高級クイック再生ポーション(消耗品)", "魔法1つ(5000GPまでのもの)", "防具1つ(5000GPまでのもの)", "3000GP"]} - else if ((4)['$===']($case)) {table = ["オサフネorサスケブレードを選択(刀)", "アダマンダガー", "弓1つ(5000GPまでのもの)", "ギロチンブレード(両手剣)", "装飾品1つ(5000GPまでのもの)", "4500GP"]} - else if ((5)['$===']($case)) {table = ["アダマン武器(8000GPまでのもの)", "アダマンシールド(盾)", "ミスリルスケイル", "蘇生ポーション", "装飾品1つ(10000GPまでのもの)", "6000GP"]} - else if ((6)['$===']($case)) {table = ["武器1つ(612000GPまでのもの)", "盾1つ(12000GPまでのもの)", "鎧1つ(12000GPまでのもの)", "蘇生ポーション", "装飾品1つ(15000GPまでのもの)", "10000GP"]} - else if ((7)['$===']($case)) {table = ["武器1つ(30000GPまでのもの)", "盾1つ(30000GPまでのもの)", "鎧1つ(30000GPまでのもの)", "蘇生ポーション+特製クイックHPポーション(特製は人数分)", "装飾品1つ(40000GPまでのもの)", "25000GP"]} - else if ((8)['$===']($case)) {table = ["武器1つ(60000GPまでのもの)", "盾1つ(60000GPまでのもの)", "鎧1つ(60000GPまでのもの)", "蘇生ポーション+特製クイックポーション(特製は人数分、HP・MP・スタミナの3種)", "装飾品1つ(80000GPまでのもの)", "50000GP"]} - else if ((9)['$===']($case)) {table = ["武器1つ(150000GPまでのもの)", "盾1つ(150000GPまでのもの)", "鎧1つ(150000GPまでのもの)", "クイック蘇生ポーション+特製クイックポーション(特製は人数分、HP・MP・スタミナの3種)", "装飾品1つ(200000GPまでのもの)", "黄金の守護者の証(装飾品)+黄金の電子暗号キー(装飾品)"]} - else {table = nil}; - return table; - }, $GurpsFW_getTresureTable$33.$$arity = 1); - - Opal.def(self, '$getTrapTable', $GurpsFW_getTrapTable$34 = function $$getTrapTable(diff) { - var self = this, $case = nil, dif = nil, d = nil, table = nil; - - - $case = diff; - if ("E"['$===']($case)) { - dif = "初級"; - d = 0;} - else if ("N"['$===']($case)) { - dif = "中級"; - d = 1;} - else if ("H"['$===']($case)) { - dif = "上級"; - d = 2;} - else if ("L"['$===']($case)) { - dif = "悪夢"; - d = 3;} - else { - dif = nil; - d = nil;}; - table = ["" + "トライディザスター:宝箱から広範囲に火炎・冷気・電撃が放たれる。PC全員に火炎により" + (["3D", "4D", "5D", "7D"]['$[]'](d)) + "の「叩き」ダメージ、冷気により" + (["3D", "4D", "5D", "7D"]['$[]'](d)) + "の「叩き」ダメージ、電撃により" + (["2D", "3D", "4D", "6D"]) + "の「叩き」ダメージを与える(電撃は金属鎧の防護点無視)", "" + "ペトロブラスター:宝箱を開けたキャラクターに《肉を石》をかける。技能レベルは" + (["20", "22", "24", "30"]['$[]'](d)) + "。", "" + "クロスボウストーム:宝箱から矢の嵐が放たれる罠。PC全員に" + (["2D", "3D", "5D", "8D"]['$[]'](d)) + "の「刺し」ダメージを与える。盾の受動防御を無視した「よけ" + (["", "-2", "-4", "-8"]['$[]'](d)) + "」で回避が可能。", "" + "フォーチュンイーター:PC全員の幸運を食らい、フォーチュンを" + (["1", "2", "3", "5"]['$[]'](d)) + "減少させる。フォーチュンが0の場合" + (["3D", "6D", "9D", "15D"]['$[]'](d)) + "の防護点無視ダメージを受ける。", "" + "スロット:スロットが揃うまで開かない宝箱。スロットを1回まわすには" + (["100", "300", "500", "1000"]['$[]'](d)) + "GPが必要。行動を消費して「視覚" + (["-5", "-7", "-9", "-13"]['$[]'](d)) + "」判定に成功すればスロットはそろう。「反射神経」があれば「視覚」そのままで判定可能。", "" + "テレポーター:宝箱の周囲に存在するPC全員(とエンカウントしているモンスター)をダンジョン入口方面に転送する。深度が" + (["3D減少する", "4D減少する", "5D減少する", "0になる"]['$[]'](d)) + "。", "" + "アイスコフィン:宝箱を開けようとしたキャラクターに冷気で" + (["3D", "5D", "7D", "12D"]['$[]'](d)) + "の「叩き」ダメージを与え更に最終的なダメージの半分のFPダメージを与える。", "" + "クロスボウ:宝箱を開けようとしたキャラクターに" + (["2D", "3D", "5D", "8D"]['$[]'](d)) + "の「刺し」ダメージを与える。盾の受動防御を無視した「よけ" + (["", "-2", "-4", "-8"]['$[]'](d)) + "」で回避が可能。", "" + "毒針:宝箱を開けようとしたキャラクターに" + (["1D", "2D", "3D", "6D"]['$[]'](d)) + "の「刺し」ダメージを与える。1点でもダメージを受けると「生命力" + (["-4", "-5", "-6", "-8"]['$[]'](d)) + "」で判定を行い、失敗すると1日間すべての判定に-2のペナルティを受ける。盾の受動防御を無視した「よけ" + (["", "-2", "-4", "-8"]['$[]'](d)) + "」で回避が可能。", "アラーム:即座にその地形のエンカウント表(イベント表4-1~4-6)を振る。", "" + "殺人鬼の斧:宝箱を開けようとしたキャラクターに" + (["3D", "4D", "6D", "10D"]['$[]'](d)) + "の「切り」ダメージを与える。命中部位は「ランダム部位命中表」を用いて決定すること。盾の受動防御を無視した「よけ" + (["", "-2", "-4", "-8"]['$[]'](d)) + "」で回避が可能。", "" + "死神:宝箱を開けようとしたキャラクターにネクロマンサーの呪術【憑物】+【死神】の効果を与える。3ラウンドすべての判定に" + (["-1", "-2", "-3", "-4"]['$[]'](d)) + "のペナルティを受け、効果が切れると同時に" + (["3D+3", "3D+6", "3D+9", "3D+15"]['$[]'](d)) + "の防護点無視ダメージを受ける。", "" + "幻の宝:宝箱は二重底になっている。「知力" + (["-5", "-7", "-9", "-13"]['$[]'](d)) + "」か<商人" + (["", "-2", "-4", "-8"]['$[]'](d)) + ">の判定に失敗すると、重さ10kgの価値のない偽の宝物を入手してしまう。偽の宝物はシナリオ終了まで捨てることはできないが「トレジャーイーター」の罠にかかると消滅する。", "" + "エクスプロージョン:宝箱が爆発し、PC全員に" + (["4D", "6D", "9D", "15D"]['$[]'](d)) + "の「叩き」ダメージを与える。宝箱の中身は粉々になる。", "" + "レインボーポイズン:宝箱から七色の毒ガスが放たれる。PC全員が「生命力" + (["-4", "-5", "-6", "-8"]['$[]'](d)) + "」で判定を行い、失敗するとHP、MP、FPに" + (["2D", "3D", "4D", "6D"]['$[]'](d)) + "の防護点無視ダメージを受ける。", "" + "デスクラウド:宝箱から致死性の毒ガスが放たれる。PC全員が「生命力" + (["-4", "-5", "-6", "-8"]['$[]'](d)) + "」で判定を行い、失敗したPCは即座に死亡する。"]; - return [dif, table]; - }, $GurpsFW_getTrapTable$34.$$arity = 1); - - Opal.def(self, '$getRandomEvent', $GurpsFW_getRandomEvent$35 = function $$getRandomEvent(dice1, dice2, diff) { - var self = this, $case = nil, dif = nil, d = nil, area = nil, table = nil; - - - $case = diff; - if ("E"['$===']($case)) { - dif = "初級"; - d = 0;} - else if ("N"['$===']($case)) { - dif = "中級"; - d = 1;} - else if ("H"['$===']($case)) { - dif = "上級"; - d = 2;} - else if ("L"['$===']($case)) { - dif = "悪夢"; - d = 3;} - else { - dif = ""; - d = nil;}; - $case = dice1; - if ((1)['$===']($case)) { - area = "洞窟"; - $case = dice2; - if ((1)['$===']($case)) {table = ["回復の泉。PC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。", "" + "淡い光を放つ鉱石に包まれた部屋に出る。フォーチュンが" + (self.$getRandomDiff(dice1, 12, d, 0)) + "点回復する。", "" + "天井が開いていて植物の育っている洞窟内庭園。" + (self.$getRandomDiff(dice1, 13, d, 0)) + "に成功すると力の沸く木の実を見つけHP・FP・MPを" + (self.$getRandomDiff(dice1, 13, d, 1)) + "点回復できる。", "洞窟内で栽培できる特殊なキノコを栽培するフラウに出会う。100GP支払うことでキノコを1つ譲ってもらうことができ、シナリオ終了まで《怪力2》《すばやさ2》《知恵2》《活力2》のいずれかの効果を得る(ランダム)このキノコは持ち帰ることはできず、2つめを食べても効果はない。", "ギア技術を用いた強力な懐中電灯のおいてある休憩室。迷宮を出るまで洞窟の深度判定で「暗視」があるものとして扱う。迷宮を出ると懐中電灯は寿命が来たのか壊れてしまう。", "" + "不思議な光を放つ水が沸いている。パーティーメンバーのHP・MP・FPのいずれかが減少している場合このイベントは拒否できない。また、全快でも「好奇心」を持つキャラクターは知力判定に失敗すると飲みにいこうとする。飲んだキャラクターは1Dを振り、以下のような効果が発生する。ロールプレイが面白かった場合シナリオ終了時に1CPのボーナスを与えてもよい。\n" + "----------\n" + "1:HP・MP・FP全回復\n" + "2:シナリオ終了まで肉体的に不利な特徴が1つ消滅する\n" + "3:シナリオ終了まで精神的に不利な特徴が1つ消滅する\n" + "4:HP・MP・FPが現在地の半分になる HPがマイナスの場合はHP・MP・FP全回復\n" + "5:シナリオ終了まで余分な獣っぽい耳や尻尾が生える 聴覚判定+4\n" + "6:シナリオ終了まで性別が男女入れ替わる。\n" + "----------"]} - else if ((2)['$===']($case)) {table = ["財宝(カギ・トラップなし)。財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギつき。行動を消費して" + (self.$getRandomDiff(dice1, 22, d, 0)) + "に成功すれば開く)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギなし、トラップつき。行動を消費して" + (self.$getRandomDiff(dice1, 23, d, 0)) + "に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギ、トラップつき。行動を消費して" + (self.$getRandomDiff(dice1, 24, d, 0)) + "に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "ミミックの罠。ランダムなキャラクターに3Dの「切り」ダメージを与える。" + (self.$getRandomDiff(dice1, 25, d, 0)) + "に成功すればこの罠を見抜いて無効化することができ、なおかつ「深度×" + (self.$getRandomDiff(dice1, 25, d, 1)) + "」GPを入手可能。", "" + "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。" + (self.$getRandomDiff(dice1, 26, d, 0)) + "に成功すればこの罠を見抜いて無効化することができる。"]} - else if ((3)['$===']($case)) {table = ["洞窟内で近道を発見。深度が1D+1増加する。", "洞窟内で近道を発見。深度が1D増加する。細い道のため、体の大きなキャラクター(STが13以上)は、通るのに苦労してFPを1点消耗する", "分かれ道。2分の1の確率で深度が1D増加する。「方向感覚」があれば必ず増加。", "" + "足場の悪い近道。PTの誰かが" + (self.$getRandomDiff(dice1, 34, d, 0)) + "に成功すれば深度が1D増加する。失敗した場合は" + (self.$getRandomDiff(dice1, 34, d, 1)) + "の「叩き」ダメージを受ける", "" + "大きな岩でふさがれた近道。1ラウンドで破壊することができれば深度が1D増加する。岩はどのヘクスからでも攻撃可能。分類:岩石、防護点8、" + (self.$getRandomDiff(dice1, 35, d, 0)) + "、切り刺しダメージボーナス無効。", "" + "道が3つに分かれている。1Dで1、2が出るとペナルティなし、1Dで3、4が出ると深度-2、1Dで5、6が出ると深度-4。「直感」があれば、" + (self.$getRandomDiff(dice1, 36, d, 0)) + "の判定に成功すれば正しい道を選択可能。"]} - else if ((4)['$===']($case)) {table = ["" + (self.$getRandomDiff(dice1, 41, d, 0)) + "とエンカウント。2ラウンド経過するとキャンディークラウンは戦場全域に《べたべた》をかけて逃亡する。", "" + (self.$getRandomDiff(dice1, 42, d, 0)) + "彼らはお互いに争っているがPCたちを見つけると向きを変えて襲い掛かってくる。" + (self.$getRandomDiff(dice1, 42, d, 1)), "" + (self.$getRandomDiff(dice1, 43, d, 0)) + "相手は洞窟では巧妙に擬態しており、【ハイドインシャドウ】状態とみなす。" + (self.$getRandomDiff(dice1, 43, d, 1)), "" + (self.$getRandomDiff(dice1, 44, d, 0)) + "トロッコに乗って逃げつつの戦闘になり、2ラウンド以内に倒せなければ轢かれてPC全員が" + (self.$getRandomDiff(dice1, 44, d, 1)) + "の防護点無視ダメージを受ける。また、1ラウンドに1人誰かが体力判定を行ってトロッコを運転する必要があり、これに失敗すると即座に轢かれてしまう。轢かれると戦闘は終了する。パーテイー内にケイヴウォーカーがいればこの判定は不要。", "" + "炎の燃え盛る洞窟。深度判定直前に炎で" + (self.$getRandomDiff(dice1, 45, d, 0)) + "の「叩き」ダメージを受ける。さらに" + (self.$getRandomDiff(dice1, 45, d, 1)) + "とエンカウント。火炎弱点のモンスターがいれば即座に逃亡する。", "" + "冷気に包まれた洞窟。深度判定直前に冷気で" + (self.$getRandomDiff(dice1, 46, d, 0)) + "のFPダメージを受ける(防護点無視)さらに" + (self.$getRandomDiff(dice1, 46, d, 1)) + "とエンカウント。冷気弱点のモンスターがいれば即座に逃亡する。"]} - else if ((5)['$===']($case)) {table = ["落盤がモンスターを押しつぶす。戦闘中の場合ランダムなモンスター1人を即死させる。APやドロップ品も入手可能。それ以外の場合は特に何も起きない。", "" + "採掘用のダイナマイトが打ち捨てられている。行動ターンを消費して使用することで任意の半径" + (self.$getRandomDiff(dice1, 52, d, 0)) + "の敵味方全員に" + (self.$getRandomDiff(dice1, 52, d, 1)) + "の「叩き」ダメージを与える。命中判定は自動的に0成功とし、《爆裂火球》と同様にダメージの軽減が可能。", "" + "有毒ガスが発生している。分類「ギア」「アンデッド」以外のキャラクターは敵味方全員" + (self.$getRandomDiff(dice1, 53, d, 0)) + "で判定を行い、失敗度分のダメージを受ける。《空気浄化》などがあれば使用することで無効化できる。", "" + "溶岩の流れる部屋。深度判定直前に炎で" + (self.$getRandomDiff(dice1, 54, d, 0)) + "の「叩き」ダメージを受ける。深度判定を行い、失敗したキャラクターはさらに追加で" + (self.$getRandomDiff(dice1, 54, d, 0)) + "の「叩き」ダメージを受ける。", "" + "落盤がPCのうちランダムに1人を押しつぶす。受動防御無視の" + (self.$getRandomDiff(dice1, 55, d, 0)) + "に失敗すると" + (self.$getRandomDiff(dice1, 55, d, 1)) + "の「叩き」ダメージを受ける。パーティーの誰かが「第六感」か「視覚-5」の判定に成功すれば事前に回避可能。(「暗視」があれば「視覚-2」でも判定可能)", "進んできた道の後方が急に崩落する。ダンジョン攻略が完了するまで「撤退」ができなくなるが、「深度」が現時点より下がることがなくなる。"]} - else if ((6)['$===']($case)) {table = ["" + "プラネタリウムのように鉱石が輝く部屋。星の配置に関する謎かけになっている。行動を消費して" + (self.$getRandomDiff(dice1, 61, d, 0)) + "に成功すればこの謎を解くことができる。謎が解けると" + (self.$getRandomDiff(dice1, 61, d, 1)) + "が入手できる。", "" + "地熱で温泉が湧いている。このイベントが発生するとモンスターは消滅する。みんなで温泉に浸かることでFPが全回復する。また、温泉の薬効により受けていた毒は無効化され、ラウンドの最初にHPが" + (self.$getRandomDiff(dice1, 62, d, 0)) + "点ずつ回復するようになる。", "" + "地下渓流を発見する。深度判定が体力判定ではなく<水泳>判定になる。深度判定に" + (self.$getRandomDiff(dice1, 63, d, 0)) + "成功以上した場合は地底湖に沈む財宝を発見可能。財宝にカギやトラップはなく、中身は深度そのままの財宝テーブルを使用する。", "" + "アダマン鉱脈を発見する。「<採掘>の成功度×深度×" + (self.$getRandomDiff(dice1, 64, d, 0)) + "」GP分のアダマン鉱石を入手可能。複数人数で判定を行えばその回数分入手可能。ただし50GP分ごとに重量が1kg。撤退・全滅した場合アダマン鉱石は消滅する。", "強烈な磁力を放つ鉱石のある部屋。金属製の防具は重量を2倍に計算する。続いてエンカウント表(4-1~4-6)を振ること。なお、4-5の部屋の炎と4-6の部屋の冷気による効果は適用しない。", "" + "怪しい光を放つ鉱石の部屋。鉱石は無生物を破壊する振動を放っており、武器に" + (self.$getRandomDiff(dice1, 66, d, 0)) + "の効果を与える。また、種族「ギア」のキャラクターも同様の効果を受ける。ラウンド終了前に鉱石を破壊すればこの効果は受けない。鉱石はどのヘクスからでも攻撃可能。分類:岩石、防護点8、HP" + (self.$getRandomDiff(dice1, 66, d, 1)) + "、切り刺しダメージボーナス無効。"]} - else {table = nil};} - else if ((2)['$===']($case)) { - area = "遺跡"; - $case = dice2; - if ((1)['$===']($case)) {table = ["回復の泉。PC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。", "" + "随分進んだし一休みしよう。深度が奇数の場合はFPが" + (self.$getRandomDiff(dice1, 12, d, 0)) + "回復。深度が偶数の場合は進んだように見せかけて迷っているだけだった。深度が1D減少する。", "" + "どうやらここは古代の医務室らしい。" + (self.$getRandomDiff(dice1, 13, d, 0)) + "に成功すればPC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。", "「道標のヒカリゴケ」を栽培しているフラウに出会う。300GPを払うと、以後の深度増加判定に+1のボーナスを得る。", "ダンジョンの見取り図を書いた部屋に出る。次のランダムイベントでは、好きな地形を選択してからイベント表を振ることができる。次が最終イベントだった場合、ラウンド終了時の深度判定に+2のボーナスを得る。", "" + "「パワーアップ装置!」と書かれた怪しげな機械が置いてある。" + (self.$getRandomDiff(dice1, 16, d, 0)) + "を支払って使用するとキャラクターを強化(?)可能。使用するかは自由だが、「好奇心」を持つキャラクターは知力判定に失敗すると使用する。使用したキャラクターは1Dを振り、以下のような効果が発生する。\n" + "----------\n" + "1:能力値が1点上昇する。上がる能力値はランダムで1つ。CP総計はそれに応じて増加する\n" + "2:お肌がピチピチになり、容貌が1段階上昇する。「超美形」の場合さらに反応が男女とも+1(+5CP)\n" + "3:習得している技1つを選択して強化する。ソーサルギアは" + (self.$getRandomDiff(dice1, 16, d, 1)) + "までの魔法を1つ習得する\n" + "4:装置は突然大爆発を起こす!" + (self.$getRandomDiff(dice1, 16, d, 2)) + "の「叩き」ダメージを受ける\n" + "5:「鋭敏感覚1」が身につく。すでに「鋭敏感覚」がある場合そのレベルが上昇する\n" + "6:能力値が1点下降する。下がる能力値はランダムで1つ。CP総計はそれに応じて減少する\n" + "----------"]} - else if ((2)['$===']($case)) {table = ["財宝(カギ・トラップなし)。財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギつき。行動を消費して" + (self.$getRandomDiff(dice1, 22, d, 0)) + "に成功すれば開く)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギなし、トラップつき。行動を消費して" + (self.$getRandomDiff(dice1, 23, d, 0)) + "に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギ、トラップつき。行動を消費して" + (self.$getRandomDiff(dice1, 24, d, 0)) + "に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "ミミックの罠。ランダムなキャラクターに3Dの「切り」ダメージを与える。" + (self.$getRandomDiff(dice1, 25, d, 0)) + "に成功すればこの罠を見抜いて無効化することができ、なおかつ「深度×" + (self.$getRandomDiff(dice1, 25, d, 1)) + "」GPを入手可能。", "" + "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。" + (self.$getRandomDiff(dice1, 26, d, 0)) + "に成功すればこの罠を見抜いて無効化することができる。"]} - else if ((3)['$===']($case)) {table = ["" + "鏡に映る怪人が自分の真似をしろとジェスチャーしている" + (self.$getRandomDiff(dice1, 31, d, 0)) + "のいずれかに成功すると鏡が消滅して隠し通路が開かれ、深度が2D増加する。", "" + "小さな魔将の像がフィルトウィズの地図の上で乱雑に置かれている。" + (self.$getRandomDiff(dice1, 32, d, 0)) + "で判定を行い、魔将の所在地を正しく配置すると隠し通路が開かれ、深度が2D増加する。", "" + "シュートの罠に引っかかるが、結果的に新たな道を発見する。深度が2D増加するが、PC全員が増加した深度" + (self.$getRandomDiff(dice1, 33, d, 0)) + "「叩き」ダメージを受ける。<軽業>で判定を行い、その成功度分ダメージを軽減可能。", "" + "ラダマンティス崇拝者が作り出した、巨大な甲羅のようなものが置かれた部屋。登っていけば近道することができそうだ。" + (self.$getRandomDiff(dice1, 34, d, 0)) + "に成功すれば深度が1D増加する。", "" + "後ろから重い物が転がってくる音がする。ローリングストーンだ!" + (self.$getRandomDiff(dice1, 35, d, 0)) + "で判定を行い、失敗したPCは" + (self.$getRandomDiff(dice1, 35, d, 1)) + "の「叩き」ダメージを受ける。全員成功だった場合のみ深度が2D増加する。", "" + "通路が入り組んでおり道に迷いそうだ。" + (self.$getRandomDiff(dice1, 36, d, 0)) + "の判定に失敗すると深度が2D減少する。「方向感覚」があればこの影響は受けない。"]} - else if ((4)['$===']($case)) {table = ["" + (self.$getRandomDiff(dice1, 41, d, 0)) + "とエンカウント。2ラウンド経過するとキャンディークラウンは戦場全域に《べたべた》をかけて逃亡する。", "" + "石像が並ぶ通路がある。1Dを振って1・2・3なら" + (self.$getRandomDiff(dice1, 42, d, 0)) + "。1Dを振って4・5・6・の場合ガーゴイルに似ている、ただの石像。<モンスター知識-5>か「第六感」の判定に成功していなければ必ず相手の先制攻撃になり、その際PC先手で進行中の場合もモンスター先手に変更される。" + (self.$getRandomDiff(dice1, 42, d, 1)), "" + "障害物に隠れて" + (self.$getRandomDiff(dice1, 43, d, 0)) + "が狙撃してくる。モンスターのすぐ傍には合計5ヘクスの障害物(防護点5、HP35。形はGMが任意に決定する)がある。障害物ごしに攻撃するには射撃武器でなくてはならず、射撃武器も命中に-2のペナルティを受ける。", "" + "ブツゼンにモンスターが仁王立ちをしており、問答を行ってくる。" + (self.$getRandomDiff(dice1, 44, d, 0)) + "に成功すると戦闘を回避することができ、APとドロップ品も入手可能。失敗するか戦闘を望んだ場合" + (self.$getRandomDiff(dice1, 44, d, 1)) + "とエンカウントする。", "" + "進路上に鎖に繋がれたモンスターを発見する。迂回して戦闘を避けるなら深度1D減少し、戦闘して倒すと深度が1D増加する。戦闘を行う場合" + (self.$getRandomDiff(dice1, 45, d, 0)) + "とエンカウントする。", "" + "暴れゴーレムが襲いかかってくる!《倍速》の魔法がかかった" + (self.$getRandomDiff(dice1, 46, d, 0)) + "とエンカウントする。このゴーレムは暴走の負荷によりターンの最初にHPが" + (self.$getRandomDiff(dice1, 46, d, 1)) + "減少する。"]} - else if ((5)['$===']($case)) {table = ["" + "毒矢が飛んでくる。" + (self.$getRandomDiff(dice1, 51, d, 0)) + "に失敗すると" + (self.$getRandomDiff(dice1, 51, d, 1)) + "の「刺し」ダメージを受け、1点でもダメージを受けた場合" + (self.$getRandomDiff(dice1, 51, d, 2)) + "判定を行い失敗すると以後ターンの最初に" + (self.$getRandomDiff(dice1, 51, d, 3)) + "の防護点無視ダメージを受ける。", "" + "毒霧が部屋に散布される。" + (self.$getRandomDiff(dice1, 52, d, 0)) + "で判定を行い、失敗すると《解毒》などを使用しない限り以後の判定全てに-2のペナルティを受ける。《空気浄化》があれば防御タイミングで使用して打ち消すことができる。", "" + "フロアイミテーターだ!この部屋自体が魔物である。ロックバトラー(" + (self.$getRandomDiff(dice1, 53, d, 0)) + ")とエンカウントする。このモンスターがいる限り移動はできず、ラウンドごとの地形変化や深度増加も行わない。PCとフロアイミテーターは常に隣接しているものとして扱う。", "" + "どうやら休憩室のようだ、ふわふわのベッドもある。" + (self.$getRandomDiff(dice1, 54, d, 0)) + "判定に失敗すると転倒状態になり、ダメージを受けるか行動を消費して起こしてもらうまで行動不能。全員失敗した場合、君たちの冒険はここまでだ。せめていい夢を見れるといいだろう(保険は適用可能)", "ラダマンティスの蛇の像と目が合う。どうやらダンジョンの監視者に見つかってしまったらしい!以後モンスターとエンカウントする場合、その数が2倍となる(この効果は累積する)なお、ネームドもしくは魔将の数は変化しない。", "" + "怪しげな卵が1つ置かれている。GMは" + (self.$getRandomDiff(dice1, 56, d, 0)) + "の中から好きなものを1体選びエンカウントさせることができる。深度が0の場合、卵の中から1段階高い財宝テーブルのアイテムが手に入る。"]} - else if ((6)['$===']($case)) {table = ["突如持っていた灯が消えて真っ暗になってしまう。暗闇を見通せる手段(特徴「暗視」、魔法《持続光》、遺跡1-4のヒカリゴケなど)がない限り、PCはこのラウンド中の敏捷力に-4のペナルティを受ける。(ストームコーザーは-8)", "" + "どうやら過去の訓練施設のようだ。「パンチングマシーン」と書かれたものがあり、100GP払って挑戦可能。武器を外した状態での「叩き」ダメージを求め、値が大きいと景品が入手可能。1回挑戦すると、ガタがきていたのか壊れてしまう。<格闘><猫格闘><空手>の技を使用しても構わない。\n" + "---------\n" + "ダメージが" + (self.$getRandomDiff(dice1, 62, d, 0)) + "以上:2D×50GP\n" + "ダメージが" + (self.$getRandomDiff(dice1, 62, d, 1)) + "以上:深度が1段階低い財宝テーブル\n" + "ダメージが" + (self.$getRandomDiff(dice1, 62, d, 2)) + "以上:深度が1段階高い財宝テーブル\n" + "---------", "謎の装置のせいで気になるあの子と体が入れ替わってしまった!?シナリオ終了までPCのうち2人の体が入れ替わってしまい、精神的な特徴と癖が入れ替わってしまう。なぜか知力や技能はそのまま。プレイヤーは入れ替わった相手の性格を演じること。入れ替わる2人はランダムに決定するか面白くなるようにGMが選ぶ。展開が面白かった場合、GMはシナリオクリア時のCPを1点追加しても良い。", "" + "古代のテクノロジーを使用した医療施設だ。このイベントが発生するとモンスターは消滅する。" + (self.$getRandomDiff(dice1, 64, d, 0)) + "に成功すると全員のHP・FP・MPと転倒以外の状態異常を全回復できる。また、シナリオ終了まで不利な肉体的・精神的な特徴を無効化できる。", "" + "キャンディークラウンハウスだ!キャンディークラウン(CL40)×1D" + (self.$getRandomDiff(dice1, 65, d, 0)) + "とエンカウントする。もし1体も倒せなかった場合、1体も倒せずチャンスをものにできなかった悔しさからFPに出てきたキャンディークラウンの数Dのダメージを受ける(軽減不可)", "" + "なぜここに呼ばれたかおわかりになりますでしょうか?ラダマンティス崇拝者の作り出した審判の部屋。<地域知識/フィルトウィズ全域-3>に成功すると罰を与える部屋だとわかり、部屋の中央のラダマンティス像を攻撃できるようになる。像はどのヘクスからでも攻撃可能。分類:岩石、防護点8、HP" + (self.$getRandomDiff(dice1, 66, d, 0)) + "、切り刺しダメージボーナスなし。2ラウンド以内に破壊すれば現在の深度に等しいAPを入手可能。破壊できなかった場合像から裁きの光が放たれ、PC全員が「" + (self.$getRandomDiff(dice1, 66, d, 1)) + "」点の防護点無視ダメージを受ける。"]} - else {table = nil};} - else if ((3)['$===']($case)) { - area = "断崖"; - $case = dice2; - if ((1)['$===']($case)) {table = ["回復の泉。PC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。", "" + "休憩に丁度いい広場を見つけた。FPが2D回復するが、" + (self.$getRandomDiff(dice1, 12, d, 0)) + "判定を行うこと。PCの半数以上が失敗すると居心地が良すぎて離れづらくなり次の深度判定と地形変化が起きなくなる。その場合次もこのイベントを行うこと。", "" + "山小屋を発見し一休み。HPとFPが" + (self.$getRandomDiff(dice1, 13, d, 0)) + "回復する。4人で休んでいる場合暇つぶしに山小屋の四隅をぐるぐるまわって運動し始めるが、後から妙なことに気が付きMPが1D減少する。", "" + "キイチゴを栽培しているフラウに出会う。栄養満点。50GP払うことでFPとMPを" + (self.$getRandomDiff(dice1, 14, d, 0)) + "回復することができる(1人1回)", "" + "少し休憩できそうな洞窟を発見する。中には他のエクスプローラーが残していったと思われる道具もあった。" + (self.$getRandomDiff(dice1, 15, d, 0)) + "GPまでの好きな消耗品1つを入手して、大雨が降っていればそれも止む。", "" + "回復の泉。しかし山間の貴重な水源のため、亜人によって管理されており使用させてもらうには" + (self.$getRandomDiff(dice1, 16, d, 0)) + "GPが必要。パーティーに管理している亜人と同じ種族がいれば無料で使用可能。使用するとPC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。どの種族が管理しているかは1Dを振って決定する。\n" + "----------\n" + "1:ドラコニアン\n" + "2:リザードとワイズマン\n" + "3:フラウ\n" + "4:シルヴァテイル\n" + "5:ストームコーザー\n" + "6:グラント\n" + "----------"]} - else if ((2)['$===']($case)) {table = ["財宝(カギ・トラップなし)。財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギつき。行動を消費して" + (self.$getRandomDiff(dice1, 22, d, 0)) + "に成功すれば開く)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギなし、トラップつき。行動を消費して" + (self.$getRandomDiff(dice1, 23, d, 0)) + "に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギ、トラップつき。行動を消費して" + (self.$getRandomDiff(dice1, 24, d, 0)) + "に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "ミミックの罠。ランダムなキャラクターに3Dの「切り」ダメージを与える。" + (self.$getRandomDiff(dice1, 25, d, 0)) + "に成功すればこの罠を見抜いて無効化することができ、なおかつ「深度×" + (self.$getRandomDiff(dice1, 25, d, 1)) + "」GPを入手可能。", "" + "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。" + (self.$getRandomDiff(dice1, 26, d, 0)) + "に成功すればこの罠を見抜いて無効化することができる。"]} - else if ((3)['$===']($case)) {table = ["" + "ショートカットコースを発見。" + (self.$getRandomDiff(dice1, 31, d, 0)) + "に成功すると深度が2D増加する。", "" + "鉱物を運んでいたのであろう、運搬用トロッコのレールを発見する。深度が1D増加する。ケイブウォーカーがいる場合" + (self.$getRandomDiff(dice1, 32, d, 0)) + "で判定を行い、更にその成功度分深度が増加する。", "" + "険しい斜面が続く。" + (self.$getRandomDiff(dice1, 33, d, 0)) + "に失敗すると道の選択を誤り深度が1D、FPが1点減少する。", "空を飛べればショートカットできそうな崖を発見する。なんらかの飛行手段のあるPCがいる場合深度が2D増加する。(魔法などの場合その分のMPを消費すること。1人分でよい)飛行手段がなければ遠回りになり、深度が1D減少する。", "" + "遠くから山彦のような不思議な声が聞こえる。" + (self.$getRandomDiff(dice1, 35, d, 0)) + "に成功すると何者かが迷いやすい道を注意してくれているのがわかる。判定に失敗した場合、深度が1D減少する。", "" + "急に突風が吹いてきた!全員で" + (self.$getRandomDiff(dice1, 36, d, 0)) + "判定を行うこと。失敗したキャラクターは急斜面を落下して3Dの「叩き」ダメージを受ける。また、「失敗したPCの人数×1D」の深度が減少する。"]} - else if ((4)['$===']($case)) {table = ["" + (self.$getRandomDiff(dice1, 41, d, 0)) + "とエンカウント。2ラウンド経過するとキャンディークラウンは戦場全域に《べたべた》をかけて逃亡する。", "" + "あれはストームコーザー?・・・いや、魔物だ!" + (self.$getRandomDiff(dice1, 42, d, 0)) + "。うまく地形を利用して幻惑してくるため、この敵からの回避には-2のペナルティを受ける。", "" + "登山訓練中の魔族の小隊と出くわす。相手は疲れているようだ?" + (self.$getRandomDiff(dice1, 43, d, 0)) + "とエンカウント。FPは最大値の半分まで減少している。", "" + "突然魔族が飛びかかってきた!" + (self.$getRandomDiff(dice1, 44, d, 0)) + "。体の一部が宝石でできており、普通の" + (self.$getRandomDiff(dice1, 44, d, 1)) + "とは異なるようだ。撃破時に入手できるAPが2倍で、ドロップ判定のダイスが良い方に1点修正される。" + (self.$getRandomDiff(dice1, 44, d, 2)), "" + "ケタケタ笑いながら空から襲撃をされる。" + (self.$getRandomDiff(dice1, 45, d, 0)) + "。彼女達はとても飽きっぽいので2ラウンド行動したあと深度判定の際に立ち去ってしまう(APとドロップは入手できない)" + (self.$getRandomDiff(dice1, 45, d, 1)), "" + (self.$getRandomDiff(dice1, 46, d, 0)) + "の縄張りに足を踏み入れる" + (self.$getRandomDiff(dice1, 46, d, 1)) + "。引き返して一度縄張りを離れるなら深度が2D減少する。そのまま進むのであればPC全員で反応判定を行うこと。(反応修正は容貌も含め全て適用。同性とみなす)1人でも「良い」以上の反応であれば見逃してもらえる。全員が「普通」以下の場合は戦闘になる。"]} - else if ((5)['$===']($case)) {table = ["" + "ジャーンジャーン!げぇ、落石だ!!魔族がここぞとばかりに岩を落とし始める。" + (self.$getRandomDiff(dice1, 51, d, 0)) + "の判定に失敗したPCは" + (self.$getRandomDiff(dice1, 51, d, 1)) + "の「叩き」ダメージを受ける。「第六感」に事前に成功していれば全員が回避可能。", "" + "ファイトー!いっぱーつ!!足場が崩れ出す。" + (self.$getRandomDiff(dice1, 52, d, 0)) + "に失敗したPCは落下して" + (self.$getRandomDiff(dice1, 52, d, 1)) + "の「叩き」ダメージを受ける。成功したPCは体力判定を行い、落下するキャラを支えることができる。この判定に失敗した場合支えようとしたキャラクターも一緒にダメージを受ける。", "" + "滑りやすい岩を飛び移っていく道が続いている。敵味方全員が" + (self.$getRandomDiff(dice1, 53, d, 0)) + "判定を行い、失敗したキャラクターは転倒してFPに1点のダメージを受ける。浮遊・飛行して移動しているキャラクターはこの影響を受けない。" + (self.$getRandomDiff(dice1, 53, d, 1)), "" + "『銀糸の甲殻』アルゲントゥムの巣が張られている。幸い主はいないようだ・・・?1Dを振って3以下だった敵味方全員はソーサルギアの《べたべた》の効果を受ける。" + (self.$getRandomDiff(dice1, 54, d, 0)), "" + "美しい万年雪の中を進んでいたと思ったのも束の間、雪崩に遭遇してしまう!" + (self.$getRandomDiff(dice1, 55, d, 0)) + "か「第六感」に誰かが成功すれば回避可能。失敗すると敵味方全員が" + (self.$getRandomDiff(dice1, 55, d, 1)) + "の防護点無視ダメージ、その半分のFPダメージを受ける。", "" + "下から魔族が大量に登ってくる、今のうちに撃退しなくては。魔族の群れは「分類:魔族、" + (self.$getRandomDiff(dice1, 56, d, 0)) + "、ダメージボーナス有効」とみなし、どのヘクスからも攻撃可能。ラウンド終了後の深度判定時に、PC全員が「残りHP÷2」の防護点無視ダメージを受ける。シナリオ終了時に「与えたダメージ合計÷2」に等しいAPを得ることができる。"]} - else if ((6)['$===']($case)) {table = ["" + "急に大雨が降り出した、屋外に避難したいところだが・・・地形が「洞窟」か「遺跡」に変更されるまで深度判定の成功度に" + (self.$getRandomDiff(dice1, 61, d, 0)) + "のペナルティを受ける。", "" + "カラーストーンの原石を見つける。行動ターンを消費して<採掘>か<技師/魔道具ー5>の判定を行い、「成功度×" + (self.$getRandomDiff(dice1, 62, d, 0)) + "GP」を入手することができる。クリティカル時は成功度を3倍に計算する。", "" + "不思議な岩がある。1Dを振って1・2であれば火炎、3・4であれば冷気、5・6であれば電撃特性の攻撃で破壊可能。" + (self.$getRandomDiff(dice1, 63, d, 0)) + "行動ターンを消費して岩を狙うと宣言すればよい。岩は全てのヘクスから攻撃可能で、破壊したあとには財宝が発見できる。財宝の中身は現在の深度に応じた財宝テーブルを使用する。", "" + "ストームコーザーが獲物を取った後調理をしている。このイベントが発生するとモンスターは消滅する。「こんなところで人間に会うなんて珍しいな、お前らも食っていくか?」10GPを支払うことでマジカルクッキング" + (self.$getRandomDiff(dice1, 64, d, 0)) + "の効果を得ることができる。", "" + "高山植物の群生地。" + (self.$getRandomDiff(dice1, 65, d, 0)) + "のいずれかで判定を行う。成功した場合、「深度×" + (self.$getRandomDiff(dice1, 65, d, 1)) + "」GP相当の薬草が入手可能。", "" + "岩壁が大きく崩れる!崩落に巻き込まれ深度が0になってしまう。" + (self.$getRandomDiff(dice1, 66, d, 0)) + "に成功すると何やら崩れたあとに鈍く輝く武器を発見する。武器、盾、鎧の中から好きなもの1つを入手することができる(" + (self.$getRandomDiff(dice1, 66, d, 1)) + "GPまで)"]} - else {table = nil};} - else if ((4)['$===']($case)) { - area = "水辺"; - $case = dice2; - if ((1)['$===']($case)) {table = ["回復の泉。PC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。", "" + "甲羅干しに適した暖かい小島を見つける。FPとMPを" + (self.$getRandomDiff(dice1, 12, d, 0)) + "回復。ワイズマンは回復量2倍。", "魚の群れを発見する。行動を消費して<釣り>に成功すると、さらに行動ターンで<調理>判定を行うことでジャンル「魚」のマジカルクッキングを行うことができる。<釣り>と<調理>を行うキャラクターは別々でも構わない。できた料理の効果はその場で適用する。", "ミントや菖蒲を育てているフラウに出会う。100GP払うと薬湯に入れてもらうことができる。FPとMPが生命力と同じ値だけ回復する。", "リザードの集落につく。HPの減ったキャラクターがいれば持て囃され、マジカルクッキング「カリカリミミズ肉」をごちそうしてもらい、この先の道案内も買って出てくれる。そのラウンドの深度判定に+3のボーナスを得る。全員のHPが満タンの場合は、そっけない扱いをされ何も起こらない。", "" + "回復の泉に見せかけた毒の泉。パーティーメンバーのHP・MP・FPのいずれかが減少している場合このイベントは拒否できない。毒の水でHP・MP・FPに" + (self.$getRandomDiff(dice1, 16, d, 0)) + "のダメージを受ける。HP・MP・FPが全快のキャラクターはこの効果を受けない。" + (self.$getRandomDiff(dice1, 16, d, 1)) + "か「第六感」に成功すればこれが毒の泉だとわかる。"]} - else if ((2)['$===']($case)) {table = ["財宝(カギ・トラップなし)。財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギつき。行動を消費して" + (self.$getRandomDiff(dice1, 22, d, 0)) + "に成功すれば開く)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギなし、トラップつき。行動を消費して" + (self.$getRandomDiff(dice1, 23, d, 0)) + "に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギ、トラップつき。行動を消費して" + (self.$getRandomDiff(dice1, 24, d, 0)) + "に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "ミミックの罠。ランダムなキャラクターに3Dの「切り」ダメージを与える。" + (self.$getRandomDiff(dice1, 25, d, 0)) + "に成功すればこの罠を見抜いて無効化することができ、なおかつ「深度×" + (self.$getRandomDiff(dice1, 25, d, 1)) + "」GPを入手可能。", "" + "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。" + (self.$getRandomDiff(dice1, 26, d, 0)) + "に成功すればこの罠を見抜いて無効化することができる。"]} - else if ((3)['$===']($case)) {table = ["" + "進みやすい浅瀬だ。深度が1D増加する。" + (self.$getRandomDiff(dice1, 31, d, 0)) + "に成功すればちょうどいいイカダを組み、深度が2D増加。", "" + "様々な漂流物が流れ込む船の墓場。障害物が多く進みにくい。" + (self.$getRandomDiff(dice1, 32, d, 0)) + "の判定に成功すれば深度が1D増加。失敗した場合深度が1D減少する。", "大蓮のような植物の群生地。荷重レベルが「軽荷」以下のキャラクターがいる場合安全に移動できるようになり深度が1D増加する。全員「並荷」以上の場合は大蓮が絡まり深度が1D減少する。", "" + "周囲に深い霧が発生する。" + (self.$getRandomDiff(dice1, 34, d, 0)) + "の判定に失敗すると深度が1D減少する。「暗視」があれば「視覚-2」で判定可能。「方向感覚」があればまったく影響を受けない。", "" + "沼地で思うように進めない。" + (self.$getRandomDiff(dice1, 35, d, 0)) + "で判定を行い、失敗すると深度が1D減少する。ペット「スワンプランナー」を装備している場合と【ミズグモ】がある場合はまったく影響を受けない。", "" + "水流が複雑になっており思うように進めず戻されてしまう。" + (self.$getRandomDiff(dice1, 36, d, 0)) + "の判定に失敗すると深度が2D減少する。リザードかワイズマンは知力そのままで判定してもよい。"]} - else if ((4)['$===']($case)) {table = ["" + (self.$getRandomDiff(dice1, 41, d, 0)) + "とエンカウント。2ラウンド経過するとキャンディークラウンは戦場全域に《べたべた》をかけて逃亡する。", "" + "アシガル潜水隊と遭遇。" + (self.$getRandomDiff(dice1, 42, d, 0)) + "とエンカウント。<偽装>か「視覚-3」判定に成功すると水面に動く竹筒を発見可能。最初の判定に成功していればPC側のイニシアチブ値+1、失敗していれば敵の先手で戦闘を開始する。その際PC先手で進行中の場合もモンスター先手に変更される。", "" + "何か水面が揺れている。" + (self.$getRandomDiff(dice1, 43, d, 0)) + "。敵は全員【ハイドインシャドウ】状態。" + (self.$getRandomDiff(dice1, 43, d, 1)) + "判定に失敗すると敵の先手で戦闘を開始する。その際PC先手で進行中の場合もモンスター先手に変更される。", "" + "水辺で花を育てている少女に出会う・・・が、少女は" + (self.$getRandomDiff(dice1, 44, d, 0)) + "だった!彼女が育てている花の根本には無数の動物の死体が無残にも肥料にされている。遭遇したラウンドのイニシアチブ判定直後に恐怖判定を行うこと。", "" + "水かと思ったらスライムだった!?" + (self.$getRandomDiff(dice1, 45, d, 0)) + "。相手側のイニシアチブ判定には+3のボーナスがある。", "" + "高波にのった騎士が現れる。" + (self.$getRandomDiff(dice1, 46, d, 0)) + "。最初の攻撃に限り、【チャージアタック】時に追加で5ヘクス移動した扱いになる。"]} - else if ((5)['$===']($case)) {table = ["" + "美しい歌声が響き渡る、意識が引きずり込まれそうだ。その場にいる全員(敵も)は" + (self.$getRandomDiff(dice1, 51, d, 0)) + "判定を行う。音量自動補正装置がある場合この効果を受けない。失敗した場合1ラウンド朦朧状態となる。朦朧としたキャラクターは深度判定も不可。", "" + "小舟で進んでいると、なにやら激しい水の音がする。この先は滝のようだ!行動を消費して" + (self.$getRandomDiff(dice1, 52, d, 0)) + "を行い、全員が失敗すると" + (self.$getRandomDiff(dice1, 52, d, 1)) + "の防護点無視ダメージを受ける。この判定がクリティカルだった場合、滝の裏に財宝の洞窟を発見する。罠や鍵はかかっておらず、財宝の中身は1段階高い深度の財宝テーブルを使用する。", "" + "船の墓場だ。強風でマストが倒れてくる。" + (self.$getRandomDiff(dice1, 53, d, 0)) + "に失敗したPCは" + (self.$getRandomDiff(dice1, 53, d, 1)) + "の「叩き」ダメージを受けて転倒する。", "" + "水がしょっぱい、ここは塩水のようだ。ミスリル製とアダマン製以外の金属鎧を身に着けている場合、" + (self.$getRandomDiff(dice1, 54, d, 0)) + "の判定に失敗すると防具の防護点" + (self.$getRandomDiff(dice1, 54, d, 1)) + "。下がった防護点は「簡易修理キット」などで修理は可能。ドライブギアの場合、シナリオ終了時にメンテナンスのため(受動防御+防護点)×50GPの費用がかかる。", "" + "ここの水は冷たい、気をつけないと体力を奪われてしまう。" + (self.$getRandomDiff(dice1, 55, d, 0)) + "判定を行い、失敗するとFPに" + (self.$getRandomDiff(dice1, 55, d, 1)) + "のダメージを受ける。リザードとワイズマンは生命力判定に-3のペナルティを受ける。", "" + "凄まじい勢いで間欠泉が噴き出している!" + (self.$getRandomDiff(dice1, 56, d, 0)) + "の判定に失敗すると。ランダムで1D人が間欠泉に直撃して、" + (self.$getRandomDiff(dice1, 56, d, 1)) + "の「叩き」ダメージを受ける。"]} - else if ((6)['$===']($case)) {table = ["" + "傷付いて荒ぶった" + (self.$getRandomDiff(dice1, 61, d, 0)) + "を発見する。反応判定を行い(「動物共感」なら+4)13以上が出た場合、" + (self.$getRandomDiff(dice1, 61, d, 0)) + "はおとなしくなる。そのあと" + (self.$getRandomDiff(dice1, 61, d, 1)) + "の判定に成功すると、" + (self.$getRandomDiff(dice1, 61, d, 0)) + "がなつき、" + (self.$getRandomDiff(dice1, 61, d, 0)) + "(ペット)を手に入れることができる。反応判定が10~12の場合特に何もおこらない。反応判定が9以下だった場合、" + (self.$getRandomDiff(dice1, 61, d, 0)) + "が暴れてPC全員が1Dの防護点無視ダメージを受け、" + (self.$getRandomDiff(dice1, 61, d, 0)) + "は逃亡する。", "" + "なにやら派手な魚を見つける、あれはもしやアズマに伝わる幻の魚「ニシキゴイ」か!?行動を消費して" + (self.$getRandomDiff(dice1, 62, d, 0)) + "の判定に成功すると見事つり上げ、持ち帰ると" + (self.$getRandomDiff(dice1, 62, d, 1)) + "GPとなる。判定にファンブルすると逃げられ、以後判定できなくなる。撤退・全滅した場合ニシキゴイは消滅する。", "" + "カエルの合唱が響き渡る。何やら意味がある歌声に聞こえるが・・・" + (self.$getRandomDiff(dice1, 63, d, 0)) + "の判定に成功すると歌の意味を理解できる。「動物共感」があればこの判定に+4のボーナスを得る。カエル達は安全な道を教えてくれていたのだ。判定に成功した場合深度が2D増加する。判定に失敗すると毒の沼に足を踏み入れ、PC全員が" + (self.$getRandomDiff(dice1, 63, d, 1)) + "の防護点無視ダメージを受ける。", "" + "老齢のグラントが岩に腰かけ釣りをしている。このイベントが発生するとモンスターは消滅する。「どうだね、よかったら釣り勝負をやっていかないか?グラントの太公望(" + (self.$getRandomDiff(dice1, 64, d, 0)) + ")とPCの<釣り>技能で行動を消費して即決勝負を行う。成功度で勝利した場合、「見事じゃ、そこにあるガラクタはワシには必要ない物じゃから好きに持っていくがいい」と財宝を渡してくれる。財宝の中身は1段階高い深度の財宝テーブルを使用する。", "" + "船の墓場だ、ここは何かありそうな感じがする。" + (self.$getRandomDiff(dice1, 65, d, 0)) + "に成功すると「2D×" + (self.$getRandomDiff(dice1, 65, d, 1)) + "」GPを入手できる。判定がクリティカルだった場合、それに加えて財宝も入手可能。財宝の中身は1段階高い深度の財宝テーブルを使用する。", "" + "貝の群生地だ。" + (self.$getRandomDiff(dice1, 66, d, 0)) + "に成功すると真珠が見つかる。行動を消費して<水泳-4>か<潜水>を行い、1人成功するごとに" + (self.$getRandomDiff(dice1, 66, d, 1)) + "GPを入手可能。水泳や潜水の判定に失敗した場合はFPに1点のダメージを受ける。"]} - else {table = nil};} - else if ((5)['$===']($case)) { - area = "森林"; - $case = dice2; - if ((1)['$===']($case)) {table = ["回復の泉。PC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。", "鬱蒼とした森の奥に見事な佇まいの茶室を見つける。【ソチャデスガ】を使用した際の回復量が2倍になる。パーティーにサスライがいない場合は友好的なカラクリフラウ(CL6)がいて、「PTの人数×20」GPで<茶道15>の【ソチャデスガ】を使用してくれる。", "" + "おいしそうな果実を見つける。<植物学>か<動植物知識-3>で判定を行い、成功するとHPとFPが" + (self.$getRandomDiff(dice1, 13, d, 0)) + "回復する。", "果実を育てているフラウに出会う。「PTの人数×20」GP払うとジャンル「果実」のマジカルクッキングを行うことができる。品質が良いので<調理>には+2のボーナスを得る。できた料理の効果はその場で適用する。", "森の中にひっそりとたたずむジンジャを発見して、ナインテイルのカンヌシかミコが旅の無事を祈ってくれる。パーティー全員に【不死なる炎+5】がかかり、最終イベントに入るまで、死亡判定に自動的に成功するようになる。この効果が続いている間、保険を適用した状態で死亡判定に突入しても帰還せずにその戦闘を継続することが可能。", "" + "食人植物の花粉による回復の泉の幻影。パーティーメンバーのHP・MP・FPのいずれかが減少している場合このイベントは拒否できない。パーティーの誰かが" + (self.$getRandomDiff(dice1, 16, d, 0)) + "に成功しない限り食人植物の群生地にふらふらと入ってしまい、全員が" + (self.$getRandomDiff(dice1, 16, d, 1)) + "の「切り」ダメージを受ける。パーティーにフラウがいれば事前に気が付きダメージは受けない"]} - else if ((2)['$===']($case)) {table = ["財宝(カギ・トラップなし)。財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギつき。行動を消費して" + (self.$getRandomDiff(dice1, 22, d, 0)) + "に成功すれば開く)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギなし、トラップつき。行動を消費して" + (self.$getRandomDiff(dice1, 23, d, 0)) + "に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギ、トラップつき。行動を消費して" + (self.$getRandomDiff(dice1, 24, d, 0)) + "に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "ミミックの罠。ランダムなキャラクターに3Dの「切り」ダメージを与える。" + (self.$getRandomDiff(dice1, 25, d, 0)) + "に成功すればこの罠を見抜いて無効化することができ、なおかつ「深度×" + (self.$getRandomDiff(dice1, 25, d, 1)) + "」GPを入手可能。", "" + "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。" + (self.$getRandomDiff(dice1, 26, d, 0)) + "に成功すればこの罠を見抜いて無効化することができる。"]} - else if ((3)['$===']($case)) {table = ["" + (self.$getRandomDiff(dice1, 31, d, 0)) + "に成功すれば獣道を発見し深度が2D増加する。「動物共感」があれば判定不要。", "" + "複雑で迷いそうな密林に迷い込んでしまう。鳥たちが古い言葉の会話を鳴声で再現しており、" + (self.$getRandomDiff(dice1, 32, d, 0)) + "に成功するとこの森について秘密がわかり深度が1D増加する。失敗した場合道に迷い進行度が1D減少する。", "兎たちがこちらを伺っている。「動物共感」があれば道案内をしてくれ、深度が1D増加する。この時マジカルクッキングで作ったものが「キャロットタルト」だった場合は「動物共感」があるのと同じように深度が1D増加するうえ、以後ラウンド開始時にずっとこの効果を得ることができる。", "" + "毒草の群生地だ。直進すると進行度が1D増加するが、" + (self.$getRandomDiff(dice1, 34, d, 0)) + "判定に失敗するとHPとFPに" + (self.$getRandomDiff(dice1, 34, d, 1)) + "の防護点無視ダメージを受ける。遠回りする場合、進行度が1D減少する。", "背の高い草が生い茂っており、岩も多く進みづらい、飛行を能力を持ったPCが先の様子を確認しない限り、移動に手間取り進行度が2D減少する。ペット「スカイサーチャー」や魔法《飛行》《魔法の目》でも確認可能。", "" + "森林火災に遭遇する、進行方向から動物たちが逃げ出していくのが見える。迂回して安全策を通るなら進行度が2D減少する。このまま進む場合シナリオ終了までラウンド開始時に炎により" + (self.$getRandomDiff(dice1, 36, d, 0)) + "の「叩き」ダメージを受ける。"]} - else if ((4)['$===']($case)) {table = ["" + (self.$getRandomDiff(dice1, 41, d, 0)) + "とエンカウント。2ラウンド経過するとキャンディークラウンは戦場全域に《べたべた》をかけて逃亡する。", "" + "動物狩りを楽しんでいた魔族と偶然遭遇してしまう。" + (self.$getRandomDiff(dice1, 42, d, 0)) + "とエンカウント。" + (self.$getRandomDiff(dice1, 42, d, 1)) + "には全員《ぼやけ5》がかかった状態。" + (self.$getRandomDiff(dice1, 42, d, 2)) + "減らしておくこと。", "" + "魔族の偵察隊と遭遇する。" + (self.$getRandomDiff(dice1, 43, d, 0)) + "とエンカウント。オウルセージのうち1体は行動ターンに逃亡して他の魔族に警戒を呼び掛けに行く。これを阻止できなかった場合、以後出現する「分類:魔族」のモンスターは物理攻撃の致傷力+" + (self.$getRandomDiff(dice1, 43, d, 1)) + "、防護点+" + (self.$getRandomDiff(dice1, 43, d, 1)) + "のボーナスを得る。", "" + "木々の間を飛び回る何かに背後から突然襲撃される。" + (self.$getRandomDiff(dice1, 44, d, 0)) + "。ペット「スカイサーチャー」か「広視界」がなければ必ず相手の先制攻撃になり、その際PC先手で進行中の場合もモンスター先手に変更される。", "" + "果物を採取する少女達を発見する。しかしよく見ると血塗れの鋏を持つ人形だった!" + (self.$getRandomDiff(dice1, 45, d, 0)) + "とエンカウント。パーティーメンバー全員が" + (self.$getRandomDiff(dice1, 45, d, 1)) + "で判定を行い、成功すれば回避可能。", "" + "前方の森に何か違和感を感じる。周囲に擬態していた" + (self.$getRandomDiff(dice1, 46, d, 0)) + "。「視覚-5」か「第六感」の判定に成功していなければ必ず相手の先制攻撃になり、その際PC先手で進行中の場合もモンスター先手に変更される。判定成功時は深度を1D減少させて戦闘回避も可能。"]} - else if ((5)['$===']($case)) {table = ["" + "良い香りが周囲に満ちていく。闘争心を失わせるキノコの香りで、戦闘中だった場合敵味方ともに剣を収め強制的に戦闘終了となる。また、以後シナリオ終了まで「平和愛好:専守防衛」の特徴を得る。(意志判定に失敗するとイニシアチブ判定に自動敗北)この効果を受けたくない場合、" + (self.$getRandomDiff(dice1, 51, d, 0)) + "のいずれかの判定に成功する必要がある。この判定には「鋭敏味覚」のレベル分ボーナスを得る。", "" + "美味しそうな果実が生っているのを見つける。意志判定に失敗するとすぐに食べてしまうが(「グルメ」の場合「意志-3」)興奮作用のある実のため頭に血が昇ってしまう。HPとFPが" + (self.$getRandomDiff(dice1, 52, d, 0)) + "回復するが「バーサーク」の特徴を得る。", "" + "巧妙なベアトラップが仕掛けてある。ランダムなキャラクター1人(モンスターも含む)に" + (self.$getRandomDiff(dice1, 53, d, 0)) + "の「切り」ダメージを与える。以後ターンの最初に" + (self.$getRandomDiff(dice1, 53, d, 1)) + "の判定に成功するまで移動不可。本人か隣接したキャラクターが行動を消費して" + (self.$getRandomDiff(dice1, 53, d, 2)) + "で判定することでも解除可能。", "" + "突然のスコールに見舞われる。" + (self.$getRandomDiff(dice1, 54, d, 0)) + "判定を行い、失敗すると体温が奪われFPに" + (self.$getRandomDiff(dice1, 54, d, 1)) + "のダメージを受ける。リザードとワイズマンはこの効果を受けない。<気象学-3>に成功すればあらかじめ雨宿りができ、この効果を受けない。森林イベント3-6の山火事が起きていた場合、その効果は消滅する。", "" + "巨大食虫植物の群生地に足を踏み入れてしまう。" + (self.$getRandomDiff(dice1, 55, d, 0)) + "で判定を行い、失敗するとランダムで1人が植物に飲み込まれてしまう。強酸により" + (self.$getRandomDiff(dice1, 55, d, 1)) + "の「叩き」ダメージを受け、金属でない鎧を装備していた場合1Dで1、2が出ると破壊される。", "" + "すさまじい悪臭を放つ巨大な花。" + (self.$getRandomDiff(dice1, 56, d, 0)) + "判定に失敗したキャラクターはシナリオ終了まで知力が" + (self.$getRandomDiff(dice1, 56, d, 1)) + "点減少する(最大MPは変化しないものとする)また、対応技能が<技師/魔道具>以外のペットは匂いで気絶してシナリオ終了まで効果を得られなくなる。"]} - else if ((6)['$===']($case)) {table = ["魔族の狩りにより深く傷ついたクレッセントムーンを発見する。<応急処置-7>か<獣医-3>の判定に成功すると、クレッセントムーンの傷は完治し、クレッセントムーン(ペット)を手に入れることができる。", "" + "少し開けた原っぱで、フラウのダンスパーティーに誘われる。このイベントが発生するとモンスターは消滅する" + (self.$getRandomDiff(dice1, 62, d, 0)) + "で判定を行い、成功するとそこにキノコが生え始める。フラウは協力してくれたお礼にこのキノコを分けてくれる。大変貴重な珍味で、持ち帰ると「(1D+成功度)×" + (self.$getRandomDiff(dice1, 62, d, 1)) + "」GPになる。", "" + "フラウたちが「森ガールファッションコンテスト」を開催しており、その助っ人を依頼される。このイベントが発生するとモンスターは消滅する。" + (self.$getRandomDiff(dice1, 63, d, 0)) + "に成功すると自然と一体化したファッションが高評価を受け、お礼に" + (self.$getRandomDiff(dice1, 63, d, 1)) + "(装飾品)を入手できる。", "" + "霊樹の花にたまった水が魔力を帯びている。<神秘学>に成功するとそれにポーションとしての効果があることが分かる。1Dを振り、その出目に対応したポーションが手に入る。\n" + "----------\n" + (self.$getRandomDiff(dice1, 64, d, 0)) + "\n" + "----------", "迷子のフラウを見つける。イベント表で他のフラウに出会った場合そのフラウと知り合いで、お礼に財宝を渡してくれる。財宝の中身は1段階高い深度の財宝テーブルを使用する。フラウに出会えずシナリオをクリアした場合も、1段階低い深度の財宝テーブルの中身をくれる。", "ランダムに選んだPC1人が、うっかり泉に武器を落としてしまう。すると女神が出て落とした武器と同じ技能で扱うもので、価格が一ランク上のアイテムを落としたのかと聞いてくる。落とした武器と提示してきた武器の差額を1000で割った値をペナルティとして意志判定を行うこと。「守銭奴」はペナルティが2倍になるが、「正直」の場合は自動的に成功になる。成功すると正直に答え提示されたアイテムを両方手に入れることができるが、失敗すると嘘をついて女神を怒らせてしまい、武器を失う。落とした武器が10000GP以上だった場合や、それ以上の武器がアイテムリストになかった場合、自動的にアイテムは返却してもらえる。"]} - else {table = nil};} - else if ((6)['$===']($case)) { - area = "墓地"; - $case = dice2; - if ((1)['$===']($case)) {table = ["回復の泉。PC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。", "" + "アズマ風の墓石が佇んでいる。<地域知識/アズマ><地域知識/カベノナカ-4>のいずれかで判定を行う。成功すると正しくお参りを行うことができ、HP、FP、MPの全てが" + (self.$getRandomDiff(dice1, 12, d, 0)) + "回復する。失敗すると霊を怒らせ、全員がFPに" + (self.$getRandomDiff(dice1, 12, d, 1)) + "のダメージを受ける。", "" + "墓守の休憩所を見つける。様々な薬草が置いてあり、行動を消費して<応急処置>を行うことができる。成功すれば" + (self.$getRandomDiff(dice1, 13, d, 0)) + "のHPが回復する。", "ヒガンバナの世話をするフラウと出会う。100GPを払うと「ヒガンバナの毒」を武器に塗ってもらうことができる。最終ダメージに+2の効果があり、武器の通じない「ファントム」のようなモンスターにも武器による攻撃が有効になる。この効果はシナリオ終了時まで持続する。", "" + "シルヴァテイルのネクロマンサー達が集まって、何やら怪しい儀式をしている。道中で死亡もしくは保険を適用して強制送還されたキャラクターがいれば、" + (self.$getRandomDiff(dice1, 15, d, 0)) + "GPを支払うことで復活させてもらうことができる。それ以外の場合、何か不気味な儀式に不安を感じ、FPを1点消耗する。", "回復の泉があるのだが・・・?パーティーメンバーのHP・MP・FPのいずれかが減少している場合このイベントは拒否できない。HP・MP・FPが完全に回復して気絶や朦朧からも立ち直るが、黄泉の国の水を飲んだことで迷宮から出るまで「分類:アンデッド」となる。回復魔法の効果などは通常の効果があるが、一部の技や魔法で特攻を受ける。《閃光》を受けた際も3Dの防護点無視ダメージを受ける。"]} - else if ((2)['$===']($case)) {table = ["財宝(カギ・トラップなし)。財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギつき。行動を消費して" + (self.$getRandomDiff(dice1, 22, d, 0)) + "に成功すれば開く)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギなし、トラップつき。行動を消費して" + (self.$getRandomDiff(dice1, 23, d, 0)) + "に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "財宝(カギ、トラップつき。行動を消費して" + (self.$getRandomDiff(dice1, 24, d, 0)) + "に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", "" + "ミミックの罠。ランダムなキャラクターに3Dの「切り」ダメージを与える。" + (self.$getRandomDiff(dice1, 25, d, 0)) + "に成功すればこの罠を見抜いて無効化することができ、なおかつ「深度×" + (self.$getRandomDiff(dice1, 25, d, 1)) + "」GPを入手可能。", "" + "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。" + (self.$getRandomDiff(dice1, 26, d, 0)) + "に成功すればこの罠を見抜いて無効化することができる。"]} - else if ((3)['$===']($case)) {table = ["" + "なにもなさそうな道だが、" + (self.$getRandomDiff(dice1, 31, d, 0)) + "で判定を行う。成功するとちょっとなにかでそうな近道を発見する。深度が2D増加するが、「臆病」なキャラクターは意志判定が必要。", "舗装されていて通りやすい道が続く。深度が1D増加する。途中には祠があり、マジカルクッキングで作った食べ物を持っていた場合、それをお供えすることでHP・MP・FPが全回復する。", "" + "道が途切れ、草が伸び放題の荒れ地に出る。進むには骨が折れそうだ。" + (self.$getRandomDiff(dice1, 33, d, 0)) + "に成功すれば深度+2。失敗するとFPに" + (self.$getRandomDiff(dice1, 33, d, 1)) + "点のダメージを受ける。", "どこまでも卒塔婆とススキしかない・・・同じ景色が続き進んでいるか怪しくなる。2分の1の確率で深度が1D減少する。「方向感覚」があればこの効果は無視できる。", "地面から突如骨の手が伸び移動を邪魔する。全員「移動力+5」を目標値に判定を行い、失敗したキャラクターの人数だけ深度が減少する。【死者に鞭】を持つネクロマンサーがいればこの効果は無視できる。", "" + "先へ進む道には死者の呪いが満ちている。そのまま進むと深度が1D増加するが、以後全ての判定の目標値に" + (self.$getRandomDiff(dice1, 36, d, 0)) + "のペナルティを受ける。遠回りをすると悪影響は受けないが深度が1D減少する。【死者に鞭】を持つネクロマンサーがいれば直進しても悪影響を受けない。"]} - else if ((4)['$===']($case)) {table = ["" + (self.$getRandomDiff(dice1, 41, d, 0)) + "とエンカウント。2ラウンド経過するとキャンディークラウンは戦場全域に《べたべた》をかけて逃亡する。", "" + "朽ちていた骨が突如起き上がり襲いかかる。" + (self.$getRandomDiff(dice1, 42, d, 0)) + "。「第六感」の判定に成功していなければ必ず相手の先制攻撃になり、その際PC先手で進行中の場合もモンスター先手に変更される。", "" + "不吉な歌を口すざみ、ステップを踏みながらかわいらしい少女が近づいてくる。" + (self.$getRandomDiff(dice1, 43, d, 0)) + "とエンカウント。" + (self.$getRandomDiff(dice1, 43, d, 1)) + "の「華劇」は最初から" + (self.$getRandomDiff(dice1, 43, d, 2)) + "段階進行している。", "" + "遠くから不吉な進軍の音を聞く。PCは全員「聴覚-4」か「第六感」で判定を行うこと。ネクロマンサーは知力判定を行ってもよい。誰か1人でも判定に成功すれば、魔将グレイヴディガーの軍勢が迫っているのを知り、深度を1D減少させてひとまず逃亡することができる。全員判定に失敗してしまうとPCは魔将グレイヴディガー(CL200)とその配下である無数の亡霊騎士団と相対することになる。" + (self.$getRandomDiff(dice1, 44, d, 0)), "" + "貴族の棺とそれを守る人形。" + (self.$getRandomDiff(dice1, 45, d, 0)) + "とエンカウント。棺の中には貴金属が入っており、" + (self.$getRandomDiff(dice1, 45, d, 1)) + "を倒せば「深度×" + (self.$getRandomDiff(dice1, 45, d, 2)) + "」GPを入手可能。", "" + "壁に埋まった10mはあろうかという巨大な蛇の骨が、動き出し襲いかかってくる。" + (self.$getRandomDiff(dice1, 46, d, 0)) + "。"]} - else if ((5)['$===']($case)) {table = ["" + "PC全員に墓から突然幻影が襲いかかる。" + (self.$getRandomDiff(dice1, 51, d, 0)) + "判定に失敗すると気を取られ「受け」か「止め」を1回消費する。「受け」も「止め」も行えない場合腰を抜かして転倒してしまう。", "" + "ギロチンが突如PCのうちランダムに1人に目掛けて落ちてくる。盾の受動防御を無視した" + (self.$getRandomDiff(dice1, 52, d, 0)) + "に失敗すると" + (self.$getRandomDiff(dice1, 52, d, 1)) + "の「切り」ダメージを受ける。", "" + "用途不明の建物に迷い込む。" + (self.$getRandomDiff(dice1, 53, d, 0)) + "に成功すると、その建物が火葬場であると判明し、すぐに脱出できる。判定に失敗するとPC全員が火炎で" + (self.$getRandomDiff(dice1, 53, d, 1)) + "の「叩き」ダメージを受ける。", "" + "墓石が動き出し中から何かが出てこようとしている。行動を消費して" + (self.$getRandomDiff(dice1, 54, d, 0)) + "で判定を行い、成功すればなにも起こらない。失敗した場合、探索中に倒されたモンスターの中で最もCLが高いモンスターと再度エンカウントする(深度判定終了後)該当するモンスターが存在しなかった場合、" + (self.$getRandomDiff(dice1, 54, d, 1)) + "が出現する。", "" + "金の亡者が群がってくる。「2D×" + (self.$getRandomDiff(dice1, 55, d, 0)) + "」GPを払うと支払うと満足して去っていくが、支払を拒否した場合はPC全員が" + (self.$getRandomDiff(dice1, 55, d, 1)) + "の「叩き」ダメージを受ける。【死者に鞭】を持つネクロマンサーがいればこの効果は無視できる。", "ランダムなPC1人の武器が死者の怨念を吸い取り魔剣となる。魔剣は致傷力に+2のボーナスを得るが、所有者は最大HPが5点減少し、不利な特徴「バーサーク」「残忍」を持つようになる。魔剣には「マジックパウダー:無」が常にかかっているものとみなす。魔剣となった武器は売却不可能で、不要な場合捨てるしかない。すでに魔剣になっている武器と、グラントの宝剣は魔剣にはならない。"]} - else if ((6)['$===']($case)) {table = ["" + "雷が突然鳴り響く。その場にいる全てのキャラクター(モンスター含む)は全員3Dを振り、金属鎧を着ているキャラクターはその値に+3する。この値が一番高いキャラクターは電撃により" + (self.$getRandomDiff(dice1, 61, d, 0)) + "の「叩き」ダメージを受ける(金属鎧の防護点を無視)", "" + "タルの上に腰かけ酒を口に運び続ける、減ることのない酒に向き合うスケルトンがいる。「どうだ、お前らも飲んでいくか?」と声をかけられる。酒を飲む場合、" + (self.$getRandomDiff(dice1, 62, d, 0)) + "判定を4回連続で行うこと。全て成功した場合は、「ついに酒が切れたか、最後の晩酌に付き合ってもらって感謝する」と感謝を述べて財宝を渡してくれる。財宝の中身は1段階高い深度の財宝テーブルを使用する。途中で1度でも失敗した場合、酒に悪酔いしてシナリオ終了まで全ての判定に-1のペナルティを受ける。", "" + "妖しい輝きを放つ宝石を発見する。手にとると呪われてシナリオ終了まで全ての判定に" + (self.$getRandomDiff(dice1, 63, d, 0)) + "のペナルティを受ける。手にとらない場合は意志判定に成功しなければならず、「守銭奴」「好奇心」「直情」がある場合意志判定に-3のペナルティを受ける(不利な特徴が複数ある場合修正は累積する)無事持ち帰った場合呪いは解け、" + (self.$getRandomDiff(dice1, 63, d, 1)) + "GPで売却できる", "" + "朽ちたギアの墓場。まだ使えるギアがあるかもしれない。<技師/魔道具>の判定を行い、5成功以上ならアイテムが入手可能。アイテムの内容は1Dで決定する。\n" + "----------\n" + (self.$getRandomDiff(dice1, 64, d, 0)) + "\n" + "----------", "" + "うすら寒い気配の漂う川辺に出る。川辺には渡し守らしき、ローブをかぶった2人の少女がいる。1人あたり" + (self.$getRandomDiff(dice1, 65, d, 0)) + "GPを支払えば深度が1D増加する。支払を拒否した場合は" + (self.$getRandomDiff(dice1, 65, d, 1)) + "。", "" + "『千ノ戦イデ千ノ勝チ方ヲ知ル者、ココニ眠ル』と刻まれた棺を見つける。「好奇心」「直情」のキャラクターは開けずにいるには意志判定が必要。棺を開けた場合は" + (self.$getRandomDiff(dice1, 66, d, 0)) + "。勝利した場合、通常のドロップとは別に" + (self.$getRandomDiff(dice1, 66, d, 1)) + "(《戻る武器》は無し)が必ず手に入る。\n" + "----------\n" + (self.$getRandomDiff(dice1, 66, d, 2)) + "\n" + "----------"]} - else {table = nil};} - else {return nil}; - return [area, dif, table]; - }, $GurpsFW_getRandomEvent$35.$$arity = 3); - return (Opal.def(self, '$getRandomDiff', $GurpsFW_getRandomDiff$36 = function $$getRandomDiff(dice1, dice23, dif, index) { - var self = this, table = nil, $case = nil, result = nil; - - - table = []; - $case = dice1; - if ((1)['$===']($case)) {table = [[12, [["1", "2", "3", "4"]]], [13, [["<植物学>か<動植物知識-3>", "<植物学-2>か<動植物知識-5>", "<植物学-4>か<動植物知識-7>", "<植物学-8>か<動植物知識-11>"], ["5", "10", "15", "20"]]], [22, [["<鍵開け-3>", "<鍵開け-5>", "<鍵開け-7>", "<鍵開け-11>"]]], [23, [["<罠-3>", "<罠-5>", "<罠-7>", "<罠-11>"]]], [24, [["<罠-3><鍵開け-3>", "<罠-5><鍵開け-5>", "<罠-7><鍵開け-7>", "<罠-11><鍵開け-11>"]]], [25, [["<罠-5>", "<罠-5>", "<罠-7>", "<罠-11>"], ["100", "200", "300", "500"]]], [26, [["<罠-5>", "<罠-5>", "<罠-7>", "<罠-11>"]]], [34, [["<軽業>", "<軽業-2>", "<軽業-4>", "<軽業-8>"], ["3D", "4D", "6D", "10D"]]], [35, [["HP30", "HP60", "HP90", "HP150"]]], [36, [["「知力-1」", "「知力-2」", "「知力-3」", "「知力-5」"]]], [41, [["キャンディークラウン(CL40)", "キャンディークラウン(CL40)「1D-3」匹(最低1匹)", "キャンディークラウン(CL40)「1D-2」匹(最低1匹)、出目が6だった場合ゴールデンクラウン(CL177)1匹", "ゴールデンクラウン(CL177)"]]], [42, [["ベルセルク(CL7)×3とエンカウント。", "ベルセルク(CL7)×3とエンカウント。", "ベルセルク(CL15)×3とエンカウント、命中+10、ST24、HP+40、FP+8。", "ベルセルク(CL25)×3とエンカウント、命中+20、ST32、HP+90、FP+18。"], ["争っていたためHPとFPは半減している", "", "", ""]]], [43, [["ロックバトラー(CL6)×3とエンカウント。", "ガーゴイル(CL10)×3とエンカウント、【ハイドインシャドウ】を追加。", "ガーゴイル(CL15)×3とエンカウント、以下のように強化。", "ザッハーク(CL39)×2とエンカウント。"], ["", "", "" + "\n" + " ----------\n" + " ガーゴイル(CL15) 魔族/岩石\n" + " ST20 DX13 IQ13 HT18 HP63 FP33\n" + " 受防3 防護18 移動6(飛行) よけ6 受け8 止め-\n" + " ガーゴイルの戦槌16(両手メイス)・・・命中20 3d+8「叩き」 重量5\n" + " ・ニンジャ\n" + " 【ハイドインシャドウ】\n" + " ・グラント\n" + " 【グランドインペイル+3】【エクステンドインペイル】【トルマリンスパーク+3】\n" + " 【チェーンスパーク】【グラビティブレイク+4】【グラビティパニッシュ】\n" + " ----------", ""]]], [44, [["デビルホール(CL18)とエンカウント。", "デビルホイール(CL22)とエンカウント、防護点+2、HP+12。", "デビルホイール(CL26)とエンカウント、防護点+4、HP+24。", "ムスペルヘイムの獣(CL65)とエンカウント。"], ["5D", "6D", "8D", "12D"]]], [45, [["3D", "4D", "5D", "6D"], ["ヘルハウンド(CL12)、インプ(CL3)×2", "ヘルハウンド(CL12)×2", "フェニックス(CL25)、ヘルハウンド(CL12)×2", "火龍ヘルブレイザー(CL50)、ケルベロス(CL33)"]]], [46, [["1D", "1D+1", "2D", "3D"], ["アイスメイデン(CL10)、アイスリザード(CL7)、スノー(CL3)", "カロン(CL12)×2、アイスメイデン(CL10)", "クリスタルビースト(CL25)×2", "氷龍グレイシャル(CL65)"]]], [52, [["3ヘクス", "5ヘクス", "7ヘクス", "12ヘクス"], ["3D", "5D", "7D", "12D"]]], [53, [["「生命力-4」", "「生命力-6」", "「生命力-8」", "「生命力-12」"]]], [54, [["2D", "3D", "5D", "10D"]]], [55, [["「よけ」", "「よけ-2」", "「よけ-4」", "「よけ-8」"], ["5D", "7D", "9D", "15D"]]], [61, [["<天文学-5>", "<天文学-5>", "<天文学-7>", "<天文学-11>"], ["レア装飾品「星の怒り」かレア魔法《彗星》(好きな方)", "レア装飾品「星の怒り」かレア魔法《彗星》(好きな方)", "レア魔法《流星群》", "レア魔法《滅びの矢》"]]], [62, [["2", "3", "4", "5"]]], [63, [["7", "9", "11", "15"]]], [64, [["50", "100", "150", "200"]]], [66, [["《粉砕3》", "《粉砕4》", "《粉砕6》", "《粉砕10》"], ["HP30", "HP60", "HP90", "HP150"]]]]} - else if ((2)['$===']($case)) {table = [[12, [["2D", "3D", "4D", "6D"]]], [13, [["<錬金術>か<医師-3>", "<錬金術-2>か<医師-5>", "<錬金術-4>か<医師-7>", "<錬金術-8>か<医師-11>"]]], [16, [["3000GP", "4000GP", "6000GP", "10000GP"], ["5000GP", "10000GP", "20000GP", "40000GP"], ["8D", "10D", "15D", "20D"]]], [22, [["<鍵開け-3>", "<鍵開け-5>", "<鍵開け-7>", "<鍵開け-11>"]]], [23, [["<罠-3>", "<罠-5>", "<罠-7>", "<罠-11>"]]], [24, [["<罠-3><鍵開け-3>", "<罠-5><鍵開け-5>", "<罠-7><鍵開け-7>", "<罠-11><鍵開け-11>"]]], [25, [["<罠-5>", "<罠-5>", "<罠-7>", "<罠-11>"], ["100", "200", "300", "500"]]], [26, [["<罠-5>", "<罠-5>", "<罠-7>", "<罠-11>"]]], [31, [["<身振り-3><演技><演劇>", "<身振り-5><演技-2><演劇-2>", "<身振り-7><演技-4><演劇-4>", "<身振り-11><演技-8><演劇-8>"]]], [32, [["<モンスター知識-5>か<地域知識/カベノソト-3>", "<モンスター知識-7>か<地域知識/カベノソト-5>", "<モンスター知識-9>か<地域知識/カベノソト-7>", "<モンスター知識-13>か<地域知識/カベノソト-11>"]]], [33, [["に等しい", "×2の", "×3の", "×5の"]]], [34, [["<登攀>", "<登攀-2>", "<登攀-4>", "<登攀-8>"]]], [35, [["「敏捷力」", "「敏捷力-2」", "「敏捷力-4」", "「敏捷力-8」"], ["6D", "8D", "10D", "15D"]]], [36, [["「知力-5」", "知力-6", "「知力-7」", "「知力-9」"]]], [41, [["キャンディークラウン(CL40)", "キャンディークラウン(CL40)「1D-3」匹(最低1匹)", "キャンディークラウン(CL40)「1D-2」匹(最低1匹)、出目が6だった場合ゴールデンクラウン(CL177)1匹", "ゴールデンクラウン(CL177)"]]], [42, [["ガーゴイル(CL10)とエンカウント", "ガーゴイル(CL15)とエンカウント、以下のように強化", "ザッハーク(CL39)とエンカウント", "ラダマンティスの蛇(CL50)×2とエンカウント、必ず敵の先制攻撃"], ["", "" + "\n" + " ----------\n" + " ガーゴイル(CL15) 魔族/岩石\n" + " ST20 DX13 IQ13 HT18 HP63 FP33\n" + " 受防3 防護18 移動6(飛行) よけ6 受け8 止め-\n" + " 宝石への命中判定ペナルティは-10\n" + " ガーゴイルの戦槌16(両手メイス)・・・命中20 3d+8「叩き」 重量5\n" + " ・ニンジャ\n" + " 行動:【ハイドインシャドウ】 FP1 姿を消す 「視覚-5」で発見可能\n" + " ・グラント\n" + " 行動:【グランドインペイル+3】+【エクステンドインペイル+1】(両手メイス) FP10\n" + " 3D+8「叩き」 受動防御無視「よけ」のみ 半径3ヘクス攻撃 射程5\n" + " 行動:【トルマリンスパーク+2】+【チェーンスパーク】(両手メイス) FP7\n" + " 3D+8「叩き」 命中もしくは「受け」「止め」時に電撃で2D+2の追加ダメージ\n" + " 行動:【グラビティブレイク+2】+【グラビティパニッシュ】(両手メイス) FP7\n" + " 3D+13「叩き」 「荷重レベル+3」の回避ペナルティ 命中後1ターンペナルティ持続\n" + " ----------", "", ""]]], [43, [["スターゲイザー(CL10)、ウイングシレイブ(CL4)", "スターゲイザー(CL10)×2、ポイズンリリー(CL7)", "コスモロジスト(CL20)×2、オウルコマンダー(CL18)", "栄光の天使(CL60)、ヴァルキリー(CL20)×2"]]], [44, [["<文学>か<礼儀作法-3>", "<文学-3>か<礼儀作法-6>", "<文学-6>か<礼儀作法-9>", "<文学-12>か<礼儀作法-15>"], ["ヤシャ(CL10)、スケルトン(CL3)×2", "ヤシャ(CL15、ST17、HP43、FP28、命中22に強化)、ゴースト(CL10)×2", "ヤシャ(CL25、ST23、HP63、FP38、命中30に強化)、カロン(CL12)×2", "コンゴウ(CL60)×2"]]], [45, [["ヘルハウンド(CL12)", "ケルベロス(CL33)", "火龍ヘルブレイザー(CL50)", "煉獄龍バーガトリ(CL100)"]]], [46, [["ゴーレム(CL12)", "ミスリルゴーレム(CL27)", "アダマンゴーレム(CL45)", "カラクリヒメショウグン(CL75)"], ["2D", "3D", "4D", "4D"]]], [51, [["「よけ」", "「よけ-2」", "「よけ-4」", "「よけ-8」"], ["1D+3", "2D+1", "2d+3", "4D"], ["「生命力」", "「生命力-2」", "「生命力-4」", "「生命力-8」"], ["1D", "2D", "3D", "5D"]]], [52, [["「生命力-3」", "「生命力-5」", "「生命力-7」", "「生命力-11」"]]], [53, [["HPを2倍に計算しCLは10とする", "HPを3倍に計算しCLは15とする", "HPを4倍に計算しCLは20とする", "HPを6倍に計算しCLは30とする"]]], [54, [["「意志」", "「意志-2」", "「意志-4」", "「意志-8」"]]], [56, [["「現在の深度÷2」以下のCLのモンスター", "「現在の深度」以下のCLのモンスター", "「現在の深度×1.5」以下のCLのモンスター", "CL80以下のモンスター(ネームド以外)"]]], [62, [["6", "7", "8", "10"], ["9", "10", "11", "14"], ["12", "13", "14", "16"]]], [64, [["<医師>か<考古学>", "<医師-2>か<考古学-2>", "<医師-4>か<考古学-4>", "<医師-8>か<考古学-8>"]]], [65, [["", "", "、ゴールデンクラウン(CL177)", "、ゴールデンクラウン(CL177)×2"]]], [66, [["30", "60", "90", "150"], ["「深度÷2」", "「深度」", "「深度×1.5」", "「深度×2」"]]]]} - else if ((3)['$===']($case)) {table = [[12, [["「意志」", "「意志-2」", "「意志-4」", "「意志-7」"]]], [13, [["2D", "3D", "4D", "6D"]]], [14, [["1D", "2D", "3D", "5D"]]], [15, [["500", "1000", "2000", "4000"]]], [16, [["500", "1000", "2000", "4000"]]], [22, [["<鍵開け-3>", "<鍵開け-5>", "<鍵開け-7>", "<鍵開け-11>"]]], [23, [["<罠-3>", "<罠-5>", "<罠-7>", "<罠-11>"]]], [24, [["<罠-3><鍵開け-3>", "<罠-5><鍵開け-5>", "<罠-7><鍵開け-7>", "<罠-11><鍵開け-11>"]]], [25, [["<罠-5>", "<罠-5>", "<罠-7>", "<罠-11>"], ["100", "200", "300", "500"]]], [26, [["<罠-5>", "<罠-5>", "<罠-7>", "<罠-11>"]]], [31, [["<登攀>", "<登攀-2>", "<登攀-4>", "<登攀-7>"]]], [32, [["<運転/アカシックホイール>", "<運転/アカシックホイール-2>", "<運転/アカシックホイール/-4>", "<運転/アカシックホイール-7>"]]], [33, [["<生存>", "<生存-2>", "<生存-4>", "<生存-7>"]]], [35, [["<神秘学>", "<神秘学-2>", "<神秘学-4>", "<神秘学-7>"]]], [36, [["「体力」", "「体力-2」", "「体力-4」", "「体力-8」"]]], [41, [["キャンディークラウン(CL40)", "キャンディークラウン(CL40)「1D-3」匹(最低1匹)", "キャンディークラウン(CL40)「1D-2」匹(最低1匹)、出目が6だった場合ゴールデンクラウン(CL177)1匹", "ゴールデンクラウン(CL177)"]]], [42, [["ウイングスレイブ(CL4)×2とエンカウント", "ウイングスレイブ(CL8)×2とエンカウント、致傷力+1、命中+2、HP+8", "ウイングスレイブ(CL12)×2とエンカウント、致傷力+3、命中+6、HP+16", "ガルーダ(CL40)×2とエンカウント"]]], [43, [["ブラックナイト(CL10)、ソルジャー(CL4)×2、オーク(CL3)", "ブラックナイト(CL10)×2、ハタモト(CL10)、サーバント(CL5)", "サーバントマスター(CL35)、ヘルハウンド(CL12)×2", "ジェネラル(CL55)、サーバントマスター(CL35)、ケルベロス(CL33)"]]], [44, [["ガーゴイル(CL10)とエンカウント", "ガーゴイル(CL15)とエンカウント、以下のように強化", "ザッハーク(CL39)とエンカウント", "銀河龍ラクテア(CL90)とエンカウント"], ["ガーゴイル", "ガーゴイル", "ザッハーク", "銀河龍ラクテア"], ["", "" + "\n" + " ----------\n" + " ガーゴイル(CL15) 魔族/岩石\n" + " ST20 DX13 IQ13 HT18 HP63 FP33\n" + " 受防3 防護18 移動6(飛行) よけ6 受け8 止め-\n" + " 宝石への命中判定ペナルティは-10\n" + " ガーゴイルの戦槌16(両手メイス)・・・命中20 3D+8「叩き」 重量5\n" + " ・ニンジャ\n" + " 行動:【ハイドインシャドウ】 FP1 姿を消す 「視覚-5」で発見可能\n" + " ・グラント\n" + " 行動:【グランドインペイル+3】+【エクステンドインペイル+1】(両手メイス) FP10\n" + " 3D+8「叩き」 受動防御無視「よけ」のみ 半径3ヘクス攻撃 射程5\n" + " 行動:【トルマリンスパーク+2】+【チェーンスパーク】(両手メイス) FP7\n" + " 3D+8「叩き」 命中もしくは「受け」「止め」時に電撃で2D+2の追加ダメージ\n" + " 行動:【グラビティブレイク+2】+【グラビティパニッシュ】(両手メイス) FP7\n" + " 3D+13「叩き」 「荷重レベル+3」の回避ペナルティ 命中後1ターンペナルティ持続\n" + " ----------", "", ""]]], [45, [["カボチャの魔女(CL8)×2とエンカウント", "カボチャの魔女(CL10)×2とエンカウント、《カボチャの雨》の致傷力+1Dされ、生命力-1で気絶判定、HP+2", "カボチャの魔女(CL14)×2とエンカウント、《カボチャの雨》の致傷力+2Dされ生命力-3で気絶判定、HP+6", "カボチャの大魔女(CL35)×2とエンカウント"], ["", "", "", "" + "\n" + " ----------\n" + " カボチャの大魔女(CL35) 魔族\n" + " ST11 DX15 IQ20 HT15 HP120 MP160 FP81\n" + " 受防1 防護4 移動10(飛行)よけ10 受け- 止め-\n" + " <戦術20> イニシアチブ値12\n" + " ・ソーサルギア\n" + " 《韋駄天》《火炎武器》《氷結武器》《電撃武器》《べたべた》\n" + " 《音噴射》《集団誘眠》《粉砕8》\n" + " ・センチュリオン\n" + " イニシ:【ファーストムーブ】(戦術) FP3 イニシアチブ判定に自動的に勝利\n" + " ・アークメイジ\n" + " ダメージ後:【マナシールド+2】 FP3 HPダメージをMPで肩代わり 1ターンに3回まで\n" + " 支援:【ダブルキャスト】 FP5 次の行動ターンに連続で魔法が使用可能\n" + " 行動:【テンペスト】 FP7 他の魔法に追加使用 「通常」の魔法や呪術を周囲半径10ヘクスに CT:シナリオ\n" + " ・オリジナル魔法\n" + " 《カボチャの大災厄》(パンプキンカタストロフ) 通常 消費30\n" + " 半径5ヘクスの敵味方を区別せず6Dの「叩き」ダメージを与える。\n" + " 隙間なく降り注ぐカボチャは回避不可能で、\n" + " 1点でもダメージを受けると「生命力-6」判定を行い、失敗すると気絶する\n" + " ----------"]]], [46, [["フェニックス(CL25)", "フェニックス(CL30)", "フェニックス(CL35)", "煉獄フェニックス(CL85)"], ["", "、クチバシの致傷力+2、命中+4、アクセルギア【ディザスタープログラム】を追加", "、クチバシの致傷力+4、命中+8、アクセルギア【ディザスタープログラム】を追加", ""]]], [51, [["「敏捷力-3」", "「敏捷力-4」", "「敏捷力-5」", "「敏捷力-7」"], ["3D+5", "5D+5", "7D+5", "11D+5"]]], [52, [["<登攀>", "<登攀-2>", "<登攀-4>", "<登攀-7>"], ["4D", "6D", "8D", "12D"]]], [53, [["「敏捷力」", "「敏捷力-2」", "「敏捷力-4」", "「敏捷力-7」"], ["", "", "", "判定失敗時さらに最も単価の高い消耗品を自分のヘクスに落とす(拾うには行動消費)"]]], [54, [["", "", "《べたべた》判定後、『銀糸の甲殻』アルゲントゥム(CL40・ネームド)とエンカウント。", "《べたべた》判定後、『銀糸の甲殻』アルゲントゥム(CL50・ネームド)×2とエンカウント、あらゆる致傷力+2D、命中判定+8。"]]], [55, [["<生存-3>", "<生存-5>", "<生存-7>", "<生存-11>"], ["4D", "5D", "6D", "8D"]]], [56, [["防護点2、HP80", "防護点4、HP120", "防護点6、HP160", "防護点8、HP320"]]], [61, [["-2", "-3", "-4", "-6"]]], [62, [["100", "200", "300", "500"]]], [63, [["", "", "1Dを2回振って属性決定、2回攻撃で破壊。", "1Dを3回振って属性決定、3回攻撃で破壊。"]]], [64, [["「ジャンボ串焼き」", "「ジャンボ串焼き」「グラント風香草焼き」のいずれか(選択可能)", "「ジャンボ串焼き」「グラント風香草焼き」「ドラゴンステーキ」のいずれか(選択可能)", "「ジャンボ串焼き」「グラント風香草焼き」「ドラゴンステーキ」「マツザカスペシャル」のいずれか(選択可能)"]]], [65, [["<植物学><医師><動植物知識-3>", "<植物学-2><医師-2><動植物知識-5>", "<植物学-4><医師-4><動植物知識-7>", "<植物知識-7><医師-7><動植物知識-11>"], ["100", "200", "300", "500"]]], [66, [["「視覚-5」か<武具屋>", "「視覚-7」か<武具屋-2>", "「視覚-9」か<武具屋-4>", "「視覚-13」か<武具屋-7>"], ["10000", "20000", "30000", "60000"]]]]} - else if ((4)['$===']($case)) {table = [[12, [["1D", "2D", "3D", "5D"]]], [16, [["<毒物-5>", "<毒物-7>", "<毒物-9>", "<毒物-13>"], ["1D", "2D", "3D", "5D"]]], [22, [["<鍵開け-3>", "<鍵開け-5>", "<鍵開け-7>", "<鍵開け-11>"]]], [23, [["<罠-3>", "<罠-5>", "<罠-7>", "<罠-11>"]]], [24, [["<罠-3><鍵開け-3>", "<罠-5><鍵開け-5>", "<罠-7><鍵開け-7>", "<罠-11><鍵開け-11>"]]], [25, [["<罠-5>", "<罠-5>", "<罠-7>", "<罠-11>"], ["100", "200", "300", "500"]]], [26, [["<罠-5>", "<罠-5>", "<罠-7>", "<罠-11>"]]], [31, [["<生存>", "<生存-2>", "<生存-4>", "<生存-7>"]]], [32, [["<登攀>か<軽業>", "<登攀-2>か<軽業-2>", "<登攀-4>か<軽業-4>", "<登攀-8>か<軽業-8>"]]], [34, [["「視覚-5」", "「視覚-6」", "「視覚-7」", "「視覚-11」"]]], [35, [["「体力-5」", "「体力-6」", "「体力-7」", "「体力-9」"]]], [36, [["<船乗り-3>", "<船乗り-5>", "<船乗り-7>", "<船乗り-11>"]]], [41, [["キャンディークラウン(CL40)", "キャンディークラウン(CL40)「1D-3」匹(最低1匹)", "キャンディークラウン(CL40)「1D-2」匹(最低1匹)、出目が6だった場合ゴールデンクラウン(CL177)1匹", "ゴールデンクラウン(CL177)"]]], [42, [["アシガル(CL4)×2、アイスリザード(CL7)", "ハタモト(CL10)×2、アイスリザード(CL7)", "ナイトライダー(CL15)×2、アイスメイデン(CL10)", "スカーレス(CL38)×3"]]], [43, [["アンブッシュマン(CL5)×3とエンカウント", "アンブッシュマン(CL9)×3とエンカウント、致傷力+2、命中+4、HP+8、FP+4", "アンブッシュマン(CL13)×3とエンカウント、致傷力+4、命中+8、HP16、FP+8", "シャドウストーカー(CL35)×2とエンカウント"], ["「視覚-5」", "「視覚-5」", "「視覚-5」", "「視覚-9」"]]], [44, [["アップルドール(CL12)", "アップルドール(CL12)×2", "アップルドール(CL12)×2とポイズンリリー(CL7)×2", "水陸両用改造型アップルドール(CL30)×2とバリアリーフ(CL27)"]]], [45, [["ジェルスケルトン(CL10)とエンカウント", "ジェルスケルトン(CL15)とエンカウント、ST21、命中+2、防護6、HP+15、FP+10", "ジェルスケルトン(CL20)とエンカウント、ST25、命中+4、防護8、HP+30、FP+20", "ジェルスケルトン(CL40)とエンカウント、ST45、命中+12、防護12、HP+90、FP+60"]]], [46, [["ナイトライダー(CL15)とエンカウント", "ナイトライダー(CL15)×2とエンカウント", "ナイトライダー(CL15)×2、バリアリーフ(CL27)とエンカウント", "ジェネラル(CL55)、バリアリーフ(CL27)とエンカウント、ジェネラルはペット「スワンプランナー」に<乗馬20>で騎乗、移動8"]]], [51, [["「意志-3」", "「意志-4」", "「意志-5」", "「意志-7」"]]], [52, [["<水泳>", "<水泳-2>", "<水泳-4>", "<水泳-8>"], ["8D", "10D", "12D", "20D"]]], [53, [["「よけ」", "「よけ-2」", "「よけ-4」", "「よけ-8」"], ["4D", "6D", "8D", "12D"]]], [54, [["<武具屋>", "<武具屋-2>", "<武具屋-4>", "<武具屋-8>"], ["-2", "-3", "-4", "-6"]]], [55, [["「生命力」", "「生命力-2」", "「生命力-4」", "「生命力-8」"], ["1D", "2D", "3D", "5D"]]], [56, [["<地質学>か「聴覚-7」", "<地質学-2>か「聴覚-9」", "<地質学-4>か「聴覚-11」", "<地質学-8>か「聴覚-15」"], ["5D", "7D", "9D", "13D"]]], [61, [["スワンプランナー", "スワンプランナー", "スワンプランナー", "ゴールデンコーン"], ["<応急処置-4>か<獣医>", "<応急処置-4>か<獣医>", "<応急処置-4>か<獣医>", "<応急処置-10>か<獣医-6>"]]], [62, [["<釣り-5>", "<釣り-7>", "<釣り-9>", "<釣り-13>"], ["3000", "6000", "9000", "18000"]]], [63, [["<歌唱-3>か<作詞>", "<歌唱-5>か<作詞-2>", "<歌唱-7>か<作詞-4>", "<歌唱-11>か<作詞-8>"], ["2D", "3D", "4D", "6D"]]], [64, [["<釣り20>", "<釣り22>", "<釣り24>", "<釣り28>"]]], [65, [["<探索-3>", "<探索-5>", "<探索-7>", "<探索-11>"], ["100", "200", "300", "500"]]], [66, [["<動植物知識>", "<動植物知識-2>", "<動植物知識-4>", "<動植物知識-8>"], ["1000", "2000", "3000", "5000"]]]]} - else if ((5)['$===']($case)) {table = [[13, [["2D", "3D", "4D", "6D"]]], [16, [["<植物学-3>か<動植物知識-5>", "<植物学-5>か<動植物知識-7>", "<植物学-7>か<動植物知識-9>", "<植物学-11>か<動植物知識-13>"], ["3D", "4D", "6D", "9D"]]], [22, [["<鍵開け-3>", "<鍵開け-5>", "<鍵開け-7>", "<鍵開け-11>"]]], [23, [["<罠-3>", "<罠-5>", "<罠-7>", "<罠-11>"]]], [24, [["<罠-3><鍵開け-3>", "<罠-5><鍵開け-5>", "<罠-7><鍵開け-7>", "<罠-11><鍵開け-11>"]]], [25, [["<罠-5>", "<罠-5>", "<罠-7>", "<罠-11>"], ["100", "200", "300", "500"]]], [26, [["<罠-5>", "<罠-5>", "<罠-7>", "<罠-11>"]]], [31, [["<生存>", "<生存-2>", "<生存-4>", "<生存-8>"]]], [32, [["<考古学>", "<考古学-2>", "<考古学-4>", "<考古学-8>"]]], [34, [["「生命力」", "「生命力-2」", "「生命力-4」", "「生命力-8」"], ["1D", "2D", "3D", "5D"]]], [36, [["2D", "3D", "4D", "6D"]]], [41, [["キャンディークラウン(CL40)", "キャンディークラウン(CL40)「1D-3」匹(最低1匹)", "キャンディークラウン(CL40)「1D-2」匹(最低1匹)、出目が6だった場合ゴールデンクラウン(CL177)1匹", "ゴールデンクラウン(CL177)"]]], [42, [["スターゲイザー(CL10)、オーク(CL3)×3", "スターゲイザー(CL10)、ヘルハウンド(CL12)×2", "コスモロジスト(CL20)、ナイトライダー(CL15)×2", "サーバントマスター(CL35)、ガルーダ(40)×2"], ["オーク", "ヘルハウンド", "ナイトライダー", "ガルーダ"], ["スターゲイザーのMPを15点", "スターゲイザーのMPを10点", "コスモロジストのMPを10点", "サーバントマスターのMPを10点"]]], [43, [["オウルセイージ(CL5)×2、インプ(CL3)、オーク(CL3)", "オウルセージ(CL5)×3、キメラ(CL15)", "オウルコマンダー(CL18)×2、ブラックナイト(CL10)×2", "オウルコマンダー(CL18)×2、ヨウコ(CL30)、アダマンゴーレム(CL45)"], ["2", "3", "4", "6"]]], [44, [["gールデンビースト(CL10)とエンカウント", "ゴールデンビースト(CL15)とエンカウント、致傷力+2、命中+4、HP+10、FP+10", "ゴールデンビースト(CL25)とエンカウント、致傷力+4、命中+10、HP+30、FP+30", "イビルオーメン(CL42)×2とエンカウント"]]], [45, [["アップルドール(CL12)、ポイズンリリー(CL7)", "アップルドール(CL12)×2、ポイズンリリー(CL7)", "水陸両用改造型アップルドール(CL30)、グリーンアクトレス(CL22)", "水陸両用改造型アップルドール(CL30)×2、リッチ(CL44)"], ["<忍び>", "<忍び-1>", "<忍び-2>", "<忍び-4>"]]], [46, [["キメラ(CL15)とエンカウント", "キメラ(CL20)とエンカウント、防護+2、致傷力+2、命中+4、HP+20、FP+10", "防護+4、致傷力+6、命中+10、HP+60、FP+30", "キメラグレート(CL60)とエンカウント"]]], [51, [["<毒物><植物学><動植物知識-3>", "<毒物-2><植物学-2><動植物知識-5>", "<毒物-4><植物学-4><動植物知識-7>", "<毒物-8><植物学-8><動植物知識-11>"]]], [52, [["2D", "3D", "4D", "5D"]]], [53, [["2D", "4D", "6D", "10D"], ["「体力-5」", "「体力-7」", "「体力-9」", "「体力-13」"], ["<罠-5>", "<罠-7>", "<罠-9>", "<罠-13>"]]], [54, [["1D", "2D", "3D", "5D"], ["「生命力」", "「生命力-2」", "「生命力-4」", "「生命力-8」"]]], [55, [["<植物学>か<動植物知識-3>", "<植物学-2>か<動植物知識-5>", "<植物学-2>か<動植物知識-5>", "<植物学-2>か<動植物知識-5>"], ["3D", "5D", "7D", "11D"]]], [56, [["「生命力」", "「生命力-2」", "「生命力-4」", "「生命力-8」"], ["1", "2", "3", "4"]]], [62, [["<踊り>", "<踊り-2>", "<踊り-4>", "<踊り-8>"], ["200", "400", "600", "1000"]]], [63, [["<偽装-5>", "<偽装-9>", "<偽装-13>", "<偽装-19>"], ["狩人の羽帽子", "緊急召喚の宝珠", "毒の香水瓶", "女王の花冠"]]], [64, [["" + "1:高級クイックHPポーション\n" + " 2:高級クイックMPポーション\n" + " 3:高級クイックスタミナポーション\n" + " 4:クイック解毒ポーション\n" + " 5:クイック中和ポーション\n" + " 6:高級抵抗ポーション", "" + "1:高級クイックHPポーション\n" + " 2:高級クイックMPポーション\n" + " 3:高級クイックスタミナポーション\n" + " 4:クイック解毒ポーション\n" + " 5:クイック中和ポーション\n" + " 6:高級抵抗ポーション", "" + "1:高級クイックHPポーション\n" + " 2:最高級クイックMPポーション\n" + " 3:最高級クイックスタミナポーション\n" + " 4:加速ポーション\n" + " 5:加速ポーション\n" + " 6:最高級抵抗ポーション", "" + "1:特製クイックHPポーション\n" + " 2:特製クイックHPポーション\n" + " 3:特製クイックMPポーション\n" + " 4:特製クイックMPポーション\n" + " 5:特製クイックスタミナポーション\n" + " 6:特製クイックスタミナポーション"]]]]} - else if ((6)['$===']($case)) {table = [[12, [["2D", "3D", "4D", "6D"], ["1D", "3D", "5D", "8D"]]], [13, [["2D", "3D", "4D", "6D"]]], [15, [["1000", "2000", "3000", "5000"]]], [22, [["<鍵開け-3>", "<鍵開け-5>", "<鍵開け-7>", "<鍵開け-11>"]]], [23, [["<罠-3>", "<罠-5>", "<罠-7>", "<罠-11>"]]], [24, [["<罠-3><鍵開け-3>", "<罠-5><鍵開け-5>", "<罠-7><鍵開け-7>", "<罠-11><鍵開け-11>"]]], [25, [["<罠-5>", "<罠-5>", "<罠-7>", "<罠-11>"], ["100", "200", "300", "500"]]], [26, [["<罠-5>", "<罠-5>", "<罠-7>", "<罠-11>"]]], [31, [["「視覚-5」", "「視覚-7」", "「視覚-9」", "「視覚-13」"]]], [33, [["<生存>", "<生存-2>", "<生存-4>", "<生存-8>"], ["2", "4", "6", "10"]]], [36, [["-1", "-2", "-3", "-4"]]], [41, [["キャンディークラウン(CL40)", "キャンディークラウン(CL40)「1D-3」匹(最低1匹)", "キャンディークラウン(CL40)「1D-2」匹(最低1匹)、出目が6だった場合ゴールデンクラウン(CL177)1匹", "ゴールデンクラウン(CL177)"]]], [42, [["スケルトン(CL3)×3とエンカウント", "スケルトン(CL3)×6とエンカウント、致傷力+2、命中+2", "デッドリーローズ(CL15)×3とエンカウント、スケルトン化しており「叩きダメージボーナス2倍」を追加", "堕ちた黒竜(CL48)×3とエンカウント、スケルトン化しており「叩きダメージボーナス2倍」を追加"]]], [43, [["ポイズンリリー(CL7)、ファントム(CL5)×2", "ポイズンリリー(CL7)、ゴースト(CL10)×2", "グリーンアクトレス(CL22)、デュラハン(CL22)×2", "グリーンアクトレス(CL22)、ヒトキリ(CL33)×2"], ["ポイズンリリー", "ポイズンリリー", "グリーンアクトレス", "グリーンアクトレス"], ["1", "2", "3", "4"]]], [44, [["「保険」に入っていなければPC達は死亡し、グレイヴディガーの配下にさせられてしまう。冒険はここで終了だ。", "「保険」に入っていなければPC達は死亡し、グレイヴディガーの配下にさせられてしまう。冒険はここで終了だ。", "「保険」に入っていなければPC達は死亡し、グレイヴディガーの配下にさせられてしまう。冒険はここで終了だ。", "『葬送者』グレイヴディガー(CL200・魔将)、『ディガー様親衛隊隊長』フュネライユ(CL66・ネームド)、エルダーリッチ(CL55)、イビルオーメン(CL42)×2とエンカウント。"]]], [45, [["ゴースト(CL10)、ソルジャー(CL4)×2", "ゴースト(CL10)、ハタモト(CL10)×2", "デュラハン(CL22)、ハタモト(CL10)×3", "エルダーリッチ(CL55)、アダマンゴーレム(CL45)×2"], ["ゴースト", "ゴースト", "デュラハン", "エルダーリッチ"], ["100", "200", "300", "500"]]], [46, [["ボーンスネーク(CL20)とエンカウント", "ボーンスネーク(CL20)×2とエンカウント", "ボーンスネーク(CL20)×3とエンカウント、致傷力+2", "ラダマンティスの蛇(CL50)×2とエンカウント、半ば化石になりかけており「叩きダメージボーナス2倍」を追加"]]], [51, [["「意志」", "「意志-2」", "「意志-4」", "「意志-8」"]]], [52, [["「よけ」", "「よけ-2」", "「よけ-4」", "「よけ-8」"], ["3D", "5D", "7D", "11D"]]], [53, [["<建築>", "<建築-2>", "<建築-4>", "<建築-8>"], ["3D", "5D", "7D", "11D"]]], [54, [["「体力-3」", "「体力-5」", "「体力-7」", "「体力-11」"], ["ジェルスケルトン(CL10)", "ボーンスネーク(CL20)", "リッチ(CL44)", "『ディガー様親衛隊隊長』フュネライユ(CL66・ネームド)"]]], [55, [["100", "200", "400", "1000"], ["3D", "5D", "7D", "11D"]]], [61, [["5D", "7D", "9D", "13D"]]], [62, [["「生命力」", "「生命力-1」", "「生命力-2」", "「製絵魅力-4」"]]], [63, [["-1", "-2", "-3", "-4"], ["2000", "6000", "20000", "60000"]]], [64, [["" + "1:火炎弾×5(アームガン弾薬)\n" + " 2:冷凍弾×5(アームガン弾薬)\n" + " 3:貫甲弾×3(アームガン弾薬)\n" + " 4:簡易ソーサルセット(装飾品)\n" + " 5:ギアテール(装飾品)\n" + " 6:パイルバンカー高速収納装置(装飾品)", "" + "1:火炎弾×5(アームガン弾薬)\n" + " 2:冷凍弾×5(アームガン弾薬)\n" + " 3:貫甲弾×3(アームガン弾薬)\n" + " 4:ゴーレムアーム(装飾品)\n" + " 5:ゴーレムアーム(装飾品)\n" + " 6:ホイールブースター(装飾品)", "" + "1:火炎弾×5(アームガン弾薬)\n" + " 2:冷凍弾×5(アームガン弾薬)\n" + " 3:貫甲弾×3(アームガン弾薬)\n" + " 4:ヒュージーミスリルフィスト(装飾品)\n" + " 5:ヒュージーミスリルフィスト(装飾品)\n" + " 6:ヒュージーブレード(両手剣)", "" + "1:火炎弾×5(アームガン弾薬)\n" + " 2:冷凍弾×5(アームガン弾薬)\n" + " 3:貫甲弾×3(アームガン弾薬)\n" + " 4:ヒュージーブレード(両手剣)\n" + " 5:ヒュージーブレード(両手剣)\n" + " 6:ナグルファル装甲(装飾品)"]]], [65, [["200", "500", "1000", "5000"], ["カロン(CL12)×2とエンカウント", "カロン(CL12)×2とエンカウント、致傷力+2", "カロンキャプテン(CL25)×2とエンカウント", "エルダーリッチ(CL55)×2とエンカウント"]]], [66, [["墓場のブラックナイト(CL10)とエンカウント", "墓場のブラックナイト(CL20)とエンカウント", "墓場のブラックナイト(CL30)とエンカウント", "墓場のハイペリオンダミー(CL100)とエンカウント"], ["キメラウェポンズ", "キメラウェポンズ", "キメラウェポンズ", "グレートキメラウェポンズ"], ["" + "墓場のブラックナイト(標準CL10) 魔族\n" + " 攻防ともに高い能力を持つ、魔族のエリート騎士。\n" + " 常時《倍速》で武器には《戻る武器》がかかっている。\n" + " ST16 DX15 IQ12 HT15 HP45 FP26\n" + " 受防3(金属鎧) 防護6(金属鎧) 移動5 よけ5 受け9 止め-\n" + " 常時《倍速》 <跳躍18>\n" + " キメラウェポンズ18(特殊)・・・攻撃ごとに形状変化 上質 壊れない 《戻る武器》\n" + " キメラウェポンズ/両手剣・・・命中21 2D+6「切り」 射程2\n" + " キメラウェポンズ/両手メイス・・・命中21 2D+7「叩き」 射程2\n" + " キメラウェポンズ/両手斧・・・命中21 2D+6「切り」 射程2\n" + " キメラウェポンズ/長槍・・・命中21 2D+6「刺し」 射程3\n" + " ・ウォリアー\n" + " 行動:【クロスブレイク】+【ハイスピードブレイク】(両手剣) FP6 2D+7「切り」 2回攻撃\n" + " 行動:【リープアタック】+【ジェノサイドリープ】(両手剣) FP4\n" + " 2D+6「切り」<跳躍>でフェイント 2体まで攻撃 移動妨害・大振りにならない\n" + " 行動:【ヘビースマッシュ】(両手メイス) FP2 2D+13「叩き」\n" + " 行動:【トマホークミサイル】(両手斧) FP2 2D+8「切り」 回避-2 半致傷16 最大射程24\n" + " 行動:【スターダストフォール】(長槍) FP3 1D+6 回避-3 半致傷16 最大射程24\n" + " 行動:【ワールウィンド】(長槍) FP3 2D+6「切り」 周囲半径3ヘクス\n" + " ・オリジナル\n" + " 【騎士の闘気】\n" + " 使用:常時 判定:なし 疲労:なし 強化:×\n" + " ターンの最初にFPを3点回復する。\n" + " 所有レア:漆黒の甲冑(鎧)", "" + "墓場のブラックナイト(標準CL20) 魔族\n" + " 攻防ともに高い能力を持つ、魔族のエリート騎士。\n" + " 常時《倍速》で武器には《戻る武器》がかかっている。\n" + " ST16 DX15 IQ12 HT15 HP75 FP36\n" + " 受防3(金属鎧) 防護6(金属鎧) 移動5 よけ5 受け9 止め-\n" + " 常時《倍速》 <跳躍18>\n" + " キメラウェポンズ18(特殊)・・・攻撃ごとに形状変化 上質 壊れない 《戻る武器》\n" + " キメラウェポンズ/両手剣・・・命中31 2D+10「切り」 射程2\n" + " キメラウェポンズ/両手メイス・・・命中31 2D+11「叩き」 射程2\n" + " キメラウェポンズ/両手斧・・・命中31 2D+10「切り」 射程2\n" + " キメラウェポンズ/長槍・・・命中31 2D+10「刺し」 射程3\n" + " ・ウォリアー\n" + " 行動:【クロスブレイク】+【ハイスピードブレイク】(両手剣) FP6 2D+11「切り」 2回攻撃\n" + " 行動:【リープアタック】+【ジェノサイドリープ】(両手剣) FP4\n" + " 2D+10「切り」<跳躍>でフェイント 2体まで攻撃 移動妨害・大振りにならない\n" + " 行動:【ヘビースマッシュ】(両手メイス) FP2 2D+17「叩き」\n" + " 行動:【トマホークミサイル】(両手斧) FP2 2D+12「切り」 回避-2 半致傷16 最大射程24\n" + " 行動:【スターダストフォール】(長槍) FP3 1D+10 回避-3 半致傷16 最大射程24\n" + " 行動:【ワールウィンド】(長槍) FP3 2D+10「切り」 周囲半径3ヘクス\n" + " ・オリジナル\n" + " 【騎士の闘気】\n" + " 使用:常時 判定:なし 疲労:なし 強化:×\n" + " ターンの最初にFPを3点回復する。\n" + " 所有レア:漆黒の甲冑(鎧)", "" + "墓場のブラックナイト(標準CL30) 魔族\n" + " 攻防ともに高い能力を持つ、魔族のエリート騎士。\n" + " 常時《倍速》で武器には《戻る武器》がかかっている。\n" + " ST16 DX15 IQ12 HT15 HP105 FP46\n" + " 受防3(金属鎧) 防護6(金属鎧) 移動5 よけ5 受け9 止め-\n" + " 常時《倍速》 <跳躍18>\n" + " キメラウェポンズ18(特殊)・・・攻撃ごとに形状変化 上質 壊れない 《戻る武器》\n" + " キメラウェポンズ/両手剣・・・命中41 2D+14「切り」 射程2\n" + " キメラウェポンズ/両手メイス・・・命中41 2D+15「叩き」 射程2\n" + " キメラウェポンズ/両手斧・・・命中41 2D+14「切り」 射程2\n" + " キメラウェポンズ/長槍・・・命中41 2D+14「刺し」 射程3\n" + " ・ウォリアー\n" + " 行動:【クロスブレイク】+【ハイスピードブレイク】(両手剣) FP6 2D+15「切り」 2回攻撃\n" + " 行動:【リープアタック】+【ジェノサイドリープ】(両手剣) FP4\n" + " 2D+14「切り」<跳躍>でフェイント 2体まで攻撃 移動妨害・大振りにならない\n" + " 行動:【ヘビースマッシュ】(両手メイス) FP2 2D+21「叩き」\n" + " 行動:【トマホークミサイル】(両手斧) FP2 2D+16「切り」 回避-2 半致傷16 最大射程24\n" + " 行動:【スターダストフォール】(長槍) FP3 1D+14 回避-3 半致傷16 最大射程24\n" + " 行動:【ワールウィンド】(長槍) FP3 2D+14「切り」 周囲半径3ヘクス\n" + " ・オリジナル\n" + " 【騎士の闘気】\n" + " 使用:常時 判定:なし 疲労:なし 強化:×\n" + " ターンの最初にFPを3点回復する。\n" + " 所有レア:漆黒の甲冑(鎧)", "" + "墓場のハイペリオンダミー(標準CL100) 魔族\n" + " 第三魔将ハイペリオンを模して造られたダミー装甲。\n" + " 常時《倍速》で武器には《戻る武器》がかかっている。\n" + " ST75 DX22 IQ15 HT27 HP527 FP275\n" + " 受防4 防護15 移動10 よけ10 受け14 止め-\n" + " バッドステータス無効 ファンブル無効 切り刺しダメージボーナス無効\n" + " 常時《倍速》 <戦術20> イニシアチブ値12 装備重量150kg\n" + " グレートキメラウェポンズ28(特殊)・・・攻撃ごとに形状変化 最高品質 《戻る武器》\n" + " キメラウェポンズ/両手剣・・・命中58 17D+10「切り」 射程2\n" + " キメラウェポンズ/両手メイス・・・命中58 17D+11「叩き」 射程2\n" + " キメラウェポンズ/両手斧・・・命中58 17D+10「切り」 射程2\n" + " キメラウェポンズ/長槍・・・命中58 17D+10「刺し」 射程3\n" + " 世界樹装甲・・・防護点が減少しない(一時的な「防護点無視」の効果は受ける)\n" + " 着用者のHPをターンの最初に10点回復する\n" + " ・ウォリアー\n" + " 行動:【クロスブレイク+5】+【ハイスピードブレイク+5】(両手剣) FP16\n" + " 17D+16「切り」 回避-5 2回攻撃\n" + " 行動:【ヘビースマッシュ+5】+【ヘビーストライク】(両手メイス) FP11\n" + " 17D+40「切り」 「受け」「止め」時に装備を破壊 「生命力-6」に失敗すると朦朧\n" + " 行動:【トマホークミサイル+5】+【トールハンマー】(両手斧) FP10\n" + " 命中64 17D+27「切り」 回避-2 半致傷750 最大射程1120\n" + " 行動:【スターダストフォール+5】+【プロミストビクトリー】(長槍) FP12\n" + " 8D+20「刺し」 必中クリティカル クリティカル表参照なし 射撃攻撃 半致傷75 最大射程112\n" + " 行動:【ワールウィンド+5】+【バイオレントウィンド】(長槍) FP\n" + " 17D+10+(移動距離÷2)「切り」 周囲半径3ヘクス 「敏捷-9」で転倒判定 大振りにならない\n" + " ・センチュリオン\n" + " イニシ:【ファーストムーブ】(戦術) FP3 イニシアチブ判定に自動的に勝利\n" + " 回避:【ツーハンドプロテクト】 FP3 武器技能の3分の2で「受け」を行う\n" + " 行動:【ソニックブーム+4】 FP7 他の技に追加使用 近接物理攻撃の射程が50に\n" + " ダメージ後:【アドバンストガード】 FP5 近接物理攻撃で受けた最終ダメージを半減 CT:次\n" + " ・マスターナイト\n" + " 行動:【グレートチャージ】 FP5 他の近接技に追加使用 致傷力+15\n" + " 行動:【シーズエンジン】 FP6 他の射撃技に追加使用 「切り」+3D 「刺し」+2D\n" + " ・オリジナル\n" + " 【無限の闘気】\n" + " 使用:常時 判定:なし 疲労:なし 強化:×\n" + " ターンの最初にFPを30点回復する。\n" + " 【障壁破壊】\n" + " 使用:常時 判定:なし 疲労:なし 強化:×\n" + " 移動および攻撃時に《物質障壁》《完全障壁》の影響を受けない。\n" + " また、ハイペリオンダミーの攻撃は受動防御のみで回避することができない。\n" + " 所有レア:世界樹装甲(鎧)"]]]]} - else {return "[ERROR:getRandomDiff]"}; - result = self.$get_table_by_number(dice23, table); - return result['$[]'](index)['$[]'](dif); - }, $GurpsFW_getRandomDiff$36.$$arity = 4), nil) && 'getRandomDiff'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/HarnMaster.js b/src/assets/dicebot/HarnMaster.js deleted file mode 100644 index a66dce0ff..000000000 --- a/src/assets/dicebot/HarnMaster.js +++ /dev/null @@ -1,185 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$==', '$getCheckResult', '$>', '$getFailResult', '$getSuccessResult', '$%', '$===', '$to_i', '$last_match', '$getCheckShockResult', '$getStrikeLocationHuman', '$roll', '$<=', '$getStrikeLocationHumanUpperTable', '$getStrikeLocationHumanDownTable', '$getStrikeLocationHumanNormalTable', '$raise', '$get_table_by_number', '$getLocationSide', '$getFaceLocation', '$debug', '$odd?', '$sub']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'HarnMaster'); - - var $nesting = [self].concat($parent_nesting), $HarnMaster_check_1D100$1, $HarnMaster_getCheckResult$2, $HarnMaster_getFailResult$3, $HarnMaster_getSuccessResult$4, $HarnMaster_rollDiceCommand$5, $HarnMaster_getCheckShockResult$6, $HarnMaster_getStrikeLocationHuman$7, $HarnMaster_getLocationSide$8, $HarnMaster_getFaceLocation$9, $HarnMaster_getStrikeLocationHumanUpperTable$10, $HarnMaster_getStrikeLocationHumanNormalTable$11, $HarnMaster_getStrikeLocationHumanDownTable$12; - - - Opal.const_set($nesting[0], 'ID', "HarnMaster"); - Opal.const_set($nesting[0], 'NAME', "ハーンマスター"); - Opal.const_set($nesting[0], 'SORT_KEY', "はあんますたあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + " 1D100<=XX の判定時に致命的失敗・決定的成功を判定\n" + "・ショック判定(SHKx)\n" + " 例)SHK13,3\n" + "・人型用 中段命中部位表 (SLH)/上段命中部位 (SLHU)/上段命中部位 (SLHD)\n"); - self.$setPrefixes(["SHK\\d+.*", "SLH", "SLHU", "SLHD"]); - - Opal.def(self, '$check_1D100', $HarnMaster_check_1D100$1 = function $$check_1D100(total, _dice_total, cmp_op, target) { - var self = this, result = nil; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return "" - }; - result = self.$getCheckResult(total, target); - return "" + "> " + (result); - }, $HarnMaster_check_1D100$1.$$arity = 4); - - Opal.def(self, '$getCheckResult', $HarnMaster_getCheckResult$2 = function $$getCheckResult(total, diff) { - var self = this; - - - if ($truthy($rb_gt(total, diff))) { - return self.$getFailResult(total)}; - return self.$getSuccessResult(total); - }, $HarnMaster_getCheckResult$2.$$arity = 2); - - Opal.def(self, '$getFailResult', $HarnMaster_getFailResult$3 = function $$getFailResult(total) { - var self = this; - - - if (total['$%'](5)['$=='](0)) { - return "致命的失敗"}; - return "失敗"; - }, $HarnMaster_getFailResult$3.$$arity = 1); - - Opal.def(self, '$getSuccessResult', $HarnMaster_getSuccessResult$4 = function $$getSuccessResult(total) { - var self = this; - - - if (total['$%'](5)['$=='](0)) { - return "決定的成功"}; - return "成功"; - }, $HarnMaster_getSuccessResult$4.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $HarnMaster_rollDiceCommand$5 = function $$rollDiceCommand(command) { - var self = this, result = nil, $case = nil, toughness = nil, damage = nil, type = nil; - - - result = nil; - $case = command; - if (/^SHK(\d*),(\d+)/i['$===']($case)) { - toughness = $$($nesting, 'Regexp').$last_match(1).$to_i(); - damage = $$($nesting, 'Regexp').$last_match(2).$to_i(); - result = self.$getCheckShockResult(damage, toughness);} - else if (/SLH(U|D)?/i['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1); - result = self.$getStrikeLocationHuman(type);} - else {result = nil}; - return result; - }, $HarnMaster_rollDiceCommand$5.$$arity = 1); - - Opal.def(self, '$getCheckShockResult', $HarnMaster_getCheckShockResult$6 = function $$getCheckShockResult(damage, toughness) { - var $a, $b, self = this, dice = nil, diceText = nil, result = nil, text = nil; - - - $b = self.$roll(damage, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - result = (function() {if ($truthy($rb_le(dice, toughness))) { - return "成功" - } else { - return "失敗" - }; return nil; })(); - text = "" + "ショック判定(ダメージ:" + (damage) + ", 耐久力:" + (toughness) + ") > (" + (dice) + "[" + (diceText) + "]) > " + (result); - return text; - }, $HarnMaster_getCheckShockResult$6.$$arity = 2); - - Opal.def(self, '$getStrikeLocationHuman', $HarnMaster_getStrikeLocationHuman$7 = function $$getStrikeLocationHuman(type) { - var $a, $b, self = this, typeName = nil, table = nil, $case = nil, number = nil, part = nil, result = nil; - - - typeName = ""; - table = nil; - $case = type; - if ("U"['$===']($case)) { - typeName = "命中部位(人型 上段)"; - table = self.$getStrikeLocationHumanUpperTable();} - else if ("D"['$===']($case)) { - typeName = "命中部位(人型 下段)"; - table = self.$getStrikeLocationHumanDownTable();} - else if (nil['$===']($case)) { - typeName = "命中部位(人型 中段)"; - table = self.$getStrikeLocationHumanNormalTable();} - else {self.$raise("" + "unknow atak type " + (type))}; - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - part = self.$get_table_by_number(number, table); - part = self.$getLocationSide(part, number); - part = self.$getFaceLocation(part); - result = "" + (typeName) + " > (" + (number) + ")" + (part); - return result; - }, $HarnMaster_getStrikeLocationHuman$7.$$arity = 1); - - Opal.def(self, '$getLocationSide', $HarnMaster_getLocationSide$8 = function $$getLocationSide(part, number) { - var self = this, side = nil; - - - if ($truthy(/^\*/['$==='](part))) { - } else { - - self.$debug("part has NO side", part); - return part; - }; - self.$debug("part has side", part); - side = (function() {if ($truthy(number['$odd?']())) { - return "左" - } else { - return "右" - }; return nil; })(); - return part.$sub(/\*/, side); - }, $HarnMaster_getLocationSide$8.$$arity = 2); - - Opal.def(self, '$getFaceLocation', $HarnMaster_getFaceLocation$9 = function $$getFaceLocation(part) { - var $a, $b, self = this, table = nil, number = nil, faceLocation = nil, result = nil; - - - self.$debug("getFaceLocation part", part); - if ($truthy(/\+$/['$==='](part))) { - } else { - - self.$debug("is NOT Face"); - return part; - }; - self.$debug("is Face"); - table = [[15, "顎"], [30, "*目"], [64, "*頬"], [80, "鼻"], [90, "*耳"], [100, "口"]]; - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - faceLocation = self.$get_table_by_number(number, table); - self.$debug("faceLocation", faceLocation); - self.$debug("number", number); - faceLocation = self.$getLocationSide(faceLocation, number); - result = part.$sub(/\+$/, "" + " > (" + (number) + ")" + (faceLocation)); - return result; - }, $HarnMaster_getFaceLocation$9.$$arity = 1); - - Opal.def(self, '$getStrikeLocationHumanUpperTable', $HarnMaster_getStrikeLocationHumanUpperTable$10 = function $$getStrikeLocationHumanUpperTable() { - var self = this, table = nil; - - - table = [[15, "頭部"], [30, "顔+"], [45, "首"], [57, "*肩"], [69, "*上腕"], [73, "*肘"], [81, "*前腕"], [85, "*手"], [95, "胸部"], [100, "腹部"]]; - return table; - }, $HarnMaster_getStrikeLocationHumanUpperTable$10.$$arity = 0); - - Opal.def(self, '$getStrikeLocationHumanNormalTable', $HarnMaster_getStrikeLocationHumanNormalTable$11 = function $$getStrikeLocationHumanNormalTable() { - var self = this, table = nil; - - - table = [[5, "頭部"], [10, "顔+"], [15, "首"], [27, "*肩"], [33, "*上腕"], [35, "*肘"], [39, "*前腕"], [43, "*手"], [60, "胸部"], [70, "腹部"], [74, "股間"], [80, "*臀部"], [88, "*腿"], [90, "*膝"], [96, "*脛"], [100, "*足"]]; - return table; - }, $HarnMaster_getStrikeLocationHumanNormalTable$11.$$arity = 0); - return (Opal.def(self, '$getStrikeLocationHumanDownTable', $HarnMaster_getStrikeLocationHumanDownTable$12 = function $$getStrikeLocationHumanDownTable() { - var self = this, table = nil; - - - table = [[6, "*前腕"], [12, "*手"], [19, "胸部"], [29, "腹部"], [35, "股間"], [49, "*臀部"], [70, "*腿"], [78, "*膝"], [92, "*脛"], [100, "*足"]]; - return table; - }, $HarnMaster_getStrikeLocationHumanDownTable$12.$$arity = 0), nil) && 'getStrikeLocationHumanDownTable'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/HatsuneMiku.js b/src/assets/dicebot/HatsuneMiku.js deleted file mode 100644 index 7569b3fcf..000000000 --- a/src/assets/dicebot/HatsuneMiku.js +++ /dev/null @@ -1,221 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$judgeRoll', '$nil?', '$upcase', '$===', '$getRandomSkillTableResult', '$getTableDiceCommandResult', '$=~', '$last_match', '$to_i', '$==', '$getChangedModifyText', '$[]', '$parren_killer', '$+', '$roll', '$collect', '$split', '$min', '$<=', '$length', '$first', '$check_success', '$each_with_index', '$clone', '$delete_at', '$max', '$-', '$<<', '$uniq!', '$join', '$each', '$>=', '$check_hit', '$bcdice', '$get_table_by_2d6', '$get_table_by_1d6', '$getD66Table', '$get_table_by_d66_swap', '$raise', '$map', '$is_a?', '$!=', '$size', '$inspect', '$freeze', '$setPrefixes', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'HatsuneMiku'); - - var $nesting = [self].concat($parent_nesting), $HatsuneMiku_initialize$1, $HatsuneMiku_rollDiceCommand$2, $HatsuneMiku_judgeRoll$3, $HatsuneMiku_getChangedModifyText$6, $HatsuneMiku_check_success$8, $HatsuneMiku_getTableDiceCommandResult$9, $HatsuneMiku_getD66Table$10; - - - Opal.const_set($nesting[0], 'ID', "HatsuneMiku"); - Opal.const_set($nesting[0], 'NAME', "初音ミクTRPG ココロダンジョン"); - Opal.const_set($nesting[0], 'SORT_KEY', "はつねみくTRPGこころたんしよん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定(Rx±y@z>=t)\n" + " 能力値のダイスごとに成功・失敗の判定を行います。\n" + " x:能力ランク(S,A~D)。数字指定で直接その個数のダイスが振れます\n" + " y:修正値。A+2 あるいは A++ のように表記。混在時は A++,+1 のように記述も可能\n" + " z:スペシャル最低値(省略:6) t:目標値(省略:4)\n" + "  例) RA R2 RB+1 RC++ RD+,+2 RA>=5 RS-1@5>=6\n" + " 結果はネイロを取得した残りで最大値を表示\n" + "例) RB\n" + " HatsuneMiku : (RB>=4) > [3,5] >\n" + "  ネイロに3(青)を取得した場合 5:成功\n" + "  ネイロに5(白)を取得した場合 3:失敗\n" + "・各種表\n" + " ファンブル表 FT/致命傷表 CWT/休憩表 BT/目標表 TT/関係表 RT\n" + " 障害表 OT/リクエスト表 RQT/情景表 ST\n" + "・キーワード表\n" + " ダーク DKT/ホット HKT/ラブ LKT/エキセントリック EKT/メランコリー MKT\n" + "・名前表 NT\n" + " コア別 ダーク DNT/ホット HNT/ラブ LNT/エキセントリック ENT/メランコリー MNT\n" + "・オトダマ各種表\n" + " 性格表A OPA/性格表B OPB/趣味表 OHT/外見表 OLT/一人称表 OIT/呼び名表 OYT\n" + " リアクション表 ORT/出会い表 OMT\n"); - - Opal.def(self, '$initialize', $HatsuneMiku_initialize$1 = function $$initialize() { - var $iter = $HatsuneMiku_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $HatsuneMiku_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $HatsuneMiku_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.d66Type = 2); - }, $HatsuneMiku_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $HatsuneMiku_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, text = nil, string = nil, $case = nil; - - - text = self.$judgeRoll(command); - if ($truthy(text['$nil?']())) { - } else { - return text - }; - string = command.$upcase(); - $case = string; - if ("RTT"['$===']($case)) {return self.$getRandomSkillTableResult(command)}; - return self.$getTableDiceCommandResult(command); - }, $HatsuneMiku_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$judgeRoll', $HatsuneMiku_judgeRoll$3 = function $$judgeRoll(command) { - var $a, $b, $$4, $$5, self = this, skillRank = nil, modifyText = nil, signOfInequality = nil, targetText = nil, specialNum = nil, specialText = nil, commandText = nil, rankDiceList = nil, diceCount = nil, modify = nil, target = nil, isSort = nil, _ = nil, diceText = nil, diceList = nil, message = nil, dice = nil, total = nil, result = nil, texts = nil; - - - if ($truthy(/^(R([A-DS]|\d+)([\+\-\d,]*))(@(\d))?((>(=)?)([\+\-\d]*))?(@(\d))?$/i['$=~'](command))) { - } else { - return nil - }; - skillRank = $$($nesting, 'Regexp').$last_match(2); - modifyText = $$($nesting, 'Regexp').$last_match(3); - signOfInequality = (function() {if ($truthy($$($nesting, 'Regexp').$last_match(7)['$nil?']())) { - return ">=" - } else { - return $$($nesting, 'Regexp').$last_match(7) - }; return nil; })(); - targetText = (function() {if ($truthy($$($nesting, 'Regexp').$last_match(9)['$nil?']())) { - return "4" - } else { - return $$($nesting, 'Regexp').$last_match(9) - }; return nil; })(); - specialNum = $$($nesting, 'Regexp').$last_match(5); - specialNum = ($truthy($a = specialNum) ? $a : $$($nesting, 'Regexp').$last_match(11)); - specialNum = ($truthy($a = specialNum) ? $a : 6); - specialNum = specialNum.$to_i(); - specialText = (function() {if (specialNum['$=='](6)) { - return "" - } else { - return "" + "@" + (specialNum) - }; return nil; })(); - modifyText = self.$getChangedModifyText(modifyText); - commandText = "" + "R" + (skillRank) + (modifyText); - rankDiceList = $hash2(["S", "A", "B", "C", "D"], {"S": 4, "A": 3, "B": 2, "C": 1, "D": 2}); - diceCount = rankDiceList['$[]'](skillRank); - if ($truthy(/^\d+$/['$==='](skillRank))) { - diceCount = skillRank.$to_i()}; - modify = self.$parren_killer($rb_plus($rb_plus("(", modifyText), ")")).$to_i(); - target = self.$parren_killer($rb_plus($rb_plus("(", targetText), ")")).$to_i(); - isSort = 1; - $b = self.$roll(diceCount, 6, isSort), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceList = $send(diceText.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - if (skillRank['$==']("D")) { - diceList = [diceList.$min()]}; - message = "" + "(" + (commandText) + (specialText) + (signOfInequality) + (targetText) + ") > [" + (diceText) + "]" + (modifyText) + " > "; - if ($truthy($rb_le(diceList.$length(), 1))) { - - dice = diceList.$first(); - total = $rb_plus(dice, modify); - result = self.$check_success(total, dice, signOfInequality, target, specialNum); - message = $rb_plus(message, "" + (total) + ":" + (result)); - } else { - - texts = []; - $send(diceList, 'each_with_index', [], ($$5 = function(pickup_dice, index){var self = $$5.$$s || this, rests = nil, colorList = nil, color = nil; - - - - if (pickup_dice == null) { - pickup_dice = nil; - }; - - if (index == null) { - index = nil; - }; - rests = diceList.$clone(); - rests.$delete_at(index); - dice = rests.$max(); - total = $rb_plus(dice, modify); - result = self.$check_success(total, dice, signOfInequality, target, specialNum); - colorList = ["黒", "赤", "青", "緑", "白", "任意"]; - color = colorList['$[]']($rb_minus(pickup_dice, 1)); - return texts['$<<']("" + " ネイロに" + (pickup_dice) + "(" + (color) + ")を取得した場合 " + (total) + ":" + (result));}, $$5.$$s = self, $$5.$$arity = 2, $$5)); - texts['$uniq!'](); - message = $rb_plus(message, $rb_plus("\n", texts.$join("\n"))); - }; - return message; - }, $HatsuneMiku_judgeRoll$3.$$arity = 1); - - Opal.def(self, '$getChangedModifyText', $HatsuneMiku_getChangedModifyText$6 = function $$getChangedModifyText(text) { - var $$7, self = this, modifyText = nil, values = nil; - - - modifyText = ""; - values = text.$split(/,/); - $send(values, 'each', [], ($$7 = function(value){var self = $$7.$$s || this, $case = nil; - - - - if (value == null) { - value = nil; - }; - return (function() {$case = value; - if ("++"['$===']($case)) {return (modifyText = $rb_plus(modifyText, "+2"))} - else if ("+"['$===']($case)) {return (modifyText = $rb_plus(modifyText, "+1"))} - else {return (modifyText = $rb_plus(modifyText, value))}})();}, $$7.$$s = self, $$7.$$arity = 1, $$7)); - return modifyText; - }, $HatsuneMiku_getChangedModifyText$6.$$arity = 1); - - Opal.def(self, '$check_success', $HatsuneMiku_check_success$8 = function $$check_success(total_n, dice_n, signOfInequality, diff, special_n) { - var self = this, success = nil; - - - if (dice_n['$=='](1)) { - return "ファンブル"}; - if ($truthy($rb_ge(dice_n, special_n))) { - return "スペシャル"}; - success = self.$bcdice().$check_hit(total_n, signOfInequality, diff); - if ($truthy($rb_ge(success, 1))) { - return "成功"}; - return "失敗"; - }, $HatsuneMiku_check_success$8.$$arity = 5); - - Opal.def(self, '$getTableDiceCommandResult', $HatsuneMiku_getTableDiceCommandResult$9 = function $$getTableDiceCommandResult(command) { - var $a, $b, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, text = nil, number = nil; - - - info = $$($nesting, 'TABLES')['$[]'](command); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type"); - table = info['$[]']("table"); - $b = (function() {$case = type; - if ("2D6"['$===']($case)) {return self.$get_table_by_2d6(table)} - else if ("1D6"['$===']($case)) {return self.$get_table_by_1d6(table)} - else if ("D66"['$===']($case) || "D66S"['$===']($case)) { - table = self.$getD66Table(table); - return self.$get_table_by_d66_swap(table);} - else {return self.$raise("" + "invaolid dice Type " + (command))}})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(text['$nil?']())) { - return nil}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $HatsuneMiku_getTableDiceCommandResult$9.$$arity = 1); - - Opal.def(self, '$getD66Table', $HatsuneMiku_getD66Table$10 = function $$getD66Table(table) { - var $$11, self = this, newTable = nil; - - - newTable = $send(table, 'map', [], ($$11 = function(item){var self = $$11.$$s || this, $a; - - - - if (item == null) { - item = nil; - }; - if ($truthy(($truthy($a = item['$is_a?']($$($nesting, 'String'))) ? /^(\d+):(.*)/['$==='](item) : $a))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2)] - } else { - return item - };}, $$11.$$s = self, $$11.$$arity = 1, $$11)); - if ($truthy(newTable.$size()['$!='](21))) { - self.$raise("" + "invalid table size:" + (newTable.$size()) + "\n" + (newTable.$inspect()))}; - return newTable; - }, $HatsuneMiku_getD66Table$10.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["FT", "CWT", "BT", "TT", "RT", "OT", "RQT", "ST", "DKT", "DNT", "HKT", "HNT", "LKT", "LNT", "EKT", "ENT", "MKT", "MNT", "OPA", "OPB", "OHT", "OLT", "OIT", "OYT", "ORT", "OMT"], {"FT": $hash2(["name", "type", "table"], {"name": "ファンブル表", "type": "1D6", "table": ["周囲から活気が失われる。黒以外のすべてのネイロを一つずつ減らす。", "仲間に迷惑をかけてしまう。自分以外のPC全員の【生命力】が1点減少する。", "この失敗は後に祟るかもしれない……。自分の【生命力】が1D6点減少する。", "ココロに疲労感が満ちていく。自分がストレスを1点受ける。", "1D6を振ること。そのPCのコアが、その出目が1ならダークに、2ならホットに、3ならラブに、4ならエキセントリックに、5ならメランコリーに変化する。6だった場合、コアは変化しない。", "ラッキー!特に何も起こらない"]}), "CWT": $hash2(["name", "type", "table"], {"name": "致命傷表", "type": "1D6", "table": ["絶望的な攻撃を受ける。そのキャラクターは強制退出になる。", "苦痛の悲鳴をあげ、無惨にも崩れ落ちる。そのキャラクターは行動不能になる。また、黒のネイロが一つ増える。", "オトクイの一撃で、あなたは吹き飛ばされてしまう。そのキャラクターは行動不能になる。また、分類が装備のナンバーにストレスを1点受ける。", "強烈な一撃を受けて気絶する。そのキャラクターは行動不能になる。", "意識はあるが、立ち上がることができない。そのキャラクターは行動不能になる。次のシーンにまだ【生命力】が0点だった場合、自動的に1点に回復する。", "奇跡的に踏みとどまり、持ちこたえる。【生命力】が1点になる。"]}), "BT": $hash2(["name", "type", "table"], {"name": "休憩表", "type": "1D6", "table": ["仲間との楽しい時間。自分の【想い人】のパトスを一つ回復する。", "これまでの冒険を思い返す。自分の【能力値】のパトスを一つ回復する。", "自分のオトダマと会話する。【協力者】のパトスか、ナンバーのパトスを一つ回復する。", "体をゆっくり休める。自分の【生命力】を2D6点回復する。望むなら、回復を行う前に、自分の【活力】を決め直してもよい。", "お、ラッキー!いいもの見つけた!自分のコインを1枚増やす。", "ノイズストアに接続できた。各PCは、自分の【頭脳】のダイスの数と同じ個数まで、アプリを購入できる。"]}), "TT": $hash2(["name", "type", "table"], {"name": "目標表", "type": "1D6", "table": ["悪意。PCの中でもっとも【生命力】の低いもの一人を目標に選ぶ。もっとも低い【生命力】の持ち主が複数いる場合、その中から、GMが自由に一人目標を選ぶ。", "狡猾。パラグラフ1〜5の中で、もっとも高い数値のパラグラフにいるPC一人を目標に選ぶ。全員が圏外にいる場合、圏外にいるPC全員を目標に選ぶ。", "堅実。PCの中で、その脅威の「判定欄」に書かれた能力値がもっとも低いランクのキャラクター一人を目標に選ぶ。もっとも低いランクのキャラクターが複数いる場合、その中から、もっとも低いモッドのキャラクター一人を目標に選ぶ。モッドも同じ値だった場合、GMが自由に一人目標を選ぶ。", "豪快。PCの中でもっとも高いランクの【武勇】の持ち主一人を目標に選ぶ。もっとも高いランクの持ち主が複数いる場合、その中から、もっとも高いモッドの持ち主一人を目標に選ぶ。モッドも同じ値だった場合、GMが自由に一人目標を選ぶ。", "単純。パラグラフ1〜5の中で、もっとも低い数値のパラグラフにいるPC一人を目標に選ぶ。全員が圏外にいる場合、圏外にいるPC全員を目標に選ぶ。", "乱戦。その脅威のいるパラグラフの数値と数値が1離れたパラグラフにいるPC全員を目標に選ぶ。そのパラグラフにPCがいなかった場合、GMが自由に一人目標を選ぶ。"]}), "RT": $hash2(["name", "type", "table"], {"name": "関係表", "type": "1D6", "table": ["恋心(プラス)/殺意(マイナス)", "同情(プラス)/侮蔑(マイナス)", "憧憬(プラス)/嫉妬(マイナス)", "信頼(プラス)/疑い(マイナス)", "共感(プラス)/不気味(マイナス)", "大切(プラス)/面倒(マイナス)"]}), "OT": $hash2(["name", "type", "table"], {"name": "障害表", "type": "1D6", "table": ["あなたのココロに大きな変化が訪れる。1D6を振ること。そのPCのコアが、その出目が1ならダークに、2ならホットに、3ならラブに、4ならエキセントリックに、5ならメランコリーに変化する。6だった場合、コアは変化しない。", "あなたは肉体的に大きなダメージを負う。1D6点のダメージを受ける。", "ノイズの助けを借りて問題を解決する。コインを1D6枚を支払う必要がある。コインを支払う場合、ほかのPCからコインを譲ってもらってもよい。支払いが足りなかった場合、その差額分だけ自分の【生命力】を減らす。", "大きな疲労感を感じる。ストレスを1点受ける。", "思わず時間をつかってしまう。【タイム】が1点減少する。", "場にイヤな気配が満ちていく。黒のネイロが一つ増える。"]}), "RQT": $hash2(["name", "type", "table"], {"name": "リクエスト表", "type": "2D6", "table": ["そのエリアの風景が、あなたの【情景】へと書き換えられていく。「お前の始まりの物語を語れ。お前はこの地で何を思った?」", "あなたは、そのエリアの風景の中に懐かしいものを見つけ、自分の罪を思い出した。「何を見た?なにを悔いている?」", "そのエリアの風景が、あなたのコアと同じ色に染まる。あなたは、その風景の中になりたい自分の姿を見つける。「それがお前の望みか?お前は未来に何を求める?」", "あなたの脳裏に、人物欄に書かれた人物一人のイメージが浮かぶ。その人物は何かを囁き、あなたのココロが傷ついた。「そいつは誰だ?一体何と言ったのだ?」", "あなたは、そのエリアの風景の中に奇妙なものを見つけ、恐怖した。「何を見た?なぜそれを恐れる?」", "そのエリアにココロダンジョンの持ち主が現れる。その人物は、お前に質問してくる。「私をどう思ってる?なぜ、私を助ける?」", "あなたのオトダマの姿が、あなたのよく知っている人物に変わる「その人物は誰だ?そいつをどう思っている?」", "そのエリアに、あなたの持つナンバーが響き渡る。「これがお前のウタか?そのウタの名はなんだ?」", "あなたのオトダマの姿が、あなたの好きな人物の姿に変わる。「それがお前が焦がれる人物か。そいつをどうしたい?」", "そのエリアの風景にあなたの日常が浮かび上がる。「お前は何をしている?その暮らしをどう思っている?」", "あなたの目の前に、あなたの死体が横たわっている。「お前を殺すものは何だ?お前は誰に殺される?」"]}), "ST": $hash2(["name", "type", "table"], {"name": "情景表", "type": "D66", "table": ["11:立ち並ぶ本棚の森", "12:夕日が差し込む教室", "13:鳴り止まない踏切", "14:ビルから見下ろした街並み", "15:二人で見た星空", "16:液晶画面に映る奇妙な光景", "22:ガラス窓に並ぶ雨だれ", "23:植物園の温室", "24:屋台が並ぶ祭りの風景", "25:陽炎が立ちのぼるアスファルト", "26:0時を示す時計の針", "33:無機質な白い天井", "34:暗闇に浮かび上がるヘッドライト", "35:後ろからついてくる野良猫", "36:一面の花畑", "44:あなたを見つめる大勢の観衆", "45:降り積もる雪", "46:古めかしい洋館の応接間", "55:おとぎ話に出てくるような森", "56:深夜のコンビニ", "66:誰もいない体育館"]}), "DKT": $hash2(["name", "type", "table"], {"name": "ダーク・キーワード表", "type": "D66", "table": ["11:崩壊する楽園", "12:空に堕ちる", "13:優しい暴力", "14:沈黙の掟", "15:闇に溺れる", "16:こぼれ落ちた命", "22:行き止まりの絶望", "23:漆黒の翼", "24:眠れぬ夜", "25:避けられぬ運命", "26:斬り裂かれた景色", "33:からっぽな自分", "34:仮面の奥", "35:月光中毒", "36:昏い魔術", "44:……オブザデッド", "45:ココロを殺す", "46:感染する破滅", "55:愛の鎖", "56:残酷な真実", "66:デスゲーム"]}), "DNT": $hash2(["name", "type", "table"], {"name": "ダーク・名前表", "type": "D66", "table": ["11:ダーク/濁、搦 ネロ/音呂、寝路", "12:クロト/黒斗、玄徒 ヤミ/夜美、闇", "13:ネクロ/根黒、寝喰 マコ/魔子、混乎", "14:カゲオ/影男、陰夫 オニコ/鬼子、隠忍呼", "15:アクタ/芥、悪太 ホタル/蛍、歩足", "16:マオウ/魔王、万凹 ミダラ/淫、美堕裸", "22:マミヤ/魔美也、狸夜 ジャミ/邪美、蛇実", "23:ドクロ/髑髏、毒炉 ヨミ/黄泉、詠", "24:マクラ/枕、真暗 サツキ/殺鬼、五月", "25:ゲドウ/外道、戯堂 サヤ/小夜、鞘", "26:ジゴク/地獄、慈極 ウマル/埋、兎丸", "33:エンド/怨人、終 ヨハネ/夜羽、世刎", "34:ノロイ/呪、鈍 カバネ/屍、椛音", "35:アクム/悪夢、飽夢 クサリ/腐、鎖", "36:バツ/罰、× ニエ/贄、沸", "44:ネガ/音我、願 リリス/璃々子、離里素", "45:ウツロ/虚、洞 ネタミ/妬美、寝多実", "46:ハジメ/始、創 ホロビ/滅、亡", "55:ザイン/罪印、沙陰 リンボ/淋墓、辺獄", "56:ハラワタ/腑、祓輪太 ユガミ/歪、由神", "66:イミ/忌、逝美 ムイミ/無意味、無為巳"]}), "HKT": $hash2(["name", "type", "table"], {"name": "ホット・キーワード表", "type": "D66", "table": ["11:真夜中をぶっ壊す", "12:夢を打ち上げろ", "13:譲れない明日", "14:あふれ出す衝動", "15:獣を解き放て", "16:蒸発した涙", "22:高らかに叫べ", "23:負けられない戦い", "24:握りしめた拳", "25:疾走する青春", "26:ココロに従え", "33:がんばれ", "34:そのまま進め", "35:自分の旗", "36:抗い壊し突き進む", "44:咲き誇る情熱の花", "45:暑苦しい友情", "46:オレ色に染まれ", "55:世界に八つ当たり", "56:消せない炎", "66:オーバードライブ"]}), "HNT": $hash2(["name", "type", "table"], {"name": "ホット・名前表", "type": "D66", "table": ["11:レッド/烈怒、煉集 アカネ/赤音、茜", "23:タケル/武、猛 ヒトミ/瞳、仁美", "36:ジョウ/情、丈 アオリ/煽、亜織", "12:アツシ/熱、純志 カンナ/神奈、柑菜", "24:グレン/紅蓮、九煉 ナツコ/夏子、懐子", "44:ロック/六句、麓 フォルテ/鳳流弖、彫照", "13:カケル/駆、賭 ハル/晴、春", "25:アラシ/嵐、荒 ヒカル/光、晃", "45:ヤマト/大和、岳斗 イサミ/伊佐美、勇美", "14:ガッツ/牙突、勝 アカリ/紅莉、明里", "26:エンジョウ/炎上、円定 コマチ/小町、小真知", "46:リュウセイ/流星、龍盛 ミライ/未来、美良依", "15:ケン/剣、拳 アスカ/明日香、飛鳥", "33:レツ/烈、裂 リズム/理澄、李珠夢", "55:イカル/怒、鵤 ヒマワリ/向日葵、火回", "16:ゴウ/豪、剛 ヒミコ/日美子、卑弥呼", "34:リキ/力、陸希 キョウカ/響歌、驚花", "56:ツトム/努、勉 ハナビ/花火、羽夏妃", "22:ヒイロ/火色、陽彩 アキラ/晶、爽", "35:ホムラ/焔、吠叢 カグヤ/輝夜、赫映", "66:レオ/伶央、獅王 マツリ/祭、茉莉"]}), "LKT": $hash2(["name", "type", "table"], {"name": "ラブ・キーワード表", "type": "D66", "table": ["11:大人の恋", "12:ドキドキが止まらない", "13:つないだ手", "14:世界を敵に回しても", "15:重なる声", "16:君のためなら死ねる", "22:甘い口づけ", "23:まぶたをとじて", "24:キミとボク", "25:好きとか嫌いとか", "26:いつまでも", "33:抱きしめたい", "34:75億と1千五百万人愛してる", "35:自動的な恋", "36:会いたい", "44:伝えたいコトバ", "45:ありがとう", "46:時間を止めて", "55:大好き", "56:素敵な贈り物", "66:ビューティフルワールド"]}), "LNT": $hash2(["name", "type", "table"], {"name": "ラブ・名前表", "type": "D66", "table": ["11:シアン/詩庵、思杏 アオイ/葵、蒼生", "12:ソナタ/奏名太、其方 イズミ/泉、出海", "13:ツナグ/繋、継 カレン/可憐、歌恋", "14:ミノル/実、稔 コイ/恋、鯉", "15:ユウ/優、悠 ラブ/良舞、羅步", "16:レイン/玲音、霊印 アマミ/甘味、天海", "22:ソウヤ/想夜、添也 フミ/文、芙美", "23:イトシ/糸糸、意俊 コイシ/恋志、小石", "24:エガオ/笑顔、描生 オモイ/想、念", "25:マコト/誠、真実 マナ/真菜、愛", "26:ユウリ/有理、悠里 ケイ/恵、佳", "33:チヒロ/千尋、茅紘 ウララ/麗、占", "34:トモ/友、杜望 ヒナ/雛、比奈", "35:ソラ/空、宙 ツユ/露、梅雨", "36:ユウダイ/雄大、優大 ノゾミ/望、希海", "44:ハグ/剥、抱 キス/喜好、口吻", "45:ショウタ/翔太、祥太 アイ/愛、藍", "46:ジュン/純、潤 ミサオ/美沙緒、操", "55:リョウ/涼、猟 イチズ/一途、意地図", "56:シグレ/時雨、紫暮 アオバ/青葉、碧羽", "66:ロミオ/路美雄、露澪 ロマン/浪漫、絽萬"]}), "EKT": $hash2(["name", "type", "table"], {"name": "エキセントリック・キーワード表", "type": "D66", "table": ["11:シェフのきまぐれニルヴァーナ", "23:宇宙人とデート", "36:ぷるぷる", "12:おかず食べ過ぎ", "24:まいにち寝正月", "44:夜明けのツタンカーメン", "13:バイバイバイアグラ", "25:猫がにゃー", "45:半額の宴", "14:おふとん王国の攻防", "26:道草にがい", "46:超気持ちいいなにか", "15:ぐるぐるとクルクル", "33:ブシドーロック!サムライパンク!", "55:いあ!いあ!はすたあ!", "16:ゴリラの千年王国", "34:冷やしインド", "56:小学生に貯金で負けた", "22:くもん式フランケンシュタイナー", "35:生きててよかった", "66:秒速1ポロンクセマ"]}), "ENT": $hash2(["name", "type", "table"], {"name": "エキセントリック・名前表", "type": "D66", "table": ["11:ライム/来夢、雷鵡 ミドリ/緑、美登里", "12:ランポ/乱歩、蘭舗 ビビリ/恐、美々裏", "13:シラズ/不知、調頭 ヒスイ/翡翠、陽彗", "14:ムウ/夢生、無 キノコ/茸、紀乃子", "15:ネコヒコ/猫彦、寝子日子 イヌコ/犬子、夷猫", "16:ダダ/駄々、蛇陀 キリコ/切子、霧湖", "22:イケメン/活面、逝麺 ラムネ/来夢音、螺旨", "23:キョウスケ/狂介、京助 ランマ/乱麻、爛漫", "24:ネジ/螺子、寝児 アリス/有栖、亜梨子", "25:マワル/回、環 タタミ/畳、多々実", "26:キュウ/球、Q ズキン/頭巾、厨琴", "33:サバン/沙蛮、裂卍 マニア/摩尼亜、間合", "34:カエル/帰、蛙 エリマキ/襟巻、絵里真希", "35:ナゾウ/謎宇、何造 カンノン/観音、疳暢", "36:イッキュウ/一休、逸宮 ミロク/弥勒、診録", "44:シュール/酒潤、終琉 カプリ/華降、噛布里", "45:キジン/奇人、鬼神 フシギ/不思議、節黄", "46:カブキ/歌舞伎、傾 メロン/芽論、女侖", "55:ジョーカー/冗歌、浄化 ピエロ/秘絵呂、道化師", "56:ウイロウ/外郎、初弄 マッチャ/抹茶、末耶", "66:ビックリ/吃驚、! ハテナ/果菜、?"]}), "MKT": $hash2(["name", "type", "table"], {"name": "メランコリー・キーワード表", "type": "D66", "table": ["11:ごめんなさい", "12:甘い甘い逃避", "13:ひとりぼっち", "14:ズルい世界", "15:果たせなかった約束", "16:取り返しのつかない言葉", "22:いっそ死にたい", "23:置いてきた夢", "24:見あげた青空", "25:きみの嘘", "26:すれ違う言葉", "33:幸せだった昨日", "34:こんなはずじゃなかった", "35:別れてしまった二つの道", "36:また会えたらいいね", "44:ここではないどこか", "45:青春の終わり", "46:大好きだった膝の上", "55:誰かぼくをほめて", "56:高潔な裏切り", "66:ナルシズム"]}), "MNT": $hash2(["name", "type", "table"], {"name": "メランコリー・名前表", "type": "D66", "table": ["11:ヴァイス/灰主、唄守 マシロ/真白、万代", "12:キズ/傷、疵 ダレカ/誰香、惰麗華", "13:ユレル/揺、遊玲流 エモ/絵萌、恵面", "14:オボロ/朧、憶露 ホノカ/仄、穂乃香", "15:メロ/夢露、芽朗 シズ/静、志津", "16:ヒイラギ/柊、氷刺木 カタミ/形見、片実", "22:リネン/理然、離念 スノウ/素皇、珠瑙", "23:セツナ/切、刹那 シノブ/偲、忍", "24:ナミダ/涙、波太 カスカ/霞歌、幽", "25:ムスビ/結、息日 カコ/過去、寡子", "26:ウソ/嘘、宇曽 アイカ/哀歌、愛香", "33:ペイン/閉音、病印 ツラミ/辛美、貫実", "34:ヨリミチ/寄道、頼道 シラユキ/白雪、知由樹", "35:ヒトリ/独、一人 オトナ/音鳴、乙菜", "36:スバル/昴、透遙 ハルカ/遥、晴香", "44:バイバイ/梅云、吠々 バニラ/香子蘭、芭韮", "45:トオル/透、通 リツ/律、慄", "46:タビ/旅、足袋 チギリ/契、千切", "55:サイゴ/彩吾、最期 サクラ/桜、咲良", "56:アワレ/憐、哀 ヒメイ/悲鳴、姫衣", "66:ヘヴン/戸聞、天国 ガラス/硝子、枯州"]}), "OPA": $hash2(["name", "type", "table"], {"name": "オトダマ性格表A", "type": "D66", "table": ["11:さわやか", "12:単純", "13:目立ちたがり", "14:笑い上戸", "15:P大好き", "16:がんばり屋", "22:ひょうきん", "23:ほれっぽい", "24:勇敢", "25:好奇心旺盛", "26:優しい", "33:八方美人", "34:博愛", "35:感情的", "36:おしゃべり", "44:無鉄砲", "45:元気", "46:楽観的", "55:自信家", "56:自由", "66:好戦的"]}), "OPB": $hash2(["name", "type", "table"], {"name": "オトダマ性格表B", "type": "D66", "table": ["11:悲観的", "12:大人しい", "13:臆病", "14:クール", "15:のんき", "16:マジメ", "22:夢想家", "23:常識人", "24:サイコ", "25:おおらか", "26:平和主義者", "33:慎重", "34:合理主義者", "35:無口", "36:照れ屋", "44:おひとよし", "45:なまけもの", "46:腰が低い", "55:疑い深い", "56:謙虚", "66:嘘つき"]}), "OHT": $hash2(["name", "type", "table"], {"name": "オトダマ趣味表", "type": "D66", "table": ["11:散歩", "23:温泉", "36:オークション", "12:うわさ話", "24:ギャンブル", "44:パズル", "13:寝る", "25:動物", "45:占い", "14:読書", "26:アニメ", "46:焼き肉", "15:アイドル", "33:ガーデニング", "55:スポーツ観戦", "16:甘味", "34:漫画", "56:ゲーム", "22:飲み会", "35:ドラマ", "66:動画配信"]}), "OLT": $hash2(["name", "type", "table"], {"name": "オトダマ外見表", "type": "D66", "table": ["11:デフォルト", "12:王子様/お姫様", "13:和装", "14:獣系", "15:ゴス", "16:眼鏡", "22:スポーツ", "23:軍服", "24:天使/悪魔の羽", "44:季節イベント", "25:学生服", "26:メガホン", "33:スポーツ系", "34:パンク", "35:フォーマル", "36:ジャージ", "45:白衣", "46:童話コス", "55:バニー", "56:水着", "66:戦隊コス"]}), "OIT": $hash2(["name", "type", "table"], {"name": "オトダマ一人称表", "type": "2D6", "table": ["それがし", "おいら/あたい", "自分の名前", "おれ/あたし", "わたくし", "私", "ぼく/うち", "自分", "俺様/あたくし", "余/妾", "ミー"]}), "OYT": $hash2(["name", "type", "table"], {"name": "オトダマ呼び名表", "type": "2D6", "table": ["ユー", "(PCの名前)たん/きゅん", "同志(PCの名前)", "キミ", "(PCの名前)くん/ちゃん", "マスター", "(PCの名前)さん", "(PCの名前)様", "あなた", "(PCの名前)氏/女史", "(PCの名前)殿"]}), "ORT": $hash2(["name", "type", "table"], {"name": "リアクション表", "type": "1D6", "table": ["オトダマの表の性格を表すセリフ", "オトダマの裏の性格を表すセリフ", "PCを応援するセリフ", "PCをからかうセリフ", "趣味にまつわるセリフ", "攻撃を行うときのセリフ"]}), "OMT": $hash2(["name", "type", "table"], {"name": "出会い表", "type": "2D6", "table": ["名門オトダマ使い。あなたは、代々オトダマを操る一族に生まれました。あなたには、幼い頃から相棒となるオトダマがいます。あなたは、そのオトダマと共に育ちました。", "傷ついたオトダマ。ある日、あなたは傷ついたオトダマを発見しました。意識を失い、今にも消えそうなオトダマに触れると、オトダマは意識を取り戻し、あなたを恩人と慕うようになりました。", "見えないお友達。あなたは孤独な幼年期を過ごしてきました。そのとき、あなたを導いてくれたのが、あなたのオトダマです。オトダマは、あなたに他人のココロのウタを聞き、人々を助ける術を教えてくれました。", "再生。あなたはオトクイに自分のココロのウタを食べられました。オトダマ使いに憑依したオトクイが倒されたとき、自分のココロの中から新たなオトダマが生まれました。", "愛するココロ。あなたには、子どもの頃から大好きだったウタがありました。ある日、そのウタを口ずさんでいるとき、突然、後ろから拍手の音が聞こえました。振り向くと、そこにオトダマがいました。", "動画。あなたは、動画を通じて歌を聞くのが好きでした。あるとき、聞いたことのないような素敵なウタが聞こえてきたかと思うと、画面の向こうからオトダマが飛び出してきました。", "喪失。ある日、あなたは悲劇に見舞われました。そのとき、あなたはとても大切にしていた何かを失いました。その失ったものを補うかのように、あなたの側にオトダマが現れました。", "受け継がれるウタ。あなたのオトダマは、あなたが大好きだった人の相棒だったオトダマでした。しかし、その人は悲劇に出会い、あなたの元を去りました。そのとき、あなたにオトダマを託したのです。", "謎のメール。ある日、友人からあなたの元に一通のメールが送られてきました。そのメールを開くと、不思議な音楽が流れ出し、オトダマが現れました。その友人とは、それ以来、連絡がつきません。", "封印。ある日、あなたは古いレコード屋で一曲の音盤に出会います。その音盤を再生してみると、オトダマが現れました。そして、オトダマは「封印を解いてくれたお礼に、しばらく付き合ってあげる」と言ってきました。", "一目惚れ。以前、あなたは様々な楽曲を発表していました。すると、その楽曲に一目惚れしたと言って、あなたの元にオトダマが押しかけてきました。以来、そのオトダマに付きまとわれる毎日です。"]})}).$freeze()); - return self.$setPrefixes($rb_plus(["R([A-DS]|\\d+).*"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Hieizan.js b/src/assets/dicebot/Hieizan.js deleted file mode 100644 index 805ae9959..000000000 --- a/src/assets/dicebot/Hieizan.js +++ /dev/null @@ -1,52 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$<=', '$/', '$>=']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Hieizan'); - - var $nesting = [self].concat($parent_nesting), $Hieizan_check_1D100$1; - - - Opal.const_set($nesting[0], 'ID', "Hieizan"); - Opal.const_set($nesting[0], 'NAME', "比叡山炎上"); - Opal.const_set($nesting[0], 'SORT_KEY', "ひえいさんえんしよう"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "大成功、自動成功、失敗、自動失敗、大失敗の自動判定を行います。\n"); - return (Opal.def(self, '$check_1D100', $Hieizan_check_1D100$1 = function $$check_1D100(total, _dice_total, _cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if ($truthy($rb_le(total, 1))) { - if ($truthy($rb_le(total, $rb_divide(target, 5)))) { - return " > 大成功" - } else { - return " > 自動成功" - } - } else if ($truthy($rb_ge(total, 100))) { - return " > 大失敗" - } else if ($truthy($rb_ge(total, 96))) { - return " > 自動失敗" - } else if ($truthy($rb_le(total, target))) { - if ($truthy($rb_le(total, $rb_divide(target, 5)))) { - return " > 大成功" - } else { - return " > 成功" - } - } else { - return " > 失敗" - }; - }, $Hieizan_check_1D100$1.$$arity = 4), nil) && 'check_1D100'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/HouraiGakuen.js b/src/assets/dicebot/HouraiGakuen.js deleted file mode 100644 index de82b19e2..000000000 --- a/src/assets/dicebot/HouraiGakuen.js +++ /dev/null @@ -1,225 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$===', '$getRollResult', '$getMedResult', '$getResResult', '$getInnyouResult', '$getHattokuResult', '$getGogyouResult', '$=~', '$to_i', '$last_match', '$roll', '$getCheckResult', '$sort', '$map', '$split', '$to_proc', '$isFamble', '$isCritical', '$<=', '$getTargetFromValue', '$+', '$-', '$getResistCheckResult', '$getResultRank', '$>', '$<', '$index', '$times', '$even?', '$<<', '$getOddEven', '$join', '$getGogyouTable', '$get_table_by_1d6']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'HouraiGakuen'); - - var $nesting = [self].concat($parent_nesting), $HouraiGakuen_rollDiceCommand$1, $HouraiGakuen_getRollResult$2, $HouraiGakuen_getCheckResult$3, $HouraiGakuen_isFamble$4, $HouraiGakuen_isCritical$5, $HouraiGakuen_getMedResult$6, $HouraiGakuen_getTargetFromValue$7, $HouraiGakuen_getResResult$8, $HouraiGakuen_getResistCheckResult$9, $HouraiGakuen_getResultRank$10, $HouraiGakuen_getInnyouResult$11, $HouraiGakuen_getHattokuResult$13, $HouraiGakuen_getOddEven$15, $HouraiGakuen_getGogyouResult$16, $HouraiGakuen_getGogyouTable$17; - - - Opal.const_set($nesting[0], 'ID', "HouraiGakuen"); - Opal.const_set($nesting[0], 'NAME', "蓬莱学園の冒険!!"); - Opal.const_set($nesting[0], 'SORT_KEY', "ほうらいかくえんのほうけん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・基本ロール:ROL(x+n)\n" + " ROLL(自分の能力値 + 簡単値 + 応石 or 蓬莱パワー)と記述します。3D6をロールし、成功したかどうかを表示します。\n" + " 例)ROL(4+6)\n" + "・対人判定:MED(x,y)\n" + " 自分の能力値 x と 相手の能力値 y でロールを行い、成功したかどうかを表示します。\n" + " 例)MED(5,2)\n" + "・対抗判定:RES(x,y)\n" + " 自分の能力値 x と 相手の能力値 y で相互にロールし、どちらが成功したかを表示します。両者とも成功 or 失敗の場合は引き分けとなります。\n" + " 例)RES(6,4)\n" + "・陰陽コマンド INY\n" + " 例)Hourai : 陽(奇数の方が多い)\n" + "・五行コマンド:GOG\n" + " 例)Hourai : 五行表(3) → 五行【土】\n" + "・八徳コマンド:HTK\n" + " 例)Hourai : 仁義八徳は、【義】(奇数、奇数、偶数)\n"); - self.$setPrefixes(["ROL.*", "MED\\(\\d+,\\d+\\)", "RES\\(\\d+,\\d+\\)", "INY.*", "HTK.*", "GOG.*"]); - - Opal.def(self, '$rollDiceCommand', $HouraiGakuen_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - - $case = command; - if (/^ROL/i['$===']($case)) {return self.$getRollResult(command)} - else if (/^MED/i['$===']($case)) {return self.$getMedResult(command)} - else if (/^RES/i['$===']($case)) {return self.$getResResult(command)} - else if (/^INY/i['$===']($case)) {return self.$getInnyouResult(command)} - else if (/^HTK/i['$===']($case)) {return self.$getHattokuResult(command)} - else if (/^GOG$/i['$===']($case)) {return self.$getGogyouResult(command)}; - return nil; - }, $HouraiGakuen_rollDiceCommand$1.$$arity = 1); - Opal.const_set($nesting[0], 'CRITICAL', "大成功"); - Opal.const_set($nesting[0], 'SUCCESS', "成功"); - Opal.const_set($nesting[0], 'FAILURE', "失敗"); - Opal.const_set($nesting[0], 'FUMBLE', "大失敗"); - - Opal.def(self, '$getRollResult', $HouraiGakuen_getRollResult$2 = function $$getRollResult(command) { - var $a, $b, self = this, target = nil, total = nil, diceText = nil, result = nil; - - - if ($truthy(/rol([-\d]+)/i['$=~'](command))) { - } else { - return nil - }; - target = $$($nesting, 'Regexp').$last_match(1).$to_i(); - $b = self.$roll(3, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - result = self.$getCheckResult(diceText, total, target); - return "" + "(3d6<=" + (target) + ") > 出目" + (diceText) + "=合計" + (total) + " > " + (result); - }, $HouraiGakuen_getRollResult$2.$$arity = 1); - - Opal.def(self, '$getCheckResult', $HouraiGakuen_getCheckResult$3 = function $$getCheckResult(diceText, total, target) { - var self = this, diceList = nil; - - - diceList = $send(diceText.$split(","), 'map', [], "to_i".$to_proc()).$sort(); - if ($truthy(self.$isFamble(diceList))) { - return $$($nesting, 'FUMBLE')}; - if ($truthy(self.$isCritical(diceList))) { - return $$($nesting, 'CRITICAL')}; - if ($truthy($rb_le(total, target))) { - return $$($nesting, 'SUCCESS')}; - return $$($nesting, 'FAILURE'); - }, $HouraiGakuen_getCheckResult$3.$$arity = 3); - - Opal.def(self, '$isFamble', $HouraiGakuen_isFamble$4 = function $$isFamble(diceList) { - var self = this; - - return diceList['$===']([6, 6, 6]) - }, $HouraiGakuen_isFamble$4.$$arity = 1); - - Opal.def(self, '$isCritical', $HouraiGakuen_isCritical$5 = function $$isCritical(diceList) { - var self = this; - - return diceList['$===']([1, 2, 3]) - }, $HouraiGakuen_isCritical$5.$$arity = 1); - - Opal.def(self, '$getMedResult', $HouraiGakuen_getMedResult$6 = function $$getMedResult(command) { - var $a, $b, self = this, yourValue = nil, enemyValue = nil, target = nil, total = nil, diceText = nil, result = nil; - - - if ($truthy(/med\((\d+),(\d+)\)/i['$=~'](command))) { - } else { - return nil - }; - yourValue = $$($nesting, 'Regexp').$last_match(1).$to_i(); - enemyValue = $$($nesting, 'Regexp').$last_match(2).$to_i(); - target = self.$getTargetFromValue(yourValue, enemyValue); - $b = self.$roll(3, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - result = self.$getCheckResult(diceText, total, target); - return "" + "(あなたの値" + (yourValue) + "、相手の値" + (enemyValue) + "、3d6<=" + (target) + ") > 出目" + (diceText) + "=合計" + (total) + " > " + (result); - }, $HouraiGakuen_getMedResult$6.$$arity = 1); - - Opal.def(self, '$getTargetFromValue', $HouraiGakuen_getTargetFromValue$7 = function $$getTargetFromValue(yourValue, enemyValue) { - var self = this; - - return $rb_plus(yourValue, $rb_minus(10, enemyValue)) - }, $HouraiGakuen_getTargetFromValue$7.$$arity = 2); - - Opal.def(self, '$getResResult', $HouraiGakuen_getResResult$8 = function $$getResResult(command) { - var $a, $b, self = this, yourValue = nil, enemyValue = nil, yourTarget = nil, enemyTarget = nil, yourTotal = nil, yourDiceText = nil, enemyTotal = nil, enemyDiceText = nil, yourResult = nil, enemyResult = nil, result = nil; - - - if ($truthy(/res\((\d+),(\d+)\)/i['$=~'](command))) { - } else { - return nil - }; - yourValue = $$($nesting, 'Regexp').$last_match(1).$to_i(); - enemyValue = $$($nesting, 'Regexp').$last_match(2).$to_i(); - yourTarget = self.$getTargetFromValue(yourValue, enemyValue); - enemyTarget = self.$getTargetFromValue(enemyValue, yourValue); - $b = self.$roll(3, 6), $a = Opal.to_ary($b), (yourTotal = ($a[0] == null ? nil : $a[0])), (yourDiceText = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$roll(3, 6), $a = Opal.to_ary($b), (enemyTotal = ($a[0] == null ? nil : $a[0])), (enemyDiceText = ($a[1] == null ? nil : $a[1])), $b; - yourResult = self.$getCheckResult(yourDiceText, yourTotal, yourTarget); - enemyResult = self.$getCheckResult(enemyDiceText, enemyTotal, enemyTarget); - result = self.$getResistCheckResult(yourResult, enemyResult); - return "" + "あなたの値" + (yourValue) + "、相手の値" + (enemyValue) + "\n" + "(あなたのロール 3d6<=" + (yourTarget) + ") > " + (yourDiceText) + "=" + (yourTotal) + " > " + (yourResult) + "\n" + "(相手のロール 3d6<=" + (enemyTarget) + ") > " + (enemyDiceText) + "=" + (enemyTotal) + " > " + (enemyResult) + "\n" + ">" + (result); - }, $HouraiGakuen_getResResult$8.$$arity = 1); - - Opal.def(self, '$getResistCheckResult', $HouraiGakuen_getResistCheckResult$9 = function $$getResistCheckResult(yourResult, enemyResult) { - var self = this, yourRank = nil, enemyRank = nil; - - - yourRank = self.$getResultRank(yourResult); - enemyRank = self.$getResultRank(enemyResult); - if ($truthy($rb_gt(yourRank, enemyRank))) { - return "あなたが勝利"}; - if ($truthy($rb_lt(yourRank, enemyRank))) { - return "相手が勝利"}; - return "引き分け"; - }, $HouraiGakuen_getResistCheckResult$9.$$arity = 2); - - Opal.def(self, '$getResultRank', $HouraiGakuen_getResultRank$10 = function $$getResultRank(result) { - var self = this, ranks = nil; - - - ranks = [$$($nesting, 'FUMBLE'), $$($nesting, 'FAILURE'), $$($nesting, 'SUCCESS'), $$($nesting, 'CRITICAL')]; - return ranks.$index(result); - }, $HouraiGakuen_getResultRank$10.$$arity = 1); - - Opal.def(self, '$getInnyouResult', $HouraiGakuen_getInnyouResult$11 = function $$getInnyouResult(_command) { - var $$12, self = this, oddCount = nil, evenCount = nil; - - - oddCount = 0; - evenCount = 0; - $send((3), 'times', [], ($$12 = function(){var self = $$12.$$s || this, $a, $b, dice = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy(dice['$even?']())) { - return (evenCount = $rb_plus(evenCount, 1)) - } else { - return (oddCount = $rb_plus(oddCount, 1)) - };}, $$12.$$s = self, $$12.$$arity = 0, $$12)); - if ($truthy($rb_lt(evenCount, oddCount))) { - return "陽(奇数の方が多い)" - } else { - return "陰(偶数の方が多い)" - }; - }, $HouraiGakuen_getInnyouResult$11.$$arity = 1); - - Opal.def(self, '$getHattokuResult', $HouraiGakuen_getHattokuResult$13 = function $$getHattokuResult(_command) { - var $$14, self = this, oddEvenList = nil, oddEvenText = nil, $case = nil; - - - oddEvenList = []; - $send((3), 'times', [], ($$14 = function(){var self = $$14.$$s || this; - - return oddEvenList['$<<'](self.$getOddEven())}, $$14.$$s = self, $$14.$$arity = 0, $$14)); - oddEvenText = oddEvenList.$join("、"); - return (function() {$case = oddEvenText; - if ("奇数、奇数、奇数"['$===']($case)) {return "" + "仁義八徳は、【仁】(" + (oddEvenText) + ")"} - else if ("奇数、奇数、偶数"['$===']($case)) {return "" + "仁義八徳は、【義】(" + (oddEvenText) + ")"} - else if ("奇数、偶数、奇数"['$===']($case)) {return "" + "仁義八徳は、【礼】(" + (oddEvenText) + ")"} - else if ("奇数、偶数、偶数"['$===']($case)) {return "" + "仁義八徳は、【智】(" + (oddEvenText) + ")"} - else if ("偶数、奇数、奇数"['$===']($case)) {return "" + "仁義八徳は、【忠】(" + (oddEvenText) + ")"} - else if ("偶数、奇数、偶数"['$===']($case)) {return "" + "仁義八徳は、【信】(" + (oddEvenText) + ")"} - else if ("偶数、偶数、奇数"['$===']($case)) {return "" + "仁義八徳は、【孝】(" + (oddEvenText) + ")"} - else if ("偶数、偶数、偶数"['$===']($case)) {return "" + "仁義八徳は、【悌】(" + (oddEvenText) + ")"} - else {return "異常終了"}})(); - }, $HouraiGakuen_getHattokuResult$13.$$arity = 1); - - Opal.def(self, '$getOddEven', $HouraiGakuen_getOddEven$15 = function $$getOddEven() { - var $a, $b, self = this, dice = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy(dice['$even?']())) { - return "偶数"}; - return "奇数"; - }, $HouraiGakuen_getOddEven$15.$$arity = 0); - - Opal.def(self, '$getGogyouResult', $HouraiGakuen_getGogyouResult$16 = function $$getGogyouResult(_command) { - var $a, $b, self = this, type = nil, table = nil, text = nil, number = nil, output = nil; - - - type = "五行表"; - table = self.$getGogyouTable(); - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - output = "" + (type) + "(" + (number) + ") > " + (text); - return output; - }, $HouraiGakuen_getGogyouResult$16.$$arity = 1); - return (Opal.def(self, '$getGogyouTable', $HouraiGakuen_getGogyouTable$17 = function $$getGogyouTable() { - var self = this, table = nil; - - - table = ["五行【木】", "五行【火】", "五行【土】", "五行【金】", "五行【水】", "五行は【任意選択】"]; - return table; - }, $HouraiGakuen_getGogyouTable$17.$$arity = 0), nil) && 'getGogyouTable'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/HuntersMoon.js b/src/assets/dicebot/HuntersMoon.js deleted file mode 100644 index 0c574b8f0..000000000 --- a/src/assets/dicebot/HuntersMoon.js +++ /dev/null @@ -1,294 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$==', '$<=', '$>=', '$upcase', '$===', '$hm_city_location_table', '$hm_small_location_table', '$hm_hot_location_table', '$hm_freezing_location_table', '$hm_hit_location_table', '$hm_monobeast_action_table', '$!', '$nil?', '$last_match', '$to_i', '$get_strange_ability_table_result', '$hm_social_skill_table', '$hm_head_skill_table', '$hm_arm_skill_table', '$hm_trunk_skill_table', '$hm_leg_skill_table', '$hm_environmental_skill_table', '$hm_encount_table', '$getTableCommandResult', '$get_table_by_1d6', '$get_table_by_2d6', '$get_strange_ability_table_1', '$get_strange_ability_table_2', '$times', '$!=', '$+', '$roll', '$odd?', '$[]', '$get_table_by_d66', '$to_s', '$empty?', '$freeze', '$setPrefixes', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'HuntersMoon'); - - var $nesting = [self].concat($parent_nesting), $HuntersMoon_initialize$1, $HuntersMoon_check_2D6$2, $HuntersMoon_rollDiceCommand$3, $HuntersMoon_hm_city_location_table$4, $HuntersMoon_hm_small_location_table$5, $HuntersMoon_hm_hot_location_table$6, $HuntersMoon_hm_freezing_location_table$7, $HuntersMoon_hm_encount_table$8, $HuntersMoon_hm_monobeast_action_table$9, $HuntersMoon_hm_hit_location_table$10, $HuntersMoon_getStrangeAbilityTable1$11, $HuntersMoon_get_strange_ability_table_result$12, $HuntersMoon_get_strange_ability_table_1$14, $HuntersMoon_get_strange_ability_table_2$15, $HuntersMoon_hm_social_skill_table$16, $HuntersMoon_hm_head_skill_table$17, $HuntersMoon_hm_arm_skill_table$18, $HuntersMoon_hm_trunk_skill_table$19, $HuntersMoon_hm_leg_skill_table$20, $HuntersMoon_hm_environmental_skill_table$21; - - - Opal.const_set($nesting[0], 'ID', "HuntersMoon"); - Opal.const_set($nesting[0], 'NAME', "ハンターズ・ムーン"); - Opal.const_set($nesting[0], 'SORT_KEY', "はんたあすむうん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + " 判定時にクリティカルとファンブルを自動判定します。\n" + "・各種表\n" + " ・遭遇表 (ET)\n" + " ・都市ロケーション表 (CLT)\n" + " ・閉所ロケーション表 (SLT)\n" + " ・炎熱ロケーション表 (HLT)\n" + " ・冷暗ロケーション表 (FLT)\n" + " ・部位ダメージ決定表 (DLT)\n" + " ・モノビースト行動表 (MAT)\n" + " ・異形アビリティー表 (SATx) (xは個数)\n" + " ・異形アビリティー表2 (SA2Tx) (xは個数)\n" + "  →表1と表2の振り分けも判定\n" + " ・指定特技(社会)表  (TST)\n" + " ・指定特技(頭部)表  (THT)\n" + " ・指定特技(腕部)表  (TAT)\n" + " ・指定特技(胴部)表  (TBT)\n" + " ・指定特技(脚部)表  (TLT)\n" + " ・指定特技(環境)表  (TET)\n" + " ・異形化表      (MST)\n" + " ・代償表       (ERT)\n" + " ・ディフェンス遭遇表1/2/3 (DS1ET/DS2ET/DS3ET)\n" + " ・エスケープ遭遇表1/2/3 (EE1ET/EE2ET/EE3ET)\n" + " ・エスコート遭遇表1/2/3 (ET1ET/ET2ET/ET3ET)\n" + " ・トラッキング遭遇表1/2/3 (TK1ET/TK2ET/TK3ET)\n" + "・D66ダイスあり\n"); - - Opal.def(self, '$initialize', $HuntersMoon_initialize$1 = function $$initialize() { - var $iter = $HuntersMoon_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $HuntersMoon_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $HuntersMoon_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - self.d66Type = 2; - return (self.fractionType = "roundUp"); - }, $HuntersMoon_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $HuntersMoon_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル(モノビースト追加行動+1)" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > スペシャル(変調1つ回復orダメージ+1D6)" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $HuntersMoon_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $HuntersMoon_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var $a, $b, self = this, string = nil, output = nil, type = nil, total_n = nil, $case = nil, isType2 = nil, count = nil; - - - string = command.$upcase(); - output = "1"; - type = ""; - total_n = ""; - $case = string.$upcase(); - if (/CLT/i['$===']($case)) { - type = "都市ロケーション"; - $b = self.$hm_city_location_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/SLT/i['$===']($case)) { - type = "閉所ロケーション"; - $b = self.$hm_small_location_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/HLT/i['$===']($case)) { - type = "炎熱ロケーション"; - $b = self.$hm_hot_location_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/FLT/i['$===']($case)) { - type = "冷暗ロケーション"; - $b = self.$hm_freezing_location_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/DLT/i['$===']($case)) { - type = "部位ダメージ決定"; - $b = self.$hm_hit_location_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/MAT/i['$===']($case)) { - type = "モノビースト行動"; - $b = self.$hm_monobeast_action_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/SA(2)?T(\d*)/i['$===']($case)) { - isType2 = $$($nesting, 'Regexp').$last_match(1)['$nil?']()['$!'](); - count = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if (count['$=='](0)) { - count = 1}; - type = "異形アビリティー"; - $b = self.$get_strange_ability_table_result(count, isType2), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/TST/i['$===']($case)) { - type = "指定特技(社会)"; - $b = self.$hm_social_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/THT/i['$===']($case)) { - type = "指定特技(頭部)"; - $b = self.$hm_head_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/TAT/i['$===']($case)) { - type = "指定特技(腕部)"; - $b = self.$hm_arm_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/TBT/i['$===']($case)) { - type = "指定特技(胴部)"; - $b = self.$hm_trunk_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/TLT/i['$===']($case)) { - type = "指定特技(脚部)"; - $b = self.$hm_leg_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/TET/i['$===']($case)) { - type = "指定特技(環境)"; - $b = self.$hm_environmental_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("ET"['$===']($case)) { - type = "遭遇"; - $b = self.$hm_encount_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else {return self.$getTableCommandResult(command, $$($nesting, 'TABLES'))}; - if (output['$==']("1")) { - return output}; - output = "" + (type) + "表(" + (total_n) + ") > " + (output); - return output; - }, $HuntersMoon_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$hm_city_location_table', $HuntersMoon_hm_city_location_table$4 = function $$hm_city_location_table() { - var self = this, table = nil; - - - table = ["住宅街/閑静な住宅街。不意打ちに適しているため、ハンターの攻撃判定に+1の修正をつけてもよい。", "学校/夜の学校。遮蔽物が多く入り組んだ構造のため、ハンターはブロック判定によって肩代わりしたダメージを1減少してもよい。", "駅/人のいない駅。全てのキャラクターがファンブル時に砂利に突っ込んだり伝染に接触しかけることで1D6のダメージを受ける。", "高速道路/高速道路の路上。全てのキャラクターが、ファンブル時には走ってきた車に跳ねられて1D6のダメージを受ける。", "ビル屋上/高いビルの屋上。ハンターはファンブル時に屋上から落下して強制的に撤退する。命に別状はない", "繁華街/にぎやかな繁華街の裏路地。大量の人の気配が近くにあるため、モノビーストが撤退するラウンドが1ラウンド早くなる。決戦フェイズでは特に効果なし。"]; - return self.$get_table_by_1d6(table); - }, $HuntersMoon_hm_city_location_table$4.$$arity = 0); - - Opal.def(self, '$hm_small_location_table', $HuntersMoon_hm_small_location_table$5 = function $$hm_small_location_table() { - var self = this, table = nil; - - - table = ["地下倉庫/広々とした倉庫。探してみれば色々なものが転がっている。ハンターは戦闘開始時に好きなアイテムを一つ入手してもよい。", "地下鉄/地下鉄の線路上。全てのキャラクターが、ファンブル時にはなぜか走ってくる列車に撥ねられて1D6ダメージを受ける。", "地下道/暗いトンネル。車道や照明の落ちた地下街。ハンターは、ファンブル時にアイテムを一つランダムに失くしてしまう。", "廃病院/危険な廃物がたくさん落ちているため、誰もここで戦うのは好きではない。キャラクター全員の【モラル】を3点減少してから戦闘を開始する。", "下水道/人が2人並べるくらいの幅の下水道。メンテナンス用の明かりしかなく、非常に視界が悪いため、ハンターの攻撃判定に-1の修正がつく。", "都市の底/都市の全てのゴミが流れ着く場所。広い空洞にゴミが敷き詰められている。この敵対的な環境では、ハンターの攻撃判定に-1の修正がつく。さらにハンターは攻撃失敗時に2ダメージを受ける。"]; - return self.$get_table_by_1d6(table); - }, $HuntersMoon_hm_small_location_table$5.$$arity = 0); - - Opal.def(self, '$hm_hot_location_table', $HuntersMoon_hm_hot_location_table$6 = function $$hm_hot_location_table() { - var self = this, table = nil; - - - table = ["温室/植物が栽培されている熱く湿った場所。生命に満ち溢れた様子は、戦闘開始時にハンターの【モラル】を1点増加する。", "調理場/調理器具があちこちに放置された、アクションには多大なリスクをともなう場所。全てのキャラクターは、ファンブル時に良くない場所に手をついたり刃物のラックをひっくり返して1D6ダメージを受ける。", "ボイラー室/モノビーストは蒸気機関の周囲を好む傾向があるが、ここはうるさくて気が散るうえに暑い。全てのキャラクターは、感情属性が「怒り」の場合、全てのアビリティの反動が1増加する。", "機関室/何らかの工場。入り組みすぎて周りを見通せないうえ、配置がわからず出たとこ勝負を強いられる。キャラクター全員が戦闘開始時に「妨害」の変調を発動する。", "火事場/事故現場なのかモノビーストの仕業か、あたりは激しく燃え盛っている。ハンターはファンブル時に「炎上」の変調を発動する。", "製鉄所/無人ながら稼働中の製鉄所。安全対策が不十分で、溶けた金属の周囲まで近づくことが可能だ。ハンターは毎ラウンド終了時に《耐熱》で行為判定をし、これに失敗すると「炎上」の変調を発動する。"]; - return self.$get_table_by_1d6(table); - }, $HuntersMoon_hm_hot_location_table$6.$$arity = 0); - - Opal.def(self, '$hm_freezing_location_table', $HuntersMoon_hm_freezing_location_table$7 = function $$hm_freezing_location_table() { - var self = this, table = nil; - - - table = ["冷凍保管室/食品が氷漬けにされている場所。ここではモノビーストは氷に覆われてしまう。モノビーストは戦闘開始時に「捕縛」の変調を発動する。", "墓地/死んだ人々が眠る場所。ここで激しいアクションを行うことは冒涜的だ。全てのキャラクターは感情属性が恐怖の場合、全てのアビリティの反動が1増加する。", "魚市場/発泡スチロールの箱に鮮魚と氷が詰まり、コンクリートの床は濡れていて滑りやすい。ハンターはファンブル時に転んで1D6ダメージを受ける。", "博物館/すっかり静まり返った博物館で、モノビーストは動物の剥製の間に潜んでいる。紛らわしい展示物だらけであるため、ハンターは攻撃判定に-1の修正を受ける。", "空き地/寒風吹きすさぶ空き地。長くいると凍えてしまいそうだ。ハンターはファンブル時に身体がかじかみ、「重傷」の変調を発動する。", "氷室/氷で満たされた洞窟。こんな場所が都市にあったとは信じがたいが、とにかくひどく寒い。ハンターは毎ラウンド終了時に《耐寒》で判定し、失敗すると「重傷」の変調を発動する。"]; - return self.$get_table_by_1d6(table); - }, $HuntersMoon_hm_freezing_location_table$7.$$arity = 0); - - Opal.def(self, '$hm_encount_table', $HuntersMoon_hm_encount_table$8 = function $$hm_encount_table() { - var self = this, table = nil; - - - table = ["獲物/恐怖/あなたはモノビーストの獲物として追い回される。満月の夜でないと傷を負わせることができない怪物相手に、あなたは逃げ回るしかない。", "暗闇/恐怖/あの獣は暗闇の中から現れ、暗闇の中へ消えていった。どんなに振り払おうとしても、あの恐ろしい姿の記憶から逃れられない。", "依頼/怒り/あなたはモノビーストの被害者の関係者、あるいはハンターや魔術師の組織から、モノビーストを倒す依頼を受けた。", "気配/恐怖/街の気配がどこかおかしい。視線を感じたり、物音が聞こえたり・・・だが、獣の姿を捉えることはできない。漠然とした恐怖があなたの心をむしばむ。", "現場/怒り/あなたはモノビーストが獲物を捕食した現場を発見した。派手な血の跡が目に焼きつく。こんなことをする奴を生かしてはおけない。", "賭博/怒り/あなたの今回の獲物は、最近ハンターの間で話題になっているモノビーストだ。次の満月の夜にあいつを倒せるか、あなたは他のハンターと賭けをした。"]; - return self.$get_table_by_1d6(table); - }, $HuntersMoon_hm_encount_table$8.$$arity = 0); - - Opal.def(self, '$hm_monobeast_action_table', $HuntersMoon_hm_monobeast_action_table$9 = function $$hm_monobeast_action_table() { - var self = this, table = nil; - - - table = ["社会/モノビーストは時間をかけて逃げ続けることで、ダメージを回復しようとしているようだ。部位ダメージを自由に一つ回復する。部位ダメージを受けていない場合、【モラル】が1D6回復する。", "頭部/モノビーストはハンターを撒こうとしている。次の戦闘が日暮れ、もしくは真夜中である場合、モノビーストは1ラウンド少ないラウンドで撤退する。次の戦闘が夜明けである場合、【モラル】が2D6増加する。", "腕部/モノビーストは若い犠牲者を選んで捕食しようとしている。どうやら力を増そうとしているらしい。セッション終了までモノビーストの攻撃によるダメージは+1の修正がつく。", "胴部/モノビーストは別のハンターと遭遇し、それを食べて新しいアビリティを手に入れる! ランダムに異形アビリティを一つ決定し、修得する。", "脚部/モノビーストはハンターを特定の場所に誘導しているようだ。ロケーション表を振り、次の戦闘のロケーションを変更する。そのロケーションで次の戦闘が始まった場合、モノビーストは最初のラウンドに追加行動を1回得る。", "環境/モノビーストは移動中に人間の団体と遭遇し、食い散らかす。たらふく食ったモノビーストは【モラル】を3D6点増加させる"]; - return self.$get_table_by_1d6(table); - }, $HuntersMoon_hm_monobeast_action_table$9.$$arity = 0); - - Opal.def(self, '$hm_hit_location_table', $HuntersMoon_hm_hit_location_table$10 = function $$hm_hit_location_table() { - var self = this, table = nil; - - - table = ["脳", "利き腕", "利き脚", "消化器", "感覚器", "攻撃したキャラクターの任意の部分", "口", "呼吸器", "逆脚", "逆腕", "心臓"]; - return self.$get_table_by_2d6(table); - }, $HuntersMoon_hm_hit_location_table$10.$$arity = 0); - - Opal.def(self, '$getStrangeAbilityTable1', $HuntersMoon_getStrangeAbilityTable1$11 = function $$getStrangeAbilityTable1() { - var self = this; - - return nil - }, $HuntersMoon_getStrangeAbilityTable1$11.$$arity = 0); - - Opal.def(self, '$get_strange_ability_table_result', $HuntersMoon_get_strange_ability_table_result$12 = function $$get_strange_ability_table_result(count, isType2) { - var $$13, self = this, output = nil, dice = nil, table1 = nil, table2 = nil; - - - output = ""; - dice = ""; - table1 = self.$get_strange_ability_table_1(); - table2 = self.$get_strange_ability_table_2(); - $send(count, 'times', [], ($$13 = function(i){var self = $$13.$$s || this, $a, $b, table = nil, number = nil, index = nil, ability = nil, indexText = nil; - - - - if (i == null) { - i = nil; - }; - if ($truthy(i['$!='](0))) { - - output = $rb_plus(output, "/"); - dice = $rb_plus(dice, ",");}; - table = table1; - if ($truthy(isType2)) { - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - index = (function() {if ($truthy(number['$odd?']())) { - return 0 - } else { - return 1 - }; return nil; })(); - table = [table1, table2]['$[]'](index); - dice = $rb_plus(dice, "" + (number) + "-"); - output = $rb_plus(output, "" + "[表" + ($rb_plus(index, 1)) + "]");}; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (ability = ($a[0] == null ? nil : $a[0])), (indexText = ($a[1] == null ? nil : $a[1])), $b; - if (ability['$==']("1")) { - return nil;}; - output = $rb_plus(output, ability.$to_s()); - return (dice = $rb_plus(dice, indexText));}, $$13.$$s = self, $$13.$$arity = 1, $$13)); - if ($truthy(output['$empty?']())) { - return ["1", dice]}; - return [output, dice]; - }, $HuntersMoon_get_strange_ability_table_result$12.$$arity = 2); - - Opal.def(self, '$get_strange_ability_table_1', $HuntersMoon_get_strange_ability_table_1$14 = function $$get_strange_ability_table_1() { - var self = this, table = nil; - - - table = ["大牙", "大鎌", "針山", "大鋏", "吸血根", "巨大化", "瘴気", "火炎放射", "鑢", "ドリル", "絶叫", "粘液噴射", "潤滑液", "皮膚装甲", "器官生成", "翼", "四肢複製", "分解", "異言", "閃光", "冷気", "悪臭", "化膿歯", "気嚢", "触手", "肉瘤", "暗視", "邪視", "超振動", "酸分泌", "結晶化", "裏腹", "融合", "嘔吐", "腐敗", "変色"]; - return table; - }, $HuntersMoon_get_strange_ability_table_1$14.$$arity = 0); - - Opal.def(self, '$get_strange_ability_table_2', $HuntersMoon_get_strange_ability_table_2$15 = function $$get_strange_ability_table_2() { - var self = this, table = nil; - - - table = ["電撃", "障壁", "追加肢", "破裂球", "死病", "ソナー", "未来視", "寄生体", "再構築", "分身", "大角", "鉄塊", "硬質化", "生命力吸収", "鬼火", "金縛り", "排出口", "金属化", "鋼鱗", "神経接合", "光翼", "環境適応", "消化剤", "プロペラ", "血栓", "骨槍", "回転", "怒髪", "煙幕", "脂肪層", "逆棘", "偽頭", "赤化", "発条", "凶運", "巨砲"]; - return table; - }, $HuntersMoon_get_strange_ability_table_2$15.$$arity = 0); - - Opal.def(self, '$hm_social_skill_table', $HuntersMoon_hm_social_skill_table$16 = function $$hm_social_skill_table() { - var self = this, table = nil; - - - table = ["怯える", "考えない", "話す", "黙る", "売る", "伝える", "作る", "憶える", "脅す", "騙す", "怒る"]; - return self.$get_table_by_2d6(table); - }, $HuntersMoon_hm_social_skill_table$16.$$arity = 0); - - Opal.def(self, '$hm_head_skill_table', $HuntersMoon_hm_head_skill_table$17 = function $$hm_head_skill_table() { - var self = this, table = nil; - - - table = ["聴く", "感覚器", "見つける", "反応", "閃く", "脳", "考える", "予感", "叫ぶ", "口", "噛む"]; - return self.$get_table_by_2d6(table); - }, $HuntersMoon_hm_head_skill_table$17.$$arity = 0); - - Opal.def(self, '$hm_arm_skill_table', $HuntersMoon_hm_arm_skill_table$18 = function $$hm_arm_skill_table() { - var self = this, table = nil; - - - table = ["操作", "殴る", "斬る", "利き腕", "撃つ", "掴む", "投げる", "逆腕", "刺す", "振る", "締める"]; - return self.$get_table_by_2d6(table); - }, $HuntersMoon_hm_arm_skill_table$18.$$arity = 0); - - Opal.def(self, '$hm_trunk_skill_table', $HuntersMoon_hm_trunk_skill_table$19 = function $$hm_trunk_skill_table() { - var self = this, table = nil; - - - table = ["塞ぐ", "呼吸器", "止める", "動かない", "受ける", "心臓", "逸らす", "かわす", "落ちる", "消化器", "耐える"]; - return self.$get_table_by_2d6(table); - }, $HuntersMoon_hm_trunk_skill_table$19.$$arity = 0); - - Opal.def(self, '$hm_leg_skill_table', $HuntersMoon_hm_leg_skill_table$20 = function $$hm_leg_skill_table() { - var self = this, table = nil; - - - table = ["迫る", "走る", "蹴る", "利き脚", "跳ぶ", "仕掛ける", "しゃがむ", "逆脚", "滑る", "踏む", "歩く"]; - return self.$get_table_by_2d6(table); - }, $HuntersMoon_hm_leg_skill_table$20.$$arity = 0); - - Opal.def(self, '$hm_environmental_skill_table', $HuntersMoon_hm_environmental_skill_table$21 = function $$hm_environmental_skill_table() { - var self = this, table = nil; - - - table = ["耐熱", "休む", "待つ", "捕らえる", "隠れる", "追う", "バランス", "現れる", "追い込む", "休まない", "耐寒"]; - return self.$get_table_by_2d6(table); - }, $HuntersMoon_hm_environmental_skill_table$21.$$arity = 0); - Opal.const_set($nesting[0], 'TABLES', $hash2(["DS1ET", "DS2ET", "DS3ET", "EE1ET", "EE2ET", "EE3ET", "ERT", "ET1ET", "ET2ET", "ET3ET", "MST", "TK1ET", "TK2ET", "TK3ET"], {"DS1ET": $hash2(["name", "type", "table"], {"name": "ディフェンス遭遇表1st", "type": "1d6", "table": "" + "状況 あなたはモノビーストに追い詰められるまま建物に閉じこもる。とりあえず、夜は建物の中を威勢よく動き回り、相手を威嚇しなければ。\\n指定特技 《脅す/社会10》\\n成功 建物の外から隙を窺うモノビーストをきつく睨みつける。感情属性を「怒り」に設定。\\n失敗 ヤツはあなたを嘲笑うかのように建物の中に出現を繰り返す。感情属性を「恐怖」に設定。\n" + "状況 廃墟となって久しいこの建物には、ハンターがいた形跡がある。山と仕掛けられれたトラップに気をつけながら探索を続けるが……。\\n指定特技 《見つける/頭部4》\\n成功 裏口で格闘の跡を見つける。何かの事情で、出たところを襲われたのだ。感情属性を「怒り」に設定。\\n失敗 トラップに引っかかり怪我をする。こんなところに立て篭もって大丈夫か?感情属性を「恐怖」に設定。\n" + "状況 あなたの友人のハンターは脚に重傷を負って動けない。しばらくこの建物の中で回復を待つしかなさそうだが、彼は足手まといになるのを嫌って戸外で死のうとする。止めよう。\\n指定特技 《逆腕/腕部9》\\n成功 必死に引き止めた戸口の向こうで、笑うような息遣いが聞こえた。感情属性を「恐怖」に設定。\\n失敗 制止を振り切って出て行った友人は死んだ。感情属性を「怒り」に設定。\n" + "状況 エレベーターが落ちた。不運な同行者と一緒に、誰も来ないビルの地下に閉じ込められる。落ちる寸前、天井で聞いた音は間違いなくヤツのものだ。\\n指定特技 《落ちる/胴部10》\\n成功 怪我もなく落下を切り抜けたが、同行者を連れて出て行く手段がない。感情属性を「恐怖」に設定。\\n失敗 ショックでパニックに陥った同行者はあなたを責め立てる。感情属性を「怒り」に設定。\n" + "状況 今回の相手は光が強い環境では消散能力を使えないようだ。あなたは建物中を駆けまわって、照明をつけてまわる。\\n指定特技 《逆脚/脚部9》\\n成功 なんとか防御体制は整ったが、送電線が気に掛かる。感情属性を「恐怖」に設定。\\n失敗 間に合わない。建物の半分の送電が絶たれ、あなたは狭い部屋に閉じこもることになる。感情属性を「怒り」に設定。\n" + "状況 金がないのか脚が遅いのか、あなたは逃げ回ることができない。唯一の選択肢は、あらかじめ作っておいた隠れ家に潜むことだ。\\n指定特技 《隠れる/環境6》\\n成功 とりあえず、うまく隠れることができたようだ。感情属性を「怒り」に設定。\\n失敗 隠れ家の装備は、すでに破壊されていた。感情属性を「恐怖」に設定。\n"}), "DS2ET": $hash2(["name", "type", "table"], {"name": "ディフェンス遭遇表2nd", "type": "1d6", "table": "" + "状況 建物の構造を把握し、憶えこむことで、満月の晩までの生存率は大きく向上するだろう。あなたは眠い目を擦りつつ、昼間も探索を続ける。\\n指定特技 《覚える/社会9》\\n成功 やつを迎え撃つ自信が湧いてきた。【モラル】が2点増加する。\\n失敗 眠くて全然覚えられない。体力を消耗してしまう。「重傷」の変調を発動する。\n" + "状況 夜が来るたびに退屈な見張りが始まる。代わり映えのしない景色を眺めていると、モノビーストの襲撃に対する反応速度を保つのは難しい。\\n指定特技 《反応/頭部5》\\n成功 襲われたが難なくやり過ごす。感情属性を任意に変更できる。\\n失敗 後ろに実体化したモノビーストに気付くのが遅れ、痛い代償を払うことになった。アイテムを任意に1つ失う。\n" + "状況 モノビーストが実体化するにはある程度のスペースが必要だ。あなたは部屋の中にワイアを張り巡らし、空間を細分することで攻撃を防ぐ。\\n指定特技 《斬る/腕部4》\\n成功 モノビーストはあなたを警戒するあまり動きが鈍り、「妨害」の変調を発動する。\\n失敗 動きづらくなっただけで襲撃が無い……【モラル】が2点減少する。\n" + "状況 建物の中にあるものを何でも積んでバリケードを作る。霧になる相手には効果が薄いかもしれないが。移動を制限できるぶん、ないよりマシだ。\\n指定特技 《心臓/胴部7》\\n成功 この場所は満月の夜にヤツを追い詰める場所としても使えるだろう。【ネット】を入手する。\\n失敗 堂々と壁を破って侵入された……撃退はしたが、自らのあまりの愚かさに「動転」してしまう。\n" + "状況 自作の罠を建物のあちこちに配置する。うまくいけば、ヤツを退散させる程度の役には立つだろう。\\n指定特技 《仕掛ける/脚部7》\\n成功 うとうとしていた夜更け、悲鳴とともに逃げ出すモノビーストの移動音で目を覚ます。【モラル】が2点増加する。\\n失敗 まるで意に介さないモノビーストに追い回されトラウマを負う。このセッションが終了するまで妨害判定にマイナス2の修正がつく。\n" + "状況 やばい。寒い。空調の故障か季節が悪いのか、モノビーストと勝負する前に凍死してしまいそうだ。\\n指定特技 《耐寒/環境12》\\n成功 あなたは苦難を耐え切り、自信を身につける。次の遭遇表の行為判定にプラス2の修正がつく。\\n失敗 我慢できなくなってアイテムを燃やして暖を取る。ランダムにアイテムを1つ失う。\n"}), "DS3ET": $hash2(["name", "type", "table"], {"name": "ディフェンス遭遇表3rd", "type": "1d6", "table": "" + "状況 時は来た。問題は立て篭もっていた建物から出て行くタイミングだが、囮を使うことでモノビーストを騙し、安全に出ていけるかもしれない。\\n指定特技 《騙す/社会11》\\n成功 相手の不意を打った!次に行う行為判定にプラス2の修正がつく。\\n失敗 逆に騙され、日が沈みきっていない早い時間に飛び出してしまう。モノビーストは夕暮れの戦闘で変調を発動しない。\n" + "状況 長い潜伏期間を過ごした建物を振り返り、その上に出ている満月を見つめる。この夜でケリがつく。そんな予感があなたの胸を満たす。\\n指定特技 《予感/頭部9》\\n成功 どんな形で決着がつくか、脳裏にイメージが浮かぶ。感情属性を任意に変更できる。\\n失敗 不安があなたの心を締め付ける。【感情】が2点増加する。\n" + "状況 さて満月の夜だ。幸い投擲武器が豊富な場所にいるわけで、外にいるモノビーストに、すこし先制攻撃をさせてもらおう。\\n指定特技 《投げる/腕部8》\\n成功 投げたものがばらばらと当たり、相手はいらついている。モノビーストの【感情】が2点増加する。\\n失敗 物を投げるのが楽しくなってしまい、狩りに出遅れる。夕暮れの追跡フェイズで行う判定にマイナス2の修正がつく。\n" + "状況 ついに相手と対等になる夜だ、と意気揚々と外に出たあなたを、上空からの不意打ちが襲う。もちろん、ヤツはあなたを待ち構えていたのだ。\\n指定特技 《かわす/胴部9》\\n成功 待ち伏せくらいは予想のうちだ。【モラル】が2点増加する。\\n失敗 まともに食らったが、アイテムのおかげで命拾いする。持っていれば【医療キット】を失う。\n" + "状況 狭い所に閉じこもりきりで、これまで走り出したくてうずうずしていた脚に気合を入れる。今夜はどこまでも走っていけそうだ。\\n指定特技 《走る/脚部3》\\n成功 いい感じに体が軽い。このセッションの間、ロケーション変更判定にプラス2の修正がつく。\\n失敗 いきなり脚をくじく。せめて準備運動はするべきだったかもしれない。【モラル】が4点減少する。\n" + "状況 こんなこともあろうかと、あなたは秘密の出口を作っておいたのだ。予想もしない場所から出てくるあなたに、ヤツは恐れおののくに違いない。\\n指定特技 《現れる/環境9》\\n成功 かなり効果的に敵の虚をついた。モノビーストは次に得る追加行動を1回失う。\\n失敗 秘密の出口はすでに破壊されていた……とぼとぼと戻る。【感情】が4点増加する。\n"}), "EE1ET": $hash2(["name", "type", "table"], {"name": "エスケープ遭遇表1st", "type": "1d6", "table": "" + "状況 あなたは見た。夜の街を闊歩し、気ままに人を食い散らかす怪物を。すぐ近くまで追っている危険を、大事な人に伝えなければならない。\\n指定特技 《伝える/社会7》\\n成功 最近疲れてるんじゃない?と返され絶望する。感情属性を「恐怖」に設定。\\n失敗 病院に連れて行かれた。感情属性を「怒り」に設定。\n" + "状況 夜道で角を曲がったら怪物がいた。しかもばっちり目が合った。不運を嘆く暇もなく、ヤツは襲い掛かってくる。速く逃げないと!\\n指定特技 《反応/頭部5》\\n成功 逃げられたが理不尽さに怒りがこみ上げる。感情属性を「怒り」に設定。\\n失敗 頭を食いちぎられる寸前で危うくも逃げ出す。感情属性を「恐怖」に設定。\n" + "状況 買い物帰り、夜道を並んで歩いていた友人の上半身がいきなり消えた。喰われたのだ。今すぐヤツに買い物袋を投げつけろ。\\n指定特技 《投げる/腕部8》\\n成功 無駄になった食材と友人のため、感情属性を「怒り」に設定。\\n失敗 散らばった買い物に足をとられて転び、捕食シーンをまざまざと見せつけられる。感情属性を「恐怖」に設定。\n" + "状況 音がする。床を踏みしめる音。固い何かが触れ合う音。吐く息、吸う息、唸り声、悲鳴。何も聞こえないふりをしなければ、これは本当にあることになってしまう。\\n指定特技 《耐える/胴部12》\\n成功 パニックを起こさずに冷静に検討した結果、逃げなければならないと結論が出る。 感情属性を「怒り」に設定。\\n失敗 パニックに陥りやみくもに逃げ出す。感情属性を「恐怖」に設定。\n" + "状況 この子を頼む、と叫んで幼児を放り投げたハンターは、目の前でモノビーストに食われて死んだ。ヤツは明らかにこの子を狙っているし、まずは受け止める必要がある。\\n指定特技 《跳ぶ/脚部6》\\n成功 うまくキャッチ!この子を抱えて武器を振り回すわけにはいかない、まずは逃げよう。感情属性を「怒り」に設定。\\n失敗 落とした……かと思ったよ。いや危ない危ない。感情属性を「恐怖」に設定。\n" + "状況 きつい一日だった。下を向いて歩いていたからだろう。すぐ横にモノビーストがいるのに気付かなかった。あまりに近すぎて動揺し、足がもつれる。\\n指定特技 《バランス/環境8》\\n成功 見えていることは気づかれていない……感情属性を「恐怖」に設定。\\n失敗 モノビーストと接触し、一晩中追い回される。感情属性を「怒り」に設定。\n"}), "EE2ET": $hash2(["name", "type", "table"], {"name": "エスケープ遭遇表2nd", "type": "1d6", "table": "" + "状況 モノビーストから逃げるあなたの目の前に、パトロール中の警察官が!夜中に必死な顔で走っている理由をひねり出せ。\\n指定特技 《騙す/社会11》\\n成功 うまく言い抜けた。【モラル】が1点増加する。\\n失敗 質問されているうちにモノビーストが追いつき、警察官を食い殺す。感情属性が反転する。\n" + "状況 あの夜以来、毎晩モノビーストに追い回されている。完全に目をつけられたようだ。この状況から抜け出すために、あなたは眠い目を擦りながら昼間も考え続ける。\\n指定特技 《考える/頭部8》\\n成功 ヤツの能力について整理できた。このセッション中、弱点調査判定にプラス1の修正がつく。\\n失敗 眠くて何も考えられない。感情属性を「恐怖」に設定。\n" + "状況 車で街から逃走しようとしたところ、ひどい渋滞に引っかかって夜になり、案の定襲撃があって車をひっくり返された。武器になりそうなのは発炎筒だけだ……。\\n指定特技 《撃つ/腕部6》\\n成功 なんとか撃退成功。駆けつけたJAFの人から【医療キット】を入手できる。\\n失敗 まるで効かない。車に積んであった装備を諦め、街に逃げ戻る。【感情】が2点増加する。\n" + "状況 密閉した部屋に閉じこもり、隙間がないこと、ヤツが諦めてくれることを神に祈る。どんな神であれ、心から祈れば答えがあるかもしれない。\\n指定特技 《心臓/胴部7》\\n成功 徴が現れた!【勝利のお守り】を入手できる。\\n失敗 何も起こらない。【感情】が2点増加する。\n" + "状況 モノビーストには縄張りがある。まっすぐ歩き続ければ、いつかその外に出られるはずだ。\\n指定特技 《歩く/脚部12》\\n成功 行く先々で橋は落ち、停電は発生し、公共交通機関は止まっている。感情属性が反転する。\\n失敗 いつのまにか迷子になってしまっている。「動転」の変調を発動する。\n" + "状況 モノビーストから逃げ続けるなか、ヤツと戦う人間を見かける。あの人を追いかけられれば、協力できるかもしれない。\\n指定特技 《追う/環境7》\\n成功 任意の他のハンターと出会う。【モラル】が3点増加する。\\n失敗 ダメだ、見失ってしまった。【感情】が2点増加する。\n"}), "EE3ET": $hash2(["name", "type", "table"], {"name": "エスケープ遭遇表3rd", "type": "1d6", "table": "" + "状況 考え付く限りのルートと手段を使って逃げ続けたあなたがたどりついた袋小路には、モノビーストが待っていた。もう何も考えず、必死に戦うしかないようだ。\\n指定特技 《考えない/社会3》\\n成功 思考停止成功!感情属性を好きに変更できる。\\n失敗 別のハンターが倒してくれるかもしれないと考えて気後れする。夕暮れの戦闘フェイズでは自分が行う全ての攻撃判定にマイナス1の修正がつく。\n" + "状況 いつまでも逃げ続けるわけにはいかない。体力的にも限界が近づいている。この状況を打開する方法を見つけなければならない。\\n指定特技 《見つける/頭部4》\\n成功 モノビーストを殺せば逃げなくてもよくなると発見。【モラル】が2点増加する。\\n失敗 どうも戦うしかないようだ。感情属性が反転する。\n" + "状況 逃げるあなたの巻き添えで、また人が殺される。こんなのはもうたくさんだ。逃げればそのうち何とかなるという考えを振り払わねばならない。\\n指定特技 《振る/腕部11》\\n成功 弱気な考えを振り切った。この決意にあたるものとして【興奮剤】を入手することができる。\\n失敗 勝てる気がしない。【モラル】が2点減少する。\n" + "状況 空を見上げれば満月が浮かんでいる。あなたの実力をもってすれば、今ならモノビーストと戦える。今こそ逃げるのを止めて戦う時なのだ。\\n指定特技 《止める/胴部3》\\n成功 【激情】を1点得る。ただしこのセッションで【感情】が30になっても【激情】を得られない。\\n失敗 明らかに怯えた様子のあなたを見て、モノビーストの【モラル】が3点増加する。\n" + "状況 走ってどこまでも逃げていく。順調にいけば振りきれただろうが、ぬかるみ、血、それに類する何かによってあなたの足は滑り、モノビーストに追いつかれてしまう。覚悟を決める時が来たようだ。\\n指定特技 《滑る/脚部10》\\n成功 速度を利用していい位置に。夕暮れの戦闘フェイズでは先制判定を振らず、成功にすることができる。\\n失敗 滑り方がよくなかった。「妨害」の変調を発動する。\n" + "状況 ハンターが集まり、モノビーストに戦いを挑んでいる。今なら難なく逃げ切れるはずだ……しかし、彼らを見捨てることなどできない。あなたは来た道を引き返していく。\\n指定特技 《現れる/環境9》\\n成功 突然現れた増援に、モノビーストの【モラル】が2点減少する。\\n失敗 逃げる途中で落し物。ランダムにアイテムを1つ失う。\n"}), "ERT": $hash2(["name", "type", "table"], {"name": "代償表", "type": "1d6", "table": "" + "評判の失墜\\n 次のセッションで登場するハンターキラーの合計レベルが1上昇します。\\nこの代償を持つハンターがセッションに複数参加している場合、効果の累積はしません。\n" + "闇夜の饗宴\\n 次のセッションに登場するモノビーストのランクが1上昇します。\\nこの代償を持つハンターがセッションに複数参加してる場合、効果の累積はしません。\n" + "特技の忘却\\n 習得した特技の中から1つを任意に選び、使用不能にします。\\n次にモノビーストを殺したタイミングで、この特技は使用可能になります。\\nこの代償を複数回得ることで特技が0個になったハンターは、判定および生活が不可能になって死亡します。最終判定すらできません。\n" + "能力の不調\\n 習得している汎用または武器アビリティの中から1つを任意に選び、使用不能にします。\\n次にモノビーストを殺したタイミングで、このアビリティは使用可能になります。\\nこの代償を複数回得ることでアビリティを全て失ったハンターは、戦闘不能となり引退します。\n" + "自信の喪失\\n 【モラル】基準値が1減少します。この減少は、次にモノビーストを殺したタイミングで元に戻ります。\\nこの代償を複数回得ることで【モラル】基準値がマイナスになったハンターは、気力を完全に失い引退します。\n" + "引退の決意\\n 異形アビリティを全て失います。この代償で失った異形アビリティを回復することはできません。\\nこの代償を続けて2回得た段階でハンターはモノビーストとの接触を失い、視認できなくなります。つまり強制的に引退です。\n"}), "ET1ET": $hash2(["name", "type", "table"], {"name": "エスコート遭遇表1st", "type": "1d6", "table": "" + "状況 追われる彼/彼女があなたの前に現れたのは満月の夜。獲物に集中しているモノビーストを攻撃するのは容易いことだったが……。\\n指定特技 《怯える/社会2》\\n成功 今戦えば彼/彼女は死ぬと思いとどまって一緒に逃げる。感情属性を「恐怖」に設定。\\n失敗 モノビーストを倒しきれず、彼/彼女は一生残る傷を負う。感情属性を「怒り」に設定。\n" + "状況 彼/彼女は、窓を破りながらあなたの家に飛び込んできた。モノビーストは見えているようだが、あなたの渋い顔は見えていないようだ。\\n指定特技 《反応/頭部5》\\n成功 とっさに反応し、モノビーストを攻撃して追い払う。感情属性を「怒り」に設定。\\n失敗 あまりの唐突さに襲い来るモノビーストへの対応が遅れ、部屋を放棄して逃げることになる。感情属性を「恐怖」に設定。\n" + "状況 夜、あなたの隣を歩いている彼/彼女が不意打ちを受ける。どうやら獲物として選ばれたようだが、腕を引いて助けることはできるだろうか?\\n指定特技 《利き腕/腕部5》\\n成功 紙一重で攻撃を避けさせることに成功。感情属性を「恐怖」に設定。\\n失敗 かばう形になり手傷を負う。感情属性を「怒り」に設定。\n" + "状況 彼/彼女はどう見てもハンターとしては無能だが、あるモノビーストを倒す必要があるのだという。助力を頼まれたあなたは……。\\n指定特技 《止める/頭部4》\\n成功 その場の勢いで代わりに戦うことになってしまった。感情属性を「恐怖」に設定。\\n失敗 説得するが失敗。彼/彼女は一人で夜の街へ飛び出す。感情属性を「怒り」に設定。\n" + "状況 彼/彼女は子供で、子供を餌として好む怪物に追われていて、助けてやれる人はあなたしかいない。安心させるために目の高さを合わせてみよう。\\n指定特技 《しゃがむ/脚部8》\\n成功 彼/彼女はよくあなたに懐き、それを狙うモノビーストへの感情属性は「怒り」になる。\\n失敗 全然ダメ。護衛を放り出すわけにもいかないが先行き不安だ。感情属性を「恐怖」に設定。\n" + "状況 あなたはモノビーストの標的となった彼/彼女を数カ月にわたって守り続けている。逃避行のなか、気が休まるのは日が高いうちだけだ。\\n指定特技 《休む/環境3》\\n成功 よく休み気力は充分だ。今度の満月の夜に、この逃避行を終わらせる。感情属性を「怒り」に設定。 \\n失敗 ちょっとした暗がりにヤツが潜んでいる気がしてならない。まるで休めず、感情属性を「恐怖」に設定。\n"}), "ET2ET": $hash2(["name", "type", "table"], {"name": "エスコート遭遇表2nd", "type": "1d6", "table": "" + "状況 彼/彼女は怪物に狙われる日々に憔悴している。モノビーストは狙いを変えたとか、もう死んだとか、元気付けるようなことを言わなくては。\\n指定特技 《騙す/社会11》\\n成功 一時しのぎの嘘だが元気な笑顔が見られる。【勝利のお守り】として記憶に刻んでおいてもよい。\\n失敗 あなたの下手な嘘は彼/彼女を「動転」させる。あなたも影響を受けて同じ変調を発動する。\n" + "状況 彼/彼女は執拗に狙われる理由を知りたがっている。考えてみよう。もしかしたら、戦わずにすむかもしれない。\\n指定特技 《考える/頭部8》\\n成功 モノビーストは彼/彼女と似たタイプの人間を殺してきているようだ。このセッション中、習性調査判定にプラス1の修正がつく。\\n失敗 全然分からない。【感情】が2点増加する。\n" + "状況 彼/彼女はあなたの献身的な姿に罪悪感を覚え、人知れず姿を消し、モノビーストに殺されることであなたの苦労を終わらせようとする。\\n指定特技 《掴む/腕部7》\\n成功 間一髪のところで掴まえた。感情属性を反転させる。\\n失敗 あなたの手は届かない。行方不明になった彼/彼女を探すことで疲労困憊したあなたは「妨害」の変調を発動する。\n" + "状況 何日も二人で過ごすうち、あなたの彼/彼女の間には愛情のようなものが芽生え始める。この気持ちは果たして本物だろうか?\\n指定特技 《落ちる/胴部10》\\n成功 真実の愛を発見したあなたの【モラル】は6点上昇する。\\n失敗 ハンターに愛はいらない。感情属性を任意に変更できる。\n" + "状況 不意をうたれた。モノビーストの襲撃から逃れるためには、彼/彼女を抱えて跳ぶしかない\\n指定特技 《跳ぶ/脚部6》\\n成功 危ういジャンプだったが何とかなった。【モラル】が2点増加する。\\n失敗 彼/彼女を放り出し怒られる。釈然とせず【感情】が2点増加する。\n" + "状況 あなたは眠らない。彼/彼女をモノビーストの牙にかけるわけにはいかないのだ。しかし、これをいつまで続けることができるのか?\\n指定特技 《休まない/環境11》\\n成功 疲労が溜まっていく……あなたは「重傷」の変調を発動する。\\n失敗 いつのまにか眠ってしまっていたあなたに毛布がかけられている。幸い襲撃はなかったようだ。【モラル】が2点増加する。\n"}), "ET3ET": $hash2(["name", "type", "table"], {"name": "エスコート遭遇表3rd", "type": "1d6", "table": "" + "状況 もうすぐ満月が昇る。あなたと彼/彼女は、モノビーストを倒した後に何をするか話しあう。希望の持てる未来のヴィジョンを作れただろうか?\\n指定特技 《作る/社会8》\\n成功 待ち受ける未来に対して任意に感情属性を変更することができる。\\n失敗 特にすることがないような……やけになって【感情】が2点増加する。\n" + "状況 あと数日で満月だというのに、彼/彼女はモノビーストに重傷を負わされ、死ぬ。あなたは微かな声で囁かれる最後の言葉を聞き取ろうとする。\\n指定特技 《聴く/頭部2》\\n成功 【モラル】が6点増加する。\\n失敗 意味のある言葉は何も聴きとれない。失意に沈んだあなたはランダムな頭部カテゴリの特技1つが使用不可能になる。\n" + "状況 やっと分かった。彼/彼女が肌身離さず持っていたアイテムが狙われる原因だったのだ。あなたは彼/彼女に、そのアイテムをこちらに投げ渡すように頼む。\\n指定特技 《投げる/腕部8》\\n成功 うまく投げてもらう。【幸運のお守り】を入手できる。\\n失敗 あなたはアイテムを取り落とし、微妙な空気がただよう。【感情】が2点増加する。\n" + "状況 あなたは夜の街を、彼/彼女の手を引いて駆け抜ける。もう少しで安全な場所につく。そうすれば、あなただけが戻って戦うことができる。\\n指定特技 《心臓/胴部7》\\n成功 これで彼/彼女の身は安全だ。このセッション中、あなたの【モラル】基準値は1点増加する。\\n失敗 息切れ、および時間切れ。狩りの時間だ。ただしあなたの【モラル】は3点減少している。\n" + "状況 満月を見上げながら、二人でこれまで踏みしめてきた道を振り返る。背後にモノビーストがいることは分かっている。しかし、もはや二人とも恐れはない……だろうか?\\n指定特技 《踏む/脚部11》\\n成功 彼/彼女は狩りの間あなたについていき、一度だけ【医療キット】に相当する応援をしてくれる。\\n失敗 いつのまにか彼/彼女が逃げ出していることに気付く。「動転」の変調を発動する。\n" + "状況 逃避行がクライマックスに近づくにつれ、二人の間の緊張感は耐え難いほどに高まる。このままでは恋に落ちてしまいそうだが、どうしたものだろうか。\\n指定特技 《耐熱/環境2》\\n成功 胸の熱い気持ちを押さえ込む。感情属性を任意に変更できる。\\n失敗 彼/彼女のために頑張ろう。このセッション中、練習判定にプラス1の修正がつく。\n"}), "MST": $hash2(["name", "type", "table"], {"name": "異形化表", "type": "1d6", "table": "" + "【感情】が2増加する。\n" + "【感情】が4増加する。\n" + "【感情】が6増加する。\n" + "【感情】が6増加する。部位ダメージを受ける。\n" + "【感情】が6増加する。異形アビリティをランダムに1つ失う。\\n異形アビリティが1つもなければ部位ダメージを受ける。\n" + "【感情】が6増加する。部位ダメージを2回受ける。\n"}), "TK1ET": $hash2(["name", "type", "table"], {"name": "トラッキング遭遇表1st", "type": "1d6", "table": "" + "状況 あなたは隠れ場所に潜みながらモノビーストが獲物…あなたの大切な誰かを貪るのを見ている。満月の夜は遠く、まだ奴を仕留める事は出来ない。\\n指定特技 《黙る/社会5》\\n成功 押さえ込んだ怒りが膨れ上がる。感情属性を「怒り」に設定。 \\n失敗 思わず声を上げてしまい、無敵のモノビーストに手酷い傷を負わされる。感情属性を「恐怖」に設定。\n" + "状況 すばらしい味だった。前の満月の晩に捕り逃した奴の血は、まさに超常的な美味。あの味を空気の中にまで感じ取ることができるようだ。\\n指定特技 《口/頭部11》 \\n成功 神々しい味を完璧にイメージできた。感情属性を「恐怖」に設定。\\n失敗 待ちきれなくて口の中を噛む。感情属性を「怒り」に設定。\n" + "状況 夜、屋根の上。あなたはモノビーストが人家に忍び込まないよう牽制している。屋根はもともと走りまわるようにはできていないのだが。\\n指定特技 《掴む/腕部7》\\n成功 屋根の縁を掴んで落下を免れる。感情属性を「怒り」に設定。\\n失敗 屋根から落ちてひどい目にあう。感情属性を「恐怖」に設定。\n" + "状況 数カ月ぶりに獲物が現れたというのに、友人が満月の夜に予定を入れようとしてくる。合コンの人数が足りないらしいのだが、そんなの知るか。\\n指定特技 《逸らす/胴部8》\\n成功 うまく言い逃れたが苛々する。待ちきれなくて口の中を噛む。感情属性を「怒り」に設定。\\n失敗 狩りのあとで顔を出す約束をしてしまう。普通の日常感覚という奴が蘇り、感情属性を「恐怖」に設定。\n" + "状況 見間違えようもないモノビーストの足跡をたどり、あなたはこの街まで来た。問題はその足跡が鍵のかかったドアの向こうに続いていることだ。うまく蹴り開けられるだろうか?\\n指定特技 《蹴る/脚部4》\\n成功 ドアは開き、あなたはその向こうにあるものを見た。感情属性を「恐怖」に設定。\\n失敗 足がドアを突き抜けたが開かない。脱出は手間だった。感情属性を「怒り」に設定。\n" + "状況 悪天候のなか、あなたはモノビーストの出現を待ち続ける。奴を狩るために、色々なものを犠牲にしてきたのだ。しかし……天気が悪い。\\n指定特技 《待つ/環境4》\\n成功 奴はまだ現れない。天気に呼応するかのようにあなたの気分も暗くなる。感情属性を「恐怖」に設定。\\n失敗 耐えきれずその場を去る。こんな思いをするのも全部ヤツのせいだ。感情属性を「怒り」に設定。\n"}), "TK2ET": $hash2(["name", "type", "table"], {"name": "トラッキング遭遇表2nd", "type": "1d6", "table": "" + "状況 あなたはモノビーストの眼前に立ちふさがり、相手になってやると宣言する。言葉が通じなくとも、喧嘩を売ったことは伝わるはずだ。\\n指定特技 《売る/社会6》\\n成功 このセッション中、【基本攻撃】の攻撃判定にプラス1の修正が付く。\\n失敗 まるで相手にされない。【感情】が2点増加する。\n" + "状況 あなたは病院で目を覚ます。記憶がはっきりしない。どうやら不覚をとったらしく、裏路地で頭を強打して倒れていたようだ。\\n指定特技 《脳/頭部7》\\n成功 おぼろげに狩りの理由を思い出してきたような気がする。感情属性が反転する。\\n失敗 ランダムにアイテムを1つ失う。無くしたことすら気づかない。\n" + "状況 夜ごとにモノビーストを追いかける生活が続く中、あなたの腕がうずく。思う存分にふるわれる時が間もないことに気づいているのだろうか。\\n指定特技 《逆腕/腕部9》\\n成功 このセッション中、練習判定にプラス1の修正がつく。 \\n失敗 よく調べたら腕が折れていた。【モラル】が2点減少する。\n" + "状況 ヤツの捕食をまめに妨害することで、夜の行動範囲を狭めていく。もうすぐ、満月の夜には追い詰めることができるだろう。\\n指定特技 《塞ぐ/胴部2》\\n成功 その後のことに想いを馳せる。感情属性を好きに変更できる。\\n失敗 追い詰める過程で手傷を負う。「重傷」の変調を発動する。\n" + "状況 ヤツを見つけてからいくつの夜が過ぎ去っただろう。モノビーストの足取りを追って移動を続けるあなたの体力は限界を迎えようとしていた。\\n指定特技 《逆脚/脚部9》\\n成功 いや、まだいける。【モラル】を2点増加させる。\\n失敗 もう足が動かない。【モラル】を2点減少する。\n" + "状況 モノビーストのねぐらを発見した。問題は人間の匂いに気づいてあたりを嗅ぎ回るヤツからどうやって隠れ、戻るかだ。\\n指定特技 《隠れる/環境6》\\n成功 じっくりモノビーストを観察する機会を得る。このセッション中、習性調査判定にプラス1の修正がつく。\\n失敗 あなたを見つけたモノビーストはこのねぐらを放棄した。感情属性が反転する。\n"}), "TK3ET": $hash2(["name", "type", "table"], {"name": "トラッキング遭遇表3rd", "type": "1d6", "table": "" + "状況 舞台は整った。やつを追い詰めながら作り上げてきた包囲網は、確実にヤツをあの場所に追い詰めている。急ぐ必要はない。ゆっくりと行こう。\\n指定特技 《作る/社会8》\\n成功 準備に時間をかけたので、アイテムを一つ入手できる。\\n失敗 ゆっくりした結果、モノビーストは何人か犠牲者を増やし、【モラル】を3点増加させている。\n" + "状況 煌々と輝く月の下、行くべき場所はすでに分かっていた。武器が、体が、夜に満ちる死の予感に震える。決戦の時が来たのだ。\\n指定特技 《予感/頭部9》\\n成功 日暮れの戦闘フェイズの間、自分が行う全ての攻撃のダメージにプラス1の修正がつく。\\n失敗 あれ、いない?あてがはずれた結果、日暮れの追跡フェイズの判定すべてにマイナス2の修正がつく。\n" + "状況 ついにモノビーストに追いつき、憎しみを込めて殴りつける。この夜の間だけは対等だ。痛みと自分の血の味を知るがいい!\\n指定特技 《殴る/腕部3》\\n成功 命中!モノビーストの【モラル】を2点減少させる。\\n失敗 効いた様子がない。【感情】が2点増加する。\n" + "状況 ついに追いつめたモノビーストが威嚇とともに襲いかかってくるが、あなたは慌てずにその攻撃を受け止める。驚いた顔のまま死ぬ人間ばかりではないことを教えてやろう。\\n指定特技 《受ける/腕部6》\\n成功 攻撃を受けてみた結果、感情属性を好きに変更できる。\\n失敗 攻撃を受けたときに、「流血」の変調を発動する。\n" + "状況 ヤツは満月の持つ意味を知っていた。だが、必死に逃げようとするモノビーストにも知らないことはあった。あなたはヤツより速いのだ。\\n指定特技 《迫る/脚部2》\\n成功 ヤツは動揺している。モノビーストの【感情】が2点増加する。\\n失敗 速いはずだがなぜか追いつけない。日暮れの戦闘フェイズの先制判定を行わず、必ず後攻になる。\n" + "状況 モノビーストの出現ポイントにあたりをつけ、あなたは狩りの前に休息をとる。あの獣を自分の手で殺すため、今は力をたくわえよう。\\n指定特技 《休む/環境3》\\n成功 英気を養った。【モラル】が2点増加する。\\n失敗 じっとしているうちに不安になってきた。感情属性が反転する。\n"})}).$freeze()); - return self.$setPrefixes($rb_plus(["(ET|CLT|SLT|HLT|FLT|DLT|MAT|SAT|SA2T|TST|THT|TAT|TBT|TLT|TET)\\d*"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Illusio.js b/src/assets/dicebot/Illusio.js deleted file mode 100644 index 75f56ccab..000000000 --- a/src/assets/dicebot/Illusio.js +++ /dev/null @@ -1,103 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$===', '$to_i', '$last_match', '$delete', '$sort', '$uniq', '$!', '$nil?', '$checkRoll', '$roll', '$collect', '$split', '$each', '$>', '$count', '$push', '$+', '$join', '$<']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Illusio'); - - var $nesting = [self].concat($parent_nesting), $Illusio_initialize$1, $Illusio_rollDiceCommand$2, $Illusio_checkRoll$3; - - self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "Illusio"); - Opal.const_set($nesting[0], 'NAME', "晃天のイルージオ"); - Opal.const_set($nesting[0], 'SORT_KEY', "こうてんのいるうしお"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "判定:[n]IL(BNo)[P]\n" + "\n" + "[]内のコマンドは省略可能。\n" + "「n」でダイス数を指定。省略時は「1」。\n" + "(BNo)でブロックナンバーを指定。「236」のように記述。順不同可。\n" + "コマンド末に「P」を指定で、(BNo)のパリィ判定。(一応、複数指定可)\n" + "\n" + "【書式例】\n" + "・6IL236 → 6dでブロックナンバー「2,3,6」の判定。\n" + "・IL4512 → 1dでブロックナンバー「1,2,4,5」の判定。\n" + "・2IL1P → 2dでパリィナンバー「1」の判定。\n"); - - Opal.def(self, '$initialize', $Illusio_initialize$1 = function $$initialize() { - var $iter = $Illusio_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Illusio_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Illusio_initialize$1, false), $zuper, $iter); - return (self.sortType = 1); - }, $Illusio_initialize$1.$$arity = 0); - self.$setPrefixes(["(\\d+)?IL([1-6])?([1-6])?([1-6])?([1-6])?([1-6])?([1-6])?(P)?"]); - - Opal.def(self, '$rollDiceCommand', $Illusio_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, self = this, diceCount = nil, blockNo = nil, isParry = nil; - - - if ($truthy(/(\d+)?IL([1-6])?([1-6])?([1-6])?([1-6])?([1-6])?([1-6])?(P)?$/i['$==='](command))) { - - diceCount = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 1).$to_i(); - blockNo = [($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : 0).$to_i(), ($truthy($a = $$($nesting, 'Regexp').$last_match(3)) ? $a : 0).$to_i(), ($truthy($a = $$($nesting, 'Regexp').$last_match(4)) ? $a : 0).$to_i(), ($truthy($a = $$($nesting, 'Regexp').$last_match(5)) ? $a : 0).$to_i(), ($truthy($a = $$($nesting, 'Regexp').$last_match(6)) ? $a : 0).$to_i(), ($truthy($a = $$($nesting, 'Regexp').$last_match(7)) ? $a : 0).$to_i()]; - blockNo.$delete(0); - blockNo = blockNo.$sort(); - blockNo = blockNo.$uniq(); - isParry = $$($nesting, 'Regexp').$last_match(8)['$nil?']()['$!'](); - return self.$checkRoll(diceCount, blockNo, isParry);}; - return nil; - }, $Illusio_rollDiceCommand$2.$$arity = 1); - return (Opal.def(self, '$checkRoll', $Illusio_checkRoll$3 = function $$checkRoll(diceCount, blockNo, isParry) { - var $a, $b, $$4, $$5, self = this, _dice = nil, diceText = nil, diceArray = nil, resultArray = nil, success = nil, blockText = nil, blockText2 = nil, resultText = nil, result = nil; - - - $b = self.$roll(diceCount, 6, self.sortType), $a = Opal.to_ary($b), (_dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceArray = $send(diceText.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - resultArray = []; - success = 0; - $send(diceArray, 'each', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - if ($truthy($rb_gt(blockNo.$count(i), 0))) { - return resultArray.$push("×") - } else { - - resultArray.$push(i); - return (success = $rb_plus(success, 1)); - };}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - blockText = blockNo.$join(","); - blockText2 = "Block"; - if ($truthy(isParry)) { - blockText2 = "Parry"}; - resultText = resultArray.$join(","); - result = "" + (diceCount) + "D6(" + (blockText2) + ":" + (blockText) + ") > " + (diceText) + " > " + (resultText) + " > "; - if ($truthy(isParry)) { - if ($truthy($rb_lt(success, diceCount))) { - result = $rb_plus(result, "パリィ成立! 次の非ダメージ2倍。") - } else { - result = $rb_plus(result, "" + "成功数:" + (success) + " パリィ失敗") - } - } else { - result = $rb_plus(result, "" + "成功数:" + (success)) - }; - return result; - }, $Illusio_checkRoll$3.$$arity = 3), nil) && 'checkRoll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/InfiniteFantasia.js b/src/assets/dicebot/InfiniteFantasia.js deleted file mode 100644 index ea0091200..000000000 --- a/src/assets/dicebot/InfiniteFantasia.js +++ /dev/null @@ -1,56 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$!=', '$>', '$<=', '$/', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'InfiniteFantasia'); - - var $nesting = [self].concat($parent_nesting), $InfiniteFantasia_check_1D20$1; - - - Opal.const_set($nesting[0], 'ID', "InfiniteFantasia"); - Opal.const_set($nesting[0], 'NAME', "無限のファンタジア"); - Opal.const_set($nesting[0], 'SORT_KEY', "むけんのふあんたしあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "失敗、成功レベルの自動判定を行います。\n"); - return (Opal.def(self, '$check_1D20', $InfiniteFantasia_check_1D20$1 = function $$check_1D20(total, _dice_total, cmp_op, target) { - var self = this, output = nil; - - - if (target['$==']("?")) { - return ""}; - if ($truthy(cmp_op['$!=']("<="))) { - return "" - } else if ($truthy($rb_gt(total, target))) { - return " > 失敗"}; - output = (function() {if ($truthy($rb_le(total, $rb_divide(target, 32)))) { - return " > 32レベル成功(32Lv+)" - } else if ($truthy($rb_le(total, $rb_divide(target, 16)))) { - return " > 16レベル成功(16LV+)" - } else if ($truthy($rb_le(total, $rb_divide(target, 8)))) { - return " > 8レベル成功" - } else if ($truthy($rb_le(total, $rb_divide(target, 4)))) { - return " > 4レベル成功" - } else if ($truthy($rb_le(total, $rb_divide(target, 2)))) { - return " > 2レベル成功" - } else { - return " > 1レベル成功" - }; return nil; })(); - if ($truthy($rb_le(total, 1))) { - output = $rb_plus(output, "/クリティカル")}; - return output; - }, $InfiniteFantasia_check_1D20$1.$$arity = 4), nil) && 'check_1D20'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Insane.js b/src/assets/dicebot/Insane.js deleted file mode 100644 index 2533646a2..000000000 --- a/src/assets/dicebot/Insane.js +++ /dev/null @@ -1,477 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$==', '$<=', '$>=', '$===', '$get_scene_table', '$get_horror_scene_table', '$get_mania_scene_table', '$get_dark_scene_table', '$get_description_table', '$get_body_table', '$get_parts_table', '$get_fortunechange_table', '$get_job_table', '$get_badend_table', '$get_random_skill_table', '$get_violence_skill_table', '$get_emotion_skill_table', '$get_perception_skill_table', '$get_skill_skill_table', '$get_knowledge_skill_table', '$get_mystery_skill_table', '$get_conversation_horror_table', '$get_ville_horror_table', '$get_inattendu_horror_table', '$get_ruines_horror_table', '$get_Mlle_horror_table', '$get_latence_horror_table', '$get_city_table', '$get_mountainforest_table', '$get_seaside_table', '$get_overtime_horror_table', '$get_overtimephone_table', '$get_overtimework_scene_table', '$get_corporatenameone_table', '$get_corporatenametwo_table', '$get_corporatenamethree_table', '$get_reaction_scene_table', '$get_interim_reference_number', '$get_table_by_2d6', '$get_table_by_d66_swap', '$get_table_by_1d6', '$lambda', '$get_random_skill_table_text_only', '$roll', '$+', '$times']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Insane'); - - var $nesting = [self].concat($parent_nesting), $Insane_initialize$1, $Insane_check_2D6$2, $Insane_rollDiceCommand$3, $Insane_get_scene_table$4, $Insane_get_horror_scene_table$5, $Insane_get_mania_scene_table$6, $Insane_get_dark_scene_table$7, $Insane_get_description_table$8, $Insane_get_body_table$9, $Insane_get_parts_table$10, $Insane_get_fortunechange_table$11, $Insane_get_job_table$12, $Insane_get_badend_table$13, $Insane_get_random_skill_table$16, $Insane_get_random_skill_table_text_only$17, $Insane_get_violence_skill_table$18, $Insane_get_emotion_skill_table$19, $Insane_get_perception_skill_table$20, $Insane_get_skill_skill_table$21, $Insane_get_knowledge_skill_table$22, $Insane_get_mystery_skill_table$23, $Insane_get_conversation_horror_table$24, $Insane_get_ville_horror_table$25, $Insane_get_inattendu_horror_table$26, $Insane_get_ruines_horror_table$27, $Insane_get_Mlle_horror_table$28, $Insane_get_latence_horror_table$29, $Insane_get_city_table$30, $Insane_get_mountainforest_table$31, $Insane_get_seaside_table$32, $Insane_get_overtime_horror_table$33, $Insane_get_overtimephone_table$34, $Insane_get_overtimework_scene_table$35, $Insane_get_corporatenameone_table$36, $Insane_get_corporatenametwo_table$37, $Insane_get_corporatenamethree_table$38, $Insane_get_reaction_scene_table$39, $Insane_get_interim_reference_number$40; - - - Opal.const_set($nesting[0], 'ID', "Insane"); - Opal.const_set($nesting[0], 'NAME', "インセイン"); - Opal.const_set($nesting[0], 'SORT_KEY', "いんせいん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + "スペシャル/ファンブル/成功/失敗を判定\n" + "・各種表\n" + "シーン表   ST\n" + " 本当は怖い現代日本シーン表 HJST/狂騒の二〇年代シーン表 MTST\n" + " 暗黒のヴィクトリアシーン表 DVST\n" + "形容表    DT\n" + " 本体表 BT/部位表 PT\n" + "感情表      FT\n" + "職業表      JT\n" + "バッドエンド表  BET\n" + "ランダム特技決定表 RTT\n" + "指定特技(暴力)表  (TVT)\n" + "指定特技(情動)表  (TET)\n" + "指定特技(知覚)表  (TPT)\n" + "指定特技(技術)表  (TST)\n" + "指定特技(知識)表  (TKT)\n" + "指定特技(怪異)表  (TMT)\n" + "会話ホラースケープ表(CHT)\n" + "街中ホラースケープ表(VHT)\n" + "不意訪問ホラースケープ表(IHT)\n" + "廃墟遭遇ホラースケープ表(RHT)\n" + "野外遭遇ホラースケープ表(MHT)\n" + "情報潜在ホラースケープ表(LHT)\n" + "遭遇表 都市 (ECT) 山林 (EMT) 海辺 (EAT)/反応表 RET\n" + "残業ホラースケープ表 OHT/残業電話表 OPT/残業シーン表 OWT\n" + "社名決定表1 CNT1/社名決定表2 CNT2/社名決定表3 CNT3\n" + "暫定整理番号作成表 IRN\n" + "・D66ダイスあり\n"); - self.$setPrefixes(["ST", "HJST", "MTST", "DVST", "DT", "BT", "PT", "FT", "JT", "BET", "RTT", "TVT", "TET", "TPT", "TST", "TKT", "TMT", "CHT", "VHT", "IHT", "RHT", "MHT", "LHT", "ECT", "EMT", "EAT", "OPT", "OHT", "OWT", "CNT1", "CNT2", "CNT3", "RET", "IRN"]); - - Opal.def(self, '$initialize', $Insane_initialize$1 = function $$initialize() { - var $iter = $Insane_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Insane_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Insane_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 3; - return (self.d66Type = 2); - }, $Insane_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $Insane_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル(判定失敗。山札から【狂気】を1枚獲得)" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > スペシャル(判定成功。【生命力】1点か【正気度】1点回復)" - } else if (target['$==']("?")) { - return "" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $Insane_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $Insane_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var $a, $b, self = this, output = nil, type = nil, total_n = nil, $case = nil; - - - output = "1"; - type = ""; - total_n = ""; - $case = command; - if ("ST"['$===']($case)) { - type = "シーン表"; - $b = self.$get_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("HJST"['$===']($case)) { - type = "本当は怖い現代日本シーン表"; - $b = self.$get_horror_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MTST"['$===']($case)) { - type = "狂騒の二〇年代シーン表"; - $b = self.$get_mania_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("DVST"['$===']($case)) { - type = "暗黒のヴィクトリアシーン表"; - $b = self.$get_dark_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("DT"['$===']($case)) { - type = "形容表"; - $b = self.$get_description_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BT"['$===']($case)) { - type = "本体表"; - $b = self.$get_body_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("PT"['$===']($case)) { - type = "部位表"; - $b = self.$get_parts_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FT"['$===']($case)) { - type = "感情表"; - $b = self.$get_fortunechange_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("JT"['$===']($case)) { - type = "職業表"; - $b = self.$get_job_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BET"['$===']($case)) { - type = "バッドエンド表"; - $b = self.$get_badend_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RTT"['$===']($case)) { - type = "ランダム特技決定表"; - $b = self.$get_random_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TVT"['$===']($case)) { - type = "指定特技(暴力)表"; - $b = self.$get_violence_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TET"['$===']($case)) { - type = "指定特技(情動)表"; - $b = self.$get_emotion_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TPT"['$===']($case)) { - type = "指定特技(知覚)表"; - $b = self.$get_perception_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TST"['$===']($case)) { - type = "指定特技(技術)表"; - $b = self.$get_skill_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TKT"['$===']($case)) { - type = "指定特技(知識)表"; - $b = self.$get_knowledge_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TMT"['$===']($case)) { - type = "指定特技(怪異)表"; - $b = self.$get_mystery_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("CHT"['$===']($case)) { - type = "会話ホラースケープ表"; - $b = self.$get_conversation_horror_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("VHT"['$===']($case)) { - type = "街中ホラースケープ表"; - $b = self.$get_ville_horror_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("IHT"['$===']($case)) { - type = "不意訪問ホラースケープ表"; - $b = self.$get_inattendu_horror_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RHT"['$===']($case)) { - type = "廃墟遭遇ホラースケープ表"; - $b = self.$get_ruines_horror_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MHT"['$===']($case)) { - type = " 野外遭遇ホラースケープ表"; - $b = self.$get_Mlle_horror_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("LHT"['$===']($case)) { - type = "情報潜在ホラースケープ表 "; - $b = self.$get_latence_horror_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("ECT"['$===']($case)) { - type = "遭遇表・都市"; - $b = self.$get_city_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EMT"['$===']($case)) { - type = "遭遇表・山林"; - $b = self.$get_mountainforest_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EAT"['$===']($case)) { - type = "遭遇表・海辺"; - $b = self.$get_seaside_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("OHT"['$===']($case)) { - type = "残業ホラースケープ表 "; - $b = self.$get_overtime_horror_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("OPT"['$===']($case)) { - type = "残業電話表"; - $b = self.$get_overtimephone_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("OWT"['$===']($case)) { - type = "残業シーン表"; - $b = self.$get_overtimework_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("CNT1"['$===']($case)) { - type = "社名決定表1"; - $b = self.$get_corporatenameone_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("CNT2"['$===']($case)) { - type = "社名決定表2"; - $b = self.$get_corporatenametwo_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("CNT3"['$===']($case)) { - type = "社名決定表3"; - $b = self.$get_corporatenamethree_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RET"['$===']($case)) { - type = "反応表"; - $b = self.$get_reaction_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("IRN"['$===']($case)) { - type = "暫定整理番号作成"; - $b = self.$get_interim_reference_number(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;}; - return "" + (type) + "(" + (total_n) + ") > " + (output); - }, $Insane_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$get_scene_table', $Insane_get_scene_table$4 = function $$get_scene_table() { - var self = this, table = nil; - - - table = ["血の匂いがあたりに充満している。事件か? 事故か? もしや、それは今も続いているのだろうか?", "これは……夢か? もう終わったはずの過去が、記憶の中から蘇ってくる。", "眼下に広がる町並みを見下ろしている。なぜこんな高所に……?", "世界の終わりのような暗黒。暗闇の中、何者かの気配が蠢く……。", "穏やかな時間が過ぎていく。まるであんなことがなかったかのようだ。", "湿った土の匂い。濃密な気配が漂う森の中。鳥や虫の声、風にそよぐ木々の音が聞こえる。", "人通りの少ない住宅街。見知らぬ人々の住まう家々の中からは、定かではない人声や物音が漏れてくる……。", "にわかに空を雲が覆う。強い雨が降り出す。人々は、軒を求めて、大慌てで駆け出していく。", "荒れ果てた廃墟、朽ちた生活の名残。かすかに聞こえるのは風か、波の音か、耳鳴りか。", "人ごみ。喧騒。けたたましい店内BGMに、調子っぱずれの笑い声。騒がしい繁華街の一角だが……?", "明るい光りに照らされて、ほっと一息。だが光が強いほどに、影もまた濃くなる……。"]; - return self.$get_table_by_2d6(table); - }, $Insane_get_scene_table$4.$$arity = 0); - - Opal.def(self, '$get_horror_scene_table', $Insane_get_horror_scene_table$5 = function $$get_horror_scene_table() { - var self = this, table = nil; - - - table = ["不意に辺りが暗くなる。停電か? 闇の中から、誰かがあなたを呼ぶ声が聞こえてくる。", "ぴちょん。ぴちょん。ぴちょん。どこからか、水滴が落ちるような音が聞こえてくる。", "窓ガラスの前を通り過ぎたとき、不気味な何かが映り込む。目の錯覚……?", "テレビからニュースの音が聞こえてくる。何やら近所で物騒な事件があったようだが……", "暗い道を一人歩いている。背後から、不気味な跫音が近づいてくるような気がするが……。", "誰だろう? ずっと視線を感じる。振り向いて見ても、そこにあるのは、いつも通りの光景なのだが……", "突如、携帯電話の音が鳴り響く。マナーモードにしておいたはずなのに……。一体、誰からだろう?", "茜さす夕暮れ。太陽は沈みかけ、空は血のように赤い。不安な気持ちが広がっていく……。", "美味しそうな香りが漂ってきて、急に空腹を感じる。今日は何を食べようかなぁ?", "甲高い泣き声が、響き渡る。猫や子供がどこかで泣いているのか? それとも……。", "寝苦しくて目を覚ます。何か悪夢を見ていたようだが……。あれ、意識はあるのに身体が動かない!"]; - return self.$get_table_by_2d6(table); - }, $Insane_get_horror_scene_table$5.$$arity = 0); - - Opal.def(self, '$get_mania_scene_table', $Insane_get_mania_scene_table$6 = function $$get_mania_scene_table() { - var self = this, table = nil; - - - table = ["苔のこびりつく巨大な岩が並ぶ、川に浮かぶ島。何を祀っているのかも分からない祭壇があり、いわく言いがたい雰囲気を漂わせる。", "もぐり酒場。看板もない地下の店は、街の男や酌婦たちで騒がしい。", "遺跡の中。誰が建てたとも知れぬ、非ユークリッド幾何学的な建築は、中を歩く者の正気を、徐々に蝕んでいく。", "大学図書館。四十万冊を超える蔵書の中には、冒涜的な魔道書も含まれているという。", "強い風にのって、どこからか磯の香りが漂ってくる。海は遠いはずだが……。", "多くの人でごったがえす街角。ここならば、何者が混じっていても、気付かれることはない。", "深い闇の中。その向こうには、名状しがたきなにものかが潜んでいそうだ。", "歴史ある新聞社。休むことなく発行し続けた、百年分におよぶ新聞が保管されている。", "古い墓地。捻れた木々の間に、古びて墓碑銘も読めぬような墓石が並ぶ。いくつかの墓石はなぜか傾いている。", "河岸に建つ工場跡。ずいぶん前に空き家になったらしく、建物は崩れかけている。どうやら浮浪者の住処になっているらしい。", "静かな室内。なにか、不穏な気配を感じるが……あれはなんだ? 窓に、窓に!"]; - return self.$get_table_by_2d6(table); - }, $Insane_get_mania_scene_table$6.$$arity = 0); - - Opal.def(self, '$get_dark_scene_table', $Insane_get_dark_scene_table$7 = function $$get_dark_scene_table() { - var self = this, table = nil; - - - table = ["霊媒師を中心に円卓を取り囲む人々が、降霊会を行っている。薄暗い部屋の中に怪しげなエクトプラズムが漂い始める。", "労働者達の集うパブ。女給が運ぶエールやジンを、赤ら顔の男たちが飲み干している。", "血の香りの漂う場所。ここで何があったのだろうか……。", "売春宿の建ち並ぶ貧民街。軒先では娼婦たちが、客を待ち構えている。", "人々でごったがえす、騒がしい通り。様々な噂話が飛び交っている。東洋人を初めとした、外国人の姿も目立つ。", "霧深い街角。ガス灯の明かりだけが、石畳を照らし出している。", "静まり返った部屋の中。ここならば、何をしても余計な詮索はされないだろう。", "汽笛の響く波止場。あの船は、外国へと旅立つのだろうか。", "書物の溢れる場所。調べ物をするにはもってこいだが。", "貴族や資産階級の人々が集うパーティ。上品な微笑みの下では、どんな企みが進んでいるのだろうか。", "静かな湖のほとり。草むらでは野生の兎が飛びはねている。"]; - return self.$get_table_by_2d6(table); - }, $Insane_get_dark_scene_table$7.$$arity = 0); - - Opal.def(self, '$get_description_table', $Insane_get_description_table$8 = function $$get_description_table() { - var self = this, table = nil; - - - table = [[11, "青ざめた"], [12, "血をしたたらせた"], [13, "うろこ状の"], [14, "冒涜的な"], [15, "円筒状の"], [16, "無限に増殖する"], [22, "不規則な"], [23, "ガーガー鳴く"], [24, "無数の"], [25, "毛深い"], [26, "色彩のない"], [33, "伸縮する"], [34, "みだらな"], [35, "膨れ上がった"], [36, "巨大な"], [44, "粘液まみれの"], [45, "絶えず変化する"], [46, "蟲まみれの"], [55, "キチン質の"], [56, "「本体表を使用する」のような"], [66, "虹色に輝く"]]; - return self.$get_table_by_d66_swap(table); - }, $Insane_get_description_table$8.$$arity = 0); - - Opal.def(self, '$get_body_table', $Insane_get_body_table$9 = function $$get_body_table() { - var self = this, table = nil; - - - table = [[11, "人間"], [12, "犬"], [13, "ネズミ"], [14, "幽鬼"], [15, "なめくじ"], [16, "蟲"], [22, "顔"], [23, "猫"], [24, "ミミズ"], [25, "牛"], [26, "鳥"], [33, "半魚人"], [34, "人造人間"], [35, "蛇"], [36, "老人"], [44, "アメーバ"], [45, "女性"], [46, "機械"], [55, "タコ"], [56, "「部位表」を使用する"], [66, "小人"]]; - return self.$get_table_by_d66_swap(table); - }, $Insane_get_body_table$9.$$arity = 0); - - Opal.def(self, '$get_parts_table', $Insane_get_parts_table$10 = function $$get_parts_table() { - var self = this, table = nil; - - - table = [[11, "胴体"], [12, "足"], [13, "腕"], [14, "髪の毛/たてがみ"], [15, "口"], [16, "乳房"], [22, "顔"], [23, "肌"], [24, "瞳"], [25, "尾"], [26, "触手"], [33, "鼻"], [34, "影"], [35, "牙"], [36, "骨"], [44, "宝石"], [45, "翼"], [46, "脳髄"], [55, "舌"], [56, "枝や葉"], [66, "内臓"]]; - return self.$get_table_by_d66_swap(table); - }, $Insane_get_parts_table$10.$$arity = 0); - - Opal.def(self, '$get_fortunechange_table', $Insane_get_fortunechange_table$11 = function $$get_fortunechange_table() { - var self = this, table = nil; - - - table = ["共感(プラス)/不信(マイナス)", "友情(プラス)/怒り(マイナス)", "愛情(プラス)/妬み(マイナス)", "忠誠(プラス)/侮蔑(マイナス)", "憧憬(プラス)/劣等感(マイナス)", "狂信(プラス)/殺意(マイナス)"]; - return self.$get_table_by_1d6(table); - }, $Insane_get_fortunechange_table$11.$$arity = 0); - - Opal.def(self, '$get_job_table', $Insane_get_job_table$12 = function $$get_job_table() { - var self = this, table = nil; - - - table = [[11, "考古学者≪情景≫≪考古学≫"], [12, "ギャング≪拷問≫≪怒り≫"], [13, "探偵≪第六感≫≪数学≫"], [14, "警察≪射撃≫≪追跡≫"], [15, "好事家≪芸術≫≪人類学≫"], [16, "医師≪切断≫≪医学≫"], [22, "教授 知識分野から好きなものを二つ"], [23, "聖職者≪恥じらい≫≪愛≫"], [24, "心理学者 情動分野から好きなものを二つ"], [25, "学生 知識分野と情動分野から好きなものを一つずつ"], [26, "記者≪驚き≫≪メディア≫"], [33, "技術者≪電子機器≫≪機械≫"], [34, "泥棒≪物陰≫≪罠≫"], [35, "芸能人≪悦び≫≪芸術≫"], [36, "作家≪憂い≫≪教養≫"], [44, "冒険家≪殴打≫≪乗物≫"], [45, "司書≪整理≫≪メディア≫"], [46, "料理人≪焼却≫≪味≫"], [55, "ビジネスマン≪我慢≫≪効率≫"], [56, "夜の蝶≪笑い≫≪官能≫"], [66, "用心棒 好きな暴力×2"]]; - return self.$get_table_by_d66_swap(table); - }, $Insane_get_job_table$12.$$arity = 0); - - Opal.def(self, '$get_badend_table', $Insane_get_badend_table$13 = function $$get_badend_table() {try { - - var $$14, $$15, self = this, table = nil; - - - table = ["あなたの周りに漆黒の闇が、異形の前肢が、無数の触手が集まってくる。彼らは、新たな仲間の誕生を祝福しているのだ。あなたは、もう怪異に怖がることはない。なぜなら、あなた自身が怪異となったからだ。以降、あなたは怪異のNPCとなって登場する。", $send(self, 'lambda', [], ($$14 = function(){var self = $$14.$$s || this; - - Opal.ret("" + "牢獄のような、手術室のような薄暗い部屋に監禁される。そして、毎日のようにひどい拷問を受けることになった。何とか隙を見て逃げ出すことができたが……。" + (self.$get_random_skill_table_text_only()) + "の特技が【恐怖心】になる。")}, $$14.$$s = self, $$14.$$arity = 0, $$14)), "間一髪のところを、謎の組織のエージェントに助けられる。「君は見所がある。どうだい? 我々と一緒にやってみないか」あなたは望むなら、忍者/魔法使い/ハンターとして怪異と戦うことができる。その場合、あなたは別のサイコロ・フィクションのキャラクターとして生まれ変わる。", "病院のベッドで目を覚ます。長い間、ひどい悪夢を見ていたような気がする。そのセッションの後遺症判定は、マイナス1の修正がつき、ファンブル値が1上昇する。", "どこかの民家で目を覚ます。素敵な人物に助けられ、手厚い介護を受けたようだ。特にペナルティはなし。", "「危ない!」大いなる絶望が、あなたに襲いかかってくる。1D6マイナス1点のダメージを受ける。これによって【生命力】が0点になった場合、あなたは死亡する。ただし、あなたにプラスの【感情】を持つNPCがいた場合、そのNPCが、そのダメージを無効化してくれる。", "別の新たな怪事件に巻き込まれる。苦労のすえ、そちらは何とか無事解決! 特にペナルティはなし。", "大きな傷を負い、生死の境をさまよう。好きな特技で判定を行うこと。失敗すると死亡する。このとき、減少している【生命力】の分だけマイナスの修正がつく。", "目が覚めると見慣れない場所にいた。ここはどこだ? 私は誰だ? どうやら、恐怖のあまり、記憶を失ってしまったようだ。功績点があれば、それを1点失う。", $send(self, 'lambda', [], ($$15 = function(){var self = $$15.$$s || this; - - Opal.ret("" + "目を覚ますと、そこはいつもの場所だった。しかし、どこか違和感を覚える。君たち以外、誰も事件のことを知らないようだ。死んだはずのあの人物も生きている。時間を旅したのか、ここは違う世界線か……? " + (self.$get_random_skill_table_text_only()) + "の特技が【恐怖心】になる。")}, $$15.$$s = self, $$15.$$arity = 0, $$15)), "振り返ると、そこには圧倒的な「それ」が待ち構えていた。無慈悲な一撃が、あなたを襲い、あなたは死亡する。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $Insane_get_badend_table$13.$$arity = 0); - - Opal.def(self, '$get_random_skill_table', $Insane_get_random_skill_table$16 = function $$get_random_skill_table() { - var $a, $b, self = this, skillTableFull = nil, skillTable = nil, total_n = nil, tableName = nil, skill = nil, total_n2 = nil; - - - skillTableFull = [["暴力", ["焼却", "拷問", "緊縛", "脅す", "破壊", "殴打", "切断", "刺す", "射撃", "戦争", "埋葬"]], ["情動", ["恋", "悦び", "憂い", "恥じらい", "笑い", "我慢", "驚き", "怒り", "恨み", "哀しみ", "愛"]], ["知覚", ["痛み", "官能", "手触り", "におい", "味", "物音", "情景", "追跡", "芸術", "第六感", "物陰"]], ["技術", ["分解", "電子機器", "整理", "薬品", "効率", "メディア", "カメラ", "乗物", "機械", "罠", "兵器"]], ["知識", ["物理学", "数学", "化学", "生物学", "医学", "教養", "人類学", "歴史", "民俗学", "考古学", "天文学"]], ["怪異", ["時間", "混沌", "深海", "死", "霊魂", "魔術", "暗黒", "終末", "夢", "地底", "宇宙"]]]; - $b = self.$get_table_by_1d6(skillTableFull), $a = Opal.to_ary($b), (skillTable = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b; - $a = [].concat(Opal.to_a(skillTable)), (tableName = ($a[0] == null ? nil : $a[0])), (skillTable = ($a[1] == null ? nil : $a[1])), $a; - $b = self.$get_table_by_2d6(skillTable), $a = Opal.to_ary($b), (skill = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b; - return ["" + "「" + (tableName) + "」≪" + (skill) + "≫", "" + (total_n) + "," + (total_n2)]; - }, $Insane_get_random_skill_table$16.$$arity = 0); - - Opal.def(self, '$get_random_skill_table_text_only', $Insane_get_random_skill_table_text_only$17 = function $$get_random_skill_table_text_only() { - var $a, $b, self = this, text = nil; - - - $b = self.$get_random_skill_table(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), $b; - return text; - }, $Insane_get_random_skill_table_text_only$17.$$arity = 0); - - Opal.def(self, '$get_violence_skill_table', $Insane_get_violence_skill_table$18 = function $$get_violence_skill_table() { - var self = this, table = nil; - - - table = ["焼却", "拷問", "緊縛", "脅す", "破壊", "殴打", "切断", "刺す", "射撃", "戦争", "埋葬"]; - return self.$get_table_by_2d6(table); - }, $Insane_get_violence_skill_table$18.$$arity = 0); - - Opal.def(self, '$get_emotion_skill_table', $Insane_get_emotion_skill_table$19 = function $$get_emotion_skill_table() { - var self = this, table = nil; - - - table = ["恋", "悦び", "憂い", "恥じらい", "笑い", "我慢", "驚き", "怒り", "恨み", "哀しみ", "愛"]; - return self.$get_table_by_2d6(table); - }, $Insane_get_emotion_skill_table$19.$$arity = 0); - - Opal.def(self, '$get_perception_skill_table', $Insane_get_perception_skill_table$20 = function $$get_perception_skill_table() { - var self = this, table = nil; - - - table = ["痛み", "官能", "手触り", "におい", "味", "物音", "情景", "追跡", "芸術", "第六感", "物陰"]; - return self.$get_table_by_2d6(table); - }, $Insane_get_perception_skill_table$20.$$arity = 0); - - Opal.def(self, '$get_skill_skill_table', $Insane_get_skill_skill_table$21 = function $$get_skill_skill_table() { - var self = this, table = nil; - - - table = ["分解", "電子機器", "整理", "薬品", "効率", "メディア", "カメラ", "乗物", "機械", "罠", "兵器"]; - return self.$get_table_by_2d6(table); - }, $Insane_get_skill_skill_table$21.$$arity = 0); - - Opal.def(self, '$get_knowledge_skill_table', $Insane_get_knowledge_skill_table$22 = function $$get_knowledge_skill_table() { - var self = this, table = nil; - - - table = ["物理学", "数学", "化学", "生物学", "医学", "教養", "人類学", "歴史", "民俗学", "考古学", "天文学"]; - return self.$get_table_by_2d6(table); - }, $Insane_get_knowledge_skill_table$22.$$arity = 0); - - Opal.def(self, '$get_mystery_skill_table', $Insane_get_mystery_skill_table$23 = function $$get_mystery_skill_table() { - var self = this, table = nil; - - - table = ["時間", "混沌", "深海", "死", "霊魂", "魔術", "暗黒", "終末", "夢", "地底", "宇宙"]; - return self.$get_table_by_2d6(table); - }, $Insane_get_mystery_skill_table$23.$$arity = 0); - - Opal.def(self, '$get_conversation_horror_table', $Insane_get_conversation_horror_table$24 = function $$get_conversation_horror_table() { - var self = this, table = nil; - - - table = ["指定特技:死\n会話の最中、あなたはふと、相手の肩越しに目を向ける。なんの前触れもなく、遠くの建物の屋上から女が飛び降りた。声を上げる暇もなく、彼女は吸い込まれるように地面に叩きつけられる。距離があるにもかかわらず、女と目が合ってしまった。―それ以降、女の顔が脳裏にこびりついて、離れようとしない……。", "指定特技:殴打\n地面に横たわった相手を見ながら、あなたは冷や汗が背中に伝うのを感じていた。相手は倒れたまま、不自然に体をねじ曲げて、ぴくりとも動かない。じわじわと血溜まりが広がっていく……。――殺してしまった。動揺して瞬きしたとき、相手の身体は消えていた。血溜まりもなくなっている。あなたは茫然と立ちすくむ。幻覚だったのだろうか……?", "指定特技:電子機器\nあなたが電話で相手と話をしていると、不意に、相手が黙り込んだ。「……なんだあれ?」独り言のように言って、それから慌てたような声を出した。「こっち来る……こっち来る!うわっ!うわああああっ!助けて!助けて!!」それを最後に、電話はぶつりと切れる。かけ直すと話し中だ。ずっと。", "指定特技:物音\nあなたが電話で相手と話していると、ぶつぶつ言う声が聞こえてくる。混線だろうか?不思議に思って聞いているうちに、頭がぼんやりしてくる。ぶつぶつ、ぶつぶつ、ぶつぶつ、ぶつぶつ……。気が付くと、電話をもったままぼーっと立っていた。ただ、とても怖いことを言われたような気がしている。そもそも、あなたは誰と話をしていたんだろう?", "指定特技:拷問\n会話の最中、血の味を感じた。同時に、口の中にごろごろした違和感を覚える。相手が真っ青になってあなたの顔を指差す。どうしたのか訊ねようと口を開くと、ぽろりと何かが地面に落ちた。見下ろすと、血溜まりの中に白々と、あなたの歯が一本落ちていた。", "指定特技:人類学\n会話の最中、視界に違和感を覚えて、あなたは瞬きする。相手の顔が、変になっていた。引き延ばして、かき回したように、グロテスクに歪んでいる。えっ?と思ってよく見るが、歪みは変わらない。相手はまったく気付いていないようだ。きつく目を瞑ってから見直すと、ようやく歪みは消えた。君の心に一つの疑いが生まれる。目の前の相手は、本当に人間なのだろうか?"]; - return self.$get_table_by_1d6(table); - }, $Insane_get_conversation_horror_table$24.$$arity = 0); - - Opal.def(self, '$get_ville_horror_table', $Insane_get_ville_horror_table$25 = function $$get_ville_horror_table() { - var self = this, table = nil; - - - table = ["指定特技:乗物\nキキィーッ!激しいブレーキ音、そして鈍い音。はっとして振り返ると、止まった車と、その前に倒れている人が目に入った。交通事故だ!慌てて駆け寄り、被害者の顔を見た途端、あなたは凍り付いた。倒れているのは、あなただった。――えっ!?驚いて瞬きすると、路上のあなたも、車も消えていた。", "指定特技:情景\n通りすがりの家の屋根に誰かが立っている。あんなところで何を……?その誰かは踊りを踊っているように見えた。手足を振り回し、頭を激しく動かして、踊っている。尋常な様子ではない。狂ったように踊っている。見ているうちにものすごく不吉な気分になってきた。見たくないのに、どういうわけか、目を逸らすことができない。不吉な予感はどんどん強くなってくる……。", "指定特技:終末\nウゥゥゥゥゥゥゥゥ………… 街にサイレンが鳴り響く。どこで鳴っているのか、いつまで鳴っているのか。こんなに大きな音なのに、どうして誰も騒がないのだろう。不思議に思って歩いていると、道を向こうから歩いてくる人影がある。怪我をしているのか、よろめいて、今にも倒れそうになりながら、がくり、がくりと不自然な歩き方で近づいてくる。あれはいったい………?", "指定特技:脅す\n歩いていると、不意に静かになった。あたりを見渡すと、人も車も誰もいない。無人の街が、どこまでも広がっている。さっきまでたくさん人がいたのに……!?「おい!何やってるんだ!」突然怒鳴られてぎくりとする。振り返ると、作業着をきた男性がこっちへ走ってきていた。「馬鹿野郎!こんなところに来たら――」最後まで聞かないうちに、不意に音が戻ってきた。人と車が行き交う、元通りの街だ。今のは何だったんだ……?", "指定特技:混沌\n電柱の根元に、女性がうずくまっている。お腹を押さえて、苦しそうに顔を伏せている。「大丈夫ですか?」近づいて声をかけたあなたに、女性は頷いた。「はい――ありがとうございます。」そう言って顔を上げた女性の顔には、何もなかった。つるりとした剥き玉子のような皮膚が続いているだけだった。うわっ!?のけぞった途端、意識が遠ざかって、気がつくとあなたは電柱の根元にうずくまっていた。", "指定特技:笑い\n駅に着くと、やけに混雑している。人身事故で電車が止まっているようだ。ツイてないな。そう思っていると、改札付近の人ごみの中から、和服の女性が急ぎ足であなたのほうへ近づいてきた。女性は満面の笑みを浮かべていた。独りごとを言っているのか、口が動いている。すれ違いざまに、女性の声が耳に入った。「やってやった。やってやった。やってやった。ざまあみろ」えっ、と思って振り返るあなたを残して、女性は人ごみの中へ消えていった。"]; - return self.$get_table_by_1d6(table); - }, $Insane_get_ville_horror_table$25.$$arity = 0); - - Opal.def(self, '$get_inattendu_horror_table', $Insane_get_inattendu_horror_table$26 = function $$get_inattendu_horror_table() { - var self = this, table = nil; - - - table = ["指定特技:驚き\nバタバタバタッ!突然の物音に、あなたはぎょっとして振り仰ぐ。天井裏を何かが動き回っているようだ。動物が入り込んだのだろうか?それにしては大きい音だ。――まるで子供がめちゃめちゃに走り回っているような。物音は一瞬止まり、すぐに再開した。ドン!ドン!ドン!ドン!飛び跳ねるような音がするのは、ちょうどあなたの真上だ……。", "指定特技:宇宙\n窓から光が差し込む。窓に目を向けてみると、白く輝く巨大な飛行物体が浮かんでいた。魅せられたように見つめていると、鳥や飛行機とは思えないような、激しく不規則な動きで飛び回り始める。なんだろう、あれは?不思議に思っていると、背後から誰かが囁いた。「あれは………だよ」はっと気付くと、いつの間にか、まったく違う場所にいた。手のひらに何か埋まっているような硬い感触がある……。", "指定特技:におい\n奇妙な荷物が届いた。ガムテープでぐるぐる巻きにされた大きな段ボールだ。差出人名を書いた紙がはってあるが、滲んでしまって読めない。箱の中身は土だった。陶器のかけらや石ころが混ざった、変な臭いのする土が入っていた。わけがわからないので中身は捨てたが、それ以降なんだかツキが落ちている気がする……。", "指定特技:我慢\n壁の向こうから誰かが話している声が聞こえてくる。「……だから。こいつは……しないと」「そうね……わいそ……さなきゃ」ぼそぼそ、ぼそぼそと、陰気な調子で会話は続く。何を話しているのか、内容はよくわからないが、なんとなく自分のことを言われているようで薄気味が悪い。気になって壁に耳を当てたとき、はっきりした声が、壁の向こうからこう言った。「……ねえ、ちゃんと聞いてる?」", "指定特技:手触り\nぽたり。ぽたり。首筋に落ちた生暖かい水滴の感触に、あなたは眉を寄せた。気がつくと机の上に、赤い雫が落ちている。鉄臭いにおいが鼻を突く。ぽたり。ぽたり。ぽたり。雫は勢いを増し、次々と落ちてきて、机の上に広がってゆく。ゆっくりと見上げると、天井には大きく赤黒いしみが広がっていた。ぽたり。ぽたりぽたり。ぽたり。――ぼたぼたぼたっ!高まる水音にあなたは立ちすくむ。天井裏に、いったい何が……?", "指定特技:地底\n見慣れたはずの場所に、見慣れない扉を見つけた。開けてみると、長い下り階段が闇の中に伸びている。不審に思って下りてみると……そこは地下室だった。こんな場所があったなんて。明かりを片手に進んでいくと、何かが近づいてくる気配がする。闇の中から、何者かが、あなたの名を呼んだ。"]; - return self.$get_table_by_1d6(table); - }, $Insane_get_inattendu_horror_table$26.$$arity = 0); - - Opal.def(self, '$get_ruines_horror_table', $Insane_get_ruines_horror_table$27 = function $$get_ruines_horror_table() { - var self = this, table = nil; - - - table = ["指定特技:暗黒\n重く頑丈そうな扉を開ける。部屋の中は真っ暗だった。灯りで照らしてみると、別の部屋へと続く道が何本か見つかった。目ぼしいものはなさそうだ。一旦、入り口に戻ろうと、入ってきた扉のほうを振り返る。そこには壁しかなかった。あの重厚な扉がなくなっている。そんな馬鹿な。しかし、何度探してもどの壁にも扉らしきものは見当たらない。仕方なく、通路を進むことにしたが、じわじわと不吉な気分が込み上げてくる。……あの扉は、開けてはいけなかったのではないだろうか?", "指定特技:整理\nあなたは廃墟の中、ブーン……という低い音に気付いた。冷蔵庫だ。どこから電気が来ているのか、白い冷蔵庫が廃屋の片隅にひっそりと佇んでいる。ガチャリと扉を引き開けてみたあなたは、中にいた何かと、目が合った。……気がつくと、あなたは暗くて冷たいところで体を丸めている。ブーン…という音が聞こえている。ここは涼しくて、狭くて――とても居心地がいい。", "指定特技:追跡\n廃屋のふすまを開けたとき、あなたは強い違和感を覚える。分厚く埃が積もったその部屋には、濃厚な気配が漂っていた。ちゃぶ台の上には中身の残った湯飲み。さっきまで誰かが座っていたみたいに凹んだ座布団。なぜこの茶の間には、こんなに生活感があるのだろうか……。", "指定特技:愛\n廃墟を歩いていると、突然、あなたの携帯に電話がかかってきた。静まりかえった廃墟に鳴り響く着信音に肝を潰しつつも出てみると、電話の向こうから、あなたの祖母がいきなり叱りつけてきた。「あんた、何やってんの!そんなとこ行ったらダメでないの!」え?なぜ祖母が……?「早くそこから出なさい!大変なことになるよ!」わけがわからずに口ごもっているうちに、電話は切れた。ディスプレイには、「圏外」と表示されていた。", "指定特技:罠\n廃墟を歩いていると、いきなり足に激痛が走った。悲鳴をこらえて下を見ると、あなたの足首をがっちりとトラバサミが捕えている。なぜこんな場所に、こんな罠が……?苦労してトラバサミを解除して、改めて周りを見たとき、あなたは愕然とする。罠は一つだけではなかった。瓦礫の下に隠すようにして、いくつもいくつも、トラバサミが仕掛けられていた。", "指定特技:薬品\n不意に、シンナーの匂いが鼻を刺した。廃墟の壁にべったりと、赤いペンキの文字が書かれている。何が書いてあるのかは判然としないが、ひたすら悪意と憎しみを塗り込めたようなタッチにおぞけが走る。そのうちあることに気付いて、あなたは総毛立った。ペンキがまだ新しい。……塗り立てのように新しいのだ。"]; - return self.$get_table_by_1d6(table); - }, $Insane_get_ruines_horror_table$27.$$arity = 0); - - Opal.def(self, '$get_Mlle_horror_table', $Insane_get_Mlle_horror_table$28 = function $$get_Mlle_horror_table() { - var self = this, table = nil; - - - table = ["指定特技:痛み\nブ―――――――ン耳元で甲高い羽音が響いてくる。見たことのない真っ赤な羽虫の群れが飛んでいた。ブ―――――――ン。羽虫を追い払うように、腕を振るう。痛いっ。腕に刺すような痛みが走った。ブ―――――――ン虫たちは、どこかへ去っていく。みるみる腕の表面に不気味な水疱がぽつぽつと浮かび上がってきた。", "指定特技:夢\n木々の間で、何か大きなものが動いているのが見える。肉の腐ったような臭いがぷんと鼻を突く。まだら模様のあれは……毛皮?それとも、ずたずたになった服の切れ端?そいつがあなたを見た。木の葉の合間から除く目は、まるで人のような――目が合った瞬間から記憶がない。気が付くと、人の髪に似た黒い毛が、あなたの全身に付着していた。", "指定特技:恨み\n林の中で出くわした大樹の幹には、たくさんの藁人形が釘で打ち付けられていた。うわあ、と思いながら見上げるうちに、気のめいる事実に気付いてしまった。新しめの藁人形の一つに、名前の書かれた札が貼り付けられている。――ひどく、見覚えのある名前だった。", "指定特技:深海\n……おーい。……お―――い。遠く、呼ぶ声を聴いた気がして、波の合間に目を凝らす。つるりとした黒い影が、浮きつ沈みつ、あなたを差し招いている。ひい、ふう、みい、よう……七人。七人の黒い影が、波間から、あなたに手を振っている。――なんだか、頭がぼうっとしてきた。", "指定特技:物陰\n藪の中に廃車が埋もれている。特徴のない白いバンだ。窓は真っ黒な煤で汚れていて、何も見えない。車体は錆び付いて、塗料も剥がれ、打ち棄てられて久しい廃車であることは確実だ。――それなのに、廃車の中から刺すような視線を感じる。ロックが外れる音がして、ゆっくりと後部座席のドアが開き始める……。", "指定特技:焼却\nパチ……パチ……。火の燃える音がする。空き地で焚火が炎を上げていた。そばには誰もいない。心温まる思いで立ち止まり、木の枝で焚火をかき回していると、炎の中から軽やかな笑い声が聞こえた。ぎょっとするあなたの足許を、猫のような大きさの何かがするりと抜けていった。焚火に目を戻すと、そこにはただ、くすぶる骨の塊が残されているだけだった。"]; - return self.$get_table_by_1d6(table); - }, $Insane_get_Mlle_horror_table$28.$$arity = 0); - - Opal.def(self, '$get_latence_horror_table', $Insane_get_latence_horror_table$29 = function $$get_latence_horror_table() { - var self = this, table = nil; - - - table = ["指定特技:味\nのどの渇きを覚えた。調べ物を開始した時間から、時計の針は大分進んでいる。どうやら根をつめ過ぎたようだ。画面に目を戻しつつ、ペットボットルの水を口に含む。すると、口内に違和感が広がった。たまらず水を吐き出す。すると、真っ黒い液体が机の上の資料を汚した。口の中には、ドブ川のような臭いがこびりついている。確認したペットボトルの水は、透明なのだが……?", "指定特技:カメラ\n資料の間から、黄ばんだ封筒に入った写真の束が出てきた。被写体は……あなただ。知らないうちに撮られた、あなたの写真が、何十枚も束ねられている。色褪せた写真を無造作に止めた輪ゴムは劣化して、ねばついていた。――だれが、こんな写真を?何の目的で……?", "指定特技:メディア\nテレビのニュースを見ていると、それまで淀みなく喋っていたアナウンサーが、不意に黙り込んだ。どうしたんだろう、と思っていると、アナウンサーが奇妙なことを言い始めた。「死ぬこともあり得ます。と語りました。また、高確率で、災いが起こります。今日から明日にかけて、厳重に警戒してください。警戒してください。警戒してください」アナウンサーは、画面の向こうからあなたの目をじっと見つめている。あなたが戸惑っていると、ひとりでにテレビの電源が切れた。", "指定特技:民俗学\n資料を漁るうちに、ある寒村に伝わるおぞましい風習に辿り着いた。暴力……儀式……生贄……。とてもまともな人間のやることとは思えない所業に震えあがる。その風習には、なぜか既視感があった。どこで読んだんだろう?考えるうちに、ある記憶が蘇った。あなたの幼い頃の記憶だった。いや……そんな、馬鹿な。あなたの故郷が、こんな寒村のはずがない……。", "指定特技:魔術\n資料の中から、奇妙な古書が出てきた。皮装丁の豪華な本で、妙な臭いがする。文書は支離滅裂で、正気の人間が書いたとは思えない。だが、破れそうなページを一枚一枚めくっていくと、しだいに作者の言っていることがわかってくる。どんどん、どんどん、わかってくる。ああ、もう、わかる。完全にわかる。もう大丈夫だ。きっとこの本は、あなたに読まれるために書かれたのだ。", "指定特技:歴史\n表紙のないレポートが見つかった。パラパラめくってみると、まさにあなたが今調べている件についての調査報告だった。もどかしいことに、あちこち墨塗りされていて、肝心のところがわからない。察するに、どうも、軍による調査のようだ。軍?なぜ軍隊がこの件を調べていたのだろう……?"]; - return self.$get_table_by_1d6(table); - }, $Insane_get_latence_horror_table$29.$$arity = 0); - - Opal.def(self, '$get_city_table', $Insane_get_city_table$30 = function $$get_city_table() { - var self = this, table = nil; - - - table = ["できそこない×3 基本p246", "にらむ人×1 デッドループp190 犬×1 基本p243", "信奉者×2 基本p243", "顔を隠した女×1 デッドループp192", "幽霊自動車×1 デッドループp193", "怨霊×1 基本p245"]; - return self.$get_table_by_1d6(table); - }, $Insane_get_city_table$30.$$arity = 0); - - Opal.def(self, '$get_mountainforest_table', $Insane_get_mountainforest_table$31 = function $$get_mountainforest_table() { - var self = this, table = nil; - - - table = ["のっぺらぼう×3 デッドループp190", "毒蟲の群れ×2 デッドループp191", "熊×1 デッドループp191", "巨大昆虫×1 デッドループp192", "人狼×1 基本p265", "くねくね×1 デッドループp193"]; - return self.$get_table_by_1d6(table); - }, $Insane_get_mountainforest_table$31.$$arity = 0); - - Opal.def(self, '$get_seaside_table', $Insane_get_seaside_table$32 = function $$get_seaside_table() { - var self = this, table = nil; - - - table = ["人魂×3 デッドループp190", "深きもの×2 基本p261", "星を渡るもの×1 基本p261", "宇宙人×1 基本p257", "魔女×1 基本p245", "這いずるもの×1 基本p261"]; - return self.$get_table_by_1d6(table); - }, $Insane_get_seaside_table$32.$$arity = 0); - - Opal.def(self, '$get_overtime_horror_table', $Insane_get_overtime_horror_table$33 = function $$get_overtime_horror_table() { - var self = this, table = nil; - - - table = ["指定特技:死\n窓に目をやったとき、窓の外を落下する人影と目が合った!慌てて窓辺に駆け寄るが、下には何もない。幻覚だったのだろうか……?", "指定特技:機械\n突然、コピー機が唸りを上げて紙を吐き出し始めた。床に舞い散ったコピー用紙には、歪んだ人の顔のようなものが印刷されている。気味が悪い……。", "指定特技:物陰\n蒼白い子供が机の下からあなたを見上げている。うわっ!と叫んで飛び退くと、子供の姿は消えた。", "指定特技:手触り\n仕事をしていると、背後から長い黒髪が垂れ下がってきた。女の長い黒髪だ。……後ろで覗き込んでいるのは、一体誰だ?", "指定特技:憂い\n視界の隅を、暗い顔の男が通り過ぎるのが見えた。振り返ってみても、誰もいない。誰だ?知らないぞ、あんな奴。", "指定特技:暗黒\nバツン!突然の停電でフロアが闇に沈んだ。驚いて顔を上げると、闇の中にたくさんの人影が佇んで、じっとあなたを見ている……!"]; - return self.$get_table_by_1d6(table); - }, $Insane_get_overtime_horror_table$33.$$arity = 0); - - Opal.def(self, '$get_overtimephone_table', $Insane_get_overtimephone_table$34 = function $$get_overtimephone_table() { - var self = this, table = nil; - - - table = ["「進捗どうですか?」クライアントからの進捗確認の電話。今やってるよ!電話の時間がもったいないんだよ!ストレスで胃が痛い。【生命力】マイナス1。", "「仕様が変わりまして……」クライアントから仕様変更の連絡。今かよ!?殺すぞ!?せっかくの作業が無駄になる。PPマイナス1。", "「最近電話に出ないけど……大丈夫?」恋人や家族など、大切な人からの電話。仕事中にかけてくるなよと思いつつも、少し気が紛れた。【正気度】1回復。", "「特上寿司五人前お願いします!」間違い電話だった。驚かせやがって……。", "「ちょっと、この前の仕事だけどどうなってるんだ!」別件のクレームの電話だ!疲れた精神にダメージを負って、【正気度】マイナス1。", "「……ねばいいのに。」電話の向こうから地獄のような声が囁く。ぞっとして反射的に電話を切る。着信履歴は残っていない……なんだ今の!?《電子機器》で恐怖判定。"]; - return self.$get_table_by_1d6(table); - }, $Insane_get_overtimephone_table$34.$$arity = 0); - - Opal.def(self, '$get_overtimework_scene_table', $Insane_get_overtimework_scene_table$35 = function $$get_overtimework_scene_table() { - var self = this, table = nil; - - - table = ["ジジッ……不意に蛍光灯がちらつく。電気系統がおかしいのだろうか?停電は勘弁してほしいのだが…。", "ぴちょん。ぴちょん。どこからか水の滴る音が聞こえる。雨漏りか、蛇口の閉め忘れか?", "ジャバーッ……ズゴゴゴゴ。トイレの水を流す音が響き渡る。誰かトイレにいたのか?それとも、他の階だろうか?", "サイレンの音が近づいてきて、赤色灯の光が窓から射し込む。近くで何かがあったようだが……。", "背後から誰かの話し声が聞こえた気がする。咄嗟に振り返るが……空耳だろうか?", "窓ガラスの向こうに見える夜の灯りを切ない気持ちで見つめる。早く帰りたい……。", "突如、携帯電話の音が鳴り響く。マナーモードにしていたはずなのに……。一体、誰からだろう?", "不意の機械音に驚いてみると、ファックスが紙を吐き出している。こんな時間になんだろう?", "美味しそうな香りが漂ってきて、急に空腹を感じる。どこから来たんだ、この匂いは?", "気分転換に見ていたネットに夢中になって、ふと気付くと何分も経過……いかんいかん。", "ガクンと船を漕いで、ハッと目を覚ました。慌てて時計を見る……えっ、もうこんな時間なの!?"]; - return self.$get_table_by_2d6(table); - }, $Insane_get_overtimework_scene_table$35.$$arity = 0); - - Opal.def(self, '$get_corporatenameone_table', $Insane_get_corporatenameone_table$36 = function $$get_corporatenameone_table() { - var self = this, table = nil; - - - table = ["フライング", "トラブル", "ブラッド", "プリティー", "クリムゾン", "ボンバー"]; - return self.$get_table_by_1d6(table); - }, $Insane_get_corporatenameone_table$36.$$arity = 0); - - Opal.def(self, '$get_corporatenametwo_table', $Insane_get_corporatenametwo_table$37 = function $$get_corporatenametwo_table() { - var self = this, table = nil; - - - table = ["ウィッチ―ズ", "インテリジェンス", "キャッツ", "バード", "ホラー", "インセイン"]; - return self.$get_table_by_1d6(table); - }, $Insane_get_corporatenametwo_table$37.$$arity = 0); - - Opal.def(self, '$get_corporatenamethree_table', $Insane_get_corporatenamethree_table$38 = function $$get_corporatenamethree_table() { - var self = this, table = nil; - - - table = ["(株)", "(株)", "(株)", "(有)", "(有)", "(有)"]; - return self.$get_table_by_1d6(table); - }, $Insane_get_corporatenamethree_table$38.$$arity = 0); - - Opal.def(self, '$get_reaction_scene_table', $Insane_get_reaction_scene_table$39 = function $$get_reaction_scene_table() { - var self = this, table = nil; - - - table = ["「ちょっとこちらにきてもらえますか。」いきなり逮捕、拘束される。「反応表」を使用したキャラクターは、このシーンが終わってから2シーンの間、自分がシーンプレイヤーでないシーンに登場することができなくなる(マスターシーンには登場可能)。", "「私が協力できるのはここまでだ。」協力を求めた人物は、怯えたような様子で手に持った包みをあなたに押し付けた。「反応表」を使用したキャラクターは、何か好きなアイテム一つを獲得する。", "「その件は捜査中です。情報提供ありがとうございます。」協力を求めた人物は、にこにこ笑って、そう答える。何を言っても、同じ返答しか返ってこない。「反応表」を使用したキャラクターは、【正気度】を1点減少する。", "「もしかして、お前、あの事件の関係者か……?」どうやら協力を求めた人物も、ちょうど同じ事件を調査していたようだ。いろいろ情報を提供してくれるようだ。「反応表」を使用したキャラクターは、以降、調査判定を行うときプラス1の修正がつく。", "「夢でも見たんじゃないですか?」どんなに強く訴えても信じてもらえない。……もしかして、おかしいのは私の方なのか?情動の特技分野からランダムに特技一つを選んで恐怖判定を行う。", "「はいはい。我々もヒマじゃないんだよ。」色々話しても相手にしてもらえない。門前払いを喰らう。", "「ちょっと身体検査よろしいでしょうか?」怪しい人物だと思われたらしい。「反応表」を使用したキャラクターが、アイテムや、違法そうなプライズを持っていた場合、このシーンが終わってから2シーンの間、自分がシーンプレイヤーでないシーンに登場することができなくなる(マスターシーンには登場可能)。", "「それは気になりますね。こちらでも調査してみましょう。」親身になって相談に乗ってくれる。何か分かったら連絡してくれると言うが……。1D6を振る。奇数なら、2シーン後に情報をくれる。「反応表」を使用したキャラクターは、好きな【秘密】一つを獲得する。偶数なら調査していたNPCが謎の死を遂げる。「反応表」を使用したキャラクターは、知識の特技分野からランダムに特技一つを選んで恐怖判定を行う。", "「命が惜しければこれ以上関わるな。」あなたは人気のない場所に連れていかれ、殴られた。協力を求めた人物は、助けを求めたはずのあなたを激しく拒絶する。「反応表」を使用したキャラクターは、【生命力】を1点減少する。", "「分かりました。念のためパトロールを強化しましょう。」周辺の警護を約束してくれる。「反応表」を使用したキャラクターは、このセッションの間、一度だけ自分が受けたダメージを無効化することができる。ダメージを無効化した場合、「反応表」を使用したキャラクターは、暴力の特技分野からランダムに一つを選んで恐怖判定を行う。", "「……なんじゃこりゃぁっ!?」助けを求めた相手が突然死亡する。ヤツらの手は、こんなところまで及んでいるのか?「反応表」を使用したキャラクターは、暴力の特技分野からランダムに一つを選んで恐怖判定を行う。"]; - return self.$get_table_by_2d6(table); - }, $Insane_get_reaction_scene_table$39.$$arity = 0); - return (Opal.def(self, '$get_interim_reference_number', $Insane_get_interim_reference_number$40 = function $$get_interim_reference_number() { - var $a, $b, $$41, self = this, table = nil, number = nil, total_n = nil, counts = nil, output = nil; - - - table = [[11, "1"], [12, "2"], [13, "3"], [14, "4"], [15, "5"], [16, "6"], [22, "G"], [23, "I"], [24, "J"], [25, "K"], [26, "O"], [33, "P"], [34, "Q"], [35, "S"], [36, "T"], [44, "U"], [45, "V"], [46, "X"], [55, "Y"], [56, "Z"], [66, "-"]]; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b; - counts = 3; - if ($truthy($rb_le(number, 4))) { - counts = $rb_plus(number, 5) - } else if (number['$=='](5)) { - counts = 4}; - output = ""; - $send(counts, 'times', [], ($$41 = function(){var self = $$41.$$s || this, $c, $d, character = nil; - - - $d = self.$get_table_by_d66_swap(table), $c = Opal.to_ary($d), (character = ($c[0] == null ? nil : $c[0])), (number = ($c[1] == null ? nil : $c[1])), $d; - output = $rb_plus(output, character); - return (total_n = $rb_plus(total_n, "" + "," + (number)));}, $$41.$$s = self, $$41.$$arity = 0, $$41)); - return [output, total_n]; - }, $Insane_get_interim_reference_number$40.$$arity = 0), nil) && 'get_interim_reference_number'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Insane_Korean.js b/src/assets/dicebot/Insane_Korean.js deleted file mode 100644 index 083339469..000000000 --- a/src/assets/dicebot/Insane_Korean.js +++ /dev/null @@ -1,450 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$==', '$<=', '$>=', '$===', '$get_scene_table', '$get_horror_scene_table', '$get_mania_scene_table', '$get_dark_scene_table', '$get_description_table', '$get_body_table', '$get_parts_table', '$get_fortunechange_table', '$get_job_table', '$get_badend_table', '$get_random_skill_table', '$get_violence_skill_table', '$get_emotion_skill_table', '$get_perception_skill_table', '$get_skill_skill_table', '$get_knowledge_skill_table', '$get_mystery_skill_table', '$get_conversation_horror_table', '$get_ville_horror_table', '$get_inattendu_horror_table', '$get_ruines_horror_table', '$get_Mlle_horror_table', '$get_latence_horror_table', '$get_city_table', '$get_mountainforest_table', '$get_seaside_table', '$get_overtime_horror_table', '$get_overtimephone_table', '$get_overtimework_scene_table', '$get_corporatenameone_table', '$get_corporatenametwo_table', '$get_corporatenamethree_table', '$get_reaction_scene_table', '$get_table_by_2d6', '$get_table_by_d66_swap', '$get_table_by_1d6', '$lambda', '$get_random_skill_table_text_only']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Insane_Korean'); - - var $nesting = [self].concat($parent_nesting), $Insane_Korean_initialize$1, $Insane_Korean_check_2D6$2, $Insane_Korean_rollDiceCommand$3, $Insane_Korean_get_scene_table$4, $Insane_Korean_get_horror_scene_table$5, $Insane_Korean_get_mania_scene_table$6, $Insane_Korean_get_dark_scene_table$7, $Insane_Korean_get_description_table$8, $Insane_Korean_get_body_table$9, $Insane_Korean_get_parts_table$10, $Insane_Korean_get_fortunechange_table$11, $Insane_Korean_get_job_table$12, $Insane_Korean_get_badend_table$13, $Insane_Korean_get_random_skill_table$16, $Insane_Korean_get_random_skill_table_text_only$17, $Insane_Korean_get_violence_skill_table$18, $Insane_Korean_get_emotion_skill_table$19, $Insane_Korean_get_perception_skill_table$20, $Insane_Korean_get_skill_skill_table$21, $Insane_Korean_get_knowledge_skill_table$22, $Insane_Korean_get_mystery_skill_table$23, $Insane_Korean_get_conversation_horror_table$24, $Insane_Korean_get_ville_horror_table$25, $Insane_Korean_get_inattendu_horror_table$26, $Insane_Korean_get_ruines_horror_table$27, $Insane_Korean_get_Mlle_horror_table$28, $Insane_Korean_get_latence_horror_table$29, $Insane_Korean_get_city_table$30, $Insane_Korean_get_mountainforest_table$31, $Insane_Korean_get_seaside_table$32, $Insane_Korean_get_overtime_horror_table$33, $Insane_Korean_get_overtimephone_table$34, $Insane_Korean_get_overtimework_scene_table$35, $Insane_Korean_get_corporatenameone_table$36, $Insane_Korean_get_corporatenametwo_table$37, $Insane_Korean_get_corporatenamethree_table$38, $Insane_Korean_get_reaction_scene_table$39; - - - Opal.const_set($nesting[0], 'ID', "Insane:Korean"); - Opal.const_set($nesting[0], 'NAME', "인세인"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:인세인"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・판정\n" + "스페셜/펌블/성공/실패를 판정\n" + "・각종표\n" + "씬표   ST\n" + " 사실은 무서운 현대 일본 씬표 HJST/광조의 20년대 씬표 MTST\n" + " 암흑의 빅토리아 씬표 DVST\n" + "수식표    DT\n" + " 본체표 BT/부위표 PT\n" + "감정표      FT\n" + "직업표      JT\n" + "배드엔딩표  BET\n" + "랜덤 특기 결정표 RTT\n" + "지정특기(폭력)표  (TVT)\n" + "지정특기(감정)표  (TET)\n" + "지정특기(지각)표  (TPT)\n" + "지정특기(기술)표  (TST)\n" + "지정특기(지식)표  (TKT)\n" + "지정특기(괴이)표  (TMT)\n" + "회화 중에 발생하는 공포표(CHT)\n" + "거리에서 조우하는 공포표(VHT)\n" + "갑자기 찾아오는 공포표(IHT)\n" + "폐허에서 조우하는 공포표(RHT)\n" + "야외에서 조우하는 공포표(MHT)\n" + "정보 속에 숨어 있는 공포표(LHT)\n" + "조우표 도시 (ECT) 산림 (EMT) 해변 (EAT)/반응표 RET\n" + "야근 시 조우하는 공포표 OHT/야근 시 전화표 OPT/야근 씬표 OWT\n" + "회사명 결정표1 CNT1/회사명 결정표2 CNT2/회사명 결정표3 CNT3\n" + "・D66 다이스 있음.\n"); - self.$setPrefixes(["ST", "HJST", "MTST", "DVST", "DT", "BT", "PT", "FT", "JT", "BET", "RTT", "TVT", "TET", "TPT", "TST", "TKT", "TMT", "CHT", "VHT", "IHT", "RHT", "MHT", "LHT", "ECT", "EMT", "EAT", "OPT", "OHT", "OWT", "CNT1", "CNT2", "CNT3", "RET"]); - - Opal.def(self, '$initialize', $Insane_Korean_initialize$1 = function $$initialize() { - var $iter = $Insane_Korean_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Insane_Korean_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Insane_Korean_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 3; - return (self.d66Type = 2); - }, $Insane_Korean_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $Insane_Korean_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > 펌블(판정실패。 덱에서 【광기】를 1장 획득)" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > 스페셜(판정성공。 【생명력】 1점이나 【정신력】 1점 회복)" - } else if ($truthy($rb_ge(total, target))) { - return " > 성공" - } else { - return " > 실패" - }; - }, $Insane_Korean_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $Insane_Korean_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var $a, $b, self = this, output = nil, type = nil, total_n = nil, $case = nil; - - - output = "1"; - type = ""; - total_n = ""; - $case = command; - if ("ST"['$===']($case)) { - type = "씬표"; - $b = self.$get_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("HJST"['$===']($case)) { - type = "사실은 무서운 현대 일본 씬표"; - $b = self.$get_horror_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MTST"['$===']($case)) { - type = "광조의 20년대 씬표"; - $b = self.$get_mania_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("DVST"['$===']($case)) { - type = "암흑의 빅토리아 씬표"; - $b = self.$get_dark_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("DT"['$===']($case)) { - type = "수식표"; - $b = self.$get_description_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BT"['$===']($case)) { - type = "본체표"; - $b = self.$get_body_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("PT"['$===']($case)) { - type = "부위표"; - $b = self.$get_parts_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FT"['$===']($case)) { - type = "감정표"; - $b = self.$get_fortunechange_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("JT"['$===']($case)) { - type = "직업표"; - $b = self.$get_job_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BET"['$===']($case)) { - type = "배드엔딩표"; - $b = self.$get_badend_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RTT"['$===']($case)) { - type = "랜덤 특기 결정표"; - $b = self.$get_random_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TVT"['$===']($case)) { - type = "지정특기(폭력)표"; - $b = self.$get_violence_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TET"['$===']($case)) { - type = "지정특기(감정)표"; - $b = self.$get_emotion_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TPT"['$===']($case)) { - type = "지정특기(지각)표"; - $b = self.$get_perception_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TST"['$===']($case)) { - type = "지정특기(기술)표"; - $b = self.$get_skill_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TKT"['$===']($case)) { - type = "지정특기(지식)표"; - $b = self.$get_knowledge_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TMT"['$===']($case)) { - type = "지정특기(괴이)표"; - $b = self.$get_mystery_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("CHT"['$===']($case)) { - type = "회화 중에 발생하는 공포표"; - $b = self.$get_conversation_horror_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("VHT"['$===']($case)) { - type = "거리에서 조우하는 공포표"; - $b = self.$get_ville_horror_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("IHT"['$===']($case)) { - type = "갑자기 찾아오는 공포표"; - $b = self.$get_inattendu_horror_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RHT"['$===']($case)) { - type = "폐허에서 조우하는 공포표"; - $b = self.$get_ruines_horror_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MHT"['$===']($case)) { - type = " 야외에서 조우하는 공포표"; - $b = self.$get_Mlle_horror_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("LHT"['$===']($case)) { - type = "정보 속에 숨어 있는 공포표"; - $b = self.$get_latence_horror_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("ECT"['$===']($case)) { - type = "조우표・도시"; - $b = self.$get_city_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EMT"['$===']($case)) { - type = "조우표・산림"; - $b = self.$get_mountainforest_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("EAT"['$===']($case)) { - type = "조우표・해변"; - $b = self.$get_seaside_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("OHT"['$===']($case)) { - type = "야근 시 조우하는 공포표"; - $b = self.$get_overtime_horror_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("OPT"['$===']($case)) { - type = "야근 시 전화표"; - $b = self.$get_overtimephone_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("OWT"['$===']($case)) { - type = "야근 씬표"; - $b = self.$get_overtimework_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("CNT1"['$===']($case)) { - type = "회사명 결정표1"; - $b = self.$get_corporatenameone_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("CNT2"['$===']($case)) { - type = "회사명 결정표2"; - $b = self.$get_corporatenametwo_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("CNT3"['$===']($case)) { - type = "회사명 결정표3"; - $b = self.$get_corporatenamethree_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RET"['$===']($case)) { - type = "반응표"; - $b = self.$get_reaction_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;}; - return "" + (type) + "(" + (total_n) + ") > " + (output); - }, $Insane_Korean_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$get_scene_table', $Insane_Korean_get_scene_table$4 = function $$get_scene_table() { - var self = this, table = nil; - - - table = ["피 냄새가 지독히 풍긴다. 사건인가? 사고인가? 혹시, 아직 끝나지 않은 걸까?", "이건……꿈인가? 이미 끝났을 일이 기억 속에서 되살아난다.", "아래에 펼쳐진 거리를 내려다보고 있다. 왜 이런 높은 곳에……?", "종말을 맞은 세계 같은 암흑. 어둠 속, 누군가의 기척이 꿈틀거린다…….", "평온한 시간이 지나간다. 마치 그런 일은 없었던 것 같다.", "물먹은 흙의 냄새, 농밀한 기척이 흐르는 숲 속, 새나 벌레의 울음소리, 바람에 흔들리는 나무들의 소리가 들려온다.", "사람이 다니기엔 좁은 주택가. 모르는 사람들이 사는 집들에서 이런저런 소리들이 새어나와 어렴풋이 들린다…….", "갑자기 하늘을 구름이 덮는다. 비가 거세게 쏟아진다. 사람들은 처마를 찾아 허둥지둥 달려간다.", "황폐한 폐허, 썩어 사라져가는 생활의 흔적. 희미하게 들려오는 건 바람일까, 파도 소리일까, 이명일까.", "수많은 사람들. 시끄러운 소리. 매우 소란스러운 점내 BGM에, 비정상적인 웃음소리. 시끄러운 번화가의 한 곳이지만……?", "밝은 빛에 비춰져, 안심하며 한숨. 하지만 빛이 강해지는 만큼, 그림자도 짙어진다."]; - return self.$get_table_by_2d6(table); - }, $Insane_Korean_get_scene_table$4.$$arity = 0); - - Opal.def(self, '$get_horror_scene_table', $Insane_Korean_get_horror_scene_table$5 = function $$get_horror_scene_table() { - var self = this, table = nil; - - - table = ["갑자기 주변이 어두워진다. 정전인가? 어둠 속에서, 누군가가 당신을 부르는 목소리가 들려온다.", "똑. 똑. 똑. 어디서일까, 물방울이 떨어지는 것 같은 소리가 들려온다.", "창문 앞을 지나갈 때, 무언가 기분 나쁜 것이 비쳤다. 눈의 착각인가……?", "TV에서 뉴스 소리가 들려온다. 아무래도 근처에서 뒤숭숭한 사건이 일어난 것 같은데…….", "어두운 길을 혼자 걷고 있다. 뒤로 기분 나쁜 발소리가 다가오는 것 같은 기분이 드는데…….", "누굴까? 계속 시선이 느껴진다. 뒤를 돌아봐도 거기에 있는 것은 평소와 같은 광경인데…….", "갑자기 핸드폰 벨소리가 울려 퍼진다. 매너모드로 해둔 것 같은데……. 대체, 누구한테 온 것일까?", "빨간 빛을 비치는 석양. 태양은 가라앉고 하늘은 핏빛처럼 새빨갛다. 불안한 기분이 번져간다…….", "맛있을 것 같은 냄새가 풍겨와, 갑자기 공복감이 느껴진다. 오늘은 뭘 먹을까?", "새된 울음소리가 울려 퍼진다. 갑자기 공복감이 느껴진다. 오늘은 뭘 먹을까?", "잠을 이루지 못하고 눈을 뜬다. 뭔가 악몽을 꾼 것 같은데……. 어라, 의식은 있는데 몸이 움직이지 않아!"]; - return self.$get_table_by_2d6(table); - }, $Insane_Korean_get_horror_scene_table$5.$$arity = 0); - - Opal.def(self, '$get_mania_scene_table', $Insane_Korean_get_mania_scene_table$6 = function $$get_mania_scene_table() { - var self = this, table = nil; - - - table = ["이끼가 달라붙은 거대한 바위가 늘어선, 강에 떠오른 섬. 무엇을 모시고 있는지도 알 수 없는 제단이 있고, 이루 말하기 힘든 분위기가 떠오른다.", "무허가 술집. 가판도 없는 지하의 가게는, 거리의 남자나 호스티스들로 떠들썩하다.", "유적 안. 누가 세웠는지도 모르는, 비 유클리드 기하학적인 건축은, 안을 걷는 자의 정신을 서서히 좀먹어간다.", "대학도서관. 사십만을 넘는 장서 속에는, 모독적인 마도서도 있다고 한다.", "강한 바람을 다고, 어디선가 바다의 냄새가 풍겨온다. 바다는 멀리 있을텐데…….", "수많은 사람들로 붐비는 길목. 여기라면 누가 섞여있어도 알아챌 수 없을 것이다.", "깊은 어둠 속, 그 너머에는 말로 표현할 수 없는 무언가가 숨어있는 듯 하다.", "역사 있는 신문사. 휴간 한 번 없이 발행한 백년분에 달하는 신문이 보관되어있다.", "오래된 묘지. 비틀어진 나무들 사이에 낡아서 묘비명도 읽을 수 없는 비석이 서있다. 몇 개인가의 비석은 왜인지 기울어져있다.", "강가의 공장 터. 아주 오래 전부터 쓰지 않은 듯, 건물은 무너져가고 있다. 아무래도 부랑자들이 거처로 쓰고 있는 듯하다.", "조용한 실내. 무언가 불온한 기색이 느껴지지만……저건 뭐지? 창문에, 창문에!"]; - return self.$get_table_by_2d6(table); - }, $Insane_Korean_get_mania_scene_table$6.$$arity = 0); - - Opal.def(self, '$get_dark_scene_table', $Insane_Korean_get_dark_scene_table$7 = function $$get_dark_scene_table() { - var self = this, table = nil; - - - table = ["영매사를 중심으로 원탁을 에워싼 사람들이, 강령회를 하고 있다. 어둑한 방 안에 수상쩍은 엑토플라즘이 흐르기 시작한다.", "노동자들이 모이는 펍. 여급이 나르는 에일이나 진을, 붉은 얼굴의 남자들이 들이킨다.", "피 냄새가 풍기는 곳. 여기서 무슨 일이 있었던 것 일까…….", "사창가가 늘어선 빈민가. 건물 앞에는 창부들이 손님을 기다리고 있다.", "사람들로 붐비는 떠들썩한 거리. 다양한 소문이 떠돌고 있다. 동양인을 비롯한 외국인의 모습도 보인다.", "안개가 짙은 길목. 가스등의 빛만이 돌로 포장된 길을 비추어 드러내고 있다.", "아주 조용한 방 안. 여기라면 뭘 해도 쓸데없는 방해는 받지 않겠지.", "기적 소리가 울리는 부두. 저 배는 외국으로 여행을 떠나는 걸까.", "책이 넘쳐나는 곳. 뭔가를 조사하기에는 안성맞춤이지만.", "귀족이나 자산가들이 모인 파티. 품위 있는 미소 아래에서는 어떤 흉계를 꾸미고 있는 걸까.", "조용한 호수 부근 풀숲에서는 야생의 토끼가 뛰어다니고 있다."]; - return self.$get_table_by_2d6(table); - }, $Insane_Korean_get_dark_scene_table$7.$$arity = 0); - - Opal.def(self, '$get_description_table', $Insane_Korean_get_description_table$8 = function $$get_description_table() { - var self = this, table = nil; - - - table = [[11, "핼쑥한"], [12, "피를 흘리는"], [13, "비늘 모양의"], [14, "모독적인"], [15, "원통형의"], [16, "비정상적으로 증식하는"], [22, "불규칙적인"], [23, "꽥꽥 우는"], [24, "무수한"], [25, "털이 많은"], [26, "색채 없는"], [33, "신축하는"], [34, "외설적인"], [35, "부풀어 오른"], [36, "거대한"], [44, "점액 투성이의"], [45, "끊임없이 변화하는"], [46, "벌레 투성이의"], [55, "키틴질의"], [56, "「본체표를 사용」 같은"], [66, "무지개 빛으로 빛나는"]]; - return self.$get_table_by_d66_swap(table); - }, $Insane_Korean_get_description_table$8.$$arity = 0); - - Opal.def(self, '$get_body_table', $Insane_Korean_get_body_table$9 = function $$get_body_table() { - var self = this, table = nil; - - - table = [[11, "인간"], [12, "개"], [13, "쥐"], [14, "망령"], [15, "민달팽이"], [16, "벌레"], [22, "얼굴"], [23, "고양이"], [24, "지렁이"], [25, "소"], [26, "새"], [33, "반어인"], [34, "인조인간"], [35, "뱀"], [36, "노인"], [44, "아메바"], [45, "여성"], [46, "기계"], [55, "문어"], [56, "「부위표」를 사용"], [66, "소인"]]; - return self.$get_table_by_d66_swap(table); - }, $Insane_Korean_get_body_table$9.$$arity = 0); - - Opal.def(self, '$get_parts_table', $Insane_Korean_get_parts_table$10 = function $$get_parts_table() { - var self = this, table = nil; - - - table = [[11, "몸통"], [12, "발"], [13, "팔뚝"], [14, "머리털/갈기"], [15, "입"], [16, "유방"], [22, "얼굴"], [23, "피부"], [24, "눈"], [25, "꼬리"], [26, "촉수"], [33, "코"], [34, "그림자"], [35, "이빨"], [36, "뼈"], [44, "보석"], [45, "날개"], [46, "뇌수"], [55, "혀"], [56, "가지나 잎"], [66, "내장"]]; - return self.$get_table_by_d66_swap(table); - }, $Insane_Korean_get_parts_table$10.$$arity = 0); - - Opal.def(self, '$get_fortunechange_table', $Insane_Korean_get_fortunechange_table$11 = function $$get_fortunechange_table() { - var self = this, table = nil; - - - table = ["공감(플러스)/불신(마이너스)", "우정(플러스)/분노(마이너스)", "애정(플러스)/시기(마이너스)", "충성(플러스)/모멸(마이너스)", "동정(플러스)/열등감(마이너스)", "광신(플러스)/살의(마이너스)"]; - return self.$get_table_by_1d6(table); - }, $Insane_Korean_get_fortunechange_table$11.$$arity = 0); - - Opal.def(self, '$get_job_table', $Insane_Korean_get_job_table$12 = function $$get_job_table() { - var self = this, table = nil; - - - table = [[11, "고고학자≪정경≫≪고고학≫"], [12, "갱(Gang)≪고문≫≪분노≫"], [13, "탐정≪육감≫≪수학≫"], [14, "경찰≪사격≫≪추적≫"], [15, "호사가≪예술≫≪인류학≫"], [16, "의사≪절단≫≪의학≫"], [22, "교수 지식분야에서 원하는 것을 2개"], [23, "성직자≪부끄러움≫≪사랑≫"], [24, "심리학자 감정분야에서 원하는 것을 2개"], [25, "학생 지식분야와 감정분야에서 원하는 것을 하나씩"], [26, "기자≪놀람≫≪미디어≫"], [33, "기술자≪전자기기≫≪기계≫"], [34, "도둑≪그늘≫≪함정≫"], [35, "예능인≪기쁨≫≪예술≫"], [36, "작가≪근심≫≪교양≫"], [44, "모험가≪구타≫≪탈것≫"], [45, "사서≪정리≫≪미디어≫"], [46, "요리사≪소각≫≪맛≫"], [55, "비즈니스맨≪참음≫≪효율≫"], [56, "호스트or호스티스≪웃음≫≪관능≫"], [66, "경호원 폭략분야에서 원하는 것을 2개"]]; - return self.$get_table_by_d66_swap(table); - }, $Insane_Korean_get_job_table$12.$$arity = 0); - - Opal.def(self, '$get_badend_table', $Insane_Korean_get_badend_table$13 = function $$get_badend_table() {try { - - var $$14, $$15, self = this, table = nil; - - - table = ["당신 주위에 칠흑의 어둠이, 이형의 앞다리가, 무수한 촉수가 모여든다. 새로운 동료를 축복하고 있는 것이다. 당신은 이제 괴이를 무서워하지 않는다. 왜냐하면, 당신 자신이 괴이가 되었기 떄문이다. 이후, 당신은 괴이 NPC로서 등장한다", $send(self, 'lambda', [], ($$14 = function(){var self = $$14.$$s || this; - - Opal.ret("" + "감옥과도 같은, 수술실 같은 어둑한 방에 감금당했다. 그리고, 매일같이고문을 받게 되었다. 어떻게든 도망칠 수는 있었지만……. " + (self.$get_random_skill_table_text_only()) + "의 특기가 【공포심】이 된다.")}, $$14.$$s = self, $$14.$$arity = 0, $$14)), "아슬아슬한 순간, 수수께끼의 조직의 에이전트에게 구해진다. 「당신, 장래성이 있군. 어떤가? 우리들과 함께 하지 않겠나?」\\n 당신은 원한다면, 닌자/마법사/헌터로서 괴이와 싸워나가는 것이 가능하다. 그 경우, 당신은 다른 사이코로 픽션의 캐릭터로 다시 태어난다.", "병원 침대에서 눈을 뜬다. 오랫동안, 무서운 악몽을 꾼 것 같은 기분이 든다. 그 세션의 후유증 판정은, 마이너스 1의 수정이 붙고, 펌블 수치가 1 상승한다.", "어딘가의 민가에서 눈을 뜬다. 근사한 사람에게 구해져서, 극진한 간호를 받은 듯 하다. 딱히 페널티는 없다.", "「위험해!」\\n 거대한 절망이 당신을 덮쳐온다. 1D6 마이너스 1점의 데미지를 입는다. 이에 의해 【생명력】이 0점이 된 경우, 당신은 사망한다. 단, 당신에게 플러스의 【감정】을 가진 NPC가 있을 경우, 그 NPC가 그 데미지를 무효화해준다.", "다른 새로운 괴사건에 휘말린다. 고생은 끝, 그쪽은 어떻게든 무사해결! 딱히 패널티는 없다.", "커다란 상처를 입고, 생사의 경계를 헤맨다. 원하는 특기로 판정을 시행하라. 실패하면 사망한다. 【생명력】만큼 마이너스의 수정이 붙는다.", "눈을 뜨면 익숙하지 않은 장소다. 여긴 어디지? 나는 누구? 아무래도 지나친 공포로 기억을 잃어버린 것 같다. 공적점이 있다면, 그것을 1점 잃는다.", $send(self, 'lambda', [], ($$15 = function(){var self = $$15.$$s || this; - - Opal.ret("" + "눈을 뜨니, 그곳은 평소의 그곳이었다. 하지만, 어딘가 위화감을 느낀다. 당신들 외에, 누구도 사건에 대해서는 모르는 것 같다. 죽었을 터인 그 인물도 살아있다. 시간을 여행한 것일까, 여긴 다른 세계선인가……?  " + (self.$get_random_skill_table_text_only()) + "의 특기가 【공포심】이 된다.")}, $$15.$$s = self, $$15.$$arity = 0, $$15)), "뒤를 돌아보자, 거기에는 압도적인 「그것」이 기다리고 있었다. 무자비한 일격이 당신을 덮치고, 당신은 사망한다."]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $Insane_Korean_get_badend_table$13.$$arity = 0); - - Opal.def(self, '$get_random_skill_table', $Insane_Korean_get_random_skill_table$16 = function $$get_random_skill_table() { - var $a, $b, self = this, skillTableFull = nil, skillTable = nil, total_n = nil, tableName = nil, skill = nil, total_n2 = nil; - - - skillTableFull = [["폭력", ["소각", "고문", "긴박", "위협하기", "파괴", "구타", "절단", "찌르기", "사격", "전쟁", "매장"]], ["감정", ["연정", "기쁨", "근심", "부끄러움", "웃음", "참음", "놀람", "분노", "원한", "슬픔", "사랑"]], ["지각", ["아픔", "관능", "감촉", "향기", "맛", "소리", "정경", "추적", "예술", "육감", "그늘"]], ["기술", ["분해", "전자기기", "정리", "약품", "효율", "미디어", "카메라", "탈것", "기계", "함정", "병기"]], ["지식", ["물리학", "수학", "화학", "생물학", "의학", "교양", "인류학", "역사", "민속학", "고고학", "천문학"]], ["괴이", ["시간", "혼돈", "심해", "죽음", "영혼", "마술", "암흑", "종말", "꿈", "지저", "우주"]]]; - $b = self.$get_table_by_1d6(skillTableFull), $a = Opal.to_ary($b), (skillTable = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b; - $a = [].concat(Opal.to_a(skillTable)), (tableName = ($a[0] == null ? nil : $a[0])), (skillTable = ($a[1] == null ? nil : $a[1])), $a; - $b = self.$get_table_by_2d6(skillTable), $a = Opal.to_ary($b), (skill = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b; - return ["" + "「" + (tableName) + "」≪" + (skill) + "≫", "" + (total_n) + "," + (total_n2)]; - }, $Insane_Korean_get_random_skill_table$16.$$arity = 0); - - Opal.def(self, '$get_random_skill_table_text_only', $Insane_Korean_get_random_skill_table_text_only$17 = function $$get_random_skill_table_text_only() { - var $a, $b, self = this, text = nil; - - - $b = self.$get_random_skill_table(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), $b; - return text; - }, $Insane_Korean_get_random_skill_table_text_only$17.$$arity = 0); - - Opal.def(self, '$get_violence_skill_table', $Insane_Korean_get_violence_skill_table$18 = function $$get_violence_skill_table() { - var self = this, table = nil; - - - table = ["소각", "고문", "긴박", "위협하기", "파괴", "구타", "절단", "찌르기", "사격", "전쟁", "매장"]; - return self.$get_table_by_2d6(table); - }, $Insane_Korean_get_violence_skill_table$18.$$arity = 0); - - Opal.def(self, '$get_emotion_skill_table', $Insane_Korean_get_emotion_skill_table$19 = function $$get_emotion_skill_table() { - var self = this, table = nil; - - - table = ["연정", "기쁨", "근심", "부끄러움", "웃음", "참음", "놀람", "분노", "원한", "슬픔", "사랑"]; - return self.$get_table_by_2d6(table); - }, $Insane_Korean_get_emotion_skill_table$19.$$arity = 0); - - Opal.def(self, '$get_perception_skill_table', $Insane_Korean_get_perception_skill_table$20 = function $$get_perception_skill_table() { - var self = this, table = nil; - - - table = ["아픔", "관능", "감촉", "향기", "맛", "소리", "정경", "추적", "예술", "육감", "그늘"]; - return self.$get_table_by_2d6(table); - }, $Insane_Korean_get_perception_skill_table$20.$$arity = 0); - - Opal.def(self, '$get_skill_skill_table', $Insane_Korean_get_skill_skill_table$21 = function $$get_skill_skill_table() { - var self = this, table = nil; - - - table = ["분해", "전자기기", "정리", "약품", "효율", "미디어", "카메라", "탈것", "기계", "함정", "병기"]; - return self.$get_table_by_2d6(table); - }, $Insane_Korean_get_skill_skill_table$21.$$arity = 0); - - Opal.def(self, '$get_knowledge_skill_table', $Insane_Korean_get_knowledge_skill_table$22 = function $$get_knowledge_skill_table() { - var self = this, table = nil; - - - table = ["물리학", "수학", "화학", "생물학", "의학", "교양", "인류학", "역사", "민속학", "고고학", "천문학"]; - return self.$get_table_by_2d6(table); - }, $Insane_Korean_get_knowledge_skill_table$22.$$arity = 0); - - Opal.def(self, '$get_mystery_skill_table', $Insane_Korean_get_mystery_skill_table$23 = function $$get_mystery_skill_table() { - var self = this, table = nil; - - - table = ["시간", "혼돈", "심해", "죽음", "영혼", "마술", "암흑", "종말", "꿈", "지저", "우주"]; - return self.$get_table_by_2d6(table); - }, $Insane_Korean_get_mystery_skill_table$23.$$arity = 0); - - Opal.def(self, '$get_conversation_horror_table', $Insane_Korean_get_conversation_horror_table$24 = function $$get_conversation_horror_table() { - var self = this, table = nil; - - - table = ["지정특기:죽음\n한창 대화중에, 당신은 문득, 상대의 어깨 너머로 시선을 향한다. 갑자기, 먼 건물의 옥상에서 여자가 뛰어내렸다. 소리 지를 틈도 없이, 그녀는 빨려 들어가듯 지면으로 내동댕이쳐진다. 거리가 있음에도 불구하고, 그녀와 눈이 마주치고 말았다. –-그 이후, 그녀의 얼굴이 뇌리에 박혀, 사라지지 않는다…….", "지정특기:구타\n땅바닥에 드러누운 상대를 보면서, 당신은 등줄기에 식은땀이 나는 것을 느꼈다. 상대는 쓰러진 채, 부자연스럽게 신체를 비틀며 꼼짝도 하지 않는다. 천천히 피 웅덩이가 커져간다……. –죽여버리고 말았다. 동요하며 눈을 깜빡였을 때, 상대의 신체가 사라졌다. 피 웅덩이도 보이지 않는다. 당신은 망연히 멈춰 서있다. 환각이었던걸까……?", "지정특기:전자기기\n당신이 전화로 상대와 이야기하고 있으면, 난데없이 상대가 입을다물어버린다. 「……저게 뭐지?」\n 상대는 혼잣말하듯 중얼거리더니, 당황한 듯 소리를 지른다. 「이리로 온다…… 이리로 온다! 우왓! 우와아아앗! 살려줘! 살려줘!!」\n 그것을 마지막으로 전화가 뚝하고 끊어진다. 다시 걸어보면 통화중이다. 계속.", "지정특기:소리\n당신이 전화로 상대와 이야기하고 있으면, 낮은 소리로 중얼거리는 목소리가 들려온다. 혼선인걸까? 이상하게 생각하며 듣고 있는 동안, 머리가 멍해져 온다. 중얼중얼, 중얼중얼, 중얼중얼, 중얼중얼……. 정신을 차리면, 전화기를 든 챌 멍- 하니 서 있다. 통화는 끊어져 있다. 무슨 이야기를 하고 있었는지 기억나지 않는다. 다만, 굉장히 무서운 것을 들은 듯한 기분이 든다. 대체, 당신은 누구와 이야기하고 있었던걸까?", "지정특기:고문\n대화 도중, 피 맛이 났다. 동시에 갈그랑거리는 위화감을 느꼈다. 상대가 새파랗게 질려서 당신의 얼굴을 가리킨다. 어찌된 일인지 물어보려 입을 열자, 뚝하고 무언가가 땅바닥으로 떨어졌다. 내려다보면, 피 웅덩이 속에 새하얗게 당신의 이빨이 한 개 떨어져 있다.", "지정특기:인류학\n대화 도중, 시야에 위화감을 느낀 당신은 눈을 깜빡였다. 상대의 얼굴이, 이상하게 되어 있었다. 잡아 늘여서, 휘저은 것처럼, 그로테스크하게 일그러져 있다. 엣? 하고 자세히 보지만 일그러짐은 변함없다. 상대는 전혀 눈치채지 못한 듯하다. 눈을 질끈 감았다가 다시 보자, 겨우 일그러짐이 사라졌다. 당신은 마음에 한가지 의심이 생겨난다. 눈 앞에 있는 상대는, 정말로 인간인걸까?"]; - return self.$get_table_by_1d6(table); - }, $Insane_Korean_get_conversation_horror_table$24.$$arity = 0); - - Opal.def(self, '$get_ville_horror_table', $Insane_Korean_get_ville_horror_table$25 = function $$get_ville_horror_table() { - var self = this, table = nil; - - - table = ["지정특기:탈것\n끼이익--!! 거친 브레이크 소리, 그리고 둔탁한 소리. 깜짝 놀라 뒤를 돌아보자, 멈춰진 차와, 그 앞에 쓰러져있는 사람이 눈에 들어왔다. 교통사고다! 황급히 뛰어가서, 피해자의 얼굴을 본 순간, 당신은 그대로 얼어붙었다. 쓰러져 있는 사람은, 당신이었다. --엣?! 깜짝 놀라 눈을 깜빡이면, 길 위의 당신도, 차도, 사라졌다.", "지정특기:정경\n지나가는 집의 지붕에 누군가 서있다. 그나저나 당신 뭘……? 그 누군가는, 춤을 추고 있는 듯이 보였다. 손발을 휘저으며, 머리를 거세게 움직이며 춤추고 있다. 평범한 모습은 아니다. 미친 것처럼 춤추고 있다. 보고 있는 동안에 불길한 기분이 들었다. 보고싶지 않은데, 어째서인지, 눈을 돌릴 수 없다. 불길한 예감이 점점 커져간다…….", "지정특기:종말\n애애애애애애애애애앵……. 거리에 사이렌이 울려 퍼진다. 어디서 울리고 있는 걸까, 언제까지 울리는 걸까. 이렇게 커다란 소리인데도, 어째서 아무도 동요하지 않는 걸까. 이상한 마음에 걷고 있으면, 길 건너편에서 걸어오는 사람 그림자가 있다. 상처를 입었는지, 비틀거리며, 지금 당장이라도 쓰러질 것처럼, 힘없이, 힘없이 부자연스런 걸음걸이로 가까이 다가온다. 저건 대체……?", "지정특기:위협하기\n걷고 있으려니, 갑자기 조용해진다. 주변을 둘러보면, 사람도, 차도, 아무도 없다. 아무도 없는 거리가 어디까지고 펼쳐져 있다. 방금까지 사람이 굉장히 많이 있었는데……?\n 「이봐! 뭐 하고 있는거야!」\n 갑자기 호통치는 소리에 가슴이 덜컥한다. 뒤돌아보니, 작업복을 입은 남자가 이리로 걸어오고 있었다. 「멍청한 녀석! 이런델 왔다간--」\n 끝까지 듣기도 전에, 갑자기 소리가 돌아왔다. 사람과 차가 지나다니는, 원래의 거리다. 방금은 뭐였을까……?", "지정특기:혼돈\n전봇대 밑에 여성이 웅크리고 있다. 배를 부여잡고, 괴로운 듯 얼굴을 숙이고 있다. 「괜찮으세요?」\n 다가가서 말을 건 당신에게, 여성은 고개를 끄덕였다. 「네—감사합니다。」\n 그렇게 말하며 고개를 든 여성의 얼굴은, 아무것도 없었다. 반들반들하게 벗겨진 달걀 같은 피부가 계속되고 있을 뿐이었다. 우왓!?\n 뒤로 몸을 젖힌 순간, 의식이 멀어졌고, 정신을 차려보니 당신은 전봇대 밑에 웅크리고 있었다.", "지정특기:웃음\n역에 도착하니, 몹시 혼잡했다. 인신사고로 전차가 멈춰있는 듯하다. 재수 없으려니. 그렇게 생각하고 있으면, 개찰구 근처의 인파 속에서, 일본 옷을 입은 여성이 빠른 걸음으로 당신 쪽으로 다가왔다. 여성은 만면에 미소를 짓고 있었다. 혼잣말을 중얼거리는지, 입이 움직이고 있다. 스쳐지나갈 때에, 여성의 목소리가 귀에 들렸다. 「해버렸다. 해버렸다. 해버렸다. 꼴좋네。」\n 엣, 하며 돌아보는 당신을 남겨두고, 여성은 인파 속으로 사라져버렸다."]; - return self.$get_table_by_1d6(table); - }, $Insane_Korean_get_ville_horror_table$25.$$arity = 0); - - Opal.def(self, '$get_inattendu_horror_table', $Insane_Korean_get_inattendu_horror_table$26 = function $$get_inattendu_horror_table() { - var self = this, table = nil; - - - table = ["지정특기:놀람\n쿵쾅쿵쾅쿵쾅! 갑작스런 소리에, 당신은 깜짝 놀라 고개를 들고 올려다본다. 지붕 밑에 무언가가 돌아다니고 있는 것 같다. 동물이 들어온 걸까? 그렇다고 쳐도 커다란 소리다. --마치, 어린아이가 이리저리 뛰어 돌아다니는 듯한. 한 순간 소리가 멈췄다가, 이내 다시 들린다. 쿵! 쿵! 쿵! 쿵! 펄떡펄떡 뛰어오르는 듯한 소리가 나는 곳은, 정확히 당신의 바로 위였다…….", "지정특기:우주\n창문으로 빛이 들어온다. 하늘로 눈을 돌려 바라보면, 하얗고 빛나는 거대한 비행물체가 떠있다. 홀린 듯 쳐다보고 있으면, 새나 비행기라고 생각할 수 없는, 불규칙한 움직임으로 날아다니기 시작한다. 뭐야 저건? 이상하게 생각하고 있으면, 등 뒤에서 누군가가 속삭인다. 「저건……야」\n 핫 하고 눈치채면, 어느샌가, 전혀 다른 장소에 있다. 손 안에 무언가 쥐여있는 듯한 딱딱한 감촉이 있다…….", "지정특기:냄새\n기묘한 화물이 도착했다. 검테이프로 꽁꽁 싸매진 커다란 골판지다. 발신인 이름을 적어둔 종이가 붙어있지만 번져있어 읽을 수 없다. 상자의 내용물은 흙이었다. 사금파리나 돌맹이가 섞인, 이상한 냄새를 풍기는 흙이 들어 있었다. 이유를 알 수 없어서 내용물은 버렸지만, 그 이후 왠지 운이 나빠진듯한 기분이 든다…….", "지정특기:참음\n벽 너머에서 누군가 이야기하는 소리가 들려온다. 「……니까, 이 녀석은……하지 않으면。」\n 「그렇네……하군……지 않으면。」\n 수군수군, 수군수군하고, 음침한 어조로 대화는 계속된다. 무엇을 이야기하고 있는지, 내용은 잘 모르겠지만, 어쩐지 자신의 이야기를 하고 있는 듯해서 왠지 기분이 나쁘다. 신경쓰여서 벽에 귀를 대었을 때, 확실한 목소리가 벽 너머에서 이렇게 말했다. 「……얘, 제대로 듣고 있어?」", "지정특기:감촉\n똑. 똑. 목덜미에 떨어진 미지근한 물방울의 감촉에 당신은 눈썹을 찌푸렸다. 눈치채고 나면, 책상 위에 빨간 물방울이 떨어져 있다. 쇳내가 코를 찌른다. 똑. 똑. 똑. 물방울은 세를 늘려, 자꾸 자꾸 떨어져내려, 책상 위로 퍼져나간다. 천천히 올려다보면, 천장에는 커다랗고 검붉은 얼룩이 넓게 퍼져있다. 똑. 토독. 똑. --토도도도독! 높아진 물소리에 당신은 우뚝 멈춰 선다. 지붕 밑에, 대체, 뭐가……?", "지정특기:지저\n낯익은 장소에서, 낯선 문을 발견했다. 열어보면, 긴 내리막계단이 어둠 속으로 뻗어 있다. 수상쩍게 생각해서 아래로 내려가보니…… 그 곳은 지하실이었다. 이런 장소가 있었던가. 한 손에 불빛을 들고 나아가보면 무언가 다가오는 기분이 든다. 어둠 속에서, 누군가가, 당신의 이름을 불렀다."]; - return self.$get_table_by_1d6(table); - }, $Insane_Korean_get_inattendu_horror_table$26.$$arity = 0); - - Opal.def(self, '$get_ruines_horror_table', $Insane_Korean_get_ruines_horror_table$27 = function $$get_ruines_horror_table() { - var self = this, table = nil; - - - table = ["지정특기:암흑\n무겁고 튼튼해 보이는 문을 연다. 방 안은 새까맸다. 등불로 비춰보니, 다른 방으로 이어지는 길이 몇 갈래 발견되었다. 달리 눈에 띄는 것은 없는 듯 하다. 일단, 입구로 되돌아가려고, 들어왔던 문 쪽으로 돌아선다. 그 곳에는 벽 밖에 없었다. 그 중후한 문이 사라져있다. 그런 말도 안 되는 일이. 그러나, 몇 번이고 찾아봐도 어떤 벽에도 문 같은 것은 보이지 않는다. 할 수 없이, 통로를 나아가기로 했지만, 조금씩 불길한 기분이 엄습해 온다. ……그 문은, 열어서는 안됐던 것 아닐까?", "지정특기:정리\n당신은 폐허 속에서 부웅…… 하는 낮은 소리를 눈치챘다. 냉장고다. 어디서 전기가 들어오고 잇는지, 하얀 냉장고가 폐허의 한 쪽 구석에 조용히 서 있었다. 찰카닥 하고 문을 잡아당겨 열어본 당신은, 안에 있던 무언가와 눈이 마주쳤다. ……정신을 차리니, 당신은 어둡고 차가운 곳에 몸을 웅크리고 있다. 부웅……하는 소리가 들려온다. 이곳은 서늘하고 좁아서--굉장히 편안하다.", "지정특기:추적\n폐옥의 미닫이문을 열었을 때, 당신은 강한 위화감을 느꼈다. 먼지가 두껍게 쌓인 그 방에는, 묵직한 분위기가 감돌았다. 밥상 위에는 내용물이 남은 찻잔, 방금 전까지 누군가가 앉아있던 걸로 보이는 움푹 패인 방석. 어째서 이 거실에는, 이리도 생활감이 남아있는 걸까?", "지정특기:사랑\n폐허를 걷고 있자니, 돌연, 당신의 휴대폰으로 전화가 걸려왔다. 쥐죽은 듯 고요한 폐허에 울려 퍼지는 착신음에 몹시 놀라면서도 받아보면 전화기 저편에서, 당신의 할머니가 갑자기 꾸짖는다. 「얘야, 뭐 하는 거니! 그런데는 가면 안되잖니!」\n 엣, 어째서 할머니가……?\n 「빨리 거기서 나오렴! 그러다 큰일 난다!」\n 영문도 알 수 없는 채로 우물쭈물 거리고 있는 동안, 전화는 끊어졌다. 화면에는 「권외」라고 표시되어 있었다.", "지정특기:함정\n폐허를 걷고 있으니, 갑자기 발에 극심한 통증이 일었다. 비명을 억누르며 아래를 보니, 발목에 덫이 꽉 물려있다. 어째서 이런 곳에, 이런 덫이……? 고생해서 덫을 해제하고, 다시 주변을 둘러보았을 때, 당신은 깜짝 놀란다. 덫은 하나가 아니었다. 잔해 속에 숨겨놓은 것처럼, 몇 개고, 몇 개고, 덫이 설치되어 있었다.", "지정특기:약품\n갑자기, 신나 냄새가 코를 찔렀다. 폐허의 벽에 끈적끈적하게, 붉은 페인트로 문자가 쓰여있다. 무엇이 쓰여있는지는 분명하지 않지만, 오로지 악의와 증오만을 칠해 넣은 듯한 터치에 두려움이 생긴다. 그러던 도중 어떤 사실을 눈치채고, 당신은 바짝 소름이 돋았다. 페인트가 아직 마르지 않았다. ……갓 칠한 것처럼 새로운 것이다."]; - return self.$get_table_by_1d6(table); - }, $Insane_Korean_get_ruines_horror_table$27.$$arity = 0); - - Opal.def(self, '$get_Mlle_horror_table', $Insane_Korean_get_Mlle_horror_table$28 = function $$get_Mlle_horror_table() { - var self = this, table = nil; - - - table = ["지정특기:아픔\n부우우우우우웅. 귓가에 새된 날개소리가 울려 퍼진다. 본 적 없는 새빨간 날벌레 무리가 날고 있었다. 부우우우우우웅. 날벌레를 쫓아내려고, 팔을 휘두른다. 아얏. 팔에 찌르는 듯한 통증이 일었다. 부우우우우우웅. 벌레들은, 어디론가로 가버린다. 순간 팔의 표면에 이상한 수포가 돋아나기 시작했다.", "지정특기:꿈\n나무들 사이에, 무언가 커다란 것이 움직이고 있는 것이 보인다. 고기 썩는 듯한 냄새가 물씬 코를 찌른다. 얼룩덜룩한 무늬는…… 모피? 그게 아니면, 갈기갈기 찢어진 옷 조각? 그 녀석이 당신을 봤다. 나뭇잎 사이로 들여다보는 눈은, 마치 사람 같은—눈이 마주친 순간부터 기억이 없다. 정신이 들면, 머리카락을 닮은 검은 털이, 당신의 전신에 붙어있다.", "지정특기:원한\n숲 속에서 맞닥뜨린 거대한 나무의 줄기에는 수많은 짚인형이 못으로 고정되어 있었다. 우와아, 라고 생각하며 올려다보던 중, 기분 나쁜 사실을 눈치채고 말았다. 새 짚인형 중 하나에, 이름이 쓰여진 팻말이 붙어있다. --굉장히, 눈에 익은 이름이었다.", "지정특기:심해\n……이봐 ……이봐아. 멀리서 부르는 소리를 들은 기분이 들어, 물결 사이를 응시한다. 반들반들한 검은 그림자가 떠올랐다 가라앉았다 하며, 당신을 부르고 있다.", "지정특기:그늘\n덤불 속에 폐차가 파묻혀있다. 특징 없는 하얀 밴이다. 창문은 새카맣게 그을음이 묻어있어, 아무것도 보이지 않는다. 차체는 녹이 슬고, 도료도 벗겨져서, 방치되어버린 오래된 폐차임이 확실하다. —-그런데도, 폐차 속에서 날카로운 시선이 느껴진다. 잠금이 풀리는 소리가 나고, 천천히 뒷좌석의 문이 열리기 시작한다…….", "지정특기:소각\n타닥……타닥……. 불이 타오르는 소리가 들린다. 공터에 모닥불이 불꽃을 튀기고 있었다. 곁에는 아무도 없다 따듯해진 기분으로 멈춰 서서, 나뭇가지로 모닥불을 휘젓고 있으니, 불 속에서 가벼운 웃음소리가 들렸다. 흠칫 놀란 당신의 발 밑을, 고양이처럼 커다란 무언가가 스르륵 빠져나갔다. 모닥불로 눈을 돌리면, 그 곳에는 단지 그을은 뼛조각만 남아있었다."]; - return self.$get_table_by_1d6(table); - }, $Insane_Korean_get_Mlle_horror_table$28.$$arity = 0); - - Opal.def(self, '$get_latence_horror_table', $Insane_Korean_get_latence_horror_table$29 = function $$get_latence_horror_table() { - var self = this, table = nil; - - - table = ["지정특기:맛\n목이 마른 것을 깨달았다. 조사를 시작하고 나서, 시간이 상당히 많이 흘렀다. 아무래도 너무 깊이 몰두하고 있었던 듯하다. 화면에 눈을 돌리면서, 페트병의 물을 입에 머금는다. 그러자, 입 속에 위화감이 퍼졌다. 참지 못하고 물을 토해낸다. 그러자, 새까만 액체가 책상 위의 자료를 더럽혔다. 입 속에는, 구정물 같은 냄새가 떠나지 않는다. 확인해본 페트병의 물은 투명했는데……?", "지정특기:카메라\n자료 사이에서, 노란 봉투에 들어있는 사진 묶음이 나왔다. 피사체는……당신이다. 모르는 사이에 찍힌, 상신의 사진이 몇 십장이나 묶여있다. 빛 바랜 사진을 아무렇게나 묶어놓은 고무줄은 낡아서, 끈적거렸다. --누가, 이런 사진을? 무엇 때문에……?", "지정특기:미디어\n텔레비전의 뉴스를 보고 있으면, 그때까지 막힘없이 재잘거리고 있던아나운서가, 갑자기 입을 다문다. 어쩌려는거야, 라고 생각하고 있으니, 아나운서가 기묘한 것을 말하기 시작했다. 「죽을 수도 있습니다. 라고 말했습니다. 또한, 높은 확률로, 재앙이 발생합니다. 오늘부터 내일까지, 엄중히 경계하세요. 엄중히 경계하세요. 엄중히 경계하세요」\n 아나운서는, 화면 저 편에서 당신의 눈을 지그시 응시하고 있다. 당신이 당황해 하고 있으면, 텔레비전의 전원이 스스로 꺼진다.", "지정특기:민속학\n자료를 찾던 와중, 어느 한촌에 전해지는 역겨운 풍습에 다다랐다. 폭력……의식……제물……도저히 정상적인 인간이 한 짓이라고 생각할 수 없는 소행에 치가 떨린다. 그 풍습에는, 어째선지 기시감이 있다. 어디서 읽었더라? 생각하던 도중, 어떤 기억이 되살아났다. 당신이 어릴 적의 기억이었다. 아냐……그런, 말도 안되는, 당신의 고향이, 이런 한촌일리 없어…….", "지정특기:마술\n자료 속에서, 기묘한 고서가 나왔다. 가죽 장정의 호화로운 책으로, 묘한 냄새가 난다. 문장은 지리멸렬해서, 정상적인 인간이 썼다고 생각되지 않는다. 그러나, 찢어진 듯한 페이지를 한 장 한 장 넘기고 있으려니, 차츰차츰 작자가 말하려는 바를 알게 된다. 계속, 계속해서 알게 된다. 아아, 이제 알았다. 완전히 알았다. 이제 괜찮다. 분명 이 책은, 당신에게 읽혀지기 위해 쓰여졌던 것이다..", "지정특기:역사\n표지가 없는 보고서를 발견했다. 팔락팔락 넘겨보면, 지금 막 당신이 조사하고 있는 사건에 대한 조사보고서였다. 안타깝게도, 여기저기 먹칠이 되어있어, 가장 중요한 부분은 알 수 없다. 보아하니, 아무래도, 군에 의한 조사인 듯하다. 군? 어째서 군대가 이 사건을 조사하고 있었던 거지?"]; - return self.$get_table_by_1d6(table); - }, $Insane_Korean_get_latence_horror_table$29.$$arity = 0); - - Opal.def(self, '$get_city_table', $Insane_Korean_get_city_table$30 = function $$get_city_table() { - var self = this, table = nil; - - - table = ["실패작×3 기본p246", "노려보는 사람×1 데드 루프p190 개×1 기본p243", "신봉자×2 기본p243", "얼굴을 가린 여자×1 데드 루프p192", "유령 자동차×1 데드 루프p193", "원령×1 기본p245"]; - return self.$get_table_by_1d6(table); - }, $Insane_Korean_get_city_table$30.$$arity = 0); - - Opal.def(self, '$get_mountainforest_table', $Insane_Korean_get_mountainforest_table$31 = function $$get_mountainforest_table() { - var self = this, table = nil; - - - table = ["놋페라보×3 데드 루프p190", "독충 무리×2 데드 루프p191", "곰×1 데드 루프p191", "거대 곤충×1 데드 루프p192", "늑대 인간×1 기본p265", "쿠네쿠네×1 데드 루프p193"]; - return self.$get_table_by_1d6(table); - }, $Insane_Korean_get_mountainforest_table$31.$$arity = 0); - - Opal.def(self, '$get_seaside_table', $Insane_Korean_get_seaside_table$32 = function $$get_seaside_table() { - var self = this, table = nil; - - - table = ["도깨비불×3 데드 루프p190", "깊은 곳의 존재×2 기본p261", "별을 건너는 자×1 기본p261", "우주인×1 기본p257", "마녀×1 기본p245", "기어 다니는 자×1 기본p261"]; - return self.$get_table_by_1d6(table); - }, $Insane_Korean_get_seaside_table$32.$$arity = 0); - - Opal.def(self, '$get_overtime_horror_table', $Insane_Korean_get_overtime_horror_table$33 = function $$get_overtime_horror_table() { - var self = this, table = nil; - - - table = ["지정특기:죽음\n창문에 눈을 돌렸을 때, 창 밖을 떨어지는 그림자와 눈이 마주쳤다! 황급히 창가에 달려가지만, 아래에는 아무것도 없다. 환각이었던 것일까……?", "지정특기:기계\n갑자기 복사기가 윙윙거리며 종이를 쏟아 내기 시작했다. 바닥에 흩날리는 복사 용지에는 비뚤어진 사람 얼굴 같은 것이 인쇄되어 있다. 징그럽다…….", "지정특기:그늘\n창백한 아이가 책상 밑에서 당신을 쳐다보고 있다. 우와!라고 외치며 뛰어 올랐다가 앉으면, 아이의 모습은 사라졌다.", "지정특기:감촉\n일을 하고 있자니, 뒤에서 긴 흑발이 늘어져 왔다. 여자의 긴 생머리다. ……뒤에서 들여다보는 것은 도대체 누구인가?", "지정특기:근심\n시야의 구석을 어두운 얼굴의 남자가 지나가는 것이 보였다. 돌아봐도 아무도 없다. 누구야? 모른다고, 저런 녀석.", "지정특기:암흑\n팟! 갑작스런 정전으로 층이 어둠에 잠겼다. 놀라서 얼굴을 들어올리면, 어둠 속에서 많은 사람의 그림자가 멈춰 서서, 당신을 가만히 보고 있다!"]; - return self.$get_table_by_1d6(table); - }, $Insane_Korean_get_overtime_horror_table$33.$$arity = 0); - - Opal.def(self, '$get_overtimephone_table', $Insane_Korean_get_overtimephone_table$34 = function $$get_overtimephone_table() { - var self = this, table = nil; - - - table = ["「진행 상황은 어떻습니까?」\n 클라이언트에게서의 진행 확인 전화. 지금 하고 있어요! 전화 시간이 아깝다구! 스트레스로 배가 아프다. 【생명력】 -1.", "「사양이 바뀌어서…… 」\n 클라이언트의 사양 변경 연락. 이제와서!? 죽여버린다!? 모처럼의 작업이 무효가 된다. PP -1", "「최근 전화를 받지 않는데……괜찮아?」\n 연인이나 가족 등 소중한 사람의 전화. 업무 시간에 걸지마 하고 생각하면서도, 조금 기분 전환이 된다. 【정신력】 1 회복.", "「특상 초밥 오인분 부탁드립니다!」\n 잘못 걸려온 전화였다. 놀라게 하다니…….", "「어이! 좀 전의 일인데 어떻게 된거야!」\n 다른 용무의 클레임 전화다! 지친 정신에 손상을 입고, 【정신력】 -1.", "「……없으면 좋을텐데。」\n 전화 저편에서 지옥 같은 목소리가 속삭인다. 오싹해져 반사적으로 전화를 끊는다. 착신 이력은 남아있지 않다……뭐야 지금!? 《전자기기》로 공포판정."]; - return self.$get_table_by_1d6(table); - }, $Insane_Korean_get_overtimephone_table$34.$$arity = 0); - - Opal.def(self, '$get_overtimework_scene_table', $Insane_Korean_get_overtimework_scene_table$35 = function $$get_overtimework_scene_table() { - var self = this, table = nil; - - - table = ["지직……갑자기 형광등이 깜박인다. 전기 쪽이 이상한걸까? 정전만은 참아줬으면.", "톡. 톡. 어디선가 물이 뚝뚝 떨어지는 소리가 들린다. 어딘가 비가 새거나, 수도꼭지를 잠그는 것을 잊은걸까?", "슈욱……쏴아아아아. 화장실 물 내리는 소리가 울린다. 누군가 화장실에 있었나? 아니면다른 층인가?", "사이렌 소리가 가까이 다가오고, 적색 빛이 창문에 비친다. 근처에 뭔가 있던 것 같은데…….", "뒤에서 누군가 말하는 소리를 들은 것 같다. 순간적으로 뒤돌아 보지만……환청일까?", "창문 유리 너머로 보이는 밤의 불빛을 안타까운 마음으로 바라본다. 빨리 돌아가고 싶다…….", "갑자기, 핸드폰 소리가 울려 퍼진다. 매너모드로 하고 있었을텐데……도대체, 누구일까?", "갑작스런 기계음에 놀라 보면, 팩스가 종이를 뱉어내고 있다. 이런 시간에 무엇일까?", "맛있을 것 같은 냄새가 풍겨오고, 갑자기 허기를 느낀다. 어디서 오는거야, 이 냄새는?", "기분 전환으로 보고 있던 인터넷이 푹 빠져 문득 깨닫자 수 분 경과……안돼 안돼.", "앞으로 배의 노를 저어, 번쩍 눈을 떴다. 황급히 시계를 보고……엣, 벌써 이런 시간이야!?"]; - return self.$get_table_by_2d6(table); - }, $Insane_Korean_get_overtimework_scene_table$35.$$arity = 0); - - Opal.def(self, '$get_corporatenameone_table', $Insane_Korean_get_corporatenameone_table$36 = function $$get_corporatenameone_table() { - var self = this, table = nil; - - - table = ["플라잉", "트러블", "브래드", "프리티", "크림슨", "범인"]; - return self.$get_table_by_1d6(table); - }, $Insane_Korean_get_corporatenameone_table$36.$$arity = 0); - - Opal.def(self, '$get_corporatenametwo_table', $Insane_Korean_get_corporatenametwo_table$37 = function $$get_corporatenametwo_table() { - var self = this, table = nil; - - - table = ["위치-즈", "인텔리전스", "고양이", "새", "공포", "인세인"]; - return self.$get_table_by_1d6(table); - }, $Insane_Korean_get_corporatenametwo_table$37.$$arity = 0); - - Opal.def(self, '$get_corporatenamethree_table', $Insane_Korean_get_corporatenamethree_table$38 = function $$get_corporatenamethree_table() { - var self = this, table = nil; - - - table = ["(주)", "(주)", "(주)", "(유)", "(유)", "(유)"]; - return self.$get_table_by_1d6(table); - }, $Insane_Korean_get_corporatenamethree_table$38.$$arity = 0); - return (Opal.def(self, '$get_reaction_scene_table', $Insane_Korean_get_reaction_scene_table$39 = function $$get_reaction_scene_table() { - var self = this, table = nil; - - - table = ["「잠시 이쪽으로 와주시겠습니까。」\n 갑자기 체포, 구속당한다. 「반응표」를 사용했던캐릭터는, 이 씬이 종료되고 나서, 2씬 동안, 자신이 씬 플레이어가 아닌 씬에 등장할 수 없게 된다.(마스터 씬에는 등장 가능)", "「내가 협력할 수 있는 건, 여기까지다。」\n 협력을 구했던 인물은, 겁을 먹은 듯한 모습으로 손에 든 꾸러미를 당신에게 건네주었다. 「반응표」를 사용했던 캐릭터는, 원하는 아이템 1개를 획득한다.", "「그 건은 수사 중입니다. 정보제공 감사합니다。」\n 협력을 구했던 인물은, 생글생글 웃으며 그렇게 대답한다. 무엇을 물어봐도, 똑 같은 대답만 되돌아온다. 「반응표」를 사용했던 캐릭터는, 【정신력】을 1점 감소시킨다.", "「혹시 자네, 그 사건의 관계자인가……?」\n 아무래도 협력을 구했던 인물도, 마침 같은 사건을 조사하고 있었던 듯하다. 여러 가지 정보를 제공해 줄 것 같다. 「반응표」를 사용했던 캐릭터는, 이후, 조사판정을 할 때 +1의 수정이 붙는다.", "「꿈이라도 꾼 것 아닙니까?」\n 아무리 강하게 호소해도 믿어주지 않는다. ……혹시, 이상한 건 내 쪽이란 건가? 감정의 특기분야에서 랜덤으로 특기를 1개 골라 공포판정을 행한다.", "「네네, 우리들도 한가하지 않다구요。」\n 여러 가지를 이야기해도 상대조차 해주지 않는다. 문전박대를 당한다.", "「잠시 신체검사를 해도 괜찮겠습니까?」\n 수상한 인물로 여겨진 것 같다. 「반응표」를사용했던 캐릭터가, 아이템이나 위법인 듯한 프라이즈를 가지고 있었을 경우, 이 씬이 종료되고 나서 2씬 동안, 자신이 씬 플레이어가 아닌 씬에 등장할 수 없게 된다.(마스터 씬에서는 등장 가능)", "「그건 신경쓰이는군요. 이쪽에서도 조사해보도록하죠。」\n 자기 일처럼 상담에 응해준다. 뭔가 알게되면 연락해주겠다고 말하지만……. 1D6을 굴린다. 홀수라면, 2씬 후에 정보를 건네준다. 「반응표」를 사용했던 캐릭터는, 원하는 【비밀】 1개를 획득한다. 짝수라면, 조사하고 있던 NPC가 의문사 당한다. 「반응표」를 사용했던 캐릭터는, 지식의 특기분야에서 랜덤으로 특기 1개를 골라 공포판정을 한다.", "「목숨이 아깝다면 이 이상 관여하지마。」\n 당신은 인기척도 없는 곳으로 끌려가, 구타를 당했다. 협력을 구했던 인물은, 도움을 청했을 터인 당신을 강하게 거부했다. 「반응표」를 사용했던 캐릭터는 【생명력】을 1점 감소시킨다.", "「알겠습니다. 만일을 위해 패트롤을 강화하도록 하죠。」\n 주변의 경호를 약속해준다. 「반응표」를 사용했던 캐릭터는, 이 세션 동안, 한 번은 자신이 입었던 데미지를 무효화 시킬 수 있다. 데미지를 무효화 했을 경우, 「반응표」를 사용했던 캐릭터는, 폭력의 특기분야에서 랜덤으로 특기 1개를 골라 공포판정을 한다.", "「……뭐야 이녀석!?」\n 도움을 구했던 상대가 갑자기 사망한다. 놈들의 손길이, 이런 곳까지 미치고 있는걸까? 「반응표」를 사용했던 캐릭터는, 폭력의 특기분야에서 랜덤으로 특기 1개를 골라 공포판정을 한다."]; - return self.$get_table_by_2d6(table); - }, $Insane_Korean_get_reaction_scene_table$39.$$arity = 0), nil) && 'get_reaction_scene_table'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/IthaWenUa.js b/src/assets/dicebot/IthaWenUa.js deleted file mode 100644 index a66803f89..000000000 --- a/src/assets/dicebot/IthaWenUa.js +++ /dev/null @@ -1,46 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$%', '$floor', '$/', '$<=']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'IthaWenUa'); - - var $nesting = [self].concat($parent_nesting), $IthaWenUa_check_1D100$1; - - - Opal.const_set($nesting[0], 'ID', "IthaWenUa"); - Opal.const_set($nesting[0], 'NAME', "イサー・ウェン=アー"); - Opal.const_set($nesting[0], 'SORT_KEY', "いさあうえんああ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "1D100<=m 方式の判定で成否、クリティカル(01)・ファンブル(00)を自動判定します。\n"); - return (Opal.def(self, '$check_1D100', $IthaWenUa_check_1D100$1 = function $$check_1D100(total, _dice_total, cmp_op, target) { - var $a, self = this, diceValue = nil, dice0 = nil, dice1 = nil; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return "" - }; - diceValue = total['$%'](100); - dice0 = $rb_divide(diceValue, 10).$floor(); - dice1 = diceValue['$%'](10); - if ($truthy(($truthy($a = dice0['$=='](0)) ? dice1['$=='](1) : $a))) { - return " > 01 > クリティカル" - } else if ($truthy(($truthy($a = dice0['$=='](0)) ? dice1['$=='](0) : $a))) { - return " > 00 > ファンブル" - } else if ($truthy($rb_le(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $IthaWenUa_check_1D100$1.$$arity = 4), nil) && 'check_1D100'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/JamesBond.js b/src/assets/dicebot/JamesBond.js deleted file mode 100644 index 693ad00e6..000000000 --- a/src/assets/dicebot/JamesBond.js +++ /dev/null @@ -1,57 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$floor', '$/', '$+', '$>=', '$<=', '$*']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'JamesBond'); - - var $nesting = [self].concat($parent_nesting), $JamesBond_check_1D100$1; - - - Opal.const_set($nesting[0], 'ID', "JamesBond"); - Opal.const_set($nesting[0], 'NAME', "ジェームズ・ボンド007"); - Opal.const_set($nesting[0], 'SORT_KEY', "しええむすほんと007"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・1D100の目標値判定で、効果レーティングを1~4で自動判定。\n" + " 例)1D100<=50\n" + "   JamesBond : (1D100<=50) → 20 → 効果3(良)\n"); - return (Opal.def(self, '$check_1D100', $JamesBond_check_1D100$1 = function $$check_1D100(total, _dice_total, cmp_op, target) { - var self = this, base = nil; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return "" - }; - base = $rb_divide($rb_plus(target, 9), 10).$floor(); - if ($truthy($rb_ge(total, 100))) { - return " > 失敗" - } else if ($truthy($rb_le(total, base))) { - return " > 効果1(完璧)" - } else if ($truthy($rb_le(total, $rb_times(base, 2)))) { - return " > 効果2(かなり良い)" - } else if ($truthy($rb_le(total, $rb_times(base, 5)))) { - return " > 効果3(良)" - } else if ($truthy($rb_le(total, target))) { - return " > 効果4(まあまあ)" - } else { - return " > 失敗" - }; - }, $JamesBond_check_1D100$1.$$arity = 4), nil) && 'check_1D100'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Kamigakari.js b/src/assets/dicebot/Kamigakari.js deleted file mode 100644 index bb77f689b..000000000 --- a/src/assets/dicebot/Kamigakari.js +++ /dev/null @@ -1,185 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$debug', '$upcase', '$===', '$getReimonCompensationTableResult', '$last_match', '$to_i', '$getGetMaterialTableResult', '$getTableCommandResult', '$empty?', '$get_table_by_1d6', '$get_table_by_d66', '$+', '$getMaterialEffect', '$getPrice', '$nil?', '$roll', '$<', '$getMaterialEffectNomal', '$getMaterialEffectRare', '$getD66', '$bcdice', '$get_table_by_number', '$getMaterialEffectPower', '$sub', '$>', '$getAttribute', '$to_s', '$[]', '$freeze', '$setPrefixes', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Kamigakari'); - - var $nesting = [self].concat($parent_nesting), $Kamigakari_initialize$1, $Kamigakari_rollDiceCommand$2, $Kamigakari_getReimonCompensationTableResult$3, $Kamigakari_getGetMaterialTableResult$4, $Kamigakari_getMaterialEffect$5, $Kamigakari_getMaterialEffectNomal$6, $Kamigakari_getMaterialEffectPower$7, $Kamigakari_getMaterialEffectRare$8, $Kamigakari_getAttribute$9, $Kamigakari_getPrice$10; - - - Opal.const_set($nesting[0], 'ID', "Kamigakari"); - Opal.const_set($nesting[0], 'NAME', "神我狩"); - Opal.const_set($nesting[0], 'SORT_KEY', "かみかかり"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・各種表\n" + " ・感情表(ET)\n" + " ・霊紋消費の代償表(RT)\n" + " ・伝奇名字・名前決定表(NT)\n" + " ・魔境臨界表(KT)\n" + " ・獲得素材チャート(MTx xは[法則障害]の[強度]。省略時は1)\n" + "  例) MT MT3 MT9\n" + "・D66ダイスあり\n"); - - Opal.def(self, '$initialize', $Kamigakari_initialize$1 = function $$initialize() { - var $iter = $Kamigakari_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Kamigakari_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Kamigakari_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 1); - }, $Kamigakari_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Kamigakari_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, $b, self = this, tableName = nil, result = nil, $case = nil, number = nil, rank = nil, text = nil; - - - tableName = ""; - result = ""; - self.$debug("rollDiceCommand command", command); - $case = command.$upcase(); - if ("RT"['$===']($case)) {$b = self.$getReimonCompensationTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if (/^MT(\d*)$/['$===']($case)) { - rank = $$($nesting, 'Regexp').$last_match(1); - rank = ($truthy($a = rank) ? $a : 1); - rank = rank.$to_i(); - $b = self.$getGetMaterialTableResult(rank), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b;} - else {return self.$getTableCommandResult(command, $$($nesting, 'TABLES'))}; - if ($truthy(result['$empty?']())) { - return ""}; - text = "" + (tableName) + "(" + (number) + "):" + (result); - return text; - }, $Kamigakari_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getReimonCompensationTableResult', $Kamigakari_getReimonCompensationTableResult$3 = function $$getReimonCompensationTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "霊紋消費の代償表"; - table = ["邪神化:物理法則を超過しすぎた代償として、霊魂そのものが歪み、PCは即座にアラミタマへと変貌する。アラミタマ化したPCは、いずこかへと消え去る。", "存在消滅:アラミタマ化を最後の力で抑え込む。だがその結果、PCの霊魂は燃え尽きてしまい、この世界から消滅する。そのPCは[状態変化:死亡]となり死体も残らない。", "死亡:霊魂の歪みをかろうじて食い止めるが、霊魂が崩壊する。PCは[状態変化:死亡]となるが遺体は残る。", "霊魂半壊:霊魂の歪みを食い止めるものの、霊魂そのものに致命的な負傷を受け、全身に障害が残る。それに伴って霊紋も消滅し、一般人へと戻る。", "記憶消滅:奇跡的に霊魂の摩耗による身体的な悪影響を免れる。時間を置くことで霊紋も回復するが、精神的に影響を受け、すべての記憶を失ってしまう。", "影響なし:奇跡的に、霊魂の摩耗による悪影響を完全に退け、さらに霊紋の回復も早期を見込める。肉体や精神にも、特に影響はない。"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $Kamigakari_getReimonCompensationTableResult$3.$$arity = 0); - - Opal.def(self, '$getGetMaterialTableResult', $Kamigakari_getGetMaterialTableResult$4 = function $$getGetMaterialTableResult(rank) { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil, effect = nil, number2 = nil, price = nil; - - - tableName = "獲得素材チャート"; - table = ["真紅の", "ざらつく", "紺碧の", "鋭い", "黄金の", "柔らかな", "銀色の", "尖った", "純白の", "硬い", "漆黒の", "輝く", "なめらかな", "濁った", "ふさふさの", "邪悪な", "粘つく", "聖なる", "灼熱の", "炎の", "氷結の", "氷の", "熱い", "風の", "冷たい", "雷の", "土の", "幻の", "骨状の", "刻印の", "牙状の", "鱗状の", "石状の", "宝石状の", "毛皮状の", "羽根状の"]; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - result = $rb_plus(result, "断片"); - $b = self.$getMaterialEffect(rank), $a = Opal.to_ary($b), (effect = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - number = "" + (number) + "," + (number2); - price = self.$getPrice(effect); - result = "" + (result) + "。" + (effect); - if ($truthy(price['$nil?']())) { - } else { - result = $rb_plus(result, "" + ":" + (price)) - }; - return [tableName, result, number]; - }, $Kamigakari_getGetMaterialTableResult$4.$$arity = 1); - - Opal.def(self, '$getMaterialEffect', $Kamigakari_getMaterialEffect$5 = function $$getMaterialEffect(rank) { - var $a, $b, self = this, number = nil, result = nil, type = nil, number2 = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - result = ""; - type = ""; - if ($truthy($rb_lt(number, 6))) { - - $b = self.$getMaterialEffectNomal(rank), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - type = "よく見つかる素材"; - } else { - - $b = self.$getMaterialEffectRare(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - type = "珍しい素材"; - }; - result = "" + (type) + ":" + (result); - number = "" + (number) + "," + (number2); - return [result, number]; - }, $Kamigakari_getMaterialEffect$5.$$arity = 1); - - Opal.def(self, '$getMaterialEffectNomal', $Kamigakari_getMaterialEffectNomal$6 = function $$getMaterialEffectNomal(rank) { - var $a, $b, self = this, table = nil, isSwap = nil, number = nil, result = nil, power = nil, number2 = nil; - - - table = [[13, "体力+n"], [16, "敏捷+n"], [23, "知性+n"], [26, "精神+n"], [33, "幸運+n"], [35, "物D+n"], [41, "魔D+n"], [43, "行動+n"], [46, "生命+n×3"], [53, "装甲+n"], [56, "結界+n"], [63, "移動+nマス"], [66, "※PCの任意"]]; - isSwap = false; - number = self.$bcdice().$getD66(isSwap); - result = self.$get_table_by_number(number, table); - self.$debug("getMaterialEffectNomal result", result); - if ($truthy(/\+n/['$==='](result))) { - - $b = self.$getMaterialEffectPower(rank), $a = Opal.to_ary($b), (power = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - result = result.$sub(/\+n/, "" + "+" + (power)); - number = "" + (number) + "," + (number2);}; - return [result, number]; - }, $Kamigakari_getMaterialEffectNomal$6.$$arity = 1); - - Opal.def(self, '$getMaterialEffectPower', $Kamigakari_getMaterialEffectPower$7 = function $$getMaterialEffectPower(rank) { - var $a, $b, self = this, table = nil, rankTable = nil, power = nil, number = nil; - - - table = [[4, [1, 1, 1, 2, 2, 3]], [8, [1, 1, 2, 2, 3, 3]], [9, [1, 2, 3, 3, 4, 5]]]; - if ($truthy($rb_gt(rank, 9))) { - rank = 9}; - rankTable = self.$get_table_by_number(rank, table); - $b = self.$get_table_by_1d6(rankTable), $a = Opal.to_ary($b), (power = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [power, number]; - }, $Kamigakari_getMaterialEffectPower$7.$$arity = 1); - - Opal.def(self, '$getMaterialEffectRare', $Kamigakari_getMaterialEffectRare$8 = function $$getMaterialEffectRare() { - var $a, $b, self = this, table = nil, number = nil, result = nil, attribute = nil, number2 = nil; - - - table = [[3, "**付与"], [5, "**半減"], [6, "※GMの任意"]]; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - result = self.$get_table_by_number(number, table); - self.$debug("getMaterialEffectRare result", result); - if ($truthy(/\*\*/['$==='](result))) { - - $b = self.$getAttribute(), $a = Opal.to_ary($b), (attribute = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - result = result.$sub(/\*\*/, attribute.$to_s()); - number = "" + (number) + "," + (number2);}; - return [result, number]; - }, $Kamigakari_getMaterialEffectRare$8.$$arity = 0); - - Opal.def(self, '$getAttribute', $Kamigakari_getAttribute$9 = function $$getAttribute() { - var self = this, table = nil, isSwap = nil, number = nil, result = nil; - - - table = [[21, "[火炎]"], [33, "[冷気]"], [43, "[電撃]"], [53, "[風圧]"], [56, "[幻覚]"], [62, "[魔毒]"], [64, "[磁力]"], [66, "[閃光]"]]; - isSwap = false; - number = self.$bcdice().$getD66(isSwap); - result = self.$get_table_by_number(number, table); - return [result, number]; - }, $Kamigakari_getAttribute$9.$$arity = 0); - - Opal.def(self, '$getPrice', $Kamigakari_getPrice$10 = function $$getPrice(effect) { - var self = this, power = nil, $case = nil, table = nil, price = nil; - - - power = 0; - $case = effect; - if (/\+(\d+)/['$===']($case)) {power = $$($nesting, 'Regexp').$last_match(1).$to_i()} - else if (/付与/['$===']($case)) {power = 3} - else if (/半減/['$===']($case)) {power = 4} - else {power = 0}; - table = [nil, "500G(効果値:1)", "1000G(効果値:2)", "1500G(効果値:3)", "2000G(効果値:4)", "3000G(効果値:5)"]; - price = table['$[]'](power); - return price; - }, $Kamigakari_getPrice$10.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["ET", "KT", "NT"], {"ET": $hash2(["name", "type", "table"], {"name": "感情表", "type": "d66", "table": "" + "11:運命/そのキャラクターに、運命的、あるいは宿命的なものを感じている。\n" + "12:運命/そのキャラクターに、運命的、あるいは宿命的なものを感じている。\n" + "13:家族/そのキャラクターに、家族のような親近感をいだいている。\n" + "14:家族/そのキャラクターに、家族のような親近感をいだいている。\n" + "15:腐れ縁/そのキャラクターに、腐れ縁を感じている。\n" + "16:腐れ縁/そのキャラクターに、腐れ縁を感じている。\n" + "21:師弟/そのキャラクターとは、まるで師弟のような関係だと感じている。どちらが弟子で、どちらが師匠かは相談して決定する。\n" + "22:師弟/そのキャラクターとは、まるで師弟のような関係だと感じている。どちらが弟子で、どちらが師匠かは相談して決定する。\n" + "23:好敵手/そのキャラクターを、好敵手だと感じている。\n" + "24:好敵手/そのキャラクターを、好敵手だと感じている。\n" + "25:親近感/そのキャラクターに、親近感をいだいている。\n" + "26:親近感/そのキャラクターに、親近感をいだいている。\n" + "31:誠意/そのキャラクターに、誠実さを感じている。\n" + "32:誠意/そのキャラクターに、誠実さを感じている。\n" + "33:友情/そのキャラクターに、友情をいだいている。\n" + "34:友情/そのキャラクターに、友情をいだいている。\n" + "35:尊敬/そのキャラクターに、尊敬をいだいている。\n" + "36:尊敬/そのキャラクターに、尊敬をいだいている。\n" + "41:庇護/そのキャラクターに、庇護の感情をいだいている。どちらが保護者で、どちらが被保護者かは相談して決定する。\n" + "42:庇護/そのキャラクターに、庇護の感情をいだいている。どちらが保護者で、どちらが被保護者かは相談して決定する。\n" + "43:好感/そのキャラクターに、好感をいだいている。\n" + "44:好感/そのキャラクターに、好感をいだいている。\n" + "45:興味/そのキャラクターに、興味をいだいている。\n" + "46:興味/そのキャラクターに、興味をいだいている。\n" + "51:感銘/そのキャラクターに、感銘をいだいている。\n" + "52:感銘/そのキャラクターに、感銘をいだいている。\n" + "53:畏怖/そのキャラクターに、畏怖をいだいている。\n" + "54:畏怖/そのキャラクターに、畏怖をいだいている。\n" + "55:お気に入り/そのキャラクターを、気に入っている。\n" + "56:お気に入り/そのキャラクターを、気に入っている。\n" + "61:愛情/そのキャラクターに愛情、またはそれに近い執着心をいだいている。\n" + "62:愛情/そのキャラクターに愛情、またはそれに近い執着心をいだいている。\n" + "63:信頼/そのキャラクターに、信頼を感じている。\n" + "64:信頼/そのキャラクターに、信頼を感じている。\n" + "65:*PCの任意/プレイヤー、またはGMが設定した任意の感情をいだいている。\n" + "66:*PCの任意/プレイヤー、またはGMが設定した任意の感情をいだいている。\n"}), "KT": $hash2(["name", "type", "table"], {"name": "魔境臨界表", "type": "d66", "table": "" + "11:時空の捻じれ\\n現在地の時空が捻じれ、PC全員は即時に[侵入エリア]へと戻る。\n" + "12:時空の捻じれ\\n現在地の時空が捻じれ、PC全員は即時に[侵入エリア]へと戻る。\n" + "13:強敵登場\\n突如、<崇り神>化した[モノノケ]が出撃する。GMは、PCの[世界干渉LV]の平均+3の[LV]を持つ任意の[モノノケ]を1体選び任意の[探索エリア]に配置。そこでは[迂回]不可で[戦闘]が発生する。\n" + "14:強敵登場\\n突如、<崇り神>化した[モノノケ]が出撃する。GMは、PCの[世界干渉LV]の平均+3の[LV]を持つ任意の[モノノケ]を1体選び任意の[探索エリア]に配置。そこでは[迂回]不可で[戦闘]が発生する。\n" + "15:影の手\\n瘴気で形成された無数の手がPC達を握りつぶそうとする。PC全員は[効果種別:魔法攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:20+PCの[世界干渉LV]の平均/魔法ダメージ:20×PCの[世界干渉LV]の平均/抵抗[半減]]を受ける。\n" + "16:影の手\\n瘴気で形成された無数の手がPC達を握りつぶそうとする。PC全員は[効果種別:魔法攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:20+PCの[世界干渉LV]の平均/魔法ダメージ:20×PCの[世界干渉LV]の平均/抵抗[半減]]を受ける。\n" + "21:無数の邪眼\\n空間全体に恐ろしい邪眼が出現する。PC全員は、[大休止]するまで[状態変化:暗闇・苦痛]となる。\n" + "22:無数の邪眼\\n空間全体に恐ろしい邪眼が出現する。PC全員は、[大休止]するまで[状態変化:暗闇・苦痛]となる。\n" + "23:空間崩壊\\n突如として、魔境の空間が崩壊する。PC全員は[効果種別:物理攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:30+PCの[世界干渉LV]の平均/物理ダメージ:30×PCの[世界干渉LV]の平均]]を受ける。\n" + "24:空間崩壊\\n突如として、魔境の空間が崩壊する。PC全員は[効果種別:物理攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:30+PCの[世界干渉LV]の平均/物理ダメージ:30×PCの[世界干渉LV]の平均]]を受ける。\n" + "25:防具腐食\\n周辺から異様な霧が立ち込め、防具を腐食する。PC全員は、[所持・装備]中の任意の[アイテム:防具]1つを失う。\n" + "26:防具腐食\\n周辺から異様な霧が立ち込め、防具を腐食する。PC全員は、[所持・装備]中の任意の[アイテム:防具]1つを失う。\n" + "31:素材消失\\n周囲から異様な光が零れ、所持中の[素材]を消失させる。PC全員が[所持]中の[素材]が、すべて消滅する。\n" + "32:素材消失\\n周囲から異様な光が零れ、所持中の[素材]を消失させる。PC全員が[所持]中の[素材]が、すべて消滅する。\n" + "33:なし\\n特に何も起こらない。\n" + "34:なし\\n特に何も起こらない。\n" + "35:モノノケ強襲\\n突如として<崇り神>化した[モノノケ]が出現し、PCたちに襲いかかる。GMはPCの[世界干渉LV]の平均+2の[LV]を持つ任意の[モノノケ]を2体選び、PC達の前に出現させ、即座に[戦闘]を開始する。\n" + "36:モノノケ強襲\\n突如として<崇り神>化した[モノノケ]が出現し、PCたちに襲いかかる。GMはPCの[世界干渉LV]の平均+2の[LV]を持つ任意の[モノノケ]を2体選び、PC達の前に出現させ、即座に[戦闘]を開始する。\n" + "41:休息妨害\\nPCが休息しようとするたびに、さまざまな空間から、触手や毒蠱などが出現して襲いかかってくる。PCたちは以降、[魔境討伐]が終了するまで[大休止]を行えない。\n" + "42:休息妨害\\nPCが休息しようとするたびに、さまざまな空間から、触手や毒蠱などが出現して襲いかかってくる。PCたちは以降、[魔境討伐]が終了するまで[大休止]を行えない。\n" + "43:龍脈破壊\\n霊力が暴走して空間が歪み、[霊力]が狂う。PC全員は即座に[霊力]をすべて振り直す。\n" + "44:龍脈破壊\\n霊力が暴走して空間が歪み、[霊力]が狂う。PC全員は即座に[霊力]をすべて振り直す。\n" + "45:固有時間停止\\nPCたちの肉体の一部が灰色と化し、動かなくなる。PC全員は[タイミング:準備・防御・特殊]から1つ選び、以後その[タイミング]を消費できなくなる。\n" + "46:固有時間停止\\nPCたちの肉体の一部が灰色と化し、動かなくなる。PC全員は[タイミング:準備・防御・特殊]から1つ選び、以後その[タイミング]を消費できなくなる。\n" + "51:龍脈不順\\n霊力が突如として混濁し、[霊力]の循環に悪影響が発生する。PC全員は以後、[魔境討伐]が終了するまで[霊力操作]が行えない。\n" + "52:龍脈不順\\n霊力が突如として混濁し、[霊力]の循環に悪影響が発生する。PC全員は以後、[魔境討伐]が終了するまで[霊力操作]が行えない。\n" + "53:術技封印\\n周囲の空気が変貌し、悪影響が起こる。PC全員は以後、修得済みの《タレント》中、使用する[コスト]が最も多いもの1つが[魔境討伐]終了まで使用不能となる。[コスト:なし]ばかりの場合、GMが任意で1つを決定する。\n" + "54:術技封印\\n周囲の空気が変貌し、悪影響が起こる。PC全員は以後、修得済みの《タレント》中、使用する[コスト]が最も多いもの1つが[魔境討伐]終了まで使用不能となる。[コスト:なし]ばかりの場合、GMが任意で1つを決定する。\n" + "55:装飾品消滅\\n周囲が青い光に包まれると、なぜかPCたちの装飾品が失われている。PC全員は[所持・装備中]の[アイテム・装飾]をすべて失う。\n" + "56:装飾品消滅\\n周囲が青い光に包まれると、なぜかPCたちの装飾品が失われている。PC全員は[所持・装備中]の[アイテム・装飾]をすべて失う。\n" + "61:愚者の黄金消失\\n周囲が赤い光に包まれると、なぜかPCたちの[G]が失われている。PC全員は、[所持金]が[半減]する。\n" + "62:愚者の黄金消失\\n周囲が赤い光に包まれると、なぜかPCたちの[G]が失われている。PC全員は、[所持金]が[半減]する。\n" + "63:GMの任意\\nこの表のなかから、GMが効果を1つ選んで発生させる。\n" + "64:GMの任意\\nこの表のなかから、GMが効果を1つ選んで発生させる。\n" + "65:臨界重複\\n[魔境臨界]が2回発生する。GMはこの表を2回振り、効果をそれぞれ適応できる。再び「臨界重複」が発生した場合、[GMの任意]1回として扱う。\n" + "66:臨界重複\\n[魔境臨界]が2回発生する。GMはこの表を2回振り、効果をそれぞれ適応できる。再び「臨界重複」が発生した場合、[GMの任意]1回として扱う。\n"}), "NT": $hash2(["name", "type", "table"], {"name": "伝奇名字・名前決定表", "type": "d66", "table": "" + "11:御剣(みつるぎ) 陸/凛\n" + "12:獅子内(ししうち) 大和/楓\n" + "13:白銀(はくぎん) 隼人/桜\n" + "14:竹内(たけのうち) 真/遥\n" + "15:古太刀(こだち) 大地/美咲\n" + "16:空閑(くが) 俊/真央\n" + "21:鬼形(おにがた) 諒/舞\n" + "22:御巫(みかんなぎ) 匠/七海\n" + "23:護摩堂(ごまどう) 仁/千尋\n" + "24:龍円(りゅうえん) 拓真/茜\n" + "25:鏡部(かがみべ) 京/明日香\n" + "26:犬神(いぬがみ) 剛/栞\n" + "31:明月院(めいげついん) 葵/唯\n" + "32:百目鬼(どうめき) 蓮也/萌\n" + "33:恐神(おそがみ) 達也/綾香\n" + "34:蘭(あららぎ) 龍之介/梓\n" + "35:珠輝(たまき) 章/瞳\n" + "36:眼龍(がんりゅう) 圭/沙織\n" + "41:鉄砲塚(てっぽうづか) 雅人/沙良\n" + "42:檻神(おりがみ) 直哉/弥生\n" + "43:不死原(ふじわら) 純/千秋\n" + "44:九郎座(くろうざ) 武蔵/春菜\n" + "45:土御門(つちみかど) 亮介/翠\n" + "46:十六夜(いざよい) 啓二/双葉\n" + "51:転法輪(てんぽうりん) 英雄/麗菜\n" + "52:執行(しぎょう) 響/小百合\n" + "53:祝(ほうり) 良太郎/陽奈\n" + "54:神尊(こうそ) 智/紫苑\n" + "55:芦屋(あしや) 孝之/香澄\n" + "56:七社(ななしゃ) 克己/風香\n" + "61:騎馬(きば) 哲也/詩乃\n" + "62:当麻(とうま) 玄/沙耶\n" + "63:狐塚(きつねづか) 北斗/麻耶\n" + "64:天神林(てんじんばやし) 空/晶\n" + "65:明嵐(めあらし) 八雲/乙葉\n" + "66:草壁(くさかべ) 大悟/文\n"})}).$freeze()); - return self.$setPrefixes($rb_plus(["RT", "MT(\\d*)"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Kamigakari_Korean.js b/src/assets/dicebot/Kamigakari_Korean.js deleted file mode 100644 index e415d640c..000000000 --- a/src/assets/dicebot/Kamigakari_Korean.js +++ /dev/null @@ -1,224 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$debug', '$===', '$getReimonCompensationTableResult', '$last_match', '$to_i', '$getGetMaterialTableResult', '$getEmotionTableResult', '$getNameTableResult', '$getKyoukaiTableResult', '$empty?', '$get_table_by_1d6', '$getD66', '$bcdice', '$get_table_by_number', '$get_table_by_d66', '$+', '$getMaterialEffect', '$getPrice', '$nil?', '$roll', '$<', '$getMaterialEffectNomal', '$getMaterialEffectRare', '$getMaterialEffectPower', '$sub', '$>', '$getAttribute', '$to_s', '$[]']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Kamigakari_Korean'); - - var $nesting = [self].concat($parent_nesting), $Kamigakari_Korean_initialize$1, $Kamigakari_Korean_rollDiceCommand$2, $Kamigakari_Korean_getReimonCompensationTableResult$3, $Kamigakari_Korean_getEmotionTableResult$4, $Kamigakari_Korean_getNameTableResult$5, $Kamigakari_Korean_getKyoukaiTableResult$6, $Kamigakari_Korean_getGetMaterialTableResult$7, $Kamigakari_Korean_getMaterialEffect$8, $Kamigakari_Korean_getMaterialEffectNomal$9, $Kamigakari_Korean_getMaterialEffectPower$10, $Kamigakari_Korean_getMaterialEffectRare$11, $Kamigakari_Korean_getAttribute$12, $Kamigakari_Korean_getPrice$13; - - - Opal.const_set($nesting[0], 'ID', "Kamigakari:Korean"); - Opal.const_set($nesting[0], 'NAME', "카미가카리"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:카미가카리"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・각종표\n" + " ・감정표(ET)\n" + " ・영문소비의 댓가표(RT)\n" + " ・전기 성씨・이름 결정표(NT)\n" + " ・마경임계표(KT)\n" + " ・획득 소재 차트(MTx x는[법칙장해]의[강도].생략할 때는1)\n" + "  예) MT MT3 MT9\n" + "・D66주사위 가능\n"); - self.$setPrefixes(["RT", "MT(\\d*)", "ET", "NT", "KT"]); - - Opal.def(self, '$initialize', $Kamigakari_Korean_initialize$1 = function $$initialize() { - var $iter = $Kamigakari_Korean_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Kamigakari_Korean_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Kamigakari_Korean_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 1); - }, $Kamigakari_Korean_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Kamigakari_Korean_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, $b, self = this, tableName = nil, result = nil, $case = nil, number = nil, rank = nil, text = nil; - - - tableName = ""; - result = ""; - self.$debug("rollDiceCommand command", command); - $case = command; - if ("RT"['$===']($case)) {$b = self.$getReimonCompensationTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if (/^MT(\d*)$/['$===']($case)) { - rank = $$($nesting, 'Regexp').$last_match(1); - rank = ($truthy($a = rank) ? $a : 1); - rank = rank.$to_i(); - $b = self.$getGetMaterialTableResult(rank), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b;} - else if ("ET"['$===']($case)) {$b = self.$getEmotionTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("NT"['$===']($case)) {$b = self.$getNameTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("KT"['$===']($case)) {$b = self.$getKyoukaiTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else { - self.$debug("rollDiceCommand commandNOT matched -> command:", command); - return "";}; - if ($truthy(result['$empty?']())) { - return ""}; - text = "" + (tableName) + "(" + (number) + "):" + (result); - return text; - }, $Kamigakari_Korean_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getReimonCompensationTableResult', $Kamigakari_Korean_getReimonCompensationTableResult$3 = function $$getReimonCompensationTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "영문소비의 댓가표"; - table = ["사신화:물리법칙을 너무 초월한 대가로, 영혼이 왜곡되어, PC는 즉시 아라미타마로 변모한다. 아라미타마화한 PC는, 어딘가로 떠나간다.", "존재소멸:아라미타마화를 최후의 힘으로 억누른다. 하지만 그 결과, PC의 영혼은 불타버려, 이 세계에서 소멸한다. 그 PC는 [상태변화: 사망]이 되어, 시체도 남지 않는다.", "사망:영혼의 왜곡을 어떻게든 막지만, 영혼이 붕괴한다. PC는 [상태변화: 사망]이 되나 유체는 남는다.", "영혼반괴:영혼의 왜곡을 막아냈지만, 영혼 자체에 치명적인 부상을 입어, 전신에 장해가 남는다. 거기에 동반하여 영문도 소실해, 일반인으로 돌아간다.", "기억소멸:기적적으로, 영혼의 마모에 의한 신체적 악영향을 피한다. 시간을 두는 것으로 영문도 회복되나, 정신적인 영향을 받아, 모든 기억을 잃는다.", "영향없음:기적적으로, 영혼의 마모에 의한 악영향을 완전히 피하고, 또한 영문의 회복도 빠를 것으로 보인다. 육체나 정신 모두, 딱히 영향은 없다."]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $Kamigakari_Korean_getReimonCompensationTableResult$3.$$arity = 0); - - Opal.def(self, '$getEmotionTableResult', $Kamigakari_Korean_getEmotionTableResult$4 = function $$getEmotionTableResult() { - var self = this, tableName = nil, table = nil, isSwap = nil, number = nil, result = nil; - - - tableName = "감정표"; - table = [[11, "운명/그 캐릭터에게, 운명적, 또는 숙명적인 것을 느끼고 있다."], [12, "운명/그 캐릭터에게, 운명적, 또는 숙명적인 것을 느끼고 있다."], [13, "가족/그 캐릭터에게, 가족같은 친근감을 품고 있다."], [14, "가족/그 캐릭터에게, 가족같은 친근감을 품고 있다."], [15, "악연/그 캐릭터에게, 악연을 느끼고 있다."], [16, "악연/그 캐릭터에게, 악연을 느끼고 있다."], [21, "사제/그 캐릭터와는, 마치 사제지간의 감정을 느끼고 있다. 누가 제자고 누가 스승인지, 플레이어 끼리(또는 GM과)상담해 결정한다."], [22, "사제/그 캐릭터와는, 마치 사제지간의 감정을 느끼고 있다. 누가 제자고 누가 스승인지, 플레이어 끼리(또는 GM과)상담해 결정한다."], [23, "호적수/그 캐릭터를, 호적수라 여기고 있다."], [24, "호적수/그 캐릭터를, 호적수라 여기고 있다."], [25, "친근감/그 캐릭터에게, 친근감을 품고 있다."], [26, "친근감/그 캐릭터에게, 친근감을 품고 있다."], [31, "성의/그 캐릭터에게, 성실함을 느끼고 있다."], [32, "성의/그 캐릭터에게, 성실함을 느끼고 있다."], [33, "우정/그 캐릭터에게, 우정을 품고 있다."], [34, "우정/그 캐릭터에게, 우정을 품고 있다."], [35, "존경/그 캐릭터에게, 존경을 품고 있다."], [36, "존경/그 캐릭터에게, 존경을 품고 있다."], [41, "비호/그 캐릭터에게, 비호의 감정을 품고 있다. 누가 보호자고 누가 피보호자인지, 플레이어 끼리(또는 GM과)상담해 결정한다."], [42, "비호/그 캐릭터에게, 비호의 감정을 품고 있다. 누가 보호자고 누가 피보호자인지, 플레이어 끼리(또는 GM과)상담해 결정한다."], [43, "호감/그 캐릭터에게, 호감을 품고 있다."], [44, "호감/그 캐릭터에게, 호감을 품고 있다."], [45, "흥미/그 캐릭터에게, 흥미를 품고 있다."], [46, "흥미/그 캐릭터에게, 흥미를 품고 있다."], [51, "감명/그 캐릭터에게, 감명을 느끼고 있다."], [52, "감명/그 캐릭터에게, 감명을 느끼고 있다."], [53, "외경/그 캐릭터를 두려워하고 있다."], [54, "외경/그 캐릭터를 두려워하고 있다."], [55, "마음에 듬/그 캐릭터를 마음에 들어한다."], [56, "마음에 듬/그 캐릭터를 마음에 들어한다."], [61, "애정/그 캐릭터에게 애정, 또는 거기에 가까운 집착심을 품고 있다."], [62, "애정/그 캐릭터에게 애정, 또는 거기에 가까운 집착심을 품고 있다."], [63, "신뢰/그 캐릭터에게 신뢰를 느끼고 있다."], [64, "신뢰/그 캐릭터에게 신뢰를 느끼고 있다."], [65, "*PC의 임의/플레이어, 또는 GM이 설정한 임의의 감정을 품고 있다."], [66, "*PC의 임의/플레이어, 또는 GM이 설정한 임의의 감정을 품고 있다."]]; - isSwap = false; - number = self.$bcdice().$getD66(isSwap); - result = self.$get_table_by_number(number, table); - return [tableName, result, number]; - }, $Kamigakari_Korean_getEmotionTableResult$4.$$arity = 0); - - Opal.def(self, '$getNameTableResult', $Kamigakari_Korean_getNameTableResult$5 = function $$getNameTableResult() { - var self = this, tableName = nil, table = nil, isSwap = nil, number = nil, result = nil; - - - tableName = "전기 성씨・이름 결정표"; - table = [[11, "미츠루기(御剣) 리쿠/린"], [12, "시시우치(獅子内) 야마토/카에데"], [13, "하쿠긴(白銀) 하야토/사쿠라"], [14, "타케노우치(竹内) 마코토/하루카"], [15, "코다치(古太刀) 다이치/미사"], [16, "쿠가(空閑) 슌/마오"], [21, "오니가타(鬼形) 료/마이"], [22, "미칸나기(御巫) 타쿠미/나나미"], [23, "고마도우(護摩堂) 히토시/치히로"], [24, "류엔(龍円) 타쿠마/아카네"], [25, "카가미베(鏡部) 쿄우/아스카"], [26, "이누가미(犬神) 코우/시오리"], [31, "메이게츠인(明月院) 아오이/유이"], [32, "도우메키(百目鬼) 렌야/모에"], [33, "오소가미(怨神) 타츠야/아야카"], [34, "아라라기(蘭) 류노스케/아즈사"], [35, "타마키(珠輝) 아키라/히토미"], [36, "간류(眼龍) 케이/사오리"], [41, "텟포즈카(鉄砲塚) 마사토/사라"], [42, "오리가미(檻神) 나오야/야요이"], [43, "후지와라(不死原) 쥰/치아키"], [44, "쿠로우자(九朗座) 무사시/하루나"], [45, "츠치미카도(土御門) 쿄스케/스이"], [46, "이자요이(十六夜) 케이지/후타바"], [51, "텐포우린(転法輪) 히로/레나"], [52, "시교우(執行) 히비키/사유리"], [53, "호우리(祝) 료타로/히나"], [54, "코우소(神尊) 토모/시온"], [55, "아시야(芦屋) 타카유키/카스미"], [56, "나나샤(七社) 카즈키/후카"], [61, "키바(騎馬) 테츠야/시노"], [62, "토우마(当麻) 켄/사야"], [63, "키츠네즈카(狐塚) 호쿠토/마야"], [64, "텐진바야시(天神林) 소라/아키라"], [65, "메아라시(明嵐) 야쿠모/오토하"], [66, "쿠사카베(草壁) 다이고/아야"]]; - isSwap = false; - number = self.$bcdice().$getD66(isSwap); - result = self.$get_table_by_number(number, table); - return [tableName, result, number]; - }, $Kamigakari_Korean_getNameTableResult$5.$$arity = 0); - - Opal.def(self, '$getKyoukaiTableResult', $Kamigakari_Korean_getKyoukaiTableResult$6 = function $$getKyoukaiTableResult() { - var self = this, tableName = nil, table = nil, isSwap = nil, number = nil, result = nil; - - - tableName = "마경임계표"; - table = [[11, "시공의 비틀림\n현재 위치의 시공이 비틀려, PC전원은 즉시 [침입 에리어]로 돌아간다."], [12, "시공의 비틀림\n현재 위치의 시공이 비틀려, PC전원은 즉시 [침입 에리어]로 돌아간다."], [13, "강적등장\n갑자기, 〈재앙신〉화한 [모노노케]가 출현한다. GM은 PC의 [세계간섭LV]의 평균+3의 [LV]을 가진 임의의 [모노노케]를 1체 골라, 임의의 [탐색 에리어]에 배치. 거기서는 [우회]불가로 [전투]가 발생한다."], [14, "강적등장\n갑자기, 〈재앙신〉화한 [모노노케]가 출현한다. GM은 PC의 [세계간섭LV]의 평균+3의 [LV]을 가진 임의의 [모노노케]를 1체 골라, 임의의 [탐색 에리어]에 배치. 거기서는 [우회]불가로 [전투]가 발생한다."], [15, "그림자의 손\n장기로 형성된 무수한 손이, PC들을 붙잡으려고 한다. PC전원은 [효과종류: 마법공격/거리: 전투지대/대상: 전투지대/달성치: 20+PC의 [세계간섭LV]의 평균/마법 데미지: 20×PC의 [세계간섭LV]의 평균/저항[반감]]을 받는다."], [16, "그림자의 손\n장기로 형성된 무수한 손이, PC들을 붙잡으려고 한다. PC전원은 [효과종류: 마법공격/거리: 전투지대/대상: 전투지대/달성치: 20+PC의 [세계간섭LV]의 평균/마법 데미지: 20×PC의 [세계간섭LV]의 평균/저항[반감]]을 받는다."], [21, "무수한 마안\n공간 전체게 무시무시한 마안이 출현한다. PC전원은 [대휴식]할 때까지 [상태변화: 암흑·고통]이 된다."], [22, "무수한 마안\n공간 전체게 무시무시한 마안이 출현한다. PC전원은 [대휴식]할 때까지 [상태변화: 암흑·고통]이 된다."], [23, "공간붕괴\n갑자기, 마경의 공간이 붕괴한다. PC전원은 [효과종류: 물리공격/거리: 전투지대/대상: 전투지대/달성치: 30+PC의 [세계간섭LV]의 평균/물리 데미지: 30×PC의 [세계간섭LV]의 평균]을 받는다."], [24, "공간붕괴\n갑자기, 마경의 공간이 붕괴한다. PC전원은 [효과종류: 물리공격/거리: 전투지대/대상: 전투지대/달성치: 30+PC의 [세계간섭LV]의 평균/물리 데미지: 30×PC의 [세계간섭LV]의 평균]을 받는다."], [25, "방어구 부식\n이질적인 안개가 나타나, 방어구를 부식시킨다. PC전원은, [소지·장비]중인 임의의 [아이템: 방어구]를 1개 잃는다."], [26, "방어구 부식\n이질적인 안개가 나타나, 방어구를 부식시킨다. PC전원은, [소지·장비]중인 임의의 [아이템: 방어구]를 1개 잃는다."], [31, "소재소실\n주변에서 수상한 빛이 떨어져, 소지 중인 [소재]를 소실시킨다. PC 전원이 [소지]중인 [소재]가 전부 소멸한다."], [32, "소재소실\n주변에서 수상한 빛이 떨어져, 소지 중인 [소재]를 소실시킨다. PC 전원이 [소지]중인 [소재]가 전부 소멸한다."], [33, "없음\n딱히 아무 일도 일어나지 않는다."], [34, "없음\n딱히 아무 일도 일어나지 않는다."], [35, "모노노케 강습\n갑자기, 〈재앙신〉화한 [모노노케]가 출현해, PC들을 덮친다. GM은 PC의 [세계간섭LV]의 평균+2의 [LV]을 가진 임의의 [모노노케]를 2체 골라, PC의 앞에 출현시키고, 즉시 [전투]를 개시한다."], [36, "모노노케 강습\n갑자기, 〈재앙신〉화한 [모노노케]가 출현해, PC들을 덮친다. GM은 PC의 [세계간섭LV]의 평균+2의 [LV]을 가진 임의의 [모노노케]를 2체 골라, PC의 앞에 출현시키고, 즉시 [전투]를 개시한다."], [41, "휴식방해\nPC가 휴식하려고 할 때마다, 다양한 공간에서 촉수나 독충 등이 출현해 덮쳐든다. PC들은 이후, [마경토벌]이 종료될 때까지 [대휴식]을 할 수 없다."], [42, "휴식방해\nPC가 휴식하려고 할 때마다, 다양한 공간에서 촉수나 독충 등이 출현해 덮쳐든다. PC들은 이후, [마경토벌]이 종료될 때까지 [대휴식]을 할 수 없다."], [43, "용맥파괴\n영력이 폭주해 공간이 일그러져, [영력]이 어그러진다. PC전원은 즉시 [영력]을 모두 다시 굴린다."], [44, "용맥파괴\n영력이 폭주해 공간이 일그러져, [영력]이 어그러진다. PC전원은 즉시 [영력]을 모두 다시 굴린다."], [45, "고유시간정지\nPC들의 육체의 일부가 잿빛으로 변하고, 움직일 수 없게 된다. PC 전원은, [타이밍: 준비·방어·특수]에서 1개 골라, 이후 그 [타이밍]을 소비할 수 없게 된다."], [46, "고유시간정지\nPC들의 육체의 일부가 잿빛으로 변하고, 움직일 수 없게 된다. PC 전원은, [타이밍: 준비·방어·특수]에서 1개 골라, 이후 그 [타이밍]을 소비할 수 없게 된다."], [51, "용맥불순\n영력이 갑자기 고갈되어, [영력]의 순환에 악영향이 발생한다. PC전원은 이후, [마경토벌]이 종료될 때까지 [영력조작]을 할 수 없다."], [52, "용맥불순\n영력이 갑자기 고갈되어, [영력]의 순환에 악영향이 발생한다. PC전원은 이후, [마경토벌]이 종료될 때까지 [영력조작]을 할 수 없다."], [53, "술식봉인\n주변의 공기가 변모해, 악영향이 일어난다. PC전원은 이후, 취득한 《탤런트》중, 사용하는 [코스트]가 가장 큰 것 1개가 [마경토벌]종료까지 사용불능이 된다. [코스트: 없음]뿐일 경우, GM이 임의로 1개 결정한다."], [54, "술식봉인\n주변의 공기가 변모해, 악영향이 일어난다. PC전원은 이후, 취득한 《탤런트》중, 사용하는 [코스트]가 가장 큰 것 1개가 [마경토벌]종료까지 사용불능이 된다. [코스트: 없음]뿐일 경우, GM이 임의로 1개 결정한다."], [55, "장식품 소멸\n주변이 푸른 빛으로 감싸이고, 어째선지 PC들의 장식품이 사라진다. PC전원은, [소지·장비]중인 [아이템: 장식]을 모두 잃는다.。"], [56, "장식품 소멸\n주변이 푸른 빛으로 감싸이고, 어째선지 PC들의 장식품이 사라진다. PC전원은, [소지·장비]중인 [아이템: 장식]을 모두 잃는다."], [61, "우자의 황금 소실\n주변이 붉은 빛으로 감싸이고, 어째선지 PC들의 [G]가 사라진다. PC 전원은, [소지금]이 [반감]한다."], [62, "우자의 황금 소실\n주변이 붉은 빛으로 감싸이고, 어째선지 PC들의 [G]가 사라진다. PC 전원은, [소지금]이 [반감]한다."], [63, "GM의 임의\n이 표 중에서 GM이 효과를 1개 골라 발생시킨다."], [64, "GM의 임의\n이 표 중에서 GM이 효과를 1개 골라 발생시킨다."], [65, "임계중복\n[마경임계]가 2번 발생한다. GM은 이 표를 2번 굴려, 효과를 각각 적용할 수 있다. 다시 「임계중복」이 발생한 경우, [GM의 임의] 1번으로 취급한다."], [66, "임계중복\n[마경임계]가 2번 발생한다. GM은 이 표를 2번 굴려, 효과를 각각 적용할 수 있다. 다시 「임계중복」이 발생한 경우, [GM의 임의] 1번으로 취급한다."]]; - isSwap = false; - number = self.$bcdice().$getD66(isSwap); - result = self.$get_table_by_number(number, table); - return [tableName, result, number]; - }, $Kamigakari_Korean_getKyoukaiTableResult$6.$$arity = 0); - - Opal.def(self, '$getGetMaterialTableResult', $Kamigakari_Korean_getGetMaterialTableResult$7 = function $$getGetMaterialTableResult(rank) { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil, effect = nil, number2 = nil, price = nil; - - - tableName = "획득 소재 차트"; - table = ["진홍의 ", "까끌까끌한 ", "비취의 ", "예리한 ", "황금의 ", "말랑말랑한 ", "은색의 ", "뾰족한 ", "순백의 ", "딱딱한 ", "칠흑의 ", "빛나는 ", "매끄러운 ", "탁한 ", "덥수룩한 ", "사악한 ", "끈적이는 ", "성스러운 ", "작열의 ", "불꽃의 ", "빙결의 ", "얼음의 ", "뜨거운 ", "바람의 ", "차가운 ", "번개의 ", "흙의 ", "환상의 ", "뼈형태의 ", "봉인의 ", "이빨형태의 ", "비늘형태의 ", "돌형태의 ", "보석형태의 ", "모피형태의 ", "깃털형태의 "]; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - result = $rb_plus(result, "단편"); - $b = self.$getMaterialEffect(rank), $a = Opal.to_ary($b), (effect = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - number = "" + (number) + "," + (number2); - price = self.$getPrice(effect); - result = "" + (result) + "." + (effect); - if ($truthy(price['$nil?']())) { - } else { - result = $rb_plus(result, "" + ":" + (price)) - }; - return [tableName, result, number]; - }, $Kamigakari_Korean_getGetMaterialTableResult$7.$$arity = 1); - - Opal.def(self, '$getMaterialEffect', $Kamigakari_Korean_getMaterialEffect$8 = function $$getMaterialEffect(rank) { - var $a, $b, self = this, number = nil, result = nil, type = nil, number2 = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - result = ""; - type = ""; - if ($truthy($rb_lt(number, 6))) { - - $b = self.$getMaterialEffectNomal(rank), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - type = "자주 발견되는 소재"; - } else { - - $b = self.$getMaterialEffectRare(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - type = "드문 소재"; - }; - result = "" + (type) + ":" + (result); - number = "" + (number) + "," + (number2); - return [result, number]; - }, $Kamigakari_Korean_getMaterialEffect$8.$$arity = 1); - - Opal.def(self, '$getMaterialEffectNomal', $Kamigakari_Korean_getMaterialEffectNomal$9 = function $$getMaterialEffectNomal(rank) { - var $a, $b, self = this, table = nil, isSwap = nil, number = nil, result = nil, power = nil, number2 = nil; - - - table = [[13, "체력+n"], [16, "민첩+n"], [23, "지성+n"], [26, "정신+n"], [33, "행운+n"], [35, "물D+n"], [41, "마D+n"], [43, "행동+n"], [46, "생명+n×3"], [53, "장갑+n"], [56, "결계+n"], [63, "이동+n마스"], [66, "※PC의 임의"]]; - isSwap = false; - number = self.$bcdice().$getD66(isSwap); - result = self.$get_table_by_number(number, table); - self.$debug("getMaterialEffectNomal result", result); - if ($truthy(/\+n/['$==='](result))) { - - $b = self.$getMaterialEffectPower(rank), $a = Opal.to_ary($b), (power = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - result = result.$sub(/\+n/, "" + "+" + (power)); - number = "" + (number) + "," + (number2);}; - return [result, number]; - }, $Kamigakari_Korean_getMaterialEffectNomal$9.$$arity = 1); - - Opal.def(self, '$getMaterialEffectPower', $Kamigakari_Korean_getMaterialEffectPower$10 = function $$getMaterialEffectPower(rank) { - var $a, $b, self = this, table = nil, rankTable = nil, power = nil, number = nil; - - - table = [[4, [1, 1, 1, 2, 2, 3]], [8, [1, 1, 2, 2, 3, 3]], [9, [1, 2, 3, 3, 4, 5]]]; - if ($truthy($rb_gt(rank, 9))) { - rank = 9}; - rankTable = self.$get_table_by_number(rank, table); - $b = self.$get_table_by_1d6(rankTable), $a = Opal.to_ary($b), (power = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [power, number]; - }, $Kamigakari_Korean_getMaterialEffectPower$10.$$arity = 1); - - Opal.def(self, '$getMaterialEffectRare', $Kamigakari_Korean_getMaterialEffectRare$11 = function $$getMaterialEffectRare() { - var $a, $b, self = this, table = nil, number = nil, result = nil, attribute = nil, number2 = nil; - - - table = [[3, "**부여"], [5, "**반감"], [6, "※GM의 임의"]]; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), $b; - result = self.$get_table_by_number(number, table); - self.$debug("getMaterialEffectRare result", result); - if ($truthy(/\*\*/['$==='](result))) { - - $b = self.$getAttribute(), $a = Opal.to_ary($b), (attribute = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - result = result.$sub(/\*\*/, attribute.$to_s()); - number = "" + (number) + "," + (number2);}; - return [result, number]; - }, $Kamigakari_Korean_getMaterialEffectRare$11.$$arity = 0); - - Opal.def(self, '$getAttribute', $Kamigakari_Korean_getAttribute$12 = function $$getAttribute() { - var self = this, table = nil, isSwap = nil, number = nil, result = nil; - - - table = [[21, "[화염]"], [33, "[냉기]"], [43, "[전격]"], [53, "[풍압]"], [56, "[환각]"], [62, "[마독]"], [64, "[자력]"], [66, "[섬광]"]]; - isSwap = false; - number = self.$bcdice().$getD66(isSwap); - result = self.$get_table_by_number(number, table); - return [result, number]; - }, $Kamigakari_Korean_getAttribute$12.$$arity = 0); - return (Opal.def(self, '$getPrice', $Kamigakari_Korean_getPrice$13 = function $$getPrice(effect) { - var self = this, power = nil, $case = nil, table = nil, price = nil; - - - power = 0; - $case = effect; - if (/\+(\d+)/['$===']($case)) {power = $$($nesting, 'Regexp').$last_match(1).$to_i()} - else if (/부여/['$===']($case)) {power = 3} - else if (/반감/['$===']($case)) {power = 4} - else {power = 0}; - table = [nil, "500G(효과치:1)", "1000G(효과치:2)", "1500G(효과치:3)", "2000G(효과치:4)", "3000G(효과치:5)"]; - price = table['$[]'](power); - return price; - }, $Kamigakari_Korean_getPrice$13.$$arity = 1), nil) && 'getPrice'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/KanColle.js b/src/assets/dicebot/KanColle.js deleted file mode 100644 index 99f94e107..000000000 --- a/src/assets/dicebot/KanColle.js +++ /dev/null @@ -1,309 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$freeze', '$match', '$raise', '$to_i', '$[]', '$roll', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Table'); - - var $nesting = [self].concat($parent_nesting), $Table_initialize$1, $Table_roll$2; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $Table_initialize$1 = function $$initialize(name, type, items) { - var self = this, m = nil; - - - self.name = name; - self.items = items.$freeze(); - m = /(\d+)D(\d+)/i.$match(type); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "Unexpected table type: " + (type)) - }; - self.times = m['$[]'](1).$to_i(); - return (self.sides = m['$[]'](2).$to_i()); - }, $Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $Table_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, value = nil, index = nil; - - - $b = bcdice.$roll(self.times, self.sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(value, self.times); - return "" + (self.name) + "(" + (value) + ") > " + (self.items['$[]'](index)); - }, $Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$==', '$<=', '$>=', '$===', '$get_develop_table', '$get_develop_matome_table', '$get_weapon1_table', '$get_weapon2_table', '$get_weapon3_table', '$get_weapon4_table', '$get_kosei_table', '$get_bunya_table', '$get_kosei_haikei_table', '$get_kosei_miryoku_table', '$get_kosei_seikaku_table', '$get_kosei_syumi_table', '$get_kosei_koukai_table', '$get_kosei_sentou_table', '$roll_tables', '$get_table_by_1d6', '$roll', '$get_table_by_2d6', '$freeze', '$new', '$setPrefixes', '$+', '$keys']); - - self.$require("utils/table"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'KanColle'); - - var $nesting = [self].concat($parent_nesting), $KanColle_initialize$1, $KanColle_check_2D6$2, $KanColle_rollDiceCommand$3, $KanColle_get_develop_table$4, $KanColle_get_develop_matome_table$5, $KanColle_get_weapon1_table$6, $KanColle_get_weapon2_table$7, $KanColle_get_weapon3_table$8, $KanColle_get_weapon4_table$9, $KanColle_get_kosei_table$10, $KanColle_get_bunya_table$11, $KanColle_get_kosei_haikei_table$12, $KanColle_get_kosei_miryoku_table$13, $KanColle_get_kosei_seikaku_table$14, $KanColle_get_kosei_syumi_table$15, $KanColle_get_kosei_koukai_table$16, $KanColle_get_kosei_sentou_table$17; - - - Opal.const_set($nesting[0], 'ID', "KanColle"); - Opal.const_set($nesting[0], 'NAME', "艦これRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "かんこれRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "例) 2D6 : 単純に2D6した値を出します。\n" + "例) 2D6>=7 : 行為判定。2D6して目標値7以上出れば成功。\n" + "例) 2D6+2>=7 : 行為判定。2D6に修正+2をした上で目標値7以上になれば成功。\n" + "\n" + "2D6での行為判定時は1ゾロでファンブル、6ゾロでスペシャル扱いになります。\n" + "天龍ちゃんスペシャルは手動で判定してください。\n" + "\n" + "・各種表\n" + " ・感情表 ET/アクシデント表 ACT\n" + " ・日常イベント表 EVNT/交流イベント表 EVKT/遊びイベント表 EVAT\n" + "  演習イベント表 EVET/遠征イベント表 EVENT/作戦イベント表 EVST\n" + " ・ほのぼのイベント表 ETHT/航海イベント表 ETVT 外出イベント表 ETGT\n" + "  激戦イベント表 ETBT/任務イベント表 ETMT/恐怖イベント表 ETFT/侵攻効果表 ETIT\n" + " ・大規模部隊表 LSFT/艦隊敗北表 LFDT/艦隊勝利表 LFVT\n" + " ・開発表 DVT/開発表(一括)DVTM\n" + "   装備1種表 WP1T/装備2種表 WP2T/装備3種表 WP3T/装備4種表 WP4T\n" + " ・アイテム表 ITT/目標表 MHT/戦果表 SNT/特殊戦果表 SPSNT\n" + " ・ランダム個性選択:一括 KTM/分野 BT\n" + "   背景 KHT/魅力 KMT/性格 KST/趣味 KSYT/航海 KKT/戦闘 KSNT\n" + " ・戦場表 SNZ 暴走表/RNT\n" + " ・特殊開発表 WPMC (燃料6/弾薬3/鋼材6/ボーキ3)\n" + " ・新・特殊開発表 WPMCN\n" + " ・艦載機関開発表 WPFA (燃料3/弾薬6/鋼材3/ボーキ6)\n" + " ・砲類開発表 WPCN (燃料3/弾薬6/鋼材6/ボーキ3)\n" + " ・敵深海棲艦の装備決定 BT2~BT12\n" + "・D66ダイス(D66S相当=低い方が10の桁になる)\n"); - - Opal.def(self, '$initialize', $KanColle_initialize$1 = function $$initialize() { - var $iter = $KanColle_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $KanColle_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $KanColle_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 3; - return (self.d66Type = 2); - }, $KanColle_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $KanColle_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル(判定失敗。アクシデント表を自分のPCに適用)" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > スペシャル(判定成功。【行動力】が1D6点回復)" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $KanColle_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $KanColle_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var $a, $b, self = this, output = nil, type = nil, total_n = nil, $case = nil; - - - output = "1"; - type = ""; - total_n = ""; - $case = command; - if ("DVT"['$===']($case)) { - type = "開発表"; - $b = self.$get_develop_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("DVTM"['$===']($case)) { - type = "開発表(一括)"; - $b = self.$get_develop_matome_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("WP1T"['$===']($case)) { - type = "装備1種表"; - $b = self.$get_weapon1_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("WP2T"['$===']($case)) { - type = "装備2種表"; - $b = self.$get_weapon2_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("WP3T"['$===']($case)) { - type = "装備3種表"; - $b = self.$get_weapon3_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("WP4T"['$===']($case)) { - type = "装備4種表"; - $b = self.$get_weapon4_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("KTM"['$===']($case)) { - type = "個性:一括"; - $b = self.$get_kosei_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BT"['$===']($case)) { - type = "個性:分野表"; - $b = self.$get_bunya_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("KHT"['$===']($case)) { - type = "個性:背景表"; - $b = self.$get_kosei_haikei_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("KMT"['$===']($case)) { - type = "個性:魅力表"; - $b = self.$get_kosei_miryoku_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("KST"['$===']($case)) { - type = "個性:性格表"; - $b = self.$get_kosei_seikaku_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("KSYT"['$===']($case)) { - type = "個性:趣味表"; - $b = self.$get_kosei_syumi_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("KKT"['$===']($case)) { - type = "個性:航海表"; - $b = self.$get_kosei_koukai_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("KSNT"['$===']($case)) { - type = "個性:戦闘表"; - $b = self.$get_kosei_sentou_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else {return self.$roll_tables(command, $$($nesting, 'TABLES'))}; - return "" + (type) + "(" + (total_n) + ") > " + (output); - }, $KanColle_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$get_develop_table', $KanColle_get_develop_table$4 = function $$get_develop_table() { - var self = this, table = nil; - - - table = ["装備1種表(WP1T)", "装備1種表(WP1T)", "装備2種表(WP2T)", "装備2種表(WP2T)", "装備3種表(WP3T)", "装備4種表(WP4T)"]; - return self.$get_table_by_1d6(table); - }, $KanColle_get_develop_table$4.$$arity = 0); - - Opal.def(self, '$get_develop_matome_table', $KanColle_get_develop_matome_table$5 = function $$get_develop_matome_table() { - var $a, $b, self = this, output1 = nil, output2 = nil, total_n2 = nil, dice = nil, $case = nil, result = nil, number = nil; - - - output1 = ""; - output2 = ""; - total_n2 = ""; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - $case = dice; - if ((1)['$===']($case)) { - output1 = "装備1種表"; - $b = self.$get_weapon1_table(), $a = Opal.to_ary($b), (output2 = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b;} - else if ((2)['$===']($case)) { - output1 = "装備1種表"; - $b = self.$get_weapon1_table(), $a = Opal.to_ary($b), (output2 = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b;} - else if ((3)['$===']($case)) { - output1 = "装備2種表"; - $b = self.$get_weapon2_table(), $a = Opal.to_ary($b), (output2 = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b;} - else if ((4)['$===']($case)) { - output1 = "装備2種表"; - $b = self.$get_weapon2_table(), $a = Opal.to_ary($b), (output2 = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b;} - else if ((5)['$===']($case)) { - output1 = "装備3種表"; - $b = self.$get_weapon3_table(), $a = Opal.to_ary($b), (output2 = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b;} - else if ((6)['$===']($case)) { - output1 = "装備4種表"; - $b = self.$get_weapon4_table(), $a = Opal.to_ary($b), (output2 = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b;}; - result = "" + (output1) + ":" + (output2); - number = "" + (dice) + "," + (total_n2); - return [result, number]; - }, $KanColle_get_develop_matome_table$5.$$arity = 0); - - Opal.def(self, '$get_weapon1_table', $KanColle_get_weapon1_table$6 = function $$get_weapon1_table() { - var self = this, table = nil; - - - table = ["小口径主砲(P249)", "10cm連装高角砲(P249)", "中口径主砲(P249)", "15.2cm連装砲(P249)", "20.3cm連装砲(P249)", "魚雷(P252)"]; - return self.$get_table_by_1d6(table); - }, $KanColle_get_weapon1_table$6.$$arity = 0); - - Opal.def(self, '$get_weapon2_table', $KanColle_get_weapon2_table$7 = function $$get_weapon2_table() { - var self = this, table = nil; - - - table = ["副砲(P250)", "8cm高角砲(P250)", "大口径主砲(P249)", "41cm連装砲(P250)", "46cm三連装砲(P250)", "機銃(P252)"]; - return self.$get_table_by_1d6(table); - }, $KanColle_get_weapon2_table$7.$$arity = 0); - - Opal.def(self, '$get_weapon3_table', $KanColle_get_weapon3_table$8 = function $$get_weapon3_table() { - var self = this, table = nil; - - - table = ["艦上爆撃機(P250)", "艦上攻撃機(P251)", "艦上戦闘機(P251)", "偵察機(P251)", "電探(P252)", "25mm連装機銃(P252)"]; - return self.$get_table_by_1d6(table); - }, $KanColle_get_weapon3_table$8.$$arity = 0); - - Opal.def(self, '$get_weapon4_table', $KanColle_get_weapon4_table$9 = function $$get_weapon4_table() { - var self = this, table = nil; - - - table = ["彗星(P250)", "天山(P251)", "零式艦戦52型(P251)", "彩雲(P251)", "61cm四連装(酸素)魚雷(P252)", "改良型艦本式タービン(P252)"]; - return self.$get_table_by_1d6(table); - }, $KanColle_get_weapon4_table$9.$$arity = 0); - - Opal.def(self, '$get_kosei_table', $KanColle_get_kosei_table$10 = function $$get_kosei_table() { - var $a, $b, self = this, output1 = nil, output2 = nil, total_n2 = nil, total_n1 = nil, $case = nil, result = nil, number = nil; - - - output1 = ""; - output2 = ""; - total_n2 = ""; - $b = self.$get_bunya_table(), $a = Opal.to_ary($b), (output1 = ($a[0] == null ? nil : $a[0])), (total_n1 = ($a[1] == null ? nil : $a[1])), $b; - $case = total_n1; - if ((1)['$===']($case)) {$b = self.$get_kosei_haikei_table(), $a = Opal.to_ary($b), (output2 = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b} - else if ((2)['$===']($case)) {$b = self.$get_kosei_miryoku_table(), $a = Opal.to_ary($b), (output2 = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b} - else if ((3)['$===']($case)) {$b = self.$get_kosei_seikaku_table(), $a = Opal.to_ary($b), (output2 = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b} - else if ((4)['$===']($case)) {$b = self.$get_kosei_syumi_table(), $a = Opal.to_ary($b), (output2 = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b} - else if ((5)['$===']($case)) {$b = self.$get_kosei_koukai_table(), $a = Opal.to_ary($b), (output2 = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b} - else if ((6)['$===']($case)) {$b = self.$get_kosei_sentou_table(), $a = Opal.to_ary($b), (output2 = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b}; - result = "" + "《" + (output2) + "/" + (output1) + (total_n2) + "》"; - number = "" + (total_n1) + "," + (total_n2); - return [result, number]; - }, $KanColle_get_kosei_table$10.$$arity = 0); - - Opal.def(self, '$get_bunya_table', $KanColle_get_bunya_table$11 = function $$get_bunya_table() { - var self = this, table = nil; - - - table = ["背景", "魅力", "性格", "趣味", "航海", "戦闘"]; - return self.$get_table_by_1d6(table); - }, $KanColle_get_bunya_table$11.$$arity = 0); - - Opal.def(self, '$get_kosei_haikei_table', $KanColle_get_kosei_haikei_table$12 = function $$get_kosei_haikei_table() { - var self = this, table = nil; - - - table = ["人脈", "名声", "暗い過去", "古風", "口ぐせ", "幸運", "アイドル", "秘密兵器", "お嬢様", "スタイル", "外国暮らし"]; - return self.$get_table_by_2d6(table); - }, $KanColle_get_kosei_haikei_table$12.$$arity = 0); - - Opal.def(self, '$get_kosei_miryoku_table', $KanColle_get_kosei_miryoku_table$13 = function $$get_kosei_miryoku_table() { - var self = this, table = nil; - - - table = ["素直", "クール", "優しい", "おしとやか", "けなげ", "笑顔", "ばか", "さわやか", "面白い", "えっち", "派手"]; - return self.$get_table_by_2d6(table); - }, $KanColle_get_kosei_miryoku_table$13.$$arity = 0); - - Opal.def(self, '$get_kosei_seikaku_table', $KanColle_get_kosei_seikaku_table$14 = function $$get_kosei_seikaku_table() { - var self = this, table = nil; - - - table = ["不思議", "おおらか", "面倒見", "マジメ", "負けず嫌い", "元気", "楽観的", "丁寧", "いじわる", "自由奔放", "大胆"]; - return self.$get_table_by_2d6(table); - }, $KanColle_get_kosei_seikaku_table$14.$$arity = 0); - - Opal.def(self, '$get_kosei_syumi_table', $KanColle_get_kosei_syumi_table$15 = function $$get_kosei_syumi_table() { - var self = this, table = nil; - - - table = ["寝る", "空想", "生き物", "読書", "食べ物", "おしゃべり", "買い物", "芸能", "おしゃれ", "入浴", "恋愛"]; - return self.$get_table_by_2d6(table); - }, $KanColle_get_kosei_syumi_table$15.$$arity = 0); - - Opal.def(self, '$get_kosei_koukai_table', $KanColle_get_kosei_koukai_table$16 = function $$get_kosei_koukai_table() { - var self = this, table = nil; - - - table = ["暗号", "通信", "索敵", "規律", "補給", "待機", "機動", "海図", "指揮", "衛生", "整備"]; - return self.$get_table_by_2d6(table); - }, $KanColle_get_kosei_koukai_table$16.$$arity = 0); - - Opal.def(self, '$get_kosei_sentou_table', $KanColle_get_kosei_sentou_table$17 = function $$get_kosei_sentou_table() { - var self = this, table = nil; - - - table = ["電子戦", "航空打撃戦", "航空戦", "対空戦闘", "突撃", "砲撃", "退却", "支援", "魚雷", "対潜戦闘", "夜戦"]; - return self.$get_table_by_2d6(table); - }, $KanColle_get_kosei_sentou_table$17.$$arity = 0); - Opal.const_set($nesting[0], 'TABLES', $hash2(["ET", "ACT", "EVNT", "EVKT", "EVAT", "EVET", "EVENT", "EVST", "ETHT", "ETVT", "ETGT", "ETBT", "ETMT", "ETFT", "BT10", "BT11", "BT12", "BT2", "BT3", "BT4", "BT5", "BT6", "BT7", "BT8", "BT9", "ETIT", "LFDT", "LFVT", "LSFT", "WPCN", "WPFA", "WPMC", "WPMCN", "ITT", "MHT", "SNT", "SPSNT", "SNZ", "RNT"], {"ET": $$($nesting, 'Table').$new("感情表", "1D6", ["かわいい(プラス)/むかつく(マイナス)", "すごい(プラス)/ざんねん(マイナス)", "たのしい(プラス)/こわい(マイナス)", "かっこいい(プラス)/しんぱい(マイナス)", "いとしい(プラス)/かまってほしい(マイナス)", "だいすき(プラス)/だいっきらい(マイナス)"]), "ACT": $$($nesting, 'Table').$new("アクシデント表", "1D6", ["よかったぁ。何もなし。", "意外な手応え。その判定に使った個性の属性(【長所】と【弱点】)が反対になる。自分が判定を行うとき以外はこの効果は無視する。", "えーん。大失態。このキャラクターに対して【感情値】を持っているキャラクター全員の声援欄にチェックが入る。", "奇妙な猫がまとわりつく。サイクルの終了時、もしくは、艦隊戦の終了時まで、自分の行う行為判定にマイナス1の修正がつく(この効果は、マイナス2まで累積する)。", "いててて。損傷が一つ発生する。もしも艦隊戦中なら、自分と同じ航行序列にいる味方艦にも損傷が一つ発生する。", "ううう。やりすぎちゃった!自分の【行動力】が1D6点減少する。"]), "EVNT": $$($nesting, 'Table').$new("日常イベント表", "2D6", ["何もない日々:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は、《待機/航海7》で判定。(着任p220)", "ティータイム:《外国暮らし/背景12》で判定。(着任p220)", "釣り:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《おおらか/性格3》で判定。(着任p220)", "お昼寝:《寝る/趣味2》で判定。(着任p220)", "綺麗におそうじ!:《衛生/航海11》で判定。(着任p220)", "海軍カレー:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《食べ物/趣味6》で判定。(着任p220)", "銀蝿/ギンバイ:《規律/航海5》で判定。(着任p220)", "日々の訓練:《素直/魅力2》で判定。(着任p220)", "取材:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《名声/背景3》で判定。(着任p220)", "海水浴:《突撃/戦闘6》で判定。(着任p220)", "マイブーム:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《口ぐせ/背景6》で判定。(着任p220)"]), "EVKT": $$($nesting, 'Table').$new("交流イベント表", "2D6", ["一触即発!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《笑顔/魅力7》で判定。(着任p221)", "手取り足取り:自分以外の好きなPC1人を選んで、《えっち/魅力11》で判定。(着任p221)", "恋は戦争:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《恋愛/趣味12》で判定。(着任p221)", "マッサージ:自分以外の好きなPC1人を選んで、《けなげ/魅力6》で判定。(着任p221)", "裸のつきあい:《入浴/趣味11》で判定。(着任p221)", "深夜のガールズトーク:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《おしゃべり/趣味7》で判定。(着任p221)", "いいまちがえ:《ばか/魅力8》で判定。(着任p221)", "小言百より慈愛の一語:自分以外の好きなPC1人を選んで、《面倒見/性格4》で判定。(着任p221)", "差し入れ:自分以外の好きなPC1人を選んで、提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《優しい/魅力4》で判定。(着任p221)", "お手紙:自分以外の好きなPC1人を選んで、《古風/背景5》で判定。(着任p221)", "昔語り:自分以外の好きなPC1人を選んで、提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《暗い過去/背景4》で判定。(着任p221)"]), "EVAT": $$($nesting, 'Table').$new("遊びイベント表", "2D6", ["遊びのつもりが……:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《さわやか/魅力9》で判定。(着任p222)", "新しい遊びの開発:《空想/趣味3》で判定。(着任p222)", "宴会:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《元気/性格7》で判定。(着任p222)", "街をぶらつく:《面白い/魅力10》で判定。(着任p222)", "ガールズコーデ:《おしゃれ/趣味10》で判定。(着任p222)", "○○大会開催!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《大胆/性格12》で判定。(着任p222)", "チェス勝負:自分以外の好きなPC1人を選んで、《クール/魅力3》で判定。(着任p222)", "熱唱カラオケ大会:《芸能/趣味9》で判定。(着任p222)", "アイドルコンサート:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《アイドル/背景8》で判定。(着任p222)", "スタイル自慢!:《スタイル/背景11》で判定。(着任p222)", "ちゃんと面倒みるから!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《生き物/趣味4》で判定。(着任p222)"]), "EVET": $$($nesting, 'Table').$new("演習イベント表", "2D6", ["大げんか!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《負けず嫌い/性格6》で判定。(着任p223)", "雷撃演習:《魚雷/戦闘10》で判定。(着任p223)", "座学の講義:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《マジメ/性格5》で判定。(着任p223)", "速力演習:《機動/航海8》で判定。(着任p223)", "救援演習:《支援/戦闘9》で判定。シーンプレイヤーのPCは、経験点を10点獲得する。残念:PC全員の【行動力】が1D6点減少する。(着任p223)", "砲撃演習:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《砲撃/戦闘7》で判定。(着任p223)", "艦隊戦演習:《派手/魅力12》で判定。(着任p223)", "整備演習:《整備/航海12》で判定。(着任p223)", "夜戦演習:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《夜戦/戦闘12》で判定。(着任p223)", "開発演習:《秘密兵器/背景9》で判定。(着任p223)", "防空射撃演習:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《対空戦闘/戦闘5》で判定。(着任p223)"]), "EVENT": $$($nesting, 'Table').$new("遠征イベント表", "2D6", ["謎の深海棲艦:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《退却/戦闘8》で判定。(着任p224)", "資源輸送任務:《買い物/趣味8》で判定。(着任p224)", "強行偵察任務:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《索敵/航海4》で判定。(着任p224)", "航空機輸送作戦:《航空戦/戦闘4》で判定。(着任p224)", "タンカー護衛任務:《丁寧/性格9》で判定。(着任p224)", "海上護衛任務:提督が選んだ(キーワード)に対応した指定能力で判定。思いつかない場合は《不思議/性格2》で判定。(着任p224)", "観艦式:《おしとやか/魅力5》で判定。(着任p224)", "ボーキサイト輸送任務:《補給/航海6》で判定。(着任p224)", "社交界デビュー?:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《お嬢様/背景10》で判定。(着任p224)", "対潜警戒任務:《対潜戦闘/戦闘11》で判定。(着任p224)", "大規模遠征作戦、発令!:提督の選んだ(キーワード)に対応した指定能力値で判定。思いつかな場合は《指揮/航海10》で判定。(着任p224)"]), "EVST": $$($nesting, 'Table').$new("作戦イベント表", "2D6", ["電子の目:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《電子戦/戦闘2》で判定。(着任p225)", "直掩部隊:《航空戦/戦闘4》で判定。(着任p225)", "噂によれば:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《通信/航海3》で判定。(着任p225)", "資料室にて:《海図/航海9》で判定。(着任p225)", "守護天使:《幸運/背景7》で判定。(着任p225)", "作戦会議!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《自由奔放/性格11》で判定。(着任p225)", "暗号解読:《暗号/航海2》で判定。(着任p225)", "一か八か?:《楽観的/性格8》で判定。(着任p225)", "特務機関との邂逅:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《人脈/背景2》で判定。(着任p225)", "クイーンズ・ギャンビット:《いじわる/性格10》で判定。(着任p225)", "知彼知己者、百戦不殆:《読書/趣味5》で判定。(着任p225)"]), "ETHT": $$($nesting, 'Table').$new("ほのぼのイベント表", "2D6", ["模様替え:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《派手/魅力12》で判定。(建造弐p134)", "門限破り:《夜戦/戦闘12》で判定。(建造弐p134)", "ぼやき大会:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《いじわる/性格10》で判定。(建造弐p134)", "もしも……:《自由奔放/性格11》で判定。(建造弐p134)", "退屈な会議:《暗号/航海2》で判定。(建造弐p134)", "気の合う趣味:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《面白い/魅力10》で判定。(建造弐p134)", "身だしなみ:《さわやか/魅力9》で判定。(建造弐p134)", "ダイエット:《スタイル/背景11》で判定。(建造弐p134)", "通信販売:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《待機/背景2》で判定。(建造弐p134)", "気になる視線:《えっち/魅力11》で判定。(建造弐p134)", "思い立ったが吉日:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《恋愛/趣味12》で判定。(建造弐p134)"]), "ETVT": $$($nesting, 'Table').$new("航海イベント表", "2D6", ["厳しくいくぞ:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《規律/航海5》で判定。(建造弐p135)", "密航者:《笑顔/魅力7》で判定。(建造弐p135)", "不審の目:《外国暮らし/背景12》で判定。(建造弐p135)", "危険海域:《海図/航海9》で判定。(建造弐p135)", "波間の影:《砲撃/戦闘7》で判定。(建造弐p135)", "ホームシック:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《支援/戦闘9》で判定。(建造弐p135)", "追跡者:《対潜戦闘/戦闘11》で判定。(建造弐p135)", "大嵐:《機動/航海8》で判定。(建造弐p135)", "うち捨てられた基地:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《読書/趣味5》で判定。(建造弐p135)", "ネズミ上陸:《衛生/航海11》で判定。(建造弐p135)", "味の探求:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《読書/趣味5》で判定。(建造弐p135)"]), "ETGT": $$($nesting, 'Table').$new("外出イベント表", "2D6", ["ノブレス・オブリージュ:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《お嬢様/背景10》で判定。(建造弐p136)", "サイン会:《名声/背景3》で判定。(建造弐p136)", "蚤の市:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《古風/背景5》で判定。(建造弐p136)", "追っかけ:《退却/戦闘8》で判定。(建造弐p136)", "走り込み:《航空戦/戦闘4》で判定。(建造弐p136)", "外食:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《索敵/航海4》で判定。(建造弐p136)", "迷子:《面倒見/性格4》で判定。(建造弐p136)", "街頭モデル:《おしゃれ/趣味10》で判定。(建造弐p136)", "暴れ○○だ!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《生き物/趣味4》で判定。(建造弐p136)", "臨時講師:《おしゃべり/性格10》で判定。(建造弐p136)", "映画撮影:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《芸能/趣味9》で判定。(建造弐p136)"]), "ETBT": $$($nesting, 'Table').$new("激戦イベント表", "2D6", ["分裂の危機:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《指揮/航海10》で判定。(建造弐p137)", "脱走:《通信/航海3》で判定。(建造弐p137)", "勇気の呪文:《口ぐせ/背景6》で判定。(建造弐p137)", "混乱:《整備/航海12》で判定。(建造弐p137)", "不意の遭遇:《魚雷/戦闘10》で判定。(建造弐p137)", "敵の襲撃:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《大胆/性格12》で判定。(建造弐p137)", "対空迎撃戦:《対空戦闘/戦闘5》で判定。(建造弐p137)", "傷自慢:《元気/性格7》で判定。(建造弐p137)", "怖がらないで:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《優しい/魅力4》で判定。(建造弐p137)", "生き延びろ:《負けず嫌い/性格10》で判定。(建造弐p137)", "極限の集中:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《ばか/魅力8》で判定。(建造弐p137)"]), "ETMT": $$($nesting, 'Table').$new("任務イベント表", "2D6", ["視察:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《面倒見/魅力12》で判定。(建造弐p138)", "酒保祭り:《補給/航海6》で判定。(建造弐p138)", "アイドルユニット結成:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《アイドル/背景8》で判定。(建造弐p138)", "お風呂場大改造:《入浴/趣味11》で判定。(建造弐p138)", "現場の融通:《人脈/背景2》で判定。(建造弐p138)", "緊急空輸:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《航空戦/戦闘4》で判定。(建造弐p138)", "資源の再利用:《マジメ/性格5》で判定。(建造弐p138)", "物欲:《買い物/趣味8》で判定。(建造弐p138)", "魔改造:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《秘密兵器/背景9》で判定。(建造弐p138)", "ちゃんと伝えたってば!:《クール/魅力3》で判定。(建造弐p138)", "ストライキ:《おおらか/性格3》で判定。(建造弐p138)"]), "ETFT": $$($nesting, 'Table').$new("恐怖イベント表", "2D6", ["未知の怪物:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《突撃/戦闘6》で判定。(建造弐p139)", "ドッペルゲンガー:《不思議/性格2》で判定。(建造弐p139)", "悪夢:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《寝る/趣味2》で判定。(建造弐p139)", "イマジナリーフレンド:《空想/趣味3》で判定。(建造弐p139)", "幽霊船:《電子戦/戦闘2》で判定。(建造弐p139)", "謎の予言:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《楽観的/性格8》で判定。(建造弐p139)", "黒猫:《幸運/背景7》で判定。(建造弐p139)", "サルベージ:《丁寧/性格9》で判定。(建造弐p139)", "フラッシュバック:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《暗い過去/背景4》で判定。(建造弐p139)", "深海の呼び声:《素直/魅力2》で判定。(建造弐p139)", "死者の声:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《けなげ/魅力6》で判定。(建造弐p139)"]), "BT10": $$($nesting, 'Table').$new("指定個性⑩", "1D6", ["1-10 《お嬢様》", "2-10 《面白い》", "3-10 《いじわる》", "4-10 《おしゃれ》", "5-10 《指揮》", "6-10 《魚雷》"]), "BT11": $$($nesting, 'Table').$new("指定個性⑪", "1D6", ["1-11 《スタイル》", "2-11 《えっち》", "3-11 《自由奔放》", "4-11 《入浴》", "5-11 《衛生》", "6-11 《対潜戦闘》"]), "BT12": $$($nesting, 'Table').$new("指定個性⑫", "1D6", ["1-12 《外国暮らし》", "2-12 《派手》", "3-12 《大胆》", "4-12 《恋愛》", "5-12 《整備》", "6-12 《夜戦》"]), "BT2": $$($nesting, 'Table').$new("指定個性②", "1D6", ["1-2 《人脈》", "2-2 《素直》", "3-2 《不思議》", "4-2 《寝る》", "5-2 《暗号》", "6-2 《電子戦》"]), "BT3": $$($nesting, 'Table').$new("指定個性③", "1D6", ["1-3 《名声》", "2-3 《クール》", "3-3 《おおらか》", "4-3 《空想》", "5-3 《通信》", "6-3 《航空打撃戦》"]), "BT4": $$($nesting, 'Table').$new("指定個性④", "1D6", ["1-4 《暗い過去》", "2-4 《優しい》", "3-4 《面倒見》", "4-4 《生き物》", "5-4 《索敵》", "6-4 《航空戦》"]), "BT5": $$($nesting, 'Table').$new("指定個性⑤", "1D6", ["1-5 《古風》", "2-5 《おしとやか》", "3-5 《マジメ》", "4-5 《読書》", "5-5 《規律》", "6-5 《対空戦闘》"]), "BT6": $$($nesting, 'Table').$new("指定個性⑥", "1D6", ["1-6 《口ぐせ》", "2-6 《けなげ》", "3-6 《負けず嫌い》", "4-6 《食べ物》", "5-6 《補給》", "6-6 《突撃》"]), "BT7": $$($nesting, 'Table').$new("指定個性⑦", "1D6", ["1-7 《幸運》", "2-7 《笑顔》", "3-7 《元気》", "4-7 《おしゃべり》", "5-7 《待機》", "6-7 《砲撃》"]), "BT8": $$($nesting, 'Table').$new("指定個性⑧", "1D6", ["1-8 《アイドル》", "2-8 《ばか》", "3-8 《楽観的》", "4-8 《買い物》", "5-8 《機動》", "6-8 《退却》"]), "BT9": $$($nesting, 'Table').$new("指定個性⑨", "1D6", ["1-9 《秘密兵器》", "2-9 《さわやか》", "3-9 《丁寧》", "4-9 《芸能》", "5-9 《海図》", "6-9 《支援》"]), "ETIT": $$($nesting, 'Table').$new("侵攻効果表", "2D6", ["援軍\n深海棲艦は徐々に力をつけ、大艦隊へとせいちょうしつつある。決戦フェイズの深海棲艦側の艦隊に、駆逐ハ級(『着任ノ書p258』)が一人追加される。", "海域汚染\n特定の海域が深海棲艦の住みやすい環境になる。このセッションの艦隊戦のの各ラウンドの開始時に、深海棲艦の艦隊は誰か一人だけ【行動力】を1D6点減少できるようになる。【行動力】を消費すると、その戦場を好きなものに変更できる。", "略奪\n大勢の物資や人々を奪い、連れ去られる。鎮守府の資材がすべて1D6個失われる。", "象徴破壊\n人類に歴史的建造物や貴重な遺産、世界的な観光名所が破壊される。PC全員は【行動力】を1D6点減少する。", "襲撃\n深海棲艦の侵攻によって、鎮守府の周辺に住む人たちに大きな被害が出る。PC全員は暴走判定を行うこと。", "通商破壊\n深海棲艦の侵攻によって、通商ルートが破壊される。そのセッションの間、資材を獲得する効果が発生したとき、その資材の数がいずれも一つずつ減少する。", "謎のキリ\n謎の霧が海域を覆う。このセッションの艦隊戦中、深海棲艦はランドの開始時に、【行動力】を1D6点消費できるようになる。そのラウンドの間、消費した【行動力】の半分の値(切り捨て。0〜3点の値になる)だけ、深海棲艦全員は、艦隊戦で受けるダメージが軽減できる。この効果は累積するが、この効果で軽減できるダメージの上限は3点である。", "陸地浸食\n陸地を浸食し、海に変える。この事態に鎮守府への非難が高まる。そのセッションの間、PC全員はあらゆる判定にマイナス1の修正がつく。この侵攻以降、行動判定を行うPCは、判定直前に自分の【行動力】を1点消費するたび、進行による修正をすべて打ち消すことができる。", "新型改造\n深海棲艦は自らを強化しているようだ。そのセッションの決戦フェイズに登場する深海棲艦の中から一人を選ぶ。その深海棲艦をeliteのクラスを付加する。その深海棲艦がすでにeliteならflagshipに、flagshipなら改にすることもできる。", "艦娘研究\n艦娘が拿捕され、鹵獲される。一体何を企んでいるのか……?提督は、好きなNPCの艦娘を一人選ぶ。深海棲艦の一人に、その艦娘の持つアビリティ一つを習得させることができる。", "基地建設\n深海棲艦は自分たちの基地を建造した。そのセッションの決戦フェイズで、深海棲艦の旗艦は、開幕雷撃戦と雷撃戦でダメージを受けなくなる。"]), "LFDT": $$($nesting, 'Table').$new("艦隊敗北表", "1D6", ["敵の支援砲撃。ランダムなPC一人に損傷を一つ与える。", "敵の罠。ランダムなPC一人に「アクシデント表」を一回適用する。", "追い詰められる。戦場が「T字戦不利」になる。", "本隊への合流。「敵部隊のサポート」発生。", "盟友艦行方不明(MIA)。敵部隊の旗艦が決戦フェイズ中、対応する盟友艦の固有、または戦術アビリティをいずれか一つを修得する。", "盟友艦轟沈。盟友艦は失われ「暴走表」を一回振り、暴走する。"]), "LFVT": $$($nesting, 'Table').$new("艦隊勝利表", "1D6", ["支援砲撃。敵艦の中からランダムな一人に損傷を一つ与える。", "士気高揚。この表を振ったPCの【命中力】が1点上昇する。", "士気高揚。この表を振ったPCの【火力】が1点上昇する。", "士気高揚。この表を振ったPCの【回避力】が1点上昇する。", "士気高揚。この表を振ったPCの【装甲力】が1点上昇する。", "絆が深まる。その盟友艦からのPCへの【感情値】が1点上昇する。"]), "LSFT": $$($nesting, 'Table').$new("大規模部隊表", "1D6", ["水上打撃部隊 「脅威力:10」", "空母機動部隊 「脅威力:9」", "水雷戦隊    「脅威力:8」", "潜水艦部隊   「脅威力:7」", "輸送部隊 「脅威力:6」", "主力部隊 「脅威力:12」"]), "WPCN": $$($nesting, 'Table').$new("砲開発表(燃料3/弾薬6/鋼材6/ボーキ3)", "4D6", ["開発失敗!(資材だけ失う)", "開発失敗!(資材だけ失う)", "三式弾(建造壱p169)", "25mm連装機銃(着任p252)", "41cm連装砲(着任p250)", "8cm高角砲(着任p250)", "15.2cm連装砲(着任p249)", "魚雷(着任p252)", "機銃(着任p252)", "小口径主砲(着任p249)", "中口径主砲(着任p249)", "小口径主砲(着任p249)", "中口径主砲(着任p249)", "10cm連装高角砲(着任p249)", "20.3cm連装砲(着任p249)", "61cm四連装(酸素)魚雷(着任p252)", "46cm三連装砲(着任p250)", "15.5cm三連装砲(副砲)(建造壱p167)", "61cm五連装(酸素)魚雷(建造壱p168)", "53cm艦種(酸素)魚雷(建造壱p168)", "九一式徹甲弾(建造壱p169)"]), "WPFA": $$($nesting, 'Table').$new("艦載機開発表(燃料3/弾薬6/鋼材3/ボーキ6)", "4D6", ["開発失敗!(資材だけ失う)", "開発失敗!(資材だけ失う)", "開発失敗!(資材だけ失う)", "開発失敗!(資材だけ失う)", "開発失敗!(資材だけ失う)", "Ju87C改(建造壱p167)", "流星(建造壱p167)", "紫電改二(建造壱p167)", "零式艦戦52型(着任p251)", "艦上戦闘機(着任p251)", "偵察機(着任p251)", "艦上爆撃機(着任p250)", "艦上攻撃機(着任p251)", "彩雲(着任p251)", "彗星(着任p250)", "天山(着任p251)", "瑞雲(建造壱p168)", "彗星一二型甲(建造壱p167)", "流星改(建造壱p167)", "烈風(建造壱p168)", "零式水上観測機(建造壱p168)"]), "WPMC": $$($nesting, 'Table').$new("特殊開発表(燃料6/弾薬3/鋼材6/ボーキ3)", "2D6", ["開発失敗!(資材だけ失う)", "開発失敗!(資材だけ失う)", "開発失敗!(資材だけ失う)", "開発失敗!(資材だけ失う)", "探照灯(建造壱p169)", "電探(着任p252)", "改良型艦本式タービン(着任p252)", "九四式爆雷投射機(建造壱p169)", "甲標的 甲(建造壱p168)", "33号対水上電探(建造壱p169)", "増設バルジ(中型艦)(建造壱p169)"]), "WPMCN": $$($nesting, 'Table').$new("新特殊開発表(燃料6/弾薬3/鋼材6/ボーキ3)", "2D6", ["開発失敗!(資材だけ失う)", "カ号観測機(建造弐p171)", "九三式水中聴音機(建造弐p171)", "ドラム缶(輸送用)(建造弐p171)", "探照灯(建造壱p169)", "電探(着任p252)", "改良型艦本式タービン(着任p252)", "九四式爆雷投射機(建造壱p169)", "甲標的 甲(建造壱p168)", "33号対水上電探(建造壱p169)", "増設バルジ(中型艦)(建造壱p169)"]), "ITT": $$($nesting, 'Table').$new("アイテム表", "1D6", ["アイス(P241)", "羊羹(P241)", "開発資材(P241)", "高速修復剤(P241)", "応急修理要員(P241)", "思い出の品(P241)"]), "MHT": $$($nesting, 'Table').$new("目標表", "1D6", ["敵艦の中で、もっとも航行序列の高いPC", "敵艦の中で、もっとも損傷の多いPC", "敵艦の中で、もっとも【装甲力】の低いPC", "敵艦の中で、もっとも【回避力】の低いPC", "敵艦の中で、もっとも【火力】の高いPC", "敵艦の中から完全にランダムに決定"]), "SNT": $$($nesting, 'Table').$new("戦果表", "1D6", ["燃料/1D6+[敵艦隊の人数]個", "弾薬/1D6+[敵艦隊の人数]個", "鋼材/1D6+[敵艦隊の人数]個", "ボーキサイト/1D6+[敵艦隊の人数]個", "任意の資材/1D6+[敵艦隊の人数]個", "感情値/各自好きなキャラクターへの【感情値】+1"]), "SPSNT": $$($nesting, 'Table').$new("特殊戦果表", "1D6", ["すべての資材/+3", "アイテム表(着任p241)から好きなアイテムを取得", "家具コイン/+1", "砲類開発表を使用する(資材は消費しない)", "艦載機開発表を使用する(資材は消費しない)", "新特殊開発表を使用する(資材は消費しない)"]), "SNZ": $$($nesting, 'Table').$new("戦場表", "1D6", ["同航戦(P231)", "反航戦(P231)", "T字有利(P231)", "T字不利(P231)", "悪天候(P231)", "悪海象(あくかいしょう)(P231)"]), "RNT": $$($nesting, 'Table').$new("暴走表", "1D6", ["妄想(建造弐p164)", "狂戦士(建造弐p164)", "興奮(建造弐p164)", "溺愛(建造弐p164)", "慢心(建造弐p164)", "絶望(建造弐p164)"])}).$freeze()); - return self.$setPrefixes($rb_plus(["DVT", "DVTM", "WP1T", "WP2T", "WP3T", "WP4T", "KTM", "BT", "KHT", "KMT", "KST", "KSYT", "KKT", "KSNT"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/KemonoNoMori.js b/src/assets/dicebot/KemonoNoMori.js deleted file mode 100644 index 50b3a3f96..000000000 --- a/src/assets/dicebot/KemonoNoMori.js +++ /dev/null @@ -1,348 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$freeze', '$match', '$raise', '$to_i', '$[]', '$roll', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Table'); - - var $nesting = [self].concat($parent_nesting), $Table_initialize$1, $Table_roll$2; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $Table_initialize$1 = function $$initialize(name, type, items) { - var self = this, m = nil; - - - self.name = name; - self.items = items.$freeze(); - m = /(\d+)D(\d+)/i.$match(type); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "Unexpected table type: " + (type)) - }; - self.times = m['$[]'](1).$to_i(); - return (self.sides = m['$[]'](2).$to_i()); - }, $Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $Table_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, value = nil, index = nil; - - - $b = bcdice.$roll(self.times, self.sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(value, self.times); - return "" + (self.name) + "(" + (value) + ") > " + (self.items['$[]'](index)); - }, $Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/range_table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$new', '$alias_method', '$freeze', '$lambda', '$name', '$sum', '$content', '$attr_reader', '$match', '$raise', '$to_i', '$[]', '$store', '$find', '$include?', '$range', '$roll', '$map', '$split', '$to_proc', '$fetch', '$formatted=', '$-', '$private', '$coerce_to_int_range', '$sort_by', '$min', '$assert_min_sum_is_covered', '$assert_max_sum_is_covered', '$assert_no_gap_or_overlap_in_ranges', '$===', '$is_a?', '$begin', '$end', '$class', '$first', '$*', '$last', '$each_cons', '$max', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RangeTable'); - - var $nesting = [self].concat($parent_nesting), $RangeTable$1, $RangeTable$2, $RangeTable_initialize$3, $RangeTable_fetch$4, $RangeTable_roll$6, $RangeTable_store$7, $RangeTable_coerce_to_int_range$11, $RangeTable_assert_min_sum_is_covered$12, $RangeTable_assert_max_sum_is_covered$13, $RangeTable_assert_no_gap_or_overlap_in_ranges$14; - - self.$$prototype.name = self.$$prototype.items = self.$$prototype.num_of_dice = self.$$prototype.num_of_sides = self.$$prototype.formatter = nil; - - Opal.const_set($nesting[0], 'RollResult', $send($$($nesting, 'Struct'), 'new', ["sum", "values", "content", "formatted"], ($RangeTable$1 = function(){var self = $RangeTable$1.$$s || this; - - return self.$alias_method("to_s", "formatted")}, $RangeTable$1.$$s = self, $RangeTable$1.$$arity = 0, $RangeTable$1))); - Opal.const_set($nesting[0], 'Item', $$($nesting, 'Struct').$new("range", "content")); - Opal.const_set($nesting[0], 'DICE_ROLL_METHOD_RE', /^(\d+)D(\d+)$/i.$freeze()); - Opal.const_set($nesting[0], 'DEFAULT_FORMATTER', $send(self, 'lambda', [], ($RangeTable$2 = function(table, result){var self = $RangeTable$2.$$s || this; - - - - if (table == null) { - table = nil; - }; - - if (result == null) { - result = nil; - }; - return "" + (table.$name()) + "(" + (result.$sum()) + ") > " + (result.$content());}, $RangeTable$2.$$s = self, $RangeTable$2.$$arity = 2, $RangeTable$2))); - self.$attr_reader("name"); - self.$attr_reader("num_of_dice"); - self.$attr_reader("num_of_sides"); - - Opal.def(self, '$initialize', $RangeTable_initialize$3 = function $$initialize(name, dice_roll_method, items) { - var $iter = $RangeTable_initialize$3.$$p, formatter = $iter || nil, $a, self = this, m = nil; - - if ($iter) $RangeTable_initialize$3.$$p = null; - - - if ($iter) $RangeTable_initialize$3.$$p = null;; - self.name = name.$freeze(); - self.formatter = ($truthy($a = formatter) ? $a : $$($nesting, 'DEFAULT_FORMATTER')); - m = $$($nesting, 'DICE_ROLL_METHOD_RE').$match(dice_roll_method); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + (self.name) + ": invalid dice roll method: " + (dice_roll_method)) - }; - self.num_of_dice = m['$[]'](1).$to_i(); - self.num_of_sides = m['$[]'](2).$to_i(); - return self.$store(items); - }, $RangeTable_initialize$3.$$arity = 3); - - Opal.def(self, '$fetch', $RangeTable_fetch$4 = function $$fetch(value) { - var $$5, self = this, item = nil; - - - item = $send(self.items, 'find', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$range()['$include?'](value);}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - if ($truthy(item)) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": value is out of range: " + (value)) - }; - return item; - }, $RangeTable_fetch$4.$$arity = 1); - - Opal.def(self, '$roll', $RangeTable_roll$6 = function $$roll(bcdice) { - var $a, $b, self = this, sum = nil, values_str = nil, values = nil, result = nil, $writer = nil; - - - $b = bcdice.$roll(self.num_of_dice, self.num_of_sides), $a = Opal.to_ary($b), (sum = ($a[0] == null ? nil : $a[0])), (values_str = ($a[1] == null ? nil : $a[1])), $b; - values = $send(values_str.$split(","), 'map', [], "to_i".$to_proc()); - result = $$($nesting, 'RollResult').$new(sum, values, self.$fetch(sum).$content()); - - $writer = [self.formatter['$[]'](self, result)]; - $send(result, 'formatted=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return result; - }, $RangeTable_roll$6.$$arity = 1); - self.$private(); - - Opal.def(self, '$store', $RangeTable_store$7 = function $$store(items) { - var $$8, $$9, $$10, self = this, items_with_range = nil, sorted_items = nil; - - - items_with_range = $send(items, 'map', [], ($$8 = function(r, c){var self = $$8.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (c == null) { - c = nil; - }; - return [self.$coerce_to_int_range(r), c];}, $$8.$$s = self, $$8.$$arity = 2, $$8)); - sorted_items = $send(items_with_range, 'sort_by', [], ($$9 = function(r, _){var self = $$9.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (_ == null) { - _ = nil; - }; - return r.$min();}, $$9.$$s = self, $$9.$$arity = 2, $$9)); - self.$assert_min_sum_is_covered(sorted_items); - self.$assert_max_sum_is_covered(sorted_items); - self.$assert_no_gap_or_overlap_in_ranges(sorted_items); - self.items = $send(sorted_items, 'map', [], ($$10 = function(range, content){var self = $$10.$$s || this; - - - - if (range == null) { - range = nil; - }; - - if (content == null) { - content = nil; - }; - return $$($nesting, 'Item').$new(range, content.$freeze()).$freeze();}, $$10.$$s = self, $$10.$$arity = 2, $$10)).$freeze(); - return self; - }, $RangeTable_store$7.$$arity = 1); - - Opal.def(self, '$coerce_to_int_range', $RangeTable_coerce_to_int_range$11 = function $$coerce_to_int_range(x) { - var $a, self = this, $case = nil; - - - $case = x; - if ($$($nesting, 'Integer')['$===']($case)) {return $$($nesting, 'Range').$new(x, x)} - else if ($$($nesting, 'Range')['$===']($case)) {if ($truthy(($truthy($a = x.$begin()['$is_a?']($$($nesting, 'Integer'))) ? x.$end()['$is_a?']($$($nesting, 'Integer')) : $a))) { - return x}}; - return self.$raise($$($nesting, 'TypeError'), "" + (self.name) + ": " + (x) + " (" + (x.$class()) + ") must be an Integer or a Range with Integers "); - }, $RangeTable_coerce_to_int_range$11.$$arity = 1); - - Opal.def(self, '$assert_min_sum_is_covered', $RangeTable_assert_min_sum_is_covered$12 = function $$assert_min_sum_is_covered(sorted_items) { - var self = this, min_sum = nil, range = nil; - - - min_sum = self.num_of_dice; - range = sorted_items.$first()['$[]'](0); - if ($truthy(range['$include?'](min_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": min value (" + (min_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_min_sum_is_covered$12.$$arity = 1); - - Opal.def(self, '$assert_max_sum_is_covered', $RangeTable_assert_max_sum_is_covered$13 = function $$assert_max_sum_is_covered(sorted_items) { - var self = this, max_sum = nil, range = nil; - - - max_sum = $rb_times(self.num_of_dice, self.num_of_sides); - range = sorted_items.$last()['$[]'](0); - if ($truthy(range['$include?'](max_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": max value (" + (max_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_max_sum_is_covered$13.$$arity = 1); - return (Opal.def(self, '$assert_no_gap_or_overlap_in_ranges', $RangeTable_assert_no_gap_or_overlap_in_ranges$14 = function $$assert_no_gap_or_overlap_in_ranges(sorted_items) { - var $$15, self = this; - - - $send(sorted_items, 'each_cons', [2], ($$15 = function(i1, i2){var self = $$15.$$s || this, r1 = nil, r2 = nil, max1 = nil, next_of_max1 = nil; - if (self.name == null) self.name = nil; - - - - if (i1 == null) { - i1 = nil; - }; - - if (i2 == null) { - i2 = nil; - }; - r1 = i1['$[]'](0); - r2 = i2['$[]'](0); - max1 = r1.$max(); - next_of_max1 = $rb_plus(max1, 1); - if ($truthy(r2['$include?'](max1))) { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range overlap: " + (r1) + " and " + (r2))}; - if ($truthy(r2['$include?'](next_of_max1))) { - return nil - } else { - return self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range gap: " + (r1) + " and " + (r2)) - };}, $$15.$$s = self, $$15.$$arity = 2, $$15)); - return self; - }, $RangeTable_assert_no_gap_or_overlap_in_ranges$14.$$arity = 1), nil) && 'assert_no_gap_or_overlap_in_ranges'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $range = Opal.range; - - Opal.add_stubs(['$require', '$===', '$check_1D12', '$getTrapResult', '$getEscapeExperienceTableResult', '$roll_tables', '$debug', '$match', '$to_i', '$parren_killer', '$[]', '$+', '$floor', '$/', '$roll', '$==', '$<=', '$freeze', '$new', '$setPrefixes', '$keys']); - - self.$require("utils/table.rb"); - self.$require("utils/range_table"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'KemonoNoMori'); - - var $nesting = [self].concat($parent_nesting), $KemonoNoMori_rollDiceCommand$1, $KemonoNoMori_check_1D12$2, $KemonoNoMori_getTrapResult$3, $KemonoNoMori_getEscapeExperienceTableResult$4; - - - Opal.const_set($nesting[0], 'ID', "KemonoNoMori"); - Opal.const_set($nesting[0], 'NAME', "獸ノ森"); - Opal.const_set($nesting[0], 'SORT_KEY', "けもののもり"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・行為判定(成功度自動算出): KAx[±y]\n" + "・継続判定(成功度+1固定): KCx[±y]\n" + " x=目標値\n" + " y=目標値への修正(任意) x+y-z のように複数指定可能\n" + " 例1)KA7+3 → 目標値7にプラス3の修正を加えた行為判定\n" + " 例2)KC6 → 目標値6の継続判定\n" + "・罠動作判定: CTR\n" + " 罠ごとに1D12を振る。12が出た場合は罠が動作し、獲物がその効果を受ける\n" + "・各種表\n" + " ・大失敗表: FT\n" + " ・能力値ランダム決定表: RST\n" + " ・ランダム所要時間表: RTT\n" + " ・ランダム消耗表: RET\n" + " ・ランダム天気表: RWT\n" + " ・ランダム天気持続表: RWDT\n" + " ・ランダム遮蔽物表(屋外): ROMT\n" + " ・ランダム遮蔽物表(屋内): RIMT\n" + " ・逃走体験表: EET\n" + " ・食材採集表: GFT\n" + " ・水採集表: GWT\n" + " ・白の魔石効果表: WST\n"); - - Opal.def(self, '$rollDiceCommand', $KemonoNoMori_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if (/KA\d[-+\d]*/['$===']($case)) {return self.$check_1D12(command, true)} - else if (/KC\d[-+\d]*/['$===']($case)) {return self.$check_1D12(command, false)} - else if ("CTR"['$===']($case)) {return self.$getTrapResult()} - else if ("EET"['$===']($case)) {return self.$getEscapeExperienceTableResult(command)} - else {return self.$roll_tables(command, $$($nesting, 'TABLES'))}})() - }, $KemonoNoMori_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$check_1D12', $KemonoNoMori_check_1D12$2 = function $$check_1D12(command, is_action_judge) { - var $a, $b, self = this, m = nil, target_total = nil, success_degree = nil, dice_total = nil; - - - self.$debug("獸ノ森の1d12判定"); - m = /K[AC](\d[-+\d]*)/.$match(command); - if ($truthy(m)) { - } else { - return "" - }; - target_total = self.$parren_killer("" + "(" + (m['$[]'](1)) + ")").$to_i(); - self.$debug("target_total", target_total); - success_degree = (function() {if ($truthy(is_action_judge)) { - return $rb_plus($rb_divide(target_total, 10).$floor(), 1) - } else { - return 1 - }; return nil; })(); - $b = self.$roll(1, 12), $a = Opal.to_ary($b), (dice_total = ($a[0] == null ? nil : $a[0])), $b; - self.$debug("dice_total, target_total, success_degree = ", dice_total, target_total, success_degree); - if (dice_total['$=='](12)) { - return "" + "(1D12<=" + (target_total) + ") > " + (dice_total) + " > 大失敗" - } else if (dice_total['$=='](11)) { - return "" + "(1D12<=" + (target_total) + ") > " + (dice_total) + " > 大成功(成功度+" + (success_degree) + ", 次の継続判定の目標値を10に変更)" - } else if ($truthy($rb_le(dice_total, target_total))) { - return "" + "(1D12<=" + (target_total) + ") > " + (dice_total) + " > 成功(成功度+" + (success_degree) + ")" - } else { - return "" + "(1D12<=" + (target_total) + ") > " + (dice_total) + " > 失敗" - }; - }, $KemonoNoMori_check_1D12$2.$$arity = 2); - - Opal.def(self, '$getTrapResult', $KemonoNoMori_getTrapResult$3 = function $$getTrapResult() { - var $a, $b, self = this, trapCheckNumber = nil, chaseNumber = nil, chase = nil, $case = nil; - - - $b = self.$roll(1, 12), $a = Opal.to_ary($b), (trapCheckNumber = ($a[0] == null ? nil : $a[0])), $b; - if (trapCheckNumber['$=='](12)) { - - $b = self.$roll(1, 12), $a = Opal.to_ary($b), (chaseNumber = ($a[0] == null ? nil : $a[0])), $b; - chase = nil; - $case = chaseNumber; - if ((1)['$===']($case) || (2)['$===']($case) || (3)['$===']($case) || (4)['$===']($case)) {chase = "小型動物"} - else if ((5)['$===']($case) || (6)['$===']($case) || (7)['$===']($case) || (8)['$===']($case)) {chase = "大型動物"} - else if ((9)['$===']($case) || (10)['$===']($case) || (11)['$===']($case) || (12)['$===']($case)) {chase = "人間の放浪者"}; - return "" + "罠動作チェック(1D12) > " + (trapCheckNumber) + " > 罠が動作していた! > 獲物表(" + (chaseNumber) + ") > " + (chase) + "が罠にかかっていた";}; - return "" + "罠動作チェック(1D12) > " + (trapCheckNumber) + " > 罠は動作していなかった"; - }, $KemonoNoMori_getTrapResult$3.$$arity = 0); - - Opal.def(self, '$getEscapeExperienceTableResult', $KemonoNoMori_getEscapeExperienceTableResult$4 = function $$getEscapeExperienceTableResult(command) { - var $a, $b, self = this, escapeExperience = nil, escapeDuration = nil; - - - escapeExperience = self.$roll_tables(command, $$($nesting, 'TABLES')); - $b = self.$roll(1, 12), $a = Opal.to_ary($b), (escapeDuration = ($a[0] == null ? nil : $a[0])), $b; - return "" + (escapeExperience) + " (再登場: " + (escapeDuration) + "時間後)"; - }, $KemonoNoMori_getEscapeExperienceTableResult$4.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["FT", "RST", "RTT", "RET", "RWT", "RWDT", "ROMT", "RIMT", "EET", "GFT", "GWT", "WST"], {"FT": $$($nesting, 'RangeTable').$new("大失敗表", "1D12", [[$range(1, 3, false), "【余裕】が3点減少する(最低0まで)"], [$range(4, 5, false), "ランダムな荷物1個が落ちて行方不明になる(大失敗したエリアのアイテム調査で見つけることが可能)"], [$range(6, 7, false), "ランダムな荷物1個が破壊される"], [$range(8, 9, false), "ランダム天気表を使用し、結果をターンの終了まで適用する"], [10, "ランダムな準備している小道具1個が破壊される"], [11, "着想している防具が破壊される"], [12, "準備している武器が破壊される"]]), "RST": $$($nesting, 'RangeTable').$new("能力値ランダム決定表", "1D12", [[$range(1, 2, false), "【移動】"], [$range(3, 4, false), "【格闘】"], [$range(5, 6, false), "【射撃】"], [$range(7, 8, false), "【製作】"], [$range(9, 10, false), "【察知】"], [$range(11, 12, false), "【自制】"]]), "RTT": $$($nesting, 'RangeTable').$new("ランダム所要時間表", "1D12", [[$range(1, 3, false), "2"], [$range(4, 6, false), "3"], [$range(7, 9, false), "4"], [$range(10, 12, false), "5"]]), "RET": $$($nesting, 'RangeTable').$new("ランダム消耗表", "1D12", [[$range(1, 3, false), "0"], [$range(4, 6, false), "1"], [$range(7, 9, false), "2"], [$range(10, 12, false), "4"]]), "RWT": $$($nesting, 'RangeTable').$new("ランダム天気表", "1D12", [[$range(1, 2, false), "濃霧"], [$range(3, 4, false), "大雨"], [$range(5, 6, false), "雷雨"], [$range(7, 8, false), "強風"], [$range(9, 10, false), "酷暑"], [$range(11, 12, false), "極寒"]]), "RWDT": $$($nesting, 'RangeTable').$new("ランダム天気持続表", "1D12", [[$range(1, 2, false), "1ターン"], [$range(3, 4, false), "3ターン"], [$range(5, 6, false), "6ターン"], [$range(7, 8, false), "24ターン"], [$range(9, 10, false), "72ターン"], [$range(11, 12, false), "156ターン"]]), "ROMT": $$($nesting, 'RangeTable').$new("ランダム遮蔽物表(屋外)", "1D12", [[$range(1, 2, false), "【藪】耐久度3,軽減値1,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-1の修正を付加"], [$range(3, 5, false), "【木】耐久度5,軽減値2,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-1の修正を付加"], [$range(6, 8, false), "【大木】耐久度7,軽減値3,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-2の修正を付加"], [$range(9, 10, false), "【岩】耐久度6,軽減値4,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-1の修正を付加/コンタクト内で行われる格闘攻撃のダメージ+1"], [$range(11, 12, false), "【岩壁】耐久度8,軽減値4,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-2の修正を付加/コンタクト内で行われる格闘攻撃のダメージ+2"]]), "RIMT": $$($nesting, 'RangeTable').$new("ランダム遮蔽物表(屋内)", "1D12", [[$range(1, 4, false), "【木材の壁】耐久度4,軽減値2,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-1の修正を付加"], [$range(5, 8, false), "【木材の扉】耐久度4,軽減値2,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-1、接触判定と突撃判定に-2の修正を付加"], [$range(9, 12, false), "【木製家具】耐久度3,軽減値2,特殊効果:コンタクト内で行われる格闘攻撃のダメージ+1"]]), "EET": $$($nesting, 'RangeTable').$new("逃走体験表", "1D12", [[$range(1, 3, false), "【余裕】が0になる"], [$range(4, 6, false), "任意の【絆】を合計2点減少する"], [$range(7, 9, false), "全ての荷物を失う(逃走したエリアに配置され、調査で発見可能)"], [$range(10, 12, false), "全ての武器と防具と小道具と荷物を失う(逃走したエリアに配置され、調査で発見可能)"]]), "GFT": $$($nesting, 'RangeTable').$new("食材採集表", "1D12", [[$range(1, 2, false), "食べられる根(栄養価:2)"], [$range(3, 5, false), "食べられる草(栄養価:3)"], [$range(6, 8, false), "食べられる実(栄養価:5)"], [$range(9, 10, false), "小型動物(栄養価:10)"], [11, "大型動物(栄養価:40)"], [12, "気持ち悪い虫(栄養価:1)"]]), "GWT": $$($nesting, 'RangeTable').$new("水採集表", "1D12", [[$range(1, 6, false), "汚水"], [$range(7, 11, false), "飲料水"], [12, "毒水"]]), "WST": $$($nesting, 'Table').$new("白の魔石効果表", "1D12", ["役に立たないものの色を変える", "役に立たないものを大きくする", "役に立たないものを小さくする", "役に立たないものを保存する", "役に立たないものを復元する", "役に立たないものを召喚する", "役に立たないものを動かす", "役に立たないものを増やす", "役に立たないものを貼り付ける", "役に立たないものを作り出す", "小型動物を召喚する", "大型動物を召喚する"])}).$freeze()); - return self.$setPrefixes($rb_plus(["K[AC]\\d[-+\\d]*", "CTR"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/KillDeathBusiness.js b/src/assets/dicebot/KillDeathBusiness.js deleted file mode 100644 index 5924ae84c..000000000 --- a/src/assets/dicebot/KillDeathBusiness.js +++ /dev/null @@ -1,538 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$==', '$<=', '$>=', '$debug', '$===', '$judgeDice', '$rollTableCommand', '$freeze', '$to_i', '$last_match', '$>', '$+', '$<', '$roll', '$getTableCommandResult', '$nil?', '$getHistoryTableResult', '$getSceneTableResult', '$getWishTableResult', '$getNameTableResult', '$getSubprotTableResult', '$getCmTableResult', '$getErTableResult', '$getWKTableResult', '$getServiceSceneTableResult', '$getSoulTableResult', '$getSceneTelopGenericTableResult', '$getHairStylistAbuseTableResult', '$getExtraTableResult', '$getSkillTableResult', '$getpcTableResult', '$getohTableResult', '$getplTableResult', '$getprTableResult', '$getpnTableResult', '$getpdTableResult', '$getpfTableResult', '$getpgTableResult', '$getpbTableResult', '$empty?', '$get_table_by_1d6', '$get_table_by_d66_swap', '$get_table_by_2d6', '$[]', '$setPrefixes', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'KillDeathBusiness'); - - var $nesting = [self].concat($parent_nesting), $KillDeathBusiness_initialize$1, $KillDeathBusiness_check_2D6$2, $KillDeathBusiness_rollDiceCommand$3, $KillDeathBusiness_judgeDice$4, $KillDeathBusiness_rollTableCommand$5, $KillDeathBusiness_getHistoryTableResult$6, $KillDeathBusiness_getSceneTableResult$7, $KillDeathBusiness_getWishTableResult$8, $KillDeathBusiness_getNameTableResult$9, $KillDeathBusiness_getSubprotTableResult$10, $KillDeathBusiness_getCmTableResult$11, $KillDeathBusiness_getErTableResult$12, $KillDeathBusiness_getWKTableResult$13, $KillDeathBusiness_getServiceSceneTableResult$14, $KillDeathBusiness_getSoulTableResult$15, $KillDeathBusiness_getSceneTelopGenericTableResult$16, $KillDeathBusiness_getHairStylistAbuseTableResult$17, $KillDeathBusiness_getSkillTableResult$18, $KillDeathBusiness_getExtraTableResult$19, $KillDeathBusiness_getpcTableResult$20, $KillDeathBusiness_getohTableResult$21, $KillDeathBusiness_getplTableResult$22, $KillDeathBusiness_getprTableResult$23, $KillDeathBusiness_getpnTableResult$24, $KillDeathBusiness_getpdTableResult$25, $KillDeathBusiness_getpfTableResult$26, $KillDeathBusiness_getpgTableResult$27, $KillDeathBusiness_getpbTableResult$28; - - - Opal.const_set($nesting[0], 'ID', "KillDeathBusiness"); - Opal.const_set($nesting[0], 'NAME', "キルデスビジネス"); - Opal.const_set($nesting[0], 'SORT_KEY', "きるてすひしねす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + " JDx or JDx+y or JDx-y or JDx,z or JDx+y,z JDx-y,z\n" + " (x=難易度、y=補正、z=ファンブル率(リスク))\n" + "・履歴表 (HST、HSTx) xに数字(1,2)で表を個別ロール\n" + "・願い事表 (-WT)\n" + " 死(DWT)、復讐(RWT)、勝利(VWT)、獲得(PWT)、支配(CWT)、繁栄(FWT)\n" + " 強化(IWT)、健康(HWT)、安全(SAWT)、長寿(LWT)、生(EWT)\n" + "・万能命名表 (NAME) xに数字(1,2,3)で表を個別ロール\n" + "・サブプロット表 (-SPT)\n" + " オカルト(OSPT)、家族(FSPT)、恋愛(LOSPT)、正義(JSPT)、修行(TSPT)\n" + " 笑い(BSPT)、意地悪(MASPT)、恨み(UMSPT)、人気(POSPT)、仕切り(PASPT)\n" + " 金儲け(MOSPT)、対悪魔(ANSPT)\n" + "・シーン表 (ST)、サービスシーン表 (EST)\n" + "・CM表 (CMT)\n" + "・蘇生副作用表 (ERT)\n" + "・一週間表(WKT)\n" + "・ソウル放出表 (SOUL)\n" + "・汎用演出表 (STGT)\n" + "・ヘルスタイリスト罵倒表 (HSAT、HSATx) xに数字(1,2)で表を個別ロール\n" + "・指定特技ランダム決定表 (SKLT)、指定特技分野ランダム決定表 (SKLJ)\n" + "・エキストラ表 (EXT、EXTx) xに数字(1,2,3,4)で表を個別ロール\n" + "・製作委員決定表 PCDT/実際どうだったのか表 OHT\n" + "・タスク表 ヘルライオン PCT1/ヘルクロウ PCT2/ヘルスネーク PCT3/\n" + " ヘルドラゴン PCT4/ヘルフライ PCT5/ヘルゴート PCT6/ヘルベア PCT7\n" + "・D66ダイスあり\n"); - - Opal.def(self, '$initialize', $KillDeathBusiness_initialize$1 = function $$initialize() { - var $iter = $KillDeathBusiness_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $KillDeathBusiness_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $KillDeathBusiness_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $KillDeathBusiness_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $KillDeathBusiness_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル(判定失敗。【視聴率】が20%減少)" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > スペシャル(判定成功。【視聴率】が10%増加)" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $KillDeathBusiness_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $KillDeathBusiness_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var self = this, $case = nil, result = nil, text = nil; - - - self.$debug("rollDiceCommand command", command); - $case = command; - if ($$($nesting, 'JUDGE_DICE_REG')['$===']($case)) { - result = self.$judgeDice(command); - text = "" + "判定" + (result); - return text;}; - return self.$rollTableCommand(command); - }, $KillDeathBusiness_rollDiceCommand$3.$$arity = 1); - Opal.const_set($nesting[0], 'JUDGE_DICE_REG', /(^|\s)JD(\d+)([\+\-]\d+)?(,(\d+))?($|\s)/i.$freeze()); - - Opal.def(self, '$judgeDice', $KillDeathBusiness_judgeDice$4 = function $$judgeDice(command) { - var $a, $b, self = this, target = nil, modify = nil, fumble = nil, result = nil, number = nil, diceText = nil; - - - if ($truthy($$($nesting, 'JUDGE_DICE_REG')['$==='](command))) { - } else { - return "1" - }; - target = $$($nesting, 'Regexp').$last_match(2).$to_i(); - modify = $$($nesting, 'Regexp').$last_match(3).$to_i(); - fumble = $$($nesting, 'Regexp').$last_match(5).$to_i(); - result = ""; - if ($truthy($rb_gt(target, 12))) { - - result = $rb_plus(result, "" + "【" + (command) + "】 > 難易度が12以上はスペシャルのみ成功。\n"); - target = 12;}; - if ($truthy($rb_lt(target, 5))) { - - result = $rb_plus(result, "" + "【" + (command) + "】 > 難易度の最低は5。\n"); - target = 5;}; - if ($truthy($rb_lt(fumble, 2))) { - fumble = 2 - } else if ($truthy($rb_gt(fumble, 11))) { - - result = $rb_plus(result, "" + "【" + (command) + "】 > スペシャルを出すと必ず成功なので、ファンブル率は11とする。\n"); - fumble = 11;}; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - result = $rb_plus(result, "" + "【難易度" + (target) + "、補正" + (modify) + "、ファンブル率" + (fumble) + "】 > 出目(" + (diceText) + ") > "); - if (number['$=='](2)) { - result = $rb_plus(result, "出目が2なのでファンブル!(判定失敗。【視聴率】が20%減少)") - } else if (number['$=='](12)) { - result = $rb_plus(result, "出目が12なのでスペシャル!(判定成功。【視聴率】が10%増加)") - } else if ($truthy($rb_le(number, fumble))) { - result = $rb_plus(result, "出目がファンブル率以下なのでファンブル!(判定失敗。【視聴率】が20%減少)") - } else { - - number = $rb_plus(number, modify); - if ($truthy($rb_lt(number, target))) { - result = $rb_plus(result, "" + "達成値" + (number) + "、難易度未満なので判定失敗!") - } else { - result = $rb_plus(result, "" + "達成値" + (number) + "、難易度以上なので判定成功!") - }; - }; - return result; - }, $KillDeathBusiness_judgeDice$4.$$arity = 1); - - Opal.def(self, '$rollTableCommand', $KillDeathBusiness_rollTableCommand$5 = function $$rollTableCommand(command) { - var $a, $b, self = this, result = nil, tableName = nil, $case = nil, number = nil, type = nil, text = nil; - - - result = self.$getTableCommandResult(command, $$($nesting, 'TABLES')); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - tableName = ""; - result = ""; - $case = command; - if ("HST"['$===']($case)) {$b = self.$getHistoryTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if (/^ST(\d)?$/['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1).$to_i(); - $b = self.$getSceneTableResult(type), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b;} - else if (/^.+WT$/i['$===']($case)) {$b = self.$getWishTableResult(command), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if (/^NAME(\d)?$/['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1).$to_i(); - $b = self.$getNameTableResult(type), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b;} - else if (/^.+SPT$/i['$===']($case)) {$b = self.$getSubprotTableResult(command), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("CMT"['$===']($case)) {$b = self.$getCmTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("ERT"['$===']($case)) {$b = self.$getErTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("WKT"['$===']($case)) {$b = self.$getWKTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if (/^EST$/i['$===']($case) || /^sErviceST$/i['$===']($case)) {$b = self.$getServiceSceneTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("SOUL"['$===']($case)) {$b = self.$getSoulTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("STGT"['$===']($case)) {$b = self.$getSceneTelopGenericTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if (/^HSAT(\d)?$/['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1).$to_i(); - $b = self.$getHairStylistAbuseTableResult(type), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b;} - else if (/^EXT(\d)?$/['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1).$to_i(); - $b = self.$getExtraTableResult(type), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b;} - else if (/^SKL(T|J)$/['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1); - $b = self.$getSkillTableResult(type), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b;} - else if ("PCDT"['$===']($case)) {$b = self.$getpcTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("OHT"['$===']($case)) {$b = self.$getohTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("PCT1"['$===']($case)) {$b = self.$getplTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("PCT2"['$===']($case)) {$b = self.$getprTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("PCT3"['$===']($case)) {$b = self.$getpnTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("PCT4"['$===']($case)) {$b = self.$getpdTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("PCT5"['$===']($case)) {$b = self.$getpfTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("PCT6"['$===']($case)) {$b = self.$getpgTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("PCT7"['$===']($case)) {$b = self.$getpbTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b}; - if ($truthy(result['$empty?']())) { - return ""}; - text = "" + (tableName) + "(" + (number) + "):" + (result); - return text; - }, $KillDeathBusiness_rollTableCommand$5.$$arity = 1); - - Opal.def(self, '$getHistoryTableResult', $KillDeathBusiness_getHistoryTableResult$6 = function $$getHistoryTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "履歴表"; - table = ["" + "魔術\n" + "あなたは悪魔との接触を目指して研磨を積んでいたオカルティスト、または恐怖の探索者である。たいへんな苦労の末、ようやく現れた悪魔は、願いと引き替えに番組に出ろ、などと言い出した。あなたは少々あっけにとられながらも、そもそも悪魔を探していた理由である願い事を叶えるため、彼らの主催する番組に出演する事を承諾した。", "" + "天才\n" + "あなたはある分野での天才である。なんの天才であるのかは、キャラクター作成を進めるうちに思いついたら決めてもいいし、まったく決めなくてもかまわない。とにかく、天才が番組に登場するとキャラが立って面白くなると考えた悪魔は、あなたの目の前に番組の出演交渉のために現れた。あなたはその話に乗り、魂の回収人になることに決めた。", "" + "狂気\n" + "あなたは頭がおかしい。そのため、周囲の社会とうまくかみ合わない人生を送っていた。悪魔はそこに出現し、社会をあなたに合わせて変えてしまうことが可能だと言った。ただし人を殺すゲーム番組で優勝しなければならないらしい。しかし、あなたは頭がおかしいので、人を殺すところは気にもならなかった。とにかく勝てば幸せになれるのだ。がんばろう。", "" + "絶望\n" + "あなたはなんらかの失敗によって失意のどん底にあった。合法、あるいは違法な薬物に溺れ、生活はどんどん荒み、そろそろ死んでしまおうかと考えているところに悪魔が現れた。そいつの言うことには、なんかリアリティ番組で勝てば、この状況から抜け出せるらしい。もはや失うものなどないあなたは、その話に飛びつき、番組に出演することにした。", "" + "先達\n" + "あなたは過去『キルデスビジネス』の勝利者と知り合いである。急に理由もなく大きな成功をおさめた知り合いに事情を聞くと、こっそりと悪魔が主催する殺人ゲーム番組のことを教えてくれた。あなたは願い事を叶えてもらうために、その知り合いを通して悪魔に推薦してもらい、番組に参加することになった。知り合いは、きっと番組を見ているだろう。", "" + "友人\n" + "あなたは平穏な人生を送っていたが、あるとき目の前に悪魔が現れる。そいつは番組出演のエントリーシートを持っていて、そこにはあなたの名前が書かれていた。友人が勝手にあなたの名前で番組にエントリーシートを送っていたのだ! あなたはそのまま拉致され、むりやり願い事を決めさせられ、悪趣味な番組で暴力を撒き散らす事になってしまった。"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getHistoryTableResult$6.$$arity = 0); - - Opal.def(self, '$getSceneTableResult', $KillDeathBusiness_getSceneTableResult$7 = function $$getSceneTableResult(type) { - var $a, $b, self = this, tableName = nil, sceneTable1 = nil, sceneTable2 = nil, result = nil, number = nil, $case = nil, result1 = nil, num1 = nil, result2 = nil, num2 = nil; - - - self.$debug("getSceneTableResult type", type); - tableName = "シーン表"; - sceneTable1 = [[11, "あなたが根城にしていた"], [12, "あなたの写真で壁が埋め尽くされた"], [13, "アナログテレビが山と積まれた"], [14, "ゴミで埋め尽くされた"], [15, "ヘル"], [16, "押し寄せてくる砂に埋もれた"], [22, "価値あるもので豪華に飾られた"], [23, "監視機器で電子の要塞と化した"], [24, "奇妙なオブジェだらけの"], [25, "巨大な穴のふちに危うく引っかかった"], [26, "極彩色の壁画に彩られた"], [33, "消えかけて点滅する明かりに照らされた"], [34, "青白く何もかもが凍りついた"], [35, "赤い血と鉄のにおいに満ちた"], [36, "太陽が強烈な光を投げかける"], [44, "鳥が無数に集まってきている"], [45, "燃え上がる炎に照らされた"], [46, "白い霧で少し先すら見えない"], [55, "腐った死体が折り重なる"], [56, "有毒な汚水がたっぷり詰まった"], [66, "略奪を受けて空っぽになった"]]; - sceneTable2 = [[11, "オフィス"], [12, "祭壇"], [13, "スタジオ"], [14, "倉庫"], [15, "バス停"], [16, "牢獄"], [22, "暗闇"], [23, "駅"], [24, "屋上"], [25, "下水道"], [26, "学校"], [33, "研究室"], [34, "車内"], [35, "森"], [36, "庭園"], [44, "店"], [45, "農園"], [46, "廃墟"], [55, "墓地"], [56, "民家"], [66, "野原"]]; - result = ""; - number = 0; - $case = type; - if ((1)['$===']($case)) {$b = self.$get_table_by_d66_swap(sceneTable1), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else if ((2)['$===']($case)) {$b = self.$get_table_by_d66_swap(sceneTable2), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else { - $b = self.$get_table_by_d66_swap(sceneTable1), $a = Opal.to_ary($b), (result1 = ($a[0] == null ? nil : $a[0])), (num1 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_d66_swap(sceneTable2), $a = Opal.to_ary($b), (result2 = ($a[0] == null ? nil : $a[0])), (num2 = ($a[1] == null ? nil : $a[1])), $b; - result = "" + (result1) + (result2); - number = "" + (num1) + "," + (num2);}; - return [tableName, result, number]; - }, $KillDeathBusiness_getSceneTableResult$7.$$arity = 1); - - Opal.def(self, '$getWishTableResult', $KillDeathBusiness_getWishTableResult$8 = function $$getWishTableResult(command) { - var $a, $b, self = this, tableName = nil, table = nil, $case = nil, result = nil, number = nil; - - - self.$debug("getWishTableResult command", command); - tableName = ""; - table = []; - $case = command; - if (/^DWT$/i['$===']($case) || /^DeathWT$/i['$===']($case)) { - tableName = "願い事表「死」"; - table = ["今の美しさを保ったまま死にたい。", "おもしろい死にかたをしてみたい。", "自殺する勇気がないので死にたい。", "死んだらどうなるのか見てみたい。", "とても嫌なことがあったので死にたい。", "不老不死に飽きたので死にたい。"];} - else if (/^RWT$/i['$===']($case) || /^RevengeWT$/i['$===']($case)) { - tableName = "願い事表「復讐」"; - table = ["家族を殺した犯人に復讐したい。", "自分より幸せな隣人に復讐したい。", "自分を裏切った友人に復讐したい。", "自分を捨てた恋人に復讐したい。", "大事なものを盗んだ犯人に復讐したい。", "手ひどく負けたライバルに復讐したい。"];} - else if (/^VWT$/i['$===']($case) || /^VictoryWT$/i['$===']($case)) { - tableName = "願い事表「勝利」"; - table = ["かつて負けたライバルに勝利したい。", "倒したい有名人(故人)がいる。", "倒したい有名人がいる。", "特定の業界で一番の実力者になりたい。", "特定のゲームで最強のプレイヤーになりたい。", "特定のテストで一位になりたい。"];} - else if (/^PWT$/i['$===']($case) || /^PossesionWT$/i['$===']($case)) { - tableName = "願い事表「獲得」"; - table = ["欲しいアイテムがある。", "欲しい生き物がいる。", "欲しい関係がある。", "欲しい親族がいる。", "欲しい知識がある。", "欲しい不動産がある。"];} - else if (/^CWT$/i['$===']($case) || /^ControlWT$/i['$===']($case)) { - tableName = "願い事表「支配」"; - table = ["支配したい人物集団がいる。", "支配したい地域がある。", "世界を征服したい。", "選挙で勝ちたい。", "這いつくばらせたい人がいる。", "わがままな縁者を思い通りにしたい。"];} - else if (/^FWT$/i['$===']($case) || /^FlourishWT$/i['$===']($case)) { - tableName = "願い事表「繁栄」"; - table = ["落ちぶれた一族を復権させたい。", "地元経済を活性化させたい。", "趣味のジャンルに人を集めたい。", "絶滅した生き物を復活させたい。", "動物や植物を絶滅から救いたい。", "とにかくたくさんお金が欲しい。"];} - else if (/^IWT$/i['$===']($case) || /^IntensifyWT$/i['$===']($case)) { - tableName = "願い事表「強化」"; - table = ["世界最強になりたい。", "世界で最も美しくなりたい。", "世界で最も賢くなりたい。", "世界で最も幸せになりたい。", "世界で最もタフになりたい。", "世界で最も速くなりたい。"];} - else if (/^HWT$/i['$===']($case) || /^HealthWT$/i['$===']($case)) { - tableName = "願い事表「健康」"; - table = ["完成させたい薬物がある。", "絶滅させたい病原菌がある。", "難病から回復させたい縁者がいる。", "難病から回復したい。", "病気で死なせてしまった人を復活させたい。", "病気にならない体が欲しい。"];} - else if (/^SaWT$/i['$===']($case) || /^SafetyWT$/i['$===']($case)) { - tableName = "願い事表「安全」"; - table = ["穏やかな生活を送りたい。", "穏やかに暮らして欲しい人がいる。", "終わらせたい争いがある。", "事故で死なせてしまった人を復活させたい。", "事故に遭わない能力が欲しい。", "迫り来る世界の危機を回避したい。"];} - else if (/^LWT$/i['$===']($case) || /^LongevityWT$/i['$===']($case)) { - tableName = "願い事表「長寿」"; - table = ["今の美しさを保ちたい。", "今の強さを保ちたい。", "子供が一人前になるまで死ねない。", "不老の体が欲しい。", "ボケたくない。", "孫の顔を見てみたい。"];} - else if (/^EWT$/i['$===']($case) || /^ExistWT$/i['$===']($case)) { - tableName = "願い事表「生」"; - table = ["生きている実感が欲しい。", "今とは違う人生をやり直したい。", "死んでしまったので復活したい。", "死んでしまった人を復活させたい。", "生レバー復活しないかな。", "理想の人生を手に入れたい。"];}; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - self.$debug("getWishTableResult result", result); - return [tableName, result, number]; - }, $KillDeathBusiness_getWishTableResult$8.$$arity = 1); - - Opal.def(self, '$getNameTableResult', $KillDeathBusiness_getNameTableResult$9 = function $$getNameTableResult(type) { - var $a, $b, self = this, tableName = nil, nameTable1 = nil, nameTable2 = nil, nameTable3 = nil, result = nil, number = nil, $case = nil, result1 = nil, num1 = nil, result2 = nil, num2 = nil, result3 = nil, num3 = nil; - - - tableName = "万能命名表"; - nameTable1 = [[11, "アナログ"], [12, "イージー"], [13, "エターナル"], [14, "エレクトロ"], [15, "オート"], [16, "キング"], [22, "クール"], [23, "グリム"], [24, "グレート"], [25, "スーパー"], [26, "スプーク"], [33, "スマート"], [34, "ドレッド"], [35, "ハイテク"], [36, "ハンターズ"], [44, "ブラック"], [45, "ヘル"], [46, "マジック"], [55, "メカニカル"], [56, "ラヴ"], [66, "レッド"]]; - nameTable2 = [[11, "X"], [12, "アビス"], [13, "グレイブ"], [14, "ゴールド"], [15, "ゴシック"], [16, "シノビ"], [22, "スペシャル"], [23, "デーモン"], [24, "デジタル"], [25, "デス"], [26, "デビル"], [33, "ナイトメア"], [34, "バロック"], [35, "ブラッド"], [36, "ブレイク"], [44, "ブレイズ"], [45, "フロスト"], [46, "メガ"], [55, "メカナイズド"], [56, "リンボ"], [66, "ロボ"]]; - nameTable3 = [[11, "アーム"], [12, "アイ"], [13, "イヤー"], [14, "ウィング"], [15, "エンジン"], [16, "カード"], [22, "ガン"], [23, "ギア"], [24, "キャノン"], [25, "サーキット"], [26, "スキン"], [33, "ソード"], [34, "タービン"], [35, "ハート"], [36, "ハンド"], [44, "ビーム"], [45, "プレート"], [46, "ヘア"], [55, "メカニズム"], [56, "モーター"], [66, "レッグ"]]; - result = ""; - number = 0; - $case = type; - if ((1)['$===']($case)) {$b = self.$get_table_by_d66_swap(nameTable1), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else if ((2)['$===']($case)) {$b = self.$get_table_by_d66_swap(nameTable2), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else if ((3)['$===']($case)) {$b = self.$get_table_by_d66_swap(nameTable3), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else { - $b = self.$get_table_by_d66_swap(nameTable1), $a = Opal.to_ary($b), (result1 = ($a[0] == null ? nil : $a[0])), (num1 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_d66_swap(nameTable2), $a = Opal.to_ary($b), (result2 = ($a[0] == null ? nil : $a[0])), (num2 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_d66_swap(nameTable3), $a = Opal.to_ary($b), (result3 = ($a[0] == null ? nil : $a[0])), (num3 = ($a[1] == null ? nil : $a[1])), $b; - result = "" + (result1) + (result2) + (result3); - number = "" + (num1) + "," + (num2) + "," + (num3);}; - return [tableName, result, number]; - }, $KillDeathBusiness_getNameTableResult$9.$$arity = 1); - - Opal.def(self, '$getSubprotTableResult', $KillDeathBusiness_getSubprotTableResult$10 = function $$getSubprotTableResult(command) { - var $a, $b, self = this, tableName = nil, table = nil, $case = nil, result = nil, number = nil; - - - tableName = ""; - table = []; - $case = command; - if (/^OSPT$/i['$===']($case) || /^OccultSPT$/i['$===']($case)) { - tableName = "サブプロット表「オカルト」"; - table = ["" + "『死の探求』\n" + "回収人から一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、番組による頻繁な死が相手をどう変えていくのか観察したくなる。相手への関係を属性「研究対象」で獲得する。【深度】は1になる。\n" + "クリア条件:相手が、あなたの登場しているシーンで二回死亡する。死亡によって相手がどう変わったのか、勝手なことをつらつらと語ってもいいし、なにも語らずにわかったような顔をしていても構わない。\n" + "報酬:【視聴率】10%増加、400【ソウル】", "" + "『来訪者』\n" + "キャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、相手が着ているものは巧妙な偽装であり、その正体が宇宙人であることに気付く。相手への関係を属性「宇宙人」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を2以上にする。すると、相手は自分の本当の姿を教えてくれる。本当に宇宙人なのかどうかは相手次第で、別にどちらでもかまわない。適当に喜んだりがっかりしておくこと。\n" + "報酬:【視聴率】10%増加、200【ソウル】", "" + "『記憶喪失』\n" + "キャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、その瞬間に、相手が何かを知っているという確信だけを残し、あとのすべての個人的な記憶を失う。相手への関係を、属性「知人」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を3にする。すると、相手はあなたがどんな人物だったのか思い出させてくれる。直接思い出しても構わないし、なにげない仕草が思い出すきっかけになるのかもしれない。\n" + "報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】、相手がNPCなら600【ソウル】", "" + "『秘密結社』\n" + "キャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手がなにげなく行っていた動作が、あなたの所属する秘密結社のメンバーであることを示すサインだと見抜く。相手への関係を、属性「メンバー」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を2以上にする。相手は本当にメンバーなのかもしれないし、あなたの勘違いかもしれない。どちらにせよ、探りを入れながら近づくことで、相手のことがよくわかった。\n" + "報酬:【視聴率】10%増加、200【ソウル】", "" + "『殺人鬼』\n" + "キャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手が有名な連続殺人犯の犯人であると確信する。顔や性別は変えたのかもしれない。相手への関係を、属性「殺人鬼」で獲得する。【深度】は1になる。\n" + "クリア条件:連続殺人鬼を許せないなら、相手を戦闘で一度倒す。または、連続殺人鬼のファンなら、相手と一緒に「サービス」シーンを成功させる。どちらにせよ、相手が本当に連続殺人をやったのかははっきりしない。\n" + "報酬:【視聴率】10%増加、クリア条件達成時の相手への関係【深度】× 200【ソウル】", "" + "『魔法使い』\n" + "キャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手はもともと本当に魔法が使える人間であり、持っている道具は高名なマジックアイテムだと確信する。相手への関係を、属性「魔法使い」で獲得する。【深度】は1となる。\n" + "クリア条件:相手への関係の【深度】を2以上にし、かつ相手からあなたへの関係の【深度】を1以上にする。根負けした相手は魔法を教えてくれて、あなたは満足する。ちなみに、この魔法は効果があいまいでハッキリしないものを適当に設定する。\n" + "報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】"];} - else if (/^FSPT$/i['$===']($case) || /^FamilySPT$/i['$===']($case)) { - tableName = "サブプロット表「家族」"; - table = ["" + "『説得』\n" + "キャラクターから一人選び、相手が「小道具」で習得している特技を指定特技として判定を行う。判定に成功すると、相手が持っているのはあなたの贈りものであり、旧友が悪趣味なショーに出ているのだとわかる。降りるように説得しなければ。相手への関係を、属性「旧友」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を3にする。すると、説得をやるだけやったあなたは満足する。相手は多分諦めない。または、選択された「旧友」が死亡するか(回収人なら)地獄に墜ちる。すると、なんだかあきらめがつく。\n" + "報酬:【視聴率】10%増加、400【ソウル】", "" + "『生き別れ』\n" + "キャラクターから一人選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手が家族特有の特徴を持っていることがわかり、かなり昔に生き別れた家族だと確信する。相手への関係を、属性「生き別れ」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を3にする。すると、相手はあなたのことを思い出す。まるで違う環境で暮らしてきたのかもしれないが、あなたたちのルーツは同じだ。続柄や生別したときの状況は好きに設定できるし、別に設定しなくてもかまわない。\n" + "報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】相手がNPCなら600【ソウル】", "" + "『家族自慢』\n" + "回収人ーから一人選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の職業を聞き出したうえで、同じ分野で相手より成功している家族の話を聞かせてやれる。相手への関係を、属性「自慢済み」で獲得する。【深度】は1になる。\n" + "クリア条件:三人のキャラクターへ【深度】1以上の関係を獲得し、すべての属性を「自慢済み」にする。すでに「自慢済み」の人は、死んでいたりいなくなっても大丈夫。かなり嫌がられそうだが、まあ仕方がない。\n" + "報酬:【視聴率】10%増加、400【ソウル】", "" + "『捨て猫』\n" + "回収人から一人選び、相手が「感情」で修得している特技を指定特技として判定を行う。判定に成功すると、懐から仔猫が出てくる。これは相手が故あって捨てた猫だが、あなたはそれが許せない。相手への関係を、属性「猫の飼い主」で獲得する。【深度】は1になる。\n" + "クリア条件:相手に猫を飼わせるため、戦闘で一度倒す。すると、相手は猫を飼うことに同意する。猫の詳細なスペックを決めてもいいし、決めなくてもかまわない。あと、動物の種類も実は自由だ。\n" + "報酬:【視聴率】10%増加、クリア条件達成時の相手への関係の【深度】× 200【ソウル】", "" + "『義理の家族』\n" + "回収人から一人選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、衣装の傾向から、相手が義理の家族であることが判明する。こんなところでなにをやっているんだ。相手への関係を、属性「義理の家族」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を2以上にする。すると、相手はなぜ番組に出ることになったのか、そのときどんな状況や気分だったのかを話してくれる。または、相手が地獄に墜ちると、縁が切れてクリアだ。\n" + "報酬:【視聴率】10%増加、200【ソウル】", "" + "『孤独な人』\n" + "キャラクターから一人選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、相手が孤独に耐えている寂しい人物であることを確信する。あなたが相手を救うのだ。相手への関係を、属性「孤独な人」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を2以上にする。すると、相手は打ち解ける……かもしれないし、なにも変わないかもしれない。ただ、あなたには、相手の孤独が少し癒やされたことがわかる。\n" + "報酬:【視聴率】10%増加、200【ソウル】"];} - else if (/^LoSPT$/i['$===']($case) || /^LoveSPT$/i['$===']($case)) { - tableName = "サブプロット表「恋愛」"; - table = ["" + "『禁断の恋』\n" + "標的が「衣装」で修得している特技を指定特技として判定を行う。標的がすでに死亡している場合、サブプロット表を振りなおす。判定に成功すると、標的に一目惚れするか、標的が前から好きだった人であったことが判明する。急がないと殺されてしまう。相手への関係を、属性「好きな人」で獲得する。【深度】は1となる。\n" + "クリア条件:相手への関係の【深度】を3にする。すると、標的はあなたの思いに対してなんらかの答えを返す。結果がどうあれ、いい経験になるだろう。または、相手への関係の【深度】が2以上の状態で、相手が死亡してもいい。嘆こう。\n" + "報酬:【視聴率】10%増加、400【ソウル】", "" + "『番組内デート』\n" + "回収人から一人を選び相手が「情動」で修得している特技を指定特技として判定を行う判定に成功すると、相手とあなたは番組開始前からつきあっている。収録のついでに仲を進展させてもいいかもしれない。相手への関係を、属性「恋人」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を2以上にし、相手からあなたの関係の【深度】も2以上にする。するとけっこういい感じに関係が発展する。番組終了時に視聴者にお知らせすることがあるかもしれない。\n" + "報酬:【視聴率】10%増加、あなたと相手の両方に400【ソウル】", "" + "『悩み相談』\n" + "キャラクターから一人を選び相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の職業的見地から恋愛に関するアドバイスをもらえるかもしれないと気づく。相手への関係を属性「相談役」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】は3にする。恋愛に関するアドバイスをもらった気になる。相手がその気で言ったかは関係ない。最後に関係の属性を『好きな人』に変えたりするとそれっぽい。\n" + "報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】相手がNPCなら600【ソウル】", "" + "『人気獲得』\n" + "キャラクターから一人を選び相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手とあなたが並ぶと非常に画面映えして視聴者に受けると確信する。誘ってサービスシーンを成功させればヘル視聴者に愛されるだろう。相手への関係を属性「相棒」で獲得する。【深度】は1になる。\n" + "クリア条件:相手と一緒にサービスシーンを成功させる。驚くべきことに、ヘル視聴者は本当にコンビが気に入ってしまう。ただ、もう一度同じことをやっても、ウケるかどうかはわからない。\n" + "報酬:【視聴率】10%増加、200【ソウル】", "" + "『贈り物』\n" + "キャラクターから一人を選び相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の望みがなんとなくわかる。欲しいものすらわかるので、あげたら好きになってもらえるかもしれない。なにが欲しいのか、相手に実際に尋ねる必要はない。相手への関係を属性「欲しがり」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を2以上にする。すると相手は貴方のプレゼントを受け取る。何を渡したのかは適当に決めてかまわないが、迷ったらヘルCM表をつかうこと。\n" + "報酬:【視聴率】10%増加、200【ソウル】", "" + "『手料理』\n" + "キャラクターから一人を選び相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の持っているものがヒントになって、すごい料理を思いつく。もしかしたら材料にするのかもしれない。相手への関係を属性「毒見役」で獲得する。【深度】は1になる。\n" + "クリア条件:相手に戦闘を挑み、キラートリックで倒す。このとき、キラートリックの名前は思いついた料理の名前に変更される。困ったら万能命名表を使うこと。\n" + "報酬:【視聴率】10%増加、500【ソウル】"];} - else if (/^JSPT$/i['$===']($case) || /^JusticeSPT$/i['$===']($case)) { - tableName = "サブプロット表「正義」"; - table = ["" + "『殺せない標的』\n" + "標的が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手があなたの正義に照らし合わせて申し分のない人物である事が分かる(もしくは、実は非常に善良な人物であったことがわかる)。これを殺させるわけにはいかない。相手への関係を、属性「護衛対象」で獲得する。【深度】は1になる。\n" + "クリア条件:結果フェイズまで相手を生き残らせる。なぜ味方をしたのか、なぜ味方をするのか、相手に語ってあげると喜ぶかもしれない。\n" + "報酬:【視聴率】10%増加、700【ソウル】", "" + "『親友の復讐』\n" + "キャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手が身につけていた装身具が、あなたの親友を殺害した犯人の特徴とぴったり合致することがわかる。相手への関係を、属性「犯人」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を2以上にする。すると、相手は自白する。そのあとに戦闘を挑み、一度相手を倒せ。死んだものは帰ってこないが、あなたは満足する。\n" + "報酬:【視聴率】10%増加、400【ソウル】", "" + "『護身』\n" + "キャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、相手はかつてあなたに断罪された事があり、それを恨みに思っていることが明らかになる。相手への関係を、属性「復讐者」で獲得する。【深度】は1になる。\n" + "クリア条件:結果フェイズまで標的に殺されない。すると、なんとかやりすごせる・・・・・・が、次はどうなることやら。\n" + "報酬:【視聴率】10%増加、相手が回収人なら500【ソウル】相手がNPCなら100【ソウル】", "" + "『心酔』\n" + "回収人から一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手を第一印象から善人だと確信し、いろんな理屈をつけて相手の願いごとを正義だと信じ込む。相手への関係を、属性「善人」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を2以上にする。すると、相手の願いごとの本質を理解し、酔いから醒めたり、忠実な協力者となることを約束したりする。\n" + "報酬:【視聴率】10%増加、200【ソウル】", "" + "『悪党』\n" + "キャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、相手はその筋では有名な悪い職業人であることが判明する。こいつを放っておけば悲しむ人が出るだろう。相手への関係を、属性「悪人」で獲得する。【深度】は1になる。\n" + "クリア条件:悪人を許せないなら、相手を戦闘で一度倒す。または、改心させたいなら、相手への関係の【深度】を3にする。相手が本当に改心するかどうかは関係なく、会心の説得を撃ち放ったことで、あなたは満足する。\n" + "報酬:【視聴率】10%増加、クリア条件達成時の相手への関係【深度】�200【ソウル】", "" + "『サイドキック』\n" + "回収人から一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、相手は自分の相棒として悪を倒すのに最適な人物であると確信する。サイドキックだ。相手への関係を、属性「仲間」で獲得する。【深度】は1になる。\n" + "クリア条件:自分が登場しているシーンで、相手が誰かを倒し、そのあと自分が殺されずに戦闘が終了する。相手を褒めて、仲間にふさわしい人物だと宣言してあげよう。\n" + "報酬:【視聴率】10%増加、300【ソウル】"];} - else if (/^TSPT$/i['$===']($case) || /^TrainingSPT$/i['$===']($case)) { - tableName = "サブプロット表「修行」"; - table = ["" + "『戦闘狂』\n" + "回収人から一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、周りにいる強そうな人に対して対抗心が沸いてくる。結局、勝つのは一人なんだから、今から叩いておいたほうがいい。相手への関係を、属性「敵」で獲得する。【深度】は1になる。\n" + "クリア条件:相手を含む三人のキャラクターを一回以上死亡させる。すると、あなたの戦闘熱はおさまる。そこから仲良くできるかどうかは微妙なところかもしれない。\n" + "報酬:【視聴率】10%増加、600【ソウル】", "" + "『弟子入り』\n" + "キャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは、その職業の世界的権威を発見する。故あって引退して久しいが、教えを請えば今後の人生の役に立つだろう。教える気があるかどうかは知らないが。相手への関係を、属性「師匠」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を3にする。すると、相手は何かを教えてくれる。あるいは、もう教えることはなにもないと言うだろう。\n" + "報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】相手がNPCなら600【ソウル】", "" + "『ライバル』\n" + "キャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。成功すると、相手はあなたに特定の分野で勝利したことのある人物だとわかる。奴に勝たねば、あなたは先に進めない。相手への関係を、属性「ライバル」で獲得する。【深度】は1になる。\n" + "クリア条件:2サイクル目以降で相手を一度倒す。あなたが倒すまで、相手は他のキャラクターに倒されてはならない。お前を倒すのは俺だって決まってるんだからな!\n" + "報酬:【視聴率】10%増加、相手が回収人なら300【ソウル】相手がNPCなら500【ソウル】", "" + "『改造』\n" + "回収人から一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、相手に比べて自分の肉体が貧弱すぎるような気がしてくる。改造してもっと強くならなければ。相手への関係を、属性「基準線」で獲得する。【深度】は1になる。\n" + "クリア条件:相手よりも多くのヘルサイバーをインストールした状態で結果フェイズを迎える。この時数えるのは個数だけ、そして同じ数ではダメだ。\n" + "報酬:【視聴率】10%増加、600【ソウル】", "" + "『装備改善』\n" + "回収人から一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の持っている装備について興味が湧く。自分の能力上昇のヒントになるかもしれない。相手への関係を、属性「いい装備」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を2以上にする。すると、相手は持ち物について解説してくれるか、あるいはキッパリと断る。あなたの探索はそこで終わるが、経験は残る。\n" + "報酬:【視聴率】10%増加、200【ソウル】", "" + "『特訓』\n" + "回収人から一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると相手は自分と同じく修行不足を痛感しているのだと確信する。一緒にトレーニングだ。相手への関係を、属性「特訓仲間」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を2以上にする。すると、あなたと相手はなんらかの手応えを感じて、特訓は終わる。このタイミングでキラートリックの名前を変えたりしてもかまわない。\n" + "報酬:【視聴率】10%増加、200【ソウル】"];} - else if (/^BSPT$/i['$===']($case) || /^BeamSPT$/i['$===']($case)) { - tableName = "サブプロット表「笑い」"; - table = ["" + "『大サービス』\n" + "キャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、この殺伐とした番組を和やかにできるのは、自分と相手しかいないと確信する。相手への関係を、属性「相棒」で獲得する。【深度】は1になる。\n" + "クリア条件:相手と一緒に。「サービス」シーンの判定に2回成功する。すると、なんだか番組が楽しくなったような気もするが……変わってない気もする。あなたの戦いはまだ続く。\n" + "報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】", "" + "『脱げ』\n" + "キャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の衣装をいい感じで脱がせればウケが取れると確信してしまう。相手への関係を、属性「脱がせたい」で獲得する。【深度】は1になる。\n" + "クリア条件:相手に戦闘を挑み。キラートリックで倒す。このとき、相手の衣装はバラバラに粉砕され、ヘルスタイリストが相手を罵倒しながら新しいものを用意することになる。\n" + "報酬:【視聴率】10%増加、500【ソウル】", "" + "『いい話』\n" + "キャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手はヘコんでいるのか嫌なことがあるのか、表情に乏しい。笑顔を取り戻してやらなければ。相手への関係を、属性「暗い奴」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を3にする。相手は少し笑顔を見せたかもしれないし、光の加減でそう見えただけかもしれない。だが、あなたは確かな手応えを感じる。\n" + "報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】相手がNPCなら600【ソウル】", "" + "『笑い屋』\n" + "キャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、相手は援護がないとサービスシーンがキツそうだな、と直感する。相手への関係を、属性「真面目な奴」で獲得する。【深度】は1になる。\n" + "クリア条件:相手の登場する「サービス」シーンに自分も登場し、カメラの外から笑い声を出すロールプレイを行う。\n" + "報酬:【視聴率】10%増加、あなたと相手の両方に100【ソウル】", "" + "『戦闘回避』\n" + "キャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の願いごとに深く共感してしまう。そのため、相手の邪魔はしたくはなくなる。相手への関係を、属性「勝つべき人」で獲得する。【深度】は1になる。\n" + "クリア条件:結果フェイズまで直接相手を殺さない。すると、誰も気づかないかもしれないが、あなたは自分のやるべきことをやったことになる。\n" + "報酬:【視聴率】10%増加、200【ソウル】", "" + "『親友』\n" + "キャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、その小道具についての会話をきっかけに、相手への興味が芽生える。もしかしたら友達になれるかもしれない。相手への関係を、属性「友人」で獲得する。【深度】は1になる。\n" + "クリア条件:相手への関係の【深度】を2以上にする。すると、あなたと相手は友情のようなもので結ばれるかもしれないし、やはり無理だったのだと、あなたが諦めるかもしれない。\n" + "報酬:【視聴率】10%増加、200【ソウル】"];}; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getSubprotTableResult$10.$$arity = 1); - - Opal.def(self, '$getCmTableResult', $KillDeathBusiness_getCmTableResult$11 = function $$getCmTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "CM表"; - table = [[11, "あなたのTシャツ/決めポーズの姿が背中にプリントされたTシャツです。そして、フロントにはあの名台詞が!"], [12, "あなたのアクションフィギュア/放送中から大人気!職人が一つ一つ入魂の手作り!夜になると、込められた魂が泣き叫びます。"], [13, "ヘルーレイボックス/シーズン666の全てがここに……特典映像満載で送る、豪華ボックスセット!予約特典はヘルくんストラップです。"], [14, "ヘルエアコン/これさえあれば、火事の最中でも気温は氷点下!逆に家を燃やすこともできますよ。温度調節機能は有料オプションです!"], [15, "ヘルおむつ/ヘルギャザーで漏れをストップ、666年間履きっぱなしでも平気!中身がどうなるか保証しません、ヘルおむつ"], [16, "ヘルサプリ/寝なくても平気!カラフルな幻覚が見える!でもメイン機能は健康増進です。ヘルサプリで健康生活を!"], [22, "ヘルツアーズ/お得な料金で地獄百景を回ろう!苦しむ人間との魂の触れ合いが満載!ヘルツアーズでは、他社ではできない体験をお約束します。"], [23, "ヘルテレビ/夜中に女性が出てきますが、気にしなければ大丈夫!アナログヘルテレビは政府の協賛を得ています。"], [24, "ヘルビール/アルコール度数666%、ヘルホップ使用。地獄の渇きにはヘルビール……違いの分かる人のために。"], [25, "ヘルフォン/ドヤ顔のノマド気取りをぶちのめすこともできます。そう、ヘルフォンならね。"], [26, "ヘルまんじゅう/数千年のご愛顧をいただいております、地獄銘菓ヘルまんじゅう。うまい、ヘルうますぎる。しかしながら、食べると死にます。"], [33, "ヘルモービル/人を轢けば轢くほど速くなり……走りは別次元へ。ヘルモービルが、お求めやすい価格で新登場。"], [34, "ヘル会話教室/隣人をうまく罵れない?イヤな奴に言いくるめられた?ヘル会話を学べば、どんな相手も激昂させられます!"], [35, "ヘル金融/金利666%の安心がここに。ヘル金融の取り立ては、非常に紳士的だと評判です。"], [36, "ヘル汁(健康飲料)/辺獄で採れた新鮮な毒草を、そのまま粉末にしました。これを飲めば、もう病気や老化の心配はいりません。健康飲料ヘル汁。"], [44, "ヘル整形外科/無保険かつ無免許ですが、どんな注文にも応えます。ヘル整形外科は、あなたのおっしゃる通りの外見を実現します!"], [45, "ヘル生命保険/すぐ死ぬあなたに、ヘル生命の安全コース。残された人には地獄が待っています。"], [46, "ヘル洗剤/どんなにしつこい血糊や汚物も一撃!どんな色の服も地獄の黒に染まります!ヘル洗剤、好評発売中!"], [55, "ヘル洗濯機/666層式、音速を超えた回転があなたの衣装を粉々に!なにをしたかったのか忘れれば壮観です。ヘル洗濯機!"], [56, "ヘル掃除機/好評の壁面粉砕機能に加えて、今年のモデルには屋根吸引機能も!ヘル掃除機のスイッチを入れるだけで、あなたの家がなくなります。"], [66, "ヘル入浴剤/体が溶ける!新感覚で話題を呼んだヘル入浴剤がついに登場!死体の処理には使わないでください。"]]; - $b = self.$get_table_by_d66_swap(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getCmTableResult$11.$$arity = 0); - - Opal.def(self, '$getErTableResult', $KillDeathBusiness_getErTableResult$12 = function $$getErTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "蘇生副作用表"; - table = [[11, "おいそそうな匂いがするようになった"], [12, "おまけでヤギが出てきた"], [13, "髪が蛍光色に変わった"], [14, "声がロボっぽくなった"], [15, "先が三角形になったシッポが生えた"], [16, "頭上に謎のプログレスバーが出ている"], [22, "性別が変わった"], [23, "全身にモザイクがかかった"], [24, "全体的に半透明になった"], [25, "ちょっと腐った"], [26, "肌が蛍光色に変わった"], [33, "羽が生えた"], [34, "番組参加中の記憶を失った"], [35, "額に第三の目が開いた"], [36, "微妙に浮いてる"], [44, "ひよこにかわった"], [45, "不合格品のスタンプを押された"], [46, "太った"], [55, "耳が好きな動物のものに変わった"], [56, "痩せた"], [66, "立派な角が額に生えた"]]; - $b = self.$get_table_by_d66_swap(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getErTableResult$12.$$arity = 0); - - Opal.def(self, '$getWKTableResult', $KillDeathBusiness_getWKTableResult$13 = function $$getWKTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "一週間表"; - table = [[11, "家を追い出されたヘルPが泊まりに来た"], [12, "危険なオーラを醸し出せるようになり、非常にモテた"], [13, "地獄落ちを覚悟し、身辺整理を行った"], [14, "地獄テレビ情報雑誌にインタビューを受けた"], [15, "実家の商売が好調になるが、客がみんなヘルピープル"], [16, "信号待ちをしていたら、仕事中の悪魔にサインを求められた"], [22, "親戚が番組を見ていて、電話で感想を伝えてきた"], [23, "次の週の護衛天使と知り合いになった"], [24, "次の週の標的と知り合いになった"], [25, "トラウマが残って全く眠れず、酒に溺れた"], [26, "願いが叶うなら働かなくていいし、仕事を辞めた"], [33, "願いとは別に出演報酬が振り込まれたので豪遊した"], [34, "番組中のノリで人をはたいたら、なんだか死んでしまった"], [35, "番組や悪魔が怖くなって世界中を逃げ回った"], [36, "ファンを名乗るストーカーに自宅を荒らされた"], [44, "ふと思い立って山に籠り、修行に明け暮れた"], [45, "ヘルスタイリストに自宅の衣類をすべて燃やされた"], [46, "ヘルドクターが借金の申し込みに来た"], [55, "ヘルドレスの偽物を売りつけようとする下級悪魔と戦った"], [56, "他の回収人のうち一人と同じ職場だったことが明らかに"], [66, "妙に寄付を募る営業電話がかかってくる週だった"]]; - $b = self.$get_table_by_d66_swap(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getWKTableResult$13.$$arity = 0); - - Opal.def(self, '$getServiceSceneTableResult', $KillDeathBusiness_getServiceSceneTableResult$14 = function $$getServiceSceneTableResult() { - var $a, $b, self = this, tableName = nil, sceneTable = nil, sceneGroup = nil, number1 = nil, $case = nil, table = nil, resultTmp = nil, number2 = nil, result = nil, number = nil; - - - tableName = "サービスシーン表"; - sceneTable = ["脱衣系サービスシーン表", "暴力系サービスシーン表", "旅行系サービスシーン表", "恋愛系サービスシーン表", "感動系サービスシーン表", "別ジャンルサービスシーン表"]; - $b = self.$get_table_by_1d6(sceneTable), $a = Opal.to_ary($b), (sceneGroup = ($a[0] == null ? nil : $a[0])), (number1 = ($a[1] == null ? nil : $a[1])), $b; - $case = sceneGroup; - if ("脱衣系サービスシーン表"['$===']($case)) {table = ["衣装の不調", "着替え", "脱衣麻雀", "入浴", "水着で戦う", "野球拳"]} - else if ("暴力系サービスシーン表"['$===']($case)) {table = ["勝ったあとの暴力", "集団の暴力", "暴力をのほめかす会話", "負けた後の暴力", "まったく無意味な暴力", "無意味な暴力"]} - else if ("旅行系サービスシーン表"['$===']($case)) {table = ["移動機関の紹介", "地元の遊びの紹介", "地元の動物の紹介", "地元の宿の紹介", "寝起きドッキリ", "名物料理の紹介"]} - else if ("恋愛系サービスシーン表"['$===']($case)) {table = ["キスシーン", "恋に気付く", "恋に悩む", "デートシーン", "秘密を告白する", "ラブシーン"]} - else if ("感動系サービスシーン表"['$===']($case)) {table = ["家族の愛に気付く", "かっこいいことを言う", "失敗して落ち込む", "地元住民と触れ合う", "死んだ人の話をする", "高いところでかっこいいことをいう"]} - else {table = ["サイコサスペンス", "スペースオペラ", "童話", "ヒロイックファンタジー", "モンスターホラー", "ロボ"]}; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (resultTmp = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - result = "" + (sceneGroup) + "「" + (resultTmp) + "」を行う。"; - number = "" + (number1) + (number2); - return [tableName, result, number]; - }, $KillDeathBusiness_getServiceSceneTableResult$14.$$arity = 0); - - Opal.def(self, '$getSoulTableResult', $KillDeathBusiness_getSoulTableResult$15 = function $$getSoulTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "ソウル放出表"; - table = ["100", "200", "200", "200", "300", "300"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getSoulTableResult$15.$$arity = 0); - - Opal.def(self, '$getSceneTelopGenericTableResult', $KillDeathBusiness_getSceneTelopGenericTableResult$16 = function $$getSceneTelopGenericTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "汎用演出表"; - table = ["大きくて分かりやすい文字でテロップが出る", "回想に合わせて再現ビデオが流れる", "関係者が登場人物について語る", "ゲストヘルピープルが行動を論評する", "行動の是非についてヘル視聴者の投票が始まる", "ヘルバンドの新曲がBGMとして流れる"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getSceneTelopGenericTableResult$16.$$arity = 0); - - Opal.def(self, '$getHairStylistAbuseTableResult', $KillDeathBusiness_getHairStylistAbuseTableResult$17 = function $$getHairStylistAbuseTableResult(type) { - var $a, $b, self = this, tableName = nil, hellStylistAbuseTable1 = nil, hellStylistAbuseTable2 = nil, hellStylistwtable1 = nil, hellStylistwtable2 = nil, $case = nil, result = nil, number = nil, result1 = nil, num1 = nil, result2 = nil, num2 = nil, before = nil, after = nil; - - - tableName = "ヘルスタイリスト罵倒表"; - hellStylistAbuseTable1 = [[11, " 汁まみれになった"], [12, " お爺ちゃんがこのまえ捨てた"], [13, " 失敗メイクの"], [14, " 低予算の映画のモンスター代わりにされた"], [15, " 仲間はずれの"], [16, " 悪い意味で成分無調整の"], [22, " 宇宙人が中身を抜いていったあとの"], [23, " 化学処理班が処理しにきそうな"], [24, " 革命直後にギロチンにかけられた"], [25, " 狂気の芸術家が想像で作りあげた"], [26, " 故郷の村を帝国軍に焼かれた直後の"], [33, " 五年ぶりにベッドの下から出てきた"], [34, " 高速道路でなんども轢かれた"], [35, " 死後六週間の"], [36, " 失敗料理を無理に食べた"], [44, " 小さい子供がはじめて描いた"], [45, " 箪笥と壁の隙間に住み着いた"], [46, " 猫がくわえてもってきた"], [55, " 有名なタコっぽいモンスターを見てしまった"], [56, " 旅行先で財布がないことに気づいた"], [66, " 猟奇殺人を趣味にしている"]]; - hellStylistAbuseTable2 = [[11, " アルマジロ"], [12, " イソギンチャク"], [13, " カメムシ"], [14, " カモノハシ"], [15, " クジャク"], [16, " クラゲ"], [22, " ゴキブリ"], [23, " ゴミムシ"], [24, " サル"], [25, " ドブネズミ"], [26, " ナマケモノ"], [33, " ナマコ"], [34, " うんこ"], [35, " フンコロガシ"], [36, " ペンギン"], [44, " ミジンコ"], [45, " 古い人形"], [46, " 人食い熊"], [55, " 毒トカゲ"], [56, " 毛虫"], [66, " 野良犬"]]; - hellStylistwtable1 = ["「まるで『", "「まるで『", "「まさに『", "「まさに『", "「あなたは『", "「あなたは『"]; - hellStylistwtable2 = ["』みたいよ!」", "』みたいだわ!」", "』じゃないの!」", "』ね。」", "』に見えるわ。」", "』そっくりよ!」"]; - $case = type; - if ((1)['$===']($case)) {$b = self.$get_table_by_d66_swap(hellStylistAbuseTable1), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else if ((2)['$===']($case)) {$b = self.$get_table_by_d66_swap(hellStylistAbuseTable2), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else { - $b = self.$get_table_by_d66_swap(hellStylistAbuseTable1), $a = Opal.to_ary($b), (result1 = ($a[0] == null ? nil : $a[0])), (num1 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_d66_swap(hellStylistAbuseTable2), $a = Opal.to_ary($b), (result2 = ($a[0] == null ? nil : $a[0])), (num2 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_1d6(hellStylistwtable1), $a = Opal.to_ary($b), (before = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$get_table_by_1d6(hellStylistwtable2), $a = Opal.to_ary($b), (after = ($a[0] == null ? nil : $a[0])), $b; - result = "" + (before) + (result1) + (result2) + (after); - number = "" + (num1) + "," + (num2);}; - return [tableName, result, number]; - }, $KillDeathBusiness_getHairStylistAbuseTableResult$17.$$arity = 1); - - Opal.def(self, '$getSkillTableResult', $KillDeathBusiness_getSkillTableResult$18 = function $$getSkillTableResult(type) { - var $a, $b, self = this, skillTableFull = nil, skillTable = nil, num1 = nil, skillGroup = nil, table = nil, tableName = nil, skill = nil, num2 = nil, result = nil, number = nil; - - - skillTableFull = [["職業", ["無職", "芸術家", "研究者", "家事手伝い", "学生", "悪漢", "労働者", "探偵", "大物", "医師", "公務員"]], ["動作", ["叫ぶ", "閃く", "斬る", "振る", "投げる", "殴る", "蹴る", "跳ぶ", "撃つ", "掴む", "待つ"]], ["小道具", ["ピアス", "髪飾り", "銃", "ネックレス", "ベルト", "眼鏡", "帽子", "時計", "剣", "リング", "タトゥー"]], ["衣装", ["ネイキッド", "アウトドア", "エスニック", "ヒップホップ", "ミリタリー", "フォーマル", "トラッド", "ゴシック", "パンク", "メタル", "アイドル"]], ["情動", ["愛", "喜び", "期待", "焦り", "自負", "怒り", "悲しみ", "嫉妬", "恐怖", "恥", "嫌悪"]], ["願望", ["死", "復讐", "勝利", "支配", "獲得", "繁栄", "強化", "安全", "健康", "長寿", "生"]]]; - $b = self.$get_table_by_1d6(skillTableFull), $a = Opal.to_ary($b), (skillTable = ($a[0] == null ? nil : $a[0])), (num1 = ($a[1] == null ? nil : $a[1])), $b; - $b = skillTable, $a = Opal.to_ary($b), (skillGroup = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b; - if (type['$==']("T")) { - - tableName = "指定特技ランダム決定表"; - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (skill = ($a[0] == null ? nil : $a[0])), (num2 = ($a[1] == null ? nil : $a[1])), $b; - result = "" + "「" + (skillGroup) + "」《" + (skill) + "》"; - number = "" + (num1) + "," + (num2); - } else { - - tableName = "指定特技分野ランダム決定表"; - result = skillGroup; - number = num1; - }; - return [tableName, result, number]; - }, $KillDeathBusiness_getSkillTableResult$18.$$arity = 1); - - Opal.def(self, '$getExtraTableResult', $KillDeathBusiness_getExtraTableResult$19 = function $$getExtraTableResult(type) { - var $a, $b, self = this, tableName = nil, extraTable1 = nil, extraTable2 = nil, extraTable3 = nil, extraTable4 = nil, $case = nil, result = nil, number = nil, result1 = nil, num1 = nil, result2 = nil, num2 = nil, result3 = nil, num3 = nil, result4 = nil, num4 = nil; - - - tableName = "エキストラ表"; - extraTable1 = [[11, "あなたの親友である"], [12, "あなたと恨んで付け狙っている"], [13, "いそがしく電話で話し込んでいる"], [14, "ころんで逃げ損ねた"], [15, "シーンの背景の持ち主である"], [16, "架空の人物だと思われていた神"], [22, "過去のシーズン優勝者である"], [23, "気分よく酔っ払った"], [24, "恐怖で身をすくませている"], [25, "業界では有名な"], [26, "幸せな家庭を持つ"], [33, "広域指名手配されている"], [34, "今朝のニュースで特集されていた"], [35, "常に微笑みを絶やさない大物"], [36, "真実の探求の過程で発狂した"], [44, "地元では負けを知らない"], [45, "非常に動作にキレのある"], [46, "普通の"], [55, "変身ヒーローの正体である"], [56, "" + "『" + (self.$getNameTableResult(0)['$[]'](1)) + "』の異名を持つ"], [66, "歴史上の人物だが実は生きていた"]]; - extraTable2 = [[11, "サラリーマン"], [12, "スポーツ選手"], [13, "チンピラ"], [14, "ドライバー"], [15, "ねずみ"], [16, "パイロット"], [22, "映画監督"], [23, "犬"], [24, "刺客"], [25, "主婦"], [26, "小説家"], [33, "雀士"], [34, "政治家"], [35, "大金持ち"], [36, "大男"], [44, "謎の美女"], [45, "猫"], [46, "美少女"], [55, "文化人"], [56, "勇者"], [66, "神"]]; - extraTable3 = [[11, "怪しい箱の中から"], [12, "哀れな犠牲者を殺しながら"], [13, "牛に乗りつつ"], [14, "馬に乗りつつ"], [15, "壁を粉砕しながら"], [16, "壁を粉砕しながら"], [22, "濃い霧の中からゆっくりと"], [23, "自動ドアを抜けながら"], [24, "上空から急降下しつつ"], [25, "全速力で走りつつ"], [26, "高いところから"], [33, "テーマ音楽とともに"], [34, "通りがかりに"], [35, "名前と職業のテロップと一緒に"], [36, "バイクに乗りつつ"], [44, "墓をやぶって"], [45, "部下を大勢引き連れて"], [46, "吹きすさぶ風を纏い"], [55, "武器を構えつつ"], [56, "ヘルポータルを通って"], [66, "炎をバックに"]]; - extraTable4 = [[11, "愛らしく登場"], [12, "あざやかに登場"], [13, "あっさりと登場"], [14, "怪しく登場"], [15, "荒々しく登場"], [16, "勢い良く登場"], [22, "美しく登場"], [23, "偉そうに登場"], [24, "おごそかに登場"], [25, "恐ろしく登場"], [26, "かっこよく登場"], [33, "気取って登場"], [34, "死の予感とともに登場"], [35, "しめやかに登場"], [36, "上品に登場"], [44, "だらしなく登場"], [45, "知的に登場"], [46, "なごやかに登場"], [55, "なめらかに登場"], [56, "不機嫌に登場"], [66, "陽気に登場"]]; - $case = type; - if ((1)['$===']($case)) {$b = self.$get_table_by_d66_swap(extraTable1), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else if ((2)['$===']($case)) {$b = self.$get_table_by_d66_swap(extraTable2), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else if ((3)['$===']($case)) {$b = self.$get_table_by_d66_swap(extraTable3), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else if ((4)['$===']($case)) {$b = self.$get_table_by_d66_swap(extraTable4), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else { - $b = self.$get_table_by_d66_swap(extraTable1), $a = Opal.to_ary($b), (result1 = ($a[0] == null ? nil : $a[0])), (num1 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_d66_swap(extraTable2), $a = Opal.to_ary($b), (result2 = ($a[0] == null ? nil : $a[0])), (num2 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_d66_swap(extraTable3), $a = Opal.to_ary($b), (result3 = ($a[0] == null ? nil : $a[0])), (num3 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_d66_swap(extraTable4), $a = Opal.to_ary($b), (result4 = ($a[0] == null ? nil : $a[0])), (num4 = ($a[1] == null ? nil : $a[1])), $b; - result = "" + (result1) + (result2) + "が" + (result3) + (result4); - number = "" + (num1) + "," + (num2) + "," + (num3) + "," + (num4);}; - return [tableName, result, number]; - }, $KillDeathBusiness_getExtraTableResult$19.$$arity = 1); - - Opal.def(self, '$getpcTableResult', $KillDeathBusiness_getpcTableResult$20 = function $$getpcTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "製作委員決定表"; - table = [[11, "ヘルライオン"], [12, "ヘルライオン"], [13, "ヘルライオン"], [14, "ヘルクロウ"], [15, "ヘルクロウ"], [16, "ヘルクロウ"], [22, "ヘルスネーク"], [23, "ヘルスネーク"], [24, "ヘルスネーク"], [25, "ヘルドラゴン"], [26, "ヘルドラゴン"], [33, "ヘルドラゴン"], [34, "ヘルフライ"], [35, "ヘルフライ"], [36, "ヘルフライ"], [44, "ヘルゴート"], [45, "ヘルゴート"], [46, "ヘルゴート"], [55, "ヘルベア"], [56, "ヘルベア"], [66, "ヘルベア"]]; - $b = self.$get_table_by_d66_swap(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getpcTableResult$20.$$arity = 0); - - Opal.def(self, '$getohTableResult', $KillDeathBusiness_getohTableResult$21 = function $$getohTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "実際どうだったのか表"; - table = ["おおむね【興行収入】の予測は正確だった。増減はなしで、回収人はしばらく公共の場所でモテる。", "思ったよりいけた!【興行収入】が4D6億ヘル円増加。ジャンルの佳作として五年後も話に上る。", "ちょっとゴタついて公開時期を逃した。【興行収入】が4D6億ヘル円減少。ヘルーレイの売り上げに期待しよう。", "何の間違いか、同時期に他シーズンの映画版が公開される。【興行収入】は半分になる。", "なんの間違いか、ヘルアカデミー賞をいっぱい取った。【興行収入】は2倍になる!", "エピソード中の表現が微妙かつ厄介な問題を引き起こし、たくさんのヘルピープルが嫌な気分になったうえ公開ナシに。"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getohTableResult$21.$$arity = 0); - - Opal.def(self, '$getplTableResult', $KillDeathBusiness_getplTableResult$22 = function $$getplTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "ヘルライオンタスク表"; - table = ["「フランス語。」指定特技は《芸術家》。なぜか登場人物全員がフランス語でしか会話できないシーンが設定される。知っている限りのフランス語を駆使して意思疎通を試みろ!", "「会話がない。」指定特技は《跳ぶ》。会話そのものが下劣でエンターテイメント的だということで、全く言葉を発することが許されないシーン表が設定される。ジェスチャーで頑張れ!", "「名言の引用。」指定特技は《髪飾り》。過去の名作映画や小説、歴史上の出来事などからパクってきた名言しか口にできないシーンが設定される。教養がないと喋れない!", "「登場人物の増加。」指定特技は《トラッド》。登場人物が無駄に倍に増え、それぞれ個性的な悩みや事件を語り始める。このままでは面倒だしギャラもかさむので、全員殺そう。", "「漠然とした不安。」指定特技は《自負》。特定のものごとではなく、ぼんやりとした不安感に延々苦しんだり落ち込んだりするシーンを強要される。これを退屈にしないのは難しい!", "「長回し。」指定特技は《生》。カットの切り替わりなしで、30分ほど同じシーンが続く。NGは許されない。これで間を持たせられるのはプロの俳優くらいのものだが、回収人は演技の素人だ。"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getplTableResult$22.$$arity = 0); - - Opal.def(self, '$getprTableResult', $KillDeathBusiness_getprTableResult$23 = function $$getprTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "ヘルクロウタスク表"; - table = ["「しょぼいゲスト。」指定特技は《悪漢》。一般人や犬、弟やお母さんがゲストとして登場する。本来のゲストとの差額は着服される。事情を知らされていないゲストとうまく絡め!", "「実家での撮影。」指定特技は《叫ぶ》。撮影場所が実家になる。本来のロケ費用は着服される。家人を説得して、うまく撮影許可をもらわなければ赤字が出てしまうだろう!", "「普段着での撮影。」指定特技は《眼鏡》。なぜかヘルスタイリストが休みで、その分の人件費と衣装代は着服される。普段着のまま超常のアクションをこなすのは不可能に近い!", "「徒歩で移動する。」指定特技は《ゴシック》。ヘルポータルの予算を着服された。ひたすらシーンまで歩かないと撮影すらできない。撮影前に疲れ切ってしまうと、観客にも伝わるだろう。", "「特殊効果が出ない。」指定特技は《期待》。リアルタイム特殊効果の予算を着服された!予算なしで働こうとしないヘルSFXエンジニアを、なんとか泣き落としで働かせろ!", "「食事が出ない。」指定特技は《獲得》。食事の時間だが、ヘル仕出し弁当が来ない。その分の予算を着服されたのだ。空腹のままいい演技をするには、気合に頼るしかない。"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getprTableResult$23.$$arity = 0); - - Opal.def(self, '$getpnTableResult', $KillDeathBusiness_getpnTableResult$24 = function $$getpnTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "ヘルスネークタスク表"; - table = ["「仇。」指定特技は《家事手伝い》。過去改変により、任意の相手が、急に親の仇や恋人の仇になる。戸惑わずに怒りに燃えよう。なぜこうなったのか、考えてしまってはダメだ!", "「些細なことから大喧嘩。」指定特技は《待つ》。任意の相手と、どうでもいい理由でけんかをすることを強要される。本当にどうでもよくなって仲たがいをやめることは許されない。", "「利益が相反する。」指定特技は《ネックレス》。任意の相手の願いごとと自分の願いごとが両立しないことをアピールさせられる。そうでなくても、むりやり理由をひねり出せ!", "「神敵。」指定特技は《ネイキッド》。趣味や宗教を理由に、任意の相手と仲たがいすることを強要される。話してわかってしまったり、趣味の幅が広がってはいけない。", "「幼児期のトラウマ。」指定特技は《嫉妬》。過去改変で哀しい記憶が捏造され、猟奇殺人犯としてキャラ付される。若干引いてしまったり、悲しさを乗り越えてはダメだ。狂え!", "「人類一般への憎しみ。」指定特技は《復讐》。理由なく人を憎むことを強要される。もともと性格のいい回収人にとってはかなりの難行だ。人類の悪いところ探しをしよう!"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getpnTableResult$24.$$arity = 0); - - Opal.def(self, '$getpdTableResult', $KillDeathBusiness_getpdTableResult$25 = function $$getpdTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "ヘルドラゴンタスク表"; - table = ["「バリエーションを見たくてNG。」指定特技は《大物》。別に悪い演技ではないのに、ちょっと違うバリエーションを何度もやらされるぞ。キレずに耐えてくれ!", "「なんか違うからNG。」指定特技は《殴る》。回収人の演技に難癖をつけられた。しかしどんな演技をすればいいのか教えてはくれない。キレずに耐えてくれ!他の人を殴れ!", "「まだ時間があるからNG。」指定特技は《タトゥー》。クソみたいな理由でNGを出されたが、とにかくキレずに耐えてくれ。ヘルドラゴンが機嫌を損ねると広告費が削られる!", "「予算を使い切りたくてNG。」指定特技は《ネイキッド》。まだ人件費が使えるからもう一回、とかいう理由でやり直しだ。キレずに耐えてくれ。ヤツは金を持ってるんだ!", "「機嫌が悪いのでNG。」指定特技は《怒り》。家で何かイヤなことがあったので難癖をつけられた。もう、なにをしてもOKは出ない。キレずに耐えてくれ。いつかは終わる!", "「お前そのものがNG。」指定特技は《安全》。回収人の人選そのものに難癖をつけられた。あなたにNGを出すことだけが目的だ。キレずに耐えてくれ。相手は超強いのだ。"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getpdTableResult$25.$$arity = 0); - - Opal.def(self, '$getpfTableResult', $KillDeathBusiness_getpfTableResult$26 = function $$getpfTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "ヘルフライタスク表"; - table = ["「汚いトイレ。」指定特技は《探偵》。すごく不衛生な場所に背景が変更される。肥溜めと見まごうばかりのトイレか、肥溜めだ。臭いに耐えられるかどうか、そこが勝負の分かれ目だ!", "「芸術的陰部隠し。」指定特技は《跳ぶ》。全裸でシーンを過ごすが映ってはいけないものがある。本来なら水着の布地がある部分がカメラに映らないように、障害物を活用しろ!", "「触手。」指定特技は《ベルト》。唐突に触手モンスターが登場する。彼は紳士的だが容赦なく襲いかかってくるので、セクシーに負けろ!さもなくば観客はがっかりするだろう!", "「ヌルヌル。」指定特技は《トラッド》。なんだか粘液が入ったバケツが登場する。これを被ってシーンを始めろというのだ。成分もわからない粘液はイヤだが、なんとか耐えろ!", "「病原体を経口摂取する。」指定特技は《恐怖》。病気の原因になりそうなものを無理やり食べることに。具体的には排泄物や腐敗したもの、最初から不衛生なものなどだ。", "「局部へのひどい打撃。」指定特技は《死》。ヘルADや他のキャラクターから局部を強打されることを強要される。死なずにうまく痛がれ。下手をするとショックでそのまま死ぬ!"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getpfTableResult$26.$$arity = 0); - - Opal.def(self, '$getpgTableResult', $KillDeathBusiness_getpgTableResult$27 = function $$getpgTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "ヘルゴートタスク表"; - table = ["「アイドルが仲間として登場。」指定特技は《医師》。推しアイドルが回収人の味方として登場するので、スムーズに関係を築いて共闘し、相手を立てよう。リスペクトだ!", "「アイドルが敵として登場。」指定特技は《蹴る》。推しアイドルが標的の味方。回収人の敵として登場!見せ場を用意してあげつつ、うまく倒せ。一方的ではダメだ!", "「アイドルが無意味に登場。」指定特技は《剣》。推しアイドルが登場するが、なぜ登場するのか誰もわからない。本人も役を教えられていない。即興で何とかしろ!", "「アイドルの仲間になる。」指定特技は《エスニック》。推しアイドルの仲間となり、唐突に恋や冒険をすることに。黄金の魂と関係ない話が続くが、観客にそれを気づかせるな!", "「アイドルと握手。」指定特技は《愛》。推しアイドルが急に出てきて握手してくれる。急なことだが、とまどってはいけない。流れるように話題を作って会話し、握手へのコメントをしよう」!", "「混ざってダンス。」指定特技は《健康》。いきなりダンスシーンが始まる!ただし回収人はバックダンサーだ。歌え!踊りきれ!息切れしたり笑顔が引きつるとNGだ!"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getpgTableResult$27.$$arity = 0); - - Opal.def(self, '$getpbTableResult', $KillDeathBusiness_getpbTableResult$28 = function $$getpbTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "ヘルベアタスク表"; - table = ["「ヘルふとん。」指定特技は《大物》。地獄のような寝心地を提供する、一枚200万ヘル円のヘルふとんをアピールすることに。素材は絶対そんなにしないから、技術を強調しよう。", "「ヘルハンドバッグ。」指定特技は《掴む》。無限にものが入るハンドバッグをアピールだ。ただし狙ったものを取り出せないし、バッグのなかにバッグを入れると、ひどいことが起きる。", "「へルマスク。」指定特技は《帽子》。完全にヘルPの頭部を再現した高級マスクを被り、その素晴らしさをアピールしながら映画を撮影しよう。なお、視界はすごく悪い。", "「ヘルカメラ。」指定特技は《アイドル》。かならず心霊写真が写るカメラを観客に売りつけろ!霊障が起きることもあるんだが、それを悟られてはいけない。写真をはっきり見られるな!", "「ヘルウォッチ。」指定特技は《焦り》。時間はわからないが超かっこいい時計をアピール。それってブレスレットじゃないのか、と突っ込まれる前に逃げ切るんだ!", "「ヘルお札。」指定特技は《繁栄》。願いを成就する悪霊が、あなたの成功を確約!その後は成功したまま事故で死ぬことになるが、そんなの些細なことだ!"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_getpbTableResult$28.$$arity = 0); - Opal.const_set($nesting[0], 'TABLES', $hash2(["ANSPT", "MASPT", "MOSPT", "PASPT", "POSPT", "UMSPT"], {"ANSPT": $hash2(["name", "type", "table"], {"name": "サブプロット表「対悪魔」", "type": "1d6", "table": "" + "『退魔の印』\\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の持っているものが有名なマジックアイテムであり、将来的に悪魔と戦うときに有用だと確信する。貸してもらう約束をとりつけなければ!相手への関係を、属性「退魔師」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を2以上にする。すると、相手は小道具を譲ることに同意してくれる。それが役に立つのかは、また別の話。\\n報酬:【視聴率】10%増加、200【ソウル】\n" + "『サービスしない』\\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の姿がヒントになって、サービスシーンが失敗すればヘルピープルがガッカリするだろうと気づく。相手への関係を、属性「失敗要因」で獲得する。【深度】は1になる。\\nクリア条件:相手がサービスシーンを失敗したところに居合わせる。結局、心の声なども放送されているので、あなたの無謀な試みはヘル視聴者に筒t抜けだ。\\n報酬:【視聴率】10%増加、あなたと相手の両方に200【ソウル】\n" + "『悪魔の手下』\\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の職業がなんであるのか気づく……それは昔からあなたが悪魔の手下とみなしている職業だった!相手への関係を、属性「悪魔の手下」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を2以上にする。すると誤解が解けて、職業的偏見も解消される……あるいは、本当に悪魔の手下であったことが判明する。\\n報酬:【視聴率】10%増加、200【ソウル】\n" + "『番組失敗』\\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の抱いている興奮や不安を、ヘルPも同様に抱いていることが分かる。つまり、この番組がうまくいかなければ、悪魔が一匹苦しむ。相手への関係を、属性「気づき」で獲得する。【深度】は1になる。\\nクリア条件:結果フェイズ開始時に【視聴率】が30%以下になっていること。これで奴をリンボにトばせるかもしれない。\\n報酬:【視聴率】10%増加、200【ソウル】\n" + "『不殺』\\n標的が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、標的を殺さないことで悪魔の力を削ぐことができると気づく。そのためには、相手を守らないといけない。相手への関係を、属性「守るべき人」で獲得する。【深度】は1になる。\\nクリア条件:結果フェイズまで相手を生き残らせる。怒るヘルPに皮肉の一つでも言ってやるといいだろう。\\n報酬:【視聴率】10%増加、700【ソウル】\n" + "『仲間』\\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手が悪魔と戦う際に力になってくれる人物だと確信する。愚かな番組への協力をやめさせれば、きっと大丈夫だ。相手への関係を、属性「同士」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を3にする。結局断られるかもしれないが、あなたは言うだけ言ったことで満足した。\\n報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】 相手がNPCなら600【ソウル】\n"}), "MASPT": $hash2(["name", "type", "table"], {"name": "サブプロット「意地悪」", "type": "1d6", "table": "" + "『二位狙い』\\nキャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたはがっかりした相手の顔を見たくなる。相手への関係を、属性「二位にしたい」で獲得する。【深度】は1になる。\\nクリア条件:結果フェイズに他のサブプロットクリアの処理が終わったあとで、相手の【ソウル】が回収人のなかで最も多い状態ではないこと。ギリギリの二位にしてやることで、いい顔が見られるだろう。\\n報酬:【視聴率】10%増加、相手の所持【ソウル】と同じだけの【ソウル】(最低0、最大600)\n" + "『偏見』\\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の職業に対して根強い偏見を持っていることになる。どんどんイヤミを言っていこう。相手への関係を、属性「いらない奴」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を3にする。あなたの偏見は解消されるのかもしれないし、あるいは相手がひどく落ち込むことで、あなたが勝利を確信するのかもしれない。\\n報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】 相手がNPCなら600【ソウル】\n" + "『ダメ衣装』\\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の衣装が非常にダメだと確信する。罵倒したい。いやむしろ罵倒しないといけない。相手への関係を、属性「服がダメ」で獲得する。【深度】は1になる。\\nクリア条件:相手と同じシーンに三回登場し、三シーンにわたってヘルスタイリスト罵倒表を使った罵倒を行う。オリジナルの罵倒でもかまわない。\\n報酬:【視聴率】10%増加、あなたと相手の両方に100【ソウル】\n" + "『弱そうな奴』\\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の動きが非常に一般人じみていて簡単に倒せそうであると確信する。相手への関係を、属性「弱そう」で獲得する。【深度】は1になる。\\nクリア条件:相手に戦闘を挑みキラートリックで倒す。ラッキーヒットだったのかもしれないし、相手は本当にチョロかったのかもしれない。だが、そんなことは結果の前には関係ない。\\n報酬:【視聴率】10%増加、500【ソウル】\n" + "『ニセブランド』\\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の持っているアイテムがニセのブランド品だと確信する!これはしつこく言い立てなければ!相手への関係を、属性「情報弱者」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を2以上にする。あなたの間違いが判明するか、あなたが正しかったことが判明するか、あるいはどうでもよくなるか。選ぶのはあなただ!\\n報酬:【視聴率】10%増加、200【ソウル】\n" + "『泣かせたい』\\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の泣き顔がヘル視聴者(と、あなた)に非常な満足感を与えてくれるであろうと確信する。相手への関係を、属性「泣かせたい人」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を2以上にする。相手は泣き出すか、そっと涙を流す……が、理由は相手が決定する。血が目に入っただけかもしれない。\\n報酬:【視聴率】10%増加、200【ソウル】\n"}), "MOSPT": $hash2(["name", "type", "table"], {"name": "サブプロット表「金儲け」", "type": "1d6", "table": "" + "『悪魔の代わり』\\n回収人から一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の願いを叶える現実的な方法を思いつく。まとまった予算があれば可能だ。あとは売り込むだけ!相手への関係を、属性「新規顧客」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を3にする。すると、相手は承諾する……番組で負けたらの話だが。そして約束は守られない可能性がある。\\n報酬:【視聴率】10%増加、400【ソウル】\n" + "『スカウト』\\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、相手こそあなたのビジネスに必要な人材だったと気がつく。番組の勝敗がどうなるにせよ、番組終了後に相手を確保しておきたい。相手への関係を、属性「即戦力」で獲得する。【深度】は1になる。\\nクリア条件:このサブプロットを獲得した次のセッションの導入シーンの始めに相手が登場する。地獄に堕ちているとダメ。\\n報酬:【視聴率】10%増加、200【ソウル】\n" + "『売り出し』\\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、ヘルドレスの下に隠された相手の体格が、マスのニーズにぴったりと合致するものだと確信する。マネージメントして大儲けだ!相手への関係を、属性「モデル候補」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を2以上にする。すると相手のプロフィールをある程度把握することに成功し、あとで勝手に売り出すことが可能になる。\\n報酬:【視聴率】10%増加、200【ソウル】\n" + "『クローン』\\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、その小道具はデザインがかっこいいうえに、ちょっとした施設があれば簡単にコピー品を量産できることに気がつく。相手への関係を、属性「オリジナル」で獲得する。【深度】は1になる。\\nクリア条件:相手を戦闘で一度倒す。ヘルERに送られる相手の小道具をそっと抜き取り、グレーな感じの工場に送ろう。来週には世界中に出回っているはずだ。\\n報酬:【視聴率】10%増加、300【ソウル】\n" + "『チャンプ』\\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の身のこなしのなかに、任意の格闘技の世界チャンプになれる素質を見て取る。いいトレーナーをつければイケるはずだ!相手への関係を、属性「原石」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を2以上にする。すると、相手は興味を示した、とあなたが確信する。チャンピオンのマネージャーとして栄華を極めるあなたの未来が目に浮かぶ。\\n報酬:【視聴率】10%増加、200【ソウル】\n" + "『ゆるキャラ』\\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手のムードにぴったりのキャラを思いつく。あなたの考えた変な語尾をつけさせることができれば、大ヒット間違いなしだ……!相手への関係を、属性「中身」で獲得する。【深度】は1になる。\\nクリア条件:語尾を一つ指定する。相手が登場するメインフェイズのうち三つで、プレイヤーのものを含む発言すべてにその語尾をつけて喋るとクリア。他のプレイヤーやゲームマスターに語尾の欠落を指摘されるとNG。\\n報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】\n"}), "PASPT": $hash2(["name", "type", "table"], {"name": "サブプロット表「仕切り」", "type": "1d6", "table": "" + "『協力しろ』\\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手は番組の内容にうんざりしていて、はなから協力する気がないのだと確信する。説得して番組を盛り上げるようにしなくては!相手への関係を、属性「非協力的」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を3にする。すると相手はあなたの意気込みを分かってくれたような……くれないような。まあとにかく一区切りがつく。\\n報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】相手がNPCなら600【ソウル】\n" + "『願いごと変更』\\nキャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の願いは番組的によくないものだと確信する。もっと盛り上がるような、いい願いに変えさせなければ!相手への関係を、属性「願いが下手」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を2以上にする。すると、相手は願いごとをあなたが提案したものに変更することに同意する。そして、後で本当に変更したりしなかったりするだろう。\\n報酬:【視聴率】10%増加、200【ソウル】\n" + "『少しの助け』\\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手は自分が手を貸してやらないとダメな奴だと直感する。放っておいたらなんの役にも立たずにいるだけになってしまうだろう。相手への関係を、属性「一人ではダメ」で獲得する。【深度】は1になる。\\nクリア条件:相手に対して判定への協力を行い、その判定が成功する。すると相手の成功にも自分の協力にも満足がいき、感動的なBGMも流れる。\\n報酬:【視聴率】10%増加、クリア条件達成時の相手への関係【深度】×200【ソウル】\n" + "『トリビア』\\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の職業的知識をトリビアとして披露することが番組には不可欠だと確信してしまう。なんとかして聞き出さなければ。相手への関係を、属性「トリビア係」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を2以上にする。いくつか職業的知識がヘル視聴者に披露されたことで、視聴者ではなくあなたの知識欲が満たされた。\\n報酬:【視聴率】10%増加、200【ソウル】\n" + "『決め台詞』\\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手が小道具を使うときにドラマティックな決め台詞を使えば番組的にオイシイと気づく。言わせたい……!相手への関係を、属性「素人」で獲得する。【深度】は1になる。\\nクリア条件:相手が参加する戦闘の開始時に、あなたの考えた決め台詞を相手に二回言わせる。途中で台詞を変えたらカウントしなおし。\\n報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】\n" + "『テコ入れ回避』\\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、こんな人がいるんじゃあ番組の視聴率も期待できないと確信してしまう。頑張らなければ。誰が?あなたが!相手への関係を、属性「売れなさそう」で獲得する。【深度】は1になる。\\nクリア条件:結果フェイズ開始時に【視聴率】が40%以上になっている。危ない場面もあったかもしれないが、とりあえずOKだ。\\n報酬:【視聴率】10%増加、300【ソウル】 クリア時にフィーバーが発生していれば、さらに300【ソウル】\n"}), "POSPT": $hash2(["name", "type", "table"], {"name": "サブプロット表「人気」", "type": "1d6", "table": "" + "『踏み台』\\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手のようなムードの人物と一緒にサービスシーンを行えばヘル視聴者に愛されると確信する。相手への関係を、属性「踏み台」で獲得する。【深度】は1になる。\\nクリア条件:相手と一緒にサービスシーンを成功させる。意図していたのかは不明だが、相手のアシストによりサービスは成功、ちょっと実況されたりもする。\\n報酬:【視聴率】10%増加、200【ソウル】\n" + "『器用さ』\\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、どんな相手と組ませてもソツなくこなすマルチな人材としてヘルPにチヤホヤされる未来が目に浮かぶ。まずはあいつからだ。相手への関係を、属性「最初の課題」で獲得する。【深度】は1になる。\\nクリア条件:合計三人のキャラクターと一緒にサービスシーンを三回成功させる。それぞれ違うキャラクターと行うこと。成功するたびにヘル視聴者はあなたの器用さに感銘を受ける。\\n報酬:【視聴率】10%増加、500【ソウル】 クリア時にフィーバーが発生していれば、さらに300【ソウル】\n" + "『主役争い』\\nキャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の願いごとはヘル視聴者にウケて人気が出てしまいそうだと直感する。なんとか相手を自分のストーリーに巻き込まなければ。相手への関係を、属性「脇役候補」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を3にする。相手のことを深く知り、ヘルカメラに向かって事情を語らせることで、こいつのストーリーは終わったと確信できた!\\n報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】 相手がNPCなら500【ソウル】\n" + "『アレを奪え』\\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の持っているものは自分にこそふさわしいと確信する。ヘルスタイリストのチョイスは間違っていた。あれはあなたのものだ!相手への関係を、属性「アイテムハンガー」で獲得する。【深度】は1になる。\\nクリア条件:暴力で奪うなら、相手を戦闘で一度倒す。譲ってもらいたいなら、相手への関係の【深度】を3にする。どちらにせよ、クリア条件を達成した時点であなたは高揚感に包まれて満足してしまい、結局小道具はいらないものだったと悟る。\\n報酬:【視聴率】10%増加、クリア条件達成時の相手への関係【深度】×200【ソウル】\n" + "『振り付け』\\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手のなにげない動きに対して、今年の流行ナンバーワンになる可能性を見て取る。あの振り付けを盗まなければ……!相手への関係を、属性「無自覚な天才」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を2以上にする。すると相手は振り付けを教えてくれて、あなたは完全にそれをモノにする。流行るかどうかはまた別の問題だ。\\n報酬:【視聴率】10%増加、200【ソウル】\n" + "『着こなし』\\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、相手のヘルドレスの着こなしはあなたを完全に凌駕していると確信してしまう。他の面では勝っているのに。相手への関係を、属性「ファッショナブル」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を2以上にする。すると相手は着こなしについて丁寧な、あるいは短いが核心を突いていると思われる助言をあなたにしてくれる。役に立ったり立たなかったりするだろう。\\n報酬:【視聴率】10%増加、200【ソウル】\n"}), "UMSPT": $hash2(["name", "type", "table"], {"name": "サブプロット表「恨み」", "type": "1d6", "table": "" + "『悲しい過去』\\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、相手と同じ職業の人に虐げられた悲しい過去が、あなたの脳裏にフラッシュバックする。相手への関係を、属性「奴らの同類」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を2以上にする。相手を深く知っていくなかで、あなたの恨みは溶けて消えるか、さらに深まって人格の一部になるだろう。\\n報酬:【視聴率】10%増加、200【ソウル】\n" + "『昔の恋人』\\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手とあなたの昔の恋人がまったく同じ癖を持っている事が判明する!もしや……そして、手ひどくフラれた過去がフラッシュバックする。相手への関係を、属性「昔の恋人」で獲得する。【深度】は1になる。\\nクリア条件:なぜフッたのか聞き出すため戦闘で一度倒す。すると、相手は理由を語るか、あるいはただの人違いであったことが判明する。いずれにせよあなたは人間的に成長できる……かもしれない。\\n報酬:【視聴率】10%増加、クリア条件達成時の【関係深度】×200【ソウル】\n" + "『間違い』\\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手と同じモチベーションで行動する人に敗北した過去が、あなたの脳裏にフラッシュバックする。奴らは間違っている。それを地獄に知らしめなければ!相手への関係を、属性「悪人」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を2以上にする。すると、相手は分かってくれる。または、あなたは理解してもらえたと思い込む。今日は久々にいい気分で眠れそうだ。\\n報酬:【視聴率】10%増加、あなたと相手の両方に100【ソウル】\n" + "『破れた夢』\\nキャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたはかつて同じ夢を抱き、そして破れていたことが判明する。夢を諦める悲しいシーンが脳裏にフラッシュバックする。相手への関係を、属性「破滅しそう」で獲得する。【深度】は1になる。\\nクリア条件:相手がサブプロットを達成したシーンに登場する。すると、あなたは相手の成功を我がことのように喜んでいる自分に気づく。もしかしたら、これがきっかけで変われるのかもしれない。\\n報酬:【視聴率】10%増加、300【ソウル】\n" + "『仇の手下』\\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、その小道具にはあなたが生涯の敵として定めた人物が関わっていることが明らかになる。そんなものを使うとは……許せん!相手への関係を、属性「奴らの手下」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を2以上にする。すると、相手は本当に奴らの手下であると確信できる。本当のところは不明。そのあとに戦闘を挑み、一度相手を倒せ。すると、あなたは満足する。次は奴だ。\\n報酬:【視聴率】10%増加、300【ソウル】\n" + "『服よこせ』\\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、その衣装は本当はあなたが着たかったものだと判明する。ヘルスタイリストへの抗議がひどい罵倒とともに却下されるシーンが脳裏にフラッシュバックする。相手への関係を、属性「服よこせ」で獲得する。【深度】は1になる。\\nクリア条件:相手への関係の【深度】を2以上にし、かつ相手からあなたへの関係の【深度】を1以上にする。根負けした相手はちょっとヘルドレスを貸してくれて、あなたは満足する。ちなみに、本当に似合っているかどうかは関係ない。\\n報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】\n"})}).$freeze()); - return self.$setPrefixes($rb_plus(["HST", "ST[1-2]?", "DWT", "DeathWT", "RWT", "RevengeWT", "VWT", "VictoryWT", "PWT", "PossesionWT", "CWT", "ControlWT", "FWT", "FlourishWT", "IWT", "IntensifyWT", "HWT", "HealthWT", "SaWT", "SafetyWT", "LWT", "LongevityWT", "EWT", "ExistWT", "NAME[1-3]?", "NAME[1-3]?", "OSPT", "OccultSPT", "FSPT", "FamilySPT", "LoSPT", "LoveSPT", "JSPT", "JusticeSPT", "TSPT", "TrainingSPT", "BSPT", "BeamSPT", "CMT", "EST", "sErviceST", "SOUL", "STGT", "HSAT[1-2]?", "EXT[1-4]?", "SKLT", "SKLJ", "ERT", "WKT", "PCDT", "OHT", "PCT1", "PCT2", "PCT3", "PCT4", "PCT5", "PCT6", "PCT7", "JD.*"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/KillDeathBusiness_Korean.js b/src/assets/dicebot/KillDeathBusiness_Korean.js deleted file mode 100644 index 0b249be5a..000000000 --- a/src/assets/dicebot/KillDeathBusiness_Korean.js +++ /dev/null @@ -1,534 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$==', '$<=', '$>=', '$debug', '$===', '$judgeDice', '$rollTableCommand', '$freeze', '$to_i', '$last_match', '$>', '$+', '$<', '$roll', '$getHistoryTableResult', '$getSceneTableResult', '$getWishTableResult', '$getNameTableResult', '$getSubprotTableResult', '$getCmTableResult', '$getErTableResult', '$getWKTableResult', '$getServiceSceneTableResult', '$getSoulTableResult', '$getSceneTelopGenericTableResult', '$getHairStylistAbuseTableResult', '$getExtraTableResult', '$getSkillTableResult', '$getpcTableResult', '$getohTableResult', '$getplTableResult', '$getprTableResult', '$getpnTableResult', '$getpdTableResult', '$getpfTableResult', '$getpgTableResult', '$getpbTableResult', '$empty?', '$get_table_by_1d6', '$get_table_by_d66_swap', '$get_table_by_2d6', '$[]']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'KillDeathBusiness_Korean'); - - var $nesting = [self].concat($parent_nesting), $KillDeathBusiness_Korean_initialize$1, $KillDeathBusiness_Korean_check_2D6$2, $KillDeathBusiness_Korean_rollDiceCommand$3, $KillDeathBusiness_Korean_judgeDice$4, $KillDeathBusiness_Korean_rollTableCommand$5, $KillDeathBusiness_Korean_getHistoryTableResult$6, $KillDeathBusiness_Korean_getSceneTableResult$7, $KillDeathBusiness_Korean_getWishTableResult$8, $KillDeathBusiness_Korean_getNameTableResult$9, $KillDeathBusiness_Korean_getSubprotTableResult$10, $KillDeathBusiness_Korean_getCmTableResult$11, $KillDeathBusiness_Korean_getErTableResult$12, $KillDeathBusiness_Korean_getWKTableResult$13, $KillDeathBusiness_Korean_getServiceSceneTableResult$14, $KillDeathBusiness_Korean_getSoulTableResult$15, $KillDeathBusiness_Korean_getSceneTelopGenericTableResult$16, $KillDeathBusiness_Korean_getHairStylistAbuseTableResult$17, $KillDeathBusiness_Korean_getSkillTableResult$18, $KillDeathBusiness_Korean_getExtraTableResult$19, $KillDeathBusiness_Korean_getpcTableResult$20, $KillDeathBusiness_Korean_getohTableResult$21, $KillDeathBusiness_Korean_getplTableResult$22, $KillDeathBusiness_Korean_getprTableResult$23, $KillDeathBusiness_Korean_getpnTableResult$24, $KillDeathBusiness_Korean_getpdTableResult$25, $KillDeathBusiness_Korean_getpfTableResult$26, $KillDeathBusiness_Korean_getpgTableResult$27, $KillDeathBusiness_Korean_getpbTableResult$28; - - - Opal.const_set($nesting[0], 'ID', "KillDeathBusiness:Korean"); - Opal.const_set($nesting[0], 'NAME', "Kill Death Business (한국어)"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:Kill Death Business"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・판정\n" + " JDx or JDx+y or JDx-y or JDx,z or JDx+y,z JDx-y,z\n" + " (x=난이도、y=보정、z=펌블도(리스크))\n" + "・이력표 (HST、HSTx) x에 숫자(1,2)로 표를 개별 롤\n" + "・소원표 (-WT)\n" + " 죽음(DWT)、복수(RWT)、승리(VWT)、획득(PWT)、지배(CWT)、번영(FWT)\n" + " 강화(IWT)、건강(HWT)、안전(SAWT)、장생(LWT)、삶(EWT)\n" + "・만능이름표 (NAME) x에 숫자(1,2,3)로 표를 개별 롤\n" + "・서브플롯표 (-SPT)\n" + " 오컬트(OSPT)、가족(FSPT)、연애(LOSPT)、정의(JSPT)、수행(TSPT)\n" + " 웃음(BSPT)、심술쟁이(MASPT)、원한(UMSPT)、인기(POSPT)、구분(PASPT)\n" + " 돈벌이(MOSPT)、대(対)악마(ANSPT)\n" + "・씬 표 (ST)、서비스 씬 표 (EST)\n" + "・CM표 (CMT)\n" + "・소생 부작용 표 (ERT)\n" + "・일주일간 표(WKT)\n" + "・소울 방출표 (SOUL)\n" + "・범용연출표 (STGT)\n" + "・헬 스타일리스트 매도표 (HSAT、HSATx) x에 숫자(1,2)로 표를 개별 롤\n" + "・지정특기 랜덤 결정표 (SKLT)、지정특기 분야 랜덤 결정표 (SKLJ)\n" + "・엑스트라 표 (EXT、EXTx) x에 숫자(1,2,3,4)로 표를 개별 롤\n" + "・제작위원 결정표 PCDT/실제 어떠했는가 표 OHT\n" + "・태스크 표 헬 라이온 PCT1/헬 크로우 PCT2/헬 스네이크 PCT3/\n" + " 헬 드래곤 PCT4/헬 플라이 PCT5/헬 갓 PCT6/헬 베어 PCT7\n" + "・D66 다이스 지원\n"); - self.$setPrefixes(["HST", "ST[1-2]?", "DWT", "DeathWT", "RWT", "RevengeWT", "VWT", "VictoryWT", "PWT", "PossesionWT", "CWT", "ControlWT", "FWT", "FlourishWT", "IWT", "IntensifyWT", "HWT", "HealthWT", "SaWT", "SafetyWT", "LWT", "LongevityWT", "EWT", "ExistWT", "NAME[1-3]?", "NAME[1-3]?", "OSPT", "OccultSPT", "FSPT", "FamilySPT", "LoSPT", "LoveSPT", "JSPT", "JusticeSPT", "TSPT", "TrainingSPT", "BSPT", "BeamSPT", "CMT", "EST", "sErviceST", "SOUL", "STGT", "HSAT[1-2]?", "EXT[1-4]?", "SKLT", "SKLJ", "ERT", "WKT", "PCDT", "OHT", "PCT1", "PCT2", "PCT3", "PCT4", "PCT5", "PCT6", "PCT7", "JD.*"]); - - Opal.def(self, '$initialize', $KillDeathBusiness_Korean_initialize$1 = function $$initialize() { - var $iter = $KillDeathBusiness_Korean_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $KillDeathBusiness_Korean_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $KillDeathBusiness_Korean_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $KillDeathBusiness_Korean_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $KillDeathBusiness_Korean_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > 펌블(판정 실패.【시청률】이 20%감소)" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > 스페셜(판정 성공.【시청률】이 10%증가)" - } else if ($truthy($rb_ge(total, target))) { - return " > 성공" - } else { - return " > 실패" - }; - }, $KillDeathBusiness_Korean_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $KillDeathBusiness_Korean_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var self = this, $case = nil, result = nil, text = nil; - - - self.$debug("rollDiceCommand command", command); - $case = command; - if ($$($nesting, 'JUDGE_DICE_REG')['$===']($case)) { - result = self.$judgeDice(command); - text = "" + "판정" + (result); - return text;}; - return self.$rollTableCommand(command); - }, $KillDeathBusiness_Korean_rollDiceCommand$3.$$arity = 1); - Opal.const_set($nesting[0], 'JUDGE_DICE_REG', /(^|\s)JD(\d+)([\+\-]\d+)?(,(\d+))?($|\s)/i.$freeze()); - - Opal.def(self, '$judgeDice', $KillDeathBusiness_Korean_judgeDice$4 = function $$judgeDice(command) { - var $a, $b, self = this, target = nil, modify = nil, fumble = nil, result = nil, number = nil, diceText = nil; - - - if ($truthy($$($nesting, 'JUDGE_DICE_REG')['$==='](command))) { - } else { - return "1" - }; - target = $$($nesting, 'Regexp').$last_match(2).$to_i(); - modify = $$($nesting, 'Regexp').$last_match(3).$to_i(); - fumble = $$($nesting, 'Regexp').$last_match(5).$to_i(); - result = ""; - if ($truthy($rb_gt(target, 12))) { - - result = $rb_plus(result, "" + "【" + (command) + "】 > 난이도가 12이상은 스페셜만 성공.\n"); - target = 12;}; - if ($truthy($rb_lt(target, 5))) { - - result = $rb_plus(result, "" + "【" + (command) + "】 > 난이도의 최저치는 5.\n"); - target = 5;}; - if ($truthy($rb_lt(fumble, 2))) { - fumble = 2 - } else if ($truthy($rb_gt(fumble, 11))) { - - result = $rb_plus(result, "" + "【" + (command) + "】 > 스페셜을 내면 반드시 성공이므로, 펌블치은 11으로 한다.\n"); - fumble = 11;}; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - result = $rb_plus(result, "" + "【난이도" + (target) + "、보정" + (modify) + "、펌블치" + (fumble) + "】 > 주사위 눈(" + (diceText) + ") > "); - if (number['$=='](2)) { - result = $rb_plus(result, "주사위 눈이 2이므로 펌블!(판정 실패.【시청률】이 20%감소)") - } else if (number['$=='](12)) { - result = $rb_plus(result, "주사위 눈이 12이므로 스페셜!(판정 성공.【시청률】이 10%증가)") - } else if ($truthy($rb_le(number, fumble))) { - result = $rb_plus(result, "주사위 눈이\t 펌블율 이하이므로 펌블!(판정 실패.【시청률】이 20%감소)") - } else { - - number = $rb_plus(number, modify); - if ($truthy($rb_lt(number, target))) { - result = $rb_plus(result, "" + "달성치" + (number) + "、난이도미만이므로 판정 실패!") - } else { - result = $rb_plus(result, "" + "달성치" + (number) + "、난이도이상이므로 판정 성공!") - }; - }; - return result; - }, $KillDeathBusiness_Korean_judgeDice$4.$$arity = 1); - - Opal.def(self, '$rollTableCommand', $KillDeathBusiness_Korean_rollTableCommand$5 = function $$rollTableCommand(command) { - var $a, $b, self = this, tableName = nil, result = nil, $case = nil, number = nil, type = nil, text = nil; - - - tableName = ""; - result = ""; - $case = command; - if ("HST"['$===']($case)) {$b = self.$getHistoryTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if (/^ST(\d)?$/['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1).$to_i(); - $b = self.$getSceneTableResult(type), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b;} - else if (/^.+WT$/i['$===']($case)) {$b = self.$getWishTableResult(command), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if (/^NAME(\d)?$/['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1).$to_i(); - $b = self.$getNameTableResult(type), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b;} - else if (/^.+SPT$/i['$===']($case)) {$b = self.$getSubprotTableResult(command), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("CMT"['$===']($case)) {$b = self.$getCmTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("ERT"['$===']($case)) {$b = self.$getErTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("WKT"['$===']($case)) {$b = self.$getWKTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if (/^EST$/i['$===']($case) || /^sErviceST$/i['$===']($case)) {$b = self.$getServiceSceneTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("SOUL"['$===']($case)) {$b = self.$getSoulTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("STGT"['$===']($case)) {$b = self.$getSceneTelopGenericTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if (/^HSAT(\d)?$/['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1).$to_i(); - $b = self.$getHairStylistAbuseTableResult(type), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b;} - else if (/^EXT(\d)?$/['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1).$to_i(); - $b = self.$getExtraTableResult(type), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b;} - else if (/^SKL(T|J)$/['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1); - $b = self.$getSkillTableResult(type), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b;} - else if ("PCDT"['$===']($case)) {$b = self.$getpcTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("OHT"['$===']($case)) {$b = self.$getohTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("PCT1"['$===']($case)) {$b = self.$getplTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("PCT2"['$===']($case)) {$b = self.$getprTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("PCT3"['$===']($case)) {$b = self.$getpnTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("PCT4"['$===']($case)) {$b = self.$getpdTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("PCT5"['$===']($case)) {$b = self.$getpfTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("PCT6"['$===']($case)) {$b = self.$getpgTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else if ("PCT7"['$===']($case)) {$b = self.$getpbTableResult(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (result = ($a[1] == null ? nil : $a[1])), (number = ($a[2] == null ? nil : $a[2])), $b} - else { - self.$debug("rollDiceCommand commandNOT matched -> command:", command); - return "";}; - if ($truthy(result['$empty?']())) { - return ""}; - text = "" + (tableName) + "(" + (number) + "):" + (result); - return text; - }, $KillDeathBusiness_Korean_rollTableCommand$5.$$arity = 1); - - Opal.def(self, '$getHistoryTableResult', $KillDeathBusiness_Korean_getHistoryTableResult$6 = function $$getHistoryTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "이력표"; - table = ["" + "마술\n" + "당신은 악마와의 접촉을 위해 연구를 쌓아온 오컬티스트, 또는 공포의 탐색자다. 굉장한 고난과 노력을 통해,드디어 나타난 악마는, 소원을 들어주는 대신 방송에나가라, 다고 말했다. 당신은 조금 어이없어 하면서도,애당초 악마를 찾던 이유인 소원을 이루기 위해, 그들이 주최하는 방송에 출연할 것을 승낙했다.", "" + "천재\n" + "당신은 어떤 분야에서의 천재였다. 어떤 천재였는지는,캐릭터 작성을 하는 중에 생각해서 정해도 되고, 전혀정하지 않아도 상관없다. 아무튼, 천재가 방송에 등장하면 캐릭터가 살아 재밌겠다고 생각한 악마는, 당신의눈앞에 방송의 출연교섭을 위해 나타났다. 당신은 그이야기에 따라, 혼의 회수인이 되기로 했다.", "" + "광기\n" + "당신은 머리가 이상하다. 그렇기 때문에, 주변 사회에잘 적응하지 못한 인생을 보냈다. 악마는 거기에 출현해, 사회를 당신에게 맞춰 바꿔주는 것이 가능하다 말했다. 단 사람을 죽이는 게임 방송에서 우승해야하는모양이다. 그러나, 당신은 머리가 이상하므로, 사람을죽이는 점은 신경 쓰지 않았다. 아무튼 이기면 행복해지는 것이다. 힘내자.", "" + "절망\n" + "당신은 어떠한 실패를 통해 실의의 밑바닥에 있다. 합법, 또는 위법인 약물에 취해, 생활은 점점 피폐해지고,슬슬 죽을 거라 생각했을 때 악마가 나타났다. 그녀석의 말에 따르면, 어떤 리얼리티 방송에서 이기면, 이상황에서 빠져나갈 수 있다고 한다. 더 이상 잃을 것은없는 당신은, 그 이야기에 따라, 방송에 출연하기로 했다.", "" + "선달\n" + "당신은 과거에 『킬 데스 비즈니스』의 승리자와 아는사이다. 갑자기 이유도 없이 큰 성공을 거둔 지인에게사정을 물으니, 바로 악마가 주최하는 살인 게임 방송에 대해 알려줬다. 당신은 소원을 이루기 위해, 그 지인을 통해 악마에게 추천해 달라 하여, 방송에 참가하게 됐다. 지인은, 분명 방송을 보고 있겠지.", "" + "친구\n" + "당신은 평온한 인생을 보내고 있었으나, 어느 날 눈앞에 악마가 나타났다. 그 녀석은 방송 출연의 엔트리 시트를 가지고 있어서, 거기에는 당신의 이름이 적혀 있었다. 친구가 멋대로 당신의 이름으로 방송에 엔트리시트를 보낸 것이다! 당신은 그대로 납치되어, 억지로소원을 정하게 되어, 악취미인 방송에서 폭력을 휘두르게 됐다."]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getHistoryTableResult$6.$$arity = 0); - - Opal.def(self, '$getSceneTableResult', $KillDeathBusiness_Korean_getSceneTableResult$7 = function $$getSceneTableResult(type) { - var $a, $b, self = this, tableName = nil, sceneTable1 = nil, sceneTable2 = nil, result = nil, number = nil, $case = nil, result1 = nil, num1 = nil, result2 = nil, num2 = nil; - - - self.$debug("getSceneTableResult type", type); - tableName = "씬표"; - sceneTable1 = [[11, "당신이 근거로 삼고 있는"], [12, "당신의 사진으로 벽이 메워진"], [13, "아날로그TV가 산처럼 쌓인"], [14, "쓰레기가 뒤덮은"], [15, "헬"], [16, "밀어닥친 모래로 뒤덮인"], [22, "가치 있는 것으로 호화롭게 장식된"], [23, "시계장치의 전자의 요새로 변한"], [24, "기묘한 오브제로 가득한"], [25, "거대한 구멍의 가장자리에 위태롭게 걸친"], [26, "극채색의 벽화가 그려진"], [33, "사라질 듯이 명멸하는 빛이 비추는"], [34, "창백하게 뭐든지 얼어붙은"], [35, "붉은 피와 철의 냄새로 가득 찬"], [36, "태양이 강렬한 빛을 뿌리는"], [44, "새가 무수히 모여 있는"], [45, "타오르는 불꽃이 비추는"], [46, "하얀 안개로 한치 앞도 보이지 않는"], [55, "썩은 시체가 쌓여있는"], [56, "유독한 오수가 잔뜩 모여 있는"], [66, "약탈을 당해 텅 빈"]]; - sceneTable2 = [[11, "오피스"], [12, "제단"], [13, "스튜디오"], [14, "창고"], [15, "버스 정류장"], [16, "감옥"], [22, "암흑"], [23, "역"], [24, "옥상"], [25, "하수도"], [26, "학교"], [33, "연구실"], [34, "차 안"], [35, "삼림"], [36, "정원"], [44, "가게"], [45, "농원"], [46, "폐허"], [55, "묘지"], [56, "민가"], [66, "들판"]]; - result = ""; - number = 0; - $case = type; - if ((1)['$===']($case)) {$b = self.$get_table_by_d66_swap(sceneTable1), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else if ((2)['$===']($case)) {$b = self.$get_table_by_d66_swap(sceneTable2), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else { - $b = self.$get_table_by_d66_swap(sceneTable1), $a = Opal.to_ary($b), (result1 = ($a[0] == null ? nil : $a[0])), (num1 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_d66_swap(sceneTable2), $a = Opal.to_ary($b), (result2 = ($a[0] == null ? nil : $a[0])), (num2 = ($a[1] == null ? nil : $a[1])), $b; - result = "" + (result1) + " " + (result2); - number = "" + (num1) + "," + (num2);}; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getSceneTableResult$7.$$arity = 1); - - Opal.def(self, '$getWishTableResult', $KillDeathBusiness_Korean_getWishTableResult$8 = function $$getWishTableResult(command) { - var $a, $b, self = this, tableName = nil, table = nil, $case = nil, result = nil, number = nil; - - - self.$debug("getWishTableResult command", command); - tableName = ""; - table = []; - $case = command; - if (/^DWT$/i['$===']($case) || /^DeathWT$/i['$===']($case)) { - tableName = "소원표「죽음」"; - table = ["지금의 아름다움을 유지한 채 죽고 싶다.", "재밌는 방법으로 죽어보고 싶다.", "자살할 용기가 없어서 죽고 싶다.", "죽으면 어떻게 될지 보고 싶다.", "너무나 싫은 일이 있어서 죽고 싶다.", "불로불사가 질려서 죽고 싶다."];} - else if (/^RWT$/i['$===']($case) || /^RevengeWT$/i['$===']($case)) { - tableName = "소원표「복수」"; - table = ["가족을 죽인 범인에게 복수하고 싶다.", "자신보다 행복한 이웃에게 복수하고 싶다.", "자신을 배반한 친구에게 복수하고 싶다.", "자신을 버린 애인에게 복수하고 싶다.", "소중한 것을 빼앗은 범인에게 복수하고 싶다.", "처참한 패배를 안겨준 라이벌에게 복수하고 싶다."];} - else if (/^VWT$/i['$===']($case) || /^VictoryWT$/i['$===']($case)) { - tableName = "소원표「승리」"; - table = ["이전에 졌던 라이벌에게 이기고 싶다.", "쓰러트리고 싶은 유명인(고인)이 있다.", "쓰러트리고 싶은 유명인이 있다.", "특정 업계에서 제일의 실력자가 되고 싶다.", "특정 게임에서 최강의 플레이어가 되고 싶다.", "특정 테스트에서 1위를 하고 싶다."];} - else if (/^PWT$/i['$===']($case) || /^PossesionWT$/i['$===']($case)) { - tableName = "소원표「획득」"; - table = ["원하는 아이템이 있다.", "원하는 생물이 있다.", "원하는 관계가 있다.", "원하는 친족이 있다.", "원하는 지식이 있다.", "원하는 부동산이 있다."];} - else if (/^CWT$/i['$===']($case) || /^ControlWT$/i['$===']($case)) { - tableName = "소원표「지배」"; - table = ["지배하고 싶은 인물집단이 있다.", "지배하고 싶은 지역이 있다.", "세계를 정복하고 싶다.", "선거에서 이기고 싶다.", "굴욕을 주고 싶은 사람이 있다.", "어리광쟁이인 친척을 마음대로 하고 싶다."];} - else if (/^FWT$/i['$===']($case) || /^FlourishWT$/i['$===']($case)) { - tableName = "소원표「번영」"; - table = ["몰락한 일족을 부흥시키고 싶다.", "지역 경제를 활성화시키고 싶다.", "취미인 장르에서 사람을 모으고 싶다.", "절멸한 생물을 부활시키고 싶다.", "동물이나 식물을 절멸에서 구하고 싶다.", "아무튼 많은 돈을 원한다."];} - else if (/^IWT$/i['$===']($case) || /^IntensifyWT$/i['$===']($case)) { - tableName = "소원표「강화」"; - table = ["세계최강이 되고 싶다.", "세계에서 가장 아름다워지고 싶다.", "세계에서 가장 현명해지고 싶다.", "세계에서 가장 행복해지고 싶다.", "세계에서 가장 터프해지고 싶다.", "세계에서 가장 빨라지고 싶다."];} - else if (/^HWT$/i['$===']($case) || /^HealthWT$/i['$===']($case)) { - tableName = "소원표「건강」"; - table = ["완성시키고 싶은 약물이 있다.", "절멸시키고 싶은 병원균이 있다.", "난치병에서 회복시키고 싶은 친척이 있다.", "난치병에서 회복하고 싶다.", "병으로 죽은 사람을 부활시키고 싶다.", "병에 걸리지 않는 몸을 원한다."];} - else if (/^SaWT$/i['$===']($case) || /^SafetyWT$/i['$===']($case)) { - tableName = "소원표「안전」"; - table = ["평온한 생활을 보내고 싶다.", "평온하게 지내길 바라는 사람이 있다.", "끝내고 싶은 분쟁이 있다.", "사고로 죽은 사람을 부활시키고 싶다.", "사고를 겪지 않는 능력을 원한다.", "다가오는 세계의 위기를 회피하고 싶다."];} - else if (/^LWT$/i['$===']($case) || /^LongevityWT$/i['$===']($case)) { - tableName = "소원표「장수」"; - table = ["지금의 아름다움을 유지하고 싶다.", "지금의 강함을 유지하고 싶다.", "아이가 어른이 되기까지 죽지 않는다.", "불로의 몸을 원한다.", "치매에 걸리고 싶지 않다.", "손자의 얼굴을 보고 싶다."];} - else if (/^EWT$/i['$===']($case) || /^ExistWT$/i['$===']($case)) { - tableName = "소원표「삶」"; - table = ["살아 있다는 실감을 원한다.", "지금과는 다른 인생을 살고 싶다.", "죽어버렸으니 부활하고 싶다.", "죽은 사람을 되살리고 싶다.", "불사의 몸을 원한다.", "이상의 인생을 손에 넣고 싶다."];}; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - self.$debug("getWishTableResult result", result); - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getWishTableResult$8.$$arity = 1); - - Opal.def(self, '$getNameTableResult', $KillDeathBusiness_Korean_getNameTableResult$9 = function $$getNameTableResult(type) { - var $a, $b, self = this, tableName = nil, nameTable1 = nil, nameTable2 = nil, nameTable3 = nil, result = nil, number = nil, $case = nil, result1 = nil, num1 = nil, result2 = nil, num2 = nil, result3 = nil, num3 = nil; - - - tableName = "만능이름표"; - nameTable1 = [[11, "아날로그"], [12, "이지"], [13, "이터널"], [14, "일렉트로"], [15, "오토"], [16, "킹"], [22, "쿨"], [23, "그림"], [24, "그레이트"], [25, "슈퍼"], [26, "스푸크"], [33, "스마트"], [34, "드레드"], [35, "하이테크"], [36, "헌터즈"], [44, "블랙"], [45, "헬"], [46, "매직"], [55, "메카니컬"], [56, "러브"], [66, "레드"]]; - nameTable2 = [[11, "X"], [12, "어비스"], [13, "그레이브"], [14, "골드"], [15, "고딕"], [16, "시노비"], [22, "스페셜"], [23, "데몬"], [24, "디지털"], [25, "데스"], [26, "데빌"], [33, "나이트메어"], [34, "발록"], [35, "블러드"], [36, "브레이크"], [44, "블레이즈"], [45, "프로스트"], [46, "메가"], [55, "메카나이즈드"], [56, "림보"], [66, "로보"]]; - nameTable3 = [[11, "암"], [12, "아이"], [13, "이어"], [14, "윙"], [15, "엔진"], [16, "가드"], [22, "건"], [23, "기어"], [24, "캐논"], [25, "서킷"], [26, "스킨"], [33, "소드"], [34, "터빈"], [35, "하트"], [36, "핸드"], [44, "빔"], [45, "플레이트"], [46, "헤어"], [55, "메카니즘"], [56, "모터"], [66, "레그"]]; - result = ""; - number = 0; - $case = type; - if ((1)['$===']($case)) {$b = self.$get_table_by_d66_swap(nameTable1), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else if ((2)['$===']($case)) {$b = self.$get_table_by_d66_swap(nameTable2), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else if ((3)['$===']($case)) {$b = self.$get_table_by_d66_swap(nameTable3), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else { - $b = self.$get_table_by_d66_swap(nameTable1), $a = Opal.to_ary($b), (result1 = ($a[0] == null ? nil : $a[0])), (num1 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_d66_swap(nameTable2), $a = Opal.to_ary($b), (result2 = ($a[0] == null ? nil : $a[0])), (num2 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_d66_swap(nameTable3), $a = Opal.to_ary($b), (result3 = ($a[0] == null ? nil : $a[0])), (num3 = ($a[1] == null ? nil : $a[1])), $b; - result = "" + (result1) + (result2) + (result3); - number = "" + (num1) + "," + (num2) + "," + (num3);}; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getNameTableResult$9.$$arity = 1); - - Opal.def(self, '$getSubprotTableResult', $KillDeathBusiness_Korean_getSubprotTableResult$10 = function $$getSubprotTableResult(command) { - var $a, $b, self = this, tableName = nil, table = nil, $case = nil, result = nil, number = nil; - - - tableName = ""; - table = []; - $case = command; - if (/^OSPT$/i['$===']($case) || /^OccultSPT$/i['$===']($case)) { - tableName = "서브플롯표「오컬트」"; - table = ["" + "『죽음의 탐구』\n" + "회수인으로부터 한 명을 골라, 상대가 「직업」으로 습득하고 있는 특기를 지정특기로판정한다. 판정에 성공하면, 방송에 의한 빈번한 죽음이 상대를 어떻게 변화시키는지 관찰하고싶어진다. 상대에 대한 관계를, 속성 「연구대상」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건 : 상대가, 당신이 등장하고 있는 신에서 2번사망한다. 사망에 따라 상대가 어떻게 변하는지, 제멋대로 이러쿵저러쿵 말해도 되고, 아무것도 말하지 않고 다 안 것 같은 표정을 해도 된다.\n" + "보수:【시청률】10%증가、400【소울】", "" + "『내방자』\n" + "캐릭터로부터 한 명을 골라, 상대가 「의장」으로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 상대가 입고 있는 것은 교묘한 위장이며, 그 정체는 우주인이란 것을 깨닫는다. 상대에 대한 관계를, 속성 「우주인」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다. 그러면, 상대는 자신의 진짜 모습을 알려준다. 정말로 우주인인지는 상대의 마음이고, 딱히 어느 쪽이든 상관없다. 적당히 기뻐하든 실망하든 할 것.\n" + "보수:【시청률】10%증가、200【소울】", "" + "『기억상실』\n" + "캐릭터로부터 한 명을 골라, 상대가 「소원」으로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 그 순간, 상대가 무언가를 알고 있다는 확신만을 남기고, 다른 모든 개인적인 기억을 잃는다. 상대에 대한 관계를, 속성 「지인」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 3으로 한다. 그러면, 상대는 당신이 어떤 인물이었는지 생각나게 해준다. 직접 알려줘도 좋고, 별의미 없는 행동이 계기가 될지도 모른다.\n" + "보수:【시청률】10%증가、상대가 회수인이라면400【소울】、상대가 NPC라면600【소울】", "" + "『비밀결사』\n" + "캐릭터로부터 한 명을 골라, 상대가 「동작」으로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 상대가 무의식적으로 한 동작이, 당신이 소속된 비밀결사의 멤버라는 것을 밝히는 사인이라고 파악한다. 상대에 대한 관계를, 속성 「멤버」로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다. 상대는 정말로 멤버일지도 모르고, 당신의 착각일지도 모른다. 어느 쪽이든, 탐색하며 가까워지는 과정에서, 상대를 잘 알게 된다.\n" + "보수:【시청률】10%증가、200【소울】", "" + "『살인귀』\n" + "캐릭터로부터 한 명을 골라, 상대가 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 상대가 유명한 연쇄살인의 범인이라고 확신한다. 얼굴이나 성별은 바꾼 것일지도 모른다. 상대에 대한 관계를, 속성 「살인귀」로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건 : 연쇄살인귀를 용서할 수 없다면, 상대를 전투로 한 번 쓰러트린다. 또는, 연쇄살인귀의 팬이라면, 상대와 함께「서비스」신을 성공시킨다. 어느 쪽이든, 상대가 정말 연쇄살인을 했는지는 분명하지 않다.\n" + "보수:【시청률】10%증가、클리어조건 달성 시의 상대에 대한 관계【심도】× 200【소울】", "" + "『마법사』\n" + "캐릭터로부터 한 명을 골라, 상대가 「소도구」으로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 상대는 애초에 진짜로 마법을 사용할 수 있는 인간이며, 가지고 있는 도구는 고명한 매직 아이템이라고 확신한다. 상대에 대한 관계를, 속성 「마법사」으로획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 2이상으로\n" + "하고, 또한 상대의 당신에 대한 관계의\n" + "【심도】를 1이상으로 한다. 정체가 드러난 상대는 마법을 가르쳐주고, 당신은 만족한다. 덧붙여, 이 마법은 효과가 애매하고 확실하지 앟은 것을 적당히 설정한다.\n" + "보수:【시청률】10%증가、당신과 상대 모두 300【소울】"];} - else if (/^FSPT$/i['$===']($case) || /^FamilySPT$/i['$===']($case)) { - tableName = "서브플롯표「가족」"; - table = ["" + "『설득』\n" + "캐릭터로부터 한 명을 골라, 상대가 「소도구」로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 상대가 가지고 있는 것은 당신이 선물한 것이며, 옛 친구가 악취미인 쇼에 나왔단 것을 알 수 있다. 그만두도록 설득하지 않으면 상대에 대한 관계를, 속성 「옛 친구」로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 3으로 한다. 그러면, 설득을 할 만큼 한 당신은 만족한다. 상대는 분명 그만두지 않는다. 또는, 선택한 「옛 친구」가 사망하거나(회수인이라면)지옥에 떨어진다. 그러면, 아무래도 포기하게 된다.\n" + "보수:【시청률】10%증가、400【소울】", "" + "『이별』\n" + "캐릭터로부터 한 명을 골라, 상대가 「동작」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대가 가족 특유의 특징을 가지고 있단 것을 알고, 상당히 예전에 이별한 가족이라 확신한다. 상대에 대한 관계를, 속성 「이별」로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 3으로 한다.\n" + "그러면, 상대는 당신을 기억해낸다. 전혀 다른 환경에서 자랐을지도 모르지만, 당신들의 뿌리는 같다.\n" + "속사정이나 이별한 상황은 좋을 대로 설정해도 되고, 딱히 설정하지 않아도 된다.\n" + "보수:【시청률】10%증가、상대가 회수인이라면 400【소울】상대가 NPC라면 600【소울】", "" + "『가족자랑』\n" + "회수인으로부터 한 명을 골라, 상대가 「직업」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대의 직업을 듣고, 같은 분야에서 상대보다 성공한 가족의 이야기를 들려준다.\n" + "상대에 대한 관계를, 속성 「자랑함」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:세 사람의 캐릭터에 대해 【심도】1이상의 관계를 획득하고, 모든 속성을 「자랑함」으로 한다.\n" + "이미 「자랑함」인 캐릭터는, 죽든지 없어져도 괜찮다.\n" + "상당히 싫어하는 모양이나, 뭐어 상관없다.\n" + "보수:【시청률】10%증가、400【소울】", "" + "『버려진 고양이』\n" + "회수인으로부터 한 명을 골라, 상대가 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 품에서 아기 고양이가 나온다. 이것은 상대가 예전에 버린 고양이인 걸까, 당신은 그것을 용서할 수 없다.\n" + "상대에 대한 관계를, 속성 「고양이의 주인」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에게 고양이를 기르게 하기 위해, 전투로 한 번 쓰러트린다.\n" + "그러면, 상대는 고양이를 기를 것에 동의한다.\n" + "고양이의 상세한 스펙을 정해도 되고, 정하지 않아도 된다.\n" + "그리고, 동물의 종류도 사실은 자유다.\n" + "보수:【시청률】10%증가、클리어조건 달성 시의 상대에 대한 관계의【深度】× 200【소울】", "" + "『의가족』\n" + "회수인으로부터 한 명을 골라, 상대가 「의장」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 의장의 경향에서, 상대가 의가족인 것이 판명된다. 이런 곳에서 뭘 하고 있는거야.\n" + "상대에 대한 관계를, 속성 「의가족」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다.\n" + "그러면, 상대는 어째서 방송에 나오게 됐는지, 그 때 어떤 상황이나 기분이었는지를 말한다.\n" + "또는, 상대가 지옥에 떨어지면, 연이 끊어져서 클리어다.\n" + "보수:【시청률】10%증가、200【소울】", "" + "『고독한 사람』\n" + "캐릭터로부터 한 명을 골라, 상대가 「소원」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대가 고독을 견디고 있는 외로운 인물이란 것을 확신한다. 당신이 상대를 구하는 것이다.\n" + "상대에 대한 관계를, 속성 「고독한 사람」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다.\n" + "그러면, 상대는 변할……지도 모르고, 아무것도 변하지 않을지도 모른다. 그저, 당신은, 상대의 고독이 조금 치유된 것을 알 수 있다.\n" + "보수:【시청률】10%증가、200【소울】"];} - else if (/^LoSPT$/i['$===']($case) || /^LoveSPT$/i['$===']($case)) { - tableName = "서브플롯표「연애」"; - table = ["" + "『금단의 사랑』\n" + "표적이 「의장」으로 습득하고 있는 특기를 지정특기로 판정한다. 표적이 이미 사망한 경우, 서브플롯표를 다시 굴린다.\n" + "판정에 성공하면, 표적에게 첫눈에 반하거나, 표적이 전부터 좋아했던 사람이란 것이 판명된다. 서두르지 않으면 죽어버린다.\n" + "상대에 대한 관계를, 속성 「좋아하는 사람」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 3으로 한다.\n" + "그러면, 표적은 당신의 마음에 대해 어떠한 대답을 돌려준다. 결과는 아무튼, 좋은 경험이 될 것이다.\n" + "또는, 상대에 대한 관계의 【심도】가 2이상인 상태에서, 상대가 사망해도 좋다. 통곡하자.\n" + "보수:【시청률】10%증가、400【소울】", "" + "『방송 내 데이트』\n" + "회수인으로부터 한 명을 골라, 상대가 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대와 당신은 방송 개시 전부터 사귀고 있었다. 수록을 겸해 사이를 진전시켜도 좋을 것이다.\n" + "상대에 대한 관계를, 속성 「연인」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 2이상으로 하고, 상대로부터 당신에 대한 관계의 【심도】도 2이상으로 한다.\n" + "그러면, 꽤 좋은 느낌으로 관계가 발전한다. 방송 종료 시에 시청자에게 알릴 일이 생길지도 모른다.\n" + "보수:【시청률】10%증가、당신과 상대 모두 400【소울】", "" + "『고민 상담』\n" + "캐릭터로부터 한 명을 골라, 상대가 「직업」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대의 직업적 견지에서 연애에 관한 어드바이스를 받을지도 모른다고 깨닫는다.\n" + "상대에 대한 관계를, 속성 「상담역」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 3으로 한다.\n" + "연애에 관한 어드바이스를 받은 기분이 든다. 상대가 그런 의도로 말했는지는 관계없다.\n" + "최후의 관계의 속성을 「좋아하는 사람」으로 하면 그럴싸해진다.\n" + "보수:【시청률】10%증가、상대가 회수인이라면400【소울】상대가 NPC라면600【소울】", "" + "『인기획득』\n" + "캐릭터로부터 한 명을 골라, 상대가 「동작」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대와 당신이 함께하면 대단히 좋은 장면이 나와 시청자에게 먹힐 것이라 확신한다. 끌어들여 서비스 신을 성공하면 헬 시청자에게 사랑받겠지.\n" + "상대에 대한 관계를, 속성 「파트너」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대와 함께 서비스 신을 성공시킨다.\n" + "놀랍게도, 헬 시청자는 정말로 콤비를 마음에 들어 한다. 단, 한 번 더 한다고, 먹힐지는 모른다.\n" + "보수:【시청률】10%증가、200【소울】", "" + "『선물』\n" + "캐릭터로부터 한 명을 골라, 상대가 「소원」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대의 소원을 왠지 알 수 있다. 원하는 것을 알고 있으니, 주면 좋아할지도 모른다. 뭘 원하는지, 상대에게 실제로 물을 필요는 없다.\n" + "상대에 대한 관계를, 속성 「원함」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다.\n" + "그러면, 상대는 당신의 선물을 받는다. 무엇을 주는지는 적당히 정해도 되나, 고민되면 헬CM표를 사용할 것.\n" + "보수:【시청률】10%증가、200【소울】", "" + "『수제요리』\n" + "캐릭터로부터 한 명을 골라, 상대가 「소도구」로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대가 가지고 있는 것이 힌트가 돼서, 엄청난 요리를 떠올린다. 어쩌면 재료로 할 수 있을지도 모른다.\n" + "상대에 대한 관계를, 속성 「시식역」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에게 전투를 걸어, 킬러트릭으로 쓰러트린다.\n" + "이때, 킬러트릭의 이름은 생각한 요리의 이름으로 변경된다.\n" + "고민되면 만능 명명표를 사용할 것.\n" + "보수:【시청률】10%증가、500【소울】"];} - else if (/^JSPT$/i['$===']($case) || /^JusticeSPT$/i['$===']($case)) { - tableName = "서브플롯표「정의」"; - table = ["" + "『죽일 수 없는 표적』\n" + "표적이 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대가 당신의 정의에 비추어 볼 때 허물없는 인물이란 것을 알 수 있다(어쩌면, 실은 대단히 선량한 인물이었단 것을 안다). 이 사람을 죽일 수는 없다.\n" + "상대에 대한 관계를, 속성 「호위대상」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:결과 페이즈까지 상대를 생존시킨다.\n" + "어째서 아군이 됐는지, 어째서 아군으로 삼았는지, 상대에게 말해주면 기뻐할지도 모른다.\n" + "보수:【시청률】10%증가、700【소울】", "" + "『친구의 복수』\n" + "캐릭터로부터 한 명을 골라, 상대가 「소도구」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대가 몸에 지니고 있는 장신구가, 당신의 친구를 살해한 범인의 특징과 일치하는 것을 안다.\n" + "상대에 대한 관계를, 속성 「범인」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다.\n" + "그러면, 상대는 자백한다.\n" + "그 후에 전투를 걸어, 한 번 상대를 쓰러트려라.\n" + "죽은 자는 돌아오지 않으나, 당신은 만족한다.\n" + "보수:【시청률】10%증가、400【소울】", "" + "『호신』\n" + "캐릭터로부터 한 명을 골라, 상대가 「소원」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대가 한때 당신에게 단죄 받은 적이 있어, 그것을 원망하고 있는 것을 알게 된다.\n" + "상대에 대한 관계를, 속성 「복수자」로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:결과페이즈까지 상대에게 살해당하지 않는다.\n" + "그러면, 어떻게든 살아남……지만, 다음은 어떻게 될는지.\n" + "보수:【시청률】10%증가、상대가 회수인이라면500【소울】상대가 NPC라면 100【소울】", "" + "『심취』\n" + "회수인으로부터 한 명을 골라, 상대가 「동작」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대를 첫 인상부터 선인이라 확신하고, 다양한 논리를 더해 상대의 소원을 정의라고 믿는다.\n" + "상대에 대한 관계를, 속성 「선인」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다.\n" + "그러면, 상대의 소원의 본질을 이해하고, 깨어나거나, 충실한 협력자가 될 것을 약속하거나 한다.\n" + "보수:【시청률】10%증가、200【소울】", "" + "『악당』\n" + "캐릭터로부터 한 명을 골라, 상대가 「직업」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대는 그 일대에서는 유명한 악의 직업인이란 것이 판명된다. 이 녀석을 내버려두면 슬퍼하는 사람이 나오겠지.\n" + "상대에 대한 관계를, 속성 「악인」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:악인을 용서할 수 없다면, 상대를 전투에서 한 번 쓰러트린다.\n" + "또는, 개심시키고 싶다면, 상대에 대한 관계의 【심도】를 3으로 한다.\n" + "상대가 정말로 개심했는지는 관계없이, 회심의 설득을 한 것에, 당신은 만족한다.\n" + "보수:【시청률】10%증가、클리어조건 달성 시의 상대에 대한 관계【심도】X200【소울】", "" + "『사이드킥』\n" + "회수인으로부터 한 명을 골라, 상대가 「의장」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대는 자신의 파트너로써 악을 쓰러트리기에 최적인 인물이라 확신한다. 사이드킥이다.\n" + "상대에 대한 관계를, 속성 「동료」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:자신이 등장하고 있는 신에서, 상대가 누군가를 쓰러트리고, 그 후 당신이 죽지 않고 전투가 종료된다.\n" + "상대를 칭찬해서, 동료에 어울리는 인물이라고 선언하자.\n" + "보수:【시청률】10%증가、300【소울】"];} - else if (/^TSPT$/i['$===']($case) || /^TrainingSPT$/i['$===']($case)) { - tableName = "서브플롯표「수행」"; - table = ["" + "『전투광』\n" + "회수인으로부터 한 명을 골라, 상대가 「동작」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 주변에 있는 강해보이는 사람들에 대해 대항심이 끓어오른다. 결국, 남는 것은 한 사람 뿐이니까, 지금부터 때려눕히는 게 좋다.\n" + "상대에 대한 관계를, 속성 「적」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대를 포함해 세 명의 캐릭터를 한 번 이상 사망시킨다.\n" + "그러면, 당신의 전투열은 가라앉는다. 이제부터 사이가 좋아질지는 미묘할지도 모른다.\n" + "보수:【시청률】10%증가、600【소울】", "" + "『제자입문』\n" + "캐릭터로부터 한 명을 골라, 상대가 「직업」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 당신은, 그 직업의 세계적인 권위를 발견한다. 이유가 있어 은퇴한지 오래지만, 가르침을 받으면 이후의 인생에 도움이 될 것이다. 가르칠 마음이 있는지는 모르겠지만\n" + "상대에 대한 관계를, 속성 「스승」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 3으로 한다.\n" + "그러면, 상대는 무언가를 가르쳐준다. 또는, 더 이상 가르칠 것이 아무것도 없다고 말할 것이다.\n" + "보수:【시청률】10%증가、상대가 회수인이라면400【소울】상대가 NPC라면600【소울】", "" + "『라이벌』\n" + "캐릭터로부터 한 명을 골라, 상대가 「소원」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대는 당신에게 특정 분야에서 승리한 적이 있는 인물임을 알게 된다. 녀석에게 이기지 못하면, 당신은 앞으로 나아갈 수 없다.\n" + "상대에 대한 관계를, 속성 「라이벌」로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:2사이클 이후에 상대를 한 번 쓰러트린다. 당신이 쓰러트리기까지, 상대는 다른 캐릭터에게 쓰러져서는 안 된다.\n" + "너를 쓰러트리는 것은 나로 정해져있으니까!\n" + "보수:【시청률】10%증가、상대가 회수인이라면300【소울】상대가 NPC라면500【소울】", "" + "『개조』\n" + "회수인으로부터 한 명을 골라, 상대가 「의장」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대에 비해 자신의 육체가 너무 빈약한 기분이 든다. 개조해서 더욱 강해지지 않으면.\n" + "상대에 대한 관계를, 속성 「기준선」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대보다 많은 헬 사이버를 인스톨한 상태로 결과 페이즈를 맞이한다.\n" + "이때 세는 것은 개수뿐, 그리고 같은 수라면 안 된다.\n" + "보수:【시청률】10%증가、600【소울】", "" + "『장비개선』\n" + "회수인으로부터 한 명을 골라, 상대가 「소도구」로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대가 가지고 있는 장비에 대한 흥미가 솟는다. 자신의 능력상승의 힌트가 될지도 모른다.\n" + "상대에 대한 관계를, 속성 「좋은 장비」로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다.\n" + "그러면, 상대는 가진 것에 대해 해설해주거나, 또는 단호하게 거절한다. 당신의 탐색은 거기서 끝나나, 경험은 남는다.\n" + "보수:【시청률】10%증가、200【소울】", "" + "『특훈』\n" + "캐릭터로부터 한 명을 골라, 상대가 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대는 자신과 마찬가지로 수행부족을 통감하고 있다고 확신한다. 함께 트레이닝이다.\n" + "상대에 대한 관계를, 속성 「특훈동료」로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다.\n" + "그러면, 당신과 상대는 어떠한 성과를 느끼고, 특훈은 끝난다.\n" + "이 타이밍에서 킬러트릭의 이름을 바꾸거나 해도 된다.\n" + "보수:【시청률】10%증가、200【소울】"];} - else if (/^BSPT$/i['$===']($case) || /^BeamSPT$/i['$===']($case)) { - tableName = "서브플롯표「웃음」"; - table = ["" + "『대 서비스』\n" + "캐릭터로부터 한 명을 골라, 상대가 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 이 살벌한 방송을 온화하게 할 수 있는 것은, 자신과 상대 밖에 없다고 확신한다.\n" + "상대에 대한 관계를, 속성 「파트너」로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대와 함께, 「서비스」신의 판정에 2번 성공한다.\n" + "그러면, 어쩐지 방송이 즐거워진 것 같은 느낌도 드나……변하지 않은 것 같은 기분도 든다. 당신의 싸움은 아직 계속된다.\n" + "보수:【시청률】10%증가、당신과 상대 모두 【소울】", "" + "『벗기』\n" + "캐릭터로부터 한 명을 골라, 상대가 「의장」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대의 의장을 좋은 느낌으로 벗기면 먹힐 것이라 확신한다.\n" + "상대에 대한 관계를, 속성 「벗기고 싶다」로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에게 전투를 걸어, 킬러트릭으로 쓰러트린다.\n" + "이때, 상대의 의장은 산산조각으로 분쇄되어, 헬 스타일리스트가 상대를 매도하며 새로운 것을 준비하게 된다.\n" + "보수:【시청률】10%증가、500【소울】", "" + "『좋은 이야기』\n" + "캐릭터로부터 한 명을 골라, 상대가 「동작」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대는 풀이 죽었는지 싫은 건지, 표정이 적다. 웃음을 돌려주지 않으면.\n" + "상대에 대한 관계를, 속성 「어두운 녀석」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 3으로 한다.\n" + "상대는 조금 웃음을 보일지도 모르고, 빛의 영향으로 그렇게 보일지도 모른다. 그러나, 당신은 확실한 성과를 느낀다.\n" + "보수:【시청률】10%증가、상대가 회수인이라면400【소울】상대가 NPC라면600【소울】", "" + "『웃음전도사』\n" + "캐릭터로부터 한 명을 골라, 상대가 「소원」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 상대는 원호가 없으면 서비스 신이 힘들 것이다, 라고 직감한다.\n" + "상대에 대한 관계를, 속성 「진지한 녀석」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대가 등장하는 「서비스」신에 자신도 등장해, 카메라 밖에서 웃음소리를 내는 롤플레이를 한다.\n" + "보수:【시청률】10%증가、당신과 상대 모두 100【소울】", "" + "『전투회피』\n" + "캐릭터로부터 한 명을 골라, 상대가 「직업」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 당신은 상대의 소원에 깊게 공감한다. 그 때문에, 상대를 방해하고 싶지 않게 된다.\n" + "상대에 대한 관계를, 속성 「이기게 하고픈 사람」으로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:결과 페이즈까지 직접 상대를 죽이지 않는다.\n" + "그러면, 누구도 알아채지 못하지만, 당신은 자신이 할 일을 한 게 된다.\n" + "보수:【시청률】10%증가、200【소울】", "" + "『친구』\n" + "캐릭터로부터 한 명을 골라, 상대가 「소도구」으로 습득하고 있는 특기를 지정특기로 판정한다.\n" + "판정에 성공하면, 그 소도구에 대한 대화를 계기로, 상대에 대한 흥미가 싹튼다. 어쩌면 친구가 될지도 모른다.\n" + "상대에 대한 관계를, 속성 「친구」로 획득한다. 【심도】는 1이 된다.\n" + "클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다.\n" + "그러면, 당신과 상대는 우정과 같은 것으로 묶일지도 모르고, 역시 무리였다고, 당신이 포기할지도 모른다.\n" + "보수:【시청률】10%증가、200【소울】"];}; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getSubprotTableResult$10.$$arity = 1); - - Opal.def(self, '$getCmTableResult', $KillDeathBusiness_Korean_getCmTableResult$11 = function $$getCmTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "CM표"; - table = [[11, "" + "당신의 T셔츠\n" + "결정 포즈의 모습이 등에 프린트 된 T셔츠입니다. 그리고 앞면에는 뭣이 그 명대사가!"], [12, "" + "당신의 액션 피규어\n" + "방송 중부터 대인기! 직인이 하나하나 혼을 담은 수제!\n" + "밤이 되면, 집어넣은 혼이 귀곡성을 냅니다."], [13, "" + "헬 레이 박스\n" + "시즌 666의 전부가 여기에……특전 영상 만재로 보내드리는, 호화 박스 세트! 예약특전은 헬군 스트랩입니다."], [14, "" + "헬 에어컨\n" + "이것만 있으면, 화재 현장이라도 기온은 어는 점 이하! 반대로 집을 태울 수도 있습니다. 온도조절기능은 유료 옵션입니다!"], [15, "" + "헬 기저귀\n" + "헬 원단으로 젖음을 완벽방지, 666년 간 입더라도 걱정 없습니다! 안쪽이 어떻게 될지는 보증하지 않습니다, 헬 기저귀!\n" + "헬 서플리"], [16, "" + "헬 서플리\n" + "자지 않아도 괜찮아! 컬러풀한 환각이 보인다! 하지만 메인 기능은 건강증진입니다. 헬 서플리로 건강한 생활을!"], [22, "" + "헬 투어\n" + "저렴한 요금으로 지옥백경을 돌아보자! 고통 받는 인간과의 혼의 교감이 가득! 헬 투어는, 타사에서는 불가능한 체험을 약속합니다."], [23, "" + "헬 테레비\n" + "밤중에 여성이 나오나, 신경 쓰지 않아도 괜찮습니다! 아날로그 헬 테레비는 정부의 협찬을 받고 있습니다."], [24, "" + "헬 맥주\n" + "알코올 도수 666%, 헬 보리 사용. 지옥의 갈증에는 헬 맥주……차이를 아는 사람을 위해."], [25, "" + "헬 폰\n" + "의기양양한 앱등이의 콧대를 눌러버릴 수 있습니다. 네, 헬폰이라면 말이죠."], [26, "" + "헬 만쥬\n" + "수천 년의 사랑을 받고 있습니다, 지옥명과 헬만쥬. 맛있다. 헬 맛있어! 그렇지만, 먹으면 죽습니다."], [33, "" + "헬 모빌\n" + "인간을 치면 칠수록 점점 빨라져……속도는 다른 세계로. 헬 모빌이 구하기 쉬운 가격으로 신등장."], [34, "" + "헬 회화교실\n" + "이웃을 잘 속이고 싶나요? 싫은 녀석에게 속으셨나요? 헬 회화를 배우면, 어떤 상대도 격앙시킬 수 있습니다!"], [35, "" + "헬 금융\n" + "금리 666%으로 안심할 수 있습니다. 헬 금융의 징수는, 대단히 신사적이라 호평입니다."], [36, "" + "헬 즙(건강음료)\n" + "지옥 변경에서 채취한 신선한 독초를, 그대로 분말로 했습니다.\n" + "이걸 마시면, 더 이상 병이나 노화 걱정은 없습니다. 건강음료 헬 즙!"], [44, "" + "헬 정형외과\n" + "무보험이며 무면허나, 어떤 주문이든 받아줍니다. 헬 정형외과는, 당신이 바라는 대로의 외모를 실현합니다!"], [45, "" + "헬 생명보험\n" + "곧 죽을 당신에게, 헬 생명의 안심코스. 남겨진 사람에게는 지옥이 기다리고 있습니다."], [46, "" + "헬 세제\n" + "얼마나 심한 핏자국이나 오물도 일격! 어떤 색의 옷이라도 지옥의 검정으로 물들입니다! 헬 세제, 호평 발매 중!"], [55, "" + "헬 세탁기\n" + "666층식, 음속을 넘는 회전이 당신의 의장을 산산히! 무엇을 하려고 했는지 잊는다면 장관입니다. 헬 세탁기!"], [56, "" + "헬 청소기\n" + "호평인 벽면분쇄기능에 더해, 올해의 모델에는 옥상흡인기능도!\n" + "헬 청소기의 스위치를 넣는 것만으로, 당신의 집은 없어집니다."], [66, "" + "헬 입욕제\n" + "몸이 끓는다! 신감각으로 화제를 부른 헬 입욕제가 드디어 등장! 사체의 처리에는 사용하지 말아주세요."]]; - $b = self.$get_table_by_d66_swap(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getCmTableResult$11.$$arity = 0); - - Opal.def(self, '$getErTableResult', $KillDeathBusiness_Korean_getErTableResult$12 = function $$getErTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "소생부작용표"; - table = [[11, "늙다리같은 냄새가 나기 시작한다"], [12, "덤으로 염소가 나왔다"], [13, "머리색이 형광색으로 변했다"], [14, "목소리가 로봇처럼 변했다"], [15, "끝이 삼각형으로 생긴 꼬리가 생겼다"], [16, "얼굴에 수수께끼의 프로그레스 바가 나왔다"], [22, "성별이 바꼇다"], [23, "온몸에 모자이크가 걸렸다"], [24, "전체적으로 반투명이 됬다"], [25, "조금 썩었다"], [26, "피푸가 형광색으로 빛난다"], [33, "날개가 자랐다"], [34, "프로그램 참가중의 기억을 잃었다"], [35, "이마에 제 3의 눈이 열렸다"], [36, "미묘하게 뜬다"], [44, "병아리로 변했다"], [45, "불합격품의 스탬프가 찍혔다"], [46, "살쪗다"], [55, "귀가 좋아하는 동물의 것으로 바꼇다"], [56, "말라졌다"], [66, "훌륭한 뿔이 이마에 났다"]]; - $b = self.$get_table_by_d66_swap(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getErTableResult$12.$$arity = 0); - - Opal.def(self, '$getWKTableResult', $KillDeathBusiness_Korean_getWKTableResult$13 = function $$getWKTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "일주일간표"; - table = [[11, "집에서 쫓겨난 헬P가 묶으러 왔다"], [12, "위험한 오오라를 낼 수 있게 되어, 엄청 인기생겼다"], [13, "지옥입거를 각오하고 신변정리를 했다"], [14, "지옥TV정보잡지에서 인터뷰를 받았다"], [15, "친가의 사업이 잘되고 있는데 손님이 왠지 모두 헬피플"], [16, "신호 기다리고 있는데 업무중인 악마가 사인요청 했다"], [22, "친척이 프로그램을 보고 있고 전화로 감상을 말했다"], [23, "다음 주의 수호천사와 아는 사이가 되버렸다"], [24, "다음 주의 타겟과 아는 사이가 되버렸다"], [25, "트라우마가 남아서 수면을 못하고 술에 빠졌다"], [26, "소원이 이루어지면 일 안해도 되니까,, 일 그만뒀다"], [33, "소원과는 별도로 출연보수가 들어와서 호와롭게 놀았다"], [34, "프로그램 중에 장난으로 사람을 쳤는데, 왠지 죽어버렸다"], [35, "프로그램 중에 악마가 무서워져서 온세상을 도망쳐다녔다"], [36, "팬을 자칭하는 스토커가 집을 망쳐놓았다"], [44, "문득 생각난 김에 산에 들어가서 수련했다"], [45, "헬 스타일리스트한테 집의 의류를 모조리 태워져버렸다"], [46, "헬 닥터가 밀린 치료비를 요구했다"], [55, "헬 드레스의 짝퉁을 강매하려고 한 하급 악마와 싸웠다"], [56, "다른 회수인 중 한명이 같은 직장인이라는 것이 확실해졌다"], [66, "묘하게 기부를 모집하는 영업전화가 걸려오는 주였다"]]; - $b = self.$get_table_by_d66_swap(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getWKTableResult$13.$$arity = 0); - - Opal.def(self, '$getServiceSceneTableResult', $KillDeathBusiness_Korean_getServiceSceneTableResult$14 = function $$getServiceSceneTableResult() { - var $a, $b, self = this, tableName = nil, sceneTable = nil, sceneGroup = nil, number1 = nil, $case = nil, table = nil, resultTmp = nil, number2 = nil, result = nil, number = nil; - - - tableName = "서비스 씬 표"; - sceneTable = ["탈의계 서비스 신표", "폭력계 서비스 신표", "여행계 서비스 신표", "연애계 서비스 신표", "감동계 서비스 신표", "다른 장르계 서비스 신표"]; - $b = self.$get_table_by_1d6(sceneTable), $a = Opal.to_ary($b), (sceneGroup = ($a[0] == null ? nil : $a[0])), (number1 = ($a[1] == null ? nil : $a[1])), $b; - $case = sceneGroup; - if ("탈의계 서비스 신표"['$===']($case)) {table = ["의장의 문제", "갈아입기", "탈의마작", "입욕", "수영복으로 싸운다", "야구권"]} - else if ("폭력계 서비스 신표"['$===']($case)) {table = ["이긴 후의 폭력", "집단의 폭력", "폭력을 암시하는 대화", "진 후의 폭력", "전혀 무의미한 폭력", "무의미한 폭력"]} - else if ("여행계 서비스 신표"['$===']($case)) {table = ["이동기관의 소개", "지역의 놀이를 소개", "지역의 동물을 소개", "지역의 여관을 소개", "일어나면 깜짝이야", "명물 요리의 소개"]} - else if ("연애계 서비스 신표"['$===']($case)) {table = ["키스신", "사랑을 깨닫다", "사랑에 고민함", "데이트신", "비밀을 고백한다", "러브신"]} - else if ("감동계 서비스 신표"['$===']($case)) {table = ["가족의 사랑을 깨닫다", "멋진 걸 말한다", "실패해서 실의에 빠진다", "지역 주민과 교류한다", "죽은 사람 얘기를 한다", "높은 곳에서 멋진 걸 말한다"]} - else {table = ["사이코 서스펜스", "스페이스 오페라", "동화", "히로익 판타지", "몬스터 호러", "로보"]}; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (resultTmp = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - result = "" + (sceneGroup) + "「" + (resultTmp) + "」을/를 행한다."; - number = "" + (number1) + (number2); - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getServiceSceneTableResult$14.$$arity = 0); - - Opal.def(self, '$getSoulTableResult', $KillDeathBusiness_Korean_getSoulTableResult$15 = function $$getSoulTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "소울방출표"; - table = ["100", "200", "200", "200", "300", "300"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getSoulTableResult$15.$$arity = 0); - - Opal.def(self, '$getSceneTelopGenericTableResult', $KillDeathBusiness_Korean_getSceneTelopGenericTableResult$16 = function $$getSceneTelopGenericTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "범용 연출표"; - table = ["크고 알기 쉬운 자막이 나온다.", "회상에 맞춰 재현 비디오가 흐른다.", "관계자가 등장인물에 대해서 이야기한다.", "게스트 헬 피플이 행동을 논평한다.", "행동의 시비에 대해 헬 시청자의 투표가 시작된다.", "헬 밴드의 신곡이 BGM으로 흐른다."]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getSceneTelopGenericTableResult$16.$$arity = 0); - - Opal.def(self, '$getHairStylistAbuseTableResult', $KillDeathBusiness_Korean_getHairStylistAbuseTableResult$17 = function $$getHairStylistAbuseTableResult(type) { - var $a, $b, self = this, tableName = nil, hellStylistAbuseTable1 = nil, hellStylistAbuseTable2 = nil, hellStylistwtable1 = nil, hellStylistwtable2 = nil, $case = nil, result = nil, number = nil, result1 = nil, num1 = nil, result2 = nil, num2 = nil, before = nil, after = nil; - - - tableName = "헬 스타일리스트 매도 표"; - hellStylistAbuseTable1 = [[11, " 땀범벅이 된"], [12, " 영감이 저번에 버린"], [13, " 실패작인"], [14, " 저예산의 영화로 몬스터 대신이 된"], [15, " 무리를 잃은"], [16, " 나쁜 의미로 성분 무조정인"], [22, " 우주인이 내용물을 뺀 후의"], [23, " 화학처리반이 처리하러 올 것 같은"], [24, " 혁명 직후 단두대에 걸린"], [25, " 광기의 예술가가 사상으로 만든"], [26, " 고향 마을을 제국군에게 불태워진 직후의"], [33, " 오년 만에 침대 아래에서 나온"], [34, " 고속도로에서 마구 치인"], [35, " 사후 6주 동안의"], [36, " 실패요리를 억지로 먹인"], [44, " 갓난아기가 처음으로 그린"], [45, " 장롱과 벽 사이의 틈에서 사는"], [46, " 고양이가 물어간"], [55, " 유명한 문어를 닮은 몬스터를 본"], [56, " 여행지에서 지갑이 없단 것을 깨달은"], [66, " 엽기살인을 취미로 하고 있는"]]; - hellStylistAbuseTable2 = [[11, " 아르마딜로"], [12, " 말미잘"], [13, " 노린재"], [14, " 오리너구리"], [15, " 공작"], [16, " 해파리"], [22, " 바퀴벌레"], [23, " 벌레"], [24, " 원숭이"], [25, " 시궁쥐"], [26, " 벌거숭이"], [33, " 해삼"], [34, " 똥"], [35, " 쇠똥구리"], [36, " 펭귄"], [44, " 물벼룩"], [45, " 낡은 인형"], [46, " 식인 곰"], [55, " 독 있는 도마뱀"], [56, " 송충이"], [66, " 들개"]]; - hellStylistwtable1 = ["「마치『", "「마치『", "「정말로『", "「정말로『", "「너는『", "「너는『"]; - hellStylistwtable2 = ["』같아!」", "』같구나!」", "』잖아!」", "』구나.」", "』처럼 보여.」", "』나 다를 바 없어! 」"]; - $case = type; - if ((1)['$===']($case)) {$b = self.$get_table_by_d66_swap(hellStylistAbuseTable1), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else if ((2)['$===']($case)) {$b = self.$get_table_by_d66_swap(hellStylistAbuseTable2), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else { - $b = self.$get_table_by_d66_swap(hellStylistAbuseTable1), $a = Opal.to_ary($b), (result1 = ($a[0] == null ? nil : $a[0])), (num1 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_d66_swap(hellStylistAbuseTable2), $a = Opal.to_ary($b), (result2 = ($a[0] == null ? nil : $a[0])), (num2 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_1d6(hellStylistwtable1), $a = Opal.to_ary($b), (before = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$get_table_by_1d6(hellStylistwtable2), $a = Opal.to_ary($b), (after = ($a[0] == null ? nil : $a[0])), $b; - result = "" + (before) + (result1) + (result2) + (after); - number = "" + (num1) + "," + (num2);}; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getHairStylistAbuseTableResult$17.$$arity = 1); - - Opal.def(self, '$getSkillTableResult', $KillDeathBusiness_Korean_getSkillTableResult$18 = function $$getSkillTableResult(type) { - var $a, $b, self = this, skillTableFull = nil, skillTable = nil, num1 = nil, skillGroup = nil, table = nil, tableName = nil, skill = nil, num2 = nil, result = nil, number = nil; - - - skillTableFull = [["직업", ["무직", "예술가", "연구자", "가사 도우미", "학생", "악당", "노동자", "탐정", "거물", "의사", "공무원"]], ["동작", ["외치다", "번뜩이다", "베다", "휘두르다", "던지다", "때리다", "차다", "뛰다", "쏘다", "잡다", "기다리다"]], ["소도구", ["피어스", "머리장식", "총", "목걸이", "벨트", "안경", "모자", "시계", "검", "링", "타투"]], ["의상", ["네이킷드", "아웃도어", "에스닉", "힙합", "밀리터리", "포멀", "전통", "고딕", "펑크", "메탈", "아이돌"]], ["정동", ["사랑", "기쁨", "기대", "초조", "자부", "분노", "슬픔", "질투", "공포", "수치", "혐오"]], ["소원", ["죽음", "복수", "승리", "지배", "획득", "번영", "강화", "안전", "건강", "장수", "생"]]]; - $b = self.$get_table_by_1d6(skillTableFull), $a = Opal.to_ary($b), (skillTable = ($a[0] == null ? nil : $a[0])), (num1 = ($a[1] == null ? nil : $a[1])), $b; - $b = skillTable, $a = Opal.to_ary($b), (skillGroup = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b; - if (type['$==']("T")) { - - tableName = "지정특기 랜덤결정표"; - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (skill = ($a[0] == null ? nil : $a[0])), (num2 = ($a[1] == null ? nil : $a[1])), $b; - result = "" + "「" + (skillGroup) + "」《" + (skill) + "》"; - number = "" + (num1) + "," + (num2); - } else { - - tableName = "지정특기분야 랜덤결정표"; - result = skillGroup; - number = num1; - }; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getSkillTableResult$18.$$arity = 1); - - Opal.def(self, '$getExtraTableResult', $KillDeathBusiness_Korean_getExtraTableResult$19 = function $$getExtraTableResult(type) { - var $a, $b, self = this, tableName = nil, extraTable1 = nil, extraTable2 = nil, extraTable3 = nil, extraTable4 = nil, $case = nil, result = nil, number = nil, result1 = nil, num1 = nil, result2 = nil, num2 = nil, result3 = nil, num3 = nil, result4 = nil, num4 = nil; - - - tableName = "엑스트라 표"; - extraTable1 = [[11, "당신과 친구인"], [12, "당신과 원망하는 녀석의 기회를 노리고 있는"], [13, "바쁘게 전화로 이야기 하고있는"], [14, "넘어지며 도망친"], [15, "씬의 배경의 소유자인"], [16, "가공의 인물이라고 생각되고 있던 신(神)"], [22, "과거의 시즌 우승자인"], [23, "기분 좋게 엄청 취한"], [24, "공포로 몸을 움츠리게 하고 있는"], [25, "업계에서는 유명한"], [26, "행복한 가정을 가지고 있는"], [33, "광역 지명 수배되고 있는"], [34, "오늘 모닝뉴스에서 특집으로 되어 있던"], [35, "항상 미소를 잊지 않는 거물인"], [36, "진실의 탐구 과정에서 발광한"], [44, "현지에서는 패배를 모르는"], [45, "매우 동작에 절도가 있는"], [46, "평범한"], [55, "변신 히어로의 정체인"], [56, "" + "『" + (self.$getNameTableResult(0)['$[]'](1)) + "』의 이명을 가지고 있는"], [66, "역사상의 인물이지만 실은 살아있던"]]; - extraTable2 = [[11, "샐러리맨"], [12, "스포츠 선수"], [13, "양아치"], [14, "드라이버"], [15, "쥐"], [16, "파일럿"], [22, "영화 감독"], [23, "개"], [24, "자객"], [25, "주부"], [26, "소설가"], [33, "작사"], [34, "정치가"], [35, "갑부"], [36, "큰 남자"], [44, "수수께끼의 미녀"], [45, "고양이"], [46, "미소녀"], [55, "문화인"], [56, "용자"], [66, "신(神)"]]; - extraTable3 = [[11, "이상한 상자안에서"], [12, "불쌍한 희생자를 죽이면서"], [13, "소를 타면서"], [14, "말을 타면서"], [15, "벽을 분쇄하면서"], [16, "문을 분쇄하면서"], [22, "진한 안개속에서 천천히"], [23, "자동문에서 나오면서"], [24, "상공에서 급강하하면서"], [25, "전속력으로 달리면서"], [26, "높은 곳으로부터"], [33, "테마 음악과 함께"], [34, "지나가는 길에"], [35, "이름과 직업의 명함과 함께"], [36, "오토바이를 타면서"], [44, "무덤을 뚫으며"], [45, "부하를 여럿 거느리며"], [46, "거친 바람에 감기며"], [55, "무기를 잡으며"], [56, "헬 포탈을 지나며"], [66, "불길을 등에 지며"]]; - extraTable4 = [[11, "사랑스럽게 등장"], [12, "선명하게 등장"], [13, "시원스럽게 등장"], [14, "이상하게 등장"], [15, "몹시 거칠게 등장"], [16, "기세 좋게 등장"], [22, "아름답게 등장"], [23, "잘난듯이 등장"], [24, "엄숙하게 등장"], [25, "무섭게 등장"], [26, "멋지게 등장"], [33, "뽐내며 등장"], [34, "죽음의 예감과 함께 등장"], [35, "조용하게 등장"], [36, "품위있게 등장"], [44, "야무지지 못하게 등장"], [45, "지적이게 등장"], [46, "나고야풍으로 등장"], [55, "매끈하게 등장"], [56, "기분이 안좋게 등장"], [66, "쾌활하게 등장"]]; - $case = type; - if ((1)['$===']($case)) {$b = self.$get_table_by_d66_swap(extraTable1), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else if ((2)['$===']($case)) {$b = self.$get_table_by_d66_swap(extraTable2), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else if ((3)['$===']($case)) {$b = self.$get_table_by_d66_swap(extraTable3), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else if ((4)['$===']($case)) {$b = self.$get_table_by_d66_swap(extraTable4), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b} - else { - $b = self.$get_table_by_d66_swap(extraTable1), $a = Opal.to_ary($b), (result1 = ($a[0] == null ? nil : $a[0])), (num1 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_d66_swap(extraTable2), $a = Opal.to_ary($b), (result2 = ($a[0] == null ? nil : $a[0])), (num2 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_d66_swap(extraTable3), $a = Opal.to_ary($b), (result3 = ($a[0] == null ? nil : $a[0])), (num3 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_d66_swap(extraTable4), $a = Opal.to_ary($b), (result4 = ($a[0] == null ? nil : $a[0])), (num4 = ($a[1] == null ? nil : $a[1])), $b; - result = "" + (result1) + (result2) + "が" + (result3) + (result4); - number = "" + (num1) + "," + (num2) + "," + (num3) + "," + (num4);}; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getExtraTableResult$19.$$arity = 1); - - Opal.def(self, '$getpcTableResult', $KillDeathBusiness_Korean_getpcTableResult$20 = function $$getpcTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "제작위원 결정표"; - table = [[11, "헬 라이온"], [12, "헬 라이온"], [13, "헬 라이온"], [14, "헬 크로우"], [15, "헬 크로우"], [16, "헬 크로우"], [22, "헬 스네이크"], [23, "헬 스네이크"], [24, "헬 스네이크"], [25, "헬 드래곤"], [26, "헬 드래곤"], [33, "헬 드래곤"], [34, "헬 플라이"], [35, "헬 플라이"], [36, "헬 플라이"], [44, "헬 갓"], [45, "헬 갓"], [46, "헬 갓"], [55, "헬 베어"], [56, "헬 베어"], [66, "헬 베어"]]; - $b = self.$get_table_by_d66_swap(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getpcTableResult$20.$$arity = 0); - - Opal.def(self, '$getohTableResult', $KillDeathBusiness_Korean_getohTableResult$21 = function $$getohTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "실제로 어떠했는가 표"; - table = ["대개【흥행수입】의 예측은 정확했다. 증감은 없이, 회수인은 당분간 공공장소에서 인기였다.", "생각보다 흥행했다!【흥행수입】이 4D6억 헬엔 증가. 장르의 수작으로 5년 후에도 가끔 입에 오른다", "조금 트러블이 생겨서 공개 시기를 놓쳤다. 【흥행수입】이 4D6억 헬엔 감소. 헬-레이의 매상을 기대하자", "이런 맙소사, 동시기에 타시즌의 영화판이 공개된다. 【흥행수입】이 반이 된다.", "오 맙소사, 헬 아카데미상을 잔뜩 받았다.【흥행수입】이 두배가 된다!", "에피소드의 표현중에 미묘하고 귀찮은 문제를 일으켜 많은 헬 피플이 언짢게 본다. 공개는 없음으로."]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getohTableResult$21.$$arity = 0); - - Opal.def(self, '$getplTableResult', $KillDeathBusiness_Korean_getplTableResult$22 = function $$getplTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "헬 라이온터스크 표"; - table = ["" + "\n" + "「프랑스어.」지정 특기는《예술가》. 왠지 등장 인물 전원이 프랑스어로 밖에 회화할 수 없는 씬이 설정된다. 할 수 있는 한, 프랑스어를 구사하고 의사소통을 시도해라!", "" + "\n" + "「회화가 없다.」지정 특기는《뛰다》. 회화 그 자체가 비열하고 엔터테인먼트적이라고 하는 것으로, 모든 말을 발언하는 것이 허락되지 않는 씬표가 설정된다. 제스처로 힘내라!", "" + "\n" + "「명언의 인용.」지정 특기는《머리장식》. 과거의 명작 영화나 소설, 역사상의 사건등에서 따라한 명언 밖에 말할 수 없는 씬이 설정된다. 교양이 없으면 말할 수 없다!", "" + "\n" + "「등장인물의증가。」지정 특기는《트레드》. 등장 인물이 쓸데 없이 두배로 늘어나서 각각 개성적인 고민이나 사건을 말하기 시작한다. 이대로는 귀찮고 개런티도 늘어나므로, 전부 죽이자.", "" + "\n" + "「막연한 불안.」지정 특기는《자부》. 특별히 무언가 정해지지않고, 멍하니 불안감에 연연 괴로워하거나 침체하거나 하는 씬을 강요 당한다. 이것을 지루하게 하지 않는 것은 어렵다!", "「길게 끌기.」지정 특기는《삶》. 컷 없이 30분 정도 같은 씬이 계속 된다. NG는 용서되지 않는다. 이것으로 중간을 가지게할 수 있는 것은 프로의 배우정도의 것이지만, 회수인은 연기의 아마추어다."]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getplTableResult$22.$$arity = 0); - - Opal.def(self, '$getprTableResult', $KillDeathBusiness_Korean_getprTableResult$23 = function $$getprTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "헬 크로우터스크 표"; - table = ["「초라한 게스트.」지정 특기는《악당》. 일반인이나 개, 남동생이나 엄마가 게스트로서 등장한다. 본래의 게스트와의 차액은 착복된다. 사정을 알려져 있지 않은 게스트와 잘 관련되자!", "「친가에서의 촬영.」지정 특기는《외치다》. 촬영 장소가 친가가 된다. 본래의 로케 비용은 착복된다. 가족을 설득하고, 잘 촬영 허가를 받지 않으면 적자가 나와 버릴 것이다!", "「평상복으로의 촬영.」지정 특기는《안경》. 왠지 헬 스타일리스트가 휴일로, 그 만큼의 인건비와 의상대로써 착복된다. 평상복인 채로 초상의 액션을 해내는 것은 불가능하게 가깝다!", "「도보로 이동한다.」지정 특기는《고딕》. 헬 포털의 예산이 착복되었다. 오로지 씬까지 걷지 않으면 촬영조차 할 수 없다. 촬영전에 녹초가되어 버리면, 관객에게도 전해질 것이다.", "「특수 효과가 나오지 않는다.」지정 특기는《기대》. 리얼타임 특수 효과의 예산이 착복되었다! 예산 없이 일하려고 하지 않는 헬 SFX 엔지니어를, 어떻게든 애원이라도 해서 일하게 하자!", "「식사가 나오지 않는다.」지정 특기는《획득》. 식사의 시간이지만, 헬 주문 도시락이 오지 않는다. 그 만큼의 예산이 착복되었던 것이다. 공복인 상태로 좋은 연기를 하려면 , 기합에 의지할 수 밖에 없다."]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getprTableResult$23.$$arity = 0); - - Opal.def(self, '$getpnTableResult', $KillDeathBusiness_Korean_getpnTableResult$24 = function $$getpnTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "헬 스네이크터스크 표"; - table = ["「원수.」지정 특기는《가사도우미》. 과거 개변에 의해, 임의의 상대가, 갑자기 부모의 원수나 연인의 원수가 된다. 당황하지 않고 분노에 불타자. 왜 이렇게 되었는지, 생각해선 안돼!", "「사소한 일로부터 대싸움.」지정 특기는《기다리다》. 임의의 상대와 아무래도 좋은 이유로 싸움을 하는 것을 강요 당한다. 정말로 아무래도 좋아지고 싸움을 그만두는 것은 용서되지 않는다.", "「이익이 상반된다.」지정 특기는《네크리스》. 임의의 상대가 바라는 것과 자신이 바라는 것이 양립하지 않는 것을 어필 당한다. 그렇지 않더라 하여도 억지로 이유를 생각해 내라!", "「신적.」지정 특기는《네이키드》. 취미나 종교를 이유로, 임의의 상대와 싸움 하는 것을 강요 당한다. 이야기하고 알아 버리거나 취미의 폭이 넓어져선 안 된다.", "「유아기의 트라우마.」지정 특기는《질투》. 과거 개변으로 슬픈 기억이 날조 되어 엽기 살인범으로서 캐릭터가 추가된다. 약간 깬다거나 슬퍼하지마라. 미쳐라!", "「인류 일반상식의 미움.」지정 특기는《복수》. 이유 없게 사람을 미워하는 것을 강요 당한다. 원래 성격 좋은 회수인에 있어서는 상당한 난행이다. 인류의 나쁜 면 찾기를 하자!"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getpnTableResult$24.$$arity = 0); - - Opal.def(self, '$getpdTableResult', $KillDeathBusiness_Korean_getpdTableResult$25 = function $$getpdTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "헬 드래곤터스크 표"; - table = [" 「바리에이션을 보고 싶어서 NG.」지정 특기는《대물》. 별로 나쁜 연기는 아닌데, 조금 다른 바리에이션을 몇번이나 할거야. 이성을 잃지 말고 참아 줘!", "「뭔가 다르니까 NG.」지정 특기는《때리다》. 회수인의 연기에 트집을 잡을 수 있었다. 그러나 어떤 연기를 하면 좋은 것인지 가르쳐 주지 않는다. 이성을 잃지 않고 참아 줘! 다른 사람을 때려라!", "「 아직 시간이 있으니까 NG.」지정 특기는《타투》. 바보같은 이유로 NG가 나왔지만, 어쨌든 이성을 잃지 않고 참아 줘. 헬 드래곤의 기분을 해친다면 광고비가 깎아진다!", "「예산을 다 사용하고 싶어서 NG.」지정 특기는《네이키드》. 아직 인건비를 사용할 수 있기 때문에 다시 한번, 이라든가 하는 이유로 재시도다. 이성을 잃지 않고 참아 줘. 녀석은 돈을 가지고 있어!", "「기분이 나쁘기 때문에 NG.」지정 특기는《화내다》. 집에서 무엇인가 싫은 일이 있었으므로 라는 둥 트집을 잡혔다. 이제, 무엇을 해도 OK는 나오지 않는다. 이성을 잃지 않고 참아 줘. 언젠가는 끝난다!", "「네 존재자체가 NG.」지정 특기는《안전》. 회수인의 인선 그 자체에 트집을 잡을 수 있었다. 당신에게 NG를 내는 것만이 목적이다. 이성을 잃지 않고 참아 줘. 상대는 무진장 강하다."]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getpdTableResult$25.$$arity = 0); - - Opal.def(self, '$getpfTableResult', $KillDeathBusiness_Korean_getpfTableResult$26 = function $$getpfTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "헬 플라잉터스크 표"; - table = ["「더러운 화장실.」지정 특기는《탐정》. 몹시 비위생적인 장소로 배경이 변경된다. 똥투성이 푸세식인 화장실인지, 똥구덩이 냄새가 풀풀난다. 악취에 견딜 수 있을지, 그것이 승부의 갈림길이다!", "「예술적 음부 은폐.」지정 특기는《뛰다》. 전라로 씬을 내지만 비쳐선 안 되는 것 이다. 본래라면 수영복의 천이 있는 부분이 카메라에 비치지 않게, 장애물을 활용해라!", "「촉수.」지정 특기는《벨트》. 당돌하게 촉수 몬스터가 등장한다. 그는 신사적이지만 가차 없이 습격해오므로, 섹시하게 져라! 아니면 관객은 실망할 것이다!", "「미끌미끌.」지정 특기는《트레드》. 어쩐지 점액이 들어간 물통이 등장한다. 이것을 감싸고 씬을 시작하라고 말한다. 성분도 모르는 점액은 싫지만, 어떻게든 참아라!", "「병원체를 거쳐 입으로 섭취한다.」지정 특기는《공포》. 병의 원인이 될 것 같은 것을 억지로 먹혀진다. 구체적으로는 배설물이나 부패한 것, 처음부터 비위생적인 것 이다.", "「국부에의 심한 타격.」지정 특기는《죽음》. 헬 AD나 다른 캐릭터로부터 국부가 강타되는 것을 강요 당한다. 죽지 않고 잘 아파해라. 잘못하면 쇼크로 그대로 죽는다!"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getpfTableResult$26.$$arity = 0); - - Opal.def(self, '$getpgTableResult', $KillDeathBusiness_Korean_getpgTableResult$27 = function $$getpgTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "헬 갓터스크 표"; - table = ["「아이돌이 동료로서 등장.」지정 특기는《의사》. 푸시받는 아이돌이 회수인의 아군으로서 등장하므로, 부드럽게 관계를 쌓아 올려 공투 해, 상대를 세우자. 리스펙트다!", "「아이돌이 적으로서 등장.」지정 특기는《차다》. 푸시받는 아이돌이 표적의 아군. 회수인의 적으로서 등장! 볼만한 장면을 준비 해 주면서, 잘 넘어뜨려라. 일방적으로는 안돼!", "「아이돌이 무의미하게 등장.」지정 특기는《검》. 푸시받는 아이돌이 등장하지만, 왜 등장하는지 아무도 모른다. 본인도 대본을 받지 않았다. 즉흥으로 어떻게든 해라!", "「아이돌의 동료가 된다.」지정 특기는《에스닉》. 푸시받는 아이돌의 동료가 되어, 당돌하게 사랑이나 모험을 한다. 황금의 영혼과 관계없는 이야기가 계속 되지만, 관객에게 그것을 눈치채게 하지 말아라!", "「아이돌과 악수.」지정 특기는《사랑》. 푸시받는 아이돌이 갑자기 나와 악수해 준다. 갑작스러운 일이지만, 당황해선 안 된다. 흐르는 듯이 화제를 만들며 회화해, 악수에 대해 코멘트를 하자!", "「같이 댄스.」지정 특기는《건강》. 갑자기 댄스 씬이 시작된다! 다만 회수인은 백 댄서다. 노래해라! 다 춤추어라! 헐떡거리거나 웃는 얼굴이 망가지면 NG다!"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getpgTableResult$27.$$arity = 0); - return (Opal.def(self, '$getpbTableResult', $KillDeathBusiness_Korean_getpbTableResult$28 = function $$getpbTableResult() { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - tableName = "헬 베어터스크 표"; - table = ["「헬 이불.」지정 특기는《대물》. 지옥과 같은 잘 때의 기분을 제공하는, 한 장 200만 헬엔의 헬 이불을 어필하는 것에. 소재는 절대 그렇게 좋지 않기 때문에, 기술을 강조하자.", "「헬 핸드백.」지정 특기는《잡다》. 무한하게 물건이 들어가는 핸드백을 어필이다. 다만 원하는 것을 꺼낼 수 없고, 가방안에 가방을 넣으면, 심한 일이 일어난다.", "「헬 마스크.」지정 특기는《모자》. 완전하게 헬 P의 머리 부분을 재현한 고급 마스크를 써, 그 훌륭함을 어필하면서 영화를 촬영하자. 덧붙여 시야는 몹시 나쁘다.", "「헬 카메라.」지정 특기는《아이돌》. 반드시 심령 사진이 찍히는 카메라를 사용하며 손님에게 강매해라! 영령사진이 나오기도 하지만, 그것을 눈치채여선 안 된다. 사진을 분명히 잘 보인다!", "「헬 와치.」지정 특기는《초조》. 시간은 모르지만 엄청 멋진 시계를 어필. 그 거 팔찌아냐, 라고 태클받기기 전에 잘 회유하자!", "「헬 부적.」지정 특기는《번영》. 소원을 성취하는 악령이, 당신의 성공을 확약! 그 다음은 성공한 채로 사고로 죽게 되지만, 그런 것 사소한 일이다!"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return [tableName, result, number]; - }, $KillDeathBusiness_Korean_getpbTableResult$28.$$arity = 0), nil) && 'getpbTableResult'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/KurayamiCrying.js b/src/assets/dicebot/KurayamiCrying.js deleted file mode 100644 index 78a344b0d..000000000 --- a/src/assets/dicebot/KurayamiCrying.js +++ /dev/null @@ -1,43 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$===', '$to_i', '$last_match', '$[]', '$getTableInfoFromExtraTableText', '$getTableCommandResult', '$nil?', '$freeze', '$setPrefixes', '$+', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'KurayamiCrying'); - - var $nesting = [self].concat($parent_nesting), $KurayamiCrying_rollDiceCommand$1; - - - Opal.const_set($nesting[0], 'ID', "KurayamiCrying"); - Opal.const_set($nesting[0], 'NAME', "クラヤミクライン"); - Opal.const_set($nesting[0], 'SORT_KEY', "くらやみくらいん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "・アクシデント表(ACT)\n"); - - Opal.def(self, '$rollDiceCommand', $KurayamiCrying_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, $case = nil, number = nil, info = nil, name = nil, table = nil, text = nil, result = nil; - - - $case = command; - if (/^ACT(\d+)$/i['$===']($case)) { - number = $$($nesting, 'Regexp').$last_match(1).$to_i(); - info = $$($nesting, 'TABLES')['$[]']("ACT"); - name = info['$[]']("name"); - table = self.$getTableInfoFromExtraTableText(info['$[]']("table")); - text = table['$[]'](number); - result = "" + (name) + "(" + (number) + ") > " + (text); - return text;}; - result = self.$getTableCommandResult(command, $$($nesting, 'TABLES')); - if ($truthy(result['$nil?']())) { - return nil - } else { - return result - }; - }, $KurayamiCrying_rollDiceCommand$1.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["ACT"], {"ACT": $hash2(["name", "type", "table"], {"name": "アクシデント表", "type": "1D10", "table": "" + "頭の中が黒く染まってゆく、怖い、苦しい。気持ち悪い!でも…なんだか少しだけ、すがすがしい。あなたは「発狂」する。すでに「発狂」している場合、「理性」を2点失う。\n" + "待って、今のはナシ!調子が愚かったっていうか、ちょっと違うことしちゃったからさ…もう1回やらせてよ、ね?失敗した「判定」を再度やり直す。ただし、前回と同じ「能力値」を使うことはできす、進行役と「交渉」を行った扱いとなる(代替判定により「浸食」が2点増加する)。\n" + "こっちは必死にやってるってのに、まったく、アイツめ……! あなたが「ツナガリ」を結んでいる主人公を任意に1人選び、「感情」を変更する。この際、必す「負の惑情」を選ばなければならない。「ツナガリ」を結んでいる主人公がいない場合、ダイスを振り直し、再度「アクシデント表」に当てはめる。\n" + "不意を突かれたあなたは、とっさに化物を攻撃する!……確かに化物に見えたのだ。しかし、あなたが手にかけたのは見知った顔だった。あなたが正の「ツナガリ」を結んでいる主人公をランダムに1人選び、2点のダメージを与える。正の「ツナガリ」を結んでいる主人公がいない場合、ダイスを振り直し、再度「アクシデント表」に当てはめる。\n" + "さっきからずっと、不気味な視線を感じる……どうやら、良くない存在に目をつけられてしまったようだ。「怪異」があなたに一方的な「ツナガリ」を獲得する。すでに「怪異」から「ツナガリ」を獲得されている場合、ダイスを振り直し、再度「アクシデント表」に当てはめる。\n" + "ぶつんと頭の中で音がする。あれっ?誰かのことを考えていたような……なんだか記憶が霞んで、思い出せない。あなたが獲得している「ツナガリ」をランダムに1つ失う(「継続的なツナガリ」である場合、セッション終了後に再度獲得する)。「ツナガリ」が1つもない場合、ダイスを振り直し、再度「アクシデント表」に当てはめる。\n" + "ぞわりと背中に懇寒が走る。自分を取り巻く「流れ」──運命に似た何かが歪んでしまったような、おぞましい予感が胸を走る。「確保」しているダイスの目が「10」になる。ダイスを「確保」していない場合、新たに「10」を「確保」する。すでに「10」の目を「確保」している場合、ダイスを振り直し、再度「アクシデント表」に当てはめる。\n" + "違う……違う、違う。これは自分のせいじゃない。いや、きっと何かの間違いだ。そう、あいつのせいに決まってる!進行役があなた以外の主人公をランダムに1人選ぷ(誰を選んだか参加者に教えてはならない) 。選ばれた主人公が次に判定を行った際、進行役は、最も低い数字を示しているダイスの目を「10」に変更する。\n" + "あぁ……見つからない。アレがないとダメなのに。一体どうしたら──!「アイテム」をランダムに1つ失う(「継続品」である場合、センョン終了後に再度獲得する)。「アイテム」を1つも所持していない場合、「アイテム」を所持する主人公をランダムに1人選び、2点のダメージを与え、「アイテム」を1つ奪い取る。主人公が誰も「アイテム」を所持していない場合、「理性」を2点失う。\n" + "まるで自分を支える何かが失われたように、あなたはその場に立ち尽くす。諦めと絶望が心を支配する。ああ、そうか。これが、「心が折れる」ということか……。あなたは「理性」を4点失う。\n"})}).$freeze()); - return self.$setPrefixes($rb_plus(["ACT.*"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/LiveraDoll.js b/src/assets/dicebot/LiveraDoll.js deleted file mode 100644 index 92f946329..000000000 --- a/src/assets/dicebot/LiveraDoll.js +++ /dev/null @@ -1,128 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$upcase', '$===', '$to_i', '$last_match', '$delete', '$sort', '$uniq', '$checkRoll', '$get_card_text', '$roll', '$collect', '$split', '$each', '$>', '$count', '$push', '$+', '$join', '$==', '$get_table_by_number']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'LiveraDoll'); - - var $nesting = [self].concat($parent_nesting), $LiveraDoll_initialize$1, $LiveraDoll_rollDiceCommand$2, $LiveraDoll_checkRoll$3, $LiveraDoll_get_card_text$6; - - self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "LiveraDoll"); - Opal.const_set($nesting[0], 'NAME', "紫縞のリヴラドール"); - Opal.const_set($nesting[0], 'SORT_KEY', "ししまのりうらとおる"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "アタックX:[x]ATK(BNo)\n" + "\n" + "[]内のコマンドは省略可能。\n" + "「x」でダイス数を指定。省略時は「1」。\n" + "(BNo)でブロックナンバーを指定。「236」のように記述。順不同可。\n" + "\n" + "【書式例】\n" + "・4ATK263 → 4dでブロックナンバー「2,3,6」の判定。\n" + "----------------------------------------------------------------\n" + "以下のコマンドは、リヴラデッキカードの補助を目的としたものです。\n" + "使用の際は上部メニューより\n" + "「カード → カード配置の初期化 → 紫縞のリヴラドール:リヴラデッキ」\n" + "と操作し、リヴラデッキを使用できる状態にしておいてください。\n" + "\n" + "各リヴラデッキカードの末尾に書かれている [] 内のコマンドをタイプすると、\n" + "カード名と効果のテキストを参照できます。\n" + "コマンドは【色】【ネイル種別】【管理番号】の3要素で構成されており、\n" + "それぞれ、以下の文字が対応しています。\n" + "\n" + "【色】\n" + "C:無 K:黒 W:白 R:赤 B:青 G:緑 E:ライヴラリアン\n" + "\n" + "【ネイル種別】\n" + "L:リヴラネイル D:パッシヴドレス O:オーナーズネイル\n" + "\n" + "例:CL1(無色のリヴラネイルの1番目『ストライク』)\n" + "例:KD2(黒のパッシヴドレスの2番目『第二夜の黒』)\n" + "例:WO3(白のオーナーズネイルの3番目『罪なき純白』)\n"); - self.$setPrefixes(["(C|K|W|R|B|G|E)(L|D|O)\\d+", "(\\d+)?ATK([1-6])?([1-6])?([1-6])?([1-6])?([1-6])?([1-6])?"]); - - Opal.def(self, '$initialize', $LiveraDoll_initialize$1 = function $$initialize() { - var $iter = $LiveraDoll_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $LiveraDoll_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $LiveraDoll_initialize$1, false), $zuper, $iter); - return (self.sortType = 3); - }, $LiveraDoll_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $LiveraDoll_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, self = this, output = nil, $case = nil, diceCount = nil, blockNo = nil, color = nil, cardtype = nil, cardindex = nil; - - - output = (function() {$case = command.$upcase(); - if (/^(\d+)?ATK([1-6])?([1-6])?([1-6])?([1-6])?([1-6])?([1-6])?$/i['$===']($case)) { - diceCount = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 1).$to_i(); - blockNo = [($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : 0).$to_i(), ($truthy($a = $$($nesting, 'Regexp').$last_match(3)) ? $a : 0).$to_i(), ($truthy($a = $$($nesting, 'Regexp').$last_match(4)) ? $a : 0).$to_i(), ($truthy($a = $$($nesting, 'Regexp').$last_match(5)) ? $a : 0).$to_i(), ($truthy($a = $$($nesting, 'Regexp').$last_match(6)) ? $a : 0).$to_i(), ($truthy($a = $$($nesting, 'Regexp').$last_match(7)) ? $a : 0).$to_i()]; - blockNo.$delete(0); - blockNo = blockNo.$sort(); - blockNo = blockNo.$uniq(); - return (output = self.$checkRoll(diceCount, blockNo));} - else if (/^(C|K|W|R|B|G|E)(L|D|O)(\d+)$/i['$===']($case)) { - color = $$($nesting, 'Regexp').$last_match(1).$upcase(); - cardtype = $$($nesting, 'Regexp').$last_match(2).$upcase(); - cardindex = $$($nesting, 'Regexp').$last_match(3).$to_i(); - return self.$get_card_text(color, cardtype, cardindex);} - else { return nil }})(); - return output; - }, $LiveraDoll_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$checkRoll', $LiveraDoll_checkRoll$3 = function $$checkRoll(diceCount, blockNo) { - var $a, $b, $$4, $$5, self = this, _dice = nil, diceText = nil, diceArray = nil, resultArray = nil, success = nil, blockText = nil, resultText = nil, result = nil; - - - $b = self.$roll(diceCount, 6, self.sortType), $a = Opal.to_ary($b), (_dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceArray = $send(diceText.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - resultArray = []; - success = 0; - $send(diceArray, 'each', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - if ($truthy($rb_gt(blockNo.$count(i), 0))) { - return resultArray.$push("×") - } else { - - resultArray.$push(i); - return (success = $rb_plus(success, 1)); - };}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - blockText = blockNo.$join(","); - resultText = resultArray.$join(","); - result = "" + (diceCount) + "D6(Block:" + (blockText) + ") > " + (diceText) + " > " + (resultText) + " > 成功数:" + (success); - return result; - }, $LiveraDoll_checkRoll$3.$$arity = 2); - return (Opal.def(self, '$get_card_text', $LiveraDoll_get_card_text$6 = function $$get_card_text(color, cardtype, cardindex) { - var self = this, $case = nil, table = nil; - - - if (cardindex['$=='](0)) { - return nil}; - $case = color; - if ("C"['$===']($case)) {$case = cardtype; - if ("L"['$===']($case)) {table = [[1, "『ストライク』 対象に【アタック:1《OD》】を行い、可能ならば追加で【エクストルード】を行う(可能な状況であれば行わなければならない)。"], [2, "『シュート』 対象に【アタック:1《OD》】を行う。対象が自身より低い「高度」に存在する場合、代わりに【アタック:2《OD》】を行う。"], [3, "『スナイプ』 対象に【アタック:1《OD》】を行う。対象が自身より低い「高度」に存在する場合、代わりに【アタック:2《OD》】を行う。"], [4, "『ウォーク』 【ムーヴ:1】を行う。"], [5, "『ラン』 【ムーヴ:2】を行う。"], [6, "『オルタネート』 直後に行うアタックネイルでは、ダイスロールを2度行い、任意の一方の結果を選ぶことが出来る。"], [7, "『ジャンプ』 このアタックネイル終了時まで自身が「高度:3《OD》」に存在するものとして扱う。"], [8, "『オーヴァードライヴ』 直後のネイルでは《OD》指定された数値を「4《OD》」増加する。"], [9, "『ガード』 ダイスロールで使用されたダイスの内ふたつまでを選ぶ。その出目を1減少する。"], [10, "『パリィ』 ダイスロールで使用されたダイスの内ふたつまでを選ぶ。そのダイスを振り直しさせる。この時、振り直した後の値のみを採用する。"], [11, "『カウンターアタック』 自身の「シールドレス」を破壊したユニットに対し、即座に【アタック:1】を行う。"], [12, "『トラップ』 移動を行ったユニットに対し、即座に【アタック:1】を行う。"], [13, "『ミスチーフ』 移動を行ったユニットに、追加で【ムーヴ:1】を行わせる。この移動先は貴女が決定する。"], [14, "『ライトニングダンス』 即座に【ムーヴ:1】を行う。(これによって、直後のアタックネイルの射程の外に出た場合、そのアタックネイルのダイスロールは行われず、失敗したことになる)"]]} - else if ("D"['$===']($case)) {table = [[1, "『貴女好みの装い(おすきなように)』 貴女好みの装いは破壊されない。"], [2, "『迷子の貴女へ(きめられないのなら、そのままどうぞ)』 全ての色(無色を含む)のAsレベルが3であるかのようにオーナーズネイルを使用することが出来る。"]]}} - else if ("K"['$===']($case)) {$case = cardtype; - if ("L"['$===']($case)) {table = [[1, "『黒爪の掻きむしり(デザイア・スクラッチ)』 対象に【アタック:黒Asレベル《OD》+1】を行う。"], [2, "『黒爪の突き刺し(ヘイトレッド・ピアース)』 対象に【アタック:3《OD》】を行い、その後【エクストルード】を行ってもよい。"], [3, "『黒弾の豪雨(ブラックレイン・ダムネイション)』 対象に【アタック:4】を行う。その後自身に【アタック:1】を行う。"], [4, "『黒弾の奔流(ブラックニードルカスケイド)』 対象に【アタック:2】を行う。対象が自身よりも低い「高度」に存在する場合、代わりに【アタック:4《OD》】を行う。"], [5, "『黒影の疾走(シャドウ・ストリート・ラン)』 【ムーヴ:1】か【ムーヴ:2】のどちらかを行う。"], [6, "『夜空を征け(ナイト・ランナー)』 【ムーヴ:1】を行う。このムーヴネイル以降、クリンナップフェイズ終了時まで、自身が「高度:7」に存在するものとして扱う。"], [7, "『黒刃の執行者(ブラック・エンフォーサー)』 直後に行うアタックネイルでは、《OD》指定された数値を「2《OD》」増加する。また、2以上の成功数が出た場合、攻撃対象の「シールドレス」を追加でもう1枚破壊する。"], [8, "『黒茨の塔を駆け抜けよ(スーサイド・ドライヴ)』 自身に【アタック:1】を行う。これ以降クリンナップフェイズ終了時まで、地震が「高度:13《OD》」に存在するものとして扱う。"], [9, "『舞い踊る黒刃(ハイマニューバ・ブラック・ブレイド)』 直前のムーヴネイルで移動したセル数に等しい回数だけ、直後のアタックネイルの複製を作成し、実行する。"], [10, "『影跳び(シャドウ・ダッジ)』 直前のアタックネイルによって、自身の「シールドレス」が1枚も破壊されていなかった場合、即座に【ドロゥ:1】を行う。"], [11, "『報復の刃(アヴェンジャー・エッジ)』 自身の「シールドレス」を破壊したユニットに対し、即座に【アタック:黒Asレベル】を行う。"]]} - else if ("D"['$===']($case)) {table = [[1, "『始まりの黒(ニューブラック・ドレス)』"], [2, "『第二夜の黒(クレセントブラック・ドレス)』 自身がドロゥを行う時、自身に【アタック:1】を行うことで、ドロゥ数を+2しても良い。"], [3, "『第三夜の黒(ハーフブラック・ドレス)』 自身がドロゥを行う時、ダイスロールを行うダイスのうちひとつを振らず、任意の出目を出したものとして良い。"], [4, "『第四夜の黒(フルブラック・ドレス)』 いずれかのユニットがムーヴネイルを使用する度、そのユニットに対し即座に【アタック:2】を行ってもよい。"], [5, "『終わりの黒(ダークブラック・ドレス)』 自身を含む全てのユニットの、ドロゥフェイズ中のドロゥ数を5減少する。"]]} - else if ("O"['$===']($case)) {table = [[1, "『意志の介入(マインド・ランペイジ)』 プレイヤーの1人を対象とする。対象のオーナーズネイルをすべて見る。その後、その中のひとつを「使用済」にする。"], [2, "『意志の散逸(マインド・ロスト)』 ドロゥのダイスロールに使用されたダイスひとつを取り除く。(取り除かれたダイスはセットダイスとしてセットされない)"], [3, "『漆黒の願い(ブラック・ウィッシュ)』 このラウンドの終了時まで、自身の黒のコスト上限を3増加する。(例えば、現在の黒のAsレベルが2である場合、このラウンドの間のみAsレベルが5であるかのようにオーナーズネイルを使用することが出来る。ただし、実際にAsレベルが上昇しているわけではないことに注意すること)"], [4, "『想いの黒刃(ハートブレイド:ブラック)』 ユニット1体を対象とする。対象に【アタック:3】を行い、自身のリヴラドールに【アタック:1】を行う。"], [5, "『黒の報酬(ブラック・サプライズ)』 自身のリヴラドールに【アタック:1】を行う。このフェイズで行う自身のドロゥ数を2増加する。"], [6, "『翔けよ黒夜(ミッドナイトホーク)』 このラウンド終了時まで、貴女のリヴラドールが使用するアタックネイルに以下の一文を追加する。「対象が自身よりも低い「高度」に存在する場合、追加で【アタック:1】を行う。」"], [7, "『傷跡の共鳴(ハート・レゾナンス)』 プレイヤー1人を対象とする。対象の「シールドレス」を1枚破壊する。その後自身の「シールドレス」を1枚破壊する。"], [8, "『居心地の悪さ(ブラック・マイアズマ)』 このムーヴネイルを打ち消す。"], [9, "『鉄茨よ侵食せよ(ブラックブランブル)』 セルひとつを指定する。指定したセルに「鉄茨マーカー」を設置する。"], [10, "『鉄華乱舞(アイアン・ブルーム)』 ユニット1体を対象とする。対象に【アタック:3】を行う。これによって対象の「シールドレス」を1枚以上破壊した場合、対象のセットダイスの内、貴女の任意のふたつを取り除く。"], [11, "『だむねいしょん』 自身のリヴラドールを含む、ナインライヴラリ上に存在する全てのユニットの現在の「パッシヴドレス」を1枚破壊する。(現在のパッシヴドレスの前に装備していたパッシヴドレスへと変更される)"], [12, "『残酷な真実(クルーエルトゥルース)』 リヴラオーナー1人を対象とする。対象のオーナーズネイルをすべて見る。その後、その中のみっつを「使用済」にする。"], [13, "『孤独と銃と最前線(アヴァンドナー)』 これ以降自身のリヴラが行うムーヴネイル全てに以下の一文を追加する。「移動先のセルに存在するユニットに対し【アタック:1】を行っても良い」。これはリヴラバトル終了時まで継続する。"], [14, "『節制の黒絢(テンパランス:ザ ブラックソード)』 自身のオーナーズネイルの内、任意のふたつの「使用済」を解除する。"], [15, "『雷電の黒絢(ライトニング:ザ ブラックソード)』 ユニット1体を対象とする。対象に【アタック:2】を行う。これによって対象の「シールドレス」を1枚以上破壊した場合、さらに対象のセットダイスを1個取り除く。"], [16, "『思索の黒絢(マインド:ザ ブラックソード)』 全てのプレイヤーはプレイヤー自身のセットダイスを1個取り除く。その後貴女は【ドロゥ:2】を行う。"], [17, "『爛熱の黒絢(グロウス:ザ ブラックソード)』 全てのプレイヤーは【ドロゥ:1】を行う。その後、貴女は【ドロゥ:2】を行う。"]]}} - else if ("W"['$===']($case)) {$case = cardtype; - if ("L"['$===']($case)) {table = [[1, "『閃け白刃(ホワイトブレイド)』 対象に【アタック:白Asレベル《OD》+1】を行い、その後【エクストルード】を行ってもよい。"], [2, "『二重に響け白刃(ホワイト・ダブルストライク)』 対象に【アタック:1】を行い、その後【アタック:1】を行う。"], [3, "『白き弾丸にて狙い撃て(ホワイト・スナイパー)』 対象に【アタック:2】を行う。対象が自身よりも低い「高度」に存在する場合、代わりに【アタック:4《OD》】を行う。"], [4, "『白き弾丸よ降り注げ(ホワイト・バレットシャワー)』 対象に【アタック:3《OD》】を行い、続けて【アタック:3】を行う。"], [5, "『白光の如く駆けよ(フラッシュ・ランニング)』 【ムーヴ:3】を行う。"], [6, "『閃光の突撃(フラッシュチャージ)』 対象が存在するセルへ移動する。"], [7, "『白光の衣(ホワイト・エンチャント)』 直後のアタックネイルで、現在の自身の「シールドレス」の枚数以上の成功数が出た場合、自身の「シールドレス」を1枚回復する。"], [8, "『荘厳なりし白の塔(ホワイトゴールドタワー)』 クリンナップフェイズ終了時まで、自身が「高度:8《OD》」に存在するものとして扱う。"], [9, "『輝きの盾(ホワイトシールド)』 自身のパッシヴドレスの「ブロックナンバー」に6を追加する。この効果はこのダイスロールの結果のみに有効である。"], [10, "『より疾きは光の一手(ライトニング・インターセプト)』 移動を行ったユニットに対し、即座に【アタック:2】を行う。"], [11, "『白の語り部(ホワイトテラー)』 ダイスロールで使用されたダイス全ての出目を6に変更する。"]]} - else if ("D"['$===']($case)) {table = [[1, "『愚者の白(ホワイトフール)』"], [2, "『魔術師の白(ホワイトマジシャン)』 自身が「高度:6」以上に存在する時、ドロゥ数を+1しても良い。"], [3, "『女教皇の白(ホワイトハイプリエステス)』 1ラウンドに1回まで、自身のダイスロールの出目ひとつを1増加しても良い。"], [4, "『女帝の白(ホワイトエンプレス)』 自身の白のアタックネイルに、以下の一文を追加する。「続けて【アタック:1】を行う。射程はこのアタックネイルに準ずる」"], [5, "『皇帝の白(ホワイトエンペラー)』 自身の「シールドレス」が破壊される度に、1d6のダイスロールを行う。この時1か2の出目が出た場合「シールドレス」を1枚回復する。"]]} - else if ("O"['$===']($case)) {table = [[1, "『秩序の護り手(ホワイト・ディフェンダー)』 【ドロゥ:1】を行う。"], [2, "『あなたにも愛を(トゥーミーユアラヴリィ)』 自身の「シールドレス」を1枚回復し、その後自身以外の「シールドレス」を1枚回復する。"], [3, "『罪なき純白(じゅんぱくイノセント)』 このドロゥフェイズで行うダイスロールの出目を全て1減少する。(1の出目は1のままである)"], [4, "『白銀に輝け我が左腕(アージェティア)』 このアタックネイルで「シールドレス」を少なくとも1枚以上破壊した場合、追加で【アタック:2】を行う。"], [5, "『撲滅の白(パニッシュメント・ブレス)』 自身のリヴラドールを含む、ナインライヴラリ上に存在する全てのユニットに【アタック:2】を行う。"], [6, "『誠実の白(ホワイトオネスティ)』 次のスタンバイフェイズ開始時まで、自身のリヴラドールのパッシヴドレス「ブロックナンバー」に5を追加する。"], [7, "『正義の剣(ソード・オブ・ジャスティス)』 このアタックネイルで「シールドレス」を少なくとも2枚以上破壊した場合、自身の「シールドレス」を1枚回復する。"], [8, "『物語の護り手(ロア・ディフェンダー)』 ナインライヴラリ上に存在するマーカーを、任意の数取り除く。"], [9, "『撲滅の賦(がらすまどのむこうがわ)』 自身のリヴラドールを含む、ナインライヴラリ上に存在する全てのユニットの現在の「パッシヴドレス」を1枚破壊する。(現在のパッシヴドレスの前に装備していたパッシヴドレスへと変更される)"], [10, "『忘却の白(ホワイト・オブリビオン)』 自身のセットダイスを全て取り除く。自身のオーナーズネイルの内、任意のふたつの「使用済」を解除する。"], [11, "『白の従者(ホワイト・フォロワ)』 セルひとつを指定する。指定したセルに「白従者マーカー」を設置する。"], [12, "『秩序の龍(クロム・クラーク・レプリカ)』 セルひとつを指定する。指定したセルに「偽龍マーカー」を設置する。"], [13, "『夢の向こうの旅人(ロアテラ)』 このドロゥフェイズで行うダイスロールでは、ダイスそれぞれに対し、任意の出目が出たものとして扱う。"], [14, "『混色もまた物語:黒(ロア:ブラック)』 自身を含む全てのユニットに【アタック:4】を行う。"], [15, "『混色もまた物語:赤(ロア:レッド)』 ユニット1体を対象とする。対象に【アタック:ラウンド数】を行う。このアタックで「シールドレス」を破壊した場合、貴女の「シールドレス」を1枚回復する。"], [16, "『混色もまた物語:青(ロア:ブルー)』 使用されたオーナーズネイルの効果は発揮されず、「使用済」となる。"], [17, "『混色もまた物語:緑(ロア:グリーン)』 プレイヤー1人を対象とする。対象の「シールドレス」を1枚回復する。"]]}} - else if ("R"['$===']($case)) {$case = cardtype; - if ("L"['$===']($case)) {table = [[1, "『焼きつくせ炎の爪(ファイアクロウ)』 対象に【アタック:赤Asレベル《OD》+2】を行う。"], [2, "『焦がれの情熱(ファイアフィスト)』 対象に【アタック:4】を行い、その後追加で【エクストルード】を行っても良い。"], [3, "『掻きむしれ炎禍(ファイアドライヴ)』 対象に【アタック:赤Asレベル】を行い、その後【エクストルード】を行う。移動先は対象ごとに、貴女が決定する。"], [4, "『炎の壁よなぎ払え(ファイアウォール)』 自身の存在するセルと、隣接しているセル全てに存在するユニット全て(自身を除く)を対象とする。対象に【アタック:2】を行う。"], [5, "『赤熱鉄柱ぶん回しの刑(マス・ファイア・ブレード)』 対象に【アタック:4】を行い、続けて【アタック:3《OD》】を行う。その後【エクストルード】を2度行う。"], [6, "『赤熱溶断ぶった斬り(ヒュージ・ファイア・ブレード)』 対象に【アタック:3《OD》】を行い、続けて【アタック:2】を行い、続けて【アタック:1】を行う。"], [7, "『追い打ちの炎渦(ファイアストーム)』 直後に行うアタックネイルでは、《OD》指定された数値を「3」増加する。また、このアタックネイルで「シールドレス」を1枚以上破壊した場合、即座に【ドロゥ:2】を行い、続けてセットダイスを2個取り除く。"], [8, "『雷電疾走(ライトニング・ランニング)』 【ムーヴ:3】を行う。"], [9, "『烈火流星雨あられ(メテオストーム)』 このムーヴネイルに以下の一文を追加する。「このムーヴネイルの移動開始セル、通過したセル、移動完了セルに存在する全てのユニット(自身を含む)に【アタック:3】を行う」"], [10, "『あなたは私のもの!(にがさない)』 移動を行ったユニットを、自身と同じセルまで移動させる。"], [11, "『叩き落とせ!(フォールアウト)』 アタックネイルを使用するユニット1体を対象とする。対象が存在するセルの高度を0に変更する。また対象の「高度」をクリンナップフェイズまで、即座に0に変更する。"]]} - else if ("D"['$===']($case)) {table = [[1, "『灯散らす赤き花輪(フローラルリング)』 リヴラフェイズ開始時に、任意のユニット1体を対象とし【アタック:1】を行ってもよい。"], [2, "『アネモスのビスチェ』 ドロウフェイズ時、自身のドロゥ数を1減少することで、自身を除く全てのユニットに【アタック:1】を行うことを選んでも良い。"], [3, "『ベラドンナのピンヒール』 自身の行う【アタック:X】では、攻撃対象のブロックナンバーのうち「2」を無視して攻撃を行うことが出来る。"], [4, "『オダマキの花冠(フラワークラウン)』 クリンナップフェイズの開始時に、自身を除く全てのユニットに【アタック:2】を行う。"], [5, "『朱塔の花園(ブルーミングガーデン)』 メインフェイズ開始時、自身の「シールドレス」を1枚破壊しても良い。こうした場合、オーナーズネイルひとつの「使用済」を解除する。"]]} - else if ("O"['$===']($case)) {table = [[1, "『走れ雷電(ライトニング・ボルト)』 ユニット1体を対象とし、【アタック:2】を行う。全てのプレイヤーは、このオーナイズネイルに対し、リアクトネイルを使用することが出来ない。"], [2, "『穿て炎槍(フレイムランス)』 ユニット1体を対象とし、【アタック:2】を行う。全てのプレイヤーは、このオーナイズネイルに対し、リアクトネイルを使用することが出来ない。"], [3, "『熱情と踊れ(ダンス・ウィズ・ヒート)』 自身のリヴラドールを含む全てのユニットに対し【アタック:1】を行う。"], [4, "『昇炎の罠(ファイアリングトラップ)』 直後のムーヴネイルで移動を行ったユニットを対象とし、【アタック:3】を行う。"], [5, "『精神混沌の炎(レッド・パラノイア)』 自身のセットダイスのうち、任意のふたつを取り除き、【ドロゥ:2】を行う。セットダイスがふたつ以上存在しない場合にはこのネイルを使用することが出来ない。"], [6, "『愛情の渇望(あなたがほしい)』 任意のユニット1体を対象とする。対象を自身と同じセルに移動させる。その後自身と同じセルに存在するユニット全てに【アタック:2】を行う。"], [7, "『過去からの想い(6400年後の私へ)』 このドロゥフェイズで貴女はドロゥを行うことが出来ない。次のラウンドのドロゥフェイズでは、貴女のドロゥ数を7増加する。"], [8, "『咲き乱れよ百合の花(レッド・リリィ)』 自身を含む全てのユニットが行ったドロゥのダイスロール結果全てを振り直させる。"], [9, "『煉獄の恋(ヘルフレイム・ラヴソング)』 プレイヤー1人を対象とする。対象の「シールドレス」を1枚破壊する。その後自身の「シールドレス」を1枚破壊する。"], [10, "『その信頼は重圧(トラストユー)』 ユニット1体を対象とする。このラウンドの終了時まで、対象がいずれかのユニットに【アタック:X】を行う度に、対象に【アタック:1】を行う。"], [11, "『龍炎の嵐(ドラゴンストーム)』 セルひとつを指定する。指定したセルに「炎龍マーカー」を設置する。"], [12, "『復讐の花(ブルーム・オブ・リベンジ)』 自身のリヴラドールを除く全てのユニットに【アタック:4】を行い、続けて【アタック:3】を行う。"], [13, "『再臨の銀(アガートラム)』 このドロゥフェイズで行った自身のダイスロール結果のダイス全ての出目を3減少する。その後【ドロゥ:3】を行う(このドロゥには出目減少の効果は適用されない)。"], [14, "『銀腕、携えるは黒(フレイガラク:ブラック)』 自身のセットダイスを2個取り除く。ユニット1体を対象とする。対象に【アタック:3】を行い、【アタック:2】を行い、【アタック:1】を行う。"], [15, "『銀腕、携えるは白(クライドハームソルース:ホワイト)』 全てのユニットの「シールドレス」を1枚回復する。その後貴女はさらに「シールドレス」を1枚回復する。"], [16, "『銀腕、携えるは青(カレトヴルッフ:ブルー)』 【ドロゥ:5】を行う。その後セットダイスを2個取り除く。"], [17, "『銀腕、携えるは緑(スカザック:グリーン)』 セルひとつを指定する。指定したセルに「影槍マーカー」を設置する。"]]}} - else if ("B"['$===']($case)) {$case = cardtype; - if ("L"['$===']($case)) {table = [[1, "『碧空の剣(ストラトスフィア・ブレイド)』 対象に【アタック:3】を行う。"], [2, "『蒼天の剣靴(ストラトスフィア・ブレイドブーツ)』 対象に【アタック:1】を行う。対象が自身よりも低い「高度」に存在する場合、代わりに【アタック:4《OD》】を行い、対象の存在するセルへ移動する。"], [3, "『強襲翼撃(ウィング・ブレイド)』 対象に【アタック:3《OD》】を行い、対象の存在するセルへ移動する。"], [4, "『蒼弓の猛撃(ブルー・アローレイン)』 対象に【アタック:1】を行う。対象が自身よりも低い「高度」に存在する場合、続けて【アタック:3】を行う。"], [5, "『空歩き(エアステップ)』 【ムーヴ:2】を行う。このムーヴネイル以降、クリンナップフェイズ終了時まで、自身が「高度:6《OD》」に存在するものとして扱う。"], [6, "『凪歩き(カームステップ)』 【ムーヴ:1】を行う。移動先のセルにリヴラドールが存在する場合、【エクストルード】を行っても良い。"], [7, "『風の道標(ウィンドサインポスト)』 このアタックネイルの効果で「シールドレス」を1枚以上破壊した場合、アタックネイルの処理が終わった後、【ドロゥ:1】を行う。"], [8, "『精密思考(シャープセンス)』 このアタックネイルでは、攻撃対象のブロックナンバーのうち「3」を無視して攻撃を行うことが出来る。"], [9, "『思考の渦(ぐるぐる)』 ダイスロールに使用されたダイスひとつを指定する。そのダイスを振り直させる。"], [10, "『空翔けの回避(レビテート)』 そのアタックネイルのダイスロールで使用されたダイス全ての出目を1減少する。"], [11, "『たゆたう心、空の様に(ストラトスフィア・ハート)』 自身に適用された【エクストルード】を打ち消し、元のセルへと戻る。その後【ドロゥ:1】を行う。"]]} - else if ("D"['$===']($case)) {table = [[1, "『青空を這い(スカイ・クロウラ)』 セットアップフェイズ毎に、ダイスを1個振っても良い。そうした場合、クリンナップフェイズまで、ダイスの出目に等しい「高度」に自身が存在するものとして扱う。"], [2, "『碧海を舞い(ブルー・アルペジオ)』 自身が「高度:0」にいる間、ドロゥ数を2増加する。"], [3, "『蒼天を翔ける(キディ・グレイド)』 ドロゥフェイズでのドロゥ数を1減少することで、即座に任意のユニット1体に【アタック:1】を行っても良い。この効果は1ラウンドに1回のみ宣言出来る。"], [4, "『戦場の妖精(フェアリィドレス:スノウ・ウィンド)』 自身が「高度:6」以上に存在する間、自身のブロックナンバーに6を追加する。"], [5, "『いつか碧空の果てへ(プレアデス)』 自身がドロゥを行う時、ダイスロールに使用するダイスの内最大2個を任意の出目が出たことにして良い。"]]} - else if ("O"['$===']($case)) {table = [[1, "『冷静な思案(いま、このタイミング)』 【ドロゥ:青Asレベル】を行う。"], [2, "『入念な思考(これとこれは、いらないかな)』 【ドロゥ:1】を行い、セットダイスから任意のひとつを取り除く。"], [3, "『即決即断(みてたよ。させないんだから)』 このダイスロールのダイス目全てを2減少する。"], [4, "『方針変更(こっちの方がきっといいよ)』 ダイスロールで使用されたダイスひとつを裏返す(もしくは7からその出目の数値を引いた出目に変更する)。"], [5, "『小さな知略(マハトマ)』 任意のプレイヤー1人を対象とする。対象のオーナーズネイルを見る。その中から1枚を指定する。対象はそのオーナーズネイルを次のラウンドのクリンナップフェイズまで使用できなくなる。"], [6, "『青の精鋭(ブルー・アデプト)』 セットダイスを2個取り除く。ユニット1体を対象とする。対象に【アタック:2】を行う。"], [7, "『対抗(カウンタースペル)』 使用されたオーナーズネイルの効果は発揮されず、「使用済」となる。"], [8, "『碧空の加護(オルガ)』 自身のオーナーズネイルひとつの「使用済」を解除する。"], [9, "『思考妨害(あ、あれ見て?)』 ダイスロールに使用されたダイスの内、最大ふたつまでを指定する。それらのダイスを振り直させる。"], [10, "『碩学式回路(ジーニアス・サーキット)』 【ドロゥ:3】を行い、セットダイスから任意のふたつを取り除く。"], [11, "『碩学式\"大\"回路(ジーニアス・メガ・サーキット)』 任意のプレイヤー1人を対象とする。対象のオーナーズネイルを見る。その中から1枚を指定する。そのオーナーズネイルに以下の一文を追加する。「この効果を解決した後、自身に【アタック:5】を行う。」"], [12, "『偉大なる集合知(ハイアラキ)』 【ドロゥ:6】を行い、セットダイスから任意のみっつを取り除く。"], [13, "『碧空を越える者(ストラトスフィア・ブレイヴ)』 【ドロゥ:自身のリヴラドールの現在の高度】を行う。"], [14, "『深淵なる熟慮(わるだくみ)』 【ドロゥ:2】を行う。この時、6の出目を出したダイスはセットされず、取り除かれる。"], [15, "『深遠たる秩序(知識こそが正義)』 1~6の内、数字をひとつ指定する。このドロゥフェイズの間、全てのプレイヤーが行う【ドロゥ:X】では、指定した出目を出したダイスはセットすることが出来ない。"], [16, "『深淵より至れ、始まりへ(アマランサス・レプリカ)』 自身の「シールドレス」を1枚破壊する。【ドロゥ:3】を行い、自身のオーナーズネイルひとつの「使用済」を解除する。"], [17, "『深遠より至れ原初の森(混沌の森)』 リヴラドール1体を対象とする。対象の現在のパッシヴドレスと、自身のパッシヴドレスを交換する。この効果はクリンナップフェイズまで継続する。(効果中にパッシヴドレスが破壊されていた場合、破壊される前のパッシヴドレスに戻る)"]]}} - else if ("G"['$===']($case)) {$case = cardtype; - if ("L"['$===']($case)) {table = [[1, "『隕鉄の剣(メテオ・ブランド)』 対象に【アタック:緑Asレベル+2《OD》】を行う。"], [2, "『大樹の槌(トネリコ・ハンマー)』 対象に【アタック:緑Asレベル+1】を行い、続けて【エクストルード】を行う。"], [3, "『巨腕の操者(ストレングス・アーム)』 対象に【アタック:5】を行い、【アタック:2】を行い、続けて【エクストルード】を行う。"], [4, "『地を割る弾丸(ガイア・バレット)』 対象に【アタック:3《OD》】を行う。"], [5, "『踏み割り進め!(デストラクトウォーク)』 【ムーヴ:1】を行う。移動先のセルの「高度」を1減少する(高度は0より低い値にはならない)。"], [6, "『鋼の木樹を纏うように(ワイヤーアクション)』 【ムーヴ:1】を行う。自身が「高度:5」より高いセルから移動する場合、代わりに任意の座標へ移動する。"], [7, "『より大きく!(ビッグ・アンド・ビガー)』 直後に行うアタックネイルでは、合計3以上の成功数が出た場合、攻撃対象の「シールドレス」を追加でもう1枚破壊する。"], [8, "『より強靭に!(アンド・タフ)』 直後に行うアタックネイルで、合計3以上の成功数が出た場合、自身の「シールドレス」を1枚回復する。"], [9, "『翼の切断(まっさかさまにおちなさい)』 対象の「高度」を0に変更する。移動先のセルに「高度」が設定されている場合はその「高度」に変更する。"], [10, "『茸の道(マッシュロード)』 即座に【ムーヴ:1】を行う。"], [11, "『分かれ道(ロード・トゥワイス)』 対象の移動距離を1減少する。"]]} - else if ("D"['$===']($case)) {table = [[1, "『仮面舞踏会(マスカレイド)』"], [2, "『黙示の鎧(アポカリプス)』 自身が「高度:0」に存在する間、自身のブロックナンバーに「5、6」を追加する。"], [3, "『昇華の階段(スパイラル・アセンション)』 スタンバイフェイズ毎に、ダイスを2個振り、セルをひとつ指定して良い。そうした場合、そのセルの高度はダイスので目の合計値に変更される。"], [4, "『忘却の森(フォレスト:ジ オブリビオン)』 自身が行う【アタック:X】で2以上の成功数を出していた場合、破壊する「シールドレス」の枚数は1枚ではなく、成功数の値に等しくなる。"], [5, "『永遠に続く一日(バンデッド アゲート:ザ ドリーミング)』 自身の全てのネイルの《OD》指定された値を「5」増加する(この計算は、他の《OD》指定された数値を変動させる効果の前に行われる)"]]} - else if ("O"['$===']($case)) {table = [[1, "『限定巨大化(リミテッド・グロウス)』 このラウンドの終了時まで、自身のリヴラネイルの【アタック:X】は【アタック:X+1】に変更される。"], [2, "『被覆の盾(シュラウド・シールド)』 このアタックネイルの成功数を1減少する。"], [3, "『自然の叡智(ネイチャーズ・ウィズダム)』 アタックネイル、リアクトネイルのいずれか一方を指定する。全てのプレイヤーはこのラウンド終了時まで、選択されたネイルを使用することが出来ない。"], [4, "『茨の道(ソーン・ロード)』 直後のムーヴネイルで移動を行ったユニットを対象とし、【アタック:2】を行う。"], [5, "『小さな花園(リトル・リトル・フラワーガーデン)』 このアタックネイルの【アタック:X】を【アタック:X-1】に変更する。"], [6, "『バジリスクの寄せ餌(バジリスク・ルア)』 このラウンドの終了時まで、全てのユニットはアタックネイルを使用する度に、使用したユニット自身に【アタック:1】を行う。"], [7, "『生命の芽吹き(カム・イントゥ・バッズ)』 セットダイスを2個取り除く。自身のシールドレスを1枚回復する。"], [8, "『絡めとり(まちなさい!)』 ユニット1体を対象とする。対象が「高度:1」以上の高度に存在する場合、対象の行う全てのダイスロールの出目を1減少する。"], [9, "『繁栄の礎(プロスペリティ)』 直後の自身のドロゥフェイズで、ドロゥを行わないことを選ぶ代わりに、自身の緑のAsレベルを1上昇しても良い。"], [10, "『なる(ように)なる(ケ・セラ・セラ)』 自身のオーナーズネイルの「使用済」を解除する。"], [11, "『現代の災厄の象徴(すけいるどわーむ)』 ユニット1体を対象とする。対象はこのラウンドの終了時までアタックネイルを除くリヴラネイルを使用することが出来ない。また、対象が行うアタックネイルの【アタック:X】は、【アタック:X+2】に変更される。"], [12, "『吠え猛る龍禍(ワン・ゼイ・フィア)』 全てのユニットは、そのユニット自身に対して【アタック:そのユニットが存在する高度】を行う。この攻撃によって1枚以上シールドレスが破壊されたユニットは、自身のセットダイスを2個取り除く。"], [13, "『緩やかなる原初の監獄(エンクロージア)』 貴女を含む全てのプレイヤーは、そのプレイヤー自身のシールドレスを1枚回復することを選んでも良い。その後、貴女はこれによって回復したシールドレスの合計枚数に等しい数のシールドレスをさらに回復する。"], [14, "『裏切りの大渦(ベトレイアル・メイルストロム)』 ユニット1体を対象とする。対象に【アタック:3】を行い、【アタック:2】を行う。その後対象は【ドロゥ:1】を行う。"], [15, "『秩序の大渦(メイルストロム・オーダー)』 このラウンドの終了時まで、全てのユニットはアタックネイルを使用することが出来ない。"], [16, "『憤怒の大渦(アンガー・メイルストロム)』 全てのプレイヤーのシールドレスを、現在最もシールドレスの枚数が少ないプレイヤーの枚数と同じ枚数に変更する。"], [17, "『神秘の大渦(ミスティック・メイルストロム)』 使用されたオーナーズネイルの効果は発揮されず、「使用済」となる。"]]}} - else if ("E"['$===']($case)) {$case = cardtype; - if ("D"['$===']($case)) {table = [[1, "『黒の餓狼(ブラックソード・ウルフ)』 1.このユニットが使用するアタックネイルの対象を1増加しても良い。 2.このユニットの【アタック:X】で3以上の成功数が出た場合、自身のシールドレスを1枚回復する。"], [2, "『白の鋼鉄騎士(ぼくめつのりゅう)』 このユニットが使用するアタックネイルの対象を1増加しても良い。"], [3, "『赤の飛龍(クロムクラーク)』 1.このユニットが使用するアタックネイルの対象を1増加しても良い。 2.このユニットのアタックネイルの【アタック:X】のXを2増加する。"], [4, "『青の翼龍(ヴァイエル)』 1.このユニットが使用するアタックネイルの対象を1増加しても良い。 2.このユニットが「高度:9」以上に存在する限り、ブロックナンバーに4を追加する。"], [5, "『緑の操り人形(グリーン・ジェイラー)』 自身を含む、このユニットと同じセルに存在するユニットは、クリンナッププロセスの終了時にシールドレスを1枚失う。"]]}}; - return self.$get_table_by_number(cardindex, table); - }, $LiveraDoll_get_card_text$6.$$arity = 3), nil) && 'get_card_text'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/LogHorizon.js b/src/assets/dicebot/LogHorizon.js deleted file mode 100644 index a89b801d2..000000000 --- a/src/assets/dicebot/LogHorizon.js +++ /dev/null @@ -1,774 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range; - - Opal.add_stubs(['$setPrefixes', '$analyzeDiceCommandResultMethod', '$===', '$to_i', '$last_match', '$getValue', '$roll', '$sort', '$collect', '$split', '$+', '$nil?', '$isCritical', '$isFamble', '$getJudgeResultString', '$>=', '$empty?', '$parren_killer', '$size', '$select', '$==', '$>', '$length', '$!=', '$!', '$getPhysicalConsumptionResultTables', '$getEnergyConsumptionResultTables', '$getGoodsConsumptionResultTables', '$getCashConsumptionResultTables', '$getExplosionSpecialConsumptionResultTables', '$getCurseSpecialConsumptionResultTables', '$getTableByRank', '$getAdjustNumber', '$get_table_by_number', '$floor', '$/', '$-', '$max', '$min', '$[]', '$getAdjustNumberMin', '$getAdjustNumberMax', '$getTableMinimum', '$first', '$last', '$match', '$getCashTresureResultTable', '$getMagicTresureResultTable', '$getItemTresureResultTable', '$getOtherTresureResultTable', '$getHeroineTresureResultTable', '$getGoblinTresureResultTable', '$*', '$<', '$getHiroineTresureResultString', '$getOtherTresureResultString', '$getOtherTresureResultStringEx', '$map', '$<=', '$get_table_by_d66', '$each', '$<<', '$join', '$to_s', '$getEastalExplorationResultTable', '$chomp']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'LogHorizon'); - - var $nesting = [self].concat($parent_nesting), $LogHorizon_initialize$1, $LogHorizon_rollDiceCommand$2, $LogHorizon_getCheckRollDiceCommandResult$3, $LogHorizon_getJudgeResultString$5, $LogHorizon_getValue$6, $LogHorizon_isCritical$7, $LogHorizon_isFamble$9, $LogHorizon_getConsumptionDiceCommandResult$11, $LogHorizon_getPhysicalConsumptionResultTables$12, $LogHorizon_getEnergyConsumptionResultTables$13, $LogHorizon_getGoodsConsumptionResultTables$14, $LogHorizon_getCashConsumptionResultTables$15, $LogHorizon_getExplosionSpecialConsumptionResultTables$16, $LogHorizon_getCurseSpecialConsumptionResultTables$17, $LogHorizon_getTableByRank$18, $LogHorizon_getAdjustNumber$19, $LogHorizon_getAdjustNumberMin$20, $LogHorizon_getTableMinimum$21, $LogHorizon_getAdjustNumberMax$22, $LogHorizon_getTresureDiceCommandResult$23, $LogHorizon_getHiroineTresureResultString$24, $LogHorizon_getOtherTresureResultString$26, $LogHorizon_getOtherTresureResultStringEx$27, $LogHorizon_getCashTresureResultTable$28, $LogHorizon_getMagicTresureResultTable$29, $LogHorizon_getItemTresureResultTable$30, $LogHorizon_getOtherTresureResultTable$31, $LogHorizon_getHeroineTresureResultTable$32, $LogHorizon_getGoblinTresureResultTable$33, $LogHorizon_getPersonalityTagDiceCommandResult$34, $LogHorizon_getFriendlyChartDiceCommandResult$35, $LogHorizon_getPrefixedMagickItemDiceCommandResult$36, $LogHorizon_getHitLocationDiceCommandResult$37, $LogHorizon_getPCNameDiceCommandResult$38, $LogHorizon_getInventionAttributeTextDiceCommandResult$39, $LogHorizon_getTroubleInAkibaStreetDiceCommandResult$45, $LogHorizon_getAbandonedChildDiceCommandResult$47, $LogHorizon_getMusicalInstrumentTypeDiceCommandResult$55, $LogHorizon_getEastalDiceCommandResult$56, $LogHorizon_getEastalExplorationResultTable$57; - - - Opal.const_set($nesting[0], 'ID', "LogHorizon"); - Opal.const_set($nesting[0], 'NAME', "ログ・ホライズンTRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "ろくほらいすんTRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定(xLH±y>=z)\n" + " xD6の判定。クリティカル、ファンブルの自動判定を行います。\n" + " x:xに振るダイス数を入力。\n" + " ±y:yに修正値を入力。±の計算に対応。省略可能。\n" + " >=z:zに目標値を入力。±の計算に対応。省略可能。\n" + " 例) 3LH 2LH>=8 3LH+1>=10\n" + "・消耗表(tCTx±y$z)\n" + " PCT 体力/ECT 気力/GCT 物品/CCT 金銭\n" + " x:CRを指定。\n" + " ±y:修正値。+と-の計算に対応。省略可能。\n" + " $z:$を付けるとダイス目を z 固定。表の特定の値参照用に。省略可能。\n" + " 例) PCT1 ECT2+1 GCT3-1 CCT3$5\n" + "・財宝表(tTRSx±y$)\n" + " CTRS 金銭/MTRS 魔法素材/ITRS 換金アイテム/OTRS そのほか/※HTRS ヒロイン/GTRS ゴブリン財宝表\n" + " x:CRを指定。省略時はダイス値 0 固定で修正値の表参照。《ゴールドフィンガー》使用時など。\n" + " ±y:修正値。+と-の計算に対応。省略可能。\n" + " $:$を付けると財宝表のダイス目を7固定(1回分のプライズ用)。省略可能。\n" + " 例) CTRS1 MTRS2+1 ITRS3-1 ITRS+27 CTRS3$\n" + "・パーソナリティタグ表(PTAG)\n" + "・交友表(KOYU)\n" + "・イースタル探索表(ESTLx±y$z)\n" + " x:CRを指定。省略時はダイス値 0 固定で修正値の表参照。\n" + " ±y:修正値。+と-の計算に対応。省略可能。\n" + " $z:$を付けるとダイス目を z 固定。特定CRの表参照用に。省略可能。\n" + " 例) ESTL1 ESTL+15 ESTL2+1$5 ESTL2-1$5\n" + "・プレフィックスドマジックアイテム効果表(MGRx) xはMGを指定。(LHZB1用)\n" + "†楽器種別表(MIIx) xは楽器の種類(1~6を指定)、省略可能\n" + " 1 打楽器1/2 鍵盤楽器/3 弦楽器1/4 弦楽器2/5 管楽器1/6 管楽器2\n" + "☆特殊消耗表(tSCTx±y$z) 消耗表と同様、ただしCRは省略可能。\n" + " ESCT ロデ研は爆発だ!/CSCT アルヴの呪いじゃ!\n" + "※攻撃命中箇所ランダム決定表(HLOC)\n" + "※PC名ランダム決定表(PCNM)\n" + "※ロデ研の新発明ランダム決定表(IATt)\n" + " IATA 特徴A(メリット)/IATB 特徴B(デメリット)/IATL 見た目/IATT 種類\n" + " tを省略すると全て表示。tにA/B/L/Tを任意の順で連結可能\n" + " 例)IAT IATALT IATABBLT IATABL\n" + "※アキバの街で遭遇するトラブルランダム決定表(TIAS)\n" + "※廃棄児ランダム決定表(ABDC)\n" + "†印は☆印は「イントゥ・ザ・セルデシア さらなるビルドの羽ばたき(1)」より、\n" + "☆印はセルデシア・ガゼット「できるかな66」Vol.1より、\n" + "※印は「実録・七面体工房スタッフ座談会(夏の陣)」より。利用法などはそちら参照。\n" + "・D66ダイスあり\n"); - self.$setPrefixes(["\\d+LH.*", "PC.*", "EC.*", "GC.*", "CC.*", "CTR.*", "MTR.*", "ITR.*", "OTR.*", "HTR.*", "GTR.*", "PTAG", "KOYU", "MGR.", "HLOC", "PCNM", "IAT.*", "TIAS", "ABDC", "MII.*", "ESCT.*", "CSCT.*", "ESTL.*"]); - - Opal.def(self, '$initialize', $LogHorizon_initialize$1 = function $$initialize() { - var $iter = $LogHorizon_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $LogHorizon_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $LogHorizon_initialize$1, false), $zuper, $iter); - return (self.d66Type = 1); - }, $LogHorizon_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $LogHorizon_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this; - - return self.$analyzeDiceCommandResultMethod(command) - }, $LogHorizon_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getCheckRollDiceCommandResult', $LogHorizon_getCheckRollDiceCommandResult$3 = function $$getCheckRollDiceCommandResult(command) { - var $a, $b, $$4, self = this, diceCount = nil, modifyText = nil, difficultyText = nil, modify = nil, difficulty = nil, dice = nil, dice_str = nil, diceList = nil, total = nil, result = nil; - - - if ($truthy(/(\d+)LH([\+\-\d]*)(>=([\+\-\d]*))?/i['$==='](command))) { - } else { - return nil - }; - diceCount = $$($nesting, 'Regexp').$last_match(1).$to_i(); - modifyText = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : ""); - difficultyText = $$($nesting, 'Regexp').$last_match(4); - modify = self.$getValue(modifyText, 0); - difficulty = self.$getValue(difficultyText, nil); - $b = self.$roll(diceCount, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - diceList = $send(dice_str.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)).$sort(); - total = $rb_plus(dice, modify); - command = "" + (diceCount) + "LH" + (modifyText); - if ($truthy(difficulty['$nil?']())) { - } else { - command = $rb_plus(command, "" + ">=" + (difficulty)) - }; - result = "" + "(" + (command) + ") > " + (dice) + "[" + (dice_str) + "]" + (modifyText) + " > " + (total); - if ($truthy(self.$isCritical(diceList))) { - result = $rb_plus(result, " > クリティカル!") - } else if ($truthy(self.$isFamble(diceList, diceCount))) { - result = $rb_plus(result, " > ファンブル!") - } else { - result = $rb_plus(result, self.$getJudgeResultString(difficulty, total)) - }; - return result; - }, $LogHorizon_getCheckRollDiceCommandResult$3.$$arity = 1); - - Opal.def(self, '$getJudgeResultString', $LogHorizon_getJudgeResultString$5 = function $$getJudgeResultString(difficulty, total) { - var self = this; - - - if ($truthy(difficulty['$nil?']())) { - return ""}; - if ($truthy($rb_ge(total, difficulty))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $LogHorizon_getJudgeResultString$5.$$arity = 2); - - Opal.def(self, '$getValue', $LogHorizon_getValue$6 = function $$getValue(text, defaultValue) { - var $a, self = this; - - - if ($truthy(($truthy($a = text['$nil?']()) ? $a : text['$empty?']()))) { - return defaultValue}; - return self.$parren_killer($rb_plus($rb_plus("(0", text), ")")).$to_i(); - }, $LogHorizon_getValue$6.$$arity = 2); - - Opal.def(self, '$isCritical', $LogHorizon_isCritical$7 = function $$isCritical(diceList) { - var $$8, self = this; - - return $rb_ge($send(diceList, 'select', [], ($$8 = function(i){var self = $$8.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](6);}, $$8.$$s = self, $$8.$$arity = 1, $$8)).$size(), 2) - }, $LogHorizon_isCritical$7.$$arity = 1); - - Opal.def(self, '$isFamble', $LogHorizon_isFamble$9 = function $$isFamble(diceList, diceCount) { - var $$10, self = this; - - return $rb_ge($send(diceList, 'select', [], ($$10 = function(i){var self = $$10.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](1);}, $$10.$$s = self, $$10.$$arity = 1, $$10)).$size(), diceCount) - }, $LogHorizon_isFamble$9.$$arity = 2); - - Opal.def(self, '$getConsumptionDiceCommandResult', $LogHorizon_getConsumptionDiceCommandResult$11 = function $$getConsumptionDiceCommandResult(command) { - var $a, $b, self = this, type = nil, is_special = nil, rank = nil, is_choice = nil, dice_value = nil, modifyText = nil, modify = nil, tableName = nil, tables = nil, $case = nil, table = nil, number = nil, dice_str = nil, adjustedNumber = nil, result = nil, text = nil; - - - if ($truthy(/(P|E|G|C|ES|CS)CT(\d+)?([\+\-\d]*)(\$(\d+))?/['$==='](command))) { - } else { - return nil - }; - type = $$($nesting, 'Regexp').$last_match(1); - is_special = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $rb_gt($$($nesting, 'Regexp').$last_match(1).$length(), 1) : $a); - rank = (function() {if ($truthy(($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $$($nesting, 'Regexp').$last_match(2)['$!=']("") : $a))) { - return $$($nesting, 'Regexp').$last_match(2).$to_i() - } else { - return nil - }; return nil; })(); - if ($truthy(($truthy($a = rank['$!']()) ? is_special['$!']() : $a))) { - return nil}; - rank = ($truthy($a = rank) ? $a : 0); - is_choice = $$($nesting, 'Regexp').$last_match(4)['$nil?']()['$!'](); - dice_value = $$($nesting, 'Regexp').$last_match(5); - modifyText = $$($nesting, 'Regexp').$last_match(3); - modify = self.$getValue(modifyText, 0); - tableName = ""; - tables = nil; - $case = type; - if ("P"['$===']($case)) {$b = self.$getPhysicalConsumptionResultTables(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (tables = ($a[1] == null ? nil : $a[1])), $b} - else if ("E"['$===']($case)) {$b = self.$getEnergyConsumptionResultTables(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (tables = ($a[1] == null ? nil : $a[1])), $b} - else if ("G"['$===']($case)) {$b = self.$getGoodsConsumptionResultTables(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (tables = ($a[1] == null ? nil : $a[1])), $b} - else if ("C"['$===']($case)) {$b = self.$getCashConsumptionResultTables(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (tables = ($a[1] == null ? nil : $a[1])), $b} - else if ("ES"['$===']($case)) {$b = self.$getExplosionSpecialConsumptionResultTables(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (tables = ($a[1] == null ? nil : $a[1])), $b} - else if ("CS"['$===']($case)) {$b = self.$getCurseSpecialConsumptionResultTables(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (tables = ($a[1] == null ? nil : $a[1])), $b} - else {return nil}; - table = self.$getTableByRank(rank, tables); - $b = (function() {if ($truthy(is_choice)) { - return [dice_value.$to_i(), dice_value] - } else { - return self.$roll(1, 6) - }; return nil; })(), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - number = $rb_plus(number, modify); - adjustedNumber = self.$getAdjustNumber(number, table); - result = self.$get_table_by_number(adjustedNumber, table); - text = "" + (tableName) + "(" + (number) + "[" + (dice_str) + "]):" + (result); - return text; - }, $LogHorizon_getConsumptionDiceCommandResult$11.$$arity = 1); - - Opal.def(self, '$getPhysicalConsumptionResultTables', $LogHorizon_getPhysicalConsumptionResultTables$12 = function $$getPhysicalConsumptionResultTables() { - var self = this, tableName = nil, tables = nil; - - - tableName = "体力消耗表"; - tables = [[[0, "消耗なし"], [1, "[疲労:5]を受ける"], [2, "[疲労:8]を受ける"], [3, "[疲労:10]を受ける"], [4, "[疲労:13]を受ける"], [5, "[疲労:15]を受ける"], [6, "[疲労:18]を受ける"], [7, "[疲労:20]を受ける"]], [[0, "消耗なし"], [1, "[疲労:10]を受ける"], [2, "[疲労:15]を受ける"], [3, "[疲労:20]を受ける"], [4, "[疲労:25]を受ける"], [5, "[疲労:30]を受ける"], [6, "[疲労:35]を受ける"], [7, "[疲労:40]を受ける"]], [[0, "消耗なし"], [1, "[疲労:25]を受ける"], [2, "[疲労:35]を受ける"], [3, "[疲労:45]を受ける"], [4, "[疲労:55]を受ける"], [5, "[疲労:65]を受ける"], [6, "[疲労:65]を受け、【因果力】を1点失う"], [7, "[疲労:65]を受け、【因果力】を2点失う"]], [[0, "消耗なし"], [1, "[疲労:40]を受ける"], [2, "[疲労:60]を受ける"], [3, "[疲労:80]を受ける"], [4, "[疲労:80]を受け、【因果力】を1点失う"], [5, "[疲労:80]を受け、【因果力】を2点失う"], [6, "[疲労:90]を受け、【因果力】を2点失う"], [7, "[疲労:90]を受け、【因果力】を3点失う"]], [[0, "消耗なし"], [1, "[疲労:60]を受ける"], [2, "[疲労:85]を受ける"], [3, "[疲労:110]を受ける"], [4, "[疲労:100]を受け、【因果力】を1点失う"], [5, "[疲労:120]を受け、【因果力】を1点失う"], [6, "[疲労:100]を受け、【因果力】を2点失う"], [7, "[疲労:100]を受け、【因果力】を3点失う"]], [[0, "消耗なし"], [1, "[疲労:80]を受ける"], [2, "[疲労:120]を受ける"], [3, "[疲労:120]を受け、【因果力】を1点失う"], [4, "[疲労:120]を受け、【因果力】を1点失う"], [5, "[疲労:120]を受け、【因果力】を2点失う"], [6, "[疲労:120]を受け、【因果力】を2点失う"], [7, "[疲労:120]を受け、【因果力】を3点失う"]]]; - return [tableName, tables]; - }, $LogHorizon_getPhysicalConsumptionResultTables$12.$$arity = 0); - - Opal.def(self, '$getEnergyConsumptionResultTables', $LogHorizon_getEnergyConsumptionResultTables$13 = function $$getEnergyConsumptionResultTables() { - var self = this, tableName = nil, tables = nil; - - - tableName = "気力消耗表"; - tables = [[[0, "消耗なし"], [1, "【因果力】を1点失う"], [2, "【因果力】を1点失う"], [3, "【因果力】を1点失う"], [4, "【因果力】を1点失う"], [5, "【因果力】を2点失う"], [6, "【因果力】を2点失う"], [7, "【因果力】を2点失う"]], [[0, "消耗なし"], [1, "【因果力】を1点失う"], [2, "【因果力】を1点失う"], [3, "【因果力】を1点失う"], [4, "【因果力】を2点失う"], [5, "【因果力】を2点失う"], [6, "【因果力】を2点失う"], [7, "【因果力】を3点失う"]], [[0, "消耗なし"], [1, "【因果力】を1点失う"], [2, "【因果力】を1点失う"], [3, "【因果力】を2点失う"], [4, "【因果力】を2点失う"], [5, "【因果力】を2点失う"], [6, "【因果力】を3点失う"], [7, "【因果力】を4点失う"]], [[0, "消耗なし"], [1, "【因果力】を1点失う"], [2, "【因果力】を2点失う"], [3, "【因果力】を2点失う"], [4, "【因果力】を2点失う"], [5, "【因果力】を3点失う"], [6, "【因果力】を1点失い、特技喪失する"], [7, "【因果力】を2点失い、特技喪失する"]], [[0, "消耗なし"], [1, "【因果力】を1点失う"], [2, "【因果力】を2点失う"], [3, "【因果力】を2点失う"], [4, "【因果力】を3点失う"], [5, "【因果力】を1点失い、特技喪失する"], [6, "【因果力】を2点失い、特技喪失する"], [7, "【因果力】を3点失い、特技喪失する"]], [[0, "消耗なし"], [1, "【因果力】を1点失う"], [2, "【因果力】を2点失う"], [3, "【因果力】を3点失う"], [4, "【因果力】を1点失い、特技喪失する"], [5, "【因果力】を4点失う"], [6, "【因果力】を2点失い、特技喪失する"], [7, "【因果力】を3点失い、特技喪失する"]]]; - return [tableName, tables]; - }, $LogHorizon_getEnergyConsumptionResultTables$13.$$arity = 0); - - Opal.def(self, '$getGoodsConsumptionResultTables', $LogHorizon_getGoodsConsumptionResultTables$14 = function $$getGoodsConsumptionResultTables() { - var self = this, tableName = nil, tables = nil; - - - tableName = "物品消耗表"; - tables = [[[0, "消耗なし"], [1, "[消耗品]アイテムを1個失う"], [2, "[消耗品]アイテムを1個失う"], [3, "[消耗品]アイテムを1個失う"], [4, "[消耗品]アイテムを2個失う"], [5, "[消耗品]アイテムを2個失う"], [6, "[消耗品]アイテムを2個失う"], [7, "[消耗品]アイテムを2個失う"]], [[0, "消耗なし"], [1, "[消耗品]アイテムを1個失う"], [2, "[消耗品]アイテムを1個失う"], [3, "[消耗品]アイテムを2個失う"], [4, "[消耗品]アイテムを2個失う"], [5, "[消耗品]アイテムを3個失う"], [6, "[消耗品]アイテムを3個失う"], [7, "[消耗品]アイテムを4個失う"]], [[0, "消耗なし"], [1, "[消耗品]アイテムを1個失う"], [2, "[消耗品]アイテムを2個失う"], [3, "[消耗品]アイテムを2個失う"], [4, "[消耗品]アイテムを3個失う"], [5, "[消耗品]アイテムを3個失う"], [6, "[消耗品]アイテムを3個失い、[圧迫:1]を受ける"], [7, "[消耗品]アイテムを3個失い、[圧迫:2]を受ける"]], [[0, "消耗なし"], [1, "[消耗品]アイテムを2個失う"], [2, "[消耗品]アイテムを2個失う"], [3, "[消耗品]アイテムを2個失い、[圧迫:1]を受ける"], [4, "[消耗品]アイテムを3個失う"], [5, "[消耗品]アイテムを3個失い、[圧迫:1]を受ける"], [6, "[消耗品]アイテムを4個失う"], [7, "[消耗品]アイテムを4個失い、[圧迫:1]を受ける"]], [[0, "消耗なし"], [1, "[消耗品]アイテムを2個失う"], [2, "[消耗品]アイテムを2個失い、[圧迫:1]を受ける"], [3, "[消耗品]アイテムを3個失う"], [4, "[消耗品]アイテムを3個失い、[圧迫:1]を受ける"], [5, "[消耗品]アイテムを4個失う"], [6, "[消耗品]アイテムを4個失い、[圧迫:1]を受ける"], [7, "[消耗品]アイテムを4個失い、[圧迫:2]を受ける"]], [[0, "消耗なし"], [1, "[消耗品]アイテムを3個失う"], [2, "[消耗品]アイテムを3個失う"], [3, "[消耗品]アイテムを3個失い、[圧迫:1]を受ける"], [4, "[消耗品]アイテムを4個失う"], [5, "[消耗品]アイテムを4個失い、[圧迫:1]を受ける"], [6, "[消耗品]アイテムを4個失い、[圧迫:2]を受ける"], [7, "[消耗品]アイテムを4個失い、[圧迫:3]を受ける"]]]; - return [tableName, tables]; - }, $LogHorizon_getGoodsConsumptionResultTables$14.$$arity = 0); - - Opal.def(self, '$getCashConsumptionResultTables', $LogHorizon_getCashConsumptionResultTables$15 = function $$getCashConsumptionResultTables() { - var self = this, tableName = nil, tables = nil; - - - tableName = "金銭消耗表"; - tables = [[[0, "消耗なし"], [1, "所持金を10G失う"], [2, "所持金を15G失う"], [3, "所持金を20G失う"], [4, "所持金を25G失う"], [5, "所持金を30G失う"], [6, "所持金を35G失う"], [7, "所持金を40G失う"]], [[0, "消耗なし"], [1, "所持金を25G失う"], [2, "所持金を35G失う"], [3, "所持金を50G失う"], [4, "所持金を60G失う"], [5, "所持金を75G失う"], [6, "所持金を90G失う"], [7, "所持金を100G失う"]], [[0, "消耗なし"], [1, "所持金を50G失う"], [2, "所持金を80G失う"], [3, "所持金を110G失う"], [4, "所持金を140G失う"], [5, "所持金を160G失う"], [6, "所持金を190G失う"], [7, "所持金を220G失う"]], [[0, "消耗なし"], [1, "所持金を100G失う"], [2, "所持金を150G失う"], [3, "所持金を200G失う"], [4, "所持金を250G失う"], [5, "所持金を300G失う"], [6, "所持金を350G失う"], [7, "所持金を400G失う"]], [[0, "消耗なし"], [1, "所持金を160G失う"], [2, "所持金を240G失う"], [3, "所持金を320G失う"], [4, "所持金を400G失う"], [5, "所持金を480G失う"], [6, "所持金を560G失う"], [7, "所持金を640G失う"]], [[0, "消耗なし"], [1, "所持金を210G失う"], [2, "所持金を320G失う"], [3, "所持金を430G失う"], [4, "所持金を540G失う"], [5, "所持金を650G失う"], [6, "所持金を760G失う"], [7, "所持金を870G失う"]]]; - return [tableName, tables]; - }, $LogHorizon_getCashConsumptionResultTables$15.$$arity = 0); - - Opal.def(self, '$getExplosionSpecialConsumptionResultTables', $LogHorizon_getExplosionSpecialConsumptionResultTables$16 = function $$getExplosionSpecialConsumptionResultTables() { - var self = this, tableName = nil, tables = nil; - - - tableName = "特殊消耗表:ロデ研は爆発だ!"; - tables = [[[0, "……しかし特に何も起こらない!:効果なし。"], [1, "キミの頭髪が爆発した! 見事なアフロヘアーだ:シナリオ終了まで[頭部]タグのついた装備不可。"], [2, "芸術は爆発である:所持しているアイテムがランダムに1つ、芸術品になり[換金]アイテム化する"], [3, "反応起爆装甲:防具スロットに装備しているアイテムがチョバムアーマーになる。次にあなたが【HP】ダメージを受けた時、そのダメージを無効化し、そのアイテムを失う。"], [4, "山羊スライムが爆発的に増殖する:[所持品]スロットを全て山羊スライム([取引不可]、価格50)で埋める。"], [5, "キミのリアルが爆発する:コネクションを1つ、シナリオ終了時まで失う。"], [6, "工場が爆発する:[消耗品]タグを持つアイテムを購入することができなくなる。"], [7, "ボスエネミーが爆発する:シナリオはクライマックスを迎えることなく終了する。お疲れ様でした。"]]]; - return [tableName, tables]; - }, $LogHorizon_getExplosionSpecialConsumptionResultTables$16.$$arity = 0); - - Opal.def(self, '$getCurseSpecialConsumptionResultTables', $LogHorizon_getCurseSpecialConsumptionResultTables$17 = function $$getCurseSpecialConsumptionResultTables() { - var self = this, tableName = nil, tables = nil; - - - tableName = "特殊消耗表:アルヴの呪いじゃ!"; - tables = [[[0, "「祝ってやる!」祝われる:あなたの【因果力】+1。"], [1, "空腹の呪い:すぐさま食料アイテムひとつを食べる。空腹のせいでとてもおいしい!"], [2, "無職の呪い:サブ職が強制的に〈ニート〉に変更させられる。"], [3, "種族変更の呪い:ランダムでダイスを振って別の種族に変わる。種族特技が使用不能になる。"], [4, "バリアフリーの呪い:[軽減][障壁]状態になることができなくなる。"], [5, "集中力を乱す囁きの呪い:フォームが崩れて[構え]タグを持つ特技が使用不能になる。"], [6, "盲目の呪い:あなたの所持するコネクションのうちランダムに一つの関係が「熱愛」にかわる。"], [7, "やる気が萎える呪い:あーもーまじやる気しねえ、何もやる気しねえ。【因果力】使用不可。"]]]; - return [tableName, tables]; - }, $LogHorizon_getCurseSpecialConsumptionResultTables$17.$$arity = 0); - - Opal.def(self, '$getTableByRank', $LogHorizon_getTableByRank$18 = function $$getTableByRank(rank, tables) { - var self = this, index = nil; - - - index = $rb_divide($rb_minus(rank, 1), 5).$floor(); - index = [0, index].$max(); - index = [index, $rb_minus(tables.$size(), 1)].$min(); - return tables['$[]'](index); - }, $LogHorizon_getTableByRank$18.$$arity = 2); - - Opal.def(self, '$getAdjustNumber', $LogHorizon_getAdjustNumber$19 = function $$getAdjustNumber(number, table) { - var self = this; - - - number = self.$getAdjustNumberMin(number, table); - number = self.$getAdjustNumberMax(number, table); - return number; - }, $LogHorizon_getAdjustNumber$19.$$arity = 2); - - Opal.def(self, '$getAdjustNumberMin', $LogHorizon_getAdjustNumberMin$20 = function $$getAdjustNumberMin(number, table) { - var self = this, value = nil; - - - value = self.$getTableMinimum(table); - return [number, value].$max(); - }, $LogHorizon_getAdjustNumberMin$20.$$arity = 2); - - Opal.def(self, '$getTableMinimum', $LogHorizon_getTableMinimum$21 = function $$getTableMinimum(table) { - var self = this; - - return table.$first().$first() - }, $LogHorizon_getTableMinimum$21.$$arity = 1); - - Opal.def(self, '$getAdjustNumberMax', $LogHorizon_getAdjustNumberMax$22 = function $$getAdjustNumberMax(number, table) { - var self = this, value = nil; - - - value = table.$last().$first(); - return [number, value].$min(); - }, $LogHorizon_getAdjustNumberMax$22.$$arity = 2); - - Opal.def(self, '$getTresureDiceCommandResult', $LogHorizon_getTresureDiceCommandResult$23 = function $$getTresureDiceCommandResult(command) { - var $a, $b, self = this, m = nil, type = nil, rank = nil, is_choice = nil, modifyText = nil, modify = nil, is_prize = nil, dice_value = nil, is_rank_enable = nil, $case = nil, tableName = nil, table = nil, number = nil, dice_str = nil, result = nil; - - - if ($truthy((m = /(C|M|I|O|H|G)TRS(\d*)([\+\-\d]*)(\$)?/.$match(command)))) { - } else { - return nil - }; - type = m['$[]'](1); - rank = m['$[]'](2).$to_i(); - is_choice = ($truthy($a = m['$[]'](2)['$empty?']()) ? $a : m['$[]'](4)['$nil?']()['$!']()); - modifyText = m['$[]'](3); - modify = self.$getValue(modifyText, 0); - is_prize = m['$[]'](4)['$==']("$"); - dice_value = nil; - if ($truthy(is_prize)) { - dice_value = "7"}; - is_rank_enable = ($truthy($a = is_choice['$!']()) ? $a : is_prize); - $b = (function() {$case = type; - if ("C"['$===']($case)) {return self.$getCashTresureResultTable()} - else if ("M"['$===']($case)) {return self.$getMagicTresureResultTable()} - else if ("I"['$===']($case)) {return self.$getItemTresureResultTable()} - else if ("O"['$===']($case)) {return self.$getOtherTresureResultTable()} - else if ("H"['$===']($case)) {return self.$getHeroineTresureResultTable()} - else if ("G"['$===']($case)) {return self.$getGoblinTresureResultTable()} - else { return nil }})(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(table['$nil?']())) { - return nil}; - $b = (function() {if ($truthy(is_choice)) { - return [dice_value.$to_i(), dice_value] - } else { - return self.$roll(2, 6) - }; return nil; })(), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - number = $rb_plus(number, $rb_plus($rb_times(rank, (function() {if ($truthy(is_rank_enable)) { - return 5 - } else { - return 0 - }; return nil; })()), modify)); - if ($truthy(($truthy($a = is_choice) ? $rb_lt(number, self.$getTableMinimum(table)) : $a))) { - return command}; - if (type['$==']("H")) { - - number = [self.$getAdjustNumberMin(number, table), 87].$min(); - result = self.$getHiroineTresureResultString(table, number); - } else if (type['$==']("G")) { - - number = [self.$getAdjustNumberMin(number, table), 87].$min(); - result = self.$getOtherTresureResultString(table, number); - } else { - - number = [self.$getAdjustNumberMin(number, table), 187].$min(); - result = self.$getOtherTresureResultStringEx(table, number); - }; - return "" + (tableName) + "(" + (number) + ((function() {if ($truthy(dice_str)) { - return $rb_plus($rb_plus("[", dice_str), "]") - } else { - return "" - }; return nil; })()) + "):" + (result); - }, $LogHorizon_getTresureDiceCommandResult$23.$$arity = 1); - - Opal.def(self, '$getHiroineTresureResultString', $LogHorizon_getHiroineTresureResultString$24 = function $$getHiroineTresureResultString(table, number) { - var $$25, self = this, table_max_number = nil, result = nil; - - - table_max_number = $send(table, 'map', [], ($$25 = function(e){var self = $$25.$$s || this; - - - - if (e == null) { - e = nil; - }; - return e.$first();}, $$25.$$s = self, $$25.$$arity = 1, $$25)).$max(); - result = (function() {if ($truthy($rb_le(number, table_max_number))) { - return self.$get_table_by_number(number, table) - } else { - return "" + "※ " + ($rb_plus(table_max_number, 1)) + "以降は未定義です ※" - }; return nil; })(); - return result; - }, $LogHorizon_getHiroineTresureResultString$24.$$arity = 2); - - Opal.def(self, '$getOtherTresureResultString', $LogHorizon_getOtherTresureResultString$26 = function $$getOtherTresureResultString(table, number) { - var self = this, result = nil, $case = nil; - - - result = (function() {$case = number; - if ($range(63, 72, false)['$===']($case)) {return $rb_plus(self.$get_table_by_number($rb_minus(number, 10), table), "&80G")} - else if ($range(73, 82, false)['$===']($case)) {return $rb_plus(self.$get_table_by_number($rb_minus(number, 20), table), "&160G")} - else if ($range(83, 87, false)['$===']($case)) {return $rb_plus(self.$get_table_by_number($rb_minus(number, 30), table), "&260G")} - else {return self.$get_table_by_number(number, table)}})(); - return result; - }, $LogHorizon_getOtherTresureResultString$26.$$arity = 2); - - Opal.def(self, '$getOtherTresureResultStringEx', $LogHorizon_getOtherTresureResultStringEx$27 = function $$getOtherTresureResultStringEx(table, number) { - var self = this, result = nil, $case = nil; - - - result = (function() {$case = number; - if ($range(163, 172, false)['$===']($case)) {return $rb_plus(self.$get_table_by_number($rb_minus(number, 10), table), "&200G")} - else if ($range(173, 182, false)['$===']($case)) {return $rb_plus(self.$get_table_by_number($rb_minus(number, 20), table), "&400G")} - else if ($range(183, 187, false)['$===']($case)) {return $rb_plus(self.$get_table_by_number($rb_minus(number, 30), table), "&600G")} - else {return self.$get_table_by_number(number, table)}})(); - return result; - }, $LogHorizon_getOtherTresureResultStringEx$27.$$arity = 2); - - Opal.def(self, '$getCashTresureResultTable', $LogHorizon_getCashTresureResultTable$28 = function $$getCashTresureResultTable() { - var self = this, tableName = nil, table = nil; - - - tableName = "金銭財宝表"; - table = [[7, "35G"], [8, "40G"], [9, "40G"], [10, "40G"], [11, "45G"], [12, "45G"], [13, "45G"], [14, "50G"], [15, "50G"], [16, "50G"], [17, "55G"], [18, "55G"], [19, "60G"], [20, "60G"], [21, "65G"], [22, "70G"], [23, "70G"], [24, "75G"], [25, "75G"], [26, "80G"], [27, "85G"], [28, "85G"], [29, "90G"], [30, "95G"], [31, "100G"], [32, "100G"], [33, "105G"], [34, "110G"], [35, "115G"], [36, "120G"], [37, "125G"], [38, "130G"], [39, "135G"], [40, "140G"], [41, "145G"], [42, "150G"], [43, "155G"], [44, "160G"], [45, "165G"], [46, "170G"], [47, "175G"], [48, "180G"], [49, "185G"], [50, "195G"], [51, "200G"], [52, "205G"], [53, "210G"], [54, "220G"], [55, "225G"], [56, "230G"], [57, "240G"], [58, "245G"], [59, "255G"], [60, "260G"], [61, "265G"], [62, "275G"], [63, "280G"], [64, "290G"], [65, "300G"], [66, "300G"], [67, "310G"], [68, "320G"], [69, "330G"], [70, "340G"], [71, "340G"], [72, "350G"], [73, "360G"], [74, "370G"], [75, "380G"], [76, "390G"], [77, "400G"], [78, "410G"], [79, "420G"], [80, "430G"], [81, "440G"], [82, "450G"], [83, "460G"], [84, "460G"], [85, "480G"], [86, "490G"], [87, "500G"], [88, "510G"], [89, "520G"], [90, "530G"], [91, "540G"], [92, "550G"], [93, "560G"], [94, "570G"], [95, "580G"], [96, "590G"], [97, "610G"], [98, "620G"], [99, "630G"], [100, "640G"], [101, "650G"], [102, "660G"], [103, "680G"], [104, "690G"], [105, "700G"], [106, "710G"], [107, "730G"], [108, "740G"], [109, "750G"], [110, "760G"], [111, "780G"], [112, "790G"], [113, "800G"], [114, "820G"], [115, "830G"], [116, "840G"], [117, "860G"], [118, "870G"], [119, "890G"], [120, "900G"], [121, "910G"], [122, "930G"], [123, "940G"], [124, "960G"], [125, "970G"], [126, "990G"], [127, "1000G"], [128, "1020G"], [129, "1030G"], [130, "1050G"], [131, "1060G"], [132, "1080G"], [133, "1090G"], [134, "1110G"], [135, "1130G"], [136, "1140G"], [137, "1160G"], [138, "1170G"], [139, "1190G"], [140, "1210G"], [141, "1220G"], [142, "1240G"], [143, "1260G"], [144, "1270G"], [145, "1290G"], [146, "1310G"], [147, "1330G"], [148, "1340G"], [149, "1360G"], [150, "1380G"], [151, "1400G"], [152, "1410G"], [153, "1430G"], [154, "1450G"], [155, "1470G"], [156, "1490G"], [157, "1500G"], [158, "1520G"], [159, "1540G"], [160, "1560G"], [161, "1580G"], [162, "1600G"]]; - return [tableName, table]; - }, $LogHorizon_getCashTresureResultTable$28.$$arity = 0); - - Opal.def(self, '$getMagicTresureResultTable', $LogHorizon_getMagicTresureResultTable$29 = function $$getMagicTresureResultTable() { - var self = this, tableName = nil, table = nil; - - - tableName = "魔法素材財宝表"; - table = [[7, "魔触媒2[魔触媒2](20G)&魔触媒1[魔触媒1](15G)"], [8, "新緑の若芽[コア素材](30G)"], [9, "魔触媒2[魔触媒2](20G)&魔触媒1[魔触媒1](15G)"], [10, "怪しい丸薬[コア素材](30G)"], [11, "魔触媒2[魔触媒2](20G)&魔触媒1[魔触媒1](15G)"], [12, "滑らかな被膜[コア素材](30G)"], [13, "魔触媒2[魔触媒2](20G)&魔触媒1[魔触媒1](15G)"], [14, "呪法シリンダー[コア素材](30G)"], [15, "魔触媒3[魔触媒3](25G)&魔触媒2[魔触媒2](20G)"], [16, "反魔水銀[コア素材](40G)"], [17, "魔触媒3[魔触媒3](25G)&魔触媒2[魔触媒2](20G)"], [18, "鋭い牙[コア素材](40G)"], [19, "魔触媒3[魔触媒3](25G)&魔触媒2[魔触媒2](20G)"], [20, "自戒の茨[コア素材](50G)"], [21, "魔触媒4[魔触媒4](30G)&魔触媒3[魔触媒3](25G)"], [22, "流星のかけら[コア素材](50G)"], [23, "魔触媒4[魔触媒4](30G)&魔触媒3[魔触媒3](25G)"], [24, "聖なる繊維[コア素材](50G)"], [25, "魔触媒5[魔触媒5](40G)&魔触媒4[魔触媒4](30G)"], [26, "巨人の髭[コア素材](60G)"], [27, "魔触媒5[魔触媒5](40G)&魔触媒4[魔触媒4](30G)"], [28, "精密な歯車[コア素材](60G)"], [29, "魔触媒5[魔触媒5](40G)&魔触媒4[魔触媒4](30G)"], [30, "謎めいた毛皮[コア素材](80G)"], [31, "魔触媒6[魔触媒6](50G)&魔触媒5[魔触媒5](40G)"], [32, "雄々しい角[コア素材](80G)"], [33, "魔触媒6[魔触媒6](50G)&魔触媒5[魔触媒5](40G)"], [34, "つややかな繭[コア素材](80G)"], [35, "魔触媒7[魔触媒7](60G)&魔触媒6[魔触媒6](50G)"], [36, "小型錬成陣[コア素材](100G)"], [37, "魔触媒7[魔触媒7](60G)&魔触媒6[魔触媒6](50G)"], [38, "銀の円環[コア素材](100G)"], [39, "魔触媒7[魔触媒7](60G)&魔触媒6[魔触媒6](50G)"], [40, "仙桃果[コア素材](120G)"], [41, "魔触媒8[魔触媒8](70G)&魔触媒7[魔触媒7](60G)"], [42, "動力ケーブル[コア素材](120G)"], [43, "魔触媒8[魔触媒8](70G)&魔触媒7[魔触媒7](60G)"], [44, "流星歯車[コア素材](120G)"], [45, "魔触媒9[魔触媒9](90G)&魔触媒8[魔触媒8](70G)"], [46, "茨のトゲ[コア素材](140G)"], [47, "魔触媒9[魔触媒9](90G)&魔触媒8[魔触媒8](70G)"], [48, "砕けた剛剣[コア素材](140G)"], [49, "魔触媒9[魔触媒9](90G)&魔触媒8[魔触媒8](70G)"], [50, "絶えない火種[コア素材](180G)"], [51, "魔触媒10[魔触媒10](110G)&魔触媒9[魔触媒9](90G)"], [52, "魔導錠[コア素材](180G)"], [53, "魔触媒10[魔触媒10](110G)&魔触媒9[魔触媒9](90G)"], [54, "青ざめた盾鱗[コア素材](180G)"], [55, "魔触媒10[魔触媒10](110G)x2"], [56, "破軍の戦帯[コア素材](220G)"], [57, "魔触媒11[魔触媒11](120G)&魔触媒10[魔触媒10](110G)"], [58, "派手な羽根飾り[コア素材](220G)"], [59, "魔触媒11[魔触媒11](120G)&魔触媒10[魔触媒10](110G)"], [60, "神隠しの古枝[コア素材](240G)"], [61, "魔触媒11[魔触媒11](120G)x2"], [62, "呪紋水晶[コア素材](240G)"], [63, "魔触媒12[魔触媒12](150G)&魔触媒11[魔触媒11](120G)"], [64, "謎めいたフラスコ[コア素材](240G)"], [65, "魔触媒12[魔触媒12](150G)&魔触媒11[魔触媒11](120G)"], [66, "未熟な竜玉[コア素材](300G)"], [67, "魔触媒12[魔触媒12](150G)x2"], [68, "陰陽の水銀[コア素材](300G)"], [69, "魔触媒13[魔触媒13](170G)&魔触媒12[魔触媒12](150G)"], [70, "金剛骨[コア素材](340G)"], [71, "魔触媒13[魔触媒13](170G)x2"], [72, "アルヴの研磨剤[コア素材](340G)"], [73, "魔触媒14[魔触媒14](190G)&魔触媒13[魔触媒13](170G)"], [74, "不死王の心臓[コア素材](340G)"], [75, "魔触媒14[魔触媒14](190G)x2"], [76, "緑小鬼の大軍旗[コア素材](380G)"], [77, "魔触媒14[魔触媒14](190G)x2"], [78, "深層アダマン鉱石[コア素材](380G)"], [79, "魔触媒15[魔触媒15](220G)&魔触媒14[魔触媒14](190G)"], [80, "漆黒の眼球[コア素材](440G)"], [81, "魔触媒15[魔触媒15](220G)&魔触媒14[魔触媒14](190G)"], [82, "雪桃の実[コア素材](440G)"], [83, "魔触媒15[魔触媒15](220G)x2"], [84, "四つ葉のアンク[コア素材](440G)"], [85, "魔触媒16[魔触媒16](250G)&魔触媒15[魔触媒15](220G)"], [86, "金色のたてがみ[コア素材](500G)"], [87, "魔触媒16[魔触媒16](250G)&魔触媒15[魔触媒15](220G)"], [88, "銀の車輪[コア素材](500G)"], [89, "魔触媒16[魔触媒16](250G)x2"], [90, "封緑樹の堅枝[コア素材](560G)"], [91, "魔触媒17[魔触媒17](280G)&魔触媒16[魔触媒16](250G)"], [92, "千年王樹の種子[コア素材](560G)"], [93, "魔触媒17[魔触媒17](280G)x2"], [94, "巨鳥の鎖骨[コア素材](560G)"], [95, "魔触媒17[魔触媒17](280G)x2"], [96, "水棲緑鬼の王卵[コア素材](620G)"], [97, "魔触媒18[魔触媒18](310G)&魔触媒17[魔触媒17](280G)"], [98, "太陽の飾り鋲[コア素材](620G)"], [99, "魔触媒18[魔触媒18](310G)x2"], [100, "火精霊の心核[コア素材](680G)"], [101, "魔触媒19[魔触媒19](340G)&魔触媒18[魔触媒18](310G)"], [102, "獄炎狼の房毛[コア素材](680G)"], [103, "魔触媒19[魔触媒19](340G)x2"], [104, "島クジラの巨骨[コア素材](680G)"], [105, "魔触媒19[魔触媒19](340G)x2"], [106, "原初の炎[コア素材](740G)"], [107, "魔触媒20[魔触媒20](370G)&魔触媒19[魔触媒19](340G)"], [108, "魔石草の種[コア素材](740G)"], [109, "魔触媒20[魔触媒20](370G)x2"], [110, "稠密立方魔晶[コア素材](820G)"], [111, "魔触媒21[魔触媒21](410G)&魔触媒20[魔触媒20](370G)"], [112, "清掃用女中人形九号[コア素材](820G)"], [113, "魔触媒21[魔触媒21](410G)&魔触媒20[魔触媒20](370G)"], [114, "飛びイルカの心臓[コア素材](820G)"], [115, "魔触媒21[魔触媒21](410G)x2"], [116, "奈落皇蛇の額鱗[コア素材](900G)"], [117, "魔触媒22[魔触媒22](450G)&魔触媒21[魔触媒21](410G)"], [118, "ブリザードダイヤ[コア素材](900G)"], [119, "魔触媒22[魔触媒22](450G)&魔触媒21[魔触媒21](410G)"], [120, "火炎向日葵の花びら[コア素材](980G)"], [121, "魔触媒22[魔触媒22](450G)x2"], [122, "紅蓮蝙蝠の鮮血[コア素材](980G)"], [123, "魔触媒23[魔触媒23](490G)&魔触媒22[魔触媒22](450G)"], [124, "落日祈祷書[コア素材](980G)"], [125, "魔触媒24[魔触媒24](530G)&黒檀の馬具[換金](440G)"], [126, "辰砂の組紐[コア素材](1060G)"], [127, "魔触媒23[魔触媒23](490G)x2"], [128, "黴臭い皮の剣帯[コア素材](1060G)"], [129, "魔触媒24[魔触媒24](530G)&魔触媒23[魔触媒23](490G)"], [130, "玻璃蜥蜴の抜け殻[コア素材](1160G)"], [131, "魔触媒24[魔触媒24](530G)x2"], [132, "火炎巨人の尺骨[コア素材](1160G)"], [133, "魔触媒24[魔触媒24](530G)x2"], [134, "高熱練炭[コア素材](1160G)"], [135, "魔触媒26[魔触媒26](620G)&青銅の装置[換金](510G)"], [136, "すり切れた羽衣[コア素材](1240G)"], [137, "魔触媒25[魔触媒25](580G)x2"], [138, "亡霊のため息[コア素材](1240G)"], [139, "魔触媒25[魔触媒25](580G)x2"], [140, "宵闇色のヒゲ[コア素材](1340G)"], [141, "魔触媒27[魔触媒27](670G)&月長石の腕輪[換金](550G)"], [142, "コアトルの毒腺[コア素材](1340G)"], [143, "魔触媒26[魔触媒26](620G)x2"], [144, "玄亀の甲羅[コア素材](1340G)"], [145, "魔触媒28[魔触媒28](720G)&宝玉のネックレス[換金](570G)"], [146, "山大鹿の角[コア素材](1440G)"], [147, "魔触媒28[魔触媒28](720G)&消えない燭台[換金](600G)"], [148, "煉獄クモの燃糸[コア素材](1540G)"], [149, "魔触媒27[魔触媒27](670G)x2"], [150, "碧氷晶の単眼球[コア素材](1540G)"], [151, "魔触媒29[魔触媒29](770G)&琥珀のイヤリング[換金](630G)"], [152, "衝撃竜の牙[コア素材](1540G)"], [153, "魔触媒29[魔触媒29](770G)&茨を模したティアラ[換金](650G)"], [154, "鉄鼠の自在尾[コア素材](1540G)"], [155, "魔触媒30[魔触媒30](820G)&石榴石の腕輪[換金](650G)"], [156, "人工生命の素[コア素材](1640G)"], [157, "魔触媒30[魔触媒30](820G)&輝くメガネ[換金](680G)"], [158, "翡翠甲虫の刃翅[コア素材](1640G)"], [159, "魔触媒29[魔触媒29](770G)x2"], [160, "無限渦流の煤[コア素材](1640G)"], [161, "魔触媒30[魔触媒30](820G)&スライム入り試験管[換金](750G)"], [162, "陽喰い鳥の嘴[コア素材](1640G)"]]; - return [tableName, table]; - }, $LogHorizon_getMagicTresureResultTable$29.$$arity = 0); - - Opal.def(self, '$getItemTresureResultTable', $LogHorizon_getItemTresureResultTable$30 = function $$getItemTresureResultTable() { - var self = this, tableName = nil, table = nil; - - - tableName = "換金アイテム財宝表"; - table = [[7, "破れた書籍[換金](30G)"], [8, "古ぼけたぬいぐるみ[換金](40G)"], [9, "あやしい書籍[換金](40G)"], [10, "分厚い書籍[換金](40G)"], [11, "子供向けの書籍[換金](40G)"], [12, "犬のぬいぐるみ[換金](40G)"], [13, "使い込まれたティーセット[換金](40G)"], [14, "クマのぬいぐるみ[換金](50G)"], [15, "白磁のティーセット[換金](50G)"], [16, "藍色の染料[換金](50G)"], [17, "毛糸の帽子[換金](50G)"], [18, "恐竜のぬいぐるみ[換金](50G)"], [19, "豪華な日記[換金](60G)"], [20, "乳白色の角[換金](60G)"], [21, "羽根付き帽子[換金](60G)"], [22, "魔法の書籍[換金](70G)"], [23, "木製の食器[換金](70G)"], [24, "猛獣の毛皮[換金](70G)"], [25, "魔法使いの帽子[換金](70G)"], [26, "貴族の絵本[換金](80G)"], [27, "陶製の食器[換金](80G)"], [28, "磨かれたティーセット[換金](80G)"], [29, "しなやかな毛皮[換金](90G)"], [30, "巨大な角[換金](90G)"], [31, "貴重な書籍[換金](100G)"], [32, "銀の食器[換金](100G)"], [33, "魔獣の毛皮[換金](100G)"], [34, "司祭の帽子[換金](110G)"], [35, "野獣の牙[換金](110G)"], [36, "巨人のスプーン[換金](120G)"], [37, "枝分かれした角[換金](120G)"], [38, "猫耳帽子[換金](130G)"], [39, "木綿のドレス[換金](130G)"], [40, "水晶の角[換金](140G)"], [41, "琥珀の円盤[換金](140G)"], [42, "幻獣の牙[換金](150G)"], [43, "古代のドレス[換金](150G)"], [44, "王朝風のティーセット[換金](160G)"], [45, "傷ひとつない毛皮[換金](160G)"], [46, "絹のドレス[換金](170G)"], [47, "魔法のぬいぐるみ[換金](170G)"], [48, "神獣の毛皮[換金](180G)"], [49, "水晶の食器[換金](180G)"], [50, "石の呪具[換金](190G)"], [51, "禍々しい仮面[換金](200G)"], [52, "ねず耳カチューシャ[換金](200G)"], [53, "竜の牙[換金](210G)"], [54, "スライム?の剥製[換金](220G)"], [55, "銀のネジ[換金](220G)"], [56, "大猫の剥製[換金](230G)"], [57, "舞踏会の仮面[換金](240G)"], [58, "重厚な牙[換金](240G)"], [59, "宝石細工の仮面[換金](250G)"], [60, "サテンのドレス[換金](260G)"], [61, "光る角[換金](260G)"], [62, "魔法のドレス[換金](270G)"], [63, "道化師の仮面[換金](280G)"], [64, "アルヴのティーセット[換金](290G)"], [65, "燃えない毛皮[換金](300G)"], [66, "雪狼の剥製[換金](300G)"], [67, "籐製の椅子[換金](310G)"], [68, "赤い石板[換金](320G)"], [69, "黒獅子の剥製[換金](330G)"], [70, "三角の椅子[換金](340G)"], [71, "子供用紳士服[換金](340G)"], [72, "アルヴの食器[換金](350G)"], [73, "ほつれた紳士服[換金](360G)"], [74, "上等な紳士服[換金](370G)"], [75, "寄木細工の文箱[換金](380G)"], [76, "白磁の燭台[換金](390G)"], [77, "黄金の牙[換金](400G)"], [78, "白木の文箱[換金](410G)"], [79, "青銅の燭台[換金](420G)"], [80, "輝く燭台[換金](430G)"], [81, "王様の椅子[換金](440G)"], [82, "古風な紳士服[換金](450G)"], [83, "思い出のドレス[換金](460G)"], [84, "古代の種[換金](460G)"], [85, "小さな宝石箱[換金](480G)"], [86, "ひびわれた姿見[換金](490G)"], [87, "楓の書棚[換金](500G)"], [88, "神秘的な仮面[換金](510G)"], [89, "トネリコの書見台[換金](520G)"], [90, "ビロードの紳士服[換金](530G)"], [91, "磨きこまれた姿見[換金](540G)"], [92, "大きな宝石箱[換金](550G)"], [93, "白檀の文箱[換金](560G)"], [94, "白樺の姿見[換金](570G)"], [95, "焼き物の像[換金](580G)"], [96, "彫刻付き姿見[換金](590G)"], [97, "粘土の像[換金](610G)"], [98, "銀の燭台[換金](620G)"], [99, "鳳凰の剥製[換金](630G)"], [100, "呪われた像[換金](640G)"], [101, "魔王の椅子[換金](650G)"], [102, "神域の椅子[換金](660G)"], [103, "満杯の宝石箱[換金](680G)"], [104, "大理石の貨幣[換金](690G)"], [105, "絵の具のセット[換金](700G)"], [106, "染料のセット[換金](710G)"], [107, "木製の貨幣[換金](730G)"], [108, "貝殻の貨幣[換金](740G)"], [109, "覆い付き書見台[換金](750G)"], [110, "手作りのゲーム盤[換金](760G)"], [111, "祭祀用の像[換金](780G)"], [112, "真鍮製のゲーム盤[換金](790G)"], [113, "螺鈿の文箱[換金](800G)"], [114, "青銅の書見台[換金](820G)"], [115, "香木の小像[換金](830G)"], [116, "魔法使いの像[換金](840G)"], [117, "鍵のかかった宝石箱[換金](860G)"], [118, "いかさまゲーム盤[換金](870G)"], [119, "魔法の紳士服[換金](890G)"], [120, "化粧品のセット[換金](900G)"], [121, "古代の姫の小像[換金](910G)"], [122, "翡翠の小像[換金](930G)"], [123, "真鍮の鉱石[換金](940G)"], [124, "真鉄の塊[換金](960G)"], [125, "銀の塊[換金](970G)"], [126, "古代の貨幣[換金](990G)"], [127, "瑪瑙の文箱[換金](1000G)"], [128, "銀細工の書見台[換金](1020G)"], [129, "粗末な馬具[換金](1030G)"], [130, "あふれた宝石箱[換金](1050G)"], [131, "異文明の貨幣[換金](1060G)"], [132, "透明な文箱[換金](1080G)"], [133, "香水のセット[換金](1090G)"], [134, "鳥が象られたティアラ[換金](1110G)"], [135, "金細工の燭台[換金](1130G)"], [136, "重厚な馬具[換金](1140G)"], [137, "香辛料のセット[換金](1160G)"], [138, "太陽のティアラ[換金](1170G)"], [139, "豪華な姿見[換金](1190G)"], [140, "月のティアラ[換金](1210G)"], [141, "水晶のメガネ[換金](1220G)"], [142, "魔法銀の塊[換金](1240G)"], [143, "硝子のメガネ[換金](1260G)"], [144, "金細工のゲーム盤[換金](1270G)"], [145, "金剛石のメガネ[換金](1290G)"], [146, "品のあるネックレス[換金](1310G)"], [147, "植物の標本[換金](1330G)"], [148, "くすんだ首輪[換金](1340G)"], [149, "空色鋼の塊[換金](1360G)"], [150, "騎士の像[換金](1380G)"], [151, "ちぎれたネックレス[換金](1400G)"], [152, "漆黒の呪具[換金](1410G)"], [153, "精巧な馬具[換金](1430G)"], [154, "飾り気のないティアラ[換金](1450G)"], [155, "動物の標本[換金](1470G)"], [156, "人造人間の標本[換金](1490G)"], [157, "しゃべる姿見[換金](1500G)"], [158, "精巧なゲーム盤[換金](1520G)"], [159, "アルヴの貨幣[換金](1540G)"], [160, "豪奢なネックレス[換金](1560G)"], [161, "猫目石の腕輪[換金](1580G)"], [162, "藍玉の腕輪[換金](1600G)"]]; - return [tableName, table]; - }, $LogHorizon_getItemTresureResultTable$30.$$arity = 0); - - Opal.def(self, '$getOtherTresureResultTable', $LogHorizon_getOtherTresureResultTable$31 = function $$getOtherTresureResultTable() { - var self = this, tableName = nil, table = nil; - - - tableName = "そのほか財宝表"; - table = [[7, "百科事典(40G)"], [8, "ライトメイス(40G)"], [9, "蘇生の宝珠(初級)(40G)"], [10, "季節の野菜ポトフ(20G)x2"], [11, "荷馬車の笛(45G)"], [12, "モンスター図鑑(初級)(40G)&お好みサンドイッチ(10G)"], [13, "ファインダガー(50G)"], [14, "パッデドアーマー[破損](55G)"], [15, "鉄壁符(初級)(45G)"], [16, "ショートボウ[破損](55G)"], [17, "マーシャルアーツドレス[破損](60G)"], [18, "ケルピーの鱗(60G)"], [19, "クレセントバーガー(30G)x2"], [20, "シェフの気まぐれピザ(60G)"], [21, "スモールシールド(70G)"], [22, "ウィローバンド[破損](30G)&暗闇透視薬(初級)(40G)"], [23, "スモールシールド[破損](35G)&魔精の小瓶(初級)(40G)"], [24, "鉢がね(80G)"], [25, "ベリーのタルト(40G)x2"], [26, "防水バッグ[破損](35G)&水中活動の巻物(初級)(50G)"], [27, "スティレット(90G)"], [28, "飛行の巻物(初級)(50G)&強酸毒(初級)(40G)"], [29, "スプリントメイル[破損](100G)"], [30, "異次元バッグ(初級)[破損](45G)&おにぎり(50G)"], [31, "ウッデンラウンド(100G)"], [32, "野太刀[破損](110G)"], [33, "保護の巻物(初級)(70G)&消耗毒(初級)(50G)"], [34, "ライトクロスボウ[破損](115G)"], [35, "良質な楽器(110G)"], [36, "ハンターフード[破損](60G)&猛毒薬(中級)(60G)"], [37, "とんすとんの焼き串盛り合わせ(120G)"], [38, "クィルブイリ[破損](135G)"], [39, "ケープ(140G)"], [40, "トートバッグ(140G)"], [41, "三つ目鳥の卵炒飯(70G)&衰弱毒(中級)(80G)"], [42, "範囲隠密の巻物(初級)(150G)"], [43, "アイアンシールド(150G)"], [44, "クイックカード(初級)(170G)"], [45, "イーグルカード(初級)(170G)"], [46, "和弓[破損](170G)"], [47, "エストック[破損](170G)"], [48, "食料バッグ(170G)"], [49, "トポト親方のコロッケ(90G)&拘束毒(中級)(100G)"], [50, "モーニングスター(200G)"], [51, "シーダーのスタッフ[破損](200G)"], [52, "カイトシールド(220G)"], [53, "怪鳥肉の水炊き(210G)"], [54, "チェインシャツ[破損](245G)"], [55, "大弓[破損](240G)"], [56, "範囲飛行の巻物(初級)(210G)"], [57, "ポーションホルダー(中級)(240G)"], [58, "アウトレイジ[破損](240G)"], [59, "定番カレー(130G)x2"], [60, "蘇生の宝珠(中級)(240G)"], [61, "招命の宝珠(中級)(120G)&焼きそばパン(150G)"], [62, "異次元バッグ(中級)(280G)"], [63, "名工の楽器(280G)"], [64, "月狼の牙[破損](180G)&解毒薬(中級)(130G)"], [65, "魚鱗の宝珠(中級)(280G)"], [66, "防水ポーチ(320G)"], [67, "収納シールド(320G)"], [68, "火炎のイヤリング(330G)"], [69, "絹の帽子(350G)"], [70, "幻翼の宝珠(中級)(320G)"], [71, "バグナウ[破損](340G)"], [72, "ロングボウ[破損](370G)"], [73, "ショテル[破損](370G)"], [74, "デッキシールド[破損](185G)&チキンボックス(200G)"], [75, "コルセスカ[破損](365G)"], [76, "サイプレスのスタッフ[破損](425G)"], [77, "チェーンシックル[破損](230G)&苺のふんわりカップケーキ(230G)"], [78, "ブロードアックス(410G)"], [79, "クロスシールド(470G)"], [80, "モンスター図鑑(上級)(400G)"], [81, "羽毛のケープ(400G)"], [82, "鉄身のブーツ(400G)"], [83, "看破の宝珠(中級)(420G)"], [84, "アドベンチャーザック(480G)"], [85, "隠密の巻物(中級)(460G)"], [86, "ファルクス[破損](500G)"], [87, "ポーションホルダー(上級)(540G)"], [88, "カタール[破損](500G)"], [89, "名匠の楽器(540G)"], [90, "技能薬(上級)(480G)"], [91, "火炎のタリスマン(620G)"], [92, "からすの手提げ袋(600G)"], [93, "範囲隠密の巻物(中級)(570G)"], [94, "トラベラーハット(650G)"], [95, "高位保護の巻物(中級)(520G)"], [96, "長柄槍[破損](600G)"], [97, "範囲飛行の巻物(中級)(570G)"], [98, "クイックカード(中級)(620G)"], [99, "トラベラーハット(650G)"], [100, "剛手甲[破損](650G)"], [101, "掃討の巻物(特級)(570G)"], [102, "エスパドン[破損](700G)"], [103, "異次元バッグ(上級)(740G)"], [104, "まごころミートパイ(410G)x2"], [105, "李満弓[破損](700G)"], [106, "招命の宝珠(上級)(395G)x2"], [107, "識別の巻物(上級)(690G)"], [108, "リネンクロス[破損](850G)"], [109, "出前のおかもち(820G)"], [110, "回復薬(上級)(720G)"], [111, "蘇生の宝珠(上級)(790G)"], [112, "再生薬(上級)(790G)"], [113, "エレメンタルカード(上級)(750G)"], [114, "極上の楽器(900G)"], [115, "踏破の巻物(上級)(750G)"], [116, "垣間見の巻物(特級)(750G)"], [117, "鉄壁符(上級)(820G)"], [118, "魚鱗の宝珠(上級)(860G)"], [119, "神奉刀[破損](850G)"], [120, "ヘヴィナックル[破損](950G)"], [121, "巧指符(特級)(1000G)"], [122, "幻翼の宝珠(上級)(930G)"], [123, "火炎のベルト(1000G)"], [124, "シルキーベレー(1100G)"], [125, "ヒーリングワード(上級)(970G)"], [126, "技能薬(特級)(930G)"], [127, "クレセントアックス[破損](1100G)"], [128, "ウォーハンマー(1100G)"], [129, "ミスルトゥのスタッフ[破損](1150G)"], [130, "範囲保護の巻物(上級)(970G)"], [131, "浄眼の巻物(上級)(970G)"], [132, "マジカルカード(上級)(1000G)"], [133, "現身符(上級)(1000G)"], [134, "ジュエリーポーチ(1200G)"], [135, "耐魔の軟膏(上級)(1000G)"], [136, "鉄身の軟膏(上級)(1000G)"], [137, "範囲飛行の巻物(上級)(1100G)"], [138, "隠密の巻物(上級)(1100G)"], [139, "魔性の楽器(1300G)"], [140, "良業物[破損](1150G)"], [141, "範囲付呪の巻物(上級)(1100G)"], [142, "ジャマダハル[破損](1300G)"], [143, "マスターパック(1400G)"], [144, "ドライハンダー[破損](1450G)"], [145, "グレイトヘルム[破損](1050G)"], [146, "高位保護の巻物(上級)(1200G)"], [147, "範囲隠密の巻物(上級)(1200G)"], [148, "ローズサークレット(1600G)"], [149, "火炎のメダリオン(1600G)"], [150, "ファインジャベリン[破損](1200G)"], [151, "カッツバルゲル[破損](1250G)"], [152, "紫の指輪[破損](1300G)"], [153, "異次元バッグ(特急)(1600G)"], [154, "五人張[破損](1750G)"], [155, "皇国技芸寮打物[破損](1400G)"], [156, "ヘヴィランス[破損](1500G)"], [157, "竜手甲[破損](1650G)"], [158, "ポロニアのワンド[破損](1700G)"], [159, "デスサイズ[破損](1700G)"], [160, "フランシスカ(1700G)"], [161, "伝説の楽器(1700G)"], [162, "ウルミン(1900G)"]]; - return [tableName, table]; - }, $LogHorizon_getOtherTresureResultTable$31.$$arity = 0); - - Opal.def(self, '$getHeroineTresureResultTable', $LogHorizon_getHeroineTresureResultTable$32 = function $$getHeroineTresureResultTable() { - var self = this, tableName = nil, table = nil; - - - tableName = "ヒロイン財宝表"; - table = [[7, "行き倒れのみすぼらしいやせっぽちの幼女"], [8, "何よりお金が大事な御団子頭のチャイナ娘"], [9, "おネダり上手キャミソ肩だしセーター妖術師"], [10, "小さな背中で皆を護るカットジーンズ武闘家"], [11, "イカ帽子をかぶったドジっ娘侵略者"], [12, "呆れるほどポジティブな自称名探偵"], [13, "肝心な所でドジ踏む猫毛ポニテ殴り施療神官"], [14, "卵かけご飯の好きな貧乳神祇官"], [15, "光物大好きガメツイビッグリボン二刀細剣士"], [16, "オークから命からがら逃げてきた剣の乙女"], [17, "あなたのことを盲目的に賛美する自称妹"], [18, "アピールするのに認識されない神祇官"], [19, "明るくポジティブなピンクのリボンの少女"], [20, "虚乳の魔法が使えないコンプレックス魔女"], [21, "食欲に一切躊躇しないむっちり駄肉アイドル"], [22, "泣きホクロが魅惑の悪戯お姉さん盗剣士"], [23, "執着心の強い若作りで陽気な年増神話生物"], [24, "詩歌を愛する平安引きこもり姫"], [25, "病弱だが誇り高い没落貴族のお嬢様"], [26, "元気いっぱい!小柄な狼牙族の野生児少女"], [27, "借金のかたで段ボールハウスなリコピン"], [28, "帰国子女の巫女服風魔砲少女デース!"], [29, "ついてくるだけは出来るゾンビ娘"], [30, "夢にひたむきな緑髪の超時空アイドル候補生"], [31, "すぐ股間を蹴るギザギザ歯のヤンキー娘"], [32, "使い減りしない盾"], [33, "FXで有り金を全部とかしたうつろな先輩"], [34, "二の腕ぷにぷにだが家計簿を付けられる魔王"], [35, "その胸は豊満であった記憶喪失の女ニンジャ"], [36, "よくお裾わけをくれるおさげ髪のパン屋の娘"], [37, "「汚いは褒め言葉」の目線つき女暗殺者"], [38, "ボタンが弾けそうで涙目のギルド窓口看板娘"], [39, "何でもオカルトにしてパニックになる少女"], [40, "戦闘の度に大食いしてしまう悩める弓術少女"], [41, "些細なことですぐ絆されちゃう金髪少女"], [42, "一緒に帰るのが恥ずかしいピンク髪幼馴染"], [43, "ぽんぽんがペインでトイレ常駐なエルフ少女"], [44, "見つめると赤面する前髪法儀族少女"], [45, "すぐビビッてテンパる小動物系少女"], [46, "背が高く紳士でキザなヅカ系王子様騎士女"], [47, "竹を割ったような性格の筋肉ドワーフ女"], [48, "いつもあなたを夢に見ているポニテ少女"], [49, "先陣先駆け夜討ち朝駆けお寝坊姉御武士"], [50, "何にでも首を突っ込む旅ガラスのロリババア"], [51, "事あるごとに踊る薄着南国褐色娘"], [52, "彼女はあなたの初恋の人に似ている"]]; - return [tableName, table]; - }, $LogHorizon_getHeroineTresureResultTable$32.$$arity = 0); - - Opal.def(self, '$getGoblinTresureResultTable', $LogHorizon_getGoblinTresureResultTable$33 = function $$getGoblinTresureResultTable() { - var self = this, tableName = nil, table = nil; - - - tableName = "ゴブリン財宝表"; - table = [[7, "ライトメイス(40G)"], [8, "百科事典(40G)"], [9, "42G"], [10, "古びた髑髏[コア素材](40G)"], [11, "加速の巻物(初級)(45G)"], [12, "46G"], [13, "48G"], [14, "50G"], [15, "ガラス玉[換金](60G)"], [16, "血塗られた刃[コア素材](50G)"], [17, "歪んだ金皿[換金](60G)"], [18, "59G"], [19, "毛皮の敷物[換金](60G)"], [20, "とがった爪[コア素材](60G)"], [21, "67G"], [22, "傷だらけの象牙像[換金](70G)"], [23, "72G"], [24, "ライトランス[破損](75G)"], [25, "骨のネックレス[換金](80G)"], [26, "砂金混じりの石[換金](80G)"], [27, "85G"], [28, "香木の小片[換金](90G)"], [29, "奇妙なお面[換金](90G)"], [30, "96G"], [31, "シミター(100G)"], [32, "ウッデンラウンド(100G)"], [33, "風鳴りの鈴[コア素材](80G)&鉄の陣笠[コア素材](30G)"], [34, "112G"], [35, "山羊スライム(大)[換金](120G)"], [36, "121G"], [37, "高級桧材[換金](125G)"], [38, "130G"], [39, "水晶のチェス駒[換金](135G)"], [40, "140G"], [41, "テント(キャンプ用)(150G)"], [42, "怪しい丸薬[コア素材](30G)x2&100G"], [43, "謎めいた毛皮[コア素材](80G)&怨念の鍔[コア素材](80G)"], [44, "儀式の骨剣[換金](160G)"], [45, "古ぼけたコイン[換金](165G)"], [46, "狼牙棒(170G)"], [47, "法理回路[コア素材](60G)&120G"], [48, "大きな魔力結晶[コア素材](120G)&60G"], [49, "189G"], [50, "上等な樽酒[換金](200G)"], [51, "201G"], [52, "白の指輪(210G)"], [53, "ヒスイの首飾り[換金](210G)"], [54, "金のゴブリン像[換金](220G)"], [55, "サーベル(230G)"], [56, "真鉄の刀身[コア素材](120G)&120G"], [57, "汚れた青磁の壺[換金](240G)"], [58, "とんすとんの焼き串盛り合わせ(120G)x2"], [59, "ゴブリン王の勲章[換金](255G)"], [60, "垣間見の巻物(中級)(130G)x2"], [61, "269G"], [62, "白狼の毛皮[換金](280G)"]]; - return [tableName, table]; - }, $LogHorizon_getGoblinTresureResultTable$33.$$arity = 0); - - Opal.def(self, '$getPersonalityTagDiceCommandResult', $LogHorizon_getPersonalityTagDiceCommandResult$34 = function $$getPersonalityTagDiceCommandResult(command) { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil, text = nil; - - - if ($truthy("PTAG"['$==='](command))) { - } else { - return nil - }; - tableName = "パーソナリティタグ表"; - table = ["[おませさん]", "[好奇心旺盛]", "[寂しがりや]", "[生真面目]", "[食いしん坊]", "[やんちゃ]または[おてんば]", "[お人よし]", "[情熱家]", "[世話好き]", "[理知的]", "[頑固者]", "[兄貴肌]または[姉御肌]", "[義理堅い]", "[気まぐれ]", "[職人気質]", "[熱血漢]", "[努力家]", "[男好き]または[女好き]", "[家庭的]", "[負けず嫌い]", "[純真]", "[朴念仁]", "[慈悲深い]", "[マイペース]", "[楽天家]", "[仲間思い]", "[誇り高い]", "[社交的]", "[冷静沈着]", "[ロマンチスト]", "[学者肌]", "[内向的]", "[苦労人]", "[派手好き]", "[勇猛果敢]", "[ミステリアス]"]; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - text = "" + (tableName) + "(" + (number) + "):" + (result); - return text; - }, $LogHorizon_getPersonalityTagDiceCommandResult$34.$$arity = 1); - - Opal.def(self, '$getFriendlyChartDiceCommandResult', $LogHorizon_getFriendlyChartDiceCommandResult$35 = function $$getFriendlyChartDiceCommandResult(command) { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil, text = nil; - - - if ($truthy("KOYU"['$==='](command))) { - } else { - return nil - }; - tableName = "交友表"; - table = ["交友対象への庇護\nあなたは、交友対象を庇護したいと思っている。守ってあげられる強さがあなたにはある。", "交友対象への親愛\nあなたは、交友対象を好ましく思っている。その気持ちを彼に伝えているとは限らない。", "交友対象との義兄弟\nあなたは、交友対象と兄弟同然の間柄だ。もちろん、血は繋がっていないが、そんなことは些細なことだ。", "交友対象の英雄\nあなたは、交友対象から英雄視されている。それは例えあなたが否定しても変わらない。", "交友対象への尊敬\nあなたは、交友対象を尊敬している。彼の技術、心の強さ。それがなんであっても彼への敬意は変わらない。", "交友対象の相棒\nあなたは、交友対象を相棒だと思っている。彼なら自分と一緒に歩んでくれるだろう。", "交友対象への庇護\nあなたは、交友対象を庇護したいと思っている。守ってあげられる強さがあなたにはある。", "交友対象への親愛\nあなたは、交友対象を好ましく思っている。その気持ちを彼に伝えているとは限らない。", "交友対象との義兄弟\nあなたは、交友対象と兄弟同然の間柄だ。もちろん、血は繋がっていないが、そんなことは些細なことだ。", "交友対象の英雄\nあなたは、交友対象から英雄視されている。それは例えあなたが否定しても変わらない。", "交友対象への尊敬\nあなたは、交友対象を尊敬している。彼の技術、心の強さ。それがなんであっても彼への敬意は変わらない。", "交友対象の相棒\nあなたは、交友対象を相棒だと思っている。彼なら自分と一緒に歩んでくれるだろう。", "交友対象の恩\nあなたは交友対象に恩を受けた。今度は自分がその恩に報いる番だ。", "交友対象のライバル\nあなたは、交友対象をライバルだと思っている。それは一方的なものかもしれないし、切磋琢磨する間柄かもしれない。", "交友対象への興味\nあなたは、交友対象に対して興味を持っている。彼を見ているのが面白く、彼の行動を見届けてみたい。", "交友対象との友情\nあなたは、彼を友人だと思っている。それはどこに行っても変わらない確かなものだ。", "交友対象との同志\nあなたは、交友対象の同志である。同好の士であったり、同じ目的に向かう者だったりするだろう。", "交友対象への理解\nあなたは、交友対象を理解したいと思っている。彼はあなたと違う新しい視点を見せてくれる。", "交友対象の恩\nあなたは交友対象に恩を受けた。今度は自分がその恩に報いる番だ。", "交友対象のライバル\nあなたは、交友対象をライバルだと思っている。それは一方的なものかもしれないし、切磋琢磨する間柄かもしれない。", "交友対象への興味\nあなたは、交友対象に対して興味を持っている。彼を見ているのが面白く、彼の行動を見届けてみたい。", "交友対象との友情\nあなたは、彼を友人だと思っている。それはどこに行っても変わらない確かなものだ。", "交友対象との同志\nあなたは、交友対象の同志である。同好の士であったり、同じ目的に向かう者だったりするだろう。", "交友対象への理解\nあなたは、交友対象を理解したいと思っている。彼はあなたと違う新しい視点を見せてくれる。", "交友対象への尽力\nあなたは、交友対象に尽くしたいと思っている。それは彼の人柄かもしれないし、あなたの拘りかもしれない。", "交友対象との師弟\nあなたは、交友対象との師弟関係を結んでいる。どちらが師でも構わないがいろいろ教えられることがあるだろう。", "交友対象との雇用関係\nあなたは、交友対象と雇用関係にある。あなたと彼は仕事を通じて互いの力量を認め合う仲だ。", "交友対象の隣人\nあなたは交友対象の近隣に住んでいる。毎日挨拶を交わす程度かもしれないし、一緒に夕食を食べる仲かもしれない。", "交友対象との取引\nあなたは交友対象と商売をしている。互いに利のある取引ができる相手だ。", "交友対象の家族\nあなたは交友対象と一緒に暮らしている。同じ家に誰かがいると寂しくはないだろう。", "交友対象への尽力\nあなたは、交友対象に尽くしたいと思っている。それは彼の人柄かもしれないし、あなたの拘りかもしれない。", "交友対象との師弟\nあなたは、交友対象との師弟関係を結んでいる。どちらが師でも構わないがいろいろ教えられることがあるだろう。", "交友対象との雇用関係\nあなたは、交友対象と雇用関係にある。あなたと彼は仕事を通じて互いの力量を認め合う仲だ。", "交友対象の隣人\nあなたは交友対象の近隣に住んでいる。毎日挨拶を交わす程度かもしれないし、一緒に夕食を食べる仲かもしれない。", "交友対象との取引\nあなたは交友対象と商売をしている。互いに利のある取引ができる相手だ。", "交友対象の家族\nあなたは交友対象と一緒に暮らしている。同じ家に誰かがいると寂しくはないだろう。"]; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - text = "" + (tableName) + "([" + (number) + "]) > " + (result); - return text; - }, $LogHorizon_getFriendlyChartDiceCommandResult$35.$$arity = 1); - - Opal.def(self, '$getPrefixedMagickItemDiceCommandResult', $LogHorizon_getPrefixedMagickItemDiceCommandResult$36 = function $$getPrefixedMagickItemDiceCommandResult(command) { - var $a, $b, self = this, rank = nil, table_1 = nil, table_2 = nil, table_3 = nil, tableName = nil, table = nil, $case = nil, result = nil, number = nil, text = nil; - - - if ($truthy(/MGR([1-3])/['$==='](command))) { - } else { - return nil - }; - rank = $$($nesting, 'Regexp').$last_match(1).$to_i(); - table_1 = ["接頭語:気合の 対応タグ:すべての武器\nアイテム効果:この武器の【攻撃力】に+1する。", "接頭語:秘術の 対応タグ:[杖][魔石]\nアイテム効果:このアイテムの【魔力】を+1する。", "接頭語:一撃の 対応タグ:[白兵攻撃]可能な武器\nアイテム効果:〔起動:ダメージロール〕この武器による[白兵攻撃]のダメージロールに+7する。シナリオ1回使用可能。", "接頭語:狙撃の 対応タグ:[弓][投擲]\nアイテム効果:〔起動:行動〕この武器による[射撃攻撃]と同時に使用する。攻撃の射程を+2Sqする。シナリオ1回使用可能。", "接頭語:必殺の 対応タグ:すべての武器\nアイテム効果:〔起動:判定直後〕この武器による[武器攻撃]による[命中判定]のダイスに6の出目が1つ以上あれば、判定をクリティカルにする。シナリオ1回使用可能。", "接頭語:火炎の 対応タグ:すべての武器、楽器\nアイテム効果:アイテムに[火炎]タグを追加する。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「冷気の」「電撃の」のように変更すること)", "接頭語:気合の 対応タグ:すべての武器\nアイテム効果:この武器の【攻撃力】に+1する。", "接頭語:秘術の 対応タグ:[杖][魔石]\nアイテム効果:このアイテムの【魔力】を+1する。", "接頭語:一撃の 対応タグ:[白兵攻撃]可能な武器\nアイテム効果:〔起動:ダメージロール〕この武器による[白兵攻撃]のダメージロールに+7する。シナリオ1回使用可能。", "接頭語:狙撃の 対応タグ:[弓][投擲]\nアイテム効果:〔起動:行動〕この武器による[射撃攻撃]と同時に使用する。攻撃の射程を+2Sqする。シナリオ1回使用可能。", "接頭語:必殺の 対応タグ:すべての武器\nアイテム効果:〔起動:判定直後〕この武器による[武器攻撃]による[命中判定]のダイスに6の出目が1つ以上あれば、判定をクリティカルにする。シナリオ1回使用可能。", "接頭語:火炎の 対応タグ:すべての武器、楽器\nアイテム効果:アイテムに[火炎]タグを追加する。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「冷気の」「電撃の」のように変更すること)", "接頭語:炎使いの 対応タグ:[杖][魔石][腕部]\nアイテム効果:〔起動:ダメージロール〕あなたが行う[火炎]タグを持つ攻撃のダメージロールに+7する。シナリオ1回使用可能。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「氷使いの」「雷使いの」のように変更すること)", "接頭語:鉄身の 対応タグ:[盾][重鎧][中鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近距離からの攻撃):3]を得る。", "接頭語:矢除けの 対応タグ:[盾][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近以外からの攻撃):3]を得る。", "接頭語:火除けの 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(火炎):10]を得る。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「氷除けの」「雷除けの」のように変更すること)", "接頭語:根性の 対応タグ:[重鎧][頭部]\nアイテム効果:〔起動:本文〕あなたがBSを受けた直後に使用する。直前に受けたBSから1つ選んで解除する。シナリオ1回使用可能。", "接頭語:癒しの 対応タグ:[腕部]\nアイテム効果:あなたの【回復力】を+2する。", "接頭語:炎使いの 対応タグ:[杖][魔石][腕部]\nアイテム効果:〔起動:ダメージロール〕あなたが行う[火炎]タグを持つ攻撃のダメージロールに+7する。シナリオ1回使用可能。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「氷使いの」「雷使いの」のように変更すること)", "接頭語:鉄身の 対応タグ:[盾][重鎧][中鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近距離からの攻撃):3]を得る。", "接頭語:矢除けの 対応タグ:[盾][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近以外からの攻撃):3]を得る。", "接頭語:火除けの 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(火炎):10]を得る。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「氷除けの」「雷除けの」のように変更すること)", "接頭語:根性の 対応タグ:[重鎧][頭部]\nアイテム効果:〔起動:本文〕あなたがBSを受けた直後に使用する。直前に受けたBSから1つ選んで解除する。シナリオ1回使用可能。", "接頭語:癒しの 対応タグ:[腕部]\nアイテム効果:あなたの【回復力】を+2する。", "接頭語:スナネズミの 対応タグ:[腕部][外套]\nアイテム効果:〔起動:クリンナップ〕あなたの【ヘイト】をー2する。シナリオ1回使用可能。", "接頭語:フクロウの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:インスタント〕あなたは[暗視]タグを得る。この効果はCSとして扱う。シナリオ1回使用可能。", "接頭語:ヤマイワナの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:インスタント〕あなたは[水棲]タグを得る。この効果はCSとして扱う。シナリオ1回使用可能。", "接頭語:目利きの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたがドロップ品ロールを行った直後に使用する。そのロールを振り直す。シナリオ1回使用可能。", "接頭語:宝探しの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが財宝表ロールを行った直後に使用する。そのロールを振り直す。シナリオ1回使用可能。", "接頭語:早変わりの 対応タグ:[鞄]\nアイテム効果:〔起動:インスタント〕あなたは即座に《装備の変更》を行う。シーン1回使用可能。", "接頭語:スナネズミの 対応タグ:[腕部][外套]\nアイテム効果:〔起動:クリンナップ〕あなたの【ヘイト】をー2する。シナリオ1回使用可能。", "接頭語:フクロウの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:インスタント〕あなたは[暗視]タグを得る。この効果はCSとして扱う。シナリオ1回使用可能。", "接頭語:ヤマイワナの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:インスタント〕あなたは[水棲]タグを得る。この効果はCSとして扱う。シナリオ1回使用可能。", "接頭語:目利きの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたがドロップ品ロールを行った直後に使用する。そのロールを振り直す。シナリオ1回使用可能。", "接頭語:宝探しの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが財宝表ロールを行った直後に使用する。そのロールを振り直す。シナリオ1回使用可能。", "接頭語:早変わりの 対応タグ:[鞄]\nアイテム効果:〔起動:インスタント〕あなたは即座に《装備の変更》を行う。シーン1回使用可能。"]; - table_2 = ["接頭語:怒りの 対応タグ:[両手]武器\nアイテム効果:〔起動:ダメージロール〕この武器による[武器攻撃]のダメージロールに+[あなたの【ヘイト】]する。シーン1回使用可能。", "接頭語:連撃の 対応タグ:[片手]武器\nアイテム効果:〔起動:判定直後〕この武器による[武器攻撃]の[命中判定]を振り直す。シーン1回使用可能。", "接頭語:鋭刃の 対応タグ:[剣][刀][槍]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。", "接頭語:痛撃の 対応タグ:[槌斧][格闘][鞭][杖]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。", "接頭語:魔弾の 対応タグ:[弓][投擲]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。", "接頭語:理力の 対応タグ:すべての武器、[魔石][楽器]\nアイテム効果:あなたの[魔法攻撃][特殊攻撃]のダメージロールに+1Dする。この効果は複数累積しない。", "接頭語:怒りの 対応タグ:[両手]武器\nアイテム効果:〔起動:ダメージロール〕この武器による[武器攻撃]のダメージロールに+[あなたの【ヘイト】]する。シーン1回使用可能。", "接頭語:連撃の 対応タグ:[片手]武器\nアイテム効果:〔起動:判定直後〕この武器による[武器攻撃]の[命中判定]を振り直す。シーン1回使用可能。", "接頭語:鋭刃の 対応タグ:[剣][刀][槍]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。", "接頭語:痛撃の 対応タグ:[槌斧][格闘][鞭][杖]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。", "接頭語:魔弾の 対応タグ:[弓][投擲]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。", "接頭語:理力の 対応タグ:すべての武器、[魔石][楽器]\nアイテム効果:あなたの[魔法攻撃][特殊攻撃]のダメージロールに+1Dする。この効果は複数累積しない。", "接頭語:鬼殺しの 対応タグ:すべての武器\nアイテム効果:この武器による[人型]への[武器攻撃]のダメージロールに+1Dする。(この効果を選んだ時、種族のタグを[自然][精霊][幻獣][不死][人造][人間]のいずれかに変更してもよい。その場合は接頭語も「精霊殺しの」「幻獣殺しの」のように変更すること)", "接頭語:堅守の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:この防具の【物理防御力】に+4する。", "接頭語:抗魔の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:この防具の【魔法防御力】に+4する。", "接頭語:防壁の 対応タグ:[盾][頭部]\nアイテム効果:あなたはシーン開始時に[障壁:10]を得る。", "接頭語:忍耐の 対応タグ:[盾][頭部]\nアイテム効果:〔起動:本文〕あなたが強制的な移動を受けた時に使用する。その移動距離をー1Sqする。", "接頭語:護法の 対応タグ:[腕部]\nアイテム効果:あなたが与える[障壁]の強度は+5される。", "接頭語:鬼殺しの 対応タグ:すべての武器\nアイテム効果:この武器による[人型]への[武器攻撃]のダメージロールに+1Dする。(この効果を選んだ時、種族のタグを[自然][精霊][幻獣][不死][人造][人間]のいずれかに変更してもよい。その場合は接頭語も「精霊殺しの」「幻獣殺しの」のように変更すること)", "接頭語:堅守の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:この防具の【物理防御力】に+4する。", "接頭語:抗魔の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:この防具の【魔法防御力】に+4する。", "接頭語:防壁の 対応タグ:[盾][頭部]\nアイテム効果:あなたはシーン開始時に[障壁:10]を得る。", "接頭語:忍耐の 対応タグ:[盾][頭部]\nアイテム効果:〔起動:本文〕あなたが強制的な移動を受けた時に使用する。その移動距離をー1Sqする。", "接頭語:護法の 対応タグ:[腕部]\nアイテム効果:あなたが与える[障壁]の強度は+5される。", "接頭語:脈動の 対応タグ:[腕部]\nアイテム効果:あなたが与える[再生]の強度は+3される。", "接頭語:疾走の 対応タグ:[脚部][外套]\nアイテム効果:〔起動:行動〕あなたが《ラン》《ダッシュ》を行う時に使用する。その移動距離に+1Sqする。シーン1回使用可能。", "接頭語:瞬速の 対応タグ:[脚部][外套]\nアイテム効果:このアイテムの[行動修正]に+3する。", "接頭語:逆境の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが[戦闘不能]になった直後に使用できる。あなたは【因果力】1点を得る。シーン1回使用可能。", "接頭語:森渡りの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:あなたはシーン開始時に[軽減([天然]プロップ、ギミックからのダメージ):15]を得る。(この効果を選んだ時、タグを[魔法][機械]のいずれかに変えてもよい。その場合は、接頭語も「魔渡りの」「罠渡りの」のように変更すること)", "接頭語:旅人の 対応タグ:[鞄]\nアイテム効果:このアイテムに[所持品スロット]4個を追加する。", "接頭語:脈動の 対応タグ:[腕部]\nアイテム効果:あなたが与える[再生]の強度は+3される。", "接頭語:疾走の 対応タグ:[脚部][外套]\nアイテム効果:〔起動:行動〕あなたが《ラン》《ダッシュ》を行う時に使用する。その移動距離に+1Sqする。シーン1回使用可能。", "接頭語:瞬速の 対応タグ:[脚部][外套]\nアイテム効果:このアイテムの[行動修正]に+3する。", "接頭語:逆境の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが[戦闘不能]になった直後に使用できる。あなたは【因果力】1点を得る。シーン1回使用可能。", "接頭語:森渡りの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:あなたはシーン開始時に[軽減([天然]プロップ、ギミックからのダメージ):15]を得る。(この効果を選んだ時、タグを[魔法][機械]のいずれかに変えてもよい。その場合は、接頭語も「魔渡りの」「罠渡りの」のように変更すること)", "接頭語:旅人の 対応タグ:[鞄]\nアイテム効果:このアイテムに[所持品スロット]4個を追加する。"]; - table_3 = ["接頭語:気迫の 対応タグ:すべての武器\nアイテム効果:この武器の【攻撃力】に+3する。", "接頭語:神秘の 対応タグ:[杖][魔石]\nアイテム効果:このアイテムの【魔力】に+3する。", "接頭語:遠当ての 対応タグ:[弓][投擲]\nアイテム効果:この武器の射程に+1Sqする。", "接頭語:吸血の 対応タグ:[白兵攻撃]可能な武器\nアイテム効果:この武器による[白兵攻撃]でダメージを与えた時、あなたの【HP】は5点回復する。", "接頭語:衝撃の 対応タグ:[片手]武器\nアイテム効果:この武器による《基本武器攻撃》でダメージを与えた時、攻撃の対象に[放心]を与える。", "接頭語:怒号の 対応タグ:[両手]武器\nアイテム効果:この武器による《基本武器攻撃》でダメージを与えた時、攻撃の対象に[萎縮]を与える。", "接頭語:気迫の 対応タグ:すべての武器\nアイテム効果:この武器の【攻撃力】に+3する。", "接頭語:神秘の 対応タグ:[杖][魔石]\nアイテム効果:このアイテムの【魔力】に+3する。", "接頭語:遠当ての 対応タグ:[弓][投擲]\nアイテム効果:この武器の射程に+1Sqする。", "接頭語:吸血の 対応タグ:[白兵攻撃]可能な武器\nアイテム効果:この武器による[白兵攻撃]でダメージを与えた時、あなたの【HP】は5点回復する。", "接頭語:衝撃の 対応タグ:[片手]武器\nアイテム効果:この武器による《基本武器攻撃》でダメージを与えた時、攻撃の対象に[放心]を与える。", "接頭語:怒号の 対応タグ:[両手]武器\nアイテム効果:この武器による《基本武器攻撃》でダメージを与えた時、攻撃の対象に[萎縮]を与える。", "接頭語:甲羅の 対応タグ:[盾][重鎧][中鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近距離からの攻撃):10]を得る。", "接頭語:矢弾きの 対応タグ:[盾][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近以外からの攻撃):10]を得る。", "接頭語:耐火の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(火炎):25]を得る。(この効果を選んだ時、軽減するタグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「耐冷の」「耐電の」のように変更すること)", "接頭語:城砦の 対応タグ:[盾][頭部]\nアイテム効果:あなたはシーン開始時に【障壁:20】を得る。", "接頭語:物見の 対応タグ:[頭部]\nアイテム効果:あなたが行う[偵察]タグを持つ行動、および《異常探知》の判定に+1Dする。", "接頭語:快癒の 対応タグ:[腕部]\nアイテム効果:あなたの【回復力】に+5する。", "接頭語:甲羅の 対応タグ:[盾][重鎧][中鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近距離からの攻撃):10]を得る。", "接頭語:矢弾きの 対応タグ:[盾][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近以外からの攻撃):10]を得る。", "接頭語:耐火の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(火炎):25]を得る。(この効果を選んだ時、軽減するタグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「耐冷の」「耐電の」のように変更すること)", "接頭語:城砦の 対応タグ:[盾][頭部]\nアイテム効果:あなたはシーン開始時に【障壁:20】を得る。", "接頭語:物見の 対応タグ:[頭部]\nアイテム効果:あなたが行う[偵察]タグを持つ行動、および《異常探知》の判定に+1Dする。", "接頭語:快癒の 対応タグ:[腕部]\nアイテム効果:あなたの【回復力】に+5する。", "接頭語:罠外しの 対応タグ:[腕部]\nアイテム効果:〔起動:判定直前〕あなたが《プロップ解除》を行う時に使用する。その判定はクリティカルとなる。シーン1回使用可能。", "接頭語:不動の 対応タグ:[脚部][外套]\nアイテム効果:あなたは[阻止能力]を失わない。", "接頭語:影走りの 対応タグ:[脚部][外套]\nアイテム効果:あなたが[隠密状態]の時に《ラン》を行っても、[隠密状態]は解除されない。", "接頭語:深海の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:あなたは[暗視][水棲]タグを得る。", "接頭語:金運の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが財宝表ロールまたはドロップ表ロールを行った直後に使用する。そのロールを振り直す。シーン1回使用可能。", "接頭語:罠避けの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:ダメージ適用直前〕あなたに適用される予定のプロップおよび[ギミック]によるダメージを無効にする。シナリオ1回使用可能。", "接頭語:罠外しの 対応タグ:[腕部]\nアイテム効果:〔起動:判定直前〕あなたが《プロップ解除》を行う時に使用する。その判定はクリティカルとなる。シーン1回使用可能。", "接頭語:不動の 対応タグ:[脚部][外套]\nアイテム効果:あなたは[阻止能力]を失わない。", "接頭語:影走りの 対応タグ:[脚部][外套]\nアイテム効果:あなたが[隠密状態]の時に《ラン》を行っても、[隠密状態]は解除されない。", "接頭語:深海の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:あなたは[暗視][水棲]タグを得る。", "接頭語:金運の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが財宝表ロールまたはドロップ表ロールを行った直後に使用する。そのロールを振り直す。シーン1回使用可能。", "接頭語:罠避けの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:ダメージ適用直前〕あなたに適用される予定のプロップおよび[ギミック]によるダメージを無効にする。シナリオ1回使用可能。"]; - tableName = "プレフィックスドアイテム効果表"; - table = nil; - $case = rank; - if ((1)['$===']($case)) { - tableName = $rb_plus(tableName, "(マジックグレード1)"); - table = table_1;} - else if ((2)['$===']($case)) { - tableName = $rb_plus(tableName, "(マジックグレード2)"); - table = table_2;} - else if ((3)['$===']($case)) { - tableName = $rb_plus(tableName, "(マジックグレード3)"); - table = table_3;}; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - text = "" + (tableName) + "([" + (number) + "]) > " + (result); - return text; - }, $LogHorizon_getPrefixedMagickItemDiceCommandResult$36.$$arity = 1); - - Opal.def(self, '$getHitLocationDiceCommandResult', $LogHorizon_getHitLocationDiceCommandResult$37 = function $$getHitLocationDiceCommandResult(command) { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - if ($truthy("HLOC"['$==='](command))) { - } else { - return nil - }; - tableName = "攻撃命中箇所"; - table = ["額", "頬", "鼻", "顎", "後頭部", "首", "耳", "目", "こめかみ", "腕", "肘", "手", "手の指", "心臓", "胃", "肺", "肋骨", "肩", "背", "わき腹", "腰", "下腹", "太もも", "喉", "ふくらはぎ", "アキレス腱", "かかと", "すね", "足の小指", "膝", "社会的信用", "人間関係", "初恋の思い出", "完璧なはずの予測", "心", "眼鏡"]; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return "" + (tableName) + "(" + (number) + "):" + (result); - }, $LogHorizon_getHitLocationDiceCommandResult$37.$$arity = 1); - - Opal.def(self, '$getPCNameDiceCommandResult', $LogHorizon_getPCNameDiceCommandResult$38 = function $$getPCNameDiceCommandResult(command) { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - if ($truthy("PCNM"['$==='](command))) { - } else { - return nil - }; - tableName = "PC名"; - table = ["Kuraudo", "Sefirosu", "Kirito", "Asuna", "Leeroy Jenkins", "Buront", "水瀬陽夢", "三宝寺吾郎", "奈流麗夢", "フランチャイズ竜崎", "太宰治", "ねざ", "クロウ・リー", "ダィテス", "達也", "深雪", "スレイ", "タカぼんさん", "黒の錬金術士", "†愛天使猫姫†", "デス★ガン", "卍漆黒の堕天使卍", "光速の異名を持ち重力を自在に操る高貴なる騎士", "新世界†英傑殺し", "ろぐほら", "ああああ", "そうこ", "ぎんこう", "あずかり", "もょもと", "サスケ", "ラファエロ", "ドナテロ", "ミケランジェロ", "川内", "フジキド"]; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return "" + (tableName) + "(" + (number) + "):" + (result); - }, $LogHorizon_getPCNameDiceCommandResult$38.$$arity = 1); - - Opal.def(self, '$getInventionAttributeTextDiceCommandResult', $LogHorizon_getInventionAttributeTextDiceCommandResult$39 = function $$getInventionAttributeTextDiceCommandResult(command) { - var $a, $$40, self = this, tableName = nil, table_indicate_string = nil, is_single = nil, result = nil, number = nil; - - - if ($truthy(/IAT([ABMDLT]*)/['$==='](command))) { - } else { - return nil - }; - tableName = "ロデ研の新発明"; - table_indicate_string = (function() {if ($truthy(($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $$($nesting, 'Regexp').$last_match(1)['$!=']("") : $a))) { - return $$($nesting, 'Regexp').$last_match(1) - } else { - return "MDLT" - }; return nil; })(); - is_single = table_indicate_string.$length()['$=='](1); - result = []; - number = []; - $send(table_indicate_string.$split(/(?:)/), 'each', [], ($$40 = function(char$){var self = $$40.$$s || this, $b, $c, $$41, $$42, $$43, $$44, dice_result = nil, dice_str = nil, $case = nil; - - - - if (char$ == null) { - char$ = nil; - }; - $c = self.$roll(1, 6), $b = Opal.to_ary($c), (dice_result = ($b[0] == null ? nil : $b[0])), (dice_str = ($b[1] == null ? nil : $b[1])), $c; - number['$<<'](dice_str); - return result['$<<']((function() {$case = char$; - if ("A"['$===']($case) || "M"['$===']($case)) {return $send(["光って回って音が鳴る", "何かに目覚める", "硬くて強い", "すごく速い", "大量生産できる", "よい手触り"], 'map', [], ($$41 = function(e){var self = $$41.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus((function() {if ($truthy(is_single)) { - return "特徴A(メリット):" - } else { - return "" - }; return nil; })(), e);}, $$41.$$s = self, $$41.$$arity = 1, $$41))} - else if ("B"['$===']($case) || "D"['$===']($case)) {return $send(["中毒性のある", "凄まじく重い", "ひどい臭いの", "壊れやすい", "マニュアルが超厚い", "捨てても戻ってくる"], 'map', [], ($$42 = function(e){var self = $$42.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus((function() {if ($truthy(is_single)) { - return "特徴B(デメリット):" - } else { - return "" - }; return nil; })(), e);}, $$42.$$s = self, $$42.$$arity = 1, $$42))} - else if ("L"['$===']($case)) {return $send(["美しい", "素朴な", "風流な", "斬新な", "名状しがたき", "命を刈り取る形をしている"], 'map', [], ($$43 = function(e){var self = $$43.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus((function() {if ($truthy(is_single)) { - return "見た目:" - } else { - return "" - }; return nil; })(), e);}, $$43.$$s = self, $$43.$$arity = 1, $$43))} - else if ("T"['$===']($case)) {return $send(["武器", "防具", "アクセサリ", "食料", "薬品", "乗り物"], 'map', [], ($$44 = function(e){var self = $$44.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus((function() {if ($truthy(is_single)) { - return "発明品の種類:" - } else { - return "" - }; return nil; })(), e);}, $$44.$$s = self, $$44.$$arity = 1, $$44))} - else { return nil }})()['$[]']($rb_minus(dice_result, 1)));}, $$40.$$s = self, $$40.$$arity = 1, $$40)); - return "" + (tableName) + "([" + (number.$join(",")) + "]):" + (result.$join(" ")); - }, $LogHorizon_getInventionAttributeTextDiceCommandResult$39.$$arity = 1); - - Opal.def(self, '$getTroubleInAkibaStreetDiceCommandResult', $LogHorizon_getTroubleInAkibaStreetDiceCommandResult$45 = function $$getTroubleInAkibaStreetDiceCommandResult(command) { - var $$46, self = this, tableName = nil, number = nil, result = nil; - - - if ($truthy(command['$===']("TIAS"))) { - } else { - return nil - }; - tableName = "アキバの街で遭遇するトラブル"; - number = []; - result = []; - $send([["〈記録の地平線〉が", "〈三日月同盟〉が", "〈D.D.D〉が", "〈黒剣騎士団〉が", "〈西風の旅団〉が", "〈ロデリック商会〉が"], ["ギルド会館で", "くいだおれ横丁で", "街の真ん中で", "水楓の館で", "公衆浴場で", "下水道で"], ["理不尽な", "ささやかな", "甘い", "不自然な", "危険な", "頭の悪い"], ["喧嘩", "恋愛沙汰", "いたずら", "陰謀", "事故", "落し物"]], 'each', [], ($$46 = function(table){var self = $$46.$$s || this, $a, $b, dice_result = nil, dice_str = nil; - - - - if (table == null) { - table = nil; - }; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice_result = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - number['$<<'](dice_str); - return result['$<<'](table['$[]']($rb_minus(dice_result, 1)));}, $$46.$$s = self, $$46.$$arity = 1, $$46)); - return "" + (tableName) + "([" + (number.$join(",")) + "]):" + (result.$join(" ")); - }, $LogHorizon_getTroubleInAkibaStreetDiceCommandResult$45.$$arity = 1); - - Opal.def(self, '$getAbandonedChildDiceCommandResult', $LogHorizon_getAbandonedChildDiceCommandResult$47 = function $$getAbandonedChildDiceCommandResult(command) { - var $$48, $$49, $$50, $$51, $$52, $$53, $$54, self = this, tableName = nil, number = nil, result = nil; - - - if ($truthy(command['$===']("ABDC"))) { - } else { - return nil - }; - tableName = "廃棄児"; - number = []; - result = []; - $send([$send(["花の名前", "星の名前", "色の名前", "石の名前", "動物の名前", "番号"], 'map', [], ($$48 = function(e){var self = $$48.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus("名前:", e);}, $$48.$$s = self, $$48.$$arity = 1, $$48)), $send(["廃ビル", "道端", "居候", "木の上", "公園", "下水道"], 'map', [], ($$49 = function(e){var self = $$49.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus("住居:", e);}, $$49.$$s = self, $$49.$$arity = 1, $$49)), $send(["探し物", "料理", "歌", "商売", "手先が器用", "あざといポーズ"], 'map', [], ($$50 = function(e){var self = $$50.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus("特技:", e);}, $$50.$$s = self, $$50.$$arity = 1, $$50)), $send(["痩せている", "ちびっこ", "発育良好", "背が高い", "ぷにぷに", "ガチムチ"], 'map', [], ($$51 = function(e){var self = $$51.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus("体型:", e);}, $$51.$$s = self, $$51.$$arity = 1, $$51)), $send(["果物", "お肉", "お野菜", "お魚", "お菓子", "虫"], 'map', [], ($$52 = function(e){var self = $$52.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus("好きな食べ物:", e);}, $$52.$$s = self, $$52.$$arity = 1, $$52)), $send(["ぼく/わたし", "オイラ/アタシ", "俺/私", "拙者/わらわ", "自分の名前", "ミー"], 'map', [], ($$53 = function(e){var self = $$53.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus("一人称:", e);}, $$53.$$s = self, $$53.$$arity = 1, $$53))], 'each', [], ($$54 = function(table){var self = $$54.$$s || this, $a, $b, dice_result = nil, dice_str = nil; - - - - if (table == null) { - table = nil; - }; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice_result = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - number['$<<'](dice_str); - return result['$<<'](table['$[]']($rb_minus(dice_result, 1)));}, $$54.$$s = self, $$54.$$arity = 1, $$54)); - return "" + (tableName) + "([" + (number.$join(",")) + "]):" + (result.$join(" ")); - }, $LogHorizon_getAbandonedChildDiceCommandResult$47.$$arity = 1); - - Opal.def(self, '$getMusicalInstrumentTypeDiceCommandResult', $LogHorizon_getMusicalInstrumentTypeDiceCommandResult$55 = function $$getMusicalInstrumentTypeDiceCommandResult(command) { - var $a, $b, $c, self = this, type = nil, is_roll = nil, tableName = nil, type_name = nil, dice = nil, result = nil; - - - if ($truthy(/MII(\d?)/['$==='](command))) { - } else { - return nil - }; - $b = (function() {if ($truthy(($truthy($c = $$($nesting, 'Regexp').$last_match(1)) ? $$($nesting, 'Regexp').$last_match(1)['$!=']("") : $c))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), false] - } else { - return self.$roll(1, 6) - }; return nil; })(), $a = Opal.to_ary($b), (type = ($a[0] == null ? nil : $a[0])), (is_roll = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = $rb_lt(type, 1)) ? $a : $rb_lt(6, type)))) { - return nil}; - tableName = "楽器種別表"; - type_name = ["打楽器1", "鍵盤楽器", "弦楽器1", "弦楽器2", "管楽器1", "管楽器2"]['$[]']($rb_minus(type, 1)); - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - result = [["カスタネット", "マラカス", "シンバル", "トライアングル", "太鼓", "ドラム"], ["木琴", "鉄琴", "ハーモニウム", "ハープシコード", "ピアノ", "クラヴィコード"], ["ハープ", "リュート", "ギター", "バイオリン", "チェロ", "リラ"], ["琵琶", "和琴", "胡琴", "三味線", "シタール", "ダルシマー"], ["トランペット", "ホルン", "トロンボーン", "チューバ", "フルート", "クラリネット"], ["リコーダー", "オカリナ", "オーボエ", "ハーモニカ", "アコーディオン", "尺八"]]['$[]']($rb_minus(type, 1))['$[]']($rb_minus(dice, 1)); - return $rb_plus($rb_plus(tableName.$to_s(), (function() {if ($truthy(is_roll)) { - return "" + "(" + (type) + ")" - } else { - return "" - }; return nil; })()), "" + ":" + (type_name) + "(" + (dice) + "):" + (result)); - }, $LogHorizon_getMusicalInstrumentTypeDiceCommandResult$55.$$arity = 1); - - Opal.def(self, '$getEastalDiceCommandResult', $LogHorizon_getEastalDiceCommandResult$56 = function $$getEastalDiceCommandResult(command) { - var $a, $b, self = this, m = nil, rank = nil, is_choice = nil, modifyText = nil, modify = nil, is_fix_roll = nil, dice_value = nil, is_rank_enable = nil, tableName = nil, table = nil, number = nil, dice_str = nil, result = nil; - - - if ($truthy((m = /ESTL(\d*)([\+\-\d]*)(\$(\d+))?/.$match(command)))) { - } else { - return nil - }; - if ($truthy(($truthy($a = ($truthy($b = m['$[]'](1)['$empty?']()) ? m['$[]'](2)['$empty?']() : $b)) ? m['$[]'](3)['$nil?']() : $a))) { - return command}; - rank = m['$[]'](1).$to_i(); - is_choice = ($truthy($a = m['$[]'](1)['$empty?']()) ? $a : m['$[]'](3)['$nil?']()['$!']()); - modifyText = m['$[]'](2); - modify = self.$getValue(modifyText, 0); - is_fix_roll = m['$[]'](3)['$nil?']()['$!'](); - dice_value = m['$[]'](4); - is_rank_enable = ($truthy($a = is_choice['$!']()) ? $a : is_fix_roll); - $b = self.$getEastalExplorationResultTable(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b; - $b = (function() {if ($truthy(is_choice)) { - return [dice_value.$to_i(), dice_value] - } else { - return self.$roll(2, 6) - }; return nil; })(), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - number = $rb_plus(number, $rb_plus($rb_times(rank, (function() {if ($truthy(is_rank_enable)) { - return 5 - } else { - return 0 - }; return nil; })()), modify)); - number = [self.$getAdjustNumberMin(number, table), 162].$min(); - result = self.$get_table_by_number(number, table); - result = result.$chomp(); - return "" + (tableName) + "(" + (number) + ((function() {if ($truthy(dice_str)) { - return $rb_plus($rb_plus("[", dice_str), "]") - } else { - return "" - }; return nil; })()) + ")\n" + (result); - }, $LogHorizon_getEastalDiceCommandResult$56.$$arity = 1); - return (Opal.def(self, '$getEastalExplorationResultTable', $LogHorizon_getEastalExplorationResultTable$57 = function $$getEastalExplorationResultTable() { - var self = this, tableName = nil, table = nil; - - - tableName = "イースタル探索表"; - table = [[7, "" + "香りに誘われて:\n" + " 小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。\n" + " 奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。\n" + " 追われていた理由はこれだったらしい。\n"], [8, "" + "不幸な出会い:\n" + " 街道を歩いていると、横合いの茂みから〈小牙竜鬼〉の一団が飛び出してきた。\n" + " 突然のことでとても驚いたけど、向こうも〈冒険者〉がいるとは思っていなかったらしい。\n" + " 一瞬の気まずい沈黙を経て、なし崩し的に乱戦が始まった。\n" + " PCは全員[疲労:10]を受ける。\n"], [9, "" + "釣果はいかが?:\n" + " 〈大地人〉の村近くの川で釣りが盛んなようだ。\n" + " 挑戦するならば長靴の中に(2D*5)Gを見つけることができる。\n" + " この釣り場、ハズレなんじゃない?\n"], [10, "" + "近道だと思ったんだけど:\n" + " 「この雑木林を抜けた方が早いよ」なんて誰が言い出したのやら。\n" + " 近道に踏み込んだら、見事に道に迷ってしまった。\n" + " 半日を余計に消費してしまう。\n" + " なんか疲れた……。\n" + " PCは全員【因果力】1点を失う。\n"], [11, "" + "おすすめの名産品:\n" + " キミたちは〈大地人〉の村に出くわした。\n" + " 〈円卓会議〉と契約している農村で、〈冒険者〉にも好意的に接してくれる。\n" + " 素朴だけど手厚いもてなしが心にしみた。\n" + " 村の食堂でなにか食べるのなら10Gを支払い【因果力】に+1する。\n"], [12, "" + "思わぬ報酬:\n" + " 畑を開墾していた〈大地人〉農夫が、切り株を掘り起こせずに途方に暮れていた。\n" + " 手助けするならPCは全員[疲労:10]を受ける。\n" + " みんなで力を合わせて切り株を掘り起こすと、そこにはなんと「鉄の陣笠[コア素材](30G)」が埋まっていた!\n" + " キミたちは「鉄の陣笠」とお礼にもらった「お好みサンドイッチ(『LHZB1』P218)」2個を受け取る。\n"], [13, "" + "きりきり舞い:\n" + " 野原の向こう側でつむじ風が舞っている、と思ったらどんどん速度を上げてこっちに向かってきた!\n" + " これはもう小さな竜巻だ。\n" + " PCは全員「難易度:9」の[耐久判定]を行なう。\n" + " 失敗したPCは、風に耐えきれずにアイテムを吹き飛ばされる。\n" + " [消耗品]アイテムを1個失う。\n"], [14, "" + "小さな祝福:\n" + " 雑木林の中を進んでいくとキラキラする光が集まってくる。\n" + " PCのなかに〈森呪遣い〉もしくは〈召喚術師〉がいるのならば小さな植物の妖精たちが手を振っているのがわかる。\n" + " 自分たちに気づいたことに喜んだ妖精たちは〈森呪遣い〉と〈召喚術師〉にささやかな祝福をしてくれた。\n" + " 【因果力】1点を得る。\n"], [15, "" + "だいなしピクニック:\n" + " 林の中の広場でお弁当を広げて小休止。\n" + " モンスターの気配もなく、ちょっとしたピクニック気分……と思いきや、にわかに空がかき曇り、雷鳴とどろく大雨が降りだした!\n" + " キミたちはあわてて木陰に駆けこむ。\n" + " PCは全員1Dを振ること。\n" + " 3以下のPCは一番高価な[消耗品]アイテム1つを失う。\n"], [16, "" + "キャラバンクルーズ:\n" + " 林の木陰で休憩している〈第8商店街〉の商隊と出会った。\n" + " ギルドマスターのカラシン(『LHZB1』P351)みたいだ。\n" + " PCのうち希望者は気さくな彼とコネクションを取得することができる。\n" + " 関係は「友情」または「雇用関係」となる(PCが選択)。\n" + " このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。\n"], [17, "" + "花畑にご用心:\n" + " 花畑を渡る街道で〈暗殺蜜蜂〉の群れに出くわした。\n" + " 追い払いながら縄張りから撤退する。\n" + " PCは全員[疲労:10]を受けるが、彼らが落とした「黒いローヤルゼリー[換金](70G)」1つを得る。\n"], [18, "" + "おとりはまかせろ!:\n" + " キミたちは〈緑小鬼〉に襲われていた〈大地人〉の荷馬車を逃がすため、おとりと護衛に分かれて行動を開始した。\n" + " おとりをかって出るPCを1人、相談して決めること。\n" + " そのPCは[疲労:20]を受け【因果力】1点を失うが、他のPCたちと荷馬車は安全に撤退することができる。\n"], [19, "" + "住処にお宝?:\n" + " 〈フクロウ熊〉を撃退したキミたちは全員[疲労:10]を受ける。\n" + " もしかしたら近くに巣があるかもしれない。\n" + " 代表者1名は「難易度:11」の[知覚判定]を行なう。\n" + " この判定は[偵察]タグがついているように扱う。\n" + " 〔判定成功〕\n" + "  「壊れた武具[換金](90G)」を見つけた。\n" + " 〔判定失敗〕\n" + "  何も得られない。\n" + " 〔サブ職:狩人、辺境巡視〕\n" + "  判定に+2。\n"], [20, "" + "触らぬ狼に祟りなし:\n" + " 遠くに狼の群れを発見した。\n" + " まだこちらには気づいてないようだが、このまま進めば鉢合わせすることになるだろう。\n" + " 避けるのならPCの代表者1名は「難易度:10」の[解析判定]を行なうこと。\n" + " 〔判定成功〕\n" + "  遠回り成功。\n" + "  PCは全員[疲労:10]を受ける。\n" + " 〔判定失敗〕\n" + "  気づかれてしまった!\n" + "  撃退したものの、PCは全員[疲労:25]を受ける。\n" + " 〔サブ職:斥候、遊牧民〕\n" + "  判定に+2。\n"], [21, "" + "ベリー摘み競争:\n" + " 雑木林でベリーの茂みを見つけたキミたちは、誰が一番多く摘めるか競争を始めた。\n" + " PCは全員2Dを振ること。\n" + " 一番低い出目のPCは、一番出目が高いPCにコネクションを取得する。\n" + " 関係は「尊敬」か「ライバル」となる(PCが選択)。\n" + " このコネクションはアフタープレイで消滅するが、ログチケット:アザーゲット1枚を消費すれば維持してもよい。\n"], [22, "" + "村の形見:\n" + " 滅びた〈大地人〉の村が眼前に広がる。\n" + " せめてもの弔いに何かを持ち帰って役立てよう。\n" + " PCは【因果力】を任意の数だけ消費してもよい。\n" + " 各自消費した【因果力】と同数のダイスを振り、全員の出目を合計すること。\n" + " 3以上なら「赤熱の小爪[コア素材](50G)」1つを得る。\n" + " 8以上なら加えてさらに「小さな宝石箱[換金](70G)」1つを得る。\n" + " 13以上なら加えてさらに「ミニポーチ(『LHZB1』P217)」1つを得る。\n"], [23, "" + "ぬかるみの強行軍:\n" + " 折からの雨でひどく街道がぬかるんでいて、〈冒険者〉でも歩くには少々骨が折れる。\n" + " PCは全員「難易度:10」の[耐久判定]を行なう。\n" + " 〔判定成功〕\n" + "  黙々と足を進め、無事目的地に到着した。\n" + " 〔判定失敗〕\n" + "  疲れに加え少し足首をひねってしまったようだ。\n" + "  [疲労:20]を受ける。\n" + " 〔サブ職:辺境巡視、配達屋〕\n" + "  判定に+2。\n"], [24, "" + "ハニーハント:\n" + " 雑木林の中で、巨大蜂の巣を見つけた。\n" + " たっぷりのハチミツを手に入れるチャンスだ!\n" + " 挑戦するならば、PCの代表者1名は「難易度:10」の[操作判定]を行なう。\n" + " 〔判定成功〕\n" + "  PCたちは「黄金色のハチミツ[換金](120G)」を得る。\n" + "  -2(累積する、最大-10)を受ければもう一度チャレンジできる。\n" + " 〔判定失敗〕\n" + "  怒ったハチの群れに追いかけられPC全員は[疲労:10]を受ける。\n" + " 〔サブ職:採取人、農家〕\n" + "  判定に+2。\n"], [25, "" + "闇の群雲:\n" + " キミたちは〈闇精霊〉の「夜渡り」に遭遇する。\n" + " [暗視]状態、もしくは[魔法]プロップの影響を受けないPCは被害を受けない。\n" + " それ以外のPCは全員「難易度:10」の[抵抗判定]を行なう。\n" + " いまが夜なら(GM判断)「難易度:12」になる。\n" + " 〔判定失敗〕\n" + "  【因果力】1点を失う。\n" + " 〔サブ職:刻印呪師、魔法学者〕\n" + "  この判定に+2。\n"], [26, "" + "風のいたずら:\n" + " 金色に波打つ麦畑で、一際強い突風が吹いた。\n" + " PCは全員2Dを振ること。\n" + " 一番低い出目のPCは装備や性別に関係なく、シナリオ終了まで[ぱんちら]タグが与えられる。\n" + " このタグを持っているPCが何らかの判定でファンブルした時、特別にタグを[ぱんもろ]に変化させることでその判定を振り直してもよい。\n"], [27, "" + "古代の獣:\n" + " 荒野を探索中、なかば地面にうずもれた巨大生物の骨格を見つけた。\n" + " キミたちはなにか素材が取れないか採取を試みる。\n" + " 1Dを振ること(【因果力】1点で振り直してもよい)。\n" + " 5か6が出たPCは「とがった爪[コア素材](60G)」もしくは「巨大な肋骨[換金](80G)」のどちらかを選んで得る。\n"], [28, "" + "死者の窪地:\n" + " 丘陵地帯の窪地は不浄な死者がむらがっていた。\n" + " 風に揺れるのはすべて〈蠢く墓標〉だったのだ!\n" + " おびただしい数の〈動く骸骨〉が迫る中での撤退戦の末、キミたち全員は[疲労:20]を受ける。\n"], [29, "" + "足跡は語る:\n" + " 丘陵を行くキミたちはいくつもの足跡を発見した。\n" + " PCの代表者1名は[知識判定]を行なう。\n" + " 〔判定成功〕\n" + "  足跡から〈醜豚鬼〉の小部隊の存在を看破したキミたちは奇襲を仕掛けることができる。\n" + "  仕掛ければ成功して120Gを入手する。\n" + " 〔判定失敗もしくは奇襲しない〕\n" + "  足跡は意味不明で数が多すぎる。\n" + "  キミたちそっとその場を離れた。\n" + " 〔サブ職:学者、追跡者〕\n" + "  判定に+2。\n"], [30, "" + "キリングゾーン:\n" + " キミたちは悪辣な〈小牙竜鬼〉たちが仕掛けたトラップ地帯に入り込んでしまった。\n" + " 罠を解除しつつ抜け出すしかないようだ。\n" + " PCの代表者1名は「難易度:10」の[解除判定]を行なう。\n" + " 〔判定成功〕\n" + "  最低限の被害で脱出できた。\n" + "  PC全員は[疲労:10]を受ける。\n" + " 〔判定失敗〕\n" + "  いくつかのトラップにはまりPC全員は[疲労:30]を受ける。\n" + " 〔達成値:14〕\n" + "  罠を突破して逆襲してやった!\n" + "  100Gを得る。\n" + " 〔サブ職:機工師、罠師〕\n" + "  判定に+2。\n"], [31, "" + "果物天国:\n" + " 通りかかった果樹園で〈大地人〉の農夫に果物の収穫を手伝ってほしいと頼まれた。\n" + " 手伝うのならばPCは全員「難易度:10」の[解除判定]を行なう。\n" + " それぞれ難易度をいくつ上回ったかを記録し、その合計値が10以上ならば収穫は大成功だ。\n" + " 喜んだ農夫は「かご一杯の果物(シェフの気まぐれピザ相当。『LHZB1』P218)」x2個をキミたちに持たせてくれる。\n"], [32, "" + "岩陰からこんにちわ:\n" + " 岩陰から不意打ちを仕掛けてきた〈蜷局竜〉をなんとか撃退。\n" + " キミたちは戦利品として「風鳴りの鈴[コア素材](80G)」を手に入れたが、少なくない被害を受けた。\n" + " PC全員は1~6の数字2つを宣言し、代表者1名は1Dを振ること。\n" + " 出目と同じ数字を宣言したPCは[疲労:25]を受ける。\n"], [33, "" + "野火から逃げろ!:\n" + " 前方から焦げ臭い風が吹いてきた。\n" + " 野火だ!\n" + " 逃げようにも丘の合間を抜ける風が、炎を複雑に押し広げているようだ。\n" + " PCの代表者1名は「難易度:10」の[解析判定]を行なう。\n" + " 〔判定成功〕\n" + "  風と地形を読み切り、PCは損害を免れた。\n" + " 〔判定失敗〕\n" + "  何とか炎は免れたものの、思い切り煙を吸い込んでしまった。\n" + "  PCは全員[疲労:45]を受ける。\n" + " 〔サブ職:生還者、星詠み〕\n" + "  判定に+2。\n"], [34, "" + "穴があったら探検だ:\n" + " 丘の中腹に小規模なダンジョンを発見した。\n" + " 探索する場合は1日を消費してPC全員は1Dを振る。\n" + " 1人でも6が出た場合、戦利品として「小さな宝箱[換金](60G)」を3個手に入れた。\n" + " ホクホクだ。\n" + " そうでない場合、隅々まで探索したが全員が[疲労:20]を受けたのみだった。\n" + " 誰かが探ったあとみたい。\n" + " 〔サブ職:蒐集家、設計士〕\n" + "  2Dを振ってもよい。\n"], [35, "" + "一寸先は穴:\n" + " 一面の田園地帯が広がっている。\n" + " 景色に気をとられていたキミたちは、足元にポッカリ開いた堆肥の穴に気づかない!\n" + " PCは全員1Dを振ること。\n" + " 出目が1~2ならば見事に穴にはまり込んでしまった!\n" + " しばらく臭いが取れそうにない。\n" + " 被害者はコネクション1つ(被害者が選択)をして、シナリオ終了時まで関係を「くさい……」に変更する。\n"], [36, "" + "木漏れ日と水辺:\n" + " 森の中できれいな泉を見つけた。\n" + " 希望者はここで水浴びをすることも可能だ。\n" + " 旅の汚れを落として気分もリフレッシュ、爽快な気分で冒険を続けられそうだ。\n" + " 探索表のイベントで何らかの判定を行なう場合、その判定に+1Dする。\n" + " この効果はPCたち全員で共有し一度効果を受けるかシーン終了時まで持続する。\n"], [37, "" + "黒く光る宝物:\n" + " 果樹園の木の上に巨大な鳥の巣を発見した。\n" + " 巣の主が留守のうちに内部を調べてみると、散乱した羽毛や獣の骨の陰から「幻想の黒真珠[コア素材](100G)」を発見する。\n" + " いいのかな?\n" + " 持っていくなら入手してもよい。\n"], [38, "" + "猪突猛進:\n" + " 起伏の激しい丘陵を進んでいると、前方から〈猛猪〉の群れが激しい地響きを伴って迫ってくる!\n" + " PC全員は「難易度:11」の[運動判定]を行なう。\n" + " 一人でも失敗すれば全員が判定失敗として扱おう。\n" + " 〔判定成功〕\n" + "  キミたちは一目散に逃げきった。\n" + " 〔判定失敗〕\n" + "  逃げた先には、今度ははぐれ〈巨石兵士〉だ!?\n" + "  延々逃げ回ってPC全員はそれぞれ[疲労:1D*10]を受ける。\n" + " 〔サブ職:軽業師、傭兵〕\n" + "  全員の判定に+1。\n"], [39, "" + "へんてこ葡萄は蜜の味?:\n" + " 日当たりのよい斜面に野性のブドウがたわわに実っている。\n" + " 採取するPC全員は[知識判定]を行なう。\n" + " 〔判定成功〕\n" + "  「貴腐ブドウ[換金](110G)」を手に入れる。\n" + " 〔クリティカル〕\n" + "  さらに「常眠りの種子[コア素材](100G)」を得る。\n" + " 〔サブ職:農家、採取人〕\n" + "  判定に+1D。\n"], [40, "" + "ここはどこ?:\n" + " 灌木の生い茂る丘陵地帯、視界は悪いし歩きにくいことこの上ない。\n" + " どっちに向かっているかすらおぼつかない。\n" + " [飛行]状態のPCが1人もいない場合、回り道を強いられPC全員は【因果力】1点失うか、1日の時間をロスする。\n"], [41, "" + "狩りの邪魔:\n" + " 澄んだ湧水を汲もうとしたキミたちに驚いて、立派な牡鹿が森の中に逃げていった。\n" + " すると近くの草むらから〈大地人〉の狩人がカンカンに怒って飛び出してきた。\n" + " どうやら彼の獲物を追い払ってしまったらしい。\n" + " PCは全員2Dを振ること。\n" + " 一番低い出目のPCはこのNPCとコネクションを取得する。\n" + " 関係は「恐縮」となる。\n" + " このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。\n"], [42, "" + "激闘の報酬:\n" + " キミたちは廃墟に住み着いた〈暗蛇竜〉を退治した。\n" + " 遺跡が崩落するほど激しい戦いだったが、首尾は上々だ。\n" + " PCは【因果力】を任意の数だけ消費してもよい。\n" + " 各自消費した【因果力】と同数のダイスを振り、全員の出目を合計すること。\n" + " ダイスの合計値が3以上ならPCたちは「ねじくれた角[コア素材](120G)」1つを得る。\n" + " 8以上でさらに300Gを得る。\n" + " 13以上でさらに「暗竜牙【魔触媒7】(60G)」5つを得る。\n"], [43, "" + "竜巻に追われて:\n" + " 少しずつ風の強くなる中、キミたちが荒廃した高速道路を旅していると、背後から竜巻が追ってきていることに気付く。\n" + " 勝てる相手じゃないから逃げださなければ!\n" + " PCは全員「難易度:12」の[運動判定]を行なう。\n" + " PCが[飛行]状態の場合は+2を得る。\n" + " 〔判定成功〕\n" + "  PCは[疲労:20]を受ける。\n" + "  なんとか逃げ切れたようだ。\n" + " 〔判定失敗〕\n" + "  PCは[疲労:50]を受け、【因果力】1点も失う。\n" + " 〔サブ職:軽業師、生還者〕\n" + "  判定に+2。\n"], [44, "" + "毒を浄化せよ:\n" + " キミたちは〈緑小鬼〉の集団が泉に毒を投げ込んでいるのを目撃する。\n" + " 村を滅ぼそうとする陰謀か!?\n" + " 戦うのならば[疲労:20]を受ける。\n" + " BSを解除できるアイテムか特技があるのならば、泉を清浄化しておこう……。\n"], [45, "" + "させるか!:\n" + " 道中、襲いかかってきた〈時計仕掛の蠍〉をキミたちは排除したはずだった。\n" + " とどめを刺したはずの一体が一瞬だけ息を吹き返し橙色の光線を放つ!\n" + " PCの代表者1名は[疲労:60]を受けなくてはならない。\n" + " その際に受ける[疲労]の強度を[軽減(光輝)]の強度ぶん減らしてもよい。\n"], [46, "" + "ない、ない、あれがない!:\n" + " 森を歩いているとふと荷物整理を思い出した。\n" + " PC全員は2Dを振ること。\n" + " 一番低い出目のPCは忘れ物に気づいた。\n" + " 何を忘れたかはキミが決定してよい。\n" + " 慌てたキミは仲間に相談する。\n" + " キミが望むなら、仲間にコネクションを得てもよい。\n" + " 関係は「相棒」か「恩人」となる。\n" + " このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。\n"], [47, "" + "川底に眠る:\n" + " キミたちが川辺を歩いていると、川底で何かがキラリと光った。\n" + " なにかお宝があるかもしれない。\n" + " PCはここで半日過ごし[疲労:20]を受けるたびに1人1Dを振っても良い。\n" + " 〔1D:1~2〕\n" + "  「水晶の砂[換金](20G)」を入手する。\n" + " 〔1D:3~5〕\n" + "  「水晶の塊[換金](40G)」を入手する。\n" + " 〔1D:6〕\n" + "  「蒼い鉱石[コア素材](140G)」を入手する。\n"], [48, "" + "沼より出ずるもの:\n" + " のどかな沼沢地帯を歩いてたキミたちは、沼からはい出てきた〈破裂の粘体〉に囲まれてしまっていた。\n" + " この包囲網から逃れるには協力が必要だ。\n" + " 全員1Dを振る(【因果力】1点消費でさらに+1Dしてもよい)。\n" + " 全員のダイスの合計が13以上なら、無事突破できる。\n" + " 12以下の場合PCは全員[疲労:40]を受ける。\n"], [49, "" + "山の恵み:\n" + " 豊かな沢の周りで山の幸を見つけよう!\n" + " PCは全員「難易度:12」の[知識判定]を行なう。\n" + " 〔判定成功〕\n" + "  「大きな川魚(トポト親方のコロッケ相当。『LHZB1』P218)」を得る。\n" + " 〔判定失敗〕\n" + "  「食べられるかもしれない水草[換金](1G)」2個を得る。\n" + " 〔サブ職:料理人、食闘士〕\n" + "  判定に+2。\n"], [50, "" + "幻の先に:\n" + " のどかな沼沢地を進んでいると、突如毒の沼にはまり込んでしまった。\n" + " 〈幻霊〉の幻覚による誘い込みの罠だったらしい!\n" + " 強度10以上の[軽減(邪毒もしくは精神)]を持たないPCは[疲労:50]を受ける。\n"], [51, "" + "オークと一緒:\n" + " キミたちが崩れかけた高速道路を歩いていると、向こうから両手に骨付き肉を持った〈醜豚鬼〉の一団が踊りながら迫ってきた!\n" + " フレッシュミートゥ!\n" + " PCは全員2Dを振ること。\n" + " 一番低い出目のPCの足元が崩れて〈醜豚鬼〉もろとも転落、そのPCには[尊い犠牲]タグが与えられる。\n" + " このタグはシナリオ終了まで解除されない。\n"], [52, "" + "物言わぬ番人:\n" + " 森を横切る小川のほとりに、苔むした瑠璃色の機械人形が壊れてうずくまっている。\n" + " この機械人形の名前はなんだろう?\n" + " 「難易度:14」の[知識判定]に成功し、1人でもかすれた文字が読めるなら「七色の透明捻子[コア素材](180G)」1つを得る。\n"], [53, "" + "鉄砲水!:\n" + " 谷間で突然の大雨に見舞われる。\n" + " キミたちは鉄砲水の予兆に気付くだろうか?\n" + " PCの代表者1名は「難易度:14」の[知覚判定]を行なう。\n" + " 〔判定成功〕\n" + "  予兆を察知して早々に避難したキミたちの足元を濁流が駆け抜けてゆく。\n" + "  危ないところだった。\n" + " 〔判定失敗〕\n" + "  地響きが聞こえてきたときはもう手遅れだった。\n" + "  PCは全員[疲労:50]を受ける。\n" + " 〔サブ職:探検家、生還者〕\n" + "  判定に+2。\n"], [54, "" + "廃橋の戦い:\n" + " 高速道路の廃墟を進んでいると、〈鋼尾翼竜〉の群れに襲われた!\n" + " キミたちは勝利を納め、265Gを得るが、不安定な足場のため[疲労:30]を受ける。\n" + " [飛行]状態や[天然]もしくは[地形]プロップへの耐性があるPCは疲労は受けない。\n"], [55, "" + "転落注意:\n" + " 谷あいの道を歩いていると、突然足元が崩れ始めた!\n" + " [飛行]状態でない、最も【行動力】が低いPCは崩落に巻き込まれて斜面を滑り落ちてしまう。\n" + " ダメージは大したことなかったけど、ついてない……。\n" + " 滑落したPCは【因果力】1点を失うこと。\n"], [56, "" + "今夜はごちそう?:\n" + " 葦の茂る沼沢地で〈大地人〉の兄妹が罠を仕掛けている。\n" + " 鵞鳥を夕飯にしたいらしい。\n" + " 1日かけて猟を手伝う場合、GMは兄弟にかわって2Dを振ること(サブ職が狩人、罠師のPCがいれば+1Dだ)。\n" + " 8以上ならば、狩りは成功。\n" + " 兄妹の家で料理を食べてPCたちは[疲労]をすべて回復する。\n" + " 7以下ならば腹ペコだ。\n" + " 兄妹の家で「タイミング:レストタイム」の行動が可能。\n"], [57, "" + "獅子の魔獣:\n" + " キミたちは手負いの〈人面獅子〉を廃墟の住処まで追いつめ、ついに討ち取った。\n" + " この偉業でPCは全員【因果力】1点を得る。\n" + " またPCの代表者1名は「難易度:15」の[知覚判定]を行なう。\n" + " 判定に成功したなら、〈人面獅子〉の住処から「金色の毛玉[コア素材](220G)」を得る。\n" + " 〔サブ職:狩人、追跡者〕\n" + "  判定に+2。\n"], [58, "" + "森の奇襲:\n" + " キミたちが木漏れ日にきらめくせせらぎで旅の疲れを癒していたところに〈醜豚鬼の遊撃兵〉が奇襲をしかけてきた!\n" + " とっさに武器を取りなんとか〈醜豚鬼の遊撃兵〉を蹴散らしたが、損害は決して小さくはなかった。\n" + " PCは全員[疲労:40]を受ける。\n"], [59, "" + "お肉入手のチャンス:\n" + " キミたちは水飲み場にやってきた。\n" + " 足跡からすればここには動物が来そうな予感。\n" + " 食料ゲットのチャンスだ!\n" + " 半日のあいだ隠れて狙撃をするのならば狩りが可能だ。\n" + " [射撃攻撃]可能な武器を持つ代表者1名は「難易度:15」の[命中判定]を行なう。\n" + " 〔判定成功〕\n" + "  PCたちは大きなイノシシを倒した。\n" + "  「魅惑のボタン肉(定番カレー相当。『LHZB1』P218)3個を得る。\n" + " 〔判定失敗〕\n" + "  何も得られない。\n" + " 〔サブ職:狩人、砲撃士〕\n" + "  判定に+2。\n"], [60, "" + "迷惑な怪魚:\n" + " 大河を渡っているキミたちの後ろから巨大なモンスターが襲い掛かる。\n" + " ボートは転覆してしまうし、泳いで逃げるしかない。\n" + " [水棲]タグを持たないPCは慣れない水中戦闘に巻き込まれて[疲労:60]を受ける。\n"], [61, "" + "曙光:\n" + " 山の稜線から差し込む朝日が、草の葉に溜まった朝露に反射する。\n" + " 小鳥たちはさえずり、冷え込んだ夜の空気が追い払われていくのがわかる。\n" + " 今朝のごはん当番は誰だっけ?\n" + " 立候補したPC1名(メニューを発表すること!)には【因果力】1点が与えられる。\n" + " さあ、今日も一日頑張ろう!\n"], [62, "" + "吸血の森:\n" + " 〈吸血ヒル〉の群生地である深い森の中を探索するキミたち。\n" + " PCは全員「難易度:13」の[耐久判定]を行なう。\n" + " 成功した人数がパーティーの3名以上いれば、ヒルを振り払いながらキミたちは探索をなしとげる。\n" + " 「錆びた聖印[コア素材](240G)」と2D*60Gを得る。\n" + " そうでなければキミたちは探索もそこそこに退却し、全員[疲労:20]を受ける。\n"], [63, "" + "落雷注意:\n" + " キミたちの頭上で雷雲が不気味に湧き上がり、雷鳴もゴロゴロと鳴り響いている。\n" + " そして不幸なことに、さえぎる物のない高原において雷はキミたちに狙いを定めたようだ!\n" + " [高位保護]を持たないPCは[疲労:80]を受ける。\n" + " 〔サブ職:探検家、辺境巡視〕\n" + "  [疲労:80]ではなく[疲労:60]で済む。\n"], [64, "" + "ギブアンドテイク:\n" + " 街道沿いに残る廃墟でキャンプする〈冒険者〉グループと遭遇した。\n" + " どうやら彼らには回復職のメンバーが欠けているようだ。\n" + " 〈回復職〉PCが治療を申し出ると、彼らは治療のお礼に「定番カレー(『LHZB1』P218)」1個を分けてくれる。\n" + " もし特技喪失を受けるならさらに1個入手してよい。\n"], [65, "" + "悪魔の一族1:\n" + " 大きな切り株に腰かけて一休み。\n" + " 降り注ぐ木漏れ日が気持ちいい……と思ってたらカバンがない!?\n" + " 少し離れたところでクロマミ族の連中がカバンをひっくり返してる!\n" + " PCは全員《異常探知》をすること。\n" + " 最も達成値の低いPCは[消耗品]アイテムを2個失う。\n" + " 〔ファンブル〕\n" + "  さらに[圧迫:2]を受ける。\n" + " 〔サブ職:交易商人、配達屋〕\n" + "  判定に+2。\n"], [66, "" + "旅は道連れ:\n" + " キミたちは森の入り口で立ち往生している。\n" + " ヤーマという行商人の馬車を発見した。\n" + " 護衛がいないため森を通り抜けるのが心配らしい。\n" + " もし一日の護衛を申し出るならヤーマからは大変感謝され、謝礼として300G渡される。\n" + " また、PCが望むならばヤーマとのコネクションを取得してもよい。\n" + " 関係は「取引」となる。\n" + " このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。\n"], [67, "" + "勝負好きの〈妖精巨人〉:\n" + " 高原の環状列石のそばを通りかかったキミたちに、〈妖精巨人〉が力比べを挑んできた。\n" + " 勝負を受けるなら、PCの代表者が「難易度:14」の[耐久判定]、[知覚判定]、[知識判定]を1回ずつ行なう(それぞれの判定は別のPCが行なってもよい)。\n" + " 2回以上成功すれば勝負に勝ち、「神鉄の組紐[コア素材](300G)」を入手する。\n" + " 3回成功できたならさらにPC全員が【因果力】1点を入手する。\n" + " 3回とも失敗した場合はPC全員が[疲労:35]を受ける。\n"], [68, "" + "不気味に響く音:\n" + " 薄暗い森で〈魔狂蝙蝠〉の襲撃を受けた。\n" + " 撃退はしたが強力な超音波攻撃で頭がガンガンする……。\n" + " PCは全員「難易度:16」の[耐久判定]を行なう。\n" + " 〔判定成功〕\n" + "  【因果力】1点を失う。\n" + " 〔判定失敗〕\n" + "  気分が悪くなってきた。\n" + "  【因果力】2点を失う。\n" + " 〔自身:高位保護〕\n" + "  【因果力】を失わなくてよい。\n"], [69, "" + "手負いの獣にご用心:\n" + " 森の小道を往くキミたちに、木々をへし折る重い音と地響きが近づいてくる。\n" + " なんと、手負いの〈魔熊〉が半狂乱となって飛び込んできた!\n" + " キミたちはなんとか〈魔熊〉の奇襲を撃退し、「傷ついた毛皮[換金](350G)」を手に入れたが被害も大きい。\n" + " 「戦士職」もしくは「武器攻撃職」のPCは[疲労:45]を得る。\n"], [70, "" + "闇の連絡通路:\n" + " キミたちは遺跡と化したパーキングエリアを繋ぐトンネルを前にしている。\n" + " ここを通れば随分と近道ができるが、トンネルは闇に閉ざされ中をうかがい知ることができない。\n" + " キミたちはこのトンネルに向かってもよいし、迂回してもよい。\n" + " トンネルを通るならば[暗視]を持たないPC全員は特技喪失を受ける。\n" + " 迂回するならばPC全員は[疲労:20]を受けて、もう一度この表を振らなければならない。\n"], [71, "" + "星月夜にて:\n" + " 高原を旅するキミたちは満天の星の下で野営を行なう。\n" + " 1Dを振って一番高い出目のPCが野営当番だ。\n" + " 任意のPCひとりを見張りの相棒に指名し、今回の旅について話し合ってみよう(実時間で5分程度)。\n" + " あなたと相棒はお互いにコネクションを取るか、「関係変化表(『LHZB2』P59)」で1回ロールしてもよい。\n"], [72, "" + "最後の御奉公:\n" + " 多数のメイド型ゴーレムが眠るかつてのパーキングエリアを思わせる遺跡で、キミたちはかろうじて機能を保っていた一体を発見した。\n" + " 彼女はキミたちにきしむ腕で「刻印の銀板[コア素材](340G)」を託すと、静かにその活動を停止した。\n"], [73, "" + "冷たい霧に抱かれて:\n" + " 灌木の生い茂る斜面を登っていると、急に濃霧がたちこめてきた。\n" + " 霧はキミたちの体温を急速に奪っていく。\n" + " 強度20以上の[軽減(冷気)]を持たないPCは[疲労:40]を受ける。\n"], [74, "" + "鹿肉パーティーだ!:\n" + " 早朝の高原で、〈剣角鹿〉の大きな群れを発見した。\n" + " 半日かけて狩りを行なうならば「新鮮な鹿肉[換金]45G」を2D+5個入手できる。\n" + " 〔サブ職:料理人〕\n" + "  入手した「新鮮な鹿肉」を1個消費するごとにPC1人の[疲労]を-20してもよい。\n"], [75, "" + "手痛い報復:\n" + " 清々しい風が吹き抜ける林を歩いていると、うっかり〈歩行毒樹〉の根を踏んで反撃を食らってしまった。\n" + " 大したダメージは受けなかったけど、傷口がひどく腫れてとにかく痛い!\n" + " PCは全員2Dを振ること。\n" + " 一番低い出目のPCは【因果力】1点を失う。\n"], [76, "" + "かぐわしい?におい:\n" + " キミたちは森でとある食虫植物の群生地に飛び込んでしまった。\n" + " 大したダメージこそ受けなかったが、虫を引き寄せるべとべとが装備にこびりついて離れない。\n" + " これは困った!\n" + " PCは全員2Dを振ること。\n" + " 一番低い出目のPCは[べとべと]タグが与えられる。\n" + " このタグはシナリオ終了まで解除されない。\n"], [77, "" + "誰も知らない花園:\n" + " 険しい斜面を登り切った先には、一面の花畑が広がっていた。\n" + " その鮮やかさにキミたちは見ほれてしまう。\n" + " PCは全員1Dを振ること。\n" + " 〔1D:1~4〕\n" + "  「きれいな花[換金](5G)」を好きなだけ摘んでもよい。\n" + " 〔1D:5~6〕\n" + "  「うごめく花弁[コア素材](380G)」を手に入れる。\n"], [78, "" + "夜明け前の攻防:\n" + " 夜明け前の薄暗がりから〈怨霊〉の大群が襲いかかってきた。\n" + " 夜明けまで持ちこたえねば!\n" + " 「回復職」と「魔法攻撃職」のPCは激戦のあまり【因果力】2点を失う。\n"], [79, "" + "何が出るかな……?:\n" + " 瓦礫に半ばうずもれた遺跡でアルヴのものと思われる機械を発見した。\n" + " コインを入れるとランダムに品物が出てくるらしい。\n" + " 挑戦したいPCは100Gを消費して、1Dを振ること。\n" + " なお、この機械は合計4回挑戦したところで完全に壊れてしまう。\n" + " 〔1D:1〕\n" + "  ハズレ!\n" + "  何も出てこないぞ。\n" + " 〔1D:2〕\n" + "  「鉄身の軟膏(初級)(『LHZB1』P219)」を入手。\n" + " 〔1D:3~4〕\n" + "  「回復薬(中級)(『LHZB2』P146)」を入手。\n" + " 〔1D:5〕\n" + "  「幻翼の宝珠(中級)(『LHZB2』P159)」を入手。\n" + " 〔1D:6〕\n" + "  「保護の巻物(中級)(『LHZB2』P156)」を入手。\n"], [80, "" + "茨の森:\n" + " キミたちは毒の棘を持つ灌木が生い茂る森に迷い込んだ。\n" + " 茎や葉の棘が露出した肌を容赦なく引っ掻いていく。\n" + " [中鎧]を装備したPCは[疲労:30]を受ける。\n" + " [軽鎧]もしくは鎧を装備していないPCは[疲労:30]と特技喪失を受ける。\n"], [81, "" + "朝まで歌合戦:\n" + " 浜辺を行くキミたちの耳にきれいな歌声が聞こえてきた。\n" + " 歌声の主を探すと、なんと岩場で〈人魚〉と〈翼持つ歌姫〉が歌の勝負をしている!?\n" + " ギャラリーに気づいた彼女たちはさらに熱心に歌い始めた。\n" + " キミたちはそそくさと立ち去ってもいいし、彼女らが満足するまで歌を聴いていてもいい。\n" + " そうした場合(一応美少女?の)祝福で【因果力】1点を得るが、[疲労:20]も受けてしまう。\n"], [82, "" + "ロードランナー:\n" + " 狭い山道の向こうから、すごい勢いで〈時計仕掛の駝鳥〉が駆けてくる!\n" + " PC代表者は「難易度:17」を目標に[回避判定]をしてもよい(そのまま受け止めてもよい)。\n" + " 失敗した(受け止めた)場合3D*20点の物理ダメージを受けてしまうが、キミが[戦闘不能]にならなければ〈時計仕掛の駝鳥〉も砕けて「真鋼のワイヤー[コア素材](440G)」を得る。\n" + " 回避に成功するか[戦闘不能]になった場合、〈時計仕掛の駝鳥〉は走り去る。\n"], [83, "" + "森を舐める猛火:\n" + " 山道を歩いていると、風に乗って焦げ臭いにおいが漂ってきた。\n" + " 風上を見れば真っ赤な炎の舌が斜面を駆け上ってくるではないか!\n" + " [高位保護]を持たないPCは炎と煙に巻かれ[疲労:80]を受ける。\n"], [84, "" + "岩石林に咲くバラ:\n" + " キミたちは石の花が咲くという、石化ガスのたなびく石柱の林を訪れた。\n" + " 探検するなら[高位保護]を持つPCにかぎり【因果力】を任意の数だけ消費してもよい。\n" + " 各自消費した【因果力】と同数のダイスを振り、全員の出目を合計すること。\n" + " ダイスの合計値が3以上ならPCたちは「雲母のバラ[換金](480G)」1つを得る。\n" + " 8以上でさらに「雲母のバラ[換金](480G)」3つを得る。\n" + " 13以上でさらに「紅玉のバラ[換金](2000G)」1つを得る。\n"], [85, "" + "迫りくる海蛇竜:\n" + " 浜辺で漁師たちが逃げまどっている。\n" + " 〈海蛇竜〉が波打ち際で噛みつこうとしているのだ。\n" + " 救助するならヘイトを集めてかばうしかない。\n" + " 「戦士職」のPCは【因果力】2点を失う。\n"], [86, "" + "浜辺で小休止:\n" + " 周囲の砂浜には椰子の木がたくさん生えている。\n" + " 木陰に入って椰子の実ジュースを飲んでいると、なんだかちょっぴりリゾート気分だ。\n" + " 十分に休憩したら、冒険を再開しよう!\n" + " この探索表の出来事で次に何らかの判定をする場合ロールに+1D。\n" + " この効果はひとりでも全員でも次の判定のみ、一度効果を受けるかシーン終了時まで持続する。\n"], [87, "" + "わんぱくイルカと〈冒険者〉:\n" + " 目の前に広がる海で、何匹ものイルカが水面を蹴立てて遊んでいる。\n" + " キミたちに気づくと岸辺まで近づいてきた。\n" + " 人懐っこい彼らはどうやらキミたちに遊んでほしいらしい。\n" + " もしも一緒に遊んでやるならPC全員は[疲労:40]を受けるが、遊んでくれたお礼にイルカたちが背中に乗せて送って行ってくれる。\n" + " 次の探索表ロールを1回振りなおしてもよい。\n" + " 〔自身:水棲〕\n" + "  受ける[疲労]の強度は20になる。\n"], [88, "" + "夢のリゾート計画:\n" + " 海岸線を見渡せる崖の上に、打ち捨てられた白いコテージを発見した。\n" + " 風雨にさらされ傷んでいるが、修理すればまだまだ使えそうだ。\n" + " 機会があったらキミたちの別荘にしてみるのもよいかもしれない。\n" + " キミたちはこの建物の場所を忘れないよう、しっかりと地図に書き込んだ。\n"], [89, "" + "助けをよぶ声:\n" + " 深い森の中を歩いていると、どこからともなく助けを呼ぶささやき声が聞こえてきた。\n" + " PC全員は[知覚判定]を行なうこと。\n" + " 最も達成値の高いPCは、石の下から芽吹いたばかりの小さな双葉と、生まれたばかりの〈樹の精霊〉を発見する。\n" + " キミが石をどけてやると精霊は大いに感謝し、キミの[疲労]の強度を-60してくれる。\n" + " 〔クリティカル〕\n" + "  精霊はさらに「芽吹きの甘露(苺のふんわりカップケーキ(『LHZB2』P145)相当)」をプレゼントしてくれた。\n" + " 〔サブ職:農家、薔薇園の姫君〕\n" + "  判定を2回振って好きなほうを選べる。\n"], [90, "" + "草むらかき分けて:\n" + " キミたちが進む深い森の中は、背丈ほどもありそうな下生えが生い茂っている。\n" + " 徒歩では視界も通らず、草を刈り、道を切り開きながらじりじりと進むしかない……。\n" + " PCは全員[疲労:60]を受ける。\n" + " 〔自身:騎乗、飛行〕\n" + "  [疲労]を受けなくてもよい。\n"], [91, "" + "もうかりまっか?:\n" + " 海沿いの道で〈大地人〉の行商人と出会った。\n" + " せっかくだから何か買って、顔を繋いでおくのもいいかもしれない。\n" + " PCのうち希望者はログチケット:アザーゲット1枚を消費してこの行商人とコネクションを取得してもよい。\n" + " 関係は「ビジネス」か「敬意」となる(PCが選択)。\n" + " またコネクションとは無関係に一般的なアイテムを売買できる。\n"], [92, "" + "世捨て人の工房:\n" + " 寂れた高原を旅するキミたちは古い庵を発見する。\n" + " 中は無人だったが、なんと小さな魔法工房がしつらえられていた!\n" + " 【因果力】を1点消費したPCは自身が取得している《ファーマシスト》、《スクライブスクロール》、《インビュー》のうち1つを即座に実行してもよい。\n"], [93, "" + "電光石火!?:\n" + " 山の天気は不安定だ。\n" + " 先ほどまでの晴天が嘘のように激しい雷雨が吹き荒れている。\n" + " うわっ、すぐ近くに落ちた!?\n" + " PCは全員「難易度:15」の[回避判定]を行なう。\n" + " 強度20以上の[軽減(電撃)]を持つPCはこの判定に自動成功してよい。\n" + " 〔判定成功〕\n" + "  回避成功!\n" + "  危うく直撃するところだった。\n" + " 〔判定失敗〕\n" + "  避ける間もなく雷に打たれてしまい[疲労:100]を受ける。\n"], [94, "" + "砂の中の金貨:\n" + " キミたちは苦戦の末、砂浜で遭遇した〈巨大蟻地獄〉を退治した。\n" + " 早速巣穴の中を探索だ!\n" + " PCの代表者1名は「難易度:18」の[知覚判定]を行なう。\n" + " この判定は[偵察]タグがついているかのように扱う。\n" + " 〔判定成功〕\n" + "  キミたちは2D*120Gを手に入れた。\n" + "  代表者のサブ職が〈採掘師〉か〈賭博師〉ならば、2Dの出目に+1すること。\n" + " 〔判定失敗〕\n" + "  何も得られない。\n"], [95, "" + "ローリングストーン:\n" + " 針葉樹に覆われた高山の道を歩くキミたちの耳に「カラカラ」と不吉な音がする。\n" + " 視線を上げれば落石に気が付く!\n" + " 全員1Dを振ること(【因果力】1点で+1Dしてもよい)。\n" + " 〔1D:1~3〕\n" + "  大きな石がキミに直撃!\n" + "  死ぬほど痛い上に【因果力】2点を失う。\n" + " 〔1D:4~〕\n" + "  危うく難を逃れた。\n"], [96, "" + "イースタルの夕日:\n" + " 真っ赤な夕日が金色に輝く波間に溶けていく。\n" + " 潮騒だけが響く中、この世界でも変わらぬ姿を見せる夕日の中でキミたちは話し合う。\n" + " PCは全員2Dを振ること。\n" + " 一番低い出目のPCは、一番高い出目のPCにコネクションを取得する。\n" + " 関係は「親愛」か「友情」となる(PCが選択)。\n" + " このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。\n"], [97, "" + "大きな樹の迷宮:\n" + " 大森林の中央にそびえる巨大樹の根元に薄暗い穴を発見。\n" + " 探るのならば、代表者1名が「難易度:16」の[知覚判定]を行なう。\n" + " 〔判定成功〕\n" + "  複雑に絡み合った通路の奥で「賢者の石[コア素材](620G)」と2D*100Gを得る。\n" + " 〔判定失敗〕\n" + "  迷ってしまった!\n" + "  1日経過してしまう上に[疲労:50]を受ける。\n" + " 〔サブ職:探検家、採掘師〕\n" + "  判定に+2。\n"], [98, "" + "前門の鬼、後門の竜:\n" + " 深い山懐に抱かれた廃神殿には〈陽炎悪鬼〉の大群が住み着いていた。\n" + " 多勢に無勢、キミたちは速やかに撤退を開始する。\n" + " PCの代表者1名は「難易度:18」の[運動判定]を行なう。\n" + " この判定は[偵察]タグがついているかのように扱う。\n" + " 〔判定成功〕\n" + "  追跡を振り切る。\n" + "  損害はない。\n" + " 〔判定失敗〕\n" + "  〈陽炎悪鬼〉を振り切ったと思ったら、前から〈翡翠竜〉が!\n" + "  PCは全員[疲労:60]を受け【因果力】1点を失う。\n" + " 〔サブ職:生還者、追跡者〕\n" + "  判定に+2。\n"], [99, "" + "古代の工房:\n" + " 山奥で古代の工房を発見した。\n" + " 【因果力】1点を消費したPCは、自身が取得している《クロースメイク》、《ウッドクラフト》、《アーマーフォージ》、《ファーマシスト》を即座に1回実行してもよい。\n" + " アルヴの工房は性能抜群だ。\n"], [100, "" + "揺れるつり橋:\n" + " 目の前には霧深い谷と、朽ちて落ちかけのつり橋が揺れている。\n" + " どうにか向こう岸に渡らねばならない。\n" + " PCは全員「難易度:18」の[運動判定]を行なう。\n" + " 〔判定成功〕\n" + "  無事につり橋を渡りきることができた。\n" + " 〔判定失敗〕\n" + "  足を滑らせてしまった!\n" + "  落下こそ免れたが、渡りきるのにひどく苦労してしまった。\n" + "  [疲労:100]を受ける。\n" + " 〔自身:飛行〕\n" + "  判定は自動成功。\n" + " 〔サブ職:軽業師、船乗り〕\n" + "  判定に+2。\n"], [101, "" + "真っ白なキミ:\n" + " キミたちは深い雪山を進む。\n" + " 周囲の木々に降り積もった雪が、風にあおられ頭上から降り注いできた!\n" + " PCは全員2Dを振ること。\n" + " 一番低い出目のPCは不運にも頭から雪まみれになってしまい、[雪だるマン]タグが与えられる。\n" + " このタグはシナリオ終了まで解除されない。\n"], [102, "" + "打ち捨てられた砦:\n" + " 風化した砦の廃墟をキミたちは発見した。\n" + " 内部を探索したい場合1日を必要とする。\n" + " 探索した場合不思議な魔方陣を発見し、PC全員の[疲労]の強度が-50される。\n" + " また、「夜明け色の軟玉[コア素材](680G)」を得る。\n"], [103, "" + "白き魔物:\n" + " 天候が急変し、ブリザードのような雪と風が吹き荒れる。\n" + " 身体は凍りつきそうに冷え、視界は真っ白で何も見えない。\n" + " このままでは身動きが取れなくなってしまう。\n" + " 強度20以上の[軽減(冷気)]と[暗視]の両方を持たないPCは[疲労:100]を受ける。\n"], [104, "" + "強襲の雪獣:\n" + " 〈雪トロール〉の群れが襲撃してきた!\n" + " PCの代表者1名は「難易度:18」の[知識判定]を行なう。\n" + " 〔判定成功〕\n" + "  キミの指示で敵の弱点を突き、危なげなく勝利を収めた!\n" + "  【因果力】3点を得る。\n" + " 〔判定失敗〕\n" + "  敵の情報がつかめず、苦戦を強いられた。\n" + "  PCは全員[疲労:60]を受ける。\n" + " 〔サブ職:学者、軍師〕\n" + "  判定に+2。\n"], [105, "" + "久しぶりのお客様:\n" + " 野営場所を探すキミたちは、廃屋の前で〈家事妖精〉がぽつりと佇んでいるのを見つけた。\n" + " キミたちがここで一夜を過ごすことにするなら、彼女は久しぶりに訪れたお客様を精一杯もてなしてくれる。\n" + " この時キミたちは[食料]アイテムを提供してもよい。\n" + " 翌朝には彼女の姿は消えているが、[食料]アイテムを提供したPCの手にはいつの間にかキラキラ光る小石が握られている。\n" + " 【因果力】1点を得ること。\n"], [106, "" + "〈大地人〉の特訓:\n" + " 夜になって一夜の宿と思い立ち寄った〈大地人〉の小さな砦でキミたちは手厚い歓待を受けた。\n" + " キミたちは、出発を1日遅らせて兵士たちの訓練を手伝ってもよい。\n" + " 訓練を買って出るPCは、特技喪失する代わりに【因果力】3点を得る。\n" + " とても厳しい訓練を立派にやり遂げた兵士たちの歓声を背に、キミたちは再び旅路につく。\n"], [107, "" + "鳥妖の巣窟:\n" + " 廃ビルに巣くう〈女面妖鳥〉がキミたちに対して集中攻撃を仕掛けてきたが、果敢に戦い見事に撃破。\n" + " 戦利品として「人面鳥の羽根[コア素材](740G)」を手に入れた。\n" + " PC全員は1~6の好きな数字を申告すること。\n" + " 代表者1名が1Dを振って、申告と同じ数字が出たPCは、戦闘のダメージで[疲労:80]を得る。\n" + " それ以外のPCは【因果力】1点を得る。\n"], [108, "" + "野営地の攻防:\n" + " 野営地に押し寄せたアンデッド〈反魂悪党〉が思いのほか手ごわかった。\n" + " 奴らは闇に紛れて不意打ちを仕掛けてきたのだ。\n" + " PCは全員1Dを振ること。\n" + " 〔1D:1~4〕\n" + "  PCは[疲労:100]を受ける。\n" + " 〔1D:5以上〕\n" + "  PCは[疲労:35]を受ける。\n" + " 〔自身:暗視〕\n" + "  出目に+2。\n"], [109, "" + "今夜は天ぷらだ:\n" + " 幅5mほどの名も知れぬ川をみつけた。\n" + " 通り過ぎてもいいのだが、釣りをしてもよい。\n" + " 釣りをする場合半日の時間を失うが「若葉アユ[換金](100G)」を1D匹釣り上げる。\n"], [110, "" + "吹雪の行軍:\n" + " 山の天気は変わりやすい。\n" + " さっきまで青空が見えていたのに、今や地吹雪で足元すら見えないありさまだ。\n" + " [高位保護]を持たないPCは[疲労:100]を受ける。\n"], [111, "" + "ムーンライトフィーバー:\n" + " キミたちは道中で打ち棄てられた廃城で一晩を明かす。\n" + " ふと気が付くと月明りの下で輪になって妖精たちが踊っているようだ。\n" + " つられて踊りの輪に加わる場合、参加者は「難易度:16」の[運動判定]もしくは[操作判定]を行なう。\n" + " 参加者に〈吟遊詩人〉がいるならば全員の判定に+2。\n" + " 〔判定成功〕\n" + "  妖精たちはキミに大喝采と「回復薬(上級)(『LHZB2』P146)」1つを贈る。\n" + " 〔判定失敗〕\n" + "  妖精たちは納得がいかない様子だ。\n" + "  キミは夜が明けるまで踊り、演奏を続けさせられた。\n" + "  [疲労:50]を受ける。\n"], [112, "" + "幽霊屋敷へようこそ!:\n" + " 一夜の屋根にと求めた山中の古い屋敷はホラームード。\n" + " 全員2Dを振る。\n" + " 一番出目が小さかった人は夜中にトイレに行きたくなり、仕方なく暗闇の中へ……。\n" + " 残ったPCの中で希望者は、トイレに行ったPCを驚かしてもよい。\n" + " その場合トイレに行ったPCから関係「仇敵」のコネクションを得る。\n" + " 驚かさずに付き添うのならば「関係変化表(『LHZB2』P59)」で1回ロールしてもよい。\n"], [113, "" + "突然の雪崩!:\n" + " キミたちが穏やかな天候の下、雪深い山道を進んでいたその時、地鳴りと共に突然の大雪崩が襲いかかってきた!\n" + " PCの代表者1名は雪崩の方向を見極めるため「難易度:16」の[解析判定]を行なう。\n" + " 〔判定成功〕\n" + "  [飛行]状態のPCは無事に逃げおおせたが、それ以外のPCは[疲労:30]を受ける。\n" + " 〔判定失敗〕\n" + "  PC全員は[疲労:70]を受け特技喪失する。\n" + " 〔サブ職:生還者、辺境巡視〕\n" + "  判定に+2。\n"], [114, "" + "ノーストリリアの遺産:\n" + " 街道沿いに遺跡らしい地下への入り口を発見する。\n" + " 内部を探索する場合は半日を消費する。\n" + " 探索した場合、通路の奥にはアルヴとの戦争当時のものらしき回復の魔方陣が残っていた。\n" + " 〈猫人族〉、〈狼牙族〉、〈狐尾族〉、〈法儀族〉のPCは、魔方陣の効果で[軽減(光輝、邪毒、精神):30]を得る。\n" + " この軽減はOSとして扱いシナリオ終了時まで持続する。\n"], [115, "" + "雪原の罠:\n" + " 雪原を進むキミたちの足元が突如崩れ始める。\n" + " クレバスだ!?\n" + " 最も【行動力】が低いPCが不運にも逃げ遅れ、クレバスの底に飲み込まれかける。\n" + " クレバスに落ちて[消耗品]タグを持つアイテムすべてを失うか、踏みとどまり【因果力】2点を失うか選ぶこと。\n"], [116, "" + "珍味、食べる?:\n" + " キミたちは旅の途中で立ち寄った城砦で、任期を終えた兵士たちの宴にでくわした。\n" + " そこでひときわ異彩を放っていたのが……魚の塩漬けだ!\n" + " とにかく臭い!\n" + " だが彼らはとても美味しそうに平らげている。\n" + " 勇気を出して口にしたPCは、[疲労]の強度が-100される代わりに、セッション終了時まで[超臭い]タグを得る。\n"], [117, "" + "かつての星の里:\n" + " 街道から少し離れた山腹に、キミたちは天文台の廃墟を発見した。\n" + " 建物はかなり傷んではいるが、きちんと手を入れてやれば十分住むことはできそうだ。\n" + " ひょっとしたら、再び星を見ることができるかも知れない!\n" + " しかし残念ながら、今ここでできることは一夜の雨露をしのぐことぐらいだろう。\n"], [118, "" + "追いすがる吹雪:\n" + " 深い山中で〈氷雪巨人〉に遭遇してしまい、一時間近くも追い回されることになった。\n" + " 吹雪のブレスがキミたちを何度も襲う。\n" + " 強度30以上の[軽減(冷気)]を持たないPCは[疲労:80]と特技喪失を受ける。\n"], [119, "" + "鎧袖一触!:\n" + " 山道で〈大地人〉の隊商を襲う〈灰斑犬鬼〉の群れを発見した。\n" + " 数こそ多かったが歴戦の〈冒険者〉であるキミたちの敵ではない!\n" + " 残らず退治してやると、隊商の商人たちはたいそう喜んでいた。\n" + " 900Gの謝礼をもらった。\n"], [120, "" + "止まったら死ぬ!?:\n" + " 周囲が突然の地響きに包まれ、斜面の上に積もった雪が崩落を起こした。\n" + " 雪崩だ!\n" + " 難を逃れるため、PCは全員「難易度:17」の[運動判定]を行なう。\n" + " 〔判定失敗〕\n" + "  逃げ遅れたキミはあっという間に雪の奔流に飲み込まれてしまった。\n" + "  抜け出すために[疲労:120]を受ける。\n" + " 〔自身:騎乗〕\n" + "  判定に+1Dする。\n" + " 〔サブ職:探検家、辺境巡視〕\n" + "  判定に+2。\n"], [121, "" + "〈冒険者〉の川流れ:\n" + " キミたちは目の前に広がる氷混じりの大河を渡る。\n" + " PCは全員2Dを振ること。\n" + " 一番低い出目のPCは渡河の最中に足を滑らせ流されてしまうが、間一髪で他のPC(流されたPCが指定してよい)に救われる。\n" + " 流されたPCは助けてくれた相手に対するコネクションを取得すること。\n" + " 関係は「恩」か「友情」(助けたほうが選んでよい)となる。\n" + " このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。\n"], [122, "" + "サルベージ:\n" + " 川底に何か光るものが見えた気がする。\n" + " PCの代表者1名は「難易度:17」の[知覚判定]を行なう。\n" + " 〔判定成功〕\n" + "  川底の砂に半ば埋もれた小さな宝石箱を発見!\n" + "  「ブリザードダイヤ[コア素材](980G)」と「色とりどりの宝石[換金](300G)」x5を得る。\n" + " 〔判定失敗〕\n" + "  何も見つけられなかった。\n" + " 〔サブ職:海賊、漁師〕\n" + "  判定に+2。\n"], [123, "" + "ガスが濃くなってきたな:\n" + " 渓谷を進んでいると周囲に毒々しい煙が立ち込めてきた。\n" + " これは……火山性の毒ガスだ!?\n" + " 強度30以上の[軽減(邪毒)]を持たないPCは[疲労:100]を受ける。\n" + " 〔サブ職:薬師、毒使い〕\n" + "  素早くガスの正体を見抜き、被害を受けなかった。\n"], [124, "" + "樹海の白狐:\n" + " 樹海の奥深くを歩いていると突然狐に似た精霊が現れた。\n" + " 面白い話をするか、[食料]アイテムを与えると、代わりに「エメラルドの首飾り[換金](500G)」1D個をプレゼントされる。\n" + " 〔サブ職:ちんどん屋、料理人〕\n" + "  さらに「金のあぶらげ[換金](1000G)」をプレゼントされる。\n"], [125, "" + "吊るされた〈冒険者〉:\n" + " 薄暗い密林でキミたちは足元に違和感を覚える。\n" + " しかし時すでに遅く、うごめくツタによって逆さ吊りにされ、所持品をあたりにぶちまけてしまった!\n" + " PC全員は[運動判定]を行なうこと。\n" + " この時[暗視]状態でないPCは、この判定に-1Dされる。\n" + " 最も達成値の低いPCは[消耗品]アイテムを2個失い、[圧迫:1]を受ける。\n" + " 〔ファンブル〕\n" + "  さらに[圧迫:1]を受ける。\n" + " 〔サブ職:斥候、罠師〕\n" + "  この判定に+1D。\n"], [126, "" + "儀式の生贄:\n" + " 樹海を進むキミたちは〈蜥蜴人〉の集落に出くわし、運悪く生贄にされかけた〈狐耳族〉の少女を救出する。\n" + " 信心深い少女はPCの代表者(PCが相談して選択)を「イキガミさま」と崇拝する。\n" + " 代表PCは[神さま]タグを得る。\n" + " このタグはシナリオ終了まで解除されない。\n"], [127, "" + "大自然のおこぼれ:\n" + " キミたちは密林で〈魔熊〉が〈地獄蜂〉の巣を襲い、ゆうゆうと食事をしているところに出くわした。\n" + " 姿を隠すためにPCは全員「難易度:21」の[運動判定]を行なう。\n" + " 〔全員が判定成功〕\n" + "  「地獄蜂の毒針[コア素材](1060G)」を得る。\n" + " 〔1人でも判定失敗〕\n" + "  〈魔熊〉に気付かれて追いかけ回された。\n" + "  何も入手できない。\n"], [128, "" + "息詰まる戦い:\n" + " 火山が近いのだろうか?\n" + " ガスがもくもくと立ち込める渓谷を進むキミたちは、襲ってくるモンスターを倒しながら先を急ぐ。\n" + " PCは全員1Dを振ること。\n" + " 出目が1~2の場合、戦闘中に毒ガスを吸い込んでしまい[疲労:80]を受ける。\n"], [129, "" + "妖精のキッチン:\n" + " 樹海を進むキミたちの目の前に、突如ファンシーな外見の建物が姿を現した。\n" + " 中からはいい匂いが漂ってくる……\n" + " 窓から覗き込んでみると、そこは〈厨房妖精〉が料理を作る妖精食堂だった!\n" + " もし、中に入ってみるなら「ニンゲンのお客様」と歓迎され、ひとりにつき「魔触媒」を1個消費することで不思議な妖精のお菓子を食べることができる。\n" + " それまでに受けていた[疲労]はすべて解除される。\n"], [130, "" + "天然の迷宮:\n" + " キミたちは樹海を進む。\n" + " 深く複雑な緑の迷宮は方向感覚を狂わせる!\n" + " PCは全員「難易度:18」の[知覚判定]を行なう。\n" + " 2人以上判定に失敗した場合、方角を見失ってしまう!\n" + " 全員[疲労:80]を受ける。\n" + " 〔ファンブル〕\n" + "  シナリオ終了まで[方向音痴]タグを得る。\n" + " 〔サブ職:探検家、地図屋〕\n" + "  判定に+2。\n"], [131, "" + "謎の〈古来種〉:\n" + " 樹海のはるか奥でキミたちは正体不明の〈古来種〉と出会った。\n" + " 彼女はとてもとても退屈しており、PC(何人でもよい)は今までの冒険のエピソードを、実時間で5分以内にまとめて語ってもよい。\n" + " その場合、彼女はたいそう喜び褒美として「万年楓の小枝[魔触媒30][譲渡不可](820G)」を授ける。\n" + " 望むPCは一時的なコネクションを取得してもよい。\n" + " 関係は「友情」か「親愛」となる。\n" + " このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。\n"], [132, "" + "モンスター退治の後は:\n" + " キミたちは激しい戦闘の末、火口にほど近い谷間に巣食う〈一眼巨人〉の一団を退治した。\n" + " PCの代表者1名は「CR*5+2D」を振る。\n" + " このロールは財宝表であるかのように特技やアイテムの効果を受けてよい。\n" + " 130以上ならばキミたちは立派な宝箱を発見した!\n" + " 「極上の玉鋼[換金](500G)」が収められていた。\n" + " 140以上ならばさらに「氷不死鳥の羽根[コア素材](1160G)」を発見する。\n"], [133, "" + "襲いくる水流:\n" + " 上流で大雨が降ったのか、大河の水は氾濫し、濁流となってキミたちに襲い掛かってきた!\n" + " PCは全員「難易度:18」の[耐久判定]を行なう。\n" + " 〔自身:[水棲]or[飛行]〕\n" + "  判定に自動成功してよい。\n" + " 〔判定失敗〕\n" + "  水流に大きく流されてしまい[疲労:80]と[圧迫:1]を受ける。\n"], [134, "" + "たまには鉱夫もいいよね:\n" + " 火山に連なる渓谷は、良質の鉱床が露出しており、採掘にはもってこいだ。\n" + " この場所で1日を費やすならば、つるはしやハンマーを振るい、それぞれ「血色鉱石[換金](80G)」*1D個を得る。\n" + " 〔サブ職:採掘師、採取人〕\n" + "  入手個数に+2してよい。\n"], [135, "" + "バッドドリップ!?:\n" + " 足元も見えない深い樹林を切り開いて進むキミたちは、うっかりカラフルな毒蛇の尻尾を踏みつけてしまった!\n" + " PCは全員2Dを振ること。\n" + " 一番低い出目のPCは怒った蛇に噛み付かれてしまう。\n" + " 毒が回って頭がクラクラしてきた。\n" + " 【因果力】2点を失う。\n"], [136, "" + "大冒険の舞台:\n" + " 高台から密林を見下ろすと、極彩色の鳥が群れを成して眼下を横切っていくのが見えた。\n" + " この雄大な自然は、キミたちの挑戦を待ち受けている。\n" + " さあ、冒険を続けようじゃないか!\n" + " この探索表の出来事で次に何らかの判定をする場合ロールに+1D。\n" + " この効果はひとりでも全員でも次の判定のみ、一度効果を受けるかシーン終了時まで持続する。\n"], [137, "" + "氷河の源:\n" + " キミたちは巨大な氷河を遡るうちに、氷の中に閉じ込められた魔法の輝きを見つける。\n" + " [火炎]タグのついた武器、もしくは魔法攻撃を持つPCがいるのならば運試しに1Dを振ること(1人1回まで)。\n" + " 1~4なら「太古の氷[換金](100G)」を得るが、5以上なら「永久氷河の核[コア素材](1240G)」を得る。\n"], [138, "" + "捉えがたき強敵:\n" + " 火山から吹き出す白煙に紛れて〈煙霧精霊〉の群れが忍び寄る。\n" + " 戦いは乱戦から始まり、キミたちの勝利で終わったものの、実に厳しい戦いだった。\n" + " PC全員は【因果力】1点を失う。\n" + " さらにPCは全員1Dを振ること。\n" + " 強度30以上の[軽減(邪毒)]を持つPCは出目に+2。\n" + " 〔1D:1~4〕\n" + "  PCは特技喪失する。\n" + " 〔1D:5以上〕\n" + "  特に損害はない。\n"], [139, "" + "小さな親切大きな宝石:\n" + " 樹海の草木に埋もれた古い祭壇を見つけた。\n" + " 祭壇を掃除して、お供えをしてもよい。\n" + " お供えにしてささげたアイテムの価格合計が300G以上なら、どこからともなく\n" + " 「そ、そんな高価なものをささげないで!」\n" + " という言葉が聞こえてきて、頭の上から「大粒のルビー[換金](1200G)」が降ってくる。\n"], [140, "" + "密林の魔女:\n" + " キミたちは密林の奥で不思議な小屋を発見した。\n" + " するとドアがひとりでに開き、\n" + " 「何をグズグズしてるんだい!水汲みに薪割りかまどの掃除、やることは山積みだよ!」\n" + " としゃがれた老婆の怒声が飛び出してくる。\n" + " なんて尊大な!\n" + " しかし素直に従うならば、[疲労:300]を作業したPCで自由に分配すること。\n" + " その後老婆はPCが所持するアイテム1つに、マジックグレード(1D/2)のプレフィックスド効果(任意)を付与してくれる。\n" + " 〔サブ職:メイド、エルダーメイド〕\n" + "  各PCが受ける[疲労]の強度を-10する。\n"], [141, "" + "黒剣のお墨付き:\n" + " 山上湖に巣くった〈火竜〉と戦う〈黒剣騎士団〉をキミたちは発見した。\n" + " 彼らに加勢してモンスターとの戦闘に参加してもよい。\n" + " 参加する場合半日を消費するが、希望者は「やるじゃねえか!」と感心した団長のアイザックとのコネクションを得る。\n" + " 関係は「友情」となる。\n" + " このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。\n"], [142, "" + "アレだけは苦手なんだよね……。:\n" + " 野営の明かりはいろんなことを思い起こさせる。\n" + " PC全員は苦手なエネミー(ゴキブリ、人面魚、幽霊、ムカデなどなど)や現象を話そう。\n" + " 全員自分を再確認して[弱点(告白した対象からの攻撃):20]を得る。\n" + " これはOSとして扱いシナリオ終了時まで持続する。\n"], [143, "" + "悪意の嵐:\n" + " 太古の戦場で突然の嵐に見舞われた。\n" + " 暴風、落雷、大粒の雹と雨、そして怨嗟のうめき声。\n" + " PCの代表者1名は「難易度:22」の[解析判定]を行なう。\n" + " この判定は[偵察]タグがついているかのように扱う。\n" + " 〔判定成功〕\n" + "  避難場所を見つけた。\n" + "  PCは全員[疲労:40]を受ける。\n" + " 〔判定失敗〕\n" + "  避難場所が見つからない。\n" + "  怨嗟に蝕まれPCは全員[疲労:100]と特技喪失を受ける。\n"], [144, "" + "仕上げは魔触媒:\n" + " 岩陰に作りかけの魔方陣を発見した。\n" + " 魔力を足してやれば力を発揮しそうだ。\n" + " 希望者は自分のCR以上のランクを持つ「魔触媒」1つをささげること。\n" + " ささげた希望者は、自身の「タイミング:メジャーアクション」の特技のSRを+1できる(最大SRは超えない)。\n" + " この効果はOSとして扱いシナリオ終了時まで持続する。\n"], [145, "" + "沈む!沈む!?:\n" + " じめじめとぬかるんだ、陰気な湿地帯を進むキミたちだが、突然ひざまで泥に埋まってしまう。\n" + " しまった、底なし沼だ!?\n" + " [飛行]状態ではないPCは【因果力】1点を失う。\n" + " [重鎧]もしくは[中鎧]を装備しているPCはさらに【因果力】1点を失う。\n"], [146, "" + "あばれる恐竜:\n" + " シダの生い茂る沼地で突然二足歩行の恐竜の群れが現れる。\n" + " 逃げずに調教を試みるPCは「難易度:27」の[交渉判定]を行なう。\n" + " この時[疲労:20]を受けるごとに+1のボーナスを得られる(最大+4まで)。\n" + " 〔判定成功〕\n" + "  「剣二足竜の角笛(『LHZB2』P161)」を得る。\n" + " 〔判定失敗〕\n" + "  恐竜たちは去っていく。\n"], [147, "" + "一夜の勝負:\n" + " キミたちが野営をしていると、タキシード姿の青白い〈亡霊〉が姿を現した。\n" + " 身構えるキミたちに〈亡霊〉はダイスで賭けをしようと持ちかけてくる。\n" + " もしも勝負を受けるなら代表者は【因果力】1点を支払い奇数か偶数を指定すること。\n" + " そののちGMは2Dを振ること。\n" + " 的中したならば「財宝表:金銭」を1回ロールしてもよい。\n" + " 4回勝負を行なうと〈亡霊〉は満足したのか朝日の中に消えていく。\n" + " 勝負を受けず、〈亡霊〉を排除するならばPC全員は[疲労:100]を受ける。\n"], [148, "" + "不浄なる戦場:\n" + " キミたちはアルヴの怨念が満ちると伝えられる古戦場で、呪われた〈骸骨巨人〉と激しい遭遇戦を繰り広げた。\n" + " 戦いにはなんとか勝利し「無骨な白骨[換金](400G)」を1D個手に入れたが、かなりの消耗を強いられることになってしまう。\n" + " PCは全員[疲労:120]と特技喪失を受ける。\n"], [149, "" + "飢えた〈魔狂鼠〉:\n" + " キミたちは黒い濁流のような、恐ろしい数の〈魔狂鼠〉の群れに遭遇した。\n" + " [食料]タグを持つアイテムすべてを投げ捨てて必死で逃げれば彼らを避けることができる。\n" + " 食料を守るためには戦うしかない。\n" + " その場合は[疲労:120]を受け、さらに【因果力】1点を失う。\n"], [150, "" + "怨念の森:\n" + " 陰鬱な森がキミたちに牙を剥いた。\n" + " 足元の腐葉土は瘴気を放つ泥濘へと変じ、ぬめるような霧が魂魄を削り取ってゆく。\n" + " [軽減(邪毒)]もしくは[高位保護]を持たないPCは【因果力】3点を失う。\n"], [151, "" + "お憑かれ様:\n" + " アンデッドのうろつく古戦場で、キミたちは不注意から小さな祠を倒してしまった。\n" + " PCは全員2Dを振ること。\n" + " 一番低い出目のPCは猛烈な寒気とともに[亡霊憑き]タグを得る。\n" + " このタグはシナリオ終了まで解除されず、タグを持つPCは判定でファンブルをするたびに[疲労:20]を受ける。\n"], [152, "" + "夜間飛行:\n" + " キミたちは湿地帯で野営することになった。\n" + " PCは全員2Dを振ること。\n" + " 一番高い出目のPCが見張りをしていると、月明かりの下、小さな赤いクモの子供たちが何百匹も風に乗って飛んでいく、幻想的な光景を目にした。\n" + " [疲労]が-30される。\n" + " また「煉獄クモの燃糸[コア素材](1540G)」を入手する。\n"], [153, "" + "沸き立つ沼:\n" + " 硫黄の臭いが立ち込める泥沼が突如沸騰し始めた!\n" + " 毒ガスと灼熱の泥がキミたちに襲い掛かる。\n" + " [高位保護]もしくは[天然]プロップの影響を受けないPC以外は1Dを振る。\n" + " この時【因果力】1点を支払って1Dではなく2Dを振ってもよい。\n" + " 出目の合計が2以下のPCは[戦闘不能]となる。\n" + " 3~5ならば[疲労:100]を受ける。\n" + " 6以上なら被害はない。\n"], [154, "" + "ハイパードロップタイム!:\n" + " ひょんなことからキミたちは大量のエネミーに追い回され、苦戦の末全滅させた。\n" + " PCは【因果力】を任意の数だけ消費してもよい。\n" + " 各自消費した【因果力】と同数のダイスを振り、全員の出目を合計すること。\n" + " ダイスの合計値が3以上ならPCたちは1500Gを得る。\n" + " 8以上でさらに「古代のメダル[コア素材](1540G)」と「魔凝結[魔触媒29](770G)」2つを得る。\n" + " 13以上でさらに「ダイヤの原石[換金](2300G)」1つを得る。\n"], [155, "" + "心霊スポット?:\n" + " 静かに水を湛えた湖のそばを通った時、急な悪寒に襲われた。\n" + " 湖面に目をやると、水面下にひしめく亡者の群れと目が合ってしまった。\n" + " 呪詛の視線がキミたちを捉える。\n" + " PCは全員1Dを振ること。\n" + " [高位保護]を持つPCは出目に+2。\n" + " 〔1D:1~3〕\n" + "  ごっそり気力を削られる。\n" + "  【因果力】2点を失う。\n" + " 〔1D:4以上〕\n" + "  視線に力を込めて睨み返す。\n" + "  やっぱ気合いだな。\n"], [156, "" + "武人の誉れ:\n" + " 荒野の只中、数多の折れた武器や朽ちた鎧でできた玉座に、古めかしい甲冑をまとったアルヴの亡霊が座している。\n" + " 彼はキミたちに「勝者には名誉を、敗者には死を」と告げ、一騎打ちを申し込んできた。\n" + " 断るならば、彼の姿は玉座と共に掻き消える。\n" + " PCの代表者1名は「難易度25」の[耐久判定]を行なう。\n" + " 判定に失敗した場合[疲労:300]を受ける。\n" + " 判定後、判定したPCが[戦闘不能]状態でなければ、彼は「人斬りのギガントエストック[M2]([人間]に対しダメージ+40。『LHZB2』P136&P165)」を残し、光の粒子となって天に昇る。\n"], [157, "" + "見定める視線:\n" + " 旅の道中で、キミたちは何度もモンスターの襲撃を受けた。\n" + " 熟練の冒険者であるキミたちは危なげなくそれらを撃破し、合計で2D*200Gの戦利品を得た。\n" + " しかし、その様子を敵意に満ちた視線がずっと監視していたことには気づかなかったようだ。\n" + " このシナリオのクライマックスにおいて、GMは【因果力】(PC人数*2)点ぶんのGM用EXパワーを追加で使用できる。\n"], [158, "" + "突然の闇夜:\n" + " 沼に潜む〈蛙竜〉に出会ったキミたちは、フォッグブレスで突然の暗黒に突き落とされる。\n" + " PCは全員1Dを振ること。\n" + " [水棲]、[飛行]、[暗視]を持っているのならば1つにつき出目に+1を得られる。\n" + " 〔1D:1~4〕\n" + "  逃亡中に焼け付くような毒液を受けて[疲労:120]を受けてしまう。\n" + " 〔1D:5~〕\n" + "  光を閉ざす霧の中を逃走して[疲労:60]を受ける。\n"], [159, "" + "幻の金鉱:\n" + " キミたちは瘴気を漂わせる金鉱を見つけた。\n" + " この金鉱に潜って金を探したいPCは2Dを振ること。\n" + " 出た出目がいままでPCたち全員でこの金鉱を探った数と等しいか小さければ「金鉱石[換金]700G」を得る。\n" + " 出目が大きい場合、PCたち全員は[疲労:80]を受けて気絶し丸一日が経過する。\n" + " 目が覚めた時、金鉱は消えている。\n"], [160, "" + "幻惑草の群生地:\n" + " 粘つくような湿気の原生林の中で、甘い香りを放つ花畑にでくわした。\n" + " PCは全員「難易度:20」の[耐久判定]を行なう。\n" + " 強度30以上の[軽減(精神)]を持つPCは判定に+1D。\n" + " 〔判定成功〕\n" + "  PCは意識をしっかり保って花畑を抜ける。\n" + " 〔判定失敗〕\n" + "  PCは幻覚を見て仲間のひとり(失敗したPCが選択)に斬りかかり、その仲間に[疲労:100]を与えてしまう。\n" + "  この効果は失敗したPC以外であれば《かばう》で代わりに受けることができる。\n" + "  また失敗したPCは特技喪失を受ける。\n"], [161, "" + "硫黄の谷間:\n" + " 黄褐色の霧が立ちこめる荒々しい谷間にたどり着く。\n" + " キミたちは呼吸を我慢するようにしてこの危険な谷をくぐり抜ける。\n" + " PCは全員1Dを振ること。\n" + " 1が出たPCは濁った水たまりに動物の死体を見つけて気持ちが悪くなってしまい、シナリオ終了時まで[弱点(精神):20](OS扱い)を得る。\n"], [162, "" + "火竜との戦い:\n" + " 火炎をまとい大空を支配する恐ろしい火竜との遭遇戦となった。\n" + " PCは全員1Dを振る。\n" + " 自発的に特技喪失をしてもよく、その場合追加で+1Dしてもよい。\n" + " ダイスの合計値が(PC人数*4+2)以上ならば勝利して「赤色魔力ダイオード[コア素材](1640G)」を得る。\n" + " 未満であった場合はPCは全員【因果力】1点を失い[疲労:50]を受ける。\n"]]; - return [tableName, table]; - }, $LogHorizon_getEastalExplorationResultTable$57.$$arity = 0), nil) && 'getEastalExplorationResultTable'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/LogHorizon_Korean.js b/src/assets/dicebot/LogHorizon_Korean.js deleted file mode 100644 index 89fa26b3e..000000000 --- a/src/assets/dicebot/LogHorizon_Korean.js +++ /dev/null @@ -1,720 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range; - - Opal.add_stubs(['$setPrefixes', '$analyzeDiceCommandResultMethod', '$===', '$to_i', '$last_match', '$getValue', '$roll', '$sort', '$collect', '$split', '$+', '$nil?', '$isCritical', '$isFamble', '$getJudgeResultString', '$>=', '$empty?', '$parren_killer', '$size', '$select', '$==', '$>', '$length', '$!=', '$!', '$getPhysicalConsumptionResultTables', '$getEnergyConsumptionResultTables', '$getGoodsConsumptionResultTables', '$getCashConsumptionResultTables', '$getExplosionSpecialConsumptionResultTables', '$getCurseSpecialConsumptionResultTables', '$getTableByRank', '$getAdjustNumber', '$get_table_by_number', '$floor', '$/', '$-', '$max', '$min', '$[]', '$getAdjustNumberMin', '$getAdjustNumberMax', '$getTableMinimum', '$first', '$last', '$match', '$getCashTresureResultTable', '$getMagicTresureResultTable', '$getItemTresureResultTable', '$getHeroineTresureResultTable', '$getGoblinTresureResultTable', '$*', '$<', '$getHiroineTresureResultString', '$getOtherTresureResultString', '$map', '$<=', '$get_table_by_d66', '$each', '$<<', '$join', '$to_s', '$=~']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'LogHorizon_Korean'); - - var $nesting = [self].concat($parent_nesting), $LogHorizon_Korean_initialize$1, $LogHorizon_Korean_rollDiceCommand$2, $LogHorizon_Korean_getCheckRollDiceCommandResult$3, $LogHorizon_Korean_getJudgeResultString$5, $LogHorizon_Korean_getValue$6, $LogHorizon_Korean_isCritical$7, $LogHorizon_Korean_isFamble$9, $LogHorizon_Korean_getConsumptionDiceCommandResult$11, $LogHorizon_Korean_getPhysicalConsumptionResultTables$12, $LogHorizon_Korean_getEnergyConsumptionResultTables$13, $LogHorizon_Korean_getGoodsConsumptionResultTables$14, $LogHorizon_Korean_getCashConsumptionResultTables$15, $LogHorizon_Korean_getExplosionSpecialConsumptionResultTables$16, $LogHorizon_Korean_getCurseSpecialConsumptionResultTables$17, $LogHorizon_Korean_getTableByRank$18, $LogHorizon_Korean_getAdjustNumber$19, $LogHorizon_Korean_getAdjustNumberMin$20, $LogHorizon_Korean_getTableMinimum$21, $LogHorizon_Korean_getAdjustNumberMax$22, $LogHorizon_Korean_getTresureDiceCommandResult$23, $LogHorizon_Korean_getHiroineTresureResultString$24, $LogHorizon_Korean_getOtherTresureResultString$26, $LogHorizon_Korean_getCashTresureResultTable$27, $LogHorizon_Korean_getMagicTresureResultTable$28, $LogHorizon_Korean_getItemTresureResultTable$29, $LogHorizon_Korean_getHeroineTresureResultTable$30, $LogHorizon_Korean_getGoblinTresureResultTable$31, $LogHorizon_Korean_getPersonalityTagDiceCommandResult$32, $LogHorizon_Korean_getFriendlyChartDiceCommandResult$33, $LogHorizon_Korean_getPrefixedMagickItemDiceCommandResult$34, $LogHorizon_Korean_getHitLocationDiceCommandResult$35, $LogHorizon_Korean_getPCNameDiceCommandResult$36, $LogHorizon_Korean_getInventionAttributeTextDiceCommandResult$37, $LogHorizon_Korean_getTroubleInAkibaStreetDiceCommandResult$43, $LogHorizon_Korean_getAbandonedChildDiceCommandResult$45, $LogHorizon_Korean_getMusicalInstrumentTypeDiceCommandResult$53, $LogHorizon_Korean_getEastalDiceCommandResult$54; - - - Opal.const_set($nesting[0], 'ID', "LogHorizon:Korean"); - Opal.const_set($nesting[0], 'NAME', "로그 호라이즌"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:로그 호라이즌"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・판정(xLH±y>=z)\n" + " xD6의 판정.크리티컬, 펌블의 자동 판정을 실시합니다.\n" + " x:x로 굴릴 주사위의 수를 입력합니다.\n" + " ±y:y로 수정치를 입력합니다. ±의 계산에 대응하며 생략이 가능합니다.\n" + " >=z:z로 목표값을 입력합니다. ±의 계산에 대응하며 생략이 가능합니다.\n" + " 예시) 3LH 2LH>=8 3LH+1>=10\n" + "・소모표(tCTx±y$z)\n" + " PCT 체력/ECT 기력/GCT 물품/CCT 금전\n" + " x:CR을 지정합니다.\n" + " ±y:수정치, +와 -의 계산에 대응하며 생략이 가능합니다.\n" + " $z:$를 붙이면 주사위 눈을 z고정합니다. 표의 특정 값 참조용으로 사용하며.생략 가능.\n" + " 例) PCT1 ECT2+1 GCT3-1 CCT3$5\n" + "・재물표(tTRSx±y$)\n" + " CTRS 금전/MTRS 마법소재/ITRS 환전 아이템/※HTRS 히로인/GTRS 고블린 재보표\n" + " x:CR을 지정합니다. 생략시에는 다이치 0고정으로 수정치의 표를 참조.《골드 핑거》사용 시 등.\n" + " ±y:수정치, +와 -의 계산에 대응하며 생략이 가능합니다.\n" + " $:$을 붙이면 재물표의 다이스를 7로 고정합니다.(1차 분량의 프라이즈 용도)생략이 가능합니다.\n" + " 예시) CTRS1 MTRS2+1 ITRS3-1 ITRS+27 CTRS3$\n" + "・퍼스널리티 태그 표(PTAG)\n" + "・교우표(KOYU)\n" + "・이스탈 탐색표(ESTLx) x는 CR을 지정합니다.\n" + "・프리픽스드 매직아이템 효과 표(MGRx) x는 MG를 지정합니다.\n" + "†악기 종류 표(MIIx) x는 악기의 종류를 지정합니다.(1~6를 지정) 생략이 가능합니다.\n" + " 1 타악기1/2 건반악기/3 현악기1/4 현악기2/5 관악기1/6 관악기2\n" + "☆특수 소모표(tSCTx±y$z) 소모표와 마찬가지로 지정합니다. 다만 CR은 생략이 가능합니다.\n" + " ESCT 로데릭 연구소는 폭발했다!/CSCT 알브의 저주다!\n" + "※공격 명중 장소 랜덤 결정표(HLOC)\n" + "※PC명 랜덤 결정표(PCNM)\n" + "※로데릭 연구소의 새로운 발명 랜덤 결정표(IATt)\n" + " IATA 특징A(장점)/IATB 특징B(단점)/IATL 외형/IATT 종류\n" + " t를 생략할 경우 모두 표시합니다. t에 A/B/L/T를 임의의 순서로 연결 할 수 있습니다.\n" + " 例)IAT IATALT IATABBLT IATABL\n" + "※아키바 거리에서 발생하는 문제 랜덤결정 표(TIAS)\n" + "※버려진 아이 랜덤 결정 표(ABDC)\n" + "†표시와 ☆표시는「인투・더・셀덴시아 새로운 빌드의 날개짓(1)」에서、\n" + "☆표시는 셀덴시아・가제트「D 되기는 할까? 66」Vol.1에서、\n" + "※표시는「실록・칠면체공방 좌담회(여름의 장)」에서 참조했습니다. 이용법은 항목을 참조해주세요.\n" + "・D66다이스도 있습니다.\n" + "\n" + "・역자의 말 : 「실록・칠면체공방 좌담회(여름의 장)」은 한국에서 발매하지 않습니다. 참고해주세요.\n" + "・이니티움님, 광황님, CoC방 여러분 감사합니다. by호흡도의식하면귀찮아\n"); - self.$setPrefixes(["\\d+LH.*", "PC.*", "EC.*", "GC.*", "CC.*", "CTR.*", "MTR.*", "ITR.*", "HTR.*", "GTR.*", "PTAG", "KOYU", "MGR.", "HLOC", "PCNM", "IAT.*", "TIAS", "ABDC", "MII.*", "ESCT.*", "CSCT.*", "ESTL.*"]); - - Opal.def(self, '$initialize', $LogHorizon_Korean_initialize$1 = function $$initialize() { - var $iter = $LogHorizon_Korean_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $LogHorizon_Korean_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $LogHorizon_Korean_initialize$1, false), $zuper, $iter); - return (self.d66Type = 1); - }, $LogHorizon_Korean_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $LogHorizon_Korean_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this; - - return self.$analyzeDiceCommandResultMethod(command) - }, $LogHorizon_Korean_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getCheckRollDiceCommandResult', $LogHorizon_Korean_getCheckRollDiceCommandResult$3 = function $$getCheckRollDiceCommandResult(command) { - var $a, $b, $$4, self = this, diceCount = nil, modifyText = nil, difficultyText = nil, modify = nil, difficulty = nil, dice = nil, dice_str = nil, diceList = nil, total = nil, result = nil; - - - if ($truthy(/(\d+)LH([\+\-\d]*)(>=([\+\-\d]*))?/i['$==='](command))) { - } else { - return nil - }; - diceCount = $$($nesting, 'Regexp').$last_match(1).$to_i(); - modifyText = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : ""); - difficultyText = $$($nesting, 'Regexp').$last_match(4); - modify = self.$getValue(modifyText, 0); - difficulty = self.$getValue(difficultyText, nil); - $b = self.$roll(diceCount, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - diceList = $send(dice_str.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)).$sort(); - total = $rb_plus(dice, modify); - command = "" + (diceCount) + "LH" + (modifyText); - if ($truthy(difficulty['$nil?']())) { - } else { - command = $rb_plus(command, "" + ">=" + (difficulty)) - }; - result = "" + "(" + (command) + ") > " + (dice) + "[" + (dice_str) + "]" + (modifyText) + " > " + (total); - if ($truthy(self.$isCritical(diceList))) { - result = $rb_plus(result, " > 크리티컬!") - } else if ($truthy(self.$isFamble(diceList, diceCount))) { - result = $rb_plus(result, " > 펌블!") - } else { - result = $rb_plus(result, self.$getJudgeResultString(difficulty, total)) - }; - return result; - }, $LogHorizon_Korean_getCheckRollDiceCommandResult$3.$$arity = 1); - - Opal.def(self, '$getJudgeResultString', $LogHorizon_Korean_getJudgeResultString$5 = function $$getJudgeResultString(difficulty, total) { - var self = this; - - - if ($truthy(difficulty['$nil?']())) { - return ""}; - if ($truthy($rb_ge(total, difficulty))) { - return " > 성공" - } else { - return " > 실패" - }; - }, $LogHorizon_Korean_getJudgeResultString$5.$$arity = 2); - - Opal.def(self, '$getValue', $LogHorizon_Korean_getValue$6 = function $$getValue(text, defaultValue) { - var $a, self = this; - - - if ($truthy(($truthy($a = text['$nil?']()) ? $a : text['$empty?']()))) { - return defaultValue}; - return self.$parren_killer($rb_plus($rb_plus("(0", text), ")")).$to_i(); - }, $LogHorizon_Korean_getValue$6.$$arity = 2); - - Opal.def(self, '$isCritical', $LogHorizon_Korean_isCritical$7 = function $$isCritical(diceList) { - var $$8, self = this; - - return $rb_ge($send(diceList, 'select', [], ($$8 = function(i){var self = $$8.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](6);}, $$8.$$s = self, $$8.$$arity = 1, $$8)).$size(), 2) - }, $LogHorizon_Korean_isCritical$7.$$arity = 1); - - Opal.def(self, '$isFamble', $LogHorizon_Korean_isFamble$9 = function $$isFamble(diceList, diceCount) { - var $$10, self = this; - - return $rb_ge($send(diceList, 'select', [], ($$10 = function(i){var self = $$10.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](1);}, $$10.$$s = self, $$10.$$arity = 1, $$10)).$size(), diceCount) - }, $LogHorizon_Korean_isFamble$9.$$arity = 2); - - Opal.def(self, '$getConsumptionDiceCommandResult', $LogHorizon_Korean_getConsumptionDiceCommandResult$11 = function $$getConsumptionDiceCommandResult(command) { - var $a, $b, self = this, type = nil, is_special = nil, rank = nil, is_choice = nil, dice_value = nil, modifyText = nil, modify = nil, tableName = nil, tables = nil, $case = nil, table = nil, number = nil, dice_str = nil, adjustedNumber = nil, result = nil, text = nil; - - - if ($truthy(/(P|E|G|C|ES|CS)CT(\d+)?([\+\-\d]*)(\$(\d+))?/['$==='](command))) { - } else { - return nil - }; - type = $$($nesting, 'Regexp').$last_match(1); - is_special = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $rb_gt($$($nesting, 'Regexp').$last_match(1).$length(), 1) : $a); - rank = (function() {if ($truthy(($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $$($nesting, 'Regexp').$last_match(2)['$!=']("") : $a))) { - return $$($nesting, 'Regexp').$last_match(2).$to_i() - } else { - return nil - }; return nil; })(); - if ($truthy(($truthy($a = rank['$!']()) ? is_special['$!']() : $a))) { - return nil}; - rank = ($truthy($a = rank) ? $a : 0); - is_choice = $$($nesting, 'Regexp').$last_match(4)['$nil?']()['$!'](); - dice_value = $$($nesting, 'Regexp').$last_match(5); - modifyText = $$($nesting, 'Regexp').$last_match(3); - modify = self.$getValue(modifyText, 0); - tableName = ""; - tables = nil; - $case = type; - if ("P"['$===']($case)) {$b = self.$getPhysicalConsumptionResultTables(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (tables = ($a[1] == null ? nil : $a[1])), $b} - else if ("E"['$===']($case)) {$b = self.$getEnergyConsumptionResultTables(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (tables = ($a[1] == null ? nil : $a[1])), $b} - else if ("G"['$===']($case)) {$b = self.$getGoodsConsumptionResultTables(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (tables = ($a[1] == null ? nil : $a[1])), $b} - else if ("C"['$===']($case)) {$b = self.$getCashConsumptionResultTables(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (tables = ($a[1] == null ? nil : $a[1])), $b} - else if ("ES"['$===']($case)) {$b = self.$getExplosionSpecialConsumptionResultTables(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (tables = ($a[1] == null ? nil : $a[1])), $b} - else if ("CS"['$===']($case)) {$b = self.$getCurseSpecialConsumptionResultTables(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (tables = ($a[1] == null ? nil : $a[1])), $b} - else {return nil}; - table = self.$getTableByRank(rank, tables); - $b = (function() {if ($truthy(is_choice)) { - return [dice_value.$to_i(), dice_value] - } else { - return self.$roll(1, 6) - }; return nil; })(), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - number = $rb_plus(number, modify); - adjustedNumber = self.$getAdjustNumber(number, table); - result = self.$get_table_by_number(adjustedNumber, table); - text = "" + (tableName) + "(" + (number) + "[" + (dice_str) + "]):" + (result); - return text; - }, $LogHorizon_Korean_getConsumptionDiceCommandResult$11.$$arity = 1); - - Opal.def(self, '$getPhysicalConsumptionResultTables', $LogHorizon_Korean_getPhysicalConsumptionResultTables$12 = function $$getPhysicalConsumptionResultTables() { - var self = this, tableName = nil, tables = nil; - - - tableName = "체력 소모표"; - tables = [[[0, "소모없음"], [1, "[피로:5]를 받는다"], [2, "[피로:8]을 받는다"], [3, "[피로:10]을 받는다"], [4, "[피로:13]을 받는다"], [5, "[피로:15]를 받는다"], [6, "[피로:18]을 받는다"], [7, "[피로:20]을 받는다"]], [[0, "소모없음"], [1, "[피로:10]을 받는다"], [2, "[피로:15]를 받는다"], [3, "[피로:20]을 받는다"], [4, "[피로:25]를 받는다"], [5, "[피로:30]을 받는다"], [6, "[피로:35]를 받는다"], [7, "[피로:40]을 받는다"]]]; - return [tableName, tables]; - }, $LogHorizon_Korean_getPhysicalConsumptionResultTables$12.$$arity = 0); - - Opal.def(self, '$getEnergyConsumptionResultTables', $LogHorizon_Korean_getEnergyConsumptionResultTables$13 = function $$getEnergyConsumptionResultTables() { - var self = this, tableName = nil, tables = nil; - - - tableName = "기력 소모표"; - tables = [[[0, "소모없음"], [1, "【인과력】을 1점 잃는다"], [2, "【인과력】을 1점 잃는다"], [3, "【인과력】을 1점 잃는다"], [4, "【인과력】을 1점 잃는다"], [5, "【인과력】을 2점 잃는다"], [6, "【인과력】을 2점 잃는다"], [7, "【인과력】을 2점 잃는다"]], [[0, "소모없음"], [1, "【인과력】을 1점 잃는다"], [2, "【인과력】을 1점 잃는다"], [3, "【인과력】을 1점 잃는다"], [4, "【인과력】을 2점 잃는다"], [5, "【인과력】을 2점 잃는다"], [6, "【인과력】을 2점 잃는다"], [7, "【인과력】을 3점 잃는다"]]]; - return [tableName, tables]; - }, $LogHorizon_Korean_getEnergyConsumptionResultTables$13.$$arity = 0); - - Opal.def(self, '$getGoodsConsumptionResultTables', $LogHorizon_Korean_getGoodsConsumptionResultTables$14 = function $$getGoodsConsumptionResultTables() { - var self = this, tableName = nil, tables = nil; - - - tableName = "물품 소모표"; - tables = [[[0, "소모없음"], [1, "[소모품] 아이템을 1개 잃는다."], [2, "[소모품] 아이템을 1개 잃는다."], [3, "[소모품] 아이템을 1개 잃는다."], [4, "[소모품] 아이템을 2개 잃는다."], [5, "[소모품] 아이템을 2개 잃는다."], [6, "[소모품] 아이템을 2개 잃는다."], [7, "[소모품] 아이템을 2개 잃는다."]], [[0, "소모없음"], [1, "[소모품] 아이템을 1개 잃는다."], [2, "[소모품] 아이템을 1개 잃는다."], [3, "[소모품] 아이템을 2개 잃는다."], [4, "[소모품] 아이템을 2개 잃는다."], [5, "[소모품] 아이템을 3개 잃는다."], [6, "[소모품] 아이템을 3개 잃는다."], [7, "[소모품] 아이템을 4개 잃는다."]]]; - return [tableName, tables]; - }, $LogHorizon_Korean_getGoodsConsumptionResultTables$14.$$arity = 0); - - Opal.def(self, '$getCashConsumptionResultTables', $LogHorizon_Korean_getCashConsumptionResultTables$15 = function $$getCashConsumptionResultTables() { - var self = this, tableName = nil, tables = nil; - - - tableName = "금전 소모표"; - tables = [[[0, "소모없음"], [1, "소지금 10G 잃는다."], [2, "소지금 15G 잃는다."], [3, "소지금 20G 잃는다."], [4, "소지금 25G 잃는다."], [5, "소지금 30G 잃는다."], [6, "소지금 35G 잃는다."], [7, "소지금 40G 잃는다."]], [[0, "소모없음"], [1, "소지금 25G 잃는다."], [2, "소지금 35G 잃는다."], [3, "소지금 50G 잃는다."], [4, "소지금 60G 잃는다."], [5, "소지금 75G 잃는다."], [6, "소지금 90G 잃는다."], [7, "소지금 100G 잃는다."]]]; - return [tableName, tables]; - }, $LogHorizon_Korean_getCashConsumptionResultTables$15.$$arity = 0); - - Opal.def(self, '$getExplosionSpecialConsumptionResultTables', $LogHorizon_Korean_getExplosionSpecialConsumptionResultTables$16 = function $$getExplosionSpecialConsumptionResultTables() { - var self = this, tableName = nil, tables = nil; - - - tableName = "특수 소모표 : 로데릭 연구소는 폭발했다!"; - tables = [[[0, "……하지만 아무 일도 일어나지 않았다!: 효과 없음"], [1, "당신의 머리카락이 폭발했다! 멋진 아프로 헤어다: 시나리오가 끝날 때까지 [머리] 태그를 가진 장비는 장비 불가"], [2, "예술은 폭발이다: 소지하고 있는 아이템 중 랜덤으로 정한 하나가 예술품이 되어 [환전] 아이템이 된다."], [3, "반응 기폭 장갑: 방어구 슬롯에 장비하고 있는 아이템이 쵸밤 아머가 된다. 다음에 당신이 【HP】 대미지를 받았을 때, 그 대미지를 무효로 하고 이 아이템을 잃는다."], [4, "산양 슬라임이 폭발적으로 증식한다: [소지품] 슬롯을 모두 산양 슬라임([거래 불가], 가격50)으로 채운다."], [5, "당신의 리얼이 폭발한다: 커넥션 하나를 시나리오가 끝날 때까지 잃는다."], [6, "공장이 폭발한다: [소모품] 태그를 가진 아이템을 구입할 수 없게 된다."], [7, "보스 에너미가 폭발한다: 시나리오는 클라이맥스를 맞이하지 않고 종료된다. 수고하셨습니다."]]]; - return [tableName, tables]; - }, $LogHorizon_Korean_getExplosionSpecialConsumptionResultTables$16.$$arity = 0); - - Opal.def(self, '$getCurseSpecialConsumptionResultTables', $LogHorizon_Korean_getCurseSpecialConsumptionResultTables$17 = function $$getCurseSpecialConsumptionResultTables() { - var self = this, tableName = nil, tables = nil; - - - tableName = "특수 소모표: 알브의 저주다!"; - tables = [[[0, "「축복해주지!」 축복을 받는다: 당신의 【인과력】+1"], [1, "공복의 저주: 즉시 식량 아이템 하나를 먹는다. 배가 고프니 엄청 맛있어!"], [2, "무직의 저주: 서브 직업이 강제로〈니트〉로 변경된다."], [3, "종족 변경의 저주: 랜덤으로 다이스를 굴려 다른 종족으로 변한다. 종족특기를 사용할 수 없게 된다."], [4, "배리어 프리의 저주: [경감], [장벽]상태가 될 수 없게 된다."], [5, "집중력을 흐트리는 속삭임의 저주:자세가 무너져 [태세] 태그를 가진 특기를 사용할 수 없게 된다."], [6, "맹목의 저주: 당신이 소지한 커넥션 중 랜덤으로 선택한 관계 하나가 「열애」로 변한다."], [7, "의욕이 사라지는 저주: 아~ 진짜 의욕이 안 나네. 아무 것도 하기 싫어.【인과력】 사용 불가."]]]; - return [tableName, tables]; - }, $LogHorizon_Korean_getCurseSpecialConsumptionResultTables$17.$$arity = 0); - - Opal.def(self, '$getTableByRank', $LogHorizon_Korean_getTableByRank$18 = function $$getTableByRank(rank, tables) { - var self = this, index = nil; - - - index = $rb_divide($rb_minus(rank, 1), 5).$floor(); - index = [0, index].$max(); - index = [index, $rb_minus(tables.$size(), 1)].$min(); - return tables['$[]'](index); - }, $LogHorizon_Korean_getTableByRank$18.$$arity = 2); - - Opal.def(self, '$getAdjustNumber', $LogHorizon_Korean_getAdjustNumber$19 = function $$getAdjustNumber(number, table) { - var self = this; - - - number = self.$getAdjustNumberMin(number, table); - number = self.$getAdjustNumberMax(number, table); - return number; - }, $LogHorizon_Korean_getAdjustNumber$19.$$arity = 2); - - Opal.def(self, '$getAdjustNumberMin', $LogHorizon_Korean_getAdjustNumberMin$20 = function $$getAdjustNumberMin(number, table) { - var self = this, value = nil; - - - value = self.$getTableMinimum(table); - return [number, value].$max(); - }, $LogHorizon_Korean_getAdjustNumberMin$20.$$arity = 2); - - Opal.def(self, '$getTableMinimum', $LogHorizon_Korean_getTableMinimum$21 = function $$getTableMinimum(table) { - var self = this; - - return table.$first().$first() - }, $LogHorizon_Korean_getTableMinimum$21.$$arity = 1); - - Opal.def(self, '$getAdjustNumberMax', $LogHorizon_Korean_getAdjustNumberMax$22 = function $$getAdjustNumberMax(number, table) { - var self = this, value = nil; - - - value = table.$last().$first(); - return [number, value].$min(); - }, $LogHorizon_Korean_getAdjustNumberMax$22.$$arity = 2); - - Opal.def(self, '$getTresureDiceCommandResult', $LogHorizon_Korean_getTresureDiceCommandResult$23 = function $$getTresureDiceCommandResult(command) { - var $a, $b, self = this, m = nil, type = nil, rank = nil, is_choice = nil, modifyText = nil, modify = nil, is_prize = nil, dice_value = nil, is_rank_enable = nil, $case = nil, tableName = nil, table = nil, number = nil, dice_str = nil, result = nil; - - - if ($truthy((m = /(C|M|I|H|G)TRS(\d*)([\+\-\d]*)(\$)?/.$match(command)))) { - } else { - return nil - }; - type = m['$[]'](1); - rank = m['$[]'](2).$to_i(); - is_choice = ($truthy($a = m['$[]'](2)['$empty?']()) ? $a : m['$[]'](4)['$nil?']()['$!']()); - modifyText = m['$[]'](3); - modify = self.$getValue(modifyText, 0); - is_prize = m['$[]'](4)['$==']("$"); - dice_value = nil; - if ($truthy(is_prize)) { - dice_value = "7"}; - is_rank_enable = ($truthy($a = is_choice['$!']()) ? $a : is_prize); - $b = (function() {$case = type; - if ("C"['$===']($case)) {return self.$getCashTresureResultTable()} - else if ("M"['$===']($case)) {return self.$getMagicTresureResultTable()} - else if ("I"['$===']($case)) {return self.$getItemTresureResultTable()} - else if ("H"['$===']($case)) {return self.$getHeroineTresureResultTable()} - else if ("G"['$===']($case)) {return self.$getGoblinTresureResultTable()} - else { return nil }})(), $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(table['$nil?']())) { - return nil}; - $b = (function() {if ($truthy(is_choice)) { - return [dice_value.$to_i(), dice_value] - } else { - return self.$roll(2, 6) - }; return nil; })(), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - number = $rb_plus(number, $rb_plus($rb_times(rank, (function() {if ($truthy(is_rank_enable)) { - return 5 - } else { - return 0 - }; return nil; })()), modify)); - if ($truthy(($truthy($a = is_choice) ? $rb_lt(number, self.$getTableMinimum(table)) : $a))) { - return command}; - number = [self.$getAdjustNumberMin(number, table), 87].$min(); - result = (function() {if (type['$==']("H")) { - return self.$getHiroineTresureResultString(table, number) - } else { - return self.$getOtherTresureResultString(table, number) - }; return nil; })(); - return "" + (tableName) + "(" + (number) + ((function() {if ($truthy(dice_str)) { - return $rb_plus($rb_plus("[", dice_str), "]") - } else { - return "" - }; return nil; })()) + "):" + (result); - }, $LogHorizon_Korean_getTresureDiceCommandResult$23.$$arity = 1); - - Opal.def(self, '$getHiroineTresureResultString', $LogHorizon_Korean_getHiroineTresureResultString$24 = function $$getHiroineTresureResultString(table, number) { - var $$25, self = this, table_max_number = nil, result = nil; - - - table_max_number = $send(table, 'map', [], ($$25 = function(e){var self = $$25.$$s || this; - - - - if (e == null) { - e = nil; - }; - return e.$first();}, $$25.$$s = self, $$25.$$arity = 1, $$25)).$max(); - result = (function() {if ($truthy($rb_le(number, table_max_number))) { - return self.$get_table_by_number(number, table) - } else { - return "" + "※ " + ($rb_plus(table_max_number, 1)) + "이후는 미정입니다 ※" - }; return nil; })(); - return result; - }, $LogHorizon_Korean_getHiroineTresureResultString$24.$$arity = 2); - - Opal.def(self, '$getOtherTresureResultString', $LogHorizon_Korean_getOtherTresureResultString$26 = function $$getOtherTresureResultString(table, number) { - var self = this, result = nil, $case = nil; - - - result = (function() {$case = number; - if ($range(63, 72, false)['$===']($case)) {return $rb_plus(self.$get_table_by_number($rb_minus(number, 10), table), "&80G")} - else if ($range(73, 82, false)['$===']($case)) {return $rb_plus(self.$get_table_by_number($rb_minus(number, 20), table), "&160G")} - else if ($range(83, 87, false)['$===']($case)) {return $rb_plus(self.$get_table_by_number($rb_minus(number, 30), table), "&260G")} - else {return self.$get_table_by_number(number, table)}})(); - return result; - }, $LogHorizon_Korean_getOtherTresureResultString$26.$$arity = 2); - - Opal.def(self, '$getCashTresureResultTable', $LogHorizon_Korean_getCashTresureResultTable$27 = function $$getCashTresureResultTable() { - var self = this, tableName = nil, table = nil; - - - tableName = "금전 재보표"; - table = [[7, "39G"], [8, "40G"], [9, "42G"], [10, "43G"], [11, "45G"], [12, "46G"], [13, "48G"], [14, "50G"], [15, "52G"], [16, "54G"], [17, "57G"], [18, "59G"], [19, "61G"], [20, "64G"], [21, "67G"], [22, "70G"], [23, "72G"], [24, "75G"], [25, "79G"], [26, "82G"], [27, "85G"], [28, "89G"], [29, "92G"], [30, "96G"], [31, "100G"], [32, "104G"], [33, "108G"], [34, "112G"], [35, "117G"], [36, "121G"], [37, "126G"], [38, "130G"], [39, "135G"], [40, "140G"], [41, "145G"], [42, "150G"], [43, "155G"], [44, "161G"], [45, "166G"], [46, "172G"], [47, "178G"], [48, "183G"], [49, "189G"], [50, "195G"], [51, "201G"], [52, "208G"], [53, "214G"], [54, "221G"], [55, "227G"], [56, "234G"], [57, "241G"], [58, "248G"], [59, "255G"], [60, "262G"], [61, "269G"], [62, "277G"]]; - return [tableName, table]; - }, $LogHorizon_Korean_getCashTresureResultTable$27.$$arity = 0); - - Opal.def(self, '$getMagicTresureResultTable', $LogHorizon_Korean_getMagicTresureResultTable$28 = function $$getMagicTresureResultTable() { - var self = this, tableName = nil, table = nil; - - - tableName = "마법소재 재물표"; - table = [[7, "마촉매2[마촉매2](20G)x2"], [8, "마촉매2[마촉매2](20G)x2"], [9, "마촉매1[마촉매1](15G)x3"], [10, "마촉매1[마촉매1](15G)x3"], [11, "마촉매1[마촉매1](15G)x3"], [12, "코발트조각[코어소재](30G)&광석 샘플[환전](15G)"], [13, "신록의 떡잎[코어소재](30G)&조그만 꽃씨[환전](20G)"], [14, "생명의 잎[코어소재](40G)&강인한 넝쿨[환전](10G)"], [15, "날카로운 송곳니[코어소재](40G)&잘 길든 나이프[환전](10G)"], [16, "마촉매3[마촉매3](25G)x2"], [17, "오래된 해골[코어소재](40G)&검은 시집[환전](15G)"], [18, "흑수련꽃잎[코어소재](40G)&물곰방대[환전](20G)"], [19, "순백색깃털[코어소재](40G)&조그만 고글[환전](20G)"], [20, "진홍색 발톱[코어소재](50G)&조그만 거울[환전](15G)"], [21, "적열의 작은 발톱[코어소재](50G)&세공 화로[환전](20G)"], [22, "자성의 작은덩쿨[코어소재](50G)&그을린 용가죽[환전](20G)"], [23, "유성 조각[코어소재](50G)&소박한 반지[환전](10G)x2"], [24, "성스러운 섬유[코어소재](50G)&흠짓 난 메달[환전](25G)"], [25, "부러진 축[코어소재](60G)&잡동산이 무더기[환전](5G)x4"], [26, "거인의 머리카락[코어소재](50G)&조그만 빗[환전](20G)"], [27, "정밀한 톱니바퀴[코어소재](60G)&공구강 파편[환전](25G)"], [28, "뾰족한 발톱[코어소재](60G)&자수 장식띠[환전](30G)"], [29, "촉매 플라스크[코어소재](60G)&작은 초상화[환전](30G)"], [30, "액화마정[코어소재](60G)&정밀한 인형[환전](35G)"], [31, "마촉매5[코어소재](40G)&마촉매4[마촉매4](30G)x2"], [32, "부드러운 돌[코어소재](80G)&소형증류기[환전](20G)"], [33, "수수께끼의 모피[코어소재](80G)&기묘한 두개골[환전](30G)"], [34, "별똥별 은사[코어소재](80G)&주석 도금 별자리판[환전](30G)"], [35, "마촉매5[마촉매5](40G)x3"], [36, "소형연성진[코어소재](100G)&기괴한 오브제[환전](20G)"], [37, "마촉매6[마촉매6](50G)&마촉매5[마촉매5](40G)x2"], [38, "주문의 씨앗[코어소재](100G)&부서진 보석[환전](30G)"], [39, "은제원반[코어소재](100G)&순백색 코사주[환전](30G)"], [40, "잠자는 씨앗[코어소재](100G)&정원사의 장식끈[환전](40G)"], [41, "물엿색 점액[코어소재](1210G)&극채색 입자[환전](5G)x5"], [42, "마촉매6[마촉매6](50G)x3"], [43, "납색갑각[코어소재](120G)&향긋한 꽃봉오리[환전](10G)x4"], [44, "마촉매7[마촉매7](60G)&마촉매6[마촉매6](50G)x2"], [45, "커다란 마력결정[코어소재](120G)&요정의 낙서[환전](40G)"], [46, "권사의 백(魄)조각[코어소재](140G)&백지 두루마리[환전](40G)"], [47, "마촉매7[마촉매7](60G)x3"], [48, "푸른광석[코어소재](140G)&천연 유리덩어리[환전](25G)x2"], [49, "거대한 날개깃[코어소재](140G)&두꺼운 알껍질[환전](50G)"], [50, "마촉매8[마촉매8](70G)x2&마촉매7[마촉매7](60G)"], [51, "끊임 없는 불씨[코어소재](180G)&漆黒のスス[환전](20G)"], [52, "마촉매8[마촉매8](70G)x3"], [53, "마도 정제[코어소재](180G)&つくりかけの錠前[환전](10G)x3"], [54, "일곱색깔 투명나사[코어소재](180G)&열리지 않는 세공상자[환전](40G)"], [55, "편속성 마법결정[코어소재](220G)&보고서 다발[환전](10G)"], [56, "마촉매9[마촉매9](90G)&마촉매8[마촉매8](70G)x2"], [57, "마촉매9[마촉매9](90G)&마촉매8[마촉매8](70G)x2"], [58, "화려한 깃털장식[코어소재](220G)&공상동물 도감[환전](30G)"], [59, "모래장미[코어소재](220G)&바늘 같은 수정[환전](10G)x5"], [60, "마촉매9[마촉매9](90G)x3"], [61, "튼튼한 위장[코어소재](220G)&기묘한 표본[환전](50G)"], [62, "마촉매10[마촉매10](110G)&마촉매9[마촉매9](90G)x2"]]; - return [tableName, table]; - }, $LogHorizon_Korean_getMagicTresureResultTable$28.$$arity = 0); - - Opal.def(self, '$getItemTresureResultTable', $LogHorizon_Korean_getItemTresureResultTable$29 = function $$getItemTresureResultTable() { - var self = this, tableName = nil, table = nil; - - - tableName = "환전아이템 재물표"; - table = [[7, "그림이 들어간 머그컵[환전](40G)"], [8, "목재 기사상[환전](40G)"], [9, "조그만 풍경화[환전](50G)"], [10, "기묘한 초상화[환전](50G)"], [11, "무도회 가면[환전](50G)"], [12, "주석 식기 세트[환전](50G)"], [13, "낡은 시집[환전](50G)"], [14, "화려한 자수 손수건[환전](50G)"], [15, "큰 도자기 접시[환전](60G)"], [16, "그림 두루마리[환전](60G)"], [17, "도자기 수반[환전](60G)"], [18, "세공 귀걸이[환전](60G)"], [19, "숙녀의 초상화[환전](70G)"], [20, "조그만 보석상자[환전](70G)"], [21, "놋쇠 촛대[환전](70G)"], [22, "귀족의 오래된 일기[환전](70G)"], [23, "기사의 초상화[환전](80G)"], [24, "옷칠 나막신[환전](80G)"], [25, "정밀한 게임 보드[환전](80G)"], [26, "정밀한 정물화[환전](90G)"], [27, "떡갈나무 의자[환전](90G)"], [28, "오래된 비스크 돌(러시아인형)[환전](90G)"], [29, "현란한 가면[환전](100G)"], [30, "토끼 봉제인형[환전](100G)"], [31, "놋쇠 몬스터상[환전](100G)"], [32, "지방 역사서[환전](110G)"], [33, "무도회 장갑[환전](110G)"], [34, "하이힐[환전](120G)"], [35, "동화책[환전](120G)"], [36, "소녀의 초상화[환전](130G)"], [37, "작은 목각인형[환전](130G)"], [38, "등나무 의자[환전](130G)"], [39, "개와 고양이 꼭두각시 인형[환전](140G)"], [40, "족자[환전](G140)"], [41, "곰 봉제인형[환전](150G)"], [42, "고양이 변장탈[환전](150G)"], [43, "학술서[환전](160G)"], [44, "매 박제[환전](170G)"], [45, "대리석 현자상[환전](170G)"], [46, "자수가 들어간 쿠션[환전](180G)"], [47, "개 변장 탈[환전](180G)"], [48, "대형 떡갈나무 테이블[환전](190G)"], [49, "조각 반지[환전](190G)"], [50, "화조화 족자[환전](200G)"], [51, "최상급 모피[환전](210G)"], [52, "질 좋은 백분[환전](210G)"], [53, "자기 찻잔[환전](220G)"], [54, "간소한 티아라[환전](230G)"], [55, "조각 귀걸이[환전](230G)"], [56, "화려한 목걸이[환전](240G)"], [57, "질 좋은 향수[환전](250G)"], [58, "산수화 족자[환전](250G)"], [59, "섬세한 드레스/예복[환전](260G)"], [60, "도자기 그림접시[환전](270G)"], [61, "여우 봉제인형[환전](270G)"], [62, "오래된 역사서[환전](280G)"]]; - return [tableName, table]; - }, $LogHorizon_Korean_getItemTresureResultTable$29.$$arity = 0); - - Opal.def(self, '$getHeroineTresureResultTable', $LogHorizon_Korean_getHeroineTresureResultTable$30 = function $$getHeroineTresureResultTable() { - var self = this, tableName = nil, table = nil; - - - tableName = "히로인 재보표"; - table = [[7, "쓰러져 있는 초라한 말라깽이의 유녀"], [8, "돈을 밝히는 경단머리인 차이나 아가씨"], [9, "응석부리고고 캐미솔을 어깨에 한 스웨터의 요술사"], [10, "작은 등으로 모두를 지키는 장면의 청바지를 입은 무투가"], [11, "오징어 모자를 쓴 도짓코 침략자"], [12, "지나치게 긍정적인 자칭 명탐정씨"], [13, "중요한 곳에서 실수하는 부스스한 포니테일의 클레릭"], [14, "계란밥 좋아하는 빈유의 칸나기"], [15, "보석을 너무 좋아하는 억척스런 큰 리본의 이도류 세검사"], [16, "오크에게서 간신히 도망쳐온 검의 처녀"], [17, "당신을 맹목적으로 찬미하는 자칭 여동생"], [18, "어필을 하지만 인식되지 않는 칸나기"], [19, "밝고 긍정적인 분홍색 리본의 소녀"], [20, "마법을 사용할수 없는 가슴이 작은게 컴플렉스인 마녀"], [21, "식욕에 일체 주저함이 없는 포동포동한 가슴의 아이돌"], [22, "눈물점이 매혹의 저주인 누님계의 스워시버클러 "], [23, "집착심이 강한 젊게 차려입은 노처녀 신화생무"], [24, "시가를 사랑하는 헤이안 히키코모리 공주"], [25, "병약하지만 프라이드있는 몰락귀족 아가씨"], [26, "활기가득! 왜소한 낭아족 야생 소녀"], [27, "빚더미에 올라 골판지 상자에서 사는 리코핀(로그호라 엑스트라 캐릭터)"], [28, "귀국자녀인 무녀복 스타일의 마포소녀에YO!"], [29, "붙어 왔다갔다 하기만 할 수 있는 좀비 아가씨"], [30, "꿈에 한결같은 녹색머리 초시공 아이돌 후보생"], [31, "바로 발이 올라가는 뾰족한 이빨의 불량소녀"], [32, "지치지 않는 방패"], [33, "외환거래에 가진 돈을 전부 잃어 공허한 선배"], [34, "팔뚝이 말랑말랑하지만 가계부를 쓰는 마왕"], [35, "그 가슴 실로 풍만하였다는 기억상실의 여자 닌자"], [36, "잘 옷자락을 붙잡는 양갈래 땋은 머리의 빵집 소녀"], [37, "「더럽다는건 칭찬이다!」라는 주관의 여자 암살자"], [38, "단추가 터질것 같고 울상인 길드 창구의 간판아가씨"], [39, "뭐든지 오컬트에 아수라장이 되는 소녀"], [40, "전투 때마다 많이 먹어지게 되는게 고민인 궁술소녀"], [41, "사소한 것에 바로 얽메이게 되는 금발소녀"], [42, "함께 돌아가는 것을 부끄럽게 생각하는 핑크머리 소꿉친구"], [43, "배가 안좋아서 화장실에 상주하게 되는 엘프소녀"], [44, "응시하면 얼굴이 빨개지는 앞머리 법의족 소녀"], [45, "바로 파밧하고 겁먹는 소동물계 소녀"], [46, "키가 크고 신사적인 여성 극단의 왕자님역의 기사녀"], [47, "올곧은 성격의 근육이 있는 드워프 여자"], [48, "항상 꿈에서 당신을 보는 포니테일의 소녀"], [49, "선진선구, 심야에서 새벽까지 달리는 잠꾸러기 언니인 사무라이"], [50, "뭐든지 깊이 파고들려 하는 방랑자 로리BBA"], [51, "항상 밝은 남국의 갈색피부 소녀"], [52, "당신의 첫사랑과 닮은 그녀"]]; - return [tableName, table]; - }, $LogHorizon_Korean_getHeroineTresureResultTable$30.$$arity = 0); - - Opal.def(self, '$getGoblinTresureResultTable', $LogHorizon_Korean_getGoblinTresureResultTable$31 = function $$getGoblinTresureResultTable() { - var self = this, tableName = nil, table = nil; - - - tableName = "고블린 재물표"; - table = [[7, "라이트메이스"], [8, "백과사전"], [9, "42G"], [10, "오래된 해골[코어소재](40G)"], [11, "가속의 두루마리(초급)"], [12, "46G"], [13, "48G"], [14, "50G"], [15, "유리구슬[환전](60G)"], [16, "피로 얼룩진 칼[코어소재](50G)"], [17, "찌그러진 금접시[환전](60G)"], [18, "59G"], [19, "모피로 된 깔개[환전](60G)"], [20, "뾰족한 발톱[코어소재](60G)"], [21, "67G"], [22, "흠집투성이의 상아상[환전](70G)"], [23, "72G"], [24, "라이트 랜스[파손]"], [25, "골제 목걸이[환전](80G)"], [26, "사금이 섞인 돌[환전](80G)"], [27, "85G"], [28, "향나무 파편[환전](90G)"], [29, "기묘한 가면[환전](90G)"], [30, "96G"], [31, "시미터"], [32, "우든 라운드"], [33, "바람 소리의 방울[코어소재](80G)&철제 전립[코어소재](30G)"], [34, "112G"], [35, "산양슬라임(라지사이즈)[환전](120G)"], [36, "121G"], [37, "고급 노송나무[환전](125G)"], [38, "130G"], [39, "크리스탈제 체스말[환전](135G)"], [40, "140G"], [41, "텐트(캠핑용)"], [42, "이상한 환약[코어소재](30G)×2&100G"], [43, "수수께끼의 모피[코어소재](80G)&원한의 고리[코어소재](80G)"], [44, "의식용 뼈 검[환전](160G)"], [45, "낡은 동전[환전](165G)"], [46, "낭아봉"], [47, "법리회로[코어소재](60G)&120G"], [48, "커다란 마력회로[코어소재](120G)&60G"], [49, "189G"], [50, "고급 통술[환전](200G)"], [51, "201G"], [52, "백색 반지"], [53, "비취 목걸이[환전](210G)"], [54, "황금 고블린상[환전](220G)"], [55, "샤벨"], [56, "진철 검신[코어소재](120G)&120G"], [57, "지저분한청자[환전](240G)"], [58, "톤스톤의 모듬 꼬치구이×2"], [59, "고블린 왕의 훈장[환전](255G)"], [60, "실눈뜨기의 두루마리(중급)×2"], [61, "269G"], [62, "백랑의 모피[환전](280G)"]]; - return [tableName, table]; - }, $LogHorizon_Korean_getGoblinTresureResultTable$31.$$arity = 0); - - Opal.def(self, '$getPersonalityTagDiceCommandResult', $LogHorizon_Korean_getPersonalityTagDiceCommandResult$32 = function $$getPersonalityTagDiceCommandResult(command) { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil, text = nil; - - - if ($truthy("PTAG"['$==='](command))) { - } else { - return nil - }; - tableName = "퍼스널리티 태그"; - table = ["[조숙]", "[호기심왕성]", "[외로움쟁이]", "[지극성실]", "[먹보]", "[개구쟁이]또는[말괄량이]", "[사람좋음]", "[정열]", "[남챙겨주기]", "[이지적]", "[벽창호]", "[형님 기질]또는[누님 기질]", "[의리투철]", "[변덕쟁이]", "[장인기질]", "[열혈한]", "[노력가]", "[남자밝힘]또는[여자밝힘]", "[가정적]", "[호승심]", "[순진]", "[무뚝뚝이]", "[자비로움]", "[마이페이스]", "[낙천가]", "[동료애]", "[자긍심]", "[사교적]", "[냉정침착]", "[로맨티스트]", "[학구적]", "[내향적]", "[사서고생]", "[허영심]", "[용맹과감]", "[미스테리어스]"]; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - text = "" + (tableName) + "(" + (number) + "):" + (result); - return text; - }, $LogHorizon_Korean_getPersonalityTagDiceCommandResult$32.$$arity = 1); - - Opal.def(self, '$getFriendlyChartDiceCommandResult', $LogHorizon_Korean_getFriendlyChartDiceCommandResult$33 = function $$getFriendlyChartDiceCommandResult(command) { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil, text = nil; - - - if ($truthy("KOYU"['$==='](command))) { - } else { - return nil - }; - tableName = "교우표"; - table = ["교우대상에 대한 보호\n당신은 교우대상을 보호하고 싶다. 당신에게는 지켜줄수 있는 강함이 있다.", "교우대상에 대한 친애\n당신은 교우대상에게 호감을 가지고 있다. 그 마음을 상대에게 전했을지 아닐지는 임의. ", "교우대상에 대한 의형제\n당신은 교우대상과 형제나 다름없는 사이다. 물론 피는 이어지지 않았지만 그런것은 사소한 일이다.", "교우대상의 영웅\n당신은 교우대상에게서 영웅시되고 있다. 설령 당신이 부정하더라도 상관 없다.", "교우대상에 대한 존경\n당신은 교우대상을 존경한다. 그의 기술, 강인한 마음. 그것이 무엇이든 그에대한 경의는 변함이 없다.", "교우대상의 파트너\n당신은 교우대상을 파트너라고 생각한다. 그라면 자신과 함께 가 줄 것이다.", "교우대상에 대한 보호\n당신은 교우대상을 보호하고 싶다. 당신에게는 지켜줄수 있는 강함이 있다.", "교우대상에 대한 친애\n당신은 교우대상에게 호감을 가지고 있다. 그 마음을 상대에게 전했을지 아닐지는 임의. ", "교우대상에 대한 의형제\n당신은 교우대상과 형제나 다름없는 사이다. 물론 피는 이어지지 않았지만 그런것은 사소한 일이다.", "교우대상의 영웅\n당신은 교우대상에게서 영웅시되고 있다. 설령 당신이 부정하더라도 상관 없다.", "교우대상에 대한 존경\n당신은 교우대상을 존경한다. 그의 기술, 강인한 마음. 그것이 무엇이든 그에대한 경의는 변함이 없다.", "교우대상의 파트너\n당신은 교우대상을 파트너라고 생각한다. 그라면 자신과 함께 가 줄 것이다.", "교우대상의 은혜\n당신은 교우대상에게 큰 은혜를 입었다.", "교우대상의 라이벌\n당신은 교우대상을 라이벌이라고 생각한다. 이는 일반적인 감정일 수도 있고, 서로 절차탁마 하는 관계일 수도 있다.", "교우대상에 대한 흥미\n당신은 교우대상에게 흥미를 품고 있다. 그를 보는것이 재미있어서 그의 행동을 지켜보고 싶다.", "교우대상에 대한 우정\n당신은 교우대상을 벗이라고 생각한다. 언제 어디서나 그 마음은 변하지 않을 것이다.", "교우대상의 동지\n당신은 교우대상과 뜻을 함께 한다. 언제나 어디서나 그 마음은 변하지 않을 것이다.", "교우대상에 대한 이해\n당신은 교우대상을 이해하고 싶다. 그는 당신과는 다른 새로운 관점을 보여준다.", "교우대상의 은혜\n당신은 교우대상에게 큰 은혜를 입었다.", "교우대상의 라이벌\n당신은 교우대상을 라이벌이라고 생각한다. 이는 일반적인 감정일 수도 있고, 서로 절차탁마 하는 관계일 수도 있다.", "교우대상에 대한 흥미\n당신은 교우대상에게 흥미를 품고 있다. 그를 보는것이 재미있어서 그의 행동을 지켜보고 싶다.", "교우대상에 대한 우정\n당신은 교우대상을 벗이라고 생각한다. 언제 어디서나 그 마음은 변하지 않을 것이다.", "교우대상의 동지\n당신은 교우대상과 뜻을 함께 한다. 언제나 어디서나 그 마음은 변하지 않을 것이다.", "교우대상에 대한 이해\n당신은 교우대상을 이해하고 싶다. 그는 당신과는 다른 새로운 관점을 보여준다.", "교우대상에 대한 진력\n당신은 교우대상을 힘껏 돕고 싶다. 그것은 그의 인품 때문일 수도, 당신의 집착 때문일 수도 있다.", "교우대상과의 사제관계\n당신은 교우대상과 사제관계를 맺었다. 어느쪽이라도 상관은 없지만 많은 것을 가르치거나 배울 수 있을 것이다.", "교우대상과의 고용관계\n당신은 교우대상과 고용관계에 있다. 당신과 그는 ", "교우대상의 이웃\n당신은 교우대상의 이웃이다. 매일 아침 인사를 나누는 정도일 수도 있고, 함께 저녁을 먹는 사이일 수도 있다.", "교우대상과의 거래\n당신은 교우대상과 장사를 한다. 서로에게 이익이 있는 좋은 거래를 할 수 있는 상대다.", "교우대상의 가족\n당신은 교우대상과 함께 살고 있다. 같은집에 누군가 있으면 쓸쓸하지 않을 것이다.", "교우대상에 대한 진력\n당신은 교우대상을 힘껏 돕고 싶다. 그것은 그의 인품 때문일 수도, 당신의 집착 때문일 수도 있다.", "교우대상과의 사제관계\n당신은 교우대상과 사제관계를 맺었다. 어느쪽이라도 상관은 없지만 많은 것을 가르치거나 배울 수 있을 것이다.", "교우대상과의 고용관계\n당신은 교우대상과 고용관계에 있다. 당신과 그는 ", "교우대상의 이웃\n당신은 교우대상의 이웃이다. 매일 아침 인사를 나누는 정도일 수도 있고, 함께 저녁을 먹는 사이일 수도 있다.", "교우대상과의 거래\n당신은 교우대상과 장사를 한다. 서로에게 이익이 있는 좋은 거래를 할 수 있는 상대다.", "교우대상의 가족\n당신은 교우대상과 함께 살고 있다. 같은집에 누군가 있으면 쓸쓸하지 않을 것이다."]; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - text = "" + (tableName) + "([" + (number) + "]) > " + (result); - return text; - }, $LogHorizon_Korean_getFriendlyChartDiceCommandResult$33.$$arity = 1); - - Opal.def(self, '$getPrefixedMagickItemDiceCommandResult', $LogHorizon_Korean_getPrefixedMagickItemDiceCommandResult$34 = function $$getPrefixedMagickItemDiceCommandResult(command) { - var $a, $b, self = this, rank = nil, table_1 = nil, table_2 = nil, table_3 = nil, tableName = nil, table = nil, $case = nil, result = nil, number = nil, text = nil; - - - if ($truthy(/MGR([1-3])/['$==='](command))) { - } else { - return nil - }; - rank = $$($nesting, 'Regexp').$last_match(1).$to_i(); - table_1 = ["접두어:기합의 해당태그:모든 무기\n아이템 효과:이 무기의【공격력】에 +1한다.", "접두어:비술의 해당태그:[지팡이][마석]\n아이 템효과:이 아이템의【마력】에 +1한다.", "접두어:일격의 해당태그:[백병공격]가능한 무기\n아이템 효과:〔기동:대미지굴림〕이 무기에 의한 [백병공격]의 대미지 굴림에 +7. 시나리오 당 1회 사용 가능.", "접두어:저격의 해당태그:[활][투척]\n아이템 효과:〔기동:행동〕이 무기에 의한 [사격공격]과 동시에 사용한다. 공격의 사정거리에 +2Sq. 시나리오당 1회사용가능", "접두어:필살의 해당태그:모든 무기\n아이템 효과:〔기동:판정 직후〕이 무기에 의한[무기공격]의 [명중판정] 다이스에 6이 하나 이상 있다면 판정을 크리티컬로 간주한다. 시나리오당 1회 사용 가능.", "접두어:화염의 해당태그:모든 무기, [악기]\n아이템 효과:아이템에 [화염]태그를 추가한다.(이 효과를 선택할 때 태그를[냉기][전격][광휘][사독][정신] 중 하나로 바뀌어도 좋다. 그 경우「냉기의」「전격의」와 같이 변경할 것)", "접두어:기합의 해당태그:모든 무기\n아이템 효과:이 무기의【공격력】에 +1한다.", "접두어:비술의 해당태그:[지팡이][마석]\n아이 템효과:이 아이템의【마력】에 +1한다.", "접두어:일격의 해당태그:[백병공격]가능한 무기\n아이템 효과:〔기동:대미지굴림〕이 무기에 의한 [백병공격]의 대미지 굴림에 +7. 시나리오 당 1회 사용 가능.", "접두어:저격의 해당태그:[활][투척]\n아이템 효과:〔기동:행동〕이 무기에 의한 [사격공격]과 동시에 사용한다. 공격의 사정거리에 +2Sq. 시나리오당 1회사용가능", "접두어:필살의 해당태그:모든 무기\n아이템 효과:〔기동:판정 직후〕이 무기에 의한[무기공격]의 [명중판정] 다이스에 6이 하나 이상 있다면 판정을 크리티컬로 간주한다. 시나리오당 1회 사용 가능.", "접두어:화염의 해당태그:모든 무기, [악기]\n아이템 효과:아이템에 [화염]태그를 추가한다.(이 효과를 선택할 때 태그를[냉기][전격][광휘][사독][정신] 중 하나로 바뀌어도 좋다. 그 경우「냉기의」「전격의」와 같이 변경할 것)", "접두어:화염술사의 해당태그:[지팡이][마석][다리]\n아이템 효과:〔기동:대미지 굴림〕당신이 행할 [화염]태그를 가진 대미지굴림에 +7, 시나리오당 1회 사용가능 (이 효과를 선택할 때에는 태그를 [냉기], [전격], [광휘], [사독], [정신] 중 하나로 바꾸어도 좋다. 그 경우 접두어도 [빙술사의], [뇌술사의]와 같이 플레이 할것)", "접두어:철신의 해당태그:[방패][중갑][경갑]\n아이템 효과:당신은 장면이 시작될 때[경감(지근거리부터의 공격) :3]을 얻는다.", "접두어:화살막이의 해당태그:[盾][中鎧][軽鎧]\n아이템 효과:당신은 장면이 시작될 때[경감(지근거리 이외로부터의 공격) :3]을 얻는다.", "접두어:화염막이의 해당태그:[중갑][경갑][연갑]\n아이템 효과:당신은 장면 개시시에 [경감(화염):10]을 받는다.(이 효과를 선택할 때 경감할 태그를 [냉기], [전격], [사독], [광휘] [정신] 중 하나로 바꾸어도 좋다. 그 경우 접두어도「얼음막이의」,「벼락막이의」와 같이 변경할 것)", "접두어:근성의 해당태그:[중갑][머리]\n아이템 효과:〔기동:본문〕당신이 BS를 입은 직후에 사용한다. 직전에 입은 BS에서 하나를 선택해 해제한다. 시나리오당 1회 사용 가능", "접두어:치유의 해당태그:[팔]\n아이템 효과:당신의【회복력】에 +2한다.", "접두어:화염술사의 해당태그:[지팡이][마석][다리]\n아이템 효과:〔기동:대미지 굴림〕당신이 행할 [화염]태그를 가진 대미지굴림에 +7, 시나리오당 1회 사용가능 (이 효과를 선택할 때에는 태그를 [냉기], [전격], [광휘], [사독], [정신] 중 하나로 바꾸어도 좋다. 그 경우 접두어도 [빙술사의], [뇌술사의]와 같이 플레이 할것)", "접두어:철신의 해당태그:[방패][중갑][경갑]\n아이템 효과:당신은 장면이 시작될 때[경감(지근거리부터의 공격) :3]을 얻는다.", "접두어:화살막이의 해당태그:[盾][中鎧][軽鎧]\n아이템 효과:당신은 장면이 시작될 때[경감(지근거리 이외로부터의 공격) :3]을 얻는다.", "접두어:화염막이의 해당태그:[중갑][경갑][연갑]\n아이템 효과:당신은 장면 개시시에 [경감(화염):10]을 받는다.(이 효과를 선택할 때 경감할 태그를 [냉기], [전격], [사독], [광휘] [정신] 중 하나로 바꾸어도 좋다. 그 경우 접두어도「얼음막이의」,「벼락막이의」와 같이 변경할 것)", "접두어:근성의 해당태그:[중갑][머리]\n아이템 효과:〔기동:본문〕당신이 BS를 입은 직후에 사용한다. 직전에 입은 BS에서 하나를 선택해 해제한다. 시나리오당 1회 사용 가능", "접두어:치유의 해당태그:[팔]\n아이템 효과:당신의【회복력】에 +2한다.", "접두어:모래쥐의 해당태그:[다리][외투]\n아이템 효과:〔기동:클린업〕당신의【헤이트】에 ー2한다. 시나리오당1회 사용가능.", "접두어:올뺴미의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:인스턴트〕당신은 [암시]태그를 얻는다. 이 효과는 CS로 간주한다. 시나리오당 1회 사용가능.", "접두어:곤들매기의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:인스턴트〕당신은 [수생]태그를 얻는다. 이 효과는 CS로 간주한다. 시나리오당 1회 사용가능.", "접두어:눈썰미의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 드롭 아이템 굴림을 한 직후에 사용해 해당 굴림을 다시 굴린다. 시나리오당 1회 사용가능.", "접두어:보물 찾기의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 재물표 굴림을 한 직후에 사용해 해당 굴림을 다시 굴린다.. 시나리오당 1회 사용가능.", "접두어:돌변의 해당태그:[가방]\n아이템 효과:〔기동:인스턴트〕당신은 곧바로《장비 변경》을 한다. 시나리오당 1회 사용가능.", "접두어:모래쥐의 해당태그:[다리][외투]\n아이템 효과:〔기동:클린업〕당신의【헤이트】에 ー2한다. 시나리오당1회 사용가능.", "접두어:올뺴미의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:인스턴트〕당신은 [암시]태그를 얻는다. 이 효과는 CS로 간주한다. 시나리오당 1회 사용가능.", "접두어:곤들매기의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:인스턴트〕당신은 [수생]태그를 얻는다. 이 효과는 CS로 간주한다. 시나리오당 1회 사용가능.", "접두어:눈썰미의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 드롭 아이템 굴림을 한 직후에 사용해 해당 굴림을 다시 굴린다. 시나리오당 1회 사용가능.", "접두어:보물 찾기의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 재물표 굴림을 한 직후에 사용해 해당 굴림을 다시 굴린다.. 시나리오당 1회 사용가능.", "접두어:돌변의 해당태그:[가방]\n아이템 효과:〔기동:인스턴트〕당신은 곧바로《장비 변경》을 한다. 시나리오당 1회 사용가능."]; - table_2 = ["접두어:분노의 해당태그:[양손]무기\n아이템 효과:〔기동:대미지굴림〕이 무기에 의한 [무기공격]의 대미지 굴림에+[당신의【헤이트】]. 장면에 1회 사용가능.", "접두어:연격의 해당태그:[한손]무기\n아이템 효과:〔기동:판정 직후〕이 무기에 의한 [무기공격]의 [명중판정]을 다시 굴린다. 장면에 1회 사용가능.", "접두어:예리한 해당태그:[검][카타나][창]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D", "접두어:치명타의 해당태그:[둔기/도끼][격투][채찍][지팡이]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D", "접두어:마탄의 해당태그:[활][투척]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D", "접두어:지력의 해당태그:모든무기, [마석][악기]\n아이템 효과:당신의 [마법공격], [특수공격]의 대미지 굴림에 +1D. 이 효과는 중첩되지 않는다.", "접두어:분노의 해당태그:[양손]무기\n아이템 효과:〔기동:대미지굴림〕이 무기에 의한 [무기공격]의 대미지 굴림에+[당신의【헤이트】]. 장면에 1회 사용가능.", "접두어:연격의 해당태그:[한손]무기\n아이템 효과:〔기동:판정 직후〕이 무기에 의한 [무기공격]의 [명중판정]을 다시 굴린다. 장면에 1회 사용가능.", "접두어:예리한 해당태그:[검][카타나][창]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D", "접두어:치명타의 해당태그:[둔기/도끼][격투][채찍][지팡이]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D", "접두어:마탄의 해당태그:[활][투척]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D", "접두어:지력의 해당태그:모든무기, [마석][악기]\n아이템 효과:당신의 [마법공격], [특수공격]의 대미지 굴림에 +1D. 이 효과는 중첩되지 않는다.", "접두어:악귀퇴치의 해당태그:모든 무기\n아이템 효과:이 무기에 의한 [인간형]에 대한 [무기공격]의 대미지에 +10 (이효과를 선택할 때 태그를 [자연],[정령],[환수],[불사],[인조],[인간]중 하나로 바꾸어도 좋다. 그 경우 접두어도「정령퇴치의」 「환수퇴치의」와 같이 변경할 것)", "접두어:견고한 해당태그:[중갑][경갑][연갑]\n아이템 효과:이 방어구의 【물리방어력】에 +4", "접두어:항마의 해당태그:[중갑][경갑][연갑]\n아이템 효과:이 방어구의 【마법방어력】에 +4", "접두어:방벽의 해당태그:[방패][머리]\n아이템 효과:당신은 장면이 시작될 때 [장벽:10]을 얻는다.", "접두어:인내의 해당태그:[방패][머리]\n아이템 효과:〔기동:본문〕당신이 강제적인 이동을 받았을 때에 사용해 해당 거리를ー1Sq한다.", "접두어:호법의 해당태그:[팔]\n아이템 효과:당신이 부여할 [장벽]의 강도에 +5.", "접두어:악귀퇴치의 해당태그:모든 무기\n아이템 효과:이 무기에 의한 [인간형]에 대한 [무기공격]의 대미지에 +10 (이효과를 선택할 때 태그를 [자연],[정령],[환수],[불사],[인조],[인간]중 하나로 바꾸어도 좋다. 그 경우 접두어도「정령퇴치의」 「환수퇴치의」와 같이 변경할 것)", "접두어:견고한 해당태그:[중갑][경갑][연갑]\n아이템 효과:이 방어구의 【물리방어력】에 +4", "접두어:항마의 해당태그:[중갑][경갑][연갑]\n아이템 효과:이 방어구의 【마법방어력】에 +4", "접두어:방벽의 해당태그:[방패][머리]\n아이템 효과:당신은 장면이 시작될 때 [장벽:10]을 얻는다.", "접두어:인내의 해당태그:[방패][머리]\n아이템 효과:〔기동:본문〕당신이 강제적인 이동을 받았을 때에 사용해 해당 거리를ー1Sq한다.", "접두어:호법의 해당태그:[팔]\n아이템 효과:당신이 부여할 [장벽]의 강도에 +5.", "접두어:맥동하는 해당태그:[팔]\n아이템 효과:당신이 부여하는 [재생]의 강도에+3.", "접두어:질주하는 해당태그:[다리][외투]\n아이템 효과:〔기동:행동〕당신이 《런》, 《대시》를 사용했을 때에 사용해 이동거리를 +1Sq 한다. ", "접두어:신속의 해당태그:[다리][외투]\n아이템 효과:이 아이템의 [행동수정]에 +3.", "접두어:역경의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 [전투불능]이 된 직후 사용할 수 있다.당신은 【인과력】1점 얻는다. 장면에 1회사용 가능", "접두어:숲지름 해당태그:[보조장비][악기][가방]\n아이템 효과:당신이 장면을 시작 될 때 [경감([천연]프롭, 기믹에서 오는 데미지): 15]를 얻는다.(이 효과를 선택할 때 태그를[마법], [기계] 중 하나로 바꾸어도 좋다. 그 경우 접두어도 [지옥지름], [함정지름]과 같이 변경할 것)", "접두어:여행자의 해당태그:[가방]\n아이템 효과:이 아이템에 [소지품 슬롯] 4개를 추가한다.", "접두어:맥동하는 해당태그:[팔]\n아이템 효과:당신이 부여하는 [재생]의 강도에+3.", "접두어:질주하는 해당태그:[다리][외투]\n아이템 효과:〔기동:행동〕당신이 《런》, 《대시》를 사용했을 때에 사용해 이동거리를 +1Sq 한다. ", "접두어:신속의 해당태그:[다리][외투]\n아이템 효과:이 아이템의 [행동수정]에 +3.", "접두어:역경의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 [전투불능]이 된 직후 사용할 수 있다.당신은 【인과력】1점 얻는다. 장면에 1회사용 가능", "접두어:숲지름 해당태그:[보조장비][악기][가방]\n아이템 효과:당신이 장면을 시작 될 때 [경감([천연]프롭, 기믹에서 오는 데미지): 15]를 얻는다.(이 효과를 선택할 때 태그를[마법], [기계] 중 하나로 바꾸어도 좋다. 그 경우 접두어도 [지옥지름], [함정지름]과 같이 변경할 것)", "접두어:여행자의 해당태그:[가방]\n아이템 효과:이 아이템에 [소지품 슬롯] 4개를 추가한다."]; - table_3 = ["접두어:기백의 해당태그:모든 무기\n아이템 효과:이 무기의【공격력】에 +3한다.", "접두어:신비의 해당태그:[지팡이][마석]\n아이템 효과:이 무기의【마력】에 +3한다.", "접두어:원격의 해당태그:[활][트착]\n아이템 효과:이 무기의 사정거리에 +1Sq한다.", "접두어:흡혈의 해당태그:[백병공격]가능한 무기\n아이템 효과:이 무기에의한[백병공격]으로 데미지를 입혔을 때【HP】는5점 회복된다.", "접두어:충격의 해당태그:[한손]무기\n아이템 효과:이 무기에 의한《기본무기공격》으로 데미지를 입혔을 때 공격 대상에게 [멍함]을 입힌다.", "접두어:노호의 해당태그:[양손]무기\n아이템 효과:이 무기에 의한《기본무기공격》으로 데미지를 입혔을 때 공격 대상에게 [위축]을 입힌다.", "접두어:기백의 해당태그:모든 무기\n아이템 효과:이 무기의【공격력】에 +3한다.", "접두어:신비의 해당태그:[지팡이][마석]\n아이템 효과:이 무기의【마력】에 +3한다.", "접두어:원격의 해당태그:[활][트착]\n아이템 효과:이 무기의 사정거리에 +1Sq한다.", "접두어:흡혈의 해당태그:[백병공격]가능한 무기\n아이템 효과:이 무기에의한[백병공격]으로 데미지를 입혔을 때【HP】는5점 회복된다.", "접두어:충격의 해당태그:[한손]무기\n아이템 효과:이 무기에 의한《기본무기공격》으로 데미지를 입혔을 때 공격 대상에게 [멍함]을 입힌다.", "접두어:노호의 해당태그:[양손]무기\n아이템 효과:이 무기에 의한《기본무기공격》으로 데미지를 입혔을 때 공격 대상에게 [위축]을 입힌다.", "접두어:갑주비늘 해당태그:[방패][중갑][경갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(지근거리로부터의 공격):10]을 얻는다.", "접두어:화살반사 해당태그:[방패][경갑][연갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(지근거리 이외로부터의 공격) :10]을 얻는다.", "접두어:내화의 \t해당태그:[중갑][경갑][연갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(화염) :25]를 얻는다. (이 효과를 선택할 때 경감할 태그를 [냉기], [전격], [사독], [광휘], [정신]중 하나로 바꾸어도 좋다. 이경우 접두어도「내빙의」「내전의」와 같이 변경했어)", "접두어:성채의 \t해당태그:[방패][머리]\n아이템 효과:당신은 장면이 시작 될 때 【장벽:20】을 얻는다.", "접두어:정찰의 \t해당태그:[머리]\n아이템 효과:당신이 행할[정찰]태그를 가진 행동 및《이상탐지》판정에+1D.", "접두어:쾌유의 \t해당태그:[머리]\n아이템 효과:당신의【회복력】에+5.", "접두어:갑주비늘 해당태그:[방패][중갑][경갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(지근거리로부터의 공격:10]을 얻는다.", "접두어:화살반사 해당태그:[방패][경갑][연갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(지근거리 이외로부터의 공격) :10]을 얻는다.", "접두어:내화의 \t해당태그:[중갑][경갑][연갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(화염) :25]를 얻는다. (이 효과를 선택할 때 경감할 태그를 [냉기], [전격], [사독], [광휘], [정신]중 하나로 바꾸어도 좋다. 이경우 접두어도「내빙의」「내전의」와 같이 변경했어)", "접두어:성채의 \t해당태그:[방패][머리]\n아이템 효과:당신은 장면이 시작 될 때 【장벽:20】을 얻는다.", "접두어:정찰의 \t해당태그:[머리]\n아이템 효과:당신이 행할[정찰]태그를 가진 행동 및《이상탐지》판정에+1D.", "접두어:쾌유의 \t해당태그:[머리]\n아이템 효과:당신의【회복력】에+5.", "접두어:함정해제의 해당태그:[팔]\n아이템 효과:〔기동:판정 직전〕당신이 《프롭 해제》를 행할 때 사용하며그 판정은 크리티컬이 된다. 장면에1회 사용 가능", "접두어:부동의\t 해당태그:[다리][외투]\n아이템 효과:당신은 [멍함],[경직]상태가 되어도 [저지능력]을 잃지 않는다.", "접두어:그림자질주 해당태그:[다리][외투]\n아이템 효과:당신이 [은밀상태]일 때《런》을 해도 [은밀상태]는 해제되지 않는다.", "접두어:심해의\t 해당태그:[보조장비][악기][가방]\n아이템 효과: 당신은 [암시],[수생]태그를 얻는다.", "접두어:금전운의\t 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 재물표 굴림 또는 드롭 아이템 굴림을 한 직후에 사용하며 해당 굴림을 다시 굴린다. 장면에1회 사용할 수 있다.", "접두어:함정회피의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:데미지 적용 직전〕당신에게 적용될 예정인 프롭 및[기믹]에 의한 데미지를 무효로 할 수 있다. 시나리오당1회 사용할 수 있다.", "접두어:함정해제의 해당태그:[팔]\n아이템 효과:〔기동:판정 직전〕당신이 《프롭 해제》를 행할 때 사용하며그 판정은 크리티컬이 된다. 장면에1회 사용 가능", "접두어:부동의\t 해당태그:[다리][외투]\n아이템 효과:당신은 [멍함],[경직]상태가 되어도 [저지능력]을 잃지 않는다.", "접두어:그림자질주 해당태그:[다리][외투]\n아이템 효과:당신이 [은밀상태]일 때《런》을 해도 [은밀상태]는 해제되지 않는다.", "접두어:심해의\t 해당태그:[보조장비][악기][가방]\n아이템 효과: 당신은 [암시],[수생]태그를 얻는다.", "접두어:금전운의\t 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 재물표 굴림 또는 드롭 아이템 굴림을 한 직후에 사용하며 해당 굴림을 다시 굴린다. 장면에1회 사용할 수 있다.", "접두어:함정회피의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:데미지 적용 직전〕당신에게 적용될 예정인 프롭 및[기믹]에 의한 데미지를 무효로 할 수 있다. 시나리오당1회 사용할 수 있다."]; - tableName = "프리픽스드 아이템 효과표"; - table = nil; - $case = rank; - if ((1)['$===']($case)) { - tableName = $rb_plus(tableName, "(매직 그레이드1)"); - table = table_1;} - else if ((2)['$===']($case)) { - tableName = $rb_plus(tableName, "(매직 그레이드2)"); - table = table_2;} - else if ((3)['$===']($case)) { - tableName = $rb_plus(tableName, "(매직그레이드3)"); - table = table_3;}; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - text = "" + (tableName) + "([" + (number) + "]) > " + (result); - return text; - }, $LogHorizon_Korean_getPrefixedMagickItemDiceCommandResult$34.$$arity = 1); - - Opal.def(self, '$getHitLocationDiceCommandResult', $LogHorizon_Korean_getHitLocationDiceCommandResult$35 = function $$getHitLocationDiceCommandResult(command) { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - if ($truthy("HLOC"['$==='](command))) { - } else { - return nil - }; - tableName = "공격명중장소"; - table = ["이마", "뺨", "코", "턱", "뒷통수", "목", "귀", "눈", "관자놀이", "팔", "팔꿈치", "손", "손가락", "심장", "위", "폐", "갈비", "어깨", "등", "옆구리", "허리", "아랫배", "허벅지", "목", "장딴지", "아킬레스건", "발 뒤꿈치", "정강이", "새끼 발가락", "무릅", "사회적 신용", "인간관계", "첫사랑의 추억", "완벽한 예측", "마음", "안경"]; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return "" + (tableName) + "(" + (number) + "):" + (result); - }, $LogHorizon_Korean_getHitLocationDiceCommandResult$35.$$arity = 1); - - Opal.def(self, '$getPCNameDiceCommandResult', $LogHorizon_Korean_getPCNameDiceCommandResult$36 = function $$getPCNameDiceCommandResult(command) { - var $a, $b, self = this, tableName = nil, table = nil, result = nil, number = nil; - - - if ($truthy("PCNM"['$==='](command))) { - } else { - return nil - }; - tableName = "PC名"; - table = ["Kuraudo", "Sefirosu", "Kirito", "Asuna", "Leeroy Jenkins", "Buront", "의사양반", "거대도너츠", "이등병가민", "버섯대위", "∃@ㅏ이돌전도사E", "작업장", "크로울리", "다이테스", "타츠야", "미유키", "슬레인", "타카본씨", "흑의 연금술사", "†사랑의천사네코히메†", "데스★건", "卍칠흑의타천사卍", "광속의이명을가지고중력을자유자재로조종하는고귀한기사", "신세계†영걸살해자", "로그호라", "ㄱㄱㄱㄱ", "창고", "은행", "보관", "위탁", "사스케", "라파엘로", "도나텔로", "미켈란젤로", "센다이", "후지키도"]; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return "" + (tableName) + "(" + (number) + "):" + (result); - }, $LogHorizon_Korean_getPCNameDiceCommandResult$36.$$arity = 1); - - Opal.def(self, '$getInventionAttributeTextDiceCommandResult', $LogHorizon_Korean_getInventionAttributeTextDiceCommandResult$37 = function $$getInventionAttributeTextDiceCommandResult(command) { - var $a, $$38, self = this, tableName = nil, table_indicate_string = nil, is_single = nil, result = nil, number = nil; - - - if ($truthy(/IAT([ABMDLT]*)/['$==='](command))) { - } else { - return nil - }; - tableName = "로데릭 연구소의 새로운 발명"; - table_indicate_string = (function() {if ($truthy(($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $$($nesting, 'Regexp').$last_match(1)['$!=']("") : $a))) { - return $$($nesting, 'Regexp').$last_match(1) - } else { - return "MDLT" - }; return nil; })(); - is_single = table_indicate_string.$length()['$=='](1); - result = []; - number = []; - $send(table_indicate_string.$split(/(?:)/), 'each', [], ($$38 = function(char$){var self = $$38.$$s || this, $b, $c, $$39, $$40, $$41, $$42, dice_result = nil, dice_str = nil, $case = nil; - - - - if (char$ == null) { - char$ = nil; - }; - $c = self.$roll(1, 6), $b = Opal.to_ary($c), (dice_result = ($b[0] == null ? nil : $b[0])), (dice_str = ($b[1] == null ? nil : $b[1])), $c; - number['$<<'](dice_str); - return result['$<<']((function() {$case = char$; - if ("A"['$===']($case) || "M"['$===']($case)) {return $send(["빛나고 돌며 소리가 울리는", "무언가를 자각한", "단단하고 강한", "굉장히 빠르거나 거친", "대량 생산이 가능한", "좋은 감촉의"], 'map', [], ($$39 = function(e){var self = $$39.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus((function() {if ($truthy(is_single)) { - return "특징A(장점):" - } else { - return "" - }; return nil; })(), e);}, $$39.$$s = self, $$39.$$arity = 1, $$39))} - else if ("B"['$===']($case) || "D"['$===']($case)) {return $send(["중독성 있는", "굉장히 무거운", "굉장히 냄새나는", "망가지기 쉬운", "설명할 것이 많은", "버려도 버려도 되돌아오는\t"], 'map', [], ($$40 = function(e){var self = $$40.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus((function() {if ($truthy(is_single)) { - return "특징B(단점):" - } else { - return "" - }; return nil; })(), e);}, $$40.$$s = self, $$40.$$arity = 1, $$40))} - else if ("L"['$===']($case)) {return $send(["아름다운", "소박한", "풍류있는", "참신한", "형언할 수 없는", "목숨을 깍는 형태를 한"], 'map', [], ($$41 = function(e){var self = $$41.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus((function() {if ($truthy(is_single)) { - return "형용:" - } else { - return "" - }; return nil; })(), e);}, $$41.$$s = self, $$41.$$arity = 1, $$41))} - else if ("T"['$===']($case)) {return $send(["무기", "방어구", "악세사리", "식량", "약품", "장난감"], 'map', [], ($$42 = function(e){var self = $$42.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus((function() {if ($truthy(is_single)) { - return "발명품의 종류:" - } else { - return "" - }; return nil; })(), e);}, $$42.$$s = self, $$42.$$arity = 1, $$42))} - else { return nil }})()['$[]']($rb_minus(dice_result, 1)));}, $$38.$$s = self, $$38.$$arity = 1, $$38)); - return "" + (tableName) + "([" + (number.$join(",")) + "]):" + (result.$join(" ")); - }, $LogHorizon_Korean_getInventionAttributeTextDiceCommandResult$37.$$arity = 1); - - Opal.def(self, '$getTroubleInAkibaStreetDiceCommandResult', $LogHorizon_Korean_getTroubleInAkibaStreetDiceCommandResult$43 = function $$getTroubleInAkibaStreetDiceCommandResult(command) { - var $$44, self = this, tableName = nil, number = nil, result = nil; - - - if ($truthy(command['$===']("TIAS"))) { - } else { - return nil - }; - tableName = "아키바 거리에서 발생하는 문제"; - number = []; - result = []; - $send([["〈로그 호라이즌〉이", "〈초승달 동맹〉이", "〈D.D.D〉가", "〈흑검기사단〉이", "〈서풍여단〉이", "〈로데릭 상회〉가"], ["길드 회관에서", "무위도식 골목에서", "거리 한가운데에서", "수풍관에서", "공중목욕탕에서", "하수구에서"], ["불합리한", "겸손", "달콤한", "부자연스러운", "위험한", "머리 나쁜"], ["싸움", "연애소식", "장난", "음모", "사고", "분실물"]], 'each', [], ($$44 = function(table){var self = $$44.$$s || this, $a, $b, dice_result = nil, dice_str = nil; - - - - if (table == null) { - table = nil; - }; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice_result = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - number['$<<'](dice_str); - return result['$<<'](table['$[]']($rb_minus(dice_result, 1)));}, $$44.$$s = self, $$44.$$arity = 1, $$44)); - return "" + (tableName) + "([" + (number.$join(",")) + "]):" + (result.$join(" ")); - }, $LogHorizon_Korean_getTroubleInAkibaStreetDiceCommandResult$43.$$arity = 1); - - Opal.def(self, '$getAbandonedChildDiceCommandResult', $LogHorizon_Korean_getAbandonedChildDiceCommandResult$45 = function $$getAbandonedChildDiceCommandResult(command) { - var $$46, $$47, $$48, $$49, $$50, $$51, $$52, self = this, tableName = nil, number = nil, result = nil; - - - if ($truthy(command['$===']("ABDC"))) { - } else { - return nil - }; - tableName = "버림받은 아이"; - number = []; - result = []; - $send([$send(["꽃의 이름", "별의 이름", "색깔 종류", "돌의 이름", "동물 이름", "번호"], 'map', [], ($$46 = function(e){var self = $$46.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus("이름:", e);}, $$46.$$s = self, $$46.$$arity = 1, $$46)), $send(["폐 건물", "길가", "식객", "나무 위", "공원", "하수도"], 'map', [], ($$47 = function(e){var self = $$47.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus("주거:", e);}, $$47.$$s = self, $$47.$$arity = 1, $$47)), $send(["무언가를 찾기", "요리", "노래", "장사", "손재주있는", "약삭빠른 행동"], 'map', [], ($$48 = function(e){var self = $$48.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus("특기:", e);}, $$48.$$s = self, $$48.$$arity = 1, $$48)), $send(["깡마른", "키작은", "발육이 좋은", "키가 큰", "부드럽고 탄력있는", "근육질의"], 'map', [], ($$49 = function(e){var self = $$49.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus("체형:", e);}, $$49.$$s = self, $$49.$$arity = 1, $$49)), $send(["과일", "고기", "신선한 야채", "생선", "과자", "벌레"], 'map', [], ($$50 = function(e){var self = $$50.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus("좋아하는 음식:", e);}, $$50.$$s = self, $$50.$$arity = 1, $$50)), $send(["말이 서툰", "사투리", "일반적인 말투", "사극체", "3인칭", "귀국자녀"], 'map', [], ($$51 = function(e){var self = $$51.$$s || this; - - - - if (e == null) { - e = nil; - }; - return $rb_plus("말투:", e);}, $$51.$$s = self, $$51.$$arity = 1, $$51))], 'each', [], ($$52 = function(table){var self = $$52.$$s || this, $a, $b, dice_result = nil, dice_str = nil; - - - - if (table == null) { - table = nil; - }; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice_result = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - number['$<<'](dice_str); - return result['$<<'](table['$[]']($rb_minus(dice_result, 1)));}, $$52.$$s = self, $$52.$$arity = 1, $$52)); - return "" + (tableName) + "([" + (number.$join(",")) + "]):" + (result.$join(" ")); - }, $LogHorizon_Korean_getAbandonedChildDiceCommandResult$45.$$arity = 1); - - Opal.def(self, '$getMusicalInstrumentTypeDiceCommandResult', $LogHorizon_Korean_getMusicalInstrumentTypeDiceCommandResult$53 = function $$getMusicalInstrumentTypeDiceCommandResult(command) { - var $a, $b, $c, self = this, type = nil, is_roll = nil, tableName = nil, type_name = nil, dice = nil, result = nil; - - - if ($truthy(/MII(\d?)/['$==='](command))) { - } else { - return nil - }; - $b = (function() {if ($truthy(($truthy($c = $$($nesting, 'Regexp').$last_match(1)) ? $$($nesting, 'Regexp').$last_match(1)['$!=']("") : $c))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), false] - } else { - return self.$roll(1, 6) - }; return nil; })(), $a = Opal.to_ary($b), (type = ($a[0] == null ? nil : $a[0])), (is_roll = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = $rb_lt(type, 1)) ? $a : $rb_lt(6, type)))) { - return nil}; - tableName = "악기 종류 표"; - type_name = ["타악기1", "건반악기", "현악기1", "현악기2", "관악기1", "관악기2"]['$[]']($rb_minus(type, 1)); - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - result = [["캐스터네츠", "마라카스", "심벌즈", "트라이앵글", "북", "드럼"], ["목제 실로폰", "철제 실로폰", "하모늄", "하프시 코드", "피아노", "클라비코드"], ["하프", "류트", "기타", "바이올린", "첼로", "리라"], ["비파", "6현금", "호금", "샤미센", "시타르", "덜시머"], ["트럼펫", "호른", "트럼본", "튜바", "피리", "클라리넷"], ["리코더", "오카리나", "오보에", "하모니카", "아코디언", "퉁소"]]['$[]']($rb_minus(type, 1))['$[]']($rb_minus(dice, 1)); - return $rb_plus($rb_plus(tableName.$to_s(), (function() {if ($truthy(is_roll)) { - return "" + "(" + (type) + ")" - } else { - return "" - }; return nil; })()), "" + ":" + (type_name) + "(" + (dice) + "):" + (result)); - }, $LogHorizon_Korean_getMusicalInstrumentTypeDiceCommandResult$53.$$arity = 1); - return (Opal.def(self, '$getEastalDiceCommandResult', $LogHorizon_Korean_getEastalDiceCommandResult$54 = function $$getEastalDiceCommandResult(command) { - var $a, $b, self = this, cr = nil, tableName = nil, table = nil, d1 = nil, d2 = nil, value = nil, result = nil; - - - if ($truthy(command['$=~'](/ESTL(\d+)/))) { - } else { - return nil - }; - cr = $$($nesting, 'Regexp').$last_match(1).$to_i(); - if ($truthy(($truthy($a = $rb_ge(cr, 1)) ? $rb_le(cr, 10) : $a))) { - } else { - return nil - }; - tableName = "이스탈 탐색표"; - table = ["숲 베리 따기: 여러분은 베리가 열린 수풀을 발견한다. 탐색을 하는 PC는 난이도 8의 [지각판정]을 한다(한 명당 1회만). 성공한 사람은 「숲 베리 (맘대로 샌드위치에 상당)」를 하나 입수한다.", "나뭇잎 사이로 햇빛이 비치는 산책길: 나뭇잎 사이로 햇빛이 비치는 밝은 잡목림이 이어진다. 적당히 사람의 손이 닿아서 산책하는 기분으로 걸을 수 있다.", "군생지에는 주의: 여러분은 트리피드의 군생지에 들어오고 말았다! 힘겨운 싸움 끝에 다행히도 승리를 거머쥐었지만, 여러분 전원은 [피로: 10]을 입는다.", "페어 트레이드: 여러분은 〈대지인〉 농부를 만났다. 20G를 내면 「계절야채 포토푀」를 구입할 수 있다(다 합쳐서 PC와 같은 수까지).", "강에서의 삶: 제방을 따라 강 근처를 걷는다. 작은 선착장에서 위세 좋은 목소리가 들린다. 물고기를 잡고 있는 모양이다.", "건너려 해도 건널 수 없는: 강물이 붇는 바람에 여러분은 강을 건널 곳을 찾느라 고생한다. [수생] 태그를 소지하고 있거나 얻을 수 있는 수단이 있는 PC가 한 명이라도 있다면 아무 문제 없다. 없다면 멀리 우회하여 전원 [피로: 10]을 입는다.", "코볼트 조우전: 여러분은 코볼트 무리를 물리쳤다! 전원 10G를 손에 넣는다. 쫓아가서 섬멸한다면 전원 [피로: 10]을 입는 대신 추가로 「코볼트의 이빨 [환전](10G)」를 한 사람당 1개 손에 넣는다.", "풍요로운 전원 풍경: 큰 논이 몇 자리나 펼쳐져 있다. 가을이라면 황금색 벼 이삭이 바람에 흔들릴 것이다.", "불운한 예감: 검은 고양이가 눈앞을 가로지르고, 까마귀가 머리 위에서 울고, 신발 끈이 뚝 끊어졌다. 왠지 모를 한기까지. 여러분 전원은 【인과력】을 1점 잃는다.", "친구의 친구는 친구: PC 전원은 2D를 굴린다. 가장 큰 눈이 나온 「당신」은 가장 적은 눈이 나온 「대상」과 공통의 지인에 대한 화제로 이야기꽃을 피운다. 당신과 대상은 「인과력 티켓」 한 장으로 각자 서로에 대한 커넥션을 취할 수 있다. 관계는「우정, 이해」 중 하나가 된다.", "시간은 흐른다: 길을 따라 외벽만 남은 철근 빌딩이 서 있다. 지금은 새의 둥지가 된 듯하다.", "갑작스러운 폭우!: 여러분은 갑작스러운 폭우를 만나, 고생 끝에 폐가에 도착했다. 여러분 전원은 [식량] 아이템을 하나 소비해야 한다. 단, [피로] 회복량은 절반이다. [식량] 아이템을 소비할 수 없는 경우는【인과력】 1점을 잃는다.", "들꽃이 만발하다: 여러분은 넓은 꽃밭에 도착한다. 탐색을 하는 PC는 목표치 9의 [지식판정을 한다(한 명당 1회만). 성공한 사람은 「귀중한 약초 [환전] (20G)」를 하나 입수한다.", "녹색 터널: 멋진 할엽수가 나란히 늘어서서 녹색의 천장을 이루고 있다. 발치에는 부엽토가 두껍게 깔렸고, 곳곳에서 나무뿌리가 모습을 드러내고 있다.", "고블린 강습 부대: 여러분은 고블린 강습부대와의 조우전에 휘말렸다. 여러분 전원은 [피로: 20]을 입거나, 또는 [시나리오n회]형 특기의 사용횟수를 소비한다(여러분이 선택).", "정보교환: 여러분은 모험자 집단과 만났다. 대표자는 목표 10의 [교섭판정]을 한다(적절한 서브 직업이 있다면 +2의 보너스를 얻을 수도 있다). 성공하면 부근의 정보를 들을 수 있다. 여러분 중 하나는 다음에 하는 [정찰] 행동에 +2를 얻는다.", "못의 어부: 물이 가득한 못에 나왔다. 어부가 투망을 던지는 모습이 보인다.", "토막난 샛길: 산사태로 길이 무너져 내리고 말았다. 이 길은 사용할 수 없을 것 같다. [비행] 상태이거나 [비행] 상태를 얻을 수 있는 수단을 가진 PC가 한 명이라도 있다면 주변을 탐색할 수 있으므로 문제는 없다. 그렇지 않다면 여러분은 아주 멀리 돌아가야 한다. 여러분 전원은 [피로:25]를 입는다.", "코볼트를 물리쳐라!: 여러분은 코볼트 순찰대를 물리쳤다. 전원 [피로: (1D6+5)]를 입는 대신, 전리품으로 1인당 20G를 입수한다.", "대지의 은총: 이랑을 따라 채소의 파릇파릇한 잎이 무성하다. 맛있는 요리를 만들 수 있을 것 같다.", "미끄러져 굴러서: 가도를 걷고 있는데 갑자기 거대한 와일드 보어가 튀어나온다. 피하던 찰나에 넘어져서 여러분 전원은 [소모품] 아이템을 하나 잃는다. [소모품]아이템을 가지고 있지 않다면 【인과력】 1점을 잃는다.", "빙글빙글 꽈당: PC 전원은 2D를 굴린다. 가장 작은 눈의 「당신」은 젖은 풀에 발이 미끄러져 굴러떨어지고 만다. 구해준 동료는 「인과력 티켓」 한 장으로 「당신」에 대해 커넥션을 얻을 수 있다. 관계는 「비호, 친애」 중 하나가 된다.", "무인들이 꾼 꿈의 흔적: 반쯤 무너진 돌담이 이어진다. 아인과의 격렬한 싸움의 흔적도 지금은 희미하게 남아있을 뿐이다.", "오리무중: 짙은 안개가 낀다. 팔을 뻗으면 손끝이 안 보일 정도다. 여러분 전원은 [피로: 25]를 입거나 【인과력】 1점을 잃는다(여러분이 선택).", "치유의 샘물: 여러분은 세차게 솟구치는 맑은 물을 발견한다. 목표치 13의 [지각판정]을 한다. 누구든 한 명이라도 성공하면 이것이 매우 맑으며 마력이 있는 물이라는 것을 알게 된다. 길어 담아갈 수는 없지만, 마시면 즉석에서 【인과력】 1점을 얻는다.", "침엽수 숲: 침엽수가 울퉁불퉁한 나무껍질을 드러내고 있다. 그늘에 잡초가 적어 조금 쌀쌀한 인상을 받는다.", "어인의 습격: 여러분은 사하긴 순찰소대와 격렬한 싸움을 벌였다! 여러분 전원은 [피로: 25]를 입거나 [소모품] 아이템 2개를 잃는다(여러분이 선택).", "상부상조: 여러분은 꼼짝도 못 하고 서 있는 마차에 탄 여행자를 만났다. 그들을 돕는 경우, 도우려는 멤버 전원이 [조작판정]을 한다. 달성치 합계가 (PC 수ⅹ10)이상이라면 마차를 길에 되돌린다. 그 경우 1인당 20G의 사례금을 받는다.", "시냇물과 산들바람: 잔잔하게 흐르는 작은 시냇가로 나왔다. 수면을 스쳐 지나가는 산들바람에 기분이 상쾌하다.", "파이팅 일발!: 여러분은 절벽을 따라 난 좁은 통로를 나아가느라 체력만이 아니라 기력까지 소모한다. 여러분 전원은 [피로:15]를 입는다. 거기에 더하여 [피로: 15]를 입거나 【인과력】 1점을 잃는다(여러분이 선택).", "거인과 만나다: 숲 위로 불쑥 머리를 내민 것은 대머리 거인이었다. 전투에 승리한 여러분은 전원 25G를 입수한다. 거인의 보금자리를 찾으려면 대표자가 목표치 12의 [해석판정]에 성공해야 한다. 성공한 경우 거인의 보금자리에서 [마촉매6]을 1D6+1개 입수한다.", "휴식 장소: 쉬기 딱 좋은 도로 가의 공터를 발견한다. 예전에 누군가 같은 생각을 한 사람이 있었는지 모닥불을 피운 흔적도 있다.", "그럴 리가: 길을 잃고 말았다. 여러분 전원은 【인과력】을 2점 잃는다. 【인과력】을 잃을 수 없는 경우, 부족한 【인과력】 1점당 [피로: 15]를 입는다. 여러분의 동료중에 [지도 제작자]나 [척후]가 있다면 [피로: 15]는 [피로: 10]으로 그친다.", "좋아하는 애 있어?: 무슨 영문인지 여러분은 휴식 중에 좋아하는 이성에 대한 화제에 돌입하고 말았다. [애정] 또는 [사랑], [설렘]에 준하는 커넥션을 가지고 있는 PC는 그 사실을 고백할 수 있다. 그 경우, GM은 그 PC의 용기에 깊이 감동하며【인과력】 1점을 주자. 만약 고백 상대가 지금 파티에 있는 동료라면, 롤플레이에 따라서는 그 상대에게도 준다.", "저 다리를 건너서: 붉게 녹슨 철교가 강 위로 그림자를 드리우고 있다. 예전에는 전차가 이 다리 위를 건넜는지 이끼 사이로 레일이 엿보인다.", "얼음덩어리: 큼직한 우박이 내려 사정없이 여러분을 두들긴다. 주위는 탁 트인 토지라서 피할 수도 없다. 여러분 전원은 [피로: 30]을 입는다.", "두근두근 동굴: 여러분은 기분 나쁜 동굴을 발견한다. 탐색을 하는 PC는 목표치 12의 [지각판정]을 한다. 실패한 사람은 [피로: 10]을 입는다. 한 사람이라도 성공한 경우, 동굴 안에서 금화 100G가 들어있는 자루를 발견한다. 공평하게 나누자!", "수풀을 헤치고: 낮은 관목이 곳곳에 수풀을 이루고 있어 똑바로 전진하기 힘들다.하지만 누군가가 지나간 길이 있어서 헤매지 않고 끝날 것 같다.", "이곳에서 저지하라!: 여러분은 〈대지인〉의 마을 주변에서 와이번과의 전투에 돌입했다! 여러분 전원은 [피로: 30]을 입거나 【인과력】 2점을 잃는다(여러분이 선택).", "언젠가 지나온 길: 여러분은 아직 신출내기인 〈모험자〉들과 만났다. 뭔가 도움을 주고 싶다면 [소모품]을 몇 개쯤 건네줄 수도 있고, 뭐든 조언을 해줄 수도 있다. 그들은 거듭 감사하며 길을 떠난다. GM은 PC들의 롤플레이에 따라 【인과력】 1점을 줄 수 있다.", "계곡에 울리는 물소리: 가파른 골짜기 밑에서 기세 좋게 물이 흐른다. 그리 멀지않은 곳에서 폭포 소리가 들려온다.", "독 늪: 여러분은 썩은 내가 풍기는 늪지를 가로질렀다. 여러분 전원은 목표치 14의 [운동판정]을 해야 한다. 실패한 PC는 [소모품] 아이템을 2개 잃는다.", "고르곤 슬레이어: 여러분은 쇠로 된 피부\t를 지닌 소를 물리쳤다! 전원 【인과력】 1점을 잃는다. 전리품으로 【철우의 비늘 [환전] (35G)】를 인원수만큼 손에 넣는다.", "개척자들: 몇 명의 대지인이 숲을 개간하고 있다. 씨를 뿌리려면 조금 더 걸릴 것 같다.", "예상 밖의 조우: 10m가 넘는 녹색 드래곤과 우연히 마주친다. 왜 이런 곳에! 여러분은 전력을 다해 도망쳤다. 여러분 전원은 【인과력】을 2점 잃거나, [보조장비] 하나에 [파손] 태그를 입는다. 둘 다 할 수 없다면 [피로: 35]를 입는다.", "끝말잇기는 귀문: 여러분은 여행의 흥을 돋우기 위해 다 함께 끝말잇기를 하면서 걷고 있다. PC 전원은 「누」(GM은 다른걸로 바꿔도 좋다)로 시작하는 단어를 하나 발표한다. 가장 창피한 단어를 발표한 PC를 다 함께 결정한다. 그 PC에 대한 커넥션을 가지고 있는 다른 PC는 커넥션의 관계를 [동정], [실망], [재미있음]으로 변경할 수 있다.", "오래된 신역: 커다란 석제 토리이가 오랜세월의 풍파를 견디며 우뚝 솟아있다. 주위에 엄숙한 분위기가 가득했다.", "난기류: 돌풍은 회오리가 되었다! 여러분은 간신히 통과할 수 있었지만 멀쩡하지는 않았다. 여러분은 [피로: 35]를 입거나 [소모품] 2개를 잃는다(여러분이 선택).", "노리려면 월척을: 여러분은 멋진 낚시터를 발견한다. 탐색을 하는 PC는 [식량] 아이템을 하나 소비해서 목표치 13의 [조작판정]을 한다(어부나 그에 준하는 서브 직업에겐 +2를 줘도 좋다). 성공한 사람은「기름이 오른 송어 (정석 카레에 상당)」를 [1D/2]마리(최저 1마리) 입수한다.", "고목 미궁: 울퉁불퉁한 고목이 서로 얽혀 압박감을 느끼게 한다. 숲이 보내온 세월의 무게가 어깨를 짓누르는 듯하다.", "중과부적: 여러분은 무수한 구렁이에게 둘러싸였다! 여러분 전원은 [피로: 40]을 입거나 보조장비 하나에 [파손] 태그를 붙인다(여러분이 선택).", "축복의 고리: 여러분은 대지인의 마을에서 결혼을 축하하는 조촐한 연회를 접한다. 축복을 해주고 싶다면 대표 PC가 난이도 14의 [교섭] 판정을 한다. 선물로 [식량] 태그를 가진 아이템을 하나 내놓을 때마다 +2의 보너스를 얻는다. 성공한 경우, 어딘가에서 상쾌한 바람이 불어 여러분 전원은 【인과력】 1점을 얻는다. 그렇지 않은 경우라도 연회에는 초대받으며, 소박한 만찬을 먹고 전원의 [피로]가 -20 줄어든다.", "큰 강을 이루는 한 방울: 깨끗한 물이 세차게 솟아난다. 이 물은 분명 저 큰 강으로 이어질 것이다.", "냉랭한 산길: 여러분은 바람이 세차게 부는, 얼어붙을 듯한 산길을 걸어간다. [경감(냉기)를 가지고 있거나, 혹은 얻을 수 있는 PC는 이 영향을 받지 않는다. 그렇지 않은 PC는 【인과력】 2점을 잃거나 보조장비 하나에 [파손] 태그를 입는다(여러분이 선택). 양쪽 모두 선택할 수 없는 경우, [피로: 50]을 입는다.", "고블린의 야영지: 여러분은 야영 중인 고블린들을 물리쳤다! 전원 50G를 손에 넣는다. 목표치 14의 [지각판정]을 한다(한사람당 1회). 성공한 사람은 「고브 영웅상[환전] (60G)」을 하나 입수한다.", "줄곧 이어지는 생활: 산비탈의 한 면 전체에 밭들이 계단처럼 펼쳐져 있다. 이 정도의 논밭을 일구는 데 도대체 얼마나 많은 시간이 들었을까? 근처에는 틀림없이 〈대지인〉의 마을이 있을 것이다."]; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d2 = ($a[0] == null ? nil : $a[0])), $b; - value = $rb_plus($rb_minus($rb_plus(d1.$to_i(), d2.$to_i()), 2), $rb_times($rb_minus(cr, 1), 5)); - result = table['$[]'](value); - return "" + (tableName) + "CR" + (cr) + "(" + ($rb_plus(value, 7)) + "[" + (d1) + "," + (d2) + "])\n" + (result); - }, $LogHorizon_Korean_getEastalDiceCommandResult$54.$$arity = 1), nil) && 'getEastalDiceCommandResult'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/LostRecord.js b/src/assets/dicebot/LostRecord.js deleted file mode 100644 index 807449182..000000000 --- a/src/assets/dicebot/LostRecord.js +++ /dev/null @@ -1,24 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send; - - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'LostRecord'); - - var $nesting = [self].concat($parent_nesting), $LostRecord_initialize$1; - - - Opal.const_set($nesting[0], 'ID', "LostRecord"); - Opal.const_set($nesting[0], 'NAME', "ロストレコード"); - Opal.const_set($nesting[0], 'SORT_KEY', "ろすとれこおと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "※このダイスボットは部屋のシステム名表示用となります。\n" + "D66を振った時、小さい目が十の位になります。\n"); - return (Opal.def(self, '$initialize', $LostRecord_initialize$1 = function $$initialize() { - var $iter = $LostRecord_initialize$1.$$p, $yield = $iter || nil, self = this; - - if ($iter) $LostRecord_initialize$1.$$p = null; - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $LostRecord_initialize$1, false), [], null); - return (self.d66Type = 2); - }, $LostRecord_initialize$1.$$arity = 0), nil) && 'initialize'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/LostRoyal.js b/src/assets/dicebot/LostRoyal.js deleted file mode 100644 index be1cfb6b1..000000000 --- a/src/assets/dicebot/LostRoyal.js +++ /dev/null @@ -1,266 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $range = Opal.range, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$===', '$check_lostroyal', '$to_i', '$last_match', '$roll_fumble_chart', '$roll_wind_power_chart', '$roll_emotion_chart', '$roll_hope', '$each', '$roll', '$<<', '$to_a', '$map', '$[]', '$-', '$inject', '$find_sequence', '$join', '$nil?', '$empty?', '$fumble?', '$size', '$+', '$>=', '$sort', '$find_sequence_from_start_key', '$max', '$select', '$>', '$<=>', '$include?', '$!', '$==', '$unshift', '$count', '$loop', '$min', '$!=', '$is_1or2']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'LostRoyal'); - - var $nesting = [self].concat($parent_nesting), $LostRoyal_initialize$1, $LostRoyal_rollDiceCommand$2, $LostRoyal_check_lostroyal$3, $LostRoyal_find_sequence$6, $LostRoyal_find_sequence_from_start_key$10, $LostRoyal_fumble$ques$11, $LostRoyal_roll_fumble_chart$13, $LostRoyal_roll_wind_power_chart$14, $LostRoyal_roll_emotion_chart$16, $LostRoyal_roll_hope$17, $LostRoyal_is_1or2$19; - - - Opal.const_set($nesting[0], 'ID', "LostRoyal"); - Opal.const_set($nesting[0], 'NAME', "ロストロイヤル"); - Opal.const_set($nesting[0], 'SORT_KEY', "ろすとろいやる"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・D66ダイスあり\n" + "\n" + "行為判定\n" + " LR[x,x,x,x,x,x]\n" + "  x の並びには【判定表】の数値を順番に入力する。\n" + "  (例: LR[1,3,0,1,2] )\n" + "\n" + "ファンブル表\n" + " FC\n" + "\n" + "風力決定表\n" + " WPC\n" + "\n" + "感情決定表\n" + " EC\n" + "\n" + "希望点の決定\n" + " HRx\n" + "  x にはダイスの数( 1 - 2 )を指定\n"); - self.$setPrefixes(["LR\\[[0-5],[0-5],[0-5],[0-5],[0-5],[0-5]\\]", "FC", "WPC", "EC", "HR[1-2]"]); - - Opal.def(self, '$initialize', $LostRoyal_initialize$1 = function $$initialize() { - var $iter = $LostRoyal_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $LostRoyal_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $LostRoyal_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 1); - }, $LostRoyal_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $LostRoyal_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - - $case = command; - if (/LR\[([0-5]),([0-5]),([0-5]),([0-5]),([0-5]),([0-5])\]/i['$===']($case)) {return self.$check_lostroyal([$$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2).$to_i(), $$($nesting, 'Regexp').$last_match(3).$to_i(), $$($nesting, 'Regexp').$last_match(4).$to_i(), $$($nesting, 'Regexp').$last_match(5).$to_i(), $$($nesting, 'Regexp').$last_match(6).$to_i()])} - else if (/FC/['$===']($case)) {return self.$roll_fumble_chart()} - else if (/WPC/['$===']($case)) {return self.$roll_wind_power_chart()} - else if (/EC/['$===']($case)) {return self.$roll_emotion_chart()} - else if (/HR([1-2])/['$===']($case)) {return self.$roll_hope($$($nesting, 'Regexp').$last_match(1).$to_i())}; - return nil; - }, $LostRoyal_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$check_lostroyal', $LostRoyal_check_lostroyal$3 = function $$check_lostroyal(checking_table) { - var $$4, $$5, $a, self = this, keys = nil, scores = nil, total_score = nil, chained_sequence = nil, text = nil, bonus = nil; - - - keys = []; - $send($range(0, 3, true), 'each', [], ($$4 = function(_i){var self = $$4.$$s || this, $a, $b, key = nil; - - - - if (_i == null) { - _i = nil; - }; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (key = ($a[0] == null ? nil : $a[0])), $b; - return keys['$<<'](key);}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - scores = $send(keys, 'map', [], ($$5 = function(k){var self = $$5.$$s || this; - - - - if (k == null) { - k = nil; - }; - return checking_table['$[]']($rb_minus(k, 1));}, $$5.$$s = self, $$5.$$arity = 1, $$5)).$to_a(); - total_score = scores.$inject("+"); - chained_sequence = self.$find_sequence(keys); - text = "" + "3D6 => [" + (keys.$join(",")) + "] => (" + (scores.$join("+")) + ") => " + (total_score); - if ($truthy(($truthy($a = chained_sequence['$nil?']()) ? $a : chained_sequence['$empty?']()))) { - } else { - - bonus = (function() {if ($truthy(self['$fumble?'](keys, chained_sequence))) { - return 3 - } else { - return chained_sequence.$size() - }; return nil; })(); - text = $rb_plus(text, "" + " | " + (chained_sequence.$size()) + " chain! (" + (chained_sequence.$join(",")) + ") => " + ($rb_plus(total_score, bonus))); - if ($truthy($rb_ge(chained_sequence.$size(), 3))) { - text = $rb_plus(text, " [スペシャル]")}; - if ($truthy(self['$fumble?'](keys, chained_sequence))) { - text = $rb_plus(text, " [ファンブル]")}; - }; - return text; - }, $LostRoyal_check_lostroyal$3.$$arity = 1); - - Opal.def(self, '$find_sequence', $LostRoyal_find_sequence$6 = function $$find_sequence(keys) { - var $$7, $$8, $$9, self = this, sequences = nil, sequence = nil; - - - keys = keys.$sort(); - sequences = $send($range(1, 6, true), 'map', [], ($$7 = function(start_key){var self = $$7.$$s || this; - - - - if (start_key == null) { - start_key = nil; - }; - return self.$find_sequence_from_start_key(keys, start_key);}, $$7.$$s = self, $$7.$$arity = 1, $$7)); - sequence = $send($send(sequences, 'select', [], ($$8 = function(x){var self = $$8.$$s || this; - - - - if (x == null) { - x = nil; - }; - return $rb_gt(x.$size(), 1);}, $$8.$$s = self, $$8.$$arity = 1, $$8)), 'max', [], ($$9 = function(a, b){var self = $$9.$$s || this; - - - - if (a == null) { - a = nil; - }; - - if (b == null) { - b = nil; - }; - return a.$size()['$<=>'](b.$size());}, $$9.$$s = self, $$9.$$arity = 2, $$9)); - return sequence; - }, $LostRoyal_find_sequence$6.$$arity = 1); - - Opal.def(self, '$find_sequence_from_start_key', $LostRoyal_find_sequence_from_start_key$10 = function $$find_sequence_from_start_key(keys, start_key) { - var $a, self = this, chained_keys = nil, key = nil; - - - chained_keys = []; - key = start_key; - while ($truthy(keys['$include?'](key))) { - - chained_keys['$<<'](key); - key = $rb_plus(key, 1); - }; - if ($truthy(($truthy($a = chained_keys['$empty?']()['$!']()) ? chained_keys['$[]'](0)['$=='](1) : $a))) { - - key = 6; - while ($truthy(keys['$include?'](key))) { - - chained_keys.$unshift(key); - key = $rb_minus(key, 1); - };}; - return chained_keys; - }, $LostRoyal_find_sequence_from_start_key$10.$$arity = 2); - - Opal.def(self, '$fumble?', $LostRoyal_fumble$ques$11 = function(keys, chained_sequence) {try { - - var $$12, self = this; - - - $send(chained_sequence, 'each', [], ($$12 = function(k){var self = $$12.$$s || this; - - - - if (k == null) { - k = nil; - }; - if ($truthy($rb_ge(keys.$count(k), 2))) { - Opal.ret(true) - } else { - return nil - };}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - return false; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $LostRoyal_fumble$ques$11.$$arity = 2); - - Opal.def(self, '$roll_fumble_chart', $LostRoyal_roll_fumble_chart$13 = function $$roll_fumble_chart() { - var $a, $b, self = this, key = nil, text = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (key = ($a[0] == null ? nil : $a[0])), $b; - text = ["何かの問題で言い争い、主君に無礼を働いてしまう。あなたは主君の名誉点を1点失うか、【時間】を1点消費して和解の話し合いを持つか選べる。", "見過ごせば人々を不幸にする危険に遭遇する。あなたは逃げ出して冒険の名誉点を1点失うか、これに立ち向かい【命数】を2点減らすかを選べる。", "あなたが惹かれたのは好意に付け込む人だった。あなたはその場を去って恋慕の名誉点を1点失うか【正義】を1点減らして礼を尽くすかを選べる。", "金銭的な問題で、生命と魂の苦しみを背負う人に出会う。あなたは庇護の名誉点を1点失うか出費を3点増やすかを選べる。", "襲撃を受ける。苦もなく叩き伏せると、卑屈な態度で命乞いをしてきた。容赦なく命を奪い寛容の名誉点を1点失うか、密告によって【血路】が1D6点増えるかを選ぶことができる。", "風聞により、友が悪に身を貶めたと知る。共に並んだ戦場が色褪せる想いだ。戦友の名誉点を1点減らすか、【酒と歌】すべてを失うかを選べる。"]['$[]']($rb_minus(key, 1)); - return "" + "1D6 => [" + (key) + "] " + (text); - }, $LostRoyal_roll_fumble_chart$13.$$arity = 0); - - Opal.def(self, '$roll_wind_power_chart', $LostRoyal_roll_wind_power_chart$14 = function $$roll_wind_power_chart() {try { - - var $$15, self = this, key = nil, total_bonus = nil, text = nil; - - - key = 0; - total_bonus = 0; - text = ""; - return $send(self, 'loop', [], ($$15 = function(){var self = $$15.$$s || this, $a, $b, dice = nil, add = nil, bonus = nil, current_text = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - key = $rb_plus(key, dice); - $b = [[true, 0, "ほぼ凪(振り足し)"], [true, 0, "弱い風(振り足し)"], [false, 0, "ゆるやかな風"], [false, 0, "ゆるやかな風"], [false, 1, "やや強い風(儀式点プラス1)"], [false, 2, "強い風(龍を幻視、儀式点プラス2)"], [false, 3, "体が揺らぐほどの風(龍を幻視、儀式点プラス3)"]]['$[]']($rb_minus([key, 7].$min(), 1)), $a = Opal.to_ary($b), (add = ($a[0] == null ? nil : $a[0])), (bonus = ($a[1] == null ? nil : $a[1])), (current_text = ($a[2] == null ? nil : $a[2])), $b; - total_bonus = $rb_plus(total_bonus, bonus); - if ($truthy(key['$!='](dice))) { - current_text = "" + "1D6[" + (dice) + "]+" + ($rb_minus(key, dice)) + " " + (current_text) - } else { - current_text = "" + "1D6[" + (dice) + "] " + (current_text) - }; - if ($truthy(text['$empty?']())) { - text = current_text - } else { - text = "" + (text) + " => " + (current_text) - }; - if ($truthy(add)) { - return nil - } else { - - text = $rb_plus(text, "" + " [合計:儀式点 +" + (total_bonus) + " ]"); - Opal.ret(text); - };}, $$15.$$s = self, $$15.$$arity = 0, $$15)); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $LostRoyal_roll_wind_power_chart$14.$$arity = 0); - - Opal.def(self, '$roll_emotion_chart', $LostRoyal_roll_emotion_chart$16 = function $$roll_emotion_chart() { - var $a, $b, self = this, key = nil, text = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (key = ($a[0] == null ? nil : $a[0])), $b; - text = ["愛情/殺意", "友情/負目", "崇拝/嫌悪", "興味/侮蔑", "信頼/嫉妬", "守護/欲情"]['$[]']($rb_minus(key, 1)); - return "" + "1D6 => [" + (key) + "] " + (text); - }, $LostRoyal_roll_emotion_chart$16.$$arity = 0); - - Opal.def(self, '$roll_hope', $LostRoyal_roll_hope$17 = function $$roll_hope(number_of_dice) {try { - - var $$18, self = this, total = nil, text = nil; - - - total = 0; - text = ""; - return $send(self, 'loop', [], ($$18 = function(){var self = $$18.$$s || this, $a, $b, d1 = nil, d2 = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d1 = ($a[0] == null ? nil : $a[0])), $b; - d2 = 0; - if ($truthy($rb_ge(number_of_dice, 2))) { - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d2 = ($a[0] == null ? nil : $a[0])), $b}; - total = $rb_plus(total, $rb_plus(d1, d2)); - if (number_of_dice['$=='](2)) { - text = $rb_plus(text, "" + "2D6[" + (d1) + "," + (d2) + "]") - } else { - text = $rb_plus(text, "" + "1D6[" + (d1) + "]") - }; - if ($truthy(($truthy($a = self.$is_1or2(d1)) ? $a : self.$is_1or2(d2)))) { - return (text = $rb_plus(text, " (振り足し) => ")) - } else { - - text = $rb_plus(text, "" + " => 合計 " + (total)); - Opal.ret(text); - };}, $$18.$$s = self, $$18.$$arity = 0, $$18)); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $LostRoyal_roll_hope$17.$$arity = 1); - return (Opal.def(self, '$is_1or2', $LostRoyal_is_1or2$19 = function $$is_1or2(n) { - var self = this; - - return [1, 2]['$include?'](n) - }, $LostRoyal_is_1or2$19.$$arity = 1), nil) && 'is_1or2'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/MagicaLogia.js b/src/assets/dicebot/MagicaLogia.js deleted file mode 100644 index b7aa8a3db..000000000 --- a/src/assets/dicebot/MagicaLogia.js +++ /dev/null @@ -1,947 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$==', '$<=', '$>=', '$+', '$gainMagicElement', '$[]', '$===', '$magicalogia_background_table', '$magicalogia_defaultanchor_table', '$magicalogia_fortune_attribution_table', '$magicalogia_wish_table', '$magicalogia_scene_table', '$magicalogia_fumble_table', '$magicalogia_wrong_table', '$magicalogia_fortunechange_table', '$magicalogia_accident_table', '$magicalogia_random_skill_table', '$magicalogia_time_passage_table', '$magicalogia_typical_fortune_change_table', '$magicalogia_physical_fortune_change_table', '$magicalogia_mental_fortune_change_table', '$magicalogia_insanity_fortune_change_table', '$magicalogia_social_fortune_change_table', '$magicalogia_paranormal_fortune_change_table', '$magicalogia_wonderful_fortune_change_table', '$magicalogia_comical_fortune_change_table', '$magicalogia_blank_secret_table', '$magicalogia_prise_table', '$magicalogia_inveterate_enemy_table', '$magicalogia_conspiracy_table', '$magicalogia_fate_table', '$magicalogia_cueball_table', '$magicalogia_force_field_table', '$magicalogia_alliance_table', '$magicalogia_extreme_environment_scene_table', '$magicalogia_innner_world_scene_table', '$magicalogia_magic_city_scene_table', '$magicalogia_world_after_dead_scene_table', '$magicalogia_labyrinth_world_scene_table', '$magicalogia_new_scene_table', '$magicalogia_random_skill_star_table', '$magicalogia_random_skill_beast_table', '$magicalogia_random_skill_force_table', '$magicalogia_random_skill_poem_table', '$magicalogia_random_skill_dream_table', '$magicalogia_random_skill_night_table', '$magicalogia_magi_fortune_change_table', '$magicalogia_magic_bookshelf_scene_table', '$magicalogia_magic_academy_scene_table', '$magicalogia_tower_credo_scene_table', '$magicalogia_parallel_world_scene_table', '$magicalogia_post_apocalypse_scene_table', '$magicalogia_god_bar_scene_table', '$magicalogia_starlight_scene_table', '$magicalogia_world_low_add_table', '$magicalogia_wondaring_monster_table', '$magicalogia_fallen_flower_table', '$magicalogia_old_library_scene_table', '$magicalogia_new_time_passage_table', '$magicalogia_fallen_after_table', '$lambda', '$magicalogia_random_skill_table_text_only', '$get_table_by_2d6', '$get_table_by_1d6', '$-', '$roll', '$get_magic_element_type', '$magicalogia_random_skill_table_text_only_force', '$magicalogia_random_skill_table_text_only_beast', '$magicalogia_random_skill_table_text_only_dream', '$magicalogia_random_skill_table_text_only_star', '$magicalogia_random_skill_table_text_only_poem', '$magicalogia_random_skill_table_text_only_night', '$magicalogia_fallen_after_table_low', '$magicalogia_fallen_after_table_high', '$to_s']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'MagicaLogia'); - - var $nesting = [self].concat($parent_nesting), $MagicaLogia_initialize$1, $MagicaLogia_check_2D6$2, $MagicaLogia_rollDiceCommand$3, $MagicaLogia_magicalogia_scene_table$4, $MagicaLogia_magicalogia_fumble_table$6, $MagicaLogia_magicalogia_wrong_table$7, $MagicaLogia_magicalogia_fortunechange_table$9, $MagicaLogia_magicalogia_accident_table$10, $MagicaLogia_gainMagicElement$12, $MagicaLogia_magicalogia_background_table$13, $MagicaLogia_magicalogia_defaultanchor_table$14, $MagicaLogia_magicalogia_fortune_attribution_table$15, $MagicaLogia_magicalogia_wish_table$16, $MagicaLogia_magicalogia_random_skill_table$17, $MagicaLogia_magicalogia_random_skill_table_text_only$18, $MagicaLogia_get_magic_element_type$19, $MagicaLogia_magicalogia_time_passage_table$20, $MagicaLogia_magicalogia_typical_fortune_change_table$21, $MagicaLogia_magicalogia_physical_fortune_change_table$22, $MagicaLogia_magicalogia_mental_fortune_change_table$23, $MagicaLogia_magicalogia_insanity_fortune_change_table$24, $MagicaLogia_magicalogia_social_fortune_change_table$25, $MagicaLogia_magicalogia_paranormal_fortune_change_table$26, $MagicaLogia_magicalogia_wonderful_fortune_change_table$27, $MagicaLogia_magicalogia_comical_fortune_change_table$28, $MagicaLogia_magicalogia_inveterate_enemy_table$29, $MagicaLogia_magicalogia_conspiracy_table$30, $MagicaLogia_magicalogia_fate_table$31, $MagicaLogia_magicalogia_cueball_table$32, $MagicaLogia_magicalogia_force_field_table$33, $MagicaLogia_magicalogia_alliance_table$34, $MagicaLogia_magicalogia_blank_secret_table$35, $MagicaLogia_magicalogia_prise_table$36, $MagicaLogia_magicalogia_extreme_environment_scene_table$37, $MagicaLogia_magicalogia_innner_world_scene_table$39, $MagicaLogia_magicalogia_magic_city_scene_table$41, $MagicaLogia_magicalogia_world_after_dead_scene_table$43, $MagicaLogia_magicalogia_labyrinth_world_scene_table$45, $MagicaLogia_magicalogia_new_scene_table$47, $MagicaLogia_magicalogia_random_skill_star_table$49, $MagicaLogia_magicalogia_random_skill_beast_table$50, $MagicaLogia_magicalogia_random_skill_force_table$51, $MagicaLogia_magicalogia_random_skill_poem_table$52, $MagicaLogia_magicalogia_random_skill_dream_table$53, $MagicaLogia_magicalogia_random_skill_night_table$54, $MagicaLogia_magicalogia_random_skill_table_text_only_star$55, $MagicaLogia_magicalogia_random_skill_table_text_only_beast$56, $MagicaLogia_magicalogia_random_skill_table_text_only_force$57, $MagicaLogia_magicalogia_random_skill_table_text_only_poem$58, $MagicaLogia_magicalogia_random_skill_table_text_only_dream$59, $MagicaLogia_magicalogia_random_skill_table_text_only_night$60, $MagicaLogia_magicalogia_magi_fortune_change_table$61, $MagicaLogia_magicalogia_magic_bookshelf_scene_table$62, $MagicaLogia_magicalogia_magic_academy_scene_table$66, $MagicaLogia_magicalogia_tower_credo_scene_table$73, $MagicaLogia_magicalogia_parallel_world_scene_table$77, $MagicaLogia_magicalogia_post_apocalypse_scene_table$81, $MagicaLogia_magicalogia_god_bar_scene_table$83, $MagicaLogia_magicalogia_starlight_scene_table$85, $MagicaLogia_magicalogia_world_low_add_table$87, $MagicaLogia_magicalogia_wondaring_monster_table$88, $MagicaLogia_magicalogia_fallen_flower_table$95, $MagicaLogia_magicalogia_old_library_scene_table$96, $MagicaLogia_magicalogia_new_time_passage_table$100, $MagicaLogia_magicalogia_fallen_after_table_low$103, $MagicaLogia_magicalogia_fallen_after_table_high$104, $MagicaLogia_magicalogia_fallen_after_table$105; - - - Opal.const_set($nesting[0], 'ID', "MagicaLogia"); - Opal.const_set($nesting[0], 'NAME', "マギカロギア"); - Opal.const_set($nesting[0], 'SORT_KEY', "まきかろきあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + "スペシャル/ファンブル/成功/失敗を判定\n" + "・各種表\n" + "経歴表 BGT/初期アンカー表 DAT/運命属性表 FAT\n" + "願い表 WIT/プライズ表 PT\n" + "時の流れ表 TPT/大判時の流れ表 TPTB\n" + "事件表 AT\n" + "ファンブル表 FT/変調表 WT\n" + "運命変転表 FCT\n" + " 典型的災厄 TCT/物理的災厄 PCT/精神的災厄 MCT/狂気的災厄 ICT\n" + " 社会的災厄 SCT/超常的災厄 XCT/不思議系災厄 WCT/コミカル系災厄 CCT\n" + " 魔法使いの災厄 MGCT\n" + "シーン表 ST/大判シーン表 STB\n" + " 極限環境 XEST/内面世界 IWST/魔法都市 MCST\n" + " 死後世界 WDST/迷宮世界 LWST\n" + " 魔法書架 MBST/魔法学院 MAST/クレドの塔 TCST\n" + " 並行世界 PWST/終末   PAST/異世界酒場 GBST\n" + " ほしかげ SLST/旧図書館 OLST\n" + "世界法則追加表 WLAT/さまよう怪物表 WMT\n" + "ランダム特技表 RTT\n" + " 指定特技(星) RTS/指定特技(獣) RTB/指定特技(力) RTF\n" + " 指定特技(歌) RTP/指定特技(夢) RTD/指定特技(闇) RTN\n" + "ブランク秘密表 BST/\n" + " 宿敵表 MIT/謀略表 MOT/因縁表 MAT\n" + " 奇人表 MUT/力場表 MFT/同盟表 MLT\n" + "落花表 FFT\n" + "その後表 FLT\n" + "・D66ダイスあり\n"); - self.$setPrefixes(["WT", "FCT", "ST", "FT", "AT", "BGT", "DAT", "FAT", "WIT", "RTT", "TPT", "TCT", "PCT", "MCT", "ICT", "SCT", "XCT", "WCT", "CCT", "BST", "PT", "XEST", "IWST", "MCST", "WDST", "LWST", "MIT", "MOT", "MAT", "MUT", "MFT", "MLT", "STB", "RTS", "RTB", "RTF", "RTP", "RTD", "RTN", "MGCT", "MBST", "MAST", "TCST", "PWST", "PAST", "GBST", "SLST", "WLAT", "WMT", "FFT", "OLST", "TPTB", "FLT"]); - - Opal.def(self, '$initialize', $MagicaLogia_initialize$1 = function $$initialize() { - var $iter = $MagicaLogia_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $MagicaLogia_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $MagicaLogia_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 3; - return (self.d66Type = 2); - }, $MagicaLogia_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $MagicaLogia_check_2D6$2 = function $$check_2D6(total, dice_total, dice_list, cmp_op, target) { - var self = this, output = nil; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - output = (function() {if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > スペシャル(魔力1D6点か変調1つ回復)" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; return nil; })(); - output = $rb_plus(output, self.$gainMagicElement(dice_list['$[]'](0), dice_list['$[]'](1))); - return output; - }, $MagicaLogia_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $MagicaLogia_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var $a, $b, self = this, output = nil, type = nil, total_n = nil, $case = nil; - - - output = "1"; - type = ""; - total_n = ""; - $case = command; - if ("BGT"['$===']($case)) { - type = "経歴表"; - $b = self.$magicalogia_background_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("DAT"['$===']($case)) { - type = "初期アンカー表"; - $b = self.$magicalogia_defaultanchor_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FAT"['$===']($case)) { - type = "運命属性表"; - $b = self.$magicalogia_fortune_attribution_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("WIT"['$===']($case)) { - type = "願い表"; - $b = self.$magicalogia_wish_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("ST"['$===']($case)) { - type = "シーン表"; - $b = self.$magicalogia_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FT"['$===']($case)) { - type = "ファンブル表"; - $b = self.$magicalogia_fumble_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("WT"['$===']($case)) { - type = "変調表"; - $b = self.$magicalogia_wrong_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FCT"['$===']($case)) { - type = "運命変転表"; - $b = self.$magicalogia_fortunechange_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("AT"['$===']($case)) { - type = "事件表"; - $b = self.$magicalogia_accident_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RTT"['$===']($case)) { - type = "ランダム特技決定表"; - $b = self.$magicalogia_random_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TPT"['$===']($case)) { - type = "時の流れ表"; - $b = self.$magicalogia_time_passage_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TCT"['$===']($case)) { - type = "運命変転「典型的災厄」"; - $b = self.$magicalogia_typical_fortune_change_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("PCT"['$===']($case)) { - type = "運命変転「物理的災厄」"; - $b = self.$magicalogia_physical_fortune_change_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MCT"['$===']($case)) { - type = "運命変転「精神的災厄」"; - $b = self.$magicalogia_mental_fortune_change_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("ICT"['$===']($case)) { - type = "運命変転「狂気的災厄」"; - $b = self.$magicalogia_insanity_fortune_change_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SCT"['$===']($case)) { - type = "運命変転「社会的災厄」"; - $b = self.$magicalogia_social_fortune_change_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("XCT"['$===']($case)) { - type = "運命変転「超常的災厄」"; - $b = self.$magicalogia_paranormal_fortune_change_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("WCT"['$===']($case)) { - type = "運命変転「不思議系災厄」"; - $b = self.$magicalogia_wonderful_fortune_change_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("CCT"['$===']($case)) { - type = "運命変転「コミカル系災厄」"; - $b = self.$magicalogia_comical_fortune_change_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("BST"['$===']($case)) { - type = "ブランク秘密表"; - $b = self.$magicalogia_blank_secret_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("PT"['$===']($case)) { - type = "プライズ表"; - $b = self.$magicalogia_prise_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MIT"['$===']($case)) { - type = "宿敵表"; - $b = self.$magicalogia_inveterate_enemy_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MOT"['$===']($case)) { - type = "謀略表"; - $b = self.$magicalogia_conspiracy_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MAT"['$===']($case)) { - type = "因縁表"; - $b = self.$magicalogia_fate_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MUT"['$===']($case)) { - type = "奇人表"; - $b = self.$magicalogia_cueball_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MFT"['$===']($case)) { - type = "力場表"; - $b = self.$magicalogia_force_field_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MLT"['$===']($case)) { - type = "同盟表"; - $b = self.$magicalogia_alliance_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("XEST"['$===']($case)) { - type = "極限環境シーン表"; - $b = self.$magicalogia_extreme_environment_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("IWST"['$===']($case)) { - type = "内面世界シーン表"; - $b = self.$magicalogia_innner_world_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MCST"['$===']($case)) { - type = "魔法都市シーン表"; - $b = self.$magicalogia_magic_city_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("WDST"['$===']($case)) { - type = "死後世界シーン表"; - $b = self.$magicalogia_world_after_dead_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("LWST"['$===']($case)) { - type = "迷宮世界シーン表"; - $b = self.$magicalogia_labyrinth_world_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("STB"['$===']($case)) { - type = "大判シーン表"; - $b = self.$magicalogia_new_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RTS"['$===']($case)) { - type = "指定特技(星)"; - $b = self.$magicalogia_random_skill_star_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RTB"['$===']($case)) { - type = "指定特技(獣)"; - $b = self.$magicalogia_random_skill_beast_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RTF"['$===']($case)) { - type = "指定特技(力)"; - $b = self.$magicalogia_random_skill_force_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RTP"['$===']($case)) { - type = "指定特技(歌)"; - $b = self.$magicalogia_random_skill_poem_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RTD"['$===']($case)) { - type = "指定特技(夢)"; - $b = self.$magicalogia_random_skill_dream_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RTN"['$===']($case)) { - type = "指定特技(闇)"; - $b = self.$magicalogia_random_skill_night_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MGCT"['$===']($case)) { - type = "運命変転「魔法使いの災厄」"; - $b = self.$magicalogia_magi_fortune_change_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MBST"['$===']($case)) { - type = "魔法書架シーン表"; - $b = self.$magicalogia_magic_bookshelf_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("MAST"['$===']($case)) { - type = "魔法学院シーン表"; - $b = self.$magicalogia_magic_academy_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TCST"['$===']($case)) { - type = "クレドの塔シーン表"; - $b = self.$magicalogia_tower_credo_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("PWST"['$===']($case)) { - type = "並行世界シーン表"; - $b = self.$magicalogia_parallel_world_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("PAST"['$===']($case)) { - type = "終末シーン表"; - $b = self.$magicalogia_post_apocalypse_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("GBST"['$===']($case)) { - type = "異世界酒場シーン表"; - $b = self.$magicalogia_god_bar_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("SLST"['$===']($case)) { - type = "ほしかげシーン表"; - $b = self.$magicalogia_starlight_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("WLAT"['$===']($case)) { - type = "世界法則追加表"; - $b = self.$magicalogia_world_low_add_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("WMT"['$===']($case)) { - type = "さまよう怪物表"; - $b = self.$magicalogia_wondaring_monster_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FFT"['$===']($case)) { - type = "落花表"; - $b = self.$magicalogia_fallen_flower_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("OLST"['$===']($case)) { - type = "旧図書館シーン表"; - $b = self.$magicalogia_old_library_scene_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TPTB"['$===']($case)) { - type = "大判時の流れ表"; - $b = self.$magicalogia_new_time_passage_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("FLT"['$===']($case)) { - type = "その後表"; - $b = self.$magicalogia_fallen_after_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;}; - return "" + (type) + "(" + (total_n) + ") > " + (output); - }, $MagicaLogia_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$magicalogia_scene_table', $MagicaLogia_magicalogia_scene_table$4 = function $$magicalogia_scene_table() {try { - - var $$5, self = this, table = nil; - - - table = ["魔法で作り出した次元の狭間。ここは時間や空間から切り離された、どこでもあり、どこでもない場所だ。", "夢の中。遠く過ぎ去った日々が、あなたの前に現れる。", "静かなカフェの店内。珈琲の香りと共に、優しく穏やかな雰囲気が満ちている。", "強く風が吹き、雲が流されていく。遠く、雷鳴が聞こえた。どうやら、一雨きそうだ。", "無人の路地裏。ここならば、邪魔が入ることもないだろう。", $send(self, 'lambda', [], ($$5 = function(){var self = $$5.$$s || this; - - Opal.ret("" + "周囲で〈断章〉が引き起こした魔法災厄が発生する。" + (self.$magicalogia_random_skill_table_text_only()) + "の判定を行うこと。成功すると、好きな魔素が一個発生する。失敗すると「運命変転表」を使用する。")}, $$5.$$s = self, $$5.$$arity = 0, $$5)), "夜の街を歩く。暖かな家々の明かりが、遠く見える。", "読んでいた本を閉じる。そこには、あなたが知りたがっていたことが書かれていた。なるほど、そういうことか。", "大勢の人々が行き過ぎる雑踏の中。あなたを気に掛ける者は誰もいない。", "街のはるか上空。あなたは重力から解き放たれ、自由に空を飛ぶ。", "未来の予感。このままだと起きるかもしれない出来事の幻が現れる。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_scene_table$4.$$arity = 0); - - Opal.def(self, '$magicalogia_fumble_table', $MagicaLogia_magicalogia_fumble_table$6 = function $$magicalogia_fumble_table() { - var self = this, table = nil; - - - table = ["魔法災厄が、あなたのアンカーに降りかかる。「運命変転」が発生する。", "魔法災厄が、あなたの魔素を奪い取る。チャージしている魔素の中から、好きな組み合わせで2点減少する。", "魔法の制御に失敗してしまう。【魔力】が1点減少する。", "魔法災厄になり、そのサイクルが終了するまで、行為判定にマイナス1の修正が付く。", "魔法災厄が、直接あなたに降りかかる。変調表を振り、その変調を受ける。", "ふぅ、危なかった。特に何も起こらない。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_fumble_table$6.$$arity = 0); - - Opal.def(self, '$magicalogia_wrong_table', $MagicaLogia_magicalogia_wrong_table$7 = function $$magicalogia_wrong_table() {try { - - var $$8, self = this, table = nil; - - - table = ["『封印』自分の魔法(習得タイプが装備以外)からランダムに一つ選ぶ。選んだ魔法のチェック欄をチェックする。その魔法を使用するには【魔力】を2点消費しなくてはいけない。", "『綻び』魔法戦の間、各ラウンドの終了時に自分の【魔力】が1点減少する。", "『虚弱』【攻撃力】が1点減少する。", "『病魔』【防御力】が1点減少する。", "『遮蔽』【根源力】が1点減少する", $send(self, 'lambda', [], ($$8 = function(){var self = $$8.$$s || this; - - Opal.ret("" + "『不運』" + (self.$magicalogia_random_skill_table_text_only()) + "のチェック欄をチェックする。その特技が使用不能になり、その分野の特技が指定特技になった判定を行うとき、マイナス1の修正が付く。")}, $$8.$$s = self, $$8.$$arity = 0, $$8))]; - return self.$get_table_by_1d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_wrong_table$7.$$arity = 0); - - Opal.def(self, '$magicalogia_fortunechange_table', $MagicaLogia_magicalogia_fortunechange_table$9 = function $$magicalogia_fortunechange_table() { - var self = this, table = nil; - - - table = ["『挫折』そのキャラクターは、自分にとって大切だった夢を諦める。", "『別離』そのキャラクターにとって大切な人――親友や恋人、親や兄弟などを失う。", "『大病』そのキャラクターは、不治の病を負う。", "『借金』そのキャラクターは、悪人に利用され多額の借金を負う。", "『不和』そのキャラクターは、人間関係に失敗し深い心の傷を負う。", "『事故』そのキャラクターは交通事故にあい、取り返しのつかない怪我を負う。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_fortunechange_table$9.$$arity = 0); - - Opal.def(self, '$magicalogia_accident_table', $MagicaLogia_magicalogia_accident_table$10 = function $$magicalogia_accident_table() {try { - - var $$11, self = this, table = nil; - - - table = ["不意のプレゼント、素晴らしいアイデア、悪魔的な取引……あなたは好きな魔素を1つ獲得するか【魔力】を1D6点回復できる。どちらかを選んだ場合、その人物に対する【運命】が1点上昇する。【運命】の属性は、ゲームマスターが自由に決定できる。", "気高き犠牲、真摯な想い、圧倒的な力……その人物に対する【運命】が1点上昇する。【運命】の属性は「尊敬」になる。", "軽い口論、殴り合いの喧嘩、魔法戦……互いに1D6を振り、低い目を振った方が、高い目を振った方に対して【運命】が1点上昇する。【運命】の属性は高い目を振った方が、自由に決定できる。", "裏切り、策謀、不幸な誤解……その人物に対する【運命】が1点上昇する。【運命】の属性は「宿敵」になる。", "意図せぬ感謝、窮地からの救済、一生のお願いを叶える……その人物に対する【運命】が1点上昇する。【運命】の属性は「支配」になる。", $send(self, 'lambda', [], ($$11 = function(){var self = $$11.$$s || this; - - Opal.ret("" + "生ける屍の群れ、地獄の業火、迷宮化……魔法災厄に襲われる。" + (self.$magicalogia_random_skill_table_text_only()) + "の判定を行う。成功すると好きな魔素が1点発生する。失敗すると、その人物に対し「運命変転表」を使用する。")}, $$11.$$s = self, $$11.$$arity = 0, $$11)), "道路の曲がり角、コンビニ、空から落ちてくる……偶然出会う。その人物に対する【運命】が1点上昇する。【運命】の属性は「興味」になる。", "魂のひらめき、愛の告白、怪しい抱擁……その人物に対する【運命】が1点上昇する。【運命】の属性は「恋愛」になる。", "師弟関係、恋人同士、すれ違う想い……その人物との未来が垣間見える。たがいに対する【運命】が1点上昇する。", "懐かしい表情、大切な思い出、伴侶となる予感……その人物に対する【運命】が1点上昇する。【運命】の属性は「血縁」になる。", "献身的な看護、魔法的な祝福、奇跡……その人物に対する【運命】が1点上昇する。【運命】の属性は自由に決定できる。もしも関係欄に疵があれば、その疵を1つ関係欄から消すことができる。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_accident_table$10.$$arity = 0); - - Opal.def(self, '$gainMagicElement', $MagicaLogia_gainMagicElement$12 = function $$gainMagicElement(dice1, dice2) { - var self = this, table = nil; - - - if (dice1['$=='](dice2)) { - } else { - return "" - }; - table = ["星", "獣", "力", "歌", "夢", "闇"]; - return $rb_plus($rb_plus(" > ", table['$[]']($rb_minus(dice1, 1))), "の魔素2が発生"); - }, $MagicaLogia_gainMagicElement$12.$$arity = 2); - - Opal.def(self, '$magicalogia_background_table', $MagicaLogia_magicalogia_background_table$13 = function $$magicalogia_background_table() { - var self = this, table = nil; - - - table = ["書警/ブックウォッチ", "司書/ライブラリアン", "書工/アルチザン", "訪問者/ゲスト", "異端者/アウトサイダー", "外典/アポクリファ"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_background_table$13.$$arity = 0); - - Opal.def(self, '$magicalogia_defaultanchor_table', $MagicaLogia_magicalogia_defaultanchor_table$14 = function $$magicalogia_defaultanchor_table() { - var self = this, table = nil; - - - table = ["『恩人』あなたは、困っているところを、そのアンカーに助けてもらった。", "『居候』あなたかアンカーは、どちらかの家や経営するアパートに住んでいる。", "『酒友』あなたとアンカーは、酒飲み友達である。", "『常連』あなたかアンカーは、その仕事場によくやって来る。", "『同人』あなたは、そのアンカーと同じ趣味を楽しむ同好の士である。", "『隣人』あなたは、そのアンカーの近所に住んでいる。", "『同輩』あなたはそのアンカーと仕事場、もしくは学校が同じである。", "『文通』あなたは、手紙やメール越しにそのアンカーと意見を交換している。", "『旧友』あなたは、そのアンカーと以前に、親交があった。", "『庇護』あなたは、そのアンカーを秘かに見守っている。", "『情人』あなたは、そのアンカーと肉体関係を結んでいる。"]; - return self.$get_table_by_2d6(table); - }, $MagicaLogia_magicalogia_defaultanchor_table$14.$$arity = 0); - - Opal.def(self, '$magicalogia_fortune_attribution_table', $MagicaLogia_magicalogia_fortune_attribution_table$15 = function $$magicalogia_fortune_attribution_table() { - var self = this, table = nil; - - - table = ["『血縁』自分や、自分が愛した者の親類や家族。", "『支配』あなたの部下になることが運命づけられた相手。", "『宿敵』何らかの方法で戦いあい、競い合う不倶戴天の敵。", "『恋愛』心を奪われ、相手に強い感情を抱いている存在。", "『興味』とても稀少だったり、不可解だったりして研究や観察をしたくなる対象。", "『尊敬』その才能や思想、姿勢に対し畏敬や尊敬を抱く人物。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_fortune_attribution_table$15.$$arity = 0); - - Opal.def(self, '$magicalogia_wish_table', $MagicaLogia_magicalogia_wish_table$16 = function $$magicalogia_wish_table() { - var self = this, table = nil; - - - table = ["自分以外の特定の誰かを助けてあげて欲しい。", "自分の大切な人や憧れの人に会わせて欲しい。", "自分をとりまく不幸を消し去って欲しい。", "自分のなくした何かを取り戻して欲しい。", "特定の誰かを罰して欲しい。", "自分の欲望(金銭欲、名誉欲、肉欲、知識欲など)を満たして欲しい。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_wish_table$16.$$arity = 0); - - Opal.def(self, '$magicalogia_random_skill_table', $MagicaLogia_magicalogia_random_skill_table$17 = function $$magicalogia_random_skill_table() { - var $a, $b, self = this, skillTableFull = nil, skillTable = nil, total_n = nil, tableName = nil, skill = nil, total_n2 = nil; - - - skillTableFull = [["星", ["黄金", "大地", "森", "道", "海", "静寂", "雨", "嵐", "太陽", "天空", "異界"]], ["獣", ["肉", "蟲", "花", "血", "鱗", "混沌", "牙", "叫び", "怒り", "翼", "エロス"]], ["力", ["重力", "風", "流れ", "水", "波", "自由", "衝撃", "雷", "炎", "光", "円環"]], ["歌", ["物語", "旋律", "涙", "別れ", "微笑み", "想い", "勝利", "恋", "情熱", "癒し", "時"]], ["夢", ["追憶", "謎", "嘘", "不安", "眠り", "偶然", "幻", "狂気", "祈り", "希望", "未来"]], ["闇", ["深淵", "腐敗", "裏切り", "迷い", "怠惰", "歪み", "不幸", "バカ", "悪意", "絶望", "死"]]]; - $b = self.$get_table_by_1d6(skillTableFull), $a = Opal.to_ary($b), (skillTable = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b; - $b = skillTable, $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (skillTable = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_2d6(skillTable), $a = Opal.to_ary($b), (skill = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b; - return ["" + "「" + (tableName) + "」≪" + (skill) + "≫", "" + (total_n) + "," + (total_n2)]; - }, $MagicaLogia_magicalogia_random_skill_table$17.$$arity = 0); - - Opal.def(self, '$magicalogia_random_skill_table_text_only', $MagicaLogia_magicalogia_random_skill_table_text_only$18 = function $$magicalogia_random_skill_table_text_only() { - var $a, $b, self = this, text = nil; - - - $b = self.$magicalogia_random_skill_table(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), $b; - return text; - }, $MagicaLogia_magicalogia_random_skill_table_text_only$18.$$arity = 0); - - Opal.def(self, '$get_magic_element_type', $MagicaLogia_get_magic_element_type$19 = function $$get_magic_element_type() { - var self = this, table = nil; - - - table = ["星", "獣", "力", "歌", "夢", "闇"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_get_magic_element_type$19.$$arity = 0); - - Opal.def(self, '$magicalogia_time_passage_table', $MagicaLogia_magicalogia_time_passage_table$20 = function $$magicalogia_time_passage_table() { - var $a, $b, self = this, output = nil, num = nil, text1 = nil, text2 = nil, text3 = nil; - - - output = ""; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - if (num['$=='](1)) { - output = "" + "標的となり追われる生活が続いた。ここ数年は苦しい戦いの日々だった。" + (self.$magicalogia_random_skill_table_text_only()) + "の判定を行う。成功するとセッション終了時に追加の功績点1点。失敗すると「運命変転」発生。" - } else if (num['$=='](2)) { - output = "" + "冒険の日々の途中、大きな幸せが訪れる。" + (self.$magicalogia_random_skill_table_text_only()) + "の判定を行う。成功すると、自分のアンカーの災厄か、自分の疵一つを無効化する。" - } else if (num['$=='](3)) { - - $b = self.$get_magic_element_type(), $a = Opal.to_ary($b), (text1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$get_magic_element_type(), $a = Opal.to_ary($b), (text2 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$get_magic_element_type(), $a = Opal.to_ary($b), (text3 = ($a[0] == null ? nil : $a[0])), $b; - output = "" + "瞑想から目を覚ます。もうそんな時間か。おかげで十分な魔素を得ることができた。「" + (text1) + "」「" + (text2) + "」「" + (text3) + "」の魔素を獲得する。"; - } else if (num['$=='](4)) { - output = "傷を癒すには十分な時間だ。自分の【魔力】を最大値まで回復する。もしくは「魔力のリセット」を行うことができる。好きな方を選ぶこと。" - } else if (num['$=='](5)) { - output = "平穏な日々の中にも、ちょっとした事件が起きる。自分のアンカーを一人選んで「事件表」を振ることができる。" - } else if (num['$=='](6)) { - output = "日々研鑚を重ね、魔法の修行に精進した。もしも望むなら、蔵書欄にある魔法を、自分の修得できる範囲の中で、現在とは別の魔法に変更して構わない。もしも、魔素がチャージされていた魔法を見習得にした場合、その魔素は失われる。"}; - return [output, num]; - }, $MagicaLogia_magicalogia_time_passage_table$20.$$arity = 0); - - Opal.def(self, '$magicalogia_typical_fortune_change_table', $MagicaLogia_magicalogia_typical_fortune_change_table$21 = function $$magicalogia_typical_fortune_change_table() { - var self = this, table = nil; - - - table = ["挫折。自分にとって大切だった夢をあきらめる。", "別離。自分にとって大切な人―親友や恋人、親や兄弟などを失う。", "大病。不治の病を負う。", "借金。悪人に利用され、多額の借金を負う。", "不和。人間関係に失敗し深い心の傷を負う。", "事故。交通事故にあい、取り返しのつかないケガを負う。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_typical_fortune_change_table$21.$$arity = 0); - - Opal.def(self, '$magicalogia_physical_fortune_change_table', $MagicaLogia_magicalogia_physical_fortune_change_table$22 = function $$magicalogia_physical_fortune_change_table() { - var self = this, table = nil; - - - table = ["火事。自分の家が焼け落ち、帰るところが無くなる。", "盗難。自分の大切なものが盗まれ、失われる。", "災害。自然災害に襲われ、生活環境が激変する", "失明。眼が見えなくなる。", "誘拐。何者かにさらわれ、監禁される。", "傷害。通り魔やあなたを憎む者に傷を負わされる。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_physical_fortune_change_table$22.$$arity = 0); - - Opal.def(self, '$magicalogia_mental_fortune_change_table', $MagicaLogia_magicalogia_mental_fortune_change_table$23 = function $$magicalogia_mental_fortune_change_table() { - var self = this, table = nil; - - - table = ["倦怠。疲労感に襲われ、何もやる気がなくなる。", "家出。今、自分がいる場所に安らぎを感じなくなり、失踪する。", "憎悪。周囲の誰かやPCに対して激しい憎悪を抱くようになる。", "不眠。眠れなくなり、疲労する。", "虚言。本当のことを話せなくなってしまう。", "記憶喪失。友達やPCのことを忘れてしまう。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_mental_fortune_change_table$23.$$arity = 0); - - Opal.def(self, '$magicalogia_insanity_fortune_change_table', $MagicaLogia_magicalogia_insanity_fortune_change_table$24 = function $$magicalogia_insanity_fortune_change_table() { - var self = this, table = nil; - - - table = ["二重人格。もう一つの人格が現れ、勝手な行動を始める。", "恐怖。高所や異性、蜘蛛など、特定の何かに対する恐怖症になる。", "妄想。突拍子もない奇妙な妄想が頭を離れなくなる。", "偏愛。特定の物や状況などに熱狂的な愛情を示すようになる。", "暴走。時折、自分の感情が制御できなくなり、凶暴化する。", "発情。体温が上昇、脈拍が増大し、性的に興奮状態になる。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_insanity_fortune_change_table$24.$$arity = 0); - - Opal.def(self, '$magicalogia_social_fortune_change_table', $MagicaLogia_magicalogia_social_fortune_change_table$25 = function $$magicalogia_social_fortune_change_table() { - var self = this, table = nil; - - - table = ["逮捕。無実の罪で捕らわれ、留置される。", "裏切り。信頼していた人物に騙されたり、恋人に浮気されたりする。", "暴露。自分の隠しておきたい秘密を暴露される。", "籠絡。どう見てもよくない相手に心を奪われる。", "加害。人を傷つけたり、殺めたりしてしまう。", "多忙。とてつもない量の仕事に追われ、心身共に疲労する。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_social_fortune_change_table$25.$$arity = 0); - - Opal.def(self, '$magicalogia_paranormal_fortune_change_table', $MagicaLogia_magicalogia_paranormal_fortune_change_table$26 = function $$magicalogia_paranormal_fortune_change_table() { - var self = this, table = nil; - - - table = ["霊感。見えるはずのないものが見えるようになる。", "不運。身の回りで、不幸な偶然が頻発するようになる。", "感染。吸血鬼やゾンビなど、怪物になりかかってしまう。", "阻害。自分の存在が、魔法的存在以外から見えなくなってしまう。", "変身。姿が動物や別の人間に変わってしまう。", "標的。殺人鬼や魔法災厄など、悪意を引き寄せてしまう。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_paranormal_fortune_change_table$26.$$arity = 0); - - Opal.def(self, '$magicalogia_wonderful_fortune_change_table', $MagicaLogia_magicalogia_wonderful_fortune_change_table$27 = function $$magicalogia_wonderful_fortune_change_table() { - var self = this, table = nil; - - - table = ["邪気眼。ついつい痛い言動を繰り返すようになってしまう。", "ドジ。ありえないほどよく転び、物を壊す体質になってしまう。", "方向音痴。信じられないくらい道に迷うようになってしまう。", "変語尾。なぜか、自分が話す言葉の語尾が変になってしまう。", "ひらがな。話す言葉が全てひらがなで聞こえるようになる。", "ヤンデレ。PCのことを病的に愛するようになり、自分以外にPCへの好意を持つ者に対して攻撃的になる。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_wonderful_fortune_change_table$27.$$arity = 0); - - Opal.def(self, '$magicalogia_comical_fortune_change_table', $MagicaLogia_magicalogia_comical_fortune_change_table$28 = function $$magicalogia_comical_fortune_change_table() { - var self = this, table = nil; - - - table = ["性別逆転。自分の肉体の性別が逆転してしまう。", "猫耳。頭から猫耳が生える。", "太る。びっくりするほど太る。", "足がくさい。哀しくなるほど足がくさくなる。", "ハラペコ。一回の食事で、ご飯を二十杯くらいおかわりしないと空腹でなにもできなくなる。", "脱衣。その場ですべての服が脱げる。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_comical_fortune_change_table$28.$$arity = 0); - - Opal.def(self, '$magicalogia_inveterate_enemy_table', $MagicaLogia_magicalogia_inveterate_enemy_table$29 = function $$magicalogia_inveterate_enemy_table() { - var $a, $b, self = this, output = nil, num = nil; - - - output = ""; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - if (num['$=='](1)) { - output = "嫉妬。その人物は、実は調査者の実力をねたむ〈大法典〉の魔法使いだった。データは〈火刑人〉を使用する。ただし、魔法の使用には魔素を必要とし、魔法使いをコレクションすることはできない。GMは調査者やそのアンカーに魔法戦を挑み、邪魔をするように操作すること。" - } else if (num['$=='](2)) { - output = "蒐集。その人物は、実は調査者をコレクションしようとする〈書籍卿〉だった。データは〈混血主義者〉を使用する。GMは〈断章〉に立ち会ったり、魔法戦を挑んだりして、調査者の邪魔をするように操作すること。" - } else if (num['$=='](3)) { - output = "妨害。その人物は、実は現在調査者が追っている〈断章〉を奪おうとする〈書籍卿〉だった。データは〈囁きの誘惑者〉を使用する。GMは〈断章〉に立ち会ったり、魔法戦を挑んだりして、調査者の邪魔をするように操作すること。" - } else if (num['$=='](4)) { - output = "" + "断章。その人物には、今回の件と関係ない〈断章〉が憑依していた。データは〈猛獣〉を使用する。ただし特技と召喚する騎士は" + (self.$magicalogia_random_skill_table_text_only()) + "に変更する。GMは〈断章〉に立ち会ったり、魔法戦を挑んだりして、調査者の邪魔するように操作すること。" - } else if (num['$=='](5)) { - output = "黒服。その人物は、実は魔法やオバケなどのあらゆる超常現象を否定する秘密結社「サークルエンド」の工作員だった。データは〈サークルエンド〉を使用する。GMは【隠蔽工作】を使用したり、魔法戦を挑んだりして、調査者の邪魔をするように操作すること。" - } else if (num['$=='](6)) { - output = "忍者。その人物は、実はあなたを殺せという使命を受けた忍者である。データは〈忍者〉を使用する。GMは〈断章〉に立ち会ったり、魔法戦を挑んだりして、調査者の邪魔をするようにそうさすること。"}; - return [output, num]; - }, $MagicaLogia_magicalogia_inveterate_enemy_table$29.$$arity = 0); - - Opal.def(self, '$magicalogia_conspiracy_table', $MagicaLogia_magicalogia_conspiracy_table$30 = function $$magicalogia_conspiracy_table() { - var self = this, table = nil; - - - table = ["爆弾。その人物には、調査者の肉体を爆発させる魔法爆弾が仕掛けられていた。この【秘密】が公開されると、調査者は1d6点のダメージを受ける。", "呪詛。その人物には、調査者に感染する呪いの魔法が仕掛けられていた。この【秘密】が公開されると、調査者はランダムに選んだ変調を一つ受ける。", "幽閉。その人物には、調査者を異次元の牢獄に閉じ込める魔法が仕掛けられていた。この【秘密】が公開されると、調査者のプレイヤーがシーンプレイヤーになるか、クライマックスフェイズになるまで、シーンに登場できなくなる(マスターシーンでの登場の可否はGMが決定できる)。", "強化。その人物には、調査者の運命の力を吸収する魔法が仕掛けられていた。この【秘密】が公開されると、調査者のアンカーの数と同じ数まで、セッションに登場する〈断章〉の憑依深度が1上昇する。", "不幸。その人物には、調査者のアンカーに不幸な出来事を起こす魔法が仕掛けられていた。この【秘密】が公開されると、調査者のアンカーの中から〈愚者〉を一人選び、そのNPCに運命変転表を使用する。", "脱走。その人物には、〈断章〉の逃亡を手助けする魔法が仕掛けられていた。この【秘密】が公開されると、GMは〈断章〉一つとNPC一人を選ぶ。その〈断章〉は、そのNPCに憑依できる。このときGMは、すでに魔法使いによって回収された〈断章〉を選んでも良く、その場合【魔力】は1d6点回復する。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_conspiracy_table$30.$$arity = 0); - - Opal.def(self, '$magicalogia_fate_table', $MagicaLogia_magicalogia_fate_table$31 = function $$magicalogia_fate_table() { - var self = this, table = nil; - - - table = ["思慕。その人物は、実は調査者のことを知っており、深く愛していた。調査者はその人物に対する【運命】を2点上昇し、その属性を「恋愛」にする。その人物の【運命】の属性が「恋愛」の間、調査者は、この人物に対する【運命】が1点上昇するたび、【魔力】がその【運命】の値だけ回復する。", "縁者。その人物は、実は調査者と血縁関係があった。調査者はその人物に対する【運命】を2点上昇し、その属性を「血縁」にする。その人物の【運命】の属性が「血縁」の間、調査者の復活判定に、その【運命】の値だけプラスの修正がつく。", "怨恨。その人物は、実は調査者に深い恨みを持つ人物だった。調査者はその人物に対する【運命】を2点上昇し、その属性を「宿敵」にする。その人物の【運命】の属性が「宿敵」の間は、調査者がファンブルすると、その【運命】の値だけ【魔力】が減少する。", "狂信。その人物は、実は調査者を崇拝していた。調査者はその人物に対する【運命】を2点上昇し、その属性を「支配」にする。その人物の【運命】の属性が「支配」の間、調査者は、その人物に憑依した〈断章〉に魔法戦を挑んだ場合、自動的に勝利することができる。ただし、調査者は、行為判定のとき、その【運命】の値以下の目が出るとファンブルになる。", "分身。その人物は、実は調査者の魔法によって切り離された魂の一部だった。そのNPCは、調査者と融合し、調査者は功績点を1点獲得する。", "無関係。その人物は、今回の事件に特に関係はなかった。しかし、この出会いは本当に無意味だったのだろうか? 調査者は、その人物を対象として事件表を振ること。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_fate_table$31.$$arity = 0); - - Opal.def(self, '$magicalogia_cueball_table', $MagicaLogia_magicalogia_cueball_table$32 = function $$magicalogia_cueball_table() { - var self = this, table = nil; - - - table = ["寿命。その人物の命脈は尽きていた。この【秘密】が公開されると、その人物は死亡する。", "殺意。その人物は、世の中に対する憎悪に溢れ、無差別に誰かを傷つけようとしていた。GMはサイクルの終わりにランダムにこの【秘密】の持ち主以外のNPCを一人選ぶ。そのNPCが〈断章〉に憑依されていない〈愚者〉なら死亡し、そうでなければ、この【秘密】の持ち主本人が死亡する。このとき、いずれにせよその死亡を望まないキャラクターは「闇」の分野かの中からランダムに特技一つを選び、判定を行うことができる。判定に成功するとその死亡を無効化できる。", "強運。その人物は、一種の特異点で、とても強い幸運の持ち主だった。このNPCは、プライズとして扱う。このプライズの持ち主は、あらゆる行為判定を行うとき、プラス1の修正がつく。調査者は、このプライズを獲得する。", "疵痕。その人物は、過去に魔法によって大切なものを奪われており、魔法とその関係者を憎んでいる。その人物がいるシーンでは、召喚と呪文の判定にマイナス2の修正がつく。", "善人。その人物は、強く優しい精神の持ち主だった。その人物に対する【運命】を3点上昇する。", "依代。その人物は、霊媒体質で何かに憑依されやすい。この人物に〈断章〉が憑依した場合、【攻撃力】と【防御力】が2点ずつ上昇する。この【秘密】が公開されると、GMはサイクルの終わりに〈断章〉一つを選び、その憑依の対象をこのNPCに変更することができるようになる。ただし、すでに魔法使いによって回収された〈断章〉を選ぶことはできない。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_cueball_table$32.$$arity = 0); - - Opal.def(self, '$magicalogia_force_field_table', $MagicaLogia_magicalogia_force_field_table$33 = function $$magicalogia_force_field_table() { - var self = this, table = nil; - - - table = ["加護。その人物の頭上には、常に星の恩寵が降り注いでいる。この【秘密】が公開されると、そのシーンに「星」の魔素が2点発生する。また、このセッションの間、この人物に対する【運命】が1点上昇したキャラクターは「星」の魔素を2点獲得する。", "変化(へんげ)。その人物は、実は歳を経た動物―狐や狸などが化けた存在である。この【秘密】が公開されると、そのシーンに「獣」の魔素が2点発生する。また、このセッションの間、この人物に対する【運命】が1点上昇したキャラクターは「獣」の魔素を2点獲得する。", "超能力。その人物には、ESPやPKなど、潜在的な超能力が眠っている。この【秘密】が公開されると、そのシーンに「力」の魔素が2点発生する。また、このセッションの間、この人物に対する【運命】が1点上昇したキャラクターは「力」の魔素を2点獲得する。", "詩人。その人物は、詩神に祝福された存在である。この【秘密】が公開されると、そのシーンに「歌」の魔素が2点発生する。また、このセッションの間、この人物に対する【運命】が1点上昇したキャラクターは「歌」の魔素を2点獲得する。", "夢想家。その人物には、大きな理想や実現したいと思っている夢がある。何か大きなことを成し遂げようとしている。。この【秘密】が公開されると、そのシーンに「夢」の魔素が2点発生する。また、このセッションの間、この人物に対する【運命】が1点上昇したキャラクターは「夢」の魔素を2点獲得する。", "暗黒。その人物は、呪われた運命を背負っており、世界の破滅を呼び込む可能性を持っている。この【秘密】が公開されると、そのシーンに「闇」の魔素が2点発生する。また、このセッションの間、この人物に対する【運命】が1点上昇したキャラクターは「闇」の魔素を2点獲得する。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_force_field_table$33.$$arity = 0); - - Opal.def(self, '$magicalogia_alliance_table', $MagicaLogia_magicalogia_alliance_table$34 = function $$magicalogia_alliance_table() { - var $a, $b, self = this, output = nil, num = nil; - - - output = ""; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - if (num['$=='](1)) { - output = "" + "精霊。その人物は、実は姿を変え、人間界に顕現した精霊だった。象徴する特技は" + (self.$magicalogia_random_skill_table_text_only()) + "である。調査者は、そのセッションの間だけ、その特技の【精霊召喚】を修得する。また、セッションに一度だけ、その【精霊召喚】の判定を自動的に成功にすることができる。" - } else if (num['$=='](2)) { - output = "" + "騎士。その人物は、実は姿を変え、人間界に顕現した騎士だった。象徴する特技は" + (self.$magicalogia_random_skill_table_text_only()) + "である。調査者は、そのセッションの間だけ、その特技の【騎士召喚】を修得する。また、セッションに一度だけ、その【騎士召喚】の判定を自動的に成功にすることができる。" - } else if (num['$=='](3)) { - output = "" + "魔王。その人物は、実は姿を変え、人間界に顕現した魔王だった。象徴する特技は" + (self.$magicalogia_random_skill_table_text_only()) + "である。調査者は、そのセッションの間だけ、その特技の【魔王召喚】を修得する。また、セッションに一度だけ、その【魔王召喚】の判定を自動的に成功にすることができる。" - } else if (num['$=='](4)) { - output = "魔法屋。その人物は、魔法の道具を取引するタリスモンガーだった。以降、この人物のいるシーンでは、自分のチャージしている魔素1つを別の魔素1つに交換してもらうことができる。また、この人物のいるシーンでは、自分の装備魔法1つを修得可能な別の装備魔法1つに交換してもらうことができる。" - } else if (num['$=='](5)) { - output = "師匠。その人物は、かつて調査者に魔法を教えた師匠だった。以降、この人物のいるシーンでは、自分の修得している特技1つを修得可能な別の特技1つに交換してもらうことができる。また、この人物のいるシーンでは、自分の呪文魔法1つを修得可能な別の呪文魔法1つに交換してもらうことができる。" - } else if (num['$=='](6)) { - output = "無垢。その人物は、汚れ無き心の持ち主だった。このNPCは、プライズとして扱う。このプライズの持ち主は、セッション中に一度、【浄化】の呪文をコストなしで使用することができる。この判定は自動的に成功する。"}; - return [output, num]; - }, $MagicaLogia_magicalogia_alliance_table$34.$$arity = 0); - - Opal.def(self, '$magicalogia_blank_secret_table', $MagicaLogia_magicalogia_blank_secret_table$35 = function $$magicalogia_blank_secret_table() { - var $a, $b, self = this, outtext = nil, outnum = nil, num = nil; - - - outtext = ""; - outnum = ""; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - if (num['$=='](1)) { - - $b = self.$magicalogia_inveterate_enemy_table(), $a = Opal.to_ary($b), (outtext = ($a[0] == null ? nil : $a[0])), (outnum = ($a[1] == null ? nil : $a[1])), $b; - outtext = "" + "宿敵。" + (outtext); - } else if (num['$=='](2)) { - - $b = self.$magicalogia_conspiracy_table(), $a = Opal.to_ary($b), (outtext = ($a[0] == null ? nil : $a[0])), (outnum = ($a[1] == null ? nil : $a[1])), $b; - outtext = "" + "謀略。" + (outtext); - } else if (num['$=='](3)) { - - $b = self.$magicalogia_fate_table(), $a = Opal.to_ary($b), (outtext = ($a[0] == null ? nil : $a[0])), (outnum = ($a[1] == null ? nil : $a[1])), $b; - outtext = "" + "因縁。" + (outtext); - } else if (num['$=='](4)) { - - $b = self.$magicalogia_cueball_table(), $a = Opal.to_ary($b), (outtext = ($a[0] == null ? nil : $a[0])), (outnum = ($a[1] == null ? nil : $a[1])), $b; - outtext = "" + "奇人。" + (outtext); - } else if (num['$=='](5)) { - - $b = self.$magicalogia_force_field_table(), $a = Opal.to_ary($b), (outtext = ($a[0] == null ? nil : $a[0])), (outnum = ($a[1] == null ? nil : $a[1])), $b; - outtext = "" + "力場。" + (outtext); - } else if (num['$=='](6)) { - - $b = self.$magicalogia_alliance_table(), $a = Opal.to_ary($b), (outtext = ($a[0] == null ? nil : $a[0])), (outnum = ($a[1] == null ? nil : $a[1])), $b; - outtext = "" + "同盟。" + (outtext);}; - outnum = "" + (num) + "," + (outnum); - return [outtext, outnum]; - }, $MagicaLogia_magicalogia_blank_secret_table$35.$$arity = 0); - - Opal.def(self, '$magicalogia_prise_table', $MagicaLogia_magicalogia_prise_table$36 = function $$magicalogia_prise_table() { - var self = this, table = nil; - - - table = ["敗者は内側から破裂し、四散する。功績点を1点獲得する。", "敗者は無数の蟲や小動物へと姿を変え、それを使い魔とする。勝者は好きな特技(魂の特技は除く)を一つ選ぶ。そのセッションの間、指定特技がその特技の【精霊召喚】【魔剣召喚】【悪夢召喚】のうち一つを修得する。", "敗者は爆発音と共にどこかへと消え、辺りには硫黄のような匂いだけが残る。勝者はそのセッション中に、一度だけ好きなタイミングで「変調」一種を回復することができる。", "敗者は奇妙な形をした数枚の金貨へと姿を変える。勝者は倒した相手のランクと等しい魔貨を獲得する", "敗者は地面から突如現れた無数の腕に引き込まれながら、勝者に向かって賞賛の言葉と共に重要な何かを語る。公開されているハンドアウト一つを選び、その【秘密】を公開する。", "敗者は無数の光の粒へとなっていき、そこから魔素を得る。勝者は好きな魔素を2点獲得する(立会人に渡してもよい)。", "敗者はバラバラのページとなって地面に散らばり、そこから未知の力を読み取る。勝者は【一時的魔力】を2点獲得する。", "敗者は妙なる音楽へと変わり、その曲は勝者の心にしみいる。勝者は倒した相手のランクと等しい魔貨を獲得する。", "敗者は一輪の花となる。勝者はそのセッション中に、一度だけ自分が振った行為判定のサイコロを振り直す権利を得る。", "敗者は言葉のかけらとなっていき、勝者はそこから未来の運命を読み取る。勝者は「事件表」を使用し、その結果を記録しておく。それ以降、そのセッション中のドラマシーンに、同じシーンに登場しているキャラクター一人を選び、一度だけその結果を適用できる。", "敗者は影となって、その場に焼き付き、異境への入り口となる。勝者は、好きな異境を一つ選ぶ。そのセッションの間、その異境へ移動できるようになる。"]; - return self.$get_table_by_2d6(table); - }, $MagicaLogia_magicalogia_prise_table$36.$$arity = 0); - - Opal.def(self, '$magicalogia_extreme_environment_scene_table', $MagicaLogia_magicalogia_extreme_environment_scene_table$37 = function $$magicalogia_extreme_environment_scene_table() {try { - - var $$38, self = this, table = nil; - - - table = ["上下左右も分からない、完全なる闇。このシーンに登場しているPCのうち一人は、≪光≫の判定を行う。成功すると、闇の魔素二個を獲得する。失敗すると、「遮断」の変調を受ける。誰かが判定を行うと、成否に関わらずこの効果はなくなる。", "眼前に広がる業火の海。何もかも喰らい尽すような敵意は圧倒的だ。≪炎≫の判定を行う。失敗すると【魔力】が2点減少する。", "激しい天候で地形が一変する。さきほどまでの光景が嘘のようだ。≪嵐≫で判定を行う。失敗すると、【魔力】が1点減少する。", "どこまでも続く、砂漠。舞い上がる砂塵に、目を開けていられない。≪大地≫の判定を行う。失敗すると、「封印」の変調を受ける。", "言葉さえも凍り付きそうな極寒。生き物の気配は感じられない。【魔力】が1点減少する。", $send(self, 'lambda', [], ($$38 = function(){var self = $$38.$$s || this; - - Opal.ret("" + "苛酷な自然環境によってキミたちは窮地に立たされる。" + (self.$magicalogia_random_skill_table_text_only()) + "の判定を行うこと。成功すると、なんとか使えそうなものを探し、好きな魔素が一個発生する。失敗すると、キミの負った傷は時間と空間を超えて、キミのアンカーに不幸をもたらす。「運命変転」が発生する。")}, $$38.$$s = self, $$38.$$arity = 0, $$38)), "一面の雪野原に、てんてんと足跡が残っている。どうやら、先客がいるらしい。", "切り立つ崖の上。眼下には大きな海が広がっている。上空からは海鳥の鳴き声が聞こえてくる。", "高重力の地。身体全体が鉛に変わってしまったかのように感じられる。≪重力≫の判定を行う。失敗すると【魔力】が1点減少する。", "深い水の底。青に染まった空間に、何かが漂っている。このシーンに登場しているPCのうち一人は≪海≫の判定を行うことができる。成功すると、星の魔素を三個獲得する。失敗すると、【魔力】が2点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", "鼓膜を破りそうな、轟音が鳴り響く。言葉による意思の疎通は諦めた方がよさそうだ。≪旋律≫の判定を行う。失敗すると、チャージしているまその中から好きなものを二個失う。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_extreme_environment_scene_table$37.$$arity = 0); - - Opal.def(self, '$magicalogia_innner_world_scene_table', $MagicaLogia_magicalogia_innner_world_scene_table$39 = function $$magicalogia_innner_world_scene_table() {try { - - var $$40, self = this, table = nil; - - - table = ["肌の色と熱い吐息で満たされた場所。無数の男女が、思いつく限りの肉の欲望を実践している。このシーンに登場しているPCのうち一人は、≪エロス≫の判定を行うことができる。成功すると【一時的魔力】を1点獲得する。失敗すると【魔力】が2点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", "壁一面に、黒光りする虫がびっしりと張り付き、羽音を立てている部屋。この精神の持ち主は、虫が好きなのだろうか、嫌いなのだろうか。このシーンに登場しているPCのうち一人は、≪蟲≫の判定を行うことができる。成功すると、元型「蟲の騎士」をそのセッションの間、相棒にできる。相棒は、破壊か消滅するまで、自分が何らかのシーンに登場すると、そのシーンの種類に関わらず、同じタイミングで召喚される。失敗すると、虫が一斉に飛び立ち、そのシーンに登場しているPC全員の【魔力】が1点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", "誰もいない教室。なぜか、ヒソヒソと囁く声がどこからともなく聞こえ、見られているような視線を感じる。このシーンに登場しているPCのうち一人は、≪不安≫の判定を行うことができる。成功すると、公開されているハンドアウトの中から、好きな【秘密】を公開することができる。失敗すると、「遮断」の変調を受ける。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", "薄暗いが暖かく、ひどく安らぐ空間。ここはまるで、母親の胎内のようだ。このシーンに登場しているPCが、魔素を消費して、【魔力】の回復を行う場合、魔素一個につき、【魔力】を2点回復できる。", "遊園地。賑やかなパレードが目の前を通り過ぎて行くが、客は一人もいない。", $send(self, 'lambda', [], ($$40 = function(){var self = $$40.$$s || this; - - Opal.ret("" + "夜の道。もやもやと黒いものが後ろから、追いかけてくる。はっきりした姿も分からないのに、ひどく恐ろしく感じる。このシーンに登場するPCは、" + (self.$magicalogia_random_skill_table_text_only()) + "の判定を行う。成功すると、好きな魔素二個を獲得できる。失敗した場合、もやもやとした黒いものは君のアンカーの前に現れる。「運命変転」が発生する。")}, $$40.$$s = self, $$40.$$arity = 0, $$40)), "夕暮れの街。なんだか寂しい気分になる。", "床、壁、天井までが赤黒い色に染まった部屋。生臭い臭いが充満している。このシーンに登場しているPCのうち一人は≪血≫で判定を行うことができる。成功すると、【一時的魔力】2点を獲得する。失敗すると【魔力】が1点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", "どこへとも行くか知れぬ電車の中。あなたの他に乗客はいないようだが……。このシーンに登場しているPCのうち一人は≪異界≫で判定を行うことができる。成功すると、好きな異境一つに行くことができる魔法門を発見できる。失敗するとこのシーンに登場しているPC全員の【魔力】が2点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", "大勢の人が行き交う雑踏の中。誰も、あなたに関心を払わない。このシーンでは「不干渉」の世界法則を無視して、好きなキャラクターを調査することができる。", "どことも知れぬ空間。あなたの最も愛しい人が、目の前に現れる。このシーンに登場しているPCのうち一人は、≪情熱≫の判定を行うことができる。成功すると、好きなアンカーに対する【運命】を1点上昇させることができる。失敗すると、「運命変転」が発生する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_innner_world_scene_table$39.$$arity = 0); - - Opal.def(self, '$magicalogia_magic_city_scene_table', $MagicaLogia_magicalogia_magic_city_scene_table$41 = function $$magicalogia_magic_city_scene_table() {try { - - var $$42, self = this, table = nil; - - - table = ["急に爆発が起こる。誰かが実験で失敗したらしい。「綻び」の変調を受けた後、「力」の魔素を二個獲得する。", "標本の並ぶ地下室。実験によって生み出された魔法生物が、瓶詰めにされて並んでいる。", "ごった返す市場。色とりどり食料品や日用品を始め、幻獣の目玉やマンドラゴラの根といった、魔法の触媒となる品までが商われている。このシーンに登場しているPCは、一人一度だけ、功績点1点を消費することで、好きな魔素を二個獲得することができる。", "魔法使いたちの集うサロン。ここなら、有益な情報が得られそうだ。このシーンに登場しているPCのうち一人は、≪物語≫の判定を行うことができる。成功すると、公開されているハンドアウトの中から、好きな【秘密】を公開することができる。失敗すると「封印」の変調を受ける。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", "大通り。幻獣の引く馬車や、絨毯や箒などの空飛ぶ乗り物が、せわしなく通り過ぎる。", $send(self, 'lambda', [], ($$42 = function(){var self = $$42.$$s || this; - - Opal.ret("" + "広場。魔法使い同士が喧嘩を始め、魔法が飛び交い始める。このシーンに登場したPCは、" + (self.$magicalogia_random_skill_table_text_only()) + "で判定を行う。成功すると、好きな魔素を二個獲得する。失敗すると、この場所の魔法の影響が時空を超えて、アンカーに現れる。「運命変転」が発生する。")}, $$42.$$s = self, $$42.$$arity = 0, $$42)), "賑わう酒場。客の中には妖精や魔物たちの姿も多い。このシーンに登場したPCは、【魔力】が1点回復する。", "入り組んだ路地裏。奇妙な異種族たちで構成された盗賊団に襲われる。≪雷≫で判定を行う。失敗すると【魔力】が2点減少するか、もし魔法にチャージした魔素を二個以上持っていればそれを消費するか、どちらかを選ぶ。", "都市の門。新たなる知識を求めてやってきた者、自分の世界へ帰る者、様々な世界の様々な人々が行き来する。", "歓楽街。角や尻尾、翼を持つ、肌もあらわな美女たちが、なまめかしい視線を送ってくる。このシーンに登場しているPCのうち一人は、≪エロス≫で判定を行うことができる。成功すると、元型「エロスの乙女」をそのセッションの間、相棒にできる。相棒は、破壊か消滅するまで、自分が何らかのシーンに登場すると、そのシーンの種類に関わらず、同じタイミングで召喚される。失敗すると【魔力】が1点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", "闘技場。魔法使いが、強化した元型や幻獣を競い合わせている。シーンプレイヤーのPCは、一度だけ、基本ルールブックに載っている、ランク4以下の〈書籍卿〉か〈越境者〉に、魔法戦を挑むことができる。勝利すると、「プライズ表」を使用することができる。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_magic_city_scene_table$41.$$arity = 0); - - Opal.def(self, '$magicalogia_world_after_dead_scene_table', $MagicaLogia_magicalogia_world_after_dead_scene_table$43 = function $$magicalogia_world_after_dead_scene_table() {try { - - var $$44, self = this, table = nil; - - - table = ["寂しげな村。影のような人々が時折行き来する。ここでは、死んだキャラクターに会うことができる。このシーンに登場しているPCのうち一人は、疵をひとつだけ、克服することができる。", "どこまでも広がる花畑。穏やかな雰囲気に満たされている。", "裁判所。強面の裁判官が、溢れる死者の群れに、次々と裁きを下している。≪嘘≫の判定を行う。失敗すると、【魔力】が2点減少する。", "白い光に包まれた食堂。豪勢な食事と美酒が、尽きることなく振る舞われる。このシーンに登場しているPCのうち一人は、≪肉≫の判定を行うことができる。成功すると、【一時的魔力】を1点獲得する。失敗すると、「病魔」の変調を受ける。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", $send(self, 'lambda', [], ($$44 = function(){var self = $$44.$$s || this; - - Opal.ret("" + "床が白い雲になっている場所。雲の隙間からは、現世のような風景が見える。" + (self.$magicalogia_random_skill_table_text_only()) + "の判定を行う。成功すると、このセッション中一度だけ、判定のサイコロを振り直すことができる。失敗すると、時空を越えて、アンカーが死後世界を垣間見てしまう。「運命変転」が発生する。")}, $$44.$$s = self, $$44.$$arity = 0, $$44)), "広い川の岸辺。向こう岸は、現世なのだろうか。このシーンに登場しているPCのうち一人は≪円環≫の判定を行うことができる。成功すると、魔力をリセットできる。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", "礼拝堂。死んでもなお、祈り続ける魂が、無言で跪いている。このシーンに登場しているPCのうち一人は、≪祈り≫の判定を行うことができる。成功すると、【一時的魔力】を2点獲得する。失敗すると、「不運」の変調を受ける。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", "ごく普通の住宅街。日常の営みを繰り返す魂の集う場所だ。", "拷問場。鬼たちが、使者に無限の責め苦を味合わせている。このシーンに登場しているPCのうち一人は、≪絶望≫の判定を行うことができる。成功すると、【一時的魔力】を2点獲得する。失敗すると、「綻び」の変調を受ける。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", "戦場。羽兜の乙女に率いられた戦士たちが、巨人と戦いを繰り広げている。このシーンに登場しているPCのうち一人は、≪天空≫で判定を行うことができる。成功すると、【一時的魔力】を3点獲得する。失敗すると、【魔力】が3点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", "どことも知れぬ空間。あなたの最も愛しい人が、目の前に現れる。このシーンに登場しているPCのうち一人は、≪情熱≫の判定を行うことができる。成功すると、好きなアンカーに対する【運命】を1点上昇させることができる。失敗すると、「運命変転」が発生する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_world_after_dead_scene_table$43.$$arity = 0); - - Opal.def(self, '$magicalogia_labyrinth_world_scene_table', $MagicaLogia_magicalogia_labyrinth_world_scene_table$45 = function $$magicalogia_labyrinth_world_scene_table() {try { - - var $$46, self = this, table = nil; - - - table = ["がらんとした、石畳の部屋。床に描かれた魔法陣が、不気味な光を放っている。このシーンに登場しているPCのうち一人は、≪異界≫で判定を行うことができる。成功すると、その魔法陣を地球に帰還できる魔法門として使用できる。失敗すると、魔法門から現れた道の怪物に襲われ、このシーンに登場しているPC全員の【魔力】が1D6減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", "微かなランプの明かりに照らし出される牢獄。檻の中には、誰かの朽ちた骸が転がっている。このシーンに登場しているPCのうち一人は、≪死≫で判定を行うことができる。成功すると公開されているハンドアウトの中から、好きな【秘密】を公開することができる。失敗すると、死体が呪詛の言葉を吐き、このシーンに登場しているPC全員が「綻び」の変調を受ける。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", "通路の先に、扉と看板がある。看板の文字は宿屋と読める。このシーンに登場しているPC全員は、一度だけ、功績点1点を消費することで、調律を一度行うことができる。", "人一人通るのが、やっとの狭い通路が続いている。この廊下はどこまで伸びているのだろう?", "幾つもの扉と幾つもの分かれ道を進む。おや?いつの間にか、きみは迷ってしまった。シーンプレイヤー以外のPCが、このシーンに登場しようとする場合、≪道≫で判定を行う。失敗したPCは、このシーンに登場できない。", $send(self, 'lambda', [], ($$46 = function(){var self = $$46.$$s || this; - - Opal.ret("" + "怪物が現れ、キミたちを襲う。このシーンに登場しているPC全員は、" + (self.$magicalogia_random_skill_table_text_only()) + "の判定を行うこと。成功すると、怪物を倒し、好きな魔素が一個発生する。失敗すると、キミの負った傷は時間と空間を越えて、キミのアンカーに不幸をもたらす。「運命変転」が発生する。")}, $$46.$$s = self, $$46.$$arity = 0, $$46)), "目の前には、似たような扉がずらりとならんでいる。どの扉を開いたものか?", "暗闇の中から、うなり声が聞こえてくる。どうやら、近くに怪物が潜んでいるようだ。うまくやりすごせないものか……。≪静寂≫で判定を行う。失敗すると、【魔力】が1点減少する。", "通路が途切れ、深い谷が口を開けている。谷底まで光は届かず、まるで地の底まで続いているかのようだ。「闇」の魔素を一個獲得できる。", "金貨や銀貨、宝石に王冠、山のような宝物の積み上げられた部屋。番人は見当たらないが……。このシーンに登場しているPCのうち一人は、≪黄金≫で判定を行うことができる。成功すると1D6点の魔貨かランダムに決定した魔素三個を獲得できる。失敗すると、このシーンに登場しているPC全員の【魔力】が1点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。", "行き止まりの壁には、一見、意味不明な文字が並んでいる。ここから先に進むためには、この文字の謎を解かねばならないのだろうか。このシーンに登場しているPCのうち一人は、≪謎≫で判定を行うことができる。成功すると公開されているハンドアウトの中から、好きな【秘密】を公開することができる。失敗すると、部屋に仕掛けられた罠が発動し、このシーンは強制的に終了する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_labyrinth_world_scene_table$45.$$arity = 0); - - Opal.def(self, '$magicalogia_new_scene_table', $MagicaLogia_magicalogia_new_scene_table$47 = function $$magicalogia_new_scene_table() {try { - - var $$48, self = this, table = nil; - - - table = ["ここではないどこか。魔法の力が満ちた異境の一つへ、一瞬だけ旅をする。そのシーンに星の魔素が1点発生する。", "夢の中。遠く過ぎ去った日々が、あなたの前に現れる。そのシーンに夢の魔素が1点発生する。", "強く風が吹き、雲が流されていく。遠く、雷鳴が聞こえた。そのシーンに力の魔素が1点発生する。", "静かなカフェの店内。珈琲の香りと共に、優しく穏やかな雰囲気が満ちている。", "無人の路地裏。ここならば、邪魔が入ることもないだろう。", $send(self, 'lambda', [], ($$48 = function(){var self = $$48.$$s || this; - - Opal.ret("" + "周囲で〈断章〉が引き起こした魔法災厄が発生する。" + (self.$magicalogia_random_skill_table_text_only()) + "の判定を行うこと。成功すると、そのシーンに好きな魔素が1点発生する。失敗すると、「運命変転表」を使用する。")}, $$48.$$s = self, $$48.$$arity = 0, $$48)), "なんの変哲もないおだやかな風景。しかし、その日常の背後で魔法災厄の影を感じる。", "読んでいた本を閉じる。そこには、あなたが知りたかったことが書かれていた。なるほど、そういうことか。", "夜の街を歩く。暖かな家々の明かりが、遠く見える。そのシーンに歌の魔素が1点発生する。", "大勢で賑わう広場。祭りでも行われているのだろうか? 誰かを呼ぶ声が聞こえる。そのシーンに獣の魔素が1点発生する。", "悲劇の予感。家族の不幸、友の絶望、仲間の死......このままだと起きてしまうかもしれない出来事の幻が見える。そのシーンに闇の魔素が1点発生する。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_new_scene_table$47.$$arity = 0); - - Opal.def(self, '$magicalogia_random_skill_star_table', $MagicaLogia_magicalogia_random_skill_star_table$49 = function $$magicalogia_random_skill_star_table() { - var self = this, table = nil; - - - table = ["黄金", "大地", "森", "道", "海", "静寂", "雨", "嵐", "太陽", "天空", "異界"]; - return self.$get_table_by_2d6(table); - }, $MagicaLogia_magicalogia_random_skill_star_table$49.$$arity = 0); - - Opal.def(self, '$magicalogia_random_skill_beast_table', $MagicaLogia_magicalogia_random_skill_beast_table$50 = function $$magicalogia_random_skill_beast_table() { - var self = this, table = nil; - - - table = ["肉", "蟲", "花", "血", "鱗", "混沌", "牙", "叫び", "怒り", "翼", "エロス"]; - return self.$get_table_by_2d6(table); - }, $MagicaLogia_magicalogia_random_skill_beast_table$50.$$arity = 0); - - Opal.def(self, '$magicalogia_random_skill_force_table', $MagicaLogia_magicalogia_random_skill_force_table$51 = function $$magicalogia_random_skill_force_table() { - var self = this, table = nil; - - - table = ["重力", "風", "流れ", "水", "波", "自由", "衝撃", "雷", "炎", "光", "円環"]; - return self.$get_table_by_2d6(table); - }, $MagicaLogia_magicalogia_random_skill_force_table$51.$$arity = 0); - - Opal.def(self, '$magicalogia_random_skill_poem_table', $MagicaLogia_magicalogia_random_skill_poem_table$52 = function $$magicalogia_random_skill_poem_table() { - var self = this, table = nil; - - - table = ["物語", "旋律", "涙", "別れ", "微笑み", "想い", "勝利", "恋", "情熱", "癒し", "時"]; - return self.$get_table_by_2d6(table); - }, $MagicaLogia_magicalogia_random_skill_poem_table$52.$$arity = 0); - - Opal.def(self, '$magicalogia_random_skill_dream_table', $MagicaLogia_magicalogia_random_skill_dream_table$53 = function $$magicalogia_random_skill_dream_table() { - var self = this, table = nil; - - - table = ["追憶", "謎", "嘘", "不安", "眠り", "偶然", "幻", "狂気", "祈り", "希望", "未来"]; - return self.$get_table_by_2d6(table); - }, $MagicaLogia_magicalogia_random_skill_dream_table$53.$$arity = 0); - - Opal.def(self, '$magicalogia_random_skill_night_table', $MagicaLogia_magicalogia_random_skill_night_table$54 = function $$magicalogia_random_skill_night_table() { - var self = this, table = nil; - - - table = ["深淵", "腐敗", "裏切り", "迷い", "怠惰", "歪み", "不幸", "バカ", "悪意", "絶望", "死"]; - return self.$get_table_by_2d6(table); - }, $MagicaLogia_magicalogia_random_skill_night_table$54.$$arity = 0); - - Opal.def(self, '$magicalogia_random_skill_table_text_only_star', $MagicaLogia_magicalogia_random_skill_table_text_only_star$55 = function $$magicalogia_random_skill_table_text_only_star() { - var $a, $b, self = this, text = nil; - - - $b = self.$magicalogia_random_skill_star_table(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), $b; - return text; - }, $MagicaLogia_magicalogia_random_skill_table_text_only_star$55.$$arity = 0); - - Opal.def(self, '$magicalogia_random_skill_table_text_only_beast', $MagicaLogia_magicalogia_random_skill_table_text_only_beast$56 = function $$magicalogia_random_skill_table_text_only_beast() { - var $a, $b, self = this, text = nil; - - - $b = self.$magicalogia_random_skill_beast_table(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), $b; - return text; - }, $MagicaLogia_magicalogia_random_skill_table_text_only_beast$56.$$arity = 0); - - Opal.def(self, '$magicalogia_random_skill_table_text_only_force', $MagicaLogia_magicalogia_random_skill_table_text_only_force$57 = function $$magicalogia_random_skill_table_text_only_force() { - var $a, $b, self = this, text = nil; - - - $b = self.$magicalogia_random_skill_force_table(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), $b; - return text; - }, $MagicaLogia_magicalogia_random_skill_table_text_only_force$57.$$arity = 0); - - Opal.def(self, '$magicalogia_random_skill_table_text_only_poem', $MagicaLogia_magicalogia_random_skill_table_text_only_poem$58 = function $$magicalogia_random_skill_table_text_only_poem() { - var $a, $b, self = this, text = nil; - - - $b = self.$magicalogia_random_skill_poem_table(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), $b; - return text; - }, $MagicaLogia_magicalogia_random_skill_table_text_only_poem$58.$$arity = 0); - - Opal.def(self, '$magicalogia_random_skill_table_text_only_dream', $MagicaLogia_magicalogia_random_skill_table_text_only_dream$59 = function $$magicalogia_random_skill_table_text_only_dream() { - var $a, $b, self = this, text = nil; - - - $b = self.$magicalogia_random_skill_dream_table(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), $b; - return text; - }, $MagicaLogia_magicalogia_random_skill_table_text_only_dream$59.$$arity = 0); - - Opal.def(self, '$magicalogia_random_skill_table_text_only_night', $MagicaLogia_magicalogia_random_skill_table_text_only_night$60 = function $$magicalogia_random_skill_table_text_only_night() { - var $a, $b, self = this, text = nil; - - - $b = self.$magicalogia_random_skill_night_table(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), $b; - return text; - }, $MagicaLogia_magicalogia_random_skill_table_text_only_night$60.$$arity = 0); - - Opal.def(self, '$magicalogia_magi_fortune_change_table', $MagicaLogia_magicalogia_magi_fortune_change_table$61 = function $$magicalogia_magi_fortune_change_table() { - var self = this, table = nil; - - - table = ["嫌悪。〈愚者〉たちを嫌悪し、〈大法典〉のやり方に疑問を覚えるようになる。この不幸が二度発生すると、その魔法使いは死亡しないで〈書籍卿〉になり、NPCとなる。この不幸が〈書籍卿〉に降り注いだ場合、不幸は無効化される。", "悪心。魔法に関する強い願いや邪悪な欲望が肥大化していく。この不幸が二度発生すると、その魔法使いは死亡した後〈禁書〉となり、NPCとなる。", "幽霊。肉体がほとんど失われ、霊的存在になる。この不幸が二度発生すると、その魔法使いは死亡ではなく消滅する。", "連鎖。運命変転が発生する。この不幸が二度発生しても死亡しない。", "変調。ランダムに変調1つを受ける。この不幸が二度発生しても死亡しない。", "消耗。【魔力】が1点減少する。この不幸が二度発生しても死亡しない。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_magi_fortune_change_table$61.$$arity = 0); - - Opal.def(self, '$magicalogia_magic_bookshelf_scene_table', $MagicaLogia_magicalogia_magic_bookshelf_scene_table$62 = function $$magicalogia_magic_bookshelf_scene_table() {try { - - var $$63, $$64, $$65, self = this, table = nil; - - - table = [$send(self, 'lambda', [], ($$63 = function(){var self = $$63.$$s || this; - - Opal.ret("" + "〈禁書〉の保管庫へ入ることを許可された。幾重にも張り巡らされた決壊や、鋭い目つきの書警たちが目に付く。その隙をついて、〈禁書〉が襲い掛かってきた!このシーンに登場したPCは一人だけ《" + (self.$magicalogia_random_skill_table_text_only_force()) + "》の判定を行う。失敗すると、【魔力】が3点減少する。成功すると、【一時的魔力】を3点得る。誰かが判定すると、成否にかかわらず、この効果はなくなる。")}, $$63.$$s = self, $$63.$$arity = 0, $$63)), "私室。狭いけれど、一番落ち着ける場所だ。このシーンに登場しているPCのうち一人は、【魔力】を上限まで回復させることができる。", "町の図書館。いつのまにか、人界に戻ってきてしまったようだ。このシーンに登場しているPCのうち一人は、好きなキャラクターを1人選び、事件表を一回振って、その効果を適用する。", "巨大な円卓がしつらえられた部屋。どうやらここは、会議場のようだ。", "長い廊下。学院の制服に身を包んだ少年少女が、笑いさざめきながら駆けていく。", $send(self, 'lambda', [], ($$64 = function(){var self = $$64.$$s || this; - - Opal.ret("" + "荒れ果てた部屋。倒れた空っぽの本棚が、目に付く。これは〈大破壊〉の影響なのだろうか…。このシーンに登場するPCは、" + (self.$magicalogia_random_skill_table_text_only()) + "の判定を行う。失敗すると、時空を超えてアンカーに影響が現れる。「運命変転」が発生する。")}, $$64.$$s = self, $$64.$$arity = 0, $$64)), "倉庫。未整理の本が山のように積まれて、司書たちが分類整理に追われている。", "誰かの研究室に迷い込む。積まれている魔導書が興味深い。", "高い天井と、天井まで続く壁を埋め尽くす、本の群れ。このすべてが、この書庫に所蔵された魔導書だ。このシーンに登場しているPCのうち一人は、【一時的魔力】を1点獲得する。", $send(self, 'lambda', [], ($$65 = function(){var self = $$65.$$s || this; - - Opal.ret("" + "魔導書の閲覧室。数人の魔法使いが、熱心に魔導書を読んでいる。このシーンに登場しているPCのうち一人は、" + (self.$magicalogia_random_skill_table_text_only()) + "の判定を行うことができる。成功すると、修得している魔法を一つ、修得可能な別の魔法に入れ替えることができる。失敗すると、「封印」の変調を受ける。誰かが判定すると、成否にかかわらず、この効果はなくなる。")}, $$65.$$s = self, $$65.$$arity = 0, $$65)), "本棚と本棚の間に、唐突に扉が浮かんでいる。この扉は、異界につながる戸口だ。一体どこにつながっているのだろう。異界シーン表の中からランダムに一つを選んで、その効果を適用する。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_magic_bookshelf_scene_table$62.$$arity = 0); - - Opal.def(self, '$magicalogia_magic_academy_scene_table', $MagicaLogia_magicalogia_magic_academy_scene_table$66 = function $$magicalogia_magic_academy_scene_table() {try { - - var $$67, $$68, $$69, $$70, $$71, $$72, self = this, table = nil; - - - table = ["目の前に美しい黒龍が現れた。学院の長、ザナルパトスだ。彼は、何を告げようとしているのだろうか。", $send(self, 'lambda', [], ($$67 = function(){var self = $$67.$$s || this; - - Opal.ret("" + "突然何かが襲い掛かってきた!生徒が元型の召喚に失敗したようだ。このシーンに登場しているPCのうち一人は、≪" + (self.$magicalogia_random_skill_table_text_only_force()) + "≫の判定を行う。失敗すると、【魔力】が3点減少する。成功すると、【一時的魔力】を3点得る。誰かが判定すると、成否にかかわらず、この効果はなくなる。")}, $$67.$$s = self, $$67.$$arity = 0, $$67)), $send(self, 'lambda', [], ($$68 = function(){var self = $$68.$$s || this; - - Opal.ret("" + "ここは女子寮?このシーンに男性のPCが登場した場合、その男性PCは≪" + (self.$magicalogia_random_skill_table_text_only_beast()) + "≫の判定を行う。失敗すると、「封印」の変調を受ける。")}, $$68.$$s = self, $$68.$$arity = 0, $$68)), "寮の廊下。「どなたですか?」寮監のシグリットに呼び止められた。このシーンに登場しているPCは≪自由≫で判定を行う。失敗すると、このシーンで行う判定すべてにマイナス1の修正を受ける。", "天井の高い廊下。分厚い扉の向こうからかすかに授業を行う講師の声が聞こえてくる。", $send(self, 'lambda', [], ($$69 = function(){var self = $$69.$$s || this; - - Opal.ret("" + "扉を開けて現れたのは、よく知る相手だった。なぜか、学院に迷い込んでしまったようだ。" + (self.$magicalogia_random_skill_table_text_only()) + "で判定を行う。失敗すると、「運命変転」が発生する。")}, $$69.$$s = self, $$69.$$arity = 0, $$69)), "誰かが作った秘密の小部屋に迷い込んでしまう。学園ではあまり食べられないお菓子が山のように仕舞われているようだ。", "学院西部に広がるアーデンの森。鳥の鳴き声が聞こえる。", $send(self, 'lambda', [], ($$70 = function(){var self = $$70.$$s || this; - - Opal.ret("" + "授業を行っている教室。講師が呼び出した元型がこちらに向かって飛んでくる。このシーンに登場しているPCは一人だけ" + (self.$magicalogia_random_skill_table_text_only()) + "で判定を行う。失敗すると【魔力】が1点減少する。成功すると、その特技の精霊が召喚できる。誰かが判定すると、成否にかかわらず、この効果はなくなる。")}, $$70.$$s = self, $$70.$$arity = 0, $$70)), $send(self, 'lambda', [], ($$71 = function(){var self = $$71.$$s || this; - - Opal.ret("" + "生徒に何か魔法を見せて欲しいと乞われる。このシーンに登場しているPCは一人だけ、≪" + (self.$magicalogia_random_skill_table_text_only_dream()) + "≫の判定を行う。失敗すると、「不運」の変調を受ける。成功すると、「夢」の魔素をを2点獲得する。誰かが判定すると、成否にかかわらず、この効果はなくなる。")}, $$71.$$s = self, $$71.$$arity = 0, $$71)), $send(self, 'lambda', [], ($$72 = function(){var self = $$72.$$s || this; - - Opal.ret("" + "自習室。生徒たちが必死に魔導書を理解しようとしている。このシーンに登場しているPCは一人だけ、≪" + (self.$magicalogia_random_skill_table_text_only_star()) + "≫の判定を行う。成功すると、好きな魔素をを2点獲得する。誰かが判定すると、成否にかかわらず、この効果はなくなる。")}, $$72.$$s = self, $$72.$$arity = 0, $$72))]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_magic_academy_scene_table$66.$$arity = 0); - - Opal.def(self, '$magicalogia_tower_credo_scene_table', $MagicaLogia_magicalogia_tower_credo_scene_table$73 = function $$magicalogia_tower_credo_scene_table() {try { - - var $$74, $$75, $$76, self = this, table = nil; - - - table = ["目の前に一人の少女が現れる。眠り姫の長、ラトゥナだ。ずっと眠り続けている筈の彼女が現れたのは、いったい何を告げるためなのだろうか。", $send(self, 'lambda', [], ($$74 = function(){var self = $$74.$$s || this; - - Opal.ret("" + "突然何かが襲い掛かってきた!未熟な魔法使いが元型の召喚に失敗したようだ。このシーンに登場しているPCは一人だけ、≪" + (self.$magicalogia_random_skill_table_text_only_force()) + "≫の判定を行う。失敗すると、【魔力】が3点減少する。成功すると、【一時的魔力】を3点得る。誰かが判定すると、成否にかかわらず、この効果はなくなる。")}, $$74.$$s = self, $$74.$$arity = 0, $$74)), $send(self, 'lambda', [], ($$75 = function(){var self = $$75.$$s || this; - - Opal.ret("" + "話しかけてきた天涯預言者が、不幸な未来を予言する。このシーンに登場しているPCは一人だけ、≪" + (self.$magicalogia_random_skill_table_text_only_dream()) + "≫の判定を行う。失敗すると、【魔力】が1点減少する。成功すると、「夢」の魔素をを1点獲得する。誰かが判定すると、成否にかかわらず、この効果はなくなる。")}, $$75.$$s = self, $$75.$$arity = 0, $$75)), "塔の内側の壁に並ぶ、無数の魔道書の前。この中から、なにかの手がかりが得られるかも知れない。このシーンに登場しているPCのうち一人は、【一時的魔力】を1点獲得する。", "小さな客間で〈大法典〉からの使者との会合が行われている。天涯が新たな予言を伝えているのかも知れない。", $send(self, 'lambda', [], ($$76 = function(){var self = $$76.$$s || this; - - Opal.ret("" + "こんな場所にいる筈のない人が君の前にあらわれる。眠り姫の眠りの中に迷い込んでしまったらしい。" + (self.$magicalogia_random_skill_table_text_only()) + "で判定を行う。失敗すると、「運命変転」が発生する。")}, $$76.$$s = self, $$76.$$arity = 0, $$76)), "塔の上。山脈の連なりとその上に浮かぶ月が、塔を静かに見下ろしている。", "塔の外壁に作られた螺旋階段の上。強い風が吹き付けている。", "クレドの塔に続く、険しい山道。何かが潜んでいるんだろうか…。「獣」の魔素を1点獲得できる。", "幻夢殿の中。眠り姫達の安らかな寝息が聞こえてくる。こちらも眠くなってくる。", "突然、目の前に扉が現れる。この扉は、異界につながる戸口だ。一体どこにつながっているのだろう。異界シーン表の中からランダムに一つを選んで、その効果を適用する。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_tower_credo_scene_table$73.$$arity = 0); - - Opal.def(self, '$magicalogia_parallel_world_scene_table', $MagicaLogia_magicalogia_parallel_world_scene_table$77 = function $$magicalogia_parallel_world_scene_table() {try { - - var $$78, $$79, $$80, self = this, table = nil; - - - table = ["カフェのテーブル。FMラジオは、去年解散したはずのバンドの、先日発表した新曲を流している。このシーンに登場しているPCのうち一人は、「時の流れ表」を1回振り、効果を適用する。", $send(self, 'lambda', [], ($$78 = function(){var self = $$78.$$s || this; - - Opal.ret("" + "賑やかな通り。向こうから、あなたにそっくりな人物が歩いてくる。あれはこの世界の、あなた自身だろうか。このシーンに登場しているPCの一人は、" + (self.$magicalogia_random_skill_table_text_only()) + "の判定を行う。成功すると、好きな魔素をを2点獲得する。失敗すると、「病魔」の変調を受ける。誰かが判定すると、成否にかかわらず、この効果はなくなる。")}, $$78.$$s = self, $$78.$$arity = 0, $$78)), "夜の街を歩く。よく知っている筈の風景なのに、どこか違うという違和感がぬぐえない。", "買い物客でにぎわう商店街。つぶれたはずの店が健在であったり、繁盛しているはずの店が潰れていたりしている。", "繁華街。ビルの大型ビジョンから、知らない国同士の戦争に関するニュースが流れている。", $send(self, 'lambda', [], ($$79 = function(){var self = $$79.$$s || this; - - Opal.ret("" + "縁のある人の家の前。玄関から、見知らぬ人が現れ、こちらを不審げに眺めている。この人はもしかして…?" + (self.$magicalogia_random_skill_table_text_only()) + "で判定を行う。失敗すると、「運命変転」が発生する。")}, $$79.$$s = self, $$79.$$arity = 0, $$79)), "乗客のいない電車の中。時折、聞き覚えのない駅名がアナウンスされる。", "学校帰りの学生たちが目立つ、駅前のロータリー。あの学校の制服のリボンは、赤だっただろうか?", "洋館の前。ここに、こんな建物はなかった筈だが。", $send(self, 'lambda', [], ($$80 = function(){var self = $$80.$$s || this; - - Opal.ret("" + "小学校の前を通る。音楽室の窓から、見知らぬ音楽家の肖像が見える。≪" + (self.$magicalogia_random_skill_table_text_only_poem()) + "≫の判定を行う。失敗すると、「封印」の変調を受ける。")}, $$80.$$s = self, $$80.$$arity = 0, $$80)), "目の前で、以前、経験した出来事が起きる。この世界では、これは、今から起きる出来事なのだ。このシーンに登場しているPCのうち一人は、このシーンの間、判定に+1の修正を受ける。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_parallel_world_scene_table$77.$$arity = 0); - - Opal.def(self, '$magicalogia_post_apocalypse_scene_table', $MagicaLogia_magicalogia_post_apocalypse_scene_table$81 = function $$magicalogia_post_apocalypse_scene_table() {try { - - var $$82, self = this, table = nil; - - - table = ["夜。雨宿りのために足を踏み入れた寺院に危険は気配はなく、ゆっくり休めそうだ。静に時が流れていく。", "夜。雑草が生い茂り、ツタに覆われた人気のない山村で巨大な肉食獣が襲い掛かってくる。このシーンに登場しているPCのうち一人は、≪牙≫の判定を行わなければならない。失敗すると、【魔力】が2点減少する。誰かが判定すると、成否にかかわらず、この効果はなくなる。", "夜。大規模な爆撃で地平線と化した戦場跡。どこの国ともわからぬ国旗が夜風に吠えている。虚憑が一体襲い掛かってくる。魔法戦を行うこと。この魔法戦はゲーム中に一度だけ発生する。", $send(self, 'lambda', [], ($$82 = function(){var self = $$82.$$s || this; - - Opal.ret("" + "夜。もはや廃墟と化した埃っぽい都市。〈愚者〉が虚憑に襲われている。このシーンに登場しているPCの一人は、" + (self.$magicalogia_random_skill_table_text_only()) + "の判定することができる。成功すれば救出でき、助け出した〈愚者〉に対し、好きな属性で運命を1点獲得する。失敗すると【魔力】を3点失う。")}, $$82.$$s = self, $$82.$$arity = 0, $$82)), "夜。虚憑の群れに付きまとわれる。シーンプレイヤーは≪悪意≫の判定を行う。失敗するとこのシーンの間、あらゆる判定がマイナス2される。", "夜明け前。ハイウェイが一直線に突き抜ける灰色の荒野。静かすぎて自らの鼓動を感じるほどだ。虚憑が一体襲い掛かってくる。魔法戦を開始すること。2ラウンド経過するまでは夜、以降のラウンドは昼として処理する。この魔法戦はゲーム中に一度だけ発生する。", "昼。〈愚者〉の子供が、歴史的な遺産を遊び場に、一人遊びをしている。この子の未来はどうなるのだろうか。", "昼。世界大戦で墜落した戦闘機が、砂漠の砂に半ば埋もれている。だが、そのエンジンは死んでいない。このシーンに登場しているPCの一人は≪風≫で判定を行うことができる。成功すると魔力のリセットを行う。成否にかかわらず、この効果は一度だけ発生する。", "昼。広い建物が並ぶ美しい海岸。かつてはリゾート地だったそこには、白い遺骨が大量に打ち上げられ、潮騒に洗われている。誰か一人が≪別れ≫の特技の判定に成功すると、ランダムに選んだ魔素3点を獲得する。誰かが判定すると、成否にかかわらず、この効果はなくなる。", "昼。崩壊した農村のかたわらで、美味しそうな果実を発見する。≪大地≫の判定に成功すると【魔力】が2点回復する。", "夕刻。錆び付いた線路。その先までたくさんのしゃれこうべが無造作に転がっている。虚憑が一体襲い掛かってくる。魔法戦を開始すること。2ラウンド経過するまでは昼、以降のラウンドは夜として処理する。この魔法戦はゲーム中に一度だけ発生する。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_post_apocalypse_scene_table$81.$$arity = 0); - - Opal.def(self, '$magicalogia_god_bar_scene_table', $MagicaLogia_magicalogia_god_bar_scene_table$83 = function $$magicalogia_god_bar_scene_table() {try { - - var $$84, self = this, table = nil; - - - table = ["マスターの雷神に絡まれる。このシーンに登場しているPCのうち一人は、雷神相手に「事件表」を振る。", "神々しく光輝く、威厳に溢れた神が現れ、場の雰囲気を支配する。このシーンの間、「世界法則」に「調査阻害」が加わる。", "上の階に登ろうとすると、キマイラが待ち構えている。このシーンに登場しているPCのうち一人は、≪炎≫で判定を行う。失敗すると、【魔力】が1点減少する。成功するまで判定を行うこと。この効果は一度だけ発生する。", "「かんぱーい!」注がれた酒をつい飲んでしまう。ずいぶん強いスピリッツのようだが。このシーンに登場しているPCのうち一人は、≪水≫で判定を行うことができる。成功すると魔貨を1点手に入れる。成否にかかわらずこの効果は一度だけ発生する。", "乾杯のかけ声、酔っ払いの笑い声、あちこちのテーブルでは大きな話し声…。どこにでもある、酒場の光景だ。", $send(self, 'lambda', [], ($$84 = function(){var self = $$84.$$s || this; - - Opal.ret("" + "客の一人に、無理矢理酒を飲まされる。なんて強い酒だろう。" + (self.$magicalogia_random_skill_table_text_only()) + "で判定を行う。失敗すると、「運命変転」が発生する。")}, $$84.$$s = self, $$84.$$arity = 0, $$84)), "階段を上っている。いったいいつから登り始めたのか記憶にない。これはどこまで続くのだろう。", "建物の中の筈なのに、雷雲が立ちこめ、嵐が巻き起こる。神々がケンカしている!このシーンに登場しているPCのうち一人は、≪嵐≫で判定を行う。失敗すると、【魔力】が2点減少する。成否にかかわらずこの効果は一度だけ発生する。", "扉の前に、妖怪が張り付いていて、通してくれない。妖怪は何かくれと強請ってくる。このシーンに登場しているPCのうち一人は、好きな魔素を1点減少する。減少する魔素がない場合、【魔力】が1点減少する。", "上の階に登ろうとすると、竜が待ち構えている。このシーンに登場しているPCのうち一人は、≪牙≫で判定を行う。失敗すると、「綻び」の変調を受ける。成否にかかわらず、この効果は一度だけ発生する。", "美しい女神が、鏡をのぞき込んでいる。どうやら、運命が映る鏡だと言うのだが。このシーンに登場しているPCのうち一人は、≪未来≫で判定を行っても良い。成功すると好きなアンカーとの【運命】が1点上昇する。成否にかかわらず、この効果は一度だけ発生する。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_god_bar_scene_table$83.$$arity = 0); - - Opal.def(self, '$magicalogia_starlight_scene_table', $MagicaLogia_magicalogia_starlight_scene_table$85 = function $$magicalogia_starlight_scene_table() {try { - - var $$86, self = this, table = nil; - - - table = ["あなたの持つ「切符」は無効であると車掌に告げられる。他の乗客の視線を感じる。このシーンに登場しているPCのうち一人は、もう一度「切符」を調達しなければならない。魂の特技の判定を、成功するまで繰り返すこと。", "ごとごと。ごとごと。ガラスより透き通る銀河の水辺を走る。色とりどりの花々が星の光に冴え渡っては通り過ぎて行く。", "ふと目を覚ます。汽車に揺られていつの間にか眠っていたらしい。夢の中で誰かと会っていた気がしてならない。シーンプレイヤーが≪深淵≫の判定に成功すると、ランダムに選んだアンカーとの運命が1点上昇する。", "銀河の水辺にぽつりと浮かぶ島に、目の覚めるような白い立派な十字架がそびえたっている。このシーンに登場しているPCのうち一人は、≪祈り≫で判定を行うことができる。成功すると、以降このゲーム中に発生する魔法災厄が一回だけ無効化される。誰かが判定すると、成否にかかわらず、この効果はなくなる。", "窓から銀河を見つめる、黒い外套を着た少女がいる。あなたに気づくとお菓子を差し出し、にこりと笑って去っていく。シーンプレイヤーはランダムに選んだ魔素を1点獲得する。", "ノイズ混じりの車内放送が「停車駅」への到着を告げる。しばらくすると「汽車」が止まった。キャラクターは「停車駅」で降りることができる。降りる場合、「停車駅」の世界法則を決定し、その法則に従ってシーンを進めること。", "車窓の向こうに、星明りに照らされたススキ野原が青白く広がる。そんな中で、不思議な紋様の書かれた三角標が何本か、ぽつり、ぽつりと立ち尽くしているのが見えた。", "気づくと誰もいない。青いビロウドを張った座席だけが、空間をむなしく彩っている。シーンプレイヤー以外のPCが、このシーンに登場しようとする場合、≪静寂≫で判定を行う。失敗したPCは、このシーンに登場できない。", $send(self, 'lambda', [], ($$86 = function(){var self = $$86.$$s || this; - - Opal.ret("" + "「この席、よろしいかな?」あなたの隣に〈書籍卿〉が座る。" + (self.$magicalogia_random_skill_table_text_only()) + "の判定に成功すると公開されているハンドアウトの中から、好きなものを選び、その【秘密】を公開することができる。誰かが判定すると、成否にかかわらず、この効果はなくなる。")}, $$86.$$s = self, $$86.$$arity = 0, $$86)), "銀河を超える渡り鳥の群れ。しばし「汽車」と並走し、やがて離れ、天の川のようにきらきらした光の帯になっていく。このシーンに登場しているPCのうち一人は、≪翼≫で判定を行うことができる。成功すると魔力をリセットできる。誰かが判定すると、成否にかかわらず、この効果はなくなる。", "隣の車輛から誰かが移ってきた。なんと、あなたのアンカーである。このシーンに登場しているPCをランダムに一人選び、そのPCのアンカーの中から、この異境に存在しない〈愚者〉のアンカーをランダムで一人選ぶこと。そのアンカーが、元の世界へ無事戻ることができたら、ゲーム終了時に功績点を1点獲得する。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_starlight_scene_table$85.$$arity = 0); - - Opal.def(self, '$magicalogia_world_low_add_table', $MagicaLogia_magicalogia_world_low_add_table$87 = function $$magicalogia_world_low_add_table() { - var self = this, table = nil; - - - table = ["世界法則「楽園」。この「停車駅」は美しく、慰めに満ちている。この「停車駅」で降りた〈愚者〉は魅了され、ここで一生を過ごすことになる。「刻印百景」の特技で判定に成功すると、これを押しとどめることができる。この判定は、対象の〈愚者〉一人につき一回しかできない。", "世界法則「夜祭」。星の明かりや提灯を頼りに、終わらないお祭りが続いている。このシーンに登場しているキャラクターは、「刻印百景」の特技で判定に成功すると、【手当】の俗呪を使用したとき、消費した魔素1点につき、【魔力】を2点回復できるようになる。", "世界法則「遺棄」。この「停車駅」の周辺は、様々なモノが捨てられている。シーンプレイヤーが「刻印百景」の特技で判定に成功すると、魔法【回想】と同じ効果が一回だけ発生する。誰を対象とするかは、シーンに登場しているキャラクターの中から、ランダムに選ばれる。", "世界法則「妖蝶」。この「停車駅」の周辺は、魔素を帯びた不思議な色合いの羽をもつ蝶が生息している。このシーンに登場しているキャラクターは、「刻印百景」の特技で判定に成功すると、任意の魔素を2点獲得できる。失敗すると、ランダムに選んだ変調1つを受ける。", "この「停車駅」の周辺は死んだ〈愚者〉たちの終着点でもある。もしここで降りる〈愚者〉がいれば、その人物は死んでいたことになる。このシーンに登場しているキャラクターがその〈愚者〉をアンカーとしている場合、「刻印百景」の特技で判定に成功すると、「疵」になることなく運命欄から消去できる。", "世界法則「魔法門」。他の異境への入り口が存在する。「刻印百景」の特技で判定に成功すると、その魔法門を発見できる。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_world_low_add_table$87.$$arity = 0); - - Opal.def(self, '$magicalogia_wondaring_monster_table', $MagicaLogia_magicalogia_wondaring_monster_table$88 = function $$magicalogia_wondaring_monster_table() {try { - - var $$89, $$90, $$91, $$92, $$93, $$94, self = this, table = nil; - - - table = [$send(self, 'lambda', [], ($$89 = function(){var self = $$89.$$s || this; - - Opal.ret("" + "トロールに率いられたオークとゴブリンの大軍団に遭遇する。数百という怪物たちが野蛮な叫び声をあげながら、魔法使いたちに襲い掛かってくる。≪" + (self.$magicalogia_random_skill_table_text_only_star()) + "≫の判定を行う。全員の判定が終わったら、失敗したPCは1d6点のダメージを受ける。このとき、判定に成功したPCの数だけそのダメージの値を軽減できる。")}, $$89.$$s = self, $$89.$$arity = 0, $$89)), $send(self, 'lambda', [], ($$90 = function(){var self = $$90.$$s || this; - - Opal.ret("" + "大きな猛牛の頭をした巨漢…ミノタウロスが立ち塞がる。手に持った青銅の斧を振りかぶる。シーンに登場しているPCの中からランダムに代表を1人選ぶ。代表は≪" + (self.$magicalogia_random_skill_table_text_only_beast()) + "≫の判定を行う。失敗すると、PC全員は2点のダメージと「綻び」の変調を受ける。")}, $$90.$$s = self, $$90.$$arity = 0, $$90)), $send(self, 'lambda', [], ($$91 = function(){var self = $$91.$$s || this; - - Opal.ret("" + "突如、ドラゴンが現れる。深紅の鱗に覆われた巨影は、鎌首をもたげると、数瞬後、強烈な炎を吐いた。シーンに登場しているPC全員は≪" + (self.$magicalogia_random_skill_table_text_only_force()) + "≫の判定を行う。全員の判定が終わったら、PC全員は、1+判定に失敗した人数点のダメージを受ける。")}, $$91.$$s = self, $$91.$$arity = 0, $$91)), $send(self, 'lambda', [], ($$92 = function(){var self = $$92.$$s || this; - - Opal.ret("" + "白銀の鎧に身を包んだ騎士が現れる。騎士は一対一の勝負を挑んできた。シーンに登場しているPCの中から代表を1人選ぶ。代表は≪" + (self.$magicalogia_random_skill_table_text_only_poem()) + "≫の判定を行う。失敗すると代表は5点のダメージを受ける。")}, $$92.$$s = self, $$92.$$arity = 0, $$92)), $send(self, 'lambda', [], ($$93 = function(){var self = $$93.$$s || this; - - Opal.ret("" + "美しい上半身と獣の下半身を持つ女怪が現れる。艶めかしくその体をくゆらせながら、手を差し出してくる。シーンに登場しているPC全員は≪" + (self.$magicalogia_random_skill_table_text_only_dream()) + "≫の判定を行う。失敗したPCは、3点のダメージを受け、好きな魔素を3点失う。")}, $$93.$$s = self, $$93.$$arity = 0, $$93)), $send(self, 'lambda', [], ($$94 = function(){var self = $$94.$$s || this; - - Opal.ret("" + "黒いローブをまとった幽鬼が現れる。枯れ木のような細い腕を振り上げて、勇気は呪いの言葉を叫ぶ。幽鬼の【魔力】は4点。シーンに登場しているPC全員は≪" + (self.$magicalogia_random_skill_table_text_only_night()) + "≫の判定を行う。失敗したPCは、「不幸」の変調を受け、運命変転が発生する。")}, $$94.$$s = self, $$94.$$arity = 0, $$94))]; - return self.$get_table_by_1d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_wondaring_monster_table$88.$$arity = 0); - - Opal.def(self, '$magicalogia_fallen_flower_table', $MagicaLogia_magicalogia_fallen_flower_table$95 = function $$magicalogia_fallen_flower_table() { - var self = this, table = nil; - - - table = ["肉体が枯れるように崩壊する。その苦痛は耐え難いもののようだ。人の言葉にならない断末魔が聞く者を苛み、死ぬ。〈永遠〉をアンカーにしているものは、それが疵になる。", "精神が壊れる。その唇から、〈永遠〉が抱く夢や願望だけが小さく小さく、壊れた楽器のように吐き出され、季節が変わる頃に、死ぬ。〈永遠〉をアンカーにしているものは、それが疵になる。", "その生命力が暴走し、死と再生が繰り返される。助けてくれと懇願する声すら出せない。1d6ヶ月後、死ぬ。〈永遠〉をアンカーにしているものは、それが疵になる。", "〈禁書〉とともに封印に飲み込まれる。運命を結んでいるPCの夢に、暗い、怖い、助けてくれと繰り返し現れるが、次の新月の夜にふつりと途切れる。〈永遠〉をアンカーにしているものは、それが疵になる。", "その時は何も起きない。運良く助かったか、〈愚者〉に戻れたようにも見える。だが一度でも眠りにつけば、目を覚ますことなく死ぬ。〈永遠〉をアンカーにしているものは、それが疵になる。", "身体がしおれ、「種」が落ちる。しかし、再生することはない。もし大地に埋めてやれば、何かの植物として芽吹くだろう。(〈永遠〉をアンカーにしているものは、そのアンカーを失う。疵にはならない)"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_fallen_flower_table$95.$$arity = 0); - - Opal.def(self, '$magicalogia_old_library_scene_table', $MagicaLogia_magicalogia_old_library_scene_table$96 = function $$magicalogia_old_library_scene_table() {try { - - var $$97, $$98, $$99, self = this, table = nil; - - - table = [$send(self, 'lambda', [], ($$97 = function(){var self = $$97.$$s || this; - - Opal.ret("" + "曲がり角。唐突に〈禁書〉が現れ、襲いかかってきた!このシーンに登場するPCは、" + (self.$magicalogia_random_skill_table_text_only()) + "で判定を行う。失敗すると、【魔力】を3点失う。")}, $$97.$$s = self, $$97.$$arity = 0, $$97)), "通路の真ん中。扉を開けて〈旧世界秩序〉の〈書籍卿〉「古き書物の化身」が現れた。彼はこのシーンに登場しているPCに協力を申し出る。このシーンに登場しているPCの一人は、《嘘》で判定を行う。成功すると〈書籍卿〉はこのシナリオの間、そのPCが行う魔法戦で、一度だけ立会人になる。失敗すると〈書籍卿〉は怒り出し、次のシーンでそのPCに対して、魔法戦をしかけてくる。誰かが判定すると、成否にかかわらず、この効果はなくなる。", "元・研究室。壊れた実験道具が床に散らばっている。", "元・閲覧室。数人の魔法使いたちが休んでいる。ここならば、色々な話が聞けそうだ。", "空の書架が並ぶ、開けた空間。ここならば、一息つけるだろう。", $send(self, 'lambda', [], ($$98 = function(){var self = $$98.$$s || this; - - Opal.ret("" + "破壊された魔導書が、山のように積み重なる場所。本の山に隠れていた〈断章〉が襲い掛かってくる。このシーンに登場するPCは、" + (self.$magicalogia_random_skill_table_text_only()) + "で判定を行う。成功すると、〈断章〉を倒し、好きな魔素を一個手に入れる。失敗すると、時空を超えてアンカーに影響が現れる。「運命変転」が発生する。")}, $$98.$$s = self, $$98.$$arity = 0, $$98)), "破壊された書架が重なり合って作り上げた、迷路のような通路が続く。この先には、何があるのだろうか", "元・宿舎。簡素な寝台が、いくつか残っている。", "通路の行き止まり。目の前になぜか大きな箱がある。このシーンに登場しているPCの一人は、《謎》で判定を行うことができる。成功すると、箱の中にプライズを発見する。「プライズ表」を1回使用することができる。失敗すると、トラップが発動する。箱は爆発し、このシーンに登場しているPC全員の【魔力】が1点減少する。誰かが判定すると、成否にかかわらず、この効果はなくなる。", $send(self, 'lambda', [], ($$99 = function(){var self = $$99.$$s || this; - - Opal.ret("" + "どこからか湧き出した水が、床の上に泉を作っている場所。泉の上に何者かの呼び出した元型が浮かんでいる。" + (self.$magicalogia_random_skill_table_text_only()) + "で判定を行う。成功すると、【一時的魔力】を1点手に入れる。失敗すると、攻撃され、【魔力】が1点減少する。誰かが判定すると、成否にかかわらず、この効果はなくなる。")}, $$99.$$s = self, $$99.$$arity = 0, $$99)), "なぜ、君がここに?扉を開けると、そこにはPCのアンカーがいた。シーンプレイヤーのアンカーの中から、ランダムに一人を選ぶ。そのアンカーが登場する。シーンプレイヤーは、そのアンカーに「事件」を行っても、行動済みにならない。"]; - return self.$get_table_by_2d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_old_library_scene_table$96.$$arity = 0); - - Opal.def(self, '$magicalogia_new_time_passage_table', $MagicaLogia_magicalogia_new_time_passage_table$100 = function $$magicalogia_new_time_passage_table() {try { - - var $$101, $$102, self = this, table = nil; - - - table = [$send(self, 'lambda', [], ($$101 = function(){var self = $$101.$$s || this; - - Opal.ret("" + "波乱万丈の人生を送る。この時代に起きた有名な事件の背後では、多くの魔法的存在が暗躍していた。あなたも、その事件に関わり、〈禁書〉や〈書籍卿〉たちと戦いを繰り広げる。" + (self.$magicalogia_random_skill_table_text_only()) + "の判定を行う。成功するとセッション終了時に追加で功績点を1点獲得する。失敗すると、自分に「運命変転」が発生する。")}, $$101.$$s = self, $$101.$$arity = 0, $$101)), $send(self, 'lambda', [], ($$102 = function(){var self = $$102.$$s || this; - - Opal.ret("" + "冒険の日々の途中、大きな幸せがおとずれる。" + (self.$magicalogia_random_skill_table_text_only()) + "の判定を行う。成功すると、自分のアンカーが負っている不幸か、自分が負っている疵一つを無効化する。")}, $$102.$$s = self, $$102.$$arity = 0, $$102)), "瞑想していたのか。それとも何か封印されていたのか。長い眠りから目を覚ます。もうそんな時間か。おかげで十分に休息できた。ランダムに魔素を三個獲得するか、自分が「魔力のリセット」を行うか、自分の受けている変調をすべて回復する。", "特殊な異境に旅をしていた。そのせいか、人界で何が起きていたのかまったく分からない。浦島太郎になった気分だ。異境の土産として、魔貨を1d6点獲得する。", "市井の人々に交じって平穏な日々をおくる。そんな日々の中にも、ちょっとした事件が起きた。自分のアンカーを一人目標に選んで「事件表」を振ることができる。", "日々研鑚を重ね、魔法の修行に精進した。もしも望むなら、蔵書欄にある魔法を、自分の修得可能な別の魔法に変更して構わない。もしも、魔素がチャージされていた魔法を未習得にした場合、その魔素は失われる。"]; - return self.$get_table_by_1d6(table); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $MagicaLogia_magicalogia_new_time_passage_table$100.$$arity = 0); - - Opal.def(self, '$magicalogia_fallen_after_table_low', $MagicaLogia_magicalogia_fallen_after_table_low$103 = function $$magicalogia_fallen_after_table_low() { - var self = this, table = nil; - - - table = ["成就者は、邪悪な魔法の力にひかれるようになる。成就者が、そのセッションで〈断章〉に憑依されていたり、魔法災厄の犠牲になったりしていた場合、【堕落値】が1点上昇し、堕落チェックを行う。堕落チェックに失敗した場合、成就者は命を落とし、そのPCの疵となる。", "成就者は、自分の不幸が魔法使いによるものだと信じるようになる。成就者が何らかの不幸に見舞われていた場合、【堕落値】が1点上昇し、堕落チェックを行う。堕落チェックに失敗した場合、願いを叶えたPCの成就者との【運命】の値が2点減少する。", "成就者は、自分が特別な人間だと信じるようになる。願いを叶える努力を放棄するようになり、自堕落になる。成就者の【堕落値】が2点上昇する。堕落チェックを行う。堕落チェックに失敗した場合、「運命変転表『狂気的災厄』」を使用し、その不幸を受ける。", "成就者は、願いが叶い、欲望が増大する。次はより大きな願いを求めるようになるだろう。成就者の【堕落値】が1点上昇する。堕落チェックを行う。堕落チェックに失敗した場合、「運命変転表『社会的災厄』」を使用し、その不幸を受ける。", "成就者は、自分の願いを叶えたのが魔法によるものだと気付く。成就者の【堕落値】が1点上昇する。堕落チェックを行う。堕落チェックに失敗した場合、「運命変転表『超常的災厄』」を使用し、その不幸を受ける。", "成就者は、自分の願いを叶えたのがPCだと気付く。成就者の【堕落値】が、そのPCの成就者との【運命】の値と同じ値になる。もし、この効果によって【堕落値】が以前より増えていた場合、堕落チェックを行う。堕落チェックに失敗した場合、成就者は〈愚者〉ではなくなり、魔法使いとなる。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_fallen_after_table_low$103.$$arity = 0); - - Opal.def(self, '$magicalogia_fallen_after_table_high', $MagicaLogia_magicalogia_fallen_after_table_high$104 = function $$magicalogia_fallen_after_table_high() { - var self = this, table = nil; - - - table = ["成就者は、突如自分に訪れた幸運に罪悪感を覚えるようになる。もし成就者の【堕落値】が1点以上だった場合、堕落チェックを行う。堕落チェックに失敗した場合、「運命変転表『精神的災厄』」を使用し、その不幸を受ける。", "成就者は、願いを叶えたPCに対して不信感を感じるようになる。自分は利用されているのでは無いかと疑い始め、願いを叶えたPCと距離を取る。成就者との【運命】の値が1点減少する。", "成就者は、叶えて貰った願いを失うことになる。堕落チェックを行う。堕落チェックに成功すると、【堕落値】が1点減少する。", "成就者は、願いを叶えたPCが魔法使いだと気付く。以降、その成就者の【堕落値】が上昇することがあった場合、その上昇値が1点増える(この効果は累積しない)。この効果が気に入らない場合、PCはその成就者の自分に関する記憶を消すことで、この効果を無効化することもできる。その場合、PCの成就者との【運命】の値は1になる。", "成就者は、突然の幸運に感謝しつつも、自分の日常と戦っていく。もし、成就者に【堕落値】が1点以上ある場合、その値が1点減少する。", "成就者は、信じれば夢が叶うと思うようになり、少しだけ前向きになる。PCは功績点を1点獲得する。"]; - return self.$get_table_by_1d6(table); - }, $MagicaLogia_magicalogia_fallen_after_table_high$104.$$arity = 0); - return (Opal.def(self, '$magicalogia_fallen_after_table', $MagicaLogia_magicalogia_fallen_after_table$105 = function $$magicalogia_fallen_after_table() { - var $a, $b, self = this, num = nil, outtext = nil, outnum = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy($rb_le(num, 3))) { - $b = self.$magicalogia_fallen_after_table_low(), $a = Opal.to_ary($b), (outtext = ($a[0] == null ? nil : $a[0])), (outnum = ($a[1] == null ? nil : $a[1])), $b - } else { - $b = self.$magicalogia_fallen_after_table_high(), $a = Opal.to_ary($b), (outtext = ($a[0] == null ? nil : $a[0])), (outnum = ($a[1] == null ? nil : $a[1])), $b - }; - outtext = outtext.$to_s(); - outnum = "" + (num) + "," + (outnum); - return [outtext, outnum]; - }, $MagicaLogia_magicalogia_fallen_after_table$105.$$arity = 0), nil) && 'magicalogia_fallen_after_table'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/MeikyuDays.js b/src/assets/dicebot/MeikyuDays.js deleted file mode 100644 index c062cdeef..000000000 --- a/src/assets/dicebot/MeikyuDays.js +++ /dev/null @@ -1,359 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$gsub', '$last_match', '$checkRoll', '$==', '$<=', '$>=', '$debug', '$match', '$[]', '$to_i', '$nil?', '$parren_killer', '$+', '$roll', '$&', '$sortType', '$map', '$split', '$to_proc', '$-', '$>', '$<', '$to_s', '$sendMode', '$=~', '$!=', '$comparison_operator', '$check_2D6', '$===', '$md_research_table', '$md_break_table', '$md_happening_table', '$md_market_price_table', '$md_treasure1_table', '$md_treasure2_table', '$md_treasure3_table', '$md_treasure4_table', '$md_connection_table', '$md_monster_connection_table', '$md_pc_connection_table', '$md_love_connection_table', '$md_critical_attack_table', '$md_fatal_wounds_table', '$md_combat_fumble_table', '$md_negotiation_table', '$md_appearance_table', '$md_kernel_stop_table', '$get_table_by_2d6', '$get_table_by_1d6']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'MeikyuDays'); - - var $nesting = [self].concat($parent_nesting), $MeikyuDays_initialize$1, $MeikyuDays_changeText$2, $MeikyuDays_dice_command_xRn$5, $MeikyuDays_check_2D6$6, $MeikyuDays_checkRoll$7, $MeikyuDays_rollDiceCommand$8, $MeikyuDays_md_research_table$9, $MeikyuDays_md_break_table$10, $MeikyuDays_md_negotiation_table$11, $MeikyuDays_md_happening_table$12, $MeikyuDays_md_kernel_stop_table$13, $MeikyuDays_md_critical_attack_table$14, $MeikyuDays_md_fatal_wounds_table$15, $MeikyuDays_md_combat_fumble_table$16, $MeikyuDays_md_appearance_table$17, $MeikyuDays_md_connection_table$18, $MeikyuDays_md_monster_connection_table$19, $MeikyuDays_md_pc_connection_table$20, $MeikyuDays_md_love_connection_table$21, $MeikyuDays_md_market_price_table$22, $MeikyuDays_md_treasure1_table$23, $MeikyuDays_md_treasure2_table$24, $MeikyuDays_md_treasure3_table$25, $MeikyuDays_md_treasure4_table$26; - - self.$$prototype.nick_e = nil; - - Opal.const_set($nesting[0], 'ID', "MeikyuDays"); - Opal.const_set($nesting[0], 'NAME', "迷宮デイズ"); - Opal.const_set($nesting[0], 'SORT_KEY', "めいきゆうていす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 (nMD+m)\n" + " n個のD6を振って大きい物二つだけみて達成値を算出します。修正mも可能です。\n" + " 絶対成功と絶対失敗も自動判定します。\n" + "・各種表\n" + " ・散策表      DRT\n" + " ・交渉表      DNT\n" + " ・休憩表      DBT\n" + " ・ハプニング表   DHT\n" + " ・カーネル停止表  KST\n" + " ・痛打表 CAT/戦闘ファンブル表 CFT/致命傷表 FWT\n" + " ・おたから表1/2/3/4 T1T/T2T/T3T/T4T\n" + " ・相場表      MPT\n" + " ・登場表      APT\n" + " ・因縁表 DCT/怪物因縁表 MCT/PC因縁表 PCT/ラブ因縁表 LCT\n" + "・D66ダイスあり\n"); - self.$setPrefixes(["\\d+MD", "DRT", "DNT", "DBT", "DHT", "KST", "CAT", "CFT", "FWT", "T1T", "T2T", "T3T", "T4T", "MPT", "APT", "DCT", "MCT", "PCT", "LCT"]); - - Opal.def(self, '$initialize', $MeikyuDays_initialize$1 = function $$initialize() { - var $iter = $MeikyuDays_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $MeikyuDays_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $MeikyuDays_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $MeikyuDays_initialize$1.$$arity = 0); - - Opal.def(self, '$changeText', $MeikyuDays_changeText$2 = function $$changeText(string) { - var $$3, $$4, self = this; - - - string = $send(string, 'gsub', [/(\d+)MD6/i], ($$3 = function(){var self = $$3.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6"}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - string = $send(string, 'gsub', [/(\d+)MD/i], ($$4 = function(){var self = $$4.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6"}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - return string; - }, $MeikyuDays_changeText$2.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $MeikyuDays_dice_command_xRn$5 = function $$dice_command_xRn(string, nick_e) { - var self = this; - - - self.nick_e = nick_e; - return self.$checkRoll(string); - }, $MeikyuDays_dice_command_xRn$5.$$arity = 2); - - Opal.def(self, '$check_2D6', $MeikyuDays_check_2D6$6 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > 絶対失敗" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > 絶対成功" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $MeikyuDays_check_2D6$6.$$arity = 5); - - Opal.def(self, '$checkRoll', $MeikyuDays_checkRoll$7 = function $$checkRoll(string) { - var $a, $b, self = this, output = nil, m = nil, dice_c = nil, bonus = nil, signOfInequality = nil, diff = nil, bonusText = nil, dice_now = nil, dice_str = nil, total_n = nil, _ = nil, dice_num = nil, cmp_op = nil; - - - output = "1"; - self.$debug("checkRoll string", string); - if ($truthy((m = /(^|\s)S?((\d+)[rR]6([\+\-\d]*)(([>=]+)(\d+))?)(\s|$)/i.$match(string)))) { - } else { - - self.$debug("not mutch"); - return output; - }; - string = m['$[]'](2); - dice_c = m['$[]'](3).$to_i(); - bonus = 0; - signOfInequality = ""; - diff = 0; - bonusText = m['$[]'](4); - if ($truthy(bonusText['$nil?']())) { - } else { - bonus = self.$parren_killer($rb_plus($rb_plus("(0", bonusText), ")")).$to_i() - }; - if ($truthy(m['$[]'](6))) { - signOfInequality = m['$[]'](6)}; - if ($truthy(m['$[]'](7))) { - diff = m['$[]'](7).$to_i()}; - dice_now = 0; - dice_str = ""; - total_n = 0; - $b = self.$roll(dice_c, 6, self.$sortType()['$&'](1)), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - dice_num = $send(dice_str.$split(","), 'map', [], "to_i".$to_proc()); - dice_now = $rb_plus(dice_num['$[]']($rb_minus(dice_c, 2)), dice_num['$[]']($rb_minus(dice_c, 1))); - total_n = $rb_plus(dice_now, bonus); - dice_str = "" + "[" + (dice_str) + "]"; - output = "" + (dice_now) + (dice_str); - if ($truthy($rb_gt(bonus, 0))) { - output = $rb_plus(output, "" + "+" + (bonus)) - } else if ($truthy($rb_lt(bonus, 0))) { - output = $rb_plus(output, bonus.$to_s())}; - if ($truthy($rb_gt(self.$sendMode(), 0))) { - if ($truthy(/[^\d\[\]]+/['$=~'](output))) { - output = "" + (self.nick_e) + ": (" + (string) + ") > " + (output) + " > " + (total_n) - } else { - output = "" + (self.nick_e) + ": (" + (string) + ") > " + (total_n) - } - } else { - output = "" + (self.nick_e) + ": (" + (string) + ") > " + (total_n) - }; - if ($truthy(signOfInequality['$!='](""))) { - - cmp_op = $$($nesting, 'Normalize').$comparison_operator(signOfInequality); - output = $rb_plus(output, self.$check_2D6(total_n, dice_now, dice_num, cmp_op, diff));}; - return output; - }, $MeikyuDays_checkRoll$7.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $MeikyuDays_rollDiceCommand$8 = function $$rollDiceCommand(command) { - var $a, $b, self = this, output = nil, type = nil, total_n = nil, $case = nil; - - - output = "1"; - type = ""; - total_n = 0; - $case = command; - if (/DRT/i['$===']($case)) { - type = "散策"; - $b = self.$md_research_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/DBT/i['$===']($case)) { - type = "休憩"; - $b = self.$md_break_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/DHT/i['$===']($case)) { - type = "ハプニング"; - $b = self.$md_happening_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/MPT/i['$===']($case)) { - type = "相場"; - $b = self.$md_market_price_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/T1T/i['$===']($case)) { - type = "お宝1"; - $b = self.$md_treasure1_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/T2T/i['$===']($case)) { - type = "お宝2"; - $b = self.$md_treasure2_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/T3T/i['$===']($case)) { - type = "お宝3"; - $b = self.$md_treasure3_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/T4T/i['$===']($case)) { - type = "お宝4"; - $b = self.$md_treasure4_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/DCT/i['$===']($case)) { - type = "因縁"; - $b = self.$md_connection_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/MCT/i['$===']($case)) { - type = "怪物因縁"; - $b = self.$md_monster_connection_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/PCT/i['$===']($case)) { - type = "PC因縁"; - $b = self.$md_pc_connection_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/LCT/i['$===']($case)) { - type = "ラブ因縁"; - $b = self.$md_love_connection_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/CAT/i['$===']($case)) { - type = "痛打"; - $b = self.$md_critical_attack_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/FWT/i['$===']($case)) { - type = "致命傷"; - $b = self.$md_fatal_wounds_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/CFT/i['$===']($case)) { - type = "戦闘ファンブル"; - $b = self.$md_combat_fumble_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/DNT/i['$===']($case)) { - type = "交渉"; - $b = self.$md_negotiation_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/APT/i['$===']($case)) { - type = "登場"; - $b = self.$md_appearance_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/KST/i['$===']($case)) { - type = "カーネル停止"; - $b = self.$md_kernel_stop_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;}; - if ($truthy(output['$!=']("1"))) { - output = "" + (type) + "表(" + (total_n) + ") > " + (output)}; - return output; - }, $MeikyuDays_rollDiceCommand$8.$$arity = 1); - - Opal.def(self, '$md_research_table', $MeikyuDays_md_research_table$9 = function $$md_research_table() { - var self = this, table = nil; - - - table = ["次に挑む迷宮の迷宮支配者を倒さなければ人類文明が滅ぶことを偶然知ってしまう。《気力》を最大値まで回復する。", "同じ迷宮を対象とする違う依頼を受ける。シナリオの目的を果たしたときに、追加で1d6MCの報酬を得られるようになる。", "他の迷宮屋の評判を耳にする。パーティから好きなキャラクター1人を選び、そのキャラクターに対する《好意》が1点上昇する。", "毎日の散歩の成果が出て、体の調子が良い。このゲーム中、《HP》の最大値が5点上昇し、《HP》が5点回復する。", "メディアの取材を受ける。《民の声》を2点得る。", "近所からおすそ分けをもらう。【回復薬】を6個手に入れる。", "近所の人がきみの噂話をしている。ゲーム中に自分が対象に入った「恋人」「親友」「忠誠」の人間関係を成立させるたび、《民の声》を2点得る。", "似たような迷宮に挑んだことがある迷宮屋から話を聞いた。迷宮フェイズでの情報収集の難易度が2下がる。", "武具の安売りを見つける。ランダムな武具アイテム1つを半分の値段で購入することができる。", "他の迷宮屋と喧嘩になる。パーティの中からランダムに1人を選び、お互いの《敵意》を1点上昇させる。", "迷宮屋志望の見習が、1d6人ほど配下として加わる。"]; - return self.$get_table_by_2d6(table); - }, $MeikyuDays_md_research_table$9.$$arity = 0); - - Opal.def(self, '$md_break_table', $MeikyuDays_md_break_table$10 = function $$md_break_table() { - var self = this, table = nil; - - - table = ["アイテムの改善案を出し合ってみる。各キャラクターは、好きなキャラクター1体を選び、1d6を振ってそのキャラクターのアイテムスロットから1つをランダムに選ぶ。出た目のアイテムにレベルがあれば、1上昇する。", "何気ない雑談が腹の探り合いに発展する。各キャラクターは、好きなキャラクターに対する《好意》と《敵意》を入れ替え、その属性を自由に変更することができる。", "好きな単語表からランダムに単語を1つ選ぶ。その部屋にはそれに関係したものがたくさん置いてあるため、出た単語が「好きなもの」に入っているキャラクターは、《気力》を2点得る。", "嫌いな人の話題で盛り上がる。各キャラクターは同じキャラクターに《敵意》を持っている人を1人選び、その人への《好意》を1点上昇させる。", "窓の外から報道のヘリコプターがこちらを撮影しているのが見える。格好よく見せるために、各キャラクターは〔魅力〕で難易度13の判定を行う。誰かが成功するたびに《民の声》が1点増加する。", "雑談や休息など、思い思いに時間を過ごす。各キャラクターは、好きなキャラクター1体への《好意》を1点上昇させる。", "通路の片隅で素材が山を作っているのを見つけた。各キャラクターは〔探索〕で難易度11の判定を行う。誰かが成功するたびに、好きな素材を1種類選び、それを1d6個手に入れる。", "チームワークの確認。各プレイヤーは打ち合わせをせずに、一斉にじゃんけんを行う。いちばん出した人が多かった手を出したプレイヤーのPCは、《気力》を2点得る。", "仮眠をとって休憩。各キャラクターは〔才覚〕で難易度9の判定を行う。成功すれば《HP》が最大値まで回復する。", "各キャラクターは、迷宮化現象に巻き込まれ、身動きがとれない普通の人を1人見つけた。《配下》に加えることができる。", "各キャラクターは1d6を振る。出た目の上位2名が唐突に恋に落ちる。同じ目が出て2名をうまく割り出せない場合は、GMの左隣に近い方を優先する。恋に落ちた2人、相手以外に対する《好意》を合計し、その値に対する《好意》に加える。その後、相手以外に対する《好意》をすべて0にする。"]; - return self.$get_table_by_2d6(table); - }, $MeikyuDays_md_break_table$10.$$arity = 0); - - Opal.def(self, '$md_negotiation_table', $MeikyuDays_md_negotiation_table$11 = function $$md_negotiation_table() { - var self = this, table = nil; - - - table = ["中立的な態度は偽装だった。彼らは不意打ちを行う。奇襲扱いで戦闘を開始すること。", "交渉は決裂! 戦闘を行うこと。", "交渉は決裂! 戦闘を行うこと。", "「贄をささげれば話を聞こう」モンスターの中で最もレベルが高いもののレベルと等しい数だけ何らかの素材を減少すれば、友好的になる。減少させない場合、戦闘を開始すること。", "「……お前の趣味、なに?」好きな単語表一個を選び、D66を振る。パーティの中に、その項目を好きなものにしているキャラクターがいれば、友好的になる。そうでなければ戦闘を開始すること。", "怪物たちは物欲しそうにこちらを見ている。「肉」の素材をモンスターの数だけ消費するか、【お弁当】【フルコース】1個を消費すれば友好的になる。消費しなければ、戦闘を開始すること。", "怪物たちは値踏みするようにこちらを見ている。現金で1d6MC支払えば友好的になる。そうでない場合、戦闘を開始すること。", "「何かいいもんよこせ」モンスターの中で最もレベルの高いもののレベル以上の価格のアイテムを消費すれば友好的になる。そうでない場合、戦闘を開始すること。", "「面白い話を聞かせろよ」プレイヤーたちは面白い話をすること。GMは面白いと思えばモンスターは友好的になる。面白くなかった場合は戦闘を開始する。", "「俺に勝てたら話を聞いてやろう」怪物が力比べを挑んできた。モンスターの中で最もレベルが高いものと、パーティの代表がそれぞれ〔武勇〕で判定を行う。パーティの代表の達成値がモンスター以上であれば友好的になる。負けた場合、もう一度交渉するか戦闘するかを決定すること。", "運命の出会い。一目見た瞬間に打ち解けあい、友好的になる。"]; - return self.$get_table_by_2d6(table); - }, $MeikyuDays_md_negotiation_table$11.$$arity = 0); - - Opal.def(self, '$md_happening_table', $MeikyuDays_md_happening_table$12 = function $$md_happening_table() { - var self = this, table = nil; - - - table = ["急に絶望に襲われる。【お酒】を消費することが出来なければ、このゲーム中、最も高い能力値が1点減少する。", "思考に靄がかかってしまう。「散漫」のバッドステータスを受ける。", "気がついたら太っていた。「肥満」のバッドステータスを受ける。", "無残な失敗に愛想を尽かした配下が2d6人ほど去って行ってしまう。", "微妙な空気を読み切れず、パーティ全員の《気力》が1点減少する。", "事故だか故意だかで、仲間を殴ってしまう。ランダムに選んだパーティメンバー1名の《HP》を自分の〔武勇〕と同じ値だけ減少させる。", "期待が大きければ失望も大きい。あなたに対して《好意》を持っているキャラクター全員は、あなたに対する《好意》を1点減らす。", "アイテムを粗末に扱ってしまう。持ち物の中からランダムにアイテムを1つ決定する。そのアイテムにレベルがある場合、レベルが1下がる。", "失敗のショックのせいで知的な行動をとれなくなる。「愚か」のバッドステータスを受ける。", "過去の行状のせいで人に呪われる。「呪い」のバッドステータスを受ける。", "自分の失敗が許せない。このゲームの間、《器》が1点減少したものとして扱う。"]; - return self.$get_table_by_2d6(table); - }, $MeikyuDays_md_happening_table$12.$$arity = 0); - - Opal.def(self, '$md_kernel_stop_table', $MeikyuDays_md_kernel_stop_table$13 = function $$md_kernel_stop_table() { - var self = this, table = nil; - - - table = ["カーネルが肉体に致命的な迷宮化を引き起こす!致命傷表を振ること。カーネルはまだ停止しない。", "〔才覚〕で難易度9の判定を行う。失敗すると記憶が迷宮化を起こし、銀行口座の暗証番号を忘れてしまう。口座に入っているMCはすべて失われる。カーネルは停止しない。", "迷宮化エネルギーが装備を直撃。素早く避けるため〔武勇〕で難易度9の判定を行う。失敗した場合、持っているアイテムからランダムに1つを選ぶ。そのアイテムは激しい迷宮化を起こし破壊される。カーネルは停止しない。", "正体不明のエネルギーが部屋中を駆け巡る。パーティ全員は1d6ダメージを受ける。カーネルは停止しない。", "心象が迷宮化していく。〔魅力〕で難易度9の判定を行う。失敗すると人間関係が迷宮化を起こし、持っている感情値がすべて1点減少する。カーネルは停止しない。", "激しい迷宮化に曝され、1d6点のダメージを受ける。〔探索〕で難易度11の判定を行う。成功すれば、怪我を負いながらもカーネルを停止させることに成功する。", "パーティ全員は軽い迷宮化に曝され1ダメージを受ける。パーティを統率する為に〔魅力〕で難易度11の判定を行うこと。成功すれば、カーネルは停止する。", "素早い一撃でカーネルの息の根を止めるために〔武勇〕で難易度9の判定を行う。成功すれば見事にカーネルを停止させることに成功する。", "カーネルの構造を感じ取り、一瞬にして停止させることに成功。さらに迷宮化の副産物としてランダムなレアアイテム1つを入手する。", "カーネルは停止した。そして持っているアイテムの中からランダムに1つを選ぶ。そのアイテムにレベルがあれば、いつのまにかレベルが1上昇している。", "鮮やかにカーネルを停止させ、傷一つないまま保存することに成功した。このカーネルの売却価格が3d6MC上昇する。"]; - return self.$get_table_by_2d6(table); - }, $MeikyuDays_md_kernel_stop_table$13.$$arity = 0); - - Opal.def(self, '$md_critical_attack_table', $MeikyuDays_md_critical_attack_table$14 = function $$md_critical_attack_table() { - var self = this, table = nil; - - - table = ["武器の伝説がまた一つ増えた。攻撃に使用した武具アイテムにレベルがあれば、そのレベルが1点上昇する。", "偶然ながら敵の弱点をつく。敵の《HP》を現在の半分の値にする。", "攻撃が終わった後、攻撃の勢いを利用して、自分を好きなエリアに移動させることができる。", "素晴らしい手ごたえに自分でも感動し、自分の《HP》が全快する。", "叙事詩的な一撃。《民の声》を1点増やす。", "クリーンヒット。攻撃の威力が2d6点上昇する。", "敵の動きを封じた。攻撃目標の《回避値》を戦闘終了まで2下げる。この効果は累積する。", "敵の勢いを利用し大ダメージ。攻撃の威力が、攻撃目標のレベルと同じだけ上昇する。", "敵の技を封じる。攻撃目標のスキル1種類を選び、戦闘中はそのスキルを使用できなくする。", "敵の急所をとらえ致命傷を与える。攻撃目標の《HP》を0にする。", "戦いの中、武具もまた成長する。持っているアイテムをランダムに1選ぶ。そのアイテムにレベルがあれば、1点上昇する。"]; - return self.$get_table_by_2d6(table); - }, $MeikyuDays_md_critical_attack_table$14.$$arity = 0); - - Opal.def(self, '$md_fatal_wounds_table', $MeikyuDays_md_fatal_wounds_table$15 = function $$md_fatal_wounds_table() { - var self = this, table = nil; - - - table = ["重要器官を粉砕される。キャラクターは即座に死亡する。", "傍目にも分かる致命傷。キャラクターは次の自分の行動処理が終わった時点で死亡する。《HP》の回復でこの死亡を防ぐことはできない。", "全身に強い衝撃をうける。〔武勇〕で難易度[5+受けたダメージ]の判定に成功すると、行動不能になる。判定に失敗すると死亡する。", "出血多量で意識不明。行動不能になる。この戦闘が終了するまでに《HP》を1以上にしないと、キャラクターは死亡する。", "重傷を負い昏睡状態。行動不能になる。このクォーターが終了するまでに《HP》を1以上にしないと、キャラクターは死亡する。", "攻撃で負った傷により意識を失う。行動不能になる。", "緊急回避! 〔探索〕で難易度[7-現在の《HP》]の判定を行う。成功すると、ランダムなバッドステータス1つを受けたうえで攻撃が無効になる。失敗すると、ランダムなバッドステータス1つを受けたうえで行動不能になる。", "最後の一撃を見切ることができるかもしれない。〔才覚〕で難易度[9-現在の《HP》]の判定を行う。成功すると《HP》が1になる。失敗すると行動不能になる。", "まだここで死ぬ運命ではないのかもしれない。〔魅力〕で難易度[9-現在の《HP》]の判定を行う。成功すると《HP》が1になる。失敗すると行動不能になる。", "カウンター! 攻撃をしてきた敵に対して、割り込んで好きな武器またはスキルを使った反撃をすることができる。これらの判定が成功した場合、ダメージやスキルの効果のあとで《HP》が1になる。失敗した場合、ただ行動不能になる。", "致命傷を受けたような気がしたが、気のせいだった。"]; - return self.$get_table_by_2d6(table); - }, $MeikyuDays_md_fatal_wounds_table$15.$$arity = 0); - - Opal.def(self, '$md_combat_fumble_table', $MeikyuDays_md_combat_fumble_table$16 = function $$md_combat_fumble_table() { - var self = this, table = nil; - - - table = ["ぶざまな失敗に熱くなる。攻撃の目標のキャラクターに対して《敵意》を4点得る。", "急にお腹が痛くなる! 何か回復アイテムを使うまで攻撃を行えなくなる。モンスターの場合、そのラウンドの終わりに未行動にならなくなる。", "アイテムが壊れた! 自分が持っているアイテムの中からランダムに1つを選び、そのアイテムが失われる。モンスターの場合、1d6ダメージを受ける。", "敵がいい気になる。行動不能になっていない敵軍キャラクター全ての《HP》を6点回復する。", "自分に攻撃が命中! 使用した武器のダメージを自分に与える。", "なんというか、やる気をなくす。《気力》を1点失う。モンスターの場合、1d6ダメージを受ける。", "仲間に攻撃が命中! 使用した武器の射程内の味方から、ランダムに1人を選ぶ。そのキャラクターに武器のダメージを与える。", "仲間の邪魔をしてしまう。未行動の自軍キャラクター1体を選び、行動済みにする。", "スキルを忘れてしまった! 習得しているスキルからランダムに1種類を選ぶ。そのスキルは戦闘が終了するまで使用できない。", "位置取りに失敗してとんでもない場所に。敵陣営プレイヤーまたはGMが、ファンブルしたキャラクターを好きな位置に移す。", "ピンチがチャンスに! 《HP》が現在値の半分になり、《気力》が最大値まで貯まる。"]; - return self.$get_table_by_2d6(table); - }, $MeikyuDays_md_combat_fumble_table$16.$$arity = 0); - - Opal.def(self, '$md_appearance_table', $MeikyuDays_md_appearance_table$17 = function $$md_appearance_table() { - var self = this, table = nil; - - - table = ["「ここから先に行かせるわけにはいかん」急ぐ途中に敵が立ちふさがる。〔武勇〕で難易度11の判定を行う。成功すればバトルフィールドの好きなエリアにそのキャラクターを配置することができる。失敗した場合、《HP》を1にした状態でバトルフィールドの好きなエリアにそのキャラクターを配置することができる。", "「待たせたな!」バトルフィールドの好きなエリアにそのキャラクターを配置することができる。", "おっと鉢合わせ! バトルフィールドの敵軍の本陣に、そのキャラクターを配置すること。", "全力で駆けつける! 《HP》を2d6点減少すれば、バトルフィールドの好きなエリアにそのキャラクターを配置することができる。", "あいつらはこの先に行ったはず! GMはそのキャラクターをバトルフィールドの好きなエリアに配置する。", "あの聞き覚えのある音は……! そのキャラクターが【乗騎】を装備していれば、GMはそのキャラクターをバトルフィールドの好きなエリアに配置する。", "……間に合ったみたいだな。バトルフィールドの中に、そのキャラクターに対する《好意》が1点以上あるキャラクターがいれば、同じエリアにそのキャラクターを配置することができる。", "を! これはこれは。好きな素材を1個拾う。", "いかん! 迷ってしまった。〔探索〕で難易度11の判定を行うこと。成功すればもう一度登場表を振り、結果を適用することができる。", "むむむむ? ここは一度来た道のような……? 疲労して《気力》が1点減少。", "……いや、しかしそれどころではない! そのキャラクターは、この戦闘に登場することはできない。"]; - return self.$get_table_by_2d6(table); - }, $MeikyuDays_md_appearance_table$17.$$arity = 0); - - Opal.def(self, '$md_connection_table', $MeikyuDays_md_connection_table$18 = function $$md_connection_table() { - var self = this, table = nil; - - - table = ["対象はあなたの父、もしくは母である。幼い頃に家庭を捨てて失踪した対象を、あなたはずっと憎んでいた。対象への《敵意》が1点上昇する。また、対象を戦闘で倒した際に、経験点10点を得ることができる。", "対象は、あなたの小学校時代の恩師である。懐かしい顔にこんな形で会うことになろうとは。対象への《好意》もしくは《敵意》が1点上昇する。", "対象は、過去にあなたと戦い、あなたの体に古傷を残している。今でもときどき傷は代償を求めて疼く。対象への《敵意》が1点上昇する。", "あなたは対象に憧れているが、全く相手にされていない。たとえ敵としてでも対象に認めてもらうことがあなたの願いだ。彼または彼女への《敵意》が1点上昇し、「ライバル」の人間関係を結ぶことが出来れば経験点を10得られるようになる。", "あなたは過去、対象のせいで、思い出したくもない大失敗をしたことがある。嫌いなものに絡んだ大失敗を設定すること。対象への《敵意》が1点上昇する。", "あなたは対象に手酷く敗北したことがある。あなたは屈辱を晴らすためにできる限りのことをする気でいる。対象への《敵意》が1点上昇する。", "対象はあなたの親族を殺した。あなたはいつか訪れる復讐の日を信じて、鍛錬を続けてきた。対象への《敵意》が1点上昇する。", "対象は、過去のあなたの仲間だ。意見の違いで袂を分かったが、ここまで対立することになるとは考えてもいなかった。対象への《敵意》が1点上昇する。", "対象とあなたは、前世があなたの妻/夫であった。幸せな生涯の記憶が蘇る。対象への《好意》が1点上昇する。", "あなたは対象とあなたの通勤・通学路でぶつかったことがあり、そこで一目惚れしている。恋を幸せに成就させるため、もしくは不幸な恋を対象の死によって終わらせるため、あなたは迷宮にめぐる。対象への愛情の《好意》4点と、「片思い」の人間関係を得る。", "あなたは過去に対象の恋人であった。対象のどこが好きだったのかは、自分の好きなものからランダムに単語を決め、それに関連した話をでっち上げること。対象への愛情の《好意》4点と、「恋人」の人間関係を得る。"]; - return self.$get_table_by_2d6(table); - }, $MeikyuDays_md_connection_table$18.$$arity = 0); - - Opal.def(self, '$md_monster_connection_table', $MeikyuDays_md_monster_connection_table$19 = function $$md_monster_connection_table() { - var self = this, table = nil; - - - table = ["対象はあなたの故郷を滅ぼした。そこは、もうペンペン草すら生えない廃墟となっている。対象への《敵意》が4点上昇する。", "対象はあなたのDNA情報をもとに某国が作り出したものである。GMは対象にあなたのスキルから1つを任意に選んで修得させる。対象への《敵意》が1点上昇する。", "あなたはかつて対象の同族を絶滅させた。しかし、奴らは死んではいなかったのだ。対象への《敵意》が1点上昇する。", "あなたは幼いころに対象と遭遇したが、一顧だにされず見逃された。対象への《敵意》が1点上昇する。", "何年も前に死んだ、あなたの親しい人は、ちょうど対象の攻撃手段と同じ方法で殺されている。対象への《敵意》が1点上昇する。", "対象はなんとなくあなたが嫌いな特徴をそなえている。嫌いなものに関連した特徴を設定すること。対象への《敵意》が1点上昇する。", "あなたは過去に対象と戦い、完敗を喫している。対象への《敵意》が1点上昇する。対象との戦闘に勝利した場合、経験点10点を得る。", "対象はあなたの好きなものを穢したり貶めたことがある。好きなものにちなんだ出来事を設定すること。対象への《敵意》が1点上昇する。", "あなたは、対象が同族のなかでも強力な個体であることを知っている。対象への《敵意》が2点上昇する。対象の《HP》と威力を6点ずつ上昇させる。", "対象はあなたが昔飼っていた生き物や持っていたものが変化したものである。対象への《好意》と《敵意》が1点ずつ上昇する。交渉によって対象との戦闘を終わらせた場合、経験点10点を得る。", "かつてあなたは対象と同族であった。対象への《好意》と《敵意》が1点ずつ上昇する。"]; - return self.$get_table_by_2d6(table); - }, $MeikyuDays_md_monster_connection_table$19.$$arity = 0); - - Opal.def(self, '$md_pc_connection_table', $MeikyuDays_md_pc_connection_table$20 = function $$md_pc_connection_table() { - var self = this, table = nil; - - - table = ["対象はあなたが追い求めていた敵だった。なぜ敵なのか設定すること。対象への《敵意》が4点上昇する。対象を殺害すると経験点100点を得る。", "対象は、あなたがあなたのクラスになるきっかけを作った人物である。1分以内に詳細を設定できれば対象への好きな感情値を2点上昇させてよい。", "対象と共通の知人がいることが発覚する。好きなものにちなんだ知人を設定すること。対象への《好意》が1点上昇する。", "対象と同じ場所に住んでいたり、通っていたことが分かる。対象への《好意》が1点上昇する。", "あなたは何らかの種類の迷宮屋ランキングで対象に負けている。対象への《敵意》が1点上昇する。終了フェイズで対象に(何でもいいので)負けを認めさせれば、経験点を1点獲得する。", "対象は、なんとなくあなたの好きな特徴を備えているような気がする。好きなものにちなんだ特徴を1つ設定し、対象のプレイヤーの了解をとること。チャンスは1回だ。OKなら対象への《好意》が1点上昇する。", "対象は何らかの媒体で、あなたに対して好意的でないコメントを出したことがあるような気がする。コメントの詳細はあなたが決定すること。対象への《敵意》が1点上昇する。", "あなたは対象に関する良い噂を聞いたことがある。噂の内容を決定したうえで、対象への《好意》が1点上昇する。", "対象は実は幼馴染だったことが明らかになる。容姿の変化などで気付かなかったのだ。対象への《好意》が1点上昇する。", "対象が実は兄弟であったことが明らかになる。家庭の事情を1分で考えだせれば、対象への《好意》が1点上昇する。", "あなたと対象は、今まで隠していたが実はつきあっている。対象のプレイヤーの了解を15秒以内にとることができれば、お互いへの愛情の《好意》を4点上昇させることができる。"]; - return self.$get_table_by_2d6(table); - }, $MeikyuDays_md_pc_connection_table$20.$$arity = 0); - - Opal.def(self, '$md_love_connection_table', $MeikyuDays_md_love_connection_table$21 = function $$md_love_connection_table() { - var self = this, table = nil; - - - table = ["あなたは対象と過去にいい友人だった。対象への《好意》が2点上昇するが、その属性は友情に変化する。", "あなたは対象を本来とは別の性別だと思い込んで片思いしていた。対象への《敵意》が2点、または《好意》が1点上昇する。", "あなたはかつて親友であった対象に恋人を奪われたことがある。対象への《敵意》が1点上昇する。", "対象は、あなたの好きなものによく似ている。好きなものから1つを選んで、どう似ているか説明できたら、対象への《好意》が1点上昇する。", "対象をよく見たらけっこう可愛いような気がしてきた。対象への《好意》が1点上昇し、対象への《好意》をすべて愛情に変換する。", "あなたは対象と過去につきあっていたことがある。現在はどうだか分からないが、あのころは本気だった。対象への《好意》が1点上昇する。", "対象は、むかしあなたが好きだった人と印象がよく似ている。対象への《好意》が1点上昇する。", "あなたは対象に助けられたり、命を救われたことがある。1分以内に設定を作り上げられれば、対象への《好意》が1点上昇する。", "あなたは対象に振られ、失意のあまり自殺しようとしたことがある。対象への《好意》と《敵意》が1点上昇する。", "あなたは昔から、対象を独占したいと思っていた。対象があなた以外と関わるたびに怒りを募らせていたのだ。対象への《好意》と《敵意》が2点ずつ上昇する。", "なんだか良く分からないが、とにかく好きでたまらない。対象への《好意》が3点上昇し、対象への《好意》をすべて愛情に変換する。"]; - return self.$get_table_by_2d6(table); - }, $MeikyuDays_md_love_connection_table$21.$$arity = 0); - - Opal.def(self, '$md_market_price_table', $MeikyuDays_md_market_price_table$22 = function $$md_market_price_table() { - var self = this, table = nil; - - - table = ["なし", "肉", "牙", "鉄", "魔素", "機械", "衣料", "木", "火薬", "情報", "革"]; - return self.$get_table_by_2d6(table); - }, $MeikyuDays_md_market_price_table$22.$$arity = 0); - - Opal.def(self, '$md_treasure1_table', $MeikyuDays_md_treasure1_table$23 = function $$md_treasure1_table() { - var self = this, table = nil; - - - table = ["何もなし。", "何もなし。", "そのモンスターの素材欄の中から、好きな素材を1個。", "そのモンスターの素材欄の中から、好きな素材を2個。", "そのモンスターの素材欄の中から、好きな素材を3個。", "【お弁当】1個。"]; - return self.$get_table_by_1d6(table); - }, $MeikyuDays_md_treasure1_table$23.$$arity = 0); - - Opal.def(self, '$md_treasure2_table', $MeikyuDays_md_treasure2_table$24 = function $$md_treasure2_table() { - var self = this, table = nil; - - - table = ["そのモンスターの素材欄の中から、好きな素材を3個。", "そのモンスターの素材欄の中から、好きな素材を4個。", "そのモンスターの素材欄の中から、好きな素材を5個。", "ランダムな回復アイテム1個。", "ランダムな武具アイテム1個。そのアイテムにレベルがあれば、レベル1のアイテムとなる。", "ランダムなレアアイテム1個。"]; - return self.$get_table_by_1d6(table); - }, $MeikyuDays_md_treasure2_table$24.$$arity = 0); - - Opal.def(self, '$md_treasure3_table', $MeikyuDays_md_treasure3_table$25 = function $$md_treasure3_table() { - var self = this, table = nil; - - - table = ["そのモンスターの素材欄の中から、好きな素材を5個。", "そのモンスターの素材欄の中から、好きな素材を7個。", "そのモンスターの素材欄の中から、好きな素材を10個。", "好きなコモンアイテムのカテゴリ1種を選ぶ。そのカテゴリの中からランダムなアイテム1個。そのアイテムにレベルがあれば、レベル1のアイテムとなる。", "ランダムなレアアイテム1個", "ランダムなレアアイテム1個。そのアイテムにレベルがあれば、レベル1のアイテムとなる。"]; - return self.$get_table_by_1d6(table); - }, $MeikyuDays_md_treasure3_table$25.$$arity = 0); - return (Opal.def(self, '$md_treasure4_table', $MeikyuDays_md_treasure4_table$26 = function $$md_treasure4_table() { - var self = this, table = nil; - - - table = ["そのモンスターの素材欄の中から、好きな素材を5個。", "そのモンスターの素材欄の中から、好きな素材を10個。", "好きなコモンアイテムのカテゴリ1種を選ぶ。そのカテゴリの中からランダムなアイテム1個。そのアイテムにレベルがあれば、レベル2のアイテムとなる。", "好きなコモンアイテムのカテゴリ1種を選ぶ。そのカテゴリの中からランダムなアイテム1個。そのアイテムにレベルがあれば、レベル3のアイテムとなる。", "ランダムなレアアイテム1個。そのアイテムにレベルがあれば、レベル1のアイテムとなる。", "ランダムなレアアイテム1個。そのアイテムにレベルがあれば、レベル2のアイテムとなる。"]; - return self.$get_table_by_1d6(table); - }, $MeikyuDays_md_treasure4_table$26.$$arity = 0), nil) && 'md_treasure4_table'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/MeikyuKingdom.js b/src/assets/dicebot/MeikyuKingdom.js deleted file mode 100644 index 118f8b27f..000000000 --- a/src/assets/dicebot/MeikyuKingdom.js +++ /dev/null @@ -1,1193 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$debug', '$gsub', '$last_match', '$mayokin_check', '$==', '$get2D6Result', '$+', '$getKiryokuResult', '$<=', '$>=', '$get2D6ResultOnlySuccess', '$count', '$sort', '$reject', '$to_i', '$pop', '$-', '$match', '$[]', '$eval', '$new', '$roll', '$&', '$sortType', '$map', '$split', '$to_proc', '$>', '$<', '$to_s', '$sendMode', '$=~', '$!=', '$comparison_operator', '$check_result', '$===', '$d66', '$mk_name_a_table', '$mk_name_b_table', '$mk_name_ex_table', '$mk_name_fa_table', '$getCount', '$times', '$mk_name_table', '$mk_pn_decide_table', '$mk_ls_decide_table', '$mk_device_factory_table', '$mk_life_research_table', '$mk_order_research_table', '$mk_calture_research_table', '$mk_army_research_table', '$mk_festival_table', '$mk_talent_break_table', '$mk_charm_break_table', '$mk_search_break_table', '$mk_valor_break_table', '$mk_festival_break_table', '$mk_talent_happening_table', '$mk_charm_happening_table', '$mk_search_happening_table', '$mk_valor_happening_table', '$mk_market_price_table', '$mk_treasure1_table', '$mk_treasure2_table', '$mk_treasure3_table', '$mk_treasure4_table', '$mk_treasure5_table', '$mk_rare_weapon_item_table', '$mk_rare_item_table', '$mk_weapon_item_table', '$mk_life_item_table', '$mk_rest_item_table', '$mk_search_item_table', '$mk_item_features_table', '$mk_item_decide_table', '$mk_random_encount1_table', '$mk_random_encount2_table', '$mk_random_encount3_table', '$mk_random_encount4_table', '$mk_random_encount5_table', '$mk_random_encount6_table', '$mk_kingdom_disaster_table', '$mk_kingdom_change_table', '$mk_kingdom_mischange_table', '$mk_critical_attack_table', '$mk_fatal_wounds_table', '$mk_combat_fumble_table', '$mk_travel_table', '$mk_negotiation_table', '$mk_emotion_table', '$mk_kingdom_name_1_table', '$mk_kingdom_name_2_table', '$mk_kingdom_name_3_table', '$mk_word_1_table', '$mk_word_2_table', '$mk_word_3_table', '$mk_word_4_table', '$getAftersearchBreakTable', '$getWholeBreakTable', '$getLoversBreakTable', '$empty?', '$get_table_by_2d6', '$get_table_by_1d3', '$get_table_by_1d6', '$rand', '$mk_nick_a_table', '$mk_nick_b_table', '$get_table_by_number', '$lambda', '$mk_item_power_table', '$mk_item_jyumon_table', '$mk_item_jyuka_table', '$mk_item_aptitude_table', '$mk_item_attribute_table', '$mk_family_business_table', '$mk_gender_table', '$odd?', '$ceil', '$/', '$mk_decoration_table', '$mk_placename_table', '$mk_basic_decoration_table', '$mk_spooky_decoration_table', '$mk_katakana_decoration_table', '$mk_passage_placename_table', '$mk_natural_placename_table', '$mk_artifact_placename_table', '$mk_landscape_table', '$mk_artifact_landscape_table', '$mk_cave_landscape_table', '$mk_natural_landscape_table', '$mk_waterside_landscape_table', '$mk_skyrealm_landscape_table', '$mk_strange_place_landscape_table']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'MeikyuKingdom'); - - var $nesting = [self].concat($parent_nesting), $MeikyuKingdom_initialize$1, $MeikyuKingdom_changeText$2, $MeikyuKingdom_dice_command_xRn$5, $MeikyuKingdom_check_nD6$6, $MeikyuKingdom_get2D6Result$7, $MeikyuKingdom_get2D6ResultOnlySuccess$8, $MeikyuKingdom_getKiryokuResult$9, $MeikyuKingdom_mayokin_check$11, $MeikyuKingdom_rollDiceCommand$12, $MeikyuKingdom_getCount$14, $MeikyuKingdom_mk_life_research_table$15, $MeikyuKingdom_mk_order_research_table$16, $MeikyuKingdom_mk_calture_research_table$17, $MeikyuKingdom_mk_army_research_table$18, $MeikyuKingdom_mk_talent_break_table$19, $MeikyuKingdom_mk_charm_break_table$20, $MeikyuKingdom_mk_search_break_table$21, $MeikyuKingdom_mk_valor_break_table$22, $MeikyuKingdom_mk_festival_break_table$23, $MeikyuKingdom_mk_festival_table$24, $MeikyuKingdom_mk_kingdom_disaster_table$25, $MeikyuKingdom_mk_talent_happening_table$26, $MeikyuKingdom_mk_charm_happening_table$27, $MeikyuKingdom_mk_search_happening_table$28, $MeikyuKingdom_mk_valor_happening_table$29, $MeikyuKingdom_mk_kingdom_change_table$30, $MeikyuKingdom_mk_kingdom_mischange_table$31, $MeikyuKingdom_mk_critical_attack_table$32, $MeikyuKingdom_mk_fatal_wounds_table$33, $MeikyuKingdom_mk_travel_table$34, $MeikyuKingdom_mk_negotiation_table$35, $MeikyuKingdom_mk_combat_fumble_table$36, $MeikyuKingdom_mk_emotion_table$37, $MeikyuKingdom_mk_market_price_table$38, $MeikyuKingdom_mk_treasure1_table$39, $MeikyuKingdom_mk_treasure2_table$40, $MeikyuKingdom_mk_treasure3_table$41, $MeikyuKingdom_mk_treasure4_table$42, $MeikyuKingdom_mk_treasure5_table$43, $MeikyuKingdom_mk_name_table$44, $MeikyuKingdom_mk_nick_a_table$45, $MeikyuKingdom_mk_nick_b_table$46, $MeikyuKingdom_mk_name_a_table$47, $MeikyuKingdom_mk_name_b_table$48, $MeikyuKingdom_mk_name_ex_table$49, $MeikyuKingdom_mk_name_fa_table$50, $MeikyuKingdom_mk_device_factory_table$51, $MeikyuKingdom_mk_item_decide_table$52, $MeikyuKingdom_mk_weapon_item_table$59, $MeikyuKingdom_mk_life_item_table$60, $MeikyuKingdom_mk_rest_item_table$61, $MeikyuKingdom_mk_search_item_table$62, $MeikyuKingdom_mk_rare_weapon_item_table$63, $MeikyuKingdom_mk_rare_item_table$64, $MeikyuKingdom_mk_item_features_table$65, $MeikyuKingdom_mk_item_power_table$66, $MeikyuKingdom_mk_item_jyumon_table$67, $MeikyuKingdom_mk_item_jyuka_table$68, $MeikyuKingdom_mk_item_aptitude_table$69, $MeikyuKingdom_mk_item_attribute_table$72, $MeikyuKingdom_mk_gender_table$73, $MeikyuKingdom_mk_family_business_table$74, $MeikyuKingdom_mk_random_encount1_table$75, $MeikyuKingdom_mk_random_encount2_table$76, $MeikyuKingdom_mk_random_encount3_table$77, $MeikyuKingdom_mk_random_encount4_table$78, $MeikyuKingdom_mk_random_encount5_table$79, $MeikyuKingdom_mk_random_encount6_table$80, $MeikyuKingdom_mk_pn_decide_table$81, $MeikyuKingdom_mk_decoration_table$83, $MeikyuKingdom_mk_placename_table$87, $MeikyuKingdom_mk_basic_decoration_table$91, $MeikyuKingdom_mk_spooky_decoration_table$92, $MeikyuKingdom_mk_katakana_decoration_table$93, $MeikyuKingdom_mk_passage_placename_table$94, $MeikyuKingdom_mk_natural_placename_table$95, $MeikyuKingdom_mk_artifact_placename_table$96, $MeikyuKingdom_mk_ls_decide_table$97, $MeikyuKingdom_mk_landscape_table$99, $MeikyuKingdom_mk_artifact_landscape_table$106, $MeikyuKingdom_mk_cave_landscape_table$107, $MeikyuKingdom_mk_natural_landscape_table$108, $MeikyuKingdom_mk_waterside_landscape_table$109, $MeikyuKingdom_mk_skyrealm_landscape_table$110, $MeikyuKingdom_mk_strange_place_landscape_table$111, $MeikyuKingdom_mk_kingdom_name_1_table$112, $MeikyuKingdom_mk_kingdom_name_2_table$113, $MeikyuKingdom_mk_kingdom_name_3_table$114, $MeikyuKingdom_mk_word_1_table$115, $MeikyuKingdom_mk_word_2_table$116, $MeikyuKingdom_mk_word_3_table$117, $MeikyuKingdom_mk_word_4_table$118, $MeikyuKingdom_getAftersearchBreakTable$119, $MeikyuKingdom_getWholeBreakTable$120, $MeikyuKingdom_getLoversBreakTable$121; - - - Opal.const_set($nesting[0], 'ID', "MeikyuKingdom"); - Opal.const_set($nesting[0], 'NAME', "迷宮キングダム"); - Opal.const_set($nesting[0], 'SORT_KEY', "めいきゆうきんくたむ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 (nMK+m)\n" + " n個のD6を振って大きい物二つだけみて達成値を算出します。修正mも可能です。\n" + " 絶対成功と絶対失敗も自動判定します。\n" + "・各種表\n" + " ・散策表(〜RT):生活散策表 LRT/治安散策表 ORT/文化散策表 CRT/軍事散策表 ART/お祭り表 FRT\n" + " ・休憩表(〜BT):才覚休憩表 TBT/魅力休憩表 CBT/探索休憩表 SBT/武勇休憩表 VBT/お祭り休憩表 FBT/捜索後休憩表 ABT/全体休憩表 WBT/カップル休憩表 LBT\n" + " ・ハプニング表(〜HT):才覚ハプニング表 THT/魅力ハプニング表 CHT/探索ハプニング表 SHT\n" + "  /武勇ハプニング表 VHT\n" + " ・王国災厄表 KDT/王国変動表 KCT/王国変動失敗表 KMT\n" + " ・王国名決定表1/2/3/4/5 KNT1/KNT2/KNT3/KNT4\n" + " ・痛打表 CAT/致命傷表 FWT/戦闘ファンブル表 CFT\n" + " ・道中表 TT/交渉表 NT/感情表 ET/相場表 MPT\n" + " ・お宝表1/2/3/4/5 T1T/T2T/T3T/T4T/T5T\n" + " ・名前表 NAMEx (xは個数)\n" + " ・名前表A NAMEA/名前表B NAMEB/エキゾチック名前表 NAMEEX/ファンタジック名前表 NAMEFA\n" + " ・アイテム関連(猟奇戦役不使用の場合をカッコ書きで出力)\n" + "  ・デバイスファクトリー  DFT\n" + "  ・アイテムカテゴリ決定表 IDT\n" + "  ・アイテム表(〜IT):武具 WIT/生活 LIT/回復 RIT/探索 SIT/レア武具 RWIT/レア一般 RUIT\n" + "  ・アイテム特性決定表   IFT\n" + " ・ランダムエンカウント表 nRET (nはレベル,1〜6)\n" + " ・地名決定表    PNTx (xは個数)\n" + " ・迷宮風景表    MLTx (xは個数)\n" + " ・単語表1/2/3/4 WORD1/WORD2/WORD3/WORD4\n" + "・D66ダイスあり\n"); - self.$setPrefixes(["\\d+MK", "LRT", "ORT", "CRT", "ART", "FRT", "TBT", "CBT", "SBT", "VBT", "FBT", "ABT", "WBT", "LBT", "THT", "CHT", "SHT", "VHT", "KDT", "KCT", "KMT", "CAT", "FWT", "CFT", "TT", "NT", "ET", "MPT", "T1T", "T2T", "T3T", "T4T", "T5T", "NAME.*", "DFT", "IDT\\d*", "WIT", "LIT", "RIT", "SIT", "RWIT", "RUIT", "IFT", "\\d+RET", "PNT\\d*", "MLT\\d*", "KNT\\d+", "WORD\\d+"]); - - Opal.def(self, '$initialize', $MeikyuKingdom_initialize$1 = function $$initialize() { - var $iter = $MeikyuKingdom_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $MeikyuKingdom_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $MeikyuKingdom_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $MeikyuKingdom_initialize$1.$$arity = 0); - - Opal.def(self, '$changeText', $MeikyuKingdom_changeText$2 = function $$changeText(string) { - var $$3, $$4, self = this; - - - self.$debug("changeText before string", string); - string = $send(string, 'gsub', [/(\d+)MK6/i], ($$3 = function(){var self = $$3.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6"}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - string = $send(string, 'gsub', [/(\d+)MK/i], ($$4 = function(){var self = $$4.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6"}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - self.$debug("changeText after string", string); - return string; - }, $MeikyuKingdom_changeText$2.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $MeikyuKingdom_dice_command_xRn$5 = function $$dice_command_xRn(string, nick_e) { - var self = this; - - return self.$mayokin_check(string, nick_e) - }, $MeikyuKingdom_dice_command_xRn$5.$$arity = 2); - - Opal.def(self, '$check_nD6', $MeikyuKingdom_check_nD6$6 = function $$check_nD6(total, dice_total, dice_list, cmp_op, target) { - var self = this, result = nil; - - - if (target['$==']("?")) { - return ""}; - result = self.$get2D6Result(total, dice_total, cmp_op, target); - result = $rb_plus(result, self.$getKiryokuResult(total, dice_list, target)); - return result; - }, $MeikyuKingdom_check_nD6$6.$$arity = 5); - Opal.alias(self, "check_2D6", "check_nD6"); - - Opal.def(self, '$get2D6Result', $MeikyuKingdom_get2D6Result$7 = function $$get2D6Result(total_n, dice_n, signOfInequality, diff) { - var self = this; - - - if (signOfInequality['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_n, 2))) { - return " > 絶対失敗" - } else if ($truthy($rb_ge(dice_n, 12))) { - return " > 絶対成功" - } else { - return self.$get2D6ResultOnlySuccess(total_n, diff) - }; - }, $MeikyuKingdom_get2D6Result$7.$$arity = 4); - - Opal.def(self, '$get2D6ResultOnlySuccess', $MeikyuKingdom_get2D6ResultOnlySuccess$8 = function $$get2D6ResultOnlySuccess(total_n, diff) { - var self = this; - - if ($truthy($rb_ge(total_n, diff))) { - return " > 成功" - } else { - return " > 失敗" - } - }, $MeikyuKingdom_get2D6ResultOnlySuccess$8.$$arity = 2); - - Opal.def(self, '$getKiryokuResult', $MeikyuKingdom_getKiryokuResult$9 = function $$getKiryokuResult(total_n, dice_list, diff) { - var $$10, self = this, num_6 = nil, none6_list = nil, maxDice1 = nil, maxDice2 = nil, none6Total_n = nil, none6Dice_n = nil, none6DiceReuslt = nil; - - - num_6 = dice_list.$count(6); - if (num_6['$=='](0)) { - return "" - } else if ($truthy($rb_ge(num_6, 2))) { - return "" + " & 《気力》" + (num_6) + "点獲得"}; - none6_list = $send(dice_list, 'reject', [], ($$10 = function(i){var self = $$10.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](6);}, $$10.$$s = self, $$10.$$arity = 1, $$10)).$sort(); - maxDice1 = none6_list.$pop().$to_i(); - maxDice2 = none6_list.$pop().$to_i(); - self.$debug("maxDice1", maxDice1); - self.$debug("maxDice2", maxDice2); - self.$debug("total_n", total_n); - none6Total_n = $rb_plus($rb_minus(total_n, 6), maxDice2); - self.$debug("none6Total_n", none6Total_n); - none6Dice_n = $rb_plus(maxDice1, maxDice2); - self.$debug("none6Dice_n", none6Dice_n); - self.$debug("diff", diff); - none6DiceReuslt = self.$get2D6ResultOnlySuccess(none6Total_n, diff); - return "" + " (もしくは) " + (none6Total_n) + (none6DiceReuslt) + " & 《気力》1点獲得"; - }, $MeikyuKingdom_getKiryokuResult$9.$$arity = 3); - - Opal.def(self, '$mayokin_check', $MeikyuKingdom_mayokin_check$11 = function $$mayokin_check(string, nick_e) { - var $a, $b, self = this, output = nil, m = nil, diceCount = nil, modifyText = nil, signOfInequality = nil, diff = nil, bonus = nil, dice_now = nil, dice_str = nil, total_n = nil, _ = nil, dice_list = nil, dice1 = nil, dice2 = nil, cmp_op = nil; - - - self.$debug("mayokin_check string", string); - output = "1"; - m = /^S?((\d+)R6([\+\-\d]*)(([>=]+)(\d+))?)/i.$match(string); - if ($truthy(m)) { - } else { - return "1" - }; - string = m['$[]'](1); - diceCount = m['$[]'](2).$to_i(); - modifyText = m['$[]'](3); - signOfInequality = ($truthy($a = m['$[]'](5)) ? $a : ""); - diff = m['$[]'](6).$to_i(); - bonus = (function() {if ($truthy(modifyText)) { - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(modifyText) - } else { - return 0 - }; return nil; })(); - dice_now = 0; - dice_str = ""; - total_n = 0; - $b = self.$roll(diceCount, 6, self.$sortType()['$&'](1)), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - dice_list = $send(dice_str.$split(","), 'map', [], "to_i".$to_proc()); - dice1 = (function() {if ($truthy($rb_ge(diceCount, 2))) { - return dice_list['$[]']($rb_minus(diceCount, 2)) - } else { - return 0 - }; return nil; })(); - dice2 = (function() {if ($truthy($rb_ge(diceCount, 1))) { - return dice_list['$[]']($rb_minus(diceCount, 1)) - } else { - return 0 - }; return nil; })(); - dice_now = $rb_plus(dice1, dice2); - self.$debug("dice1, dice2, dice_now", dice1, dice2, dice_now); - total_n = $rb_plus(dice_now, bonus); - dice_str = "" + "[" + (dice_str) + "]"; - output = "" + (dice_now) + (dice_str); - if ($truthy($rb_gt(bonus, 0))) { - output = $rb_plus(output, "" + "+" + (bonus)) - } else if ($truthy($rb_lt(bonus, 0))) { - output = $rb_plus(output, bonus.$to_s())}; - if ($truthy($rb_gt(self.$sendMode(), 0))) { - if ($truthy(output['$=~'](/[^\d\[\]]+/))) { - output = "" + (nick_e) + ": (" + (string) + ") > " + (output) + " > " + (total_n) - } else { - output = "" + (nick_e) + ": (" + (string) + ") > " + (total_n) - } - } else { - output = "" + (nick_e) + ": (" + (string) + ") > " + (total_n) - }; - if ($truthy(signOfInequality['$!='](""))) { - - cmp_op = $$($nesting, 'Normalize').$comparison_operator(signOfInequality); - output = $rb_plus(output, self.$check_result(total_n, dice_now, dice_list, 6, cmp_op, diff));}; - return output; - }, $MeikyuKingdom_mayokin_check$11.$$arity = 2); - - Opal.def(self, '$rollDiceCommand', $MeikyuKingdom_rollDiceCommand$12 = function $$rollDiceCommand(command) { - var $$13, $a, $b, self = this, output = nil, type = nil, total_n = nil, $case = nil, count = nil, names = nil; - - - output = ""; - type = ""; - total_n = ""; - $case = command; - if (/^NAMEA/i['$===']($case)) { - self.$debug("namea passed"); - type = "名前A"; - total_n = self.$d66(2); - output = self.$mk_name_a_table(total_n);} - else if (/^NAMEB/i['$===']($case)) { - type = "名前B"; - total_n = self.$d66(2); - output = self.$mk_name_b_table(total_n);} - else if (/^NAMEEX/i['$===']($case)) { - type = "エキゾチック名前"; - total_n = self.$d66(2); - output = self.$mk_name_ex_table(total_n);} - else if (/^NAMEFA/i['$===']($case)) { - type = "ファンタジック名前"; - total_n = self.$d66(2); - output = self.$mk_name_fa_table(total_n);} - else if (/^NAME(\d*)/i['$===']($case)) { - type = "名前"; - count = self.$getCount($$($nesting, 'Regexp').$last_match(1)); - names = ""; - $send(count, 'times', [], ($$13 = function(_i){var self = $$13.$$s || this, $a, $b, name = nil, dice = nil; - - - - if (_i == null) { - _i = nil; - }; - $b = self.$mk_name_table(), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (dice = ($a[1] == null ? nil : $a[1])), $b; - return (names = $rb_plus(names, "" + "[" + (dice) + "]" + (name) + " "));}, $$13.$$s = self, $$13.$$arity = 1, $$13)); - output = names; - total_n = count;} - else if (/^PNT(\d*)/i['$===']($case)) { - type = "地名"; - count = self.$getCount($$($nesting, 'Regexp').$last_match(1)); - output = self.$mk_pn_decide_table(count); - total_n = count;} - else if (/^MLT(\d*)/i['$===']($case)) { - type = "地名"; - count = self.$getCount($$($nesting, 'Regexp').$last_match(1)); - output = self.$mk_ls_decide_table(count); - total_n = count;} - else if (/^DFT/i['$===']($case)) { - type = "デバイスファクトリー"; - output = self.$mk_device_factory_table(); - total_n = 1;} - else if (/^LRT/i['$===']($case)) { - type = "生活散策"; - $b = self.$mk_life_research_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^ORT/i['$===']($case)) { - type = "治安散策"; - $b = self.$mk_order_research_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^CRT/i['$===']($case)) { - type = "文化散策"; - $b = self.$mk_calture_research_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^ART/i['$===']($case)) { - type = "軍事散策"; - $b = self.$mk_army_research_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^FRT/i['$===']($case)) { - type = "お祭り"; - $b = self.$mk_festival_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^TBT/i['$===']($case)) { - type = "才覚休憩"; - $b = self.$mk_talent_break_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^CBT/i['$===']($case)) { - type = "魅力休憩"; - $b = self.$mk_charm_break_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^SBT/i['$===']($case)) { - type = "探索休憩"; - $b = self.$mk_search_break_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^VBT/i['$===']($case)) { - type = "武勇休憩"; - $b = self.$mk_valor_break_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^FBT/i['$===']($case)) { - type = "お祭り休憩"; - $b = self.$mk_festival_break_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^THT/i['$===']($case)) { - type = "才覚ハプニング"; - $b = self.$mk_talent_happening_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^CHT/i['$===']($case)) { - type = "魅力ハプニング"; - $b = self.$mk_charm_happening_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^SHT/i['$===']($case)) { - type = "探索ハプニング"; - $b = self.$mk_search_happening_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^VHT/i['$===']($case)) { - type = "武勇ハプニング"; - $b = self.$mk_valor_happening_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^MPT/i['$===']($case)) { - type = "相場"; - $b = self.$mk_market_price_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^T1T/i['$===']($case)) { - type = "お宝1"; - $b = self.$mk_treasure1_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^T2T/i['$===']($case)) { - type = "お宝2"; - $b = self.$mk_treasure2_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^T3T/i['$===']($case)) { - type = "お宝3"; - $b = self.$mk_treasure3_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^T4T/i['$===']($case)) { - type = "お宝4"; - $b = self.$mk_treasure4_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^T5T/i['$===']($case)) { - type = "お宝5"; - $b = self.$mk_treasure5_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^RWIT/i['$===']($case)) { - type = "レア武具アイテム"; - total_n = self.$d66(1); - output = self.$mk_rare_weapon_item_table(total_n);} - else if (/^RUIT/i['$===']($case)) { - type = "レア一般アイテム"; - total_n = self.$d66(1); - output = self.$mk_rare_item_table(total_n);} - else if (/^WIT/i['$===']($case)) { - type = "武具アイテム"; - total_n = self.$d66(2); - output = self.$mk_weapon_item_table(total_n);} - else if (/^LIT/i['$===']($case)) { - type = "生活アイテム"; - total_n = self.$d66(2); - output = self.$mk_life_item_table(total_n);} - else if (/^RIT/i['$===']($case)) { - type = "回復アイテム"; - total_n = self.$d66(2); - output = self.$mk_rest_item_table(total_n);} - else if (/^SIT/i['$===']($case)) { - type = "探索アイテム"; - total_n = self.$d66(2); - output = self.$mk_search_item_table(total_n);} - else if (/^IFT/i['$===']($case)) { - type = "アイテム特性"; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_item_features_table(total_n);} - else if (/^IDT/i['$===']($case)) { - type = "アイテムカテゴリ決定"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_item_decide_table(total_n);} - else if (/^1RET/i['$===']($case)) { - type = "1Lvランダムエンカウント"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_random_encount1_table(total_n);} - else if (/^2RET/i['$===']($case)) { - type = "2Lvランダムエンカウント"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_random_encount2_table(total_n);} - else if (/^3RET/i['$===']($case)) { - type = "3Lvランダムエンカウント"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_random_encount3_table(total_n);} - else if (/^4RET/i['$===']($case)) { - type = "4Lvランダムエンカウント"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_random_encount4_table(total_n);} - else if (/^5RET/i['$===']($case)) { - type = "5Lvランダムエンカウント"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_random_encount5_table(total_n);} - else if (/^6RET/i['$===']($case)) { - type = "6Lvランダムエンカウント"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_random_encount6_table(total_n);} - else if (/^KDT/i['$===']($case)) { - type = "王国災厄"; - $b = self.$mk_kingdom_disaster_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^KCT/i['$===']($case)) { - type = "王国変動"; - $b = self.$mk_kingdom_change_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^KMT/i['$===']($case)) { - type = "王国変動失敗"; - $b = self.$mk_kingdom_mischange_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^CAT/i['$===']($case)) { - type = "痛打"; - $b = self.$mk_critical_attack_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^FWT/i['$===']($case)) { - type = "致命傷"; - $b = self.$mk_fatal_wounds_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^CFT/i['$===']($case)) { - type = "戦闘ファンブル"; - $b = self.$mk_combat_fumble_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^TT/i['$===']($case)) { - type = "道中"; - $b = self.$mk_travel_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^NT/i['$===']($case)) { - type = "交渉"; - $b = self.$mk_negotiation_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^ET/i['$===']($case)) { - type = "感情"; - $b = self.$mk_emotion_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^KNT(\d+)/i['$===']($case)) { - type = "王国名"; - count = self.$getCount($$($nesting, 'Regexp').$last_match(1)); - total_n = self.$d66(2); - $case = count; - if ((1)['$===']($case)) {output = self.$mk_kingdom_name_1_table(total_n)} - else if ((2)['$===']($case)) {output = self.$mk_kingdom_name_2_table(total_n)} - else if ((3)['$===']($case)) {output = self.$mk_kingdom_name_3_table(total_n)};} - else if (/^WORD(\d+)/i['$===']($case)) { - type = "単語"; - count = self.$getCount($$($nesting, 'Regexp').$last_match(1)); - total_n = self.$d66(2); - $case = count; - if ((1)['$===']($case)) {output = self.$mk_word_1_table(total_n)} - else if ((2)['$===']($case)) {output = self.$mk_word_2_table(total_n)} - else if ((3)['$===']($case)) {output = self.$mk_word_3_table(total_n)} - else if ((4)['$===']($case)) {output = self.$mk_word_4_table(total_n)};} - else if (/^ABT/i['$===']($case)) { - type = "捜索後休憩"; - $b = self.$getAftersearchBreakTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^WBT/i['$===']($case)) { - type = "全体休憩"; - $b = self.$getWholeBreakTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^LBT/i['$===']($case)) { - type = "カップル休憩"; - $b = self.$getLoversBreakTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else {return nil}; - if ($truthy(output['$!=']("1"))) { - return (output = "" + (type) + "表(" + (total_n) + ") > " + (output)) - } else { - return nil - }; - }, $MeikyuKingdom_rollDiceCommand$12.$$arity = 1); - - Opal.def(self, '$getCount', $MeikyuKingdom_getCount$14 = function $$getCount(countText) { - var self = this; - - - if ($truthy(countText['$empty?']())) { - return 1}; - return countText.$to_i(); - }, $MeikyuKingdom_getCount$14.$$arity = 1); - - Opal.def(self, '$mk_life_research_table', $MeikyuKingdom_mk_life_research_table$15 = function $$mk_life_research_table() { - var self = this; - - return self.$get_table_by_2d6(["ハグルマ資本主義神聖共和国から使者が現れる。受け入れる場合[生活レベル/9]に成功すると(1d6)MG獲得。この判定の難易度は、ハグルマとの関係が険悪なら+2、敵対なら+4される。使者を受け入れない場合、ハグルマとの関係が1段階悪化する。すでに関係が敵対なら、領土1つを失う", "王国の活気にやる気がでる。《気力》+1、もう一度王国フェイズに行動できる", "この国の評判を聞いて、旅人がやってくる。このゲームのシナリオの目的を果たしたら、終了フェイズに《民》+(2d6)人", "旅の商人に出会い、昨今の相場を聞く。(2d6)を振り、メモしておく。終了フェイズの収支報告のタイミングに、2d6を振る代わりにその目が出たことにして相場を決定する", "主婦たちの井戸端会議によると、生活用品が不足しているらしい。ゲーム中に「革」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「革」を獲得出来ないと、維持費+1MG", "食料に対する不安を漏らす民の姿を見かける。ゲーム中に「肉」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「肉」を獲得出来ないと、維持費+1MG", "散策の途中、様々な施設が老朽化しているのを発見する。ゲーム中に「木」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「木」を獲得出来ないと、維持費+1MG", "お腹の大きくなった女性が、無事戻ったら赤子の名付け親になって欲しいと言う。このゲームのシナリオの目的を果たしたら、終了フェイズに《民》+(2d6)人", "王国内で民とともに汗を流す。[生活レベル/9]の判定に成功すると、(生産施設の数×1)MGを獲得する", "「これ、便利だと思うんですけど」 [生活レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の生活アイテム1個を1Lvで獲得できる", "突然王国に旅人が訪れ、王国の食料庫が乏しくなってくる。[生活レベル/11]に成功すると、他国から補給を呼んで《民》+(2d6)人。失敗すると《民》-(2d6)人"]) - }, $MeikyuKingdom_mk_life_research_table$15.$$arity = 0); - - Opal.def(self, '$mk_order_research_table', $MeikyuKingdom_mk_order_research_table$16 = function $$mk_order_research_table() { - var self = this; - - return self.$get_table_by_2d6(["メトロ汗国から使者が現れる。受け入れる場合、[治安レベル/9]に成功すると《民》+(2d6)人。失敗すると《民》-(2d6)人。この判定の難易度は、汗国との関係が険悪なら+2、敵対なら+4される。使者を受け入れない場合、汗国との関係が1段階悪化する。すでに関係が敵対なら、領土1つを失う", "「つまらないものですが、これを冒険に役立ててください……」相場表でランダムに素材1種を選び、それを(1d6)個獲得する", "民たちが自分らで、王国を守る相談をしている。この気0無のシナリオの目的を果たしたら、好きなレベルのある施設1軒を選び、その隣の部屋に同じ施設1軒を建設する", "毎日の散歩の成果が出て、体の調子が良い。このゲーム中、《HP》の最大値+5し、《HP》5点回復する", "王国の民たちが、ランドメイカーの留守を守る人間が少ないことを心配している。ゲーム中に逸材1人を獲得するたびに《民の声》+1。終了フェイズまでに1人も逸材を獲得出来ないと、維持費+1MG", "王国周辺の迷宮化が進んでいる。対迷宮化結界を強化せねば…。ゲーム中に「魔素」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「魔素」を獲得出来ないと、維持費+1MG", "王国内の施設の稼働率が下がっている。整備が必要そうだ。ゲーム中に「機械」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「機械」を獲得出来ないと、維持費+1MG", "周辺諸国の噂を聞く。王国シートの既知の土地欄の中から、関係が同盟・良好・中立の他国があれば、ランダムに国1つを選ぶ、相場表でランダムに素材1種類を選ぶ。その国の相場はその素材となる", "王国の平和な光景を見て、手応えを感じる。[治安レベル/9」の判定に成功すると、[公共施設の数×1]MGを獲得する", "「迷宮のごかごがありますように……」 [治安レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の探索アイテム1個を1Lvで獲得できる", "王国の中で不満分子たちがなにやら不穏な話をしているのを耳にする。[治安レベル/11]の判定に成功すると、あなたは留守中の準備をしておくことができる。そのゲーム中、一度だけ王国災厄表の結果を無効にすることができる。失敗すると、ランダムに施設1軒を選び、それが破壊される"]) - }, $MeikyuKingdom_mk_order_research_table$16.$$arity = 0); - - Opal.def(self, '$mk_calture_research_table', $MeikyuKingdom_mk_calture_research_table$17 = function $$mk_calture_research_table() { - var self = this; - - return self.$get_table_by_2d6(["千年王朝から使者が現れる。受け入れる場合、[文化レベル/9]に成功すると《民の声》+(1d6)、失敗するとすると《民の声》-(1d6)。この判定の難易度は、千年王朝との関係が険悪なら+2、敵対なら+4される。使者を受け入れない場合、千年王朝との関係が1段階悪化する。すでに関係が敵対なら、領土1つを失う", "民が祭りの準備を進めている。シナリオの目的を果たしていれば、収支報告の時に[収支報告時の《民の声》-ゲーム開始時の《民の声》]MGを獲得できる。ただし、数値がマイナスになった場合は、その分維持費が上昇する", "都会に出て行った幼馴染から手紙がくる。王国の様子を知りたがっているようだ。シナリオの目的を果たしたら、終了フェイズにランダムなジョブの逸材1人を獲得する", "他のランドおメイカーの噂を聞く。宮廷から好きなキャラクター1人を選び、そのキャラクターに対する《好意》+1", "若者たちの有志が、街を発展させるため諸外国のことを勉強したいと言い出した。ゲーム中に「情報」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「情報」を獲得出来ないと、維持費+1MG", "若い娘たちが、流行の衣装について楽しそうに話している。ゲーム中に「衣料」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「衣料」を獲得出来ないと、維持費+1MG", "民たちが、君のうわさ話をしている。ゲーム中にあなたにたいして「恋人」「忠義」「親友」の人間関係が成立するたびに《民の声》+2。終了フェイズの収支報告までに1回も人間関係が成立できないと、維持費+1MG", "あなたに熱い視線が注がれているのを感じる。宮廷から好きなキャラクター1人を選び、そのキャラクターの自分に対する《好意》+1", "王国内を訪れる旅人たちを見かける。[文化レベル/9]の判定に成功すると、[憩いの施設の数×1]MGを獲得する", "「ご無事をお祈りしております……」 [文化レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の回復アイテム1個を1Lvで獲得できる", "王国の中の民たちの表情に制裁がない。暗い迷宮生活に倦んでいるようだ。[文化レベル/11]の判定に成功すると民を盛り上げる祭りを開き、《民の声》+(1d6)。失敗すると維持費+(1d6)"]) - }, $MeikyuKingdom_mk_calture_research_table$17.$$arity = 0); - - Opal.def(self, '$mk_army_research_table', $MeikyuKingdom_mk_army_research_table$18 = function $$mk_army_research_table() { - var self = this; - - return self.$get_table_by_2d6(["ダイナマイト帝国から使者が現れる。受け入れる場合、[軍事レベル/9]に成功すると(1d6)MG獲得、失敗すると維持費+(1d6)MG。この判定の難易度は、ダイナマイトとの関係が険悪なら+2、敵対なら+4される。使者を受け入れない場合、ダイナマイトとの関係が1段階悪化する。すでに関係が敵対なら、領土1つを失う", "長老から迷宮の昔話を聞く。このゲーム中、自分のレベル以下のモンスターを倒すと、そのモンスターをモンスターの《民》にすることができる。この効果は、そのゲーム中に1度だけ使用できる", "冒険に向かう君に期待の声がかかる。民たちの期待に、気持ちが引き締まる。このゲーム中、《器》が1点上昇する", "くだらないことで口論になる。宮廷の中から1人を選び、互いに対する《敵意》+1", "兵士たちの訓練の様子を見るが、武装がやや乏しい。ゲーム中に「牙」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「牙」を獲得出来ないと、維持費+1MG", "旅人から隣国が軍備を拡張していると言う噂を聞く。ゲーム中に「鉄」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「鉄」を獲得出来ないと、維持費+1MG", "近隣で凶悪なモンスターたちが大量発生していると言う。ゲーム中に「火薬」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「火薬」を獲得出来ないと、維持費+1MG", "周辺諸国で戦争が勃発する。王国シートの既知の土地欄から2つの国を選び、両国間で戦争を行う。それぞれ「領土数+(1d6)」が戦力。大きい方が勝利して領土1つを獲得し、負けた方の国は領土を1つ失う。どちらかに援軍を送ることができる。[軍事レベル/9+戦う相手の領土数]の判定に成功すると戦力+(1d6)。勝敗に関係なく援軍を送った国との関係が1段階友好になり、戦った相手の国との関係が1段階悪化する", "隣国からの貢物が届く。[軍事レベル/11]の判定に成功すると、収支報告の時に価格の()内の数字が[領土の数×1]以下のレアアイテム1個を獲得する", "「こんなものを用意してみました」 [軍事レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の武具アイテム1個を1Lvで獲得できる", "あなたが他の出発を察知して、何者かが国を襲う![軍事レベル/11]の判定に成功するとあなたが他の武勇に歓声が上がり宮廷全員の気力+(1d6)。失敗すると、宮廷全員の《HP》と《配下》が(1d6)減少する"]) - }, $MeikyuKingdom_mk_army_research_table$18.$$arity = 0); - - Opal.def(self, '$mk_talent_break_table', $MeikyuKingdom_mk_talent_break_table$19 = function $$mk_talent_break_table() { - var self = this; - - return self.$get_table_by_2d6(["民との会話の中、経費節約のアイデアが沸く。[才覚/11]の判定に成功すると、維持費が(1d6)MG減少する", "嫌いなものが出てくる夢を見て心寂しくなったところに仲間が来てくれる。好きな宮廷内のキャラクター1人への《好意》+1", "好きなものの夢を見る。シチュエーションを表現し、幸せそうだと感じるプレイヤーが居たら《気力》+2", "国に残した家族を心配する民を励ます。[才覚/11]の判定に成功すると、《民の声》+2", "あらん限りの声を力を込めて檄を飛ばす。[才覚/9]の判定に成功すると、宮廷全員のあなたに対する《好意》の合計だけ、《民の声》が回復する", "休憩中も休み無く働いていると、配下がお茶を入れてくれる。《民の声》+1", "今後の冒険について口角泡を飛ばして議論する。好きな宮廷内のキャラクター1人を選び、そのキャラの自分に対する《敵意》を好きなだけ上昇させる。上昇した《敵意》と等しい値だけ《民の声》が回復する", "たまには料理をしようと思い立つ。【お弁当】か【フルコース】の効果を使用して、食事を取ることが出来る。使用した場合、(1d6)を振る。奇数が出たら料理は美味だった、《民の声》+1。偶数が出たら料理は非道い味になった、宮廷全員のあなたに対する《敵意》+1", "年若い配下に冒険譚をせがまれる。[才覚/現在の《民の声》の値+3]の判定に成功すると、《民の声》+(1d6)。失敗すると次の1クォーター行動できない", "迷宮に囚われた人々を見つける。助けたいが、食料がやや心配だ。[才覚/9]の判定に成功すると、自分の《配下》+(1d6)", "この迷宮は一筋縄ではいかないようだ。今こそ、用意していたアレが役に立つだろう。自分の習得しているスキル1種を未修得にし、同じスキルグループのスキル1種を修得してもよい。この効果は永続する。"]) - }, $MeikyuKingdom_mk_talent_break_table$19.$$arity = 0); - - Opal.def(self, '$mk_charm_break_table', $MeikyuKingdom_mk_charm_break_table$20 = function $$mk_charm_break_table() { - var self = this; - - return self.$get_table_by_2d6(["妖精のワイン倉を発見し、酒盛りが始まる。宮廷全員の《気力》+1。[魅力/9]の判定に失敗すると、あなたは脱ぎ出す。(1d6)を振り、奇数なら宮廷全員のあなたに対する《好意》+1、偶数なら《敵意》+1", "休憩中、意外な寝言を言ってしまう。自分を除く宮廷全員は自分に対する《好意》と《敵意》を入れ替えることが出来る。また、その属性を自由に変更することができる", "床の冷たさから、ぬくもりを求めて身体を寄せ合う。あなたに《好意》を持っているキャラの数だけ《気力》と《HP》が回復する", "こっそり二人で抜け出して良い雰囲気に。その部屋の中に、好きなものが同じキャラが居ればそのキャラ1体を選び、互いに対する《好意》+1", "星の灯りがあなたの顔をロマンチックに照らし出す。その部屋にいる好きなキャラ1体を選び、[魅力/そのキャラのあなたに対する《好意》+9]の判定に成功すると、そのキャラのあなたに対する《好意》+1", "あいつと目が合う。[魅力/9]の判定に成功したら、宮廷内からランダムに1体選び、そのキャラから自分への《好意》か、または自分のそのキャラへの《好意》いづれかが+1される", "うたた寝をしていると誰かが毛布を掛けてくれた。ランダムにキャラを選び、自分のそのキャラへの《好意》+1", "たき火を囲みながら会話を楽しむ。GMの左隣にいるプレイヤーから順番に、自分のPCが《好意》を持っているキャラ1体を選ぶ。選ばれたキャラは《気力》+1。誰からも選ばれなかったキャラは《気力》-1、ランダムに選んだ宮廷内のキャラへの《敵意》+1", "着替えを覗かれる。宮廷内からランダムに1体選び、(1d6)を振る。奇数なら大声をだしてしまい宮廷全員のそのキャラに対する《敵意》+1、偶数ならそのキャラとあなたの互いの《好意》+1", "食べ物の匂いにつられたモンスターと遭遇する。ランダムエンカウント表でモンスターを決定する。[魅力/モンスターの中で最も高いレベル+3]の判定に成功した場合、そのモンスターたちと取引できる。失敗した場合戦闘に突入する", "ふとした拍子に唇が触れあう。好きなキャラ1体を選ぶ。そのキャラの自分以外への《好意》の合計を全て自分に対する《好意》に加える。その後、自分以外への《好意》を0にする"]) - }, $MeikyuKingdom_mk_charm_break_table$20.$$arity = 0); - - Opal.def(self, '$mk_search_break_table', $MeikyuKingdom_mk_search_break_table$21 = function $$mk_search_break_table() { - var self = this; - - return self.$get_table_by_2d6(["一休みの前に道具の手入れ。ランダムに自分のアイテムスロット1つを選ぶ。そのスロットにレベルがあるアイテムがあった場合、そのアイテムのレベルが1上がる", "寝床を探していたらアルコープの奥の宝箱を見つける。[探索/11]の判定に成功したら好きな素材1種類を(1d6)個手に入れる", "一眠りしたら夢の中で…。[探索/11]の判定に成功したら、好きな部屋のモンスターの名前とトラップの数をGMから教えてもらえる", "配下が眠りにつき、静寂が訪れると隣の部屋から妙な物音が聞こえてきた。隣接する好きな部屋を選ぶ。[探索/10]の判定に成功すると、その部屋にモンスターがいるかどうか、いる場合はモンスターの種類と数が分かる", "一休みしようと持ったら、モンスターの墓場を発見した。好きな素材を1種類えらび、宮廷全員のあなたにたいする《好意》の合計に等しい個数だけその素材を入手する", "この部屋はなぜか落ち着く。もしもその部屋の中にあなたの好きなものがあれば《気力》を(1d6)点回復することができる", "壁に書かれた奇妙な壁画が、あなたを見つめている気がする…。[探索/9]の判定に成功したら、【エレベータ】を発見する", "白骨化した先客の死体が見つかる。使えそうな装備はありがたく頂戴しておこう。[探索/11]の判定に成功したら、コモンアイテムのカテゴリの中から好きなものを1つ選び、そのカテゴリのアイテムをランダムで1個手に入れる", "星の灯りで地図を眺める…部屋の構造からして、この辺りに何かありそうだ。[探索/10]の判定に成功すると、この部屋に仕掛けられたイベント型のトラップを全て発見する", "休んでいる間にトイレにいきたくなった。[探索/11]の判定に成功すると、迷宮のほころびを見つける。このゲームの間、この部屋から迷宮の外へ帰還することができる", "こ、これは秘密の扉?[探索/11]の判定に成功すると、この部屋に隣接する好きな部屋に通路を延ばすことができる"]) - }, $MeikyuKingdom_mk_search_break_table$21.$$arity = 0); - - Opal.def(self, '$mk_valor_break_table', $MeikyuKingdom_mk_valor_break_table$22 = function $$mk_valor_break_table() { - var self = this; - - return self.$get_table_by_2d6(["時が満ちるにつれ、闘志が高まる。現在の経過ターン数と等しい数だけ《気力》が回復する", "もっと敵と戦いたい、血に飢えた自分を発見する。[武勇/11]の判定に成功すると《気力》が1点、《HP》が(1d6)点回復する", "部屋の片隅にうち捨てられた亡骸を発見する。このマップの支配者の名前が分かっていれば、宮廷全員は支配者への《敵意》を1点上昇させることができる", "部屋の隅に隠れていた怪物が襲いかかってきた。[武勇/10]の判定に成功すると怪物を追い払い《民の声》+1。失敗すると自分の《配下》-(1d6)、《民の声》-1", "あいつの短剣がきみの横をかすめて毒蛇を追い払う。好きなキャラ1体を選び、そのキャラに対する《敵意》の分だけ《好意》を上昇させ、その後《敵意》を0にする", "実力を付けてきたアイツへとドス黒い気持ちがわき上がる。好きなキャラ1体を選び、そのキャラへの《敵意》+1", "ちょっとした行き違いから軽い口論になる。宮廷内からランダムにキャラ1体を選び、そのキャラとあなたの互いへの《敵意》+1", "ライバルの活躍が気になる。宮廷全員の中で、最も高いあなたに対する《敵意》の値と同じ数だけ《気力》を獲得する", "休むべきときにしっかり休む。《HP》を(2d6)点回復することができる", "怪物のいた痕跡を発見する。[武勇/11]の判定を行い、成功するとGMからこのゲームで遭遇する予定の、まだ種類の分かっていないモンスターを1種類教えてもらえる", "殺気に反応し飛び起きた!ランダムエンカウント表でモンスターを決定し戦闘を行う。そのモンスターを倒した後、ランダムにレアアイテム1個を手に入れる"]) - }, $MeikyuKingdom_mk_valor_break_table$22.$$arity = 0); - - Opal.def(self, '$mk_festival_break_table', $MeikyuKingdom_mk_festival_break_table$23 = function $$mk_festival_break_table() { - var self = this; - - return self.$get_table_by_2d6(["お祭りに向かう旅人たちとすれ違う。1D6MGが手に入る【宿屋】か【夜店】があれば、さらにもう1D6MGが手に入る", "なんでこんなときに、ダンジョンに行かなきゃいけないんだ! 「あ、電報でーす」このマップの支配者から、お祭りによせて祝辞の電報がやってくる。そうか、おまえのせいかッ!! マップの支配者の名前が分かり、そのキャラクターへの《敵意》が1D6点上がる", "「そういえば、国のみんなが何かいってたなぁ……」回想シーン。好きな散策表を1つ選び、2D6を振る。表に照らし合わせた結果を処理する", "あー。早く帰って、お祭りを楽しみたーい! この時点でキャンプを終了し、すぐに次の部屋へ移動すれば、このクォーターは、時間の経過が起こらない", "どこからか美味しそうな匂いが漂ってくる。「あ、うまそう」死んだふりをしていた民が起き上がる。今回の冒険で消費していた《配下》が1D6人回復する", "雰囲気がいつもと違うせいかな。なんかあの人がステキに見える。好きなキャラクター1人を選ぶ。そのキャラクターへの《好意》を1点上げる", "あ、こんなところにまで屋台が! あてくじ屋さんだ。1MG減らして、好きなアイテムカテゴリを選び、さらにそのカテゴリの中からランダムにアイテム1個を選ぶ。そのアイテムをもらえる(レアアイテムは飾ってあるが、絶対当たらない)", "お祭りを目指す交易商人と出会う。「あ、王様。これから王国行くんすよ」宮廷の持つ好きな素材を何個でも、同じ数の別の素材と交換してくれる", "せっかくお祭りなんだし、肩肘はってないで、ノリノリでGO!! このゲーム中は食事をするたびに《民の声》が1点回復する", "「あ、この歌は……」祭囃子がキミの封印されていたモンスターにまつわる過去の記憶を呼び戻す。好きなモンスター1種類を選ぶ。そのモンスター全般への《敵意》が1点上がる", "みんなのワクワクがアイテムに乗り移った? ランダムに自分のアイテムスロット1つを選ぶ。そこにレベルのあるアイテムがあった場合、そのレベルが1上がる"]) - }, $MeikyuKingdom_mk_festival_break_table$23.$$arity = 0); - - Opal.def(self, '$mk_festival_table', $MeikyuKingdom_mk_festival_table$24 = function $$mk_festival_table() { - var self = this; - - return self.$get_table_by_2d6(["祈願祭。国や重要人物の無病息災を祈ったり、戦いの勝利などを祈る祭り。災害や飢饉、流行り病が起こった付近で行われる。シナリオの目的をクリアしていれば、《民》が1D6人上昇する", "血祭り。戦いに向け、士気を向上させる祭り。戦争だけでなく、迷宮探索に向けて行われることも多い。生贄の血を軍神に捧げたりする。このゲームの間、戦闘に勝利すると《民の声》を1点獲得し、逃走すると《民の声》が1点失われる", "記念日。建国記念日や領土獲得などの記念日のお祝い。簡単につくることができるが、気がつくと記念日だらけで、何の記念だったかを忘れてしまう。ほどほどに。このゲームの間、行為判定の目で3でも絶対失敗、11でも絶対成功になる(「呪い」のバッドステータスを受けたものは4でも絶対失敗、【必殺】を使った命中判定なら10でも絶対成功)", "星祭。季節のお祭り。冬至や夏至などの祭りや、七夕、お花見、雪祭りなどが含まれる。季節感の少ない迷宮では、殊更にその風情を楽しもうとやたら盛り上がる。宮廷全員、好きなキャラクター1人を選び、そのキャラクターに対する《好意》を1点上げる", "民衆の宴。民が自発的に開くお祭り、イベント。アキハバラ電気祭りに餃子祭り、コミックマーケットなど、文化や地域の活性化と結びつくものが多い。このゲームの間、好きな施設1つを選んで、その施設の施設レベルを1上げる", "誕生日。ランドメイカーや逸材、国の重要人物の誕生日。聖誕祭や花祭りなど、国教の聖人などを祝う国も多い。現王の誕生日を「父の日」、后の誕生日を「母の日」とする国も多い。そのゲームの間、ケーキやおにぎり、缶ジュースなど、1人分が明確な食べ物を食べきったとき、自分のPCが《気力》1点を獲得する", "冠婚葬祭。国の重要人物の元服(成人)、婚礼、葬儀、祖先の慰霊などの儀式。格式の高い王国では、もっとも重要な祭礼である。このゲームの間、国力を使った判定の達成値を1上昇させる", "感謝祭。豊漁や豊作などがあったときに自然(迷宮)や精霊、信仰対象など、偉大なるものへの感謝を捧げるお祭り。獲物の毛の一部を切りとって迷宮に感謝する毛祭りや瀬祭り、豊饒を祝う新嘗祭などがある。終了フェイズに「木」や「革」、「肉」のいずれかを1つ消費すると、王国変動表の結果を±1の範囲でずらすことができる", "鬼祭り。お正月に旧年の悪を正す修正会、豆をまいて福を呼び込む追儺の儀式、怪物に仮装した子供たちが夜の王国をねり歩くハロウィーンなど、悪魔や悪霊を払うお祭り。モンスター除けに行われる。このゲームの間、ランダムエンカウントの戦闘後に使用するお宝表が1段階、高いレベルのものを使用する", "舞踏会。最高の音楽と芸術的な食事、そしてとびきりの衣装で臨む社交界の華。身分や素性を隠してパートナーを探す仮面舞踏会も人気は高い。ちなみに仮面舞踏会では、女性の側から男性をダンスに誘うのが礼儀だぞ。宮廷全員、ランダムにキャラクター1人を選び、そのキャラクターに対する《好意》を1点上げる", "競技会。国をあげて、スポーツや芸術、ゲームなど、さまざまなジャンルの一番を決めるお祭り、大会。オリンピックや料理勝負、歌合戦などがある。ランダムに能力値1つを選び、宮廷全員で難易度15の判定を行う。このとき成功した中で、もっとも達成値が高かったキャラクターは、シナリオ終了後、終了フェイズの探索会議で決定されるキャラクターとは別に、勲章を得る"]) - }, $MeikyuKingdom_mk_festival_table$24.$$arity = 0); - - Opal.def(self, '$mk_kingdom_disaster_table', $MeikyuKingdom_mk_kingdom_disaster_table$25 = function $$mk_kingdom_disaster_table() { - var self = this; - - return self.$get_table_by_2d6(["王国の悪い噂が蔓延する。既知の土地にある他国との関係が全て1段階悪化する", "自国のモンスターが凶暴化する。自国のモンスターの《民》からランダムに1種類選び、そのレベルと等しいだけ《民》が減少する。その後、その種類のモンスターの《民》は全ていなくなる", "疫病が大流行する。《民》-(2d6)", "自国の迷宮化が進行する。自国の領土のマップ数と等しい値だけ維持費が上昇する", "敵国のテロが横行する。[治安レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、ランダムに施設を1軒失う", "敵国襲来![軍事レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、ランダムに自国の領土を1つ失う", "敵国の陰謀。[文化レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、ランダムに逸材を1人失う", "食糧危機。《民》-(2d6)。王国にある「肉」の素材を1個消費する度に、《民》の減少を1人抑えることができる", "住民の不満が爆発する。[生活レベル/敵対国数×2+険悪国数+9]の判定に失敗すると《民の声》-1", "局地的な迷宮津波が発生。ランダムに自国の領土1つを選び、既知の土地の中からランダムに選んだ場所と場所を入れ替える", "敵国の勢力が強大化する。GMは、関係が敵対の国全てについて、その国の領土に接する土地を1つ選び、その土地をその国の領土にする"]) - }, $MeikyuKingdom_mk_kingdom_disaster_table$25.$$arity = 0); - - Opal.def(self, '$mk_talent_happening_table', $MeikyuKingdom_mk_talent_happening_table$26 = function $$mk_talent_happening_table() { - var self = this; - - return self.$get_table_by_2d6(["自分に王国を導くことなどできるのだろうか…。【お酒】を消費することができなければ、このゲーム中[才覚]-1", "国王の威信が問われる。(2d6)を振り、その値が[《民の声》+宮廷全員の国王に対する《好意》の合計]以上の場合、《民の声》-(1d6)し、さらに才覚ハプニング表を振る", "思考に霧の帳が降りる。「散漫」のバッドステータスを受ける", "重大な裏切りを犯してしまう。あなたに対する《好意》が最も高いキャラを1人選ぶ。そのキャラに対する《好意》の分だけそのキャラへの《敵意》を上昇させ、その後《好意》を0にする", "この人についていっていいのだろうか…?宮廷全員のあなたに対する《好意》-1(最低0)。その結果、誰かの《好意》が0になると《民の声》-1", "宮廷のスキャンダルが暴露される。宮廷全員のあなたに対する《敵意》のうち最も高いものと同じだけ《民の声》が減少する", "あなたの失策が噂になる。近隣の国の中からランダムで1つ選ぶ。その国との関係が1段階悪化する", "王国の経済に破綻の危機が。[生活レベル/9+現在の経過ターン数]の判定に失敗すると維持費+(1d6)MG", "この区画一体の迷宮化が激しくなる。1クォーターが経過する", "逸材の賃上げ要求が始まる。終了フェイズの予算会議の時、[今回使用した逸材の数×1]MGだけ維持費が上昇する", "今の自分に自信が持てなくなる。生まれ表からランダムにジョブを1つ選び、現在のジョブをそのジョブに変更する"]) - }, $MeikyuKingdom_mk_talent_happening_table$26.$$arity = 0); - - Opal.def(self, '$mk_charm_happening_table', $MeikyuKingdom_mk_charm_happening_table$27 = function $$mk_charm_happening_table() { - var self = this; - - return self.$get_table_by_2d6(["民同士の諍いに心を痛め、頭髪にもダメージが!【お酒】を消費することができなければ、このゲーム中[魅力]-1", "何気ない一言が不和の種に…。好きなキャラ1人を選び、宮廷全員のそのキャラに対する《敵意》+1", "あなたの美しさに嫉妬した迷宮が、あなたの姿を変える。「呪い」のバッドステータスを受ける", "かわいさ余って憎さ百倍。あなたに対する《好意》が最も高いキャラを1人選ぶ。そのキャラに対する《好意》の分だけそのキャラへの《敵意》を上昇させ、その後《好意》を0にする", "あなたを巡って不穏な空気が。宮廷全員のあなたに対する「愛情」の《好意》を比べ、高い順に2人選ぶ。その2人の互いに対する《敵意》+1", "いがみ合う宮廷を見て民の士気が減少する。宮廷全員のあなたに対する《敵意》の中で最も高い値と同じだけ《配下》が減少する", "宮廷に嫉妬の嵐が巻き起こる。宮廷の中で、あなたに対して愛情を持つキャラクターの数を数える。このゲームの間、行為判定を行うとき、ダイス目の合計がこの値以下なら絶対失敗となる(最低2)", "愛想を尽かされる。宮廷全員のあなたに対する《好意》-1(最低0)", "あなたの指揮に疑問の声が。[魅力/自分の《配下》の数]の判定に失敗すると[難易度-達成値]人だけ《配下》が減少する", "あなたの恋人だという異性が現れる。宮廷全員のあなたに対する《好意》を比べ、最も高いキャラ1人を選ぶ。あなたはそのキャラの[武勇]と同じだけ《HP》を減少させる", "他人が信用できなくなる。このゲームの間、協調行動を行えなくなり、人間関係のルールも使用できなくなる"]) - }, $MeikyuKingdom_mk_charm_happening_table$27.$$arity = 0); - - Opal.def(self, '$mk_search_happening_table', $MeikyuKingdom_mk_search_happening_table$28 = function $$mk_search_happening_table() { - var self = this; - - return self.$get_table_by_2d6(["指の震えが止まらない。【お酒】を消費することができなければ、このゲーム中[探索]-1", "流れ星に直撃。《HP》-(1d6)", "敵の過去を知り、同情してしまう。あなたのこのマップの支配者に対する《好意》+1。このゲームの間、《好意》を持ったキャラに対して攻撃を行い、絶対失敗した場合そのキャラへの《好意》と同じだけ《気力》が減少する", "昨日の友は今日の敵。あなたに対する《好意》が最も高いキャラを1人選ぶ。そのキャラに対する《好意》の分だけそのキャラへの《敵意》を上昇させ、その後《好意》を0にする", "うっかりアイテムを落として壊す。ランダムにアイテムスロットを1つ選び、そこにアイテムが入っていればそれを全て破壊する", "カーネルが活性化しトラップが強化される。このゲームの間、トラップを解除するための難易度+1", "友情にヒビが!宮廷全員のあなたに対する《好意》-1(最低0)、《敵意》+1", "敵の迷宮化攻撃!宮廷全員は[探索/11]を行い、失敗したキャラは(2d6)点のダメージを受ける", "つい出来心から国費に手を出してしまう。GMは好きなコモンアイテム1つを選ぶ。あなたはそのアイテムを手に入れるが、維持費+(1d6)MG、《民の声》-1。同じ部屋のPCは《希望》1点を消費して[探索/9]の判定に成功すれば、それを止めることができる", "封印されていたトラップを発動させてしまう。ランダムに災害系トラップから1つを選び、それを発動させる", "あなたを憎む迷宮支配者が賞金をかけた。このゲームの間、モンスターの攻撃やトラップの目標をランダムに決める場合、その目標はかならずあなたになる。(この効果を複数人が受けた場合、その中からランダムで決定する)"]) - }, $MeikyuKingdom_mk_search_happening_table$28.$$arity = 0); - - Opal.def(self, '$mk_valor_happening_table', $MeikyuKingdom_mk_valor_happening_table$29 = function $$mk_valor_happening_table() { - var self = this; - - return self.$get_table_by_2d6(["つい幼児退行を起こしそうになる。【お酒】を消費することができなければ、このゲーム中[武勇]-1", "不意打ちを食らう。ランダムエンカウントが発生し、奇襲扱いで戦闘を行う", "配下の期待が、あなたの重荷となる。[現在の《民の声》-(1d6)]だけ《気力》が減少する", "配下があなたをかばう。自分の《配下》が(1d6)人減少する", "ムカついたので思わず殴る。自分の《敵意》が最も高いキャラからランダムに1体選び、そのキャラの《HP》が自分の[武勇]と同じだけ減少する", "決闘だっ!宮廷全員のあなたに対する《敵意》の中で、最も高い値と同じだけあなたの《HP》が減少する", "豚どもめ…。宮廷全員に対する《敵意》+1", "古傷が痛み出す。このゲームの間、戦闘で、あなたに対する敵の攻撃が成功すると、常に余分に1点ダメージを受ける", "不意に絶望と虚無感が襲い、心が折れる。宮廷全員の《気力》-1", "あなたを親の敵と名乗るものたちが現れた。このゲーム中に倒したモンスターからランダムに1種類を選び、そのモンスター(1d6)体と戦闘を行う", "自分の失敗が許せない。このゲームの間、《器》が1点減少したものとして扱う"]) - }, $MeikyuKingdom_mk_valor_happening_table$29.$$arity = 0); - - Opal.def(self, '$mk_kingdom_change_table', $MeikyuKingdom_mk_kingdom_change_table$30 = function $$mk_kingdom_change_table() { - var self = this; - - return self.$get_table_by_2d6(["列強のプロパガンダが現れる。(1d6)を振り、その目が現在の《民の声》以下で、現在列強の属国になっていたら属国から抜けることができる。上回っていたら、ランダムに列強を1つ選びその属国になる", "冒険の成功を祝う民たちが出迎えてくれる。《民の声》+2。この結果を出したプレイヤー(以下、当PL)以外の全員は、今回の冒険を振り返り当PLのPCが《好意》を得るとしたら誰が一番ふさわしいかを協議する。決定したキャラへの当PLのPCの《好意》+1", "何者かによる唐突な奇襲攻撃。未知の土地に面している領土からランダムに1つを選ぶ。[軍事レベル/敵対国数×2+険悪国数+9]の判定に成功すると返り討ちにして(1d6)MGを得る。失敗するとその領土は施設ごと失われる", "民の労働の結果が明らかに。[生活レベル/敵対国数×2+険悪国数+9]の判定に成功すると《予算》が自国の領土のマップ数と同じだけ増える。失敗したら《予算》が同じだけ減る", "民は領土を渇望していた。5MGを支払えば、隣接する未知の土地1つを領土にできる。(1d6)を振り、その数だけ通路を引くことができる。通路でつながっていない部屋は自国の領土として扱わない", "王国の子どもたちが宮廷をあなた方を見て成長する。《民》が[王国に残した《民》の数÷10+治安レベル]人増える", "あなたの活躍を耳にした者たちがやってくる。シナリオの目的を満たしている場合、関係が良好・同盟の国の数だけ(1d6)を振り、[合計値+治安レベル]人だけ《民》が増える", "街の機能に異変が!?[治安レベル/敵対国数×2+険悪国数+9]の判定に成功すると、自国の好きな施設1軒を選び、その施設の隣でかつ通路がつながっている部屋に同じ種類の施設がもう1軒できる。失敗したら、自国のタイプ:部屋の施設を1軒選び、破壊する", "王国同士の交流が行われた。[文化レベル/敵対国数×2+険悪国数+9]の判定に成功すると、生まれ表でランダムにジョブを決めた逸材が1人増え、好きな国1つとの関係を1段階良好にする。失敗すると、自国の逸材1人を選んで失い、ランダムに決めた国1つとの関係が1段階悪化する", "ただ、無為に時が過ぎていたわけではない。迷宮フェイズで過ごした1ターンにつき《予算》が1MG増える", "民の意識が大きく揺れる。(1d6)を振り、その目が現在の《民の声》以下だったら、好きな国力が1点上昇する。上回っていたら、好きな国力が1点減少する"]) - }, $MeikyuKingdom_mk_kingdom_change_table$30.$$arity = 0); - - Opal.def(self, '$mk_kingdom_mischange_table', $MeikyuKingdom_mk_kingdom_mischange_table$31 = function $$mk_kingdom_mischange_table() { - var self = this; - - return self.$get_table_by_2d6(["列強のプロパガンダが現れる。(1d6)を振り、その目が現在の《民の声》を上回っていたら、ランダムに列強1つを選びその属国になる", "新たな勢力が勃発する。王国シートの基地の土地欄の中から1つ、未知の土地を選ぶ。(1d6)を振り、その結果をその土地に記入する。1:敵対関係の国。2:険悪関係の国。3:凶暴な怪物の巣。4:人間嫌いのダンジョンマスターの庵。5:迷宮化の進んだ大迷宮。6:列強の飛び地", "何者かによる唐突な奇襲攻撃。未知の土地に面している領土からランダムに1つを選ぶ。[軍事レベル/敵対国数×2+険悪国数+9]の判定に失敗するとその領土は施設ごと失われる", "民の労働の結果が明らかに。[生活レベル/敵対国数×2+険悪国数+9]の判定に失敗したら《予算》が自国の領土のマップ数と同じだけ減る", "他国の使者がやってくる。基地の土地欄の中からランダムに自国以外の国を1つ選ぶ。その国の領土のマップ数を等しい《予算》を消費するとその国との関係が1段階よくなる。消費しないと1段階悪くなる", "民の声は離れ、この国を去る者たちがいた。《民》が(1d6)人減少する", "過ぎゆく時が王政を帰る。基地の土地欄の中から、経過したターン数と等しい数までランダムに他国を選ぶ。GMは、その国に面する未知の土地1つを選び、それをその国の新たな領土とする。(周囲に未知の土地がない場合は増やせない)", "街の機能に異変が!?[治安レベル/敵対国数×2+険悪国数+9]の判定に失敗したら、自国のタイプ:部屋の施設を1軒選び、破壊する", "王国同士の交流が行われた。[文化レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、自国の逸材1人を選んで失い、ランダムに決めた国1つとの関係が1段階悪化する", "ただ、無為に時が過ぎていたわけではない。迷宮フェイズで過ごした1ターンにつき《予算》が1MG増える", "民の意識が大きく揺れる。(1d6)を振り、その目が現在の《民の声》を上回っていたら、好きな国力が1点減少する"]) - }, $MeikyuKingdom_mk_kingdom_mischange_table$31.$$arity = 0); - - Opal.def(self, '$mk_critical_attack_table', $MeikyuKingdom_mk_critical_attack_table$32 = function $$mk_critical_attack_table() { - var self = this; - - return self.$get_table_by_2d6(["攻撃の手応えが武器に刻まれる。その攻撃に使用した武具アイテムにレベルがあれば、そのレベルが1点上昇する", "電光石火の一撃。攻撃の処理が終了したあと、もう一度行動できる", "相手の姿形を変えるほどの一撃。攻撃目標に「呪い」のバッドステータスを与える", "乾坤一擲!攻撃の威力が2倍になる", "相手を吹き飛ばす一撃。攻撃目標を好きなエリアに移動させる", "会心の一撃!攻撃の威力+(1d6)", "相手の勢いを利用した一撃。攻撃の威力が攻撃目標のレベルと同じだけ上昇する", "あと1歩まで追いつめる。ダメージを与える代わりに、攻撃目標の残り《HP》を(1d6)点にすることができる", "敵の技を封じる。攻撃目標のスキルを1種選び、その戦闘の間、そのスキルを未修得の状態にする", "怒りの一撃!攻撃の威力+(2d6)", "急所をとらえ一撃で切り伏せる。攻撃目標の《HP》を0にする"]) - }, $MeikyuKingdom_mk_critical_attack_table$32.$$arity = 0); - - Opal.def(self, '$mk_fatal_wounds_table', $MeikyuKingdom_mk_fatal_wounds_table$33 = function $$mk_fatal_wounds_table() { - var self = this; - - return self.$get_table_by_2d6(["圧倒的一撃で急所を貫かれた。死亡する", "致命的な一撃が頭をかすめる。[探索/受けたダメージ+5]の判定に失敗すると死亡する", "出血多量で昏睡する。行動不能になる。この戦闘が終了するまでに《HP》を1以上にしないと死亡する", "頭を打ちつけ昏睡する。行動不能になる。このクォーターが終了するまでに《HP》を1以上にしないと死亡する", "重傷を負い昏睡する。行動不能になる。(1d6)クォーターが経過するまでに《HP》を1以上にしないと死亡する", "意識を失う。行動不能になる", "偶然アイテムに身を守られる。ランダムにアイテムを選び、そのアイテムを破壊してダメージを無効化する。破壊できるアイテムを1個も装備していない場合、行動不能になる", "《民》たちが身を挺して庇う。自分の《配下》を(2d6)人減少させ、ダメージを無効化する。《配下》が1人も居ない場合行動不能になる", "根性で跳ね返す。[探索/9-現在の《HP》]の判定に成功すると《HP》が1になる。失敗すると行動不能になる", "精神力だけで耐える。[武勇/9-現在の《HP》]の判定に成功すると《HP》が1になる。失敗すると行動不能になる", "幸運にもダメージを免れる。ダメージを無効化するが、代わりにランダムにバッドステータス1種を受ける"]) - }, $MeikyuKingdom_mk_fatal_wounds_table$33.$$arity = 0); - - Opal.def(self, '$mk_travel_table', $MeikyuKingdom_mk_travel_table$34 = function $$mk_travel_table() { - var self = this; - - return self.$get_table_by_2d6(["道中の時間が愛を育む。全員、好きなキャラ1体を選びそのキャラに対する《好意》+1", "何かの死体を見つけた。好きな素材1種類を(1d6)手に入れる", "辺りが闇に包まれる。宮廷の中からランダムにキャラを選ぶ。そのキャラが【星の欠片】を持っていたら、それが1個破壊される", "道に迷いそうになる。全員[才覚/9]の判定を行い、(1d6-成功したキャラ数)クォーター(最低0)、時間が経過する", "トラップに引っかかる。全員[探索/9]の判定にを行い、失敗したキャラは《HP》が(1d6)点減少する", "未知の土地の場合、何も起こらない。既知の土地の場合、その土地固有のイベントがある場合はそれが起こる", "モンスターの襲撃を受けた。全員[武勇/9]の判定を行い、失敗したキャラは《HP》が(1d6)点減少する", "恐ろしげな咆哮が響き渡る。全員[魅力/9]の判定を行い、失敗したキャラは《配下》が(1d6)人逃走し、自国へ帰る", "周辺の迷宮化が進む。宮廷全員は、既知の土地の中からランダムに選んだ土地へ移動する", "何かを拾う。コモンアイテムをランダムに1個選び、それを入手する", "1MG拾う"]) - }, $MeikyuKingdom_mk_travel_table$34.$$arity = 0); - - Opal.def(self, '$mk_negotiation_table', $MeikyuKingdom_mk_negotiation_table$35 = function $$mk_negotiation_table() { - var self = this; - - return self.$get_table_by_2d6(["中立的な態度は偽装だった。不意を打たれ、奇襲扱いで戦闘を行う", "交渉は決裂した。戦闘を行う", "交渉は決裂した。戦闘を行う", "生け贄を要求された。モンスターの中で最もレベルが高いもののレベルと同じだけ《配下》を減少させれば友好的になる。ただし、《民の声》-(1d6)。《配下》を減らさなければ戦闘を行う", "趣味を聞かれた。好きな単語表1つを選びD66を振る。宮廷の中に、その項目を好きなものに指定しているキャラがいれば友好的になる。居なければ戦闘を行う", "物欲しそうにこちらを見ている。「肉」の素材(1d6)個か、【お弁当】または【フルコース】1個を消費すれば友好的になる。しなければ戦闘を行う", "値踏みするようにこちらを見ている。維持費を(1d6)MG上昇させれば友好的になる。させなければ戦闘を行う", "「何かいいもの」を要求された。モンスターの中で最もレベルが高いもののレベル以上の価格のアイテムを消費すれば友好的になる。レアアイテムは価格を+10して扱う。しなければ戦闘を行う", "面白い話を要求された。プレイヤー達はモンスター達が興味を引きそうな話をすること。GMがそれを面白いと判断したら[魅力/9]の判定を行い、成功すれば。友好的になる。さもなければ戦闘を行う", "一騎打ちを申し込んできた。宮廷の中から代表を1名選び、モンスターの中で最もレベルの高いものと1対1で戦闘を行う(配置は互いに前列)。勝利すれば友好的になる。敗北すれば、再び交渉するか戦闘するかを決断する。この一騎打ちに外野がスキルやアイテムで干渉すると全員で戦闘になる", "運命の出会い。モンスター達の宮廷の代表に対する《好意》+1、友好的になる"]) - }, $MeikyuKingdom_mk_negotiation_table$35.$$arity = 0); - - Opal.def(self, '$mk_combat_fumble_table', $MeikyuKingdom_mk_combat_fumble_table$36 = function $$mk_combat_fumble_table() { - var self = this; - - return self.$get_table_by_2d6(["敵に援軍が現れる。敵軍の中で最もレベルの低いモンスターが(1d6)体増える。モンスター側がこの結果になった場合、好きなPCの《配下》+(1d6)", "敵の士気が大いに揺らぐ。自軍のキャラは全員1マス後退する", "勢い余って仲間を攻撃!自分の居るエリアからランダムに自軍のキャラを1体選び、そのキャラに使用している武器と同じ威力のダメージを与える", "つい仲間と口論になる。自軍の未行動キャラの中からランダムに1体選び、行動済みにする", "魔法の効果が消える。自軍のキャラが使用したスキルやアイテムの効果で、戦闘中持続するものが全て無効になる", "自分を傷つけてしまう。自分に(1d6)ダメージ", "攻撃の勢いを逆に利用される。自分の《HP》を現在値の半分にする", "アイテムを落とした。自分が装備しているアイテムからランダムに1個選び、破壊する。モンスター側の場合、自分に(1d6)ダメージ", "カーネルが活性化する。戦闘系とラップからランダムに1種類選び、それがその場に配置される", "空を切った攻撃に絶望する。自分と、自分に対して1点以上《好意》を持ったキャラ全員の《気力》-1。モンスター側の場合、自分に(1d6)ダメージ", "武器がすっぽ抜ける。攻撃に使用していたアイテムが破壊される。モンスター側の場合、自分に(1d6)ダメージ。その後、バトルフィールドにいるキャラの中からランダムに1体選び、そのキャラの《HP》を1点にする"]) - }, $MeikyuKingdom_mk_combat_fumble_table$36.$$arity = 0); - - Opal.def(self, '$mk_emotion_table', $MeikyuKingdom_mk_emotion_table$37 = function $$mk_emotion_table() { - var self = this; - - return self.$get_table_by_1d3(["忠誠/怒り", "友情/不信", "愛情/侮蔑"]) - }, $MeikyuKingdom_mk_emotion_table$37.$$arity = 0); - - Opal.def(self, '$mk_market_price_table', $MeikyuKingdom_mk_market_price_table$38 = function $$mk_market_price_table() { - var self = this; - - return self.$get_table_by_2d6(["無し", "肉", "牙", "鉄", "魔素", "機械", "衣料", "木", "火薬", "情報", "革"]) - }, $MeikyuKingdom_mk_market_price_table$38.$$arity = 0); - - Opal.def(self, '$mk_treasure1_table', $MeikyuKingdom_mk_treasure1_table$39 = function $$mk_treasure1_table() { - var self = this; - - return self.$get_table_by_1d6(["何も無し", "何も無し", "そのモンスターの素材欄の中から、好きな素材1個", "そのモンスターの素材欄の中から、好きな素材2個", "そのモンスターの素材欄の中から、好きな素材3個", "【お弁当】1個"]) - }, $MeikyuKingdom_mk_treasure1_table$39.$$arity = 0); - - Opal.def(self, '$mk_treasure2_table', $MeikyuKingdom_mk_treasure2_table$40 = function $$mk_treasure2_table() { - var self = this; - - return self.$get_table_by_1d6(["そのモンスターの素材欄の中から、好きな素材3個", "そのモンスターの素材欄の中から、好きな素材4個", "そのモンスターの素材欄の中から、好きな素材5個", "ランダムに回復アイテム1個", "ランダムに武具アイテム1個。レベルがあるアイテムなら1レベルのものが手に入る", "ランダムにレア一般アイテム1個"]) - }, $MeikyuKingdom_mk_treasure2_table$40.$$arity = 0); - - Opal.def(self, '$mk_treasure3_table', $MeikyuKingdom_mk_treasure3_table$41 = function $$mk_treasure3_table() { - var self = this; - - return self.$get_table_by_1d6(["そのモンスターの素材欄の中から、好きな素材5個", "そのモンスターの素材欄の中から、好きな素材7個", "そのモンスターの素材欄の中から、好きな素材10個", "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個。レベルがあるアイテムなら1レベルのものが手に入る", "ランダムにレア一般アイテム1個。レベルがあるアイテムなら1レベルのものが手に入る", "ランダムにレア武具アイテム1個"]) - }, $MeikyuKingdom_mk_treasure3_table$41.$$arity = 0); - - Opal.def(self, '$mk_treasure4_table', $MeikyuKingdom_mk_treasure4_table$42 = function $$mk_treasure4_table() { - var self = this; - - return self.$get_table_by_1d6(["そのモンスターの素材欄の中から、好きな素材5個", "そのモンスターの素材欄の中から、好きな素材10個", "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個。レベルがあるアイテムなら2レベルのものが手に入る", "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個。レベルがあるアイテムなら3レベルのものが手に入る", "ランダムにレア一般アイテム1個。レベルのあるアイテムなら2レベルのものが手に入る", "ランダムにレア武具アイテム1個。レベルのあるアイテムなら1レベルのものが手に入る"]) - }, $MeikyuKingdom_mk_treasure4_table$42.$$arity = 0); - - Opal.def(self, '$mk_treasure5_table', $MeikyuKingdom_mk_treasure5_table$43 = function $$mk_treasure5_table() { - var self = this; - - return self.$get_table_by_1d6(["そのモンスターの素材欄の中から、好きな素材10個", "そのモンスターの素材欄の中から、好きな素材15個", "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個。レベルがあるアイテムなら4レベルのものが手に入る", "ランダムにレア一般アイテム1個。レベルのあるアイテムなら3レベルのものが手に入る", "ランダムにレア武具アイテム1個。レベルのあるアイテムなら2レベルのものが手に入る", "好きなレアアイテム1個"]) - }, $MeikyuKingdom_mk_treasure5_table$43.$$arity = 0); - - Opal.def(self, '$mk_name_table', $MeikyuKingdom_mk_name_table$44 = function $$mk_name_table() { - var self = this, output = nil, name_n = nil, d1 = nil, d2 = nil, dice = nil; - - - self.$debug("mk_name_table begin"); - output = "1"; - name_n = $rb_plus(self.$rand(6), 1); - self.$debug("name_n", name_n); - d1 = self.$d66(2); - d2 = self.$d66(2); - self.$debug("d1, d2", d1, d2); - self.$debug("name_n", name_n); - if ($truthy($rb_le(name_n, 1))) { - output = self.$mk_nick_a_table(self.$mk_name_a_table(d1), d2) - } else if ($truthy($rb_le(name_n, 2))) { - output = self.$mk_nick_a_table(self.$mk_name_b_table(d1), d2) - } else if ($truthy($rb_le(name_n, 3))) { - output = self.$mk_nick_a_table(self.$mk_name_ex_table(d1), d2) - } else if ($truthy($rb_le(name_n, 4))) { - output = self.$mk_nick_b_table(self.$mk_name_a_table(d1), d2) - } else if ($truthy($rb_le(name_n, 5))) { - output = self.$mk_nick_b_table(self.$mk_name_b_table(d1), d2) - } else { - output = self.$mk_nick_b_table(self.$mk_name_fa_table(d1), d2) - }; - dice = "" + (name_n) + "," + (d1) + "," + (d2); - return [output, dice]; - }, $MeikyuKingdom_mk_name_table$44.$$arity = 0); - - Opal.def(self, '$mk_nick_a_table', $MeikyuKingdom_mk_nick_a_table$45 = function $$mk_nick_a_table(output, num) { - var self = this, table = nil; - - - table = [[11, "“災い転じて福となす”"], [12, "“七転び八起きの”"], [13, "“冗談にも程がある”"], [14, "“虎の尾を踏む”"], [15, "“石橋を叩いて渡る”"], [16, "“一を聴いて十を知る”"], [22, "“喉から手が出る”"], [23, "“据え膳食わぬは男の恥の”"], [24, "“天につば吐く”"], [25, "“風に柳の”"], [26, "“目に入れても痛くない”"], [33, "“とかく浮世は色と酒の”"], [34, "“当たるも八卦、当たらぬも八卦の”"], [35, "“泣く子も黙る”"], [36, "“天上天下唯我独尊”"], [44, "“虫も殺さぬ”"], [45, "“花も恥じらう”"], [46, "“触らぬ神に祟り無しの”"], [55, "“両手に花の”"], [56, "“(ゲーム会場の地名)でも一、二を争う”"]]; - if ($truthy($rb_lt(num, 66))) { - output = $rb_plus(self.$get_table_by_number(num, table), output) - } else { - output = "" + (output) + ($rb_plus(self.$rand(6), 1)) + "世" - }; - return output; - }, $MeikyuKingdom_mk_nick_a_table$45.$$arity = 2); - - Opal.def(self, '$mk_nick_b_table', $MeikyuKingdom_mk_nick_b_table$46 = function $$mk_nick_b_table(output, num) { - var self = this, table = nil; - - - table = [[11, "“身も蓋もない”"], [12, "“七人の敵がいる”"], [13, "“ドラゴンも裸足で逃げ出す”"], [14, "“われらが”"], [15, "“機会攻撃を誘発する”"], [16, "“佳人薄命”"], [22, "“すねに傷持つ”"], [23, "“湯上りは親でも惚れる”"], [24, "“叶わぬ時の神頼みの”"], [25, "“果報は寝て待つ”"], [26, "“清濁併せ呑む”"], [33, "“かゆいところに手が届く”"], [34, "“酒池肉林の”"], [35, "“蛇の道は蛇の”"], [36, "“口から先に生まれた”"], [44, "“柔よく剛を制す”"], [45, "“死人に口なしの”"], [46, "“噂をすれば”"], [55, "“ミスター/ミス”"], [56, "“(好きな名前表)の子”"], [66, "“(好きな単語表)の父/母”"]]; - return $rb_plus(self.$get_table_by_number(num, table), output); - }, $MeikyuKingdom_mk_nick_b_table$46.$$arity = 2); - - Opal.def(self, '$mk_name_a_table', $MeikyuKingdom_mk_name_a_table$47 = function $$mk_name_a_table(num) { - var self = this, table = nil; - - - table = [[11, "オレンジ/ジャスミン"], [12, "ホオズキ/アサガオ"], [13, "クローバー/ダチュラ"], [14, "ダフニ/キノコ"], [15, "グラナーダ/プリムローズ"], [16, "ラディッシュ/マリーゴールド"], [22, "サイプレス/マグノリア"], [23, "バンブー/オリーブ"], [24, "クラウド/クリマ"], [25, "タオ/スノウ"], [26, "アヴァランチ/エクレール"], [33, "ビバシータ/メトロノーム"], [34, "カノン/ファゴット"], [35, "オーボエ/アルモニカ"], [36, "チューバ/オルガノ"], [44, "ナン/クッキー"], [45, "ウイロウ/カシュカシュ"], [46, "スコーン/クスクス"], [55, "フラスコ/クリップ"], [56, "クラパドーラ/クレヨン"], [66, "ソープ/ブルーム"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_name_a_table$47.$$arity = 1); - - Opal.def(self, '$mk_name_b_table', $MeikyuKingdom_mk_name_b_table$48 = function $$mk_name_b_table(num) { - var self = this, table = nil; - - - table = [[11, "エイジ/ウェンズデイ"], [12, "ジョルノ/ノエル"], [13, "タスク/マニャーナ"], [14, "ウィンター/ジュノー"], [15, "ハイラン/ブランカ"], [16, "ウォルナット/ルージュ"], [22, "グレイ/スカーレット"], [23, "シュバルツ/モエギ"], [24, "スロット/キリエ"], [25, "ジョーカー/ダイス"], [26, "ジグソウ/ドミノ"], [33, "バックギャモン/マーブル"], [34, "シーガロ/ココア"], [35, "スピーチカ/オレンジペコー"], [36, "ジッポ/ショコラ"], [44, "ナインピンズ/ルチャ"], [45, "デカスロン/ラクロス"], [46, "カバディ/ピンポン"], [55, "ポンド/ヴェルベット"], [56, "ルーブル/コットン"], [66, "シリング/シルク"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_name_b_table$48.$$arity = 1); - - Opal.def(self, '$mk_name_ex_table', $MeikyuKingdom_mk_name_ex_table$49 = function $$mk_name_ex_table(num) { - var self = this, table = nil; - - - table = [[11, "モアイ/スイショウドクロ"], [12, "チュパカブラ/ムベンベ"], [13, "カンフー/インヤン"], [14, "ブシドー/ミヤコ"], [15, "チャンピオン/バービー"], [16, "ウパニシャッド/ゾルゲ"], [22, "デスマーチ/インテル"], [23, "ゴッホ/ヴィクトリア"], [24, "ゾンビ/オニャンコポン"], [25, "ゲロッパ/カルメン"], [26, "オーバーキル/サシミ"], [33, "ブッチャー/デヴィ"], [34, "ブロンソン/マドンナ"], [35, "ガイギャックス/エロイカ"], [36, "好きな星の名前(スピカ,オリオン)"], [44, "好きな武器の名前(エペ,フランベルジュ)"], [45, "好きな動物の名前(イタチ,パグ)"], [46, "好きな鉱物の名前(ルビィ,ヒスイ)"], [55, "好きな言葉+ドラゴン"], [56, "好きな単語表で決定する"], [66, "プレイヤーと同じ名前"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_name_ex_table$49.$$arity = 1); - - Opal.def(self, '$mk_name_fa_table', $MeikyuKingdom_mk_name_fa_table$50 = function $$mk_name_fa_table(num) { - var self = this, table = nil; - - - table = [[11, "アダム/イヴ"], [12, "ジャック/モモ"], [13, "オズ/アリス"], [14, "コナン/レダ"], [15, "アーサー/イシス"], [16, "エルリック/グローリアーナ"], [22, "ギルガメッシュ/アマテラス"], [23, "マハラジャ/クリシュナ"], [24, "カゲオトコ/クロトカゲ"], [25, "オルフェウス/ヴィーナス"], [26, "ソロモン/サロメ"], [33, "ワタリガラス/ディードリット"], [34, "ニャルラトホテプ/バースト"], [35, "アンナタール/フォルトゥナ"], [36, "ザナドゥ/ヨミ"], [44, "アルビオン/ラピュタ"], [45, "ゼンダ/ゴーメンガースト"], [46, "インスマウス/イース"], [55, "フウヌイム/ヤプー"], [56, "ザンス/ナルニア"], [66, "カレワラ/イーハトーブ"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_name_fa_table$50.$$arity = 1); - - Opal.def(self, '$mk_device_factory_table', $MeikyuKingdom_mk_device_factory_table$51 = function $$mk_device_factory_table() { - var $a, $b, self = this, output = nil, dice = nil; - - - output = self.$mk_item_decide_table($rb_plus(self.$rand(6), 1)); - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - output = $rb_plus($rb_plus(output, " / "), self.$mk_item_features_table(dice)); - return output; - }, $MeikyuKingdom_mk_device_factory_table$51.$$arity = 0); - - Opal.def(self, '$mk_item_decide_table', $MeikyuKingdom_mk_item_decide_table$52 = function $$mk_item_decide_table(num) { - var $$53, $$54, $$55, $$56, $$57, $$58, self = this, functionTable = nil; - - - functionTable = [[1, $send(self, 'lambda', [], ($$53 = function(){var self = $$53.$$s || this; - - return self.$mk_weapon_item_table(self.$d66(2))}, $$53.$$s = self, $$53.$$arity = 0, $$53))], [2, $send(self, 'lambda', [], ($$54 = function(){var self = $$54.$$s || this; - - return self.$mk_life_item_table(self.$d66(2))}, $$54.$$s = self, $$54.$$arity = 0, $$54))], [3, $send(self, 'lambda', [], ($$55 = function(){var self = $$55.$$s || this; - - return self.$mk_rest_item_table(self.$d66(2))}, $$55.$$s = self, $$55.$$arity = 0, $$55))], [4, $send(self, 'lambda', [], ($$56 = function(){var self = $$56.$$s || this; - - return self.$mk_search_item_table(self.$d66(2))}, $$56.$$s = self, $$56.$$arity = 0, $$56))], [5, $send(self, 'lambda', [], ($$57 = function(){var self = $$57.$$s || this; - - return self.$mk_rare_weapon_item_table(self.$d66(1))}, $$57.$$s = self, $$57.$$arity = 0, $$57))], [6, $send(self, 'lambda', [], ($$58 = function(){var self = $$58.$$s || this; - - return self.$mk_rare_item_table(self.$d66(1))}, $$58.$$s = self, $$58.$$arity = 0, $$58))]]; - return self.$get_table_by_number(num, functionTable); - }, $MeikyuKingdom_mk_item_decide_table$52.$$arity = 1); - - Opal.def(self, '$mk_weapon_item_table', $MeikyuKingdom_mk_weapon_item_table$59 = function $$mk_weapon_item_table(num) { - var self = this, table = nil; - - - table = [[11, "だんびら"], [12, "だんびら"], [13, "ダガー"], [14, "戦斧"], [15, "盾"], [16, "鑓"], [22, "籠手(だんびら)"], [23, "手裏剣"], [24, "石弓"], [25, "甲冑"], [26, "戦鎚"], [33, "大弓(だんびら)"], [34, "爆弾"], [35, "鉄砲"], [36, "大剣"], [44, "拳銃(だんびら)"], [45, "ホウキ"], [46, "徹甲弾"], [55, "だんびら"], [56, "大砲"], [66, "だんびら"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_weapon_item_table$59.$$arity = 1); - - Opal.def(self, '$mk_life_item_table', $MeikyuKingdom_mk_life_item_table$60 = function $$mk_life_item_table(num) { - var self = this, table = nil; - - - table = [[11, "バックパック"], [12, "バックパック"], [13, "鍋"], [14, "クラッカー"], [15, "がまぐち"], [16, "マント"], [22, "法衣(バックパック)"], [23, "カード"], [24, "エプロン"], [25, "住民台帳"], [26, "携帯電話"], [33, "召喚鍵(バックパック)"], [34, "肖像画"], [35, "衣装"], [36, "山吹色のお菓子"], [44, "バックパック"], [45, "眼鏡"], [46, "クレジットカード"], [55, "バックパック"], [56, "魔道書"], [66, "バックパック"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_life_item_table$60.$$arity = 1); - - Opal.def(self, '$mk_rest_item_table', $MeikyuKingdom_mk_rest_item_table$61 = function $$mk_rest_item_table(num) { - var self = this, table = nil; - - - table = [[11, "お弁当"], [12, "お弁当"], [13, "特効薬"], [14, "保存食"], [15, "担架"], [16, "珈琲"], [22, "軟膏(お弁当)"], [23, "チョコレート"], [24, "お酒"], [25, "フルコース"], [26, "ポーション"], [33, "お弁当"], [34, "救急箱"], [35, "強壮剤"], [36, "迷宮保険"], [44, "お弁当"], [45, "科学調味料"], [46, "惚れ薬"], [55, "お弁当"], [56, "復活薬"], [66, "お弁当"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_rest_item_table$61.$$arity = 1); - - Opal.def(self, '$mk_search_item_table', $MeikyuKingdom_mk_search_item_table$62 = function $$mk_search_item_table(num) { - var self = this, table = nil; - - - table = [[11, "星の欠片"], [12, "星の欠片"], [13, "旗"], [14, "お守り"], [15, "拷問具"], [16, "パワーリスト"], [22, "工具(星の欠片)"], [23, "テント"], [24, "楽器"], [25, "使い魔"], [26, "乗騎"], [33, "迷宮迷彩(星の欠片)"], [34, "罠百科"], [35, "迷宮防護服"], [36, "地図"], [44, "星の欠片"], [45, "時計"], [46, "もぐら棒"], [55, "星の欠片"], [56, "カボチャの馬車"], [66, "星の欠片"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_search_item_table$62.$$arity = 1); - - Opal.def(self, '$mk_rare_weapon_item_table', $MeikyuKingdom_mk_rare_weapon_item_table$63 = function $$mk_rare_weapon_item_table(num) { - var self = this, table = nil; - - - table = [[11, "虚弾"], [12, "怪物毒"], [13, "小鬼の襟巻"], [14, "喇叭銃"], [15, "蛍矢"], [16, "大盾"], [21, "まわし"], [22, "怪物毒"], [23, "しゃべる剣"], [24, "小麦粉"], [25, "王笏"], [26, "服従の鞭"], [31, "ぬいぐるみ"], [32, "魔杖"], [33, "怪物毒"], [34, "星衣"], [35, "聖印"], [36, "獣の毛皮"], [41, "日傘"], [42, "チェインソード"], [43, "邪眼"], [44, "怪物毒"], [45, "徒手空拳"], [46, "バカには見えない鎧"], [51, "ビキニアーマー"], [52, "輝く者"], [53, "貪る者"], [54, "滅ぼす者"], [55, "機械の体"], [56, "破城槌"], [61, "刈り取る者"], [62, "貫く者"], [63, "黄金の鶴嘴"], [64, "ムラサマ"], [65, "蒸気甲冑"], [66, "王剣"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_rare_weapon_item_table$63.$$arity = 1); - - Opal.def(self, '$mk_rare_item_table', $MeikyuKingdom_mk_rare_item_table$64 = function $$mk_rare_item_table(num) { - var self = this, table = nil; - - - table = [[11, "ブルーリボン"], [12, "聖痕"], [13, "剥製"], [14, "愚者の冠"], [15, "名刺"], [16, "種籾"], [21, "香水"], [22, "守りの指輪(名刺)"], [23, "煙玉"], [24, "悪名"], [25, "藁人形"], [26, "パワー餌"], [31, "王妃の鏡"], [32, "蓄音機"], [33, "無限の心臓(名刺)"], [34, "星籠"], [35, "水晶球"], [36, "転ばぬ先の杖"], [41, "悟りの書"], [42, "操りロープ"], [43, "盗賊の七つ道具"], [44, "携帯算術機(名刺)"], [45, "棺桶"], [46, "カメラ"], [51, "不思議なたまご"], [52, "ブーケ"], [53, "露眼鏡"], [54, "災厄王の遺物"], [55, "経験値"], [56, "鞍"], [61, "視肉"], [62, "玉璽"], [63, "衛星帯"], [64, "軍配"], [65, "聖杯"], [66, "愛"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_rare_item_table$64.$$arity = 1); - - Opal.def(self, '$mk_item_features_table', $MeikyuKingdom_mk_item_features_table$65 = function $$mk_item_features_table(num) { - var $a, $b, self = this, output = nil, dice = nil; - - - output = ""; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy($rb_le(num, 2))) { - output = $rb_plus($rb_plus("「", self.$mk_item_power_table($rb_plus(self.$rand(6), 1))), "」の神力を宿す") - } else if ($truthy($rb_le(num, 3))) { - - output = $rb_plus("寿命を持つ。寿命の値を決定する。", "\n"); - output = $rb_plus(output, $rb_plus("さらに、", self.$mk_item_features_table(dice))); - } else if ($truthy($rb_le(num, 4))) { - output = "境界障壁を持つ。《HP》の値を決定する。" - } else if ($truthy($rb_le(num, 5))) { - output = "銘を持つ。銘を決定する。" - } else if ($truthy($rb_le(num, 6))) { - output = $rb_plus($rb_plus("合成具である。もう1つの機能は「", self.$mk_item_decide_table($rb_plus(self.$rand(6), 1))), "」である。") - } else if ($truthy($rb_le(num, 7))) { - - output = $rb_plus("そのアイテムにレベルがあれば、レベルを1点上昇する。", "\n"); - output = $rb_plus(output, $rb_plus("レベルが設定されていなければ、", self.$mk_item_features_table(dice))); - } else if ($truthy($rb_le(num, 8))) { - output = $rb_plus($rb_plus("「", self.$mk_item_jyumon_table(dice)), "」の呪紋を持つ。") - } else if ($truthy($rb_le(num, 9))) { - - output = $rb_plus($rb_plus($rb_plus("「", self.$mk_item_jyuka_table($rb_plus(self.$rand(6), 1))), "」の呪禍を持つ。"), "\n"); - output = $rb_plus(output, $rb_plus("さらに、", self.$mk_item_features_table(dice))); - } else if ($truthy($rb_le(num, 10))) { - output = "高価だ。価格を設定する。" - } else if ($truthy($rb_le(num, 11))) { - - output = $rb_plus($rb_plus($rb_plus("「条件:", self.$mk_item_aptitude_table($rb_plus(self.$rand(6), 1))), "」の適性を持つ。"), "\n"); - output = $rb_plus(output, $rb_plus("さらに、", self.$mk_item_features_table(dice))); - } else { - output = $rb_plus($rb_plus("「", self.$mk_item_attribute_table($rb_plus(self.$rand(6), 1))), "」の属性を持つ。") - }; - return $rb_plus($rb_plus($rb_plus("特性[", num.$to_s()), "]:"), output); - }, $MeikyuKingdom_mk_item_features_table$65.$$arity = 1); - - Opal.def(self, '$mk_item_power_table', $MeikyuKingdom_mk_item_power_table$66 = function $$mk_item_power_table(num) { - var self = this, table = nil; - - - table = [[1, "〔才覚〕"], [2, "〔魅力〕"], [3, "〔探索〕"], [4, "〔武勇〕"], [5, "〈器〉"], [6, "〈回避値〉"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdom_mk_item_power_table$66.$$arity = 1); - - Opal.def(self, '$mk_item_jyumon_table', $MeikyuKingdom_mk_item_jyumon_table$67 = function $$mk_item_jyumon_table(num) { - var self = this, table = nil; - - - table = [[2, "モンスタースキル"], [3, "便利スキル"], [4, "芸能スキル"], [5, "迷宮スキル"], [6, "星術スキル"], [7, "一般スキル"], [8, "召喚スキル"], [9, "科学スキル"], [10, "交渉スキル"], [11, "神官のクラススキル"], [12, "ジョブスキル"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdom_mk_item_jyumon_table$67.$$arity = 1); - - Opal.def(self, '$mk_item_jyuka_table', $MeikyuKingdom_mk_item_jyuka_table$68 = function $$mk_item_jyuka_table(num) { - var self = this, table = nil; - - - table = [[1, "「呪い」のバッドステータス"], [2, "「肥満」のバッドステータス"], [3, "「愚か」のバッドステータス"], [4, "サイクルの終了時に《HP》が1点減少する"], [5, "条件を満たしても誰とも人間関係を結べない"], [6, "〈器〉が1点減少する"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdom_mk_item_jyuka_table$68.$$arity = 1); - - Opal.def(self, '$mk_item_aptitude_table', $MeikyuKingdom_mk_item_aptitude_table$69 = function $$mk_item_aptitude_table(num) { - var $$70, $$71, self = this, table = nil; - - - table = [[1, "ランダムなクラス1種"], [2, $send(self, 'lambda', [], ($$70 = function(){var self = $$70.$$s || this; - - return self.$mk_family_business_table(self.$d66(2))}, $$70.$$s = self, $$70.$$arity = 0, $$70))], [3, $send(self, 'lambda', [], ($$71 = function(){var self = $$71.$$s || this; - - return $rb_plus(self.$mk_gender_table($rb_plus(self.$rand(6), 1)), "性")}, $$71.$$s = self, $$71.$$arity = 0, $$71))], [4, "上級ジョブ"], [5, "モンスタースキルを修得"], [6, "童貞、もしくは処女"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdom_mk_item_aptitude_table$69.$$arity = 1); - - Opal.def(self, '$mk_item_attribute_table', $MeikyuKingdom_mk_item_attribute_table$72 = function $$mk_item_attribute_table(num) { - var self = this, table = nil; - - - table = [[1, "自然の力"], [2, "幻夢の力"], [3, "星炎の力"], [4, "暗黒の力"], [5, "聖なるの力"], [6, "災厄の力"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdom_mk_item_attribute_table$72.$$arity = 1); - - Opal.def(self, '$mk_gender_table', $MeikyuKingdom_mk_gender_table$73 = function $$mk_gender_table(num) { - var self = this, output = nil; - - - output = "1"; - if ($truthy(num['$odd?']())) { - output = "男" - } else { - output = "女" - }; - return output; - }, $MeikyuKingdom_mk_gender_table$73.$$arity = 1); - - Opal.def(self, '$mk_family_business_table', $MeikyuKingdom_mk_family_business_table$74 = function $$mk_family_business_table(num) { - var self = this, table = nil; - - - table = [[11, "星術師"], [12, "魔道師"], [13, "召喚師"], [14, "博士"], [15, "医者"], [16, "貴族"], [22, "宦官"], [23, "武人"], [24, "処刑人"], [25, "衛視"], [26, "商人"], [33, "迷宮職人"], [34, "亭主"], [35, "料理人"], [36, "寿ぎ屋"], [44, "働きもの"], [45, "狩人"], [46, "冒険者"], [55, "怠け者"], [56, "盗賊"], [66, "生まれ表の中から、好きなジョブ1つを選ぶ"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdom_mk_family_business_table$74.$$arity = 1); - - Opal.def(self, '$mk_random_encount1_table', $MeikyuKingdom_mk_random_encount1_table$75 = function $$mk_random_encount1_table(num) { - var self = this, table = nil; - - - table = [[1, "『守って守って突撃ゴー!』 前衛:ごんぎつね×宮廷の人数、後衛:ノコギリ猪×1"], [2, "『じわじわ削る、カボチャの舞』 前衛:焔虫×宮廷の人数、本陣:カボチャ頭×宮廷の人数の半分"], [3, "『ものすごくジャマな人たち。』 前衛:小人さん×宮廷の人数、取り替え子×宮廷の人数の半分"], [4, "『何かやってくれるかも……』 前衛:兵隊エルフ×宮廷の人数"], [5, "『【かばう】で延命しつつ【鉄の勇気】』 前衛:キンギョ×宮廷の人数、本陣:イカロス×宮廷の人数の半分"], [6, "『英雄で指示してシュシュシュシュ~~~~ト!!』 前衛:小鬼×宮廷の人数、後衛:小鬼×宮廷の人数、本陣:小鬼大砲×1、小鬼英雄×1"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_random_encount1_table$75.$$arity = 1); - - Opal.def(self, '$mk_random_encount2_table', $MeikyuKingdom_mk_random_encount2_table$76 = function $$mk_random_encount2_table(num) { - var self = this, table = nil; - - - table = [[1, "『作戦判定に負けてもOK、そして強い』 前衛:ガーゴイル×宮廷の人数"], [2, "『吸い殺せ! ドレインしまくれ!』 後衛:塚人×宮廷の人数の半分"], [3, "『ゴールデンコンビ結成。指揮と【鉄腕】+【範囲攻撃】で大暴れ』 前衛:牛頭×宮廷の人数の半分、後衛:山羊頭×宮廷の人数の半分"], [4, "『クピドは野放しにできないが、ハルキュオネは殺せない。このジレンマが……』 前衛:ハルキュオネ×宮廷の人数、後衛:ハルキュオネ×宮廷の人数、本陣:クピド×宮廷の人数の半分"], [5, "『眠りコンボ』 前衛:グレムリン×宮廷の人数、本陣:眠りの精×1"], [6, "『回避を減らしてみみずの範囲攻撃』 前衛:みみず×宮廷の人数、本陣:大喰らい×宮廷の人数の半分"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_random_encount2_table$76.$$arity = 1); - - Opal.def(self, '$mk_random_encount3_table', $MeikyuKingdom_mk_random_encount3_table$77 = function $$mk_random_encount3_table(num) { - var self = this, table = nil; - - - table = [[1, "『魅了→木霊ハメ』 後衛:淫魔×1、本陣:レーシィ×宮廷の人数"], [2, "『素早く【多勢に無勢】をしかけ……たい』 前衛:階賊×宮廷の人数、本陣:抜け忍×1"], [3, "『倒しても嬉しくない人柱をどうぞ』 前衛:人柱×宮廷の人数、本陣:恋のぼり×宮廷の人数の半分"], [4, "『位置を調整して【抱擁】してみよう』 後衛:霧妾×宮廷の人数、本陣:お化けシーツ×宮廷の人数"], [5, "『クリティカルヒットしたい(希望)』 後衛:ヴォーパルバニー×宮廷の人数、本陣:二面人×1"], [6, "『なんとか特攻したい(願望)』 前衛:穴人×宮廷の人数、ゴーレム×1"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_random_encount3_table$77.$$arity = 1); - - Opal.def(self, '$mk_random_encount4_table', $MeikyuKingdom_mk_random_encount4_table$78 = function $$mk_random_encount4_table(num) { - var self = this, table = nil; - - - table = [[1, "『増やして治す。ド外道タッグが嵐を呼ぶぜ』 前衛:闇双子×1、本陣:坊主子牛×宮廷の人数の半分"], [2, "『カリスマ的存在+平和の使者→エセNGOみたいな?』 前衛:ワリアヒラ×宮廷の人数、後衛:妖精騎士×1"], [3, "『【星戦】→攻撃、【星界】→【ベアハッグ】』 前衛:洞窟熊×宮廷の人数、本陣:星人×宮廷の人数の半分"], [4, "『さりげなく先攻を取りつつ《民》をバイドバイパー作戦』 前衛:大目玉×宮廷の人数、本陣:笛吹き男×宮廷の人数の半分"], [5, "『アンデッドチーム、がんばれ!』 前衛:墓暴き×宮廷の人数、本陣:吸血鬼×1"], [6, "『まよセレ、このゲームの代名詞(?)。こいつは欠かせない!』 後衛:マヨネーズキング・ピュアセレクト×宮廷の人数、本陣:メイクイーン×1"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_random_encount4_table$78.$$arity = 1); - - Opal.def(self, '$mk_random_encount5_table', $MeikyuKingdom_mk_random_encount5_table$79 = function $$mk_random_encount5_table(num) { - var self = this, table = nil; - - - table = [[1, "『「死ぬが良い」最終鬼畜兵器岸降臨』 前衛:暗黒騎士×1"], [2, "『割と痛い。さりげなく魔王が分裂する』 前衛:カミツキ魔王×宮廷の人数の半分、本陣:雷鳥×1"], [3, "『ハマると死ぬ。5人パーティだと3体出てザマーミロ』 前衛:ヴァララカール×宮廷の人数の半分"], [4, "『不意打ちされたらデンジャー。ひそかにワイヴァーンで先手を取る』 前衛:睨み毒蛇×宮廷の人数の半分、後衛:ワイヴァーン×1"], [5, "『ゾンビスペシャル……で、がんばりたい』 前衛:死にぞこない×宮廷の人数の半分、後衛:死にぞこない×宮廷の人数の半分、本陣:屍術師×1"], [6, "『とにかく殴れ! 単純明快パワーチーム』 前衛:鮫人×宮廷の人数、夜這い海星×1"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_random_encount5_table$79.$$arity = 1); - - Opal.def(self, '$mk_random_encount6_table', $MeikyuKingdom_mk_random_encount6_table$80 = function $$mk_random_encount6_table(num) { - var self = this, table = nil; - - - table = [[1, "『死んでください。【外皮】か【甲冑】がないと相当ヤバい』 本陣:死告天使×宮廷の人数"], [2, "『ド迫力。ブレス連発。3体出ちゃったらカーニバル』 本陣:ドラゴン×宮廷の人数の半分"], [3, "『死霊のボス。スキル次第でヤバい。GMの悪意が閃くときだ』 本陣:骨龍×1、推奨スキル【不滅の炎】、【困惑】、【ヤバチョンガー】など"], [4, "『《好意》を消して【魅了】に持ち込む』 後衛:愛染明王×宮廷の人数"], [5, "『真の狙いは【蜘蛛の群れ】』 前衛:アラクネ×宮廷の人数、本陣:蜘蛛の王×1"], [6, "『お約束。まあこいつは出るだろうみたいな』 前衛:魔蟹×1、帳魚×1"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_random_encount6_table$80.$$arity = 1); - - Opal.def(self, '$mk_pn_decide_table', $MeikyuKingdom_mk_pn_decide_table$81 = function $$mk_pn_decide_table(num) { - var $a, $b, $$82, self = this, output = nil, d1 = nil, d2 = nil; - - - output = ""; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d2 = ($a[0] == null ? nil : $a[0])), $b; - self.$debug("d1", d1); - self.$debug("d2", d2); - d1 = $rb_divide(d1, 2.0).$ceil().$to_i(); - d2 = $rb_divide(d2, 2.0).$ceil().$to_i(); - $send(num, 'times', [], ($$82 = function(_i){var self = $$82.$$s || this; - - - - if (_i == null) { - _i = nil; - }; - return (output = $rb_plus(output, $rb_plus($rb_plus($rb_plus("「", self.$mk_decoration_table(d1)), self.$mk_placename_table(d2)), "」")));}, $$82.$$s = self, $$82.$$arity = 1, $$82)); - return output; - }, $MeikyuKingdom_mk_pn_decide_table$81.$$arity = 1); - - Opal.def(self, '$mk_decoration_table', $MeikyuKingdom_mk_decoration_table$83 = function $$mk_decoration_table(num) { - var $$84, $$85, $$86, self = this, table = nil; - - - self.$debug("mk_decoration_table num", num); - table = [[1, $send(self, 'lambda', [], ($$84 = function(){var self = $$84.$$s || this; - - return self.$mk_basic_decoration_table(self.$d66(2))}, $$84.$$s = self, $$84.$$arity = 0, $$84))], [2, $send(self, 'lambda', [], ($$85 = function(){var self = $$85.$$s || this; - - return self.$mk_spooky_decoration_table(self.$d66(2))}, $$85.$$s = self, $$85.$$arity = 0, $$85))], [3, $send(self, 'lambda', [], ($$86 = function(){var self = $$86.$$s || this; - - return self.$mk_katakana_decoration_table(self.$d66(2))}, $$86.$$s = self, $$86.$$arity = 0, $$86))]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_decoration_table$83.$$arity = 1); - - Opal.def(self, '$mk_placename_table', $MeikyuKingdom_mk_placename_table$87 = function $$mk_placename_table(num) { - var $$88, $$89, $$90, self = this, table = nil; - - - table = [[1, $send(self, 'lambda', [], ($$88 = function(){var self = $$88.$$s || this; - - return self.$mk_passage_placename_table(self.$d66(2))}, $$88.$$s = self, $$88.$$arity = 0, $$88))], [2, $send(self, 'lambda', [], ($$89 = function(){var self = $$89.$$s || this; - - return self.$mk_natural_placename_table(self.$d66(2))}, $$89.$$s = self, $$89.$$arity = 0, $$89))], [3, $send(self, 'lambda', [], ($$90 = function(){var self = $$90.$$s || this; - - return self.$mk_artifact_placename_table(self.$d66(2))}, $$90.$$s = self, $$90.$$arity = 0, $$90))]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_placename_table$87.$$arity = 1); - - Opal.def(self, '$mk_basic_decoration_table', $MeikyuKingdom_mk_basic_decoration_table$91 = function $$mk_basic_decoration_table(num) { - var self = this, table = nil; - - - table = [[11, "欲望(よくぼう)"], [12, "漂流(ひょうりゅう)"], [13, "黄金(おうごん)"], [14, "火達磨(ひだるま)"], [15, "災厄(さいやく)"], [16, "三日月(みかづき)"], [22, "絡繰り(からくり)"], [23, "流星(りゅうせい)"], [24, "棘々(とげとげ)"], [25, "鏡(かがみ)"], [26, "銀鱗(ぎんりん)"], [33, "螺旋(らせん)"], [34, "七色(なないろ)"], [35, "殉教(じゅんきょう)"], [36, "水晶(すいしょう)"], [44, "氷結(ひょうけつ)"], [45, "忘却(ぼうきゃく)"], [46, "幸福(こうふく)"], [55, "妖精(ようせい)"], [56, "霧雨(きりさめ)"], [66, "夕暮れ(ゆうぐれ)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_basic_decoration_table$91.$$arity = 1); - - Opal.def(self, '$mk_spooky_decoration_table', $MeikyuKingdom_mk_spooky_decoration_table$92 = function $$mk_spooky_decoration_table(num) { - var self = this, table = nil; - - - table = [[11, "赤錆(あかさび)"], [12, "串刺し(くしざし)"], [13, "鬼蜘蛛(おにぐも)"], [14, "蠍(さそり)"], [15, "幽霊(ゆうれい)"], [16, "髑髏(どくろ)"], [22, "血溜まり(ちだまり)"], [23, "臓物(ぞうもつ)"], [24, "骸(むくろ)"], [25, "鉤爪(かぎづめ)"], [26, "犬狼(けんろう)"], [33, "奈落(ならく)"], [34, "大蛇(おろち)"], [35, "地獄(じごく)"], [36, "蚯蚓(みみず)"], [44, "退廃(たいはい)"], [45, "土竜(もぐら)"], [46, "絶望(ぜつぼう)"], [55, "夜泣き(よなき)"], [56, "緑林(りょくりん)"], [66, "どん底(どんぞこ)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_spooky_decoration_table$92.$$arity = 1); - - Opal.def(self, '$mk_katakana_decoration_table', $MeikyuKingdom_mk_katakana_decoration_table$93 = function $$mk_katakana_decoration_table(num) { - var self = this, table = nil; - - - table = [[11, "マヨネーズ"], [12, "ダイナマイト"], [13, "ドラゴン"], [14, "ボヨヨン"], [15, "モケモケ"], [16, "マヌエル"], [22, "ダイス"], [23, "ロマン"], [24, "ウクレレ"], [25, "エップカプ"], [26, "カンパネルラ"], [33, "マンチキン"], [34, "バロック"], [35, "ミサイル"], [36, "ドッキリ"], [44, "ブラック"], [45, "好きなモンスターの名前"], [46, "好きなトラップの名前"], [55, "好きな単語表で"], [56, "好きな名前決定表で"], [66, "好きな数字の組み合わせ"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_katakana_decoration_table$93.$$arity = 1); - - Opal.def(self, '$mk_passage_placename_table', $MeikyuKingdom_mk_passage_placename_table$94 = function $$mk_passage_placename_table(num) { - var self = this, table = nil; - - - table = [[11, "門(ゲート)"], [12, "回廊(コリドー)"], [13, "通り(ストリート)"], [14, "小路(アレイ)"], [15, "大路(アベニュー)"], [16, "街道(ロード)"], [22, "鉄道(ライン)"], [23, "迷宮(メイズ)"], [24, "坑道(トンネル)"], [25, "坂(スロープ)"], [26, "峠(パス)"], [33, "運河(カナル)"], [34, "水路(チャネル)"], [35, "河(ストリーム)"], [36, "堀(モート)"], [44, "溝(ダイク)"], [45, "階段(ステア)"], [46, "辻(トレイル)"], [55, "橋(ブリッジ)"], [56, "穴(ホール)"], [66, "柱廊(ストア)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_passage_placename_table$94.$$arity = 1); - - Opal.def(self, '$mk_natural_placename_table', $MeikyuKingdom_mk_natural_placename_table$95 = function $$mk_natural_placename_table(num) { - var self = this, table = nil; - - - table = [[11, "砂漠(デザート)"], [12, "丘陵(ヒル)"], [13, "海(オーシャン)"], [14, "森(フォレスト)"], [15, "沼(ポンド)"], [16, "海岸(コースト)"], [22, "密林(ジャングル)"], [23, "湖(レイク)"], [24, "山脈(マウンテンズ)"], [25, "平原(プレイン)"], [26, "ヶ原(ランド)"], [33, "荒野(ヒース)"], [34, "渓谷(ヴァレー)"], [35, "島(アイランド)"], [36, "連峰(ピークス)"], [44, "火山(ヴォルケイノ)"], [45, "湿原(ウェットランド)"], [46, "星雲(ネビュラ)"], [55, "星(スター)"], [56, "ヶ淵(プール)"], [66, "雪原(スノウズ)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_natural_placename_table$95.$$arity = 1); - - Opal.def(self, '$mk_artifact_placename_table', $MeikyuKingdom_mk_artifact_placename_table$96 = function $$mk_artifact_placename_table(num) { - var self = this, table = nil; - - - table = [[11, "城(キャッスル)"], [12, "壁(ウォール)"], [13, "砦(フォート)"], [14, "地帯(ゾーン)"], [15, "室(ルーム)"], [16, "の間(チャンバー)"], [22, "浴室(バス)"], [23, "畑(ファーム)"], [24, "館(ハウス)"], [25, "座(コンスティレィション)"], [26, "遺跡(ルイン)"], [33, "ヶ浜(ビーチ)"], [34, "塔(タワー)"], [35, "墓場(グレイブ)"], [36, "洞(ケイヴ)"], [44, "堂(バジリカ)"], [45, "野(フィールド)"], [46, "書院(スタディ)"], [55, "駅前(ステイション)"], [56, "房(クラスター)"], [66, "腐海(ケイオスシー)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_artifact_placename_table$96.$$arity = 1); - - Opal.def(self, '$mk_ls_decide_table', $MeikyuKingdom_mk_ls_decide_table$97 = function $$mk_ls_decide_table(num) { - var $$98, self = this, output = nil; - - - output = ""; - $send(num, 'times', [], ($$98 = function(_i){var self = $$98.$$s || this; - - - - if (_i == null) { - _i = nil; - }; - return (output = $rb_plus(output, $rb_plus($rb_plus("「", self.$mk_landscape_table($rb_plus(self.$rand(6), 1))), "」")));}, $$98.$$s = self, $$98.$$arity = 1, $$98)); - return output; - }, $MeikyuKingdom_mk_ls_decide_table$97.$$arity = 1); - - Opal.def(self, '$mk_landscape_table', $MeikyuKingdom_mk_landscape_table$99 = function $$mk_landscape_table(num) { - var $$100, $$101, $$102, $$103, $$104, $$105, self = this, dice = nil, table = nil; - - - dice = self.$d66(2); - table = [[1, $send(self, 'lambda', [], ($$100 = function(){var self = $$100.$$s || this; - - return self.$mk_artifact_landscape_table(dice)}, $$100.$$s = self, $$100.$$arity = 0, $$100))], [2, $send(self, 'lambda', [], ($$101 = function(){var self = $$101.$$s || this; - - return self.$mk_cave_landscape_table(dice)}, $$101.$$s = self, $$101.$$arity = 0, $$101))], [3, $send(self, 'lambda', [], ($$102 = function(){var self = $$102.$$s || this; - - return self.$mk_natural_landscape_table(dice)}, $$102.$$s = self, $$102.$$arity = 0, $$102))], [4, $send(self, 'lambda', [], ($$103 = function(){var self = $$103.$$s || this; - - return self.$mk_waterside_landscape_table(dice)}, $$103.$$s = self, $$103.$$arity = 0, $$103))], [5, $send(self, 'lambda', [], ($$104 = function(){var self = $$104.$$s || this; - - return self.$mk_skyrealm_landscape_table(dice)}, $$104.$$s = self, $$104.$$arity = 0, $$104))], [6, $send(self, 'lambda', [], ($$105 = function(){var self = $$105.$$s || this; - - return self.$mk_strange_place_landscape_table(dice)}, $$105.$$s = self, $$105.$$arity = 0, $$105))]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_landscape_table$99.$$arity = 1); - - Opal.def(self, '$mk_artifact_landscape_table', $MeikyuKingdom_mk_artifact_landscape_table$106 = function $$mk_artifact_landscape_table(num) { - var self = this, table = nil; - - - table = [[11, "石組みの部屋"], [12, "巨大な縦穴に刻まれた螺旋階段"], [13, "埃だらけの古い図書館"], [14, "古びた、素朴な祭壇"], [15, "歯車やピストンがやかましい動力室"], [16, "石組みの巨大な階段"], [22, "太い丸太で組まれた部屋"], [23, "作りかけの製品が放置された工房"], [24, "錆びた武器や骨が散らばる古戦場"], [25, "石組みのトイレ"], [26, "高い天井の厨房"], [33, "レンガで組まれた部屋"], [34, "静まりかえった劇場"], [35, "がらくたが散らばっているゴミ捨て場"], [36, "切り出し途中で放棄された巨大な石像"], [44, "壁画やタペストリーが残る大広間"], [45, "メトロ汗国の線路"], [46, "絵画や彫刻が展示してあるギャラリー"], [55, "石棺が並ぶ墓"], [56, "錆びついた扉が残る巨大な門"], [66, "放置された牢獄"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_artifact_landscape_table$106.$$arity = 1); - - Opal.def(self, '$mk_cave_landscape_table', $MeikyuKingdom_mk_cave_landscape_table$107 = function $$mk_cave_landscape_table(num) { - var self = this, table = nil; - - - table = [[11, "岩肌がむき出しの洞穴"], [12, "コウモリや羽蟲が飛び交う洞穴"], [13, "放置された坑道"], [14, "誰かのキャンプ跡"], [15, "岩だらけで見通しのきかない空洞"], [16, "煙が吹きぬける洞穴"], [22, "どこからか水音が響く鍾乳洞"], [23, "光の衰えた星がまたたく幻想的な空洞"], [24, "流砂が流れる洞穴"], [25, "生物が掘った、つるつるした洞穴"], [26, "冷えきった氷の洞穴"], [33, "巨大な岩の隙間"], [34, "動物や狩を描いた素朴な壁画が続く洞穴"], [35, "巨大な空洞にかけられた自然の橋"], [36, "埋まりかけで天井すれすれの洞穴"], [44, "奈落と断崖絶壁"], [45, "壁がうごめく蟲でおおわれた洞穴"], [46, "無数の化石が埋まっている洞穴"], [55, "熱気を放つ溶岩が流れる空洞"], [56, "水晶でできた洞穴"], [66, "骨が散らばるなにものかの住処"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_cave_landscape_table$107.$$arity = 1); - - Opal.def(self, '$mk_natural_landscape_table', $MeikyuKingdom_mk_natural_landscape_table$108 = function $$mk_natural_landscape_table(num) { - var self = this, table = nil; - - - table = [[11, "苔むした部屋"], [12, "動物の声が響き渡る密林"], [13, "つる草でできた通路"], [14, "空洞いっぱいのお花畑"], [15, "壁から木の根が突き出している部屋"], [16, "空洞に広がる耕作地"], [22, "折り重なって繁茂する森林"], [23, "垂直の空洞にえんえんと伸びる大木の幹"], [24, "空洞中に広がるアザラシの営巣地"], [25, "カビで壁がねとつく部屋"], [26, "サボテンが点在する部屋"], [33, "巨大キノコの群生地"], [34, "真ん中に大木が一本そびえ立っている空洞"], [35, "通路いっぱいに進む野生ウマトカゲの大群"], [36, "落ち葉がうずたかく積もった部屋"], [44, "植え込みで作られた迷宮庭園"], [45, "生い茂る竹林"], [46, "松ぼっくりが転がる部屋"], [55, "丈の長い草が生い茂る部屋"], [56, "枯れた森林"], [66, "大木の空洞内のような通路や部屋"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_natural_landscape_table$108.$$arity = 1); - - Opal.def(self, '$mk_waterside_landscape_table', $MeikyuKingdom_mk_waterside_landscape_table$109 = function $$mk_waterside_landscape_table(num) { - var self = this, table = nil; - - - table = [[11, "轟々と流れる川にかかった橋"], [12, "色とりどりの珊瑚の中"], [13, "腰高まで水に浸かった部屋"], [14, "澄んだ水が流れる噴水と水飲み場"], [15, "沸騰する湖"], [16, "地面が干潟化した部屋"], [22, "水をたたえた貯水池"], [23, "熱い蒸気がたちこめる部屋"], [24, "空洞に広がる沼地"], [25, "樽や鎖が放置されている船の中"], [26, "水槽が並ぶ水族館"], [33, "悪臭を放つ下水道"], [34, "底に遺跡が見える水没した空洞"], [35, "桟橋と船着き場"], [36, "筏やハシケが浮かぶ湖"], [44, "巨大な縦穴と滝"], [45, "かつて建設された上水道の中"], [46, "ペンギンの右往左往する氷結した湖"], [55, "湯気を立てる温泉"], [56, "奇怪な彫刻が施された古井戸"], [66, "壁に貝やフジツボがはりついた部屋"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_waterside_landscape_table$109.$$arity = 1); - - Opal.def(self, '$mk_skyrealm_landscape_table', $MeikyuKingdom_mk_skyrealm_landscape_table$110 = function $$mk_skyrealm_landscape_table(num) { - var self = this, table = nil; - - - table = [[11, "雨が降る部屋"], [12, "チーズにうがたれた洞穴"], [13, "中空に何層にも重なる空中庭園"], [14, "無限に連なる真っ白な洗濯物"], [15, "天空に向かって伸びる豆の木"], [16, "巨大な縦穴にぶら下がる縄ばしごや鎖"], [22, "強風の吹き荒れる部屋"], [23, "雲の上。なぜか、その上を歩くことができる"], [24, "濃霧に覆われた空洞"], [25, "無重量でふわふわ浮く部屋"], [26, "雪がしんしんと降り積もる部屋"], [33, "時空がねじ曲がった空中回廊"], [34, "怪物よけの風車が音を立てる通路"], [35, "天井に遺跡が見える空洞"], [36, "轟々と音を立てる巨大排気孔"], [44, "時折稲妻の走る部屋"], [45, "鳥の羽毛が舞い落ちる部屋"], [46, "青空が壁面いっぱいに描かれた空洞"], [55, "一面、鏡でできた部屋"], [56, "オーロラがゆらめく空洞"], [66, "重力方向がばらばらの部屋"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_skyrealm_landscape_table$110.$$arity = 1); - - Opal.def(self, '$mk_strange_place_landscape_table', $MeikyuKingdom_mk_strange_place_landscape_table$111 = function $$mk_strange_place_landscape_table(num) { - var self = this, table = nil; - - - table = [[11, "古びた六畳間"], [12, "せせこましいカラオケボックス"], [13, "時の止まった街"], [14, "ボールが一個転がっている体育館"], [15, "毛が生えている部屋"], [16, "なにかの待合室"], [22, "生物の粘液したたる体内"], [23, "ブランコやすべり台のある小公園"], [24, "安っぽいユニットバス"], [25, "上の住人がうるさい部屋"], [26, "人骨で組まれている部屋"], [33, "呼吸している部屋"], [34, "斜めに傾いた部屋"], [35, "ラブホテルの一室"], [36, "ときどきなにかが覗いていく部屋"], [44, "がやがやと話し声が聞こえる部屋"], [45, "触手が生えている部屋"], [46, "机と椅子が置いてある取調室"], [55, "静まりかえった教室"], [56, "天井に巨大な人の顔がある部屋"], [66, "常に揺れている部屋"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_strange_place_landscape_table$111.$$arity = 1); - - Opal.def(self, '$mk_kingdom_name_1_table', $MeikyuKingdom_mk_kingdom_name_1_table$112 = function $$mk_kingdom_name_1_table(num) { - var self = this, table = nil; - - - table = [[11, "暗黒"], [12, "王政"], [13, "超"], [14, "共和制"], [15, "古代"], [16, "社会主義"], [22, "自由"], [23, "新(ネオ)"], [24, "神聖(セント、聖)"], [25, "正統"], [26, "絶対主義"], [33, "大"], [34, "天階"], [35, "深階"], [36, "第三"], [44, "中央"], [45, "帝政"], [46, "統一"], [55, "独立"], [56, "東"], [66, "立憲"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_kingdom_name_1_table$112.$$arity = 1); - - Opal.def(self, '$mk_kingdom_name_2_table', $MeikyuKingdom_mk_kingdom_name_2_table$113 = function $$mk_kingdom_name_2_table(num) { - var self = this, table = nil; - - - table = [[11, "英雄"], [12, "連合"], [13, "グランドゼロ"], [14, "迷宮(ダンジョン)"], [15, "災厄"], [16, "魔神(デーモン)"], [22, "征服"], [23, "中華"], [24, "ドラゴン(龍)"], [25, "猫"], [26, "バナナ"], [33, "ファンタジー"], [34, "冒険"], [35, "魔法(マジカル)"], [36, "超人"], [44, "無敵"], [45, "路地裏"], [46, "ローマ"], [55, "(好きな単語表で決定)"], [56, "(プレイ会場の地名 例:ネリマ)"], [66, "(国王の名前。後で決定)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_kingdom_name_2_table$113.$$arity = 1); - - Opal.def(self, '$mk_kingdom_name_3_table', $MeikyuKingdom_mk_kingdom_name_3_table$114 = function $$mk_kingdom_name_3_table(num) { - var self = this, table = nil; - - - table = [[11, "王国(キングダム)"], [12, "王朝"], [13, "会社(公社)"], [14, "学園(学校)"], [15, "合衆国"], [16, "共同体"], [22, "共和国"], [23, "星"], [24, "公国"], [25, "市(街、シティ、ポリス)"], [26, "自治国"], [33, "植民地"], [34, "帝国"], [35, "同盟"], [36, "首長国"], [44, "幕府"], [45, "領"], [46, "村"], [55, "横丁(亭)"], [56, "ランド"], [66, "連邦"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_kingdom_name_3_table$114.$$arity = 1); - - Opal.def(self, '$mk_word_1_table', $MeikyuKingdom_mk_word_1_table$115 = function $$mk_word_1_table(num) { - var self = this, table = nil; - - - table = [[11, "魔法"], [12, "おめかし"], [13, "狭いところ"], [14, "夜更かし"], [15, "節約"], [16, "会議"], [22, "ヒゲ"], [23, "孤独"], [24, "自慢話"], [25, "自分探し"], [26, "異性"], [33, "ヒラヒラした服"], [34, "平穏な生活"], [35, "自分語り"], [36, "風呂"], [44, "古いもの"], [45, "頭が悪い人"], [46, "暗闇"], [55, "許嫁"], [56, "民"], [66, "バカ"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_word_1_table$115.$$arity = 1); - - Opal.def(self, '$mk_word_2_table', $MeikyuKingdom_mk_word_2_table$116 = function $$mk_word_2_table(num) { - var self = this, table = nil; - - - table = [[11, "科学"], [12, "読書"], [13, "広いところ"], [14, "早起き"], [15, "ムダ"], [16, "仕事"], [22, "ハゲ"], [23, "みんなで集まること"], [24, "ナンパ"], [25, "昔話"], [26, "同性"], [33, "武器の手入れ"], [34, "戦争"], [35, "人の噂"], [36, "散髪"], [44, "新しいもの"], [45, "頭がよい人"], [46, "光"], [55, "親"], [56, "王様"], [66, "ホラ話"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_word_2_table$116.$$arity = 1); - - Opal.def(self, '$mk_word_3_table', $MeikyuKingdom_mk_word_3_table$117 = function $$mk_word_3_table(num) { - var self = this, table = nil; - - - table = [[11, "子供"], [12, "弱い人"], [13, "処刑"], [14, "叙事詩"], [15, "煙草"], [16, "病院"], [22, "目立つこと"], [23, "酒盛り"], [24, "料理"], [25, "武芸"], [26, "田舎"], [33, "自分の国"], [34, "伝統"], [35, "セレモニー"], [36, "告げ口"], [44, "自分の声"], [45, "マヨネーズ"], [46, "おせっかい"], [55, "外国人"], [56, "迷宮"], [66, "ねこみみ"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_word_3_table$117.$$arity = 1); - - Opal.def(self, '$mk_word_4_table', $MeikyuKingdom_mk_word_4_table$118 = function $$mk_word_4_table(num) { - var self = this, table = nil; - - - table = [[11, "年寄り"], [12, "強い人"], [13, "空想"], [14, "冗談"], [15, "クスリ"], [16, "怪物"], [22, "一騎打ち"], [23, "賭け事"], [24, "歌"], [25, "勉強"], [26, "都会"], [33, "冒険"], [34, "ダイナマイト大帝"], [35, "悪事"], [36, "言い訳"], [44, "隣のキャラのジョブ"], [45, "小鬼"], [46, "謝ること"], [55, "異種族"], [56, "星"], [66, "虫"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_word_4_table$118.$$arity = 1); - - Opal.def(self, '$getAftersearchBreakTable', $MeikyuKingdom_getAftersearchBreakTable$119 = function $$getAftersearchBreakTable() { - var self = this; - - return self.$get_table_by_2d6(["「おつとめ、ご苦労様です」同行する民たちが感謝の言葉をかける。《民の声》が1点回復する。", "「おい、サボるな」と仲間から怒られた。いやいや、こっちは今までマジメにやってましたよ。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《敵意》が1点上昇する。", "大漁大漁! 色々な素材が見つかる。肉、牙、革、木、鉄の素材(キャラクターシートの上の段の素材)を1個ずつ獲得する。", "そこは、もう、使い魔が探索してくれていたようだ。サンキュー相棒! この捜索の判定に【使い魔】を利用していれば、行動済みにならず、さらにもう1回行動を行うことができる。", "危険なトラップを見つけたが、なんとか無力化できた。任務完了。自分の《気力》が1点回復する。", "何も見つからなかったか、と思っていたら「いつも、ありがとう」と宮廷の仲間から声をかけられた。まぁ、何もない方がいいか。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《好意》が1点上昇する。", "「さすが! 素晴らしいお手並みだ」鮮やかな捜索に、仲間の見る目が変わる。宮廷の中から好きなキャラクター1人を選ぶ。そのキャラクターの自分に対する《好意》が1点上昇する。", "よしよし、これはいいものが見つかった。好きな素材を1d6個獲得する。この捜索の判定に【使い魔】を使用していれば、獲得数が1d6個上昇する。", "大漁大漁! 色々な素材が見つかる。衣料、魔素、機械、火薬、情報の素材(キャラクターシートの上の段の素材)を1個ずつ獲得する。", "うわ! 罠だ。余計なものまで見つけてしまった。宮廷全員は1d6点のダメージを受ける。", "「へぇ、こんなヤツだったのか」仲間の意外な一面を見つける。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《好意》か《敵意》を1点上昇させ、その属性を好きなものに変更できる。"]) - }, $MeikyuKingdom_getAftersearchBreakTable$119.$$arity = 0); - - Opal.def(self, '$getWholeBreakTable', $MeikyuKingdom_getWholeBreakTable$120 = function $$getWholeBreakTable() { - var self = this; - - return self.$get_table_by_2d6(["部屋の中から使えそうな装備をみつくろう。宮廷全員は、それぞれ好きなコモンアイテムのカテゴリを選び、そのランダムにコモンアイテムを1つ獲得する。そのアイテムにレベルがあれば、それは1レベルのものとなる。", "みんなで今後の作戦を練る。宮廷全員は、そのターンの間、あらゆる判定の達成値が1上昇する。", "手分けして物資の調達を行う。各キャラクターは、好きな素材を1d6個獲得できる。このとき、素材が揃っていれば、各キャラクターにつき1個までアイテムを作成することができる。", "体を休めながら他愛もない世間話に花が咲く。宮廷全員は、それぞれ宮廷の中から好きなキャラクター1人を選び、そのキャラクターに対する《好意》が1点上昇する。", "宮廷メンバーで交代で見張りを行い、疲労した配下たちを休ませる。《民の声》が宮廷の人数と同じ値だけ回復する。", "一行はしっかりと休息を取り、鋭気を養う。宮廷全員の《気力》が1点回復する。", "配下たちと一緒に体を休める。《民の声》が1d6点回復する。", "配下たちに見張りを任せ、体を休める。宮廷全員の《HP》がすべて回復する。", "緊急ミーティング! 国家運営に関してみんなで知恵を出し合う。《予算》を[宮廷の人数*1]MG獲得する。", "負傷した配下たちの治療を行う。宮廷全員の《配下》が1d6人回復する。", "宮廷の前に光り輝くアイテムが降臨する。レア武具アイテムかレア一般アイテムのどちらかを選ぶ。ランダムにそのアイテムを1つ選び、それを獲得する。"]) - }, $MeikyuKingdom_getWholeBreakTable$120.$$arity = 0); - return (Opal.def(self, '$getLoversBreakTable', $MeikyuKingdom_getLoversBreakTable$121 = function $$getLoversBreakTable() { - var self = this, table = nil, value = nil; - - - table = [[11, "「あーもう、最悪!」仲良く休憩するつもりが、ひどい喧嘩になってしまう。この表の使用者のお互いに対する《好意》が0になり、その値の分だけお互いに対する《敵意》が上昇する。"], [12, "「何もかもがお前が悪かったのかッ!!」大きな誤解が生まれる。受け身キャラの攻め気キャラ以外に対する《敵意》がすべて0になり、その値の分だけ攻め気キャラに対する《敵意》が上昇する。"], [13, "「でさぁ、あの人のことなんだけど……」せっかく2人きりなのに、他人の話で盛り上がる。この表の使用者は、宮廷の中からこの表の使用者以外のキャラクター1人を選び、そのキャラクターに対する《好意》が1点上昇する。"], [14, "「へぇ、そんなのあるんだ」互いの好きなものについて語り合う。受け身キャラは、攻め気キャラの「好きなもの」1つを選ぶ。受け身キャラは、自分の「好きなもの」1つをそれに変更し、攻め気キャラへの《好意》が1点上昇する。"], [15, "「なぁ、オレのことどう思う?」思い切った質問! 受け身キャラは、攻め気キャラに対する《好意》か《敵意》を1点上昇させ、その属性を好きなものに変更できる。"], [16, "「だいじょうぶ? 無茶するんだから」少し前の失敗について色々と言われてしまう。ありがたいんだけど、少しムカつく。受け身キャラは、攻め気キャラに対する《好意》と《敵意》が1点ずつ上昇する。"], [22, "「え、もうこんな時間!?」一休みするつもりが、気がつくとかなり時間がたっている。宮廷の未行動キャラクターが全員行動済みになったら、通常の時間の経過に加え、さらに1クォーターが経過する。この表の使用者のお互いに対する《好意》が1点上昇する。また、宮廷のこの表の使用者2人に対する《敵意》が1点上昇する。"], [23, "「ねぇねぇ、これわかる?」何気ない質問だが、これは難しい。変な答えは出来ないぞ。攻め気キャラは、〔才覚〕で難易度9の判定を行う。成功すると、この表の使用者のお互いに対する《好意》が1点上昇する。失敗すると、なんとか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《敵意》が1点上昇する。"], [24, "「おいおい、まずは落ち着け」配下同士が喧嘩を始めた。うまく仲裁しないと……。攻め気キャラは、〔魅力〕で難易度9の判定を行う。成功すると、この表の使用者のお互いに対する《好意》が1点上昇する。失敗すると、なんとか危機を切り抜けることができるが、受け身キャラの攻め気キャラに帯する《敵意》が1点上昇する。"], [25, "「オレが解除するからちょっと待ってろ」2人で休憩するつもりが、一緒にトラップにひっかかってしまった。互いの体が密着してしまう。攻め気キャラは、〔探索〕で難易度9の判定を行う。成功すると、この表の使用者のお互いに対する《好意》が1点上昇する。失敗すると、なんとか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《敵意》が1点上昇する。"], [26, "「お前は後ろに下がってろ!」休憩中に怪物に襲われる。攻め気キャラは、〔武勇〕で難易度9の判定を行う。成功すると、この表の使用者のお互いに対する《好意》が1点上昇する。失敗すると、なんとか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《敵意》が1点上昇する。"], [33, "「なぁ、さっきは悪かったな」誤解が解ける。この表の使用者のお互いに対する《敵意》が0になり、その値のぶんだけお互いに対する《好意》が上昇する。"], [34, "「これを言ったのはあなただけです。誰にも言わないでくださいね」受け身キャラが隠している夢や秘密を攻め気キャラが知ってしまう。受け身キャラの攻め気キャラに対する《好意》が1点上昇する。攻め気キャラの受け身キャラに対する《好意》の属性が「忠誠」に変わる。"], [35, "「これからも、よろしく頼むぜ。相棒」攻め気キャラが快活に微笑む。受け身キャラの攻め気キャラに対する《好意》が1点上昇する。攻め気キャラの受け身キャラに対する《好意》の属性が「友情」に変わる。"], [36, "「わ、わたしは、あなたのことが……」受け身キャラの思わぬ告白! 受け身キャラの攻め気キャラに対する《好意》が1点上昇する。攻め気キャラの受け身キャラに対する《好意》の属性が「愛情」に変わる。"], [44, "「大丈夫? 痛くないか?」互いに傷を治療しあう。この表の使用者は、お互いの自分に対する《好意》の分だけ、自分の《HP》を回復することができる。どちらかが《HP》が1点以上回復したら、この表の使用者のお互いに対する《好意》が1点上昇する。"], [45, "「この冒険が終わったら、伝えたいことが……あるんだ」攻め気キャラの真剣な言葉。え、それって……? 受け身キャラの攻め気キャラに対する《好意》が1点上昇する。エピローグに攻め気キャラが生きていれば、この表の使用者のお互いに対する《好意》が2点上昇する。ただし、以後このゲームの間、攻め気キャラが「致命傷表」を使用することになった場合、余分に1個サイコロを振り、その中からもっとも低い目2つを選んで、その結果を適用する。"], [46, "「蝕ッ!? ……って、どこ触ってるんですかッ!?」あたりが不意に暗くなり、思わず変なところを触ってしまう。攻め気キャラの受け身キャラに対する《好意》が2点上昇し、受け身キャラの攻め気キャラに対する《敵意》が2点上昇する。この表の使用者が持っている【星の欠片】1個を破壊すれば、このイベントをなかったことにできる。"], [55, "「これ、はんぶんこしない?」2人仲良く、アイテムを分け合う。この表の使用者が、使用するとなくなる回復アイテムを持っていれば、それを1個使用出来る。ただし、その効果の大賞は、この表を使用した2人に変更される。この表の使用者のお互いに対する《好意》が1点上昇する。"], [56, "「え? え? えぇぇぇぇッ!?」ふとした拍子に唇がふれあう。受け身キャラの攻め気キャラ以外に対する《好意》がすべて0になり、その値のぶんだけ攻め気キャラに対する《好意》が上昇する。"], [66, "「…………」気がつくとお互い、目をそらせなくなってしまう。そのまま顔を寄せ合い……。この表の使用者のお互いに対する《好意》が2点上昇し、その属性を「愛情」にする。"]]; - value = self.$d66(2); - return [self.$get_table_by_number(value, table), value]; - }, $MeikyuKingdom_getLoversBreakTable$121.$$arity = 0), nil) && 'getLoversBreakTable'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/MeikyuKingdomBasic.js b/src/assets/dicebot/MeikyuKingdomBasic.js deleted file mode 100644 index 430fa77c5..000000000 --- a/src/assets/dicebot/MeikyuKingdomBasic.js +++ /dev/null @@ -1,2213 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/MeikyuKingdom"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$debug', '$gsub', '$last_match', '$mayokin_check', '$==', '$get2D6Result', '$+', '$getKiryokuResult', '$<=', '$>=', '$get2D6ResultOnlySuccess', '$count', '$sort', '$reject', '$to_i', '$pop', '$-', '$match', '$[]', '$eval', '$new', '$roll', '$&', '$sortType', '$map', '$split', '$to_proc', '$>', '$<', '$to_s', '$sendMode', '$=~', '$!=', '$comparison_operator', '$check_result', '$===', '$d66', '$mk_name_a_table', '$mk_name_b_table', '$mk_name_ex_table', '$mk_name_fa_table', '$getCount', '$times', '$mk_name_table', '$mk_pn_decide_table', '$mk_ls_decide_table', '$mk_device_factory_table', '$mk_life_research_table', '$mk_order_research_table', '$mk_calture_research_table', '$mk_army_research_table', '$mk_festival_table', '$mk_talent_break_table', '$mk_charm_break_table', '$mk_search_break_table', '$mk_valor_break_table', '$mk_festival_break_table', '$mk_talent_happening_table', '$mk_charm_happening_table', '$mk_search_happening_table', '$mk_valor_happening_table', '$mk_market_price_table', '$mk_treasure1_table', '$mk_treasure2_table', '$mk_treasure3_table', '$mk_treasure4_table', '$mk_treasure5_table', '$mk_rare_weapon_item_table', '$mk_rare_item_table', '$mk_weapon_item_table', '$mk_life_item_table', '$mk_rest_item_table', '$mk_search_item_table', '$mk_item_features_table', '$mk_item_decide_table', '$mk_random_encount1_table', '$mk_random_encount2_table', '$mk_random_encount3_table', '$mk_random_encount4_table', '$mk_random_encount5_table', '$mk_random_encount6_table', '$mk_kingdom_disaster_table', '$mk_kingdom_change_table', '$mk_kingdom_mischange_table', '$mk_critical_attack_table', '$mk_fatal_wounds_table', '$mk_combat_fumble_table', '$mk_travel_table', '$mk_negotiation_table', '$mk_emotion_table', '$mk_kingdom_name_1_table', '$mk_kingdom_name_2_table', '$mk_kingdom_name_3_table', '$mk_word_1_table', '$mk_word_2_table', '$mk_word_3_table', '$mk_word_4_table', '$getAftersearchBreakTable', '$getWholeBreakTable', '$getLoversBreakTable', '$empty?', '$get_table_by_2d6', '$get_table_by_1d3', '$get_table_by_1d6', '$rand', '$mk_nick_a_table', '$mk_nick_b_table', '$get_table_by_number', '$lambda', '$mk_item_power_table', '$mk_item_jyumon_table', '$mk_item_jyuka_table', '$mk_item_aptitude_table', '$mk_item_attribute_table', '$mk_family_business_table', '$mk_gender_table', '$odd?', '$ceil', '$/', '$mk_decoration_table', '$mk_placename_table', '$mk_basic_decoration_table', '$mk_spooky_decoration_table', '$mk_katakana_decoration_table', '$mk_passage_placename_table', '$mk_natural_placename_table', '$mk_artifact_placename_table', '$mk_landscape_table', '$mk_artifact_landscape_table', '$mk_cave_landscape_table', '$mk_natural_landscape_table', '$mk_waterside_landscape_table', '$mk_skyrealm_landscape_table', '$mk_strange_place_landscape_table']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'MeikyuKingdom'); - - var $nesting = [self].concat($parent_nesting), $MeikyuKingdom_initialize$1, $MeikyuKingdom_changeText$2, $MeikyuKingdom_dice_command_xRn$5, $MeikyuKingdom_check_nD6$6, $MeikyuKingdom_get2D6Result$7, $MeikyuKingdom_get2D6ResultOnlySuccess$8, $MeikyuKingdom_getKiryokuResult$9, $MeikyuKingdom_mayokin_check$11, $MeikyuKingdom_rollDiceCommand$12, $MeikyuKingdom_getCount$14, $MeikyuKingdom_mk_life_research_table$15, $MeikyuKingdom_mk_order_research_table$16, $MeikyuKingdom_mk_calture_research_table$17, $MeikyuKingdom_mk_army_research_table$18, $MeikyuKingdom_mk_talent_break_table$19, $MeikyuKingdom_mk_charm_break_table$20, $MeikyuKingdom_mk_search_break_table$21, $MeikyuKingdom_mk_valor_break_table$22, $MeikyuKingdom_mk_festival_break_table$23, $MeikyuKingdom_mk_festival_table$24, $MeikyuKingdom_mk_kingdom_disaster_table$25, $MeikyuKingdom_mk_talent_happening_table$26, $MeikyuKingdom_mk_charm_happening_table$27, $MeikyuKingdom_mk_search_happening_table$28, $MeikyuKingdom_mk_valor_happening_table$29, $MeikyuKingdom_mk_kingdom_change_table$30, $MeikyuKingdom_mk_kingdom_mischange_table$31, $MeikyuKingdom_mk_critical_attack_table$32, $MeikyuKingdom_mk_fatal_wounds_table$33, $MeikyuKingdom_mk_travel_table$34, $MeikyuKingdom_mk_negotiation_table$35, $MeikyuKingdom_mk_combat_fumble_table$36, $MeikyuKingdom_mk_emotion_table$37, $MeikyuKingdom_mk_market_price_table$38, $MeikyuKingdom_mk_treasure1_table$39, $MeikyuKingdom_mk_treasure2_table$40, $MeikyuKingdom_mk_treasure3_table$41, $MeikyuKingdom_mk_treasure4_table$42, $MeikyuKingdom_mk_treasure5_table$43, $MeikyuKingdom_mk_name_table$44, $MeikyuKingdom_mk_nick_a_table$45, $MeikyuKingdom_mk_nick_b_table$46, $MeikyuKingdom_mk_name_a_table$47, $MeikyuKingdom_mk_name_b_table$48, $MeikyuKingdom_mk_name_ex_table$49, $MeikyuKingdom_mk_name_fa_table$50, $MeikyuKingdom_mk_device_factory_table$51, $MeikyuKingdom_mk_item_decide_table$52, $MeikyuKingdom_mk_weapon_item_table$59, $MeikyuKingdom_mk_life_item_table$60, $MeikyuKingdom_mk_rest_item_table$61, $MeikyuKingdom_mk_search_item_table$62, $MeikyuKingdom_mk_rare_weapon_item_table$63, $MeikyuKingdom_mk_rare_item_table$64, $MeikyuKingdom_mk_item_features_table$65, $MeikyuKingdom_mk_item_power_table$66, $MeikyuKingdom_mk_item_jyumon_table$67, $MeikyuKingdom_mk_item_jyuka_table$68, $MeikyuKingdom_mk_item_aptitude_table$69, $MeikyuKingdom_mk_item_attribute_table$72, $MeikyuKingdom_mk_gender_table$73, $MeikyuKingdom_mk_family_business_table$74, $MeikyuKingdom_mk_random_encount1_table$75, $MeikyuKingdom_mk_random_encount2_table$76, $MeikyuKingdom_mk_random_encount3_table$77, $MeikyuKingdom_mk_random_encount4_table$78, $MeikyuKingdom_mk_random_encount5_table$79, $MeikyuKingdom_mk_random_encount6_table$80, $MeikyuKingdom_mk_pn_decide_table$81, $MeikyuKingdom_mk_decoration_table$83, $MeikyuKingdom_mk_placename_table$87, $MeikyuKingdom_mk_basic_decoration_table$91, $MeikyuKingdom_mk_spooky_decoration_table$92, $MeikyuKingdom_mk_katakana_decoration_table$93, $MeikyuKingdom_mk_passage_placename_table$94, $MeikyuKingdom_mk_natural_placename_table$95, $MeikyuKingdom_mk_artifact_placename_table$96, $MeikyuKingdom_mk_ls_decide_table$97, $MeikyuKingdom_mk_landscape_table$99, $MeikyuKingdom_mk_artifact_landscape_table$106, $MeikyuKingdom_mk_cave_landscape_table$107, $MeikyuKingdom_mk_natural_landscape_table$108, $MeikyuKingdom_mk_waterside_landscape_table$109, $MeikyuKingdom_mk_skyrealm_landscape_table$110, $MeikyuKingdom_mk_strange_place_landscape_table$111, $MeikyuKingdom_mk_kingdom_name_1_table$112, $MeikyuKingdom_mk_kingdom_name_2_table$113, $MeikyuKingdom_mk_kingdom_name_3_table$114, $MeikyuKingdom_mk_word_1_table$115, $MeikyuKingdom_mk_word_2_table$116, $MeikyuKingdom_mk_word_3_table$117, $MeikyuKingdom_mk_word_4_table$118, $MeikyuKingdom_getAftersearchBreakTable$119, $MeikyuKingdom_getWholeBreakTable$120, $MeikyuKingdom_getLoversBreakTable$121; - - - Opal.const_set($nesting[0], 'ID', "MeikyuKingdom"); - Opal.const_set($nesting[0], 'NAME', "迷宮キングダム"); - Opal.const_set($nesting[0], 'SORT_KEY', "めいきゆうきんくたむ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 (nMK+m)\n" + " n個のD6を振って大きい物二つだけみて達成値を算出します。修正mも可能です。\n" + " 絶対成功と絶対失敗も自動判定します。\n" + "・各種表\n" + " ・散策表(〜RT):生活散策表 LRT/治安散策表 ORT/文化散策表 CRT/軍事散策表 ART/お祭り表 FRT\n" + " ・休憩表(〜BT):才覚休憩表 TBT/魅力休憩表 CBT/探索休憩表 SBT/武勇休憩表 VBT/お祭り休憩表 FBT/捜索後休憩表 ABT/全体休憩表 WBT/カップル休憩表 LBT\n" + " ・ハプニング表(〜HT):才覚ハプニング表 THT/魅力ハプニング表 CHT/探索ハプニング表 SHT\n" + "  /武勇ハプニング表 VHT\n" + " ・王国災厄表 KDT/王国変動表 KCT/王国変動失敗表 KMT\n" + " ・王国名決定表1/2/3/4/5 KNT1/KNT2/KNT3/KNT4\n" + " ・痛打表 CAT/致命傷表 FWT/戦闘ファンブル表 CFT\n" + " ・道中表 TT/交渉表 NT/感情表 ET/相場表 MPT\n" + " ・お宝表1/2/3/4/5 T1T/T2T/T3T/T4T/T5T\n" + " ・名前表 NAMEx (xは個数)\n" + " ・名前表A NAMEA/名前表B NAMEB/エキゾチック名前表 NAMEEX/ファンタジック名前表 NAMEFA\n" + " ・アイテム関連(猟奇戦役不使用の場合をカッコ書きで出力)\n" + "  ・デバイスファクトリー  DFT\n" + "  ・アイテムカテゴリ決定表 IDT\n" + "  ・アイテム表(〜IT):武具 WIT/生活 LIT/回復 RIT/探索 SIT/レア武具 RWIT/レア一般 RUIT\n" + "  ・アイテム特性決定表   IFT\n" + " ・ランダムエンカウント表 nRET (nはレベル,1〜6)\n" + " ・地名決定表    PNTx (xは個数)\n" + " ・迷宮風景表    MLTx (xは個数)\n" + " ・単語表1/2/3/4 WORD1/WORD2/WORD3/WORD4\n" + "・D66ダイスあり\n"); - self.$setPrefixes(["\\d+MK", "LRT", "ORT", "CRT", "ART", "FRT", "TBT", "CBT", "SBT", "VBT", "FBT", "ABT", "WBT", "LBT", "THT", "CHT", "SHT", "VHT", "KDT", "KCT", "KMT", "CAT", "FWT", "CFT", "TT", "NT", "ET", "MPT", "T1T", "T2T", "T3T", "T4T", "T5T", "NAME.*", "DFT", "IDT\\d*", "WIT", "LIT", "RIT", "SIT", "RWIT", "RUIT", "IFT", "\\d+RET", "PNT\\d*", "MLT\\d*", "KNT\\d+", "WORD\\d+"]); - - Opal.def(self, '$initialize', $MeikyuKingdom_initialize$1 = function $$initialize() { - var $iter = $MeikyuKingdom_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $MeikyuKingdom_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $MeikyuKingdom_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $MeikyuKingdom_initialize$1.$$arity = 0); - - Opal.def(self, '$changeText', $MeikyuKingdom_changeText$2 = function $$changeText(string) { - var $$3, $$4, self = this; - - - self.$debug("changeText before string", string); - string = $send(string, 'gsub', [/(\d+)MK6/i], ($$3 = function(){var self = $$3.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6"}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - string = $send(string, 'gsub', [/(\d+)MK/i], ($$4 = function(){var self = $$4.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6"}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - self.$debug("changeText after string", string); - return string; - }, $MeikyuKingdom_changeText$2.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $MeikyuKingdom_dice_command_xRn$5 = function $$dice_command_xRn(string, nick_e) { - var self = this; - - return self.$mayokin_check(string, nick_e) - }, $MeikyuKingdom_dice_command_xRn$5.$$arity = 2); - - Opal.def(self, '$check_nD6', $MeikyuKingdom_check_nD6$6 = function $$check_nD6(total, dice_total, dice_list, cmp_op, target) { - var self = this, result = nil; - - - if (target['$==']("?")) { - return ""}; - result = self.$get2D6Result(total, dice_total, cmp_op, target); - result = $rb_plus(result, self.$getKiryokuResult(total, dice_list, target)); - return result; - }, $MeikyuKingdom_check_nD6$6.$$arity = 5); - Opal.alias(self, "check_2D6", "check_nD6"); - - Opal.def(self, '$get2D6Result', $MeikyuKingdom_get2D6Result$7 = function $$get2D6Result(total_n, dice_n, signOfInequality, diff) { - var self = this; - - - if (signOfInequality['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_n, 2))) { - return " > 絶対失敗" - } else if ($truthy($rb_ge(dice_n, 12))) { - return " > 絶対成功" - } else { - return self.$get2D6ResultOnlySuccess(total_n, diff) - }; - }, $MeikyuKingdom_get2D6Result$7.$$arity = 4); - - Opal.def(self, '$get2D6ResultOnlySuccess', $MeikyuKingdom_get2D6ResultOnlySuccess$8 = function $$get2D6ResultOnlySuccess(total_n, diff) { - var self = this; - - if ($truthy($rb_ge(total_n, diff))) { - return " > 成功" - } else { - return " > 失敗" - } - }, $MeikyuKingdom_get2D6ResultOnlySuccess$8.$$arity = 2); - - Opal.def(self, '$getKiryokuResult', $MeikyuKingdom_getKiryokuResult$9 = function $$getKiryokuResult(total_n, dice_list, diff) { - var $$10, self = this, num_6 = nil, none6_list = nil, maxDice1 = nil, maxDice2 = nil, none6Total_n = nil, none6Dice_n = nil, none6DiceReuslt = nil; - - - num_6 = dice_list.$count(6); - if (num_6['$=='](0)) { - return "" - } else if ($truthy($rb_ge(num_6, 2))) { - return "" + " & 《気力》" + (num_6) + "点獲得"}; - none6_list = $send(dice_list, 'reject', [], ($$10 = function(i){var self = $$10.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](6);}, $$10.$$s = self, $$10.$$arity = 1, $$10)).$sort(); - maxDice1 = none6_list.$pop().$to_i(); - maxDice2 = none6_list.$pop().$to_i(); - self.$debug("maxDice1", maxDice1); - self.$debug("maxDice2", maxDice2); - self.$debug("total_n", total_n); - none6Total_n = $rb_plus($rb_minus(total_n, 6), maxDice2); - self.$debug("none6Total_n", none6Total_n); - none6Dice_n = $rb_plus(maxDice1, maxDice2); - self.$debug("none6Dice_n", none6Dice_n); - self.$debug("diff", diff); - none6DiceReuslt = self.$get2D6ResultOnlySuccess(none6Total_n, diff); - return "" + " (もしくは) " + (none6Total_n) + (none6DiceReuslt) + " & 《気力》1点獲得"; - }, $MeikyuKingdom_getKiryokuResult$9.$$arity = 3); - - Opal.def(self, '$mayokin_check', $MeikyuKingdom_mayokin_check$11 = function $$mayokin_check(string, nick_e) { - var $a, $b, self = this, output = nil, m = nil, diceCount = nil, modifyText = nil, signOfInequality = nil, diff = nil, bonus = nil, dice_now = nil, dice_str = nil, total_n = nil, _ = nil, dice_list = nil, dice1 = nil, dice2 = nil, cmp_op = nil; - - - self.$debug("mayokin_check string", string); - output = "1"; - m = /^S?((\d+)R6([\+\-\d]*)(([>=]+)(\d+))?)/i.$match(string); - if ($truthy(m)) { - } else { - return "1" - }; - string = m['$[]'](1); - diceCount = m['$[]'](2).$to_i(); - modifyText = m['$[]'](3); - signOfInequality = ($truthy($a = m['$[]'](5)) ? $a : ""); - diff = m['$[]'](6).$to_i(); - bonus = (function() {if ($truthy(modifyText)) { - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(modifyText) - } else { - return 0 - }; return nil; })(); - dice_now = 0; - dice_str = ""; - total_n = 0; - $b = self.$roll(diceCount, 6, self.$sortType()['$&'](1)), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - dice_list = $send(dice_str.$split(","), 'map', [], "to_i".$to_proc()); - dice1 = (function() {if ($truthy($rb_ge(diceCount, 2))) { - return dice_list['$[]']($rb_minus(diceCount, 2)) - } else { - return 0 - }; return nil; })(); - dice2 = (function() {if ($truthy($rb_ge(diceCount, 1))) { - return dice_list['$[]']($rb_minus(diceCount, 1)) - } else { - return 0 - }; return nil; })(); - dice_now = $rb_plus(dice1, dice2); - self.$debug("dice1, dice2, dice_now", dice1, dice2, dice_now); - total_n = $rb_plus(dice_now, bonus); - dice_str = "" + "[" + (dice_str) + "]"; - output = "" + (dice_now) + (dice_str); - if ($truthy($rb_gt(bonus, 0))) { - output = $rb_plus(output, "" + "+" + (bonus)) - } else if ($truthy($rb_lt(bonus, 0))) { - output = $rb_plus(output, bonus.$to_s())}; - if ($truthy($rb_gt(self.$sendMode(), 0))) { - if ($truthy(output['$=~'](/[^\d\[\]]+/))) { - output = "" + (nick_e) + ": (" + (string) + ") > " + (output) + " > " + (total_n) - } else { - output = "" + (nick_e) + ": (" + (string) + ") > " + (total_n) - } - } else { - output = "" + (nick_e) + ": (" + (string) + ") > " + (total_n) - }; - if ($truthy(signOfInequality['$!='](""))) { - - cmp_op = $$($nesting, 'Normalize').$comparison_operator(signOfInequality); - output = $rb_plus(output, self.$check_result(total_n, dice_now, dice_list, 6, cmp_op, diff));}; - return output; - }, $MeikyuKingdom_mayokin_check$11.$$arity = 2); - - Opal.def(self, '$rollDiceCommand', $MeikyuKingdom_rollDiceCommand$12 = function $$rollDiceCommand(command) { - var $$13, $a, $b, self = this, output = nil, type = nil, total_n = nil, $case = nil, count = nil, names = nil; - - - output = ""; - type = ""; - total_n = ""; - $case = command; - if (/^NAMEA/i['$===']($case)) { - self.$debug("namea passed"); - type = "名前A"; - total_n = self.$d66(2); - output = self.$mk_name_a_table(total_n);} - else if (/^NAMEB/i['$===']($case)) { - type = "名前B"; - total_n = self.$d66(2); - output = self.$mk_name_b_table(total_n);} - else if (/^NAMEEX/i['$===']($case)) { - type = "エキゾチック名前"; - total_n = self.$d66(2); - output = self.$mk_name_ex_table(total_n);} - else if (/^NAMEFA/i['$===']($case)) { - type = "ファンタジック名前"; - total_n = self.$d66(2); - output = self.$mk_name_fa_table(total_n);} - else if (/^NAME(\d*)/i['$===']($case)) { - type = "名前"; - count = self.$getCount($$($nesting, 'Regexp').$last_match(1)); - names = ""; - $send(count, 'times', [], ($$13 = function(_i){var self = $$13.$$s || this, $a, $b, name = nil, dice = nil; - - - - if (_i == null) { - _i = nil; - }; - $b = self.$mk_name_table(), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (dice = ($a[1] == null ? nil : $a[1])), $b; - return (names = $rb_plus(names, "" + "[" + (dice) + "]" + (name) + " "));}, $$13.$$s = self, $$13.$$arity = 1, $$13)); - output = names; - total_n = count;} - else if (/^PNT(\d*)/i['$===']($case)) { - type = "地名"; - count = self.$getCount($$($nesting, 'Regexp').$last_match(1)); - output = self.$mk_pn_decide_table(count); - total_n = count;} - else if (/^MLT(\d*)/i['$===']($case)) { - type = "地名"; - count = self.$getCount($$($nesting, 'Regexp').$last_match(1)); - output = self.$mk_ls_decide_table(count); - total_n = count;} - else if (/^DFT/i['$===']($case)) { - type = "デバイスファクトリー"; - output = self.$mk_device_factory_table(); - total_n = 1;} - else if (/^LRT/i['$===']($case)) { - type = "生活散策"; - $b = self.$mk_life_research_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^ORT/i['$===']($case)) { - type = "治安散策"; - $b = self.$mk_order_research_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^CRT/i['$===']($case)) { - type = "文化散策"; - $b = self.$mk_calture_research_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^ART/i['$===']($case)) { - type = "軍事散策"; - $b = self.$mk_army_research_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^FRT/i['$===']($case)) { - type = "お祭り"; - $b = self.$mk_festival_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^TBT/i['$===']($case)) { - type = "才覚休憩"; - $b = self.$mk_talent_break_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^CBT/i['$===']($case)) { - type = "魅力休憩"; - $b = self.$mk_charm_break_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^SBT/i['$===']($case)) { - type = "探索休憩"; - $b = self.$mk_search_break_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^VBT/i['$===']($case)) { - type = "武勇休憩"; - $b = self.$mk_valor_break_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^FBT/i['$===']($case)) { - type = "お祭り休憩"; - $b = self.$mk_festival_break_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^THT/i['$===']($case)) { - type = "才覚ハプニング"; - $b = self.$mk_talent_happening_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^CHT/i['$===']($case)) { - type = "魅力ハプニング"; - $b = self.$mk_charm_happening_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^SHT/i['$===']($case)) { - type = "探索ハプニング"; - $b = self.$mk_search_happening_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^VHT/i['$===']($case)) { - type = "武勇ハプニング"; - $b = self.$mk_valor_happening_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^MPT/i['$===']($case)) { - type = "相場"; - $b = self.$mk_market_price_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^T1T/i['$===']($case)) { - type = "お宝1"; - $b = self.$mk_treasure1_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^T2T/i['$===']($case)) { - type = "お宝2"; - $b = self.$mk_treasure2_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^T3T/i['$===']($case)) { - type = "お宝3"; - $b = self.$mk_treasure3_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^T4T/i['$===']($case)) { - type = "お宝4"; - $b = self.$mk_treasure4_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^T5T/i['$===']($case)) { - type = "お宝5"; - $b = self.$mk_treasure5_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^RWIT/i['$===']($case)) { - type = "レア武具アイテム"; - total_n = self.$d66(1); - output = self.$mk_rare_weapon_item_table(total_n);} - else if (/^RUIT/i['$===']($case)) { - type = "レア一般アイテム"; - total_n = self.$d66(1); - output = self.$mk_rare_item_table(total_n);} - else if (/^WIT/i['$===']($case)) { - type = "武具アイテム"; - total_n = self.$d66(2); - output = self.$mk_weapon_item_table(total_n);} - else if (/^LIT/i['$===']($case)) { - type = "生活アイテム"; - total_n = self.$d66(2); - output = self.$mk_life_item_table(total_n);} - else if (/^RIT/i['$===']($case)) { - type = "回復アイテム"; - total_n = self.$d66(2); - output = self.$mk_rest_item_table(total_n);} - else if (/^SIT/i['$===']($case)) { - type = "探索アイテム"; - total_n = self.$d66(2); - output = self.$mk_search_item_table(total_n);} - else if (/^IFT/i['$===']($case)) { - type = "アイテム特性"; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_item_features_table(total_n);} - else if (/^IDT/i['$===']($case)) { - type = "アイテムカテゴリ決定"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_item_decide_table(total_n);} - else if (/^1RET/i['$===']($case)) { - type = "1Lvランダムエンカウント"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_random_encount1_table(total_n);} - else if (/^2RET/i['$===']($case)) { - type = "2Lvランダムエンカウント"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_random_encount2_table(total_n);} - else if (/^3RET/i['$===']($case)) { - type = "3Lvランダムエンカウント"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_random_encount3_table(total_n);} - else if (/^4RET/i['$===']($case)) { - type = "4Lvランダムエンカウント"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_random_encount4_table(total_n);} - else if (/^5RET/i['$===']($case)) { - type = "5Lvランダムエンカウント"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_random_encount5_table(total_n);} - else if (/^6RET/i['$===']($case)) { - type = "6Lvランダムエンカウント"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_random_encount6_table(total_n);} - else if (/^KDT/i['$===']($case)) { - type = "王国災厄"; - $b = self.$mk_kingdom_disaster_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^KCT/i['$===']($case)) { - type = "王国変動"; - $b = self.$mk_kingdom_change_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^KMT/i['$===']($case)) { - type = "王国変動失敗"; - $b = self.$mk_kingdom_mischange_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^CAT/i['$===']($case)) { - type = "痛打"; - $b = self.$mk_critical_attack_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^FWT/i['$===']($case)) { - type = "致命傷"; - $b = self.$mk_fatal_wounds_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^CFT/i['$===']($case)) { - type = "戦闘ファンブル"; - $b = self.$mk_combat_fumble_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^TT/i['$===']($case)) { - type = "道中"; - $b = self.$mk_travel_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^NT/i['$===']($case)) { - type = "交渉"; - $b = self.$mk_negotiation_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^ET/i['$===']($case)) { - type = "感情"; - $b = self.$mk_emotion_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^KNT(\d+)/i['$===']($case)) { - type = "王国名"; - count = self.$getCount($$($nesting, 'Regexp').$last_match(1)); - total_n = self.$d66(2); - $case = count; - if ((1)['$===']($case)) {output = self.$mk_kingdom_name_1_table(total_n)} - else if ((2)['$===']($case)) {output = self.$mk_kingdom_name_2_table(total_n)} - else if ((3)['$===']($case)) {output = self.$mk_kingdom_name_3_table(total_n)};} - else if (/^WORD(\d+)/i['$===']($case)) { - type = "単語"; - count = self.$getCount($$($nesting, 'Regexp').$last_match(1)); - total_n = self.$d66(2); - $case = count; - if ((1)['$===']($case)) {output = self.$mk_word_1_table(total_n)} - else if ((2)['$===']($case)) {output = self.$mk_word_2_table(total_n)} - else if ((3)['$===']($case)) {output = self.$mk_word_3_table(total_n)} - else if ((4)['$===']($case)) {output = self.$mk_word_4_table(total_n)};} - else if (/^ABT/i['$===']($case)) { - type = "捜索後休憩"; - $b = self.$getAftersearchBreakTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^WBT/i['$===']($case)) { - type = "全体休憩"; - $b = self.$getWholeBreakTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^LBT/i['$===']($case)) { - type = "カップル休憩"; - $b = self.$getLoversBreakTable(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else {return nil}; - if ($truthy(output['$!=']("1"))) { - return (output = "" + (type) + "表(" + (total_n) + ") > " + (output)) - } else { - return nil - }; - }, $MeikyuKingdom_rollDiceCommand$12.$$arity = 1); - - Opal.def(self, '$getCount', $MeikyuKingdom_getCount$14 = function $$getCount(countText) { - var self = this; - - - if ($truthy(countText['$empty?']())) { - return 1}; - return countText.$to_i(); - }, $MeikyuKingdom_getCount$14.$$arity = 1); - - Opal.def(self, '$mk_life_research_table', $MeikyuKingdom_mk_life_research_table$15 = function $$mk_life_research_table() { - var self = this; - - return self.$get_table_by_2d6(["ハグルマ資本主義神聖共和国から使者が現れる。受け入れる場合[生活レベル/9]に成功すると(1d6)MG獲得。この判定の難易度は、ハグルマとの関係が険悪なら+2、敵対なら+4される。使者を受け入れない場合、ハグルマとの関係が1段階悪化する。すでに関係が敵対なら、領土1つを失う", "王国の活気にやる気がでる。《気力》+1、もう一度王国フェイズに行動できる", "この国の評判を聞いて、旅人がやってくる。このゲームのシナリオの目的を果たしたら、終了フェイズに《民》+(2d6)人", "旅の商人に出会い、昨今の相場を聞く。(2d6)を振り、メモしておく。終了フェイズの収支報告のタイミングに、2d6を振る代わりにその目が出たことにして相場を決定する", "主婦たちの井戸端会議によると、生活用品が不足しているらしい。ゲーム中に「革」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「革」を獲得出来ないと、維持費+1MG", "食料に対する不安を漏らす民の姿を見かける。ゲーム中に「肉」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「肉」を獲得出来ないと、維持費+1MG", "散策の途中、様々な施設が老朽化しているのを発見する。ゲーム中に「木」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「木」を獲得出来ないと、維持費+1MG", "お腹の大きくなった女性が、無事戻ったら赤子の名付け親になって欲しいと言う。このゲームのシナリオの目的を果たしたら、終了フェイズに《民》+(2d6)人", "王国内で民とともに汗を流す。[生活レベル/9]の判定に成功すると、(生産施設の数×1)MGを獲得する", "「これ、便利だと思うんですけど」 [生活レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の生活アイテム1個を1Lvで獲得できる", "突然王国に旅人が訪れ、王国の食料庫が乏しくなってくる。[生活レベル/11]に成功すると、他国から補給を呼んで《民》+(2d6)人。失敗すると《民》-(2d6)人"]) - }, $MeikyuKingdom_mk_life_research_table$15.$$arity = 0); - - Opal.def(self, '$mk_order_research_table', $MeikyuKingdom_mk_order_research_table$16 = function $$mk_order_research_table() { - var self = this; - - return self.$get_table_by_2d6(["メトロ汗国から使者が現れる。受け入れる場合、[治安レベル/9]に成功すると《民》+(2d6)人。失敗すると《民》-(2d6)人。この判定の難易度は、汗国との関係が険悪なら+2、敵対なら+4される。使者を受け入れない場合、汗国との関係が1段階悪化する。すでに関係が敵対なら、領土1つを失う", "「つまらないものですが、これを冒険に役立ててください……」相場表でランダムに素材1種を選び、それを(1d6)個獲得する", "民たちが自分らで、王国を守る相談をしている。この気0無のシナリオの目的を果たしたら、好きなレベルのある施設1軒を選び、その隣の部屋に同じ施設1軒を建設する", "毎日の散歩の成果が出て、体の調子が良い。このゲーム中、《HP》の最大値+5し、《HP》5点回復する", "王国の民たちが、ランドメイカーの留守を守る人間が少ないことを心配している。ゲーム中に逸材1人を獲得するたびに《民の声》+1。終了フェイズまでに1人も逸材を獲得出来ないと、維持費+1MG", "王国周辺の迷宮化が進んでいる。対迷宮化結界を強化せねば…。ゲーム中に「魔素」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「魔素」を獲得出来ないと、維持費+1MG", "王国内の施設の稼働率が下がっている。整備が必要そうだ。ゲーム中に「機械」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「機械」を獲得出来ないと、維持費+1MG", "周辺諸国の噂を聞く。王国シートの既知の土地欄の中から、関係が同盟・良好・中立の他国があれば、ランダムに国1つを選ぶ、相場表でランダムに素材1種類を選ぶ。その国の相場はその素材となる", "王国の平和な光景を見て、手応えを感じる。[治安レベル/9」の判定に成功すると、[公共施設の数×1]MGを獲得する", "「迷宮のごかごがありますように……」 [治安レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の探索アイテム1個を1Lvで獲得できる", "王国の中で不満分子たちがなにやら不穏な話をしているのを耳にする。[治安レベル/11]の判定に成功すると、あなたは留守中の準備をしておくことができる。そのゲーム中、一度だけ王国災厄表の結果を無効にすることができる。失敗すると、ランダムに施設1軒を選び、それが破壊される"]) - }, $MeikyuKingdom_mk_order_research_table$16.$$arity = 0); - - Opal.def(self, '$mk_calture_research_table', $MeikyuKingdom_mk_calture_research_table$17 = function $$mk_calture_research_table() { - var self = this; - - return self.$get_table_by_2d6(["千年王朝から使者が現れる。受け入れる場合、[文化レベル/9]に成功すると《民の声》+(1d6)、失敗するとすると《民の声》-(1d6)。この判定の難易度は、千年王朝との関係が険悪なら+2、敵対なら+4される。使者を受け入れない場合、千年王朝との関係が1段階悪化する。すでに関係が敵対なら、領土1つを失う", "民が祭りの準備を進めている。シナリオの目的を果たしていれば、収支報告の時に[収支報告時の《民の声》-ゲーム開始時の《民の声》]MGを獲得できる。ただし、数値がマイナスになった場合は、その分維持費が上昇する", "都会に出て行った幼馴染から手紙がくる。王国の様子を知りたがっているようだ。シナリオの目的を果たしたら、終了フェイズにランダムなジョブの逸材1人を獲得する", "他のランドおメイカーの噂を聞く。宮廷から好きなキャラクター1人を選び、そのキャラクターに対する《好意》+1", "若者たちの有志が、街を発展させるため諸外国のことを勉強したいと言い出した。ゲーム中に「情報」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「情報」を獲得出来ないと、維持費+1MG", "若い娘たちが、流行の衣装について楽しそうに話している。ゲーム中に「衣料」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「衣料」を獲得出来ないと、維持費+1MG", "民たちが、君のうわさ話をしている。ゲーム中にあなたにたいして「恋人」「忠義」「親友」の人間関係が成立するたびに《民の声》+2。終了フェイズの収支報告までに1回も人間関係が成立できないと、維持費+1MG", "あなたに熱い視線が注がれているのを感じる。宮廷から好きなキャラクター1人を選び、そのキャラクターの自分に対する《好意》+1", "王国内を訪れる旅人たちを見かける。[文化レベル/9]の判定に成功すると、[憩いの施設の数×1]MGを獲得する", "「ご無事をお祈りしております……」 [文化レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の回復アイテム1個を1Lvで獲得できる", "王国の中の民たちの表情に制裁がない。暗い迷宮生活に倦んでいるようだ。[文化レベル/11]の判定に成功すると民を盛り上げる祭りを開き、《民の声》+(1d6)。失敗すると維持費+(1d6)"]) - }, $MeikyuKingdom_mk_calture_research_table$17.$$arity = 0); - - Opal.def(self, '$mk_army_research_table', $MeikyuKingdom_mk_army_research_table$18 = function $$mk_army_research_table() { - var self = this; - - return self.$get_table_by_2d6(["ダイナマイト帝国から使者が現れる。受け入れる場合、[軍事レベル/9]に成功すると(1d6)MG獲得、失敗すると維持費+(1d6)MG。この判定の難易度は、ダイナマイトとの関係が険悪なら+2、敵対なら+4される。使者を受け入れない場合、ダイナマイトとの関係が1段階悪化する。すでに関係が敵対なら、領土1つを失う", "長老から迷宮の昔話を聞く。このゲーム中、自分のレベル以下のモンスターを倒すと、そのモンスターをモンスターの《民》にすることができる。この効果は、そのゲーム中に1度だけ使用できる", "冒険に向かう君に期待の声がかかる。民たちの期待に、気持ちが引き締まる。このゲーム中、《器》が1点上昇する", "くだらないことで口論になる。宮廷の中から1人を選び、互いに対する《敵意》+1", "兵士たちの訓練の様子を見るが、武装がやや乏しい。ゲーム中に「牙」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「牙」を獲得出来ないと、維持費+1MG", "旅人から隣国が軍備を拡張していると言う噂を聞く。ゲーム中に「鉄」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「鉄」を獲得出来ないと、維持費+1MG", "近隣で凶悪なモンスターたちが大量発生していると言う。ゲーム中に「火薬」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「火薬」を獲得出来ないと、維持費+1MG", "周辺諸国で戦争が勃発する。王国シートの既知の土地欄から2つの国を選び、両国間で戦争を行う。それぞれ「領土数+(1d6)」が戦力。大きい方が勝利して領土1つを獲得し、負けた方の国は領土を1つ失う。どちらかに援軍を送ることができる。[軍事レベル/9+戦う相手の領土数]の判定に成功すると戦力+(1d6)。勝敗に関係なく援軍を送った国との関係が1段階友好になり、戦った相手の国との関係が1段階悪化する", "隣国からの貢物が届く。[軍事レベル/11]の判定に成功すると、収支報告の時に価格の()内の数字が[領土の数×1]以下のレアアイテム1個を獲得する", "「こんなものを用意してみました」 [軍事レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の武具アイテム1個を1Lvで獲得できる", "あなたが他の出発を察知して、何者かが国を襲う![軍事レベル/11]の判定に成功するとあなたが他の武勇に歓声が上がり宮廷全員の気力+(1d6)。失敗すると、宮廷全員の《HP》と《配下》が(1d6)減少する"]) - }, $MeikyuKingdom_mk_army_research_table$18.$$arity = 0); - - Opal.def(self, '$mk_talent_break_table', $MeikyuKingdom_mk_talent_break_table$19 = function $$mk_talent_break_table() { - var self = this; - - return self.$get_table_by_2d6(["民との会話の中、経費節約のアイデアが沸く。[才覚/11]の判定に成功すると、維持費が(1d6)MG減少する", "嫌いなものが出てくる夢を見て心寂しくなったところに仲間が来てくれる。好きな宮廷内のキャラクター1人への《好意》+1", "好きなものの夢を見る。シチュエーションを表現し、幸せそうだと感じるプレイヤーが居たら《気力》+2", "国に残した家族を心配する民を励ます。[才覚/11]の判定に成功すると、《民の声》+2", "あらん限りの声を力を込めて檄を飛ばす。[才覚/9]の判定に成功すると、宮廷全員のあなたに対する《好意》の合計だけ、《民の声》が回復する", "休憩中も休み無く働いていると、配下がお茶を入れてくれる。《民の声》+1", "今後の冒険について口角泡を飛ばして議論する。好きな宮廷内のキャラクター1人を選び、そのキャラの自分に対する《敵意》を好きなだけ上昇させる。上昇した《敵意》と等しい値だけ《民の声》が回復する", "たまには料理をしようと思い立つ。【お弁当】か【フルコース】の効果を使用して、食事を取ることが出来る。使用した場合、(1d6)を振る。奇数が出たら料理は美味だった、《民の声》+1。偶数が出たら料理は非道い味になった、宮廷全員のあなたに対する《敵意》+1", "年若い配下に冒険譚をせがまれる。[才覚/現在の《民の声》の値+3]の判定に成功すると、《民の声》+(1d6)。失敗すると次の1クォーター行動できない", "迷宮に囚われた人々を見つける。助けたいが、食料がやや心配だ。[才覚/9]の判定に成功すると、自分の《配下》+(1d6)", "この迷宮は一筋縄ではいかないようだ。今こそ、用意していたアレが役に立つだろう。自分の習得しているスキル1種を未修得にし、同じスキルグループのスキル1種を修得してもよい。この効果は永続する。"]) - }, $MeikyuKingdom_mk_talent_break_table$19.$$arity = 0); - - Opal.def(self, '$mk_charm_break_table', $MeikyuKingdom_mk_charm_break_table$20 = function $$mk_charm_break_table() { - var self = this; - - return self.$get_table_by_2d6(["妖精のワイン倉を発見し、酒盛りが始まる。宮廷全員の《気力》+1。[魅力/9]の判定に失敗すると、あなたは脱ぎ出す。(1d6)を振り、奇数なら宮廷全員のあなたに対する《好意》+1、偶数なら《敵意》+1", "休憩中、意外な寝言を言ってしまう。自分を除く宮廷全員は自分に対する《好意》と《敵意》を入れ替えることが出来る。また、その属性を自由に変更することができる", "床の冷たさから、ぬくもりを求めて身体を寄せ合う。あなたに《好意》を持っているキャラの数だけ《気力》と《HP》が回復する", "こっそり二人で抜け出して良い雰囲気に。その部屋の中に、好きなものが同じキャラが居ればそのキャラ1体を選び、互いに対する《好意》+1", "星の灯りがあなたの顔をロマンチックに照らし出す。その部屋にいる好きなキャラ1体を選び、[魅力/そのキャラのあなたに対する《好意》+9]の判定に成功すると、そのキャラのあなたに対する《好意》+1", "あいつと目が合う。[魅力/9]の判定に成功したら、宮廷内からランダムに1体選び、そのキャラから自分への《好意》か、または自分のそのキャラへの《好意》いづれかが+1される", "うたた寝をしていると誰かが毛布を掛けてくれた。ランダムにキャラを選び、自分のそのキャラへの《好意》+1", "たき火を囲みながら会話を楽しむ。GMの左隣にいるプレイヤーから順番に、自分のPCが《好意》を持っているキャラ1体を選ぶ。選ばれたキャラは《気力》+1。誰からも選ばれなかったキャラは《気力》-1、ランダムに選んだ宮廷内のキャラへの《敵意》+1", "着替えを覗かれる。宮廷内からランダムに1体選び、(1d6)を振る。奇数なら大声をだしてしまい宮廷全員のそのキャラに対する《敵意》+1、偶数ならそのキャラとあなたの互いの《好意》+1", "食べ物の匂いにつられたモンスターと遭遇する。ランダムエンカウント表でモンスターを決定する。[魅力/モンスターの中で最も高いレベル+3]の判定に成功した場合、そのモンスターたちと取引できる。失敗した場合戦闘に突入する", "ふとした拍子に唇が触れあう。好きなキャラ1体を選ぶ。そのキャラの自分以外への《好意》の合計を全て自分に対する《好意》に加える。その後、自分以外への《好意》を0にする"]) - }, $MeikyuKingdom_mk_charm_break_table$20.$$arity = 0); - - Opal.def(self, '$mk_search_break_table', $MeikyuKingdom_mk_search_break_table$21 = function $$mk_search_break_table() { - var self = this; - - return self.$get_table_by_2d6(["一休みの前に道具の手入れ。ランダムに自分のアイテムスロット1つを選ぶ。そのスロットにレベルがあるアイテムがあった場合、そのアイテムのレベルが1上がる", "寝床を探していたらアルコープの奥の宝箱を見つける。[探索/11]の判定に成功したら好きな素材1種類を(1d6)個手に入れる", "一眠りしたら夢の中で…。[探索/11]の判定に成功したら、好きな部屋のモンスターの名前とトラップの数をGMから教えてもらえる", "配下が眠りにつき、静寂が訪れると隣の部屋から妙な物音が聞こえてきた。隣接する好きな部屋を選ぶ。[探索/10]の判定に成功すると、その部屋にモンスターがいるかどうか、いる場合はモンスターの種類と数が分かる", "一休みしようと持ったら、モンスターの墓場を発見した。好きな素材を1種類えらび、宮廷全員のあなたにたいする《好意》の合計に等しい個数だけその素材を入手する", "この部屋はなぜか落ち着く。もしもその部屋の中にあなたの好きなものがあれば《気力》を(1d6)点回復することができる", "壁に書かれた奇妙な壁画が、あなたを見つめている気がする…。[探索/9]の判定に成功したら、【エレベータ】を発見する", "白骨化した先客の死体が見つかる。使えそうな装備はありがたく頂戴しておこう。[探索/11]の判定に成功したら、コモンアイテムのカテゴリの中から好きなものを1つ選び、そのカテゴリのアイテムをランダムで1個手に入れる", "星の灯りで地図を眺める…部屋の構造からして、この辺りに何かありそうだ。[探索/10]の判定に成功すると、この部屋に仕掛けられたイベント型のトラップを全て発見する", "休んでいる間にトイレにいきたくなった。[探索/11]の判定に成功すると、迷宮のほころびを見つける。このゲームの間、この部屋から迷宮の外へ帰還することができる", "こ、これは秘密の扉?[探索/11]の判定に成功すると、この部屋に隣接する好きな部屋に通路を延ばすことができる"]) - }, $MeikyuKingdom_mk_search_break_table$21.$$arity = 0); - - Opal.def(self, '$mk_valor_break_table', $MeikyuKingdom_mk_valor_break_table$22 = function $$mk_valor_break_table() { - var self = this; - - return self.$get_table_by_2d6(["時が満ちるにつれ、闘志が高まる。現在の経過ターン数と等しい数だけ《気力》が回復する", "もっと敵と戦いたい、血に飢えた自分を発見する。[武勇/11]の判定に成功すると《気力》が1点、《HP》が(1d6)点回復する", "部屋の片隅にうち捨てられた亡骸を発見する。このマップの支配者の名前が分かっていれば、宮廷全員は支配者への《敵意》を1点上昇させることができる", "部屋の隅に隠れていた怪物が襲いかかってきた。[武勇/10]の判定に成功すると怪物を追い払い《民の声》+1。失敗すると自分の《配下》-(1d6)、《民の声》-1", "あいつの短剣がきみの横をかすめて毒蛇を追い払う。好きなキャラ1体を選び、そのキャラに対する《敵意》の分だけ《好意》を上昇させ、その後《敵意》を0にする", "実力を付けてきたアイツへとドス黒い気持ちがわき上がる。好きなキャラ1体を選び、そのキャラへの《敵意》+1", "ちょっとした行き違いから軽い口論になる。宮廷内からランダムにキャラ1体を選び、そのキャラとあなたの互いへの《敵意》+1", "ライバルの活躍が気になる。宮廷全員の中で、最も高いあなたに対する《敵意》の値と同じ数だけ《気力》を獲得する", "休むべきときにしっかり休む。《HP》を(2d6)点回復することができる", "怪物のいた痕跡を発見する。[武勇/11]の判定を行い、成功するとGMからこのゲームで遭遇する予定の、まだ種類の分かっていないモンスターを1種類教えてもらえる", "殺気に反応し飛び起きた!ランダムエンカウント表でモンスターを決定し戦闘を行う。そのモンスターを倒した後、ランダムにレアアイテム1個を手に入れる"]) - }, $MeikyuKingdom_mk_valor_break_table$22.$$arity = 0); - - Opal.def(self, '$mk_festival_break_table', $MeikyuKingdom_mk_festival_break_table$23 = function $$mk_festival_break_table() { - var self = this; - - return self.$get_table_by_2d6(["お祭りに向かう旅人たちとすれ違う。1D6MGが手に入る【宿屋】か【夜店】があれば、さらにもう1D6MGが手に入る", "なんでこんなときに、ダンジョンに行かなきゃいけないんだ! 「あ、電報でーす」このマップの支配者から、お祭りによせて祝辞の電報がやってくる。そうか、おまえのせいかッ!! マップの支配者の名前が分かり、そのキャラクターへの《敵意》が1D6点上がる", "「そういえば、国のみんなが何かいってたなぁ……」回想シーン。好きな散策表を1つ選び、2D6を振る。表に照らし合わせた結果を処理する", "あー。早く帰って、お祭りを楽しみたーい! この時点でキャンプを終了し、すぐに次の部屋へ移動すれば、このクォーターは、時間の経過が起こらない", "どこからか美味しそうな匂いが漂ってくる。「あ、うまそう」死んだふりをしていた民が起き上がる。今回の冒険で消費していた《配下》が1D6人回復する", "雰囲気がいつもと違うせいかな。なんかあの人がステキに見える。好きなキャラクター1人を選ぶ。そのキャラクターへの《好意》を1点上げる", "あ、こんなところにまで屋台が! あてくじ屋さんだ。1MG減らして、好きなアイテムカテゴリを選び、さらにそのカテゴリの中からランダムにアイテム1個を選ぶ。そのアイテムをもらえる(レアアイテムは飾ってあるが、絶対当たらない)", "お祭りを目指す交易商人と出会う。「あ、王様。これから王国行くんすよ」宮廷の持つ好きな素材を何個でも、同じ数の別の素材と交換してくれる", "せっかくお祭りなんだし、肩肘はってないで、ノリノリでGO!! このゲーム中は食事をするたびに《民の声》が1点回復する", "「あ、この歌は……」祭囃子がキミの封印されていたモンスターにまつわる過去の記憶を呼び戻す。好きなモンスター1種類を選ぶ。そのモンスター全般への《敵意》が1点上がる", "みんなのワクワクがアイテムに乗り移った? ランダムに自分のアイテムスロット1つを選ぶ。そこにレベルのあるアイテムがあった場合、そのレベルが1上がる"]) - }, $MeikyuKingdom_mk_festival_break_table$23.$$arity = 0); - - Opal.def(self, '$mk_festival_table', $MeikyuKingdom_mk_festival_table$24 = function $$mk_festival_table() { - var self = this; - - return self.$get_table_by_2d6(["祈願祭。国や重要人物の無病息災を祈ったり、戦いの勝利などを祈る祭り。災害や飢饉、流行り病が起こった付近で行われる。シナリオの目的をクリアしていれば、《民》が1D6人上昇する", "血祭り。戦いに向け、士気を向上させる祭り。戦争だけでなく、迷宮探索に向けて行われることも多い。生贄の血を軍神に捧げたりする。このゲームの間、戦闘に勝利すると《民の声》を1点獲得し、逃走すると《民の声》が1点失われる", "記念日。建国記念日や領土獲得などの記念日のお祝い。簡単につくることができるが、気がつくと記念日だらけで、何の記念だったかを忘れてしまう。ほどほどに。このゲームの間、行為判定の目で3でも絶対失敗、11でも絶対成功になる(「呪い」のバッドステータスを受けたものは4でも絶対失敗、【必殺】を使った命中判定なら10でも絶対成功)", "星祭。季節のお祭り。冬至や夏至などの祭りや、七夕、お花見、雪祭りなどが含まれる。季節感の少ない迷宮では、殊更にその風情を楽しもうとやたら盛り上がる。宮廷全員、好きなキャラクター1人を選び、そのキャラクターに対する《好意》を1点上げる", "民衆の宴。民が自発的に開くお祭り、イベント。アキハバラ電気祭りに餃子祭り、コミックマーケットなど、文化や地域の活性化と結びつくものが多い。このゲームの間、好きな施設1つを選んで、その施設の施設レベルを1上げる", "誕生日。ランドメイカーや逸材、国の重要人物の誕生日。聖誕祭や花祭りなど、国教の聖人などを祝う国も多い。現王の誕生日を「父の日」、后の誕生日を「母の日」とする国も多い。そのゲームの間、ケーキやおにぎり、缶ジュースなど、1人分が明確な食べ物を食べきったとき、自分のPCが《気力》1点を獲得する", "冠婚葬祭。国の重要人物の元服(成人)、婚礼、葬儀、祖先の慰霊などの儀式。格式の高い王国では、もっとも重要な祭礼である。このゲームの間、国力を使った判定の達成値を1上昇させる", "感謝祭。豊漁や豊作などがあったときに自然(迷宮)や精霊、信仰対象など、偉大なるものへの感謝を捧げるお祭り。獲物の毛の一部を切りとって迷宮に感謝する毛祭りや瀬祭り、豊饒を祝う新嘗祭などがある。終了フェイズに「木」や「革」、「肉」のいずれかを1つ消費すると、王国変動表の結果を±1の範囲でずらすことができる", "鬼祭り。お正月に旧年の悪を正す修正会、豆をまいて福を呼び込む追儺の儀式、怪物に仮装した子供たちが夜の王国をねり歩くハロウィーンなど、悪魔や悪霊を払うお祭り。モンスター除けに行われる。このゲームの間、ランダムエンカウントの戦闘後に使用するお宝表が1段階、高いレベルのものを使用する", "舞踏会。最高の音楽と芸術的な食事、そしてとびきりの衣装で臨む社交界の華。身分や素性を隠してパートナーを探す仮面舞踏会も人気は高い。ちなみに仮面舞踏会では、女性の側から男性をダンスに誘うのが礼儀だぞ。宮廷全員、ランダムにキャラクター1人を選び、そのキャラクターに対する《好意》を1点上げる", "競技会。国をあげて、スポーツや芸術、ゲームなど、さまざまなジャンルの一番を決めるお祭り、大会。オリンピックや料理勝負、歌合戦などがある。ランダムに能力値1つを選び、宮廷全員で難易度15の判定を行う。このとき成功した中で、もっとも達成値が高かったキャラクターは、シナリオ終了後、終了フェイズの探索会議で決定されるキャラクターとは別に、勲章を得る"]) - }, $MeikyuKingdom_mk_festival_table$24.$$arity = 0); - - Opal.def(self, '$mk_kingdom_disaster_table', $MeikyuKingdom_mk_kingdom_disaster_table$25 = function $$mk_kingdom_disaster_table() { - var self = this; - - return self.$get_table_by_2d6(["王国の悪い噂が蔓延する。既知の土地にある他国との関係が全て1段階悪化する", "自国のモンスターが凶暴化する。自国のモンスターの《民》からランダムに1種類選び、そのレベルと等しいだけ《民》が減少する。その後、その種類のモンスターの《民》は全ていなくなる", "疫病が大流行する。《民》-(2d6)", "自国の迷宮化が進行する。自国の領土のマップ数と等しい値だけ維持費が上昇する", "敵国のテロが横行する。[治安レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、ランダムに施設を1軒失う", "敵国襲来![軍事レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、ランダムに自国の領土を1つ失う", "敵国の陰謀。[文化レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、ランダムに逸材を1人失う", "食糧危機。《民》-(2d6)。王国にある「肉」の素材を1個消費する度に、《民》の減少を1人抑えることができる", "住民の不満が爆発する。[生活レベル/敵対国数×2+険悪国数+9]の判定に失敗すると《民の声》-1", "局地的な迷宮津波が発生。ランダムに自国の領土1つを選び、既知の土地の中からランダムに選んだ場所と場所を入れ替える", "敵国の勢力が強大化する。GMは、関係が敵対の国全てについて、その国の領土に接する土地を1つ選び、その土地をその国の領土にする"]) - }, $MeikyuKingdom_mk_kingdom_disaster_table$25.$$arity = 0); - - Opal.def(self, '$mk_talent_happening_table', $MeikyuKingdom_mk_talent_happening_table$26 = function $$mk_talent_happening_table() { - var self = this; - - return self.$get_table_by_2d6(["自分に王国を導くことなどできるのだろうか…。【お酒】を消費することができなければ、このゲーム中[才覚]-1", "国王の威信が問われる。(2d6)を振り、その値が[《民の声》+宮廷全員の国王に対する《好意》の合計]以上の場合、《民の声》-(1d6)し、さらに才覚ハプニング表を振る", "思考に霧の帳が降りる。「散漫」のバッドステータスを受ける", "重大な裏切りを犯してしまう。あなたに対する《好意》が最も高いキャラを1人選ぶ。そのキャラに対する《好意》の分だけそのキャラへの《敵意》を上昇させ、その後《好意》を0にする", "この人についていっていいのだろうか…?宮廷全員のあなたに対する《好意》-1(最低0)。その結果、誰かの《好意》が0になると《民の声》-1", "宮廷のスキャンダルが暴露される。宮廷全員のあなたに対する《敵意》のうち最も高いものと同じだけ《民の声》が減少する", "あなたの失策が噂になる。近隣の国の中からランダムで1つ選ぶ。その国との関係が1段階悪化する", "王国の経済に破綻の危機が。[生活レベル/9+現在の経過ターン数]の判定に失敗すると維持費+(1d6)MG", "この区画一体の迷宮化が激しくなる。1クォーターが経過する", "逸材の賃上げ要求が始まる。終了フェイズの予算会議の時、[今回使用した逸材の数×1]MGだけ維持費が上昇する", "今の自分に自信が持てなくなる。生まれ表からランダムにジョブを1つ選び、現在のジョブをそのジョブに変更する"]) - }, $MeikyuKingdom_mk_talent_happening_table$26.$$arity = 0); - - Opal.def(self, '$mk_charm_happening_table', $MeikyuKingdom_mk_charm_happening_table$27 = function $$mk_charm_happening_table() { - var self = this; - - return self.$get_table_by_2d6(["民同士の諍いに心を痛め、頭髪にもダメージが!【お酒】を消費することができなければ、このゲーム中[魅力]-1", "何気ない一言が不和の種に…。好きなキャラ1人を選び、宮廷全員のそのキャラに対する《敵意》+1", "あなたの美しさに嫉妬した迷宮が、あなたの姿を変える。「呪い」のバッドステータスを受ける", "かわいさ余って憎さ百倍。あなたに対する《好意》が最も高いキャラを1人選ぶ。そのキャラに対する《好意》の分だけそのキャラへの《敵意》を上昇させ、その後《好意》を0にする", "あなたを巡って不穏な空気が。宮廷全員のあなたに対する「愛情」の《好意》を比べ、高い順に2人選ぶ。その2人の互いに対する《敵意》+1", "いがみ合う宮廷を見て民の士気が減少する。宮廷全員のあなたに対する《敵意》の中で最も高い値と同じだけ《配下》が減少する", "宮廷に嫉妬の嵐が巻き起こる。宮廷の中で、あなたに対して愛情を持つキャラクターの数を数える。このゲームの間、行為判定を行うとき、ダイス目の合計がこの値以下なら絶対失敗となる(最低2)", "愛想を尽かされる。宮廷全員のあなたに対する《好意》-1(最低0)", "あなたの指揮に疑問の声が。[魅力/自分の《配下》の数]の判定に失敗すると[難易度-達成値]人だけ《配下》が減少する", "あなたの恋人だという異性が現れる。宮廷全員のあなたに対する《好意》を比べ、最も高いキャラ1人を選ぶ。あなたはそのキャラの[武勇]と同じだけ《HP》を減少させる", "他人が信用できなくなる。このゲームの間、協調行動を行えなくなり、人間関係のルールも使用できなくなる"]) - }, $MeikyuKingdom_mk_charm_happening_table$27.$$arity = 0); - - Opal.def(self, '$mk_search_happening_table', $MeikyuKingdom_mk_search_happening_table$28 = function $$mk_search_happening_table() { - var self = this; - - return self.$get_table_by_2d6(["指の震えが止まらない。【お酒】を消費することができなければ、このゲーム中[探索]-1", "流れ星に直撃。《HP》-(1d6)", "敵の過去を知り、同情してしまう。あなたのこのマップの支配者に対する《好意》+1。このゲームの間、《好意》を持ったキャラに対して攻撃を行い、絶対失敗した場合そのキャラへの《好意》と同じだけ《気力》が減少する", "昨日の友は今日の敵。あなたに対する《好意》が最も高いキャラを1人選ぶ。そのキャラに対する《好意》の分だけそのキャラへの《敵意》を上昇させ、その後《好意》を0にする", "うっかりアイテムを落として壊す。ランダムにアイテムスロットを1つ選び、そこにアイテムが入っていればそれを全て破壊する", "カーネルが活性化しトラップが強化される。このゲームの間、トラップを解除するための難易度+1", "友情にヒビが!宮廷全員のあなたに対する《好意》-1(最低0)、《敵意》+1", "敵の迷宮化攻撃!宮廷全員は[探索/11]を行い、失敗したキャラは(2d6)点のダメージを受ける", "つい出来心から国費に手を出してしまう。GMは好きなコモンアイテム1つを選ぶ。あなたはそのアイテムを手に入れるが、維持費+(1d6)MG、《民の声》-1。同じ部屋のPCは《希望》1点を消費して[探索/9]の判定に成功すれば、それを止めることができる", "封印されていたトラップを発動させてしまう。ランダムに災害系トラップから1つを選び、それを発動させる", "あなたを憎む迷宮支配者が賞金をかけた。このゲームの間、モンスターの攻撃やトラップの目標をランダムに決める場合、その目標はかならずあなたになる。(この効果を複数人が受けた場合、その中からランダムで決定する)"]) - }, $MeikyuKingdom_mk_search_happening_table$28.$$arity = 0); - - Opal.def(self, '$mk_valor_happening_table', $MeikyuKingdom_mk_valor_happening_table$29 = function $$mk_valor_happening_table() { - var self = this; - - return self.$get_table_by_2d6(["つい幼児退行を起こしそうになる。【お酒】を消費することができなければ、このゲーム中[武勇]-1", "不意打ちを食らう。ランダムエンカウントが発生し、奇襲扱いで戦闘を行う", "配下の期待が、あなたの重荷となる。[現在の《民の声》-(1d6)]だけ《気力》が減少する", "配下があなたをかばう。自分の《配下》が(1d6)人減少する", "ムカついたので思わず殴る。自分の《敵意》が最も高いキャラからランダムに1体選び、そのキャラの《HP》が自分の[武勇]と同じだけ減少する", "決闘だっ!宮廷全員のあなたに対する《敵意》の中で、最も高い値と同じだけあなたの《HP》が減少する", "豚どもめ…。宮廷全員に対する《敵意》+1", "古傷が痛み出す。このゲームの間、戦闘で、あなたに対する敵の攻撃が成功すると、常に余分に1点ダメージを受ける", "不意に絶望と虚無感が襲い、心が折れる。宮廷全員の《気力》-1", "あなたを親の敵と名乗るものたちが現れた。このゲーム中に倒したモンスターからランダムに1種類を選び、そのモンスター(1d6)体と戦闘を行う", "自分の失敗が許せない。このゲームの間、《器》が1点減少したものとして扱う"]) - }, $MeikyuKingdom_mk_valor_happening_table$29.$$arity = 0); - - Opal.def(self, '$mk_kingdom_change_table', $MeikyuKingdom_mk_kingdom_change_table$30 = function $$mk_kingdom_change_table() { - var self = this; - - return self.$get_table_by_2d6(["列強のプロパガンダが現れる。(1d6)を振り、その目が現在の《民の声》以下で、現在列強の属国になっていたら属国から抜けることができる。上回っていたら、ランダムに列強を1つ選びその属国になる", "冒険の成功を祝う民たちが出迎えてくれる。《民の声》+2。この結果を出したプレイヤー(以下、当PL)以外の全員は、今回の冒険を振り返り当PLのPCが《好意》を得るとしたら誰が一番ふさわしいかを協議する。決定したキャラへの当PLのPCの《好意》+1", "何者かによる唐突な奇襲攻撃。未知の土地に面している領土からランダムに1つを選ぶ。[軍事レベル/敵対国数×2+険悪国数+9]の判定に成功すると返り討ちにして(1d6)MGを得る。失敗するとその領土は施設ごと失われる", "民の労働の結果が明らかに。[生活レベル/敵対国数×2+険悪国数+9]の判定に成功すると《予算》が自国の領土のマップ数と同じだけ増える。失敗したら《予算》が同じだけ減る", "民は領土を渇望していた。5MGを支払えば、隣接する未知の土地1つを領土にできる。(1d6)を振り、その数だけ通路を引くことができる。通路でつながっていない部屋は自国の領土として扱わない", "王国の子どもたちが宮廷をあなた方を見て成長する。《民》が[王国に残した《民》の数÷10+治安レベル]人増える", "あなたの活躍を耳にした者たちがやってくる。シナリオの目的を満たしている場合、関係が良好・同盟の国の数だけ(1d6)を振り、[合計値+治安レベル]人だけ《民》が増える", "街の機能に異変が!?[治安レベル/敵対国数×2+険悪国数+9]の判定に成功すると、自国の好きな施設1軒を選び、その施設の隣でかつ通路がつながっている部屋に同じ種類の施設がもう1軒できる。失敗したら、自国のタイプ:部屋の施設を1軒選び、破壊する", "王国同士の交流が行われた。[文化レベル/敵対国数×2+険悪国数+9]の判定に成功すると、生まれ表でランダムにジョブを決めた逸材が1人増え、好きな国1つとの関係を1段階良好にする。失敗すると、自国の逸材1人を選んで失い、ランダムに決めた国1つとの関係が1段階悪化する", "ただ、無為に時が過ぎていたわけではない。迷宮フェイズで過ごした1ターンにつき《予算》が1MG増える", "民の意識が大きく揺れる。(1d6)を振り、その目が現在の《民の声》以下だったら、好きな国力が1点上昇する。上回っていたら、好きな国力が1点減少する"]) - }, $MeikyuKingdom_mk_kingdom_change_table$30.$$arity = 0); - - Opal.def(self, '$mk_kingdom_mischange_table', $MeikyuKingdom_mk_kingdom_mischange_table$31 = function $$mk_kingdom_mischange_table() { - var self = this; - - return self.$get_table_by_2d6(["列強のプロパガンダが現れる。(1d6)を振り、その目が現在の《民の声》を上回っていたら、ランダムに列強1つを選びその属国になる", "新たな勢力が勃発する。王国シートの基地の土地欄の中から1つ、未知の土地を選ぶ。(1d6)を振り、その結果をその土地に記入する。1:敵対関係の国。2:険悪関係の国。3:凶暴な怪物の巣。4:人間嫌いのダンジョンマスターの庵。5:迷宮化の進んだ大迷宮。6:列強の飛び地", "何者かによる唐突な奇襲攻撃。未知の土地に面している領土からランダムに1つを選ぶ。[軍事レベル/敵対国数×2+険悪国数+9]の判定に失敗するとその領土は施設ごと失われる", "民の労働の結果が明らかに。[生活レベル/敵対国数×2+険悪国数+9]の判定に失敗したら《予算》が自国の領土のマップ数と同じだけ減る", "他国の使者がやってくる。基地の土地欄の中からランダムに自国以外の国を1つ選ぶ。その国の領土のマップ数を等しい《予算》を消費するとその国との関係が1段階よくなる。消費しないと1段階悪くなる", "民の声は離れ、この国を去る者たちがいた。《民》が(1d6)人減少する", "過ぎゆく時が王政を帰る。基地の土地欄の中から、経過したターン数と等しい数までランダムに他国を選ぶ。GMは、その国に面する未知の土地1つを選び、それをその国の新たな領土とする。(周囲に未知の土地がない場合は増やせない)", "街の機能に異変が!?[治安レベル/敵対国数×2+険悪国数+9]の判定に失敗したら、自国のタイプ:部屋の施設を1軒選び、破壊する", "王国同士の交流が行われた。[文化レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、自国の逸材1人を選んで失い、ランダムに決めた国1つとの関係が1段階悪化する", "ただ、無為に時が過ぎていたわけではない。迷宮フェイズで過ごした1ターンにつき《予算》が1MG増える", "民の意識が大きく揺れる。(1d6)を振り、その目が現在の《民の声》を上回っていたら、好きな国力が1点減少する"]) - }, $MeikyuKingdom_mk_kingdom_mischange_table$31.$$arity = 0); - - Opal.def(self, '$mk_critical_attack_table', $MeikyuKingdom_mk_critical_attack_table$32 = function $$mk_critical_attack_table() { - var self = this; - - return self.$get_table_by_2d6(["攻撃の手応えが武器に刻まれる。その攻撃に使用した武具アイテムにレベルがあれば、そのレベルが1点上昇する", "電光石火の一撃。攻撃の処理が終了したあと、もう一度行動できる", "相手の姿形を変えるほどの一撃。攻撃目標に「呪い」のバッドステータスを与える", "乾坤一擲!攻撃の威力が2倍になる", "相手を吹き飛ばす一撃。攻撃目標を好きなエリアに移動させる", "会心の一撃!攻撃の威力+(1d6)", "相手の勢いを利用した一撃。攻撃の威力が攻撃目標のレベルと同じだけ上昇する", "あと1歩まで追いつめる。ダメージを与える代わりに、攻撃目標の残り《HP》を(1d6)点にすることができる", "敵の技を封じる。攻撃目標のスキルを1種選び、その戦闘の間、そのスキルを未修得の状態にする", "怒りの一撃!攻撃の威力+(2d6)", "急所をとらえ一撃で切り伏せる。攻撃目標の《HP》を0にする"]) - }, $MeikyuKingdom_mk_critical_attack_table$32.$$arity = 0); - - Opal.def(self, '$mk_fatal_wounds_table', $MeikyuKingdom_mk_fatal_wounds_table$33 = function $$mk_fatal_wounds_table() { - var self = this; - - return self.$get_table_by_2d6(["圧倒的一撃で急所を貫かれた。死亡する", "致命的な一撃が頭をかすめる。[探索/受けたダメージ+5]の判定に失敗すると死亡する", "出血多量で昏睡する。行動不能になる。この戦闘が終了するまでに《HP》を1以上にしないと死亡する", "頭を打ちつけ昏睡する。行動不能になる。このクォーターが終了するまでに《HP》を1以上にしないと死亡する", "重傷を負い昏睡する。行動不能になる。(1d6)クォーターが経過するまでに《HP》を1以上にしないと死亡する", "意識を失う。行動不能になる", "偶然アイテムに身を守られる。ランダムにアイテムを選び、そのアイテムを破壊してダメージを無効化する。破壊できるアイテムを1個も装備していない場合、行動不能になる", "《民》たちが身を挺して庇う。自分の《配下》を(2d6)人減少させ、ダメージを無効化する。《配下》が1人も居ない場合行動不能になる", "根性で跳ね返す。[探索/9-現在の《HP》]の判定に成功すると《HP》が1になる。失敗すると行動不能になる", "精神力だけで耐える。[武勇/9-現在の《HP》]の判定に成功すると《HP》が1になる。失敗すると行動不能になる", "幸運にもダメージを免れる。ダメージを無効化するが、代わりにランダムにバッドステータス1種を受ける"]) - }, $MeikyuKingdom_mk_fatal_wounds_table$33.$$arity = 0); - - Opal.def(self, '$mk_travel_table', $MeikyuKingdom_mk_travel_table$34 = function $$mk_travel_table() { - var self = this; - - return self.$get_table_by_2d6(["道中の時間が愛を育む。全員、好きなキャラ1体を選びそのキャラに対する《好意》+1", "何かの死体を見つけた。好きな素材1種類を(1d6)手に入れる", "辺りが闇に包まれる。宮廷の中からランダムにキャラを選ぶ。そのキャラが【星の欠片】を持っていたら、それが1個破壊される", "道に迷いそうになる。全員[才覚/9]の判定を行い、(1d6-成功したキャラ数)クォーター(最低0)、時間が経過する", "トラップに引っかかる。全員[探索/9]の判定にを行い、失敗したキャラは《HP》が(1d6)点減少する", "未知の土地の場合、何も起こらない。既知の土地の場合、その土地固有のイベントがある場合はそれが起こる", "モンスターの襲撃を受けた。全員[武勇/9]の判定を行い、失敗したキャラは《HP》が(1d6)点減少する", "恐ろしげな咆哮が響き渡る。全員[魅力/9]の判定を行い、失敗したキャラは《配下》が(1d6)人逃走し、自国へ帰る", "周辺の迷宮化が進む。宮廷全員は、既知の土地の中からランダムに選んだ土地へ移動する", "何かを拾う。コモンアイテムをランダムに1個選び、それを入手する", "1MG拾う"]) - }, $MeikyuKingdom_mk_travel_table$34.$$arity = 0); - - Opal.def(self, '$mk_negotiation_table', $MeikyuKingdom_mk_negotiation_table$35 = function $$mk_negotiation_table() { - var self = this; - - return self.$get_table_by_2d6(["中立的な態度は偽装だった。不意を打たれ、奇襲扱いで戦闘を行う", "交渉は決裂した。戦闘を行う", "交渉は決裂した。戦闘を行う", "生け贄を要求された。モンスターの中で最もレベルが高いもののレベルと同じだけ《配下》を減少させれば友好的になる。ただし、《民の声》-(1d6)。《配下》を減らさなければ戦闘を行う", "趣味を聞かれた。好きな単語表1つを選びD66を振る。宮廷の中に、その項目を好きなものに指定しているキャラがいれば友好的になる。居なければ戦闘を行う", "物欲しそうにこちらを見ている。「肉」の素材(1d6)個か、【お弁当】または【フルコース】1個を消費すれば友好的になる。しなければ戦闘を行う", "値踏みするようにこちらを見ている。維持費を(1d6)MG上昇させれば友好的になる。させなければ戦闘を行う", "「何かいいもの」を要求された。モンスターの中で最もレベルが高いもののレベル以上の価格のアイテムを消費すれば友好的になる。レアアイテムは価格を+10して扱う。しなければ戦闘を行う", "面白い話を要求された。プレイヤー達はモンスター達が興味を引きそうな話をすること。GMがそれを面白いと判断したら[魅力/9]の判定を行い、成功すれば。友好的になる。さもなければ戦闘を行う", "一騎打ちを申し込んできた。宮廷の中から代表を1名選び、モンスターの中で最もレベルの高いものと1対1で戦闘を行う(配置は互いに前列)。勝利すれば友好的になる。敗北すれば、再び交渉するか戦闘するかを決断する。この一騎打ちに外野がスキルやアイテムで干渉すると全員で戦闘になる", "運命の出会い。モンスター達の宮廷の代表に対する《好意》+1、友好的になる"]) - }, $MeikyuKingdom_mk_negotiation_table$35.$$arity = 0); - - Opal.def(self, '$mk_combat_fumble_table', $MeikyuKingdom_mk_combat_fumble_table$36 = function $$mk_combat_fumble_table() { - var self = this; - - return self.$get_table_by_2d6(["敵に援軍が現れる。敵軍の中で最もレベルの低いモンスターが(1d6)体増える。モンスター側がこの結果になった場合、好きなPCの《配下》+(1d6)", "敵の士気が大いに揺らぐ。自軍のキャラは全員1マス後退する", "勢い余って仲間を攻撃!自分の居るエリアからランダムに自軍のキャラを1体選び、そのキャラに使用している武器と同じ威力のダメージを与える", "つい仲間と口論になる。自軍の未行動キャラの中からランダムに1体選び、行動済みにする", "魔法の効果が消える。自軍のキャラが使用したスキルやアイテムの効果で、戦闘中持続するものが全て無効になる", "自分を傷つけてしまう。自分に(1d6)ダメージ", "攻撃の勢いを逆に利用される。自分の《HP》を現在値の半分にする", "アイテムを落とした。自分が装備しているアイテムからランダムに1個選び、破壊する。モンスター側の場合、自分に(1d6)ダメージ", "カーネルが活性化する。戦闘系とラップからランダムに1種類選び、それがその場に配置される", "空を切った攻撃に絶望する。自分と、自分に対して1点以上《好意》を持ったキャラ全員の《気力》-1。モンスター側の場合、自分に(1d6)ダメージ", "武器がすっぽ抜ける。攻撃に使用していたアイテムが破壊される。モンスター側の場合、自分に(1d6)ダメージ。その後、バトルフィールドにいるキャラの中からランダムに1体選び、そのキャラの《HP》を1点にする"]) - }, $MeikyuKingdom_mk_combat_fumble_table$36.$$arity = 0); - - Opal.def(self, '$mk_emotion_table', $MeikyuKingdom_mk_emotion_table$37 = function $$mk_emotion_table() { - var self = this; - - return self.$get_table_by_1d3(["忠誠/怒り", "友情/不信", "愛情/侮蔑"]) - }, $MeikyuKingdom_mk_emotion_table$37.$$arity = 0); - - Opal.def(self, '$mk_market_price_table', $MeikyuKingdom_mk_market_price_table$38 = function $$mk_market_price_table() { - var self = this; - - return self.$get_table_by_2d6(["無し", "肉", "牙", "鉄", "魔素", "機械", "衣料", "木", "火薬", "情報", "革"]) - }, $MeikyuKingdom_mk_market_price_table$38.$$arity = 0); - - Opal.def(self, '$mk_treasure1_table', $MeikyuKingdom_mk_treasure1_table$39 = function $$mk_treasure1_table() { - var self = this; - - return self.$get_table_by_1d6(["何も無し", "何も無し", "そのモンスターの素材欄の中から、好きな素材1個", "そのモンスターの素材欄の中から、好きな素材2個", "そのモンスターの素材欄の中から、好きな素材3個", "【お弁当】1個"]) - }, $MeikyuKingdom_mk_treasure1_table$39.$$arity = 0); - - Opal.def(self, '$mk_treasure2_table', $MeikyuKingdom_mk_treasure2_table$40 = function $$mk_treasure2_table() { - var self = this; - - return self.$get_table_by_1d6(["そのモンスターの素材欄の中から、好きな素材3個", "そのモンスターの素材欄の中から、好きな素材4個", "そのモンスターの素材欄の中から、好きな素材5個", "ランダムに回復アイテム1個", "ランダムに武具アイテム1個。レベルがあるアイテムなら1レベルのものが手に入る", "ランダムにレア一般アイテム1個"]) - }, $MeikyuKingdom_mk_treasure2_table$40.$$arity = 0); - - Opal.def(self, '$mk_treasure3_table', $MeikyuKingdom_mk_treasure3_table$41 = function $$mk_treasure3_table() { - var self = this; - - return self.$get_table_by_1d6(["そのモンスターの素材欄の中から、好きな素材5個", "そのモンスターの素材欄の中から、好きな素材7個", "そのモンスターの素材欄の中から、好きな素材10個", "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個。レベルがあるアイテムなら1レベルのものが手に入る", "ランダムにレア一般アイテム1個。レベルがあるアイテムなら1レベルのものが手に入る", "ランダムにレア武具アイテム1個"]) - }, $MeikyuKingdom_mk_treasure3_table$41.$$arity = 0); - - Opal.def(self, '$mk_treasure4_table', $MeikyuKingdom_mk_treasure4_table$42 = function $$mk_treasure4_table() { - var self = this; - - return self.$get_table_by_1d6(["そのモンスターの素材欄の中から、好きな素材5個", "そのモンスターの素材欄の中から、好きな素材10個", "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個。レベルがあるアイテムなら2レベルのものが手に入る", "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個。レベルがあるアイテムなら3レベルのものが手に入る", "ランダムにレア一般アイテム1個。レベルのあるアイテムなら2レベルのものが手に入る", "ランダムにレア武具アイテム1個。レベルのあるアイテムなら1レベルのものが手に入る"]) - }, $MeikyuKingdom_mk_treasure4_table$42.$$arity = 0); - - Opal.def(self, '$mk_treasure5_table', $MeikyuKingdom_mk_treasure5_table$43 = function $$mk_treasure5_table() { - var self = this; - - return self.$get_table_by_1d6(["そのモンスターの素材欄の中から、好きな素材10個", "そのモンスターの素材欄の中から、好きな素材15個", "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個。レベルがあるアイテムなら4レベルのものが手に入る", "ランダムにレア一般アイテム1個。レベルのあるアイテムなら3レベルのものが手に入る", "ランダムにレア武具アイテム1個。レベルのあるアイテムなら2レベルのものが手に入る", "好きなレアアイテム1個"]) - }, $MeikyuKingdom_mk_treasure5_table$43.$$arity = 0); - - Opal.def(self, '$mk_name_table', $MeikyuKingdom_mk_name_table$44 = function $$mk_name_table() { - var self = this, output = nil, name_n = nil, d1 = nil, d2 = nil, dice = nil; - - - self.$debug("mk_name_table begin"); - output = "1"; - name_n = $rb_plus(self.$rand(6), 1); - self.$debug("name_n", name_n); - d1 = self.$d66(2); - d2 = self.$d66(2); - self.$debug("d1, d2", d1, d2); - self.$debug("name_n", name_n); - if ($truthy($rb_le(name_n, 1))) { - output = self.$mk_nick_a_table(self.$mk_name_a_table(d1), d2) - } else if ($truthy($rb_le(name_n, 2))) { - output = self.$mk_nick_a_table(self.$mk_name_b_table(d1), d2) - } else if ($truthy($rb_le(name_n, 3))) { - output = self.$mk_nick_a_table(self.$mk_name_ex_table(d1), d2) - } else if ($truthy($rb_le(name_n, 4))) { - output = self.$mk_nick_b_table(self.$mk_name_a_table(d1), d2) - } else if ($truthy($rb_le(name_n, 5))) { - output = self.$mk_nick_b_table(self.$mk_name_b_table(d1), d2) - } else { - output = self.$mk_nick_b_table(self.$mk_name_fa_table(d1), d2) - }; - dice = "" + (name_n) + "," + (d1) + "," + (d2); - return [output, dice]; - }, $MeikyuKingdom_mk_name_table$44.$$arity = 0); - - Opal.def(self, '$mk_nick_a_table', $MeikyuKingdom_mk_nick_a_table$45 = function $$mk_nick_a_table(output, num) { - var self = this, table = nil; - - - table = [[11, "“災い転じて福となす”"], [12, "“七転び八起きの”"], [13, "“冗談にも程がある”"], [14, "“虎の尾を踏む”"], [15, "“石橋を叩いて渡る”"], [16, "“一を聴いて十を知る”"], [22, "“喉から手が出る”"], [23, "“据え膳食わぬは男の恥の”"], [24, "“天につば吐く”"], [25, "“風に柳の”"], [26, "“目に入れても痛くない”"], [33, "“とかく浮世は色と酒の”"], [34, "“当たるも八卦、当たらぬも八卦の”"], [35, "“泣く子も黙る”"], [36, "“天上天下唯我独尊”"], [44, "“虫も殺さぬ”"], [45, "“花も恥じらう”"], [46, "“触らぬ神に祟り無しの”"], [55, "“両手に花の”"], [56, "“(ゲーム会場の地名)でも一、二を争う”"]]; - if ($truthy($rb_lt(num, 66))) { - output = $rb_plus(self.$get_table_by_number(num, table), output) - } else { - output = "" + (output) + ($rb_plus(self.$rand(6), 1)) + "世" - }; - return output; - }, $MeikyuKingdom_mk_nick_a_table$45.$$arity = 2); - - Opal.def(self, '$mk_nick_b_table', $MeikyuKingdom_mk_nick_b_table$46 = function $$mk_nick_b_table(output, num) { - var self = this, table = nil; - - - table = [[11, "“身も蓋もない”"], [12, "“七人の敵がいる”"], [13, "“ドラゴンも裸足で逃げ出す”"], [14, "“われらが”"], [15, "“機会攻撃を誘発する”"], [16, "“佳人薄命”"], [22, "“すねに傷持つ”"], [23, "“湯上りは親でも惚れる”"], [24, "“叶わぬ時の神頼みの”"], [25, "“果報は寝て待つ”"], [26, "“清濁併せ呑む”"], [33, "“かゆいところに手が届く”"], [34, "“酒池肉林の”"], [35, "“蛇の道は蛇の”"], [36, "“口から先に生まれた”"], [44, "“柔よく剛を制す”"], [45, "“死人に口なしの”"], [46, "“噂をすれば”"], [55, "“ミスター/ミス”"], [56, "“(好きな名前表)の子”"], [66, "“(好きな単語表)の父/母”"]]; - return $rb_plus(self.$get_table_by_number(num, table), output); - }, $MeikyuKingdom_mk_nick_b_table$46.$$arity = 2); - - Opal.def(self, '$mk_name_a_table', $MeikyuKingdom_mk_name_a_table$47 = function $$mk_name_a_table(num) { - var self = this, table = nil; - - - table = [[11, "オレンジ/ジャスミン"], [12, "ホオズキ/アサガオ"], [13, "クローバー/ダチュラ"], [14, "ダフニ/キノコ"], [15, "グラナーダ/プリムローズ"], [16, "ラディッシュ/マリーゴールド"], [22, "サイプレス/マグノリア"], [23, "バンブー/オリーブ"], [24, "クラウド/クリマ"], [25, "タオ/スノウ"], [26, "アヴァランチ/エクレール"], [33, "ビバシータ/メトロノーム"], [34, "カノン/ファゴット"], [35, "オーボエ/アルモニカ"], [36, "チューバ/オルガノ"], [44, "ナン/クッキー"], [45, "ウイロウ/カシュカシュ"], [46, "スコーン/クスクス"], [55, "フラスコ/クリップ"], [56, "クラパドーラ/クレヨン"], [66, "ソープ/ブルーム"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_name_a_table$47.$$arity = 1); - - Opal.def(self, '$mk_name_b_table', $MeikyuKingdom_mk_name_b_table$48 = function $$mk_name_b_table(num) { - var self = this, table = nil; - - - table = [[11, "エイジ/ウェンズデイ"], [12, "ジョルノ/ノエル"], [13, "タスク/マニャーナ"], [14, "ウィンター/ジュノー"], [15, "ハイラン/ブランカ"], [16, "ウォルナット/ルージュ"], [22, "グレイ/スカーレット"], [23, "シュバルツ/モエギ"], [24, "スロット/キリエ"], [25, "ジョーカー/ダイス"], [26, "ジグソウ/ドミノ"], [33, "バックギャモン/マーブル"], [34, "シーガロ/ココア"], [35, "スピーチカ/オレンジペコー"], [36, "ジッポ/ショコラ"], [44, "ナインピンズ/ルチャ"], [45, "デカスロン/ラクロス"], [46, "カバディ/ピンポン"], [55, "ポンド/ヴェルベット"], [56, "ルーブル/コットン"], [66, "シリング/シルク"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_name_b_table$48.$$arity = 1); - - Opal.def(self, '$mk_name_ex_table', $MeikyuKingdom_mk_name_ex_table$49 = function $$mk_name_ex_table(num) { - var self = this, table = nil; - - - table = [[11, "モアイ/スイショウドクロ"], [12, "チュパカブラ/ムベンベ"], [13, "カンフー/インヤン"], [14, "ブシドー/ミヤコ"], [15, "チャンピオン/バービー"], [16, "ウパニシャッド/ゾルゲ"], [22, "デスマーチ/インテル"], [23, "ゴッホ/ヴィクトリア"], [24, "ゾンビ/オニャンコポン"], [25, "ゲロッパ/カルメン"], [26, "オーバーキル/サシミ"], [33, "ブッチャー/デヴィ"], [34, "ブロンソン/マドンナ"], [35, "ガイギャックス/エロイカ"], [36, "好きな星の名前(スピカ,オリオン)"], [44, "好きな武器の名前(エペ,フランベルジュ)"], [45, "好きな動物の名前(イタチ,パグ)"], [46, "好きな鉱物の名前(ルビィ,ヒスイ)"], [55, "好きな言葉+ドラゴン"], [56, "好きな単語表で決定する"], [66, "プレイヤーと同じ名前"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_name_ex_table$49.$$arity = 1); - - Opal.def(self, '$mk_name_fa_table', $MeikyuKingdom_mk_name_fa_table$50 = function $$mk_name_fa_table(num) { - var self = this, table = nil; - - - table = [[11, "アダム/イヴ"], [12, "ジャック/モモ"], [13, "オズ/アリス"], [14, "コナン/レダ"], [15, "アーサー/イシス"], [16, "エルリック/グローリアーナ"], [22, "ギルガメッシュ/アマテラス"], [23, "マハラジャ/クリシュナ"], [24, "カゲオトコ/クロトカゲ"], [25, "オルフェウス/ヴィーナス"], [26, "ソロモン/サロメ"], [33, "ワタリガラス/ディードリット"], [34, "ニャルラトホテプ/バースト"], [35, "アンナタール/フォルトゥナ"], [36, "ザナドゥ/ヨミ"], [44, "アルビオン/ラピュタ"], [45, "ゼンダ/ゴーメンガースト"], [46, "インスマウス/イース"], [55, "フウヌイム/ヤプー"], [56, "ザンス/ナルニア"], [66, "カレワラ/イーハトーブ"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_name_fa_table$50.$$arity = 1); - - Opal.def(self, '$mk_device_factory_table', $MeikyuKingdom_mk_device_factory_table$51 = function $$mk_device_factory_table() { - var $a, $b, self = this, output = nil, dice = nil; - - - output = self.$mk_item_decide_table($rb_plus(self.$rand(6), 1)); - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - output = $rb_plus($rb_plus(output, " / "), self.$mk_item_features_table(dice)); - return output; - }, $MeikyuKingdom_mk_device_factory_table$51.$$arity = 0); - - Opal.def(self, '$mk_item_decide_table', $MeikyuKingdom_mk_item_decide_table$52 = function $$mk_item_decide_table(num) { - var $$53, $$54, $$55, $$56, $$57, $$58, self = this, functionTable = nil; - - - functionTable = [[1, $send(self, 'lambda', [], ($$53 = function(){var self = $$53.$$s || this; - - return self.$mk_weapon_item_table(self.$d66(2))}, $$53.$$s = self, $$53.$$arity = 0, $$53))], [2, $send(self, 'lambda', [], ($$54 = function(){var self = $$54.$$s || this; - - return self.$mk_life_item_table(self.$d66(2))}, $$54.$$s = self, $$54.$$arity = 0, $$54))], [3, $send(self, 'lambda', [], ($$55 = function(){var self = $$55.$$s || this; - - return self.$mk_rest_item_table(self.$d66(2))}, $$55.$$s = self, $$55.$$arity = 0, $$55))], [4, $send(self, 'lambda', [], ($$56 = function(){var self = $$56.$$s || this; - - return self.$mk_search_item_table(self.$d66(2))}, $$56.$$s = self, $$56.$$arity = 0, $$56))], [5, $send(self, 'lambda', [], ($$57 = function(){var self = $$57.$$s || this; - - return self.$mk_rare_weapon_item_table(self.$d66(1))}, $$57.$$s = self, $$57.$$arity = 0, $$57))], [6, $send(self, 'lambda', [], ($$58 = function(){var self = $$58.$$s || this; - - return self.$mk_rare_item_table(self.$d66(1))}, $$58.$$s = self, $$58.$$arity = 0, $$58))]]; - return self.$get_table_by_number(num, functionTable); - }, $MeikyuKingdom_mk_item_decide_table$52.$$arity = 1); - - Opal.def(self, '$mk_weapon_item_table', $MeikyuKingdom_mk_weapon_item_table$59 = function $$mk_weapon_item_table(num) { - var self = this, table = nil; - - - table = [[11, "だんびら"], [12, "だんびら"], [13, "ダガー"], [14, "戦斧"], [15, "盾"], [16, "鑓"], [22, "籠手(だんびら)"], [23, "手裏剣"], [24, "石弓"], [25, "甲冑"], [26, "戦鎚"], [33, "大弓(だんびら)"], [34, "爆弾"], [35, "鉄砲"], [36, "大剣"], [44, "拳銃(だんびら)"], [45, "ホウキ"], [46, "徹甲弾"], [55, "だんびら"], [56, "大砲"], [66, "だんびら"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_weapon_item_table$59.$$arity = 1); - - Opal.def(self, '$mk_life_item_table', $MeikyuKingdom_mk_life_item_table$60 = function $$mk_life_item_table(num) { - var self = this, table = nil; - - - table = [[11, "バックパック"], [12, "バックパック"], [13, "鍋"], [14, "クラッカー"], [15, "がまぐち"], [16, "マント"], [22, "法衣(バックパック)"], [23, "カード"], [24, "エプロン"], [25, "住民台帳"], [26, "携帯電話"], [33, "召喚鍵(バックパック)"], [34, "肖像画"], [35, "衣装"], [36, "山吹色のお菓子"], [44, "バックパック"], [45, "眼鏡"], [46, "クレジットカード"], [55, "バックパック"], [56, "魔道書"], [66, "バックパック"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_life_item_table$60.$$arity = 1); - - Opal.def(self, '$mk_rest_item_table', $MeikyuKingdom_mk_rest_item_table$61 = function $$mk_rest_item_table(num) { - var self = this, table = nil; - - - table = [[11, "お弁当"], [12, "お弁当"], [13, "特効薬"], [14, "保存食"], [15, "担架"], [16, "珈琲"], [22, "軟膏(お弁当)"], [23, "チョコレート"], [24, "お酒"], [25, "フルコース"], [26, "ポーション"], [33, "お弁当"], [34, "救急箱"], [35, "強壮剤"], [36, "迷宮保険"], [44, "お弁当"], [45, "科学調味料"], [46, "惚れ薬"], [55, "お弁当"], [56, "復活薬"], [66, "お弁当"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_rest_item_table$61.$$arity = 1); - - Opal.def(self, '$mk_search_item_table', $MeikyuKingdom_mk_search_item_table$62 = function $$mk_search_item_table(num) { - var self = this, table = nil; - - - table = [[11, "星の欠片"], [12, "星の欠片"], [13, "旗"], [14, "お守り"], [15, "拷問具"], [16, "パワーリスト"], [22, "工具(星の欠片)"], [23, "テント"], [24, "楽器"], [25, "使い魔"], [26, "乗騎"], [33, "迷宮迷彩(星の欠片)"], [34, "罠百科"], [35, "迷宮防護服"], [36, "地図"], [44, "星の欠片"], [45, "時計"], [46, "もぐら棒"], [55, "星の欠片"], [56, "カボチャの馬車"], [66, "星の欠片"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_search_item_table$62.$$arity = 1); - - Opal.def(self, '$mk_rare_weapon_item_table', $MeikyuKingdom_mk_rare_weapon_item_table$63 = function $$mk_rare_weapon_item_table(num) { - var self = this, table = nil; - - - table = [[11, "虚弾"], [12, "怪物毒"], [13, "小鬼の襟巻"], [14, "喇叭銃"], [15, "蛍矢"], [16, "大盾"], [21, "まわし"], [22, "怪物毒"], [23, "しゃべる剣"], [24, "小麦粉"], [25, "王笏"], [26, "服従の鞭"], [31, "ぬいぐるみ"], [32, "魔杖"], [33, "怪物毒"], [34, "星衣"], [35, "聖印"], [36, "獣の毛皮"], [41, "日傘"], [42, "チェインソード"], [43, "邪眼"], [44, "怪物毒"], [45, "徒手空拳"], [46, "バカには見えない鎧"], [51, "ビキニアーマー"], [52, "輝く者"], [53, "貪る者"], [54, "滅ぼす者"], [55, "機械の体"], [56, "破城槌"], [61, "刈り取る者"], [62, "貫く者"], [63, "黄金の鶴嘴"], [64, "ムラサマ"], [65, "蒸気甲冑"], [66, "王剣"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_rare_weapon_item_table$63.$$arity = 1); - - Opal.def(self, '$mk_rare_item_table', $MeikyuKingdom_mk_rare_item_table$64 = function $$mk_rare_item_table(num) { - var self = this, table = nil; - - - table = [[11, "ブルーリボン"], [12, "聖痕"], [13, "剥製"], [14, "愚者の冠"], [15, "名刺"], [16, "種籾"], [21, "香水"], [22, "守りの指輪(名刺)"], [23, "煙玉"], [24, "悪名"], [25, "藁人形"], [26, "パワー餌"], [31, "王妃の鏡"], [32, "蓄音機"], [33, "無限の心臓(名刺)"], [34, "星籠"], [35, "水晶球"], [36, "転ばぬ先の杖"], [41, "悟りの書"], [42, "操りロープ"], [43, "盗賊の七つ道具"], [44, "携帯算術機(名刺)"], [45, "棺桶"], [46, "カメラ"], [51, "不思議なたまご"], [52, "ブーケ"], [53, "露眼鏡"], [54, "災厄王の遺物"], [55, "経験値"], [56, "鞍"], [61, "視肉"], [62, "玉璽"], [63, "衛星帯"], [64, "軍配"], [65, "聖杯"], [66, "愛"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_rare_item_table$64.$$arity = 1); - - Opal.def(self, '$mk_item_features_table', $MeikyuKingdom_mk_item_features_table$65 = function $$mk_item_features_table(num) { - var $a, $b, self = this, output = nil, dice = nil; - - - output = ""; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy($rb_le(num, 2))) { - output = $rb_plus($rb_plus("「", self.$mk_item_power_table($rb_plus(self.$rand(6), 1))), "」の神力を宿す") - } else if ($truthy($rb_le(num, 3))) { - - output = $rb_plus("寿命を持つ。寿命の値を決定する。", "\n"); - output = $rb_plus(output, $rb_plus("さらに、", self.$mk_item_features_table(dice))); - } else if ($truthy($rb_le(num, 4))) { - output = "境界障壁を持つ。《HP》の値を決定する。" - } else if ($truthy($rb_le(num, 5))) { - output = "銘を持つ。銘を決定する。" - } else if ($truthy($rb_le(num, 6))) { - output = $rb_plus($rb_plus("合成具である。もう1つの機能は「", self.$mk_item_decide_table($rb_plus(self.$rand(6), 1))), "」である。") - } else if ($truthy($rb_le(num, 7))) { - - output = $rb_plus("そのアイテムにレベルがあれば、レベルを1点上昇する。", "\n"); - output = $rb_plus(output, $rb_plus("レベルが設定されていなければ、", self.$mk_item_features_table(dice))); - } else if ($truthy($rb_le(num, 8))) { - output = $rb_plus($rb_plus("「", self.$mk_item_jyumon_table(dice)), "」の呪紋を持つ。") - } else if ($truthy($rb_le(num, 9))) { - - output = $rb_plus($rb_plus($rb_plus("「", self.$mk_item_jyuka_table($rb_plus(self.$rand(6), 1))), "」の呪禍を持つ。"), "\n"); - output = $rb_plus(output, $rb_plus("さらに、", self.$mk_item_features_table(dice))); - } else if ($truthy($rb_le(num, 10))) { - output = "高価だ。価格を設定する。" - } else if ($truthy($rb_le(num, 11))) { - - output = $rb_plus($rb_plus($rb_plus("「条件:", self.$mk_item_aptitude_table($rb_plus(self.$rand(6), 1))), "」の適性を持つ。"), "\n"); - output = $rb_plus(output, $rb_plus("さらに、", self.$mk_item_features_table(dice))); - } else { - output = $rb_plus($rb_plus("「", self.$mk_item_attribute_table($rb_plus(self.$rand(6), 1))), "」の属性を持つ。") - }; - return $rb_plus($rb_plus($rb_plus("特性[", num.$to_s()), "]:"), output); - }, $MeikyuKingdom_mk_item_features_table$65.$$arity = 1); - - Opal.def(self, '$mk_item_power_table', $MeikyuKingdom_mk_item_power_table$66 = function $$mk_item_power_table(num) { - var self = this, table = nil; - - - table = [[1, "〔才覚〕"], [2, "〔魅力〕"], [3, "〔探索〕"], [4, "〔武勇〕"], [5, "〈器〉"], [6, "〈回避値〉"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdom_mk_item_power_table$66.$$arity = 1); - - Opal.def(self, '$mk_item_jyumon_table', $MeikyuKingdom_mk_item_jyumon_table$67 = function $$mk_item_jyumon_table(num) { - var self = this, table = nil; - - - table = [[2, "モンスタースキル"], [3, "便利スキル"], [4, "芸能スキル"], [5, "迷宮スキル"], [6, "星術スキル"], [7, "一般スキル"], [8, "召喚スキル"], [9, "科学スキル"], [10, "交渉スキル"], [11, "神官のクラススキル"], [12, "ジョブスキル"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdom_mk_item_jyumon_table$67.$$arity = 1); - - Opal.def(self, '$mk_item_jyuka_table', $MeikyuKingdom_mk_item_jyuka_table$68 = function $$mk_item_jyuka_table(num) { - var self = this, table = nil; - - - table = [[1, "「呪い」のバッドステータス"], [2, "「肥満」のバッドステータス"], [3, "「愚か」のバッドステータス"], [4, "サイクルの終了時に《HP》が1点減少する"], [5, "条件を満たしても誰とも人間関係を結べない"], [6, "〈器〉が1点減少する"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdom_mk_item_jyuka_table$68.$$arity = 1); - - Opal.def(self, '$mk_item_aptitude_table', $MeikyuKingdom_mk_item_aptitude_table$69 = function $$mk_item_aptitude_table(num) { - var $$70, $$71, self = this, table = nil; - - - table = [[1, "ランダムなクラス1種"], [2, $send(self, 'lambda', [], ($$70 = function(){var self = $$70.$$s || this; - - return self.$mk_family_business_table(self.$d66(2))}, $$70.$$s = self, $$70.$$arity = 0, $$70))], [3, $send(self, 'lambda', [], ($$71 = function(){var self = $$71.$$s || this; - - return $rb_plus(self.$mk_gender_table($rb_plus(self.$rand(6), 1)), "性")}, $$71.$$s = self, $$71.$$arity = 0, $$71))], [4, "上級ジョブ"], [5, "モンスタースキルを修得"], [6, "童貞、もしくは処女"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdom_mk_item_aptitude_table$69.$$arity = 1); - - Opal.def(self, '$mk_item_attribute_table', $MeikyuKingdom_mk_item_attribute_table$72 = function $$mk_item_attribute_table(num) { - var self = this, table = nil; - - - table = [[1, "自然の力"], [2, "幻夢の力"], [3, "星炎の力"], [4, "暗黒の力"], [5, "聖なるの力"], [6, "災厄の力"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdom_mk_item_attribute_table$72.$$arity = 1); - - Opal.def(self, '$mk_gender_table', $MeikyuKingdom_mk_gender_table$73 = function $$mk_gender_table(num) { - var self = this, output = nil; - - - output = "1"; - if ($truthy(num['$odd?']())) { - output = "男" - } else { - output = "女" - }; - return output; - }, $MeikyuKingdom_mk_gender_table$73.$$arity = 1); - - Opal.def(self, '$mk_family_business_table', $MeikyuKingdom_mk_family_business_table$74 = function $$mk_family_business_table(num) { - var self = this, table = nil; - - - table = [[11, "星術師"], [12, "魔道師"], [13, "召喚師"], [14, "博士"], [15, "医者"], [16, "貴族"], [22, "宦官"], [23, "武人"], [24, "処刑人"], [25, "衛視"], [26, "商人"], [33, "迷宮職人"], [34, "亭主"], [35, "料理人"], [36, "寿ぎ屋"], [44, "働きもの"], [45, "狩人"], [46, "冒険者"], [55, "怠け者"], [56, "盗賊"], [66, "生まれ表の中から、好きなジョブ1つを選ぶ"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdom_mk_family_business_table$74.$$arity = 1); - - Opal.def(self, '$mk_random_encount1_table', $MeikyuKingdom_mk_random_encount1_table$75 = function $$mk_random_encount1_table(num) { - var self = this, table = nil; - - - table = [[1, "『守って守って突撃ゴー!』 前衛:ごんぎつね×宮廷の人数、後衛:ノコギリ猪×1"], [2, "『じわじわ削る、カボチャの舞』 前衛:焔虫×宮廷の人数、本陣:カボチャ頭×宮廷の人数の半分"], [3, "『ものすごくジャマな人たち。』 前衛:小人さん×宮廷の人数、取り替え子×宮廷の人数の半分"], [4, "『何かやってくれるかも……』 前衛:兵隊エルフ×宮廷の人数"], [5, "『【かばう】で延命しつつ【鉄の勇気】』 前衛:キンギョ×宮廷の人数、本陣:イカロス×宮廷の人数の半分"], [6, "『英雄で指示してシュシュシュシュ~~~~ト!!』 前衛:小鬼×宮廷の人数、後衛:小鬼×宮廷の人数、本陣:小鬼大砲×1、小鬼英雄×1"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_random_encount1_table$75.$$arity = 1); - - Opal.def(self, '$mk_random_encount2_table', $MeikyuKingdom_mk_random_encount2_table$76 = function $$mk_random_encount2_table(num) { - var self = this, table = nil; - - - table = [[1, "『作戦判定に負けてもOK、そして強い』 前衛:ガーゴイル×宮廷の人数"], [2, "『吸い殺せ! ドレインしまくれ!』 後衛:塚人×宮廷の人数の半分"], [3, "『ゴールデンコンビ結成。指揮と【鉄腕】+【範囲攻撃】で大暴れ』 前衛:牛頭×宮廷の人数の半分、後衛:山羊頭×宮廷の人数の半分"], [4, "『クピドは野放しにできないが、ハルキュオネは殺せない。このジレンマが……』 前衛:ハルキュオネ×宮廷の人数、後衛:ハルキュオネ×宮廷の人数、本陣:クピド×宮廷の人数の半分"], [5, "『眠りコンボ』 前衛:グレムリン×宮廷の人数、本陣:眠りの精×1"], [6, "『回避を減らしてみみずの範囲攻撃』 前衛:みみず×宮廷の人数、本陣:大喰らい×宮廷の人数の半分"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_random_encount2_table$76.$$arity = 1); - - Opal.def(self, '$mk_random_encount3_table', $MeikyuKingdom_mk_random_encount3_table$77 = function $$mk_random_encount3_table(num) { - var self = this, table = nil; - - - table = [[1, "『魅了→木霊ハメ』 後衛:淫魔×1、本陣:レーシィ×宮廷の人数"], [2, "『素早く【多勢に無勢】をしかけ……たい』 前衛:階賊×宮廷の人数、本陣:抜け忍×1"], [3, "『倒しても嬉しくない人柱をどうぞ』 前衛:人柱×宮廷の人数、本陣:恋のぼり×宮廷の人数の半分"], [4, "『位置を調整して【抱擁】してみよう』 後衛:霧妾×宮廷の人数、本陣:お化けシーツ×宮廷の人数"], [5, "『クリティカルヒットしたい(希望)』 後衛:ヴォーパルバニー×宮廷の人数、本陣:二面人×1"], [6, "『なんとか特攻したい(願望)』 前衛:穴人×宮廷の人数、ゴーレム×1"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_random_encount3_table$77.$$arity = 1); - - Opal.def(self, '$mk_random_encount4_table', $MeikyuKingdom_mk_random_encount4_table$78 = function $$mk_random_encount4_table(num) { - var self = this, table = nil; - - - table = [[1, "『増やして治す。ド外道タッグが嵐を呼ぶぜ』 前衛:闇双子×1、本陣:坊主子牛×宮廷の人数の半分"], [2, "『カリスマ的存在+平和の使者→エセNGOみたいな?』 前衛:ワリアヒラ×宮廷の人数、後衛:妖精騎士×1"], [3, "『【星戦】→攻撃、【星界】→【ベアハッグ】』 前衛:洞窟熊×宮廷の人数、本陣:星人×宮廷の人数の半分"], [4, "『さりげなく先攻を取りつつ《民》をバイドバイパー作戦』 前衛:大目玉×宮廷の人数、本陣:笛吹き男×宮廷の人数の半分"], [5, "『アンデッドチーム、がんばれ!』 前衛:墓暴き×宮廷の人数、本陣:吸血鬼×1"], [6, "『まよセレ、このゲームの代名詞(?)。こいつは欠かせない!』 後衛:マヨネーズキング・ピュアセレクト×宮廷の人数、本陣:メイクイーン×1"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_random_encount4_table$78.$$arity = 1); - - Opal.def(self, '$mk_random_encount5_table', $MeikyuKingdom_mk_random_encount5_table$79 = function $$mk_random_encount5_table(num) { - var self = this, table = nil; - - - table = [[1, "『「死ぬが良い」最終鬼畜兵器岸降臨』 前衛:暗黒騎士×1"], [2, "『割と痛い。さりげなく魔王が分裂する』 前衛:カミツキ魔王×宮廷の人数の半分、本陣:雷鳥×1"], [3, "『ハマると死ぬ。5人パーティだと3体出てザマーミロ』 前衛:ヴァララカール×宮廷の人数の半分"], [4, "『不意打ちされたらデンジャー。ひそかにワイヴァーンで先手を取る』 前衛:睨み毒蛇×宮廷の人数の半分、後衛:ワイヴァーン×1"], [5, "『ゾンビスペシャル……で、がんばりたい』 前衛:死にぞこない×宮廷の人数の半分、後衛:死にぞこない×宮廷の人数の半分、本陣:屍術師×1"], [6, "『とにかく殴れ! 単純明快パワーチーム』 前衛:鮫人×宮廷の人数、夜這い海星×1"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_random_encount5_table$79.$$arity = 1); - - Opal.def(self, '$mk_random_encount6_table', $MeikyuKingdom_mk_random_encount6_table$80 = function $$mk_random_encount6_table(num) { - var self = this, table = nil; - - - table = [[1, "『死んでください。【外皮】か【甲冑】がないと相当ヤバい』 本陣:死告天使×宮廷の人数"], [2, "『ド迫力。ブレス連発。3体出ちゃったらカーニバル』 本陣:ドラゴン×宮廷の人数の半分"], [3, "『死霊のボス。スキル次第でヤバい。GMの悪意が閃くときだ』 本陣:骨龍×1、推奨スキル【不滅の炎】、【困惑】、【ヤバチョンガー】など"], [4, "『《好意》を消して【魅了】に持ち込む』 後衛:愛染明王×宮廷の人数"], [5, "『真の狙いは【蜘蛛の群れ】』 前衛:アラクネ×宮廷の人数、本陣:蜘蛛の王×1"], [6, "『お約束。まあこいつは出るだろうみたいな』 前衛:魔蟹×1、帳魚×1"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_random_encount6_table$80.$$arity = 1); - - Opal.def(self, '$mk_pn_decide_table', $MeikyuKingdom_mk_pn_decide_table$81 = function $$mk_pn_decide_table(num) { - var $a, $b, $$82, self = this, output = nil, d1 = nil, d2 = nil; - - - output = ""; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d2 = ($a[0] == null ? nil : $a[0])), $b; - self.$debug("d1", d1); - self.$debug("d2", d2); - d1 = $rb_divide(d1, 2.0).$ceil().$to_i(); - d2 = $rb_divide(d2, 2.0).$ceil().$to_i(); - $send(num, 'times', [], ($$82 = function(_i){var self = $$82.$$s || this; - - - - if (_i == null) { - _i = nil; - }; - return (output = $rb_plus(output, $rb_plus($rb_plus($rb_plus("「", self.$mk_decoration_table(d1)), self.$mk_placename_table(d2)), "」")));}, $$82.$$s = self, $$82.$$arity = 1, $$82)); - return output; - }, $MeikyuKingdom_mk_pn_decide_table$81.$$arity = 1); - - Opal.def(self, '$mk_decoration_table', $MeikyuKingdom_mk_decoration_table$83 = function $$mk_decoration_table(num) { - var $$84, $$85, $$86, self = this, table = nil; - - - self.$debug("mk_decoration_table num", num); - table = [[1, $send(self, 'lambda', [], ($$84 = function(){var self = $$84.$$s || this; - - return self.$mk_basic_decoration_table(self.$d66(2))}, $$84.$$s = self, $$84.$$arity = 0, $$84))], [2, $send(self, 'lambda', [], ($$85 = function(){var self = $$85.$$s || this; - - return self.$mk_spooky_decoration_table(self.$d66(2))}, $$85.$$s = self, $$85.$$arity = 0, $$85))], [3, $send(self, 'lambda', [], ($$86 = function(){var self = $$86.$$s || this; - - return self.$mk_katakana_decoration_table(self.$d66(2))}, $$86.$$s = self, $$86.$$arity = 0, $$86))]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_decoration_table$83.$$arity = 1); - - Opal.def(self, '$mk_placename_table', $MeikyuKingdom_mk_placename_table$87 = function $$mk_placename_table(num) { - var $$88, $$89, $$90, self = this, table = nil; - - - table = [[1, $send(self, 'lambda', [], ($$88 = function(){var self = $$88.$$s || this; - - return self.$mk_passage_placename_table(self.$d66(2))}, $$88.$$s = self, $$88.$$arity = 0, $$88))], [2, $send(self, 'lambda', [], ($$89 = function(){var self = $$89.$$s || this; - - return self.$mk_natural_placename_table(self.$d66(2))}, $$89.$$s = self, $$89.$$arity = 0, $$89))], [3, $send(self, 'lambda', [], ($$90 = function(){var self = $$90.$$s || this; - - return self.$mk_artifact_placename_table(self.$d66(2))}, $$90.$$s = self, $$90.$$arity = 0, $$90))]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_placename_table$87.$$arity = 1); - - Opal.def(self, '$mk_basic_decoration_table', $MeikyuKingdom_mk_basic_decoration_table$91 = function $$mk_basic_decoration_table(num) { - var self = this, table = nil; - - - table = [[11, "欲望(よくぼう)"], [12, "漂流(ひょうりゅう)"], [13, "黄金(おうごん)"], [14, "火達磨(ひだるま)"], [15, "災厄(さいやく)"], [16, "三日月(みかづき)"], [22, "絡繰り(からくり)"], [23, "流星(りゅうせい)"], [24, "棘々(とげとげ)"], [25, "鏡(かがみ)"], [26, "銀鱗(ぎんりん)"], [33, "螺旋(らせん)"], [34, "七色(なないろ)"], [35, "殉教(じゅんきょう)"], [36, "水晶(すいしょう)"], [44, "氷結(ひょうけつ)"], [45, "忘却(ぼうきゃく)"], [46, "幸福(こうふく)"], [55, "妖精(ようせい)"], [56, "霧雨(きりさめ)"], [66, "夕暮れ(ゆうぐれ)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_basic_decoration_table$91.$$arity = 1); - - Opal.def(self, '$mk_spooky_decoration_table', $MeikyuKingdom_mk_spooky_decoration_table$92 = function $$mk_spooky_decoration_table(num) { - var self = this, table = nil; - - - table = [[11, "赤錆(あかさび)"], [12, "串刺し(くしざし)"], [13, "鬼蜘蛛(おにぐも)"], [14, "蠍(さそり)"], [15, "幽霊(ゆうれい)"], [16, "髑髏(どくろ)"], [22, "血溜まり(ちだまり)"], [23, "臓物(ぞうもつ)"], [24, "骸(むくろ)"], [25, "鉤爪(かぎづめ)"], [26, "犬狼(けんろう)"], [33, "奈落(ならく)"], [34, "大蛇(おろち)"], [35, "地獄(じごく)"], [36, "蚯蚓(みみず)"], [44, "退廃(たいはい)"], [45, "土竜(もぐら)"], [46, "絶望(ぜつぼう)"], [55, "夜泣き(よなき)"], [56, "緑林(りょくりん)"], [66, "どん底(どんぞこ)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_spooky_decoration_table$92.$$arity = 1); - - Opal.def(self, '$mk_katakana_decoration_table', $MeikyuKingdom_mk_katakana_decoration_table$93 = function $$mk_katakana_decoration_table(num) { - var self = this, table = nil; - - - table = [[11, "マヨネーズ"], [12, "ダイナマイト"], [13, "ドラゴン"], [14, "ボヨヨン"], [15, "モケモケ"], [16, "マヌエル"], [22, "ダイス"], [23, "ロマン"], [24, "ウクレレ"], [25, "エップカプ"], [26, "カンパネルラ"], [33, "マンチキン"], [34, "バロック"], [35, "ミサイル"], [36, "ドッキリ"], [44, "ブラック"], [45, "好きなモンスターの名前"], [46, "好きなトラップの名前"], [55, "好きな単語表で"], [56, "好きな名前決定表で"], [66, "好きな数字の組み合わせ"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_katakana_decoration_table$93.$$arity = 1); - - Opal.def(self, '$mk_passage_placename_table', $MeikyuKingdom_mk_passage_placename_table$94 = function $$mk_passage_placename_table(num) { - var self = this, table = nil; - - - table = [[11, "門(ゲート)"], [12, "回廊(コリドー)"], [13, "通り(ストリート)"], [14, "小路(アレイ)"], [15, "大路(アベニュー)"], [16, "街道(ロード)"], [22, "鉄道(ライン)"], [23, "迷宮(メイズ)"], [24, "坑道(トンネル)"], [25, "坂(スロープ)"], [26, "峠(パス)"], [33, "運河(カナル)"], [34, "水路(チャネル)"], [35, "河(ストリーム)"], [36, "堀(モート)"], [44, "溝(ダイク)"], [45, "階段(ステア)"], [46, "辻(トレイル)"], [55, "橋(ブリッジ)"], [56, "穴(ホール)"], [66, "柱廊(ストア)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_passage_placename_table$94.$$arity = 1); - - Opal.def(self, '$mk_natural_placename_table', $MeikyuKingdom_mk_natural_placename_table$95 = function $$mk_natural_placename_table(num) { - var self = this, table = nil; - - - table = [[11, "砂漠(デザート)"], [12, "丘陵(ヒル)"], [13, "海(オーシャン)"], [14, "森(フォレスト)"], [15, "沼(ポンド)"], [16, "海岸(コースト)"], [22, "密林(ジャングル)"], [23, "湖(レイク)"], [24, "山脈(マウンテンズ)"], [25, "平原(プレイン)"], [26, "ヶ原(ランド)"], [33, "荒野(ヒース)"], [34, "渓谷(ヴァレー)"], [35, "島(アイランド)"], [36, "連峰(ピークス)"], [44, "火山(ヴォルケイノ)"], [45, "湿原(ウェットランド)"], [46, "星雲(ネビュラ)"], [55, "星(スター)"], [56, "ヶ淵(プール)"], [66, "雪原(スノウズ)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_natural_placename_table$95.$$arity = 1); - - Opal.def(self, '$mk_artifact_placename_table', $MeikyuKingdom_mk_artifact_placename_table$96 = function $$mk_artifact_placename_table(num) { - var self = this, table = nil; - - - table = [[11, "城(キャッスル)"], [12, "壁(ウォール)"], [13, "砦(フォート)"], [14, "地帯(ゾーン)"], [15, "室(ルーム)"], [16, "の間(チャンバー)"], [22, "浴室(バス)"], [23, "畑(ファーム)"], [24, "館(ハウス)"], [25, "座(コンスティレィション)"], [26, "遺跡(ルイン)"], [33, "ヶ浜(ビーチ)"], [34, "塔(タワー)"], [35, "墓場(グレイブ)"], [36, "洞(ケイヴ)"], [44, "堂(バジリカ)"], [45, "野(フィールド)"], [46, "書院(スタディ)"], [55, "駅前(ステイション)"], [56, "房(クラスター)"], [66, "腐海(ケイオスシー)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_artifact_placename_table$96.$$arity = 1); - - Opal.def(self, '$mk_ls_decide_table', $MeikyuKingdom_mk_ls_decide_table$97 = function $$mk_ls_decide_table(num) { - var $$98, self = this, output = nil; - - - output = ""; - $send(num, 'times', [], ($$98 = function(_i){var self = $$98.$$s || this; - - - - if (_i == null) { - _i = nil; - }; - return (output = $rb_plus(output, $rb_plus($rb_plus("「", self.$mk_landscape_table($rb_plus(self.$rand(6), 1))), "」")));}, $$98.$$s = self, $$98.$$arity = 1, $$98)); - return output; - }, $MeikyuKingdom_mk_ls_decide_table$97.$$arity = 1); - - Opal.def(self, '$mk_landscape_table', $MeikyuKingdom_mk_landscape_table$99 = function $$mk_landscape_table(num) { - var $$100, $$101, $$102, $$103, $$104, $$105, self = this, dice = nil, table = nil; - - - dice = self.$d66(2); - table = [[1, $send(self, 'lambda', [], ($$100 = function(){var self = $$100.$$s || this; - - return self.$mk_artifact_landscape_table(dice)}, $$100.$$s = self, $$100.$$arity = 0, $$100))], [2, $send(self, 'lambda', [], ($$101 = function(){var self = $$101.$$s || this; - - return self.$mk_cave_landscape_table(dice)}, $$101.$$s = self, $$101.$$arity = 0, $$101))], [3, $send(self, 'lambda', [], ($$102 = function(){var self = $$102.$$s || this; - - return self.$mk_natural_landscape_table(dice)}, $$102.$$s = self, $$102.$$arity = 0, $$102))], [4, $send(self, 'lambda', [], ($$103 = function(){var self = $$103.$$s || this; - - return self.$mk_waterside_landscape_table(dice)}, $$103.$$s = self, $$103.$$arity = 0, $$103))], [5, $send(self, 'lambda', [], ($$104 = function(){var self = $$104.$$s || this; - - return self.$mk_skyrealm_landscape_table(dice)}, $$104.$$s = self, $$104.$$arity = 0, $$104))], [6, $send(self, 'lambda', [], ($$105 = function(){var self = $$105.$$s || this; - - return self.$mk_strange_place_landscape_table(dice)}, $$105.$$s = self, $$105.$$arity = 0, $$105))]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_landscape_table$99.$$arity = 1); - - Opal.def(self, '$mk_artifact_landscape_table', $MeikyuKingdom_mk_artifact_landscape_table$106 = function $$mk_artifact_landscape_table(num) { - var self = this, table = nil; - - - table = [[11, "石組みの部屋"], [12, "巨大な縦穴に刻まれた螺旋階段"], [13, "埃だらけの古い図書館"], [14, "古びた、素朴な祭壇"], [15, "歯車やピストンがやかましい動力室"], [16, "石組みの巨大な階段"], [22, "太い丸太で組まれた部屋"], [23, "作りかけの製品が放置された工房"], [24, "錆びた武器や骨が散らばる古戦場"], [25, "石組みのトイレ"], [26, "高い天井の厨房"], [33, "レンガで組まれた部屋"], [34, "静まりかえった劇場"], [35, "がらくたが散らばっているゴミ捨て場"], [36, "切り出し途中で放棄された巨大な石像"], [44, "壁画やタペストリーが残る大広間"], [45, "メトロ汗国の線路"], [46, "絵画や彫刻が展示してあるギャラリー"], [55, "石棺が並ぶ墓"], [56, "錆びついた扉が残る巨大な門"], [66, "放置された牢獄"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_artifact_landscape_table$106.$$arity = 1); - - Opal.def(self, '$mk_cave_landscape_table', $MeikyuKingdom_mk_cave_landscape_table$107 = function $$mk_cave_landscape_table(num) { - var self = this, table = nil; - - - table = [[11, "岩肌がむき出しの洞穴"], [12, "コウモリや羽蟲が飛び交う洞穴"], [13, "放置された坑道"], [14, "誰かのキャンプ跡"], [15, "岩だらけで見通しのきかない空洞"], [16, "煙が吹きぬける洞穴"], [22, "どこからか水音が響く鍾乳洞"], [23, "光の衰えた星がまたたく幻想的な空洞"], [24, "流砂が流れる洞穴"], [25, "生物が掘った、つるつるした洞穴"], [26, "冷えきった氷の洞穴"], [33, "巨大な岩の隙間"], [34, "動物や狩を描いた素朴な壁画が続く洞穴"], [35, "巨大な空洞にかけられた自然の橋"], [36, "埋まりかけで天井すれすれの洞穴"], [44, "奈落と断崖絶壁"], [45, "壁がうごめく蟲でおおわれた洞穴"], [46, "無数の化石が埋まっている洞穴"], [55, "熱気を放つ溶岩が流れる空洞"], [56, "水晶でできた洞穴"], [66, "骨が散らばるなにものかの住処"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_cave_landscape_table$107.$$arity = 1); - - Opal.def(self, '$mk_natural_landscape_table', $MeikyuKingdom_mk_natural_landscape_table$108 = function $$mk_natural_landscape_table(num) { - var self = this, table = nil; - - - table = [[11, "苔むした部屋"], [12, "動物の声が響き渡る密林"], [13, "つる草でできた通路"], [14, "空洞いっぱいのお花畑"], [15, "壁から木の根が突き出している部屋"], [16, "空洞に広がる耕作地"], [22, "折り重なって繁茂する森林"], [23, "垂直の空洞にえんえんと伸びる大木の幹"], [24, "空洞中に広がるアザラシの営巣地"], [25, "カビで壁がねとつく部屋"], [26, "サボテンが点在する部屋"], [33, "巨大キノコの群生地"], [34, "真ん中に大木が一本そびえ立っている空洞"], [35, "通路いっぱいに進む野生ウマトカゲの大群"], [36, "落ち葉がうずたかく積もった部屋"], [44, "植え込みで作られた迷宮庭園"], [45, "生い茂る竹林"], [46, "松ぼっくりが転がる部屋"], [55, "丈の長い草が生い茂る部屋"], [56, "枯れた森林"], [66, "大木の空洞内のような通路や部屋"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_natural_landscape_table$108.$$arity = 1); - - Opal.def(self, '$mk_waterside_landscape_table', $MeikyuKingdom_mk_waterside_landscape_table$109 = function $$mk_waterside_landscape_table(num) { - var self = this, table = nil; - - - table = [[11, "轟々と流れる川にかかった橋"], [12, "色とりどりの珊瑚の中"], [13, "腰高まで水に浸かった部屋"], [14, "澄んだ水が流れる噴水と水飲み場"], [15, "沸騰する湖"], [16, "地面が干潟化した部屋"], [22, "水をたたえた貯水池"], [23, "熱い蒸気がたちこめる部屋"], [24, "空洞に広がる沼地"], [25, "樽や鎖が放置されている船の中"], [26, "水槽が並ぶ水族館"], [33, "悪臭を放つ下水道"], [34, "底に遺跡が見える水没した空洞"], [35, "桟橋と船着き場"], [36, "筏やハシケが浮かぶ湖"], [44, "巨大な縦穴と滝"], [45, "かつて建設された上水道の中"], [46, "ペンギンの右往左往する氷結した湖"], [55, "湯気を立てる温泉"], [56, "奇怪な彫刻が施された古井戸"], [66, "壁に貝やフジツボがはりついた部屋"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_waterside_landscape_table$109.$$arity = 1); - - Opal.def(self, '$mk_skyrealm_landscape_table', $MeikyuKingdom_mk_skyrealm_landscape_table$110 = function $$mk_skyrealm_landscape_table(num) { - var self = this, table = nil; - - - table = [[11, "雨が降る部屋"], [12, "チーズにうがたれた洞穴"], [13, "中空に何層にも重なる空中庭園"], [14, "無限に連なる真っ白な洗濯物"], [15, "天空に向かって伸びる豆の木"], [16, "巨大な縦穴にぶら下がる縄ばしごや鎖"], [22, "強風の吹き荒れる部屋"], [23, "雲の上。なぜか、その上を歩くことができる"], [24, "濃霧に覆われた空洞"], [25, "無重量でふわふわ浮く部屋"], [26, "雪がしんしんと降り積もる部屋"], [33, "時空がねじ曲がった空中回廊"], [34, "怪物よけの風車が音を立てる通路"], [35, "天井に遺跡が見える空洞"], [36, "轟々と音を立てる巨大排気孔"], [44, "時折稲妻の走る部屋"], [45, "鳥の羽毛が舞い落ちる部屋"], [46, "青空が壁面いっぱいに描かれた空洞"], [55, "一面、鏡でできた部屋"], [56, "オーロラがゆらめく空洞"], [66, "重力方向がばらばらの部屋"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_skyrealm_landscape_table$110.$$arity = 1); - - Opal.def(self, '$mk_strange_place_landscape_table', $MeikyuKingdom_mk_strange_place_landscape_table$111 = function $$mk_strange_place_landscape_table(num) { - var self = this, table = nil; - - - table = [[11, "古びた六畳間"], [12, "せせこましいカラオケボックス"], [13, "時の止まった街"], [14, "ボールが一個転がっている体育館"], [15, "毛が生えている部屋"], [16, "なにかの待合室"], [22, "生物の粘液したたる体内"], [23, "ブランコやすべり台のある小公園"], [24, "安っぽいユニットバス"], [25, "上の住人がうるさい部屋"], [26, "人骨で組まれている部屋"], [33, "呼吸している部屋"], [34, "斜めに傾いた部屋"], [35, "ラブホテルの一室"], [36, "ときどきなにかが覗いていく部屋"], [44, "がやがやと話し声が聞こえる部屋"], [45, "触手が生えている部屋"], [46, "机と椅子が置いてある取調室"], [55, "静まりかえった教室"], [56, "天井に巨大な人の顔がある部屋"], [66, "常に揺れている部屋"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_strange_place_landscape_table$111.$$arity = 1); - - Opal.def(self, '$mk_kingdom_name_1_table', $MeikyuKingdom_mk_kingdom_name_1_table$112 = function $$mk_kingdom_name_1_table(num) { - var self = this, table = nil; - - - table = [[11, "暗黒"], [12, "王政"], [13, "超"], [14, "共和制"], [15, "古代"], [16, "社会主義"], [22, "自由"], [23, "新(ネオ)"], [24, "神聖(セント、聖)"], [25, "正統"], [26, "絶対主義"], [33, "大"], [34, "天階"], [35, "深階"], [36, "第三"], [44, "中央"], [45, "帝政"], [46, "統一"], [55, "独立"], [56, "東"], [66, "立憲"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_kingdom_name_1_table$112.$$arity = 1); - - Opal.def(self, '$mk_kingdom_name_2_table', $MeikyuKingdom_mk_kingdom_name_2_table$113 = function $$mk_kingdom_name_2_table(num) { - var self = this, table = nil; - - - table = [[11, "英雄"], [12, "連合"], [13, "グランドゼロ"], [14, "迷宮(ダンジョン)"], [15, "災厄"], [16, "魔神(デーモン)"], [22, "征服"], [23, "中華"], [24, "ドラゴン(龍)"], [25, "猫"], [26, "バナナ"], [33, "ファンタジー"], [34, "冒険"], [35, "魔法(マジカル)"], [36, "超人"], [44, "無敵"], [45, "路地裏"], [46, "ローマ"], [55, "(好きな単語表で決定)"], [56, "(プレイ会場の地名 例:ネリマ)"], [66, "(国王の名前。後で決定)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_kingdom_name_2_table$113.$$arity = 1); - - Opal.def(self, '$mk_kingdom_name_3_table', $MeikyuKingdom_mk_kingdom_name_3_table$114 = function $$mk_kingdom_name_3_table(num) { - var self = this, table = nil; - - - table = [[11, "王国(キングダム)"], [12, "王朝"], [13, "会社(公社)"], [14, "学園(学校)"], [15, "合衆国"], [16, "共同体"], [22, "共和国"], [23, "星"], [24, "公国"], [25, "市(街、シティ、ポリス)"], [26, "自治国"], [33, "植民地"], [34, "帝国"], [35, "同盟"], [36, "首長国"], [44, "幕府"], [45, "領"], [46, "村"], [55, "横丁(亭)"], [56, "ランド"], [66, "連邦"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_kingdom_name_3_table$114.$$arity = 1); - - Opal.def(self, '$mk_word_1_table', $MeikyuKingdom_mk_word_1_table$115 = function $$mk_word_1_table(num) { - var self = this, table = nil; - - - table = [[11, "魔法"], [12, "おめかし"], [13, "狭いところ"], [14, "夜更かし"], [15, "節約"], [16, "会議"], [22, "ヒゲ"], [23, "孤独"], [24, "自慢話"], [25, "自分探し"], [26, "異性"], [33, "ヒラヒラした服"], [34, "平穏な生活"], [35, "自分語り"], [36, "風呂"], [44, "古いもの"], [45, "頭が悪い人"], [46, "暗闇"], [55, "許嫁"], [56, "民"], [66, "バカ"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_word_1_table$115.$$arity = 1); - - Opal.def(self, '$mk_word_2_table', $MeikyuKingdom_mk_word_2_table$116 = function $$mk_word_2_table(num) { - var self = this, table = nil; - - - table = [[11, "科学"], [12, "読書"], [13, "広いところ"], [14, "早起き"], [15, "ムダ"], [16, "仕事"], [22, "ハゲ"], [23, "みんなで集まること"], [24, "ナンパ"], [25, "昔話"], [26, "同性"], [33, "武器の手入れ"], [34, "戦争"], [35, "人の噂"], [36, "散髪"], [44, "新しいもの"], [45, "頭がよい人"], [46, "光"], [55, "親"], [56, "王様"], [66, "ホラ話"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_word_2_table$116.$$arity = 1); - - Opal.def(self, '$mk_word_3_table', $MeikyuKingdom_mk_word_3_table$117 = function $$mk_word_3_table(num) { - var self = this, table = nil; - - - table = [[11, "子供"], [12, "弱い人"], [13, "処刑"], [14, "叙事詩"], [15, "煙草"], [16, "病院"], [22, "目立つこと"], [23, "酒盛り"], [24, "料理"], [25, "武芸"], [26, "田舎"], [33, "自分の国"], [34, "伝統"], [35, "セレモニー"], [36, "告げ口"], [44, "自分の声"], [45, "マヨネーズ"], [46, "おせっかい"], [55, "外国人"], [56, "迷宮"], [66, "ねこみみ"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_word_3_table$117.$$arity = 1); - - Opal.def(self, '$mk_word_4_table', $MeikyuKingdom_mk_word_4_table$118 = function $$mk_word_4_table(num) { - var self = this, table = nil; - - - table = [[11, "年寄り"], [12, "強い人"], [13, "空想"], [14, "冗談"], [15, "クスリ"], [16, "怪物"], [22, "一騎打ち"], [23, "賭け事"], [24, "歌"], [25, "勉強"], [26, "都会"], [33, "冒険"], [34, "ダイナマイト大帝"], [35, "悪事"], [36, "言い訳"], [44, "隣のキャラのジョブ"], [45, "小鬼"], [46, "謝ること"], [55, "異種族"], [56, "星"], [66, "虫"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdom_mk_word_4_table$118.$$arity = 1); - - Opal.def(self, '$getAftersearchBreakTable', $MeikyuKingdom_getAftersearchBreakTable$119 = function $$getAftersearchBreakTable() { - var self = this; - - return self.$get_table_by_2d6(["「おつとめ、ご苦労様です」同行する民たちが感謝の言葉をかける。《民の声》が1点回復する。", "「おい、サボるな」と仲間から怒られた。いやいや、こっちは今までマジメにやってましたよ。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《敵意》が1点上昇する。", "大漁大漁! 色々な素材が見つかる。肉、牙、革、木、鉄の素材(キャラクターシートの上の段の素材)を1個ずつ獲得する。", "そこは、もう、使い魔が探索してくれていたようだ。サンキュー相棒! この捜索の判定に【使い魔】を利用していれば、行動済みにならず、さらにもう1回行動を行うことができる。", "危険なトラップを見つけたが、なんとか無力化できた。任務完了。自分の《気力》が1点回復する。", "何も見つからなかったか、と思っていたら「いつも、ありがとう」と宮廷の仲間から声をかけられた。まぁ、何もない方がいいか。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《好意》が1点上昇する。", "「さすが! 素晴らしいお手並みだ」鮮やかな捜索に、仲間の見る目が変わる。宮廷の中から好きなキャラクター1人を選ぶ。そのキャラクターの自分に対する《好意》が1点上昇する。", "よしよし、これはいいものが見つかった。好きな素材を1d6個獲得する。この捜索の判定に【使い魔】を使用していれば、獲得数が1d6個上昇する。", "大漁大漁! 色々な素材が見つかる。衣料、魔素、機械、火薬、情報の素材(キャラクターシートの上の段の素材)を1個ずつ獲得する。", "うわ! 罠だ。余計なものまで見つけてしまった。宮廷全員は1d6点のダメージを受ける。", "「へぇ、こんなヤツだったのか」仲間の意外な一面を見つける。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《好意》か《敵意》を1点上昇させ、その属性を好きなものに変更できる。"]) - }, $MeikyuKingdom_getAftersearchBreakTable$119.$$arity = 0); - - Opal.def(self, '$getWholeBreakTable', $MeikyuKingdom_getWholeBreakTable$120 = function $$getWholeBreakTable() { - var self = this; - - return self.$get_table_by_2d6(["部屋の中から使えそうな装備をみつくろう。宮廷全員は、それぞれ好きなコモンアイテムのカテゴリを選び、そのランダムにコモンアイテムを1つ獲得する。そのアイテムにレベルがあれば、それは1レベルのものとなる。", "みんなで今後の作戦を練る。宮廷全員は、そのターンの間、あらゆる判定の達成値が1上昇する。", "手分けして物資の調達を行う。各キャラクターは、好きな素材を1d6個獲得できる。このとき、素材が揃っていれば、各キャラクターにつき1個までアイテムを作成することができる。", "体を休めながら他愛もない世間話に花が咲く。宮廷全員は、それぞれ宮廷の中から好きなキャラクター1人を選び、そのキャラクターに対する《好意》が1点上昇する。", "宮廷メンバーで交代で見張りを行い、疲労した配下たちを休ませる。《民の声》が宮廷の人数と同じ値だけ回復する。", "一行はしっかりと休息を取り、鋭気を養う。宮廷全員の《気力》が1点回復する。", "配下たちと一緒に体を休める。《民の声》が1d6点回復する。", "配下たちに見張りを任せ、体を休める。宮廷全員の《HP》がすべて回復する。", "緊急ミーティング! 国家運営に関してみんなで知恵を出し合う。《予算》を[宮廷の人数*1]MG獲得する。", "負傷した配下たちの治療を行う。宮廷全員の《配下》が1d6人回復する。", "宮廷の前に光り輝くアイテムが降臨する。レア武具アイテムかレア一般アイテムのどちらかを選ぶ。ランダムにそのアイテムを1つ選び、それを獲得する。"]) - }, $MeikyuKingdom_getWholeBreakTable$120.$$arity = 0); - return (Opal.def(self, '$getLoversBreakTable', $MeikyuKingdom_getLoversBreakTable$121 = function $$getLoversBreakTable() { - var self = this, table = nil, value = nil; - - - table = [[11, "「あーもう、最悪!」仲良く休憩するつもりが、ひどい喧嘩になってしまう。この表の使用者のお互いに対する《好意》が0になり、その値の分だけお互いに対する《敵意》が上昇する。"], [12, "「何もかもがお前が悪かったのかッ!!」大きな誤解が生まれる。受け身キャラの攻め気キャラ以外に対する《敵意》がすべて0になり、その値の分だけ攻め気キャラに対する《敵意》が上昇する。"], [13, "「でさぁ、あの人のことなんだけど……」せっかく2人きりなのに、他人の話で盛り上がる。この表の使用者は、宮廷の中からこの表の使用者以外のキャラクター1人を選び、そのキャラクターに対する《好意》が1点上昇する。"], [14, "「へぇ、そんなのあるんだ」互いの好きなものについて語り合う。受け身キャラは、攻め気キャラの「好きなもの」1つを選ぶ。受け身キャラは、自分の「好きなもの」1つをそれに変更し、攻め気キャラへの《好意》が1点上昇する。"], [15, "「なぁ、オレのことどう思う?」思い切った質問! 受け身キャラは、攻め気キャラに対する《好意》か《敵意》を1点上昇させ、その属性を好きなものに変更できる。"], [16, "「だいじょうぶ? 無茶するんだから」少し前の失敗について色々と言われてしまう。ありがたいんだけど、少しムカつく。受け身キャラは、攻め気キャラに対する《好意》と《敵意》が1点ずつ上昇する。"], [22, "「え、もうこんな時間!?」一休みするつもりが、気がつくとかなり時間がたっている。宮廷の未行動キャラクターが全員行動済みになったら、通常の時間の経過に加え、さらに1クォーターが経過する。この表の使用者のお互いに対する《好意》が1点上昇する。また、宮廷のこの表の使用者2人に対する《敵意》が1点上昇する。"], [23, "「ねぇねぇ、これわかる?」何気ない質問だが、これは難しい。変な答えは出来ないぞ。攻め気キャラは、〔才覚〕で難易度9の判定を行う。成功すると、この表の使用者のお互いに対する《好意》が1点上昇する。失敗すると、なんとか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《敵意》が1点上昇する。"], [24, "「おいおい、まずは落ち着け」配下同士が喧嘩を始めた。うまく仲裁しないと……。攻め気キャラは、〔魅力〕で難易度9の判定を行う。成功すると、この表の使用者のお互いに対する《好意》が1点上昇する。失敗すると、なんとか危機を切り抜けることができるが、受け身キャラの攻め気キャラに帯する《敵意》が1点上昇する。"], [25, "「オレが解除するからちょっと待ってろ」2人で休憩するつもりが、一緒にトラップにひっかかってしまった。互いの体が密着してしまう。攻め気キャラは、〔探索〕で難易度9の判定を行う。成功すると、この表の使用者のお互いに対する《好意》が1点上昇する。失敗すると、なんとか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《敵意》が1点上昇する。"], [26, "「お前は後ろに下がってろ!」休憩中に怪物に襲われる。攻め気キャラは、〔武勇〕で難易度9の判定を行う。成功すると、この表の使用者のお互いに対する《好意》が1点上昇する。失敗すると、なんとか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《敵意》が1点上昇する。"], [33, "「なぁ、さっきは悪かったな」誤解が解ける。この表の使用者のお互いに対する《敵意》が0になり、その値のぶんだけお互いに対する《好意》が上昇する。"], [34, "「これを言ったのはあなただけです。誰にも言わないでくださいね」受け身キャラが隠している夢や秘密を攻め気キャラが知ってしまう。受け身キャラの攻め気キャラに対する《好意》が1点上昇する。攻め気キャラの受け身キャラに対する《好意》の属性が「忠誠」に変わる。"], [35, "「これからも、よろしく頼むぜ。相棒」攻め気キャラが快活に微笑む。受け身キャラの攻め気キャラに対する《好意》が1点上昇する。攻め気キャラの受け身キャラに対する《好意》の属性が「友情」に変わる。"], [36, "「わ、わたしは、あなたのことが……」受け身キャラの思わぬ告白! 受け身キャラの攻め気キャラに対する《好意》が1点上昇する。攻め気キャラの受け身キャラに対する《好意》の属性が「愛情」に変わる。"], [44, "「大丈夫? 痛くないか?」互いに傷を治療しあう。この表の使用者は、お互いの自分に対する《好意》の分だけ、自分の《HP》を回復することができる。どちらかが《HP》が1点以上回復したら、この表の使用者のお互いに対する《好意》が1点上昇する。"], [45, "「この冒険が終わったら、伝えたいことが……あるんだ」攻め気キャラの真剣な言葉。え、それって……? 受け身キャラの攻め気キャラに対する《好意》が1点上昇する。エピローグに攻め気キャラが生きていれば、この表の使用者のお互いに対する《好意》が2点上昇する。ただし、以後このゲームの間、攻め気キャラが「致命傷表」を使用することになった場合、余分に1個サイコロを振り、その中からもっとも低い目2つを選んで、その結果を適用する。"], [46, "「蝕ッ!? ……って、どこ触ってるんですかッ!?」あたりが不意に暗くなり、思わず変なところを触ってしまう。攻め気キャラの受け身キャラに対する《好意》が2点上昇し、受け身キャラの攻め気キャラに対する《敵意》が2点上昇する。この表の使用者が持っている【星の欠片】1個を破壊すれば、このイベントをなかったことにできる。"], [55, "「これ、はんぶんこしない?」2人仲良く、アイテムを分け合う。この表の使用者が、使用するとなくなる回復アイテムを持っていれば、それを1個使用出来る。ただし、その効果の大賞は、この表を使用した2人に変更される。この表の使用者のお互いに対する《好意》が1点上昇する。"], [56, "「え? え? えぇぇぇぇッ!?」ふとした拍子に唇がふれあう。受け身キャラの攻め気キャラ以外に対する《好意》がすべて0になり、その値のぶんだけ攻め気キャラに対する《好意》が上昇する。"], [66, "「…………」気がつくとお互い、目をそらせなくなってしまう。そのまま顔を寄せ合い……。この表の使用者のお互いに対する《好意》が2点上昇し、その属性を「愛情」にする。"]]; - value = self.$d66(2); - return [self.$get_table_by_number(value, table), value]; - }, $MeikyuKingdom_getLoversBreakTable$121.$$arity = 0), nil) && 'getLoversBreakTable'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$freeze', '$match', '$raise', '$to_i', '$[]', '$roll', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Table'); - - var $nesting = [self].concat($parent_nesting), $Table_initialize$1, $Table_roll$2; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $Table_initialize$1 = function $$initialize(name, type, items) { - var self = this, m = nil; - - - self.name = name; - self.items = items.$freeze(); - m = /(\d+)D(\d+)/i.$match(type); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "Unexpected table type: " + (type)) - }; - self.times = m['$[]'](1).$to_i(); - return (self.sides = m['$[]'](2).$to_i()); - }, $Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $Table_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, value = nil, index = nil; - - - $b = bcdice.$roll(self.times, self.sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(value, self.times); - return "" + (self.name) + "(" + (value) + ") > " + (self.items['$[]'](index)); - }, $Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$setPrefixes', '$count', '$==', '$roll_tables', '$===', '$d66', '$mk_normal_rare_weapon_item_table', '$mk_normal_rare_item_table', '$mk_advanced_rare_weapon_item_table', '$mk_advanced_rare_item_table', '$roll', '$mk_common_item_random_table', '$mk_rare_weapon_item_random_table', '$mk_rare_usual_item_random_table', '$getCount', '$last_match', '$mk_device_factory_table', '$debug', '$mk_name_ar_table', '$mk_name_fo_table', '$mk_name_dn_table', '$mk_name_pl_table', '$mk_name_ma_table', '$mk_name_go_table', '$times', '$mk_new_name_table', '$+', '$mk_random_map_select_table', '$mk_kingdom_name_1_table', '$mk_kingdom_name_2_table', '$mk_kingdom_name_3_table', '$mk_kingdom_environment_table', '$mk_technic_decide_table', '$mk_national_style_decide_table', '$mk_resource_decide_table', '$mk_facility_decide_table', '$mk_human_resources_decide_table', '$mk_blood_decide_table', '$mk_advanced_bullet_skill_table', '$mk_advanced_shooting_skill_table', '$mk_advanced_astrology_skill_table', '$mk_advanced_summon_skill_table', '$mk_advanced_science_skill_table', '$mk_advanced_labyrinth_skill_table', '$mk_advanced_negotiation_skill_table', '$mk_advanced_convenient_skill_table', '$mk_advanced_entertainment_skill_table', '$mk_advanced_tool_skill_table', '$!', '$nil?', '$get_table_by_2d6', '$get_table_by_1d6', '$get_table_by_number', '$lambda', '$mk_weapon_item_table', '$mk_life_item_table', '$mk_rest_item_table', '$mk_search_item_table', '$<=', '$mk_nick_pr_table', '$mk_nick_fo_table', '$mk_nick_ou_table', '$mk_nick_ti_table', '$mk_nick_ph_table', '$mk_nick_co_table', '$mk_item_random_table', '$mk_item_features_table', '$mk_item_power_table', '$mk_item_jyumon_table', '$mk_item_jyuka_table', '$mk_item_aptitude_table', '$mk_item_attribute_table', '$to_s', '$mk_gender_table', '$rand', '$odd?', '$get_table_by_1d3', '$freeze', '$new']); - - self.$require("diceBot/MeikyuKingdom"); - self.$require("utils/table"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'MeikyuKingdomBasic'); - - var $nesting = [self].concat($parent_nesting), $MeikyuKingdomBasic_initialize$1, $MeikyuKingdomBasic_getKiryokuResult$2, $MeikyuKingdomBasic_rollDiceCommand$3, $MeikyuKingdomBasic_mk_talent_break_table$5, $MeikyuKingdomBasic_mk_charm_break_table$6, $MeikyuKingdomBasic_mk_search_break_table$7, $MeikyuKingdomBasic_mk_valor_break_table$8, $MeikyuKingdomBasic_mk_talent_happening_table$9, $MeikyuKingdomBasic_mk_charm_happening_table$10, $MeikyuKingdomBasic_mk_search_happening_table$11, $MeikyuKingdomBasic_mk_valor_happening_table$12, $MeikyuKingdomBasic_mk_kingdom_disaster_table$13, $MeikyuKingdomBasic_mk_kingdom_change_table$14, $MeikyuKingdomBasic_mk_critical_attack_table$15, $MeikyuKingdomBasic_mk_fatal_wounds_table$16, $MeikyuKingdomBasic_mk_combat_fumble_table$17, $MeikyuKingdomBasic_mk_travel_table$18, $MeikyuKingdomBasic_mk_negotiation_table$19, $MeikyuKingdomBasic_mk_emotion_table$20, $MeikyuKingdomBasic_mk_festival_table$21, $MeikyuKingdomBasic_mk_festival_break_table$22, $MeikyuKingdomBasic_getWholeBreakTable$23, $MeikyuKingdomBasic_getLoversBreakTable$24, $MeikyuKingdomBasic_mk_common_item_random_table$25, $MeikyuKingdomBasic_mk_rare_usual_item_random_table$30, $MeikyuKingdomBasic_mk_rare_weapon_item_random_table$37, $MeikyuKingdomBasic_mk_weapon_item_table$44, $MeikyuKingdomBasic_mk_life_item_table$45, $MeikyuKingdomBasic_mk_rest_item_table$46, $MeikyuKingdomBasic_mk_search_item_table$47, $MeikyuKingdomBasic_mk_word_1_table$48, $MeikyuKingdomBasic_mk_word_2_table$49, $MeikyuKingdomBasic_mk_word_3_table$50, $MeikyuKingdomBasic_mk_word_4_table$51, $MeikyuKingdomBasic_mk_treasure1_table$52, $MeikyuKingdomBasic_mk_treasure2_table$53, $MeikyuKingdomBasic_mk_treasure3_table$54, $MeikyuKingdomBasic_mk_treasure4_table$55, $MeikyuKingdomBasic_mk_treasure5_table$56, $MeikyuKingdomBasic_mk_name_ex_table$57, $MeikyuKingdomBasic_mk_new_name_table$58, $MeikyuKingdomBasic_mk_nick_pr_table$59, $MeikyuKingdomBasic_mk_nick_fo_table$60, $MeikyuKingdomBasic_mk_nick_ou_table$61, $MeikyuKingdomBasic_mk_nick_ti_table$62, $MeikyuKingdomBasic_mk_nick_ph_table$63, $MeikyuKingdomBasic_mk_nick_co_table$64, $MeikyuKingdomBasic_mk_name_ar_table$65, $MeikyuKingdomBasic_mk_name_fo_table$66, $MeikyuKingdomBasic_mk_name_dn_table$67, $MeikyuKingdomBasic_mk_name_pl_table$68, $MeikyuKingdomBasic_mk_name_ma_table$69, $MeikyuKingdomBasic_mk_name_go_table$70, $MeikyuKingdomBasic_mk_normal_rare_item_table$71, $MeikyuKingdomBasic_mk_normal_rare_weapon_item_table$72, $MeikyuKingdomBasic_mk_advanced_rare_item_table$73, $MeikyuKingdomBasic_mk_advanced_rare_weapon_item_table$74, $MeikyuKingdomBasic_mk_device_factory_table$75, $MeikyuKingdomBasic_mk_item_random_table$77, $MeikyuKingdomBasic_mk_item_features_table$84, $MeikyuKingdomBasic_mk_item_power_table$85, $MeikyuKingdomBasic_mk_item_jyumon_table$86, $MeikyuKingdomBasic_mk_item_jyuka_table$87, $MeikyuKingdomBasic_mk_item_aptitude_table$88, $MeikyuKingdomBasic_mk_item_attribute_table$90, $MeikyuKingdomBasic_mk_gender_table$91, $MeikyuKingdomBasic_mk_random_map_select_table$92, $MeikyuKingdomBasic_mk_kingdom_name_1_table$93, $MeikyuKingdomBasic_mk_kingdom_name_2_table$94, $MeikyuKingdomBasic_mk_kingdom_name_3_table$95, $MeikyuKingdomBasic_mk_kingdom_environment_table$96, $MeikyuKingdomBasic_mk_advanced_bullet_skill_table$103, $MeikyuKingdomBasic_mk_advanced_shooting_skill_table$104, $MeikyuKingdomBasic_mk_advanced_astrology_skill_table$105, $MeikyuKingdomBasic_mk_advanced_summon_skill_table$106, $MeikyuKingdomBasic_mk_advanced_science_skill_table$107, $MeikyuKingdomBasic_mk_advanced_labyrinth_skill_table$108, $MeikyuKingdomBasic_mk_advanced_negotiation_skill_table$109, $MeikyuKingdomBasic_mk_advanced_convenient_skill_table$110, $MeikyuKingdomBasic_mk_advanced_entertainment_skill_table$111, $MeikyuKingdomBasic_mk_advanced_tool_skill_table$112, $MeikyuKingdomBasic_mk_technic_decide_table$113, $MeikyuKingdomBasic_mk_national_style_decide_table$114, $MeikyuKingdomBasic_mk_resource_decide_table$115, $MeikyuKingdomBasic_mk_facility_decide_table$116, $MeikyuKingdomBasic_mk_human_resources_decide_table$117, $MeikyuKingdomBasic_mk_blood_decide_table$118; - - - Opal.const_set($nesting[0], 'ID', "MeikyuKingdomBasic"); - Opal.const_set($nesting[0], 'NAME', "迷宮キングダム 基本ルールブック"); - Opal.const_set($nesting[0], 'SORT_KEY', "めいきゆうきんくたむ きほんるうるふつく"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + " ・判定 (nMK+m)\n" + "  n個のD6を振って大きい物二つだけみて達成値を算出します。修正mも可能です。\n" + "  絶対成功と絶対失敗も自動判定します。\n" + " ・各種表\n" + "  ・休憩表:才覚 TBT/魅力 CBT/探索 SBT/武勇 VBT\n" + " お祭り FBT/空振り EBT/全体 WBT/カップル LBT\n" + "  ・ハプニング表:才覚 THT/魅力 CHT/探索 SHT/武勇 VHT\n" + "  ・視察表 RT/情報収集表 IGT/ランダムマップ選択表 RMS\n" + "  ・痛打表 CAT/致命傷表 FWT/戦闘ファンブル表 CFT\n" + "  ・道中表 TT/交渉表 NT/相場表 MPT/王国災厄表 KDT/王国変動表 KCT\n" + "  ・感情表 ET/好意表 FET/敵意表 HET\n" + "  ・お宝表1/2/3/4/5 T1T/T2T/T3T/T4T/T5T\n" + "  ・特殊遭遇表 SE\n" + "    上級:人工 ARN/水域 WEN/自然 NEN/洞窟 CEN/天空 SEN/異界 OEN\n" + " ・潜在能力:スキル決定表 SDT\n" + "   基本:肉弾 BUS/射撃 SHS/星術 ASS/召喚 SUS/科学 SCS\n" + "      迷宮 LAS/交渉 NES/便利 COS/芸能 ENS/道具 TOS\n" + "   上級:肉弾 ABUS/射撃 ASHS/星術 AASS/召喚 ASUS/科学 ASCS\n" + "      迷宮 ALAS/交渉 ANES/便利 ACOS/芸能 AENS/道具 ATOS\n" + " ・アイテム関連(上級不使用の場合、カッコ書きのものを使用して下さい)\n" + "  ・コモンアイテムランダム決定表 CIR\n" + "    コモンアイテム表:武具 WIT/生活 LIT/回復 RIT/探索 SIT\n" + "  ・レア武具アイテムランダム決定表 RWIR/レア一般アイテムランダム決定表 RUIR(上級込)\n" + "    レアアイテム表:基本武具 NRWT/基本一般 NRUT/上級武具 ARWT/上級一般 ARUT\n" + "  ・デヴァイスファクトリー DFTx (xは特性の個数)\n" + " ・王国人物作成関連\n" + "  ・王国名決定表1/2/3 KNT1/KNT2/KNT3\n" + "  ・王国環境表 KET:技術 TET/国風 NST/資源 RET/人材 HRT/施設 FAT/血族 BLT\n" + "  ・名前表 NAMEx (xは個数)\n" + "    名前A NAMEA/名前B NAMEB/エキゾチック NAMEEX/ファンタジック NAMEFA\n" + "  ・新名前表 NNAMEx (xは個数)\n" + "    芸術 NMAR/食べ物 NMFO/日用品 NMDN/地名 NMPL/機械 NMMA/神様 NMGO\n" + "  ・単語表1/2/3/4 WORD1/WORD2/WORD3/WORD4\n" + "  ・生まれ決定表 BDT/生まれ表:才覚 TBO/魅力 CBO/探索 SBO/武勇 TBO\n" + "  ・初期装備表 IEQ\n" + " ・地名決定表 PNTx (xは個数)/迷宮風景表 MLTx (xは個数)\n" + " ・D66ダイスあり\n"); - self.$setPrefixes(["\\d+MK", "IG", "TT", "NT", "RMS", "CFT", "FWT", "CAT", "KDT", "KCT", "TBT", "CBT", "SBT", "VBT", "FBT", "EBT", "WBT", "LBT", "THT", "CHT", "SHT", "VHT", "BDT", "TBO", "CBO", "SBO", "VBO", "ET", "FET", "HET", "SDT", "IEQ", "FRT", "T1T", "T2T", "T3T", "T4T", "T5T", "MPT", "KNT\\d+", "WORD\\d+", "NAME.*", "NNAME.*", "NM.*", "RT", "CIR", "RUIR", "RWIR", "WIT", "LIT", "RIT", "SIT", "NRWT", "NRUT", "ARWT", "ARUT", "KET", "TET", "NST", "RET", "FAT", "HRT", "BLT", "BUS", "SHS", "ASS", "SUS", "SCS", "LAS", "NES", "COS", "ENS", "TOS", "ABUS", "ASHS", "AASS", "ASUS", "ASCS", "ALAS", "ANES", "ACOS", "AENS", "ATOS", "SE", "ARN", "WEN", "NEN", "CEN", "SEN", "OEN", "DFT\\d+"]); - - Opal.def(self, '$initialize', $MeikyuKingdomBasic_initialize$1 = function $$initialize() { - var $iter = $MeikyuKingdomBasic_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $MeikyuKingdomBasic_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $MeikyuKingdomBasic_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $MeikyuKingdomBasic_initialize$1.$$arity = 0); - - Opal.def(self, '$getKiryokuResult', $MeikyuKingdomBasic_getKiryokuResult$2 = function $$getKiryokuResult(_total_n, dice_list, _diff) { - var self = this, num_6 = nil; - - - num_6 = dice_list.$count(6); - if (num_6['$=='](0)) { - return "" - } else { - return "" + " & 《気力》" + (num_6) + "点獲得" - }; - }, $MeikyuKingdomBasic_getKiryokuResult$2.$$arity = 3); - - Opal.def(self, '$rollDiceCommand', $MeikyuKingdomBasic_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var $a, $b, $$4, $iter = $MeikyuKingdomBasic_rollDiceCommand$3.$$p, $yield = $iter || nil, self = this, output = nil, type = nil, total_n = nil, $case = nil, dummy = nil, count = nil, names = nil; - - if ($iter) $MeikyuKingdomBasic_rollDiceCommand$3.$$p = null; - - output = ""; - type = ""; - total_n = ""; - if ($truthy((output = self.$roll_tables(command, $$($nesting, 'TABLES'))))) { - return output - } else { - - $case = command; - if (/^NRWT/i['$===']($case)) { - type = "基本レア武具アイテム"; - total_n = self.$d66(1); - output = self.$mk_normal_rare_weapon_item_table(total_n);} - else if (/^NRUT/i['$===']($case)) { - type = "基本レア一般アイテム"; - total_n = self.$d66(1); - output = self.$mk_normal_rare_item_table(total_n);} - else if (/^ARWT/i['$===']($case)) { - type = "上級レア武具アイテム"; - total_n = self.$d66(1); - output = self.$mk_advanced_rare_weapon_item_table(total_n);} - else if (/^ARUT/i['$===']($case)) { - type = "上級レア一般アイテム"; - total_n = self.$d66(1); - output = self.$mk_advanced_rare_item_table(total_n);} - else if (/^CIR/i['$===']($case)) { - type = "コモンアイテムランダム決定"; - $b = self.$roll(1, 4), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), (dummy = ($a[1] == null ? nil : $a[1])), $b; - output = self.$mk_common_item_random_table(total_n);} - else if (/^RWIR/i['$===']($case)) { - type = "レア武具アイテムランダム決定"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), (dummy = ($a[1] == null ? nil : $a[1])), $b; - output = self.$mk_rare_weapon_item_random_table(total_n);} - else if (/^RUIR/i['$===']($case)) { - type = "レア一般アイテムランダム決定"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), (dummy = ($a[1] == null ? nil : $a[1])), $b; - output = self.$mk_rare_usual_item_random_table(total_n);} - else if (/^DFT(\d*)/i['$===']($case)) { - type = "デヴァイス・ファクトリー"; - count = self.$getCount($$($nesting, 'Regexp').$last_match(1)); - output = self.$mk_device_factory_table(count); - total_n = count;} - else if (/^NMAR/i['$===']($case)) { - self.$debug("namea passed"); - type = "芸術系名前"; - total_n = self.$d66(2); - output = self.$mk_name_ar_table(total_n);} - else if (/^NMFO/i['$===']($case)) { - type = "食べ物系名前"; - total_n = self.$d66(2); - output = self.$mk_name_fo_table(total_n);} - else if (/^NMDN/i['$===']($case)) { - type = "日用品系名前"; - total_n = self.$d66(2); - output = self.$mk_name_dn_table(total_n);} - else if (/^NMPL/i['$===']($case)) { - type = "地名系名前"; - total_n = self.$d66(2); - output = self.$mk_name_pl_table(total_n);} - else if (/^NMMA/i['$===']($case)) { - type = "機械系名前"; - total_n = self.$d66(2); - output = self.$mk_name_ma_table(total_n);} - else if (/^NMGO/i['$===']($case)) { - type = "神様系名前"; - total_n = self.$d66(2); - output = self.$mk_name_go_table(total_n);} - else if (/^NNAME(\d*)/i['$===']($case)) { - type = "新名前"; - count = self.$getCount($$($nesting, 'Regexp').$last_match(1)); - names = ""; - $send(count, 'times', [], ($$4 = function(_i){var self = $$4.$$s || this, $c, $d, name = nil, dice = nil; - - - - if (_i == null) { - _i = nil; - }; - $d = self.$mk_new_name_table(), $c = Opal.to_ary($d), (name = ($c[0] == null ? nil : $c[0])), (dice = ($c[1] == null ? nil : $c[1])), $d; - names = $rb_plus(names, "" + "[" + (dice) + "]" + (name) + " "); - output = names; - return (total_n = count);}, $$4.$$s = self, $$4.$$arity = 1, $$4));} - else if (/^RMS/i['$===']($case)) { - type = "ランダムマップ選択"; - total_n = self.$d66(1); - output = self.$mk_random_map_select_table(total_n);} - else if (/^KNT(\d+)/i['$===']($case)) { - type = "王国名決定"; - count = self.$getCount($$($nesting, 'Regexp').$last_match(1)); - total_n = self.$d66(2); - $case = count; - if ((1)['$===']($case)) {output = self.$mk_kingdom_name_1_table(total_n)} - else if ((2)['$===']($case)) {output = self.$mk_kingdom_name_2_table(total_n)} - else if ((3)['$===']($case)) {output = self.$mk_kingdom_name_3_table(total_n)};} - else if (/^KET/i['$===']($case)) { - type = "王国環境"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_kingdom_environment_table(total_n);} - else if (/^TET/i['$===']($case)) { - type = "技術決定"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_technic_decide_table(total_n);} - else if (/^NST/i['$===']($case)) { - type = "国風決定"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_national_style_decide_table(total_n);} - else if (/^RET/i['$===']($case)) { - type = "資源決定"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_resource_decide_table(total_n);} - else if (/^FAT/i['$===']($case)) { - type = "施設決定"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_facility_decide_table(total_n);} - else if (/^HRT/i['$===']($case)) { - type = "人材決定"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_human_resources_decide_table(total_n);} - else if (/^BLT/i['$===']($case)) { - type = "血族決定"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = self.$mk_blood_decide_table(total_n);} - else if (/^ABUS/i['$===']($case)) { - type = "上級肉弾スキル"; - $b = self.$mk_advanced_bullet_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^ASHS/i['$===']($case)) { - type = "上級射撃スキル"; - $b = self.$mk_advanced_shooting_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^AASS/i['$===']($case)) { - type = "上級星術スキル"; - $b = self.$mk_advanced_astrology_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^ASUS/i['$===']($case)) { - type = "上級召喚スキル"; - $b = self.$mk_advanced_summon_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^ASCS/i['$===']($case)) { - type = "上級科学スキル"; - $b = self.$mk_advanced_science_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^ALAS/i['$===']($case)) { - type = "上級迷宮スキル"; - $b = self.$mk_advanced_labyrinth_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^ANES/i['$===']($case)) { - type = "上級交渉スキル"; - $b = self.$mk_advanced_negotiation_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^ACOS/i['$===']($case)) { - type = "上級便利スキル"; - $b = self.$mk_advanced_convenient_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^AENS/i['$===']($case)) { - type = "上級芸能スキル"; - $b = self.$mk_advanced_entertainment_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/^ATOS/i['$===']($case)) { - type = "上級道具スキル"; - $b = self.$mk_advanced_tool_skill_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;}; - if ($truthy(output['$nil?']()['$!']())) { - - self.$debug("output", output); - return (output = "" + (type) + "表(" + (total_n) + ") > " + (output)); - } else { - return $send(self, Opal.find_super_dispatcher(self, 'rollDiceCommand', $MeikyuKingdomBasic_rollDiceCommand$3, false), [command], null) - }; - }; - }, $MeikyuKingdomBasic_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$mk_talent_break_table', $MeikyuKingdomBasic_mk_talent_break_table$5 = function $$mk_talent_break_table() { - var self = this; - - return self.$get_table_by_2d6(["寝付けないので、民と噂話に花を咲かせる。すると、経費削減のアイデアが……。[才覚/9]の判定を行う。成功すると、このセッションの《維持費》を(1D6)MG減少できる。", "自分の嫌いなものに追い回される夢を見る。心寂しくなったところに、仲間が様子を見に来てくれた。宮廷の中からキャラクター1人を選ぶ。そのキャラクターへの《好意》+1。", "好きなものの夢を見る。鳴呼、もっと……もっと……。好きなもの1つを選ぶ。その好きなものに関する幸せそうなシチュエーションを考え、他のプレイヤーやGMに伝える。その夢が幸せそうだと感じる者がいたら、《気力》+2。", "さて一眠りするか……というときに、1人の民が青い顔をして震えている。どうやら、 国に残した家族のことが心配なようだ。[才覚/11]の判定を行う。成功すると、《民の声》+2。", "「もう少しだ。頑張ろう」あなたは、あらん限りの力をこめて、仲間に呼びかけた。[才覚/9]の判定を行う。成功すると、宮廷のキャラクターは《気力》を1点ずつ消費できる。消費した《気力》と合計値だけ《民の声》が回復する。", "配下や仲間たちに指示を出し、休憩中も休む暇なく働く。くたくたになって、あくびをすると配下がお茶を差し入れてくれた。《民の声》+1。", "地図を前にして、今後の冒険について口角泡を飛ばす。意見の対立はあったが、あなたの意見が通った。我々に必要なのは英雄的死亡ではなく、卑劣な生存なのだ。 宮廷の好きなキャラクター1体を選ぶ。そのキャラクターの自分に対する《敵意》を好きなだけ上昇させ、上昇した値だけ《民の声》を回復する。", "たまには、わたしが料理してみるか……。【お弁当】か【フルコース】の効果を使用して、食事をとることができる。食事をしたら、(1D6)を振る。奇数だったら思いのほか美味しい出来映え。《民の声》+1。偶数だったら腹にはたまるが二度とごめんという出来映え。宮廷全員のあなたに対する《敵意》+1。", "配下の中でも年若い者たちがあなたの周りに群がり、冒険の話を聞かせてくれとせがむ。[才覚/現在の《民の声》の値+3] の判定を行う。成功すれば、《民の声》+(1D6)。失敗すると、次の1クォーターは行動ができない。", "迷宮に囚われた哀れな人々を見つける。助けたいのはやまやまだが、食料がやや心配だ。[才覚/9]の判定を行う。成功すると、自分の《配下》+(1D6)人。", "「やはりな……」迷宮は予想通り、一筋縄ではいかないようだ。こんなときこそ、準備しておいたアレが役に立つ。自分の修得しているスキル1種を選ぶ。そのスキルを喪失して、そのスキルと同じスキルグループのスキル1種を修得してもよい。この効果は永続する。"]) - }, $MeikyuKingdomBasic_mk_talent_break_table$5.$$arity = 0); - - Opal.def(self, '$mk_charm_break_table', $MeikyuKingdomBasic_mk_charm_break_table$6 = function $$mk_charm_break_table() { - var self = this; - - return self.$get_table_by_2d6(["妖精のワイン蔵を発見、酒盛りが始まる。宮廷全員の《気力》+1。[魅カ/9]の判定に失敗すると、酔っ払ったあなたは服を脱ぎはじめる。(1D6)を振る。自分を除く宮廷全員のあなたに対する《感情値》+1、奇数ならその属性が《好意》、偶数なら《敵意》になる。", "「実はわたし……むにゃむにゃむにゃ」休憩中、意外な寝言を言ってしまう。自分を除く宮廷全員は、自分に対する《好意》と《敵意》を反転させることができる。", "休憩中、冷たい床があなたの体温を奪っていく。あなたは、無意識のうちにぬくもりを求め、体を寄せ合う。あなたに《好意》を持っているキャラクターの数だけ、《気カ》と《HP》が回復する。", "こっそり2人で抜け出していい雰囲気に。その部屋の中に、自分と好きなものが同じキャラクターがいれば、そのキャラクター1体を選び、互いに対する《好意》+1。", "星の灯りがあなたの顔をロマンチックに照らし出す。その部屋にいる人物の中から好きなキャラクター1人を選び、[魅力/9+そのキャラクターのあなたに対する《好意》]の判定を行う。成功すると、そのキャラクターのあなたに対する《好意》+1。", "あいつと目が合う。[魅力/9]の判定を行う。成功したら、自分以外の宮廷の中から、ランダムにキャラクター1体を選ぶ。そのキャラクターから自分に対する《好意》か、自分からそのキャラクターに対する《好意》かのいずれかが1点上昇する。", "見張りの途中にうたた寝。目を覚ますと、誰かが毛布をかけてくれていた。ランダムにキャラクターを選ぶ。自分のそのキャラクターに対する《好意》+1。", "野営に最適な場所を見つける。たき火を囲みながら、思い思い会話を楽しむ。GMの左隣にいるプレイヤーから順番に、自分のPCが《好意》を持っているキャラクター1体を選ぶ。選ばれたキャラクターは、《気力》+1。誰からも選ばれなかったキャラクターは《気力》-1、宮廷の中からランダムにキャラクター1体を選ぶ。そのキャラクターに対する《敵意》+1。", "疲れた体を癒やすため、テントの中で楽な衣装に着替えよう。するとそこに侵入者が……。宮廷からランダムにキャラクターを1人選び(1D6)を振る。奇数ならあなたは大声を出し、宮廷全員のそのキャラクターに対する《敵意》+1。偶数ならそのキャラクターとあなたの互いに対する《好意》+1。", "部屋のすみに隠れていた怪物が現れた! すぐには襲いかかってこないようだが……。[魅力/10]の判定を行う。成功すれば怪物と友好関係を結ぶことができる。自分のレベル以下のモンスター1体を選び、そのモンスターが自分の《配下》になる。失敗すると、モンスターに襲われる。宮廷全員の《HP》が(1D6)点減少する。", "ふとした拍子に唇が触れあう★ 好きなキャラクター1体を選ぶ。そのキャラクターの自分以外に対する《好意》を合計し、その値を自分に対する《好意》に加える。その後、そのキャラクターの自分以外に対する《好意》をすべて0にする。"]) - }, $MeikyuKingdomBasic_mk_charm_break_table$6.$$arity = 0); - - Opal.def(self, '$mk_search_break_table', $MeikyuKingdomBasic_mk_search_break_table$7 = function $$mk_search_break_table() { - var self = this; - - return self.$get_table_by_2d6(["一休みする前に道具の手入れ。使い慣れた道具ほど手になじむ。ランダムに自分の装備しているアイテム1つを選ぶ。そのアイテムのレベルが1上昇する。", "寝床を探していたら、アルコーブがあり、その奥に宝箱をみつける。[探索/9]の判定を行う。成功すると、好きな素材1種類を選び、それを(1D6)個獲得する。", "民が寝静まったあと、あなたも一眠り。するとその夢の中で……。[探索/11]の判定を行う。成功したら、好きな部屋を指定する。その部屋の脅威情報を、GMから教えてもらうことができる。 ", "配下が眠りにつき、部屋が静寂に包まれると、隣の部屋から妙な音が聞こえる。この部屋に隣接する好きな部屋1つを選ぶ。[探索/9]の判定に成功すると、その部屋のモンスターの種類と数が分かる。", "一休みしようと思ったら、モンスターの墓場を発見! みんなで捜索だ。好きな素材を1種類選ぶ。宮廷全員の中で、あなたに対する《好意》の合計値だけ、その素材が手に入る。", "この部屋はなぜか落ち着く。もしも、その部屋の中にあなたの好きなものがあれば、《気力》を(1D6)点回復することができる。あなたはGMにその部屋に自分の好きなものがないか質問してもよい。", "壁に描かれた奇妙な壁画が、あなたを見つめているような気がする……。[探索/9]の判定を行う。成功すると、【エレベータ】を発見する。", "白骨化した先客の死体が見つかる。使えそうな装備は、ありがたく頂戴しておこう。[探索/10]の判定を行う。成功したら、コモンアイテムのカテゴリの中から好きなもの1つを選び、その中からランダムに決めたアイテム1個を手に入れる。", "星の灯りで地図を眺める。この部屋の構造からすると、この辺りに何かあるはずなんだが……? [探索/10]の判定に成功すると、この部屋に仕掛けられたイベント型のトラップをすべて発見する。", "自然の呼び声。休んでいる間にトイレにいきたくなった……。[探索/10]の判定を行う。成功すると、その部屋に迷宮のほころびを見つける。このセッションの間、この部屋から迷宮の外に帰還することができる。", "こ、これは秘密の扉!? [探索/11]の判定を行う。成功すると、この部屋に隣接する好きな部屋に通路を伸ばすことができる。"]) - }, $MeikyuKingdomBasic_mk_search_break_table$7.$$arity = 0); - - Opal.def(self, '$mk_valor_break_table', $MeikyuKingdomBasic_mk_valor_break_table$8 = function $$mk_valor_break_table() { - var self = this; - - return self.$get_table_by_2d6(["時が満ちるにつれ、闘志が高まる。現在の経過ターン数と等しい値だけ、《気力》が回復する。", "もっと……もっと敵と戦いたい。血に飢えた自分を発見する。[武勇/9]の判定を行う。成功すると、《気力》+1、《HP》が(1D6)点回復する。", "部屋の片隅にうち捨てられたむごたらしい亡骸を発見する。このマップの支配者の名前が分かっていれば、宮廷全員、このマップの支配者への《敵意》+1できる。", "部屋のすみに隠れていた怪物が、休憩中の民に襲いかかる! あなたは、咄嗟に武器を手にし、怪物たちに躍りかかった! [武勇/9]の判定を行う。成功すれば怪物を追い払い、《民の声》+1。失敗すると、自分の《配下》-(1D6)人、《民の声》-1。", "危ない! 短剣があなたの横をかすめる。すると、そこにはあなたに躍りかかろうとしていた毒蛇が。もしかして、アイツのことを誤解していたかも……。自分が《敵意》を持っているキャラクター1体を選び、そのキャラクターに対する《好意》+2。", "少し見ないうちに、恐るべき実力を身につけている。今のうちに潰しておくか……。あなたの中にドス黒い気持ちがわき上がる。名前を知っているキャラクター1体を選び、そのキャラクターへの《敵意》+1。", "ちょっとした行き違いから、軽い口論になってしまう。宮廷の中からランダムにキャラクターを1体選ぶ。そのキャラクターとあなたの互いに対する《敵意》+1。", "ライバルの活躍が気になる。宮廷全員の中で、あなたに対する最も高い《敵意》の値と同じだけ《気力》を獲得する。", "休むときに休まなければ、いざというときに戦えない。他の仲間にまかせて、しっかりと体を休めることにする。《HP》を(2D6)点回復することができる。", "この足跡は……もしや? 怪物のいた痕跡を発見する。[武勇/10]の判定を行う。成功すると、このゲームで遭遇する予定のまだ種類の分かっていないモンスターを1種類、GMから教えてもらうことができる。", "……殺気! あなたは、毛布をはねのけ、戦闘態勢を整えるよう指示した。「特殊遭遇表」を1回使用し、その後、好きな素材を(1D6)個獲得する。さらに、ランダムにレアアイテム1種を選び、それを手に入れる。"]) - }, $MeikyuKingdomBasic_mk_valor_break_table$8.$$arity = 0); - - Opal.def(self, '$mk_talent_happening_table', $MeikyuKingdomBasic_mk_talent_happening_table$9 = function $$mk_talent_happening_table() { - var self = this; - - return self.$get_table_by_2d6(["自分に王国を導くことなど可能なのだろうか……。【お酒】を1個消費することができなければ、このセッションの間、[才覚]-1。", "国王の威信が問われる。(2D6)を振り、その値が[《民の声》+宮廷全員の国王に対する《好意》の合計]以上だった場合、《民の声》-(1D6)、さらにもう1度(2D6)を振って、才覚ハプニング表の効果を適用する。", "思考に霧の帳が降りる。「散漫2」の変調を受ける。", "重大な裏切りを犯してしまう! あなたに対する《好意》が最も高いキャラクターを1人選ぶ。そのキャラクターのあなたに対する《感情値》を《敵意》に反転させる。", "この人についていっていいのだろうか……? 宮廷全員のあなたに対する《好意》-1(0未満にはならない)。その結果、誰かの《好意》が0になると《民の声》-1。", "宮廷のスキャンダルが暴露される! 宮廷全員のあなたに対する《敵意》の中で、最も高い値と同じだけ《民の声》が減少する。", "あなたの失策が近隣で噂になる。近隣の国からランダムに国を1つ選ぶ。その国との関係が1段階悪化する。", "王国の経済に破綻の危険が発見される。[生活レベル/9+現在の経過ターン数]の判定を行う。失敗すると、維持費が(1D6)MG上昇する。", "この区画一帯の疲労が一層激しくなる。1クォーターが経過する。", "逸材の賃上げ要求が始まる。終了フェイズの予算会議のとき、[今回使用した逸材の数×1]MGだけ維持費が上昇する。", "今の自分に自信が持てなくなる。生まれ表からランダムにジョブを1つ選び、現在のジョブをそのジョブに変更する。"]) - }, $MeikyuKingdomBasic_mk_talent_happening_table$9.$$arity = 0); - - Opal.def(self, '$mk_charm_happening_table', $MeikyuKingdomBasic_mk_charm_happening_table$10 = function $$mk_charm_happening_table() { - var self = this; - - return self.$get_table_by_2d6(["民同士のいさかいに心を痛め、頭髪にダメージが! 【お酒】を1個消費することができなければ、このセッションの間、[魅力]-1。", "あなたの何気ない一言が不和の種に……。好きなキャラクター1人選ぶ。そのキャラクターに対する宮廷全員の《敵意》+1。", "あなたの美しさに嫉妬した迷宮が、あなたの姿を変える。「呪い3」の変調を受ける。", "可愛さあまって憎さ百倍。あなたに対する《好意》が最も高いキャラクターを1人選ぶ。そのキャラクターのあなたに対する《感情値》を《敵意》に反転する。", "あなたをめぐって不穏な空気……。宮廷全員のあなたに対する愛情の《好意》を比べ、上から2人を選ぶ。その2人の互いに対する《敵意》+1。", "いがみ合う宮廷の面々を見て、民の士気が減少する。宮廷全員のあなたに対する《敵意》の中で、最も高い値と同じだけ、自分の《配下》が減少する。", "宮廷に嫉妬の嵐が巻き起こる。宮廷の中で、あなたに対して《好意》を持つキャラクターの数を数える。このセッションの間、行為判定を行うとき、サイコロの目の合計がこの数以下だった場合、絶対失敗となる(2未満にはならない)。", "愛想をつかされる。宮廷全員のあなたに対する《好意》-1(0未満にはならない)。", "あなたの指揮に疑問を訴える者が……。[魅力/自分の《配下》の値×1]の判定を行う。失敗した場合、[難易度-達成値]人の《配下》が減少する。", "あなたの恋人だという異性が現れる! 宮廷全員のあなたに対する《好意》を比べ、最も高いキャラクターを1人選ぶ。そのキャラクターの[武勇]の値と同じだけ《HP》を減少する。", "他人が信用できなくなる。このセッションの間、協調行動を行えなくなる。"]) - }, $MeikyuKingdomBasic_mk_charm_happening_table$10.$$arity = 0); - - Opal.def(self, '$mk_search_happening_table', $MeikyuKingdomBasic_mk_search_happening_table$11 = function $$mk_search_happening_table() { - var self = this; - - return self.$get_table_by_2d6(["指の震えが止まらない……。【お酒】を1個消費することができなければ、このセッション中、[探索]-1。", "流れ星に直撃。《HP》-(1D6)。", "敵の過去を知り、相手に同情してしまう。あなたは、このマップの支配者に対する《好意》+1。このセッションの間、《好意》を持ったキャラクターに対して攻撃を行い、絶対失敗した場合、その《好意》の値だけ《気力》が減少する。", "昨日の友は今日の敵。あなたに対する《好意》が最も高いキャラクターを1人選ぶ。そのキャラクターのあなたに対する《感情値》を《敵意》に反転する。", "うっかりアイテムを落として壊してしまう。ランダムにアイテムスロットを1つ選ぶ。そのスロットにアイテムが入っていれば、そのアイテムをすべて破壊する。", "カーネルが活性化し、トラップが強化される。このセッションの間、トラップを解除するための難易度+1。", "友情にヒビが! 宮廷全員のあなたに対する《敵意》+1。", "敵の疲労攻撃! 宮廷全員は[探索/11]の判定を行う。失敗したキャラクターは(2D6)点のダメージを受ける。", "つい出来心から、国費に手を出してしまう。GMは好きなコモンアイテム1つを選ぶ。そのキャラクターはそのアイテムを入手するが、維持費+(1D6)、《民の声》-1。同じ部屋に別のPCがいれば、《希望》1点消費し、[探索/9]の判定に成功すればそれを止めることができる。", "封印されていたトラップを作動させてしまう。ランダムに災害系トラップの中から1つ選ぶ。そのトラップが発動する。", "あなたを憎む迷宮支配者が、あなたの首に賞金をかけた。このセッションの間、モンスターの攻撃やトラップの目標をランダムに決める場合、その目標は必ずあなたになる(この効果を2人以上が受けた場合、この効果を受けた者の中でランダムに決定する)。"]) - }, $MeikyuKingdomBasic_mk_search_happening_table$11.$$arity = 0); - - Opal.def(self, '$mk_valor_happening_table', $MeikyuKingdomBasic_mk_valor_happening_table$12 = function $$mk_valor_happening_table() { - var self = this; - - return self.$get_table_by_2d6(["つい幼児退行を起こしそうになる。【お酒】を1個消費することができなければ、このセッション中、[武勇]-1。", "バカな! 不意打ちか!? 次に行う戦闘は奇襲扱いとなる。", "配下の期待が、あなたの重荷となる。[現在の《民の声》-1D6]点だけ《気力》が減少する。", "「あ、危ないッ!」配下があなたをかばう! 自分の《配下》-(1D6)。", "ムカついたので思わず殴る。自分の《敵意》の中で、最も高いキャラクターをランダムに1人選ぶ。そのキャラクターの《HP》が、自分の[武勇]と等しい値だけ減少する。", "決闘だッ! 宮廷全員のあなたに対する《敵意》の中で、最も高い値を選ぶ。その値の分だけ、あなたの《HP》が減少し、《気力》+2。", "豚どもめ……。宮廷全員に対する《敵意》+1。", "古傷が痛み出す。このセッションの間、戦闘であなたに対する敵の攻撃が成功すると、常に1点余分にダメージを受ける。", "不意に絶望と虚無感が襲い、あなたたちの心が折れる。宮廷全員の《気力》-1。", "あなたの親の仇を名乗るものたちが現れた。ランダムにセッション中に倒したモンスターの中から1種類を選ぶ。そのモンスター(1D6)体と戦闘を行うこと。", "自分の失敗が許せない。このセッションの間、《器》が1点減少したものとして扱う。"]) - }, $MeikyuKingdomBasic_mk_valor_happening_table$12.$$arity = 0); - - Opal.def(self, '$mk_kingdom_disaster_table', $MeikyuKingdomBasic_mk_kingdom_disaster_table$13 = function $$mk_kingdom_disaster_table() { - var self = this; - - return self.$get_table_by_2d6(["王国の悪い噂が蔓延する。既知の土地にある他国との関係が、すべて1段階悪化する。", "自国のモンスターが凶暴化する! 自国の《モンスターの民》の中からランダムに1種類のモンスターを選ぶ。自国の《民》を[そのモンスターのレベル]人減少する。また、そのモンスターと同じ種類の《モンスターの民》は、すべて王国からいなくなる。", "王国に疫病が大流行……。自国に残した《民》を[自国に残した《民》の数×1/10]人減少する。", "自国の疲労が進行する。自国の領土のマップ数と等しい値のMGだけ維持費が上昇する。", "敵国のテロリズムが横行! [治安レベル/9]の判定を行う。失敗すると、ランダムに選んだ施設1件が破壊される。", "敵国の襲来! あなたがたの留守を狙って、敵国が同盟を結んで奇襲を行う。[軍事レベル/9]の判定を行う。失敗すると、ランダムに選んだ自国の領土1つを失う。", "敵国が陰謀を仕掛けてくる。[文化レベル/9]の判定を行う。失敗すると、ランダムに選んだ逸材1人を失う。", "食糧危機が発生! [生活レベル/9]の判定を行う。失敗すると、自国に残した《民》を[自国に残した《民》×1/5]人減少する。王国にある「肉」の素材1個を消費するたびに、《民》の減少を5人軽減することができる。", "王国が何者かに呪われる。このセッションの間、国力を使った行為判定で選んだ(2D6)の目が3以下だと、絶対失敗になる。", "極地的な迷宮津波が発生。ランダムに自国の領土のマップ1つを選ぶ。その後、既知の土地の中からランダムに土地1つを選ぶ。その2つの場所を入れ替える。", "敵国の勢力が強大化する。GMは、関係が敵対の国すべてについて、その国の領土に接する好きな土地1つを選ぶ。その土地をその国の領土にする。"]) - }, $MeikyuKingdomBasic_mk_kingdom_disaster_table$13.$$arity = 0); - - Opal.def(self, '$mk_kingdom_change_table', $MeikyuKingdomBasic_mk_kingdom_change_table$14 = function $$mk_kingdom_change_table() { - var self = this; - - return self.$get_table_by_2d6(["列強のプロパガンダが現れる。(1D6)を振り、その目が現在の《民の声》以下で、現在列強の属国になっていたら属国から抜けることができる。上回っていたら、ランダムに列強を1つ選びその属国になる。", "冒険の成功を祝う民たちが出迎えてくれる。《民の声》+2。この結果を出したプレイヤー以外の全員は、今回の冒険を振り返り当プレイヤーのPCが《好意》を得るとしたら誰が一番ふさわしいかを協議する。決定したキャラへのPCの《好意》+1", "唐突な奇襲。周辺階域の中からランダムに自国の領土を選び[軍事レベル/9]の判定を行う。成功すれば(1D6)MG獲得。失敗すると選ばれた領土の入口から順番に通路を辿り失われる部屋を([王国レベル+1]D6)個選ぶ。(同じ部屋は2度選べない)。失われた部屋の施設と部屋につながる道が全て破壊される。その部屋からすべての部屋がなくなり、終了フェイズで入口が1個もなければ自国の領土でなくなる。", "民の労働の結果が明らかに。[生活レベル/9]の判定に成功すると《予算》が自国の領土のマップ数と同じだけ増える。失敗したら《予算》が同じだけ減る。", "あなたの活躍を耳にした者たちがやってくる。シナリオの目的を満たしている場合、関係が良好・同盟の国の数だけ(1D6)を振り、[合計値+治安レベル]人だけ《民》が増える。", "王国の子どもたちが宮廷をあなた方を見て成長する。《民》が([王国に残した《民》の数÷10+治安レベル]D6)人増える。", "民は領土を渇望していた。5MGを支払えば、隣接する未知の土地1つを領土にできる。(1D6)を振り、その数だけ通路を引くことができる。通路でつながっていない部屋は自国の領土として扱わない。", "街の機能に異変が!? [治安レベル/9]の判定に成功すると、自国の好きな施設1軒を選び、その施設のレベルを1点上昇する。失敗したら、自国のタイプ:部屋の施設をランダムに1軒選び、破壊する。", "王国同士の交流が行われた。[文化レベル/9]の判定に成功すると、生まれ表でランダムにジョブを決めた逸材が1人増え、好きな国1つとの関係を1段階良好にする。失敗すると、自国の逸材1人を選んで失い、ランダムに決めた国1つとの関係が1段階悪化する。", "ただ無為に時が過ぎていたわけではない。冒険フェイズで過ごした1ターンにつき予算が1MG増える。", "民の意識が大きく揺れる。(1D6)を振り、その目が現在の《民の声》以下だったら、好きな国力を選び基本値が1点上昇する(基本値を3点以上にはできない)。出目が上回っていたら、好きな国力が1点減少する。"]) - }, $MeikyuKingdomBasic_mk_kingdom_change_table$14.$$arity = 0); - - Opal.def(self, '$mk_critical_attack_table', $MeikyuKingdomBasic_mk_critical_attack_table$15 = function $$mk_critical_attack_table() { - var self = this; - - return self.$get_table_by_2d6(["あなたの攻撃の手応えが、武器に刻まれる。その攻撃に使用した武具アイテムのレベルが1点上昇する。", "電光石火の一撃。攻撃の処理が終了した後、もう一度、行動を行うことができる。", "凄まじい一撃は、相手の姿形を変えるほどだ。攻撃目標に「呪い4」の変調を与える。", "乾坤一擲! その攻撃のダメージを算出したあと、それをさらに2倍にすることができる。", "凄まじい威力で相手を吹き飛ばす。攻撃目標を好きなエリアに移動させる。", "会心の一撃!! ダメージが(1D6)点上昇する。", "敵の勢いを利用し、大ダメージ! ダメージが攻撃目標のレベルと同じ値だけ上昇する。", "あと1歩まで追い詰める。ダメージを与える代わりに、攻撃目標の残り《HP》を(1D6)点にすることができる。", "狙いが的中! 敵の技を封じる! 攻撃目標のスキル1種を選ぶ。その戦闘の間、そのスキルを喪失させる。", "怒りの一撃! ダメージが(2D6)点上昇する。", "敵の急所をとらえ、一撃のもとに斬り伏せる。攻撃目標の《HP》を0点にする。"]) - }, $MeikyuKingdomBasic_mk_critical_attack_table$15.$$arity = 0); - - Opal.def(self, '$mk_fatal_wounds_table', $MeikyuKingdomBasic_mk_fatal_wounds_table$16 = function $$mk_fatal_wounds_table() { - var self = this; - - return self.$get_table_by_2d6(["圧倒的な攻撃が、急所を貫く。死亡する。", "致命的な一撃が、頭をかすめる。[探索/5+受けたダメージ]の判定に成功すると、行動不能になる。判定に失敗すると、死亡する。", "昏睡し、体中から血と生命の息吹が失われつつある。行動不能になる。この戦闘が終了するまでに《HP》を1点以上にしないと、そのキャラクターは死亡する。", "頭を強くうちつけ、昏睡している。行動不能になる。このクォーターが終了するまでに《HP》を1点以上にしないと、そのキャラクターは死亡する。", "重傷を負い、意識を失う。行動不能になる。(1D6)クォーターが経過するまでに《HP》を1点以上にしないと、そのキャラクターは死亡する。", "すさまじい一撃に意識を失う。行動不能になる。", "偶然、アイテムが衝撃からキミを護る。装備しているアイテムから、ランダムに1つを選ぶ。そのアイテムを破壊し、ダメージを無効にする。もし、破壊できるアイテムを1つも装備していないと行動不能になる。", "《民》たちが、その身を犠牲にしてキミを護る。自分の《配下》を(2D6)人減少し、ダメージを無効にする。もし、《配下》が1人もいなければ、行動不能になる。", "根性で攻撃を跳ね返す! [探索/5+受けたダメージ]の判定を行う。成功すると、《HP》が1点になる。失敗すると、行動不能になる。", "精神力だけで耐え忍ぶ。[武勇/5+受けたダメージ]の判定を行う。成功すると、《HP》が1点になる。失敗すると、行動不能になる。", "幸運なことに、ダメージは避けられる。しかし、ランダムに変調1つを選び、それを受ける。数値がある場合、3になる。"]) - }, $MeikyuKingdomBasic_mk_fatal_wounds_table$16.$$arity = 0); - - Opal.def(self, '$mk_combat_fumble_table', $MeikyuKingdomBasic_mk_combat_fumble_table$17 = function $$mk_combat_fumble_table() { - var self = this; - - return self.$get_table_by_2d6(["敵に援軍が現れる! 敵軍の中でもっともレベルの低いモンスターが(1D6)体増える。モンスターがこの結果になった場合、好きなPCの《配下》が(1D6)体上昇する。", "敵の士気がおおいに揺らぐ。自軍のキャラクター全員は1マス後退する。", "勢いあまって仲間を攻撃! 自分のいるエリアの中から、ランダムに自軍キャラクター1人を選ぶ。そのキャラクターに使用している武器と同じ威力のダメージを与える。", "つい仲間と口論に。自軍の未行動のキャラクターの中からランダムに1人選ぶ。そのキャラクターが行動済みになる。", "馬鹿な! 魔法の効果が! 自軍のキャラクターが使用したスキルやアイテムの効果で、その戦闘の間持続するものが、全て無効になる。", "いてててて。自分を傷つけてしまう。自分に(1D6)点ダメージ。", "自分の攻撃の勢いを利用され、相手の反撃を受ける。自分の《HP》を現在の値の半分にする。", "おおっと、アイテムを落っことした。自分が装備しているアイテムからランダムに1個を選ぶ。そのアイテムが破壊される。モンスターの場合、自分に(1D6)ダメージ。", "激しい戦いに、カーネルが活性化。戦闘系トラップからランダムに1種類を選ぶ。その場に、トラップが配置される。", "あなたの攻撃は空をきり、絶望に囚われる。自分と、自分に対して1点以上《好意》を持ったキャラクター全員の《気力》-1 。モンスター側の場合、自分に(1D6)点ダメージ。", "あっ! 武器がすっぽぬけた。攻撃に使用していたアイテムが破壊される。モンスターの場合、自分に(1D6)点ダメージ。さらに、戦場シートにいるキャラクターの中からランダムにキャラクター1体を選ぶ。そのキャラクターの《HP》が1点になる。"]) - }, $MeikyuKingdomBasic_mk_combat_fumble_table$17.$$arity = 0); - - Opal.def(self, '$mk_travel_table', $MeikyuKingdomBasic_mk_travel_table$18 = function $$mk_travel_table() { - var self = this; - - return self.$get_table_by_2d6(["道中の時間が、人間関係に変化をもたらす。全員、好きなキャラクター1人を選ぶ。そのキャラクターに対する《感情値》が1点上昇する。", "ん? 何かの死体が転がっている。好きな素材1種類を選ぶ。宮廷のPC1人は、その素材を(1D6)個手に入れる。", "カーネルの異常が発生し、あたりが闇に包まれる。宮廷の中から、ランダムにPC1人を選ぶ。そのPCが【星の欠片】を持っていたら、それが1個破壊される。", "迷宮災厄のせいか、道に迷いそうになる。全員、[才覚/9]の判定を行う。[(1D6)-成功したPCの数]クォーターの時間が経過する(0クォーター未満にはならない)。", "陰湿なトラップにひっかかる。全員、[探索/9]の判定を行う。失敗したPCは、《HP》を(1D6)点減少する。", "迷宮は不気味に静まり返っている……。特に何も起こらなかった。", "モンスターの襲撃を受ける。全員、[武勇/9]の判定を行う。失敗したPCは、《HP》を(1D6)点減少する。", "恐ろしげな咆哮があたりに響き、すぐに静まり返る。全員、[魅力/9]の判定を行う。失敗したPCは、《配下》が(1D6)人自国に逃走する。", "迷宮災厄発生! 気がつくと自分たちの王国に戻っていた。", "を? 何かが落ちてるぞ。ランダムにコモンアイテム1個を選ぶ。そのアイテムを手に入れる。", "ラッキー♪ 1MGを拾った。"]) - }, $MeikyuKingdomBasic_mk_travel_table$18.$$arity = 0); - - Opal.def(self, '$mk_negotiation_table', $MeikyuKingdomBasic_mk_negotiation_table$19 = function $$mk_negotiation_table() { - var self = this; - - return self.$get_table_by_2d6(["中立的な態度は偽装だった。彼らは油断をついて不意打ちを行う。奇襲扱いで戦闘を行うこと。", "交渉は決裂! 戦闘を行うこと。", "交渉は決裂! 戦闘を行うこと。", "「贄をささげれば話を聞こう」モンスターの中でもっともレベルが高いもののレベルと等しい数だけ《配下》を消費すれば、モンスターたちは友好的になる。ただし《民の声》を(1D6)点減少する。《配下》を消費しない場合、戦闘を行うこと。", "「……お前の趣味、なに?」好きな単語表1個を選び、(D66)を振る。宮廷の中に、その項目を好きなものにしているPCがいれば、モンスターたちは友好的になる。そうでなければ、戦闘を行うこと。", "怪物たちは、物欲しそうにこちらを見ている。「肉」の素材をモンスターの数だけ消費するか、【お弁当】、【フルコース】1個を消費すれば、モンスターたちは友好的になる。消費しなければ、戦闘を行うこと。", "怪物たちは、値踏みするようにこちらを見ている。維持費を(1D6)MG上昇させれば、モンスターたちは友好的になる。上昇させなければ、戦闘を行うこと。", "「何かいいもんよこせ」モンスターの中でもっともレベルが高いもののレベル以上の価格のアイテムを消費すれば、モンスターたちは友好的になる。レアアイテムは、()内の数字に10を足したものとして考える。それを渡せなければ、戦闘を行うこと。", "「面白い話を聞かせろよ」怪物たちは、面白い話を要求してきた。プレイヤーたちは、モンスターたちが興味のありそうな話を聞かせること。GMはその話を聞いて面白いと思えば、宮廷の代表に[魅力/9]の判定を行わせること。成功した場合、モンスターたちは友好的になる。失敗した場合、戦闘を行うこと。", "「俺に勝てたら話を聞いてやろう」怪物が一騎打ちを申し込んできた。宮廷の代表は[武勇/モンスターの中で最も高い[武勇]+7]の判定を行う。判定に成功すると、モンスターたちは友好的になる。失敗すると、判定を行った者が《HP》を(1D6)点減少した後、全員で戦闘を行うこと。", "運命の出会い。一目見た瞬間、うち解け合った。モンスターたちの宮廷の代表に対する《好意》+1、さらにモンスターたちは友好的になる。"]) - }, $MeikyuKingdomBasic_mk_negotiation_table$19.$$arity = 0); - - Opal.def(self, '$mk_emotion_table', $MeikyuKingdomBasic_mk_emotion_table$20 = function $$mk_emotion_table() { - var self = this; - - return self.$get_table_by_1d6(["忠誠", "友情", "愛情", "怒り", "不信", "侮蔑"]) - }, $MeikyuKingdomBasic_mk_emotion_table$20.$$arity = 0); - - Opal.def(self, '$mk_festival_table', $MeikyuKingdomBasic_mk_festival_table$21 = function $$mk_festival_table() { - var self = this; - - return self.$get_table_by_2d6(["祈願祭。国や重要人物の無病息災を祈ったり、戦いの勝利などを祈る祭り。災害や飢饉、流行り病が起こった付近で行われる。シナリオの目的をクリアしていれば、《民》+(1D6)。", "血祭り。戦いに向け、士気を向上させる祭り。戦争だけでなく、迷宮探索に向けて行われることも多い。生贄の血を軍神に捧げたりする。このゲームの間、戦闘に勝利すると《民の声》+1、逃走すると《民の声》-1。", "記念日。建国記念日や領土獲得などの記念日のお祝い。簡単につくることができるが、気がつくと記念日だらけで、何の記念だったかを忘れてしまう。ほどほどに。このセッションの間、行為判定の目で3でも絶対失敗、11でも絶対成功になる(「呪い」の変調を受けているものは、行為判定のサイコロの目が[呪いの数値+1]以下で絶対失敗が発生する。)。", "星祭。季節のお祭り。冬至や夏至などの祭りや、七夕、お花見、雪祭りなどが含まれる。季節感の少ない迷宮では、殊更にその風情を楽しもうとやたら盛り上がる。宮廷全員、好きなキャラクター1人を選び、そのキャラクターに対する《好意》+1。", "民衆の宴。民が自発的に開くお祭り、イベント。アキハバラ電気祭りに餃子祭り、コミックマーケットなど、文化や地域の活性化と結びつくものが多い。このセッションの間、好きな施設1つを選んで、その施設の施設レベル+1。", "誕生日。ランドメイカーや逸材、国の重要人物の誕生日。聖誕祭や花祭りなど、国教の聖人などを祝う国も多い。現王の誕生日を「父の日」、后の誕生日を「母の日」とする国も多い。そのゲームの間、ケーキやおにぎり、缶ジュースなど、1人分が明確な食べ物を食べきったとき、自分のPCが《気力》1点を獲得する。", "冠婚葬祭。国の重要人物の元服(成人)、婚礼、葬儀、祖先の慰霊などの儀式。格式の高い王国では、もっとも重要な祭礼である。このセッションの間、国力を使った判定の達成値+1。", "感謝祭。豊漁や豊作などがあったときに自然(迷宮)や精霊、信仰対象など、偉大なるものへの感謝を捧げるお祭り。獲物の毛の一部を切りとって迷宮に感謝する毛祭りや瀬祭り、豊饒を祝う新嘗祭などがある。王国変動表を使用したとき、1回だけ「木」や「革」、「肉」のいずれかを1つ消費すると、その結果を±1の範囲でずらすことができる。", "鬼祭り。お正月に旧年の悪を正す修正会、豆をまいて福を呼び込む追儺の儀式、怪物に仮装した子供たちが夜の王国をねり歩くハロウィーンなど、悪魔や悪霊を払うお祭り。モンスター除けに行われる。このセッションの間2回だけ、戦闘後に使用する「お宝表」を1段階高いランクのものを使用する。", "舞踏会。最高の音楽と芸術的な食事、そしてとびきりの衣装で臨む社交界の華。身分や素性を隠してパートナーを探す仮面舞踏会も人気は高い。ちなみに仮面舞踏会では、女性の側から男性をダンスに誘うのが礼儀だぞ。宮廷全員、ランダムにキャラクター1人を選び、そのキャラクターに対する《好意》+1。", "競技会。国をあげて、スポーツや芸術、ゲームなど、さまざまなジャンルの一番を決めるお祭り、大会。オリンピックや料理勝負、歌合戦などがある。ランダムに能力値1つを選び、宮廷全員は【その能力値/15】の判定を行う。このとき成功した中で、もっとも達成値が高かったキャラクターは、シナリオ終了後、終了フェイズの探索会議で決定されるキャラクターとは別に、勲章を得る。"]) - }, $MeikyuKingdomBasic_mk_festival_table$21.$$arity = 0); - - Opal.def(self, '$mk_festival_break_table', $MeikyuKingdomBasic_mk_festival_break_table$22 = function $$mk_festival_break_table() { - var self = this; - - return self.$get_table_by_2d6(["お祭りに向かう旅人たちとすれ違う。《予算》を3MG獲得する。自国に【宿屋】か【夜店】があればさらに(1D6)MG獲得する。", "なんでこんなときに、ダンジョンに行かなきゃいけないんだ! 「あ、電報でーす」。このマップの支配者から、お祭りによせて祝辞の電報がやってくる。そうか、オマエのせいかッ!! マップの支配者の名前が分かり、そのキャラクターへの《敵意》+(1D6)。", "「そういえば、国のみんなが何か言ってたなぁ……」回想シーン。「視察表」を1回使用する。", "あー、早く帰って、お祭りを楽しみたーい! この時点でキャンプを終了し、すぐに次の部屋に移動すれば、このクォーターは時間の経過が発生しない。", "どこからか美味しそうな匂いが漂ってくる。「あ、うまそう」死んだふりをしていた民が起き上がる。《配下》を(1D6)人回復する。", "雰囲気がいつもと違うせいかな。なんかあの人がステキに見える。好きなキャラクターを1人選ぶ。そのキャラクターへの《好意》+1。", "あ、こんなところにまで屋台が! あてくじ屋さんだ。1MG減らして、好きなアイテムカテゴリを選び、さらにそのカテゴリの中からランダムにアイテム1種を選ぶ。そのアイテムを1個獲得する(レアアイテムは飾ってあるが、絶対当たらない)。", "お祭りを目指す交易商人と出会う。「あ、王様。これから王国行くんすよ」宮廷の持つ好きな素材を何個でも、同じ数の別の好きな素材と交換してくれる。", "せっかくお祭りなんだし、肩肘はってないでノリノリでGO!! このゲーム中は食事をするたびに、《民の声》+1。この効果は累積しない。", "「あ、この歌は……」祭囃子がキミの封印されていたモンスターにまつわる過去の記憶を呼び戻す。好きなモンスター1種類選ぶ。そのモンスターへの《敵意》+1。この感情値は、そのモンスター全般へのものになる。", "みんなのわくわくがアイテムに乗り移った? ランダムに自分のアイテムスロット1つを選ぶ。そのアイテムのレベルを1点上昇する。"]) - }, $MeikyuKingdomBasic_mk_festival_break_table$22.$$arity = 0); - - Opal.def(self, '$getWholeBreakTable', $MeikyuKingdomBasic_getWholeBreakTable$23 = function $$getWholeBreakTable() { - var self = this; - - return self.$get_table_by_2d6(["部屋の中から使えそうな装備をみつくろう。宮廷全員は、それぞれ好きなコモンアイテムのカテゴリを選び、ランダムにコモンアイテムを1個獲得する。そのアイテムにレベルがあれば、それは1レベルのものとなる。", "みんなで今後の作戦を練る。宮廷全員は、そのターンの間、あらゆる判定の達成値+1。この効果は累積しない。", "手分けして物資の調達を行う。各キャラクターは、好きな素材を(1D6)個獲得できる。このとき、各キャラクターはアイテム作成を1回行うことができる。", "体を休めながら他愛もない世間話に花が咲く。宮廷全員は、それぞれ宮廷の中から好きなキャラクター1人を選び、そのキャラクターに対する《好意》+1。", "宮廷メンバーで交代で見張りを行い、疲労した配下たちを休ませる。《民の声》を[宮廷の人数]点回復する。", "一行はしっかりと休息を取り、鋭気を養う。宮廷全員の《気力》+2。", "配下たちと一緒に体を休める。《民の声》+(1D6)。", "配下たちに見張りを任せ、体を休める。宮廷全員の《HP》を最大値まで回復する。", "緊急ミーティング! 国家運営に関してみんなで知恵を出し合う。《予算》を[宮廷の人数]MG獲得する。", "負傷した配下たちの治療を行う。宮廷全員の《配下》が(1D6)人回復する。", "宮廷の前に光り輝くアイテムが降臨する。レア武具アイテムかレア一般アイテムのどちらかを選ぶ。ランダムにそのアイテムを1種類選び、それを1個獲得する。"]) - }, $MeikyuKingdomBasic_getWholeBreakTable$23.$$arity = 0); - - Opal.def(self, '$getLoversBreakTable', $MeikyuKingdomBasic_getLoversBreakTable$24 = function $$getLoversBreakTable() { - var self = this, table = nil, value = nil; - - - table = [[11, "「あーもう、最悪!」仲良く休憩するつもりが、ひどい喧嘩になってしまう。「カップル休憩表」使用者のお互いに対する《敵意》+2。"], [12, "「何もかもがお前が悪かったのかッ!!」大きな誤解が生まれる。受け身キャラの攻め気キャラ以外に対する《感情値》がすべて0になり、その値の分だけ攻め気キャラに対する《敵意》が上昇する。"], [13, "「でさぁ、あの人のことなんだけど……」せっかく2人きりなのに、他人の話で盛り上がる。「カップル休憩表」使用者は、宮廷の中から自分たち以外のキャラクター1人を選び、そのキャラクターに対する《好意》+1。"], [14, "「へぇ、そんなのあるんだ」互いの好きなものについて語り合う。受け身キャラは、攻め気キャラの「好きなもの」1つを選ぶ。受け身キャラは、自分の「好きなもの」1つをそれに変更し、攻め気キャラへの《好意》+1。"], [15, "「なぁ、オレのことどう思う?」思い切った質問! 受け身キャラは、攻め気キャラに対する《好意》か《敵意》を1点上昇させ、その属性を好きなものに変更できる。"], [16, "「だいじょうぶ? 無茶するんだから」少し前の失敗について色々と言われてしまう。ありがたいんだけど、少しムカつく。攻め気キャラは受け身キャラに対する《好意》+1、受け身キャラは攻め気キャラに対する《敵意》+1。"], [22, "「え、もうこんな時間!?」一休みするつもりが、気がつくとかなり時間がたっている。キャンプが終了すると、通常の時間の経過に加え、さらに1クォーターが経過する。「カップル休憩表」使用者のお互いに対する《好意》+1。また、「カップル休憩表」使用者以外のキャラクターは、使用者2人に対する《敵意》+1。"], [23, "「ねぇねぇ、これわかる?」何気ない質問だが、これは難しい。変な答えはできないぞ。攻め気キャラは[才覚/9]の判定を行う。成功すると、「カップル休憩表」使用者のお互いに対する《好意》+1。失敗すると、何とか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《敵意》+1。"], [24, "「おいおい、まずは落ち着け!」配下同士が喧嘩を始めた。うまく仲裁しないと……。攻め気キャラは、[魅力/9]の判定を行う。成功すると、「カップル休憩表」使用者のお互いに対する《好意》+1。失敗すると、何とか危機を切り抜けることができるが、受け身キャラの攻め気キャラに帯する《敵意》+1。"], [25, "「オレが解除するからちょっと待ってろ」2人で休憩するつもりが、一緒にトラップにひっかかってしまった。互いの体が密着してしまう。攻め気キャラは、[探索/9]の判定を行う。成功すると、「カップル休憩表」使用者のお互いに対する《好意》+1。失敗すると、何とか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《敵意》+1。"], [26, "「お前は後ろに下がってろ!」休憩中に怪物に襲われる。攻め気キャラは、[武勇/9]の判定を行う。成功すると、「カップル休憩表」使用者のお互いに対する《好意》+1。失敗すると、何とか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《敵意》+1。"], [33, "「なぁ、さっきは悪かったな」誤解が解ける。「カップル休憩表」使用者のお互いに対する《好意》+1。"], [34, "「これを言ったのはあなただけです。誰にも言わないでくださいね」受け身キャラが隠している夢や秘密を攻め気キャラが知ってしまう。受け身キャラの攻め気キャラに対する《好意》+1。攻め気キャラの受け身キャラに対する《感情値》が《好意》になり、その属性を「忠誠」にする。"], [35, "「これからも、よろしく頼むぜ。相棒」攻め気キャラが快活に微笑む。受け身キャラの攻め気キャラに対する《好意》+1。攻め気キャラの受け身キャラに対する《感情値》が《好意》になり、その属性を「友情」にする。"], [36, "「わ、わたしは、あなたのことが……」受け身キャラの思わぬ告白! 受け身キャラの攻め気キャラに対する《好意》+1。攻め気キャラの受け身キャラに対する《感情値》が《好意》になり、その属性を「愛情」にする。"], [44, "「大丈夫? 痛くないか?」互いに傷を治療しあう。「カップル休憩表」使用者は、お互いの自分に対する《好意》の分だけ、自分の《HP》を回復することができる。どちらかが《HP》を1点以上回復したら、この表の使用者のお互いに対する《好意》+1。"], [45, "「この冒険が終わったら、伝えたいことが……あるんだ」攻め気キャラの真剣な言葉。え、それって……? 受け身キャラの攻め気キャラに対する《好意》+2。終了フェイズのエピローグ時に攻め気キャラが生きていれば、受け身キャラになにかを伝える。受け身キャラは、それを聞いて《好意》を最大2点まで上昇できる。"], [46, "「蝕ッ!? ……って、どこ触ってるんですかッ!?」あたりが不意に暗くなり、思わず変なところを触ってしまう。攻め気キャラの受け身キャラに対する《好意》+2、受け身キャラの攻め気キャラに対する《敵意》+2。「カップル休憩表」使用者のどちらか装備・収納している【星の欠片】1個を消費すれば、このイベントを無効化できる。"], [55, "「これ、はんぶんこしない?」2人仲良く、アイテムを分け合う。「カップル休憩表」使用者が消費アイテムを持っていれば、それを1個使用できる。ただし、その効果の目標は、「カップル休憩表」使用者の2人に変更される。「カップル休憩表」使用者のお互いに対する《好意》+1。"], [56, "「え? え? えぇぇぇぇッ!?」ふとした拍子に唇がふれあう。受け身キャラの攻め気キャラ以外に対する《好意》がすべて0点になり、その値の分だけ攻め気キャラに対する《好意》を上昇する。"], [66, "「…………」気がつくとお互い、目をそらせなくなってしまう。そのまま顔を寄せ合い……。「カップル休憩表」使用者のお互いに対する《好意》+2、その属性を「愛情」にする。"]]; - value = self.$d66(2); - return [self.$get_table_by_number(value, table), value]; - }, $MeikyuKingdomBasic_getLoversBreakTable$24.$$arity = 0); - - Opal.def(self, '$mk_common_item_random_table', $MeikyuKingdomBasic_mk_common_item_random_table$25 = function $$mk_common_item_random_table(num) { - var $$26, $$27, $$28, $$29, self = this, functionTable = nil; - - - functionTable = [[1, $send(self, 'lambda', [], ($$26 = function(){var self = $$26.$$s || this; - - return self.$mk_weapon_item_table(self.$d66(2))}, $$26.$$s = self, $$26.$$arity = 0, $$26))], [2, $send(self, 'lambda', [], ($$27 = function(){var self = $$27.$$s || this; - - return self.$mk_life_item_table(self.$d66(2))}, $$27.$$s = self, $$27.$$arity = 0, $$27))], [3, $send(self, 'lambda', [], ($$28 = function(){var self = $$28.$$s || this; - - return self.$mk_rest_item_table(self.$d66(2))}, $$28.$$s = self, $$28.$$arity = 0, $$28))], [4, $send(self, 'lambda', [], ($$29 = function(){var self = $$29.$$s || this; - - return self.$mk_search_item_table(self.$d66(2))}, $$29.$$s = self, $$29.$$arity = 0, $$29))]]; - return self.$get_table_by_number(num, functionTable); - }, $MeikyuKingdomBasic_mk_common_item_random_table$25.$$arity = 1); - - Opal.def(self, '$mk_rare_usual_item_random_table', $MeikyuKingdomBasic_mk_rare_usual_item_random_table$30 = function $$mk_rare_usual_item_random_table(num) { - var $$31, $$32, $$33, $$34, $$35, $$36, self = this, functionTable = nil; - - - functionTable = [[1, $send(self, 'lambda', [], ($$31 = function(){var self = $$31.$$s || this; - - return self.$mk_normal_rare_item_table(self.$d66(1))}, $$31.$$s = self, $$31.$$arity = 0, $$31))], [2, $send(self, 'lambda', [], ($$32 = function(){var self = $$32.$$s || this; - - return self.$mk_normal_rare_item_table(self.$d66(1))}, $$32.$$s = self, $$32.$$arity = 0, $$32))], [3, $send(self, 'lambda', [], ($$33 = function(){var self = $$33.$$s || this; - - return self.$mk_normal_rare_item_table(self.$d66(1))}, $$33.$$s = self, $$33.$$arity = 0, $$33))], [4, $send(self, 'lambda', [], ($$34 = function(){var self = $$34.$$s || this; - - return self.$mk_advanced_rare_item_table(self.$d66(1))}, $$34.$$s = self, $$34.$$arity = 0, $$34))], [5, $send(self, 'lambda', [], ($$35 = function(){var self = $$35.$$s || this; - - return self.$mk_advanced_rare_item_table(self.$d66(1))}, $$35.$$s = self, $$35.$$arity = 0, $$35))], [6, $send(self, 'lambda', [], ($$36 = function(){var self = $$36.$$s || this; - - return self.$mk_advanced_rare_item_table(self.$d66(1))}, $$36.$$s = self, $$36.$$arity = 0, $$36))]]; - return self.$get_table_by_number(num, functionTable); - }, $MeikyuKingdomBasic_mk_rare_usual_item_random_table$30.$$arity = 1); - - Opal.def(self, '$mk_rare_weapon_item_random_table', $MeikyuKingdomBasic_mk_rare_weapon_item_random_table$37 = function $$mk_rare_weapon_item_random_table(num) { - var $$38, $$39, $$40, $$41, $$42, $$43, self = this, functionTable = nil; - - - functionTable = [[1, $send(self, 'lambda', [], ($$38 = function(){var self = $$38.$$s || this; - - return self.$mk_normal_rare_weapon_item_table(self.$d66(1))}, $$38.$$s = self, $$38.$$arity = 0, $$38))], [2, $send(self, 'lambda', [], ($$39 = function(){var self = $$39.$$s || this; - - return self.$mk_normal_rare_weapon_item_table(self.$d66(1))}, $$39.$$s = self, $$39.$$arity = 0, $$39))], [3, $send(self, 'lambda', [], ($$40 = function(){var self = $$40.$$s || this; - - return self.$mk_normal_rare_weapon_item_table(self.$d66(1))}, $$40.$$s = self, $$40.$$arity = 0, $$40))], [4, $send(self, 'lambda', [], ($$41 = function(){var self = $$41.$$s || this; - - return self.$mk_advanced_rare_weapon_item_table(self.$d66(1))}, $$41.$$s = self, $$41.$$arity = 0, $$41))], [5, $send(self, 'lambda', [], ($$42 = function(){var self = $$42.$$s || this; - - return self.$mk_advanced_rare_weapon_item_table(self.$d66(1))}, $$42.$$s = self, $$42.$$arity = 0, $$42))], [6, $send(self, 'lambda', [], ($$43 = function(){var self = $$43.$$s || this; - - return self.$mk_advanced_rare_weapon_item_table(self.$d66(1))}, $$43.$$s = self, $$43.$$arity = 0, $$43))]]; - return self.$get_table_by_number(num, functionTable); - }, $MeikyuKingdomBasic_mk_rare_weapon_item_random_table$37.$$arity = 1); - - Opal.def(self, '$mk_weapon_item_table', $MeikyuKingdomBasic_mk_weapon_item_table$44 = function $$mk_weapon_item_table(num) { - var self = this, table = nil; - - - table = [[11, "だんびら"], [12, "網(だんびら)"], [13, "短剣"], [14, "戦斧"], [15, "盾"], [16, "ホウキ"], [22, "棘(だんびら)"], [23, "鑓"], [24, "石弓"], [25, "甲冑"], [26, "戦鎚"], [33, "鎖(だんびら)"], [34, "爆弾"], [35, "鉄砲"], [36, "大剣"], [44, "大弓(だんびら)"], [45, "徹甲弾"], [46, "拳銃"], [55, "手裏剣(だんびら)"], [56, "大砲"], [66, "籠手(だんびら)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_weapon_item_table$44.$$arity = 1); - - Opal.def(self, '$mk_life_item_table', $MeikyuKingdomBasic_mk_life_item_table$45 = function $$mk_life_item_table(num) { - var self = this, table = nil; - - - table = [[11, "鍋"], [12, "家畜(鍋)"], [13, "バックパック"], [14, "クラッカー"], [15, "がまぐち"], [16, "マント"], [22, "裁縫道具(鍋)"], [23, "カード"], [24, "エプロン"], [25, "住民台帳"], [26, "携帯電話"], [33, "外套(鍋)"], [34, "肖像画"], [35, "衣装"], [36, "山吹色のお菓子"], [44, "鏡(鍋)"], [45, "眼鏡"], [46, "クレジットカード"], [55, "召喚鍵(鍋)"], [56, "魔道書"], [66, "宝石(鍋)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_life_item_table$45.$$arity = 1); - - Opal.def(self, '$mk_rest_item_table', $MeikyuKingdomBasic_mk_rest_item_table$46 = function $$mk_rest_item_table(num) { - var self = this, table = nil; - - - table = [[11, "チョコレート(お弁当)"], [12, "砂糖菓子(お弁当)"], [13, "特効薬"], [14, "保存食"], [15, "担架"], [16, "お弁当(チョコレート)"], [22, "バナナ(お弁当)"], [23, "お酒"], [24, "珈琲"], [25, "フルコース"], [26, "ポーション"], [33, "魔素水(お弁当)"], [34, "救急箱"], [35, "強壮剤"], [36, "迷宮保険"], [44, "魔薬(お弁当)"], [45, "科学調味料"], [46, "惚れ薬"], [55, "軟膏(お弁当)"], [56, "復活薬"], [66, "万能薬(お弁当)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_rest_item_table$46.$$arity = 1); - - Opal.def(self, '$mk_search_item_table', $MeikyuKingdomBasic_mk_search_item_table$47 = function $$mk_search_item_table(num) { - var self = this, table = nil; - - - table = [[11, "拷問具(星の欠片)"], [12, "ロープ(星の欠片)"], [13, "旗"], [14, "お守り"], [15, "星の欠片(拷問具)"], [16, "パワーリスト"], [22, "松明(星の欠片)"], [23, "テント"], [24, "楽器"], [25, "工具"], [26, "使い魔"], [33, "迷宮迷彩(星の欠片)"], [34, "乗騎"], [35, "罠百科"], [36, "迷宮防護服"], [44, "聴診器(星の欠片)"], [45, "地図"], [46, "時計"], [55, "飛行騎(星の欠片)"], [56, "カボチャの馬車"], [66, "もぐら棒(星の欠片)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_search_item_table$47.$$arity = 1); - - Opal.def(self, '$mk_word_1_table', $MeikyuKingdomBasic_mk_word_1_table$48 = function $$mk_word_1_table(num) { - var self = this, table = nil; - - - table = [[11, "魔法"], [12, "おめかし"], [13, "狭いところ"], [14, "夜更かし"], [15, "節約"], [16, "会議"], [22, "ヒゲ"], [23, "孤独"], [24, "説教"], [25, "自分探し"], [26, "異性"], [33, "ヒラヒラした服"], [34, "平穏な生活"], [35, "自分語り"], [36, "風呂"], [44, "古いもの"], [45, "頭が悪い人"], [46, "暗闇"], [55, "許嫁"], [56, "民"], [66, "バカ"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_word_1_table$48.$$arity = 1); - - Opal.def(self, '$mk_word_2_table', $MeikyuKingdomBasic_mk_word_2_table$49 = function $$mk_word_2_table(num) { - var self = this, table = nil; - - - table = [[11, "科学"], [12, "読書"], [13, "広いところ"], [14, "早起き"], [15, "ムダ"], [16, "仕事"], [22, "陰謀"], [23, "みんなで集まること"], [24, "ナンパ"], [25, "昔話"], [26, "同性"], [33, "武器の手入れ"], [34, "戦争"], [35, "人の噂"], [36, "散髪"], [44, "新しいもの"], [45, "頭がよい人"], [46, "光"], [55, "親"], [56, "外国人"], [66, "ホラ話"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_word_2_table$49.$$arity = 1); - - Opal.def(self, '$mk_word_3_table', $MeikyuKingdomBasic_mk_word_3_table$50 = function $$mk_word_3_table(num) { - var self = this, table = nil; - - - table = [[11, "子供"], [12, "弱い人"], [13, "処刑"], [14, "叙事詩"], [15, "煙草"], [16, "病院"], [22, "演説"], [23, "酒盛り"], [24, "料理"], [25, "武芸"], [26, "田舎"], [33, "自分の国"], [34, "伝統"], [35, "お祭り"], [36, "告げ口"], [44, "自分の声"], [45, "マヨネーズ"], [46, "おせっかい"], [55, "猫"], [56, "混沌"], [66, "占い"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_word_3_table$50.$$arity = 1); - - Opal.def(self, '$mk_word_4_table', $MeikyuKingdomBasic_mk_word_4_table$51 = function $$mk_word_4_table(num) { - var self = this, table = nil; - - - table = [[11, "年寄り"], [12, "強い人"], [13, "空想"], [14, "冗談"], [15, "クスリ"], [16, "怪物"], [22, "一騎打ち"], [23, "賭け事"], [24, "歌"], [25, "勉強"], [26, "都会"], [33, "冒険"], [34, "ダイナマイト大帝"], [35, "盗み"], [36, "言い訳"], [44, "隣のキャラのジョブ"], [45, "小鬼"], [46, "謝ること"], [55, "隣のキャラのクラス"], [56, "星"], [66, "肉"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_word_4_table$51.$$arity = 1); - - Opal.def(self, '$mk_treasure1_table', $MeikyuKingdomBasic_mk_treasure1_table$52 = function $$mk_treasure1_table() { - var self = this; - - return self.$get_table_by_1d6(["何もなし", "何もなし", "そのモンスターの素材欄の中から、好きな素材1個", "そのモンスターの素材欄の中から、好きな素材2個", "そのモンスターの素材欄の中から、好きな素材3個", "【お弁当】1つを手に入れる"]) - }, $MeikyuKingdomBasic_mk_treasure1_table$52.$$arity = 0); - - Opal.def(self, '$mk_treasure2_table', $MeikyuKingdomBasic_mk_treasure2_table$53 = function $$mk_treasure2_table() { - var self = this; - - return self.$get_table_by_1d6(["そのモンスターの素材欄の中から、好きな素材3個", "そのモンスターの素材欄の中から、好きな素材4個", "そのモンスターの素材欄の中から、好きな素材5個", "ランダムに回復アイテム1個を選ぶ", "ランダムに武具アイテム1個を選ぶ。そのアイテムにレベルがあれば、1レベルのものが手に入る", "ランダムにレア一般アイテム1個を選び、それを手に入れる"]) - }, $MeikyuKingdomBasic_mk_treasure2_table$53.$$arity = 0); - - Opal.def(self, '$mk_treasure3_table', $MeikyuKingdomBasic_mk_treasure3_table$54 = function $$mk_treasure3_table() { - var self = this; - - return self.$get_table_by_1d6(["そのモンスターの素材欄の中から、好きな素材5個", "そのモンスターの素材欄の中から、好きな素材7個", "そのモンスターの素材欄の中から、好きな素材10個", "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個を選ぶ。そのアイテムにレベルがあれば、アイテムなら1レベルのものが手に入る", "ランダムにレア一般アイテム1個を選ぶ。そのアイテムにレベルがあれば、1レベルのものが手に入る", "ランダムにレア武具アイテム1個を選び、それを手に入れる"]) - }, $MeikyuKingdomBasic_mk_treasure3_table$54.$$arity = 0); - - Opal.def(self, '$mk_treasure4_table', $MeikyuKingdomBasic_mk_treasure4_table$55 = function $$mk_treasure4_table() { - var self = this; - - return self.$get_table_by_1d6(["そのモンスターの素材欄の中から、好きな素材5個", "そのモンスターの素材欄の中から、好きな素材10個", "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個を選ぶ。そのアイテムにレベルがあれば、2レベルのものが手に入る", "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個を選ぶ。そのアイテムにレベルがあれば、3レベルのものが手に入る", "ランダムにレア一般アイテム1個を選ぶ。そのアイテムにレベルがあれば、2レベルのものが手に入る", "ランダムにレア武具アイテム1個を選ぶ。そのアイテムにレベルがあれば、1レベルのものが手に入る"]) - }, $MeikyuKingdomBasic_mk_treasure4_table$55.$$arity = 0); - - Opal.def(self, '$mk_treasure5_table', $MeikyuKingdomBasic_mk_treasure5_table$56 = function $$mk_treasure5_table() { - var self = this; - - return self.$get_table_by_1d6(["そのモンスターの素材欄の中から、好きな素材10個", "そのモンスターの素材欄の中から、好きな素材15個", "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個を選ぶ。そのアイテムにレベルがあれば、4レベルのものが手に入る", "ランダムにレア一般アイテム1個を選ぶ。そのアイテムにレベルがあれば、3レベルのものが手に入る", "ランダムにレア武具アイテム1個を選ぶ。そのアイテムにレベルがあれば、2レベルのものが手に入る", "好きなレアアイテム1個を選び、それを入手する"]) - }, $MeikyuKingdomBasic_mk_treasure5_table$56.$$arity = 0); - - Opal.def(self, '$mk_name_ex_table', $MeikyuKingdomBasic_mk_name_ex_table$57 = function $$mk_name_ex_table(num) { - var self = this, table = nil; - - - table = [[11, "モアイ/スイショウドクロ"], [12, "チュパカブラ/ムベンベ"], [13, "カンフー/インヤン"], [14, "ブシドー/ミヤコ"], [15, "チャンピオン/バービー"], [16, "ウパニシャッド/ゾルゲ"], [22, "デスマーチ/インテル"], [23, "ゴッホ/ヴィクトリア"], [24, "ゾンビ/オニャンコポン"], [25, "ケロッパ/カルメン"], [26, "オーバーキル/サシミ"], [33, "ブッチャー/デヴィ"], [34, "ブロンソン/マドンナ"], [35, "ガイギャックス/エロイカ"], [36, "好きな星の名前(スピカ,オリオン)"], [44, "好きな武器の名前(エペ,フランベルジュ)"], [45, "好きな動物の名前(イタチ,パグ)"], [46, "好きな鉱物の名前(ルビィ,ヒスイ)"], [55, "好きな言葉+ドラゴン"], [56, "好きな単語表で決定する"], [66, "プレイヤーと同じ名前"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_name_ex_table$57.$$arity = 1); - - Opal.def(self, '$mk_new_name_table', $MeikyuKingdomBasic_mk_new_name_table$58 = function $$mk_new_name_table() { - var $a, $b, self = this, output = nil, nick_table = nil, name_table = nil, nick_n = nil, name_n = nil, d1 = nil, d2 = nil, dice = nil; - - - output = "1"; - nick_table = "1"; - name_table = "1"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (nick_n = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (name_n = ($a[0] == null ? nil : $a[0])), $b; - d1 = self.$d66(2); - d2 = self.$d66(2); - if ($truthy($rb_le(nick_n, 1))) { - nick_table = self.$mk_nick_pr_table(d1) - } else if ($truthy($rb_le(name_n, 2))) { - nick_table = self.$mk_nick_fo_table(d1) - } else if ($truthy($rb_le(name_n, 3))) { - nick_table = self.$mk_nick_ou_table(d1) - } else if ($truthy($rb_le(name_n, 4))) { - nick_table = self.$mk_nick_ti_table(d1) - } else if ($truthy($rb_le(name_n, 5))) { - nick_table = self.$mk_nick_ph_table(d1) - } else { - nick_table = self.$mk_nick_co_table(d1) - }; - if ($truthy($rb_le(name_n, 1))) { - name_table = self.$mk_name_ar_table(d2) - } else if ($truthy($rb_le(name_n, 2))) { - name_table = self.$mk_name_fo_table(d2) - } else if ($truthy($rb_le(name_n, 3))) { - name_table = self.$mk_name_dn_table(d2) - } else if ($truthy($rb_le(name_n, 4))) { - name_table = self.$mk_name_pl_table(d2) - } else if ($truthy($rb_le(name_n, 5))) { - name_table = self.$mk_name_ma_table(d2) - } else { - name_table = self.$mk_name_go_table(d2) - }; - output = $rb_plus(nick_table, name_table); - self.$debug("output", output); - dice = "" + (nick_n) + "," + (name_n) + "," + (d1) + "," + (d2); - return [output, dice]; - }, $MeikyuKingdomBasic_mk_new_name_table$58.$$arity = 0); - - Opal.def(self, '$mk_nick_pr_table', $MeikyuKingdomBasic_mk_nick_pr_table$59 = function $$mk_nick_pr_table(num) { - var self = this, table = nil; - - - table = [[11, "“九死に一生を得る”"], [12, "“風前の灯火の”"], [13, "“類は友を呼ぶ”"], [14, "“性格がいい方の”"], [15, "“三階に家なき”"], [16, "“五分の理はある”"], [22, "“危ない橋を渡る”"], [23, "“バカって言った方がバカの”"], [24, "“長いものに巻かれる”"], [25, "“火の無いところの”"], [26, "“あばたもえくぼの”"], [33, "“将を射んとせばまず”"], [34, "“氷山の一角の”"], [35, "“木乃伊取りが木乃伊になる”"], [36, "“一見の価値ありの”"], [44, "“一日の長ある”"], [45, "“遠くの親類より近くの”"], [46, "“笑う門には福来る”"], [55, "“花は桜木、人は”"], [56, "“猫に小判の”"], [66, "“(クラス名/ジョブ名)による(クラス名/ジョブ名)のための”"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_nick_pr_table$59.$$arity = 1); - - Opal.def(self, '$mk_nick_fo_table', $MeikyuKingdomBasic_mk_nick_fo_table$60 = function $$mk_nick_fo_table(num) { - var self = this, table = nil; - - - table = [[11, "“自画自賛(の)”"], [12, "“人畜無害(の)”"], [13, "“不言実行(の)”"], [14, "“痛快無比(の)”"], [15, "“外柔内剛(の)”"], [16, "“百戦錬磨(の)”"], [22, "“前代未聞(の)”"], [23, "“粉骨砕身(の)”"], [24, "“天真爛漫(の)”"], [25, "“暴飲暴食(の)”"], [26, "“意志薄弱(の)”"], [33, "“慇懃無礼(の)”"], [34, "“沈魚落雁(の)”"], [35, "“波乱万丈(の)”"], [36, "“二束三文(の)”"], [44, "“行雲流水(の)”"], [45, "“驚天動地(の)”"], [46, "“破邪顕正(の)”"], [55, "“以心伝心(の)”"], [56, "“博覧強記(の)”"], [66, "“殺人事件(の)”"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_nick_fo_table$60.$$arity = 1); - - Opal.def(self, '$mk_nick_ou_table', $MeikyuKingdomBasic_mk_nick_ou_table$61 = function $$mk_nick_ou_table(num) { - var self = this, table = nil; - - - table = [[11, "“もふもふの”"], [12, "“裸の”"], [13, "“猫耳の”"], [14, "“歩くと音がする”"], [15, "“緑髪の”"], [16, "“黄金(の)”"], [22, "“羽根つき(の)”"], [23, "“小さな”"], [24, "“蛇手の”"], [25, "“鉤シッポの”"], [26, "“ぎざぎざの”"], [33, "“輝ける”"], [34, "“角持ち(の)”"], [35, "“とんがり帽子の”"], [36, "“青ざめた”"], [44, "“赤目の”"], [45, "“黒衣の”"], [46, "“ねじれ声の”"], [55, "“銀の腕”"], [56, "“長靴下の”"], [66, "“ぬるぬるの”"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_nick_ou_table$61.$$arity = 1); - - Opal.def(self, '$mk_nick_ti_table', $MeikyuKingdomBasic_mk_nick_ti_table$62 = function $$mk_nick_ti_table(num) { - var self = this, table = nil; - - - table = [[11, "“(王国名)の星”"], [12, "“(王国名)の独眼竜”"], [13, "“(王国名)の麒麟児”"], [14, "“(王国名)の虎”"], [15, "“(王国名)のマムシ”"], [16, "“(王国名)1D6天王”"], [22, "“(王国名)1D6傑”"], [23, "“(王国名)1D6銃士”"], [24, "“(王国名)10+1D6神将”"], [25, "“(王国名)2D6(兄弟/姉妹)”"], [26, "“(王国名)2D6賢人”"], [33, "“あの(クラス名/ジョブ名)”"], [34, "“最後の(クラス名/ジョブ名)”"], [35, "“メカ(クラス名/ジョブ名)”"], [36, "“殺人(クラス名/ジョブ名)”"], [44, "“カリスマ(クラス名/ジョブ名)”"], [45, "“超級(クラス名/ジョブ名)”"], [46, "“攻め(クラス名/ジョブ名)”"], [55, "“スタイリッシュ(クラス名/ジョブ名)”"], [56, "“大(クラス名/ジョブ名)”"], [66, "“鬼(クラス名/ジョブ名)”"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_nick_ti_table$62.$$arity = 1); - - Opal.def(self, '$mk_nick_ph_table', $MeikyuKingdomBasic_mk_nick_ph_table$63 = function $$mk_nick_ph_table(num) { - var self = this, table = nil; - - - table = [[11, "“世界が嫉妬する”"], [12, "“うまい、うますぎる”"], [13, "“24時間戦える”"], [14, "“脱いでもすごい”"], [15, "“ピカピカの1年生”"], [16, "“どうあがいても絶望の”"], [22, "“ダメ絶対の”"], [23, "“すべての王国を過去にする”"], [24, "“100人乗っても大丈夫な”"], [25, "“綺麗なおねえさんが好きな”"], [26, "“食う寝る遊ぶの”"], [33, "“かわいいは正義の”"], [34, "“それにつけても”"], [35, "“お口の恋人”"], [36, "“やめられない止まらない”"], [44, "“半分はやさしさの”"], [45, "“国民的美少女”"], [46, "“プライスレスの”"], [55, "“驚きの白さの”"], [56, "“楽器のマークの”"], [66, "“パンツじゃないから恥ずかしくない”"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_nick_ph_table$63.$$arity = 1); - - Opal.def(self, '$mk_nick_co_table', $MeikyuKingdomBasic_mk_nick_co_table$64 = function $$mk_nick_co_table(num) { - var self = this, table = nil; - - - table = [[11, "“(王国名/氷)の牙”"], [12, "“(王国名/不可視)の猟犬”"], [13, "“(王国名/暴虐)の女神”"], [14, "“(王国名/無限)の境界”"], [15, "“(王国名/偽り)の救世主”"], [16, "“(王国名/闇)の扉”"], [22, "“(王国名/暁)の凶星”"], [23, "“(王国名/災禍)の中心”"], [24, "“(王国名/始まり)の記憶”"], [25, "“(王国名/絶対)の歌声”"], [26, "“(王国名/星霜)の死神”"], [33, "“(王国名/不確定)の隠者”"], [34, "“(王国名/冥府)の番人”"], [35, "“(王国名/深淵)の使途”"], [36, "“(王国名/罪)の華”"], [44, "“(王国名/終末)の翼”"], [45, "“(王国名/絶望)の匠”"], [46, "“(王国名/鮮血)の芸術家”"], [55, "“(王国名/流星)の魔剣”"], [56, "“(王国名/漆黒)の堕天使”"], [66, "“(王国名/無貌)の悪夢”"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_nick_co_table$64.$$arity = 1); - - Opal.def(self, '$mk_name_ar_table', $MeikyuKingdomBasic_mk_name_ar_table$65 = function $$mk_name_ar_table(num) { - var self = this, table = nil; - - - table = [[11, "コーラス/メロディ"], [12, "シタール/コト"], [13, "トロンボーン/ティンパニ"], [14, "マーチ/セレナーデ"], [15, "ソロ/オーケストラ"], [16, "パッソ/プリマ"], [22, "モノローグ/アポローズ"], [23, "スクリプト/カメリーノ"], [24, "アール/エピカ"], [25, "ラインズ/ムジカ"], [26, "トルバドール/リリカ"], [33, "ノベル/ラマーン"], [34, "クリーミ/ストーリア"], [35, "エッセイ/メモワール"], [36, "ジャケット/コロフォン"], [44, "デビュー/セーヌ"], [45, "タンゴ/バル"], [46, "イーゼル/パレット"], [55, "カンバス/タトゥー"], [56, "ウッドカット/キラーミカ"], [66, "ポートレイト/パノラマ"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_name_ar_table$65.$$arity = 1); - - Opal.def(self, '$mk_name_fo_table', $MeikyuKingdomBasic_mk_name_fo_table$66 = function $$mk_name_fo_table(num) { - var self = this, table = nil; - - - table = [[11, "ダージリン/マンデリン"], [12, "コニャック/ピーノ"], [13, "グラス/テキーラ"], [14, "ハングオーバー/リキュール"], [15, "ブレッド/プレッツェル"], [16, "バケット/コロネ"], [22, "クロワッサン/ヤムチャ"], [23, "ヤキソバ/パッタイ"], [24, "ニョッキ/ペンネ"], [25, "ハニー/メイプル"], [26, "ガトー/フラン"], [33, "ジュレ/ソルベ"], [34, "リゾット/チマキ"], [35, "フリット/テンプラ"], [36, "カルビ/ハラミ"], [44, "ポージョ/ユーリンチー"], [45, "アイスバイン/イベリコ"], [46, "ブルスト/キシュカ"], [55, "ドリアン/キウィ"], [56, "ココ/プラム"], [66, "ガリガリ/ポテチ"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_name_fo_table$66.$$arity = 1); - - Opal.def(self, '$mk_name_dn_table', $MeikyuKingdomBasic_mk_name_dn_table$67 = function $$mk_name_dn_table(num) { - var self = this, table = nil; - - - table = [[11, "ファイバー/シルク"], [12, "ジーンズ/キュロット"], [13, "ガーター/ソックス"], [14, "クラヴァッテ/スカーフ"], [15, "サンダル/ハイヒール"], [16, "リング/ブローチ"], [22, "ボタン/リカーモ"], [23, "シュピーゲル/ルージュ"], [24, "オーデコロン/マニキュア"], [25, "シルクハット/サリー"], [26, "ソープ/コーム"], [33, "スツール/ソファー"], [34, "ブランケット/マクラ"], [35, "ケトル/ポット"], [36, "ゲイト/ポーチ"], [44, "ギムレット/レンチ"], [45, "シェイヴァー/シャンプー"], [46, "タオル/マスカラ"], [55, "クローゼット/クッション"], [56, "カウチ/クリップ"], [66, "スタンプ/カレンダー"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_name_dn_table$67.$$arity = 1); - - Opal.def(self, '$mk_name_pl_table', $MeikyuKingdomBasic_mk_name_pl_table$68 = function $$mk_name_pl_table(num) { - var self = this, table = nil; - - - table = [[11, "シアトル/ヴァージニア"], [12, "デーン/ヴァーサ"], [13, "タイガ/ユルガ"], [14, "クルスク/トゥール"], [15, "アラド/モルダヴィア"], [16, "キエフ/ユークレイン"], [22, "ウガンダ/ガーナ"], [23, "ギザ/アレクサンドリア"], [24, "キリマンジャロ/ソマリ"], [25, "ガイアナ/リオ"], [26, "イグアス/アマゾン"], [33, "サンティアゴ/ナスカ"], [34, "クーロン/シャンハイ"], [35, "ベナレス/デリー"], [36, "バリ/セイロン"], [44, "ティモール/スマトラ"], [45, "トリノ/シチリア"], [46, "バスク/グラナダ"], [55, "キプロス/クレタ"], [56, "ザクセン/ケルン"], [66, "リヨン/ニース"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_name_pl_table$68.$$arity = 1); - - Opal.def(self, '$mk_name_ma_table', $MeikyuKingdomBasic_mk_name_ma_table$69 = function $$mk_name_ma_table(num) { - var self = this, table = nil; - - - table = [[11, "ウォッチ/シーナ"], [12, "アンテナ/テレ"], [13, "グリル/バティドーラ"], [14, "ステレオ/カリヨン"], [15, "マキナ/アルマ"], [16, "ロケット/ヴィルタリオート"], [22, "ルー/フラン"], [23, "モーター/モトーレ"], [24, "ドライラート/コーチェ"], [25, "クロック/セニャーレ"], [26, "ポンプ/アントリア"], [33, "スケイルズ/プランチャ"], [34, "ランプ/シャンデリア"], [35, "ガジエラ/カノン"], [36, "リフト/エクレール"], [44, "ナルキ/プランタ"], [45, "サカプンタス/アーラ"], [46, "シュレッダー/ナウス"], [55, "ファブリーク/ユジーヌ"], [56, "ボイラー/カルダイヤ"], [66, "エンジン/トリシクル"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_name_ma_table$69.$$arity = 1); - - Opal.def(self, '$mk_name_go_table', $MeikyuKingdomBasic_mk_name_go_table$70 = function $$mk_name_go_table(num) { - var self = this, table = nil; - - - table = [[11, "ケルヌンノス/アリアンロッド"], [12, "ジーザス/マリア"], [13, "ブッダ/スジャータ"], [14, "ゼウス/ヘラ"], [15, "シヴァ/パールヴァティ"], [16, "マルス/ミネルヴァ"], [22, "スサノオ/ウズメ"], [23, "バンコ/ジョカ"], [24, "インティ/パチャママ"], [25, "ダグザ/モリガン"], [26, "バロン/ランダ"], [33, "アヌビス/バステト"], [34, "ジャンゴ/アナンシ"], [35, "トラロック/コアトリクエ"], [36, "バアル/アシュタルテ"], [44, "アフラマズダ/アムルタート"], [45, "ベロボーグ/モコシ"], [46, "エンキ/イナンナ"], [55, "オーディン/フレイヤ"], [56, "ココペリ/ココペルマナ"], [66, "クトゥルフ/ハイドラ"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_name_go_table$70.$$arity = 1); - - Opal.def(self, '$mk_normal_rare_item_table', $MeikyuKingdomBasic_mk_normal_rare_item_table$71 = function $$mk_normal_rare_item_table(num) { - var self = this, table = nil; - - - table = [[11, "愚者の冠"], [12, "香水"], [13, "煙玉"], [14, "悪名"], [15, "藁人形"], [16, "王妃の鏡"], [21, "星籠"], [22, "転ばぬ先の杖"], [23, "悟りの書"], [24, "鉛の兵隊"], [25, "黄金の林檎"], [26, "百年茸"], [31, "愚者の冠"], [32, "香水"], [33, "煙玉"], [34, "悪名"], [35, "藁人形"], [36, "王妃の鏡"], [41, "星籠"], [42, "転ばぬ先の杖"], [43, "悟りの書"], [44, "鉛の兵隊"], [45, "黄金の林檎"], [46, "百年茸"], [51, "操りロープ"], [52, "盗賊の七つ道具"], [53, "露眼鏡"], [54, "災厄王の遺物"], [55, "魔法の鞍"], [56, "琵琶"], [61, "兎の足"], [62, "視肉"], [63, "衛星帯"], [64, "魔法の絨毯"], [65, "軍配"], [66, "聖杯"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_normal_rare_item_table$71.$$arity = 1); - - Opal.def(self, '$mk_normal_rare_weapon_item_table', $MeikyuKingdomBasic_mk_normal_rare_weapon_item_table$72 = function $$mk_normal_rare_weapon_item_table(num) { - var self = this, table = nil; - - - table = [[11, "蛍矢"], [12, "小麦粉"], [13, "喇叭銃"], [14, "まわし"], [15, "しゃべる剣"], [16, "大盾"], [21, "王笏"], [22, "ぬいぐるみ"], [23, "魔杖"], [24, "獣の毛皮"], [25, "バカには見えない鎧"], [26, "ビキニアーマー"], [31, "蛍矢"], [32, "小麦粉"], [33, "喇叭銃"], [34, "まわし"], [35, "しゃべる剣"], [36, "大盾"], [41, "王笏"], [42, "ぬいぐるみ"], [43, "魔杖"], [44, "獣の毛皮"], [45, "バカには見えない鎧"], [46, "ビキニアーマー"], [51, "チェインソード"], [52, "輝く者"], [53, "貪る者"], [54, "滅ぼす者"], [55, "機械の体"], [56, "刈り取る者"], [61, "断ち切る者"], [62, "竜の鱗鎧"], [63, "射貫く者"], [64, "貫く者"], [65, "剥ぎ取る者"], [66, "王剣"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_normal_rare_weapon_item_table$72.$$arity = 1); - - Opal.def(self, '$mk_advanced_rare_item_table', $MeikyuKingdomBasic_mk_advanced_rare_item_table$73 = function $$mk_advanced_rare_item_table(num) { - var self = this, table = nil; - - - table = [[11, "砂時計週報"], [12, "兵糧丸"], [13, "遊星葉書"], [14, "百科辞典"], [15, "夢枕"], [16, "蓄音機"], [21, "砂時計週報"], [22, "兵糧丸"], [23, "遊星葉書"], [24, "百科辞典"], [25, "夢枕"], [26, "蓄音機"], [31, "水晶球"], [32, "狭間の棺桶"], [33, "不思議なたまご"], [34, "魔法瓶"], [35, "不死鳥の羽飾り"], [36, "紅葫蘆"], [41, "水晶球"], [42, "狭間の棺桶"], [43, "不思議なたまご"], [44, "魔法瓶"], [45, "不死鳥の羽飾り"], [46, "紅葫蘆"], [51, "打ち出の小槌"], [52, "消火器"], [53, "滅びの予言書"], [54, "召魔鏡"], [55, "鉄仮面"], [56, "愛"], [61, "打ち出の小槌"], [62, "消火器"], [63, "滅びの予言書"], [64, "召魔鏡"], [65, "鉄仮面"], [66, "愛"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_advanced_rare_item_table$73.$$arity = 1); - - Opal.def(self, '$mk_advanced_rare_weapon_item_table', $MeikyuKingdomBasic_mk_advanced_rare_weapon_item_table$74 = function $$mk_advanced_rare_weapon_item_table(num) { - var self = this, table = nil; - - - table = [[11, "虚弾"], [12, "小鬼の襟巻"], [13, "眼弾"], [14, "釣竿"], [15, "虹柱"], [16, "服従の鞭"], [21, "虚弾"], [22, "小鬼の襟巻"], [23, "眼弾"], [24, "釣竿"], [25, "虹柱"], [26, "服従の鞭"], [31, "星の杖"], [32, "聖印"], [33, "迷い傘"], [34, "邪眼"], [35, "徒手空拳"], [36, "隠れ兜"], [41, "星の杖"], [42, "聖印"], [43, "迷い傘"], [44, "邪眼"], [45, "徒手空拳"], [46, "隠れ兜"], [51, "太刀鋏"], [52, "破城槌"], [53, "黄金の鶴嘴"], [54, "ムラサマ"], [55, "君主の衣"], [56, "蒸気甲冑"], [61, "太刀鋏"], [62, "破城槌"], [63, "黄金の鶴嘴"], [64, "ムラサマ"], [65, "君主の衣"], [66, "蒸気甲冑"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_advanced_rare_weapon_item_table$74.$$arity = 1); - - Opal.def(self, '$mk_device_factory_table', $MeikyuKingdomBasic_mk_device_factory_table$75 = function $$mk_device_factory_table(num) { - var $a, $b, $$76, self = this, dice = nil, output = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - output = $rb_plus($rb_plus("ベースアイテム:", self.$mk_item_random_table(dice)), " (もしくは任意のアイテム)"); - if ($truthy($rb_le(num, 0))) { - num = 1}; - $send(num, 'times', [], ($$76 = function(_i){var self = $$76.$$s || this, $c, $d; - - - - if (_i == null) { - _i = nil; - }; - $d = self.$roll(2, 6), $c = Opal.to_ary($d), (dice = ($c[0] == null ? nil : $c[0])), $d; - output = $rb_plus(output, $rb_plus("\n", self.$mk_item_features_table(dice))); - return self.$debug("output", output);}, $$76.$$s = self, $$76.$$arity = 1, $$76)); - return output; - }, $MeikyuKingdomBasic_mk_device_factory_table$75.$$arity = 1); - - Opal.def(self, '$mk_item_random_table', $MeikyuKingdomBasic_mk_item_random_table$77 = function $$mk_item_random_table(num) { - var $$78, $$79, $$80, $$81, $$82, $$83, self = this, functionTable = nil; - - - functionTable = [[1, $send(self, 'lambda', [], ($$78 = function(){var self = $$78.$$s || this; - - return self.$mk_weapon_item_table(self.$d66(2))}, $$78.$$s = self, $$78.$$arity = 0, $$78))], [2, $send(self, 'lambda', [], ($$79 = function(){var self = $$79.$$s || this; - - return self.$mk_life_item_table(self.$d66(2))}, $$79.$$s = self, $$79.$$arity = 0, $$79))], [3, $send(self, 'lambda', [], ($$80 = function(){var self = $$80.$$s || this; - - return self.$mk_rest_item_table(self.$d66(2))}, $$80.$$s = self, $$80.$$arity = 0, $$80))], [4, $send(self, 'lambda', [], ($$81 = function(){var self = $$81.$$s || this; - - return self.$mk_search_item_table(self.$d66(2))}, $$81.$$s = self, $$81.$$arity = 0, $$81))], [5, $send(self, 'lambda', [], ($$82 = function(){var self = $$82.$$s || this; - - return self.$mk_rare_usual_item_random_table(self.$roll(1, 6))}, $$82.$$s = self, $$82.$$arity = 0, $$82))], [6, $send(self, 'lambda', [], ($$83 = function(){var self = $$83.$$s || this; - - return self.$mk_rare_weapon_item_random_table(self.$roll(1, 6))}, $$83.$$s = self, $$83.$$arity = 0, $$83))]]; - return self.$get_table_by_number(num, functionTable); - }, $MeikyuKingdomBasic_mk_item_random_table$77.$$arity = 1); - - Opal.def(self, '$mk_item_features_table', $MeikyuKingdomBasic_mk_item_features_table$84 = function $$mk_item_features_table(num) { - var $a, $b, self = this, output = nil, dice = nil, d1 = nil; - - - output = ""; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy($rb_le(num, 2))) { - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d1 = ($a[0] == null ? nil : $a[0])), $b; - output = $rb_plus($rb_plus("そのアイテムは「", self.$mk_item_power_table(d1)), "」の神力を宿す。"); - } else if ($truthy($rb_le(num, 3))) { - - output = $rb_plus("そのアイテムは寿命を持つ。寿命の値を決定する。", "\n"); - output = $rb_plus(output, $rb_plus("さらに、", self.$mk_item_features_table(dice))); - } else if ($truthy($rb_le(num, 4))) { - output = "そのアイテムは境界障壁を持つ。《HP》の値を決定する。" - } else if ($truthy($rb_le(num, 5))) { - output = "そのアイテムは銘を持つ。銘を決定する。" - } else if ($truthy($rb_le(num, 6))) { - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d1 = ($a[0] == null ? nil : $a[0])), $b; - output = $rb_plus($rb_plus("そのアイテムは合成具である。もう1つの機能は「", self.$mk_item_random_table(d1)), "」である。"); - } else if ($truthy($rb_le(num, 7))) { - - output = $rb_plus("そのアイテムにレベルがあれば、レベルを1点上昇する。", "\n"); - output = $rb_plus(output, $rb_plus("レベルが設定されていなければ、", self.$mk_item_features_table(dice))); - } else if ($truthy($rb_le(num, 8))) { - output = $rb_plus($rb_plus("そのアイテムは「", self.$mk_item_jyumon_table(dice)), "」の呪紋を持つ。") - } else if ($truthy($rb_le(num, 9))) { - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d1 = ($a[0] == null ? nil : $a[0])), $b; - output = $rb_plus($rb_plus($rb_plus("そのアイテムは「", self.$mk_item_jyuka_table(d1)), "」の呪禍を持つ。"), "\n"); - output = $rb_plus(output, $rb_plus("さらに、", self.$mk_item_features_table(dice))); - } else if ($truthy($rb_le(num, 10))) { - output = "そのアイテムは高価だ。価格を設定する。" - } else if ($truthy($rb_le(num, 11))) { - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d1 = ($a[0] == null ? nil : $a[0])), $b; - output = $rb_plus($rb_plus($rb_plus("そのアイテムは「条件:", self.$mk_item_aptitude_table(d1)), "」の適正を持つ。"), "\n"); - output = $rb_plus(output, $rb_plus("さらに、", self.$mk_item_features_table(dice))); - } else { - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d1 = ($a[0] == null ? nil : $a[0])), $b; - output = $rb_plus($rb_plus("そのアイテムは「", self.$mk_item_attribute_table(d1)), "」の属性を持つ。"); - }; - return $rb_plus($rb_plus($rb_plus("特性[", num.$to_s()), "]:"), output); - }, $MeikyuKingdomBasic_mk_item_features_table$84.$$arity = 1); - - Opal.def(self, '$mk_item_power_table', $MeikyuKingdomBasic_mk_item_power_table$85 = function $$mk_item_power_table(num) { - var self = this, table = nil; - - - table = [[1, "才覚"], [2, "魅力"], [3, "探索"], [4, "武勇"], [5, "《器》"], [6, "《回避値》"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdomBasic_mk_item_power_table$85.$$arity = 1); - - Opal.def(self, '$mk_item_jyumon_table', $MeikyuKingdomBasic_mk_item_jyumon_table$86 = function $$mk_item_jyumon_table(num) { - var self = this, table = nil; - - - table = [[2, "ランダムに選んだモンスターカテゴリ1種のうち、【人類の敵】未習得かつ(2D6)レベル以下のモンスタースキル"], [3, "便利スキルから好きなスキル1種"], [4, "芸能スキルから好きなスキル1種"], [5, "迷宮スキルから好きなスキル1種"], [6, "星術スキルから好きなスキル1種"], [7, "一般スキルから好きなスキル1種"], [8, "召喚スキルから好きなスキル1種"], [9, "科学スキルから好きなスキル1種"], [10, "交渉スキルから好きなスキル1種"], [11, "神官のクラススキルから好きなスキル1種"], [12, "生まれ表を使用してランダムに決めたジョブのジョブスキル"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdomBasic_mk_item_jyumon_table$86.$$arity = 1); - - Opal.def(self, '$mk_item_jyuka_table', $MeikyuKingdomBasic_mk_item_jyuka_table$87 = function $$mk_item_jyuka_table(num) { - var self = this, table = nil; - - - table = [[1, "このアイテムを装備している限り「呪い3」の変調を受ける"], [2, "このアイテムを装備している限り「肥満3」の変調を受ける"], [3, "このアイテムを装備している限り「憤怒」の変調を受ける"], [4, "このアイテムを装備している限り「毒2」の変調を受ける"], [5, "このアイテムを装備している限り、条件を満たしても誰とも人間関係を結べない"], [6, "このアイテムを装備している限り「散漫1」の変調を受ける"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdomBasic_mk_item_jyuka_table$87.$$arity = 1); - - Opal.def(self, '$mk_item_aptitude_table', $MeikyuKingdomBasic_mk_item_aptitude_table$88 = function $$mk_item_aptitude_table(num) { - var $$89, self = this, table = nil; - - - table = [[1, "ランダムなクラス1種であること"], [2, "生まれ表でランダムに選んだジョブであること"], [3, $send(self, 'lambda', [], ($$89 = function(){var self = $$89.$$s || this; - - return self.$mk_gender_table($rb_plus(self.$rand(6), 1))}, $$89.$$s = self, $$89.$$arity = 0, $$89))], [4, "上級ジョブであること"], [5, "モンスタースキルを修得していること"], [6, "童貞、もしくは処女であること"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdomBasic_mk_item_aptitude_table$88.$$arity = 1); - - Opal.def(self, '$mk_item_attribute_table', $MeikyuKingdomBasic_mk_item_attribute_table$90 = function $$mk_item_attribute_table(num) { - var self = this, table = nil; - - - table = [[1, "自然の力。10レベル以下の人間カテゴリのモンスターと重要NPC"], [2, "幻夢の力。10レベル以下の異形と呪物カテゴリのモンスター"], [3, "星炎の力。10レベル以下の魔獣と鬼族カテゴリのモンスター"], [4, "暗黒の力。10レベル以下の妖精と天使カテゴリのモンスター"], [5, "聖なる力。10レベル以下の死霊と深人カテゴリのモンスター"], [6, "災厄の力。支配者として設定されているキャラクター"]]; - return $rb_plus("" + "[" + (num) + "]", self.$get_table_by_number(num, table)); - }, $MeikyuKingdomBasic_mk_item_attribute_table$90.$$arity = 1); - - Opal.def(self, '$mk_gender_table', $MeikyuKingdomBasic_mk_gender_table$91 = function $$mk_gender_table(num) { - var self = this, output = nil; - - - output = "1"; - if ($truthy(num['$odd?']())) { - output = "性別が男であること" - } else { - output = "性別が女であること" - }; - return output; - }, $MeikyuKingdomBasic_mk_gender_table$91.$$arity = 1); - - Opal.def(self, '$mk_random_map_select_table', $MeikyuKingdomBasic_mk_random_map_select_table$92 = function $$mk_random_map_select_table(num) { - var self = this, table = nil; - - - table = [[11, "A-1"], [12, "A-1"], [13, "A-2"], [14, "A-2"], [15, "A-3"], [16, "A-3"], [21, "A-1"], [22, "A-1"], [23, "A-2"], [24, "A-2"], [25, "A-3"], [26, "A-3"], [31, "B-1"], [32, "B-1"], [33, "B-2"], [34, "B-2"], [35, "B-3"], [36, "B-3"], [41, "B-1"], [42, "B-1"], [43, "B-2"], [44, "B-2"], [45, "B-3"], [46, "B-3"], [51, "C-1"], [52, "C-1"], [53, "C-2"], [54, "C-2"], [55, "C-3"], [56, "C-3"], [61, "C-1"], [62, "C-1"], [63, "C-2"], [64, "C-2"], [65, "C-3"], [66, "C-3"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_random_map_select_table$92.$$arity = 1); - - Opal.def(self, '$mk_kingdom_name_1_table', $MeikyuKingdomBasic_mk_kingdom_name_1_table$93 = function $$mk_kingdom_name_1_table(num) { - var self = this, table = nil; - - - table = [[11, "暗黒、クラヤミ、星灯り、カガヤキ、シャイニング、黄昏、暁"], [12, "王政、帝政、爆発、回転"], [13, "超、スーパー、秘密主義、高等、ハイ、どん底"], [14, "共和制、立憲、公立、私立"], [15, "古代、新、ネオ、笑う、歌う"], [16, "共産、社会主義、自由、自由主義、ぶらり、ここは"], [22, "専制、民主主義、踊る、眠れる"], [23, "第三、最終、特別、標準"], [24, "神聖、聖、セント、絶対主義、現代、未来"], [25, "正統、本格、裏、偽、リバース、怪奇、幻想"], [26, "本家、元祖、荒ぶる、分かる"], [33, "大、グレート、小、スモール、必殺、淡麗"], [34, "天階、上、上方、深階、下、下方、異世界、現代"], [35, "東、東方、西、西方、かわいい、世界の"], [36, "北、北方、南、南方、赤い、緑の"], [44, "中央、辺境、飛び出せ、戦え"], [45, "独立、統一、ちはやぶる、八雲立つ"], [46, "永世、臨時、ザ、ラ"], [55, "さよなら、おはよう、太平、汎"], [56, "好戦的、平和的、素晴らしき、衝撃の"], [66, "優しい、怖い、ぼくらの、みんなの"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_kingdom_name_1_table$93.$$arity = 1); - - Opal.def(self, '$mk_kingdom_name_2_table', $MeikyuKingdomBasic_mk_kingdom_name_2_table$94 = function $$mk_kingdom_name_2_table(num) { - var self = this, table = nil; - - - table = [[11, "凸凹、仄仄、子ども、大人"], [12, "迷宮、ダンジョン、監獄、封印、墓場"], [13, "グランドゼロ、エレベータ、コンパス、行き止まり"], [14, "サイコロ、ダイス、ランダム、ファンブル、ピンゾロ、シャッフル"], [15, "災厄、征服、無敵、野蛮"], [16, "デーモン、魔神、エンジェル、天使、超人、哲人"], [22, "野球、サッカー、クリケット、バドミントン"], [23, "商、武、科学、クラフト"], [24, "ドラゴン、龍、ヴァンパイア、吸血鬼、ヒューマン、人間、フェアリー、妖精"], [25, "猫、狼、キリン、キンギョ"], [26, "バナナ、ボルシチ、スシ、チーズ"], [33, "ファンタジー、魔法、マジカル、冒険、英雄"], [34, "大砲、刀剣、装甲、鉄拳"], [35, "ひきこもり、乙女、3D、転生"], [36, "崖っぷち、片隅、路地裏、炎上"], [44, "電脳、浪漫、蒸気、退廃"], [45, "コンプライアンス、ダイバーシティ、アグリー、ウィンウィン"], [46, "ローマ、中華、エジプト、アステカ"], [55, "(単語表1で決定)、(単語表2で決定)、(単語表3で決定)、(単語表4で決定)"], [56, "(プレイ会場の地名)、(GMの出身地)、(この表を使用した者の住所)、(GMの苗字)"], [66, "(国王の名前。後で決定)、(国王のジョブ名。後で決定)、(ランダムな武具アイテム名)、(ランダムな日常アイテム名)"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_kingdom_name_2_table$94.$$arity = 1); - - Opal.def(self, '$mk_kingdom_name_3_table', $MeikyuKingdomBasic_mk_kingdom_name_3_table$95 = function $$mk_kingdom_name_3_table(num) { - var self = this, table = nil; - - - table = [[11, "王国、キングダム、王朝"], [12, "会社、公社、本舗"], [13, "学園、学校、食堂"], [14, "汗国、国"], [15, "合衆国、政府"], [16, "共同体、共和国"], [22, "司教国、教皇領"], [23, "星、伯国"], [24, "公国、大公国"], [25, "市、シティ、ポリス、都、のみやこ"], [26, "自治国、騎士団領"], [33, "植民地、統一機構"], [34, "帝国、皇国"], [35, "同盟、機関"], [36, "首長国、土侯国"], [44, "幕府、藩王国"], [45, "領、クラブ"], [46, "村、町、街"], [55, "横丁、亭、社中"], [56, "ランド、戦線"], [66, "連邦、連合"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_kingdom_name_3_table$95.$$arity = 1); - - Opal.def(self, '$mk_kingdom_environment_table', $MeikyuKingdomBasic_mk_kingdom_environment_table$96 = function $$mk_kingdom_environment_table(num) { - var $a, $b, $$97, $$98, $$99, $$100, $$101, $$102, self = this, d1 = nil, functionTable = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d1 = ($a[0] == null ? nil : $a[0])), $b; - functionTable = [[1, $send(self, 'lambda', [], ($$97 = function(){var self = $$97.$$s || this; - - return self.$mk_technic_decide_table(d1)}, $$97.$$s = self, $$97.$$arity = 0, $$97))], [2, $send(self, 'lambda', [], ($$98 = function(){var self = $$98.$$s || this; - - return self.$mk_national_style_decide_table(d1)}, $$98.$$s = self, $$98.$$arity = 0, $$98))], [3, $send(self, 'lambda', [], ($$99 = function(){var self = $$99.$$s || this; - - return self.$mk_resource_decide_table(d1)}, $$99.$$s = self, $$99.$$arity = 0, $$99))], [4, $send(self, 'lambda', [], ($$100 = function(){var self = $$100.$$s || this; - - return self.$mk_facility_decide_table(d1)}, $$100.$$s = self, $$100.$$arity = 0, $$100))], [5, $send(self, 'lambda', [], ($$101 = function(){var self = $$101.$$s || this; - - return self.$mk_human_resources_decide_table(d1)}, $$101.$$s = self, $$101.$$arity = 0, $$101))], [6, $send(self, 'lambda', [], ($$102 = function(){var self = $$102.$$s || this; - - return self.$mk_blood_decide_table(d1)}, $$102.$$s = self, $$102.$$arity = 0, $$102))]]; - return self.$get_table_by_number(num, functionTable); - }, $MeikyuKingdomBasic_mk_kingdom_environment_table$96.$$arity = 1); - - Opal.def(self, '$mk_advanced_bullet_skill_table', $MeikyuKingdomBasic_mk_advanced_bullet_skill_table$103 = function $$mk_advanced_bullet_skill_table() { - var self = this; - - return self.$get_table_by_1d3(["屈強", "追い討ち", "即席武器"]) - }, $MeikyuKingdomBasic_mk_advanced_bullet_skill_table$103.$$arity = 0); - - Opal.def(self, '$mk_advanced_shooting_skill_table', $MeikyuKingdomBasic_mk_advanced_shooting_skill_table$104 = function $$mk_advanced_shooting_skill_table() { - var self = this; - - return self.$get_table_by_1d3(["先制射撃", "鷹の目", "ブルズアイ"]) - }, $MeikyuKingdomBasic_mk_advanced_shooting_skill_table$104.$$arity = 0); - - Opal.def(self, '$mk_advanced_astrology_skill_table', $MeikyuKingdomBasic_mk_advanced_astrology_skill_table$105 = function $$mk_advanced_astrology_skill_table() { - var self = this; - - return self.$get_table_by_1d3(["星に願いを", "星のこえ", "破裂星"]) - }, $MeikyuKingdomBasic_mk_advanced_astrology_skill_table$105.$$arity = 0); - - Opal.def(self, '$mk_advanced_summon_skill_table', $MeikyuKingdomBasic_mk_advanced_summon_skill_table$106 = function $$mk_advanced_summon_skill_table() { - var self = this; - - return self.$get_table_by_1d3(["式神", "お引っ越し", "戦闘召喚"]) - }, $MeikyuKingdomBasic_mk_advanced_summon_skill_table$106.$$arity = 0); - - Opal.def(self, '$mk_advanced_science_skill_table', $MeikyuKingdomBasic_mk_advanced_science_skill_table$107 = function $$mk_advanced_science_skill_table() { - var self = this; - - return self.$get_table_by_1d3(["蘇生", "強化術式", "心霊研究"]) - }, $MeikyuKingdomBasic_mk_advanced_science_skill_table$107.$$arity = 0); - - Opal.def(self, '$mk_advanced_labyrinth_skill_table', $MeikyuKingdomBasic_mk_advanced_labyrinth_skill_table$108 = function $$mk_advanced_labyrinth_skill_table() { - var self = this; - - return self.$get_table_by_1d3(["迷宮工事", "迷核解析", "轟宮"]) - }, $MeikyuKingdomBasic_mk_advanced_labyrinth_skill_table$108.$$arity = 0); - - Opal.def(self, '$mk_advanced_negotiation_skill_table', $MeikyuKingdomBasic_mk_advanced_negotiation_skill_table$109 = function $$mk_advanced_negotiation_skill_table() { - var self = this; - - return self.$get_table_by_1d3(["色気", "威光", "挑発"]) - }, $MeikyuKingdomBasic_mk_advanced_negotiation_skill_table$109.$$arity = 0); - - Opal.def(self, '$mk_advanced_convenient_skill_table', $MeikyuKingdomBasic_mk_advanced_convenient_skill_table$110 = function $$mk_advanced_convenient_skill_table() { - var self = this; - - return self.$get_table_by_1d3(["心眼", "隠し味", "ながら"]) - }, $MeikyuKingdomBasic_mk_advanced_convenient_skill_table$110.$$arity = 0); - - Opal.def(self, '$mk_advanced_entertainment_skill_table', $MeikyuKingdomBasic_mk_advanced_entertainment_skill_table$111 = function $$mk_advanced_entertainment_skill_table() { - var self = this; - - return self.$get_table_by_1d3(["即興詩", "国歌", "隠し芸"]) - }, $MeikyuKingdomBasic_mk_advanced_entertainment_skill_table$111.$$arity = 0); - - Opal.def(self, '$mk_advanced_tool_skill_table', $MeikyuKingdomBasic_mk_advanced_tool_skill_table$112 = function $$mk_advanced_tool_skill_table() { - var self = this; - - return self.$get_table_by_1d3(["中かばん", "節約", "相棒"]) - }, $MeikyuKingdomBasic_mk_advanced_tool_skill_table$112.$$arity = 0); - - Opal.def(self, '$mk_technic_decide_table', $MeikyuKingdomBasic_mk_technic_decide_table$113 = function $$mk_technic_decide_table(num) { - var self = this, table = nil; - - - table = [[1, "あなたの国は、魔法の研究、開発に力をそそぐ魔道国家である。その国のキャラクターは、星術、召喚、科学スキルの判定を行うとき、その達成値が1点上昇する(最大3点まで上昇する。4回目以降は振り直すこと)。"], [2, "あなたの国は、神話的遺物の逸話が残っている。レア一般アイテムの中からランダムに1種を選ぶ。そのレアアイテムのレシピを持っている。【王宮】のある部屋に、そのレア一般アイテムの名前を記入すること。"], [3, "あなたの国は、英雄が用いた武具の伝説が残っている。レア武具アイテムの中からランダムに1種を選ぶ。そのレアアイテムのレシピを持っている。【王宮】のある部屋に、そのレア武具アイテムの名前を記入すること。"], [4, "あなたの国は、有名な職人たちが揃う工業国家である。コモンアイテムを作成するとき、それらのアイテムを作成するための必要国力が1点高いものとして扱う。"], [5, "あなたの国は、質実剛健な兵士たちが揃っている。その国のキャラクターは、《配下》最大値が1人上昇する(最大2人まで上昇する。3回目以降は振り直すこと)。"], [6, "あなたの国は、過去に列強に臣従し、いまでも友好的な関係を築いている。(1D6)を振ること。1ならダイナマイト帝国、2なら千年王朝、3ならメトロ汗国、4ならハグルマ資本主義人民共和国との関係が「友好」になる。5や6なら振り直すこと。また、その列強の列強系施設1軒を獲得する。"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_technic_decide_table$113.$$arity = 1); - - Opal.def(self, '$mk_national_style_decide_table', $MeikyuKingdomBasic_mk_national_style_decide_table$114 = function $$mk_national_style_decide_table(num) { - var self = this, table = nil; - - - table = [[1, "あなたの国は、古くからあり、伝統を重んじる気風を持つ。宮廷系施設を建設・発展するための価格が1MG軽減される(最大2MGまで軽減される。3回目以降は振り直すこと)。"], [2, "あなたの国は、広い国土と高い天井に恵まれている。居住系施設を建設するための価格が1MG軽減される(最大2MGまで軽減される。3回目以降は振り直すこと)。"], [3, "あなたの国は、夏星が豊富で、作物がたくさん収穫できる。生産系施設を建設・発展するための価格が1MG軽減される。(最大2MGまで軽減される。3回目以降は振り直すこと)。"], [4, "あなたの国は、しっかりとした規律と礼節があり、それを守る風潮がある。公共系施設を建設・発展するための価格が1MG軽減される(最大2MGまで軽減される。3回目以降は振り直すこと)。"], [5, "あなたの国は、芸術を奨励し、文化的な国民性を誇る。娯楽系施設を建設・発展するための価格が1MG軽減される(最大2MGまで軽減される。3回目以降は振り直すこと)。"], [6, "あなたの国は、物を大切にし、質素な生活を心がける気風を持つ。保管系施設を建設・発展するための価格が1MG軽減される(最大2MGまで軽減される。3回目以降は振り直すこと)。"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_national_style_decide_table$114.$$arity = 1); - - Opal.def(self, '$mk_resource_decide_table', $MeikyuKingdomBasic_mk_resource_decide_table$115 = function $$mk_resource_decide_table(num) { - var self = this, table = nil; - - - table = [[1, "あなたの国は、過去に善政がしかれ、非常に安定している。セッション開始時の《民の声》の値が1点上昇する(最大3点まで上昇する。4回目以降は振り直すこと)。"], [2, "あなたの国は、天然の要害に囲まれており、外敵に襲われにくい。《民》が(2D6)人増加する。"], [3, "あなたの国には、名工がつくった武器がある。ランダムに選んだ武具アイテム1個を獲得する。その武具アイテムはレベル1として扱う。"], [4, "あなたの国には、先頃友誼を誓い合った同盟国がある。王国シートの周辺階域から、ランダムに未知の土地1つを選ぶ。その土地に、王国を1つ設定すること。この国は【特産物】を持つ。「相場表」を使って、【特産物】の素材をランダムに決定すること。この国との関係は「同盟」となる。"], [5, "あなたの国で先頃、前王の隠し財産が発見された。《予算》を(1D6) MG獲得する。"], [6, "あなたの国には、隠し扉があった。「自国の地理」を決定したあと、追加で通路を2本引くことができる。通路でつながっている部屋は領土として扱う。"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_resource_decide_table$115.$$arity = 1); - - Opal.def(self, '$mk_facility_decide_table', $MeikyuKingdomBasic_mk_facility_decide_table$116 = function $$mk_facility_decide_table(num) { - var self = this, table = nil; - - - table = [[1, "あなたの国は、その地方を代々統治する伝統ある王国だ。宮廷系施設の中からランダムに1種を選ぶ。自国にその施設を1件建設する。"], [2, "あなたの国は、交易路の周囲にあり、多くの人々が流入する。居住系施設の中からランダムに1種を選ぶ。自国にその施設を1件建設する。"], [3, "あなたの国は、職人気質のものが多く、物作りがさかんだ。生産系施設の中からランダムに1種を選ぶ。自国にその施設を1件建設する。"], [4, "あなたの国は民を第一に考え、福祉に力を入れている。公共系施設の中からランダムに1種を選ぶ。自国にその施設を1件建設する。"], [5, "あなたの国は、歓楽国家として知られ、他国からの客もよく出入りしている。娯楽系施設の中からランダムに1種を選ぶ。自国にその施設を1件建設する。"], [6, "あなたの国は、辺境に位置する王国だ。周辺には怪物も少ない。保管系施設の中からランダムに1種を選ぶ。自国にその施設を1件建設する。"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_facility_decide_table$116.$$arity = 1); - - Opal.def(self, '$mk_human_resources_decide_table', $MeikyuKingdomBasic_mk_human_resources_decide_table$117 = function $$mk_human_resources_decide_table(num) { - var self = this, table = nil; - - - table = [[1, "あなたの国には、高い見識を持つ知識人がいる。「才覚系生まれ表」でランダムにジョブ1種を選ぶ。そのジョブの逸材を1人獲得する。逸材の名前を決定すること。"], [2, "あなたの国には、皆を魅了する好人物がいる。「魅了系生まれ表」でランダムにジョブ1種を選ぶ。そのジョブの逸材を1人獲得する。逸材の名前を決定すること。"], [3, "あなたの国には、巧みな技術を持つ専門家がいる。「探索系生まれ表」でランダムにジョブ1種を選ぶ。そのジョブの逸材を1人獲得する。逸材の名前を決定すること。"], [4, "あなたの国には、見事な腕前の戦士がいる。「武勇系生まれ表」でランダムにジョブ1種を選ぶ。そのジョブの逸材を1人獲得する。逸材の名前を決定すること。"], [5, "あなたの国は、怪物と共存している? (1D6)を振ること。1なら【小鬼】、2なら【ウマトカゲ】、3なら【ドワーフ】、4なら【エルフ】、5なら【キンギョ】、6なら【ごんぎつね】の《モンスターの民》を(1D6)人獲得する。"], [6, "あなたの国は、ここしばらく怪物や敵国の襲撃もなく、平和な日々が続いていた。《民》が(2D6)人増加する。"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_human_resources_decide_table$117.$$arity = 1); - - Opal.def(self, '$mk_blood_decide_table', $MeikyuKingdomBasic_mk_blood_decide_table$118 = function $$mk_blood_decide_table(num) { - var self = this, table = nil; - - - table = [[1, "あなたの国は、鬼族の蹂躙を受けた歴史を持ち、混血が進んでいる。その国のキャラクターは新たにスキルを修得するとき、鬼族カテゴリの自分のレベル以下のモンスターが修得しているモンスタースキルの中から、修得するスキルを選ぶことができるようになる。"], [2, "あなたの国は、古代に迷宮から姿を消した妖精女王の末裔といわれている。その国のキャラクターは新たにスキルを修得するとき、妖精カテゴリの自分のレベル以下のモンスターが修得しているモンスタースキルの中から、修得するスキルを選ぶことができるようになる。"], [3, "あなたの国は、偉大なる古龍が迷宮と化した場所であり、その尊い血を引いているといわれる。その国のキャラクターは新たにスキルを修得するとき、魔獣カテゴリの自分のレベル以下のモンスターが修得しているモンスタースキルの中から、修得するスキルを選ぶことができるようになる。"], [4, "あなたの国は、魔階からやってきた魔王の子供たちといわれている。その国のキャラクターは新たにスキルを修得するとき、異形カテゴリの自分のレベル以下のモンスターが修得しているモンスタースキルの中から、修得するスキルを選ぶことができるようになる。"], [5, "あなたの国は、死霊術師によって死者の王国に変えられた悲劇的な過去を持つ。その国のキャラクターは新たにスキルを修得するとき、死霊カテゴリの自分のレベル以下のモンスターが修得しているモンスタースキルの中から、修得するスキルを選ぶことができるようになる。"], [6, "あなたの国は、古代の錬金術師たちによって造られた人造生命が多数使役されている。その国のキャラクターは新たにスキルを修得するとき、呪物カテゴリの自分のレベル以下のモンスターが修得しているモンスタースキルの中から、修得するスキルを選ぶことができるようになる。"]]; - return self.$get_table_by_number(num, table); - }, $MeikyuKingdomBasic_mk_blood_decide_table$118.$$arity = 1); - return Opal.const_set($nesting[0], 'TABLES', $hash2(["RT", "SE", "IG", "BDT", "TBO", "CBO", "SBO", "VBO", "FET", "HET", "IEQ", "SDT", "BUS", "SHS", "ASS", "SUS", "SCS", "LAS", "NES", "COS", "ENS", "TOS", "EBT", "ARN", "WEN", "NEN", "CEN", "SEN", "OEN"], {"RT": $$($nesting, 'Table').$new("視察表", "2D6", ["神託が下る。苦難がPCを襲うが、それは救いのための試練である。このセッションの間、PCが10点以上のダメージをモンスターから受けるたび《民の声》+1。", "長老が迷宮の昔話をしてくれた。この表を使用したPCが判定で失敗したとき、その判定のサイコロを振り直すことができる。この効果は、このセッションの間に1回だけ使用できる。", "民は怪物の脅威に怯えている。この表を使用したPCがモンスターの《HP》を0点にすると、《民の声》+2。この効果は、このセッションの間に1回だけ使用できる。", "日用品が不足しているという不満を持つ民がいるようだ。このセッションの間、自国に「革」を5個輸送するたび《民の声》+1。", "民たちは王国の守りが薄いのではという不安を抱えていた。このセッションの間、自国に「鉄」を5個輸送するたび《民の声》+1。", "主婦たちが食糧不足に対する不安を訴えてきた。このセッションの間、自国に「肉」を5個輸送するたび《民の声》+1。", "民たちは新しい施設の建設を望んでいる。このセッションの間、自国に「木」を5個輸送するたび《民の声》+1。", "武器の備えが乏しいのではないかという不安があるようだ。このセッションの間、自国に「牙」を5個輸送するたび《民の声》+1。", "配下にした若者が熱心に未来を語る。この表を使用したPCは《配下》を1人消費して、《特殊配下》を1人増やす。その《特殊配下》に名前をつけ、「生まれ表」でなりたいジョブを決定すること。なりたいジョブに対応した能力値(その《特殊配下》がなりたいジョブの能力値ボーナス欄に書いてある能力値)を使った判定で、このセッションの間に自分が絶対成功すると、その《特殊配下》は、そのジョブの逸材になる。", "王国は活気に満ちている。この表を使用したPCは《気力》+1、もう一度王国フェイズに行動することができる。", "民たちはワクワクするような冒険譚を求めている! このセッションのシナリオの目的を達成していたら、終了フェイズの円卓会議の開始時に、(1D6)MGが手に入る。"]), "SE": $$($nesting, 'Table').$new("特殊遭遇表", "1D6", ["宙を舞う【グレムリン】が、宮廷の方を物欲しそうに眺めている。宮廷の中で、素材欄に「機械」が含まれているアイテムを持っているPC全員は、[才覚/7+装備している素材欄に「機械」が含まれるアイテムの数]の判定を行う。失敗したPCは、そのアイテムをすべて破壊し、[装備している素材欄に「機械」が含まれるアイテムの数]D6点のダメージを受ける。", "迷宮の壁や床の中に隠れた【群狼】が、キミたちを待ち伏せていた! 【狼牙】にさらされた宮廷全員は、[探索/5+宮廷の人数]の判定を行う。失敗したPCは、自分の《HP》が(1D6)点になる。", "部屋を埋め尽くすほど大勢の【小鬼】の群れに遭遇する。【小鬼】たちは瞳を赤くし、我を忘れて襲いかかってくる。宮廷全員は[武勇/5+宮廷の人数]の判定を行う。成功したキャラクターは、「牙」の素材を(1D6)個獲得する。失敗したキャラクターは、[(1D6)+宮廷の平均レベル]点のダメージを受ける。", "【鬼婆】の奴隷商人に出会う。鎖につながれた無数の奴隷が、恨めしそうにこちらを見ている。宮廷の代表は、[魅力/7+宮廷の人数]の判定を行う。成功すれば、【鬼婆】から奴隷を購入することができる。《予算》を1MG消費するたびに、(1D6)人の《民》を獲得できる。その場で自由に宮廷の《配下》として編成すること。判定に失敗すると、【鬼婆】は奴隷を差し向け、襲いかかってくる。宮廷全員は[武勇/9]の判定を行う。失敗したPCは[(1D6)+宮廷の平均レベル]点のダメージを受けた上、《配下》-(1D6)。", "年若い娘が1人倒れている。宮廷の中で誰か彼女を助ける者がいるなら、(1D6)を振ること。その目が奇数なら、彼女は有能な逸材だった。彼女はお礼を言い、王国に仕えさせてくれという。「生まれ表」でランダムに選んだジョブの逸材になる。偶数なら、彼女は【メデューサ】だった。【石化の視線】が襲いかかる。彼女を助けようとした者は[才覚/7+宮廷の人数]、残りのPCは[才覚/5+宮廷の人数]の判定を行う。失敗した者は、(1D6)点のダメージを受け、「呪い3」の変調を受ける。この判定に宮廷全員が失敗すると宮廷は全滅する。", "災厄教の巡礼者の一団に出会う。彼らは、迷宮災厄こそおごり高ぶった人類への罰であり、悔い改めよとその教えを説いた。《配下》を1人以上連れているキャラクターは、[魅力/自分の《配下》の数+5]の判定を行う。失敗したPC1人につき、《民の声》-1。"]), "IG": $$($nesting, 'Table').$new("情報収集表", "2D6", ["調査隊は、伝説の財宝の噂を聞きつける。《配下》を(1D6)人消費すると、迷宮マップの中からランダムに部屋を1つ目標に選ぶことができる。冒険フェイズに目標の捜索に成功すると、ランダムに選んだレアアイテム1個を獲得する。", "素材のある部屋を見つける。迷宮マップの中からランダムに部屋を1つ目標に選び、好きな素材を1種類選ぶ。冒険フェイズに目標の捜索に成功すると、その素材を[(1D6)+宮廷の平均レベル]個獲得する。", "噂に聞いたことのある怪物を発見する。迷宮マップの中からランダムに部屋を1つ目標に選ぶ。その部屋に、レベルが[PCの平均レベル+5]以下の好きなモンスターを1体、中立的なモンスターとして配置することができる。", "調査隊は、怪物にまつわる情報を入手した! 迷宮マップの中から好きな部屋を2つ目標に選ぶ。目標の脅威情報をGMに教えてもらう。", "危険な迷宮を調査隊は進む。《配下》を1人消費すると、迷宮マップの中から好きな部屋を1つ目標に選ぶことができる。目標の脅威情報と通路情報をGMに教えてもらう。目標から他の部屋に通路がつながっていない場合、PCは行動済みにならず、もう一度、指揮判定を行うことができる。", "入り口にたどりつく。迷宮マップの中から【入り口】のある部屋1つをGMに教えてもらい、その部屋を目標に選ぶ。目標の脅威情報をGMに教えてもらう。その後、《配下》を消費することができる。《配下》を(1D6)人消費すると、PCは行動済みにならず、もう一度、指揮判定を行うことができる。", "調査隊は不慮の事故に巻き込まれる。《配下》を1人消費すると、迷宮マップの中から好きな部屋を1つ目標に選ぶことができる。目標の脅威情報と通路情報をGMに教えてもらう。", "調査隊は無事、迷宮にたどりつく。迷宮マップの中から好きな部屋を1つ目標に選ぶ。目標の脅威情報と通路情報をGMに教えてもらう。", "難民のいる部屋を発見する。迷宮マップの中からランダムに部屋を1つ目標に選ぶ。冒険フェイズに目標の捜索に成功すると、宮廷の1人は《配下》を(1D6)人獲得する。", "調査隊は隠し財産がある部屋に接近した! 迷宮マップの中からランダムに部屋を1つ目標に選ぶ。冒険フェイズに目標の捜索に成功すると(1D6)MGを獲得する。", "調査隊の素晴らしい活躍! 迷宮マップの中から好きな部屋を1つ目標に選ぶ。目標の脅威情報と通路情報をGMに教えてもらう。さらに、「情報収集表」をもう1回使用できる。"]), "BDT": $$($nesting, 'Table').$new("生まれ決定表", "1D6", ["才覚系生まれ表で決定", "魅力系生まれ表で決定", "探索系生まれ表で決定", "武勇系生まれ表で決定", "好きな生まれ表で決定", "好きな生まれ表で決定"]), "TBO": $$($nesting, 'Table').$new("才覚系生まれ表", "1D6", ["魔導師", "博士", "医者", "宦官", "商人", "地図師"]), "CBO": $$($nesting, 'Table').$new("魅力系生まれ表", "1D6", ["星術師", "召喚師", "貴族", "亭主", "寿ぎ屋", "語り部"]), "SBO": $$($nesting, 'Table').$new("探索系生まれ表", "1D6", ["迷宮職人", "料理人", "働き者", "狩人", "盗賊", "鉱工"]), "VBO": $$($nesting, 'Table').$new("武勇系生まれ表", "1D6", ["武人", "処刑人", "衛視", "冒険者", "怠け者", "番人"]), "FET": $$($nesting, 'Table').$new("好意表", "1D6", ["忠誠", "忠誠", "友情", "友情", "愛情", "愛情"]), "HET": $$($nesting, 'Table').$new("敵意表", "1D6", ["怒り", "怒り", "不信", "不信", "侮蔑", "侮蔑"]), "IEQ": $$($nesting, 'Table').$new("初期装備表", "2D6", ["鉄砲", "爆弾", "お守り", "フルコース", "星の欠片", "お弁当", "ポーション", "お酒", "乗騎", "衣装", "魔導書"]), "SDT": $$($nesting, 'Table').$new("スキル決定表", "1D6", ["基本スキル表で決定", "基本スキル表で決定", "基本スキル表で決定", "上級スキル表で決定", "上級スキル表で決定", "上級スキル表で決定"]), "BUS": $$($nesting, 'Table').$new("基本肉弾スキル表", "1D6", ["投げる", "鉄腕", "かばう", "突撃", "乱舞", "二刀流"]), "SHS": $$($nesting, 'Table').$new("基本射撃スキル表", "1D6", ["狙う", "連射", "魔弾", "援護射撃", "必殺", "零距離射撃"]), "ASS": $$($nesting, 'Table').$new("基本星術スキル表", "1D6", ["刻騙し", "流れ星", "星占い", "星剣", "星界", "星戦"]), "SUS": $$($nesting, 'Table').$new("基本召喚スキル表", "1D6", ["宅配便", "大転移", "送還", "転送", "魔物使い", "憑依"]), "SCS": $$($nesting, 'Table').$new("基本科学スキル表", "1D6", ["設計", "分析", "マルチタスク", "錬成", "抗魔式", "理力の一撃"]), "LAS": $$($nesting, 'Table').$new("基本迷宮スキル表", "1D6", ["罠師", "すりぬけ", "足止め", "軽業", "地裂", "隠形"]), "NES": $$($nesting, 'Table').$new("基本交渉スキル表", "1D6", ["スカウト", "人脈", "時間稼ぎ", "命乞い", "右腕", "仲間割れ"]), "COS": $$($nesting, 'Table').$new("基本便利スキル表", "1D6", ["合体攻撃", "目覚めのキス", "不屈", "電撃作戦", "デート", "連携攻撃"]), "ENS": $$($nesting, 'Table').$new("基本芸能スキル表", "1D6", ["宴", "軍楽", "武楽", "呪歌", "音霊", "ナルシスト"]), "TOS": $$($nesting, 'Table').$new("基本道具スキル表", "1D6", ["大かばん", "お買い物", "修理", "プレゼント", "武器習熟", "渾身の力"]), "EBT": $$($nesting, 'Table').$new("空振り休憩表", "2D6", ["「おつとめ、ご苦労様です」同行する民たちが感謝の言葉をかける。《民の声》+1。", "「おい、サボるな」と仲間から怒られた。いやいや、こっちは今までマジメにやってましたよ。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《敵意》+1。", "大量大量! 色々な素材が見つかる。肉、牙、鉄、魔素、機械の素材(キャラクターシートの上の段の素材)を1個ずつ獲得する。", "そこはもう、使い魔が探索してくれていたようだ。サンキュー相棒! この捜索の判定に【使い魔】を利用していれば、行動済みにならず、さらにもう1回行動を行うことができる。", "危険なトラップを見つけたが、何とか無力化できた。任務完了。自分の《気力》+1。", "何も見つからなかったか、と思っていたら「いつも、ありがとう」と宮廷の仲間から声をかけられた。まぁ、何もない方がいいか。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《好意》+1", "「さすが! 素晴らしいお手並みだ」鮮やかな捜索に、仲間の見る目が変わる。宮廷の中から好きなキャラクター1人を選ぶ。そのキャラクターの自分に対する《好意》+1。", "よしよし、これはいいものが見つかった。好きな1種類の素材を(1D6)個獲得する。この捜索の判定に【使い魔】を使用していれば、獲得数が(1D6)個上昇する。", "大量大量! 色々な素材が見つかる。衣料、木、火薬、情報、革の素材(キャラクターシートの上の段の素材)を1個ずつ獲得する。", "うわ! 罠だ。余計なものまで見つけてしまった。宮廷全員は(1D6)点のダメージを受ける。", "「へぇ、こんなヤツだったのか」仲間の意外な一面を見つける。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《感情値》を反転させ、属性を好きなものに変更できる。"]), "ARN": $$($nesting, 'Table').$new("人工部屋特殊遭遇表", "1D6", ["他の王国のランドメイカーらしき一行が現れる。彼らは食事が尽きているらしく、アイテムの交換を持ちかけてきた。話を聞くなら、1クォーターが経過し、食事アイテム1個と交換で【ポーション】か【特効薬】1個を獲得できる。話をきかないなら、彼らは食事を無理矢理奪おうとしてくる。宮廷の代表は[魅力/宮廷の人数+5]の判定を行う。失敗すると、食事アイテムを持っているPCは(1D6)点のダメージを受け、持っている食事アイテムをすべて消費する。", "数人の【人間の屑】が物欲しそうな顔つきでこちらを見ながら、ひそひそと話しあっている。宮廷が、価格が3以上のコモンアイテムを[宮廷の人数の半分]個のアイテムを消費すると、【人間の屑】たちは卑屈な笑みを浮かべながら、この部屋を去っていく。消費しないなら、宮廷全員は[探索/宮廷の人数+5]の判定を行う。失敗した者は、ランダムにアイテムスロット1つを選び、そのスロットに装備・収納されているアイテムをすべて破壊する。", "ラストエグザイルという修行の旅をしている【ラストサムライ】の一団に出会う。PC1人が素材欄に「鉄」を含むアイテム1個を消費すると、彼らは喜んで旅の噂話を教えてくれる。1クォーターが経過し、宮廷の代表は「情報」の素材を(1D6)個獲得する。各PCは、望むなら食事アイテムを1個ずつ使用できる。アイテムを消費しない場合、彼らは襲いかかってくる。宮廷全員は[武勇/宮廷の人数+5]の判定を行う。失敗した者は、ランダムにアイテムスロット1つを選び、そのスロットに装備・収納されているアイテムをすべて破壊し、(1D6)+1点のダメージを受ける。", "部屋の片隅に宝箱を見つける。宝箱を開けてみるなら(1D6)を振ること。1なら【宝石】1個を獲得する。2ならランダムに選んだ1レベルのコモンアイテム1個を獲得する。3ならランダムに選んだレア一般アイテムを1個獲得する。4なら【箱入り娘】に魅了されて、ランダムに選んだ自分以外のPC1体に(2D6)点のダメージを与える。5なら【匣男】に抱きつかれ、そのターンの間「散漫1」の変調を受け、《HP》の最大値-3。6なら【生き金貨】がブレスを吐いてきて、宮廷全員は4点のダメージを受ける。", "宮廷たちの背後から、迷宮の壁に描かれた絵がゆっくりと襲いかかってくる。【逆壁】だ! 宮廷の代表は[才覚/宮廷の人数+7]の判定を行う。成功したら、宮廷は【逆壁】の不意打ちに気づいて、返り討ちにする。失敗したら、宮廷全員は(1D6)点のダメージを受ける。", "【ウマトカゲ】に乗ったメトロ汗国の斥候たちに出会う。彼らは奴隷を集めに来たようだ。宮廷全員は[武勇/宮廷の人数+5]の判定を行う。失敗した者は《配下》-(1D6)。"]), "WEN": $$($nesting, 'Table').$new("水域部屋特殊遭遇表", "1D6", ["【エルフ】の集団が現れた。【エルフ】たちは、抜け目なく宮廷の様子をうかがっている。宮廷の代表は、[才覚/13]の判定を行う(「言語」の選択ルールを適用して、深人語を修得していたら自動的に成功する)。成功すると、彼らがPCたちの王国を襲撃しようとしていることが分かる。宮廷全員は[武勇/13-宮廷の人数]の判定を行う。成否にかかわらず、【エルフ】たちの企みは止めることができるが、失敗した者は(1D6)+1点のダメージを受ける。[才覚]の判定に失敗すると彼らの狙いに気づくことができない。終了フェイズの「王国変動」のタイミングで、追加で1回「王国変動表」の4番の効果が発生する。", "突如現れた【マッハペンギン】に向かって、水中から【鉄砲魚】が砲撃を行う。このままでは、天使と深人の争いに巻き込まれてしまいそうだ。どちらかの加勢をするなら、宮廷全員は[好きな能力値/宮廷の人数+7]の判定を行う。成功したPCが宮廷の人数の半分以上いると、加勢した側が勝利する。天使側に加勢したならPC全員はランダムに回復アイテムを1個ずつ、深人側に加勢したならPC全員はランダムに武具アイテムを1個ずつ獲得する。成功したPCが宮廷の人数の半分未満だと、PC全員は(2D6)点のダメージを受ける。", "水域の近くから「モウレン、ヤッサ、イナガ貸セエ」という声が近づいてくる。【丹幽霊】だ。宮廷の誰かが【鍋】を1個消費すると、不思議そうな顔をしてそれを持っていき、彼らは水域の向こう側へと消えていく。そうでなければ、宮廷が持っている乗物アイテムがすべて消費される。", "【河ドワーフ】が水路を伸ばす工事を行っている。このままだと、この部屋は完全に水没してしまうかもしれない。止めたほうがいいのだろうか? 止めるなら、宮廷の代表は[魅力/宮廷の人数+7]の判定を行う。成功すると、快く【河ドワーフ】たちは水路を伸ばす方向を変えてくれる。失敗すると、【河ドワーフ】たちに愉快な罵倒を浴びせられ、宮廷全員の《気力》-1、《民の声》-1。止められないなら、その部屋に【水槽】のトラップが配置される。", "「ヨーホー! 金目のものをよこしやがれ!」【階賊】の集団に襲われる! 宮廷全員は[武勇/13-宮廷の人数]の判定を行う。失敗した者は、ランダムに自分のアイテムスロット1つを選び、そのスロットに装備・収納されたものをすべて消費し、(1D6)点のダメージを受ける。", "水の中から突如触手が現れた! 宮廷の1人にからみつくと、水の中に引きずり込んでしまう。宮廷の中からランダムに1人を選ぶ。選ばれたPCは[探索/9+装備・収納している、素材欄に「鉄」が含まれるアイテムの数]の判定を行う。失敗すると、《HP》を([判定の難易度-判定の達成値]D6)点減少する。また、そのPCが装備・収納している、素材欄に「火薬」が含まれるアイテムを破壊する。"]), "NEN": $$($nesting, 'Table').$new("自然部屋特殊遭遇表", "1D6", ["大きな地響きが聞こえる。この森を構成している大勢の【トレント】たちが別の部屋へと移動しているようだ。ほかの生き物たちも、木々の行進に続いている。森の大移動だ。宮廷の代表は[探索/宮廷の人数+7]の判定を行う。失敗すると、宮廷は【トレント】たちの大行進に出くわしてしまう。宮廷全員は《HP》の現在値を(1D6)点にして、《配下》-(1D6)。", "天井近くに【アラクネ】の巣を見つける。近くに【蜘蛛の王】の領域があるのかもしれない。駆除しておくべきか……。駆除に挑戦するなら、1クォーターが経過し、PC全員は[武勇/13-宮廷の人数]の判定を行う。判定の成否に関わらず巣を除去することができるが、失敗した者は、アラクネの反撃を受け、(2D6)-2点のダメージを受ける。放っておく場合、終了フェイズの王国変動のタイミングで(1D6)を振る。その出目が、[「周辺階域」欄のそのマップがある土地から自国がある土地までのマス数]以下だった場合、【蜘蛛の王】の襲撃により、自国に残っていた《民》が(5D6)人減少する。", "やぶの中から突如現れた巨大な怪物を目撃する。【睨み蜥蜴】だ! PC全員は[探索/9]の判定を行う。失敗した者は《HP》を1点にする。", "【緑の親指】が森の木々を手入れしている。自分が管理する森にやってきたPCたちを警戒しているようだ。宮廷の代表は[才覚/宮廷の人数+7]の判定を行う。成功すると、日常アイテム1個と交換で「木」の素材を(1D6)個獲得できる。失敗した者は(1D6)+6点のダメージを受ける。", "森の奥から何かを叩くポコポコという音が響いてくる。のぞいてみると、【豆狸】たちが、腹鼓を叩きながら、楽しげに唄っている。PC全員は[魅力/宮廷の人数+5] の判定を行う。成功したPCが宮廷の人数の半分以上いると、楽しい時間を過ごす。各PCは《気力》+1、望むなら食事のアイテムを1個ずつ使用できる。成功した PCが宮廷の人数の半分未満だと、気がつくと辺りには誰もいなくなっている。2クォーターが経過し、各PCは、ランダムにアイテムスロット1つを選び、そのスロットに装備・収納されたものをすべて消費する。", "その部屋の奥には、茸の森が広がっていた。その中心にたたずむ巨大な【オバケ茸】を【茸人】たちが囲んで、何か祈りを捧げている。……ここなら、もしかすると【百年茸】があるかも。【百年茸】を探すなら、宮廷の中から望む者は[探索/9+この判定に挑戦した回数(初回は1回と数える)]の判定を行う。成功した者は、レア一般アイテムの 【百年茸】を1個獲得する。誰か1人でも失敗すると、【茸人】に見つかり、PC全員は「毒2」の変調を受ける。【百年茸】を探さないなら、安全にその場を離れ、何も起こらない。"]), "CEN": $$($nesting, 'Table').$new("洞窟部屋特殊遭遇表", "1D6", ["突如、天井から魔法の掘削機械が飛び出してくる。【ドワーフ】の直線主義者の一団だ。このままだと押しつぶされてしまう! PC全員は[探索/宮廷の人数+5]の判定を行う。失敗した者は(1D6)点のダメージを受け、《配下》-(1D6)。その後GMは、その部屋に隣接するシナリオ上、遭遇が設定されていない部屋があれば、そこに向けて通路1本を引く。", "眠っている【洞窟熊】を見つける。攻撃するか? それとも音を立てないようにやり過ごすか? 攻撃するなら、PC全員は[武勇/7]の判定を行う。判定の成否にかかわらず【洞窟熊】を倒すことはできるが、失敗した者は《HP》を1点にする。やり過ごすなら、PC全員は[探索/宮廷の人数+5]の判定を行う。失敗した者が宮廷の人数の半分以上いると逃げ切れず、PC全員は(1D6)点のダメージを受ける。", "【まじない師】に率いられた【穴人】に取り囲まれる。【まじない師】は、謎かけをしてくる。宮廷の代表は[才覚/12]の判定を行う。成功すると、彼らはこの部屋を立ち去る。失敗すると【穴人】に襲いかかられ、PC全員は(2D6)点のダメージを受ける。", "洞窟の奥から【大蝙蝠】の群れが飛んでくる。PC全員は[探索/宮廷の人数+7]の判定を行う。失敗した者は「毒3」の変調を受ける。", "【ドラゴン】が現れた! 流暢な「ひとつの言葉」を使って、その巨大な生き物は「うるさくて眠れない」と苦情を言ってきた。宮廷の代表は[魅力/宮廷の人数+7]の判定を行う。成功すると丁重にお帰りいただくことができる。失敗すると、宮廷全員は15点のダメージを受ける。", "空気がじめじめとしてくる。【黴姫】の領域が近いようだ。下手をすると食事を駄目にしてしまうかもしれない。PC全員は[才覚/宮廷の人数+5]の判定を行う。失敗した者は自分の装備・収納している食事アイテムをすべて破壊する。"]), "SEN": $$($nesting, 'Table').$new("天空部屋特殊遭遇表", "1D6", ["【取立人】が現れ、慇懃に挨拶すると、PCたちの栄光を褒め称える。そして、その栄光は天使の導きによるものだから、と対価を要求してくる。対価を支払うなら《予算》を[PCたちの平均レベル]MG消費するか、王国に残った《民》を[PCたちの平均レベル]人消費する。いずれかを消費すると【取立人】は満足そうにうなずき、未来に起こる出来事をこっそり耳打ちする。宮廷は、そのセッション中、振ったサイコロを1度だけ振り直すことができるようになる。対価をはねのけると、PC全員は「呪い3」の変調を受ける。", "【羽根兜の乙女】が立ち塞がり、「勇者よ! きさまの魂をもらい受ける!」と決闘を挑んでくる。決闘を受けるなら、宮廷の代表は[武勇/14]の判定を行う。成功すると、【羽根兜の乙女】は、「次は絶対勝つ!」と、泣きながら逃げていく。判定に成功したPCが装備可能なら【愛】を1個獲得する。失敗した者は(1D6)+8点のダメージを受け、【羽根兜の乙女】から「腰抜けが。とんだ見込み違いだ」と罵倒される。決闘を拒否するなら、【羽根兜の乙女】の怒りを買い、PC全員は(2D6)点のダメージを受ける。", "一天にわかにかき曇る。【雲神】だ! (1D6)を振る。1なら雨が振ってきて、PC全員は素材欄に「火薬」が含まれるアイテムを破壊する。2なら雷が落ちてきて、素材欄に「鉄」が含まれるアイテムを装備・収納しているPCは(3D6)点のダメージを受ける。3なら霧がたちこめ、PC全員は、その部屋で行う判定の達成値が2点減少する。4なら突風が吹き、PC全員は《配下》を[(1D6)×1/2]人減少する。5か6なら心地良い風が吹き、PC全員は《気力》+2。", "腹を空かせた【鷲獅子】が、空中から襲いかかる! PC全員は[武勇/宮廷の人数+7]の判定を行う。【乗騎】を装備・収納しているPCは難易度が2点上昇する。判定に失敗した者は(2D6)点のダメージを受ける。【乗騎】を装備・収納しているPCが判定に失敗した場合、その【乗騎】がすべて消費される。", "空に巨大な星が輝く。その星が不気味に笑った気がする。あれは【星首】だ。宮廷の中から、ランダムに2人のPCを選ぶ。そのPCが装備・収納している【星の欠片】をすべて破壊する。", "何か雪のようなものが降ってきたと思ったら、気分が悪くなってきた。上空を見あげると、【蝶の王】が羽ばたいている。狂気の鱗粉だ! PC全員は[魅力/9]の判定を行う。失敗した者は、「毒6」と「散漫1」と「憤怒」の変調を受ける。"]), "OEN": $$($nesting, 'Table').$new("異界部屋特殊遭遇表", "1D6", ["扉をあけて、ハグルマ風の衣装を着た人物が現れる。何やら話が通じない。もしかすると噂に名高い【稀人】というやつか? 《配下》たちが何かを期待しているのを感じる。宮廷の代表は[才覚/宮廷の人数+7]の判定を行う。成功すると、意思の疎通に成功する。【稀人】1体を《特殊配下》にできる。王国につれて帰ることができると《モンスターの民》になる。失敗すると、【稀人】は話が通じず途方にくれ、扉の向こうに帰っていく。《民の声》-1。", "【ケチャップリンス】と【メイクイーン】が激論を交わしている。どうやら、どちらが【マヨネーズキング】にふさわしいかについて語り合っているようだ。仲裁するなら、宮廷の代表は[才覚/宮廷の人数+7の判定を行う。成功すると美味しい食べ物を御馳走してくれる。PC全員は《HP》を(1D6)点回復し、《気力》+1。失敗するとPC全員は「肥満2」の変調を受ける。スルーするなら、PC全員は[探索/7]の判定を行う。誰か1人でも失敗するとPC全員は「肥満2」の変調を受ける。", "突然、その部屋が闇に包まれ、重力がなくなる。扉が開く音がして、そこから強い光がさしこんできた。【灰色の宇宙人】だ。【乗騎】、【使い魔】、【家畜】のいずれかを装備・収納しているPCは[魅力/宮廷の人数+7]の判定を行う。成功した者は【乗騎】、【使い魔】、【家畜】のうちいずれか1個と交換で【星の欠片】か【携帯電話】1個を獲得できる。判定に失敗した者は【乗騎】、【使い魔】、【家畜】のうちいずれか1個を消費する。", "扉を破って、無数の「死にぞこないの群れが現れた。ゾンビラッシュ! PC全員は[武勇/宮廷の人数+7]の判定を行う。失敗した者は、(1D6)点のダメージと「毒3」の変調を受ける。", "遠くの方から何かが転がってくる。ゴロゴロと音が大きくなり、気がつくと【悪意の骰子】が眼前に迫っていた! 宮廷全員は[探索/9]の判定を行う。失敗した者は「呪い4」の変調を受け、奇妙な姿に変えられる。", "暗闇の中に幾つかの星が輝く。あれは【星座獣】だ! PC全員は[魅力/9]の判定を行う。失敗した者は[そのPCが装備・収納している【星の欠片】の合計数+1]D6点のダメージを受ける。"])}).$freeze()); - })($nesting[0], $$($nesting, 'MeikyuKingdom'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/MetalHead.js b/src/assets/dicebot/MetalHead.js deleted file mode 100644 index 4f475fe8a..000000000 --- a/src/assets/dicebot/MetalHead.js +++ /dev/null @@ -1,599 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/range_table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$new', '$alias_method', '$freeze', '$lambda', '$name', '$sum', '$content', '$attr_reader', '$match', '$raise', '$to_i', '$[]', '$store', '$find', '$include?', '$range', '$roll', '$map', '$split', '$to_proc', '$fetch', '$formatted=', '$-', '$private', '$coerce_to_int_range', '$sort_by', '$min', '$assert_min_sum_is_covered', '$assert_max_sum_is_covered', '$assert_no_gap_or_overlap_in_ranges', '$===', '$is_a?', '$begin', '$end', '$class', '$first', '$*', '$last', '$each_cons', '$max', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RangeTable'); - - var $nesting = [self].concat($parent_nesting), $RangeTable$1, $RangeTable$2, $RangeTable_initialize$3, $RangeTable_fetch$4, $RangeTable_roll$6, $RangeTable_store$7, $RangeTable_coerce_to_int_range$11, $RangeTable_assert_min_sum_is_covered$12, $RangeTable_assert_max_sum_is_covered$13, $RangeTable_assert_no_gap_or_overlap_in_ranges$14; - - self.$$prototype.name = self.$$prototype.items = self.$$prototype.num_of_dice = self.$$prototype.num_of_sides = self.$$prototype.formatter = nil; - - Opal.const_set($nesting[0], 'RollResult', $send($$($nesting, 'Struct'), 'new', ["sum", "values", "content", "formatted"], ($RangeTable$1 = function(){var self = $RangeTable$1.$$s || this; - - return self.$alias_method("to_s", "formatted")}, $RangeTable$1.$$s = self, $RangeTable$1.$$arity = 0, $RangeTable$1))); - Opal.const_set($nesting[0], 'Item', $$($nesting, 'Struct').$new("range", "content")); - Opal.const_set($nesting[0], 'DICE_ROLL_METHOD_RE', /^(\d+)D(\d+)$/i.$freeze()); - Opal.const_set($nesting[0], 'DEFAULT_FORMATTER', $send(self, 'lambda', [], ($RangeTable$2 = function(table, result){var self = $RangeTable$2.$$s || this; - - - - if (table == null) { - table = nil; - }; - - if (result == null) { - result = nil; - }; - return "" + (table.$name()) + "(" + (result.$sum()) + ") > " + (result.$content());}, $RangeTable$2.$$s = self, $RangeTable$2.$$arity = 2, $RangeTable$2))); - self.$attr_reader("name"); - self.$attr_reader("num_of_dice"); - self.$attr_reader("num_of_sides"); - - Opal.def(self, '$initialize', $RangeTable_initialize$3 = function $$initialize(name, dice_roll_method, items) { - var $iter = $RangeTable_initialize$3.$$p, formatter = $iter || nil, $a, self = this, m = nil; - - if ($iter) $RangeTable_initialize$3.$$p = null; - - - if ($iter) $RangeTable_initialize$3.$$p = null;; - self.name = name.$freeze(); - self.formatter = ($truthy($a = formatter) ? $a : $$($nesting, 'DEFAULT_FORMATTER')); - m = $$($nesting, 'DICE_ROLL_METHOD_RE').$match(dice_roll_method); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + (self.name) + ": invalid dice roll method: " + (dice_roll_method)) - }; - self.num_of_dice = m['$[]'](1).$to_i(); - self.num_of_sides = m['$[]'](2).$to_i(); - return self.$store(items); - }, $RangeTable_initialize$3.$$arity = 3); - - Opal.def(self, '$fetch', $RangeTable_fetch$4 = function $$fetch(value) { - var $$5, self = this, item = nil; - - - item = $send(self.items, 'find', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$range()['$include?'](value);}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - if ($truthy(item)) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": value is out of range: " + (value)) - }; - return item; - }, $RangeTable_fetch$4.$$arity = 1); - - Opal.def(self, '$roll', $RangeTable_roll$6 = function $$roll(bcdice) { - var $a, $b, self = this, sum = nil, values_str = nil, values = nil, result = nil, $writer = nil; - - - $b = bcdice.$roll(self.num_of_dice, self.num_of_sides), $a = Opal.to_ary($b), (sum = ($a[0] == null ? nil : $a[0])), (values_str = ($a[1] == null ? nil : $a[1])), $b; - values = $send(values_str.$split(","), 'map', [], "to_i".$to_proc()); - result = $$($nesting, 'RollResult').$new(sum, values, self.$fetch(sum).$content()); - - $writer = [self.formatter['$[]'](self, result)]; - $send(result, 'formatted=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return result; - }, $RangeTable_roll$6.$$arity = 1); - self.$private(); - - Opal.def(self, '$store', $RangeTable_store$7 = function $$store(items) { - var $$8, $$9, $$10, self = this, items_with_range = nil, sorted_items = nil; - - - items_with_range = $send(items, 'map', [], ($$8 = function(r, c){var self = $$8.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (c == null) { - c = nil; - }; - return [self.$coerce_to_int_range(r), c];}, $$8.$$s = self, $$8.$$arity = 2, $$8)); - sorted_items = $send(items_with_range, 'sort_by', [], ($$9 = function(r, _){var self = $$9.$$s || this; - - - - if (r == null) { - r = nil; - }; - - if (_ == null) { - _ = nil; - }; - return r.$min();}, $$9.$$s = self, $$9.$$arity = 2, $$9)); - self.$assert_min_sum_is_covered(sorted_items); - self.$assert_max_sum_is_covered(sorted_items); - self.$assert_no_gap_or_overlap_in_ranges(sorted_items); - self.items = $send(sorted_items, 'map', [], ($$10 = function(range, content){var self = $$10.$$s || this; - - - - if (range == null) { - range = nil; - }; - - if (content == null) { - content = nil; - }; - return $$($nesting, 'Item').$new(range, content.$freeze()).$freeze();}, $$10.$$s = self, $$10.$$arity = 2, $$10)).$freeze(); - return self; - }, $RangeTable_store$7.$$arity = 1); - - Opal.def(self, '$coerce_to_int_range', $RangeTable_coerce_to_int_range$11 = function $$coerce_to_int_range(x) { - var $a, self = this, $case = nil; - - - $case = x; - if ($$($nesting, 'Integer')['$===']($case)) {return $$($nesting, 'Range').$new(x, x)} - else if ($$($nesting, 'Range')['$===']($case)) {if ($truthy(($truthy($a = x.$begin()['$is_a?']($$($nesting, 'Integer'))) ? x.$end()['$is_a?']($$($nesting, 'Integer')) : $a))) { - return x}}; - return self.$raise($$($nesting, 'TypeError'), "" + (self.name) + ": " + (x) + " (" + (x.$class()) + ") must be an Integer or a Range with Integers "); - }, $RangeTable_coerce_to_int_range$11.$$arity = 1); - - Opal.def(self, '$assert_min_sum_is_covered', $RangeTable_assert_min_sum_is_covered$12 = function $$assert_min_sum_is_covered(sorted_items) { - var self = this, min_sum = nil, range = nil; - - - min_sum = self.num_of_dice; - range = sorted_items.$first()['$[]'](0); - if ($truthy(range['$include?'](min_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": min value (" + (min_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_min_sum_is_covered$12.$$arity = 1); - - Opal.def(self, '$assert_max_sum_is_covered', $RangeTable_assert_max_sum_is_covered$13 = function $$assert_max_sum_is_covered(sorted_items) { - var self = this, max_sum = nil, range = nil; - - - max_sum = $rb_times(self.num_of_dice, self.num_of_sides); - range = sorted_items.$last()['$[]'](0); - if ($truthy(range['$include?'](max_sum))) { - } else { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": max value (" + (max_sum) + ") is not covered: " + (range)) - }; - return self; - }, $RangeTable_assert_max_sum_is_covered$13.$$arity = 1); - return (Opal.def(self, '$assert_no_gap_or_overlap_in_ranges', $RangeTable_assert_no_gap_or_overlap_in_ranges$14 = function $$assert_no_gap_or_overlap_in_ranges(sorted_items) { - var $$15, self = this; - - - $send(sorted_items, 'each_cons', [2], ($$15 = function(i1, i2){var self = $$15.$$s || this, r1 = nil, r2 = nil, max1 = nil, next_of_max1 = nil; - if (self.name == null) self.name = nil; - - - - if (i1 == null) { - i1 = nil; - }; - - if (i2 == null) { - i2 = nil; - }; - r1 = i1['$[]'](0); - r2 = i2['$[]'](0); - max1 = r1.$max(); - next_of_max1 = $rb_plus(max1, 1); - if ($truthy(r2['$include?'](max1))) { - self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range overlap: " + (r1) + " and " + (r2))}; - if ($truthy(r2['$include?'](next_of_max1))) { - return nil - } else { - return self.$raise($$($nesting, 'RangeError'), "" + (self.name) + ": Range gap: " + (r1) + " and " + (r2)) - };}, $$15.$$s = self, $$15.$$arity = 2, $$15)); - return self; - }, $RangeTable_assert_no_gap_or_overlap_in_ranges$14.$$arity = 1), nil) && 'assert_no_gap_or_overlap_in_ranges'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2, $range = Opal.range; - - Opal.add_stubs(['$require', '$setPrefixes', '$roll_tables', '$===', '$last_match', '$mh_crc_table', '$eval', '$new', '$to_sym', '$rollHit', '$gsub', '$!=', '$==', '$>=', '$<=', '$roll', '$getHitResult', '$getResult', '$%', '$debug', '$>', '$upcase', '$to_s', '$to_i', '$<', '$join', '$+', '$-', '$nil?', '$[]', '$each', '$push', '$lambda', '$name', '$sum', '$content', '$freeze', '$to_proc']); - - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/range_table"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'MetalHead'); - - var $nesting = [self].concat($parent_nesting), $MetalHead_rollDiceCommand$1, $MetalHead_changeText$2, $MetalHead_check_2D6$5, $MetalHead_rollHit$6, $MetalHead_check_1D100$7, $MetalHead_getHitResult$8, $MetalHead_getResult$9, $MetalHead_mh_crc_table$10, $MetalHead$13; - - self.$$prototype.fractionType = nil; - - Opal.const_set($nesting[0], 'ID', "MetalHead"); - Opal.const_set($nesting[0], 'NAME', "メタルヘッド"); - Opal.const_set($nesting[0], 'SORT_KEY', "めたるへつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・アビリティロール AR>=目標値\n" + "・スキルロール SR<=目標値(%)\n" + "・命中判定ロール HR<=目標値(%)\n" + "\n" + " 例)AR>=5\n" + " 例)SR<=(40+25)\n" + " 例)HR<=(50-10)\n" + "\n" + " これらのロールで成否、絶対成功/絶対失敗、クリティカル/アクシデントを自動判定します。\n" + "\n" + "・クリティカルチャート CC\n" + "・アクシデントチャート 射撃・投擲用:ACL 格闘用:ACS\n" + "・戦闘結果チャート CRCsn s=耐久レベル(SUV) n=数値\n" + "\n" + " 例)CRCA61 SUV=Aを対象とした数値61(62に変換される)の戦闘結果を参照する。\n" + " 例)CRCM98 対物で数値98の戦闘結果を参照する。\n"); - self.$setPrefixes(["AR", "SR", "HR<=.+", "CC", "ACT", "ACL", "ACS", "CRC[A-Z]\\d+"]); - - Opal.def(self, '$rollDiceCommand', $MetalHead_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, result = nil, $case = nil, suv = nil, num = nil, target = nil; - - - result = self.$roll_tables(command, $$($nesting, 'TABLES')); - if ($truthy(result)) { - return result}; - $case = command; - if (/^CRC(\w)(\d+)$/['$===']($case)) { - suv = $$($nesting, 'Regexp').$last_match(1); - num = $$($nesting, 'Regexp').$last_match(2); - return self.$mh_crc_table(suv, num);} - else if (/^HR<=(.+)/['$===']($case)) { - target = $$($nesting, 'ArithmeticEvaluator').$new().$eval($$($nesting, 'Regexp').$last_match(1), self.fractionType.$to_sym()); - return self.$rollHit(target);}; - return nil; - }, $MetalHead_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$changeText', $MetalHead_changeText$2 = function $$changeText(string) { - var $$3, $$4, self = this; - - - string = $send(string, 'gsub', [/^(S)?AR/i], ($$3 = function(){var self = $$3.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "2D6"}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - string = $send(string, 'gsub', [/^(S)?SR/i], ($$4 = function(){var self = $$4.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "1D100"}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - return string; - }, $MetalHead_changeText$2.$$arity = 1); - - Opal.def(self, '$check_2D6', $MetalHead_check_2D6$5 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var $a, self = this; - - - if ($truthy(($truthy($a = cmp_op['$!='](">=")) ? $a : target['$==']("?")))) { - return ""}; - if ($truthy($rb_ge(dice_total, 12))) { - return " > 絶対成功" - } else if ($truthy($rb_le(dice_total, 2))) { - return " > 絶対失敗" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $MetalHead_check_2D6$5.$$arity = 5); - - Opal.def(self, '$rollHit', $MetalHead_rollHit$6 = function $$rollHit(target) { - var $a, $b, self = this, total = nil, resultText = nil, text = nil; - - - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), $b; - resultText = self.$getHitResult(total, total, target); - text = "" + "(1D100<=" + (target) + ") > " + (total) + (resultText); - return text; - }, $MetalHead_rollHit$6.$$arity = 1); - - Opal.def(self, '$check_1D100', $MetalHead_check_1D100$7 = function $$check_1D100(total, dice_total, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return "" - }; - return self.$getResult(total, dice_total, target); - }, $MetalHead_check_1D100$7.$$arity = 4); - - Opal.def(self, '$getHitResult', $MetalHead_getHitResult$8 = function $$getHitResult(total_n, _dice_n, diff) { - var self = this, diceValue = nil, dice1 = nil; - - - diceValue = total_n['$%'](100); - dice1 = diceValue['$%'](10); - self.$debug("total_n", total_n); - if ($truthy($rb_gt(total_n, diff))) { - return " > 失敗"}; - if (dice1['$=='](1)) { - return " > 成功(クリティカル)"}; - if (dice1['$=='](0)) { - return " > 失敗(アクシデント)"}; - return " > 成功"; - }, $MetalHead_getHitResult$8.$$arity = 3); - - Opal.def(self, '$getResult', $MetalHead_getResult$9 = function $$getResult(total_n, dice_n, diff) { - var self = this; - - - if ($truthy($rb_le(dice_n, 5))) { - return " > 絶対成功"}; - if ($truthy($rb_ge(dice_n, 96))) { - return " > 絶対失敗"}; - if ($truthy($rb_le(total_n, diff))) { - return " > 成功"}; - return " > 失敗"; - }, $MetalHead_getResult$9.$$arity = 3); - - Opal.def(self, '$mh_crc_table', $MetalHead_mh_crc_table$10 = function $$mh_crc_table(suv, num) { - var $$11, self = this, header_parts = nil, separator = nil, numbuf = nil, num_d1 = nil, table_point = nil, table_damage = nil, damage_level = nil, result_parts = nil; - - - header_parts = ["戦闘結果チャート", num]; - separator = " > "; - suv = suv.$to_s().$upcase(); - numbuf = num.$to_i(); - if ($truthy($rb_lt(numbuf, 1))) { - return $rb_plus(header_parts, ["数値が不正です"]).$join(separator)}; - num_d1 = numbuf['$%'](10); - self.$debug("" + "num_d1[" + (num_d1) + "]"); - if (num_d1['$=='](1)) { - numbuf = $rb_plus(numbuf, 1)}; - if (num_d1['$=='](0)) { - numbuf = $rb_minus(numbuf, 1)}; - num_d1 = numbuf['$%'](10); - self.$debug("" + "num_d1[" + (num_d1) + "]"); - table_point = [nil, nil, "腕部", "腕部", "脚部", "脚部", "胴部", "胴部", "胴部", "頭部"]; - table_damage = $hash2(["S", "A", "B", "C", "D", "E", "F", "G", "M"], {"S": [$hash2(["N"], {"N": 2}), $hash2(["LW"], {"LW": 16}), $hash2(["MD"], {"MD": 46}), $hash2(["MW"], {"MW": 56}), $hash2(["HD"], {"HD": 76}), $hash2(["HW"], {"HW": 96}), $hash2(["MO"], {"MO": 106}), $hash2(["K"], {"K": 116})], "A": [$hash2(["LW"], {"LW": 2}), $hash2(["MW"], {"MW": 46}), $hash2(["HW"], {"HW": 76}), $hash2(["MO"], {"MO": 96}), $hash2(["K"], {"K": 116})], "B": [$hash2(["LW"], {"LW": 2}), $hash2(["MW"], {"MW": 36}), $hash2(["HW"], {"HW": 66}), $hash2(["MO"], {"MO": 96}), $hash2(["K"], {"K": 106})], "C": [$hash2(["LW"], {"LW": 2}), $hash2(["MW"], {"MW": 26}), $hash2(["HW"], {"HW": 66}), $hash2(["MO"], {"MO": 86}), $hash2(["K"], {"K": 106})], "D": [$hash2(["LW"], {"LW": 2}), $hash2(["MW"], {"MW": 26}), $hash2(["HW"], {"HW": 46}), $hash2(["MO"], {"MO": 76}), $hash2(["K"], {"K": 96})], "E": [$hash2(["LW"], {"LW": 2}), $hash2(["MW"], {"MW": 26}), $hash2(["HW"], {"HW": 39}), $hash2(["MO"], {"MO": 54}), $hash2(["K"], {"K": 76})], "F": [$hash2(["LW"], {"LW": 2}), $hash2(["MW"], {"MW": 16}), $hash2(["HW"], {"HW": 39}), $hash2(["MO"], {"MO": 54}), $hash2(["K"], {"K": 66})], "G": [$hash2(["LW"], {"LW": 2}), $hash2(["MW"], {"MW": 6}), $hash2(["HW"], {"HW": 16}), $hash2(["MO"], {"MO": 26}), $hash2(["K"], {"K": 39})], "M": [$hash2(["0"], {"0": 2}), $hash2(["1"], {"1": 22}), $hash2(["2"], {"2": 42}), $hash2(["3"], {"3": 62}), $hash2(["4"], {"4": 82}), $hash2(["5"], {"5": 92}), $hash2(["6"], {"6": 102}), $hash2(["8"], {"8": 112})]}); - if ($truthy(table_damage['$[]'](suv)['$nil?']())) { - return $rb_plus(header_parts, ["" + "耐久レベル(SUV)[" + (suv) + "]", "耐久レベル(SUV)の値が不正です"]).$join(separator)}; - damage_level = ""; - $send(table_damage['$[]'](suv), 'each', [], ($$11 = function(v){var self = $$11.$$s || this, $$12; - - - - if (v == null) { - v = nil; - }; - return $send(v, 'each', [], ($$12 = function(d, n){var self = $$12.$$s || this; - - - - if (d == null) { - d = nil; - }; - - if (n == null) { - n = nil; - }; - self.$debug("" + "suv[" + (suv) + "] " + (v) + " " + (d) + " " + (n)); - if ($truthy($rb_le(n, numbuf))) { - return (damage_level = d) - } else { - return nil - };}, $$12.$$s = self, $$12.$$arity = 2, $$12));}, $$11.$$s = self, $$11.$$arity = 1, $$11)); - result_parts = []; - if ($truthy(numbuf['$!='](num.$to_i()))) { - result_parts.$push(numbuf.$to_s())}; - if (suv['$==']("M")) { - result_parts.$push("耐物", "" + "HP[" + (damage_level) + "]") - } else { - result_parts.$push("" + "耐久レベル(SUV)[" + (suv) + "]", "" + "部位[" + (table_point['$[]'](num_d1)) + "] : 損傷種別[" + (damage_level) + "]") - }; - return $rb_plus(header_parts, result_parts).$join(separator); - }, $MetalHead_mh_crc_table$10.$$arity = 2); - Opal.const_set($nesting[0], 'TABLE_ROLL_RESULT_FORMATTER', $send(self, 'lambda', [], ($MetalHead$13 = function(table, result){var self = $MetalHead$13.$$s || this; - - - - if (table == null) { - table = nil; - }; - - if (result == null) { - result = nil; - }; - return [table.$name(), result.$sum(), result.$content()].$join(" > ");}, $MetalHead$13.$$s = self, $MetalHead$13.$$arity = 2, $MetalHead$13))); - return Opal.const_set($nesting[0], 'TABLES', $hash2(["CC", "ACL", "ACS"], {"CC": $send($$($nesting, 'RangeTable'), 'new', ["クリティカルチャート", "1D10", [[1, "相手は知覚系に多大なダメージを受けた。PERを1にして頭部にHWのダメージ、および心理チェック。"], [2, "相手の運動神経を断ち切った。DEXを1にして腕部にHWのダメージ、および心理チェック。さらに腕に持っていた武器などは落としてしまう。"], [3, "相手の移動手段は完全に奪われた。REFを1にして脚部にHWダメージと心理チェック。また、次回からのこちらの攻撃は必ず命中する。"], [$range(4, 5, false), "相手の急所に命中。激痛のため気絶した上、胴にHWダメージ。"], [6, "効果的な一撃。胴にHWダメージ。心理チェック。"], [7, "効果的な一撃。胴にMOダメージ。心理チェック。"], [$range(8, 10, false), "君の一撃は相手の中枢を完全に破壊した。即死である。"]]], $$($nesting, 'TABLE_ROLL_RESULT_FORMATTER').$to_proc()), "ACL": $send($$($nesting, 'RangeTable'), 'new', ["アクシデントチャート(射撃・投擲)", "1D10", [[$range(1, 7, false), "ささいなミス。特にペナルティーはない。"], [8, "不発、またはジャム。弾を取り出さねばならない物は次のターンは射撃できない。"], [9, "ささいな故障。可能なら次のターンから個別武器のスキルロールで修理を行える。"], [10, "武器の暴発、または爆発。頭部HWの心理効果ロール。さらに、その武器は破壊されPERとDEXのどちらか、または両方に計2ポイントのマイナスを与える。(遠隔操作の場合、射手への被害は無し)"]]], $$($nesting, 'TABLE_ROLL_RESULT_FORMATTER').$to_proc()), "ACS": $send($$($nesting, 'RangeTable'), 'new', ["アクシデントチャート(格闘)", "1D10", [[$range(1, 3, false), "足を滑らせて転倒し、起き上がるまで相手に+20の命中修正を与える。"], [$range(4, 6, false), "手を滑らせて、武器を落とす。素手の時は関係ない。"], [$range(7, 9, false), "使用武器の破壊。素手戦闘のときはMWのダメージを受ける。"], [10, "手を滑らせ、不幸にも武器は飛んでいき、5m以内に人がいれば誰かに刺さるか、または打撃を与えるかもしれない。ランダムに決定し、普通どおり判定を続ける。素手のときは関係ない。"]]], $$($nesting, 'TABLE_ROLL_RESULT_FORMATTER').$to_proc())}).$freeze()); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/MetalHeadExtream.js b/src/assets/dicebot/MetalHeadExtream.js deleted file mode 100644 index 19ab1362f..000000000 --- a/src/assets/dicebot/MetalHeadExtream.js +++ /dev/null @@ -1,494 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range; - - Opal.add_stubs(['$setPrefixes', '$upcase', '$===', '$last_match', '$[]', '$to_i', '$get_value', '$!', '$nil?', '$scan', '$each', '$get_roll_parameter', '$checkRoll', '$get_hit_table', '$get_SUV_table', '$get_damageEffect_table', '$get_critical_table', '$get_accident_table', '$get_mechanicAccident_table', '$get_strategyEvent_chart', '$get_NPCAttack_chart', '$get_loserDestiny_chart', '$get_randomEncounter_table', '$*', '$/', '$**', '$roll', '$getRollResultTextAndSuccesValue', '$+', '$>', '$>=', '$to_s', '$getFormulaText', '$include?', '$-', '$<=', '$==', '$<', '$get_MetalHeadExtream_1d10_table_result', '$index', '$to_a', '$each_with_index', '$first', '$get_table_by_number', '$get_roc_dice', '$get_MetalHeadExtream_1d100_table_result', '$get_MetalHeadExtream_1dX_table_result', '$to_f', '$=~']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'MetalHeadExtream'); - - var $nesting = [self].concat($parent_nesting), $MetalHeadExtream_rollDiceCommand$1, $MetalHeadExtream_checkRoll$3, $MetalHeadExtream_get_roll_parameter$4, $MetalHeadExtream_getRollResultTextAndSuccesValue$5, $MetalHeadExtream_getFormulaText$6, $MetalHeadExtream_get_hit_table$7, $MetalHeadExtream_get_SUV_table$8, $MetalHeadExtream_get_damageEffect_table$10, $MetalHeadExtream_get_critical_table$12, $MetalHeadExtream_get_accident_table$13, $MetalHeadExtream_get_mechanicAccident_table$14, $MetalHeadExtream_get_strategyEvent_chart$15, $MetalHeadExtream_get_NPCAttack_chart$16, $MetalHeadExtream_get_loserDestiny_chart$17, $MetalHeadExtream_get_randomEncounter_table$18, $MetalHeadExtream_get_MetalHeadExtream_1d10_table_result$19, $MetalHeadExtream_get_MetalHeadExtream_1d100_table_result$20, $MetalHeadExtream_get_MetalHeadExtream_1dX_table_result$21, $MetalHeadExtream_get_roc_dice$22, $MetalHeadExtream_get_value$23; - - - Opal.const_set($nesting[0], 'ID', "MetalHeadExtream"); - Opal.const_set($nesting[0], 'NAME', "メタルヘッドエクストリーム"); - Opal.const_set($nesting[0], 'SORT_KEY', "めたるへつとえくすとりいむ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "◆判定:ARn or SRn[*/a][@b][Ac][Ld][!M]  []内省略可。\n" + "「n」で判定値、「*/a」でロール修正を指定。複数回指定可。\n" + "「@b」でアクシデント値、省略時は「96」。\n" + "「Ac」で高度なロール。「2、4、8」のみ指定可能。\n" + "「Ld」でラックポイント、「!M」でパンドラ《ミューズ》。\n" + "\n" + "【書式例】\n" + "AR84/2@99!M → 判定値84のAR1/2。アクシデント値99、パンドラ《ミューズ》。\n" + "SR40*2A2L1@99 → 判定値80のSR、高度なロール2倍、ラック1点。\n" + "\n" + "◆命中部位表:(命中部位)HIT[n]  以降、ROC時は[n]を指定。\n" + "HU:人間  BK:バイク  WA:ワゴン  SC:シェルキャリア  BG:バギー\n" + "IN:インセクター  PT:ポケットタンク  HT:ホバータンク  TA:戦車\n" + "AC:装甲車  HE:ヘリ  TR:トレーラー  VT:VTOL  BO:ボート\n" + "CS:通常、格闘型コンバットシェル  TH:可変、重コンバットシェル\n" + "AM:オートモビル  GD:ガンドック  HC:ホバークラフト\n" + "BI:自転車  BT:バトルトレーラー  AI:エアクラフト\n" + "◆戦闘結果表:SUV(A~Z)n  【書式例】SUVM100\n" + "◆損傷効果表:(命中部位)DMG(損傷種別)  【書式例】TDMGH\n" + "H:頭部  T:胴部  A:腕部  L:脚部  M:心理  E:電子\n" + "B:メカニック本体  P:パワープラント  D:ドライブ\n" + "(損傷種別) L:LW  M:MW  H:HW  O:MO\n" + "◆クリティカル表:CRT[n]\n" + "◆アクシデント表:(種別)AC[n]\n" + "G:格闘  S:射撃、投擲  M:心理  E:電子\n" + "◆メカニック事故表:(場所)MA[n][+m]  「+m」で修正を指定。\n" + "A:空中  S:水上、水中  L:地上\n" + "\n" + "【マスコンバット】\n" + "ストラテジーイベントチャート:SEC\n" + "NPC攻撃処理チャート:NAC  敗者運命チャート:LDC\n" + "\n" + "【各種表】\n" + "荒野ランダムエンカウント表:WENC[n]\n"); - self.$setPrefixes(["[AS]R\\d+.*", "(HU|BK|WA|SC|BG|IN|PT|HT|TA|AC|HE|TR|VT|BO|CS|TH|AM|GD|HC|BI|BT|AI)HIT\\d*", "SUV[A-Z]\\d+", "[HTALMEBPD]DMG[LMHO]", "CRT\\d*", "[GSME]AC\\d*", "[ASL]MA\\d*(\\+\\d+)?", "SEC", "NAC", "LDC", "[W]ENC\\d*"]); - - Opal.def(self, '$rollDiceCommand', $MetalHeadExtream_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $$2, self = this, text = nil, $case = nil, m = nil, type = nil, target = nil, modify = nil, paramText = nil, isMuse = nil, accidentValue = nil, advancedRoll = nil, luckPoint = nil, params = nil, hitPart = nil, roc = nil, armorGrade = nil, damage = nil, damageStage = nil, damageType = nil, locationType = nil, correction = nil; - - - text = (function() {$case = command.$upcase(); - if (/([AS])R(\d+)(([\*\/]\d+)*)?(((@|A|L)\d+)*)(\!M)?$/i['$===']($case)) { - m = $$($nesting, 'Regexp').$last_match(); - type = m['$[]'](1); - target = m['$[]'](2).$to_i(); - modify = self.$get_value(1, m['$[]'](3)); - paramText = ($truthy($a = m['$[]'](5)) ? $a : ""); - isMuse = m['$[]'](8)['$nil?']()['$!'](); - accidentValue = 96; - advancedRoll = 1; - luckPoint = 0; - params = paramText.$scan(/(.)(\d+)/); - $send(params, 'each', [], ($$2 = function(marker, value){var self = $$2.$$s || this, $b, $c; - - - - if (marker == null) { - marker = nil; - }; - - if (value == null) { - value = nil; - }; - return $c = self.$get_roll_parameter(accidentValue, advancedRoll, luckPoint, marker, value), $b = Opal.to_ary($c), (accidentValue = ($b[0] == null ? nil : $b[0])), (advancedRoll = ($b[1] == null ? nil : $b[1])), (luckPoint = ($b[2] == null ? nil : $b[2])), $c;}, $$2.$$s = self, $$2.$$arity = 2, $$2)); - return self.$checkRoll(type, target, modify, accidentValue, advancedRoll, luckPoint, isMuse);} - else if (/(HU|BK|WA|SC|BG|IN|PT|HT|TA|AC|HE|TR|VT|BO|CS|TH|AM|GD|HC|BI|BT|AI)HIT(\d+)?/i['$===']($case)) { - hitPart = $$($nesting, 'Regexp').$last_match(1); - roc = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : 0).$to_i(); - return self.$get_hit_table(hitPart, roc);} - else if (/SUV([A-Z])(\d+)/i['$===']($case)) { - armorGrade = $$($nesting, 'Regexp').$last_match(1); - damage = $$($nesting, 'Regexp').$last_match(2).$to_i(); - return self.$get_SUV_table(armorGrade, damage);} - else if (/([HTALMEBPD])DMG([LMHO])/i['$===']($case)) { - hitPart = $$($nesting, 'Regexp').$last_match(1); - damageStage = $$($nesting, 'Regexp').$last_match(2); - return self.$get_damageEffect_table(hitPart, damageStage);} - else if (/CRT(\d+)?/i['$===']($case)) { - roc = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 0).$to_i(); - return self.$get_critical_table(roc);} - else if (/([GSME])AC(\d+)?/i['$===']($case)) { - damageType = $$($nesting, 'Regexp').$last_match(1); - roc = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : 0).$to_i(); - return self.$get_accident_table(damageType, roc);} - else if (/([ASL])MA(\d+)?(\+(\d+))?/i['$===']($case)) { - locationType = $$($nesting, 'Regexp').$last_match(1); - roc = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : 0).$to_i(); - correction = ($truthy($a = $$($nesting, 'Regexp').$last_match(4)) ? $a : 0).$to_i(); - return self.$get_mechanicAccident_table(locationType, roc, correction);} - else if ("SEC"['$===']($case)) {return self.$get_strategyEvent_chart()} - else if ("NAC"['$===']($case)) {return self.$get_NPCAttack_chart()} - else if ("LDC"['$===']($case)) {return self.$get_loserDestiny_chart()} - else if (/([W])ENC(\d+)?/i['$===']($case)) { - locationType = $$($nesting, 'Regexp').$last_match(1); - roc = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : 0).$to_i(); - return self.$get_randomEncounter_table(locationType, roc);} - else { return nil }})(); - return text; - }, $MetalHeadExtream_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$checkRoll', $MetalHeadExtream_checkRoll$3 = function $$checkRoll(rollText, target, modify, accidentValue, advancedRoll, luckPoint, isMuse) { - var $a, $b, self = this, rollTarget = nil, dice = nil, resultText = nil, successValue = nil, complementText = nil, modifyText = nil, formulaText = nil, result = nil; - - - rollTarget = $rb_times($rb_divide($rb_times(target, modify), advancedRoll), (2)['$**'](luckPoint)).$to_i(); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$getRollResultTextAndSuccesValue(dice, advancedRoll, rollTarget, accidentValue, isMuse), $a = Opal.to_ary($b), (resultText = ($a[0] == null ? nil : $a[0])), (successValue = ($a[1] == null ? nil : $a[1])), $b; - resultText = $rb_plus(resultText, "" + " 達成値:" + (successValue)); - complementText = "" + "ACC:" + (accidentValue); - if ($truthy($rb_gt(advancedRoll, 1))) { - complementText = $rb_plus(complementText, "" + ", ADV:*" + (advancedRoll))}; - if ($truthy($rb_gt(luckPoint, 0))) { - complementText = $rb_plus(complementText, "" + ", LUC:" + (luckPoint))}; - if ($truthy($rb_ge(modify, 1))) { - modifyText = modify.$to_i().$to_s() - } else { - modifyText = "" + "1/" + ($rb_divide(1, modify).$to_i()) - }; - formulaText = self.$getFormulaText(target, modify, advancedRoll, luckPoint); - result = "" + (rollText) + "R" + (modifyText) + "(" + (complementText) + "):1D100<=" + (rollTarget) + (formulaText) + " > [" + (dice) + "] " + (resultText); - if ($truthy(isMuse)) { - result = $rb_plus(result, " 《ミューズ》")}; - return result; - }, $MetalHeadExtream_checkRoll$3.$$arity = 7); - - Opal.def(self, '$get_roll_parameter', $MetalHeadExtream_get_roll_parameter$4 = function $$get_roll_parameter(accident, advanced, luck, marker, value) { - var self = this, $case = nil; - - - value = value.$to_i(); - $case = marker; - if ("@"['$===']($case)) {accident = value} - else if ("A"['$===']($case)) {if ($truthy([2, 4, 8]['$include?'](value))) { - advanced = value}} - else if ("L"['$===']($case)) {luck = value}; - return [accident, advanced, luck]; - }, $MetalHeadExtream_get_roll_parameter$4.$$arity = 5); - - Opal.def(self, '$getRollResultTextAndSuccesValue', $MetalHeadExtream_getRollResultTextAndSuccesValue$5 = function $$getRollResultTextAndSuccesValue(dice, advancedRoll, rollTarget, accidentValue, isMuse) { - var self = this, successValue = nil, resultText = nil, dig1 = nil, isCritical = nil; - - - successValue = 0; - if ($truthy($rb_ge(dice, accidentValue))) { - - resultText = "失敗(アクシデント)"; - return [resultText, successValue];}; - if ($truthy($rb_gt(dice, rollTarget))) { - - resultText = "失敗"; - return [resultText, successValue];}; - dig1 = $rb_minus(dice, $rb_times($rb_divide(dice, 10).$to_i(), 10)); - if ($truthy(isMuse)) { - isCritical = $rb_le(dig1, 1) - } else { - isCritical = dig1['$=='](1) - }; - resultText = "成功"; - if ($truthy(isCritical)) { - resultText = $rb_plus(resultText, "(クリティカル)")}; - successValue = $rb_times(dice, advancedRoll); - return [resultText, successValue]; - }, $MetalHeadExtream_getRollResultTextAndSuccesValue$5.$$arity = 5); - - Opal.def(self, '$getFormulaText', $MetalHeadExtream_getFormulaText$6 = function $$getFormulaText(target, modify, advancedRoll, luckPoint) { - var self = this, formulaText = nil; - - - formulaText = target.$to_s(); - if ($truthy($rb_gt(modify, 1))) { - formulaText = $rb_plus(formulaText, "" + "*" + (modify.$to_i()))}; - if ($truthy($rb_lt(modify, 1))) { - formulaText = $rb_plus(formulaText, "" + "/" + ($rb_divide(1, modify).$to_i()))}; - if ($truthy($rb_gt(advancedRoll, 1))) { - formulaText = $rb_plus(formulaText, "" + "/" + (advancedRoll))}; - if ($truthy($rb_gt(luckPoint, 0))) { - formulaText = $rb_plus(formulaText, "" + "*" + ((2)['$**'](luckPoint)))}; - if (formulaText['$=='](target.$to_s())) { - return ""}; - return "" + "[" + (formulaText) + "]"; - }, $MetalHeadExtream_getFormulaText$6.$$arity = 4); - - Opal.def(self, '$get_hit_table', $MetalHeadExtream_get_hit_table$7 = function $$get_hit_table(hitPart, roc) { - var self = this, $case = nil, name = nil, table = nil; - - - $case = hitPart; - if ("HU"['$===']($case)) { - name = "命中部位表:人間"; - table = [[1, "胴部(クリティカル)"], [2, "頭部"], [3, "左腕部"], [4, "右腕部"], [5, "胴部"], [6, "胴部"], [7, "胴部"], [8, "胴部"], [9, "脚部"], [10, "脚部"]];} - else if ("BK"['$===']($case)) { - name = "命中部位表:バイク"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "パワープラント"], [6, "ドライブ"], [7, "ドライブ"], [8, "兵装・貨物"], [9, "乗員"], [10, "乗員"]];} - else if ("WA"['$===']($case)) { - name = "命中部位表:ワゴン"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "本体"], [7, "パワープラント"], [8, "ドライブ"], [9, "兵装・貨物"], [10, "乗員"]];} - else if ("SC"['$===']($case)) { - name = "命中部位表:シェルキャリア"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "本体"], [7, "パワープラント"], [8, "ドライブ"], [9, "兵装・貨物"], [10, "乗員"]];} - else if ("BG"['$===']($case)) { - name = "命中部位表:バギー"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "パワープラント"], [7, "ドライブ"], [8, "兵装・貨物"], [9, "兵装・貨物"], [10, "乗員"]];} - else if ("IN"['$===']($case)) { - name = "命中部位表:インセクター"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "パワープラント"], [7, "ドライブ"], [8, "ドライブ"], [9, "ドライブ"], [10, "乗員"]];} - else if ("PT"['$===']($case)) { - name = "命中部位表:ポケットタンク"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "パワープラント"], [7, "パワープラント"], [8, "ドライブ"], [9, "ドライブ"], [10, "兵装・貨物"]];} - else if ("HT"['$===']($case)) { - name = "命中部位表:ホバータンク"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "本体"], [7, "パワープラント"], [8, "ドライブ"], [9, "兵装・貨物"], [10, "兵装・貨物"]];} - else if ("TA"['$===']($case)) { - name = "命中部位表:戦車"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "パワープラント"], [7, "ドライブ"], [8, "ドライブ"], [9, "兵装・貨物"], [10, "兵装・貨物"]];} - else if ("AC"['$===']($case)) { - name = "命中部位表:装甲車"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "パワープラント"], [7, "ドライブ"], [8, "ドライブ"], [9, "兵装・貨物"], [10, "兵装・貨物"]];} - else if ("HE"['$===']($case)) { - name = "命中部位表:ヘリ"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "パワープラント"], [6, "ドライブ"], [7, "ドライブ"], [8, "兵装・貨物"], [9, "兵装・貨物"], [10, "乗員"]];} - else if ("TR"['$===']($case)) { - name = "命中部位表:トレーラー"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "パワープラント"], [6, "ドライブ"], [7, "兵装・カーゴ"], [8, "兵装・カーゴ"], [9, "兵装・カーゴ"], [10, "乗員"]];} - else if ("VT"['$===']($case)) { - name = "命中部位表:VTOL"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "パワープラント"], [7, "ドライブ"], [8, "兵装・貨物"], [9, "兵装・貨物"], [10, "乗員"]];} - else if ("BO"['$===']($case)) { - name = "命中部位表:ボート"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "本体"], [7, "本体"], [8, "パワープラント"], [9, "ドライブ"], [10, "兵装・貨物"]];} - else if ("CS"['$===']($case)) { - name = "命中部位表:通常・格闘型コンバットシェル"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "本体"], [7, "ザック"], [8, "ドライブ"], [9, "兵装・貨物"], [10, "兵装・貨物"]];} - else if ("TH"['$===']($case)) { - name = "命中部位表:可変・重コンバットシェル"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "本体"], [7, "ドライブ"], [8, "ドライブ"], [9, "兵装・貨物"], [10, "兵装・貨物"]];} - else if ("AM"['$===']($case)) { - name = "命中部位表:オートモビル"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "パワープラント"], [7, "ドライブ"], [8, "兵装・貨物"], [9, "兵装・貨物"], [10, "乗員"]];} - else if ("GD"['$===']($case)) { - name = "命中部位表:ガンドック"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "パワープラント"], [7, "ドライブ"], [8, "ドライブ"], [9, "兵装・貨物"], [10, "乗員"]];} - else if ("HC"['$===']($case)) { - name = "命中部位表:ホバークラフト"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "パワープラント"], [6, "パワープラント"], [7, "ドライブ"], [8, "兵装・貨物"], [9, "乗員"], [10, "乗員"]];} - else if ("BI"['$===']($case)) { - name = "命中部位表:自転車"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "パワープラント"], [7, "ドライブ"], [8, "兵装・貨物"], [9, "兵装・貨物"], [10, "乗員"]];} - else if ("BT"['$===']($case)) { - name = "命中部位表:バトルトレーラー"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "パワープラント"], [7, "ドライブ"], [8, "兵装・貨物"], [9, "兵装・貨物"], [10, "乗員"]];} - else if ("AI"['$===']($case)) { - name = "命中部位表:エアクラフト"; - table = [[1, "本体(クリティカル)"], [2, "本体"], [3, "本体"], [4, "本体"], [5, "本体"], [6, "パワープラント"], [7, "ドライブ"], [8, "兵装・貨物"], [9, "兵装・貨物"], [10, "乗員"]];} - else {return nil}; - return self.$get_MetalHeadExtream_1d10_table_result(name, table, roc); - }, $MetalHeadExtream_get_hit_table$7.$$arity = 2); - - Opal.def(self, '$get_SUV_table', $MetalHeadExtream_get_SUV_table$8 = function $$get_SUV_table(armorGrade, damage) { - var $$9, self = this, name = nil, table = nil, armorIndex = nil, damageInfo = nil, woundRanks = nil, woundText = nil; - - - name = "戦闘結果表"; - table = [[0, 1, 6, 16, 26, 36], [0, 1, 6, 26, 36, 46], [0, 1, 16, 26, 46, 56], [1, 6, 26, 36, 56, 76], [1, 16, 36, 46, 66, 76], [1, 26, 36, 56, 76, 86], [1, 36, 56, 66, 76, 96], [1, 56, 76, 86, 96, 106], [1, 66, 86, 96, 106, 116], [1, 66, 86, 96, 116, 136], [1, 76, 96, 106, 126, 156], [1, 76, 96, 116, 146, 166], [1, 86, 106, 126, 166, 176], [1, 106, 126, 136, 176, 196], [1, 106, 126, 146, 186, 206], [1, 116, 136, 156, 196, 206], [1, 126, 146, 166, 206, 226], [1, 126, 146, 176, 226, 246], [1, 136, 156, 186, 246, 266], [1, 156, 176, 206, 246, 286], [1, 156, 176, 206, 266, 306], [1, 166, 186, 206, 286, 346], [1, 176, 196, 246, 326, 366], [1, 196, 226, 266, 346, 386], [1, 206, 226, 286, 366, 406], [1, 226, 246, 306, 386, 406]]; - armorIndex = $range("A", "Z", false).$to_a().$index(armorGrade); - damageInfo = table['$[]'](armorIndex); - woundRanks = ["無傷", "LW(軽傷)", "MW(中傷)", "HW(重傷)", "MO(致命傷)", "KL(死亡)"]; - woundText = ""; - (function(){var $brk = Opal.new_brk(); try {return $send(damageInfo, 'each_with_index', [], ($$9 = function(rate, index){var self = $$9.$$s || this; - - - - if (rate == null) { - rate = nil; - }; - - if (index == null) { - index = nil; - }; - if ($truthy($rb_gt(rate, damage))) { - - Opal.brk(nil, $brk)}; - return (woundText = woundRanks['$[]'](index));}, $$9.$$s = self, $$9.$$brk = $brk, $$9.$$arity = 2, $$9)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return "" + (name) + "(" + (armorGrade) + "):" + (damage) + " > " + (woundText); - }, $MetalHeadExtream_get_SUV_table$8.$$arity = 2); - - Opal.def(self, '$get_damageEffect_table', $MetalHeadExtream_get_damageEffect_table$10 = function $$get_damageEffect_table(hitPart, damageStage) { - var $$11, self = this, damageInfos = nil, index = nil, damageIndex = nil, damageText = nil, $case = nil, name = nil, table = nil, text = nil; - - - damageInfos = [["L", "(LW)"], ["M", "(MW)"], ["H", "(HW)"], ["O", "(MO)"]]; - index = $send(damageInfos, 'index', [], ($$11 = function(i){var self = $$11.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$first()['$=='](damageStage);}, $$11.$$s = self, $$11.$$arity = 1, $$11)); - if (index['$=='](-1)) { - return nil}; - damageIndex = $rb_plus(index, 1); - damageText = damageInfos['$[]'](index)['$[]'](1); - $case = hitPart; - if ("H"['$===']($case)) { - name = "対人損傷効果表:頭部"; - table = [[1, "ダメージ修正+10。"], [2, "ダメージ修正+10。【PER】のAR、【PER】がベースアビリティのスキルのSRにSR1/2のロール修正。"], [3, "ダメージ修正+20。【PER】のAR、【PER】がベースアビリティのスキルのSRにSR1/4のロール修正。"], [4, "ダメージ修正+30。[死亡]。頭部がサイバーの場合は[戦闘不能]。"]];} - else if ("T"['$===']($case)) { - name = "対人損傷効果表:胴部"; - table = [[1, "ダメージ修正+10。"], [2, "ダメージ修正+10。【DEX】のAR、【DEX】がベースアビリティのスキルのSRにSR1/2のロール修正。"], [3, "ダメージ修正+20。【DEX】のAR、【DEX】がベースアビリティのスキルのSRにSR1/4のロール修正。"], [4, "ダメージ修正+30。[戦闘不能]。"]];} - else if ("A"['$===']($case)) { - name = "対人損傷効果表:腕部"; - table = [[1, "ダメージ修正+10。"], [2, "ダメージ修正+10。損傷した腕を使用する、また両腕を使用する行動にSR1/2のロール修正。"], [3, "ダメージ修正+20。損傷した腕を使用する、また両腕を使用する行動にSR1/4のロール修正。"], [4, "ダメージ修正+30。損傷した腕を使用する、また両腕を使用する行動不可。"]];} - else if ("L"['$===']($case)) { - name = "対人損傷効果表:脚部"; - table = [[1, "ダメージ修正+10。"], [2, "ダメージ修正+10。【REF】のAR、【REF】がベースアビリティのスキルのSRにSR1/2のロール修正。"], [3, "ダメージ修正+20。【REF】のAR、【REF】がベースアビリティのスキルのSRにSR1/4のロール修正。【MV】が1/2。"], [4, "ダメージ修正+30。[戦闘不能]。"]];} - else if ("M"['$===']($case)) { - name = "心理損傷効果表"; - table = [[1, "ダメージ修正+10。焦り。効果は特になし。シーン終了で自然回復。"], [2, "ダメージ修正+20。混乱。1シーン、すべてのロールがSR1/2となる。シーン終了で自然回復。"], [3, "ダメージ修正+30。恐怖。1シーン、すべてのロールがSR1/4となる。シーン終了で自然回復。"], [4, "ダメージ修正+50。喪失。[戦闘不能]。シーン終了で自然回復。"]];} - else if ("E"['$===']($case)) { - name = "電子損傷効果表"; - table = [[1, "ダメージ修正+10。処理落ち。効果は特になし。"], [2, "ダメージ修正+20。ノイズ。1シーン、キャラクターならすべてのロールが、アイテムならそれを使用したロールが1/2となる。"], [3, "ダメージ修正+30。恐怖。1シーン、キャラクターならすべてのロールが、アイテムならそれを使用したロールが1/4となる。"], [4, "ダメージ修正+50。クラッシュ。キャラクターなら[戦闘不能]。アイテムなら1シナリオ中、使用不可。"]];} - else if ("B"['$===']($case)) { - name = "メカニック損傷効果表:本体"; - table = [[1, "ダメージ修正+10。"], [2, "ダメージ修正シフト1。修理費がフレーム価格の1/4かかる。"], [3, "ダメージ修正シフト2。修理費がフレーム価格の1/2かかる。"], [4, "ダメージ修正シフト3。移動不能。修理費がフレーム価格と同じだけかかる。走行中なら事故表を振ること。"]];} - else if ("P"['$===']($case)) { - name = "メカニック損傷効果表:パワープラント"; - table = [[1, "ダメージ修正+10。"], [2, "ダメージ修正+10。メカニックの【MV】が1/2になる。修理費がパワープラント価格の1/4かかる。"], [3, "ダメージ修正+20。メカニックの【MV】が1/4になる。修理費がパワープラント価格の1/2かかる。"], [4, "ダメージ修正+30。移動不能。修理費がパワープラント価格と同じだけかかる。走行中なら事故表を振ること。"]];} - else if ("D"['$===']($case)) { - name = "メカニック損傷効果表:ドライブ"; - table = [[1, "ダメージ修正+10。"], [2, "ダメージ修正+10。メカニックの【REF】が1/2になる。[メカニック]スキルにSR1/2の修正。修理費がドライブ価格の1/4かかる。"], [3, "ダメージ修正+20。メカニックの【REF】が1/2になる。[メカニック]スキルにSR1/4の修正。修理費がドライブ価格の1/2かかる。"], [4, "ダメージ修正+30。移動不能。修理費がドライブ価格と同じだけかかる。走行中なら事故表を振ること。"]];} - else {return nil}; - text = self.$get_table_by_number(damageIndex, table); - return "" + (name) + (damageText) + " > " + (text); - }, $MetalHeadExtream_get_damageEffect_table$10.$$arity = 2); - - Opal.def(self, '$get_critical_table', $MetalHeadExtream_get_critical_table$12 = function $$get_critical_table(roc) { - var self = this, name = nil, table = nil; - - - name = "クリティカル表"; - table = [[1, "特に追加被害は発生しない。"], [2, "対象はバランスを崩す。クリンナッププロセスまで、対象は命中ロールにSR1/2のロール修正を受ける。"], [3, "対象に隙を作る。クリンナッププロセスまで、対象はリアクションにSR1/2のロール修正を受ける。"], [4, "激しい一撃。最終火力に+20してダメージを算出すること。"], [5, "多大なダメージ。最終火力に+20してダメージを算出すること。"], [6, "弱点に直撃。対象の装甲値を無視してダメージを算出すること。"], [7, "効果的な一撃。対象の受ける損傷段階をシフト1する。"], [8, "致命的な一撃。対象の受ける損傷段階をシフト2する。"], [9, "中枢に直撃。対象の【SUV】を3ランク低いものとしてダメージを算出する。"], [10, "中枢を破壊。対象の装甲値を無視し、【SUV】を3ランク低いものとしてダメージを算出する。"]]; - return self.$get_MetalHeadExtream_1d10_table_result(name, table, roc); - }, $MetalHeadExtream_get_critical_table$12.$$arity = 1); - - Opal.def(self, '$get_accident_table', $MetalHeadExtream_get_accident_table$13 = function $$get_accident_table(damageType, roc) { - var self = this, $case = nil, name = nil, table = nil; - - - $case = damageType; - if ("G"['$===']($case)) { - name = "格闘アクシデント表"; - table = [[1, "体勢を崩す。その攻撃は失敗する。"], [2, "体勢を崩す。その攻撃は失敗する。"], [3, "体勢を崩す。その攻撃は失敗する。"], [4, "転倒。格闘回避と機動回避にSR1/4、【MV】が半分に。"], [5, "転倒。格闘回避と機動回避にSR1/4、【MV】が半分に。"], [6, "転倒。格闘回避と機動回避にSR1/4、【MV】が半分に。"], [7, "武器が足下(0m離れたところ)に落ちる。素手のときは何もなし。"], [8, "武器が足下(0m離れたところ)に落ちる。素手のときは何もなし。"], [9, "武器が5m離れたところに落ちる。素手のときは関係ない。"], [10, "使用武器が壊れ、1シーン使用不可。"]];} - else if ("S"['$===']($case)) { - name = "射撃/投擲アクシデント表"; - table = [[1, "ささいなミス。その攻撃は失敗する。"], [2, "ささいなミス。その攻撃は失敗する。"], [3, "ささいなミス。その攻撃は失敗する。"], [4, "射撃武器はジャム。投擲武器ならば武器が取り出せないなど、マイナーアクションを消費しなければその武器を使用できない。"], [5, "射撃武器はジャム。投擲武器ならば武器が取り出せないなど、マイナーアクションを消費しなければその武器を使用できない。"], [6, "射撃武器はジャム。投擲武器ならば武器が取り出せないなど、マイナーアクションを消費しなければその武器を使用できない。"], [7, "故障。メジャーアクションで【DEX】のSR1のロールに成功しなければ、その武器を使用できない。"], [8, "故障。メジャーアクションで【DEX】のSR1のロールに成功しなければ、その武器を使用できない。"], [9, "破壊。以後、その武器は使用できない。"], [10, "武器の暴発。固定火力100のダメージを、装甲値無視で武器を持っていた腕(両手なら両手)、または兵装・貨物に受ける。"]];} - else if ("M"['$===']($case)) { - name = "心理攻撃アクシデント表"; - table = [[1, "集中失敗。攻撃は失敗する。"], [2, "集中失敗。攻撃は失敗する。"], [3, "集中失敗。攻撃は失敗する。"], [4, "思考ノイズ。クリンナップまですべてのリアクションにSR1/2。"], [5, "思考ノイズ。クリンナップまですべてのリアクションにSR1/2。"], [6, "思考ノイズ。クリンナップまですべてのリアクションにSR1/2。"], [7, "EXの暴走。頭部に装甲値無視、固定火力60のダメージを受ける。"], [8, "EXの暴走。頭部に装甲値無視、固定火力60のダメージを受ける。"], [9, "感情暴走。攻撃に使用したマニューバが1シーン使用不可。"], [10, "トラウマの再現。装甲値無視、固定火力100の心理ダメージを受ける。"]];} - else if ("E"['$===']($case)) { - name = "電子攻撃アクシデント表"; - table = [[1, "ショック。攻撃は失敗する。"], [2, "ショック。攻撃は失敗する。"], [3, "ショック。攻撃は失敗する。"], [4, "ノイズ発生。クリンナップまで電子攻撃のリアクションにSR1/2。"], [5, "ノイズ発生。クリンナップまで電子攻撃のリアクションにSR1/2。"], [6, "ノイズ発生。クリンナップまで電子攻撃のリアクションにSR1/2。"], [7, "ソフトウェア障害。攻撃に使用したソフトが1シーン使用不可。"], [8, "ソフトウェア障害。攻撃に使用したソフトが1シーン使用不可。"], [9, "ハードウェア障害。装甲値無視、固定火力80の電子ダメージを受ける。"], [10, "信号逆流。装甲値無視、固定火力100の心理ダメージを受ける。"]];} - else {return nil}; - return self.$get_MetalHeadExtream_1d10_table_result(name, table, roc); - }, $MetalHeadExtream_get_accident_table$13.$$arity = 2); - - Opal.def(self, '$get_mechanicAccident_table', $MetalHeadExtream_get_mechanicAccident_table$14 = function $$get_mechanicAccident_table(locationType, roc, correction) { - var self = this, $case = nil, name = nil, table = nil, dice = nil, diceText = nil, tableText = nil, text = nil; - - - $case = locationType; - if ("A"['$===']($case)) { - name = "空中メカニック事故表"; - table = [[3, "兵装/貨物。メカニックが装備している一番ENCの大きい武器ひとつが戦闘終了時まで使用不能になる。武器がない場合はメカニックオプションが使用不能になり、それもない場合は一番ENCの重い貨物(乗客をのぞく)が失われる。"], [6, "操作不能。メカニック本体にMWダメージ。操縦者は適切な[メカニック]スキルでSR1/4のロールを行い、成功したら体勢を立て直せる。失敗した場合、次のクリンナッププロセスまで、回避をふくめた一切の行動を取ることができない。"], [8, "不時着。メカニック本体にHWダメージ。次のクリンナッププロセスまで、回復をふくめた一切の行動を取ることができない。"], [9, "墜落。メカニック本体にMOダメージ。すべての乗員は、墜落のショックによってランダムな部位に〈物〉155の固定ダメージを受ける。このダメージは機動回避可能である。"], [10, "爆発。メカニックが爆発し、完全に破壊される。すべての乗員は、爆発と落下によって胴体に〈熱〉205の固定ダメージを受ける。このダメージは機動回避可能だが、SRに1/4の修正がある。"]];} - else if ("S"['$===']($case)) { - name = "水上/水中メカニック事故表"; - table = [[3, "横揺れ。次のクリンナッププロセスまで、このメカニックに乗っているキャラクターの行うすべての[メカニック]ロールに1/2の修正が与えられる。"], [6, "兵装/貨物。メカニックが装備している一番ENCの大きい武器ひとつが戦闘終了時まで使用不能になる。武器がない場合はメカニックオプションが使用不能になり、それもない場合は一番ENCの重い貨物(乗客をのぞく)が失われる。"], [8, "横転。メカニック本体にMWダメージ。操縦者は適切な[メカニック]スキルでSR1/4のロールを行い、成功したら体勢を立て直せる。失敗した場合、次のクリンナッププロセスまで、回避をふくめた一切の行動を取ることができない。"], [9, "激突。メカニック本体に〈物〉255の固定ダメージ。"], [10, "爆発。メカニックが爆発し、完全に破壊される。すべての乗員は、爆発によって胴体に〈熱〉155の固定ダメージを受ける。このダメージは機動回避可能だが、SRに1/4の修正がある。"]];} - else if ("L"['$===']($case)) { - name = "地上メカニック事故表"; - table = [[3, "接触。メカニック本体にLWダメージ。"], [6, "兵装/貨物。メカニックが装備している一番ENCの大きい武器ひとつが戦闘終了時まで使用不能になる。武器がない場合はメカニックオプションが使用不能になり、それもない場合は一番ENCの重い貨物(乗客をのぞく)が失われる。"], [8, "スピン。メカニック本体にMWダメージ。操縦者は適切な[メカニック]スキルでSR1/4のロールを行い、成功したら体勢を立て直せる。失敗した場合、次のクリンナッププロセスまで、回避をふくめた一切の行動を取ることができない。"], [9, "激突。メカニック本体に〈物〉255の固定ダメージ。次のクリンナッププロセスまで、回避をふくめた一切の行動を取ることができない。"], [10, "爆発。メカニックが爆発し、完全に破壊される。すべての乗員は、爆発によって胴体に〈熱〉155の固定ダメージを受ける。このダメージは機動回避可能だが、SRに1/4の修正がある。"]];} - else {return nil}; - dice = self.$get_roc_dice(roc, 10); - diceText = dice.$to_s(); - dice = $rb_plus(dice, correction); - if ($truthy($rb_gt(dice, 10))) { - dice = 10}; - if ($truthy($rb_gt(correction, 0))) { - diceText = "" + (dice) + "[" + (diceText) + "+" + (correction) + "]"}; - tableText = self.$get_table_by_number(dice, table); - text = "" + (name) + "(" + (diceText) + ") > " + (tableText); - return text; - }, $MetalHeadExtream_get_mechanicAccident_table$14.$$arity = 3); - - Opal.def(self, '$get_strategyEvent_chart', $MetalHeadExtream_get_strategyEvent_chart$15 = function $$get_strategyEvent_chart() { - var self = this, name = nil, table = nil; - - - name = "ストラテジーイベントチャート"; - table = [[50, "特に何事もなかった。"], [53, "スコール。種別:レーザーを装備している部隊の戦力はこのターン半減する。この効果は重複しない。"], [55, "ただよう不安。味方ユニットはWILのAR1を行い、失敗すると士気の10%を失う。"], [57, "狙撃! 司令官キャラクターは胴体に〈物〉155点の固定ダメージを受ける。機動回避は可能。"], [60, "敵の猛烈な反撃! 味方ユニットはREFのAR1を行い、失敗するとこのターン、移動力がマイナス1。"], [63, "敵弾幕の隙を見いだす。このターン、味方ユニットは突破判定がSR2に。"], [65, "突破のチャンス。このターン、味方ユニットは移動力が1点上昇する。"], [67, "士気高揚。味方ユニットの士気がそれぞれ現在値の10%だけ回復する。"], [70, "敵陣崩壊。敵ユニットの中で士気がもっとも低いユニットが戦場から撤退する。複数いた場合、すべて撤退。PC、ゲストには効果なし。"], [73, "大声援。戦闘がどこかのハッカーによって衛星中継され、喝采を浴びる。"], [75, "雨/雪。種別;レーザーを部隊の戦力はこのターン半減する。この効果は重複しない。"], [77, "磁気嵐。このターン、種別:ミサイルは戦力に数えず、突撃に使用することもできない。"], [80, "膠着した戦況。このターン、味方ユニットは突破判定がSR1/2に。"], [83, "メタルホッパー! 金属イナゴの襲来で視界をふさがれ、このラウンドは全てのMC射程が0となる。"], [85, "大竜巻! 飛行しているユニットの移動力は0となり、飛行ユニットはこのターン自分から突撃を行えない。"], [87, "通信の混乱。味方ユニットはINTのAR1を行い、失敗するとこのターン、移動力がマイナス1。"], [90, "幸運が微笑む。味方ユニットのラックポイントが1点ずつ回復。NPCには無効。"], [93, "致命的な狙撃! 司令官キャラクターは胴体に〈物〉205点の固定ダメージを受ける。機動回避は可能。"], [95, "敵の罠に落ちた。このターン、敵軍ユニットは移動力が1点上昇する。"], [97, "勝利の予感。味方ユニットの士気がそれぞれの現在値の20%だけ回復する。"], [99, "天変地異が襲いかかる! このターン、すべてのユニットは移動できない。"], [100, "大混乱。後2回振る。"]]; - return self.$get_MetalHeadExtream_1d100_table_result(name, table, 0); - }, $MetalHeadExtream_get_strategyEvent_chart$15.$$arity = 0); - - Opal.def(self, '$get_NPCAttack_chart', $MetalHeadExtream_get_NPCAttack_chart$16 = function $$get_NPCAttack_chart() { - var self = this, name = nil, table = nil; - - - name = "NPC攻撃処理チャート"; - table = [[5, "戦力の低い側だけが一方的に除去される。"], [8, "双方、一番戦力の少ないユニットひとつを除去する。"], [10, "戦力の高い側が最大戦力のユニットひとつを除去する。"]]; - return self.$get_MetalHeadExtream_1d10_table_result(name, table, 0); - }, $MetalHeadExtream_get_NPCAttack_chart$16.$$arity = 0); - - Opal.def(self, '$get_loserDestiny_chart', $MetalHeadExtream_get_loserDestiny_chart$17 = function $$get_loserDestiny_chart() { - var self = this, name = nil, table = nil; - - - name = "敗者運命チャート"; - table = [[1, "奇跡的に無傷で生き延びた。いずれ復讐の機会もあるだろう。"], [2, "ランダムな部位にLWを負う。"], [3, "戦力決定に使っていた武器が破壊される。"], [4, "ランダムな部位にMWを負う。"], [5, "外見に影響するような傷を負う。治療するなら$3000。"], [6, "ランダムな部位にHWを負う。"], [7, "着用している防具すべてが破壊される。衣服は壊れない。"], [8, "ランダムな部位にMOを負う。"], [9, "ランダムに決定した能力値ひとつを、永久に1点失う。"], [10, "残念ながら、君は死んでしまった。"]]; - return self.$get_MetalHeadExtream_1d10_table_result(name, table, 0); - }, $MetalHeadExtream_get_loserDestiny_chart$17.$$arity = 0); - - Opal.def(self, '$get_randomEncounter_table', $MetalHeadExtream_get_randomEncounter_table$18 = function $$get_randomEncounter_table(locationType, roc) { - var self = this, $case = nil, name = nil, table = nil; - - - $case = locationType; - if ("W"['$===']($case)) { - name = "荒野ランダムエンカウント表"; - table = [[80, "特に遭遇は発生しなかった"], [85, "1d10名のバンデッド"], [87, "ヴェーダ・バウンサー1名に率いられた1d10+2(最低1)のヴェーダ・ソルジャー"], [89, "1d10+2体のウェーブコヨーテ"], [91, "1d10÷2体(最低1)のレーザーアント"], [93, "1d10-5体(最低1)のライトニングホーク"], [96, "1d10体のメタルホッパー"], [98, "1体のブラスビースト"], [100, "1d10÷3体(最低1)のサンドワーム"]];} - else {return nil}; - return self.$get_MetalHeadExtream_1d100_table_result(name, table, roc); - }, $MetalHeadExtream_get_randomEncounter_table$18.$$arity = 2); - - Opal.def(self, '$get_MetalHeadExtream_1d10_table_result', $MetalHeadExtream_get_MetalHeadExtream_1d10_table_result$19 = function $$get_MetalHeadExtream_1d10_table_result(name, table, roc) { - var self = this; - - return self.$get_MetalHeadExtream_1dX_table_result(name, table, roc, 10) - }, $MetalHeadExtream_get_MetalHeadExtream_1d10_table_result$19.$$arity = 3); - - Opal.def(self, '$get_MetalHeadExtream_1d100_table_result', $MetalHeadExtream_get_MetalHeadExtream_1d100_table_result$20 = function $$get_MetalHeadExtream_1d100_table_result(name, table, roc) { - var self = this; - - return self.$get_MetalHeadExtream_1dX_table_result(name, table, roc, 100) - }, $MetalHeadExtream_get_MetalHeadExtream_1d100_table_result$20.$$arity = 3); - - Opal.def(self, '$get_MetalHeadExtream_1dX_table_result', $MetalHeadExtream_get_MetalHeadExtream_1dX_table_result$21 = function $$get_MetalHeadExtream_1dX_table_result(name, table, roc, diceMax) { - var self = this, dice = nil, text = nil; - - - dice = self.$get_roc_dice(roc, diceMax); - text = self.$get_table_by_number(dice, table); - return "" + (name) + "(" + (dice) + ") > " + (text); - }, $MetalHeadExtream_get_MetalHeadExtream_1dX_table_result$21.$$arity = 4); - - Opal.def(self, '$get_roc_dice', $MetalHeadExtream_get_roc_dice$22 = function $$get_roc_dice(roc, diceMax) { - var $a, $b, self = this, dice = nil; - - - dice = roc; - if ($truthy($rb_gt(dice, diceMax))) { - dice = diceMax}; - if (dice['$=='](0)) { - $b = self.$roll(1, diceMax), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b}; - return dice; - }, $MetalHeadExtream_get_roc_dice$22.$$arity = 2); - return (Opal.def(self, '$get_value', $MetalHeadExtream_get_value$23 = function $$get_value(originalValue, calculateText) { - var $a, $$24, self = this, result = nil, calculateArray = nil; - - - result = originalValue.$to_f(); - calculateArray = ($truthy($a = calculateText) ? $a : "").$scan(/[\*\/]\d*/); - $send(calculateArray, 'each', [], ($$24 = function(i){var self = $$24.$$s || this; - - - - if (i == null) { - i = nil; - }; - i['$=~'](/([\*\/])(\d*)/i); - if ($$($nesting, 'Regexp').$last_match(1)['$==']("*")) { - result = $rb_times(result, $$($nesting, 'Regexp').$last_match(2).$to_i())}; - if ($$($nesting, 'Regexp').$last_match(1)['$==']("/")) { - return (result = $rb_divide(result, $$($nesting, 'Regexp').$last_match(2).$to_i())) - } else { - return nil - };}, $$24.$$s = self, $$24.$$arity = 1, $$24)); - return result; - }, $MetalHeadExtream_get_value$23.$$arity = 2), nil) && 'get_value'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/MetallicGuardian.js b/src/assets/dicebot/MetallicGuardian.js deleted file mode 100644 index c04836db7..000000000 --- a/src/assets/dicebot/MetallicGuardian.js +++ /dev/null @@ -1,1170 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/DiceBot"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$freeze', '$attr_reader', '$map', '$to_proc', '$join', '$private', '$clearPrefixes', '$!', '$empty?', '$prefixs', '$prefixes', '$class', '$warn', '$id', '$setPrefixes', '$attr_accessor', '$name', '$sort_key', '$help_message', '$attr_writer', '$rand', '$roll', '$marshalSignOfInequality', '$unlimitedRollDiceType', '$getD66Value', '$parren_killer', '$debug', '$isGetOriginalMessage', '$getOriginalMessage', '$=~', '$prefixesPattern', '$last_match', '$removeDiceCommandMessage', '$rollDiceCommandCatched', '$nil?', '$!=', '$sub', '$rollDiceCommand', '$to_s', '$backtrace', '$size', '$===', '$check_1D100', '$check_1D20', '$check_2D6', '$check_nD10', '$check_nD6', '$check_nDx', '$is_a?', '$==', '$send', '$get_table_by_nD6', '$get_table_by_nDx', '$getTableValue', '$[]', '$-', '$/', '$getD66', '$bcdice', '$get_table_by_number', '$+', '$*', '$<', '$each', '$>=', '$kind_of?', '$lambda', '$call', '$select', '$public_methods', '$upcase', '$to_i', '$getTableInfoFromExtraTableText', '$get_table_by_nDx_extratable', '$get_table_by_d66', '$floor', '$%', '$get_table_by_d66_swap', '$raise', '$gsub', '$rollTableMessageDiceText', '$split', '$inspect']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceBot'); - - var $nesting = [self].concat($parent_nesting), $DiceBot_initialize$4, $DiceBot_postSet$5, $DiceBot_info$6, $DiceBot_id$7, $DiceBot_gameType$8, $DiceBot_name$9, $DiceBot_gameName$10, $DiceBot_sort_key$11, $DiceBot_help_message$12, $DiceBot_getHelpMessage$13, $DiceBot_prefixes$14, $DiceBot_setSendMode$15, $DiceBot_bcdice$eq$16, $DiceBot_bcdice$17, $DiceBot_rand$18, $DiceBot_roll$19, $DiceBot_marshalSignOfInequality$20, $DiceBot_unlimitedRollDiceType$21, $DiceBot_setSortType$22, $DiceBot_d66$23, $DiceBot_parren_killer$24, $DiceBot_changeText$25, $DiceBot_dice_command$26, $DiceBot_isGetOriginalMessage$27, $DiceBot_removeDiceCommandMessage$28, $DiceBot_rollDiceCommandCatched$29, $DiceBot_rollDiceCommand$30, $DiceBot_dice_command_xRn$31, $DiceBot_check_result$32, $DiceBot_check_nDx$33, $DiceBot_check_1D100$34, $DiceBot_check_1D20$35, $DiceBot_check_nD10$36, $DiceBot_check_2D6$37, $DiceBot_check_nD6$38, $DiceBot_get_table_by_2d6$39, $DiceBot_get_table_by_1d6$40, $DiceBot_get_table_by_nD6$41, $DiceBot_get_table_by_nDx$42, $DiceBot_get_table_by_1d3$43, $DiceBot_getD66$44, $DiceBot_get_table_by_d66_swap$45, $DiceBot_get_table_by_d66$46, $DiceBot_getDiceRolledAdditionalText$47, $DiceBot_getDiceRevision$48, $DiceBot_isD9$49, $DiceBot_getGrichText$50, $DiceBot_should_reroll$ques$51, $DiceBot_get_table_by_number$52, $DiceBot_getTableValue$54, $DiceBot_analyzeDiceCommandResultMethod$56, $DiceBot_get_table_by_nDx_extratable$59, $DiceBot_getTableCommandResult$60, $DiceBot_getTableInfoFromExtraTableText$61, $DiceBot_roll_tables$63; - - self.$$prototype.rerollLimitCount = self.$$prototype.d66Type = nil; - - Opal.const_set($nesting[0], 'EMPTY_PREFIXES_PATTERN', /(^|\s)(S)?()(\s|$)/i.$freeze()); - Opal.const_set($nesting[0], 'ID', "DiceBot"); - Opal.const_set($nesting[0], 'NAME', "DiceBot"); - Opal.const_set($nesting[0], 'SORT_KEY', "*たいすほつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', ""); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $setPrefixes$1, $clearPrefixes$2, $inherited$3; - - - self.$attr_reader("prefixes"); - self.$attr_reader("prefixesPattern"); - - Opal.def(self, '$setPrefixes', $setPrefixes$1 = function $$setPrefixes(prefixes) { - var self = this; - - - self.prefixes = $send(prefixes, 'map', [], "freeze".$to_proc()).$freeze(); - self.prefixesPattern = new RegExp("" + "(^|\\s)(S)?(" + (prefixes.$join("|")) + ")(\\s|$)", 'i').$freeze(); - return self; - }, $setPrefixes$1.$$arity = 1); - - Opal.def(self, '$clearPrefixes', $clearPrefixes$2 = function $$clearPrefixes() { - var self = this; - - - self.prefixes = [].$freeze(); - self.prefixesPattern = $$($nesting, 'EMPTY_PREFIXES_PATTERN'); - return self; - }, $clearPrefixes$2.$$arity = 0); - self.$private(); - return (Opal.def(self, '$inherited', $inherited$3 = function $$inherited(subclass) { - var self = this; - - return subclass.$clearPrefixes() - }, $inherited$3.$$arity = 1), nil) && 'inherited'; - })(Opal.get_singleton_class(self), $nesting); - self.$clearPrefixes(); - (Opal.class_variable_set($nesting[0], '@@bcdice', nil)); - Opal.const_set($nesting[0], 'DEFAULT_SEND_MODE', 2); - - Opal.def(self, '$initialize', $DiceBot_initialize$4 = function $$initialize() { - var $a, self = this; - - - self.sendMode = $$($nesting, 'DEFAULT_SEND_MODE'); - self.sortType = 0; - self.sameDiceRerollCount = 0; - self.sameDiceRerollType = 0; - self.d66Type = 1; - self.isPrintMaxDice = false; - self.upperRollThreshold = 0; - self.unlimitedRollDiceType = 0; - self.rerollNumber = 0; - self.defaultSuccessTarget = ""; - self.rerollLimitCount = 10000; - self.fractionType = "omit"; - if ($truthy(($truthy($a = self.$prefixs()['$empty?']()['$!']()) ? self.$class().$prefixes()['$empty?']() : $a))) { - - self.$warn("" + (self.$id()) + ": #prefixs is deprecated. Please use .setPrefixes."); - return self.$class().$setPrefixes(self.$prefixs()); - } else { - return nil - }; - }, $DiceBot_initialize$4.$$arity = 0); - self.$attr_accessor("rerollLimitCount"); - self.$attr_reader("sendMode", "sameDiceRerollCount", "sameDiceRerollType", "d66Type"); - self.$attr_reader("isPrintMaxDice", "upperRollThreshold"); - self.$attr_reader("defaultSuccessTarget", "rerollNumber", "fractionType"); - - Opal.def(self, '$postSet', $DiceBot_postSet$5 = function $$postSet() { - var self = this; - - return nil - }, $DiceBot_postSet$5.$$arity = 0); - - Opal.def(self, '$info', $DiceBot_info$6 = function $$info() { - var self = this; - - return $hash2(["gameType", "name", "sortKey", "prefixs", "info"], {"gameType": self.$id(), "name": self.$name(), "sortKey": self.$sort_key(), "prefixs": self.$class().$prefixes(), "info": self.$help_message()}) - }, $DiceBot_info$6.$$arity = 0); - - Opal.def(self, '$id', $DiceBot_id$7 = function $$id() { - var self = this; - - return $$$(self.$class(), 'ID') - }, $DiceBot_id$7.$$arity = 0); - - Opal.def(self, '$gameType', $DiceBot_gameType$8 = function $$gameType() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameType is deprecated. Please use #id."); - return self.$id(); - }, $DiceBot_gameType$8.$$arity = 0); - - Opal.def(self, '$name', $DiceBot_name$9 = function $$name() { - var self = this; - - return $$$(self.$class(), 'NAME') - }, $DiceBot_name$9.$$arity = 0); - - Opal.def(self, '$gameName', $DiceBot_gameName$10 = function $$gameName() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameName is deprecated. Please use #name."); - return self.$name(); - }, $DiceBot_gameName$10.$$arity = 0); - - Opal.def(self, '$sort_key', $DiceBot_sort_key$11 = function $$sort_key() { - var self = this; - - return $$$(self.$class(), 'SORT_KEY') - }, $DiceBot_sort_key$11.$$arity = 0); - - Opal.def(self, '$help_message', $DiceBot_help_message$12 = function $$help_message() { - var self = this; - - return $$$(self.$class(), 'HELP_MESSAGE') - }, $DiceBot_help_message$12.$$arity = 0); - - Opal.def(self, '$getHelpMessage', $DiceBot_getHelpMessage$13 = function $$getHelpMessage() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #getHelpMessage is deprecated. Please use #help_message."); - return self.$help_message(); - }, $DiceBot_getHelpMessage$13.$$arity = 0); - - Opal.def(self, '$prefixes', $DiceBot_prefixes$14 = function $$prefixes() { - var self = this; - - return self.$class().$prefixes() - }, $DiceBot_prefixes$14.$$arity = 0); - Opal.alias(self, "prefixs", "prefixes"); - - Opal.def(self, '$setSendMode', $DiceBot_setSendMode$15 = function $$setSendMode(m) { - var self = this; - - return (self.sendMode = m) - }, $DiceBot_setSendMode$15.$$arity = 1); - self.$attr_writer("upperRollThreshold"); - - Opal.def(self, '$bcdice=', $DiceBot_bcdice$eq$16 = function(b) { - var self = this; - - return (Opal.class_variable_set($nesting[0], '@@bcdice', b)) - }, $DiceBot_bcdice$eq$16.$$arity = 1); - - Opal.def(self, '$bcdice', $DiceBot_bcdice$17 = function $$bcdice() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a) - }, $DiceBot_bcdice$17.$$arity = 0); - - Opal.def(self, '$rand', $DiceBot_rand$18 = function $$rand(max) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rand(max) - }, $DiceBot_rand$18.$$arity = 1); - - Opal.def(self, '$roll', $DiceBot_roll$19 = function $$roll($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'roll', Opal.to_a(args)); - }, $DiceBot_roll$19.$$arity = -1); - - Opal.def(self, '$marshalSignOfInequality', $DiceBot_marshalSignOfInequality$20 = function $$marshalSignOfInequality($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'marshalSignOfInequality', Opal.to_a(args)); - }, $DiceBot_marshalSignOfInequality$20.$$arity = -1); - - Opal.def(self, '$unlimitedRollDiceType', $DiceBot_unlimitedRollDiceType$21 = function $$unlimitedRollDiceType() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$unlimitedRollDiceType() - }, $DiceBot_unlimitedRollDiceType$21.$$arity = 0); - self.$attr_reader("sortType"); - - Opal.def(self, '$setSortType', $DiceBot_setSortType$22 = function $$setSortType(s) { - var self = this; - - return (self.sortType = s) - }, $DiceBot_setSortType$22.$$arity = 1); - - Opal.def(self, '$d66', $DiceBot_d66$23 = function $$d66($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'getD66Value', Opal.to_a(args)); - }, $DiceBot_d66$23.$$arity = -1); - - Opal.def(self, '$parren_killer', $DiceBot_parren_killer$24 = function $$parren_killer(string) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$parren_killer(string) - }, $DiceBot_parren_killer$24.$$arity = 1); - - Opal.def(self, '$changeText', $DiceBot_changeText$25 = function $$changeText(string) { - var self = this; - - - self.$debug("DiceBot.parren_killer_add called"); - return string; - }, $DiceBot_changeText$25.$$arity = 1); - - Opal.def(self, '$dice_command', $DiceBot_dice_command$26 = function $$dice_command(string, nick_e) { - var $a, $b, self = this, secret_flg = nil, secretMarker = nil, command = nil, output_msg = nil; - - - if ($truthy(self.$isGetOriginalMessage())) { - string = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$getOriginalMessage()}; - self.$debug("dice_command Begin string", string); - secret_flg = false; - if ($truthy(self.$class().$prefixesPattern()['$=~'](string))) { - } else { - - self.$debug("not match in prefixes"); - return ["1", secret_flg]; - }; - secretMarker = $$($nesting, 'Regexp').$last_match(2); - command = $$($nesting, 'Regexp').$last_match(3); - command = self.$removeDiceCommandMessage(command); - self.$debug("dicebot after command", command); - self.$debug("match"); - $b = self.$rollDiceCommandCatched(command), $a = Opal.to_ary($b), (output_msg = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = output_msg['$nil?']()) ? $a : output_msg['$empty?']()))) { - output_msg = "1"}; - secret_flg = ($truthy($a = secret_flg) ? $a : false); - if ($truthy(output_msg['$!=']("1"))) { - output_msg = "" + (nick_e) + ": " + (output_msg)}; - if ($truthy(secretMarker)) { - if ($truthy(output_msg['$!=']("1"))) { - secret_flg = true}}; - return [output_msg, secret_flg]; - }, $DiceBot_dice_command$26.$$arity = 2); - - Opal.def(self, '$isGetOriginalMessage', $DiceBot_isGetOriginalMessage$27 = function $$isGetOriginalMessage() { - var self = this; - - return false - }, $DiceBot_isGetOriginalMessage$27.$$arity = 0); - - Opal.def(self, '$removeDiceCommandMessage', $DiceBot_removeDiceCommandMessage$28 = function $$removeDiceCommandMessage(command) { - var self = this; - - return command.$sub(/[\s ].+/, "") - }, $DiceBot_removeDiceCommandMessage$28.$$arity = 1); - - Opal.def(self, '$rollDiceCommandCatched', $DiceBot_rollDiceCommandCatched$29 = function $$rollDiceCommandCatched(command) { - var $a, $b, self = this, result = nil, secret_flg = nil, e = nil; - - - result = nil; - - try { - - self.$debug("call rollDiceCommand command", command); - $b = self.$rollDiceCommand(command), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - self.$debug("executeCommand exception", e.$to_s(), e.$backtrace().$join("\n")) - } finally { Opal.pop_exception() } - } else { throw $err; } - };; - self.$debug("rollDiceCommand result", result); - return [result, secret_flg]; - }, $DiceBot_rollDiceCommandCatched$29.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $DiceBot_rollDiceCommand$30 = function $$rollDiceCommand(_command) { - var self = this; - - return nil - }, $DiceBot_rollDiceCommand$30.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $DiceBot_dice_command_xRn$31 = function $$dice_command_xRn(_string, _nick_e) { - var self = this; - - return "" - }, $DiceBot_dice_command_xRn$31.$$arity = 2); - - Opal.def(self, '$check_result', $DiceBot_check_result$32 = function $$check_result(total, dice_total, dice_list, sides, cmp_op, target) { - var $a, self = this, ret = nil, $case = nil; - - - ret = (function() {$case = [dice_list.$size(), sides]; - if ([1, 100]['$===']($case)) {return self.$check_1D100(total, dice_total, cmp_op, target)} - else if ([1, 20]['$===']($case)) {return self.$check_1D20(total, dice_total, cmp_op, target)} - else if ([2, 6]['$===']($case)) {return self.$check_2D6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - ret = (function() {$case = sides; - if ((10)['$===']($case)) {return self.$check_nD10(total, dice_total, dice_list, cmp_op, target)} - else if ((6)['$===']($case)) {return self.$check_nD6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - return self.$check_nDx(total, cmp_op, target); - }, $DiceBot_check_result$32.$$arity = 6); - - Opal.def(self, '$check_nDx', $DiceBot_check_nDx$33 = function $$check_nDx(total, cmp_op, target) { - var self = this, success = nil; - - - if ($truthy(target['$is_a?']($$($nesting, 'String')))) { - return " > 失敗"}; - success = (function() {if (cmp_op['$==']("!=")) { - return total['$!='](target) - } else { - return total.$send(cmp_op, target) - }; return nil; })(); - if ($truthy(success)) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $DiceBot_check_nDx$33.$$arity = 3); - - Opal.def(self, '$check_1D100', $DiceBot_check_1D100$34 = function $$check_1D100(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D100$34.$$arity = 4); - - Opal.def(self, '$check_1D20', $DiceBot_check_1D20$35 = function $$check_1D20(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D20$35.$$arity = 4); - - Opal.def(self, '$check_nD10', $DiceBot_check_nD10$36 = function $$check_nD10(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD10$36.$$arity = 5); - - Opal.def(self, '$check_2D6', $DiceBot_check_2D6$37 = function $$check_2D6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_2D6$37.$$arity = 5); - - Opal.def(self, '$check_nD6', $DiceBot_check_nD6$38 = function $$check_nD6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD6$38.$$arity = 5); - - Opal.def(self, '$get_table_by_2d6', $DiceBot_get_table_by_2d6$39 = function $$get_table_by_2d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 2) - }, $DiceBot_get_table_by_2d6$39.$$arity = 1); - - Opal.def(self, '$get_table_by_1d6', $DiceBot_get_table_by_1d6$40 = function $$get_table_by_1d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 1) - }, $DiceBot_get_table_by_1d6$40.$$arity = 1); - - Opal.def(self, '$get_table_by_nD6', $DiceBot_get_table_by_nD6$41 = function $$get_table_by_nD6(table, count) { - var self = this; - - return self.$get_table_by_nDx(table, count, 6) - }, $DiceBot_get_table_by_nD6$41.$$arity = 2); - - Opal.def(self, '$get_table_by_nDx', $DiceBot_get_table_by_nDx$42 = function $$get_table_by_nDx(table, count, diceType) { - var $a, $b, self = this, num = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(num, count))); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_nDx$42.$$arity = 3); - - Opal.def(self, '$get_table_by_1d3', $DiceBot_get_table_by_1d3$43 = function $$get_table_by_1d3(table) { - var $a, $b, self = this, count = nil, num = nil, index = nil, text = nil; - - - self.$debug("get_table_by_1d3"); - count = 1; - $b = self.$roll(count, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - self.$debug("num", num); - index = $rb_divide($rb_minus(num, 1), 2); - self.$debug("index", index); - text = table['$[]'](index); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_1d3$43.$$arity = 1); - - Opal.def(self, '$getD66', $DiceBot_getD66$44 = function $$getD66(isSwap) { - var self = this; - - return self.$bcdice().$getD66(isSwap) - }, $DiceBot_getD66$44.$$arity = 1); - - Opal.def(self, '$get_table_by_d66_swap', $DiceBot_get_table_by_d66_swap$45 = function $$get_table_by_d66_swap(table) { - var self = this, isSwap = nil, number = nil; - - - isSwap = true; - number = self.$bcdice().$getD66(isSwap); - return [self.$get_table_by_number(number, table), number]; - }, $DiceBot_get_table_by_d66_swap$45.$$arity = 1); - - Opal.def(self, '$get_table_by_d66', $DiceBot_get_table_by_d66$46 = function $$get_table_by_d66(table) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, num = nil, text = nil, indexText = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - num = $rb_plus($rb_times($rb_minus(dice1, 1), 6), $rb_minus(dice2, 1)); - text = table['$[]'](num); - indexText = "" + (dice1) + (dice2); - if ($truthy(text['$nil?']())) { - return ["1", indexText]}; - return [text, indexText]; - }, $DiceBot_get_table_by_d66$46.$$arity = 1); - - Opal.def(self, '$getDiceRolledAdditionalText', $DiceBot_getDiceRolledAdditionalText$47 = function $$getDiceRolledAdditionalText(_n1, _n_max, _dice_max) { - var self = this; - - return "" - }, $DiceBot_getDiceRolledAdditionalText$47.$$arity = 3); - - Opal.def(self, '$getDiceRevision', $DiceBot_getDiceRevision$48 = function $$getDiceRevision(_n_max, _dice_max, _total_n) { - var self = this; - - return ["", 0] - }, $DiceBot_getDiceRevision$48.$$arity = 3); - - Opal.def(self, '$isD9', $DiceBot_isD9$49 = function $$isD9() { - var self = this; - - return false - }, $DiceBot_isD9$49.$$arity = 0); - - Opal.def(self, '$getGrichText', $DiceBot_getGrichText$50 = function $$getGrichText(_numberSpot1, _dice_cnt_total, _suc) { - var self = this; - - return "" - }, $DiceBot_getGrichText$50.$$arity = 3); - - Opal.def(self, '$should_reroll?', $DiceBot_should_reroll$ques$51 = function(loop_count) { - var $a, self = this; - - return ($truthy($a = $rb_lt(loop_count, self.rerollLimitCount)) ? $a : self.rerollLimitCount['$=='](0)) - }, $DiceBot_should_reroll$ques$51.$$arity = 1); - - Opal.def(self, '$get_table_by_number', $DiceBot_get_table_by_number$52 = function $$get_table_by_number(index, table, default$) {try { - - var $$53, self = this; - - - - if (default$ == null) { - default$ = "1"; - }; - $send(table, 'each', [], ($$53 = function(item){var self = $$53.$$s || this, number = nil; - - - - if (item == null) { - item = nil; - }; - number = item['$[]'](0); - if ($truthy($rb_ge(number, index))) { - Opal.ret(self.$getTableValue(item['$[]'](1))) - } else { - return nil - };}, $$53.$$s = self, $$53.$$arity = 1, $$53)); - return self.$getTableValue(default$); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_get_table_by_number$52.$$arity = -3); - - Opal.def(self, '$getTableValue', $DiceBot_getTableValue$54 = function $$getTableValue(data) {try { - - var $$55, self = this, lambdaBlock = nil; - - - if ($truthy(data['$kind_of?']($$($nesting, 'Proc')))) { - - lambdaBlock = $send(self, 'lambda', [], ($$55 = function(){var self = $$55.$$s || this; - - Opal.ret(data.$call())}, $$55.$$s = self, $$55.$$arity = 0, $$55)); - return lambdaBlock.$call();}; - return data; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_getTableValue$54.$$arity = 1); - - Opal.def(self, '$analyzeDiceCommandResultMethod', $DiceBot_analyzeDiceCommandResultMethod$56 = function $$analyzeDiceCommandResultMethod(command) {try { - - var $$57, $$58, self = this, methodList = nil; - - - methodList = $send(self.$public_methods(), 'select', [], ($$57 = function(method){var self = $$57.$$s || this; - - - - if (method == null) { - method = nil; - }; - return /^get.+DiceCommandResult$/['$==='](method.$to_s());}, $$57.$$s = self, $$57.$$arity = 1, $$57)); - $send(methodList, 'each', [], ($$58 = function(method){var self = $$58.$$s || this, result = nil; - - - - if (method == null) { - method = nil; - }; - result = self.$send(method, command); - if ($truthy(result['$nil?']())) { - return nil - } else { - Opal.ret(result) - };}, $$58.$$s = self, $$58.$$arity = 1, $$58)); - return nil; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_analyzeDiceCommandResultMethod$56.$$arity = 1); - - Opal.def(self, '$get_table_by_nDx_extratable', $DiceBot_get_table_by_nDx_extratable$59 = function $$get_table_by_nDx_extratable(table, count, diceType) { - var $a, $b, self = this, number = nil, diceText = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(number, count))); - return [text, number, diceText]; - }, $DiceBot_get_table_by_nDx_extratable$59.$$arity = 3); - - Opal.def(self, '$getTableCommandResult', $DiceBot_getTableCommandResult$60 = function $$getTableCommandResult(command, tables, isPrintDiceText) { - var $a, $b, $c, $d, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, count = nil, diceType = nil, limit = nil, item = nil, value = nil, output = nil, diceText = nil, text = nil, number = nil; - - - - if (isPrintDiceText == null) { - isPrintDiceText = true; - }; - info = tables['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type").$upcase(); - table = info['$[]']("table"); - if ($truthy(($truthy($a = type['$==']("D66")) ? self.d66Type['$=='](2) : $a))) { - type = "D66S"}; - $b = (function() {$case = type; - if (/(\d+)D(\d+)/['$===']($case)) { - count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diceType = $$($nesting, 'Regexp').$last_match(2).$to_i(); - limit = $rb_minus($rb_times(diceType, count), $rb_minus(count, 1)); - table = self.$getTableInfoFromExtraTableText(table, limit); - return self.$get_table_by_nDx_extratable(table, count, diceType);} - else if ("D66"['$===']($case) || "D66N"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 36); - $d = self.$get_table_by_d66(table), $c = Opal.to_ary($d), (item = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - output = item['$[]'](1); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else if ("D66S"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 21); - $d = self.$get_table_by_d66_swap(table), $c = Opal.to_ary($d), (output = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else {return self.$raise("" + "invalid dice Type " + (command))}})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), (diceText = ($a[2] == null ? nil : $a[2])), $b; - text = text.$gsub("\\n", "\n"); - text = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rollTableMessageDiceText(text); - if ($truthy(text['$nil?']())) { - return nil}; - if ($truthy(($truthy($a = isPrintDiceText) ? diceText['$nil?']()['$!']() : $a))) { - return "" + (name) + "(" + (number) + "[" + (diceText) + "]) > " + (text)}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $DiceBot_getTableCommandResult$60.$$arity = -3); - - Opal.def(self, '$getTableInfoFromExtraTableText', $DiceBot_getTableInfoFromExtraTableText$61 = function $$getTableInfoFromExtraTableText(text, count) { - var $$62, self = this, newTable = nil; - - - - if (count == null) { - count = nil; - }; - if ($truthy(text['$is_a?']($$($nesting, 'String')))) { - text = text.$split(/\n/)}; - newTable = $send(text, 'map', [], ($$62 = function(item){var self = $$62.$$s || this, $a; - - - - if (item == null) { - item = nil; - }; - if ($truthy(($truthy($a = item['$is_a?']($$($nesting, 'String'))) ? /^(\d+):(.*)/['$==='](item) : $a))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2)] - } else { - return item - };}, $$62.$$s = self, $$62.$$arity = 1, $$62)); - if ($truthy(count['$nil?']())) { - } else if ($truthy(newTable.$size()['$!='](count))) { - self.$raise("" + "invalid table size:" + (newTable.$size()) + "\n" + (newTable.$inspect()))}; - return newTable; - }, $DiceBot_getTableInfoFromExtraTableText$61.$$arity = -2); - return (Opal.def(self, '$roll_tables', $DiceBot_roll_tables$63 = function $$roll_tables(command, tables) { - var self = this, table = nil; - - - table = tables['$[]'](command.$upcase()); - if ($truthy(table)) { - } else { - return nil - }; - return table.$roll(self.$bcdice()).$to_s(); - }, $DiceBot_roll_tables$63.$$arity = 2), nil) && 'roll_tables'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/SRS"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$include', '$attr_reader', '$map', '$to_proc', '$join', '$escape', '$prepare_help_msg_for_aliases_for_srs_roll', '$concatenate_help_messages', '$private', '$clear_aliases_for_srs_roll', '$extend', '$setPrefixes', '$help_message', '$class', '$freeze', '$new', '$format_modifier', '$modifier', '$target_value', '$critical_value', '$fumble_value', '$replace_alias_for_srs_roll_with_2d6', '$parse', '$execute_srs_roll', '$===', '$aliases_re_for_srs_roll_with_target_value', '$last_match', '$aliases_re_for_srs_roll_without_target_value', '$parse_srs_roll_with_target_value', '$parse_srs_roll_without_target_value', '$eval', '$to_sym', '$eval_modifier', '$[]', '$to_i', '$roll', '$&', '$+', '$compare_result', '$compact', '$>=', '$<=']); - - self.$require("diceBot/DiceBot"); - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SRS'); - - var $nesting = [self].concat($parent_nesting), $SRS_initialize$12, $SRS_help_message$13, $SRS$14, $SRS_rollDiceCommand$16, $SRS_replace_alias_for_srs_roll_with_2d6$17, $SRS_parse$18, $SRS_eval_modifier$19, $SRS_parse_srs_roll_with_target_value$20, $SRS_parse_srs_roll_without_target_value$21, $SRS_execute_srs_roll$22, $SRS_compare_result$23; - - self.$$prototype.fractionType = self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "SRS"); - Opal.const_set($nesting[0], 'NAME', "スタンダードRPGシステム"); - Opal.const_set($nesting[0], 'SORT_KEY', "すたんたあとRPGしすてむ"); - self.$include($$($nesting, 'ModifierFormatter')); - Opal.const_set($nesting[0], 'HELP_MESSAGE_1', "" + "・判定\n" + " ・通常判定:2D6+m>=t[c,f]\n" + "  修正値m、目標値t、クリティカル値c、ファンブル値fで判定ロールを行います。\n" + "  修正値、クリティカル値、ファンブル値は省略可能です([]ごと省略可)。\n" + "  クリティカル値、ファンブル値の既定値は、それぞれ12、2です。\n" + "  自動成功、自動失敗、成功、失敗を自動表示します。\n" + "\n" + "  例) 2d6>=10     修正値0、目標値10で判定\n" + "  例) 2d6+2>=10    修正値+2、目標値10で判定\n" + "  例) 2d6+2>=10[11]  ↑をクリティカル値11で判定\n" + "  例) 2d6+2>=10[12,4] ↑をクリティカル値12、ファンブル値4で判定\n"); - Opal.const_set($nesting[0], 'HELP_MESSAGE_2', "" + " ・クリティカルおよびファンブルのみの判定:2D6+m[c,f]\n" + "  目標値を指定せず、修正値m、クリティカル値c、ファンブル値fで判定ロールを行います。\n" + "  修正値、クリティカル値、ファンブル値は省略可能です([]は省略不可)。\n" + "  自動成功、自動失敗を自動表示します。\n" + "\n" + "  例) 2d6[]    修正値0、クリティカル値12、ファンブル値2で判定\n" + "  例) 2d6+2[11]  修正値+2、クリティカル値11、ファンブル値2で判定\n" + "  例) 2d6+2[12,4] 修正値+2、クリティカル値12、ファンブル値4で判定\n"); - Opal.const_set($nesting[0], 'HELP_MESSAGE_3', "・D66ダイスあり(入れ替えなし)\n"); - Opal.const_set($nesting[0], 'DEFAULT_HELP_MESSAGE', "" + ($$($nesting, 'HELP_MESSAGE_1')) + "\n" + ($$($nesting, 'HELP_MESSAGE_2')) + "\n" + ($$($nesting, 'HELP_MESSAGE_3'))); - (function($base, $parent_nesting) { - var self = $module($base, 'ClassMethods'); - - var $nesting = [self].concat($parent_nesting), $ClassMethods_set_aliases_for_srs_roll$1, $ClassMethods_clear_aliases_for_srs_roll$3, $ClassMethods_prepare_help_msg_for_aliases_for_srs_roll$4, $ClassMethods_concatenate_help_messages$7; - - - self.$attr_reader("help_message"); - self.$attr_reader("aliases_re_for_srs_roll_with_target_value"); - self.$attr_reader("aliases_re_for_srs_roll_without_target_value"); - - Opal.def(self, '$set_aliases_for_srs_roll', $ClassMethods_set_aliases_for_srs_roll$1 = function $$set_aliases_for_srs_roll($a) { - var $post_args, aliases, $$2, self = this, aliases_upcase = nil, aliases_part = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - aliases = $post_args;; - aliases_upcase = $send(aliases, 'map', [], "upcase".$to_proc()); - aliases_part = $send(aliases_upcase, 'map', [], ($$2 = function(a){var self = $$2.$$s || this; - - - - if (a == null) { - a = nil; - }; - return $$($nesting, 'Regexp').$escape(a);}, $$2.$$s = self, $$2.$$arity = 1, $$2)).$join("|"); - self.aliases_re_for_srs_roll_with_target_value = new RegExp("" + "^(?:" + (aliases_part) + ")((?:[-+][-+\\d]+)?>=\\d+(?:\\[\\d*(?:,\\d+)?\\])?)$"); - self.aliases_re_for_srs_roll_without_target_value = new RegExp("" + "^(?:" + (aliases_part) + ")([-+][-+\\d]+)?(\\[\\d*(?:,\\d+)?\\])?$"); - self.$prepare_help_msg_for_aliases_for_srs_roll(aliases_upcase); - self.help_message = self.$concatenate_help_messages(); - return self; - }, $ClassMethods_set_aliases_for_srs_roll$1.$$arity = -1); - - Opal.def(self, '$clear_aliases_for_srs_roll', $ClassMethods_clear_aliases_for_srs_roll$3 = function $$clear_aliases_for_srs_roll() { - var self = this; - - - self.aliases_re_for_srs_roll_with_target_value = nil; - self.aliases_re_for_srs_roll_without_target_value = nil; - self.help_message = $$$($$($nesting, 'SRS'), 'DEFAULT_HELP_MESSAGE'); - return self; - }, $ClassMethods_clear_aliases_for_srs_roll$3.$$arity = 0); - self.$private(); - - Opal.def(self, '$prepare_help_msg_for_aliases_for_srs_roll', $ClassMethods_prepare_help_msg_for_aliases_for_srs_roll$4 = function $$prepare_help_msg_for_aliases_for_srs_roll(aliases) { - var $$5, $$6, self = this; - - - self.help_msg_for_aliases_for_srs_roll_with_target_value = $send(aliases, 'map', [], ($$5 = function(a){var self = $$5.$$s || this; - - - - if (a == null) { - a = nil; - }; - return "" + "  例) " + (a) + "+2>=10     2d6+2>=10と同じ(" + (a) + "が2D6のショートカットコマンド)\n";}, $$5.$$s = self, $$5.$$arity = 1, $$5)).$join(); - self.help_msg_for_aliases_for_srs_roll_without_target_value = $send(aliases, 'map', [], ($$6 = function(a){var self = $$6.$$s || this; - - - - if (a == null) { - a = nil; - }; - return "" + ("" + "  例) " + (a) + "      2d6[]と同じ(" + (a) + "が2D6のショートカットコマンド)\n") + ("" + "  例) " + (a) + "+2[12,4]  2d6+2[12,4]と同じ(" + (a) + "が2D6のショートカットコマンド)\n");}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$join(); - return self; - }, $ClassMethods_prepare_help_msg_for_aliases_for_srs_roll$4.$$arity = 1); - - Opal.def(self, '$concatenate_help_messages', $ClassMethods_concatenate_help_messages$7 = function $$concatenate_help_messages() { - var self = this; - if (self.help_msg_for_aliases_for_srs_roll_with_target_value == null) self.help_msg_for_aliases_for_srs_roll_with_target_value = nil; - if (self.help_msg_for_aliases_for_srs_roll_without_target_value == null) self.help_msg_for_aliases_for_srs_roll_without_target_value = nil; - - return "" + ("" + ($$$($$($nesting, 'SRS'), 'HELP_MESSAGE_1'))) + ("" + (self.help_msg_for_aliases_for_srs_roll_with_target_value) + "\n") + ("" + ($$$($$($nesting, 'SRS'), 'HELP_MESSAGE_2'))) + ("" + (self.help_msg_for_aliases_for_srs_roll_without_target_value) + "\n") + ("" + ($$$($$($nesting, 'SRS'), 'HELP_MESSAGE_3'))) - }, $ClassMethods_concatenate_help_messages$7.$$arity = 0); - })($nesting[0], $nesting); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $inherited$8, $help_message$9, $aliases_re_for_srs_roll_with_target_value$10, $aliases_re_for_srs_roll_without_target_value$11; - - - - Opal.def(self, '$inherited', $inherited$8 = function $$inherited(subclass) { - var self = this; - - return subclass.$extend($$($nesting, 'ClassMethods')).$clear_aliases_for_srs_roll() - }, $inherited$8.$$arity = 1); - - Opal.def(self, '$help_message', $help_message$9 = function $$help_message() { - var self = this; - - return $$($nesting, 'DEFAULT_HELP_MESSAGE') - }, $help_message$9.$$arity = 0); - - Opal.def(self, '$aliases_re_for_srs_roll_with_target_value', $aliases_re_for_srs_roll_with_target_value$10 = function $$aliases_re_for_srs_roll_with_target_value() { - var self = this; - - return nil - }, $aliases_re_for_srs_roll_with_target_value$10.$$arity = 0); - return (Opal.def(self, '$aliases_re_for_srs_roll_without_target_value', $aliases_re_for_srs_roll_without_target_value$11 = function $$aliases_re_for_srs_roll_without_target_value() { - var self = this; - - return nil - }, $aliases_re_for_srs_roll_without_target_value$11.$$arity = 0), nil) && 'aliases_re_for_srs_roll_without_target_value'; - })(Opal.get_singleton_class(self), $nesting); - self.$setPrefixes(["2D6.*"]); - - Opal.def(self, '$initialize', $SRS_initialize$12 = function $$initialize() { - var $iter = $SRS_initialize$12.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $SRS_initialize$12.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $SRS_initialize$12, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 1); - }, $SRS_initialize$12.$$arity = 0); - - Opal.def(self, '$help_message', $SRS_help_message$13 = function $$help_message() { - var self = this; - - return self.$class().$help_message() - }, $SRS_help_message$13.$$arity = 0); - Opal.const_set($nesting[0], 'DEFAULT_CRITICAL_VALUE', 12); - Opal.const_set($nesting[0], 'DEFAULT_FUMBLE_VALUE', 2); - Opal.const_set($nesting[0], 'SRS_ROLL_WITH_TARGET_VALUE_RE', /^2D6([-+][-+\d]+)?>=(\d+)(?:\[(\d+)?(?:,(\d+))?\])?$/.$freeze()); - Opal.const_set($nesting[0], 'SRS_ROLL_WITHOUT_TARGET_VALUE_RE', /^2D6([-+][-+\d]+)?\[(\d+)?(?:,(\d+))?\]$/.$freeze()); - Opal.const_set($nesting[0], 'SRS_ROLL_DEFAULT_THRESHOLDS', "" + "[" + ($$($nesting, 'DEFAULT_CRITICAL_VALUE')) + "," + ($$($nesting, 'DEFAULT_FUMBLE_VALUE')) + "]"); - Opal.const_set($nesting[0], 'SRSRollNode', $send($$($nesting, 'Struct'), 'new', ["modifier", "critical_value", "fumble_value", "target_value"], ($SRS$14 = function(){var self = $SRS$14.$$s || this, $to_s$15; - - - self.$include($$($nesting, 'ModifierFormatter')); - return (Opal.def(self, '$to_s', $to_s$15 = function $$to_s() { - var self = this, lhs = nil, expression = nil; - - - lhs = "" + "2D6" + (self.$format_modifier(self.$modifier())); - expression = (function() {if ($truthy(self.$target_value())) { - return "" + (lhs) + ">=" + (self.$target_value()) - } else { - return lhs - }; return nil; })(); - return "" + (expression) + "[" + (self.$critical_value()) + "," + (self.$fumble_value()) + "]"; - }, $to_s$15.$$arity = 0), nil) && 'to_s';}, $SRS$14.$$s = self, $SRS$14.$$arity = 0, $SRS$14))); - - Opal.def(self, '$rollDiceCommand', $SRS_rollDiceCommand$16 = function $$rollDiceCommand(command) { - var self = this, alias_replaced_with_2d6 = nil, node = nil; - - - alias_replaced_with_2d6 = self.$replace_alias_for_srs_roll_with_2d6(command); - if ($truthy((node = self.$parse(alias_replaced_with_2d6)))) { - return self.$execute_srs_roll(node)}; - return nil; - }, $SRS_rollDiceCommand$16.$$arity = 1); - self.$private(); - - Opal.def(self, '$replace_alias_for_srs_roll_with_2d6', $SRS_replace_alias_for_srs_roll_with_2d6$17 = function $$replace_alias_for_srs_roll_with_2d6(input) { - var $a, self = this, $case = nil, modifier = nil, thresholds = nil; - - return (function() {$case = input; - if (self.$class().$aliases_re_for_srs_roll_with_target_value()['$===']($case)) {return "" + "2D6" + ($$($nesting, 'Regexp').$last_match(1))} - else if (self.$class().$aliases_re_for_srs_roll_without_target_value()['$===']($case)) { - modifier = $$($nesting, 'Regexp').$last_match(1); - thresholds = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : $$($nesting, 'SRS_ROLL_DEFAULT_THRESHOLDS')); - return "" + "2D6" + (modifier) + (thresholds);} - else {return input}})() - }, $SRS_replace_alias_for_srs_roll_with_2d6$17.$$arity = 1); - - Opal.def(self, '$parse', $SRS_parse$18 = function $$parse(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if ($$($nesting, 'SRS_ROLL_WITH_TARGET_VALUE_RE')['$===']($case)) {return self.$parse_srs_roll_with_target_value($$($nesting, 'Regexp').$last_match())} - else if ($$($nesting, 'SRS_ROLL_WITHOUT_TARGET_VALUE_RE')['$===']($case)) {return self.$parse_srs_roll_without_target_value($$($nesting, 'Regexp').$last_match())} - else {return nil}})() - }, $SRS_parse$18.$$arity = 1); - - Opal.def(self, '$eval_modifier', $SRS_eval_modifier$19 = function $$eval_modifier(modifier_str) { - var self = this; - - - if ($truthy(modifier_str)) { - } else { - return 0 - }; - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(modifier_str, self.fractionType.$to_sym()); - }, $SRS_eval_modifier$19.$$arity = 1); - - Opal.def(self, '$parse_srs_roll_with_target_value', $SRS_parse_srs_roll_with_target_value$20 = function $$parse_srs_roll_with_target_value(m) { - var $a, $b, self = this, modifier = nil, target_value = nil, critical_value = nil, fumble_value = nil; - - - modifier = self.$eval_modifier(m['$[]'](1)); - target_value = m['$[]'](2).$to_i(); - critical_value = ($truthy($a = ($truthy($b = m['$[]'](3)) ? m['$[]'](3).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_CRITICAL_VALUE')); - fumble_value = ($truthy($a = ($truthy($b = m['$[]'](4)) ? m['$[]'](4).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_FUMBLE_VALUE')); - return $$($nesting, 'SRSRollNode').$new(modifier, critical_value, fumble_value, target_value); - }, $SRS_parse_srs_roll_with_target_value$20.$$arity = 1); - - Opal.def(self, '$parse_srs_roll_without_target_value', $SRS_parse_srs_roll_without_target_value$21 = function $$parse_srs_roll_without_target_value(m) { - var $a, $b, self = this, modifier = nil, critical_value = nil, fumble_value = nil; - - - modifier = self.$eval_modifier(m['$[]'](1)); - critical_value = ($truthy($a = ($truthy($b = m['$[]'](2)) ? m['$[]'](2).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_CRITICAL_VALUE')); - fumble_value = ($truthy($a = ($truthy($b = m['$[]'](3)) ? m['$[]'](3).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_FUMBLE_VALUE')); - return $$($nesting, 'SRSRollNode').$new(modifier, critical_value, fumble_value, nil); - }, $SRS_parse_srs_roll_without_target_value$21.$$arity = 1); - - Opal.def(self, '$execute_srs_roll', $SRS_execute_srs_roll$22 = function $$execute_srs_roll(srs_roll) { - var $a, $b, self = this, sum = nil, dice_str = nil, modified_sum = nil, parts = nil; - - - $b = self.$roll(2, 6, self.sortType['$&'](1)), $a = Opal.to_ary($b), (sum = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - modified_sum = $rb_plus(sum, srs_roll.$modifier()); - parts = ["" + "(" + (srs_roll) + ")", "" + (sum) + "[" + (dice_str) + "]" + (self.$format_modifier(srs_roll.$modifier())), modified_sum, self.$compare_result(srs_roll, sum, modified_sum)]; - return parts.$compact().$join(" > "); - }, $SRS_execute_srs_roll$22.$$arity = 1); - return (Opal.def(self, '$compare_result', $SRS_compare_result$23 = function $$compare_result(srs_roll, sum, modified_sum) { - var self = this; - - - if ($truthy($rb_ge(sum, srs_roll.$critical_value()))) { - return "自動成功"}; - if ($truthy($rb_le(sum, srs_roll.$fumble_value()))) { - return "自動失敗"}; - if ($truthy(srs_roll.$target_value())) { - return (function() {if ($truthy($rb_ge(modified_sum, srs_roll.$target_value()))) { - return "成功" - } else { - return "失敗" - }; return nil; })()}; - return nil; - }, $SRS_compare_result$23.$$arity = 3), nil) && 'compare_result'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; - - Opal.add_stubs(['$require', '$setPrefixes', '$set_aliases_for_srs_roll']); - - self.$require("diceBot/SRS"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'MetallicGuardian'); - - var $nesting = [self].concat($parent_nesting); - - - self.$setPrefixes(["2D6.*", "MG.*"]); - self.$set_aliases_for_srs_roll("MG"); - Opal.const_set($nesting[0], 'NAME', "メタリックガーディアンRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "めたりつくかあていあんRPG"); - return Opal.const_set($nesting[0], 'ID', "MetallicGuardian"); - })($nesting[0], $$($nesting, 'SRS'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/MonotoneMuseum.js b/src/assets/dicebot/MonotoneMuseum.js deleted file mode 100644 index db49fa3a0..000000000 --- a/src/assets/dicebot/MonotoneMuseum.js +++ /dev/null @@ -1,274 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$freeze', '$match', '$raise', '$to_i', '$[]', '$roll', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Table'); - - var $nesting = [self].concat($parent_nesting), $Table_initialize$1, $Table_roll$2; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $Table_initialize$1 = function $$initialize(name, type, items) { - var self = this, m = nil; - - - self.name = name; - self.items = items.$freeze(); - m = /(\d+)D(\d+)/i.$match(type); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "Unexpected table type: " + (type)) - }; - self.times = m['$[]'](1).$to_i(); - return (self.sides = m['$[]'](2).$to_i()); - }, $Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $Table_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, value = nil, index = nil; - - - $b = bcdice.$roll(self.times, self.sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(value, self.times); - return "" + (self.name) + "(" + (value) + ") > " + (self.items['$[]'](index)); - }, $Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/d66_range_table"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send; - - Opal.add_stubs(['$freeze', '$roll', '$+', '$*', '$find', '$include?', '$[]']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'D66RangeTable'); - - var $nesting = [self].concat($parent_nesting), $D66RangeTable_initialize$1, $D66RangeTable_roll$2; - - self.$$prototype.items = self.$$prototype.name = nil; - - - Opal.def(self, '$initialize', $D66RangeTable_initialize$1 = function $$initialize(name, items) { - var self = this; - - - self.name = name; - return (self.items = items.$freeze()); - }, $D66RangeTable_initialize$1.$$arity = 2); - return (Opal.def(self, '$roll', $D66RangeTable_roll$2 = function $$roll(bcdice) { - var $a, $b, $$3, self = this, dice1 = nil, dice2 = nil, key = nil, chosen = nil; - - - $b = bcdice.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = bcdice.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - key = $rb_plus($rb_times(dice1, 10), dice2); - chosen = $send(self.items, 'find', [], ($$3 = function(row){var self = $$3.$$s || this; - - - - if (row == null) { - row = nil; - }; - return row['$[]'](0)['$include?'](key);}, $$3.$$s = self, $$3.$$arity = 1, $$3)); - return "" + (self.name) + "(" + (key) + ") > " + (chosen['$[]'](1)); - }, $D66RangeTable_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/d66_grid_table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; - - Opal.add_stubs(['$freeze', '$roll', '$-', '$[]']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'D66GridTable'); - - var $nesting = [self].concat($parent_nesting), $D66GridTable_initialize$1, $D66GridTable_roll$2; - - self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $D66GridTable_initialize$1 = function $$initialize(name, items) { - var self = this; - - - self.name = name; - return (self.items = items.$freeze()); - }, $D66GridTable_initialize$1.$$arity = 2); - return (Opal.def(self, '$roll', $D66GridTable_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, index1 = nil, index2 = nil; - - - $b = bcdice.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = bcdice.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - index1 = $rb_minus(dice1, 1); - index2 = $rb_minus(dice2, 1); - return "" + (self.name) + "(" + (dice1) + (dice2) + ") > " + (self.items['$[]'](index1)['$[]'](index2)); - }, $D66GridTable_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/format"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$module_function', '$===', '$to_s', '$==', '$>']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Format'); - - var $nesting = [self].concat($parent_nesting), $Format_comparison_operator$1, $Format_modifier$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Format_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if ("=="['$===']($case)) {return "="} - else if ("!="['$===']($case)) {return "<>"} - else if ($$($nesting, 'Symbol')['$===']($case)) {return op.$to_s()} - else { return nil }})() - }, $Format_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$modifier', $Format_modifier$2 = function $$modifier(number) { - var self = this; - - if (number['$=='](0)) { - return "" - } else if ($truthy($rb_gt(number, 0))) { - return "" + "+" + (number) - } else { - return number.$to_s() - } - }, $Format_modifier$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$check_roll', '$roll_tables', '$private', '$match', '$to_i', '$[]', '$eval', '$new', '$roll', '$+', '$<=', '$>=', '$modifier', '$to_s', '$join', '$!=', '$size', '$raise', '$zip', '$freeze', '$setPrefixes', '$keys']); - - self.$require("utils/table"); - self.$require("utils/d66_range_table"); - self.$require("utils/d66_grid_table"); - self.$require("utils/format"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'MonotoneMuseum'); - - var $nesting = [self].concat($parent_nesting), $MonotoneMuseum_initialize$1, $MonotoneMuseum_rollDiceCommand$2, $MonotoneMuseum_check_roll$3; - - self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "MonotoneMuseum"); - Opal.const_set($nesting[0], 'NAME', "モノトーンミュージアムRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "ものとおんみゆうしあむRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + " ・通常判定      2D6+m>=t[c,f]\n" + "  修正値m,目標値t,クリティカル値c,ファンブル値fで判定ロールを行います。\n" + "  クリティカル値、ファンブル値は省略可能です。([]ごと省略できます)\n" + "  自動成功、自動失敗、成功、失敗を自動表示します。\n" + "・各種表\n" + " ・感情表 ET/感情表 2.0 ET2\n" + " ・兆候表 OT/兆候表ver2.0 OT2\n" + " ・歪み表 DT/歪み表ver2.0 DT2/歪み表(野外) DTO/歪み表(海) DTS/歪み表(館・城) DTM\n" + " ・世界歪曲表 WDT/世界歪曲表2.0 WDT2\n" + " ・永劫消失表 EDT\n" + "・D66ダイスあり\n"); - - Opal.def(self, '$initialize', $MonotoneMuseum_initialize$1 = function $$initialize() { - var $iter = $MonotoneMuseum_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $MonotoneMuseum_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $MonotoneMuseum_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.d66Type = 1; - return (self.sortType = 1); - }, $MonotoneMuseum_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $MonotoneMuseum_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, ret = nil; - - - if ($truthy((ret = self.$check_roll(command)))) { - return ret}; - return self.$roll_tables(command, $$($nesting, 'TABLES')); - }, $MonotoneMuseum_rollDiceCommand$2.$$arity = 1); - self.$private(); - - Opal.def(self, '$check_roll', $MonotoneMuseum_check_roll$3 = function $$check_roll(command) { - var $a, $b, $c, self = this, m = nil, dice_count = nil, modify_number = nil, target = nil, critical = nil, fumble = nil, dice_value = nil, dice_str = nil, total = nil, result = nil, sequence = nil; - - - m = /^(\d+)D6([\+\-\d]*)>=(\d+)(\[(\d+)?(,(\d+))?\])?$/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - dice_count = m['$[]'](1).$to_i(); - modify_number = (function() {if ($truthy(m['$[]'](2))) { - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(m['$[]'](2)) - } else { - return 0 - }; return nil; })(); - target = m['$[]'](3).$to_i(); - critical = ($truthy($a = m['$[]'](5)) ? $a : 12).$to_i(); - fumble = ($truthy($a = m['$[]'](7)) ? $a : 2).$to_i(); - $b = self.$roll(dice_count, 6, ($truthy($c = self.sortType) ? 1 : $c)), $a = Opal.to_ary($b), (dice_value = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - total = $rb_plus(dice_value, modify_number); - result = (function() {if ($truthy($rb_le(dice_value, fumble))) { - return "自動失敗" - } else if ($truthy($rb_ge(dice_value, critical))) { - return "自動成功" - } else if ($truthy($rb_ge(total, target))) { - return "成功" - } else { - return "失敗" - }; return nil; })(); - sequence = ["" + "(" + (command) + ")", "" + (dice_value) + "[" + (dice_str) + "]" + ($$($nesting, 'Format').$modifier(modify_number)), total.$to_s(), result]; - return sequence.$join(" > "); - }, $MonotoneMuseum_check_roll$3.$$arity = 1); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'MMTable'); - - var $nesting = [self].concat($parent_nesting), $MMTable_initialize$4; - - - - Opal.def(self, '$initialize', $MMTable_initialize$4 = function $$initialize(name, items) { - var $iter = $MMTable_initialize$4.$$p, $yield = $iter || nil, self = this, items_with_range = nil; - - if ($iter) $MMTable_initialize$4.$$p = null; - - if ($truthy(items.$size()['$!=']($$($nesting, 'RANGE').$size()))) { - self.$raise($$($nesting, 'UnexpectedTableSize').$new(name, items.$size()))}; - items_with_range = $$($nesting, 'RANGE').$zip(items); - return $send(self, Opal.find_super_dispatcher(self, 'initialize', $MMTable_initialize$4, false), [name, items_with_range], null); - }, $MMTable_initialize$4.$$arity = 2); - return Opal.const_set($nesting[0], 'RANGE', [$range(11, 12, false), $range(13, 14, false), $range(15, 16, false), $range(21, 22, false), $range(23, 24, false), $range(25, 26, false), $range(31, 32, false), $range(33, 34, false), $range(35, 36, false), $range(41, 42, false), $range(43, 44, false), $range(45, 46, false), $range(51, 52, false), $range(53, 54, false), $range(55, 56, false), $range(61, 62, false), $range(63, 64, false), $range(65, 66, false)].$freeze()); - })($nesting[0], $$($nesting, 'D66RangeTable'), $nesting); - Opal.const_set($nesting[0], 'TABLES', $hash2(["ET", "ET2", "OT", "DT", "DT2", "WDT", "WDT2", "OT2", "DTO", "DTS", "EDT", "DTM"], {"ET": $$($nesting, 'D66GridTable').$new("感情表", [["【信頼(しんらい)】", "【有為(ゆうい)】", "【友情(ゆうじょう)】", "【純愛(じゅんあい)】", "【慈愛(じあい)】", "【憧れ(あこがれ)】"], ["【恐怖(きょうふ)】", "【脅威(きょうい)】", "【憎悪(ぞうお)】", "【不快感(ふかいかん)】", "【食傷(しょくしょう)】", "【嫌悪(けんお)】"], ["【好意(こうい)】", "【庇護(ひご)】", "【遺志(いし)】", "【懐旧(かいきゅう)】", "【尽力(じんりょく)】", "【忠誠(ちゅうせい)】"], ["【不安(ふあん)】", "【侮蔑(ぶべつ)】", "【嫉妬(しっと)】", "【劣等感(れっとうかん)】", "【優越感(ゆうえつかん)】", "【憐憫(れんびん)】"], ["【尊敬(そんけい)】", "【感服(かんぷく)】", "【慕情(ぼじょう)】", "【同情(どうじょう)】", "【傾倒(けいとう)】", "【好奇心(こうきしん)】"], ["【偏愛(へんあい)】", "【執着(しゅうちゃく)】", "【悔悟(かいご)】", "【警戒心(けいかいしん)】", "【敵愾心(てきがいしん)】", "【忘却(ぼうきゃく)】"]]), "ET2": $$($nesting, 'D66GridTable').$new("感情表2.0", [["【プレイヤーの任意】", "【同一視(どういつし)】", "【連帯感(れんたいかん)】", "【幸福感(こうふくかん)】", "【親近感(しんきんかん)】", "【誠意(せいい)】"], ["【懐旧(かいきゅう)】", "【同郷(どうきょう)】", "【同志(どうし)】", "【くされ縁(くされえん)】", "【期待(きたい)】", "【好敵手(こうてきしゅ)】"], ["【借り(かり)】", "【貸し(かし)】", "【献身(けんしん)】", "【義兄弟(ぎきょうだい)】", "【幼子(おさなご)】", "【親愛(しんあい)】"], ["【疎外感(そがいかん)】", "【恥辱(ちじょく)】", "【憐憫(れんびん)】", "【隔意(かくい)】", "【嫌悪(けんお)】", "【猜疑心(さいぎしん)】"], ["【厭気(けんき)】", "【不信感(ふしんかん)】", "【怨念(おんねん)】", "【悲哀(ひあい)】", "【悪意(あくい)】", "【殺意(さつい)】"], ["【敗北感(はいぼくかん)】", "【徒労感(とろうかん)】", "【黒い泥(くろいどろ)】", "【憤懣(ふんまん)】", "【無関心(むかんしん)】", "【プレイヤーの任意】"]]), "OT": $$($nesting, 'Table').$new("兆候表", "2D6", ["【信念の喪失】\n[出自]を喪失する。特徴は失われない。", "【昏倒】\nあなたは[戦闘不能]になる。", "【肉体の崩壊】\nあなたは2D6点のHPを失う。", "【放心】\nあなたはバッドステータスの[放心]を受ける。", "【重圧】\nあなたはバッドステータスの[重圧]を受ける。", "【現在の喪失】\n現在持っているパートナーをひとつ喪失する。", "【マヒ】\nあなたはバッドステータスの[マヒ]を受ける。", "【邪毒】\nあなたはバッドステータスの[邪毒]5を受ける。", "【色彩の喪失】\n漆黒、墨白、透明化……。その禍々しい色彩の喪失は他らなぬ異形化の片鱗だ。", "【理由の喪失】\n[境遇]を喪失する。特徴は失われない。", "【存在の喪失】\nあなたの存在は一瞬、この世界から消失する。"]), "DT": $$($nesting, 'Table').$new("歪み表", "2D6", ["【世界消失】\n演目の舞台がすべて失われる。舞台に残っているのはキミたちと異形、伽藍だけだ。クライマックスフェイズへ。", "【生命減少】\n演目の舞台となっている街や国から動物や人間の姿が少なくなる。特に子供の姿は見られない。", "【空間消失】\n演目の舞台の一部(建物一棟程度)が消失する。", "【天候悪化】\n激しい雷雨に見舞われる。", "【生命繁茂】\nシーン内に植物が爆発的に増加し、建物はイバラのトゲと蔓草に埋没する。", "【色彩喪失】\n世界から色彩が失われる。世界のすべてをモノクロームになったかのように認識する。", "【神権音楽】\n美しいが不安を覚える音が流れる。音は人々にストレスを与え、街の雰囲気は悪化している。", "【鏡面世界】\n演目の舞台に存在するあらゆる文字は鏡文字になる。", "【時空歪曲】\n昼夜が逆転する。昼間であれば夜になり、夜であれば朝となる。", "【存在修正】\nGMが任意に決定したNPCの性別や年齢、外見が変化する。", "【人体消失】\nシーンプレイヤーのパートナーとなっているNPCが消失する。どのNPCが消失するかは、GMが決定する。"]), "DT2": $$($nesting, 'MMTable').$new("歪み表ver2.0", ["【色彩侵食】\nシーン内に存在するあらゆる無生物と生物は、白と黒とのモノトーンの存在となる。紡ぎ手は【縫製】難易度8の判定に成功すれば、この影響を受けない。この効果は歪みをもたらした異形の死によって解除される。", "【虚無現出】\nほつれの中から虚無がしみ出す。シーンに登場しているエキストラは虫一匹にいたるまで消滅し、二度と現れない。", "【季節変容】\n季節が突如として変化する。1D6し、1なら春、2なら夏、3なら秋、4なら冬、5ならプレイしている現在の季節、6ならGMの任意とせよ。", "【ほつれ】\n世界がひび割れ、ほつれが現出する。ほつれに触れたものは虚無に飲み込まれ、帰ってくることはない。", "【異形化】\nシーン内のすべてのエキストラは何らかの異形化を受ける。これを治癒する術はない。異形の群れ(『IZ』P.237)×1D6と戦闘させてもよい。", "【死の行進】\n人々の心に虚無が広がり、不安と絶望に満たされていく。逃れられぬ恐怖から逃れようと、人々はみずから、あるいは無意識のうちに死へと向かい行動を始める。", "【時間加速】\nシーン内に存在するあらゆる無生物と生物は、2D6年ぶん時間が加速する。生物なら老化する。紡ぎ手は【縫製】難易度8の判定に成功すれば、この影響を受けない。", "【時間逆流】\nシーン内に存在するあらゆる無生物と生物は、2D6年ぶん時間が逆流する。生物ならば若返る。製造年/生年より前に戻った場合は虚無に飲まれ消滅する。紡ぎ手は【縫製】難易度8の判定に成功すれば、この影響を受けない。", "【災害到来】\n嵐、火山の噴火、洪水など、ほつれによって乱された自然が、人々に牙をむく。", "【人心荒廃】\n歪みによってもたらされた不安と恐怖は、人々を捨て鉢にさせる。", "【平穏無事】\n何も起きない。紡ぎ手は背筋が凍るほどの恐怖を覚える。", "【疫病蔓延】\n登場しているキャラクターは【肉体】難易度8の判定を行ない、失敗すると[邪毒]5を受ける。病の治療法の有無などについてはGMが決定する。迷ったら、伽藍を倒すと病も消滅する、とせよ。", "【異端審問】\n異端審問の時は近い。PCたちが紡ぎ手であることが知れ渡れば、PCたちも火刑台へと送られることになろう。", "【歪み出現】\nほつれの破片から歪みが現れ、人々を襲撃する。病魔(『IZ』P.238)×2と戦闘を行なわせてもよい。また、別の異形でもよい。", "【悪夢現出】\nシーン内のあらゆる人々は恐るべき恐怖の夢を見る。心弱きものたちは、伽藍にすがるか、異端者を火あぶりにせねばこの夢から逃れられぬと考えるだろう。", "【鼠の宴】\n鼠の大群が出現し、穀物を食い荒らし、疫病をまき散らす。大鼠(『MM』P.240)×1D6と戦闘を行なわせてもよい。", "【歪曲御標】\n歪んだ御標が下される。歪み表(『MM』P.263)を振ること。", "【地域消滅】\n演目の舞台となっている地域そのものが消えてなくなる。影響下にあるすべてのキャラクター(伽藍を含む)は【縫製】難易度10の判定に成功すれば脱出できる。失敗した場合即座に死亡する。エキストラは無条件で死亡する。"]), "WDT": $$($nesting, 'Table').$new("世界歪曲表", "2D6", ["【消失】\n世界からボスキャラクターが消去され、消滅する。エンディングフェイズへ。", "【自己犠牲】\nチャートを振ったPCのパートナーとなっているNPCのひとりが死亡する。チャートを振ったPCのHPとMPを完全に回復させる。", "【生命誕生】\nキミたちは大地の代わりに何かの生き物の臓腑の上に立っている。登場しているキャラクター全員に[邪毒]5を与える。", "【歪曲拡大】\nシーンに登場している紡ぎ手ではないNPCひとりが漆黒の凶獣(『MM』P.240)に変身する。", "【暴走】\n“ほつれ”がいくつも生まれ、シーンに登場しているすべてのキャラクターの剥離値を+1する。", "【幻像世界】\n周囲の空間は歪み、破壊的なエネルギーが充満する。次に行なわれるダメージロールに+5D6する。", "【変調】\n右は左に、赤は青に、上は下に、歪みが身体の動きを妨げる。登場しているキャラクター全員に[狼狽]を与える。", "【空間消失】\n演目の舞台が煙のように消失する。圧倒的な喪失感により、登場しているキャラクター全員に[放心]を与える。", "【生命消失】\n次のシーン以降、エキストラは一切登場できない。現在のシーンのエキストラに関してはGMが決定する。", "【自己死】\nもっとも剥離値の高いPCひとりが[戦闘不能]になる。複数のPCが該当した場合はGMがランダムに決定する。", "【世界死】\n世界の破滅。難易度12の【縫製】判定に成功すると破滅から逃れられる。失敗すると行方不明になる。エンディングフェイズへ。"]), "WDT2": $$($nesting, 'MMTable').$new("世界歪曲表ver2.0", ["【歪みの茨】\nシーン全体が鋼鉄よりも硬い茨の棘によって埋め尽くされる。飛行状態でないキャラクターは、移動を行う度に〈刺〉3D6+[そのシーンで登場するキャラクターの中で最大の演者レベル]点のダメージを受ける。", "【世界歪曲】\n世界歪曲表(『MM』P264)を振る。", "【さかさま世界】\n空か゛地面に、地面が空になる。そのシーン中、全ての飛行状態であるキャラクターは飛行状態でないものとして、飛行状態にないキャラクターは飛行状態として扱う。", "【海の記憶】\n存在するはずのない潮騒が聞こえ、世界の全てが波に飲み込まれる。このシーン中、飛行状態でない全てのキャラクターは水中状態として扱う。", "【空間湾曲】\n世界は歪む。こことあそこは意味を失う。このシーンの間、全てのキャラクターの移動力は∞となり、特技と装備の射程は全て「視界」となる。", "【濃霧世界】\nミルクよりも白く、濃厚な霧が世界を閉ざす。このシーンの間、特技と装備の射程が「視界」「6m以上」出会った場合、すべて「5m」に変更される。", "【豪雨】\nすさまじい雨が降る。雨は全ての人の心を凍らせる。このシーンの間、「種別:銃」である武器を用いた攻撃のファンブル値を+6する。また、別エンゲージへの物理攻撃の達成値を-2する。", "【どろどろ】\n足下がいつの間にか不定型な泥沼になっている。このシーンの間、飛行状態でないキャラクターが同一エンゲージに対して行う物理攻撃のファンブル値を+6する。", "【暴風】\n風は吹きすさび運命を嘲笑する。このシーンの間、飛行状態でないキャラクターが同一エンゲージに対して行う物理攻撃のファンブル値を+6する", "【魔法暴走】\n魔法の力は暴走し、もう誰の手にも負えない。世界は終わる。消えていく。このシーンの間、「種別:術」の特技を用いた判定のファンブル値は+6される", "【自己死】\n巨大なほつれが発生し、致命的なダメージを負う。最も剥離値の高いPCひとりが戦闘不能になる。複数のPCが該当した場合はGMがランダムに決定する", "【虚構の報い】\n紡ぎ手によってゆがめられ続けた因果が逆襲する。このシーンで《虚構現出》を使用した場合、代償に加えて10D6点の実ダメージを受ける。このダメージは軽減できず、移し替えることもできない。", "【虚構の果て】\n神が見捨てたのか、神を見捨てたのか。逸脱の果て、世界は終わる。あなたはこのシーンで逸脱能力を使用した場合、上昇した剥離値の10倍だけの実ダメージを受ける。このダメージは軽減できず、移し替えることも出来ない。", "【人格交代】\n魂、厳密には魂の背後にあるナニモノカが入れ替わる。左隣のプレイヤーにキャラクターシートを渡し、このシーン中はそのプレイヤーがあなたのPCを演じる。GMが認めれば、GMもNPCと入れ替えてもいい。", "【因果の糸】\n嗤う声がする。「逸脱の結果は共有しようよ?」PC全員の剥離値を平均し(端数切り上げ)、全員の剥離値をその計算結果に書き換える、", "【剣に斃る】\n人を裁く者に報いを、剣には剣の対価を。このシーンで攻撃を行いファンブルした場合、5D6点の実ダメージを受ける。", "【秘密暴露】\n隠しておきたい秘密を小鳥が囀り、リスが囁く。登場している全ての紡ぎ手、異形、伽藍は隠しておきたい秘密(そのキャラクターの主観で良い)ひとつを明らかにする。さもなければ、10D6点の実ダメージを受ける。このダメージは軽減も移し替えも出来ない。", "【荒廃の王】\n気がつくと全てのキャラクターは、虚ろの荒野の荒廃の王(『MM』p.212)の身体の飢えにいる。全てのキャラクターはその虚無に巻き込まれ、5D6点の実ダメージを受ける。このダメージは軽減も移し替えも出来ない。荒廃の王があなたたちにどのような影響をもたらすかはGMの任意とせよ。"]), "OT2": $$($nesting, 'MMTable').$new("兆候表ver2.0", ["【信念の喪失】\nあなたの精神があなたの過去を否定する。あなたは[出自]とそれにまつわる記憶をそのシーン中喪失する。特徴の効果は失われないが、其れを認識することは出来ない。", "【昏倒】\nもうあなたは逸脱の重さに耐えることは出来ない。これが世界に刃向かった報いだ。あなたは[戦闘不能]になる。すでに[戦闘不能]なら、[死亡]する。", "【肉体の崩壊】\n硝子の砕ける音がして、あなたも砕けていく。あなたは2D6+キャラクターレベル点の【HP】を失う。", "【放心】\nあなたの心に大きな衝動が襲いかかる。心は伽藍に向かって歪み、瞳は色のない悪夢を見る。あなたはバッドステータスの[放心]を受ける。", "【重圧】\nどこからかあなたを嘲笑する声がする。「こうして御標に背いた愚か者は、鎖に繋がれて責め苦を受けるのです」。あなたはバッドステータスの[重圧]を受ける。", "【現在の喪失】\n現在持っているパートナーをひとつ喪失する。あなたは何かを失ったことには気がつくが、その人物のことは思い出せない。この効果はその演目の間、継続する。もちろん、新しく人間関係を構築することも出来ない。", "【マヒ】\n異形化した肉体の変異に、魂が耐えられない。身体がしびれ、震えが止まらない。あなたはバッドステータスの[マヒ]を受ける。", "【邪毒】\n意識の深いところで異形化が進行し、あなたの肉体を蝕みはじめる。あなたはバッドステータスの[邪毒]5を受ける。", "【色彩の喪失】\nあなたの身体から色が消えて曇白へと近付いてゆく。服や化粧などで隠すことは出来るが、ばれれば異端尋問は免れまい。あなたの剥離値を+1D6する。(この効果では兆候表を振らない)", "【理由の喪失】\nあなたの精神があなたの現在を否定する。あなたは[境遇]とそれにまつわる記憶をそのシーン中喪失する。特徴の効果は失われないが、其れを認識することはできない。", "【存在の喪失】\nふいに、煙のようにあなたの姿がかき消えた。あなたの存在は一瞬、この世界から喪失する。あなたの剥離値を+1D6する。(この効果では兆候表を振らない)", "【逸脱の対価】\n逸脱能力を用いた結果この表を振ることになった場合にのみ適用する(そうでないなら振り直し)。この表を振る原因となった逸脱能力はこのラウンド(戦闘中でないならシーン)中はもはや使用できない。", "【逸脱の重責】\n世界から逸脱した結果、肉体が急激に異形化し身体を苛む。[上昇した剥離値×10]点の【HP】を失う。", "【急激な異形化】\n身体の一部(耳、指、瞳)などが歪んだ獣のそれになる。しかし、そのことはあなたの力ともなる。【HP】を(キャラクターレベル)D6点回復する(回復できない状態でも回復する)。あなたの剥離値を+2する(この効果では兆候表を振らない)。", "【精神の崩壊】\n身体が異形化し、世界から剥離していく。あなたの存在はぼやけてやがて消えていく。魂すらも。あなたは2D6+キャラクターレベル点の【MP】を失う。", "【逸脱の呪い】\n逸脱能力を用いた結果この表を振ることになった場合にのみ適用する(そうでないなら振り直し)。この表を振る原因となった逸脱能力は、この演目の間あなたが使用する場合、剥離値の上昇を2倍に数える。", "【剥離の伝播】\n世界の歪みは広がり、拡散し、誰も逃れられない。あなたの剥離値が、シーンに登場しているPCで最も剥離値の高いPCと同じになる。あなたが最も高いなら、最も低いPCの剥離値があなたと同じになる(複数登場している場合はランダムに選ぶこと)。", "【運命の恩寵】\n恩寵、あるいは悲劇への対価か。あなたは逸脱能力をその演目中に限り、更に一種類使用できるようになる(任意に選択せよ)。選択した逸脱能力の剥離値上昇は+1される。"]), "DTO": $$($nesting, 'MMTable').$new("歪み表(野外)", ["【死の蔓延】\n木は枯れて奇っ怪な姿になり、花はしおれる。大気は淀んだ腐敗臭を放ち、岩はねじくれる。すべてのものが死の気配に包まれる", "【歪曲御標】\n歪んだ御標が下される。歪み表(『MM』P263)を振ること。", "【季節変容】\n季節が突如として変化する。1D6し、1なら春、2なら夏、3なら秋、4なら冬、5なら四季が狂ったように変動し、6ならGMの任意とせよ。急激な季節の変化は、自然と人々の健康を痛めつける。", "【ほつれ】\n世界がひび割れ、ほつれが現出する。ほつれに触れたものは虚無に飲み込まれ、帰ってくることはない。", "【異形化】\n周囲の動物たちが歪みによって異形と化し、襲撃してくる。異形の群れ(『IZ』P237)×1D6体と戦闘になっても良い。", "【凍結世界】\n気温が異様に低下し、すべてのものが凍結する。また、凍結した世界の中で戦闘する全てのキャラクターは、防御判定にファンブルした場合狼狽を受ける。", "【天候暴走】\n大嵐、竜巻、吹雪、酷暑などの異常気象が発生する。船は木の葉のように揺れ、獣は恐怖に騒ぐ。このシーン中に行うすべての移動はその距離が半減する。", "【天の怒り】\n歪みによってあり得ないほどの異常気象が発生する。全てを吹き飛ばす風が吹き、雷鳴が唸る。このシーン中、あらゆるキャラクターは飛行状態になることは出来ない。", "【迷いの森】\n周囲の景色や地形が地図や知識にあるものと全く違っている。どこかに向かっているなら【知覚】難易度12の判定に失敗した場合、迷った結果として【MP】2D6点を失う", "【死の世界】\n世界は異様に美しくなる。水には一匹の魚もなく、藪には一匹の虫もいない。空に鳥は飛ばない。不気味な静寂が世界を包む。", "【影絵芝居】\nそこかしこの暗闇から、紡ぎ手たちの(あるいは登場するNPCの)不吉な運命を暗示する歌声が聞こえてくる。それは異形の声や虚無の軋みの音、あるいは歪みの幻影かもしれない。", "【色彩浸食】\n世界が漆黒と曇白に塗り分けられる。シーン内に登場するあらゆる無生物と生物は、白と黒のモノトーンの存在になる。紡ぎ手は【縫製】難易度8の判定に成功すれば、この影響を受けない。", "【濃霧】\nたとえそこが地底であっても、曇白の濃霧があたりを包み込む。手を伸ばしたら、その指先が見えないほどだ。濃霧内での攻撃は、敵との距離を2倍に計算する。", "【異形出現】\nほつれの中から、おぞましく人を襲うことしか考えぬ異形の群れが現れ、恐怖のうちに居合わせた人々を襲撃する。GMが望むなら、異形の群れ(『IZ』P237)×1D6と戦闘を行わせても良い。また、GMは状況に応じて別のエネミーを選択しても良い。", "【鉱脈露出】\nあり得ないほどの豊富な鉱脈が露出する。黄金、宝石、海ならば珊瑚などだ。人々は目の色を変えて鉱脈に群がる。それによってもたらされる混乱についてはGMが決定せよ。", "【虚無現出】\nほつれの中から虚無がしみ出す。シーンに登場しているエキストラは虫一匹にいたるまで消滅し、二度と現れない。", "【汚染世界】\n水は毒を含み、大気は有毒の霧に包まれる。登場している全てのキャラクターは【体力】難易度10の判定を行い、失敗すると邪毒5を受ける。エキストラがどうなるかはGMが決定するが、治療されなければ早晩死亡するだろう。", "【地域消滅】\n演目の舞台となっている地域そのものが消えてなくなる。影響下にあるすべてのキャラクター(伽藍を含む)は【縫製】難易度10の判定に成功すれば脱出できる。失敗した場合即座に死亡する。エキストラは無条件で死亡する。"]), "DTS": $$($nesting, 'MMTable').$new("歪み表(海)", ["【海域汚染】\n赤潮が発生する。あるいは海水そのものが毒に変わる。登場している全てのキャラクターは【体力】難易度10の判定を行い、失敗すると邪毒5を受ける。エキストラがどうなるかはGMが決定するが、治療されなければ早晩死亡するだろう。", "【色彩浸食】\n世界が漆黒と曇白に塗り分けられる。シーン内に登場するあらゆる無生物と生物は、白と黒のモノトーンの存在になる。紡ぎ手は【縫製】難易度8の判定に成功すれば、この影響を受けない。", "【異形の海】\n海の生物や海守りたちが異形化する。戦闘となる。GMは適切と思われるエネミーを配置すること。", "【海底火山】\n海底火山が噴火する。海水は熱されて周囲の生物は次々と死滅し、海守りたちも苦しむ。海からのしぶきは熱湯となる。具体的な効果はGMが決定せよ。", "【歪曲御標】\n歪んだ御標が下される。歪み表(『MM』P263)を振ること。", "【曇白の海】\n海の水が曇白になる。虚無への甘い誘いに満ちた海に触れたものは、考えることをやめ、意思なき人形のようになり、いずれ溶けて消滅してしまう。この歪みが1D6シーン(または1D6日)以内に消えない場合、すべてのキャラクターは(PCも含め)エキストラとなって二度と自我を取り戻すことはない。GMは何らかの理由で効果を受けないキャラクターを設定しても良い。", "【黒い海】\n海の水が漆黒に染まっていく。海の中にいると一寸先も見えない、[種別:射撃]の武器による攻撃のファンブル値を+5する。", "【壁面崩壊】\n海の壁面が崩壊し、ヒビが入る。ヒビを何とかすることができなければ、水圧によって1D6シーン(または1D6時間)後には崩壊し、海があふれ出すことになる。", "【固形化】\n海の水が固形化する。その中にいるものは氷で硬められたように身動きが取れず、ただ死を待つのみ。エキストラは完全に動けなくなる。エネミーやPCは等しく重圧&捕縛を受ける。この効果は歪みが引き受けられるまでの間、毎シーン&毎ラウンドの開始後に再度適用される。", "【氾濫】\n海の水が急激に増幅し、水槽からあふれ出す。シーンに登場している海守りのクラスを持たないキャラクターの【HP】は即座に0になる。ただし《大河の導き》の効果を受けているキャラクターと《ミズモノ》を取得しているキャラクターは3D6点の【HP】を消費することでこの効果を打ち消せる。", "【塩の雪】\n空から雪のように塩が降ってくる。人々は初めは喜ぶが、降り続ける雪は田畑を荒らし、人の身にも害を及ぼす。それでも塩は降り止まない。", "【真水化】\n海が真水になる。人間の中には喜ぶ者もいるが、海の生物たちにとっては死を意味する。", "【海流消失】\n海の海流が消える。海守りの力を持ってしても潮を起こすことはできない。よどんた海水は腐敗し、海の恩恵を受けて暮らす者たちは次々に病にかかる。", "【崩れる世界】\n海の周囲(海の内部ではなく、その外部)で爆発的にほつれが広がっていく。その規模はGMが決定するが、遠からず住人たちは死を迎えることになるだろう。", "【酒の海】\n海の水が酒になる。水を飲んだすべての者は酔っ払い理性を失う。その様はまるで暗黒期に滅亡した“怠惰の古都”を彷彿とさせる。", "【冷たき海】\n海の水が魂を凍らせるような冷たさになる。水に触れた者は暗く排他的で疑心暗鬼になり、互いを憎悪するようになる。また、全てのキャラクターは海水に触れている限り、毎シーン【MP】を2D6点失う。", "【大渦巻き】\n巨大な大渦が出現する。渦の中心は虚無に通じており、海守りの力を持ってしても渦を消すことはできない。海中にいる全てのキャラクターは2D6を振り、出た目に等しい【HP】を失う。ただし出目が2の場合、即座に【HP】が0となる。", "【海の終焉】\n海を維持している生命の力そのものが消える。水は鎖、魚はしに、波は薙ぐ。あらゆる生命は死ぬ。"]), "EDT": $$($nesting, 'Table').$new("永劫消失表", "2D6", ["【無慈悲な現実】\n願いも希望も叶いはしない。伽藍を倒すことができた、それが精一杯の、あなたたちに許された幸福だったのだ。意識が、虚無へと呑まれ消えていく……。\n> ダイスの後振りは行なえず、伽藍となる", "【命の消失】\n虚無はあなたの命を飲み込んでいった。身体が糸の切れた操り人形のように崩折れ、地面へと倒れ伏す。これが、あなたの人生の終わりなのだろうか………\n> あなたは死亡する。PCとして生き続けることを望む場合、キャラクターの成長の際にクラス:屍人(『TM』P90)を取得すること。", "【魂の消失】\nあなたの心に虚無が忍び寄る。まったく虚ろでからっぽな絶望。まだ、あなたは伽藍になったりなどしない。まだ……今は。\n> 【精神力】を-[演者レベル]D6する(下限値1)", "【肉体の消失】\n伽藍に捥がれたか、ほつれに呑まれたか。すべてを消失させる虚無はあなたの身体をも食らっていった。肉体の一部を失いつつも、あなたは辛うじて命を繋ぐことができたのだ。\n> 【耐久値】を-[演者レベル]D6する(下限値1)", "【思い人の消失】\n大切な誰かがいた。愛か憎悪か、あなたの人生に刻まれた無二の存在だ。だが、思いのすべては虚無に呑まれて消えてしまった。例え相手の顔を覚えていることができたとしても、胸焦がす思いはもうないのだ。\n> 固定化しているパートナーからひとりを選択し消失する。演目中に喪失した固定化しているパートナーがいる場合は、優先的に代償とすること。", "【境遇の消失】\nなぜ紡ぎ手となったのか……大切ななにかがあったはずだ。自分の人生を賭けるような、大切な、“なにか”が。けれど、もう思い出すことはできない。二度と、思い出せないだろう。\n> 境遇を消失する(特性も使用不可)", "【出自の消失】\nあなたがどこから来たのか、何者であったのか。故郷や家族の思い出が虚無の向こうに消えていく。もはや永久に、思い出すことはできないだろう。\n> 出自を消失する(特性も使用不可)", "【虚無の爪痕】\n四肢に激痛が走った。あなたの身体には虚無の爪痕がくっきりと残り、消えることなく身体を蝕み続けるだろう。\n> 【行動値】を-5する(下限値1)", "【虚無の浸食】\n鼓動が不吉なリズムを刻む。身体が、魂が虚無に侵され消え失せてしまうような恐ろしい感覚。たとえ目に見えずとも、着実にあなたは虚無へ近づいている……。\n> アフタープレイで基本剥離値を+3する(上限値9)。代償の支払いが可能であるかは剥離チェック時に確定すること。", "【異形化の発現】\nあなたの身体に禍々しい、色なき変容が現れた。ついに異形化がはじまったのだ。人々は恐れの混じった目で、君を石持て追うだろう。\n> あなたは異形となる。PCとして生き続けることを望む場合、キャラクター成長の際にクラス:異形(『MM』P116)を取得すること。", "【一念の奇跡】\n奇跡は起きた。想いが神へと届いたか、それとも紡ぎ手の一念か、その身のなにを失うこともなく、あなたはこの戦いを終えることを許されたのだ。\n> 代償は発生しない"]), "DTM": $$($nesting, 'MMTable').$new("歪み表(館・城)", ["【ほつれ】\n世界がひび割れ、ほつれが現出する。ほつれに触れたものは虚無に飲み込まれ、帰ってくることはない。", "【色彩浸食】\n世界が漆黒と曇白とに塗り分けられる。シーン内に存在するあらゆる無生物と生物は、白と黒のトーンの存在となる。この効果は歪みをもたらした異形の死によって解除される。", "【狂える色時計】\n柱時計や時計塔が狂ったように時を刻む。歪みを引き受けなかった場合、シーン内に存在するあらゆる無生物と生物は2D6年の歳月が過ぎたものとして振る舞う。生物なら老化する。", "【凶月】\n館の窓から曇白の月が見える。禍々しい月の光に照らされた館にいるすべての人物は、心を虚無に囚われ自ら死へと向かいはじめる。", "【無限図書館】\nどこまでも続く図書館。そこにある本が、知識への誘惑を囁いてくる。【意志】難易度14の判定に失敗した場合、1D6時間を浪費し、同じだけの【MP】を失う。", "【曇白の部屋】\n曇白の部屋に閉じ込められる。心が朽ち始め、異形へと近づいていく。この歪みが1D6シーン(または1D6時間)以内に消えない場合、すべてのキャラクターは(PCも含め)エキストラとなって二度と自我を取り戻すことはない。", "【悪しき鏡】\n鏡台や手鏡、鏡の部屋などから、鏡の中の自分がにやにやとこっちを見ている。すべての紡ぎ手の行なう判定のファンブル値を+3する。", "【歪みの音色】\n館内に人を不安にさせる音楽が響きはじめる。心はかき乱され、自分以外の誰もが化け物の姿に見えはじめる。【縫製】難易度8の判定に失敗したキャラクターは即座に【MP】が0になる。", "【暗闇の回廊】\n光をも塗りつぶす漆黒の闇が満ち、蝋燭の灯がすべて消える。何らかの手段で魔法的な光をPCたちが有していない限り、射撃攻撃の達成値は-5される。何らかの暗視能力や強力な嗅覚などを持つ、とGMが判断したキャラクターはこの効果を受けない。", "【動く植物】\n屋敷の植物、鳥や薔薇などが動き出し、襲いかかってくる。【反射】難易度12の判定に失敗すると、〈斬〉5D6のダメージを受ける。", "【黒い影】\n歪みによって、館に(あるいは館の建っている場所に)住んでいた過去の人物たちが影となって蘇り、館内を徘徊する。【反射】難易度10の判定に失敗したPCは発見され、【MP】4D6点となる。", "【凶暴な獣】\n館に飼われている猛獣や、屋敷に住み着くネズミや鳥などが異形化し襲いかかってくる。GMは適切なエネミーを登場させ、戦闘を行なってもよい。", "【牙持つ部屋】\n部屋が歪み、入ってきたものを食らおうと牙を剥く。室内にいるすべてのキャラクターは2D6を振り、出た目に等しい【HP】を失う。ただし出目が2の場合、即座に【HP】が0となる。", "【灼熱の暖炉】\n暖炉から炎が噴き出し襲いかかる。登場しているキャラクターは【反射】難易度12の判定を行ない、失敗すると【HP】4D6点を失う。", "【無限回廊】\n果てしなく続く通廊に迷い込む。どこまで行っても同じ部屋だ。1D6時間【あるいはGMが定めた時間】を浪費し、同じだけの【HP】を失う。", "【奇妙な人形】\n登場キャラクターと同じ顔の人形かからくりが現われ話しかけてくる。幻影か、そのように作られているのかは歪みを引き受けるまでわからない。登場しているPCはシーン終了時に【MP】を2D6点失う。", "【動く家具】\n椅子や戸棚、シャンデリアなどの家具、あるいはからくりが歪みの影響で動き襲いかかってくる。GMは任意のエネミーを登場させ、戦闘を行なってもよい。", "【炎上】\n館が炎上をはじめる。ここに留まっていれば、問答無用で死ぬことになるだろう。"])}).$freeze()); - return self.$setPrefixes($rb_plus(["\\d+D6.*"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/MonotoneMuseum_Korean.js b/src/assets/dicebot/MonotoneMuseum_Korean.js deleted file mode 100644 index eb5ed73e3..000000000 --- a/src/assets/dicebot/MonotoneMuseum_Korean.js +++ /dev/null @@ -1,172 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$checkRoll', '$empty?', '$debug', '$rollTableCommand', '$=~', '$last_match', '$to_i', '$nil?', '$parren_killer', '$roll', '$+', '$>=', '$<=', '$===', '$mm_emotion_table_ver2', '$mm_emotion_table', '$mm_omens_table', '$mm_distortion_table_ver2', '$mm_world_distortion_table', '$mm_distortion_table', '$!=', '$get_table_by_d66', '$get_table_by_2d6']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'MonotoneMuseum_Korean'); - - var $nesting = [self].concat($parent_nesting), $MonotoneMuseum_Korean_initialize$1, $MonotoneMuseum_Korean_rollDiceCommand$2, $MonotoneMuseum_Korean_checkRoll$3, $MonotoneMuseum_Korean_rollTableCommand$4, $MonotoneMuseum_Korean_mm_emotion_table$5, $MonotoneMuseum_Korean_mm_emotion_table_ver2$6, $MonotoneMuseum_Korean_mm_omens_table$7, $MonotoneMuseum_Korean_mm_distortion_table$8, $MonotoneMuseum_Korean_mm_distortion_table_ver2$9, $MonotoneMuseum_Korean_mm_world_distortion_table$10; - - self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "MonotoneMuseum:Korean"); - Opal.const_set($nesting[0], 'NAME', "모노톤 뮤지엄"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:모노톤 뮤지엄"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・판정\n" + " ・통상판정      2D6+m>=t[c,f]\n" + "  수정치m,목표치t,크리티컬치c,펌블치f로 판정 굴림을 행합니다.\n" + "  크리티컬, 펌블치는 생략가능합니다. ([]자체를 생략가능)\n" + "  자동성공, 자동실패, 성공, 실패를 자동표기합니다.\n" + "・각종표\n" + " ・감정표 ET/감정표 2.0 ET2\n" + " ・징조표  OT\n" + " ・일그러짐표 DT/일그러짐표ver2.0 DT2\n" + " ・세계왜곡표  WDT\n" + "・D66다이스 있음\n"); - self.$setPrefixes(["2D6.*", "ET", "ET2", "OT", "DT", "DT2", "WDT"]); - - Opal.def(self, '$initialize', $MonotoneMuseum_Korean_initialize$1 = function $$initialize() { - var $iter = $MonotoneMuseum_Korean_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $MonotoneMuseum_Korean_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $MonotoneMuseum_Korean_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.d66Type = 1; - return (self.sortType = 1); - }, $MonotoneMuseum_Korean_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $MonotoneMuseum_Korean_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, result = nil; - - - result = self.$checkRoll(command); - if ($truthy(result['$empty?']())) { - } else { - return result - }; - self.$debug("판정롤이 아닙니다"); - self.$debug("각종표로써 처리"); - return self.$rollTableCommand(command); - }, $MonotoneMuseum_Korean_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$checkRoll', $MonotoneMuseum_Korean_checkRoll$3 = function $$checkRoll(string) { - var $a, $b, $c, self = this, output = nil, crit = nil, fumble = nil, modText = nil, target = nil, mod = nil, total = nil, dice_str = nil, total_n = nil; - - - output = ""; - crit = 12; - fumble = 2; - if ($truthy(/^2D6([\+\-\d]*)>=(\d+)(\[(\d+)?(,(\d+))?\])?$/i['$=~'](string))) { - } else { - return output - }; - modText = $$($nesting, 'Regexp').$last_match(1); - target = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($$($nesting, 'Regexp').$last_match(4))) { - crit = $$($nesting, 'Regexp').$last_match(4).$to_i()}; - if ($truthy($$($nesting, 'Regexp').$last_match(6))) { - fumble = $$($nesting, 'Regexp').$last_match(6).$to_i()}; - mod = 0; - if ($truthy(modText['$nil?']())) { - } else { - mod = self.$parren_killer("" + "(0" + (modText) + ")") - }; - $b = self.$roll(2, 6, ($truthy($c = self.sortType) ? 1 : $c)), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - total_n = $rb_plus(total, mod.$to_i()); - output = "" + (total) + "[" + (dice_str) + "]+" + (mod) + " → " + (total_n); - if ($truthy($rb_ge(total, crit))) { - output = $rb_plus(output, " > 자동 성공") - } else if ($truthy($rb_le(total, fumble))) { - output = $rb_plus(output, " > 자동 실패") - } else if ($truthy($rb_ge(total_n, target))) { - output = $rb_plus(output, " > 성공") - } else { - output = $rb_plus(output, " > 실패") - }; - output = "" + "(" + (string) + ") > " + (output); - return output; - }, $MonotoneMuseum_Korean_checkRoll$3.$$arity = 1); - - Opal.def(self, '$rollTableCommand', $MonotoneMuseum_Korean_rollTableCommand$4 = function $$rollTableCommand(command) { - var $a, $b, self = this, output = nil, type = nil, $case = nil, total_n = nil; - - - output = ""; - type = ""; - $case = command; - if (/ET2/i['$===']($case)) { - type = "감정표2.0"; - $b = self.$mm_emotion_table_ver2(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/ET/i['$===']($case)) { - type = "감정표"; - $b = self.$mm_emotion_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/OT/i['$===']($case)) { - type = "징조표"; - $b = self.$mm_omens_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/DT2/i['$===']($case)) { - type = "일그러짐표ver2.0"; - $b = self.$mm_distortion_table_ver2(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/WDT/i['$===']($case)) { - type = "세계왜곡표"; - $b = self.$mm_world_distortion_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if (/DT/i['$===']($case)) { - type = "징조표"; - $b = self.$mm_distortion_table(), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;}; - if ($truthy(output['$!='](""))) { - output = "" + (type) + "(" + (total_n) + ") > " + (output)}; - return output; - }, $MonotoneMuseum_Korean_rollTableCommand$4.$$arity = 1); - - Opal.def(self, '$mm_emotion_table', $MonotoneMuseum_Korean_mm_emotion_table$5 = function $$mm_emotion_table() { - var self = this, table = nil; - - - table = ["【신뢰(信頼)】", "【유위(有為)】", "【우정(友情)】", "【순애(純愛)】", "【자애(慈愛)】", "【동경(憧れ)】", "【공포(恐怖)】", "【위협(脅威)】", "【증오(憎悪)】", "【불쾌감(不快感)】", "【식상(食傷)】", "【혐오(嫌悪)】", "【호의(好意)】", "【비호(庇護)】", "【유지(遺志)】", "【회고(懐旧)】", "【진력(尽力)】", "【충성(忠誠)】", "【불안(不安)】", "【모멸(侮蔑)】", "【질투(嫉妬)】", "【열등감(劣等感)】", "【우월감(優越感)】", "【연민(憐憫)】", "【존경(尊敬)】", "【감복(感服)】", "【모정(慕情)】", "【동정(同情)】", "【심취(傾倒)】", "【호기심(好奇心)】", "【편애(偏愛)】", "【집착(執着)】", "【회개(悔悟)】", "【경계심(警戒心)】", "【적개심(敵愾心)】", "【망각(忘却)】"]; - return self.$get_table_by_d66(table); - }, $MonotoneMuseum_Korean_mm_emotion_table$5.$$arity = 0); - - Opal.def(self, '$mm_emotion_table_ver2', $MonotoneMuseum_Korean_mm_emotion_table_ver2$6 = function $$mm_emotion_table_ver2() { - var self = this, table = nil; - - - table = ["【플레이어의 임의】", "【동일시(同一視)】", "【연대감(連帯感)】", "【행복감(幸福感)】", "【친근감(親近感)】", "【성의(誠意)】", "【회고(懐旧)】", "【동향(同郷)】", "【동지(同志)】", "【악연(くされ縁)】", "【기대(期待)】", "【호적수(好敵手)】", "【빌려(借り)】", "【대여(貸し)】", "【헌신(献身)】", "【의형제(義兄弟)】", "【어린 아이(幼子)】", "【친애(親愛)】", "【소외감(疎外感)】", "【치욕(恥辱)】", "【연민(憐憫)】", "【격의(隔意)】", "【혐오(嫌悪)】", "【시의심(猜疑心)】", "【염기(厭気)】", "【불신감(不信感)】", "【원한(怨念)】", "【비애(悲哀)】", "【악의(悪意)】", "【살의(殺意)】", "【패배감(敗北感)】", "【헛수고감(徒労感)】", "【뒷 마음(黒い泥)】", "【분만(憤懣)】", "【무관심(無関心)】", "【플레이어의 임의】"]; - return self.$get_table_by_d66(table); - }, $MonotoneMuseum_Korean_mm_emotion_table_ver2$6.$$arity = 0); - - Opal.def(self, '$mm_omens_table', $MonotoneMuseum_Korean_mm_omens_table$7 = function $$mm_omens_table() { - var self = this, table = nil; - - - table = ["【신념의 상실】\n[출신]을 상실한다. 특징은 없어지지 않는다.", "【졸도】\n[전투불능]이 된다.", "【육체의 붕괴】\n2D6 점의 HP를 잃는다.", "【방심】\n배드 스테이터스[방심]을 받는다.", "【중압】\n배드 스테이터스[중압]을 받는다.", "【현재의 상실】\n현재 가지고 있는 파트너 한 명을 상실한다.", "【마비】\n배드 스테이터스[마비]를 받는다.", "【사독】\n배드 스테이터스[사독] 5를 받는다.", "【색채의 상실】\n칠흑、묵백、투명화……. 그 두려운 색채의 상실은 틀림없는 이형화의 편린이다.", "【이유의 상실】\n[처지]를 상실한다. 특징은 없어지지 않는다.", "【존재의 상실】\n당신의 존재는 일순간, 이 세계로부터 소실한다."]; - return self.$get_table_by_2d6(table); - }, $MonotoneMuseum_Korean_mm_omens_table$7.$$arity = 0); - - Opal.def(self, '$mm_distortion_table', $MonotoneMuseum_Korean_mm_distortion_table$8 = function $$mm_distortion_table() { - var self = this, table = nil; - - - table = ["【세계소실】\n연극의 무대가 모두 없어진다. 무대에 남아있는 것은 너희들과 이형, 가람뿐이다. 클라이맥스 페이즈로.", "【생명감소】\n연극의 무대에 있는 거리나 나라로부터 동물이나 인간의 모습이 적어진다. 특히 아이들의 모습을 볼 수 없다.", "【공간소실】\n연극의 무대 일부(건물 한 개 동 정도)가 소실한다.", "【날씨악화】\n격렬한 뇌우에 휩쓸린다.", "【생명번무】\n씬 내에 식물이 폭발적으로 증가하고, 건물은 가시나무의 가시와 덩굴풀에 파묻힌다.", "【색채상실】\n세계로부터 색채가 없어진다. 방적공(PC)이외의 사람들은 세계의 모든 것이 모노크롬처럼 되었다고 인식한다.", "【신권음악】\n아름답지만 불안을 느끼는 소리가 흐른다. 소리는 사람들에게 스트레스를 주어 거리의 분위기가 악화하고 있다.", "【경면세계】\n연극의 무대에 존재하는 모든 문자는 거울처럼 역전된다.", "【시공왜곡】\n밤낮이 역전한다. 낮이면 밤이 되고, 밤이면 아침이 된다.", "【존재수정】\nGM이 임의로 결정한 NPC의 성별이나 연령, 외관이 변화한다.", "【인체소실】\n씬 플레이어의 파트너로 되어있는 NPC가 소실한다. 어느 NPC가 소실되는지는 GM이 결정한다."]; - return self.$get_table_by_2d6(table); - }, $MonotoneMuseum_Korean_mm_distortion_table$8.$$arity = 0); - - Opal.def(self, '$mm_distortion_table_ver2', $MonotoneMuseum_Korean_mm_distortion_table_ver2$9 = function $$mm_distortion_table_ver2() { - var self = this, table = nil; - - - table = ["【색채침식】\n씬 내에 존재하는 모든 무생물과 생물은 흰색과 흑백으로 이루어진 모노톤의 존재가 된다. 방적공은 【봉제】 난이도 8의 판정에 성공하면 이 영향을 받지 않는다. 이 효과는 일그러짐을 가져온 이형의 죽음에 의해서 해제된다.", "【색채침식】\n씬 내에 존재하는 모든 무생물과 생물은 흰색과 흑백으로 이루어진 모노톤의 존재가 된다. 방적공은 【봉제】 난이도 8의 판정에 성공하면 이 영향을 받지 않는다. 이 효과는 일그러짐을 가져온 이형의 죽음에 의해서 해제된다.", "【허무출현】\n일그러짐 중에서 허무가 배어 나온다. 씬에 등장하고 있는 엑스트라는 벌레 한 마리에 이르기까지 소멸해서 두 번 다시 나타나지 않는다.", "【허무출현】\n일그러짐 중에서 허무가 배어 나온다. 씬에 등장하고 있는 엑스트라는 벌레 한 마리에 이르기까지 소멸해서 두 번 다시 나타나지 않는다.", "【계절변용】\n계절이 갑자기 변화한다. 1D6을 굴려서 1이라면 봄, 2라면 여름, 3이라면 가을, 4라면 겨울, 5라면 플레이하고 있는 현재의 계절, 6이라면 GM의 임의대로 변한다.", "【계절변용】\n계절이 갑자기 변화한다. 1D6을 굴려서 1이라면 봄, 2라면 여름, 3이라면 가을, 4라면 겨울, 5라면 플레이하고 있는 현재의 계절, 6이라면 GM의 임의대로 변한다.", "【일그러짐】\n세계에 금이 가서 일그러짐이 출현한다. 일그러짐에 접한 것은 허무에 삼켜져 돌아올 일은 없다.", "【일그러짐】\n세계에 금이 가서 일그러짐이 출현한다. 일그러짐에 접한 것은 허무에 삼켜져 돌아올 일은 없다.", "【이형화】\n씬 내에 모든 엑스트라는 어떠한 이형화를 받는다. 이것을 치유 할 방법은 없다. 이형의 무리(『인카르챤드』 P.237)×1D6와 전투시켜도 좋다.", "【이형화】\n씬 내에 모든 엑스트라는 어떠한 이형화를 받는다. 이것을 치유 할 방법은 없다. 이형의 무리(『인카르챤드』 P.237)×1D6와 전투시켜도 좋다.", "【죽음의 행진】\n사람들의 마음에 허무가 퍼져, 불안과 절망으로 채워져 간다. 피할 수 없는 공포로부터 피하려고 사람들은 스스로 혹은 무의식중에 죽음을 향해 행동을 시작한다.", "【죽음의 행진】\n사람들의 마음에 허무가 퍼져, 불안과 절망으로 채워져 간다. 피할 수 없는 공포로부터 피하려고 사람들은 스스로 혹은 무의식중에 죽음을 향해 행동을 시작한다.", "【시간가속】\n씬 내에 존재하는 모든 무생물과 생물은 2D6년만큼 시간이 가속한다. 생물이라면 노화한다. 방적공은 【봉제】 난이도 8의 판정에 성공하면 이 영향을 받지 않는다.", "【시간가속】\n씬 내에 존재하는 모든 무생물과 생물은 2D6년만큼 시간이 가속한다. 생물이라면 노화한다. 방적공은 【봉제】 난이도 8의 판정에 성공하면 이 영향을 받지 않는다.", "【시간역류】\n씬 내에 존재하는 모든 무생물과 생물은 2D6년만큼 시간이 역류한다. 생물이라면 젊어진다. 제조년/생년보다 앞으로 돌아왔을 때는 허무에 삼켜져서 소멸한다. 방적공은 【봉제】 난이도 8의 판정에 성공하면 이 영향을 받지 않는다.", "【시간역류】\n씬 내에 존재하는 모든 무생물과 생물은 2D6년만큼 시간이 역류한다. 생물이라면 젊어진다. 제조년/생년보다 앞으로 돌아왔을 때는 허무에 삼켜져서 소멸한다. 방적공은 【봉제】 난이도 8의 판정에 성공하면 이 영향을 받지 않는다.", "【재해도래】\n폭풍우, 화산분화, 홍수 등, 흐트러짐에 의해서 어지럽혀진 자연이 사람들에게 송곳니를 드러낸다.", "【재해도래】\n폭풍우, 화산분화, 홍수 등, 흐트러짐에 의해서 어지럽혀진 자연이 사람들에게 송곳니를 드러낸다.", "【인심황폐】\n일그러짐에 의해 초래된 불안과 공포는 사람들을 자포자기하게 한다.", "【인심황폐】\n일그러짐에 의해 초래된 불안과 공포는 사람들을 자포자기하게 한다.", "【평온무사】\n아무것도 일어나지 않는다. 방적공들은 등골이 오싹할 정도의 공포를 느낀다.", "【평온무사】\n아무것도 일어나지 않는다. 방적공들은 등골이 오싹할 정도의 공포를 느낀다.", "【역병만연】\n등장하고 있는 캐릭터는 【육체】 난이도 8의 판정을 하여 실패하면 [사독]5를 받는다. 병의 치료법의 유무 등에 대해서는 GM이 결정한다. 고민된다면 가람을 쓰러트리면 병도 소멸한다, 라고 하라.", "【역병만연】\n등장하고 있는 캐릭터는 【육체】 난이도 8의 판정을 하여 실패하면 [사독]5를 받는다. 병의 치료법의 유무 등에 대해서는 GM이 결정한다. 고민된다면 가람을 쓰러트리면 병도 소멸한다, 라고 하라.", "【이단심문】\n이단심문의 시기가 가깝다. PC들이 방적공인 것이 알려진다면, PC들도 화형대로 보내지게 될 것이다.", "【이단심문】\n이단심문의 시기가 가깝다. PC들이 방적공인 것이 알려진다면, PC들도 화형대로 보내지게 될 것이다.", "【일그러짐출현】\n흐트러짐의 파편으로부터 일그러짐이 나타나 사람들을 습격한다. 병마(『인카르챤드』 P.238)×2와 전투를 하게 해도 좋다. 또, 다른 이형이라도 좋다.", "【일그러짐출현】\n흐트러짐의 파편으로부터 일그러짐이 나타나 사람들을 습격한다. 병마(『인카르챤드』 P.238)×2와 전투를 하게 해도 좋다. 또, 다른 이형이라도 좋다.", "【악몽출현】\n씬 내의 모든 사람은 무서운 공포의 꿈을 꾼다. 마음 약한 사람들은 가람에 매달리던가, 이단자들을 화형에 처하는 것으로 이 꿈에서 벗어날 수 있을 거로 생각할 것이다.", "【악몽출현】\n씬 내의 모든 사람은 무서운 공포의 꿈을 꾼다. 마음 약한 사람들은 가람에 매달리던가, 이단자들을 화형에 처하는 것으로 이 꿈에서 벗어날 수 있을 거로 생각할 것이다.", "【쥐의 연회】\n다수의 쥐의 떼가 출현하여 곡물을 들쑤셔 먹고 역병을 흩뿌린다. 대형 쥐(『MM』 P.240)×1D6와 전투를 하게 해도 좋다.", "【쥐의 연회】\n다수의 쥐의 떼가 출현하여 곡물을 들쑤셔 먹고 역병을 흩뿌린다. 대형 쥐(『MM』 P.240)×1D6와 전투를 하게 해도 좋다.", "【왜곡길잡이표】\n삐뚤어진 길잡이표가 내려진다. 일그러짐표(『MM』 P.263)를 굴릴 것.", "【왜곡길잡이표】\n삐뚤어진 길잡이표가 내려진다. 일그러짐표(『MM』 P.263)를 굴릴 것.", "【지역소멸】\n연극의 무대가 되는 지역 그 자체가 사라져서 없어진다. 영향 아래에 있는 모든 캐릭터(가람을 포함한다)는 【봉제】 난이도 10의 판정에 성공하면 탈출할 수 있다. 실패했을 경우 그 즉시 사망한다. 엑스트라는 무조건 사망한다.", "【지역소멸】\n연극의 무대가 되는 지역 그 자체가 사라져서 없어진다. 영향 아래에 있는 모든 캐릭터(가람을 포함한다)는 【봉제】 난이도 10의 판정에 성공하면 탈출할 수 있다. 실패했을 경우 그 즉시 사망한다. 엑스트라는 무조건 사망한다."]; - return self.$get_table_by_d66(table); - }, $MonotoneMuseum_Korean_mm_distortion_table_ver2$9.$$arity = 0); - return (Opal.def(self, '$mm_world_distortion_table', $MonotoneMuseum_Korean_mm_world_distortion_table$10 = function $$mm_world_distortion_table() { - var self = this, table = nil; - - - table = ["【소실】\n세계로부터 보스 캐릭터가 소거되어 소멸한다. 엔딩 페이즈로 직행.", "【자기희생】\n표를 굴린 PC의 파트너로 되어있는 NPC 중 1명이 사망한다. 표를 굴린 PC의 HP와 MP를 완전회복시킨다.", "【생명탄생】\n그대들은 대지 대신에 무엇인가의 생물의 내장 위에 서있다. 등장하고 있는 캐릭터 전원에게 [사독]5를 준다.", "【왜곡확대】\n씬에 등장하고 있는 방적공이 아닌 NPC 하나가 칠흑의 흉수(『MM』 P.240)로 변신한다.", "【폭주】\n“흐트러짐”이 대량으로 생겨나 씬에 등장하고 있는 모든 캐릭터의 박리치를 +1 한다.", "【환상세계】\n주위의 공간이 삐뚤어져 파괴적인 에너지가 충만하다. 다음에 행해지는 대미지 산출에 +5D6한다.", "【변조】\n오른쪽은 왼쪽으로, 빨강은 파랑으로, 위는 아래로, 일그러짐이 신체의 움직임을 방해한다. 등장하고 있는 캐릭터 전원에게 [낭패]를 준다.", "【공간소실】\n연극의 무대가 연기와도 같이 소실된다. 압도적인 상실감에 의해 등장하고 있는 캐릭터 전원에게 [방심]을 준다.", "【생명소실】\n다음 씬 이후, 엑스트라는 일절 등장할 수 없다. 현재의 씬의 엑스트라에 관해서는 GM이 결정한다.", "【자기사(自己死)】\n가장 박리치가 높은 PC 하나가 [전투불능]이 된다. 복수의 PC가 해당했을 때는 GM이 랜덤으로 결정한다.", "【세계사(世界死)】\n세계의 파멸. 난이도 12의 【봉제】 판정에 성공하면 파멸로부터 회피할 수 있다. 실패하면 행방불명이 된다. 엔딩 페이즈로 직행."]; - return self.$get_table_by_2d6(table); - }, $MonotoneMuseum_Korean_mm_world_distortion_table$10.$$arity = 0), nil) && 'mm_world_distortion_table'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Nechronica.js b/src/assets/dicebot/Nechronica.js deleted file mode 100644 index e167b4780..000000000 --- a/src/assets/dicebot/Nechronica.js +++ /dev/null @@ -1,230 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$freeze', '$match', '$raise', '$to_i', '$[]', '$roll', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Table'); - - var $nesting = [self].concat($parent_nesting), $Table_initialize$1, $Table_roll$2; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $Table_initialize$1 = function $$initialize(name, type, items) { - var self = this, m = nil; - - - self.name = name; - self.items = items.$freeze(); - m = /(\d+)D(\d+)/i.$match(type); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "Unexpected table type: " + (type)) - }; - self.times = m['$[]'](1).$to_i(); - return (self.sides = m['$[]'](2).$to_i()); - }, $Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $Table_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, value = nil, index = nil; - - - $b = bcdice.$roll(self.times, self.sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(value, self.times); - return "" + (self.name) + "(" + (value) + ") > " + (self.items['$[]'](index)); - }, $Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$gsub', '$last_match', '$roll_tables', '$nechronica_check', '$==', '$>=', '$count', '$<=', '$>', '$size', '$debug', '$=~', '$to_i', '$parren_killer', '$roll', '$+', '$<', '$to_s', '$map', '$split', '$to_proc', '$map!', '$join', '$check_nD10', '$getHitLocation', '$!=', '$-', '$[]', '$freeze', '$new', '$setPrefixes', '$keys']); - - self.$require("utils/table"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Nechronica'); - - var $nesting = [self].concat($parent_nesting), $Nechronica_initialize$1, $Nechronica_changeText$2, $Nechronica_rollDiceCommand$7, $Nechronica_dice_command_xRn$8, $Nechronica_check_nD10$9, $Nechronica_nechronica_check$11, $Nechronica_getHitLocation$13; - - self.$$prototype.nick_e = nil; - - Opal.const_set($nesting[0], 'ID', "Nechronica"); - Opal.const_set($nesting[0], 'NAME', "ネクロニカ"); - Opal.const_set($nesting[0], 'SORT_KEY', "ねくろにか"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 (nNC+m)\n" + " ダイス数n、修正値mで判定ロールを行います。\n" + " ダイス数が2以上の時のパーツ破損数も表示します。\n" + "・攻撃判定 (nNA+m)\n" + " ダイス数n、修正値mで攻撃判定ロールを行います。\n" + " 命中部位とダイス数が2以上の時のパーツ破損数も表示します。\n" + "\n" + "表\n" + "・姉妹への未練表 nm\n" + "・中立者への未練表 nmn\n" + "・敵への未練表 nme\n"); - - Opal.def(self, '$initialize', $Nechronica_initialize$1 = function $$initialize() { - var $iter = $Nechronica_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Nechronica_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Nechronica_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 3; - return (self.defaultSuccessTarget = "6"); - }, $Nechronica_initialize$1.$$arity = 0); - - Opal.def(self, '$changeText', $Nechronica_changeText$2 = function $$changeText(string) { - var $$3, $$4, $$5, $$6, self = this; - - - string = $send(string, 'gsub', [/(\d+)NC(10)?([\+\-][\+\-\d]+)/i], ($$3 = function(){var self = $$3.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R10" + ($$($nesting, 'Regexp').$last_match(3)) + "[0]"}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - string = $send(string, 'gsub', [/(\d+)NC(10)?/i], ($$4 = function(){var self = $$4.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R10[0]"}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - string = $send(string, 'gsub', [/(\d+)NA(10)?([\+\-][\+\-\d]+)/i], ($$5 = function(){var self = $$5.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R10" + ($$($nesting, 'Regexp').$last_match(3)) + "[1]"}, $$5.$$s = self, $$5.$$arity = 0, $$5)); - string = $send(string, 'gsub', [/(\d+)NA(10)?/i], ($$6 = function(){var self = $$6.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R10[1]"}, $$6.$$s = self, $$6.$$arity = 0, $$6)); - return string; - }, $Nechronica_changeText$2.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $Nechronica_rollDiceCommand$7 = function $$rollDiceCommand(command) { - var self = this; - - return self.$roll_tables(command, $$($nesting, 'TABLES')) - }, $Nechronica_rollDiceCommand$7.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $Nechronica_dice_command_xRn$8 = function $$dice_command_xRn(string, nick_e) { - var self = this; - - - self.nick_e = nick_e; - return self.$nechronica_check(string); - }, $Nechronica_dice_command_xRn$8.$$arity = 2); - - Opal.def(self, '$check_nD10', $Nechronica_check_nD10$9 = function $$check_nD10(total, _dice_total, dice_list, cmp_op, target) { - var $$10, self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_ge(total, 11))) { - return " > 大成功" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else if ($send(dice_list, 'count', [], ($$10 = function(i){var self = $$10.$$s || this; - - - - if (i == null) { - i = nil; - }; - return $rb_le(i, 1);}, $$10.$$s = self, $$10.$$arity = 1, $$10))['$=='](0)) { - return " > 失敗" - } else if ($truthy($rb_gt(dice_list.$size(), 1))) { - return " > 大失敗 > 使用パーツ全損" - } else { - return " > 大失敗" - }; - }, $Nechronica_check_nD10$9.$$arity = 5); - - Opal.def(self, '$nechronica_check', $Nechronica_nechronica_check$11 = function $$nechronica_check(string) { - var $a, $b, $$12, self = this, output = nil, dice_n = nil, battleMode = nil, modText = nil, mod = nil, isBattleMode = nil, diff = nil, total_n = nil, _ = nil, dice_str = nil, _n1 = nil, _cnt_max = nil, n_max = nil, dice = nil, hit_loc = nil; - - - output = "1"; - self.$debug("nechronica_check string", string); - if ($truthy(/(^|\s)S?((\d+)[rR]10([\+\-\d]+)?(\[(\d+)\])?)(\s|$)/i['$=~'](string))) { - } else { - - self.$debug("nechronica_check unmuched"); - return output; - }; - string = $$($nesting, 'Regexp').$last_match(2); - dice_n = 1; - if ($truthy($$($nesting, 'Regexp').$last_match(3))) { - dice_n = $$($nesting, 'Regexp').$last_match(3).$to_i()}; - battleMode = $$($nesting, 'Regexp').$last_match(6).$to_i(); - modText = $$($nesting, 'Regexp').$last_match(4); - mod = self.$parren_killer("" + "(0" + (modText) + ")").$to_i(); - isBattleMode = battleMode['$=='](1); - self.$debug("nechronica_check string", string); - self.$debug("isBattleMode", isBattleMode); - diff = 6; - total_n = 0; - $b = self.$roll(dice_n, 10, 1), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), (_n1 = ($a[2] == null ? nil : $a[2])), (_cnt_max = ($a[3] == null ? nil : $a[3])), (n_max = ($a[4] == null ? nil : $a[4])), $b; - total_n = $rb_plus(n_max, mod); - output = "" + (self.nick_e) + ": (" + (string) + ") > [" + (dice_str) + "]"; - if ($truthy($rb_lt(mod, 0))) { - output = $rb_plus(output, mod.$to_s()) - } else if ($truthy($rb_gt(mod, 0))) { - output = $rb_plus(output, "" + "+" + (mod))}; - dice = $send(dice_str.$split(","), 'map', [], "to_i".$to_proc()); - $send(dice, 'map!', [], ($$12 = function(i){var self = $$12.$$s || this; - - - - if (i == null) { - i = nil; - }; - return $rb_plus(i, mod);}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - dice_str = dice.$join(","); - output = $rb_plus(output, "" + " > " + (total_n) + "[" + (dice_str) + "]"); - output = $rb_plus(output, self.$check_nD10(total_n, dice_n, dice, ">=", diff)); - if ($truthy(isBattleMode)) { - - hit_loc = self.$getHitLocation(total_n); - if ($truthy(hit_loc['$!=']("1"))) { - output = $rb_plus(output, "" + " > " + (hit_loc))};}; - return output; - }, $Nechronica_nechronica_check$11.$$arity = 1); - - Opal.def(self, '$getHitLocation', $Nechronica_getHitLocation$13 = function $$getHitLocation(dice) { - var self = this, output = nil, table = nil, index = nil, addDamage = nil; - - - output = "1"; - self.$debug("getHitLocation dice", dice); - if ($truthy($rb_le(dice, 5))) { - return output}; - output = ""; - table = ["防御側任意", "脚(なければ攻撃側任意)", "胴(なければ攻撃側任意)", "腕(なければ攻撃側任意)", "頭(なければ攻撃側任意)", "攻撃側任意"]; - index = $rb_minus(dice, 6); - addDamage = ""; - if ($truthy($rb_gt(dice, 10))) { - - index = 5; - addDamage = "" + "(追加ダメージ" + ($rb_minus(dice, 10)) + ")";}; - output = $rb_plus(table['$[]'](index), addDamage); - return output; - }, $Nechronica_getHitLocation$13.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["NM", "NMN", "NME"], {"NM": $$($nesting, 'Table').$new("姉妹への未練表", "1D10", ["【嫌悪】[発狂:敵対認識]敵に命中しなかった攻撃は全て、射程内にいるなら嫌悪の対象に命中する。(防御側任意)", "【独占】[発狂:独占衝動]戦闘開始時と終了時に1つずつ、対象はパーツを選んで損傷する。", "【依存】[発狂:幼児退行]最大行動値が減少する(-2)", "【執着】[発狂:追尾監視]戦闘開始時と終了時に1つずつ、対象はあなたへの未練に狂気点を得る。", "【恋心】[発狂:自傷行動]戦闘開始時と終了時に1つずつ、あなたはパーツを選んで損傷する。", "【対抗】[発狂:過剰競争]戦闘開始時と終了時に1つずつ、あなたは任意の未練に狂気点を追加で得る。", "【友情】[発狂:共鳴依存]セッション終了時、対象にあなたよりも多く損傷したパーツがある際、あなたは損傷パーツ数が対象と同じになるまで、パーツを損傷させる。", "【保護】[発狂:常時密着]あなたが対象と別エリアにいるなら「移動以外の効果を持つマニューバ」を宣言できない。「自身と対象」以外を移動マニューバの対象にできない。", "【憧憬】[発狂:贋作妄想]あなたが対象と同エリアにいるなら「移動以外の効果を持つマニューバ」を宣言できない。「自身と対象」以外を移動マニューバの対象にできない。", "【信頼】[発狂:疑心暗鬼]あなた以外の全ての姉妹の最大行動値が減少する(-1)"]), "NMN": $$($nesting, 'Table').$new("中立者への未練表", "1D10", ["【忌避】[発狂:隔絶意識]あなたは未練の対象ないしサヴァントと同じエリアにいる間、「移動以外の効果を持つマニューバ」を宣言できない。また、「自身と未練の対象ないしサヴァント」以外を移動マニューバの対象にできない。", "【嫉妬】[発狂:不協和音]全ての姉妹は行動判定に修正-1を受ける。", "【依存】[発狂:幼児退行]最大行動値が減少する(-2)", "【憐憫】[発狂:過情移入]あなたは「サヴァント」に対する攻撃判定の出目に修正-1を受ける。", "【感謝】[発狂:病的返礼]発狂した際、あなたは任意の基本パーツ2つ(なければ最もレベルの低い強化パーツ1つ)を損傷する。", "【悔恨】[発狂:自業自棄]あなたが失敗した攻撃判定は全て、あなた自身の任意の箇所にダメージを与える。", "【期待】[発狂:希望転結]あなたは狂気点を追加して振り直しを行う際、出目に修正-1を受ける。(この効果は累積する)", "【保護】[発狂:生前回帰]あなたは「レギオン」をマニューバの対象に選べない。", "【尊敬】[発狂:神化崇拝]あなたは「他の姉妹」をマニューバの対象に選べない。", "【信頼】[発狂:疑心暗鬼]あなた以外の全ての姉妹の最大行動値が減少する(-1)"]), "NME": $$($nesting, 'Table').$new("敵への未練表", "1D10", ["【恐怖】[発狂:認識拒否]あなたは、行動判定・狂気判定の出目に修正-1を受ける。", "【隷属】[発狂:造反有理]あなたが失敗した攻撃判定は全て、大失敗として扱う。", "【不安】[発狂:挙動不審]最大行動値が減少する(-2)", "【憐憫】[発狂:感情移入]あなたは「サヴァント」に対する攻撃判定の出目に修正-1を受ける。", "【愛憎】[発狂:凶愛心中]あなたは狂気判定・攻撃判定で大成功するごとに[判定値-10]個の自身のパーツを選び、損傷させる。", "【悔恨】[発狂:自業自棄]あなたが失敗した攻撃判定は全て、あなた自身の任意の箇所にダメージを与える。", "【軽蔑】[発狂:眼中不在]同エリアの手駒があなたに対して行う攻撃判定の出目は修正+1を受ける。", "【憤怒】[発狂:激情暴走]あなたは、攻撃判定・狂気判定の出目に修正-1を受ける。", "【怨念】[発狂:不倶戴天]あなたは逃走判定ができない。あなたが「自身と未練の対象」以外を対象にしたマニューバを使用する際、行動値1点を追加で減らさなくてはいけない。", "【憎悪】[発狂:痕跡破壊]この未練を発狂した際、あなた以外の姉妹から1人選ぶ。その姉妹は任意のパーツを2つ損傷する。"])}).$freeze()); - return self.$setPrefixes($rb_plus(["\\d+NC", "\\d+NA"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Nechronica_Korean.js b/src/assets/dicebot/Nechronica_Korean.js deleted file mode 100644 index 9d1c98c9b..000000000 --- a/src/assets/dicebot/Nechronica_Korean.js +++ /dev/null @@ -1,193 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$gsub', '$last_match', '$nechronica_check', '$==', '$>=', '$count', '$<=', '$>', '$size', '$debug', '$=~', '$to_i', '$parren_killer', '$roll', '$+', '$<', '$to_s', '$map', '$split', '$to_proc', '$times', '$length', '$[]', '$[]=', '$-', '$join', '$inject', '$check_nD10', '$getHitLocation', '$!=']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Nechronica_Korean'); - - var $nesting = [self].concat($parent_nesting), $Nechronica_Korean_initialize$1, $Nechronica_Korean_changeText$2, $Nechronica_Korean_dice_command_xRn$7, $Nechronica_Korean_check_nD10$8, $Nechronica_Korean_nechronica_check$10, $Nechronica_Korean_getHitLocation$12; - - self.$$prototype.nick_e = nil; - - Opal.const_set($nesting[0], 'ID', "Nechronica:Korean"); - Opal.const_set($nesting[0], 'NAME', "네크로니카"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:네크로니카"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・판정 (nNC+m)\n" + " 주사위 수n、수정치m으로 판정굴림을 행합니다.\n" + " 주사위 수가 2개 이상일 때에 파츠파손 수도 표시합니다.\n" + "・공격판정 (nNA+m)\n" + " 주사위 수n、수정치m으로 공격판정굴림을 행합니다.\n" + " 명중부위와 주사위 수가 2개 이상일 때에 파츠파손 수도 표시합니다.\n"); - self.$setPrefixes(["(\\d+NC|\\d+NA)"]); - - Opal.def(self, '$initialize', $Nechronica_Korean_initialize$1 = function $$initialize() { - var $iter = $Nechronica_Korean_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Nechronica_Korean_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Nechronica_Korean_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 3; - return (self.defaultSuccessTarget = "6"); - }, $Nechronica_Korean_initialize$1.$$arity = 0); - - Opal.def(self, '$changeText', $Nechronica_Korean_changeText$2 = function $$changeText(string) { - var $$3, $$4, $$5, $$6, self = this; - - - string = $send(string, 'gsub', [/(\d+)NC(10)?([\+\-][\+\-\d]+)/i], ($$3 = function(){var self = $$3.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R10" + ($$($nesting, 'Regexp').$last_match(3)) + "[0]"}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - string = $send(string, 'gsub', [/(\d+)NC(10)?/i], ($$4 = function(){var self = $$4.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R10[0]"}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - string = $send(string, 'gsub', [/(\d+)NA(10)?([\+\-][\+\-\d]+)/i], ($$5 = function(){var self = $$5.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R10" + ($$($nesting, 'Regexp').$last_match(3)) + "[1]"}, $$5.$$s = self, $$5.$$arity = 0, $$5)); - string = $send(string, 'gsub', [/(\d+)NA(10)?/i], ($$6 = function(){var self = $$6.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R10[1]"}, $$6.$$s = self, $$6.$$arity = 0, $$6)); - return string; - }, $Nechronica_Korean_changeText$2.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $Nechronica_Korean_dice_command_xRn$7 = function $$dice_command_xRn(string, nick_e) { - var self = this; - - - self.nick_e = nick_e; - return self.$nechronica_check(string); - }, $Nechronica_Korean_dice_command_xRn$7.$$arity = 2); - - Opal.def(self, '$check_nD10', $Nechronica_Korean_check_nD10$8 = function $$check_nD10(total, _dice_total, dice_list, cmp_op, target) { - var $$9, self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_ge(total, 11))) { - return " > 대성공" - } else if ($truthy($rb_ge(total, target))) { - return " > 성공" - } else if ($send(dice_list, 'count', [], ($$9 = function(i){var self = $$9.$$s || this; - - - - if (i == null) { - i = nil; - }; - return $rb_le(i, 1);}, $$9.$$s = self, $$9.$$arity = 1, $$9))['$=='](0)) { - return " > 실패" - } else if ($truthy($rb_gt(dice_list.$size(), 1))) { - return " > 대실패 > 사용파츠 전부 손실" - } else { - return " > 대실패" - }; - }, $Nechronica_Korean_check_nD10$8.$$arity = 5); - - Opal.def(self, '$nechronica_check', $Nechronica_Korean_nechronica_check$10 = function $$nechronica_check(string) { - var $a, $b, $$11, self = this, output = nil, dice_n = nil, battleMode = nil, modText = nil, mod = nil, isBattleMode = nil, diff = nil, total_n = nil, _ = nil, dice_str = nil, n1 = nil, cnt_max = nil, n_max = nil, dice = nil, dice_total = nil, hit_loc = nil; - - - output = "1"; - self.$debug("nechronica_check string", string); - if ($truthy(/(^|\s)S?((\d+)[rR]10([\+\-\d]+)?(\[(\d+)\])?)(\s|$)/i['$=~'](string))) { - } else { - - self.$debug("nechronica_check unmuched"); - return output; - }; - string = $$($nesting, 'Regexp').$last_match(2); - dice_n = 1; - if ($truthy($$($nesting, 'Regexp').$last_match(3))) { - dice_n = $$($nesting, 'Regexp').$last_match(3).$to_i()}; - battleMode = $$($nesting, 'Regexp').$last_match(6).$to_i(); - modText = $$($nesting, 'Regexp').$last_match(4); - mod = self.$parren_killer("" + "(0" + (modText) + ")").$to_i(); - isBattleMode = battleMode['$=='](1); - self.$debug("nechronica_check string", string); - self.$debug("isBattleMode", isBattleMode); - diff = 6; - total_n = 0; - $b = self.$roll(dice_n, 10, 1), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), (n1 = ($a[2] == null ? nil : $a[2])), (cnt_max = ($a[3] == null ? nil : $a[3])), (n_max = ($a[4] == null ? nil : $a[4])), $b; - total_n = $rb_plus(n_max, mod); - output = "" + (self.nick_e) + ": (" + (string) + ") > [" + (dice_str) + "]"; - if ($truthy($rb_lt(mod, 0))) { - output = $rb_plus(output, mod.$to_s()) - } else if ($truthy($rb_gt(mod, 0))) { - output = $rb_plus(output, "" + "+" + (mod))}; - n1 = 0; - cnt_max = 0; - dice = $send(dice_str.$split(","), 'map', [], "to_i".$to_proc()); - $send(dice.$length(), 'times', [], ($$11 = function(i){var self = $$11.$$s || this, $writer = nil; - - - - if (i == null) { - i = nil; - }; - - $writer = [i, $rb_plus(dice['$[]'](i), mod)]; - $send(dice, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy($rb_le(dice['$[]'](i), 1))) { - n1 = $rb_plus(n1, 1)}; - if ($truthy($rb_ge(dice['$[]'](i), 10))) { - return (cnt_max = $rb_plus(cnt_max, 1)) - } else { - return nil - };}, $$11.$$s = self, $$11.$$arity = 1, $$11)); - dice_str = dice.$join(","); - output = $rb_plus(output, "" + " > " + (total_n) + "[" + (dice_str) + "]"); - dice_total = $send(dice, 'inject', [], "+".$to_proc()); - output = $rb_plus(output, self.$check_nD10(total_n, dice_total, dice, ">=", diff)); - self.$debug("dice_n, n1, total_n diff", dice_n, n1, total_n, diff); - if ($truthy(isBattleMode)) { - - hit_loc = self.$getHitLocation(total_n); - if ($truthy(hit_loc['$!=']("1"))) { - output = $rb_plus(output, "" + " > " + (hit_loc))};}; - return output; - }, $Nechronica_Korean_nechronica_check$10.$$arity = 1); - return (Opal.def(self, '$getHitLocation', $Nechronica_Korean_getHitLocation$12 = function $$getHitLocation(dice) { - var self = this, output = nil, table = nil, index = nil, addDamage = nil; - - - output = "1"; - self.$debug("getHitLocation dice", dice); - if ($truthy($rb_le(dice, 5))) { - return output}; - output = ""; - table = ["방어측 임의", "다리(없으면 공격측 임의)", "몸통(없으면 공격측 임의)", "팔(없으면 공격측 임의)", "머리(없으면 공격측 임의)", "공격측 임의"]; - index = $rb_minus(dice, 6); - addDamage = ""; - if ($truthy($rb_gt(dice, 10))) { - - index = 5; - addDamage = "" + "(추가 데미지" + ($rb_minus(dice, 10)) + ")";}; - output = $rb_plus(table['$[]'](index), addDamage); - return output; - }, $Nechronica_Korean_getHitLocation$12.$$arity = 1), nil) && 'getHitLocation'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/NeverCloud.js b/src/assets/dicebot/NeverCloud.js deleted file mode 100644 index eae8fb91b..000000000 --- a/src/assets/dicebot/NeverCloud.js +++ /dev/null @@ -1,61 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$match', '$to_i', '$[]', '$eval', '$new', '$==', '$roll', '$map', '$split', '$to_proc', '$+', '$count', '$>=', '$compact', '$join']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'NeverCloud'); - - var $nesting = [self].concat($parent_nesting), $NeverCloud_rollDiceCommand$1; - - - Opal.const_set($nesting[0], 'ID', "NeverCloud"); - Opal.const_set($nesting[0], 'NAME', "ネバークラウドTRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "ねはあくらうとTRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定(xNC±y>=z)\n" + " xD6の判定を行います。ファンブル、クリティカルの場合、その旨を出力します。\n" + " x:振るダイスの数。\n" + " ±y:固定値・修正値。省略可能。\n" + " z:目標値。省略可能。\n" + " 例) 2NC+2>=5 1NC\n"); - self.$setPrefixes(["\\d+NC.*", "\\d+D6?([\\+\\-\\d]*)>=\\d+"]); - return (Opal.def(self, '$rollDiceCommand', $NeverCloud_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $b, self = this, m = nil, dice_count = nil, modify_str = nil, modify_number = nil, cmp_str = nil, target = nil, dice_value = nil, dice_str = nil, dice_list = nil, total = nil, result = nil, sequence = nil; - - - m = /^(\d+)(?:NC|D6?)((?:[-+]\d+)*)(>=(\d+))?$/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - dice_count = m['$[]'](1).$to_i(); - modify_str = m['$[]'](2); - modify_number = $$($nesting, 'ArithmeticEvaluator').$new().$eval(modify_str); - cmp_str = m['$[]'](3); - target = ($truthy($a = m['$[]'](4)) ? m['$[]'](4).$to_i() : $a); - if (modify_number['$=='](0)) { - modify_str = ""}; - $b = self.$roll(dice_count, 6), $a = Opal.to_ary($b), (dice_value = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - dice_list = $send(dice_str.$split(","), 'map', [], "to_i".$to_proc()); - total = $rb_plus(dice_value, modify_number); - result = (function() {if (dice_list.$count(1)['$=='](dice_count)) { - - total = 0; - return "ファンブル"; - } else if ($truthy($rb_ge(dice_list.$count(6), 2))) { - return "クリティカル" - } else if ($truthy(target)) { - if ($truthy($rb_ge(total, target))) { - return "成功" - } else { - return "失敗" - } - } else { - return nil - }; return nil; })(); - sequence = ["" + "(" + (dice_count) + "D6" + (modify_str) + (cmp_str) + ")", "" + (dice_value) + "[" + (dice_str) + "]" + (modify_str), total, result].$compact(); - return sequence.$join(" > "); - }, $NeverCloud_rollDiceCommand$1.$$arity = 1), nil) && 'rollDiceCommand'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/NightWizard.js b/src/assets/dicebot/NightWizard.js deleted file mode 100644 index 2badfdf90..000000000 --- a/src/assets/dicebot/NightWizard.js +++ /dev/null @@ -1,845 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/normalize"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; - - Opal.add_stubs(['$module_function', '$===', '$==', '$to_i']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Normalize'); - - var $nesting = [self].concat($parent_nesting), $Normalize_comparison_operator$1, $Normalize_target_number$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Normalize_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if (/<=|==|=>/['$===']($case)) {return ">="} - else if (/<>|!=|=!/['$===']($case)) {return "!="} - else if (//['$===']($case)) {return ">"} - else if (/\=/['$===']($case)) {return "=="} - else { return nil }})() - }, $Normalize_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$target_number', $Normalize_target_number$2 = function $$target_number(val) { - var self = this; - - if (val['$==']("?")) { - return val - } else { - return val.$to_i() - } - }, $Normalize_target_number$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/format"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$module_function', '$===', '$to_s', '$==', '$>']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Format'); - - var $nesting = [self].concat($parent_nesting), $Format_comparison_operator$1, $Format_modifier$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Format_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if ("=="['$===']($case)) {return "="} - else if ("!="['$===']($case)) {return "<>"} - else if ($$($nesting, 'Symbol')['$===']($case)) {return op.$to_s()} - else { return nil }})() - }, $Format_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$modifier', $Format_modifier$2 = function $$modifier(number) { - var self = this; - - if (number['$=='](0)) { - return "" - } else if ($truthy($rb_gt(number, 0))) { - return "" + "+" + (number) - } else { - return number.$to_s() - } - }, $Format_modifier$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/command_parser"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$attr_accessor', '$include', '$format_modifier', '$===', '$join', '$tokenize', '$new', '$lhs', '$take_cmp_op', '$cmp_op=', '$-', '$cmp_op', '$expr', '$target_number=', '$<', '$size', '$private', '$split', '$gsub', '$take', '$literal?', '$command_suffix', '$loop', '$consume', '$+', '$mul', '$command=', '$modify_number=', '$critical', '$unary', '$critical=', '$fumble', '$fumble=', '$dollar', '$dollar=', '$each', '$==', '$=~', '$[]', '$comparison_operator']); - - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/normalize"); - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'CommandParser'); - - var $nesting = [self].concat($parent_nesting), $CommandParser_initialize$1, $CommandParser_parse$4, $CommandParser_tokenize$5, $CommandParser_lhs$7, $CommandParser_command_suffix$9, $CommandParser_literal$ques$11, $CommandParser_take$13, $CommandParser_take_cmp_op$14; - - self.$$prototype.error = self.$$prototype.parsed = self.$$prototype.idx = self.$$prototype.tokens = self.$$prototype.literals = nil; - - - Opal.def(self, '$initialize', $CommandParser_initialize$1 = function $$initialize($a) { - var $post_args, literals, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - literals = $post_args;; - self.literals = literals; - return (self.round_type = "omit"); - }, $CommandParser_initialize$1.$$arity = -1); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Parsed'); - - var $nesting = [self].concat($parent_nesting), $Parsed_initialize$2, $Parsed_to_s$3; - - self.$$prototype.critical = self.$$prototype.fumble = self.$$prototype.dollar = self.$$prototype.modify_number = self.$$prototype.command = self.$$prototype.cmp_op = self.$$prototype.target_number = nil; - - self.$attr_accessor("command", "critical", "fumble", "dollar", "modify_number", "cmp_op", "target_number"); - self.$include($$($nesting, 'ModifierFormatter')); - - Opal.def(self, '$initialize', $Parsed_initialize$2 = function $$initialize() { - var self = this; - - - self.critical = nil; - self.fumble = nil; - return (self.dollar = nil); - }, $Parsed_initialize$2.$$arity = 0); - return (Opal.def(self, '$to_s', $Parsed_to_s$3 = function $$to_s(suffix_position) { - var self = this, c = nil, f = nil, d = nil, m = nil, $case = nil; - - - - if (suffix_position == null) { - suffix_position = "after_command"; - }; - c = (function() {if ($truthy(self.critical)) { - return "" + "@" + (self.critical) - } else { - return nil - }; return nil; })(); - f = (function() {if ($truthy(self.fumble)) { - return "" + "#" + (self.fumble) - } else { - return nil - }; return nil; })(); - d = (function() {if ($truthy(self.dollar)) { - return "" + "$" + (self.dollar) - } else { - return nil - }; return nil; })(); - m = self.$format_modifier(self.modify_number); - return (function() {$case = suffix_position; - if ("after_command"['$===']($case)) {return [self.command, c, f, d, m, self.cmp_op, self.target_number].$join()} - else if ("after_modify_number"['$===']($case)) {return [self.command, m, c, f, d, self.cmp_op, self.target_number].$join()} - else if ("after_target_number"['$===']($case)) {return [self.command, m, self.cmp_op, self.target_number, c, f, d].$join()} - else { return nil }})(); - }, $Parsed_to_s$3.$$arity = -1), nil) && 'to_s'; - })($nesting[0], null, $nesting); - - Opal.def(self, '$parse', $CommandParser_parse$4 = function $$parse(expr, round_type) { - var $a, self = this, $writer = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - self.parsed = $$($nesting, 'Parsed').$new(); - self.$lhs(); - if ($truthy(self.error)) { - return nil}; - - $writer = [self.$take_cmp_op()]; - $send(self.parsed, 'cmp_op=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(self.parsed.$cmp_op())) { - return self.$expr() - } else { - return nil - }; return nil; })()]; - $send(self.parsed, 'target_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy(($truthy($a = $rb_lt(self.idx, self.tokens.$size())) ? $a : self.error))) { - return nil}; - return self.parsed; - }, $CommandParser_parse$4.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $CommandParser_tokenize$5 = function $$tokenize(expr) { - var $$6, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-*\/@#\$]|[<>!=]+/], ($$6 = function(e){var self = $$6.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$split(" ") - }, $CommandParser_tokenize$5.$$arity = 1); - - Opal.def(self, '$lhs', $CommandParser_lhs$7 = function $$lhs() { - var $$8, self = this, command = nil, ret = nil, $writer = nil; - - - command = self.$take(); - if ($truthy(self['$literal?'](command))) { - } else { - - self.error = true; - return nil; - }; - self.$command_suffix(); - ret = 0; - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$8 = function(){var self = $$8.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$8.$$s = self, $$8.$$brk = $brk, $$8.$$arity = 0, $$8)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - self.$command_suffix(); - - $writer = [command]; - $send(self.parsed, 'command=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [ret]; - $send(self.parsed, 'modify_number=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - }, $CommandParser_lhs$7.$$arity = 0); - - Opal.def(self, '$command_suffix', $CommandParser_command_suffix$9 = function $$command_suffix() { - var $$10, self = this; - - return (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$10 = function(){var self = $$10.$$s || this, $writer = nil; - if (self.parsed == null) self.parsed = nil; - - if ($truthy(self.$consume("@"))) { - - if ($truthy(self.parsed.$critical())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'critical=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else if ($truthy(self.$consume("#"))) { - - if ($truthy(self.parsed.$fumble())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'fumble=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else if ($truthy(self.$consume("$"))) { - - if ($truthy(self.parsed.$dollar())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'dollar=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else { - - Opal.brk(nil, $brk) - }}, $$10.$$s = self, $$10.$$brk = $brk, $$10.$$arity = 0, $$10)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})() - }, $CommandParser_command_suffix$9.$$arity = 0); - - Opal.def(self, '$literal?', $CommandParser_literal$ques$11 = function(command) {try { - - var $$12, self = this; - - - $send(self.literals, 'each', [], ($$12 = function(lit){var self = $$12.$$s || this, $case = nil; - - - - if (lit == null) { - lit = nil; - }; - return (function() {$case = lit; - if ($$($nesting, 'String')['$===']($case)) {if (command['$=='](lit)) { - Opal.ret(true) - } else { - return nil - }} - else if ($$($nesting, 'Regexp')['$===']($case)) {if ($truthy(command['$=~'](lit))) { - Opal.ret(true) - } else { - return nil - }} - else { return nil }})();}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - return false; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $CommandParser_literal$ques$11.$$arity = 1); - - Opal.def(self, '$take', $CommandParser_take$13 = function $$take() { - var self = this, ret = nil; - - - ret = self.tokens['$[]'](self.idx); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $CommandParser_take$13.$$arity = 0); - return (Opal.def(self, '$take_cmp_op', $CommandParser_take_cmp_op$14 = function $$take_cmp_op() { - var self = this; - - return $$($nesting, 'Normalize').$comparison_operator(self.$take()) - }, $CommandParser_take_cmp_op$14.$$arity = 0), nil) && 'take_cmp_op'; - })($nesting[0], $$($nesting, 'ArithmeticEvaluator'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$setPrefixes', '$parse_nw', '$parse_2r6', '$roll_nw', '$cmp_op', '$send', '$target_number', '$compact', '$to_s', '$join', '$private', '$attr_accessor', '$+', '$zero?', '$modifier', '$match', '$new', '$to_i', '$[]', '$base=', '$-', '$eval', '$modify_number=', '$map', '$split', '$to_proc', '$critical_numbers=', '$fumble_numbers=', '$prana=', '$active_modify_number=', '$comparison_operator', '$cmp_op=', '$target_number=', '$passive_modify_number=', '$critical_numbers', '$fumble_numbers', '$roll_once_first', '$==', '$roll_once', '$!=', '$prana', '$roll', '$fumble_base_number', '$passive_modify_number', '$active_modify_number', '$include?']); - - self.$require("utils/normalize"); - self.$require("utils/format"); - self.$require("utils/command_parser"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'NightWizard'); - - var $nesting = [self].concat($parent_nesting), $NightWizard_initialize$1, $NightWizard_rollDiceCommand$2, $NightWizard_parse_nw$7, $NightWizard_parse_2r6$8, $NightWizard_roll_nw$9, $NightWizard_roll_once$10, $NightWizard_roll_once_first$11, $NightWizard_fumble_base_number$12; - - self.$$prototype.nw_command = self.$$prototype.total = self.$$prototype.interim_expr = self.$$prototype.status = self.$$prototype.fumble_numbers = self.$$prototype.critical_numbers = nil; - - Opal.const_set($nesting[0], 'ID', "NightWizard"); - Opal.const_set($nesting[0], 'NAME', "ナイトウィザード The 2nd Edition"); - Opal.const_set($nesting[0], 'SORT_KEY', "ないとういさあと2"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定用コマンド (aNW+b@x#y$z+c)\n" + "  a : 基本値\n" + "  b : 常時に準じる特技による補正\n" + "  c : 常時以外の特技、および支援効果による補正(ファンブル時には適用されない)\n" + "  x : クリティカル値のカンマ区切り(省略時 10)\n" + "  y : ファンブル値のカンマ区切り(省略時 5)\n" + "  z : プラーナによる達成値補正のプラーナ消費数(ファンブル時には適用されない)\n" + " クリティカル値、ファンブル値が無い場合は1や13などのあり得ない数値を入れてください。\n" + " 例)12NW-5@7#2$3 1NW 50nw+5@7,10#2,5 50nw-5+10@7,10#2,5+15+25\n"); - self.$setPrefixes(["([-+]?\\d+)?NW.*", "2R6.*"]); - - Opal.def(self, '$initialize', $NightWizard_initialize$1 = function $$initialize() { - var $iter = $NightWizard_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $NightWizard_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $NightWizard_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.nw_command = "NW"); - }, $NightWizard_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $NightWizard_rollDiceCommand$2 = function $$rollDiceCommand(string) { - var $a, $b, self = this, cmd = nil, total = nil, interim_expr = nil, status = nil, result = nil, sequence = nil; - - - cmd = ($truthy($a = self.$parse_nw(string)) ? $a : self.$parse_2r6(string)); - if ($truthy(cmd)) { - } else { - return nil - }; - $b = self.$roll_nw(cmd), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (interim_expr = ($a[1] == null ? nil : $a[1])), (status = ($a[2] == null ? nil : $a[2])), $b; - result = (function() {if ($truthy(cmd.$cmp_op())) { - if ($truthy(total.$send(cmd.$cmp_op(), cmd.$target_number()))) { - return "成功" - } else { - return "失敗" - } - } else { - return nil - }; return nil; })(); - sequence = ["" + "(" + (cmd) + ")", interim_expr, status, total.$to_s(), result].$compact(); - return sequence.$join(" > "); - }, $NightWizard_rollDiceCommand$2.$$arity = 1); - self.$private(); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Parsed'); - - var $nesting = [self].concat($parent_nesting); - - - self.$attr_accessor("critical_numbers"); - self.$attr_accessor("fumble_numbers"); - self.$attr_accessor("prana"); - self.$attr_accessor("active_modify_number"); - self.$attr_accessor("cmp_op"); - return self.$attr_accessor("target_number"); - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ParsedNW'); - - var $nesting = [self].concat($parent_nesting), $ParsedNW_initialize$3, $ParsedNW_passive_modify_number$4, $ParsedNW_to_s$5; - - self.$$prototype.base = self.$$prototype.modify_number = self.$$prototype.active_modify_number = self.$$prototype.prana = self.$$prototype.command = self.$$prototype.critical_numbers = self.$$prototype.fumble_numbers = self.$$prototype.cmp_op = self.$$prototype.target_number = nil; - - self.$attr_accessor("base"); - self.$attr_accessor("modify_number"); - - Opal.def(self, '$initialize', $ParsedNW_initialize$3 = function $$initialize(command) { - var self = this; - - return (self.command = command) - }, $ParsedNW_initialize$3.$$arity = 1); - - Opal.def(self, '$passive_modify_number', $ParsedNW_passive_modify_number$4 = function $$passive_modify_number() { - var self = this; - - return $rb_plus(self.base, self.modify_number) - }, $ParsedNW_passive_modify_number$4.$$arity = 0); - return (Opal.def(self, '$to_s', $ParsedNW_to_s$5 = function $$to_s() { - var $a, self = this, base = nil, modify_number = nil, active_modify_number = nil, dollar = nil; - - - base = (function() {if ($truthy(self.base['$zero?']())) { - return nil - } else { - return self.base - }; return nil; })(); - modify_number = $$($nesting, 'Format').$modifier(self.modify_number); - active_modify_number = $$($nesting, 'Format').$modifier(self.active_modify_number); - dollar = ($truthy($a = self.prana) ? "" + "$" + (self.prana) : $a); - return "" + (base) + (self.command) + (modify_number) + "@" + (self.critical_numbers.$join(",")) + "#" + (self.fumble_numbers.$join(",")) + (dollar) + (active_modify_number) + (self.cmp_op) + (self.target_number); - }, $ParsedNW_to_s$5.$$arity = 0), nil) && 'to_s'; - })($nesting[0], $$($nesting, 'Parsed'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Parsed2R6'); - - var $nesting = [self].concat($parent_nesting), $Parsed2R6_to_s$6; - - self.$$prototype.passive_modify_number = self.$$prototype.active_modify_number = self.$$prototype.critical_numbers = self.$$prototype.fumble_numbers = self.$$prototype.cmp_op = self.$$prototype.target_number = nil; - - self.$attr_accessor("passive_modify_number"); - return (Opal.def(self, '$to_s', $Parsed2R6_to_s$6 = function $$to_s() { - var self = this; - - return "" + "2R6M[" + (self.passive_modify_number) + "," + (self.active_modify_number) + "]C[" + (self.critical_numbers.$join(",")) + "]F[" + (self.fumble_numbers.$join(",")) + "]" + (self.cmp_op) + (self.target_number) - }, $Parsed2R6_to_s$6.$$arity = 0), nil) && 'to_s'; - })($nesting[0], $$($nesting, 'Parsed'), $nesting); - - Opal.def(self, '$parse_nw', $NightWizard_parse_nw$7 = function $$parse_nw(string) { - var $a, self = this, m = nil, ae = nil, command = nil, $writer = nil; - - - m = new RegExp("" + "^([-+]?\\d+)?" + (self.nw_command) + "((?:[-+]\\d+)+)?(?:@(\\d+(?:,\\d+)*))?(?:#(\\d+(?:,\\d+)*))?(?:\\$(\\d+(?:,\\d+)*))?((?:[-+]\\d+)+)?(?:([>=]+)(\\d+))?$").$match(string); - if ($truthy(m)) { - } else { - return nil - }; - ae = $$($nesting, 'ArithmeticEvaluator').$new(); - command = $$($nesting, 'ParsedNW').$new(self.nw_command); - - $writer = [m['$[]'](1).$to_i()]; - $send(command, 'base=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](2))) { - return ae.$eval(m['$[]'](2)) - } else { - return 0 - }; return nil; })()]; - $send(command, 'modify_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](3))) { - return $send(m['$[]'](3).$split(","), 'map', [], "to_i".$to_proc()) - } else { - return [10] - }; return nil; })()]; - $send(command, 'critical_numbers=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](4))) { - return $send(m['$[]'](4).$split(","), 'map', [], "to_i".$to_proc()) - } else { - return [5] - }; return nil; })()]; - $send(command, 'fumble_numbers=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [($truthy($a = m['$[]'](5)) ? m['$[]'](5).$to_i() : $a)]; - $send(command, 'prana=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](6))) { - return ae.$eval(m['$[]'](6)) - } else { - return 0 - }; return nil; })()]; - $send(command, 'active_modify_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [$$($nesting, 'Normalize').$comparison_operator(m['$[]'](7))]; - $send(command, 'cmp_op=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [($truthy($a = m['$[]'](8)) ? m['$[]'](8).$to_i() : $a)]; - $send(command, 'target_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return command; - }, $NightWizard_parse_nw$7.$$arity = 1); - - Opal.def(self, '$parse_2r6', $NightWizard_parse_2r6$8 = function $$parse_2r6(string) { - var $a, self = this, m = nil, ae = nil, command = nil, $writer = nil; - - - m = /^2R6m\[([-+]?\d+(?:[-+]\d+)*)(?:,([-+]?\d+(?:[-+]\d+)*))?\](?:c\[(\d+(?:,\d+)*)\])?(?:f\[(\d+(?:,\d+)*)\])?(?:([>=]+)(\d+))?/i.$match(string); - if ($truthy(m)) { - } else { - return nil - }; - ae = $$($nesting, 'ArithmeticEvaluator').$new(); - command = $$($nesting, 'Parsed2R6').$new(); - - $writer = [ae.$eval(m['$[]'](1))]; - $send(command, 'passive_modify_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](2))) { - return ae.$eval(m['$[]'](2)) - } else { - return 0 - }; return nil; })()]; - $send(command, 'active_modify_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](3))) { - return $send(m['$[]'](3).$split(","), 'map', [], "to_i".$to_proc()) - } else { - return [10] - }; return nil; })()]; - $send(command, 'critical_numbers=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](4))) { - return $send(m['$[]'](4).$split(","), 'map', [], "to_i".$to_proc()) - } else { - return [5] - }; return nil; })()]; - $send(command, 'fumble_numbers=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [$$($nesting, 'Normalize').$comparison_operator(m['$[]'](5))]; - $send(command, 'cmp_op=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [($truthy($a = m['$[]'](6)) ? m['$[]'](6).$to_i() : $a)]; - $send(command, 'target_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return command; - }, $NightWizard_parse_2r6$8.$$arity = 1); - - Opal.def(self, '$roll_nw', $NightWizard_roll_nw$9 = function $$roll_nw(parsed) { - var $a, $b, self = this, status = nil, prana_bonus = nil, prana_list = nil, base = nil; - - - self.critical_numbers = parsed.$critical_numbers(); - self.fumble_numbers = parsed.$fumble_numbers(); - self.total = 0; - self.interim_expr = ""; - self.status = nil; - status = self.$roll_once_first(); - while (status['$==']("critical")) { - status = self.$roll_once() - }; - if ($truthy(($truthy($a = status['$!=']("fumble")) ? parsed.$prana() : $a))) { - - $b = self.$roll(parsed.$prana(), 6), $a = Opal.to_ary($b), (prana_bonus = ($a[0] == null ? nil : $a[0])), (prana_list = ($a[1] == null ? nil : $a[1])), $b; - self.total = $rb_plus(self.total, prana_bonus); - self.interim_expr = $rb_plus(self.interim_expr, "" + "+" + (prana_bonus) + "[" + (prana_list) + "]");}; - base = (function() {if (status['$==']("fumble")) { - return self.$fumble_base_number(parsed) - } else { - return $rb_plus(parsed.$passive_modify_number(), parsed.$active_modify_number()) - }; return nil; })(); - self.total = $rb_plus(self.total, base); - self.interim_expr = $rb_plus(base.$to_s(), self.interim_expr); - return [self.total, self.interim_expr, self.status]; - }, $NightWizard_roll_nw$9.$$arity = 1); - - Opal.def(self, '$roll_once', $NightWizard_roll_once$10 = function $$roll_once(fumbleable) { - var $a, $b, self = this, dice_value = nil, dice_str = nil; - - - - if (fumbleable == null) { - fumbleable = false; - }; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice_value = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = fumbleable) ? self.fumble_numbers['$include?'](dice_value) : $a))) { - - self.total = $rb_minus(self.total, 10); - self.interim_expr = $rb_plus(self.interim_expr, "" + "-10[" + (dice_str) + "]"); - self.status = "ファンブル"; - return "fumble"; - } else if ($truthy(self.critical_numbers['$include?'](dice_value))) { - - self.total = $rb_plus(self.total, 10); - self.interim_expr = $rb_plus(self.interim_expr, "" + "+10[" + (dice_str) + "]"); - self.status = "クリティカル"; - return "critical"; - } else { - - self.total = $rb_plus(self.total, dice_value); - self.interim_expr = $rb_plus(self.interim_expr, "" + "+" + (dice_value) + "[" + (dice_str) + "]"); - return nil; - }; - }, $NightWizard_roll_once$10.$$arity = -1); - - Opal.def(self, '$roll_once_first', $NightWizard_roll_once_first$11 = function $$roll_once_first() { - var self = this; - - return self.$roll_once(true) - }, $NightWizard_roll_once_first$11.$$arity = 0); - return (Opal.def(self, '$fumble_base_number', $NightWizard_fumble_base_number$12 = function $$fumble_base_number(parsed) { - var self = this; - - return parsed.$passive_modify_number() - }, $NightWizard_fumble_base_number$12.$$arity = 1), nil) && 'fumble_base_number'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/NightWizard3rd.js b/src/assets/dicebot/NightWizard3rd.js deleted file mode 100644 index 04165fc6c..000000000 --- a/src/assets/dicebot/NightWizard3rd.js +++ /dev/null @@ -1,873 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/normalize"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; - - Opal.add_stubs(['$module_function', '$===', '$==', '$to_i']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Normalize'); - - var $nesting = [self].concat($parent_nesting), $Normalize_comparison_operator$1, $Normalize_target_number$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Normalize_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if (/<=|==|=>/['$===']($case)) {return ">="} - else if (/<>|!=|=!/['$===']($case)) {return "!="} - else if (//['$===']($case)) {return ">"} - else if (/\=/['$===']($case)) {return "=="} - else { return nil }})() - }, $Normalize_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$target_number', $Normalize_target_number$2 = function $$target_number(val) { - var self = this; - - if (val['$==']("?")) { - return val - } else { - return val.$to_i() - } - }, $Normalize_target_number$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/format"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$module_function', '$===', '$to_s', '$==', '$>']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Format'); - - var $nesting = [self].concat($parent_nesting), $Format_comparison_operator$1, $Format_modifier$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Format_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if ("=="['$===']($case)) {return "="} - else if ("!="['$===']($case)) {return "<>"} - else if ($$($nesting, 'Symbol')['$===']($case)) {return op.$to_s()} - else { return nil }})() - }, $Format_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$modifier', $Format_modifier$2 = function $$modifier(number) { - var self = this; - - if (number['$=='](0)) { - return "" - } else if ($truthy($rb_gt(number, 0))) { - return "" + "+" + (number) - } else { - return number.$to_s() - } - }, $Format_modifier$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/command_parser"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$attr_accessor', '$include', '$format_modifier', '$===', '$join', '$tokenize', '$new', '$lhs', '$take_cmp_op', '$cmp_op=', '$-', '$cmp_op', '$expr', '$target_number=', '$<', '$size', '$private', '$split', '$gsub', '$take', '$literal?', '$command_suffix', '$loop', '$consume', '$+', '$mul', '$command=', '$modify_number=', '$critical', '$unary', '$critical=', '$fumble', '$fumble=', '$dollar', '$dollar=', '$each', '$==', '$=~', '$[]', '$comparison_operator']); - - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/normalize"); - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'CommandParser'); - - var $nesting = [self].concat($parent_nesting), $CommandParser_initialize$1, $CommandParser_parse$4, $CommandParser_tokenize$5, $CommandParser_lhs$7, $CommandParser_command_suffix$9, $CommandParser_literal$ques$11, $CommandParser_take$13, $CommandParser_take_cmp_op$14; - - self.$$prototype.error = self.$$prototype.parsed = self.$$prototype.idx = self.$$prototype.tokens = self.$$prototype.literals = nil; - - - Opal.def(self, '$initialize', $CommandParser_initialize$1 = function $$initialize($a) { - var $post_args, literals, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - literals = $post_args;; - self.literals = literals; - return (self.round_type = "omit"); - }, $CommandParser_initialize$1.$$arity = -1); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Parsed'); - - var $nesting = [self].concat($parent_nesting), $Parsed_initialize$2, $Parsed_to_s$3; - - self.$$prototype.critical = self.$$prototype.fumble = self.$$prototype.dollar = self.$$prototype.modify_number = self.$$prototype.command = self.$$prototype.cmp_op = self.$$prototype.target_number = nil; - - self.$attr_accessor("command", "critical", "fumble", "dollar", "modify_number", "cmp_op", "target_number"); - self.$include($$($nesting, 'ModifierFormatter')); - - Opal.def(self, '$initialize', $Parsed_initialize$2 = function $$initialize() { - var self = this; - - - self.critical = nil; - self.fumble = nil; - return (self.dollar = nil); - }, $Parsed_initialize$2.$$arity = 0); - return (Opal.def(self, '$to_s', $Parsed_to_s$3 = function $$to_s(suffix_position) { - var self = this, c = nil, f = nil, d = nil, m = nil, $case = nil; - - - - if (suffix_position == null) { - suffix_position = "after_command"; - }; - c = (function() {if ($truthy(self.critical)) { - return "" + "@" + (self.critical) - } else { - return nil - }; return nil; })(); - f = (function() {if ($truthy(self.fumble)) { - return "" + "#" + (self.fumble) - } else { - return nil - }; return nil; })(); - d = (function() {if ($truthy(self.dollar)) { - return "" + "$" + (self.dollar) - } else { - return nil - }; return nil; })(); - m = self.$format_modifier(self.modify_number); - return (function() {$case = suffix_position; - if ("after_command"['$===']($case)) {return [self.command, c, f, d, m, self.cmp_op, self.target_number].$join()} - else if ("after_modify_number"['$===']($case)) {return [self.command, m, c, f, d, self.cmp_op, self.target_number].$join()} - else if ("after_target_number"['$===']($case)) {return [self.command, m, self.cmp_op, self.target_number, c, f, d].$join()} - else { return nil }})(); - }, $Parsed_to_s$3.$$arity = -1), nil) && 'to_s'; - })($nesting[0], null, $nesting); - - Opal.def(self, '$parse', $CommandParser_parse$4 = function $$parse(expr, round_type) { - var $a, self = this, $writer = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - self.parsed = $$($nesting, 'Parsed').$new(); - self.$lhs(); - if ($truthy(self.error)) { - return nil}; - - $writer = [self.$take_cmp_op()]; - $send(self.parsed, 'cmp_op=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(self.parsed.$cmp_op())) { - return self.$expr() - } else { - return nil - }; return nil; })()]; - $send(self.parsed, 'target_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy(($truthy($a = $rb_lt(self.idx, self.tokens.$size())) ? $a : self.error))) { - return nil}; - return self.parsed; - }, $CommandParser_parse$4.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $CommandParser_tokenize$5 = function $$tokenize(expr) { - var $$6, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-*\/@#\$]|[<>!=]+/], ($$6 = function(e){var self = $$6.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$split(" ") - }, $CommandParser_tokenize$5.$$arity = 1); - - Opal.def(self, '$lhs', $CommandParser_lhs$7 = function $$lhs() { - var $$8, self = this, command = nil, ret = nil, $writer = nil; - - - command = self.$take(); - if ($truthy(self['$literal?'](command))) { - } else { - - self.error = true; - return nil; - }; - self.$command_suffix(); - ret = 0; - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$8 = function(){var self = $$8.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$8.$$s = self, $$8.$$brk = $brk, $$8.$$arity = 0, $$8)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - self.$command_suffix(); - - $writer = [command]; - $send(self.parsed, 'command=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [ret]; - $send(self.parsed, 'modify_number=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - }, $CommandParser_lhs$7.$$arity = 0); - - Opal.def(self, '$command_suffix', $CommandParser_command_suffix$9 = function $$command_suffix() { - var $$10, self = this; - - return (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$10 = function(){var self = $$10.$$s || this, $writer = nil; - if (self.parsed == null) self.parsed = nil; - - if ($truthy(self.$consume("@"))) { - - if ($truthy(self.parsed.$critical())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'critical=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else if ($truthy(self.$consume("#"))) { - - if ($truthy(self.parsed.$fumble())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'fumble=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else if ($truthy(self.$consume("$"))) { - - if ($truthy(self.parsed.$dollar())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'dollar=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else { - - Opal.brk(nil, $brk) - }}, $$10.$$s = self, $$10.$$brk = $brk, $$10.$$arity = 0, $$10)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})() - }, $CommandParser_command_suffix$9.$$arity = 0); - - Opal.def(self, '$literal?', $CommandParser_literal$ques$11 = function(command) {try { - - var $$12, self = this; - - - $send(self.literals, 'each', [], ($$12 = function(lit){var self = $$12.$$s || this, $case = nil; - - - - if (lit == null) { - lit = nil; - }; - return (function() {$case = lit; - if ($$($nesting, 'String')['$===']($case)) {if (command['$=='](lit)) { - Opal.ret(true) - } else { - return nil - }} - else if ($$($nesting, 'Regexp')['$===']($case)) {if ($truthy(command['$=~'](lit))) { - Opal.ret(true) - } else { - return nil - }} - else { return nil }})();}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - return false; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $CommandParser_literal$ques$11.$$arity = 1); - - Opal.def(self, '$take', $CommandParser_take$13 = function $$take() { - var self = this, ret = nil; - - - ret = self.tokens['$[]'](self.idx); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $CommandParser_take$13.$$arity = 0); - return (Opal.def(self, '$take_cmp_op', $CommandParser_take_cmp_op$14 = function $$take_cmp_op() { - var self = this; - - return $$($nesting, 'Normalize').$comparison_operator(self.$take()) - }, $CommandParser_take_cmp_op$14.$$arity = 0), nil) && 'take_cmp_op'; - })($nesting[0], $$($nesting, 'ArithmeticEvaluator'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/NightWizard"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$setPrefixes', '$parse_nw', '$parse_2r6', '$roll_nw', '$cmp_op', '$send', '$target_number', '$compact', '$to_s', '$join', '$private', '$attr_accessor', '$+', '$zero?', '$modifier', '$match', '$new', '$to_i', '$[]', '$base=', '$-', '$eval', '$modify_number=', '$map', '$split', '$to_proc', '$critical_numbers=', '$fumble_numbers=', '$prana=', '$active_modify_number=', '$comparison_operator', '$cmp_op=', '$target_number=', '$passive_modify_number=', '$critical_numbers', '$fumble_numbers', '$roll_once_first', '$==', '$roll_once', '$!=', '$prana', '$roll', '$fumble_base_number', '$passive_modify_number', '$active_modify_number', '$include?']); - - self.$require("utils/normalize"); - self.$require("utils/format"); - self.$require("utils/command_parser"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'NightWizard'); - - var $nesting = [self].concat($parent_nesting), $NightWizard_initialize$1, $NightWizard_rollDiceCommand$2, $NightWizard_parse_nw$7, $NightWizard_parse_2r6$8, $NightWizard_roll_nw$9, $NightWizard_roll_once$10, $NightWizard_roll_once_first$11, $NightWizard_fumble_base_number$12; - - self.$$prototype.nw_command = self.$$prototype.total = self.$$prototype.interim_expr = self.$$prototype.status = self.$$prototype.fumble_numbers = self.$$prototype.critical_numbers = nil; - - Opal.const_set($nesting[0], 'ID', "NightWizard"); - Opal.const_set($nesting[0], 'NAME', "ナイトウィザード The 2nd Edition"); - Opal.const_set($nesting[0], 'SORT_KEY', "ないとういさあと2"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定用コマンド (aNW+b@x#y$z+c)\n" + "  a : 基本値\n" + "  b : 常時に準じる特技による補正\n" + "  c : 常時以外の特技、および支援効果による補正(ファンブル時には適用されない)\n" + "  x : クリティカル値のカンマ区切り(省略時 10)\n" + "  y : ファンブル値のカンマ区切り(省略時 5)\n" + "  z : プラーナによる達成値補正のプラーナ消費数(ファンブル時には適用されない)\n" + " クリティカル値、ファンブル値が無い場合は1や13などのあり得ない数値を入れてください。\n" + " 例)12NW-5@7#2$3 1NW 50nw+5@7,10#2,5 50nw-5+10@7,10#2,5+15+25\n"); - self.$setPrefixes(["([-+]?\\d+)?NW.*", "2R6.*"]); - - Opal.def(self, '$initialize', $NightWizard_initialize$1 = function $$initialize() { - var $iter = $NightWizard_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $NightWizard_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $NightWizard_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.nw_command = "NW"); - }, $NightWizard_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $NightWizard_rollDiceCommand$2 = function $$rollDiceCommand(string) { - var $a, $b, self = this, cmd = nil, total = nil, interim_expr = nil, status = nil, result = nil, sequence = nil; - - - cmd = ($truthy($a = self.$parse_nw(string)) ? $a : self.$parse_2r6(string)); - if ($truthy(cmd)) { - } else { - return nil - }; - $b = self.$roll_nw(cmd), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (interim_expr = ($a[1] == null ? nil : $a[1])), (status = ($a[2] == null ? nil : $a[2])), $b; - result = (function() {if ($truthy(cmd.$cmp_op())) { - if ($truthy(total.$send(cmd.$cmp_op(), cmd.$target_number()))) { - return "成功" - } else { - return "失敗" - } - } else { - return nil - }; return nil; })(); - sequence = ["" + "(" + (cmd) + ")", interim_expr, status, total.$to_s(), result].$compact(); - return sequence.$join(" > "); - }, $NightWizard_rollDiceCommand$2.$$arity = 1); - self.$private(); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Parsed'); - - var $nesting = [self].concat($parent_nesting); - - - self.$attr_accessor("critical_numbers"); - self.$attr_accessor("fumble_numbers"); - self.$attr_accessor("prana"); - self.$attr_accessor("active_modify_number"); - self.$attr_accessor("cmp_op"); - return self.$attr_accessor("target_number"); - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ParsedNW'); - - var $nesting = [self].concat($parent_nesting), $ParsedNW_initialize$3, $ParsedNW_passive_modify_number$4, $ParsedNW_to_s$5; - - self.$$prototype.base = self.$$prototype.modify_number = self.$$prototype.active_modify_number = self.$$prototype.prana = self.$$prototype.command = self.$$prototype.critical_numbers = self.$$prototype.fumble_numbers = self.$$prototype.cmp_op = self.$$prototype.target_number = nil; - - self.$attr_accessor("base"); - self.$attr_accessor("modify_number"); - - Opal.def(self, '$initialize', $ParsedNW_initialize$3 = function $$initialize(command) { - var self = this; - - return (self.command = command) - }, $ParsedNW_initialize$3.$$arity = 1); - - Opal.def(self, '$passive_modify_number', $ParsedNW_passive_modify_number$4 = function $$passive_modify_number() { - var self = this; - - return $rb_plus(self.base, self.modify_number) - }, $ParsedNW_passive_modify_number$4.$$arity = 0); - return (Opal.def(self, '$to_s', $ParsedNW_to_s$5 = function $$to_s() { - var $a, self = this, base = nil, modify_number = nil, active_modify_number = nil, dollar = nil; - - - base = (function() {if ($truthy(self.base['$zero?']())) { - return nil - } else { - return self.base - }; return nil; })(); - modify_number = $$($nesting, 'Format').$modifier(self.modify_number); - active_modify_number = $$($nesting, 'Format').$modifier(self.active_modify_number); - dollar = ($truthy($a = self.prana) ? "" + "$" + (self.prana) : $a); - return "" + (base) + (self.command) + (modify_number) + "@" + (self.critical_numbers.$join(",")) + "#" + (self.fumble_numbers.$join(",")) + (dollar) + (active_modify_number) + (self.cmp_op) + (self.target_number); - }, $ParsedNW_to_s$5.$$arity = 0), nil) && 'to_s'; - })($nesting[0], $$($nesting, 'Parsed'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Parsed2R6'); - - var $nesting = [self].concat($parent_nesting), $Parsed2R6_to_s$6; - - self.$$prototype.passive_modify_number = self.$$prototype.active_modify_number = self.$$prototype.critical_numbers = self.$$prototype.fumble_numbers = self.$$prototype.cmp_op = self.$$prototype.target_number = nil; - - self.$attr_accessor("passive_modify_number"); - return (Opal.def(self, '$to_s', $Parsed2R6_to_s$6 = function $$to_s() { - var self = this; - - return "" + "2R6M[" + (self.passive_modify_number) + "," + (self.active_modify_number) + "]C[" + (self.critical_numbers.$join(",")) + "]F[" + (self.fumble_numbers.$join(",")) + "]" + (self.cmp_op) + (self.target_number) - }, $Parsed2R6_to_s$6.$$arity = 0), nil) && 'to_s'; - })($nesting[0], $$($nesting, 'Parsed'), $nesting); - - Opal.def(self, '$parse_nw', $NightWizard_parse_nw$7 = function $$parse_nw(string) { - var $a, self = this, m = nil, ae = nil, command = nil, $writer = nil; - - - m = new RegExp("" + "^([-+]?\\d+)?" + (self.nw_command) + "((?:[-+]\\d+)+)?(?:@(\\d+(?:,\\d+)*))?(?:#(\\d+(?:,\\d+)*))?(?:\\$(\\d+(?:,\\d+)*))?((?:[-+]\\d+)+)?(?:([>=]+)(\\d+))?$").$match(string); - if ($truthy(m)) { - } else { - return nil - }; - ae = $$($nesting, 'ArithmeticEvaluator').$new(); - command = $$($nesting, 'ParsedNW').$new(self.nw_command); - - $writer = [m['$[]'](1).$to_i()]; - $send(command, 'base=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](2))) { - return ae.$eval(m['$[]'](2)) - } else { - return 0 - }; return nil; })()]; - $send(command, 'modify_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](3))) { - return $send(m['$[]'](3).$split(","), 'map', [], "to_i".$to_proc()) - } else { - return [10] - }; return nil; })()]; - $send(command, 'critical_numbers=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](4))) { - return $send(m['$[]'](4).$split(","), 'map', [], "to_i".$to_proc()) - } else { - return [5] - }; return nil; })()]; - $send(command, 'fumble_numbers=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [($truthy($a = m['$[]'](5)) ? m['$[]'](5).$to_i() : $a)]; - $send(command, 'prana=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](6))) { - return ae.$eval(m['$[]'](6)) - } else { - return 0 - }; return nil; })()]; - $send(command, 'active_modify_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [$$($nesting, 'Normalize').$comparison_operator(m['$[]'](7))]; - $send(command, 'cmp_op=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [($truthy($a = m['$[]'](8)) ? m['$[]'](8).$to_i() : $a)]; - $send(command, 'target_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return command; - }, $NightWizard_parse_nw$7.$$arity = 1); - - Opal.def(self, '$parse_2r6', $NightWizard_parse_2r6$8 = function $$parse_2r6(string) { - var $a, self = this, m = nil, ae = nil, command = nil, $writer = nil; - - - m = /^2R6m\[([-+]?\d+(?:[-+]\d+)*)(?:,([-+]?\d+(?:[-+]\d+)*))?\](?:c\[(\d+(?:,\d+)*)\])?(?:f\[(\d+(?:,\d+)*)\])?(?:([>=]+)(\d+))?/i.$match(string); - if ($truthy(m)) { - } else { - return nil - }; - ae = $$($nesting, 'ArithmeticEvaluator').$new(); - command = $$($nesting, 'Parsed2R6').$new(); - - $writer = [ae.$eval(m['$[]'](1))]; - $send(command, 'passive_modify_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](2))) { - return ae.$eval(m['$[]'](2)) - } else { - return 0 - }; return nil; })()]; - $send(command, 'active_modify_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](3))) { - return $send(m['$[]'](3).$split(","), 'map', [], "to_i".$to_proc()) - } else { - return [10] - }; return nil; })()]; - $send(command, 'critical_numbers=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](4))) { - return $send(m['$[]'](4).$split(","), 'map', [], "to_i".$to_proc()) - } else { - return [5] - }; return nil; })()]; - $send(command, 'fumble_numbers=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [$$($nesting, 'Normalize').$comparison_operator(m['$[]'](5))]; - $send(command, 'cmp_op=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [($truthy($a = m['$[]'](6)) ? m['$[]'](6).$to_i() : $a)]; - $send(command, 'target_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return command; - }, $NightWizard_parse_2r6$8.$$arity = 1); - - Opal.def(self, '$roll_nw', $NightWizard_roll_nw$9 = function $$roll_nw(parsed) { - var $a, $b, self = this, status = nil, prana_bonus = nil, prana_list = nil, base = nil; - - - self.critical_numbers = parsed.$critical_numbers(); - self.fumble_numbers = parsed.$fumble_numbers(); - self.total = 0; - self.interim_expr = ""; - self.status = nil; - status = self.$roll_once_first(); - while (status['$==']("critical")) { - status = self.$roll_once() - }; - if ($truthy(($truthy($a = status['$!=']("fumble")) ? parsed.$prana() : $a))) { - - $b = self.$roll(parsed.$prana(), 6), $a = Opal.to_ary($b), (prana_bonus = ($a[0] == null ? nil : $a[0])), (prana_list = ($a[1] == null ? nil : $a[1])), $b; - self.total = $rb_plus(self.total, prana_bonus); - self.interim_expr = $rb_plus(self.interim_expr, "" + "+" + (prana_bonus) + "[" + (prana_list) + "]");}; - base = (function() {if (status['$==']("fumble")) { - return self.$fumble_base_number(parsed) - } else { - return $rb_plus(parsed.$passive_modify_number(), parsed.$active_modify_number()) - }; return nil; })(); - self.total = $rb_plus(self.total, base); - self.interim_expr = $rb_plus(base.$to_s(), self.interim_expr); - return [self.total, self.interim_expr, self.status]; - }, $NightWizard_roll_nw$9.$$arity = 1); - - Opal.def(self, '$roll_once', $NightWizard_roll_once$10 = function $$roll_once(fumbleable) { - var $a, $b, self = this, dice_value = nil, dice_str = nil; - - - - if (fumbleable == null) { - fumbleable = false; - }; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice_value = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = fumbleable) ? self.fumble_numbers['$include?'](dice_value) : $a))) { - - self.total = $rb_minus(self.total, 10); - self.interim_expr = $rb_plus(self.interim_expr, "" + "-10[" + (dice_str) + "]"); - self.status = "ファンブル"; - return "fumble"; - } else if ($truthy(self.critical_numbers['$include?'](dice_value))) { - - self.total = $rb_plus(self.total, 10); - self.interim_expr = $rb_plus(self.interim_expr, "" + "+10[" + (dice_str) + "]"); - self.status = "クリティカル"; - return "critical"; - } else { - - self.total = $rb_plus(self.total, dice_value); - self.interim_expr = $rb_plus(self.interim_expr, "" + "+" + (dice_value) + "[" + (dice_str) + "]"); - return nil; - }; - }, $NightWizard_roll_once$10.$$arity = -1); - - Opal.def(self, '$roll_once_first', $NightWizard_roll_once_first$11 = function $$roll_once_first() { - var self = this; - - return self.$roll_once(true) - }, $NightWizard_roll_once_first$11.$$arity = 0); - return (Opal.def(self, '$fumble_base_number', $NightWizard_fumble_base_number$12 = function $$fumble_base_number(parsed) { - var self = this; - - return parsed.$passive_modify_number() - }, $NightWizard_fumble_base_number$12.$$arity = 1), nil) && 'fumble_base_number'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; - - Opal.add_stubs(['$require', '$setPrefixes', '$+', '$passive_modify_number', '$active_modify_number']); - - self.$require("diceBot/NightWizard"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'NightWizard3rd'); - - var $nesting = [self].concat($parent_nesting), $NightWizard3rd_fumble_base_number$1; - - - Opal.const_set($nesting[0], 'NAME', "ナイトウィザード The 3rd Edition"); - Opal.const_set($nesting[0], 'SORT_KEY', "ないとういさあと3"); - Opal.const_set($nesting[0], 'ID', "NightWizard3rd"); - self.$setPrefixes(["([-+]?\\d+)?NW.*", "2R6.*"]); - return (Opal.def(self, '$fumble_base_number', $NightWizard3rd_fumble_base_number$1 = function $$fumble_base_number(parsed) { - var self = this; - - return $rb_plus(parsed.$passive_modify_number(), parsed.$active_modify_number()) - }, $NightWizard3rd_fumble_base_number$1.$$arity = 1), nil) && 'fumble_base_number'; - })($nesting[0], $$($nesting, 'NightWizard'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/NightmareHunterDeep.js b/src/assets/dicebot/NightmareHunterDeep.js deleted file mode 100644 index d1ce0f680..000000000 --- a/src/assets/dicebot/NightmareHunterDeep.js +++ /dev/null @@ -1,117 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$debug', '$sub', '$last_match', '$-', '$*', '$to_i', '$+', '$==', '$!=', '$>=', '$<=', '$>']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'NightmareHunterDeep'); - - var $nesting = [self].concat($parent_nesting), $NightmareHunterDeep_initialize$1, $NightmareHunterDeep_changeText$2, $NightmareHunterDeep_check_nD6$5, $NightmareHunterDeep_getDiceRolledAdditionalText$6, $NightmareHunterDeep_getDiceRevision$7; - - - Opal.const_set($nesting[0], 'ID', "NightmareHunterDeep"); - Opal.const_set($nesting[0], 'NAME', "ナイトメアハンター=ディープ"); - Opal.const_set($nesting[0], 'SORT_KEY', "ないとめあはんたあていいふ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "加算ロール時に6の個数をカウントして、その4倍を自動的に加算します。\n" + "(出目はそのまま表示で合計値が6-10の読み替えになります)\n"); - - Opal.def(self, '$initialize', $NightmareHunterDeep_initialize$1 = function $$initialize() { - var $iter = $NightmareHunterDeep_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $NightmareHunterDeep_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $NightmareHunterDeep_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.sortType = 1); - }, $NightmareHunterDeep_initialize$1.$$arity = 0); - - Opal.def(self, '$changeText', $NightmareHunterDeep_changeText$2 = function $$changeText(string) { - var $$3, $$4, self = this; - - - self.$debug("parren_killer_add before string", string); - string = $send(string, 'sub', [/^(.+?)Lv(\d+)(.*)/i], ($$3 = function(){var self = $$3.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + ($rb_minus($rb_times($$($nesting, 'Regexp').$last_match(2).$to_i(), 5), 1)) + ($$($nesting, 'Regexp').$last_match(3))}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - string = $send(string, 'sub', [/^(.+?)NL(\d+)(.*)/i], ($$4 = function(){var self = $$4.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + ($rb_plus($rb_times($$($nesting, 'Regexp').$last_match(2).$to_i(), 5), 5)) + ($$($nesting, 'Regexp').$last_match(3))}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - self.$debug("parren_killer_add after string", string); - return string; - }, $NightmareHunterDeep_changeText$2.$$arity = 1); - - Opal.def(self, '$check_nD6', $NightmareHunterDeep_check_nD6$5 = function $$check_nD6(total, _dice_total, _dice_list, cmp_op, target) { - var $a, self = this, sucLv = nil, sucNL = nil; - - - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy(target['$!=']("?"))) { - if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }}; - sucLv = 1; - sucNL = 0; - while ($truthy($rb_ge(total, $rb_minus($rb_times(sucLv, 5), 1)))) { - sucLv = $rb_plus(sucLv, 1) - }; - while ($truthy($rb_ge(total, $rb_plus($rb_times(sucNL, 5), 5)))) { - sucNL = $rb_plus(sucNL, 1) - }; - sucLv = $rb_minus(sucLv, 1); - sucNL = $rb_minus(sucNL, 1); - if ($truthy($rb_le(sucLv, 0))) { - return " > 失敗" - } else { - return "" + " > Lv" + (sucLv) + "/NL" + (sucNL) + "成功" - }; - }, $NightmareHunterDeep_check_nD6$5.$$arity = 5); - - Opal.def(self, '$getDiceRolledAdditionalText', $NightmareHunterDeep_getDiceRolledAdditionalText$6 = function $$getDiceRolledAdditionalText(n1, n_max, dice_max) { - var $a, self = this; - - - self.$debug("getDiceRolledAdditionalText begin: n1, n_max, dice_max", n1, n_max, dice_max); - if ($truthy(($truthy($a = n1['$!='](0)) ? dice_max['$=='](6) : $a))) { - return " > 宿命獲得"}; - return ""; - }, $NightmareHunterDeep_getDiceRolledAdditionalText$6.$$arity = 3); - return (Opal.def(self, '$getDiceRevision', $NightmareHunterDeep_getDiceRevision$7 = function $$getDiceRevision(n_max, dice_max, total_n) { - var $a, self = this, addText = nil, revision = nil; - - - addText = ""; - revision = 0; - if ($truthy(($truthy($a = $rb_gt(n_max, 0)) ? dice_max['$=='](6) : $a))) { - - revision = $rb_times(n_max, 4); - addText = "" + "+" + (n_max) + "*4 > " + ($rb_plus(total_n, revision));}; - return [addText, revision]; - }, $NightmareHunterDeep_getDiceRevision$7.$$arity = 3), nil) && 'getDiceRevision'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/NinjaSlayer.js b/src/assets/dicebot/NinjaSlayer.js deleted file mode 100644 index 4a3306ec4..000000000 --- a/src/assets/dicebot/NinjaSlayer.js +++ /dev/null @@ -1,928 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/DiceBot"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$freeze', '$attr_reader', '$map', '$to_proc', '$join', '$private', '$clearPrefixes', '$!', '$empty?', '$prefixs', '$prefixes', '$class', '$warn', '$id', '$setPrefixes', '$attr_accessor', '$name', '$sort_key', '$help_message', '$attr_writer', '$rand', '$roll', '$marshalSignOfInequality', '$unlimitedRollDiceType', '$getD66Value', '$parren_killer', '$debug', '$isGetOriginalMessage', '$getOriginalMessage', '$=~', '$prefixesPattern', '$last_match', '$removeDiceCommandMessage', '$rollDiceCommandCatched', '$nil?', '$!=', '$sub', '$rollDiceCommand', '$to_s', '$backtrace', '$size', '$===', '$check_1D100', '$check_1D20', '$check_2D6', '$check_nD10', '$check_nD6', '$check_nDx', '$is_a?', '$==', '$send', '$get_table_by_nD6', '$get_table_by_nDx', '$getTableValue', '$[]', '$-', '$/', '$getD66', '$bcdice', '$get_table_by_number', '$+', '$*', '$<', '$each', '$>=', '$kind_of?', '$lambda', '$call', '$select', '$public_methods', '$upcase', '$to_i', '$getTableInfoFromExtraTableText', '$get_table_by_nDx_extratable', '$get_table_by_d66', '$floor', '$%', '$get_table_by_d66_swap', '$raise', '$gsub', '$rollTableMessageDiceText', '$split', '$inspect']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceBot'); - - var $nesting = [self].concat($parent_nesting), $DiceBot_initialize$4, $DiceBot_postSet$5, $DiceBot_info$6, $DiceBot_id$7, $DiceBot_gameType$8, $DiceBot_name$9, $DiceBot_gameName$10, $DiceBot_sort_key$11, $DiceBot_help_message$12, $DiceBot_getHelpMessage$13, $DiceBot_prefixes$14, $DiceBot_setSendMode$15, $DiceBot_bcdice$eq$16, $DiceBot_bcdice$17, $DiceBot_rand$18, $DiceBot_roll$19, $DiceBot_marshalSignOfInequality$20, $DiceBot_unlimitedRollDiceType$21, $DiceBot_setSortType$22, $DiceBot_d66$23, $DiceBot_parren_killer$24, $DiceBot_changeText$25, $DiceBot_dice_command$26, $DiceBot_isGetOriginalMessage$27, $DiceBot_removeDiceCommandMessage$28, $DiceBot_rollDiceCommandCatched$29, $DiceBot_rollDiceCommand$30, $DiceBot_dice_command_xRn$31, $DiceBot_check_result$32, $DiceBot_check_nDx$33, $DiceBot_check_1D100$34, $DiceBot_check_1D20$35, $DiceBot_check_nD10$36, $DiceBot_check_2D6$37, $DiceBot_check_nD6$38, $DiceBot_get_table_by_2d6$39, $DiceBot_get_table_by_1d6$40, $DiceBot_get_table_by_nD6$41, $DiceBot_get_table_by_nDx$42, $DiceBot_get_table_by_1d3$43, $DiceBot_getD66$44, $DiceBot_get_table_by_d66_swap$45, $DiceBot_get_table_by_d66$46, $DiceBot_getDiceRolledAdditionalText$47, $DiceBot_getDiceRevision$48, $DiceBot_isD9$49, $DiceBot_getGrichText$50, $DiceBot_should_reroll$ques$51, $DiceBot_get_table_by_number$52, $DiceBot_getTableValue$54, $DiceBot_analyzeDiceCommandResultMethod$56, $DiceBot_get_table_by_nDx_extratable$59, $DiceBot_getTableCommandResult$60, $DiceBot_getTableInfoFromExtraTableText$61, $DiceBot_roll_tables$63; - - self.$$prototype.rerollLimitCount = self.$$prototype.d66Type = nil; - - Opal.const_set($nesting[0], 'EMPTY_PREFIXES_PATTERN', /(^|\s)(S)?()(\s|$)/i.$freeze()); - Opal.const_set($nesting[0], 'ID', "DiceBot"); - Opal.const_set($nesting[0], 'NAME', "DiceBot"); - Opal.const_set($nesting[0], 'SORT_KEY', "*たいすほつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', ""); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $setPrefixes$1, $clearPrefixes$2, $inherited$3; - - - self.$attr_reader("prefixes"); - self.$attr_reader("prefixesPattern"); - - Opal.def(self, '$setPrefixes', $setPrefixes$1 = function $$setPrefixes(prefixes) { - var self = this; - - - self.prefixes = $send(prefixes, 'map', [], "freeze".$to_proc()).$freeze(); - self.prefixesPattern = new RegExp("" + "(^|\\s)(S)?(" + (prefixes.$join("|")) + ")(\\s|$)", 'i').$freeze(); - return self; - }, $setPrefixes$1.$$arity = 1); - - Opal.def(self, '$clearPrefixes', $clearPrefixes$2 = function $$clearPrefixes() { - var self = this; - - - self.prefixes = [].$freeze(); - self.prefixesPattern = $$($nesting, 'EMPTY_PREFIXES_PATTERN'); - return self; - }, $clearPrefixes$2.$$arity = 0); - self.$private(); - return (Opal.def(self, '$inherited', $inherited$3 = function $$inherited(subclass) { - var self = this; - - return subclass.$clearPrefixes() - }, $inherited$3.$$arity = 1), nil) && 'inherited'; - })(Opal.get_singleton_class(self), $nesting); - self.$clearPrefixes(); - (Opal.class_variable_set($nesting[0], '@@bcdice', nil)); - Opal.const_set($nesting[0], 'DEFAULT_SEND_MODE', 2); - - Opal.def(self, '$initialize', $DiceBot_initialize$4 = function $$initialize() { - var $a, self = this; - - - self.sendMode = $$($nesting, 'DEFAULT_SEND_MODE'); - self.sortType = 0; - self.sameDiceRerollCount = 0; - self.sameDiceRerollType = 0; - self.d66Type = 1; - self.isPrintMaxDice = false; - self.upperRollThreshold = 0; - self.unlimitedRollDiceType = 0; - self.rerollNumber = 0; - self.defaultSuccessTarget = ""; - self.rerollLimitCount = 10000; - self.fractionType = "omit"; - if ($truthy(($truthy($a = self.$prefixs()['$empty?']()['$!']()) ? self.$class().$prefixes()['$empty?']() : $a))) { - - self.$warn("" + (self.$id()) + ": #prefixs is deprecated. Please use .setPrefixes."); - return self.$class().$setPrefixes(self.$prefixs()); - } else { - return nil - }; - }, $DiceBot_initialize$4.$$arity = 0); - self.$attr_accessor("rerollLimitCount"); - self.$attr_reader("sendMode", "sameDiceRerollCount", "sameDiceRerollType", "d66Type"); - self.$attr_reader("isPrintMaxDice", "upperRollThreshold"); - self.$attr_reader("defaultSuccessTarget", "rerollNumber", "fractionType"); - - Opal.def(self, '$postSet', $DiceBot_postSet$5 = function $$postSet() { - var self = this; - - return nil - }, $DiceBot_postSet$5.$$arity = 0); - - Opal.def(self, '$info', $DiceBot_info$6 = function $$info() { - var self = this; - - return $hash2(["gameType", "name", "sortKey", "prefixs", "info"], {"gameType": self.$id(), "name": self.$name(), "sortKey": self.$sort_key(), "prefixs": self.$class().$prefixes(), "info": self.$help_message()}) - }, $DiceBot_info$6.$$arity = 0); - - Opal.def(self, '$id', $DiceBot_id$7 = function $$id() { - var self = this; - - return $$$(self.$class(), 'ID') - }, $DiceBot_id$7.$$arity = 0); - - Opal.def(self, '$gameType', $DiceBot_gameType$8 = function $$gameType() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameType is deprecated. Please use #id."); - return self.$id(); - }, $DiceBot_gameType$8.$$arity = 0); - - Opal.def(self, '$name', $DiceBot_name$9 = function $$name() { - var self = this; - - return $$$(self.$class(), 'NAME') - }, $DiceBot_name$9.$$arity = 0); - - Opal.def(self, '$gameName', $DiceBot_gameName$10 = function $$gameName() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameName is deprecated. Please use #name."); - return self.$name(); - }, $DiceBot_gameName$10.$$arity = 0); - - Opal.def(self, '$sort_key', $DiceBot_sort_key$11 = function $$sort_key() { - var self = this; - - return $$$(self.$class(), 'SORT_KEY') - }, $DiceBot_sort_key$11.$$arity = 0); - - Opal.def(self, '$help_message', $DiceBot_help_message$12 = function $$help_message() { - var self = this; - - return $$$(self.$class(), 'HELP_MESSAGE') - }, $DiceBot_help_message$12.$$arity = 0); - - Opal.def(self, '$getHelpMessage', $DiceBot_getHelpMessage$13 = function $$getHelpMessage() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #getHelpMessage is deprecated. Please use #help_message."); - return self.$help_message(); - }, $DiceBot_getHelpMessage$13.$$arity = 0); - - Opal.def(self, '$prefixes', $DiceBot_prefixes$14 = function $$prefixes() { - var self = this; - - return self.$class().$prefixes() - }, $DiceBot_prefixes$14.$$arity = 0); - Opal.alias(self, "prefixs", "prefixes"); - - Opal.def(self, '$setSendMode', $DiceBot_setSendMode$15 = function $$setSendMode(m) { - var self = this; - - return (self.sendMode = m) - }, $DiceBot_setSendMode$15.$$arity = 1); - self.$attr_writer("upperRollThreshold"); - - Opal.def(self, '$bcdice=', $DiceBot_bcdice$eq$16 = function(b) { - var self = this; - - return (Opal.class_variable_set($nesting[0], '@@bcdice', b)) - }, $DiceBot_bcdice$eq$16.$$arity = 1); - - Opal.def(self, '$bcdice', $DiceBot_bcdice$17 = function $$bcdice() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a) - }, $DiceBot_bcdice$17.$$arity = 0); - - Opal.def(self, '$rand', $DiceBot_rand$18 = function $$rand(max) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rand(max) - }, $DiceBot_rand$18.$$arity = 1); - - Opal.def(self, '$roll', $DiceBot_roll$19 = function $$roll($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'roll', Opal.to_a(args)); - }, $DiceBot_roll$19.$$arity = -1); - - Opal.def(self, '$marshalSignOfInequality', $DiceBot_marshalSignOfInequality$20 = function $$marshalSignOfInequality($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'marshalSignOfInequality', Opal.to_a(args)); - }, $DiceBot_marshalSignOfInequality$20.$$arity = -1); - - Opal.def(self, '$unlimitedRollDiceType', $DiceBot_unlimitedRollDiceType$21 = function $$unlimitedRollDiceType() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$unlimitedRollDiceType() - }, $DiceBot_unlimitedRollDiceType$21.$$arity = 0); - self.$attr_reader("sortType"); - - Opal.def(self, '$setSortType', $DiceBot_setSortType$22 = function $$setSortType(s) { - var self = this; - - return (self.sortType = s) - }, $DiceBot_setSortType$22.$$arity = 1); - - Opal.def(self, '$d66', $DiceBot_d66$23 = function $$d66($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'getD66Value', Opal.to_a(args)); - }, $DiceBot_d66$23.$$arity = -1); - - Opal.def(self, '$parren_killer', $DiceBot_parren_killer$24 = function $$parren_killer(string) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$parren_killer(string) - }, $DiceBot_parren_killer$24.$$arity = 1); - - Opal.def(self, '$changeText', $DiceBot_changeText$25 = function $$changeText(string) { - var self = this; - - - self.$debug("DiceBot.parren_killer_add called"); - return string; - }, $DiceBot_changeText$25.$$arity = 1); - - Opal.def(self, '$dice_command', $DiceBot_dice_command$26 = function $$dice_command(string, nick_e) { - var $a, $b, self = this, secret_flg = nil, secretMarker = nil, command = nil, output_msg = nil; - - - if ($truthy(self.$isGetOriginalMessage())) { - string = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$getOriginalMessage()}; - self.$debug("dice_command Begin string", string); - secret_flg = false; - if ($truthy(self.$class().$prefixesPattern()['$=~'](string))) { - } else { - - self.$debug("not match in prefixes"); - return ["1", secret_flg]; - }; - secretMarker = $$($nesting, 'Regexp').$last_match(2); - command = $$($nesting, 'Regexp').$last_match(3); - command = self.$removeDiceCommandMessage(command); - self.$debug("dicebot after command", command); - self.$debug("match"); - $b = self.$rollDiceCommandCatched(command), $a = Opal.to_ary($b), (output_msg = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = output_msg['$nil?']()) ? $a : output_msg['$empty?']()))) { - output_msg = "1"}; - secret_flg = ($truthy($a = secret_flg) ? $a : false); - if ($truthy(output_msg['$!=']("1"))) { - output_msg = "" + (nick_e) + ": " + (output_msg)}; - if ($truthy(secretMarker)) { - if ($truthy(output_msg['$!=']("1"))) { - secret_flg = true}}; - return [output_msg, secret_flg]; - }, $DiceBot_dice_command$26.$$arity = 2); - - Opal.def(self, '$isGetOriginalMessage', $DiceBot_isGetOriginalMessage$27 = function $$isGetOriginalMessage() { - var self = this; - - return false - }, $DiceBot_isGetOriginalMessage$27.$$arity = 0); - - Opal.def(self, '$removeDiceCommandMessage', $DiceBot_removeDiceCommandMessage$28 = function $$removeDiceCommandMessage(command) { - var self = this; - - return command.$sub(/[\s ].+/, "") - }, $DiceBot_removeDiceCommandMessage$28.$$arity = 1); - - Opal.def(self, '$rollDiceCommandCatched', $DiceBot_rollDiceCommandCatched$29 = function $$rollDiceCommandCatched(command) { - var $a, $b, self = this, result = nil, secret_flg = nil, e = nil; - - - result = nil; - - try { - - self.$debug("call rollDiceCommand command", command); - $b = self.$rollDiceCommand(command), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - self.$debug("executeCommand exception", e.$to_s(), e.$backtrace().$join("\n")) - } finally { Opal.pop_exception() } - } else { throw $err; } - };; - self.$debug("rollDiceCommand result", result); - return [result, secret_flg]; - }, $DiceBot_rollDiceCommandCatched$29.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $DiceBot_rollDiceCommand$30 = function $$rollDiceCommand(_command) { - var self = this; - - return nil - }, $DiceBot_rollDiceCommand$30.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $DiceBot_dice_command_xRn$31 = function $$dice_command_xRn(_string, _nick_e) { - var self = this; - - return "" - }, $DiceBot_dice_command_xRn$31.$$arity = 2); - - Opal.def(self, '$check_result', $DiceBot_check_result$32 = function $$check_result(total, dice_total, dice_list, sides, cmp_op, target) { - var $a, self = this, ret = nil, $case = nil; - - - ret = (function() {$case = [dice_list.$size(), sides]; - if ([1, 100]['$===']($case)) {return self.$check_1D100(total, dice_total, cmp_op, target)} - else if ([1, 20]['$===']($case)) {return self.$check_1D20(total, dice_total, cmp_op, target)} - else if ([2, 6]['$===']($case)) {return self.$check_2D6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - ret = (function() {$case = sides; - if ((10)['$===']($case)) {return self.$check_nD10(total, dice_total, dice_list, cmp_op, target)} - else if ((6)['$===']($case)) {return self.$check_nD6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - return self.$check_nDx(total, cmp_op, target); - }, $DiceBot_check_result$32.$$arity = 6); - - Opal.def(self, '$check_nDx', $DiceBot_check_nDx$33 = function $$check_nDx(total, cmp_op, target) { - var self = this, success = nil; - - - if ($truthy(target['$is_a?']($$($nesting, 'String')))) { - return " > 失敗"}; - success = (function() {if (cmp_op['$==']("!=")) { - return total['$!='](target) - } else { - return total.$send(cmp_op, target) - }; return nil; })(); - if ($truthy(success)) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $DiceBot_check_nDx$33.$$arity = 3); - - Opal.def(self, '$check_1D100', $DiceBot_check_1D100$34 = function $$check_1D100(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D100$34.$$arity = 4); - - Opal.def(self, '$check_1D20', $DiceBot_check_1D20$35 = function $$check_1D20(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D20$35.$$arity = 4); - - Opal.def(self, '$check_nD10', $DiceBot_check_nD10$36 = function $$check_nD10(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD10$36.$$arity = 5); - - Opal.def(self, '$check_2D6', $DiceBot_check_2D6$37 = function $$check_2D6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_2D6$37.$$arity = 5); - - Opal.def(self, '$check_nD6', $DiceBot_check_nD6$38 = function $$check_nD6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD6$38.$$arity = 5); - - Opal.def(self, '$get_table_by_2d6', $DiceBot_get_table_by_2d6$39 = function $$get_table_by_2d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 2) - }, $DiceBot_get_table_by_2d6$39.$$arity = 1); - - Opal.def(self, '$get_table_by_1d6', $DiceBot_get_table_by_1d6$40 = function $$get_table_by_1d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 1) - }, $DiceBot_get_table_by_1d6$40.$$arity = 1); - - Opal.def(self, '$get_table_by_nD6', $DiceBot_get_table_by_nD6$41 = function $$get_table_by_nD6(table, count) { - var self = this; - - return self.$get_table_by_nDx(table, count, 6) - }, $DiceBot_get_table_by_nD6$41.$$arity = 2); - - Opal.def(self, '$get_table_by_nDx', $DiceBot_get_table_by_nDx$42 = function $$get_table_by_nDx(table, count, diceType) { - var $a, $b, self = this, num = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(num, count))); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_nDx$42.$$arity = 3); - - Opal.def(self, '$get_table_by_1d3', $DiceBot_get_table_by_1d3$43 = function $$get_table_by_1d3(table) { - var $a, $b, self = this, count = nil, num = nil, index = nil, text = nil; - - - self.$debug("get_table_by_1d3"); - count = 1; - $b = self.$roll(count, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - self.$debug("num", num); - index = $rb_divide($rb_minus(num, 1), 2); - self.$debug("index", index); - text = table['$[]'](index); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_1d3$43.$$arity = 1); - - Opal.def(self, '$getD66', $DiceBot_getD66$44 = function $$getD66(isSwap) { - var self = this; - - return self.$bcdice().$getD66(isSwap) - }, $DiceBot_getD66$44.$$arity = 1); - - Opal.def(self, '$get_table_by_d66_swap', $DiceBot_get_table_by_d66_swap$45 = function $$get_table_by_d66_swap(table) { - var self = this, isSwap = nil, number = nil; - - - isSwap = true; - number = self.$bcdice().$getD66(isSwap); - return [self.$get_table_by_number(number, table), number]; - }, $DiceBot_get_table_by_d66_swap$45.$$arity = 1); - - Opal.def(self, '$get_table_by_d66', $DiceBot_get_table_by_d66$46 = function $$get_table_by_d66(table) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, num = nil, text = nil, indexText = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - num = $rb_plus($rb_times($rb_minus(dice1, 1), 6), $rb_minus(dice2, 1)); - text = table['$[]'](num); - indexText = "" + (dice1) + (dice2); - if ($truthy(text['$nil?']())) { - return ["1", indexText]}; - return [text, indexText]; - }, $DiceBot_get_table_by_d66$46.$$arity = 1); - - Opal.def(self, '$getDiceRolledAdditionalText', $DiceBot_getDiceRolledAdditionalText$47 = function $$getDiceRolledAdditionalText(_n1, _n_max, _dice_max) { - var self = this; - - return "" - }, $DiceBot_getDiceRolledAdditionalText$47.$$arity = 3); - - Opal.def(self, '$getDiceRevision', $DiceBot_getDiceRevision$48 = function $$getDiceRevision(_n_max, _dice_max, _total_n) { - var self = this; - - return ["", 0] - }, $DiceBot_getDiceRevision$48.$$arity = 3); - - Opal.def(self, '$isD9', $DiceBot_isD9$49 = function $$isD9() { - var self = this; - - return false - }, $DiceBot_isD9$49.$$arity = 0); - - Opal.def(self, '$getGrichText', $DiceBot_getGrichText$50 = function $$getGrichText(_numberSpot1, _dice_cnt_total, _suc) { - var self = this; - - return "" - }, $DiceBot_getGrichText$50.$$arity = 3); - - Opal.def(self, '$should_reroll?', $DiceBot_should_reroll$ques$51 = function(loop_count) { - var $a, self = this; - - return ($truthy($a = $rb_lt(loop_count, self.rerollLimitCount)) ? $a : self.rerollLimitCount['$=='](0)) - }, $DiceBot_should_reroll$ques$51.$$arity = 1); - - Opal.def(self, '$get_table_by_number', $DiceBot_get_table_by_number$52 = function $$get_table_by_number(index, table, default$) {try { - - var $$53, self = this; - - - - if (default$ == null) { - default$ = "1"; - }; - $send(table, 'each', [], ($$53 = function(item){var self = $$53.$$s || this, number = nil; - - - - if (item == null) { - item = nil; - }; - number = item['$[]'](0); - if ($truthy($rb_ge(number, index))) { - Opal.ret(self.$getTableValue(item['$[]'](1))) - } else { - return nil - };}, $$53.$$s = self, $$53.$$arity = 1, $$53)); - return self.$getTableValue(default$); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_get_table_by_number$52.$$arity = -3); - - Opal.def(self, '$getTableValue', $DiceBot_getTableValue$54 = function $$getTableValue(data) {try { - - var $$55, self = this, lambdaBlock = nil; - - - if ($truthy(data['$kind_of?']($$($nesting, 'Proc')))) { - - lambdaBlock = $send(self, 'lambda', [], ($$55 = function(){var self = $$55.$$s || this; - - Opal.ret(data.$call())}, $$55.$$s = self, $$55.$$arity = 0, $$55)); - return lambdaBlock.$call();}; - return data; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_getTableValue$54.$$arity = 1); - - Opal.def(self, '$analyzeDiceCommandResultMethod', $DiceBot_analyzeDiceCommandResultMethod$56 = function $$analyzeDiceCommandResultMethod(command) {try { - - var $$57, $$58, self = this, methodList = nil; - - - methodList = $send(self.$public_methods(), 'select', [], ($$57 = function(method){var self = $$57.$$s || this; - - - - if (method == null) { - method = nil; - }; - return /^get.+DiceCommandResult$/['$==='](method.$to_s());}, $$57.$$s = self, $$57.$$arity = 1, $$57)); - $send(methodList, 'each', [], ($$58 = function(method){var self = $$58.$$s || this, result = nil; - - - - if (method == null) { - method = nil; - }; - result = self.$send(method, command); - if ($truthy(result['$nil?']())) { - return nil - } else { - Opal.ret(result) - };}, $$58.$$s = self, $$58.$$arity = 1, $$58)); - return nil; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_analyzeDiceCommandResultMethod$56.$$arity = 1); - - Opal.def(self, '$get_table_by_nDx_extratable', $DiceBot_get_table_by_nDx_extratable$59 = function $$get_table_by_nDx_extratable(table, count, diceType) { - var $a, $b, self = this, number = nil, diceText = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(number, count))); - return [text, number, diceText]; - }, $DiceBot_get_table_by_nDx_extratable$59.$$arity = 3); - - Opal.def(self, '$getTableCommandResult', $DiceBot_getTableCommandResult$60 = function $$getTableCommandResult(command, tables, isPrintDiceText) { - var $a, $b, $c, $d, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, count = nil, diceType = nil, limit = nil, item = nil, value = nil, output = nil, diceText = nil, text = nil, number = nil; - - - - if (isPrintDiceText == null) { - isPrintDiceText = true; - }; - info = tables['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type").$upcase(); - table = info['$[]']("table"); - if ($truthy(($truthy($a = type['$==']("D66")) ? self.d66Type['$=='](2) : $a))) { - type = "D66S"}; - $b = (function() {$case = type; - if (/(\d+)D(\d+)/['$===']($case)) { - count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diceType = $$($nesting, 'Regexp').$last_match(2).$to_i(); - limit = $rb_minus($rb_times(diceType, count), $rb_minus(count, 1)); - table = self.$getTableInfoFromExtraTableText(table, limit); - return self.$get_table_by_nDx_extratable(table, count, diceType);} - else if ("D66"['$===']($case) || "D66N"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 36); - $d = self.$get_table_by_d66(table), $c = Opal.to_ary($d), (item = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - output = item['$[]'](1); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else if ("D66S"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 21); - $d = self.$get_table_by_d66_swap(table), $c = Opal.to_ary($d), (output = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else {return self.$raise("" + "invalid dice Type " + (command))}})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), (diceText = ($a[2] == null ? nil : $a[2])), $b; - text = text.$gsub("\\n", "\n"); - text = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rollTableMessageDiceText(text); - if ($truthy(text['$nil?']())) { - return nil}; - if ($truthy(($truthy($a = isPrintDiceText) ? diceText['$nil?']()['$!']() : $a))) { - return "" + (name) + "(" + (number) + "[" + (diceText) + "]) > " + (text)}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $DiceBot_getTableCommandResult$60.$$arity = -3); - - Opal.def(self, '$getTableInfoFromExtraTableText', $DiceBot_getTableInfoFromExtraTableText$61 = function $$getTableInfoFromExtraTableText(text, count) { - var $$62, self = this, newTable = nil; - - - - if (count == null) { - count = nil; - }; - if ($truthy(text['$is_a?']($$($nesting, 'String')))) { - text = text.$split(/\n/)}; - newTable = $send(text, 'map', [], ($$62 = function(item){var self = $$62.$$s || this, $a; - - - - if (item == null) { - item = nil; - }; - if ($truthy(($truthy($a = item['$is_a?']($$($nesting, 'String'))) ? /^(\d+):(.*)/['$==='](item) : $a))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2)] - } else { - return item - };}, $$62.$$s = self, $$62.$$arity = 1, $$62)); - if ($truthy(count['$nil?']())) { - } else if ($truthy(newTable.$size()['$!='](count))) { - self.$raise("" + "invalid table size:" + (newTable.$size()) + "\n" + (newTable.$inspect()))}; - return newTable; - }, $DiceBot_getTableInfoFromExtraTableText$61.$$arity = -2); - return (Opal.def(self, '$roll_tables', $DiceBot_roll_tables$63 = function $$roll_tables(command, tables) { - var self = this, table = nil; - - - table = tables['$[]'](command.$upcase()); - if ($truthy(table)) { - } else { - return nil - }; - return table.$roll(self.$bcdice()).$to_s(); - }, $DiceBot_roll_tables$63.$$arity = 2), nil) && 'roll_tables'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$freeze', '$match', '$raise', '$to_i', '$[]', '$roll', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Table'); - - var $nesting = [self].concat($parent_nesting), $Table_initialize$1, $Table_roll$2; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $Table_initialize$1 = function $$initialize(name, type, items) { - var self = this, m = nil; - - - self.name = name; - self.items = items.$freeze(); - m = /(\d+)D(\d+)/i.$match(type); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "Unexpected table type: " + (type)) - }; - self.times = m['$[]'](1).$to_i(); - return (self.sides = m['$[]'](2).$to_i()); - }, $Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $Table_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, value = nil, index = nil; - - - $b = bcdice.$roll(self.times, self.sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(value, self.times); - return "" + (self.name) + "(" + (value) + ") > " + (self.items['$[]'](index)); - }, $Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$setPrefixes', '$freeze', '$new', '$match', '$bRollCommand', '$[]', '$integerValueOfDifficulty', '$debug', '$roll', '$bcdice', '$parse', '$===', '$executeEV', '$executeAT', '$executeEL', '$private', '$parseEV', '$last_match', '$parseAT', '$parseEL', '$to_i', '$num', '$difficulty', '$sub', '$bdice', '$targetValue', '$raise', '$>', '$map', '$split', '$to_proc', '$length', '$select', '$==', '$>=', '$+', '$fetch', '$upcase', '$keys']); - - self.$require("diceBot/DiceBot"); - self.$require("utils/table"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'NinjaSlayer'); - - var $nesting = [self].concat($parent_nesting), $NinjaSlayer_initialize$1, $NinjaSlayer_changeText$2, $NinjaSlayer_rollDiceCommand$3, $NinjaSlayer_parse$4, $NinjaSlayer_parseEV$5, $NinjaSlayer_parseAT$6, $NinjaSlayer_parseEL$7, $NinjaSlayer_executeEV$8, $NinjaSlayer_executeAT$9, $NinjaSlayer_executeEL$11, $NinjaSlayer_integerValueOfDifficulty$14, $NinjaSlayer_bRollCommand$15; - - - Opal.const_set($nesting[0], 'ID', "NinjaSlayer"); - Opal.const_set($nesting[0], 'NAME', "ニンジャスレイヤーTRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "にんしやすれいやあRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・通常判定 NJ\n" + " NJx[y] or NJx@y or NJx\n" + " x=判定ダイス y=難易度 省略時はNORMAL(4)\n" + " 例:NJ4@H 難易度HARD、判定ダイス4で判定\n" + "・回避判定 EV\n" + " EVx[y]/z or EVx@y/z or EVx/z or EVx[y] or EVx@y or EVx\n" + " x=判定ダイス y=難易度 z=攻撃側の成功数(省略可) 難易度を省略時はNORMAL(4)\n" + " 攻撃側の成功数を指定した場合、カウンターカラテ発生時には表示\n" + " 例:EV5/3 難易度NORMAL(省略時)、判定ダイス5、攻撃側の成功数3で判定\n" + "・近接攻撃 AT\n" + " ATx[y] or ATx@y or ATx\n" + " x=判定ダイス y=難易度 省略時はNORMAL(4) サツバツ!発生時には表示\n" + " 例:AT6[H] 難易度HARD,判定ダイス5で近接攻撃の判定\n" + "・サツバツ判定 SB\n" + "・電子戦 EL\n" + " ELx[y] or ELx@y or ELx\n" + " x=判定ダイス y=難易度 省略時はNORMAL(4)\n" + " 例:EL6[H] 難易度HARD,判定ダイス5で電子戦の判定\n" + "\n" + "・難易度\n" + " KIDS=K,EASY=E,NORMAL=N,HARD=H,ULTRA HARD=UH 数字にも対応\n"); - self.$setPrefixes(["NJ\\d+.*", "EV\\d+.*", "AT\\d+.*", "EL\\d+.*", "SB"]); - - Opal.def(self, '$initialize', $NinjaSlayer_initialize$1 = function $$initialize() { - var $iter = $NinjaSlayer_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $NinjaSlayer_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $NinjaSlayer_initialize$1, false), $zuper, $iter); - return (self.defaultSuccessTarget = ">=4"); - }, $NinjaSlayer_initialize$1.$$arity = 0); - Opal.const_set($nesting[0], 'DIFFICULTY_VALUE_RE', /UH|[2-6KENH]/i.$freeze()); - Opal.const_set($nesting[0], 'DIFFICULTY_RE', new RegExp("" + "\\[(" + ($$($nesting, 'DIFFICULTY_VALUE_RE')) + ")\\]|@(" + ($$($nesting, 'DIFFICULTY_VALUE_RE')) + ")", 'i').$freeze()); - Opal.const_set($nesting[0], 'NJ_RE', /^(S)?NJ(\d+)(?:\[(UH|[2-6KENH])\]|@(UH|[2-6KENH]))?$/i.$freeze()); - Opal.const_set($nesting[0], 'EV_RE', /^EV(\d+)(?:\[(UH|[2-6KENH])\]|@(UH|[2-6KENH]))?(?:\/(\d+))?$/i.$freeze()); - Opal.const_set($nesting[0], 'AT_RE', /^AT(\d+)(?:\[(UH|[2-6KENH])\]|@(UH|[2-6KENH]))?$/i.$freeze()); - Opal.const_set($nesting[0], 'EL_RE', /^EL(\d+)(?:\[(UH|[2-6KENH])\]|@(UH|[2-6KENH]))?$/i.$freeze()); - Opal.const_set($nesting[0], 'B_ROLL_RESULT_HEAD_RE', /^[^(]+/.$freeze()); - Opal.const_set($nesting[0], 'EV', $$($nesting, 'Struct').$new("num", "difficulty", "targetValue")); - Opal.const_set($nesting[0], 'AT', $$($nesting, 'Struct').$new("num", "difficulty")); - Opal.const_set($nesting[0], 'EL', $$($nesting, 'Struct').$new("num", "difficulty")); - Opal.const_set($nesting[0], 'DIFFICULTY_SYMBOL_TO_INTEGER', $hash2(["K", "E", "N", "H", "UH"], {"K": 2, "E": 3, "N": 4, "H": 5, "UH": 6}).$freeze()); - - Opal.def(self, '$changeText', $NinjaSlayer_changeText$2 = function $$changeText(str) { - var $a, self = this, m = nil, b_roll = nil; - - - m = $$($nesting, 'NJ_RE').$match(str); - if ($truthy(m)) { - } else { - return str - }; - b_roll = self.$bRollCommand(m['$[]'](2), self.$integerValueOfDifficulty(($truthy($a = m['$[]'](3)) ? $a : m['$[]'](4)))); - return "" + (m['$[]'](1)) + (b_roll); - }, $NinjaSlayer_changeText$2.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $NinjaSlayer_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var self = this, table = nil, $case = nil, node = nil; - - - self.$debug("rollDiceCommand begin string", command); - if ($truthy((table = $$($nesting, 'TABLES')['$[]'](command)))) { - return table.$roll(self.$bcdice())}; - return (function() {$case = (node = self.$parse(command)); - if ($$($nesting, 'EV')['$===']($case)) {return self.$executeEV(node)} - else if ($$($nesting, 'AT')['$===']($case)) {return self.$executeAT(node)} - else if ($$($nesting, 'EL')['$===']($case)) {return self.$executeEL(node)} - else {return nil}})(); - }, $NinjaSlayer_rollDiceCommand$3.$$arity = 1); - self.$private(); - - Opal.def(self, '$parse', $NinjaSlayer_parse$4 = function $$parse(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if ($$($nesting, 'EV_RE')['$===']($case)) {return self.$parseEV($$($nesting, 'Regexp').$last_match())} - else if ($$($nesting, 'AT_RE')['$===']($case)) {return self.$parseAT($$($nesting, 'Regexp').$last_match())} - else if ($$($nesting, 'EL_RE')['$===']($case)) {return self.$parseEL($$($nesting, 'Regexp').$last_match())} - else {return nil}})() - }, $NinjaSlayer_parse$4.$$arity = 1); - - Opal.def(self, '$parseEV', $NinjaSlayer_parseEV$5 = function $$parseEV(m) { - var $a, self = this, num = nil, difficulty = nil, targetValue = nil; - - - num = m['$[]'](1).$to_i(); - difficulty = self.$integerValueOfDifficulty(($truthy($a = m['$[]'](2)) ? $a : m['$[]'](3))); - targetValue = ($truthy($a = m['$[]'](4)) ? m['$[]'](4).$to_i() : $a); - return $$($nesting, 'EV').$new(num, difficulty, targetValue); - }, $NinjaSlayer_parseEV$5.$$arity = 1); - - Opal.def(self, '$parseAT', $NinjaSlayer_parseAT$6 = function $$parseAT(m) { - var $a, self = this, num = nil, difficulty = nil; - - - num = m['$[]'](1).$to_i(); - difficulty = self.$integerValueOfDifficulty(($truthy($a = m['$[]'](2)) ? $a : m['$[]'](3))); - return $$($nesting, 'AT').$new(num, difficulty); - }, $NinjaSlayer_parseAT$6.$$arity = 1); - - Opal.def(self, '$parseEL', $NinjaSlayer_parseEL$7 = function $$parseEL(m) { - var $a, self = this, num = nil, difficulty = nil; - - - num = m['$[]'](1).$to_i(); - difficulty = self.$integerValueOfDifficulty(($truthy($a = m['$[]'](2)) ? $a : m['$[]'](3))); - return $$($nesting, 'EL').$new(num, difficulty); - }, $NinjaSlayer_parseEL$7.$$arity = 1); - - Opal.def(self, '$executeEV', $NinjaSlayer_executeEV$8 = function $$executeEV(ev) { - var self = this, command = nil, rollResult = nil, m = nil, numOfSuccesses = nil; - - - command = self.$bRollCommand(ev.$num(), ev.$difficulty()); - rollResult = self.$bcdice().$bdice(command).$sub($$($nesting, 'B_ROLL_RESULT_HEAD_RE'), ""); - if ($truthy(ev.$targetValue())) { - } else { - return rollResult - }; - m = /成功数(\d+)/.$match(rollResult); - if ($truthy(m)) { - } else { - self.$raise("成功数が見つかりません") - }; - numOfSuccesses = m['$[]'](1).$to_i(); - if ($truthy($rb_gt(numOfSuccesses, ev.$targetValue()))) { - return "" + (rollResult) + " > カウンターカラテ!!"}; - return rollResult; - }, $NinjaSlayer_executeEV$8.$$arity = 1); - - Opal.def(self, '$executeAT', $NinjaSlayer_executeAT$9 = function $$executeAT(at) { - var $$10, self = this, command = nil, rollResult = nil, m = nil, values = nil, numOfMaxValues = nil; - - - command = self.$bRollCommand(at.$num(), at.$difficulty()); - rollResult = self.$bcdice().$bdice(command).$sub($$($nesting, 'B_ROLL_RESULT_HEAD_RE'), ""); - m = /> (\d+(?:,\d+)*)/.$match(rollResult); - values = $send(m['$[]'](1).$split(","), 'map', [], "to_i".$to_proc()); - numOfMaxValues = $send(values, 'select', [], ($$10 = function(v){var self = $$10.$$s || this; - - - - if (v == null) { - v = nil; - }; - return v['$=='](6);}, $$10.$$s = self, $$10.$$arity = 1, $$10)).$length(); - return (function() {if ($truthy($rb_ge(numOfMaxValues, 2))) { - return "" + (rollResult) + " > サツバツ!!" - } else { - return rollResult - }; return nil; })(); - }, $NinjaSlayer_executeAT$9.$$arity = 1); - - Opal.def(self, '$executeEL', $NinjaSlayer_executeEL$11 = function $$executeEL(el) { - var $$12, $$13, self = this, command = nil, rollResult = nil, m = nil, values = nil, numOfMaxValues = nil, sumOfTrueValues = nil; - - - command = self.$bRollCommand(el.$num(), el.$difficulty()); - rollResult = self.$bcdice().$bdice(command).$sub($$($nesting, 'B_ROLL_RESULT_HEAD_RE'), ""); - m = /> (\d+(?:,\d+)*)/.$match(rollResult); - values = $send(m['$[]'](1).$split(","), 'map', [], "to_i".$to_proc()); - numOfMaxValues = $send(values, 'select', [], ($$12 = function(v){var self = $$12.$$s || this; - - - - if (v == null) { - v = nil; - }; - return v['$=='](6);}, $$12.$$s = self, $$12.$$arity = 1, $$12)).$length(); - sumOfTrueValues = $send(values, 'select', [], ($$13 = function(v){var self = $$13.$$s || this; - - - - if (v == null) { - v = nil; - }; - return $rb_ge(v, el.$difficulty());}, $$13.$$s = self, $$13.$$arity = 1, $$13)).$length(); - return (function() {if ($truthy($rb_ge(numOfMaxValues, 1))) { - return "" + (rollResult) + " + " + (numOfMaxValues) + " > " + ($rb_plus(sumOfTrueValues, numOfMaxValues)) - } else { - return rollResult - }; return nil; })(); - }, $NinjaSlayer_executeEL$11.$$arity = 1); - - Opal.def(self, '$integerValueOfDifficulty', $NinjaSlayer_integerValueOfDifficulty$14 = function $$integerValueOfDifficulty(s) { - var self = this; - - - if ($truthy(s)) { - } else { - return 4 - }; - if ($truthy(/^[2-6]$/.$match(s))) { - return s.$to_i()}; - return $$($nesting, 'DIFFICULTY_SYMBOL_TO_INTEGER').$fetch(s.$upcase()); - }, $NinjaSlayer_integerValueOfDifficulty$14.$$arity = 1); - - Opal.def(self, '$bRollCommand', $NinjaSlayer_bRollCommand$15 = function $$bRollCommand(num, difficulty) { - var self = this; - - return "" + (num) + "B6>=" + (difficulty) - }, $NinjaSlayer_bRollCommand$15.$$arity = 2); - Opal.const_set($nesting[0], 'SATSUBATSU_TABLE', ["「死ねーッ!」腹部に強烈な一撃! 敵はくの字に折れ曲がり、ワイヤーアクションめいて吹っ飛んだ!:本来のダメージ+1ダメージを与える。敵は後方の壁または障害物に向かって、何マスでもまっすぐ弾き飛ばされる(他のキャラのいるマスは通過する)。壁または障害物に接触した時点で、敵はさらに1ダメージを受ける。敵はこの激突ダメージに対して改めて『回避判定』を行っても良い。", "「イヤーッ!」頭部への痛烈なカラテ! 眼球破壊もしくは激しい脳震盪が敵を襲う!:本来のダメージを与える。さらに敵の【ニューロン】と【ワザマエ】がそれぞれ1ずつ減少する(これによる最低値は1)。残虐ボーナスにより【万札】がD3発生。この攻撃を【カルマ:善】のキャラに対して行ってしまった場合、【DKK】がD3上昇する。", "「苦しみ抜いて死ぬがいい」急所を情け容赦なく破壊!:本来のダメージ+1ダメージを与える。耐え難い苦痛により、敵は【精神力】が-2され、【ニューロン】が1減少する(これによる最低値は1)。残虐ボーナスにより【万札】がD3発生。この攻撃を【カルマ:善】のキャラに対して行ってしまった場合、【DKK】がD3上昇する。", "「逃げられるものなら逃げてみよ」敵の脚を粉砕!:本来のダメージを与える。さらに敵の【脚力】がD3減少する(最低値は1)。残虐ボーナスにより【万札】がD3発生。この攻撃を【カルマ:善】のキャラに対して行ってしまった場合、【DKK】がD3上昇する。", "「これで手も足も出まい!」敵の両腕を切り飛ばした! 鮮血がスプリンクラーめいて噴き出す!:本来のダメージ+1ダメージを与える。さらに敵の【ワザマエ】と【カラテ】がそれぞれ2減少する(最低値は1)。残虐ボーナスにより【万札】がD3発生。この攻撃を【カルマ:善】のキャラに対して行ってしまった場合、【DKK】がD3上昇する。", "「イイイヤアアアアーーーーッ!」ヤリめいたチョップが敵の胸を貫通! さらに心臓を掴み取り、握りつぶした! ナムアミダブツ!:敵は残り【体力】に関係なく即死する。残虐ボーナスにより【万札】がD6発生。この攻撃を【カルマ:善】のキャラに対して行ってしまった場合、【DKK】がD6上昇する。"].$freeze()); - Opal.const_set($nesting[0], 'TABLES', $hash2(["SB"], {"SB": $$($nesting, 'Table').$new("サツバツ表", "1D6", $$($nesting, 'SATSUBATSU_TABLE'))}).$freeze()); - return self.$setPrefixes($rb_plus(["NJ\\d+.*", "EV\\d+.*", "AT\\d+.*", "EL\\d+.*"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/NjslyrBattle.js b/src/assets/dicebot/NjslyrBattle.js deleted file mode 100644 index 1e08faddd..000000000 --- a/src/assets/dicebot/NjslyrBattle.js +++ /dev/null @@ -1,60 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$!=', '$+', '$success_text', '$juuten', '$<=', '$count', '$[]', '$>']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'NjslyrBattle'); - - var $nesting = [self].concat($parent_nesting), $NjslyrBattle_check_2D6$1, $NjslyrBattle_success_text$2, $NjslyrBattle_juuten$3; - - - Opal.const_set($nesting[0], 'ID', "NJSLYRBATTLE"); - Opal.const_set($nesting[0], 'NAME', "NJSLYRBATTLE"); - Opal.const_set($nesting[0], 'SORT_KEY', "にんしやすれいやあはとる"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・カラテロール\n" + "2d6<=(カラテ点)\n" + "例)2d6<=5\n" + "(2D6<=5) > 2[1,1] > 2 > 成功 重点 3 溜まる\n"); - - Opal.def(self, '$check_2D6', $NjslyrBattle_check_2D6$1 = function $$check_2D6(total, _dice_total, dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if ($truthy(cmp_op['$!=']("<="))) { - return ""}; - return $rb_plus(self.$success_text(total, target), self.$juuten(dice_list)); - }, $NjslyrBattle_check_2D6$1.$$arity = 5); - - Opal.def(self, '$success_text', $NjslyrBattle_success_text$2 = function $$success_text(total, target) { - var self = this; - - if ($truthy($rb_le(total, target))) { - return " > 成功" - } else { - return " > 失敗" - } - }, $NjslyrBattle_success_text$2.$$arity = 2); - return (Opal.def(self, '$juuten', $NjslyrBattle_juuten$3 = function $$juuten(dice_list) { - var self = this, juuten = nil; - - - juuten = $rb_plus(dice_list.$count(1), dice_list.$count(6)); - if (dice_list['$[]'](0)['$=='](dice_list['$[]'](1))) { - juuten = $rb_plus(juuten, 1)}; - if ($truthy($rb_gt(juuten, 0))) { - return "" + " 重点 " + (juuten) + " 溜まる" - } else { - return "" - }; - }, $NjslyrBattle_juuten$3.$$arity = 1), nil) && 'juuten'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Nuekagami.js b/src/assets/dicebot/Nuekagami.js deleted file mode 100644 index 47ab77c47..000000000 --- a/src/assets/dicebot/Nuekagami.js +++ /dev/null @@ -1,37 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$[]', '$upcase', '$nil?', '$===', '$get_table_by_nDx', '$freeze', '$setPrefixes', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Nuekagami'); - - var $nesting = [self].concat($parent_nesting), $Nuekagami_rollDiceCommand$1; - - - Opal.const_set($nesting[0], 'ID', "Nuekagami"); - Opal.const_set($nesting[0], 'NAME', "鵺鏡"); - Opal.const_set($nesting[0], 'SORT_KEY', "ぬえかかみ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・喪失表(xL)\n" + " BL:血脈、LL:生様、SL:魂魄、FL:因縁\n" + "・LR:喪失取戻表\n" + "・門通過描写表(xG)\n" + " HG:地獄門、RG:羅生門、VG:朱雀門、OG:応天門\n"); - - Opal.def(self, '$rollDiceCommand', $Nuekagami_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $b, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, text = nil, number = nil; - - - info = $$($nesting, 'TABLES')['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type"); - table = info['$[]']("table"); - $b = (function() {$case = type; - if ("1D20"['$===']($case)) {return self.$get_table_by_nDx(table, 1, 20)} - else { return nil }})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(text['$nil?']())) { - return nil}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $Nuekagami_rollDiceCommand$1.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["LR", "BL", "LL", "SL", "FL", "HG", "RG", "VG", "OG"], {"LR": $hash2(["name", "type", "table"], {"name": "喪失取戻表", "type": "1D20", "table": ["鬼化。妄執かくして鬼と結実す。欠けたるところすでになし。あやかし、己の欠けたるを足せり。すなわちその身、人ならず。", "妄想。とくと見よ。何も失ってなどおらぬ。この肉この魂この身上、欠けたるところぞなし。欠けし夢を見しのみ。全て夢なり。", "鵺型。肉に内に暗雲ゆらめく。欠けたるところ漂うそれは、鶴が欠片。暖昧の境界なれば、失いしものまた戻りたるが如く。", "諦観。己が身を知る。望む愚かを知る。足掻く愚かを知る。心は折れり。望みは絶えり。諦めることで足るものもある知らむ。", "屍漁。もはやいかな所業もいとわず。されば数多の骸を漁り、ついに欠けたるを満たせり。代わりに欠けたる心、知ることぞなし。", "呪刻。あまねく呪はば、己も囚わる。己を騙る呪い、己を捕らえ絡めれば、欠けたるもまた満ちて見ゆる。", "得心。すべては己の行いの結果なれば、因果応報。それなきは不具合なれど、得心せり。もはや悩めどせんなきことなりや。", "奪取。無ければ、奪え。あな妬ましと思わば奪え。奪いて己がものとせよ。さすればたちまち、欲するところ戻れり。", "罪価。己が罪を知れり。かくあさましき罪業に比ぶれば、己が失いしもの、なんと軽きことか。さあれば、悩むるに能はず。", "代替。失へるもの、未だ失われり。されど、代わるものを得たり。二度とは失うわじ。失わばその痛みに狂い果てむ。", "受容。納得はなし。諦観はなし。されど受け入れり。欠けたるもまた己なれば、欠けるところもて満たさば、それ己ならずや。", "代行。かかる身にそれなくとも是。かく行い為すは、己が筆ならず。代わりて為す者、信ずべきあらばこそ。", "適応。心痛むる時多けれど、欠けたるにも馴れたり。もはや欠けるに不自由なし。さればそれすなわち、欠けたるに非ず", "妖賞。大妖に遇ひて、饗応す。彼の妖、大いに慶びてその身に欠けたるを与へむ。それ異様なれど、用は足れり。", "奪還。つひに奪われしもの、奪い返せり!取り戻せしそれ、再び手の内に収まりて輝けり。けしてまた手放すことあらじ。", "本懐。己の求むるを、ついに為し遂げり。もはや己が力、己が技、疑うところなし。己が有様になんぞ足らざるあるべきや。", "取得。艱難辛苦ぞありや。ついぞ果てに失いしそれ、身に修めん。ただ取り戻せしものにあらじ。新たに得たりしや。", "賜物。その欠ける様、彼の人あはれに思いて、かくなるを与え賜り。以て、満ちたる己、彼の人にまた仕えむ。", "大悟。足掻けれど足掻けれど、満ちることなし。足りざるは自然。己の姿を受け入れむ。されば欠けたるに、悩まさるるもなし。", "望月。欠けたる月が満ちるが如く。欠けたるは突然に戻れり。いかなる誠、いかなる印か、知るものはあらず。"]}), "BL": $hash2(["name", "type", "table"], {"name": "血脈の喪失表", "type": "1D20", "table": ["髪の色。一夜にしてあなたの髪は白くなった。", "視力。周囲がぼんやりとしか見えない。", "所作。体の一部がまともに動かせない。", "痛み。体が痛みを感じなくなってしまった。", "容貌。顔に大きな傷や火傷を負った。", "血の気。あなたの肌は血の気を失ったままだ。", "赤い血。体を流れる血が異様な色となった。", "子を作る力。子を作る力を失った。", "器用さ。体が常に小さく震えている。", "健康。病を患った……体が衰弱している。", "寿命。あなたの寿命は残りわずかとなった。", "ぬくもり。その体は常に冷たい……。", "片目。片目を失ってしまった……。", "片脚。片脚を切り落とされた!", "片腕。片腕を切り落とされた!", "生命。あなたの鼓動は止まって久しい。", "真の力。本来の力がほとんど発揮できない。", "肉。異様に痩せたか、体の一部が白骨化している。", "人の体。体が歪み変わり、異形と化した。", "己の体。今は他人の体を借りている。"]}), "LL": $hash2(["name", "type", "table"], {"name": "生様の喪失表", "type": "1D20", "table": ["主君の寵愛。不興を買ってしまった。", "師匠。死んだか、あるいはあなたが捨てられた。", "面子。大いに恥をかいた。このままにしておけない。", "時間。今まで精魂を傾けて来たものは無駄だった。", "血縁。信じていた生まれではなかった……。", "家宝。家の宝、あるいは形見を奪われてしまった。", "恋人。死んだか、あるいは奪われた。", "運。何をやってもうまくいかない。", "財産。騙し取られたか……。あるいは使い果たした。", "名声。あなたの名声は地に落ちている……。", "居場所。居るべき場所、身分を失ってしまった……。", "地位。かつての地位は失われたのだ。", "日常。こんな世の中でも平和に暮らしていたのに。", "相棒。死んだか、あるいは裏切られた。", "仕える人。死んだか、あるいはあなたが捨てられた。", "人望。かつてあなたを讃えた人が、今やあなたを罵る。", "家族。死んだか、あるいはあなたが捨てられた。", "故郷。何者かに滅ぼされたか、あるいは自滅した。", "守るべき人。守るべき人を守れなかった……。", "自由。脅され縛られ、誰かの命令を聞くしかできない。"]}), "SL": $hash2(["name", "type", "table"], {"name": "魂魄の喪失表", "type": "1D20", "table": ["誇り。誇りなど残ってはいない。", "心の余裕。今を生きるだけで精一杯。", "敬う心。己こそが全てだ。", "気力。何もやる気がおきない……。", "安眠。夜毎の悪夢に、まともに眠れない。", "信じる心。二度と人など信じるものか。", "愛。もはや誰かを愛することなどない。", "夢。前に見えていた光、目標。今は闇の中だ。", "一線。己の中の超えてはならぬ線を踏み越えた。", "信じたもの。かつて信じたのはまやかしだった。", "人の心。この世で人の心が何の役に立つ?", "瞳の光。全て虚しいものとしか見えない。", "希望。この世に何を望むというのだろう?", "自制心。己を抑えて何とする?", "涙。その目が涙を流すことはない。", "笑顔。二度と笑いなどしないだろう。", "大切な記憶。どうしてか……記憶を失っている。", "本当の自分。己を偽りすぎて、本来の己を忘れた。", "正気。今のあなたは狂気の沙汰だ!", "己の意志。あなたは誰かの人形。道具に過ぎない。"]}), "FL": $hash2(["name", "type", "table"], {"name": "因縁表", "type": "1D20", "table": ["仇敵。奴は敵だ。あなたの敵だ。", "殺意。殺してやりたい。", "蔑視。口ほどにもない存在だ。", "嫉妬。なぜアイツだけが……。", "恐怖。恐ろしい。あれを怒らせてはいけない。", "目障り。邪魔だ。気に入らない。", "利用。役に立ってくれそうだな。", "玩具。せいぜい楽しませてもらおう。", "依存。あの人がいなければいけないのだ。", "欲望。お前が欲しい……。", "好敵。なかなかやるじゃないか。", "憐憎。哀れな……。", "悪友。腐れ縁。信用できないが妙に心地いい。", "畏怖。あの人には逆らえない。", "恩義。恩がある……返さなければ。", "親友。心から信じられる友だ。", "尊敬。あの人のようになりたい。", "相棒。言葉はなくとも全てが通じ合う。", "思慕。恋をしてしまった。", "主君。心の主君。身命を賭して守り仕える。"]}), "HG": $hash2(["name", "type", "table"], {"name": "地獄門通過描写表", "type": "1D20", "table": ["背後見れば、地獄の門をば幻視せり。危うき次第を知りたり.", "必死に歩めり。背後に穂れし血と臓脈、こぼしたるが心地なれど。", "背後の地に深き爪痕あり。己を捕らへむとせる鬼の爪跡かと思ふ。", "劫火に焼かるる己を幻視す。汗にまみれ覚めれば、己が所業悔悟せり。", "水鏡に映る己を見て目を覚ます。彼のままなれば地獄に堕つると。", "天に鶴騒ぎたり。御身が魂晩取り逃がしたりと吃るが如く。", "足が泥淳に囚わるる幻視。引きずり込む亡者。必死に逃れ至れり。", "陰に蠢く餓鬼を見ゆ・明日は己ぞと思へば、背も震えたり。", "喪失の苦しみ、いくばくか休めり。他を思う心地ぞ生まれり。", "いみじう悩み苦しけれど、やがてそれも馴れり。今や苦しみならず。", "しずけき雨降らば、己が所業洗い流さるるとも、思へたり。", "汚泥が如く絡みし過ぎたる日々、わずかに離れたる心地ぞする。", "背負いし怨念ら退き薄れむ。これなるは縁がゆへか、心地ゆへか。", "内に孕むる絶望へ、連理たれと希望の芽、萌ゆる。", "生温かき風と共に、大粒の雨降れり。すわ血の雨かとも思へり。", "人と関わりて縁を見ゆ。抱ふるもの、いくらか少なくなりき。", "夢枕、あるいは白昼夢なるか。神仏現るるにすがりたり。", "劫火の中、白き手が己を引けりと幻視す。あるひは過去の縁か。", "蛙呑む蛇を見たり。あさましき業に、己をふと顧みぬ。", "心中にて、かそけき希望の糸見へり。慎重にたぐりて登らむとす。"]}), "RG": $hash2(["name", "type", "table"], {"name": "羅生門通過描写表", "type": "1D20", "table": ["むごき所業、目にせり。心強張りて、常の様にてあれず.", "人の目に、己を嗤ふ気配感じたり。怒り、悔み、恥ぞ覚えむ。", "鬼の腕より、ついに逃るるか.おぞましき震へぞ、治まりき。", "辻吹く風に、人骨散れり。たちまち無常の感、起こりて心改めたり。", "愛憎恩普、いよいよ狂ほしく。猛るまま、ただただ前へと進めり。", "飢えたる犬の如し。泥水すすりても前に進み、想い果たさむ。", "喪失、取り戻すは近し。思はず、あさましき笑みぞ浮かべり。", "いやしき者ども、あさましき目を向くる。蔑みてまかり通らむ。", "喪失の夢繰り返すこといくたびか。もはや業苦の炎冷め、常日頃の如し。", "あるひは己の内よりか。あやしき声あれば欲心また昂ぶらむ。", "死人を見、成仏を祈れり。心あらば、己が内にて仏も宿らむ。", "ただただ世の無常を知れば、哀愁の情あふれ感じむ。", "路地に小さき花咲くを見ゆ。我執の心晴れたる心地せり。", "冷たき風あらば、情動わずかに治まりて、落ち着きたりけり。", "酒を飲めり。酔ひたる心地の内に、業苦も曖昧とならむ。", "見えざる大門潜りしか。境目超えたるを感ずる。いざ、知らずの地平へ。", "乞食坊主に逢ひて、恵む。これもまたいくばくの功徳なりきや。", "子供ら遊ぶを見ゆ。己が古きを思へば、思はず顔ほころびぬ。", "暗雲に包まれし都なれど今その身に、いくばくかの光差し照らしけり。", "神仏の似姿、幻視す。されば、いかな身にも信心のいくばくか起これり。"]}), "VG": $hash2(["name", "type", "table"], {"name": "朱雀門通過描写表", "type": "1D20", "table": ["雷響きて、暗霊いよいよ濃ゆし。己が先を見せるるが如し。", "今一つ取り戻すは及ばぬ口惜しきに、鬼が如く唸りし。", "求めし手、届かずも絶望すれど再び、ふらふらと歩み出さむ。", "かたときの福なるか。狐に化かさるるが如く、鹿なる泡沫の夢。", "流るる血。朱に染まる視界。されど、染まらざる中に光あり。", "己が臓腑抉るが如く。己が業、抉り捨て進まん。", "先に狐の影見ゆ。あやしけれど、迷ひながら、狐を追へり。", "大いなる境を越えたるかと思えり。未だ道半ばなれば油断許さず。", "暗雲に白鷺翔けるを見ゆ。瑞兆なれば希望もまた湧きぬ。", "内より翼の出るが心地せり。いざ思い切りて、翔ばむ。", "割れた杯より漏れたるも、重ねたる杯に。合一せば余さず受けり。", "心激しくして魚跳ねるが如く。その実も暗き水面より跳ね出たり。", "貴き牛車と行き逢はむ。幽かな香に、目ぞ覚めたる思いせり。", "ふと口をついて歌詠めり。何者か下の句継ぎて、心合わせむ。", "知らずの人より、送られし歌あり。返歌いかがせむかと思ひたり。", "鳥の巣立つを見たり。己もまた、新たな道歩むべきぞと心せり。", "暗雲貫きて、空に月あり。天より見らるる心地して、行い正せり。", "目的近づけど、心重し。胸痛みて、いみじう哀し。", "不意に仏心起こりて、万物慈みの念おぼえたり。", "頭上より何者かの楽の音、饗けり。その身、祝はるる心地せり。"]}), "OG": $hash2(["name", "type", "table"], {"name": "応天門通過描写表", "type": "1D20", "table": ["光捕らへど暗し。新たなる地獄の門に落つる己を知りたり。", "求めしもの得たり。されど、なにものか失いし心地ぞせる……。", "狐鴫きて自覚むる。全て一夜の夢の如し。痛みもまたしかり。", "なにゆへか、涙こぼるる。ただ涙こぼれ、業苦もまた流れむ。", "人想ひて、未練生まるる。己が幸求めれば、死を畏れむ。", "打ち返す波の音聞く。遥か遠く、旅立ちたむと念、生じたり。", "実る稲田を幻視す。もはや都の有様、人住む地に非ずと思へり。", "取り戻したるに、ただただ歓喜す。もはや周りの様も感ぜず。", "あまたの人の目、御身見てざわめくを感ず。優越の心地あり。", "かけがへなきもの、見つけたり。今はただ、そを喜ぶのみなれば。", "天盤にて星巡り、時満ちて、方合へり。なればその身にも幸ありむ。", "幾年月ぞ、剥那の如し。思ふれば囚わる檻も、無きかと見ゆ。", "天より鵺退きて、日の光差す。浴びる中、魂魄またぬくもりを覚えり。", "風流、解する心あらば天地自然もまた並び、自らその内に合一せむ。", "いかにせで、己の在り様を責むるや。己は己なれが、気に負うに値せず。", "あまねく世のことども、遠く鈍く思ひて心安らかなる境地に至れり。", "天遠く光差せば、淡き虹も浮かべり。何処かへ渡す橋とも見ゆ。", "天より一輪の花舞い降りて、御身の手に落つ。心また花咲けり。", "鵺の内に竜神舞へり。風雨激しく、身濡らせど、心清々し。", "都の暗雲、晴れたる日も稀にあり。なんぞ魂魄晴るる日なしや。"]})}).$freeze()); - return self.$setPrefixes($$($nesting, 'TABLES').$keys()); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/OneWayHeroics.js b/src/assets/dicebot/OneWayHeroics.js deleted file mode 100644 index bc5353764..000000000 --- a/src/assets/dicebot/OneWayHeroics.js +++ /dev/null @@ -1,352 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$debug', '$analyzeDiceCommandResultMethod', '$nil?', '$getCommandTablesResult', '$[]', '$upcase', '$===', '$to_i', '$last_match', '$roll', '$getTableResult', '$==', '$getD66', '$empty?', '$<', '$rollJudgeDice', '$+', '$to_s', '$getJudgeReusltText', '$map', '$split', '$to_proc', '$sort!', '$reverse!', '$>=', '$assoc', '$each', '$>', '$first', '$respond_to?', '$arity', '$call', '$rollDiceCommand', '$lambda', '$getAddRoll', '$<=', '$getRandomEventAddText', '$getRandomEventAddTextProc', '$getAddRollProc', '$*', '$freeze', '$getGoldTextProc', '$getDownTextProc', '$setPrefixes', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'OneWayHeroics'); - - var $nesting = [self].concat($parent_nesting), $OneWayHeroics_initialize$1, $OneWayHeroics_rollDiceCommand$2, $OneWayHeroics_getCommandTablesResult$3, $OneWayHeroics_getRollDiceCommandResult$4, $OneWayHeroics_rollJudgeDice$5, $OneWayHeroics_getJudgeReusltText$6, $OneWayHeroics_getTableResult$7, $OneWayHeroics_getAddRoll$9, $OneWayHeroics_getAddRollProc$10, $OneWayHeroics_getRandomEventAddText$12, $OneWayHeroics_getRandomEventAddTextProc$13, $OneWayHeroics_getRandomEventDiceCommandResult$15, $OneWayHeroics_getRandomEventPlusDiceCommandResult$16, $OneWayHeroics_getDungeonTableDiceCommandResult$17, $OneWayHeroics_getDungeonPlusTableDiceCommandResult$18, $OneWayHeroics_getGoldTextProc$19, $OneWayHeroics_getDownTextProc$21, $OneWayHeroics_getAddRollProc$23; - - self.$$prototype.d66Type = nil; - - Opal.const_set($nesting[0], 'ID', "OneWayHeroics"); - Opal.const_set($nesting[0], 'NAME', "片道勇者TRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "かたみちゆうしやTRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 aJDx+y,z\n" + " a:ダイス数(省略時2個)、x:能力値、\n" + " y:修正値(省略可。「+」のみなら+1)、z:目標値(省略可)\n" + " 例1)JD2+1,8 or JD2+,8 :能力値2、修正+1、目標値8\n" + " 例2)JD3,10 能力値3、修正なし、目標値10\n" + " 例3)3JD4+ ダイス3個から2個選択、能力値4、修正なし、目標値なし\n" + "・ファンブル表 FT/魔王追撃表 DC/進行ルート表 PR/会話テーマ表 TT\n" + "逃走判定表 EC/ランダムNPC特徴表 RNPC/偵察表 SCT\n" + "施設表 FCLT/施設表プラス FCLTP/希少動物表 RANI/王特徴表プラス KNGFTP\n" + "野外遭遇表 OUTENC/野外遭遇表プラス OUTENCP\n" + "モンスター特徴表 MONFT/モンスター特徴表プラス MONFTP\n" + "ドロップアイテム表 DROP/ドロップアイテム表プラス DROPP\n" + "武器ドロップ表 DROPWP/武器ドロップ表2 DROPWP2\n" + "防具ドロップ表 DROPAR/防具ドロップ表2 DROPAR2\n" + "聖武具ドロップ表 DROPHW/聖武具ドロップ表プラス DROPHWP\n" + "食品ドロップ表 DROPFD/食品ドロップ表2 DROPFD2\n" + "巻物ドロップ表 DROPSC/巻物ドロップ表2 DROPSC2\n" + "その他ドロップ表 DROPOT/その他 ドロップ表2 DROPOT2\n" + "薬品ドロップ表プラス DROPDRP/珍しい箱ドロップ表2 DROPRAREBOX2\n" + "・ランダムイベント表 RETx(x:現在の日数)、ランダムイベント表プラス RETPx\n" + " 例)RET3、RETP4\n" + "・ダンジョン表 DNGNx(x:現在の日数)、ダンジョン表プラス DNGNPx\n" + " 例)DNGN3、DNGNP4\n"); - - Opal.def(self, '$initialize', $OneWayHeroics_initialize$1 = function $$initialize() { - var $iter = $OneWayHeroics_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $OneWayHeroics_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $OneWayHeroics_initialize$1, false), $zuper, $iter); - return (self.d66Type = 2); - }, $OneWayHeroics_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $OneWayHeroics_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, result = nil; - - - self.$debug("rollDiceCommand command", command); - result = self.$analyzeDiceCommandResultMethod(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - return self.$getCommandTablesResult(command); - }, $OneWayHeroics_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getCommandTablesResult', $OneWayHeroics_getCommandTablesResult$3 = function $$getCommandTablesResult(command) { - var $a, $b, $c, $d, self = this, info = nil, name = nil, type = nil, table = nil, hasGap = nil, $case = nil, count = nil, dice = nil, isSwap = nil, number = nil, text = nil; - - - info = $$($nesting, 'TABLES')['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type"); - table = info['$[]']("table"); - hasGap = info['$[]']("hasGap"); - $b = (function() {$case = type; - if (/^(\d+)D6$/i['$===']($case)) { - count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - $d = self.$roll(count, 6), $c = Opal.to_ary($d), (dice = ($c[0] == null ? nil : $c[0])), $d; - return self.$getTableResult(table, dice, hasGap);} - else if ("D66"['$===']($case)) { - isSwap = self.d66Type['$=='](2); - dice = self.$getD66(isSwap); - return self.$getTableResult(table, dice, hasGap);} - else { return nil }})(), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(text['$nil?']())) { - return nil}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $OneWayHeroics_getCommandTablesResult$3.$$arity = 1); - - Opal.def(self, '$getRollDiceCommandResult', $OneWayHeroics_getRollDiceCommandResult$4 = function $$getRollDiceCommandResult(command) { - var $a, $b, self = this, diceCount = nil, ability = nil, target = nil, modifyText = nil, modifyValue = nil, dice = nil, diceText = nil, total = nil, text = nil, result = nil; - - - if ($truthy(/^(\d*)JD(\d*)(\+(\d*))?(,(\d+))?$/['$==='](command))) { - } else { - return nil - }; - diceCount = $$($nesting, 'Regexp').$last_match(1); - if ($truthy(diceCount['$empty?']())) { - diceCount = 2}; - diceCount = diceCount.$to_i(); - if ($truthy($rb_lt(diceCount, 2))) { - return nil}; - ability = $$($nesting, 'Regexp').$last_match(2).$to_i(); - target = $$($nesting, 'Regexp').$last_match(6); - if ($truthy(target['$nil?']())) { - } else { - target = target.$to_i() - }; - modifyText = ($truthy($a = $$($nesting, 'Regexp').$last_match(3)) ? $a : ""); - if (modifyText['$==']("+")) { - modifyText = "+1"}; - modifyValue = modifyText.$to_i(); - $b = self.$rollJudgeDice(diceCount), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - total = $rb_plus($rb_plus(dice, ability), modifyValue); - text = command.$to_s(); - text = $rb_plus(text, "" + " > " + (diceCount) + "D6[" + (diceText) + "]+" + (ability) + (modifyText)); - text = $rb_plus(text, "" + " > " + (total)); - result = self.$getJudgeReusltText(dice, total, target); - if ($truthy(result['$empty?']())) { - } else { - text = $rb_plus(text, "" + " > " + (result)) - }; - return text; - }, $OneWayHeroics_getRollDiceCommandResult$4.$$arity = 1); - - Opal.def(self, '$rollJudgeDice', $OneWayHeroics_rollJudgeDice$5 = function $$rollJudgeDice(diceCount) { - var $a, $b, self = this, dice = nil, diceText = nil, diceList = nil, total = nil, text = nil; - - - $b = self.$roll(diceCount, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - if (diceCount['$=='](2)) { - return [dice, diceText]}; - diceList = $send(diceText.$split(","), 'map', [], "to_i".$to_proc()); - diceList['$sort!'](); - diceList['$reverse!'](); - total = $rb_plus(diceList['$[]'](0), diceList['$[]'](1)); - text = "" + (diceText) + "→" + (diceList['$[]'](0)) + "," + (diceList['$[]'](1)); - return [total, text]; - }, $OneWayHeroics_rollJudgeDice$5.$$arity = 1); - - Opal.def(self, '$getJudgeReusltText', $OneWayHeroics_getJudgeReusltText$6 = function $$getJudgeReusltText(dice, total, target) { - var self = this; - - - if (dice['$=='](2)) { - return "ファンブル"}; - if (dice['$=='](12)) { - return "スペシャル"}; - if ($truthy(target['$nil?']())) { - return ""}; - if ($truthy($rb_ge(total, target))) { - return "成功"}; - return "失敗"; - }, $OneWayHeroics_getJudgeReusltText$6.$$arity = 3); - - Opal.def(self, '$getTableResult', $OneWayHeroics_getTableResult$7 = function $$getTableResult(table, dice, hasGap) { - var $a, $b, $$8, self = this, number = nil, text = nil, command = nil, params = nil, $case = nil; - - - - if (hasGap == null) { - hasGap = false; - }; - $b = table.$assoc(dice), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (command = ($a[2] == null ? nil : $a[2])), $b; - if ($truthy(($truthy($a = number['$nil?']()) ? hasGap : $a))) { - - params = nil; - (function(){var $brk = Opal.new_brk(); try {return $send(table, 'each', [], ($$8 = function(data){var self = $$8.$$s || this; - - - - if (data == null) { - data = nil; - }; - if ($truthy($rb_gt(data.$first(), dice))) { - - Opal.brk(nil, $brk)}; - return (params = data);}, $$8.$$s = self, $$8.$$brk = $brk, $$8.$$arity = 1, $$8)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - $a = [].concat(Opal.to_a(params)), (number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), (command = ($a[2] == null ? nil : $a[2])), $a;}; - if ($truthy(command['$respond_to?']("call"))) { - $case = command.$arity(); - if ((0)['$===']($case)) {text = $rb_plus(text, command.$call())} - else if ((1)['$===']($case)) {text = $rb_plus(text, command.$call(self))}}; - return [number, text]; - }, $OneWayHeroics_getTableResult$7.$$arity = -3); - - Opal.def(self, '$getAddRoll', $OneWayHeroics_getAddRoll$9 = function $$getAddRoll(command) { - var self = this, text = nil; - - - if ($truthy(/^\s/['$==='](command))) { - return command}; - text = self.$rollDiceCommand(command); - if ($truthy(text['$nil?']())) { - return "" + " > " + (command) + " is NOT found."}; - return "" + " > \n " + (command) + " > " + (text); - }, $OneWayHeroics_getAddRoll$9.$$arity = 1); - - Opal.def(self, '$getAddRollProc', $OneWayHeroics_getAddRollProc$10 = function $$getAddRollProc(command) { - var $$11, self = this; - - return $send(self, 'lambda', [], ($$11 = function(){var self = $$11.$$s || this; - - return self.$getAddRoll(command)}, $$11.$$s = self, $$11.$$arity = 0, $$11)) - }, $OneWayHeroics_getAddRollProc$10.$$arity = 1); - - Opal.def(self, '$getRandomEventAddText', $OneWayHeroics_getRandomEventAddText$12 = function $$getRandomEventAddText(day, command1, command2) { - var $a, $b, self = this, dice = nil, text = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - text = "" + " > \n 1D6[" + (dice) + "]"; - if ($truthy($rb_le(dice, day))) { - - text = $rb_plus(text, "" + " > 日数[" + (day) + "]以下"); - text = $rb_plus(text, self.$getAddRoll(command1)); - } else { - - text = $rb_plus(text, "" + " > 日数[" + (day) + "]を超えている"); - text = $rb_plus(text, self.$getAddRoll(command2)); - }; - return text; - }, $OneWayHeroics_getRandomEventAddText$12.$$arity = 3); - - Opal.def(self, '$getRandomEventAddTextProc', $OneWayHeroics_getRandomEventAddTextProc$13 = function $$getRandomEventAddTextProc(day, command1, command2) { - var $$14, self = this; - - return $send(self, 'lambda', [], ($$14 = function(){var self = $$14.$$s || this; - - return self.$getRandomEventAddText(day, command1, command2)}, $$14.$$s = self, $$14.$$arity = 0, $$14)) - }, $OneWayHeroics_getRandomEventAddTextProc$13.$$arity = 3); - - Opal.def(self, '$getRandomEventDiceCommandResult', $OneWayHeroics_getRandomEventDiceCommandResult$15 = function $$getRandomEventDiceCommandResult(command) { - var $a, $b, self = this, day = nil, name = nil, table = nil, dice = nil, number = nil, text = nil; - - - if ($truthy(/^RET(\d+)$/['$==='](command))) { - } else { - return nil - }; - day = $$($nesting, 'Regexp').$last_match(1).$to_i(); - name = "ランダムイベント表"; - table = [[1, "" + "さらに1D6を振る。現在PCがいるエリアの【日数】以下なら「施設表(FCLT)」へ移動。【日数】を超えていれば「ダンジョン表(DNGN" + (day) + ")」(153ページ)へ移動。", self.$getRandomEventAddTextProc(day, "FCLT", "" + "DNGN" + (day))], [2, "さらに1D6を振る。現在PCがいるエリアの【日数】以下なら「世界の旅表」(157ページ)へ移動。【日数】を超えていれば「野外遭遇表(OUTENC)」(155ページ)へ移動。", self.$getRandomEventAddTextProc(day, " > 「世界の旅表」(157ページ)へ。", "OUTENC")], [3, "「施設表」へ移動。", self.$getAddRollProc("FCLT")], [4, "「世界の旅表」(157ページ)へ移動。"], [5, "「野外遭遇表」(155ページ)へ移動。", self.$getAddRollProc("OUTENC")], [6, "「ダンジョン表」(152ページ)へ移動。", self.$getAddRollProc("" + "DNGN" + (day))]]; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$getTableResult(table, dice), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(text['$nil?']())) { - return nil}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $OneWayHeroics_getRandomEventDiceCommandResult$15.$$arity = 1); - - Opal.def(self, '$getRandomEventPlusDiceCommandResult', $OneWayHeroics_getRandomEventPlusDiceCommandResult$16 = function $$getRandomEventPlusDiceCommandResult(command) { - var $a, $b, self = this, day = nil, name = nil, table = nil, dice = nil, number = nil, text = nil; - - - if ($truthy(/^RETP(\d+)$/['$==='](command))) { - } else { - return nil - }; - day = $$($nesting, 'Regexp').$last_match(1).$to_i(); - name = "ランダムイベント表プラス"; - table = [[1, "さらに1D6を振る。現在PCがいるエリアの【日数】以下なら施設表プラス(022ページ)へ移動。【経過日数】を超えていればダンジョン表プラス(025ページ)へ移動", self.$getRandomEventAddTextProc(day, "FCLTP", "" + "DNGNP" + (day))], [2, "さらに1D6を振る。現在PCがいるエリアの【日数】以下なら世界の旅表(基本157ページ)へ移動。【経過日数】を超えていれば野外遭遇表(基本155ページ)へ移動", self.$getRandomEventAddTextProc(day, " > 「世界の旅表」(157ページ)へ。", "OUTENC")], [3, "さらに1D6を振る。現在PCがいるエリアの【日数】以下なら世界の旅表2(028ページ)へ移動。【経過日数】を超えていれば野外遭遇表プラス(025ページ)へ移動", self.$getRandomEventAddTextProc(day, " > 世界の旅表2(028ページ)へ。", "OUTENCP")], [4, "さらに1D6を振る。奇数なら世界の旅表(基本157ページ)へ移動。偶数なら世界の旅表2(028ページ)へ移動", self.$getRandomEventAddTextProc(day, " > 世界の旅表(基本157ページ)へ。", "偶数なら世界の旅表2(028ページ)へ。")], [5, "施設表プラスへ移動(022ページ)", self.$getAddRollProc("FCLTP")], [6, "ダンジョン表プラスへ移動(025ページ)", self.$getAddRollProc("" + "DNGNP" + (day))]]; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$getTableResult(table, dice), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(text['$nil?']())) { - return nil}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $OneWayHeroics_getRandomEventPlusDiceCommandResult$16.$$arity = 1); - - Opal.def(self, '$getDungeonTableDiceCommandResult', $OneWayHeroics_getDungeonTableDiceCommandResult$17 = function $$getDungeonTableDiceCommandResult(command) { - var $a, $b, self = this, day = nil, name = nil, table = nil, dice = nil, hasGap = nil, number = nil, text = nil; - - - if ($truthy(/^DNGN(\d+)$/['$==='](command))) { - } else { - return nil - }; - day = $$($nesting, 'Regexp').$last_match(1).$to_i(); - name = "ダンジョン表"; - table = [[1, "犬小屋(155ページ)。"], [2, "犬小屋(155ページ)。"], [3, "「ダンジョン遭遇表」(153ページ)へ移動。小型ダンジョンだ。"], [4, "「ダンジョン遭遇表」(153ページ)へ移動。小型ダンジョンだ。"], [5, "「ダンジョン遭遇表」(153ページ)へ移動。ここは中型ダンジョンなので、モンスターが出現した場合、数が1体増加する。さらにイベントの経験値が1増加する。"], [6, "「ダンジョン遭遇表」(153ページ)へ移動。ここは大型ダンジョンなので、モンスターが出現した場合、数が2体増加する。さらにイベントの経験値が2増加する。"], [7, "牢獄遭遇表へ移動(154ページ)。牢獄つきダンジョン。"]]; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy($rb_ge(day, 4))) { - dice = $rb_plus(dice, 1)}; - hasGap = true; - $b = self.$getTableResult(table, dice, hasGap), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(text['$nil?']())) { - return nil}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $OneWayHeroics_getDungeonTableDiceCommandResult$17.$$arity = 1); - - Opal.def(self, '$getDungeonPlusTableDiceCommandResult', $OneWayHeroics_getDungeonPlusTableDiceCommandResult$18 = function $$getDungeonPlusTableDiceCommandResult(command) { - var $a, $b, self = this, day = nil, name = nil, table = nil, dice = nil, hasGap = nil, number = nil, text = nil; - - - if ($truthy(/^DNGNP(\d+)$/['$==='](command))) { - } else { - return nil - }; - day = $$($nesting, 'Regexp').$last_match(1).$to_i(); - name = "ダンジョン表プラス"; - table = [[2, "犬小屋(基本155ページ)"], [3, "犬小屋(基本155ページ)"], [4, "犬小屋(基本155ページ)"], [5, "犬小屋(基本155ページ)"], [6, "「ダンジョン遭遇表」(基本153ページ)へ移動。小型ダンジョンだ。"], [7, "「ダンジョン遭遇表」(基本153ページ)へ移動。小型ダンジョンだ。"], [8, "「ダンジョン遭遇表」(基本153ページ)へ移動。ここは中型ダンジョンのため、モンスターが出現した場合、数が1体増加する。またイベントの【経験値】が1増加する。"], [9, "「ダンジョン遭遇表」(基本153ページ)へ移動。ここは大型ダンジョンのため、モンスターが出現した場合、数が2体増加する。またイベントの【経験値】が2増加する。"], [10, "「ダンジョン遭遇表」(基本153ページ)へ移動。近くに寄っただけで吸い込まれる罠のダンジョンだ。「ダンジョン遭遇表」を使用したあと、中央にあるモニュメントに触れて転移して出るか、【鉄格子】と戦闘して出るか選択する。転移した場合は闇の目の前に出てしまい、全力ダッシュで【ST】を1D6消費する。【鉄格子】との戦闘では逃走を選択できない。"], [11, "「ダンジョン遭遇表」(基本153ページ)へ移動。水浸しのダンジョンで、「ダンジョン遭遇表」を使用した直後に【ST】が3減少する。「水泳」"], [12, "水路に囲まれた水上遺跡だ。なかに入るなら【ST】を4消費(「水泳」)してから「ダンジョン遭遇表」(基本153ページ)へ移動。イベントの判定に成功すると追加で【豪華な宝箱】が1つ出現し、戦闘か開錠を試みられる。"], [13, "「牢獄遭遇表」(基本154ページ)へ移動。牢獄つきダンジョンだ。"], [14, "砂の遺跡にたどりつき、「牢獄遭遇表」(基本154ページ)へ移動。モンスターが出現した場合、数が2体増加する。またイベントの【経験値】が2増加する。イベントの判定に成功すると追加で【珍しい箱】が1つ出現し、戦闘か開錠を試みられる。"]]; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy($rb_ge(day, 4))) { - dice = $rb_plus(dice, 2)}; - hasGap = true; - $b = self.$getTableResult(table, dice, hasGap), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(text['$nil?']())) { - return nil}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $OneWayHeroics_getDungeonPlusTableDiceCommandResult$18.$$arity = 1); - Opal.defs(self, '$getGoldTextProc', $OneWayHeroics_getGoldTextProc$19 = function $$getGoldTextProc(diceCount, times, doSomething) { - var $$20, self = this; - - return $send(self, 'lambda', [], ($$20 = function(diceBot){var self = $$20.$$s || this, $a, $b, total = nil, diceText = nil, gold = nil; - - - - if (diceBot == null) { - diceBot = nil; - }; - $b = diceBot.$roll(diceCount, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - gold = $rb_times(total, times); - return "" + " > " + (diceCount) + "D6[" + (diceText) + "]×" + (times) + " > 【所持金】 " + (gold) + " を" + (doSomething);}, $$20.$$s = self, $$20.$$arity = 1, $$20)) - }, $OneWayHeroics_getGoldTextProc$19.$$arity = 3); - Opal.defs(self, '$getDownTextProc', $OneWayHeroics_getDownTextProc$21 = function $$getDownTextProc(name, diceCount) { - var $$22, self = this; - - return $send(self, 'lambda', [], ($$22 = function(diceBot){var self = $$22.$$s || this, $a, $b, total = nil, diceText = nil; - - - - if (diceBot == null) { - diceBot = nil; - }; - $b = diceBot.$roll(diceCount, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - return "" + " > " + (diceCount) + "D6[" + (diceText) + "] > " + (name) + "が " + (total) + " 減少する";}, $$22.$$s = self, $$22.$$arity = 1, $$22)) - }, $OneWayHeroics_getDownTextProc$21.$$arity = 2); - Opal.defs(self, '$getAddRollProc', $OneWayHeroics_getAddRollProc$23 = function $$getAddRollProc(command) { - var $$24, self = this; - - return $send(self, 'lambda', [], ($$24 = function(diceBot){var self = $$24.$$s || this; - - - - if (diceBot == null) { - diceBot = nil; - }; - return diceBot.$getAddRoll(command);}, $$24.$$s = self, $$24.$$arity = 1, $$24)) - }, $OneWayHeroics_getAddRollProc$23.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["FT", "DC", "PR", "TT", "EC", "RNPC", "SCT", "FCLT", "FCLTP", "OUTENC", "OUTENCP", "MONFT", "MONFTP", "RANI", "DROP", "DROPWP", "DROPAR", "DROPHW", "DROPFD", "DROPSC", "DROPOT", "DROPP", "DROPDRP", "DROPSC2", "DROPWP2", "DROPAR2", "DROPHWP", "DROPFD2", "DROPOT2", "DROPRAREBOX2", "KNGFTP"], {"FT": $hash2(["name", "type", "table"], {"name": "ファンブル表", "type": "1D6", "table": [[1, "装備以外のアイテムのうちプレイヤー指定の1つを失う"], [2, "装備のうちプレイヤー指定の1つを失う"], [3, "1D6に100を掛け、それだけの【所持金】を失う", self.$getGoldTextProc(1, 100, "失う")], [4, "1D6に100を掛け、それだけの【所持金】を拾う", self.$getGoldTextProc(1, 100, "拾う")], [5, "【経験値】2を獲得する"], [6, "【経験値】4を獲得する"]]}), "DC": $hash2(["name", "type", "table"], {"name": "魔王追撃表", "type": "1D6", "table": [[1, "装備以外のアイテムのうちGM指定の1つを失う"], [2, "装備のうちGM指定の1つを失う"], [3, "2D6に100を掛け、それだけの【所持金】を失う", self.$getGoldTextProc(2, 100, "失う")], [4, "【LIFE】が1D6減少する", self.$getDownTextProc("【LIFE】", 1)], [5, "【ST】が1D6減少する", self.$getDownTextProc("【ST】", 1)], [6, "【LIFE】が2D6減少する", self.$getDownTextProc("【LIFE】", 2)]]}), "PR": $hash2(["name", "type", "table"], {"name": "進行ルート表", "type": "1D6", "table": [[1, "少し荒れた地形が続く。【日数】から【筋力】を引いただけ【ST】が減少する(最低0)。"], [2, "穏やかな地形が続く。【日数】から【敏捷】を引いただけ【ST】が減少する(最低0)。"], [3, "険しい岩山だ。【日数】に1を足して【生命】を引いただけ【ST】が減少する(最低0)。「登山」"], [4, "山で迷った。【日数】に2を足して【知力】を引いただけ【ST】が減少する(最低0)。「登山」"], [5, "川を泳ぐ。【日数】に1を足して【意志】を引いただけ【ST】が減少する(最低0)。「水泳」"], [6, "広い川を船で渡る。【日数】に2を足して【魅力】を引いただけ【ST】が減少する(最低0)。「水泳」"]]}), "TT": $hash2(["name", "type", "table"], {"name": "会話テーマ表", "type": "1D6", "table": [[1, "身体の悩みごとについて話す。【筋力】で判定。"], [2, "仕事の悩みごとについて話す。【敏捷】で判定。"], [3, "家族の悩みごとについて話す。【生命】で判定。"], [4, "勇者としてこれでいいのか的悩みごとを話す。【知力】で判定。"], [5, "友人関係の悩みごとを話す。【意志】で判定。"], [6, "恋の悩みごとを話す。【魅力】で判定。"]]}), "EC": $hash2(["name", "type", "table"], {"name": "逃走判定表", "type": "1D6", "table": [[1, "崖を登れば逃げられそうだ。【筋力】を使用する。"], [2, "障害物はない。走るしかない。【敏捷】を使用する。"], [3, "しつこく追われる。【生命】を使用する。"], [4, "隠れられる地形がある。【知力】を使用する。"], [5, "背中を向ける勇気が出るか? 【意志】を使用す"], [6, "もう人徳しか頼れない。【魅力】を使用する。"]]}), "RNPC": $hash2(["name", "type", "table"], {"name": "ランダムNPC特徴表", "type": "2D6", "table": [[2, "【物持ちの】"], [3, "【目のいい】"], [4, "【弱そうな】"], [5, "【宝石好きな】"], [6, "【エッチな】"], [7, "【ケチな】"], [8, "【変態の】"], [9, "【金持ちの】"], [10, "【強そうな】"], [11, "【目の悪い】"], [12, "【すばやい】"]]}), "SCT": $hash2(["name", "type", "table"], {"name": "偵察表", "type": "1D6", "table": [[1, "山に突き当たる。「登山」判定:【筋力】 ジャッジ:山を登る描写。"], [2, "川を流れ下る。「水泳」判定:【敏捷】 ジャッジ:川でピンチに陥る描写。"], [3, "広い湖だ……。「水泳」判定:【生命】 ジャッジ:湖面を泳ぐ描写。"], [4, "山の楽なルートを探そう。「登山」判定:【知力】 ジャッジ:山の豆知識。"], [5, "迫る闇から恐怖のあまり目を離せない。判定:【意志】 ジャッジ:勇者としての決意。"], [6, "任意のNPCに会って情報を聞く。判定:【魅力】 ジャッジ:相手を立てる会話。"]]}), "FCLT": $hash2(["name", "type", "table"], {"name": "施設表", "type": "2D6", "table": [[2, "聖なる神殿(152ページ)。"], [3, "魔王の力を封じた神殿(152ページ)。"], [4, "耳長たちの村(152ページ)。"], [5, "「村遭遇表」へ移動。大きな街なので村遭遇表を2回使用し、好きな結果を選べる。"], [6, "「村遭遇表」へ移動。小さな村だ。"], [7, "エリアの地形が「雪原」なら雪国の小屋(152ページ)。エリアの地形が「山岳」なら山小屋(152ページ)。それ以外の地形なら「村遭遇表」へ移動。この村は「石の小屋」だ。"], [8, "村遭遇表」へ移動。小さな村だ。"], [9, "村遭遇表」へ移動。大きな街なので村遭遇表を2回使用し、好きな結果を選べる。"], [10, "滅びた石の小屋(152ページ)。"], [11, "滅びた小さな村(152ページ)。"], [12, "闇ギルド(152ページ)。"]]}), "FCLTP": $hash2(["name", "type", "table"], {"name": "施設表プラス", "type": "D66", "table": [[11, "聖なる神殿(基本152ページ)"], [12, "魔王の力を封じた神殿(基本152ページ)"], [13, "耳長たちの村(基本152ページ)判定成功時に【耳長の軽い弓】【耳長の杖】を購入可能"], [14, "村遭遇表へ移動(基本151ページ)大きな街なので村遭遇表を2回振り、好きな結果を選べる"], [15, "村遭遇表へ移動(基本151ページ)小さな村"], [16, "エリアの地形が雪原なら雪国の小屋(基本152ページ)エリアの地形が山岳なら山小屋(基本152ページ)それ以外の地形なら石の小屋、村遭遇表へ移動(基本151ページ)"], [22, "村遭遇表へ移動(基本151ページ)小さな村"], [23, "村遭遇表へ移動(基本151ページ)大きな街なので村遭遇表を2回振り、好きな結果を選べる"], [24, "滅びた石の小屋(基本152ページ)"], [25, "滅びた小さな村(基本152ページ)"], [26, "闇ギルド(基本152ページ)判定成功時に一度だけ【闇ギルド袋屋】に3000シルバ支払い【所持重量】を1増加することができる。"], [33, "小さな店遭遇表プラスへ移動(023ページ)"], [34, "酒場遭遇表プラスへ移動"], [35, "酒場遭遇表プラスへ移動"], [36, "錬金おばばの家(024ページ)"], [44, "鍛冶屋の家(024ページ)"], [45, "半獣人の隠れ家(024ページ)"], [46, "罪人の街(024ページ)"], [55, "封印の街(024ページ)"], [56, "水上の街(024ページ)"], [66, "人魚の集落(024ページ)"]]}), "OUTENC": $hash2(["name", "type", "table"], {"name": "野外遭遇表", "type": "1D6", "table": [[1, "エリアの地形ごとの野外モンスター表へ移動。モンスターのうち1体にランダムな特徴がつく。モンスター特徴表(156ページ)を使用する。", self.$getAddRollProc("MONFT")], [2, "エリアの地形ごとの野外モンスター表へ移動。"], [3, "エリアの地形ごとの野外モンスター表へ移動。"], [4, "アンデッドの群れ(156ページ)。"], [5, "盗賊の群れ(156ページ)。"], [6, "希少動物表(156ページ)へ移動。", self.$getAddRollProc("RANI")]]}), "OUTENCP": $hash2(["name", "type", "table"], {"name": "野外遭遇表プラス", "type": "1D6", "table": [[1, "エリアの地形ごとの野外モンスター表プラスへ移動。モンスターのうち1体にランダムな特徴がつく。モンスター特徴表プラス(027ページ)を使用する。", self.$getAddRollProc("MONFTP")], [2, "エリアの地形ごとの野外モンスター表プラスへ移動し、出現したモンスターとの戦闘が発生する"], [3, "スライムモンスター表プラス(027ページ)へ移動。"], [4, "アンデッドの群れ(基本156ページ)"], [5, "盗賊の群れ(基本156ページ)"], [6, "希少動物表(基本156ページ)へ移動", self.$getAddRollProc("RANI")]]}), "MONFT": $hash2(["name", "type", "table"], {"name": "モンスター特徴表", "type": "D66", "table": [[11, "【エッチな】"], [12, "【変態の】"], [13, "【弱そうな】"], [14, "【目のいい】"], [15, "【目の悪い】"], [16, "【強そうな】"], [22, "【強そうな】"], [23, "【宝石好きな】"], [24, "【幻の】"], [25, "【違法な】"], [26, "【イカした】"], [33, "【物持ちの】"], [34, "【炎を吐く】"], [35, "【必中の】"], [36, "【すばやい】"], [44, "【やたら硬い】"], [45, "【名の知れた】"], [46, "【凶悪な】"], [55, "【賞金首の】"], [56, "【古代種の】"], [66, "【最強の】"]]}), "MONFTP": $hash2(["name", "type", "table"], {"name": "モンスター特徴表プラス", "type": "D66", "table": [[11, "【エッチな】(基本178ページ)"], [12, "【変態の】(基本178ページ)"], [13, "【目のいい】(基本178ページ)"], [14, "【目の悪い】(基本178ページ)"], [15, "【強そうな】(基本178ページ)"], [16, "【宝石好きな】(基本178ページ)"], [22, "【幻の】(基本178ページ)"], [23, "【違法な】(基本178ページ)"], [24, "【イカした】(基本178ページ)"], [25, "【物持ちの】(基本178ページ)"], [26, "【炎を吐く】(基本178ページ)"], [33, "【やたら硬い】(基本178ページ)"], [34, "【古代種の】(基本178ページ)"], [35, "【最強の】(基本178ページ)"], [36, "【異国風の】(047ページ)"], [44, "【毛深い】(047ページ)"], [45, "【耐火の】(047ページ)"], [46, "【耐雷の】(047ページ) "], [55, "【浮遊の】(047ページ)"], [56, "【臭い】( 0 4 7ページ)"], [66, "【恐怖の】(047ページ)"]]}), "RANI": $hash2(["name", "type", "hasGap", "table"], {"name": "希少動物表", "type": "1D6", "hasGap": true, "table": [[1, "【『緑の森』隊長】1体と遭遇する。今回のセッションで【雪ウサギ】【山岳ゴート】【遺跡白馬】【草原カワウソ】【砂漠キツネ】のいずれかを倒したことがあれば、戦闘が発生する。戦闘にならなかった場合はなごやかに別れる。"], [2, "【『緑の森』団員】1体と遭遇する。今回のセッションで【雪ウサギ】【山岳ゴート】【遺跡白馬】【草原カワウソ】【砂漠キツネ】のいずれかを倒したことがあれば、戦闘が発生する。戦闘にならなかった場合はなごやかに別れる。"], [4, "地形によって異なる希少動物が1体出現する。雪原なら【雪ウサギ】、山岳なら【山岳ゴート】、遺跡なら【遺跡白馬】、草原なら【草原カワウソ】、砂漠と荒野は【砂漠キツネ】。それ以外は【緑の森団員】となる。戦闘を挑んでもいいし、見送ってもいい。"]]}), "DROP": $hash2(["name", "type", "table"], {"name": "ドロップアイテム表", "type": "1D6", "table": [[1, "武器ドロップ表へ移動", self.$getAddRollProc("DROPWP")], [2, "武器ドロップ表へ移動", self.$getAddRollProc("DROPWP")], [3, "防具ドロップ表へ移動", self.$getAddRollProc("DROPAR")], [4, "食品ドロップ表へ移動", self.$getAddRollProc("DROPFD")], [5, "巻物ドロップ表へ移動", self.$getAddRollProc("DROPSC")], [6, "その他ドロップ表へ移動", self.$getAddRollProc("DROPOT")]]}), "DROPWP": $hash2(["name", "type", "table"], {"name": "武器ドロップ表", "type": "D66", "table": [[11, " 【さびた小剣】"], [12, " 【さびた長剣】"], [13, " 【さびた大剣】"], [14, " 【長い棒】"], [15, " 【ダガー】"], [16, " 【木こりの大斧】"], [22, " 【ショートブレイド】"], [23, " 【木の杖】"], [24, " 【狩人の弓】"], [25, " 【レイピア】"], [26, " 【携帯弓】"], [33, " 【ロングブレイド】"], [34, " 【スレンドスピア】"], [35, " 【バトルアックス】"], [36, " 【軍用剛弓】"], [44, " 【グランドブレイド】"], [45, " 【祈りの杖】"], [46, " 【ヘビィボウガン】"], [55, " 【シルバーランス】"], [56, " 【イーグルブレイド】"], [66, " 【クレセントアクス】"]]}), "DROPAR": $hash2(["name", "type", "table"], {"name": "防具ドロップ表", "type": "D66", "table": [[11, " 【旅人の服】"], [12, " 【旅人の服】"], [13, " 【旅人の服】"], [14, " 【レザーシールド】"], [15, " 【レザーシールド】"], [16, " 【騎士のコート】"], [22, " 【騎士のコート】"], [23, " 【スケイルシールド】"], [24, " 【スケイルシールド】"], [25, " 【レザーベスト】"], [26, " 【レザーベスト】"], [33, " 【ヘビィシールド】"], [34, " 【チェインクロス】"], [35, " 【チェインクロス】"], [36, " 【試練の腕輪】"], [44, " 【精霊のローブ】"], [45, " 【必殺の腕輪】"], [46, " 【ギガントプレート】"], [55, " 【破壊の腕輪】"], [56, " 【理力の腕輪】"], [66, " 【加速の腕輪】"]]}), "DROPHW": $hash2(["name", "type", "table"], {"name": "聖武具ドロップ表", "type": "2D6", "table": [[2, "【紅き太陽の剣】"], [3, "【紅き太陽の剣】"], [4, "【聖剣カレドヴルフ】 "], [5, "【聖斧エルサーベス】 "], [6, "【水霊のマント】"], [7, "【大地の鎧】"], [8, "【大気の盾】"], [9, "【聖弓ル・アルシャ】"], [10, " 【聖槍ヴァルキウス】"], [11, " 【聖なる月の剣】"], [12, " 【聖なる月の剣】"]]}), "DROPFD": $hash2(["name", "type", "table"], {"name": "食品ドロップ表", "type": "D66", "table": [[11, " 【枯れた草】"], [12, " 【こげた草】"], [13, " 【サボテンの肉】"], [14, " 【動物の肉】"], [15, " 【癒しの草】、地形が火山なら【こげた草】"], [16, " 【癒しの草】、地形が火山なら【こげた草】、地形 が雪原なら【スノークリスタ草】"], [22, " 【スタミナ草】、地形が火山なら【こげた草】"], [23, " 【スタミナ草】、地形が火山なら【こげた草】、地 形が雪原なら【スノークリスタ草】"], [24, " 【触手の草】、地形が火山なら【こげた草】"], [25, " 【触手の草】、地形が火山なら【こげた草】、地形 が雪原なら【スノークリスタ草】"], [26, " 【スタミナのアンプル】"], [33, " 【癒しのアンプル】"], [34, " 【癒しのアンプル】"], [35, " 【ナユタの実】、地形が火山なら【こげた草】"], [36, " 【ナユタの実】、地形が火山なら【こげた草】"], [44, " 【火炎のアンプル】"], [45, " 【強酸のアンプル】"], [46, " 【とぶクスリ】"], [55, " 【竜炎のアンプル】"], [56, " 【おいしいお弁当】"], [66, " 【自然治癒のアンプル】"]]}), "DROPSC": $hash2(["name", "type", "table"], {"name": "巻物ドロップ表", "type": "D66", "table": [[11, " 【石壁の巻物】"], [12, " 【石壁の巻物】"], [13, " 【周辺の地図】"], [14, " 【周辺の地図】"], [15, " 【周辺の地図】"], [16, " 【火炎付与の巻物】"], [22, " 【混乱の巻物】"], [23, " 【剣の巻物】"], [24, " 【剣の巻物】"], [25, " 【鎧の巻物】"], [26, " 【鎧の巻物】"], [33, " 【応急修理の巻物】"], [34, " 【応急修理の巻物】"], [35, " 【移動不能付与の巻物】"], [36, " 【移動不能付与の巻物】"], [44, " 【宝の地図】"], [45, " 【宝の地図】"], [46, " 【召喚の巻物】"], [55, " 【剣の王の巻物】"], [56, " 【守りの神の巻物】"], [66, " 【高度修復の巻物】"]]}), "DROPOT": $hash2(["name", "type", "table"], {"name": "その他ドロップ表", "type": "D66", "table": [[11, " 【大きな石】、地形が火山なら【くすんだ宝石】"], [12, " 【大きな石】、地形が火山なら【くすんだ宝石】"], [13, " 【大きな石】、地形が火山なら【美しい宝石】"], [14, " 【木製の矢】"], [15, " 【理力の矢】"], [16, " 【鉄製の矢】"], [22, " 【投げナイフ】"], [23, " 【爆弾矢】"], [24, " 【くすんだ宝石】"], [25, " 【盾修復キット】"], [26, " 【上質の研ぎ石】"], [33, " 【エルザイト爆弾】"], [34, " 【セーブクリスタル】"], [35, " 【試練の腕輪】"], [36, " 【必殺の腕輪】"], [44, " 【破壊の腕輪】"], [45, " 【理力の腕輪】"], [46, " 【加速の腕輪】"], [55, " 【美しい宝石】"], [56, " 【封印のカギ】"], [66, " 【闇ギルド会員証】"]]}), "DROPP": $hash2(["name", "type", "table"], {"name": "ドロップアイテム表プラス", "type": "D66", "table": [[11, "武器ドロップ表", self.$getAddRollProc("DROPWP")], [12, "武器ドロップ表", self.$getAddRollProc("DROPWP")], [13, "武器ドロップ表2", self.$getAddRollProc("DROPWP2")], [14, "武器ドロップ表2", self.$getAddRollProc("DROPWP2")], [15, "防具ドロップ表", self.$getAddRollProc("DROPAR")], [16, "防具ドロップ表", self.$getAddRollProc("DROPAR")], [22, "防具ドロップ表2", self.$getAddRollProc("DROPAR2")], [23, "防具ドロップ表2", self.$getAddRollProc("DROPAR2")], [24, "食品ドロップ表", self.$getAddRollProc("DROPFD")], [25, "食品ドロップ表", self.$getAddRollProc("DROPFD")], [26, "食品ドロップ表2", self.$getAddRollProc("DROPFD2")], [33, "食品ドロップ表2", self.$getAddRollProc("DROPFD2")], [34, "薬品ドロップ表プラス", self.$getAddRollProc("DROPDRP")], [35, "薬品ドロップ表プラス", self.$getAddRollProc("DROPDRP")], [36, "巻物ドロップ表", self.$getAddRollProc("DROPSC")], [44, "巻物ドロップ表", self.$getAddRollProc("DROPSC")], [45, "巻物ドロップ表2", self.$getAddRollProc("DROPSC2")], [46, "巻物ドロップ表2", self.$getAddRollProc("DROPSC2")], [55, "その他ドロップ表", self.$getAddRollProc("DROPOT")], [56, "その他ドロップ表", self.$getAddRollProc("DROPOT")], [66, "その他ドロップ表2", self.$getAddRollProc("DROPOT2")]]}), "DROPDRP": $hash2(["name", "type", "table"], {"name": "薬品ドロップ表プラス", "type": "D66", "table": [[11, "【燃料油のビン】"], [12, "【燃料油のビン】"], [13, "【燃料油のビン】"], [14, "【弱体の薬】"], [15, "【弱体の薬】"], [16, "【弱体の薬】"], [22, "【成長の薬】"], [23, "【ベルセルクアンプル】"], [24, "【ベルセルクアンプル】"], [25, "【浮遊の薬】"], [26, "【浮遊の薬】"], [33, "【反動解消の薬】"], [34, "【反動解消の薬】"], [35, "【癒しの大ボトル】"], [36, "【癒しの大ボトル】"], [44, "【超元気のアンプル】"], [45, "【超元気のアンプル】"], [46, "【薬命酒】"], [55, "【薬命酒】"], [56, "【洗脳のクスリ】"], [66, "【洗脳のクスリ】"]]}), "DROPSC2": $hash2(["name", "type", "table"], {"name": "巻物ドロップ表2", "type": "D66", "table": [[11, "【火炎波の巻物】"], [12, "【悟りの巻物】"], [13, "【理盾の巻物】"], [14, "【泉の巻物】"], [15, "【雷神の巻物】"], [16, "【超激震の巻物】"], [22, "【闇を阻む巻物】"], [23, "【引きこもりの巻物】"], [24, "【鋼鉄の巻物】"], [25, "【回廊の巻物】"], [26, "【騎士団の巻物】"], [33, "【水泳能力の巻物】"], [34, "【浮遊能力の巻物】"], [35, "【治癒の書】"], [36, "【浮遊の書】"], [44, "【突風の書】"], [45, "【睡眠の書】"], [46, "【火炎の書】"], [55, "【鋼鉄の書】"], [56, "【加速の書】"], [66, "【闇払いの書】"]]}), "DROPWP2": $hash2(["name", "type", "table"], {"name": "武器ドロップ表2", "type": "D66", "table": [[11, "【さびた巨大斧】"], [12, "【さびた巨大斧】"], [13, "【モコモコのバトン】"], [14, "【モコモコのバトン】"], [15, "【ベルセルクアクス】"], [16, "【ベルセルクアクス】"], [22, "【クナイ】"], [23, "【クナイ】"], [24, "【術殺槍】"], [25, "【ウィンドスピア】"], [26, "【ウィンドスピア】"], [33, "【つるはし】"], [34, "【つるはし】"], [35, "【理力の剣】"], [36, "【蒼い短刀】"], [44, "【クリムゾンクロウ】"], [45, "【ナユタの杖】"], [46, "【ナユタの杖】"], [55, "【一撃斧】"], [56, "【ファイアブランド】"], [66, "【ソードクロスボウ】"]]}), "DROPAR2": $hash2(["name", "type", "table"], {"name": "防具ドロップ表2", "type": "D66", "table": [[11, "【ボロボロの服】"], [12, "【ボロボロの服】"], [13, "【穴だらけの鎧】"], [14, "【穴だらけの鎧】"], [15, "【木製の追加装甲】"], [16, "【木製の追加装甲】"], [22, "【ガラスの鎧】"], [23, "【ガラスの鎧】"], [24, "【鉄板の追加装甲】"], [25, "【鉄板の追加装甲】"], [26, "【太陽のランタン】"], [33, "【耐火服】"], [34, "【獣の革のバッグ】"], [35, "【重量ブーツ】"], [36, "【冒険者のブーツ】"], [44, "【ラバーブーツ】"], [45, "【風のマント】"], [46, "【狩人の服】"], [55, "【ドラゴンスケイル】"], [56, "【不育の腕輪】"], [66, "【竜革の大きなバッグ】"]]}), "DROPHWP": $hash2(["name", "type", "table"], {"name": "聖武具ドロップ表プラス", "type": "D66", "table": [[11, "【大気の盾】"], [23, "【聖剣カレドヴルフ】"], [36, "【紅蓮の書】"], [12, "【大気の盾】"], [24, "【聖斧エルサーベス】"], [44, "【聖弓ル・アルシャ】"], [13, "【大地の鎧】"], [25, "【聖斧エルサーベス】"], [45, "【聖弓ル・アルシャ】"], [14, "【大地の鎧】"], [26, "【聖槍ヴァルキウス】"], [46, "【聖なる月の剣】"], [15, "【水霊のマント】"], [33, "【聖槍ヴァルキウス】"], [55, "【紅き太陽の剣】"], [16, "【水霊のマント】"], [34, "【聖槍ヴァルキウス】"], [56, "【嵐の聖剣】"], [22, "【聖剣カレドヴルフ】"], [35, "【紅蓮の書】"], [66, "【超重の聖斧】"]]}), "DROPFD2": $hash2(["name", "type", "table"], {"name": "食品ドロップ表2", "type": "1D6", "table": [[1, "【解毒の草】、地形が火 山なら【こげた草】、地 形が海岸なら【おいし い海藻】"], [2, "【気付けの草】、地形が 火山なら【こげた草】、 地形が海岸なら【おい しい海藻】"], [3, "【夜目の草】"], [4, "【力が湧く草】"], [5, "【集中の草】"], [6, "【牛乳】"]]}), "DROPOT2": $hash2(["name", "type", "table"], {"name": "その他 ドロップ表2", "type": "2D6", "table": [[2, "【五連の矢】"], [3, "【炎の矢】"], [4, "【聖なる投げ刃】"], [5, "【物体破壊爆弾】"], [6, "【閃光弾】"], [7, "【聖なる短剣の破片】"], [8, "【閃光弾】"], [9, "【旋風の投げ刃】"], [10, "【スーパーエルザイト 爆弾】"], [11, "【炎の矢】"], [12, "【五連の矢】"]]}), "DROPRAREBOX2": $hash2(["name", "type", "table"], {"name": "珍しい箱ドロップ表2", "type": "2D6", "table": [[2, "聖武具ドロップ表プラ スへ"], [3, "【耐久力の結晶】"], [4, "【偉大な筋力の結晶】"], [5, "【偉大な敏捷の結晶】"], [6, "【偉大な生命の結晶】"], [7, "【竜鱗の追加装甲】"], [8, "【偉大な魅力の結晶】"], [9, "【偉大な意志の結晶】"], [10, "【偉大な知力の結晶】"], [11, "【スタミナの結晶】"], [12, "【闇払いの書】"]]}), "KNGFTP": $hash2(["name", "type", "table"], {"name": "王特徴表プラス", "type": "1D6", "table": [[1, "【力の王の】(047ページ)"], [2, "【力の王の】(047ページ)"], [3, "【疾風の王の】(047ページ)"], [4, "【疾風の王の】(047ページ)"], [5, "【炎の王の】(047ページ)"], [6, "【絶望の王の】(047ページ)"]]})}).$freeze()); - return self.$setPrefixes($rb_plus(["\\d*JD.*", "RET\\d+", "RETP\\d+", "DNGN\\d+"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/OracleEngine.js b/src/assets/dicebot/OracleEngine.js deleted file mode 100644 index f2ceecc79..000000000 --- a/src/assets/dicebot/OracleEngine.js +++ /dev/null @@ -1,836 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/normalize"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; - - Opal.add_stubs(['$module_function', '$===', '$==', '$to_i']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Normalize'); - - var $nesting = [self].concat($parent_nesting), $Normalize_comparison_operator$1, $Normalize_target_number$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Normalize_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if (/<=|==|=>/['$===']($case)) {return ">="} - else if (/<>|!=|=!/['$===']($case)) {return "!="} - else if (//['$===']($case)) {return ">"} - else if (/\=/['$===']($case)) {return "=="} - else { return nil }})() - }, $Normalize_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$target_number', $Normalize_target_number$2 = function $$target_number(val) { - var self = this; - - if (val['$==']("?")) { - return val - } else { - return val.$to_i() - } - }, $Normalize_target_number$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/command_parser"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$attr_accessor', '$include', '$format_modifier', '$===', '$join', '$tokenize', '$new', '$lhs', '$take_cmp_op', '$cmp_op=', '$-', '$cmp_op', '$expr', '$target_number=', '$<', '$size', '$private', '$split', '$gsub', '$take', '$literal?', '$command_suffix', '$loop', '$consume', '$+', '$mul', '$command=', '$modify_number=', '$critical', '$unary', '$critical=', '$fumble', '$fumble=', '$dollar', '$dollar=', '$each', '$==', '$=~', '$[]', '$comparison_operator']); - - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/normalize"); - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'CommandParser'); - - var $nesting = [self].concat($parent_nesting), $CommandParser_initialize$1, $CommandParser_parse$4, $CommandParser_tokenize$5, $CommandParser_lhs$7, $CommandParser_command_suffix$9, $CommandParser_literal$ques$11, $CommandParser_take$13, $CommandParser_take_cmp_op$14; - - self.$$prototype.error = self.$$prototype.parsed = self.$$prototype.idx = self.$$prototype.tokens = self.$$prototype.literals = nil; - - - Opal.def(self, '$initialize', $CommandParser_initialize$1 = function $$initialize($a) { - var $post_args, literals, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - literals = $post_args;; - self.literals = literals; - return (self.round_type = "omit"); - }, $CommandParser_initialize$1.$$arity = -1); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Parsed'); - - var $nesting = [self].concat($parent_nesting), $Parsed_initialize$2, $Parsed_to_s$3; - - self.$$prototype.critical = self.$$prototype.fumble = self.$$prototype.dollar = self.$$prototype.modify_number = self.$$prototype.command = self.$$prototype.cmp_op = self.$$prototype.target_number = nil; - - self.$attr_accessor("command", "critical", "fumble", "dollar", "modify_number", "cmp_op", "target_number"); - self.$include($$($nesting, 'ModifierFormatter')); - - Opal.def(self, '$initialize', $Parsed_initialize$2 = function $$initialize() { - var self = this; - - - self.critical = nil; - self.fumble = nil; - return (self.dollar = nil); - }, $Parsed_initialize$2.$$arity = 0); - return (Opal.def(self, '$to_s', $Parsed_to_s$3 = function $$to_s(suffix_position) { - var self = this, c = nil, f = nil, d = nil, m = nil, $case = nil; - - - - if (suffix_position == null) { - suffix_position = "after_command"; - }; - c = (function() {if ($truthy(self.critical)) { - return "" + "@" + (self.critical) - } else { - return nil - }; return nil; })(); - f = (function() {if ($truthy(self.fumble)) { - return "" + "#" + (self.fumble) - } else { - return nil - }; return nil; })(); - d = (function() {if ($truthy(self.dollar)) { - return "" + "$" + (self.dollar) - } else { - return nil - }; return nil; })(); - m = self.$format_modifier(self.modify_number); - return (function() {$case = suffix_position; - if ("after_command"['$===']($case)) {return [self.command, c, f, d, m, self.cmp_op, self.target_number].$join()} - else if ("after_modify_number"['$===']($case)) {return [self.command, m, c, f, d, self.cmp_op, self.target_number].$join()} - else if ("after_target_number"['$===']($case)) {return [self.command, m, self.cmp_op, self.target_number, c, f, d].$join()} - else { return nil }})(); - }, $Parsed_to_s$3.$$arity = -1), nil) && 'to_s'; - })($nesting[0], null, $nesting); - - Opal.def(self, '$parse', $CommandParser_parse$4 = function $$parse(expr, round_type) { - var $a, self = this, $writer = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - self.parsed = $$($nesting, 'Parsed').$new(); - self.$lhs(); - if ($truthy(self.error)) { - return nil}; - - $writer = [self.$take_cmp_op()]; - $send(self.parsed, 'cmp_op=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(self.parsed.$cmp_op())) { - return self.$expr() - } else { - return nil - }; return nil; })()]; - $send(self.parsed, 'target_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy(($truthy($a = $rb_lt(self.idx, self.tokens.$size())) ? $a : self.error))) { - return nil}; - return self.parsed; - }, $CommandParser_parse$4.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $CommandParser_tokenize$5 = function $$tokenize(expr) { - var $$6, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-*\/@#\$]|[<>!=]+/], ($$6 = function(e){var self = $$6.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$split(" ") - }, $CommandParser_tokenize$5.$$arity = 1); - - Opal.def(self, '$lhs', $CommandParser_lhs$7 = function $$lhs() { - var $$8, self = this, command = nil, ret = nil, $writer = nil; - - - command = self.$take(); - if ($truthy(self['$literal?'](command))) { - } else { - - self.error = true; - return nil; - }; - self.$command_suffix(); - ret = 0; - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$8 = function(){var self = $$8.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$8.$$s = self, $$8.$$brk = $brk, $$8.$$arity = 0, $$8)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - self.$command_suffix(); - - $writer = [command]; - $send(self.parsed, 'command=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [ret]; - $send(self.parsed, 'modify_number=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - }, $CommandParser_lhs$7.$$arity = 0); - - Opal.def(self, '$command_suffix', $CommandParser_command_suffix$9 = function $$command_suffix() { - var $$10, self = this; - - return (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$10 = function(){var self = $$10.$$s || this, $writer = nil; - if (self.parsed == null) self.parsed = nil; - - if ($truthy(self.$consume("@"))) { - - if ($truthy(self.parsed.$critical())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'critical=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else if ($truthy(self.$consume("#"))) { - - if ($truthy(self.parsed.$fumble())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'fumble=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else if ($truthy(self.$consume("$"))) { - - if ($truthy(self.parsed.$dollar())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'dollar=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else { - - Opal.brk(nil, $brk) - }}, $$10.$$s = self, $$10.$$brk = $brk, $$10.$$arity = 0, $$10)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})() - }, $CommandParser_command_suffix$9.$$arity = 0); - - Opal.def(self, '$literal?', $CommandParser_literal$ques$11 = function(command) {try { - - var $$12, self = this; - - - $send(self.literals, 'each', [], ($$12 = function(lit){var self = $$12.$$s || this, $case = nil; - - - - if (lit == null) { - lit = nil; - }; - return (function() {$case = lit; - if ($$($nesting, 'String')['$===']($case)) {if (command['$=='](lit)) { - Opal.ret(true) - } else { - return nil - }} - else if ($$($nesting, 'Regexp')['$===']($case)) {if ($truthy(command['$=~'](lit))) { - Opal.ret(true) - } else { - return nil - }} - else { return nil }})();}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - return false; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $CommandParser_literal$ques$11.$$arity = 1); - - Opal.def(self, '$take', $CommandParser_take$13 = function $$take() { - var self = this, ret = nil; - - - ret = self.tokens['$[]'](self.idx); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $CommandParser_take$13.$$arity = 0); - return (Opal.def(self, '$take_cmp_op', $CommandParser_take_cmp_op$14 = function $$take_cmp_op() { - var self = this; - - return $$($nesting, 'Normalize').$comparison_operator(self.$take()) - }, $CommandParser_take_cmp_op$14.$$arity = 0), nil) && 'take_cmp_op'; - })($nesting[0], $$($nesting, 'ArithmeticEvaluator'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/format"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$module_function', '$===', '$to_s', '$==', '$>']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Format'); - - var $nesting = [self].concat($parent_nesting), $Format_comparison_operator$1, $Format_modifier$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Format_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if ("=="['$===']($case)) {return "="} - else if ("!="['$===']($case)) {return "<>"} - else if ($$($nesting, 'Symbol')['$===']($case)) {return op.$to_s()} - else { return nil }})() - }, $Format_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$modifier', $Format_modifier$2 = function $$modifier(number) { - var self = this; - - if (number['$=='](0)) { - return "" - } else if ($truthy($rb_gt(number, 0))) { - return "" + "+" + (number) - } else { - return number.$to_s() - } - }, $Format_modifier$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$include', '$setPrefixes', '$===', '$clutch_roll', '$damage_roll', '$r_roll', '$debug', '$new', '$parse', '$include?', '$cmp_op', '$map', '$split', '$command', '$to_proc', '$clamp', '$target_number', '$target_number=', '$-', '$==', '$sort', '$roll_', '$+', '$modify_number', '$expr_clutch', '$join', '$result_clutch', '$last', '$comparison_operator', '$format_modifier', '$!=', '$>=', '$<', '$>', '$roll', '$to_i', '$normalize_critical', '$critical', '$normalize_fumble', '$fumble', '$abs', '$dollar', '$pop', '$inject', '$dup', '$expr_r', '$dice_result_r', '$result_r', '$empty?', '$<=', '$to_s', '$match', '$nil?', '$!', '$expr_damage', '$result_damage']); - - self.$require("utils/command_parser"); - self.$require("utils/format"); - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'OracleEngine'); - - var $nesting = [self].concat($parent_nesting), $OracleEngine_initialize$1, $OracleEngine_rollDiceCommand$2, $OracleEngine_clutch_roll$3, $OracleEngine_expr_clutch$5, $OracleEngine_result_clutch$6, $OracleEngine_clamp$7, $OracleEngine_roll_$8, $OracleEngine_r_roll$9, $OracleEngine_expr_r$10, $OracleEngine_dice_result_r$11, $OracleEngine_result_r$12, $OracleEngine_normalize_critical$13, $OracleEngine_normalize_fumble$14, $OracleEngine_damage_roll$15, $OracleEngine_expr_damage$16, $OracleEngine_result_damage$17; - - self.$$prototype.cmd = self.$$prototype.max_shift = self.$$prototype.times = self.$$prototype["break"] = self.$$prototype.critical = self.$$prototype.fumble = nil; - - self.$include($$($nesting, 'ModifierFormatter')); - Opal.const_set($nesting[0], 'ID', "OracleEngine"); - Opal.const_set($nesting[0], 'NAME', "オラクルエンジン"); - Opal.const_set($nesting[0], 'SORT_KEY', "おらくるえんしん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + " ・クラッチロール (xCL+y>=z)\n" + " ダイスをx個振り、1個以上目標シフトzに到達したか判定します。修正yは全てのダイスにかかります。\n" + " 成功した時は目標シフトを、失敗した時はダイスの最大値-1シフトを返します\n" + " zが指定されないときは、ダイスをx個を振り、それに修正yしたものを返します。\n" + " 通常、最低シフトは1、最大シフトは6です。目標シフトもそろえられます。\n" + " また、CLの後に7を入れ、(xCL7+y>=z)と入力すると最大シフトが7になります。\n" + " ・判定 (xR6+y@c#f$b>=z)\n" + " ダイスをx個振り、大きいもの2つだけを見て達成値を算出し、成否を判定します。修正yは達成値にかかります。\n" + " ダイスブレイクとしてbを、クリティカル値としてcを、ファンブル値としてfを指定できます。\n" + " それぞれ指定されない時、0,12,2になります。\n" + " クリティカル値の上限はなし、下限は2。ファンブル値の上限は12、下限は0。\n" + " zが指定されないとき、達成値の算出のみ行います。\n" + " ・ダメージロールのダイスブレイク (xD6+y$b)\n" + " ダイスをx個振り、合計値を出します。修正yは合計値にかかります。\n" + " ダイスブレイクとしてbを指定します。合計値は0未満になりません。\n"); - self.$setPrefixes(["\\d+CL.*", "\\d+R6.*", "\\d+D6.*\\$[\\+\\-]?\\d+.*"]); - - Opal.def(self, '$initialize', $OracleEngine_initialize$1 = function $$initialize() { - var $iter = $OracleEngine_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $OracleEngine_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $OracleEngine_initialize$1, false), $zuper, $iter); - return (self.sortType = 3); - }, $OracleEngine_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $OracleEngine_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if (/\d+CL.*/i['$===']($case)) {return self.$clutch_roll(command)} - else if (/\d+D6.*\$[\+\-]?\d.*/['$===']($case)) {return self.$damage_roll(command)} - else if (/\d+R6/['$===']($case)) {return self.$r_roll(command)} - else { return nil }})() - }, $OracleEngine_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$clutch_roll', $OracleEngine_clutch_roll$3 = function $$clutch_roll(string) { - var $a, $b, $$4, self = this, parser = nil, $writer = nil, dice_list = nil, sequence = nil; - - - self.$debug("clutch_roll begin", string); - parser = $$($nesting, 'CommandParser').$new(/\d+CL[67]?/i); - self.cmd = parser.$parse(string); - if ($truthy(self.cmd)) { - } else { - return nil - }; - if ($truthy([">=", nil]['$include?'](self.cmd.$cmp_op()))) { - } else { - return nil - }; - $b = $send(self.cmd.$command().$split("CL"), 'map', [], "to_i".$to_proc()), $a = Opal.to_ary($b), (self.times = ($a[0] == null ? nil : $a[0])), (self.max_shift = ($a[1] == null ? nil : $a[1])), $b; - self.max_shift = ($truthy($a = self.max_shift) ? $a : 6); - if ($truthy(self.cmd.$cmp_op())) { - - $writer = [self.$clamp(self.cmd.$target_number(), 1, self.max_shift)]; - $send(self.cmd, 'target_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];}; - if (self.times['$=='](0)) { - return nil}; - dice_list = $send(self.$roll_(self.times, 6), 'map', [], ($$4 = function(x){var self = $$4.$$s || this; - if (self.cmd == null) self.cmd = nil; - if (self.max_shift == null) self.max_shift = nil; - - - - if (x == null) { - x = nil; - }; - return self.$clamp($rb_plus(x, self.cmd.$modify_number()), 1, self.max_shift);}, $$4.$$s = self, $$4.$$arity = 1, $$4)).$sort(); - sequence = [self.$expr_clutch(), "" + "[" + (dice_list.$join(", ")) + "]", self.$result_clutch(dice_list.$last())]; - return sequence.$join(" > "); - }, $OracleEngine_clutch_roll$3.$$arity = 1); - - Opal.def(self, '$expr_clutch', $OracleEngine_expr_clutch$5 = function $$expr_clutch() { - var self = this, max_shift = nil, cmp_op = nil, modify_number = nil; - - - max_shift = (function() {if (self.max_shift['$=='](7)) { - return 7 - } else { - return nil - }; return nil; })(); - cmp_op = $$($nesting, 'Format').$comparison_operator(self.cmd.$cmp_op()); - modify_number = self.$format_modifier(self.cmd.$modify_number()); - return "" + "(" + (self.times) + "CL" + (max_shift) + (modify_number) + (cmp_op) + (self.cmd.$target_number()) + ")"; - }, $OracleEngine_expr_clutch$5.$$arity = 0); - - Opal.def(self, '$result_clutch', $OracleEngine_result_clutch$6 = function $$result_clutch(after_shift) { - var self = this; - - if ($truthy(self.cmd.$cmp_op()['$!='](">="))) { - return "" + "シフト" + (after_shift) - } else if ($truthy($rb_ge(after_shift, self.cmd.$target_number()))) { - return "" + "成功 シフト" + (self.cmd.$target_number()) - } else { - - after_shift = $rb_minus(after_shift, 1); - if ($truthy($rb_lt(after_shift, 1))) { - after_shift = 1}; - return "" + "失敗 シフト" + (after_shift); - } - }, $OracleEngine_result_clutch$6.$$arity = 1); - - Opal.def(self, '$clamp', $OracleEngine_clamp$7 = function $$clamp(i, min, max) { - var self = this; - - if ($truthy($rb_lt(i, min))) { - return min - } else if ($truthy($rb_gt(i, max))) { - return max - } else { - return i - } - }, $OracleEngine_clamp$7.$$arity = 3); - - Opal.def(self, '$roll_', $OracleEngine_roll_$8 = function $$roll_(times, sides) { - var $a, $b, self = this, _ = nil, dice_list = nil; - - - $b = self.$roll(times, sides), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dice_list = ($a[1] == null ? nil : $a[1])), $b; - return $send(dice_list.$split(","), 'map', [], "to_i".$to_proc()); - }, $OracleEngine_roll_$8.$$arity = 2); - - Opal.def(self, '$r_roll', $OracleEngine_r_roll$9 = function $$r_roll(string) { - var $a, self = this, parser = nil, dice_list = nil, dice_broken = nil, dice_total = nil, total = nil, sequence = nil; - - - parser = $$($nesting, 'CommandParser').$new(/\d+R6/i); - self.cmd = parser.$parse(string); - if ($truthy(self.cmd)) { - } else { - return nil - }; - if ($truthy([">=", nil]['$include?'](self.cmd.$cmp_op()))) { - } else { - return nil - }; - self.times = self.cmd.$command().$to_i(); - if (self.times['$=='](0)) { - return nil}; - self.critical = self.$normalize_critical(($truthy($a = self.cmd.$critical()) ? $a : 12), string); - self.fumble = self.$normalize_fumble(($truthy($a = self.cmd.$fumble()) ? $a : 2), string); - self["break"] = ($truthy($a = self.cmd.$dollar()) ? $a : 0).$abs(); - dice_list = self.$roll_(self.times, 6).$sort(); - dice_broken = dice_list.$pop(self["break"]); - dice_total = dice_list.$dup().$pop(2).$inject(0, "+"); - total = $rb_plus(dice_total, self.cmd.$modify_number()); - sequence = [self.$expr_r(), self.$dice_result_r(dice_total, dice_list, dice_broken), self.$result_r(dice_total, total)]; - return sequence.$join(" > "); - }, $OracleEngine_r_roll$9.$$arity = 1); - - Opal.def(self, '$expr_r', $OracleEngine_expr_r$10 = function $$expr_r() { - var self = this, modify_number = nil, critical = nil, fumble = nil, brak = nil, cmp_op = nil; - - - modify_number = self.$format_modifier(self.cmd.$modify_number()); - critical = (function() {if (self.critical['$=='](12)) { - return "" - } else { - return "" + "c[" + (self.critical) + "]" - }; return nil; })(); - fumble = (function() {if (self.fumble['$=='](2)) { - return "" - } else { - return "" + "f[" + (self.fumble) + "]" - }; return nil; })(); - brak = (function() {if (self["break"]['$=='](0)) { - return "" - } else { - return "" + "b[" + (self["break"]) + "]" - }; return nil; })(); - cmp_op = $$($nesting, 'Format').$comparison_operator(self.cmd.$cmp_op()); - return "" + "(" + (self.times) + "R6" + (modify_number) + (critical) + (fumble) + (brak) + (cmp_op) + (self.cmd.$target_number()) + ")"; - }, $OracleEngine_expr_r$10.$$arity = 0); - - Opal.def(self, '$dice_result_r', $OracleEngine_dice_result_r$11 = function $$dice_result_r(dice_total, dice_list, break_list) { - var self = this, modify_number_text = nil; - - - modify_number_text = self.$format_modifier(self.cmd.$modify_number()); - if ($truthy(break_list['$empty?']())) { - return "" + (dice_total) + "[" + (dice_list.$join(", ")) + "]" + (modify_number_text) - } else { - return "" + (dice_total) + "[" + (dice_list.$join(", ")) + "]×[" + (break_list.$join(", ")) + "]" + (modify_number_text) - }; - }, $OracleEngine_dice_result_r$11.$$arity = 3); - - Opal.def(self, '$result_r', $OracleEngine_result_r$12 = function $$result_r(dice_total, total) { - var self = this; - - if ($truthy($rb_le(dice_total, self.fumble))) { - return "ファンブル!" - } else if ($truthy($rb_ge(dice_total, self.critical))) { - return "クリティカル!" - } else if (self.cmd.$cmp_op()['$=='](">=")) { - if ($truthy($rb_ge(total, self.cmd.$target_number()))) { - return "" + (total) + " 成功" - } else { - return "" + (total) + " 失敗" - } - } else { - return total.$to_s() - } - }, $OracleEngine_result_r$12.$$arity = 2); - - Opal.def(self, '$normalize_critical', $OracleEngine_normalize_critical$13 = function $$normalize_critical(critical, string) { - var self = this; - - - if ($truthy(/@[+-]/.$match(string))) { - critical = $rb_plus(12, critical)}; - if ($truthy($rb_lt(critical, 2))) { - critical = 2}; - return critical; - }, $OracleEngine_normalize_critical$13.$$arity = 2); - - Opal.def(self, '$normalize_fumble', $OracleEngine_normalize_fumble$14 = function $$normalize_fumble(fumble, string) { - var self = this; - - - if ($truthy(/#[+-]/.$match(string))) { - fumble = $rb_plus(2, fumble)}; - return self.$clamp(fumble, 0, 12); - }, $OracleEngine_normalize_fumble$14.$$arity = 2); - - Opal.def(self, '$damage_roll', $OracleEngine_damage_roll$15 = function $$damage_roll(string) { - var $a, self = this, parser = nil, dice_list = nil, dice_broken = nil, total_n = nil, sequence = nil; - - - parser = $$($nesting, 'CommandParser').$new(/\d+D6/i); - self.cmd = parser.$parse(string); - if ($truthy(($truthy($a = self.cmd['$nil?']()) ? $a : self.cmd.$cmp_op()['$nil?']()['$!']()))) { - return nil}; - self.times = self.cmd.$command().$to_i(); - self["break"] = ($truthy($a = self.cmd.$dollar()) ? $a : 0).$abs(); - if (self.times['$=='](0)) { - return nil}; - dice_list = self.$roll_(self.times, 6).$sort(); - dice_broken = dice_list.$pop(self["break"]); - total_n = $rb_plus(dice_list.$inject(0, "+"), self.cmd.$modify_number()); - if ($truthy($rb_lt(total_n, 0))) { - total_n = 0}; - sequence = [self.$expr_damage(), self.$result_damage(dice_list, dice_broken), total_n]; - return sequence.$join(" > "); - }, $OracleEngine_damage_roll$15.$$arity = 1); - - Opal.def(self, '$expr_damage', $OracleEngine_expr_damage$16 = function $$expr_damage() { - var self = this, modify_number = nil, brak = nil; - - - modify_number = self.$format_modifier(self.cmd.$modify_number()); - brak = (function() {if (self["break"]['$=='](0)) { - return "" - } else { - return "" + "b[" + (self["break"]) + "]" - }; return nil; })(); - return "" + "(" + (self.times) + "D6" + (modify_number) + (brak) + ")"; - }, $OracleEngine_expr_damage$16.$$arity = 0); - return (Opal.def(self, '$result_damage', $OracleEngine_result_damage$17 = function $$result_damage(dice_list, break_list) { - var self = this, dice_total = nil, modify_number_text = nil; - - - dice_total = dice_list.$inject(0, "+"); - modify_number_text = self.$format_modifier(self.cmd.$modify_number()); - if ($truthy(break_list['$empty?']())) { - return "" + (dice_total) + "[" + (dice_list.$join(", ")) + "]" + (modify_number_text) - } else { - return "" + (dice_total) + "[" + (dice_list.$join(", ")) + "]×[" + (break_list.$join(", ")) + "]" + (modify_number_text) - }; - }, $OracleEngine_result_damage$17.$$arity = 2), nil) && 'result_damage'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/OrgaRain.js b/src/assets/dicebot/OrgaRain.js deleted file mode 100644 index be43ac93e..000000000 --- a/src/assets/dicebot/OrgaRain.js +++ /dev/null @@ -1,88 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$===', '$to_i', '$last_match', '$delete', '$sort', '$checkRoll', '$roll', '$gsub', '$collect', '$split', '$each', '$count', '$>', '$push', '$+', '$join']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'OrgaRain'); - - var $nesting = [self].concat($parent_nesting), $OrgaRain_initialize$1, $OrgaRain_rollDiceCommand$2, $OrgaRain_checkRoll$3; - - self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "OrgaRain"); - Opal.const_set($nesting[0], 'NAME', "在りて遍くオルガレイン"); - Opal.const_set($nesting[0], 'SORT_KEY', "ありてあまねくおるかれいん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "判定:[n]OR(count)\n" + "\n" + "[]内のコマンドは省略可能。\n" + "「n」でダイス数を指定。省略時は「1」。\n" + "(count)で命数を指定。「3111」のように記述。最大6つ。順不同可。\n" + "\n" + "【書式例】\n" + "・5OR6042 → 5dで命数「0,2,4,6」の判定\n" + "・6OR33333 → 6dで命数「3,3,3,3,3」の判定。\n"); - - Opal.def(self, '$initialize', $OrgaRain_initialize$1 = function $$initialize() { - var $iter = $OrgaRain_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $OrgaRain_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $OrgaRain_initialize$1, false), $zuper, $iter); - return (self.sortType = 1); - }, $OrgaRain_initialize$1.$$arity = 0); - self.$setPrefixes(["(\\d+)?OR([0-9])?([0-9])?([0-9])?([0-9])?([0-9])?([0-9])?"]); - - Opal.def(self, '$rollDiceCommand', $OrgaRain_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, self = this, diceCount = nil, countNo = nil; - - - if ($truthy(/(\d+)?OR([0-9])?([0-9])?([0-9])?([0-9])?([0-9])?([0-9])?$/i['$==='](command))) { - - diceCount = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 1).$to_i(); - countNo = [($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : -1).$to_i(), ($truthy($a = $$($nesting, 'Regexp').$last_match(3)) ? $a : -1).$to_i(), ($truthy($a = $$($nesting, 'Regexp').$last_match(4)) ? $a : -1).$to_i(), ($truthy($a = $$($nesting, 'Regexp').$last_match(5)) ? $a : -1).$to_i(), ($truthy($a = $$($nesting, 'Regexp').$last_match(6)) ? $a : -1).$to_i(), ($truthy($a = $$($nesting, 'Regexp').$last_match(7)) ? $a : -1).$to_i()]; - countNo.$delete(-1); - countNo = countNo.$sort(); - return self.$checkRoll(diceCount, countNo);}; - return nil; - }, $OrgaRain_rollDiceCommand$2.$$arity = 1); - return (Opal.def(self, '$checkRoll', $OrgaRain_checkRoll$3 = function $$checkRoll(diceCount, countNo) { - var $a, $b, $$4, $$5, self = this, _dice = nil, diceText = nil, diceText2 = nil, diceArray = nil, resultArray = nil, success = nil, countText = nil, resultText = nil, result = nil; - - - $b = self.$roll(diceCount, 10, self.sortType), $a = Opal.to_ary($b), (_dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceText2 = diceText.$gsub("10", "0"); - diceArray = $send(diceText2.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - resultArray = []; - success = 0; - $send(diceArray, 'each', [], ($$5 = function(i){var self = $$5.$$s || this, multiple = nil; - - - - if (i == null) { - i = nil; - }; - multiple = countNo.$count(i); - if ($truthy($rb_gt(multiple, 0))) { - - resultArray.$push("" + (i) + "(x" + (multiple) + ")"); - return (success = $rb_plus(success, multiple)); - } else { - return resultArray.$push("×") - };}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - countText = countNo.$join(","); - resultText = resultArray.$join(","); - result = "" + (diceCount) + "D10(命数:" + (countText) + ") > " + (diceText) + " > " + (resultText) + " > 成功数:" + (success); - return result; - }, $OrgaRain_checkRoll$3.$$arity = 2), nil) && 'checkRoll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Oukahoushin3rd.js b/src/assets/dicebot/Oukahoushin3rd.js deleted file mode 100644 index 33933054c..000000000 --- a/src/assets/dicebot/Oukahoushin3rd.js +++ /dev/null @@ -1,28 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2; - - Opal.add_stubs(['$getTableCommandResult', '$freeze', '$setPrefixes', '$+', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Oukahoushin3rd'); - - var $nesting = [self].concat($parent_nesting), $Oukahoushin3rd_rollDiceCommand$1; - - - Opal.const_set($nesting[0], 'ID', "Oukahoushin3rd"); - Opal.const_set($nesting[0], 'NAME', "央華封神RPG 第三版"); - Opal.const_set($nesting[0], 'SORT_KEY', "おうかほうしんRPG3"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・各種表\n" + " ・能力値判定裏成功表(NHT)\n" + " ・武器攻撃裏成功表(BKT)\n" + " ・受け・回避裏成功表(UKT)\n" + " ・仙術行使裏成功表(SKT)\n" + " ・仙術抵抗裏成功表(STT)\n" + " ・精神値ダメージ悪影響表(SDT)\n" + " ・狂気表(KKT)\n"); - - Opal.def(self, '$rollDiceCommand', $Oukahoushin3rd_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this; - - return self.$getTableCommandResult(command, $$($nesting, 'TABLES')) - }, $Oukahoushin3rd_rollDiceCommand$1.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["BKT", "KKT", "NHT", "SDT", "SKT", "STT", "UKT"], {"BKT": $hash2(["name", "type", "table"], {"name": "武器攻撃裏成功表", "type": "2D6", "table": "" + "1ポイント清徳値が低下。連続攻撃が行える。この場合の連続攻撃においては、命中判定のサイコロは常にひっくり返して用いるが、2撃目以降はこの表は使わない。\n" + "敵に叩きつけると同時に武器が破損。素手や身体に備わった武器(爪、牙など)で攻撃をしていた場合には、自身にも1D6(のみ)ダメージ。\n" + "効果的命中。ダメージに1D6加算。ただし極度に疲労するため、精神値に1D6点ダメージを受ける。(2ゾロ)1ポイント仙骨が上昇、体力または機敏(攻撃を行った者が選択する)が1ポイント低下。\n" + "ふつうの命中。\n" + "不完全な命中、ダメージは半分。(3ゾロ)1ポイント仙骨が低下。\n" + "ふつうの命中。\n" + "体力または機敏(攻撃を行った者が選択する)が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。\n" + "ふつうの命中。\n" + "体力または機敏(攻撃を行った者が選択する)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。\n" + "呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。\n" + "1ポイント清徳値が低下。体力または機敏(攻撃を行った者が選択する)が1ポイント上昇。\n"}), "KKT": $hash2(["name", "type", "table"], {"name": "狂気表", "type": "2D6", "table": "" + "心神喪失、生ける屍。\n" + "被害妄想。仲間も含め、他者は全て自分を傷つけようとしていると思いこむ。行動はゲームマスターが管理。\n" + "重度の不安症。失敗を恐れるあまり、次ラウンドは行動不可。それ以降も、2ラウンドに1回しか行動できない(自動武器や使役獣への命令なども)。\\n「次のラウンドに行動できない」状態では、「割り込み」は行えない。\n" + "重度の依存症。自分で行動を決められず、仲間に決めてもらわなければならない。\n" + "二重人格。二つ目の人格は狂気。新たに狂気表(KKT)で決定(再度二重人格が出た場合は、振りなおす)。狂気表を使った直後は、この二つ目の人格。\\n1日以上、二重人格が持続している場合、その間に精神値ダメージを受けるたびに、その直後に1Dを振らねばならない。1が出たらこの狂気が顔を出す。\\n二つ目の人格が顔を出している時間は、1Dで決定する(1~3:短時間、4~5:半日、6:1日)。\n" + "軽度の依存症。仲間の承認がなければ、思いついた行動を実行できない。\n" + "軽度の偏執狂。ある行為や物品などに異常な執着を示す。ただし、行動に大きな影響は与えない。具体的な内容は、ゲームマスターとプレイヤーの相談で決定。\n" + "重度の偏執狂。行動に重大な影響を与える。具体的内容は、ゲームマスターが決定。\n" + "恐怖症。あるものに対して恐怖。対象からは、ひたすら逃亡しようとする。また、対象に遭遇するたびに、難易度10で意志の能力値判定を行わねばならず、失敗したら1Dの精神値ダメージを受ける。恐怖の対象は、ゲームマスターが決定。\n" + "狂暴化。仲間も含め、他者はすべて敵とみなし、傷つけようとする。行動はゲームマスターが管理。\n" + "錯乱。行動はゲームマスターが「なるべくでたらめになるように」決定する。\n"}), "NHT": $hash2(["name", "type", "table"], {"name": "能力値判定裏成功表", "type": "2D6", "table": "" + "1ポイント清徳値が低下。変な癖が身についてしまう。\n" + "やりすぎ。過剰な成功をしたり、よけいなことまでして災いが起こりうる。\n" + "「気」の爆発。大成功。ただし極度に疲労するため、精神値に1D6点ダメージを受ける。(2ゾロ)1ポイント仙骨が上昇、使用した能力値が1ポイント低下。\n" + "ふつうの成功。\n" + "不完全な成功、数値的効果は半分ほどに見積もる。(3ゾロ)1ポイント仙骨が低下。\n" + "ふつうの成功。\n" + "使用した能力値が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。\n" + "ふつうの成功。\n" + "使用した能力値が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。\n" + "呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。\n" + "1ポイント清徳値が低下。使用した能力値が1ポイント上昇。\n"}), "SDT": $hash2(["name", "type", "table"], {"name": "精神値ダメージ悪影響表", "type": "1D6", "table": "" + "一瞬の放心。直後の判定は自動的に失敗。精神値を1D6×最大値の10%回復。\n" + "一瞬の放心。直後の判定は自動的に失敗。精神値を1D6×最大値の10%回復。\n" + "一瞬の放心。直後の判定は自動的に失敗。精神値を1D6×最大値の10%回復。\n" + "放心状態。強制され、自動失敗するまで、自発的行動不可。精神値を(1D6+2)×最大値の10%回復。\n" + "精神異常(具体的内容は狂気表(KKT)で決定)。短時間のみ。精神値を(1D6+4)×最大値の10%回復。\n" + "精神異常(具体的内容は狂気表(KKT)で決定)。期間は1D6を振って決定(1~3:1日、4~5:99日間、6:永遠)。精神値を最大値まで回復。\n"}), "SKT": $hash2(["name", "type", "table"], {"name": "仙術行使裏成功表", "type": "2D6", "table": "" + "1ポイント清徳値が低下。1ポイント仙骨が上昇。\n" + "術の効果は術者にも解除不能になる。精神値に1点ダメージを受ける。\n" + "「気」の暴走。効果3倍。ただし極度に疲労するため、精神値に1D6点ダメージを受ける。(2ゾロ)術者は1D6日間、仙術が使用不能になる。1ポイント仙骨が上昇。\n" + "術が敵にかけたものの場合、仲間の1人を巻きこむ。精神値に1点ダメージを受ける。\n" + "不完全な成功、効果半分。(3ゾロ)持続時間のある術の場合、術者がひたすら精神集中していない限り、術はすぐに解除される。\n" + "ふつうの成功。\n" + "1ポイント清徳値が低下。(4ゾロ)仙骨以外のいずれかの能力値(術者選択)が1D6日間、1ポイント上昇。\n" + "術が味方もしくは自分にかけたものの場合、敵の1人にも同じようにかかる。精神値に1点ダメージを受ける。\n" + "仙骨以外のいずれかの能力値(術者選択)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。\n" + "1D3ポイント清徳値が低下。\n" + "1D6ポイント清徳値が低下。仙骨以外のいずれかの能力値(術者選択)が1ポイント上昇。\n"}), "STT": $hash2(["name", "type", "table"], {"name": "仙術抵抗裏成功表", "type": "2D6", "table": "" + "1ポイント清徳値が低下。\n" + "そらされた術の効果が味方に及ぶ。味方の誰にそらされたかは、この表を使ったものが選ぶ。集団攻撃仙術の場合、抵抗に成功したものの中から選ぶこと。ほかの誰も成功に抵抗していなかったときは、ふつうの抵抗成功として扱う。精神値に1点ダメージを受ける。\n" + "仙術をかけた敵にその効果が及ぼされる。敵自身はそれに対して、抵抗を試みることができる。(2ゾロ)1ポイント仙骨が上昇。1ポイント知覚が低下。\n" + "ふつうの抵抗成功。\n" + "不完全な抵抗、ふつうの半分の効果を受ける。(3ゾロ)1ポイント仙骨が低下。\n" + "ふつうの抵抗成功。\n" + "仙骨または知覚(仙術に抵抗した者が選択する)が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。\n" + "ふつうの抵抗成功。\n" + "仙骨または知覚(仙術に抵抗した者が選択する)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。\n" + "呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。\n" + "1ポイント清徳値が低下。仙骨または知覚(仙術に抵抗した者が選択する)が1ポイント上昇。\n"}), "UKT": $hash2(["name", "type", "table"], {"name": "受け・回避裏成功表", "type": "2D6", "table": "" + "1ポイント清徳値が低下。\n" + "転倒する(空を飛んでいるものは落下。乗騎などに乗っていたら転落)。精神値に1点ダメージを受ける。\n" + "相手のバランスを崩すのに成功。攻撃を行った敵が転倒(空を飛んでいるものは落下。乗騎などに乗っていたら転落)。(2ゾロ)1ポイント仙骨が上昇、機敏または知覚(攻撃を防御した者が選択する)が1ポイント低下。\n" + "ふつうの防御成功。\n" + "不完全な防御、通常の半分のダメージを受ける。しかし敵が連続攻撃を行うことは出来ない。攻撃者が裏成功攻撃であってもその反動は決めない。(3ゾロ)1ポイント仙骨が低下。\n" + "ふつうの防御成功。\n" + "機敏または知覚(攻撃を防御した者が選択する)が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。\n" + "ふつうの防御成功。\n" + "機敏または知覚(攻撃を防御した者が選択する)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。\n" + "呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。\n" + "1ポイント清徳値が低下。機敏または知覚(攻撃を防御した者が選択する)が1ポイント上昇。\n"})}).$freeze()); - return self.$setPrefixes($rb_plus([], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Paradiso.js b/src/assets/dicebot/Paradiso.js deleted file mode 100644 index 52db60da1..000000000 --- a/src/assets/dicebot/Paradiso.js +++ /dev/null @@ -1,288 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range; - - Opal.add_stubs(['$setPrefixes', '$getJudgeResult', '$nil?', '$getDamageResult', '$upcase', '$===', '$get_radiomarietta_table', '$get_takeoff_table', '$get_exploration_table', '$get_flightsupply_table', '$to_i', '$last_match', '$times', '$[]', '$roll', '$==', '$to_s', '$+', '$include?', '$<=', '$[]=', '$-', '$new', '$each', '$>=']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Paradiso'); - - var $nesting = [self].concat($parent_nesting), $Paradiso_rollDiceCommand$1, $Paradiso_getJudgeResult$2, $Paradiso_getDamageResult$4, $Paradiso_get_radiomarietta_table$7, $Paradiso_get_takeoff_table$8, $Paradiso_get_exploration_table$9, $Paradiso_get_flightsupply_table$10; - - - Opal.const_set($nesting[0], 'ID', "Paradiso"); - Opal.const_set($nesting[0], 'NAME', "チェレステ色のパラディーゾ"); - Opal.const_set($nesting[0], 'SORT_KEY', "ちえれすていろのはらていいそ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "◆判定 (nCPt[f]@c)、(nD20<=t[f]@c) n:ダイス数(省略時:1) t:目標値(省略時:14) f:絶不調の追加ファンブル値 c:人機一体の追加クリティカル値\n" + " 例)CP12 CP(13+1) 3CP12[18,19]@7\n" + "◆各種表\n" + " ・ラジオ・マリエッタ表 RMT\n" + " ・移動表 TOT\n" + " ・探索表 EXT\n" + " ・補給表 SUT\n" + "◆ダメージチェック (DCa[20,30]) a:【攻撃力】、[20]:20mm機銃追加、[30]:30mmガンポッド追加\n" + " 例)DC4:【攻撃力】4でダメージチェック DC5[20]:【攻撃力】5でダメージチェック、うち1つは20mm機銃 DC5[20,30]:【攻撃力】5でダメージチェック、うち1つは20mm機銃、うち1つは30mmガンポッド\n"); - self.$setPrefixes(["(\\d+)*D20<=.*", "(\\d+)*CP.*", "RMT", "TOT", "EXT", "SUT", "DC(\\d+).*"]); - - Opal.def(self, '$rollDiceCommand', $Paradiso_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, result = nil, $case = nil; - - - result = self.$getJudgeResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - result = self.$getDamageResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - $case = command.$upcase(); - if ("RMT"['$===']($case)) {result = self.$get_radiomarietta_table()} - else if ("TOT"['$===']($case)) {result = self.$get_takeoff_table()} - else if ("EXT"['$===']($case)) {result = self.$get_exploration_table()} - else if ("SUT"['$===']($case)) {result = self.$get_flightsupply_table()}; - if ($truthy(result['$nil?']())) { - return nil - } else { - return result - }; - }, $Paradiso_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$getJudgeResult', $Paradiso_getJudgeResult$2 = function $$getJudgeResult(command) { - var $a, $$3, self = this, $case = nil, number = nil, target = nil, fumble1 = nil, fumble2 = nil, critical = nil, dice = nil, dicetext = nil, crit_flg = nil, fumb_flg = nil, succ_flg = nil, result = nil, text = nil; - - - $case = command; - if (/^(\d+)*D20<=(\d+)?(\[(\d+)(,(\d+))?\])?(\@(\d+))?$/i['$===']($case)) { - number = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 1).$to_i(); - target = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : 14).$to_i(); - fumble1 = ($truthy($a = $$($nesting, 'Regexp').$last_match(4)) ? $a : 21).$to_i(); - fumble2 = ($truthy($a = $$($nesting, 'Regexp').$last_match(6)) ? $a : 21).$to_i(); - critical = ($truthy($a = $$($nesting, 'Regexp').$last_match(8)) ? $a : 21).$to_i();} - else if (/^(\d+)*CP(\d+)?(\[(\d+)(,(\d+))?\])?(\@(\d+))?$/i['$===']($case)) { - number = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 1).$to_i(); - target = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : 14).$to_i(); - fumble1 = ($truthy($a = $$($nesting, 'Regexp').$last_match(4)) ? $a : 21).$to_i(); - fumble2 = ($truthy($a = $$($nesting, 'Regexp').$last_match(6)) ? $a : 21).$to_i(); - critical = ($truthy($a = $$($nesting, 'Regexp').$last_match(8)) ? $a : 21).$to_i();} - else {return nil}; - dice = 0; - dicetext = ""; - crit_flg = false; - fumb_flg = false; - succ_flg = false; - $send(number, 'times', [], ($$3 = function(){var self = $$3.$$s || this; - - - dice = self.$roll(1, 20)['$[]'](0); - if (dicetext['$==']("")) { - dicetext = dice.$to_s() - } else { - dicetext = $rb_plus($rb_plus(dicetext, ","), dice.$to_s()) - }; - if ($truthy([1, critical]['$include?'](dice))) { - return (crit_flg = true) - } else if ($truthy([20, fumble1, fumble2]['$include?'](dice))) { - return (fumb_flg = true) - } else if ($truthy($rb_le(dice, target))) { - return (succ_flg = true) - } else { - return nil - };}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - if (crit_flg['$=='](true)) { - result = "クリティカル" - } else if (fumb_flg['$=='](true)) { - result = "ファンブル" - } else if (succ_flg['$=='](true)) { - result = "成功" - } else { - result = "失敗" - }; - text = "" + "(" + (number) + "D20 目標値" + (target) + ") > (" + (dicetext) + ") > " + (result); - return text; - }, $Paradiso_getJudgeResult$2.$$arity = 1); - - Opal.def(self, '$getDamageResult', $Paradiso_getDamageResult$4 = function $$getDamageResult(command) { - var $a, $$5, $$6, self = this, biggun = nil, $case = nil, attack = nil, $writer = nil, dice = nil, dicetext = nil, damage = nil, doubledam = nil, tripledam = nil, result = nil, text = nil; - - - biggun = [0, 0, 0]; - $case = command; - if (/^DC(\d+)(\[(\d+)(,(\d+))?(,(\d+))?(,(\d+))?(,(\d+))?(,(\d+))?\])?$/i['$===']($case)) { - attack = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 1).$to_i(); - - $writer = [0, ($truthy($a = $$($nesting, 'Regexp').$last_match(3)) ? $a : 0).$to_i()]; - $send(biggun, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [1, ($truthy($a = $$($nesting, 'Regexp').$last_match(5)) ? $a : 0).$to_i()]; - $send(biggun, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [2, ($truthy($a = $$($nesting, 'Regexp').$last_match(7)) ? $a : 0).$to_i()]; - $send(biggun, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [3, ($truthy($a = $$($nesting, 'Regexp').$last_match(9)) ? $a : 0).$to_i()]; - $send(biggun, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [4, ($truthy($a = $$($nesting, 'Regexp').$last_match(11)) ? $a : 0).$to_i()]; - $send(biggun, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [5, ($truthy($a = $$($nesting, 'Regexp').$last_match(13)) ? $a : 0).$to_i()]; - $send(biggun, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];;} - else {return nil}; - dice = 0; - dicetext = ""; - damage = $$($nesting, 'Array').$new(20, 0); - doubledam = 0; - tripledam = 0; - $send(biggun, 'each', [], ($$5 = function(bg){var self = $$5.$$s || this; - - - - if (bg == null) { - bg = nil; - }; - return (function() {$case = bg; - if ((30)['$===']($case)) {return (tripledam = $rb_plus(tripledam, 1))} - else if ((20)['$===']($case)) {return (doubledam = $rb_plus(doubledam, 1))} - else { return nil }})();}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - $send(attack, 'times', [], ($$6 = function(){var self = $$6.$$s || this; - - - dice = self.$roll(1, 20)['$[]'](0); - if (dicetext['$==']("")) { - dicetext = dice.$to_s() - } else { - dicetext = $rb_plus($rb_plus(dicetext, ","), dice.$to_s()) - }; - if ($truthy($rb_ge(tripledam, 1))) { - - - $writer = [$rb_minus(dice, 1), $rb_plus(damage['$[]']($rb_minus(dice, 1)), 3)]; - $send(damage, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - tripledam = $rb_plus(tripledam, -1); - return (dicetext = $rb_plus(dicetext, "【30mm】")); - } else if ($truthy($rb_ge(doubledam, 1))) { - - - $writer = [$rb_minus(dice, 1), $rb_plus(damage['$[]']($rb_minus(dice, 1)), 2)]; - $send(damage, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - doubledam = $rb_plus(doubledam, -1); - return (dicetext = $rb_plus(dicetext, "【20mm】")); - } else { - - $writer = [$rb_minus(dice, 1), $rb_plus(damage['$[]']($rb_minus(dice, 1)), 1)]; - $send(damage, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)]; - };}, $$6.$$s = self, $$6.$$arity = 0, $$6)); - result = "" + "\n" + (damage['$[]'](0)) + (damage['$[]'](1)) + (damage['$[]'](2)) + (damage['$[]'](3)) + (damage['$[]'](4)) + "\n" + (damage['$[]'](5)) + (damage['$[]'](6)) + (damage['$[]'](7)) + (damage['$[]'](8)) + (damage['$[]'](9)) + "\n" + (damage['$[]'](10)) + (damage['$[]'](11)) + (damage['$[]'](12)) + (damage['$[]'](13)) + (damage['$[]'](14)) + "\n" + (damage['$[]'](15)) + (damage['$[]'](16)) + (damage['$[]'](17)) + (damage['$[]'](18)) + (damage['$[]'](19)); - text = "" + "攻撃力" + (attack) + "ダメージチェック > (" + (dicetext) + ") > " + (result); - return text; - }, $Paradiso_getDamageResult$4.$$arity = 1); - - Opal.def(self, '$get_radiomarietta_table', $Paradiso_get_radiomarietta_table$7 = function $$get_radiomarietta_table() { - var self = this, dice = nil, $case = nil, text = nil; - - - dice = self.$roll(1, 20)['$[]'](0); - $case = dice; - if ((1)['$===']($case)) {text = "「なんてこった! ここで事故のお知らせだ!」\n通行止め……。ランダムなマス1つを決定する。この一日中、そのマスに移動する事はできない。"} - else if ($range(2, 4, false)['$===']($case)) {text = "「今日はまたずいぶんと湿気てるねぇ……。古傷がある人は要注意だよ」\n天候が悪い。この一日中、「●移動」のアクションで移動できるマス数は常に1マス低くなる。"} - else if ($range(5, 10, false)['$===']($case)) {text = "「日常は至上! 異常は退場! なんにもないからラジオは以上! ……なんつて」\nいつもどおりの日々。のんびりとした風で、何事もなし。"} - else if ((11)['$===']($case) || (12)['$===']($case)) {text = "「それじゃ、本日のメインコーナー。行ってみよう!」\n軽妙なトーク。PC全員の【乗り手コンディション】が1点小さくなる。"} - else if ($range(13, 15, false)['$===']($case)) {text = "「いーなー、こんな日はボクも飛んでみたい気分だよ! ブオノあたりまでバーッとね!」\nとんでもなく快晴で絶好のフライト日和。【機体コンディション】【乗り手コンディション】がそれぞれ1点小さくなる。"} - else if ((16)['$===']($case)) {text = "「店頭で言えば嬉しい値引き。本日のラッキーワードをメモする用意はできたかい?」\nおトクな情報。この一日中、各PCごとに一回ずつ、「価格」の効果値が2低いものとして効果を処理できる(最低値0)"} - else if ((17)['$===']($case)) {text = "「いっやー……熱演だったね。もーぅ次回が待ちきれなぁい!!」\nラジオドラマが神回だった。その日一日に行う「交流」で獲得できる【キズナ】の点数が+1される。"} - else if ((18)['$===']($case)) {text = "「イエス!ナイス!エレガンス!あのサーカス団が帰ってくる!」\nサーカス団がやってくる!ランダムなマス1つを決定する。\nこの一日中、そのマスは「娯楽施設:5」(P.55)の効果を得る。"} - else if ((19)['$===']($case)) {text = "「ラジオネーム、ハプニングさんからのお便り! おっとぉ、これは興味深い相談だ」\nラジオの話している内容から手がかりが見つかる。[手がかり]が1箇所追加で配置される。"} - else if ((20)['$===']($case)) {text = "「今夜は素敵なパーリィデイ! みんな!今夜の仮装を何にするかはもう決めてるかな?」\n酒場でパーティだ!「酒場」のスポット効果を持つスポットに「レストラン:「パーティ」」が追加される。"}; - return $rb_plus($rb_plus($rb_plus($rb_plus("ラジオマリエッタ表", "("), dice.$to_s()), "):"), text); - }, $Paradiso_get_radiomarietta_table$7.$$arity = 0); - - Opal.def(self, '$get_takeoff_table', $Paradiso_get_takeoff_table$8 = function $$get_takeoff_table() { - var self = this, dice = nil, $case = nil, text = nil; - - - dice = self.$roll(1, 20)['$[]'](0); - $case = dice; - if ((1)['$===']($case)) {text = "エンジンがぶっ壊れた!ただちに【機体コンディション】が「20」となり、このターン中は2つ目のアクションも含め「●移動」することができない。"} - else if ((2)['$===']($case)) {text = "離水に失敗した! キミの愛機のダメージマップ上の任意の「翼」部位のダメージボックスに1点のダメージを与え、このターン中は2つ目のアクションも含め「●移動」することができない。"} - else if ((3)['$===']($case)) {text = "軽いエンジントラブル。このアクションでは移動することができない。"} - else if ((4)['$===']($case)) {text = "同業者に遭遇。しかし煽られて曲芸飛行につきあわされる。\n任意の方向に強制的に3マス移動し、【物資点】3点を失う。"} - else if ((5)['$===']($case)) {text = "道を間違えたらしい。【物資点】を5点消費し、ランダムな方向に1マス移動する効果を3回繰り返す。"} - else if ((6)['$===']($case)) {text = "気づいたらオイル漏れを起こしていた!【物資点】を3点消費する。その後、1マスにつき1点の【物資点】を消費して最大4マスまで移動できる。"} - else if ((7)['$===']($case)) {text = "あいにくのにわか雨。あまり飛びたくないなあ。1マスにつき1点の【物資点】を消費して最大2マスまで移動できる。"} - else if ((8)['$===']($case)) {text = "唐突な襲撃。一撃加えたあと、謎の襲撃者はいずこかへ去っていった……。命中判定の達成値が12であると扱う、【火力】3のダメージチェックを受ける。その後、1マスにつき1点の【物資点】を消費して最大4マスまで移動できる。"} - else if ((9)['$===']($case)) {text = "んー、少し調子が悪いかな? 1マスにつき1点の【物資点】を消費して最大3マスまで移動できる。"} - else if ($range(10, 12, false)['$===']($case)) {text = "順調な空の旅。1マスにつき1点の【物資点】を消費して最大5マスまで移動できる。"} - else if ((13)['$===']($case)) {text = "島巡りの観光艇と遭遇。ちやほやされていい気分。1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、キミの【乗り手コンディション】を2点までの任意の点数下げる事ができる。"} - else if ((14)['$===']($case)) {text = "同業者と遭遇。1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、同業者は「キミへの【キズナ】」を1点得る。同業者はこのセッション中、キミが望む場面でキミに「判定支援」を行ってくれる。"} - else if ((15)['$===']($case)) {text = "すごく調子がいいぞ!1マスにつき1点の【物資点】を消費して最大7マスまで移動できる上、キミの【機体コンディション】を2点までの任意の点数下げる事ができる。"} - else if ((16)['$===']($case)) {text = "すごく調子がいいぞ!1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、このアクションがこのターンに行う1回目のアクションである場合、2回目のアクションでも続けて「●移動」を行う事ができる。"} - else if ((17)['$===']($case)) {text = "通りかかった先に思わぬ情報が!1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、このアクションがこのターンに行う1回目のアクションである場合、2回目のアクションでは今いるマスに[手がかり]が配置されているものとして「●探索」が行える。"} - else if ((18)['$===']($case)) {text = "酒場が恋しい……。【物資点】を5点消費し、即座に同じ「クエストマップ」内の「酒場」のスポット効果を持つマスに移動する。"} - else if ((19)['$===']($case)) {text = "アジトが恋しい……。【物資点】を5点消費し、即座に同じ「クエストマップ」内の任意のキミの「アジト」に移動する。"} - else if ((20)['$===']($case)) {text = "仲間が恋しい……。【物資点】を5点消費し、即座に任意のPC一人のいる場所に移動する。"}; - return $rb_plus($rb_plus($rb_plus($rb_plus("移動表", "("), dice.$to_s()), "):"), text); - }, $Paradiso_get_takeoff_table$8.$$arity = 0); - - Opal.def(self, '$get_exploration_table', $Paradiso_get_exploration_table$9 = function $$get_exploration_table() { - var self = this, dice = nil, $case = nil, text = nil; - - - dice = self.$roll(1, 20)['$[]'](0); - $case = dice; - if ((1)['$===']($case)) {text = "クソっ!このマスに付与されていた[手がかり]を失う。"} - else if ((2)['$===']($case)) {text = "「ツケ払いやがれ!」見に覚えがあるかないか。キミに詰め寄ってくるヤツがいる。【物資点】を10点消費するか、「ツケを伸ばす」のどちらかを選択する。ツケを伸ばすを選択した場合、次にキミが行う「●探索」のアクションでも、探索表の結果は参照せず、自動的にこの効果が適用される。"} - else if ((3)['$===']($case)) {text = "謎は深まる。このマスに付与されていた[手がかり]を失い、ランダムな場所に再付与する。【情報点】は得られない。"} - else if ((4)['$===']($case)) {text = "コネクションは大事だ。「支援チェック」をチェックしていない【キズナ】が1点以上存在すれば、その「支援チェック」を入れたあと、このマスに付与されていた[手がかり]を失い、【情報点】を1点獲得する。"} - else if ($range(5, 8, false)['$===']($case)) {text = "情報を手に入れるためには、少し骨を折る必要がありそうだ。好きな能力値を2つ組み合わせて{探索判定}を行う。成功すればこのマスに付与されていた[手がかり]を失い、【情報点】を1点獲得する。"} - else if ((9)['$===']($case)) {text = "情報を提供してくれるというアイツは見返りを要求してきた。【物資点】を4点消費できる。そうした場合、このマスに付与されていた[手がかり]を失い、【情報点】を1点獲得する。"} - else if ($range(10, 13, false)['$===']($case)) {text = "危なげなく情報ゲット。このマスに付与されていた[手がかり]を失い、【情報点】を1点獲得する。"} - else if ((14)['$===']($case)) {text = "手がかりを追っている事を話すと、ソイツは協力を持ちかけてきてくれた。このマスに付与されていた[手がかり]を失い、【情報点】を1点獲得する。さらに、【物資点】を5点獲得する。"} - else if ((15)['$===']($case)) {text = "手がかりを追っている事を話すと、ソイツは協力を持ちかけてきてくれた。このマスに付与されていた[手がかり]を失い、【情報点】を1点獲得する。さらに、アイテム「チケット」(P.69)を入手する。"} - else if ((16)['$===']($case)) {text = "昔の仲間から手がかりについて聞くことになった。ついでに積もる話も少々。このマスに付与されていた[手がかり]を失い、【情報点】を1点獲得する。さらに同業者は「キミへの【キズナ】」を1点得る。同業者はこのセッション中、キミが望む場面でキミに「判定支援」を行ってくれる。"} - else if ((17)['$===']($case)) {text = "空軍にいる友人から手がかりについて聞くことになった。「なあ、お前もフラフラしてないで空軍に入ったらどうだ?」耳に痛い。このマスに付与されていた[手がかり]を失い、【情報点】を1点獲得する。さらに、アイテム「空軍のツテ」(P.69)を入手する。"} - else if ((18)['$===']($case)) {text = "手がかりを追っていたら他にもボロボロと……。このマスに付与されていた[手がかり]を失い、【情報点】を1点獲得する。さらに、1D20を二回振り、この「クエストマップ」上のランダムなマス2つを求める。それらのマスに[手がかり]が付与されていなければ、[手がかり]を付与する。"} - else if ((19)['$===']($case)) {text = "あっさり情報を掴むことができてしまった。このマスに付与されていた[手がかり]を失い、【情報点】を1点獲得する。この「●探索」ではアクションを消費せず、追加で別のアクションを宣言する事ができる。"} - else if ((20)['$===']($case)) {text = "これは重要な手がかりだ! このマスに付与されていた[手がかり]を失い、【情報点】を2点獲得する。"}; - return $rb_plus($rb_plus($rb_plus($rb_plus("探索表", "("), dice.$to_s()), "):"), text); - }, $Paradiso_get_exploration_table$9.$$arity = 0); - return (Opal.def(self, '$get_flightsupply_table', $Paradiso_get_flightsupply_table$10 = function $$get_flightsupply_table() { - var self = this, dice = nil, $case = nil, text = nil; - - - dice = self.$roll(1, 20)['$[]'](0); - $case = dice; - if ((1)['$===']($case)) {text = "……えっ?! キミの【物資点】は0点となる。"} - else if ((2)['$===']($case)) {text = "おいおい勘弁してくれよ……。このアクションがそのセグメントの一回目のアクションだった場合、キミは2回目のアクションを行えない。その後【物資点】を5点獲得する。"} - else if ((3)['$===']($case)) {text = "取材に巻き込まれる。【物資点】は獲得できないが、記者の発言からはぽろりとなにかが見えたような?1D20を振り、出た目に対応したマスに「手がかり」を1つ配置する。"} - else if ((4)['$===']($case)) {text = "成果ゼロ。ま、こんな日もあるかな。【物資点】は獲得できない。"} - else if ((5)['$===']($case)) {text = "うまいこと補給できなかった。【物資点】を5点獲得する。"} - else if ((6)['$===']($case)) {text = "「一稼ぎと言ったらこれだろ?」と声をかけてくる悪友たち。「カジノ」(『基本ルールブック』P.55)のスポット効果を即座に適用する。ただしこの処理では判定の失敗により「刑務所」のスポット効果を持つスポットに移動する効果は発生せず、代わりに「酒場」のスポット効果を持つスポットに移動した上で、自身が持つ全ての【キズナ】の「支援チェック」にチェックを入れる。その後、次のセグメントが終了するまでの間アクションは行えない。"} - else if ($range(7, 9, false)['$===']($case)) {text = "のんびり釣りといこう。釣果は運次第だ。1D20を振り、出た目と同じ数だけ【物資点】を獲得する。"} - else if ($range(10, 12, false)['$===']($case)) {text = "なにごともなく補給が完了する。【物資点】を10点獲得する。"} - else if ((13)['$===']($case)) {text = "ラジオの音が聞こえる。PCが望むなら、1D20を振り、出た目を「ラジオ・マリエッタ表」(『基本ルールブック』P.29)に照らし合わせて、その結果を反映する。これ以後、朝セグメントで振られたラジオ・マリエッタ表の効果は失われる。その後【物資点】を10点獲得する。"} - else if ((14)['$===']($case)) {text = "補給の合間、ちょっと口寂しくなってしまって露店へ。【物資点】を8点獲得し、アイテム「レモネード」(『基本ルールブック』P.69)を入手する。"} - else if ((15)['$===']($case)) {text = "補給の合間、軽くメンテナンス。【機体コンディション】を1点下げることができる。その後【物資点】を10点獲得する。"} - else if ((16)['$===']($case)) {text = "補給の合間、店主と軽く談笑。【乗り手コンデイション】を1点下げることができる。その後【物資点】を10点獲得する。"} - else if ((17)['$===']($case)) {text = "補給の合間、仲間に軽く挨拶しておこうか。同じマスに他のPCがいた場合、そのPC1人への【キズナ】を1点獲得する。その後【物資点】を10点獲得する。"} - else if ((18)['$===']($case)) {text = "補給の合間に通りがかった相手と意気投合。相手はキミへの【キズナ】を1点取得する。【物資点】を10点獲得する。"} - else if ((19)['$===']($case)) {text = "あっさり補給が終わってしまった。どうしようかな。この補給ではアクションを消費せず、【物資点】を10点獲得する。"} - else if ((20)['$===']($case)) {text = "降って湧いた幸運!【物資点】が20点になる。"}; - return $rb_plus($rb_plus($rb_plus($rb_plus("補給表", "("), dice.$to_s()), "):"), text); - }, $Paradiso_get_flightsupply_table$10.$$arity = 0), nil) && 'get_flightsupply_table'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Paranoia.js b/src/assets/dicebot/Paranoia.js deleted file mode 100644 index 16c86fdbd..000000000 --- a/src/assets/dicebot/Paranoia.js +++ /dev/null @@ -1,62 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$debug', '$===', '$getaRoll', '$empty?', '$roll', '$collect', '$split', '$to_i', '$+', '$[]']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Paranoia'); - - var $nesting = [self].concat($parent_nesting), $Paranoia_isGetOriginalMessage$1, $Paranoia_rollDiceCommand$2, $Paranoia_getaRoll$3; - - - Opal.const_set($nesting[0], 'ID', "Paranoia"); - Opal.const_set($nesting[0], 'NAME', "パラノイア"); - Opal.const_set($nesting[0], 'SORT_KEY', "はらのいあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "※「パラノイア」は完璧なゲームであるため特殊なダイスコマンドを必要としません。\n" + "※このダイスボットは部屋のシステム名表示用となります。\n"); - self.$setPrefixes(["geta"]); - - Opal.def(self, '$isGetOriginalMessage', $Paranoia_isGetOriginalMessage$1 = function $$isGetOriginalMessage() { - var self = this; - - return true - }, $Paranoia_isGetOriginalMessage$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Paranoia_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, result = nil, $case = nil; - - - self.$debug("rollDiceCommand command", command); - result = ""; - $case = command; - if (/geta/i['$===']($case)) {result = self.$getaRoll()}; - if ($truthy(result['$empty?']())) { - return nil}; - return "" + (command) + " > " + (result); - }, $Paranoia_rollDiceCommand$2.$$arity = 1); - return (Opal.def(self, '$getaRoll', $Paranoia_getaRoll$3 = function $$getaRoll() { - var $a, $b, $$4, self = this, result = nil, _ = nil, diceText = nil, diceList = nil, getaString = nil, $case = nil; - - - result = ""; - $b = self.$roll(1, 2), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceList = $send(diceText.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - result = $rb_plus(result, "幸福ですか? > "); - getaString = ""; - $case = diceList['$[]'](0); - if ((1)['$===']($case)) {getaString = "幸福です"} - else if ((2)['$===']($case)) {getaString = "幸福ではありません"}; - result = $rb_plus(result, getaString); - return result; - }, $Paranoia_getaRoll$3.$$arity = 0), nil) && 'getaRoll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/ParanoiaRebooted.js b/src/assets/dicebot/ParanoiaRebooted.js deleted file mode 100644 index a49be6668..000000000 --- a/src/assets/dicebot/ParanoiaRebooted.js +++ /dev/null @@ -1,127 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$===', '$get_node_dice_roll', '$get_mutant_power_roll', '$private', '$dup', '$==', '$to_i', '$[]', '$[]=', '$-', '$debug', '$match', '$+', '$abs', '$roll', '$split', '$count', '$>=', '$<', '$generate_roll_results', '$join']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ParanoiaRebooted'); - - var $nesting = [self].concat($parent_nesting), $ParanoiaRebooted_rollDiceCommand$1, $ParanoiaRebooted_generate_roll_results$2, $ParanoiaRebooted_get_node_dice_roll$3, $ParanoiaRebooted_get_mutant_power_roll$6; - - - Opal.const_set($nesting[0], 'ID', "ParanoiaRebooted"); - Opal.const_set($nesting[0], 'NAME', "パラノイア リブーテッド"); - Opal.const_set($nesting[0], 'SORT_KEY', "はらのいありふうてつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "※コマンドは入力内容の前方一致で検出しています。\n" + "・通常の判定 NDx\n" + " x:ノードダイスの数.マイナスも可.\n" + " ノードダイスの絶対値 + 1個(コンピュータダイス)のダイスがロールされる.\n" + "例)ND2 ND-3\n" + "\n" + "・ミュータントパワー判定 MPx\n" + " x:ノードダイスの数.\n" + " ノードダイスの値 + 1個(コンピュータダイス)のダイスがロールされる.\n" + "例)MP2\n"); - self.$setPrefixes(["ND.*", "MP.*"]); - - Opal.def(self, '$rollDiceCommand', $ParanoiaRebooted_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if (/^ND/i['$===']($case)) {return self.$get_node_dice_roll(command)} - else if (/^MP/i['$===']($case)) {return self.$get_mutant_power_roll(command)} - else {return nil}})() - }, $ParanoiaRebooted_rollDiceCommand$1.$$arity = 1); - self.$private(); - - Opal.def(self, '$generate_roll_results', $ParanoiaRebooted_generate_roll_results$2 = function $$generate_roll_results(dices) { - var self = this, computer_dice_message = nil, results = nil, $writer = nil; - - - computer_dice_message = ""; - results = dices.$dup(); - if (results['$[]'](-1).$to_i()['$=='](6)) { - - - $writer = [-1, "C"]; - $send(results, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - computer_dice_message = "(Computer)";}; - return [results, computer_dice_message]; - }, $ParanoiaRebooted_generate_roll_results$2.$$arity = 1); - - Opal.def(self, '$get_node_dice_roll', $ParanoiaRebooted_get_node_dice_roll$3 = function $$get_node_dice_roll(command) { - var $a, $b, $$4, $$5, self = this, m = nil, parameter_num = nil, dice_count = nil, total = nil, dice_text = nil, dices = nil, success_rate = nil, results = nil, computer_dice_message = nil; - - - self.$debug("rollDiceCommand Begin"); - m = /^ND((-)?\d+)/i.$match(command); - if ($truthy(m)) { - } else { - return "" - }; - self.$debug("command", command); - parameter_num = m['$[]'](1).$to_i(); - dice_count = $rb_plus(parameter_num.$abs(), 1); - $b = self.$roll(dice_count, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (dice_text = ($a[1] == null ? nil : $a[1])), $b; - dices = dice_text.$split(","); - success_rate = $send(dices, 'count', [], ($$4 = function(dice){var self = $$4.$$s || this; - - - - if (dice == null) { - dice = nil; - }; - return $rb_ge(dice.$to_i(), 5);}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - if ($truthy($rb_lt(parameter_num, 0))) { - success_rate = $rb_minus(success_rate, $send(dices, 'count', [], ($$5 = function(dice){var self = $$5.$$s || this; - - - - if (dice == null) { - dice = nil; - }; - return $rb_lt(dice.$to_i(), 5);}, $$5.$$s = self, $$5.$$arity = 1, $$5)))}; - self.$debug(dices); - $b = self.$generate_roll_results(dices), $a = Opal.to_ary($b), (results = ($a[0] == null ? nil : $a[0])), (computer_dice_message = ($a[1] == null ? nil : $a[1])), $b; - self.$debug("rollDiceCommand result"); - return "" + "(" + (command) + ") > [" + (results.$join(", ")) + "] > 成功度" + (success_rate) + (computer_dice_message); - }, $ParanoiaRebooted_get_node_dice_roll$3.$$arity = 1); - return (Opal.def(self, '$get_mutant_power_roll', $ParanoiaRebooted_get_mutant_power_roll$6 = function $$get_mutant_power_roll(command) { - var $a, $b, $$7, self = this, m = nil, parameter_num = nil, dice_count = nil, total = nil, dice_text = nil, dices = nil, failure_rate = nil, message = nil, results = nil, computer_dice_message = nil; - - - self.$debug("rollDiceCommand Begin"); - m = /^MP(\d+)/i.$match(command); - if ($truthy(m)) { - } else { - return "" - }; - self.$debug("command", command); - parameter_num = m['$[]'](1).$to_i(); - dice_count = $rb_plus(parameter_num.$abs(), 1); - $b = self.$roll(dice_count, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (dice_text = ($a[1] == null ? nil : $a[1])), $b; - dices = dice_text.$split(","); - failure_rate = $send(dices, 'count', [], ($$7 = function(dice){var self = $$7.$$s || this; - - - - if (dice == null) { - dice = nil; - }; - return dice.$to_i()['$=='](1);}, $$7.$$s = self, $$7.$$arity = 1, $$7)); - message = (function() {if (failure_rate['$=='](0)) { - return "成功" - } else { - return "" + "失敗(" + (failure_rate) + ")" - }; return nil; })(); - $b = self.$generate_roll_results(dices), $a = Opal.to_ary($b), (results = ($a[0] == null ? nil : $a[0])), (computer_dice_message = ($a[1] == null ? nil : $a[1])), $b; - self.$debug(dices); - self.$debug("rollDiceCommand result"); - return "" + "(" + (command) + ") > [" + (results.$join(", ")) + "] > " + (message) + (computer_dice_message); - }, $ParanoiaRebooted_get_mutant_power_roll$6.$$arity = 1), nil) && 'get_mutant_power_roll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/ParasiteBlood.js b/src/assets/dicebot/ParasiteBlood.js deleted file mode 100644 index 1f134789d..000000000 --- a/src/assets/dicebot/ParasiteBlood.js +++ /dev/null @@ -1,207 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/DemonParasite"] = function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$>=', '$count', '$==', '$include?', '$send', '$get_urge', '$match', '$[]', '$to_i', '$===', '$<', '$>', '$roll', '$-', '$freeze']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DemonParasite'); - - var $nesting = [self].concat($parent_nesting), $DemonParasite_initialize$1, $DemonParasite_check_nD6$2, $DemonParasite_rollDiceCommand$3, $DemonParasite_get_urge$4; - - - Opal.const_set($nesting[0], 'ID', "DemonParasite"); - Opal.const_set($nesting[0], 'NAME', "デモンパラサイト"); - Opal.const_set($nesting[0], 'SORT_KEY', "てもんはらさいと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・衝動表 (URGEx)\n" + " \"URGE衝動レベル\"の形で指定します。\n" + " 衝動表に従って自動でダイスロールを行い、結果を表示します。\n" + " ダイスロールと同様に、他のプレイヤーに隠れてロールすることも可能です。\n" + " 頭に識別文字を追加して、デフォルト以外の衝動表もロールできます。\n" + " ・NURGEx 頭に「N」を付けると「新衝動表」。\n" + " ・AURGEx 頭に「A」を付けると「誤作動表」。\n" + " ・MURGEx 頭に「M」を付けると「ミュータント衝動表」になります。\n" + " ・UURGEx 頭に「U」が付くと鬼御魂の戦闘外衝動表。\n" + " ・CURGEx 頭に「C」で鬼御魂の戦闘中衝動表になります。\n" + "例)URGE1   urge5   Surge2\n" + "・D66ダイスあり\n"); - self.$setPrefixes(["[NAMUC]?URGE\\d+"]); - - Opal.def(self, '$initialize', $DemonParasite_initialize$1 = function $$initialize() { - var $iter = $DemonParasite_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $DemonParasite_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $DemonParasite_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 1); - }, $DemonParasite_initialize$1.$$arity = 0); - - Opal.def(self, '$check_nD6', $DemonParasite_check_nD6$2 = function $$check_nD6(total, _dice_total, dice_list, cmp_op, target) { - var self = this; - - - if ($truthy($rb_ge(dice_list.$count(1), 2))) { - return " > 致命的失敗" - } else if ($truthy($rb_ge(dice_list.$count(6), 2))) { - return " > 効果的成功" - } else if (target['$==']("?")) { - return ""}; - if ($truthy([">=", ">"]['$include?'](cmp_op))) { - if ($truthy(total.$send(cmp_op, target))) { - return " > 成功" - } else { - return " > 失敗" - } - } else { - return nil - }; - }, $DemonParasite_check_nD6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $DemonParasite_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var self = this; - - return self.$get_urge(command) - }, $DemonParasite_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$get_urge', $DemonParasite_get_urge$4 = function $$get_urge(string) { - var $a, $b, self = this, m = nil, initialWord = nil, urgelv = nil, $case = nil, title = nil, urge = nil, dice_now = nil, resultText = nil; - - - m = /([NAMUC])?URGE\s*(\d+)/i.$match(string); - if ($truthy(m)) { - } else { - return "1" - }; - initialWord = m['$[]'](1); - urgelv = m['$[]'](2).$to_i(); - $case = initialWord; - if (nil['$===']($case)) { - title = "衝動表"; - urge = $$($nesting, 'URGE_TABLE');} - else if ("N"['$===']($case)) { - title = "新衝動表"; - urge = $$($nesting, 'NEW_URGE_TABLE');} - else if ("A"['$===']($case)) { - title = "誤作動表"; - urge = $$($nesting, 'MALFUNCTION_TABLE');} - else if ("M"['$===']($case)) { - title = "ミュータント衝動表"; - urge = $$($nesting, 'MUTANT_TABLE');} - else if ("U"['$===']($case)) { - title = "鬼御魂(戦闘外)衝動表"; - urge = $$($nesting, 'ONIMITAMA_OUT_OF_BATTLE_TABLE');} - else if ("C"['$===']($case)) { - title = "鬼御魂(戦闘中)衝動表"; - urge = $$($nesting, 'ONIMITAMA_BATTLE_TABLE');} - else {return "1"}; - if ($truthy(($truthy($a = $rb_lt(urgelv, 1)) ? $a : $rb_gt(urgelv, 5)))) { - return "衝動段階は1から5です"}; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice_now = ($a[0] == null ? nil : $a[0])), $b; - resultText = urge['$[]']($rb_minus(urgelv, 1))['$[]']($rb_minus(dice_now, 2)); - return "" + (title) + (urgelv) + "-" + (dice_now) + ":" + (resultText); - }, $DemonParasite_get_urge$4.$$arity = 1); - Opal.const_set($nesting[0], 'URGE_TABLE', [["『怒り』突然強い怒りに駆られる。近くの対象に(非暴力の)怒りを全力でぶつける。このターンの終了まで「行動不能」となる。[経験値20点]", "『絶叫』寄生生物が体内で蠢く。その恐怖に絶叫。このターンの終了まで「行動不能」となる。[経験値10点]", "『悲哀』急に悲しいことを思い出して動きが止まる。このターンの終了まで「行動不能」となる。[経験値10点]", "『微笑』可笑しくてしょうがない。くすくす笑いが止まらず、このターンの終了まで「行動不能」となる。[経験値10点]", "『鈍感』衝動に気が付かなかった。何も起こらない。[経験値0点]", "『抑制』衝動を抑え込んだ。何も起こらない。[経験値0点]", "『我慢』衝動を我慢した。何も起こらない。[経験値0点]", "『前兆』悪魔的特徴が一瞬目立つ。1ターン(10秒)持続。変身中なら影響なし。[経験値10点]", "『発現』悪魔的特徴が急に目立つ。60ターン(10分)持続。変身中なら影響なし。[経験値10点]", "『変化』利き腕/前脚が2ターン(20秒)かけて悪魔化する。18ターン(3分)持続。変身中なら影響なし。[経験値20点]", "『顕現』利き腕/前脚が瞬時に悪魔化。60ターン(10分)持続。変身中なら影響なし。[経験値20点]"], ["『茫然』思考が止まり、このターンの終了まで「攻撃」行動を行えない。回避行動に影響はない。[経験値20点]", "『激怒』側にいるもの(生物、物体問わず)が憎く、殴る。変身後ならば次のターンの終了まで、すべての命中判定+5、回避判定-5。[経験値20点]", "『残忍』殺意、破壊衝動が一瞬増す。戦闘中ならば次のターンに行われる「攻撃」行動の達成値に+5。[経験値20点]", "『落涙』過去の悲しい想い出が去来し、涙が溢れる。1ターン(10秒)「通常」行動を行えない。回避行動に影響はない。[経験値10点]", "『抑制』衝動を抑え込んだ。何も起こらない。[経験値0点]", "『我慢』衝動を我慢した。何も起こらない。[経験値0点]", "『忍耐』肉体を傷つけて衝動に耐えた。5ダメージ。[経験値10点]", "『辛抱』ほんの一瞬、全身が変身しかかる。無理に抑えたので、5ダメージ。変身中なら影響なし。[経験値10点]", "『異貌』3ターン(30秒)かけて顔が変身する。18ターン(3分)持続。変身中なら影響なし。[経験値20点]", "『苦痛』寄生生物が体内で暴れ、痛みにのけぞる。10ダメージ。[経験値20点]", "『変貌』変身後の(特異な)外見的特徴が3ターン(30秒)かけて現れる。18ターン(3分)持続。変身中なら影響なし。[経験値20点]"], ["『憤怒』怒りに全身が満たされる。次のターンの終了まで、すべてのダメージのサイコロを+1個する。[経験値20点]", "『加速』ほとばしる衝動により。次のターンは【行動値】が2倍になる。[経験値20点]", "『発露』力が溢れ出る。次のターンの終了まで、すべてのダメージに+5、防御点-5(最低0)される。[経験値20点]", "『乾き』攻撃衝動を抑えられない。次のターンの終了まで全ての命中判定+5、回避判定-5。[経験値10点]", "『絶叫』あらん限りの声で叫ぶ。このターンの終了まで、全ての回避判定に-10。[経験値10点]", "『我慢』衝動を我慢した。何も起こらない。[経験値0点]", "『限界』衝動を無理矢理抑え込む。あちこちの血管が破裂し、10ダメージ。[経験値10点]", "『解放』衝動に耐えられず変身が始まる。3ターン(30秒)かけて変身。変身中なら影響なし。[経験値10点]", "『本能』衝動に駆られ、瞬時に変身。次のターン、目の前の動くものを敵味方区別無く攻撃する。[経験値20点]", "『保身』次のターンの終了まで、敵を攻撃できない。全ての防御力に+5。[経験値20点]", "『救済』悪魔寄生体が危機を察知し、【エナジー】を20点回復する。[経験値20点]"], ["『癒し』衝動を1点使った回復を行う。[経験値20点]", "『離脱』その場から逃げ出す。逃げられない場合は、うずくまって動けなくなる。1ターン(10秒)経過すれば我に返る。[経験値20点]", "『脱力』急に力が抜ける。次のターンの終了まで、全ての判定に-5される。[経験値20点]", "『全力』激しい躁状態。次のターンの終了まで、命中判定に+10、回避判定に-10[経験値20点]", "『混沌』意味のある言葉を話せなくなる。1時間持続する。[経験値10点]", "『限界』衝動を無理矢理抑え込む。あちこちの血管が破裂し、10ダメージ。[経験値10点]", "『本能』衝動に駆られ、瞬時に変身。次のターン、目の前の動くものを敵味方区別無く攻撃する。[経験値20点]", "『焦燥』焦りから「転倒」する。[経験値20点]", "『猜疑』味方が急に敵に思える。即座に近くの味方に一回攻撃し、自動命中となる。いなければ影響なし。[経験値20点]", "『自虐』自分が許せない。自分へ攻撃(自動命中。ダメージは通常)。[経験値20点]", "『自浄』少し我に返る。衝動が2点回復する。[経験値20点]"], ["『絶望』自殺を試みる。変身中ならば最強の攻撃(特殊能力等を使用しての攻撃)を自分へ与える。[経験値30点]", "『賛美』敵(複数いる場合はリーダー格)を主と思いこむ。主が倒されるか、このターンの終了まで主の命令を聞く。[経験値30点]", "『拒絶』変身が解除される。変身していなければ影響なし。[経験値20点]", "『飢餓』近くの無防備な対象を喰らおうとする。邪魔する物は敵として攻撃する。次ターンの終了時に我に返る。[経験値20点]", "『暗闇』視神経に影響が出る。以後1日「暗闇」になる。[経験値20点]", "『混乱』意味のある言葉を話せなくなる。1時間持続する。[経験値20点]", "『嫉妬』仲間に猛烈な嫉妬を覚える。即座に一番近くの味方を攻撃。判定は自動的に効果的成功となる。いなければ影響なし。[経験値20点]", "『暴君』自分が最強に思えてしかたがない。60ターン(10分)攻撃判定の達成値に+10、回避判定の達成値は-10。[経験値20点]", "『無双』全力だが無防備。60ターン(10分)、全てのダメージに+10、防御点0、【行動値】0。[経験値20点]", "『定着』変身していなければ、即座に変身。肉体が変身に馴染んでしまう。24時間、変身が解除されなくなる。[経験値30点]", "『眠り』猛烈な睡魔に襲われる。60ターン(10分)、もしくは戦闘終了まで起こしても起きない。[経験値30点]"]].$freeze()); - Opal.const_set($nesting[0], 'NEW_URGE_TABLE', [["『開眼』潜在能力が発揮される。10分間、あらゆる戦闘以外の判定に+5。", "『集中』感覚が研ぎ澄まされる。次のターンの終了まで、射撃の命中判定に+5。", "『迅速』運動神経が上昇する。20分間、戦闘以外の【機敏】判定に+5。", "『怪力』怪力を発揮する。20分間、戦闘以外の【肉体】判定に+5。", "『鈍感』衝動に気が付かない。何も起こらない。", "『抑制』衝動を抑え込む。何も起こらない。", "『我慢』衝動を我慢する。何も起こらない。", "『無心』冷静になる。20分間、戦闘以外の【精神】判定に+5。", "『解放』感覚が解放される。20分間、戦闘以外の【感覚】判定に+5。", "『攻撃』攻撃の姿勢を取る。次のターンの終了まで、すべてのダメージが+5。", "『防御』防御の姿勢を取る。このターンの終了まで、すべての防御力が+5。"], ["『敵視』激しい攻撃本能に駆られる。次のターンの終了まで、肉弾ダメージ+10。", "『忘我』怒りに痛みを忘れる。エナジー5点回復。", "『閃き』頭が冴える。20分間、戦闘以外の【知力】判定に+5。", "『全力』筋肉のリミッターが一時的にはずれる。次のターンの終了まで、肉弾ダメージに+5。", "『抑制』衝動を抑え込む。何も起こらない。", "『我慢』衝動を我慢する。何も起こらない。", "『反射』反射神経が研ぎ澄まされる。次のターンの終了まで、射撃の回避判定に+5。", "『機転』わずかなチャンスを見逃さなくなる。20分間、戦闘以外の【幸運】判定に+5。", "『耐性』精神力が上昇する。次のターンの終了まで、特殊防御力+5。", "『怒り』敵に対する怒りにとらわれる。次のターンの終了まで、肉弾の命中判定に+10。", "『活発』明るく活発になる。戦闘終了まで【行動値】+5。"], ["『漲り』体の奥底から力がみなぎってくる。エナジー10点回復。", "『分析』相手の動きを冷静に分析できるようになる。5ターンの間、射撃ダメージに+10。", "『慈愛』万人に対して慈愛を感じるようになる。5ターンの間、回復に振るダイスが+1d。", "『慎重』敵の攻撃に慎重になる。次のターンの終了まで、すべての回避判定に+5。", "『本能』攻撃本能がむき出しになる。5ターンの間、特殊の命中判定に+5。", "『性急』気が早くなる。次のターンの終了まで、【行動値】に+3", "『凶暴』イライラが止まらなくなる。5ターンの間、肉弾の命中判定に+5。", "『楽観』気分がリラックスする。エナジー5点回復。", "『自閉』自分の殻に閉じこもろうとする。5ターンの間、特殊防御力に+5。", "『反射』敵の攻撃に即座に反応できる。5ターンの間、肉弾の回避判定に+10。", "『快感』快感を覚える。衝動が1点回復する。"], ["『情熱』激しい情熱が噴き出してくる。エナジー10点と衝動1点回復。", "『気合』体中に気合いが入る。10ターンの間、すべてのダメージに+10。", "『加速』体中の神経が加速する。10ターンの間、すべての命中判定に+10。", "『利己』考え方が利己的になる。10ターンの間、特殊の命中判定に+10。", "『頑強』肉体が鋼のように強くなる。10ターンの間、肉弾防御力に+5。", "『察知』相手の動きを察知できる。10ターンの間、射撃防御力に+5。", "『殺意』激しい殺意にとらわれる。10ターンの間、特殊ダメージに+10。", "『静観』心が落ち着き冷静になる。10ターンの間、射撃の回避判定に+5。", "『是空』頭が冴えて敵の行動が読める。10ターンの間、すべての回避判定に+5。", "『心眼』心の目で相手の行動を読める。5ターンの間、射撃の回避判定に+10。", "『自愛』何をおいても自分が愛しく思える。5ターンの間、特殊の回避判定に+10。"], ["『神速』人知を超えたスピードに目覚める。戦闘終了まで「通常」行動を2回行えるようになる。", "『流水』超感覚に目覚める。10ターンの間、すべての回避判定に+10。", "『覚醒』肉体の回復力が限界突破。エナジー20点回復。", "『忍耐』あらゆる苦痛に耐える鋼の精神が宿る。10ターンの間、すべての防御力に+5。", "『予知』第六感が研ぎ澄まされる。10ターンの間、射撃の命中とダメージに+10。", "『豪傑』身体能力が限界を超えて上昇する。10ターンの間、肉弾の命中とダメージに+10。", "『殺気』猛烈な殺意がみなぎる。10ターンの間、特殊の命中判定とダメージに+10。", "『発動』反射神経が飛躍的に加速される。10ターンの間、【行動値】+10。", "『激情』激しい感情があふれ出す。10ターンの間、すべてのダメージに+10。", "『超人』運動神経が飛躍的に加速される。10ターンの間、すべての命中判定に+15。", "『悟り』心が解放され無我の境地に達する。衝動が3点回復する"]].$freeze()); - Opal.const_set($nesting[0], 'MALFUNCTION_TABLE', [["『緊急停止』機能に異常発生。次のターンの終了まで、「行動不能」になる。[30点]", "『動力不調』動力装置に異常発生。このターンの終了時まで、「行動不能」になる。[30点]", "『腕部停止』腕部機構に異常発生。このターンの終了時まで、「タイミング:攻撃」が行えない。[20点]", "『脚部停止』脚部機構に異常発生。このターンの終了時まで、あらゆる「移動」を行えない。[20点]", "『機能制動』機能が一瞬停止するが、影響なし。[10点]", "『不良調整』機能に違和感。影響なし。[10点]", "『機能安定』機能が安定した。影響なし。[10点]", "『機能暴発』直前に使用した《兵装》がこのターンの終了時まで使用不能。未使用なら影響なし。[20点]", "『離脱機能』機能の異常発生。行動を消費することなく、即座に敵から「移動(全力)」で離れる。[20点]", "『排熱暴走』排熱機能に異常発生。次のターン終了時まで「着火」状態となる。[30点]", "『作動予測』次に起きる誤作動を予測できる。「第2限界点」に達したとき、「作動予測」以外の任意の誤作動を選択できる。[30点]"], ["『安全機能』安全機能が作動。このターンの終了時まで、あらゆる判定に-5。[40点]", "『筋肉萎縮』人工筋肉に異常発生。次のターン終了時まで、【肉体】判定に-2。[30点]", "『出力低下』駆動部に異常発生。次のターンの終了時まで、【機敏】判定に-2。[30点]", "『感覚異常』視界機能に異常発生。次のターンの終了時まで、【感覚】判定に-2。[20点]", "『視界不良』視界機能に異常発生。次のターンの終了時まで、【幸運】判定に-2。[20点]", "『機能制動』機能が一瞬停止するが、影響なし。[10点]", "『不良調整』機能に違和感。影響なし。[10点]", "『援護不通』援護ソフトが誤作動。次のターンの終了時まで、【知力】判定-2。[20点]", "『発声変調』発声機能に異常発生。次のターンの終了時まで、【精神】判定-2。[30点]", "『装甲軟化』防御機構に異常発生。あらゆる防御力に-5。[30点]", "『作動予測』次に起きる誤作動を予測できる。「第3限界点」に達したとき、「作動予測」以外の任意の誤作動を選択できる。[40点]"], ["『動力漏電』動力から漏電。『負荷』が2点上昇。[40点]", "『駆動異常』脚部に異常発生。次のターンの終了時まで、「移動」距離半減。[40点]", "『足下転倒』バランサーに異常発生。「転倒」状態となる。[30点]", "『出力向上』《兵装》機能が向上。次のターンの終了時まで、特殊ダメージに+1d点。[30点]", "『機能制動』機能が一瞬停止するが、影響なし。[20点]", "『機能暴走』攻撃機能が暴走し、戦闘能力が上昇。「着火」状態になるが、あらゆるダメージに+10。[20点]", "『身体向上』格闘機能が向上。次のターンの終了時まで、肉弾ダメージに+1d点。[30点]", "『反射向上』反応速度が向上。次のターンの終了時まで、【行動値】が+5。[30点]", "『精度向上』標準機能が向上。次のターンの終了時まで、射撃ダメージに+1d点。[30点]", "『電子賦活』電磁障壁が突如回復。【電力】が10点回復する。[30点]", "『作動予測』次に起きる誤作動を予測できる。「第4限界点」に達したとき、「作動予測」以外の任意の誤作動を選択できる。[40点]"], ["『照準誤認』照準機能に異常発生。即座に最も近い味方を全力攻撃。[50点]", "『攻撃特化』攻撃機能が上昇。次のターン終了時まで、あらゆるダメージに+2dされるが「タイミング:防御」を行えない。[40点]", "『機内窒息』呼吸補助機能に異常発生。次のターン終了時まで、「窒息」状態。[40点]", "『機能増強』全機能が飛躍的に向上。次のターン終了時まで、《兵装》のコストを払わなくて良い。[30点]", "『音声遮断』聴覚機能に異常発生。次のターン終了時まで、一切の物音が聞こえず、あらゆる回避判定に-5。[30点]", "『電流加速』電磁障壁が効率的に流れる。『負荷』が1点回復。[20点]", "『精密射撃』照準の精度が向上。あらゆるダメージに+5点。[30点]", "『電力浪費』電磁障壁が過剰に使用される。【電力】が10点減少。[30点]", "『荷電暴走』【電力】を5点消費するが、次のターン終了時まで、あらゆるダメージに+10点。[40点]", "『状況分析』視界機能が向上。あらゆる命中判定に+5。[40点]", "『作動予測』次に起きる誤作動を予測できる。「第5限界点」に達したとき、「作動予測」以外の任意の誤作動を選択できる。[50点]"], ["『出力過剰』全出力が過剰。次のターン終了時まで、あらゆるダメージの総計が2倍になるが《兵装》のコストも2倍になる。[50点]", "『機関暴走』放熱機能が暴走。自分を中心に半径5m以内すべての対象を「着火」状態にする。[50点]", "『機体清冽』機能異常から復帰。「気絶」「死亡」を除く、あらゆる状態変化がすべて消滅。[40点]", "『鉄壁装甲』防御機能が向上。次のターン終了時まで、あらゆる防御力に+5。[30点]", "『緊急駆動』回避機能が向上。次のターン終了時まで、あらゆる回避判定に+5。[30点]", "『出力増大』装備補助機能が向上。次のターン終了時まで、「所持品」あるいは《兵装》を使用したダメージ総計が2倍になる。[30点]", "『機体加速』運動機能が暴走。次のターン終了時まで、【行動値】が2倍となる。[30点]", "『自動追尾』自動追尾機能が発動。次のターン終了時まで、あらゆる命中値に+5。[40点]", "『限定解除』全機能の限界を解除。次のターン終了時まで、あらゆるダメージに+10。[50点]", "『負荷軽減』急激に機体の負荷が低下。『負荷』が2点回復する。[50点]", "『複合反応』この表を2回振る。ただし、同じ結果が出た場合は適用するのは一度だけ。獲得経験値は累積する。[0点]"]].$freeze()); - Opal.const_set($nesting[0], 'MUTANT_TABLE', [["『怒り』突然強い怒りに駆られる。近くの対象にあたりちらす。このターンの終了まで「行動不能」となる。[20点]", "『絶叫』悪魔寄生体が蠢きだす。その恐怖に絶叫。このターンの終了まで「行動不能」となる。[10点]", "『悲哀』急に悲しいことを思い出す。このターンの終了まで「行動不能」となる。[10点]", "『微笑』可笑しくてしょうがない。くすくす笑いが止まらず、このターンの終了まで「行動不能」となる。[10点]", "『鈍感』衝動に気が付かなかった。何も起こらない。[0点]", "『抑制』衝動を抑え込んだ。何も起こらない。[0点]", "『我慢』衝動を我慢した。何も起こらない。[0点]", "『前兆』悪魔的特徴が一瞬目立つ。1ターン(10秒)持続。《擬態変化》を解いているなら影響なし。[10点]", "『発現』悪魔的特徴が急に目立つ。60ターン(10分)持続。《擬態変化》を解いているなら影響なし。[10点]", "『解除』利き腕/前脚の《擬態変化》が2ターン(20秒)かけて解除される。18ターン(3分)持続。《擬態変化》を解いているなら影響なし。[20点]", "『顕現』利き腕/前脚の《擬態変化》が瞬時に解除。60ターン(10分)持続。《擬態変化》を解いているなら影響なし。[20点]"], ["『茫然』思考が止まり、このターンの終了まで「攻撃」行動を行えない。その他の行動は影響なし。[20点]", "『激怒』側にいるもの(生物、物体問わず)が憎くなり、殴る。《擬態変化》を解いているならば次のターンの終了まで、すべての命中判定+5、回避判定-5。[20点]", "『残忍』殺意、破壊衝動が一瞬増す。戦闘中ならば次のターンに行われる「攻撃」行動の達成値に+5。[20点]", "『落涙』過去の悲しい想い出が去来し、涙が溢れる。1ターン(10秒)「通常」行動を行えない。その他の行動に影響はない。[10点]", "『抑制』衝動を抑え込んだ。何も起こらない。[0点]", "『我慢』衝動を我慢した。何も起こらない。[0点]", "『忍耐』肉体を傷つけて衝動に耐えた。5点ダメージ。[10点]", "『辛抱』ほんの一瞬、《擬態変化》が解けかかる。無理に抑えたので5点ダメージ。《擬態変化》を解いているなら影響なし。[10点]", "『異貌』3ターン(30秒)かけて《擬態変化》が解除される。18ターン(3分)持続。《擬態変化》を解いているなら影響なし。[20点]", "『苦痛』寄生生物が体内で暴れ狂う。10点ダメージ。[20点]", "『変貌』特異な外見的特徴が3ターン(30秒)かけて現れる。18ターン(3分)持続。《擬態変化》を解いているなら影響なし。[20点]"], ["『憤怒』怒りに全身が満たされる。次のターンの終了まで、すべてのダメージを+1d点する。[20点]", "『加速』ほとばしる衝動により。次のターンは【行動値】が2倍になる。[20点]", "『発露』力が溢れ出る。次のターンの終了まで、すべてのダメージに+5、防御点-5(最低0)される。[20点]", "『乾き』攻撃衝動を抑えられない。次のターンの終了まで全ての命中判定+5、回避判定-5。[10点]", "『絶叫』あらん限りの声で叫ぶ。このターンの終了まで、あらゆる回避判定に-10。[10点]", "『我慢』衝動を我慢した。何も起こらない。[0点]", "『限界』衝動を無理矢理抑え込む。10点ダメージ。[10点]", "『解放』衝動に耐えられず擬態が解ける。3ターン(30秒)かけて解除。《擬態変化》を解いているなら影響なし。[10点]", "『本能』衝動に駆られ、《擬態変化》が瞬時に解除。次のターンは、目の前の動くものを敵味方区別無く攻撃する。[20点]", "『保身』次のターンの終了まで、敵を攻撃できない。全ての防御力に+5。[20点]", "『救済』悪魔寄生体が危機を察知し、【エナジー】を20点回復する。[20点]"], ["『癒し』【エナジー】が即座に3d点回復。[20点]", "『離脱』その場から逃げ出す。逃げられない場合は、うずくまって動けなくなる。1ターン(10秒)経過すれば我に返る。[20点]", "『脱力』急に力が抜ける。次のターンの終了まで、全ての判定に-5される。[20点]", "『全力』激しい躁状態。次のターンの終了まで、命中判定に+10、回避判定に-10。[20点]", "『混沌』1時間の間、意味のある言葉を話せなくなる。[10点]", "『争乱』体内で共生生物同士が争い、暴れ回る。衝動が1点増える。[10点]", "『本能』衝動に駆られ、《擬態変化》が瞬時に解除。次のターン、目の前の動くものを敵味方区別無く攻撃する。[20点]", "『焦燥』焦りから「転倒」する。[20点]", "『猜疑』味方が急に敵に思える。即座に近くの味方に1回攻撃(自動命中。ダメージは通常)。いなければ影響なし。[20点]", "『自虐』自分が許せない。自分へ素手攻撃(自動命中。ダメージは通常)。[20点]", "『自浄』少し我に返る。衝動が2点回復する。[20点]"], ["『絶望』無力感にさいなまれる。次のターンの終了時まで「行動不能」となる。[30点]", "『眠り』猛烈な睡魔に襲われる。60ターン(10分)、もしくは戦闘終了まで起こしても起きない。[30点]", "『誤動』突然《擬態変化》が使用され、人間の姿になる(衝動も通常通り使用する)。既に使用していた場合は変化無し。[20点]", "『暗闇』視神経に影響が出る。以後1日「暗闇」になる。[20点]", "『再生』共生生物が危機を察知し、【エナジー】を10点回復する。[20点]", "『混乱』1時間の間、意味のある言葉を話せなくなる。[20点]", "『硬化』急に体が硬直する。このターンの終了時まで、あらゆる命中判定に-10、防御力に+10。[20点]", "『暴君』自分が最強に思えてしかたがない。60ターン(10分)攻撃判定に+10、回避判定に-10。[20点]", "『無双』全力だが無防備。60ターン(10分)、全てのダメージに+10、防御点と【行動値】は0。[20点]", "『喪失』《擬態変化》が使用中なら、即座に解除。さらに24時間、《擬態変化》が使えなくなる。[30点]", "『進化』共生生物たちが上手く混じって身体能力が向上する。次の判定の達成値+10。[30点]"]].$freeze()); - Opal.const_set($nesting[0], 'ONIMITAMA_OUT_OF_BATTLE_TABLE', [["『恐怖』恐怖の感情が爆発し、目に映るすべてが恐ろしくなる。[20点]", "『落涙』過去の悲しい思い出が去来し、涙が溢れる。[10点]", "『哄笑』突如として精神が高揚し、狂ったように笑う。[10点]", "『咆哮』<和魂>によって怒りが増し、突如として雄たけびを上げる。[10点]", "『抑制』衝動を完全に律する。何も起こらない。[0点]", "『沈静』穏やかな気分になる。[0点]", "『理性』衝動を理性で押さえ込む。何も起こらない。[0点]", "『破裂』衝動を押さえ込もうとして体内の欠陥が破裂、喀血する。[10点]", "『喪失』一瞬、〈和魂〉の神通力が失われる。[10点]", "『枯渇』吸血への渇望が押さえられず、一般人を血走った目で見つめる。[10点]", "『内包』凄まじい勢いで体内に妖気が内包され、力が増す。[20点]"], ["『飢餓』突然の吸血衝動。一般人を猛烈に襲いたくなる。[20点]", "『封印』妖気を操作できず、1分間《特殊能力》を使用できない。[20点]", "『拒絶』情緒が不安定となり、味方が急に怖くなる。[20点]", "『拡散』突如として全身から妖気が噴出、目の前の対象を吹き飛ばす。[10点]", "『抑制』衝動を完全に律する。なにも起こらない。[0点]", "『治癒』疲れが癒される。[0点]", "『本能』暴力衝動に駆られ、瞬時に\"異形化\"してしまう。[10点]", "『破砕』破壊衝動が巻き起こり、目の前の障害物を破壊する。[20点]", "『悪寒』突如として悪寒が走り、物事に集中できなくなる。", "『心傷』突如としてトラウマを思い出し、立ちつくす。[20点]", "『回想』過去の思い出が去来、活力がみなぎる。[30点]"], ["『不動』妖気が全身を駆け巡り、激痛によって動けなくなる。[20点]", "『脱力』突如として妖気が衰え、脱力のあまり膝をつく。[20点]", "『異形』瞬時にして犬歯が肥大し、目が紅く、邪悪に輝く。[20点]", "『精密』突如として視界が広がり、目視せずとも背後の風景や人物を見通せる。[10点]", "『獰猛』突如として怒りの感情が湧き起こり、目前の対象を罵倒する。[0点]", "『高揚』〈和魂〉の影響により精神が高揚、躁状態となる。[0点]", "『憎悪』突如として憎悪が沸き起こり、目前の対象に掴みかかる。[0点]", "『加速』全身に妖気が駆け巡り、反射速度が増し、10秒を1分のように感じる。[10点]", "『平穏』精神に変調が起こり、異常なほど理性的になる。[20点]", "『慈愛』あらゆる者に自愛を抱き、親身に接する。[20点]", "『支配』一瞬〈和魂〉を完全支配、次に行う戦闘外の判定を1回だけ効果的成功する。[20点]"], ["『変質』突如として妖気が変質、半径5mにわたって透明な壁を展開する。[30点]", "『増強』妖気によって身体能力が増強され、10分間[運動]上級を取得する。[20点]", "『拡大』妖気が目視できるほど両腕から発散、20m先の物体を操作できる。[20点]", "『清浄』妖気を開放、<鬼御魂>を持たない半径10m内全ての生物を眠らせる。[10点]", "『透視』濃密な妖気が瞳に宿り、1分間20mの距離を透視できる。[10点]", "『強行』突如として妖気が増し、接触した対象を【肉体】x2m吹き飛ばす。[0点]", "『衝撃』妖気が殺傷能力を帯び、接触した物体を破壊。20秒間、手足が簡易の肉弾武器となる。[10点]", "『撃滅』妖気が稲妻や火災へと変異し、接触した物体を「着火」させる。[20点]", "『展開』全身を包む妖気の層が厚くなり、1分間物理的な接触を行えない。[20点]", "『模倣』<和魂>が精神を活性化させ、異常な記憶力を手に入れる。[20点]", "『支配』一瞬<和魂>を完全支配、次に行う戦闘外の判定を1回だけ効果的成功する。[20点]"], ["『解放』妖気を無尽蔵に解放、1分間、戦闘外で使用する「コスト」を無視できる。[30点]", "『加速』妖気が両足に集中、1分間、時速50kmで疾走できる。[20点]", "『付与』妖気が感覚に集中、1分間50m先を透視できる。[20点]", "『強固』妖気が全身に浸透、1分間「窒息」「状態変化」のダメージを無効。[20点]", "『破壊』全妖気が膂力に変換され、1分間【肉体】判定の達成値を2倍にする。[20点]", "『爆散』1分間妖気が変質、接触した対象を爆破でき、障害物を瞬時に破壊。[10点]", "『浄化』半径10m全てを浄化、範囲内で持続する《特殊能力》の効果を無効化。[20点]", "『律動』半径10m内の<鬼御魂>を持たない生物を1分間気絶させる。[20点]", "『修復』妖気が極限まで活性化され、疲労を取り払う。[20点]", "『本性』瞬時に異形化。異形化中であれば、さらに禍々しい姿へ変質する。[20点]", "『覚醒』1時間、全身から閃光を発し、高さが【精神】mの\"光の柱\"に包まれる。[30点]"]].$freeze()); - return Opal.const_set($nesting[0], 'ONIMITAMA_BATTLE_TABLE', [["『恐怖』効果が発生したターンの終了時まで「行動不能」状態となる。", "『落涙』1ターン(10秒)「通常」行動を行えない。回避行動に影響はない。", "『哄笑』効果が発生したターンの終了時まで「行動不能」となる。", "『咆哮』効果が発生したターンの終了時まで「行動不能」となる。", "『抑制』影響なし。", "『沈静』【エナジー】を3点回復する。", "『理性』影響なし。", "『破裂』【エナジー】が5点減少する。", "『喪失』次ターンの【行動値】が半減(端数切捨て)。", "『枯渇』次ターンの終了時まで、あらゆるダメージに「+2」点。", "『内包』『衝動』が2点回復する。"], ["『飢餓』最も近くの無防備な対象から血液摂取を試みる。対象が<鬼御魂>を持たない場合、血液採取の効果を得られる。", "『封印』効果が発生したターンの終了時まで《特殊能力》を使用できない。", "『拒絶』効果が発生したターンの終了時まで、味方を対象とした《特殊効果》を使用不可。", "『拡散』半径5m以内の対象全ての【エナジー】を1d点減少する(抵抗不可、防御力無視)。", "『抑制』影響なし。", "『治癒』【エナジー】を5点回復する。", "『本能』即座に\"異形化\"、ターン終了まで任意のダメージ1つに「+1d」点。", "『破砕』行動を消費することなく、近くに存在する障害物1つを瞬時に破壊。", "『悪寒』効果が発生したターンの終了時まで、あらゆる判定の達成値に「-5」。", "『心傷』効果が発生したターンの終了時まで、「タイミング:攻撃」を行えない。", "『回想』『衝動』を3点回復する。"], ["『不動』次のターンの終了時まで「タイミング:通常」を行えない。", "『脱力』次のターンの終了時まで「転倒」状態となる。", "『異形』次に行う行為判定は、出目に関係なく効果的成功として扱う。", "『精密』次のターンの終了時まで、射撃ダメージに「+5」点。", "『獰猛』次のターンの終了時まで、肉弾ダメージに「+5」点。", "『高揚』次のターンの終了時まで、あらゆるダメージに「+1d」点。", "『憎悪』次のターンの終了時まで、特殊ダメージに「+5」点。", "『加速』次のターンの終了時まで【行動値】に「+5」。", "『平穏』あらゆる「状態変化」を任意で1つ消滅させる。", "『慈愛』半径5m内の味方全ての【エナジー】を5点回復する。", "『支配』「衝動表」の結果を、第三段階の中から任意のものから1つ選択できる。"], ["『変質』次のターンの終了時まで、任意の防御力の1つに「+10」点。", "『増強』次のターンの終了時まで、任意の回避判定1つに「+5」。", "『拡大』次のターンの終了時まで、任意の命中判定1つに「+5」。", "『清浄』半径10m内の味方全ての【エナジー】を5点回復する。", "『透視』次のターン終了時まで、射撃ダメージに「+10」点。", "『強行』次のターンは、「タイミング:攻撃」を余分に1回行うことができる。", "『衝撃』次のターンの終了時まで、肉弾ダメージに「+10」点。", "『撃滅』次のターンの終了時まで、特殊ダメージに「+10」点。", "『展開』次のターンの終了時まで、本人が受けるあらゆるダメージを半減できる。", "『模倣』次のターンの終了時まで、敵が使用した《特殊能力》1つを1回だけ使用可能。", "『支配』「衝動表」の結果を、第四段階の中から任意のものから1つ選択できる。"], ["『解放』次のターンの終了時まで、あらゆる戦闘修正が2倍となる。", "『加速』次のターンの終了時まで、【行動値】が2倍となる。", "『付与』次のターンの終了時まで、射撃ダメージの総計を2倍にできる。", "『強固』次のターンの終了時まで、あらゆる防御力に「+10」点。", "『破壊』次のターンの終了時まで、肉弾ダメージの総計を2倍にできる。", "『爆散』次のターンの終了時まで、あらゆるダメージに「+2d」点。", "『浄化』『衝動』を1d点回復する。", "『律動』次のターンの終了時まで、特殊ダメージの総計を2倍にできる。", "『修復』【エナジー】が最大値まで回復する。", "『本性』この戦闘中のみ、最終能力を2回使用できる。", "『覚醒』第五段階を2回振り、双方の効果を適応する。"]].$freeze()); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$setPrefixes', '$=~', '$last_match', '$to_i', '$===', '$<', '$>', '$==', '$roll', '$get_pb_urge_table', '$<=', '$get_pb_normal_urge_table', '$get_pb_aas_urge_table', '$[]', '$-']); - - self.$require("diceBot/DemonParasite"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ParasiteBlood'); - - var $nesting = [self].concat($parent_nesting), $ParasiteBlood_get_urge$1, $ParasiteBlood_get_pb_urge_table$2, $ParasiteBlood_get_pb_normal_urge_table$3, $ParasiteBlood_get_pb_aas_urge_table$4; - - - Opal.const_set($nesting[0], 'ID', "ParasiteBlood"); - Opal.const_set($nesting[0], 'NAME', "パラサイトブラッドRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "はらさいとふらつとRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・衝動表 (URGEx)\n" + " \"URGE衝動レベル\"の形で指定します。\n" + " 衝動表に従って自動でダイスロールを行い、結果を表示します。\n" + " ダイスロールと同様に、他のプレイヤーに隠れてロールすることも可能です。\n" + " 頭に識別文字を追加して、デフォルト以外の衝動表もロールできます。\n" + " ・AURGEx 頭に「A」を付けると「誤作動表」。\n" + "例)URGE1   urge5   Aurge2\n" + "・D66ダイスあり\n"); - self.$setPrefixes(["(N|A|M|U|C|)?URGE\\d+"]); - - Opal.def(self, '$get_urge', $ParasiteBlood_get_urge$1 = function $$get_urge(string) { - var $a, $b, self = this, urge = nil, initialWord = nil, urgelv = nil, $case = nil, urge_type = nil, dice_now = nil, resultText = nil, output = nil; - - - urge = []; - if ($truthy(/(\w*)URGE\s*(\d+)/i['$=~'](string))) { - } else { - return "1" - }; - initialWord = $$($nesting, 'Regexp').$last_match(1); - urgelv = $$($nesting, 'Regexp').$last_match(2).$to_i(); - $case = initialWord; - if (""['$===']($case)) {urge_type = 1} - else if (/A/i['$===']($case)) {urge_type = 2} - else {urge_type = 1}; - if ($truthy(($truthy($a = $rb_lt(urgelv, 1)) ? $a : $rb_gt(urgelv, 5)))) { - return "衝動段階は1から5です"}; - if (urge_type['$=='](0)) { - return "1"}; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice_now = ($a[0] == null ? nil : $a[0])), $b; - urge = self.$get_pb_urge_table(urgelv, dice_now, urge_type); - resultText = "" + (urgelv) + "-" + (dice_now) + ":" + (urge); - if ($truthy($rb_le(urge_type, 1))) { - output = "" + "衝動表" + (resultText) - } else if ($truthy($rb_le(urge_type, 2))) { - output = "" + "誤作動表" + (resultText) - } else { - output = "1" - }; - return output; - }, $ParasiteBlood_get_urge$1.$$arity = 1); - - Opal.def(self, '$get_pb_urge_table', $ParasiteBlood_get_pb_urge_table$2 = function $$get_pb_urge_table(level, dice, urge_type) { - var self = this, table = nil; - - - table = nil; - if ($truthy($rb_le(urge_type, 1))) { - table = self.$get_pb_normal_urge_table() - } else if ($truthy($rb_le(urge_type, 2))) { - table = self.$get_pb_aas_urge_table() - } else { - table = self.$get_pb_normal_urge_table() - }; - return table['$[]']($rb_minus(level, 1))['$[]']($rb_minus(dice, 2)); - }, $ParasiteBlood_get_pb_urge_table$2.$$arity = 3); - - Opal.def(self, '$get_pb_normal_urge_table', $ParasiteBlood_get_pb_normal_urge_table$3 = function $$get_pb_normal_urge_table() { - var self = this; - - return [["『怒り/20』突然強い怒りに駆られる。最も近い対象を罵倒し、そのターンの終了まで[行動不能]となる。", "『暗闇/20』視神経に悪影響が出て、24時間[暗闇]になる。", "『悲哀/10』突然の悲みに動きが止まる。そのターンの終了まで[行動不能]となる。", "『微笑/10』可笑しくてしょうがない。笑いが止まらず、そのターンの終了まで[行動不能]となる。", "『鈍感/ 0』衝動に気が付かない。影響なし。", "『抑制/ 0』衝動を抑制した。影響なし。", "『我慢/ 0』衝動を我慢した。影響なし。", "『前兆/10』悪魔的特徴が1ターン(10秒)目立つ。〈悪魔化〉時は影響なし。", "『変化/10』利き腕や前脚のみ、2ターン(20秒)かけて〈悪魔化〉する。〈悪魔化〉時は影響なし。", "『拒絶/10』〈悪魔化〉が解除される。通常時は影響なし。", "『定着/20』通常時であれば、即座に〈悪魔化〉する。肉体が〈悪魔化〉に馴染み、24時間通常時に戻れない。"], ["『賛美/20』最も近くの対象を主と思いこむ。1時間または自身か対象が[気絶・戦闘不能・死亡]するまで、対象のあらゆる命令を聞く。", "『茫然/20』思考が停止。そのターンの終了まで[タイミング:攻撃]を行えない。", "『苦痛/20』\"悪魔寄生体\"が体内で暴れる。苦痛を感じ、【エナジー】を10消費。", "『落涙/10』過去の悲しい想い出が去来し、涙が溢れる。そのターンの終了まで[タイミング:準備]を行えない。", "『限界/10』溢れる力が限界を超え、全身の血管が破裂。【エナジー】を5消費。", "『辛抱/10』突如全身が〈悪魔化〉しようとしたが、意思の力で抑制。【エナジー】を5消費。〈悪魔化〉時は影響なし。", "『忍耐/ 0』衝動に耐えた。影響なし。", "『抑制/ 0』衝動を抑制した。影響なし。", "『我慢/ 0』衝動を我慢した。影響なし。", "『嫉妬/10』最も近くの対象に猛烈な嫉妬を感じ、[距離:移動10m/対象:1体]に通常肉弾攻撃を行う。", "『変貌/20』〈悪魔化〉する。その際、特異な外見が目立つ。〈悪魔化〉時は影響なし。"], ["『異貌/20』3ターンかけて、顔のみが〈悪魔化〉する。〈悪魔化〉時は影響なし。", "『解放/20』衝動に耐えきれず3ターンかけて〈悪魔化〉する。〈悪魔化〉時は影響なし。", "『発露/20』全身を駆け抜ける衝動により力が溢れる。次のターンの終了まで、ダメージに+5。", "『渇望/10』攻撃衝動を抑えられない。次のターンの終了まで、命中判定の達成値に+5。", "『絶叫/10』あらん限りの声で叫び、力が増す。次のターンの終了まで、ダメージに+1d。", "『我慢/ 0』衝動を我慢した。影響なし。", "『憤怒/10』全身に怒りが満ちて攻撃力上昇。次のターンの終了まで、ダメージに+1d。", "『加速/10』全身を駆け抜ける衝動により速度上昇。次のターンの終了まで【行動値】が2倍。", "『嫌悪/20』最も近くの対象に嫌悪を感じ、[距離:移動10m/対象:1体]に通常肉弾攻撃を行う。", "『保身/20』突如として防御能力が高まる。次のターンの終了まで、防御力に+5。", "『救済/20』\"悪魔寄生体\"が危機を察知し、【エナジー】を20回復。"], ["『転倒/20』踏み込んだ瞬間、あまりの衝撃に地面をえぐり[転倒]してしまう。", "『脱力/20』急に力が抜ける。そのターンの終了まで、判定の達成値に-5。", "『困惑/20』精神に変調があらわれ、空間認識能力が狂う。次のターンの終了まで、[タイミング:瞬間]の《特殊能力》を行えない。", "『全力/20』激しい躁状態。次のターンの終了まで、命中判定に+10。加えて[タイミング:ターン開始]の《特殊能力》を使用できなくなる。", "『咆吼/10』大声で叫び、意味のある言葉を話せなくなる。1時間持続する。", "『狂気/10』心が狂気に満たされ、強いストレスを感じる。【衝動】を2蓄積させる。", "『本能/20』\"悪魔寄生体\"の生存本能が自我を支配。次のターンの終了まで、ダメージに+5。", "『治癒/20』衝動を1蓄積させ、《肉体修復》を行う。", "『敵意/20』最も近い対象に強い敵意を抱く。[距離:移動10m/対象:1体]に通常肉弾攻撃を行い、クリティカルとなる。", "『自虐/20』自分が許せず自虐行為を行う。【エナジー】を10消費するが、次のターンの終了までダメージに+10。", "『自浄/20』少し我に返る。【衝動】が2回復。"], ["『睡眠/30』猛烈な睡魔に襲われ意識を失う。そのターンの終了まで[気絶]となる。", "『飢餓/30』猛烈な飢餓感。20m以内の最も近い[気絶・戦闘不能・死亡]の対象へ移動し、喰らう。次のターンの終了まで、対象は【エナジー】を1dずつ消費。", "『激怒/20』突如として強い怒りが湧き、周囲が見えなくなる。次のターンの終了まで、[タイミング:瞬間]の《特殊能力》を行えない。", "『顕現/20』利き腕や前脚がさらに外骨格化し、肉体に強い負荷がかかる。【衝動】を3蓄積", "『好機/20』チャンスに本能が素早く反応。即座に[タイミング:攻撃]の行動を1回だけ行える。", "『狂化/20』精神に変調、心が強い狂気で満たされ、自虐行為に走る。【エナジー】を20消費する。", "『混乱/20』精神に変調が現れ、肉体を意のままに動かせない。次のターンの終了まで、判定の達成値に-5。", "『暴君/20』自分が最強に思えてしょうがない。60ターン(10分)の間、【行動値】とダメージに+5。", "『無双/20』達人の感覚が目覚める。60ターン(10分)の間、命中判定と回避判定の達成値に+5。", "『発現/30』通常時であれば、即座に《悪魔化》する。特異な外見が60ターン(10分)目立ち、その間、命中判定とダメージに+5。", "『絶望/30』全身が絶望に満たされ、全てを破壊したくなる。次のターンの終了まで、ダメージに+15。"]] - }, $ParasiteBlood_get_pb_normal_urge_table$3.$$arity = 0); - return (Opal.def(self, '$get_pb_aas_urge_table', $ParasiteBlood_get_pb_aas_urge_table$4 = function $$get_pb_aas_urge_table() { - var self = this; - - return [["『緊急停止/20』機能異常の警報と共に、機能が緊急停止。次のターンのターン終了時まで[行動不能]となる。", "『動作不調/10』駆動系に異常発生。このターンのターン終了まで[行動不能]となる。", "『腕部停止/10』腕部機能に異常発生。このターンのターン終了まで[タイミング:攻撃]を失う。", "『視覚異常/10』センサー系に異常。60ターン(10分)の間、[暗闇]となる。", "『機能制動/0』機能が一瞬停止するが、以後正常に動作。影響なし。", "『機能安定/0』機能がむしろ安定した。影響なし。", "『不良調整/0』機能に違和感を覚えるが誤差の範囲内。影響なし。", "『機能暴発/10』兵装の調子が悪化。次のターンのターン終了まで、[タイミング:準備]の《兵装》が使用できない。", "『離脱機能/10』異常発生。即座に[戦闘移動]を行い、最も近い敵から遠ざかるように移動する。", "『排熱暴走/10』排熱機能に異常。次のターンのターン終了まで[着火]状態となる。特殊ダメージは本人のものを使用する。", "『電装異常/20』電装系に異常。即座に【負荷】が2点蓄積する。"], ["『安全機能/20』セーフティが誤動作。このターンのターン終了まで判定の達成値に-5。", "『筋肉萎縮/20』人工筋肉に異常発生。60ターン(10分)の間、【肉体】判定の達成値に-2。", "『出力低下/20』駆動部に異常発生。60ターン(10分)の間、【機敏】判定の達成値に-2。", "『感覚異常/10』感覚機能に異常発生。60ターン(10分)の間、【感覚】判定の達成値に-2。", "『視界不良/10』視覚機能に異常発生。60ターン(10分)の間、【幸運】判定の達成値に-2。", "『機能安定/0』機能がむしろ安定した。影響なし。", "『不良調整/0』機能に違和感を覚えるが誤差の範囲内。影響なし。", "『援護不通/10』援護ソフトが誤作動。60ターン(10分)の間、【知力】判定の達成値に-2。", "『発声不調/20』通話機能に異常。60ターン(10分)の間、声を出しても雑音だらけになって意味が通じず、さらに【精神】判定の達成値に-2。", "『装甲軟化/20』防御機能に異常。次のターンのターン終了まで、防御力に-5。", "『装備異常/20』精密動作に異常発生。装備している[通常アイテム]の武器がランダムでひとつ、[装備]から外れる。"], ["『動力漏電/20』動力が漏電し始める。【負荷】が2点蓄積する。", "『脚部異常/20』脚部に異常発生。次のターンのターン終了まで[戦闘移動][全力移動]の距離が半分になる。", "『足下転倒/20』バランサーに異常発生。[転倒]状態となる。", "『出力向上/20』突然出力が上昇する。次のターンのターン終了まで、特殊ダメージに+1d。", "『機能制動/10』一瞬違和感を覚えるが、以後正常に動作。影響なし。", "『障壁減衰/10』電力が減衰する。【電力】を5消費する。", "『身体向上/10』格闘機能が向上。次のターンのターン終了まで、肉弾ダメージに+1d。", "『精度向上/20』火器管制機能が向上。次のターンのターン終了まで、射撃ダメージに+1d。", "『反射鋭化/20』反応速度が加速した。次のターンのターン終了まで、【行動値】に+5。", "『友軍誤認/20』警戒装置が誤動。最も近い[距離:移動10m/対象:1体]に通常肉弾攻撃を行う。", "『電子賦活/20』電磁障壁が突如復帰。【電力】が10回復する。"], ["『照準誤認/20』照準機能に異常発生。最も近い[距離:移動10m/対象:1体]に通常肉弾攻撃を行う。判定は自動的にクリティカルとなる。", "『攻撃特化/20』攻撃機能が異常動作。次のターンのターン終了まで、ダメージに+2d。ただし、その間[タイミング:瞬間]を行えない。", "『機内窒息/20』呼吸機能に異常。次のターンのターン終了まで[窒息]状態となる。", "『自動援護/20』援護機能が自動的に作動する。即座に[タイミング:準備]を1回行う。", "『音声遮断/10』聴覚機能に異常発生。次のターンのターン終了まで一切の物音が聞こえず、回避判定の達成値に-5。", "『電流加速/10』突然電磁障壁が効率的に流れる。【電力】が10回復。", "『精密射撃/20』照準機能が向上。60ターン(10分間)の間、ダメージに+5。", "『緊急措置/20』突然、緊急時の対策機能が発動する。【負荷】が2蓄積し、【電力】が20回復する。", "『荷電暴走/20』電流の流れに異常が発生。【HP】を10消費し、次のターンのターン終了までダメージに+10。", "『状況分析/20』周辺解析ソフトが高速で動作。60ターン(10分間)の間、命中判定の達成値に+5。", "『機能再生/20』兵装に誤作動。取得済みの使用不能になった《兵装》を1つ指定し、再び使用できるようになる。"], ["『機能停止/30』機能が作動しなくなる。このターンのターン終了まで、【負荷】を蓄積させる行動が取れなくなる。", "『機関暴走/30』放熱機関が暴走する。本人を中心として[対象:半径5m全て]が次のターンのターン終了まで[着火]状態となる。特殊ダメージはこの表を振ったPCのものを使用する。", "『電力低下/20』出力が上がらない。【電力】が20減少する。", "『急速修復/20』電磁障壁と生命維持装置が高速処理を始める。【HP】が20回復。", "『駆動不調/20』駆動系に動作不良。次のターンのターン終了まで、判定の達成値に-5。", "『機体清冽/20』機能が初期化され、異常から復帰。[気絶・死亡・戦闘不能]以外の状態変化がすべて解除される。", "『機体減速/20』運動機能が暴走。次のターンのターン終了まで【行動値】に-10(最低1)。", "『排毒噴出/20』排気機構が誤作動。[対象:半径5m全て]が次のターンのターン終了まで[猛毒]状態となる。", "『緊急駆動/20』機動性が向上。次のターンのターン終了まで判定の達成値に+5。", "『負荷軽減/30』急激に負荷が解消される。【負荷】が2点回復する。", "『出力過剰/30』全出力が過剰なまでに上昇する。次のターンのターン終了までダメージに+10。"]] - }, $ParasiteBlood_get_pb_aas_urge_table$4.$$arity = 0), nil) && 'get_pb_aas_urge_table'; - })($nesting[0], $$($nesting, 'DemonParasite'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Pathfinder.js b/src/assets/dicebot/Pathfinder.js deleted file mode 100644 index 7c3f6fdb2..000000000 --- a/src/assets/dicebot/Pathfinder.js +++ /dev/null @@ -1,36 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/DungeonsAndDragons"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; - - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DungeonsAndDragons'); - - var $nesting = [self].concat($parent_nesting); - - - Opal.const_set($nesting[0], 'ID', "DungeonsAndDragons"); - Opal.const_set($nesting[0], 'NAME', "ダンジョンズ&ドラゴンズ"); - Opal.const_set($nesting[0], 'SORT_KEY', "たんしよんすあんととらこんす"); - return Opal.const_set($nesting[0], 'HELP_MESSAGE', "※このダイスボットは部屋のシステム名表示用となります。\n"); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; - - Opal.add_stubs(['$require']); - - self.$require("diceBot/DungeonsAndDragons"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Pathfinder'); - - var $nesting = [self].concat($parent_nesting); - - - Opal.const_set($nesting[0], 'ID', "Pathfinder"); - Opal.const_set($nesting[0], 'NAME', "Pathfinder"); - Opal.const_set($nesting[0], 'SORT_KEY', "はすふあいんたあ"); - return Opal.const_set($nesting[0], 'HELP_MESSAGE', "※このダイスボットは部屋のシステム名表示用となります。\n"); - })($nesting[0], $$($nesting, 'DungeonsAndDragons'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Peekaboo.js b/src/assets/dicebot/Peekaboo.js deleted file mode 100644 index ffdef8245..000000000 --- a/src/assets/dicebot/Peekaboo.js +++ /dev/null @@ -1,88 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$==', '$<=', '$>=', '$upcase', '$===', '$getRandomSkillTableResult', '$getTableCommandResult', '$get_table_by_1d6', '$get_table_by_2d6', '$freeze', '$setPrefixes', '$+', '$keys']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Peekaboo'); - - var $nesting = [self].concat($parent_nesting), $Peekaboo_initialize$1, $Peekaboo_check_2D6$2, $Peekaboo_rollDiceCommand$3, $Peekaboo_getRandomSkillTableResult$4; - - - Opal.const_set($nesting[0], 'ID', "Peekaboo"); - Opal.const_set($nesting[0], 'NAME', "ピーカーブー"); - Opal.const_set($nesting[0], 'SORT_KEY', "ひいかあふう"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + " 判定時にクリティカルとファンブルを自動判定します。\n" + "・各種表\n" + " ・学校イベント表        SET\n" + " ・個別学校イベント表      PSET\n" + " ・オバケ屋敷イベント表     OET\n" + " ・イノセント用バタンキュー!表 IBT\n" + " ・スプーキー用バタンキュー!表 SBT\n" + " ・日中ブラブラ表        NET\n" + " ・オバケぶらり旅表       STT\n" + " ・仲間効果表          NST\n" + " ・ランダム特技決定表      RTT\n" + " ・指定特技(不良)表       TNT\n" + " ・指定特技(運動)表       TET\n" + " ・指定特技(友達)表       TFT\n" + " ・指定特技(遊び)表       TPT\n" + " ・指定特技(勉強)表       TST\n" + " ・指定特技(大人)表       TAT\n" + "・D66ダイスあり\n"); - - Opal.def(self, '$initialize', $Peekaboo_initialize$1 = function $$initialize() { - var $iter = $Peekaboo_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Peekaboo_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Peekaboo_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - self.d66Type = 2; - return (self.fractionType = "roundUp"); - }, $Peekaboo_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $Peekaboo_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル(【眠気】が1d6点上昇)" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > スペシャル(【魔力】あるいは【眠気】が1d6点回復)" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $Peekaboo_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $Peekaboo_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var self = this, string = nil, $case = nil; - - - string = command.$upcase(); - $case = string; - if ("RTT"['$===']($case)) {return self.$getRandomSkillTableResult(command)}; - return self.$getTableCommandResult(command, $$($nesting, 'TABLES')); - }, $Peekaboo_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$getRandomSkillTableResult', $Peekaboo_getRandomSkillTableResult$4 = function $$getRandomSkillTableResult(_command) { - var $a, $b, self = this, name = nil, skillTableFull = nil, skillTable = nil, total_n = nil, tableName = nil, skill = nil, total_n2 = nil, output = nil; - - - name = "ランダム"; - skillTableFull = [["不良", ["夜更かし", "いねむり", "無視", "ウソつき", "悪口", "いたずら", "ズル", "隠れる", "ぬすむ", "おどす", "けんか"]], ["運動", ["泳ぐ", "木登り", "柔らかい", "マラソン", "とぶ", "かけっこ", "バランス", "投げる", "球技", "打ち返す", "力持ち"]], ["友達", ["ネット", "うわさ話", "優しさ", "がまん", "お手紙", "おしゃべり", "自転車", "勇気", "約束", "仕切る", "秘密基地"]], ["遊び", ["パソコン", "ゲーム", "集める", "絵", "音楽", "空想", "読書", "お話づくり", "クイズ", "手品", "占い"]], ["勉強", ["実験", "宇宙", "生き物", "工作", "計算", "宿題", "漢字", "作文", "歴史", "地理", "外国語"]], ["大人", ["法律", "しかる", "手当て", "マナー", "推理", "計画性", "お料理", "お買い物", "オシャレ", "恋愛", "道楽"]]]; - $b = self.$get_table_by_1d6(skillTableFull), $a = Opal.to_ary($b), (skillTable = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b; - $b = skillTable, $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (skillTable = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_2d6(skillTable), $a = Opal.to_ary($b), (skill = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b; - output = "" + (name) + "指定特技表(" + (total_n) + "," + (total_n2) + ") > 《" + (skill) + "/" + (tableName) + (total_n2) + "》"; - return output; - }, $Peekaboo_getRandomSkillTableResult$4.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["SET", "PSET", "OET", "NET", "IBT", "SBT", "TNT", "TET", "TFT", "TPT", "TST", "TAT", "STT", "SAT", "NST"], {"SET": $hash2(["name", "type", "table"], {"name": "学校イベント表", "type": "2D6", "table": "" + "持ち物検査が行われる!イノセント全員は、《隠れる/不良9》の判定を行うこと。失敗したキャラクターは、GMがアイテム1個を選んで没収することができる(セッション終了時に返してもらえる)\n" + "クラスで流行っている遊びに誘われる。GMは、「遊び」の分野の中からランダムに特技一つを選ぶ。イノセント全員は、その判定を行う。失敗したキャラクターは、【眠気】が1d6点増える。\n" + "とても退屈な授業が始まった。イノセント全員は、《いねむり/不良3》の判定を行う。失敗したキャラクターは、【眠気】が1d6+1点増える。\n" + "明日までの宿題を出される。イノセント全員は、明日までに宿題を終わらせないといけない。宿題を終わらせるためには、各サイクルの終わりに、《宿題/勉強7》の判定を行い、それに成功しなければいけない。宿題を次の日の学校フェイズまでに終わらせることができなかった場合は、居残り勉強させられる。その日の放課後フェイズの最初のサイクルは、1回休み。\n" + "今日も今日とて楽しい授業。GMは、「勉強」の分野の中からランダムに特技1つを選ぶ。イノセント全員は、その判定を行う。失敗したキャラクターは【眠気】が1d6点増える。\n" + "特に変わったこともなく、おだやかな一日だった。イノセント全員は、【眠気】が1点増える。\n" + "今日の体育の時間はハードだった! GMは、「運動」の分野の中からランダムに特技1つを選ぶ。イノセント全員は、その判定を行う。失敗したキャラクターは、【眠気】が1d6点増える。\n" + "自習の時間だ!GMは、「勉強」の分野の中からランダムに特技1つを選ぶ。イノセント全員は、その判定を行う。成功したキャラクターは、1回だけ自由行動ができる。\n" + "抜き打ちテストだ!GMは、「勉強」の分野の中からランダムに特技1つを選ぶ。イノセント全員は、-2の修正をつけて、その特技の判定を行う。成功したキャラクターはよい点をゲット!家にかえってそれを親に見せるとおこづかいを1個もらえる。失敗したキャラクターは、親にこっぴどく怒られ、【眠気】が1d6点増えるうえに、それ以降「みんなで遊ぶ」ことが出来なくなる。\n" + "体操服や水着、宿題に提出物などなど、今日は学校に持ってこないといけないものがあったはず!《計画性/大人7》で判定を行う。失敗すると、先生に怒られてしょんぼり。【眠気】が1d6点増える。\n" + "それぞれに色々なことがあった。イノセントは、各自1回ずつ2d6を振り、個別学校イベント表の指示に従うこと。\n"}), "PSET": $hash2(["name", "type", "table"], {"name": "個別学校イベント表", "type": "2D6", "table": "" + "クラスの中に気になるコが現れる。《恋愛/大人11》の判定を行う。成功すると、その子と仲良くなって経験値を1点獲得する。\n" + "お腹の調子が悪くなり、トイレに行きたくなる。《がまん/友達5》か《隠れる/不良9》の判定を行うこと。失敗すると、不名誉なあだ名をつけられ、それ以降、「友達」の分野の判定に-1の修正を受ける。\n" + "今日の給食には、どうしても苦手な食べ物が出てきた。《勇気/友達9》で判定を行うこと。成功すると、苦手な食べ物を克服し、気分爽快!【眠気】を1d6点回復するか、【元気】を1点回復することができる。\n" + "友達から遊ぼうと誘われる。その日の放課後フェイズに、クラスメイト1d6人と「みんなで遊ぶ」ことができる。これを断る場合は、《優しさ/友達4》で判定を行うこと。失敗するとこれ以降、「みんなで遊ぶ」を行うとき、友達を誘うことが出来なくなる。\n" + "今日はクラブ活動があった。次のサイクルは行動できなくなる。その代わり、好きな特技1つを選ぶ。このセッションの間、その特技の判定を行うとき+1の修正がつく。\n" + "授業中、先生がとても難しい問題を出してくる。GMは、「勉強」の分野からランダムに特技を1つ選ぶ。その判定を行うこと。成功すると、経験値を1点獲得する。\n" + "クラスでオバケの噂を耳にする。《うわさ話/友達3》の判定に成功すると、GMからそのセッションで出てくるオバケの外見や情報を教えてもらうことができる。\n" + "校庭や体育館など、自分達の遊び場が他のグループに占拠されている。《けんか/不良12》で判定を行うこと。成功すると、それ以降「友達」の分野の判定に+1の修正を受ける。失敗すると遊び場を失ってしまう。1ダメージを受け、それ以降、「友達と遊ぶ」ことができなくなってしまう。\n" + "いじめの現場に出くわす! 《勇気/友達10》の判定に成功すると、いじめっこを撃退することができる。いじめられていた子が、お礼にお菓子を1個くれる。失敗すると1点のダメージを受ける。\n" + "今日は全校集会があった。《がまん/友達5》で判定を行う。失敗すると貧血で倒れ次のサイクルは行動できなくなる。\n" + "図書室で面白そうな本を発見する。《読書/遊び8》で判定を行うこと。成功すると、経験値を1点獲得する。\n"}), "OET": $hash2(["name", "type", "table"], {"name": "お化け屋敷イベント表", "type": "2D6", "table": "" + "謎かけ守護者が門を護っている。未行動のキャラクターは、《クイズ/遊び10》の判定を行うことができる。判定したキャラクターは行動済みになる。失敗したキャラクターは、1点のダメージを受ける。誰かが成功すれば、イベントはクリアできる。\n" + "天井から血の雨が降ってくる! この雨に触れると火傷しちゃうみたいだ!【防御力】が0のスプーキーとイノセントは、《かけっこ/運動7》の判定を行う。失敗すると、イノセントは1ダメージ、スプーキーは1d6ダメージを受ける。成功・失敗にかかわらず、イベントはクリアできる。\n" + "トンガリ族の妖精がいる。彼は、先へ行くための通行料として、アイテムを要求してくる。何か好きなアイテム1個を渡すか、未行動のキャラクターは、《お話づくり/遊び9》の判定を行うことができる。判定したキャラクターは行動済みになる。誰かが判定に成功するか、アイテムを渡すかしたら、イベントはクリアできる。\n" + "行き止まりだ。先に進む方法が分からない。未行動のキャラクターは、《推理/大人6》の判定を行うことができる。判定したキャラクターは行動済みになる。誰かが成功したら、イベントはクリアできる。\n" + "まっくらで、何も見えない部屋だ。一行は不安におちいる。未行動のキャラクターは、《仕切る/友達11》の判定を行うことができる。判定したキャラクターは行動済みになる。誰かが成功すれば、イベントはクリアできる。\n" + "ジメジメした通路だ。特に何もしなくても、イベントはクリアだ。誰かがのぞむなら、自由行動を1回行うことができるぞ。\n" + "通路が途中で途切れて崖のようになっている。誰かが飛ぶことが出来れば、向こう岸にあるはしごを断崖にかけられそうだけど……。未行動のキャラクターは、《とぶ/運動6》の判定を行うことができる。判定したキャラクターは行動済みになる。誰かが成功すれば、イベントはクリアできる。\n" + "まぼろしの部屋だ。各キャラクターの大好物のまぼろしがつぎつぎ現れる。未行動のキャラクターは、《がまん/友達5》の判定を行うことができる。判定したキャラクターは行動済みになる。誰かが成功したら、イベントはクリアできる。\n" + "通路がいくつにも分岐している……。未行動のキャラクターのうち1人が《地理/勉強11》、もしくは《絵/遊び5》の判定を行う。判定したキャラクターは行動済みになる。失敗すると、そのオバケ屋敷の部屋数が1d6点上昇する。成功失敗にかかわらず、イベントはクリアできる。\n" + "シャドウが見回りをしている。未行動のキャラクターのうち1人が、《隠れる/不良9》の判定を行う。成功すれば、イベントはクリアできる。失敗すると、プレイヤーと同じ人数のシャドウと戦闘を行うこと。勝利すればイベントはクリアできる。\n" + "足下からシャドウが現れ、みんなに襲いかかる!プレイヤーと同じ人数のシャドウと戦闘を行うこと。勝利すればイベントはクリアできる。\n"}), "NET": $hash2(["name", "type", "table"], {"name": "日中ブラブラ表", "type": "2D6", "table": "" + "相棒のスプーキーと喧嘩する。1d6サイクルの間、自分の相棒のスプーキーは、自分に対して【お助け力】を使用することができなくなる。\n" + "ついついネットやゲームで時間をつぶす。特に何もなし。。\n" + "街をブラブラしていたら、突然シッポ族のオバケに襲われる。「お前、大人のくせに俺が見えるのか?」GMは「運動」の分野の中から、ランダムに特技を1つ選ぶ。この表の使用者は、その判定を行う。成功したら、オバケに気に入られ、セッション中、好きな時に一度だけ、シッポ族の魔法をかけてもらうことができるようになる。失敗すると1点のダメージを受ける。\n" + "…暇だ。たまには、タメになりそうな本でも読んでみるか。GMは「勉強」の分野の中から、ランダムに特技1つを選ぶ。この表の使用者はその判定を行う。成功したら、セッション中、好きな時に一度だけ、判定を自動的に成功することができるようになる。失敗すると退屈のあまり【眠気】が1d6点上昇する。\n" + "ああ、まずい。会いたくないヤツに会っちまったなぁ。どうやって誤魔化そう?GMは「不良」の分野の中から、ランダムに特技1つを選ぶ。この表の使用者は、その判定を行う。成功したら、うまく誤魔化してそのシナリオに登場するハグレオバケの噂を手に入れることができる。失敗するとお説教をくらって【眠気】が1d6点上昇する。\n" + "ふわわわわ。眠いなぁ。……寝るか。【眠気】を2d6点回復する。\n" + "うーん。腹減った。何か食べたいけど……。GMは「大人」の分野の中から、ランダムに特技を1つ選ぶ。この表の使用者はその判定を行う。成功したら、【お菓子】を1d6個手に入れる。失敗すると、持っていれば【おこづかい】を一個減らす。\n" + "うーん。そうだ。あいつに連絡してみるか……。GMは「友達」分野の中からランダムに特技1つを選ぶ。この表の使用者は、その判定を行う。成功したら友達の力を借りて、それ以降の自分の手番に二回行動することができるようになる。失敗すると、誰にも捕まらず、寂しさのあまり【眠気】が1d6点上昇する。\n" + "臨時のバイト。久々の労働だ。GMは「遊び」の分野の中から、ランダムに特技を1つ選ぶ。この表の使用者は、その判定を行う。成功したら、【おこづかい】を1つ獲得できる。失敗すると【眠気】が1d6点上昇する。\n" + "あ、これ欲しかったんだよな。つい無駄な買い物をしてしまう。持っていれば【おこづかい】を一個減らす。\n" + "相棒のスプーキーと、素敵な時間を過ごす。そのセッションの間だけ、「武装契約」「守護契約」「強化契約」「同調契約」のいずれか一つを結ぶことができる。\n"}), "IBT": $hash2(["name", "type", "table"], {"name": "イノセント用バタンキュー!表", "type": "1D6", "table": "" + "悲しい別れ。病院につれていくことができれば、1d6日入院したあとに目覚めます。その間は、行動不能です。目覚めたときに【眠気】も【元気】もすべて回復しますが、スプーキーを見ることができなくなっています。そのキャラクターはスプーキーと一緒に冒険を続けることはできません……。\n" + "大けがをして昏睡状態。病院につれていくことができれば、1d6日入院したあとに目覚めます。その間は、行動不能です。目覚めたときに【眠気】はすべて回復し、【元気】が3点回復します。\n" + "気絶しちゃった! 1d6サイクル後に目覚めます。気絶している間は、行動不能です。目覚めたときに【眠気】が1d6点、【元気】が1点回復します。\n" + "体が動かない! 何かを見たり、話したりといった簡単な行動ならできますが、自由行動や戦闘行動といった通常の行動は行えません。1d6サイクル後に【元気】が1点回復し、通常通り行動できるようになります。\n" + "かろうじて意識はあるものの、朦朧としてきた。【眠気】が2d6点増えます。それで行動不能になっていなければ、【元気】が1点回復します。そうでなければ、気絶してしまい、1d6サイクル後に目覚めます。気絶している間は、行動不能です。目覚めたときに【眠気】が1d6点減少し、【元気】が1点回復します。\n" + "なんという幸運!アイテムがキミを護ってくれた。もし持ち物にアイテムがあった場合、それが1個破壊され、受けたダメージを無効化します。アイテムがなければ行動不能になります。\n"}), "SBT": $hash2(["name", "type", "table"], {"name": "スプーキー用バタンキュー!表", "type": "1D6", "table": "" + "封印状態! オバケは封印されてしまいます。1d6*1年後になれば、そのオバケは復活します。それまでは、イノセントと一緒に冒険することはできません。できたとしても、そのときイノセントはあなたを見ることができなくなっているかもしれませんが……。\n" + "休眠状態! オバケは休眠状態になります。1d6日が経過すると目覚めます。その間は、行動不能です。目覚めたときに【魔力】はすべて回復しています。\n" + "コバケ状態! 体は小さく縮んてしまい、重戦闘も戦闘行動も行うことはできません。【魔力】が1点以上になると、通常通り行動できるようになります。\n" + "混沌変化! 自分のリングのからだリストを使って、ランダムにからだを1つ選びます。自分のからだが、それに変化します。1d6サイクルの間、行動不能になります。その後、【魔力】が1d6点回復して通常通り行動できるようになります。\n" + "魔力変質! 自分のリングの衣装リストを使って、ランダムに衣装を1つ選びます。自分の衣装1つが、それに変化します。そして、1d6サイクルの間、行動不能になります。その後、【魔力】が1d6点回復して通常通り行動できるようになります。\n" + "魔法暴発! 自分の持っている魔法をランダムに1つ選んで、その効果が発動します。魔法の対象が選べる場合は、スプーキーのプレイヤーが選んで構いません。そして、1d6サイクルの間、行動不能になります。その後、【魔力】が1d6点回復して通常通り行動できるようになります。\n"}), "TNT": $hash2(["name", "type", "table"], {"name": "指定特技(不良)表", "type": "2D6", "table": "" + "《夜更かし/不良2》\n" + "《いねむり/不良3》\n" + "《無視/不良4》\n" + "《ウソつき/不良5》\n" + "《悪口/不良6》\n" + "《いたずら/不良7》\n" + "《ズル/不良8》\n" + "《隠れる/不良9》\n" + "《ぬすむ/不良10》\n" + "《おどす/不良11》\n" + "《けんか/不良12》\n"}), "TET": $hash2(["name", "type", "table"], {"name": "指定特技(運動)表", "type": "2D6", "table": "" + "《泳ぐ/運動2》\n" + "《木登り/運動3》\n" + "《柔らかい/運動4》\n" + "《マラソン/運動5》\n" + "《とぶ/運動6》\n" + "《かけっこ/運動7》\n" + "《バランス/運動8》\n" + "《投げる/運動9》\n" + "《球技/運動10》\n" + "《打ち返す/運動11》\n" + "《力持ち/運動12》\n"}), "TFT": $hash2(["name", "type", "table"], {"name": "指定特技(友達)表", "type": "2D6", "table": "" + "《ネット/友達2》\n" + "《うわさ話/友達3》\n" + "《優しさ/友達4》\n" + "《がまん/友達5》\n" + "《お手紙/友達6》\n" + "《おしゃべり/友達7》\n" + "《自転車/友達8》\n" + "《勇気/友達9》\n" + "《約束/友達10》\n" + "《仕切る/友達11》\n" + "《秘密基地/友達12》\n"}), "TPT": $hash2(["name", "type", "table"], {"name": "指定特技(遊び)表", "type": "2D6", "table": "" + "《パソコン/遊び2》\n" + "《ゲーム/遊び3》\n" + "《集める/遊び4》\n" + "《絵/遊び5》\n" + "《音楽/遊び6》\n" + "《空想/遊び7》\n" + "《読書/遊び8》\n" + "《お話づくり/遊び9》\n" + "《クイズ/遊び10》\n" + "《手品/遊び11》\n" + "《占い/遊び12》\n"}), "TST": $hash2(["name", "type", "table"], {"name": "指定特技(勉強)表", "type": "2D6", "table": "" + "《実験/勉強2》\n" + "《宇宙/勉強3》\n" + "《生き物/勉強4》\n" + "《工作/勉強5》\n" + "《計算/勉強6》\n" + "《宿題/勉強7》\n" + "《漢字/勉強8》\n" + "《作文/勉強9》\n" + "《歴史/勉強10》\n" + "《地理/勉強11》\n" + "《外国語/勉強12》\n"}), "TAT": $hash2(["name", "type", "table"], {"name": "指定特技(大人)表", "type": "2D6", "table": "" + "《法律/大人2》\n" + "《しかる/大人3》\n" + "《手当て/大人4》\n" + "《マナー/大人5》\n" + "《推理/大人6》\n" + "《計画性/大人7》\n" + "《お料理/大人8》\n" + "《お買い物/大人9》\n" + "《オシャレ/大人10》\n" + "《恋愛/大人11》\n" + "《道楽/大人12》\n"}), "STT": $hash2(["name", "type", "table"], {"name": "オバケぶらり旅表", "type": "2D6", "table": "" + "オバケ狩りに遭遇してしまいますオバケ判定を行ってください。失敗すると2d6点のダメージを受けます。\n" + "リングの上司からレポートを提出しろといわれます。セッション終了に、今回の暴言がどんな話だったかをまとめ、GMに報告してください。GMが、その報告がうまくまとまっていると感じたら、そのスプーキーとイノセントのコンビがもらえる経験点が1点上昇します。\n" + "近所のお家に忍び込み、めぼしいものを探しました。オバケ判定を行ってください。成功すると、ルールブック228頁に書いてあるアイテム表を使ってランダムで決めたアイテム1個を入手します。\n" + "街の優しいおばけたちに頼まれます。そのシナリオに登場するはぐれオバケを説得し、悪事をやめさせることができれば、そのスプーキーとイノセントのコンビがもらえる経験点が1点上昇します。\n" + "オバケたちとギャンブルに興じます♪好きなだけ【魔力】を減少してください。サイコロを1個振ります。奇数が出たらギャンブルに勝利!減少した【魔力】の2倍の値だけ魔力が回復します。偶数が出たらギャンブルに敗北(しょぼん)。減少した魔力はかえってきません。\n" + "オバケたちのウワサを耳にします。GMは、シナリオ上で重要な情報を1つ選んで下さい。その情報を入手することができます。\n" + "人間について学習します。オバケ判定を行って下さい。成功すると、ランダムに好きな特技を1つ選びます。そのゲームの間、その特技を習得しているものとして、行為判定を行うことができるようになります。\n" + "リングのオバケ学校で再修行。自分の魔法1つを未取得にします。そして、共用か自分のリングの魔法リストから、ランダムに魔法を1つ選び、新たに修得します。\n" + "突如、誰かの役に立ちたいと思いました。このセッションが終わるまでに、そのスプーキーとイノセントのコンビに対して、5人以上のキャラクターが「ありがとう」と言ったら、コンビのもらえる経験点が1点上昇します。\n" + "道端で拾ったものがオバケ市場で売れました。ラッキー♪お小遣いを1つ入手できます。\n" + "オバケ狩りから身を隠すために変装します。自分の衣装1つを未取得にします。そして、共用か自分のリングの衣装から、ランダムに衣装を1つ選び、新たに修得します。\n"}), "SAT": $hash2(["name", "type", "table"], {"name": "オバケ行動表", "type": "2D6", "table": "" + "「えー。お前なんか嫌いだ!」スプーキーは、イノセントとけんかしてしまいます。そのサイクルは行動せず、【魔力】も回復しません。\n" + "「疲れたよーん」スプーキーは、行動をパスして【魔力】を回復します。\n" + "「ムムム。気になる、気になるぞー」スプーキーは、戦闘フェイズなら「ひみつを暴く」を行います。それ以外なら「オバケ占い」を行います。\n" + "「やっぱ定番はこうでしょう」スプーキーは、戦闘フェイズなら「攻撃」を行います。それ以外なら「調査」を行います。\n" + "「オバケ的にはどう思う?」スプーキーは、ほかのスプーキーのいうことをききます。\n" + "「うん、そうするー」スプーキーは自分の契約しているイノセントのいうことをききます。\n" + "「うーん。そうかなぁ?」スプーキーは、ほかのイノセントのいうことをききます。\n" + "「トリック・オア・トリート!」スプーキーは、何かのアイテム(お菓子やおこづかいが適当でしょう)をもらえたら、イノセントのいうことをききます。もらったアイテムは、即座に消費されます。\n" + "「ここは派手にいきたいぜ!」スプーキーは、自分の修得している魔法をランダムに1個選んで、それを使用します。対象を決める場合は、自由に選んで構いません。\n" + "「ここは様子見だなぁ」スプーキーは、行動をパスして【魔力】を回復します。\n" + "「こうなりゃ本気モードだ!」スプーキーは自分の契約しているイノセントのいうことをききます。また、そのサイクルの間、そのスプーキーは魔力の消費なしで、魔法を使用することができます。\n"}), "NST": $hash2(["name", "type", "table"], {"name": "仲間効果表", "type": "1D6", "table": "" + "用心棒。この仲間の効果は、誰かがダメージを受けた時に使用できる。そのダメージを無効化する。\n" + "パトロン。この仲間の効果は、好きな時に使用できる。【おこづかい】一つか、ランダムに選んだアイテム一つを獲得できる。\n" + "助言。この仲間の効果は、誰かが判定を行うときに使用できる。そのNPCが人間の場合、その判定に使う特技が、そのNPCが修得している特技なら、自動的に成功になる。そのNPCがオバケの場合、その判定にプラス2かマイナス2の修正をつけることができる。\n" + "師匠。この仲間の効果は、好きな時に使用できる。そのNPCが人間の場合、ランダムに選んだ才能を一つ獲得する。この効果は、その日の終りまで持続する。そのNPCがオバケの場合、そのオバケが修得している好きな魔法を一つ使用する。\n" + "時間稼ぎ。好きな行動済みのキャラクター1人を未行動にしてくれる。\n" + "乱入行動。自分が攻撃に成功した時に使用できる。そのダメージを1d6点上昇してくれる。\n"})}).$freeze()); - return self.$setPrefixes($rb_plus(["RTT"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Pendragon.js b/src/assets/dicebot/Pendragon.js deleted file mode 100644 index f89107045..000000000 --- a/src/assets/dicebot/Pendragon.js +++ /dev/null @@ -1,48 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$<=', '$>=', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Pendragon'); - - var $nesting = [self].concat($parent_nesting), $Pendragon_check_1D20$1; - - - Opal.const_set($nesting[0], 'ID', "Pendragon"); - Opal.const_set($nesting[0], 'NAME', "ペンドラゴン"); - Opal.const_set($nesting[0], 'SORT_KEY', "へんとらこん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "クリティカル、成功、失敗、ファンブルの自動判定を行います。\n"); - return (Opal.def(self, '$check_1D20', $Pendragon_check_1D20$1 = function $$check_1D20(total, _dice_total, cmp_op, target) { - var $a, self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return "" - }; - if ($truthy($rb_le(total, target))) { - if ($truthy(($truthy($a = $rb_ge(total, $rb_minus(40, target))) ? $a : total['$=='](target)))) { - return " > クリティカル" - } else { - return " > 成功" - } - } else if (total['$=='](20)) { - return " > ファンブル" - } else { - return " > 失敗" - }; - }, $Pendragon_check_1D20$1.$$arity = 4), nil) && 'check_1D20'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/PhantasmAdventure.js b/src/assets/dicebot/PhantasmAdventure.js deleted file mode 100644 index 8d7faba01..000000000 --- a/src/assets/dicebot/PhantasmAdventure.js +++ /dev/null @@ -1,105 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$<', '$-', '$>', '$+', '$roll', '$>=', '$<=', '$sendMode', '$to_s', '$*']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'PhantasmAdventure'); - - var $nesting = [self].concat($parent_nesting), $PhantasmAdventure_initialize$1, $PhantasmAdventure_check_1D20$2; - - - Opal.const_set($nesting[0], 'ID', "PhantasmAdventure"); - Opal.const_set($nesting[0], 'NAME', "ファンタズム・アドベンチャー"); - Opal.const_set($nesting[0], 'SORT_KEY', "ふあんたすむあとへんちやあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "成功、失敗、決定的成功、決定的失敗の表示とクリティカル・ファンブル値計算の実装。\n"); - - Opal.def(self, '$initialize', $PhantasmAdventure_initialize$1 = function $$initialize() { - var $iter = $PhantasmAdventure_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $PhantasmAdventure_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $PhantasmAdventure_initialize$1, false), $zuper, $iter); - return (self.sendMode = 2); - }, $PhantasmAdventure_initialize$1.$$arity = 0); - return (Opal.def(self, '$check_1D20', $PhantasmAdventure_check_1D20$2 = function $$check_1D20(total, _dice_total, cmp_op, diff) { - var $a, $b, self = this, skill_mod = nil, fumble = nil, critical = nil, dice_now = nil, fum_num = nil, fum_str = nil, crit_num = nil; - - - if (diff['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return "" - }; - skill_mod = 0; - if ($truthy($rb_lt(diff, 1))) { - skill_mod = $rb_minus(diff, 1) - } else if ($truthy($rb_gt(diff, 20))) { - skill_mod = $rb_minus(diff, 20)}; - fumble = $rb_plus(20, skill_mod); - if ($truthy($rb_gt(fumble, 20))) { - fumble = 20}; - critical = $rb_plus(1, skill_mod); - $b = self.$roll(1, 20), $a = Opal.to_ary($b), (dice_now = ($a[0] == null ? nil : $a[0])), $b; - if ($truthy(($truthy($a = $rb_ge(total, fumble)) ? $a : $rb_ge(total, 20)))) { - - fum_num = $rb_minus(dice_now, skill_mod); - if ($truthy($rb_gt(fum_num, 20))) { - fum_num = 20}; - if ($truthy($rb_lt(fum_num, 1))) { - fum_num = 1}; - if ($truthy($rb_le(self.$sendMode(), 1))) { - return "" + " > 致命的失敗(" + (fum_num) + ")"}; - fum_str = dice_now.$to_s(); - if ($truthy($rb_lt(skill_mod, 0))) { - fum_str = $rb_plus(fum_str, "" + "+" + ($rb_times(skill_mod, -1)) + "=" + (fum_num)) - } else { - fum_str = $rb_plus(fum_str, "" + "-" + (skill_mod) + "=" + (fum_num)) - }; - return "" + " > 致命的失敗(" + (fum_str) + ")"; - } else if ($truthy(($truthy($a = $rb_le(total, critical)) ? $a : $rb_le(total, 1)))) { - - crit_num = $rb_plus(dice_now, skill_mod); - if ($truthy($rb_gt(crit_num, 20))) { - crit_num = 20}; - if ($truthy($rb_lt(crit_num, 1))) { - crit_num = 1}; - if ($truthy($rb_lt(skill_mod, 0))) { - return " > 成功"}; - if ($truthy($rb_gt(self.$sendMode(), 1))) { - return "" + " > 決定的成功(" + (dice_now) + "+" + (skill_mod) + "=" + (crit_num) + ")"}; - return "" + " > 決定的成功(" + (crit_num) + ")"; - } else if ($truthy($rb_le(total, diff))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $PhantasmAdventure_check_1D20$2.$$arity = 4), nil) && 'check_1D20'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Postman.js b/src/assets/dicebot/Postman.js deleted file mode 100644 index 007d2808f..000000000 --- a/src/assets/dicebot/Postman.js +++ /dev/null @@ -1,174 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$upcase', '$===', '$to_i', '$last_match', '$<', '$scan', '$each', '$+', '$!=', '$checkRoll', '$get_weather_table', '$get_free_situation_table', '$roll', '$collect', '$split', '$[]', '$count', '$==', '$>', '$to_s', '$>=', '$get_table_by_number']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Postman'); - - var $nesting = [self].concat($parent_nesting), $Postman_initialize$1, $Postman_rollDiceCommand$2, $Postman_checkRoll$5, $Postman_get_weather_table$8, $Postman_get_free_situation_table$9; - - self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "Postman"); - Opal.const_set($nesting[0], 'NAME', "壊れた世界のポストマン"); - Opal.const_set($nesting[0], 'SORT_KEY', "こわれたせかいのほすとまん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "◆判定:[n]PO[+-a][> or >= or @X]  []内省略可。\n" + "\n" + "達成値と判定の成否、クリティカル、ファンブルを結果表示します。\n" + "「n」でダイス数を指定。省略時は2D。\n" + "「+-a」で達成値への修正を指定。「+2+1-4」のような複数回指定可。\n" + "「>X」「>=X」「@X」で難易度を指定可。\n" + "「>X」は達成値>難易度、「>=X」「@X」は達成値>=難易度で判定します。\n" + "\n" + "【書式例】\n" + "3PO+2-1 → 3Dで達成値修正+1の判定。達成値のみ表示。\n" + "PO@5+2 → 2Dで目標値7の判定。判定の成否と達成値を表示。\n" + "4PO-2+1>7+2 → 4Dで達成値修正-1、目標値9(同値は失敗)の判定。\n" + "\n" + "\n" + "◆天候チェック:WEA[n]  []内省略可。\n" + "\n" + "天候チェック表を参照します。\n" + "「n」を指定すると、指定した結果を表示します。(【幸運点】使用時用)\n" + "\n" + "\n" + "◆自由行動シチュエーション表:FRE\n"); - self.$setPrefixes(["WEA\\d*", "(\\d+)?PO.*", "FRE"]); - - Opal.def(self, '$initialize', $Postman_initialize$1 = function $$initialize() { - var $iter = $Postman_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Postman_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Postman_initialize$1, false), $zuper, $iter); - return (self.sortType = 1); - }, $Postman_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Postman_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, $$3, $$4, self = this, text = nil, $case = nil, diceCount = nil, modify = nil, modifyAddString = nil, type = nil, target = nil, targetAddString = nil, modify_list = nil, target_list = nil, roc = nil; - - - text = (function() {$case = command.$upcase(); - if (/(\d+)?PO(\d+)?(([+-]\d+)*)?((>|>=|@)(\d+)(([+-]\d+)*)?)?/i['$===']($case)) { - diceCount = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 2).$to_i(); - if ($truthy($rb_lt(diceCount, 2))) { - diceCount = 2}; - modify = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : 0).$to_i(); - modifyAddString = ($truthy($a = $$($nesting, 'Regexp').$last_match(3)) ? $a : ""); - type = ($truthy($a = $$($nesting, 'Regexp').$last_match(6)) ? $a : ""); - target = ($truthy($a = $$($nesting, 'Regexp').$last_match(7)) ? $a : 0).$to_i(); - targetAddString = ($truthy($a = $$($nesting, 'Regexp').$last_match(8)) ? $a : ""); - modify_list = modifyAddString.$scan(/[+-]\d+/); - $send(modify_list, 'each', [], ($$3 = function(i){var self = $$3.$$s || this; - - - - if (i == null) { - i = nil; - }; - return (modify = $rb_plus(modify, i.$to_i()));}, $$3.$$s = self, $$3.$$arity = 1, $$3)); - if ($truthy(target['$!='](0))) { - - target_list = targetAddString.$scan(/[+-]\d+/); - $send(target_list, 'each', [], ($$4 = function(j){var self = $$4.$$s || this; - - - - if (j == null) { - j = nil; - }; - return (target = $rb_plus(target, j.$to_i()));}, $$4.$$s = self, $$4.$$arity = 1, $$4));}; - return self.$checkRoll(diceCount, modify, type, target);} - else if (/WEA(\d+)?/i['$===']($case)) { - roc = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 0).$to_i(); - return self.$get_weather_table(roc);} - else if ("FRE"['$===']($case)) {return self.$get_free_situation_table()} - else { return nil }})(); - return text; - }, $Postman_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$checkRoll', $Postman_checkRoll$5 = function $$checkRoll(diceCount, modify, type, target) { - var $a, $b, $$6, $$7, self = this, dice = nil, diceText = nil, diceArray = nil, dice2 = nil, diceText2 = nil, criticalCount = nil, modifyText = nil, result = nil, resultText = nil, operatorText = nil, text = nil; - - - $b = self.$roll(diceCount, 6, self.sortType), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceArray = $send(diceText.$split(/,/), 'collect', [], ($$6 = function(i){var self = $$6.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$6.$$s = self, $$6.$$arity = 1, $$6)); - dice2 = $rb_plus(diceArray['$[]'](-2), diceArray['$[]'](-1)); - diceText2 = "" + (diceArray['$[]'](-2)) + "," + (diceArray['$[]'](-1)); - criticalCount = $send(diceArray, 'count', [], ($$7 = function(i){var self = $$7.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](6);}, $$7.$$s = self, $$7.$$arity = 1, $$7)); - if ($truthy(modify['$!='](0))) { - - modifyText = ""; - if ($truthy($rb_gt(modify, 0))) { - modifyText = "+"}; - modifyText = $rb_plus(modifyText, modify.$to_s());}; - result = $rb_plus(dice2, modify); - if ($truthy(type['$!='](""))) { - - resultText = " 【失敗】"; - operatorText = ">"; - if (type['$=='](">")) { - if ($truthy($rb_gt(result, target))) { - resultText = " 【成功】"} - } else { - - operatorText = $rb_plus(operatorText, "="); - if ($truthy($rb_ge(result, target))) { - resultText = " 【成功】"}; - };}; - if ($truthy($rb_ge(criticalCount, 2))) { - resultText = " 【成功】(クリティカル)" - } else if (dice['$=='](diceCount)) { - resultText = " 【失敗】(ファンブル)"}; - text = "" + (diceCount) + "D6(" + (diceText) + ")" + (modifyText) + " > " + (dice2) + "(" + (diceText2) + ")" + (modifyText) + " = 達成値:" + (result); - if ($truthy($rb_gt(target, 0))) { - text = $rb_plus(text, "" + (operatorText) + (target) + " ")}; - text = $rb_plus(text, resultText.$to_s()); - return text; - }, $Postman_checkRoll$5.$$arity = 4); - - Opal.def(self, '$get_weather_table', $Postman_get_weather_table$8 = function $$get_weather_table(roc) { - var $a, $b, self = this, name = nil, table = nil, dice = nil, diceText = nil, tableText = nil, text = nil; - - - name = "天候チェック"; - table = [[2, "大雨と強風。探索判定の難易度に+4。"], [3, "風が強い1日になりそう。探索判定の難易度に+2。"], [4, "晴れ。特になし。"], [5, "夜の間の雨でぬかるむ。探索判定の難易度に+2。"], [6, "それなりの雨足。探索判定の難易度に+2。"], [7, "晴れ。特になし。"], [8, "天気は大荒れ。探索判定の難易度に+4。"], [9, "小雨が降る。探索判定の難易度に+1。"], [10, "それなりの雨足。探索判定の難易度に+2。"], [11, "晴れ。特になし。"], [12, "風が強い1日になりそう。探索判定の難易度に+2。"]]; - if (roc['$=='](0)) { - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b - } else { - - if ($truthy($rb_lt(roc, 2))) { - roc = 2}; - if ($truthy($rb_gt(roc, 12))) { - roc = 12}; - dice = roc; - diceText = "" + "Choice:" + (roc); - }; - tableText = self.$get_table_by_number(dice, table); - text = "" + (name) + "(" + (diceText) + ") > " + (dice) + ":" + (tableText); - return text; - }, $Postman_get_weather_table$8.$$arity = 1); - return (Opal.def(self, '$get_free_situation_table', $Postman_get_free_situation_table$9 = function $$get_free_situation_table() { - var $a, $b, self = this, name = nil, table = nil, dice = nil, diceText = nil, tableText = nil, text = nil; - - - name = "自由行動シチュエーション表"; - table = [[2, "何をするでもなく、霞がかったような夜空を見上げる。ふと隣に目を向ければ、彼/彼女が居た。彼/彼女は、こうなる前の夜空を知っているのだろうか。"], [3, "夢を見た。大戦の最中、街が、人が、世界が焼けていく悪夢を。追い立てられるようにして目を覚ますと、彼/彼女が君を見ていた。 ……もしかして、自分はよほどうなされていたのだろうか。"], [4, "周囲で見つけたガラクタを使って、ちょっとしたビックリ玩具を作ってみた。「彼/ 彼女」にコイツをけしかけたら、どんな反応をするだろうか?"], [5, "使えそうなものがないか探していると、カタンと物音がして何かが落ちた。拾い上げてみたそれは、かつてここで生活していた誰かの名残(写真、家具、玩具等)だった。"], [6, "テントの中で夜を過ごしていると、ふと彼/彼女と話したくてたまらない気持ちになった。言ってしまえば、夜の静けさに寂しさを覚えてしまったのだ。"], [7, "ここまでの配達の記録をつけていたら、背後から視線を感じる……! もしや、彼/彼女に覗かれている……!?"], [8, "周囲を探索していると、君一人では手の届かないところに金属製の箱か何かがあることに気づいた。彼/彼女に手伝ってもらえば、取れるだろうか……?"], [9, "朝まではまだしばらくあるというのに、目が覚めてしまった。二度寝しようにも寝付けずに居ると、隣でもぞもぞと動く気配がする。彼/彼女も、どうやら同じらしい。"], [10, "他愛のない話をするうちに、君は彼/彼女に問いかけていた。「何故、ポストマンになろうと思ったのか」 ……そういえば、君自身はどうだったろうか。"], [11, "保存食にありつこうとしたその時、君は気づいた。一匹のネズミが、彼/彼女の荷物の中に潜り込もうとしている。彼/彼女は気づいていないが、このままでは食料が危ない!"], [12, "テントを設営し、落ち着いた頃にふと気づく。 ……身体が熱い。少し、だるさもあるような気もする。大したことはないと思うが、彼/彼女に相談しておいた方がいいだろうか。"]]; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - tableText = self.$get_table_by_number(dice, table); - text = "" + (name) + "(" + (diceText) + ") > " + (dice) + ":" + (tableText); - return text; - }, $Postman_get_free_situation_table$9.$$arity = 0), nil) && 'get_free_situation_table'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/PulpCthulhu.js b/src/assets/dicebot/PulpCthulhu.js deleted file mode 100644 index e009a1a54..000000000 --- a/src/assets/dicebot/PulpCthulhu.js +++ /dev/null @@ -1,573 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/Cthulhu7th"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $range = Opal.range, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$setPrefixes', '$===', '$getCheckResult', '$getCombineRoll', '$getFullAutoResult', '$roll_bmr_table', '$roll_bms_table', '$roll_1d8_table', '$roll_1d100_table', '$private', '$roll', '$-', '$[]', '$match', '$to_i', '$nil?', '$<=', '$==', '$include?', '$min', '$max', '$roll_with_bonus', '$+', '$join', '$getCheckResultText', '$new', '$abs', '$roll_tens_d10', '$bcdice', '$roll_ones_d10', '$map', '$>=', '$/', '$<', '$=~', '$last_match', '$debug', '$downcase', '$to_s', '$floor', '$>', '$!', '$rollFullAuto', '$each', '$getNextDifficultyMessage', '$getHitResultInfos', '$getHitResultText', '$getHitType', '$getBulletResults', '$[]=', '$shouldStopRollFullAuto?', '$freeze', '$getFumbleable', '$getSuccessListImpaleBulletList', '$getSetOfBullet', '$getHitBulletCountBase', '$to_f', '$isLastBulletTurn', '$ceil', '$getLastHitBulletCount']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Cthulhu7th'); - - var $nesting = [self].concat($parent_nesting), $Cthulhu7th_initialize$1, $Cthulhu7th_rollDiceCommand$2, $Cthulhu7th_roll_1d8_table$3, $Cthulhu7th_roll_1d100_table$4, $Cthulhu7th_getCheckResult$5, $Cthulhu7th_roll_ones_d10$6, $Cthulhu7th_roll_with_bonus$7, $Cthulhu7th_getCheckResultText$10, $Cthulhu7th_getCombineRoll$11, $Cthulhu7th_getFullAutoResult$12, $Cthulhu7th_rollFullAuto$13, $Cthulhu7th_shouldStopRollFullAuto$ques$15, $Cthulhu7th_getHitResultInfos$16, $Cthulhu7th_getHitResultText$17, $Cthulhu7th_getHitType$18, $Cthulhu7th_getBulletResults$19, $Cthulhu7th_getSuccessListImpaleBulletList$20, $Cthulhu7th_getNextDifficultyMessage$21, $Cthulhu7th_getSetOfBullet$22, $Cthulhu7th_getHitBulletCountBase$23, $Cthulhu7th_isLastBulletTurn$24, $Cthulhu7th_getLastHitBulletCount$25, $Cthulhu7th_getFumbleable$26, $Cthulhu7th_roll_bmr_table$27, $Cthulhu7th_roll_bms_table$28; - - self.$$prototype.bonus_dice_range = nil; - - Opal.const_set($nesting[0], 'ID', "Cthulhu7th"); - Opal.const_set($nesting[0], 'NAME', "新クトゥルフ神話TRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "しんくとうるふしんわTRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "※コマンドは入力内容の前方一致で検出しています。\n" + "・判定 CC(x)<=(目標値)\n" + " x:ボーナス・ペナルティダイス (2~-2)。省略可。\n" + " 目標値が無くても1D100は表示される。\n" + " ファンブル/失敗/ レギュラー成功/ハード成功/\n" + " イクストリーム成功/クリティカル を自動判定。\n" + "例)CC<=30 CC(2)<=50 CC(+2)<=50 CC(-1)<=75 CC-1<=50 CC1<=65 CC+1<=65 CC\n" + "\n" + "・組み合わせ判定 (CBR(x,y))\n" + " 目標値 x と y で%ロールを行い、成否を判定。\n" + " 例)CBR(50,20)\n" + "\n" + "・自動火器の射撃判定 FAR(w,x,y,z,d,v)\n" + " w:弾丸の数(1~100)、x:技能値(1~100)、y:故障ナンバー、\n" + " z:ボーナス・ペナルティダイス(-2~2)。省略可。\n" + " d:指定難易度で連射を終える(レギュラー:r,ハード:h,イクストリーム:e)。省略可。\n" + " v:ボレーの弾丸の数を変更する。省略可。\n" + " 命中数と貫通数、残弾数のみ算出。ダメージ算出はありません。\n" + "例)FAR(25,70,98) FAR(50,80,98,-1) far(30,70,99,1,R)\n" + "  far(25,88,96,2,h,5) FaR(40,77,100,,e,4) fAr(20,47,100,,,3)\n" + "\n" + "・各種表\n" + " 【狂気関連】\n" + " ・狂気の発作(リアルタイム)(Bouts of Madness Real Time) BMR\n" + " ・狂気の発作(サマリー)(Bouts of Madness Summary) BMS\n" + " ・恐怖症(Sample Phobias)表 PH/マニア(Sample Manias)表 MA\n" + " 【魔術関連】\n" + " ・プッシュ時のキャスティング・ロール(Casting Roll)の失敗表\n" + "  強力でない呪文の場合 FCL/強力な呪文の場合 FCM\n"); - self.$setPrefixes(["CC\\(\\d+\\)", "CC.*", "CBR\\(\\d+,\\d+\\)", "FAR.*", "BMR", "BMS", "FCL", "FCM", "PH", "MA"]); - - Opal.def(self, '$initialize', $Cthulhu7th_initialize$1 = function $$initialize() { - var $iter = $Cthulhu7th_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Cthulhu7th_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Cthulhu7th_initialize$1, false), $zuper, $iter); - return (self.bonus_dice_range = $range(-2, 2, false)); - }, $Cthulhu7th_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Cthulhu7th_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if (/^CC/i['$===']($case)) {return self.$getCheckResult(command)} - else if (/^CBR/i['$===']($case)) {return self.$getCombineRoll(command)} - else if (/^FAR/i['$===']($case)) {return self.$getFullAutoResult(command)} - else if (/^BMR/i['$===']($case)) {return self.$roll_bmr_table()} - else if (/^BMS/i['$===']($case)) {return self.$roll_bms_table()} - else if (/^FCL/i['$===']($case)) {return self.$roll_1d8_table("キャスティング・ロール失敗(小)表", $$($nesting, 'FAILED_CASTING_L_TABLE'))} - else if (/^FCM/i['$===']($case)) {return self.$roll_1d8_table("キャスティング・ロール失敗(大)表", $$($nesting, 'FAILED_CASTING_M_TABLE'))} - else if (/^PH/i['$===']($case)) {return self.$roll_1d100_table("恐怖症表", $$($nesting, 'PHOBIAS_TABLE'))} - else if (/^MA/i['$===']($case)) {return self.$roll_1d100_table("マニア表", $$($nesting, 'MANIAS_TABLE'))} - else {return nil}})() - }, $Cthulhu7th_rollDiceCommand$2.$$arity = 1); - self.$private(); - - Opal.def(self, '$roll_1d8_table', $Cthulhu7th_roll_1d8_table$3 = function $$roll_1d8_table(table_name, table) { - var $a, $b, self = this, total_n = nil, index = nil, text = nil; - - - $b = self.$roll(1, 8), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(total_n, 1); - text = table['$[]'](index); - return "" + (table_name) + "(" + (total_n) + ") > " + (text); - }, $Cthulhu7th_roll_1d8_table$3.$$arity = 2); - - Opal.def(self, '$roll_1d100_table', $Cthulhu7th_roll_1d100_table$4 = function $$roll_1d100_table(table_name, table) { - var $a, $b, self = this, total_n = nil, index = nil, text = nil; - - - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(total_n, 1); - text = table['$[]'](index); - return "" + (table_name) + "(" + (total_n) + ") > " + (text); - }, $Cthulhu7th_roll_1d100_table$4.$$arity = 2); - - Opal.def(self, '$getCheckResult', $Cthulhu7th_getCheckResult$5 = function $$getCheckResult(command) { - var $a, $b, self = this, m = nil, bonus_dice_count = nil, diff = nil, without_compare = nil, dice = nil, total = nil, total_list = nil, output = nil, result_text = nil; - - - m = /^CC([-+]?\d+)?(<=(\d+))?/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - bonus_dice_count = m['$[]'](1).$to_i(); - diff = m['$[]'](3).$to_i(); - without_compare = ($truthy($a = m['$[]'](2)['$nil?']()) ? $a : $rb_le(diff, 0)); - if ($truthy((($a = bonus_dice_count['$=='](0)) ? $rb_le(diff, 0) : bonus_dice_count['$=='](0)))) { - - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - return "" + "1D100 > " + (dice);}; - if ($truthy(self.bonus_dice_range['$include?'](bonus_dice_count))) { - } else { - return "" + "エラー。ボーナス・ペナルティダイスの値は" + (self.bonus_dice_range.$min()) + "~" + (self.bonus_dice_range.$max()) + "です。" - }; - $b = self.$roll_with_bonus(bonus_dice_count), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (total_list = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(without_compare)) { - - output = "" + "(1D100) ボーナス・ペナルティダイス[" + (bonus_dice_count) + "]"; - output = $rb_plus(output, "" + " > " + (total_list.$join(", ")) + " > " + (total)); - } else { - - result_text = self.$getCheckResultText(total, diff); - output = "" + "(1D100<=" + (diff) + ") ボーナス・ペナルティダイス[" + (bonus_dice_count) + "]"; - output = $rb_plus(output, "" + " > " + (total_list.$join(", ")) + " > " + (total) + " > " + (result_text)); - }; - return output; - }, $Cthulhu7th_getCheckResult$5.$$arity = 1); - - Opal.def(self, '$roll_ones_d10', $Cthulhu7th_roll_ones_d10$6 = function $$roll_ones_d10() { - var $a, $b, self = this, dice = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - if (dice['$=='](10)) { - return 0}; - return dice; - }, $Cthulhu7th_roll_ones_d10$6.$$arity = 0); - - Opal.def(self, '$roll_with_bonus', $Cthulhu7th_roll_with_bonus$7 = function $$roll_with_bonus(bonus) { - var $$8, $$9, self = this, tens_list = nil, ones = nil, dice_list = nil, dice = nil; - - - tens_list = $send($$($nesting, 'Array'), 'new', [$rb_plus(bonus.$abs(), 1)], ($$8 = function(){var self = $$8.$$s || this; - - return self.$bcdice().$roll_tens_d10()}, $$8.$$s = self, $$8.$$arity = 0, $$8)); - ones = self.$roll_ones_d10(); - dice_list = $send(tens_list, 'map', [], ($$9 = function(tens){var self = $$9.$$s || this, dice = nil; - - - - if (tens == null) { - tens = nil; - }; - dice = $rb_plus(tens, ones); - if (dice['$=='](0)) { - return 100 - } else { - return dice - };}, $$9.$$s = self, $$9.$$arity = 1, $$9)); - dice = (function() {if ($truthy($rb_ge(bonus, 0))) { - return dice_list.$min() - } else { - return dice_list.$max() - }; return nil; })(); - return [dice, dice_list]; - }, $Cthulhu7th_roll_with_bonus$7.$$arity = 1); - - Opal.def(self, '$getCheckResultText', $Cthulhu7th_getCheckResultText$10 = function $$getCheckResultText(total, diff, fumbleable) { - var self = this, fumble_text = nil; - - - - if (fumbleable == null) { - fumbleable = false; - }; - if ($truthy($rb_le(total, diff))) { - - if (total['$=='](1)) { - return "クリティカル"}; - if ($truthy($rb_le(total, $rb_divide(diff, 5)))) { - return "イクストリーム成功"}; - if ($truthy($rb_le(total, $rb_divide(diff, 2)))) { - return "ハード成功"}; - return "レギュラー成功";}; - fumble_text = "ファンブル"; - if (total['$=='](100)) { - return fumble_text}; - if ($truthy($rb_ge(total, 96))) { - if ($truthy($rb_lt(diff, 50))) { - return fumble_text - } else if ($truthy(fumbleable)) { - return fumble_text}}; - return "失敗"; - }, $Cthulhu7th_getCheckResultText$10.$$arity = -3); - - Opal.def(self, '$getCombineRoll', $Cthulhu7th_getCombineRoll$11 = function $$getCombineRoll(command) { - var $a, $b, self = this, diff_1 = nil, diff_2 = nil, total = nil, result_1 = nil, result_2 = nil, successList = nil, succesCount = nil, rank = nil; - - - if ($truthy(/CBR\((\d+),(\d+)\)/i['$=~'](command))) { - } else { - return nil - }; - diff_1 = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diff_2 = $$($nesting, 'Regexp').$last_match(2).$to_i(); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), $b; - result_1 = self.$getCheckResultText(total, diff_1); - result_2 = self.$getCheckResultText(total, diff_2); - successList = ["クリティカル", "イクストリーム成功", "ハード成功", "レギュラー成功"]; - succesCount = 0; - if ($truthy(successList['$include?'](result_1))) { - succesCount = $rb_plus(succesCount, 1)}; - if ($truthy(successList['$include?'](result_2))) { - succesCount = $rb_plus(succesCount, 1)}; - self.$debug("succesCount", succesCount); - rank = (function() {if ($truthy($rb_ge(succesCount, 2))) { - return "成功" - } else if (succesCount['$=='](1)) { - return "部分的成功" - } else { - return "失敗" - }; return nil; })(); - return "" + "(1d100<=" + (diff_1) + "," + (diff_2) + ") > " + (total) + "[" + (result_1) + "," + (result_2) + "] > " + (rank); - }, $Cthulhu7th_getCombineRoll$11.$$arity = 1); - - Opal.def(self, '$getFullAutoResult', $Cthulhu7th_getFullAutoResult$12 = function $$getFullAutoResult(command) { - var $a, $b, self = this, bullet_count = nil, diff = nil, broken_number = nil, bonus_dice_count = nil, stop_count = nil, bullet_set_count_cap = nil, output = nil, bullet_count_limit = nil; - - - if ($truthy(/^FAR\((-?\d+),(-?\d+),(-?\d+)(?:,(-?\d+)?)?(?:,(-?\w+)?)?(?:,(-?\d+)?)?\)/i['$=~'](command))) { - } else { - return nil - }; - bullet_count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diff = $$($nesting, 'Regexp').$last_match(2).$to_i(); - broken_number = $$($nesting, 'Regexp').$last_match(3).$to_i(); - bonus_dice_count = ($truthy($a = $$($nesting, 'Regexp').$last_match(4)) ? $a : 0).$to_i(); - stop_count = ($truthy($a = $$($nesting, 'Regexp').$last_match(5)) ? $a : "").$to_s().$downcase(); - bullet_set_count_cap = ($truthy($a = $$($nesting, 'Regexp').$last_match(6)) ? $a : $rb_divide(diff, 10).$floor()).$to_i(); - output = ""; - bullet_count_limit = 100; - if ($truthy($rb_gt(bullet_count, bullet_count_limit))) { - - output = $rb_plus(output, "" + "弾薬が多すぎます。装填された弾薬を" + (bullet_count_limit) + "発に変更します。\n"); - bullet_count = bullet_count_limit;}; - if ($truthy(($truthy($a = ($truthy($b = $rb_gt(bullet_set_count_cap, $rb_divide(diff, 10).$floor())) ? $rb_gt(diff, 39) : $b)) ? $$($nesting, 'Regexp').$last_match(6)['$nil?']()['$!']() : $a))) { - - bullet_set_count_cap = $rb_divide(diff, 10).$floor(); - output = $rb_plus(output, "" + "ボレーの弾丸の数の上限は[技能値÷10(切り捨て)]発なので、それより高い数を指定できません。ボレーの弾丸の数を" + (bullet_set_count_cap) + "発に変更します。\n"); - } else if ($truthy(($truthy($a = ($truthy($b = $rb_le(diff, 39)) ? $rb_gt(bullet_set_count_cap, 3) : $b)) ? $$($nesting, 'Regexp').$last_match(6)['$nil?']()['$!']() : $a))) { - - bullet_set_count_cap = 3; - output = $rb_plus(output, "" + "技能値が39以下ではボレーの弾丸の数の上限および下限は3発です。ボレーの弾丸の数を" + (bullet_set_count_cap) + "発に変更します。\n");}; - if ($truthy(($truthy($a = $rb_le(bullet_set_count_cap, 0)) ? $$($nesting, 'Regexp').$last_match(6)['$nil?']()['$!']() : $a))) { - return "ボレーの弾丸の数は正の数です。"}; - if ($truthy(($truthy($a = $rb_lt(bullet_set_count_cap, 3)) ? $$($nesting, 'Regexp').$last_match(6)['$nil?']()['$!']() : $a))) { - - bullet_set_count_cap = 3; - output = $rb_plus(output, "ボレーの弾丸の数の下限は3発です。ボレーの弾丸の数を3発に変更します。\n");}; - if ($truthy($rb_le(bullet_count, 0))) { - return "弾薬は正の数です。"}; - if ($truthy($rb_le(diff, 0))) { - return "目標値は正の数です。"}; - if ($truthy($rb_lt(broken_number, 0))) { - - output = $rb_plus(output, "故障ナンバーは正の数です。マイナス記号を外します。\n"); - broken_number = broken_number.$abs();}; - if ($truthy(self.bonus_dice_range['$include?'](bonus_dice_count))) { - } else { - return "" + "エラー。ボーナス・ペナルティダイスの値は" + (self.bonus_dice_range.$min()) + "~" + (self.bonus_dice_range.$max()) + "です。" - }; - output = $rb_plus(output, "" + "ボーナス・ペナルティダイス[" + (bonus_dice_count) + "]"); - output = $rb_plus(output, self.$rollFullAuto(bullet_count, diff, broken_number, bonus_dice_count, stop_count, bullet_set_count_cap)); - return output; - }, $Cthulhu7th_getFullAutoResult$12.$$arity = 1); - - Opal.def(self, '$rollFullAuto', $Cthulhu7th_rollFullAuto$13 = function $$rollFullAuto(bullet_count, diff, broken_number, dice_num, stop_count, bullet_set_count_cap) {try { - - var $$14, self = this, output = nil, loopCount = nil, counts = nil; - - - output = ""; - loopCount = 0; - counts = $hash2(["hit_bullet", "impale_bullet", "bullet"], {"hit_bullet": 0, "impale_bullet": 0, "bullet": bullet_count}); - (function(){var $brk = Opal.new_brk(); try {return $send($range(0, 3, false), 'each', [], ($$14 = function(more_difficulty){var self = $$14.$$s || this, $a, $b, $c, hit_result = nil, total = nil, total_list = nil, hit_type = nil, hit_bullet = nil, impale_bullet = nil, lost_bullet = nil, $writer = nil; - if (self.bonus_dice_range == null) self.bonus_dice_range = nil; - - - - if (more_difficulty == null) { - more_difficulty = nil; - }; - output = $rb_plus(output, self.$getNextDifficultyMessage(more_difficulty)); - while ($truthy($rb_ge(dice_num, self.bonus_dice_range.$min()))) { - - loopCount = $rb_plus(loopCount, 1); - $c = self.$getHitResultInfos(dice_num, diff, more_difficulty), $b = Opal.to_ary($c), (hit_result = ($b[0] == null ? nil : $b[0])), (total = ($b[1] == null ? nil : $b[1])), (total_list = ($b[2] == null ? nil : $b[2])), $c; - output = $rb_plus(output, "" + "\n" + (loopCount) + "回目: > " + (total_list.$join(", ")) + " > " + (hit_result)); - if ($truthy($rb_ge(total, broken_number))) { - - output = $rb_plus(output, " ジャム"); - Opal.ret(self.$getHitResultText(output, counts));}; - hit_type = self.$getHitType(more_difficulty, hit_result); - $c = self.$getBulletResults(counts['$[]']("bullet"), hit_type, diff, bullet_set_count_cap), $b = Opal.to_ary($c), (hit_bullet = ($b[0] == null ? nil : $b[0])), (impale_bullet = ($b[1] == null ? nil : $b[1])), (lost_bullet = ($b[2] == null ? nil : $b[2])), $c; - output = $rb_plus(output, "" + " (" + (hit_bullet) + "発が命中、" + (impale_bullet) + "発が貫通)"); - - $writer = ["hit_bullet", $rb_plus(counts['$[]']("hit_bullet"), hit_bullet)]; - $send(counts, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = ["impale_bullet", $rb_plus(counts['$[]']("impale_bullet"), impale_bullet)]; - $send(counts, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = ["bullet", $rb_minus(counts['$[]']("bullet"), lost_bullet)]; - $send(counts, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy($rb_le(counts['$[]']("bullet"), 0))) { - Opal.ret(self.$getHitResultText(output, counts))}; - dice_num = $rb_minus(dice_num, 1); - }; - if ($truthy(self['$shouldStopRollFullAuto?'](stop_count, more_difficulty))) { - - output = $rb_plus(output, "\n【指定の難易度となったので、処理を終了します。】"); - - Opal.brk(nil, $brk);}; - return (dice_num = $rb_plus(dice_num, 1));}, $$14.$$s = self, $$14.$$brk = $brk, $$14.$$arity = 1, $$14)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return self.$getHitResultText(output, counts); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $Cthulhu7th_rollFullAuto$13.$$arity = 6); - Opal.const_set($nesting[0], 'ROLL_FULL_AUTO_DIFFICULTY_THRESHOLD', $hash2(["r", "h", "e"], {"r": 0, "h": 1, "e": 2}).$freeze()); - - Opal.def(self, '$shouldStopRollFullAuto?', $Cthulhu7th_shouldStopRollFullAuto$ques$15 = function(stop_count, difficulty) { - var $a, self = this, difficulty_threshold = nil; - - - difficulty_threshold = $$($nesting, 'ROLL_FULL_AUTO_DIFFICULTY_THRESHOLD')['$[]'](stop_count); - return ($truthy($a = difficulty_threshold) ? $rb_ge(difficulty, difficulty_threshold) : $a); - }, $Cthulhu7th_shouldStopRollFullAuto$ques$15.$$arity = 2); - - Opal.def(self, '$getHitResultInfos', $Cthulhu7th_getHitResultInfos$16 = function $$getHitResultInfos(dice_num, diff, more_difficulty) { - var $a, $b, self = this, total = nil, total_list = nil, fumbleable = nil, hit_result = nil; - - - $b = self.$roll_with_bonus(dice_num), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (total_list = ($a[1] == null ? nil : $a[1])), $b; - fumbleable = self.$getFumbleable(more_difficulty); - hit_result = self.$getCheckResultText(total, diff, fumbleable); - return [hit_result, total, total_list]; - }, $Cthulhu7th_getHitResultInfos$16.$$arity = 3); - - Opal.def(self, '$getHitResultText', $Cthulhu7th_getHitResultText$17 = function $$getHitResultText(output, counts) { - var self = this; - - return "" + (output) + "\n> " + (counts['$[]']("hit_bullet")) + "発が通常命中、" + (counts['$[]']("impale_bullet")) + "発が貫通、残弾" + (counts['$[]']("bullet")) + "発" - }, $Cthulhu7th_getHitResultText$17.$$arity = 2); - - Opal.def(self, '$getHitType', $Cthulhu7th_getHitType$18 = function $$getHitType(more_difficulty, hit_result) { - var $a, $b, self = this, successList = nil, impaleBulletList = nil; - - - $b = self.$getSuccessListImpaleBulletList(more_difficulty), $a = Opal.to_ary($b), (successList = ($a[0] == null ? nil : $a[0])), (impaleBulletList = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(successList['$include?'](hit_result))) { - return "hit"}; - if ($truthy(impaleBulletList['$include?'](hit_result))) { - return "impale"}; - return ""; - }, $Cthulhu7th_getHitType$18.$$arity = 2); - - Opal.def(self, '$getBulletResults', $Cthulhu7th_getBulletResults$19 = function $$getBulletResults(bullet_count, hit_type, diff, bullet_set_count_cap) { - var self = this, bullet_set_count = nil, hit_bullet_count_base = nil, impale_bullet_count_base = nil, lost_bullet_count = nil, hit_bullet_count = nil, impale_bullet_count = nil, $case = nil; - - - bullet_set_count = self.$getSetOfBullet(diff, bullet_set_count_cap); - hit_bullet_count_base = self.$getHitBulletCountBase(diff, bullet_set_count); - impale_bullet_count_base = $rb_divide(bullet_set_count, (2).$to_f()); - lost_bullet_count = 0; - hit_bullet_count = 0; - impale_bullet_count = 0; - if ($truthy(self.$isLastBulletTurn(bullet_count, bullet_set_count)['$!']())) { - - $case = hit_type; - if ("hit"['$===']($case)) {hit_bullet_count = hit_bullet_count_base} - else if ("impale"['$===']($case)) { - impale_bullet_count = impale_bullet_count_base.$floor(); - hit_bullet_count = impale_bullet_count_base.$ceil();}; - lost_bullet_count = bullet_set_count; - } else { - - $case = hit_type; - if ("hit"['$===']($case)) {hit_bullet_count = self.$getLastHitBulletCount(bullet_count)} - else if ("impale"['$===']($case)) { - impale_bullet_count = self.$getLastHitBulletCount(bullet_count); - hit_bullet_count = $rb_minus(bullet_count, impale_bullet_count);}; - lost_bullet_count = bullet_count; - }; - return [hit_bullet_count, impale_bullet_count, lost_bullet_count]; - }, $Cthulhu7th_getBulletResults$19.$$arity = 4); - - Opal.def(self, '$getSuccessListImpaleBulletList', $Cthulhu7th_getSuccessListImpaleBulletList$20 = function $$getSuccessListImpaleBulletList(more_difficulty) { - var self = this, successList = nil, impaleBulletList = nil, $case = nil; - - - successList = []; - impaleBulletList = []; - $case = more_difficulty; - if ((0)['$===']($case)) { - successList = ["ハード成功", "レギュラー成功"]; - impaleBulletList = ["クリティカル", "イクストリーム成功"];} - else if ((1)['$===']($case)) { - successList = ["ハード成功"]; - impaleBulletList = ["クリティカル", "イクストリーム成功"];} - else if ((2)['$===']($case)) { - successList = []; - impaleBulletList = ["クリティカル", "イクストリーム成功"];} - else if ((3)['$===']($case)) { - successList = ["クリティカル"]; - impaleBulletList = [];}; - return [successList, impaleBulletList]; - }, $Cthulhu7th_getSuccessListImpaleBulletList$20.$$arity = 1); - - Opal.def(self, '$getNextDifficultyMessage', $Cthulhu7th_getNextDifficultyMessage$21 = function $$getNextDifficultyMessage(more_difficulty) { - var self = this, $case = nil; - - - $case = more_difficulty; - if ((1)['$===']($case)) {return "\n【難易度がハードに変更】"} - else if ((2)['$===']($case)) {return "\n【難易度がイクストリームに変更】"} - else if ((3)['$===']($case)) {return "\n【難易度がクリティカルに変更】"}; - return ""; - }, $Cthulhu7th_getNextDifficultyMessage$21.$$arity = 1); - - Opal.def(self, '$getSetOfBullet', $Cthulhu7th_getSetOfBullet$22 = function $$getSetOfBullet(diff, bullet_set_count_cap) { - var $a, self = this, bullet_set_count = nil; - - - bullet_set_count = $rb_divide(diff, 10).$floor(); - if ($truthy($rb_lt(bullet_set_count_cap, bullet_set_count))) { - bullet_set_count = bullet_set_count_cap}; - if ($truthy(($truthy($a = $rb_ge(diff, 1)) ? $rb_lt(diff, 30) : $a))) { - bullet_set_count = 3}; - return bullet_set_count; - }, $Cthulhu7th_getSetOfBullet$22.$$arity = 2); - - Opal.def(self, '$getHitBulletCountBase', $Cthulhu7th_getHitBulletCountBase$23 = function $$getHitBulletCountBase(diff, bullet_set_count) { - var $a, self = this, hit_bullet_count_base = nil; - - - hit_bullet_count_base = $rb_divide(bullet_set_count, 2).$floor(); - if ($truthy(($truthy($a = $rb_ge(diff, 1)) ? $rb_lt(diff, 30) : $a))) { - hit_bullet_count_base = 1}; - return hit_bullet_count_base; - }, $Cthulhu7th_getHitBulletCountBase$23.$$arity = 2); - - Opal.def(self, '$isLastBulletTurn', $Cthulhu7th_isLastBulletTurn$24 = function $$isLastBulletTurn(bullet_count, bullet_set_count) { - var self = this; - - return $rb_lt($rb_minus(bullet_count, bullet_set_count), 0) - }, $Cthulhu7th_isLastBulletTurn$24.$$arity = 2); - - Opal.def(self, '$getLastHitBulletCount', $Cthulhu7th_getLastHitBulletCount$25 = function $$getLastHitBulletCount(bullet_count) { - var self = this, count = nil; - - - if (bullet_count['$=='](1)) { - return 1}; - count = $rb_divide(bullet_count, (2).$to_f()).$floor(); - return count; - }, $Cthulhu7th_getLastHitBulletCount$25.$$arity = 1); - - Opal.def(self, '$getFumbleable', $Cthulhu7th_getFumbleable$26 = function $$getFumbleable(more_difficulty) { - var self = this; - - return $rb_ge(more_difficulty, 1) - }, $Cthulhu7th_getFumbleable$26.$$arity = 1); - - Opal.def(self, '$roll_bmr_table', $Cthulhu7th_roll_bmr_table$27 = function $$roll_bmr_table() { - var $a, $b, self = this, total_n = nil, text = nil, time_n = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - text = $$($nesting, 'MADNESS_REAL_TIME_TABLE')['$[]']($rb_minus(total_n, 1)); - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (time_n = ($a[0] == null ? nil : $a[0])), $b; - return "" + "狂気の発作(リアルタイム)(" + (total_n) + ") > " + (text) + "(1D10>" + (time_n) + "ラウンド)"; - }, $Cthulhu7th_roll_bmr_table$27.$$arity = 0); - Opal.const_set($nesting[0], 'MADNESS_REAL_TIME_TABLE', ["健忘症:探索者は、最後に安全な場所にいた時からあとに起こった出来事の記憶を持たない。例えば、朝食を食べていた次の瞬間には怪物と向かい合っている。これは1D10ラウンド続く。", "身体症状症:探索者は1D10ラウンドの間、狂気によって視覚や聴覚に異常が生じたり、四肢の1つまたは複数が動かなくなる。", "暴力衝動:赤い霧が探索者に降り、1D10ラウンドの間、抑えの利かない暴力と破壊を敵味方を問わず周囲に向かって爆発させる。", "偏執症:探索者は1D10ラウンドの間、重い偏執症に襲われる。誰もが探索者に襲い掛かろうとしている。信用できる者はいない。監視されている。裏切ったやつがいる。これはわなだ。", "重要な人々:探索者のバックストーリーの重要な人々を見直す。探索者はその場にいた人物を、自分にとっての重要な人々だと思い込む。人間関係の性質を考慮した上で、探索者はそれに従って行動する。1D10ラウンド続く。", "失神:探索者は失神する。1D10ラウンド後に回復する。", "パニックになって逃亡する:探索者は利用できるあらゆる手段を使って、可能なかぎり遠くへ逃げ出さずにはいられない。それが唯一の車両を奪って仲間を置き去りにすることであっても。探索者は1D10ラウンドの間、逃げ続ける。", "身体的ヒステリーもしくは感情爆発:探索者は1D10ラウンドの間、笑ったり、泣いたり、あるいは叫んだりし続け、行動できなくなる。", "恐怖症:探索者は新しい恐怖症に陥る。恐怖症表(PHコマンド)をロールするか、キーパーが恐怖症を1つ選ぶ。恐怖症の原因は存在しなくとも、その探索者は次の1D10ラウンドの間、それがそこにあると思い込む。", "マニア:探索者は新しいマニアに陥る。マニア表(MAコマンド)をロールするか、キーパーがマニアを1つ選ぶ。その探索者は次の1D10ラウンドの間、自分の新しいマニアに没頭しようとする。"].$freeze()); - - Opal.def(self, '$roll_bms_table', $Cthulhu7th_roll_bms_table$28 = function $$roll_bms_table() { - var $a, $b, self = this, total_n = nil, text = nil, time_n = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - text = $$($nesting, 'MADNESS_SUMMARY_TABLE')['$[]']($rb_minus(total_n, 1)); - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (time_n = ($a[0] == null ? nil : $a[0])), $b; - return "" + "狂気の発作(サマリー)(" + (total_n) + ") > " + (text) + "(1D10>" + (time_n) + "時間)"; - }, $Cthulhu7th_roll_bms_table$28.$$arity = 0); - Opal.const_set($nesting[0], 'MADNESS_SUMMARY_TABLE', ["健忘症:探索者が意識を取り戻すと、見知らぬ場所におり、自分が誰かもわからない。記憶は時間をかけてゆっくりと戻るだろう。", "盗難:探索者は1D10時間後に意識を取り戻すが、盗難の被害を受けている。傷つけられてはいない。探索者が秘蔵の品を身に着けていた場合(「探索者のバックストーリー」参照)、〈幸運〉ロールを行い、それが盗まれていないか判定する。値打ちのあるものはすべて自動的に失われる。", "暴行:探索者は1D10時間後に意識を取り戻し、自分が暴行を受け、傷ついていることに気づく。耐久力は狂気に陥る前の半分に減少している。ただし重症は生じていない。盗まれたものはない。どのようにダメージが加えられたかは、キーパーに委ねられる。", "暴力:探索者は暴力と破壊の噴流を爆発させる。探索者が意識を取り戻した時、その行動を認識し記憶していることもあればそうでないこともある。探索者が暴力を振るった物、もしくは人、そして相手を殺してしまったのか、あるいは単に傷つけただけなのかはキーパーに委ねられる。", "イデオロギー/信念:探索者のバックストーリーのイデオロギーと信念を参照する。探索者はこれらの1つの権化となり、急進的かつ狂気じみて、感情もあらわに主張するようになる。例えば、宗教に関係する者は、その後地下鉄で声高に福音を説教しているところを目撃されるかもしれない。", "重要な人々:探索者のバックストーリーの重要な人々を参照し、なぜその人物との関係が重要かを考える。時間がたってから(1D10時間以上)、探索者はその人物に近づくための最善の行動、そしてその人物との関係にとって最善の行動をとる。", "収容:探索者は精神療養施設あるいは警察の留置所で意識を取り戻す。探索者は徐々にそこにいたった出来事を思い出すかもしれない。", "パニック:探索者は非常に遠い場所で意識を取り戻す。荒野で道に迷っているか、列車に乗っているか、長距離バスに乗っているかもしれない。", "恐怖症:探索者は新たな恐怖症を獲得する。恐怖症表(PHコマンド)をロールするか、キーパーがどれか1つ選ぶ。探索者は1D10時間後に意識を取り戻し、この新たな恐怖症の対象を避けるためにあらゆる努力をする。", "マニア:探索者は新たなマニアを獲得する。マニア表(MAコマンド)をロールするか、キーパーがどれか1つ選ぶ。この狂気の発作の間、探索者はこの新たなマニアに完全に溺れているだろう。これがほかの人々に気づかれるかどうかは、キーパーとプレイヤーに委ねられる。"].$freeze()); - Opal.const_set($nesting[0], 'FAILED_CASTING_L_TABLE', ["視界がぼんやりするか、あるいは一時的な失明。", "悲鳴、声、あるいはほかの雑音が肉体から発せられる。", "強風やほかの大気の現象。", "術者、ほかのその場に居合わせた者が出血する。あるいは環境(例えば、壁)から出血する。", "奇妙な幻視と幻覚。", "その付近の小動物たちが爆発する。", "硫黄の悪臭。", "クトゥルフ神話の怪物が偶然召喚される。"].$freeze()); - Opal.const_set($nesting[0], 'FAILED_CASTING_M_TABLE', ["大地が震え、壁に亀裂が入って崩れる。", "叙事詩的な電撃。", "血が空から降る。", "術者の手がしなび、焼けただれる。", "術者は不自然に年をとる(年齢に+2D10歳、30ページの「年齢」を参照し、能力値に修正を適用すること)。", "強力な、あるいは無数のクトゥルフ神話存在が現れ、術者を手始めに、近くの全員を攻撃する!", "術者や近くの全員が遠い時代か場所に吸い込まれる。", "クトゥルフ神話の神格が偶然招来される。"].$freeze()); - Opal.const_set($nesting[0], 'PHOBIAS_TABLE', ["入浴恐怖症:体、手、顔を洗うのが怖い。", "高所恐怖症:高いところが怖い。", "飛行恐怖症:飛ぶのが怖い。", "広場恐怖症:広場、公共の(混雑した)場所が怖い。", "鶏肉恐怖症:鶏肉が怖い。", "ニンニク恐怖症:ニンニクが怖い。", "乗車恐怖症:車両の中にいたり車両に乗るのが怖い。", "風恐怖症:風が怖い。", "男性恐怖症:男性が怖い。", "イングランド恐怖症:イングランド、もしくはイングランド文化などが怖い。", "花恐怖症:花が怖い。", "切断恐怖症:手足や指などが切断された人が怖い。", "クモ恐怖症:クモが怖い。", "稲妻恐怖症:稲妻が怖い。", "廃墟恐怖症:廃墟が怖い。", "笛恐怖症:笛(フルート)が怖い。", "細菌恐怖症:細菌、バクテリアが怖い。", "銃弾恐怖症:投擲物や銃弾が怖い。", "落下恐怖症:落下が怖い。", "書物恐怖症:本が怖い。", "植物恐怖症:植物が怖い。", "美女恐怖症:美しい女性が怖い。", "低温恐怖症:冷たいものが怖い。", "時計恐怖症:時計が怖い。", "閉所恐怖症:壁に囲まれた場所が怖い。", "道化師恐怖症:道化師が怖い。", "犬恐怖症:犬が怖い。", "悪魔恐怖症:悪魔が怖い。", "群集恐怖症:人混みが怖い。", "歯科医恐怖症:歯科医が怖い。", "処分恐怖症:物を捨てるのが怖い(ためこみ症)", "毛皮恐怖症:毛皮が怖い。", "構断恐怖症:道路を横断するのが怖い。", "教会恐怖症:教会が怖い。", "鏡恐怖症:鏡が怖い。", "ピン恐怖症:針やピンが怖い。", "昆虫恐怖症:昆虫が怖い。", "猫恐怖症:猫が怖い。", "橋恐怖症:橋を渡るのが怖い。", "老人恐怖症:老人や年をとることが怖い。", "女性恐怖症:女性が怖い。", "血液恐怖症:血が怖い。", "過失恐怖症:失敗が怖い。", "接触恐怖症:触ることが怖い。", "爬虫類恐怖症:爬虫類が怖い。", "霧恐怖症:霧が怖い。", "銃器恐怖症:銃器が怖い。", "水恐怖症:水が怖い。", "睡眠恐怖症:眠ったり、催眠状態に陥るのが怖い。", "医師恐怖症:医師が怖い。", "魚恐怖症:魚が怖い。", "ゴキブリ恐怖症:ゴキブリが怖い。", "雷鳴恐怖症:雷鳴が怖い。", "野菜恐怖症:野菜が怖い。", "大騒音恐怖症:大きな騒音が怖い。", "湖恐怖症:湖が怖い。", "機械恐怖症:機械や装置が怖い。", "巨大物恐怖症:巨大なものが怖い。", "拘束恐怖症:縛られたり結びつけられたりするのが怖い。", "隕石恐怖症:流星や隕石が怖い。", "孤独恐怖症:独りでいることが怖い。", "汚染恐怖症:汚れたり汚染されたりするのが怖い。", "粘液恐怖症:粘液、粘体が怖い。", "死体恐怖症:死体が怖い。", "8恐怖症:8の数字が怖い。", "歯恐怖症:歯が怖い。", "夢恐怖症:夢が怖い。", "名称恐怖症:特定の言葉(1つまたは複数)を聞くのが怖い。", "蛇恐怖症:蛇が怖い。", "鳥恐怖症:鳥が怖い。", "寄生生物恐怖症:寄生生物が怖い。", "人形恐怖症:人形が怖い。", "恐食症:のみ込むこと食べること、もしくは食べられることが怖い。", "薬物恐怖症:薬物が怖い。", "幽霊恐怖症:幽霊が怖い。", "羞明:日光が怖い。", "ひげ恐怖症:ひげが怖い", "河川恐怖症:川が怖い", "アルコール恐怖症:アルコールやアルコール飲料が怖い。", "火恐怖症:火が怖い。", "魔術恐怖症:魔術が怖い。", "暗黒恐怖症:暗闇や夜が怖い。", "月恐怖症:月が怖い。", "鉄道恐怖症:列車の旅が怖い。", "星恐怖症:星が怖い。", "狭所恐怖症:狭いものや場所が怖い。", "対称恐怖症:左右対称が怖い。", "生き埋め恐怖症:生き埋めになることや墓地が怖い。", "雄牛恐怖症:雄牛が怖い。", "電話恐怖症:電話が怖い。", "奇形恐怖症:怪物が怖い。", "海洋恐怖症:海が怖い。", "手術恐怖症:外科手術が怖い。", "13恐怖症:13の数字が怖い。", "衣類恐怖症:衣服が怖い。", "魔女恐怖症:魔女と魔術が怖い。", "黄色恐怖症:黄色や「黄色」という言葉が怖い。", "外国語恐怖症:外国語が怖い。", "外国人恐怖症:外国人が怖い。", "動物恐怖症:動物が怖い。"].$freeze()); - return Opal.const_set($nesting[0], 'MANIAS_TABLE', ["洗浄マニア:自分の体を洗わずにはいられない。", "無為マニア:病的な優柔不断。", "暗闇マニア:暗黒に関する過度の嗜好。", "高所マニア:高い場所に登らずにはいられない。", "善良マニア:病的な親切。", "広場マニア:開けた場所にいたいという激しい願望。", "先鋭マニア:鋭いもの、とがったものへの執着。", "猫マニア:猫に関する異常な愛好心。", "疼痛性愛:痛みへの執着。", "にんにくマニア:にんにくへの執着。", "乗り物マニア:車の中にいることへの執着。", "病的快活:不合理なほがらかさ。", "花マニア:花への執着。", "計算マニア:数への偏執的な没頭。", "浪費マニア:衝動的あるいは無謀な浪費。", "自己マニア:孤独への過度の嗜好。", "バレエマニア:バレエに関する異常な愛好心。", "書籍約盗癖:本を盗みたいという強迫的衝動。", "書物マニア:本または読書、あるいはその両方への執着。", "歯ぎしりマニア:歯ぎしりしたいという強迫的衝動。", "悪霊マニア:誰かの中に邪悪な精霊がいるという病的な信念。", "自己愛マニア:自分自身の美への執着。", "地図マニア:いたる所の地図を見る制御不可能な強迫的衝動。", "飛び降りマニア:高い場所から跳躍することへの執着。", "寒冷マニア:冷たさ、または冷たいもの、あるいはその両方への異常な欲望。", "舞踏マニア:踊ることへの愛好もしくは制御不可能な熱狂。", "睡眠マニア:寝ることへの過度の願望。", "墓地マニア:墓地への執着。", "色彩マニア:特定の色への執着。", "ピエロマニア:ピエロへの執着。", "遭遇マニア:恐ろしい状況を経験したいという強迫的衝動。", "殺害マニア:殺害への執着。", "悪魔マニア:誰かが悪魔にとりつかれているという病的な信念。", "皮膚マニア:人の皮膚を引っぱりたいという強迫的衝動。", "正義マニア:正義が完遂されるのを見たいという執着。", "アルコールマニア:アルコールに関する異常な欲求。", "毛皮マニア:毛皮を所有することへの執着。", "贈り物マニア:贈り物を与えることへの執着。", "逃走マニア:逃走することへの迫的衝動。", "外出マニア:外を歩き回ることの強迫的衝動。", "自己中心マニア:不合理な自心の態度か自己崇拝。", "公職マニア:公的な職業に就きいという強欲な衝動。", "戦慄マニア:誰かが罪を犯したという病的な信念", "知識マニア:知識を得ることへ執着。", "静寂マニア:静寂であることへ強迫的衝動。", "エーテルマニア:エーテルへの切望", "求婚マニア:奇妙な求婚をすることへの執着。", "笑いマニア:制御不可能な笑うことへの強迫的衝動。", "魔術マニア:魔女と魔術への執着。", "筆記マニア:すべてを書き留めることへの執着。", "裸体マニア:裸になりたいという強迫的衝動。", "幻想マニア:快い幻想(現実とは関係なく)にとらわれやすい異常な傾向。", "蟲マニア:蟲に関する過度の嗜好。", "火器マニア:火器への執着。", "水マニア:水に関する不合理な渇望。", "魚マニア:魚への執着。", "アイコンマニア:像や肖像への執着。", "アイドルマニア:偶像への執着または献身。", "情報マニア:事実を集めることへの過度の献身。", "絶叫マニア:叫ぶことへの説明できない強迫的衝動。", "窃盗マニア:盗むことへの説明できない強迫的衝動。", "騒音マニア:大きな、あるいは甲高い騒音を出すことへの制御不可能な強迫的衝動。", "ひもマニア:ひもへの執着。", "宝くじマニア:宝くじに参加したいという極度の願望。", "うつマニア:異常に深くふさぎ込む傾向。", "巨石マニア:環状列石/立石があると奇妙な考えにとらわれる異常な傾向。", "音楽マニア:音楽もしくは特定の旋律への執着。", "作詩マニア:詩を書くことへの強欲な願望。", "憎悪マニア:何らかの対象あるいはグループの何もかもを憎む執着。", "偏執マニア:ただ1つの思想やアイデアへの異常な執着。", "虚言マニア:異常なほどにうそをついたり、誇張して話す。", "疾病マニア:想像上の病気に苦められる幻想。", "記録マニア:あらゆるものを記録に残そうという強迫的衝動。", "名前マニア:人々、場所、ものなどの名前への執着", "単語マニア:ある単語を繰り返したいという押さえ切れない欲求。", "爪損傷マニア:指の爪をむしったりはがそうとする強迫的衝動。", "美食マニア:1種類の食物への異常な愛。", "不平マニア:不平を言うことへの異常な喜び。", "仮面マニア:仮面や覆面を着けたいという強迫的衝動。", "幽霊マニア:幽霊への執着。", "殺人マニア:殺人への病的な傾向。", "光線マニア:光への病的な願望。", "放浪マニア:社会の規範に背きたいという異常な欲望。", "長者マニア:富への強迫的な欲望。", "病的虚言マニア:うそをつきたくてたまらない強迫的衝動。", "放火マニア:火をつけることへの強迫的衝動。", "質問マニア:質問したいという激しい強迫的衝動。", "鼻マニア:鼻をいじりたいという強迫的衝動。", "落書きマニア:いらずら書きや落書きへの執着。", "列車マニア:列車と鉄道旅行への強い魅了。", "知性マニア:誰かが信じられないほど知的であるという幻想。", "テクノマニア:新技術への執着。", "タナトスマニア:誰かが死を招く魔術によって呪われているという信念。", "宗教マニア:その人が神であるという信仰。", "かき傷マニア:かき傷をつけることへの強迫的衝動。", "手術マニア:外科手術を行なうことへの不合理な嗜好。", "抜毛マニア:自分の髪を引き抜くことへの切望。", "失明マニア:病的な視覚障害。", "異国マニア:外国のものへの執着。", "動物マニア:動物への正気でない溺愛。"].$freeze()); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; - - Opal.add_stubs(['$require', '$setPrefixes', '$===', '$getCheckResult', '$getCombineRoll', '$getFullAutoResult', '$roll_bmr_table', '$roll_bms_table', '$roll_1d20_table', '$roll_1d100_table', '$private', '$roll', '$-', '$[]', '$freeze']); - - self.$require("diceBot/Cthulhu7th"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'PulpCthulhu'); - - var $nesting = [self].concat($parent_nesting), $PulpCthulhu_rollDiceCommand$1, $PulpCthulhu_roll_1d20_table$2, $PulpCthulhu_roll_bmr_table$3, $PulpCthulhu_roll_bms_table$4; - - - Opal.const_set($nesting[0], 'ID', "PulpCthulhu"); - Opal.const_set($nesting[0], 'NAME', "パルプ・クトゥルフ"); - Opal.const_set($nesting[0], 'SORT_KEY', "はるふくとうるふ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "※私家翻訳のため、用語・ルールの詳細については原本を参照願います。\n" + "※コマンドは入力内容の前方一致で検出しています。\n" + "・判定 CC(x)<=(目標値)\n" + " x:ボーナス・ペナルティダイス (2~-2)。省略可。\n" + " 目標値が無くても1D100は表示される。\n" + " ファンブル/失敗/\n" + " 成功/ハード成功/イクストリーム成功/クリティカル を自動判定。\n" + "例)CC<=30 CC(2)<=50 CC(-1)<=75 CC-1<=50 CC1<=65 CC\n" + "\n" + "・組み合わせ判定 (CBR(x,y))\n" + " 目標値 x と y で%ロールを行い、成否を判定。\n" + " 例)CBR(50,20)\n" + "\n" + "・自動火器の射撃判定 FAR(w,x,y,z,d)\n" + " w:弾丸の数(1~100)、x:技能値(1~100)、y:故障ナンバー、\n" + " z:ボーナス・ペナルティダイス(-2~2)。省略可。\n" + " d:指定難易度で連射を終える(レギュラー:r,ハード:h,イクストリーム:e)。省略可。\n" + " 命中数と貫通数、残弾数のみ算出。ダメージ算出はありません。\n" + "例)FAR(25,70,98) FAR(50,80,98,-1) far(30,70,99,1,R)\n" + "  far(25,88,96,2,h) FaR(40,77,100,,e)\n" + "\n" + "・各種表\n" + " 【狂気関連】\n" + " ・狂気の発作(リアルタイム)(Bouts of Madness Real Time) BMR\n" + " ・狂気の発作(サマリー)(Bouts of Madness Summary) BMS\n" + " ・恐怖症(Sample Phobias)表 PH/マニア(Sample Manias)表 MA\n" + " ・狂気のタレント(Insane Talents)表 IT\n" + " 【魔術関連】\n" + " ・プッシュ時のキャスティング・ロールの失敗(Failed Casting Effects)表 FCE\n"); - self.$setPrefixes(["CC\\(\\d+\\)", "CC.*", "CBR\\(\\d+,\\d+\\)", "FAR.*", "BMR", "BMS", "FCE", "PH", "MA", "IT"]); - - Opal.def(self, '$rollDiceCommand', $PulpCthulhu_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if (/^CC/i['$===']($case)) {return self.$getCheckResult(command)} - else if (/^CBR/i['$===']($case)) {return self.$getCombineRoll(command)} - else if (/^FAR/i['$===']($case)) {return self.$getFullAutoResult(command)} - else if (/^BMR/i['$===']($case)) {return self.$roll_bmr_table()} - else if (/^BMS/i['$===']($case)) {return self.$roll_bms_table()} - else if (/^FCE/i['$===']($case)) {return self.$roll_1d20_table("キャスティング・ロール失敗表", $$($nesting, 'FAILED_CASTING_EFFECTS_TABLE'))} - else if (/^PH/i['$===']($case)) {return self.$roll_1d100_table("恐怖症表", $$($nesting, 'PHOBIAS_TABLE'))} - else if (/^MA/i['$===']($case)) {return self.$roll_1d100_table("マニア表", $$($nesting, 'MANIAS_TABLE'))} - else if (/^IT/i['$===']($case)) {return self.$roll_1d20_table("狂気のタレント表", $$($nesting, 'INSANE_TALENTS_TABLE'))} - else {return nil}})() - }, $PulpCthulhu_rollDiceCommand$1.$$arity = 1); - self.$private(); - - Opal.def(self, '$roll_1d20_table', $PulpCthulhu_roll_1d20_table$2 = function $$roll_1d20_table(table_name, table) { - var $a, $b, self = this, total_n = nil, index = nil, text = nil; - - - $b = self.$roll(1, 20), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(total_n, 1); - text = table['$[]'](index); - return "" + (table_name) + "(" + (total_n) + ") > " + (text); - }, $PulpCthulhu_roll_1d20_table$2.$$arity = 2); - - Opal.def(self, '$roll_bmr_table', $PulpCthulhu_roll_bmr_table$3 = function $$roll_bmr_table() { - var $a, $b, self = this, total_n = nil, text = nil, time_n = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - text = $$($nesting, 'MADNESS_REAL_TIME_TABLE')['$[]']($rb_minus(total_n, 1)); - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (time_n = ($a[0] == null ? nil : $a[0])), $b; - return "" + "狂気の発作(リアルタイム)(" + (total_n) + ") > " + (text) + "(1D10>" + (time_n) + "ラウンド)"; - }, $PulpCthulhu_roll_bmr_table$3.$$arity = 0); - Opal.const_set($nesting[0], 'MADNESS_REAL_TIME_TABLE', ["健忘症:ヒーローは自分自身がヒーローである考えをやめ、1D10ラウンドの間パルプのタレントを失う。", "狂った計画:1D10ラウンドの間ヒーローは不合理的または非効率的な計画を考えつく。その計画は敵を有利にするものかもしれないし、ヒーローの仲間に対して危険を高めるものかもしれない。", "怒り:頭に血が上り1D10ラウンドの間、周囲の人間、味方、敵問わず暴力と破壊を振りまく。", "おごり高ぶる:1D10ラウンドの間ヒーローは威張り散らし、自らの計画を大声で叫ぶように強制される。「私と私の盟友達がこの巣穴に潜むグール達を一掃する!! だがしかし、その前に一言言わせてもらいたい」", "リラックス:ヒーローが目の前の驚異が気にするほどの物でないと思い1D10ラウンドの間その場に座り込む。彼は葉巻を吸ったり、スキットルで乾杯するのに時間を使うかもしれない。", "パニックになって逃亡する:1台のみの車に乗り、例え仲間を置き去りにしていくことになっても、ヒーローは手段さえあれば可能な限り遠くへ行こうとします。1D10ラウンドの間、逃げ続ける。", "注目を集めたがる:ヒーローは1D10ラウンドの間注目を集めようとする。恐らく無謀な事を行うことだろう。", "アルター・エゴ(もう一人の僕!):ヒーローは完全な変化を受け、1D10ラウンドの間、完全に別の人格に入れ替わる。入れ替わった人格はヒーローの性格と真逆のものだ。そのヒーローが親切であれば、もう1人の自分は不親切だ。一方が利己的であれば、もう1人の自分は利他的となる。もし特定のヒーローが永久的な狂気に陥った場合、キーパーは原因である怪物の自我を生み出すことに使用する事もできる。", "恐怖症:ヒーローは新しい恐怖症に陥る。恐怖症表(PHコマンド)をロールするか、キーパーが恐怖症を1つ選ぶ。恐怖症の原因は存在しなくとも、その探索者は次の1D10ラウンドの間、それがそこにあると思い込む。", "マニア:ヒーローは新しいマニアに陥る。マニア表(MAコマンド)をロールするか、キーパーがマニアを1つ選ぶ。その探索者は次の1D10ラウンドの間、自分の新しいマニアに没頭しようとする。"].$freeze()); - - Opal.def(self, '$roll_bms_table', $PulpCthulhu_roll_bms_table$4 = function $$roll_bms_table() { - var $a, $b, self = this, total_n = nil, text = nil, time_n = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - text = $$($nesting, 'MADNESS_SUMMARY_TABLE')['$[]']($rb_minus(total_n, 1)); - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (time_n = ($a[0] == null ? nil : $a[0])), $b; - return "" + "狂気の発作(サマリー)(" + (total_n) + ") > " + (text) + "(1D10>" + (time_n) + "時間)"; - }, $PulpCthulhu_roll_bms_table$4.$$arity = 0); - Opal.const_set($nesting[0], 'MADNESS_SUMMARY_TABLE', ["健忘症:ヒーローは自分が誰であるかの記憶を失い、パルプのタレントを失い、自分のいる場所に大きな違和感を覚える。彼らの記憶は時間の経過と共にゆっくりと戻る。彼らのパルプのタレントは危機的な状況でのみ戻る。この場合、危機的状況とは誰かの命が晒されているなどの場合と定義する。誰かの命が脅かされるとヒーローは〈幸運〉ロールをう。成功すればタレントは戻る。失敗すれば1D10ラウンド後にもう一度行うことができる。", "盗難:1D10時間後にヒーローは意識を取り戻す。彼は無傷だ。彼が宝物を持っている場合それが盗まれたかどうかを知るために〈幸運〉ロールを行う。価値のあるものは全て自動的に失われる。", "暴行:ヒーローは1D10時間後に目覚め、体中が痣や傷だらけであることに気づく。耐久力が半分になる。物は奪われていない。どの様な被害にあったかは、キーパーに委ねられる。", "暴力:暴力と破壊衝動をヒーローは爆発させる。1D10時間後にヒーローの意識が戻るとき、彼らが行った行動を覚えているかもしれない。ヒーローが誰に対して暴力を振るったか、誰を殺したかはキーパーに委ねられる。", "イデオロギー/信念:ヒーローのイデオロギーと信念、背景を証明しようとする。ヒーローは極端に狂い、実証的なやり方でこれらの1つを証明しようとする。一般的にこのような結果はヒーローが人類を傷つけ、正義という名の誇大妄想を抱く事につながる。", "重要な人々:ヒーローの背景情報を見て関係を持つ重要な人々を参照する。(1D10時間以上)ヒーローはその人物に近づき、その人の為に最善を尽くす。", "収容:ヒーローは高セキュリティの精神病院または警察の監獄で目を覚ます。彼らはそこで自分が犯した出来事をゆっくりと思い出すかもしれない。", "パニック:ヒーローが目覚めると元いた場所から遠く離れた場所にいることに気づく。彼らはエンパイア・ステート・ビルの屋上、ホワイト・ハウスの中、または軍事本部の中心にいるかもしれない。それは注目を集める事になるだろう、何故彼らがその場にいるのかは彼らにもわからない。", "恐怖症:ヒーロー新たな恐怖症を獲得する。恐怖症表(PHコマンド)をロールするか、キーパーがどれか1つ選ぶ。探索者は1D10時間後に意識を取り戻し、この新たな恐怖症の対象を避けるためにあらゆる努力をしている。", "マニア:ヒーローは新たなマニアを獲得する。マニア表(MAコマンド)をロールするか、キーパーがどれか1つ選ぶ。この狂気の発作の間、探索者はこの新たなマニアに完全に溺れているだろう。これがほかの人々に気づかれるかどうかは、キーパーとプレイヤーに委ねられる。"].$freeze()); - Opal.const_set($nesting[0], 'FAILED_CASTING_EFFECTS_TABLE', ["叙事詩的な雷と稲光。", "1D6ラウンドの一時的な盲目(成功難易度を変化させる/ペナルティ・ダイスを1つ加える)。", "どこかから強い風が吹きつける(幸運ロールに失敗すると紙や本などの軽い持ち物を失う)。", "壁や床や窓などから輝く緑の粘体が発生する(0/1D3の正気度喪失)", "キーパーが選んだ奇妙な幻覚に襲われる(見たものに適した正気度喪失)", "その付近の小動物たちが爆発する(0/1D3の正気度喪失)。", "呪文の使い手の髪が真っ白になる。", "大きな姿のない悲鳴が聞こえる(0/1の正気度喪失)", "1D4ラウンドの間、目から血を流す(成功難易度を変化させる/ペナルティ・ダイスを1つ加える)。", "硫黄の臭いがする。", "大地が震え、壁に亀裂が入って崩れる。", "呪文の使い手の手がしおれて、燃え(どちらの手なのか幸運ロールで決定する)、1D2のHPを失う。(キーパーの裁量で、手が一時的に燃えるか(手を使用する必要がある技能ロールとDEXロールのすべてにペナルティ・ダイスが加わる)、または永久にしおれて黒くなる(DEXと手を使用する必要がある技能のすべてを20ポイント減少する。))", "1D6ラウンドの間、血が空から降る。", "呪文の使い手は異常に年をとる(+2D10歳と能力値の修正)。", "呪文の使い手の皮膚が永久的に半透明になる(その呪文の使い手を見た者は1/1D4の正気度喪失)。", "呪文の使い手は1D10のPOWを獲得するが、1D10の正気度も失う。", "クトゥルフ神話の怪物が偶然召喚される。", "キーパーはランダムに2つの呪文を選び、両方が発動する(呪文の使い手を中心に)。", "呪文の使い手と近くの全員が、別の場所に吸い込まれる(キーパーがどこかは決定する)。", "クトゥルフ神話の神格が偶然招来される。"].$freeze()); - return Opal.const_set($nesting[0], 'INSANE_TALENTS_TABLE', ["狂気的筋力:「私は無尽蔵の内なる力の蓄えを引き出す!」1つのSTRロールにボーナス・ダイスを1つ得る。ロールが失敗した場合、何かがうまくいかない。キーパーは、ヒーローが負傷した(1D3+ヒーローのDBのダメージを筋断裂等により受ける)か、働きかけたものが壊れるかを選ぶ。", "狂気的敏捷性:「私の手は目で見えるよりも素早く動く!」1つのDEXロールにボーナス・ダイスを1つ得る。ロールに失敗した場合、何かがうまくいかない。キーパーは、ヒーローが負傷した(1D4のダメージを受ける)か、彼らが働きかけていたものを壊してしまう。", "狂気的精神力:「私を流れるパワーを感じることができる!」1つのPOWロールにボーナス・ダイスを1つ得る。ロールに失敗した倍、何かがうまくいかない。キーパーは、ヒーローが意識を失うか、達成しようとしていた効果が、意図していた以上にかなり危険になる。", "狂気的体力:「歯軋りをしても痛みを感じない!」かなりのダメージを受けたときに、ヒーローはCONロールをすることを選ぶかもしれない。成功すれば、苦痛に耐え、ダメージを半減させる。ロールに失敗した場合は、ロールしたダメージを受け、地面へと倒れ、1D3ラウンド無能力化される。", "狂気的外見:「くそ、私がかわい子ちゃんに!」ヒーローは、どういうわけかとても違って見える。これは純粋に表情と姿勢に現れるか、あるいは彼らの服や髪が何か根本的に時間をかけて変わる(服が魔法のように変わるのではなく、彼らが自分で変える)。APPや魅惑や言いくるめなどの彼らの外見によって影響を受けるかもしれないロールにボーナス・ダイスを1つ得る。この効果は短命だが、1つのシーンや会議などの一定の時間内の全ての交流に適応される。『改善された』外見のためにこのボーナス・ダイスを使用し、ロールに失敗した場合、彼らは社会的な不名誉や悪い結果に苦しめられることになる。", "狂気的回想力:「私は全てを完全に覚えている!」ヒーローがこれまでに聞いた事実と記憶をすぐに手に入れられる。顔、数字、細部の情報が、情報の洪水の中で彼らの精神に押し寄せてくる。ヒーローが一度聞いたあるいは見たことのありそうな情報を思い出そうとする時の、EDUか知識か技能ロール1つにボーナス・ダイスを1つ得る。ロールに失敗した場合、情報の洪水は多すぎた!1正気度ポイントを失い、1つの狂気の発作に苦しむ。ヒーローがまだ狂気でないのであれば、彼らは今や一時的な狂人となる。", "狂気的スピード:「私を見ろ、私は弾丸よりも早いぞ!」1つのチェイスに入った時に、ヒーローは移動率を決めるためのCONロールにボーナス・ダイスを1つ得る。ロールが成功すれば、1移動率が上がる。ロールが極限の成功をした場合には、2上がる。ロールが失敗した場合は、彼らは何かをしくじって、少なくとも1D3回の行動を失う。", "狂気的運転手:「今や私を止められるものなど誰もいない!」あるチェイスにおけるヒーローの全ての運転ロールにボーナス・ダイスを1つ得る。運転ロールが失敗した場合、彼らはどういうわけか(キーパーの裁量で)車両のコントロールを失う。", "狂気的言語:「いやはや、スワヒリ語の勉強をこれまでしたことはないのですが、これは難しいのでしょうかね?」ヒーローは短期間、全ての現代の言語(あるいは古風なある言語、またはあるクトゥルフ神話の言語)を一時的に理解する。この効果は魔道書を最初に読んだり、会話を行ったり、スピーチを聞けるくらいに十分な長さがある。事実上の技能としては75%だ。新たな言語の使用に技能ロールが必要な場合、その失敗は、ヒーローが1D6日間の間母国語を忘れ、その時に使用された新たな言語が代わりに母国語になるということを意味する。", "狂気的精度:「私には当たる気しかしないよ!」ヒーローは彼らの銃が空になるまで、全ての火器ロールにボーナス・ダイスを1つ得る。彼らの射撃がターゲットの1つに当たらないか、弾薬がなくなるまで、ボーナス・ダイスを使い続けることができる。その当たらなかった弾丸は当たって欲しくないものに当たる(味方の1人かすごく価値のある何かに、極限の成功(貫通)をしたかのようにダメージを与える)。", "狂気的脅し:「お前、俺が愉快なんだと思うかい?どこが愉快なんだ?」ヒーローは威圧ロールにボーナスを1つ得る。ロールに失敗した場合、彼らは短期間彼らの行動を制御できなくなる。キーパーが何が起こるか(彼らが暴力的に激怒する(会話している人にダメージを与える可能性がある)か、見くびられ恥を受けるか)を決める。", "狂気的回避:「蝶のように舞う!」ヒーローは回避ロールに失敗するまで、現在の戦闘シーンにおける全ての回避ロールにボーナス・ダイスを1つ得る。この失敗は、攻撃に自ら突っ込んでいくことを示しており、その場合、攻撃が極限の成功を収めたかのようにダメージを受ける。", "狂気的方向感覚:「ついて来て、こっちがそうだよ!」ヒーローのプレイヤーはキーパーに彼らがどこに行きたいのか、あるいは何に向かいたいのかを伝える。キーパーはこれが達成されるであろう方向を示す。ヒーローは幸運ロールをし、ロールに失敗した場合は、彼らは何かしらの種類の罠や危険な遭遇へと直進していく。", "狂気的理解:「ああ、今それが分かった!」ヒーローのプレイヤーはプロットに関する質問をすることができる。「なぜ敵が~をしているの?」、「敵は~によって達成しようとしていることは何です?」、「我々が敵の計画を妨害することができる最良の行動は何です?」、「敵の最大の弱点は何です?」などだ。質問はかなり具体的でなければならず、キーパーは正直に答えるべきである。このタレントは一度しか使用できず、使用すれば失われる。", "狂気的視界:「光?誰が必要なんだい?」ヒーローは1つの目星ロールにボーナス・ダイスを1つ得る。完全な暗闇の中でさえも、彼らは夕暮れのようにロールすることができる。ロールに失敗した場合、キーパーは、目が敏感になりすぎて痛みが生じる(1D10ラウンドの間事実上に盲目になる)、またはこれから1時間妄想に悩ませられることになるかを決定する。", "狂気的聴覚:「みんな静かにして、何かカチカチ音がしない?」ヒーローは、1つの聞き耳ロールにボーナス・ダイスを1つ得る。周囲の騒音や他の音によらずに、彼らはその中で最も静かな音でさえも拾うことができる。キーパーは、何らかの突発的なノイズが1D10分間彼らを聴覚障害にするか、またはこれから1時間聴覚的な妄想にとらわれるかを決定する。", "狂気的隠密:「私のこと見えてないんだよね?」ヒーローは1つのステルスロールにボーナス・ダイスを1つ得る。彼らは猫のような優雅さで移動し、丸見えのような場所にさえ隠れようとするかもしれない。ロールが失敗したのであれば、彼らは誤って何かを壊したり、大きな騒ぎを引き起こす。", "狂気的獰猛さ:「お前を粉みじんに叩き切ってみせるぜ!」ヒーローは全ての近接攻撃のダメージロールを2回行い、最良の結果を得る。欠点としては、いったん命中すると彼らは止められないことだ!彼らは最後の一撃を与えるまで、攻撃し続ける。これを止めるための方法は2つしかない。彼らが意識不明になるか、誰かが困難難易度の言いくるめか、魅惑か、威圧ロールを彼らに成功させた場合がそうだ(1戦闘ラウンドで、1人の人物のみがこれらの状態のヒーローの1人に試みることができる)。", "狂気的技能増強:「あんたは私が狂ってると思うのか?だがあんたに教えることができるぞ!」狂気の副作用として、ヒーローはクトゥルフ神話のいくつかの側面を伴う、彼らの技能の1つ(プレイヤーが選び、キーパーが許可を与えたもの)を強化することができる。これはその技能で達成できることの範囲に影響する。ハーバート・ウェストとクロフォード・ティリンギャーストの両方が、これがどのようにその人物に影響を与えるかについての事前研究の良い候補者となる。", "狂気的技能増強:「あんたは私が狂ってると思うのか?だがあんたに教えることができるぞ!」狂気の副作用として、ヒーローはクトゥルフ神話のいくつかの側面を伴う、彼らの技能の1つ(プレイヤーが選び、キーパーが許可を与えたもの)を強化することができる。これはその技能で達成できることの範囲に影響する。ハーバート・ウェストとクロフォード・ティリンギャーストの両方が、これがどのようにその人物に影響を与えるかについての事前研究の良い候補者となる。"].$freeze()); - })($nesting[0], $$($nesting, 'Cthulhu7th'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Raisondetre.js b/src/assets/dicebot/Raisondetre.js deleted file mode 100644 index b644ae1ee..000000000 --- a/src/assets/dicebot/Raisondetre.js +++ /dev/null @@ -1,226 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$===', '$to_i', '$last_match', '$nil?', '$*', '$checkRoll', '$>', '$+', '$<', '$checkDamage', '$<=', '$roll', '$gsub', '$collect', '$split', '$map!', '$-', '$join', '$sort', '$select', '$>=', '$size', '$count', '$reverse', '$delete', '$slice', '$inject', '$each', '$push']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Raisondetre'); - - var $nesting = [self].concat($parent_nesting), $Raisondetre_initialize$1, $Raisondetre_rollDiceCommand$2, $Raisondetre_checkRoll$3, $Raisondetre_checkDamage$7; - - self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "Raisondetre"); - Opal.const_set($nesting[0], 'NAME', "叛逆レゾンデートル"); - Opal.const_set($nesting[0], 'SORT_KEY', "はんきやくれそんてとおる"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "判定:[判定値]RD[技能][@目標値]\n" + "ダメージロール:[ダイス数]DD[装甲]\n" + "\n" + "[]内のコマンドは省略可能。\n" + "「判定値」で判定に使用するダイス数を指定。省略時は「1」。0以下も指定可。\n" + "「技能」で有効なダイス数を指定。省略時は「1」。\n" + "達成値はクリティカルを含めて、「最も高くなる」ように計算します。\n" + "「@目標値」指定で、判定の成否を追加表示します。\n" + "\n" + "ダメージロールは[装甲]指定で、有効なダイス数と0の出目の数を表示します。\n" + "[装甲]省略時は、ダイス結果のみ表示します。(複数の対象への攻撃時用)\n" + "\n" + "【書式例】\n" + "・RD → 1Dで達成値を表示。\n" + "・2RD1@8 → 2D(1個選択)で目標値8の判定。\n" + "・-3RD → 1Dでダイスペナルティ-4の判定。\n" + "・4DD2 → 4Dで装甲2のダメージロール。\n"); - - Opal.def(self, '$initialize', $Raisondetre_initialize$1 = function $$initialize() { - var $iter = $Raisondetre_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Raisondetre_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Raisondetre_initialize$1, false), $zuper, $iter); - return (self.sortType = 1); - }, $Raisondetre_initialize$1.$$arity = 0); - self.$setPrefixes(["(-)?(\\d+)?RD(\\d+)?(@(\\d+))?", "(-)?(\\d+)?DD([1-9])?([\\+\\-]\\d+)?"]); - - Opal.def(self, '$rollDiceCommand', $Raisondetre_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, self = this, diceCount = nil, choiceCount = nil, target = nil, armor = nil; - - - if ($truthy(/(-)?(\d+)?RD(\d+)?(@(\d+))?$/i['$==='](command))) { - - diceCount = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : 1).$to_i(); - if ($truthy($$($nesting, 'Regexp').$last_match(1)['$nil?']())) { - } else { - diceCount = $rb_times(diceCount, -1) - }; - choiceCount = ($truthy($a = $$($nesting, 'Regexp').$last_match(3)) ? $a : 1).$to_i(); - target = ($truthy($a = $$($nesting, 'Regexp').$last_match(5)) ? $a : 0).$to_i(); - return self.$checkRoll(diceCount, choiceCount, target); - } else if ($truthy(/(-)?(\d+)?DD([1-9])?([\+\-]\d+)?$/i['$==='](command))) { - - diceCount = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : 1).$to_i(); - if ($truthy($$($nesting, 'Regexp').$last_match(1)['$nil?']())) { - } else { - diceCount = $rb_times(diceCount, -1) - }; - armor = ($truthy($a = $$($nesting, 'Regexp').$last_match(3)) ? $a : 0).$to_i(); - if ($truthy($rb_gt(armor, 0))) { - - armor = $rb_plus(armor, ($truthy($a = $$($nesting, 'Regexp').$last_match(4)) ? $a : 0).$to_i()); - if ($truthy($rb_lt(armor, 1))) { - armor = 1}; - if ($truthy($rb_gt(armor, 9))) { - armor = 9};}; - return self.$checkDamage(diceCount, armor);}; - return nil; - }, $Raisondetre_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$checkRoll', $Raisondetre_checkRoll$3 = function $$checkRoll(diceCount, choiceCount, target) { - var $a, $b, $$4, $$5, $$6, self = this, correction = nil, rollCount = nil, _dice = nil, diceText = nil, diceText2 = nil, diceArray = nil, funbleArray = nil, isFunble = nil, dice = nil, success = nil, criticalCount = nil, critical = nil, choiceArray = nil, choiceText = nil, result = nil; - - - if ($truthy($rb_le(diceCount, 0))) { - - correction = $rb_plus(1, $rb_times(diceCount, -1)); - rollCount = 1; - } else { - - correction = 0; - rollCount = diceCount; - }; - $b = self.$roll(rollCount, 10, self.sortType), $a = Opal.to_ary($b), (_dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceText2 = diceText.$gsub("10", "0"); - diceArray = $send(diceText2.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - $send(diceArray, 'map!', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - return $rb_minus(i, correction);}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - diceText2 = diceArray.$sort().$join(","); - funbleArray = $send(diceArray, 'select', [], ($$6 = function(i){var self = $$6.$$s || this; - - - - if (i == null) { - i = nil; - }; - return $rb_le(i, 1);}, $$6.$$s = self, $$6.$$arity = 1, $$6)); - isFunble = $rb_ge(funbleArray.$size(), rollCount); - dice = 0; - success = 0; - if ($truthy(isFunble)) { - } else { - - criticalCount = diceArray.$count(0); - critical = $rb_times(criticalCount, 10); - choiceArray = diceArray.$reverse(); - choiceArray.$delete(0); - choiceArray = choiceArray.$slice(Opal.Range.$new(0, $rb_minus(choiceCount, 1), false)); - choiceText = choiceArray.$join(","); - dice = choiceArray.$inject("+"); - success = $rb_plus(dice, critical); - }; - result = "" + (rollCount) + "D10"; - if ($truthy($rb_gt(correction, 0))) { - result = $rb_plus(result, "" + "-" + (correction))}; - result = $rb_plus(result, "" + " > [" + (diceText) + "] > [" + (diceText2) + "] > "); - if ($truthy(isFunble)) { - result = $rb_plus(result, "達成値:0 (Funble)") - } else { - - result = $rb_plus(result, "" + (dice) + "[" + (choiceText) + "]"); - if ($truthy($rb_gt(critical, 0))) { - result = $rb_plus(result, "" + "+" + (critical))}; - result = $rb_plus(result, "" + "=達成値:" + (success)); - if ($truthy($rb_gt(critical, 0))) { - result = $rb_plus(result, "" + " (" + (criticalCount) + "Critical)")}; - }; - if ($truthy($rb_gt(target, 0))) { - - result = $rb_plus(result, "" + ">=" + (target) + " "); - if ($truthy($rb_ge(success, target))) { - result = $rb_plus(result, "【成功】")}; - if ($truthy($rb_lt(success, target))) { - result = $rb_plus(result, "【失敗】")};}; - return result; - }, $Raisondetre_checkRoll$3.$$arity = 3); - return (Opal.def(self, '$checkDamage', $Raisondetre_checkDamage$7 = function $$checkDamage(diceCount, armor) { - var $a, $b, $$8, $$9, $$10, self = this, correction = nil, rollCount = nil, _dice = nil, diceText = nil, diceText2 = nil, diceArray = nil, criticalCount = nil, result = nil, resultArray = nil, success = nil, resultText = nil; - - - if ($truthy($rb_le(diceCount, 0))) { - - correction = $rb_plus(1, $rb_times(diceCount, -1)); - rollCount = 1; - } else { - - correction = 0; - rollCount = diceCount; - }; - $b = self.$roll(rollCount, 10, self.sortType), $a = Opal.to_ary($b), (_dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceText2 = diceText.$gsub("10", "0"); - diceArray = $send(diceText2.$split(/,/), 'collect', [], ($$8 = function(i){var self = $$8.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$8.$$s = self, $$8.$$arity = 1, $$8)).$sort(); - criticalCount = diceArray.$count(0); - $send(diceArray, 'map!', [], ($$9 = function(i){var self = $$9.$$s || this; - - - - if (i == null) { - i = nil; - }; - return $rb_minus(i, correction);}, $$9.$$s = self, $$9.$$arity = 1, $$9)); - diceText2 = diceArray.$join(","); - result = "" + (rollCount) + "D10"; - if ($truthy($rb_gt(correction, 0))) { - result = $rb_plus(result, "" + "-" + (correction))}; - result = $rb_plus(result, "" + " > [" + (diceText) + "] > [" + (diceText2) + "]"); - if ($truthy($rb_gt(armor, 0))) { - - resultArray = []; - success = 0; - $send(diceArray, 'each', [], ($$10 = function(i){var self = $$10.$$s || this; - - - - if (i == null) { - i = nil; - }; - if ($truthy($rb_ge(i, armor))) { - - resultArray.$push(i); - return (success = $rb_plus(success, 1)); - } else { - return resultArray.$push("×") - };}, $$10.$$s = self, $$10.$$arity = 1, $$10)); - resultText = resultArray.$join(","); - result = $rb_plus(result, "" + " > [" + (resultText) + "]>=" + (armor) + " 有効数:" + (success));}; - result = $rb_plus(result, "" + " 0=" + (criticalCount) + "個"); - return result; - }, $Raisondetre_checkDamage$7.$$arity = 2), nil) && 'checkDamage'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/RecordOfLodossWar.js b/src/assets/dicebot/RecordOfLodossWar.js deleted file mode 100644 index f28948044..000000000 --- a/src/assets/dicebot/RecordOfLodossWar.js +++ /dev/null @@ -1,557 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/normalize"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; - - Opal.add_stubs(['$module_function', '$===', '$==', '$to_i']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Normalize'); - - var $nesting = [self].concat($parent_nesting), $Normalize_comparison_operator$1, $Normalize_target_number$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Normalize_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if (/<=|==|=>/['$===']($case)) {return ">="} - else if (/<>|!=|=!/['$===']($case)) {return "!="} - else if (//['$===']($case)) {return ">"} - else if (/\=/['$===']($case)) {return "=="} - else { return nil }})() - }, $Normalize_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$target_number', $Normalize_target_number$2 = function $$target_number(val) { - var self = this; - - if (val['$==']("?")) { - return val - } else { - return val.$to_i() - } - }, $Normalize_target_number$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/command_parser"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$attr_accessor', '$include', '$format_modifier', '$===', '$join', '$tokenize', '$new', '$lhs', '$take_cmp_op', '$cmp_op=', '$-', '$cmp_op', '$expr', '$target_number=', '$<', '$size', '$private', '$split', '$gsub', '$take', '$literal?', '$command_suffix', '$loop', '$consume', '$+', '$mul', '$command=', '$modify_number=', '$critical', '$unary', '$critical=', '$fumble', '$fumble=', '$dollar', '$dollar=', '$each', '$==', '$=~', '$[]', '$comparison_operator']); - - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/normalize"); - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'CommandParser'); - - var $nesting = [self].concat($parent_nesting), $CommandParser_initialize$1, $CommandParser_parse$4, $CommandParser_tokenize$5, $CommandParser_lhs$7, $CommandParser_command_suffix$9, $CommandParser_literal$ques$11, $CommandParser_take$13, $CommandParser_take_cmp_op$14; - - self.$$prototype.error = self.$$prototype.parsed = self.$$prototype.idx = self.$$prototype.tokens = self.$$prototype.literals = nil; - - - Opal.def(self, '$initialize', $CommandParser_initialize$1 = function $$initialize($a) { - var $post_args, literals, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - literals = $post_args;; - self.literals = literals; - return (self.round_type = "omit"); - }, $CommandParser_initialize$1.$$arity = -1); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Parsed'); - - var $nesting = [self].concat($parent_nesting), $Parsed_initialize$2, $Parsed_to_s$3; - - self.$$prototype.critical = self.$$prototype.fumble = self.$$prototype.dollar = self.$$prototype.modify_number = self.$$prototype.command = self.$$prototype.cmp_op = self.$$prototype.target_number = nil; - - self.$attr_accessor("command", "critical", "fumble", "dollar", "modify_number", "cmp_op", "target_number"); - self.$include($$($nesting, 'ModifierFormatter')); - - Opal.def(self, '$initialize', $Parsed_initialize$2 = function $$initialize() { - var self = this; - - - self.critical = nil; - self.fumble = nil; - return (self.dollar = nil); - }, $Parsed_initialize$2.$$arity = 0); - return (Opal.def(self, '$to_s', $Parsed_to_s$3 = function $$to_s(suffix_position) { - var self = this, c = nil, f = nil, d = nil, m = nil, $case = nil; - - - - if (suffix_position == null) { - suffix_position = "after_command"; - }; - c = (function() {if ($truthy(self.critical)) { - return "" + "@" + (self.critical) - } else { - return nil - }; return nil; })(); - f = (function() {if ($truthy(self.fumble)) { - return "" + "#" + (self.fumble) - } else { - return nil - }; return nil; })(); - d = (function() {if ($truthy(self.dollar)) { - return "" + "$" + (self.dollar) - } else { - return nil - }; return nil; })(); - m = self.$format_modifier(self.modify_number); - return (function() {$case = suffix_position; - if ("after_command"['$===']($case)) {return [self.command, c, f, d, m, self.cmp_op, self.target_number].$join()} - else if ("after_modify_number"['$===']($case)) {return [self.command, m, c, f, d, self.cmp_op, self.target_number].$join()} - else if ("after_target_number"['$===']($case)) {return [self.command, m, self.cmp_op, self.target_number, c, f, d].$join()} - else { return nil }})(); - }, $Parsed_to_s$3.$$arity = -1), nil) && 'to_s'; - })($nesting[0], null, $nesting); - - Opal.def(self, '$parse', $CommandParser_parse$4 = function $$parse(expr, round_type) { - var $a, self = this, $writer = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - self.parsed = $$($nesting, 'Parsed').$new(); - self.$lhs(); - if ($truthy(self.error)) { - return nil}; - - $writer = [self.$take_cmp_op()]; - $send(self.parsed, 'cmp_op=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(self.parsed.$cmp_op())) { - return self.$expr() - } else { - return nil - }; return nil; })()]; - $send(self.parsed, 'target_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy(($truthy($a = $rb_lt(self.idx, self.tokens.$size())) ? $a : self.error))) { - return nil}; - return self.parsed; - }, $CommandParser_parse$4.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $CommandParser_tokenize$5 = function $$tokenize(expr) { - var $$6, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-*\/@#\$]|[<>!=]+/], ($$6 = function(e){var self = $$6.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$split(" ") - }, $CommandParser_tokenize$5.$$arity = 1); - - Opal.def(self, '$lhs', $CommandParser_lhs$7 = function $$lhs() { - var $$8, self = this, command = nil, ret = nil, $writer = nil; - - - command = self.$take(); - if ($truthy(self['$literal?'](command))) { - } else { - - self.error = true; - return nil; - }; - self.$command_suffix(); - ret = 0; - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$8 = function(){var self = $$8.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$8.$$s = self, $$8.$$brk = $brk, $$8.$$arity = 0, $$8)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - self.$command_suffix(); - - $writer = [command]; - $send(self.parsed, 'command=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [ret]; - $send(self.parsed, 'modify_number=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - }, $CommandParser_lhs$7.$$arity = 0); - - Opal.def(self, '$command_suffix', $CommandParser_command_suffix$9 = function $$command_suffix() { - var $$10, self = this; - - return (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$10 = function(){var self = $$10.$$s || this, $writer = nil; - if (self.parsed == null) self.parsed = nil; - - if ($truthy(self.$consume("@"))) { - - if ($truthy(self.parsed.$critical())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'critical=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else if ($truthy(self.$consume("#"))) { - - if ($truthy(self.parsed.$fumble())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'fumble=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else if ($truthy(self.$consume("$"))) { - - if ($truthy(self.parsed.$dollar())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'dollar=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else { - - Opal.brk(nil, $brk) - }}, $$10.$$s = self, $$10.$$brk = $brk, $$10.$$arity = 0, $$10)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})() - }, $CommandParser_command_suffix$9.$$arity = 0); - - Opal.def(self, '$literal?', $CommandParser_literal$ques$11 = function(command) {try { - - var $$12, self = this; - - - $send(self.literals, 'each', [], ($$12 = function(lit){var self = $$12.$$s || this, $case = nil; - - - - if (lit == null) { - lit = nil; - }; - return (function() {$case = lit; - if ($$($nesting, 'String')['$===']($case)) {if (command['$=='](lit)) { - Opal.ret(true) - } else { - return nil - }} - else if ($$($nesting, 'Regexp')['$===']($case)) {if ($truthy(command['$=~'](lit))) { - Opal.ret(true) - } else { - return nil - }} - else { return nil }})();}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - return false; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $CommandParser_literal$ques$11.$$arity = 1); - - Opal.def(self, '$take', $CommandParser_take$13 = function $$take() { - var self = this, ret = nil; - - - ret = self.tokens['$[]'](self.idx); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $CommandParser_take$13.$$arity = 0); - return (Opal.def(self, '$take_cmp_op', $CommandParser_take_cmp_op$14 = function $$take_cmp_op() { - var self = this; - - return $$($nesting, 'Normalize').$comparison_operator(self.$take()) - }, $CommandParser_take_cmp_op$14.$$arity = 0), nil) && 'take_cmp_op'; - })($nesting[0], $$($nesting, 'ArithmeticEvaluator'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$freeze', '$setPrefixes', '$new', '$parse', '$nil?', '$!', '$include?', '$cmp_op', '$==', '$command', '$ceil', '$/', '$to_f', '$target_number', '$roll', '$>=', '$<=', '$compact', '$to_s', '$join']); - - self.$require("utils/command_parser"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RecordOfLodossWar'); - - var $nesting = [self].concat($parent_nesting), $RecordOfLodossWar_rollDiceCommand$1; - - - Opal.const_set($nesting[0], 'ID', "RecordOfLodossWar".$freeze()); - Opal.const_set($nesting[0], 'NAME', "ロードス島戦記RPG".$freeze()); - Opal.const_set($nesting[0], 'SORT_KEY', "ろおとすとうせんきRPG".$freeze()); - Opal.const_set($nesting[0], 'HELP_MESSAGE', ((((((((("" + "●判定\n") + " LW<=(目標値)で判定。\n") + " 達成値が目標値の1/10(端数切り上げ)以下であれば大成功。1~10であれば自動成功。\n") + " 91~100であれば自動失敗となります。\n") + "\n") + "●回避判定\n") + " LWD<=(目標値)で回避判定。この時出目が51以上で自動失敗となります。\n") + "\n") + " 判定と回避判定は、どちらもコマンドだけの場合、出目の表示と自動成功と自動失敗の判定のみを行います。\n").$freeze()); - self.$setPrefixes(["LW.*"]); - return (Opal.def(self, '$rollDiceCommand', $RecordOfLodossWar_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $b, self = this, parser = nil, cmd = nil, auto_failure = nil, critical = nil, dice_value = nil, result = nil, sequence = nil; - - - parser = $$($nesting, 'CommandParser').$new("LW", "LWD"); - cmd = parser.$parse(command); - if ($truthy(($truthy($a = cmd['$nil?']()) ? $a : [nil, "<="]['$include?'](cmd.$cmp_op())['$!']()))) { - return nil}; - auto_failure = (function() {if (cmd.$command()['$==']("LWD")) { - return 51 - } else { - return 91 - }; return nil; })(); - critical = $rb_divide(cmd.$target_number().$to_f(), 10).$ceil(); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (dice_value = ($a[0] == null ? nil : $a[0])), $b; - result = (function() {if ($truthy($rb_ge(dice_value, auto_failure))) { - return "" + "自動失敗(" + (auto_failure) + ")" - } else if ($truthy($rb_le(dice_value, critical))) { - return "" + "大成功(" + (critical) + ")" - } else if ($truthy($rb_le(dice_value, 10))) { - return "自動成功" - } else if ($truthy(cmd.$cmp_op())) { - if ($truthy($rb_le(dice_value, cmd.$target_number()))) { - return "成功" - } else { - return "失敗" - } - } else { - return nil - }; return nil; })(); - sequence = ["" + "(1D100" + (cmd.$cmp_op()) + (cmd.$target_number()) + ")", dice_value.$to_s(), result].$compact(); - return sequence.$join(" > "); - }, $RecordOfLodossWar_rollDiceCommand$1.$$arity = 1), nil) && 'rollDiceCommand'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/RecordOfSteam.js b/src/assets/dicebot/RecordOfSteam.js deleted file mode 100644 index a6dd72f3c..000000000 --- a/src/assets/dicebot/RecordOfSteam.js +++ /dev/null @@ -1,163 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$=~', '$to_i', '$last_match', '$>=', '$getDiceRollResult', '$getRoundCountText', '$getSuccessText', '$getSpecialText', '$getFumbleText', '$>', '$roll', '$debug', '$!=', '$+', '$collect', '$split', '$==', '$length', '$uniq', '$<=', '$first', '$*', '$map']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RecordOfSteam'); - - var $nesting = [self].concat($parent_nesting), $RecordOfSteam_rollDiceCommand$1, $RecordOfSteam_getDiceRollResult$2, $RecordOfSteam_getRoundCountText$5, $RecordOfSteam_getSuccessText$6, $RecordOfSteam_getSpecialText$7, $RecordOfSteam_getFumbleText$8; - - - Opal.const_set($nesting[0], 'ID', "RecordOfSteam"); - Opal.const_set($nesting[0], 'NAME', "Record of Steam"); - Opal.const_set($nesting[0], 'SORT_KEY', "れこおとおふすちいむ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "2S2@1\n" + "RecordOfSteam : (2S2@1) > 1,2,3,4 > 1回転 > 成功数2\n" + "\n" + "4S3@2\n" + "RecordOfSteam : (4S3@2) > 2,1,2,4,4,4,2,3,4,5,6,6 > 4回転 > 成功数5\n"); - self.$setPrefixes(["\\d+S\\d+.*"]); - - Opal.def(self, '$rollDiceCommand', $RecordOfSteam_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $b, self = this, diceCount = nil, targetNumber = nil, criticalValue = nil, specialValue = nil, rollResult = nil, successCount = nil, roundCount = nil, specialCount = nil, fumbleCount = nil, output = nil, roundCountText = nil, successText = nil, specialText = nil, fumbleText = nil, result = nil; - - - if ($truthy(/(\d+)[sS](\d+)(@(\d+))?/i['$=~'](command))) { - } else { - return "1" - }; - diceCount = $$($nesting, 'Regexp').$last_match(1).$to_i(); - targetNumber = $$($nesting, 'Regexp').$last_match(2).$to_i(); - criticalValue = $$($nesting, 'Regexp').$last_match(4); - criticalValue = ($truthy($a = criticalValue) ? $a : 1); - criticalValue = criticalValue.$to_i(); - if ($truthy($rb_ge(diceCount, 150))) { - return "(多分)無限個なので振れません! ヤメテクダサイ、(プロセスが)死んでしまいますっ"}; - if ($truthy($rb_ge(criticalValue, 3))) { - return "(多分)無限個なので振れません! ヤメテクダサイ、(プロセスが)死んでしまいますっ"}; - specialValue = criticalValue; - $b = self.$getDiceRollResult(diceCount, targetNumber, criticalValue, specialValue), $a = Opal.to_ary($b), (rollResult = ($a[0] == null ? nil : $a[0])), (successCount = ($a[1] == null ? nil : $a[1])), (roundCount = ($a[2] == null ? nil : $a[2])), (specialCount = ($a[3] == null ? nil : $a[3])), (fumbleCount = ($a[4] == null ? nil : $a[4])), $b; - output = "" + "(" + (command) + ") > " + (rollResult); - roundCountText = self.$getRoundCountText(roundCount); - successText = self.$getSuccessText(successCount); - specialText = self.$getSpecialText(specialCount); - fumbleText = self.$getFumbleText(fumbleCount); - result = "" + (output) + (roundCountText) + (specialText) + (successText) + (fumbleText); - return result; - }, $RecordOfSteam_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$getDiceRollResult', $RecordOfSteam_getDiceRollResult$2 = function $$getDiceRollResult(diceCount, targetNumber, criticalValue, specialValue) { - var $a, $b, $c, $$3, $$4, self = this, successCount = nil, roundCount = nil, rollResult = nil, specialCount = nil, specialFlag = nil, fumbleCount = nil, fumbleFlag = nil, _ = nil, diceListText = nil, diceList = nil; - - - successCount = 0; - roundCount = 0; - rollResult = ""; - specialCount = 0; - specialFlag = false; - fumbleCount = 0; - fumbleFlag = false; - while ($truthy($rb_gt(diceCount, 0))) { - - $c = self.$roll(diceCount, 6), $b = Opal.to_ary($c), (_ = ($b[0] == null ? nil : $b[0])), (diceListText = ($b[1] == null ? nil : $b[1])), $c; - self.$debug("diceListText", diceListText); - if ($truthy(rollResult['$!='](""))) { - rollResult = $rb_plus(rollResult, ",")}; - rollResult = $rb_plus(rollResult, diceListText); - diceList = $send(diceListText.$split(/,/), 'collect', [], ($$3 = function(i){var self = $$3.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$3.$$s = self, $$3.$$arity = 1, $$3)); - if ($truthy((($b = diceList.$uniq().$length()['$=='](1)) ? roundCount['$=='](0) : diceList.$uniq().$length()['$=='](1)))) { - if ($truthy($rb_le(diceList.$uniq().$first(), specialValue))) { - specialFlag = true - } else if (diceList.$uniq().$first()['$=='](6)) { - fumbleFlag = true}}; - self.$debug("diceList", diceList); - if ($truthy(specialFlag)) { - - specialCount = 1; - successCount = $rb_times(diceCount, 3); - return [rollResult, successCount, roundCount, specialCount, fumbleCount]; - } else if ($truthy(fumbleFlag)) { - - fumbleCount = 1; - return [rollResult, successCount, roundCount, specialCount, fumbleCount];}; - diceCount = 0; - $send(diceList, 'map', [], ($$4 = function(diceValue){var self = $$4.$$s || this; - - - - if (diceValue == null) { - diceValue = nil; - }; - self.$debug("diceValue", diceValue); - self.$debug("criticalValue", criticalValue); - self.$debug("specialValue", specialValue); - if ($truthy($rb_le(diceValue, criticalValue))) { - - diceCount = $rb_plus(diceCount, 2); - roundCount = $rb_plus(roundCount, 1);}; - if ($truthy($rb_le(diceValue, targetNumber))) { - return (successCount = $rb_plus(successCount, 1)) - } else { - return nil - };}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - }; - return [rollResult, successCount, roundCount, specialCount, fumbleCount]; - }, $RecordOfSteam_getDiceRollResult$2.$$arity = 4); - - Opal.def(self, '$getRoundCountText', $RecordOfSteam_getRoundCountText$5 = function $$getRoundCountText(roundCount) { - var self = this; - - - if ($truthy($rb_le(roundCount, 0))) { - return ""}; - return "" + " > " + (roundCount) + "回転"; - }, $RecordOfSteam_getRoundCountText$5.$$arity = 1); - - Opal.def(self, '$getSuccessText', $RecordOfSteam_getSuccessText$6 = function $$getSuccessText(successCount) { - var self = this; - - - if ($truthy($rb_gt(successCount, 0))) { - return "" + " > 成功数" + (successCount)}; - return " > 失敗"; - }, $RecordOfSteam_getSuccessText$6.$$arity = 1); - - Opal.def(self, '$getSpecialText', $RecordOfSteam_getSpecialText$7 = function $$getSpecialText(specialCount) { - var self = this; - - if (specialCount['$=='](1)) { - return " > スペシャル" - } else { - return nil - } - }, $RecordOfSteam_getSpecialText$7.$$arity = 1); - return (Opal.def(self, '$getFumbleText', $RecordOfSteam_getFumbleText$8 = function $$getFumbleText(fumbleCount) { - var self = this; - - if (fumbleCount['$=='](1)) { - return " > ファンブル" - } else { - return nil - } - }, $RecordOfSteam_getFumbleText$8.$$arity = 1), nil) && 'getFumbleText'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/RokumonSekai2.js b/src/assets/dicebot/RokumonSekai2.js deleted file mode 100644 index 831c0d7cc..000000000 --- a/src/assets/dicebot/RokumonSekai2.js +++ /dev/null @@ -1,149 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$debug', '$gsub', '$last_match', '$checkRoll', '$=~', '$to_i', '$parren_killer', '$rokumon2_roll', '$rokumon2_suc_rank', '$!=', '$+', '$roll', '$abs', '$collect', '$split', '$times', '$<', '$shift', '$pop', '$each', '$>=', '$<=', '$==', '$[]']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RokumonSekai2'); - - var $nesting = [self].concat($parent_nesting), $RokumonSekai2_initialize$1, $RokumonSekai2_changeText$2, $RokumonSekai2_dice_command_xRn$5, $RokumonSekai2_checkRoll$6, $RokumonSekai2_rokumon2_roll$7, $RokumonSekai2_rokumon2_suc_rank$11; - - - Opal.const_set($nesting[0], 'ID', "RokumonSekai2"); - Opal.const_set($nesting[0], 'NAME', "六門世界RPG セカンドエディション"); - Opal.const_set($nesting[0], 'SORT_KEY', "ろくもんせかいRPG2"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + "aRSm<=t\n" + "能力値a,修正値m,目標値tで判定ロールを行います。\n" + "Rコマンド(3R6m<=t[a])に読み替えます。\n" + "成功度、評価、ボーナスダイスを自動表示します。\n" + " 例) 3RS+1<=9 3R6+1<=9[3]\n"); - self.$setPrefixes(["\\d+RS"]); - - Opal.def(self, '$initialize', $RokumonSekai2_initialize$1 = function $$initialize() { - var $iter = $RokumonSekai2_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $RokumonSekai2_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $RokumonSekai2_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.sortType = 1); - }, $RokumonSekai2_initialize$1.$$arity = 0); - - Opal.def(self, '$changeText', $RokumonSekai2_changeText$2 = function $$changeText(string) { - var $$3, $$4, self = this; - - - self.$debug("parren_killer_add begin stirng", string); - string = $send(string, 'gsub', [/(\d+)RS([\+\-][\+\-\d]+)<=(\d+)/i], ($$3 = function(){var self = $$3.$$s || this; - - return "" + "3R6" + ($$($nesting, 'Regexp').$last_match(2)) + "<=" + ($$($nesting, 'Regexp').$last_match(3)) + "[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - string = $send(string, 'gsub', [/(\d+)RS<=(\d+)/i], ($$4 = function(){var self = $$4.$$s || this; - - return "" + "3R6<=" + ($$($nesting, 'Regexp').$last_match(2)) + "[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - self.$debug("parren_killer_add end stirng", string); - return string; - }, $RokumonSekai2_changeText$2.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $RokumonSekai2_dice_command_xRn$5 = function $$dice_command_xRn(string, nick_e) { - var self = this; - - return self.$checkRoll(string, nick_e) - }, $RokumonSekai2_dice_command_xRn$5.$$arity = 2); - - Opal.def(self, '$checkRoll', $RokumonSekai2_checkRoll$6 = function $$checkRoll(string, nick_e) { - var $a, $b, self = this, output = nil, modText = nil, target = nil, abl = nil, mod = nil, dstr = nil, suc = nil, sum = nil; - - - output = "1"; - if ($truthy(/3R6([\+\-\d]*)<=(\d+)\[(\d+)\]/i['$=~'](string))) { - } else { - return output - }; - modText = $$($nesting, 'Regexp').$last_match(1); - target = $$($nesting, 'Regexp').$last_match(2).$to_i(); - abl = $$($nesting, 'Regexp').$last_match(3).$to_i(); - mod = 0; - if ($truthy(modText)) { - mod = self.$parren_killer("" + "(0" + (modText) + ")").$to_i()}; - $b = self.$rokumon2_roll(mod, target, abl), $a = Opal.to_ary($b), (dstr = ($a[0] == null ? nil : $a[0])), (suc = ($a[1] == null ? nil : $a[1])), (sum = ($a[2] == null ? nil : $a[2])), $b; - output = "" + (sum) + "[" + (dstr) + "] > " + (suc) + " > 評価" + (self.$rokumon2_suc_rank(suc)); - if ($truthy(suc['$!='](0))) { - output = $rb_plus(output, "" + "(+" + (suc) + "d6)")}; - output = "" + (nick_e) + ": (" + (string) + ") > " + (output); - return output; - }, $RokumonSekai2_checkRoll$6.$$arity = 2); - - Opal.def(self, '$rokumon2_roll', $RokumonSekai2_rokumon2_roll$7 = function $$rokumon2_roll(mod, target, abl) { - var $a, $b, $$8, $$9, $$10, self = this, suc = nil, _ = nil, dicestr = nil, dice = nil, cnt5 = nil, cnt2 = nil, sum = nil; - - - suc = 0; - $b = self.$roll($rb_plus(3, mod.$abs()), 6, 1), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dicestr = ($a[1] == null ? nil : $a[1])), $b; - dice = $send(dicestr.$split(/,/), 'collect', [], ($$8 = function(i){var self = $$8.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$8.$$s = self, $$8.$$arity = 1, $$8)); - $send(mod.$abs(), 'times', [], ($$9 = function(_i){var self = $$9.$$s || this; - - - - if (_i == null) { - _i = nil; - }; - if ($truthy($rb_lt(mod, 0))) { - return dice.$shift() - } else { - return dice.$pop() - };}, $$9.$$s = self, $$9.$$arity = 1, $$9)); - cnt5 = 0; - cnt2 = 0; - sum = 0; - $send(dice, 'each', [], ($$10 = function(die1){var self = $$10.$$s || this; - - - - if (die1 == null) { - die1 = nil; - }; - if ($truthy($rb_ge(die1, 5))) { - cnt5 = $rb_plus(cnt5, 1)}; - if ($truthy($rb_le(die1, 2))) { - cnt2 = $rb_plus(cnt2, 1)}; - if ($truthy($rb_le(die1, abl))) { - suc = $rb_plus(suc, 1)}; - return (sum = $rb_plus(sum, die1));}, $$10.$$s = self, $$10.$$arity = 1, $$10)); - if ($truthy($rb_lt(sum, target))) { - suc = $rb_plus(suc, 2) - } else if (sum['$=='](target)) { - suc = $rb_plus(suc, 1)}; - if ($truthy($rb_ge(cnt5, 3))) { - suc = 0}; - if ($truthy($rb_ge(cnt2, 3))) { - suc = 5}; - return [dicestr, suc, sum]; - }, $RokumonSekai2_rokumon2_roll$7.$$arity = 3); - return (Opal.def(self, '$rokumon2_suc_rank', $RokumonSekai2_rokumon2_suc_rank$11 = function $$rokumon2_suc_rank(suc) { - var self = this, suc_rank = nil; - - - suc_rank = ["E", "D", "C", "B", "A", "S"]; - return suc_rank['$[]'](suc); - }, $RokumonSekai2_rokumon2_suc_rank$11.$$arity = 1), nil) && 'rokumon2_suc_rank'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/RoleMaster.js b/src/assets/dicebot/RoleMaster.js deleted file mode 100644 index 5c12436bf..000000000 --- a/src/assets/dicebot/RoleMaster.js +++ /dev/null @@ -1,29 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send; - - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RoleMaster'); - - var $nesting = [self].concat($parent_nesting), $RoleMaster_initialize$1; - - - Opal.const_set($nesting[0], 'ID', "RoleMaster"); - Opal.const_set($nesting[0], 'NAME', "ロールマスター"); - Opal.const_set($nesting[0], 'SORT_KEY', "ろおるますたあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "上方無限ロール(xUn)の境界値を96にセットします。\n"); - return (Opal.def(self, '$initialize', $RoleMaster_initialize$1 = function $$initialize() { - var $iter = $RoleMaster_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $RoleMaster_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $RoleMaster_initialize$1, false), $zuper, $iter); - self.upperRollThreshold = 96; - return (self.unlimitedRollDiceType = 100); - }, $RoleMaster_initialize$1.$$arity = 0), nil) && 'initialize'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/RuneQuest.js b/src/assets/dicebot/RuneQuest.js deleted file mode 100644 index bb5ff0efa..000000000 --- a/src/assets/dicebot/RuneQuest.js +++ /dev/null @@ -1,54 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$round', '$/', '$to_f', '$<=', '$>=', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RuneQuest'); - - var $nesting = [self].concat($parent_nesting), $RuneQuest_check_1D100$1; - - - Opal.const_set($nesting[0], 'ID', "RuneQuest"); - Opal.const_set($nesting[0], 'NAME', "ルーンクエスト"); - Opal.const_set($nesting[0], 'SORT_KEY', "るうんくえすと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "クリティカル、エフェクティブ(効果的成功)、ファンブルの自動判定を行います。\n"); - return (Opal.def(self, '$check_1D100', $RuneQuest_check_1D100$1 = function $$check_1D100(total, _dice_total, cmp_op, target) { - var $a, self = this, critical_value = nil; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return nil - }; - critical_value = $rb_divide(target.$to_f(), 20).$round(); - if ($truthy(($truthy($a = $rb_le(total, 1)) ? $a : $rb_le(total, critical_value)))) { - return " > 決定的成功" - } else if ($truthy($rb_ge(total, 100))) { - return " > 致命的失敗" - } else if ($truthy($rb_le(total, $rb_divide(target.$to_f(), 5).$round()))) { - return " > 効果的成功" - } else if ($truthy($rb_le(total, target))) { - return " > 成功" - } else if ($truthy($rb_ge(total, $rb_plus(95, critical_value)))) { - return " > 致命的失敗" - } else { - return " > 失敗" - }; - }, $RuneQuest_check_1D100$1.$$arity = 4), nil) && 'check_1D100'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/RyuTuber.js b/src/assets/dicebot/RyuTuber.js deleted file mode 100644 index cbf854286..000000000 --- a/src/assets/dicebot/RyuTuber.js +++ /dev/null @@ -1,77 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$freeze', '$match', '$raise', '$to_i', '$[]', '$roll', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Table'); - - var $nesting = [self].concat($parent_nesting), $Table_initialize$1, $Table_roll$2; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $Table_initialize$1 = function $$initialize(name, type, items) { - var self = this, m = nil; - - - self.name = name; - self.items = items.$freeze(); - m = /(\d+)D(\d+)/i.$match(type); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "Unexpected table type: " + (type)) - }; - self.times = m['$[]'](1).$to_i(); - return (self.sides = m['$[]'](2).$to_i()); - }, $Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $Table_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, value = nil, index = nil; - - - $b = bcdice.$roll(self.times, self.sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(value, self.times); - return "" + (self.name) + "(" + (value) + ") > " + (self.items['$[]'](index)); - }, $Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$freeze', '$roll_tables', '$[]', '$chomp', '$new', '$setPrefixes', '$+', '$keys']); - - self.$require("utils/table"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'RyuTuber'); - - var $nesting = [self].concat($parent_nesting), $RyuTuber_rollDiceCommand$1; - - - Opal.const_set($nesting[0], 'ID', "RyuTuber".$freeze()); - Opal.const_set($nesting[0], 'NAME', "リューチューバーとちいさな奇跡".$freeze()); - Opal.const_set($nesting[0], 'SORT_KEY', "りゆうちゆうはあとちいさなきせき".$freeze()); - Opal.const_set($nesting[0], 'HELP_MESSAGE', ((((((((((((((((((((((((("" + "◆判定\n") + " ・判定 nB6<=1\n") + "  ※ n:サイコロの数 例)12B6<=1 サイコロの数12個の場合\n") + " ・判定ルールを表示する RTB\n") + "◆職業 (カッコ内は使えそうな技能)\n") + " ・職業表 JT\n") + " ・学生表 JST\n") + " ・技術・専門職表 JTPT\n") + " ・事務・サービス職表 JOST\n") + " ・エンタメ職表 JET\n") + "◆趣味 (カッコ内は使えそうな技能)\n") + " ・趣味表 HT\n") + " ・多人数でできる趣味表 HGT\n") + " ・一人でできるインドア趣味表A HIAT\n") + " ・一人でできるインドア趣味表B HIBT\n") + " ・一人でできるアウトドア趣味表A HOAT\n") + " ・一人でできるアウトドア趣味表B HOBT\n") + "◆奇跡の演目を表示する\n") + " ・幸運の風が吹いている MPW\n") + " ・困った時はお互い様 MPT\n") + " ・悪い予感は的中する MPF\n") + " ・ついていい嘘もある MPL\n") + " ・私には星が見えている MPS\n") + " ・心は竜と共にあり MPD\n") + " ・人は石垣、人は城 MPH\n").$freeze()); - - Opal.def(self, '$rollDiceCommand', $RyuTuber_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, ret = nil, text = nil; - - - if ($truthy((ret = self.$roll_tables(command, $$($nesting, 'TABLES'))))) { - return ret}; - if ($truthy((text = $$($nesting, 'TEXTS')['$[]'](command)))) { - return text.$chomp()}; - return nil; - }, $RyuTuber_rollDiceCommand$1.$$arity = 1); - Opal.const_set($nesting[0], 'TEXTS', $hash2(["RTB", "MPW", "MPT", "MPF", "MPL", "MPS", "MPD", "MPH"], {"RTB": "" + "判定ルール表示\n" + "①枠主が判定内容を宣言、判定参加者が行動宣言\n" + "②サイコロは竜の巫女なら6個、技能レベルか指定魅力の値個、奇跡の演目を1つ以上クリアで+6個、スパの消費数個\n" + "③振ったサイコロの「1の目」の数が目標値以上なら華麗に成功、目標値未満ならちょっと残念な結果\n", "MPW": "" + "幸運の風が吹いている\n" + "奇跡 以降ゲーム終了まで、サイコロ+1\n" + "①健気に頑張る姿を見せる。\n" + "②報われることはなく、さらに最悪の展開に。\n" + "③それでも健気なところを見せる。\n", "MPT": "" + "困った時はお互い様\n" + "奇跡 そのプレイヤーの判定サイコロを1回振り直しできる\n" + "①けちな様子を見せる。\n" + "②困っている人に施しをする姿を見られる。\n" + "③窮地に陥る。\n", "MPF": "" + "悪い予感は的中する\n" + "奇跡 1判定だけ、サイコロ+3\n" + "①犠牲者が悪い噂を耳にする。\n" + "②犠牲者が悪い冗談を言う。\n" + "③犠牲者が悪い予感に心さざめき、誰かに悪い予感を話す。\n", "MPL": "" + "ついていい嘘もある\n" + "奇跡 ついた(ささやかな)嘘が本当になる 枠主判断でいつか発動する。\n" + "①嘘を言う。\n" + "②嘘によって窮地に立つ。\n" + "③嘘を嘘にしないためにあがく。\n", "MPS": "" + "私には星が見えている\n" + "奇跡 指定したキャラクターの次の行動がわかる\n" + "①少し先のことを言い当てる。\n" + "②気味が悪いと噂になる。\n" + "③言い当てる力を人間観察に用いる。\n", "MPD": "" + "心は竜と共にあり\n" + "奇跡 起こりうる不幸を阻止する\n" + "①心清いひとに助けられる。\n" + "②自分の性根悪さを悲しむ。\n" + "③自分なりのやり方で心清い行いをする。\n", "MPH": "" + "人は石垣、人は城\n" + "奇跡 感化された周りの人が手伝うようになる\n" + "①人々の不幸を見て、親切にしてしまう。\n" + "②けなげに頑張る姿を見られる。\n" + "③見ていた人々が集まってくる。\n"}).$freeze()); - Opal.const_set($nesting[0], 'TABLES', $hash2(["JT", "JST", "JTPT", "JOST", "JET", "HT", "HGT", "HIAT", "HIBT", "HOAT", "HOBT"], {"JT": $$($nesting, 'Table').$new("職業表", "1D6", ["学生表へ", "技術・専門職表へ", "技術・専門職表へ", "事務・サービス職表へ", "事務・サービス職表へ", "エンタメ職表へ"]), "JST": $$($nesting, 'Table').$new("学生表", "1D6", ["中学生 (ゲーム 運動する)", "高校生(文系) (仲良くする 文章を書く)", "高校生(理系) (仲良くする 科学の知識)", "専門学校生 (ものづくり 設計する)", "大学生(文系) (社会の仕組み 外国語)", "大学生(理系) (すごい技術 科学の知識)"]), "JTPT": $$($nesting, 'Table').$new("技術・専門職表", "2D6", ["勝負師・山師 (洞察力 精神力)", "漁師/猟師 (自然の知識 料理する)", "建築家、大工 (設計する 運転する)", "料理人 (料理する ものづくり)", "職人 (ものづくり 丁寧)", "農家 (自然の知識 育てる)", "医療・福祉関係(医師、薬剤師、介護職) (治す 科学の知識)", "美容、スタイリスト (見た目を整える 仲良くする)", "プログラマー (プログラム 設計する)", "士業(税理士、弁護士、行政書士等) (社会の仕組み 事務仕事)", "研究者 (教える すごい技術)"]), "JOST": $$($nesting, 'Table').$new("事務・サービス職表", "2D6", ["宗教関係(巫女、僧侶など) (お祈りする 地元知識)", "観光、旅行 (外国語 地元知識)", "教師、保育士 (教える 育てる)", "運転手、配達員 (運転する 地元知識)", "自宅警備員 (ゲーム 想像力)", "サラリーマン (事務仕事 仲良くする)", "店員 (丁寧 商品知識)", "公務員 (事務仕事 地元知識)", "警察、自衛隊、消防士 (社会の仕組み 戦う)", "投資家、金融業、不動産 (プレゼンする 事務仕事)", "経営者 (社会の仕組み 仲良くする)"]), "JET": $$($nesting, 'Table').$new("エンタメ職表", "2D6", ["ゲーム制作 (プログラム ものづくり)", "写真家 (自然の知識 絵を描く)", "デザイナー (設計する 見た目を整える)", "ライター (文章を書く 想像力)", "イラストレーター (絵を描く 見た目を整える)", "専業配信者 (プレゼンする カリスマ)", "声優 (声を出す 演技する)", "ミュージシャン (声を出す 音楽)", "アイドル・芸能人 (演技する カリスマ)", "プロゲーマー (ゲーム 戦う)", "プロスポーツ選手 (運動する 精神力)"]), "HT": $$($nesting, 'Table').$new("趣味表", "1D6", ["多人数でできる趣味表へ", "多人数でできる趣味表へ", "一人でできるインドア趣味表Aへ", "一人でできるインドア趣味表Bへ", "一人でできるアウトドア趣味表Aへ", "一人でできるアウトドア趣味表Bへ"]), "HGT": $$($nesting, 'Table').$new("多人数でできる趣味表", "1D6", ["家族サービス (仲良くする 育てる)", "野球・フットサル (仲良くする 運動する)", "ボードゲーム/TRPG/囲碁/将棋 (ゲーム 想像する)", "ボランティア (忍耐力 カリスマ)", "サバイバルゲーム (戦う 隠れる)", "バンド (音楽 見た目を整える)"]), "HIAT": $$($nesting, 'Table').$new("一人でできるインドア趣味表A", "1D6", ["工芸 (ものづくり 想像力)", "編み物 (丁寧 見た目を整える)", "陶芸 (ものづくり 想像力)", "プラモ (ものづくり 見た目を整える)", "同人 (絵を描く 文章を書く)", "読書 (外国語 社会の仕組み)"]), "HIBT": $$($nesting, 'Table').$new("一人でできるインドア趣味表B", "1D6", ["仕事 (事務仕事 忍耐力)", "資格集め (社会の仕組み 商品知識)", "お絵かき (絵を描く 想像力)", "料理 (料理する 設計する)", "筋トレ (運動する 忍耐力)", "コンピューターゲーム (ゲーム プログラム)"]), "HOAT": $$($nesting, 'Table').$new("一人でできるアウトドア趣味表A", "1D6", ["スポーツ観戦 (忍耐力 お祈りする)", "水泳 (運動する 泳ぐ)", "旅行/鉄道 (移動する 外国語)", "写真 (自然の知識 想像力)", "ジグソーパズル (ゲーム 忍耐力)", "マラソン (運動する 忍耐力)"]), "HOBT": $$($nesting, 'Table').$new("一人でできるアウトドア趣味表B", "1D6", ["スキー・スノーボード (運動する 自然の知識)", "自転車 (移動する 運動する)", "盆栽・生花 (丁寧 育てる)", "キャンプ (自然の知識 精神力)", "映画鑑賞 (演技する 想像力)", "恋愛 (仲良くする 見た目を整える)"])}).$freeze()); - return self.$setPrefixes($rb_plus($$($nesting, 'TEXTS').$keys(), $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Ryutama.js b/src/assets/dicebot/Ryutama.js deleted file mode 100644 index b889ade37..000000000 --- a/src/assets/dicebot/Ryutama.js +++ /dev/null @@ -1,208 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$debug', '$===', '$to_i', '$last_match', '$getDiceType', '$==', '$parren_killer', '$+', '$getDiffculty', '$getRollValue', '$getResultText', '$empty?', '$getModifyString', '$getBaseText', '$!=', '$isValidDiceOne', '$isValidDice', '$floor', '$/', '$%', '$include?', '$nil?', '$rand', '$isFamble', '$isCritical', '$>=', '$>', '$to_s', '$<']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Ryutama'); - - var $nesting = [self].concat($parent_nesting), $Ryutama_initialize$1, $Ryutama_rollDiceCommand$2, $Ryutama_getDiceType$3, $Ryutama_isValidDice$4, $Ryutama_isValidDiceOne$5, $Ryutama_getDiffculty$6, $Ryutama_getRollValue$7, $Ryutama_getResultText$8, $Ryutama_isFamble$9, $Ryutama_isCritical$10, $Ryutama_getBaseText$11, $Ryutama_getModifyString$12; - - self.$$prototype.validDiceTypes = nil; - - Opal.const_set($nesting[0], 'ID', "Ryutama"); - Opal.const_set($nesting[0], 'NAME', "りゅうたま"); - Opal.const_set($nesting[0], 'SORT_KEY', "りゆうたま"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + " Rx,y>=t(x,y:使用する能力値、t:目標値)\n" + " 1ゾロ、クリティカルも含めて判定結果を表示します\n" + " 能力値1つでの判定は Rx>=t で行えます\n" + "例)R8,6>=13\n"); - self.$setPrefixes(["R\\d+.*"]); - - Opal.def(self, '$initialize', $Ryutama_initialize$1 = function $$initialize() { - var $iter = $Ryutama_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Ryutama_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Ryutama_initialize$1, false), $zuper, $iter); - return (self.validDiceTypes = [20, 12, 10, 8, 6, 4, 2]); - }, $Ryutama_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Ryutama_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, modifyString = nil, difficulty = nil, modify = nil, value1 = nil, value2 = nil, total = nil, result = nil, value1Text = nil, value2Text = nil, modifyText = nil, baseText = nil, output = nil; - - - self.$debug("rollDiceCommand begin"); - if ($truthy(/^R(\d+)(,(\d+))?([\+\-\d]+)?(>=(\d+))?/['$==='](command))) { - } else { - - self.$debug("unmatched!"); - return ""; - }; - self.$debug("matched"); - dice1 = $$($nesting, 'Regexp').$last_match(1).$to_i(); - dice2 = $$($nesting, 'Regexp').$last_match(3).$to_i(); - modifyString = $$($nesting, 'Regexp').$last_match(4); - difficulty = $$($nesting, 'Regexp').$last_match(6); - $b = self.$getDiceType(dice1, dice2), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), (dice2 = ($a[1] == null ? nil : $a[1])), $b; - if (dice1['$=='](0)) { - return ""}; - modifyString = ($truthy($a = modifyString) ? $a : ""); - modify = self.$parren_killer($rb_plus($rb_plus("(", modifyString), ")")).$to_i(); - difficulty = self.$getDiffculty(difficulty); - value1 = self.$getRollValue(dice1); - value2 = self.$getRollValue(dice2); - total = $rb_plus($rb_plus(value1, value2), modify); - result = self.$getResultText(value1, value2, dice1, dice2, difficulty, total); - if ($truthy(result['$empty?']())) { - } else { - result = "" + " > " + (result) - }; - value1Text = "" + (value1) + "(" + (dice1) + ")"; - value2Text = (function() {if (value2['$=='](0)) { - return "" - } else { - return "" + "+" + (value2) + "(" + (dice2) + ")" - }; return nil; })(); - modifyText = self.$getModifyString(modify); - baseText = self.$getBaseText(dice1, dice2, modify, difficulty); - output = "" + "(" + (baseText) + ") > " + (value1Text) + (value2Text) + (modifyText) + " > " + (total) + (result); - return output; - }, $Ryutama_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getDiceType', $Ryutama_getDiceType$3 = function $$getDiceType(dice1, dice2) { - var self = this, diceBase = nil; - - - self.$debug("getDiceType begin"); - if ($truthy(dice2['$!='](0))) { - if ($truthy(self.$isValidDiceOne(dice1))) { - return [dice1, dice2] - } else { - return [0, 0] - }}; - if ($truthy(self.$isValidDice(dice1, dice2))) { - return [dice1, dice2]}; - diceBase = dice1; - dice1 = $rb_divide(diceBase, 10).$floor(); - dice2 = diceBase['$%'](10); - if ($truthy(self.$isValidDice(dice1, dice2))) { - return [dice1, dice2]}; - dice1 = $rb_divide(diceBase, 100).$floor(); - dice2 = diceBase['$%'](100); - if ($truthy(self.$isValidDice(dice1, dice2))) { - return [dice1, dice2]}; - if ($truthy(self.$isValidDiceOne(diceBase))) { - return [diceBase, 0]}; - return [0, 0]; - }, $Ryutama_getDiceType$3.$$arity = 2); - - Opal.def(self, '$isValidDice', $Ryutama_isValidDice$4 = function $$isValidDice(dice1, dice2) { - var $a, self = this; - - return ($truthy($a = self.$isValidDiceOne(dice1)) ? self.$isValidDiceOne(dice2) : $a) - }, $Ryutama_isValidDice$4.$$arity = 2); - - Opal.def(self, '$isValidDiceOne', $Ryutama_isValidDiceOne$5 = function $$isValidDiceOne(dice) { - var self = this; - - return self.validDiceTypes['$include?'](dice) - }, $Ryutama_isValidDiceOne$5.$$arity = 1); - - Opal.def(self, '$getDiffculty', $Ryutama_getDiffculty$6 = function $$getDiffculty(difficulty) { - var self = this; - - - if ($truthy(difficulty['$nil?']())) { - } else { - difficulty = difficulty.$to_i() - }; - return difficulty; - }, $Ryutama_getDiffculty$6.$$arity = 1); - - Opal.def(self, '$getRollValue', $Ryutama_getRollValue$7 = function $$getRollValue(dice) { - var self = this, value = nil; - - - if (dice['$=='](0)) { - return 0}; - value = $rb_plus(self.$rand(dice), 1); - return value; - }, $Ryutama_getRollValue$7.$$arity = 1); - - Opal.def(self, '$getResultText', $Ryutama_getResultText$8 = function $$getResultText(value1, value2, dice1, dice2, difficulty, total) { - var self = this; - - - if ($truthy(self.$isFamble(value1, value2))) { - return "1ゾロ【1ゾロポイント+1】"}; - if ($truthy(self.$isCritical(value1, value2, dice1, dice2))) { - return "クリティカル成功"}; - if ($truthy(difficulty['$nil?']())) { - return ""}; - if ($truthy($rb_ge(total, difficulty))) { - return "成功"}; - return "失敗"; - }, $Ryutama_getResultText$8.$$arity = 6); - - Opal.def(self, '$isFamble', $Ryutama_isFamble$9 = function $$isFamble(value1, value2) { - var $a, self = this; - - return ($truthy($a = value1['$=='](1)) ? value2['$=='](1) : $a) - }, $Ryutama_isFamble$9.$$arity = 2); - - Opal.def(self, '$isCritical', $Ryutama_isCritical$10 = function $$isCritical(value1, value2, dice1, dice2) { - var $a, self = this; - - - if (value2['$=='](0)) { - return false}; - if ($truthy(($truthy($a = value1['$=='](6)) ? value2['$=='](6) : $a))) { - return true}; - if ($truthy(($truthy($a = value1['$=='](dice1)) ? value2['$=='](dice2) : $a))) { - return true}; - return false; - }, $Ryutama_isCritical$10.$$arity = 4); - - Opal.def(self, '$getBaseText', $Ryutama_getBaseText$11 = function $$getBaseText(dice1, dice2, modify, difficulty) { - var self = this, baseText = nil; - - - baseText = "" + "R" + (dice1); - if ($truthy(dice2['$!='](0))) { - baseText = $rb_plus(baseText, "" + "," + (dice2))}; - baseText = $rb_plus(baseText, self.$getModifyString(modify)); - if ($truthy(difficulty['$nil?']())) { - } else { - baseText = $rb_plus(baseText, "" + ">=" + (difficulty)) - }; - return baseText; - }, $Ryutama_getBaseText$11.$$arity = 4); - return (Opal.def(self, '$getModifyString', $Ryutama_getModifyString$12 = function $$getModifyString(modify) { - var self = this; - - - if ($truthy($rb_gt(modify, 0))) { - return $rb_plus("+", modify.$to_s()) - } else if ($truthy($rb_lt(modify, 0))) { - return modify.$to_s()}; - return ""; - }, $Ryutama_getModifyString$12.$$arity = 1), nil) && 'getModifyString'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/SRS.js b/src/assets/dicebot/SRS.js deleted file mode 100644 index 96566dad0..000000000 --- a/src/assets/dicebot/SRS.js +++ /dev/null @@ -1,1149 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/DiceBot"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$freeze', '$attr_reader', '$map', '$to_proc', '$join', '$private', '$clearPrefixes', '$!', '$empty?', '$prefixs', '$prefixes', '$class', '$warn', '$id', '$setPrefixes', '$attr_accessor', '$name', '$sort_key', '$help_message', '$attr_writer', '$rand', '$roll', '$marshalSignOfInequality', '$unlimitedRollDiceType', '$getD66Value', '$parren_killer', '$debug', '$isGetOriginalMessage', '$getOriginalMessage', '$=~', '$prefixesPattern', '$last_match', '$removeDiceCommandMessage', '$rollDiceCommandCatched', '$nil?', '$!=', '$sub', '$rollDiceCommand', '$to_s', '$backtrace', '$size', '$===', '$check_1D100', '$check_1D20', '$check_2D6', '$check_nD10', '$check_nD6', '$check_nDx', '$is_a?', '$==', '$send', '$get_table_by_nD6', '$get_table_by_nDx', '$getTableValue', '$[]', '$-', '$/', '$getD66', '$bcdice', '$get_table_by_number', '$+', '$*', '$<', '$each', '$>=', '$kind_of?', '$lambda', '$call', '$select', '$public_methods', '$upcase', '$to_i', '$getTableInfoFromExtraTableText', '$get_table_by_nDx_extratable', '$get_table_by_d66', '$floor', '$%', '$get_table_by_d66_swap', '$raise', '$gsub', '$rollTableMessageDiceText', '$split', '$inspect']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'DiceBot'); - - var $nesting = [self].concat($parent_nesting), $DiceBot_initialize$4, $DiceBot_postSet$5, $DiceBot_info$6, $DiceBot_id$7, $DiceBot_gameType$8, $DiceBot_name$9, $DiceBot_gameName$10, $DiceBot_sort_key$11, $DiceBot_help_message$12, $DiceBot_getHelpMessage$13, $DiceBot_prefixes$14, $DiceBot_setSendMode$15, $DiceBot_bcdice$eq$16, $DiceBot_bcdice$17, $DiceBot_rand$18, $DiceBot_roll$19, $DiceBot_marshalSignOfInequality$20, $DiceBot_unlimitedRollDiceType$21, $DiceBot_setSortType$22, $DiceBot_d66$23, $DiceBot_parren_killer$24, $DiceBot_changeText$25, $DiceBot_dice_command$26, $DiceBot_isGetOriginalMessage$27, $DiceBot_removeDiceCommandMessage$28, $DiceBot_rollDiceCommandCatched$29, $DiceBot_rollDiceCommand$30, $DiceBot_dice_command_xRn$31, $DiceBot_check_result$32, $DiceBot_check_nDx$33, $DiceBot_check_1D100$34, $DiceBot_check_1D20$35, $DiceBot_check_nD10$36, $DiceBot_check_2D6$37, $DiceBot_check_nD6$38, $DiceBot_get_table_by_2d6$39, $DiceBot_get_table_by_1d6$40, $DiceBot_get_table_by_nD6$41, $DiceBot_get_table_by_nDx$42, $DiceBot_get_table_by_1d3$43, $DiceBot_getD66$44, $DiceBot_get_table_by_d66_swap$45, $DiceBot_get_table_by_d66$46, $DiceBot_getDiceRolledAdditionalText$47, $DiceBot_getDiceRevision$48, $DiceBot_isD9$49, $DiceBot_getGrichText$50, $DiceBot_should_reroll$ques$51, $DiceBot_get_table_by_number$52, $DiceBot_getTableValue$54, $DiceBot_analyzeDiceCommandResultMethod$56, $DiceBot_get_table_by_nDx_extratable$59, $DiceBot_getTableCommandResult$60, $DiceBot_getTableInfoFromExtraTableText$61, $DiceBot_roll_tables$63; - - self.$$prototype.rerollLimitCount = self.$$prototype.d66Type = nil; - - Opal.const_set($nesting[0], 'EMPTY_PREFIXES_PATTERN', /(^|\s)(S)?()(\s|$)/i.$freeze()); - Opal.const_set($nesting[0], 'ID', "DiceBot"); - Opal.const_set($nesting[0], 'NAME', "DiceBot"); - Opal.const_set($nesting[0], 'SORT_KEY', "*たいすほつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', ""); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $setPrefixes$1, $clearPrefixes$2, $inherited$3; - - - self.$attr_reader("prefixes"); - self.$attr_reader("prefixesPattern"); - - Opal.def(self, '$setPrefixes', $setPrefixes$1 = function $$setPrefixes(prefixes) { - var self = this; - - - self.prefixes = $send(prefixes, 'map', [], "freeze".$to_proc()).$freeze(); - self.prefixesPattern = new RegExp("" + "(^|\\s)(S)?(" + (prefixes.$join("|")) + ")(\\s|$)", 'i').$freeze(); - return self; - }, $setPrefixes$1.$$arity = 1); - - Opal.def(self, '$clearPrefixes', $clearPrefixes$2 = function $$clearPrefixes() { - var self = this; - - - self.prefixes = [].$freeze(); - self.prefixesPattern = $$($nesting, 'EMPTY_PREFIXES_PATTERN'); - return self; - }, $clearPrefixes$2.$$arity = 0); - self.$private(); - return (Opal.def(self, '$inherited', $inherited$3 = function $$inherited(subclass) { - var self = this; - - return subclass.$clearPrefixes() - }, $inherited$3.$$arity = 1), nil) && 'inherited'; - })(Opal.get_singleton_class(self), $nesting); - self.$clearPrefixes(); - (Opal.class_variable_set($nesting[0], '@@bcdice', nil)); - Opal.const_set($nesting[0], 'DEFAULT_SEND_MODE', 2); - - Opal.def(self, '$initialize', $DiceBot_initialize$4 = function $$initialize() { - var $a, self = this; - - - self.sendMode = $$($nesting, 'DEFAULT_SEND_MODE'); - self.sortType = 0; - self.sameDiceRerollCount = 0; - self.sameDiceRerollType = 0; - self.d66Type = 1; - self.isPrintMaxDice = false; - self.upperRollThreshold = 0; - self.unlimitedRollDiceType = 0; - self.rerollNumber = 0; - self.defaultSuccessTarget = ""; - self.rerollLimitCount = 10000; - self.fractionType = "omit"; - if ($truthy(($truthy($a = self.$prefixs()['$empty?']()['$!']()) ? self.$class().$prefixes()['$empty?']() : $a))) { - - self.$warn("" + (self.$id()) + ": #prefixs is deprecated. Please use .setPrefixes."); - return self.$class().$setPrefixes(self.$prefixs()); - } else { - return nil - }; - }, $DiceBot_initialize$4.$$arity = 0); - self.$attr_accessor("rerollLimitCount"); - self.$attr_reader("sendMode", "sameDiceRerollCount", "sameDiceRerollType", "d66Type"); - self.$attr_reader("isPrintMaxDice", "upperRollThreshold"); - self.$attr_reader("defaultSuccessTarget", "rerollNumber", "fractionType"); - - Opal.def(self, '$postSet', $DiceBot_postSet$5 = function $$postSet() { - var self = this; - - return nil - }, $DiceBot_postSet$5.$$arity = 0); - - Opal.def(self, '$info', $DiceBot_info$6 = function $$info() { - var self = this; - - return $hash2(["gameType", "name", "sortKey", "prefixs", "info"], {"gameType": self.$id(), "name": self.$name(), "sortKey": self.$sort_key(), "prefixs": self.$class().$prefixes(), "info": self.$help_message()}) - }, $DiceBot_info$6.$$arity = 0); - - Opal.def(self, '$id', $DiceBot_id$7 = function $$id() { - var self = this; - - return $$$(self.$class(), 'ID') - }, $DiceBot_id$7.$$arity = 0); - - Opal.def(self, '$gameType', $DiceBot_gameType$8 = function $$gameType() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameType is deprecated. Please use #id."); - return self.$id(); - }, $DiceBot_gameType$8.$$arity = 0); - - Opal.def(self, '$name', $DiceBot_name$9 = function $$name() { - var self = this; - - return $$$(self.$class(), 'NAME') - }, $DiceBot_name$9.$$arity = 0); - - Opal.def(self, '$gameName', $DiceBot_gameName$10 = function $$gameName() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #gameName is deprecated. Please use #name."); - return self.$name(); - }, $DiceBot_gameName$10.$$arity = 0); - - Opal.def(self, '$sort_key', $DiceBot_sort_key$11 = function $$sort_key() { - var self = this; - - return $$$(self.$class(), 'SORT_KEY') - }, $DiceBot_sort_key$11.$$arity = 0); - - Opal.def(self, '$help_message', $DiceBot_help_message$12 = function $$help_message() { - var self = this; - - return $$$(self.$class(), 'HELP_MESSAGE') - }, $DiceBot_help_message$12.$$arity = 0); - - Opal.def(self, '$getHelpMessage', $DiceBot_getHelpMessage$13 = function $$getHelpMessage() { - var self = this; - - - self.$warn("" + (self.$id()) + ": #getHelpMessage is deprecated. Please use #help_message."); - return self.$help_message(); - }, $DiceBot_getHelpMessage$13.$$arity = 0); - - Opal.def(self, '$prefixes', $DiceBot_prefixes$14 = function $$prefixes() { - var self = this; - - return self.$class().$prefixes() - }, $DiceBot_prefixes$14.$$arity = 0); - Opal.alias(self, "prefixs", "prefixes"); - - Opal.def(self, '$setSendMode', $DiceBot_setSendMode$15 = function $$setSendMode(m) { - var self = this; - - return (self.sendMode = m) - }, $DiceBot_setSendMode$15.$$arity = 1); - self.$attr_writer("upperRollThreshold"); - - Opal.def(self, '$bcdice=', $DiceBot_bcdice$eq$16 = function(b) { - var self = this; - - return (Opal.class_variable_set($nesting[0], '@@bcdice', b)) - }, $DiceBot_bcdice$eq$16.$$arity = 1); - - Opal.def(self, '$bcdice', $DiceBot_bcdice$17 = function $$bcdice() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a) - }, $DiceBot_bcdice$17.$$arity = 0); - - Opal.def(self, '$rand', $DiceBot_rand$18 = function $$rand(max) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rand(max) - }, $DiceBot_rand$18.$$arity = 1); - - Opal.def(self, '$roll', $DiceBot_roll$19 = function $$roll($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'roll', Opal.to_a(args)); - }, $DiceBot_roll$19.$$arity = -1); - - Opal.def(self, '$marshalSignOfInequality', $DiceBot_marshalSignOfInequality$20 = function $$marshalSignOfInequality($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'marshalSignOfInequality', Opal.to_a(args)); - }, $DiceBot_marshalSignOfInequality$20.$$arity = -1); - - Opal.def(self, '$unlimitedRollDiceType', $DiceBot_unlimitedRollDiceType$21 = function $$unlimitedRollDiceType() { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$unlimitedRollDiceType() - }, $DiceBot_unlimitedRollDiceType$21.$$arity = 0); - self.$attr_reader("sortType"); - - Opal.def(self, '$setSortType', $DiceBot_setSortType$22 = function $$setSortType(s) { - var self = this; - - return (self.sortType = s) - }, $DiceBot_setSortType$22.$$arity = 1); - - Opal.def(self, '$d66', $DiceBot_d66$23 = function $$d66($a) { - var $post_args, args, $b, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - args = $post_args;; - return $send((($b = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $b), 'getD66Value', Opal.to_a(args)); - }, $DiceBot_d66$23.$$arity = -1); - - Opal.def(self, '$parren_killer', $DiceBot_parren_killer$24 = function $$parren_killer(string) { - var $a, self = this; - - return (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$parren_killer(string) - }, $DiceBot_parren_killer$24.$$arity = 1); - - Opal.def(self, '$changeText', $DiceBot_changeText$25 = function $$changeText(string) { - var self = this; - - - self.$debug("DiceBot.parren_killer_add called"); - return string; - }, $DiceBot_changeText$25.$$arity = 1); - - Opal.def(self, '$dice_command', $DiceBot_dice_command$26 = function $$dice_command(string, nick_e) { - var $a, $b, self = this, secret_flg = nil, secretMarker = nil, command = nil, output_msg = nil; - - - if ($truthy(self.$isGetOriginalMessage())) { - string = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$getOriginalMessage()}; - self.$debug("dice_command Begin string", string); - secret_flg = false; - if ($truthy(self.$class().$prefixesPattern()['$=~'](string))) { - } else { - - self.$debug("not match in prefixes"); - return ["1", secret_flg]; - }; - secretMarker = $$($nesting, 'Regexp').$last_match(2); - command = $$($nesting, 'Regexp').$last_match(3); - command = self.$removeDiceCommandMessage(command); - self.$debug("dicebot after command", command); - self.$debug("match"); - $b = self.$rollDiceCommandCatched(command), $a = Opal.to_ary($b), (output_msg = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = output_msg['$nil?']()) ? $a : output_msg['$empty?']()))) { - output_msg = "1"}; - secret_flg = ($truthy($a = secret_flg) ? $a : false); - if ($truthy(output_msg['$!=']("1"))) { - output_msg = "" + (nick_e) + ": " + (output_msg)}; - if ($truthy(secretMarker)) { - if ($truthy(output_msg['$!=']("1"))) { - secret_flg = true}}; - return [output_msg, secret_flg]; - }, $DiceBot_dice_command$26.$$arity = 2); - - Opal.def(self, '$isGetOriginalMessage', $DiceBot_isGetOriginalMessage$27 = function $$isGetOriginalMessage() { - var self = this; - - return false - }, $DiceBot_isGetOriginalMessage$27.$$arity = 0); - - Opal.def(self, '$removeDiceCommandMessage', $DiceBot_removeDiceCommandMessage$28 = function $$removeDiceCommandMessage(command) { - var self = this; - - return command.$sub(/[\s ].+/, "") - }, $DiceBot_removeDiceCommandMessage$28.$$arity = 1); - - Opal.def(self, '$rollDiceCommandCatched', $DiceBot_rollDiceCommandCatched$29 = function $$rollDiceCommandCatched(command) { - var $a, $b, self = this, result = nil, secret_flg = nil, e = nil; - - - result = nil; - - try { - - self.$debug("call rollDiceCommand command", command); - $b = self.$rollDiceCommand(command), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (secret_flg = ($a[1] == null ? nil : $a[1])), $b; - } catch ($err) { - if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {e = $err; - try { - self.$debug("executeCommand exception", e.$to_s(), e.$backtrace().$join("\n")) - } finally { Opal.pop_exception() } - } else { throw $err; } - };; - self.$debug("rollDiceCommand result", result); - return [result, secret_flg]; - }, $DiceBot_rollDiceCommandCatched$29.$$arity = 1); - - Opal.def(self, '$rollDiceCommand', $DiceBot_rollDiceCommand$30 = function $$rollDiceCommand(_command) { - var self = this; - - return nil - }, $DiceBot_rollDiceCommand$30.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $DiceBot_dice_command_xRn$31 = function $$dice_command_xRn(_string, _nick_e) { - var self = this; - - return "" - }, $DiceBot_dice_command_xRn$31.$$arity = 2); - - Opal.def(self, '$check_result', $DiceBot_check_result$32 = function $$check_result(total, dice_total, dice_list, sides, cmp_op, target) { - var $a, self = this, ret = nil, $case = nil; - - - ret = (function() {$case = [dice_list.$size(), sides]; - if ([1, 100]['$===']($case)) {return self.$check_1D100(total, dice_total, cmp_op, target)} - else if ([1, 20]['$===']($case)) {return self.$check_1D20(total, dice_total, cmp_op, target)} - else if ([2, 6]['$===']($case)) {return self.$check_2D6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - ret = (function() {$case = sides; - if ((10)['$===']($case)) {return self.$check_nD10(total, dice_total, dice_list, cmp_op, target)} - else if ((6)['$===']($case)) {return self.$check_nD6(total, dice_total, dice_list, cmp_op, target)} - else { return nil }})(); - if ($truthy(($truthy($a = ret['$nil?']()) ? $a : ret['$empty?']()))) { - } else { - return ret - }; - return self.$check_nDx(total, cmp_op, target); - }, $DiceBot_check_result$32.$$arity = 6); - - Opal.def(self, '$check_nDx', $DiceBot_check_nDx$33 = function $$check_nDx(total, cmp_op, target) { - var self = this, success = nil; - - - if ($truthy(target['$is_a?']($$($nesting, 'String')))) { - return " > 失敗"}; - success = (function() {if (cmp_op['$==']("!=")) { - return total['$!='](target) - } else { - return total.$send(cmp_op, target) - }; return nil; })(); - if ($truthy(success)) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $DiceBot_check_nDx$33.$$arity = 3); - - Opal.def(self, '$check_1D100', $DiceBot_check_1D100$34 = function $$check_1D100(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D100$34.$$arity = 4); - - Opal.def(self, '$check_1D20', $DiceBot_check_1D20$35 = function $$check_1D20(total, dice_total, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_1D20$35.$$arity = 4); - - Opal.def(self, '$check_nD10', $DiceBot_check_nD10$36 = function $$check_nD10(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD10$36.$$arity = 5); - - Opal.def(self, '$check_2D6', $DiceBot_check_2D6$37 = function $$check_2D6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_2D6$37.$$arity = 5); - - Opal.def(self, '$check_nD6', $DiceBot_check_nD6$38 = function $$check_nD6(total, dice_total, dice_list, cmp_op, target) { - var self = this; - - return nil - }, $DiceBot_check_nD6$38.$$arity = 5); - - Opal.def(self, '$get_table_by_2d6', $DiceBot_get_table_by_2d6$39 = function $$get_table_by_2d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 2) - }, $DiceBot_get_table_by_2d6$39.$$arity = 1); - - Opal.def(self, '$get_table_by_1d6', $DiceBot_get_table_by_1d6$40 = function $$get_table_by_1d6(table) { - var self = this; - - return self.$get_table_by_nD6(table, 1) - }, $DiceBot_get_table_by_1d6$40.$$arity = 1); - - Opal.def(self, '$get_table_by_nD6', $DiceBot_get_table_by_nD6$41 = function $$get_table_by_nD6(table, count) { - var self = this; - - return self.$get_table_by_nDx(table, count, 6) - }, $DiceBot_get_table_by_nD6$41.$$arity = 2); - - Opal.def(self, '$get_table_by_nDx', $DiceBot_get_table_by_nDx$42 = function $$get_table_by_nDx(table, count, diceType) { - var $a, $b, self = this, num = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(num, count))); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_nDx$42.$$arity = 3); - - Opal.def(self, '$get_table_by_1d3', $DiceBot_get_table_by_1d3$43 = function $$get_table_by_1d3(table) { - var $a, $b, self = this, count = nil, num = nil, index = nil, text = nil; - - - self.$debug("get_table_by_1d3"); - count = 1; - $b = self.$roll(count, 6), $a = Opal.to_ary($b), (num = ($a[0] == null ? nil : $a[0])), $b; - self.$debug("num", num); - index = $rb_divide($rb_minus(num, 1), 2); - self.$debug("index", index); - text = table['$[]'](index); - if ($truthy(text['$nil?']())) { - return ["1", 0]}; - return [text, num]; - }, $DiceBot_get_table_by_1d3$43.$$arity = 1); - - Opal.def(self, '$getD66', $DiceBot_getD66$44 = function $$getD66(isSwap) { - var self = this; - - return self.$bcdice().$getD66(isSwap) - }, $DiceBot_getD66$44.$$arity = 1); - - Opal.def(self, '$get_table_by_d66_swap', $DiceBot_get_table_by_d66_swap$45 = function $$get_table_by_d66_swap(table) { - var self = this, isSwap = nil, number = nil; - - - isSwap = true; - number = self.$bcdice().$getD66(isSwap); - return [self.$get_table_by_number(number, table), number]; - }, $DiceBot_get_table_by_d66_swap$45.$$arity = 1); - - Opal.def(self, '$get_table_by_d66', $DiceBot_get_table_by_d66$46 = function $$get_table_by_d66(table) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, num = nil, text = nil, indexText = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - num = $rb_plus($rb_times($rb_minus(dice1, 1), 6), $rb_minus(dice2, 1)); - text = table['$[]'](num); - indexText = "" + (dice1) + (dice2); - if ($truthy(text['$nil?']())) { - return ["1", indexText]}; - return [text, indexText]; - }, $DiceBot_get_table_by_d66$46.$$arity = 1); - - Opal.def(self, '$getDiceRolledAdditionalText', $DiceBot_getDiceRolledAdditionalText$47 = function $$getDiceRolledAdditionalText(_n1, _n_max, _dice_max) { - var self = this; - - return "" - }, $DiceBot_getDiceRolledAdditionalText$47.$$arity = 3); - - Opal.def(self, '$getDiceRevision', $DiceBot_getDiceRevision$48 = function $$getDiceRevision(_n_max, _dice_max, _total_n) { - var self = this; - - return ["", 0] - }, $DiceBot_getDiceRevision$48.$$arity = 3); - - Opal.def(self, '$isD9', $DiceBot_isD9$49 = function $$isD9() { - var self = this; - - return false - }, $DiceBot_isD9$49.$$arity = 0); - - Opal.def(self, '$getGrichText', $DiceBot_getGrichText$50 = function $$getGrichText(_numberSpot1, _dice_cnt_total, _suc) { - var self = this; - - return "" - }, $DiceBot_getGrichText$50.$$arity = 3); - - Opal.def(self, '$should_reroll?', $DiceBot_should_reroll$ques$51 = function(loop_count) { - var $a, self = this; - - return ($truthy($a = $rb_lt(loop_count, self.rerollLimitCount)) ? $a : self.rerollLimitCount['$=='](0)) - }, $DiceBot_should_reroll$ques$51.$$arity = 1); - - Opal.def(self, '$get_table_by_number', $DiceBot_get_table_by_number$52 = function $$get_table_by_number(index, table, default$) {try { - - var $$53, self = this; - - - - if (default$ == null) { - default$ = "1"; - }; - $send(table, 'each', [], ($$53 = function(item){var self = $$53.$$s || this, number = nil; - - - - if (item == null) { - item = nil; - }; - number = item['$[]'](0); - if ($truthy($rb_ge(number, index))) { - Opal.ret(self.$getTableValue(item['$[]'](1))) - } else { - return nil - };}, $$53.$$s = self, $$53.$$arity = 1, $$53)); - return self.$getTableValue(default$); - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_get_table_by_number$52.$$arity = -3); - - Opal.def(self, '$getTableValue', $DiceBot_getTableValue$54 = function $$getTableValue(data) {try { - - var $$55, self = this, lambdaBlock = nil; - - - if ($truthy(data['$kind_of?']($$($nesting, 'Proc')))) { - - lambdaBlock = $send(self, 'lambda', [], ($$55 = function(){var self = $$55.$$s || this; - - Opal.ret(data.$call())}, $$55.$$s = self, $$55.$$arity = 0, $$55)); - return lambdaBlock.$call();}; - return data; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_getTableValue$54.$$arity = 1); - - Opal.def(self, '$analyzeDiceCommandResultMethod', $DiceBot_analyzeDiceCommandResultMethod$56 = function $$analyzeDiceCommandResultMethod(command) {try { - - var $$57, $$58, self = this, methodList = nil; - - - methodList = $send(self.$public_methods(), 'select', [], ($$57 = function(method){var self = $$57.$$s || this; - - - - if (method == null) { - method = nil; - }; - return /^get.+DiceCommandResult$/['$==='](method.$to_s());}, $$57.$$s = self, $$57.$$arity = 1, $$57)); - $send(methodList, 'each', [], ($$58 = function(method){var self = $$58.$$s || this, result = nil; - - - - if (method == null) { - method = nil; - }; - result = self.$send(method, command); - if ($truthy(result['$nil?']())) { - return nil - } else { - Opal.ret(result) - };}, $$58.$$s = self, $$58.$$arity = 1, $$58)); - return nil; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $DiceBot_analyzeDiceCommandResultMethod$56.$$arity = 1); - - Opal.def(self, '$get_table_by_nDx_extratable', $DiceBot_get_table_by_nDx_extratable$59 = function $$get_table_by_nDx_extratable(table, count, diceType) { - var $a, $b, self = this, number = nil, diceText = nil, text = nil; - - - $b = self.$roll(count, diceType), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - text = self.$getTableValue(table['$[]']($rb_minus(number, count))); - return [text, number, diceText]; - }, $DiceBot_get_table_by_nDx_extratable$59.$$arity = 3); - - Opal.def(self, '$getTableCommandResult', $DiceBot_getTableCommandResult$60 = function $$getTableCommandResult(command, tables, isPrintDiceText) { - var $a, $b, $c, $d, self = this, info = nil, name = nil, type = nil, table = nil, $case = nil, count = nil, diceType = nil, limit = nil, item = nil, value = nil, output = nil, diceText = nil, text = nil, number = nil; - - - - if (isPrintDiceText == null) { - isPrintDiceText = true; - }; - info = tables['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - type = info['$[]']("type").$upcase(); - table = info['$[]']("table"); - if ($truthy(($truthy($a = type['$==']("D66")) ? self.d66Type['$=='](2) : $a))) { - type = "D66S"}; - $b = (function() {$case = type; - if (/(\d+)D(\d+)/['$===']($case)) { - count = $$($nesting, 'Regexp').$last_match(1).$to_i(); - diceType = $$($nesting, 'Regexp').$last_match(2).$to_i(); - limit = $rb_minus($rb_times(diceType, count), $rb_minus(count, 1)); - table = self.$getTableInfoFromExtraTableText(table, limit); - return self.$get_table_by_nDx_extratable(table, count, diceType);} - else if ("D66"['$===']($case) || "D66N"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 36); - $d = self.$get_table_by_d66(table), $c = Opal.to_ary($d), (item = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - output = item['$[]'](1); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else if ("D66S"['$===']($case)) { - table = self.$getTableInfoFromExtraTableText(table, 21); - $d = self.$get_table_by_d66_swap(table), $c = Opal.to_ary($d), (output = ($c[0] == null ? nil : $c[0])), (value = ($c[1] == null ? nil : $c[1])), $d; - value = value.$to_i(); - diceText = $rb_plus($rb_plus($rb_divide(value, 10).$floor().$to_s(), ","), value['$%'](10).$to_s()); - return [output, value, diceText];} - else {return self.$raise("" + "invalid dice Type " + (command))}})(), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), (diceText = ($a[2] == null ? nil : $a[2])), $b; - text = text.$gsub("\\n", "\n"); - text = (($a = $nesting[0].$$cvars['@@bcdice']) == null ? nil : $a).$rollTableMessageDiceText(text); - if ($truthy(text['$nil?']())) { - return nil}; - if ($truthy(($truthy($a = isPrintDiceText) ? diceText['$nil?']()['$!']() : $a))) { - return "" + (name) + "(" + (number) + "[" + (diceText) + "]) > " + (text)}; - return "" + (name) + "(" + (number) + ") > " + (text); - }, $DiceBot_getTableCommandResult$60.$$arity = -3); - - Opal.def(self, '$getTableInfoFromExtraTableText', $DiceBot_getTableInfoFromExtraTableText$61 = function $$getTableInfoFromExtraTableText(text, count) { - var $$62, self = this, newTable = nil; - - - - if (count == null) { - count = nil; - }; - if ($truthy(text['$is_a?']($$($nesting, 'String')))) { - text = text.$split(/\n/)}; - newTable = $send(text, 'map', [], ($$62 = function(item){var self = $$62.$$s || this, $a; - - - - if (item == null) { - item = nil; - }; - if ($truthy(($truthy($a = item['$is_a?']($$($nesting, 'String'))) ? /^(\d+):(.*)/['$==='](item) : $a))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2)] - } else { - return item - };}, $$62.$$s = self, $$62.$$arity = 1, $$62)); - if ($truthy(count['$nil?']())) { - } else if ($truthy(newTable.$size()['$!='](count))) { - self.$raise("" + "invalid table size:" + (newTable.$size()) + "\n" + (newTable.$inspect()))}; - return newTable; - }, $DiceBot_getTableInfoFromExtraTableText$61.$$arity = -2); - return (Opal.def(self, '$roll_tables', $DiceBot_roll_tables$63 = function $$roll_tables(command, tables) { - var self = this, table = nil; - - - table = tables['$[]'](command.$upcase()); - if ($truthy(table)) { - } else { - return nil - }; - return table.$roll(self.$bcdice()).$to_s(); - }, $DiceBot_roll_tables$63.$$arity = 2), nil) && 'roll_tables'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$include', '$attr_reader', '$map', '$to_proc', '$join', '$escape', '$prepare_help_msg_for_aliases_for_srs_roll', '$concatenate_help_messages', '$private', '$clear_aliases_for_srs_roll', '$extend', '$setPrefixes', '$help_message', '$class', '$freeze', '$new', '$format_modifier', '$modifier', '$target_value', '$critical_value', '$fumble_value', '$replace_alias_for_srs_roll_with_2d6', '$parse', '$execute_srs_roll', '$===', '$aliases_re_for_srs_roll_with_target_value', '$last_match', '$aliases_re_for_srs_roll_without_target_value', '$parse_srs_roll_with_target_value', '$parse_srs_roll_without_target_value', '$eval', '$to_sym', '$eval_modifier', '$[]', '$to_i', '$roll', '$&', '$+', '$compare_result', '$compact', '$>=', '$<=']); - - self.$require("diceBot/DiceBot"); - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SRS'); - - var $nesting = [self].concat($parent_nesting), $SRS_initialize$12, $SRS_help_message$13, $SRS$14, $SRS_rollDiceCommand$16, $SRS_replace_alias_for_srs_roll_with_2d6$17, $SRS_parse$18, $SRS_eval_modifier$19, $SRS_parse_srs_roll_with_target_value$20, $SRS_parse_srs_roll_without_target_value$21, $SRS_execute_srs_roll$22, $SRS_compare_result$23; - - self.$$prototype.fractionType = self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "SRS"); - Opal.const_set($nesting[0], 'NAME', "スタンダードRPGシステム"); - Opal.const_set($nesting[0], 'SORT_KEY', "すたんたあとRPGしすてむ"); - self.$include($$($nesting, 'ModifierFormatter')); - Opal.const_set($nesting[0], 'HELP_MESSAGE_1', "" + "・判定\n" + " ・通常判定:2D6+m>=t[c,f]\n" + "  修正値m、目標値t、クリティカル値c、ファンブル値fで判定ロールを行います。\n" + "  修正値、クリティカル値、ファンブル値は省略可能です([]ごと省略可)。\n" + "  クリティカル値、ファンブル値の既定値は、それぞれ12、2です。\n" + "  自動成功、自動失敗、成功、失敗を自動表示します。\n" + "\n" + "  例) 2d6>=10     修正値0、目標値10で判定\n" + "  例) 2d6+2>=10    修正値+2、目標値10で判定\n" + "  例) 2d6+2>=10[11]  ↑をクリティカル値11で判定\n" + "  例) 2d6+2>=10[12,4] ↑をクリティカル値12、ファンブル値4で判定\n"); - Opal.const_set($nesting[0], 'HELP_MESSAGE_2', "" + " ・クリティカルおよびファンブルのみの判定:2D6+m[c,f]\n" + "  目標値を指定せず、修正値m、クリティカル値c、ファンブル値fで判定ロールを行います。\n" + "  修正値、クリティカル値、ファンブル値は省略可能です([]は省略不可)。\n" + "  自動成功、自動失敗を自動表示します。\n" + "\n" + "  例) 2d6[]    修正値0、クリティカル値12、ファンブル値2で判定\n" + "  例) 2d6+2[11]  修正値+2、クリティカル値11、ファンブル値2で判定\n" + "  例) 2d6+2[12,4] 修正値+2、クリティカル値12、ファンブル値4で判定\n"); - Opal.const_set($nesting[0], 'HELP_MESSAGE_3', "・D66ダイスあり(入れ替えなし)\n"); - Opal.const_set($nesting[0], 'DEFAULT_HELP_MESSAGE', "" + ($$($nesting, 'HELP_MESSAGE_1')) + "\n" + ($$($nesting, 'HELP_MESSAGE_2')) + "\n" + ($$($nesting, 'HELP_MESSAGE_3'))); - (function($base, $parent_nesting) { - var self = $module($base, 'ClassMethods'); - - var $nesting = [self].concat($parent_nesting), $ClassMethods_set_aliases_for_srs_roll$1, $ClassMethods_clear_aliases_for_srs_roll$3, $ClassMethods_prepare_help_msg_for_aliases_for_srs_roll$4, $ClassMethods_concatenate_help_messages$7; - - - self.$attr_reader("help_message"); - self.$attr_reader("aliases_re_for_srs_roll_with_target_value"); - self.$attr_reader("aliases_re_for_srs_roll_without_target_value"); - - Opal.def(self, '$set_aliases_for_srs_roll', $ClassMethods_set_aliases_for_srs_roll$1 = function $$set_aliases_for_srs_roll($a) { - var $post_args, aliases, $$2, self = this, aliases_upcase = nil, aliases_part = nil; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - aliases = $post_args;; - aliases_upcase = $send(aliases, 'map', [], "upcase".$to_proc()); - aliases_part = $send(aliases_upcase, 'map', [], ($$2 = function(a){var self = $$2.$$s || this; - - - - if (a == null) { - a = nil; - }; - return $$($nesting, 'Regexp').$escape(a);}, $$2.$$s = self, $$2.$$arity = 1, $$2)).$join("|"); - self.aliases_re_for_srs_roll_with_target_value = new RegExp("" + "^(?:" + (aliases_part) + ")((?:[-+][-+\\d]+)?>=\\d+(?:\\[\\d*(?:,\\d+)?\\])?)$"); - self.aliases_re_for_srs_roll_without_target_value = new RegExp("" + "^(?:" + (aliases_part) + ")([-+][-+\\d]+)?(\\[\\d*(?:,\\d+)?\\])?$"); - self.$prepare_help_msg_for_aliases_for_srs_roll(aliases_upcase); - self.help_message = self.$concatenate_help_messages(); - return self; - }, $ClassMethods_set_aliases_for_srs_roll$1.$$arity = -1); - - Opal.def(self, '$clear_aliases_for_srs_roll', $ClassMethods_clear_aliases_for_srs_roll$3 = function $$clear_aliases_for_srs_roll() { - var self = this; - - - self.aliases_re_for_srs_roll_with_target_value = nil; - self.aliases_re_for_srs_roll_without_target_value = nil; - self.help_message = $$$($$($nesting, 'SRS'), 'DEFAULT_HELP_MESSAGE'); - return self; - }, $ClassMethods_clear_aliases_for_srs_roll$3.$$arity = 0); - self.$private(); - - Opal.def(self, '$prepare_help_msg_for_aliases_for_srs_roll', $ClassMethods_prepare_help_msg_for_aliases_for_srs_roll$4 = function $$prepare_help_msg_for_aliases_for_srs_roll(aliases) { - var $$5, $$6, self = this; - - - self.help_msg_for_aliases_for_srs_roll_with_target_value = $send(aliases, 'map', [], ($$5 = function(a){var self = $$5.$$s || this; - - - - if (a == null) { - a = nil; - }; - return "" + "  例) " + (a) + "+2>=10     2d6+2>=10と同じ(" + (a) + "が2D6のショートカットコマンド)\n";}, $$5.$$s = self, $$5.$$arity = 1, $$5)).$join(); - self.help_msg_for_aliases_for_srs_roll_without_target_value = $send(aliases, 'map', [], ($$6 = function(a){var self = $$6.$$s || this; - - - - if (a == null) { - a = nil; - }; - return "" + ("" + "  例) " + (a) + "      2d6[]と同じ(" + (a) + "が2D6のショートカットコマンド)\n") + ("" + "  例) " + (a) + "+2[12,4]  2d6+2[12,4]と同じ(" + (a) + "が2D6のショートカットコマンド)\n");}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$join(); - return self; - }, $ClassMethods_prepare_help_msg_for_aliases_for_srs_roll$4.$$arity = 1); - - Opal.def(self, '$concatenate_help_messages', $ClassMethods_concatenate_help_messages$7 = function $$concatenate_help_messages() { - var self = this; - if (self.help_msg_for_aliases_for_srs_roll_with_target_value == null) self.help_msg_for_aliases_for_srs_roll_with_target_value = nil; - if (self.help_msg_for_aliases_for_srs_roll_without_target_value == null) self.help_msg_for_aliases_for_srs_roll_without_target_value = nil; - - return "" + ("" + ($$$($$($nesting, 'SRS'), 'HELP_MESSAGE_1'))) + ("" + (self.help_msg_for_aliases_for_srs_roll_with_target_value) + "\n") + ("" + ($$$($$($nesting, 'SRS'), 'HELP_MESSAGE_2'))) + ("" + (self.help_msg_for_aliases_for_srs_roll_without_target_value) + "\n") + ("" + ($$$($$($nesting, 'SRS'), 'HELP_MESSAGE_3'))) - }, $ClassMethods_concatenate_help_messages$7.$$arity = 0); - })($nesting[0], $nesting); - (function(self, $parent_nesting) { - var $nesting = [self].concat($parent_nesting), $inherited$8, $help_message$9, $aliases_re_for_srs_roll_with_target_value$10, $aliases_re_for_srs_roll_without_target_value$11; - - - - Opal.def(self, '$inherited', $inherited$8 = function $$inherited(subclass) { - var self = this; - - return subclass.$extend($$($nesting, 'ClassMethods')).$clear_aliases_for_srs_roll() - }, $inherited$8.$$arity = 1); - - Opal.def(self, '$help_message', $help_message$9 = function $$help_message() { - var self = this; - - return $$($nesting, 'DEFAULT_HELP_MESSAGE') - }, $help_message$9.$$arity = 0); - - Opal.def(self, '$aliases_re_for_srs_roll_with_target_value', $aliases_re_for_srs_roll_with_target_value$10 = function $$aliases_re_for_srs_roll_with_target_value() { - var self = this; - - return nil - }, $aliases_re_for_srs_roll_with_target_value$10.$$arity = 0); - return (Opal.def(self, '$aliases_re_for_srs_roll_without_target_value', $aliases_re_for_srs_roll_without_target_value$11 = function $$aliases_re_for_srs_roll_without_target_value() { - var self = this; - - return nil - }, $aliases_re_for_srs_roll_without_target_value$11.$$arity = 0), nil) && 'aliases_re_for_srs_roll_without_target_value'; - })(Opal.get_singleton_class(self), $nesting); - self.$setPrefixes(["2D6.*"]); - - Opal.def(self, '$initialize', $SRS_initialize$12 = function $$initialize() { - var $iter = $SRS_initialize$12.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $SRS_initialize$12.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $SRS_initialize$12, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 1); - }, $SRS_initialize$12.$$arity = 0); - - Opal.def(self, '$help_message', $SRS_help_message$13 = function $$help_message() { - var self = this; - - return self.$class().$help_message() - }, $SRS_help_message$13.$$arity = 0); - Opal.const_set($nesting[0], 'DEFAULT_CRITICAL_VALUE', 12); - Opal.const_set($nesting[0], 'DEFAULT_FUMBLE_VALUE', 2); - Opal.const_set($nesting[0], 'SRS_ROLL_WITH_TARGET_VALUE_RE', /^2D6([-+][-+\d]+)?>=(\d+)(?:\[(\d+)?(?:,(\d+))?\])?$/.$freeze()); - Opal.const_set($nesting[0], 'SRS_ROLL_WITHOUT_TARGET_VALUE_RE', /^2D6([-+][-+\d]+)?\[(\d+)?(?:,(\d+))?\]$/.$freeze()); - Opal.const_set($nesting[0], 'SRS_ROLL_DEFAULT_THRESHOLDS', "" + "[" + ($$($nesting, 'DEFAULT_CRITICAL_VALUE')) + "," + ($$($nesting, 'DEFAULT_FUMBLE_VALUE')) + "]"); - Opal.const_set($nesting[0], 'SRSRollNode', $send($$($nesting, 'Struct'), 'new', ["modifier", "critical_value", "fumble_value", "target_value"], ($SRS$14 = function(){var self = $SRS$14.$$s || this, $to_s$15; - - - self.$include($$($nesting, 'ModifierFormatter')); - return (Opal.def(self, '$to_s', $to_s$15 = function $$to_s() { - var self = this, lhs = nil, expression = nil; - - - lhs = "" + "2D6" + (self.$format_modifier(self.$modifier())); - expression = (function() {if ($truthy(self.$target_value())) { - return "" + (lhs) + ">=" + (self.$target_value()) - } else { - return lhs - }; return nil; })(); - return "" + (expression) + "[" + (self.$critical_value()) + "," + (self.$fumble_value()) + "]"; - }, $to_s$15.$$arity = 0), nil) && 'to_s';}, $SRS$14.$$s = self, $SRS$14.$$arity = 0, $SRS$14))); - - Opal.def(self, '$rollDiceCommand', $SRS_rollDiceCommand$16 = function $$rollDiceCommand(command) { - var self = this, alias_replaced_with_2d6 = nil, node = nil; - - - alias_replaced_with_2d6 = self.$replace_alias_for_srs_roll_with_2d6(command); - if ($truthy((node = self.$parse(alias_replaced_with_2d6)))) { - return self.$execute_srs_roll(node)}; - return nil; - }, $SRS_rollDiceCommand$16.$$arity = 1); - self.$private(); - - Opal.def(self, '$replace_alias_for_srs_roll_with_2d6', $SRS_replace_alias_for_srs_roll_with_2d6$17 = function $$replace_alias_for_srs_roll_with_2d6(input) { - var $a, self = this, $case = nil, modifier = nil, thresholds = nil; - - return (function() {$case = input; - if (self.$class().$aliases_re_for_srs_roll_with_target_value()['$===']($case)) {return "" + "2D6" + ($$($nesting, 'Regexp').$last_match(1))} - else if (self.$class().$aliases_re_for_srs_roll_without_target_value()['$===']($case)) { - modifier = $$($nesting, 'Regexp').$last_match(1); - thresholds = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : $$($nesting, 'SRS_ROLL_DEFAULT_THRESHOLDS')); - return "" + "2D6" + (modifier) + (thresholds);} - else {return input}})() - }, $SRS_replace_alias_for_srs_roll_with_2d6$17.$$arity = 1); - - Opal.def(self, '$parse', $SRS_parse$18 = function $$parse(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if ($$($nesting, 'SRS_ROLL_WITH_TARGET_VALUE_RE')['$===']($case)) {return self.$parse_srs_roll_with_target_value($$($nesting, 'Regexp').$last_match())} - else if ($$($nesting, 'SRS_ROLL_WITHOUT_TARGET_VALUE_RE')['$===']($case)) {return self.$parse_srs_roll_without_target_value($$($nesting, 'Regexp').$last_match())} - else {return nil}})() - }, $SRS_parse$18.$$arity = 1); - - Opal.def(self, '$eval_modifier', $SRS_eval_modifier$19 = function $$eval_modifier(modifier_str) { - var self = this; - - - if ($truthy(modifier_str)) { - } else { - return 0 - }; - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(modifier_str, self.fractionType.$to_sym()); - }, $SRS_eval_modifier$19.$$arity = 1); - - Opal.def(self, '$parse_srs_roll_with_target_value', $SRS_parse_srs_roll_with_target_value$20 = function $$parse_srs_roll_with_target_value(m) { - var $a, $b, self = this, modifier = nil, target_value = nil, critical_value = nil, fumble_value = nil; - - - modifier = self.$eval_modifier(m['$[]'](1)); - target_value = m['$[]'](2).$to_i(); - critical_value = ($truthy($a = ($truthy($b = m['$[]'](3)) ? m['$[]'](3).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_CRITICAL_VALUE')); - fumble_value = ($truthy($a = ($truthy($b = m['$[]'](4)) ? m['$[]'](4).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_FUMBLE_VALUE')); - return $$($nesting, 'SRSRollNode').$new(modifier, critical_value, fumble_value, target_value); - }, $SRS_parse_srs_roll_with_target_value$20.$$arity = 1); - - Opal.def(self, '$parse_srs_roll_without_target_value', $SRS_parse_srs_roll_without_target_value$21 = function $$parse_srs_roll_without_target_value(m) { - var $a, $b, self = this, modifier = nil, critical_value = nil, fumble_value = nil; - - - modifier = self.$eval_modifier(m['$[]'](1)); - critical_value = ($truthy($a = ($truthy($b = m['$[]'](2)) ? m['$[]'](2).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_CRITICAL_VALUE')); - fumble_value = ($truthy($a = ($truthy($b = m['$[]'](3)) ? m['$[]'](3).$to_i() : $b)) ? $a : $$($nesting, 'DEFAULT_FUMBLE_VALUE')); - return $$($nesting, 'SRSRollNode').$new(modifier, critical_value, fumble_value, nil); - }, $SRS_parse_srs_roll_without_target_value$21.$$arity = 1); - - Opal.def(self, '$execute_srs_roll', $SRS_execute_srs_roll$22 = function $$execute_srs_roll(srs_roll) { - var $a, $b, self = this, sum = nil, dice_str = nil, modified_sum = nil, parts = nil; - - - $b = self.$roll(2, 6, self.sortType['$&'](1)), $a = Opal.to_ary($b), (sum = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - modified_sum = $rb_plus(sum, srs_roll.$modifier()); - parts = ["" + "(" + (srs_roll) + ")", "" + (sum) + "[" + (dice_str) + "]" + (self.$format_modifier(srs_roll.$modifier())), modified_sum, self.$compare_result(srs_roll, sum, modified_sum)]; - return parts.$compact().$join(" > "); - }, $SRS_execute_srs_roll$22.$$arity = 1); - return (Opal.def(self, '$compare_result', $SRS_compare_result$23 = function $$compare_result(srs_roll, sum, modified_sum) { - var self = this; - - - if ($truthy($rb_ge(sum, srs_roll.$critical_value()))) { - return "自動成功"}; - if ($truthy($rb_le(sum, srs_roll.$fumble_value()))) { - return "自動失敗"}; - if ($truthy(srs_roll.$target_value())) { - return (function() {if ($truthy($rb_ge(modified_sum, srs_roll.$target_value()))) { - return "成功" - } else { - return "失敗" - }; return nil; })()}; - return nil; - }, $SRS_compare_result$23.$$arity = 3), nil) && 'compare_result'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/SamsaraBallad.js b/src/assets/dicebot/SamsaraBallad.js deleted file mode 100644 index 4083031a0..000000000 --- a/src/assets/dicebot/SamsaraBallad.js +++ /dev/null @@ -1,602 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/normalize"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; - - Opal.add_stubs(['$module_function', '$===', '$==', '$to_i']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Normalize'); - - var $nesting = [self].concat($parent_nesting), $Normalize_comparison_operator$1, $Normalize_target_number$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Normalize_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if (/<=|==|=>/['$===']($case)) {return ">="} - else if (/<>|!=|=!/['$===']($case)) {return "!="} - else if (//['$===']($case)) {return ">"} - else if (/\=/['$===']($case)) {return "=="} - else { return nil }})() - }, $Normalize_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$target_number', $Normalize_target_number$2 = function $$target_number(val) { - var self = this; - - if (val['$==']("?")) { - return val - } else { - return val.$to_i() - } - }, $Normalize_target_number$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/command_parser"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$attr_accessor', '$include', '$format_modifier', '$===', '$join', '$tokenize', '$new', '$lhs', '$take_cmp_op', '$cmp_op=', '$-', '$cmp_op', '$expr', '$target_number=', '$<', '$size', '$private', '$split', '$gsub', '$take', '$literal?', '$command_suffix', '$loop', '$consume', '$+', '$mul', '$command=', '$modify_number=', '$critical', '$unary', '$critical=', '$fumble', '$fumble=', '$dollar', '$dollar=', '$each', '$==', '$=~', '$[]', '$comparison_operator']); - - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/normalize"); - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'CommandParser'); - - var $nesting = [self].concat($parent_nesting), $CommandParser_initialize$1, $CommandParser_parse$4, $CommandParser_tokenize$5, $CommandParser_lhs$7, $CommandParser_command_suffix$9, $CommandParser_literal$ques$11, $CommandParser_take$13, $CommandParser_take_cmp_op$14; - - self.$$prototype.error = self.$$prototype.parsed = self.$$prototype.idx = self.$$prototype.tokens = self.$$prototype.literals = nil; - - - Opal.def(self, '$initialize', $CommandParser_initialize$1 = function $$initialize($a) { - var $post_args, literals, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - literals = $post_args;; - self.literals = literals; - return (self.round_type = "omit"); - }, $CommandParser_initialize$1.$$arity = -1); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Parsed'); - - var $nesting = [self].concat($parent_nesting), $Parsed_initialize$2, $Parsed_to_s$3; - - self.$$prototype.critical = self.$$prototype.fumble = self.$$prototype.dollar = self.$$prototype.modify_number = self.$$prototype.command = self.$$prototype.cmp_op = self.$$prototype.target_number = nil; - - self.$attr_accessor("command", "critical", "fumble", "dollar", "modify_number", "cmp_op", "target_number"); - self.$include($$($nesting, 'ModifierFormatter')); - - Opal.def(self, '$initialize', $Parsed_initialize$2 = function $$initialize() { - var self = this; - - - self.critical = nil; - self.fumble = nil; - return (self.dollar = nil); - }, $Parsed_initialize$2.$$arity = 0); - return (Opal.def(self, '$to_s', $Parsed_to_s$3 = function $$to_s(suffix_position) { - var self = this, c = nil, f = nil, d = nil, m = nil, $case = nil; - - - - if (suffix_position == null) { - suffix_position = "after_command"; - }; - c = (function() {if ($truthy(self.critical)) { - return "" + "@" + (self.critical) - } else { - return nil - }; return nil; })(); - f = (function() {if ($truthy(self.fumble)) { - return "" + "#" + (self.fumble) - } else { - return nil - }; return nil; })(); - d = (function() {if ($truthy(self.dollar)) { - return "" + "$" + (self.dollar) - } else { - return nil - }; return nil; })(); - m = self.$format_modifier(self.modify_number); - return (function() {$case = suffix_position; - if ("after_command"['$===']($case)) {return [self.command, c, f, d, m, self.cmp_op, self.target_number].$join()} - else if ("after_modify_number"['$===']($case)) {return [self.command, m, c, f, d, self.cmp_op, self.target_number].$join()} - else if ("after_target_number"['$===']($case)) {return [self.command, m, self.cmp_op, self.target_number, c, f, d].$join()} - else { return nil }})(); - }, $Parsed_to_s$3.$$arity = -1), nil) && 'to_s'; - })($nesting[0], null, $nesting); - - Opal.def(self, '$parse', $CommandParser_parse$4 = function $$parse(expr, round_type) { - var $a, self = this, $writer = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - self.parsed = $$($nesting, 'Parsed').$new(); - self.$lhs(); - if ($truthy(self.error)) { - return nil}; - - $writer = [self.$take_cmp_op()]; - $send(self.parsed, 'cmp_op=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(self.parsed.$cmp_op())) { - return self.$expr() - } else { - return nil - }; return nil; })()]; - $send(self.parsed, 'target_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy(($truthy($a = $rb_lt(self.idx, self.tokens.$size())) ? $a : self.error))) { - return nil}; - return self.parsed; - }, $CommandParser_parse$4.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $CommandParser_tokenize$5 = function $$tokenize(expr) { - var $$6, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-*\/@#\$]|[<>!=]+/], ($$6 = function(e){var self = $$6.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$split(" ") - }, $CommandParser_tokenize$5.$$arity = 1); - - Opal.def(self, '$lhs', $CommandParser_lhs$7 = function $$lhs() { - var $$8, self = this, command = nil, ret = nil, $writer = nil; - - - command = self.$take(); - if ($truthy(self['$literal?'](command))) { - } else { - - self.error = true; - return nil; - }; - self.$command_suffix(); - ret = 0; - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$8 = function(){var self = $$8.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$8.$$s = self, $$8.$$brk = $brk, $$8.$$arity = 0, $$8)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - self.$command_suffix(); - - $writer = [command]; - $send(self.parsed, 'command=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [ret]; - $send(self.parsed, 'modify_number=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - }, $CommandParser_lhs$7.$$arity = 0); - - Opal.def(self, '$command_suffix', $CommandParser_command_suffix$9 = function $$command_suffix() { - var $$10, self = this; - - return (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$10 = function(){var self = $$10.$$s || this, $writer = nil; - if (self.parsed == null) self.parsed = nil; - - if ($truthy(self.$consume("@"))) { - - if ($truthy(self.parsed.$critical())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'critical=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else if ($truthy(self.$consume("#"))) { - - if ($truthy(self.parsed.$fumble())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'fumble=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else if ($truthy(self.$consume("$"))) { - - if ($truthy(self.parsed.$dollar())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'dollar=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else { - - Opal.brk(nil, $brk) - }}, $$10.$$s = self, $$10.$$brk = $brk, $$10.$$arity = 0, $$10)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})() - }, $CommandParser_command_suffix$9.$$arity = 0); - - Opal.def(self, '$literal?', $CommandParser_literal$ques$11 = function(command) {try { - - var $$12, self = this; - - - $send(self.literals, 'each', [], ($$12 = function(lit){var self = $$12.$$s || this, $case = nil; - - - - if (lit == null) { - lit = nil; - }; - return (function() {$case = lit; - if ($$($nesting, 'String')['$===']($case)) {if (command['$=='](lit)) { - Opal.ret(true) - } else { - return nil - }} - else if ($$($nesting, 'Regexp')['$===']($case)) {if ($truthy(command['$=~'](lit))) { - Opal.ret(true) - } else { - return nil - }} - else { return nil }})();}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - return false; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $CommandParser_literal$ques$11.$$arity = 1); - - Opal.def(self, '$take', $CommandParser_take$13 = function $$take() { - var self = this, ret = nil; - - - ret = self.tokens['$[]'](self.idx); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $CommandParser_take$13.$$arity = 0); - return (Opal.def(self, '$take_cmp_op', $CommandParser_take_cmp_op$14 = function $$take_cmp_op() { - var self = this; - - return $$($nesting, 'Normalize').$comparison_operator(self.$take()) - }, $CommandParser_take_cmp_op$14.$$arity = 0), nil) && 'take_cmp_op'; - })($nesting[0], $$($nesting, 'ArithmeticEvaluator'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$setPrefixes', '$debug', '$new', '$parse', '$==', '$command', '$roll', '$sort', '$map', '$+', '$*', '$[]', '$compare', '$compact', '$cmp_op', '$target_number', '$to_s', '$join', '$private', '$include?', '$!', '$send', '$fumble?', '$fumble', '$critical?', '$critical', '$<=', '$%', '$>=']); - - self.$require("utils/command_parser"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SamsaraBallad'); - - var $nesting = [self].concat($parent_nesting), $SamsaraBallad_rollDiceCommand$1, $SamsaraBallad_compare$3, $SamsaraBallad_fumble$ques$4, $SamsaraBallad_critical$ques$5; - - - Opal.const_set($nesting[0], 'ID', "SamsaraBallad"); - Opal.const_set($nesting[0], 'NAME', "サンサーラ・バラッド"); - Opal.const_set($nesting[0], 'SORT_KEY', "さんさあらはらつと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "SB\t 通常のD100ロールを行う\n" + "SBS\t スワップロールでD100ロールを行う\n" + "SB#x@y\t F値をx、C値をyとして通常のD100ロールを行う\n" + "SBS#x@y\t F値をx、C値をyとしてスワップロールでD100ロールを行う\n" + "\n" + "例:\n" + "SB<=85 通常の技能で成功率85%の判定\n" + "SBS<=70 習熟を得た技能で成功率70%の判定\n" + "SBS#3@7<=80 習熟を得た技能で、F値3、C値7で成功率80%の攻撃判定\n" + "SB<57 通常の技能で、能動側の達成値が57の受動判定\n" + "SBS<70 習熟を得た技能で、能動側の達成値が70の受動判定\n"); - self.$setPrefixes(["SBS?.*"]); - - Opal.def(self, '$rollDiceCommand', $SamsaraBallad_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $b, $$2, self = this, parser = nil, cmd = nil, places_text = nil, total = nil, a = nil, b = nil, places = nil, cmp_result = nil, sequence = nil; - - - self.$debug("rollDiceCommand Begin"); - parser = $$($nesting, 'CommandParser').$new("SB", "SBS"); - cmd = parser.$parse(command); - if ($truthy(cmd)) { - } else { - return nil - }; - if (cmd.$command()['$==']("SB")) { - - places_text = nil; - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), $b; - } else { - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (a = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (b = ($a[0] == null ? nil : $a[0])), $b; - places_text = "" + (a) + "," + (b); - places = $send([a, b], 'map', [], ($$2 = function(n){var self = $$2.$$s || this; - - - - if (n == null) { - n = nil; - }; - if (n['$=='](10)) { - return 0 - } else { - return n - };}, $$2.$$s = self, $$2.$$arity = 1, $$2)).$sort(); - total = $rb_plus($rb_times(places['$[]'](0), 10), places['$[]'](1)); - if (total['$=='](0)) { - total = 100}; - }; - cmp_result = self.$compare(total, cmd); - sequence = ["" + "(D100" + (cmd.$cmp_op()) + (cmd.$target_number()) + ")", places_text, total.$to_s(), cmp_result].$compact(); - return sequence.$join(" > "); - }, $SamsaraBallad_rollDiceCommand$1.$$arity = 1); - self.$private(); - - Opal.def(self, '$compare', $SamsaraBallad_compare$3 = function $$compare(total, cmd) { - var self = this; - - if ($truthy(["<=", "<"]['$include?'](cmd.$cmp_op()))) { - if ($truthy(total.$send(cmd.$cmp_op(), cmd.$target_number())['$!']())) { - return "失敗" - } else if ($truthy(self['$fumble?'](total, cmd.$fumble()))) { - return "ファンブル" - } else if ($truthy(self['$critical?'](total, cmd.$critical()))) { - return "クリティカル" - } else { - return "成功" - } - } else if ($truthy(self['$fumble?'](total, cmd.$fumble()))) { - return "ファンブル" - } else if ($truthy(self['$critical?'](total, cmd.$critical()))) { - return "クリティカル" - } else { - return nil - } - }, $SamsaraBallad_compare$3.$$arity = 2); - - Opal.def(self, '$fumble?', $SamsaraBallad_fumble$ques$4 = function(total, fumble) { - var $a, self = this; - - return ($truthy($a = fumble) ? $rb_le(total['$%'](10), fumble) : $a) - }, $SamsaraBallad_fumble$ques$4.$$arity = 2); - return (Opal.def(self, '$critical?', $SamsaraBallad_critical$ques$5 = function(total, critical) { - var $a, self = this; - - return ($truthy($a = critical) ? $rb_ge(total['$%'](10), critical) : $a) - }, $SamsaraBallad_critical$ques$5.$$arity = 2), nil) && 'critical?'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Satasupe.js b/src/assets/dicebot/Satasupe.js deleted file mode 100644 index 96d7477fb..000000000 --- a/src/assets/dicebot/Satasupe.js +++ /dev/null @@ -1,589 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$debug', '$checkRoll', '$empty?', '$check_seigou', '$rollTableCommand', '$=~', '$to_i', '$last_match', '$getRollParams', '$>', '$+', '$-', '$<', '$>=', '$getJudgeInfo', '$checkRollLoop', '$nil?', '$!=', '$!', '$getcriticalString', '$==', '$to_s', '$times', '$roll', '$<=', '$*', '$upcase', '$===', '$getTagTableResult', '$getCreateSatasupeResult', '$getNpcTableResult', '$getAnotherTableResult', '$join', '$get_table_by_d66', '$push', '$<<', '$d66', '$get_table_by_number', '$uniq', '$sort', '$[]', '$split', '$map', '$to_proc', '$rand', '$get2d6TableInfo', '$getTableIndex', '$max', '$min']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Satasupe'); - - var $nesting = [self].concat($parent_nesting), $Satasupe_initialize$1, $Satasupe_rollDiceCommand$2, $Satasupe_checkRoll$3, $Satasupe_getRollParams$4, $Satasupe_getJudgeInfo$5, $Satasupe_getcriticalString$6, $Satasupe_checkRollLoop$7, $Satasupe_check_seigou$9, $Satasupe_rollTableCommand$10, $Satasupe_getTagTableResult$11, $Satasupe_getCreateSatasupeResult$13, $Satasupe_getNpcTableResult$15, $Satasupe_getAnotherTableResult$17, $Satasupe_getTableIndex$19, $Satasupe_get2d6TableInfo$20; - - - Opal.const_set($nesting[0], 'ID', "Satasupe"); - Opal.const_set($nesting[0], 'NAME', "サタスペ"); - Opal.const_set($nesting[0], 'SORT_KEY', "さたすへ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定コマンド (nR>=x[y,z,c] or nR>=x or nR>=[,,c] etc)\n" + " nが最大ロール回数、xが難易度、yが目標成功度、zがファンブル値、cが必殺値。\n" + " y と z と c は省略可能です。(省略時、y=無制限、z=1、c=13(なし))\n" + " c の後ろにSを記述すると必殺が出た時点で判定を終了します。\n" + " 例)5R>=5[10,2,7S]\n" + "・性業値コマンド(SRx or SRx+y or SRx-y x=性業値 y=修正値)\n" + "・各種表 : コマンド末尾に数字を入れると複数回の一括実行が可能 例)TAGT3\n" + " ・タグ決定表(TAGT)\n" + " ・命中判定ファンブル表(FumbleT)、致命傷表(FatalT)、\n" + "   乗物致命傷表(FatalVT)\n" + " ・ロマンスファンブル表(RomanceFT)\n" + " ・アクシデント表(AccidentT)、汎用アクシデント表(GeneralAT)\n" + " ・その後表 (AfterT)、臭い飯表(KusaiMT)、登場表(EnterT)、\n" + "   落とし前表(PayT)、時間切れ表(TimeUT)、バッドトリップ表(BudTT)\n" + " ・報酬表(Get〜) : ガラクタ(GetgT)、実用品(GetzT)、値打ち物(GetnT)、\n" + "   奇天烈(GetkT)\n" + " ・NPCの年齢と好みを一括出力(NPCT)\n" + " ・「サタスペ」のベースとアクセサリを出力(GETSSTx xはアクセサリ数、省略時1)\n" + "・以下のコマンドは +,- でダイス目修正、=でダイス目指定が可能\n" + " 例)CrimeIET+1 CrimeIET-1 CrimeIET=7\n" + " ・情報イベント表(〜IET) : 犯罪表(CrimeIET)、生活表(LifeIET)、\n" + "   恋愛表(LoveIET)、教養表(CultureIET)、戦闘表(CombatIET)\n" + " ・情報ハプニング表(〜IHT) : 犯罪表(CrimeIHT)、生活表(LifeIHT)、\n" + "   恋愛表(LoveIHT)、教養表(CultureIHT)、戦闘表(CombatIHT)\n" + " ・遭遇表(~RET):ミナミ遭遇表(MinamiRET)、中華街遭遇表(ChinatownRET)、\n" + "   軍艦島遭遇表(WarshipLandRET)、官庁街遭遇表(CivicCenterRET)、\n" + "   十三遭遇表(DowntownRET)、沙京遭遇表(ShaokinRET)、\n" + "   らぶらぶ遭遇表(LoveLoveRET)、アジト遭遇表(AjitoRET)、\n" + "   地獄湯遭遇表(JigokuSpaRET)、JAIL HOUSE遭遇表(JailHouseRET)\n" + " ・イベント表(~IT):治療イベント表(TreatmentIT)、大学イベント表(CollegeIT)\n" + "・D66ダイスあり\n"); - self.$setPrefixes(["(\\d+R|SR\\d+|TAGT|\\w+IET|\\w+IHT|F\\w*T|F\\w*T|A\\w*T|G\\w*A\\w*T|A\\w*T|R\\w*FT|NPCT|KusaiMT|EnterT|BudTT|GetgT|GetzT|GetnT|GetkT|GETSST|PayT|TimeUT|\\w+IT|ShaokinRET|MinamiRET|ChinatownRET|CivicCenterRET|DowntownRET|WarshipLandRET|LoveLoveRET|AjitoRET|JigokuSpaRET|JailHouseRET).*"]); - - Opal.def(self, '$initialize', $Satasupe_initialize$1 = function $$initialize() { - var $iter = $Satasupe_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Satasupe_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Satasupe_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $Satasupe_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Satasupe_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, result = nil; - - - self.$debug("rollDiceCommand begin string", command); - result = ""; - result = self.$checkRoll(command); - if ($truthy(result['$empty?']())) { - } else { - return result - }; - self.$debug("判定ロールではなかった"); - result = self.$check_seigou(command); - if ($truthy(result['$empty?']())) { - } else { - return result - }; - self.$debug("〔性業値〕チェックでもなかった"); - self.$debug("各種表として処理"); - return self.$rollTableCommand(command); - }, $Satasupe_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$checkRoll', $Satasupe_checkRoll$3 = function $$checkRoll(string) { - var $a, $b, self = this, roll_times = nil, target = nil, params = nil, min_suc = nil, fumble = nil, critical = nil, isCriticalStop = nil, result = nil, dice_str = nil, total_suc = nil, isCritical = nil, isFumble = nil; - - - self.$debug("checkRoll begin string", string); - if ($truthy(/^(\d+)R>=(\d+)(\[(\d+)?(,|,\d+)?(,\d+(S)?)?\])?$/i['$=~'](string))) { - } else { - return "" - }; - roll_times = $$($nesting, 'Regexp').$last_match(1).$to_i(); - target = $$($nesting, 'Regexp').$last_match(2).$to_i(); - params = $$($nesting, 'Regexp').$last_match(3); - $b = self.$getRollParams(params), $a = Opal.to_ary($b), (min_suc = ($a[0] == null ? nil : $a[0])), (fumble = ($a[1] == null ? nil : $a[1])), (critical = ($a[2] == null ? nil : $a[2])), (isCriticalStop = ($a[3] == null ? nil : $a[3])), $b; - result = ""; - if ($truthy($rb_gt(target, 12))) { - - result = $rb_plus(result, "" + "【" + (string) + "】 > 難易度が12を超えたため、超過分、ファンブル率が上昇!\n"); - while ($truthy($rb_gt(target, 12))) { - - target = $rb_minus(target, 1); - fumble = $rb_plus(fumble, 1); - };}; - if ($truthy(($truthy($a = $rb_lt(critical, 1)) ? $a : $rb_gt(critical, 12)))) { - critical = 13}; - if ($truthy($rb_ge(fumble, 6))) { - - result = $rb_plus(result, "" + (self.$getJudgeInfo(target, fumble, critical)) + " > ファンブル率が6を超えたため自動失敗!"); - return result;}; - if ($truthy($rb_lt(target, 5))) { - - result = $rb_plus(result, "" + "【" + (string) + "】 > あらゆる難易度は5未満にはならないため、難易度は5になる!\n"); - target = 5;}; - $b = self.$checkRollLoop(roll_times, min_suc, target, critical, fumble, isCriticalStop), $a = Opal.to_ary($b), (dice_str = ($a[0] == null ? nil : $a[0])), (total_suc = ($a[1] == null ? nil : $a[1])), (isCritical = ($a[2] == null ? nil : $a[2])), (isFumble = ($a[3] == null ? nil : $a[3])), $b; - result = $rb_plus(result, "" + (self.$getJudgeInfo(target, fumble, critical)) + " > " + (dice_str) + " > 成功度" + (total_suc)); - if ($truthy(isFumble)) { - result = $rb_plus(result, " > ファンブル")}; - if ($truthy(($truthy($a = isCritical) ? $rb_gt(total_suc, 0) : $a))) { - result = $rb_plus(result, " > 必殺発動可能!")}; - self.$debug("checkRoll result result", result); - return result; - }, $Satasupe_checkRoll$3.$$arity = 1); - - Opal.def(self, '$getRollParams', $Satasupe_getRollParams$4 = function $$getRollParams(params) { - var self = this, min_suc = nil, fumble = nil, critical = nil, isCriticalStop = nil; - - - min_suc = 0; - fumble = 1; - critical = 13; - isCriticalStop = false; - if ($truthy(params['$nil?']())) { - } else if ($truthy(/\[(\d*)(,(\d*)?)?(,(\d*)(S)?)?\]/['$=~'](params))) { - - min_suc = $$($nesting, 'Regexp').$last_match(1).$to_i(); - if ($truthy($$($nesting, 'Regexp').$last_match(3).$to_i()['$!='](0))) { - fumble = $$($nesting, 'Regexp').$last_match(3).$to_i()}; - if ($truthy($$($nesting, 'Regexp').$last_match(4))) { - critical = $$($nesting, 'Regexp').$last_match(5).$to_i()}; - isCriticalStop = $$($nesting, 'Regexp').$last_match(6)['$nil?']()['$!']();}; - return [min_suc, fumble, critical, isCriticalStop]; - }, $Satasupe_getRollParams$4.$$arity = 1); - - Opal.def(self, '$getJudgeInfo', $Satasupe_getJudgeInfo$5 = function $$getJudgeInfo(target, fumble, critical) { - var self = this; - - return "" + "【難易度" + (target) + "、ファンブル率" + (fumble) + (self.$getcriticalString(critical)) + "】" - }, $Satasupe_getJudgeInfo$5.$$arity = 3); - - Opal.def(self, '$getcriticalString', $Satasupe_getcriticalString$6 = function $$getcriticalString(critical) { - var self = this, criticalString = nil; - - - criticalString = (function() {if (critical['$=='](13)) { - return "なし" - } else { - return critical.$to_s() - }; return nil; })(); - return "" + "、必殺" + (criticalString); - }, $Satasupe_getcriticalString$6.$$arity = 1); - - Opal.def(self, '$checkRollLoop', $Satasupe_checkRollLoop$7 = function $$checkRollLoop(roll_times, min_suc, target, critical, fumble, isCriticalStop) { - var $$8, self = this, dice_str = nil, isFumble = nil, isCritical = nil, total_suc = nil; - - - dice_str = ""; - isFumble = false; - isCritical = false; - total_suc = 0; - (function(){var $brk = Opal.new_brk(); try {return $send(roll_times, 'times', [], ($$8 = function(_i){var self = $$8.$$s || this, $a, $b, d1 = nil, d2 = nil, dice_suc = nil; - - - - if (_i == null) { - _i = nil; - }; - self.$debug("roll_times", roll_times); - self.$debug("min_suc, total_suc", min_suc, total_suc); - if ($truthy(min_suc['$!='](0))) { - if ($truthy($rb_ge(total_suc, min_suc))) { - - self.$debug("(total_suc >= min_suc) break"); - - Opal.brk(nil, $brk);}}; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d2 = ($a[0] == null ? nil : $a[0])), $b; - dice_suc = 0; - if ($truthy($rb_le(target, $rb_plus(d1, d2)))) { - dice_suc = 1}; - if ($truthy(dice_str['$empty?']())) { - } else { - dice_str = $rb_plus(dice_str, "+") - }; - dice_str = $rb_plus(dice_str, "" + (dice_suc) + "[" + (d1) + "," + (d2) + "]"); - total_suc = $rb_plus(total_suc, dice_suc); - if ($truthy($rb_le(critical, $rb_plus(d1, d2)))) { - - isCritical = true; - dice_str = $rb_plus(dice_str, "『必殺!』");}; - if ($truthy(($truthy($a = d1['$=='](d2)) ? $rb_le(d1, fumble) : $a))) { - - isFumble = true; - isCritical = false; - - Opal.brk(nil, $brk);}; - if ($truthy(($truthy($a = isCritical) ? isCriticalStop : $a))) { - - Opal.brk(nil, $brk) - } else { - return nil - };}, $$8.$$s = self, $$8.$$brk = $brk, $$8.$$arity = 1, $$8)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return [dice_str, total_suc, isCritical, isFumble]; - }, $Satasupe_checkRollLoop$7.$$arity = 6); - - Opal.def(self, '$check_seigou', $Satasupe_check_seigou$9 = function $$check_seigou(string) { - var $a, $b, self = this, target = nil, operator = nil, value = nil, dice = nil, modify = nil, diceTotal = nil, seigou = nil, result = nil; - - - self.$debug("check_seigou begin string", string); - if ($truthy(/^SR(\d+)(([+]|[-])(\d+))?$/i['$=~'](string))) { - } else { - return "" - }; - target = $$($nesting, 'Regexp').$last_match(1).$to_i(); - operator = $$($nesting, 'Regexp').$last_match(3); - value = $$($nesting, 'Regexp').$last_match(4).$to_i(); - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - modify = 0; - if ($truthy(operator['$nil?']())) { - } else { - - if (operator['$==']("+")) { - modify = value}; - if (operator['$==']("-")) { - modify = $rb_times(value, -1)}; - }; - diceTotal = $rb_plus(dice, modify); - seigou = ""; - if ($truthy($rb_lt(target, diceTotal))) { - seigou = "「激」"}; - if (target['$=='](diceTotal)) { - seigou = "「迷」"}; - if ($truthy($rb_gt(target, diceTotal))) { - seigou = "「律」"}; - result = "" + "〔性業値〕" + (target) + "、「修正値」" + (modify) + " > ダイス結果:(" + (dice) + ") > " + (dice) + "+(" + (modify) + ")=" + (diceTotal) + " > " + (seigou); - if (dice['$=='](2)) { - result = $rb_plus(result, " > 1ゾロのため〔性業値〕が1点上昇!")}; - if (dice['$=='](12)) { - result = $rb_plus(result, " > 6ゾロのため〔性業値〕が1点減少!")}; - self.$debug("check_seigou result result", result); - return result; - }, $Satasupe_check_seigou$9.$$arity = 1); - - Opal.def(self, '$rollTableCommand', $Satasupe_rollTableCommand$10 = function $$rollTableCommand(command) { - var self = this, result = nil, counts = nil, operator = nil, value = nil, $case = nil; - - - command = command.$upcase(); - result = []; - if ($truthy(/([A-Za-z]+)(\d+)?(([+]|[-]|[=])(\d+))?/['$==='](command))) { - } else { - return result - }; - command = $$($nesting, 'Regexp').$last_match(1); - counts = 1; - if ($truthy($$($nesting, 'Regexp').$last_match(2))) { - counts = $$($nesting, 'Regexp').$last_match(2).$to_i()}; - operator = $$($nesting, 'Regexp').$last_match(4); - value = $$($nesting, 'Regexp').$last_match(5).$to_i(); - self.$debug("rollDiceCommand command", command); - $case = command; - if ("TAGT"['$===']($case)) {result = self.$getTagTableResult(counts)} - else if ("GETSST"['$===']($case)) {result = self.$getCreateSatasupeResult(counts)} - else if ("NPCT"['$===']($case)) {result = self.$getNpcTableResult(counts)} - else {result = self.$getAnotherTableResult(command, counts, operator, value)}; - return result.$join("\n"); - }, $Satasupe_rollTableCommand$10.$$arity = 1); - - Opal.def(self, '$getTagTableResult', $Satasupe_getTagTableResult$11 = function $$getTagTableResult(counts) { - var $$12, self = this, name = nil, table = nil, result = nil; - - - name = "タグ決定表"; - table = ["情報イベント", "アブノーマル(サ)", "カワイイ(サ)", "トンデモ(サ)", "マニア(サ)", "ヲタク(サ)", "音楽(ア)", "好きなタグ", "トレンド(ア)", "読書(ア)", "パフォーマンス(ア)", "美術(ア)", "アラサガシ(マ)", "おせっかい(マ)", "好きなタグ", "家事(マ)", "ガリ勉(マ)", "健康(マ)", "アウトドア(休)", "工作(休)", "スポーツ(休)", "同一タグ", "ハイソ(休)", "旅行(休)", "育成(イ)", "サビシガリヤ(イ)", "ヒマツブシ(イ)", "宗教(イ)", "同一タグ", "ワビサビ(イ)", "アダルト(風)", "飲食(風)", "ギャンブル(風)", "ゴシップ(風)", "ファッション(風)", "情報ハプニング"]; - result = []; - $send(counts, 'times', [], ($$12 = function(_i){var self = $$12.$$s || this, $a, $b, info = nil, number = nil, text = nil; - - - - if (_i == null) { - _i = nil; - }; - $b = self.$get_table_by_d66(table), $a = Opal.to_ary($b), (info = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - text = "" + (name) + ":" + (number) + ":" + (info); - return result.$push(text);}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - return result; - }, $Satasupe_getTagTableResult$11.$$arity = 1); - - Opal.def(self, '$getCreateSatasupeResult', $Satasupe_getCreateSatasupeResult$13 = function $$getCreateSatasupeResult(counts) { - var $a, $b, $$14, self = this, name = nil, hit = nil, damage = nil, life = nil, kutibeni = nil, kiba = nil, abilities = nil, baseParts = nil, partsEffect = nil, number1 = nil, $case = nil, armsTable = nil, armsEffectTable = nil, result = nil, text = nil; - - - self.$debug("getCreateSatasupeResult counts", counts); - name = "サタスペ作成"; - hit = 0; - damage = 0; - life = 0; - kutibeni = 0; - kiba = 0; - abilities = []; - baseParts = "" + (name) + ":ベース部品:"; - partsEffect = "部品効果:"; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (number1 = ($a[0] == null ? nil : $a[0])), $b; - $case = number1; - if ((1)['$===']($case)) { - baseParts = $rb_plus(baseParts, "「紙製の筒」"); - partsEffect = $rb_plus(partsEffect, "「命中:10、ダメージ:3、耐久度1」"); - hit = 10; - damage = 3; - life = 1;} - else if ((2)['$===']($case)) { - baseParts = $rb_plus(baseParts, "「木製の筒」"); - partsEffect = $rb_plus(partsEffect, "「命中:9、ダメージ:3、耐久度2」"); - hit = 9; - damage = 3; - life = 2;} - else if ((3)['$===']($case)) { - baseParts = $rb_plus(baseParts, "「小型のプラスチック製の筒」"); - partsEffect = $rb_plus(partsEffect, "「命中:9、ダメージ:4、耐久度2」"); - hit = 9; - damage = 4; - life = 2;} - else if ((4)['$===']($case)) { - baseParts = $rb_plus(baseParts, "「大型のプラスチック製の筒」"); - partsEffect = $rb_plus(partsEffect, "「命中:8、ダメージ:3、耐久度2、両手」"); - hit = 8; - damage = 3; - life = 2; - abilities['$<<']("「両手」");} - else if ((5)['$===']($case)) { - baseParts = $rb_plus(baseParts, "「小型の金属製の筒」"); - partsEffect = $rb_plus(partsEffect, "「命中:9、ダメージ:4、耐久度3」"); - hit = 9; - damage = 4; - life = 3;} - else if ((6)['$===']($case)) { - baseParts = $rb_plus(baseParts, "「大型の金属製の筒」"); - partsEffect = $rb_plus(partsEffect, "「命中:8、ダメージ:5、耐久度3、両手」"); - hit = 8; - damage = 5; - life = 3; - abilities['$<<']("「両手」");}; - armsTable = [[11, "「パチンコ玉」"], [12, "「釘や画鋲、針」"], [13, "「砂利や小石、ガラスの破片」"], [14, "「口紅」"], [15, "「バネやゼンマイ」"], [16, "「捻子やビス」"], [22, "「生ゴミ」"], [23, "「ゴム」"], [24, "「歯車」"], [25, "「歯や牙、骨」"], [26, "「ワイヤー」"], [33, "「メガネなどのレンズ」"], [34, "「マッチ」"], [35, "「ガムテープや接着剤」"], [36, "「洗濯ばさみ」"], [44, "「花火」"], [45, "「食玩」"], [46, "「真空管やトランジスタ」"], [55, "「エアコンプレッサ」"], [56, "「豆」"], [66, "「ガスボンベや殺虫剤」"]]; - armsEffectTable = [[11, "「武器破壊」"], [12, "「毒」"], [13, "「散弾」"], [14, "「(判定前宣言)一度だけ必殺10」"], [15, "「フル」"], [16, "「ダメージ+1」"], [22, "「衝撃」"], [23, "「ダメージ+1」"], [24, "「リボルバー」"], [25, "「(判定前宣言)1D6回、ダメージ+2」"], [26, "「耐久度+1」"], [33, "「命中-1」"], [34, "「必殺12」"], [35, "「耐久度+1」"], [36, "「命中-1」"], [44, "「弾幕1」"], [45, "「暗器」"], [46, "「神秘」"], [55, "「ダメージ+1」"], [56, "「マヒ」"], [66, "「爆発3」"]]; - baseParts = $rb_plus(baseParts, " アクセサリ部品:"); - $send(counts, 'times', [], ($$14 = function(_i){var self = $$14.$$s || this, $c, $d, number2 = nil; - - - - if (_i == null) { - _i = nil; - }; - number2 = self.$d66(2); - baseParts = $rb_plus(baseParts, self.$get_table_by_number(number2, armsTable)); - partsEffect = $rb_plus(partsEffect, self.$get_table_by_number(number2, armsEffectTable)); - return (function() {$case = number2; - if ((11)['$===']($case)) {return abilities['$<<']("「武器破壊」")} - else if ((12)['$===']($case)) {return abilities['$<<']("「毒」")} - else if ((13)['$===']($case)) {return abilities['$<<']("「散弾」")} - else if ((14)['$===']($case)) {return (kutibeni = $rb_plus(kutibeni, 1))} - else if ((15)['$===']($case)) {return abilities['$<<']("「フル」")} - else if ((16)['$===']($case) || (23)['$===']($case) || (55)['$===']($case)) {return (damage = $rb_plus(damage, 1))} - else if ((22)['$===']($case)) {return abilities['$<<']("「衝撃」")} - else if ((24)['$===']($case)) {return abilities['$<<']("「リボルバー」")} - else if ((25)['$===']($case)) {return $d = self.$roll(1, 6), $c = Opal.to_ary($d), (kiba = ($c[0] == null ? nil : $c[0])), $d} - else if ((26)['$===']($case) || (35)['$===']($case)) {return (life = $rb_plus(life, 1))} - else if ((33)['$===']($case) || (36)['$===']($case)) {return (hit = $rb_minus(hit, 1))} - else if ((34)['$===']($case)) {return abilities['$<<']("「必殺12」")} - else if ((44)['$===']($case)) {return abilities['$<<']("「弾幕1」")} - else if ((45)['$===']($case)) {return abilities['$<<']("「暗器」")} - else if ((46)['$===']($case)) {return abilities['$<<']("「神秘」")} - else if ((56)['$===']($case)) {return abilities['$<<']("「マヒ」")} - else if ((66)['$===']($case)) {return abilities['$<<']("「爆発3」")} - else { return nil }})();}, $$14.$$s = self, $$14.$$arity = 1, $$14)); - result = []; - result.$push(baseParts); - result.$push(partsEffect); - text = "" + "完成品:サタスペ (ダメージ+" + (damage) + "・命中" + (hit) + "・射撃、"; - if ($truthy($rb_gt(kutibeni, 0))) { - text = $rb_plus(text, "" + "「(判定前宣言)" + (kutibeni) + "回だけ、必殺10」")}; - if ($truthy($rb_gt(kiba, 0))) { - text = $rb_plus(text, "" + "「(判定前宣言)" + (kiba) + "回だけ、ダメージ+2」")}; - text = $rb_plus(text, abilities.$sort().$uniq().$join()); - text = $rb_plus(text, "" + "「サタスペ" + (counts) + "」「耐久度" + (life) + "」)"); - result.$push(text); - return result; - }, $Satasupe_getCreateSatasupeResult$13.$$arity = 1); - - Opal.def(self, '$getNpcTableResult', $Satasupe_getNpcTableResult$15 = function $$getNpcTableResult(counts) { - var $$16, self = this, lmood = nil, lage = nil, age = nil, agen = nil, name = nil, result = nil; - - - lmood = ["ダークな", "お金持ちな", "美形な", "知的な", "ワイルドな", "バランスがとれてる"]; - lage = ["年下が好き。", "同い年が好き。", "年上が好き。"]; - age = ["幼年", "少年", "青年", "中年", "壮年", "老年"]; - agen = ["6+2D6", "10+2D6", "15+3D6", "25+4D6", "40+5D6", "60+6D6"]; - name = "NPC表:"; - result = []; - $send(counts, 'times', [], ($$16 = function(_i){var self = $$16.$$s || this, $a, $b, age_type = nil, agen_text = nil, age_const = nil, age_dice = nil, times = nil, sides = nil, total = nil, ysold = nil, lmodValue = nil, lageValue = nil, text = nil; - - - - if (_i == null) { - _i = nil; - }; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (age_type = ($a[0] == null ? nil : $a[0])), $b; - age_type = $rb_minus(age_type, 1); - agen_text = agen['$[]'](age_type); - $b = agen_text.$split("+"), $a = Opal.to_ary($b), (age_const = ($a[0] == null ? nil : $a[0])), (age_dice = ($a[1] == null ? nil : $a[1])), $b; - $b = $send(age_dice.$split("D"), 'map', [], "to_i".$to_proc()), $a = Opal.to_ary($b), (times = ($a[0] == null ? nil : $a[0])), (sides = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$roll(times, sides), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), $b; - ysold = $rb_plus(total, age_const.$to_i()); - lmodValue = lmood['$[]'](self.$rand(6)); - lageValue = lage['$[]'](self.$rand(3)); - text = "" + (name) + (age['$[]'](age_type)) + "(" + (ysold) + "歳):" + (lmodValue) + (lageValue); - return result.$push(text);}, $$16.$$s = self, $$16.$$arity = 1, $$16)); - return result; - }, $Satasupe_getNpcTableResult$15.$$arity = 1); - - Opal.def(self, '$getAnotherTableResult', $Satasupe_getAnotherTableResult$17 = function $$getAnotherTableResult(command, counts, operator, value) { - var $a, $b, $$18, self = this, result = nil, name = nil, table = nil; - - - result = []; - $b = self.$get2d6TableInfo(command), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(name['$empty?']())) { - return result}; - $send(counts, 'times', [], ($$18 = function(_i){var self = $$18.$$s || this, $c, $d, _ = nil, index = nil, info = nil, text = nil; - - - - if (_i == null) { - _i = nil; - }; - $d = self.$getTableIndex(operator, value, 2, 6), $c = Opal.to_ary($d), (_ = ($c[0] == null ? nil : $c[0])), (index = ($c[1] == null ? nil : $c[1])), $d; - info = table['$[]']($rb_minus(index, 2)); - text = "" + (name) + (index) + ":" + (info); - return result.$push(text);}, $$18.$$s = self, $$18.$$arity = 1, $$18)); - return result; - }, $Satasupe_getAnotherTableResult$17.$$arity = 4); - - Opal.def(self, '$getTableIndex', $Satasupe_getTableIndex$19 = function $$getTableIndex(operator, value, diceCount, diceType) { - var $a, $b, self = this, index = nil, modify = nil, $case = nil; - - - index = nil; - modify = 0; - $case = operator; - if ("+"['$===']($case)) {modify = value} - else if ("-"['$===']($case)) {modify = $rb_times(value, -1)} - else if ("="['$===']($case)) {index = value}; - if ($truthy(index['$nil?']())) { - - $b = self.$roll(diceCount, diceType), $a = Opal.to_ary($b), (index = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_plus(index, modify);}; - index = [index, $rb_times(diceCount, 1)].$max(); - index = [index, $rb_times(diceCount, diceType)].$min(); - return [modify, index]; - }, $Satasupe_getTableIndex$19.$$arity = 4); - return (Opal.def(self, '$get2d6TableInfo', $Satasupe_get2d6TableInfo$20 = function $$get2d6TableInfo(command) { - var self = this, name = nil, table = nil, $case = nil; - - - name = ""; - table = []; - $case = command; - if (/CrimeIET/i['$===']($case)) { - name = "情報イベント表/〔犯罪〕:"; - table = ["謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!", "昔やった仕事の依頼人が登場。てがかりをくれる。好きなタグの上位リンク(SL+2)を1つ得る。", "謎のメモを発見……このターゲットについて調べている間、このトピックのタグをチーム全員が所有しているものとして扱う", "謎の動物が亜侠を路地裏に誘う。好きなタグの上位リンクを2つ得る", "偶然、他の亜侠の仕事現場に出くわす。口止め料の代わりに好きなタグの上位リンクを1つ得る", "あまりに適切な諜報活動。コストを消費せず、上位リンクを3つ得る", "その道の権威を紹介される。現在と同じタグの上位リンクを2つ得る", "捜査は足だね。〔肉体点〕を好きなだけ消費する。その値と同じ数の好きなタグの上位リンクを得る", "近所のコンビニで立ち読み。思わぬ情報が手に入る。上位リンクを3つ得る", "そのエリアの支配盟約からメッセンジャーが1D6人。自分のチームがその盟約に敵対していなければ、好きなタグの上位リンクを2つ得る。敵対していれば、メッセンジャーは「盟約戦闘員(p.127)」となる。血戦を行え", "「三下(p.125)」が1D6人現れる。血戦を行え。倒した数だけ、好きなタグの上位リンクを手に入れる"];} - else if (/LifeIET/i['$===']($case)) { - name = "情報イベント表/〔生活〕:"; - table = ["謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!", "隣の奥さんと世間話。上位リンクを4つ得る", "ミナミで接待。次の1ターン何もできない代わりに、好きなタグの上位リンク(SL+2)を1つ得る", "息抜きにテレビを見ていたら、たまたまその情報が。好きなタグの上位リンクを1つ得る", "器用に手に入れた情報を転売する。《札巻》を1個手に入れ、上位リンクを3つ得る", "情報を得るついでに軽い営業。〔サイフ〕を1回復させ、上位リンクを3つ得る", "街の有力者からの突然の電話。そのエリアの盟約の幹部NPCの誰かと【コネ】を結ぶことができる", "金をばらまく。〔サイフ〕を好きなだけ消費する。その値と同じ数の任意の上位リンクを得る", "〔表の顔〕の同僚が思いがけないアドバイスをくれる。上位リンクを1D6つ得る", "謎の情報屋チュンさんが、情報とアイテムのトレードを申し出る。DDの指定するアイテムを1つ手に入れると、どこからともなくチュンさんが現れる。そのアイテムをチュンさんに渡せば、情報ゲット!", "ターゲットとは関係ないが、ドデかい情報を掘り当てる。その情報を売って〔サイフ〕が全快する"];} - else if (/LoveIET/i['$===']($case)) { - name = "情報イベント表/〔恋愛〕:"; - table = ["謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!", "恋人との別れ。自分に恋人がいれば、1人を選んで、お互いのトリコ欄から名前を消す。その代わり情報ゲット!", "とびきり美形の情報提供者と遭遇。〔性業値〕判定で律になると、好きなタグの上位リンクを1つ得る", "敵対する亜侠と第一種接近遭遇。キスのあとの濡れた唇から、上位リンクを3つ得る", "昔の恋人がそれに詳しかったはず。その日の深夜・早朝に行動しなければ、好きなタグの上位リンク(SL+2)を1つ得る", "情報はともかくトリコをゲット。データは「女子高生(p.122)」を使用する", "関係者とすてきな時間を過ごす。好きなタグの上位リンクを1つ得る。ただし、次の1ターンは行動できない", "持つべきものは愛の奴隷。自分のトリコの数だけ好きなタグの上位リンクを得る", "自分よりも10歳年上のイヤなやつに身体を売る。現在と同じタグの上位リンクを1つ得る", "有力者からの突然のご指名。チームの仲間を1人、ランダムに決定する。差し出すなら、そのキャラクターは次の1ターン行動できない代わり、その後にそのキャラクターの〔恋愛〕と同じ数の上位リンクを得る", "愛する人の死。自分に恋人がいれば、1人選んで、そのキャラクターを死亡させる。その代わり情報ゲット!"];} - else if (/CultureIET/i['$===']($case)) { - name = "情報イベント表/〔教養〕:"; - table = ["謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!", "ネットで幻のリンクサイトを発見。すべての種類のタグに上位リンクがはられる", "間違いメールから恋が始まる。ハンドルしか知らない「女子高生(p.122)」と恋人(お互いのトリコ)の関係になる", "新聞社でバックナンバーを読みふける。上位リンクを6つ得る", "巨大な掲示板群から必要な情報をサルベージ。好きなタグの上位リンクを1つ得る", "検索エンジンにかけたらすぐヒット。コストを消費せず、上位リンクを4つ得る", "警察無線を傍受。興味深い。好きなタグの上位リンクを2つ得る", "クールな推理がさえ渡る。〔精神点〕を好きなだけ消費する。その値と同じ数だけ好きなタグの上位リンクを得る", "図書館ロールが貫通。好きなタグの上位リンク(SL+3)を1つ得る", "図書館で幻の書物を発見。上位リンクを8つ得る。キャラクターシートのメモ欄に<クトゥルフ神話知識>、SANと記入し、それぞれ後ろに+5、-5の数値を書き加える", "アジトに謎の手紙が届く。自分のアジトに戻れば、情報ゲット!"];} - else if (/CombatIET/i['$===']($case)) { - name = "情報イベント表/〔戦闘〕:"; - table = ["謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!", "昔、お前が『更正』させた大幇のチンピラから情報を得る。〔精神点〕を2点減少し、好きなタグの上位リンク(SL+2)を1つ得る。", "大阪市警の刑事から情報リーク。「敵の敵は味方」ということか……? 〔精神点〕を3点減少し、上位リンクを6つ得る。", "無軌道な若者達を拳で『更正』させる。彼等は涙を流しながら情報を差し出した。……情けは人のためならず。好きなだけ〔精神点〕を減少する。減少した値と同じ数だけ、上位リンクを得る。", "クスリ漬けの流氓を拳で『説得』。流氓はゲロと一緒に情報を吐き出した。2点のダメージ(セーブ不可)を受け、好きなタグの上位リンクを1つ得る。", "次から次へと糞どもがやってくる。コストを消費せずに上位リンクを3つ得る。", "自称『善良な一市民』からの情報リークを受ける。オマエの持っている異能の数だけ上位リンクを得る。……罠か!?", "サウナ風呂でくつろぐヤクザから情報収集。ヤクザは歯の折れた口から、弱々しい呻きと共に情報を吐き出した。好きなだけダメージを受ける(セーブ不可)。好きなタグの受けたダメージと同じ値のSLへリンクを1つ得る。", "ゼロ・トレランスオンスロートなラブ&ウォー。2D6を振り、その値が現在の〔肉体点〕以上であれば、情報をゲット!", "お前達を狙う刺客が冥土の土産に教えてくれる。お前自身かチームの仲間、お前の恋人のいずれかの〔肉体点〕を0点にすれば、情報をゲットできる。", "お前の宿敵(データはブラックアドレス)が1D6体現れる。血戦によって相手を倒せば、情報ゲット。"];} - else if (/CrimeIHT/i['$===']($case)) { - name = "情報ハプニング表/〔犯罪〕:"; - table = ["謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!", "警官からの職務質問。一晩拘留される。臭い飯表(p.70)を1回振ること", "だますつもりがだまされる。〔サイフ〕を1点消費", "気のゆるみによる駐車違反。持っている乗物が無くなってしまう", "超えてはならない一線を越える。トラウマを1点受ける", "そのトピックを取りしきる盟約に目をつけられる。このトピックと同じタグのトピックからはリンクをはれなくなる", "過去の亡霊がきみを襲う。自分の修得している異能の中から好きな1つを選ぶ。このセッションでは、その異能が使用不可になる", "敵対する盟約のいざこざに巻き込まれる。〔肉体点〕に1D6点のセーブ不可なダメージを受ける", "スリにあう。〔通常装備〕からランダムにアイテムを1個選び、それを無くす", "敵対する盟約からの妨害工作。この情報は情報収集のルールを使って手に入れることはできなくなる", "頼れる協力者のもとへ行くと、彼(彼女)の無惨な姿が……自分の持っている現在のセッションに参加していないキャラクター1体を選び、〔肉体点〕を0にする。そして、致命傷表(p.61)を振ること"];} - else if (/LifeIHT/i['$===']($case)) { - name = "情報ハプニング表/〔生活〕:"; - table = ["謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!", "経理の整理に没頭。この日の行動をすべてそれに費やさない限り、このセッションでは買物を行えなくなる", "壮大なる無駄使い。〔サイフ〕を1点消費", "「当たり屋(p.124)」が【追跡】を開始", "留守の間に空き巣が! 〔アジト装備〕からランダムにアイテムが1個無くなる", "「押し売り(p.124)」が【追跡】を開始", "新たな風を感じる。自分の好きな〔趣味〕1つをランダムに変更すること", "貧乏ひまなし。[1D6-自分の〔生活〕]ターンの間、行動できなくなる", "留守の間にアジトが火事に! 〔アジト装備〕がすべて無くなる。明日からどうしよう?", "頼りにしていた有力者が失脚する。しわ寄せがこっちにもきて、〔生活〕が1点減少する", "覚えのない借金の返済を迫られる。〔サイフ〕を1D6点減らす。〔サイフ〕が足りない場合、そのセッション終了時までに不足分を支払わないと【借金大王】(p.119)の代償を得る"];} - else if (/LoveIHT/i['$===']($case)) { - name = "情報ハプニング表/〔恋愛〕:"; - table = ["謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!", "一晩を楽しむが相手はちょっと特殊な趣味だった。アブノーマルの趣味を持っていない限り、トラウマを1点受ける。この日はもう行動できない", "一晩を楽しむが相手はちょっと特殊な趣味だった。【両刀使い】の異能を持っていない限り、トラウマを1点受ける。この日はもう行動できない", "一晩を楽しむが相手は年齢を10偽っていた。ロマンス判定のファンブル表を振ること", "すてきな人を見かけ、一目惚れ。DDが選んだNPC1体のトリコになる", "「痴漢・痴女(p.124)」が【追跡】を開始", "手を出した相手が有力者の女(ヒモ)だった。手下どもに袋叩きに会い、1D6点のダメージを受ける(セーブ不可)", "突然の別れ。トリコ欄からランダムに1体を選び、その名前を消す", "乱れた性生活に疲れる。〔肉体点〕と〔精神点〕がともに2点減少する", "性病が伝染る。1日以内に病院に行き、治療(価格4)を行わないと、鼻がもげる。鼻がもげると〔恋愛〕が1点減少する", "生命の誕生。子供ができる"];} - else if (/CultureIHT/i['$===']($case)) { - name = "情報ハプニング表/〔教養〕:"; - table = ["謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!", "アヤシイ書物を読み、一時的発狂。この日はもう行動できない。トラウマを1点受ける", "天才ゆえの憂鬱。自分の〔教養〕と同じ値だけ、〔精神点〕を減少させる", "唐突に睡魔が。次から2ターンの間、睡眠しなくてはならない", "間違いメールから恋が始まる。ハンドルしか知らない「女子高生(p.122)」に偽装した「殺人鬼(p.137)」と恋人(お互いのトリコ)の関係になる", "「勧誘員(p.124)」が【追跡】を開始", "OSの不調。徹夜で再インストール。この日はもう行動できない上、「無理」をしてしまう", "場を荒らしてしまう。このトピックと同じタグのトピックからはリンクをはれなくなる", "ボケる。〔教養〕が1点減少する", "クラッキングに遭う。いままで調べていたトピックとリンクをすべて失う", "ネットサーフィンにハマってしまい、ついつい時間が過ぎる。毎ターンのはじめに〔性業値〕判定を行い、律にならないとそのターンは行動できない。この効果は1日続く"];} - else if (/CombatIHT/i['$===']($case)) { - name = "情報ハプニング表/〔戦闘〕:"; - table = ["謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!", "悪を憎む心に支配され、一匹の修羅と化す。キジルシの代償から1種類を選び、このセッションの間、習得すること。修得できるキジルシの代償がなければ、あなたはNPCとなる。", "自宅に帰ると、無惨に破壊された君のおたからが転がっていた。「この件から手を引け」という書き置きと共に……。この情報フェイズでは、リンク判定を行ったトピックのタグの〔趣味〕を修得していた場合、それを未修得にする。また、おたからを持っていたなら、このセッション中、そのおたからは利用できなくなる。", "「俺にはもっと別の人生があったんじゃないだろうか……!?」突如、空しさがこみ上げて来る……その日は各ターンの始めに〔性業値〕判定を行う。失敗すると、酒に溺れ、そのターンは行動済みになる。", "クライムファイター仲間からスパイの容疑を受ける……1点のトラウマを追う。", "自宅の扉にメモが……!! 「今ならまだ間に合う」奴等はどこまで知っているんだ!? このトピックからは、これ以上リンクを伸ばせなくなる。", "大幇とコンビナートの抗争に何故か巻き込まれる。……なんとか生還するが、次のターンの最後まで行動できず、1D6点のダメージを受ける(セーブ不可)", "地獄組の鉄砲玉が君に襲い掛かってきた!! 〔戦闘〕で難易度9の判定に失敗すると、〔肉体点〕が0になる。", "「お前はやり過ぎた」の書きおきと共に、友人の死体が発見される〔戦闘〕で難易度9の判定を行う。失敗すると、ランダムに選んだチームの仲間1人が死亡する。", "宿敵によって深い疵を受ける。自分の修得している異能の中から、1つ選ぶこと。このセッションのあいだ、その異能を使用することができなくなる。", "流氓の男の卑劣な罠にかかり、肥え喰らいの巣に落ちる!! 「掃き溜めの悪魔」1D6体と血戦を行う。戦いに勝たない限り、生きて帰ることはできないだろう……。もちろん血戦に勝ったところで情報は得られない。"];} - else if (/G(eneral)?A(ccident)?T/i['$===']($case)) { - name = "汎用アクシデント表:"; - table = ["痛恨のミス。激しく状況が悪化する。以降のケチャップに関する行為判定の難易度に+1の修正がつき、あなたが追う側なら逃げる側のコマを2マス進める(逃げる側なら自分を2マス戻す)", "最悪の大事故。ケチャップどころではない! 〔犯罪〕で難易度9の判定を行う。失敗したら、ムーブ判定を行ったキャラクターは3D6点のダメージを受け、ケチャップから脱落する。判定に成功すればギリギリ難を逃れる。特に何もなし。", "もうダメだ……。絶望感が襲いかかってくる。後3ラウンド以内にケリをつけないと、あなたが追う側なら自動的に逃げる側が勝利する(逃げる側なら追う側が勝利する)", "まずい、突発事故だ! ムーブ判定を行ったキャラクターは、1D6点のダメージを受ける。", "一瞬ひやりと緊張が走る。 ムーブ判定を行ったキャラクターは、〔精神点〕を2点減少する。", "スランプ! 思わず足踏みしてしまう。ムーブ判定を行った者は、ムーブ判定に使用した能力値を使って難易度7の判定を行うこと。失敗したら、ムーブ判定を行ったキャラクターは、ケチャップから脱落。成功しても、あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す)", "イマイチ集中できない。〔性業値〕判定を行うこと。「激」になると、思わず見とれてしまう。あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す)", "古傷が痛み出す。以降のケチャップに関する行為判定に修正が+1つく", "うっかり持ち物を見失う。〔通常装備〕欄からアイテムを1個選んで消す", "苦しい状態に追い込まれた。ムーブ判定を行ったキャラクターは、今後のムーブ判定で成功度が-1される。", "頭の中が真っ白になる。〔精神点〕を1D6減少する。"];} - else if (/R(omance)?F(umble)?T/i['$===']($case)) { - name = "ロマンスファンブル表:"; - table = ["みんなあいそをつかす。自分のトリコ欄のキャラクターの名前をすべて消すこと", "痴漢として通報される。〔犯罪〕の難易度9の判定に成功しない限り、1D6ターン後に検挙されてしまう", "へんにつきまとわれる。対象は、トリコになるが、ファンブル表の結果やトリコと分かれる判定に成功しない限り、常備化しなくてもトリコ欄から消えることはない", "修羅場! 対象とは別にトリコを所有していれば、そのキャラクターが現れ、あなたと対象に血戦をしかけてくる", "恋に疲れる。自分の〔精神点〕が1D6点減少する", "甘い罠。あなたが対象のトリコになってしまう", "平手うち! 自分の〔肉体点〕が1D6点減少する", "浮気がばれる。恋人関係にあるトリコがいれば、そのキャラクターの名前をあなたのトリコ欄から消す", "無礼な失言をしてしまう。対象はあなたに対し「憎悪(p.120参照)」の反応を抱き、あなたはその対象の名前を書き込んだ【仇敵】の代償を得る", "ショックな一言。トラウマを1点受ける", "トリコからの監視! このセッションの間、ロマンス判定のファンブル率が自分のトリコの所持数と同じだけ上昇する"];} - else if (/FumbleT/i['$===']($case)) { - name = "命中判定ファンブル表:"; - table = ["自分の持ち物がすっぽぬけ、偶然敵を直撃! 持っているアイテムを1つ消し、ジオラマ上にいるキャラクター1人をランダムに選ぶ。そのキャラクターの〔肉体点〕を1D6ラウンドの間0点にし、行動不能にさせる(致命傷表は使用しない)。1D6ラウンドが経過し、行動不能から回復すると、そのキャラクターの〔肉体点〕は、行動不能になる直前の値にまで回復する", "敵の増援! 「三下(p.125)」が1D6体現れて、自分たちに襲いかかってくる(DDは、この処理が面倒だと思ったら、ファンブルしたキャラクターの〔肉体点〕を1D6点減少させてもよい)", "お前のいるマスに「障害物」が出現! そのマスに障害物オブジェクトを置き、そのマスにいたキャラクターは全員2ダメージを受ける(セーブ不可)", "射撃武器を使っていれば、弾切れを起こす。準備行動を行わないとその武器はもう使えない", "転んでしまう。準備行動を行わないと移動フェイズに行動できず、格闘、射撃、突撃攻撃が行えない", "急に命が惜しくなる。性業値判定をすること。「激」なら戦闘を続行。「律」なら次のラウンドから全力移動を行い、ジオラマから逃走を試みる。「迷」なら次のラウンドは移動・攻撃フェイズに行動できない", "誤って別の目標を攻撃。目標以外であなたに一番近いキャラクターに4ダメージ(セーブ不可)!", "誤って自分を攻撃。3ダメージ(セーブ不可)!", "今使っている武器が壊れる。アイテム欄から使用中の武器を消すこと。銃器を使っていた場合、暴発して自分に6ダメージ! 武器なしの場合、体を傷つけ3ダメージ(共にセーブ不可)!", "「制服警官(p.129)」が1人現れる。その場にいるキャラクターをランダムに攻撃する", "最悪の事態。〔肉体点〕を0にして、そのキャラクターは行動不能に(致命傷表は使用しない)"];} - else if (/FatalT/i['$===']($case)) { - name = "致命傷表:"; - table = ["死亡。", "死亡。", "昏睡して行動不能。1D6ラウンド以内に治療し、〔肉体点〕を1以上にしないと死亡。", "昏睡して行動不能。1D6ターン以内に治療し、〔肉体点〕を1以上にしないと死亡。", "大怪我で行動不能。体の部位のどこかを欠損してしまう。任意の〔能力値〕1つが1点減少。", "大怪我で行動不能。1D6ターン以内に治療し、〔肉体点〕を1以上にしないと体の部位のどこかを欠損してしまう。任意の〔能力値〕1つが1点減少。", "気絶して行動不能。〔肉体点〕の回復には治療が必要。", "気絶して行動不能。1ターン後、〔肉体点〕が1になる。", "気絶して行動不能。1D6ラウンド後、〔肉体点〕が1になる。", "気絶して行動不能。1D6ラウンド後、〔肉体点〕が1D6回復する。", "奇跡的に無傷。さきほどのダメージを無効に。"];} - else if (/AccidentT/i['$===']($case)) { - name = "アクシデント表:"; - table = ["ゴミか何かが降ってきて、視界を塞ぐ。以降のケチャップに関する判定に修正が+1つく。あなたが追う側なら逃げる側のコマを2マス進める(逃げる側なら自分を2マス戻す)", "対向車線の車(もしくは他の船、飛行機)に激突しそうになる。運転手は難易度9の〔精神〕の判定を行うこと。失敗したら、乗物と乗組員全員は3D6のダメージを受けた上に、ケチャップから脱落", "ヤバイ、ガソリンがもうない! 後3ラウンド以内にケリをつけないと逃げられ(追いつかれ)ちまう", "露店や消火栓につっこむ。その乗物に1D6ダメージ", "一瞬ひやりと緊張が走る。〔精神点〕を2点減らす", "何かの障害物に衝突する。運転手は難易度7の〔精神〕の判定を行うこと。失敗したら、乗物と乗組員全員は2D6ダメージを受けた上に、ケチャップから脱落。成功しても、あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す)", "走ってる途中に〔趣味〕に関する何かが目に映る。性業値判定を行うこと。「激」になると思わず見とれてしまう。あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す)", "軽い故障が起きちまった。以降のケチャップに関する行為判定に修正が+1つく", "うっかり落し物。〔通常装備〕欄からアイテムを1個選んで消す", "あやうく人にぶつかりそうになる。運転手は難易度9の〔精神〕の判定を行う。失敗したら、その一般人を殺してしまう。あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す)", "信号を無視しちまったら後ろで事故が起きた。警察のサイレンが鳴り響いてくる。DDはケチャップの最後尾に警察の乗物を加えろ。データは「制服警官(p.129)」のものを使用"];} - else if (/AfterT/i['$===']($case)) { - name = "その後表:"; - table = ["ここらが潮時かもしれない。2D6を振り、その目が自分の修得している代償未満であれば、そのキャラクターは引退し、二度と使用できない", "苦労の数だけ喜びもある。2D6を振り、自分の代償の数以下の目を出した場合、経験点が追加で1点もらえる", "妙な恨みを買ってしまった。【仇敵】(p.95)を修得する。誰が【仇敵】になるかは、DDが今回登場したNPCの中から1人を選ぶ", "大物の覚えがめでたい。今回のセッションに登場した盟約へ入るための条件を満たしていれば、その盟約に経験点の消費なしで入ることができる", "思わず意気投合。今回登場したNPC1人を選び、そのキャラクターとの【コネ】(p.95)を修得する", "今回の事件で様々な教訓を得る。自分の修得しているアドバンスドカルマの中から、汎用以外のものを好きなだけ選ぶ。そのカルマの異能と代償を、別な異能と代償に変更することができる", "深まるチームの絆。今回のセッションでミッションが成功していた場合、【絆】(p.95)を修得する", "色々な運命を感じる。今回のセッションでトリコができていた場合、経験点の消費なしにそのトリコを常備化することができる。また、自分が誰かのトリコになっていた場合、その人物への【トリコ】(p.95)の代償を得る", "やっぱり亜侠も楽じゃないかも。今回のセッションで何かツラい目にあっていた場合、【日常】(p.95)を取得する", "くそっ! ここから出せ!! 今回のセッションで逮捕されていたら、【前科】(p.95)の代償を得る", "〔性業値〕が1以下、もしくは13以上だった場合、そのキャラクターは大阪の闇に消える。そのキャラクターは引退し、二度と使用できない"];} - else if (/KusaiMT/i['$===']($case)) { - name = "臭い飯表:"; - table = ["やあ署長、ご苦労さん。いつでも好きなときに留置所を出ることができる。", "軽い取り調べを受ける。次の1ターンが終了するまで、未行動にならない。", "荒っぽい取り調べを受ける。次の1ターンが終了するまで、未行動にならない。1ターン休み。1D6ダメージを受ける(セーブ不可)。", "一晩泊まっていきなさい。次の日の朝まで未行動にならない。", "粘り強い取り調べが続く。1D6日後の朝まで未行動にならない。", "留置所のトイレで陵辱を受ける。1D6日後の朝まで未行動にならない。トラウマを1点受ける。", "劣悪な環境のせいで伝染病にかかる。1D6日後の朝まで未行動にならない。【病弱】の代償を得る。", "精神異常を訴え、無罪に。しかし、アーカム・アサイレムに移送され、1D6回別のキャラクターでセッションを行うまで、そのキャラクターを使用できない。キジルシの代償の中から、ランダムに1つの代償を得る。", "起訴されて有罪に。海上刑務所行き。1D6回別のキャラクターでセッションを行うまで、そのキャラクターを使用できない。【前科】の代償を得る。", "起訴されて有罪に。海上刑務所行き。2D6回別のキャラクターでセッションを行うまで、そのキャラクターを使用できない。【前科】の代償を得る。", "起訴されて有罪に。海上刑務所行き。終身刑。そのキャラクターは引退する。"];} - else if (/EnterT/i['$===']($case)) { - name = "登場表:"; - table = ["「こっから先にはいかせないぜ」 【仇敵】がいれば現われ、血戦が始まる。現在の血戦、もしくはケチャップが終了したら、処理を行うこと。", "「待たせたな、みんな!」 ジオラマの好きな場所に自分のキャラクターを配置する。", "おっと、鉢合わせ。ランダムにジオラマ上の敵を1体選ぶ。選んだ敵と同じマスに、そのキャラクターを配置する。", "全力ダッシュで駆けつける! 〔肉体点〕を1D6点消費すれば、ジオラマの好きな場所に自分のキャラクターを配置する。そうでなければ、登場できない。", "裏道を歩いていたら、偶然その場所にでくわした。DDはジオラマの好きな場所にそのキャラクターを配置する。", "「キキィー!」 もしもそのキャラクターが乗物を装備していれば、DDはジオラマの好きな場所にそのキャラクターを配置する。そうでなければ、登場できない。", "……間に合ったみたいだな。仲間を1人選び、そのキャラクターと同じマスに自分のキャラクターを配置する。", "ラッキー、「ジャリ銭」を拾った。……と、そんな場合じゃないよな。", "をっと、お前の好物だ。〔性業値〕判定を行え。「律」ならもう一回、登場表を振ることができる。それ以外なら、キャラクターを配置できない。", "んー。ここは一度通ったような。疲労から〔精神点〕を2点減少。", "くあー。完全に道に迷っちまった。この実行フェイズには登場できない。"];} - else if (/BudTT/i['$===']($case)) { - name = "バッドトリップ表:"; - table = ["自分の身の周りにいる人たちが異様な何か(悪魔、宇宙人、ゾンビ、お前と同じ顔をした誰か…)に変貌し襲い掛かってくる。お前はNPCとなって、同じ場所にいる誰かに血戦をしかける。血戦が終了すれば(そして生きていれば)、視界は元に戻っている。", "世界は一つ。オープンソース。愛で結びつくべきなんだ。お前は自分の知っていることをペラペラと話だし、1D6ターンの間、聞かれれば知っていることを何でも話してしまう。", "自分と他人の区別がつかなくなり、現実感が薄れる。〔精神点〕を1D6点減少する。", "誰かが自分を殺そうと企んでいるような錯覚を覚える。1D6ターンの間、ペテン師の代償【疑心暗鬼】を修得する。", "風景が極彩色に彩られる!もっと……もっと極彩色に!もし他にも「麻薬」カテゴリのアイテムを持っていれば、その中の1個を使用する(行動は使わない)。", "目の前にいる人物が非常にいとおしく思えてくる。同じ場所にいるキャラクターの中からランダムに1人選ぶ。1D6ターンの間、そのキャラクターのトリコになる。", "魅力的な裸の異性が、あなたの目の前で誘惑する幻覚を見る。〔性業値〕判定を行う。「激」になると服を脱ぎだす。もしも外にいればそのエリアの〔治安〕の難易度の〔犯罪〕判定を行う。失敗すると「臭い飯」表を振る。", "お前は痛みを感じなくなる。1D6ターンの間、〔肉体点〕の重症のペナルティが無効化される。", "自分の持っているものから触手が生え、あなたにからみつく。自分の〔通常装備〕欄のアイテムの中からランダムに1種を選ぶ。それを捨てる。", "皮膚の中を無数の蟲が蠢いているのを感じる。〔肉体点〕を3点減少する。", "神々しい声が聞こえてくる。1D6ターンの間、自分の好きな能力値を1点上昇することができる。"];} - else if (/GetgT/i['$===']($case)) { - name = "報酬・ガラクタ表:"; - table = ["持ち主の〔生活〕と等しい個数の《食事》(基本80p、小道具・日用品)", "持ち主の〔生活〕と等しい個数の《トルエン》(基本79p、小道具・麻薬)", "持ち主の〔生活〕と等しい個数の《ジャリ銭》(基本78p、小道具・お金)", "壊れた実用品。実用品表で決定。(壊れたアイテムは、1ターン使用し〔教養〕で難易度9の判定に使用すると直せる)", "《テレカ》(基本78p、小道具・通信手段)", "何もなかった(涙)。残念でした。", "《ロープ》(基本78p、小道具・保安器具)", "《トヨトミピストル》(基本74p、武器)", "《自転車》(基本76p、乗物)", "《ふとん》(基本79p、小道具・日用品)", "持ち主の〔趣味〕からランダムに1種類選ぶ。その趣味おたからを1個ランダムに選ぶ。"];} - else if (/GetzT/i['$===']($case)) { - name = "報酬・実用品表:"; - table = ["持ち主と同じタイプの汎用おたから(基本82p、汎用おたから)", "価格5の《ホテル》の使用券(基本80p、小道具・サービス)", "《苦力》(基本80p、小道具・手下)", "《カメラ》(基本80p、小道具・手下)", "持ち主が使っていた装備(ただし、一般アイテムに存在しない装備をPCは使用できない)", "持ち主の〔生活〕と等しい個数の《札巻》(基本78p、小道具・お金)", "持ち主の〔生活〕と等しい個数の《大麻》(基本79p、小道具・麻薬)", "《ノートパソコン》と《携帯電話》(基本78p、79p、小道具・日用品、通信手段)", "《ヴェスパ》(基本76p、乗物)", "《救急箱》(基本79p、小道具・保安器具)", "《札束》(基本78p、小道具・お金)"];} - else if (/GetnT/i['$===']($case)) { - name = "報酬・値打ち物表:"; - table = ["社会的身分。【日常】の異能を手に入れる。", "《人柱》(基本184p、盟約おたから・沙京流氓)", "貴重な貴金属。1ターン使って〔生活〕で難易度9の判定に成功すれば《トランク》と交換できる。", "持ち主と同じタイプの汎用おたから(基本82p、汎用おたから)", "持ち主の〔生活〕と等しい個数の《ヘロイン》(基本79p、小道具・麻薬)", "持ち主の〔生活〕と等しい個数の《札束》(基本78p、小道具・お金)", "持ち主の〔生活〕と等しい個数の価格5以下の武器(基本79p、小道具・麻薬)", "《ロールスロイス》(基本76p、乗物)", "持ち主の〔趣味〕からランダムに1種類選ぶ。その趣味おたからを1個ランダムに選ぶ。", "《トランク》(基本78p、小道具・お金)", "《宝箱》(基本78p、小道具・お金)"];} - else if (/GetkT/i['$===']($case)) { - name = "報酬・奇天烈表:"; - table = ["好きな盟約おたから1個(プレイヤー全員で相談して決定)", "《気球》(基本76p、乗物)", "《チェインソー》(基本74p、武器)", "誰かから感謝される。それだけ?", "持ち主の〔趣味〕からランダムに1種類選ぶ。その趣味おたからを1個ランダムに選ぶ。", "何もなかった(涙)。残念でした。", "持ち主と同じタイプの汎用おたから(基本82p、汎用おたから)", "《フォークリフト》(基本76p、乗物)", "《RPG-7》(基本74p、武器)", "倒されたキャラクターは、致命傷表を振り、まだ生きていれば、そのキャラクターを倒した者のトリコになる。", "「先にイッてるぜ」そのキャラクター1体を倒した者に経験点が1点与えられる。"];} - else if (/PayT/i['$===']($case)) { - name = "落とし前表:"; - table = ["闇のゲーム。ロシアンルーレットや地下闘技場への出場といった、致死率の高い理不尽な労働に従事させられる。この落とし前を1回受けるたびに、1D6を振る。1の出目が出ると、そのキャラクターは死亡する。", "拷問。心身ともに痛めつけられる。この落とし前を1回受けるたびに、【悪夢】、【疑心暗鬼】、【出不精】、【依存体質】、【弱虫】、【虚弱】の中から代償を一つ選んで修得する。どの代償もすでに修得していた場合、そのキャラクターは死亡する。新しい恋人ができるたび、この落とし前の効果を1回分、無効化することができる。", "苦役。売春や、組織犯罪の資金源になるよう強制労働に従事させられる。この落とし前を1回受けるたびに、以降、セッションの間に「苦役」という特に何の効果ももたらさない計画的行動を一度行わなければいけなくなる。セッション中に規定の「苦役」の回数をこなすことができなかったキャラクターは、「苦役」の必要回数に満たない数だけ、「落とし前表」を使用しなければならない。《トランク》を1個消費すると、この落とし前表の効果を1回分、無効化することができる。", "係累への被害。自分の身内や恋人が殺される。この落とし前を1回受けるたびに、トラウマを1点受ける。", "部位破壊。指や手首を切り落とされたり、臓器を摘出されたりする。この落とし前を1回受けるたびに、「致命傷表」の6番の効果を受ける。", "罰金。法外な違約金を払わされたり、借金を負わされたりする。この落とし前を1回受けるたびに、〔サイフ〕の最大値が1点減少する。〔サイフ〕の最大値が0点になると、そのキャラクターは死亡する。《札束》を5個消費すると、この落とし前の効果を一回分、無効化することができる。", "さらし者。謝罪会見を行わされたり、恥ずかしい動画や写真を公開されたりする。この落とし前を1回受けるたびに、【世界の敵】、【悪名】、【有名人】、【狼少年】、【手配書】、【カモ】の中から代償を一つ選んで修得する。どの代償もすでに修得していた場合、そのキャラクターは死亡する。経験点を2点消費すると、この落とし前の効果を1回分、無効化することができる。", "刻印。坊主頭にされたり、恥ずかしい入れ墨や刻印を刻み付けられたりする。この落とし前を1回受けるたびに、そのキャラクターが行うロマンスや交渉の判定の難易度が1点上昇する。", "差し押さえ。この落とし前を1回受けるたびに、そのキャラクターは、自分が装備しているもっとも価格の高いアイテム1つを失う。おたからは価格8として扱い、もっとも高い価格のアイテムを複数持っている場合は、その中からランダムに選ぶ。", "監禁。マグロ漁船や地下工場に閉じ込められ、長期的な労働に従事させられる。この落とし前を1回受けるたびに、一回別のキャラクターでセッションを行うまで、そのキャラクターを使用できない。《札束》を5個消費すると、この落とし前の効果を1回分、無効化することができる。", "去勢。性的な機能を破壊される。この落とし前を受けると、「無言で押し倒す」ことができなくなる。この落とし前を二回以上受けると、そのキャラクターは死亡する。"];} - else if (/MinamiRET/i['$===']($case)) { - name = "ミナミ遭遇表:"; - table = ["(場所)大変だ、阪神が勝った。4000人のトラキチが、一緒に道頓堀に飛び込もうと迫る。飛び込むなら水中には「下水ワニ」(基本132p)が待っている。拒否するならトラキチたちは「ベンガル虎」(基本133p)を亜侠にけしかける。", "(場所)突然の夕立、そして稲妻! 武器を一番多く持っている亜侠に雷が落ちる。複数いた場合、1D6で一番高い目を出した亜侠に落ちる。黒焦げになり、パーマがかかり、ランダムに一つ武器を失う(熔ける)。", "(一人)酔っ払いの吐瀉物を浴びて〔精神点〕に1ダメージ。風呂に入って着替えるまで、あらゆる交渉は自動的に成功度が-1される。", "(一人)好みの恋愛対象に出会ったと思ったら「美人局」(基本124p)だった!", "(一人)うっかり入った店が暴力喫茶だった! 「押し売り」(基本124p)相当。", "(一人)しつこいキャッチに絡まれる。「勧誘員」(基本124p)相当。", "(一人)裏路地で襲われる。「痴漢・痴女」(基本124p)相当。", "(一人)道を渡ろうとしたら路面電車に撥ねられる。〔肉体点〕に1D6ダメージ。", "(一人)契約刑事に恐喝される。逮捕されたくなければ、〔サイフ〕を1減らせ。", "(一人)うっかりマリア・ヴィスコンティを怒らせた! この場では何も起こらないが、マリアは忘れない。次に亜侠が致命傷表送りになったとき、マリアが出現して亜侠の利き腕を吹き飛ばして去る(致命傷表の判定が必ず「7~9」になる)。", "(一人)「円盤」(基本138p)に襲われ、さらわれる。1ターン経って戻ってくると、頭からアンテナが生えている。キャラクターイラストにアンテナを書き加えろ。それが嫌なら戦うこと。"];} - else if (/ChinatownRET/i['$===']($case)) { - name = "中華街遭遇表:"; - table = ["(一人)好みの恋愛対象に襲われて目くるめく一時を過ごす。だが1ターン経って目が覚めると、房中術で性転換させられている。", "(場所)人を食う「パンダ」(基本133p)に襲われる。", "(一人)道端の占い師をうっかり撥ねて、人肉饅頭の呪いを受ける。このセッション中に行動不能になったら、狂気の料理人に饅頭にされて食われ、後には何も残らない。", "(場所)漢方薬局を冷やかしていたら、世界自然保護プロレス基金WWWWF(World_Wide_Wildelife_Wrestling_Found)のレスラー1D6人(「街頭覇王」(基本134p))に襲われる。亜侠が手に取った犀の角が気に入らなかったのだ。誰かが〔サイフ〕を1支払ってTシャツを買うと許してくれる(キャラクターイラストにパンダのマークをつけること)が、そうでなければ戦うしかない。", "(場所)化石を売りつけようとする「押し売り」(基本124p)に遭遇。品物は1D6を振って決める。1:ゴモラの全身骨格、2:マチカネワニの涙、3:明石原人の糞石、4:生きた北京原人、5:豊臣秀吉15歳のしゃれこうべ、6:三葉虫ボトルキャップ", "(場所)映画の撮影現場に紛れ込んでしまった! このセッションの間、戦闘時になると敵味方全員に《透明ワイヤー》の効果がつく。既に持っていた場合、「跳ぶ」を選んでも使用回数を消費しない。", "(一人)美味しい中華料理を食いすぎて、一時的にすごく太る。このセッションの間は、〔肉体〕が+1されるが、その亜侠に対する命中判定にも+1の修正がつく。", "(一人)道端で碁の勝負を見ていたら、いつのまにか1ターン経っていた。代わりに〔精神点〕が1回復する。", "(一人)お前をスターと間違えたおっかけの大群が迫ってくる。このセッションの間、【有名人】の代償がつく。", "(場所)空飛ぶギロチンを持った老人と片腕の格闘家が戦っている。二人はどちらもチームに加勢を求める。老人は「罪狩」(基本135p)、格闘家は「殺人鬼」(基本137p)だ。味方するなら、どちらに手を貸すか決めて戦闘を行え(味方された本人は戦わない)。どちらかを倒したらもう一人は礼を言って即座に去る。倒したのが格闘家なら《不肖の弟子》が、老人なら《空飛ぶギロチン》(本格的武器)が手に入る。", "(場所)「狂人」とその一党が現れた! キャラクターシートの「好きな映画」が空欄だった亜侠は、頭に火をつけられる。キャラクターのイラストから髪を取り除け。シートに顔を描いていなかった場合、キャラクターシートを燃やすか、自分の頭を燃やすか、〔肉体点〕を1減らすこと。「狂人」を倒すことはできない。彼は永遠だ。"];} - else if (/WarshipLandRET/i['$===']($case)) { - name = "軍艦島遭遇表:"; - table = ["(場所)蟹の押し売りに遭う。しかもただの押し売りではない、食い詰めた「超人兵士」(基本134p)だ! 蟹(価格3の「食事」(基本79p))を買うか、そうでなければ戦うこと。", "(場所)救世軍の配給に長い行列ができている。〔性業値〕判定で「激」を出した亜侠はつい並んでしまい、1ターン消費して「食事」(基本79p)をゲット。", "(場所)荒廃した通りを横断していたら撃たれる。スナイパーだ! 全員1D6を振り、一番低い目を出した亜侠は〔肉体点〕に1D6のダメージ。", "(場所)突然の路面陥没! 乗り物を所持している亜侠は〔精神〕9の判定に成功しないと、逃げ遅れて乗り物に2D6のダメージを受ける。", "(場所)季節はずれの雪が降っている。青く光ってなんだかとても美しい。とりあえず〔肉体点〕と〔精神点〕に1ダメージ。", "(場所)飢えた野犬がぞろぞろついてくる。このセッション中に軍艦島で行動不能になった亜侠は、すぐに食われて後には何も残らない。", "(一人)気がつくと食玩塗りの搾取工場の中……。コンビナートの手配師に捕まったのだ。脱出するのに1ターン無駄にするが、見張りの「ブラックアドレス」(基本127p)一体と戦って勝てば時間を無駄にせずにすむ。", "(一人)自宅が膨張する203高地に取り込まれた。脱出するのに1ターンかかる上、アジトの場所が「軍艦島」になってしまう。", "(場所)ガス爆発!1D6して出た目のエリアに飛ばされる上、飛ばされたエリアの遭遇表を振らねばならない。1:ミナミ、2:十三、3:沙京、4:中華街、5:官庁街、6:軍艦島", "(場所)ひょろひょろ跳んできた「ミサイル」(基本130p)と目が合った。目標を見失っていたミサイルは、亜侠を新たな目標に決めて親しげに近づいてくる。", "(一人)「タイラー・ダーデン」に遭遇し、啓蒙される。これがお前の人生だ。お前はいつか必ず死ぬ。それを認識しない限り、お前は糞のままだ。〔肉体点〕と〔精神点〕に1ダメージ。〔性業値〕が2下がる。更にこのセッション中は「迷」が出ても「激」として扱う。"];} - else if (/CivicCenterRET/i['$===']($case)) { - name = "官庁街遭遇表:"; - table = ["(場所)大規模なデモにぶつかって身動きが取れなくなった。まずいと思う間もなく、列強の鎮圧部隊が容赦なく群集に向かって発砲する。阿鼻叫喚の中で全員〔肉体点〕に1D6のダメージ。", "(場所)火事だ! ビルがぼうぼう燃えている。〔犯罪〕8の判定に失敗すると、野次馬の中でスリにやられ、アイテムをランダムに一つ失う。", "(場所)株価暴落で取り付け騒ぎが起こっている。〔生活〕4以上の亜侠は〔サイフ〕が1減る。", "(一人)身投げか事故か突き落とされたのか、ビルから人が振ってきた。〔戦闘〕で難易度9の判定に成功しないと、直撃されて〔肉体点〕に2D6のダメージ。", "(場所)観光客に写真を撮られる。このセッション中、亜侠に対する逮捕判定の難易度は-1される。", "(一人)汚職警官に職務質問される。「押し売り」(基本124p)相当。", "(場所)軍事パレードが開催中だ。「デモ行進」(基本124p)相当。", "(場所)今日は即売会だ。「ヲタク」か「マニア」の〔趣味〕を持つ亜侠は、1ターン消費して買い物しないと、〔精神点〕に1D6ダメージ。", "(一人)爆弾テロだ! 1D6して出た目のエリアに飛ばされる上、飛ばされたエリアの遭遇表を振らねばならない。1:ミナミ、2:十三、3:沙京、4:中華街、5:官庁街、6:軍艦島", "(場所)ビルから降ってきたお札をみんなが奪い合っている。争奪戦に加わるなら、〔肉体点〕に1D6ダメージを受けて〔サイフ〕を1回復してよい。", "(一人)閉鎖されているはずの地下鉄の入り口が開いている……。性業値判定で「激」が出るとふらふらと入ってしまい、1ターン経った後戻る。奇天烈の宝物表(基本140p)を1回振れる。トラウマを1点受け、中で起こったことは何も憶えていない。入り口は固く閉ざされ、もう開かない。……今のところは。"];} - else if (/DowntownRET/i['$===']($case)) { - name = "十三遭遇表:"; - table = ["(場所)地震だ! 亜侠自身には被害はないが、家が大変なことに。帰宅すると、アジト装備がランダムに1個壊れている。アジト装備がなかった場合、家が壊れている。", "(場所)山から下りてきた猪が突っ込んでくる! データは「トラック野郎」(基本123p)を使う。", "(一人)草野球の代打を頼まれる。1D6せよ。「スポーツ」の趣味があれば+1。1,2:三振! 冷たい視線を浴びて〔精神点〕-1、3,4:ヒット! 喝采を浴びて〔精神点〕1回復。5,6:ホームラン! そしてガラスの割れる音!窓を割られた家から怒り狂った「おかん」(基本122p)が飛び出して、大根片手に亜侠を襲う。", "(場所)「獅子舞」(基本128p)が亜侠の周りをぐるぐる周って離れようとしない。この状態で戦闘が起こると、獅子舞は敵に加わって亜侠を襲う。〔サイフ〕を1渡せば、獅子舞は歯をがちがち言わせて去る。", "(一人)地獄湯の「勝負師」(基本126p)に賭けを挑まれ、ざわざわする。", "(一人)お魚くわえようとするドラ猫に襲われる。〔犯罪〕で難易度9の判定に失敗したらランダムにアイテム一つを失う。亜侠が「食事」(基本79p)を持っていれば、優先的にそれを狙う。", "(場所)神風師団の自警団に囲まれた! 名前にカタカナがある亜侠がいたら集中的に襲われる(「忘八」(基本128p)1D6人相当)。日本人名の亜侠しかいなければ、被害を受けることはない。", "(一人)生臭坊主/生臭尼僧にお布施を要求される。データは「勧誘員」(基本124p)。", "(一人)大仏から身投げをした人が降ってきた。〔戦闘〕で難易度9の判定に成功しないと、直撃されて〔肉体点〕に2D6のダメージ", "(場所)祭囃子が聞こえてきたかと思ったら、目の前をすごい早さで神輿が通り過ぎる。性業値判定で「激」が出た亜侠は、思わず祭に参加してしまい、高速神輿に連れ去られる。1ターン戻ってこない上、疲れきって〔肉体点〕-1。", "(一人)好みの恋愛対象に誘われて夢のような時間を過ごし、気が付くと肥溜めに肩まで漬かっていることに気付く。おばけに化かされた!1ターン消費する。風呂に入って着替えるまで、あらゆる交渉は自動的に成功度が-1される。この効果は一緒に行動する仲間の判定にも影響する。"];} - else if (/ShaokinRET/i['$===']($case)) { - name = "沙京遭遇表:"; - table = ["(一人)いつのまにか、少女/少年が1人ついてきている。奴隷のようだが、亜侠を主人だと思っているらしく離れようとしない。何に相当するか1D6を振れ。1:【守るべき者】(基本103p)、2:愛人(基本80p)、3:使用人(基本80p)、4:居候(基本80p)、5:落とし穴(基本78p)、6:食事(基本79p)。性別はプレイヤーが決めてよい。", "(場所)どこからか煙が漂ってくる……麻薬工場が火事だ! 煙を吸って目を回し、各自1D6を振れ、出た目のドラックの効果を受ける。直接摂取ではないので、ドラッグの強度からは-3。1:コカイン、2:大麻、3:ハルシオン、4:トルエン、5:エクスタシー、6自白剤(ドラッグのデータ→基本79p)", "(場所)やけに人懐っこい豚がいると思ったら、人の味を覚えた豚だった! 戦闘になる。データは「ベンガル虎」(基本133p)を使う。", "(場所)あばれ象が車を踏み潰して暴走している! 乗り物を所持している亜侠は〔精神〕9の判定に成功しないと、逃げ遅れて乗り物に2D6のダメージを受ける。", "(場所)インド人が死んでいる……。死体を漁るなら1D6。1:カレー味の《視肉》(基本85p)、2:サファイア(札束(基本78p)相当)、3:《あわてるなタオル》(基本93p)、4:RPG-7(基本74p)、5:死体じゃなくて「ゾンビ」(137p)だった、6:「はきだめの悪魔」だった", "(一人)バクシーシ! バクシーシ! じゃりンこ10人が〔サイフ〕1点払うまでぞろぞろついてくる。何かあると「邪魔」(基本37p)10人分を行う。", "(一人)いきなり足に何かが噛み付く。「下水ワニ」(基本132p)だ! 〔肉体〕9の判定に成功すると振りほどけるが、失敗すると〔肉体点〕に1ダメージ。成功するまで判定すること。〔肉体点〕が0になると、亜侠は水路に引きずり込まれて食われる。", "(一人)気がつくと奴隷船の船倉の中……。奴隷商人の人狩りに捕まったのだ。脱出するのに1ターン無駄にするが、見張りの「ククバット」(基本127p)1体と戦って勝てば時間を無駄にせずにすむ。", "(一人)アラブの露天商に水煙草を勧められる。一服してまったりする亜侠だが、その懐に小猿が手を伸ばす……。アイテムをランダムに1つ失う。", "(一人)魚を満載したトラックから鮫が落ちてきて、亜侠に噛み付いて死ぬ。怪我はないが離れようとしない。死んだ鮫をぶら下げて歩くことになるので、セッション終了時まで、その亜侠と一緒にいると治安が+2される。", "(場所)祝祭だ! 巨大なジャガーノート(山車)が通りを突き進んでくる。これに轢かれると幸せな来世が保証されるのだ。性業値判定を3回振れ。全部「激」を出した亜侠は、思わず車輪の下に飛び込んで〔肉体点〕に10のダメージを受ける。この亜侠が死んだら、次に作るキャラクターに異能と代償を一つずつ受け継がせること。これがカルマだ。"];} - else if (/LoveLoveRET/i['$===']($case)) { - name = "らぶらぶ遭遇表:"; - table = ["(場所)お互いに運命を感じる。この後のロマンス判定で成功して、トリコを獲得した場合、セッション終了時にそのトリコを経験点消費なしに常備化できる。ただし、このトリコと別れたり、このトリコが死亡したりすると、経験点が1点減少する。", "(場所)「……こんなとこで何やってんの?」「げ」もし、自分のトリコの中に、この場所と同じ〔趣味〕の持ち主がいた場合、その人物が現れる。血戦を行うこと。", "(一人)デート中に相手の姿を見失ってしまう。〔犯罪〕で難易度9の判定を行う。成功すると、その場所の〔趣味〕に対応した趣味おたからをランダムに1つ獲得する。失敗すると、ロマンス判定は行えなくなる。", "(一人)楽しくショッピング! 〔生活〕で難易度9の判定を行う。成功すると、その成功度と同じ値だけ、〔精神点〕を回復できる。失敗すると、セッション中、この後のロマンス判定のファンブル率が2点上昇する。", "(一人)「…………」互いに遠慮して気まずい感じ。〔恋愛〕で難易度9の判定を行う。成功すると、この後のロマンス判定の難易度が1点減少する。失敗すると、この後のロマンス判定の難易度が2点上昇する。", "(場所)亜侠稼業を忘れてしまいそうなほど、充実した時間を過ごす。デートを行っているキャラクター全員は、〔精神点〕が2点回復する。", "(一人)「うーん、ここつまんないね。場所変えよっか」〔恋愛〕で難易度9の判定を行う。成功すると、この後のロマンス判定の難易度が1点減少する。失敗すると、デート参加者全員は、このエリカの遭遇表をさらに1回ずつ振らなければならない。", "(一人)趣味の会話で盛り上がる! 〔教養〕で難易度9の判定を行う。成功すると、それ以降一度だけ、そのセッション中に行う判定の難易度を、その成功度と同じ値だけ減少することができる。失敗すると、セッション中、この場所の〔趣味〕が未修得の状態になる。", "(一人)「あぶない、暴れ馬だッ!」〔戦闘〕で難易度9の判定を行う。成功すると、デートの相手の好みを、自分のタイプと同じものに変更することができる。失敗すると、デートの相手は1D6点のダメージを受ける(セーブ不可)。", "(場所)「ようよう、綺麗なねぇちゃん、連れとるやんけ」「三下」が1D6人現れる。血戦を行うこと。", "(場所)「んー付き合っちゃおうか」デートに参加したキャラクターは、この後のロマンス判定が自動的に成功する。"];} - else if (/AjitoRET/i['$===']($case)) { - name = "アジト遭遇表:"; - table = ["(一人)「強盗殺人の容疑で逮捕する! お前には黙秘権があり、供述は、法廷で不利な証拠として……」どやどやと踏み込んでくる警官たち。「制服警官」がお前を対象にして【逮捕】の異能を使ってくる。「制服警官」の判定が失敗すると、それ以降、このセッション中では、「臭い飯」表を振るとき、その2D6の目からマイナス3することができる。", "(一人)ピンポーン♪ チャイムの音。イヤな予感がするなぁ。1D6を振る。奇数なら「勧誘員」が【ムダ話】を、偶数なら「押し売り」が【売り口上】を使ってくる。", "(一人)イメージチェンジ! たまにはスタイルを変えてみようかな? 外見表を使って、ランダムに外見を変える。そのセッション中、各エリアで〔犯罪〕の行為判定を行うとき、そのエリアの衣装欄に書かれた外見であれば、振ることのできる2D6の回数が1回上昇する。", "(場所)「やっぱり、ここにいやがったな」このアジトにいるキャラクターが【コネ】か【仇敵】か【トリコ】の汎用異能、もしくは汎用代償を修得していれば、それに対応するキャラクター(コネ、仇敵、自分の主人)が現れる。コネなら、アジトにいる全員は、価格がそのキャラクターの〔生活〕-1以下のアイテムを1つ獲得できる。仇敵なら、アジトにいる全員は1ダメージを受ける(セーブ不可)。自分の主人なら【トリコ】の持ち主は、別れをつげられ【トリコ】を失うが〔精神点〕が2D6点減少する。", "(一人)「よう、元気にしてるか?」家族や友人からの突然の連絡。懐かしい気持ちに高揚しつつも、優しい気持ちになる。〔性業値〕を1点上昇、もしくは1点減少することができる。", "(場所)何となくテレビでもつけ、面白いチャンネルがないか、探してみる。うーん。ケーブルテレビに入るべきか……。アジトの持ち主の〔生活〕の値と同じ回数だけ「趣味決定表」を振り、各自、その結果と自分の〔趣味〕を比べてみる。自分が持っている〔趣味〕と同じ〔趣味〕が出ていれば、その回数だけ、自分の〔精神点〕を回復する。", "(一人)あ、こんなところに買い置きが。《食事》を1D6個獲得する。", "(場所)「みんなで鍋でもするか」現在、このアジトにいるキャラクターと手下カテゴリーのアイテムの合計数だけ、〔精神点〕が回復する。", "(一人)ふぅ。やっぱり、自宅が一番落ち着くなぁ。もしも修得していなければ【日常】の異能を修得する。", "(一人)一休み……のつもりが、ついつい居眠りしてしまう。アジトに自分しかいなければ、性業値判定を行うこと。「律」になれば、〔精神点〕をアジトの〔快適度〕の半分だけ回復することができる。「激」なら、「睡眠」をしてしまう。「迷」なら、次のターンもアジトから移動できず、行動もできない。アジトに誰かいたら、もう一度アジト遭遇表を振ること。", "(一人)謎の贈り物が届く……。趣味おたからの中からランダムに1つを選び、それを獲得する。その後、1D6を振る。その目が、このイベントで趣味おたからを獲得した回数以下だった場合、贈り主の呪いによって2D6点のダメージを受ける(セーブ不可)。"];} - else if (/JigokuSpaRET/i['$===']($case)) { - name = "地獄湯遭遇表:"; - table = ["(一人)なぜかあなたはローマ時代にタイムスリップする! 今後、このシナリオのあらゆる判定の難易度が1減少する(累積不可)。", "(場所)お湯の中に鮫が! 〔戦闘〕で難易度9の判定を行う。失敗したキャラクターは〔肉体点〕を1D6点減少。", "(一人)地獄湯の出張販売! 望むなら価格のある地獄組の盟約アイテムを購入することができる。", "(場所)ふぅ。湯上がりは親でも惚れるね。〔恋愛〕で難易度9の判定に成功すると、その場にいる好きなキャラクター1人をトリコにすることができる。", "(一人)あああ、なんか面白そうだなぁ。性業値判定を行う。「激」ならついついギャンブルゾーンに行ってしまう。「迷」なら行動済みになってしまう。「ギャンブル」の〔趣味〕の持ち主は、サイコロの目に2を加えること。", "(場所)地獄組による監視。もしチームが彼らと敵対していれば、うまく身を隠す必要がある。〔犯罪〕で難易度9の判定を行う。失敗すると、〔肉体点〕を1点減少する。そうでなければ、何もなし。", "(一人)うーん。のぼせちゃったかな。〔精神点〕を1点減少する。", "(場所)道に迷いそうになる。〔教養〕で難易度9の判定を行い、失敗したキャラクターは、地獄湯内の6つのゾーンの中からランダムに1つを選び、そこに移動する。", "(一人)ナンパにあう。〔恋愛〕で難易度9の判定に成功すると、色々おごってもらえる。〔サイフ〕を1点回復することができる。", "(場所)まずい。お湯の温度が恐ろしいことになっている! 〔精神点〕を2点減少する。", "(一人)価格3の買い物を行うと、マッサージをしてもらえる。〔肉体点〕を1点、〔精神点〕を1D6点回復できる。"];} - else if (/JailHouseRET/i['$===']($case)) { - name = "JAILHOUSE遭遇表:"; - table = ["「あちらのお客様からです」と渡されたグラス。その中には爆発寸前の《手榴弾》が入っていた。手榴弾はそのPCに命中したものとして扱う。", "「……パパぁ」小さな「じゃりンこ」があなたの裾をつかむ。そのセッションの間、「じゃりンこ」がついてきて、そのPCのロマンス判定を【邪魔】する。", "「あ、サイフがない!」〔サイフ〕を1点減らす。", "乗物が盗まれる! 装備の中に乗物があった場合、そのアイテムを失う。", "誰かと荷物を間違えてしまう! 自分の装備からランダムに1個のアイテムを失う。その後、自分の〔生活〕と等しい報酬表を振ってアイテムを1つ手に入れる。", "「な、なんだテメェ!」他の客たちの喧嘩に巻き込まれる。〔肉体点〕を2点減少(セーブ不可)。", "「突然だけど……別れましょう」あなたに恋人がいれば、そのキャラクターが現れ、2人は別れる。", "何かの間違いだろうか。きみのあおったグラスの中に、《エクスタシー》が混じっていた! か、体があつィっ!", "「ようチンピラ、まだ生きてたのかい?」契約刑事のマリアが絡んでくる。彼女を楽しませるために「飲み会」を行わないとチーム全員が「臭い飯」表を一回ずつ振らなければいけない。", "突然の銃声! 「侠客」1人がきみに向かって《トカレフ》を「仁義なく」ぶっ放す! 血戦を開始せよ。", "「エルヴィス」があらわれ、店で奇跡的なまでに楽しいパーティーが行われる。チーム全員が気付くと1日が経過していた。"];} - else if (/TreatmentIT/i['$===']($case)) { - name = "治療イベント表:"; - table = ["不治の病だったことが分かる。1D6セッション後に死亡するが、今回以降のセッションで得られる経験値はすべて2倍になる。", "治療中の動物が脱走! サイコロを1個振り、1~4なら「番犬」が、5~6なら「ベンガル虎」が現れる。誰かが〔戦闘〕で難易度11の判定に成功すると、血戦を回避できる。", "「ここかなぁ~」治療の結果、変なツボをつかれたらしく、このセッションの間、〔破壊力〕が9に、〔反応力〕が1になる。", "「芸術的な内臓をしている」希望すれば、あなたの腎臓を《トランク》1つで買ってくれる。", "急患が大量に運ばれてくる。これ以降、このセッション終了時まで、乃木クリニックの治療の価格が、すべて1上昇する。", "乃木センセイの本気が炸裂! 美形タイプの男性キャラクターが1人いるたびに、治療の成功度が自動的に+2される。", "「だって、字ぃ読めないしぃ」リョータが点滴を間違える。サイコロを1個振り、下記のドラッグを摂取してしまう。1:《トルエン》 2:《ヘロイン》 3:《ハルシオン》 4《エクスタシー》 5:《コカイン》 6:《シャブ》", "「ウッソ、マッジ!?」待合室で読みたかった雑誌のバックナンバーを発見。〔精神点〕が全快し、トラウマを受けていればそれも1点回復する。", "医療ミス! サイコロを1個振り、1~4ならメスが、5~6ならランダムに趣味おたから1個が手術のミスで身体の中に残ってしまう。メスが身体に残っているキャラクターは、ファンブルを起こすたびに1ダメージを受けてしまう。重症の治療の判定に成功すると、中のアイテムを取り出すことができる。", "治療のついでに身体の異常が発見される。男性なら性病で鼻がもげ〔恋愛〕が1点減少、女性なら子供ができていることがわかる。", "奇跡的な治療のワザ! 治療判定の結果に関わらず〔肉体点〕が全快する。"];} - else if (/CollegeIT/i['$===']($case)) { - name = "大学イベント表:"; - table = ["運動家に勧誘される。〔精神点〕を2点減少する。", "痴情のもつれ! 自分のトリコの数を数える。1D6を振り、その数以下の目を出してしまった場合、刺されてしまう。〔肉体点〕に3ダメージ(セーブ不可)。", "バイトの張り紙が…… セッション中に、何でもいいのでおたからを手に入れていれば、セッション終了時にそれを《トランク》で買い取ってくれる。", "コンパに誘われる。次の日の夜にコンパに行くことができる。コンパに行ったキャラクターは〔恋愛〕で難易度9の判定に成功すると、「女子高生」と恋人になる。", "授業にもぐりこむ。すやすやと心地よい時間が過ぎ、〔精神点〕を6点回復する。", "サークルボックスでダベる。同じターンに、他の仲間がリンク判定を行っていれば、好きな情報イベント表を振ることができる。", "キャンパスでいちゃいちゃカップルに遭遇する。らぶらぶオーラにあてられる。", "代返を頼まれる。〔精神〕で難易度9の判定に成功しないと、次の日の朝は行動を行えない。その代わり、学食で一回おごってもらえる。", "教授の実験に付き合わされる。〔肉体〕で難易度9の判定に失敗すると、《LSD》を飲まされる。", "麻雀に誘われる。次の日の夜に麻雀に行くことができる。麻雀に行ったキャラクターは、〔犯罪〕で難易度9の判定を行い、その成功度分だけ〔サイフ〕を回復することができる。ただし、〔性業値〕の判定を行い「律」以外だと徹マンになり、その日は無理してしまう。", "恋愛フラグが起動。チームの異性のキャラクターをランダムに1人選び、その人のトリコになる。また、選ばれた異性のキャラクターもランダムに異性キャラクターを1人選び、その人のトリコになる。"];} - else if (/FatalVT/i['$===']($case)) { - name = "乗物致命傷表:"; - table = ["乗物は破壊。乗物に乗車していたキャラクターは、性業値判定を行う。「激」か「迷」だった者は、大破に巻き込まれ、2D6点のダメージを受ける(セーブ不可)。", "「ひどい運転しやがって!」死んだかと思った乗物が幽霊自動車になって、襲いかかってくる。", "「今まで一緒に乗ってくれてありがとう」乗物が、最後にきみに語りかけてくる。炎上する乗物を眺めながら、思わず涙が流れる。乗物は破壊。乗物の持ち主は、〔精神点〕を2点回復。", "ハンドルがきかず、人をひいてしまう。乗物は破壊。〔犯罪〕で難易度9の判定に失敗すると「臭い飯表」を1回振ること。", "コロコロコロコロ……車輪が転がる。ダメだ。もう一歩も動かない。乗物が破壊される。", "壮絶なクラッシュ!! 乗物とその乗物に乗せていたアイテムがすべて破壊される。", "乗物に衝撃が走る! 〔精神〕で難易度9の判定を行う。失敗すると、その乗物に乗せていたアイテムがすべて破壊される。乗物は破壊される。", "バッテリーがあがってしまった。乗物が一時的に使用不能に。1ターン後、乗物の〔肉体点〕が1になる。", "「おい! 走ってくれ! 走ってくれよ!」乗物が一時的に使用不能に。1D6ラウンド後、〔肉体点〕が1になる。", "エンスト! 乗物が一時的に使用不能に。1D6ターン後、〔肉体点〕が1D6点回復する。", "「まだ走れるよ!」奇跡のような走り! さきほどのダメージを無効に。"];} - else if (/TimeUT/i['$===']($case)) { - name = "時間切れ表:"; - table = ["は! 夢か。今までのことは夢だった。すべて世はこともなし。", "UFOが現れ、トラクタービームに牽引される。全員〔精神〕で難易度9の判定を行う。失敗したキャラクターは、1D6セッション別のキャラクターでセッションを行うまで、再利用できなくなる。", "まわりでバタバタと人が倒れ始める。新型インフルエンザウイルスが、知性を持ち始め、突如人類に反旗を翻す。全員、〔肉体〕で難易度9の判定を行う。失敗したキャラクターは、〔肉体〕が1点減少する。", "急に、家のガスコンロを消したかどうか気になり始める。全員、〔生活〕で難易度9の判定を行う。失敗したキャラクターは、本当に火を消し忘れていた。家が火事になり、〔アジト装備〕がすべて破壊される。", "突如、みんなが歌い踊り出す。全員、〔教養〕で難易度9の判定を行う。失敗したキャラクターは、リズムを外して、トラウマを1点受ける。", "内戦勃発! 派手な市街戦が開始される。全員、〔戦闘〕で難易度9の判定を行う。失敗したキャラクターは、2D6点のダメージを受ける。内戦は3日後に終結する。", "いやーん、まいっちんぐ。200人の裸の美女が目の前を走りさっていく。一体何が起きたんだろう? 全員、〔恋愛〕で難易度9の判定を行う。失敗したキャラクターは、いつの間にか、その集団に呑み込まれ……トラウマを1点受ける。", "ビルの上から、大量のお札が降ってくる。皆、我を忘れて、それに群がり始める。全員、〔犯罪〕で難易度9の判定を行う。失敗したキャラクターは、〔通常装備〕欄からランダムにアイテム1つを失う。", "聖者が街にやってくる。「悔い改めよ!」全員、〔精神〕で難易度9の判定を行う。失敗したキャラクターは、好きなカルマ1種類の異能と代償が1つずつ未修得の状態になる。", "地獄の釜が開く。街に死者たちがあふれ出す。全員〔肉体〕で難易度9の判定を行う。失敗したキャラクターは、屍人になる。", "たらら、たらら、たらららら、たらららら♪ 大阪湾に怪獣王が現れる。大阪市は大混乱に! 全員、爆発4の効果を適用される。"];}; - return [name, table]; - }, $Satasupe_get2d6TableInfo$20.$$arity = 1), nil) && 'get2d6TableInfo'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/ScreamHighSchool.js b/src/assets/dicebot/ScreamHighSchool.js deleted file mode 100644 index f16a70ab2..000000000 --- a/src/assets/dicebot/ScreamHighSchool.js +++ /dev/null @@ -1,219 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/GardenOrder"] = function(Opal) { - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$setPrefixes', '$===', '$to_i', '$last_match', '$get_critical_border', '$check_roll_repeat_attack', '$look_up_damage_chart', '$nil?', '$max', '$floor', '$/', '$check_roll', '$<', '$roll', '$get_check_result', '$<=', '$>=', '$get_damage_table_info_by_type', '$get_table_by_number', '$[]', '$freeze']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'GardenOrder'); - - var $nesting = [self].concat($parent_nesting), $GardenOrder_rollDiceCommand$1, $GardenOrder_get_critical_border$2, $GardenOrder_check_roll_repeat_attack$3, $GardenOrder_check_roll$4, $GardenOrder_get_check_result$5, $GardenOrder_look_up_damage_chart$6, $GardenOrder_get_damage_table_info_by_type$7; - - - Opal.const_set($nesting[0], 'ID', "GardenOrder"); - Opal.const_set($nesting[0], 'NAME', "ガーデンオーダー"); - Opal.const_set($nesting[0], 'SORT_KEY', "かあてんおおたあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・基本判定\n" + " GOx/y@z x:成功率、y:連続攻撃回数(省略可)、z:クリティカル値(省略可)\n" + " (連続攻撃では1回の判定のみが実施されます)\n" + " 例)GO55 GO100/2 GO70@10 GO155/3@44\n" + "・負傷表\n" + " DCxxy\n" + " xx:属性(切断:SL,銃弾:BL,衝撃:IM,灼熱:BR,冷却:RF,電撃:EL)\n" + " y:ダメージ\n" + " 例)DCSL7 DCEL22\n"); - self.$setPrefixes(["GO(\\-?\\d+)(\\/\\d+)?(@\\d+)?", "DC(SL|BL|IM|BR|RF|EL).+"]); - - Opal.def(self, '$rollDiceCommand', $GardenOrder_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, self = this, $case = nil, success_rate = nil, repeat_count = nil, critical_border_text = nil, critical_border = nil, type = nil, damage_value = nil; - - - $case = command; - if (/GO(\-?\d+)(\/(\d+))?(@(\d+))?/i['$===']($case)) { - success_rate = $$($nesting, 'Regexp').$last_match(1).$to_i(); - repeat_count = ($truthy($a = $$($nesting, 'Regexp').$last_match(3)) ? $a : 1).$to_i(); - critical_border_text = $$($nesting, 'Regexp').$last_match(5); - critical_border = self.$get_critical_border(critical_border_text, success_rate); - return self.$check_roll_repeat_attack(success_rate, repeat_count, critical_border);} - else if (/^DC(SL|BL|IM|BR|RF|EL)(\d+)/i['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1); - damage_value = $$($nesting, 'Regexp').$last_match(2).$to_i(); - return self.$look_up_damage_chart(type, damage_value);}; - return nil; - }, $GardenOrder_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$get_critical_border', $GardenOrder_get_critical_border$2 = function $$get_critical_border(critical_border_text, success_rate) { - var self = this, critical_border = nil; - - - if ($truthy(critical_border_text['$nil?']())) { - } else { - return critical_border_text.$to_i() - }; - critical_border = [$rb_divide(success_rate, 5).$floor(), 1].$max(); - return critical_border; - }, $GardenOrder_get_critical_border$2.$$arity = 2); - - Opal.def(self, '$check_roll_repeat_attack', $GardenOrder_check_roll_repeat_attack$3 = function $$check_roll_repeat_attack(success_rate, repeat_count, critical_border) { - var self = this, success_rate_per_one = nil; - - - success_rate_per_one = $rb_divide(success_rate, repeat_count).$floor(); - return self.$check_roll(success_rate_per_one, critical_border); - }, $GardenOrder_check_roll_repeat_attack$3.$$arity = 3); - - Opal.def(self, '$check_roll', $GardenOrder_check_roll$4 = function $$check_roll(success_rate, critical_border) { - var $a, $b, self = this, fumble_border = nil, dice_value = nil, result = nil, text = nil; - - - if ($truthy($rb_lt(success_rate, 0))) { - success_rate = 0}; - fumble_border = (function() {if ($truthy($rb_lt(success_rate, 100))) { - return 96 - } else { - return 99 - }; return nil; })(); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (dice_value = ($a[0] == null ? nil : $a[0])), $b; - result = self.$get_check_result(dice_value, success_rate, critical_border, fumble_border); - text = "" + "D100<=" + (success_rate) + "@" + (critical_border) + " > " + (dice_value) + " > " + (result); - return text; - }, $GardenOrder_check_roll$4.$$arity = 2); - - Opal.def(self, '$get_check_result', $GardenOrder_get_check_result$5 = function $$get_check_result(dice_value, success_rate, critical_border, fumble_border) { - var self = this; - - - if ($truthy($rb_le(dice_value, critical_border))) { - return "クリティカル"}; - if ($truthy($rb_ge(dice_value, fumble_border))) { - return "ファンブル"}; - if ($truthy($rb_le(dice_value, success_rate))) { - return "成功"}; - return "失敗"; - }, $GardenOrder_get_check_result$5.$$arity = 4); - - Opal.def(self, '$look_up_damage_chart', $GardenOrder_look_up_damage_chart$6 = function $$look_up_damage_chart(type, damage_value) { - var $a, $b, self = this, name = nil, table = nil, row = nil; - - - $b = self.$get_damage_table_info_by_type(type), $a = Opal.to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b; - row = self.$get_table_by_number(damage_value, table, nil); - if ($truthy(row['$nil?']())) { - return nil}; - return "" + "負傷表:" + (name) + "[" + (damage_value) + "] > " + (row['$[]']("damage")) + " | " + (row['$[]']("name")) + " … " + (row['$[]']("text")); - }, $GardenOrder_look_up_damage_chart$6.$$arity = 2); - - Opal.def(self, '$get_damage_table_info_by_type', $GardenOrder_get_damage_table_info_by_type$7 = function $$get_damage_table_info_by_type(type) { - var self = this, data = nil; - - - data = $$($nesting, 'DAMAGE_TABLE')['$[]'](type); - if ($truthy(data['$nil?']())) { - return nil}; - return [data['$[]']("name"), data['$[]']("table")]; - }, $GardenOrder_get_damage_table_info_by_type$7.$$arity = 1); - return Opal.const_set($nesting[0], 'DAMAGE_TABLE', $hash2(["SL", "BL", "IM", "BR", "RF", "EL"], {"SL": $hash2(["name", "table"], {"name": "切断", "table": [[5, $hash2(["name", "text", "damage"], {"name": "切り傷", "text": "皮膚が切り裂かれる。", "damage": "軽傷1"})], [10, $hash2(["name", "text", "damage"], {"name": "脚部負傷", "text": "足が切り裂かれ、思わずひざまずく。", "damage": "軽傷2/マヒ"})], [13, $hash2(["name", "text", "damage"], {"name": "出血", "text": "斬り裂かれた傷から出血が続く。", "damage": "軽傷3/DOT:軽傷1"})], [16, $hash2(["name", "text", "damage"], {"name": "胴部負傷", "text": "胴部に大きな傷を受ける。", "damage": "軽傷4"})], [19, $hash2(["name", "text", "damage"], {"name": "腕部負傷", "text": "腕に大きな傷を受ける。", "damage": "重傷1/DOT:軽傷1"})], [22, $hash2(["name", "text", "damage"], {"name": "腹部負傷", "text": "腹部を深く切り裂かれる。", "damage": "重傷2"})], [25, $hash2(["name", "text", "damage"], {"name": "大量出血", "text": "傷は深く、そこから大量に出血する。", "damage": "重傷2/DOT:軽傷2"})], [28, $hash2(["name", "text", "damage"], {"name": "裂傷", "text": "治りにくい傷をつけられる。", "damage": "重傷3"})], [31, $hash2(["name", "text", "damage"], {"name": "視界不良", "text": "頭部に受けた傷から血が流れ、視界がふさがれる。", "damage": "重傷3/スタン"})], [34, $hash2(["name", "text", "damage"], {"name": "胸部負傷", "text": "胸から腰にかけて大きく切り裂かれる。", "damage": "致命傷1"})], [37, $hash2(["name", "text", "damage"], {"name": "動脈切断", "text": "動脈が切り裂かれ、噴き出るように出血する。", "damage": "致命傷1/DOT:軽傷3"})], [39, $hash2(["name", "text", "damage"], {"name": "胸部切断", "text": "傷が肺にまで達し、喀血する。", "damage": "致命傷2"})], [9999, $hash2(["name", "text", "damage"], {"name": "脊髄損傷", "text": "脊髄が損傷する。", "damage": "致命傷2/放心、スタン、マヒ"})]]}), "BL": $hash2(["name", "table"], {"name": "銃弾", "table": [[5, $hash2(["name", "text", "damage"], {"name": "腕部損傷", "text": "銃弾が腕をかすめた。", "damage": "軽傷2"})], [10, $hash2(["name", "text", "damage"], {"name": "腕部貫通", "text": "銃弾が腕を貫く。痛みはあるが動作に支障はない。", "damage": "軽傷3"})], [13, $hash2(["name", "text", "damage"], {"name": "胴部負傷", "text": "胴部に銃弾をくらう。痛みで動きが鈍くなる。", "damage": "軽傷4/スロウ:-3"})], [16, $hash2(["name", "text", "damage"], {"name": "肩負傷", "text": "肩を貫かれる。骨が砕けたようだ。", "damage": "重傷1"})], [19, $hash2(["name", "text", "damage"], {"name": "腹部負傷", "text": "腹部が貫かれる。かろうじて内臓にダメージはないようだ。", "damage": "重傷2"})], [22, $hash2(["name", "text", "damage"], {"name": "脚部貫通", "text": "脚を銃弾に貫かれ、その場でひざまずく。", "damage": "重傷2/マヒ"})], [25, $hash2(["name", "text", "damage"], {"name": "消化器系損傷", "text": "胃などの消化器官にダメージを受ける。", "damage": "重傷3"})], [28, $hash2(["name", "text", "damage"], {"name": "盲管銃弾", "text": "身体に弾丸が深々と刺さる。激痛が走る。", "damage": "重傷3/スロウ:-5"})], [31, $hash2(["name", "text", "damage"], {"name": "内臓損傷", "text": "いくつかの内臓にダメージを受ける。", "damage": "致命傷1/スタン"})], [34, $hash2(["name", "text", "damage"], {"name": "胴部貫通", "text": "腹部への攻撃が貫通し、出血する。", "damage": "致命傷1/DOT:軽傷1"})], [37, $hash2(["name", "text", "damage"], {"name": "胸部負傷", "text": "銃弾で肺を貫かれる。", "damage": "致命傷2"})], [39, $hash2(["name", "text", "damage"], {"name": "致命的な一撃", "text": "銃弾が頭部に命中。ショックで意識を飛ばされる。", "damage": "致命傷2/放心"})], [9999, $hash2(["name", "text", "damage"], {"name": "必殺の一撃", "text": "銃弾が心臓の近くを貫く。動脈にダメージを受けたようだ。", "damage": "致命傷2/DOT:重傷1"})]]}), "IM": $hash2(["name", "table"], {"name": "衝撃", "table": [[5, $hash2(["name", "text", "damage"], {"name": "打撲", "text": "攻撃を受けた箇所がどす黒く腫れ上がる。", "damage": "軽傷1"})], [10, $hash2(["name", "text", "damage"], {"name": "転倒", "text": "衝撃で転倒する。", "damage": "軽傷1/マヒ"})], [13, $hash2(["name", "text", "damage"], {"name": "平衡感覚喪失", "text": "衝撃で三半規管にダメージを受ける。", "damage": "軽傷2、疲労2"})], [16, $hash2(["name", "text", "damage"], {"name": "ボディーブロー", "text": "腹部に直撃。痛みが継続し、体力を奪う。", "damage": "軽傷3/DOT:疲労3"})], [19, $hash2(["name", "text", "damage"], {"name": "痛打", "text": "胴部や脚部などに打撃を受ける。", "damage": "軽傷4/スタン"})], [22, $hash2(["name", "text", "damage"], {"name": "頭部痛打", "text": "頭部にクリーンヒット。意識がもうろうとする。", "damage": "軽傷5/放心"})], [25, $hash2(["name", "text", "damage"], {"name": "脚部骨折", "text": "攻撃が足に命中し、骨折する。", "damage": "重傷1/スロウ:-5"})], [28, $hash2(["name", "text", "damage"], {"name": "大転倒", "text": "激しい衝撃によって、負傷すると共に大きく体勢を崩す。", "damage": "重傷1/マヒ、スタン"})], [31, $hash2(["name", "text", "damage"], {"name": "脳震盪", "text": "脳が大きく揺さぶられ、意識が飛びそうになる。", "damage": "重傷2/放心"})], [34, $hash2(["name", "text", "damage"], {"name": "複雑骨折", "text": "攻撃を受けた部分が大きくひしゃげ、複雑骨折したようだ。", "damage": "重傷3/放心、スタン"})], [37, $hash2(["name", "text", "damage"], {"name": "頭部裂傷", "text": "頭部に命中。皮膚が大きく裂ける。", "damage": "致命傷1、疲労3"})], [39, $hash2(["name", "text", "damage"], {"name": "肋骨負傷", "text": "折れた肋骨が肺に突き刺さり、まともに呼吸を行なうことができない。", "damage": "致命傷1/放心、スタン"})], [9999, $hash2(["name", "text", "damage"], {"name": "内臓損傷", "text": "衝撃が身体の芯まで届き、内臓がいくつか傷ついたようだ。", "damage": "致命傷2/DOT:重傷1"})]]}), "BR": $hash2(["name", "table"], {"name": "灼熱", "table": [[5, $hash2(["name", "text", "damage"], {"name": "火傷", "text": "皮膚に小さな火傷を負う。", "damage": "軽傷1"})], [10, $hash2(["name", "text", "damage"], {"name": "温度上昇", "text": "熱によって、怪我だけではなく体力も奪われる。", "damage": "軽傷2、疲労1"})], [13, $hash2(["name", "text", "damage"], {"name": "恐怖", "text": "燃え上がる炎に恐怖を感じ、身体がすくんで動きが止まる。", "damage": "軽傷3/放心"})], [16, $hash2(["name", "text", "damage"], {"name": "発火", "text": "衣服や身体の一部に火が燃え移る。", "damage": "軽傷3/DOT:軽傷1"})], [19, $hash2(["name", "text", "damage"], {"name": "爆発", "text": "爆発により吹き飛ばされ、転倒する。", "damage": "重傷1/マヒ"})], [22, $hash2(["name", "text", "damage"], {"name": "大火傷", "text": "痕が残るほどの大きな火傷を負う。", "damage": "重傷2"})], [25, $hash2(["name", "text", "damage"], {"name": "熱波", "text": "火傷と強力な熱により意識がもうろうとする。", "damage": "重傷2/スタン"})], [28, $hash2(["name", "text", "damage"], {"name": "大爆発", "text": "激しい爆発で吹き飛ばされ、ダメージと共に転倒する。", "damage": "重傷3/マヒ"})], [31, $hash2(["name", "text", "damage"], {"name": "大発火", "text": "広範囲に火が燃え移る。", "damage": "重傷3/DOT:軽傷1"})], [34, $hash2(["name", "text", "damage"], {"name": "炭化", "text": "高熱のあまり、焼けた部分が炭化してしまう。", "damage": "致命傷1"})], [37, $hash2(["name", "text", "damage"], {"name": "内臓火傷", "text": "高温の空気を吸い込む、気道にも火傷を負ってしまう。", "damage": "致命傷1/DOT:軽傷1"})], [39, $hash2(["name", "text", "damage"], {"name": "全身火傷", "text": "身体の各所に深い火傷を負う。", "damage": "致命傷2"})], [9999, $hash2(["name", "text", "damage"], {"name": "致命的火傷", "text": "身体の大部分に焼けどを負う。", "damage": "致命傷2/スタン"})]]}), "RF": $hash2(["name", "table"], {"name": "冷却", "table": [[5, $hash2(["name", "text", "damage"], {"name": "冷気", "text": "軽い凍傷を受ける。", "damage": "軽傷1"})], [10, $hash2(["name", "text", "damage"], {"name": "霜の衣", "text": "身体が薄い氷で覆われ、動きが鈍る。", "damage": "軽傷1/疲労1"})], [13, $hash2(["name", "text", "damage"], {"name": "凍傷", "text": "凍傷により身体が傷つけられる。", "damage": "軽傷2"})], [16, $hash2(["name", "text", "damage"], {"name": "体温低下", "text": "冷気によって体温を奪われる。", "damage": "軽傷3/DOT:疲労1"})], [19, $hash2(["name", "text", "damage"], {"name": "氷の枷", "text": "肘や膝などが氷で覆われ、動きが取りにくくなる。", "damage": "重傷1/マヒ"})], [22, $hash2(["name", "text", "damage"], {"name": "大凍傷", "text": "身体の各所に凍傷を受ける。", "damage": "重傷1/DOT:疲労2"})], [25, $hash2(["name", "text", "damage"], {"name": "氷の束縛", "text": "下半身が凍りつき、動くことができない。", "damage": "重傷2/マヒ"})], [28, $hash2(["name", "text", "damage"], {"name": "視界不良", "text": "頭部にも氷が張り、視界がふさがれる。", "damage": "重傷2/スタン"})], [31, $hash2(["name", "text", "damage"], {"name": "腕部凍結", "text": "腕が凍りづけになり、動かすことができない。", "damage": "重傷3/放心"})], [34, $hash2(["name", "text", "damage"], {"name": "重度凍傷", "text": "さらに体温が低下し、深刻な凍傷を受ける。", "damage": "致命傷1"})], [37, $hash2(["name", "text", "damage"], {"name": "全身凍結", "text": "全身が凍りづけになる。", "damage": "致命傷1/DOT:疲労2"})], [39, $hash2(["name", "text", "damage"], {"name": "致命的凍傷", "text": "身体全身に凍傷を受ける。", "damage": "致命傷2"})], [9999, $hash2(["name", "text", "damage"], {"name": "氷の棺", "text": "完全に氷に閉じ込められる。", "damage": "致命傷2/スタン、マヒ"})]]}), "EL": $hash2(["name", "table"], {"name": "電撃", "table": [[5, $hash2(["name", "text", "damage"], {"name": "静電気", "text": "全身の毛が逆立つ。", "damage": "疲労3"})], [10, $hash2(["name", "text", "damage"], {"name": "電熱傷", "text": "電流によって傷つく。", "damage": "疲労1、軽傷1"})], [13, $hash2(["name", "text", "damage"], {"name": "感電", "text": "電流で傷つくと共に、身体が軽くしびれる。", "damage": "疲労2、軽傷2"})], [16, $hash2(["name", "text", "damage"], {"name": "閃光", "text": "激しい電光により、一時的に視界がふさがれる。", "damage": "軽傷3/スタン"})], [19, $hash2(["name", "text", "damage"], {"name": "脚部感電", "text": "電流により脚がしびれ、動けなくなる。", "damage": "重傷1/マヒ"})], [22, $hash2(["name", "text", "damage"], {"name": "大電熱傷", "text": "身体の各所が電流によって傷つく。", "damage": "疲労2、重傷2"})], [25, $hash2(["name", "text", "damage"], {"name": "腕部負傷", "text": "電流で腕がしびれ、動けなくなる。", "damage": "軽傷1、重傷2/放心"})], [28, $hash2(["name", "text", "damage"], {"name": "大感電", "text": "電流によって身体中がしびれ、動けなくなる。", "damage": "重傷2/スタン、マヒ"})], [31, $hash2(["name", "text", "damage"], {"name": "一時心停止", "text": "強力な電撃のショックにより、心臓がほんの一瞬だけ止まる。", "damage": "疲労3、重傷3"})], [34, $hash2(["name", "text", "damage"], {"name": "大電流", "text": "全身に電流が駆け巡る。", "damage": "重傷3/放心、マヒ"})], [37, $hash2(["name", "text", "damage"], {"name": "致命電熱傷", "text": "全身が電流によって傷つく。", "damage": "重傷1、致命傷1"})], [39, $hash2(["name", "text", "damage"], {"name": "心停止", "text": "強力な電撃のショックにより、心臓が一時的に止まる。死の淵が見える。", "damage": "疲労3、重傷1、致命傷1"})], [9999, $hash2(["name", "text", "damage"], {"name": "組織炭化", "text": "全身が電流で焼かれ、あちこちの組織が炭化する。", "damage": "致命傷2/スタン"})]]})}).$freeze()); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$setPrefixes', '$===', '$upcase', '$last_match', '$to_i', '$get_critical_border', '$check_roll_sh', '$check_roll_repeat_attack', '$look_up_damage_chart', '$<', '$roll', '$get_check_result', '$get_supplementary', '$empty?']); - - self.$require("diceBot/GardenOrder"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ScreamHighSchool'); - - var $nesting = [self].concat($parent_nesting), $ScreamHighSchool_rollDiceCommand$1, $ScreamHighSchool_check_roll_sh$2, $ScreamHighSchool_get_supplementary$3; - - - Opal.const_set($nesting[0], 'ID', "ScreamHighSchool"); - Opal.const_set($nesting[0], 'NAME', "スクリームハイスクール"); - Opal.const_set($nesting[0], 'SORT_KEY', "すくりいむはいすくうる"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・基本判定\n" + " SHx/y@z x:成功率、y:連続攻撃回数(省略可)、z:クリティカル値(省略可)\n" + " (連続攻撃では1回の判定のみが実施されます)\n" + " 例)SH55 SH(40-20) SH100/2 SH70@10 SH155/3@44\n" + "・感情判定\n" + " EMx@z x:成功率、z:クリティカル値(省略可)\n" + " 例)EM50 EM50@15\n" + "・性格傾向判定\n" + " TRx@z x:成功率、z:クリティカル値(省略可)\n" + " 例)TR60 TR60@15\n" + "・恐怖判定\n" + " FEx@z x:成功率、z:クリティカル値(省略可)\n" + " 例)FE70 FE70@15\n" + "・負傷表\n" + " DCxxy\n" + " xx:属性(切断:SL,銃弾:BL,衝撃:IM,灼熱:BR,冷却:RF,電撃:EL)\n" + " y:ダメージ\n" + " 例)DCSL7 DCEL22\n"); - self.$setPrefixes(["(SH|SHS)(\\-?\\d+)(\\/\\d+)?(@\\d+)?", "(EM|TR|FE)(\\-?\\d+)(@\\d+)?", "DC(SL|BL|IM|BR|RF|EL).+"]); - - Opal.def(self, '$rollDiceCommand', $ScreamHighSchool_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, self = this, $case = nil, command_type = nil, success_rate = nil, critical_border_text = nil, critical_border = nil, repeat_count = nil, type = nil, damage_value = nil; - - - $case = command; - if (/(EM|TR|FE)(\-?\d+)(@(\d+))?/i['$===']($case)) { - command_type = $$($nesting, 'Regexp').$last_match(1).$upcase(); - success_rate = $$($nesting, 'Regexp').$last_match(2).$to_i(); - critical_border_text = $$($nesting, 'Regexp').$last_match(4); - critical_border = self.$get_critical_border(critical_border_text, success_rate); - return self.$check_roll_sh(success_rate, critical_border, command_type);} - else if (/(SH|SHS)(\-?\d+)(\/(\d+))?(@(\d+))?/i['$===']($case)) { - success_rate = $$($nesting, 'Regexp').$last_match(2).$to_i(); - repeat_count = ($truthy($a = $$($nesting, 'Regexp').$last_match(4)) ? $a : 1).$to_i(); - critical_border_text = $$($nesting, 'Regexp').$last_match(6); - critical_border = self.$get_critical_border(critical_border_text, success_rate); - return self.$check_roll_repeat_attack(success_rate, repeat_count, critical_border);} - else if (/^DC(SL|BL|IM|BR|RF|EL)(\d+)/i['$===']($case)) { - type = $$($nesting, 'Regexp').$last_match(1); - damage_value = $$($nesting, 'Regexp').$last_match(2).$to_i(); - return self.$look_up_damage_chart(type, damage_value);}; - return nil; - }, $ScreamHighSchool_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$check_roll_sh', $ScreamHighSchool_check_roll_sh$2 = function $$check_roll_sh(success_rate, critical_border, command_type) { - var $a, $b, self = this, fumble_border = nil, dice_value = nil, result = nil, title = nil, supplementary = nil, text = nil; - - - if ($truthy($rb_lt(success_rate, 0))) { - success_rate = 0}; - fumble_border = (function() {if ($truthy($rb_lt(success_rate, 100))) { - return 96 - } else { - return 99 - }; return nil; })(); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (dice_value = ($a[0] == null ? nil : $a[0])), $b; - result = self.$get_check_result(dice_value, success_rate, critical_border, fumble_border); - $b = self.$get_supplementary(command_type, result), $a = Opal.to_ary($b), (title = ($a[0] == null ? nil : $a[0])), (supplementary = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(supplementary['$empty?']())) { - } else { - supplementary = "" + "(" + (supplementary) + ")" - }; - text = "" + (title) + "判定 D100<=" + (success_rate) + "@" + (critical_border) + " > " + (dice_value) + " > " + (result) + (supplementary); - return text; - }, $ScreamHighSchool_check_roll_sh$2.$$arity = 3); - return (Opal.def(self, '$get_supplementary', $ScreamHighSchool_get_supplementary$3 = function $$get_supplementary(command_type, result) { - var self = this, title = nil, supplementary = nil, $case = nil; - - - title = ""; - supplementary = ""; - $case = command_type; - if ("EM"['$===']($case)) { - title = "感情"; - $case = result; - if ("クリティカル"['$===']($case)) {supplementary = "次に行う判定の成功率に+50%"} - else if ("成功"['$===']($case)) {supplementary = "次に行う判定の成功率に+30%"} - else if ("失敗"['$===']($case)) {supplementary = "次に行う判定の成功率に-20%、呪縛+1点"} - else if ("ファンブル"['$===']($case)) {supplementary = "次に行う判定の成功率に-50%、呪縛+1D5点"};} - else if ("TR"['$===']($case)) { - title = "性格傾向"; - $case = result; - if ("失敗"['$===']($case)) {supplementary = "反対側の性格傾向で再判定する。あるいは、もしこれがその再判定の結果であればプレイヤーが性格傾向を選択する"} - else if ("ファンブル"['$===']($case)) {supplementary = "反対側の性格傾向に従い、呪縛+1D5点する。あるいは、もしこれが失敗後の再判定の結果だった場合、PCは混乱し行動を放棄するか逃げ出す。呪縛+2点"} - else {supplementary = "判定した性格傾向に従う"};} - else if ("FE"['$===']($case)) { - title = "恐怖"; - $case = result; - if ("成功"['$===']($case)) {supplementary = "ショックを受け流した。恐怖判定効果表の成功側の値分、呪縛が上昇する"} - else if ("失敗"['$===']($case)) {supplementary = "ショックを受けた。恐怖判定効果表の失敗側の値分、呪縛が上昇する"} - else if ("ファンブル"['$===']($case)) {supplementary = "深いショックを受けた。恐怖判定効果表の失敗側の値分に加え、さらに1D5点分、呪縛が上昇する"} - else {supplementary = "何もショックを受けなかった"};}; - return [title, supplementary]; - }, $ScreamHighSchool_get_supplementary$3.$$arity = 2), nil) && 'get_supplementary'; - })($nesting[0], $$($nesting, 'GardenOrder'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/SevenFortressMobius.js b/src/assets/dicebot/SevenFortressMobius.js deleted file mode 100644 index 06f0cd6b2..000000000 --- a/src/assets/dicebot/SevenFortressMobius.js +++ /dev/null @@ -1,878 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/normalize"] = function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module; - - Opal.add_stubs(['$module_function', '$===', '$==', '$to_i']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Normalize'); - - var $nesting = [self].concat($parent_nesting), $Normalize_comparison_operator$1, $Normalize_target_number$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Normalize_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if (/<=|==|=>/['$===']($case)) {return ">="} - else if (/<>|!=|=!/['$===']($case)) {return "!="} - else if (//['$===']($case)) {return ">"} - else if (/\=/['$===']($case)) {return "=="} - else { return nil }})() - }, $Normalize_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$target_number', $Normalize_target_number$2 = function $$target_number(val) { - var self = this; - - if (val['$==']("?")) { - return val - } else { - return val.$to_i() - } - }, $Normalize_target_number$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/format"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$module_function', '$===', '$to_s', '$==', '$>']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Format'); - - var $nesting = [self].concat($parent_nesting), $Format_comparison_operator$1, $Format_modifier$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Format_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if ("=="['$===']($case)) {return "="} - else if ("!="['$===']($case)) {return "<>"} - else if ($$($nesting, 'Symbol')['$===']($case)) {return op.$to_s()} - else { return nil }})() - }, $Format_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$modifier', $Format_modifier$2 = function $$modifier(number) { - var self = this; - - if (number['$=='](0)) { - return "" - } else if ($truthy($rb_gt(number, 0))) { - return "" + "+" + (number) - } else { - return number.$to_s() - } - }, $Format_modifier$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/command_parser"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$attr_accessor', '$include', '$format_modifier', '$===', '$join', '$tokenize', '$new', '$lhs', '$take_cmp_op', '$cmp_op=', '$-', '$cmp_op', '$expr', '$target_number=', '$<', '$size', '$private', '$split', '$gsub', '$take', '$literal?', '$command_suffix', '$loop', '$consume', '$+', '$mul', '$command=', '$modify_number=', '$critical', '$unary', '$critical=', '$fumble', '$fumble=', '$dollar', '$dollar=', '$each', '$==', '$=~', '$[]', '$comparison_operator']); - - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/normalize"); - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'CommandParser'); - - var $nesting = [self].concat($parent_nesting), $CommandParser_initialize$1, $CommandParser_parse$4, $CommandParser_tokenize$5, $CommandParser_lhs$7, $CommandParser_command_suffix$9, $CommandParser_literal$ques$11, $CommandParser_take$13, $CommandParser_take_cmp_op$14; - - self.$$prototype.error = self.$$prototype.parsed = self.$$prototype.idx = self.$$prototype.tokens = self.$$prototype.literals = nil; - - - Opal.def(self, '$initialize', $CommandParser_initialize$1 = function $$initialize($a) { - var $post_args, literals, self = this; - - - - $post_args = Opal.slice.call(arguments, 0, arguments.length); - - literals = $post_args;; - self.literals = literals; - return (self.round_type = "omit"); - }, $CommandParser_initialize$1.$$arity = -1); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Parsed'); - - var $nesting = [self].concat($parent_nesting), $Parsed_initialize$2, $Parsed_to_s$3; - - self.$$prototype.critical = self.$$prototype.fumble = self.$$prototype.dollar = self.$$prototype.modify_number = self.$$prototype.command = self.$$prototype.cmp_op = self.$$prototype.target_number = nil; - - self.$attr_accessor("command", "critical", "fumble", "dollar", "modify_number", "cmp_op", "target_number"); - self.$include($$($nesting, 'ModifierFormatter')); - - Opal.def(self, '$initialize', $Parsed_initialize$2 = function $$initialize() { - var self = this; - - - self.critical = nil; - self.fumble = nil; - return (self.dollar = nil); - }, $Parsed_initialize$2.$$arity = 0); - return (Opal.def(self, '$to_s', $Parsed_to_s$3 = function $$to_s(suffix_position) { - var self = this, c = nil, f = nil, d = nil, m = nil, $case = nil; - - - - if (suffix_position == null) { - suffix_position = "after_command"; - }; - c = (function() {if ($truthy(self.critical)) { - return "" + "@" + (self.critical) - } else { - return nil - }; return nil; })(); - f = (function() {if ($truthy(self.fumble)) { - return "" + "#" + (self.fumble) - } else { - return nil - }; return nil; })(); - d = (function() {if ($truthy(self.dollar)) { - return "" + "$" + (self.dollar) - } else { - return nil - }; return nil; })(); - m = self.$format_modifier(self.modify_number); - return (function() {$case = suffix_position; - if ("after_command"['$===']($case)) {return [self.command, c, f, d, m, self.cmp_op, self.target_number].$join()} - else if ("after_modify_number"['$===']($case)) {return [self.command, m, c, f, d, self.cmp_op, self.target_number].$join()} - else if ("after_target_number"['$===']($case)) {return [self.command, m, self.cmp_op, self.target_number, c, f, d].$join()} - else { return nil }})(); - }, $Parsed_to_s$3.$$arity = -1), nil) && 'to_s'; - })($nesting[0], null, $nesting); - - Opal.def(self, '$parse', $CommandParser_parse$4 = function $$parse(expr, round_type) { - var $a, self = this, $writer = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - self.parsed = $$($nesting, 'Parsed').$new(); - self.$lhs(); - if ($truthy(self.error)) { - return nil}; - - $writer = [self.$take_cmp_op()]; - $send(self.parsed, 'cmp_op=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(self.parsed.$cmp_op())) { - return self.$expr() - } else { - return nil - }; return nil; })()]; - $send(self.parsed, 'target_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy(($truthy($a = $rb_lt(self.idx, self.tokens.$size())) ? $a : self.error))) { - return nil}; - return self.parsed; - }, $CommandParser_parse$4.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $CommandParser_tokenize$5 = function $$tokenize(expr) { - var $$6, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-*\/@#\$]|[<>!=]+/], ($$6 = function(e){var self = $$6.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$split(" ") - }, $CommandParser_tokenize$5.$$arity = 1); - - Opal.def(self, '$lhs', $CommandParser_lhs$7 = function $$lhs() { - var $$8, self = this, command = nil, ret = nil, $writer = nil; - - - command = self.$take(); - if ($truthy(self['$literal?'](command))) { - } else { - - self.error = true; - return nil; - }; - self.$command_suffix(); - ret = 0; - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$8 = function(){var self = $$8.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$8.$$s = self, $$8.$$brk = $brk, $$8.$$arity = 0, $$8)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - self.$command_suffix(); - - $writer = [command]; - $send(self.parsed, 'command=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [ret]; - $send(self.parsed, 'modify_number=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - }, $CommandParser_lhs$7.$$arity = 0); - - Opal.def(self, '$command_suffix', $CommandParser_command_suffix$9 = function $$command_suffix() { - var $$10, self = this; - - return (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$10 = function(){var self = $$10.$$s || this, $writer = nil; - if (self.parsed == null) self.parsed = nil; - - if ($truthy(self.$consume("@"))) { - - if ($truthy(self.parsed.$critical())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'critical=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else if ($truthy(self.$consume("#"))) { - - if ($truthy(self.parsed.$fumble())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'fumble=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else if ($truthy(self.$consume("$"))) { - - if ($truthy(self.parsed.$dollar())) { - self.error = true}; - - $writer = [self.$unary()]; - $send(self.parsed, 'dollar=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];; - } else { - - Opal.brk(nil, $brk) - }}, $$10.$$s = self, $$10.$$brk = $brk, $$10.$$arity = 0, $$10)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})() - }, $CommandParser_command_suffix$9.$$arity = 0); - - Opal.def(self, '$literal?', $CommandParser_literal$ques$11 = function(command) {try { - - var $$12, self = this; - - - $send(self.literals, 'each', [], ($$12 = function(lit){var self = $$12.$$s || this, $case = nil; - - - - if (lit == null) { - lit = nil; - }; - return (function() {$case = lit; - if ($$($nesting, 'String')['$===']($case)) {if (command['$=='](lit)) { - Opal.ret(true) - } else { - return nil - }} - else if ($$($nesting, 'Regexp')['$===']($case)) {if ($truthy(command['$=~'](lit))) { - Opal.ret(true) - } else { - return nil - }} - else { return nil }})();}, $$12.$$s = self, $$12.$$arity = 1, $$12)); - return false; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $CommandParser_literal$ques$11.$$arity = 1); - - Opal.def(self, '$take', $CommandParser_take$13 = function $$take() { - var self = this, ret = nil; - - - ret = self.tokens['$[]'](self.idx); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $CommandParser_take$13.$$arity = 0); - return (Opal.def(self, '$take_cmp_op', $CommandParser_take_cmp_op$14 = function $$take_cmp_op() { - var self = this; - - return $$($nesting, 'Normalize').$comparison_operator(self.$take()) - }, $CommandParser_take_cmp_op$14.$$arity = 0), nil) && 'take_cmp_op'; - })($nesting[0], $$($nesting, 'ArithmeticEvaluator'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/NightWizard"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$setPrefixes', '$parse_nw', '$parse_2r6', '$roll_nw', '$cmp_op', '$send', '$target_number', '$compact', '$to_s', '$join', '$private', '$attr_accessor', '$+', '$zero?', '$modifier', '$match', '$new', '$to_i', '$[]', '$base=', '$-', '$eval', '$modify_number=', '$map', '$split', '$to_proc', '$critical_numbers=', '$fumble_numbers=', '$prana=', '$active_modify_number=', '$comparison_operator', '$cmp_op=', '$target_number=', '$passive_modify_number=', '$critical_numbers', '$fumble_numbers', '$roll_once_first', '$==', '$roll_once', '$!=', '$prana', '$roll', '$fumble_base_number', '$passive_modify_number', '$active_modify_number', '$include?']); - - self.$require("utils/normalize"); - self.$require("utils/format"); - self.$require("utils/command_parser"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'NightWizard'); - - var $nesting = [self].concat($parent_nesting), $NightWizard_initialize$1, $NightWizard_rollDiceCommand$2, $NightWizard_parse_nw$7, $NightWizard_parse_2r6$8, $NightWizard_roll_nw$9, $NightWizard_roll_once$10, $NightWizard_roll_once_first$11, $NightWizard_fumble_base_number$12; - - self.$$prototype.nw_command = self.$$prototype.total = self.$$prototype.interim_expr = self.$$prototype.status = self.$$prototype.fumble_numbers = self.$$prototype.critical_numbers = nil; - - Opal.const_set($nesting[0], 'ID', "NightWizard"); - Opal.const_set($nesting[0], 'NAME', "ナイトウィザード The 2nd Edition"); - Opal.const_set($nesting[0], 'SORT_KEY', "ないとういさあと2"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定用コマンド (aNW+b@x#y$z+c)\n" + "  a : 基本値\n" + "  b : 常時に準じる特技による補正\n" + "  c : 常時以外の特技、および支援効果による補正(ファンブル時には適用されない)\n" + "  x : クリティカル値のカンマ区切り(省略時 10)\n" + "  y : ファンブル値のカンマ区切り(省略時 5)\n" + "  z : プラーナによる達成値補正のプラーナ消費数(ファンブル時には適用されない)\n" + " クリティカル値、ファンブル値が無い場合は1や13などのあり得ない数値を入れてください。\n" + " 例)12NW-5@7#2$3 1NW 50nw+5@7,10#2,5 50nw-5+10@7,10#2,5+15+25\n"); - self.$setPrefixes(["([-+]?\\d+)?NW.*", "2R6.*"]); - - Opal.def(self, '$initialize', $NightWizard_initialize$1 = function $$initialize() { - var $iter = $NightWizard_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $NightWizard_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $NightWizard_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.nw_command = "NW"); - }, $NightWizard_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $NightWizard_rollDiceCommand$2 = function $$rollDiceCommand(string) { - var $a, $b, self = this, cmd = nil, total = nil, interim_expr = nil, status = nil, result = nil, sequence = nil; - - - cmd = ($truthy($a = self.$parse_nw(string)) ? $a : self.$parse_2r6(string)); - if ($truthy(cmd)) { - } else { - return nil - }; - $b = self.$roll_nw(cmd), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (interim_expr = ($a[1] == null ? nil : $a[1])), (status = ($a[2] == null ? nil : $a[2])), $b; - result = (function() {if ($truthy(cmd.$cmp_op())) { - if ($truthy(total.$send(cmd.$cmp_op(), cmd.$target_number()))) { - return "成功" - } else { - return "失敗" - } - } else { - return nil - }; return nil; })(); - sequence = ["" + "(" + (cmd) + ")", interim_expr, status, total.$to_s(), result].$compact(); - return sequence.$join(" > "); - }, $NightWizard_rollDiceCommand$2.$$arity = 1); - self.$private(); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Parsed'); - - var $nesting = [self].concat($parent_nesting); - - - self.$attr_accessor("critical_numbers"); - self.$attr_accessor("fumble_numbers"); - self.$attr_accessor("prana"); - self.$attr_accessor("active_modify_number"); - self.$attr_accessor("cmp_op"); - return self.$attr_accessor("target_number"); - })($nesting[0], null, $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ParsedNW'); - - var $nesting = [self].concat($parent_nesting), $ParsedNW_initialize$3, $ParsedNW_passive_modify_number$4, $ParsedNW_to_s$5; - - self.$$prototype.base = self.$$prototype.modify_number = self.$$prototype.active_modify_number = self.$$prototype.prana = self.$$prototype.command = self.$$prototype.critical_numbers = self.$$prototype.fumble_numbers = self.$$prototype.cmp_op = self.$$prototype.target_number = nil; - - self.$attr_accessor("base"); - self.$attr_accessor("modify_number"); - - Opal.def(self, '$initialize', $ParsedNW_initialize$3 = function $$initialize(command) { - var self = this; - - return (self.command = command) - }, $ParsedNW_initialize$3.$$arity = 1); - - Opal.def(self, '$passive_modify_number', $ParsedNW_passive_modify_number$4 = function $$passive_modify_number() { - var self = this; - - return $rb_plus(self.base, self.modify_number) - }, $ParsedNW_passive_modify_number$4.$$arity = 0); - return (Opal.def(self, '$to_s', $ParsedNW_to_s$5 = function $$to_s() { - var $a, self = this, base = nil, modify_number = nil, active_modify_number = nil, dollar = nil; - - - base = (function() {if ($truthy(self.base['$zero?']())) { - return nil - } else { - return self.base - }; return nil; })(); - modify_number = $$($nesting, 'Format').$modifier(self.modify_number); - active_modify_number = $$($nesting, 'Format').$modifier(self.active_modify_number); - dollar = ($truthy($a = self.prana) ? "" + "$" + (self.prana) : $a); - return "" + (base) + (self.command) + (modify_number) + "@" + (self.critical_numbers.$join(",")) + "#" + (self.fumble_numbers.$join(",")) + (dollar) + (active_modify_number) + (self.cmp_op) + (self.target_number); - }, $ParsedNW_to_s$5.$$arity = 0), nil) && 'to_s'; - })($nesting[0], $$($nesting, 'Parsed'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Parsed2R6'); - - var $nesting = [self].concat($parent_nesting), $Parsed2R6_to_s$6; - - self.$$prototype.passive_modify_number = self.$$prototype.active_modify_number = self.$$prototype.critical_numbers = self.$$prototype.fumble_numbers = self.$$prototype.cmp_op = self.$$prototype.target_number = nil; - - self.$attr_accessor("passive_modify_number"); - return (Opal.def(self, '$to_s', $Parsed2R6_to_s$6 = function $$to_s() { - var self = this; - - return "" + "2R6M[" + (self.passive_modify_number) + "," + (self.active_modify_number) + "]C[" + (self.critical_numbers.$join(",")) + "]F[" + (self.fumble_numbers.$join(",")) + "]" + (self.cmp_op) + (self.target_number) - }, $Parsed2R6_to_s$6.$$arity = 0), nil) && 'to_s'; - })($nesting[0], $$($nesting, 'Parsed'), $nesting); - - Opal.def(self, '$parse_nw', $NightWizard_parse_nw$7 = function $$parse_nw(string) { - var $a, self = this, m = nil, ae = nil, command = nil, $writer = nil; - - - m = new RegExp("" + "^([-+]?\\d+)?" + (self.nw_command) + "((?:[-+]\\d+)+)?(?:@(\\d+(?:,\\d+)*))?(?:#(\\d+(?:,\\d+)*))?(?:\\$(\\d+(?:,\\d+)*))?((?:[-+]\\d+)+)?(?:([>=]+)(\\d+))?$").$match(string); - if ($truthy(m)) { - } else { - return nil - }; - ae = $$($nesting, 'ArithmeticEvaluator').$new(); - command = $$($nesting, 'ParsedNW').$new(self.nw_command); - - $writer = [m['$[]'](1).$to_i()]; - $send(command, 'base=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](2))) { - return ae.$eval(m['$[]'](2)) - } else { - return 0 - }; return nil; })()]; - $send(command, 'modify_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](3))) { - return $send(m['$[]'](3).$split(","), 'map', [], "to_i".$to_proc()) - } else { - return [10] - }; return nil; })()]; - $send(command, 'critical_numbers=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](4))) { - return $send(m['$[]'](4).$split(","), 'map', [], "to_i".$to_proc()) - } else { - return [5] - }; return nil; })()]; - $send(command, 'fumble_numbers=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [($truthy($a = m['$[]'](5)) ? m['$[]'](5).$to_i() : $a)]; - $send(command, 'prana=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](6))) { - return ae.$eval(m['$[]'](6)) - } else { - return 0 - }; return nil; })()]; - $send(command, 'active_modify_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [$$($nesting, 'Normalize').$comparison_operator(m['$[]'](7))]; - $send(command, 'cmp_op=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [($truthy($a = m['$[]'](8)) ? m['$[]'](8).$to_i() : $a)]; - $send(command, 'target_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return command; - }, $NightWizard_parse_nw$7.$$arity = 1); - - Opal.def(self, '$parse_2r6', $NightWizard_parse_2r6$8 = function $$parse_2r6(string) { - var $a, self = this, m = nil, ae = nil, command = nil, $writer = nil; - - - m = /^2R6m\[([-+]?\d+(?:[-+]\d+)*)(?:,([-+]?\d+(?:[-+]\d+)*))?\](?:c\[(\d+(?:,\d+)*)\])?(?:f\[(\d+(?:,\d+)*)\])?(?:([>=]+)(\d+))?/i.$match(string); - if ($truthy(m)) { - } else { - return nil - }; - ae = $$($nesting, 'ArithmeticEvaluator').$new(); - command = $$($nesting, 'Parsed2R6').$new(); - - $writer = [ae.$eval(m['$[]'](1))]; - $send(command, 'passive_modify_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](2))) { - return ae.$eval(m['$[]'](2)) - } else { - return 0 - }; return nil; })()]; - $send(command, 'active_modify_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](3))) { - return $send(m['$[]'](3).$split(","), 'map', [], "to_i".$to_proc()) - } else { - return [10] - }; return nil; })()]; - $send(command, 'critical_numbers=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [(function() {if ($truthy(m['$[]'](4))) { - return $send(m['$[]'](4).$split(","), 'map', [], "to_i".$to_proc()) - } else { - return [5] - }; return nil; })()]; - $send(command, 'fumble_numbers=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [$$($nesting, 'Normalize').$comparison_operator(m['$[]'](5))]; - $send(command, 'cmp_op=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - - $writer = [($truthy($a = m['$[]'](6)) ? m['$[]'](6).$to_i() : $a)]; - $send(command, 'target_number=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return command; - }, $NightWizard_parse_2r6$8.$$arity = 1); - - Opal.def(self, '$roll_nw', $NightWizard_roll_nw$9 = function $$roll_nw(parsed) { - var $a, $b, self = this, status = nil, prana_bonus = nil, prana_list = nil, base = nil; - - - self.critical_numbers = parsed.$critical_numbers(); - self.fumble_numbers = parsed.$fumble_numbers(); - self.total = 0; - self.interim_expr = ""; - self.status = nil; - status = self.$roll_once_first(); - while (status['$==']("critical")) { - status = self.$roll_once() - }; - if ($truthy(($truthy($a = status['$!=']("fumble")) ? parsed.$prana() : $a))) { - - $b = self.$roll(parsed.$prana(), 6), $a = Opal.to_ary($b), (prana_bonus = ($a[0] == null ? nil : $a[0])), (prana_list = ($a[1] == null ? nil : $a[1])), $b; - self.total = $rb_plus(self.total, prana_bonus); - self.interim_expr = $rb_plus(self.interim_expr, "" + "+" + (prana_bonus) + "[" + (prana_list) + "]");}; - base = (function() {if (status['$==']("fumble")) { - return self.$fumble_base_number(parsed) - } else { - return $rb_plus(parsed.$passive_modify_number(), parsed.$active_modify_number()) - }; return nil; })(); - self.total = $rb_plus(self.total, base); - self.interim_expr = $rb_plus(base.$to_s(), self.interim_expr); - return [self.total, self.interim_expr, self.status]; - }, $NightWizard_roll_nw$9.$$arity = 1); - - Opal.def(self, '$roll_once', $NightWizard_roll_once$10 = function $$roll_once(fumbleable) { - var $a, $b, self = this, dice_value = nil, dice_str = nil; - - - - if (fumbleable == null) { - fumbleable = false; - }; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice_value = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(($truthy($a = fumbleable) ? self.fumble_numbers['$include?'](dice_value) : $a))) { - - self.total = $rb_minus(self.total, 10); - self.interim_expr = $rb_plus(self.interim_expr, "" + "-10[" + (dice_str) + "]"); - self.status = "ファンブル"; - return "fumble"; - } else if ($truthy(self.critical_numbers['$include?'](dice_value))) { - - self.total = $rb_plus(self.total, 10); - self.interim_expr = $rb_plus(self.interim_expr, "" + "+10[" + (dice_str) + "]"); - self.status = "クリティカル"; - return "critical"; - } else { - - self.total = $rb_plus(self.total, dice_value); - self.interim_expr = $rb_plus(self.interim_expr, "" + "+" + (dice_value) + "[" + (dice_str) + "]"); - return nil; - }; - }, $NightWizard_roll_once$10.$$arity = -1); - - Opal.def(self, '$roll_once_first', $NightWizard_roll_once_first$11 = function $$roll_once_first() { - var self = this; - - return self.$roll_once(true) - }, $NightWizard_roll_once_first$11.$$arity = 0); - return (Opal.def(self, '$fumble_base_number', $NightWizard_fumble_base_number$12 = function $$fumble_base_number(parsed) { - var self = this; - - return parsed.$passive_modify_number() - }, $NightWizard_fumble_base_number$12.$$arity = 1), nil) && 'fumble_base_number'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send; - - Opal.add_stubs(['$require', '$setPrefixes']); - - self.$require("diceBot/NightWizard"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SevenFortressMobius'); - - var $nesting = [self].concat($parent_nesting), $SevenFortressMobius_initialize$1; - - - Opal.const_set($nesting[0], 'ID', "SevenFortressMobius"); - Opal.const_set($nesting[0], 'NAME', "セブン=フォートレス メビウス"); - Opal.const_set($nesting[0], 'SORT_KEY', "せふんふおおとれすめひうす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定用コマンド (nSFM+m@x#y)\n" + " \"(基本値)SFM(常時および常時に準じる特技等及び状態異常(省略可))@(クリティカル値)#(ファンブル値)(常時以外の特技等及び味方の支援効果等の影響(省略可))\"でロールします。\n" + " Rコマンド(2R6m[n,m]c[x]f[y]>=t tは目標値)に読替されます。\n" + " クリティカル値、ファンブル値が無い場合は1や13などのあり得ない数値を入れてください。\n" + " 例)12SFM-5@7#2  1SFM  50SFM+5@7,10#2,5 50SFM-5+10@7,10#2,5+15+25\n"); - self.$setPrefixes(["([-+]?\\d+)?SFM.*", "2R6.*"]); - return (Opal.def(self, '$initialize', $SevenFortressMobius_initialize$1 = function $$initialize() { - var $iter = $SevenFortressMobius_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $SevenFortressMobius_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $SevenFortressMobius_initialize$1, false), $zuper, $iter); - return (self.nw_command = "SFM"); - }, $SevenFortressMobius_initialize$1.$$arity = 0), nil) && 'initialize'; - })($nesting[0], $$($nesting, 'NightWizard'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/ShadowRun.js b/src/assets/dicebot/ShadowRun.js deleted file mode 100644 index ea08aa57c..000000000 --- a/src/assets/dicebot/ShadowRun.js +++ /dev/null @@ -1,30 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send; - - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ShadowRun'); - - var $nesting = [self].concat($parent_nesting), $ShadowRun_initialize$1; - - - Opal.const_set($nesting[0], 'ID', "ShadowRun"); - Opal.const_set($nesting[0], 'NAME', "シャドウラン"); - Opal.const_set($nesting[0], 'SORT_KEY', "しやとうらん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "上方無限ロール(xUn)の境界値を6にセットします。\n"); - return (Opal.def(self, '$initialize', $ShadowRun_initialize$1 = function $$initialize() { - var $iter = $ShadowRun_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $ShadowRun_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $ShadowRun_initialize$1, false), $zuper, $iter); - self.sortType = 3; - self.upperRollThreshold = 6; - return (self.unlimitedRollDiceType = 6); - }, $ShadowRun_initialize$1.$$arity = 0), nil) && 'initialize'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/ShadowRun4.js b/src/assets/dicebot/ShadowRun4.js deleted file mode 100644 index 272ec94b8..000000000 --- a/src/assets/dicebot/ShadowRun4.js +++ /dev/null @@ -1,58 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$debug', '$/', '$*', '$>=', '$==']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ShadowRun4'); - - var $nesting = [self].concat($parent_nesting), $ShadowRun4_initialize$1, $ShadowRun4_getGrichText$2; - - - Opal.const_set($nesting[0], 'ID', "ShadowRun4"); - Opal.const_set($nesting[0], 'NAME', "シャドウラン 4th Edition"); - Opal.const_set($nesting[0], 'SORT_KEY', "しやとうらん4"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "個数振り足しロール(xRn)の境界値を6にセット、バラバラロール(xBn)の目標値を5以上にセットします。\n" + "BコマンドとRコマンド時に、グリッチの表示を行います。\n"); - - Opal.def(self, '$initialize', $ShadowRun4_initialize$1 = function $$initialize() { - var $iter = $ShadowRun4_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $ShadowRun4_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $ShadowRun4_initialize$1, false), $zuper, $iter); - self.sortType = 3; - self.rerollNumber = 6; - return (self.defaultSuccessTarget = ">=5"); - }, $ShadowRun4_initialize$1.$$arity = 0); - return (Opal.def(self, '$getGrichText', $ShadowRun4_getGrichText$2 = function $$getGrichText(numberSpot1, dice_cnt_total, successCount) { - var self = this, dice_cnt_total_half = nil; - - - self.$debug("getGrichText numberSpot1", numberSpot1); - self.$debug("dice_cnt_total", dice_cnt_total); - self.$debug("successCount", successCount); - dice_cnt_total_half = $rb_divide($rb_times(1.0, dice_cnt_total), 2); - self.$debug("dice_cnt_total_half", dice_cnt_total_half); - if ($truthy($rb_ge(numberSpot1, dice_cnt_total_half))) { - } else { - return "" - }; - if (successCount['$=='](0)) { - return " > クリティカルグリッチ"}; - return " > グリッチ"; - }, $ShadowRun4_getGrichText$2.$$arity = 3), nil) && 'getGrichText'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/ShadowRun5.js b/src/assets/dicebot/ShadowRun5.js deleted file mode 100644 index f88a8400c..000000000 --- a/src/assets/dicebot/ShadowRun5.js +++ /dev/null @@ -1,151 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/ShadowRun4"] = function(Opal) { - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$debug', '$/', '$*', '$>=', '$==']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ShadowRun4'); - - var $nesting = [self].concat($parent_nesting), $ShadowRun4_initialize$1, $ShadowRun4_getGrichText$2; - - - Opal.const_set($nesting[0], 'ID', "ShadowRun4"); - Opal.const_set($nesting[0], 'NAME', "シャドウラン 4th Edition"); - Opal.const_set($nesting[0], 'SORT_KEY', "しやとうらん4"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "個数振り足しロール(xRn)の境界値を6にセット、バラバラロール(xBn)の目標値を5以上にセットします。\n" + "BコマンドとRコマンド時に、グリッチの表示を行います。\n"); - - Opal.def(self, '$initialize', $ShadowRun4_initialize$1 = function $$initialize() { - var $iter = $ShadowRun4_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $ShadowRun4_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $ShadowRun4_initialize$1, false), $zuper, $iter); - self.sortType = 3; - self.rerollNumber = 6; - return (self.defaultSuccessTarget = ">=5"); - }, $ShadowRun4_initialize$1.$$arity = 0); - return (Opal.def(self, '$getGrichText', $ShadowRun4_getGrichText$2 = function $$getGrichText(numberSpot1, dice_cnt_total, successCount) { - var self = this, dice_cnt_total_half = nil; - - - self.$debug("getGrichText numberSpot1", numberSpot1); - self.$debug("dice_cnt_total", dice_cnt_total); - self.$debug("successCount", successCount); - dice_cnt_total_half = $rb_divide($rb_times(1.0, dice_cnt_total), 2); - self.$debug("dice_cnt_total_half", dice_cnt_total_half); - if ($truthy($rb_ge(numberSpot1, dice_cnt_total_half))) { - } else { - return "" - }; - if (successCount['$=='](0)) { - return " > クリティカルグリッチ"}; - return " > グリッチ"; - }, $ShadowRun4_getGrichText$2.$$arity = 3), nil) && 'getGrichText'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range; - - Opal.add_stubs(['$require', '$setPrefixes', '$debug', '$match', '$[]', '$to_i', '$bdice', '$bcdice', '$>', '$-', '$gsub', '$+', '$slice', '$/', '$to_f', '$==']); - - self.$require("diceBot/ShadowRun4"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ShadowRun5'); - - var $nesting = [self].concat($parent_nesting), $ShadowRun5_initialize$1, $ShadowRun5_rollDiceCommand$2, $ShadowRun5_getGrichText$3; - - - Opal.const_set($nesting[0], 'ID', "ShadowRun5"); - Opal.const_set($nesting[0], 'NAME', "シャドウラン 5th Edition"); - Opal.const_set($nesting[0], 'SORT_KEY', "しやとうらん5"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "個数振り足しロール(xRn)の境界値を6にセット、バラバラロール(xBn)の目標値を5以上にセットします。\n" + "バラバラロール(xBn)のみ、リミットをセットできます。リミットの指定は(xBn@l)のように指定します。(省略可)\n" + "BコマンドとRコマンド時に、グリッチの表示を行います。\n"); - self.$setPrefixes(["(\\d+)B6@(\\d+)"]); - - Opal.def(self, '$initialize', $ShadowRun5_initialize$1 = function $$initialize() { - var $iter = $ShadowRun5_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $ShadowRun5_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $ShadowRun5_initialize$1, false), $zuper, $iter); - self.sortType = 3; - self.rerollNumber = 6; - return (self.defaultSuccessTarget = ">=5"); - }, $ShadowRun5_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $ShadowRun5_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, m = nil, b_dice = nil, limit = nil, output_before_limited = nil, output_after_limited = nil, before_suc_cnt = nil, after_suc_cnt = nil, over_suc_cnt = nil, output = nil; - - - self.$debug("chatch limit prefix"); - m = /(\d+B6)@(\d+)/.$match(command); - b_dice = m['$[]'](1); - limit = m['$[]'](2).$to_i(); - output_before_limited = self.$bcdice().$bdice(b_dice); - m = /成功数(\d+)/.$match(output_before_limited); - output_after_limited = output_before_limited; - before_suc_cnt = m['$[]'](1).$to_i(); - after_suc_cnt = m['$[]'](1).$to_i(); - over_suc_cnt = 0; - if ($truthy($rb_gt(before_suc_cnt, limit))) { - - after_suc_cnt = limit; - over_suc_cnt = $rb_minus(before_suc_cnt, limit); - output_after_limited = output_before_limited.$gsub(/成功数(\d+)/, "" + "成功数" + (after_suc_cnt)); - output_after_limited = $rb_plus(output_after_limited, "" + "(リミット超過" + (over_suc_cnt) + ")");}; - output = output_after_limited; - output = output.$slice($range(2, -1, false)); - output = output.$gsub("B", "B6"); - output = output.$gsub("6>=5", "" + "[6]Limit[" + (limit) + "]>=5"); - self.$debug(output); - return output; - }, $ShadowRun5_rollDiceCommand$2.$$arity = 1); - return (Opal.def(self, '$getGrichText', $ShadowRun5_getGrichText$3 = function $$getGrichText(numberSpot1, dice_cnt_total, successCount) { - var self = this, dice_cnt_total_half = nil; - - - self.$debug("getGrichText numberSpot1", numberSpot1); - self.$debug("dice_cnt_total", dice_cnt_total); - self.$debug("successCount", successCount); - dice_cnt_total_half = $rb_divide(dice_cnt_total.$to_f(), 2); - self.$debug("dice_cnt_total_half", dice_cnt_total_half); - if ($truthy($rb_gt(numberSpot1, dice_cnt_total_half))) { - } else { - return "" - }; - if (successCount['$=='](0)) { - return " > クリティカルグリッチ"}; - return " > グリッチ"; - }, $ShadowRun5_getGrichText$3.$$arity = 3), nil) && 'getGrichText'; - })($nesting[0], $$($nesting, 'ShadowRun4'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/SharedFantasia.js b/src/assets/dicebot/SharedFantasia.js deleted file mode 100644 index 1278f819d..000000000 --- a/src/assets/dicebot/SharedFantasia.js +++ /dev/null @@ -1,75 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$=~', '$gsub', '$==', '$include?', '$>', '$+']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SharedFantasia'); - - var $nesting = [self].concat($parent_nesting), $SharedFantasia_changeText$1, $SharedFantasia_check_2D6$4; - - - Opal.const_set($nesting[0], 'ID', "SharedFantasia"); - Opal.const_set($nesting[0], 'NAME', "Shared†Fantasia"); - Opal.const_set($nesting[0], 'SORT_KEY', "しえああとふあんたしあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "2D6の成功判定に 自動成功、自動失敗、致命的失敗、劇的成功 の判定があります。\n" + "\n" + "SF/ST = 2D6のショートカット\n" + "\n" + "例) SF+4>=9 : 2D6して4を足した値が9以上なら成功\n"); - self.$setPrefixes(["SF.*", "ST.*"]); - - Opal.def(self, '$changeText', $SharedFantasia_changeText$1 = function $$changeText(string) { - var $$2, $$3, self = this; - - - self.throwString = ""; - if ($truthy(string['$=~'](/SF/i))) { - string = $send(string, 'gsub', [/SF/i], ($$2 = function(){var self = $$2.$$s || this; - - return "2D6"}, $$2.$$s = self, $$2.$$arity = 0, $$2))}; - if ($truthy(string['$=~'](/ST/i))) { - string = $send(string, 'gsub', [/ST/i], ($$3 = function(){var self = $$3.$$s || this; - - return "2D6"}, $$3.$$s = self, $$3.$$arity = 0, $$3))}; - return string; - }, $SharedFantasia_changeText$1.$$arity = 1); - return (Opal.def(self, '$check_2D6', $SharedFantasia_check_2D6$4 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this, critical = nil, fumble = nil, totalValueBonus = nil; - - - if (target['$==']("?")) { - return ""}; - critical = false; - fumble = false; - if (dice_total['$=='](12)) { - critical = true - } else if (dice_total['$=='](2)) { - fumble = true}; - totalValueBonus = 0; - if (cmp_op['$=='](">=")) { - totalValueBonus = 1}; - if ($truthy([">=", ">"]['$include?'](cmp_op))) { - if ($truthy($rb_gt($rb_plus(total, totalValueBonus), target))) { - if ($truthy(critical)) { - return " > 自動成功(劇的成功)" - } else if ($truthy(fumble)) { - return " > 自動失敗" - } else { - return " > 成功" - } - } else if ($truthy(critical)) { - return " > 自動成功" - } else if ($truthy(fumble)) { - return " > 自動失敗(致命的失敗)" - } else { - return " > 失敗" - } - } else { - return nil - }; - }, $SharedFantasia_check_2D6$4.$$arity = 5), nil) && 'check_2D6'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/ShinMegamiTenseiKakuseihen.js b/src/assets/dicebot/ShinMegamiTenseiKakuseihen.js deleted file mode 100644 index f100bf529..000000000 --- a/src/assets/dicebot/ShinMegamiTenseiKakuseihen.js +++ /dev/null @@ -1,97 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$split_tens', '$+', '$*', '$getCheckResultText', '$min', '$%', '$max', '$floor', '$/', '$getCheckResult', '$format', '$>=', '$getSuccessResult', '$getFailResult']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ShinMegamiTenseiKakuseihen'); - - var $nesting = [self].concat($parent_nesting), $ShinMegamiTenseiKakuseihen_check_1D100$1, $ShinMegamiTenseiKakuseihen_split_tens$2, $ShinMegamiTenseiKakuseihen_getCheckResultText$3, $ShinMegamiTenseiKakuseihen_getCheckResult$4, $ShinMegamiTenseiKakuseihen_getSuccessResult$5, $ShinMegamiTenseiKakuseihen_getFailResult$6; - - - Opal.const_set($nesting[0], 'ID', "SMTKakuseihen"); - Opal.const_set($nesting[0], 'NAME', "真・女神転生TRPG 覚醒篇"); - Opal.const_set($nesting[0], 'SORT_KEY', "しんめかみてんせいTRPGかくせいへん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + "1D100<=(目標値) でスワップ・通常・逆スワップ判定を判定。\n" + "威力ダイスは nU6[6] (nはダイス個数)でロール可能です。\n"); - - Opal.def(self, '$check_1D100', $ShinMegamiTenseiKakuseihen_check_1D100$1 = function $$check_1D100(total, dice_total, cmp_op, target) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, total1 = nil, total2 = nil, isRepdigit = nil, result = nil; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return "" - }; - $b = self.$split_tens(dice_total), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), (dice2 = ($a[1] == null ? nil : $a[1])), $b; - total1 = $rb_plus($rb_times(dice1, 10), dice2); - total2 = $rb_plus($rb_times(dice2, 10), dice1); - isRepdigit = dice1['$=='](dice2); - result = " > スワップ"; - result = $rb_plus(result, self.$getCheckResultText(target, [total1, total2].$min(), isRepdigit)); - result = $rb_plus(result, "/通常"); - result = $rb_plus(result, self.$getCheckResultText(target, total['$%'](100), isRepdigit)); - result = $rb_plus(result, "/逆スワップ"); - result = $rb_plus(result, self.$getCheckResultText(target, [total1, total2].$max(), isRepdigit)); - return result; - }, $ShinMegamiTenseiKakuseihen_check_1D100$1.$$arity = 4); - - Opal.def(self, '$split_tens', $ShinMegamiTenseiKakuseihen_split_tens$2 = function $$split_tens(value) { - var self = this, ones = nil, tens = nil; - - - value = value['$%'](100); - ones = $rb_divide(value, 10).$floor(); - tens = value['$%'](10); - return [ones, tens]; - }, $ShinMegamiTenseiKakuseihen_split_tens$2.$$arity = 1); - - Opal.def(self, '$getCheckResultText', $ShinMegamiTenseiKakuseihen_getCheckResultText$3 = function $$getCheckResultText(diff, total, isRepdigit) { - var self = this, checkResult = nil, text = nil; - - - checkResult = self.$getCheckResult(diff, total, isRepdigit); - text = $rb_plus(self.$format("(%02d)", total), checkResult); - return text; - }, $ShinMegamiTenseiKakuseihen_getCheckResultText$3.$$arity = 3); - - Opal.def(self, '$getCheckResult', $ShinMegamiTenseiKakuseihen_getCheckResult$4 = function $$getCheckResult(diff, total, isRepdigit) { - var self = this; - - - if ($truthy($rb_ge(diff, total))) { - return self.$getSuccessResult(isRepdigit)}; - return self.$getFailResult(isRepdigit); - }, $ShinMegamiTenseiKakuseihen_getCheckResult$4.$$arity = 3); - - Opal.def(self, '$getSuccessResult', $ShinMegamiTenseiKakuseihen_getSuccessResult$5 = function $$getSuccessResult(isRepdigit) { - var self = this; - - - if ($truthy(isRepdigit)) { - return "絶対成功"}; - return "成功"; - }, $ShinMegamiTenseiKakuseihen_getSuccessResult$5.$$arity = 1); - return (Opal.def(self, '$getFailResult', $ShinMegamiTenseiKakuseihen_getFailResult$6 = function $$getFailResult(isRepdigit) { - var self = this; - - - if ($truthy(isRepdigit)) { - return "絶対失敗"}; - return "失敗"; - }, $ShinMegamiTenseiKakuseihen_getFailResult$6.$$arity = 1), nil) && 'getFailResult'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/ShinkuuGakuen.js b/src/assets/dicebot/ShinkuuGakuen.js deleted file mode 100644 index bc435167c..000000000 --- a/src/assets/dicebot/ShinkuuGakuen.js +++ /dev/null @@ -1,373 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$setPrefixes', '$join', '$collect', '$prefixes', '$sub', '$===', '$debug', '$last_match', '$to_i', '$getWeaponTable', '$rollJudge', '$[]', '$getJudgeDiceList', '$inject', '$+', '$nil?', '$>=', '$length', '$getSuccessText', '$getWeaponSkillText', '$max', '$loop', '$roll', '$<<', '$%', '$==', '$first', '$<=', '$!=', '$getSkillText', '$empty?', '$to_s', '$upcase', '$getWeaponTableSword', '$getWeaponTableSwordCounter', '$getWeaponTableLongSword', '$getWeaponTableLongSwordCounter', '$getWeaponTableShortSword', '$getWeaponTableShortSwordCounter', '$getWeaponTableSpear', '$getWeaponTableSpearCounter', '$getWeaponTableAx', '$getWeaponTableAxCounter', '$getWeaponTableClub', '$getWeaponTableClubCounter', '$getWeaponTableBow', '$getWeaponTableMartialArt', '$getWeaponTableMartialArtCounter', '$getWeaponTableBoxing', '$getWeaponTableBoxingCounter', '$getWeaponTableProWrestling', '$getWeaponTableProWrestlingCounter', '$getWeaponTableStand', '$getWeaponTableStandCounter', '$getRandMartialArtCounter', '$*', '$each']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ShinkuuGakuen'); - - var $nesting = [self].concat($parent_nesting), $ShinkuuGakuen_rollDiceCommand$1, $ShinkuuGakuen_rollJudge$3, $ShinkuuGakuen_getJudgeDiceList$5, $ShinkuuGakuen_getSuccessText$7, $ShinkuuGakuen_getSkillText$8, $ShinkuuGakuen_getWeaponTable$9, $ShinkuuGakuen_getWeaponTableSword$10, $ShinkuuGakuen_getWeaponTableSwordCounter$11, $ShinkuuGakuen_getWeaponTableLongSword$12, $ShinkuuGakuen_getWeaponTableLongSwordCounter$13, $ShinkuuGakuen_getWeaponTableShortSword$14, $ShinkuuGakuen_getWeaponTableShortSwordCounter$15, $ShinkuuGakuen_getWeaponTableSpear$16, $ShinkuuGakuen_getWeaponTableSpearCounter$17, $ShinkuuGakuen_getWeaponTableAx$18, $ShinkuuGakuen_getWeaponTableAxCounter$19, $ShinkuuGakuen_getWeaponTableClub$20, $ShinkuuGakuen_getWeaponTableClubCounter$21, $ShinkuuGakuen_getWeaponTableBow$22, $ShinkuuGakuen_getWeaponTableMartialArt$23, $ShinkuuGakuen_getWeaponTableMartialArtCounter$24, $ShinkuuGakuen_getRandMartialArtCounter$25, $ShinkuuGakuen_getWeaponTableBoxing$26, $ShinkuuGakuen_getWeaponTableBoxingCounter$27, $ShinkuuGakuen_getWeaponTableProWrestling$28, $ShinkuuGakuen_getWeaponTableProWrestlingCounter$29, $ShinkuuGakuen_getWeaponTableStand$30, $ShinkuuGakuen_getWeaponTableStandCounter$31, $ShinkuuGakuen_getWeaponSkillText$32; - - - Opal.const_set($nesting[0], 'ID', "ShinkuuGakuen"); - Opal.const_set($nesting[0], 'NAME', "真空学園"); - Opal.const_set($nesting[0], 'SORT_KEY', "しんくうかくえん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + "RLx:技能ベースxで技能チェックのダイスロール\n" + "RLx>=y:この書式なら目標値 y で判定結果出力\n" + " 例)RL10  RL22>=50\n" + "\n" + "・武器攻撃\n" + "(武器記号)(技能ベース値)\n" + " 例)SW10 BX30\n" + "武器を技能ベースでダイスロール。技発動までチェック。\n" + "武器記号は以下の通り\n" + " SW:剣、LS:大剣、SS:小剣、SP:槍、\n" + " AX:斧、CL:棍棒、BW:弓、MA:体術、\n" + " BX:ボクシング、PR:プロレス、ST:幽波紋\n" + "\n" + "・カウンター攻撃\n" + "カウンター技は武器記号の頭に「C」をつけるとロール可能。\n" + " 例)CSW10 CBX76\n"); - self.$setPrefixes(["CRL.*", "CSW.*", "CLS.*", "CSS.*", "CSP.*", "CAX.*", "CCL.*", "CMA.*", "CBX.*", "CPR.*", "CST.*", "RL.*", "SW.*", "LS.*", "SS.*", "SP.*", "AX.*", "CL.*", "BW.*", "MA.*", "BX.*", "PR.*", "ST.*"]); - - Opal.def(self, '$rollDiceCommand', $ShinkuuGakuen_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $$2, self = this, prefixesRegText = nil, weaponCommand = nil, base = nil, diff = nil, weaponInfo = nil, output_msg = nil; - - - prefixesRegText = $send(self.$prefixes(), 'collect', [], ($$2 = function(i){var self = $$2.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$sub(/\.\*/, "");}, $$2.$$s = self, $$2.$$arity = 1, $$2)).$join("|"); - if ($truthy(new RegExp("" + "(^|\\s)(S)?(" + (prefixesRegText) + ")([\\d\\+\\-]*)(>=(\\d+))?", 'i')['$==='](command))) { - } else { - - self.$debug("NOT match"); - return nil; - }; - self.$debug("matched."); - weaponCommand = $$($nesting, 'Regexp').$last_match(3); - base = $$($nesting, 'Regexp').$last_match(4).$to_i(); - diff = $$($nesting, 'Regexp').$last_match(6); - weaponInfo = self.$getWeaponTable(weaponCommand); - output_msg = self.$rollJudge(base, diff, weaponInfo); - return output_msg; - }, $ShinkuuGakuen_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$rollJudge', $ShinkuuGakuen_rollJudge$3 = function $$rollJudge(base, diff, weaponInfo) { - var $$4, self = this, weaponName = nil, weaponTable = nil, diceList = nil, total = nil, allTotal = nil, diffText = nil, result = nil; - - - self.$debug("rollJudge base", base); - self.$debug("rollJudge diff", diff); - weaponName = weaponInfo['$[]']("name"); - weaponTable = weaponInfo['$[]']("table"); - diceList = self.$getJudgeDiceList(); - total = $send(diceList, 'inject', [], ($$4 = function(value, i){var self = $$4.$$s || this; - - - - if (value == null) { - value = nil; - }; - - if (i == null) { - i = nil; - }; - return (value = $rb_plus(value, i));}, $$4.$$s = self, $$4.$$arity = 2, $$4)); - allTotal = $rb_plus(total, base); - diffText = (function() {if ($truthy(diff['$nil?']())) { - return "" - } else { - return "" + ">=" + (diff) - }; return nil; })(); - result = "" + "(" + (weaponName) + ":" + (base) + (diffText) + ") > 1D100+" + (base) + " > " + (total); - if ($truthy($rb_ge(diceList.$length(), 2))) { - result = $rb_plus(result, "" + "[" + (diceList.$join(",")) + "]")}; - result = $rb_plus(result, "" + "+" + (base)); - result = $rb_plus(result, "" + " > " + (allTotal)); - result = $rb_plus(result, self.$getSuccessText(allTotal, diff, diceList, weaponTable)); - result = $rb_plus(result, self.$getWeaponSkillText(weaponTable, diceList.$max())); - self.$debug("check_1D100 result", result); - return result; - }, $ShinkuuGakuen_rollJudge$3.$$arity = 3); - - Opal.def(self, '$getJudgeDiceList', $ShinkuuGakuen_getJudgeDiceList$5 = function $$getJudgeDiceList() { - var $$6, self = this, diceList = nil; - - - diceList = []; - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$6 = function(){var self = $$6.$$s || this, $a, $b, value = nil, rank01 = nil; - - - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - diceList['$<<'](value); - rank01 = value['$%'](10); - self.$debug("rank01", rank01); - if (rank01['$=='](0)) { - return nil - } else { - - Opal.brk(nil, $brk) - };}, $$6.$$s = self, $$6.$$brk = $brk, $$6.$$arity = 0, $$6)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return diceList; - }, $ShinkuuGakuen_getJudgeDiceList$5.$$arity = 0); - - Opal.def(self, '$getSuccessText', $ShinkuuGakuen_getSuccessText$7 = function $$getSuccessText(allTotal, diff, diceList, isWeapon) { - var $a, self = this, first = nil, result = nil, skillText = nil, success = nil; - - - first = diceList.$first(); - if ($truthy(first['$nil?']())) { - return ""}; - if ($truthy($rb_le(first, 9))) { - return " > ファンブル"}; - if ($truthy(($truthy($a = diff['$nil?']()) ? first['$!='](10) : $a))) { - return ""}; - result = ""; - skillText = self.$getSkillText(first, diff, isWeapon); - result = $rb_plus(result, skillText); - if ($truthy(diff['$nil?']())) { - } else { - - if ($truthy(skillText['$empty?']())) { - result = $rb_plus(result, " > ")}; - success = (function() {if ($truthy($rb_ge(allTotal, diff.$to_i()))) { - return "成功" - } else { - return "失敗" - }; return nil; })(); - result = $rb_plus(result, success.$to_s()); - }; - return result; - }, $ShinkuuGakuen_getSuccessText$7.$$arity = 4); - - Opal.def(self, '$getSkillText', $ShinkuuGakuen_getSkillText$8 = function $$getSkillText(first, diff, isWeapon) { - var self = this, result = nil; - - - result = ""; - if ($truthy(isWeapon)) { - return result}; - result = " > "; - if (first['$=='](10)) { - } else { - return result - }; - result = $rb_plus(result, "技能なし:ファンブル"); - if ($truthy(diff['$nil?']())) { - return result}; - result = $rb_plus(result, "/技能あり:"); - return result; - }, $ShinkuuGakuen_getSkillText$8.$$arity = 3); - - Opal.def(self, '$getWeaponTable', $ShinkuuGakuen_getWeaponTable$9 = function $$getWeaponTable(weaponCommand) { - var self = this, $case = nil; - - - self.$debug("getWeaponTable weaponCommand", weaponCommand); - $case = weaponCommand.$upcase(); - if ("SW"['$===']($case)) {return self.$getWeaponTableSword()} - else if ("CSW"['$===']($case)) {return self.$getWeaponTableSwordCounter()} - else if ("LS"['$===']($case)) {return self.$getWeaponTableLongSword()} - else if ("CLS"['$===']($case)) {return self.$getWeaponTableLongSwordCounter()} - else if ("SS"['$===']($case)) {return self.$getWeaponTableShortSword()} - else if ("CSS"['$===']($case)) {return self.$getWeaponTableShortSwordCounter()} - else if ("SP"['$===']($case)) {return self.$getWeaponTableSpear()} - else if ("CSP"['$===']($case)) {return self.$getWeaponTableSpearCounter()} - else if ("AX"['$===']($case)) {return self.$getWeaponTableAx()} - else if ("CAX"['$===']($case)) {return self.$getWeaponTableAxCounter()} - else if ("CL"['$===']($case)) {return self.$getWeaponTableClub()} - else if ("CCL"['$===']($case)) {return self.$getWeaponTableClubCounter()} - else if ("BW"['$===']($case)) {return self.$getWeaponTableBow()} - else if ("MA"['$===']($case)) {return self.$getWeaponTableMartialArt()} - else if ("CMA"['$===']($case)) {return self.$getWeaponTableMartialArtCounter()} - else if ("BX"['$===']($case)) {return self.$getWeaponTableBoxing()} - else if ("CBX"['$===']($case)) {return self.$getWeaponTableBoxingCounter()} - else if ("PR"['$===']($case)) {return self.$getWeaponTableProWrestling()} - else if ("CPR"['$===']($case)) {return self.$getWeaponTableProWrestlingCounter()} - else if ("ST"['$===']($case)) {return self.$getWeaponTableStand()} - else if ("CST"['$===']($case)) {return self.$getWeaponTableStandCounter()}; - return $hash2(["name", "table"], {"name": "判定", "table": nil}); - }, $ShinkuuGakuen_getWeaponTable$9.$$arity = 1); - - Opal.def(self, '$getWeaponTableSword', $ShinkuuGakuen_getWeaponTableSword$10 = function $$getWeaponTableSword() { - var self = this; - - return $hash2(["name", "table"], {"name": "剣", "table": [[11, "失礼剣", "成功度+5"], [22, "隼斬り", "回避不可"], [33, "みじん斬り", "攻撃量2倍"], [44, "天地二段", "2連続攻撃"], [55, "波動剣", "カウンター不可、B・D"], [66, "疾風剣", "攻撃量3倍、盾受けー100"], [77, "残像剣", "全体攻撃、B・D"], [88, "五月雨斬り」", "回避不可.ダメージ3倍"], [99, "ライジングノヴア」", "2連続攻撃・2撃目敵無防備、B・D"], [0, "光速剣", "攻撃量3倍、盾受け不可、カウンター不可、B・D"]]}) - }, $ShinkuuGakuen_getWeaponTableSword$10.$$arity = 0); - - Opal.def(self, '$getWeaponTableSwordCounter', $ShinkuuGakuen_getWeaponTableSwordCounter$11 = function $$getWeaponTableSwordCounter() { - var self = this; - - return $hash2(["name", "table"], {"name": "剣カウンター", "table": [[33, "パリィ", "攻撃の無効化"], [44, nil, nil], [55, nil, nil], [66, "かすみ青眼", "カウンター"], [77, nil, nil], [88, nil, nil], [99, nil, nil], [0, "不動剣", "クロスカウンター、B・D、ダメージ2倍"]]}) - }, $ShinkuuGakuen_getWeaponTableSwordCounter$11.$$arity = 0); - - Opal.def(self, '$getWeaponTableLongSword', $ShinkuuGakuen_getWeaponTableLongSword$12 = function $$getWeaponTableLongSword() { - var self = this; - - return $hash2(["name", "table"], {"name": "大剣", "table": [[11, "スマッシュ", "敵防御半分"], [22, "峰打ち", "麻痺硬化「根性」0"], [33, "水鳥剣", "敵防御判定ー50"], [44, "ブルクラッシュ", "敵防御力無視"], [55, "逆風の太刀", "カウンター不可、ダメージ2倍"], [66, "濁流剣", "回避不可、カウンター不可、B・D"], [77, "清流剣", "回避不可、カウンター不可、B・D"], [88, "燕返し", "2連続攻撃・2撃目カウンター不可、B・D"], [99, "地ずり残月", "盾受け不可、ダメージ3倍、B・D"], [0, "乱れ雪月花", "3連続攻撃・三撃目敵無防備、ダメージ3倍、防御力無視、B・D"]]}) - }, $ShinkuuGakuen_getWeaponTableLongSword$12.$$arity = 0); - - Opal.def(self, '$getWeaponTableLongSwordCounter', $ShinkuuGakuen_getWeaponTableLongSwordCounter$13 = function $$getWeaponTableLongSwordCounter() { - var self = this; - - return $hash2(["name", "table"], {"name": "大剣カウンター", "table": [[22, "無形の位", "攻撃の無効化"], [33, nil, nil], [44, nil, nil], [55, "双破", "クロスカウンター、B・D"], [66, nil, nil], [77, nil, nil], [88, "喪心無想", "カウンター、攻撃量6倍"], [99, nil, nil], [0, nil, nil]]}) - }, $ShinkuuGakuen_getWeaponTableLongSwordCounter$13.$$arity = 0); - - Opal.def(self, '$getWeaponTableShortSword', $ShinkuuGakuen_getWeaponTableShortSword$14 = function $$getWeaponTableShortSword() { - var self = this; - - return $hash2(["name", "table"], {"name": "小剣", "table": [[11, "乱れ突き", "2連続攻撃"], [22, "フェイクタング", "スタン効果「注意力」5"], [33, "マインドステア", "麻痺効果「注意力」0"], [44, "サイドワインダー", "成功度+3、盾受け不可"], [55, "スクリュードライバー", "防御力無視、ダメージ2倍"], [66, "ニードルロンド", "3連続攻撃"], [77, "プラズマブラスト", "麻痺効果「根性」0、B・D"], [88, "サザンクロス", "麻痺効果「根性」5、攻撃量2倍"], [99, "ファイナルレター", "気絶効果「根性」0、回避不可、カウンター不可、B・D"], [0, "百花繚乱", "回避不可、盾受け不可、攻撃量3倍、B・D"]]}) - }, $ShinkuuGakuen_getWeaponTableShortSword$14.$$arity = 0); - - Opal.def(self, '$getWeaponTableShortSwordCounter', $ShinkuuGakuen_getWeaponTableShortSwordCounter$15 = function $$getWeaponTableShortSwordCounter() { - var self = this; - - return $hash2(["name", "table"], {"name": "小剣カウンター", "table": [[11, "リポスト", "カウンター"], [22, nil, nil], [33, nil, nil], [44, nil, nil], [55, nil, nil], [66, nil, nil], [77, nil, nil], [88, "マタドール", "カウンター、麻痺効果「注意力」5"], [99, nil, nil], [0, "マリオネット", "攻撃の相手を変える"]]}) - }, $ShinkuuGakuen_getWeaponTableShortSwordCounter$15.$$arity = 0); - - Opal.def(self, '$getWeaponTableSpear', $ShinkuuGakuen_getWeaponTableSpear$16 = function $$getWeaponTableSpear() { - var self = this; - - return $hash2(["name", "table"], {"name": "槍", "table": [[11, "チャージ", "ダメージ1.5倍、盾受けー30"], [22, "稲妻突き", "回避不可"], [33, "脳削り", "麻痺効果「根性」0"], [44, "大車輪", "全体攻撃"], [55, "狂乱撃", "二回攻撃"], [66, "スパイラルチャージ", "盾受け不可、ダメージ2倍、B・D"], [77, "双龍波", "スタン効果「注意力」5、盾受け不可、B・D"], [88, "流星衝", "カウンター不可、ダメージ3倍、次行動まで攻撃対象にならない"], [99, "ランドスライサー", "全体攻撃、回避不可、カウンター不可、B・D"], [0, "無双三段", "三段攻撃、二段目B・D、三段目ダメージ2倍、B・D"]]}) - }, $ShinkuuGakuen_getWeaponTableSpear$16.$$arity = 0); - - Opal.def(self, '$getWeaponTableSpearCounter', $ShinkuuGakuen_getWeaponTableSpearCounter$17 = function $$getWeaponTableSpearCounter() { - var self = this; - - return $hash2(["name", "table"], {"name": "槍カウンター", "table": [[55, "風車", "カウンター、ダメージ2倍"], [66, nil, nil], [77, nil, nil], [88, nil, nil], [99, nil, nil], [0, nil, nil]]}) - }, $ShinkuuGakuen_getWeaponTableSpearCounter$17.$$arity = 0); - - Opal.def(self, '$getWeaponTableAx', $ShinkuuGakuen_getWeaponTableAx$18 = function $$getWeaponTableAx() { - var self = this; - - return $hash2(["name", "table"], {"name": "斧", "table": [[11, "一人時間差", "防御行動ー100"], [22, "トマホーク", "カウンター不可"], [33, "大木断", "ダメージ2倍"], [44, "ブレードロール", "全体攻撃"], [55, "マキ割りスペシャル", "盾受け不可、B・D"], [66, "ヨーヨー", "カウンター不可、2連続攻撃"], [77, "メガホーク", "カウンター不可、全体攻撃、攻撃量2倍"], [88, "デッドリースピン", "回避不可、攻撃量5倍"], [99, "マキ割りダイナミック", "盾受け不可、ダメージ2倍、B・D、ターンの最後に命中"], [0, "高速ナブラ", "回避不可、カウンター不可、攻撃量3倍、B・D"]]}) - }, $ShinkuuGakuen_getWeaponTableAx$18.$$arity = 0); - - Opal.def(self, '$getWeaponTableAxCounter', $ShinkuuGakuen_getWeaponTableAxCounter$19 = function $$getWeaponTableAxCounter() { - var self = this; - - return $hash2(["name", "table"], {"name": "斧カウンター", "table": [[44, "真っ向唐竹割り", "クロスカウンター、B・D"], [55, nil, nil], [66, nil, nil], [77, nil, nil], [88, nil, nil], [99, nil, nil], [0, nil, nil]]}) - }, $ShinkuuGakuen_getWeaponTableAxCounter$19.$$arity = 0); - - Opal.def(self, '$getWeaponTableClub', $ShinkuuGakuen_getWeaponTableClub$20 = function $$getWeaponTableClub() { - var self = this; - - return $hash2(["name", "table"], {"name": "棍棒", "table": [[11, "ハードヒット", "防御力無視"], [22, "ダブルヒット", "2連続攻撃"], [33, "回転撃", "防御判定ー100"], [44, "飛翔脳天撃", "麻痺効果「根性」5"], [55, "削岩撃", "盾受け不可、攻撃量3倍"], [66, "地裂撃", "防御力無視、カウンター不可、盾受け不可、スタン効果「注意力」0"], [77, "トリプルヒット", "3連続攻撃"], [88, "亀甲羅割り", "防御力半分、盾受け不可、B・D"], [99, "叩きつぶす", "防御力無視、防御行動、カウンター不可、B・D"], [0, "グランドクロス", "防御無視、盾、カウンター不可、ダメージ2倍、B・D、全体攻撃"]]}) - }, $ShinkuuGakuen_getWeaponTableClub$20.$$arity = 0); - - Opal.def(self, '$getWeaponTableClubCounter', $ShinkuuGakuen_getWeaponTableClubCounter$21 = function $$getWeaponTableClubCounter() { - var self = this; - - return $hash2(["name", "table"], {"name": "棍棒カウンター", "table": [[11, "ブロッキング", "攻撃の無効化"], [22, nil, nil], [33, nil, nil], [44, nil, nil], [55, nil, nil], [66, "ジャストミート", "飛び道具のみカウンター"], [77, nil, nil], [88, nil, nil], [99, "ホームラン", "すべての攻撃に対するカウンター"], [0, nil, nil]]}) - }, $ShinkuuGakuen_getWeaponTableClubCounter$21.$$arity = 0); - - Opal.def(self, '$getWeaponTableBow', $ShinkuuGakuen_getWeaponTableBow$22 = function $$getWeaponTableBow() { - var self = this; - - return $hash2(["name", "table"], {"name": "弓", "table": [[11, "影縫い", "麻痺効果「注意力」0"], [22, "アローレイン", "全体攻撃・回避ー50"], [33, "速射", "2連続攻撃"], [44, "瞬速の矢", "防御不可"], [55, "バラージシュート", "全体攻撃・盾受け不可・攻撃量2倍"], [66, "貫きの矢", "防御力無視、B・D"], [77, "落鳳波", "回避不可、B・D"], [88, "皆死ね矢", "全体攻撃、気絶効果「根性」5"], [99, "ミリオンダラー", "三連続攻撃"], [0, "夢想弓", "B・D、ダメージ3倍"]]}) - }, $ShinkuuGakuen_getWeaponTableBow$22.$$arity = 0); - - Opal.def(self, '$getWeaponTableMartialArt', $ShinkuuGakuen_getWeaponTableMartialArt$23 = function $$getWeaponTableMartialArt() { - var self = this; - - return $hash2(["name", "table"], {"name": "体術", "table": [[11, "集気法", "通常ダメージ分自分のHP回復"], [22, "コンビネーション", "2連続攻撃"], [33, "逆一本", "盾受け不可、防御力半分、スタン効果「根性」0"], [44, "コークスクリューブロー", "防御力無視、ダメージ3倍"], [55, "練気拳", "全体攻撃・回避不可"], [66, "バベルクランプル", "盾受け不可、B・D"], [77, "マシンガンジャブ", "3連続攻撃"], [88, "ナイアガラフォール", "盾受け不可、B・D、ダメージ2倍"], [99, "羅刹掌", "防御力無視、防御不可、B・D、ダメージ3倍"], [0, "千手観音", "5連続攻撃、すべてカウンター不可"]]}) - }, $ShinkuuGakuen_getWeaponTableMartialArt$23.$$arity = 0); - - Opal.def(self, '$getWeaponTableMartialArtCounter', $ShinkuuGakuen_getWeaponTableMartialArtCounter$24 = function $$getWeaponTableMartialArtCounter() { - var self = this; - - return $hash2(["name", "table"], {"name": "体術カウンター", "table": [[11, "スウェイバック", "攻撃の無効化"], [22, nil, nil], [33, "当て身投げ", "カウンター"], [44, nil, nil], [55, nil, nil], [66, "ジョルトカウンター", "クロスカウンター、B・D"], [77, nil, nil], [88, nil, nil], [99, "ガードキャンセル", $rb_plus("D10で振った必殺技によるカウンター", self.$getRandMartialArtCounter())], [0, nil, nil]]}) - }, $ShinkuuGakuen_getWeaponTableMartialArtCounter$24.$$arity = 0); - - Opal.def(self, '$getRandMartialArtCounter', $ShinkuuGakuen_getRandMartialArtCounter$25 = function $$getRandMartialArtCounter() { - var $a, $b, self = this, value = nil, dice = nil, tableInfo = nil, weaponTable = nil, result = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - dice = $rb_plus($rb_times(value, 10), value); - if (value['$=='](110)) { - dice = 100}; - tableInfo = self.$getWeaponTableMartialArt(); - weaponTable = tableInfo['$[]']("table"); - result = "" + " > (" + (value) + ")"; - result = $rb_plus(result, self.$getWeaponSkillText(weaponTable, dice)); - return result; - }, $ShinkuuGakuen_getRandMartialArtCounter$25.$$arity = 0); - - Opal.def(self, '$getWeaponTableBoxing', $ShinkuuGakuen_getWeaponTableBoxing$26 = function $$getWeaponTableBoxing() { - var self = this; - - return $hash2(["name", "table"], {"name": "ボクシング", "table": [[11, "ワン・ツー", "2連続攻撃・2攻撃目盾受け、回避不可"], [22, "リバーブロー", "麻痺効果「根性」5"], [33, "フリッカー", "2連続攻撃・全て盾受け、カウンター不可"], [44, "コークスクリューブロー", "防御力無視、ダメージ3倍"], [55, "レイ・ガン", "全体攻撃、B・D、陽属性魔法攻撃"], [66, "ショットガンブロー", "攻撃量10倍"], [77, "ハートブレイクショット", "2連続攻撃・1攻撃目防御力無視、ダメージ3倍・2撃目敵無防備"], [88, "デンプシーロール", "3連続攻撃・全てB・D"], [99, "フラッシュピストンマッハパンチ", "全体攻撃、B・D、気絶効果「根性」5"], [0, "右", "防御力無視、ダメージ10倍"]]}) - }, $ShinkuuGakuen_getWeaponTableBoxing$26.$$arity = 0); - - Opal.def(self, '$getWeaponTableBoxingCounter', $ShinkuuGakuen_getWeaponTableBoxingCounter$27 = function $$getWeaponTableBoxingCounter() { - var self = this; - - return $hash2(["name", "table"], {"name": "ボクシングカウンター", "table": [[11, "ダッキングブロー", "カウンター"], [22, "ジョルトカウンター", "クロスカウンター、B・D"], [33, nil, nil], [44, nil, nil], [55, nil, nil], [66, nil, nil], [77, nil, nil], [88, nil, nil], [99, nil, nil], [0, "ノーガード戦法", "攻撃の無効化、次ターン以降は自分の盾受け、回避不可、全ての攻撃にB・D"]]}) - }, $ShinkuuGakuen_getWeaponTableBoxingCounter$27.$$arity = 0); - - Opal.def(self, '$getWeaponTableProWrestling', $ShinkuuGakuen_getWeaponTableProWrestling$28 = function $$getWeaponTableProWrestling() { - var self = this; - - return $hash2(["name", "table"], {"name": "プロレス", "table": [[11, "ボディスラム", "盾受け不可"], [22, "ドロップキック", "B・D"], [33, "水車落とし", "盾受け不可、成功度+5"], [44, "ナックルアロー", "B・D、麻痺効果「根性」5"], [55, "ワン・ツー・エルボー", "2連続攻撃"], [66, "バックドロップ", "盾受け不可、ダメージ2倍"], [77, "投げっ放しジャーマン", "盾受け不可、防御力無視、成功度+5"], [88, "パワーボム", "盾受け不可、ダメージ2倍、B・D"], [99, "デスバレーボム", "盾受け不可、防御力無視、ダメージ2倍、気絶効果「根性」5"], [0, "ジャックハマー", "盾受け不可、防御力無視、ダメージ3倍、成功度+10"]]}) - }, $ShinkuuGakuen_getWeaponTableProWrestling$28.$$arity = 0); - - Opal.def(self, '$getWeaponTableProWrestlingCounter', $ShinkuuGakuen_getWeaponTableProWrestlingCounter$29 = function $$getWeaponTableProWrestlingCounter() { - var self = this; - - return $hash2(["name", "table"], {"name": "プロレスカウンター", "table": [[22, "パワースラム", "カウンター"], [55, "アックスボンバー", "カウンター、B・D"], [66, nil, nil], [77, nil, nil], [88, nil, nil], [99, nil, nil], [0, nil, nil]]}) - }, $ShinkuuGakuen_getWeaponTableProWrestlingCounter$29.$$arity = 0); - - Opal.def(self, '$getWeaponTableStand', $ShinkuuGakuen_getWeaponTableStand$30 = function $$getWeaponTableStand() { - var self = this; - - return $hash2(["name", "table"], {"name": "幽波紋", "table": [[11, "SILER CHARIOT", "攻撃量5倍、刺しタイプ攻撃"], [22, "TOWER OF GRAY", "防御力無視"], [33, "DARK BLUE MOON", "全体攻撃、攻撃量2倍、水属性斬りタイプ攻撃"], [44, "EMPEROR", "回避不可、盾受け不可、カウンター不可、飛び道具攻撃"], [55, "MAGICIAN's RED", "ダメージ2倍、B・D、火属性魔法攻撃"], [66, "DEATH 13", "ダメージ0、全体攻撃、気絶効果「根性」5"], [77, "HIEROPHANT GREEN", "全体攻撃、B・D、水属性攻撃"], [88, "VANILLA ICE CREAM", "盾受け不可、カウンター不可、防御力無視、ダメージ3倍、B・D"], [99, "THE WORLD", "5連続攻撃、全て敵無防備"], [0, "STAR PLATINUM", "攻撃量15倍、B・D"]]}) - }, $ShinkuuGakuen_getWeaponTableStand$30.$$arity = 0); - - Opal.def(self, '$getWeaponTableStandCounter', $ShinkuuGakuen_getWeaponTableStandCounter$31 = function $$getWeaponTableStandCounter() { - var self = this; - - return $hash2(["name", "table"], {"name": "幽波紋カウンター", "table": [[11, "ANUBIS", "技のみカウンター、ダメージ(カウンターした回数の2乗)倍、斬りタイプ攻撃"], [22, nil, nil], [33, nil, nil], [44, nil, nil], [55, nil, nil], [66, "YELLOW TEMPERANE", "魔法・飛び道具含めて全ての攻撃を無効化"], [77, nil, nil], [88, nil, nil], [99, nil, nil], [0, nil, nil]]}) - }, $ShinkuuGakuen_getWeaponTableStandCounter$31.$$arity = 0); - return (Opal.def(self, '$getWeaponSkillText', $ShinkuuGakuen_getWeaponSkillText$32 = function $$getWeaponSkillText(weaponTable, dice) {try { - - var $$33, self = this, preName = nil, preEffect = nil; - - - self.$debug("getWeaponSkillText", dice); - if ($truthy(weaponTable['$nil?']())) { - return ""}; - preName = ""; - preEffect = ""; - $send(weaponTable, 'each', [], ($$33 = function(index, name, effect){var self = $$33.$$s || this, $a; - - - - if (index == null) { - index = nil; - }; - - if (name == null) { - name = nil; - }; - - if (effect == null) { - effect = nil; - }; - name = ($truthy($a = name) ? $a : preName); - preName = name; - effect = ($truthy($a = effect) ? $a : preEffect); - preEffect = effect; - if (index['$=='](dice['$%'](100))) { - } else { - return nil; - }; - Opal.ret("" + " > 「" + (name) + "」" + (effect));}, $$33.$$s = self, $$33.$$arity = 3, $$33)); - return ""; - } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } - }, $ShinkuuGakuen_getWeaponSkillText$32.$$arity = 2), nil) && 'getWeaponSkillText'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/ShinobiGami.js b/src/assets/dicebot/ShinobiGami.js deleted file mode 100644 index a9689bc70..000000000 --- a/src/assets/dicebot/ShinobiGami.js +++ /dev/null @@ -1,151 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$freeze', '$match', '$raise', '$to_i', '$[]', '$roll', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Table'); - - var $nesting = [self].concat($parent_nesting), $Table_initialize$1, $Table_roll$2; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $Table_initialize$1 = function $$initialize(name, type, items) { - var self = this, m = nil; - - - self.name = name; - self.items = items.$freeze(); - m = /(\d+)D(\d+)/i.$match(type); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "Unexpected table type: " + (type)) - }; - self.times = m['$[]'](1).$to_i(); - return (self.sides = m['$[]'](2).$to_i()); - }, $Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $Table_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, value = nil, index = nil; - - - $b = bcdice.$roll(self.times, self.sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(value, self.times); - return "" + (self.name) + "(" + (value) + ") > " + (self.items['$[]'](index)); - }, $Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$==', '$<=', '$>=', '$upcase', '$roll_tables', '$===', '$sinobigami_random_skill_table', '$sinobigami_metamorphose_table', '$private', '$get_table_by_1d6', '$get_table_by_2d6', '$[]', '$-', '$+', '$freeze', '$new', '$setPrefixes', '$keys']); - - self.$require("utils/table.rb"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ShinobiGami'); - - var $nesting = [self].concat($parent_nesting), $ShinobiGami_initialize$1, $ShinobiGami_check_2D6$2, $ShinobiGami_rollDiceCommand$3, $ShinobiGami_sinobigami_random_skill_table$4, $ShinobiGami_sinobigami_metamorphose_table$5; - - - Opal.const_set($nesting[0], 'ID', "ShinobiGami"); - Opal.const_set($nesting[0], 'NAME', "シノビガミ"); - Opal.const_set($nesting[0], 'SORT_KEY', "しのひかみ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・各種表\n" + " ・(無印)シーン表 ST/ファンブル表 FT/感情表 ET\n" + "   /変調表 WT/戦場表 BT/異形表 MT/ランダム特技決定表 RTT\n" + " ・(弐)都市シーン表 CST/館シーン表  MST/出島シーン表 DST\n" + " ・(参)トラブルシーン表 TST/日常シーン表 NST/回想シーン表 KST\n" + " ・(死)東京シーン表 TKST/戦国シーン表 GST\n" + " ・(乱)戦国変調表 GWT\n" + " ・(リプレイ戦1〜2巻)学校シーン表 GAST/京都シーン表 KYST\n" + "   /神社仏閣シーン表 JBST\n" + " ・(怪)怪ファンブル表 KFT/怪変調表 KWT\n" + " ・(その他)秋空に雪舞えばシーン表 AKST/災厄シーン表 CLST\n" + "  /出島EXシーン表 DXST/斜歯ラボシーン表 HLST\n" + "  /夏の終わりシーン表 NTST/培養プラントシーン表  PLST\n" + "  ・忍秘伝  中忍試験シーン表 HC/滅びの塔シーン表 HT/影の街でシーン表 HK\n" + "  /夜行列車シーン表 HY/病院シーン表 HO/龍動シーン表 HR/密室シーン表 HM/催眠シーン表 HS\n" + "・D66ダイスあり\n"); - - Opal.def(self, '$initialize', $ShinobiGami_initialize$1 = function $$initialize() { - var $iter = $ShinobiGami_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $ShinobiGami_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $ShinobiGami_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $ShinobiGami_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $ShinobiGami_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > スペシャル(【生命力】1点か変調一つを回復)" - } else if (target['$==']("?")) { - return "" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $ShinobiGami_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $ShinobiGami_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var self = this, string = nil, result = nil, $case = nil; - - - string = command.$upcase(); - result = self.$roll_tables(command, $$($nesting, 'TABLES')); - if ($truthy(result)) { - return result}; - $case = string; - if (/\w*RTT/['$===']($case)) {return self.$sinobigami_random_skill_table()} - else if ("MT"['$===']($case)) {return self.$sinobigami_metamorphose_table()}; - return nil; - }, $ShinobiGami_rollDiceCommand$3.$$arity = 1); - self.$private(); - - Opal.def(self, '$sinobigami_random_skill_table', $ShinobiGami_sinobigami_random_skill_table$4 = function $$sinobigami_random_skill_table() { - var $a, $b, self = this, skill_table = nil, value1 = nil, table_name = nil, skill = nil, value2 = nil; - - - $b = self.$get_table_by_1d6($$($nesting, 'RANDOM_SKILL_TABLE')), $a = Opal.to_ary($b), (skill_table = ($a[0] == null ? nil : $a[0])), (value1 = ($a[1] == null ? nil : $a[1])), $b; - $b = skill_table, $a = Opal.to_ary($b), (table_name = ($a[0] == null ? nil : $a[0])), (skill_table = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_2d6(skill_table), $a = Opal.to_ary($b), (skill = ($a[0] == null ? nil : $a[0])), (value2 = ($a[1] == null ? nil : $a[1])), $b; - return "" + "ランダム指定特技表(" + (value1) + "," + (value2) + ") > 『" + (table_name) + "』" + (skill); - }, $ShinobiGami_sinobigami_random_skill_table$4.$$arity = 0); - - Opal.def(self, '$sinobigami_metamorphose_table', $ShinobiGami_sinobigami_metamorphose_table$5 = function $$sinobigami_metamorphose_table() { - var $a, $b, self = this, text = nil, value = nil, output = nil, demon_skill_table = nil; - - - $b = self.$get_table_by_1d6($$($nesting, 'METAMORPHOSE_TABLE')), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $b; - output = "" + "異形表(" + (value) + ") > " + (text); - if ($truthy((demon_skill_table = $$($nesting, 'DEMON_SKILL_TABLES')['$[]']($rb_minus(value, 1))))) { - - $b = self.$get_table_by_1d6(demon_skill_table['$[]']("table")), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), $b; - output = $rb_plus(output, "" + " " + (demon_skill_table['$[]']("name")) + " > " + (text) + (demon_skill_table['$[]']("page")));}; - return output; - }, $ShinobiGami_sinobigami_metamorphose_table$5.$$arity = 0); - Opal.const_set($nesting[0], 'TABLES', $hash2(["ST", "CST", "MST", "DST", "TST", "NST", "TKST", "KST", "GST", "GAST", "KYST", "JBST", "AKST", "CLST", "DXST", "HC", "HK", "HLST", "HM", "HO", "HR", "HS", "HT", "HY", "NTST", "PLST", "FT", "KFT", "ET", "WT", "KWT", "GWT", "BT"], {"ST": $$($nesting, 'Table').$new("シーン表", "2D6", ["血の臭いがあたりに充満している。何者かの戦いがあった気配。 いや?まだ戦いは続いているのだろうか?", "これは……夢か? もう終わったはずの過去。しかし、それを忘れることはできない。", "眼下に広がる街並みを眺める。ここからなら街を一望できるが……。", "世界の終わりのような暗黒。暗闇の中、お前達は密やかに囁く。", "優しい時間が過ぎていく。影の世界のことを忘れてしまいそうだ。", "清廉な気配が漂う森の中。鳥の囀りや、そよ風が樹々を通り過ぎる音が聞こえる。", "凄まじい人混み。喧噪。影の世界のことを知らない無邪気な人々の手柄話や無駄話が騒がしい。", "強い雨が降り出す。人々は、軒を求めて、大慌てて駆けだしていく。", "大きな風が吹き荒ぶ。髪の毛や衣服が大きく揺れる。何かが起こりそうな予感……", "酔っぱらいの怒号。客引きたちの呼び声。女たちの嬌声。いつもの繁華街の一幕だが。", "太陽の微笑みがあなたを包み込む。影の世界の住人には、あまりにまぶしすぎる。"]), "CST": $$($nesting, 'Table').$new("都市シーン表", "2D6", ["シャワーを浴び、浴槽に疲れた身体を沈める。時には、癒しも必要だ。", "閑静な住宅街。忍びの世とは関係のない日常が広がっているようにも見えるが……それも錯覚なのかもしれない", "橋の上にたたずむ。川の対岸を結ぶ境界点。さて、どちらに行くべきか……?", "人気のない公園。野良猫が一匹、遠くからあなたを見つめているような気がする。", "至福の一杯。この一杯のために生きている……って、いつも言ってるような気がするなぁ。", "無機質な感じのするオフィスビル。それは、まるで都市の墓標のようだ。", "古びた劇場。照明は落ち、あなたたちのほかに観客の姿は見えないが……。", "商店街を歩く。人ごみに混じって、不穏な気配もちらほら感じるが……。", "ビルの谷間を飛び移る。この街のどこかに、「アレ」は存在するはずなのだが……。", "見知らぬ天井。いつの間にか眠っていたのだろうか?それにしてもここはどこだ?", "廃屋。床には乱雑に壊れた調度品や器具が転がっている。"]), "MST": $$($nesting, 'Table').$new("館シーン表", "2D6", ["どことも知れぬ暗闇の中。忍びの者たちが潜むには、おあつらえ向きの場所である。", "洋館の屋根の上。ここからなら、館の周りを一望できるが……。", "美しい庭園。丹精こめて育てられたであろう色とりどりの花。そして、綺麗に刈り込まれた生垣が広がっている。", "あなたは階段でふと足を止めた。何者かの足音が近づいているようだ。", "あなたに割り当てられた寝室。ベッドは柔らかく、調度品も高級なものばかりだが……。", "エントランスホール。古い柱時計の時報が響く中、館の主の肖像画が、あなたを見下ろしている。", "食堂。染み一つないテーブルクロスに覆われた長い食卓。その上は年代物の燭台や花で飾られている。", "長い廊下の途中。この屋敷は広すぎて、迷子になってしまいそうだ。", "戯れに遊戯室へ入ってみた。そこには撞球台やダーツの的、何組かのトランプが散らばっているポーカーテーブルがあった。", "かび臭い図書室。歴代の館の主たちの記録や、古今東西の名著が、ぎっしりと棚に並べられている。", "一族の納骨堂がある。冷気と瘴気に満ちたその場所に、奇妙な叫びが届く。遠くの鳥のさえずりか?それとも死者の恨みの声か……?"]), "DST": $$($nesting, 'Table').$new("出島シーン表", "2D6", ["迷宮街。いつから囚われてしまったのだろう?何重にも交差し、曲がりくねった道を歩き続ける。このシーンの登場人物は《記憶術》で判定を行わなければならない。成功すると、迷宮の果てで好きな忍具を一つ獲得する。失敗すると、行方不明の変調を受ける。", "幻影城。訪れた者の過去や未来の風景を見せる場所。このシーンの登場人物は、《意気》の判定を行うことができる。成功すると、自分の持っている【感情】を好きな何かに変更することができる。", "死者たちの行進。無念の死を遂げた者たちが、仲間を求めて彷徨らっている。このシーンの登場人物は《死霊術》で判定を行わなければならない。失敗すると、ランダムに変調を一つを受ける。", "スラム。かろうじて生き延びている人たちが肩を寄せ合い生きているようだ。ここなら辛うじて安心できるかも……。", "落書きだらけのホテル。その周囲には肌を露出させた女や男たちが、媚態を浮かべながら立ち並んでいる。", "立ち並ぶ廃墟。その影から、人とも怪物ともつかぬ者の影が、あなたの様子をじっとうかがっている。", "薄汚い路地裏。巨大な黒犬が何かを貪っている。あなたの気配を感じて黒犬は去るが、そこに遺されていたのは……。", "昏い酒場。バーテンが無言でグラスを磨き続けている。あなたの他に客の気配はないが……。", "地面を覆う無数の瓦礫。その隙間から暗黒の瘴気が立ち昇る。このシーンの登場人物は《生存術》で判定を行わなければならない。失敗すると、好きな【生命力】を1点失う。", "熱気溢れる市場。武器や薬物などを売っているようだ。商人たちの中には、渡来人の姿もある。このシーンの登場人物は、《経済力》で判定を行うことができる。成功すると、好きな忍具を一つ獲得できる。", "目の前に渡来人が現れる。渡来人はあなたに興味を持ち、襲い掛かってくる。このシーンの登場人物は《刀術》で判定を行わなければならない。成功すると、渡来人を倒し、好きな忍具を一つ獲得する。失敗すると、3点の接近戦ダメージを受ける。"]), "TST": $$($nesting, 'Table').$new("トラブルシーン表", "2D6", ["同行者とケンカしてしまう。うーん、気まずい雰囲気。", "バシャ! 同行者のミスでずぶ濡れになってしまう。……冷たい。", "敵の気配に身を隠す。……すると、同行者の携帯が着信音を奏で始める。「……えへへへへ」じゃない!", "同行者の空気の読めない一言。場が盛大に凍り付く。まずい。何とかしないと。", "危機一髪! 同行者を死神の魔手から救い出す。……ここも油断できないな。", "同行者が行方不明になる。アイツめ、どこへ逃げたッ!", "ずて────ん! あいたたたた……同行者がつまずいたせいで、巻き込まれて転んでしまった。", "同行者のせいで、迷子になってしまう。困った。どこへ行くべきか。", "「どこに目つけてんだ、てめぇ!」同行者がチンピラにからまれる。うーん、助けに入るべきか。", "! 油断していたら、同行者に自分の恥ずかしい姿を見られてしまう。……一生の不覚!", "同行者が不意に涙を流す。……一体、どうしたんだろう?"]), "NST": $$($nesting, 'Table').$new("日常シーン表", "2D6", ["っくしゅん! ……うーん、風邪ひいたかなあ。お見舞いに来てくれたんだ。ありがとう。", "目の前のアイツは、見違えるほどドレスアップしていた。……ゆっくりと大人な時間が過ぎていく。", "おいしそうなスイーツを食べることになる。たまには甘いものを食べて息抜き息抜き♪", "ふわわわわ、いつの間にか寝ていたようだ。……って、あれ? お前、いつからそこにいたッ!!", "買い物帰りの友人と出会う。方向が同じなので、しばらく一緒に歩いていると、思わず会話が盛り上がる。", "コンビニ。商品に手を伸ばしたら、同時にその商品をとろうとした別の人物と手が触れあう。なんという偶然!", "みんなで食卓を囲むことになる。鍋にしようか? それとも焼き肉? お好み焼きなんかもい〜な〜♪", "どこからか楽しそうな歌声が聞こえてくる。……って、あれ? 何でお前がこんなところに?", "野良猫に餌をやる。……猫はのどを鳴らし、すっかりあなたに甘えているようだ。", "「……! ……? ……♪」テレビは、なにやら楽しげな場面を映している。あら。もう、こんな時間か。", "面白そうなゲーム! 誰かと対戦することになる。GMは、「戦術」からランダムに特技1つを選ぶ。このシーンに登場しているキャラクターは、その特技の判定を行う。成功した場合、同じシーンに登場しているキャラクターを1人を選び、そのキャラクターの自分に対する【感情】を好きなものに変更する(何の【感情】も持っていない場合、好きな【感情】を芽生えさせる)。"]), "TKST": $$($nesting, 'Table').$new("東京シーン表", "2D6", ["お台場、臨界副都心。デート中のカップルや観光客が溢れている。", "靖国神社。東京の中とも思えぬ、緑で満ちた場所だ。今は観光客もおらず、奇妙に静かだ……。", "東京大学の本部キャンパス。正門から伸びる銀杏並木の道を学生や教職員がのんびりと歩いている。道の向こうには安田講堂が見える。", "山手線の中。乗車率200%を超える、殺人的な通勤ラッシュ真っ最中。この中でできることは限られている……。", "霞が関。この場に集う情報は、忍者にとっても価値が高いものだ。道を行く人々の中にも、役人や警察官が目につく。", "渋谷駅前の雑踏。大型屋外ヴィジョンが見下ろす中で、大勢の若者たちが行き交っている。", "夜の新宿歌舞伎町。酔っぱらったサラリーマン、華やかな夜の蝶、明らかに筋ものと判る男、外国人などの様々な人間と、どこか危険な雰囲気に満ちている。", "新宿都庁。摩天楼が林立するビル街の下、背広姿の人々が行き交う。", "神田古書街。多くの古書店が軒を連ねている。軒先に積まれた本の山にさえ、追い求める謎や、深遠な知識が埋もれていそうな気がする。", "山谷のドヤ街。日雇い労働者が集う管理宿泊施設の多いこの場所は、身を隠すにはうってつけだ。", "東京スカイツリーの上。この場所からならば東京の町が一望できる。"]), "KST": $$($nesting, 'Table').$new("回想シーン表", "2D6", ["闇に蔓延する忍びの気配。あのときもそうだった。手痛い失敗の記憶。今度こそ、うまくやってみせる。", "甘い口づけ。激しい抱擁。悲しげな瞳……一夜の過ちが思い返される。", "記憶の中でゆらめくセピア色の風景。……見覚えがある。そう、私はここに来たことがあるはずだッ!!", "目の前に横たわる死体。地面に広がっていく。あれは、私のせいだったのだろうか……?", "アイツとの大切な約束を思い出す。守るべきだった約束。果たせなかった約束。", "助けを求める右手が、あなたに向かってまっすぐ伸びる。あなたは、必死でその手を掴もうとするが、あと一歩のところで、その手を掴み損ねる……。", "きらきらと輝く笑顔。今はもう喪ってしまった、大事だったアイツの笑顔。", "恐るべき一撃! もう少しで命を落とすところだった……。しかし、あの技はいまだ見切れていない。", "幼い頃の記憶。仲の良かったあの子。そういえば、あの子は、どこに行ってしまったのだろう。もしかして……。", "「……ッ!!」激しい口論。ひどい別れ方をしてしまった。あんなことになると分かっていたら……。", "懐の中のお守りを握りしめる。アイツにもらった、大切な思い出の品。「兵糧丸」を1つ獲得する。"]), "GST": $$($nesting, 'Table').$new("戦国シーン表", "2D6", ["炎上する山城。人々の悲鳴や怒号がこだましている。どうやら、敵対する武将による焼き討ちらしい。今ならば、あるいは……。", "荒れ果てた村。カラスの不吉な鳴き声が聞こえてくる中で、やせ細った村人たちが、うつろな瞳でこちらを伺っている。", "人気のない山道。ただ鳥の声だけが響いている。通りがかった人を襲うのには、好都合かもしれない。", "乾いた骸の転がる合戦後。生き物の姿はなく、草の一本さえも生えていない。落ち武者たちの恨みがましい声が聞こえてきそうだ……。", "不気味な気配漂う森の中。何か得体のしれぬものが潜んでいそうだ。", "荒れ果てた廃寺。ネズミがカサカサと這いまわる本堂の中を、残された本尊が見下ろしている。", "街道沿いの宿場町。戦から逃げてきたらしい町人や、商売の種を探す商人、目つきの鋭い武士などが行き交い、賑わっている。", "城の天守閣のさらに上。強く吹く風が、雲を流していく。", "館の天井裏。この下では今、何が行われているのか……。", "合戦場に設けられた陣内。かがり火がたかれ、武者たちが酒宴を行っている。", "戦の真っただ中にある合戦場。騎馬にまたがった鎧武者が駆け抜けていく。勝者となるのは、いずれの陣営だろうか。"]), "GAST": $$($nesting, 'Table').$new("学校シーン表", "2D6", ["清廉な気配が漂う森の中。鳥のさえずりやそよ風が木々を通りすぎる音が聞こえる。", "学校のトイレ。……なんだか少しだけ怖い気がする。", "誰もいない体育館。バスケットボールがころころと転がっている。", "校舎の屋上。一陣の風が吹き、衣服をたなびかせる。", "校庭。体操服姿の生徒たちが走っている。", "廊下。休憩時間か放課後か。生徒たちが、楽しそうにはしゃいでいる。", "学食のカフェテリア。生徒たちがまばらに席につき、思い思い談笑している。", "静かな授業中の風景。しかし、忍術を使って一般生徒に気取られない会話をしている忍者たちもいる。", "校舎と校舎をつなぐ渡り廊下。あなた以外の気配はないが……。", "特別教室。音楽室や理科室にいるのってなんか楽しいよね。", "プール。水面が、ゆらゆら揺れている。"]), "KYST": $$($nesting, 'Table').$new("京都シーン表", "2D6", ["夜の街並み。神社仏閣はライトアップされ、にぎやかな酔客が通りを埋める。昼間とはまた違った景色が広がっている。", "京都駅ビル。その屋上は、京都市で最も高く、周囲を一望できる。", "旅館で一休み。……のはずが、四方山話に花が咲く。", "鴨川のあたりを歩いている。カップルが均等に距離を置いて座っているのが面白い。", "京都はどこにでもおみやげ物屋があるなぁ。さて、あいつに何を買ってやるべきか……?", "「神社仏閣シーン表(JBST)」で決定。", "新京極でお買い物。アーケードには、新旧様々な店が建ち並ぶ。", "大学が近くにあるのかな? 安い定食屋や古本屋、ゲームセンターなどが軒を連ねる学生街。京都はたくさん大学があるなぁ。", "静かな竹林。凛とした気配が漂う。", "祇園。時折、しずしずと歩く舞妓さんとすれ違う。雰囲気のある町並みだ。", "一般公開された京都御所の中を歩く。昼間だというのに人通りはあまりなく、何だか少し寂しい気持ち。"]), "JBST": $$($nesting, 'Table').$new("神社仏閣シーン表", "2D6", ["清明神社。一条戻り橋を越えたところにある小さな社。陰陽師に憧れる女性たちの姿が目立つ。", "東寺。東寺真言宗総本山。密教独特の厳しい気配が漂う。", "平安神宮。大鳥居を白無垢の花嫁行列がくぐり抜けていくのが見える。どうやら結婚式のようだ。", "慈照寺――通称、銀閣寺。室町後期の東山文化を代表する建築である。錦鏡池を囲む庭園には、物思いにふける観光客の姿が……。", "鹿苑寺――通称、金閣寺。室町前期の北山文化を代表する建築である。鏡湖池に映る逆さ金閣には、強力な「魔」を封印していると言うが……?", "三十三間堂。荘厳な本堂に立ち並ぶ千一体の千手観音像は圧巻。", "清水寺。清水坂を越え、仁王門を抜けると、本堂――いわゆる清水の舞台にたどり着く。そこからは、音羽の滝や子安塔が見える。", "八坂神社。祇園さんの名前で知られるにぎやかな神社。舞妓さんの姿もちらほら。", "伏見稲荷。全国約四万社の稲荷神社の総本宮。稲荷山に向かって立ち並ぶ約一万基の鳥居は、まるで異界へと続いているかのようだ……。", "化野念仏寺。無数の石塔、石仏が立ち並ぶ景色は、どこか荒涼としている……。", "六道珍皇寺。小野篁が冥界に通ったとされる井戸のある寺。この辺りは「六道の辻」と呼ばれ、不思議な伝説が数多く残っている。"]), "AKST": $$($nesting, 'Table').$new("秋空に雪舞えばシーン表", "2D6", ["どこから紛れ込んできたのか。シーンプレイヤーが1D6を振って3以下ならナタを持った少女、4以上なら冬篭りに備えた熊が襲ってくる。シーンに登場したキャラクターは、少女なら《刀術》・熊なら《鳥獣術》で判定し、失敗すると接近戦ダメージを1点受ける。", "3:暗い夜の森の中、月明かりのみが周囲を照らす。忍が動くにはいい時間だ。", "4:秋晴れの下、両脇で黄金色の稲穂が風に靡く道。刈り取りを控えたこの短い間にしか見る事の出来ない貴重な光景だ。", "5:美味しそうな果実がたわわに実っている。一つくらい取って行ってもバチは当たらないだろう…。", "6:山中に続く林道。勾配の厳しい道から、紅葉が浮かび流れる穏やかな川が見下ろせる。", "7:村の広場。山や田畑が一望できる。波打つ稲穂の絨毯、山々には紅葉。秋を感じるひと時だ。", "8:パチパチと爆ぜる音。どうやら籾殻で焚き火をしているらしい。少し暖まっていこうか。", "9:神秘的な神社。祭りの準備が進められているが、今は人がいないようだ。", "ひと雨きそうな午後。重たい空気にキンモクセイがつと香る。", "草に埋もれ、崩れかけの古い空き家。どこか物悲しさを感じる。", "カツーン、カツーン、誰かが丑の刻参りをしている音が聞こえる。シーンに登場したキャラクターは《呪術》で判定し、成功すると誰かに《呪い》の変調を与えることができる。失敗すると《呪い》の変調を受ける。"]), "CLST": $$($nesting, 'Table').$new("災厄シーン表", "1D6", ["瘴気に晒され続けたことであなたの身体が妖魔へと変貌する。《封術》の判定に失敗したシーンプレイヤーは、背景:劣勢因子と背景:魔人を獲得する。", "妖魔があなたに従属を強いる。やつが掲げた手の中には…。《遁走術》の判定に失敗したシーンプレイヤーは、背景:人質と兵糧丸1つを獲得する。", "妖魔の群れに捕まった!独力での包囲網突破のために君の体は限界を迎えようとしていた。《拷問術》の判定に失敗したシーンプレイヤーは、背景:侵食と神通丸1つを獲得する。", "戦いの激化はあなたの体を蝕む。《医術》の判定に失敗したシーンプレイヤーは、背景:病魔と神通丸1つを獲得する。", "下級妖魔を束ねたボスが、新たなる力を手に入れようとしている。シーンプレイヤーが《見敵術》の判定に失敗した場合、ボスに対してエニグマ:『秘奥義』が公開状態で追加される。", "力なき者が生き残ることは出来ない。ボスが新たな力を手に入れようとしている。シーンプレイヤーが《怪力》の判定に失敗した場合、ボスに対してエニグマ:『八面六臂』が公開状態で追加される。"]), "DXST": $$($nesting, 'Table').$new("出島EXシーン表", "2D6", ["迷宮街。いつから囚われてしまったのだろう?何重にも交差し、曲がりくねった道を歩き続ける。このシーンの登場人物は《記憶術》で判定を行わなければならない。成功すると、迷宮の果てで好きな忍具を一つ獲得する。失敗すると、行方不明の変調を受ける。", "幻影城。訪れた者の過去や未来の風景を見せる場所。このシーンの登場人物は、《意気》の判定を行うことができる。成功すると、自分の持っている【感情】を好きな何かに変更することができる。", "死者たちの行進。無念の死を遂げた者たちが、仲間を求めて彷徨らっている。このシーンの登場人物は《死霊術》で判定を行わなければならない。失敗すると、ランダムに変調を一つを受ける。", "スラム。かろうじて生き延びている人たちが肩を寄せ合い生きているようだ。ここなら辛うじて安心できるかも……。", "落書きだらけのホテル。その周囲には肌を露出させた女や男たちが、媚態を浮かべながら立ち並んでいる。", "立ちふさがるのは妖魔の群れ。他に道などない、真正面から突き進むほかは…災厄シーン表(CLST)を振ること。", "薄汚い路地裏。巨大な黒犬が何かを貪っている。あなたの気配を感じて黒犬は去るが、そこに遺されていたのは……。", "昏い酒場。バーテンが無言でグラスを磨き続けている。あなたの他に客の気配はないが……。", "地面を覆う無数の瓦礫。その隙間から暗黒の瘴気が立ち昇る。このシーンの登場人物は《生存術》で判定を行わなければならない。失敗すると、好きな【生命力】を1点失う。", "熱気溢れる市場。武器や薬物などを売っているようだ。商人たちの中には、渡来人の姿もある。このシーンの登場人物は、《経済力》で判定を行うことができる。成功すると、好きな忍具を一つ獲得できる。", "目の前に渡来人が現れる。渡来人はあなたに興味を持ち、襲い掛かってくる。このシーンの登場人物は《刀術》で判定を行わなければならない。成功すると、渡来人を倒し、好きな忍具を一つ獲得する。失敗すると、3点の接近戦ダメージを受ける。"]), "HC": $$($nesting, 'Table').$new("中忍試験シーン表", "2D6", ["深い闇が辺りを覆う。何度目かの夜……いつまでこの試験は続くのだろう。このシーンに登場するキャラクターは《生存術》で判定を行い、失敗すると集団戦ダメージを1点受ける。", "山の冷気が肉体を蝕む。このシーンに登場するキャラクターは《衣装術》で判定を行い、失敗すると射撃戦ダメージを1受ける。", "腹を空かせた獣が襲いかかってくる。このシーンに登場するキャラクターは、《鳥獣術》で判定を行い、失敗すると射撃戦ダメージを1点受ける。", "上忍の仕掛けたトラップが発動。このシーンに登場するキャラクターは《罠術》で判定を行い、失敗すると射撃戦ダメージを1点受ける。", "濃い霧が出てきた。視界が極端に悪くなり、不安を感じる……。", "清廉な気配が漂う森の中。鳥のさえずりや、そよ風が木々を通り過ぎる音が聞こえる。", "朽ちた山小屋を発見する。何年も使った様子はなさそうだが……。", "山の天気は変わりやすい。嵐がやってくる。今後、戦闘が発生したとき、戦場表を使わなかった場合、その戦場は「平地」ではなく「悪天候」として扱う。", "ひときわ高くなっている尾根にたどり着く。このシーンの登場するキャラクターは、《登術》で判定を行い、成功すると、好きなキャラクター1人の【居所】を獲得する。", "深山幽谷(しんざんゆうこく)の果てに、清涼な泉を発見する。ふう、生き返るな。このシーンに登場するキャラクターは、《意気》の判定に成功すると、【生命力】を1点回復させることができる。", "脱落した別のグループの忍者の死体を発見する。こいつらには、もう不要だろう。好きな忍具1つを獲得する。(何を獲得するか宣言すること)。"]), "HK": $$($nesting, 'Table').$new("影の街でシーン表", "2D6", ["血の臭いがあたりに充満している。何者かの戦いがあった気配。 いや?まだ戦いは続いているのだろうか?", "これは……夢か? もう終わったはずの過去。しかし、それを忘れることはできない。", "眼下に広がる街並みを眺める。ここからなら街を一望できるが……。", "世界の終わりのような暗黒。暗闇の中、お前達は密やかに囁く。", "死者たちの行進。無念の死を遂げた者たちが、死者を求めて彷徨っている。このシーンの登場人物は《死霊術》で判定を行わなければいけない。失敗すると、ランダムに変調1つを受ける。", "立ち並ぶ廃墟。その影から、人とも怪物ともつかない者の影が、あなたの様子を窺っている。", "地面を覆う瓦礫。その隙間から暗黒の瘴気が立ち昇る。このシーンの登場人物は、《生存術》で判定を行わなければならない。失敗すると好きな【生命力】1点を失う。", "強い雨が降り出す。人々は、軒を求めて、大慌てて駆けだしていく。", "大きな風が吹き荒ぶ。髪の毛や衣服が大きく揺れる。何かが起こりそうな予感……", "酔っぱらいの怒号。客引きたちの呼び声。女たちの嬌声。いつもの繁華街の一幕だが。", "太陽の微笑みがあなたを包み込む。影の世界の住人には、あまりにまぶしすぎる。"]), "HLST": $$($nesting, 'Table').$new("斜歯ラボシーン表", "2D6", ["今週のびっくりどっくり斜歯開発室、1D6を振り奇数なら好きな忍具が入手できる。偶数でも好きな忍具が入手できるが、射撃戦ダメージを1点受ける。", "トランスポーターだ!《絡繰術》で判定すること。失敗するとどこかへ飛ばされて《行方不明》の変調を受ける。成功した場合、望む場所へ到達できる。好きな「居所」を入手すること。", "改造室。調整途中の下忍戦闘員たちが錯乱し、あなたに襲い掛かる。〈傀儡術〉の判定を行う。失敗すると1点の集団戦ダメージを受ける。成功すれば「居所」を持っている他のキャラクターに1点の集団戦ダメージを与えることができる。", "エレベーター。ただし四方八方へ移動する。行き先ボタンは無い。この箱はこれから何処へ行くのか。", "長く続く廊下。不気味なほどに静まり返っているが、周囲からはまとわりつくような敵意を感じる。", "たくさんの巨大な円筒状のガラスが立ち並び、中には様々な人間が謎の液体に浮かぶ。もちろん肝心な部分は光の反射で見えない。こいつは…まさか…!培養プラントシーン表(PLST)を振ること。", "LEDが視覚的にやかましいコンピュータールーム。壁一面を埋めるディスプレイがちかちか光る。斜歯の誇る超コンピュータは性能に反して古めかしい。", "司令室。とうとうDr.斜歯を追い詰めた。泣いて土下座するDr.斜歯……の首がバネ仕掛けで飛び出し、大爆発。影武者だ!このシーン中のファンブル値は+2される。", "斜歯のロボット兵器がところ狭しと並べられている。こいつらが起動したとしたら…《潜伏術》で判定し、失敗した場合ロボット兵器に見つかって1点の射撃戦ダメージを受ける。", "自爆装置のある中枢ルーム。《火術》で判定し、成功すると自爆させることができる。自爆させた場合、Dr.斜歯に2点の接近戦ダメージを与えることができる。", "部屋に置かれた実験装置によりマインドコントロールを受けてしまう。このシーンのあなたはGMの指定した行動をとらねばならない。"]), "HM": $$($nesting, 'Table').$new("密室シーン表", "2D6", ["……ふう。あいつらと一緒にいると、緊張で息苦しくなる。トイレにいるときだけは、少しだけ落ち着くな。", "パチ、パチパチ……。電灯が明滅する。ずっと薄暗い部屋にいたせいで、時間の感覚が麻痺してきた。一体、いまは何時なんだ?", "ガチャン!誰かが食器を落として割ってしまったようだ。落としたヤツは悪びれもせず、こっちを見て肩をすくめている。", "誰かがつけたテレビ。くだらないバラエティ番組が映っている。静かな部屋に作り物の笑いがむなしく響く。", "空調がイカれているのか、妙に暑い。じっとりと汗ばんでくる……。", "ぴちょん、ぴちょん、ぴちょん……静かな室内に水道から水が滴る音が響く。さっき、きっちり閉めたはずなんだが。", "タバコの煙が目に染みる。閉じきった部屋で吸うから、空気が悪くなってきているな。", "床に散乱した書類の中から、一枚の写真を見つける。この部屋の持ち主と、その恋人らしき人物が仲よさそうに写っているが……。", "誰かが、八つ当たり気味に壁を殴る。そんなことして、一体なんになるというのだろう?", "ベッドでごろんと横になる。くそ!いつになったら、ここから出られるんだ!", "壁のシミをぼんやりとながめていたら、それがゆっくりと人の顔の形になり、にやりと笑いかけてきた。……幻覚か。"]), "HO": $$($nesting, 'Table').$new("病院シーン表", "2D6", ["謎の入院患者。車椅子に座った少女が、あなたをじっと見つめている。", "急患入り口。サイレンの音に続いて、ストレッチャーに乗せられた救急患者が運ばれてきた。", "病院の屋上。巨大な病院の敷地が一望できる。", "診察室。机と清潔なベットが設えられている無機室な部屋。机の上にはパソコンといくつかの器具が置かれている。", "病院の廊下。患者の姿はなく、静まり返っている。", "面会用のロビーは、入院患者とその見舞客で賑わっている。だが、それに紛れて、妙な気配を感じるが……。", "病室。きつい消毒液の香りに混じって、死の匂いが漂っている。", "奇妙な囁き声。「助けてくれ……。」そんな訴えを耳元で聞いた気がしたが……?", "ナースステーション。数人の看護師たちが慌ただしく業務をこなしている。", "中庭。どこからか悲鳴が聞こえたような気がするが……?", "霊安室。その扉が並ぶ長い廊下には、地下特有の淀んだ空気が漂っている。なぜだか気分が悪い。"]), "HR": $$($nesting, 'Table').$new("龍動シーン表", "2D6", ["血の匂いが辺りに充満している。何者かの戦いがあった気配。いや?まだ戦いは続いているのだろうか?", "これは……夢か?もう終わったはずの過去。しかし、それを忘れることはできない。", "眼下に広がる街並みを眺める。ここからなら街を一望できるが……。", "世界の終りのような暗闇。暗闇の中、お前たちは囁く。", "雰囲気のある古い街並みを歩く。あの建物は見たことがあるような……。", "霧の中を黒い影が飛び回っている。連中か?", "分厚い霧が街を折っている。霧の向こうには黒い影が……。", "強い雨が降り出す。人々は軒を求めて、大慌てで駆け出していく。", "大きな風が吹き荒ぶ。髪の毛や衣服が大きく揺れる。何かが起こりそうな予感……。", "どこからか奇妙な歌が響く。それはまるで、邪悪な神に捧げる祈りのようにも聞こえた。", "無残で冒涜的な死体。犠牲者の表情は苦悶に満ちあふれ、四肢には何者かに貪り食われた痕がある。"]), "HS": $$($nesting, 'Table').$new("催眠シーン表", "1D6", ["あなたは心地よいベッドの中で、恋人の肌のぬくもりを感じながら微睡んでいる。恋人は「そろそろ起きる時間」とベッドからすり抜ける。目を開けると、そこには裸のナビキャラクターがいた。そして、ナビキャラクターはあなたに優しく口づけをした。柔らかな感触が、あなたの記憶を掘り起こす。", "あなたは一人で死体の片付けを行っている。とても恐ろしく、とても憎かったナビキャラクターを殺したのだ。ナビキャラクターの意志のない瞳を見下ろし、あなたは晴れやかな気分になる。そして、その死体の手のひらに何かが書かれているのに気が付いた。", "あなたはなぜかTVショーに登場している。黒いサングラスをかけた司会者と楽しくおしゃべりしていたら、友人を紹介してほしいと言われ、電話を渡された。覚えのある番号にかけてみると、受話器の向こうからナビキャラクターの声がした。声は、あなたにこう囁く……。", "あなたはいつの間にか子どもになって、お気に入りのアニメを見ている。夢中になってアニメを見ていると、ナビキャラクターがアニメの登場人物として現れた。ナビキャラクターは、画面から抜け出してきて、あなたをアニメの世界に引きずり込む。そして、あなたは世界の真実に気付いてしまう!", "あなたはレストランでお腹を空かせている。そこに給仕の姿をしたナビキャラクターが、食事を運んできた。メインディッシュの銀製の蓋を開けてみると、そこにはあなたの大好物が。食欲をそそる香りが立ちこめ、あなたは重大な事実を思い出す。", "あなたは膨大な数の書架が林立する無人の図書館を歩いている。何気なく一冊の本を棚から抜き出すと、その本の向こう側にナビキャラクターの顔がのぞいている。「お前の求めるものは、その本の14ページに書かれている。」その言葉に従い、恐る恐る14ページを開いてみると……。"]), "HT": $$($nesting, 'Table').$new("滅びの塔シーン表", "2D6", ["血の臭いがあたりに充満している。何者かの戦いがあった気配。 いや?まだ戦いは続いているのだろうか?", "これは……夢か? もう終わったはずの過去。しかし、それを忘れることはできない。", "眼下に広がる街並みを眺める。ここからなら街を一望できるが……。", "世界の終わりのような暗黒。暗闇の中、お前達は密やかに囁く。", "優しい時間が過ぎていく。影の世界のことを忘れてしまいそうだ。", "凄まじい業火。このシーンの登場する者は、『器術』分野からランダムに特技1つを選び、判定を行う。失敗すると射撃戦ダメージ1点を受ける。", "凄まじい人混み。喧噪。影の世界のことを知らない無邪気な人々の手柄話や無駄話が騒がしい。", "強い雨が降り出す。人々は、軒を求めて、大慌てて駆けだしていく。", "大きな風が吹き荒ぶ。髪の毛や衣服が大きく揺れる。何かが起こりそうな予感……", "凄まじい業火。このシーンの登場する者は、『器術』分野からランダムに特技1つを選び、判定を行う。失敗すると射撃戦ダメージ1点を受ける。", "太陽の微笑みがあなたを包み込む。影の世界の住人には、あまりにまぶしすぎる。"]), "HY": $$($nesting, 'Table').$new("夜行列車シーン表", "2D6", ["車内の灯りがすべて消える。停電か?それとも……。すべてが闇に覆われる。", "どうやらこの車輌は喫煙席のようだ。もうもうと煙がたちこめている。しかし、あなたたち以外に、客の姿は見えないのだが……?", "気分を変えるために、食堂車に移動する。そこには「解体屋」を名乗る例の女性がいた。あなたにむかって、婉然とほほえみかけてくる。", "……はッ!?夢か?いつの間にか眠っていたようだ。何か、悪夢を見ていたようなのだが……。", "窓越しに通過する駅のホームが見える。しかし、その駅の名前をどうしても読むことができない。どうにも、日本語には見えないのだが……。", "ガタンガタンガタン……路線を走る音をぼんやりと聞いている。一体、この列車はどこに向かっているんだろう?", "車内を照らす白熱灯に、羽虫がたかり、それに合わせるように光が明滅する。", "髑髏のような細身の車掌あなたのチケットを確認すると、にたりと邪悪に微笑み、去って行った。", "一等車輛はコンパートメントになっているようだ。コンパートメントの中からは、楽しげな親子の話し声が聞こえてくるが……?", "「お弁当に、お茶……。」車内販売の少女がやってくる。しかし、そこで売られている食べ物や飲み物は、生き物の内臓のような器官やぐねぐねと蠢く触手、異様な毛の塊など異形のものばかり。《経済力》の判定に成功すると、好きな「忍具」1つを購入できる。", "車輌の果てを確かめるため、延々扉をくぐっているが、いつまでたっても最前列(最後尾?)にたどりつかない。今、いったい何輌目だろうか?"]), "NTST": $$($nesting, 'Table').$new("夏の終わりシーン表", "2D6", ["どこから紛れ込んできたのか。ナタを持った少女がこちらに迫ってくる。あっそぼうよぉ。シーンに登場したキャラクターは《刀術》で判定し、失敗すると接近戦ダメージを1点受ける。", "暗い夜の森の中、月明かりのみが周囲を照らす。忍が動くにはいい時間だ。", "鬱蒼と繁っていて少し涼しい森の中。ほんのひとときでもいい。使命を忘れて少し涼もうか。", "ほとんど人が出入りしない公民館。かろうじて扇風機は回っているが暑い。", "山の斜面に立ち並ぶ墓石。踏み固められた周囲と墓前に供えられた小さな花束。こんな山中にも日々通う人がいるのだろうか。", "村の広場。田畑が一望できる。夏の風物詩であるセミの鳴き声がうるさい。", "澄み切った清流。冷たい飛沫が気持ちいい。森の中の穴場だ。", "神秘的な神社。夏の終わりに向けて祭りの準備がされているが、今は人がいないようだ。", "無人の廃屋が並び、不気味な雰囲気が漂う。廃屋の影から息を潜める何者かの気配を感じる。", "村の上空。ここから眺めれば村など小さいものだ。", "カツーン、カツーン、誰かが丑の刻参りをしている音が聞こえる。シーンに登場したキャラクターは《呪術》で判定し、成功すると誰かに《呪い》の変調を与えることができる。失敗すると《呪い》の変調を受ける。"]), "PLST": $$($nesting, 'Table').$new("培養プラントシーン表", "1D6", ["培養槽。あなたそっくりの人間が謎の液体に浸かっている。あなたは本当に本物のあなただろうか?《記憶術》で判定を行い、失敗すると《忘却》の変調を受ける。", "巨大なガラス管の中に冒涜的な生物が蠢く実験室。《意気》で判定を行い、失敗すると《マヒ》の変調を受ける。", "試験管に浮かぶDr斜歯のクローン脳が大量にあるクローン施設。", "各流派頭領が浮かぶ試験管。ランダムな特技を決定し判定を行う。決定した特技が自分の得意分野の場合、成功すると兵糧丸を1つ入手する。得意分野でない場合、失敗すると接近戦ダメージを1点受ける。", "無人の実験室。中央には破壊された培養器があり、人とも獣ともつかない濡れた足跡が扉へと続いている。", "美少年改造プラント。このシーンに登場した者は《変装術》で判定すること。成功した場合、美少年になることができる。"]), "FT": $$($nesting, 'Table').$new("ファンブル表", "1D6", ["何か調子がおかしい。そのサイクルの間、すべての行為判定にマイナス1の修正がつく。", "しまった! 好きな忍具を1つ失ってしまう。", "情報が漏れる! このゲームであなたが獲得した【秘密】は、他のキャラクター全員の知るところとなる。", "油断した! 術の制御に失敗し、好きな【生命力】を1点失う。", "敵の陰謀か? 罠にかかり、ランダムに選んだ変調1つを受ける。変調は、変調表で決定すること。", "ふう。危ないところだった。特に何も起こらない。"]), "KFT": $$($nesting, 'Table').$new("怪ファンブル表", "1D6", ["何か調子がおかしい。そのサイクルの間、すべての行為判定にマイナス1の修正がつく。", "しまった! 好きな忍具を1つ失ってしまう。", "情報が漏れる! あなた以外のキャラクターは、あなたの持っている【秘密】か【居所】の中から、好きなものをそれぞれ一つ知ることができる。", "油断した! 術の制御に失敗し、好きな【生命力】を1点失う。", "敵の陰謀か? 罠にかかり、ランダムに選んだ変調一つを受ける。変調は、変調表で決定すること。", "ふう。危ないところだった。特に何も起こらない。"]), "ET": $$($nesting, 'Table').$new("感情表", "1D6", ["共感(プラス)/不信(マイナス)", "友情(プラス)/怒り(マイナス)", "愛情(プラス)/妬み(マイナス)", "忠誠(プラス)/侮蔑(マイナス)", "憧憬(プラス)/劣等感(マイナス)", "狂信(プラス)/殺意(マイナス)"]), "WT": $$($nesting, 'Table').$new("変調表", "1D6", ["故障:すべての忍具が使用不能。1サイクルの終了時に、《絡繰術》で判定を行い、成功するとこの効果は無効化される。", "マヒ:修得済み特技がランダムに1つ使用不能になる。1サイクルの終了時に、《身体操術》で成功するとこの効果は無効化される。", "重傷:次の自分の手番に行動すると、ランダムな特技分野1つの【生命力】に1点ダメージ。1サイクルの終了時に、《生存術》で成功すると無効化される。", "行方不明:その戦闘終了後、メインフェイズ中に行動不可。1サイクルの終了時に、《経済力》で成功すると無効化される。", "忘却:修得済み感情がランダムに1つ使用不能。1サイクルの終了時に、《記憶術》で成功すると無効化される。", "呪い:修得済み忍法がランダムに1つ使用不能。1サイクルの終了時に、《呪術》で成功すると無効化される。"]), "KWT": $$($nesting, 'Table').$new("怪変調表", "1D6", ["故障:すべての忍具が使用不能になる。この効果は累積しない。各サイクルの終了時に、《絡繰術》で行為判定を行い、成功するとこの変調は無効化される。", "マヒ:修得している特技の中からランダムに一つを選び、その特技が使用不能になる。この効果は、修得している特技の数だけ累積する。各サイクルの終了時に、《身体操術l》で行為判定を行い、成功するとこの変調はすべて無効化される。", "重傷:命中判定、情報判定、感情判定を行うたびに、接近戦ダメージを1点受ける。この効果は累積しない。各サイクルの終了時に、《生存術》で行為判定を行い、成功するとこの変調は無効化される。", "行方不明:メインフェイズ中、自分以外がシーンプレイヤーのシーンに登場することができなくなる。この効果は累積しない。各サイクルの終了時に、《経済力》で行為判定を行い、成功するとこの変調は無効化される。", "忘却:修得している【感情】の中からランダムに一つを選び、その【感情】を持っていないものとして扱う。この効果は、修得している【感情】の数だけ累積する。各サイクルの終了時に、《記憶術》で行為判定を行い、成功するとこの変調はすべて無効化される。", "呪い:修得している忍法の中からランダムに一つを選び、その忍法を修得していないものとして扱う。この効果は、修得している忍法の数だけ累積する。各サイクルの終了時に、《呪術》で行為判定を行い、成功するとこの変調はすべて無効化される。"]), "GWT": $$($nesting, 'Table').$new("戦国変調表", "1D6", ["催眠:戦闘に参加した時、戦闘開始時、もしくはこの変調を受けた時に【生命力】を1点減少しないと、戦闘から脱落する。サイクル終了時に〈意気〉判定し成功すると無効化。", "火達磨:ファンブル値が1上昇し、ファンブル時に1点の近接ダメージを受ける。シーン終了時に無効化。", "猛毒:戦闘に参加した時、ラウンドの終了時にサイコロを1つ振る(飢餓と共用)。奇数だったら【生命力】を1減少。サイクル終了時に〈毒術〉判定し成功すると無効化。", "飢餓:戦闘に参加した時、ラウンドの終了時にサイコロを1つ振る(猛毒と共用)。偶数だったら【生命力】を1減少。サイクル終了時に〈兵糧術〉判定し成功すると無効化。", "残刃:回復判定、忍法、背景、忍具の効果による【生命力】回復無効。サイクル終了時に〈拷問術〉判定し成功すると無効化。", "野望:命中判定に+1、それ以外の判定に-1。サイクル終了時に〈憑依術〉判定し成功すると無効化。"]), "BT": $$($nesting, 'Table').$new("戦場表", "1D6", ["平地:特になし。", "水中:海や川や、プール、血の池地獄など。この戦場では、回避判定に-2の修正がつく。", "高所:ビルの谷間や樹上、断崖絶壁など。この戦場でファンブルすると1点のダメージを受ける。", "悪天候:嵐や吹雪、ミサイルの雨など。この戦場では、すべての攻撃忍法の間合が1上昇する。", "雑踏:人混みや教室、渋滞中の車道など。この戦場では、行為判定のとき、2D6の目がプロット値+1以下だとファンブルする。", "極地:宇宙や深海、溶岩、魔界など。ラウンドの終わりにGMが1D6を振り、経過ラウンド以下なら全員1点ダメージ。ここから脱落したものは変調表を適用する。"])}).$freeze()); - Opal.const_set($nesting[0], 'RANDOM_SKILL_TABLE', [["器術", ["絡繰術", "火術", "水術", "針術", "仕込み", "衣装術", "縄術", "登術", "拷問術", "壊器術", "掘削術"]], ["体術", ["騎乗術", "砲術", "手裏剣術", "手練", "身体操術", "歩法", "走法", "飛術", "骨法術", "刀術", "怪力"]], ["忍術", ["生存術", "潜伏術", "遁走術", "盗聴術", "腹話術", "隠形術", "変装術", "香術", "分身の術", "隠蔽術", "第六感"]], ["謀術", ["医術", "毒術", "罠術", "調査術", "詐術", "対人術", "遊芸", "九ノ一の術", "傀儡の術", "流言の術", "経済力"]], ["戦術", ["兵糧術", "鳥獣術", "野戦術", "地の利", "意気", "用兵術", "記憶術", "見敵術", "暗号術", "伝達術", "人脈"]], ["妖術", ["異形化", "召喚術", "死霊術", "結界術", "封術", "言霊術", "幻術", "瞳術", "千里眼の術", "憑依術", "呪術"]]].$freeze()); - Opal.const_set($nesting[0], 'METAMORPHOSE_TABLE', ["1D6を振り、「妖魔忍法表A」で、ランダムに忍法の種類を決定する。妖魔化している間、その妖魔忍法を修得しているものとして扱う。この異形は、違う種類の妖魔忍法である限り、違う異形として扱う。", "1D6を振り、「妖魔忍法表B」で、ランダムに忍法の種類を決定する。妖魔化している間、その妖魔忍法を修得しているものとして扱う。この異形は、違う種類の妖魔忍法である限り、違う異形として扱う。", "1D6を振り、「妖魔忍法表C」で、ランダムに忍法の種類を決定する。妖魔化している間、その妖魔忍法を修得しているものとして扱う。この異形は、違う種類の妖魔忍法である限り、違う異形として扱う。", "妖魔化している間、戦闘中、1ラウンドに使用できる忍法のコストが、自分のプロット値+3点になり、装備忍法の【揺音】を修得する。", "妖魔化している間、【接近戦攻撃】によって与える接近戦ダメージが2点になる。", "妖魔化している間、このキャラクターの攻撃に対する回避判定と、このキャラクターの奥義に対する奥義破り判定にマイナス1の修正がつく。"].$freeze()); - Opal.const_set($nesting[0], 'DEMON_SKILL_TABLES', [$hash2(["name", "page", "table"], {"name": "妖魔忍法表A", "page": "(怪p.252)", "table": ["【震々】", "【神隠】", "【夜雀】", "【猟犬】", "【逢魔時】", "【狂骨】"]}), $hash2(["name", "page", "table"], {"name": "妖魔忍法表B", "page": "(怪p.253)", "table": ["【野衾】", "【付喪神】", "【見越】", "【木魂】", "【鵺】", "【生剥】"]}), $hash2(["name", "page", "table"], {"name": "妖魔忍法表C", "page": "(怪p.254)", "table": ["【百眼】", "【呑口】", "【荒吐】", "【怨霊】", "【鬼火】", "【蛭子】"]})].$freeze()); - return self.$setPrefixes($rb_plus(["MT", "RTT"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/ShoujoTenrankai.js b/src/assets/dicebot/ShoujoTenrankai.js deleted file mode 100644 index b4ef3f350..000000000 --- a/src/assets/dicebot/ShoujoTenrankai.js +++ /dev/null @@ -1,66 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$setPrefixes', '$[]', '$upcase', '$nil?', '$getEventTableResult', '$getTensionText', '$abs', '$-', '$==', '$roll', '$even?', '$+', '$getTableValue', '$freeze']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ShoujoTenrankai'); - - var $nesting = [self].concat($parent_nesting), $ShoujoTenrankai_rollDiceCommand$1, $ShoujoTenrankai_getTensionText$2, $ShoujoTenrankai_getEventTableResult$3; - - - Opal.const_set($nesting[0], 'ID', "ShoujoTenrankai"); - Opal.const_set($nesting[0], 'NAME', "少女展爛会TRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "しようしよてんらんかいTRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "出来事表:\n" + "・季節\n" + " SPRING 春/SUMMER 夏/AUTUMN 秋/WINTER 冬\n" + "・時刻\n" + " MORNING 朝/NOON 昼/AFTERNOON 昼下がり/\n" + " TWILIGHT 黄昏/NIGHT 夜中/MIDNIGHT 夜更け\n" + "・棲み処\n" + " NORBLE 貴族趣味/MARCHEN メルヒェン/COLONIAL コロニアル/\n" + " SHELF 本棚のある場所/LITTLE 小さな妹の部屋/\n" + " ELDER 素敵なお姉さまの部屋/ATERIEL アトリエ/OPEN 集まれる場所/\n" + " HAUNTED SIMPLE 侘び住まい\n" + "・いろいろな場所\n" + " LARGE 広い場所/CORRIDOR 廊下/STAIRS 階段/\n" + " COSY 居心地のいい場所/TERRACE テラス・ベランダ/\n" + " GARRET 屋根裏/KITCHEN 台所/BATH 浴室/REST 化粧室/\n" + " CELLER 地下倉庫/LUMBER 物置/GARDEN 庭園/WASTED 廃園/\n" + " RUIN 廃屋/SHORE 水のほとり\n"); - self.$setPrefixes(["SPRING", "SUMMER", "AUTUMN", "WINTER", "MORNING", "NOON", "AFTERNOON", "TWILIGHT", "NIGHT", "MIDNIGHT", "NORBLE", "MARCHEN", "COLONIAL", "SHELF", "LITTLE", "ELDER", "ATERIEL", "OPEN", "HAUNTED", "SIMPLE", "LARGE", "CORRIDOR", "STAIRS", "COSY", "TERRACE", "GARRET", "KITCHEN", "BATH", "REST", "CELLER", "LUMBER", "GARDEN", "WASTED", "RUIN", "SHORE"]); - - Opal.def(self, '$rollDiceCommand', $ShoujoTenrankai_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $b, self = this, info = nil, name = nil, table = nil, text = nil, number1 = nil, number2 = nil, tensionText = nil, result = nil; - - - info = $$($nesting, 'EVENT_TABLES')['$[]'](command.$upcase()); - if ($truthy(info['$nil?']())) { - return nil}; - name = info['$[]']("name"); - table = info['$[]']("table"); - $b = self.$getEventTableResult(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number1 = ($a[1] == null ? nil : $a[1])), (number2 = ($a[2] == null ? nil : $a[2])), $b; - tensionText = self.$getTensionText(number1, number2); - result = "" + "出来事表:" + (name) + "([" + (number1) + "," + (number2) + "]) > " + (text) + (tensionText); - return result; - }, $ShoujoTenrankai_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$getTensionText', $ShoujoTenrankai_getTensionText$2 = function $$getTensionText(number1, number2) { - var self = this, diff = nil; - - - diff = $rb_minus(number1, number2).$abs(); - if (diff['$=='](0)) { - return ""}; - return "" + "(テンション+" + (diff) + ")"; - }, $ShoujoTenrankai_getTensionText$2.$$arity = 2); - - Opal.def(self, '$getEventTableResult', $ShoujoTenrankai_getEventTableResult$3 = function $$getEventTableResult(table) { - var $a, $b, self = this, number1 = nil, number2 = nil, isOdd = nil, index = nil, text = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (number1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (number2 = ($a[0] == null ? nil : $a[0])), $b; - isOdd = number1['$even?'](); - index = $rb_minus(number2, 1); - if ($truthy(isOdd)) { - index = $rb_plus(index, 6)}; - text = self.$getTableValue(table['$[]'](index)); - if ($truthy(text['$nil?']())) { - return nil}; - return [text, number1, number2]; - }, $ShoujoTenrankai_getEventTableResult$3.$$arity = 1); - return Opal.const_set($nesting[0], 'EVENT_TABLES', $hash2(["SPRING", "SUMMER", "AUTUMN", "WINTER", "MORNING", "NOON", "AFTERNOON", "TWILIGHT", "NIGHT", "MIDNIGHT", "NORBLE", "MARCHEN", "COLONIAL", "SHELF", "LITTLE", "ELDER", "ATERIEL", "OPEN", "HAUNTED", "SIMPLE", "LARGE", "CORRIDOR", "STAIRS", "COSY", "TERRACE", "GARRET", "KITCHEN", "BATH", "REST", "CELLER", "LUMBER", "GARDEN", "WASTED", "RUIN", "SHORE"], {"SPRING": $hash2(["name", "table"], {"name": "春", "table": ["【奇・1】【花びら(純従)】(グッズ)が舞い込んで来ます。蝶だったかもしれません。", "【奇・2】【初めて見る花(純察)】(グッズ)が咲いています。", "【奇・3】春の香りがふと、強くただよいます。(ロマンティック+1)", "【奇・4】春の嵐が窓を打ち付けています。(ルナティック+1)", "【奇・5】鳥のさえずりが聞こえてきます。", "【奇・6】軽く汗ばむほどの陽気です。", "【偶・1】春霞がぼんやりと景色を包み込んでいます。(カタストロフ+1)", "【偶・2】花が散りました。", "【偶・3】しんしんと花冷えがします。", "【偶・4】春の雨が銀の紗をかけた様にさらさらと降っています。", "【偶・5】開け放した窓のカーテンを春風がやさしく揺らしています。(ハートフル+1)", "【偶・6】気持ちよさそうにしている生き物(【コンパニオン】から任意)がいます。"]}), "SUMMER": $hash2(["name", "table"], {"name": "夏", "table": ["【奇・1】建物の中に蔓草が入り込んでいます。(カタストロフ+1)", "【奇・2】大きな虹がかかっています。(ハートフル+1)", "【奇・3】稲妻が空を裂きます。", "【奇・4】むくむくの入道雲が遠くに見えます。", "【奇・5】虫の声が辺りを満たしています。", "【奇・6】激しい嵐が屋敷を揺すっています。(ロマンティック+1)", "【偶・1】雲の影がゆっくりと庭を横切っていきます。", "【偶・2】【夏の花(支純)】(グッズ)が咲き誇っています。", "【偶・3】風もなく、ひどく蒸し暑い日です。", "【偶・4】虫が一生懸命動き回っています。", "【偶・5】物陰からふと、涼しい風が吹いてきました。", "【偶・6】焼け付く日差しの中、黒々とした影が落ちています。(ルナティック+1)"]}), "AUTUMN": $hash2(["name", "table"], {"name": "秋", "table": ["【奇・1】たわわに実った果物があります。", "【奇・2】鳥の声が鋭く響き渡ります。(カタストロフ+1)", "【奇・3】芯の冷えた木枯らしが通り過ぎていきます。", "【奇・4】鬱々と長い秋の雨が降り続いています。", "【奇・5】空が不思議に紫がかって見えます。", "【奇・6】木々が鮮やかな色に染まっています。", "【偶・1】【秋の花(従純)】(グッズ)がひと群れになって咲いています。", "【偶・2】見事な夕焼けが辺り一面を染め上げます。(ロマンティック+1)", "【偶・3】ぱたりと物音がやみ、しんと静まりかえります。(ルナティック+1)", "【偶・4】吸い込まれるような青い空が高く広がっています。(ハートフル+1)", "【偶・5】【初めて見る木の実(純察)】(グッズ)が転がっています。", "【偶・6】【枯葉(従純)】(グッズ)がさくさく、さらさらと音を立てます。"]}), "WINTER": $hash2(["name", "table"], {"name": "冬", "table": ["【奇・1】太陽(月)に暈がかかっています。", "【奇・2】風花が舞っています。", "【奇・3】雪が積もっています。", "【奇・4】恐ろしい勢いの吹雪が屋敷を埋めていきます。(ルナティック+1)", "【奇・5】おだやかな小春日和です。(ハートフル+1)", "【奇・6】霙がぽしゃぽしゃと降っています。", "【偶・1】冬の空と空気が、硝子のように張り詰めています。", "【偶・2】薪を焚く暖かな匂いがただよっています。(ロマンティック+1)", "【偶・3】窓硝子が曇っています。", "【偶・4】【冬の花(従支)】(グッズ)が凛と咲いています。", "【偶・5】氷柱(霜柱、氷)が鋭い光を投げかけています。", "【偶・6】骸骨のようにそびえる冬の木の枝に、そこだけ青々とヤドリギが茂っています。(カタストロフ+1)"]}), "MORNING": $hash2(["name", "table"], {"name": "朝", "table": ["【奇・1】起きたら涙を流していました。", "【奇・2】眠ったのとは別の場所で目覚めました。(ルナティック+1)", "【奇・3】寝相が悪かったのか、痛い思いをして目覚めました。(ハートフル+1)", "【奇・4】朝露が輝いています。", "【奇・5】見事な朝焼けになりました。", "【奇・6】まだかなり眠気が残っています。(ロマンティック+1)", "【偶・1】むやみに爽快な気分です。", "【偶・2】なんだか体がこわばっていて、くたびれた感じがします。(カタストロフ+1)", "【偶・3】ひどく喉が渇いています。", "【偶・4】白い月がまだ空に残っています。", "【偶・5】最後の星が朝の光に飲み込まれる瞬間を見ました。", "【偶・6】鳥の声が響いています。"]}), "NOON": $hash2(["name", "table"], {"name": "昼", "table": ["【奇・1】なんだかじっとしていられません。", "【奇・2】奇妙なだるさを感じています。", "【奇・3】ひどくお腹がすいています。", "【奇・4】急に厚い雲が日差しを遮りました。", "【奇・5】薄い雲の向こうに、オパールの円盤のような太陽があります。(ロマンティック+1)", "【奇・6】なんだか無性にいらいらします。", "【偶・1】この世界に自分ひとりだけが取り残されたような気分に襲われました。(ルナティック+1)", "【偶・2】変に草木の緑が目に付きます。(カタストロフ+1)", "【偶・3】なんだか急に、寒気を感じました。", "【偶・4】さっぱりやる気が起きません。", "【偶・5】みんなで賑やかに遊んでいる声が聞こえてきます。", "【偶・6】目に触れるあらゆるものが輝いて見えます。(ハートフル+1)"]}), "AFTERNOON": $hash2(["name", "table"], {"name": "昼下がり", "table": ["【奇・1】快い眠気に襲われています。", "【奇・2】まだ食べ足りない感じがします。", "【奇・3】急に天気雨が降り出しました。(ロマンティック+1)", "【奇・4】雲の隙間から輝く光の矢が降り注いでいます。", "【奇・5】どこかから甘い匂いが漂ってきます。", "【奇・6】なんとはなしに物憂く、昼の日差しが憂鬱です。(ルナティック+1)", "【偶・1】元気が有り余っている感じがします。", "【偶・2】今まで吹いていた風がぴたりと止まりました。", "【偶・3】お日様の匂いがします。(ハートフル+1)", "【偶・4】一陣の風が吹きすぎてゆきました。", "【偶・5】何か重いものが落ちた音がしました。(カタストロフ+1)", "【偶・6】視線を感じました。"]}), "TWILIGHT": $hash2(["name", "table"], {"name": "黄昏", "table": ["【奇・1】人影を見たような気がします。(ルナティック+1)", "【奇・2】やけに色の薄い夕暮れで、なにもかもが灰色に見えます。", "【奇・3】鮮やかな夕焼けになりました。", "【奇・4】ふと、自分の影が気になって見つめてしまいました。(カタストロフ+1)", "【奇・5】窓硝子かなにかが、夕陽を照り返して輝いています。", "【奇・6】葉ずれの音が、やけに大きくざわめいています。", "【偶・1】一番星を見つけました。(ハートフル+1)", "【偶・2】物陰に夜の気配がわだかまっています。", "【偶・3】蝙蝠の影らしきものが音もなく舞っています。", "【偶・4】木の枝にびっしりと、鳥たちが身を寄せ合っています。", "【偶・5】むやみに月が大きく見えます。", "【偶・6】ものの境い目があいまいになり、全てが溶けて混ざり合ってしまいそうです。(ロマンティック+1)"]}), "NIGHT": $hash2(["name", "table"], {"name": "夜中", "table": ["【奇・1】なかなか眠くなれません。", "【奇・2】ひどく眠くて、今にも寝てしまいそうです。(ハートフル+1)", "【奇・3】赤い月が空に低くかかっています。", "【奇・4】月の青い光が降り注いでいます。(ロマンティック+1)", "【奇・5】特に星の綺麗な夜です。", "【奇・6】灯していた明かりがざわめくように揺らいでいます。(ルナティック+1)", "【偶・1】月を隠しながら、薄い雲が通り過ぎていきます。", "【偶・2】星一つ見えない闇夜です。", "【偶・3】どこからか談笑の声が聞こえた気がします。", "【偶・4】流れ星が流れました。", "【偶・5】コトリと硬い音がしました。(カタストロフ+1)", "【偶・6】どこからかとても美味しそうな匂いがただよってきます。"]}), "MIDNIGHT": $hash2(["name", "table"], {"name": "夜更け", "table": ["【奇・1】時計の音がやけに大きく響いています。(カタストロフ+1)", "【奇・2】夢から醒めましたが、どんな夢か覚えていません。", "【奇・3】足音を聞いた気がします。", "【奇・4】ぼそぼそと話す声を聞いた気がします。(ロマンティック+1)", "【奇・5】ひどく喉が渇いています。", "【奇・6】ひどくお腹がすいています。(ハートフル+1)", "【偶・1】寝苦しさを感じています。", "【偶・2】眠気が全く訪れません。", "【偶・3】急に月の光を浴びました。(ルナティック+1)", "【偶・4】見慣れたものの影が全く別のものに見えました。", "【偶・5】闇がやけに深く感じられます。", "【偶・6】違和感のある香りを感じました。"]}), "NORBLE": $hash2(["name", "table"], {"name": "貴族趣味", "table": ["【奇・1】毛足の長い絨毯に足音を吸い取られてしまいました。", "【奇・2】見とれるほど豪奢な調度があります。", "【奇・3】気後れするほど豪奢な調度があります。", "【奇・4】誰かがどこかから窺っているような気がしました。(ルナティック+1)", "【奇・5】曇り一つ無いところに思わず手をついてしまいました。", "【奇・6】窮屈なくらい、気品にあふれています。", "【偶・1】仰々しすぎて、ちょっと嫌味に思えなくもありません。", "【偶・2】豪華でよそ行きな雰囲気の中に、生活の気配がちょっとだけ、混ざりこんでいます。(ハートフル+1)", "【偶・3】【素敵なオブジェ(支押)】(グッズ)が飾られています。", "【偶・4】わけもなく空しさが募りました。(ロマンティック+1)", "【偶・5】飾り縁のような窓に切り取られた外の景色が、ひどく遠く見えます。(カタストロフ+1)", "【偶・6】いつか聞いたお話の、お姫様を思い出しました。"]}), "MARCHEN": $hash2(["name", "table"], {"name": "メルヒェン", "table": ["【奇・1】懐かしさを覚える木の香りがします。(カタストロフ+1)", "【奇・2】周りにあるのはなんの変哲もないものばかりです。", "【奇・3】部屋のどこかがきしみました。", "【奇・4】小さな音がします。", "【奇・5】生活のぬくもりが、確かに刻まれています。(ハートフル+1)", "【奇・6】どこかで読んだお話の記憶と、目の前の風景が重なりました。", "【偶・1】もったりとした野暮ったさにあふれています。", "【偶・2】よく乾いたハーブと干草の香りがわずかに漂っています。(ロマンティック+1)", "【偶・3】飾り気がなくとも使いやすそうな調度が、存在感を放っています。", "【偶・4】おいしそうな匂いが一度だけ、鼻をくすぐりました。", "【偶・5】歩くと、床がことことと足音をたてます。", "【偶・6】なにかがひとつ、足りない気がします。(ルナティック+1)"]}), "COLONIAL": $hash2(["name", "table"], {"name": "コロニアル", "table": ["【奇・1】重厚な調度が征服欲を刺激します。", "【奇・2】床に傷を見つけてしまいました。", "【奇・3】重厚な調度に頼もしさを感じます。", "【奇・4】堅固すぎて、逆にいわく言いがたい不吉さを感じます。(カタストロフ+1)", "【奇・5】壁になにかが架けられていた跡が残っています。", "【奇・6】ぐるっと回る椅子がなんだかすごく魅力的です。(ハートフル+1)", "【偶・1】しっかりした錠がだらしなく開いていました。", "【偶・2】威厳を演出しすぎていて、かえって下品かもしれません。", "【偶・3】外からの光が不思議な静けさをもたらしました。(ロマンティック+1)", "【偶・4】靴音が立ちました。(ルナティック+1)", "【偶・5】革の匂いがかすかに漂っています。", "【偶・6】そこの頑丈そうな机は、なんだか座り心地がよさそうです。"]}), "SHELF": $hash2(["name", "table"], {"name": "本棚のある場所", "table": ["【奇・1】明らかに踏み台に使ったらしく、【大判の本(打押)】(グッズ)が積み上げてあります。(ハートフル+1)", "【奇・2】古びた紙の匂いが辺りを満たしています。", "【奇・3】【薄い本(打察)】(グッズ)が一冊、ぱたりと音を立てて倒れました。", "【奇・4】なぜか本棚の一段がまるごと、からっぽになっています。", "【奇・5】【気になる本(純押)】(グッズ)があるのですが、本棚の天辺に乗っている上非常に重そうです。(ルナティック+1)", "【奇・6】【破り取られた絵本の頁(支従)】(グッズ)が一葉、無残な破れ目をさらしています。", "【偶・1】【広げっぱなしの本(支押)】(グッズ)にひどい落書きがされています。", "【偶・2】全集の一冊が欠けていました。(ロマンティック+1)", "【偶・3】棚にきちんと本が納められておらず、バラバラで乱雑に押し込まれています。", "【偶・4】本の隙間からなにかの気配を感じた気がします。", "【偶・5】インクが乾いて干からびた、【インク瓶(従察)】(グッズ)と【万年筆(打押)】(グッズ)がテーブルに乗っています。(カタストロフ+1)", "【偶・6】【押し花(純察)】(グッズ)が一輪、落ちていました。"]}), "LITTLE": $hash2(["name", "table"], {"name": "小さな妹の部屋", "table": ["【奇・1】つまづいてしまった【玩具(従純)】(グッズ)が、ころりと可愛らしい音を立てました。", "【奇・2】シーツ(テーブルクロス)がくちゃくちゃです。", "【奇・3】とんでもないところに食べこぼしの跡を見つけました。", "【奇・4】過ぎたおいたの跡が、部屋に華々しく残っています。", "【奇・5】こっそり隠したつもりのおやつが山を成しています。", "【奇・6】脱ぎ散らかされた服が所在なさげにふて寝しています。", "【偶・1】やさしい子守歌を思い出しました。(ハートフル+1)", "【偶・2】見る物全てがいちいち勘に障ります。(ルナティック+1)", "【偶・3】かわいらしい【食器(純押)】(グッズ)が置いてありました。(ロマンティック+1)", "【偶・4】わけもなく、涙がこぼれてきます。", "【偶・5】壊してしまった【がらくた(純従)】(グッズ)が、こっそり隠してありました。", "【偶・6】ふと、この棲み処の主は、どんな素敵な人になるだろう、と思いました。(カタストロフ+1)"]}), "ELDER": $hash2(["name", "table"], {"name": "素敵なお姉さまの部屋", "table": ["【奇・1】床に映った影が、ゆっくりと動いていきます。(カタストロフ+1)", "【奇・2】きゅっ、と音が立ちました。", "【奇・3】自然に背筋が伸びてしまいます。", "【奇・4】ふとほのかに甘い、柔らかな香りが漂いました。(ロマンティック+1)", "【奇・5】ほのかに確かににじみ出る魅力に、ちょっと嫉妬してしまいます。", "【奇・6】素敵な【ベルト(支従)】がありました。(ルナティック+1)", "【偶・1】お茶が冷めていました。", "【偶・2】ちょっとくたびれた【可愛らしい小物(純察)】(グッズ)が、物陰にこっそり置いてありました。", "【偶・3】衣擦れの音がしました。", "【偶・4】ダイビングにもってこいのベッドがあります。(ハートフル+1)", "【偶・5】気後れしそうなほど完成度の高い、【手作り品(支押)】(グッズ)が無造作に置いてあります。", "【偶・6】【部屋着(従純)】(コーディネート)がハンガーにかけられています。"]}), "ATERIEL": $hash2(["name", "table"], {"name": "アトリエ", "table": ["【奇・1】棚に【道具(打支)】(グッズ)がきちんと整頓されています。", "【奇・2】【メモや図面(支押)】(グッズ)が書き散らされています。", "【奇・3】【壊れた道具(従察)】が積み上げられています。", "【奇・4】【作りかけらしい作品(純押)】(グッズ)が無造作に放置されています。", "【奇・5】めちゃくちゃに壊された作品の残骸が散乱しています。(ルナティック+1)", "【奇・6】【見慣れない道具(打純)】(グッズ)が大切そうに置いてあります。", "【偶・1】食べかけの食事がそのままになっています。", "【偶・2】【ジャケット(打純)】(グッズ)が脱ぎ捨てられています。(ロマンティック+1)", "【偶・3】積み上げられていたものが、派手な音を立てて崩れました。", "【偶・4】何気なく触れたところに、インク(や絵の具等)がべっとりついていました。", "【偶・5】引き出しが一つ、丸々抜き去られています。(カタストロフ+1)", "【偶・6】「作業中、入るな!」と書かれた【紐付きのプレート(支押)】(グッズ)が手に取りやすい位置に置いてあります。(ハートフル+1)"]}), "OPEN": $hash2(["name", "table"], {"name": "集まれる場所", "table": ["【奇・1】かつての楽しい出来事の余韻が、伝わってくるような気がします。(ハートフル+1)", "【奇・2】テーブルクロスのしみが、涙の跡のように思えました。(ロマンティック+1)", "【奇・3】鉄錆くさい臭いがかすかに鼻を突きます。", "【奇・4】ぜんぜん片付けられておらず、散らかり放題です。", "【奇・5】なぜか1枚だけ、【割れた皿(支押)】(グッズ)がそっくりそのまま床に放置されています。", "【奇・6】誰かが貼った「RESERVED(予約済み)」の【張り紙(支打)】(グッズ)が、堂々と居座っています。", "【偶・1】整理されすぎていて、人のぬくもりが感じられません。", "【偶・2】部屋の片隅に、布にくるまれた何か大きなモノが置いてあります。", "【偶・3】完璧な作法で【食器(従察)】(グッズ)が並べられていますが、誰も、また何も、出てくる気配はありません。", "【偶・4】壁の向こうを、大勢が賑やかに通り過ぎてゆく気配がします。(カタストロフ+1)", "【偶・5】直前に行われたパーティで余ったらしいお菓子が、「ご自由に」の書置きとともに残されています。", "【偶・6】壁に【ナイフ(支従)】(グッズ)が突き立っています。(ルナティック+1)"]}), "HAUNTED": $hash2(["name", "table"], {"name": "精神的瑕疵物件", "table": ["【奇・1】赤黒い染みを見つけてしまいました。", "【奇・2】叩くような、はじけるような音が断続的に聞こえるような気がします。", "【奇・3】悪寒がします。", "【奇・4】ふと手を触れた場所が、不自然に冷たく湿って感じました。", "【奇・5】何人か余分に、人の気配を感じるような気がしてしかたありません。", "【奇・6】ふっ、と辺りがいくらか暗くなって、また元に戻りました。", "【偶・1】細く開いていた隙間が閉じる瞬間を見てしまいました。(カタストロフ+1)", "【偶・2】何かが足をするりと撫でました。(ルナティック+1)", "【偶・3】耳元でつぶやきが聞こえました。多分。(ロマンティック+1)", "【偶・4】出た……と思ったらものの影でした。(ハートフル+1)", "【偶・5】空気がゆっくりと渦をまいて、肌を撫でています。", "【偶・6】うっすらと手形がついています。"]}), "SIMPLE": $hash2(["name", "table"], {"name": "侘び住まい", "table": ["【奇・1】若干、風通しがよすぎるようです。", "【奇・2】いろいろすっきりしています。", "【奇・3】壁のひびを見つけました。", "【奇・4】隅っこに穴が開いています。", "【奇・5】思わず深呼吸してしまいました。", "【奇・6】壁と柱の隙間から、外の光が細く漏れてきます。", "【偶・1】ふと気づくと、掃除したらよさそうな場所を探している自分がいます。(ハートフル+1)", "【偶・2】ぱらっと何かこぼれた音がしました。", "【偶・3】軋んだ音がした瞬間、棲み処全体が傾いでいくような錯覚に襲われました。(ルナティック+1)", "【偶・4】使い込まれた艶が用の美を控えめに放っています。(ロマンティック+1)", "【偶・5】二度と落ちなさそうな汚れがこびりついています。", "【偶・6】このまま誰かの思い出の中に閉じこめられてしまいそうな気分になりました。(カタストロフ+1)"]}), "LARGE": $hash2(["name", "table"], {"name": "広い場所", "table": ["【奇・1】がらんとした広さに、胸を衝かれました。", "【奇・2】誰かの残り香が、ほのかに甘く漂っています。(ロマンティック+1)", "【奇・3】扉がふいに開きましたが、誰も入ってきません。(カタストロフ+1)", "【奇・4】自分の足音がやけに大きく響き渡りました。", "【奇・5】ふともらした独り言が、広い部屋の中にぽつりと消えていきました。(ルナティック+1)", "【奇・6】壁に素敵な絵が飾られています。", "【偶・1】部屋の片隅に、壊れたオブジェが打ち捨てられています。", "【偶・2】掃除道具が出しっぱなしです。(ハートフル+1)", "【偶・3】床に派手な傷がついています。", "【偶・4】鉢植えが枯れています。", "【偶・5】不意に空気が揺れ動くのを感じました。", "【偶・6】天井がきしんだような気がします。"]}), "CORRIDOR": $hash2(["name", "table"], {"name": "廊下", "table": ["【奇・1】窓が開け放たれています。(カタストロフ+1)", "【奇・2】パタン、と扉の閉まる音がしました。", "【奇・3】人影が、向こうの曲がり角に姿を消したような気がします。(ロマンティック+1)", "【奇・4】壁のランプが落ちて割れています。", "【奇・5】天井の染みにふと目を奪われました。", "【奇・6】壁に掛けられた絵がわずかに傾いています。", "【偶・1】愛を誓うささやかな落書きがありました。(ハートフル+1)", "【偶・2】壁紙が破れ、小さな影を作っています。", "【偶・3】絨毯が擦り切れています。", "【偶・4】自分の立てた音がやけに大きく耳に残りました。(ルナティック+1)", "【偶・5】【誰かの落し物(打察)】(グッズ)が落ちています。", "【偶・6】空っぽの飾り棚が置かれています。"]}), "STAIRS": $hash2(["name", "table"], {"name": "階段", "table": ["【奇・1】踊り場に大きな姿見が掛けられています。(カタストロフ+1)", "【奇・2】手すりが使い込まれたつややかな輝きを放っています。(ハートフル+1)", "【奇・3】手すりの一部が壊れています。", "【奇・4】重いものをぶつけた痕が残っています。", "【奇・5】【片っぽだけの靴(従純)】(グッズ)残されていました。(ロマンティック+1)", "【奇・6】段が嫌な音を立てて大きくきしみました。", "【偶・1】隅に埃がたまっています。", "【偶・2】なぜか、壊れた家具が階段の途中に積み上げてあります。", "【偶・3】上の階から誰かの足音が聞こえてきます。", "【偶・4】下の階からぼそぼそと声が聞こえたような気がします。(ルナティック+1)", "【偶・5】差し込む日差しが段に複雑な陰影を作っています。", "【偶・6】一段踏み外しました。"]}), "COSY": $hash2(["name", "table"], {"name": "居心地のいい場所", "table": ["【奇・1】一瞬、物音が全て途絶えました。", "【奇・2】壁の模様が動いたような気がします。", "【奇・3】蔦が少しばかり這いこんでいました。(カタストロフ+1)", "【奇・4】妙な息苦しさを覚えました。", "【奇・5】部屋のどこかがきしみました。", "【奇・6】小さな明かりがあかあかと揺れています。(ハートフル+1)", "【偶・1】梁の向こうになにかの気配を感じました。", "【偶・2】窓が急に音を立てました。", "【偶・3】敷物のすみがわずかに盛り上がっています。(ルナティック+1)", "【偶・4】何の前触れもなく、椅子が倒れました。", "【偶・5】わけもなく寂しさが募ります。(ロマンティック+1)", "【偶・6】軽い眠気に教われました。"]}), "TERRACE": $hash2(["name", "table"], {"name": "テラス・ベランダ", "table": ["【奇・1】木の枝や木の葉が積もっています。", "【奇・2】【小鳥(純察)】(コンパニオン)がてすりでさえずっています。", "【奇・3】誰かの洗濯物が風に翻っています。(ハートフル+1)", "【奇・4】てすりが壊れています。", "【奇・5】バタン、と扉(窓)の閉ざされる音がしました。", "【奇・6】テラスから覗く部屋の中が、暗く影に沈んでいます。(カタストロフ+1)", "【偶・1】下の方から、楽しげなさざめきが聞こえた気がします。", "【偶・2】強い風が通り過ぎました。", "【偶・3】なにかの影が上を通り過ぎました。(ルナティック+1)", "【偶・4】雨ざらしのテーブルと椅子が一揃いあります。", "【偶・5】雨樋から雫がしたたっています。(ロマンティック+1)", "【偶・6】軒(窓、破風)の飾りが壊れ、【かけら(従察)】(グッズ)が落ちています。"]}), "GARRET": $hash2(["name", "table"], {"name": "屋根裏", "table": ["【奇・1】隙間風が【空っぽの小箱(打支)】(グッズ)を揺らして床に落としました。", "【奇・2】小さな窓から差し込む日差しの中に、埃が舞っています。(ロマンティック+1)", "【奇・3】【古ぼけてほつれた衣装(従純)】(コーディネート)が見つかりました。(ハートフル+1)", "【奇・4】クローゼットの扉が、ほんのわずか開いています。", "【奇・5】【片手(片足)がもげたぬいぐるみ(純支)】(グッズ)が見つかりました。", "【奇・6】【ガラスの破片(支純)】(グッズ)で小さな傷を作ってしまいました。", "【偶・1】鍵穴のない、頑丈で重たい大きな箱があります。", "【偶・2】埃だらけのクッションが積まれています。", "【偶・3】がらくたにかぶせられた埃避けの布がかすかに揺れています。(カタストロフ+1)", "【偶・4】蜘蛛の巣がかかっています。", "【偶・5】【蛾の死骸(従察)】(グッズ)を見つけました。", "【偶・6】ねずみかなにかが壁の中を駆け抜けていく小さな物音がしました。(ルナティック+1)"]}), "KITCHEN": $hash2(["name", "table"], {"name": "台所", "table": ["【奇・1】【よく洗われた食器(従純)】(グッズ)が輝きを放っています。(ハートフル+1)", "【奇・2】【銀器(支打)】(グッズ)がくすんでしまっています。", "【奇・3】水の樽がほとんど空になっていました。", "【奇・4】【汚れた食器(従支)】(グッズ)が流しを占領しています。", "【奇・5】【生ごみ(従支)】(グッズ)が異臭を放っています。(ルナティック+1)", "【奇・6】血痕が点々と散らばっています。", "【偶・1】【ジャムや砂糖漬けの瓶(純打)】が宝石の列のように並んでいます。", "【偶・2】鍋がコトコトと幸せそうな音を立てていますが、人が見当たりません。(カタストロフ+1)", "【偶・3】ついさっきまで人が立ち働いていたらしく、ぬくもりがまだ残っています。(ロマンティック+1)", "【偶・4】蟻の列が一生懸命おつかいに励んでいます。", "【偶・5】隅の方に【大きなナメクジ(純従)】(コンパニオン)がへばりついています。", "【偶・6】分捕り品に齧り付いている【ねずみ(支従)】(コンパニオン)と目が合ってしまいました。"]}), "BATH": $hash2(["name", "table"], {"name": "浴室", "table": ["【奇・1】盛大に滑って転んでしまいました。(ハートフル+1)", "【奇・2】下水の饐えた匂いがします。", "【奇・3】天井から雫がやけにしたたっています。", "【奇・4】【お風呂用のおもちゃ(純従)】(グッズ)がさみしげに転がっています。(カタストロフ+1)", "【奇・5】空のバスタブの排水溝に、湿った長い髪の毛が絡んでいます。", "【奇・6】バスタブに泡だらけのお湯が残っています。", "【偶・1】シャワーが外れたまま床を這っています。(ロマンティック+1)", "【偶・2】床のタイルにひどいひびが入っています。", "【偶・3】ここしばらく、誰も使った形跡がなく空気が乾いてすらいます。", "【偶・4】【誰かの服(従打)】(コーディネート)がバスタブに投げ込まれ、ぐちゃぐちゃになっています。", "【偶・5】不健康にじめついていて、どこもかしこもカビだらけです。", "【偶・6】なにかが這い回ったような跡がありました。(ルナティック+1)"]}), "REST": $hash2(["name", "table"], {"name": "化粧室", "table": ["【奇・1】鏡の中の自分が別の顔をしていたような気がします。(カタストロフ+1)", "【奇・2】鬱陶しく虫が飛び回っています。", "【奇・3】蛇口から水がしたたっています。", "【奇・4】不快な匂いが強いようです。", "【奇・5】【清潔なタオル(純従)】(グッズ)が整えられています。(ハートフル+1)", "【奇・6】壊れているらしい便器にガラクタがつっこんであります。", "【偶・1】閉ざされた個室の中で、ぼそぼそと声がしたような気がします。(ロマンティック+1)", "【偶・2】誰かの【ささやかなアクセサリ(支打)】(グッズ)が置き忘れられています。", "【偶・3】【清掃用具(打従)】(グッズ)が放り出されています。", "【偶・4】扉の向こうで人の気配が立ち去りました。(ルナティック+1)", "【偶・5】清掃用具のクローゼットの扉の下から、水が漏れ広がっています。", "【偶・6】換気窓の近くで空気がゆるく蠢いています。"]}), "CELLER": $hash2(["name", "table"], {"name": "地下倉庫", "table": ["【奇・1】なにかべとべとしたものに触ってしまいました。", "【奇・2】ひんやりとした空気がまとわりついてきます。", "【奇・3】かすかに悪臭が漂ってきます。", "【奇・4】作業台のようなものの上を、赤黒い染みが覆っています。(ルナティック+1)", "【奇・5】【ムカデ(純支)】(コンパニオン)がじっとしています。", "【奇・6】【重たそうな麻袋(従支)】(コンテナ)が積み上げられています。", "【偶・1】灯されたランプがチリチリと小さな音を立てました。(カタストロフ+1)", "【偶・2】積まれた石炭に、【スコップ(支押)】(グッズ)が突っ込まれています。", "【偶・3】食べ物を収めた棚があります。(ハートフル+1)", "【偶・4】無愛想でそっけない造りの椅子が転がっています。", "【偶・5】床の一部が磨り減り、妙に滑らかになっています。", "【偶・6】梁の上から、視線を感じました。(ルナティック+1)"]}), "LUMBER": $hash2(["name", "table"], {"name": "物置", "table": ["【奇・1】壁の隙間の向こうを何かの影が通り過ぎました。", "【奇・2】【気になる箱(従支)】(コンテナ)があるのですが、がらくたの山に埋もれて手が出せません。(ロマンティック+1)", "【奇・3】積まれていたがらくたの一つが、目を逸らした隙に消えたような気がします。(ルナティック+1)", "【奇・4】壊れた家具の下で、【人形(純支)】(グッズ)が潰されています。", "【奇・5】【虫の死骸(純打)】(グッズ)を見つけました。", "【奇・6】【安っぽいヒカリモノ(純打)】(グッズ)がたくさん詰まったバスケットがあります。(ハートフル+1)", "【偶・1】【庭いじりの道具(従支)】(グッズ)が無造作に立てかけてあります。", "【偶・2】黴くさい臭いで息が詰まりそうです。", "【偶・3】どこかでがらくたが崩れ、大きな音を立てました。", "【偶・4】床の一部が抜けています。", "【偶・5】片隅の暗がりから視線を感じました。", "【偶・6】なんの前触れもなく、物置全体が小さくきしみました。(カタストロフ+1)"]}), "GARDEN": $hash2(["name", "table"], {"name": "庭園", "table": ["【奇・1】【季節の花(純支)】(グッズ)が美しく咲き乱れています。(ハートフル+1)", "【奇・2】せっかくの花壇が、無残に踏みにじられなぎ倒されています。", "【奇・3】【庭いじりの道具(従押)】(グッズ)が放り出してあります。", "【奇・4】物陰から小動物のような影が逃げ去っていきました。", "【奇・5】手入れが悪く、栽培物が雑草に押され気味です。", "【奇・6】枯れてしまった苗が、そのまま放置されています。(カタストロフ+1)", "【偶・1】【虫(純従)】(コンパニオン)が悠々と這っています。", "【偶・2】ふいの強い風に、草木がざわりと不安な音を立てました。", "【偶・3】どこからともなく、鮮烈な花の香りが漂ってきます。(ロマンティック+1)", "【偶・4】藤棚の作る蔭が、素敵に居心地よく見えます。", "【偶・5】植え込みがよく育っているのですが、茂りすぎてなんだか怖いようです。(ルナティック+1)", "【偶・6】【花の名前を書いた札(打純)】(グッズ)が打ち棄てられています。"]}), "WASTED": $hash2(["name", "table"], {"name": "廃園", "table": ["【奇・1】伸び放題の草が風にざわざわとざわめいています。", "【奇・2】背丈よりも高い、見上げるような草むらが生い茂っています。", "【奇・3】【清楚な野の花(純従)】(グッズ)が端然と咲いています。(ハートフル+1)", "【奇・4】草むらの中をなにかがざわざわと通り過ぎていきます。", "【奇・5】花壇の残骸に躓きました。", "【奇・6】アーチの残骸に絡む枯れた蔓草の上から、元気な蔓草が巻きついています。(ロマンティック+1)", "【偶・1】枯れた噴水があります。", "【偶・2】でこぼこに割れた敷石の隙間から、雑草が茂っています。", "【偶・3】全く草の生えていない一角があります。(カタストロフ+1)", "【偶・4】綺麗な彫刻の、半分くらいに割れた【かけら(従察)】(グッズ)があります。", "【偶・5】大きな虫瘤があります。", "【偶・6】虫が素早く、石の下に這いこんでいきました。(ルナティック+1)"]}), "RUIN": $hash2(["name", "table"], {"name": "廃屋", "table": ["【奇・1】天井や床が派手に崩壊していて、踏み込めない一角があります。", "【奇・2】何か金属の部品が真っ二つになっていました。", "【奇・3】硝子の破片が散乱しています。", "【奇・4】ひどい隙間風が這いこんできています。", "【奇・5】絡み付いた茨に可憐な花が付いていました。(ロマンティック+1)", "【奇・6】壊れてひっくり返った家具が黙然としています。", "【偶・1】【汚れた人形(従察)】(グッズ)が転がっています。", "【偶・2】あたり一面を、茨(蔦)がびっしり覆っています。", "【偶・3】紐状のものが垂れ下がっています。(ルナティック+1)", "【偶・4】文字が乱れていて【読めないノート(打押)】(グッズ)が置き去られていました。(カタストロフ+1)", "【偶・5】壁が崩れていますが、まだ穴にはなっていません。", "【偶・6】虫がせっせとなにかを運んでいます。(ハートフル+1)"]}), "SHORE": $hash2(["name", "table"], {"name": "水のほとり", "table": ["【奇・1】水面に波紋が広がっていきます。", "【奇・2】視界の外で水音がしました。", "【奇・3】生臭い匂いがします。", "【奇・4】湿った空気が肌を撫でます。(ロマンティック+1)", "【奇・5】うっかり足元を濡らせてしまいました。", "【奇・6】遠くを水鳥が滑っていきました。(ハートフル+1)", "【偶・1】水面に映した自分の顔が、不自然にくっきりとしていました。(カタストロフ+1)", "【偶・2】水がやけに濁っています。", "【偶・3】底の方に何か沈んでいるのを見てしまったような気がします。", "【偶・4】【ガラクタ(打従)】(グッズ)が所在なさげに浮かんでいます。", "【偶・5】一瞬寒気に襲われました。(ルナティック+1)", "【偶・6】水の中で、魚の影が翻りました。"]})}).$freeze()); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Skynauts.js b/src/assets/dicebot/Skynauts.js deleted file mode 100644 index 4d7269482..000000000 --- a/src/assets/dicebot/Skynauts.js +++ /dev/null @@ -1,363 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash = Opal.hash, $hash2 = Opal.hash2; - - Opal.add_stubs(['$setPrefixes', '$debug', '$getJudgeResult', '$nil?', '$navigationResult', '$getFireResult', '$getBomberResult', '$getAvoidResult', '$match', '$empty?', '$[]', '$to_i', '$roll', '$<=', '$floor', '$/', '$+', '$freeze', '$to_s', '$min', '$getFirePoint', '$getFirePointText', '$!=', '$getDirectionInfo', '$times', '$<<', '$each', '$split', '$getMovePoint', '$isInMapPosition', '$join', '$===', '$slice', '$last_match', '$scanFirePoints', '$size', '$gsub', '$[]=', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Skynauts'); - - var $nesting = [self].concat($parent_nesting), $Skynauts_initialize$1, $Skynauts_rollDiceCommand$2, $Skynauts_getJudgeResult$3, $Skynauts_navigationResult$4, $Skynauts_getDirectionInfo$5, $Skynauts_getFireResult$6, $Skynauts_getFirePoint$7, $Skynauts_getFirePointText$10, $Skynauts_isInMapPosition$13, $Skynauts_getMovePoint$14, $Skynauts_getBomberResult$15, $Skynauts_getAvoidResult$16, $Skynauts_scanFirePoints$17; - - - Opal.const_set($nesting[0], 'ID', "Skynauts"); - Opal.const_set($nesting[0], 'NAME', "歯車の塔の探空士"); - Opal.const_set($nesting[0], 'SORT_KEY', "すかいのおつ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "◆判定 (SNn)、(2D6<=n) n:目標値(省略時:7)\n" + " 例)SN5 SN5 SN(3+2)\n" + "◆航行チェック (NV+n) n:修正値(省略時:0)\n" + " 例)NV NV+1\n" + "◆ダメージチェック (Dx/y@m) x:ダメージ左側の値、y:ダメージ右側の値\n" + " m:《弾道学》(省略可)上:8、下:2、左:4、右:6\n" + " 飛空艇シート外の座標は()が付きます。\n" + " 例) D/4 D19/2 D/3@8 D[大揺れ]/2\n" + "◆砲撃判定+ダメージチェック (BOMn/Dx/y@m) n:目標値(省略時:7)\n" + " x:ダメージ左側の値、y:ダメージ右側の値\n" + " m:《弾道学》(省略可)上:8、下:2、左:4、右:6\n" + " 例) BOM/D/4 BOM9/D19@4\n" + "◆《回避運動》 (AVOn@mXX) n:目標値(省略時:7)\n" + " m:回避方向。上:8、下:2、左:4、右:6、XX:ダメージチェック結果\n" + " 例)\n" + " AVO9@8[縦1,横4],[縦2,横6],[縦3,横8] AVO@2[縦6,横4],[縦2,横6]\n"); - self.$setPrefixes(["D.*", "2[Dd]6<=.*", "SN.*", "NV.*", "AVO.*", "BOM.*"]); - - Opal.def(self, '$initialize', $Skynauts_initialize$1 = function $$initialize() { - var $iter = $Skynauts_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Skynauts_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Skynauts_initialize$1, false), $zuper, $iter); - return (self.fractionType = "omit"); - }, $Skynauts_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Skynauts_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, result = nil; - - - self.$debug("\n=======================================\n"); - self.$debug("rollDiceCommand command", command); - result = self.$getJudgeResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - result = self.$navigationResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - result = self.$getFireResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - result = self.$getBomberResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - result = self.$getAvoidResult(command); - if ($truthy(result['$nil?']())) { - } else { - return result - }; - self.$debug("rollCommand result"); - return nil; - }, $Skynauts_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$getJudgeResult', $Skynauts_getJudgeResult$3 = function $$getJudgeResult(command) { - var $a, $b, self = this, m = nil, target = nil, total = nil, diceText = nil, result = nil, text = nil; - - - if ($truthy((m = ($truthy($a = /^2D6<=(\d)$/i.$match(command)) ? $a : /^SN(\d*)$/i.$match(command))))) { - } else { - return nil - }; - self.$debug("====getJudgeResult===="); - target = (function() {if ($truthy(m['$[]'](1)['$empty?']())) { - return 7 - } else { - return m['$[]'](1).$to_i() - }; return nil; })(); - self.$debug("目標値", target); - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy($rb_le(total, 2))) { - result = "ファンブル" - } else if ($truthy($rb_le(total, target))) { - result = "成功" - } else { - result = "失敗" - }; - text = "" + "(2D6<=" + (target) + ") > " + (total) + "[" + (diceText) + "] > " + (total) + " > " + (result); - return text; - }, $Skynauts_getJudgeResult$3.$$arity = 1); - - Opal.def(self, '$navigationResult', $Skynauts_navigationResult$4 = function $$navigationResult(command) { - var $a, $b, self = this, m = nil, bonus = nil, total = nil, movePointBase = nil, movePoint = nil, text = nil; - - - if ($truthy((m = /^NV(\+(\d+))?$/.$match(command)))) { - } else { - return nil - }; - self.$debug("====navigationResult===="); - bonus = m['$[]'](2).$to_i(); - self.$debug("移動修正", bonus); - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), $b; - movePointBase = (function() {if ($truthy($rb_le($rb_divide(total, 2).$floor(), 0))) { - return 1 - } else { - return $rb_divide(total, 2).$floor() - }; return nil; })(); - movePoint = $rb_plus(movePointBase, bonus); - self.$debug("移動エリア数", movePoint); - text = "" + "航行チェック(最低1) (1D6/2+" + (bonus) + ") > " + (total) + " /2+" + (bonus) + " > "; - text = $rb_plus(text, "" + (movePointBase) + "+" + (bonus) + " > " + (movePoint) + "エリア進む"); - return text; - }, $Skynauts_navigationResult$4.$$arity = 1); - Opal.const_set($nesting[0], 'DIRECTION_INFOS', $hash(1, $hash2(["name", "position_diff"], {"name": "左下", "position_diff": $hash2(["x", "y"], {"x": -1, "y": 1})}), 2, $hash2(["name", "position_diff"], {"name": "下", "position_diff": $hash2(["x", "y"], {"x": 0, "y": 1})}), 3, $hash2(["name", "position_diff"], {"name": "右下", "position_diff": $hash2(["x", "y"], {"x": 1, "y": 1})}), 4, $hash2(["name", "position_diff"], {"name": "左", "position_diff": $hash2(["x", "y"], {"x": -1, "y": 0})}), 6, $hash2(["name", "position_diff"], {"name": "右", "position_diff": $hash2(["x", "y"], {"x": 1, "y": 0})}), 7, $hash2(["name", "position_diff"], {"name": "左上", "position_diff": $hash2(["x", "y"], {"x": -1, "y": -1})}), 8, $hash2(["name", "position_diff"], {"name": "上", "position_diff": $hash2(["x", "y"], {"x": 0, "y": -1})}), 9, $hash2(["name", "position_diff"], {"name": "右上", "position_diff": $hash2(["x", "y"], {"x": 1, "y": -1})})).$freeze()); - - Opal.def(self, '$getDirectionInfo', $Skynauts_getDirectionInfo$5 = function $$getDirectionInfo(direction, key, defaultValue) { - var self = this, info = nil; - - - - if (defaultValue == null) { - defaultValue = nil; - }; - info = $$($nesting, 'DIRECTION_INFOS')['$[]'](direction.$to_i()); - if ($truthy(info['$nil?']())) { - return defaultValue}; - return info['$[]'](key); - }, $Skynauts_getDirectionInfo$5.$$arity = -3); - - Opal.def(self, '$getFireResult', $Skynauts_getFireResult$6 = function $$getFireResult(command) { - var self = this, m = nil, fireCount = nil, fireRange = nil, ballistics = nil, fireCountMax = nil, firePoint = nil, fireText = nil, text = nil; - - - if ($truthy((m = /^D([12346789]*)(\[.+\])*\/(\d+)(@([2468]))?$/.$match(command)))) { - } else { - return nil - }; - self.$debug("====getFireResult===="); - fireCount = m['$[]'](3).$to_i(); - fireRange = m['$[]'](1).$to_s(); - ballistics = m['$[]'](5).$to_i(); - self.$debug("fireCount", fireCount); - self.$debug("fireRange", fireRange); - self.$debug("ballistics", ballistics); - fireCountMax = 25; - fireCount = [fireCount, fireCountMax].$min(); - firePoint = self.$getFirePoint(fireRange, fireCount); - fireText = self.$getFirePointText(firePoint, fireCount); - if ($truthy(ballistics['$!='](0))) { - - fireText = $rb_plus(fireText, " > 《弾道学》:"); - fireText = $rb_plus(fireText, self.$getDirectionInfo(ballistics, "name", "")); - fireText = $rb_plus(fireText, "\n > "); - fireText = $rb_plus(fireText, self.$getFirePointText(firePoint, fireCount, ballistics));}; - text = "" + (command) + " > " + (fireText); - return text; - }, $Skynauts_getFireResult$6.$$arity = 1); - - Opal.def(self, '$getFirePoint', $Skynauts_getFirePoint$7 = function $$getFirePoint(fireRange, fireCount) { - var $$8, self = this, firePoint = nil; - - - self.$debug("====getFirePoint===="); - firePoint = []; - $send(fireCount, 'times', [], ($$8 = function(count){var self = $$8.$$s || this, $a, $b, $$9, yPos = nil, xPos = nil, position = nil; - - - - if (count == null) { - count = nil; - }; - self.$debug("\n砲撃回数", $rb_plus(count, 1)); - firePoint['$<<']([]); - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (yPos = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (xPos = ($a[0] == null ? nil : $a[0])), $b; - position = [xPos, yPos]; - firePoint['$[]'](-1)['$<<'](position); - self.$debug("着弾点", firePoint); - return $send(fireRange.$split(/(?:)/), 'each', [], ($$9 = function(rangeText){var self = $$9.$$s || this, position_diff = nil; - - - - if (rangeText == null) { - rangeText = nil; - }; - self.$debug("範囲", rangeText); - position_diff = self.$getDirectionInfo(rangeText, "position_diff", $hash2([], {})); - position = [$rb_plus(xPos, position_diff['$[]']("x").$to_i()), $rb_plus(yPos, position_diff['$[]']("y").$to_i())]; - firePoint['$[]'](-1)['$<<'](position); - return self.$debug("着弾点:範囲", firePoint);}, $$9.$$s = self, $$9.$$arity = 1, $$9));}, $$8.$$s = self, $$8.$$arity = 1, $$8)); - self.$debug("\n最終着弾点", firePoint); - return firePoint; - }, $Skynauts_getFirePoint$7.$$arity = 2); - - Opal.def(self, '$getFirePointText', $Skynauts_getFirePointText$10 = function $$getFirePointText(firePoint, _fireCount, direction) { - var $$11, self = this, fireTextList = nil, fireText = nil; - - - - if (direction == null) { - direction = 0; - }; - self.$debug("====getFirePointText===="); - fireTextList = []; - $send(firePoint, 'each', [], ($$11 = function(point){var self = $$11.$$s || this, $$12, text = nil; - - - - if (point == null) { - point = nil; - }; - text = ""; - $send(point, 'each', [], ($$12 = function(x, y){var self = $$12.$$s || this, $a, $b; - - - - if (x == null) { - x = nil; - }; - - if (y == null) { - y = nil; - }; - $b = self.$getMovePoint(x, y, direction), $a = Opal.to_ary($b), (x = ($a[0] == null ? nil : $a[0])), (y = ($a[1] == null ? nil : $a[1])), $b; - text = $rb_plus(text, (function() {if ($truthy(self.$isInMapPosition(x, y))) { - return "" + "[縦" + (y) + ",横" + (x) + "]" - } else { - return "" + "([縦" + (y) + ",横" + (x) + "])" - }; return nil; })()); - return self.$debug("着弾点テキスト", text);}, $$12.$$s = self, $$12.$$arity = 2, $$12)); - return fireTextList['$<<'](text);}, $$11.$$s = self, $$11.$$arity = 1, $$11)); - fireText = fireTextList.$join(","); - self.$debug("\n最終着弾点テキスト", fireText); - return fireText; - }, $Skynauts_getFirePointText$10.$$arity = -3); - - Opal.def(self, '$isInMapPosition', $Skynauts_isInMapPosition$13 = function $$isInMapPosition(x, y) { - var $a, $b, self = this; - - return ($truthy($a = ($truthy($b = $rb_le(1, y)) ? $rb_le(y, 6) : $b)) ? ($truthy($b = $rb_le(2, x)) ? $rb_le(x, 12) : $b) : $a) - }, $Skynauts_isInMapPosition$13.$$arity = 2); - - Opal.def(self, '$getMovePoint', $Skynauts_getMovePoint$14 = function $$getMovePoint(x, y, direction) { - var self = this, position_diff = nil; - - - self.$debug("====getMovePoint===="); - self.$debug("方向", direction); - self.$debug("座標移動前x", x); - self.$debug("座標移動前y", y); - position_diff = self.$getDirectionInfo(direction, "position_diff", $hash2([], {})); - x = $rb_plus(x, position_diff['$[]']("x").$to_i()); - y = $rb_plus(y, position_diff['$[]']("y").$to_i()); - self.$debug("\n座標移動後x", x); - self.$debug("座標移動後y", y); - return [x, y]; - }, $Skynauts_getMovePoint$14.$$arity = 3); - - Opal.def(self, '$getBomberResult', $Skynauts_getBomberResult$15 = function $$getBomberResult(command) { - var self = this, m = nil, target = nil, direction = nil, text = nil, fireCommand = nil; - - - if ($truthy((m = /^BOM(\d*)?\/D([12346789]*)(\[.+\])*\/(\d+)(@([2468]))?$/i.$match(command)))) { - } else { - return nil - }; - self.$debug("====getBomberResult====", command); - target = m['$[]'](1).$to_s(); - direction = m['$[]'](6).$to_i(); - self.$debug("弾道学方向", direction); - text = "" + (command) + " > "; - text = $rb_plus(text, self.$getJudgeResult($rb_plus("SN", target))); - if ($truthy(/成功/['$==='](text))) { - } else { - return text - }; - fireCommand = command.$slice(/D([12346789]*)(\[.+\])*\/(\d+)(@([2468]))?/); - text = $rb_plus(text, "" + "\n > " + (self.$getFireResult(fireCommand))); - return text; - }, $Skynauts_getBomberResult$15.$$arity = 1); - - Opal.def(self, '$getAvoidResult', $Skynauts_getAvoidResult$16 = function $$getAvoidResult(command) { - var self = this, m = nil, direction = nil, judgeCommand = nil, text = nil, pointCommand = nil, firePoint = nil, fireCount = nil; - - - if ($truthy((m = /^AVO(\d*)?(@([2468]))(\(?\[縦\d+,横\d+\]\)?,?)+$/.$match(command)))) { - } else { - return nil - }; - self.$debug("====getAvoidResult====", command); - direction = m['$[]'](3).$to_i(); - self.$debug("回避方向", direction); - judgeCommand = command.$slice(/^AVO(\d*)?(@([2468]))/); - text = "" + (judgeCommand) + " > 《回避運動》"; - text = $rb_plus(text, self.$getJudgeResult($rb_plus("SN", $$($nesting, 'Regexp').$last_match(1).$to_s()))); - if ($truthy(/成功/['$==='](text))) { - } else { - return text - }; - pointCommand = command.$slice(/(\(?\[縦\d+,横\d+\]\)?,?)+/); - firePoint = self.$scanFirePoints(pointCommand); - fireCount = firePoint.$size(); - text = $rb_plus(text, "" + "\n > " + (pointCommand)); - text = $rb_plus(text, " > 《回避運動》:"); - text = $rb_plus(text, self.$getDirectionInfo(direction, "name", "")); - text = $rb_plus(text, "\n > "); - text = $rb_plus(text, self.$getFirePointText(firePoint, fireCount, direction)); - return text; - }, $Skynauts_getAvoidResult$16.$$arity = 1); - return (Opal.def(self, '$scanFirePoints', $Skynauts_scanFirePoints$17 = function $$scanFirePoints(command) { - var $$18, self = this, firePoint = nil; - - - self.$debug("====scanFirePoints====", command); - command = command.$gsub(/\(|\)/, ""); - firePoint = []; - $send(command.$split(/\],/), 'each', [], ($$18 = function(pointText){var self = $$18.$$s || this, $$19; - - - - if (pointText == null) { - pointText = nil; - }; - self.$debug("pointText", pointText); - firePoint['$<<']([]); - return $send(pointText.$split(/\]/), 'each', [], ($$19 = function(point){var self = $$19.$$s || this, y = nil, x = nil, $writer = nil; - - - - if (point == null) { - point = nil; - }; - self.$debug("point", point); - firePoint['$[]'](-1)['$<<']([]); - if ($truthy(/[^\d]*(\d+),[^\d]*(\d+)/['$==='](point))) { - } else { - return nil; - }; - y = $$($nesting, 'Regexp').$last_match(1).$to_i(); - x = $$($nesting, 'Regexp').$last_match(2).$to_i(); - - $writer = [-1, [x, y]]; - $send(firePoint['$[]'](-1), '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - return self.$debug("着弾点", firePoint);}, $$19.$$s = self, $$19.$$arity = 1, $$19));}, $$18.$$s = self, $$18.$$arity = 1, $$18)); - return firePoint; - }, $Skynauts_scanFirePoints$17.$$arity = 1), nil) && 'scanFirePoints'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/SteamPunkers.js b/src/assets/dicebot/SteamPunkers.js deleted file mode 100644 index 6d78fd0ed..000000000 --- a/src/assets/dicebot/SteamPunkers.js +++ /dev/null @@ -1,159 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/d66_range_table"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send; - - Opal.add_stubs(['$freeze', '$roll', '$+', '$*', '$find', '$include?', '$[]']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'D66RangeTable'); - - var $nesting = [self].concat($parent_nesting), $D66RangeTable_initialize$1, $D66RangeTable_roll$2; - - self.$$prototype.items = self.$$prototype.name = nil; - - - Opal.def(self, '$initialize', $D66RangeTable_initialize$1 = function $$initialize(name, items) { - var self = this; - - - self.name = name; - return (self.items = items.$freeze()); - }, $D66RangeTable_initialize$1.$$arity = 2); - return (Opal.def(self, '$roll', $D66RangeTable_roll$2 = function $$roll(bcdice) { - var $a, $b, $$3, self = this, dice1 = nil, dice2 = nil, key = nil, chosen = nil; - - - $b = bcdice.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = bcdice.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - key = $rb_plus($rb_times(dice1, 10), dice2); - chosen = $send(self.items, 'find', [], ($$3 = function(row){var self = $$3.$$s || this; - - - - if (row == null) { - row = nil; - }; - return row['$[]'](0)['$include?'](key);}, $$3.$$s = self, $$3.$$arity = 1, $$3)); - return "" + (self.name) + "(" + (key) + ") > " + (chosen['$[]'](1)); - }, $D66RangeTable_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$freeze', '$roll_tables', '$roll_sp', '$match', '$to_i', '$[]', '$roll', '$map', '$split', '$to_proc', '$+', '$*', '$count', '$<=', '$all?', '$==', '$>=', '$compact', '$join', '$!=', '$size', '$raise', '$new', '$zip', '$setPrefixes', '$keys']); - - self.$require("utils/d66_range_table"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SteamPunkers'); - - var $nesting = [self].concat($parent_nesting), $SteamPunkers_rollDiceCommand$1, $SteamPunkers_roll_sp$2; - - - Opal.const_set($nesting[0], 'ID', "SteamPunkers".$freeze()); - Opal.const_set($nesting[0], 'NAME', "スチームパンカーズ".$freeze()); - Opal.const_set($nesting[0], 'SORT_KEY', "すちいむはんかあす".$freeze()); - Opal.const_set($nesting[0], 'HELP_MESSAGE', (((((((((((((((("" + "・判定コマンド (SPn)\n") + " SP(判定ダイス数)>=(目標値)\n") + " SP4>=3のように入力し、5が出たらヒット数1,6が出たらヒット数2として成功数を数えます。\n") + " ≪スチームパンク!≫による振り直しのため、出力には失敗ダイス数を表示します。\n") + " 目標値は省略可能です。\n") + " 例:(SP4>=3) > [3,4,1,6] > 成功数:2, 失敗数:3 > 失敗\n") + " 例:(SP4) > [3,4,1,6] > 成功数:2, 失敗数:3\n") + "・表\n") + " ・プロフ(Profile):年齢表 PAT, 性別表 PST, 国籍表 PCT\n") + " ・名前表(Name):イギリス NIT, アメリカ NAT, フランス NFT, ドイツ NGT, ソビエト NST, 日本表 NJT\n") + " ・過去表(Past):トゥルース PTT, ガーディアン PGT, ノーブル PNT, デヴォート PDT, エセティック PET, チャレンジ PCT\n") + " ・経緯表(Background):ギガントアームズ BGT, アーマードリム BAT, エッジモービル BET, クロノウェポン BCT, スパイテック BST, スチームウェア BWT\n") + " ・特徴表(Feature):特徴表S FST, 特徴表P FPT\n") + " ・関係性表(Relationship):関係性表S RST, 関係性表P RPT\n") + " ・感情表(Emotion):感情表S EST, 感情表P EPT\n") + " ・その他(Other);災厄表 ODT, 場面表 OST, 交流表 OIT, 激憤表 OFT\n").$freeze()); - - Opal.def(self, '$rollDiceCommand', $SteamPunkers_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, result = nil; - - - result = self.$roll_tables(command, $$($nesting, 'TABLES')); - if ($truthy(result)) { - return result}; - return self.$roll_sp(command); - }, $SteamPunkers_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$roll_sp', $SteamPunkers_roll_sp$2 = function $$roll_sp(command) { - var $a, $b, $$3, $$4, self = this, m = nil, dice_count = nil, target_number = nil, _ = nil, dice_list_text = nil, dice_list = nil, successes = nil, failures = nil, result = nil, sequence = nil; - - - m = /^SP(\d+)(?:>=(\d+))?$/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - dice_count = m['$[]'](1).$to_i(); - target_number = ($truthy($a = m['$[]'](2)) ? m['$[]'](2).$to_i() : $a); - $b = self.$roll(dice_count, 6), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dice_list_text = ($a[1] == null ? nil : $a[1])), $b; - dice_list = $send(dice_list_text.$split(","), 'map', [], "to_i".$to_proc()); - successes = $rb_plus($rb_times(dice_list.$count(6), 2), dice_list.$count(5)); - failures = $send(dice_list, 'count', [], ($$3 = function(x){var self = $$3.$$s || this; - - - - if (x == null) { - x = nil; - }; - return $rb_le(x, 4);}, $$3.$$s = self, $$3.$$arity = 1, $$3)); - result = (function() {if ($truthy($send(dice_list, 'all?', [], ($$4 = function(x){var self = $$4.$$s || this; - - - - if (x == null) { - x = nil; - }; - return x['$=='](1);}, $$4.$$s = self, $$4.$$arity = 1, $$4)))) { - return "ファンブル" - } else if ($truthy(target_number)) { - if ($truthy($rb_ge(successes, target_number))) { - return "成功" - } else { - return "失敗" - } - } else { - return nil - }; return nil; })(); - sequence = ["" + "(" + (command) + ")", "" + "[" + (dice_list_text) + "]", "" + "成功数:" + (successes) + ", 失敗数:" + (failures), result].$compact(); - return sequence.$join(" > "); - }, $SteamPunkers_roll_sp$2.$$arity = 1); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SPTable'); - - var $nesting = [self].concat($parent_nesting), $SPTable_initialize$5; - - - - Opal.def(self, '$initialize', $SPTable_initialize$5 = function $$initialize(name, items) { - var $iter = $SPTable_initialize$5.$$p, $yield = $iter || nil, self = this, items_with_range = nil; - - if ($iter) $SPTable_initialize$5.$$p = null; - - if ($truthy(items.$size()['$!=']($$($nesting, 'RANGE').$size()))) { - self.$raise($$($nesting, 'UnexpectedTableSize').$new(name, items.$size()))}; - items_with_range = $$($nesting, 'RANGE').$zip(items); - return $send(self, Opal.find_super_dispatcher(self, 'initialize', $SPTable_initialize$5, false), [name, items_with_range], null); - }, $SPTable_initialize$5.$$arity = 2); - return Opal.const_set($nesting[0], 'RANGE', [$range(11, 14, false), $range(15, 22, false), $range(23, 32, false), $range(33, 36, false), $range(41, 44, false), $range(45, 52, false), $range(53, 56, false), $range(61, 66, false)].$freeze()); - })($nesting[0], $$($nesting, 'D66RangeTable'), $nesting); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'UnexpectedTableSize'); - - var $nesting = [self].concat($parent_nesting); - - return nil - })($nesting[0], $$($nesting, 'StandardError'), $nesting); - Opal.const_set($nesting[0], 'TABLES', $hash2(["PAT", "PST", "PCT", "NIT", "NAT", "NFT", "NGT", "NST", "NJT", "PTT", "PGT", "PNT", "PDT", "PET", "BGT", "BAT", "BET", "BCT", "BST", "BWT", "FST", "FPT", "RST", "RPT", "EST", "EPT", "ODT", "OST", "OIT", "OFT"], {"PAT": $$($nesting, 'SPTable').$new("年齢表", ["【14~15歳】 まだまだ、子ども扱い。また、過去の内容は父か母のことを指している。", "【16~17歳】 そろそろ成人として扱われる。また、過去の内容は父か母のことを指している。", "【18~19歳】 職場では修行期間中である。また、過去の内容は両親のことか、あなた自身のことだ。", "【20~21歳】 ようやく一人前の年齢である。また、過去の内容は両親のことか、あなた自身のことだ", "【22~23歳】 働き盛りである。また、過去の内容はあなた自身のことだ。", "【24~25歳】 働き盛りである。また、過去の内容はあなた自身のことだ。", "【26~27歳】 かつて、従軍した可能性がある。また、過去の内容はあなた自身のことだ。", "【28~30歳】 蒸気大戦末期をよく知っている。また、過去の内容はあなた自身のことだ。"]), "PST": $$($nesting, 'SPTable').$new("性別表", ["【男性】 背が高く、がっしりしている。", "【女性】 蠱惑的な身体をしている。", "【男性】 平均的な中肉中背である。", "【女性】 女性らしい体形をしている。", "【男性】 近世の取れた肉体をしている。", "【女性】 彫刻のように美しい体形である。", "【男性】 一見すると細身に見える。", "【女性】 スリムな体形をしている。"]), "PCT": $$($nesting, 'SPTable').$new("国籍表", ["【日本皇国】 あなたは日本人である。", "【フランス共和国】 あなたはフランス人である。", "【アメリカ合衆国】 あなたはアメリカ人である。", "【イギリス王国】 あなたはイギリス人である。", "【イギリス王国】 あなたはイギリス人である。", "【イギリス王国】 あなたはイギリス人である。", "【ドイツ帝国】 あなたはドイツ人である。", "【ソビエト連邦】 あなたはソビエト人である。"]), "NIT": $$($nesting, 'SPTable').$new("名前表・イギリス(男性名/女性名/名字)", ["アーロン/アビゲイル/アダム", "カラム/オーレリア/バーナード", "クライヴ/ブレンダ/ビーチャム", "カーティス/キャロライン/ビリンガム", "ダンカン/クリス/ボイド", "アイオン/イーニッド/クロムウェル", "ネイサン/グレイス/エアハート", "ウィリアム/ローレンシア/ハックワース"]), "NAT": $$($nesting, 'SPTable').$new("名前表・アメリカ(男性名/女性名/名字)", ["ジェラルド/デイジー/キャンベル", "クラーク/ベアトリス/ベックフォード", "ヴィクター/ケイト/ガードナー", "ザック/ルシール/キンケイド", "ヘクター/エレイン/コールリッジ", "アーサー/アンジェリカ/アレクサンダー", "アドニス/アルダ/オースティン", "ランバート/イヴ/デビットソン"]), "NFT": $$($nesting, 'SPTable').$new("名前表・フランス(男性名/女性名/名字)", ["ベルナール/ベアトリス/バシュラール", "セドリック/セシリア/ベルモンド", "エルネスト/コレット/ボニツェール", "フレデリック/エルザ/ボワイエ", "ロランド/リュクレース/ディノワール", "イアサント/アンリエット/シャルトー", "バスティアン/ブリジット/オードラン", "ルイ/リリアーヌ/ドラクランジュ"]), "NGT": $$($nesting, 'SPTable').$new("名前表・ドイツ(男性名/女性名/名字)", ["アルベルト/アデーレ/アッカーマン", "バシリウス/アルマ/バルツァー", "ブルーノ/クリステル/ビットナー", "エトムント/エルネスタ/コルネリウス", "ゴッツ/クラリッサ/アイヒマン", "ヨハン/モニカ/フリードリヒ", "レオンハルト/オクタヴィア/ハイセルタ", "ブルクハルト/クロジンデ/ビンデバルト"]), "NST": $$($nesting, 'SPTable').$new("名前表・ソビエト(男性名/女性名/名字)", ["イリイチ/バルバラ/バビチェフ", "ミハイル/ジナイーダ/ボブロフ", "セルゲイ/クラーラ/ヴォルコフ", "イヴァン/レイラ/ガボエフ", "アラン/オルガ/ジェミチェフ", "ボリス/ナタリヤ/ドミトリエフ", "ウラジミル/ソフィア/エルマコフ", "アレクセイ/マルタ/ダンチェンコ"]), "NJT": $$($nesting, 'SPTable').$new("名前表・日本(男性名/女性名/名字)", ["タキジ/タキ/トウドウ", "シンヤ/アヤ/マツモト", "レイジ/カオルコ/サガラ", "コウタロウ/セン/オオシマ", "ヒロシ/チサ/クジョウ", "ジロウ/カナ/ヤマガタ", "マサヒト/マイ/イトウ", "ショウジ/アヤメ/シンドウ"]), "PTT": $$($nesting, 'SPTable').$new("過去表『トゥルース』", ["【決着】 あなたは怨敵である蒸気事件の犯人を追っている。いつの日か、そいつとは決着をつけるつもりだ。", "【陰謀】 とある陰謀により、あなたは故郷、あるいはかつての地位を失ってしまった。", "【後悔】 ある蒸気事件を解決できなかった。結果、あなたは大切な人を失ってしまった。", "【失踪】 かつて、あなたが愛した人は不自然な失踪を遂げてしまった。あの人はいったいどこへ……?", "【冤罪】 ある陰謀により、あなたは冤罪をかけられ、かつての地位を追われてしまった。", "【裏切り】 とある蒸気事件の際に無二の親友があなたを裏切り、理由も告げぬまま消え去った。", "【誓い】 とある陰謀により、あなたは大切な何かを失った。いつか陰謀を暴く……それがあなたの誓いだ。", "【喪失】 とある蒸気事件の際、あなたの家族は何者かの手により惨殺された。犯人は今も見つかっていない。"]), "PGT": $$($nesting, 'SPTable').$new("過去表『ガーディアン』", ["【後悔】 ある蒸気事件を解決できなかった。結果、あなたは大切な人を失ってしまった。", "【贖罪】 あなたは過去に罪なき人々の虐殺を強制させられた。だから、贖罪のために人々を護っている。", "【無力】 かつて、あなたは無力だった。そして、無力ゆえに大切な人を護ることができなかった。", "【憧れ】 あなたの憧れた人は、いつだって弱者の味方だった。そして、あなたはあの人の背中を追い続けている。", "【使命】 弱き者たちの盾となる。それが生まれたときから、あなたに課せられ唯一の使命だった。", "【見殺し】 あなたはやむを得ない事情により、仲間を見殺しにしてしまった。だから、次は絶対見殺しにしない。", "【死別】 とある事件の際、あなたは家族を護りきれず失ってしまった。だから……今度こそ護ってみせる。", "【庇護】 現在、あなたには護るべき人、護るべき場所がある。それらの日常を護るべく、あなたは戦ったいる。"]), "PNT": $$($nesting, 'SPTable').$new("過去表『ノーブル』", ["【復讐】 あなたの家族は蒸気事件の犠牲となった。ゆえに、あなたは家族の仇を討つべく犯人を捜している。", "【理不尽】 あなたは幼少期に、心優しかった使用人が理不尽な虐待の末に殺害される場面を目撃してしまった。", "【反発】 あなたの親は悪徳を重ねる権力者だった。そんな親が嫌いで、あなたは常に反発していた。", "【高貴】 あなたは生来から高貴な信念の持ち主だ。それゆえ弱者を救い、導くことに疑問はない。", "【偽物】 あなたは貴族の影武者を務める元平民だ。しかし、演じるうちに、あなたは真の高貴を身に着けた。", "【悲恋】 あなたは、下層市民と身分違いの恋をした。だが、愛する人は蒸気事件の犠牲者となった。", "【権謀】 あなたの両親は、とある権力闘争に巻き込まれた際、不自然な蒸気事件に遭遇して命を落とした。", "【慈愛】 あなたは、真の貴族であった両親から他者を慈しむことは当然だと教育された。"]), "PDT": $$($nesting, 'SPTable').$new("過去表『デヴォート』", ["【忠義】 あなたは、忠義の大切さを教えられて育ってきた。それゆえ、あなたは主に忠誠をささげるのだ。", "【忠臣】 あなたは国や組織に仕える忠臣だった。だが、権力闘争によって追われ、今は市井に身を潜めている。", "【恩義】 あなたは現在の主たる人物、または組織に救われた。いつの日か、この恩に報いなければ。", "【無心】 あなたは生来より、主や組織に仕える教育を受けてきた。ゆえに、忠義を尽くすことに疑問はない。", "【心酔】 あなたは現在の主や組織に心酔している。だから、主や組織のために蒸気事件に立ち向かう", "【復習】 あなたの主は邪悪な蒸気事件の犠牲となった。以後、あなたは主の仇を討つべく犯人を捜している。", "【約束】 あなたの主は蒸気事件の犠牲者だ。主を看取る際、あなたは世界から蒸気事件を一掃すると約束した。", "【犠牲】 あなたには尊敬に値する主がいた。だが、その主はあなたを庇って、邪悪な陰謀の犠牲となった。"]), "PET": $$($nesting, 'SPTable').$new("過去表『エセティック』", ["【研究】 あなたは蒸気犯罪で用いられるスチームギアを撲滅するために、常に研究を続けている。", "【悪用】 あなたは過去に自らが製造した、あるいは所有するスチームギアが悪用され、憤慨したことがある。", "【仁義】 あなた、仁義の大切さを教えられて育ってきた。それゆえ、あなたは虐げられる物たちを救うのだ。", "【美意識】 あなたは、スチームギアが犯罪に用いられる場面を目撃した際、吐き気がするほど醜いと感じた。", "【正義】 あなたは蒸気事件の元犠牲者だ。あなたは、自らの正義を成すために今も蒸気事件に挑み続けている。", "【正論】 あなたは昔から、スチームギアが正しい方法で利用されないことが我慢ならない。", "【天誅】 あなたは蒸気事件によって、全てを失ってしまった。だから、蒸気事件を起こす黒幕が許せない。", "【報復】 あなたの恩師は過去に蒸気事件で犠牲となっている。あなたはいつか、その犯人に報復するつもりだ。"]), "BGT": $$($nesting, 'SPTable').$new("経緯表『ギガントアームズ』", ["【元近衛兵】 あなたは上層部の警護を任されていた元近衛兵で、スチームギアは大戦時に入手したものである。", "【反逆者の子】 スチームギアは、スチームパンカーだったあなたの亡父が使っていた形見である。", "【元殺し屋】 あなたは、かつて殺し屋だった。このスチームギアは以前の仕事の報酬として受け取ったものだ。", "【元傭兵】 あなたは蒸気大戦で荒稼ぎしていた元傭兵で、このスチームギアは大戦時に入手したものだ。", "【元英雄】 あなたは蒸気大戦の英雄だ。あなたは戦線に赴く際、上層部から新世代スチームギアを支給されたのだ。", "【元軍人】 あなたは蒸気大戦にも従軍した元軍人で、大戦時にスチームギアを入手した。", "【元特殊部隊】 あなたは蒸気大戦で活躍した元特殊部隊員で、大戦時にスチームギアを入手した。", "【戦場帰り】 あなたは蒸気大戦に従軍した経験を持つ戦場帰りで、大戦時にスチームギアを入手した。"]), "BAT": $$($nesting, 'SPTable').$new("経緯表『アーマードリム』", ["【試験操縦士】 あなたは軍や企業で試験操縦士を務めており、その折に、スチームギアを密かに入手した。", "【闇取引】 あなたは闇取引のコネクションがあり、そのコネを利用してスチームギアを入手した。", "【貴族出身】 あなたは貴族、あるいは元貴族だ。スチームギアは、屋敷の倉にあった品を改造したものである。", "【元研究者】 あなたはスチームギアの元研究者で、自らの肉体を防護するためにスチームギアを開発した。", "【戦場帰り】 あなたは蒸気大戦に従軍した経験を持つ戦場帰りで、大戦時にスチームギアを入手した。", "【謎の協力者】 あなたが蒸気事件に立ち向かおうとした際、謎の協力者が現れ、スチームギアを与えてくれた。", "【元修理屋】 あなたは元修理屋だ。スチームギアはジャンク置き場で偶然見かけたものをレストアしたものだ。", "【簒奪者】 あなたは蒸気事件に巻き込まれた際、偶然と幸運が重なり、相手のスチームギアを奪取できた。"]), "BET": $$($nesting, 'SPTable').$new("経緯表『エッジモービル』", ["【車泥棒】 あなたは元車泥棒だ。このスチームギアは出所不明のものをちょろまかしたものだ。", "【元機関工】 あなたは優れた技術を持つ元機関工で、出所不明のスチームギアを偶然にも入手した。", "【元エース】 あなたは蒸気大戦時に英雄と呼ばれた元操縦士で、大戦時にスチームギアを入手した。", "【元輸送兵】 あなたは蒸気大戦に従軍した経験を持つ元輸送兵で、大戦時にスチームギアを入手した。", "【蒸気工の子】 あなたは蒸気工、あるいは蒸気技術者の子供だった。スチームギアは、両親が所有していたものである。", "【元レーサー】 あなたは蒸気車両のレースに出場していたレーサーで、スチームギアは偶然にも入手したものだ。", "【違法改造屋】 あなたはかつて、違法で改造を施すモグリの機関工だった。スチームギアは、その際に入手したものだ。", "【逃亡兵】 あなたは、戦場から逃げ出した逃亡兵だ。スチームギアは戦場に赴く際に支給された試作機である。"]), "BCT": $$($nesting, 'SPTable').$new("経緯表『クロノウェポン』", ["【元武器商人】 あなたは蒸気大戦時にスチームギアを販売していた元武器商人、あるいはその護衛だ。", "【元製造者】 あなたは蒸気大戦時にスチームギアを製造していた。そして、身を護るために自身の手で製造したのだ。", "【反逆者の子】 スチームギアは、スチームパンカーだったあなたの亡父が使っていた形見である。", "【元近衛兵】 あなたは上層部の警護を任されていた元近衛兵で、スチームギアは大戦時に入手したものである。", "【元特殊部隊】 あなたは蒸気大戦で活躍した元特殊部隊員で、大戦時にスチームギアを入手した。", "【元傭兵】 あなたは蒸気大戦で荒稼ぎしていた元傭兵で、このスチームギアは大戦時に入手したものだ。", "【裏稼業】 あなたはかつて裏稼業に手を染めていた荒事屋で、スチームギアは、かつての仕事の報酬である。", "【元英雄】 あなたは蒸気大戦の英雄だ。あなたは戦線に赴く際、上層部から新世代スチームギアを支給されたのだ。"]), "BST": $$($nesting, 'SPTable').$new("経緯表『スパイテック』", ["【元刑事】 あなたは、蒸気事件ばかりを追っていた元刑事だ。スチームギアは犯罪者から奪い取ったものである。", "【元結社の一員】 あなたは邪悪な秘密結社に所属していた元工作員だ。スチームギアはその頃に支給されたものである。", "【研究者の肉親】 あなたの肉親が軍の研究者で、彼らが試作機として制作したものを偶然入手した。", "【元工作員】 あなたは、蒸気大戦の裏側で活躍した元工作員で、大戦終結と同時に、そのスチームギアを入手した。", "【元諜報員】 あなたは蒸気大戦の際に活躍した元スパイで、当時支給されたスチームギアを私物化している。", "【後援者】 あなたが行なう蒸気事件の調査を援助する者がいる。彼は、このスチームギアを制作した人物である。", "【元暗殺部隊】 あなたは、蒸気大戦時に暗躍した元暗殺部隊員で、スチームギアはその頃に入手したものだ。", "【元盗人】 あなたは盗品として流れてきたスチームギアを偶然発見して、入手した。"]), "BWT": $$($nesting, 'SPTable').$new("経緯表『スチームウェア』", ["【独自ルート】 あなたは人間の限界を超えるために、独自のルートを使って、自らの意志で肉体を機械化した。", "【相棒の技師】 あなたが蒸気事件で肉体を欠損した際、機械技師をしている相棒が欠損部位を機械化してくれた。", "【元実験体】 あなたは蒸気事件で重傷を負った際、実験体となる代わりに特殊な機械化手術を施された。", "【元機械化兵】 あなたは大戦時に機械化手術で蘇った元蒸気兵だ。終戦後、スチームギアをわざと取り換えなかった。", "【帰還兵】 あなたは蒸気大戦から帰還した帰還兵だ。だが戦時中に肉体が欠損し、軍部が機械化してくれた。", "【元機械闘士】 あなたは機械化格闘に出場した元格闘士だ。機械化した部位は、その頃に違法改造したものだ。", "【元闇医者】 あなたは、元モグリの機械医師だった。機械化したその部位は、その頃に自身で改造したものだ。", "【元英雄】 あなたは蒸気大戦の英雄だ。あなたは戦線に赴く際、上層部から新世代スチームギアを支給されたのだ。"]), "FST": $$($nesting, 'SPTable').$new("特徴表S", ["【蒸気帽】 あなたは、なんらかの蒸気機械を仕込んだ帽子を愛用している。", "【装飾品】 あなたは、蒸気仕掛けが施された特殊なアクセサリーやペンダントを愛用している。", "【蒸気杖/傘】 あなたは、特殊機能を備えた蒸気機械式の傘を、あるいはステッキを愛用している。", "【ゴーグル】 あなたは、特殊機能を備えたゴーグルを愛用している。", "【特殊眼鏡】 あなたは、拡大機能などを備えた眼鏡や単眼鏡を愛用している。", "【蒸気ライター】 あなたは、小さなマグナイトが仕込まれた蒸気式ライターを隠し持っている。", "【機関手袋】 あなたは、特殊機能を備えた頑丈な革手袋を愛用している。", "【偽造カード】 あなたは、偽造した戸籍情報を点刻したパンチカードを隠し持っている。"]), "FPT": $$($nesting, 'SPTable').$new("特徴表P", ["【傷】 顔、あるいは体のどこかに傷がある。", "【美声】 一度聞くと忘れられないほど、美しい声だ。", "【筋肉質】 鍛え抜かれた肉体をしている。", "【美形】 生きている宝石のように美しい容貌をしている。", "【童顔】 年齢に関係なく、非常に若く見える。", "【髪】 不思議な髪の色、あるいはパンクな髪型をしている。", "【刺青】 体のどこかに特徴的なタトゥーがある。", "【瞳】 不思議な瞳の色、あるいは特徴的な眼差しをしている。"]), "RST": $$($nesting, 'SPTable').$new("関係性表S", ["【元敵同士】 相手とは、元敵同士の間柄だ。どのように敵対していたかは、プレイヤーと相談して決定せよ。", "【愛憎】 相手とは、愛憎渦巻く仲だ。愛しあっていた、憎みあっていたのかはプレイヤーと相談して決定せよ。", "【元相棒】 相手とは、元相棒の間柄だ。なぜ相棒でなくなったかについてはプレイヤーと相談して決定せよ。", "【犬猿】 相手とは、犬猿の仲だ。なぜ、いがみあっているかについてはプレイヤーと相談して決定せよ。", "【共依存】 相手とは、共依存の関係だ。どのように依存しあっているかはプレイヤーと相談して決定せよ。", "【仇同士】 相手とは、仇同士の間柄だ。どのような因縁であるかはプレイヤーと相談して決定せよ。", "【主従】 相手とは、主従の間柄だ。どちらが主で、どちらが従者かはプレイヤーと相談して決定せよ。", "【裏切り】 相手とは、裏切りあった間柄だ。どちらが裏切ったかについてはプレイヤーと相談して決定せよ。"]), "RPT": $$($nesting, 'SPTable').$new("関係性表P", ["【血縁】 相手とは、血縁がある。どの程度の間柄であるかについてはプレイヤーと相談して決定せよ。", "【同志】 相手は、同じ志を持っている。どんな志を共にしているかはプレイヤーと相談して決定せよ。", "【好敵手】 相手とは、良きライバルだ。どのような形での好敵手かは、プレイヤーと相談して決定せよ。", "【親友】 相手とは、親友の間柄だ。どのくらい仲が良いかについては、プレイヤーと相談して決定せよ。", "【相棒】 相手は、無二の相棒だ。どのくらいの年月を共にしてきたかについてはプレイヤーと相談して決定せよ。", "【腐れ縁】 相手とは幼い頃からの腐れ縁だ。どのくらいの年齢からであるかはプレイヤーと相談して決定せよ。", "【戦友】 相手とは戦友の間柄だ。どこで、なにと戦ったかについてはプレイヤーと相談して決定せよ。", "【師弟】 相手は師、あるいは弟子だ。どちらが師で、どちらが弟子かはプレイヤーと相談して決定せよ。"]), "EST": $$($nesting, 'SPTable').$new("感情表S", ["【殺意】 相手に殺意を覚えている。どういった経緯で殺意を抱いているかについては自身で決定せよ。", "【優越感】 相手に優越感がある。どういった経緯で優越感を抱いているかについては自身で決定せよ。", "【嫉妬】 相手に嫉妬している。どういった経緯で嫉妬しているかについては自身で決定せよ。", "【劣等感】 相手に劣等感がある。どういった経緯で劣等感を抱いているかについては自身で決定せよ。", "【罪悪感】 相手に罪悪感がある。どういった経緯で罪悪感を持っているかについては自身で決定せよ。", "【不安】 相手のことが不安だ。どういったときに不安を感じるかについては自身で決定せよ。", "【恐怖】 相手のことを恐れている。どういった経緯で恐れるようになったかについては自身で決定せよ。", "【嫌悪】 相手のことを嫌悪している。どの程度の嫌悪であるかについては自身で決定せよ。"]), "EPT": $$($nesting, 'SPTable').$new("感情表P", ["【誠意】 相手に対して誠意を感じる。どういった経緯で誠意を感じたかについては自身で決定せよ。", "【好感】 相手に対して好感を抱いている。どういった経緯で好感を抱くに至ったかについては自身で決定せよ。", "【尊敬】 相手のことを尊敬している。どういった経緯で相手を尊敬したかについては自身で決定せよ。", "【友情】 相手に対して友情を抱いている。どういった経緯で友情を抱くに至ったかについては自身で決定せよ。", "【庇護】 相手を護りたいと思っている。どういった経緯で相手を庇護対象にしたかは自身で決定せよ。", "【信頼】 相手のことを信頼している。どういった経緯で信頼するようになったかについては自身で決定せよ。", "【期待】 相手に対して期待している。どういった経緯で期待を抱くようになったかについては自身で決定せよ。", "【愛情】 相手に愛情や友愛を抱いている。どういった経緯で愛情を抱くに至ったかについては自身で決定せよ。"]), "ODT": $$($nesting, 'SPTable').$new("災厄表", ["【蒸気の不調】 スチームギアが不調になった!おそらくマグナイトが尽きかけてるのだ。ペナルティーを受けたPCは、そのフェイズの終了まで、スチームの抑圧を解放できない。", "【卑劣な強襲】 突如として強力な不意討ちを受けた。おそらく、スチームギアによる特殊な攻撃だ。PC全員は【耐久値】を-3する(最小1)。", "【非道な行為】 黒幕は気まぐれから、罪のない人をスチームギアで傷つけた。なんという非道な行為だ!PC全員は世界からの抑圧を2枚受ける。", "【嫌な予感】 今回の蒸気事件は特に嫌な予感がする……以後、全てのエネミーは終了フェイズを迎えるまで、実行の《アビリティ》の成功数を+1する。", "【敵役出現】 見知らぬ妨害者が現れた!以後、[【反抗LV】の平均以下]のエネミーが、そのフェイズに1人参加。戦闘不能にしない限り、メインを迎える度に実行を行ない、活劇フェイズにも参加する。", "【迎撃準備】 黒幕は万が一に備えて、手下を武装させ始めた。以後、全てのエネミーはシナリオ中、【耐久値】を+3する。", "【疑惑の目】 まずい。警察や政府がキミたちに対して疑惑の目を向け始めているようだ。PC全員は【理性値】を-2する(最小0)。", "【絶望感】 突如として心の傷が痛み、信念が揺らいでしまう。ペナルティーを受けたPCは、そのフェイズの終了まで、パンクの抑圧を解放できない。"]), "OST": $$($nesting, 'SPTable').$new("場面表", ["【地下鉄】 途中まで、地下鉄を利用することにする。駅のホームは蒸気列車が放出する蒸気のせいで、湿り気と熱気を帯びていた。", "【工業地帯】 工業地帯を横切る。開かれた窓の奥に視線を送ると、労働者たちが製造用蒸気機関を操り、真鍮製の煙突から蒸気が噴き上っている。", "【店舗】 途中、店舗で簡単な買い物を済ませた。支払いは無論、パンチカードで一括。階差演算機関はすでに個人の予算残高すら管理下に置いている。", "【ビッグ・ベン】 遠くから時刻を告げるビッグ・ベンの鐘が響くと、蒸気オルガンの薄暗い音色が、いつものようにロンドンの上空を覆った。", "【人混み】 人混みのなかを進むと、ハンチング帽をかぶった少年たちが脇を駆け抜けた……彼らを護るためにも早く蒸気事件を解決しなければ。", "【繁華街】 調査に向かった現場では、蒸気機械仕掛けの帯状装飾が点灯しており、帯が回転する度に様々な広告が表示された。", "【大通り】 大通りに出ると、蒸気自動車が目前で行き交っていた。真鍮や錫で装飾された蒸気自動車は、まるで晩餐会に出入りする馬車のようだ。", "【移動パブ】 途中、移動パブを見かけた。蒸気自動車に機関式サーバーを搭載したもので、周りには若いロンドン子たちが口に泡をつけながら騒いでいる。"]), "OIT": $$($nesting, 'SPTable').$new("交流表", ["【過去】 そういえば、相手の過去を知らない気がする…聞けば教えてくれるだろうか?", "【特徴】 さっきから相手の特徴が気になる。相手から特徴にまつわる話を聞いてみようか?", "【感情】 相手に対して抱いてる感情のことを伝えるべきだろうか?それとも、伝えないべきだろうか?", "【蒸気事件】 相手に、今回の事件の印象について聞いてみよう。", "【事件後】 今回の事件が終わったら、相手は何をするつもりなのだろう?", "【関係性】 相手とは……いつからこうした関係だったろう?そもそも、相手は覚えているのだろうか?", "【職業】 相手は、どんな経緯で今の職業となったのだろう。興味があるので、聞いてみようか?", "【経緯】 相手はどうやってスチームギアを得たのだろう?その経緯の一部でも聞いてみようか?"]), "OFT": $$($nesting, 'SPTable').$new("激憤表", ["【憤怒】 これほど残虐な蒸気事件が起こったというのに、世界は一向に変わろうとしない。もはや世界への怒りは頂点へと達してしまった。PCはレヴォルトを失い、黒幕となる。", "【破損】 怒りに任せて激闘を繰り返したため、スチームギアが破損した。もう、世界に反逆する力はない。以後、PCはスチームギアを失い、NPCとなる。", "【偽装】 権力者からの圧力によって、社会的に抹殺されてしまった。が、それは想定済みだ。これからは別の人生を歩むことになる。PCの名前と職業を変更せよ。", "【冷静】 今回の蒸気事件には少し思うところがあった。だが、しばらく時間を置くことで、理性的になることができた。キミはまだまだ戦える。特にペナルティーはない。", "【重傷】 最後の戦いの際に負った傷が重症化してしまった。だが、しばらく治療に専念すれば復帰できるだろう。特にペナルティーはない。", "【革命】 今回の事件を通じて、信念が揺らいだ。やはり、世界を変えるには圧倒的な”暴力”が必要なのだ。PCはレヴォルトを失い、黒幕となる。", "【寝返り】 蒸気事件を通じて、世界の在り方に疑問を感じる。そんな矢先、目前にゾディアックの上級幹部が現れ、キミをスカウトしてきた。PCはレヴォルトを失い、黒幕となる。", "【悪堕ち】 信念に従い、反逆を続けてきた。だが、蒸気事件が尽きる気配はない。反逆など無意味なのか。なら、この手で……PCはレヴォルトを失い、黒幕となる。"])}).$freeze()); - return self.$setPrefixes($rb_plus(["SP.*"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/StellarKnights.js b/src/assets/dicebot/StellarKnights.js deleted file mode 100644 index 2d7058fae..000000000 --- a/src/assets/dicebot/StellarKnights.js +++ /dev/null @@ -1,349 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$freeze', '$match', '$raise', '$to_i', '$[]', '$roll', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Table'); - - var $nesting = [self].concat($parent_nesting), $Table_initialize$1, $Table_roll$2; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $Table_initialize$1 = function $$initialize(name, type, items) { - var self = this, m = nil; - - - self.name = name; - self.items = items.$freeze(); - m = /(\d+)D(\d+)/i.$match(type); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "Unexpected table type: " + (type)) - }; - self.times = m['$[]'](1).$to_i(); - return (self.sides = m['$[]'](2).$to_i()); - }, $Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $Table_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, value = nil, index = nil; - - - $b = bcdice.$roll(self.times, self.sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(value, self.times); - return "" + (self.name) + "(" + (value) + ") > " + (self.items['$[]'](index)); - }, $Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/d66_grid_table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; - - Opal.add_stubs(['$freeze', '$roll', '$-', '$[]']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'D66GridTable'); - - var $nesting = [self].concat($parent_nesting), $D66GridTable_initialize$1, $D66GridTable_roll$2; - - self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $D66GridTable_initialize$1 = function $$initialize(name, items) { - var self = this; - - - self.name = name; - return (self.items = items.$freeze()); - }, $D66GridTable_initialize$1.$$arity = 2); - return (Opal.def(self, '$roll', $D66GridTable_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, index1 = nil, index2 = nil; - - - $b = bcdice.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = bcdice.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - index1 = $rb_minus(dice1, 1); - index2 = $rb_minus(dice2, 1); - return "" + (self.name) + "(" + (dice1) + (dice2) + ") > " + (self.items['$[]'](index1)['$[]'](index2)); - }, $D66GridTable_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$upcase', '$[]', '$roll', '$bcdice', '$match', '$resolute_action', '$to_i', '$==', '$roll_all_situation_b2_tables', '$roll_all_situation_tables', '$roll_personality_table', '$roll_fragment_table', '$private', '$map', '$split', '$to_proc', '$parse_dice_change_rules', '$each', '$map!', '$empty?', '$sort!', '$+', '$join', '$nil?', '$count', '$>=', '$get_table_by_d66', '$<=', '$new', '$freeze', '$setPrefixes', '$keys']); - - self.$require("utils/table"); - self.$require("utils/d66_grid_table"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'StellarKnights'); - - var $nesting = [self].concat($parent_nesting), $StellarKnights_initialize$1, $StellarKnights_rollDiceCommand$2, $StellarKnights_resolute_action$3, $StellarKnights_parse_dice_change_rules$7, $StellarKnights_roll_all_situation_b2_tables$9, $StellarKnights_roll_all_situation_tables$11, $StellarKnights_roll_personality_table$13, $StellarKnights_roll_fragment_table$14; - - self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "StellarKnights"); - Opal.const_set($nesting[0], 'NAME', "銀剣のステラナイツ"); - Opal.const_set($nesting[0], 'SORT_KEY', "きんけんのすてらないつ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 nSK[d][,k>l,...]\n" + "[]内は省略可能。\n" + "n: ダイス数、d: アタック判定における対象の防御力、k, l: ダイスの出目がkならばlに変更(アマランサスのスキル「始まりの部屋」用)\n" + "d省略時はダイスを振った結果のみ表示。(nSKはnB6と同じ)\n" + "\n" + "4SK: ダイスを4個振って、その結果を表示\n" + "5SK3: 【アタック判定:5ダイス】、対象の防御力を3として成功数を表示\n" + "3SK,1>6: ダイスを3個振り、出目が1のダイスを全て6に変更し、その結果を表示\n" + "6SK4,1>6,2>6: 【アタック判定:6ダイス】、出目が1と2のダイスを全て6に変更、対象の防御力を4として成功数を表示\n" + "\n" + "・基本\n" + "TT:お題表\n" + "STA :シチュエーション表A:時間 (Situation Table A)\n" + "STB :シチュエーション表B:場所 (ST B)\n" + "STB2[n]:シチュエーション表B その2:学園編 (ST B 2)\n" + " n: 1(アーセルトレイ), 2(イデアグロリア), 3(シトラ), 4(フィロソフィア), 5(聖アージェティア), 6(SoA)\n" + "STC :シチュエーション表C:話題 (ST C)\n" + "ALLS :シチュエーション表全てを一括で(学園編除く)\n" + "GAT:所属組織決定 (Gakuen Table)\n" + "HOT:希望表 (Hope Table)\n" + "DET:絶望表 (Despair Table)\n" + "WIT:願い事表 (Wish Table)\n" + "YST:あなたの物語表 (Your Story Table)\n" + "YSTA:あなたの物語表:異世界 (YST Another World)\n" + "PET:性格表 (Personality Table)\n" + " 性格表を2回振り、性格を決定する\n" + "\n" + "・霧と桜のマルジナリア\n" + "YSTM:あなたの物語表:マルジナリア世界 (YST Marginalia)\n" + "STM:シチュエーション表:マルジナリア世界 (ST Marginalia)\n" + "YSTL:あなたの物語表:手紙世界 (YST Letter)\n" + "YSTR:あなたの物語表:リコレクト・ドール (YST Recollect-doll)\n" + "STBR:シチュエーション表B:場所(リコレクト・ドール) (ST B Recollect-doll)\n" + "STCR:シチュエーション表C:リコレクト (ST C Recollect)\n" + "STBS:シチュエーション表B:シトラセッティング (ST B Sut Tu Real)\n" + "STE:シチュエーション表:エクリプス専用 (ST Eclipse)\n" + "\n" + "・紫弾のオルトリヴート\n" + "FT:フラグメント表 (Fragment Table)\n" + " フラグメント表を5回振る\n" + "FTx:フラグメント表をx回振る\n" + "YSTB:あなたの物語表:ブリンガー (YST Bringer)\n" + "YSTF:あなたの物語表:フォージ (YST Forge)\n" + "STAL:シチュエーション表:オルトリヴート (ST Alt-Levoot)\n"); - - Opal.def(self, '$initialize', $StellarKnights_initialize$1 = function $$initialize() { - var $iter = $StellarKnights_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $StellarKnights_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $StellarKnights_initialize$1, false), $zuper, $iter); - self.sortType = 2; - return (self.d66Type = 1); - }, $StellarKnights_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $StellarKnights_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, self = this, table = nil, m = nil, num = nil; - - - command = command.$upcase(); - if ($truthy((table = $$($nesting, 'TABLES')['$[]'](command)))) { - return table.$roll(self.$bcdice()) - } else if ($truthy((m = /(\d+)SK(\d)?((,\d>\d)+)?/.$match(command)))) { - return self.$resolute_action(m['$[]'](1).$to_i(), ($truthy($a = m['$[]'](2)) ? m['$[]'](2).$to_i() : $a), m['$[]'](3), command) - } else if (command['$==']("STB2")) { - return self.$roll_all_situation_b2_tables() - } else if (command['$==']("ALLS")) { - return self.$roll_all_situation_tables() - } else if (command['$==']("PET")) { - return self.$roll_personality_table() - } else if ($truthy((m = /FT(\d+)?/.$match(command)))) { - - num = ($truthy($a = m['$[]'](1)) ? $a : 5).$to_i(); - return self.$roll_fragment_table(num); - } else { - return nil - }; - }, $StellarKnights_rollDiceCommand$2.$$arity = 1); - self.$private(); - - Opal.def(self, '$resolute_action', $StellarKnights_resolute_action$3 = function $$resolute_action(num_dices, defence, dice_change_text, command) { - var $a, $b, $$4, $$6, self = this, _ = nil, dice_text = nil, output = nil, dices = nil, dice_change_rules = nil, success = nil; - - - $b = self.$roll(num_dices, 6, self.sortType), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dice_text = ($a[1] == null ? nil : $a[1])), $b; - output = "" + "(" + (command) + ") > " + (dice_text); - dices = $send(dice_text.$split(","), 'map', [], "to_i".$to_proc()); - dice_change_rules = self.$parse_dice_change_rules(dice_change_text); - $send(dice_change_rules, 'each', [], ($$4 = function(rule){var self = $$4.$$s || this, $$5; - - - - if (rule == null) { - rule = nil; - }; - return $send(dices, 'map!', [], ($$5 = function(val){var self = $$5.$$s || this; - - - - if (val == null) { - val = nil; - }; - if (val['$=='](rule['$[]']("from"))) { - return rule['$[]']("to") - } else { - return val - };}, $$5.$$s = self, $$5.$$arity = 1, $$5));}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - if ($truthy(dice_change_rules['$empty?']())) { - } else { - - dices['$sort!'](); - output = $rb_plus(output, "" + " > [" + (dices.$join(",")) + "]"); - }; - if ($truthy(defence['$nil?']())) { - } else { - - success = $send(dices, 'count', [], ($$6 = function(val){var self = $$6.$$s || this; - - - - if (val == null) { - val = nil; - }; - return $rb_ge(val, defence);}, $$6.$$s = self, $$6.$$arity = 1, $$6)); - output = $rb_plus(output, "" + " > 成功数: " + (success)); - }; - return output; - }, $StellarKnights_resolute_action$3.$$arity = 4); - - Opal.def(self, '$parse_dice_change_rules', $StellarKnights_parse_dice_change_rules$7 = function $$parse_dice_change_rules(text) { - var $$8, self = this, rules = nil; - - - if ($truthy(text['$nil?']())) { - return []}; - text = text['$[]']($range(1, -1, false)); - rules = $send(text.$split(","), 'map', [], ($$8 = function(rule){var self = $$8.$$s || this, v = nil; - - - - if (rule == null) { - rule = nil; - }; - v = $send(rule.$split(">"), 'map', [], "to_i".$to_proc()); - return $hash2(["from", "to"], {"from": v['$[]'](0), "to": v['$[]'](1)});}, $$8.$$s = self, $$8.$$arity = 1, $$8)); - return rules; - }, $StellarKnights_parse_dice_change_rules$7.$$arity = 1); - - Opal.def(self, '$roll_all_situation_b2_tables', $StellarKnights_roll_all_situation_b2_tables$9 = function $$roll_all_situation_b2_tables() { - var $$10, self = this; - - return $send($range(1, 6, false), 'map', [], ($$10 = function(num){var self = $$10.$$s || this; - - - - if (num == null) { - num = nil; - }; - return $$($nesting, 'TABLES')['$[]']("" + "STB2" + (num)).$roll(self.$bcdice());}, $$10.$$s = self, $$10.$$arity = 1, $$10)).$join("\n") - }, $StellarKnights_roll_all_situation_b2_tables$9.$$arity = 0); - - Opal.def(self, '$roll_all_situation_tables', $StellarKnights_roll_all_situation_tables$11 = function $$roll_all_situation_tables() { - var $$12, self = this; - - return $send(["STA", "STB", "STC"], 'map', [], ($$12 = function(command){var self = $$12.$$s || this; - - - - if (command == null) { - command = nil; - }; - return $$($nesting, 'TABLES')['$[]'](command).$roll(self.$bcdice());}, $$12.$$s = self, $$12.$$arity = 1, $$12)).$join("\n") - }, $StellarKnights_roll_all_situation_tables$11.$$arity = 0); - - Opal.def(self, '$roll_personality_table', $StellarKnights_roll_personality_table$13 = function $$roll_personality_table() { - var $a, $b, self = this, value1 = nil, index1 = nil, value2 = nil, index2 = nil; - - - $b = self.$get_table_by_d66($$($nesting, 'PERSONALITY_TABLE')), $a = Opal.to_ary($b), (value1 = ($a[0] == null ? nil : $a[0])), (index1 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_d66($$($nesting, 'PERSONALITY_TABLE')), $a = Opal.to_ary($b), (value2 = ($a[0] == null ? nil : $a[0])), (index2 = ($a[1] == null ? nil : $a[1])), $b; - return "" + "性格表(" + (index1) + "," + (index2) + ") > " + (value1) + "にして" + (value2); - }, $StellarKnights_roll_personality_table$13.$$arity = 0); - - Opal.def(self, '$roll_fragment_table', $StellarKnights_roll_fragment_table$14 = function $$roll_fragment_table(num) { - var $$15, $$16, $$17, self = this, results = nil, values = nil, indexes = nil; - - - if ($truthy($rb_le(num, 0))) { - return nil}; - results = $send($$($nesting, 'Array'), 'new', [num], ($$15 = function(){var self = $$15.$$s || this; - - return self.$get_table_by_d66($$($nesting, 'FRAGMENT_TABLE'))}, $$15.$$s = self, $$15.$$arity = 0, $$15)); - values = $send(results, 'map', [], ($$16 = function(r){var self = $$16.$$s || this; - - - - if (r == null) { - r = nil; - }; - return r['$[]'](0);}, $$16.$$s = self, $$16.$$arity = 1, $$16)); - indexes = $send(results, 'map', [], ($$17 = function(r){var self = $$17.$$s || this; - - - - if (r == null) { - r = nil; - }; - return r['$[]'](1);}, $$17.$$s = self, $$17.$$arity = 1, $$17)); - return "" + "フラグメント表(" + (indexes.$join(",")) + ") > " + (values.$join(",")); - }, $StellarKnights_roll_fragment_table$14.$$arity = 1); - Opal.const_set($nesting[0], 'THEME_TABLE', [["未来", "占い", "遠雷", "恋心", "歯磨き", "鏡"].$freeze(), ["過去", "キス", "ささやき声", "黒い感情", "だっこ", "青空"].$freeze(), ["童話", "決意", "風の音", "愛情", "寝顔", "鎖"].$freeze(), ["ふたりの秘密", "アクシデント!", "小鳥の鳴き声", "笑顔", "食事", "宝石"].$freeze(), ["思い出", "うとうと", "鼓動", "嫉妬", "ベッド", "泥"].$freeze(), ["恋の話", "デート", "ため息", "内緒話", "お風呂", "小さな傷"].$freeze()].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_A', ["朝、誰もいない", "騒がしい昼間の", "寂しい夕暮れの横たわる", "星の瞬く夜、", "静謐の夜更けに包まれた", "夜明け前の"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B_1_2', ["教室  小道具:窓、机、筆記用具、チョークと黒板、窓の外から聞こえる部活動の声", "カフェテラス 小道具:珈琲、紅茶、お砂糖とミルク、こちらに手を振っている学友", "学園の中庭 小道具:花壇、鳥籠めいたエクステリア、微かに聴こえる鳥の囁き", "音楽室 小道具:楽器、楽譜、足踏みオルガン、壁に掛けられた音楽家の肖像画", "図書館 小道具:高い天井、天井に迫る程の本棚、無数に収められた本", "渡り廊下 小道具:空に届きそうな高さ、遠くに別の学園が見える、隣を飛び過ぎて行く鳥"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B_3_4', ["花の咲き誇る温室 小道具:むせ返るような花の香り、咲き誇る花々、ガラス越しの陽光", "アンティークショップ 小道具:アクセサリーから置物まで、見慣れない古い機械は地球時代のもの?", "ショッピングモール 小道具:西欧の街並みを思わせるショッピングモール、衣類に食事、お茶屋さんも", "モノレール 小道具:車窓から覗くアーセルトレイの街並み、乗客はあなたたちだけ", "遊歩道 小道具:等間隔に並ぶ街路樹、レンガ造りの街並み、微かに小鳥のさえずり", "おしゃれなレストラン 小道具:おいしいごはん、おしゃれな雰囲気、ゆったりと流れる時間"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B_5_6', ["何処ともしれない暗がり 小道具:薄暗がりの中、微かに見えるのは互いの表情くらい", "寂れた喫茶店 小道具:姿を見せないマスター、その孫娘が持ってくる珈琲、静かなひととき", "階段の下、秘密のお茶会 小道具:知る人ぞ知る階段下スペースのお茶会、今日はあなたたちだけ", "学生寮の廊下 小道具:滅多に人とすれ違わない学生寮の廊下、窓の外には中庭が見える", "ふたりの部屋 小道具:パートナーと共に暮らすあなたの部屋、内装や小物はお気に召すまま", "願いの決闘場 小道具:決闘の場、ステラナイトたちの花章が咲き誇る場所"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B', [$$($nesting, 'SITUATION_TABLE_B_1_2'), $$($nesting, 'SITUATION_TABLE_B_1_2'), $$($nesting, 'SITUATION_TABLE_B_3_4'), $$($nesting, 'SITUATION_TABLE_B_3_4'), $$($nesting, 'SITUATION_TABLE_B_5_6'), $$($nesting, 'SITUATION_TABLE_B_5_6')].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B2_1', ["地下のだだっぴろい学食", "パンの種類が豊富な購買の前", "本当は進入禁止の屋上", "キャンプ部が手入れしている中庭", "共用の広いグラウンド", "使い古された教室"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B2_2', ["(美術or音楽)準備室", "美しく整備された中庭", "音楽室", "格調高いカフェテラス", "誰もいない大型劇場", "完璧な調和を感じる温室"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B2_3', ["中庭の神殿めいた温室", "質素だが美しい会食室", "天井まで届く本棚の並ぶ図書館", "誰もいない学習室", "寮生たちの秘密のお茶会室", "寮の廊下"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B2_4', ["遠く聞こえる爆発音", "学生のアンケート調査を受ける", "空から降ってくるドローン", "膨大な蔵書を備えた閉架書庫", "鳴らすと留年するという小さな鐘の前", "木漏れ日のあたたかな森"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B2_5', ["おしゃれなカフェテラス", "小さなプラネタリウム", "ローマの神殿めいた屋内プール", "誰もいない講堂", "謎のおしゃれな空き部屋", "花々の咲き乱れる温室"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B2_6', ["人気のない教室", "歴代の寄せ書きの刻まれた校門前", "珍しく人気のない学食", "鍵の外れっぱなしの屋上", "校舎裏", "外周環状道路へ繋がる橋"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_C_1_2_3', ["未来の話:決闘を勝ち抜いたら、あるいは負けてしまったら……未来のふたりはどうなるのだろう。", "衣服の話:冴えない服を着たりしていないか? あるいはハイセンス過ぎたりしないだろうか。よぉし、私が選んであげよう!!", "ステラバトルの話:世界の未来は私たちにかかっている。頭では分かっていても、まだ感情が追いつかないな……。", "おいしいごはんの話:おいしいごはんは正義。100年前も6405年前も異世界だろうと、きっと変わらない真理なのだ。おかわり!", "家族の話:生徒たちは寮生活が多い。離れて暮らす家族は、どんな人たちなのか。いつかご挨拶に行きたいと言い出したりしても良いだろう。", "次の週末の話:週末、何をしますか? 願いをかけた決闘の合間、日常のひとときも、きっと大切な時間に違いない。"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_C_4_5_6', ["好きな人の話:……好きな人、いるんですか? これはきっと真剣な話。他の何よりも重要な話だ。", "子供の頃の話:ちいさな頃、パートナーはどんな子供だったのだろうか。どんな遊びをしたのだろうか。", "好きなタイプの話:パートナーはどんな人が好みなのでしょうか……。気になります、えぇ。", "思い出話:ふたりの思い出、あるいは出会う前の思い出の話。", "願いの話:叶えたい願いがあるからこそ、ふたりは出会った。この戦いに勝利したら、どんな形で願いを叶えるのだろうか。", "ねぇ、あの子誰?:この前見かけたパートナーと一緒にいた子。あの子誰?だーれー!? むー!!"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_C', [$$($nesting, 'SITUATION_TABLE_C_1_2_3'), $$($nesting, 'SITUATION_TABLE_C_1_2_3'), $$($nesting, 'SITUATION_TABLE_C_1_2_3'), $$($nesting, 'SITUATION_TABLE_C_4_5_6'), $$($nesting, 'SITUATION_TABLE_C_4_5_6'), $$($nesting, 'SITUATION_TABLE_C_4_5_6')].$freeze()); - Opal.const_set($nesting[0], 'GAKUEN_TABLE', ["アーセルトレイ公立大学", "イデアグロリア芸術総合大学", "シトラ女学院", "フィロソフィア大学", "聖アージェティア学園", "スポーン・オブ・アーセルトレイ"].$freeze()); - Opal.const_set($nesting[0], 'HOPE_TABLE_1_2_3', ["より良き世界:世界はもっとステキになる。きっと、ずっと、もっと。", "まだまだ物足りない:もっと上へ、もっと強く、あなたの未来は輝いている。", "立ち止まっている暇はない!:止まっている時間がもったいない。もっともっと世界を駆けるのだ!", "私が守るよ:君を傷つける全てから、私が絶対守ってあげる。", "未来は希望に満ちている:生きていないと、素敵なことは起きないんだ!", "慈愛の手:届く限り、あなたは手を差し伸べ続ける。"].$freeze()); - Opal.const_set($nesting[0], 'HOPE_TABLE_4_5_6', ["自分を犠牲にしてでも:世界はもっときらきらしているんだよ。それを伝える為に、あなたは自分すら犠牲にする。", "右手を伸ばす:救いたいもの、助けたいもの、大事なもの、なにひとつ見捨てるつもりはない!", "無限の愛:愛を注ごう。この胸に溢れんばかりのこの愛を!", "あなたを王に:絶望を知ったパートナーこそ、世界の王に相応しい。私があなたを王にする!", "救世主:私はきっと、世界を救える。誰だって、救ってみせる。", "大好きな人のために!:世界は希望に満ちている。あなたをもっと幸せにしたいの!"].$freeze()); - Opal.const_set($nesting[0], 'HOPE_TABLE', [$$($nesting, 'HOPE_TABLE_1_2_3'), $$($nesting, 'HOPE_TABLE_1_2_3'), $$($nesting, 'HOPE_TABLE_1_2_3'), $$($nesting, 'HOPE_TABLE_4_5_6'), $$($nesting, 'HOPE_TABLE_4_5_6'), $$($nesting, 'HOPE_TABLE_4_5_6')].$freeze()); - Opal.const_set($nesting[0], 'DESPAIR_TABLE_1_2_3', ["理不尽なる世界:あなたは世界が如何に理不尽であるか思い知った。", "この手は届かない:あなたにも目標はあった。しかし、もうこの手は届かないのだ。", "停滞した世界:どんなにあがこうと、世界は変わらない。この絶望は救われない。", "どうして僕をいじめるの:あなたは虐げられて生きてきた。守ってくれる者など、どこにもいなかった。", "過去は絶望に満ちている:ずっとずっと、悪いことばかり、辛いことばかりだった。", "周囲の視線:世界があなたを見る目は、限りなく冷たいものだった。"].$freeze()); - Opal.const_set($nesting[0], 'DESPAIR_TABLE_4_5_6', ["大事故:それは壮絶な事故、いいや、それは事故なんて優しいものですらなかった。", "目の前で消えたモノ:あなたの目の前で、大切なものは消えてしまった。", "喪失:何よりも大事にしていたものは、もう二度と、この手には戻らない。", "没落:あなたか、あなたの親か、ともかくあなたはかつての栄華を一瞬にして失った。", "救いはない:底の底へと沈んでしまった。もう、誰も、俺を救ってくれる人は……。", "偽物だった:あなたは幸せだった。そう思っていた。でもそれは全て作り物で、あなたは騙されていたのだ。"].$freeze()); - Opal.const_set($nesting[0], 'DESPAIR_TABLE', [$$($nesting, 'DESPAIR_TABLE_1_2_3'), $$($nesting, 'DESPAIR_TABLE_1_2_3'), $$($nesting, 'DESPAIR_TABLE_1_2_3'), $$($nesting, 'DESPAIR_TABLE_4_5_6'), $$($nesting, 'DESPAIR_TABLE_4_5_6'), $$($nesting, 'DESPAIR_TABLE_4_5_6')].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_1_2', ["熟練ステラナイト:あなたは既に何度もステラバトルを征してきた熟練者で ある。【勲章:3~7の間の好きな値】【歪みの共鳴:1】", "権力者の血筋:統治政府や企業の上層部、あるいは学園組織の運営者の家系である。", "天才:あなたは紛うことなき天才だ。", "天涯孤独:あなたに両親はいない。促成培養槽で造られた者なのか、あるいは両親を失ったのか……。", "救いの手:あなたは誰かに助けてもらった。だから、ここにいるのだ。", "欠損:心や身体、大切な宝物、家族、あなたは何かを失って、そのまま今に至った。"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_3_4', ["大切なもの:大事にしているものがある。", "お気に入りの場所:好きな場所がある。秘密の場所、あるいは誰かと来たい場所。", "メイド or バトラー:あなたには仕えるべき相手がいる。金銭の関係か、家柄か、恩義故かは自由に決めて良い。", "パートナー大好き!!!!!!:私はー!! パートナーがー!! 大好きだー!!!", "目指せ理想のタイプ:パートナーの理想のタイプ目指してー、ファイトー!!", "世界への不満:こんな世界はダメダメだ! 私が絶対に創り変えてやる!!"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_5_6', ["停滞:何もかもがつまらない。満たされない。動かない世界に嫌気が差している。", "願いの奴隷:願いを叶える為なら、手段は選ばない。願いの為だけに私は生きている。", "犯罪者の子:あなたの親は何らかの犯罪に手を染めた。その悪評は、子である君にも影響を及ぼしている。", "探求者:世界の真実、隠された真実、万物の真理……あなたが追い求めるものはどこまでも尽きない。", "正義:困った人を見捨てられない、悪は許せない、この胸に宿るのは正義の心。", "誓約生徒会(カヴェナンター):あなたは一度、エクリプスと化し、討伐された者だ。しかし願いを諦めることは出来ない。だから、あなたはこの仮面を受け取り、戦い続けているのだ。【勲章:0~5の間の好きな値】【歪みの共鳴:0~2の間の好きな値】"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE', [$$($nesting, 'YOUR_STORY_TABLE_1_2'), $$($nesting, 'YOUR_STORY_TABLE_1_2'), $$($nesting, 'YOUR_STORY_TABLE_3_4'), $$($nesting, 'YOUR_STORY_TABLE_3_4'), $$($nesting, 'YOUR_STORY_TABLE_5_6'), $$($nesting, 'YOUR_STORY_TABLE_5_6')].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_ANOTHER_WORLD_1_2', ["終わりなき戦場:あなたは果ての見えない戦場の世界からここへ流れ着いた。", "滅びの世界:戦争、あるいは環境汚染か、滅びた後の世界から、あなたはここへ流れ着いた。", "獣人たちの世界:人とは、獣の特徴を備えた者を指す言葉だった――あなたの世界では。あなたは獣の特徴を備えており、それはアーセルトレイでは奇異の目で見られることだろう。", "箱庭の世界:都市か、屋敷か、あなたの住んでいた世界は極狭いものだった。大好きな姉妹や家族と、ただ平穏に暮らすだけの日々。永遠に続くと思っていたそれは、ある日突然に崩壊して、あなたはこの世界へと辿り着いた。", "永遠なる迷宮の世界:無限に広がる迷宮の世界、人々はそこを旅する探索者だった。旧世界の遺産とも称される星まるごとが迷宮の世界、心躍る冒険――そんな日々は、ある日突然に終わってしまった。あなたが辿り着いたのは、アーセルトレイと呼ばれるこの場所だった。", "巡礼者の世界:広大な自然と石造りの都の世界を、誰もが旅をし続ける世界からあなたはここへ流れ着いた。アーセルトレイに存在する文明は、どれもあなたにとって未知のものだろう。だが、広大なるあの世界へ、戻ることはもう出来ないのだ。"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_ANOTHER_WORLD_3_4', ["永遠のヴィクトリア:200年にわたるヴィクトリア女王の統治が続く常闇の世界。蒸気の霧が街を覆い、夜な夜な怪人が闊歩する世界から、あなたはここへ流れ着いた。あなたからすれば、ここは平和な世界だ。しかし、ステラバトルの願いがぶつかる華やかさだけは、あの頃を思い出させる。", "剣撃乱舞する世界:我々からすれば戦国と呼ばれた極東の一時代を、永遠に繰り返していた世界からあなたはここへ流れ着いた。あなたの剣技は、ステラバトルを切り抜けるのに十分に役立つことだろう。", "薄暗き森の世界:広大にして永遠に続く森に包まれた世界、霧と風、獣の鳴き声に満ちた世界から、あなたはここへ流れ着いた。あなたの姿を見て、エルフだとか、妖精だとか呼ぶものもいるかもしれないが、あなたには関係のないことだ。", "人類の瀬戸際:ここも、故郷も、大して変わらない。あなたの故郷は、地球に先んじてロアテラに滅ぼされた世界だ。ここを守護することに躊躇いはない。しかしそれよりも、あなたにとってはここで出会った唯一のパートナーの方が大切なのだ。", "人形劇の世界:あなたの世界に生きる人々は、元々は人間と呼ばれていたらしい。全ての住人が人形と化したあなたの故郷は、それなりに平和で、楽しいものだったはずだ。しかしそんな日々は、ある日突然終わってしまった。人形そのものであるあなたの姿は、時に奇異の目で見られることだろう。", "怪獣迎撃の世界:巨大な怪獣が存在し、それを迎え撃つ戦いを繰り返していた世界から、あなたはここへ流れ着いた。そして今も、アーセルトレイは異世界からの侵略者、ロアテラに狙われていると、あなたは理解している。"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_ANOTHER_WORLD_5_6', ["蒸気機関の世界:蒸気機関技術が異様に発達した世界から、あなたはここへ流れ着いた。アーセルトレイの技術レベルはそれらに匹敵するものだが、あなたからすると使い方の分からない不思議な技術だ。", "極東幻想の世界:我々の知る旧地球時代の日本、その国にて語られた鬼や妖怪が実在した世界からあなたはここへ流れ着いた。あなたからすれば、ステラナイトの強さはそれらをも超えるものかもしれない。", "異端生物の世界:バイオ技術か、交配の結果か、様々な生物と人類が融合した世界から、あなたはここへ辿り着いた。獣や鳥、海棲生物の特徴をあなたは備えている。", "異端科学の世界:人と機械の境界が曖昧な世界、個と全が曖昧な世界から、あなたはここへ流れ着いた。", "先進科学の世界:地球の科学がどこまでも真っ直ぐに育った世界から、あなたはここへ流れ着いた。美しく磨きあげられた街並み、道行く人の誰もが笑顔で、万人が幸せな世界から。", "草花の世界:植物と人が融合した世界から、あなたはここへ流れ着いた。あなたの身体は植物そのものかもしれないし、あるいは眼窩から花が咲いているかもしれない。"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_ANOTHER_WORLD', [$$($nesting, 'YOUR_STORY_TABLE_ANOTHER_WORLD_1_2'), $$($nesting, 'YOUR_STORY_TABLE_ANOTHER_WORLD_1_2'), $$($nesting, 'YOUR_STORY_TABLE_ANOTHER_WORLD_3_4'), $$($nesting, 'YOUR_STORY_TABLE_ANOTHER_WORLD_3_4'), $$($nesting, 'YOUR_STORY_TABLE_ANOTHER_WORLD_5_6'), $$($nesting, 'YOUR_STORY_TABLE_ANOTHER_WORLD_5_6')].$freeze()); - Opal.const_set($nesting[0], 'WISH_TABLE_1_2', ["未知の開拓者:誰も知らない世界、誰も知らない宇宙、誰も知らない星に旅立つんだ!【願いの階梯:4】", "故郷の復興:あなたの故郷である異世界、あるいは地球を復興する。【願いの階梯:4(階層規模の場合)】【願いの階梯:7(惑星規模の場合)】", "復讐:絶対にこの復讐を果たすのだ。【願いの階梯:2】", "誰にも傷つけられない世界:誰も私たちを傷つけない。そんな世界であればいい。【願いの階梯:7(惑星規模)】【願いの階梯:8(宇宙規模)】", "きらめく世界:世界を明るく楽しくしたい。私が光になるんだ!【願いの階梯:3(自分の変革)】【願いの階梯:7(世界そのものの変革)】", "おいしいごはん:ふたりで美味しいご飯を食べよう。それが世界で、一番大切なことなんだよ!【願いの階梯:2(おいしいごはんを食べるだけ)】【願いの階梯:4(ふたりの置かれた状況の改善)】"].$freeze()); - Opal.const_set($nesting[0], 'WISH_TABLE_3_4', ["私だけのもの:独り占めしたいモノがある。【願いの階梯:5】", "新たなる存在:この世に存在しないけれど、存在してほしいと願うモノ。私はそれが欲しいんだ。【願いの階梯:6】", "欲しいもの:どうしても手に入れたいものがある。【願いの階梯:1~10(欲しいものの種類によって変動)】", "取り戻す:あなたたちは何かを奪われた。それを取り戻すのが、唯一の願いだ。【願いの階梯:4(努力次第でいつか手に届く範囲)】【願いの階梯:6(通常は取り戻せないもの)】", "誰よりも、高く、遠くへ!:こんな鳥籠は嫌だ。空の果てを目指すんだ!【願いの階梯:4(積層都市内)】【願いの階梯:8(宇宙規模の場合)】", "あなたを自由に:大切なものは囚われ、縛られている。私のちからで、それを解き放つんだ!【願いの階梯:4(努力次第でいつか叶う範囲)】【願いの階梯:6(奇跡の領域)】"].$freeze()); - Opal.const_set($nesting[0], 'WISH_TABLE_5_6', ["誰かの笑顔:誰かの笑顔の為に戦っても、いいだろう?【願いの階梯:1~6(対象の状況によって変動する)】", "別の世界へ:……この世界ではない、別の世界へ行きたい。【願いの階梯:7(惑星規模)】【願いの階梯:8(宇宙規模)】", "世界を平和に:平穏な日々を願っても許されるような世界に、この世界をやすらぎに満ちた場所に……。【願いの階梯:7】", "世界を再誕させる:世界は根本から創り直す必要がある!【願いの階梯:8】", "世界を征服する:私たちが王になってやる!【願いの階梯:7】", "契約者:あなたの願いは既に叶えられた。今も戦い続けている理由は、女神との契約があるからだ。【願いの階梯:なし】"].$freeze()); - Opal.const_set($nesting[0], 'WISH_TABLE', [$$($nesting, 'WISH_TABLE_1_2'), $$($nesting, 'WISH_TABLE_1_2'), $$($nesting, 'WISH_TABLE_3_4'), $$($nesting, 'WISH_TABLE_3_4'), $$($nesting, 'WISH_TABLE_5_6'), $$($nesting, 'WISH_TABLE_5_6')].$freeze()); - Opal.const_set($nesting[0], 'PERSONALITY_TABLE', ["可憐", "冷静", "勇敢", "楽観主義", "負けず嫌い", "コレクター気質", "クール", "癒やし系", "惚れやすい", "悲観主義", "泣きやすい", "お嬢様", "純粋", "頑固", "辛辣", "まじめ", "落ち込みやすい", "謙虚", "スマート", "ゆるふわ", "好奇心旺盛", "はらぺこ", "華麗", "狭いところが好き", "冷徹", "朴念仁", "王子様", "目立ちたがり", "過激", "マゾヒスト", "ダンディ", "あらあらうふふ", "過保護", "死にたがり", "強い自尊心", "サディスト"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_MARGINALIA_1_2', ["パブ/カフェー店員:あなたは霧の帝都に無数に存在するパブ、あるいは桜の帝都で増え始めたカフェーの店員です。", "屋台の店員:― 屋台とは戦いだ。あなたは霧の帝都の至る所に存在する、屋台の店員です。商売敵は数え切れないくらい存在します。目指せ、ナンバーワン屋台!!", "商人:がっぽがっぽ。お空に都市がやってきて、販路が増えたぞがっぽがっぽ。あなたは様々な商品を扱う商人です。小売からもうひとつの世界を股にかける交易商人まで、商いの道は果てしなく広がっています。", "飛行船・船長:あなたはふたつの都市をつなぐ交通の要、飛行船の船長です! ところで最近、船長の間で変な噂がたっています。ふたつの世界のちょうど狭間を通過する瞬間に、怪物と戦う騎士の幻が見えるのだとかなんとか……。", "飛行船駅員:あなたは飛行船発着場で働く駅員です。管制員から売店の職員まで、数多の人々によって飛行船は運航されています。", "図書館司書/博物館学芸員:あなたは文化の保護、知識の継承を担っています。霧の帝都、桜の帝都のどちらにも、立派な図書館、博物館が存在します。有名なのは桜の帝都「桜花書籍館」と霧の帝都「図書博物館」でしょう。"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_MARGINALIA_3_4', ["帝都警察:あなたは帝都警察に所属し、都市の平和を守っています。帝都警察は市民の憧れの職業であり、皆誇りをもって職務に励んでいます。", "警察軍:あなたは都市の有事の際に出動するべく、日々訓練に励む軍人です。災害や大規模な犯罪が発生した時こそ、あなたの出番です。", "寡黙なる霧(クラブ・マイクロフト):霧の女王に仕える秘密の騎士団。いわゆる諜報機関、スパイ組織の構成員です。あなたは日々、怪物の発生や犯罪組織の暗躍に目を光らせています。", "桜機関(ブロッサムエンジン):あなたはこの世界を、ロアテラに喰われる前に滅ぼすことを決意し、桜機関に所属したエージェントです。しかし、まだメモリィズを使用していないのは、迷いがあるからなのか、何らかの思惑があるからなのかもしれません。", "桜花教神官:「万物には桜が宿っています。我らの誇りたる桜を傷つけることがないように」あなたは桜花教の神官です。神官は日々大変忙しい生活を送っています。毎日の祭事に祭りの準備、そしてふらりと現れる桜の皇帝への対応……頑張ってくださいね?", "妖精教神官:「妖精は、いつもあなたの行いを見守っています」あなたは妖精教の神官です。週に一度のお祈りの日、毎日の貧民街への炊き出し、迷子の保護、霧の宮殿から抜け出していった霧の女王の捜索等、大忙しの日々が待っています。"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_MARGINALIA_5_6', ["流浪の民:あなたの祖先は、この世界に「都市の外側」があった時代に、この場所へ流れ着いてきた者です。この都市ではあまり見かけない髪、肌、目の色をしていたり、顔つきが少々異なっていたりします。", "イーストエンド:あなたは霧の帝都の貧民街で暮らしています。何故か伝統的に、貧民街は「イーストエンド」と呼ばれており、その地名がそのまま「貧民」を意味する言葉にもなっています。", "貴族:あなたは貴族として、民を守り、国を守ってきた一族の末裔です。遥かな空に、もうひとつの世界が現れても、異世界の騎士を交えた戦いが起きたとしても、あなたの使命は変わらず民と国を守ることなのです。", "職人:あなたは何らかの技術を身に付けた職人です。時計職人から傘張り職人まで、あなたの技術がふたつの世界を支えているのです。", "メイド/バトラー:あなたは貴族の屋敷や、宮殿、御所で働くメイド/バトラーや、その見習いです。ご主人さまのため、今日も職務に励むのです。", "バックアップ:あなたはかつて桜の皇帝、霧の女王のバックアップとして作成された人造生命体です。うりふたつの容姿をしていますが、その記憶は厳重に封印されており、あなたを含め、誰もその真実を知る者はいません。"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_MARGINALIA', [$$($nesting, 'YOUR_STORY_TABLE_MARGINALIA_1_2'), $$($nesting, 'YOUR_STORY_TABLE_MARGINALIA_1_2'), $$($nesting, 'YOUR_STORY_TABLE_MARGINALIA_3_4'), $$($nesting, 'YOUR_STORY_TABLE_MARGINALIA_3_4'), $$($nesting, 'YOUR_STORY_TABLE_MARGINALIA_5_6'), $$($nesting, 'YOUR_STORY_TABLE_MARGINALIA_5_6')].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_MARGINALIA_1_2_3', ["表のお仕事:生きていくにはお金がかかる。霧の女王様や総帥に頼ってばかりじゃいられない! さぁ今日も元気に出勤だ! パートナーと一緒に、どんなお仕事をしているか描写してみよう!", "カフェーでのんびり:とてものんびりした時間。おいしい紅茶とあまーいお菓子。……滅びそうな世界だなんて、思えないよね。", "路面電車:道路を電車が走るなんて不思議な気分。最新鋭の路面電車をご堪能あれ。さて、今日はどこへ行こうかな?", "参拝:霧の帝都なら妖精教会、桜の帝都なら桜花教神社。お参りをすると、ちょっと自分の考えがまとまるような気がする。", "アパルトメント:アーセルトレイと比べると、どうしても時代を感じてしまうアパルトメント。でもパートナーがいれば関係ない! せっかくだし、この世界でも思い出を作っていこう!", "桜の皇帝に遭遇:すごく意味深な質問をされた後、皇帝陛下は答えを聞くことなく、にっこりと微笑んで去っていった。えっ、あれ本物だよね? 本物の皇帝だよね!?"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_MARGINALIA_4_5_6', ["暗闇会議:路地裏か、真夜中の私室か、夢の中か、ふとした瞬間に訪れた暗闇。「君たちは、永遠に続く苦しみを生きるか、その前に死ぬか、どちらが正しいと思う?」そんな声が聞こえた気がする。", "東部暗黒街:霧の帝都で最も治安の悪い場所。けれど誰もが好きでそうなったわけじゃない。人によっては、ここの方が居心地が良いのかも。", "帝都劇場:どちらの帝都にも、立派な劇場がある。最近では電気館なる、アーセルトレイでいう映画館もできてきたらしいよ? ちょっと行ってみない?", "飛行船内:帝都の間を結ぶ飛行船。アーセルトレイのモノレールにも少し似ているけれど、もっとレトロな感じ。船内販売の美味しいアイスクリンは絶対食べておこう!", "パブが私を呼んでいる:パブりに行こうぜ、バディ。愉快な音楽と、美味しい飲み物と、ちょっと癖の強い料理が私たちを待っている! 今夜も派手に騒ごうぜ!", "霧の女王からの呼び出し:霧の女王陛下に呼び出され、宮殿へ向かう道中の会話。いったい何の用事なんだろう? 確か先週は、アーセルトレイの話をいっぱいしながら、美味しいお茶をごちそうになったなぁ。"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_MARGINALIA', [$$($nesting, 'SITUATION_TABLE_MARGINALIA_1_2_3'), $$($nesting, 'SITUATION_TABLE_MARGINALIA_1_2_3'), $$($nesting, 'SITUATION_TABLE_MARGINALIA_1_2_3'), $$($nesting, 'SITUATION_TABLE_MARGINALIA_4_5_6'), $$($nesting, 'SITUATION_TABLE_MARGINALIA_4_5_6'), $$($nesting, 'SITUATION_TABLE_MARGINALIA_4_5_6')].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_LETTER_1_2_3', ["旅に出ていた:あなたが旅先にいる時に、世界の滅びはおとずれた。旅にでなければ、あの人と離れ離れにはならなかったのに。", "生き別れの――:パートナーとは生き別れの兄弟姉妹、親子のような、親密な関係だった。", "双子:あなたとパートナーは双子だった。どこにいても、きっとこの想いと鼓動は同じだ。", "幼馴染:あなたとパートナーは幼馴染だった。", "親友:きっとそれは、恋人や親子よりも深い友情だった。", "隠しきれない本音:本当は隠すつもりだった本音が、手紙となるとどうしても漏れ出してしまう。"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_LETTER_4_5_6', ["愛している:あなたはパートナーを愛している。何よりも、誰よりも、世界よりも。", "パズル:あなたは手紙に本音を隠す。縦読みだったり、暗号だったり……きっとそれは照れ隠しなのだ。", "恥ずかしい!!:かつて言葉では言えたのに、手紙となると素直になれない! どうしてだー!", "インク、筆跡:インクの色、筆跡を見るだけで、その手紙の主が誰だかわかる。――もちろん、君だろう?", "心の支え:心の支えにしているものがある。それはきっと、パートナーがくれたものだ。", "共犯者:ふたりはかつて、何らかの共犯者だった。内容は、自分自身が知っているだろう?"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_LETTER', [$$($nesting, 'YOUR_STORY_TABLE_LETTER_1_2_3'), $$($nesting, 'YOUR_STORY_TABLE_LETTER_1_2_3'), $$($nesting, 'YOUR_STORY_TABLE_LETTER_1_2_3'), $$($nesting, 'YOUR_STORY_TABLE_LETTER_4_5_6'), $$($nesting, 'YOUR_STORY_TABLE_LETTER_4_5_6'), $$($nesting, 'YOUR_STORY_TABLE_LETTER_4_5_6')].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_RECOLLECT_DOLL_1_2_3', ["大好き:本当は、世界のことなんてどうでもいい。パートナーの方が大切。ずっとずっと大切なんだから。", "いつか人間に:あなたはリコレクト・ドールではなく、人間になりたいと思っている。", "永遠の命:遥かな未来を見てみたい。願わくば、パートナーと一緒に。", "ふたりきり:あなたはパートナーと一緒にいることだけを大切なことだと考えている。", "私は人形:……感情? それは必要なもの?", "探検隊:あなたは荒廃したこの世界をどこまでも探検したいと思っている。"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_RECOLLECT_DOLL_4_5_6', ["退屈な日々:あなたはこの荒廃した世界を退屈に思っている。", "理想の私:あなたは、あなたの考えうる限り最高で完璧で理想的なリコレクト・ドールだ。", "思弁的ドール:あなたは正直どこにもでかけたくない。いいじゃーん、ここからでも色々分かるって、あっ、ひっぱらないでー、あー。", "使命の徒:あなたはリコレクト・ドールとしての使命を第一に思っている。", "未知なる創造主:あなたはいつか人間に会ってみたいと思っている。", "漠然とした不安:旅も、戦いも、その先に待つのが終わりの日々なら……。みんなはどうして、不安に思わないの……?"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_RECOLLECT_DOLL', [$$($nesting, 'YOUR_STORY_TABLE_RECOLLECT_DOLL_1_2_3'), $$($nesting, 'YOUR_STORY_TABLE_RECOLLECT_DOLL_1_2_3'), $$($nesting, 'YOUR_STORY_TABLE_RECOLLECT_DOLL_1_2_3'), $$($nesting, 'YOUR_STORY_TABLE_RECOLLECT_DOLL_4_5_6'), $$($nesting, 'YOUR_STORY_TABLE_RECOLLECT_DOLL_4_5_6'), $$($nesting, 'YOUR_STORY_TABLE_RECOLLECT_DOLL_4_5_6')].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B_RECOLLECT_DOLL_1_2_3', ["教室:かつて学校の教室だった場所。椅子と机が散乱している。", "劇場:かつて大きな劇場だった場所。天井が崩落し、ステージは瓦礫に埋もれている。", "遊園地:かつて遊園地と呼ばれていた場所。錆びついた骨組み、朽ちたステージ、観覧車の支柱は曲がって、今にも倒れそう。", "民家:扉や窓が無い家屋。埃が積もった室内には、錆びた家具がそのままになっている。", "音楽室:折れた譜面台や朽ちたピアノが放置された学校の一室。かつて音楽室と言われていた場所。", "喫茶店:食器と家具が散乱し、埃が積もった飲食店跡。かつては喫茶店だった場所。"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B_RECOLLECT_DOLL_4_5_6', ["図書館:ぼろぼろになった本と、倒れた本棚が放置された施設。かつて図書館だった場所。", "高層ビル:壁面が崩れ、骨格だけになった高層建築。上層階からは荒廃都市全体が見渡せる。かつてはオフィスビルだった場所。", "ショッピングモール:商店跡が建ち並ぶ施設。かつて大型ショッピングモールだった場所。", "荒野:都市周辺に、地平線の果てまで広がる灰色の荒野。かつてはのどかな田園地帯だった。", "駅:崩れた駅舎と、所々欠損した線路。かつて鉄道の駅だった場所。", "公園:石化した木々と、朽ちたベンチが点在する公園跡。かつては人々のいこいの場所だった。"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B_RECOLLECT_DOLL', [$$($nesting, 'SITUATION_TABLE_B_RECOLLECT_DOLL_1_2_3'), $$($nesting, 'SITUATION_TABLE_B_RECOLLECT_DOLL_1_2_3'), $$($nesting, 'SITUATION_TABLE_B_RECOLLECT_DOLL_1_2_3'), $$($nesting, 'SITUATION_TABLE_B_RECOLLECT_DOLL_4_5_6'), $$($nesting, 'SITUATION_TABLE_B_RECOLLECT_DOLL_4_5_6'), $$($nesting, 'SITUATION_TABLE_B_RECOLLECT_DOLL_4_5_6')].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_C_RECOLLECT_DOLL_1_2_3', ["仲良し:友達なのか、家族なのか。楽しそうによりそう2人の姿。", "けんか:顔を真っ赤にしてにらみ合う2人の姿。どうやらけんかしてしまったらしい。", "ダンス:手を取り、笑いながら、くるくると踊る2人の姿。", "食事:美味しそうに食事を摂る人の姿。あーん。", "読書:何かの本を熱心に読みふける人の姿。あの分厚い本は何?", "おしゃべり:楽しそうにおしゃべりする人々の姿。楽しそう、うぅん、幸せそう、なのかな?"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_C_RECOLLECT_DOLL_4_5_6', ["イベント:笑顔で乾杯する人々の姿。誕生会? 結婚式? 何のイベントだろう?", "家族:連れ添い歩く家族の姿。パパとママ……家族って、どんなもの?", "友達:楽しそうに連れだって歩く、少年少女たちの姿。私たちは、友達……なのかな……?", "恋人:人目を忍んで手を繋ぎ見つめ合う、2人の姿。わ、わわ、わー! これは見ちゃだめー!! ", "別れ:涙を流しながら、別々の方向へ歩いて行く2人の姿。", "怪物:身の丈の倍ほどもある竜のような怪物と、逃げ惑う人々の姿。"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_C_RECOLLECT_DOLL', [$$($nesting, 'SITUATION_TABLE_C_RECOLLECT_DOLL_1_2_3'), $$($nesting, 'SITUATION_TABLE_C_RECOLLECT_DOLL_1_2_3'), $$($nesting, 'SITUATION_TABLE_C_RECOLLECT_DOLL_1_2_3'), $$($nesting, 'SITUATION_TABLE_C_RECOLLECT_DOLL_4_5_6'), $$($nesting, 'SITUATION_TABLE_C_RECOLLECT_DOLL_4_5_6'), $$($nesting, 'SITUATION_TABLE_C_RECOLLECT_DOLL_4_5_6')].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_1_2_3', ["長い廊下:お喋りをしながら歩いていると、いつまで経っても目的地につかないながーい廊下。時々遭難者がでるの。", "迷子の女の子発見:迷子の女の子に遭遇してしまった。道案内してあげよう。……でも、やけに古い形の制服だなぁ。", "中庭のお茶会:お散歩していたらお茶会に招かれちゃった。みんなふたりの馴れ初めを聞きたいらしいぞ?", "誰もいない教室:あれ? さっきまでみんないたのに……。今はふたりしかいないみたい。", "学生寮:第3階層、シトラ女学院学生寮。まるで鳥籠のようだけれど、暮らしてみれば居心地は抜群。", "音楽室:昼間なら合唱部の歌声が、夜ならとても静かな夜の風が聞こえる場所。"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_4_5_6', ["シトラ女学院旧校舎:地球時代からあったとされる、まるで神殿のような白く美しい旧校舎。立入禁止。でも内緒話にはうってつけ。", "輝紡の塔:塔とは名ばかりの、各委員会が部屋を構える大きなお屋敷。よく迷子が出るという噂あり。", "地下談話室:良く晴れた日の温室を、絵画と錯視で再現した談話室。雨の日でもぽかぽか。", "中庭のさくら:第1階層、シトラ女学院の中庭には、とても美しいさくらが咲いています。これは地球時代からあるものなのだとか……。", "約束の館:静かに祈りを捧げる場所。昔は礼拝堂と呼ばれていたとか。ここで愛の告白をすると、永遠の愛が得られるという噂も!", "星詠の間:輝紡の塔、最上階の小さな一室。地球があった頃の星空を再現する、星空投影機が設置されています。"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL', [$$($nesting, 'SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_1_2_3'), $$($nesting, 'SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_1_2_3'), $$($nesting, 'SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_1_2_3'), $$($nesting, 'SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_4_5_6'), $$($nesting, 'SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_4_5_6'), $$($nesting, 'SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_4_5_6')].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_ECLIPSE_1_2_3', ["道行く人々、その全ての視線が、まるで俺達を値踏みしているようだ……。", "かけられる言葉、その全てに何か裏があるように思える。俺達を騙そうとしているんじゃないか?", "部屋から出たくない。世界の全てが俺を殺そうとしている。早く、早くステラバトルの夜を……。", "何故こいつは、俺の顔を見て笑っているんだ?不快だ……殺してしまいたい……。", "俺をひとりにしないでくれ、どこにも行かないでくれ、頼む、俺を孤独にしないでくれ……。", "誰も俺達を信じない、誰も俺達を必要としない。俺には、お前だけいればいいんだ。"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_ECLIPSE_4_5_6', ["世界の全てがおかしくなってしまった。もはや、世界を救えるのは俺達だけだ。", "ふたりの女神め、お前たちが黒幕だったのか。ステラバトルを終えたら、次はお前たちを殺してやる。", "俺の願いは……何だったか……。ああ、いや、すまない。大丈夫だ、俺は冷静だ。本当に……ああ……。", "風景のコントラストが、やけに強く見える。趣味の悪い絵画のようで気持ち悪い……。", "何を食べても味が感じられない。ロアテラの力が、世界の法則にまで侵食したのだろうか……。", "世界の全てがモノクロに見える。なんだこれは、ロアテラの力によるものなのか? 早く、早く世界を救わねば……。"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_ECLIPSE', [$$($nesting, 'SITUATION_TABLE_ECLIPSE_1_2_3'), $$($nesting, 'SITUATION_TABLE_ECLIPSE_1_2_3'), $$($nesting, 'SITUATION_TABLE_ECLIPSE_1_2_3'), $$($nesting, 'SITUATION_TABLE_ECLIPSE_4_5_6'), $$($nesting, 'SITUATION_TABLE_ECLIPSE_4_5_6'), $$($nesting, 'SITUATION_TABLE_ECLIPSE_4_5_6')].$freeze()); - Opal.const_set($nesting[0], 'FRAGMENT_TABLE', ["出会い", "水族館", "動物園", "絵本", "童話", "神話", "怒った", "笑った", "泣いた", "好き", "愛情", "憎悪", "寒い", "暑い", "甘い", "苦い", "お菓子", "路地", "部屋", "身体", "ぬくもり", "毛布", "空想", "願い", "笑顔", "味覚", "映画", "朗読", "うた", "音楽", "視力", "肌の色", "聴力", "声", "痛覚", "触覚"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_BRINGER_1_2_3', ["肉親を失った:ブライトによる事件であなたは肉親を失った。", "恋人を失った: ブライトによる事件であなたは恋人や伴侶を失った。", "八つ当たり:あなたはやり場のない怒りを、ブリンガーとしての職務にぶつけている。", "正義感:あなたがブライトを狩れば、助かる人がいる。", "スカウト:あなたは何らかの才能を見出され、ブリンガーとなった。", "冷徹なる者:あなたはフォージの生命を、冷徹に切り捨てられると見込まれスカウトされた。本当に?"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_BRINGER_4_5_6', ["復讐:あなたはブライトという存在に復讐するために生きている。", "ノブリス・オブリージュ:あなたはブリンガーであることを義務だと考えている。", "世界を取り戻す:ラストヴライトを目指そう。君となら、世界を救えるはずだ。", "愛情:あなたはフォージを愛してしまった。", "歴戦のブリンガー:あなたのパートナーはフォージのフラグメントを1~3個失った状態で作成する。", "他階層出身:あなたは他の階層から第753層へ来た折に、世界の崩壊に巻き込まれた。"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_BRINGER', [$$($nesting, 'YOUR_STORY_TABLE_BRINGER_1_2_3'), $$($nesting, 'YOUR_STORY_TABLE_BRINGER_1_2_3'), $$($nesting, 'YOUR_STORY_TABLE_BRINGER_1_2_3'), $$($nesting, 'YOUR_STORY_TABLE_BRINGER_4_5_6'), $$($nesting, 'YOUR_STORY_TABLE_BRINGER_4_5_6'), $$($nesting, 'YOUR_STORY_TABLE_BRINGER_4_5_6')].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_FORGE_1_2_3', ["信頼:あなたはパートナーを信頼している。あなたとなら大丈夫。", "愛情:あなたはパートナーを愛している。自分はフォージなのに、こんな感情を抱いても良いのだろうか。", "利用:あなたはパートナーを利用して、何かを成そうとしている。", "正義感:あなたが戦い続ければ、世界は維持される。", "気になる:パートナーが気になる。気になるの。す、好きとかじゃないし。気になるだけ。", "人形:あなたは無感情に、ただ任務を遂行し続ける。"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_FORGE_4_5_6', ["失敗作:あなたは製造段階で問題が発生している。あなたはフラグメントを1個失う。", "ノブリス・オブリージュ:あなたはフォージであることを義務だと考えている。", "世界を取り戻す:ラストヴライトを目指そう。パートナーとなら、世界を救えるはずだ。", "戦いたくない:あなたは戦いが嫌いだ。でもパートナーのためなら……。", "自傷癖:どうせ死ぬなら、今傷ついても同じでしょ?", "過去の記憶:あなたの元になった魂の輝き、その記憶をあなたは持っている。"].$freeze()); - Opal.const_set($nesting[0], 'YOUR_STORY_TABLE_FORGE', [$$($nesting, 'YOUR_STORY_TABLE_FORGE_1_2_3'), $$($nesting, 'YOUR_STORY_TABLE_FORGE_1_2_3'), $$($nesting, 'YOUR_STORY_TABLE_FORGE_1_2_3'), $$($nesting, 'YOUR_STORY_TABLE_FORGE_4_5_6'), $$($nesting, 'YOUR_STORY_TABLE_FORGE_4_5_6'), $$($nesting, 'YOUR_STORY_TABLE_FORGE_4_5_6')].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_ALT_LEVOOT_1_2_3', ["張り込み中:パートナーがあんぱんとコーヒーを買ってきた。ひとまず腹ごしらえだ!", "張り込み中:被疑者の部屋の窓にはカーテンがかかっている。薄暗いし、眠っているのかもしれない。はぁ、こっちも眠いぞ……。", "追走劇:ブライト被疑者が逃走している。逃げるということは何かやましいことがあるのだろう。行くぞ!", "追走劇:日常会話の最後に、他のステラナイトから被疑者確保の救援依頼が入る。手を貸してやるとしましょうか。", "引き渡し後:大人しくつかまったブライト被疑者を引き渡した後。さて、何か食べに行こうか。", "引き渡し後:被疑者を引き渡した後。逮捕の為に色々壊したりしてしまったので、報告書を書かねば。手伝ってくれよぉ……。"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_ALT_LEVOOT_4_5_6', ["非番:今日は何もなければこのまま休みだ。たまにはどこかに出かけるか?", "非番:何か良い匂いがする。……パートナーが手料理を作ってくれた!?", "殺人現場:ブライトの凶行の現場。現場検証に立ち会うことになったが……。", "殺人現場:ブライトに殺されたのは、あなたの懇意にしていた情報屋だった。許さねぇぞ……。", "寿命を数える:あと、パートナーは何日生きられるのか。その日になったら、俺はこいつを殺せるのか。", "記念日:フォージとの記念日は毎月ある。一周年がないから、毎月なんだ。"].$freeze()); - Opal.const_set($nesting[0], 'SITUATION_TABLE_ALT_LEVOOT', [$$($nesting, 'SITUATION_TABLE_ALT_LEVOOT_1_2_3'), $$($nesting, 'SITUATION_TABLE_ALT_LEVOOT_1_2_3'), $$($nesting, 'SITUATION_TABLE_ALT_LEVOOT_1_2_3'), $$($nesting, 'SITUATION_TABLE_ALT_LEVOOT_4_5_6'), $$($nesting, 'SITUATION_TABLE_ALT_LEVOOT_4_5_6'), $$($nesting, 'SITUATION_TABLE_ALT_LEVOOT_4_5_6')].$freeze()); - Opal.const_set($nesting[0], 'TABLES', $hash2(["TT", "STA", "STB", "STB21", "STB22", "STB23", "STB24", "STB25", "STB26", "STC", "GAT", "HOT", "DET", "WIT", "YST", "YSTA", "YSTM", "STM", "YSTL", "YSTR", "STBR", "STCR", "STBS", "STE", "YSTB", "YSTF", "STAL"], {"TT": $$($nesting, 'D66GridTable').$new("お題表", $$($nesting, 'THEME_TABLE')), "STA": $$($nesting, 'Table').$new("シチュエーション表A:時間", "1D6", $$($nesting, 'SITUATION_TABLE_A')), "STB": $$($nesting, 'D66GridTable').$new("シチュエーション表B:場所", $$($nesting, 'SITUATION_TABLE_B')), "STB21": $$($nesting, 'Table').$new("シチュエーション表Bその2:学園編 アーセルトレイ公立大学", "1D6", $$($nesting, 'SITUATION_TABLE_B2_1')), "STB22": $$($nesting, 'Table').$new("シチュエーション表Bその2:学園編 イデアグロリア芸術総合大学", "1D6", $$($nesting, 'SITUATION_TABLE_B2_2')), "STB23": $$($nesting, 'Table').$new("シチュエーション表Bその2:学園編 シトラ女学院", "1D6", $$($nesting, 'SITUATION_TABLE_B2_3')), "STB24": $$($nesting, 'Table').$new("シチュエーション表Bその2:学園編 フィロソフィア大学", "1D6", $$($nesting, 'SITUATION_TABLE_B2_4')), "STB25": $$($nesting, 'Table').$new("シチュエーション表Bその2:学園編 聖アージェティア学園", "1D6", $$($nesting, 'SITUATION_TABLE_B2_5')), "STB26": $$($nesting, 'Table').$new("シチュエーション表Bその2:学園編 スポーン・オブ・アーセルトレイ", "1D6", $$($nesting, 'SITUATION_TABLE_B2_6')), "STC": $$($nesting, 'D66GridTable').$new("シチュエーション表C:話題", $$($nesting, 'SITUATION_TABLE_C')), "GAT": $$($nesting, 'Table').$new("所属組織決定", "1D6", $$($nesting, 'GAKUEN_TABLE')), "HOT": $$($nesting, 'D66GridTable').$new("希望表", $$($nesting, 'HOPE_TABLE')), "DET": $$($nesting, 'D66GridTable').$new("絶望表", $$($nesting, 'DESPAIR_TABLE')), "WIT": $$($nesting, 'D66GridTable').$new("願い事表", $$($nesting, 'WISH_TABLE')), "YST": $$($nesting, 'D66GridTable').$new("あなたの物語表", $$($nesting, 'YOUR_STORY_TABLE')), "YSTA": $$($nesting, 'D66GridTable').$new("あなたの物語表:異世界", $$($nesting, 'YOUR_STORY_TABLE_ANOTHER_WORLD')), "YSTM": $$($nesting, 'D66GridTable').$new("あなたの物語表:マルジナリア世界", $$($nesting, 'YOUR_STORY_TABLE_MARGINALIA')), "STM": $$($nesting, 'D66GridTable').$new("シチュエーション表:マルジナリア世界", $$($nesting, 'SITUATION_TABLE_MARGINALIA')), "YSTL": $$($nesting, 'D66GridTable').$new("あなたの物語表:手紙世界", $$($nesting, 'YOUR_STORY_TABLE_LETTER')), "YSTR": $$($nesting, 'D66GridTable').$new("あなたの物語表:リコレクト・ドール", $$($nesting, 'YOUR_STORY_TABLE_RECOLLECT_DOLL')), "STBR": $$($nesting, 'D66GridTable').$new("シチュエーション表B:場所(リコレクト・ドール)", $$($nesting, 'SITUATION_TABLE_B_RECOLLECT_DOLL')), "STCR": $$($nesting, 'D66GridTable').$new("シチュエーション表C:リコレクト", $$($nesting, 'SITUATION_TABLE_C_RECOLLECT_DOLL')), "STBS": $$($nesting, 'D66GridTable').$new("シチュエーション表B:シトラセッティング", $$($nesting, 'SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL')), "STE": $$($nesting, 'D66GridTable').$new("シチュエーション表:エクリプス専用", $$($nesting, 'SITUATION_TABLE_ECLIPSE')), "YSTB": $$($nesting, 'D66GridTable').$new("あなたの物語表:ブリンガー", $$($nesting, 'YOUR_STORY_TABLE_BRINGER')), "YSTF": $$($nesting, 'D66GridTable').$new("あなたの物語表:フォージ", $$($nesting, 'YOUR_STORY_TABLE_FORGE')), "STAL": $$($nesting, 'D66GridTable').$new("シチュエーション表:オルトリヴート", $$($nesting, 'SITUATION_TABLE_ALT_LEVOOT'))}).$freeze()); - return self.$setPrefixes($rb_plus(["\\d+SK\\d?(,\\d>\\d)*", "STB2", "ALLS", "PET", "FT\\d*"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/SterileLife.js b/src/assets/dicebot/SterileLife.js deleted file mode 100644 index 760b53d8e..000000000 --- a/src/assets/dicebot/SterileLife.js +++ /dev/null @@ -1,318 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$getJudgeResult', '$nil?', '$upcase', '$===', '$get_shipprefix_table', '$get_shipnameformer_table', '$get_shipnamelatter_table', '$get_avataralphabetfirst_table', '$get_avataralphabetsecond_table', '$get_randomnpcship_table', '$get_randomevent_table', '$get_treasurespec_table', '$get_treasureappearance_table', '$get_treasurematerial_table', '$get_treasureobject_table', '$get_sftechnology_table', '$get_sfentertainment_table', '$get_sfculture_table', '$get_sfnature_table', '$get_sfinterior_table', '$to_i', '$last_match', '$<=', '$times', '$-', '$[]', '$roll', '$>=', '$+', '$==', '$to_s', '$>', '$<', '$*', '$/', '$get_table_by_1d10', '$get_table_by_d1010', '$get_table_by_d510']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SterileLife'); - - var $nesting = [self].concat($parent_nesting), $SterileLife_rollDiceCommand$1, $SterileLife_getJudgeResult$2, $SterileLife_get_table_by_1d10$4, $SterileLife_get_table_by_d1010$5, $SterileLife_get_table_by_d510$6, $SterileLife_get_shipprefix_table$7, $SterileLife_get_shipnameformer_table$8, $SterileLife_get_shipnamelatter_table$9, $SterileLife_get_avataralphabetfirst_table$10, $SterileLife_get_avataralphabetsecond_table$11, $SterileLife_get_randomnpcship_table$12, $SterileLife_get_randomevent_table$13, $SterileLife_get_treasurespec_table$14, $SterileLife_get_treasureappearance_table$15, $SterileLife_get_treasurematerial_table$16, $SterileLife_get_treasureobject_table$17, $SterileLife_get_sftechnology_table$18, $SterileLife_get_sfentertainment_table$19, $SterileLife_get_sfculture_table$20, $SterileLife_get_sfnature_table$21, $SterileLife_get_sfinterior_table$22; - - - Opal.const_set($nesting[0], 'ID', "SterileLife"); - Opal.const_set($nesting[0], 'NAME', "ステラーライフTRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "すてらあらいふTRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "◆判定 nDAc[s,d,t] n:ダイス数 c:各種修正 s:1成功(省略不可) d:2成功(省略不可) t:3成功(ダイス目一致時のみ 省略時:無し)\n" + " 例)2DA-3[7,10]\n" + "◆船名ランダム表\n" + " ・船名接頭辞表 VPFT\n" + " ・船名前半表 VNFT\n" + " ・船名後半表 VNRT\n" + " ・アバターアルファベット表① AAFT\n" + " ・アバターアルファベット表② AAST\n" + "◆ヴォヤージュ各種表\n" + " ・ランダムNPC艦表 RNST\n" + " ・ランダムイベント表 RET\n" + " ・お宝特徴表 TRST\n" + " ・お宝形容表 TRAT\n" + " ・お宝外見表 TRMT\n" + " ・お宝物品表 TROT\n" + "◆ステラーライフお題表\n" + " ・超未来の技術 TET\n" + " ・超未来のエンタメ ENT\n" + " ・超未来の文化 CUT\n" + " ・超未来の自然 NAT\n" + " ・超未来の宇宙船内 INT\n"); - self.$setPrefixes(["(\\d+)*DA.*\\[(\\d+),(\\d+)(,(\\d+))?\\]", "VPFT", "VNFT", "VNRT", "AAFT", "AST", "RNST", "RET", "TRST", "TRAT", "TRMT", "TROT", "TET", "ENT", "CUT", "NAT", "INT"]); - - Opal.def(self, '$rollDiceCommand', $SterileLife_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $b, self = this, output = nil, result = nil, type = nil, total_n = nil, $case = nil; - - - output = self.$getJudgeResult(command); - if ($truthy(output['$nil?']())) { - } else { - return output - }; - result = "0"; - type = ""; - total_n = ""; - $case = command.$upcase(); - if ("VPFT"['$===']($case)) { - type = "船名接頭辞表"; - $b = self.$get_shipprefix_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("VNFT"['$===']($case)) { - type = "船名前半表"; - $b = self.$get_shipnameformer_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("VNRT"['$===']($case)) { - type = "船名後半表"; - $b = self.$get_shipnamelatter_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("AAFT"['$===']($case)) { - type = "アバターアルファベット表①"; - $b = self.$get_avataralphabetfirst_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("AAST"['$===']($case)) { - type = "アバターアルファベット表②"; - $b = self.$get_avataralphabetsecond_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RNST"['$===']($case)) { - type = "ランダムNPC艦表"; - $b = self.$get_randomnpcship_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("RET"['$===']($case)) { - type = "ランダムイベント表"; - $b = self.$get_randomevent_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TRST"['$===']($case)) { - type = "お宝特徴表"; - $b = self.$get_treasurespec_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TRAT"['$===']($case)) { - type = "お宝形容表"; - $b = self.$get_treasureappearance_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TRMT"['$===']($case)) { - type = "お宝外見表"; - $b = self.$get_treasurematerial_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TROT"['$===']($case)) { - type = "お宝物品表"; - $b = self.$get_treasureobject_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("TET"['$===']($case)) { - type = "超未来の技術"; - $b = self.$get_sftechnology_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("ENT"['$===']($case)) { - type = "超未来のエンタメ"; - $b = self.$get_sfentertainment_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("CUT"['$===']($case)) { - type = "超未来の文化"; - $b = self.$get_sfculture_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("NAT"['$===']($case)) { - type = "超未来の自然"; - $b = self.$get_sfnature_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;} - else if ("INT"['$===']($case)) { - type = "超未来の宇宙船内"; - $b = self.$get_sfinterior_table(), $a = Opal.to_ary($b), (result = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b;}; - return "" + (type) + "(" + (total_n) + ") > " + (result); - }, $SterileLife_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$getJudgeResult', $SterileLife_getJudgeResult$2 = function $$getJudgeResult(command) { - var $a, $$3, self = this, $case = nil, number = nil, correction = nil, single = nil, double$ = nil, triple = nil, success = nil, dicetext = nil, corrected = nil, result = nil; - - - $case = command; - if (/(\d+)*DA([\d\+\*\-]*[\d])?\[(\d+),(\d+)(,(\d+))?\]/i['$===']($case)) { - number = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 1).$to_i(); - correction = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : 0).$to_i(); - single = ($truthy($a = $$($nesting, 'Regexp').$last_match(3)) ? $a : 4).$to_i(); - double$ = ($truthy($a = $$($nesting, 'Regexp').$last_match(4)) ? $a : 8).$to_i(); - triple = ($truthy($a = $$($nesting, 'Regexp').$last_match(6)) ? $a : -1).$to_i();} - else {return nil}; - success = 0; - dicetext = ""; - corrected = ""; - if ($truthy($rb_le(number, 0))) { - number = 1}; - $send(number, 'times', [], ($$3 = function(){var self = $$3.$$s || this, $b, $c, dice = nil; - - - $c = $rb_minus(self.$roll(1, 10)['$[]'](0), 1), $b = Opal.to_ary($c), (dice = ($b[0] == null ? nil : $b[0])), $c; - if ($truthy(($truthy($b = $rb_ge($rb_plus(dice, correction).$to_i(), single)) ? $b : dice['$=='](triple)))) { - success = $rb_plus(success, 1)}; - if ($truthy(($truthy($b = $rb_ge($rb_plus(dice, correction).$to_i(), double$)) ? $b : dice['$=='](triple)))) { - success = $rb_plus(success, 1)}; - if (dice['$=='](triple)) { - success = $rb_plus(success, 1)}; - if (dicetext['$==']("")) { - - dicetext = dice.$to_s(); - return (corrected = $rb_plus(dice, correction).$to_s()); - } else { - - dicetext = $rb_plus($rb_plus(dicetext, ","), dice.$to_s()); - return (corrected = $rb_plus($rb_plus(corrected, ","), $rb_plus(dice, correction).$to_s())); - };}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - if (correction['$=='](0)) { - result = "" + "(" + (dicetext) + ") > 成功数" + (success)}; - if ($truthy($rb_gt(correction, 0))) { - result = "" + "(" + (dicetext) + ") +" + (correction) + " > (" + (corrected) + ") > 成功数" + (success)}; - if ($truthy($rb_lt(correction, 0))) { - result = "" + "(" + (dicetext) + ") " + (correction) + " > (" + (corrected) + ") > 成功数" + (success)}; - return result; - }, $SterileLife_getJudgeResult$2.$$arity = 1); - - Opal.def(self, '$get_table_by_1d10', $SterileLife_get_table_by_1d10$4 = function $$get_table_by_1d10(table) { - var $a, $b, self = this, dice = nil, text = nil, indexText = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - text = table['$[]']($rb_minus(dice, 1)); - indexText = $rb_minus(dice, 1).$to_s(); - if ($truthy(text['$nil?']())) { - return ["1", indexText]}; - return [text, indexText]; - }, $SterileLife_get_table_by_1d10$4.$$arity = 1); - - Opal.def(self, '$get_table_by_d1010', $SterileLife_get_table_by_d1010$5 = function $$get_table_by_d1010(table) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, num = nil, text = nil, indexText = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - num = $rb_plus($rb_times($rb_minus(dice1, 1), 10), $rb_minus(dice2, 1)); - text = table['$[]'](num); - indexText = "" + ($rb_minus(dice1, 1)) + ($rb_minus(dice2, 1)); - if ($truthy(text['$nil?']())) { - return ["1", indexText]}; - return [text, indexText]; - }, $SterileLife_get_table_by_d1010$5.$$arity = 1); - - Opal.def(self, '$get_table_by_d510', $SterileLife_get_table_by_d510$6 = function $$get_table_by_d510(table) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, num = nil, text = nil, indexText = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - num = $rb_plus($rb_times($rb_divide($rb_minus(dice1, 1), 2), 10), $rb_minus(dice2, 1)); - text = table['$[]'](num); - indexText = "" + ($rb_minus(dice1, 1)) + ($rb_minus(dice2, 1)); - if ($truthy(text['$nil?']())) { - return ["1", indexText]}; - return [text, indexText]; - }, $SterileLife_get_table_by_d510$6.$$arity = 1); - - Opal.def(self, '$get_shipprefix_table', $SterileLife_get_shipprefix_table$7 = function $$get_shipprefix_table() { - var self = this, table = nil; - - - table = ["ISS(独立宇宙船)", "PCS(惑星運搬船)", "NSS(中立星間船)", "SMS(星間商船)", "PSS(民間宇宙船)", "CIS(勅許独立船)", "FTS(自由貿易船)", "OES(外縁探検船)", "SSS(主権星間船)", "HMS(陛下の船)"]; - return self.$get_table_by_1d10(table); - }, $SterileLife_get_shipprefix_table$7.$$arity = 0); - - Opal.def(self, '$get_shipnameformer_table', $SterileLife_get_shipnameformer_table$8 = function $$get_shipnameformer_table() { - var self = this, table = nil; - - - table = ["ブラック", "ホワイト", "レッド", "ブルー", "グリーン", "パープル", "ライラック", "ブラウン", "シルバー", "ゴールド", "ネイビー", "マリン", "オーシャン", "アクア", "セイル", "アンカー", "パイレーツ", "プライヴァティア", "アルマダ", "フロティラ", "ギャリソン", "タンク", "センチネル", "スクァッド", "トループ", "フロント", "オフェンシブ", "ヴァンガード", "オーダー", "フラッグ", "ゲイザー", "アストロ", "ステラー", "ギャラクティック", "スターリー", "ミルキー", "プラネタリー", "ゾディアック", "ポラリス", "イクェータ", "アイアンクラッド", "サイエンス", "ストーン", "ソリッド", "ウッド", "ストック", "フロー", "ブレイズ", "ディヴァイン", "グロリアス", "ドラゴン", "コヨーテ", "ペガサス", "カーバンクル", "ガーゴイル", "バジリスク", "フェニックス", "フェンリル", "ケルベロス", "キマイラ", "ジュラフ", "ディアー", "ゼブラ", "ホエール", "ラクーン", "キャメル", "ペンギン", "リザード", "サーバル", "エルク", "フリー", "ライト", "リベラル", "リッチ", "エコノミー", "マーケット", "ナショナル", "ソーシャル", "エコロジカル", "ナチュラル", "ロイヤル", "プリンシパル", "インペリアル", "マジェスティック", "ノーブル", "ロード", "ハイネス", "デューク", "カウント", "バロン", "スモーク", "クリア", "ブリザード", "ゲイル", "ミスト", "ヘイル", "スノウ", "ライトニング", "サンダー", "(PC1人の名前)"]; - return self.$get_table_by_d1010(table); - }, $SterileLife_get_shipnameformer_table$8.$$arity = 0); - - Opal.def(self, '$get_shipnamelatter_table', $SterileLife_get_shipnamelatter_table$9 = function $$get_shipnamelatter_table() { - var self = this, table = nil; - - - table = ["ローズ", "ダンデリオン", "オーキッド", "アザリア", "スウォードリリー", "アイリス", "ラベンダー", "プロテア", "グラジオラス", "マグノリア", "ライナー", "カッター", "フライター", "フェリー", "バルジ", "クルーザー", "クラフト", "リガー", "キール", "ヴェッセル", "リミテッド", "インク", "マーチャント", "エクスペディション", "コンボイ", "キャラバン", "コマース", "レティニュー", "アドバイザリー", "コンサルティング", "テレスコープ", "オブザーバー", "グラス", "コスモス", "ヘブン", "ノート", "ロット", "スペースフェアラー", "ノマド", "ブローカー", "ディーラー", "ダイバー", "ドライバー", "アドベンチャラー", "ランナー", "ウォーカー", "トラベラー", "トレーダー", "エクスプローラー", "キャット", "パンサー", "ライオン", "ピューマ", "レオパルド", "タイガー", "ジャガー", "オセロット", "リンクス", "チーター", "ウォルフ", "カメレオン", "クラブ", "オスカー", "シャーク", "イーグル", "コンドル", "ドルフィン", "サウルス", "フィッシュ", "コンキスタドール", "フサリア", "ナイト", "コサック", "ヘタイロイ", "バーサーカー", "レギオン", "ウォリアー", "テルシオ", "ライダー", "ルール", "ディメイン", "レイン", "ジャスティス", "エンクレーブ", "ステート", "カントリー", "レルム", "ドミニオン", "ソブリン", "ストーム", "テンペスト", "アヴァランチ", "ストライク", "フォール", "クエイク", "ハリケーン", "ブラスター", "ブリザード", "(PC 1人の名前)"]; - return self.$get_table_by_d1010(table); - }, $SterileLife_get_shipnamelatter_table$9.$$arity = 0); - - Opal.def(self, '$get_avataralphabetfirst_table', $SterileLife_get_avataralphabetfirst_table$10 = function $$get_avataralphabetfirst_table() { - var self = this, table = nil; - - - table = ["A", "F", "G", "I", "J", "K", "R", "S", "T", "V"]; - return self.$get_table_by_1d10(table); - }, $SterileLife_get_avataralphabetfirst_table$10.$$arity = 0); - - Opal.def(self, '$get_avataralphabetsecond_table', $SterileLife_get_avataralphabetsecond_table$11 = function $$get_avataralphabetsecond_table() { - var self = this, table = nil; - - - table = ["D", "F", "L", "M", "N", "O", "R", "S", "X", "Z"]; - return self.$get_table_by_1d10(table); - }, $SterileLife_get_avataralphabetsecond_table$11.$$arity = 0); - - Opal.def(self, '$get_randomnpcship_table', $SterileLife_get_randomnpcship_table$12 = function $$get_randomnpcship_table() { - var self = this, table = nil; - - - table = ["装甲+20(HP+400)", "装甲+20(HP+400)", "〈電磁パルスフィールド〉1基", "〈中性粒子ビーム砲〉2基", "〈バリアフィールド〉2基", "装甲+20(HP+400)", "装甲+20(HP+400)", "〈電磁パルスフィールド〉1基\t〈高機動ミサイル〉2基", "〈バリアフィールド〉2基", "装甲+20(HP+400)", "装甲+20(HP+400)", "〈リサイクルフォージ〉", "〈高機動ミサイル〉2基", "〈バリアフィールド〉2基", "装甲+20(HP+400)", "装甲+20(HP+400)", "〈リサイクルフォージ〉", "〈高機動ミサイル〉2基", "〈レーザーディフェンス〉2基", "装甲+20(HP+400)", "〈ホーミング量子ビーム〉2基", "〈高圧縮精製装置〉", "〈アタックドローン〉1基\t〈レーザーディフェンス〉2基", "装甲+20(HP+400)", "〈ホーミング量子ビーム〉2基", "〈高圧縮精製装置〉", "〈爆縮高エネルギービーム砲〉2基\t〈レーザーディフェンス〉2基", "装甲+20(HP+400)", "〈ホーミング量子ビーム〉2基", "〈艦載メタルディテクター〉", "〈マグネティックアロイミサイル〉2基", "〈艦内防護装甲〉", "装甲+20(HP+400)", "〈ロングランスミサイル〉2基", "〈「スターブレイカー」のハリボテ〉", "〈ドローンアバター〉1基\t装甲+40(HP+800)", "装甲+20(HP+400)", "〈ロングランスミサイル〉2基", "〈中性粒子ビーム砲〉2基", "〈拡散粒子ビーム砲〉2基\t装甲+40(HP+800)", "装甲+20(HP+400)", "〈ロングランスミサイル〉2基", "〈中性粒子ビーム砲〉2基", "〈マイクロミサイルポッド〉2基", "装甲+40(HP+800)"]; - return self.$get_table_by_d510(table); - }, $SterileLife_get_randomnpcship_table$12.$$arity = 0); - - Opal.def(self, '$get_randomevent_table', $SterileLife_get_randomevent_table$13 = function $$get_randomevent_table() { - var self = this, table = nil; - - - table = ["燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得", "燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得", "燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得", "燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得", "燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得", "鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得", "鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得", "鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得", "鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得", "鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得", "鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得", "鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得", "巨大暗黒星雲 この星系ではビーム属性の攻撃の判定で達成値-1", "超新星残骸 この星系では実体弾属性の攻撃の判定で達成値-1", "C型アステロイド 推進剤400を獲得", "氷のアステロイド群 推進剤500を獲得", "巨大アイスブロック 推進剤600を獲得", "資源アステロイド 推進剤200、鋼材200を獲得", "枯渇彗星核 実体弾攻撃でダメージ200を出すと推進剤600を獲得", "放棄されたドローン 鋼材200、希少金属1を獲得", "金属塊 鋼材300を獲得", "S型アステロイド 鋼材400を獲得", "S型アステロイド 鋼材400を獲得", "スペースデブリ 鋼材500を獲得", "スペースデブリ 鋼材500を獲得", "M型アステロイド 鋼材600を獲得", "艦船の残骸 鋼材700を獲得", "大資源アステロイド 推進剤300、鋼材300を獲得", "小惑星の欠片 ビーム攻撃でダメージ200を出すと鋼材600を獲得", "希少金属アステロイド 希少金属2を獲得", "砕けた惑星核 希少金属3を獲得", "燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得", "燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得", "燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得", "燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得", "鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得", "鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得", "鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得", "氷のアステロイド群 推進剤500を獲得", "巨大アイスブロック 推進剤600を獲得", "大資源アステロイド 推進剤300、鋼材300を獲得", "氷火山アステロイド 推進剤300、希少金属1を獲得", "オーガニックアステロイド 推進剤700を獲得", "金属塊 鋼材300を獲得", "スペースデブリ 鋼材500を獲得", "M型アステロイド 鋼材600を獲得", "放棄されたモジュール 鋼材300、希少金属1を獲得", "砕けた惑星核 希少金属3を獲得", "レアアースアステロイド 希少金属4を獲得", "レアアースアステロイド 希少金属4を獲得"]; - return self.$get_table_by_d510(table); - }, $SterileLife_get_randomevent_table$13.$$arity = 0); - - Opal.def(self, '$get_treasurespec_table', $SterileLife_get_treasurespec_table$14 = function $$get_treasurespec_table() { - var self = this, table = nil; - - - table = ["恐竜を模した(価値+3)", "ヘビを模した(価値+1)", "魚を模した(価値+1)", "イヌを模した(価値+1)", "ウマを模した(価値+1)", "ネズミを模した(価値+1)", "ウサギを模した(価値+1)", "クマを模した(価値+1)", "ネコを模した(価値+1)", "鳥を模した(価値+2)", "触り心地の良い(価値+1)", "ふかふかした(価値+1)", "ふわふわの", "柔らかな", "なめらかな", "かすかに震える", "とげとげした", "硬質な", "ザラッとした", "持ちやすい(価値+1)", "美しい(価値+1)", "きれいな", "麗しの(価値+1)", "華美な", "派手な", "ほのかに発光する", "色とりどりの", "鮮やかな", "変化に富む", "可憐な(価値+1)", "しゃべる(価値+1)", "泣き声がする", "鳴き声がする", "歌が聞こえる(価値+1)", "音を吸い込む", "静寂の", "聞き上手の", "良い音の", "共鳴する", "響きの良い(価値+1)", "おいしい匂いがする(価値+1)", "血の匂いがする", "動物の匂いがする", "草いきれの匂いがする", "上品な香りがする(価値+1)", "目の醒める匂いがする", "甘い匂いがする", "柑橘系の香りがする", "清冽な香りがする", "安らぎの香りがする(価値+1)", "好意を感じさせる(価値+1)", "痛みを感じさせる", "怒りを感じさせる", "苦悶を感じさせる", "弱さを感じさせる", "癒やしを感じさせる(価値+1)", "母性を感じさせる", "優しさを感じさせる", "力強さを感じさせる", "年月を感じさせる(価値+1)", "洗練された(価値+1)", "とろけるような", "不安定な", "まろやかな", "穏やかな", "柔和な", "オーガニックな(価値+1)", "ストイックな", "シンプルな", "ナチュラルな(価値+1)", "気高き(価値+1)", "艶やかな", "気取った", "気位の高い", "リッチな", "気品漂う", "高潔な", "格調高い(価値+1)", "典雅な", "ロイヤルな(価値+1)", "闇に溶けるような(価値+1)", "血塗られた", "片翼の", "円環の", "「機関」の", "オッドアイの", "片目の", "堕天使の", "二重人格の(価値+1)", "輝きを纏う(価値+1)", "秘密を持つ(価値+2)", "いわく付きの(価値+1)", "歴史ある(価値+1)", "奪い合われた(価値+1)", "受け継がれた(価値+1)", "失われた文化の(価値+1)", "謎に満ちた(価値+1)", "廃墟で見つかった(価値+1)", "あのシリーズの1つ(価値+1)", "寵愛を受けた(価値+3)"]; - return self.$get_table_by_d1010(table); - }, $SterileLife_get_treasurespec_table$14.$$arity = 0); - - Opal.def(self, '$get_treasureappearance_table', $SterileLife_get_treasureappearance_table$15 = function $$get_treasureappearance_table() { - var self = this, table = nil; - - - table = ["ブレスト(価値+3)", "ホーリー(価値+1)", "ワンダフル(価値+1)", "シャイニング(価値+1)", "スーパー(価値+1)", "エクセレント(価値+1)", "グロリアス(価値+1)", "グレート(価値+1)", "フラワリー(価値+1)", "ミラクル(価値+2)", "アース(価値+1)", "サバンナ(価値+1)", "マウンテン", "リバー", "フォレスト", "ジャングル", "デザート", "ハイランド", "レイク", "オーシャン(価値+1)", "スペース(価値+1)", "コスモ", "ワールド(価値+1)", "ユニバーサル", "スカイ", "メテオール", "コメット", "ルナティック", "プラネタリー", "ステラー(価値+1)", "アンティーク(価値+1)", "エンシェント", "オールド", "エルダー(価値+1)", "カスタム", "レーテスト", "アバンギャルド", "アドバンスト", "カティングエッジ", "フューチャー(価値+1)", "ダーク(価値+1)", "ソイル", "ウォーター", "アイス", "フィジカル(価値+1)", "マインド", "フレイム", "ウィンド", "サンダー", "ライト(価値+1)", "闇の(価値+1)", "土の", "水の", "氷の", "物理", "心の(価値+1)", "炎の", "風の", "雷の", "光の(価値+1)", "骨董品の(価値+1)", "いにしえの", "古き", "長老の", "特注", "最新型", "前衛的(価値+1)", "発展的", "先進的", "未来的(価値+1)", "宇宙(価値+1)", "乾坤", "世界", "森羅万象", "空の", "流星の", "隕石の", "月の(価値+1)", "惑星", "星の(価値+1)", "大地の(価値+1)", "草原の", "山の", "川の", "森の", "林の", "砂漠の", "高地の", "湖の(価値+1)", "海の(価値+1)", "祝福の(価値+2)", "神聖な(価値+1)", "不思議な(価値+1)", "輝かしい(価値+1)", "超(価値+1)", "素晴らしい(価値+1)", "栄光の(価値+1)", "偉大な(価値+1)", "華の(価値+1)", "奇跡の(価値+3)"]; - return self.$get_table_by_d1010(table); - }, $SterileLife_get_treasureappearance_table$15.$$arity = 0); - - Opal.def(self, '$get_treasurematerial_table', $SterileLife_get_treasurematerial_table$16 = function $$get_treasurematerial_table() { - var self = this, table = nil; - - - table = ["ダイヤモンド(価値+3)", "ジェイド(価値+1)", "エメラルド(価値+1)", "トパーズ(価値+1)", "サファイア(価値+1)", "ルビー(価値+1)", "ガーネット(価値+1)", "ラピスラズリ(価値+1)", "アメジスト(価値+1)", "スモーキークォーツ(価値+2)", "ゴールデン(価値+1)", "チタン(価値+1)", "ブリキの", "アイアン", "スチール", "真鍮の", "ブロンズ", "カッパー", "シルバー", "プラチナ(価値+1)", "マーブル(価値+1)", "グラナイト", "オブシディアン(価値+1)", "スレート", "ライムストーン", "ガラス", "リネン", "ビロード", "コットン", "シルク(価値+1)", "セラミック(価値+1)", "プラスチック", "レンガの", "カーボン(価値+1)", "コンクリート", "クォーツの", "オークの", "レッドウッド", "スプルースの", "マホガニーの(価値+1)", "ブラック(価値+1)", "オレンジ", "グレー", "ブルー", "マジェンタ(価値+1)", "グリーン", "レッド", "パープル", "イエロー", "ホワイト(価値+1)", "黒い(価値+1)", "橙の", "灰色の", "青い", "インディゴ", "緑の(価値+1)", "赤い", "紫の", "黄色い", "白い(価値+1)", "磁器の(価値+1)", "陶器の", "粘土の", "紙の", "石膏の", "水晶の", "チークの(価値+1)", "ヒノキの", "杉の", "ウォルナット(価値+1)", "大理石の(価値+1)", "御影石の", "黒曜石の", "粘板岩の", "石灰岩の", "玻璃の", "麻の", "天鵞絨の(価値+1)", "綿の", "絹の(価値+1)", "黄金の(価値+1)", "アルミニウム", "錫の", "鉄の", "鋼鉄の", "鉛の", "青銅の", "銅の", "銀の(価値+1)", "白金の(価値+1)", "金剛石の(価値+2)", "翡翠の(価値+1)", "翠玉の(価値+1)", "黄玉の(価値+1)", "蒼玉の(価値+1)", "紅玉の(価値+1)", "紅榴石の(価値+1)", "瑠璃の(価値+1)", "紫水晶の(価値+1)", "煙水晶の(価値+3)"]; - return self.$get_table_by_d1010(table); - }, $SterileLife_get_treasurematerial_table$16.$$arity = 0); - - Opal.def(self, '$get_treasureobject_table', $SterileLife_get_treasureobject_table$17 = function $$get_treasureobject_table() { - var self = this, table = nil; - - - table = ["フルート(価値+3)", "オカリナ(価値+1)", "ギター(価値+1)", "ピアノ(価値+1)", "ドラム(価値+1)", "ティンパニー(価値+1)", "太鼓(価値+1)", "トランペット(価値+1)", "ハープ(価値+1)", "マイク(価値+2)", "ブランコ(価値+1)", "人形(価値+1)", "シーソー", "ベンチ", "すべり台", "ラケット", "ミニカー", "コースター", "ボール", "オーブ(価値+1)", "皿(価値+1)", "プレート", "ティーセット(価値+1)", "箸", "フォーク", "スプーン", "ナイフ", "フライパン", "鍋", "カップ(価値+1)", "王冠(価値+1)", "櫛", "イヤリング", "首飾り(価値+1)", "腕輪", "指輪", "ブローチ", "サークレット", "チョーカー", "羽飾り(価値+1)", "ロッド(価値+1)", "ウィップ", "ハンマー", "アックス", "ブレイド(価値+1)", "セイバー", "シールド", "クラブ", "ランス", "ソード(価値+1)", "錫杖(価値+1)", "鞭", "槌", "斧", "刃", "刀(価値+1)", "盾", "棍棒", "槍", "剣(価値+1)", "扇(価値+1)", "ボトル", "燭台", "ペン", "仮面", "バッグ", "時計(価値+1)", "傘", "徽章", "鏡(価値+1)", "スマートドレス(価値+1)", "タッチパネル", "インプットグローブ", "プロジェクター", "ディテクター", "アナライザー", "インジェクター", "エアーボトル(価値+1)", "ワイヤーロンチャー", "ジェットパック(価値+1)", "ランプ(価値+1)", "ドア", "窓", "灯籠", "棚", "キッチン", "ソファ", "椅子", "テーブル(価値+1)", "ベッド(価値+1)", "人物像(価値+2)", "フィギュア(価値+1)", "モデル(価値+1)", "植物像(価値+1)", "動物像(価値+1)", "レリーフ(価値+1)", "オブジェ(価値+1)", "ドーム(価値+1)", "タペストリー(価値+1)", "絵画(価値+3)"]; - return self.$get_table_by_d1010(table); - }, $SterileLife_get_treasureobject_table$17.$$arity = 0); - - Opal.def(self, '$get_sftechnology_table', $SterileLife_get_sftechnology_table$18 = function $$get_sftechnology_table() { - var self = this, table = nil; - - - table = ["船の種、家の種、ビルの種:発達したバイオテクノロジーにより、光合成をしながらカーボン製品を作り出す「種」が作られました。土に植えると一軒家に育ったり、立派な木になってコップの実をならせたりします。", "ワープリング:星と星の間を結ぶ空間のトンネルを作り出すのが、「ワープリング」です。中に入ると超光速で空間が周回しており、数時間から数日で数光年先の星に辿り着くことができます。", "擬似重力発生装置:超未来の宇宙船や宇宙ステーションでは、回転による遠心力などを活用して、擬似的に床に引っ張られる力を発生させています。パラメーターを変えれば、物の重さも体重も思いのままです。", "アニマフォーム:ファブリックやマイクロマシンを使って作った人工の「動物」に、ネットワーク接続して「乗り移る」技術です。動物の姿で動物になりきって、自然の中を探索できます。", "スマートテクスタイル:布やロープが自由自在に動きます。カーボンナノチューブなどの導電性の素材を織り込むことで繊維自体が電子機器として稼働・変形し、ボタンのセンサーと連動して様々な機能を果たします。", "パーソナルバリア:人間の周囲を囲うバリアーで、身体の各所に付けた発生機から生まれた電磁フィールドが宇宙空間を飛び交う危険な宇宙線を防いでくれます。船外活動には必須の装備です。", "フィンガーティップデザイン:指と手首を動かしながら頭の中でイメージを作ることで、あっという間に3D のデザインを作成できます。超未来は「繊維やケーブルが動く」ため、モノ作りがかなり複雑になっているのです。", "ジェットパック:個人用の強力なジェット噴射機で、誰でも空に飛び上がることができます。長く使っていると高熱を発するので注意。宇宙空間では、これとスマートワイヤーを組み合わせて移動に使います。", "メンタルプロジェクション:ヒトの心は、様々な価値観や性格が溶け合う複層的なもの。その複雑な姿を脳波投影で視界に映して、心の整理を付けやすくする技術です。しばしば「天使と悪魔」のビジュアルを付けます。", "スライムソファ:球体状の大きなソファで、ポリマーとカーボン素材でできており、自在に変形させたり柔らかさを変えたりできます。床や壁に吸着してくれるため、無重力空間では身体を固定してくれます。"]; - return self.$get_table_by_1d10(table); - }, $SterileLife_get_sftechnology_table$18.$$arity = 0); - - Opal.def(self, '$get_sfentertainment_table', $SterileLife_get_sfentertainment_table$19 = function $$get_sfentertainment_table() { - var self = this, table = nil; - - - table = ["ホロシアター:劇場いっぱいにホログラムを展開して、広大な大地や美しい空の上などで大冒険のスペクタクルショーを「その場にいるような」臨場感で楽しむことができます。", "アバターファイト!:手の平サイズの小型の人型アバターを思念で操って、ドームの中でバトルを楽しみます。フィールドはホログラム生成で、ビームやミサイルもホログラム再現なので、損傷の心配はありません。", "VRゲーム:外接電脳さえ持っていれば、VR ゴーグルがなくても仮想現実世界にダイブできます。圧倒的なリアリティを持つ仮想世界を堪能し、育成や対戦、パズルなど様々なゲームを楽しめます。", "ハイド・アンド・シーク:惑星全域を舞台にしたかくれんぼです。第七感覚をフル活用して都市の全域を見て回り、ときには動物たちからも情報を集めながら、この星のどこかにいる鬼を見つけ出しましょう。", "アロマバス:リラックスできる香りがいっぱいのお湯に浸かって、心身を癒やします。神経に疲れが溜まる超未来。ハーブの香りを思い切り吸い込んで、緊張を溶きほぐします。", "ロジックパズル:外接電脳をフル活用しないと解けないような、難解なパズルに挑戦します。一見すると無関係な2つの要素を組み合わせることで、意外な手がかりが見つかります。", "ホロアスレチック:コンクリートや植物性ビルなどを使って組み立てた殺風景なアスレチックを、ホログラムで美しくダイナミックに彩ります。超未来人の高い運動能力を存分に発揮できます。", "スカイレース:超未来なので人は空を飛べます。トリブリードは自前の翼で、そうでなくても自分で設計したグライダーなどで、空中にホロ投影されるリングを通過しながら、複雑なコースを高速で飛びます。", "ミステリーハウス:宝探しや事件解決など、規定時間以内に「謎」を解くイベントです。屋敷の中には手がかりが散りばめられており、VRでもリアルでも手軽に探偵遊びを楽しむことができます。", "SNS:超未来のSNS は濃密にして苛烈!超高速でやり取りが行いながら、惑星の多くの人々と触れ合い交流を深めます。惑星ごとの微妙な文化の違いに注意を払いましょう。"]; - return self.$get_table_by_1d10(table); - }, $SterileLife_get_sfentertainment_table$19.$$arity = 0); - - Opal.def(self, '$get_sfculture_table', $SterileLife_get_sfculture_table$20 = function $$get_sfculture_table() { - var self = this, table = nil; - - - table = ["リスペクト・ユー:超未来の社会では、他人に対する「リスペクト」が何より大事にされています。見てもらうこと、尊敬されることを目指して、今日も人々はSNSで活動したり、働いたりします。", "マインドミュージック:手を振るうことで感情を音色にする未来的な音楽です。VRやホログラフィと組み合わせれば映像効果も付き、思うままに自分の心から湧き出る音楽を演奏することができます。", "レプロドュィーユ:オペラやバレエ、歌舞伎、ミュージカルといった歌劇の血筋を引いた文化です。物語や歴史の登場人物になりきって、身体の動きを正確に制御しつつ音楽を演奏して全身で表現を行います。", "物語:小説やアニメムービーなど、誰かが紡いだ物語を追体験します。星系によって異なる文化、異なるトレンドを持っているので、その違いもまた楽しめます。", "Deep in myself:深い瞑想をします。静かな落ち着いた空間でゆっくりと精神を集中し、自分の心の中に潜るように意識の状態を変容させ、マインドフルネスを達成します。", "ファッションコーデ:自然派やロマン風、モノトーンなど、統一感あるファッションは気品を感じさせます。今日のテーマはどうしましょうか。お部屋の家具も変形して、同じ系統にコーディネートしましょう。", "美術品:超未来の絵画や彫刻は、動きます。内部のカーボンナノファイバーやナノマシンが変形することで、あらかじめ制作者がプログラムした動きやインタラクティブな動きを繰り返します。", "ガーデニング:平たい土地に植物や柵、椅子や机などの種を植えて、美しい庭を造成します。惑星ごとに異なる気候に適応した様々な固有種を使って、その惑星ならではの花の彩りを演出しましょう。", "お料理!:超未来の合成肉や促成栽培野菜などを使って、舌を楽しませるおいしい料理を作りましょう。調理器具は3Dプリンターやクローナイフ、調味料は塩や砂糖、マイクロマシンに香辛料などです。", "シリコンオフィス:角張ったオフィス机やタイムカードなど超未来の世界では絶滅しました。人々は家からでも公園からでも木の上や洞窟の中からでもワークに参加しますし、趣味と労働の区別を付けません。"]; - return self.$get_table_by_1d10(table); - }, $SterileLife_get_sfculture_table$20.$$arity = 0); - - Opal.def(self, '$get_sfnature_table', $SterileLife_get_sfnature_table$21 = function $$get_sfnature_table() { - var self = this, table = nil; - - - table = ["アニマルハート:動物たちの鳴き声の意味を解読し、また脳波分析を組み合わせることで、高等知能動物たちとある程度の意思疎通ができます。共通の話題は天気の話や景色の話、それにコイバナなど。", "キャンプ:野外で夜を越すときは、キャンプをします。スマートテクスタイルを広げて雨風を避けるテントを作り、虫や鳥の鳴き声を聞きながら星空を眺めて一晩を過ごします。", "ミネラルウォーター:テラフォーミングした惑星の海は、元の惑星のミネラル組成によって成分がだいぶ違ってきます。それほどしょっぱくない海もあれば、赤や緑っぽい海もあり。生息する魚等もまったく違います。", "レイクサイド:クレーター等起伏のある地形に水が溜まってできた湖は、山裾の木々を鏡面のように反射して美麗な風景を作り出しています。中心部上層の澄んだ水は、簡単に浄化すれば飲み水にもできます。", "固有種:惑星に導入した動植物は、その惑星の環境に合わせて急速に独自の進化を遂げます。やたらにふわふわしたネコ科動物や雪の上に育つスノードロップ、転がって移動するアルマジロなどなど。", "枯れ草集め:都市部を離れると、エネルギー源はバイオ燃料に頼ることになります。地球以外の惑星には、基本的に石油や石炭など存在しません。燃料生成に使えそうな草木を集めましょう。", "山に進め:ジェットパックやスマートワイヤーがあるといっても、特に重力が強い惑星では高いところで大気が薄くなりやすく、山登りは大変なもの。しかしその分、山の上からの眺めは絶景です。", "スカイハイ・ビュー:自然の環境ですばやく移動するには、グライダーや翼を使って滑空するのが手っ取り早いです。高い木や丘に上ってからジェットパック併用で舞い上がれば、空からの美しい景観も楽しめます。", "道なき森の道:惑星を覆う森の中には、基本的に整備された道はありません。空を見上げれば陽の光を遮る樹の冠。草をかき分け、花や草いきれの臭いを感じながら、ときには木の上を通って、先に進みます。", "テラフォーミング:この銀河で、地球以外のすべての惑星はヒトが入植するために「テラフォーミング」したものです。水と大気を形成し、植物を育て、動物たちを導入し、長い年月を経て現在の姿になりました。"]; - return self.$get_table_by_1d10(table); - }, $SterileLife_get_sfnature_table$21.$$arity = 0); - return (Opal.def(self, '$get_sfinterior_table', $SterileLife_get_sfinterior_table$22 = function $$get_sfinterior_table() { - var self = this, table = nil; - - - table = ["甲板上でお茶を:狭い宇宙船に飽きてきたら、甲板の上に出て無限に広がる宇宙を感じることもできます。気圧0なので圧力ポットで持ってくる必要がありますが、星空を眺めながら飲むお茶は乙なものです。", "マイクロマシン隔壁:宇宙船の隔壁はメタルナノカーボンやナノスチールでできていますが、補修のためにマイクロマシンが住んでいます。ときどき壁の端がちらちら動いて見えるのも、彼らのためかもしれません。", "ダンベル100kg持てる:惑星環境と比べれば、宇宙船の擬似重力はどうしても弱くなるもの。筋力の衰えを防ぐために、部屋にトレーニングマシンを生成して筋トレをします。適度な負荷をかけましょう。", "ユリカゴ:宇宙船に乗っている間は、多くの時間を宇宙船の居住スペース兼コントロールルームである「ユリカゴ」で過ごすことになります。たまにはホログラフィックで模様替えして気分を変えます。", "宇宙農法:数週間に渡る宇宙の旅では、食べ物や水は船内で育てます。マゼンダ色のLED ライトで植物やユーグレナを促成栽培し、バイオプラントでエネルギーゼリーを合成します。", "メンテナンス:宇宙船は数多くのパーツでできているため、どこかが不具合や故障を起こすこともあります。基本的に自動制御で管理できますが、自分の目と外接電脳でもチェックを入れてみましょう。", "重力のムラ:宇宙船は擬似重力発生装置を持っており、床に足が付きますが、場所によって「重力」にムラがあります。身体が重いと感じたら、部屋の隅に行けば軽くなるかもしれません。", "ワープ酔い:ワープ航法は空間の歪みを利用します。装甲が最も厚いユリカゴの中でも、ワープリングを出入りするときはグラっとくる感触があります。気分が悪くなったら、おとなしく寝ていましょう。", "1日25時間:宇宙船に「昼夜」はないため、照明を人工的に調整して生活サイクルを作ります。どうせ惑星ごとに1日の長さは違うので、24時間にこだわる必要はありません。自由に決めます。", "スターリー・スカイ:惑星の明かりも大気もない宇宙船の上からは、星空を鮮やかに見ることができます。当然、星によって天球図も違います。月が2つや4つあったり、連星が見られたりします。"]; - return self.$get_table_by_1d10(table); - }, $SterileLife_get_sfinterior_table$22.$$arity = 0), nil) && 'get_sfinterior_table'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/StrangerOfSwordCity.js b/src/assets/dicebot/StrangerOfSwordCity.js deleted file mode 100644 index 4733cd7da..000000000 --- a/src/assets/dicebot/StrangerOfSwordCity.js +++ /dev/null @@ -1,146 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$debug', '$upcase', '$checkRoll', '$empty?', '$===', '$to_i', '$last_match', '$roll', '$sort', '$collect', '$split', '$+', '$getModifyText', '$join', '$getCriticalResult', '$nil?', '$isFumble', '$>=', '$==', '$<', '$to_s', '$size', '$select']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'StrangerOfSwordCity'); - - var $nesting = [self].concat($parent_nesting), $StrangerOfSwordCity_initialize$1, $StrangerOfSwordCity_rollDiceCommand$2, $StrangerOfSwordCity_checkRoll$3, $StrangerOfSwordCity_getModifyText$5, $StrangerOfSwordCity_getCriticalResult$6, $StrangerOfSwordCity_isFumble$8; - - - Opal.const_set($nesting[0], 'ID', "StrangerOfSwordCity"); - Opal.const_set($nesting[0], 'NAME', "剣の街の異邦人TRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "けんのまちのいほうしんTRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 xSR or xSRy or xSR+y or xSR-y or xSR+y>=z\n" + " x=ダイス数、y=修正値(省略可、±省略時は+として扱う)、z=難易度(省略可)\n" + " 判定時はクリティカル、ファンブルの自動判定を行います。\n" + "・通常のnD6ではクリティカル、ファンブルの自動判定は行いません。\n" + "・D66ダイスあり\n"); - self.$setPrefixes(["\\d+SR.*"]); - - Opal.def(self, '$initialize', $StrangerOfSwordCity_initialize$1 = function $$initialize() { - var $iter = $StrangerOfSwordCity_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $StrangerOfSwordCity_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $StrangerOfSwordCity_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - self.d66Type = 1; - return (self.fractionType = "omit"); - }, $StrangerOfSwordCity_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $StrangerOfSwordCity_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, result = nil; - - - self.$debug("rollDiceCommand command", command); - command = command.$upcase(); - result = ""; - result = self.$checkRoll(command); - if ($truthy(result['$empty?']())) { - } else { - return result - }; - return result; - }, $StrangerOfSwordCity_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$checkRoll', $StrangerOfSwordCity_checkRoll$3 = function $$checkRoll(command) { - var $a, $b, $$4, self = this, result = nil, diceCount = nil, modify = nil, difficulty = nil, dice = nil, diceText = nil, diceList = nil, totalValue = nil, modifyText = nil, criticalResult = nil; - - - self.$debug("checkRoll begin command", command); - result = ""; - if ($truthy(/^(\d+)SR([\+\-]?\d+)?(>=(\d+))?$/i['$==='](command))) { - } else { - return result - }; - diceCount = $$($nesting, 'Regexp').$last_match(1).$to_i(); - modify = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($$($nesting, 'Regexp').$last_match(4))) { - difficulty = $$($nesting, 'Regexp').$last_match(4).$to_i()}; - $b = self.$roll(diceCount, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceList = $send(diceText.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)).$sort(); - totalValue = $rb_plus(dice, modify); - modifyText = self.$getModifyText(modify); - result = $rb_plus(result, "" + "(" + (command) + ") > " + (dice) + "[" + (diceList.$join(",")) + "]" + (modifyText) + " > " + (totalValue)); - criticalResult = self.$getCriticalResult(diceList); - if ($truthy(criticalResult['$nil?']())) { - } else { - - result = $rb_plus(result, "" + " > クリティカル(+" + (criticalResult) + "D6)"); - return result; - }; - if ($truthy(self.$isFumble(diceList, diceCount))) { - - result = $rb_plus(result, " > ファンブル"); - return result;}; - if ($truthy(difficulty['$nil?']())) { - } else { - result = $rb_plus(result, (function() {if ($truthy($rb_ge(totalValue, difficulty))) { - return " > 成功" - } else { - return " > 失敗" - }; return nil; })()) - }; - return result; - }, $StrangerOfSwordCity_checkRoll$3.$$arity = 1); - - Opal.def(self, '$getModifyText', $StrangerOfSwordCity_getModifyText$5 = function $$getModifyText(modify) { - var self = this; - - - if (modify['$=='](0)) { - return ""}; - if ($truthy($rb_lt(modify, 0))) { - return modify.$to_s()}; - return "" + "+" + (modify); - }, $StrangerOfSwordCity_getModifyText$5.$$arity = 1); - - Opal.def(self, '$getCriticalResult', $StrangerOfSwordCity_getCriticalResult$6 = function $$getCriticalResult(diceList) { - var $$7, self = this, dice6Count = nil; - - - dice6Count = $send(diceList, 'select', [], ($$7 = function(i){var self = $$7.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](6);}, $$7.$$s = self, $$7.$$arity = 1, $$7)).$size(); - if ($truthy($rb_ge(dice6Count, 2))) { - return dice6Count.$to_s()}; - return nil; - }, $StrangerOfSwordCity_getCriticalResult$6.$$arity = 1); - return (Opal.def(self, '$isFumble', $StrangerOfSwordCity_isFumble$8 = function $$isFumble(diceList, diceCount) { - var $$9, self = this; - - return $rb_ge($send(diceList, 'select', [], ($$9 = function(i){var self = $$9.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i['$=='](1);}, $$9.$$s = self, $$9.$$arity = 1, $$9)).$size(), diceCount) - }, $StrangerOfSwordCity_isFumble$8.$$arity = 2), nil) && 'isFumble'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/StratoShout.js b/src/assets/dicebot/StratoShout.js deleted file mode 100644 index dc8d3dbfc..000000000 --- a/src/assets/dicebot/StratoShout.js +++ /dev/null @@ -1,185 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$==', '$<=', '$>=', '$upcase', '$===', '$textFrom1D6Table', '$to_i', '$last_match', '$getSkillList', '$textFrom2D6Table', '$textFromD66Table', '$getD66', '$assoc', '$get_table_by_1d6', '$nil?', '$+', '$get_table_by_2d6', '$[]', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'StratoShout'); - - var $nesting = [self].concat($parent_nesting), $StratoShout_initialize$1, $StratoShout_check_2D6$2, $StratoShout_rollDiceCommand$3, $StratoShout_textFromD66Table$4, $StratoShout_textFrom1D6Table$5, $StratoShout_textFrom2D6Table$6, $StratoShout_getSkillList$7; - - - Opal.const_set($nesting[0], 'ID', "StratoShout"); - Opal.const_set($nesting[0], 'NAME', "ストラトシャウト"); - Opal.const_set($nesting[0], 'SORT_KEY', "すとらとしやうと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "\n" + "VOT, GUT, BAT, KEYT, DRT: (ボーカル、ギター、ベース、キーボード、ドラム)トラブル表\n" + "EMO: 感情表\n" + "AT[1-6]: 特技表(空: ランダム 1: 主義 2: 身体 3: モチーフ 4: エモーション 5: 行動 6: 逆境)\n" + "SCENE, MACHI, GAKKO, BAND: (汎用、街角、学校、バンド)シーン表 接近シーンで使用\n" + "TENKAI: シーン展開表 奔走シーン 練習シーンで使用\n" + "\n" + "[]内は省略可 D66入れ替えあり\n"); - self.$setPrefixes(["VOT", "GUT", "BAT", "KEYT", "DRT", "EMO", "AT[1-6]?", "SCENE", "MACHI", "GAKKO", "BAND", "TENKAI"]); - - Opal.def(self, '$initialize', $StratoShout_initialize$1 = function $$initialize() { - var $iter = $StratoShout_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $StratoShout_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $StratoShout_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $StratoShout_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $StratoShout_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル! (ドラマフェイズ: 【ディスコード】+2 / ライブフェイズ: 【コンディション】-2)" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > スペシャル! (【コンディション】+2)" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $StratoShout_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $StratoShout_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var self = this, $case = nil, title = nil, table = nil, value = nil; - - - $case = command.$upcase(); - if ("VOT"['$===']($case)) { - title = "ボーカルトラブル表(P167)"; - table = ["歌詞を忘れてしまった! 何も言葉が出てこない……", "マイクのコードに足を引っ掛けてしまった! 危ない!", "マイクスタンドが倒れてしまった!", "音程がズレているけど、なかなか直せない!", "リズムがズレてきている気がする……修正できない!", "喉が枯れそうだ。まずい、セーブしないと……!"]; - return self.$textFrom1D6Table(title, table);} - else if ("GUT"['$===']($case)) { - title = "ギタートラブル表(P169)"; - table = ["やべっ、コードを間違えた! どうにかごまかそう……", "ゲッ、シールド(信号を伝えるコード)が抜けちゃった! 音が出ない!", "ギターの音にノイズが乗ってるような……直ってくれ……!", "あれ? 今曲のどの辺りだっけ……?", "弦が切れてしまった! なんて不吉な……。", "ピックが飛んでった! 指で弾くしかない……!"]; - return self.$textFrom1D6Table(title, table);} - else if ("BAT"['$===']($case)) { - title = "ベーストラブル表(P171)"; - table = ["やべっ、コードを間違えた! どうにかごまかそう……", "ゲッ、シールド(信号を伝えるコード)が抜けちゃった! 音が出ない!", "ベースの音にノイズが乗ってるような……直ってくれ……!", "あれ? 今曲のどの辺りだっけ……?", "指先の感覚が麻痺してきた。動かない……!", "テンポが速くなってきているけど、止まらない!"]; - return self.$textFrom1D6Table(title, table);} - else if ("KEYT"['$===']($case)) { - title = "キーボードトラブル表(P173)"; - table = ["指先の感覚が麻痺してきた。動かない……!", "音量のスライドに触れてしまった! 爆音が出てしまう!", "あれ? 今曲のどの辺りだっけ……?", "音の出ない鍵がある……故障!?", "音色を間違えた! 元の音色は何番だっけ……!?", "手を置く位置が一つズレてる……! 不協和音だ!"]; - return self.$textFrom1D6Table(title, table);} - else if ("DRT"['$===']($case)) { - title = "ドラムトラブル表(P175)"; - table = ["手がこんがらがってきた! 軌道修正しないと……!", "あれ? 今曲のどの辺りだっけ……?", "ハイハットが開かない! ネジが緩んでるのか……!?", "アドリブ入れたけど、次のフレーズが思いつかない……!", "テンポが速くなってきているけど、止まらない!", "スティックが飛んでった! 代わりはどこだっけ……。"]; - return self.$textFrom1D6Table(title, table);} - else if ("EMO"['$===']($case)) { - title = "感情表(P183)"; - table = ["共感/不信", "友情/嫉妬", "好敵手/苛立ち", "不可欠/敬遠", "尊敬/劣等感", "愛情/負い目"]; - return self.$textFrom1D6Table(title, table);} - else if (/^AT([1-6]?)$/['$===']($case)) { - value = $$($nesting, 'Regexp').$last_match(1).$to_i(); - return self.$getSkillList(value);} - else if ("SCENE"['$===']($case)) { - title = "シーン表(P199)"; - table = ["一人の時間。ふと過去の記憶を辿る。そういえば以前、あんなことがあったような……。", "どこからか、言い争っているような声が聞こえてきた。喧嘩だろうか?", "夜の帳が下り、辺りは静寂に包まれている。あいつは今、何をしているだろう。", "仲間と一緒にご飯を食べていると、会話は自然とあの話に……。", "笑い声に満ちた空間。ずっとこんな時間が続けばいいのに。", "日の当たる場所。毎日の忙しさを離れ、穏やかな時間が過ぎていく。", "スマートフォンに着信の通知がついていた。電話? メッセージ? 誰からだろう。", "突然、あなたのもとに来訪者が現れた。何か伝えたいことがあるようだ。", "誰かの忘れ物を見つけた。届けてあげたほうがいいだろうか。", "誰かが噂話をしている。聞くつもりはなくとも、それは勝手に耳に入ってきた。", "なんだか悪寒がする。なにか良くないことが起きているような……。"]; - return self.$textFrom2D6Table(title, table);} - else if ("MACHI"['$===']($case)) { - title = "街角シーン表(P199)"; - table = ["入ったことのない場所に、初めて足を踏み入れた。少し緊張してしまうな。", "アルバイト先。バイト仲間から、意外なことを教えられた。", "会話もままならないような、大音量の音楽。その場にいるだけで気分が高揚する。", "横断歩道で信号を待っていると、見知った人物の姿を見つけた。", "突然の雨に、慌てて足を早める人々。自分も早く帰らなければ。", "何気なく立ち寄った店の中で、知人とばったり。こんなところで何を?", "練習を終えて立ち寄った飲食店で、意外な人物を発見。少し様子を見てみよう。", "あちこちから子どもたちのはしゃぎ声が聞こえてくる。自分にもあんな頃があったんだろうか。", "音のない、静寂の世界。たまには音から離れるのもいいものだ。", "電車の中。つり革に掴まりながら揺られていると、見覚えのある乗客を見つけた。", "カラオケの廊下を歩いていると、どこからか聞き覚えのある声が……?"]; - return self.$textFrom2D6Table(title, table);} - else if ("GAKKO"['$===']($case)) { - title = "学校シーン表(P199)"; - table = ["校舎裏、何かを話す二人組を見かけた。一体何を話しているのだろう……?", "とある部室。部員たちは集中して部活に励んでいるようだが……。", "先生から、ターゲットについて尋ねられた。なにか気になることがあるようだ。", "木々の隙間から朝日差し込む通学路。ある者は忙しそうに、またある者は楽しそうに校舎へ向かっている。", "休み時間。教室のあちこちで飛び交う、他愛のない噂話。その中から、気になる会話が聞こえてきた。", "何もかもが茜色に染まる夕暮れ時。生徒たちは学業から解放され、自由に残り少ない一日を過ごしている。", "移動教室だ。渡り廊下から下を見ると、見覚えのある人物がいた。", "昼休み。生徒は思い思いの場所で昼食を取っている。さて、自分はどこで食べようか。", "先生から頼まれごとを引き受けてしまった。さっさと済ませてしまおう。", "そろそろ学校が閉まる時間だ。明かりのついている教室はもうほとんどない。", "スピーカーから校内放送が聞こえた。誰かを呼んでいるようだが……?"]; - return self.$textFrom2D6Table(title, table);} - else if ("BAND"['$===']($case)) { - title = "バンドシーン表(P199)"; - table = ["音楽専門のニュースサイトをチェック。大小様々な記事が投稿されている。", "意外なところで練習している人物を発見。少し声をかけてみようか。", "ちょっとした壁に衝突。誰かに相談した方がいいかも……。", "ライブを見るためライブハウスへとやってきた。どんなステージになるのだろう。", "打ち合わせに行ったライブハウス。来ているのは自分たちだけじゃないようだ。", "練習が終わった帰り道。あいつも練習が終わった頃だろうか。", "どこからか楽器の音が聞こえてくる。誰か演奏しているのだろうか。", "熱気のこもる部屋を出て、スタジオの待合室でクールダウン。ソファに座っているのは……。", "訪れた楽器店で、見知った人物を発見。何をしに来ているのだろう。", "最新のヒット曲が流れるCDショップの店内。次はどんな曲をやろうか……。", "何気なく鳴らした音から、突発セッションに発展。軽く実力を見せつけてやろう。"]; - return self.$textFrom2D6Table(title, table);} - else if ("TENKAI"['$===']($case)) { - title = "シーン展開表(P201)"; - table = [[11, "絶望: ステップを更に大きくする、あるいはシーンプレイヤーを破滅に追い込むような状況に陥ります。【ディスコード】+2点。"], [12, "崩壊: ステップによってシーンプレイヤーの大切なものが崩壊する、あるいは崩壊目前に追い込まれます。【ディスコード】+2点。"], [13, "断絶: シーンプレイヤーはステップによって何かと絶縁状態になります。【ディスコード】+2点。"], [14, "恐怖: ステップに恐怖するような出来事に遭遇します。【ディスコード】+2点。"], [15, "誤解: シーンプレイヤーがステップに関するなんらかの誤解を受けます。【ディスコード】+2点。"], [16, "試練: シーンプレイヤーはステップに関連した試練に直面します。【ディスコード】+2点。"], [22, "悪心: シーンプレイヤーの心に魔が差し、ステップを不合理に解決しようとします。【ディスコード】+1点。"], [23, "束縛: ステップに関わるなんらかに束縛され、自由な行動ができなくなります。【ディスコード】+1点。"], [24, "凶兆: ステップについて、悪いことが起きそうな前触れが訪れます。【ディスコード】+1点。"], [25, "加速: シーンプレイヤーはステップの解決に追われます。【ディスコード】+1点。"], [26, "日常: シーンプレイヤーはのんびりとした日常を送ります。【コンディション】+1点。"], [33, "休息: ステップを忘れられるような、穏やかなひとときを過ごします。【コンディション】+1点。"], [34, "吉兆: ステップについて、いいことが起きそうな前触れが訪れます。【コンディション】+1点。"], [35, "発見: シーンプレイヤーはステップについて何かを発見します。【コンディション】+1点。"], [36, "希望: シーンプレイヤーの中に、ステップに対して前向きに取り組む意思が生まれます。【コンディション】+1点。"], [44, "成長: ステップを通して、シーンプレイヤーが成長します。【コンディション】+2点。"], [45, "愛情: ステップを通して、シーンプレイヤーが愛情に触れます。【コンディション】+2点。"], [46, "朗報: ステップに関する良い知らせが舞い込みます。【コンディション】+2点。"], [55, "好転: ステップが良い方向に向かうような事件が起きます。【コンディション】+3点。"], [56, "直感: ステップを解決させる決定的な閃きを得ます。【コンディション】+3点。"], [66, "奇跡: ステップに関して、奇跡的な幸運が舞い込みます。【コンディション】+3点。"]]; - return self.$textFromD66Table(title, table);}; - return nil; - }, $StratoShout_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$textFromD66Table', $StratoShout_textFromD66Table$4 = function $$textFromD66Table(title, table) { - var $a, $b, self = this, isSwap = nil, dice = nil, number = nil, text = nil; - - - isSwap = true; - dice = self.$getD66(isSwap); - $b = table.$assoc(dice), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), $b; - return "" + (title) + " > [" + (number) + "] > " + (text); - }, $StratoShout_textFromD66Table$4.$$arity = 2); - - Opal.def(self, '$textFrom1D6Table', $StratoShout_textFrom1D6Table$5 = function $$textFrom1D6Table(title, table1, table2) { - var $a, $b, self = this, text1 = nil, number1 = nil, text = nil, text2 = nil, number2 = nil; - - - - if (table2 == null) { - table2 = nil; - }; - $b = self.$get_table_by_1d6(table1), $a = Opal.to_ary($b), (text1 = ($a[0] == null ? nil : $a[0])), (number1 = ($a[1] == null ? nil : $a[1])), $b; - text = "" + (title) + " > "; - if ($truthy(table2['$nil?']())) { - text = $rb_plus(text, "" + "[" + (number1) + "] > " + (text1)) - } else { - - $b = self.$get_table_by_1d6(table2), $a = Opal.to_ary($b), (text2 = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - text = $rb_plus(text, "" + "[" + (number1) + "," + (number2) + "] > " + (text1) + (text2)); - }; - return text; - }, $StratoShout_textFrom1D6Table$5.$$arity = -3); - - Opal.def(self, '$textFrom2D6Table', $StratoShout_textFrom2D6Table$6 = function $$textFrom2D6Table(title, table) { - var $a, $b, self = this, text = nil, number = nil; - - - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return "" + (title) + " > [" + (number) + "] > " + (text); - }, $StratoShout_textFrom2D6Table$6.$$arity = 2); - return (Opal.def(self, '$getSkillList', $StratoShout_getSkillList$7 = function $$getSkillList(field) { - var $a, $b, self = this, title = nil, table = nil, number1 = nil, fieldName = nil, skill = nil, number2 = nil, text = nil; - - - - if (field == null) { - field = 0; - }; - title = "特技リスト"; - table = [["主義", ["過去", "恋人", "仲間", "家族", "自分", "今", "理由", "夢", "世界", "幸せ", "未来"]], ["身体", ["頭", "目", "耳", "口", "胸", "心臓", "血", "背中", "手", "XXX", "足"]], ["モチーフ", ["闇", "武器", "魔法", "獣", "町", "歌", "食べ物", "花", "空", "季節", "光"]], ["エモーション", ["悲しい", "怒り", "不安", "恐怖", "驚き", "高鳴り", "情熱", "確信", "期待", "楽しい", "喜び"]], ["行動", ["泣く", "忘れる", "消す", "壊す", "叫ぶ", "歌う", "踊る", "走る", "鳴らす", "呼ぶ", "笑う"]], ["逆境", ["死", "喪失", "暴力", "孤独", "後悔", "実力", "退屈", "権力", "富", "恋愛", "生"]]]; - number1 = 0; - if (field['$=='](0)) { - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (table = ($a[0] == null ? nil : $a[0])), (number1 = ($a[1] == null ? nil : $a[1])), $b - } else { - table = table['$[]']($rb_minus(field, 1)) - }; - $b = table, $a = Opal.to_ary($b), (fieldName = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (skill = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - text = title; - if (field['$=='](0)) { - text = $rb_plus(text, "" + " > [" + (number1) + "," + (number2) + "]") - } else { - text = $rb_plus(text, "" + "(" + (fieldName) + "分野) > [" + (number2) + "]") - }; - return "" + (text) + " > 《" + (skill) + "/" + (fieldName) + (number2) + "》"; - }, $StratoShout_getSkillList$7.$$arity = -1), nil) && 'getSkillList'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/StratoShout_Korean.js b/src/assets/dicebot/StratoShout_Korean.js deleted file mode 100644 index 74c1f2c51..000000000 --- a/src/assets/dicebot/StratoShout_Korean.js +++ /dev/null @@ -1,185 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$==', '$<=', '$>=', '$upcase', '$===', '$textFrom1D6Table', '$to_i', '$last_match', '$getSkillList', '$textFrom2D6Table', '$textFromD66Table', '$getD66', '$assoc', '$get_table_by_1d6', '$nil?', '$+', '$get_table_by_2d6', '$[]', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'StratoShout_Korean'); - - var $nesting = [self].concat($parent_nesting), $StratoShout_Korean_initialize$1, $StratoShout_Korean_check_2D6$2, $StratoShout_Korean_rollDiceCommand$3, $StratoShout_Korean_textFromD66Table$4, $StratoShout_Korean_textFrom1D6Table$5, $StratoShout_Korean_textFrom2D6Table$6, $StratoShout_Korean_getSkillList$7; - - - Opal.const_set($nesting[0], 'ID', "StratoShout:Korean"); - Opal.const_set($nesting[0], 'NAME', "스트라토 샤우트"); - Opal.const_set($nesting[0], 'SORT_KEY', "国際化:Korean:스트라토 샤우트"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "VOT, GUT, BAT, KEYT, DRT: (보컬, 기타, 베이스, 키보드, 드럼)트러블표\n" + "EMO: 감정표\n" + "AT[1-6]: 특기표(공백: 랜덤 1: 주의 2: 신체 3: 모티브 4: 이모션 5: 행동 6: 역경)\n" + "SCENE, MACHI, GAKKO, BAND: (범용, 거리, 학교, 밴드)장면표. 접근 장면에 사용\n" + "TENKAI: 장면 전개표. 분주 장면, 연습 장면에 사용\n" + "[]내는 생략가능 D66는 변동있음\n"); - self.$setPrefixes(["VOT", "GUT", "BAT", "KEYT", "DRT", "EMO", "AT[1-6]?", "SCENE", "MACHI", "GAKKO", "BAND", "TENKAI"]); - - Opal.def(self, '$initialize', $StratoShout_Korean_initialize$1 = function $$initialize() { - var $iter = $StratoShout_Korean_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $StratoShout_Korean_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $StratoShout_Korean_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.d66Type = 2); - }, $StratoShout_Korean_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $StratoShout_Korean_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > 펌블! (드라마페이즈: 【디스코드】+2 / 라이브페이즈: 【컨디션】-2)" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > 스페셜! (【컨디션】+2)" - } else if ($truthy($rb_ge(total, target))) { - return " > 성공" - } else { - return " > 실패" - }; - }, $StratoShout_Korean_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $StratoShout_Korean_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var self = this, $case = nil, title = nil, table = nil, value = nil; - - - $case = command.$upcase(); - if ("VOT"['$===']($case)) { - title = "보컬 트러블표(P167)"; - table = ["가사를 잊어버렸다! 어떤 말도 나오지 않아……", "마이크 코드에 발이 걸려버렸다! 위험해!", "마이크 스탠드가 쓰러져버렸다!", "음정이 어긋나고 있지만, 쉽게 고칠 수가 없어!", "리듬이 어긋나고 있는 것 같다……수정할 수 없어!", "목이 갈라질 것 같다. 위험해, 비축하지 않으면……!"]; - return self.$textFrom1D6Table(title, table);} - else if ("GUT"['$===']($case)) { - title = "기타 트러블표(P169)"; - table = ["위험해, 코드를 틀렸다! 어떻게든 무마시키자……", "겍, 실드(신호를 전달하는 코드)가 빠져버렸다! 소리가 안 나와!", "기타 소리에 노이즈가 낀 것 같은데……고쳐져라……!", "어라? 지금 곡의 어느 부분이더라……?", "현이 끊겨버렸다! 무슨 불길한…….", "피크가 날아가버렸다! 손가락으로 칠 수밖에 없어……!"]; - return self.$textFrom1D6Table(title, table);} - else if ("BAT"['$===']($case)) { - title = "베이스 트러블표(P171)"; - table = ["위험해, 코드를 틀렸다! 안 틀린 척 넘어가자……", "겍, 실드(신호를 전달하는 코드)가 뽑혔다! 소리가 안 나와!", "베이스 소리에 노이즈가 섞인 것 같은데……고쳐져라……!", "어라? 지금 어디 치고 있었더라……?", "손 끝의 감각이 둔해지기 시작했다. 안 움직여……!", "템포가 좀 빨라졌지만, 멈출 수 없어!"]; - return self.$textFrom1D6Table(title, table);} - else if ("KEYT"['$===']($case)) { - title = "키보드 트러블표(P173)"; - table = ["손 끝의 감각이 둔해지기 시작했다. 안 움직여……!", "실수로 볼륨 슬라이드를 건드렸다! 굉음이 나올거야!", "어라? 지금 어디 치고 있었지……?", "음이 안 나는 건반이 있어……고장!?", "음색 잘못 골랐다! 원래 음색 몇 번에 저장해뒀었지……!?", "건반 한 개를 잘못 짚었어……! 불협화음이다!"]; - return self.$textFrom1D6Table(title, table);} - else if ("DRT"['$===']($case)) { - title = "드럼 트러블표(P175)"; - table = ["팔이 꼬이기 시작했다! 다시 제대로 자릴 잡지 않으면……!", "어라? 지금 어디 치고 있었더라……?", "하이햇이 열리지 않아! 나사가 풀려있는 건가……!?", "애드립을 넣었는데, 다음 프레이즈가 기억나지 않는다……!", "템포가 점점 빨라지고 있지만, 멈출 수 없어!", "스틱이 날아갔다! 여분을 어디다 뒀더라……."]; - return self.$textFrom1D6Table(title, table);} - else if ("EMO"['$===']($case)) { - title = "감정표(P183)"; - table = ["공감/불신", "우정/질투", "호적수/짜증", "불가결/경원", "존경/열등감", "애정/부담감"]; - return self.$textFrom1D6Table(title, table);} - else if (/^AT([1-6]?)$/['$===']($case)) { - value = $$($nesting, 'Regexp').$last_match(1).$to_i(); - return self.$getSkillList(value);} - else if ("SCENE"['$===']($case)) { - title = "장면표(P199)"; - table = ["혼자만의 시간.문득 과거의 기억을 더듬어본다.그러고 보면 예전에 이런 일이 있었던 것 같은데…….", "어디선가 언쟁하는 듯한 소리가 들려온다. 싸우는 걸까?", "밤의 장막이 걷히고, 주변은 정적에 휩싸여 간다. 그녀석은 지금 뭘 하고있을까.", "동료와 함께 식사를 하고있자니, 화제는 자연스레 그 이야기로……", "웃음소리로 가득 찬 공간. 계속 이런 시간이 이어지면 좋을텐데.", "햇볕이 드는 장소. 바쁜 일상에서 잠시 빠져나와 평온한 시간이 흘러간다.", "스마트폰에서 착신 알람이 울린다. 전화? 메시지? 누구한테서 온 걸까.", "갑작스레 누군가가 당신을 찾아왔다. 뭔가 전할 것이 있는 모양이다.", "누군가가 잃어버린 물건을 발견했다. 전해주는 게 좋으려나.", "누군가 소문에 대한 이야기를 하고 있다. 들을 생각이 없어도 그것은 제멋대로 들려온다.", "어쩐지 오한이 인다. 좋지 않은 일이 일어날 것만 같은……"]; - return self.$textFrom2D6Table(title, table);} - else if ("MACHI"['$===']($case)) { - title = "거리 장면표(P199)"; - table = ["들어간 적 없는 곳에 처음으로 발을 내딛었다. 조금 긴장되네.", "아르바이트를 하는 곳. 함께 일하는 동료가 의외의 사실을 알려주었다.", "대화하는 것조차 어려울 정도로 큰 소리의 음악. 그 곳에 있는 것만으로도 기분이 고양된다.", "횡단보도에서 신호를 기다리고 있다보니 낯익은 인물의 모습을 발견했다.", "갑작스럽게 내리는 비에 당황해서 발걸음을 빨리 하는 사람들. 나도 빨리 돌아가야 하는데.", "무심코 들른 가게 안에서 아는 사람과 딱 마주쳤다. 이런 곳에서 뭘 하는 거야?", "연습을 끝내고 들른 음식점에서 의외의 인물을 발견. 잠시 그 모습을 지켜보자.", "여기저기서 어린 아이들의 신이 난 소목소리가 들려온다. 나도 저런 때가 있었을까?", "아무 소리도 없는 정적의 세계. 가끔은 소리를 멀리 하는 것도 좋겠지. ", "전차 안. 손잡이를 붙잡은 채 흔들리고 있다보니, 승객 중에서 낯익은 사람을 발견했다. ", "가라오케의 복도를 걷고 있다보면 어디선가 들어본 적 있는 목소리가……?"]; - return self.$textFrom2D6Table(title, table);} - else if ("GAKKO"['$===']($case)) { - title = "학교 장면표(P199)"; - table = ["교정 뒤에서 무언가에 대해 이야기하는 두 사람을 발견했다. 대체 무슨 얘기를 하고 있는 걸까……", "어느 동아리실, 부원들은 집중한 채 부활동에 힘쓰고 있는 것 같은데……", "선생님한테서 타겟에 대한 질문을 받았다. 뭔가 신경쓰이는 게 있는 모양이다.", "나뭇잎 사이로 아침햇살이 비쳐드는 등굣길. 어떤 사람은 바쁜 듯이, 또 어떤 사람은 즐거운 듯이 학교로 향하고 있다. ", "쉬는 시간. 교실 여기저기에 떠도는 시시한 소문들. 그 중에서 신경쓰이는 화제가 들려왔다.", "모든 것이 노을빛으로 물드는 해질녘. 학생들은 학업에서 해방되어 자유롭게 얼마 남지 않은 하루를 보내고 있다.", "이동수업용 교실로 향하는 구름다리에서 아래를 내려다보면, 낯익은 인물이 있다.", "점심 시간. 학생들은 제각각의 장소에서 점심 식사를 하고 있다. 자 그럼, 난 어디서 먹을까.", "선생님에게서 심부름을 부탁받아 떠맡고 말았다. 얼른 해치워버리자. ", "슬슬 학교의 문이 닫힐 시간이다. 불이 들어와 있는 교실은 이제 거의 없다", "스피커에서 교내방송이 들려온다. 누군가를 부르고 있는 것 같은데……?"]; - return self.$textFrom2D6Table(title, table);} - else if ("BAND"['$===']($case)) { - title = "밴드 장면표(P199)"; - table = ["음악 전문 인터넷 뉴스 사이트를 체크. 크고 작은 기사가 투고되어 있다.", "의외의 장소에서 연습하고 있는 인물을 발견. 살짝 말을 걸어볼까.", "사소한 벽에 부딪쳤다. 누군가한테 상담하는 게 좋을지도……", "라이브를 보기 위해 라이브 하우스에 찾아왔다. 어떤 스테이지가 되려나.", "멤버들과 만나기로 한 라이브하우스. 도착해 있는 건 우리들만이 아닌 것 같다", "연습이 끝난 후 돌아가는 길. 그녀석도 지금쯤 연습이 끝났으려나.", "어디선가 악기 소리가 들려온다. 누가 연주하고 있는 걸까.", "열기로 가득한 방에서 나와 스튜디오의 대합실에서 쿨 다운. 소파에 앉아있는 건……", "악기점에 방문했다가 낯익은 인물을 발견. 뭘 하러 온 걸까.", "최신 히트곡이 흐르고 있는 CD가게 안. 다음 곡은 어떤 걸로 할까……", "무심코 울린 소리에서 즉흥 세션으로 발전. 가볍게 실력을 보여줄까."]; - return self.$textFrom2D6Table(title, table);} - else if ("TENKAI"['$===']($case)) { - title = "장면 전개표(P201)"; - table = [[11, "절망 : 절차를 역으로 크게 하거나 혹은, 장면 플레이어를 파멸로 몰아넣는 상황에 빠져듭니다.【디스코드】+2점"], [12, "붕괴 : 절차에 의해 장면 플레이어의 소중한 것이 붕괴되거나 혹은, 붕괴 직전에 몰립니다.【디스코드】+2점"], [13, "단절 : 장면 플레이어는 절차에 의해 무언가와 절연 상태가 됩니다.【디스코드】+2점"], [14, "공포 : 절차에 공포를 느낄만한 일과 조우합니다.【디스코드】+2점"], [15, "오해 : 장면 플레이어가 절차에 관련된 어떤 오해를 받습니다.【디스코드】+2점"], [16, "시련 : 장면 플레이어는 절차에 관련된 시련에 직면합니다.【디스코드】+2점"], [22, "악의 : 장면 플레이어의 마음에 순간적으로 나쁜 마음이 깃들어, 절차를 불합리하게 해결하려 합니다.【디스코드】+1점"], [23, "속박 : 절차에 관련된 무언가에 속박되어, 자유로운 행동이 불가능해집니다.【디스코드】+1점"], [24, "흉조 : 절차에 대해 나쁜 일이 일어날 것만 같은 조짐이 찾아옵니다.【디스코드】+1점"], [25, "가속 : 장면 플레이어는 절차의 해결에 쫓깁니다.【디스코드】+1점"], [26, "일상 : 장면 플레이어는 한가로운 일상을 보냅니다.【컨디션】+1점"], [33, "휴식 : 절차를 잊어버릴만큼 평온한 한 때를 보냅니다.【컨디션】+1점"], [34, "길조 : 절차에 대해 좋은 일이 일어날 것 같은 조짐이 찾아옵니다.【컨디션】+1점"], [35, "발견 : 장면 플레이어는 절차에 대한 무언가를 발견합니다.【컨디션】+1점"], [36, "희망 : 장면 플레이어의 마음 속에 절차에 대해 긍정적으로 맞설 의사가 생겨납니다.【컨디션】+1점"], [44, "성장 : 절차를 통해 장면 플레이어가 성장합니다.【컨디션】+2점"], [45, "애정 : 절차를 통해 장면 플레이어가 애정에 닿게 됩니다.【컨디션】+2점"], [46, "낭보 : 절차에 대한 좋은 소식이 날아들어옵니다.【컨디션】+2점"], [55, "호전 : 절차가 좋은 방향으로 향할 것 같은 사건이 일어납니다.【컨디션】+3점"], [56, "직감 : 절차를 해결할 수 있는 결정적인 번뜩임을 얻습니다.【컨디션】+3점"], [66, "기적 : 절차에 관한 기적적인 행운이 찾아옵니다.【컨디션】+3점"]]; - return self.$textFromD66Table(title, table);}; - return nil; - }, $StratoShout_Korean_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$textFromD66Table', $StratoShout_Korean_textFromD66Table$4 = function $$textFromD66Table(title, table) { - var $a, $b, self = this, isSwap = nil, dice = nil, number = nil, text = nil; - - - isSwap = true; - dice = self.$getD66(isSwap); - $b = table.$assoc(dice), $a = Opal.to_ary($b), (number = ($a[0] == null ? nil : $a[0])), (text = ($a[1] == null ? nil : $a[1])), $b; - return "" + (title) + " > [" + (number) + "] > " + (text); - }, $StratoShout_Korean_textFromD66Table$4.$$arity = 2); - - Opal.def(self, '$textFrom1D6Table', $StratoShout_Korean_textFrom1D6Table$5 = function $$textFrom1D6Table(title, table1, table2) { - var $a, $b, self = this, text1 = nil, number1 = nil, text = nil, text2 = nil, number2 = nil; - - - - if (table2 == null) { - table2 = nil; - }; - $b = self.$get_table_by_1d6(table1), $a = Opal.to_ary($b), (text1 = ($a[0] == null ? nil : $a[0])), (number1 = ($a[1] == null ? nil : $a[1])), $b; - text = "" + (title) + " > "; - if ($truthy(table2['$nil?']())) { - text = $rb_plus(text, "" + "[" + (number1) + "] > " + (text1)) - } else { - - $b = self.$get_table_by_1d6(table2), $a = Opal.to_ary($b), (text2 = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - text = $rb_plus(text, "" + "[" + (number1) + "," + (number2) + "] > " + (text1) + (text2)); - }; - return text; - }, $StratoShout_Korean_textFrom1D6Table$5.$$arity = -3); - - Opal.def(self, '$textFrom2D6Table', $StratoShout_Korean_textFrom2D6Table$6 = function $$textFrom2D6Table(title, table) { - var $a, $b, self = this, text = nil, number = nil; - - - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (number = ($a[1] == null ? nil : $a[1])), $b; - return "" + (title) + " > [" + (number) + "] > " + (text); - }, $StratoShout_Korean_textFrom2D6Table$6.$$arity = 2); - return (Opal.def(self, '$getSkillList', $StratoShout_Korean_getSkillList$7 = function $$getSkillList(field) { - var $a, $b, self = this, title = nil, table = nil, number1 = nil, fieldName = nil, skill = nil, number2 = nil, text = nil; - - - - if (field == null) { - field = 0; - }; - title = "특기 리스트"; - table = [["주의", ["과거", "연인", "동료", "가족", "자신", "지금", "이유", "꿈", "세계", "행복", "미래"]], ["신체", ["머리", "눈", "귀", "입", "가슴", "심장", "피", "등", "손", "XXX", "발"]], ["모티브", ["어둠", "무기", "짐승", "기계", "거리", "노래", "창", "꽃", "하늘", "계절", "빛"]], ["정서", ["슬픔", "분노", "불안", "공포", "놀라움", "설렘", "정열", "확신", "기대", "즐거움", "기쁨"]], ["행동", ["우는", "잊는", "지우는", "부수는", "외치는", "노래하는", "춤추는", "달리는", "만나는", "부르는", "웃는"]], ["역경", ["죽음", "상실", "폭력", "고독", "후회", "실력", "싫증", "본성", "부", "연애", "삶"]]]; - number1 = 0; - if (field['$=='](0)) { - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (table = ($a[0] == null ? nil : $a[0])), (number1 = ($a[1] == null ? nil : $a[1])), $b - } else { - table = table['$[]']($rb_minus(field, 1)) - }; - $b = table, $a = Opal.to_ary($b), (fieldName = ($a[0] == null ? nil : $a[0])), (table = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_2d6(table), $a = Opal.to_ary($b), (skill = ($a[0] == null ? nil : $a[0])), (number2 = ($a[1] == null ? nil : $a[1])), $b; - text = title; - if (field['$=='](0)) { - text = $rb_plus(text, "" + " > [" + (number1) + "," + (number2) + "]") - } else { - text = $rb_plus(text, "" + "(" + (fieldName) + "분야) > [" + (number2) + "]") - }; - return "" + (text) + " > 《" + (skill) + "/" + (fieldName) + (number2) + "》"; - }, $StratoShout_Korean_getSkillList$7.$$arity = -1), nil) && 'getSkillList'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Strave.js b/src/assets/dicebot/Strave.js deleted file mode 100644 index eda00ea82..000000000 --- a/src/assets/dicebot/Strave.js +++ /dev/null @@ -1,168 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$upcase', '$===', '$to_i', '$last_match', '$checkRoll', '$get_affiliation_table', '$get_identity_table', '$get_affiliation_table2', '$get_identity_table2', '$<', '$>', '$roll', '$collect', '$split', '$size', '$find_all', '$<=', '$!', '$nil?', '$*', '$+', '$get_strave_1d100_table_result', '$floor', '$/', '$-', '$get_table_by_number', '$get_strave_table_result']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Strave'); - - var $nesting = [self].concat($parent_nesting), $Strave_initialize$1, $Strave_rollDiceCommand$2, $Strave_checkRoll$3, $Strave_get_affiliation_table$6, $Strave_get_identity_table$7, $Strave_get_affiliation_table2$8, $Strave_get_identity_table2$9, $Strave_get_strave_1d100_table_result$10, $Strave_get_strave_table_result$11; - - self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "Strave"); - Opal.const_set($nesting[0], 'NAME', "碧空のストレイヴ"); - Opal.const_set($nesting[0], 'SORT_KEY', "へきくうのすとれいふ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・モラトリアムフェイズ用判定:MPm\n" + "・命中判定:nSTm*p\n" + "\n" + "「n」でダイス数を指定。\n" + "「m」で目標値を指定。省略は出来ません。\n" + "「p」で攻撃力を指定。「*」は「x」でも可。\n" + "\n" + "【書式例】\n" + "・MP6 → 目標値6のモラトリアムフェイズ用判定。\n" + "・5ST6*10 → 5d10で目標値6、攻撃力10の命中判定。\n" + "\n" + "【各種表】\n" + "・所属表:AFF  VN版:AFV\n" + "・アイデンティティ表:IDT  VN版:IDV\n" + "\n" + "※アイデンティティ表はエラッタ適用済です。\n"); - self.$setPrefixes(["MP\\d+", "\\d+ST\\d+(x|\\*)\\d+", "AFF", "IDT", "AFV", "IDV"]); - - Opal.def(self, '$initialize', $Strave_initialize$1 = function $$initialize() { - var $iter = $Strave_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Strave_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Strave_initialize$1, false), $zuper, $iter); - return (self.sortType = 1); - }, $Strave_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Strave_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, self = this, output = nil, $case = nil, diceCount = nil, target = nil, damage = nil; - - - output = (function() {$case = command.$upcase(); - if (/MP(\d+)$/i['$===']($case)) { - diceCount = 2; - target = $$($nesting, 'Regexp').$last_match(1).$to_i(); - return self.$checkRoll(diceCount, target, nil);} - else if (/(\d+)ST(\d+)(x|\*)(\d+)$/i['$===']($case)) { - diceCount = $$($nesting, 'Regexp').$last_match(1).$to_i(); - target = $$($nesting, 'Regexp').$last_match(2).$to_i(); - damage = ($truthy($a = $$($nesting, 'Regexp').$last_match(4)) ? $a : 0).$to_i(); - return self.$checkRoll(diceCount, target, damage);} - else if ("AFF"['$===']($case)) {return self.$get_affiliation_table()} - else if ("IDT"['$===']($case)) {return self.$get_identity_table()} - else if ("AFV"['$===']($case)) {return self.$get_affiliation_table2()} - else if ("IDV"['$===']($case)) {return self.$get_identity_table2()} - else { return nil }})(); - return output; - }, $Strave_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$checkRoll', $Strave_checkRoll$3 = function $$checkRoll(diceCount, target, damage) { - var $a, $b, $$4, $$5, self = this, _dice = nil, diceText = nil, diceArray = nil, successCount = nil, isDamage = nil, totalDamage = nil, result = nil; - - - if ($truthy($rb_lt(target, 1))) { - target = 1}; - if ($truthy($rb_gt(target, 10))) { - target = 10}; - $b = self.$roll(diceCount, 10, self.sortType), $a = Opal.to_ary($b), (_dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceArray = $send(diceText.$split(/,/), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - successCount = $send(diceArray, 'find_all', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - return $rb_le(i, target);}, $$5.$$s = self, $$5.$$arity = 1, $$5)).$size(); - isDamage = damage['$nil?']()['$!'](); - if ($truthy(isDamage)) { - - totalDamage = $rb_times(successCount, damage); - result = "" + "(" + (diceCount) + "D10<=" + (target) + ") > " + (diceText) + " > Hits:" + (successCount) + "*" + (damage) + " > " + (totalDamage) + "ダメージ"; - } else { - - result = "" + "(" + (diceCount) + "D10<=" + (target) + ") > " + (diceText); - if ($truthy($rb_gt(successCount, 0))) { - result = $rb_plus(result, " > 【成功】") - } else { - result = $rb_plus(result, " > 【失敗】") - }; - }; - return result; - }, $Strave_checkRoll$3.$$arity = 3); - - Opal.def(self, '$get_affiliation_table', $Strave_get_affiliation_table$6 = function $$get_affiliation_table() { - var self = this, name = nil, table = nil; - - - name = "所属表:基本"; - table = [[1, "アリウス管理委員会:あなたはアリウス管理委員会に所属している。"], [2, "オーヴァーブルー:あなたはオーヴァーブルーに所属している。"], [3, "ウォルゲイト:あなたはウォルゲイトに所属している。"], [4, "暁部隊:あなたはかつて、反逆者・暁弥琴と同じ部隊に所属していた。"], [5, "天文部:あなたは天文部に所属している。"], [6, "吹奏楽部:あなたは吹奏楽部に所属している。"], [7, "剣道部:あなたは剣道部に所属している。"], [8, "ボクシング部:あなたはボクシング部に所属している。"], [9, "陸上部:あなたは陸上部に所属している。"], [10, "茶道部:あなたは茶道部に所属している。"], [11, "パソコン部:あなたはパソコン部に所属している。"], [12, "新聞部:あなたは新聞部に所属している。"], [13, "弓道部:あなたは弓道部に所属している。"], [14, "美術部:あなたは美術部に所属している。"], [15, "ミリタリー研究会:あなたはミリタリー研究会に所属している。"], [16, "歴史研究会:あなたは歴史研究会に所属している。"], [17, "ロボット研究会:あなたはロボット研究会に所属している。"], [18, "図書委員会:あなたは図書委員会に所属している。"], [19, "任意:あなたの任意の所属を設定せよ。"], [20, "任意:あなたの任意の所属を設定せよ。"]]; - return self.$get_strave_1d100_table_result(name, table); - }, $Strave_get_affiliation_table$6.$$arity = 0); - - Opal.def(self, '$get_identity_table', $Strave_get_identity_table$7 = function $$get_identity_table() { - var self = this, name = nil, table = nil; - - - name = "アイデンティティ表:基本"; - table = [[1, "戦い:戦いこそが、あなたをあなたたらしめている。"], [2, "守護:あなたには守るべきものがある。"], [3, "復讐:あなたは復讐を誓っている。何かに、あるいは誰かに。"], [4, "名声:その身に浴びる脚光を、何よりも誉としている。"], [5, "恋愛:あなたはその身を焦がす恋に生きている。"], [6, "家族:あなたにとって、家族はかけがえの無いものだ。"], [7, "友人:あなたは友のために戦っている。"], [8, "部隊:共に戦う部隊の仲間が、あなたに力をくれる。"], [9, "ストレイヴ:あなたは自身のストレイヴを誇りに思っている。"], [10, "スフィアブレイク:あなたはスフィアブレイクを熱烈に目指している。"], [11, "お金:あなたはお金を求めている。報酬こそが自分の価値だ。"], [12, "夢:あなたには夢がある。自分を突き動かす夢が。"], [13, "忠誠:あなたは忠誠を誓っている。何かに、あるいは誰かに。"], [14, "共生:あなたは、ヴァイエルと人類との共生を望んでいる。"], [15, "居場所:自身の居場所こそが、あなたに力をくれる。"], [16, "強制:あなたは不本意ながら今の立場にいる。"], [17, "碧空:見上げた青空が、あなたを変えた。"], [18, "任意:あなたの任意のアイデンティティを設定せよ。"], [19, "任意:あなたの任意のアイデンティティを設定せよ。"], [20, "任意:あなたの任意のアイデンティティを設定せよ。"]]; - return self.$get_strave_1d100_table_result(name, table); - }, $Strave_get_identity_table$7.$$arity = 0); - - Opal.def(self, '$get_affiliation_table2', $Strave_get_affiliation_table2$8 = function $$get_affiliation_table2() { - var self = this, name = nil, table = nil; - - - name = "所属表:ヴァリアンスネイヴァー"; - table = [[1, "シュヴァレ・トワール:あなたはシュヴァレ・トワールに所属している。"], [2, "ディープシンカー:あなたはディープシンカーに所属している。"], [3, "ヴェルクシュタット:あなたはヴェルクシュタットに所属している。"], [4, "アウスヴァル:あなたはアウスヴァルに所属している。"], [5, "美術科:あなたは美術科に所属している。"], [6, "哲学科:あなたは哲学科に所属している。"], [7, "数学科:あなたは数学科に所属している。"], [8, "地理学科:あなたは地理学科に所属している。"], [9, "工学科:あなたは工学科に所属している。"], [10, "体育学科:あなたは体育学科に所属している。"], [11, "農学科:あなたは農学科に所属している。"], [12, "歴史学科:あなたは歴史学科に所属している。"], [13, "医学科:あなたは医学科に所属している。"], [14, "情報学科:あなたは情報学科に所属している。"], [15, "音楽科:あなたは音楽科に所属している。"], [16, "心理学科:あなたは心理学科に所属している。"], [17, "文学科:あなたは文学科に所属している。"], [18, "任意:あなたの任意の所属を設定すること。"], [19, "任意:あなたの任意の所属を設定すること。"], [20, "任意:あなたの任意の所属を設定すること。"]]; - return self.$get_strave_1d100_table_result(name, table); - }, $Strave_get_affiliation_table2$8.$$arity = 0); - - Opal.def(self, '$get_identity_table2', $Strave_get_identity_table2$9 = function $$get_identity_table2() { - var self = this, name = nil, table = nil; - - - name = "アイデンティティ表:ヴァリアンスネイヴァー"; - table = [[1, "戦い:戦いへの衝動が、あなたをあなたたらしめている。"], [2, "守護:守るべきものの存在が、あなたをあなたたらしめている。"], [3, "復讐:復讐の誓いこそが、あなたをあなたたらしめている。"], [4, "名声:与えられた名誉こそが、あなたをあなたたらしめている。"], [5, "恋愛:愛する者への想いが、あなたをあなたたらしめている。"], [6, "家族:かけがえのない家族が、あなたをあなたたらしめている。"], [7, "友人:友の存在が、あなたをあなたたらしめている。"], [8, "部隊:部隊の戦友こそが、あなたをあなたたらしめている。"], [9, "ストレイヴ:ストレイヴの存在が、あなたの心を保っている。"], [10, "宇宙:やがて来る旅立ちの日まで、あなたはあなたであろうとしている。"], [11, "お金:与えられる報酬のため、あなたはあなたであろうとしている。"], [12, "夢:あなたには、己の心に誓った夢がある。"], [13, "忠誠:その心でもって、誓った忠義がある。"], [14, "共生:あなたは、ヴァイエルと人類との共生を望んでいる。"], [15, "居場所:自身の居場所への思いが、あなたをあなたたらしめている。"], [16, "ヴァイエル:あなたと同じでありながら、あなたと異なる存在。彼らへの思いが、あなたをあなたたらしめている。"], [17, "エコール:自身の生きる場所への思いが、あなたをあなたたらしめている。"], [18, "任意:あなたの任意のアイデンティティを設定せよ。"], [19, "任意:あなたの任意のアイデンティティを設定せよ。"], [20, "任意:あなたの任意のアイデンティティを設定せよ。"]]; - return self.$get_strave_1d100_table_result(name, table); - }, $Strave_get_identity_table2$9.$$arity = 0); - - Opal.def(self, '$get_strave_1d100_table_result', $Strave_get_strave_1d100_table_result$10 = function $$get_strave_1d100_table_result(name, table) { - var $a, $b, self = this, dice = nil, dice2 = nil, result = nil; - - - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - dice2 = $rb_plus($rb_divide($rb_minus(dice.$to_i(), 1), 5).$floor(), 1); - result = self.$get_table_by_number(dice2, table); - return self.$get_strave_table_result(name, dice, result); - }, $Strave_get_strave_1d100_table_result$10.$$arity = 2); - return (Opal.def(self, '$get_strave_table_result', $Strave_get_strave_table_result$11 = function $$get_strave_table_result(name, dice, result) { - var self = this; - - return "" + (name) + "(" + (dice) + ") > " + (result) - }, $Strave_get_strave_table_result$11.$$arity = 3), nil) && 'get_strave_table_result'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/SwordWorld.js b/src/assets/dicebot/SwordWorld.js deleted file mode 100644 index 259ca10f4..000000000 --- a/src/assets/dicebot/SwordWorld.js +++ /dev/null @@ -1,445 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$include', '$setPrefixes', '$freeze', '$match', '$gsub', '$last_match', '$>=', '$<=', '$!=', '$==', '$rating', '$private', '$debug', '$getRatingCommandStrings', '$[]', '$include?', '$getRateUpFromString', '$getCriticalFromString', '$getDiceChangesFromString', '$getKeyAndAddValueFromString', '$=~', '$to_i', '$getSW2_0_RatingTable', '$-', '$length', '$>', '$getNewRates', '$<', '$+', '$getAdditionalString', '$to_s', '$loop', '$rollDice', '$<<', '$getAdditionalDiceValue', '$min', '$*', '$getResultText', '$parren_killer', '$each', '$split', '$push', '$[]=', '$roll', '$join', '$size', '$format_modifier', '$first', '$ceil', '$/', '$===']); - - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SwordWorld'); - - var $nesting = [self].concat($parent_nesting), $SwordWorld_initialize$1, $SwordWorld_changeText$2, $SwordWorld_getRatingCommandStrings$7, $SwordWorld_check_2D6$8, $SwordWorld_rollDiceCommand$9, $SwordWorld_rating$10, $SwordWorld_getAdditionalString$12, $SwordWorld_getAdditionalDiceValue$13, $SwordWorld_getCriticalFromString$14, $SwordWorld_getDiceChangesFromString$15, $SwordWorld_getRateUpFromString$16, $SwordWorld_getKeyAndAddValueFromString$17, $SwordWorld_getSW2_0_RatingTable$18, $SwordWorld_getNewRates$19, $SwordWorld_rollDice$21, $SwordWorld_getResultText$22, $SwordWorld_setRatingTable$23; - - self.$$prototype.rating_table = nil; - - self.$include($$($nesting, 'ModifierFormatter')); - Opal.const_set($nesting[0], 'ID', "SwordWorld"); - Opal.const_set($nesting[0], 'NAME', "ソードワールドRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "そおとわあると"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "・SW レーティング表 (Kx[c]+m$f) (x:キー, c:クリティカル値, m:ボーナス, f:出目修正)\n"); - self.$setPrefixes(["H?K\\d+.*"]); - - Opal.def(self, '$initialize', $SwordWorld_initialize$1 = function $$initialize() { - var $iter = $SwordWorld_initialize$1.$$p, $yield = $iter || nil, self = this, rating_table = nil; - - if ($iter) $SwordWorld_initialize$1.$$p = null; - - rating_table = 0; - $send(self, Opal.find_super_dispatcher(self, 'initialize', $SwordWorld_initialize$1, false), [], null); - return (self.rating_table = rating_table); - }, $SwordWorld_initialize$1.$$arity = 0); - Opal.const_set($nesting[0], 'RATING_TABLE_RE_FOR_CHANGE_TEXT', /^S?H?K\d+/i.$freeze()); - - Opal.def(self, '$changeText', $SwordWorld_changeText$2 = function $$changeText(string) { - var $$3, $$4, $$5, $$6, self = this; - - - if ($truthy($$($nesting, 'RATING_TABLE_RE_FOR_CHANGE_TEXT').$match(string))) { - } else { - return string - }; - return $send($send($send($send(string, 'gsub', [/\[(\d+)\]/], ($$3 = function(){var self = $$3.$$s || this; - - return "" + "c[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$3.$$s = self, $$3.$$arity = 0, $$3)), 'gsub', [/@(\d+)/], ($$4 = function(){var self = $$4.$$s || this; - - return "" + "c[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$4.$$s = self, $$4.$$arity = 0, $$4)), 'gsub', [/\$([-+]?\d+)/], ($$5 = function(){var self = $$5.$$s || this; - - return "" + "m[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$5.$$s = self, $$5.$$arity = 0, $$5)), 'gsub', [/r([-+]?\d+)/i], ($$6 = function(){var self = $$6.$$s || this; - - return "" + "r[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$6.$$s = self, $$6.$$arity = 0, $$6)); - }, $SwordWorld_changeText$2.$$arity = 1); - - Opal.def(self, '$getRatingCommandStrings', $SwordWorld_getRatingCommandStrings$7 = function $$getRatingCommandStrings() { - var self = this; - - return "cmCM" - }, $SwordWorld_getRatingCommandStrings$7.$$arity = 0); - - Opal.def(self, '$check_2D6', $SwordWorld_check_2D6$8 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var $a, self = this; - - if ($truthy($rb_ge(dice_total, 12))) { - return " > 自動的成功" - } else if ($truthy($rb_le(dice_total, 2))) { - return " > 自動的失敗" - } else if ($truthy(($truthy($a = cmp_op['$!='](">=")) ? $a : target['$==']("?")))) { - return "" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - } - }, $SwordWorld_check_2D6$8.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $SwordWorld_rollDiceCommand$9 = function $$rollDiceCommand(command) { - var self = this; - - return self.$rating(command) - }, $SwordWorld_rollDiceCommand$9.$$arity = 1); - self.$private(); - - Opal.def(self, '$rating', $SwordWorld_rating$10 = function $$rating(string) { - var $a, $b, $$11, self = this, commands = nil, m = nil, half = nil, rateUp = nil, crit = nil, firstDiceChanteTo = nil, firstDiceChangeModify = nil, key = nil, addValue = nil, rate_sw2_0 = nil, keyMax = nil, newRates = nil, output = nil, values = nil, diceResultTotals = nil, diceResults = nil, rateResults = nil, dice = nil, diceOnlyTotal = nil, totalValue = nil, round = nil; - - - self.$debug("rating string", string); - commands = self.$getRatingCommandStrings(); - m = new RegExp("" + "^S?(H?K[\\d\\+\\-]+([" + (commands) + "]\\[([\\d\\+\\-]+)\\])*([\\d\\+\\-]*)([CMR]\\[([\\d\\+\\-]+)\\]|GF|H)*)", 'i').$match(string); - if ($truthy(m)) { - } else { - - self.$debug("not matched"); - return "1"; - }; - string = m['$[]'](1); - half = string['$include?']("H"); - $b = self.$getRateUpFromString(string), $a = Opal.to_ary($b), (rateUp = ($a[0] == null ? nil : $a[0])), (string = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$getCriticalFromString(string, half), $a = Opal.to_ary($b), (crit = ($a[0] == null ? nil : $a[0])), (string = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$getDiceChangesFromString(string), $a = Opal.to_ary($b), (firstDiceChanteTo = ($a[0] == null ? nil : $a[0])), (firstDiceChangeModify = ($a[1] == null ? nil : $a[1])), (string = ($a[2] == null ? nil : $a[2])), $b; - $b = self.$getKeyAndAddValueFromString(string), $a = Opal.to_ary($b), (key = ($a[0] == null ? nil : $a[0])), (addValue = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(key['$=~'](/([\d]+)/))) { - } else { - return "1" - }; - key = $$($nesting, 'Regexp').$last_match(1).$to_i(); - rate_sw2_0 = self.$getSW2_0_RatingTable(); - keyMax = $rb_minus(rate_sw2_0.$length(), 1); - self.$debug("keyMax", keyMax); - if ($truthy($rb_gt(key, keyMax))) { - return "" + "キーナンバーは" + (keyMax) + "までです"}; - newRates = self.$getNewRates(rate_sw2_0); - output = "" + "KeyNo." + (key); - if ($truthy($rb_lt(crit, 13))) { - output = $rb_plus(output, "" + "c[" + (crit) + "]")}; - if ($truthy(firstDiceChangeModify['$!='](0))) { - output = $rb_plus(output, "" + "m[" + (firstDiceChangeModify) + "]")}; - if ($truthy(firstDiceChanteTo['$!='](0))) { - output = $rb_plus(output, "" + "m[" + (firstDiceChanteTo) + "]")}; - if ($truthy(rateUp['$!='](0))) { - output = $rb_plus(output, "" + "r[" + (rateUp) + "]")}; - $b = self.$getAdditionalString(string, output), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (values = ($a[1] == null ? nil : $a[1])), $b; - self.$debug("output", output); - if ($truthy(addValue['$!='](0))) { - - if ($truthy($rb_gt(addValue, 0))) { - output = $rb_plus(output, "" + "+" + (addValue))}; - if ($truthy($rb_lt(addValue, 0))) { - output = $rb_plus(output, addValue.$to_s())};}; - output = $rb_plus(output, " > "); - diceResultTotals = []; - diceResults = []; - rateResults = []; - dice = 0; - diceOnlyTotal = 0; - totalValue = 0; - round = 0; - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$11 = function(){var self = $$11.$$s || this, $c, $d, dice_raw = nil, diceText = nil, currentKey = nil, rateValue = nil; - - - $d = self.$rollDice(values), $c = Opal.to_ary($d), (dice_raw = ($c[0] == null ? nil : $c[0])), (diceText = ($c[1] == null ? nil : $c[1])), $d; - dice = dice_raw; - if ($truthy(firstDiceChanteTo['$!='](0))) { - - dice = (dice_raw = firstDiceChanteTo); - firstDiceChanteTo = 0; - } else if ($truthy(firstDiceChangeModify['$!='](0))) { - - dice = $rb_plus(dice, firstDiceChangeModify.$to_i()); - firstDiceChangeModify = 0;}; - if ($truthy($rb_le(dice_raw, 2))) { - - diceResultTotals['$<<'](dice_raw.$to_s()); - diceResults['$<<'](diceText.$to_s()); - rateResults['$<<']("**"); - round = $rb_plus(round, 1); - - Opal.brk(nil, $brk);}; - dice = $rb_plus(dice, self.$getAdditionalDiceValue(dice, values)); - if ($truthy($rb_lt(dice, 2))) { - dice = 2}; - if ($truthy($rb_gt(dice, 12))) { - dice = 12}; - currentKey = [$rb_plus(key, $rb_times(round, rateUp)), keyMax].$min(); - self.$debug("currentKey", currentKey); - rateValue = newRates['$[]'](dice)['$[]'](currentKey); - self.$debug("rateValue", rateValue); - totalValue = $rb_plus(totalValue, rateValue); - diceOnlyTotal = $rb_plus(diceOnlyTotal, dice); - diceResultTotals['$<<'](dice.$to_s()); - diceResults['$<<'](diceText.$to_s()); - rateResults['$<<']((function() {if ($truthy($rb_gt(dice, 2))) { - return rateValue - } else { - return "**" - }; return nil; })()); - round = $rb_plus(round, 1); - if ($truthy($rb_ge(dice, crit))) { - return nil - } else { - - Opal.brk(nil, $brk) - };}, $$11.$$s = self, $$11.$$brk = $brk, $$11.$$arity = 0, $$11)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - output = $rb_plus(output, self.$getResultText(totalValue, addValue, diceResults, diceResultTotals, rateResults, diceOnlyTotal, round, half)); - return output; - }, $SwordWorld_rating$10.$$arity = 1); - - Opal.def(self, '$getAdditionalString', $SwordWorld_getAdditionalString$12 = function $$getAdditionalString(_string, output) { - var self = this, values = nil; - - - values = $hash2([], {}); - return [output, values]; - }, $SwordWorld_getAdditionalString$12.$$arity = 2); - - Opal.def(self, '$getAdditionalDiceValue', $SwordWorld_getAdditionalDiceValue$13 = function $$getAdditionalDiceValue(_dice, _values) { - var self = this; - - return 0 - }, $SwordWorld_getAdditionalDiceValue$13.$$arity = 2); - - Opal.def(self, '$getCriticalFromString', $SwordWorld_getCriticalFromString$14 = function $$getCriticalFromString(string, half) { - var self = this, crit = nil, regexp = nil; - - - crit = (function() {if ($truthy(half)) { - return 13 - } else { - return 10 - }; return nil; })(); - regexp = /c\[(\d+)\]/i; - if ($truthy(regexp['$=~'](string))) { - - crit = $$($nesting, 'Regexp').$last_match(1).$to_i(); - if ($truthy($rb_lt(crit, 3))) { - crit = 3}; - string = string.$gsub(regexp, "");}; - return [crit, string]; - }, $SwordWorld_getCriticalFromString$14.$$arity = 2); - - Opal.def(self, '$getDiceChangesFromString', $SwordWorld_getDiceChangesFromString$15 = function $$getDiceChangesFromString(string) { - var self = this, firstDiceChanteTo = nil, firstDiceChangeModify = nil, regexp = nil; - - - firstDiceChanteTo = 0; - firstDiceChangeModify = 0; - regexp = /m\[([\d\+\-]+)\]/i; - if ($truthy(regexp['$=~'](string))) { - - firstDiceChangeModify = $$($nesting, 'Regexp').$last_match(1); - if ($truthy(/[\+\-]/['$=~'](firstDiceChangeModify))) { - } else { - - firstDiceChanteTo = firstDiceChangeModify.$to_i(); - firstDiceChangeModify = 0; - }; - string = string.$gsub(regexp, "");}; - return [firstDiceChanteTo, firstDiceChangeModify, string]; - }, $SwordWorld_getDiceChangesFromString$15.$$arity = 1); - - Opal.def(self, '$getRateUpFromString', $SwordWorld_getRateUpFromString$16 = function $$getRateUpFromString(string) { - var self = this, rateUp = nil; - - - rateUp = 0; - return [rateUp, string]; - }, $SwordWorld_getRateUpFromString$16.$$arity = 1); - - Opal.def(self, '$getKeyAndAddValueFromString', $SwordWorld_getKeyAndAddValueFromString$17 = function $$getKeyAndAddValueFromString(string) { - var self = this, key = nil, addValue = nil; - - - key = nil; - addValue = 0; - if ($truthy(/K(\d+)([\d\+\-]*)/i['$=~'](string))) { - - key = $$($nesting, 'Regexp').$last_match(1); - if ($truthy($$($nesting, 'Regexp').$last_match(2))) { - addValue = self.$parren_killer($rb_plus($rb_plus("(", $$($nesting, 'Regexp').$last_match(2)), ")")).$to_i()}; - } else { - key = string - }; - return [key, addValue]; - }, $SwordWorld_getKeyAndAddValueFromString$17.$$arity = 1); - - Opal.def(self, '$getSW2_0_RatingTable', $SwordWorld_getSW2_0_RatingTable$18 = function $$getSW2_0_RatingTable() { - var self = this, rate_sw2_0 = nil; - - - rate_sw2_0 = ["*,0,0,0,1,2,2,3,3,4,4", "*,0,0,0,1,2,3,3,3,4,4", "*,0,0,0,1,2,3,4,4,4,4", "*,0,0,1,1,2,3,4,4,4,5", "*,0,0,1,2,2,3,4,4,5,5", "*,0,1,1,2,2,3,4,5,5,5", "*,0,1,1,2,3,3,4,5,5,5", "*,0,1,1,2,3,4,4,5,5,6", "*,0,1,2,2,3,4,4,5,6,6", "*,0,1,2,3,3,4,4,5,6,7", "*,1,1,2,3,3,4,5,5,6,7", "*,1,2,2,3,3,4,5,6,6,7", "*,1,2,2,3,4,4,5,6,6,7", "*,1,2,3,3,4,4,5,6,7,7", "*,1,2,3,4,4,4,5,6,7,8", "*,1,2,3,4,4,5,5,6,7,8", "*,1,2,3,4,4,5,6,7,7,8", "*,1,2,3,4,5,5,6,7,7,8", "*,1,2,3,4,5,6,6,7,7,8", "*,1,2,3,4,5,6,7,7,8,9", "*,1,2,3,4,5,6,7,8,9,10", "*,1,2,3,4,6,6,7,8,9,10", "*,1,2,3,5,6,6,7,8,9,10", "*,2,2,3,5,6,7,7,8,9,10", "*,2,3,4,5,6,7,7,8,9,10", "*,2,3,4,5,6,7,8,8,9,10", "*,2,3,4,5,6,8,8,9,9,10", "*,2,3,4,6,6,8,8,9,9,10", "*,2,3,4,6,6,8,9,9,10,10", "*,2,3,4,6,7,8,9,9,10,10", "*,2,4,4,6,7,8,9,10,10,10", "*,2,4,5,6,7,8,9,10,10,11", "*,3,4,5,6,7,8,10,10,10,11", "*,3,4,5,6,8,8,10,10,10,11", "*,3,4,5,6,8,9,10,10,11,11", "*,3,4,5,7,8,9,10,10,11,12", "*,3,5,5,7,8,9,10,11,11,12", "*,3,5,6,7,8,9,10,11,12,12", "*,3,5,6,7,8,10,10,11,12,13", "*,4,5,6,7,8,10,11,11,12,13", "*,4,5,6,7,9,10,11,11,12,13", "*,4,6,6,7,9,10,11,12,12,13", "*,4,6,7,7,9,10,11,12,13,13", "*,4,6,7,8,9,10,11,12,13,14", "*,4,6,7,8,10,10,11,12,13,14", "*,4,6,7,9,10,10,11,12,13,14", "*,4,6,7,9,10,10,12,13,13,14", "*,4,6,7,9,10,11,12,13,13,15", "*,4,6,7,9,10,12,12,13,13,15", "*,4,6,7,10,10,12,12,13,14,15", "*,4,6,8,10,10,12,12,13,15,15", "*,5,7,8,10,10,12,12,13,15,15", "*,5,7,8,10,11,12,12,13,15,15", "*,5,7,9,10,11,12,12,14,15,15", "*,5,7,9,10,11,12,13,14,15,16", "*,5,7,10,10,11,12,13,14,16,16", "*,5,8,10,10,11,12,13,15,16,16", "*,5,8,10,11,11,12,13,15,16,17", "*,5,8,10,11,12,12,13,15,16,17", "*,5,9,10,11,12,12,14,15,16,17", "*,5,9,10,11,12,13,14,15,16,18", "*,5,9,10,11,12,13,14,16,17,18", "*,5,9,10,11,13,13,14,16,17,18", "*,5,9,10,11,13,13,15,17,17,18", "*,5,9,10,11,13,14,15,17,17,18", "*,5,9,10,12,13,14,15,17,18,18", "*,5,9,10,12,13,15,15,17,18,19", "*,5,9,10,12,13,15,16,17,19,19", "*,5,9,10,12,14,15,16,17,19,19", "*,5,9,10,12,14,16,16,17,19,19", "*,5,9,10,12,14,16,17,18,19,19", "*,5,9,10,13,14,16,17,18,19,20", "*,5,9,10,13,15,16,17,18,19,20", "*,5,9,10,13,15,16,17,19,20,21", "*,6,9,10,13,15,16,18,19,20,21", "*,6,9,10,13,16,16,18,19,20,21", "*,6,9,10,13,16,17,18,19,20,21", "*,6,9,10,13,16,17,18,20,21,22", "*,6,9,10,13,16,17,19,20,22,23", "*,6,9,10,13,16,18,19,20,22,23", "*,6,9,10,13,16,18,20,21,22,23", "*,6,9,10,13,17,18,20,21,22,23", "*,6,9,10,14,17,18,20,21,22,24", "*,6,9,11,14,17,18,20,21,23,24", "*,6,9,11,14,17,19,20,21,23,24", "*,6,9,11,14,17,19,21,22,23,24", "*,7,10,11,14,17,19,21,22,23,25", "*,7,10,12,14,17,19,21,22,24,25", "*,7,10,12,14,18,19,21,22,24,25", "*,7,10,12,15,18,19,21,22,24,26", "*,7,10,12,15,18,19,21,23,25,26", "*,7,11,13,15,18,19,21,23,25,26", "*,7,11,13,15,18,20,21,23,25,27", "*,8,11,13,15,18,20,22,23,25,27", "*,8,11,13,16,18,20,22,23,25,28", "*,8,11,14,16,18,20,22,23,26,28", "*,8,11,14,16,19,20,22,23,26,28", "*,8,12,14,16,19,20,22,24,26,28", "*,8,12,15,16,19,20,22,24,27,28", "*,8,12,15,17,19,20,22,24,27,29", "*,8,12,15,18,19,20,22,24,27,30"]; - return rate_sw2_0; - }, $SwordWorld_getSW2_0_RatingTable$18.$$arity = 0); - - Opal.def(self, '$getNewRates', $SwordWorld_getNewRates$19 = function $$getNewRates(rate_sw2_0) { - var $$20, self = this, rate_3 = nil, rate_4 = nil, rate_5 = nil, rate_6 = nil, rate_7 = nil, rate_8 = nil, rate_9 = nil, rate_10 = nil, rate_11 = nil, rate_12 = nil, zeroArray = nil, $writer = nil, newRates = nil; - - - rate_3 = []; - rate_4 = []; - rate_5 = []; - rate_6 = []; - rate_7 = []; - rate_8 = []; - rate_9 = []; - rate_10 = []; - rate_11 = []; - rate_12 = []; - zeroArray = []; - $send(rate_sw2_0, 'each', [], ($$20 = function(rateText){var self = $$20.$$s || this, rate_arr = nil; - - - - if (rateText == null) { - rateText = nil; - }; - rate_arr = rateText.$split(/,/); - zeroArray.$push(0); - rate_3.$push(rate_arr['$[]'](1).$to_i()); - rate_4.$push(rate_arr['$[]'](2).$to_i()); - rate_5.$push(rate_arr['$[]'](3).$to_i()); - rate_6.$push(rate_arr['$[]'](4).$to_i()); - rate_7.$push(rate_arr['$[]'](5).$to_i()); - rate_8.$push(rate_arr['$[]'](6).$to_i()); - rate_9.$push(rate_arr['$[]'](7).$to_i()); - rate_10.$push(rate_arr['$[]'](8).$to_i()); - rate_11.$push(rate_arr['$[]'](9).$to_i()); - return rate_12.$push(rate_arr['$[]'](10).$to_i());}, $$20.$$s = self, $$20.$$arity = 1, $$20)); - if (self.rating_table['$=='](1)) { - - $writer = [31, (($writer = [32, (($writer = [33, 10]), $send(rate_12, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])]), $send(rate_12, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])]; - $send(rate_12, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];}; - newRates = [zeroArray, zeroArray, zeroArray, rate_3, rate_4, rate_5, rate_6, rate_7, rate_8, rate_9, rate_10, rate_11, rate_12]; - return newRates; - }, $SwordWorld_getNewRates$19.$$arity = 1); - - Opal.def(self, '$rollDice', $SwordWorld_rollDice$21 = function $$rollDice(_values) { - var $a, $b, self = this, dice = nil, diceText = nil; - - - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - return [dice, diceText]; - }, $SwordWorld_rollDice$21.$$arity = 1); - - Opal.def(self, '$getResultText', $SwordWorld_getResultText$22 = function $$getResultText(rating_total, modifier, diceResults, diceResultTotals, rateResults, dice_total, round, half) { - var $a, self = this, sequence = nil, text = nil, round_text = nil, total = nil, total_text = nil; - - - sequence = []; - sequence.$push("" + "2D:[" + (diceResults.$join(" ")) + "]=" + (diceResultTotals.$join(","))); - if ($truthy($rb_le(dice_total, 2))) { - - sequence.$push(rateResults.$join(",")); - sequence.$push("自動的失敗"); - return sequence.$join(" > ");}; - if ($truthy(($truthy($a = $rb_gt(rateResults.$size(), 1)) ? $a : modifier['$!='](0)))) { - - text = $rb_plus(rateResults.$join(","), self.$format_modifier(modifier)); - if ($truthy(half)) { - text = "" + "(" + (text) + ")/2"}; - sequence.$push(text); - } else if ($truthy(half)) { - sequence.$push("" + (rateResults.$first()) + "/2")}; - if ($truthy($rb_gt(round, 1))) { - - round_text = "" + ($rb_minus(round, 1)) + "回転"; - sequence.$push(round_text);}; - total = $rb_plus(rating_total, modifier); - if ($truthy(half)) { - total = $rb_divide(total, 2.0).$ceil()}; - total_text = total.$to_s(); - sequence.$push(total_text); - return sequence.$join(" > "); - }, $SwordWorld_getResultText$22.$$arity = 8); - return (Opal.def(self, '$setRatingTable', $SwordWorld_setRatingTable$23 = function $$setRatingTable(tnick) { - var self = this, mode_str = nil, pre_mode = nil, $case = nil; - - - mode_str = ""; - pre_mode = self.rating_table; - if ($truthy(/(\d+)/['$=~'](tnick))) { - - self.rating_table = $$($nesting, 'Regexp').$last_match(1).$to_i(); - if ($truthy($rb_gt(self.rating_table, 1))) { - - mode_str = "2.0-mode"; - self.rating_table = 2; - } else if ($truthy($rb_gt(self.rating_table, 0))) { - - mode_str = "new-mode"; - self.rating_table = 1; - } else { - - mode_str = "old-mode"; - self.rating_table = 0; - }; - } else { - $case = tnick; - if (/old/i['$===']($case)) { - self.rating_table = 0; - mode_str = "old-mode";} - else if (/new/i['$===']($case)) { - self.rating_table = 1; - mode_str = "new-mode";} - else if (/2\.0/i['$===']($case)) { - self.rating_table = 2; - mode_str = "2.0-mode";} - }; - if (self.rating_table['$=='](pre_mode)) { - return "1"}; - return "" + "RatingTableを" + (mode_str) + "に変更しました"; - }, $SwordWorld_setRatingTable$23.$$arity = 1), nil) && 'setRatingTable'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/SwordWorld2_0.js b/src/assets/dicebot/SwordWorld2_0.js deleted file mode 100644 index 671a936dc..000000000 --- a/src/assets/dicebot/SwordWorld2_0.js +++ /dev/null @@ -1,909 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/SwordWorld"] = function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$include', '$setPrefixes', '$freeze', '$match', '$gsub', '$last_match', '$>=', '$<=', '$!=', '$==', '$rating', '$private', '$debug', '$getRatingCommandStrings', '$[]', '$include?', '$getRateUpFromString', '$getCriticalFromString', '$getDiceChangesFromString', '$getKeyAndAddValueFromString', '$=~', '$to_i', '$getSW2_0_RatingTable', '$-', '$length', '$>', '$getNewRates', '$<', '$+', '$getAdditionalString', '$to_s', '$loop', '$rollDice', '$<<', '$getAdditionalDiceValue', '$min', '$*', '$getResultText', '$parren_killer', '$each', '$split', '$push', '$[]=', '$roll', '$join', '$size', '$format_modifier', '$first', '$ceil', '$/', '$===']); - - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SwordWorld'); - - var $nesting = [self].concat($parent_nesting), $SwordWorld_initialize$1, $SwordWorld_changeText$2, $SwordWorld_getRatingCommandStrings$7, $SwordWorld_check_2D6$8, $SwordWorld_rollDiceCommand$9, $SwordWorld_rating$10, $SwordWorld_getAdditionalString$12, $SwordWorld_getAdditionalDiceValue$13, $SwordWorld_getCriticalFromString$14, $SwordWorld_getDiceChangesFromString$15, $SwordWorld_getRateUpFromString$16, $SwordWorld_getKeyAndAddValueFromString$17, $SwordWorld_getSW2_0_RatingTable$18, $SwordWorld_getNewRates$19, $SwordWorld_rollDice$21, $SwordWorld_getResultText$22, $SwordWorld_setRatingTable$23; - - self.$$prototype.rating_table = nil; - - self.$include($$($nesting, 'ModifierFormatter')); - Opal.const_set($nesting[0], 'ID', "SwordWorld"); - Opal.const_set($nesting[0], 'NAME', "ソードワールドRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "そおとわあると"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "・SW レーティング表 (Kx[c]+m$f) (x:キー, c:クリティカル値, m:ボーナス, f:出目修正)\n"); - self.$setPrefixes(["H?K\\d+.*"]); - - Opal.def(self, '$initialize', $SwordWorld_initialize$1 = function $$initialize() { - var $iter = $SwordWorld_initialize$1.$$p, $yield = $iter || nil, self = this, rating_table = nil; - - if ($iter) $SwordWorld_initialize$1.$$p = null; - - rating_table = 0; - $send(self, Opal.find_super_dispatcher(self, 'initialize', $SwordWorld_initialize$1, false), [], null); - return (self.rating_table = rating_table); - }, $SwordWorld_initialize$1.$$arity = 0); - Opal.const_set($nesting[0], 'RATING_TABLE_RE_FOR_CHANGE_TEXT', /^S?H?K\d+/i.$freeze()); - - Opal.def(self, '$changeText', $SwordWorld_changeText$2 = function $$changeText(string) { - var $$3, $$4, $$5, $$6, self = this; - - - if ($truthy($$($nesting, 'RATING_TABLE_RE_FOR_CHANGE_TEXT').$match(string))) { - } else { - return string - }; - return $send($send($send($send(string, 'gsub', [/\[(\d+)\]/], ($$3 = function(){var self = $$3.$$s || this; - - return "" + "c[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$3.$$s = self, $$3.$$arity = 0, $$3)), 'gsub', [/@(\d+)/], ($$4 = function(){var self = $$4.$$s || this; - - return "" + "c[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$4.$$s = self, $$4.$$arity = 0, $$4)), 'gsub', [/\$([-+]?\d+)/], ($$5 = function(){var self = $$5.$$s || this; - - return "" + "m[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$5.$$s = self, $$5.$$arity = 0, $$5)), 'gsub', [/r([-+]?\d+)/i], ($$6 = function(){var self = $$6.$$s || this; - - return "" + "r[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$6.$$s = self, $$6.$$arity = 0, $$6)); - }, $SwordWorld_changeText$2.$$arity = 1); - - Opal.def(self, '$getRatingCommandStrings', $SwordWorld_getRatingCommandStrings$7 = function $$getRatingCommandStrings() { - var self = this; - - return "cmCM" - }, $SwordWorld_getRatingCommandStrings$7.$$arity = 0); - - Opal.def(self, '$check_2D6', $SwordWorld_check_2D6$8 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var $a, self = this; - - if ($truthy($rb_ge(dice_total, 12))) { - return " > 自動的成功" - } else if ($truthy($rb_le(dice_total, 2))) { - return " > 自動的失敗" - } else if ($truthy(($truthy($a = cmp_op['$!='](">=")) ? $a : target['$==']("?")))) { - return "" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - } - }, $SwordWorld_check_2D6$8.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $SwordWorld_rollDiceCommand$9 = function $$rollDiceCommand(command) { - var self = this; - - return self.$rating(command) - }, $SwordWorld_rollDiceCommand$9.$$arity = 1); - self.$private(); - - Opal.def(self, '$rating', $SwordWorld_rating$10 = function $$rating(string) { - var $a, $b, $$11, self = this, commands = nil, m = nil, half = nil, rateUp = nil, crit = nil, firstDiceChanteTo = nil, firstDiceChangeModify = nil, key = nil, addValue = nil, rate_sw2_0 = nil, keyMax = nil, newRates = nil, output = nil, values = nil, diceResultTotals = nil, diceResults = nil, rateResults = nil, dice = nil, diceOnlyTotal = nil, totalValue = nil, round = nil; - - - self.$debug("rating string", string); - commands = self.$getRatingCommandStrings(); - m = new RegExp("" + "^S?(H?K[\\d\\+\\-]+([" + (commands) + "]\\[([\\d\\+\\-]+)\\])*([\\d\\+\\-]*)([CMR]\\[([\\d\\+\\-]+)\\]|GF|H)*)", 'i').$match(string); - if ($truthy(m)) { - } else { - - self.$debug("not matched"); - return "1"; - }; - string = m['$[]'](1); - half = string['$include?']("H"); - $b = self.$getRateUpFromString(string), $a = Opal.to_ary($b), (rateUp = ($a[0] == null ? nil : $a[0])), (string = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$getCriticalFromString(string, half), $a = Opal.to_ary($b), (crit = ($a[0] == null ? nil : $a[0])), (string = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$getDiceChangesFromString(string), $a = Opal.to_ary($b), (firstDiceChanteTo = ($a[0] == null ? nil : $a[0])), (firstDiceChangeModify = ($a[1] == null ? nil : $a[1])), (string = ($a[2] == null ? nil : $a[2])), $b; - $b = self.$getKeyAndAddValueFromString(string), $a = Opal.to_ary($b), (key = ($a[0] == null ? nil : $a[0])), (addValue = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(key['$=~'](/([\d]+)/))) { - } else { - return "1" - }; - key = $$($nesting, 'Regexp').$last_match(1).$to_i(); - rate_sw2_0 = self.$getSW2_0_RatingTable(); - keyMax = $rb_minus(rate_sw2_0.$length(), 1); - self.$debug("keyMax", keyMax); - if ($truthy($rb_gt(key, keyMax))) { - return "" + "キーナンバーは" + (keyMax) + "までです"}; - newRates = self.$getNewRates(rate_sw2_0); - output = "" + "KeyNo." + (key); - if ($truthy($rb_lt(crit, 13))) { - output = $rb_plus(output, "" + "c[" + (crit) + "]")}; - if ($truthy(firstDiceChangeModify['$!='](0))) { - output = $rb_plus(output, "" + "m[" + (firstDiceChangeModify) + "]")}; - if ($truthy(firstDiceChanteTo['$!='](0))) { - output = $rb_plus(output, "" + "m[" + (firstDiceChanteTo) + "]")}; - if ($truthy(rateUp['$!='](0))) { - output = $rb_plus(output, "" + "r[" + (rateUp) + "]")}; - $b = self.$getAdditionalString(string, output), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (values = ($a[1] == null ? nil : $a[1])), $b; - self.$debug("output", output); - if ($truthy(addValue['$!='](0))) { - - if ($truthy($rb_gt(addValue, 0))) { - output = $rb_plus(output, "" + "+" + (addValue))}; - if ($truthy($rb_lt(addValue, 0))) { - output = $rb_plus(output, addValue.$to_s())};}; - output = $rb_plus(output, " > "); - diceResultTotals = []; - diceResults = []; - rateResults = []; - dice = 0; - diceOnlyTotal = 0; - totalValue = 0; - round = 0; - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$11 = function(){var self = $$11.$$s || this, $c, $d, dice_raw = nil, diceText = nil, currentKey = nil, rateValue = nil; - - - $d = self.$rollDice(values), $c = Opal.to_ary($d), (dice_raw = ($c[0] == null ? nil : $c[0])), (diceText = ($c[1] == null ? nil : $c[1])), $d; - dice = dice_raw; - if ($truthy(firstDiceChanteTo['$!='](0))) { - - dice = (dice_raw = firstDiceChanteTo); - firstDiceChanteTo = 0; - } else if ($truthy(firstDiceChangeModify['$!='](0))) { - - dice = $rb_plus(dice, firstDiceChangeModify.$to_i()); - firstDiceChangeModify = 0;}; - if ($truthy($rb_le(dice_raw, 2))) { - - diceResultTotals['$<<'](dice_raw.$to_s()); - diceResults['$<<'](diceText.$to_s()); - rateResults['$<<']("**"); - round = $rb_plus(round, 1); - - Opal.brk(nil, $brk);}; - dice = $rb_plus(dice, self.$getAdditionalDiceValue(dice, values)); - if ($truthy($rb_lt(dice, 2))) { - dice = 2}; - if ($truthy($rb_gt(dice, 12))) { - dice = 12}; - currentKey = [$rb_plus(key, $rb_times(round, rateUp)), keyMax].$min(); - self.$debug("currentKey", currentKey); - rateValue = newRates['$[]'](dice)['$[]'](currentKey); - self.$debug("rateValue", rateValue); - totalValue = $rb_plus(totalValue, rateValue); - diceOnlyTotal = $rb_plus(diceOnlyTotal, dice); - diceResultTotals['$<<'](dice.$to_s()); - diceResults['$<<'](diceText.$to_s()); - rateResults['$<<']((function() {if ($truthy($rb_gt(dice, 2))) { - return rateValue - } else { - return "**" - }; return nil; })()); - round = $rb_plus(round, 1); - if ($truthy($rb_ge(dice, crit))) { - return nil - } else { - - Opal.brk(nil, $brk) - };}, $$11.$$s = self, $$11.$$brk = $brk, $$11.$$arity = 0, $$11)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - output = $rb_plus(output, self.$getResultText(totalValue, addValue, diceResults, diceResultTotals, rateResults, diceOnlyTotal, round, half)); - return output; - }, $SwordWorld_rating$10.$$arity = 1); - - Opal.def(self, '$getAdditionalString', $SwordWorld_getAdditionalString$12 = function $$getAdditionalString(_string, output) { - var self = this, values = nil; - - - values = $hash2([], {}); - return [output, values]; - }, $SwordWorld_getAdditionalString$12.$$arity = 2); - - Opal.def(self, '$getAdditionalDiceValue', $SwordWorld_getAdditionalDiceValue$13 = function $$getAdditionalDiceValue(_dice, _values) { - var self = this; - - return 0 - }, $SwordWorld_getAdditionalDiceValue$13.$$arity = 2); - - Opal.def(self, '$getCriticalFromString', $SwordWorld_getCriticalFromString$14 = function $$getCriticalFromString(string, half) { - var self = this, crit = nil, regexp = nil; - - - crit = (function() {if ($truthy(half)) { - return 13 - } else { - return 10 - }; return nil; })(); - regexp = /c\[(\d+)\]/i; - if ($truthy(regexp['$=~'](string))) { - - crit = $$($nesting, 'Regexp').$last_match(1).$to_i(); - if ($truthy($rb_lt(crit, 3))) { - crit = 3}; - string = string.$gsub(regexp, "");}; - return [crit, string]; - }, $SwordWorld_getCriticalFromString$14.$$arity = 2); - - Opal.def(self, '$getDiceChangesFromString', $SwordWorld_getDiceChangesFromString$15 = function $$getDiceChangesFromString(string) { - var self = this, firstDiceChanteTo = nil, firstDiceChangeModify = nil, regexp = nil; - - - firstDiceChanteTo = 0; - firstDiceChangeModify = 0; - regexp = /m\[([\d\+\-]+)\]/i; - if ($truthy(regexp['$=~'](string))) { - - firstDiceChangeModify = $$($nesting, 'Regexp').$last_match(1); - if ($truthy(/[\+\-]/['$=~'](firstDiceChangeModify))) { - } else { - - firstDiceChanteTo = firstDiceChangeModify.$to_i(); - firstDiceChangeModify = 0; - }; - string = string.$gsub(regexp, "");}; - return [firstDiceChanteTo, firstDiceChangeModify, string]; - }, $SwordWorld_getDiceChangesFromString$15.$$arity = 1); - - Opal.def(self, '$getRateUpFromString', $SwordWorld_getRateUpFromString$16 = function $$getRateUpFromString(string) { - var self = this, rateUp = nil; - - - rateUp = 0; - return [rateUp, string]; - }, $SwordWorld_getRateUpFromString$16.$$arity = 1); - - Opal.def(self, '$getKeyAndAddValueFromString', $SwordWorld_getKeyAndAddValueFromString$17 = function $$getKeyAndAddValueFromString(string) { - var self = this, key = nil, addValue = nil; - - - key = nil; - addValue = 0; - if ($truthy(/K(\d+)([\d\+\-]*)/i['$=~'](string))) { - - key = $$($nesting, 'Regexp').$last_match(1); - if ($truthy($$($nesting, 'Regexp').$last_match(2))) { - addValue = self.$parren_killer($rb_plus($rb_plus("(", $$($nesting, 'Regexp').$last_match(2)), ")")).$to_i()}; - } else { - key = string - }; - return [key, addValue]; - }, $SwordWorld_getKeyAndAddValueFromString$17.$$arity = 1); - - Opal.def(self, '$getSW2_0_RatingTable', $SwordWorld_getSW2_0_RatingTable$18 = function $$getSW2_0_RatingTable() { - var self = this, rate_sw2_0 = nil; - - - rate_sw2_0 = ["*,0,0,0,1,2,2,3,3,4,4", "*,0,0,0,1,2,3,3,3,4,4", "*,0,0,0,1,2,3,4,4,4,4", "*,0,0,1,1,2,3,4,4,4,5", "*,0,0,1,2,2,3,4,4,5,5", "*,0,1,1,2,2,3,4,5,5,5", "*,0,1,1,2,3,3,4,5,5,5", "*,0,1,1,2,3,4,4,5,5,6", "*,0,1,2,2,3,4,4,5,6,6", "*,0,1,2,3,3,4,4,5,6,7", "*,1,1,2,3,3,4,5,5,6,7", "*,1,2,2,3,3,4,5,6,6,7", "*,1,2,2,3,4,4,5,6,6,7", "*,1,2,3,3,4,4,5,6,7,7", "*,1,2,3,4,4,4,5,6,7,8", "*,1,2,3,4,4,5,5,6,7,8", "*,1,2,3,4,4,5,6,7,7,8", "*,1,2,3,4,5,5,6,7,7,8", "*,1,2,3,4,5,6,6,7,7,8", "*,1,2,3,4,5,6,7,7,8,9", "*,1,2,3,4,5,6,7,8,9,10", "*,1,2,3,4,6,6,7,8,9,10", "*,1,2,3,5,6,6,7,8,9,10", "*,2,2,3,5,6,7,7,8,9,10", "*,2,3,4,5,6,7,7,8,9,10", "*,2,3,4,5,6,7,8,8,9,10", "*,2,3,4,5,6,8,8,9,9,10", "*,2,3,4,6,6,8,8,9,9,10", "*,2,3,4,6,6,8,9,9,10,10", "*,2,3,4,6,7,8,9,9,10,10", "*,2,4,4,6,7,8,9,10,10,10", "*,2,4,5,6,7,8,9,10,10,11", "*,3,4,5,6,7,8,10,10,10,11", "*,3,4,5,6,8,8,10,10,10,11", "*,3,4,5,6,8,9,10,10,11,11", "*,3,4,5,7,8,9,10,10,11,12", "*,3,5,5,7,8,9,10,11,11,12", "*,3,5,6,7,8,9,10,11,12,12", "*,3,5,6,7,8,10,10,11,12,13", "*,4,5,6,7,8,10,11,11,12,13", "*,4,5,6,7,9,10,11,11,12,13", "*,4,6,6,7,9,10,11,12,12,13", "*,4,6,7,7,9,10,11,12,13,13", "*,4,6,7,8,9,10,11,12,13,14", "*,4,6,7,8,10,10,11,12,13,14", "*,4,6,7,9,10,10,11,12,13,14", "*,4,6,7,9,10,10,12,13,13,14", "*,4,6,7,9,10,11,12,13,13,15", "*,4,6,7,9,10,12,12,13,13,15", "*,4,6,7,10,10,12,12,13,14,15", "*,4,6,8,10,10,12,12,13,15,15", "*,5,7,8,10,10,12,12,13,15,15", "*,5,7,8,10,11,12,12,13,15,15", "*,5,7,9,10,11,12,12,14,15,15", "*,5,7,9,10,11,12,13,14,15,16", "*,5,7,10,10,11,12,13,14,16,16", "*,5,8,10,10,11,12,13,15,16,16", "*,5,8,10,11,11,12,13,15,16,17", "*,5,8,10,11,12,12,13,15,16,17", "*,5,9,10,11,12,12,14,15,16,17", "*,5,9,10,11,12,13,14,15,16,18", "*,5,9,10,11,12,13,14,16,17,18", "*,5,9,10,11,13,13,14,16,17,18", "*,5,9,10,11,13,13,15,17,17,18", "*,5,9,10,11,13,14,15,17,17,18", "*,5,9,10,12,13,14,15,17,18,18", "*,5,9,10,12,13,15,15,17,18,19", "*,5,9,10,12,13,15,16,17,19,19", "*,5,9,10,12,14,15,16,17,19,19", "*,5,9,10,12,14,16,16,17,19,19", "*,5,9,10,12,14,16,17,18,19,19", "*,5,9,10,13,14,16,17,18,19,20", "*,5,9,10,13,15,16,17,18,19,20", "*,5,9,10,13,15,16,17,19,20,21", "*,6,9,10,13,15,16,18,19,20,21", "*,6,9,10,13,16,16,18,19,20,21", "*,6,9,10,13,16,17,18,19,20,21", "*,6,9,10,13,16,17,18,20,21,22", "*,6,9,10,13,16,17,19,20,22,23", "*,6,9,10,13,16,18,19,20,22,23", "*,6,9,10,13,16,18,20,21,22,23", "*,6,9,10,13,17,18,20,21,22,23", "*,6,9,10,14,17,18,20,21,22,24", "*,6,9,11,14,17,18,20,21,23,24", "*,6,9,11,14,17,19,20,21,23,24", "*,6,9,11,14,17,19,21,22,23,24", "*,7,10,11,14,17,19,21,22,23,25", "*,7,10,12,14,17,19,21,22,24,25", "*,7,10,12,14,18,19,21,22,24,25", "*,7,10,12,15,18,19,21,22,24,26", "*,7,10,12,15,18,19,21,23,25,26", "*,7,11,13,15,18,19,21,23,25,26", "*,7,11,13,15,18,20,21,23,25,27", "*,8,11,13,15,18,20,22,23,25,27", "*,8,11,13,16,18,20,22,23,25,28", "*,8,11,14,16,18,20,22,23,26,28", "*,8,11,14,16,19,20,22,23,26,28", "*,8,12,14,16,19,20,22,24,26,28", "*,8,12,15,16,19,20,22,24,27,28", "*,8,12,15,17,19,20,22,24,27,29", "*,8,12,15,18,19,20,22,24,27,30"]; - return rate_sw2_0; - }, $SwordWorld_getSW2_0_RatingTable$18.$$arity = 0); - - Opal.def(self, '$getNewRates', $SwordWorld_getNewRates$19 = function $$getNewRates(rate_sw2_0) { - var $$20, self = this, rate_3 = nil, rate_4 = nil, rate_5 = nil, rate_6 = nil, rate_7 = nil, rate_8 = nil, rate_9 = nil, rate_10 = nil, rate_11 = nil, rate_12 = nil, zeroArray = nil, $writer = nil, newRates = nil; - - - rate_3 = []; - rate_4 = []; - rate_5 = []; - rate_6 = []; - rate_7 = []; - rate_8 = []; - rate_9 = []; - rate_10 = []; - rate_11 = []; - rate_12 = []; - zeroArray = []; - $send(rate_sw2_0, 'each', [], ($$20 = function(rateText){var self = $$20.$$s || this, rate_arr = nil; - - - - if (rateText == null) { - rateText = nil; - }; - rate_arr = rateText.$split(/,/); - zeroArray.$push(0); - rate_3.$push(rate_arr['$[]'](1).$to_i()); - rate_4.$push(rate_arr['$[]'](2).$to_i()); - rate_5.$push(rate_arr['$[]'](3).$to_i()); - rate_6.$push(rate_arr['$[]'](4).$to_i()); - rate_7.$push(rate_arr['$[]'](5).$to_i()); - rate_8.$push(rate_arr['$[]'](6).$to_i()); - rate_9.$push(rate_arr['$[]'](7).$to_i()); - rate_10.$push(rate_arr['$[]'](8).$to_i()); - rate_11.$push(rate_arr['$[]'](9).$to_i()); - return rate_12.$push(rate_arr['$[]'](10).$to_i());}, $$20.$$s = self, $$20.$$arity = 1, $$20)); - if (self.rating_table['$=='](1)) { - - $writer = [31, (($writer = [32, (($writer = [33, 10]), $send(rate_12, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])]), $send(rate_12, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])]; - $send(rate_12, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];}; - newRates = [zeroArray, zeroArray, zeroArray, rate_3, rate_4, rate_5, rate_6, rate_7, rate_8, rate_9, rate_10, rate_11, rate_12]; - return newRates; - }, $SwordWorld_getNewRates$19.$$arity = 1); - - Opal.def(self, '$rollDice', $SwordWorld_rollDice$21 = function $$rollDice(_values) { - var $a, $b, self = this, dice = nil, diceText = nil; - - - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - return [dice, diceText]; - }, $SwordWorld_rollDice$21.$$arity = 1); - - Opal.def(self, '$getResultText', $SwordWorld_getResultText$22 = function $$getResultText(rating_total, modifier, diceResults, diceResultTotals, rateResults, dice_total, round, half) { - var $a, self = this, sequence = nil, text = nil, round_text = nil, total = nil, total_text = nil; - - - sequence = []; - sequence.$push("" + "2D:[" + (diceResults.$join(" ")) + "]=" + (diceResultTotals.$join(","))); - if ($truthy($rb_le(dice_total, 2))) { - - sequence.$push(rateResults.$join(",")); - sequence.$push("自動的失敗"); - return sequence.$join(" > ");}; - if ($truthy(($truthy($a = $rb_gt(rateResults.$size(), 1)) ? $a : modifier['$!='](0)))) { - - text = $rb_plus(rateResults.$join(","), self.$format_modifier(modifier)); - if ($truthy(half)) { - text = "" + "(" + (text) + ")/2"}; - sequence.$push(text); - } else if ($truthy(half)) { - sequence.$push("" + (rateResults.$first()) + "/2")}; - if ($truthy($rb_gt(round, 1))) { - - round_text = "" + ($rb_minus(round, 1)) + "回転"; - sequence.$push(round_text);}; - total = $rb_plus(rating_total, modifier); - if ($truthy(half)) { - total = $rb_divide(total, 2.0).$ceil()}; - total_text = total.$to_s(); - sequence.$push(total_text); - return sequence.$join(" > "); - }, $SwordWorld_getResultText$22.$$arity = 8); - return (Opal.def(self, '$setRatingTable', $SwordWorld_setRatingTable$23 = function $$setRatingTable(tnick) { - var self = this, mode_str = nil, pre_mode = nil, $case = nil; - - - mode_str = ""; - pre_mode = self.rating_table; - if ($truthy(/(\d+)/['$=~'](tnick))) { - - self.rating_table = $$($nesting, 'Regexp').$last_match(1).$to_i(); - if ($truthy($rb_gt(self.rating_table, 1))) { - - mode_str = "2.0-mode"; - self.rating_table = 2; - } else if ($truthy($rb_gt(self.rating_table, 0))) { - - mode_str = "new-mode"; - self.rating_table = 1; - } else { - - mode_str = "old-mode"; - self.rating_table = 0; - }; - } else { - $case = tnick; - if (/old/i['$===']($case)) { - self.rating_table = 0; - mode_str = "old-mode";} - else if (/new/i['$===']($case)) { - self.rating_table = 1; - mode_str = "new-mode";} - else if (/2\.0/i['$===']($case)) { - self.rating_table = 2; - mode_str = "2.0-mode";} - }; - if (self.rating_table['$=='](pre_mode)) { - return "1"}; - return "" + "RatingTableを" + (mode_str) + "に変更しました"; - }, $SwordWorld_setRatingTable$23.$$arity = 1), nil) && 'setRatingTable'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$setPrefixes', '$include', '$format_modifier', '$node_expression', '$<', '$roll_2d6', '$==', '$!', '$>=', '$sum_of_dice', '$last', '$push', '$+', '$compact', '$dice_str', '$result_str', '$length', '$join', '$private', '$reduce', '$flatten', '$to_proc', '$map', '$send', '$new', '$[]', '$roll', '$freeze', '$===', '$=~', '$growth', '$to_i', '$last_match', '$eval', '$execute', '$get_fumble_table', '$get_tangle_table', '$gsub', '$getGratestFortuneFromString', '$[]=', '$-', '$*', '$growth_step', '$get_ability_by_dice', '$!=', '$get_table_by_1d6']); - - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/modifier_formatter"); - self.$require("diceBot/SwordWorld"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SwordWorld2_0'); - - var $nesting = [self].concat($parent_nesting), $SwordWorld2_0_initialize$10, $SwordWorld2_0_rollDiceCommand$11, $SwordWorld2_0_getRateUpFromString$12, $SwordWorld2_0_getAdditionalString$13, $SwordWorld2_0_rollDice$14, $SwordWorld2_0_getGratestFortuneFromString$15, $SwordWorld2_0_growth$16, $SwordWorld2_0_growth_step$18, $SwordWorld2_0_get_ability_by_dice$19, $SwordWorld2_0_get_fumble_table$20, $SwordWorld2_0_get_tangle_table$21; - - - Opal.const_set($nesting[0], 'ID', "SwordWorld2.0"); - Opal.const_set($nesting[0], 'NAME', "ソードワールド2.0"); - Opal.const_set($nesting[0], 'SORT_KEY', "そおとわあると2.0"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "自動的成功、成功、失敗、自動的失敗の自動判定を行います。\n" + "\n" + "・レーティング表 (Kx)\n" + " \"Kキーナンバー+ボーナス\"の形で記入します。\n" + " ボーナスの部分に「K20+K30」のようにレーティングを取ることは出来ません。\n" + " また、ボーナスは複数取ることが出来ます。\n" + " レーティング表もダイスロールと同様に、他のプレイヤーに隠れてロールすることも可能です。\n" + " 例)K20   K10+5   k30   k10+10   Sk10-1   k10+5+2\n" + "\n" + "・クリティカル値の設定\n" + " クリティカル値は\"[クリティカル値]\"で指定します。\n" + " 指定しない場合はクリティカル値10とします。\n" + " クリティカル処理が必要ないときは13などとしてください。(防御時などの対応)\n" + " またタイプの軽減化のために末尾に「@クリティカル値」でも処理するようにしました。\n" + " 例)K20[10]   K10+5[9]   k30[10]   k10[9]+10   k10-5@9\n" + "\n" + "・レーティング表の半減 (HKx)\n" + " レーティング表の先頭または末尾に\"H\"をつけると、レーティング表を振って最終結果を半減させます。\n" + " クリティカル値を指定しない場合、クリティカルなしと扱われます。\n" + " 例)HK20  K20h  HK10-5@9  K10-5@9H  K20gfH\n" + "\n" + "・ダイス目の修正(運命変転やクリティカルレイ用)\n" + " 末尾に「$修正値」でダイス目に修正がかかります。\n" + " $+1と修正表記ならダイス目に+修正、$9のように固定値ならダイス目をその出目に差し替え。\n" + " クリティカルした場合でも固定値や修正値の適用は最初の一回だけです。\n" + " 例)K20$+1   K10+5$9   k10-5@9$+2   k10[9]+10$9\n" + "\n" + "・首切り刀用レーティング上昇 r10\n" + " 例)K20r10 K30+24@8R10 K40+24@8$12r10\n" + "\n" + "・グレイテストフォーチュンは末尾に gf\n" + " 例)K20gf K30+24@8GF K40+24@8$12r10gf\n" + "\n" + "・超越判定用に2d6ロールに 2D6@10 書式でクリティカル値付与が可能に。\n" + " 例)2D6@10 2D6@10+11>=30\n" + "\n" + "・成長 (Gr)\n" + " 末尾に数字を付加することで、複数回の成長をまとめて行えます。\n" + " 例)Gr3\n" + "\n" + "・防御ファンブル表 (FT)\n" + " 防御ファンブル表を出すことができます。\n" + "\n" + "・絡み効果表 (TT)\n" + " 絡み効果表を出すことができます。\n"); - self.$setPrefixes(["H?K\\d+.*", "Gr(\\d+)?", "2D6?@\\d+.*", "FT", "TT"]); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'TranscendentTest'); - - var $nesting = [self].concat($parent_nesting), $TranscendentTest_initialize$1, $TranscendentTest_execute$2, $TranscendentTest_node_expression$3, $TranscendentTest_sum_of_dice$4, $TranscendentTest_dice_str$5, $TranscendentTest_result_str$7, $TranscendentTest_roll_2d6$8; - - self.$$prototype.modifier = self.$$prototype.critical_value = self.$$prototype.expression = self.$$prototype.modifier_str = self.$$prototype.target = self.$$prototype.cmp_op = nil; - - self.$include($$($nesting, 'ModifierFormatter')); - - Opal.def(self, '$initialize', $TranscendentTest_initialize$1 = function $$initialize(critical_value, modifier, cmp_op, target) { - var self = this; - - - self.critical_value = critical_value; - self.modifier = modifier; - self.cmp_op = cmp_op; - self.target = target; - self.modifier_str = self.$format_modifier(self.modifier); - return (self.expression = self.$node_expression()); - }, $TranscendentTest_initialize$1.$$arity = 4); - - Opal.def(self, '$execute', $TranscendentTest_execute$2 = function $$execute(bot) { - var $a, self = this, first_value_group = nil, value_groups = nil, fumble = nil, critical = nil, sum = nil, total_sum = nil, parts = nil; - - - if ($truthy($rb_lt(self.critical_value, 3))) { - return "" + "(" + (self.expression) + ") > クリティカル値が小さすぎます。3以上を指定してください。"}; - first_value_group = self.$roll_2d6(bot); - value_groups = [first_value_group]; - fumble = first_value_group['$==']([1, 1]); - critical = first_value_group['$==']([6, 6]); - if ($truthy(($truthy($a = fumble['$!']()) ? critical['$!']() : $a))) { - while ($truthy($rb_ge(self.$sum_of_dice(value_groups.$last()), self.critical_value))) { - value_groups.$push(self.$roll_2d6(bot)) - }}; - sum = self.$sum_of_dice(value_groups); - total_sum = $rb_plus(sum, self.modifier); - parts = ["" + "(" + (self.expression) + ")", "" + (self.$dice_str(value_groups, sum)) + (self.modifier_str), total_sum, ($truthy($a = self.target) ? self.$result_str(total_sum, value_groups.$length(), fumble, critical) : $a)].$compact(); - return parts.$join(" > "); - }, $TranscendentTest_execute$2.$$arity = 1); - self.$private(); - - Opal.def(self, '$node_expression', $TranscendentTest_node_expression$3 = function $$node_expression() { - var self = this, lhs = nil; - - - lhs = "" + "2D6@" + (self.critical_value) + (self.modifier_str); - return (function() {if ($truthy(self.target)) { - return "" + (lhs) + (self.cmp_op) + (self.target) - } else { - return lhs - }; return nil; })(); - }, $TranscendentTest_node_expression$3.$$arity = 0); - - Opal.def(self, '$sum_of_dice', $TranscendentTest_sum_of_dice$4 = function $$sum_of_dice(value_groups) { - var self = this; - - return $send(value_groups.$flatten(), 'reduce', [0], "+".$to_proc()) - }, $TranscendentTest_sum_of_dice$4.$$arity = 1); - - Opal.def(self, '$dice_str', $TranscendentTest_dice_str$5 = function $$dice_str(value_groups, sum) { - var $$6, self = this, value_groups_str = nil; - - - value_groups_str = $send(value_groups, 'map', [], ($$6 = function(values){var self = $$6.$$s || this; - - - - if (values == null) { - values = nil; - }; - return "" + "[" + (values.$join(",")) + "]";}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$join(); - return "" + (sum) + (value_groups_str); - }, $TranscendentTest_dice_str$5.$$arity = 2); - - Opal.def(self, '$result_str', $TranscendentTest_result_str$7 = function $$result_str(total_sum, n_value_groups, fumble, critical) { - var $a, self = this; - - - if ($truthy(fumble)) { - return "自動的失敗"}; - if ($truthy(critical)) { - return "自動的成功"}; - if ($truthy(total_sum.$send(self.cmp_op, self.target))) { - if ($truthy(($truthy($a = $rb_ge(n_value_groups, 2)) ? $rb_ge(total_sum, 41) : $a))) { - return "超成功" - } else { - return "成功" - } - } else { - return "失敗" - }; - }, $TranscendentTest_result_str$7.$$arity = 4); - return (Opal.def(self, '$roll_2d6', $TranscendentTest_roll_2d6$8 = function $$roll_2d6(bot) { - var $$9, self = this; - - return $send($$($nesting, 'Array'), 'new', [2], ($$9 = function(){var self = $$9.$$s || this; - - return bot.$roll(1, 6)['$[]'](0)}, $$9.$$s = self, $$9.$$arity = 0, $$9)) - }, $TranscendentTest_roll_2d6$8.$$arity = 1), nil) && 'roll_2d6'; - })($nesting[0], null, $nesting); - - Opal.def(self, '$initialize', $SwordWorld2_0_initialize$10 = function $$initialize() { - var $iter = $SwordWorld2_0_initialize$10.$$p, $yield = $iter || nil, self = this, rating_table = nil; - - if ($iter) $SwordWorld2_0_initialize$10.$$p = null; - - rating_table = 2; - $send(self, Opal.find_super_dispatcher(self, 'initialize', $SwordWorld2_0_initialize$10, false), [], null); - return (self.rating_table = rating_table); - }, $SwordWorld2_0_initialize$10.$$arity = 0); - Opal.const_set($nesting[0], 'TRANSCENDENT_TEST_RE', /^2D6?@(\d+)([-+\d]+)?(?:(>=?)(\d+))?/.$freeze()); - - Opal.def(self, '$rollDiceCommand', $SwordWorld2_0_rollDiceCommand$11 = function $$rollDiceCommand(command) { - var $a, $iter = $SwordWorld2_0_rollDiceCommand$11.$$p, $yield = $iter || nil, self = this, $case = nil, m = nil, critical_value = nil, modifier = nil, cmp_op = nil, target = nil, node = nil; - - if ($iter) $SwordWorld2_0_rollDiceCommand$11.$$p = null; - return (function() {$case = command; - if (/^Gr(\d+)?/i['$===']($case)) {if ($truthy(command['$=~'](/^Gr(\d+)/i))) { - return self.$growth($$($nesting, 'Regexp').$last_match(1).$to_i()) - } else { - return self.$growth() - }} - else if ($$($nesting, 'TRANSCENDENT_TEST_RE')['$===']($case)) { - m = $$($nesting, 'Regexp').$last_match(); - critical_value = m['$[]'](1).$to_i(); - modifier = (function() {if ($truthy(m['$[]'](2))) { - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(m['$[]'](2)) - } else { - return 0 - }; return nil; })(); - cmp_op = m['$[]'](3); - target = ($truthy($a = m['$[]'](3)) ? m['$[]'](4).$to_i() : $a); - node = $$($nesting, 'TranscendentTest').$new(critical_value, modifier, cmp_op, target); - return node.$execute(self);} - else if ("FT"['$===']($case)) {return self.$get_fumble_table()} - else if ("TT"['$===']($case)) {return self.$get_tangle_table()} - else {return $send(self, Opal.find_super_dispatcher(self, 'rollDiceCommand', $SwordWorld2_0_rollDiceCommand$11, false), [command], null)}})() - }, $SwordWorld2_0_rollDiceCommand$11.$$arity = 1); - - Opal.def(self, '$getRateUpFromString', $SwordWorld2_0_getRateUpFromString$12 = function $$getRateUpFromString(string) { - var self = this, rateUp = nil, regexp = nil; - - - rateUp = 0; - regexp = /r\[(\d+)\]/i; - if ($truthy(regexp['$==='](string))) { - - rateUp = $$($nesting, 'Regexp').$last_match(1).$to_i(); - string = string.$gsub(regexp, "");}; - return [rateUp, string]; - }, $SwordWorld2_0_getRateUpFromString$12.$$arity = 1); - - Opal.def(self, '$getAdditionalString', $SwordWorld2_0_getAdditionalString$13 = function $$getAdditionalString(string, output) { - var $a, $b, $iter = $SwordWorld2_0_getAdditionalString$13.$$p, $yield = $iter || nil, self = this, values = nil, isGratestFortune = nil, $writer = nil; - - if ($iter) $SwordWorld2_0_getAdditionalString$13.$$p = null; - - $b = $send(self, Opal.find_super_dispatcher(self, 'getAdditionalString', $SwordWorld2_0_getAdditionalString$13, false), [string, output], null), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (values = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$getGratestFortuneFromString(string), $a = Opal.to_ary($b), (isGratestFortune = ($a[0] == null ? nil : $a[0])), (string = ($a[1] == null ? nil : $a[1])), $b; - - $writer = ["isGratestFortune", isGratestFortune]; - $send(values, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy(isGratestFortune)) { - output = $rb_plus(output, "gf")}; - return [output, values]; - }, $SwordWorld2_0_getAdditionalString$13.$$arity = 2); - - Opal.def(self, '$rollDice', $SwordWorld2_0_rollDice$14 = function $$rollDice(values) { - var $a, $b, $iter = $SwordWorld2_0_rollDice$14.$$p, $yield = $iter || nil, self = this, dice = nil, diceText = nil; - - if ($iter) $SwordWorld2_0_rollDice$14.$$p = null; - - if ($truthy(values['$[]']("isGratestFortune"))) { - } else { - return $send(self, Opal.find_super_dispatcher(self, 'rollDice', $SwordWorld2_0_rollDice$14, false), [values], null) - }; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - dice = $rb_times(dice, 2); - diceText = "" + (diceText) + "," + (diceText); - return [dice, diceText]; - }, $SwordWorld2_0_rollDice$14.$$arity = 1); - - Opal.def(self, '$getGratestFortuneFromString', $SwordWorld2_0_getGratestFortuneFromString$15 = function $$getGratestFortuneFromString(string) { - var self = this, isGratestFortune = nil, regexp = nil; - - - isGratestFortune = false; - regexp = /gf/i; - if ($truthy(regexp['$==='](string))) { - - isGratestFortune = true; - string = string.$gsub(regexp, "");}; - return [isGratestFortune, string]; - }, $SwordWorld2_0_getGratestFortuneFromString$15.$$arity = 1); - - Opal.def(self, '$growth', $SwordWorld2_0_growth$16 = function $$growth(count) { - var $$17, self = this; - - - - if (count == null) { - count = 1; - }; - return $send(Opal.Range.$new(1, count, false), 'map', [], ($$17 = function(){var self = $$17.$$s || this; - - return self.$growth_step()}, $$17.$$s = self, $$17.$$arity = 0, $$17)).$join(" | "); - }, $SwordWorld2_0_growth$16.$$arity = -1); - - Opal.def(self, '$growth_step', $SwordWorld2_0_growth_step$18 = function $$growth_step() { - var $a, $b, self = this, d1 = nil, d2 = nil, a1 = nil, a2 = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d2 = ($a[0] == null ? nil : $a[0])), $b; - a1 = self.$get_ability_by_dice(d1); - a2 = self.$get_ability_by_dice(d2); - return (function() {if ($truthy(a1['$!='](a2))) { - return "" + "[" + (d1) + "," + (d2) + "]->(" + (a1) + " or " + (a2) + ")" - } else { - return "" + "[" + (d1) + "," + (d2) + "]->(" + (a1) + ")" - }; return nil; })(); - }, $SwordWorld2_0_growth_step$18.$$arity = 0); - - Opal.def(self, '$get_ability_by_dice', $SwordWorld2_0_get_ability_by_dice$19 = function $$get_ability_by_dice(dice) { - var self = this; - - return ["器用度", "敏捷度", "筋力", "生命力", "知力", "精神力"]['$[]']($rb_minus(dice, 1)) - }, $SwordWorld2_0_get_ability_by_dice$19.$$arity = 1); - - Opal.def(self, '$get_fumble_table', $SwordWorld2_0_get_fumble_table$20 = function $$get_fumble_table() { - var $a, $b, self = this, table = nil, text = nil, num = nil; - - - table = ["この表を2回振り、その両方を適用する。(同じ出目による影響は累積しない)。この自動失敗により得られる経験点は、+50点される", "ダメージに、攻撃者を強化している「剣のかけら」の数が追加される", "ダメージに、攻撃者の「レベル」が追加される", "ダメージ決定を2回行い、より高い方を採用する", "合算ダメージを2倍する", "防護点無効"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (num = ($a[1] == null ? nil : $a[1])), $b; - return "" + "防御ファンブル表(" + (num) + ") → " + (text); - }, $SwordWorld2_0_get_fumble_table$20.$$arity = 0); - return (Opal.def(self, '$get_tangle_table', $SwordWorld2_0_get_tangle_table$21 = function $$get_tangle_table() { - var $a, $b, self = this, table = nil, text = nil, num = nil; - - - table = ["頭や顔:牙や噛みつきなどにおける命中力判定及び、魔法の行使やブレスに-2のペナルティ修正を受ける", "武器や盾:武器の使用不可、又は盾の回避力修正及び防護点を無効化する", "腕や手:武器や爪などにおける命中力判定に-2のペナルティ修正、盾を持つ腕方の腕ならその盾の回避力修正及び防護点を無効化する", "脚や足:移動不可、更に回避力判定に-2のペナルティ修正を受ける ※両足に絡んでも累積しない", "胴体:生命・精神抵抗力を基準値に用いる判定を除き、あらゆる行為判定に-1のペナルティ修正を受ける", "特殊:尻尾や翼などに命中。絡められた部位を使用する判定において-2のペナルティ修正、またはそこが使えていたことによるボーナス修正を失う ※存在しない場合は決め直し"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (num = ($a[1] == null ? nil : $a[1])), $b; - return "" + "絡み効果表(" + (num) + ") → " + (text); - }, $SwordWorld2_0_get_tangle_table$21.$$arity = 0), nil) && 'get_tangle_table'; - })($nesting[0], $$($nesting, 'SwordWorld'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/SwordWorld2_5.js b/src/assets/dicebot/SwordWorld2_5.js deleted file mode 100644 index b14b3269c..000000000 --- a/src/assets/dicebot/SwordWorld2_5.js +++ /dev/null @@ -1,1002 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/ArithmeticEvaluator"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$tokenize', '$expr', '$private', '$split', '$gsub', '$mul', '$loop', '$consume', '$+', '$-', '$unary', '$*', '$div', '$zero?', '$===', '$ceil', '$/', '$to_f', '$round', '$floor', '$-@', '$term', '$expect', '$expect_number', '$!=', '$[]', '$integer?', '$to_i', '$!', '$nil?', '$match']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ArithmeticEvaluator'); - - var $nesting = [self].concat($parent_nesting), $ArithmeticEvaluator_eval$1, $ArithmeticEvaluator_tokenize$2, $ArithmeticEvaluator_add$4, $ArithmeticEvaluator_mul$6, $ArithmeticEvaluator_div$8, $ArithmeticEvaluator_unary$9, $ArithmeticEvaluator_term$10, $ArithmeticEvaluator_consume$11, $ArithmeticEvaluator_expect$12, $ArithmeticEvaluator_expect_number$13, $ArithmeticEvaluator_integer$ques$14; - - self.$$prototype.error = self.$$prototype.round_type = self.$$prototype.tokens = self.$$prototype.idx = nil; - - - Opal.def(self, '$eval', $ArithmeticEvaluator_eval$1 = function(expr, round_type) { - var self = this, ret = nil; - - - - if (round_type == null) { - round_type = "omit"; - }; - self.tokens = self.$tokenize(expr); - self.idx = 0; - self.error = false; - self.round_type = round_type; - ret = self.$expr(); - if ($truthy(self.error)) { - return 0 - } else { - return ret - }; - }, $ArithmeticEvaluator_eval$1.$$arity = -2); - self.$private(); - - Opal.def(self, '$tokenize', $ArithmeticEvaluator_tokenize$2 = function $$tokenize(expr) { - var $$3, self = this; - - return $send(expr, 'gsub', [/[\(\)\+\-\*\/]/], ($$3 = function(e){var self = $$3.$$s || this; - - - - if (e == null) { - e = nil; - }; - return "" + " " + (e) + " ";}, $$3.$$s = self, $$3.$$arity = 1, $$3)).$split(" ") - }, $ArithmeticEvaluator_tokenize$2.$$arity = 1); - - Opal.def(self, '$add', $ArithmeticEvaluator_add$4 = function $$add() { - var $$5, self = this, ret = nil; - - - ret = self.$mul(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$5 = function(){var self = $$5.$$s || this; - - if ($truthy(self.$consume("+"))) { - return (ret = $rb_plus(ret, self.$mul())) - } else if ($truthy(self.$consume("-"))) { - return (ret = $rb_minus(ret, self.$mul())) - } else { - - Opal.brk(nil, $brk) - }}, $$5.$$s = self, $$5.$$brk = $brk, $$5.$$arity = 0, $$5)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_add$4.$$arity = 0); - Opal.alias(self, "expr", "add"); - - Opal.def(self, '$mul', $ArithmeticEvaluator_mul$6 = function $$mul() { - var $$7, self = this, ret = nil; - - - ret = self.$unary(); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$7 = function(){var self = $$7.$$s || this; - - if ($truthy(self.$consume("*"))) { - return (ret = $rb_times(ret, self.$unary())) - } else if ($truthy(self.$consume("/"))) { - return (ret = self.$div(ret, self.$unary())) - } else { - - Opal.brk(nil, $brk) - }}, $$7.$$s = self, $$7.$$brk = $brk, $$7.$$arity = 0, $$7)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return ret; - }, $ArithmeticEvaluator_mul$6.$$arity = 0); - - Opal.def(self, '$div', $ArithmeticEvaluator_div$8 = function $$div(left, right) { - var self = this, $case = nil; - - - if ($truthy(right['$zero?']())) { - - self.error = true; - return 0;}; - return (function() {$case = self.round_type; - if ("roundUp"['$===']($case)) {return $rb_divide(left.$to_f(), right).$ceil()} - else if ("roundOff"['$===']($case)) {return $rb_divide(left.$to_f(), right).$round()} - else {return $rb_divide(left, right).$floor()}})(); - }, $ArithmeticEvaluator_div$8.$$arity = 2); - - Opal.def(self, '$unary', $ArithmeticEvaluator_unary$9 = function $$unary() { - var self = this; - - if ($truthy(self.$consume("+"))) { - return self.$unary() - } else if ($truthy(self.$consume("-"))) { - return self.$unary()['$-@']() - } else { - return self.$term() - } - }, $ArithmeticEvaluator_unary$9.$$arity = 0); - - Opal.def(self, '$term', $ArithmeticEvaluator_term$10 = function $$term() { - var self = this, ret = nil; - - if ($truthy(self.$consume("("))) { - - ret = self.$expr(); - self.$expect(")"); - return ret; - } else { - return self.$expect_number() - } - }, $ArithmeticEvaluator_term$10.$$arity = 0); - - Opal.def(self, '$consume', $ArithmeticEvaluator_consume$11 = function $$consume(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - return false}; - self.idx = $rb_plus(self.idx, 1); - return true; - }, $ArithmeticEvaluator_consume$11.$$arity = 1); - - Opal.def(self, '$expect', $ArithmeticEvaluator_expect$12 = function $$expect(str) { - var self = this; - - - if ($truthy(self.tokens['$[]'](self.idx)['$!='](str))) { - self.error = true}; - return (self.idx = $rb_plus(self.idx, 1)); - }, $ArithmeticEvaluator_expect$12.$$arity = 1); - - Opal.def(self, '$expect_number', $ArithmeticEvaluator_expect_number$13 = function $$expect_number() { - var self = this, ret = nil; - - - if ($truthy(self['$integer?'](self.tokens['$[]'](self.idx)))) { - } else { - - self.error = true; - self.idx = $rb_plus(self.idx, 1); - return 0; - }; - ret = self.tokens['$[]'](self.idx).$to_i(); - self.idx = $rb_plus(self.idx, 1); - return ret; - }, $ArithmeticEvaluator_expect_number$13.$$arity = 0); - return (Opal.def(self, '$integer?', $ArithmeticEvaluator_integer$ques$14 = function(str) { - var self = this; - - return /^\d+$/.$match(str)['$nil?']()['$!']() - }, $ArithmeticEvaluator_integer$ques$14.$$arity = 1), nil) && 'integer?'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/modifier_formatter"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$>', '$to_s']); - return (function($base, $parent_nesting) { - var self = $module($base, 'ModifierFormatter'); - - var $nesting = [self].concat($parent_nesting), $ModifierFormatter_format_modifier$1; - - - Opal.def(self, '$format_modifier', $ModifierFormatter_format_modifier$1 = function $$format_modifier(modifier) { - var self = this; - - if (modifier['$=='](0)) { - return "" - } else if ($truthy($rb_gt(modifier, 0))) { - return "" + "+" + (modifier) - } else { - return modifier.$to_s() - } - }, $ModifierFormatter_format_modifier$1.$$arity = 1) - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/SwordWorld"] = function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$include', '$setPrefixes', '$freeze', '$match', '$gsub', '$last_match', '$>=', '$<=', '$!=', '$==', '$rating', '$private', '$debug', '$getRatingCommandStrings', '$[]', '$include?', '$getRateUpFromString', '$getCriticalFromString', '$getDiceChangesFromString', '$getKeyAndAddValueFromString', '$=~', '$to_i', '$getSW2_0_RatingTable', '$-', '$length', '$>', '$getNewRates', '$<', '$+', '$getAdditionalString', '$to_s', '$loop', '$rollDice', '$<<', '$getAdditionalDiceValue', '$min', '$*', '$getResultText', '$parren_killer', '$each', '$split', '$push', '$[]=', '$roll', '$join', '$size', '$format_modifier', '$first', '$ceil', '$/', '$===']); - - self.$require("utils/modifier_formatter"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SwordWorld'); - - var $nesting = [self].concat($parent_nesting), $SwordWorld_initialize$1, $SwordWorld_changeText$2, $SwordWorld_getRatingCommandStrings$7, $SwordWorld_check_2D6$8, $SwordWorld_rollDiceCommand$9, $SwordWorld_rating$10, $SwordWorld_getAdditionalString$12, $SwordWorld_getAdditionalDiceValue$13, $SwordWorld_getCriticalFromString$14, $SwordWorld_getDiceChangesFromString$15, $SwordWorld_getRateUpFromString$16, $SwordWorld_getKeyAndAddValueFromString$17, $SwordWorld_getSW2_0_RatingTable$18, $SwordWorld_getNewRates$19, $SwordWorld_rollDice$21, $SwordWorld_getResultText$22, $SwordWorld_setRatingTable$23; - - self.$$prototype.rating_table = nil; - - self.$include($$($nesting, 'ModifierFormatter')); - Opal.const_set($nesting[0], 'ID', "SwordWorld"); - Opal.const_set($nesting[0], 'NAME', "ソードワールドRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "そおとわあると"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "・SW レーティング表 (Kx[c]+m$f) (x:キー, c:クリティカル値, m:ボーナス, f:出目修正)\n"); - self.$setPrefixes(["H?K\\d+.*"]); - - Opal.def(self, '$initialize', $SwordWorld_initialize$1 = function $$initialize() { - var $iter = $SwordWorld_initialize$1.$$p, $yield = $iter || nil, self = this, rating_table = nil; - - if ($iter) $SwordWorld_initialize$1.$$p = null; - - rating_table = 0; - $send(self, Opal.find_super_dispatcher(self, 'initialize', $SwordWorld_initialize$1, false), [], null); - return (self.rating_table = rating_table); - }, $SwordWorld_initialize$1.$$arity = 0); - Opal.const_set($nesting[0], 'RATING_TABLE_RE_FOR_CHANGE_TEXT', /^S?H?K\d+/i.$freeze()); - - Opal.def(self, '$changeText', $SwordWorld_changeText$2 = function $$changeText(string) { - var $$3, $$4, $$5, $$6, self = this; - - - if ($truthy($$($nesting, 'RATING_TABLE_RE_FOR_CHANGE_TEXT').$match(string))) { - } else { - return string - }; - return $send($send($send($send(string, 'gsub', [/\[(\d+)\]/], ($$3 = function(){var self = $$3.$$s || this; - - return "" + "c[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$3.$$s = self, $$3.$$arity = 0, $$3)), 'gsub', [/@(\d+)/], ($$4 = function(){var self = $$4.$$s || this; - - return "" + "c[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$4.$$s = self, $$4.$$arity = 0, $$4)), 'gsub', [/\$([-+]?\d+)/], ($$5 = function(){var self = $$5.$$s || this; - - return "" + "m[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$5.$$s = self, $$5.$$arity = 0, $$5)), 'gsub', [/r([-+]?\d+)/i], ($$6 = function(){var self = $$6.$$s || this; - - return "" + "r[" + ($$($nesting, 'Regexp').$last_match(1)) + "]"}, $$6.$$s = self, $$6.$$arity = 0, $$6)); - }, $SwordWorld_changeText$2.$$arity = 1); - - Opal.def(self, '$getRatingCommandStrings', $SwordWorld_getRatingCommandStrings$7 = function $$getRatingCommandStrings() { - var self = this; - - return "cmCM" - }, $SwordWorld_getRatingCommandStrings$7.$$arity = 0); - - Opal.def(self, '$check_2D6', $SwordWorld_check_2D6$8 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var $a, self = this; - - if ($truthy($rb_ge(dice_total, 12))) { - return " > 自動的成功" - } else if ($truthy($rb_le(dice_total, 2))) { - return " > 自動的失敗" - } else if ($truthy(($truthy($a = cmp_op['$!='](">=")) ? $a : target['$==']("?")))) { - return "" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - } - }, $SwordWorld_check_2D6$8.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $SwordWorld_rollDiceCommand$9 = function $$rollDiceCommand(command) { - var self = this; - - return self.$rating(command) - }, $SwordWorld_rollDiceCommand$9.$$arity = 1); - self.$private(); - - Opal.def(self, '$rating', $SwordWorld_rating$10 = function $$rating(string) { - var $a, $b, $$11, self = this, commands = nil, m = nil, half = nil, rateUp = nil, crit = nil, firstDiceChanteTo = nil, firstDiceChangeModify = nil, key = nil, addValue = nil, rate_sw2_0 = nil, keyMax = nil, newRates = nil, output = nil, values = nil, diceResultTotals = nil, diceResults = nil, rateResults = nil, dice = nil, diceOnlyTotal = nil, totalValue = nil, round = nil; - - - self.$debug("rating string", string); - commands = self.$getRatingCommandStrings(); - m = new RegExp("" + "^S?(H?K[\\d\\+\\-]+([" + (commands) + "]\\[([\\d\\+\\-]+)\\])*([\\d\\+\\-]*)([CMR]\\[([\\d\\+\\-]+)\\]|GF|H)*)", 'i').$match(string); - if ($truthy(m)) { - } else { - - self.$debug("not matched"); - return "1"; - }; - string = m['$[]'](1); - half = string['$include?']("H"); - $b = self.$getRateUpFromString(string), $a = Opal.to_ary($b), (rateUp = ($a[0] == null ? nil : $a[0])), (string = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$getCriticalFromString(string, half), $a = Opal.to_ary($b), (crit = ($a[0] == null ? nil : $a[0])), (string = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$getDiceChangesFromString(string), $a = Opal.to_ary($b), (firstDiceChanteTo = ($a[0] == null ? nil : $a[0])), (firstDiceChangeModify = ($a[1] == null ? nil : $a[1])), (string = ($a[2] == null ? nil : $a[2])), $b; - $b = self.$getKeyAndAddValueFromString(string), $a = Opal.to_ary($b), (key = ($a[0] == null ? nil : $a[0])), (addValue = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(key['$=~'](/([\d]+)/))) { - } else { - return "1" - }; - key = $$($nesting, 'Regexp').$last_match(1).$to_i(); - rate_sw2_0 = self.$getSW2_0_RatingTable(); - keyMax = $rb_minus(rate_sw2_0.$length(), 1); - self.$debug("keyMax", keyMax); - if ($truthy($rb_gt(key, keyMax))) { - return "" + "キーナンバーは" + (keyMax) + "までです"}; - newRates = self.$getNewRates(rate_sw2_0); - output = "" + "KeyNo." + (key); - if ($truthy($rb_lt(crit, 13))) { - output = $rb_plus(output, "" + "c[" + (crit) + "]")}; - if ($truthy(firstDiceChangeModify['$!='](0))) { - output = $rb_plus(output, "" + "m[" + (firstDiceChangeModify) + "]")}; - if ($truthy(firstDiceChanteTo['$!='](0))) { - output = $rb_plus(output, "" + "m[" + (firstDiceChanteTo) + "]")}; - if ($truthy(rateUp['$!='](0))) { - output = $rb_plus(output, "" + "r[" + (rateUp) + "]")}; - $b = self.$getAdditionalString(string, output), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (values = ($a[1] == null ? nil : $a[1])), $b; - self.$debug("output", output); - if ($truthy(addValue['$!='](0))) { - - if ($truthy($rb_gt(addValue, 0))) { - output = $rb_plus(output, "" + "+" + (addValue))}; - if ($truthy($rb_lt(addValue, 0))) { - output = $rb_plus(output, addValue.$to_s())};}; - output = $rb_plus(output, " > "); - diceResultTotals = []; - diceResults = []; - rateResults = []; - dice = 0; - diceOnlyTotal = 0; - totalValue = 0; - round = 0; - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$11 = function(){var self = $$11.$$s || this, $c, $d, dice_raw = nil, diceText = nil, currentKey = nil, rateValue = nil; - - - $d = self.$rollDice(values), $c = Opal.to_ary($d), (dice_raw = ($c[0] == null ? nil : $c[0])), (diceText = ($c[1] == null ? nil : $c[1])), $d; - dice = dice_raw; - if ($truthy(firstDiceChanteTo['$!='](0))) { - - dice = (dice_raw = firstDiceChanteTo); - firstDiceChanteTo = 0; - } else if ($truthy(firstDiceChangeModify['$!='](0))) { - - dice = $rb_plus(dice, firstDiceChangeModify.$to_i()); - firstDiceChangeModify = 0;}; - if ($truthy($rb_le(dice_raw, 2))) { - - diceResultTotals['$<<'](dice_raw.$to_s()); - diceResults['$<<'](diceText.$to_s()); - rateResults['$<<']("**"); - round = $rb_plus(round, 1); - - Opal.brk(nil, $brk);}; - dice = $rb_plus(dice, self.$getAdditionalDiceValue(dice, values)); - if ($truthy($rb_lt(dice, 2))) { - dice = 2}; - if ($truthy($rb_gt(dice, 12))) { - dice = 12}; - currentKey = [$rb_plus(key, $rb_times(round, rateUp)), keyMax].$min(); - self.$debug("currentKey", currentKey); - rateValue = newRates['$[]'](dice)['$[]'](currentKey); - self.$debug("rateValue", rateValue); - totalValue = $rb_plus(totalValue, rateValue); - diceOnlyTotal = $rb_plus(diceOnlyTotal, dice); - diceResultTotals['$<<'](dice.$to_s()); - diceResults['$<<'](diceText.$to_s()); - rateResults['$<<']((function() {if ($truthy($rb_gt(dice, 2))) { - return rateValue - } else { - return "**" - }; return nil; })()); - round = $rb_plus(round, 1); - if ($truthy($rb_ge(dice, crit))) { - return nil - } else { - - Opal.brk(nil, $brk) - };}, $$11.$$s = self, $$11.$$brk = $brk, $$11.$$arity = 0, $$11)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - output = $rb_plus(output, self.$getResultText(totalValue, addValue, diceResults, diceResultTotals, rateResults, diceOnlyTotal, round, half)); - return output; - }, $SwordWorld_rating$10.$$arity = 1); - - Opal.def(self, '$getAdditionalString', $SwordWorld_getAdditionalString$12 = function $$getAdditionalString(_string, output) { - var self = this, values = nil; - - - values = $hash2([], {}); - return [output, values]; - }, $SwordWorld_getAdditionalString$12.$$arity = 2); - - Opal.def(self, '$getAdditionalDiceValue', $SwordWorld_getAdditionalDiceValue$13 = function $$getAdditionalDiceValue(_dice, _values) { - var self = this; - - return 0 - }, $SwordWorld_getAdditionalDiceValue$13.$$arity = 2); - - Opal.def(self, '$getCriticalFromString', $SwordWorld_getCriticalFromString$14 = function $$getCriticalFromString(string, half) { - var self = this, crit = nil, regexp = nil; - - - crit = (function() {if ($truthy(half)) { - return 13 - } else { - return 10 - }; return nil; })(); - regexp = /c\[(\d+)\]/i; - if ($truthy(regexp['$=~'](string))) { - - crit = $$($nesting, 'Regexp').$last_match(1).$to_i(); - if ($truthy($rb_lt(crit, 3))) { - crit = 3}; - string = string.$gsub(regexp, "");}; - return [crit, string]; - }, $SwordWorld_getCriticalFromString$14.$$arity = 2); - - Opal.def(self, '$getDiceChangesFromString', $SwordWorld_getDiceChangesFromString$15 = function $$getDiceChangesFromString(string) { - var self = this, firstDiceChanteTo = nil, firstDiceChangeModify = nil, regexp = nil; - - - firstDiceChanteTo = 0; - firstDiceChangeModify = 0; - regexp = /m\[([\d\+\-]+)\]/i; - if ($truthy(regexp['$=~'](string))) { - - firstDiceChangeModify = $$($nesting, 'Regexp').$last_match(1); - if ($truthy(/[\+\-]/['$=~'](firstDiceChangeModify))) { - } else { - - firstDiceChanteTo = firstDiceChangeModify.$to_i(); - firstDiceChangeModify = 0; - }; - string = string.$gsub(regexp, "");}; - return [firstDiceChanteTo, firstDiceChangeModify, string]; - }, $SwordWorld_getDiceChangesFromString$15.$$arity = 1); - - Opal.def(self, '$getRateUpFromString', $SwordWorld_getRateUpFromString$16 = function $$getRateUpFromString(string) { - var self = this, rateUp = nil; - - - rateUp = 0; - return [rateUp, string]; - }, $SwordWorld_getRateUpFromString$16.$$arity = 1); - - Opal.def(self, '$getKeyAndAddValueFromString', $SwordWorld_getKeyAndAddValueFromString$17 = function $$getKeyAndAddValueFromString(string) { - var self = this, key = nil, addValue = nil; - - - key = nil; - addValue = 0; - if ($truthy(/K(\d+)([\d\+\-]*)/i['$=~'](string))) { - - key = $$($nesting, 'Regexp').$last_match(1); - if ($truthy($$($nesting, 'Regexp').$last_match(2))) { - addValue = self.$parren_killer($rb_plus($rb_plus("(", $$($nesting, 'Regexp').$last_match(2)), ")")).$to_i()}; - } else { - key = string - }; - return [key, addValue]; - }, $SwordWorld_getKeyAndAddValueFromString$17.$$arity = 1); - - Opal.def(self, '$getSW2_0_RatingTable', $SwordWorld_getSW2_0_RatingTable$18 = function $$getSW2_0_RatingTable() { - var self = this, rate_sw2_0 = nil; - - - rate_sw2_0 = ["*,0,0,0,1,2,2,3,3,4,4", "*,0,0,0,1,2,3,3,3,4,4", "*,0,0,0,1,2,3,4,4,4,4", "*,0,0,1,1,2,3,4,4,4,5", "*,0,0,1,2,2,3,4,4,5,5", "*,0,1,1,2,2,3,4,5,5,5", "*,0,1,1,2,3,3,4,5,5,5", "*,0,1,1,2,3,4,4,5,5,6", "*,0,1,2,2,3,4,4,5,6,6", "*,0,1,2,3,3,4,4,5,6,7", "*,1,1,2,3,3,4,5,5,6,7", "*,1,2,2,3,3,4,5,6,6,7", "*,1,2,2,3,4,4,5,6,6,7", "*,1,2,3,3,4,4,5,6,7,7", "*,1,2,3,4,4,4,5,6,7,8", "*,1,2,3,4,4,5,5,6,7,8", "*,1,2,3,4,4,5,6,7,7,8", "*,1,2,3,4,5,5,6,7,7,8", "*,1,2,3,4,5,6,6,7,7,8", "*,1,2,3,4,5,6,7,7,8,9", "*,1,2,3,4,5,6,7,8,9,10", "*,1,2,3,4,6,6,7,8,9,10", "*,1,2,3,5,6,6,7,8,9,10", "*,2,2,3,5,6,7,7,8,9,10", "*,2,3,4,5,6,7,7,8,9,10", "*,2,3,4,5,6,7,8,8,9,10", "*,2,3,4,5,6,8,8,9,9,10", "*,2,3,4,6,6,8,8,9,9,10", "*,2,3,4,6,6,8,9,9,10,10", "*,2,3,4,6,7,8,9,9,10,10", "*,2,4,4,6,7,8,9,10,10,10", "*,2,4,5,6,7,8,9,10,10,11", "*,3,4,5,6,7,8,10,10,10,11", "*,3,4,5,6,8,8,10,10,10,11", "*,3,4,5,6,8,9,10,10,11,11", "*,3,4,5,7,8,9,10,10,11,12", "*,3,5,5,7,8,9,10,11,11,12", "*,3,5,6,7,8,9,10,11,12,12", "*,3,5,6,7,8,10,10,11,12,13", "*,4,5,6,7,8,10,11,11,12,13", "*,4,5,6,7,9,10,11,11,12,13", "*,4,6,6,7,9,10,11,12,12,13", "*,4,6,7,7,9,10,11,12,13,13", "*,4,6,7,8,9,10,11,12,13,14", "*,4,6,7,8,10,10,11,12,13,14", "*,4,6,7,9,10,10,11,12,13,14", "*,4,6,7,9,10,10,12,13,13,14", "*,4,6,7,9,10,11,12,13,13,15", "*,4,6,7,9,10,12,12,13,13,15", "*,4,6,7,10,10,12,12,13,14,15", "*,4,6,8,10,10,12,12,13,15,15", "*,5,7,8,10,10,12,12,13,15,15", "*,5,7,8,10,11,12,12,13,15,15", "*,5,7,9,10,11,12,12,14,15,15", "*,5,7,9,10,11,12,13,14,15,16", "*,5,7,10,10,11,12,13,14,16,16", "*,5,8,10,10,11,12,13,15,16,16", "*,5,8,10,11,11,12,13,15,16,17", "*,5,8,10,11,12,12,13,15,16,17", "*,5,9,10,11,12,12,14,15,16,17", "*,5,9,10,11,12,13,14,15,16,18", "*,5,9,10,11,12,13,14,16,17,18", "*,5,9,10,11,13,13,14,16,17,18", "*,5,9,10,11,13,13,15,17,17,18", "*,5,9,10,11,13,14,15,17,17,18", "*,5,9,10,12,13,14,15,17,18,18", "*,5,9,10,12,13,15,15,17,18,19", "*,5,9,10,12,13,15,16,17,19,19", "*,5,9,10,12,14,15,16,17,19,19", "*,5,9,10,12,14,16,16,17,19,19", "*,5,9,10,12,14,16,17,18,19,19", "*,5,9,10,13,14,16,17,18,19,20", "*,5,9,10,13,15,16,17,18,19,20", "*,5,9,10,13,15,16,17,19,20,21", "*,6,9,10,13,15,16,18,19,20,21", "*,6,9,10,13,16,16,18,19,20,21", "*,6,9,10,13,16,17,18,19,20,21", "*,6,9,10,13,16,17,18,20,21,22", "*,6,9,10,13,16,17,19,20,22,23", "*,6,9,10,13,16,18,19,20,22,23", "*,6,9,10,13,16,18,20,21,22,23", "*,6,9,10,13,17,18,20,21,22,23", "*,6,9,10,14,17,18,20,21,22,24", "*,6,9,11,14,17,18,20,21,23,24", "*,6,9,11,14,17,19,20,21,23,24", "*,6,9,11,14,17,19,21,22,23,24", "*,7,10,11,14,17,19,21,22,23,25", "*,7,10,12,14,17,19,21,22,24,25", "*,7,10,12,14,18,19,21,22,24,25", "*,7,10,12,15,18,19,21,22,24,26", "*,7,10,12,15,18,19,21,23,25,26", "*,7,11,13,15,18,19,21,23,25,26", "*,7,11,13,15,18,20,21,23,25,27", "*,8,11,13,15,18,20,22,23,25,27", "*,8,11,13,16,18,20,22,23,25,28", "*,8,11,14,16,18,20,22,23,26,28", "*,8,11,14,16,19,20,22,23,26,28", "*,8,12,14,16,19,20,22,24,26,28", "*,8,12,15,16,19,20,22,24,27,28", "*,8,12,15,17,19,20,22,24,27,29", "*,8,12,15,18,19,20,22,24,27,30"]; - return rate_sw2_0; - }, $SwordWorld_getSW2_0_RatingTable$18.$$arity = 0); - - Opal.def(self, '$getNewRates', $SwordWorld_getNewRates$19 = function $$getNewRates(rate_sw2_0) { - var $$20, self = this, rate_3 = nil, rate_4 = nil, rate_5 = nil, rate_6 = nil, rate_7 = nil, rate_8 = nil, rate_9 = nil, rate_10 = nil, rate_11 = nil, rate_12 = nil, zeroArray = nil, $writer = nil, newRates = nil; - - - rate_3 = []; - rate_4 = []; - rate_5 = []; - rate_6 = []; - rate_7 = []; - rate_8 = []; - rate_9 = []; - rate_10 = []; - rate_11 = []; - rate_12 = []; - zeroArray = []; - $send(rate_sw2_0, 'each', [], ($$20 = function(rateText){var self = $$20.$$s || this, rate_arr = nil; - - - - if (rateText == null) { - rateText = nil; - }; - rate_arr = rateText.$split(/,/); - zeroArray.$push(0); - rate_3.$push(rate_arr['$[]'](1).$to_i()); - rate_4.$push(rate_arr['$[]'](2).$to_i()); - rate_5.$push(rate_arr['$[]'](3).$to_i()); - rate_6.$push(rate_arr['$[]'](4).$to_i()); - rate_7.$push(rate_arr['$[]'](5).$to_i()); - rate_8.$push(rate_arr['$[]'](6).$to_i()); - rate_9.$push(rate_arr['$[]'](7).$to_i()); - rate_10.$push(rate_arr['$[]'](8).$to_i()); - rate_11.$push(rate_arr['$[]'](9).$to_i()); - return rate_12.$push(rate_arr['$[]'](10).$to_i());}, $$20.$$s = self, $$20.$$arity = 1, $$20)); - if (self.rating_table['$=='](1)) { - - $writer = [31, (($writer = [32, (($writer = [33, 10]), $send(rate_12, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])]), $send(rate_12, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer["length"], 1)])]; - $send(rate_12, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];}; - newRates = [zeroArray, zeroArray, zeroArray, rate_3, rate_4, rate_5, rate_6, rate_7, rate_8, rate_9, rate_10, rate_11, rate_12]; - return newRates; - }, $SwordWorld_getNewRates$19.$$arity = 1); - - Opal.def(self, '$rollDice', $SwordWorld_rollDice$21 = function $$rollDice(_values) { - var $a, $b, self = this, dice = nil, diceText = nil; - - - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - return [dice, diceText]; - }, $SwordWorld_rollDice$21.$$arity = 1); - - Opal.def(self, '$getResultText', $SwordWorld_getResultText$22 = function $$getResultText(rating_total, modifier, diceResults, diceResultTotals, rateResults, dice_total, round, half) { - var $a, self = this, sequence = nil, text = nil, round_text = nil, total = nil, total_text = nil; - - - sequence = []; - sequence.$push("" + "2D:[" + (diceResults.$join(" ")) + "]=" + (diceResultTotals.$join(","))); - if ($truthy($rb_le(dice_total, 2))) { - - sequence.$push(rateResults.$join(",")); - sequence.$push("自動的失敗"); - return sequence.$join(" > ");}; - if ($truthy(($truthy($a = $rb_gt(rateResults.$size(), 1)) ? $a : modifier['$!='](0)))) { - - text = $rb_plus(rateResults.$join(","), self.$format_modifier(modifier)); - if ($truthy(half)) { - text = "" + "(" + (text) + ")/2"}; - sequence.$push(text); - } else if ($truthy(half)) { - sequence.$push("" + (rateResults.$first()) + "/2")}; - if ($truthy($rb_gt(round, 1))) { - - round_text = "" + ($rb_minus(round, 1)) + "回転"; - sequence.$push(round_text);}; - total = $rb_plus(rating_total, modifier); - if ($truthy(half)) { - total = $rb_divide(total, 2.0).$ceil()}; - total_text = total.$to_s(); - sequence.$push(total_text); - return sequence.$join(" > "); - }, $SwordWorld_getResultText$22.$$arity = 8); - return (Opal.def(self, '$setRatingTable', $SwordWorld_setRatingTable$23 = function $$setRatingTable(tnick) { - var self = this, mode_str = nil, pre_mode = nil, $case = nil; - - - mode_str = ""; - pre_mode = self.rating_table; - if ($truthy(/(\d+)/['$=~'](tnick))) { - - self.rating_table = $$($nesting, 'Regexp').$last_match(1).$to_i(); - if ($truthy($rb_gt(self.rating_table, 1))) { - - mode_str = "2.0-mode"; - self.rating_table = 2; - } else if ($truthy($rb_gt(self.rating_table, 0))) { - - mode_str = "new-mode"; - self.rating_table = 1; - } else { - - mode_str = "old-mode"; - self.rating_table = 0; - }; - } else { - $case = tnick; - if (/old/i['$===']($case)) { - self.rating_table = 0; - mode_str = "old-mode";} - else if (/new/i['$===']($case)) { - self.rating_table = 1; - mode_str = "new-mode";} - else if (/2\.0/i['$===']($case)) { - self.rating_table = 2; - mode_str = "2.0-mode";} - }; - if (self.rating_table['$=='](pre_mode)) { - return "1"}; - return "" + "RatingTableを" + (mode_str) + "に変更しました"; - }, $SwordWorld_setRatingTable$23.$$arity = 1), nil) && 'setRatingTable'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/SwordWorld2_0"] = function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$setPrefixes', '$include', '$format_modifier', '$node_expression', '$<', '$roll_2d6', '$==', '$!', '$>=', '$sum_of_dice', '$last', '$push', '$+', '$compact', '$dice_str', '$result_str', '$length', '$join', '$private', '$reduce', '$flatten', '$to_proc', '$map', '$send', '$new', '$[]', '$roll', '$freeze', '$===', '$=~', '$growth', '$to_i', '$last_match', '$eval', '$execute', '$get_fumble_table', '$get_tangle_table', '$gsub', '$getGratestFortuneFromString', '$[]=', '$-', '$*', '$growth_step', '$get_ability_by_dice', '$!=', '$get_table_by_1d6']); - - self.$require("utils/ArithmeticEvaluator"); - self.$require("utils/modifier_formatter"); - self.$require("diceBot/SwordWorld"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SwordWorld2_0'); - - var $nesting = [self].concat($parent_nesting), $SwordWorld2_0_initialize$10, $SwordWorld2_0_rollDiceCommand$11, $SwordWorld2_0_getRateUpFromString$12, $SwordWorld2_0_getAdditionalString$13, $SwordWorld2_0_rollDice$14, $SwordWorld2_0_getGratestFortuneFromString$15, $SwordWorld2_0_growth$16, $SwordWorld2_0_growth_step$18, $SwordWorld2_0_get_ability_by_dice$19, $SwordWorld2_0_get_fumble_table$20, $SwordWorld2_0_get_tangle_table$21; - - - Opal.const_set($nesting[0], 'ID', "SwordWorld2.0"); - Opal.const_set($nesting[0], 'NAME', "ソードワールド2.0"); - Opal.const_set($nesting[0], 'SORT_KEY', "そおとわあると2.0"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "自動的成功、成功、失敗、自動的失敗の自動判定を行います。\n" + "\n" + "・レーティング表 (Kx)\n" + " \"Kキーナンバー+ボーナス\"の形で記入します。\n" + " ボーナスの部分に「K20+K30」のようにレーティングを取ることは出来ません。\n" + " また、ボーナスは複数取ることが出来ます。\n" + " レーティング表もダイスロールと同様に、他のプレイヤーに隠れてロールすることも可能です。\n" + " 例)K20   K10+5   k30   k10+10   Sk10-1   k10+5+2\n" + "\n" + "・クリティカル値の設定\n" + " クリティカル値は\"[クリティカル値]\"で指定します。\n" + " 指定しない場合はクリティカル値10とします。\n" + " クリティカル処理が必要ないときは13などとしてください。(防御時などの対応)\n" + " またタイプの軽減化のために末尾に「@クリティカル値」でも処理するようにしました。\n" + " 例)K20[10]   K10+5[9]   k30[10]   k10[9]+10   k10-5@9\n" + "\n" + "・レーティング表の半減 (HKx)\n" + " レーティング表の先頭または末尾に\"H\"をつけると、レーティング表を振って最終結果を半減させます。\n" + " クリティカル値を指定しない場合、クリティカルなしと扱われます。\n" + " 例)HK20  K20h  HK10-5@9  K10-5@9H  K20gfH\n" + "\n" + "・ダイス目の修正(運命変転やクリティカルレイ用)\n" + " 末尾に「$修正値」でダイス目に修正がかかります。\n" + " $+1と修正表記ならダイス目に+修正、$9のように固定値ならダイス目をその出目に差し替え。\n" + " クリティカルした場合でも固定値や修正値の適用は最初の一回だけです。\n" + " 例)K20$+1   K10+5$9   k10-5@9$+2   k10[9]+10$9\n" + "\n" + "・首切り刀用レーティング上昇 r10\n" + " 例)K20r10 K30+24@8R10 K40+24@8$12r10\n" + "\n" + "・グレイテストフォーチュンは末尾に gf\n" + " 例)K20gf K30+24@8GF K40+24@8$12r10gf\n" + "\n" + "・超越判定用に2d6ロールに 2D6@10 書式でクリティカル値付与が可能に。\n" + " 例)2D6@10 2D6@10+11>=30\n" + "\n" + "・成長 (Gr)\n" + " 末尾に数字を付加することで、複数回の成長をまとめて行えます。\n" + " 例)Gr3\n" + "\n" + "・防御ファンブル表 (FT)\n" + " 防御ファンブル表を出すことができます。\n" + "\n" + "・絡み効果表 (TT)\n" + " 絡み効果表を出すことができます。\n"); - self.$setPrefixes(["H?K\\d+.*", "Gr(\\d+)?", "2D6?@\\d+.*", "FT", "TT"]); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'TranscendentTest'); - - var $nesting = [self].concat($parent_nesting), $TranscendentTest_initialize$1, $TranscendentTest_execute$2, $TranscendentTest_node_expression$3, $TranscendentTest_sum_of_dice$4, $TranscendentTest_dice_str$5, $TranscendentTest_result_str$7, $TranscendentTest_roll_2d6$8; - - self.$$prototype.modifier = self.$$prototype.critical_value = self.$$prototype.expression = self.$$prototype.modifier_str = self.$$prototype.target = self.$$prototype.cmp_op = nil; - - self.$include($$($nesting, 'ModifierFormatter')); - - Opal.def(self, '$initialize', $TranscendentTest_initialize$1 = function $$initialize(critical_value, modifier, cmp_op, target) { - var self = this; - - - self.critical_value = critical_value; - self.modifier = modifier; - self.cmp_op = cmp_op; - self.target = target; - self.modifier_str = self.$format_modifier(self.modifier); - return (self.expression = self.$node_expression()); - }, $TranscendentTest_initialize$1.$$arity = 4); - - Opal.def(self, '$execute', $TranscendentTest_execute$2 = function $$execute(bot) { - var $a, self = this, first_value_group = nil, value_groups = nil, fumble = nil, critical = nil, sum = nil, total_sum = nil, parts = nil; - - - if ($truthy($rb_lt(self.critical_value, 3))) { - return "" + "(" + (self.expression) + ") > クリティカル値が小さすぎます。3以上を指定してください。"}; - first_value_group = self.$roll_2d6(bot); - value_groups = [first_value_group]; - fumble = first_value_group['$==']([1, 1]); - critical = first_value_group['$==']([6, 6]); - if ($truthy(($truthy($a = fumble['$!']()) ? critical['$!']() : $a))) { - while ($truthy($rb_ge(self.$sum_of_dice(value_groups.$last()), self.critical_value))) { - value_groups.$push(self.$roll_2d6(bot)) - }}; - sum = self.$sum_of_dice(value_groups); - total_sum = $rb_plus(sum, self.modifier); - parts = ["" + "(" + (self.expression) + ")", "" + (self.$dice_str(value_groups, sum)) + (self.modifier_str), total_sum, ($truthy($a = self.target) ? self.$result_str(total_sum, value_groups.$length(), fumble, critical) : $a)].$compact(); - return parts.$join(" > "); - }, $TranscendentTest_execute$2.$$arity = 1); - self.$private(); - - Opal.def(self, '$node_expression', $TranscendentTest_node_expression$3 = function $$node_expression() { - var self = this, lhs = nil; - - - lhs = "" + "2D6@" + (self.critical_value) + (self.modifier_str); - return (function() {if ($truthy(self.target)) { - return "" + (lhs) + (self.cmp_op) + (self.target) - } else { - return lhs - }; return nil; })(); - }, $TranscendentTest_node_expression$3.$$arity = 0); - - Opal.def(self, '$sum_of_dice', $TranscendentTest_sum_of_dice$4 = function $$sum_of_dice(value_groups) { - var self = this; - - return $send(value_groups.$flatten(), 'reduce', [0], "+".$to_proc()) - }, $TranscendentTest_sum_of_dice$4.$$arity = 1); - - Opal.def(self, '$dice_str', $TranscendentTest_dice_str$5 = function $$dice_str(value_groups, sum) { - var $$6, self = this, value_groups_str = nil; - - - value_groups_str = $send(value_groups, 'map', [], ($$6 = function(values){var self = $$6.$$s || this; - - - - if (values == null) { - values = nil; - }; - return "" + "[" + (values.$join(",")) + "]";}, $$6.$$s = self, $$6.$$arity = 1, $$6)).$join(); - return "" + (sum) + (value_groups_str); - }, $TranscendentTest_dice_str$5.$$arity = 2); - - Opal.def(self, '$result_str', $TranscendentTest_result_str$7 = function $$result_str(total_sum, n_value_groups, fumble, critical) { - var $a, self = this; - - - if ($truthy(fumble)) { - return "自動的失敗"}; - if ($truthy(critical)) { - return "自動的成功"}; - if ($truthy(total_sum.$send(self.cmp_op, self.target))) { - if ($truthy(($truthy($a = $rb_ge(n_value_groups, 2)) ? $rb_ge(total_sum, 41) : $a))) { - return "超成功" - } else { - return "成功" - } - } else { - return "失敗" - }; - }, $TranscendentTest_result_str$7.$$arity = 4); - return (Opal.def(self, '$roll_2d6', $TranscendentTest_roll_2d6$8 = function $$roll_2d6(bot) { - var $$9, self = this; - - return $send($$($nesting, 'Array'), 'new', [2], ($$9 = function(){var self = $$9.$$s || this; - - return bot.$roll(1, 6)['$[]'](0)}, $$9.$$s = self, $$9.$$arity = 0, $$9)) - }, $TranscendentTest_roll_2d6$8.$$arity = 1), nil) && 'roll_2d6'; - })($nesting[0], null, $nesting); - - Opal.def(self, '$initialize', $SwordWorld2_0_initialize$10 = function $$initialize() { - var $iter = $SwordWorld2_0_initialize$10.$$p, $yield = $iter || nil, self = this, rating_table = nil; - - if ($iter) $SwordWorld2_0_initialize$10.$$p = null; - - rating_table = 2; - $send(self, Opal.find_super_dispatcher(self, 'initialize', $SwordWorld2_0_initialize$10, false), [], null); - return (self.rating_table = rating_table); - }, $SwordWorld2_0_initialize$10.$$arity = 0); - Opal.const_set($nesting[0], 'TRANSCENDENT_TEST_RE', /^2D6?@(\d+)([-+\d]+)?(?:(>=?)(\d+))?/.$freeze()); - - Opal.def(self, '$rollDiceCommand', $SwordWorld2_0_rollDiceCommand$11 = function $$rollDiceCommand(command) { - var $a, $iter = $SwordWorld2_0_rollDiceCommand$11.$$p, $yield = $iter || nil, self = this, $case = nil, m = nil, critical_value = nil, modifier = nil, cmp_op = nil, target = nil, node = nil; - - if ($iter) $SwordWorld2_0_rollDiceCommand$11.$$p = null; - return (function() {$case = command; - if (/^Gr(\d+)?/i['$===']($case)) {if ($truthy(command['$=~'](/^Gr(\d+)/i))) { - return self.$growth($$($nesting, 'Regexp').$last_match(1).$to_i()) - } else { - return self.$growth() - }} - else if ($$($nesting, 'TRANSCENDENT_TEST_RE')['$===']($case)) { - m = $$($nesting, 'Regexp').$last_match(); - critical_value = m['$[]'](1).$to_i(); - modifier = (function() {if ($truthy(m['$[]'](2))) { - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(m['$[]'](2)) - } else { - return 0 - }; return nil; })(); - cmp_op = m['$[]'](3); - target = ($truthy($a = m['$[]'](3)) ? m['$[]'](4).$to_i() : $a); - node = $$($nesting, 'TranscendentTest').$new(critical_value, modifier, cmp_op, target); - return node.$execute(self);} - else if ("FT"['$===']($case)) {return self.$get_fumble_table()} - else if ("TT"['$===']($case)) {return self.$get_tangle_table()} - else {return $send(self, Opal.find_super_dispatcher(self, 'rollDiceCommand', $SwordWorld2_0_rollDiceCommand$11, false), [command], null)}})() - }, $SwordWorld2_0_rollDiceCommand$11.$$arity = 1); - - Opal.def(self, '$getRateUpFromString', $SwordWorld2_0_getRateUpFromString$12 = function $$getRateUpFromString(string) { - var self = this, rateUp = nil, regexp = nil; - - - rateUp = 0; - regexp = /r\[(\d+)\]/i; - if ($truthy(regexp['$==='](string))) { - - rateUp = $$($nesting, 'Regexp').$last_match(1).$to_i(); - string = string.$gsub(regexp, "");}; - return [rateUp, string]; - }, $SwordWorld2_0_getRateUpFromString$12.$$arity = 1); - - Opal.def(self, '$getAdditionalString', $SwordWorld2_0_getAdditionalString$13 = function $$getAdditionalString(string, output) { - var $a, $b, $iter = $SwordWorld2_0_getAdditionalString$13.$$p, $yield = $iter || nil, self = this, values = nil, isGratestFortune = nil, $writer = nil; - - if ($iter) $SwordWorld2_0_getAdditionalString$13.$$p = null; - - $b = $send(self, Opal.find_super_dispatcher(self, 'getAdditionalString', $SwordWorld2_0_getAdditionalString$13, false), [string, output], null), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (values = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$getGratestFortuneFromString(string), $a = Opal.to_ary($b), (isGratestFortune = ($a[0] == null ? nil : $a[0])), (string = ($a[1] == null ? nil : $a[1])), $b; - - $writer = ["isGratestFortune", isGratestFortune]; - $send(values, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy(isGratestFortune)) { - output = $rb_plus(output, "gf")}; - return [output, values]; - }, $SwordWorld2_0_getAdditionalString$13.$$arity = 2); - - Opal.def(self, '$rollDice', $SwordWorld2_0_rollDice$14 = function $$rollDice(values) { - var $a, $b, $iter = $SwordWorld2_0_rollDice$14.$$p, $yield = $iter || nil, self = this, dice = nil, diceText = nil; - - if ($iter) $SwordWorld2_0_rollDice$14.$$p = null; - - if ($truthy(values['$[]']("isGratestFortune"))) { - } else { - return $send(self, Opal.find_super_dispatcher(self, 'rollDice', $SwordWorld2_0_rollDice$14, false), [values], null) - }; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - dice = $rb_times(dice, 2); - diceText = "" + (diceText) + "," + (diceText); - return [dice, diceText]; - }, $SwordWorld2_0_rollDice$14.$$arity = 1); - - Opal.def(self, '$getGratestFortuneFromString', $SwordWorld2_0_getGratestFortuneFromString$15 = function $$getGratestFortuneFromString(string) { - var self = this, isGratestFortune = nil, regexp = nil; - - - isGratestFortune = false; - regexp = /gf/i; - if ($truthy(regexp['$==='](string))) { - - isGratestFortune = true; - string = string.$gsub(regexp, "");}; - return [isGratestFortune, string]; - }, $SwordWorld2_0_getGratestFortuneFromString$15.$$arity = 1); - - Opal.def(self, '$growth', $SwordWorld2_0_growth$16 = function $$growth(count) { - var $$17, self = this; - - - - if (count == null) { - count = 1; - }; - return $send(Opal.Range.$new(1, count, false), 'map', [], ($$17 = function(){var self = $$17.$$s || this; - - return self.$growth_step()}, $$17.$$s = self, $$17.$$arity = 0, $$17)).$join(" | "); - }, $SwordWorld2_0_growth$16.$$arity = -1); - - Opal.def(self, '$growth_step', $SwordWorld2_0_growth_step$18 = function $$growth_step() { - var $a, $b, self = this, d1 = nil, d2 = nil, a1 = nil, a2 = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (d2 = ($a[0] == null ? nil : $a[0])), $b; - a1 = self.$get_ability_by_dice(d1); - a2 = self.$get_ability_by_dice(d2); - return (function() {if ($truthy(a1['$!='](a2))) { - return "" + "[" + (d1) + "," + (d2) + "]->(" + (a1) + " or " + (a2) + ")" - } else { - return "" + "[" + (d1) + "," + (d2) + "]->(" + (a1) + ")" - }; return nil; })(); - }, $SwordWorld2_0_growth_step$18.$$arity = 0); - - Opal.def(self, '$get_ability_by_dice', $SwordWorld2_0_get_ability_by_dice$19 = function $$get_ability_by_dice(dice) { - var self = this; - - return ["器用度", "敏捷度", "筋力", "生命力", "知力", "精神力"]['$[]']($rb_minus(dice, 1)) - }, $SwordWorld2_0_get_ability_by_dice$19.$$arity = 1); - - Opal.def(self, '$get_fumble_table', $SwordWorld2_0_get_fumble_table$20 = function $$get_fumble_table() { - var $a, $b, self = this, table = nil, text = nil, num = nil; - - - table = ["この表を2回振り、その両方を適用する。(同じ出目による影響は累積しない)。この自動失敗により得られる経験点は、+50点される", "ダメージに、攻撃者を強化している「剣のかけら」の数が追加される", "ダメージに、攻撃者の「レベル」が追加される", "ダメージ決定を2回行い、より高い方を採用する", "合算ダメージを2倍する", "防護点無効"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (num = ($a[1] == null ? nil : $a[1])), $b; - return "" + "防御ファンブル表(" + (num) + ") → " + (text); - }, $SwordWorld2_0_get_fumble_table$20.$$arity = 0); - return (Opal.def(self, '$get_tangle_table', $SwordWorld2_0_get_tangle_table$21 = function $$get_tangle_table() { - var $a, $b, self = this, table = nil, text = nil, num = nil; - - - table = ["頭や顔:牙や噛みつきなどにおける命中力判定及び、魔法の行使やブレスに-2のペナルティ修正を受ける", "武器や盾:武器の使用不可、又は盾の回避力修正及び防護点を無効化する", "腕や手:武器や爪などにおける命中力判定に-2のペナルティ修正、盾を持つ腕方の腕ならその盾の回避力修正及び防護点を無効化する", "脚や足:移動不可、更に回避力判定に-2のペナルティ修正を受ける ※両足に絡んでも累積しない", "胴体:生命・精神抵抗力を基準値に用いる判定を除き、あらゆる行為判定に-1のペナルティ修正を受ける", "特殊:尻尾や翼などに命中。絡められた部位を使用する判定において-2のペナルティ修正、またはそこが使えていたことによるボーナス修正を失う ※存在しない場合は決め直し"]; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (num = ($a[1] == null ? nil : $a[1])), $b; - return "" + "絡み効果表(" + (num) + ") → " + (text); - }, $SwordWorld2_0_get_tangle_table$21.$$arity = 0), nil) && 'get_tangle_table'; - })($nesting[0], $$($nesting, 'SwordWorld'), $nesting); -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$require', '$setPrefixes', '$match', '$gsub', '$to_i', '$last_match', '$format_modifier', '$+', '$getKeptDiceChangesFromString', '$[]=', '$-', '$!=', '$[]', '$=~']); - - self.$require("diceBot/SwordWorld2_0"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'SwordWorld2_5'); - - var $nesting = [self].concat($parent_nesting), $SwordWorld2_5_changeText$1, $SwordWorld2_5_getRatingCommandStrings$3, $SwordWorld2_5_getAdditionalString$4, $SwordWorld2_5_getAdditionalDiceValue$5, $SwordWorld2_5_getKeptDiceChangesFromString$6; - - - Opal.const_set($nesting[0], 'ID', "SwordWorld2.5"); - Opal.const_set($nesting[0], 'NAME', "ソードワールド2.5"); - Opal.const_set($nesting[0], 'SORT_KEY', "そおとわあると2.5"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "自動的成功、成功、失敗、自動的失敗の自動判定を行います。\n" + "\n" + "・レーティング表 (Kx)\n" + " \"Kキーナンバー+ボーナス\"の形で記入します。\n" + " ボーナスの部分に「K20+K30」のようにレーティングを取ることは出来ません。\n" + " また、ボーナスは複数取ることが出来ます。\n" + " レーティング表もダイスロールと同様に、他のプレイヤーに隠れてロールすることも可能です。\n" + " 例)K20   K10+5   k30   k10+10   Sk10-1   k10+5+2\n" + "\n" + "・クリティカル値の設定\n" + " クリティカル値は\"[クリティカル値]\"で指定します。\n" + " 指定しない場合はクリティカル値10とします。\n" + " クリティカル処理が必要ないときは13などとしてください。(防御時などの対応)\n" + " またタイプの軽減化のために末尾に「@クリティカル値」でも処理するようにしました。\n" + " 例)K20[10]   K10+5[9]   k30[10]   k10[9]+10   k10-5@9\n" + "\n" + "・レーティング表の半減 (HKx)\n" + " レーティング表の先頭または末尾に\"H\"をつけると、レーティング表を振って最終結果を半減させます。\n" + " クリティカル値を指定しない場合、クリティカルなしと扱われます。\n" + " 例)HK20  K20h  HK10-5@9  K10-5@9H  K20gfH\n" + "\n" + "・ダイス目の修正(運命変転やクリティカルレイ用)\n" + " 末尾に「$修正値」でダイス目に修正がかかります。\n" + " $+1と修正表記ならダイス目に+修正、$9のように固定値ならダイス目をその出目に差し替え。\n" + " クリティカルした場合でも固定値や修正値の適用は最初の一回だけです。\n" + " 例)K20$+1   K10+5$9   k10-5@9$+2   k10[9]+10$9\n" + "\n" + "・ダイス目の修正(必殺攻撃用)\n" + " 「#修正値」でダイス目に修正がかかります。\n" + " クリティカルした場合でも修正値の適用は継続されます。\n" + " 例)K20#1   k10-5@9#2\n" + "\n" + "・首切り刀用レーティング上昇 r5\n" + " 例)K20r5 K30+24@8R5 K40+24@8$12r5\n" + "\n" + "・グレイテストフォーチュンは末尾に gf\n" + " 例)K20gf K30+24@8GF K40+24@8$12r5gf\n" + "\n" + "・超越判定用に2d6ロールに 2D6@10 書式でクリティカル値付与が可能に。\n" + " 例)2D6@10 2D6@10+11>=30\n" + "\n" + "・成長 (Gr)\n" + " 末尾に数字を付加することで、複数回の成長をまとめて行えます。\n" + " 例)Gr3\n" + "\n" + "・防御ファンブル表 (FT)\n" + " 防御ファンブル表を出すことができます。\n" + "\n" + "・絡み効果表 (TT)\n" + " 絡み効果表を出すことができます。\n"); - self.$setPrefixes(["H?K\\d+.*", "Gr(\\d+)?", "2D6?@\\d+.*", "FT", "TT"]); - - Opal.def(self, '$changeText', $SwordWorld2_5_changeText$1 = function $$changeText(string) { - var $$2, $iter = $SwordWorld2_5_changeText$1.$$p, $yield = $iter || nil, self = this; - - if ($iter) $SwordWorld2_5_changeText$1.$$p = null; - - if ($truthy($$($nesting, 'RATING_TABLE_RE_FOR_CHANGE_TEXT').$match(string))) { - } else { - return string - }; - return $send($send(self, Opal.find_super_dispatcher(self, 'changeText', $SwordWorld2_5_changeText$1, false), [string], null), 'gsub', [/#([-+]?\d+)/], ($$2 = function(){var self = $$2.$$s || this, modifier = nil; - - - modifier = $$($nesting, 'Regexp').$last_match(1).$to_i(); - return "" + "a[" + (self.$format_modifier(modifier)) + "]";}, $$2.$$s = self, $$2.$$arity = 0, $$2)); - }, $SwordWorld2_5_changeText$1.$$arity = 1); - - Opal.def(self, '$getRatingCommandStrings', $SwordWorld2_5_getRatingCommandStrings$3 = function $$getRatingCommandStrings() { - var $iter = $SwordWorld2_5_getRatingCommandStrings$3.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $SwordWorld2_5_getRatingCommandStrings$3.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - return $rb_plus($send(self, Opal.find_super_dispatcher(self, 'getRatingCommandStrings', $SwordWorld2_5_getRatingCommandStrings$3, false), $zuper, $iter), "aA") - }, $SwordWorld2_5_getRatingCommandStrings$3.$$arity = 0); - - Opal.def(self, '$getAdditionalString', $SwordWorld2_5_getAdditionalString$4 = function $$getAdditionalString(string, output) { - var $a, $b, $iter = $SwordWorld2_5_getAdditionalString$4.$$p, $yield = $iter || nil, self = this, values = nil, keptDiceChangeModify = nil, $writer = nil; - - if ($iter) $SwordWorld2_5_getAdditionalString$4.$$p = null; - - $b = $send(self, Opal.find_super_dispatcher(self, 'getAdditionalString', $SwordWorld2_5_getAdditionalString$4, false), [string, output], null), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (values = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$getKeptDiceChangesFromString(string), $a = Opal.to_ary($b), (keptDiceChangeModify = ($a[0] == null ? nil : $a[0])), (string = ($a[1] == null ? nil : $a[1])), $b; - - $writer = ["keptDiceChangeModify", keptDiceChangeModify]; - $send(values, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];; - if ($truthy(keptDiceChangeModify['$!='](0))) { - output = $rb_plus(output, "" + "a[" + (keptDiceChangeModify) + "]")}; - return [output, values]; - }, $SwordWorld2_5_getAdditionalString$4.$$arity = 2); - - Opal.def(self, '$getAdditionalDiceValue', $SwordWorld2_5_getAdditionalDiceValue$5 = function $$getAdditionalDiceValue(dice, values) { - var $a, self = this, keptDiceChangeModify = nil, value = nil; - - - keptDiceChangeModify = values['$[]']("keptDiceChangeModify").$to_i(); - value = 0; - if ($truthy(($truthy($a = keptDiceChangeModify['$!='](0)) ? dice['$!='](2) : $a))) { - value = $rb_plus(value, keptDiceChangeModify.$to_i())}; - return value; - }, $SwordWorld2_5_getAdditionalDiceValue$5.$$arity = 2); - return (Opal.def(self, '$getKeptDiceChangesFromString', $SwordWorld2_5_getKeptDiceChangesFromString$6 = function $$getKeptDiceChangesFromString(string) { - var self = this, keptDiceChangeModify = nil, regexp = nil; - - - keptDiceChangeModify = 0; - regexp = /a\[([\+\-]\d+)\]/i; - if ($truthy(regexp['$=~'](string))) { - - keptDiceChangeModify = $$($nesting, 'Regexp').$last_match(1); - string = string.$gsub(regexp, "");}; - return [keptDiceChangeModify, string]; - }, $SwordWorld2_5_getKeptDiceChangesFromString$6.$$arity = 1), nil) && 'getKeptDiceChangesFromString'; - })($nesting[0], $$($nesting, 'SwordWorld2_0'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/TherapieSein.js b/src/assets/dicebot/TherapieSein.js deleted file mode 100644 index 08a0b307b..000000000 --- a/src/assets/dicebot/TherapieSein.js +++ /dev/null @@ -1,90 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$upcase', '$===', '$==', '$last_match', '$to_i', '$scan', '$each', '$+', '$checkRoll', '$roll', '$getValueText', '$>=', '$<', '$to_s']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'TherapieSein'); - - var $nesting = [self].concat($parent_nesting), $TherapieSein_rollDiceCommand$1, $TherapieSein_checkRoll$3, $TherapieSein_getValueText$4; - - - Opal.const_set($nesting[0], 'ID', "TherapieSein"); - Opal.const_set($nesting[0], 'NAME', "セラフィザイン"); - Opal.const_set($nesting[0], 'SORT_KEY', "せらふいさいん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・一般判定:TS[n][±m][@t]  []内のコマンドは省略可能。クリティカル無。\n" + "・戦闘判定:OP[n][±m][@t]  []内のコマンドは省略可能。クリティカル有。\n" + "\n" + "「n」で能力値修正などを指定。\n" + "「±m」で達成値への修正値を追加指定。+5+1-3のように、複数指定も可能です。\n" + "「@t」で目標値を指定。省略時は達成値のみ表示、指定時は判定の正否を追加表示。\n" + "\n" + "【書式例】\n" + "・TS → ダイスの合計値を達成値として表示。\n" + "・TS4 → ダイス合計+4を達成値表示。\n" + "・TS4-1 → ダイス合計+4-1(計+3)を達成値表示。\n" + "・TS2+1@10 → ダイス合計+2+1(計+3)の達成値と、判定の成否を表示。\n" + "・OP4+3+1 → ダイス合計+4+3+1(計+8)を達成値&クリティカル表示。\n" + "・OP3@12 → ダイス合計+3の達成値&クリティカル、判定の成否を表示。\n"); - self.$setPrefixes(["(TS|OP)(\\d+)?([\\+\\-]\\d)*(\\@\\d+)?"]); - - Opal.def(self, '$rollDiceCommand', $TherapieSein_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $$2, self = this, output = nil, $case = nil, hasCritical = nil, target = nil, modify = nil, modifyAddString = nil, modify_list = nil; - - - output = (function() {$case = command.$upcase(); - if (/(TS|OP)(\d+)?(([\+\-]\d+)*)(\@(\d+))?$/i['$===']($case)) { - hasCritical = $$($nesting, 'Regexp').$last_match(1)['$==']("OP"); - target = ($truthy($a = $$($nesting, 'Regexp').$last_match(6)) ? $a : 0).$to_i(); - modify = ($truthy($a = $$($nesting, 'Regexp').$last_match(2)) ? $a : 0).$to_i(); - modifyAddString = $$($nesting, 'Regexp').$last_match(3); - modify_list = modifyAddString.$scan(/[\+\-]\d+/); - $send(modify_list, 'each', [], ($$2 = function(i){var self = $$2.$$s || this; - - - - if (i == null) { - i = nil; - }; - return (modify = $rb_plus(modify, i.$to_i()));}, $$2.$$s = self, $$2.$$arity = 1, $$2)); - return self.$checkRoll(hasCritical, modify, target);} - else { return nil }})(); - return output; - }, $TherapieSein_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$checkRoll', $TherapieSein_checkRoll$3 = function $$checkRoll(hasCritical, modify, target) { - var $a, $b, self = this, dice = nil, diceText = nil, successValue = nil, modifyText = nil, targetText = nil, result = nil; - - - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - successValue = $rb_plus(dice, modify); - modifyText = self.$getValueText(modify); - targetText = (function() {if (target['$=='](0)) { - return "" - } else { - return "" + ">=" + (target) - }; return nil; })(); - result = "" + "(2D6" + (modifyText) + (targetText) + ")"; - result = $rb_plus(result, "" + " > " + (dice) + "(" + (diceText) + ")" + (modifyText)); - if ($truthy(($truthy($a = hasCritical) ? dice['$=='](12) : $a))) { - - result = $rb_plus(result, " > クリティカル!"); - return result;}; - result = $rb_plus(result, "" + " > " + (successValue) + (targetText)); - if (target['$=='](0)) { - return result}; - if ($truthy($rb_ge(successValue, target))) { - result = $rb_plus(result, " > 【成功】") - } else { - result = $rb_plus(result, " > 【失敗】") - }; - return result; - }, $TherapieSein_checkRoll$3.$$arity = 3); - return (Opal.def(self, '$getValueText', $TherapieSein_getValueText$4 = function $$getValueText(value) { - var self = this; - - - if (value['$=='](0)) { - return ""}; - if ($truthy($rb_lt(value, 0))) { - return value.$to_s()}; - return "" + "+" + (value); - }, $TherapieSein_getValueText$4.$$arity = 1), nil) && 'getValueText'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/TokumeiTenkousei.js b/src/assets/dicebot/TokumeiTenkousei.js deleted file mode 100644 index 47d63e839..000000000 --- a/src/assets/dicebot/TokumeiTenkousei.js +++ /dev/null @@ -1,63 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$!=', '$==', '$>=', '$debug', '$*']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'TokumeiTenkousei'); - - var $nesting = [self].concat($parent_nesting), $TokumeiTenkousei_initialize$1, $TokumeiTenkousei_check_nD6$2, $TokumeiTenkousei_getDiceRolledAdditionalText$3; - - - Opal.const_set($nesting[0], 'ID', "TokumeiTenkousei"); - Opal.const_set($nesting[0], 'NAME', "特命転攻生"); - Opal.const_set($nesting[0], 'SORT_KEY', "とくめいてんこうせい"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "「1の出目でEPP獲得」、判定時の「成功」「失敗」「ゾロ目で自動振り足し」を判定。\n"); - - Opal.def(self, '$initialize', $TokumeiTenkousei_initialize$1 = function $$initialize() { - var $iter = $TokumeiTenkousei_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $TokumeiTenkousei_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $TokumeiTenkousei_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - self.sameDiceRerollCount = 1; - return (self.sameDiceRerollType = 2); - }, $TokumeiTenkousei_initialize$1.$$arity = 0); - - Opal.def(self, '$check_nD6', $TokumeiTenkousei_check_nD6$2 = function $$check_nD6(total, _dice_total, _dice_list, cmp_op, target) { - var $a, self = this; - - - if ($truthy(($truthy($a = cmp_op['$!='](">=")) ? $a : target['$==']("?")))) { - return ""}; - if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $TokumeiTenkousei_check_nD6$2.$$arity = 5); - return (Opal.def(self, '$getDiceRolledAdditionalText', $TokumeiTenkousei_getDiceRolledAdditionalText$3 = function $$getDiceRolledAdditionalText(n1, _n_max, dice_max) { - var $a, self = this, point = nil; - - - self.$debug("getExtraPowerPointTextForTokumeiTenkousei n1, dice_max", n1, dice_max); - if ($truthy(($truthy($a = n1['$!='](0)) ? dice_max['$=='](6) : $a))) { - - point = $rb_times(n1, 5); - return "" + " > " + (point) + "EPP獲得";}; - return ""; - }, $TokumeiTenkousei_getDiceRolledAdditionalText$3.$$arity = 3), nil) && 'getDiceRolledAdditionalText'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/TokyoGhostResearch.js b/src/assets/dicebot/TokyoGhostResearch.js deleted file mode 100644 index ba072721c..000000000 --- a/src/assets/dicebot/TokyoGhostResearch.js +++ /dev/null @@ -1,100 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$upcase', '$===', '$getCheckResult', '$tgr_opening_table', '$tgr_common_trouble_table', '$=~', '$to_i', '$last_match', '$>', '$+', '$roll', '$to_s', '$getCheckResultText', '$>=', '$get_1d10_table_result', '$get_table_by_number', '$get_table_result']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'TokyoGhostResearch'); - - var $nesting = [self].concat($parent_nesting), $TokyoGhostResearch_rollDiceCommand$1, $TokyoGhostResearch_getCheckResult$2, $TokyoGhostResearch_getCheckResultText$3, $TokyoGhostResearch_tgr_opening_table$4, $TokyoGhostResearch_tgr_common_trouble_table$5, $TokyoGhostResearch_get_1d10_table_result$6, $TokyoGhostResearch_get_table_result$7; - - - Opal.const_set($nesting[0], 'ID', "TokyoGhostResearch"); - Opal.const_set($nesting[0], 'NAME', "東京ゴーストリサーチ"); - Opal.const_set($nesting[0], 'SORT_KEY', "とうきようこおすとりさあち"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "判定\n" + "・タスク処理は目標値以上の値で成功となります。\n" + " 1d10>={目標値}\n" + " 例:目標値「5」の場合、5~0で成功\n" + "各種表\n" + " ・導入表 OP\n" + " ・一般トラブル表 TB\n"); - self.$setPrefixes(["OP", "TB", "TK?\\(\\d+\\)"]); - - Opal.def(self, '$rollDiceCommand', $TokyoGhostResearch_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, output = nil, $case = nil; - - - output = (function() {$case = command.$upcase(); - if (/TK/i['$===']($case)) {return self.$getCheckResult(command)} - else if ("OP"['$===']($case)) {return self.$tgr_opening_table()} - else if ("TB"['$===']($case)) {return self.$tgr_common_trouble_table()} - else { return nil }})(); - return output; - }, $TokyoGhostResearch_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$getCheckResult', $TokyoGhostResearch_getCheckResult$2 = function $$getCheckResult(command) { - var $a, $b, self = this, output = nil, diff = nil, total_n = nil; - - - output = ""; - diff = 0; - if ($truthy(/TK?<=(\d+)/i['$=~'](command))) { - diff = $$($nesting, 'Regexp').$last_match(2).$to_i()}; - if ($truthy($rb_gt(diff, 0))) { - - output = $rb_plus(output, "" + "(1D10<=" + (diff) + ")"); - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = $rb_plus(output, $rb_plus(" > ", total_n.$to_s())); - output = $rb_plus(output, $rb_plus(" > ", self.$getCheckResultText(total_n, diff)));}; - return output; - }, $TokyoGhostResearch_getCheckResult$2.$$arity = 1); - - Opal.def(self, '$getCheckResultText', $TokyoGhostResearch_getCheckResultText$3 = function $$getCheckResultText(total_n, diff) { - var self = this, result = nil; - - - if ($truthy($rb_ge(total_n, diff))) { - result = "成功" - } else { - result = "失敗" - }; - return result; - }, $TokyoGhostResearch_getCheckResultText$3.$$arity = 2); - - Opal.def(self, '$tgr_opening_table', $TokyoGhostResearch_tgr_opening_table$4 = function $$tgr_opening_table() { - var self = this, name = nil, table = nil; - - - name = "導入表"; - table = [[1, "【病休中断】体調不良または怪我で療養中だったが強制召喚された。"], [2, "【忙殺中】別の業務で忙殺中であった。"], [3, "【出張帰り】遠方での仕事から戻ったばかり。"], [4, "【休暇取り消し】休暇中だったが呼び戻された。"], [5, "【平常運転】いつもどおりの仕事中だった。"], [6, "【休暇明け】十分に休養をとったあとで、心身ともに充実している。"], [7, "【人生の岐路】人生の岐路にまさに差し掛かったところであった。"], [8, "【同窓会】かつての同級生に会い、差を実感したばかりだった。"], [9, "【転職活動中】転職を考えて求人サイトを見ているところだった。"], [10, "【サボリ中】仕事をサボっているところに呼び出しがあった。"]]; - return self.$get_1d10_table_result(name, table); - }, $TokyoGhostResearch_tgr_opening_table$4.$$arity = 0); - - Opal.def(self, '$tgr_common_trouble_table', $TokyoGhostResearch_tgr_common_trouble_table$5 = function $$tgr_common_trouble_table() { - var self = this, name = nil, table = nil; - - - name = "一般トラブル表"; - table = [[1, "トラブルが生じたが、間一髪、危機を脱した。【ダメージなし】"], [2, "どうにかタスクを処理したが、非常に疲労してしまった。【肉体ダメージ1点】"], [3, "タスク処理の過程で負傷してしまった。【肉体ダメージ1点】"], [4, "恐怖や混乱、ストレスなどで精神の均衡を崩してしまった。【精神ダメージ1点】"], [5, "過去のトラウマなどを思い出し、気分が沈んでしまった。【精神ダメージ1点】"], [6, "自身の信用をキズつけたり、汚名を背負ってしまった。【環境ダメージ1点】"], [7, "会社や上司の不興を買ってしまった。【環境ダメージ1点】"], [8, "疲労困憊で動くこともままならない。【肉体ダメージ1点+精神ダメージ1点】"], [9, "負傷したうえ、会社に損害を与えてしまった。【肉体ダメージ1点+環境ダメージ1点】"], [10, "上司から厳しく叱責され、まずい立場になった。【精神ダメージ1点+環境ダメージ1点】"]]; - return self.$get_1d10_table_result(name, table); - }, $TokyoGhostResearch_tgr_common_trouble_table$5.$$arity = 0); - - Opal.def(self, '$get_1d10_table_result', $TokyoGhostResearch_get_1d10_table_result$6 = function $$get_1d10_table_result(name, table) { - var $a, $b, self = this, dice = nil, output = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), $b; - output = self.$get_table_by_number(dice, table); - return self.$get_table_result(name, dice, output); - }, $TokyoGhostResearch_get_1d10_table_result$6.$$arity = 2); - return (Opal.def(self, '$get_table_result', $TokyoGhostResearch_get_table_result$7 = function $$get_table_result(name, dice, output) { - var self = this; - - return "" + (name) + "(" + (dice) + ") > " + (output) - }, $TokyoGhostResearch_get_table_result$7.$$arity = 3), nil) && 'get_table_result'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/TokyoNova.js b/src/assets/dicebot/TokyoNova.js deleted file mode 100644 index d226bd1f1..000000000 --- a/src/assets/dicebot/TokyoNova.js +++ /dev/null @@ -1,16 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; - - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'TokyoNova'); - - var $nesting = [self].concat($parent_nesting); - - - Opal.const_set($nesting[0], 'ID', "TokyoNova"); - Opal.const_set($nesting[0], 'NAME', "トーキョーN◎VA"); - Opal.const_set($nesting[0], 'SORT_KEY', "とおきよおのは"); - return Opal.const_set($nesting[0], 'HELP_MESSAGE', "※このダイスボットは部屋のシステム名表示用となります。\n"); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Torg.js b/src/assets/dicebot/Torg.js deleted file mode 100644 index d751b3d6d..000000000 --- a/src/assets/dicebot/Torg.js +++ /dev/null @@ -1,317 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$gsub', '$last_match', '$torg_check', '$=~', '$debug', '$to_i', '$parren_killer', '$torg_dice', '$get_torg_bonus', '$>', '$+', '$to_s', '$!=', '$roll', '$shift', '$empty?', '$==', '$upcase', '$===', '$get_torg_success_level', '$get_torg_interaction_result_intimidate_test', '$get_torg_interaction_result_taunt_trick', '$get_torg_interaction_result_maneuver', '$get_torg_damage_ords', '$get_torg_damage_posibility', '$get_torg_bonus_text', '$get_torg_table_result', '$each', '$[]', '$get_torg_damage', '$<', '$-', '$length', '$<=', '$/', '$split', '$join', '$getTorgBonusOutputTextWhenModDefined']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Torg'); - - var $nesting = [self].concat($parent_nesting), $Torg_initialize$1, $Torg_changeText$2, $Torg_dice_command_xRn$4, $Torg_torg_check$5, $Torg_torg_dice$6, $Torg_rollDiceCommand$7, $Torg_get_torg_success_level$8, $Torg_get_torg_interaction_result_intimidate_test$9, $Torg_get_torg_interaction_result_taunt_trick$10, $Torg_get_torg_interaction_result_maneuver$11, $Torg_get_torg_table_result$12, $Torg_get_torg_damage_ords$14, $Torg_get_torg_damage_posibility$15, $Torg_get_torg_damage$16, $Torg_get_torg_bonus_text$17, $Torg_getTorgBonusOutputTextWhenModDefined$18, $Torg_get_torg_bonus$19; - - - Opal.const_set($nesting[0], 'ID', "TORG"); - Opal.const_set($nesting[0], 'NAME', "トーグ"); - Opal.const_set($nesting[0], 'SORT_KEY', "とおく"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 (TGm)\n" + " TORG専用の判定コマンドです。\n" + " \"TG(技能基本値)\"でロールします。Rコマンドに読替されます。\n" + " 振り足しを自動で行い、20の出目が出たときには技能無し値も並記します。\n" + "・各種表 \"(表コマンド)(数値)\"で振ります。\n" + " ・一般結果表 成功度出力「RTx or RESULTx」\n" + " ・威圧/威嚇 対人行為結果表「ITx or INTIMIDATEx or TESTx」\n" + " ・挑発/トリック 対人行為結果表「TTx or TAUNTx or TRICKx or CTx」\n" + " ・間合い 対人行為結果表「MTx or MANEUVERx」\n" + " ・オーズ(一般人)ダメージ 「ODTx or ORDSx or ODAMAGEx」\n" + " ・ポシビリティー能力者ダメージ「DTx or DAMAGEx」\n" + " ・ボーナス表「BTx+y or BONUSx+y or TOTALx+y」 xは数値, yは技能基本値\n"); - self.$setPrefixes(["(TG.*|RT.*|Result.*|IT.*|Initimidate.*|TT.*|Taunt.*|Trick.*|CT.*|MT.*|Maneuver.*|ODT.*|ords.*|odamage.*|DT.*|damage.*|BT.*|bonus.*|total.*)"]); - - Opal.def(self, '$initialize', $Torg_initialize$1 = function $$initialize() { - var $iter = $Torg_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Torg_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Torg_initialize$1, false), $zuper, $iter); - return (self.sendMode = 2); - }, $Torg_initialize$1.$$arity = 0); - - Opal.def(self, '$changeText', $Torg_changeText$2 = function $$changeText(string) { - var $$3, self = this; - - - string = string.$gsub(/Result/i, "RT"); - string = string.$gsub(/(Intimidate|Test)/i, "IT"); - string = string.$gsub(/(Taunt|Trick|CT)/i, "TT"); - string = string.$gsub(/Maneuver/i, "MT"); - string = string.$gsub(/(ords|odamage)/i, "ODT"); - string = string.$gsub(/damage/i, "DT"); - string = string.$gsub(/(bonus|total)/i, "BT"); - string = $send(string, 'gsub', [/TG(\d+)/i], ($$3 = function(){var self = $$3.$$s || this; - - return "" + "1R20+" + ($$($nesting, 'Regexp').$last_match(1))}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - string = string.$gsub(/TG/i, "1R20"); - return string; - }, $Torg_changeText$2.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $Torg_dice_command_xRn$4 = function $$dice_command_xRn(string, nick_e) { - var self = this; - - return self.$torg_check(string, nick_e) - }, $Torg_dice_command_xRn$4.$$arity = 2); - - Opal.def(self, '$torg_check', $Torg_torg_check$5 = function $$torg_check(string, nick_e) { - var $a, $b, self = this, output = nil, mod = nil, skilled = nil, unskilled = nil, dice_str = nil, sk_bonus = nil; - - - output = "1"; - if ($truthy(/(^|\s)S?(1R20([+-]\d+)*)(\s|$)/i['$=~'](string))) { - } else { - return "1" - }; - string = $$($nesting, 'Regexp').$last_match(2); - mod = $$($nesting, 'Regexp').$last_match(3); - self.$debug(mod); - if ($truthy(mod)) { - mod = self.$parren_killer("" + "(0" + (mod) + ")").$to_i()}; - self.$debug(mod); - mod = mod.$to_i(); - $b = self.$torg_dice(), $a = Opal.to_ary($b), (skilled = ($a[0] == null ? nil : $a[0])), (unskilled = ($a[1] == null ? nil : $a[1])), (dice_str = ($a[2] == null ? nil : $a[2])), $b; - sk_bonus = self.$get_torg_bonus(skilled); - if ($truthy(mod)) { - if ($truthy($rb_gt(mod, 0))) { - output = "" + (sk_bonus) + "[" + (dice_str) + "]+" + (mod) - } else { - output = "" + (sk_bonus) + "[" + (dice_str) + "]" + (mod) - } - } else { - output = "" + (sk_bonus) + "[" + (dice_str) + "]" - }; - output = $rb_plus(output, $rb_plus(" > ", $rb_plus(sk_bonus, mod).$to_s())); - if ($truthy(skilled['$!='](unskilled))) { - output = $rb_plus(output, $rb_plus($rb_plus("(技能無", $rb_plus(self.$get_torg_bonus(unskilled), mod).$to_s()), ")"))}; - output = "" + (nick_e) + ": (" + (string) + ") > " + (output); - return output; - }, $Torg_torg_check$5.$$arity = 2); - - Opal.def(self, '$torg_dice', $Torg_torg_dice$6 = function $$torg_dice() { - var $a, self = this, isSkilledCritical = nil, isCritical = nil, skilled = nil, unskilled = nil, dice_str = nil, dummy = nil, dice_n = nil; - - - isSkilledCritical = true; - isCritical = true; - skilled = 0; - unskilled = 0; - dice_str = ""; - while ($truthy(isSkilledCritical)) { - - dummy = self.$roll(1, 20, 0); - dice_n = dummy.$shift(); - skilled = $rb_plus(skilled, dice_n); - if ($truthy(isCritical)) { - unskilled = $rb_plus(unskilled, dice_n)}; - if ($truthy(dice_str['$empty?']())) { - } else { - dice_str = $rb_plus(dice_str, ",") - }; - dice_str = $rb_plus(dice_str, dice_n.$to_s()); - if (dice_n['$=='](20)) { - isCritical = false - } else if ($truthy(dice_n['$!='](10))) { - - isSkilledCritical = false; - isCritical = false;}; - }; - return [skilled, unskilled, dice_str]; - }, $Torg_torg_dice$6.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Torg_rollDiceCommand$7 = function $$rollDiceCommand(command) { - var $a, $b, self = this, string = nil, output = nil, ttype = nil, value = nil, type = nil, num = nil, $case = nil; - - - string = command.$upcase(); - output = "1"; - ttype = ""; - value = 0; - if ($truthy(/([RITMDB]T)(\d+([\+\-]\d+)*)/i['$=~'](string))) { - } else { - return "1" - }; - type = $$($nesting, 'Regexp').$last_match(1); - num = $$($nesting, 'Regexp').$last_match(2); - $case = type; - if ("RT"['$===']($case)) { - value = self.$parren_killer("" + "(0" + (num) + ")").$to_i(); - output = self.$get_torg_success_level(value); - ttype = "一般結果";} - else if ("IT"['$===']($case)) { - value = self.$parren_killer("" + "(0" + (num) + ")").$to_i(); - output = self.$get_torg_interaction_result_intimidate_test(value); - ttype = "威圧/威嚇";} - else if ("TT"['$===']($case)) { - value = self.$parren_killer("" + "(0" + (num) + ")").$to_i(); - output = self.$get_torg_interaction_result_taunt_trick(value); - ttype = "挑発/トリック";} - else if ("MT"['$===']($case)) { - value = self.$parren_killer("" + "(0" + (num) + ")").$to_i(); - output = self.$get_torg_interaction_result_maneuver(value); - ttype = "間合い";} - else if ("DT"['$===']($case)) { - value = self.$parren_killer("" + "(0" + (num) + ")").$to_i(); - if ($truthy(string['$=~'](/ODT/i))) { - - output = self.$get_torg_damage_ords(value); - ttype = "オーズダメージ"; - } else { - - output = self.$get_torg_damage_posibility(value); - ttype = "ポシビリティ能力者ダメージ"; - };} - else if ("BT"['$===']($case)) { - $b = self.$get_torg_bonus_text(num), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $b; - ttype = "ボーナス";}; - if ($truthy(ttype['$!='](""))) { - output = "" + (ttype) + "表[" + (value) + "] > " + (output)}; - return output; - }, $Torg_rollDiceCommand$7.$$arity = 1); - - Opal.def(self, '$get_torg_success_level', $Torg_get_torg_success_level$8 = function $$get_torg_success_level(value) { - var self = this, success_table = nil; - - - success_table = [[0, "ぎりぎり"], [1, "ふつう"], [3, "まあよい"], [7, "かなりよい"], [12, "すごい"]]; - return self.$get_torg_table_result(value, success_table); - }, $Torg_get_torg_success_level$8.$$arity = 1); - - Opal.def(self, '$get_torg_interaction_result_intimidate_test', $Torg_get_torg_interaction_result_intimidate_test$9 = function $$get_torg_interaction_result_intimidate_test(value) { - var self = this, interaction_results_table = nil; - - - interaction_results_table = [[0, "技能なし"], [5, "萎縮"], [10, "逆転負け"], [15, "モラル崩壊"], [17, "プレイヤーズコール"]]; - return self.$get_torg_table_result(value, interaction_results_table); - }, $Torg_get_torg_interaction_result_intimidate_test$9.$$arity = 1); - - Opal.def(self, '$get_torg_interaction_result_taunt_trick', $Torg_get_torg_interaction_result_taunt_trick$10 = function $$get_torg_interaction_result_taunt_trick(value) { - var self = this, interaction_results_table = nil; - - - interaction_results_table = [[0, "技能なし"], [5, "萎縮"], [10, "逆転負け"], [15, "高揚/逆転負け"], [17, "プレイヤーズコール"]]; - return self.$get_torg_table_result(value, interaction_results_table); - }, $Torg_get_torg_interaction_result_taunt_trick$10.$$arity = 1); - - Opal.def(self, '$get_torg_interaction_result_maneuver', $Torg_get_torg_interaction_result_maneuver$11 = function $$get_torg_interaction_result_maneuver(value) { - var self = this, interaction_results_table = nil; - - - interaction_results_table = [[0, "技能なし"], [5, "疲労"], [10, "萎縮/疲労"], [15, "逆転負け/疲労"], [17, "プレイヤーズコール"]]; - return self.$get_torg_table_result(value, interaction_results_table); - }, $Torg_get_torg_interaction_result_maneuver$11.$$arity = 1); - - Opal.def(self, '$get_torg_table_result', $Torg_get_torg_table_result$12 = function $$get_torg_table_result(value, table) { - var $$13, self = this, output = nil; - - - output = "1"; - (function(){var $brk = Opal.new_brk(); try {return $send(table, 'each', [], ($$13 = function(item){var self = $$13.$$s || this, item_index = nil; - - - - if (item == null) { - item = nil; - }; - item_index = item['$[]'](0); - if ($truthy($rb_gt(item_index, value))) { - - Opal.brk(nil, $brk)}; - return (output = item['$[]'](1));}, $$13.$$s = self, $$13.$$brk = $brk, $$13.$$arity = 1, $$13)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return output; - }, $Torg_get_torg_table_result$12.$$arity = 2); - - Opal.def(self, '$get_torg_damage_ords', $Torg_get_torg_damage_ords$14 = function $$get_torg_damage_ords(value) { - var self = this, damage_table_ords = nil; - - - damage_table_ords = [[0, "1"], [1, "O1"], [2, "K1"], [3, "O2"], [4, "O3"], [5, "K3"], [6, "転倒 K/O4"], [7, "転倒 K/O5"], [8, "1レベル負傷 K/O7"], [9, "1レベル負傷 K/O9"], [10, "1レベル負傷 K/O10"], [11, "2レベル負傷 K/O11"], [12, "2レベル負傷 KO12"], [13, "3レベル負傷 KO13"], [14, "3レベル負傷 KO14"], [15, "4レベル負傷 KO15"]]; - return self.$get_torg_damage(value, 4, "レベル負傷 KO15", damage_table_ords); - }, $Torg_get_torg_damage_ords$14.$$arity = 1); - - Opal.def(self, '$get_torg_damage_posibility', $Torg_get_torg_damage_posibility$15 = function $$get_torg_damage_posibility(value) { - var self = this, damage_table_posibility = nil; - - - damage_table_posibility = [[0, "1"], [1, "1"], [2, "O1"], [3, "K2"], [4, "2"], [5, "O2"], [6, "転倒 O2"], [7, "転倒 K2"], [8, "転倒 K2"], [9, "1レベル負傷 K3"], [10, "1レベル負傷 K4"], [11, "1レベル負傷 O4"], [12, "1レベル負傷 K5"], [13, "2レベル負傷 O4"], [14, "2レベル負傷 KO5"], [15, "3レベル負傷 KO5"]]; - return self.$get_torg_damage(value, 3, "レベル負傷 KO5", damage_table_posibility); - }, $Torg_get_torg_damage_posibility$15.$$arity = 1); - - Opal.def(self, '$get_torg_damage', $Torg_get_torg_damage$16 = function $$get_torg_damage(value, maxDamage, maxDamageString, damage_table) { - var self = this, table_max_value = nil, over_kill_damage = nil; - - - if ($truthy($rb_lt(value, 0))) { - return "1"}; - table_max_value = $rb_minus(damage_table.$length(), 1); - if ($truthy($rb_le(value, table_max_value))) { - return self.$get_torg_table_result(value, damage_table)}; - over_kill_damage = $rb_divide($rb_minus(value, table_max_value), 2).$to_i(); - return $rb_plus($rb_plus("", $rb_plus(over_kill_damage, maxDamage).$to_s()), maxDamageString); - }, $Torg_get_torg_damage$16.$$arity = 4); - - Opal.def(self, '$get_torg_bonus_text', $Torg_get_torg_bonus_text$17 = function $$get_torg_bonus_text(num) { - var self = this, val_arr = nil, value = nil, mod = nil, resultValue = nil, output = nil; - - - val_arr = num.$split(/\+/); - value = val_arr.$shift().$to_i(); - mod = self.$parren_killer("" + "(0" + (val_arr.$join("+")) + ")").$to_i(); - resultValue = self.$get_torg_bonus(value); - self.$debug("TORG BT resultValue", resultValue); - self.$debug("TORG BT mod", mod); - if (mod['$=='](0)) { - output = resultValue.$to_s() - } else { - - output = self.$getTorgBonusOutputTextWhenModDefined(value, resultValue, mod); - value = "" + (value) + "+" + (mod); - }; - return [output, value]; - }, $Torg_get_torg_bonus_text$17.$$arity = 1); - - Opal.def(self, '$getTorgBonusOutputTextWhenModDefined', $Torg_getTorgBonusOutputTextWhenModDefined$18 = function $$getTorgBonusOutputTextWhenModDefined(value, resultValue, mod) { - var self = this; - - - self.$debug("getTorgBonusOutputTextWhenModDefined value, mod", value, mod); - if ($truthy($rb_gt(mod, 0))) { - return "" + (resultValue) + "[" + (value) + "]+" + (mod) + " > " + ($rb_plus(resultValue, mod)) - } else { - - self.$debug("resultValue", resultValue); - self.$debug("mod", mod); - return "" + (resultValue) + "[" + (value) + "]" + (mod) + " > " + ($rb_plus(resultValue, mod)); - }; - }, $Torg_getTorgBonusOutputTextWhenModDefined$18.$$arity = 3); - return (Opal.def(self, '$get_torg_bonus', $Torg_get_torg_bonus$19 = function $$get_torg_bonus(value) { - var self = this, bonus_table = nil, bonus = nil, over_value_bonus = nil; - - - bonus_table = [[1, -12], [2, -10], [3, -8], [5, -5], [7, -2], [9, -1], [11, 0], [13, 1], [15, 2], [16, 3], [17, 4], [18, 5], [19, 6], [20, 7]]; - bonus = self.$get_torg_table_result(value, bonus_table); - if ($truthy($rb_gt(value, 20))) { - - over_value_bonus = $rb_plus($rb_divide($rb_minus(value, 21), 5).$to_i(), 1); - bonus = $rb_plus(bonus, over_value_bonus);}; - return bonus; - }, $Torg_get_torg_bonus$19.$$arity = 1), nil) && 'get_torg_bonus'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Torg1_5.js b/src/assets/dicebot/Torg1_5.js deleted file mode 100644 index 2699b8497..000000000 --- a/src/assets/dicebot/Torg1_5.js +++ /dev/null @@ -1,417 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["diceBot/Torg"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$gsub', '$last_match', '$torg_check', '$=~', '$debug', '$to_i', '$parren_killer', '$torg_dice', '$get_torg_bonus', '$>', '$+', '$to_s', '$!=', '$roll', '$shift', '$empty?', '$==', '$upcase', '$===', '$get_torg_success_level', '$get_torg_interaction_result_intimidate_test', '$get_torg_interaction_result_taunt_trick', '$get_torg_interaction_result_maneuver', '$get_torg_damage_ords', '$get_torg_damage_posibility', '$get_torg_bonus_text', '$get_torg_table_result', '$each', '$[]', '$get_torg_damage', '$<', '$-', '$length', '$<=', '$/', '$split', '$join', '$getTorgBonusOutputTextWhenModDefined']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Torg'); - - var $nesting = [self].concat($parent_nesting), $Torg_initialize$1, $Torg_changeText$2, $Torg_dice_command_xRn$4, $Torg_torg_check$5, $Torg_torg_dice$6, $Torg_rollDiceCommand$7, $Torg_get_torg_success_level$8, $Torg_get_torg_interaction_result_intimidate_test$9, $Torg_get_torg_interaction_result_taunt_trick$10, $Torg_get_torg_interaction_result_maneuver$11, $Torg_get_torg_table_result$12, $Torg_get_torg_damage_ords$14, $Torg_get_torg_damage_posibility$15, $Torg_get_torg_damage$16, $Torg_get_torg_bonus_text$17, $Torg_getTorgBonusOutputTextWhenModDefined$18, $Torg_get_torg_bonus$19; - - - Opal.const_set($nesting[0], 'ID', "TORG"); - Opal.const_set($nesting[0], 'NAME', "トーグ"); - Opal.const_set($nesting[0], 'SORT_KEY', "とおく"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定 (TGm)\n" + " TORG専用の判定コマンドです。\n" + " \"TG(技能基本値)\"でロールします。Rコマンドに読替されます。\n" + " 振り足しを自動で行い、20の出目が出たときには技能無し値も並記します。\n" + "・各種表 \"(表コマンド)(数値)\"で振ります。\n" + " ・一般結果表 成功度出力「RTx or RESULTx」\n" + " ・威圧/威嚇 対人行為結果表「ITx or INTIMIDATEx or TESTx」\n" + " ・挑発/トリック 対人行為結果表「TTx or TAUNTx or TRICKx or CTx」\n" + " ・間合い 対人行為結果表「MTx or MANEUVERx」\n" + " ・オーズ(一般人)ダメージ 「ODTx or ORDSx or ODAMAGEx」\n" + " ・ポシビリティー能力者ダメージ「DTx or DAMAGEx」\n" + " ・ボーナス表「BTx+y or BONUSx+y or TOTALx+y」 xは数値, yは技能基本値\n"); - self.$setPrefixes(["(TG.*|RT.*|Result.*|IT.*|Initimidate.*|TT.*|Taunt.*|Trick.*|CT.*|MT.*|Maneuver.*|ODT.*|ords.*|odamage.*|DT.*|damage.*|BT.*|bonus.*|total.*)"]); - - Opal.def(self, '$initialize', $Torg_initialize$1 = function $$initialize() { - var $iter = $Torg_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Torg_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Torg_initialize$1, false), $zuper, $iter); - return (self.sendMode = 2); - }, $Torg_initialize$1.$$arity = 0); - - Opal.def(self, '$changeText', $Torg_changeText$2 = function $$changeText(string) { - var $$3, self = this; - - - string = string.$gsub(/Result/i, "RT"); - string = string.$gsub(/(Intimidate|Test)/i, "IT"); - string = string.$gsub(/(Taunt|Trick|CT)/i, "TT"); - string = string.$gsub(/Maneuver/i, "MT"); - string = string.$gsub(/(ords|odamage)/i, "ODT"); - string = string.$gsub(/damage/i, "DT"); - string = string.$gsub(/(bonus|total)/i, "BT"); - string = $send(string, 'gsub', [/TG(\d+)/i], ($$3 = function(){var self = $$3.$$s || this; - - return "" + "1R20+" + ($$($nesting, 'Regexp').$last_match(1))}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - string = string.$gsub(/TG/i, "1R20"); - return string; - }, $Torg_changeText$2.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $Torg_dice_command_xRn$4 = function $$dice_command_xRn(string, nick_e) { - var self = this; - - return self.$torg_check(string, nick_e) - }, $Torg_dice_command_xRn$4.$$arity = 2); - - Opal.def(self, '$torg_check', $Torg_torg_check$5 = function $$torg_check(string, nick_e) { - var $a, $b, self = this, output = nil, mod = nil, skilled = nil, unskilled = nil, dice_str = nil, sk_bonus = nil; - - - output = "1"; - if ($truthy(/(^|\s)S?(1R20([+-]\d+)*)(\s|$)/i['$=~'](string))) { - } else { - return "1" - }; - string = $$($nesting, 'Regexp').$last_match(2); - mod = $$($nesting, 'Regexp').$last_match(3); - self.$debug(mod); - if ($truthy(mod)) { - mod = self.$parren_killer("" + "(0" + (mod) + ")").$to_i()}; - self.$debug(mod); - mod = mod.$to_i(); - $b = self.$torg_dice(), $a = Opal.to_ary($b), (skilled = ($a[0] == null ? nil : $a[0])), (unskilled = ($a[1] == null ? nil : $a[1])), (dice_str = ($a[2] == null ? nil : $a[2])), $b; - sk_bonus = self.$get_torg_bonus(skilled); - if ($truthy(mod)) { - if ($truthy($rb_gt(mod, 0))) { - output = "" + (sk_bonus) + "[" + (dice_str) + "]+" + (mod) - } else { - output = "" + (sk_bonus) + "[" + (dice_str) + "]" + (mod) - } - } else { - output = "" + (sk_bonus) + "[" + (dice_str) + "]" - }; - output = $rb_plus(output, $rb_plus(" > ", $rb_plus(sk_bonus, mod).$to_s())); - if ($truthy(skilled['$!='](unskilled))) { - output = $rb_plus(output, $rb_plus($rb_plus("(技能無", $rb_plus(self.$get_torg_bonus(unskilled), mod).$to_s()), ")"))}; - output = "" + (nick_e) + ": (" + (string) + ") > " + (output); - return output; - }, $Torg_torg_check$5.$$arity = 2); - - Opal.def(self, '$torg_dice', $Torg_torg_dice$6 = function $$torg_dice() { - var $a, self = this, isSkilledCritical = nil, isCritical = nil, skilled = nil, unskilled = nil, dice_str = nil, dummy = nil, dice_n = nil; - - - isSkilledCritical = true; - isCritical = true; - skilled = 0; - unskilled = 0; - dice_str = ""; - while ($truthy(isSkilledCritical)) { - - dummy = self.$roll(1, 20, 0); - dice_n = dummy.$shift(); - skilled = $rb_plus(skilled, dice_n); - if ($truthy(isCritical)) { - unskilled = $rb_plus(unskilled, dice_n)}; - if ($truthy(dice_str['$empty?']())) { - } else { - dice_str = $rb_plus(dice_str, ",") - }; - dice_str = $rb_plus(dice_str, dice_n.$to_s()); - if (dice_n['$=='](20)) { - isCritical = false - } else if ($truthy(dice_n['$!='](10))) { - - isSkilledCritical = false; - isCritical = false;}; - }; - return [skilled, unskilled, dice_str]; - }, $Torg_torg_dice$6.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Torg_rollDiceCommand$7 = function $$rollDiceCommand(command) { - var $a, $b, self = this, string = nil, output = nil, ttype = nil, value = nil, type = nil, num = nil, $case = nil; - - - string = command.$upcase(); - output = "1"; - ttype = ""; - value = 0; - if ($truthy(/([RITMDB]T)(\d+([\+\-]\d+)*)/i['$=~'](string))) { - } else { - return "1" - }; - type = $$($nesting, 'Regexp').$last_match(1); - num = $$($nesting, 'Regexp').$last_match(2); - $case = type; - if ("RT"['$===']($case)) { - value = self.$parren_killer("" + "(0" + (num) + ")").$to_i(); - output = self.$get_torg_success_level(value); - ttype = "一般結果";} - else if ("IT"['$===']($case)) { - value = self.$parren_killer("" + "(0" + (num) + ")").$to_i(); - output = self.$get_torg_interaction_result_intimidate_test(value); - ttype = "威圧/威嚇";} - else if ("TT"['$===']($case)) { - value = self.$parren_killer("" + "(0" + (num) + ")").$to_i(); - output = self.$get_torg_interaction_result_taunt_trick(value); - ttype = "挑発/トリック";} - else if ("MT"['$===']($case)) { - value = self.$parren_killer("" + "(0" + (num) + ")").$to_i(); - output = self.$get_torg_interaction_result_maneuver(value); - ttype = "間合い";} - else if ("DT"['$===']($case)) { - value = self.$parren_killer("" + "(0" + (num) + ")").$to_i(); - if ($truthy(string['$=~'](/ODT/i))) { - - output = self.$get_torg_damage_ords(value); - ttype = "オーズダメージ"; - } else { - - output = self.$get_torg_damage_posibility(value); - ttype = "ポシビリティ能力者ダメージ"; - };} - else if ("BT"['$===']($case)) { - $b = self.$get_torg_bonus_text(num), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $b; - ttype = "ボーナス";}; - if ($truthy(ttype['$!='](""))) { - output = "" + (ttype) + "表[" + (value) + "] > " + (output)}; - return output; - }, $Torg_rollDiceCommand$7.$$arity = 1); - - Opal.def(self, '$get_torg_success_level', $Torg_get_torg_success_level$8 = function $$get_torg_success_level(value) { - var self = this, success_table = nil; - - - success_table = [[0, "ぎりぎり"], [1, "ふつう"], [3, "まあよい"], [7, "かなりよい"], [12, "すごい"]]; - return self.$get_torg_table_result(value, success_table); - }, $Torg_get_torg_success_level$8.$$arity = 1); - - Opal.def(self, '$get_torg_interaction_result_intimidate_test', $Torg_get_torg_interaction_result_intimidate_test$9 = function $$get_torg_interaction_result_intimidate_test(value) { - var self = this, interaction_results_table = nil; - - - interaction_results_table = [[0, "技能なし"], [5, "萎縮"], [10, "逆転負け"], [15, "モラル崩壊"], [17, "プレイヤーズコール"]]; - return self.$get_torg_table_result(value, interaction_results_table); - }, $Torg_get_torg_interaction_result_intimidate_test$9.$$arity = 1); - - Opal.def(self, '$get_torg_interaction_result_taunt_trick', $Torg_get_torg_interaction_result_taunt_trick$10 = function $$get_torg_interaction_result_taunt_trick(value) { - var self = this, interaction_results_table = nil; - - - interaction_results_table = [[0, "技能なし"], [5, "萎縮"], [10, "逆転負け"], [15, "高揚/逆転負け"], [17, "プレイヤーズコール"]]; - return self.$get_torg_table_result(value, interaction_results_table); - }, $Torg_get_torg_interaction_result_taunt_trick$10.$$arity = 1); - - Opal.def(self, '$get_torg_interaction_result_maneuver', $Torg_get_torg_interaction_result_maneuver$11 = function $$get_torg_interaction_result_maneuver(value) { - var self = this, interaction_results_table = nil; - - - interaction_results_table = [[0, "技能なし"], [5, "疲労"], [10, "萎縮/疲労"], [15, "逆転負け/疲労"], [17, "プレイヤーズコール"]]; - return self.$get_torg_table_result(value, interaction_results_table); - }, $Torg_get_torg_interaction_result_maneuver$11.$$arity = 1); - - Opal.def(self, '$get_torg_table_result', $Torg_get_torg_table_result$12 = function $$get_torg_table_result(value, table) { - var $$13, self = this, output = nil; - - - output = "1"; - (function(){var $brk = Opal.new_brk(); try {return $send(table, 'each', [], ($$13 = function(item){var self = $$13.$$s || this, item_index = nil; - - - - if (item == null) { - item = nil; - }; - item_index = item['$[]'](0); - if ($truthy($rb_gt(item_index, value))) { - - Opal.brk(nil, $brk)}; - return (output = item['$[]'](1));}, $$13.$$s = self, $$13.$$brk = $brk, $$13.$$arity = 1, $$13)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return output; - }, $Torg_get_torg_table_result$12.$$arity = 2); - - Opal.def(self, '$get_torg_damage_ords', $Torg_get_torg_damage_ords$14 = function $$get_torg_damage_ords(value) { - var self = this, damage_table_ords = nil; - - - damage_table_ords = [[0, "1"], [1, "O1"], [2, "K1"], [3, "O2"], [4, "O3"], [5, "K3"], [6, "転倒 K/O4"], [7, "転倒 K/O5"], [8, "1レベル負傷 K/O7"], [9, "1レベル負傷 K/O9"], [10, "1レベル負傷 K/O10"], [11, "2レベル負傷 K/O11"], [12, "2レベル負傷 KO12"], [13, "3レベル負傷 KO13"], [14, "3レベル負傷 KO14"], [15, "4レベル負傷 KO15"]]; - return self.$get_torg_damage(value, 4, "レベル負傷 KO15", damage_table_ords); - }, $Torg_get_torg_damage_ords$14.$$arity = 1); - - Opal.def(self, '$get_torg_damage_posibility', $Torg_get_torg_damage_posibility$15 = function $$get_torg_damage_posibility(value) { - var self = this, damage_table_posibility = nil; - - - damage_table_posibility = [[0, "1"], [1, "1"], [2, "O1"], [3, "K2"], [4, "2"], [5, "O2"], [6, "転倒 O2"], [7, "転倒 K2"], [8, "転倒 K2"], [9, "1レベル負傷 K3"], [10, "1レベル負傷 K4"], [11, "1レベル負傷 O4"], [12, "1レベル負傷 K5"], [13, "2レベル負傷 O4"], [14, "2レベル負傷 KO5"], [15, "3レベル負傷 KO5"]]; - return self.$get_torg_damage(value, 3, "レベル負傷 KO5", damage_table_posibility); - }, $Torg_get_torg_damage_posibility$15.$$arity = 1); - - Opal.def(self, '$get_torg_damage', $Torg_get_torg_damage$16 = function $$get_torg_damage(value, maxDamage, maxDamageString, damage_table) { - var self = this, table_max_value = nil, over_kill_damage = nil; - - - if ($truthy($rb_lt(value, 0))) { - return "1"}; - table_max_value = $rb_minus(damage_table.$length(), 1); - if ($truthy($rb_le(value, table_max_value))) { - return self.$get_torg_table_result(value, damage_table)}; - over_kill_damage = $rb_divide($rb_minus(value, table_max_value), 2).$to_i(); - return $rb_plus($rb_plus("", $rb_plus(over_kill_damage, maxDamage).$to_s()), maxDamageString); - }, $Torg_get_torg_damage$16.$$arity = 4); - - Opal.def(self, '$get_torg_bonus_text', $Torg_get_torg_bonus_text$17 = function $$get_torg_bonus_text(num) { - var self = this, val_arr = nil, value = nil, mod = nil, resultValue = nil, output = nil; - - - val_arr = num.$split(/\+/); - value = val_arr.$shift().$to_i(); - mod = self.$parren_killer("" + "(0" + (val_arr.$join("+")) + ")").$to_i(); - resultValue = self.$get_torg_bonus(value); - self.$debug("TORG BT resultValue", resultValue); - self.$debug("TORG BT mod", mod); - if (mod['$=='](0)) { - output = resultValue.$to_s() - } else { - - output = self.$getTorgBonusOutputTextWhenModDefined(value, resultValue, mod); - value = "" + (value) + "+" + (mod); - }; - return [output, value]; - }, $Torg_get_torg_bonus_text$17.$$arity = 1); - - Opal.def(self, '$getTorgBonusOutputTextWhenModDefined', $Torg_getTorgBonusOutputTextWhenModDefined$18 = function $$getTorgBonusOutputTextWhenModDefined(value, resultValue, mod) { - var self = this; - - - self.$debug("getTorgBonusOutputTextWhenModDefined value, mod", value, mod); - if ($truthy($rb_gt(mod, 0))) { - return "" + (resultValue) + "[" + (value) + "]+" + (mod) + " > " + ($rb_plus(resultValue, mod)) - } else { - - self.$debug("resultValue", resultValue); - self.$debug("mod", mod); - return "" + (resultValue) + "[" + (value) + "]" + (mod) + " > " + ($rb_plus(resultValue, mod)); - }; - }, $Torg_getTorgBonusOutputTextWhenModDefined$18.$$arity = 3); - return (Opal.def(self, '$get_torg_bonus', $Torg_get_torg_bonus$19 = function $$get_torg_bonus(value) { - var self = this, bonus_table = nil, bonus = nil, over_value_bonus = nil; - - - bonus_table = [[1, -12], [2, -10], [3, -8], [5, -5], [7, -2], [9, -1], [11, 0], [13, 1], [15, 2], [16, 3], [17, 4], [18, 5], [19, 6], [20, 7]]; - bonus = self.$get_torg_table_result(value, bonus_table); - if ($truthy($rb_gt(value, 20))) { - - over_value_bonus = $rb_plus($rb_divide($rb_minus(value, 21), 5).$to_i(), 1); - bonus = $rb_plus(bonus, over_value_bonus);}; - return bonus; - }, $Torg_get_torg_bonus$19.$$arity = 1), nil) && 'get_torg_bonus'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$require', '$setPrefixes', '$prefixes', '$get_torg_table_result', '$get_torg_damage', '$<', '$-', '$length', '$<=', '$to_i', '$/', '$+', '$*']); - - self.$require("diceBot/Torg"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Torg1_5'); - - var $nesting = [self].concat($parent_nesting), $Torg1_5_get_torg_success_level$1, $Torg1_5_get_torg_interaction_result_intimidate_test$2, $Torg1_5_get_torg_interaction_result_taunt_trick$3, $Torg1_5_get_torg_interaction_result_maneuver$4, $Torg1_5_get_torg_damage_ords$5, $Torg1_5_get_torg_damage_posibility$6, $Torg1_5_get_torg_damage$7; - - - Opal.const_set($nesting[0], 'ID', "TORG1.5"); - Opal.const_set($nesting[0], 'NAME', "トーグ1.5版"); - Opal.const_set($nesting[0], 'SORT_KEY', "とおく1.5"); - self.$setPrefixes($$($nesting, 'Torg').$prefixes()); - - Opal.def(self, '$get_torg_success_level', $Torg1_5_get_torg_success_level$1 = function $$get_torg_success_level(value) { - var self = this, success_table = nil; - - - success_table = [[0, "ぎりぎり"], [1, "ふつう"], [3, "まあよい"], [7, "かなりよい"], [12, "すごい"]]; - return self.$get_torg_table_result(value, success_table); - }, $Torg1_5_get_torg_success_level$1.$$arity = 1); - - Opal.def(self, '$get_torg_interaction_result_intimidate_test', $Torg1_5_get_torg_interaction_result_intimidate_test$2 = function $$get_torg_interaction_result_intimidate_test(value) { - var self = this, interaction_results_table = nil; - - - interaction_results_table = [[0, "萎縮"], [5, "技能なし"], [10, "逆転負け"], [15, "モラル崩壊"], [17, "プレイヤーズコール"]]; - return self.$get_torg_table_result(value, interaction_results_table); - }, $Torg1_5_get_torg_interaction_result_intimidate_test$2.$$arity = 1); - - Opal.def(self, '$get_torg_interaction_result_taunt_trick', $Torg1_5_get_torg_interaction_result_taunt_trick$3 = function $$get_torg_interaction_result_taunt_trick(value) { - var self = this, interaction_results_table = nil; - - - interaction_results_table = [[0, "萎縮"], [5, "技能なし"], [10, "逆転負け"], [15, "高揚/逆転負け"], [17, "プレイヤーズコール"]]; - return self.$get_torg_table_result(value, interaction_results_table); - }, $Torg1_5_get_torg_interaction_result_taunt_trick$3.$$arity = 1); - - Opal.def(self, '$get_torg_interaction_result_maneuver', $Torg1_5_get_torg_interaction_result_maneuver$4 = function $$get_torg_interaction_result_maneuver(value) { - var self = this, interaction_results_table = nil; - - - interaction_results_table = [[0, "疲労"], [5, "萎縮"], [10, "技能なし"], [15, "逆転負け/疲労"], [17, "プレイヤーズコール"]]; - return self.$get_torg_table_result(value, interaction_results_table); - }, $Torg1_5_get_torg_interaction_result_maneuver$4.$$arity = 1); - - Opal.def(self, '$get_torg_damage_ords', $Torg1_5_get_torg_damage_ords$5 = function $$get_torg_damage_ords(value) { - var self = this, damage_table_ords = nil; - - - damage_table_ords = [[0, "1"], [1, "O1"], [2, "K1"], [3, "O2"], [4, "K2"], [5, "転倒 O3"], [6, "転倒 K3"], [7, "転倒 K/O4"], [8, "1レベル負傷 KO4"], [9, "1レベル負傷 K/O5"], [10, "1レベル負傷 KO5"], [11, "2レベル負傷 K/O6"], [12, "2レベル負傷 KO6"], [13, "3レベル負傷 K/O7"], [14, "3レベル負傷 KO7"], [15, "4レベル負傷 KO8"]]; - return self.$get_torg_damage(value, 4, 8, damage_table_ords); - }, $Torg1_5_get_torg_damage_ords$5.$$arity = 1); - - Opal.def(self, '$get_torg_damage_posibility', $Torg1_5_get_torg_damage_posibility$6 = function $$get_torg_damage_posibility(value) { - var self = this, damage_table_posibility = nil; - - - damage_table_posibility = [[0, "1"], [1, "1"], [2, "O1"], [3, "K1"], [4, "2"], [5, "O2"], [6, "転倒 K2"], [7, "転倒 O3"], [8, "転倒 K3"], [9, "転倒 K/O3"], [10, "1レベル負傷 K/O4"], [11, "1レベル負傷 K/O4"], [12, "1レベル負傷 KO4"], [13, "2レベル負傷 K/O5"], [14, "2レベル負傷 KO5"], [15, "3レベル負傷 KO5"]]; - return self.$get_torg_damage(value, 3, 5, damage_table_posibility); - }, $Torg1_5_get_torg_damage_posibility$6.$$arity = 1); - return (Opal.def(self, '$get_torg_damage', $Torg1_5_get_torg_damage$7 = function $$get_torg_damage(value, max_damage, max_shock, damage_table) { - var self = this, table_max_value = nil, over_kill_value = nil, over_kill_damage = nil, over_kill_shock = nil; - - - if ($truthy($rb_lt(value, 0))) { - return "1"}; - table_max_value = $rb_minus(damage_table.$length(), 1); - if ($truthy($rb_le(value, table_max_value))) { - return self.$get_torg_table_result(value, damage_table)}; - over_kill_value = $rb_divide($rb_minus(value, table_max_value), 2).$to_i(); - over_kill_damage = $rb_plus(max_damage, $rb_times(over_kill_value, 1)); - over_kill_shock = $rb_plus(max_shock, $rb_times(over_kill_value, 1)); - return "" + (over_kill_damage) + "レベル負傷 KO" + (over_kill_shock); - }, $Torg1_5_get_torg_damage$7.$$arity = 4), nil) && 'get_torg_damage'; - })($nesting[0], $$($nesting, 'Torg'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/TorgEternity.js b/src/assets/dicebot/TorgEternity.js deleted file mode 100644 index 20a7a676b..000000000 --- a/src/assets/dicebot/TorgEternity.js +++ /dev/null @@ -1,439 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$analyzeDiceCommandResultMethod', '$gsub', '$last_match', '$torg_check', '$match', '$[]', '$debug', '$to_i', '$parren_killer', '$torg_eternity_dice', '$get_torg_eternity_bonus', '$>', '$+', '$to_s', '$!=', '$!', '$nil?', '$==', '$format', '$get_torg_eternity_modifier', '$<=', '$get_torg_eternity_damage_bonus_dice', '$<', '$get_torg_eternity_success_level', '$get_torg_eternity_damage_result', '$empty?', '$each', '$roll', '$shift', '$&', '$-', '$get_torg_eternity_table_result', '$/']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'TorgEternity'); - - var $nesting = [self].concat($parent_nesting), $TorgEternity_initialize$1, $TorgEternity_rollDiceCommand$2, $TorgEternity_changeText$3, $TorgEternity_dice_command_xRn$5, $TorgEternity_torg_check$6, $TorgEternity_getRolld20DiceCommandResult$7, $TorgEternity_getUpRollDiceCommandResult$8, $TorgEternity_getPossibilityRollDiceCommandResult$9, $TorgEternity_getBonusDamageDiceCommandResult$10, $TorgEternity_getSuccessLevelDiceCommandResult$11, $TorgEternity_getDamageResultDiceCommandResult$12, $TorgEternity_getRollBonusDiceCommandResult$13, $TorgEternity_get_torg_eternity_table_result$14, $TorgEternity_get_torg_eternity_modifier$16, $TorgEternity_torg_eternity_dice$17, $TorgEternity_get_torg_eternity_damage_bonus_dice$18, $TorgEternity_get_torg_eternity_success_level$19, $TorgEternity_get_torg_eternity_damage_result$20, $TorgEternity_get_torg_eternity_bonus$21; - - - Opal.const_set($nesting[0], 'ID', "TorgEternity"); - Opal.const_set($nesting[0], 'NAME', "TORG Eternity"); - Opal.const_set($nesting[0], 'SORT_KEY', "とおくえたあにてい"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + " ・TG\n" + "  \"TG[m]\"で1d20をロールします。[]内は省略可能。\n" + "  mは技能基本値を入れて下さい。Rコマンドに読替されます。\n" + "  振り足しを自動で行い、20の出目が出たときには技能無し値も並記します。\n" + "  (TORGダイスボットと同じ挙動をするコマンドです。ロールボーナスの読み替えのみ、Eternity版となります)\n" + " ・TE\n" + "  \"TE\"で1d20をロールします。\n" + "  振り足しを自動で行い、20の出目が出たときには技能無し値も並記します。\n" + "  出目1の時には「Mishap! 自動失敗!」と出力されます。\n" + " ・UP\n" + "  \"UP\"で高揚状態のロール(通常の1d20に加え、1d20を追加で振り足し)を行います。\n" + "  各ロールでの振り足しを自動で行い、20の出目が出たときには技能無し値も並記します。\n" + "  一投目で出目1の時には「Mishap! 自動失敗!」と出力され、二投目は行われません。\n" + " ・POS\n" + "  \"POSm\"で、ポシビリティ使用による1d20のロールを行います。\n" + "  mはポシビリティを使用する前のロール結果を入れて下さい。\n" + "  出目が10未満の場合は、10への読み替えが行われます。\n" + "  また、振り足しを自動で行い、20の出目が出たときには技能無し値も並記します。\n" + "・ボーナスダメージロール\n" + " \"xBD[+y]\"でロールします。[]内は省略可能。\n" + " xはダメージダイス数。yはダメージ基本値 or 式を入れて下さい。\n" + " xは1以上が必要です。0だとエラーが出力されます。マイナス値はコマンドとして認識されません。\n" + " 振り足し処理は自動で行われます。(振り足し発生時の目は、「5∞」と出力されます)\n" + "・各種表\n" + " \"(表コマンド)(数値)\"で振ります。\n" + " ・成功レベル表「RTx or RESULTx」\n" + " ・ダメージ結果表「DTx or DAMAGEx」\n" + " ・ロールボーナス表「BTx+y or BONUSx+y or TOTALx+y」 xは数値, yは技能基本値\n"); - self.$setPrefixes(["(TE.*|UP.*|POS.*|\\d+BD.*|TG.*|RT.*|Result.*|DT.*|damage.*|BT.*|bonus.*|total.*)"]); - - Opal.def(self, '$initialize', $TorgEternity_initialize$1 = function $$initialize() { - var $iter = $TorgEternity_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $TorgEternity_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $TorgEternity_initialize$1, false), $zuper, $iter); - return (self.sendMode = 2); - }, $TorgEternity_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $TorgEternity_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this; - - return self.$analyzeDiceCommandResultMethod(command) - }, $TorgEternity_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$changeText', $TorgEternity_changeText$3 = function $$changeText(string) { - var $$4, self = this; - - - string = $send(string, 'gsub', [/TG(\d+)/i], ($$4 = function(){var self = $$4.$$s || this; - - return "" + "1R20+" + ($$($nesting, 'Regexp').$last_match(1))}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - string = string.$gsub(/TG/i, "1R20"); - return string; - }, $TorgEternity_changeText$3.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $TorgEternity_dice_command_xRn$5 = function $$dice_command_xRn(string, nick_e) { - var self = this; - - return self.$torg_check(string, nick_e) - }, $TorgEternity_dice_command_xRn$5.$$arity = 2); - - Opal.def(self, '$torg_check', $TorgEternity_torg_check$6 = function $$torg_check(string, nick_e) { - var $a, $b, self = this, m = nil, mod = nil, skilled = nil, unskilled = nil, dice_str = nil, sk_bonus = nil, output = nil; - - - m = /(^|\s)S?(1R20(([+-]\d+)*))(\s|$)/i.$match(string); - if ($truthy(m)) { - } else { - return nil - }; - string = m['$[]'](2); - mod = m['$[]'](3); - self.$debug(mod); - if ($truthy(mod)) { - mod = self.$parren_killer("" + "(0" + (mod) + ")").$to_i()}; - self.$debug(mod); - mod = mod.$to_i(); - $b = self.$torg_eternity_dice(false, false), $a = Opal.to_ary($b), (skilled = ($a[0] == null ? nil : $a[0])), (unskilled = ($a[1] == null ? nil : $a[1])), (dice_str = ($a[2] == null ? nil : $a[2])), $b; - sk_bonus = self.$get_torg_eternity_bonus(skilled); - if ($truthy(mod)) { - if ($truthy($rb_gt(mod, 0))) { - output = "" + (sk_bonus) + "[" + (dice_str) + "]+" + (mod) - } else { - output = "" + (sk_bonus) + "[" + (dice_str) + "]" + (mod) - } - } else { - output = "" + (sk_bonus) + "[" + (dice_str) + "]" - }; - output = $rb_plus(output, $rb_plus(" > ", $rb_plus(sk_bonus, mod).$to_s())); - if ($truthy(skilled['$!='](unskilled))) { - output = $rb_plus(output, $rb_plus($rb_plus("(技能無", $rb_plus(self.$get_torg_eternity_bonus(unskilled), mod).$to_s()), ")"))}; - output = "" + (nick_e) + ": (" + (string) + ") > " + (output); - return output; - }, $TorgEternity_torg_check$6.$$arity = 2); - - Opal.def(self, '$getRolld20DiceCommandResult', $TorgEternity_getRolld20DiceCommandResult$7 = function $$getRolld20DiceCommandResult(command) { - var $a, $b, self = this, m = nil, secret = nil, skilled = nil, unskilled = nil, dice_str = nil, mishap = nil, output = nil, value_skilled = nil, value_unskilled = nil; - - - self.$debug("Torg Eternity Dice Roll Command ? ", command); - m = /(^|\s)(S)?(TE)/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - secret = m['$[]'](2)['$nil?']()['$!'](); - $b = self.$torg_eternity_dice(false, true), $a = Opal.to_ary($b), (skilled = ($a[0] == null ? nil : $a[0])), (unskilled = ($a[1] == null ? nil : $a[1])), (dice_str = ($a[2] == null ? nil : $a[2])), (mishap = ($a[3] == null ? nil : $a[3])), $b; - if (mishap['$=='](1)) { - output = "" + "d20ロール(通常) > 1d20[" + (dice_str) + "] > Mishap! 絶対失敗!" - } else { - - value_skilled = self.$format("%+d", self.$get_torg_eternity_bonus(skilled)); - if ($truthy(skilled['$!='](unskilled))) { - - value_unskilled = self.$format("%+d", self.$get_torg_eternity_bonus(unskilled)); - output = "" + "d20ロール(通常) > 1d20[" + (dice_str) + "] > " + (value_skilled) + "[" + (skilled) + "](技能有) / " + (value_unskilled) + "[" + (unskilled) + "](技能無)"; - } else { - output = "" + "d20ロール(通常) > 1d20[" + (dice_str) + "] > " + (value_skilled) + "[" + (skilled) + "]" - }; - }; - self.$debug(output, secret); - return [output, secret]; - }, $TorgEternity_getRolld20DiceCommandResult$7.$$arity = 1); - - Opal.def(self, '$getUpRollDiceCommandResult', $TorgEternity_getUpRollDiceCommandResult$8 = function $$getUpRollDiceCommandResult(command) { - var $a, $b, self = this, m = nil, secret = nil, skilled1 = nil, unskilled1 = nil, dice_str1 = nil, mishap = nil, output = nil, skilled2 = nil, unskilled2 = nil, dice_str2 = nil, subtotal_skilled = nil, subtotal_unskilled = nil, value_skilled = nil, value_unskilled = nil; - - - self.$debug("Torg Eternity Dice Roll ( UP ) Command ? ", command); - m = /(^|\s)(S)?(UP)/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - secret = m['$[]'](2)['$nil?']()['$!'](); - $b = self.$torg_eternity_dice(false, true), $a = Opal.to_ary($b), (skilled1 = ($a[0] == null ? nil : $a[0])), (unskilled1 = ($a[1] == null ? nil : $a[1])), (dice_str1 = ($a[2] == null ? nil : $a[2])), (mishap = ($a[3] == null ? nil : $a[3])), $b; - if (mishap['$=='](1)) { - output = "" + "d20ロール(高揚) > 1d20[" + (dice_str1) + "] > Mishap! 絶対失敗!" - } else { - - $b = self.$torg_eternity_dice(false, false), $a = Opal.to_ary($b), (skilled2 = ($a[0] == null ? nil : $a[0])), (unskilled2 = ($a[1] == null ? nil : $a[1])), (dice_str2 = ($a[2] == null ? nil : $a[2])), $b; - subtotal_skilled = $rb_plus(skilled1, skilled2); - subtotal_unskilled = $rb_plus(unskilled1, unskilled2); - value_skilled = self.$format("%+d", self.$get_torg_eternity_bonus(subtotal_skilled)); - if ($truthy(subtotal_skilled['$!='](subtotal_unskilled))) { - - value_unskilled = self.$format("%+d", self.$get_torg_eternity_bonus(subtotal_unskilled)); - output = "" + "d20ロール(高揚) > 1d20[" + (dice_str1) + "] + 1d20[" + (dice_str2) + "] > " + (value_skilled) + "[" + (subtotal_skilled) + "](技能有) / " + (value_unskilled) + "[" + (subtotal_unskilled) + "](技能無)"; - } else { - output = "" + "d20ロール(高揚) > 1d20[" + (dice_str1) + "] + 1d20[" + (dice_str2) + "] > " + (value_skilled) + "[" + (subtotal_skilled) + "]" - }; - }; - self.$debug(output, secret); - return [output, secret]; - }, $TorgEternity_getUpRollDiceCommandResult$8.$$arity = 1); - - Opal.def(self, '$getPossibilityRollDiceCommandResult', $TorgEternity_getPossibilityRollDiceCommandResult$9 = function $$getPossibilityRollDiceCommandResult(command) { - var $a, $b, self = this, m = nil, secret = nil, output_modifier = nil, skilled = nil, unskilled = nil, dice_str = nil, subtotal_skilled = nil, subtotal_unskilled = nil, value_skilled = nil, value_unskilled = nil, output = nil; - - - self.$debug("Torg Eternity Possibility Roll Command ? ", command); - m = /(^|\s)(S)?(POS)((\d+)(\+\d+)?)/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - secret = m['$[]'](2)['$nil?']()['$!'](); - output_modifier = self.$parren_killer("" + "(0" + (m['$[]'](4)) + ")").$to_i(); - $b = self.$torg_eternity_dice(true, false), $a = Opal.to_ary($b), (skilled = ($a[0] == null ? nil : $a[0])), (unskilled = ($a[1] == null ? nil : $a[1])), (dice_str = ($a[2] == null ? nil : $a[2])), $b; - subtotal_skilled = $rb_plus(skilled, output_modifier); - subtotal_unskilled = $rb_plus(unskilled, output_modifier); - value_skilled = self.$format("%+d", self.$get_torg_eternity_bonus(subtotal_skilled)); - if ($truthy(subtotal_skilled['$!='](subtotal_unskilled))) { - - value_unskilled = self.$format("%+d", self.$get_torg_eternity_bonus(subtotal_unskilled)); - output = "" + "d20ロール(ポシビリティ) > " + (output_modifier) + "+1d20[" + (dice_str) + "] > " + (value_skilled) + "[" + (subtotal_skilled) + "](技能有) / " + (value_unskilled) + "[" + (subtotal_unskilled) + "](技能無)"; - } else { - output = "" + "d20ロール(ポシビリティ) > " + (output_modifier) + "+1d20[" + (dice_str) + "] > " + (value_skilled) + "[" + (subtotal_skilled) + "]" - }; - self.$debug(output, secret); - return [output, secret]; - }, $TorgEternity_getPossibilityRollDiceCommandResult$9.$$arity = 1); - - Opal.def(self, '$getBonusDamageDiceCommandResult', $TorgEternity_getBonusDamageDiceCommandResult$10 = function $$getBonusDamageDiceCommandResult(command) { - var $a, $b, self = this, m = nil, number_bonus_die = nil, value_modifier = nil, output_modifier = nil, output = nil, value_roll = nil, output_roll = nil, output_value = nil; - - - self.$debug("TorgEternity Bonus Damage Roll Command ? ", command); - m = /(\d+)(BD)(([\+\-]\d+)*)/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - number_bonus_die = m['$[]'](1).$to_i(); - $b = self.$get_torg_eternity_modifier(m['$[]'](3)), $a = Opal.to_ary($b), (value_modifier = ($a[0] == null ? nil : $a[0])), (output_modifier = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy($rb_le(number_bonus_die, 0))) { - output = "エラーです。xBD (x≧1) として下さい" - } else { - - $b = self.$get_torg_eternity_damage_bonus_dice(number_bonus_die), $a = Opal.to_ary($b), (value_roll = ($a[0] == null ? nil : $a[0])), (output_roll = ($a[1] == null ? nil : $a[1])), $b; - output_value = $rb_plus(value_roll, value_modifier); - output = "" + "ボーナスダメージロール(" + (number_bonus_die) + "BD" + (output_modifier) + ") > " + (value_roll) + "[" + (output_roll) + "]" + (output_modifier) + " > " + (output_value) + "ダメージ"; - }; - return output; - }, $TorgEternity_getBonusDamageDiceCommandResult$10.$$arity = 1); - - Opal.def(self, '$getSuccessLevelDiceCommandResult', $TorgEternity_getSuccessLevelDiceCommandResult$11 = function $$getSuccessLevelDiceCommandResult(command) { - var self = this, m = nil, value = nil, output = nil; - - - self.$debug("TorgEternity Success Level Table Command ? ", command); - m = /(RT|Result)(\-*\d+([\+\-]\d+)*)/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - value = self.$parren_killer("" + "(0" + (m['$[]'](2)) + ")").$to_i(); - self.$debug(value); - if ($truthy($rb_lt(value, 0))) { - output = "Failure." - } else { - output = self.$get_torg_eternity_success_level(value) - }; - output = "" + "成功レベル表[" + (value) + "] > " + (output); - self.$debug(output); - return output; - }, $TorgEternity_getSuccessLevelDiceCommandResult$11.$$arity = 1); - - Opal.def(self, '$getDamageResultDiceCommandResult', $TorgEternity_getDamageResultDiceCommandResult$12 = function $$getDamageResultDiceCommandResult(command) { - var self = this, m = nil, value = nil, output = nil; - - - self.$debug("TorgEternity Damage Result Table Command ? ", command); - m = /(DT|Damage)(\-*\d+([\+\-]\d+)*)/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - value = self.$parren_killer("" + "(0" + (m['$[]'](2)) + ")").$to_i(); - self.$debug(value); - output = self.$get_torg_eternity_damage_result(value); - output = "" + "ダメージ結果表[" + (value) + "] > " + (output); - self.$debug(output); - return output; - }, $TorgEternity_getDamageResultDiceCommandResult$12.$$arity = 1); - - Opal.def(self, '$getRollBonusDiceCommandResult', $TorgEternity_getRollBonusDiceCommandResult$13 = function $$getRollBonusDiceCommandResult(command) { - var $a, $b, self = this, m = nil, value_roll = nil, output_bonus = nil, value_modifier = nil, output_modifier = nil, output = nil, value_result = nil; - - - self.$debug("TorgEternity Roll Bonus Table Command ? ", command); - m = /(BT|Bonus)(\d+)(([\+\-]\d+)*)/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - value_roll = m['$[]'](2).$to_i(); - output_bonus = self.$get_torg_eternity_bonus(value_roll); - self.$debug(output_bonus); - $b = self.$get_torg_eternity_modifier(m['$[]'](3)), $a = Opal.to_ary($b), (value_modifier = ($a[0] == null ? nil : $a[0])), (output_modifier = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy($rb_le(value_roll, 1))) { - output = "" + "ロールボーナス表[" + (value_roll) + "] > Mishap!!" - } else if ($truthy(output_modifier['$empty?']())) { - output = "" + "ロールボーナス表[" + (value_roll) + "] > " + (output_bonus) - } else { - - value_result = $rb_plus(output_bonus.$to_i(), value_modifier); - self.$debug(value_result); - output = "" + "ロールボーナス表[" + (value_roll) + "]" + (output_modifier) + " > " + (output_bonus) + "[" + (value_roll) + "]" + (output_modifier) + " > " + (value_result); - }; - self.$debug(output); - return output; - }, $TorgEternity_getRollBonusDiceCommandResult$13.$$arity = 1); - - Opal.def(self, '$get_torg_eternity_table_result', $TorgEternity_get_torg_eternity_table_result$14 = function $$get_torg_eternity_table_result(value, table) { - var $$15, self = this, output = nil; - - - output = nil; - (function(){var $brk = Opal.new_brk(); try {return $send(table, 'each', [], ($$15 = function(item){var self = $$15.$$s || this, item_index = nil; - - - - if (item == null) { - item = nil; - }; - item_index = item['$[]'](0); - if ($truthy($rb_gt(item_index, value))) { - - Opal.brk(nil, $brk)}; - return (output = item['$[]'](1));}, $$15.$$s = self, $$15.$$brk = $brk, $$15.$$arity = 1, $$15)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return output; - }, $TorgEternity_get_torg_eternity_table_result$14.$$arity = 2); - - Opal.def(self, '$get_torg_eternity_modifier', $TorgEternity_get_torg_eternity_modifier$16 = function $$get_torg_eternity_modifier(string_modifier) { - var self = this, value_modifier = nil, output_modifier = nil; - - - self.$debug("" + "modifier check : " + (string_modifier)); - if (string_modifier['$==']("")) { - - value_modifier = 0; - output_modifier = ""; - } else { - - value_modifier = self.$parren_killer("" + "(0" + (string_modifier) + ")").$to_i(); - output_modifier = self.$format("%+d", value_modifier); - }; - self.$debug(value_modifier); - self.$debug(output_modifier); - return [value_modifier, output_modifier]; - }, $TorgEternity_get_torg_eternity_modifier$16.$$arity = 1); - - Opal.def(self, '$torg_eternity_dice', $TorgEternity_torg_eternity_dice$17 = function $$torg_eternity_dice(check_pos, check_mishap) { - var $a, self = this, isSkilledCritical = nil, isCritical = nil, skilled = nil, unskilled = nil, mishap = nil, dice_str = nil, dummy = nil, dice_n = nil, dice_str_now = nil; - - - isSkilledCritical = true; - isCritical = true; - skilled = 0; - unskilled = 0; - mishap = 0; - dice_str = ""; - while ($truthy(isSkilledCritical)) { - - if ($truthy(dice_str['$empty?']())) { - } else { - dice_str = $rb_plus(dice_str, ",") - }; - dummy = self.$roll(1, 20, 0); - dice_n = dummy.$shift(); - if ($truthy(check_pos)) { - - if ($truthy($rb_lt(dice_n, 10))) { - - dice_str_now = "" + (dice_n) + "→10"; - dice_n = 10; - isSkilledCritical = false; - } else { - dice_str_now = dice_n.$to_s() - }; - dice_str = $rb_plus(dice_str, dice_str_now); - } else { - dice_str = $rb_plus(dice_str, dice_n.$to_s()) - }; - skilled = $rb_plus(skilled, dice_n); - if ($truthy(isCritical)) { - unskilled = $rb_plus(unskilled, dice_n)}; - if (dice_n['$=='](20)) { - isCritical = false - } else if ($truthy(dice_n['$!='](10))) { - - isSkilledCritical = false; - isCritical = false; - if ($truthy(check_mishap['$&'](dice_n['$=='](1)))) { - mishap = 1};}; - check_pos = false; - check_mishap = false; - }; - return [skilled, unskilled, dice_str, mishap]; - }, $TorgEternity_torg_eternity_dice$17.$$arity = 2); - - Opal.def(self, '$get_torg_eternity_damage_bonus_dice', $TorgEternity_get_torg_eternity_damage_bonus_dice$18 = function $$get_torg_eternity_damage_bonus_dice(number) { - var $a, $b, $c, self = this, value_roll = nil, output_roll = nil, dice_value = nil, dice_text = nil; - - - self.$debug("" + "bonus dice roll : " + (number)); - value_roll = 0; - output_roll = ""; - if ($truthy($rb_gt(number, 0))) { - - value_roll = 0; - output_roll = ""; - while ($truthy($rb_gt(number, 0))) { - - if ($truthy(output_roll['$empty?']())) { - } else { - output_roll = "" + (output_roll) + "," - }; - $c = self.$roll(1, 6), $b = Opal.to_ary($c), (dice_value = ($b[0] == null ? nil : $b[0])), (dice_text = ($b[1] == null ? nil : $b[1])), $c; - if (dice_value['$=='](6)) { - - dice_value = 5; - dice_text = "5∞"; - number = $rb_plus(number, 1);}; - value_roll = $rb_plus(value_roll, dice_value); - output_roll = "" + (output_roll) + (dice_text); - self.$debug(value_roll); - self.$debug(output_roll); - number = $rb_minus(number, 1); - }; - } else { - output_roll = "0" - }; - self.$debug(value_roll); - self.$debug(output_roll); - return [value_roll, output_roll]; - }, $TorgEternity_get_torg_eternity_damage_bonus_dice$18.$$arity = 1); - - Opal.def(self, '$get_torg_eternity_success_level', $TorgEternity_get_torg_eternity_success_level$19 = function $$get_torg_eternity_success_level(value) { - var self = this, success_table = nil; - - - success_table = [[0, "Success - Standard."], [5, "Success - Good!"], [10, "Success - Outstanding!!"]]; - return self.$get_torg_eternity_table_result(value, success_table); - }, $TorgEternity_get_torg_eternity_success_level$19.$$arity = 1); - - Opal.def(self, '$get_torg_eternity_damage_result', $TorgEternity_get_torg_eternity_damage_result$20 = function $$get_torg_eternity_damage_result(value) { - var self = this, damage_table = nil; - - - damage_table = [[-50, "ノーダメージ"], [-5, "1ショック"], [0, "2ショック"], [5, "1レベル負傷 + 2ショック"], [10, "2レベル負傷 + 4ショック"], [15, "3レベル負傷 + 6ショック"], [20, "4レベル負傷 + 8ショック"], [25, "5レベル負傷 + 10ショック"], [30, "6レベル負傷 + 12ショック"], [35, "7レベル負傷 + 14ショック"], [40, "8レベル負傷 + 16ショック"], [45, "9レベル負傷 + 18ショック"], [50, "10レベル負傷 + 20ショック"]]; - return self.$get_torg_eternity_table_result(value, damage_table); - }, $TorgEternity_get_torg_eternity_damage_result$20.$$arity = 1); - return (Opal.def(self, '$get_torg_eternity_bonus', $TorgEternity_get_torg_eternity_bonus$21 = function $$get_torg_eternity_bonus(value) { - var self = this, bonus_table = nil, bonus = nil, over_value_bonus = nil; - - - bonus_table = [[1, -10], [2, -8], [3, -6], [5, -4], [7, -2], [9, -1], [11, 0], [13, 1], [15, 2], [16, 3], [17, 4], [18, 5], [19, 6], [20, 7]]; - bonus = self.$get_torg_eternity_table_result(value, bonus_table); - if ($truthy($rb_gt(value, 20))) { - - over_value_bonus = $rb_plus($rb_divide($rb_minus(value, 21), 5).$to_i(), 1); - bonus = $rb_plus(bonus, over_value_bonus);}; - return bonus; - }, $TorgEternity_get_torg_eternity_bonus$21.$$arity = 1), nil) && 'get_torg_eternity_bonus'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/TrinitySeven.js b/src/assets/dicebot/TrinitySeven.js deleted file mode 100644 index f7ec7b2d9..000000000 --- a/src/assets/dicebot/TrinitySeven.js +++ /dev/null @@ -1,180 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$debug', '$=~', '$get_NAME_table', '$get_NAMEtwo_table', '$+', '$to_i', '$last_match', '$rollHit', '$rollDamage', '$roll', '$getHitRollResult', '$>=', '$<=', '$<', '$getRollDamageCritialText', '$empty?', '$join', '$>', '$to_s', '$==', '$collect', '$split', '$sort!', '$clone', '$times', '$shift', '$push', '$pop', '$nil?', '$*', '$**', '$each', '$get_table_by_number']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'TrinitySeven'); - - var $nesting = [self].concat($parent_nesting), $TrinitySeven_rollDiceCommand$1, $TrinitySeven_rollHit$2, $TrinitySeven_getHitRollResult$3, $TrinitySeven_rollDamage$4, $TrinitySeven_getRollDamageCritialText$5, $TrinitySeven_check_1D100$9, $TrinitySeven_get_NAME_table$10, $TrinitySeven_get_NAMEtwo_table$11; - - - Opal.const_set($nesting[0], 'ID', "TrinitySeven"); - Opal.const_set($nesting[0], 'NAME', "トリニティセブンRPG"); - Opal.const_set($nesting[0], 'SORT_KEY', "とりにていせふんRPG"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "クリティカルが変動した命中及び、7の出目がある場合のダメージ計算が行なえます。\n" + "なお、通常の判定としても利用できます。\n" + "\n" + "・発動/命中 [TR(±c*)<=(x)±(y*)又は TR<=(x)など]*は必須ではない項目です。\n" + "\"TR(クリティカルの修正値*)<=(発動/命中)±(発動/命中の修正値*)\"\n" + "加算減算のみ修正値も付けられます。 [修正値]は必須ではありません。\n" + "例)TR<=50\tTR<=60+20\tTR7<=40\tTR-7<=80\tTR+10<=80+20\n" + "\n" + "・ダメージ計算 [(x)DM(c*)±(y*)又は(x)DM(c*)又は(x)DM±(y*)]*は必須ではない項目です。\n" + "\"(ダイス数)DM(7の出目の数*)+(修正*)\"\n" + "加算減算のみ修正値も付けられます。 [7の出目の数]および[修正値]は必須ではありません。\n" + "例)6DM2+1\t5DM2\t4DM\t\t3DM+3\n" + "後から7の出目に変更する場合はC(7*6+5)のように入力して計算してください。\n" + "\n" + "・名前表 [TRNAME]\n" + "名字と名前を出します。PCや突然現れたNPCの名付けにどうぞ。\n" + "\n"); - self.$setPrefixes(["(\\d+)DM\\d+(\\+|\\-)?\\d*", "(\\d+)DM(\\+|\\-)?\\d*", "TR(\\d+)<=(\\d+)(\\+|\\-)?\\d*", "TR<=(\\d+)(\\+|\\-)?\\d*", "TR(\\+|\\-)?(\\d+)<=(\\d+)(\\+|\\-)?\\d*", "TRNAME"]); - - Opal.def(self, '$rollDiceCommand', $TrinitySeven_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $b, self = this, firstName = nil, secondName = nil, critical = nil, target = nil, modify = nil, diceCount = nil; - - - self.$debug("rollDiceCommand command", command); - if ($truthy(/TRNAME/['$=~'](command))) { - - $b = self.$get_NAME_table(), $a = Opal.to_ary($b), (firstName = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$get_NAMEtwo_table(), $a = Opal.to_ary($b), (secondName = ($a[0] == null ? nil : $a[0])), $b; - return "" + (firstName) + " , " + (secondName);}; - if ($truthy(/^TR([\+\-\d]*)<=([\d]*)([\+\-\d]*)/['$=~'](command))) { - - critical = $rb_plus($$($nesting, 'Regexp').$last_match(1).$to_i(), 7); - target = $$($nesting, 'Regexp').$last_match(2).$to_i(); - modify = $$($nesting, 'Regexp').$last_match(3).$to_i(); - return self.$rollHit(command, critical, target, modify);}; - critical = 0; - if ($truthy(/([\d]*)DM([\d]*)([\+\-\d]*)/['$=~'](command))) { - - diceCount = $$($nesting, 'Regexp').$last_match(1).$to_i(); - critical = $$($nesting, 'Regexp').$last_match(2).$to_i(); - modify = $$($nesting, 'Regexp').$last_match(3).$to_i(); - return self.$rollDamage(command, diceCount, critical, modify);}; - return ""; - }, $TrinitySeven_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$rollHit', $TrinitySeven_rollHit$2 = function $$rollHit(command, critical, target, modify) { - var $a, $b, self = this, total = nil, diceText = nil, result = nil, text = nil; - - - target = $rb_plus(target, modify); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - result = self.$getHitRollResult(total, target, critical); - text = "" + "(" + (command) + ") > " + (total) + "[" + (diceText) + "] > " + (result); - self.$debug("rollDiceCommand result text", text); - return text; - }, $TrinitySeven_rollHit$2.$$arity = 4); - - Opal.def(self, '$getHitRollResult', $TrinitySeven_getHitRollResult$3 = function $$getHitRollResult(total, target, critical) { - var self = this; - - - if ($truthy($rb_ge(total, 96))) { - return "ファンブル"}; - if ($truthy($rb_le(total, critical))) { - return "クリティカル"}; - if ($truthy($rb_le(total, target))) { - return "成功"}; - return "失敗"; - }, $TrinitySeven_getHitRollResult$3.$$arity = 3); - - Opal.def(self, '$rollDamage', $TrinitySeven_rollDamage$4 = function $$rollDamage(command, diceCount, critical, modify) { - var $a, $b, self = this, total = nil, diceText = nil, additionalListText = nil, additionalList = nil, modifyText = nil, text = nil; - - - if ($truthy($rb_lt(diceCount, critical))) { - return ""}; - $b = self.$roll(diceCount, 6), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - additionalListText = ""; - $b = self.$getRollDamageCritialText(diceCount, critical, total, diceText, modify), $a = Opal.to_ary($b), (total = ($a[0] == null ? nil : $a[0])), (additionalList = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(additionalList['$empty?']())) { - } else { - additionalListText = "" + "→[" + (additionalList.$join(",")) + "]" - }; - modifyText = ""; - if ($truthy($rb_gt(modify, 0))) { - modifyText = "" + "+" + (modify)}; - if ($truthy($rb_lt(modify, 0))) { - modifyText = modify.$to_s()}; - text = "" + "(" + (command) + ") [" + (diceText) + "]" + (additionalListText) + (modifyText) + " > " + (total); - return text; - }, $TrinitySeven_rollDamage$4.$$arity = 4); - - Opal.def(self, '$getRollDamageCritialText', $TrinitySeven_getRollDamageCritialText$5 = function $$getRollDamageCritialText(diceCount, critical, total, diceText, modify) { - var $$6, $$7, $$8, self = this, diceList = nil, restDice = nil, max = nil; - - - diceList = []; - if (critical['$=='](0)) { - - total = $rb_plus(total, modify); - return [total, diceList];}; - diceList = $send(diceText.$split(/,/), 'collect', [], ($$6 = function(i){var self = $$6.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$6.$$s = self, $$6.$$arity = 1, $$6)); - diceList['$sort!'](); - restDice = diceList.$clone(); - if ($truthy($rb_gt(critical, diceCount))) { - critical = diceCount}; - $send(critical, 'times', [], ($$7 = function(){var self = $$7.$$s || this; - - - restDice.$shift(); - diceList.$shift(); - return diceList.$push(7);}, $$7.$$s = self, $$7.$$arity = 0, $$7)); - max = restDice.$pop(); - if ($truthy(max['$nil?']())) { - max = 1}; - total = $rb_plus($rb_times(max, (7)['$**'](critical)), modify); - $send(restDice, 'each', [], ($$8 = function(i){var self = $$8.$$s || this; - - - - if (i == null) { - i = nil; - }; - return (total = $rb_plus(total, i));}, $$8.$$s = self, $$8.$$arity = 1, $$8)); - return [total, diceList]; - }, $TrinitySeven_getRollDamageCritialText$5.$$arity = 5); - - Opal.def(self, '$check_1D100', $TrinitySeven_check_1D100$9 = function $$check_1D100(_total, dice_total, _cmp_op, _target) { - var self = this; - - if ($truthy($rb_ge(dice_total, 96))) { - return " > ファンブル" - } else if ($truthy($rb_le(dice_total, 7))) { - return " > クリティカル" - } else { - return nil - } - }, $TrinitySeven_check_1D100$9.$$arity = 4); - - Opal.def(self, '$get_NAME_table', $TrinitySeven_get_NAME_table$10 = function $$get_NAME_table() { - var $a, $b, self = this, table = nil, dice_now = nil; - - - table = [[1, "春日"], [2, "浅見"], [3, "風間"], [4, "神無月"], [5, "倉田"], [6, "不動"], [7, "山奈"], [8, "シャルロック"], [9, "霧隠"], [10, "果心"], [11, "今井"], [12, "長瀬"], [13, "明智"], [14, "風祭"], [15, "志貫"], [16, "一文字"], [17, "月夜野"], [18, "桜田門"], [19, "果瀬"], [20, "九十九"], [21, "速水"], [22, "片桐"], [23, "葉月"], [24, "ウィンザー"], [25, "時雨里"], [26, "神城"], [27, "水際"], [28, "一ノ江"], [29, "仁藤"], [30, "北千住"], [31, "西村"], [32, "諏訪"], [33, "藤宮"], [34, "御代"], [35, "橘"], [36, "霧生"], [37, "白石"], [38, "椎名"], [39, "綾小路"], [40, "二条"], [41, "光明寺"], [42, "春秋"], [43, "雪見"], [44, "刀条院"], [45, "ランカスター"], [46, "ハクア"], [47, "エルタニア"], [48, "ハーネス"], [49, "アウグストゥス"], [50, "椎名町"], [51, "鍵守"], [52, "茜ヶ崎"], [53, "鎮宮"], [54, "美柳"], [55, "鎖々塚"], [56, "櫻ノ杜"], [57, "鏡ヶ守"], [58, "輝井"], [59, "南陽"], [60, "雪乃城"], [61, "六角屋"], [62, "鈴々"], [63, "東三条"], [64, "朱雀院"], [65, "青龍院"], [66, "白虎院"], [67, "玄武院"], [68, "麒麟院"], [69, "リーシュタット"], [70, "サンクチュアリ"], [71, "六実"], [72, "須藤"], [73, "ミレニアム"], [74, "七里"], [75, "三枝"], [76, "八殿"], [77, "藤里"], [78, "久宝"], [79, "東"], [80, "赤西"], [81, "神ヶ崎"], [82, "グランシア"], [83, "ダークブーレード"], [84, "天光寺"], [85, "月見里"], [86, "璃宮"], [87, "藤見澤"], [88, "赤聖"], [89, "姫宮"], [90, "華ノ宮"], [91, "天才"], [92, "達人"], [93, "賢者"], [94, "疾風"], [95, "海の"], [96, "最強"], [97, "凶器"], [98, "灼熱"], [99, "人間兵器"], [100, "魔王"]]; - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (dice_now = ($a[0] == null ? nil : $a[0])), $b; - return self.$get_table_by_number(dice_now, table); - }, $TrinitySeven_get_NAME_table$10.$$arity = 0); - return (Opal.def(self, '$get_NAMEtwo_table', $TrinitySeven_get_NAMEtwo_table$11 = function $$get_NAMEtwo_table() { - var $a, $b, self = this, table = nil, dice_now = nil; - - - table = [[1, "アラタ/聖"], [2, "アビィス/リリス"], [3, "ルーグ/レヴィ"], [4, "ラスト/アリン"], [5, "ソラ/ユイ"], [6, "イーリアス/アキオ"], [7, "アカーシャ/ミラ"], [8, "アリエス/リーゼロッテ"], [9, "ムラサメ/シャルム"], [10, "龍貴/竜姫"], [11, "英樹/春菜"], [12, "準一/湊"], [13, "急司郎/光理"], [14, "夕也/愛奈"], [15, "晴彦/アキ"], [16, "疾風/ヤシロ"], [17, "カガリ/灯花"], [18, "次郎/優都"], [19, "春太郎/静理"], [20, "ジン/時雨"], [21, "イオリ/伊織"], [22, "ユウヒ/優姫"], [23, "サツキ/翠名"], [24, "シュライ/サクラ"], [25, "ミナヅキ/姫乃"], [26, "カエデ/優樹菜"], [27, "ハル/フユ"], [28, "オdール/瑞江"], [29, "ニトゥレスト/キリカ"], [30, "スカー/綾瀬"], [31, "真夏/小夏"], [32, "光一/ののか"], [33, "彩/翠"], [34, "トウカ/柊花"], [35, "命/ミコト"], [36, "司/つかさ"], [37, "ゆとり/なごみ"], [38, "冬彦/観月"], [39, "カレン/華恋"], [40, "清次郎/亜矢"], [41, "サード/夢子"], [42, "ボックス/詩子"], [43, "ヘリオス/カエデ"], [44, "ゲート/京香"], [45, "オンリー/パトリシア"], [46, "ザッハーク/アーリ"], [47, "ラスタバン/ラスティ"], [48, "桜花/燁澄"], [49, "計都/リヴィア"], [50, "カルヴァリオ/香夜"], [51, "悠人/夜々子"], [52, "太子/羽菜"], [53, "夕立/夕凪"], [54, "アルフ/愛美"], [55, "ファロス/灯利"], [56, "スプートニク/詩姫"], [57, "アーネスト/累"], [58, "ナイン/カグヤ"], [59, "クリア/ヒマワリ"], [60, "ウォーカー/オリビア"], [61, "ダーク/クオン"], [62, "ウェイヴ/凛"], [63, "ルーン/マリエ"], [64, "エンギ/セイギ"], [65, "シラヌイ/ミライ"], [66, "ブライン/キズナ"], [67, "クロウ/カナタ"], [68, "スレイヤー/ヒカル"], [69, "レス/ミリアリア"], [70, "ミフユ/サリエル"], [71, "鳴央/音央"], [72, "モンジ/理亜"], [73, "パルデモントゥム/スナオ"], [74, "ミシェル/詩穂"], [75, "フレンズ/サン"], [76, "サトリ/識"], [77, "ロード/唯花"], [78, "クロノス/久宝"], [79, "フィラデルフィア/冬海"], [80, "ティンダロス/美星"], [81, "勇弥/ユーリス"], [82, "エイト/アンジェラ"], [83, "サタン/ルシエル"], [84, "エース/小波"], [85, "セージ/胡蝶"], [86, "忍/千之"], [87, "重吾/キリコ"], [88, "マイケル/ミホシ"], [89, "カズマ/鶴香"], [90, "ヤマト/エリシエル"], [91, "歴史上の人物の名前(信長、ジャンヌなど)"], [92, "スポーツ選手の名前(ベッカム、沙保里など)"], [93, "学者の名前(ソクラテス、エレナなど)"], [94, "アイドルの名前(タクヤ、聖子など)"], [95, "土地、国、町の名前(イングランド、ワシントンなど)"], [96, "モンスターの名前(ドラゴン、ラミアなど)"], [97, "武器防具の名前(ソード、メイルなど)"], [98, "自然現象の名前(カザンハリケーンなど)"], [99, "機械の名前(洗濯機、テレビなど)"], [100, "目についた物の名前(シャーペン、メガネなど)"]]; - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (dice_now = ($a[0] == null ? nil : $a[0])), $b; - return self.$get_table_by_number(dice_now, table); - }, $TrinitySeven_get_NAMEtwo_table$11.$$arity = 0), nil) && 'get_NAMEtwo_table'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/TunnelsAndTrolls.js b/src/assets/dicebot/TunnelsAndTrolls.js deleted file mode 100644 index caf057ec2..000000000 --- a/src/assets/dicebot/TunnelsAndTrolls.js +++ /dev/null @@ -1,310 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$debug', '$=~', '$+', '$*', '$to_i', '$last_match', '$sub', '$to_s', '$gsub', '$tandt_berserk', '$==', '$getMaxSuccessLevel', '$>=', '$getExperiencePoint', '$-', '$<=', '$>', '$/', '$int?', '$format', '$match', '$[]', '$parren_killer', '$push', '$loop', '$shift', '$roll', '$&', '$sortType', '$collect', '$split', '$times', '$each', '$[]=', '$empty?', '$-@', '$!=', '$<', '$sendMode']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'TunnelsAndTrolls'); - - var $nesting = [self].concat($parent_nesting), $TunnelsAndTrolls_initialize$1, $TunnelsAndTrolls_changeText$2, $TunnelsAndTrolls_dice_command_xRn$8, $TunnelsAndTrolls_check_2D6$9, $TunnelsAndTrolls_getMaxSuccessLevel$10, $TunnelsAndTrolls_getDiceRolledAdditionalText$11, $TunnelsAndTrolls_getExperiencePoint$12, $TunnelsAndTrolls_int$ques$13, $TunnelsAndTrolls_tandt_berserk$14; - - - Opal.const_set($nesting[0], 'ID', "TunnelsAndTrolls"); - Opal.const_set($nesting[0], 'NAME', "トンネルズ&トロールズ"); - Opal.const_set($nesting[0], 'SORT_KEY', "とんねるすあんととろおるす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・行為判定 (nD6+x>=nLV)\n" + "失敗、成功、自動失敗の自動判定とゾロ目の振り足し経験値の自動計算を行います。\n" + "SAVEの難易度を「レベル」で表記することが出来ます。\n" + "例えば「2Lv」と書くと「25」に置換されます。\n" + "判定時以外は悪意ダメージを表示します。\n" + "バーサークとハイパーバーサーク用に専用コマンドが使えます。\n" + "例)2D6+1>=1Lv\n" + "  (2D6+1>=20) > 7[2,5]+1 > 8 > 失敗\n" + " 判定時にはゾロ目を自動で振り足します。\n" + "\n" + "・バーサークとハイパーバーサーク (nBS+x or nHBS+x)\n" + " \"(ダイス数)BS(修正値)\"でバーサーク、\"(ダイス数)HBS(修正値)\"でハイパーバーサークでロールできます。\n" + " 最初のダイスの読替は、個別の出目はそのままで表示。\n" + " 下から2番目の出目をずらした分だけ合計にマイナス修正を追加して表示します。\n"); - self.$setPrefixes(["(\\d+H?BS)"]); - - Opal.def(self, '$initialize', $TunnelsAndTrolls_initialize$1 = function $$initialize() { - var $iter = $TunnelsAndTrolls_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $TunnelsAndTrolls_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $TunnelsAndTrolls_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.sortType = 1; - return (self.sameDiceRerollCount = 1); - }, $TunnelsAndTrolls_initialize$1.$$arity = 0); - - Opal.def(self, '$changeText', $TunnelsAndTrolls_changeText$2 = function $$changeText(string) { - var $$3, $$4, $$5, $$6, $$7, self = this, level_diff = nil; - - - self.$debug("TunnelsAndTrolls parren_killer begin string", string); - if ($truthy(/(\d+)LV/i['$=~'](string))) { - - level_diff = $rb_plus($rb_times($$($nesting, 'Regexp').$last_match(1).$to_i(), 5), 15); - string = $send(string, 'sub', [/(\d+)LV/i], ($$3 = function(){var self = $$3.$$s || this; - - return level_diff.$to_s()}, $$3.$$s = self, $$3.$$arity = 0, $$3));}; - if ($truthy(/BS/i['$=~'](string))) { - - string = $send(string, 'gsub', [/(\d+)HBS([^\d\s][\+\-\d]+)/i], ($$4 = function(){var self = $$4.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6" + ($$($nesting, 'Regexp').$last_match(2)) + "[H]"}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - string = $send(string, 'gsub', [/(\d+)HBS/i], ($$5 = function(){var self = $$5.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6[H]"}, $$5.$$s = self, $$5.$$arity = 0, $$5)); - string = $send(string, 'gsub', [/(\d+)BS([^\d\s][\+\-\d]+)/i], ($$6 = function(){var self = $$6.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6" + ($$($nesting, 'Regexp').$last_match(2))}, $$6.$$s = self, $$6.$$arity = 0, $$6)); - string = $send(string, 'gsub', [/(\d+)BS/i], ($$7 = function(){var self = $$7.$$s || this; - - return "" + ($$($nesting, 'Regexp').$last_match(1)) + "R6"}, $$7.$$s = self, $$7.$$arity = 0, $$7));}; - return string; - }, $TunnelsAndTrolls_changeText$2.$$arity = 1); - - Opal.def(self, '$dice_command_xRn', $TunnelsAndTrolls_dice_command_xRn$8 = function $$dice_command_xRn(string, nick_e) { - var self = this; - - return self.$tandt_berserk(string, nick_e) - }, $TunnelsAndTrolls_dice_command_xRn$8.$$arity = 2); - - Opal.def(self, '$check_2D6', $TunnelsAndTrolls_check_2D6$9 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this, experiencePoint = nil; - - - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if (dice_total['$=='](3)) { - return " > 自動失敗" - } else if (target['$==']("?")) { - return self.$getMaxSuccessLevel(total, dice_total) - } else if ($truthy($rb_ge(total, target))) { - - experiencePoint = self.$getExperiencePoint(target, dice_total); - return "" + " > 成功 > 経験値" + (experiencePoint); - } else { - return " > 失敗" - }; - }, $TunnelsAndTrolls_check_2D6$9.$$arity = 5); - - Opal.def(self, '$getMaxSuccessLevel', $TunnelsAndTrolls_getMaxSuccessLevel$10 = function $$getMaxSuccessLevel(total_n, dice_n) { - var $a, self = this, sucLv = nil; - - - sucLv = 1; - while ($truthy($rb_ge(total_n, $rb_plus($rb_times(sucLv, 5), 15)))) { - sucLv = $rb_plus(sucLv, 1) - }; - sucLv = $rb_minus(sucLv, 1); - if ($truthy($rb_le(sucLv, 0))) { - return "" + " > 失敗 > 経験値" + (dice_n)}; - return "" + " > " + (sucLv) + "Lv成功 > 経験値" + (dice_n); - }, $TunnelsAndTrolls_getMaxSuccessLevel$10.$$arity = 2); - - Opal.def(self, '$getDiceRolledAdditionalText', $TunnelsAndTrolls_getDiceRolledAdditionalText$11 = function $$getDiceRolledAdditionalText(n1, n_max, dice_max) { - var $a, self = this; - - - self.$debug("getDiceRolledAdditionalText n1, n_max, dice_max", n1, n_max, dice_max); - if ($truthy(($truthy($a = $rb_gt(n_max, 0)) ? dice_max['$=='](6) : $a))) { - return "" + " > 悪意" + (n_max)}; - return ""; - }, $TunnelsAndTrolls_getDiceRolledAdditionalText$11.$$arity = 3); - - Opal.def(self, '$getExperiencePoint', $TunnelsAndTrolls_getExperiencePoint$12 = function $$getExperiencePoint(diff, dice_n) { - var self = this, experiencePoint = nil; - - - self.$debug("diff", diff); - self.$debug("dice_n", dice_n); - experiencePoint = $rb_times($rb_divide($rb_times(1.0, $rb_minus(diff, 15)), 5), dice_n); - if ($truthy(self['$int?'](experiencePoint))) { - experiencePoint = experiencePoint.$to_i() - } else { - experiencePoint = self.$format("%.1f", experiencePoint) - }; - self.$debug("experiencePoint", experiencePoint); - return experiencePoint; - }, $TunnelsAndTrolls_getExperiencePoint$12.$$arity = 2); - - Opal.def(self, '$int?', $TunnelsAndTrolls_int$ques$13 = function(v) { - var self = this; - - return v['$=='](v.$to_i()) - }, $TunnelsAndTrolls_int$ques$13.$$arity = 1); - return (Opal.def(self, '$tandt_berserk', $TunnelsAndTrolls_tandt_berserk$14 = function $$tandt_berserk(string, nick_e) { - var $a, $$15, self = this, output = nil, m = nil, dice_c = nil, bonus = nil, isHyperBerserk = nil, dice_arr = nil, dice_now = nil, dice_str = nil, isFirstLoop = nil, n_max = nil, total_n = nil, bonus2 = nil; - - - self.$debug("tandt_berserk string", string); - output = "1"; - if ($truthy((m = /(^|\s)S?((\d+)[rR]6([\+\-\d]*)(\[(\w+)\])?)(\s|$)/i.$match(string)))) { - } else { - return output - }; - self.$debug("tandt_berserk matched"); - string = m['$[]'](2); - dice_c = m['$[]'](3).$to_i(); - bonus = 0; - if ($truthy(m['$[]'](4))) { - bonus = self.$parren_killer("" + "(0" + (m['$[]'](4)) + ")").$to_i()}; - isHyperBerserk = false; - if ($truthy(($truthy($a = m['$[]'](5)) ? m['$[]'](6)['$=~'](/[Hh]/) : $a))) { - isHyperBerserk = true}; - dice_arr = []; - dice_now = 0; - dice_str = ""; - isFirstLoop = true; - n_max = 0; - total_n = 0; - bonus2 = 0; - self.$debug("isHyperBerserk", isHyperBerserk); - dice_arr.$push(dice_c); - (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], ($$15 = function(){var self = $$15.$$s || this, $b, $c, $$16, $$17, $$18, $$19, $$20, dice_wk = nil, rollTotal = nil, rollDiceResultText = nil, roll_cnt1 = nil, rollDiceMaxCount = nil, roll_n_max = nil, roll_cnt_suc = nil, roll_cnt_re = nil, dice_num = nil, diceType = nil, dice_face = nil, min1 = nil, min2 = nil; - - - self.$debug("loop dice_arr", dice_arr); - dice_wk = dice_arr.$shift(); - self.$debug("roll dice_wk d6", dice_wk); - $c = self.$roll(dice_wk, 6, self.$sortType()['$&'](1)), $b = Opal.to_ary($c), (rollTotal = ($b[0] == null ? nil : $b[0])), (rollDiceResultText = ($b[1] == null ? nil : $b[1])), (roll_cnt1 = ($b[2] == null ? nil : $b[2])), (rollDiceMaxCount = ($b[3] == null ? nil : $b[3])), (roll_n_max = ($b[4] == null ? nil : $b[4])), (roll_cnt_suc = ($b[5] == null ? nil : $b[5])), (roll_cnt_re = ($b[6] == null ? nil : $b[6])), $c; - self.$debug("rollTotal, rollDiceResultText, roll_cnt1, rollDiceMaxCount, roll_n_max, roll_cnt_suc, roll_cnt_re", rollTotal, rollDiceResultText, roll_cnt1, rollDiceMaxCount, roll_n_max, roll_cnt_suc, roll_cnt_re); - if ($truthy($rb_ge(dice_wk, 2))) { - - dice_num = $send(rollDiceResultText.$split(/,/), 'collect', [], ($$16 = function(i){var self = $$16.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$16.$$s = self, $$16.$$arity = 1, $$16)); - self.$debug("dice_num", dice_num); - diceType = 6; - dice_face = []; - $send(diceType, 'times', [], ($$17 = function(_i){var self = $$17.$$s || this; - - - - if (_i == null) { - _i = nil; - }; - return dice_face.$push(0);}, $$17.$$s = self, $$17.$$arity = 1, $$17)); - $send(dice_num, 'each', [], ($$18 = function(dice_o){var self = $$18.$$s || this, $writer = nil; - - - - if (dice_o == null) { - dice_o = nil; - }; - $writer = [$rb_minus(dice_o, 1), $rb_plus(dice_face['$[]']($rb_minus(dice_o, 1)), 1)]; - $send(dice_face, '[]=', Opal.to_a($writer)); - return $writer[$rb_minus($writer["length"], 1)];}, $$18.$$s = self, $$18.$$arity = 1, $$18)); - $send(dice_face, 'each', [], ($$19 = function(dice_o){var self = $$19.$$s || this; - - - - if (dice_o == null) { - dice_o = nil; - }; - if ($truthy($rb_ge(dice_o, 2))) { - - if ($truthy(isHyperBerserk)) { - dice_o = $rb_plus(dice_o, 1)}; - return dice_arr.$push(dice_o); - } else { - return nil - };}, $$19.$$s = self, $$19.$$arity = 1, $$19)); - if ($truthy(($truthy($b = isFirstLoop) ? dice_arr['$empty?']() : $b))) { - - min1 = 0; - min2 = 0; - $send(diceType, 'times', [], ($$20 = function(i){var self = $$20.$$s || this, index = nil; - - - - if (i == null) { - i = nil; - }; - index = $rb_minus($rb_minus(diceType, i), 1); - self.$debug("diceType index", index); - if ($truthy($rb_gt(dice_face['$[]'](index), 0))) { - - min2 = min1; - return (min1 = index); - } else { - return nil - };}, $$20.$$s = self, $$20.$$arity = 1, $$20)); - self.$debug("min1, min2", min1, min2); - bonus2 = $rb_minus(min2, min1)['$-@'](); - if (min2['$=='](5)) { - rollDiceMaxCount = $rb_minus(rollDiceMaxCount, 1)}; - if ($truthy(isHyperBerserk)) { - dice_arr.$push(3) - } else { - dice_arr.$push(2) - };};}; - dice_now = $rb_plus(dice_now, rollTotal); - if ($truthy(dice_str['$!='](""))) { - dice_str = $rb_plus(dice_str, "][")}; - dice_str = $rb_plus(dice_str, rollDiceResultText); - n_max = $rb_plus(n_max, rollDiceMaxCount); - isFirstLoop = false; - self.$debug("loop last chek dice_arr", dice_arr); - if ($truthy(dice_arr['$empty?']())) { - - Opal.brk(nil, $brk) - } else { - return nil - };}, $$15.$$s = self, $$15.$$brk = $brk, $$15.$$arity = 0, $$15)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - self.$debug("loop breaked"); - self.$debug("dice_now, bonus, bonus2", dice_now, bonus, bonus2); - total_n = $rb_plus($rb_plus(dice_now, bonus), bonus2); - dice_str = "" + "[" + (dice_str) + "]"; - output = "" + (dice_now) + (dice_str); - if ($truthy($rb_lt(bonus2, 0))) { - - self.$debug("bonus2", bonus2); - output = $rb_plus(output, bonus2.$to_s());}; - self.$debug("bonus", bonus); - if ($truthy($rb_gt(bonus, 0))) { - output = $rb_plus(output, "" + "+" + (bonus)) - } else if ($truthy($rb_lt(bonus, 0))) { - output = $rb_plus(output, bonus.$to_s())}; - if ($truthy($rb_gt(self.$sendMode(), 0))) { - if ($truthy(output['$=~'](/[^\d\[\]]+/))) { - output = "" + (nick_e) + ": (" + (string) + ") > " + (output) + " > " + (total_n) - } else { - output = "" + (nick_e) + ": (" + (string) + ") > " + (total_n) - } - } else { - output = "" + (nick_e) + ": (" + (string) + ") > " + (total_n) - }; - if ($truthy($rb_gt(n_max, 0))) { - output = $rb_plus(output, "" + " > 悪意" + (n_max))}; - return output; - }, $TunnelsAndTrolls_tandt_berserk$14.$$arity = 2), nil) && 'tandt_berserk'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/TwilightGunsmoke.js b/src/assets/dicebot/TwilightGunsmoke.js deleted file mode 100644 index 3feaf659e..000000000 --- a/src/assets/dicebot/TwilightGunsmoke.js +++ /dev/null @@ -1,273 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$freeze', '$match', '$raise', '$to_i', '$[]', '$roll', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Table'); - - var $nesting = [self].concat($parent_nesting), $Table_initialize$1, $Table_roll$2; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $Table_initialize$1 = function $$initialize(name, type, items) { - var self = this, m = nil; - - - self.name = name; - self.items = items.$freeze(); - m = /(\d+)D(\d+)/i.$match(type); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "Unexpected table type: " + (type)) - }; - self.times = m['$[]'](1).$to_i(); - return (self.sides = m['$[]'](2).$to_i()); - }, $Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $Table_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, value = nil, index = nil; - - - $b = bcdice.$roll(self.times, self.sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(value, self.times); - return "" + (self.name) + "(" + (value) + ") > " + (self.items['$[]'](index)); - }, $Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/d66_range_table"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send; - - Opal.add_stubs(['$freeze', '$roll', '$+', '$*', '$find', '$include?', '$[]']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'D66RangeTable'); - - var $nesting = [self].concat($parent_nesting), $D66RangeTable_initialize$1, $D66RangeTable_roll$2; - - self.$$prototype.items = self.$$prototype.name = nil; - - - Opal.def(self, '$initialize', $D66RangeTable_initialize$1 = function $$initialize(name, items) { - var self = this; - - - self.name = name; - return (self.items = items.$freeze()); - }, $D66RangeTable_initialize$1.$$arity = 2); - return (Opal.def(self, '$roll', $D66RangeTable_roll$2 = function $$roll(bcdice) { - var $a, $b, $$3, self = this, dice1 = nil, dice2 = nil, key = nil, chosen = nil; - - - $b = bcdice.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = bcdice.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - key = $rb_plus($rb_times(dice1, 10), dice2); - chosen = $send(self.items, 'find', [], ($$3 = function(row){var self = $$3.$$s || this; - - - - if (row == null) { - row = nil; - }; - return row['$[]'](0)['$include?'](key);}, $$3.$$s = self, $$3.$$arity = 1, $$3)); - return "" + (self.name) + "(" + (key) + ") > " + (chosen['$[]'](1)); - }, $D66RangeTable_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/d66_grid_table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass; - - Opal.add_stubs(['$freeze', '$roll', '$-', '$[]']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'D66GridTable'); - - var $nesting = [self].concat($parent_nesting), $D66GridTable_initialize$1, $D66GridTable_roll$2; - - self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $D66GridTable_initialize$1 = function $$initialize(name, items) { - var self = this; - - - self.name = name; - return (self.items = items.$freeze()); - }, $D66GridTable_initialize$1.$$arity = 2); - return (Opal.def(self, '$roll', $D66GridTable_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, dice1 = nil, dice2 = nil, index1 = nil, index2 = nil; - - - $b = bcdice.$roll(1, 6), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), $b; - $b = bcdice.$roll(1, 6), $a = Opal.to_ary($b), (dice2 = ($a[0] == null ? nil : $a[0])), $b; - index1 = $rb_minus(dice1, 1); - index2 = $rb_minus(dice2, 1); - return "" + (self.name) + "(" + (dice1) + (dice2) + ") > " + (self.items['$[]'](index1)['$[]'](index2)); - }, $D66GridTable_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/format"] = function(Opal) { - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy; - - Opal.add_stubs(['$module_function', '$===', '$to_s', '$==', '$>']); - return (function($base, $parent_nesting) { - var self = $module($base, 'Format'); - - var $nesting = [self].concat($parent_nesting), $Format_comparison_operator$1, $Format_modifier$2; - - - self.$module_function(); - - Opal.def(self, '$comparison_operator', $Format_comparison_operator$1 = function $$comparison_operator(op) { - var self = this, $case = nil; - - return (function() {$case = op; - if ("=="['$===']($case)) {return "="} - else if ("!="['$===']($case)) {return "<>"} - else if ($$($nesting, 'Symbol')['$===']($case)) {return op.$to_s()} - else { return nil }})() - }, $Format_comparison_operator$1.$$arity = 1); - - Opal.def(self, '$modifier', $Format_modifier$2 = function $$modifier(number) { - var self = this; - - if (number['$=='](0)) { - return "" - } else if ($truthy($rb_gt(number, 0))) { - return "" + "+" + (number) - } else { - return number.$to_s() - } - }, $Format_modifier$2.$$arity = 1); - })($nesting[0], $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range, $hash2 = Opal.hash2; - - Opal.add_stubs(['$require', '$check_roll', '$roll_tables', '$private', '$match', '$[]', '$eval', '$new', '$to_i', '$roll', '$+', '$>=', '$<=', '$modifier', '$to_s', '$join', '$!=', '$size', '$raise', '$zip', '$freeze', '$setPrefixes', '$keys']); - - self.$require("utils/table"); - self.$require("utils/d66_range_table"); - self.$require("utils/d66_grid_table"); - self.$require("utils/format"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'TwilightGunsmoke'); - - var $nesting = [self].concat($parent_nesting), $TwilightGunsmoke_initialize$1, $TwilightGunsmoke_rollDiceCommand$2, $TwilightGunsmoke_check_roll$3; - - self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "TwilightGunsmoke"); - Opal.const_set($nesting[0], 'NAME', "トワイライトガンスモーク"); - Opal.const_set($nesting[0], 'SORT_KEY', "とわいらいとかんすもおく"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + " ・通常判定      2D6+m>=t[c,f]\n" + "  修正値m,目標値t,クリティカル値c,ファンブル値fで判定ロールを行います。\n" + "  クリティカル値、ファンブル値は省略可能です。([]ごと省略できます)\n" + "  自動成功、自動失敗、成功、失敗を自動表示します。\n" + "・各種表\n" + " ・邂逅表  CT\n" + " ・オープニングチャート\n" + "  リアリスティック OPR|シネマティック OPC\n" + " ・エンディングチャート\n" + "  リアリスティック EDR|シネマティック EDC\n" + " ・情報収集チャート\n" + "  荒野 RWL|ウェブ RWB|ストリート RST|上流 RUP\n" + " ・ドロップチャート\n" + "  コーポレイト DCP|バンデッド DBD|クリミナル DCR|ニンジャ DNJ\n" + "  ロボ DRB|武装車輛 DBS|ターレット DTR|メルカバ DMK\n" + "  ヘリ DHL|マシンライフ DML|ゾンビ DZB|ミュータント DMT\n" + "  BM/飛竜科 DHR|BM/巨爪科 DKS|フィーンド DFD\n" + "・D66ダイスあり\n"); - - Opal.def(self, '$initialize', $TwilightGunsmoke_initialize$1 = function $$initialize() { - var $iter = $TwilightGunsmoke_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $TwilightGunsmoke_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $TwilightGunsmoke_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - self.d66Type = 1; - return (self.sortType = 1); - }, $TwilightGunsmoke_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $TwilightGunsmoke_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, ret = nil; - - - if ($truthy((ret = self.$check_roll(command)))) { - return ret}; - return self.$roll_tables(command, $$($nesting, 'TABLES')); - }, $TwilightGunsmoke_rollDiceCommand$2.$$arity = 1); - self.$private(); - - Opal.def(self, '$check_roll', $TwilightGunsmoke_check_roll$3 = function $$check_roll(command) { - var $a, $b, $c, self = this, m = nil, modify_number = nil, target = nil, critical = nil, fumble = nil, dice_value = nil, dice_str = nil, total = nil, result = nil, sequence = nil; - - - m = /^2D6([\+\-\d]*)>=(\d+)(\[(\d+)?(,(\d+))?\])?$/i.$match(command); - if ($truthy(m)) { - } else { - return nil - }; - modify_number = (function() {if ($truthy(m['$[]'](1))) { - return $$($nesting, 'ArithmeticEvaluator').$new().$eval(m['$[]'](1)) - } else { - return 0 - }; return nil; })(); - target = m['$[]'](2).$to_i(); - critical = ($truthy($a = m['$[]'](4)) ? $a : 12).$to_i(); - fumble = ($truthy($a = m['$[]'](6)) ? $a : 2).$to_i(); - $b = self.$roll(2, 6, ($truthy($c = self.sortType) ? 1 : $c)), $a = Opal.to_ary($b), (dice_value = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - total = $rb_plus(dice_value, modify_number); - result = (function() {if ($truthy($rb_ge(dice_value, critical))) { - return "自動成功" - } else if ($truthy($rb_le(dice_value, fumble))) { - return "自動失敗" - } else if ($truthy($rb_ge(total, target))) { - return "成功" - } else { - return "失敗" - }; return nil; })(); - sequence = ["" + "(" + (command) + ")", "" + (dice_value) + "[" + (dice_str) + "]" + ($$($nesting, 'Format').$modifier(modify_number)), total.$to_s(), result]; - return sequence.$join(" > "); - }, $TwilightGunsmoke_check_roll$3.$$arity = 1); - (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'TGTable'); - - var $nesting = [self].concat($parent_nesting), $TGTable_initialize$4; - - - - Opal.def(self, '$initialize', $TGTable_initialize$4 = function $$initialize(name, items) { - var $iter = $TGTable_initialize$4.$$p, $yield = $iter || nil, self = this, items_with_range = nil; - - if ($iter) $TGTable_initialize$4.$$p = null; - - if ($truthy(items.$size()['$!=']($$($nesting, 'RANGE').$size()))) { - self.$raise($$($nesting, 'UnexpectedTableSize').$new(name, items.$size()))}; - items_with_range = $$($nesting, 'RANGE').$zip(items); - return $send(self, Opal.find_super_dispatcher(self, 'initialize', $TGTable_initialize$4, false), [name, items_with_range], null); - }, $TGTable_initialize$4.$$arity = 2); - return Opal.const_set($nesting[0], 'RANGE', [$range(11, 13, false), $range(14, 16, false), $range(21, 23, false), $range(24, 26, false), $range(31, 33, false), $range(34, 36, false), $range(41, 43, false), $range(44, 46, false), $range(51, 53, false), $range(54, 56, false), $range(61, 63, false), $range(64, 66, false)].$freeze()); - })($nesting[0], $$($nesting, 'D66RangeTable'), $nesting); - Opal.const_set($nesting[0], 'TABLES', $hash2(["CT", "OPR", "OPC", "EDR", "EDC", "RWL", "RWB", "RST", "RUP", "DCP", "DBD", "DCR", "DNJ", "DRB", "DBS", "DTR", "DMK", "DHL", "DML", "DZB", "DMT", "DHR", "DKS", "DFD"], {"CT": $$($nesting, 'D66GridTable').$new("邂逅表", [["【関係:恩人】", "【関係:恩人】", "【関係:秘密】", "【関係:秘密】", "【関係:保護者】", "【関係:保護者】"], ["【関係:忠誠】", "【関係:忠誠】", "【関係:憎悪】", "【関係:憎悪】", "【関係:あこがれ】", "【関係:あこがれ】"], ["【関係:殺意】", "【関係:殺意】", "【関係:同志】", "【関係:同志】", "【関係:幼子】", "【関係:幼子】"], ["【関係:興味】", "【関係:興味】", "【関係:ライバル】", "【関係:ライバル】", "【関係:師匠】", "【関係:師匠】"], ["【関係:慕情】", "【関係:慕情】", "【関係:友情】", "【関係:友情】", "【関係:家族】", "【関係:家族】"], ["【関係:忘却】", "【関係:忘却】", "【関係:ビジネス】", "【関係:ビジネス】", "【関係:腐れ縁】", "【関係:腐れ縁】"]]), "OPR": $$($nesting, 'TGTable').$new("オープニングチャート:リアリスティック", ["おまえはめったにない休暇をエンジョイしていた。映画、デート、エステ、ドラッグ、やり方はお前の好きにしろ。", "おまえはちょうど一仕事やり終えたところだ。おまえがどれだけ上手くやったかは自由に演出してよいが、残念ながらこの仕事の報酬はゲーム的には価値を持たない。ライフスタイルの一部として扱う。", "おまえは一仕事終えてぐっすり眠っている。だがそんな時におまえを否応なく仕事の電話がたたき起こす。", "おまえは金に困っている。家賃かもしれないし、別れた配偶者からの慰謝料請求かもしれない。とにかく、このオープニングでやってくる依頼はお前にとっては渡りに船だ。なお、この金はアフタープレイの出費に含まれるためゲーム的効果を持たない。", "おまえは警察に不審尋問されている。そんな時、突然おまえが釈放されるという声がかかった。どうやら次の依頼人がわざわざおまえの身元を保証してくれたらしい。", "おまえはコネクション(任意に選択するが、困ったらライフパスの相手とせよ)と会話している。その会話の内容がどんなものかはコネクションとおまえの関係次第だ。", "おまえは家族との大切なひとときを過ごしている。もしおまえに家族というものがいないなら、かわいがっているストリートの野良犬や行きつけのバーのマスター、あるいは離婚して親権を取られた子供あたりでもいい。", "おまえはネットワークにダイブし、情報の海を思うまま経巡っている(おまえがウェットでも、ネットワークそのものは利用できることを忘れるな)。仕事の連絡があったのはそんな時だ。", "おまえはおまえの首を狙って名を上げようとする愚かなストリートギャングをひとり血祭りに上げたところだ。", "おまえは荒野をひとり旅している。ウェイストランドの自然はお前に安らぎを与えてくれるか、おまえを苦しめているかは好きにしろ、だが仕事だ。スプロールに戻る時がきた。", "おまえはごくプライベートなひとときを過ごしている。恋人との甘い一夜かもしれないし、ドラッグやアルコールの酩酊かもしれない。", "おまえは死んだ大切な人間の墓に詣でている。心の中で別れを告げたその時、依頼人から電話がかかってきた。"]), "OPC": $$($nesting, 'TGTable').$new("オープニングチャート:シネマティック", ["おまえは世界滅亡をたくらむテロリストのアジトを今まさに木っ端微塵に爆破したところだ。脱出したおまえに、休むヒマもなく新たな依頼がやってくる。", "おまえは久しぶりに日常を楽しんでいた……はずだった。だが、おまえの乗る飛行機/船/列車がジャックされ、おまえはテロリストを徒手空拳でどうにか倒した。疲労困憊したおまえに新しい仕事がやってくる。", "おまえはまったく無関係な別の敵に捕まって拷問されている。もっとも敵はエキストラだ。おまえは自由に脱出するまでのプロセスを演出できる。", "おまえはムショにブチこまれている。幸いデイブレイカーだとバレてはいない。だが突然釈放の声がかかった。どうやら新しい依頼人が政治的圧力をかけたらしい。", "おまえは今まさに、暴走したバイオモンスターに喰われそうになっている。こんな時に依頼というのはどんなバカだ。おまえはこのピンチをどう切り抜けたか自由に演出できる。", "おまえは夢を見ていた。夢の中でおまえはまったく別の世界の、まったく別の人生を送っている。目覚めてもそちらが現実だったような気がする。まあそれはそれとして仕事だ。", "おまえはカジノで途方もなく大勝ちをしている。目の前にチップの山が積み上がり、支配人の顔が青くなっていく。だがその時、仕事の呼び出しがかかった。残念ながらチップを換金するヒマはない(あるいは換金出来たが、オープニングの間に使い切ったとしてもいい)。", "おまえは上手くやった。ネットで、リアルスペースで、芸能界で、暗黒街で、とにかくおまえのやったことは大評判を呼び、見知らぬ男たちと女たちがおまえの名を囁き交わす。そんな時におまえに依頼が来るのは当然と言えるだろう。", "おまえはヘマをやった。ポリス、情報機関、マフィア、とにかくそんなものがおまえを追い回している。おまえに依頼がやってきたのはよりによってそんな時だ。おまえは判定なしでこの窮地を切り抜けることができる。", "おまえはアイデンティティの危機に襲われる。おまえはクローンかもしれないし、記憶を継承したドロイドなのかもしれない。おまえは死んでいてネクロモーフなのかもしれない。まあそれはそれとして仕事だ。", "おまえは目覚めると見知らぬ異性(または同性)と同じベッドの中にいた。何事だ。まるで身に覚えがない。シャワーを浴びて部屋に戻ると、相手は忽然と煙のように消えていた。呆然とするおまえの電話が鳴る・仕事らしい。その相手と仕事が関係あるのかは、GMが決定せよ。", "おまえはショッピングモールでゾンビの大群に包囲されている。おまえは判定なしでこのゾンビパラダイスから脱出できるが、その過程をGMと協力して演出すること。"]), "EDR": $$($nesting, 'TGTable').$new("エンディングチャート:リアリスティック", ["おまえは死んだ誰かの墓に詣でている。帰ってこないものは確かにあるのだ。", "おまえはいつもの日常の喧騒へと戻っていく。家賃の請求、弾薬の補充、日々の料理、トレイの掃除。まあそんなところだ。", "おまえは休暇をエンジョイしている。そこがホテルでもカジノでも、かかる費用はライフスタイルに含まれているものとする。", "おまえは恋人、あるいは別れた恋人との親密な時間を過ごしている。それが甘い語らいなのか、深刻な別れ話まのかは好きにするといい。", "おまえは今回の事件について、おまえのコネクションと会話している。コネクションがおまえと事件をどう思っているかは、GMと相談しろ。", "おまえは日常的な銃と硝煙の世界へ戻っていく。幸い、この荒廃世界では敵には事欠かない。違うか?", "おまえはウェイストランドに残された自然の中を歩いて行く。おまえはそこでスプロールよりも大切なものを見いだすのかもしれない。あるいはただ、冒険の一環なのかもしれない。", "おまえはドラッグ/美食/酒/タバコ/ロマンスのもたらす悦楽に心ゆくまで浸っている。おまえは立派に仕事をやりとげた。当分は動きたくない。", "おまえはトレーニングに励んでいる。ひとつの戦いは終わった。だがこの先にはさらなる戦いが待っている。そのときのために、鍛錬は必要なのだ。", "おまえは株式投資や新興宗教の教祖といった「副業」に精を出している。それによって儲かっているにせよ儲かっていないにせよ、ゲームデータとしての金には影響しない。", "おまえは新しいミッションを受けている。それがどのようなものか今決めてもいいし、次のシナリオの題材にしてもいい。", "おまえは家族と過ごしている。家族と呼べる相手がいないなら、近所の野良猫でも行きつけのバーのマスターでもいいだろう。"]), "EDC": $$($nesting, 'TGTable').$new("エンディングチャート:シネマティック", ["おまえは自分がアンドロイドであり、自分を人間だと思い込んでいたことを突如として思い出す。そしておまえには、おまえを追う刺客が迫っている。", "おまえはこのシナリオの記憶がまったく存在しないことを思い出す。あるいは記憶だと思っていたものは、VRで植え付けられた偽記憶だったのかもしれない。おまえが誰かを探す旅が今始まる。", "おまえは平和な日常に戻っていく。ところで画面が切り替わり、BOSSの墓が映る。墓が不気味に蠢いてシーンエンド。", "なんとめでたいことに、名前を聞いたこともない遠縁の親戚の遺産がころがりこむ。スプロールの外れた洋館で魔術の研究をしていたらしい。おまえは遺産を受け継ぐため嵐の洋館へ向かっていく。", "おまえは悪の黒幕(このシナリオの黒幕とは限らない)拳/拳銃/カタナの一撃で倒し、立ち去っていく。背後で大爆発。悪は滅んだ。", "おまえは有名になりすぎた。お前を殺すために暗黒街が、メガ・コーポが、最強の刺客軍団を送り込んでくる。無論全員エキストラだ。お前が好き放題倒したら、シーンを終了させろ。", "おまえはウェイストランドを探検し、ついに誰もたどりついたことのない秘境の都市を発見した。そこに何が眠っているのか。おまえはただひとり、都市へと向かう……!", "おまえはおまえはようやく平穏な日常に戻って来た。のんびり過ごそうとした海岸のリゾートで悲鳴が上がる。なんてことだ! ゾンビ化した巨大鮫の襲撃だ! 畜生!", "おまえはストリートの闇へ戻っていく。おまえのコネクションがおまえに囁く。「どうやらBOSSが全身をサイバーウェアでつなぎ止め、復活しておまえへの復讐を企んでいるらしいぞ」その言葉に、おまえは……。", "今やストリートの伝説になったおまえには、密かにクローンが作り出されていた。対決する本人とクローン! 激震する暗黒街! 勝つのはどちらだ! 待て、次回!", "倒したはずの宿敵(今回のBOSSとは限らない)がゾンビになって復活した。なんてしぶとい野郎だ。おまえはチェーンソーを手に立ち向かう。", "仕事を終えてねぐらに戻ろうとするおまえを光が包み込んだ。UFOのアブダクションだ。果たしておまえの運命はどうなるのか。収拾がつかなくなった場合、夢だったことにするといい。"]), "RWL": $$($nesting, 'TGTable').$new("情報収集チャート:荒野", ["どこまでも続く果てしない荒野と廃墟、かつてここに文明があったというのが信じられれない。あるいはあの輻輳都市が蜃気楼なのかもしれない。", "どこかのバカが仕掛けた地雷が埋まっている! 【反射】難易度12の判定を行ない、失敗すれば〈殴〉5D+総合レベルのダメージを受ける。", "まともに説明したらリプレイ一冊分になるような冒険の果て、お前は情報提供者のところにたどり着いた。【HP】を(総合レベル)D点失う。", "伝説の白いワニだ! なぜワニがこんな下水道に!? 【体力】難易度12の判定を行ない、成功すれば威信点1を得る。失敗なら、〈斬〉10Dダメージ。", "山間の峠を抜けると、素晴らしく美しい湖と草原に出た。まだこんな自然が残っていたのか。おまえの【MP】を完全に回復する。", "たどりついた村人の親切な歓待。とっておきの肉のシチューを振る舞われる。【体力】難易度12の判定を行ない、成功すれば【HP】【MP】が完全に回復。失敗なら、【HP】を5D点失う。", "フェリシア・リーの行商。おまえは購入難易度20以下のアイテムひとつを定価で購入してもよい(情報収集とは別に行なえる)。", "バイオモンスターに襲われたらしい死体を発見する。端末で照合すると賞金首らしい。おまえが倒したことにするなら、威信点2を失い、$5000を得る。", "情報は古い機械式の金庫に収められていた。【反射】難易度12の判定を行ない、成功なら次の情報収集+2(クリティカルなら+$500)。失敗なら金庫が自爆し、次の情報収集-2。", "なんてこった、ゾンビの襲撃だ! 「種別:ゾンビ」で、おまえがもっともレベルの近いエネミー1D体がおまえを襲撃する。登場難易度の12のシーンで戦闘を行なうこと。距離は2マス。", "旧時代の知識を持つ親切なロボットがおまえの手助けをしてくれた。次の情報収集に+2。", "墜落したUFOを発見する。おまえは見なかったことにしてもよいし、雑誌社に売りつけてもよい。売りつけるなら、1D66×100$を得る。"]), "RWB": $$($nesting, 'TGTable').$new("情報収集チャート:ウェブ", ["特に何事もない。ネットの世界はルーチンワークだ。おまえは粛々と情報を集めていく。", "まさにおまえが必要としている情報の入ったファイルが、データ流の中を漂流していく。冗談か? 【幸運】難易度12の判定を行ない、成功すれば情報収集の達成値+2。ファンブルなら、情報収集そのものも失敗する。", "コネクションのひとりからVRチャットのお誘い。どうやらまったく無関係に、ヤツは君と世間話がしたいようだ。だが、何か関連情報を知っているかもしれないぞ。【幸運】難易度12の判定を行ない、成功すれば情報収集の達成値+1。クリティカルなら、威信点にも+1。", "おまえはネットの海に果てしなく潜り続ける。無数の情報がお前を魅惑し幻惑する。お前は万能だ。だが現実の肉体はそうではない。【体力】難易度12の判定を行ない、成失敗すると3D+キャラクターレベル点のHPを失う。ファンブルならその二倍だ。", "目当ての情報に近いファイルを見つけた……。だが、それには悪質な電脳ドラッグの“お試し”データが仕込まれていた。【意志】難易度12の判定を行ない、失敗した場合、次のシーンの開始時、お前は狼狽・放心を受ける。", "「ああ、その件なら知っているよ」お前のツレのハッカーが、そのネタを知っているらしい。しかもオープンソース精神とやらで、金はいらないそうだ。情報収集の達成値+2。", "どうやらおまえが貸しを作っているライバルのハッカーが、お前の追っている事件についてのネタを握っているらしい。威信点を1点減らすなら、次の情報収集のクリティカル値を-2(下限値8)。", "高速化された論理迷路の仕掛けられたデータストアに迷い込む。これだけ厳重な防御があるということは、核心の情報が保管されている可能性が高い。【知覚】難易度12の判定を行ない、成功すれば情報収集の達成値+2。失敗なら、-2。", "目まぐるしい映像の洪水が流れて行く。ネットはいつでも広告と無縁ではいられない。お前はその中から、有用そうなデータをいくつか集めた。このシナリオ中、おまえの購入判定のクリティカル値を-1(下限値8)。", "「最高のエクスタシー。肉体を捨てたトランスヒューマンだけの、嗜好の悦楽……」VRドラッグの試供品をもらう。おまえがウェットでないなら、【MP】を3D+総合レベル点回復すること。", "おまえの個人情報がタレ流しになっていることに気付く。どこかのバカのいやがらせだ。だが、うまく処理できれば名が上がる。【理知】難易度12の判定を行ない、成功すれば威信点+1。失敗なら-1。", "どうやら目当ての情報は、まだ誰も破ったことのないデータストアに保管されているようだ。それを破ったとなれば、間違いなくおまえのハッカーとしての名は上がる。次の情報収集判定に成功した場合、威信点+1D。"]), "RST": $$($nesting, 'TGTable').$new("情報収集チャート:ストリート", ["特筆すべき出来事はない。降り止まない酸性雨、うつむきがちの人々、けばけばしいネオンに広告飛行船。今日はいつも通りの日常だ。", "「てめえを殺りゃあ、幹部なんだよ!」密造拳銃を手にしたチンピラの襲撃。情報源のお出ましだ。【反射】難易度12の判定に成功すれば、情報収集の達成値+2。失敗なら、〈殴〉3D+総合レベル点のダメージを受ける。", "「よぉ。あのネタ探してんだってな?」にやにや顏の悪徳警官のお出ましだ。威信点を1点消費するなら、通常の効果に加えて達成値+2(合計+4)。", "「あんたとは終わったはずよ」昔の恋人と出会う(心当たりがない。とおまえが言うなら、このイベントはスキップ。ダイス目11として扱う)。威信点を1点消費するなら、通常の効果に加えてクリティカル値-2(下限値8)。", "とにかく足で稼ぐしかなさそうだ。結局、この時代でも最後に頼れるのはそれだけだ。【体力】難易度12の判定を行ない、成功すると情報収集の達成値+2。", "なじみの店でコネクションと出会う。敵対的な関係でないなら、快く情報を伝えてくれる。情報収集の達成値+2。敵対的な関係の場合は、ダイス目21と同様の処理。", "「最近名前が売れてるらしいじゃねえか。相棒(チューマ)」知らないやつになれなれしく話しかけられた。【理知】難易度12でうまくあしらえ。成功すれば、威信点+2。", "情報収集の過程で、まったく無関係な賞金首に襲われて返り討ちに。1D×500$を得るが、時間を取られたので、情報収集の達成値-1。", "屋台から漂ってくる聞いたこともない料理の香り。実に旨そうだ。5$払って食べてもいい。その場合、【幸運】難易度12の判定を行ない、成功すると【HP】と【MP】が全回復する。失敗すると、あまりのまずさに【MP】を2D点失う。", "抗争に巻き込まれて大ケガを負った子供と知り合う。何らかの【HP】回復を施してやる(アイテムを渡すのでもいい)のなら、威信点1点を得る。", "「あんたの名前に見合った金をはずんでくれよ。チューマ」情報屋だ。総合レベルの二乗×$100を支払えば、情報収集判定の達成値に+4。", "なんてこった、ゾンビの襲撃だ! 「種別:ゾンビ」で、おまえともっともレベルの近いエネミー1D体がおまえを襲撃する。登場難易度12のシーンで戦闘を行なうこと。距離は2マス。"]), "RUP": $$($nesting, 'TGTable').$new("情報収集チャート:上流", ["実を伴わない会話、豪勢な食事、最新鋭の何だか分からないファッション、そしてパーティ! 世はすべて事もなし。", "きらびやかな夜会と社交界の世界では、現金の量になど価値はない。金はあって当然だからだ。問題になるのは、おまえがどれだけのセレブかだ。1Dし、その数値がおまえの現在の威信点以下なら、次の情報収集に+2。", "ポストヒューマンと呼べなくても、トランスヒューマンであるかどうか。それが上流社会に受け入れられるための最低条件だ。おまえがウェットの場合、次の情報収集に-4。", "おまえを値踏みするセレブたちの冷たい視線。おまえの生活費が$1,500未満なら、次の情報収集に-2。おまえの生活費が$4000以上なら、+2。", "「あなたの噂は聞いていますわ、ご活躍だそうね」相手はどうもおまえを知っていて、しかも好意的らしい。ありがたく話を聞く。威信点に+1。", "事件とは無関係にインサイダー情報を嗅ぎつける。手を出すなら【幸運】で難易度14。成功すれば1D×$1000(クリティカルなら$10000)を得て、失敗すれば同額(ファンブルなら$10,000)を失う。", "上流階級独特のイヤミと皮肉に満ちた会話でおまえの精神は疲弊する。現在の【MP】を半分(端数切り捨て)にせよ。こんなところ、人間の住むところじゃない。", "おまえが上流社会で一番重要なのが知り合いの数だと思い知らされる。おまえが常備化しているコネクションに「種別:上流」のキャラクターがいれば、次の情報収集に+2。", "慈善活動の募金に巻き込まれる。こういうのが大事なんだ、ヤツらの社会じゃな。おまえが[現在の威信点×$500]を支払うなら、次の情報収集に+2。", "知らないうちに流行が変わっていた。最新モードの服を急いで仕立てるなら、1D×$1,000。仕立てないなら、【幸運】難易度12の判定を行ない、失敗すればおまえの威信点を-1Dすること。", "最新の社会問題についてのウィットに富んだ会話を求められる。【理知】難易度12の判定を行なえ。成功すれば、次の情報収集に+2。失敗すれば威信点を1を失う。", "テロリストの襲撃だ! 「種別:人間」のエネミー1D体がおまえを襲撃する。登場難易度14のシーンで戦闘を行なうこと。距離は4マス。"]), "DCP": $$($nesting, 'Table').$new("ドロップチャート:コーポレイト", "2D6", ["特になし", "特になし", "特になし", "特になし", "特になし", "9㎜ピストル", "9㎜ピストル", "装飾品($200)", "装飾品($200)", "スティムパック", "スティムパック"]), "DBD": $$($nesting, 'Table').$new("ドロップチャート:バンデッド", "2D6", ["特になし", "特になし", "特になし", "特になし", "特になし", ".45口径SMG", ".45口径SMG", "戦前の缶詰($60)×4", "戦前の缶詰($60)×4", "アッパードラッグ", "アッパードラッグ"]), "DCR": $$($nesting, 'Table').$new("ドロップチャート:クリミナル", "2D6", ["特になし", "特になし", "特になし", "特になし", "特になし", "現金$1D×50", "現金$1D×50", "アルコール", "アルコール", "派手なスーツ($700)", "派手なスーツ($700)"]), "DNJ": $$($nesting, 'Table').$new("ドロップチャート:ニンジャ", "2D6", ["特になし", "特になし", "特になし", "特になし", "特になし", "シュリケン", "シュリケン", "スティムパック", "スティムパック", "スティムパック", "カタナ"]), "DRB": $$($nesting, 'Table').$new("ドロップチャート:ロボ", "2D6", ["特になし", "特になし", "特になし", "特になし", "特になし", "Eセル×2セット", "Eセル×2セット", "廃棄部品($30)×5", "廃棄部品($30)×5", "ヴォルトコーラ", "ヴォルトコーラ"]), "DBS": $$($nesting, 'Table').$new("ドロップチャート:武装車輛", "2D6", ["特になし", "特になし", "特になし", "特になし", "特になし", "現金$1D×30", "現金$1D×30", "スティムパック", "スティムパック", "5.56㎜アサルトライフル", "5.56㎜アサルトライフル"]), "DTR": $$($nesting, 'Table').$new("ドロップチャート:ターレット", "2D6", ["特になし", "特になし", "特になし", "特になし", "特になし", "7.62㎜弾×3", "7.62㎜弾×3", "廃棄部品($30)×2", "廃棄部品($30)×2", "廃棄部品($30)×2", "7.62㎜マシンガン"]), "DMK": $$($nesting, 'Table').$new("ドロップチャート:メルカバ", "2D6", ["特になし", "特になし", "特になし", "特になし", "特になし", "廃棄部品($30)×10", "廃棄部品($30)×10", "スティムパック", "スティムパック", "アッパードラッグ", "アッパードラッグ"]), "DHL": $$($nesting, 'Table').$new("ドロップチャート:ヘリ", "2D6", ["特になし", "特になし", "特になし", "特になし", "特になし", "レアメタル($100)×1D", "レアメタル($100)×1D", "スーパースティムパック", "スーパースティムパック", "アッパードラッグ×2", "アッパードラッグ×2"]), "DML": $$($nesting, 'Table').$new("ドロップチャート:マシンライフ", "2D6", ["特になし", "特になし", "特になし", "特になし", "特になし", "レアメタル($100)×1D", "レアメタル($100)×1D", "未知の金属($1,000)", "未知の金属($1,000)", "未知の金属($1,000)", "マシンライフコア($10,000)"]), "DZB": $$($nesting, 'Table').$new("ドロップチャート:ゾンビ", "2D6", ["特になし", "特になし", "特になし", "特になし", "特になし", "特になし", "ぬいぐるみ($10)", "スティムパック", "スティムパック", "装飾品($500)", "装飾品($500)"]), "DMT": $$($nesting, 'Table').$new("ドロップチャート:ミュータント", "2D6", ["特になし", "特になし", "特になし", "特になし", "特になし", "アルコール", "アルコール", "スティムパック", "スティムパック", "戦前の酒($1,500)", "戦前の酒($1,500)"]), "DHR": $$($nesting, 'Table').$new("ドロップチャート:BM/飛竜科", "2D6", ["特になし", "特になし", "特になし", "特になし", "特になし", "飛竜の鱗($500)", "飛竜の鱗($500)", "飛竜の羽根($2,000)", "飛竜の羽根($2,000)", "飛竜の羽根($2,000)", "飛竜の角($10,000)"]), "DKS": $$($nesting, 'Table').$new("ドロップチャート:BM/巨爪科", "2D6", ["特になし", "特になし", "特になし", "特になし", "特になし", "現金$200×1D", "現金$200×1D", "分厚い毛皮($3,500)", "分厚い毛皮($3,500)", "巨大な爪($7,000)", "巨大な爪($7,000)"]), "DFD": $$($nesting, 'Table').$new("ドロップチャート:フィーンド", "2D6", ["特になし", "特になし", "特になし", "特になし", "アッパードラッグ×2", "アッパードラッグ×2", "アッパードラッグ×2", "アッパードラッグD", "アッパードラッグD", "異次元の結晶($12,000)", "異次元の結晶($12,000)"])}).$freeze()); - return self.$setPrefixes($rb_plus(["2D6.*"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/Utakaze.js b/src/assets/dicebot/Utakaze.js deleted file mode 100644 index 32749ec20..000000000 --- a/src/assets/dicebot/Utakaze.js +++ /dev/null @@ -1,215 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$debug', '$===', '$to_i', '$last_match', '$checkRoll', '$empty?', '$getValue', '$<', '$>', '$+', '$roll', '$sort', '$collect', '$split', '$join', '$getRollResultString', '$getSuccessInfo', '$isDragonDice', '$[]', '$!=', '$>=', '$getDiceCountHash', '$each', '$<<', '$<=', '$size', '$*', '$inject', '$new', '$isNomalDice', '$==', '$[]=', '$-', '$!']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Utakaze'); - - var $nesting = [self].concat($parent_nesting), $Utakaze_initialize$1, $Utakaze_isGetOriginalMessage$2, $Utakaze_rollDiceCommand$3, $Utakaze_checkRoll$4, $Utakaze_getRollResultString$6, $Utakaze_getSuccessInfo$7, $Utakaze_getDiceCountHash$9, $Utakaze_isNomalDice$11, $Utakaze_isDragonDice$12, $Utakaze_getValue$13; - - self.$$prototype.arrayDragonDiceName = nil; - - Opal.const_set($nesting[0], 'ID', "Utakaze"); - Opal.const_set($nesting[0], 'NAME', "ウタカゼ"); - Opal.const_set($nesting[0], 'SORT_KEY', "うたかせ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・行為判定ロール(nUK)\n" + " n個のサイコロで行為判定ロール。ゾロ目の最大個数を成功レベルとして表示。nを省略すると2UK扱い。\n" + " 例)3UK :サイコロ3個で行為判定\n" + " 例)UK :サイコロ2個で行為判定\n" + " 不等号用いた成否判定は現時点では実装してません。\n" + "・クリティカルコール付き行為判定ロール(nUK@c or nUKc)\n" + " cに「龍のダイス目」を指定した行為判定ロール。\n" + " ゾロ目ではなく、cと同じ値の出目数x2が成功レベルとなります。\n" + " 例)3UK@5 :龍のダイス「月」でクリティカルコール宣言したサイコロ3個の行為判定\n"); - self.$setPrefixes(["\\d*UK[@\\d]*.*"]); - - Opal.def(self, '$initialize', $Utakaze_initialize$1 = function $$initialize() { - var $iter = $Utakaze_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Utakaze_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Utakaze_initialize$1, false), $zuper, $iter); - return (self.arrayDragonDiceName = ["", "風", "雨", "雲", "影", "月", "歌"]); - }, $Utakaze_initialize$1.$$arity = 0); - - Opal.def(self, '$isGetOriginalMessage', $Utakaze_isGetOriginalMessage$2 = function $$isGetOriginalMessage() { - var self = this; - - return true - }, $Utakaze_isGetOriginalMessage$2.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Utakaze_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var $a, self = this, result = nil, $case = nil, base = nil, crit = nil, diff = nil; - - - self.$debug("rollDiceCommand command", command); - result = ""; - $case = command; - if (/(\d+)?UK(\@?(\d))?(>=(\d+))?/i['$===']($case)) { - base = ($truthy($a = $$($nesting, 'Regexp').$last_match(1)) ? $a : 2).$to_i(); - crit = $$($nesting, 'Regexp').$last_match(3).$to_i(); - diff = $$($nesting, 'Regexp').$last_match(5).$to_i(); - result = self.$checkRoll(base, crit, diff);}; - if ($truthy(result['$empty?']())) { - return nil}; - return "" + (command) + " > " + (result); - }, $Utakaze_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$checkRoll', $Utakaze_checkRoll$4 = function $$checkRoll(base, crit, diff) { - var $a, $b, $$5, self = this, result = nil, _ = nil, diceText = nil, diceList = nil; - - - - if (diff == null) { - diff = 0; - }; - result = ""; - base = self.$getValue(base); - crit = self.$getValue(crit); - if ($truthy($rb_lt(base, 1))) { - return result}; - if ($truthy($rb_gt(crit, 6))) { - crit = 6}; - result = $rb_plus(result, "" + "(" + (base) + "d6)"); - $b = self.$roll(base, 6), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), $b; - diceList = $send(diceText.$split(/,/), 'collect', [], ($$5 = function(i){var self = $$5.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$5.$$s = self, $$5.$$arity = 1, $$5)).$sort(); - result = $rb_plus(result, "" + " > [" + (diceList.$join(",")) + "] > "); - result = $rb_plus(result, self.$getRollResultString(diceList, crit, diff)); - return result; - }, $Utakaze_checkRoll$4.$$arity = -3); - - Opal.def(self, '$getRollResultString', $Utakaze_getRollResultString$6 = function $$getRollResultString(diceList, crit, diff) { - var $a, $b, self = this, success = nil, maxnum = nil, setCount = nil, result = nil, diffSuccess = nil; - - - $b = self.$getSuccessInfo(diceList, crit, diff), $a = Opal.to_ary($b), (success = ($a[0] == null ? nil : $a[0])), (maxnum = ($a[1] == null ? nil : $a[1])), (setCount = ($a[2] == null ? nil : $a[2])), $b; - result = ""; - if ($truthy(self.$isDragonDice(crit))) { - result = $rb_plus(result, "" + "龍のダイス「" + (self.arrayDragonDiceName['$[]'](crit)) + "」(" + (crit) + ")を使用 > ")}; - if ($truthy(success)) { - - result = $rb_plus(result, "" + "成功レベル:" + (maxnum) + " (" + (setCount) + "セット)"); - if ($truthy(diff['$!='](0))) { - - diffSuccess = $rb_ge(maxnum, diff); - if ($truthy(diffSuccess)) { - result = $rb_plus(result, " > 成功") - } else { - result = $rb_plus(result, " > 失敗") - };}; - } else { - result = $rb_plus(result, "失敗") - }; - return result; - }, $Utakaze_getRollResultString$6.$$arity = 3); - - Opal.def(self, '$getSuccessInfo', $Utakaze_getSuccessInfo$7 = function $$getSuccessInfo(diceList, crit, _diff) { - var $$8, self = this, diceCountHash = nil, maxnum = nil, successDiceList = nil, countThreshold = nil; - - - self.$debug("checkSuccess diceList, crit", diceList, crit); - diceCountHash = self.$getDiceCountHash(diceList, crit); - self.$debug("diceCountHash", diceCountHash); - maxnum = 0; - successDiceList = []; - countThreshold = (function() {if ($truthy(self.$isDragonDice(crit))) { - return 1 - } else { - return 2 - }; return nil; })(); - $send(diceCountHash, 'each', [], ($$8 = function(dice, count){var self = $$8.$$s || this; - - - - if (dice == null) { - dice = nil; - }; - - if (count == null) { - count = nil; - }; - if ($truthy($rb_gt(count, maxnum))) { - maxnum = count}; - if ($truthy($rb_ge(count, countThreshold))) { - return successDiceList['$<<'](dice) - } else { - return nil - };}, $$8.$$s = self, $$8.$$arity = 2, $$8)); - self.$debug("successDiceList", successDiceList); - if ($truthy($rb_le(successDiceList.$size(), 0))) { - return [false, 0, 0]}; - if ($truthy(self.$isDragonDice(crit))) { - maxnum = $rb_times(maxnum, 2)}; - return [true, maxnum, successDiceList.$size()]; - }, $Utakaze_getSuccessInfo$7.$$arity = 3); - - Opal.def(self, '$getDiceCountHash', $Utakaze_getDiceCountHash$9 = function $$getDiceCountHash(diceList, crit) { - var $$10, self = this, diceCountHash = nil; - - - diceCountHash = $send(diceList, 'inject', [$$($nesting, 'Hash').$new(0)], ($$10 = function(hash, dice){var self = $$10.$$s || this, $a, $writer = nil; - - - - if (hash == null) { - hash = nil; - }; - - if (dice == null) { - dice = nil; - }; - if ($truthy(($truthy($a = self.$isNomalDice(crit)) ? $a : dice['$=='](crit)))) { - - $writer = [dice, $rb_plus(hash['$[]'](dice), 1)]; - $send(hash, '[]=', Opal.to_a($writer)); - $writer[$rb_minus($writer["length"], 1)];}; - return hash;}, $$10.$$s = self, $$10.$$arity = 2, $$10)); - return diceCountHash; - }, $Utakaze_getDiceCountHash$9.$$arity = 2); - - Opal.def(self, '$isNomalDice', $Utakaze_isNomalDice$11 = function $$isNomalDice(crit) { - var self = this; - - return self.$isDragonDice(crit)['$!']() - }, $Utakaze_isNomalDice$11.$$arity = 1); - - Opal.def(self, '$isDragonDice', $Utakaze_isDragonDice$12 = function $$isDragonDice(crit) { - var self = this; - - return crit['$!='](0) - }, $Utakaze_isDragonDice$12.$$arity = 1); - return (Opal.def(self, '$getValue', $Utakaze_getValue$13 = function $$getValue(number) { - var self = this; - - - if ($truthy($rb_gt(number, 100))) { - return 0}; - return number; - }, $Utakaze_getValue$13.$$arity = 1), nil) && 'getValue'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/VampireTheMasquerade5th.js b/src/assets/dicebot/VampireTheMasquerade5th.js deleted file mode 100644 index a4db8f496..000000000 --- a/src/assets/dicebot/VampireTheMasquerade5th.js +++ /dev/null @@ -1,149 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$match', '$[]', '$make_dice_roll', '$+', '$get_critical_success', '$to_i', '$>', '$>=', '$get_success_result', '$get_fail_result', '$<', '$==', '$*', '$floor', '$/', '$roll', '$each', '$split']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'VampireTheMasquerade5th'); - - var $nesting = [self].concat($parent_nesting), $VampireTheMasquerade5th_rollDiceCommand$1, $VampireTheMasquerade5th_get_critical_success$2, $VampireTheMasquerade5th_make_dice_roll$3, $VampireTheMasquerade5th_get_success_result$5, $VampireTheMasquerade5th_get_fail_result$6; - - - Opal.const_set($nesting[0], 'ID', "VampireTheMasquerade5th"); - Opal.const_set($nesting[0], 'NAME', "Vampire: The Masquerade 5th Edition"); - Opal.const_set($nesting[0], 'SORT_KEY', "うあんはいあさますかれえと5"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定コマンド(nVMFx+x)\n" + " 注意:難易度は必要成功数を表す\n" + "\n" + " 難易度指定:判定成功と失敗、Critical判定、\n" + " (Hungerダイスがある場合)Messy CriticalとBestial Failureチェックを行う\n" + " 例) (難易度)VMF(ダイスプール)+(Hungerダイス)\n" + " (難易度)VMF(ダイスプール)\n" + "\n" + " 難易度省略:判定失敗、Critical、(Hungerダイスがある場合)Bestial Failureチェックを行う\n" + " 判定成功、Messy Criticalのチェックを行わない\n" + " 例) VMF(ダイスプール)+(Hungerダイス)\n" + " VMF(ダイスプール)\n" + "\n" + " 難易度0指定:全てのチェックを行わない\n" + " 例) 0VMF(ダイスプール)+(Hungerダイス)\n" + " 0VMF(ダイスプール)\n" + "\n"); - Opal.const_set($nesting[0], 'DIFFICULTY_INDEX', 1); - Opal.const_set($nesting[0], 'DICE_POOL_INDEX', 3); - Opal.const_set($nesting[0], 'HUNGER_DICE_INDEX', 5); - Opal.const_set($nesting[0], 'NOT_CHECK_SUCCESS', -1); - self.$setPrefixes(["\\d*VMF.*"]); - - Opal.def(self, '$rollDiceCommand', $VampireTheMasquerade5th_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var $a, $b, self = this, m = nil, dice_pool = nil, dice_text = nil, success_dice = nil, ten_dice = nil, result_text = nil, hunger_dice_pool = nil, hunger_dice_text = nil, hunger_success_dice = nil, hunger_ten_dice = nil, hunger_botch_dice = nil, difficulty = nil, judgment_result = nil; - - - m = /^(\d+)?(VMF)(\d+)(\+(\d+))?/.$match(command); - if ($truthy(m)) { - } else { - return "" - }; - dice_pool = m['$[]']($$($nesting, 'DICE_POOL_INDEX')); - $b = self.$make_dice_roll(dice_pool), $a = Opal.to_ary($b), (dice_text = ($a[0] == null ? nil : $a[0])), (success_dice = ($a[1] == null ? nil : $a[1])), (ten_dice = ($a[2] == null ? nil : $a[2])), $b; - result_text = "" + "(" + (dice_pool) + "D10"; - hunger_dice_pool = m['$[]']($$($nesting, 'HUNGER_DICE_INDEX')); - if ($truthy(hunger_dice_pool)) { - - $b = self.$make_dice_roll(hunger_dice_pool), $a = Opal.to_ary($b), (hunger_dice_text = ($a[0] == null ? nil : $a[0])), (hunger_success_dice = ($a[1] == null ? nil : $a[1])), (hunger_ten_dice = ($a[2] == null ? nil : $a[2])), (hunger_botch_dice = ($a[3] == null ? nil : $a[3])), $b; - ten_dice = $rb_plus(ten_dice, hunger_ten_dice); - success_dice = $rb_plus(success_dice, hunger_success_dice); - result_text = "" + (result_text) + "+" + (hunger_dice_pool) + "D10) > [" + (dice_text) + "]+[" + (hunger_dice_text) + "] "; - } else { - - hunger_ten_dice = 0; - hunger_botch_dice = 0; - result_text = "" + (result_text) + ") > [" + (dice_text) + "] "; - }; - success_dice = $rb_plus(success_dice, self.$get_critical_success(ten_dice)); - difficulty = (function() {if ($truthy(m['$[]']($$($nesting, 'DIFFICULTY_INDEX')))) { - return m['$[]']($$($nesting, 'DIFFICULTY_INDEX')).$to_i() - } else { - return $$($nesting, 'NOT_CHECK_SUCCESS') - }; return nil; })(); - result_text = "" + (result_text) + " 成功数=" + (success_dice); - if ($truthy($rb_gt(difficulty, 0))) { - - if ($truthy($rb_ge(success_dice, difficulty))) { - judgment_result = self.$get_success_result($rb_ge(ten_dice, 2), hunger_ten_dice) - } else { - judgment_result = self.$get_fail_result(hunger_botch_dice) - }; - result_text = "" + (result_text) + " 難易度=" + (difficulty) + (judgment_result); - } else if ($truthy($rb_lt(difficulty, 0))) { - - if (success_dice['$=='](0)) { - judgment_result = self.$get_fail_result(hunger_botch_dice) - } else { - judgment_result = "" - }; - result_text = "" + (result_text) + (judgment_result);}; - return result_text; - }, $VampireTheMasquerade5th_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$get_critical_success', $VampireTheMasquerade5th_get_critical_success$2 = function $$get_critical_success(ten_dice) { - var self = this; - - return $rb_times($rb_divide(ten_dice, 2).$floor(), 2) - }, $VampireTheMasquerade5th_get_critical_success$2.$$arity = 1); - - Opal.def(self, '$make_dice_roll', $VampireTheMasquerade5th_make_dice_roll$3 = function $$make_dice_roll(dice_pool) { - var $a, $b, $$4, self = this, _ = nil, dice_text = nil, success_dice = nil, ten_dice = nil, botch_dice = nil; - - - $b = self.$roll(dice_pool, 10), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dice_text = ($a[1] == null ? nil : $a[1])), $b; - success_dice = 0; - ten_dice = 0; - botch_dice = 0; - $send(dice_text.$split(","), 'each', [], ($$4 = function(take_dice){var self = $$4.$$s || this; - - - - if (take_dice == null) { - take_dice = nil; - }; - if ($truthy($rb_ge(take_dice.$to_i(), 6))) { - - success_dice = $rb_plus(success_dice, 1); - if (take_dice['$==']("10")) { - return (ten_dice = $rb_plus(ten_dice, 1)) - } else { - return nil - }; - } else if (take_dice['$==']("1")) { - return (botch_dice = $rb_plus(botch_dice, 1)) - } else { - return nil - };}, $$4.$$s = self, $$4.$$arity = 1, $$4)); - return [dice_text, success_dice, ten_dice, botch_dice]; - }, $VampireTheMasquerade5th_make_dice_roll$3.$$arity = 1); - - Opal.def(self, '$get_success_result', $VampireTheMasquerade5th_get_success_result$5 = function $$get_success_result(is_critical, hunger_ten_dice) { - var $a, self = this, judgment_result = nil; - - - judgment_result = ":判定成功!"; - if ($truthy(($truthy($a = $rb_gt(hunger_ten_dice, 0)) ? is_critical : $a))) { - return "" + (judgment_result) + " [Messy Critical]" - } else if ($truthy(is_critical)) { - return "" + (judgment_result) + " [Critical Win]"}; - return judgment_result; - }, $VampireTheMasquerade5th_get_success_result$5.$$arity = 2); - return (Opal.def(self, '$get_fail_result', $VampireTheMasquerade5th_get_fail_result$6 = function $$get_fail_result(hunger_botch_dice) { - var self = this, judgment_result = nil; - - - judgment_result = ":判定失敗!"; - if ($truthy($rb_gt(hunger_botch_dice, 0))) { - return "" + (judgment_result) + " [Bestial Failure]"}; - return judgment_result; - }, $VampireTheMasquerade5th_get_fail_result$6.$$arity = 1), nil) && 'get_fail_result'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Villaciel.js b/src/assets/dicebot/Villaciel.js deleted file mode 100644 index 18fa21c9b..000000000 --- a/src/assets/dicebot/Villaciel.js +++ /dev/null @@ -1,378 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range; - - Opal.add_stubs(['$setPrefixes', '$===', '$resolute_action', '$resolute_frontier_action', '$resolute_mining_action', '$resolute_cutting_gem_action', '$use_previous_job_chart', '$use_petit_quest_chart', '$use_accident_chart', '$use_mohumohu_chart', '$use_fishing_chart', '$use_inedible_plant_chart', '$use_edible_plant_chart', '$use_mutant_plant_chart', '$use_improved_species_chart', '$private', '$roll', '$[]', '$+', '$match', '$to_i', '$derive_achievement', '$>=', '$freeze', '$resolute_difficult_action', '$==', '$get_table_by_1d6', '$/', '$-', '$use_6x6_chart', '$%', '$even?', '$use_villaciel_edible_plant_chart', '$<=', '$use_armesear_edible_plant_chart', '$include?']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Villaciel'); - - var $nesting = [self].concat($parent_nesting), $Villaciel_initialize$1, $Villaciel_rollDiceCommand$2, $Villaciel_derive_achievement$3, $Villaciel_resolute_action$4, $Villaciel_resolute_frontier_action$5, $Villaciel_resolute_difficult_action$6, $Villaciel_resolute_mining_action$7, $Villaciel_resolute_cutting_gem_action$8, $Villaciel_use_previous_job_chart$9, $Villaciel_use_petit_quest_chart$10, $Villaciel_use_accident_chart$11, $Villaciel_use_6x6_chart$12, $Villaciel_use_mohumohu_chart$13, $Villaciel_use_fishing_chart$14, $Villaciel_use_inedible_plant_chart$15, $Villaciel_use_villaciel_edible_plant_chart$16, $Villaciel_use_armesear_edible_plant_chart$17, $Villaciel_use_edible_plant_chart$18, $Villaciel_use_mutant_plant_chart$19, $Villaciel_use_improved_species_chart$20; - - self.$$prototype.sortType = nil; - - Opal.const_set($nesting[0], 'ID', "Villaciel"); - Opal.const_set($nesting[0], 'NAME', "蒼天のヴィラシエル"); - Opal.const_set($nesting[0], 'SORT_KEY', "そうてんのういらしえる"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定        nVBS[>=d]\n" + " []内省略時は達成数の計算のみ。トライアンフあり。\n" + " n: ダイス数、d: 難易度\n" + "・フロンティア判定  nVF\n" + " n: ダイス数\n" + " nVBSを行い、うでまえ表を参照した結果を表示します。\n" + "・採掘スキル判定   nVM\n" + " n: ダイス数\n" + " 判定に成功した場合、自動的に獲得できるアイテム数も表示されます。\n" + "・宝石加工スキル判定 nVG\n" + " n: ダイス数\n" + "・前職表       PJ[x] x=V,A\n" + " []内は省略可能。\n" + " PJ, PJV: 「蒼天のヴィラシエル」掲載の前職表 PJA: 「白雲のアルメサール」掲載の前職表\n" + "・ぷちクエスト表   PQ[x] x=V,A\n" + " []内は省略可能。\n" + " PQ, PQV: 「蒼天のヴィラシエル」掲載のぷちクエスト表 PQA: 「白雲のアルメサール」掲載のぷちクエスト表\n" + "・アクシデント表   AC\n" + "・もふもふ表     MMx x=I,A,V,VV,VA,D\n" + " MMI: 昆虫 MMA: 動物 MMV, MMVV: ヴィラシエル種(「蒼天のヴィラシエル」掲載) MMVA: ヴィラシエル種(「白雲のアルメサール」掲載) MMD: 鋼龍種\n" + "・釣り表       Fx x=L,R,W,G,B,C,S\n" + " FL: 湖 FR: 河 FW: 白雲 FG: 灰雲 FB: 黒雲 FC: 共通 FS: 塩湖\n" + "・不食植物表     IP[x] x=V,A\n" + " IP, IPV: 「蒼天のヴィラシエル」掲載の不食植物表 IPA: 「白雲のアルメサール」掲載の不食植物表\n" + "・可食植物表     EP[x][n] x=V,A\n" + " []内は省略可能。\n" + " n: 可食植物表番号\n" + " EP[n], EPV[n]: 「蒼天のヴィラシエル」掲載の可食植物表。[]内省略時はnを1D6で決定し、EPVnを実行。ただし、1D6の出目が6ならば、「好きな表を選んでおっけー!」と表示。\n" + " EPA[n]: 「白雲のアルメサール」掲載の可食植物表。[]内省略時は1D6を振り、出目が偶数ならばEPA1、奇数ならばEPA2を実行。\n" + "・変異植物表     MP\n" + "・改良種表      IS\n"); - self.$setPrefixes(["\\d+VBS(>=\\d+)?", "\\d+VF", "\\d+VM", "\\d+VG", "PJ[VA]?", "PQ[VA]?", "AC", "MM([IAD]|V[VA]?)", "F[LRWGBCS]", "IP[VA]?", "EP[VA]?\\d?", "MP", "IS"]); - - Opal.def(self, '$initialize', $Villaciel_initialize$1 = function $$initialize() { - var $iter = $Villaciel_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Villaciel_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Villaciel_initialize$1, false), $zuper, $iter); - self.sortType = 0; - self.d66Type = 1; - return (self.fractionType = "roundUp"); - }, $Villaciel_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Villaciel_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if (/\d+VBS/['$===']($case)) {return self.$resolute_action(command)} - else if (/\d+VF/['$===']($case)) {return self.$resolute_frontier_action(command)} - else if (/\d+VM/['$===']($case)) {return self.$resolute_mining_action(command)} - else if (/\d+VG/['$===']($case)) {return self.$resolute_cutting_gem_action(command)} - else if (/PJ[VA]?/['$===']($case)) {return self.$use_previous_job_chart(command)} - else if (/PQ[VA]?/['$===']($case)) {return self.$use_petit_quest_chart(command)} - else if ("AC"['$===']($case)) {return self.$use_accident_chart(command)} - else if (/MM([IAD]|V[VA]?)/['$===']($case)) {return self.$use_mohumohu_chart(command)} - else if (/F[LRWGBCS]/['$===']($case)) {return self.$use_fishing_chart(command)} - else if (/IP[VA]?/['$===']($case)) {return self.$use_inedible_plant_chart(command)} - else if (/EP[VA]?\d?/['$===']($case)) {return self.$use_edible_plant_chart(command)} - else if ("MP"['$===']($case)) {return self.$use_mutant_plant_chart(command)} - else if ("IS"['$===']($case)) {return self.$use_improved_species_chart(command)} - else { return nil }})() - }, $Villaciel_rollDiceCommand$2.$$arity = 1); - self.$private(); - Opal.const_set($nesting[0], 'D6', 6); - Opal.const_set($nesting[0], 'LEAST_SUCCESS_ROLL', 4); - Opal.const_set($nesting[0], 'SUCCESS_STR', " > 成功"); - Opal.const_set($nesting[0], 'FAILURE_STR', " > 失敗"); - - Opal.def(self, '$derive_achievement', $Villaciel_derive_achievement$3 = function $$derive_achievement(num_dices, command) { - var self = this, roll_results = nil, dice_str = nil, num_triumph_dices = nil, num_successes = nil, achievement = nil, output = nil; - - - roll_results = self.$roll(num_dices, $$($nesting, 'D6'), self.sortType, 0, ">=", $$($nesting, 'LEAST_SUCCESS_ROLL')); - dice_str = roll_results['$[]'](1); - num_triumph_dices = roll_results['$[]'](3); - num_successes = roll_results['$[]'](5); - achievement = $rb_plus(num_successes, num_triumph_dices); - output = "" + "(" + (command) + ") > [" + (dice_str) + "] > 達成数: " + (achievement); - return [achievement, output]; - }, $Villaciel_derive_achievement$3.$$arity = 2); - - Opal.def(self, '$resolute_action', $Villaciel_resolute_action$4 = function $$resolute_action(command) { - var $a, $b, self = this, match_data = nil, num_dices = nil, achievement = nil, output = nil, difficulty = nil; - - - match_data = command.$match(/(\d+)VBS(>=(\d+))?/); - num_dices = match_data['$[]'](1).$to_i(); - $b = self.$derive_achievement(num_dices, command), $a = Opal.to_ary($b), (achievement = ($a[0] == null ? nil : $a[0])), (output = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(match_data['$[]'](2))) { - } else { - return output - }; - difficulty = match_data['$[]'](3).$to_i(); - return (output = $rb_plus(output, (function() {if ($truthy($rb_ge(achievement, difficulty))) { - return $$($nesting, 'SUCCESS_STR') - } else { - return $$($nesting, 'FAILURE_STR') - }; return nil; })())); - }, $Villaciel_resolute_action$4.$$arity = 1); - Opal.const_set($nesting[0], 'SKILL_CHART', ["左に3マス、上に3マス動かす", "左に2マス、上に2マス動かす", "右か下に1マス動かしてもよい", "右に1マス、下に1マス動かす", "好きな方向に最大で3マス動かしてもよい(1マスでも良い)", "好きな方向に最大で5マス動かしてもよい(1〜3マスでもよい)"].$freeze()); - - Opal.def(self, '$resolute_frontier_action', $Villaciel_resolute_frontier_action$5 = function $$resolute_frontier_action(command) { - var $a, $b, self = this, num_dices = nil, achievement = nil, output = nil, $case = nil; - - - num_dices = command.$match(/(\d+)VF/)['$[]'](1).$to_i(); - $b = self.$derive_achievement(num_dices, command), $a = Opal.to_ary($b), (achievement = ($a[0] == null ? nil : $a[0])), (output = ($a[1] == null ? nil : $a[1])), $b; - output = $rb_plus(output, " > "); - return (output = $rb_plus(output, (function() {$case = achievement; - if ((0)['$===']($case)) {return $$($nesting, 'SKILL_CHART')['$[]'](0)} - else if ((1)['$===']($case)) {return $$($nesting, 'SKILL_CHART')['$[]'](1)} - else if ((2)['$===']($case)) {return $$($nesting, 'SKILL_CHART')['$[]'](2)} - else if ((3)['$===']($case) || (4)['$===']($case)) {return $$($nesting, 'SKILL_CHART')['$[]'](3)} - else if ($range(5, 8, false)['$===']($case)) {return $$($nesting, 'SKILL_CHART')['$[]'](4)} - else {return $$($nesting, 'SKILL_CHART')['$[]'](5)}})())); - }, $Villaciel_resolute_frontier_action$5.$$arity = 1); - - Opal.def(self, '$resolute_difficult_action', $Villaciel_resolute_difficult_action$6 = function $$resolute_difficult_action(num_dices, least_success_roll, command) { - var self = this, roll_results = nil, dice_str = nil, largest_roll = nil, is_successful = nil, output = nil; - - - roll_results = self.$roll(num_dices, $$($nesting, 'D6'), self.sortType); - dice_str = roll_results['$[]'](1); - largest_roll = roll_results['$[]'](4); - is_successful = $rb_ge(largest_roll, least_success_roll); - output = "" + "(" + (command) + ") > [" + (dice_str) + "]"; - output = $rb_plus(output, (function() {if ($truthy(is_successful)) { - return $$($nesting, 'SUCCESS_STR') - } else { - return $$($nesting, 'FAILURE_STR') - }; return nil; })()); - return [output, is_successful]; - }, $Villaciel_resolute_difficult_action$6.$$arity = 3); - Opal.const_set($nesting[0], 'LEAST_MINING_SUCCESS_ROLL', 5); - Opal.const_set($nesting[0], 'LEAST_GEM_SUCCESS_ROLL', 6); - - Opal.def(self, '$resolute_mining_action', $Villaciel_resolute_mining_action$7 = function $$resolute_mining_action(command) { - var $a, $b, self = this, num_dices = nil, output = nil, is_successful = nil, roll_result = nil; - - - num_dices = command.$match(/(\d+)VM/)['$[]'](1).$to_i(); - $b = self.$resolute_difficult_action(num_dices, $$($nesting, 'LEAST_MINING_SUCCESS_ROLL'), command), $a = Opal.to_ary($b), (output = ($a[0] == null ? nil : $a[0])), (is_successful = ($a[1] == null ? nil : $a[1])), $b; - if ($truthy(is_successful)) { - } else { - return output - }; - $b = self.$roll(1, $$($nesting, 'D6')), $a = Opal.to_ary($b), (roll_result = ($a[0] == null ? nil : $a[0])), $b; - return (output = $rb_plus(output, "" + " > (1D6) > [" + (roll_result) + "] > アイテムを" + (roll_result) + "個獲得")); - }, $Villaciel_resolute_mining_action$7.$$arity = 1); - - Opal.def(self, '$resolute_cutting_gem_action', $Villaciel_resolute_cutting_gem_action$8 = function $$resolute_cutting_gem_action(command) { - var self = this, num_dices = nil; - - - num_dices = command.$match(/(\d+)VG/)['$[]'](1).$to_i(); - return self.$resolute_difficult_action(num_dices, $$($nesting, 'LEAST_GEM_SUCCESS_ROLL'), command)['$[]'](0); - }, $Villaciel_resolute_cutting_gem_action$8.$$arity = 1); - Opal.const_set($nesting[0], 'VILLACIEL_PREVIOUS_JOB_CHART', [["農家: 知力+1 器用さ+1 開拓/1Lv", "漁師: 知力+1 ひらめき+1 釣り/1Lv", "狩人: 武力+1 ひらめき+1 穴掘り/1Lv", "鍛冶職人: 武力+1 器用さ+1 採掘/1Lv", "牧場主: 仲良し+2 開拓/1Lv", "採掘師: 器用さ+1 ひらめき+1 採掘/1Lv"].$freeze(), ["家事手伝い: 器用さ+1 仲良し+1 調理/1Lv", "調理師: 知力+1 ひらめき+1 調理/1Lv", "細工師: 器用さ+2 採掘/1Lv", "大工: 武力+1 器用さ+1 木こり/1Lv", "荒くれ者: 武力+2 穴掘り/1Lv", "王国騎士: 武力+1 知力+1 木こり/1Lv"].$freeze()].$freeze()); - Opal.const_set($nesting[0], 'ARMESEAR_PREVIOUS_JOB_CHART', [["農家: 知力+1 器用さ+1 開拓/1Lv", "漁師: 知力+1 ひらめき+1 釣り/1Lv", "狩人: 武力+1 ひらめき+1 穴掘り/1Lv", "鍛冶職人: 武力+1 器用さ+1 採掘/1Lv", "牧場主: 仲良し+2 開拓/1Lv", "採掘師: 器用さ+1 ひらめき+1 採掘/1Lv"].$freeze(), ["羊飼い: 仲良し+2 もふもふ/1Lv", "芽拾い: 知力+1 武力+1 採集/1Lv", "服屋見習い: 器用さ+2 裁縫/1Lv", "革細工見習い: 知力+2 裁縫/1Lv", "商人: 知力+1 仲良し+1 基礎になるスキル/1Lv", "旅人: 武力+1 知力+1 基礎になるスキル/1Lv"].$freeze(), ["家事手伝い: 器用さ+1 仲良し+1 調理/1Lv", "調理師: 知力+1 ひらめき+1 調理/1Lv", "細工師: 器用さ+2 採掘/1Lv or 調合・細工/1Lv", "大工: 武力+1 器用さ+1 木こり/1Lv", "荒くれ者: 武力+2 穴掘り/1Lv", "王国騎士: 武力+1 知力+1 木こり/1Lv"].$freeze()].$freeze()); - - Opal.def(self, '$use_previous_job_chart', $Villaciel_use_previous_job_chart$9 = function $$use_previous_job_chart(command) { - var $a, $b, self = this, match_data = nil, chart_symbol = nil, roll_result1 = nil, $case = nil, chart_text = nil, roll_result2 = nil, chart_title = nil; - - - match_data = command.$match(/PJ([VA]?)/); - chart_symbol = (function() {if (match_data['$[]'](1)['$==']("")) { - return "V" - } else { - return match_data['$[]'](1) - }; return nil; })(); - $b = self.$roll(1, $$($nesting, 'D6')), $a = Opal.to_ary($b), (roll_result1 = ($a[0] == null ? nil : $a[0])), $b; - $b = (function() {$case = chart_symbol; - if ("V"['$===']($case)) {return self.$get_table_by_1d6($$($nesting, 'VILLACIEL_PREVIOUS_JOB_CHART')['$[]']($rb_divide($rb_minus(roll_result1, 1), 3)))} - else if ("A"['$===']($case)) {return self.$get_table_by_1d6($$($nesting, 'ARMESEAR_PREVIOUS_JOB_CHART')['$[]']($rb_divide($rb_minus(roll_result1, 1), 2)))} - else { return nil }})(), $a = Opal.to_ary($b), (chart_text = ($a[0] == null ? nil : $a[0])), (roll_result2 = ($a[1] == null ? nil : $a[1])), $b; - chart_title = (function() {$case = chart_symbol; - if ("V"['$===']($case)) {return "前職表(ヴィラシエル)"} - else if ("A"['$===']($case)) {return "前職表(アルメサール)"} - else { return nil }})(); - return "" + (chart_title) + " > [" + (roll_result1) + "," + (roll_result2) + "] > " + (chart_text); - }, $Villaciel_use_previous_job_chart$9.$$arity = 1); - Opal.const_set($nesting[0], 'VILLACIEL_PETIT_QUEST_CHART', [["家の補強のために: 【目的:木を1個納品】【報酬:各自2プサイ】見えを張っていい木材で家を作ったら木材が枯渇しちまった。頼む、原木を分けてくれないか?", "孫のために: 【目的:花を1個納品】【報酬:各自2プサイ】綺麗な花があればいい色に染められるだろうと思うてな。孫のために必要なの。", "人間界の草: 【目的:草を2個納品】【報酬:各自3プサイ】魔界にはない草が生えていると噂で聞いたことがある。その草がほしい。", "種の生存のために: 【目的:可食植物(改良種を除く)を1個納品】【報酬:各自1プサイ】育ちが悪い同種の植物と掛け合わせてみたいのでサンプルがほしい。", "にんげんのたべもの!: 【目的:可食植物(改良種を除く)を1個納品】【報酬:各自2プサイ】ひゅーいあはなにをたべるの! たべたい!", "まかいのたべものって?: 【目的:可食植物の改良種を2個納品】【報酬:各自3プサイ】まぞくさんはなにたべるですか! おしえてください。"].$freeze(), ["おうちなおしたいの!: 【目的:石材を1個納品】【報酬:各自1プサイ】おうちがぼろぼろだから、ママのかわりになおしたいの。", "娘の結婚式に必要なんだ!: 【目的:宝石を2個納品】【報酬:各自3プサイ】ちょっとさきなんですが、娘が結婚するので結婚式用の宝石を集めています。", "金属がたりない!: 【目的:金属を1個納品】【報酬:各自2プサイ】いい武器にはいい金属を。今回必要なのは……。", "村の聖堂を直したいんだ!: 【目的:石材を1個納品】【報酬:各自2プサイ】聖堂を直していたが石材がたりない!", "弟の甲冑に使うんだ!: 【目的:金属を2個納品】【報酬:各自3プサイ】最近、近くの鉱山から「ある金属」が姿を消した。", "おねえちゃんのたんじょうびに: 【目的:宝石を1個納品】【報酬:各自2プサイ】たんじょうびぷれぜんとにほうせきあげたらおねえちゃんよろこぶかな?"].$freeze(), ["パパのために: 【目的:木材の家具を1個納品】【報酬:各自2プサイ】はたらいてばっかりのパパにプレゼントしたいの。おねがいします!", "癒やされたい……: 【目的:石材の家具を1個納品】【報酬:各自2プサイ】仕事時間は短いとはいえ、激務。めちゃつらい。癒しになる家具がほしい。", "いい家具に囲まれてみたい: 【目的:金属の家具を1個納品】【報酬:各自2プサイ】開拓も最高だけど、他の島の人とも交流したい。人を呼べるような家を作るためには最高の家具が必要!", "家具の在庫不足: 【目的:木材の装飾品を1個納品】【報酬:各自3プサイ】困ったことに職人に逃げられた! このままじゃ、お店開けない!!", "と、ともだちにあげるの!: 【目的:石材の装飾品を1個納品】【報酬:各自3プサイ】えっと、お、おきにいりのともだちがいるんだ。そ、そのこのたんじょうびだから、プレゼントしたくって。", "親の木に飾りを: 【目的:金属の装飾品を1個納品】【報酬:各自3プサイ】元気のない親の木を心配してペッコ達が大騒ぎしているんだ。君はいつまでも美しいよと伝えたくてね。一つ助力をお願いするよ。"].$freeze(), ["そちらの河魚を食してみたい: 【目的:河魚を2個納品】【報酬:各自3プサイ】おいしい河魚がいるときいたことがあるのです。さぁ、はやく、釣ってきてくださいまし。", "研究に使用したい: 【目的:湖魚を1個納品】【報酬:各自1プサイ】そちらの世界にある同名の魚が本当にこちらの世界にいるものと一緒か確かめたいのです。", "しろいくもにすむおさかながみたい!: 【目的:白雲の雲魚を1個納品】【報酬:各自2プサイ】こっちにはしろいくもってなかなかないの! しろいくものおさかな、たべてみたいな。", "釣り師がいないのでお魚がほしい: 【目的:灰雲の雲魚を2個納品】【報酬:各自3プサイ】野菜や肉もいいが魚も食べたい……。頼む、魚を釣ってきてくれないか?", "まっくろなくもにすむおさかな!: 【目的:黒雲の雲魚を1個納品】【報酬:各自2プサイ】まっくろなくもにはどんなさかながすんでるの? みせて、みせて!", "人間界では見られない魚が見たい!: 【目的:共通の雲魚を1個納品】【報酬:各自2プサイ】他の魚の雲を利用して泳ぎ回る魚がいると聞いたよ。ぜひ見せてほしいな。"].$freeze()].$freeze()); - Opal.const_set($nesting[0], 'ARMESEAR_PETIT_QUEST_CHART', [["お祭り用の布が足りないの!: 【目的:布を2個納品】【報酬:各自4プサイ】お祭り前なのに、布職人が腰を痛めちゃったの!", "お洋服がぼろぼろになっちゃったの: 【目的:布を1個納品】【報酬:各自2プサイ】おばあちゃんに作ってもらった服がボロボロになっちゃったから、なおしたいの。", "ぎっくり腰からのヘルプ: 【目的:薪を3個納品】【報酬:各自3プサイ】仕事してたらぎっくり腰になっちゃったのだ。頼むのだ。", "不調には栄養たっぷりのミルクを: 【目的:ミルクを1個納品】【報酬:各自3プサイ】体調を崩しちゃったの。栄養満点のミルクを頂戴。", "材料がたりない!: 【目的:???の粗皮を1個納品】【報酬:各自3プサイ】革細工師を目指してるんだけど、皮が足りないんだ。種類は問わないから、早めに頼むよ。", "愛しのガードナーのために: 【目的:???の肉を1個納品】【報酬:各自3プサイ】ガードナーの調子が悪いから、栄養をつけさせたいんだ。肉はなんだっていい、とびっきりのを頼むよ。"].$freeze(), ["灯火をひとつ: 【目的:キャンドルを1個納品】【報酬:各自3プサイ】家の裏に知らない建物があるんだ。まっくらだから明かりが必要で……。", "布の色を頂戴: 【目的:染料を1個納品】【報酬:各自2プサイ】んー、コンテストのために布を織ったのだけど、色が決められないんだ。お願いするよ。", "きれいなのお花を: 【目的:花を1個納品】【報酬:各自2プサイ】パパの誕生日プレゼントを妹と作りたいんだ。お願いできる?", "旅立ちのために: 【目的:衣類を1個納品】【報酬:各自15プサイ】旅立つ弟に服をプレゼントしたいんだ。", "納品物が足りない!: 【目的:革を1個納品】【報酬:各自4プサイ】どうしても納品する皮がたりない……頼む、なんとか用意できないか?", "求)照明: 【目的:照明を1個納品】【報酬:各自10プサイ】引っ越しする最中に照明を壊してしまった! 明日から明かりがないのはつらい……。作ってくれないか?"].$freeze(), ["装備の修復のため: 【目的:革を2個納品】【報酬:各自5プサイ】大事な装備が壊れちゃったんだ! 直すのに必要なんだけど、革を持っているかい?", "主に祝いの品を: 【目的:敷物を1個納品】【報酬:各自15プサイ】誕生日を迎える主にささやかなながらわたしからも祝いの品を送りたいのです。", "手料理を求めて: 【目的:出来栄え5の料理を1個納品】【報酬:各自5プサイ】たまには誰かの料理が食べたいんだ。", "釣り竿が折れちゃって……: 【目的:塩魚を2個納品】【報酬:各自3プサイ】釣り竿が折れちゃったから釣りができないんだ。一匹頼める?", "蝋がほしいの: 【目的:蝋を1個納品】【報酬:各自2プサイ】お兄ちゃんとパパの誕生日プレゼントを作るの。見つからないからお願いできる?", "美しさを求めて: 【目的:アルメサール産の花を1個納品】【報酬:各自3プサイ】美しいお花を摘んで来てくださらない? 美のために必要でしてよ。"].$freeze()].$freeze()); - - Opal.def(self, '$use_petit_quest_chart', $Villaciel_use_petit_quest_chart$10 = function $$use_petit_quest_chart(command) { - var $a, $b, self = this, match_data = nil, chart_symbol = nil, roll_result1 = nil, $case = nil, chart_index = nil, chart_text = nil, roll_result2 = nil, chart_title = nil; - - - match_data = command.$match(/PQ([VA]?)/); - chart_symbol = (function() {if (match_data['$[]'](1)['$==']("")) { - return "V" - } else { - return match_data['$[]'](1) - }; return nil; })(); - $b = self.$roll(1, $$($nesting, 'D6')), $a = Opal.to_ary($b), (roll_result1 = ($a[0] == null ? nil : $a[0])), $b; - $b = (function() {$case = chart_symbol; - if ("V"['$===']($case)) { - chart_index = (function() {$case = roll_result1; - if ((1)['$===']($case) || (2)['$===']($case)) {return 0} - else if ((3)['$===']($case) || (4)['$===']($case)) {return 1} - else if ((5)['$===']($case)) {return 2} - else if ((6)['$===']($case)) {return 3} - else { return nil }})(); - return self.$get_table_by_1d6($$($nesting, 'VILLACIEL_PETIT_QUEST_CHART')['$[]'](chart_index));} - else if ("A"['$===']($case)) {return self.$get_table_by_1d6($$($nesting, 'ARMESEAR_PETIT_QUEST_CHART')['$[]']($rb_divide($rb_minus(roll_result1, 1), 2)))} - else { return nil }})(), $a = Opal.to_ary($b), (chart_text = ($a[0] == null ? nil : $a[0])), (roll_result2 = ($a[1] == null ? nil : $a[1])), $b; - chart_title = (function() {$case = chart_symbol; - if ("V"['$===']($case)) {return "ぷちクエスト表(ヴィラシエル)"} - else if ("A"['$===']($case)) {return "ぷちクエスト表(アルメサール)"} - else { return nil }})(); - return "" + (chart_title) + " > [" + (roll_result1) + "," + (roll_result2) + "] > " + (chart_text); - }, $Villaciel_use_petit_quest_chart$10.$$arity = 1); - Opal.const_set($nesting[0], 'ACCIDENT_CHART', ["飛び猪襲来!: 空飛ぶ猪が浮遊島めがけて突撃してきた! 建物が粉砕される前に迎撃だ!(「蒼天のヴィラシエル」P.46)", "嵐がくるぞ!: 嵐が来るらしいぞ! どれだけ対策できるかが鍵だ!(「蒼天のヴィラシエル」P.47)", "雨が降らないぞ!: おかしいなぁ、雨が降らないぞぉ……? こうなったら雨乞いの踊りだ!(「蒼天のヴィラシエル」P.48)", "トビウオ流星群: きらきら光る流れ星……いや待て! あれはトビウオの群れだー!?(「蒼天のヴィラシエル」P.49)", "すごい雷雨: すごい。ごろごろばりばり聞こえてくる。これは早々に対策しないと直撃するぞ!(「蒼天のヴィラシエル」P.50)", "野菜泥棒出現!: 畑の野菜が盗まれているぞ……? これは犯人を捕まえないと!(「蒼天のヴィラシエル」P.51)"].$freeze()); - - Opal.def(self, '$use_accident_chart', $Villaciel_use_accident_chart$11 = function $$use_accident_chart(_command) { - var $a, $b, self = this, chart_text = nil, roll_result = nil; - - - $b = self.$get_table_by_1d6($$($nesting, 'ACCIDENT_CHART')), $a = Opal.to_ary($b), (chart_text = ($a[0] == null ? nil : $a[0])), (roll_result = ($a[1] == null ? nil : $a[1])), $b; - return "" + "アクシデント表 > [" + (roll_result) + "] > " + (chart_text); - }, $Villaciel_use_accident_chart$11.$$arity = 1); - - Opal.def(self, '$use_6x6_chart', $Villaciel_use_6x6_chart$12 = function $$use_6x6_chart(chart, chart_name) { - var $a, $b, self = this, y_roll = nil, cell_text = nil, x_roll = nil; - - - $b = self.$roll(1, $$($nesting, 'D6')), $a = Opal.to_ary($b), (y_roll = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$get_table_by_1d6(chart['$[]']($rb_minus(y_roll, 1))), $a = Opal.to_ary($b), (cell_text = ($a[0] == null ? nil : $a[0])), (x_roll = ($a[1] == null ? nil : $a[1])), $b; - return "" + (chart_name) + " > [" + (y_roll) + "," + (x_roll) + "] > 下" + (y_roll) + "マス、右" + (x_roll) + "マス > " + (cell_text); - }, $Villaciel_use_6x6_chart$12.$$arity = 2); - Opal.const_set($nesting[0], 'MOHUMOHU_INSECT_CHART', [["小さな虫", "小さな虫", "カマキリ", "カマキリ", "バッタ", "クワガタ"].$freeze(), ["小さな虫", "カラスアゲハ", "カマキリ", "バッタ", "オオスカシバ", "カイコ"].$freeze(), ["ハンミョウ", "カラスアゲハ", "カマキリ", "バッタ", "カイコ", "トンボ"].$freeze(), ["ハンミョウ", "カラスアゲハ", "カラスアゲハ", "チッチハチ", "トンボ", "トンボ"].$freeze(), ["クワガタ", "カラスアゲハ", "チッチハチ", "チッチハチ", "アリ", "アリ"].$freeze(), ["クワガタ", "チッチハチ", "チッチハチ", "チッチハチ", "アリ", "アリ"].$freeze()].$freeze()); - Opal.const_set($nesting[0], 'MOHUMOHU_ANIMAL_CHART', [["トリサン", "トリサン", "ブタ", "ヒツジ", "タヌキ", "タヌキ"].$freeze(), ["トリサン", "ブタ", "ヒツジ", "ウッシ", "キツネ", "タヌキ"].$freeze(), ["ブタ", "オグマ", "ヒツジ", "キツネ", "キツネ", "アタウサギ"].$freeze(), ["ブタ", "ヒツジ", "ヒツジ", "リス", "シシ", "ヴィラシエル種(MMV)"].$freeze(), ["ウッシ", "ウサギ", "ウサギ", "シシ", "アタウサギ", "オオカミ"].$freeze(), ["ウッシ", "オグマ", "クーマ", "シシ", "オオカミ", "ヴィラシエル種(MMV)"].$freeze()].$freeze()); - Opal.const_set($nesting[0], 'MOHUMOHU_VILLACIEL_CHART', [["ウドン", "ウドン", "オボン", "オボン", "オボン", "オワン"].$freeze(), ["ウドン", "ウドン", "オボン", "オワン", "オワン", "オワン"].$freeze()].$freeze()); - Opal.const_set($nesting[0], 'MOHUMOHU_VILLACIEL2_CHART', [["すねーくあし", "すねーくあし", "すねーくあし", "ウタヒ", "オオトリサン", "オオトリサン"].$freeze(), ["すねーくあし", "すねーくあし", "ホネホネ", "オオトリサン", "アマアマガニ", "ホワホワ"].$freeze(), ["すねーくあし", "ホネホネ", "オオトリサン", "ウタヒ", "アマアマガニ", "ペロリ"].$freeze(), ["オオトリサン", "オオトリサン", "ホネホネ", "ホネホネ", "ホワホワ", "アマアマガニ"].$freeze(), ["ホネホネ", "ウタヒ", "アマアマガニ", "ペロリ", "ペロリ", "ペロリ"].$freeze(), ["オオトリサン", "ホワホワ", "ホワホワ", "アマアマガニ", "ペロリ", "ペロリ"].$freeze()].$freeze()); - Opal.const_set($nesting[0], 'MOHUMOHU_DRAGON_CHART', [["モドモドリス", "テロメ", "モドモドリス", "オジサン", "オジサン", "グロッチ"].$freeze(), ["テロメ", "モドモドリス", "オジサン", "テロメ", "ニホンツノ", "グロッチ"].$freeze(), ["テロメ", "グロッチ", "グロッチ", "グロッチ", "オジサン", "コディ"].$freeze(), ["モドモドリス", "グロッチ", "ニホンツノ", "テロメ", "テーリー", "ケラプス"].$freeze(), ["オジサン", "テロメ", "テロメ", "コディ", "コディ", "ケラプス"].$freeze(), ["コディ", "テーリー", "テーリー", "コディ", "ケラプス", "アサール・ゴッツ"].$freeze()].$freeze()); - - Opal.def(self, '$use_mohumohu_chart', $Villaciel_use_mohumohu_chart$13 = function $$use_mohumohu_chart(command) { - var $a, $b, self = this, $case = nil, match_data = nil, chart_symbol = nil, y_roll = nil, cell_text = nil, x_roll = nil; - - return (function() {$case = command; - if ("MMI"['$===']($case)) {return self.$use_6x6_chart($$($nesting, 'MOHUMOHU_INSECT_CHART'), "もふもふ表・昆虫")} - else if ("MMA"['$===']($case)) {return self.$use_6x6_chart($$($nesting, 'MOHUMOHU_ANIMAL_CHART'), "もふもふ表・動物")} - else if (/MMV[VA]?/['$===']($case)) { - match_data = command.$match(/MMV([VA]?)/); - chart_symbol = (function() {if (match_data['$[]'](1)['$==']("")) { - return "V" - } else { - return match_data['$[]'](1) - }; return nil; })(); - return (function() {$case = chart_symbol; - if ("V"['$===']($case)) { - $b = self.$roll(1, $$($nesting, 'D6')), $a = Opal.to_ary($b), (y_roll = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$get_table_by_1d6($$($nesting, 'MOHUMOHU_VILLACIEL_CHART')['$[]']($rb_minus(1, y_roll['$%'](2)))), $a = Opal.to_ary($b), (cell_text = ($a[0] == null ? nil : $a[0])), (x_roll = ($a[1] == null ? nil : $a[1])), $b; - return "" + "もふもふ表・ヴィラシエル種(ヴィラシエル) > [" + (y_roll) + "," + (x_roll) + "] > 下" + ((function() {if ($truthy(y_roll['$even?']())) { - return "偶数" - } else { - return "奇数" - }; return nil; })()) + "、右" + (x_roll) + "マス > " + (cell_text);} - else if ("A"['$===']($case)) {return self.$use_6x6_chart($$($nesting, 'MOHUMOHU_VILLACIEL2_CHART'), "もふもふ表・ヴィラシエル種(アルメサール)")} - else { return nil }})();} - else if ("MMD"['$===']($case)) {return self.$use_6x6_chart($$($nesting, 'MOHUMOHU_DRAGON_CHART'), "もふもふ表・鋼龍種")} - else { return nil }})() - }, $Villaciel_use_mohumohu_chart$13.$$arity = 1); - Opal.const_set($nesting[0], 'FISHING_LAKE_CHART', [["ヤマアイズリ", "ヤマアイズリ", "ヤマアイズリ", "シコウチャ", "シコウチャ", "ハナロクショウ"].$freeze(), ["ヤマアイズリ", "ヤマアイズリ", "ヤマアイズリ", "シコウチャ", "ハナロクショウ", "ハナロクショウ"].$freeze(), ["ヤマアイズリ", "ヤマアイズリ", "シコウチャ", "シコウチャ", "ハナモエギ", "トノチャ"].$freeze(), ["ヤマアイズリ", "カラスアゲハ", "シコウチャ", "ハナロクショウ", "トノチャ", "ハナモエギ"].$freeze(), ["シコウチャ", "シコウチャ", "ハナロクショウ", "ハナロクショウ", "トノチャ", "ハナモエギ"].$freeze(), ["シコウチャ", "ハナロクショウ", "トノチャ", "トノチャ", "ハナモエギ", "シンペキ"].$freeze()].$freeze()); - Opal.const_set($nesting[0], 'FISHING_RIVER_CHART', [["ケイカンセキ", "ケイカンセキ", "ケイカンセキ", "ケイカンセキ", "カナリア", "イワヌ"].$freeze(), ["ケイカンセキ", "ケイカンセキ", "カナリア", "カナリア", "カナリア", "イワヌ"].$freeze(), ["ケイカンセキ", "ケイカンセキ", "カナリア", "イワヌ", "イワヌ", "ヤマブキ"].$freeze(), ["ケイカンセキ", "カナリア", "イワヌ", "アメイロ", "アメイロ", "ヤマブキ"].$freeze(), ["カナリア", "カナリア", "イワヌ", "アメイロ", "ヤマブキ", "ヤマブキ"].$freeze(), ["カナリア", "イワヌ", "アメイロ", "アメイロ", "ヤマブキ", "コハク"].$freeze()].$freeze()); - Opal.const_set($nesting[0], 'FISHING_WHITE_CHART', [["ウメガサネ", "ウメガサネ", "ウメガサネ", "ウメガサネ", "ハネズ", "ユルシ"].$freeze(), ["ウメガサネ", "ウメガサネ", "ウメガサネ", "ハネズ", "ソホ", "シンク"].$freeze(), ["ウメガサネ", "ウメガサネ", "ハネズ", "ソホ", "ユルシ", "ユルシ"].$freeze(), ["ウメガサネ", "ハネズ", "ソホ", "ユルシ", "シンク", "シンク"].$freeze(), ["ハネズ", "ソホ", "ソホ", "ユルシ", "シンク", "共通(FC)"].$freeze(), ["ハネズ", "ソホ", "ユルシ", "シンク", "共通(FC)", "シュアン"].$freeze()].$freeze()); - Opal.const_set($nesting[0], 'FISHING_GRAY_CHART', [["ウメガサネ", "ウメガサネ", "セイラン", "セイラン", "ミハナダ", "ミハナダ"].$freeze(), ["ウメガサネ", "セイラン", "セイラン", "ミハナダ", "ミハナダ", "ミハナダ"].$freeze(), ["ウメガサネ", "ユルシ", "ミハナダ", "ミハナダ", "ミハナダ", "リンドウ"].$freeze(), ["ユルシ", "ユルシ", "セイラン", "リンドウ", "リンドウ", "スミレ"].$freeze(), ["ユルシ", "ユルシ", "リンドウ", "スミレ", "スミレ", "共通(FC)"].$freeze(), ["ユルシ", "リンドウ", "スミレ", "スミレ", "共通(FC)", "シゴク"].$freeze()].$freeze()); - Opal.const_set($nesting[0], 'FISHING_BLACK_CHART', [["セイラン", "セイラン", "テツコン", "テツコン", "ウスハナ", "ウスハナ"].$freeze(), ["セイラン", "セイラン", "テツコン", "ウスハナ", "ウスハナ", "フカガワネズミ"].$freeze(), ["セイラン", "テツコン", "ウスハナ", "ウスハナ", "ミハナダ", "フカガワネズミ"].$freeze(), ["セイラン", "テツコン", "ミハナダ", "ウスハナ", "フカガワネズミ", "フカガワネズミ"].$freeze(), ["セイラン", "ウスハナ", "ミハナダ", "ミハナダ", "ミハナダ", "共通(FC)"].$freeze(), ["テツコン", "ウスハナ", "ミハナダ", "フカガワネズミ", "共通(FC)", "ルリ"].$freeze()].$freeze()); - Opal.const_set($nesting[0], 'FISHING_COMMON_CHART', [["トビウオ", "トビウオ", "トビウオ", "オオガメ", "ロブスター", "オオサンショウウオ"].$freeze(), ["トビウオ", "トビウオ", "エイ", "オオガメ", "クジラ", "ロブスター"].$freeze(), ["トビウオ", "エイ", "マグロ", "マグロ", "カジキ", "イタチザメ"].$freeze(), ["トビウオ", "ミズダコ", "クラゲ", "マグロ", "オオクラゲ", "ハンマーヘッド・シャーク"].$freeze(), ["トビウオ", "エイ", "オオガメ", "オオガメ", "イタチザメ", "ミズダコ"].$freeze(), ["トビウオ", "クラゲ", "ロブスター", "ハンマーヘッド・シャーク", "ミズダコ", "ダイオウイカ"].$freeze()].$freeze()); - Opal.const_set($nesting[0], 'FISHING_SALT_LAKE_CHART', [["シラユリ", "シラユリ", "シラユリ", "ゲッパク", "ゲッパク", "ゲッパク"].$freeze(), ["シラユリ", "シラユリ", "シラユリ", "ゲッパク", "スズ", "ナマリ"].$freeze(), ["シラユリ", "ゲッパク", "ゲッパク", "スズ", "ナマリ", "ナマリ"].$freeze(), ["シラユリ", "シラユリ", "ナマリ", "ナマリ", "ナマリ", "ナマリ"].$freeze(), ["ゲッパク", "ゲッパク", "スズ", "スズ", "ロイロ", "ロイロ"].$freeze(), ["ナマリ", "スズ", "スズ", "スズ", "ロイロ", "クロツルバミ"].$freeze()].$freeze()); - - Opal.def(self, '$use_fishing_chart', $Villaciel_use_fishing_chart$14 = function $$use_fishing_chart(command) { - var self = this, $case = nil; - - return (function() {$case = command; - if ("FL"['$===']($case)) {return self.$use_6x6_chart($$($nesting, 'FISHING_LAKE_CHART'), "釣り・湖表")} - else if ("FR"['$===']($case)) {return self.$use_6x6_chart($$($nesting, 'FISHING_RIVER_CHART'), "釣り・河表")} - else if ("FW"['$===']($case)) {return self.$use_6x6_chart($$($nesting, 'FISHING_WHITE_CHART'), "釣り・白雲表")} - else if ("FG"['$===']($case)) {return self.$use_6x6_chart($$($nesting, 'FISHING_GRAY_CHART'), "釣り・灰雲表")} - else if ("FB"['$===']($case)) {return self.$use_6x6_chart($$($nesting, 'FISHING_BLACK_CHART'), "釣り・黒雲表")} - else if ("FC"['$===']($case)) {return self.$use_6x6_chart($$($nesting, 'FISHING_COMMON_CHART'), "釣り・共通表")} - else if ("FS"['$===']($case)) {return self.$use_6x6_chart($$($nesting, 'FISHING_SALT_LAKE_CHART'), "釣り・塩湖表")} - else { return nil }})() - }, $Villaciel_use_fishing_chart$14.$$arity = 1); - Opal.const_set($nesting[0], 'INEDIBLE_PLANT_CHART', [["シュイの花", "ダデオの花", "ロキの花", "シェラの花", "トトイト", "ポロネイマ"].$freeze(), ["シュイの花", "ロキの花", "アウディの花", "イディウの花", "トトイト", "ポロネイマ"].$freeze(), ["ダデオの花", "アウディの花", "イディウの花", "マトイト", "ポポトマ", "ルタタ"].$freeze(), ["シュイの花", "ミカギの花", "ロトイト", "ロトイト", "ツルイド", "ルタタ"].$freeze(), ["ミカギの花", "ロトイト", "ロトイト", "ツルイド", "ルタタ", "変異植物(MP)"].$freeze(), ["トトイト", "マトイト", "ポポトマ", "ツルイド", "変異植物(MP)", "サボサボ"].$freeze()].$freeze()); - Opal.const_set($nesting[0], 'INEDIBLE_PLANT2_CHART', [["マトラの花", "マトラの花", "蜜蝋", "ポルラの花", "ウェスドの花", "ポルラの花"].$freeze(), ["マトラの花", "ホイの花", "マトラの花", "ウェスドの花", "蜜蝋", "ロロの花"].$freeze(), ["ホイの花", "ポルラの花", "ウェスドの花", "ホイの花", "ポルラの花", "ポルラの花"].$freeze(), ["ポルラの花", "ホイの花", "ロロの花", "ウェスドの花", "ポルラの花", "ドダの実"].$freeze(), ["ポルラの花", "ウェスドの花", "ロロの花", "ロロの花", "ロロの花", "ロロの花"].$freeze(), ["ウェスドの花", "ロロの花", "ポルラの花", "ロロの花", "ドダの実", "ロロの花"].$freeze()].$freeze()); - - Opal.def(self, '$use_inedible_plant_chart', $Villaciel_use_inedible_plant_chart$15 = function $$use_inedible_plant_chart(command) { - var self = this, match_data = nil, chart_symbol = nil, $case = nil; - - - match_data = command.$match(/IP([VA]?)/); - chart_symbol = (function() {if (match_data['$[]'](1)['$==']("")) { - return "V" - } else { - return match_data['$[]'](1) - }; return nil; })(); - return (function() {$case = chart_symbol; - if ("V"['$===']($case)) {return self.$use_6x6_chart($$($nesting, 'INEDIBLE_PLANT_CHART'), "不食植物表(ヴィラシエル)")} - else if ("A"['$===']($case)) {return self.$use_6x6_chart($$($nesting, 'INEDIBLE_PLANT2_CHART'), "不食植物表(アルメサール)")} - else { return nil }})(); - }, $Villaciel_use_inedible_plant_chart$15.$$arity = 1); - Opal.const_set($nesting[0], 'EDIBLE_PLANT_CHARTS', [[["小麦", "小麦", "さつまいも", "ねぎ", "白菜", "きゅうり"].$freeze(), ["小麦", "さつまいも", "さといも", "白菜", "白菜", "とうもろこし"].$freeze(), ["さといも", "さといも", "ねぎ", "白菜", "とうもろこし", "枝豆"].$freeze(), ["シソ", "ひらたけ", "エリンギ", "枝豆", "枝豆", "ラズベリー"].$freeze(), ["シソ", "ひらたけ", "ひらたけ", "エリンギ", "ラズベリー", "さといも"].$freeze(), ["ナシ", "ナシ", "ナシ", "ラズベリー", "ラズベリー", "さといも"].$freeze()].$freeze(), [["米", "米", "にんじん", "じゃがいも", "ふき", "まいたけ"].$freeze(), ["米", "じゃがいも", "じゃがいも", "にら", "ふき", "きくらげ"].$freeze(), ["冬瓜", "しょうが", "冬瓜", "ふき", "ふき", "きくらげ"].$freeze(), ["しょうが", "冬瓜", "ビワ", "にら", "まいたけ", "まいたけ"].$freeze(), ["ビワ", "ビワ", "もも", "かぼちゃ", "グリーンピース", "まいたけ"].$freeze(), ["ビワ", "もも", "もも", "かぼちゃ", "かぼちゃ", "かぼちゃ"].$freeze()].$freeze(), [["もち米", "トマト", "オクラ", "とうがらし", "大根", "グミ"].$freeze(), ["もち米", "オクラ", "オクラ", "大根", "大根", "とうがらし"].$freeze(), ["しいたけ", "マッシュルーム", "オクラ", "グミ", "玉ねぎ", "小松菜"].$freeze(), ["ブロッコリー", "しいたけ", "トマト", "玉ねぎ", "さやえんどう", "玉ねぎ"].$freeze(), ["しいたけ", "マッシュルーム", "ブロッコリー", "小松菜", "さやえんどう", "改良種(IS)"].$freeze(), ["マッシュルーム", "ブロッコリー", "マッシュルーム", "小松菜", "改良種(IS)", "グミ"].$freeze()].$freeze(), [["大豆", "大豆", "にんにく", "そらまめ", "しめじ", "みかん"].$freeze(), ["かぶ", "大豆", "かぶ", "キャベツ", "そらまめ", "みかん"].$freeze(), ["にんにく", "かぶ", "にんにく", "しめじ", "クランベリー", "ピーマン"].$freeze(), ["キャベツ", "キャベツ", "ほうれん草", "しめじ", "レタス", "ピーマン"].$freeze(), ["ほうれん草", "ほうれん草", "クランベリー", "レタス", "ピーマン", "改良種(IS)"].$freeze(), ["松茸", "ほうれん草", "松茸", "レタス", "クランベリー", "改良種(IS)"].$freeze()].$freeze(), [["小豆", "れんこん", "みつば", "やまのいも", "デコポン", "イチゴ"].$freeze(), ["れんこん", "れんこん", "小豆", "なめこ", "かいわれ大根", "なめこ"].$freeze(), ["やまのいも", "アスパラガス", "なす", "なめこ", "やまのいも", "デコポン"].$freeze(), ["なす", "やまのいも", "みつば", "えのきたけ", "かいわれ大根", "デコポン"].$freeze(), ["アスパラガス", "アスパラガス", "やまのいも", "みつば", "なめこ", "改良種(IS)"].$freeze(), ["なす", "もやし", "えのきたけ", "えのきたけ", "改良種(IS)", "イチゴ"].$freeze()].$freeze()].$freeze()); - Opal.const_set($nesting[0], 'EDIBLE_PLANT2_CHARTS', [[["テンサイ", "バノ", "テンサイ", "サトウモロ", "サトウモロ", "パンノミ"].$freeze(), ["テンサイ", "バノ", "サトウモロ", "バノ", "ミソレグア", "パンノミ"].$freeze(), ["テンサイ", "サトウモロ", "バノ", "ニクニク", "パンノミ", "メーズム"].$freeze(), ["バノ", "バノ", "バノ", "パンノミ", "ミソレグア", "メーズム"].$freeze(), ["テンサイ", "パンノミ", "ニクニク", "ニクニク", "メーズム", "ミソレグア"].$freeze(), ["サトウモロ", "ニクニク", "メーズム", "ミソレグア", "メーズム", "メーズム"].$freeze()].$freeze(), [["アロアベリー", "パンノミ", "ミソレグア", "サイングア", "パンノミ", "アロアベリー"].$freeze(), ["パンノミ", "サイングア", "パンノミ", "ミソレグア", "アロアベリー", "ミソレグア"].$freeze(), ["パンノミ", "アロアベリー", "サイングア", "パンノミ", "パンノミ", "トロアベリア"].$freeze(), ["パンノミ", "アロアベリー", "パンノミ", "ミソレグア", "ミソレグア", "トロアベリア"].$freeze(), ["サイングア", "パンノミ", "トロアベリア", "ミソレグア", "アロアベリー", "サイングア"].$freeze(), ["ミソレグア", "トロアベリア", "サイングア", "アロアベリー", "トロアベリア", "トロアベリア"].$freeze()].$freeze()].$freeze()); - - Opal.def(self, '$use_villaciel_edible_plant_chart', $Villaciel_use_villaciel_edible_plant_chart$16 = function $$use_villaciel_edible_plant_chart(chart_id, output) { - var self = this; - - return (output = $rb_plus(output, self.$use_6x6_chart($$($nesting, 'EDIBLE_PLANT_CHARTS')['$[]']($rb_minus(chart_id, 1)), "" + "可食植物表" + (chart_id) + "(ヴィラシエル)"))) - }, $Villaciel_use_villaciel_edible_plant_chart$16.$$arity = 2); - - Opal.def(self, '$use_armesear_edible_plant_chart', $Villaciel_use_armesear_edible_plant_chart$17 = function $$use_armesear_edible_plant_chart(chart_id, output) { - var self = this; - - return (output = $rb_plus(output, self.$use_6x6_chart($$($nesting, 'EDIBLE_PLANT2_CHARTS')['$[]']($rb_minus(chart_id, 1)), "" + "可食植物表" + (chart_id) + "(アルメサール)"))) - }, $Villaciel_use_armesear_edible_plant_chart$17.$$arity = 2); - - Opal.def(self, '$use_edible_plant_chart', $Villaciel_use_edible_plant_chart$18 = function $$use_edible_plant_chart(command) { - var $a, $b, self = this, match_data = nil, chart_symbol = nil, $case = nil, roll_result = nil, chart_id = nil; - - - match_data = command.$match(/EP([VA]?)(\d?)/); - chart_symbol = (function() {if (match_data['$[]'](1)['$==']("")) { - return "V" - } else { - return match_data['$[]'](1) - }; return nil; })(); - return (function() {$case = chart_symbol; - if ("V"['$===']($case)) {return (function() {$case = match_data['$[]'](2); - if (""['$===']($case)) { - $b = self.$roll(1, $$($nesting, 'D6')), $a = Opal.to_ary($b), (roll_result = ($a[0] == null ? nil : $a[0])), $b; - if (roll_result['$==']($$($nesting, 'D6'))) { - return "(1D6) > [6] > 好きな表を選んでおっけー!"}; - return self.$use_villaciel_edible_plant_chart(roll_result, "" + "(1D6) > [" + (roll_result) + "] > ");} - else { - chart_id = match_data['$[]'](2).$to_i(); - if ($truthy(($truthy($a = $rb_ge(chart_id, 1)) ? $rb_le(chart_id, 5) : $a))) { - } else { - return "" - }; - return self.$use_villaciel_edible_plant_chart(chart_id, "");}})()} - else if ("A"['$===']($case)) {return (function() {$case = match_data['$[]'](2); - if (""['$===']($case)) { - $b = self.$roll(1, $$($nesting, 'D6')), $a = Opal.to_ary($b), (roll_result = ($a[0] == null ? nil : $a[0])), $b; - return self.$use_armesear_edible_plant_chart((function() {if ($truthy(roll_result['$even?']())) { - return 1 - } else { - return 2 - }; return nil; })(), "" + "(1D6) > [" + (roll_result) + "] > ");} - else { - chart_id = match_data['$[]'](2).$to_i(); - if ($truthy([1, 2]['$include?'](chart_id))) { - } else { - return "" - }; - return self.$use_armesear_edible_plant_chart(chart_id, "");}})()} - else { return nil }})(); - }, $Villaciel_use_edible_plant_chart$18.$$arity = 1); - Opal.const_set($nesting[0], 'MUTANT_PLANT_CHART', [["ガドゴン", "ガドゴン", "レディダン", "ボディア", "ブタマル", "ブタマル"].$freeze(), ["レディダン", "レディダン", "ボディア", "トロコッコ", "ブタマル", "ツァイド"].$freeze(), ["ボディア", "ボディア", "マメノキ", "ナッキュ", "ツァイド", "ボディア"].$freeze(), ["ナッキュ", "マメノキ", "ナッキュ", "ガドゴン", "レディダン", "レディダン"].$freeze(), ["ポメラマ", "ポメラマ", "ナッキュ", "ツァイド", "ガドゴン", "ボディア"].$freeze(), ["ナッキュ", "ツァイド", "ツァイド", "ツァイド", "ボディア", "グラディエゴ"].$freeze()].$freeze()); - - Opal.def(self, '$use_mutant_plant_chart', $Villaciel_use_mutant_plant_chart$19 = function $$use_mutant_plant_chart(_command) { - var self = this; - - return self.$use_6x6_chart($$($nesting, 'MUTANT_PLANT_CHART'), "変異植物表") - }, $Villaciel_use_mutant_plant_chart$19.$$arity = 1); - Opal.const_set($nesting[0], 'IMPROVED_SPECIES_CHART', [["ワワ", "ワワ", "ブラックカロット", "ビーズ", "レモン", "ブラッドオレンジ"].$freeze(), ["ポポ", "ポポ", "グランツェ", "オオカサゲ", "ブラッドオレンジ", "レモン"].$freeze(), ["ヒットト", "グランツェ", "ブラックベリー", "ピマット", "ブラッドオレンジ", "レモン"].$freeze(), ["ブルーベリー", "ヒットト", "グランツェ", "ブラッドオレンジ", "ユズ", "ブラックベリー"].$freeze(), ["ビーズ", "ピマット", "オオカサゲ", "ライム", "ブルーベリー", "ユズ"].$freeze(), ["ビーズ", "レッドキャベツ", "ライム", "オオカサゲ", "ライム", "リンゴ"].$freeze()].$freeze()); - return (Opal.def(self, '$use_improved_species_chart', $Villaciel_use_improved_species_chart$20 = function $$use_improved_species_chart(_command) { - var self = this; - - return self.$use_6x6_chart($$($nesting, 'IMPROVED_SPECIES_CHART'), "改良種表") - }, $Villaciel_use_improved_species_chart$20.$$arity = 1), nil) && 'use_improved_species_chart'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/WARPS.js b/src/assets/dicebot/WARPS.js deleted file mode 100644 index 6d2a709a1..000000000 --- a/src/assets/dicebot/WARPS.js +++ /dev/null @@ -1,43 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$<=', '$>=', '$==', '$!=', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'WARPS'); - - var $nesting = [self].concat($parent_nesting), $WARPS_check_2D6$1; - - - Opal.const_set($nesting[0], 'ID', "WARPS"); - Opal.const_set($nesting[0], 'NAME', "ワープス"); - Opal.const_set($nesting[0], 'SORT_KEY', "わあふす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "失敗、成功度の自動判定を行います。\n"); - return (Opal.def(self, '$check_2D6', $WARPS_check_2D6$1 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var $a, self = this; - - if ($truthy($rb_le(dice_total, 2))) { - return " > クリティカル" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > ファンブル" - } else if ($truthy((($a = cmp_op['$==']("<=")) ? target['$!=']("?") : cmp_op['$==']("<=")))) { - if ($truthy($rb_le(total, target))) { - return "" + " > " + ($rb_minus(target, total)) + "成功" - } else { - return " > 失敗" - } - } else { - return nil - } - }, $WARPS_check_2D6$1.$$arity = 5), nil) && 'check_2D6'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/WaresBlade.js b/src/assets/dicebot/WaresBlade.js deleted file mode 100644 index ce2c933fb..000000000 --- a/src/assets/dicebot/WaresBlade.js +++ /dev/null @@ -1,40 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$==', '$count', '$size', '$>=']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'WaresBlade'); - - var $nesting = [self].concat($parent_nesting), $WaresBlade_check_nD10$1; - - - Opal.const_set($nesting[0], 'ID', "WaresBlade"); - Opal.const_set($nesting[0], 'NAME', "ワースブレイド"); - Opal.const_set($nesting[0], 'SORT_KEY', "わあすふれいと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "nD10>=m 方式の判定で成否、完全成功、完全失敗を自動判定します。\n"); - return (Opal.def(self, '$check_nD10', $WaresBlade_check_nD10$1 = function $$check_nD10(total, _dice_total, dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if (dice_list.$count(10)['$=='](dice_list.$size())) { - return " > 完全成功" - } else if (dice_list.$count(1)['$=='](dice_list.$size())) { - return " > 絶対失敗" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $WaresBlade_check_nD10$1.$$arity = 5), nil) && 'check_nD10'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/Warhammer.js b/src/assets/dicebot/Warhammer.js deleted file mode 100644 index 3121fb0ed..000000000 --- a/src/assets/dicebot/Warhammer.js +++ /dev/null @@ -1,235 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_divide(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$upcase', '$===', '$last_match', '$getAttackResult', '$getCriticalResult', '$==', '$<=', '$floor', '$/', '$-', '$=~', '$to_i', '$>', '$<', '$roll', '$*', '$[]', '$+', '$>=', '$debug', '$!=', '$each', '$get_wh_atpos_message', '$step', '$length', '$check_1D100', '$%', '$wh_atpos']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Warhammer'); - - var $nesting = [self].concat($parent_nesting), $Warhammer_initialize$1, $Warhammer_rollDiceCommand$2, $Warhammer_check_1D100$3, $Warhammer_getCriticalResult$4, $Warhammer_wh_atpos$5, $Warhammer_get_wh_atpos_message$7, $Warhammer_getAttackResult$9; - - - Opal.const_set($nesting[0], 'ID', "Warhammer"); - Opal.const_set($nesting[0], 'NAME', "ウォーハンマー"); - Opal.const_set($nesting[0], 'SORT_KEY', "うおおはんまあ"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・クリティカル表(whHxx/whAxx/whBxx/whLxx)\n" + " \"WH部位 クリティカル値\"の形で指定します。部位は「H(頭部)」「A(腕)」「B(胴体)」「L(足)」の4カ所です。\n" + " 例)whH10 whA5 WHL4\n" + "・命中判定(WHx@t)\n" + " \"WH(命中値)@(種別)\"の形で指定します。\n" + " 種別は脚の数を数字、翼が付いているものは「W」、手が付いているものは「H」で書きます。\n" + " 「2H(二足)」「2W(有翼二足)」「4(四足)」「4H(半人四足)」「4W(有翼四足)」「W(鳥類)」となります。\n" + " 命中判定を行って、当たれば部位も表示します。\n" + " なお、種別指定を省略すると「二足」、「@」だけにすると全種別の命中部位を表示します。(コマンドを忘れた時の対応です)\n" + " 例)wh60  wh43@4W  WH65@\n"); - self.$setPrefixes(["WH.*"]); - - Opal.def(self, '$initialize', $Warhammer_initialize$1 = function $$initialize() { - var $iter = $Warhammer_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $Warhammer_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $Warhammer_initialize$1, false), $zuper, $iter); - self.sendMode = 2; - return (self.fractionType = "roundUp"); - }, $Warhammer_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $Warhammer_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var self = this, output_msg = nil, $case = nil, attackCommand = nil, criticalCommand = nil; - - - output_msg = nil; - $case = command.$upcase(); - if (/^(WH\d+(@[\dWH]*)?)/i['$===']($case)) { - attackCommand = $$($nesting, 'Regexp').$last_match(1); - output_msg = self.$getAttackResult(attackCommand);} - else if (/^(WH[HABTLW]\d+)/i['$===']($case)) { - criticalCommand = $$($nesting, 'Regexp').$last_match(1); - output_msg = self.$getCriticalResult(criticalCommand);}; - return output_msg; - }, $Warhammer_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$check_1D100', $Warhammer_check_1D100$3 = function $$check_1D100(total, _dice_total, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$==']("<=")) { - } else { - return "" - }; - if ($truthy($rb_le(total, target))) { - return "" + " > 成功(成功度" + ($rb_divide($rb_minus(target, total), 10).$floor()) + ")" - } else { - return "" + " > 失敗(失敗度" + ($rb_divide($rb_minus(total, target), 10).$floor()) + ")" - }; - }, $Warhammer_check_1D100$3.$$arity = 4); - - Opal.def(self, '$getCriticalResult', $Warhammer_getCriticalResult$4 = function $$getCriticalResult(string) { - var $a, $b, self = this, whh = nil, wha = nil, whb = nil, whl = nil, whw = nil, criticalTable = nil, output = nil, partsWord = nil, criticalValue = nil, whpp = nil, whppp = nil, $case = nil, dice_now = nil, crit_no = nil, crit_num = nil, resultText = nil; - - - whh = ["01:打撃で状況が把握出来なくなる。次ターンは1回の半アクションしか行なえない。", "02:耳を強打された為、耳鳴りが酷く目眩がする。1Rに渡って一切のアクションを行なえない。", "03:打撃が頭皮を酷く傷つけた。【武器技術度】に-10%。治療を受けるまで継続。", "04:鎧が損傷し当該部位のAP-1。修理するには(職能:鎧鍛冶)テスト。鎧を着けていないなら1Rの間アクションを行なえない。", "05:転んで倒れ、頭がくらくらする。1Rに渡ってあらゆるテストに-30で、立ち上がるには起立アクションが必要。", "06:1d10R気絶。", "07:1d10分気絶。以後CTはサドンデス。", "08:顔がずたずたになって倒れ、以後無防備状態。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると片方の視力を失う。", "09:凄まじい打撃により頭蓋骨が粉砕される。死は瞬時に訪れる。", "10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。"]; - wha = ["01:手に握っていたものを落とす。盾はくくりつけられている為、影響なし。", "02:打撃で腕が痺れ、1Rの間使えなくなる。", "03:手の機能が失われ、治療を受けるまで回復できない。手で握っていたもの(盾を除く)は落ちる。", "04:鎧が損傷する。当該部位のAP-1。修理するには(職能:鎧鍛冶)テスト。鎧を着けていないなら腕が痺れ、1Rの間使えなくなる。", "05:腕の機能が失われ、治療を受けるまで回復できない。手で握っていたもの(盾を除く)は落ちる。", "06:腕が砕かれる。手で握っていたもの(盾を除く)は落ちる。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。", "07:手首から先が血まみれの残骸と化す。手で握っていたもの(盾を除く)は落ちる。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑健】テストに失敗すると手の機能を失う。", "08:腕は血まみれの肉塊がぶら下がっている状態になる。手で握っていたもの(盾を除く)は落ちる。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑健】テストに失敗すると肘から先の機能を失う。", "09:大動脈に傷が及んだ。コンマ数秒の内に損傷した肩から血を噴出して倒れる。ショックと失血により、ほぼ即死する。", "10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。"]; - whb = ["01:打撃で息が詰まる。1Rの間、キャラクターの全てのテストや攻撃に-20%。", "02:股間への一撃。苦痛のあまり、1Rに渡って一切のアクションを行なえない。", "03:打撃で肋骨がぐちゃぐちゃになる。以後治療を受けるまでの間、【武器技術度】に-10%。", "04:鎧が損傷する。当該部位のAP-1。修理するには(職能:鎧鍛冶)テスト。鎧を着けていないなら股間への一撃、1Rに渡って一切のアクションを行なえない。", "05:転んで倒れ、息が詰まって悶絶する。1Rに渡ってあらゆるテストに-30の修正、立ち上がるには起立アクションが必要。", "06:1d10R気絶。", "07:ひどい内出血が起こり、無防備状態。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。", "08:脊髄が粉砕されて倒れ、以後治療を受けるまで無防備状態。以後CTはサドンデスを適用。【頑強】テストに失敗すると腰から下が不随になる。", "09:凄まじい打撃により複数の臓器が破裂し、死は数秒のうちに訪れる。", "10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。"]; - whl = ["01:よろめく。次のターン、1回の半アクションしか行なえない。", "02:脚が痺れる。1Rに渡って【移動】は半減し、脚に関連する【敏捷】テストに-20%。回避が出来なくなる。", "03:脚の機能が失われ、治療を受けるまで回復しない。【移動】は半減し、脚に関連する【敏捷】テストに-20%。回避が出来なくなる。", "04:鎧が損傷する。当該部位のAP-1。修理するには(職能:鎧鍛冶)テスト。鎧を着けていないなら脚が痺れる、1Rに渡って【移動】は半減し、脚に関連する【敏捷】テストに-20%、回避不可になる。", "05:転んで倒れ、頭がくらくらする。1Rに渡ってあらゆるテストに-30の修正、立ち上がるには起立アクションが必要。", "06:脚が砕かれ、無防備状態。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。", "07:脚は血まみれの残骸と化し、無防備状態になる。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると足首から先を失う。", "08:脚は血まみれの肉塊がぶらさがっている状態。以後無防備状態。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると膝から下を失う。", "09:大動脈に傷が及ぶ。コンマ数秒の内に脚の残骸から血を噴出して倒れ、ショックと出血で死は瞬時に訪れる。", "10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。"]; - whw = ["01:軽打。1ラウンドに渡って、あらゆるテストに-10%。", "02:かすり傷。+10%の【敏捷】テストを行い、失敗なら直ちに高度を1段階失う。地上にいるクリーチャーは、次のターンには飛び立てない。", "03:損傷する。【飛行移動力】が2点低下する。-10%の【敏捷】テストを行い、失敗なら直ちに高度を1段階失う。地上にいるクリーチャーは、次のターンには飛び立てない。", "04:酷く損傷する。【飛行移動力】が4点低下する。-30%の【敏捷】テストを行い、失敗なら直ちに高度を1段階失う。地上にいるクリーチャーは、1d10ターンが経過するまで飛び立てない。", "05:翼が使えなくなる。【飛行移動力】が0に低下する。飛行中のものは落下し、高度に応じたダメージを受ける。地上にいるクリーチャーは、怪我が癒えるまで飛び立てない。", "06:翼の付け根に傷が開く。【飛行移動力】が0に低下する。飛行中のものは落下し、高度に応じたダメージを受ける。地上にいるクリーチャーは、怪我が癒えるまで飛び立てない。治療を受けるまで毎R被害者のターン開始時に20%の確率で死亡。以後CTはサドンデスを適用。", "07:翼は血まみれの残骸と化し、無防備状態になる。【飛行移動力】が0に低下する。飛行中のものは落下し、高度に応じたダメージを受ける。地上にいるクリーチャーは、怪我が癒えるまで飛び立てない。治療を受けるまで毎R被害者のターン開始時に20%の確率で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると飛行能力を失う。", "08:翼が千切れてバラバラになり、無防備状態になる。【飛行移動力】が0に低下する。飛行中のものは落下し、高度に応じたダメージを受ける。地上にいるクリーチャーは、怪我が癒えるまで飛び立てない。治療を受けるまで毎R被害者のターン開始時に20%の確率で死亡。以後CTはサドンデスを適用。飛行能力を失う。", "09:大動脈が切断された。コンマ数秒の内に血を噴き上げてくずおれる、ショックと出血で死は瞬時に訪れる。", "10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。"]; - criticalTable = [5, 7, 9, 10, 10, 10, 10, 10, 10, 10, 5, 6, 8, 9, 10, 10, 10, 10, 10, 10, 4, 6, 8, 9, 9, 10, 10, 10, 10, 10, 4, 5, 7, 8, 9, 9, 10, 10, 10, 10, 3, 5, 7, 8, 8, 9, 9, 10, 10, 10, 3, 4, 6, 7, 8, 8, 9, 9, 10, 10, 2, 4, 6, 7, 7, 8, 8, 9, 9, 10, 2, 3, 5, 6, 7, 7, 8, 8, 9, 9, 1, 3, 5, 6, 6, 7, 7, 8, 8, 9, 1, 2, 4, 5, 6, 6, 7, 7, 8, 8]; - output = "1"; - if ($truthy(/WH([HABTLW])(\d+)/['$=~'](string))) { - } else { - return "1" - }; - partsWord = $$($nesting, 'Regexp').$last_match(1); - criticalValue = $$($nesting, 'Regexp').$last_match(2).$to_i(); - if ($truthy($rb_gt(criticalValue, 10))) { - criticalValue = 10}; - if ($truthy($rb_lt(criticalValue, 1))) { - criticalValue = 1}; - whpp = ""; - whppp = ""; - $case = partsWord; - if (/H/i['$===']($case)) { - whpp = "頭部"; - whppp = whh;} - else if (/A/i['$===']($case)) { - whpp = "腕部"; - whppp = wha;} - else if (/[TB]/i['$===']($case)) { - whpp = "胴体"; - whppp = whb;} - else if (/L/i['$===']($case)) { - whpp = "脚部"; - whppp = whl;} - else if (/W/i['$===']($case)) { - whpp = "翼部"; - whppp = whw;}; - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (dice_now = ($a[0] == null ? nil : $a[0])), $b; - crit_no = $rb_times($rb_divide($rb_minus(dice_now, 1), 10).$to_i(), 10); - crit_num = criticalTable['$[]']($rb_minus($rb_plus(crit_no, criticalValue), 1)); - resultText = whppp['$[]']($rb_minus(crit_num, 1)); - if ($truthy($rb_ge(crit_num, 5))) { - resultText = $rb_plus(resultText, "サドンデス×") - } else { - resultText = $rb_plus(resultText, "サドンデス○") - }; - output = "" + (whpp) + "CT表(" + (dice_now) + "+" + (criticalValue) + ") > " + (resultText); - return output; - }, $Warhammer_getCriticalResult$4.$$arity = 1); - - Opal.def(self, '$wh_atpos', $Warhammer_wh_atpos$5 = function $$wh_atpos(pos_num, pos_type) { - var $$6, self = this, pos_2l = nil, pos_2lw = nil, pos_4l = nil, pos_4la = nil, pos_4lw = nil, pos_b = nil, wh_pos = nil, pos_t = nil, $case = nil, output = nil, pos_i = nil; - - - self.$debug("wh_atpos begin pos_type", pos_type); - pos_2l = ["二足", 15, "頭部", 35, "右腕", 55, "左腕", 80, "胴体", 90, "右脚", 100, "左脚"]; - pos_2lw = ["有翼二足", 15, "頭部", 25, "右腕", 35, "左腕", 45, "右翼", 55, "左翼", 80, "胴体", 90, "右脚", 100, "左脚"]; - pos_4l = ["四足", 15, "頭部", 60, "胴体", 70, "右前脚", 80, "左前脚", 90, "右後脚", 100, "左後脚"]; - pos_4la = ["半人四足", 10, "頭部", 20, "右腕", 30, "左腕", 60, "胴体", 70, "右前脚", 80, "左前脚", 90, "右後脚", 100, "左後脚"]; - pos_4lw = ["有翼四足", 10, "頭部", 20, "右翼", 30, "左翼", 60, "胴体", 70, "右前脚", 80, "左前脚", 90, "右後脚", 100, "左後脚"]; - pos_b = ["鳥", 15, "頭部", 35, "右翼", 55, "左翼", 80, "胴体", 90, "右脚", 100, "左脚"]; - wh_pos = [pos_2l, pos_2lw, pos_4l, pos_4la, pos_4lw, pos_b]; - pos_t = 0; - self.$debug("pos_type", pos_type); - if ($truthy(pos_type['$!='](""))) { - $case = pos_type; - if (/\@(2W|W2)/i['$===']($case)) {pos_t = 1} - else if (/\@(4W|W4)/i['$===']($case)) {pos_t = 4} - else if (/\@(4H|H4)/i['$===']($case)) {pos_t = 3} - else if (/\@4/i['$===']($case)) {pos_t = 2} - else if (/\@W/i['$===']($case)) {pos_t = 5} - else {if ($truthy(/\@(2H|H2|2)/i['$=~'](pos_type))) { - } else { - pos_t = -1 - }}}; - output = ""; - self.$debug("pos_t", pos_t); - if ($truthy($rb_lt(pos_t, 0))) { - $send(wh_pos, 'each', [], ($$6 = function(pos_i){var self = $$6.$$s || this; - - - - if (pos_i == null) { - pos_i = nil; - }; - return (output = $rb_plus(output, self.$get_wh_atpos_message(pos_i, pos_num)));}, $$6.$$s = self, $$6.$$arity = 1, $$6)) - } else { - - pos_i = wh_pos['$[]'](pos_t); - output = $rb_plus(output, self.$get_wh_atpos_message(pos_i, pos_num)); - }; - return output; - }, $Warhammer_wh_atpos$5.$$arity = 2); - - Opal.def(self, '$get_wh_atpos_message', $Warhammer_get_wh_atpos_message$7 = function $$get_wh_atpos_message(pos_i, pos_num) { - var $$8, self = this, output = nil; - - - output = ""; - output = $rb_plus(output, $rb_plus($rb_plus(" ", pos_i['$[]'](0)), ":")); - (function(){var $brk = Opal.new_brk(); try {return $send((1), 'step', [$rb_plus(pos_i.$length(), 1), 2], ($$8 = function(i){var self = $$8.$$s || this; - - - - if (i == null) { - i = nil; - }; - if ($truthy($rb_le(pos_num, pos_i['$[]'](i)))) { - - output = $rb_plus(output, pos_i['$[]']($rb_plus(i, 1))); - - Opal.brk(nil, $brk); - } else { - return nil - };}, $$8.$$s = self, $$8.$$brk = $brk, $$8.$$arity = 1, $$8)) - } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); - return output; - }, $Warhammer_get_wh_atpos_message$7.$$arity = 2); - return (Opal.def(self, '$getAttackResult', $Warhammer_getAttackResult$9 = function $$getAttackResult(string) { - var $a, $b, self = this, pos_type = nil, diff = nil, total_n = nil, output = nil, pos_num = nil; - - - self.$debug("getAttackResult begin string", string); - pos_type = ""; - if ($truthy(/(.+)(@.*)/['$=~'](string))) { - - string = $$($nesting, 'Regexp').$last_match(1); - pos_type = $$($nesting, 'Regexp').$last_match(2); - self.$debug("pos_type", pos_type);}; - if ($truthy(/WH(\d+)/i['$=~'](string))) { - } else { - return "1" - }; - diff = $$($nesting, 'Regexp').$last_match(1).$to_i(); - $b = self.$roll(1, 100), $a = Opal.to_ary($b), (total_n = ($a[0] == null ? nil : $a[0])), $b; - output = "" + "(" + (string) + ") > " + (total_n); - output = $rb_plus(output, self.$check_1D100(total_n, total_n, "<=", diff)); - pos_num = $rb_plus($rb_times(total_n['$%'](10), 10), $rb_divide(total_n, 10).$to_i()); - if ($truthy($rb_ge(total_n, 100))) { - pos_num = 100}; - if ($truthy($rb_le(total_n, diff))) { - output = $rb_plus(output, self.$wh_atpos(pos_num, pos_type))}; - return output; - }, $Warhammer_getAttackResult$9.$$arity = 1), nil) && 'getAttackResult'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/WitchQuest.js b/src/assets/dicebot/WitchQuest.js deleted file mode 100644 index b55842376..000000000 --- a/src/assets/dicebot/WitchQuest.js +++ /dev/null @@ -1,130 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$===', '$to_i', '$last_match', '$challenge', '$getStructureEncounter', '$times', '$roll', '$==', '$+', '$<<', '$join', '$getSuccessText', '$>=', '$first', '$last', '$get_table_by_number', '$debug', '$nil?', '$get_table_by_1d6', '$getPersonTable1', '$lambda', '$getPersonTable2', '$getPersonTable', '$getPersonTable3', '$getPersonTable4', '$getD66', '$bcdice']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'WitchQuest'); - - var $nesting = [self].concat($parent_nesting), $WitchQuest_rollDiceCommand$1, $WitchQuest_challenge$2, $WitchQuest_getSuccessText$4, $WitchQuest_getStructureEncounter$5, $WitchQuest_getPersonTable1$6, $WitchQuest_getPersonTable2$8, $WitchQuest_getPersonTable3$10, $WitchQuest_getPersonTable4$12, $WitchQuest_getPersonTable$13; - - - Opal.const_set($nesting[0], 'ID', "WitchQuest"); - Opal.const_set($nesting[0], 'NAME', "ウィッチクエスト"); - Opal.const_set($nesting[0], 'SORT_KEY', "ういつちくえすと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・チャレンジ(成功判定)(WQn)\n" + " n回2d6ダイスを振って判定を行います。\n" + " 例)WQ3\n" + "・SET(ストラクチャーカードの遭遇表(SETn)\n" + " ストラクチャーカードの番号(n)の遭遇表結果を得ます。\n" + " 例)SET1 SET48\n"); - self.$setPrefixes(["WQ\\d+", "SET\\d+"]); - - Opal.def(self, '$rollDiceCommand', $WitchQuest_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, $case = nil, number = nil; - - - $case = command; - if (/WQ(\d+)/['$===']($case)) { - number = $$($nesting, 'Regexp').$last_match(1).$to_i(); - return self.$challenge(number);} - else if (/SET(\d+)/['$===']($case)) { - number = $$($nesting, 'Regexp').$last_match(1).$to_i(); - return self.$getStructureEncounter(number);}; - return nil; - }, $WitchQuest_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$challenge', $WitchQuest_challenge$2 = function $$challenge(number) { - var $$3, self = this, success = nil, results = nil, successText = nil; - - - success = 0; - results = []; - $send(number, 'times', [], ($$3 = function(){var self = $$3.$$s || this, $a, $b, value1 = nil, value2 = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (value1 = ($a[0] == null ? nil : $a[0])), $b; - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (value2 = ($a[0] == null ? nil : $a[0])), $b; - if (value1['$=='](value2)) { - success = $rb_plus(success, 1)}; - return results['$<<']("" + (value1) + "," + (value2));}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - successText = $rb_plus("" + "(" + (results.$join(" / ")) + ") > ", self.$getSuccessText(success)); - return successText; - }, $WitchQuest_challenge$2.$$arity = 1); - - Opal.def(self, '$getSuccessText', $WitchQuest_getSuccessText$4 = function $$getSuccessText(success) { - var self = this, table = nil; - - - table = [[0, "失敗"], [1, "1レベル成功(成功)"], [2, "2レベル成功(大成功)"], [3, "3レベル成功(奇跡的大成功)"], [4, "4レベル成功(歴史的大成功)"], [5, "5レベル成功(伝説的大成功)"], [6, "6レベル成功(神話的大成功)"]]; - if ($truthy($rb_ge(success, table.$last().$first()))) { - return table.$last().$last()}; - return self.$get_table_by_number(success, table); - }, $WitchQuest_getSuccessText$4.$$arity = 1); - - Opal.def(self, '$getStructureEncounter', $WitchQuest_getStructureEncounter$5 = function $$getStructureEncounter(number) { - var $a, $b, self = this, tables = nil, table = nil, text = nil, index = nil, person = nil; - - - self.$debug("getStructureEncounter number", number); - tables = [[1, ["船から降りてきた", "魚を売っている", "仕事で忙しそうな", "異国から来た", "おもしろおかしい", "汗水流している"]], [2, ["おかしな格好をした", "歌を歌っている", "ステキな笑顔をした", "日なたぼっこをしている", "悩んでいる", "旅をしている"]], [3, ["待ちぼうけをしている", "壁に登っている", "タバコを吸っている", "踊りを踊っている", "幸せそうな", "向こうから走ってくる"]], [4, ["見張りをしている", "しゃべれない", "見張りをしている", "一輪車に乗った", "元気いっぱいの", "真面目な"]], [5, ["ウソつきな", "買い物をしている", "ギターを弾いている", "あなたのほうをじっと見ている", "ポップコーンを売っている", "屋台を出している"]], [6, ["子供を探している", "時計を直している", "物乞いをしている", "気象実験をしている", "飛び降りようとしている", "時間をきにしている"]], [7, ["目の見えない", "金持ちそうな", "一人歩きをしたことがない", "ふられてしまった", "待ち合わせをしている", "道に迷った"]], [8, ["お祈りをしている", "スケッチをしている", "勉強熱心な", "記念碑を壊そうとしている", "大きな声で文句をいっている", "記念撮影している"]], [9, ["隠れている", "はしごに登っている", "鐘を鳴らしている", "共通語の通じない", "記憶を失った", "あなたのほうにバタッと倒れた"]], [10, ["暇そうな", "笑ったことがない", "ぶくぶくと太った", "後継者を探している", "王様におつかえしている", "愛国心旺盛な"]], [11, ["閉じ込められた", "悲しそうな", "怒っている", "降りれなくなっている", "もの憂げな", "飛ぼうとしている"]], [12, ["釣りをしている", "泳いでいる", "川に物を落としてしまった", "砂金を掘っている", "川にゴミを捨てている", "カエルに化かされてしまった"]], [13, ["世間話をしている", "結婚を薦めたがる", "いやらしい話の好きな", "選択をしている", "水を汲んでいる", "井戸に落ちてしまった"]], [14, ["人におごりたがる", "踊り子をしている", "賭けをしている", "泣き上戸な", "飲み比べをしている", "自慢話をしている"]], [15, ["素朴そうな", "田舎者の", "あなたをだまそうとしている", "ケンカをしている", "泊まるお金のない", "あなたに依頼をしにきた"]], [16, ["悪い占いの結果しか言わない", "あなたに嫉妬している", "魅惑的な", "おしつけがましい", "いいかげんな占いしかしない", "変わった占いをしている"]], [17, ["かくれんぼをしている", "あまやどりをしている", "(ここにはだれもいません)", "家の掃除をしている", "取り壊しをしようとしている", "昔ここに住んでいた"]], [18, ["畑を耕している", "畑を荒らしている", "畑泥棒の", "収穫している", "日焼けして真っ黒な", "嫁いできた(婿にきた)"]], [19, ["粉をひいている", "馬に乗って風車に突進している", "風が吹かなくて困っている", "寝ている", "筋骨りゅうりゅうな", "遊んでいる"]], [20, ["パーティーをしている", "酔っ払っている", "酒を仕込んでいる", "即売会をしている", "笑っている", "太った"]], [21, ["ひとりたたずむ", "花から生まれた", "花が大好きな", "花粉症の", "花を買いにきた", "ラグビーをやって花をあらしてる"]], [22, ["几帳面な", "眼鏡をかけた", "なまいきな", "なわとびをしている", "困っている", "ませている"]], [23, ["本を読んでいる", "世間話をしたがる", "派手な格好をした", "勉強熱心な", "うるさい", "魔女のことについて調べている"]], [24, ["神父さんに相談をしている", "結婚式を挙げている", "物静かな", "片足の無い", "熱い視線を送ってくる", "挑発してくる"]], [25, ["頑固な", "刀の切れ味をためしたがる", "いいかげんな性格の", "スグに弟子にしたがる", "見せの前でウロウロしている", "道を尋ねている"]], [26, ["不機嫌な", "客の意見を聞かない", "物を売らない", "不幸な気前のいい", "発明家の"]], [27, ["恋人にプレゼントを探している", "香り中毒になった", "客に手伝わせる", "おまじないの好きな", "人好きのする", "いじめっこな"]], [28, ["騒がしい", "お菓子を食べて涙を流している", "笑いの止まらない", "甘い物に目がない", "別れ話をしている", "あなたをお茶に誘う"]], [29, ["フランスパンを盗んで走る", "しらけた顔をした", "店番をする", "あなたをバイトで使いたがる", "変なパンしか作らない", "朝が苦手な"]], [30, ["偏屈な", "威勢のいい", "ケンカっぱやい", "野次馬根性の強い", "肉が食べれない", "心優しく気前がいい"]], [31, ["夫婦ケンカをしている", "猫に魚を盗られた", "助けを求めている", "魚の種類がわからない", "『おいしい』としかいわない", "あやしい"]], [32, ["ヤンキー風の", "自分がかっこいいと思っている", "力自慢の", "元は王様だといいはる", "魔女のファンだという", "子沢山の"]], [33, ["わがままな", "かっこいい", "独り言を言っている", "変わった料理しかださない", "目茶苦茶辛い料理を食べている", "デートをしている"]], [34, ["仮病を使っている", "不治の病を持った", "”おめでた”の", "フケた顔した", "髪の毛を染めた", "(健康でも)病名をいいたがる"]], [35, ["実験をしたがる", "精力をつけたがっている", "惚れ薬を探している", "薬づけになっている", "この町まで薬を売りに来た", "睡眠薬で自殺をしようとしている"]], [36, ["服まで質に入れた", "値段にケチをつけている", "疲れている", "子供を質に入れようとしている", "涙もろい", "人間不信な"]], [37, ["着飾った", "おねだりしている", "退屈そうな", "見栄っぱりな", "高いものを薦める", "宝石など買うつもりのない"]], [38, ["だだをこねている", "ぬいぐるみを抱いている", "あなたを侵略者と考えている", "あなたの”おしり”にさわる", "幸せのおもちゃを売っている", "あなたを自分の子と間違えている"]], [39, ["人の話を聞かない", "気分屋な", "カリアゲしかできない", "うわさ話の好きな", "自動販売機を開発したという", "おせっかいな"]], [40, ["お風呂あがりの", "こきつかわれている", "シェイプアップしている", "人から追われている", "人の体をじろじろと見る", "この町を案内してほしいという"]], [41, ["サングラスをかけた", "みんな自分のファンと思っている", "あなたを役者と勘違いしている", "あなたはスターになれるという", "手品をしている", "『いそがしい』をいい続けている"]], [42, ["ギャンブルをしている", "競技に出場している", "全財産を賭けている", "勇敢な", "参加者を募っている", "情けない競技(闘技)をしてる"]], [43, ["ダンスを踊っている", "ブレイクダンスをして場違いな", "子供を背中におんぶしている", "あなたと踊りたがる", "踊ったことのない", "食べることに夢中な"]], [44, ["2階からお金をばらまいている", "窓の奥で涙をながしている", "窓から忍びこもう", "ピアノを弾いている", "ここに住んでいる", "家に招待したがる"]], [45, ["馬にブラシをかけている", "気性の激しい", "騎手を探している", "馬と話ができる", "馬の生まれ変わりという", "馬を安楽死させようか迷っている"]], [46, ["いたずら好きな", "ライバル意識の強い", "魔法の下手な", "魔法を信じない", "自分を神と思っている", "魔法を使って人を化かしたがる"]], [47, ["傷だらけな", "両手に宝物を持った", "かわいい", "地図を見ながら出てきている", "剣を持った", "ダンジョンの主といわれる"]], [48, ["墓参りをしている", "耳の遠い", "死んでしまった", "葬式をしている", "きもだめしをしている", "墓守をしている"]]]; - table = self.$get_table_by_number(number, tables, nil); - if ($truthy(table['$nil?']())) { - return nil}; - $b = self.$get_table_by_1d6(table), $a = Opal.to_ary($b), (text = ($a[0] == null ? nil : $a[0])), (index = ($a[1] == null ? nil : $a[1])), $b; - person = self.$getPersonTable1(); - return "" + "SET" + (number) + " > " + (index) + ":" + (text) + (person); - }, $WitchQuest_getStructureEncounter$5.$$arity = 1); - - Opal.def(self, '$getPersonTable1', $WitchQuest_getPersonTable1$6 = function $$getPersonTable1() { - var $$7, self = this, gotoNextTable = nil, table = nil; - - - gotoNextTable = $send(self, 'lambda', [], ($$7 = function(){var self = $$7.$$s || this; - - return $rb_plus("表2へ", self.$getPersonTable2())}, $$7.$$s = self, $$7.$$arity = 0, $$7)); - table = [[11, "おじさん"], [12, "おばさん"], [13, "おじいさん"], [14, "おばあさん"], [15, "男の子"], [16, "女の子"], [22, "美少女"], [23, "美少年"], [24, "青年"], [25, "少年"], [26, "男女(カップル)"], [33, "新婚さん"], [34, "お兄さん"], [35, "お姉さん"], [36, "店主(お店の人)"], [44, "王様"], [45, "衛兵"], [46, "魔女"], [55, "お姫様"], [56, gotoNextTable], [66, gotoNextTable]]; - return self.$getPersonTable(table); - }, $WitchQuest_getPersonTable1$6.$$arity = 0); - - Opal.def(self, '$getPersonTable2', $WitchQuest_getPersonTable2$8 = function $$getPersonTable2() { - var $$9, self = this, gotoNextTable = nil, table = nil; - - - gotoNextTable = $send(self, 'lambda', [], ($$9 = function(){var self = $$9.$$s || this; - - return $rb_plus("表3へ", self.$getPersonTable3())}, $$9.$$s = self, $$9.$$arity = 0, $$9)); - table = [[11, "魔法使い"], [12, "観光客"], [13, "先生"], [14, "探偵"], [15, "刷"], [16, "お嬢様"], [22, "お嬢様"], [23, "紳士"], [24, "ご婦人"], [25, "女王様"], [26, "職人さん"], [33, "女子高生"], [34, "学生"], [35, "剣闘士"], [36, "鳥"], [44, "猫"], [45, "犬"], [46, "カエル"], [55, "蛇"], [56, gotoNextTable], [66, gotoNextTable]]; - return self.$getPersonTable(table); - }, $WitchQuest_getPersonTable2$8.$$arity = 0); - - Opal.def(self, '$getPersonTable3', $WitchQuest_getPersonTable3$10 = function $$getPersonTable3() { - var $$11, self = this, gotoNextTable = nil, table = nil; - - - gotoNextTable = $send(self, 'lambda', [], ($$11 = function(){var self = $$11.$$s || this; - - return $rb_plus("表4へ", self.$getPersonTable4())}, $$11.$$s = self, $$11.$$arity = 0, $$11)); - table = [[11, "貴族"], [12, "いるか"], [13, "だいこん"], [14, "じゃがいも"], [15, "にんじん"], [16, "ドラゴン"], [22, "ゾンビ"], [23, "幽霊"], [24, "うさぎ"], [25, "天使"], [26, "悪魔"], [33, "赤ちゃん"], [34, "馬"], [35, "石"], [36, "お母さん"], [44, "妖精"], [45, "守護霊"], [46, "猫神様"], [55, "ロボット"], [56, "恐ろしい人"], [66, gotoNextTable]]; - return self.$getPersonTable(table); - }, $WitchQuest_getPersonTable3$10.$$arity = 0); - - Opal.def(self, '$getPersonTable4', $WitchQuest_getPersonTable4$12 = function $$getPersonTable4() { - var self = this, table = nil; - - - table = [[11, "魔女エディス"], [12, "魔女レーデルラン"], [13, "魔女キリル"], [14, "大魔女”ロロ”様"], [15, "エディスのお母さん”エリー”"], [16, "猫トンガリ"], [22, "猫ヒューベ"], [23, "猫ゆうのす"], [24, "猫集会の集団の一団"], [25, "岩"], [26, "PCの母"], [33, "PCの父"], [34, "PCの兄"], [35, "PCの姉"], [36, "PCの弟"], [44, "PCの妹"], [45, "PCの遠い親戚"], [46, "PCの死んだはずの両親"], [55, "初恋の人"], [56, "分かれた女(男)、不倫中の相手、または独身PCの場合、二股をかけている二人の両方"], [66, "宇宙人"]]; - return self.$getPersonTable(table); - }, $WitchQuest_getPersonTable4$12.$$arity = 0); - return (Opal.def(self, '$getPersonTable', $WitchQuest_getPersonTable$13 = function $$getPersonTable(table) { - var self = this, isSwap = nil, number = nil; - - - isSwap = true; - number = self.$bcdice().$getD66(isSwap); - self.$debug("getPersonTable number", number); - return $rb_plus("" + " > " + (number) + ":", self.$get_table_by_number(number, table)); - }, $WitchQuest_getPersonTable$13.$$arity = 1), nil) && 'getPersonTable'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/WorldOfDarkness.js b/src/assets/dicebot/WorldOfDarkness.js deleted file mode 100644 index 77bbbd985..000000000 --- a/src/assets/dicebot/WorldOfDarkness.js +++ /dev/null @@ -1,145 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy; - - Opal.add_stubs(['$setPrefixes', '$match', '$to_i', '$[]', '$===', '$<', '$push', '$>', '$roll_wod', '$join', '$+', '$new', '$roll', '$sort!', '$each', '$min', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'WorldOfDarkness'); - - var $nesting = [self].concat($parent_nesting), $WorldOfDarkness_initialize$1, $WorldOfDarkness_rollDiceCommand$2, $WorldOfDarkness_roll_wod$3; - - - Opal.const_set($nesting[0], 'ID', "WorldOfDarkness"); - Opal.const_set($nesting[0], 'NAME', "ワールド・オブ・ダークネス"); - Opal.const_set($nesting[0], 'SORT_KEY', "わあるとおふたあくねす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定コマンド(xSTn+y or xSTSn+y or xSTAn+y)\n" + " (ダイス個数)ST(難易度)+(自動成功)\n" + " (ダイス個数)STS(難易度)+(自動成功) ※出目10で振り足し\n" + " (ダイス個数)STA(難易度)+(自動成功) ※出目10は2成功 [20thルール]\n" + "\n" + " 難易度=省略時6\n" + " 自動成功=省略時0\n"); - self.$setPrefixes(["\\d+ST.*"]); - - Opal.def(self, '$initialize', $WorldOfDarkness_initialize$1 = function $$initialize() { - var $iter = $WorldOfDarkness_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $WorldOfDarkness_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $WorldOfDarkness_initialize$1, false), $zuper, $iter); - self.successDice = 0; - self.botchDice = 0; - return (self.rerollDice = 0); - }, $WorldOfDarkness_initialize$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $WorldOfDarkness_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, $b, $c, self = this, dice_pool = nil, diff = nil, auto_success = nil, enable_reroll = nil, enable_20th = nil, md = nil, $case = nil, sequence = nil, total_success = nil, total_botch = nil, dice = nil, success = nil, botch = nil, output = nil, secret = nil; - - - dice_pool = 1; - diff = 6; - auto_success = 0; - enable_reroll = false; - enable_20th = false; - md = command.$match(/^(\d+)(ST[SA]?)(\d+)?([+-]\d+)?/); - dice_pool = md['$[]'](1).$to_i(); - $case = md['$[]'](2); - if ("STS"['$===']($case)) {enable_reroll = true} - else if ("STA"['$===']($case)) {enable_20th = true}; - if ($truthy(md['$[]'](3))) { - diff = md['$[]'](3).$to_i()}; - if ($truthy(md['$[]'](4))) { - auto_success = md['$[]'](4).$to_i()}; - if ($truthy($rb_lt(diff, 2))) { - diff = 6}; - sequence = []; - sequence.$push("" + "DicePool=" + (dice_pool) + ", Difficulty=" + (diff) + ", AutomaticSuccess=" + (auto_success)); - if ($truthy($rb_gt(diff, 10))) { - diff = 10}; - total_success = auto_success; - total_botch = 0; - $b = self.$roll_wod(dice_pool, diff, true, (function() {if ($truthy(enable_20th)) { - return 2 - } else { - return 1 - }; return nil; })()), $a = Opal.to_ary($b), (dice = ($a[0] == null ? nil : $a[0])), (success = ($a[1] == null ? nil : $a[1])), (botch = ($a[2] == null ? nil : $a[2])), (auto_success = ($a[3] == null ? nil : $a[3])), $b; - sequence.$push(dice.$join(",")); - total_success = $rb_plus(total_success, success); - total_botch = $rb_plus(total_botch, botch); - if ($truthy(enable_reroll)) { - while ($truthy($rb_gt(auto_success, 0))) { - - dice_pool = auto_success; - $c = self.$roll_wod(dice_pool, diff, false), $b = Opal.to_ary($c), (dice = ($b[0] == null ? nil : $b[0])), (success = ($b[1] == null ? nil : $b[1])), (botch = ($b[2] == null ? nil : $b[2])), (auto_success = ($b[3] == null ? nil : $b[3])), $c; - sequence.$push(dice.$join(",")); - total_success = $rb_plus(total_success, success); - total_botch = $rb_plus(total_botch, botch); - }}; - if ($truthy($rb_gt(total_success, 0))) { - sequence.$push("" + "成功数" + (total_success)) - } else if ($truthy($rb_gt(total_botch, 0))) { - sequence.$push("大失敗") - } else { - sequence.$push("失敗") - }; - output = sequence.$join(" > "); - secret = false; - return [output, secret]; - }, $WorldOfDarkness_rollDiceCommand$2.$$arity = 1); - return (Opal.def(self, '$roll_wod', $WorldOfDarkness_roll_wod$3 = function $$roll_wod(dice_pool, diff, enable_botch, auto_success_value) { - var $$4, $$5, self = this, dice = nil, success = nil, botch = nil, auto_success = nil, c = nil; - - - - if (enable_botch == null) { - enable_botch = true; - }; - - if (auto_success_value == null) { - auto_success_value = 1; - }; - dice = $send($$($nesting, 'Array'), 'new', [dice_pool], ($$4 = function(){var self = $$4.$$s || this, $a, $b, dice_now = nil; - - - $b = self.$roll(1, 10), $a = Opal.to_ary($b), (dice_now = ($a[0] == null ? nil : $a[0])), $b; - return dice_now;}, $$4.$$s = self, $$4.$$arity = 0, $$4)); - dice['$sort!'](); - success = 0; - botch = 0; - auto_success = 0; - $send(dice, 'each', [], ($$5 = function(d){var self = $$5.$$s || this, $case = nil; - - - - if (d == null) { - d = nil; - }; - return (function() {$case = d; - if ((10)['$===']($case)) {return (auto_success = $rb_plus(auto_success, auto_success_value))} - else if (Opal.Range.$new(diff, 10, false)['$===']($case)) {return (success = $rb_plus(success, 1))} - else if ((1)['$===']($case)) {if ($truthy(enable_botch)) { - return (botch = $rb_plus(botch, 1)) - } else { - return nil - }} - else { return nil }})();}, $$5.$$s = self, $$5.$$arity = 1, $$5)); - success = $rb_plus(success, auto_success); - if ($truthy(enable_botch)) { - - c = [success, botch].$min(); - success = $rb_minus(success, c); - botch = $rb_minus(botch, c);}; - return [dice, success, botch, auto_success]; - }, $WorldOfDarkness_roll_wod$3.$$arity = -3), nil) && 'roll_wod'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/YankeeYogSothoth.js b/src/assets/dicebot/YankeeYogSothoth.js deleted file mode 100644 index a078e5245..000000000 --- a/src/assets/dicebot/YankeeYogSothoth.js +++ /dev/null @@ -1,208 +0,0 @@ -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/table"] = function(Opal) { - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy; - - Opal.add_stubs(['$freeze', '$match', '$raise', '$to_i', '$[]', '$roll', '$-']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'Table'); - - var $nesting = [self].concat($parent_nesting), $Table_initialize$1, $Table_roll$2; - - self.$$prototype.times = self.$$prototype.sides = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $Table_initialize$1 = function $$initialize(name, type, items) { - var self = this, m = nil; - - - self.name = name; - self.items = items.$freeze(); - m = /(\d+)D(\d+)/i.$match(type); - if ($truthy(m)) { - } else { - self.$raise($$($nesting, 'ArgumentError'), "" + "Unexpected table type: " + (type)) - }; - self.times = m['$[]'](1).$to_i(); - return (self.sides = m['$[]'](2).$to_i()); - }, $Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $Table_roll$2 = function $$roll(bcdice) { - var $a, $b, self = this, value = nil, index = nil; - - - $b = bcdice.$roll(self.times, self.sides), $a = Opal.to_ary($b), (value = ($a[0] == null ? nil : $a[0])), $b; - index = $rb_minus(value, self.times); - return "" + (self.name) + "(" + (value) + ") > " + (self.items['$[]'](index)); - }, $Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -Opal.modules["utils/d66_table"] = function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_times(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send; - - Opal.add_stubs(['$freeze', '$new', '$roll', '$sort!', '$==', '$reverse!', '$+', '$*', '$[]']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'D66Table'); - - var $nesting = [self].concat($parent_nesting), $D66Table_initialize$1, $D66Table_roll$2; - - self.$$prototype.sort_type = self.$$prototype.name = self.$$prototype.items = nil; - - - Opal.def(self, '$initialize', $D66Table_initialize$1 = function $$initialize(name, sort_type, items) { - var self = this; - - - self.name = name; - self.sort_type = sort_type; - return (self.items = items.$freeze()); - }, $D66Table_initialize$1.$$arity = 3); - return (Opal.def(self, '$roll', $D66Table_roll$2 = function $$roll(bcdice) { - var $$3, self = this, dice = nil, key = nil; - - - dice = $send($$($nesting, 'Array'), 'new', [2], ($$3 = function(){var self = $$3.$$s || this, $a, $b, val = nil; - - - $b = bcdice.$roll(1, 6), $a = Opal.to_ary($b), (val = ($a[0] == null ? nil : $a[0])), $b; - return val;}, $$3.$$s = self, $$3.$$arity = 0, $$3)); - dice['$sort!'](); - if (self.sort_type['$==']("desc")) { - dice['$reverse!']()}; - key = $rb_plus($rb_times(dice['$[]'](0), 10), dice['$[]'](1)); - return "" + (self.name) + "(" + (key) + ") > " + (self.items['$[]'](key)); - }, $D66Table_roll$2.$$arity = 1), nil) && 'roll'; - })($nesting[0], null, $nesting) -}; - -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_le(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2, $hash = Opal.hash; - - Opal.add_stubs(['$require', '$==', '$<=', '$>=', '$upcase', '$===', '$getRandomSkillTableResult', '$get_nickname_table', '$roll_tables', '$get_table_by_1d6', '$get_table_by_2d6', '$roll', '$getD66Table', '$[]', '$get_table_by_d66_swap', '$map', '$is_a?', '$to_i', '$last_match', '$freeze', '$new', '$setPrefixes', '$+', '$keys']); - - self.$require("utils/table"); - self.$require("utils/d66_table"); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'YankeeYogSothoth'); - - var $nesting = [self].concat($parent_nesting), $YankeeYogSothoth_initialize$1, $YankeeYogSothoth_check_2D6$2, $YankeeYogSothoth_rollDiceCommand$3, $YankeeYogSothoth_getRandomSkillTableResult$4, $YankeeYogSothoth_get_nickname_table$5, $YankeeYogSothoth_getD66Table$6; - - - Opal.const_set($nesting[0], 'ID', "YankeeYogSothoth"); - Opal.const_set($nesting[0], 'NAME', "ヤンキー&ヨグ=ソトース"); - Opal.const_set($nesting[0], 'SORT_KEY', "やんきいあんとよくそとおす"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + "スペシャル/ファンブル/成功/失敗を判定\n" + "・各種表\n" + "※うろつき~決闘フェイズ\n" + "FT\tファンブル表\n" + "WT\t変調表\n" + "RTT\tランダム特技決定表\n" + "KKT\t関係表\n" + "DBRT\t他愛のない会話表\n" + "TKT\t戦う理由表\n" + "\n" + "※武勇伝フェイズ\n" + "BUDT\t武勇伝表\n" + "GUDT\tガイヤンキー武勇伝表\n" + "FTNT\t二つ名決定表\n" + "DAIT\t第一印象表\n" + "TKKT\tツレ関係表\n" + "\n" + "※帰還フェイズ\n" + "GSST\t現実世界生活表\n" + "GYST\tガイヤンキー生活表\n" + "HPST\t病院生活表\n" + "・D66ダイスあり\n"); - - Opal.def(self, '$initialize', $YankeeYogSothoth_initialize$1 = function $$initialize() { - var $iter = $YankeeYogSothoth_initialize$1.$$p, $yield = $iter || nil, self = this, $zuper = nil, $zuper_i = nil, $zuper_ii = nil; - - if ($iter) $YankeeYogSothoth_initialize$1.$$p = null; - // Prepare super implicit arguments - for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) { - $zuper[$zuper_i] = arguments[$zuper_i]; - } - - $send(self, Opal.find_super_dispatcher(self, 'initialize', $YankeeYogSothoth_initialize$1, false), $zuper, $iter); - return (self.d66Type = 2); - }, $YankeeYogSothoth_initialize$1.$$arity = 0); - - Opal.def(self, '$check_2D6', $YankeeYogSothoth_check_2D6$2 = function $$check_2D6(total, dice_total, _dice_list, cmp_op, target) { - var self = this; - - - if (target['$==']("?")) { - return ""}; - if (cmp_op['$=='](">=")) { - } else { - return "" - }; - if ($truthy($rb_le(dice_total, 2))) { - return " > ファンブル(判定失敗。ファンブル表(FT)を振ること)" - } else if ($truthy($rb_ge(dice_total, 12))) { - return " > スペシャル(判定成功。【テンション】が1段階上昇)" - } else if ($truthy($rb_ge(total, target))) { - return " > 成功" - } else { - return " > 失敗" - }; - }, $YankeeYogSothoth_check_2D6$2.$$arity = 5); - - Opal.def(self, '$rollDiceCommand', $YankeeYogSothoth_rollDiceCommand$3 = function $$rollDiceCommand(command) { - var self = this, string = nil, $case = nil; - - - string = command.$upcase(); - $case = string; - if ("RTT"['$===']($case)) {return self.$getRandomSkillTableResult(command)} - else if ("FTNT"['$===']($case)) {return self.$get_nickname_table(command)}; - return self.$roll_tables(string, $$($nesting, 'TABLES')); - }, $YankeeYogSothoth_rollDiceCommand$3.$$arity = 1); - - Opal.def(self, '$getRandomSkillTableResult', $YankeeYogSothoth_getRandomSkillTableResult$4 = function $$getRandomSkillTableResult(_command) { - var $a, $b, self = this, name = nil, skillTableFull = nil, skillTable = nil, total_n = nil, tableName = nil, skill = nil, total_n2 = nil, output = nil; - - - name = "ランダム"; - skillTableFull = [["苦手", ["大人", "勉強", "敗北", "昆虫", "親", "異性", "孤独", "高所", "暗がり", "ホラー", "子供"]], ["部活", ["柔道", "プロレス", "テコンドー", "空手", "ボクシング", "帰宅", "剣道", "野球", "応援団", "科学", "文系"]], ["中学時代", ["悪ガキ", "統一", "バイト", "習い事", "喧嘩", "サボり", "マジメくん", "遊び歩き", "真似ごと", "部活", "何もしない"]], ["趣味", ["すけべ", "車・バイク", "家事", "料理", "運動", "修行", "ファッション", "つるむ", "寝る", "ゲーム", "読書"]], ["スタイル", ["テキトー", "ばか", "オラオラ", "熱血", "硬派", "自然体", "軟派", "自分大好き", "腹黒", "クール", "インテリ"]], ["好み", ["だらだら", "食事", "逆転", "家族", "支配", "褒められる", "恋愛", "友情", "勝利", "金", "静寂"]]]; - $b = self.$get_table_by_1d6(skillTableFull), $a = Opal.to_ary($b), (skillTable = ($a[0] == null ? nil : $a[0])), (total_n = ($a[1] == null ? nil : $a[1])), $b; - $b = skillTable, $a = Opal.to_ary($b), (tableName = ($a[0] == null ? nil : $a[0])), (skillTable = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$get_table_by_2d6(skillTable), $a = Opal.to_ary($b), (skill = ($a[0] == null ? nil : $a[0])), (total_n2 = ($a[1] == null ? nil : $a[1])), $b; - output = "" + (name) + "指定特技表(" + (total_n) + "," + (total_n2) + ") > 『" + (tableName) + "』" + (skill); - return output; - }, $YankeeYogSothoth_getRandomSkillTableResult$4.$$arity = 1); - - Opal.def(self, '$get_nickname_table', $YankeeYogSothoth_get_nickname_table$5 = function $$get_nickname_table(_command) { - var $a, $b, self = this, result1 = nil, $case = nil, nicknameTableName = nil, nicknameTableFull = nil, nicknameTable = nil, nickName = nil, result2 = nil; - - - $b = self.$roll(1, 6), $a = Opal.to_ary($b), (result1 = ($a[0] == null ? nil : $a[0])), $b; - $case = result1; - if ((1)['$===']($case) || (2)['$===']($case)) {nicknameTableName = "二つ名表1"} - else if ((3)['$===']($case) || (4)['$===']($case)) {nicknameTableName = "二つ名表2"} - else if ((5)['$===']($case)) {nicknameTableName = "二つ名表3"} - else if ((6)['$===']($case)) {nicknameTableName = "二つ名表4"}; - nicknameTableFull = $hash2(["二つ名表1", "二つ名表2", "二つ名表3", "二つ名表4"], {"二つ名表1": ["11:愛死天流(あいしてる)", "12:喧嘩上等(けんかじょうとう)", "13:正々堂々(せいせいどうどう)", "14:天下無敵(てんかむてき)", "15:一騎当千(いっきとうせん)", "16:威風堂々(いふうどうどう)", "22:焼肉定食(やきにくていしょく)", "23:完全無欠(かんぜんむけつ)", "24:獅子奮迅(ししふんじん)", "25:臥薪嘗胆(がしんしょうたん)", "26:疾風迅雷(しっぷうじんらい)", "33:夜露死苦(よろしく)", "34:天上天下(てんじょうてんげ)", "35:唯我独尊(ゆいがどくそん)", "36:電光石火(でんこうせっか)", "44:仏恥義理(ぶっちぎり)", "45:百戦百勝(ひゃくせんひゃくしょう)", "46:百戦錬磨(ひゃくせんれんま)", "55:残酷非道(ざんこくひどう)", "56:一意専心(いちいせんしん)", "66:時給千円(じきゅうせんえん)"], "二つ名表2": ["11:みんなの", "12:スルー推奨", "13:暴れん坊", "14:仲間思い", "15:サボり魔", "16:熱血番長の", "22:今日がダメでも明日がある", "23:すぐカッとなる", "24:夢を応援する", "25:地元じゃ有名な", "26:喧嘩慣れている", "33:いつかビックになる", "34:いいやつの", "35:意外とまじめな", "36:イイ感じの", "44:家族想いの", "45:とにかくモテる", "46:学校を代表するワル", "55:邪神ハンター", "56:男前/イイ女", "66:悪そうなやつはだいたい友達"], "二つ名表3": ["11:ファッションヤンキー", "12:誰もが知っている", "13:チャラい", "14:ツヨメ", "15:中学時代はすごかった", "16:イカれたやつ", "22:道徳の授業で泣いた", "23:マジか", "24:イケイケ", "25:鬼語り", "26:とりま", "33:ちょっと眠たい", "34:パネエ", "35:エモい", "36:やべーぞ!", "44:お腹が減っている", "45:むっつりスケベの", "46:いじわるな", "55:全国区に報道された", "56:毎日が楽しい", "66:おやじ狩り狩り"], "二つ名表4": ["11:国産", "12:ブレブレ", "13:ロボ", "14:大銀河", "15:超獣", "16:ミステリー", "22:超電磁", "23:危険な", "24:湯上がり", "25:すごい", "26:エロ", "33:福岡", "34:エリート", "35:どんまい", "36:がり勉", "44:東京", "45:スペース", "46:永遠の", "55:大阪", "56:輝け!", "66:名古屋"]}); - nicknameTable = self.$getD66Table(nicknameTableFull['$[]'](nicknameTableName)); - $b = self.$get_table_by_d66_swap(nicknameTable), $a = Opal.to_ary($b), (nickName = ($a[0] == null ? nil : $a[0])), (result2 = ($a[1] == null ? nil : $a[1])), $b; - return "" + "二つ名決定表(" + (result1) + "," + (result2) + ") > 「" + (nickName) + "」"; - }, $YankeeYogSothoth_get_nickname_table$5.$$arity = 1); - - Opal.def(self, '$getD66Table', $YankeeYogSothoth_getD66Table$6 = function $$getD66Table(table) { - var $$7, self = this; - - return $send(table, 'map', [], ($$7 = function(item){var self = $$7.$$s || this, $a; - - - - if (item == null) { - item = nil; - }; - if ($truthy(($truthy($a = item['$is_a?']($$($nesting, 'String'))) ? /^(\d+):(.*)/['$==='](item) : $a))) { - return [$$($nesting, 'Regexp').$last_match(1).$to_i(), $$($nesting, 'Regexp').$last_match(2)] - } else { - return item - };}, $$7.$$s = self, $$7.$$arity = 1, $$7)) - }, $YankeeYogSothoth_getD66Table$6.$$arity = 1); - Opal.const_set($nesting[0], 'TABLES', $hash2(["FT", "WT", "KKT", "DBRT", "TKT", "BUDT", "GUDT", "DAIT", "TKKT", "GSST", "GYST", "HPST"], {"FT": $$($nesting, 'Table').$new("ファンブル表", "1D6", ["やっちまった……。テンションが1段階減少する。", "ひょうなことから嫌な状況になる。ランダムに変調(WT)を1つ受ける。", "あまりにもカッコ悪いところが伝わってしまう。自分に対して【友情度】を持つPC全員は、リスペクトにチェックを入れる。", "自分の絶望を観測し、邪神が活性化する。バッドヤンキーの「ケツモチ邪神の加護」が1点上昇する。", "つまらないことで怪我をする。自分の【HP】が1D6点減少する。", "逆境に燃える。テンションが1段階上昇する。"]), "WT": $$($nesting, 'Table').$new("変調表", "1D6", ["毒:サイクル終了時もしくはラウンド終了時に、2D6点のダメージを受ける。", "呪い:熱血蘇生の達成値が2点減少する。NPCが受けた場合、受けるダメージが2点上昇する。", "火傷:テンションの効果によって、【攻撃力】が上昇しない。NPCは【攻撃力】が2点低いものとして扱う(最低0点)。", "骨折:判定に失敗するたびに、5点のダメージを受ける。", "出血:サイクル終了時もしくはラウンド終了時に、2点のダメージを受ける。また、施設やアイテムの効果で【HP】が上昇しない。", "目つぶし:判定の達成値が2点減少する。"]), "KKT": $$($nesting, 'Table').$new("関係表", "1D6", ["「家族/気に食わない」", "「親友/近寄るな」", "「悪友/こざかしい」", "「ライバル/チンピラ」", "「いい奴/悪い奴」", "「利用できる/ヘタレ」"]), "DBRT": $$($nesting, 'D66Table').$new("他愛のない会話表", "asc", $hash(11, "「政治の話」", 12, "「勉強の話」", 13, "「友達の話」", 14, "「兄弟姉妹の話」", 15, "「好きなものの話」", 16, "「嫌いなものの話」", 22, "「ラーメンの話」", 23, "「コンビニの話」", 24, "「学校生活の話」", 25, "「先輩後輩の話」", 26, "「趣味の話」", 33, "「肉の話」", 34, "「中学時代の話」", 35, "「喧嘩の話」", 36, "「ファッションの話」", 44, "「家の話」", 45, "「好みの異性の話」", 46, "「テレビ番組の話」", 55, "「野菜の話」", 56, "「部活の話」", 66, "「ダブりの話」")), "TKT": $$($nesting, 'D66Table').$new("戦う理由表", "asc", $hash(11, "「なんとなく」", 12, "「好みのエルフがいた」", 13, "「エルフに世話になった」", 14, "「ドワーフの飯がうまかった」", 15, "「ドワーフにファッション特徴を作ってもらった」", 16, "「妖精たちのいたずらがほほえましかった」", 22, "「バッドヤンキーと昔からの因縁があるから」", 23, "「バッドヤンキーが気に入らなかった」", 24, "「強いやつと戦いたい」", 25, "「異世界にワクワクしているから」", 26, "「バッドヤンキー集団に迷惑を受けたから」", 33, "「夢見るNPCが好みだったから」", 34, "「夢見るNPCの夢に共感したから」", 35, "「夢見るNPCの夢を応援したいと思ったから」", 36, "「夢見るNPCを放っておけないから」", 44, "「家に帰りたいから」", 45, "「夢見るNPCは友達だから」", 46, "「他のPCと気が合ったから」", 55, "「マーメイドと仲良くなった」", 56, "「退屈を紛らわせられそうだから」", 66, "「ただ暴れたかった」")), "BUDT": $$($nesting, 'D66Table').$new("武勇伝表", "asc", $hash(11, "バッドヤンキーのチームに自分が所属する学校を破壊されたが、最後まで戦った。/テンションが1段階上昇", 12, "バッドヤンキーチームの兵隊が襲い掛かってきたが、撃退した。/【HP】+3", 13, "バッドヤンキーと何度も戦い、ライバルとして認識されていた。/【打たれ強さ】+1", 14, "バッドヤンキー配下の集団をいくつか潰してまわっていた。/【攻撃力】+1", 15, "バッドヤンキーのチームに入りそうになった後輩を説得した。/【HP】+3", 16, "バッドヤンキーに支配されていた店を救った。/【攻撃力】+1", 22, "アメリカで暴れた。/テンションが1段階上昇", 23, "学校をサボって、日本全国を旅をしてまわった。/【HP】+3", 24, "好きなアーティストのライブに行き、マナーの悪いファンを黙らせた。/【打たれ強さ】+1", 25, "抗争中の学校に一人で乗り込んで、戦いを終わらせた。/【攻撃力】+1", 26, "へまをした仲間を助けるため、頭を下げた。/【HP】+3", 33, "大規模な運動会で活躍し、最優秀賞を獲得した。/【攻撃力】+1", 34, "家族や仲間に迷惑をかけたチームを潰した。/【打たれ強さ】+1", 35, "暴走族を一人で潰した。/【攻撃力】+1", 36, "本職(ヤクザ)と戦って謝らせた。/【打たれ強さ】+1", 44, "ドッジボール大会に出場し、優勝をして賞品を手に入れた。/「絆創膏」「テンアゲアイテム」「ポーション」「お守り」のうち1つを選んで獲得する", 45, "仲間たちと一緒に学校行事を盛り上げた。/【打たれ強さ】+1", 46, "仲間と一緒にディスカウントストアで買い物をし、キャンプをした。/「絆創膏」「テンアゲアイテム」「ポーション」「お守り」のうち1つを選んで獲得する", 55, "隣のプレイヤーのPCが所属する高校と大きな抗争をした。/右隣のプレイヤーのPCに対する【友情度】が1点上昇", 56, "修学旅行先で喧嘩し、その後友情を深めた。/【攻撃力】+1", 66, "隣のプレイヤーのPCと一緒に、大きな悪の組織を潰した。/右隣のプレイヤーのPCに対する【友情度】が1点上昇")), "GUDT": $$($nesting, 'D66Table').$new("ガイヤンキー武勇伝表", "asc", $hash(11, "アザトースが突然接触してきたので、殴って追い返した。/テンションが1段階上昇", 12, "シュブ=ニグラスのサバトに乗り込んで潰した。/【HP】+3", 13, "クトゥルフの落とし子を殴り倒して追い返した。/【打たれ強さ】+1", 14, "ヨグ=ソトースの勧誘を受けたが、断ってやった。/【攻撃力】+1", 15, "深きものどもが住む漁村を訪ね、罠にはめられたが脱出した。/【HP】+3", 16, "一晩飲み明かした相手がナイアーラトテップだった。/【攻撃力】+1", 22, "生きてる恐竜と出会った。/テンションが1段階上昇", 23, "ファンタジー世界を冒険者として旅してまわった。/【HP】+3", 24, "町で起こった少女たちの失踪事件を解決した。/【打たれ強さ】+1", 25, "バッドヤンキーに潰された騎士団を鼓舞して、立て直しに協力した。/【攻撃力】+1", 26, "大きな城下町に起こった殺人事件や傷害事件を幾つも解決した。/【HP】+3", 33, "大きな城下町で、テンションが上がっていろいろ買い込んでしまった。/「絆創膏」「テンアゲアイテム」「ポーション」「お守り」のうち1つを選んで獲得する", 34, "エルフの森を燃やしつくそうとする拝火暴走族をこらしめた。/【打たれ強さ】+1", 35, "ドワーフの洞窟に現われた巨大ワームを投げ飛ばした。/【攻撃力】+1", 36, "妖精たちの村に迷い込んで、村を荒らそうとするゴブリンをブッ飛ばした。/【打たれ強さ】+1", 44, "巨大な王国が主催している武術大会で優勝し、名誉とアイテムを手に入れた。/「絆創膏」「テンアゲアイテム」「ポーション」「お守り」のうち1つを選んで獲得する", 45, "ゴブリンの襲撃から町を守り切った。/【打たれ強さ】+1", 46, "悪いチームにさらわれた姫や王子様を助けたら、惚れられた。/【攻撃力】+1", 55, "次に会うヤンキーのために、この世界の土産話を作ってきた。/右隣のプレイヤーのPCに対する【友情度】が1点上昇", 56, "悪い魔法使いの儀式を突き止めて、潰した。/【攻撃力】+1", 66, "次に会うヤンキーのために、うまいものを用意した。/右隣のプレイヤーのPCに対する【友情度】が1点上昇")), "DAIT": $$($nesting, 'Table').$new("第一印象表", "1D6", ["「ヤベエ」", "「パネエ」", "「スゲエ」", "「びっくり」", "「たばい」", "「アウトオブ眼中」"]), "TKKT": $$($nesting, 'Table').$new("ツレ関係表", "1D6", ["「すごそう」", "「勇者様」", "「つよい」", "「いい人」", "「かっこいい」", "「利用できる」"]), "GSST": $$($nesting, 'D66Table').$new("現実世界生活表", "asc", $hash(11, "喧嘩に明け暮れた", 12, "真面目に授業を受けた", 13, "今回の仲間と食事をしに行った", 14, "チーム同士の抗争を沈めた", 15, "ぼーっとしていた", 16, "バイトに専念した", 22, "仲間とバーベキューをした", 23, "自分の体を鍛えることにした", 24, "仲間との毎日をより大切にした", 25, "家族とゆっくりすごした", 26, "喧嘩の技術を磨いた", 33, "本職(ヤクザ)と喧嘩をした", 34, "好きなだけ寝た", 35, "ツレができた", 36, "今回の仲間と旅に出た", 44, "異性と遊園地に行くことになった", 45, "あの戦いの日々を思い返していた", 46, "次の戦いに備えた", 55, "運動部の助っ人として、大会に出た", 56, "好きなだけ好物を食べた", 66, "汚い大人の罠にはめられたが、なんとかした")), "GYST": $$($nesting, 'D66Table').$new("ガイヤンキー生活表", "asc", $hash(11, "ツレと生活をした", 12, "異世界について学んだ", 13, "エルフの美形(平均年齢200歳)に接待を受けた", 14, "ドワーフから地元の酒をもらった", 15, "妖精の村に迷い込んでしまった", 16, "この世界の遺跡を回った", 22, "この世界に野球などのスポーツを広めた", 23, "広大な森の中で迷ってしまい、数か月ほどサバイバルした", 24, "不思議な力が溢れる泉の水を飲み干した", 25, "魔法使いの研究に協力したが、さっぱりだった", 26, "ハーピィに誘われて空の旅を満喫した", 33, "この世界にヤンキー文化を伝えた", 34, "バッドヤンキーに荒らされた小さな村を復興した", 35, "悪徳領主にさらわれた少女を助けた", 36, "わるい商人を殴り飛ばした", 44, "エルフの漫画家が誕生するのを見届けた", 45, "巨大なドラゴンと殴りあって勝利した", 46, "海中に住むマーメイドを脅かす悪人を退治した", 55, "邪神を信奉している神殿に殴り込みをして、企みを阻止した", 56, "天使っぽいのが悪いことをしていたので蹴り飛ばした", 66, "農作業をした")), "HPST": $$($nesting, 'D66Table').$new("病院生活表", "asc", $hash(11, "治療に専念した", 12, "見舞いでもらった漫画を読み倒した", 13, "ゲームをひたすらやった", 14, "悪化した病と闘った", 15, "入院している子供と約束をした", 16, "看護師と仲良くなった", 22, "現代の医術では治療できなかったので、異世界の魔法に賭けた", 23, "院内パーティを盛り上げた", 24, "飯がまずくて苦労した", 25, "飯がうまくて感動をした", 26, "やることがなくて暇だった", 33, "スーパードクターが現われて、自分の怪我を見事に治してくれた", 34, "とにかくテレビを見続けて、知識がついた", 35, "勉強をしてみたら、いつも以上にはかどった", 36, "たくさんの人たちが見舞いに来て、感動した", 44, "入院をしている爺さんから色々教えてもらった", 45, "リハビリに思ったより時間がかかった", 46, "次に喧嘩するときのイメージトレーニングをした", 55, "ヤンキー漫画に感動をした", 56, "院内で喧嘩をした", 66, "売店で売っているお菓子をコンプリートした"))}).$freeze()); - return self.$setPrefixes($rb_plus(["RTT", "FTNT"], $$($nesting, 'TABLES').$keys())); - })($nesting[0], $$($nesting, 'DiceBot'), $nesting); -})(Opal); diff --git a/src/assets/dicebot/YearZeroEngine.js b/src/assets/dicebot/YearZeroEngine.js deleted file mode 100644 index 5905e9156..000000000 --- a/src/assets/dicebot/YearZeroEngine.js +++ /dev/null @@ -1,149 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$match', '$dice_info_init', '$to_i', '$[]', '$make_dice_roll', '$+', '$-', '$make_result_text', '$==', '$make_result_with_yze', '$make_result_with_myz', '$>', '$>=', '$roll', '$each', '$split']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'YearZeroEngine'); - - var $nesting = [self].concat($parent_nesting), $YearZeroEngine_dice_info_init$1, $YearZeroEngine_rollDiceCommand$2, $YearZeroEngine_make_result_text$3, $YearZeroEngine_make_result_with_yze$4, $YearZeroEngine_make_result_with_myz$5, $YearZeroEngine_make_dice_roll$6; - - self.$$prototype.total_success_dice = self.$$prototype.total_botch_dice = self.$$prototype.base_botch_dice = self.$$prototype.push_dice = self.$$prototype.skill_botch_dice = self.$$prototype.gear_botch_dice = self.$$prototype.difficulty = nil; - - Opal.const_set($nesting[0], 'ID', "YearZeroEngine"); - Opal.const_set($nesting[0], 'NAME', "YearZeroEngine"); - Opal.const_set($nesting[0], 'SORT_KEY', "いやあせろえんしん"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定コマンド(nYZEx+x+x)\n" + " (難易度)YZE(能力ダイス数)+(技能ダイス数)+(アイテムダイス数) # (6のみを数える)\n" + "\n" + "・判定コマンド(nMYZx+x+x)\n" + " (難易度)MYZ(能力ダイス数)+(技能ダイス数)+(アイテムダイス数) # (1と6を数え、プッシュ可能数を表示)\n" + "\n" + " ※ 難易度と技能、アイテムダイス数は省略可能\n"); - Opal.const_set($nesting[0], 'DIFFICULTY_INDEX', 1); - Opal.const_set($nesting[0], 'COMMAND_TYPE_INDEX', 2); - Opal.const_set($nesting[0], 'ABILITY_INDEX', 3); - Opal.const_set($nesting[0], 'SKILL_INDEX', 5); - Opal.const_set($nesting[0], 'MODIFIED_INDEX', 7); - self.$setPrefixes(["(\\d+)?(YZE|MYZ).*"]); - - Opal.def(self, '$dice_info_init', $YearZeroEngine_dice_info_init$1 = function $$dice_info_init() { - var self = this; - - - self.total_success_dice = 0; - self.total_botch_dice = 0; - self.base_botch_dice = 0; - self.skill_botch_dice = 0; - self.gear_botch_dice = 0; - self.push_dice = 0; - return (self.difficulty = 0); - }, $YearZeroEngine_dice_info_init$1.$$arity = 0); - - Opal.def(self, '$rollDiceCommand', $YearZeroEngine_rollDiceCommand$2 = function $$rollDiceCommand(command) { - var $a, $b, self = this, m = nil, command_type = nil, dice_pool = nil, ability_dice_text = nil, success_dice = nil, botch_dice = nil, dice_count_text = nil, dice_text = nil, skill_dice_text = nil, modified_dice_text = nil; - - - m = /^(\d+)?(YZE|MYZ)(\d+)(\+(\d+))?(\+(\d+))?/.$match(command); - if ($truthy(m)) { - } else { - return "" - }; - self.$dice_info_init(); - self.difficulty = m['$[]']($$($nesting, 'DIFFICULTY_INDEX')).$to_i(); - command_type = m['$[]']($$($nesting, 'COMMAND_TYPE_INDEX')); - self.total_success_dice = 0; - dice_pool = m['$[]']($$($nesting, 'ABILITY_INDEX')).$to_i(); - $b = self.$make_dice_roll(dice_pool), $a = Opal.to_ary($b), (ability_dice_text = ($a[0] == null ? nil : $a[0])), (success_dice = ($a[1] == null ? nil : $a[1])), (botch_dice = ($a[2] == null ? nil : $a[2])), $b; - self.total_success_dice = $rb_plus(self.total_success_dice, success_dice); - self.total_botch_dice = $rb_plus(self.total_botch_dice, botch_dice); - self.base_botch_dice = $rb_plus(self.base_botch_dice, botch_dice); - self.push_dice = $rb_plus(self.push_dice, $rb_minus(dice_pool, $rb_plus(success_dice, botch_dice))); - dice_count_text = "" + "(" + (dice_pool) + "D6)"; - dice_text = ability_dice_text; - if ($truthy(m['$[]']($$($nesting, 'SKILL_INDEX')))) { - - dice_pool = m['$[]']($$($nesting, 'SKILL_INDEX')).$to_i(); - $b = self.$make_dice_roll(dice_pool), $a = Opal.to_ary($b), (skill_dice_text = ($a[0] == null ? nil : $a[0])), (success_dice = ($a[1] == null ? nil : $a[1])), (botch_dice = ($a[2] == null ? nil : $a[2])), $b; - self.total_success_dice = $rb_plus(self.total_success_dice, success_dice); - self.total_botch_dice = $rb_plus(self.total_botch_dice, botch_dice); - self.skill_botch_dice = $rb_plus(self.skill_botch_dice, botch_dice); - self.push_dice = $rb_plus(self.push_dice, $rb_minus(dice_pool, success_dice)); - dice_count_text = $rb_plus(dice_count_text, "" + "+(" + (dice_pool) + "D6)"); - dice_text = $rb_plus(dice_text, "" + "+" + (skill_dice_text));}; - if ($truthy(m['$[]']($$($nesting, 'MODIFIED_INDEX')))) { - - dice_pool = m['$[]']($$($nesting, 'MODIFIED_INDEX')).$to_i(); - $b = self.$make_dice_roll(dice_pool), $a = Opal.to_ary($b), (modified_dice_text = ($a[0] == null ? nil : $a[0])), (success_dice = ($a[1] == null ? nil : $a[1])), (botch_dice = ($a[2] == null ? nil : $a[2])), $b; - self.total_success_dice = $rb_plus(self.total_success_dice, success_dice); - self.total_botch_dice = $rb_plus(self.total_botch_dice, botch_dice); - self.gear_botch_dice = $rb_plus(self.gear_botch_dice, botch_dice); - self.push_dice = $rb_plus(self.push_dice, $rb_minus(dice_pool, $rb_plus(success_dice, botch_dice))); - dice_count_text = $rb_plus(dice_count_text, "" + "+(" + (dice_pool) + "D6)"); - dice_text = $rb_plus(dice_text, "" + "+" + (modified_dice_text));}; - return self.$make_result_text(command_type, dice_count_text, dice_text); - }, $YearZeroEngine_rollDiceCommand$2.$$arity = 1); - - Opal.def(self, '$make_result_text', $YearZeroEngine_make_result_text$3 = function $$make_result_text(command_type, dice_count_text, dice_text) { - var self = this; - - - if (command_type['$==']("YZE")) { - return self.$make_result_with_yze(dice_count_text, dice_text) - } else if (command_type['$==']("MYZ")) { - return self.$make_result_with_myz(dice_count_text, dice_text)}; - return "Error"; - }, $YearZeroEngine_make_result_text$3.$$arity = 3); - - Opal.def(self, '$make_result_with_yze', $YearZeroEngine_make_result_with_yze$4 = function $$make_result_with_yze(dice_count_text, dice_text) { - var self = this, result_text = nil; - - - result_text = "" + (dice_count_text) + " > " + (dice_text) + " 成功数:" + (self.total_success_dice); - if ($truthy($rb_gt(self.difficulty, 0))) { - if ($truthy($rb_ge(self.total_success_dice, self.difficulty))) { - result_text = "" + (result_text) + " 難易度=" + (self.difficulty) + ":判定成功!" - } else { - result_text = "" + (result_text) + " 難易度=" + (self.difficulty) + ":判定失敗!" - }}; - return result_text; - }, $YearZeroEngine_make_result_with_yze$4.$$arity = 2); - - Opal.def(self, '$make_result_with_myz', $YearZeroEngine_make_result_with_myz$5 = function $$make_result_with_myz(dice_count_text, dice_text) { - var self = this, result_text = nil; - - - result_text = self.$make_result_with_yze(dice_count_text, dice_text); - return "" + (result_text) + "\n出目1:[能力:" + (self.base_botch_dice) + ",技能:" + (self.skill_botch_dice) + ",アイテム:" + (self.gear_botch_dice) + ") プッシュ可能=" + (self.push_dice) + "ダイス"; - }, $YearZeroEngine_make_result_with_myz$5.$$arity = 2); - return (Opal.def(self, '$make_dice_roll', $YearZeroEngine_make_dice_roll$6 = function $$make_dice_roll(dice_pool) { - var $a, $b, $$7, self = this, botch_dice = nil, success_dice = nil, _ = nil, dice_text = nil; - - - botch_dice = 0; - success_dice = 0; - $b = self.$roll(dice_pool, 6), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dice_text = ($a[1] == null ? nil : $a[1])), $b; - $send(dice_text.$split(","), 'each', [], ($$7 = function(take_dice){var self = $$7.$$s || this; - - - - if (take_dice == null) { - take_dice = nil; - }; - if (take_dice['$==']("6")) { - return (success_dice = $rb_plus(success_dice, 1)) - } else if (take_dice['$==']("1")) { - return (botch_dice = $rb_plus(botch_dice, 1)) - } else { - return nil - };}, $$7.$$s = self, $$7.$$arity = 1, $$7)); - return ["" + "[" + (dice_text) + "]", success_dice, botch_dice]; - }, $YearZeroEngine_make_dice_roll$6.$$arity = 1), nil) && 'make_dice_roll'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/dicebot/ZettaiReido.js b/src/assets/dicebot/ZettaiReido.js deleted file mode 100644 index 7faed3d2d..000000000 --- a/src/assets/dicebot/ZettaiReido.js +++ /dev/null @@ -1,154 +0,0 @@ -/* Generated by Opal 1.0.3 */ -(function(Opal) { - function $rb_plus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs); - } - function $rb_minus(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); - } - function $rb_lt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs); - } - function $rb_gt(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs); - } - function $rb_ge(lhs, rhs) { - return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs); - } - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send; - - Opal.add_stubs(['$setPrefixes', '$===', '$to_i', '$last_match', '$roll2DR', '$roll2DarkDice', '$getModInfo', '$getDiffInfo', '$+', '$-', '$getSuccessText', '$getDarkPointResult', '$roll', '$collect', '$split', '$changeDiceToDarkDice', '$==', '$parren_killer', '$<', '$to_s', '$>', '$nil?', '$>=']); - return (function($base, $super, $parent_nesting) { - var self = $klass($base, $super, 'ZettaiReido'); - - var $nesting = [self].concat($parent_nesting), $ZettaiReido_rollDiceCommand$1, $ZettaiReido_roll2DR$2, $ZettaiReido_roll2DarkDice$3, $ZettaiReido_changeDiceToDarkDice$5, $ZettaiReido_getModInfo$6, $ZettaiReido_getDiffInfo$7, $ZettaiReido_getDarkPointResult$8, $ZettaiReido_getSuccessText$9; - - - Opal.const_set($nesting[0], 'ID', "ZettaiReido"); - Opal.const_set($nesting[0], 'NAME', "絶対隷奴"); - Opal.const_set($nesting[0], 'SORT_KEY', "せつたいれいと"); - Opal.const_set($nesting[0], 'HELP_MESSAGE', "" + "・判定\n" + "m-2DR+n>=x\n" + "m(基本能力),n(修正値),x(目標値)\n" + "DPの取得の有無も表示されます。\n"); - self.$setPrefixes(["\\d+\\-2DR.*"]); - - Opal.def(self, '$rollDiceCommand', $ZettaiReido_rollDiceCommand$1 = function $$rollDiceCommand(command) { - var self = this, baseAvility = nil, modText = nil, diffValue = nil; - - - if ($truthy(/^(\d+)-2DR([\+\-\d]*)(>=(\d+))?$/i['$==='](command))) { - } else { - return nil - }; - baseAvility = $$($nesting, 'Regexp').$last_match(1).$to_i(); - modText = $$($nesting, 'Regexp').$last_match(2); - diffValue = $$($nesting, 'Regexp').$last_match(4); - return self.$roll2DR(baseAvility, modText, diffValue); - }, $ZettaiReido_rollDiceCommand$1.$$arity = 1); - - Opal.def(self, '$roll2DR', $ZettaiReido_roll2DR$2 = function $$roll2DR(baseAvility, modText, diffValue) { - var $a, $b, self = this, diceTotal = nil, diceText = nil, darkPoint = nil, mod = nil, diff = nil, diffText = nil, output = nil, total = nil, successText = nil, darkPointText = nil; - - - $b = self.$roll2DarkDice(), $a = Opal.to_ary($b), (diceTotal = ($a[0] == null ? nil : $a[0])), (diceText = ($a[1] == null ? nil : $a[1])), (darkPoint = ($a[2] == null ? nil : $a[2])), $b; - $b = self.$getModInfo(modText), $a = Opal.to_ary($b), (mod = ($a[0] == null ? nil : $a[0])), (modText = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$getDiffInfo(diffValue), $a = Opal.to_ary($b), (diff = ($a[0] == null ? nil : $a[0])), (diffText = ($a[1] == null ? nil : $a[1])), $b; - output = ""; - output = $rb_plus(output, "" + "(" + (baseAvility) + "-2DR" + (modText) + (diffText) + ")"); - output = $rb_plus(output, "" + " > " + (baseAvility) + "-" + (diceTotal) + "[" + (diceText) + "]" + (modText)); - total = $rb_plus($rb_minus(baseAvility, diceTotal), mod); - output = $rb_plus(output, "" + " > " + (total)); - successText = self.$getSuccessText(diceTotal, total, diff); - output = $rb_plus(output, successText); - darkPointText = self.$getDarkPointResult(total, diff, darkPoint); - output = $rb_plus(output, darkPointText); - return output; - }, $ZettaiReido_roll2DR$2.$$arity = 3); - - Opal.def(self, '$roll2DarkDice', $ZettaiReido_roll2DarkDice$3 = function $$roll2DarkDice() { - var $a, $b, $$4, self = this, _ = nil, dice_str = nil, dice1 = nil, dice2 = nil, darkDice1 = nil, darkPoint1 = nil, darkDice2 = nil, darkPoint2 = nil, darkPoint = nil, darkTotal = nil, darkDiceText = nil; - - - $b = self.$roll(2, 6), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (dice_str = ($a[1] == null ? nil : $a[1])), $b; - $b = $send(dice_str.$split(","), 'collect', [], ($$4 = function(i){var self = $$4.$$s || this; - - - - if (i == null) { - i = nil; - }; - return i.$to_i();}, $$4.$$s = self, $$4.$$arity = 1, $$4)), $a = Opal.to_ary($b), (dice1 = ($a[0] == null ? nil : $a[0])), (dice2 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$changeDiceToDarkDice(dice1), $a = Opal.to_ary($b), (darkDice1 = ($a[0] == null ? nil : $a[0])), (darkPoint1 = ($a[1] == null ? nil : $a[1])), $b; - $b = self.$changeDiceToDarkDice(dice2), $a = Opal.to_ary($b), (darkDice2 = ($a[0] == null ? nil : $a[0])), (darkPoint2 = ($a[1] == null ? nil : $a[1])), $b; - darkPoint = $rb_plus(darkPoint1, darkPoint2); - if (darkPoint['$=='](2)) { - darkPoint = 4}; - darkTotal = $rb_plus(darkDice1, darkDice2); - darkDiceText = "" + (darkDice1) + "," + (darkDice2); - return [darkTotal, darkDiceText, darkPoint]; - }, $ZettaiReido_roll2DarkDice$3.$$arity = 0); - - Opal.def(self, '$changeDiceToDarkDice', $ZettaiReido_changeDiceToDarkDice$5 = function $$changeDiceToDarkDice(dice) { - var self = this, darkPoint = nil, darkDice = nil; - - - darkPoint = 0; - darkDice = dice; - if (dice['$=='](6)) { - - darkDice = 0; - darkPoint = 1;}; - return [darkDice, darkPoint]; - }, $ZettaiReido_changeDiceToDarkDice$5.$$arity = 1); - - Opal.def(self, '$getModInfo', $ZettaiReido_getModInfo$6 = function $$getModInfo(modText) { - var self = this, value = nil, text = nil; - - - value = self.$parren_killer("" + "(0" + (modText) + ")").$to_i(); - text = ""; - if ($truthy($rb_lt(value, 0))) { - text = value.$to_s() - } else if ($truthy($rb_gt(value, 0))) { - text = $rb_plus("+", value.$to_s())}; - return [value, text]; - }, $ZettaiReido_getModInfo$6.$$arity = 1); - - Opal.def(self, '$getDiffInfo', $ZettaiReido_getDiffInfo$7 = function $$getDiffInfo(diffValue) { - var self = this, diffText = nil; - - - diffText = ""; - if ($truthy(diffValue['$nil?']())) { - } else { - - diffValue = diffValue.$to_i(); - diffText = "" + ">=" + (diffValue.$to_i()); - }; - return [diffValue, diffText]; - }, $ZettaiReido_getDiffInfo$7.$$arity = 1); - - Opal.def(self, '$getDarkPointResult', $ZettaiReido_getDarkPointResult$8 = function $$getDarkPointResult(_total, _diff, darkPoint) { - var self = this, text = nil; - - - text = ""; - if ($truthy($rb_gt(darkPoint, 0))) { - text = "" + " > " + (darkPoint) + "DP"}; - return text; - }, $ZettaiReido_getDarkPointResult$8.$$arity = 3); - return (Opal.def(self, '$getSuccessText', $ZettaiReido_getSuccessText$9 = function $$getSuccessText(diceTotal, total, diff) { - var self = this, successLevel = nil; - - - if (diceTotal['$=='](0)) { - return " > クリティカル"}; - if (diceTotal['$=='](10)) { - return " > ファンブル"}; - if ($truthy(diff['$nil?']())) { - diff = 0}; - successLevel = $rb_minus(total, diff); - if ($truthy($rb_ge(successLevel, 0))) { - return "" + " > " + (successLevel) + " 成功"}; - return " > 失敗"; - }, $ZettaiReido_getSuccessText$9.$$arity = 3), nil) && 'getSuccessText'; - })($nesting[0], $$($nesting, 'DiceBot'), $nesting) -})(Opal); diff --git a/src/assets/extratables/BloodCrusade_BDST.txt b/src/assets/extratables/BloodCrusade_BDST.txt deleted file mode 100644 index 002d17a43..000000000 --- a/src/assets/extratables/BloodCrusade_BDST.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:戦場シーン表 -2:塹壕。迫撃砲が唸りを上げ、兵士たちの悲鳴が響き渡る。 -3:港の堤防。遠ざかっていく貨物船と、ゆっくりと揺れる鉛色の水面。 -4:一面の草に覆われた野原。膝から下は見えない。 -5:ドーム競技場。中のフィールドよりも外の通路が使われることが多い。 -6:建物と建物の間に、いつの間にかできた空き地。入る道は狭い。 -7:採石場。背景を爆破するのに向いた場所だ。 -8:工場。用途の分からない巨大機械が放置され、雰囲気を盛り上げる。 -9:暗いトンネル。停められた車のヘッドライトだけが頼りだ。 -10:競馬場。人のいない観客席を広告板が見下ろしている。 -11:河川敷。土手の補強用ブロックの規則的な並びが目眩を引き起こす。 -12:司令室。壁の巨大スクリーンでは、何かのカウントダウンが進行中。 \ No newline at end of file diff --git a/src/assets/extratables/BloodCrusade_CYST.txt b/src/assets/extratables/BloodCrusade_CYST.txt deleted file mode 100644 index 34a6ca0a9..000000000 --- a/src/assets/extratables/BloodCrusade_CYST.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:田舎シーン表 -2:誰かの家。庭付き二階建て。部屋は余っている。 -3:山。周囲は木に囲まれ、その向こうの景色は全く見えない。 -4:さびれたバス停。時刻表は錆に覆われていて読むのが難しい。 -5:国道沿いのファミレス。巨大な駐車場にトラックが並ぶ。 -6:大型量販店。服や靴、電化製品などの大きな店。 -7:あぜ道。周りには季節によって違う姿を見せる水田が広がる。 -8:大型ショッピングモール。何でも揃う。 -9:コンビニ。11時で閉まるので夜は開いていないこともある。 -10:野菜の無人販売所。木の棚に人参やジャガイモが置いてある。 -11:廃屋。近所の学生がよく忍び込んで悪さをしているとか。 -12:駅。ホームには屋根がなく、周りには山と森が広がっている。 \ No newline at end of file diff --git a/src/assets/extratables/BloodCrusade_DMST.txt b/src/assets/extratables/BloodCrusade_DMST.txt deleted file mode 100644 index 83517d122..000000000 --- a/src/assets/extratables/BloodCrusade_DMST.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:夢シーン表 -2:愛しい人を抱きしめていると、いつのまにか別人に変わっていて驚く。 -3:もらった種を鉢に植えて待っていると、人が生えてきた。 -4:ひたすら落下し続けている。一緒に堕ちている人が何か叫んでいる。 -5:誰かをひどく殴りつけている。一発ごとに周りの観客から喝采が上がる。 -6:知らない人ばかりのパーティのなか、必死に知り合いを探している。 -7:何かに追いかけられて暗い道を走っている。そして追いつかれた。 -8:列車に乗って、通り過ぎていく景色を見ている。向かいの客席に誰かがいる。 -9:朝起きて冷蔵庫を開けにいくと、ありえない人物が朝食を作っていた。 -10:なぜか分からないが捕まって留置された。入れられた房には意外な人が。 -11:道端にいた散歩の犬が「これは夢だ」と事情を語り始めた。 -12:みんな死んでしまった。墓の前で座っていると、近づいてくる人影がある。 diff --git a/src/assets/extratables/BloodCrusade_MNST.txt b/src/assets/extratables/BloodCrusade_MNST.txt deleted file mode 100644 index 674d19004..000000000 --- a/src/assets/extratables/BloodCrusade_MNST.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:館シーン表 -2:地下牢。朽ち果てた骸の手首には鉄枷がはまったままだ。 -3:礼拝堂。何千本もの蝋燭が祭壇を照らす。 -4:厨房。得体の知れない鍋の中で何かが煮えたぎっている。 -5:客間。天蓋付きの寝台は分厚く暖かそうだ。 -6:中庭。ガゼボが配置されているが斬りかかってはいけない。 -7:天井の高い廊下。あちこちに風景画が飾られている。 -8:植木の迷路。動物型の植木が沈黙の咆哮をあげている。 -9:玄関ホール。もちろん二階まで吹き抜けで階段がある。 -10:食堂。果てしなく長いテーブルに椅子がセットされている。 -11:時計塔。巨大な歯車とシャフトの組み合わせが回る。 -12:領主の部屋。重厚なデスクと背後の本棚が威圧的だ。 \ No newline at end of file diff --git a/src/assets/extratables/BloodCrusade_SLST.txt b/src/assets/extratables/BloodCrusade_SLST.txt deleted file mode 100644 index c359b12fd..000000000 --- a/src/assets/extratables/BloodCrusade_SLST.txt +++ /dev/null @@ -1,22 +0,0 @@ -2d6:学校シーン表 -2:廊下。消防ホースの箱がやたらと赤く目立つ - -3:運動場。石灰と混ざり合った白っぽい砂が積もっている。 - -4:保健室。白いカーテンが揺れ、同じく白いベッドで影がおどる。 - -5:講堂。ワックスのかかった床が、靴とこすれて甲高い音で鳴る。 - -6:人でいっぱいの教室。みな座ってはいるがやかましい。 - -7:誰もいない教室。時計の音がやけに大きく響く。 - -8:昇降口。いくつも並んだ大きな下駄箱に名前が書かれている。 - -9:音楽室。作曲家の肖像画がピアノを見下ろしている。 - -10:理科室。薬品と埃の臭いが鼻をつく。 - -11:工作室。机の大きな傷には木くずが詰まっている。 - -12:開かずの教室。ここは真っ暗だ……出口も入り口もない。 diff --git a/src/assets/extratables/BloodCrusade_TD1T.txt b/src/assets/extratables/BloodCrusade_TD1T.txt deleted file mode 100644 index c42d113be..000000000 --- a/src/assets/extratables/BloodCrusade_TD1T.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:時間経過表十代 -1:自分探しの旅に出た。旅先で見つけた新しい自分は、なかなか好きになれるやつだった。\n狩人は主武装のうち一つを変更してもかまわない。変更したらキャラクターの再構築を行う。 -2:吸血鬼狩りを通して、仲間との絆が深まる。\n仲間の狩人から一人を目標として選び、その狩人に対する関係【震度】を2増加させる。\nその状態でセッションを開始する。 -3:自分の将来に不安を覚え、吸血鬼狩り以外のことにチャレンジしてみるものの、どれも中途半端でうまくいかない。\n狩人は「動転」の変調を発動した状態でセッションを開始する。 -4:最近イヤなことがあって、相当不機嫌な状態になっている。\n【モラル】の現在値を0にし、その状態でセッションを開始する。 -5:新しい友達が出来る。\n狩人と同じ年齢の協力者を、狩人のプレイヤーが作成する。レベルは1とすること。\nこの協力者はセッションに登場し、獲得すれば使用できる。 -6:ちょっと見ないうちに協力者が成長する。\n協力者を獲得している場合、その中から一人を選ぶ。\nその協力者のレベルが1上昇する。\n協力者を獲得していない場合、効果はない。 diff --git a/src/assets/extratables/BloodCrusade_TD2T.txt b/src/assets/extratables/BloodCrusade_TD2T.txt deleted file mode 100644 index b6ae1cbff..000000000 --- a/src/assets/extratables/BloodCrusade_TD2T.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:時間経過表二十代 -1:表の仕事や学業で大抜擢され、若き天才として大いに名をはせる。\n【モラル】が3増加し、その状態でセッションを開始する。 -2:人生の新たな楽しみを発見する。\n【幸福】を一つ新たに設定し、獲得できる。\n【人間力】が足りない場合は、入れ替えるか無視すること。 -3:恋人との関係がシリアスなトラブルに変化する。\nまだ解決してはいないが、かなりのストレスだ。\n【感情】が3増加した状態でセッションを開始する。 -4:休暇中に無茶をして大怪我を負ってしまう。\n吸血鬼狩りはタイミングが命なので、怪我をおして参加することになる。\n狩人は「重症」の変調を発動した状態でセッションを開始する。 -5:新しい友達が出来た。\n狩人と五歳差までで任意の年齢の協力者を、狩人のプレイヤーが作成する。\nレベルは1とすること。この協力者はセッションに登場し、獲得すれば使用できる。 -6:協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\n協力者を獲得していない場合、狩人のイベントとなり効果はない。 diff --git a/src/assets/extratables/BloodCrusade_TD3T.txt b/src/assets/extratables/BloodCrusade_TD3T.txt deleted file mode 100644 index bc758c0b4..000000000 --- a/src/assets/extratables/BloodCrusade_TD3T.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:時間経過表三十代 -1:ある種の慎重さを身につけ、常に狩りの準備を怠らないようになる。\n再殺武装から一つを選び、それをすでに獲得した状態でセッションを開始する。 -2:拠点の運営に協力し、管理を最適化して簡単に利用できるようにした。\n狩人側の拠点を一つ選び、その必要レベルを1減少させる。\nただし1未満にはならない。 -3:だんだんと責任のある立場になるにつれ、それに縛られているような感慨を覚えるようになる。\n「捕縛」の変調を発動した状態でセッションを開始する。 -4:狩人の噂を聞きつけた協力者が現れ、知己を得る。\n狩人と十歳差までで任意の年齢の協力者を、狩人のプレイヤーが作成する。\nレベルは1とすること。\nこの協力者はセッションに登場し、獲得すれば使用できる。 -5:軽い生活習慣病を発症する。特に狩りに影響はしない。 -6:協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\n協力者を獲得していない場合、狩人のイベントとなり効果はない。 diff --git a/src/assets/extratables/BloodCrusade_TD4T.txt b/src/assets/extratables/BloodCrusade_TD4T.txt deleted file mode 100644 index fc61961bb..000000000 --- a/src/assets/extratables/BloodCrusade_TD4T.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:時間経過表四十代 -1:だんだんと物事に動じず、迷わなくなってきた自分に気づく。\nこのセッションの遭遇シーンでは感情属性を任意に設定できる。 -2:重厚さを増す大人のオーラによって、他の狩人からの尊敬を勝ち取ることに成功する。\n仲間の狩人から目標を一人選び、目標から狩人への関係【深度】を1増加する。 -3:後進の育成に熱心になる。\nこのセッションの間、自分の追跡シーンに自分より若い味方キャラクターが登場している場合、判定にプラス1の修正がつく。\nこの修正は累積しない。 -4:大病発覚。\n狩人に後継者がいる場合、結果フェイズで狩人は死亡する。\n後継者がいない場合、またはセッション中に決別したり裏切られた場合には、奇跡的に回復する。 -5:幅広い人脈の中から吸血鬼の実在に耐えられる人物を見つけ出す。\n狩人と二十歳差までで任意の年齢の協力者を、狩人のプレイヤーが作成する。\nレベル1とすること。\nこの協力者はセッションに登場し、獲得すれば使用できる。 -6:協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\n協力者を獲得していない場合、狩人のイベントとなり効果はない。 diff --git a/src/assets/extratables/BloodCrusade_TD5T.txt b/src/assets/extratables/BloodCrusade_TD5T.txt deleted file mode 100644 index f7610ec90..000000000 --- a/src/assets/extratables/BloodCrusade_TD5T.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:時間経過表五十代 -1:長年の経験によって【人間力】がこのセッションの間だけ1増加し、【幸福】も一つ獲得する。\nこの効果は累積せず、すでに【人間力】が5の場合は効果なし。 -2:武器の扱いにトリックを付け加える。\n【ダメージ修正】がこのセッションの間だけ1増加する。この効果は累積しない。 -3:長年酷使されてきた体が、そろそろ狩りについていけなくなる。\n「捕縛」の変調を発動した状態でセッションを開始する。 -4:大病発覚。狩人に後継者がいる場合、結果フェイズで狩人は死亡する。\n後継者がいない場合、またはセッション中に決別したり裏切られた場合には、奇跡的に回復する。 -5:協力者を獲得している場合、そのうち一人が爆発的な成長を見せる。\nその協力者のレベルを2上げる。協力者を獲得していない場合、効果はなし。 -6:協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\n協力者を獲得していない場合、狩人のイベントとなり効果はない。 diff --git a/src/assets/extratables/BloodCrusade_TD6T.txt b/src/assets/extratables/BloodCrusade_TD6T.txt deleted file mode 100644 index 463d122c4..000000000 --- a/src/assets/extratables/BloodCrusade_TD6T.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:時間経過表六十代 -1:偉大な狩人の風格を漂わせることに成功。\n狩人のことを慕い、狩人に対して【深度】5の関係があるレベル7の協力者を獲得する。\n望むなら即座に後継者にしてもよい。 -2:吸血鬼の永遠の命に対する憧れが膨れあがってくる。\nセッションの間、「誘惑」に対する抵抗判定にマイナス2の修正がつく。\nこの効果は累積しない。 -3:隠退生活に思いをはせ始める。\nもはや狩りにあまり積極的にはなれず、【モラル】の現在値を0にし、その状態でセッションを開始する。 -4:大病発覚。\n狩人に後継者がいる場合、結果フェイズで狩人は死亡する。\n後継者がいない場合、またはセッション中に決別したり裏切られた場合には、奇跡的に回復する。 -5:ふと死期を悟る。次の狩りが最後になるだろう。\nセッションの間、暴走のたびに【激情】を二つ獲得できる。\n結果フェイズで狩人は死亡する。 -6:協力者を獲得している場合、その指導に一年をかける。\n協力者のなかから一人を選び、その協力者のレベルを2上げる。\n協力者を獲得していない場合、のんびりした一年だった。 diff --git a/src/assets/extratables/BloodCrusade_TDHT.txt b/src/assets/extratables/BloodCrusade_TDHT.txt deleted file mode 100644 index a21b567c2..000000000 --- a/src/assets/extratables/BloodCrusade_TDHT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:時間経過表半吸血鬼 -1:じっくりと時間をかけて、敵吸血鬼の個性を研究する。\nこのセッションの間、吸血鬼を目標とした「前哨戦」の判定にプラス1の修正がつく。\nこの効果は累積しない。 -2:自分の血の力について考慮を深め、より自由に使いこなせるようになる。\n修得している血戒グループのアビリティから一つを選び、その名前に「+」をつけること。\nそのアビリティの反動はやはり二倍だが、【感情】の増加にすることができる。 -3:吸血鬼の強大な力に対する憧れが膨れあがってくる。\nセッションの間、「誘惑」に対する抵抗判定にマイナス2の修正がつく。\nこの効果は累積しない。 -4:種族がらみのイヤなイベントが起こった。\n【モラル】の現在値を0にし、その状態でセッションを開始する。 -5:吸血鬼に転成を持ちかけられる。\n敵の吸血鬼に対する関係【深度】が1増加し、その状態でセッションを開始する。 -6:新しい友達が出来る。\n任意の年齢の協力者を、狩人のプレイヤーが作成する。\nレベルは1とすること。\nこの協力者はセッションに登場し、獲得すれば使用できる。 diff --git a/src/assets/extratables/BloodMoon_ID2T.txt b/src/assets/extratables/BloodMoon_ID2T.txt deleted file mode 100644 index d02f3a8e9..000000000 --- a/src/assets/extratables/BloodMoon_ID2T.txt +++ /dev/null @@ -1,22 +0,0 @@ -D66:導入タイプ決定表(ハード込み) -11:依頼\n《概要》 ハンターは任意のキャラクターに他のハンターの【幸福】を守るように依頼され、その依頼を受ける。\n《目的》 他のハンターの【幸福】のうち一つを結果フェイズまで破壊されないこと。この【幸福】は、ゲームマスターが指定する。\n《報酬》 経験値2 -12:防衛\n《概要》 ハンターは今回の敵となるモンスターに【幸福】を狙われている。モンスターを倒さなければ【幸福】を守る事は出来ない。\n《目的》 自分の獲得している【幸福】のうち一つを結果フェイズで失わないこと。この【幸福】はゲームマスターが指定する。\n《報酬》 経験値2 -13:復讐\n《概要》 ハンターは今回の敵となるモンスターに負けたことがある。戦闘に敗北したのか、それとも【幸福】を壊されたのか。いずれにせよ、復讐の時だ。\n《目的》 結果フェイズまでにモンスターを無力化すること。\n《報酬》 経験値2 -14:関係\n《概要》 ハンターは、特定の人物が参加しているから、という理由で狩りに参加する。憧れているのかライバルなのか、単に仲がいいのかは自由。\n《目的》 結果フェイズの時点で他のハンターのうち一人との関係が、お互いに【深度】3以上になっていること。対象のハンターはシーンプレイヤーが決定する。\n《報酬》 経験値2 -15:挑戦\n《概要》 ハンターは今回の敵となるモンスターのことをなんらかの理由で知り、自分から戦いに赴く。\n《目的》 結果フェイズまでハンター全員が生き残り、かつ、フォロワーやモンスターに変化していないこと。\n《報酬》 経験値2 -16:救済\n《概要》 ハンターは今回の敵となるフォロワーのうち一人を救うために戦う。\n《目的》 結果フェイズまでに対象のフォロワーを「説得」で無力化する。このフォロワーはシーンプレイヤーが決定する。\n《報酬》 経験値2 -22:復調\n 《概要》 ハンターは正気を取り戻し、【狂気】を癒すために戦う。\n《目的》 結果フェイズまでに自分の【狂気】を2減らす。\n《報酬》 経験値2 -23:撃滅 \n《概要》 ハンターは狩りの対象であるモンスターを倒すために育成されていたり、モンスターに【幸福】を全て破壊された過去を持っている。\n《目的》 モンスターを自分で無力化する。\n《報酬》 経験値6 -24:競争 \n《概要》 ハンターは自分で決めたライバルに勝つために狩りを行う。\n《目的》 他のプレイヤーのハンターからライバルを一人選ぶ。結果フェイズの段階で、ライバルよりも多くのモンスターとフォロワーを攻撃で倒している事。このライバルはシーンプレイヤーが選択する。\n《報酬》 経験値6 -25:育成 \n《概要》 ハンターは仲間を成長させるために狩りに出る。\n《目的》 他の狩人すべてに導入タイプの目的を達成させる。\n《報酬》 達成した人数+2の経験値 -26:窮乏 \n《概要》 ハンターは貧乏なので、金のために狩りをしなければならない。\n《目的》 自分が装備しているアイテムから一つを対象として選ぶ。対象は即座に破壊される。そのうえで、結果フェイズまで対象が書いてあったアイテム欄を使用しない。この対象はシーンプレイヤーが選択する。\n《報酬》 経験値6 -33:泰然 \n《概要》 ハンターはクールでかっこいい自分のスタイルを守るために狩りをする。\n《目的》 結果フェイズまで【激情】を使用しない。\n《報酬》 経験値8 -34:対話 \n《概要》 ハンターはモンスターと話をするために追いかけていく。\n《目的》 モンスターに対する関係【深度】が2以上になっている状態で決戦フェイズに入る。\n《報酬》 経験値8 -35:完勝 \n《概要》 ハンターは今回の敵となるモンスターに勝ったことがある。今度こそ、とどめを刺すのだ。\n《目的》 部位ダメージを受けずにモンスターを無力化する。\n《報酬》 経験値4 -36:依頼(ハード) \n《概要》 ハンターは任意のキャラクターに他のハンターの【幸福】を守るように依頼され、その依頼を受ける。\n《目的》 他のハンターの【幸福】を一つも結果フェイズまで破壊されないこと。対象となるハンターは、ゲームマスターが指定する。\n《報酬》 経験値4 -44:防衛(ハード) \n《概要》 ハンターは今回の敵となるモンスターに自分の【幸福】を狙われている。モンスターを倒さなければ、【幸福】を守ることはできない。\n《目的》 自分の獲得している【幸福】を一つも結果フェイズで失わないこと。\n《報酬》 経験値4 -45:復讐(ハード) \n《概要》 ハンターは今回の敵となるモンスターに負けたことがある。戦闘に敗北したのか、それとも、【幸福】を壊されたのか。いずれにせよ、復讐の時だ。\n《目的》 結果フェイズまでにモンスターとフォロワー全てを攻撃で倒すこと。自分の攻撃でなくてもかまわない。\n《報酬》 経験値6 -46:関係(ハード) \n《概要》 ハンターは、特定の人物が参加しているから、という理由で狩りに参加する。憧れているのかライバルなのか、単に仲がいいのかは自由。\n《目的》 結果フェイズの時点で他のハンターのうち一人との関係が、お互いに【深度】5になっていること。対象のハンターはシーンプレイヤーが決定する。\n《報酬》 経験値4 -55:挑戦(ハード) \n《概要》 ハンターは今回の敵となるモンスターのことをなんらかの理由で知り、自分から戦いに赴く。\n《目的》 結果フェイズまでハンター全員が一度も無力化されずに生き残り、かつ、フォロワーやモンスターに変化していないこと。\n《報酬》 経験値6 -56:救済(ハード) \n《概要》 ハンターは今回の敵となるフォロワー全員を救うために戦う。\n《目的》 結果フェイズまでにフォロワー全員を「説得」で無力化する。\n《報酬》 経験値6 -66:振り直し diff --git a/src/assets/extratables/BloodMoon_IDT.txt b/src/assets/extratables/BloodMoon_IDT.txt deleted file mode 100644 index 34361a231..000000000 --- a/src/assets/extratables/BloodMoon_IDT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:導入タイプ決定表(ノーマル) -1:依頼\n《概要》 ハンターは任意のキャラクターに他のハンターの【幸福】を守るように依頼され、その依頼を受ける。\n《目的》 他のハンターの【幸福】のうち一つを結果フェイズまで破壊されないこと。この【幸福】は、ゲームマスターが指定する。\n《報酬》 経験値2 -2:防衛\n《概要》 ハンターは今回の敵となるモンスターに【幸福】を狙われている。モンスターを倒さなければ【幸福】を守る事は出来ない。\n《目的》 自分の獲得している【幸福】のうち一つを結果フェイズで失わないこと。この【幸福】はゲームマスターが指定する。\n《報酬》 経験値2 -3:復讐\n《概要》 ハンターは今回の敵となるモンスターに負けたことがある。戦闘に敗北したのか、それとも【幸福】を壊されたのか。いずれにせよ、復讐の時だ。\n《目的》 結果フェイズまでにモンスターを無力化すること。\n《報酬》 経験値2 -4:関係\n《概要》 ハンターは、特定の人物が参加しているから、という理由で狩りに参加する。憧れているのかライバルなのか、単に仲がいいのかは自由。\n《目的》 結果フェイズの時点で他のハンターのうち一人との関係が、お互いに【深度】3以上になっていること。対象のハンターはシーンプレイヤーが決定する。\n《報酬》 経験値2 -5:挑戦\n《概要》 ハンターは今回の敵となるモンスターのことをなんらかの理由で知り、自分から戦いに赴く。\n《目的》 結果フェイズまでハンター全員が生き残り、かつ、フォロワーやモンスターに変化していないこと。\n《報酬》 経験値2 -6:救済\n《概要》 ハンターは今回の敵となるフォロワーのうち一人を救うために戦う。\n《目的》 結果フェイズまでに対象のフォロワーを「説得」で無力化する。このフォロワーはシーンプレイヤーが決定する。\n《報酬》 経験値2 diff --git a/src/assets/extratables/BloodMoon_RAT.txt b/src/assets/extratables/BloodMoon_RAT.txt deleted file mode 100644 index a7b09a584..000000000 --- a/src/assets/extratables/BloodMoon_RAT.txt +++ /dev/null @@ -1,37 +0,0 @@ -d66:関係属性表 -11:愛情 -12:憧れ -13:怒り -14:悲しみ -15:感謝 -16:期待 -21:憧れ -22:共感 -23:恐怖 -24:嫌悪 -25:困惑 -26:罪悪感 -31:怒り -32:恐怖 -33:殺意 -34:嫉妬 -35:憎悪 -36:忠義 -41:悲しみ -42:嫌悪 -43:嫉妬 -44:不信感 -45:侮蔑 -46:保護欲 -51:感謝 -52:困惑 -53:憎悪 -54:侮蔑 -55:満足感 -56:友情 -61:期待 -62:罪悪感 -63:忠義 -64:保護欲 -65:友情 -66:喜び diff --git a/src/assets/extratables/CardRanker_BFT.txt b/src/assets/extratables/CardRanker_BFT.txt deleted file mode 100644 index 5510e2dce..000000000 --- a/src/assets/extratables/CardRanker_BFT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:バトルフィールド表 -1:ハイ・アンティ/戦闘フェイズの終了時、勝者は通常習得できるモンスターカード一つに加えて、もう一つ敗者からモンスターカードを選んで手に入れることができる。//通常よりも多くのカードを賭けの対象にするルール。 -2:バーニング/ラウンドの終了時、すべてのキャラクターは【LP】現在値を3点失う。//マグマの近くや極寒の地など体力を削られるような過酷な環境で行われるルール。 -3:ノーマル/特に影響なし。//通常のルール。 -4:ハード/すべてのキャラクターの判定にプラス1の修正を加える。また、ラウンド終了時にすべてのキャラクターはモンスターカードを一つ選んで破壊状態(ルールブックP187参照)にしなければならない。//風の強い場所や水中など、カードを扱いにくい環境でのルール。 -5:スピード/モンスターカードのリスクが1高いものとして扱われる。また、判定に失敗した場合、速度から振り落とされて1D6のダメージを受ける。//バイクやローラーボードなどを使って行われる高速カードバトルルール。 -6:デスルール/戦闘フェイズでも死亡判定が発声する。また、戦闘不能になったキャラクターは即座に死亡判定を行う。ただし、攻撃を行った側がデスルールを使用しないことを選択すれば、死亡判定は発生しない。//モンスターによって実際のダメージを与える、死の危険性があるルール。 diff --git a/src/assets/extratables/CardRanker_CDT.txt b/src/assets/extratables/CardRanker_CDT.txt deleted file mode 100644 index 4f21b36f2..000000000 --- a/src/assets/extratables/CardRanker_CDT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:崩壊運命表 -1:レジェンドカードがあなたを崩壊する大地に呼び寄せた。暴虐な振る舞いをするダークランカーを倒すことをレジェンドカードは望んでいる。 -2:あなたはひょんなことから人を助けた。すると、あなたはいつの間にか救世主と呼ばれる存在になっていた、救世主であるあなたに人々は懇願する。ダークランカーを倒してくれと。 -3:あなたの住むところはダークランカーの力が及ばない楽園であった。しかし、楽園はダークランカー一味の襲撃にあい、あなただけが生き残ってしまった。楽園を出たあなたは戦いを決意する。 -4:世の中は変わった。だが、愛する人(もしくは愛する物や家族)は健在だ。あなたは愛する人を護るためにも、ダークランカーを倒すべく動き始めた。 -5:あなたはこの世界が好きだ。それはどんな理由でもよい。しかし、ダークランカーが持つダークカードはこの世界を壊す。ならば、倒してこの世界を守らねばならない。 -6:崩壊していく大地。泣き叫ぶ人々の声。あなたはこの状況を作ったのが、あなたの身内であると知る。ダークカードの手から身内を救うためにも、あなたはカードを手にとった。 diff --git a/src/assets/extratables/CardRanker_CST.txt b/src/assets/extratables/CardRanker_CST.txt deleted file mode 100644 index c0e10d94b..000000000 --- a/src/assets/extratables/CardRanker_CST.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:街中場所表 -1:カードショップ/ソウルカードを遊ぶ者たちが集まる場所。プレイスペースもあれば、カードの販売もしている。 -2:ビル街/ビルが立ち並ぶ街。ビジネスマンが忙しなく動き、チェーン店が多く見られる。 -3:駅前/人が集まる駅前。電車から降りてくる人は多く、今日も人と人がすれ違う。 -4:食事処/レストランから大衆食堂、喫茶店やバーなど、食事は人の活力であり、カードランカーにも元気は必要だ。 -5:道路/長く広い道路。車と人が通過していく場所だが、時おりトラブルを抱えたカードランカー同士が戦っている。 -6:プール/都会にあるプール。都会の生活に疲れた人々が集まる場所。時おり、ソウルカードの戦いも見られる。 diff --git a/src/assets/extratables/CardRanker_DT.txt b/src/assets/extratables/CardRanker_DT.txt deleted file mode 100644 index 9a29bf213..000000000 --- a/src/assets/extratables/CardRanker_DT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:運命表 -1:あなたが欲しているカードはダークランカーが持っているかもしれないという情報を掴んだ。ダークランカーを倒し、アンティルールでカードを手に入れなければならない。 -2:ダークランカーとなった人物とあなたはカード仲間であったが、ある日見たその人物はダークカードの力にとり憑かれて豹変していた。あなたは仲間をカードによって救うため、戦いを決意した。 -3:ダークランカーはあなたの仲間や身内、大切なモノを傷つけた(壊した)。あなたの大切なものを傷つけたダークランカー、許しはしない。 -4:あなたの持つレジェンドカードが、ダークランカーもしくは他のレジェンドカードが出現することを察知した。レジェンドカードに導かれるまま、キミはダークランカー(レジェンドカード)を探し始めた。 -5:カードランカーの組織やソウルカードの安定を願う人からそのダークランカーを倒すように依頼を受けた、あなたはその仕事を受ける価値があると思った。そう思った理由は報酬でもいいし、あなたの流儀でもよい。 -6:ダークランカーとあなたは偶然にも出会ってしまった。ダークランカーは危険な存在だ。見てしまった以上、放っておくわけにはいかない。 diff --git a/src/assets/extratables/CardRanker_GDT.txt b/src/assets/extratables/CardRanker_GDT.txt deleted file mode 100644 index 0002877c2..000000000 --- a/src/assets/extratables/CardRanker_GDT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:学園運命表 -1:あなたが過ごしているクラスや寮、部活が潰されそうになった。その裏にはダークランカーの影響があるらしい。 -2:学園の偉い人から、カードランカーであるあなたに調査依頼が入った。どうやらダークランカーが学園に干渉しているとのこと。 -3:学園内のカードが奪われた。ダークランカーの影響だろう。大切にされていたカードを取り戻すために、あなたは立ち上がった。 -4:学内に邪悪な影響を受けたカードが入り込んでいた。おそらく、ダークランカーの仕業に違いない。 -5:ダークランカーによって被害を受けた生徒があなたに相談してきた。あなたはその生徒のためにもダークランカーの調査に乗り出した。 -6:ダークランカーの影響を受け、授業や部活動はまともにできなくなってしまった。あなたは元の学校生活を再開させるためにも、調査を始めた。 diff --git a/src/assets/extratables/CardRanker_OST.txt b/src/assets/extratables/CardRanker_OST.txt deleted file mode 100644 index 777b6310a..000000000 --- a/src/assets/extratables/CardRanker_OST.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:郊外場所表 -1:カードショップ/ソウルカードを遊ぶ者たちが集まる場所。少し治安と客層が悪いが、賞金稼ぎも集まる。 -2:荒野/動植物も少なく、ピリピリとした雰囲気のある場所。 -3:遺跡/古代の遺跡。レジェンドカードやモンスターカードはこうした場所に発生したり、隠されていたりすることが多い。 -4:平原/どこまでも続く平原。動物も温厚であり、生い茂る草花が柔らかな印象を与える場所だ。 -5:山岳/険しい道が続く山。カードの精霊たちが生息していることもあるが、カード山賊団には気をつけねばならない。 -6:海川/海や川。山と同じくカードの精霊たちが住んでいる場所だ。安らげる場所でもあり、休憩している人がソウルカードをしている。 diff --git a/src/assets/extratables/CardRanker_SST.txt b/src/assets/extratables/CardRanker_SST.txt deleted file mode 100644 index 4b0ce23a2..000000000 --- a/src/assets/extratables/CardRanker_SST.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:学園場所表 -1:購買/学生にとっては学園内で唯一買い物ができる場所。パンの他に、カードパックが売っている。 -2:グラウンド/体育館/運動するのに適した広い空間だが、同時にソウルカードをやるのにもうってつけの場所である。 -3:屋上/校舎の屋上は一部の生徒には人気のスポットだ。今日も強い風が彼らを迎えている。 -4:教室/日が昇っている間は、学生たちの声で賑やかな場所。夕暮れからは少し物哀しく、寂しい。 -5:校舎裏/学校の中でも珍しく人目につかない場所。不良たちがソウルカードをやっている姿が見られる。 -6:部活棟/部活をやる者のために用意された場所。しかし、サボってソウルカードをやっているところも。 diff --git a/src/assets/extratables/CardRanker_ST.txt b/src/assets/extratables/CardRanker_ST.txt deleted file mode 100644 index 72fd1488b..000000000 --- a/src/assets/extratables/CardRanker_ST.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:場所表 -1:カード系/ショップや大会の会場など、ソウルカードに関係がある場所。カードランカーたちも集まってくる。 -2:自然/公園や山など、自然の息吹が感じられる場所。耳を澄ませばカードの声も聞こえるかもしれない。 -3:神秘/古代の施設や、神社・教会などの神秘的な場所。レジェンドカードが隠されているかもしれない。 -4:安息/自宅など、安らげる空間。そこはあなたが安らげる場所であり、思い出の地なのかもしれない。 -5:街中/人々が住む街中。何気なく落ちているカードの中には、価値があるものもあるかも。 -6:水辺/プールや海岸など、水が近くに存在する場所。ひとまず、ここでひと息つけそうだ。 diff --git a/src/assets/extratables/CardRanker_TDT.txt b/src/assets/extratables/CardRanker_TDT.txt deleted file mode 100644 index f70ef7af7..000000000 --- a/src/assets/extratables/CardRanker_TDT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:大会運命表 -1:あなたは友人と共に大会に出場した。しかし、友人はダークランカーによって倒されてしまった。 -2:あなたは大会の商品を狙い、大会に出場した。だが、ダークランカーもそれを狙っているらしい。 -3:あなたは大会の運営者から、大会に関わっているダークランカーの撃破を依頼された。 -4:あなたはカードの導くままに、大会に関わってくるダークランカーの出現を察知した。 -5:あなたは大会の一選手として戦っていた。だが、謎の刺客によって襲われた。きっとダークランカーの仕業に違いない。 -6:あなたは大会に出場し、優勝候補と言われているカードランカーだ。だが、そんなキミをダークランカーは襲った。 diff --git a/src/assets/extratables/CardRanker_WT.txt b/src/assets/extratables/CardRanker_WT.txt deleted file mode 100644 index b45580699..000000000 --- a/src/assets/extratables/CardRanker_WT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:変調表 -1:猛毒/ラウンド終了時に【LP】の現在値を3点失う。また【LP】の現在値を回復できない。 -2:炎上/ラウンド終了時に、モンスターカードを一つ選び破壊状態にしなければならない。既に破壊状態になっているものは選べない。 -3:妨害/攻撃判定にマイナス2の修正を受ける。 -4:捕縛/ブロック判定にマイナス2の修正を受ける。 -5:召喚制限/「タイプ:補助」のモンスターカードを使用できない。 -6:暗闇/「タイプ:支援」のモンスターカードを使用できない。 diff --git a/src/assets/extratables/Elysion_EBT.txt b/src/assets/extratables/Elysion_EBT.txt deleted file mode 100644 index 9ee2ec0a3..000000000 --- a/src/assets/extratables/Elysion_EBT.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:お祭り室休憩表 -2:花火\n「たーまやー!」大きな花火があがって、祭りの雰囲気を盛り上げる。真夜中パートだった場合《好意》を持っているキャラクター一人を選ぶ。選んだキャラクターに対する《感情値》が2点上昇する。真夜中パート以外の場合ゆっくりして《アウル》が1点上昇する。 -3:客天魔\n「今日は客として来たんだよ。」天魔が客としてやって来ている!?何もしなければいいけど……。[政治力]で判定を行う。成功すると天魔から称賛され、《アウル》が1点回復する。失敗すると、天魔が暴れて帰ってしまい、[政治力]が2D6点減少する。 -4:クタクタ……\n「休ませて……。」祭りの準備にかり出されて、骨の髄まで疲れてしまった。【お金】を1個手に入れるが、「眠気」の変調を受ける。 -5:意外な一面\n「あいつ、あんな表情もできたんだ。」お祭りの中で、仲間の意外な一面を知る。PCの中から好きなキャラクターを選ぶ。選んだキャラクターに対する《感情値》の属性を反転する。 -6:出店!\nクラブやクラスでお店を出すことになった。[青春力]で判定を行う。判定に成功すると、お店は繁盛して【お金】を1個手に入れる。判定に失敗すると、恥ずかしい目に遭って【アウル】が1点減少する。 -7:お祭りの雰囲気\n「ワイワイ、ガヤガヤ。」お祭りだ!つい開放的な気分になって、隣の人を誘ってしまおうかなと思える。好きなPCを一人選ぶ。選んだキャラクターとデートを行う。このデートは選んだキャラクターが行動済みでも行え、デートを行っても行動済みにならない。必ず「友達デート表」を使用すること。 -8:対抗レース!\nグラウンドでクラブや委員会を巻き込んだ大レースが始まった!【クラブ】か【委員会】のコミュに所属しているPCは全員、[青春力]で判定を行う。成功すると、《アウル》が1点回復する。さらに、最も達成値が低いキャラクターはMVPとなり、【後輩】を手に入れる。 -9:水泳大会!\n「あの子の為に、泳ぐぞ!」大規模な水泳大会!さあ、新記録は出るのか!好きなPCを一人選び、[青春力]で判定を行う。判定に成功すると、選んだPCの自分に対する《感情値》が[判定値の成功度×1]点上昇する。このとき、【水着】もしくは【派手な水着】を持っている場合、この判定の達成値が3点上昇する。 -10:応援合戦!\n「フレー!フレー!」応援団に交じって仲間を鼓舞しよう!このパートの間、自分は「行動済み」であってもアシストを行うことができる。 -11:怪しげなお店\n「いらっしゃい。……ふふふ。」怪しいクラブが出店しているお店がある。本当に大丈夫か?1D6を振る。1の目が出た場合、【メイド服】を手に入れる。2の目が出た場合、【究極鉛筆】を手に入れる。3の目が出た場合、【みそかれーうどん】を手に入れる。4の目が出た場合、【進化の石】を手に入れる。5の目が出た場合、【牛乳】を手に入れる。6の目が出た場合、【安眠セット】を手に入れる。ただし、ここで手に入れた種別が「食物」のアイテムを使用すると「病気」の変調を受ける。 -12:キャンプファイヤーの下で……\nキャンプファイヤーを囲みながら、みんなで踊る。PC全員は、好きなPCを一人選ぶ。PC全員は、選んだPCに対する《感情値》が1点上昇し、属性は《好意》となる。 diff --git a/src/assets/extratables/Elysion_GIT.txt b/src/assets/extratables/Elysion_GIT.txt deleted file mode 100644 index dba670609..000000000 --- a/src/assets/extratables/Elysion_GIT.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:陰謀表 -2:「お前たちの血を邪神様の生贄に捧げてやる!」\n世界征服同好会の仕掛けた邪悪で陰湿なトラップにひっかかる。PC全員は《生命力》が2D6点減少する。このシナリオに登場する世界征服同好会のキャラクターの名前が分かっている場合、そのキャラクターに対する《感情値》を1点上昇させ、その属性を《敵意》にする。 -3:「……キミ、よく見るとかわいいね。ちょっとつきあわない?」\n世界征服同好会の一員からデートを申し込まれる。ランダムにPC一人を選ぶ。そのPCは、このシナリオに登場ソウル正解征服同好会のキャラクター一人と、デートを一回行うことができる。(行動済みにはならない。) -4:「すみません、少し道を尋ねたいのですが……。」\n謎の老婆に道を尋ねられる。PCの代表者は1D6を振ること。奇数だと老婆に変装した世界征服同好会の刺客だった。PC全員は《生命力》が1D6点減少し、「バカ」の変調を受ける。偶数だと助けた老人から感謝される。【焼きそばパン】一個か【タリスマン】一個を獲得する。 -5:「あなたは、だんだん眠くなるぅ〜。」\n世界征服同好会の催眠に合う。PC全員が受けている変調をすべて回復し、「眠気」の変調を受ける。 -6:「ねぇねぇ、あの人たちって……。」\n世界征服同好会が、PCたちの悪い噂をばらまく。このパートに判定を行う場合、[学力]以外の能力値で行う判定は、ファンブル率が3上昇する。 -7:「ねぇねぇ、ボクともっと遊んでよ。」\n世界征服同好会が、様々な妨害工作を行っている。このパートに行う判定は、ファンブル率が1上昇する。 -8:「ねぇねぇ、あの人って……。」\nPCたちの一人に世界征服同好会の一員であるという嫌疑がかけられる。ランダムにPC一人を選ぶ。そのPCに対して《好意》を持っているPCがいたら、そのPCは[政治力]で判定を行う。失敗するとNPCのそのキャラクターに対する《好意》が《敵意》に変わる。 -9:「ふふふ、僕の言う未来に興味はないかい?」\n世界征服同好会の催眠に合う。PC全員の《アウル》の現在値を1にする。 -10:「これ以上我々の邪魔をすると死ぬことになるぞ。」\n物陰から世界征服同好会の構成員が襲い掛かってきた。PCの代表者は[青春力]の判定を行う。成功すると、襲いかかってきた構成員を返り討ちにできる。GMは決戦フェイズに登場するエネミーから一体を選び、《生命力》を3D6点減少させること。失敗すると、戦いに敗れてしまう。PC全員は、《生命力》が1D6点減少し「恐怖」の変調を受ける。 -11:「ふふふふふ、ここで大人しくしておけ。」\n世界征服同好会に監禁されてしまう。PCの代表者は[学力]の判定を行う。失敗すると、プレイスの中から好きなものを一つ選ぶ。PC全員、そのパートは、そのプレイスで休憩する以外の行動を行えなくなる。 -12:「我々のファミリーに近づく者には消えてもらおう。」\n世界征服同好会の仕掛けた周到で悪逆なトラップにひっかかる。PC全員はゲームマスターの選んだ変調を一つ受ける。(PCごとにばらばらの変調を選んでもよい)。このシナリオに登場する世界征服同好会のキャラクターの名前が分かっている場合、そのキャラクターに対する《感情値》を1点上昇させ、その属性を《敵意》にする。 diff --git a/src/assets/extratables/Elysion_HBT.txt b/src/assets/extratables/Elysion_HBT.txt deleted file mode 100644 index 92412eaf5..000000000 --- a/src/assets/extratables/Elysion_HBT.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:温泉休憩表 -2:風紀委員の巡回!\n"「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであればこっぴどく叱られる。[政治力]で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。 -3:サウナで激闘!\n「……あいつに負けるわけには。」サウナでがまん比べが始ってしまう。[政治力]で判定を行う。成功すると《アウル》1点を獲得する。失敗すると、「病気」の変調を受ける。 -4:湯上りの一杯\n"「お風呂の後はこれだよな!」[政治力]で判定を行う。成功すると、変調をすべて回復することができる。 -5:あれ?服が……\n「あれ?何だこれ?」自分の着替えを入れたはずのロッカーを開けてみると、服が消えて、別の何かが……。「防具」を装備していたら、その中から一つを選び、それを消費する。そして消費したアイテムの代わりに「初期アイテム決定表(基本P43)」を一度使用して、ランダムに一つのアイテムを獲得する。 -6:偶然の出会い\n「あれ?来てたんだ。」知り合いと偶然出会う。好きなキャラクター一人を選び、[青春力]の判定を行う。成功すると、そのキャラクターとデートを一度行うことができる。 -7:いいお湯♪\n「ふう。体の芯から温まるぅ。」疲れがとれていく。《生命力》が1D6点、《アウル》が1点回復する。 -8:転倒!\n「はわわわわッ!」洗い場で滑って転びそうになる。[学力]で判定を行う。失敗すると、獲得していた「手がかり」を一つ失う。(「手がかり」の活用が行えなくなるだけで、情報を忘れるわけではない。) -9:命の洗濯\n「……。」お風呂に入りながら、今週の出来事を振り返る。失敗を次に活かさないと……。もしも、このセッションの間に一度以上判定に失敗していたら、《アウル》の限界値が1点上昇する。 -10:湯あたり\n「うう。のぼせちゃった。」お風呂に長時間入ってのぼせてしまった。1D6点のダメージを受けるか、次のパート行動しないか、どちらかを選ぶ。 -11:美容効果\nお肌がツルツルピカピカ!そのセッションの間、[青春力]の判定の達成値が1点上昇する。 -12:混浴ッッ!?\n湯船に入ってみると、そこには異性の姿が……ええッ!?男湯と女湯間違えたッ!?好きな異性のキャラクターを1人選ぶ。そのキャラクターの自分に対する《達成値》が2点上昇する。その後、[青春力]で判定を行う。失敗すると「バカ」の変調を受ける。 diff --git a/src/assets/extratables/Elysion_HT.txt b/src/assets/extratables/Elysion_HT.txt deleted file mode 100644 index c3ecf993f..000000000 --- a/src/assets/extratables/Elysion_HT.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:ロウ表 -2:「たまには釣りにでも行くか」「釣り人表」を振る。 -3:「汚い下着があったので没収!」【インナー】(基本p104)を取得し《アウル》を1点取得する。ただし、誰のものかはPCの中からランダムで決定する。 -4:「街をきれいに!……ふー、心がきれいになったなあ!」ボランティア活動をしよう!プレイスの中から1つ選び、その表を振る。その後、生命力を1D6点回復する。 -5:「いやー、いいことを言ったなあ」お説教をする。あなた以外のPCを一人選ぶ。選ばれたPCとあなたはカオスレートを+1する。 -6:ついつい人の恋愛事情に口出ししてしまう。自分以外の任意のPC(できれば異性)2人をデートさせる。この表によるデートは行動を消費しない。 -7:身近にいるカオスなやつがむかついてしょうがない。理由もなく殴ってすべてのカオスレートが-2以下のPCに2D6点のダメージを与える。成功度を1として扱い好きな能力値でガードが可能。 -8:「な、なんでもないはずなのに!」叱っていたアイツのことが気になってきた……。もっともカオスレートが低い異性のキャラクターに対する《感情値》が2点上昇する。 -9:ネット上で情報について検索していたら、いつの間にかネット上で喧嘩していた。つい熱くなってしまう。「バカ」の変調を受けるが、好きな感情を1つだけ公開することができる。 -10:ありがたい高級なツボを手近にいたPCに売りつける。ランダムに【お金】を持つあなた以外のPCを選ぶ。そのキャラクターは【お金】をすべて消費し、【タリスマン】(基本p107)を入手するが、あなたは「孤独」を受ける。【お金】がなかった場合、舌打ちだけする。 -11:「欲望には勝てなかったよ……」ちょっとした誘惑から悪堕ちして、露出度の高い格好になるしやたらと黒と漢字を好むようになった。カオスレートを-5する。【タバコ】(基本p160)と【お酒】(基本p160)を1個ずつ獲得する。 -12:ロウとカオスの境界線なんて曖昧なものなのかもしれない。「カオス表」を振る。 diff --git a/src/assets/extratables/Elysion_IT.txt b/src/assets/extratables/Elysion_IT.txt deleted file mode 100644 index 6c862a1b1..000000000 --- a/src/assets/extratables/Elysion_IT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:釣り人表 -1:「良い物が釣れたぞ!」価格3以下のアイテムを1つ選んで入手する。 -2:足を釣った。行動済でなかった場合、行動済みになる。 -3:下着を釣ってしまった。【インナー】(基本p104)を入手する。ただし、誰のものかはPCの中からランダムで決定する。 -4:「太公望になった気分だ」釣りをしながら、政治を語る。カオスレートを+1もしくは-1できる。 -5:「大漁大漁!」お魚を換金して【お金】を1個入手する。 -6:ついサメを釣ってしまった。【キラー】(基本p126)と戦闘を行う。この戦闘はイベントシーン扱いとし、撤退できない。 diff --git a/src/assets/extratables/Elysion_JH.txt b/src/assets/extratables/Elysion_JH.txt deleted file mode 100644 index f1a9b52ea..000000000 --- a/src/assets/extratables/Elysion_JH.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:授業ハプニング表 -2:授業中に突然テロリストが侵入してくる。「日常遭遇表(p97)」を使ってエネミーを決定する。そのエネミーと、この授業判定を行ったキャラクターは戦闘を行う。 -3:もうすこしがんばりましょう。先生からのプレゼント。もし、この授業判定に失敗していたら、この表を使用したキャラクターは【参考書】(基本p107)を一つ獲得する。 -4:居眠りしてたらリフレッシュ!この表を使用したキャラクターは、《生命力》を1D6点回復する。 -5:先生からお使いを頼まれる。この表を利用したキャラクターは、「図書館」(基本p92)の「図書館休憩表」を使用する。 -6:アウルが暴走して事故発生!この表を使用したキャラクターは《生命力》を1D6点減少する。 -7:授業中に生徒同士で口論になる。この授業判定を行ったキャラクターの中に、この表を使用したキャラクターに対して《好意》を持っていたキャラクターがいたら、その属性を《敵意》にする。 -8:先生から課題をもらう。この表を使用したキャラクターは、次に[学力]で判定に成功するまで、この授業の□にチェックを入れることができない(チェックを入れることができないような場合は、特に効果はない)。 -9:先生は受講態度が気にくわなかったようだ。なぜか廊下に立たされる。この表を使用したキャラクターは、1D6を振って、ランダムに変調一つを選び、それを受ける。 -10:ちょっとだけ自習になる。この授業判定に参加したキャラクター全員は、「教室」(基本p87)の「教室休憩表」を一度ずつ使用する。 -11:を?こんなところにパンが落ちてる。この表を使用したキャラクターは【焼きそばパン】(基本p106)を一つ獲得する。この【焼きそばパン】を使用した時1D6を振る。1が出ると、通常の【焼きそばパン】の効果の代わりに《生命力》が1点減少する。 -12:先生はみんなの授業態度に大いに満足したようだ。授業判定の成否や授業レベル、授業の種類に関わらず、授業判定に参加したキャラクター全員は、この曜日の授業の□にチェックを入れる。 diff --git a/src/assets/extratables/Elysion_KT.txt b/src/assets/extratables/Elysion_KT.txt deleted file mode 100644 index 9e3a105e9..000000000 --- a/src/assets/extratables/Elysion_KT.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:カオス表 -2:「たまには釣りにでも行くか」「釣り人表」を振る。 -3:悪いとわかっていたがつい下着を手に取ってしまう。【インナー】(基本p104)を取得し《アウル》を1点獲得する。ただし、誰のものかはPCの中からランダムで決定する。 -4:「ヒャッハー!」カオスに染まってとりあえず手近なところに襲撃を行う。プレイスの中から1つを選び、その表を振る。その後【お金】を1個入手し、カオスレートを-1する。 -5:「なあ、ちょっとやってみないか。ちょっとでいいから、な?」ワルの道に勧誘する。あなた以外のPCを一人選ぶ。選ばれたPCとあなたはカオスレートを-1する。 -6:「横恋慕をしてナンボ」それがカオスの恋愛だ。一度でもデートをしたPCの片方に対してデートを行う。デートしたPCが居ない場合、任意のPCに対してデートを行う。この表によるデートは行動を消費しない。 -7:身近にいるロウなやつがムカついてしょうがない。理由もなく殴ってすべてのカオスレートが+2以上のPCに2D6点のダメージを与える。この攻撃は成功度を1として扱い、好きな能力値でガード可能。 -8:「だるい……休もう……」あなたの《生命力》を2D6点回復する。ただし、「眠気」の変調を受ける。 -9:ゲームセンターに行ってストレスを発散!……できればいいな。「青春力」の判定を行う。成功すると、《アウル》を2個獲得する。失敗するとムキになって【お金】を1個失う上に「バカ」の変調を受ける。 -10:「せっかくだから覗きをしよう。フヘへ……」「プール休憩表」もしくは「温泉休憩表(p78)を任意のPCに振らせ、その効果をPCに適応させる。その後あなたのそのPCに対する《感情値》を2点上昇させる。 -11:捨て猫を披露。あなたのカオスレートが+5され、あなたに対する《感情値》の属性がすべて反転する。また【後輩】(基本p106)を獲得する。 -12:ロウとカオスの境界線なんて曖昧なものなのかもしれない。「ロウ表」を振る。 diff --git a/src/assets/extratables/Elysion_NA.txt b/src/assets/extratables/Elysion_NA.txt deleted file mode 100644 index 581575385..000000000 --- a/src/assets/extratables/Elysion_NA.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:新初期アイテム決定表 -2:従 者 p89 -3:菓子折り p88 -4:ホイッスル p89 -5:おせっかいな友人 p89 -6:釣り竿 p89 -7:牛 乳 p88 -8:究極六角鉛筆 p90 -9:使い捨てカメラ p89 -10:メイド服 p89 -11:マスコットストラップ p89 -12:秘薬の小瓶 p88 diff --git a/src/assets/extratables/Elysion_NT.txt b/src/assets/extratables/Elysion_NT.txt deleted file mode 100644 index 3e47aae5e..000000000 --- a/src/assets/extratables/Elysion_NT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:ニュートラル表 -1:「善とか悪とか、全部煩わしくなってきた」カオスレートが+2以上もしくは2以下のPCがいる場合、そのキャラクター全てを理由もなく殴りつける。。殴りつけられたPCに2D6点のダメージを与える。この攻撃は成功度を1として扱い、好きな能力値でガード可能。 -2:「危ない!」電車に轢かれそうな子供が!?【生命力】を1D6点失うものの、助けて感謝される。いいことをすると気持ちいいなあ。カオスレート+1。 -3:心のバランスを保つため、釣りでもしよう。「釣り人表」を振る。 -4:「どうしよう」落し物の財布を拾っちゃった……。ネコババすると、カオスレートが-3されて【お金】を2つ入手。ちゃんと交番に届けるとカオスレートが+1されて、お礼に【お金】を1つ入手。 -5:急に興奮する。「ロウ表」もしくは「カオス表」のどちらか好きな方を振る。 -6:人に影響される。すべてのPCのカオスレートを合計し、+1以上だった場合、あなたのカオスレートを+2する。-1以下だった場合、あなたのカオスレートを-2する。0だった場合、特に何も起こらない。 diff --git a/src/assets/extratables/Elysion_OJ1.txt b/src/assets/extratables/Elysion_OJ1.txt deleted file mode 100644 index 79fa9b483..000000000 --- a/src/assets/extratables/Elysion_OJ1.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:音楽ジャンル決定表A -1:さわやかな -2:ちょっと大人な -3:正統派 -4:初恋色の -5:女の子らしい -6:カオス全開☆ diff --git a/src/assets/extratables/Elysion_OJ2.txt b/src/assets/extratables/Elysion_OJ2.txt deleted file mode 100644 index c1ea05e2d..000000000 --- a/src/assets/extratables/Elysion_OJ2.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:音楽ジャンル決定表B -1:アイドルポップス -2:ロックチューン -3:ラブソング -4:バラード -5:テクノポップ -6:電波ソング diff --git a/src/assets/extratables/Elysion_TBT.txt b/src/assets/extratables/Elysion_TBT.txt deleted file mode 100644 index 2acba95fd..000000000 --- a/src/assets/extratables/Elysion_TBT.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:修学旅行休憩表 -2:見回り先生の巡回!\n「そこ、何やってる!」見回りの先生に見つかった。現在真夜中パートであれば、こっぴどく叱られる。[政治力]で判断を行う。失敗すると、次のパートは行動できない。真夜中パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。 -3:自然災害\n修学旅行先で自然災害に遭ってしまい、観光しようにもできない。仕方ないのでホテルでゆっくりしよう。《生命力》を2D6点回復する。 -4:地元の天魔!\n「見かけない撃退士だな。」「初めて見る天魔だ。」好きな能力値で判定を行う。判定に成功すると、このシナリオで登場する天魔の種類をすべてGMから教えてもらえる。失敗すると《生命力》が1D6点減少する。 -5:二人で迷子\n「あれれ?こっちの道でよかったのかな?」二人ではぐれてしまう。PCの中から好きなキャラクターを1人選ぶ。自分の選んだキャラクターに対する《感情値》が1点上昇し、属性が《敵意》になる。 -6:ホームシック\n不意に、久遠ヶ原学園が懐かしくなっていしまう。「孤独」の変調を受ける。 -7:歴史的観光地\n歴史のある観光地を見て回り、自分の五感で知識を蓄える。[学力]で判定を行う。西欧すると、自分の修得している授業から好きなものを一つ選び、□にチェックを入れる。 -8:お土産屋\n「旅のお土産にお一ついかがですか?」お土産屋でいろいろなものをチェックする!役立つものもあるかも?[青春力]で判定を行う。成功すると、分類が[一般]、価値が2以下の好きなアイテムを一個獲得する。失敗すると、木刀やペナントなど役に立たないものを買い込んでしまう。【お金】を1個失う。 -9:名産品\nその他の名産品を食べて舌鼓を打つ。おいしい!《アウル》が1点回復し、「空腹」の変調が回復する。 -10:地元の学校\n「よろしゅーに。」「なかようせんとあかんよ。」地元の学校と共同授業だ。これは負けていられない。[学力]で判定を行う。判定に成功すると、地元の生徒からの《好意》が2点上昇し、「バカ」の変調が回復する。失敗すると、「バカ」の変調を受ける。 -11:枕投げ!\nやっぱり修学旅行といえば枕投げでしょ!PCの中から好きなキャラクターを一人選ぶ。[青春力]で判定を行う。成功すると、そのキャラクターは《生命力》が1D6点減少し、そのキャラクターの自分に対する《感情値》が2点上昇する。失敗すると、自分の《生命力》が1D6点減少し、そのキャラクターに対する《感情値》が2点上昇する。 -12:好きな人語り!\n「ねえねえ、この際だからハッキリ言っちゃおうよ。」修学旅行での楽しみ、それがこの好きな人を語り合う時間だ。真夜中パートならば、PC全員はそれぞれ《好意》が最も高いPCを一人発表する。発表したPCは、発表されたPCに対する《感情値》が2点上昇する。真夜中パート以外であれば、よく眠ってリフレッシュ。《アウル》が1点回復する。 diff --git a/src/assets/extratables/Elysion_UBT.txt b/src/assets/extratables/Elysion_UBT.txt deleted file mode 100644 index 0b86e6007..000000000 --- a/src/assets/extratables/Elysion_UBT.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:潜入調査休憩表 -2:風紀委員の巡回!\n「そこ、何をやっている!」他校の風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。[政治力]で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。 -3:協力者\n「キミが、久遠ヶ原学園から来た子だね。」正体を知っている協力者との密会。次に行う調査判定が2点上昇する。 -4:変装中\n「どう?似合ってる?」変装をする為に、支援物資が届いていた。【メガネ】か【ジャージ】の内、好きな方を獲得する。 -5:不良に絡まれる\n「おい、テメェ最近目立ってるんだってな。」どうやら、他校の不良生徒に絡まれてしまったようだ。穏便に解決しなければ。【お金】か【タバコ】か【お酒】があれば、1個消費する。消費できなかった場合、殴られて《生命力》が1D6点減少する。 -6:教師からの注意\n「キミ、ちゃんとしてくれないと困るよ。」規律をいつの間にか破っていたらしい。教師から注意を受けて、《アウル》が1点減少する。 -7:一般授業\n「で、あるからして……。」一般的な授業を受ける。これが外の世界の普通か……。[学力]で判定を行う。成功すると【一般授業】か【交流授業】の□にチェックを入れる。どちらもない場合、スケジュールの好きな欄に【一般授業】を入れられる。 -8:お昼\n「はい、今日のメニューはこれ。」少々混むことはあるが、問題なく普通に食べることができる。コメントし辛い味で、なんだか物足りないような気もするけど……。《生命力》を1D6点回復する。 -9:おっかけ\n「びびびっと来ました!」どうしても目立ってしまう自分に、おっかけができてしまう。やりにくい……。おっかけとデートを行うことを選べる。デートを行わなかった場合、「孤独」の変調を受ける。 -10:うっかり\n「え、なにあれ……?」いつもの調子で、学校の中で能力を使いそうになる。[政治力]で判定を行う。成功すると、うまく説得して協力者にできる。【おせっかいな友人】を獲得する。失敗すると、なんとか誤魔化せたが視線が痛い。撃退士以外の生徒の自分に対する《感情値》が2点上昇し、その属性は《敵意》となる。 -11:襲撃\n「きゃあー!」一般生徒が天魔に襲われている!バレないように助けないと……。好きな能力値で判定を行う。成功すると、うまくバレずに助け出せる。撃退士以外の生徒に対する《感情値》が3点上昇し、その属性は《好意》となる。失敗すると、助けることには成功したが、傷を負ってしまう。《生命力》が2D6点減少する。 -12:疑い\n「キミって、ひょっとすると……。」勘のいい生徒から、本格的に疑われてしまう。[政治力]で判定を行う。成功すると、疑いを晴らすことができた上に、重要な情報をくれる。GMが選択した手がかり一つの情報を公開する。失敗すると、疑いの視線が学校中から向けられてしまう。《アウル》を2点減少する。 diff --git a/src/assets/extratables/Elysion_UT1.txt b/src/assets/extratables/Elysion_UT1.txt deleted file mode 100644 index 2ae82a78f..000000000 --- a/src/assets/extratables/Elysion_UT1.txt +++ /dev/null @@ -1,22 +0,0 @@ -d66:ユニット名決定表1A -11:白い -12:月の -13:私は -14:虹色の -15:放課後 -16:はじめての -22:乙女の -23:ピンクの -24:魔法の -25:蒼い -26:恋の -33:ときめき -34:太陽の -35:燃えよ -36:雨の -44:星の -45:君に -46:思い出の -55:都会の -56:やさしい -66:黒い diff --git a/src/assets/extratables/Elysion_UT2.txt b/src/assets/extratables/Elysion_UT2.txt deleted file mode 100644 index a7c91790e..000000000 --- a/src/assets/extratables/Elysion_UT2.txt +++ /dev/null @@ -1,22 +0,0 @@ -d66:ユニット名決定表1B -11:革命 -12:エージェント -13:アリス -14:自転車 -15:忍者 -16:予知夢 -22:リボン -23:メロディー -24:バースデイ -25:チョコレート -26:プレゼント -33:カオス -34:つばさ -35:夏 -36:ココロ -44:ジェラシー -45:朝ご飯 -46:保健室 -55:祈り -56:迷宮 -66:久遠ヶ原学園 diff --git a/src/assets/extratables/Elysion_UT3.txt b/src/assets/extratables/Elysion_UT3.txt deleted file mode 100644 index b572bdb12..000000000 --- a/src/assets/extratables/Elysion_UT3.txt +++ /dev/null @@ -1,22 +0,0 @@ -d66:ユニット名決定表2A -11:堕天使 -12:ラヴクラフト -13:セレブリティ -14:スターダスト -15:ロリポップ -16:ファースト -22:ストロベリー -23:シャイニー -24:ドリーム -25:ヴァンパイア -26:シンデレラ -33:スウィート -34:ウィッチ -35:フラワー -36:オレンジ -44:ダイアモンド -45:モノクロ -46:バレンタイン -55:スタイリッシュ -56:コンクリート -66:ニンジャ diff --git a/src/assets/extratables/Elysion_UT4.txt b/src/assets/extratables/Elysion_UT4.txt deleted file mode 100644 index 3bcdbeb87..000000000 --- a/src/assets/extratables/Elysion_UT4.txt +++ /dev/null @@ -1,22 +0,0 @@ -d66:ユニット名決定表2B -11:スレイヤー -12:ファイター -13:セッション -14:ドーナツ -15:ワルツ -16:ティアラ -22:ガール -23:スカイ -24:キス -25:シティ -26:ステージ -33:ラブ -34:ロマンス -35:ノート -36:ショコラ -44:プリンセス -45:キャンディ -46:ハニー -55:ハンター -56:ディスコ -66:ブルー diff --git a/src/assets/extratables/HuntersMoon_DS1ET.txt b/src/assets/extratables/HuntersMoon_DS1ET.txt deleted file mode 100644 index d18d7cc75..000000000 --- a/src/assets/extratables/HuntersMoon_DS1ET.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:ディフェンス遭遇表1st -1:状況 あなたはモノビーストに追い詰められるまま建物に閉じこもる。とりあえず、夜は建物の中を威勢よく動き回り、相手を威嚇しなければ。\n指定特技 《脅す/社会10》\n成功 建物の外から隙を窺うモノビーストをきつく睨みつける。感情属性を「怒り」に設定。\n失敗 ヤツはあなたを嘲笑うかのように建物の中に出現を繰り返す。感情属性を「恐怖」に設定。 -2:状況 廃墟となって久しいこの建物には、ハンターがいた形跡がある。山と仕掛けられれたトラップに気をつけながら探索を続けるが……。\n指定特技 《見つける/頭部4》\n成功 裏口で格闘の跡を見つける。何かの事情で、出たところを襲われたのだ。感情属性を「怒り」に設定。\n失敗 トラップに引っかかり怪我をする。こんなところに立て篭もって大丈夫か?感情属性を「恐怖」に設定。 -3:状況 あなたの友人のハンターは脚に重傷を負って動けない。しばらくこの建物の中で回復を待つしかなさそうだが、彼は足手まといになるのを嫌って戸外で死のうとする。止めよう。\n指定特技 《逆腕/腕部9》\n成功 必死に引き止めた戸口の向こうで、笑うような息遣いが聞こえた。感情属性を「恐怖」に設定。\n失敗 制止を振り切って出て行った友人は死んだ。感情属性を「怒り」に設定。 -4:状況 エレベーターが落ちた。不運な同行者と一緒に、誰も来ないビルの地下に閉じ込められる。落ちる寸前、天井で聞いた音は間違いなくヤツのものだ。\n指定特技 《落ちる/胴部10》\n成功 怪我もなく落下を切り抜けたが、同行者を連れて出て行く手段がない。感情属性を「恐怖」に設定。\n失敗 ショックでパニックに陥った同行者はあなたを責め立てる。感情属性を「怒り」に設定。 -5:状況 今回の相手は光が強い環境では消散能力を使えないようだ。あなたは建物中を駆けまわって、照明をつけてまわる。\n指定特技 《逆脚/脚部9》\n成功 なんとか防御体制は整ったが、送電線が気に掛かる。感情属性を「恐怖」に設定。\n失敗 間に合わない。建物の半分の送電が絶たれ、あなたは狭い部屋に閉じこもることになる。感情属性を「怒り」に設定。 -6:状況 金がないのか脚が遅いのか、あなたは逃げ回ることができない。唯一の選択肢は、あらかじめ作っておいた隠れ家に潜むことだ。\n指定特技 《隠れる/環境6》\n成功 とりあえず、うまく隠れることができたようだ。感情属性を「怒り」に設定。\n失敗 隠れ家の装備は、すでに破壊されていた。感情属性を「恐怖」に設定。 diff --git a/src/assets/extratables/HuntersMoon_DS2ET.txt b/src/assets/extratables/HuntersMoon_DS2ET.txt deleted file mode 100644 index aab9679e8..000000000 --- a/src/assets/extratables/HuntersMoon_DS2ET.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:ディフェンス遭遇表2nd -1:状況 建物の構造を把握し、憶えこむことで、満月の晩までの生存率は大きく向上するだろう。あなたは眠い目を擦りつつ、昼間も探索を続ける。\n指定特技 《覚える/社会9》\n成功 やつを迎え撃つ自信が湧いてきた。【モラル】が2点増加する。\n失敗 眠くて全然覚えられない。体力を消耗してしまう。「重傷」の変調を発動する。 -2:状況 夜が来るたびに退屈な見張りが始まる。代わり映えのしない景色を眺めていると、モノビーストの襲撃に対する反応速度を保つのは難しい。\n指定特技 《反応/頭部5》\n成功 襲われたが難なくやり過ごす。感情属性を任意に変更できる。\n失敗 後ろに実体化したモノビーストに気付くのが遅れ、痛い代償を払うことになった。アイテムを任意に1つ失う。 -3:状況 モノビーストが実体化するにはある程度のスペースが必要だ。あなたは部屋の中にワイアを張り巡らし、空間を細分することで攻撃を防ぐ。\n指定特技 《斬る/腕部4》\n成功 モノビーストはあなたを警戒するあまり動きが鈍り、「妨害」の変調を発動する。\n失敗 動きづらくなっただけで襲撃が無い……【モラル】が2点減少する。 -4:状況 建物の中にあるものを何でも積んでバリケードを作る。霧になる相手には効果が薄いかもしれないが。移動を制限できるぶん、ないよりマシだ。\n指定特技 《心臓/胴部7》\n成功 この場所は満月の夜にヤツを追い詰める場所としても使えるだろう。【ネット】を入手する。\n失敗 堂々と壁を破って侵入された……撃退はしたが、自らのあまりの愚かさに「動転」してしまう。 -5:状況 自作の罠を建物のあちこちに配置する。うまくいけば、ヤツを退散させる程度の役には立つだろう。\n指定特技 《仕掛ける/脚部7》\n成功 うとうとしていた夜更け、悲鳴とともに逃げ出すモノビーストの移動音で目を覚ます。【モラル】が2点増加する。\n失敗 まるで意に介さないモノビーストに追い回されトラウマを負う。このセッションが終了するまで妨害判定にマイナス2の修正がつく。 -6:状況 やばい。寒い。空調の故障か季節が悪いのか、モノビーストと勝負する前に凍死してしまいそうだ。\n指定特技 《耐寒/環境12》\n成功 あなたは苦難を耐え切り、自信を身につける。次の遭遇表の行為判定にプラス2の修正がつく。\n失敗 我慢できなくなってアイテムを燃やして暖を取る。ランダムにアイテムを1つ失う。 \ No newline at end of file diff --git a/src/assets/extratables/HuntersMoon_DS3ET.txt b/src/assets/extratables/HuntersMoon_DS3ET.txt deleted file mode 100644 index a7c64aeb5..000000000 --- a/src/assets/extratables/HuntersMoon_DS3ET.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:ディフェンス遭遇表3rd -1:状況 時は来た。問題は立て篭もっていた建物から出て行くタイミングだが、囮を使うことでモノビーストを騙し、安全に出ていけるかもしれない。\n指定特技 《騙す/社会11》\n成功 相手の不意を打った!次に行う行為判定にプラス2の修正がつく。\n失敗 逆に騙され、日が沈みきっていない早い時間に飛び出してしまう。モノビーストは夕暮れの戦闘で変調を発動しない。 -2:状況 長い潜伏期間を過ごした建物を振り返り、その上に出ている満月を見つめる。この夜でケリがつく。そんな予感があなたの胸を満たす。\n指定特技 《予感/頭部9》\n成功 どんな形で決着がつくか、脳裏にイメージが浮かぶ。感情属性を任意に変更できる。\n失敗 不安があなたの心を締め付ける。【感情】が2点増加する。 -3:状況 さて満月の夜だ。幸い投擲武器が豊富な場所にいるわけで、外にいるモノビーストに、すこし先制攻撃をさせてもらおう。\n指定特技 《投げる/腕部8》\n成功 投げたものがばらばらと当たり、相手はいらついている。モノビーストの【感情】が2点増加する。\n失敗 物を投げるのが楽しくなってしまい、狩りに出遅れる。夕暮れの追跡フェイズで行う判定にマイナス2の修正がつく。 -4:状況 ついに相手と対等になる夜だ、と意気揚々と外に出たあなたを、上空からの不意打ちが襲う。もちろん、ヤツはあなたを待ち構えていたのだ。\n指定特技 《かわす/胴部9》\n成功 待ち伏せくらいは予想のうちだ。【モラル】が2点増加する。\n失敗 まともに食らったが、アイテムのおかげで命拾いする。持っていれば【医療キット】を失う。 -5:状況 狭い所に閉じこもりきりで、これまで走り出したくてうずうずしていた脚に気合を入れる。今夜はどこまでも走っていけそうだ。\n指定特技 《走る/脚部3》\n成功 いい感じに体が軽い。このセッションの間、ロケーション変更判定にプラス2の修正がつく。\n失敗 いきなり脚をくじく。せめて準備運動はするべきだったかもしれない。【モラル】が4点減少する。 -6:状況 こんなこともあろうかと、あなたは秘密の出口を作っておいたのだ。予想もしない場所から出てくるあなたに、ヤツは恐れおののくに違いない。\n指定特技 《現れる/環境9》\n成功 かなり効果的に敵の虚をついた。モノビーストは次に得る追加行動を1回失う。\n失敗 秘密の出口はすでに破壊されていた……とぼとぼと戻る。【感情】が4点増加する。 diff --git a/src/assets/extratables/HuntersMoon_EE1ET.txt b/src/assets/extratables/HuntersMoon_EE1ET.txt deleted file mode 100644 index e554c6c3d..000000000 --- a/src/assets/extratables/HuntersMoon_EE1ET.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:エスケープ遭遇表1st -1:状況 あなたは見た。夜の街を闊歩し、気ままに人を食い散らかす怪物を。すぐ近くまで追っている危険を、大事な人に伝えなければならない。\n指定特技 《伝える/社会7》\n成功 最近疲れてるんじゃない?と返され絶望する。感情属性を「恐怖」に設定。\n失敗 病院に連れて行かれた。感情属性を「怒り」に設定。 -2:状況 夜道で角を曲がったら怪物がいた。しかもばっちり目が合った。不運を嘆く暇もなく、ヤツは襲い掛かってくる。速く逃げないと!\n指定特技 《反応/頭部5》\n成功 逃げられたが理不尽さに怒りがこみ上げる。感情属性を「怒り」に設定。\n失敗 頭を食いちぎられる寸前で危うくも逃げ出す。感情属性を「恐怖」に設定。 -3:状況 買い物帰り、夜道を並んで歩いていた友人の上半身がいきなり消えた。喰われたのだ。今すぐヤツに買い物袋を投げつけろ。\n指定特技 《投げる/腕部8》\n成功 無駄になった食材と友人のため、感情属性を「怒り」に設定。\n失敗 散らばった買い物に足をとられて転び、捕食シーンをまざまざと見せつけられる。感情属性を「恐怖」に設定。 -4:状況 音がする。床を踏みしめる音。固い何かが触れ合う音。吐く息、吸う息、唸り声、悲鳴。何も聞こえないふりをしなければ、これは本当にあることになってしまう。\n指定特技 《耐える/胴部12》\n成功 パニックを起こさずに冷静に検討した結果、逃げなければならないと結論が出る。 感情属性を「怒り」に設定。\n失敗 パニックに陥りやみくもに逃げ出す。感情属性を「恐怖」に設定。 -5:状況 この子を頼む、と叫んで幼児を放り投げたハンターは、目の前でモノビーストに食われて死んだ。ヤツは明らかにこの子を狙っているし、まずは受け止める必要がある。\n指定特技 《跳ぶ/脚部6》\n成功 うまくキャッチ!この子を抱えて武器を振り回すわけにはいかない、まずは逃げよう。感情属性を「怒り」に設定。\n失敗 落とした……かと思ったよ。いや危ない危ない。感情属性を「恐怖」に設定。 -6:状況 きつい一日だった。下を向いて歩いていたからだろう。すぐ横にモノビーストがいるのに気付かなかった。あまりに近すぎて動揺し、足がもつれる。\n指定特技 《バランス/環境8》\n成功 見えていることは気づかれていない……感情属性を「恐怖」に設定。\n失敗 モノビーストと接触し、一晩中追い回される。感情属性を「怒り」に設定。 diff --git a/src/assets/extratables/HuntersMoon_EE2ET.txt b/src/assets/extratables/HuntersMoon_EE2ET.txt deleted file mode 100644 index 5df7279ad..000000000 --- a/src/assets/extratables/HuntersMoon_EE2ET.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:エスケープ遭遇表2nd -1:状況 モノビーストから逃げるあなたの目の前に、パトロール中の警察官が!夜中に必死な顔で走っている理由をひねり出せ。\n指定特技 《騙す/社会11》\n成功 うまく言い抜けた。【モラル】が1点増加する。\n失敗 質問されているうちにモノビーストが追いつき、警察官を食い殺す。感情属性が反転する。 -2:状況 あの夜以来、毎晩モノビーストに追い回されている。完全に目をつけられたようだ。この状況から抜け出すために、あなたは眠い目を擦りながら昼間も考え続ける。\n指定特技 《考える/頭部8》\n成功 ヤツの能力について整理できた。このセッション中、弱点調査判定にプラス1の修正がつく。\n失敗 眠くて何も考えられない。感情属性を「恐怖」に設定。 -3:状況 車で街から逃走しようとしたところ、ひどい渋滞に引っかかって夜になり、案の定襲撃があって車をひっくり返された。武器になりそうなのは発炎筒だけだ……。\n指定特技 《撃つ/腕部6》\n成功 なんとか撃退成功。駆けつけたJAFの人から【医療キット】を入手できる。\n失敗 まるで効かない。車に積んであった装備を諦め、街に逃げ戻る。【感情】が2点増加する。 -4:状況 密閉した部屋に閉じこもり、隙間がないこと、ヤツが諦めてくれることを神に祈る。どんな神であれ、心から祈れば答えがあるかもしれない。\n指定特技 《心臓/胴部7》\n成功 徴が現れた!【勝利のお守り】を入手できる。\n失敗 何も起こらない。【感情】が2点増加する。 -5:状況 モノビーストには縄張りがある。まっすぐ歩き続ければ、いつかその外に出られるはずだ。\n指定特技 《歩く/脚部12》\n成功 行く先々で橋は落ち、停電は発生し、公共交通機関は止まっている。感情属性が反転する。\n失敗 いつのまにか迷子になってしまっている。「動転」の変調を発動する。 -6:状況 モノビーストから逃げ続けるなか、ヤツと戦う人間を見かける。あの人を追いかけられれば、協力できるかもしれない。\n指定特技 《追う/環境7》\n成功 任意の他のハンターと出会う。【モラル】が3点増加する。\n失敗 ダメだ、見失ってしまった。【感情】が2点増加する。 \ No newline at end of file diff --git a/src/assets/extratables/HuntersMoon_EE3ET.txt b/src/assets/extratables/HuntersMoon_EE3ET.txt deleted file mode 100644 index 922dd195e..000000000 --- a/src/assets/extratables/HuntersMoon_EE3ET.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:エスケープ遭遇表3rd -1:状況 考え付く限りのルートと手段を使って逃げ続けたあなたがたどりついた袋小路には、モノビーストが待っていた。もう何も考えず、必死に戦うしかないようだ。\n指定特技 《考えない/社会3》\n成功 思考停止成功!感情属性を好きに変更できる。\n失敗 別のハンターが倒してくれるかもしれないと考えて気後れする。夕暮れの戦闘フェイズでは自分が行う全ての攻撃判定にマイナス1の修正がつく。 -2:状況 いつまでも逃げ続けるわけにはいかない。体力的にも限界が近づいている。この状況を打開する方法を見つけなければならない。\n指定特技 《見つける/頭部4》\n成功 モノビーストを殺せば逃げなくてもよくなると発見。【モラル】が2点増加する。\n失敗 どうも戦うしかないようだ。感情属性が反転する。 -3:状況 逃げるあなたの巻き添えで、また人が殺される。こんなのはもうたくさんだ。逃げればそのうち何とかなるという考えを振り払わねばならない。\n指定特技 《振る/腕部11》\n成功 弱気な考えを振り切った。この決意にあたるものとして【興奮剤】を入手することができる。\n失敗 勝てる気がしない。【モラル】が2点減少する。 -4:状況 空を見上げれば満月が浮かんでいる。あなたの実力をもってすれば、今ならモノビーストと戦える。今こそ逃げるのを止めて戦う時なのだ。\n指定特技 《止める/胴部3》\n成功 【激情】を1点得る。ただしこのセッションで【感情】が30になっても【激情】を得られない。\n失敗 明らかに怯えた様子のあなたを見て、モノビーストの【モラル】が3点増加する。 -5:状況 走ってどこまでも逃げていく。順調にいけば振りきれただろうが、ぬかるみ、血、それに類する何かによってあなたの足は滑り、モノビーストに追いつかれてしまう。覚悟を決める時が来たようだ。\n指定特技 《滑る/脚部10》\n成功 速度を利用していい位置に。夕暮れの戦闘フェイズでは先制判定を振らず、成功にすることができる。\n失敗 滑り方がよくなかった。「妨害」の変調を発動する。 -6:状況 ハンターが集まり、モノビーストに戦いを挑んでいる。今なら難なく逃げ切れるはずだ……しかし、彼らを見捨てることなどできない。あなたは来た道を引き返していく。\n指定特技 《現れる/環境9》\n成功 突然現れた増援に、モノビーストの【モラル】が2点減少する。\n失敗 逃げる途中で落し物。ランダムにアイテムを1つ失う。 diff --git a/src/assets/extratables/HuntersMoon_ERT.txt b/src/assets/extratables/HuntersMoon_ERT.txt deleted file mode 100644 index 07105c880..000000000 --- a/src/assets/extratables/HuntersMoon_ERT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:代償表 -1:評判の失墜\n 次のセッションで登場するハンターキラーの合計レベルが1上昇します。\nこの代償を持つハンターがセッションに複数参加している場合、効果の累積はしません。 -2:闇夜の饗宴\n 次のセッションに登場するモノビーストのランクが1上昇します。\nこの代償を持つハンターがセッションに複数参加してる場合、効果の累積はしません。 -3:特技の忘却\n 習得した特技の中から1つを任意に選び、使用不能にします。\n次にモノビーストを殺したタイミングで、この特技は使用可能になります。\nこの代償を複数回得ることで特技が0個になったハンターは、判定および生活が不可能になって死亡します。最終判定すらできません。 -4:能力の不調\n 習得している汎用または武器アビリティの中から1つを任意に選び、使用不能にします。\n次にモノビーストを殺したタイミングで、このアビリティは使用可能になります。\nこの代償を複数回得ることでアビリティを全て失ったハンターは、戦闘不能となり引退します。 -5:自信の喪失\n 【モラル】基準値が1減少します。この減少は、次にモノビーストを殺したタイミングで元に戻ります。\nこの代償を複数回得ることで【モラル】基準値がマイナスになったハンターは、気力を完全に失い引退します。 -6:引退の決意\n 異形アビリティを全て失います。この代償で失った異形アビリティを回復することはできません。\nこの代償を続けて2回得た段階でハンターはモノビーストとの接触を失い、視認できなくなります。つまり強制的に引退です。 \ No newline at end of file diff --git a/src/assets/extratables/HuntersMoon_ET1ET.txt b/src/assets/extratables/HuntersMoon_ET1ET.txt deleted file mode 100644 index 006431e62..000000000 --- a/src/assets/extratables/HuntersMoon_ET1ET.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:エスコート遭遇表1st -1:状況 追われる彼/彼女があなたの前に現れたのは満月の夜。獲物に集中しているモノビーストを攻撃するのは容易いことだったが……。\n指定特技 《怯える/社会2》\n成功 今戦えば彼/彼女は死ぬと思いとどまって一緒に逃げる。感情属性を「恐怖」に設定。\n失敗 モノビーストを倒しきれず、彼/彼女は一生残る傷を負う。感情属性を「怒り」に設定。 -2:状況 彼/彼女は、窓を破りながらあなたの家に飛び込んできた。モノビーストは見えているようだが、あなたの渋い顔は見えていないようだ。\n指定特技 《反応/頭部5》\n成功 とっさに反応し、モノビーストを攻撃して追い払う。感情属性を「怒り」に設定。\n失敗 あまりの唐突さに襲い来るモノビーストへの対応が遅れ、部屋を放棄して逃げることになる。感情属性を「恐怖」に設定。 -3:状況 夜、あなたの隣を歩いている彼/彼女が不意打ちを受ける。どうやら獲物として選ばれたようだが、腕を引いて助けることはできるだろうか?\n指定特技 《利き腕/腕部5》\n成功 紙一重で攻撃を避けさせることに成功。感情属性を「恐怖」に設定。\n失敗 かばう形になり手傷を負う。感情属性を「怒り」に設定。 -4:状況 彼/彼女はどう見てもハンターとしては無能だが、あるモノビーストを倒す必要があるのだという。助力を頼まれたあなたは……。\n指定特技 《止める/頭部4》\n成功 その場の勢いで代わりに戦うことになってしまった。感情属性を「恐怖」に設定。\n失敗 説得するが失敗。彼/彼女は一人で夜の街へ飛び出す。感情属性を「怒り」に設定。 -5:状況 彼/彼女は子供で、子供を餌として好む怪物に追われていて、助けてやれる人はあなたしかいない。安心させるために目の高さを合わせてみよう。\n指定特技 《しゃがむ/脚部8》\n成功 彼/彼女はよくあなたに懐き、それを狙うモノビーストへの感情属性は「怒り」になる。\n失敗 全然ダメ。護衛を放り出すわけにもいかないが先行き不安だ。感情属性を「恐怖」に設定。 -6:状況 あなたはモノビーストの標的となった彼/彼女を数カ月にわたって守り続けている。逃避行のなか、気が休まるのは日が高いうちだけだ。\n指定特技 《休む/環境3》\n成功 よく休み気力は充分だ。今度の満月の夜に、この逃避行を終わらせる。感情属性を「怒り」に設定。 \n失敗 ちょっとした暗がりにヤツが潜んでいる気がしてならない。まるで休めず、感情属性を「恐怖」に設定。 diff --git a/src/assets/extratables/HuntersMoon_ET2ET.txt b/src/assets/extratables/HuntersMoon_ET2ET.txt deleted file mode 100644 index 853092dba..000000000 --- a/src/assets/extratables/HuntersMoon_ET2ET.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:エスコート遭遇表2nd -1:状況 彼/彼女は怪物に狙われる日々に憔悴している。モノビーストは狙いを変えたとか、もう死んだとか、元気付けるようなことを言わなくては。\n指定特技 《騙す/社会11》\n成功 一時しのぎの嘘だが元気な笑顔が見られる。【勝利のお守り】として記憶に刻んでおいてもよい。\n失敗 あなたの下手な嘘は彼/彼女を「動転」させる。あなたも影響を受けて同じ変調を発動する。 -2:状況 彼/彼女は執拗に狙われる理由を知りたがっている。考えてみよう。もしかしたら、戦わずにすむかもしれない。\n指定特技 《考える/頭部8》\n成功 モノビーストは彼/彼女と似たタイプの人間を殺してきているようだ。このセッション中、習性調査判定にプラス1の修正がつく。\n失敗 全然分からない。【感情】が2点増加する。 -3:状況 彼/彼女はあなたの献身的な姿に罪悪感を覚え、人知れず姿を消し、モノビーストに殺されることであなたの苦労を終わらせようとする。\n指定特技 《掴む/腕部7》\n成功 間一髪のところで掴まえた。感情属性を反転させる。\n失敗 あなたの手は届かない。行方不明になった彼/彼女を探すことで疲労困憊したあなたは「妨害」の変調を発動する。 -4:状況 何日も二人で過ごすうち、あなたの彼/彼女の間には愛情のようなものが芽生え始める。この気持ちは果たして本物だろうか?\n指定特技 《落ちる/胴部10》\n成功 真実の愛を発見したあなたの【モラル】は6点上昇する。\n失敗 ハンターに愛はいらない。感情属性を任意に変更できる。 -5:状況 不意をうたれた。モノビーストの襲撃から逃れるためには、彼/彼女を抱えて跳ぶしかない\n指定特技 《跳ぶ/脚部6》\n成功 危ういジャンプだったが何とかなった。【モラル】が2点増加する。\n失敗 彼/彼女を放り出し怒られる。釈然とせず【感情】が2点増加する。 -6:状況 あなたは眠らない。彼/彼女をモノビーストの牙にかけるわけにはいかないのだ。しかし、これをいつまで続けることができるのか?\n指定特技 《休まない/環境11》\n成功 疲労が溜まっていく……あなたは「重傷」の変調を発動する。\n失敗 いつのまにか眠ってしまっていたあなたに毛布がかけられている。幸い襲撃はなかったようだ。【モラル】が2点増加する。 diff --git a/src/assets/extratables/HuntersMoon_ET3ET.txt b/src/assets/extratables/HuntersMoon_ET3ET.txt deleted file mode 100644 index 030b5d25f..000000000 --- a/src/assets/extratables/HuntersMoon_ET3ET.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:エスコート遭遇表3rd -1:状況 もうすぐ満月が昇る。あなたと彼/彼女は、モノビーストを倒した後に何をするか話しあう。希望の持てる未来のヴィジョンを作れただろうか?\n指定特技 《作る/社会8》\n成功 待ち受ける未来に対して任意に感情属性を変更することができる。\n失敗 特にすることがないような……やけになって【感情】が2点増加する。 -2:状況 あと数日で満月だというのに、彼/彼女はモノビーストに重傷を負わされ、死ぬ。あなたは微かな声で囁かれる最後の言葉を聞き取ろうとする。\n指定特技 《聴く/頭部2》\n成功 【モラル】が6点増加する。\n失敗 意味のある言葉は何も聴きとれない。失意に沈んだあなたはランダムな頭部カテゴリの特技1つが使用不可能になる。 -3:状況 やっと分かった。彼/彼女が肌身離さず持っていたアイテムが狙われる原因だったのだ。あなたは彼/彼女に、そのアイテムをこちらに投げ渡すように頼む。\n指定特技 《投げる/腕部8》\n成功 うまく投げてもらう。【幸運のお守り】を入手できる。\n失敗 あなたはアイテムを取り落とし、微妙な空気がただよう。【感情】が2点増加する。 -4:状況 あなたは夜の街を、彼/彼女の手を引いて駆け抜ける。もう少しで安全な場所につく。そうすれば、あなただけが戻って戦うことができる。\n指定特技 《心臓/胴部7》\n成功 これで彼/彼女の身は安全だ。このセッション中、あなたの【モラル】基準値は1点増加する。\n失敗 息切れ、および時間切れ。狩りの時間だ。ただしあなたの【モラル】は3点減少している。 -5:状況 満月を見上げながら、二人でこれまで踏みしめてきた道を振り返る。背後にモノビーストがいることは分かっている。しかし、もはや二人とも恐れはない……だろうか?\n指定特技 《踏む/脚部11》\n成功 彼/彼女は狩りの間あなたについていき、一度だけ【医療キット】に相当する応援をしてくれる。\n失敗 いつのまにか彼/彼女が逃げ出していることに気付く。「動転」の変調を発動する。 -6:状況 逃避行がクライマックスに近づくにつれ、二人の間の緊張感は耐え難いほどに高まる。このままでは恋に落ちてしまいそうだが、どうしたものだろうか。\n指定特技 《耐熱/環境2》\n成功 胸の熱い気持ちを押さえ込む。感情属性を任意に変更できる。\n失敗 彼/彼女のために頑張ろう。このセッション中、練習判定にプラス1の修正がつく。 diff --git a/src/assets/extratables/HuntersMoon_MST.txt b/src/assets/extratables/HuntersMoon_MST.txt deleted file mode 100644 index 05ff371ee..000000000 --- a/src/assets/extratables/HuntersMoon_MST.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:異形化表 -1:【感情】が2増加する。 -2:【感情】が4増加する。 -3:【感情】が6増加する。 -4:【感情】が6増加する。部位ダメージを受ける。 -5:【感情】が6増加する。異形アビリティをランダムに1つ失う。\n異形アビリティが1つもなければ部位ダメージを受ける。 -6:【感情】が6増加する。部位ダメージを2回受ける。 \ No newline at end of file diff --git a/src/assets/extratables/HuntersMoon_TK1ET.txt b/src/assets/extratables/HuntersMoon_TK1ET.txt deleted file mode 100644 index a590b3653..000000000 --- a/src/assets/extratables/HuntersMoon_TK1ET.txt +++ /dev/null @@ -1,9 +0,0 @@ -1d6:トラッキング遭遇表1st -1:状況 あなたは隠れ場所に潜みながらモノビーストが獲物…あなたの大切な誰かを貪るのを見ている。満月の夜は遠く、まだ奴を仕留める事は出来ない。\n指定特技 《黙る/社会5》\n成功 押さえ込んだ怒りが膨れ上がる。感情属性を「怒り」に設定。 \n失敗 思わず声を上げてしまい、無敵のモノビーストに手酷い傷を負わされる。感情属性を「恐怖」に設定。 -2:状況 すばらしい味だった。前の満月の晩に捕り逃した奴の血は、まさに超常的な美味。あの味を空気の中にまで感じ取ることができるようだ。\n指定特技 《口/頭部11》 \n成功 神々しい味を完璧にイメージできた。感情属性を「恐怖」に設定。\n失敗 待ちきれなくて口の中を噛む。感情属性を「怒り」に設定。 -3:状況 夜、屋根の上。あなたはモノビーストが人家に忍び込まないよう牽制している。屋根はもともと走りまわるようにはできていないのだが。\n指定特技 《掴む/腕部7》\n成功 屋根の縁を掴んで落下を免れる。感情属性を「怒り」に設定。\n失敗 屋根から落ちてひどい目にあう。感情属性を「恐怖」に設定。 -4:状況 数カ月ぶりに獲物が現れたというのに、友人が満月の夜に予定を入れようとしてくる。合コンの人数が足りないらしいのだが、そんなの知るか。\n指定特技 《逸らす/胴部8》\n成功 うまく言い逃れたが苛々する。待ちきれなくて口の中を噛む。感情属性を「怒り」に設定。\n失敗 狩りのあとで顔を出す約束をしてしまう。普通の日常感覚という奴が蘇り、感情属性を「恐怖」に設定。 -5:状況 見間違えようもないモノビーストの足跡をたどり、あなたはこの街まで来た。問題はその足跡が鍵のかかったドアの向こうに続いていることだ。うまく蹴り開けられるだろうか?\n指定特技 《蹴る/脚部4》\n成功 ドアは開き、あなたはその向こうにあるものを見た。感情属性を「恐怖」に設定。\n失敗 足がドアを突き抜けたが開かない。脱出は手間だった。感情属性を「怒り」に設定。 -6:状況 悪天候のなか、あなたはモノビーストの出現を待ち続ける。奴を狩るために、色々なものを犠牲にしてきたのだ。しかし……天気が悪い。\n指定特技 《待つ/環境4》\n成功 奴はまだ現れない。天気に呼応するかのようにあなたの気分も暗くなる。感情属性を「恐怖」に設定。\n失敗 耐えきれずその場を去る。こんな思いをするのも全部ヤツのせいだ。感情属性を「怒り」に設定。 - - diff --git a/src/assets/extratables/HuntersMoon_TK2ET.txt b/src/assets/extratables/HuntersMoon_TK2ET.txt deleted file mode 100644 index d0dd06249..000000000 --- a/src/assets/extratables/HuntersMoon_TK2ET.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:トラッキング遭遇表2nd -1:状況 あなたはモノビーストの眼前に立ちふさがり、相手になってやると宣言する。言葉が通じなくとも、喧嘩を売ったことは伝わるはずだ。\n指定特技 《売る/社会6》\n成功 このセッション中、【基本攻撃】の攻撃判定にプラス1の修正が付く。\n失敗 まるで相手にされない。【感情】が2点増加する。 -2:状況 あなたは病院で目を覚ます。記憶がはっきりしない。どうやら不覚をとったらしく、裏路地で頭を強打して倒れていたようだ。\n指定特技 《脳/頭部7》\n成功 おぼろげに狩りの理由を思い出してきたような気がする。感情属性が反転する。\n失敗 ランダムにアイテムを1つ失う。無くしたことすら気づかない。 -3:状況 夜ごとにモノビーストを追いかける生活が続く中、あなたの腕がうずく。思う存分にふるわれる時が間もないことに気づいているのだろうか。\n指定特技 《逆腕/腕部9》\n成功 このセッション中、練習判定にプラス1の修正がつく。 \n失敗 よく調べたら腕が折れていた。【モラル】が2点減少する。 -4:状況 ヤツの捕食をまめに妨害することで、夜の行動範囲を狭めていく。もうすぐ、満月の夜には追い詰めることができるだろう。\n指定特技 《塞ぐ/胴部2》\n成功 その後のことに想いを馳せる。感情属性を好きに変更できる。\n失敗 追い詰める過程で手傷を負う。「重傷」の変調を発動する。 -5:状況 ヤツを見つけてからいくつの夜が過ぎ去っただろう。モノビーストの足取りを追って移動を続けるあなたの体力は限界を迎えようとしていた。\n指定特技 《逆脚/脚部9》\n成功 いや、まだいける。【モラル】を2点増加させる。\n失敗 もう足が動かない。【モラル】を2点減少する。 -6:状況 モノビーストのねぐらを発見した。問題は人間の匂いに気づいてあたりを嗅ぎ回るヤツからどうやって隠れ、戻るかだ。\n指定特技 《隠れる/環境6》\n成功 じっくりモノビーストを観察する機会を得る。このセッション中、習性調査判定にプラス1の修正がつく。\n失敗 あなたを見つけたモノビーストはこのねぐらを放棄した。感情属性が反転する。 diff --git a/src/assets/extratables/HuntersMoon_TK3ET.txt b/src/assets/extratables/HuntersMoon_TK3ET.txt deleted file mode 100644 index 10d967da4..000000000 --- a/src/assets/extratables/HuntersMoon_TK3ET.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:トラッキング遭遇表3rd -1:状況 舞台は整った。やつを追い詰めながら作り上げてきた包囲網は、確実にヤツをあの場所に追い詰めている。急ぐ必要はない。ゆっくりと行こう。\n指定特技 《作る/社会8》\n成功 準備に時間をかけたので、アイテムを一つ入手できる。\n失敗 ゆっくりした結果、モノビーストは何人か犠牲者を増やし、【モラル】を3点増加させている。 -2:状況 煌々と輝く月の下、行くべき場所はすでに分かっていた。武器が、体が、夜に満ちる死の予感に震える。決戦の時が来たのだ。\n指定特技 《予感/頭部9》\n成功 日暮れの戦闘フェイズの間、自分が行う全ての攻撃のダメージにプラス1の修正がつく。\n失敗 あれ、いない?あてがはずれた結果、日暮れの追跡フェイズの判定すべてにマイナス2の修正がつく。 -3:状況 ついにモノビーストに追いつき、憎しみを込めて殴りつける。この夜の間だけは対等だ。痛みと自分の血の味を知るがいい!\n指定特技 《殴る/腕部3》\n成功 命中!モノビーストの【モラル】を2点減少させる。\n失敗 効いた様子がない。【感情】が2点増加する。 -4:状況 ついに追いつめたモノビーストが威嚇とともに襲いかかってくるが、あなたは慌てずにその攻撃を受け止める。驚いた顔のまま死ぬ人間ばかりではないことを教えてやろう。\n指定特技 《受ける/腕部6》\n成功 攻撃を受けてみた結果、感情属性を好きに変更できる。\n失敗 攻撃を受けたときに、「流血」の変調を発動する。 -5:状況 ヤツは満月の持つ意味を知っていた。だが、必死に逃げようとするモノビーストにも知らないことはあった。あなたはヤツより速いのだ。\n指定特技 《迫る/脚部2》\n成功 ヤツは動揺している。モノビーストの【感情】が2点増加する。\n失敗 速いはずだがなぜか追いつけない。日暮れの戦闘フェイズの先制判定を行わず、必ず後攻になる。 -6:状況 モノビーストの出現ポイントにあたりをつけ、あなたは狩りの前に休息をとる。あの獣を自分の手で殺すため、今は力をたくわえよう。\n指定特技 《休む/環境3》\n成功 英気を養った。【モラル】が2点増加する。\n失敗 じっとしているうちに不安になってきた。感情属性が反転する。 diff --git a/src/assets/extratables/Kamigakari_ET.txt b/src/assets/extratables/Kamigakari_ET.txt deleted file mode 100644 index 217fd59dc..000000000 --- a/src/assets/extratables/Kamigakari_ET.txt +++ /dev/null @@ -1,37 +0,0 @@ -d66:感情表 -11:運命/そのキャラクターに、運命的、あるいは宿命的なものを感じている。 -12:運命/そのキャラクターに、運命的、あるいは宿命的なものを感じている。 -13:家族/そのキャラクターに、家族のような親近感をいだいている。 -14:家族/そのキャラクターに、家族のような親近感をいだいている。 -15:腐れ縁/そのキャラクターに、腐れ縁を感じている。 -16:腐れ縁/そのキャラクターに、腐れ縁を感じている。 -21:師弟/そのキャラクターとは、まるで師弟のような関係だと感じている。どちらが弟子で、どちらが師匠かは相談して決定する。 -22:師弟/そのキャラクターとは、まるで師弟のような関係だと感じている。どちらが弟子で、どちらが師匠かは相談して決定する。 -23:好敵手/そのキャラクターを、好敵手だと感じている。 -24:好敵手/そのキャラクターを、好敵手だと感じている。 -25:親近感/そのキャラクターに、親近感をいだいている。 -26:親近感/そのキャラクターに、親近感をいだいている。 -31:誠意/そのキャラクターに、誠実さを感じている。 -32:誠意/そのキャラクターに、誠実さを感じている。 -33:友情/そのキャラクターに、友情をいだいている。 -34:友情/そのキャラクターに、友情をいだいている。 -35:尊敬/そのキャラクターに、尊敬をいだいている。 -36:尊敬/そのキャラクターに、尊敬をいだいている。 -41:庇護/そのキャラクターに、庇護の感情をいだいている。どちらが保護者で、どちらが被保護者かは相談して決定する。 -42:庇護/そのキャラクターに、庇護の感情をいだいている。どちらが保護者で、どちらが被保護者かは相談して決定する。 -43:好感/そのキャラクターに、好感をいだいている。 -44:好感/そのキャラクターに、好感をいだいている。 -45:興味/そのキャラクターに、興味をいだいている。 -46:興味/そのキャラクターに、興味をいだいている。 -51:感銘/そのキャラクターに、感銘をいだいている。 -52:感銘/そのキャラクターに、感銘をいだいている。 -53:畏怖/そのキャラクターに、畏怖をいだいている。 -54:畏怖/そのキャラクターに、畏怖をいだいている。 -55:お気に入り/そのキャラクターを、気に入っている。 -56:お気に入り/そのキャラクターを、気に入っている。 -61:愛情/そのキャラクターに愛情、またはそれに近い執着心をいだいている。 -62:愛情/そのキャラクターに愛情、またはそれに近い執着心をいだいている。 -63:信頼/そのキャラクターに、信頼を感じている。 -64:信頼/そのキャラクターに、信頼を感じている。 -65:*PCの任意/プレイヤー、またはGMが設定した任意の感情をいだいている。 -66:*PCの任意/プレイヤー、またはGMが設定した任意の感情をいだいている。 diff --git a/src/assets/extratables/Kamigakari_KT.txt b/src/assets/extratables/Kamigakari_KT.txt deleted file mode 100644 index 9e0e0137f..000000000 --- a/src/assets/extratables/Kamigakari_KT.txt +++ /dev/null @@ -1,37 +0,0 @@ -d66:魔境臨界表 -11:時空の捻じれ\n現在地の時空が捻じれ、PC全員は即時に[侵入エリア]へと戻る。 -12:時空の捻じれ\n現在地の時空が捻じれ、PC全員は即時に[侵入エリア]へと戻る。 -13:強敵登場\n突如、<崇り神>化した[モノノケ]が出撃する。GMは、PCの[世界干渉LV]の平均+3の[LV]を持つ任意の[モノノケ]を1体選び任意の[探索エリア]に配置。そこでは[迂回]不可で[戦闘]が発生する。 -14:強敵登場\n突如、<崇り神>化した[モノノケ]が出撃する。GMは、PCの[世界干渉LV]の平均+3の[LV]を持つ任意の[モノノケ]を1体選び任意の[探索エリア]に配置。そこでは[迂回]不可で[戦闘]が発生する。 -15:影の手\n瘴気で形成された無数の手がPC達を握りつぶそうとする。PC全員は[効果種別:魔法攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:20+PCの[世界干渉LV]の平均/魔法ダメージ:20×PCの[世界干渉LV]の平均/抵抗[半減]]を受ける。 -16:影の手\n瘴気で形成された無数の手がPC達を握りつぶそうとする。PC全員は[効果種別:魔法攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:20+PCの[世界干渉LV]の平均/魔法ダメージ:20×PCの[世界干渉LV]の平均/抵抗[半減]]を受ける。 -21:無数の邪眼\n空間全体に恐ろしい邪眼が出現する。PC全員は、[大休止]するまで[状態変化:暗闇・苦痛]となる。 -22:無数の邪眼\n空間全体に恐ろしい邪眼が出現する。PC全員は、[大休止]するまで[状態変化:暗闇・苦痛]となる。 -23:空間崩壊\n突如として、魔境の空間が崩壊する。PC全員は[効果種別:物理攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:30+PCの[世界干渉LV]の平均/物理ダメージ:30×PCの[世界干渉LV]の平均]]を受ける。 -24:空間崩壊\n突如として、魔境の空間が崩壊する。PC全員は[効果種別:物理攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:30+PCの[世界干渉LV]の平均/物理ダメージ:30×PCの[世界干渉LV]の平均]]を受ける。 -25:防具腐食\n周辺から異様な霧が立ち込め、防具を腐食する。PC全員は、[所持・装備]中の任意の[アイテム:防具]1つを失う。 -26:防具腐食\n周辺から異様な霧が立ち込め、防具を腐食する。PC全員は、[所持・装備]中の任意の[アイテム:防具]1つを失う。 -31:素材消失\n周囲から異様な光が零れ、所持中の[素材]を消失させる。PC全員が[所持]中の[素材]が、すべて消滅する。 -32:素材消失\n周囲から異様な光が零れ、所持中の[素材]を消失させる。PC全員が[所持]中の[素材]が、すべて消滅する。 -33:なし\n特に何も起こらない。 -34:なし\n特に何も起こらない。 -35:モノノケ強襲\n突如として<崇り神>化した[モノノケ]が出現し、PCたちに襲いかかる。GMはPCの[世界干渉LV]の平均+2の[LV]を持つ任意の[モノノケ]を2体選び、PC達の前に出現させ、即座に[戦闘]を開始する。 -36:モノノケ強襲\n突如として<崇り神>化した[モノノケ]が出現し、PCたちに襲いかかる。GMはPCの[世界干渉LV]の平均+2の[LV]を持つ任意の[モノノケ]を2体選び、PC達の前に出現させ、即座に[戦闘]を開始する。 -41:休息妨害\nPCが休息しようとするたびに、さまざまな空間から、触手や毒蠱などが出現して襲いかかってくる。PCたちは以降、[魔境討伐]が終了するまで[大休止]を行えない。 -42:休息妨害\nPCが休息しようとするたびに、さまざまな空間から、触手や毒蠱などが出現して襲いかかってくる。PCたちは以降、[魔境討伐]が終了するまで[大休止]を行えない。 -43:龍脈破壊\n霊力が暴走して空間が歪み、[霊力]が狂う。PC全員は即座に[霊力]をすべて振り直す。 -44:龍脈破壊\n霊力が暴走して空間が歪み、[霊力]が狂う。PC全員は即座に[霊力]をすべて振り直す。 -45:固有時間停止\nPCたちの肉体の一部が灰色と化し、動かなくなる。PC全員は[タイミング:準備・防御・特殊]から1つ選び、以後その[タイミング]を消費できなくなる。 -46:固有時間停止\nPCたちの肉体の一部が灰色と化し、動かなくなる。PC全員は[タイミング:準備・防御・特殊]から1つ選び、以後その[タイミング]を消費できなくなる。 -51:龍脈不順\n霊力が突如として混濁し、[霊力]の循環に悪影響が発生する。PC全員は以後、[魔境討伐]が終了するまで[霊力操作]が行えない。 -52:龍脈不順\n霊力が突如として混濁し、[霊力]の循環に悪影響が発生する。PC全員は以後、[魔境討伐]が終了するまで[霊力操作]が行えない。 -53:術技封印\n周囲の空気が変貌し、悪影響が起こる。PC全員は以後、修得済みの《タレント》中、使用する[コスト]が最も多いもの1つが[魔境討伐]終了まで使用不能となる。[コスト:なし]ばかりの場合、GMが任意で1つを決定する。 -54:術技封印\n周囲の空気が変貌し、悪影響が起こる。PC全員は以後、修得済みの《タレント》中、使用する[コスト]が最も多いもの1つが[魔境討伐]終了まで使用不能となる。[コスト:なし]ばかりの場合、GMが任意で1つを決定する。 -55:装飾品消滅\n周囲が青い光に包まれると、なぜかPCたちの装飾品が失われている。PC全員は[所持・装備中]の[アイテム・装飾]をすべて失う。 -56:装飾品消滅\n周囲が青い光に包まれると、なぜかPCたちの装飾品が失われている。PC全員は[所持・装備中]の[アイテム・装飾]をすべて失う。 -61:愚者の黄金消失\n周囲が赤い光に包まれると、なぜかPCたちの[G]が失われている。PC全員は、[所持金]が[半減]する。 -62:愚者の黄金消失\n周囲が赤い光に包まれると、なぜかPCたちの[G]が失われている。PC全員は、[所持金]が[半減]する。 -63:GMの任意\nこの表のなかから、GMが効果を1つ選んで発生させる。 -64:GMの任意\nこの表のなかから、GMが効果を1つ選んで発生させる。 -65:臨界重複\n[魔境臨界]が2回発生する。GMはこの表を2回振り、効果をそれぞれ適応できる。再び「臨界重複」が発生した場合、[GMの任意]1回として扱う。 -66:臨界重複\n[魔境臨界]が2回発生する。GMはこの表を2回振り、効果をそれぞれ適応できる。再び「臨界重複」が発生した場合、[GMの任意]1回として扱う。 diff --git a/src/assets/extratables/Kamigakari_NT.txt b/src/assets/extratables/Kamigakari_NT.txt deleted file mode 100644 index d3b5c6fe1..000000000 --- a/src/assets/extratables/Kamigakari_NT.txt +++ /dev/null @@ -1,37 +0,0 @@ -d66:伝奇名字・名前決定表 -11:御剣(みつるぎ) 陸/凛 -12:獅子内(ししうち) 大和/楓 -13:白銀(はくぎん) 隼人/桜 -14:竹内(たけのうち) 真/遥 -15:古太刀(こだち) 大地/美咲 -16:空閑(くが) 俊/真央 -21:鬼形(おにがた) 諒/舞 -22:御巫(みかんなぎ) 匠/七海 -23:護摩堂(ごまどう) 仁/千尋 -24:龍円(りゅうえん) 拓真/茜 -25:鏡部(かがみべ) 京/明日香 -26:犬神(いぬがみ) 剛/栞 -31:明月院(めいげついん) 葵/唯 -32:百目鬼(どうめき) 蓮也/萌 -33:恐神(おそがみ) 達也/綾香 -34:蘭(あららぎ) 龍之介/梓 -35:珠輝(たまき) 章/瞳 -36:眼龍(がんりゅう) 圭/沙織 -41:鉄砲塚(てっぽうづか) 雅人/沙良 -42:檻神(おりがみ) 直哉/弥生 -43:不死原(ふじわら) 純/千秋 -44:九郎座(くろうざ) 武蔵/春菜 -45:土御門(つちみかど) 亮介/翠 -46:十六夜(いざよい) 啓二/双葉 -51:転法輪(てんぽうりん) 英雄/麗菜 -52:執行(しぎょう) 響/小百合 -53:祝(ほうり) 良太郎/陽奈 -54:神尊(こうそ) 智/紫苑 -55:芦屋(あしや) 孝之/香澄 -56:七社(ななしゃ) 克己/風香 -61:騎馬(きば) 哲也/詩乃 -62:当麻(とうま) 玄/沙耶 -63:狐塚(きつねづか) 北斗/麻耶 -64:天神林(てんじんばやし) 空/晶 -65:明嵐(めあらし) 八雲/乙葉 -66:草壁(くさかべ) 大悟/文 diff --git a/src/assets/extratables/KanColle_BT10.txt b/src/assets/extratables/KanColle_BT10.txt deleted file mode 100644 index a7b80d7a0..000000000 --- a/src/assets/extratables/KanColle_BT10.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:指定個性⑩ -1:1-10 《お嬢様》 -2:2-10 《面白い》 -3:3-10 《いじわる》 -4:4-10 《おしゃれ》 -5:5-10 《指揮》 -6:6-10 《魚雷》 diff --git a/src/assets/extratables/KanColle_BT11.txt b/src/assets/extratables/KanColle_BT11.txt deleted file mode 100644 index 16a5752bd..000000000 --- a/src/assets/extratables/KanColle_BT11.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:指定個性⑪ -1:1-11 《スタイル》 -2:2-11 《えっち》 -3:3-11 《自由奔放》 -4:4-11 《入浴》 -5:5-11 《衛生》 -6:6-11 《対潜戦闘》 diff --git a/src/assets/extratables/KanColle_BT12.txt b/src/assets/extratables/KanColle_BT12.txt deleted file mode 100644 index 7bcd68c72..000000000 --- a/src/assets/extratables/KanColle_BT12.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:指定個性⑫ -1:1-12 《外国暮らし》 -2:2-12 《派手》 -3:3-12 《大胆》 -4:4-12 《恋愛》 -5:5-12 《整備》 -6:6-12 《夜戦》 diff --git a/src/assets/extratables/KanColle_BT2.txt b/src/assets/extratables/KanColle_BT2.txt deleted file mode 100644 index b6181b7f6..000000000 --- a/src/assets/extratables/KanColle_BT2.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:指定個性② -1:1-2 《人脈》 -2:2-2 《素直》 -3:3-2 《不思議》 -4:4-2 《寝る》 -5:5-2 《暗号》 -6:6-2 《電子戦》 \ No newline at end of file diff --git a/src/assets/extratables/KanColle_BT3.txt b/src/assets/extratables/KanColle_BT3.txt deleted file mode 100644 index 5eeae97ef..000000000 --- a/src/assets/extratables/KanColle_BT3.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:指定個性③ -1:1-3 《名声》 -2:2-3 《クール》 -3:3-3 《おおらか》 -4:4-3 《空想》 -5:5-3 《通信》 -6:6-3 《航空打撃戦》 \ No newline at end of file diff --git a/src/assets/extratables/KanColle_BT4.txt b/src/assets/extratables/KanColle_BT4.txt deleted file mode 100644 index 40b43787f..000000000 --- a/src/assets/extratables/KanColle_BT4.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:指定個性④ -1:1-4 《暗い過去》 -2:2-4 《優しい》 -3:3-4 《面倒見》 -4:4-4 《生き物》 -5:5-4 《索敵》 -6:6-4 《航空戦》 \ No newline at end of file diff --git a/src/assets/extratables/KanColle_BT5.txt b/src/assets/extratables/KanColle_BT5.txt deleted file mode 100644 index 9fcaf6e3f..000000000 --- a/src/assets/extratables/KanColle_BT5.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:指定個性⑤ -1:1-5 《古風》 -2:2-5 《おしとやか》 -3:3-5 《マジメ》 -4:4-5 《読書》 -5:5-5 《規律》 -6:6-5 《対空戦闘》 \ No newline at end of file diff --git a/src/assets/extratables/KanColle_BT6.txt b/src/assets/extratables/KanColle_BT6.txt deleted file mode 100644 index f15b008b9..000000000 --- a/src/assets/extratables/KanColle_BT6.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:指定個性⑥ -1:1-6 《口ぐせ》 -2:2-6 《けなげ》 -3:3-6 《負けず嫌い》 -4:4-6 《食べ物》 -5:5-6 《補給》 -6:6-6 《突撃》 \ No newline at end of file diff --git a/src/assets/extratables/KanColle_BT7.txt b/src/assets/extratables/KanColle_BT7.txt deleted file mode 100644 index 7e74bc6f7..000000000 --- a/src/assets/extratables/KanColle_BT7.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:指定個性⑦ -1:1-7 《幸運》 -2:2-7 《笑顔》 -3:3-7 《元気》 -4:4-7 《おしゃべり》 -5:5-7 《待機》 -6:6-7 《砲撃》 \ No newline at end of file diff --git a/src/assets/extratables/KanColle_BT8.txt b/src/assets/extratables/KanColle_BT8.txt deleted file mode 100644 index 5ddd49051..000000000 --- a/src/assets/extratables/KanColle_BT8.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:指定個性⑧ -1:1-8 《アイドル》 -2:2-8 《ばか》 -3:3-8 《楽観的》 -4:4-8 《買い物》 -5:5-8 《機動》 -6:6-8 《退却》 \ No newline at end of file diff --git a/src/assets/extratables/KanColle_BT9.txt b/src/assets/extratables/KanColle_BT9.txt deleted file mode 100644 index d2e0b58ac..000000000 --- a/src/assets/extratables/KanColle_BT9.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:指定個性⑨ -1:1-9 《秘密兵器》 -2:2-9 《さわやか》 -3:3-9 《丁寧》 -4:4-9 《芸能》 -5:5-9 《海図》 -6:6-9 《支援》 \ No newline at end of file diff --git a/src/assets/extratables/KanColle_ETIT.txt b/src/assets/extratables/KanColle_ETIT.txt deleted file mode 100644 index 345925d1b..000000000 --- a/src/assets/extratables/KanColle_ETIT.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:侵攻効果表 -2:援軍\n深海棲艦は徐々に力をつけ、大艦隊へとせいちょうしつつある。決戦フェイズの深海棲艦側の艦隊に、駆逐ハ級(『着任ノ書p258』)が一人追加される。 -3:海域汚染\n特定の海域が深海棲艦の住みやすい環境になる。このセッションの艦隊戦のの各ラウンドの開始時に、深海棲艦の艦隊は誰か一人だけ【行動力】を1D6点減少できるようになる。【行動力】を消費すると、その戦場を好きなものに変更できる。 -4:略奪\n大勢の物資や人々を奪い、連れ去られる。鎮守府の資材がすべて1D6個失われる。 -5:象徴破壊\n人類に歴史的建造物や貴重な遺産、世界的な観光名所が破壊される。PC全員は【行動力】を1D6点減少する。 -6:襲撃\n深海棲艦の侵攻によって、鎮守府の周辺に住む人たちに大きな被害が出る。PC全員は暴走判定を行うこと。 -7:通商破壊\n深海棲艦の侵攻によって、通商ルートが破壊される。そのセッションの間、資材を獲得する効果が発生したとき、その資材の数がいずれも一つずつ減少する。 -8:謎のキリ\n謎の霧が海域を覆う。このセッションの艦隊戦中、深海棲艦はランドの開始時に、【行動力】を1D6点消費できるようになる。そのラウンドの間、消費した【行動力】の半分の値(切り捨て。0〜3点の値になる)だけ、深海棲艦全員は、艦隊戦で受けるダメージが軽減できる。この効果は累積するが、この効果で軽減できるダメージの上限は3点である。 -9:陸地浸食\n陸地を浸食し、海に変える。この事態に鎮守府への非難が高まる。そのセッションの間、PC全員はあらゆる判定にマイナス1の修正がつく。この侵攻以降、行動判定を行うPCは、判定直前に自分の【行動力】を1点消費するたび、進行による修正をすべて打ち消すことができる。 -10:新型改造\n深海棲艦は自らを強化しているようだ。そのセッションの決戦フェイズに登場する深海棲艦の中から一人を選ぶ。その深海棲艦をeliteのクラスを付加する。その深海棲艦がすでにeliteならflagshipに、flagshipなら改にすることもできる。 -11:艦娘研究\n艦娘が拿捕され、鹵獲される。一体何を企んでいるのか……?提督は、好きなNPCの艦娘を一人選ぶ。深海棲艦の一人に、その艦娘の持つアビリティ一つを習得させることができる。 -12:基地建設\n深海棲艦は自分たちの基地を建造した。そのセッションの決戦フェイズで、深海棲艦の旗艦は、開幕雷撃戦と雷撃戦でダメージを受けなくなる。 diff --git a/src/assets/extratables/KanColle_LFDT.txt b/src/assets/extratables/KanColle_LFDT.txt deleted file mode 100644 index 185994231..000000000 --- a/src/assets/extratables/KanColle_LFDT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:艦隊敗北表 -1:敵の支援砲撃。ランダムなPC一人に損傷を一つ与える。 -2:敵の罠。ランダムなPC一人に「アクシデント表」を一回適用する。 -3:追い詰められる。戦場が「T字戦不利」になる。 -4:本隊への合流。「敵部隊のサポート」発生。 -5:盟友艦行方不明(MIA)。敵部隊の旗艦が決戦フェイズ中、対応する盟友艦の固有、または戦術アビリティをいずれか一つを修得する。 -6:盟友艦轟沈。盟友艦は失われ「暴走表」を一回振り、暴走する。 diff --git a/src/assets/extratables/KanColle_LFVT.txt b/src/assets/extratables/KanColle_LFVT.txt deleted file mode 100644 index d2fa1dff8..000000000 --- a/src/assets/extratables/KanColle_LFVT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:艦隊勝利表 -1:支援砲撃。敵艦の中からランダムな一人に損傷を一つ与える。 -2:士気高揚。この表を振ったPCの【命中力】が1点上昇する。 -3:士気高揚。この表を振ったPCの【火力】が1点上昇する。 -4:士気高揚。この表を振ったPCの【回避力】が1点上昇する。 -5:士気高揚。この表を振ったPCの【装甲力】が1点上昇する。 -6:絆が深まる。その盟友艦からのPCへの【感情値】が1点上昇する。 diff --git a/src/assets/extratables/KanColle_LSFT.txt b/src/assets/extratables/KanColle_LSFT.txt deleted file mode 100644 index 50a6b8558..000000000 --- a/src/assets/extratables/KanColle_LSFT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:大規模部隊表 -1:水上打撃部隊 「脅威力:10」 -2:空母機動部隊 「脅威力:9」 -3:水雷戦隊    「脅威力:8」 -4:潜水艦部隊   「脅威力:7」 -5:輸送部隊 「脅威力:6」 -6:主力部隊 「脅威力:12」 diff --git a/src/assets/extratables/KanColle_WPCN.txt b/src/assets/extratables/KanColle_WPCN.txt deleted file mode 100644 index 1096f71e0..000000000 --- a/src/assets/extratables/KanColle_WPCN.txt +++ /dev/null @@ -1,22 +0,0 @@ -4d6:砲開発表(燃料3/弾薬6/鋼材6/ボーキ3) -4:開発失敗!(資材だけ失う) -5:開発失敗!(資材だけ失う) -6:三式弾(建造壱p169) -7:25mm連装機銃(着任p252) -8:41cm連装砲(着任p250) -9:8cm高角砲(着任p250) -10:15.2cm連装砲(着任p249) -11:魚雷(着任p252) -12:機銃(着任p252) -13:小口径主砲(着任p249) -14:中口径主砲(着任p249) -15:小口径主砲(着任p249) -16:中口径主砲(着任p249) -17:10cm連装高角砲(着任p249) -18:20.3cm連装砲(着任p249) -19:61cm四連装(酸素)魚雷(着任p252) -20:46cm三連装砲(着任p250) -21:15.5cm三連装砲(副砲)(建造壱p167) -22:61cm五連装(酸素)魚雷(建造壱p168) -23:53cm艦種(酸素)魚雷(建造壱p168) -24:九一式徹甲弾(建造壱p169) \ No newline at end of file diff --git a/src/assets/extratables/KanColle_WPFA.txt b/src/assets/extratables/KanColle_WPFA.txt deleted file mode 100644 index 9aba09ec4..000000000 --- a/src/assets/extratables/KanColle_WPFA.txt +++ /dev/null @@ -1,22 +0,0 @@ -4d6:艦載機開発表(燃料3/弾薬6/鋼材3/ボーキ6) -4:開発失敗!(資材だけ失う) -5:開発失敗!(資材だけ失う) -6:開発失敗!(資材だけ失う) -7:開発失敗!(資材だけ失う) -8:開発失敗!(資材だけ失う) -9:Ju87C改(建造壱p167) -10:流星(建造壱p167) -11:紫電改二(建造壱p167) -12:零式艦戦52型(着任p251) -13:艦上戦闘機(着任p251) -14:偵察機(着任p251) -15:艦上爆撃機(着任p250) -16:艦上攻撃機(着任p251) -17:彩雲(着任p251) -18:彗星(着任p250) -19:天山(着任p251) -20:瑞雲(建造壱p168) -21:彗星一二型甲(建造壱p167) -22:流星改(建造壱p167) -23:烈風(建造壱p168) -24:零式水上観測機(建造壱p168) \ No newline at end of file diff --git a/src/assets/extratables/KanColle_WPMC.txt b/src/assets/extratables/KanColle_WPMC.txt deleted file mode 100644 index 0ccd7f0a8..000000000 --- a/src/assets/extratables/KanColle_WPMC.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:特殊開発表(燃料6/弾薬3/鋼材6/ボーキ3) -2:開発失敗!(資材だけ失う) -3:開発失敗!(資材だけ失う) -4:開発失敗!(資材だけ失う) -5:開発失敗!(資材だけ失う) -6:探照灯(建造壱p169) -7:電探(着任p252) -8:改良型艦本式タービン(着任p252) -9:九四式爆雷投射機(建造壱p169) -10:甲標的 甲(建造壱p168) -11:33号対水上電探(建造壱p169) -12:増設バルジ(中型艦)(建造壱p169) \ No newline at end of file diff --git a/src/assets/extratables/KanColle_WPMCN.txt b/src/assets/extratables/KanColle_WPMCN.txt deleted file mode 100644 index b1bb425ac..000000000 --- a/src/assets/extratables/KanColle_WPMCN.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:新特殊開発表(燃料6/弾薬3/鋼材6/ボーキ3) -2:開発失敗!(資材だけ失う) -3:カ号観測機(建造弐p171) -4:九三式水中聴音機(建造弐p171) -5:ドラム缶(輸送用)(建造弐p171) -6:探照灯(建造壱p169) -7:電探(着任p252) -8:改良型艦本式タービン(着任p252) -9:九四式爆雷投射機(建造壱p169) -10:甲標的 甲(建造壱p168) -11:33号対水上電探(建造壱p169) -12:増設バルジ(中型艦)(建造壱p169) \ No newline at end of file diff --git a/src/assets/extratables/KillDeathBusiness_ANSPT.txt b/src/assets/extratables/KillDeathBusiness_ANSPT.txt deleted file mode 100644 index 9dcfff27d..000000000 --- a/src/assets/extratables/KillDeathBusiness_ANSPT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:サブプロット表「対悪魔」 -1:『退魔の印』\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の持っているものが有名なマジックアイテムであり、将来的に悪魔と戦うときに有用だと確信する。貸してもらう約束をとりつけなければ!相手への関係を、属性「退魔師」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると、相手は小道具を譲ることに同意してくれる。それが役に立つのかは、また別の話。\n報酬:【視聴率】10%増加、200【ソウル】 -2:『サービスしない』\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の姿がヒントになって、サービスシーンが失敗すればヘルピープルがガッカリするだろうと気づく。相手への関係を、属性「失敗要因」で獲得する。【深度】は1になる。\nクリア条件:相手がサービスシーンを失敗したところに居合わせる。結局、心の声なども放送されているので、あなたの無謀な試みはヘル視聴者に筒t抜けだ。\n報酬:【視聴率】10%増加、あなたと相手の両方に200【ソウル】 -3:『悪魔の手下』\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の職業がなんであるのか気づく……それは昔からあなたが悪魔の手下とみなしている職業だった!相手への関係を、属性「悪魔の手下」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると誤解が解けて、職業的偏見も解消される……あるいは、本当に悪魔の手下であったことが判明する。\n報酬:【視聴率】10%増加、200【ソウル】 -4:『番組失敗』\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の抱いている興奮や不安を、ヘルPも同様に抱いていることが分かる。つまり、この番組がうまくいかなければ、悪魔が一匹苦しむ。相手への関係を、属性「気づき」で獲得する。【深度】は1になる。\nクリア条件:結果フェイズ開始時に【視聴率】が30%以下になっていること。これで奴をリンボにトばせるかもしれない。\n報酬:【視聴率】10%増加、200【ソウル】 -5:『不殺』\n標的が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、標的を殺さないことで悪魔の力を削ぐことができると気づく。そのためには、相手を守らないといけない。相手への関係を、属性「守るべき人」で獲得する。【深度】は1になる。\nクリア条件:結果フェイズまで相手を生き残らせる。怒るヘルPに皮肉の一つでも言ってやるといいだろう。\n報酬:【視聴率】10%増加、700【ソウル】 -6:『仲間』\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手が悪魔と戦う際に力になってくれる人物だと確信する。愚かな番組への協力をやめさせれば、きっと大丈夫だ。相手への関係を、属性「同士」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を3にする。結局断られるかもしれないが、あなたは言うだけ言ったことで満足した。\n報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】 相手がNPCなら600【ソウル】 diff --git a/src/assets/extratables/KillDeathBusiness_MASPT.txt b/src/assets/extratables/KillDeathBusiness_MASPT.txt deleted file mode 100644 index 351195acc..000000000 --- a/src/assets/extratables/KillDeathBusiness_MASPT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:サブプロット「意地悪」 -1:『二位狙い』\nキャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたはがっかりした相手の顔を見たくなる。相手への関係を、属性「二位にしたい」で獲得する。【深度】は1になる。\nクリア条件:結果フェイズに他のサブプロットクリアの処理が終わったあとで、相手の【ソウル】が回収人のなかで最も多い状態ではないこと。ギリギリの二位にしてやることで、いい顔が見られるだろう。\n報酬:【視聴率】10%増加、相手の所持【ソウル】と同じだけの【ソウル】(最低0、最大600) -2:『偏見』\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の職業に対して根強い偏見を持っていることになる。どんどんイヤミを言っていこう。相手への関係を、属性「いらない奴」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を3にする。あなたの偏見は解消されるのかもしれないし、あるいは相手がひどく落ち込むことで、あなたが勝利を確信するのかもしれない。\n報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】 相手がNPCなら600【ソウル】 -3:『ダメ衣装』\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の衣装が非常にダメだと確信する。罵倒したい。いやむしろ罵倒しないといけない。相手への関係を、属性「服がダメ」で獲得する。【深度】は1になる。\nクリア条件:相手と同じシーンに三回登場し、三シーンにわたってヘルスタイリスト罵倒表を使った罵倒を行う。オリジナルの罵倒でもかまわない。\n報酬:【視聴率】10%増加、あなたと相手の両方に100【ソウル】 -4:『弱そうな奴』\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の動きが非常に一般人じみていて簡単に倒せそうであると確信する。相手への関係を、属性「弱そう」で獲得する。【深度】は1になる。\nクリア条件:相手に戦闘を挑みキラートリックで倒す。ラッキーヒットだったのかもしれないし、相手は本当にチョロかったのかもしれない。だが、そんなことは結果の前には関係ない。\n報酬:【視聴率】10%増加、500【ソウル】 -5:『ニセブランド』\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の持っているアイテムがニセのブランド品だと確信する!これはしつこく言い立てなければ!相手への関係を、属性「情報弱者」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。あなたの間違いが判明するか、あなたが正しかったことが判明するか、あるいはどうでもよくなるか。選ぶのはあなただ!\n報酬:【視聴率】10%増加、200【ソウル】 -6:『泣かせたい』\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の泣き顔がヘル視聴者(と、あなた)に非常な満足感を与えてくれるであろうと確信する。相手への関係を、属性「泣かせたい人」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。相手は泣き出すか、そっと涙を流す……が、理由は相手が決定する。血が目に入っただけかもしれない。\n報酬:【視聴率】10%増加、200【ソウル】 diff --git a/src/assets/extratables/KillDeathBusiness_MOSPT.txt b/src/assets/extratables/KillDeathBusiness_MOSPT.txt deleted file mode 100644 index 1fb59938f..000000000 --- a/src/assets/extratables/KillDeathBusiness_MOSPT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:サブプロット表「金儲け」 -1:『悪魔の代わり』\n回収人から一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の願いを叶える現実的な方法を思いつく。まとまった予算があれば可能だ。あとは売り込むだけ!相手への関係を、属性「新規顧客」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を3にする。すると、相手は承諾する……番組で負けたらの話だが。そして約束は守られない可能性がある。\n報酬:【視聴率】10%増加、400【ソウル】 -2:『スカウト』\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、相手こそあなたのビジネスに必要な人材だったと気がつく。番組の勝敗がどうなるにせよ、番組終了後に相手を確保しておきたい。相手への関係を、属性「即戦力」で獲得する。【深度】は1になる。\nクリア条件:このサブプロットを獲得した次のセッションの導入シーンの始めに相手が登場する。地獄に堕ちているとダメ。\n報酬:【視聴率】10%増加、200【ソウル】 -3:『売り出し』\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、ヘルドレスの下に隠された相手の体格が、マスのニーズにぴったりと合致するものだと確信する。マネージメントして大儲けだ!相手への関係を、属性「モデル候補」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると相手のプロフィールをある程度把握することに成功し、あとで勝手に売り出すことが可能になる。\n報酬:【視聴率】10%増加、200【ソウル】 -4:『クローン』\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、その小道具はデザインがかっこいいうえに、ちょっとした施設があれば簡単にコピー品を量産できることに気がつく。相手への関係を、属性「オリジナル」で獲得する。【深度】は1になる。\nクリア条件:相手を戦闘で一度倒す。ヘルERに送られる相手の小道具をそっと抜き取り、グレーな感じの工場に送ろう。来週には世界中に出回っているはずだ。\n報酬:【視聴率】10%増加、300【ソウル】 -5:『チャンプ』\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の身のこなしのなかに、任意の格闘技の世界チャンプになれる素質を見て取る。いいトレーナーをつければイケるはずだ!相手への関係を、属性「原石」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると、相手は興味を示した、とあなたが確信する。チャンピオンのマネージャーとして栄華を極めるあなたの未来が目に浮かぶ。\n報酬:【視聴率】10%増加、200【ソウル】 -6:『ゆるキャラ』\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手のムードにぴったりのキャラを思いつく。あなたの考えた変な語尾をつけさせることができれば、大ヒット間違いなしだ……!相手への関係を、属性「中身」で獲得する。【深度】は1になる。\nクリア条件:語尾を一つ指定する。相手が登場するメインフェイズのうち三つで、プレイヤーのものを含む発言すべてにその語尾をつけて喋るとクリア。他のプレイヤーやゲームマスターに語尾の欠落を指摘されるとNG。\n報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】 diff --git a/src/assets/extratables/KillDeathBusiness_PASPT.txt b/src/assets/extratables/KillDeathBusiness_PASPT.txt deleted file mode 100644 index 4a9f163b6..000000000 --- a/src/assets/extratables/KillDeathBusiness_PASPT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:サブプロット表「仕切り」 -1:『協力しろ』\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手は番組の内容にうんざりしていて、はなから協力する気がないのだと確信する。説得して番組を盛り上げるようにしなくては!相手への関係を、属性「非協力的」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を3にする。すると相手はあなたの意気込みを分かってくれたような……くれないような。まあとにかく一区切りがつく。\n報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】相手がNPCなら600【ソウル】 -2:『願いごと変更』\nキャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の願いは番組的によくないものだと確信する。もっと盛り上がるような、いい願いに変えさせなければ!相手への関係を、属性「願いが下手」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると、相手は願いごとをあなたが提案したものに変更することに同意する。そして、後で本当に変更したりしなかったりするだろう。\n報酬:【視聴率】10%増加、200【ソウル】 -3:『少しの助け』\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手は自分が手を貸してやらないとダメな奴だと直感する。放っておいたらなんの役にも立たずにいるだけになってしまうだろう。相手への関係を、属性「一人ではダメ」で獲得する。【深度】は1になる。\nクリア条件:相手に対して判定への協力を行い、その判定が成功する。すると相手の成功にも自分の協力にも満足がいき、感動的なBGMも流れる。\n報酬:【視聴率】10%増加、クリア条件達成時の相手への関係【深度】×200【ソウル】 -4:『トリビア』\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の職業的知識をトリビアとして披露することが番組には不可欠だと確信してしまう。なんとかして聞き出さなければ。相手への関係を、属性「トリビア係」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。いくつか職業的知識がヘル視聴者に披露されたことで、視聴者ではなくあなたの知識欲が満たされた。\n報酬:【視聴率】10%増加、200【ソウル】 -5:『決め台詞』\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手が小道具を使うときにドラマティックな決め台詞を使えば番組的にオイシイと気づく。言わせたい……!相手への関係を、属性「素人」で獲得する。【深度】は1になる。\nクリア条件:相手が参加する戦闘の開始時に、あなたの考えた決め台詞を相手に二回言わせる。途中で台詞を変えたらカウントしなおし。\n報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】 -6:『テコ入れ回避』\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、こんな人がいるんじゃあ番組の視聴率も期待できないと確信してしまう。頑張らなければ。誰が?あなたが!相手への関係を、属性「売れなさそう」で獲得する。【深度】は1になる。\nクリア条件:結果フェイズ開始時に【視聴率】が40%以上になっている。危ない場面もあったかもしれないが、とりあえずOKだ。\n報酬:【視聴率】10%増加、300【ソウル】 クリア時にフィーバーが発生していれば、さらに300【ソウル】 diff --git a/src/assets/extratables/KillDeathBusiness_POSPT.txt b/src/assets/extratables/KillDeathBusiness_POSPT.txt deleted file mode 100644 index 266d13dc6..000000000 --- a/src/assets/extratables/KillDeathBusiness_POSPT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:サブプロット表「人気」 -1:『踏み台』\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手のようなムードの人物と一緒にサービスシーンを行えばヘル視聴者に愛されると確信する。相手への関係を、属性「踏み台」で獲得する。【深度】は1になる。\nクリア条件:相手と一緒にサービスシーンを成功させる。意図していたのかは不明だが、相手のアシストによりサービスは成功、ちょっと実況されたりもする。\n報酬:【視聴率】10%増加、200【ソウル】 -2:『器用さ』\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、どんな相手と組ませてもソツなくこなすマルチな人材としてヘルPにチヤホヤされる未来が目に浮かぶ。まずはあいつからだ。相手への関係を、属性「最初の課題」で獲得する。【深度】は1になる。\nクリア条件:合計三人のキャラクターと一緒にサービスシーンを三回成功させる。それぞれ違うキャラクターと行うこと。成功するたびにヘル視聴者はあなたの器用さに感銘を受ける。\n報酬:【視聴率】10%増加、500【ソウル】 クリア時にフィーバーが発生していれば、さらに300【ソウル】 -3:『主役争い』\nキャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の願いごとはヘル視聴者にウケて人気が出てしまいそうだと直感する。なんとか相手を自分のストーリーに巻き込まなければ。相手への関係を、属性「脇役候補」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を3にする。相手のことを深く知り、ヘルカメラに向かって事情を語らせることで、こいつのストーリーは終わったと確信できた!\n報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】 相手がNPCなら500【ソウル】 -4:『アレを奪え』\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の持っているものは自分にこそふさわしいと確信する。ヘルスタイリストのチョイスは間違っていた。あれはあなたのものだ!相手への関係を、属性「アイテムハンガー」で獲得する。【深度】は1になる。\nクリア条件:暴力で奪うなら、相手を戦闘で一度倒す。譲ってもらいたいなら、相手への関係の【深度】を3にする。どちらにせよ、クリア条件を達成した時点であなたは高揚感に包まれて満足してしまい、結局小道具はいらないものだったと悟る。\n報酬:【視聴率】10%増加、クリア条件達成時の相手への関係【深度】×200【ソウル】 -5:『振り付け』\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手のなにげない動きに対して、今年の流行ナンバーワンになる可能性を見て取る。あの振り付けを盗まなければ……!相手への関係を、属性「無自覚な天才」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると相手は振り付けを教えてくれて、あなたは完全にそれをモノにする。流行るかどうかはまた別の問題だ。\n報酬:【視聴率】10%増加、200【ソウル】 -6:『着こなし』\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、相手のヘルドレスの着こなしはあなたを完全に凌駕していると確信してしまう。他の面では勝っているのに。相手への関係を、属性「ファッショナブル」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると相手は着こなしについて丁寧な、あるいは短いが核心を突いていると思われる助言をあなたにしてくれる。役に立ったり立たなかったりするだろう。\n報酬:【視聴率】10%増加、200【ソウル】 diff --git a/src/assets/extratables/KillDeathBusiness_UMSPT.txt b/src/assets/extratables/KillDeathBusiness_UMSPT.txt deleted file mode 100644 index 3e3f16169..000000000 --- a/src/assets/extratables/KillDeathBusiness_UMSPT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:サブプロット表「恨み」 -1:『悲しい過去』\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、相手と同じ職業の人に虐げられた悲しい過去が、あなたの脳裏にフラッシュバックする。相手への関係を、属性「奴らの同類」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。相手を深く知っていくなかで、あなたの恨みは溶けて消えるか、さらに深まって人格の一部になるだろう。\n報酬:【視聴率】10%増加、200【ソウル】 -2:『昔の恋人』\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手とあなたの昔の恋人がまったく同じ癖を持っている事が判明する!もしや……そして、手ひどくフラれた過去がフラッシュバックする。相手への関係を、属性「昔の恋人」で獲得する。【深度】は1になる。\nクリア条件:なぜフッたのか聞き出すため戦闘で一度倒す。すると、相手は理由を語るか、あるいはただの人違いであったことが判明する。いずれにせよあなたは人間的に成長できる……かもしれない。\n報酬:【視聴率】10%増加、クリア条件達成時の【関係深度】×200【ソウル】 -3:『間違い』\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手と同じモチベーションで行動する人に敗北した過去が、あなたの脳裏にフラッシュバックする。奴らは間違っている。それを地獄に知らしめなければ!相手への関係を、属性「悪人」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると、相手は分かってくれる。または、あなたは理解してもらえたと思い込む。今日は久々にいい気分で眠れそうだ。\n報酬:【視聴率】10%増加、あなたと相手の両方に100【ソウル】 -4:『破れた夢』\nキャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたはかつて同じ夢を抱き、そして破れていたことが判明する。夢を諦める悲しいシーンが脳裏にフラッシュバックする。相手への関係を、属性「破滅しそう」で獲得する。【深度】は1になる。\nクリア条件:相手がサブプロットを達成したシーンに登場する。すると、あなたは相手の成功を我がことのように喜んでいる自分に気づく。もしかしたら、これがきっかけで変われるのかもしれない。\n報酬:【視聴率】10%増加、300【ソウル】 -5:『仇の手下』\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、その小道具にはあなたが生涯の敵として定めた人物が関わっていることが明らかになる。そんなものを使うとは……許せん!相手への関係を、属性「奴らの手下」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると、相手は本当に奴らの手下であると確信できる。本当のところは不明。そのあとに戦闘を挑み、一度相手を倒せ。すると、あなたは満足する。次は奴だ。\n報酬:【視聴率】10%増加、300【ソウル】 -6:『服よこせ』\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、その衣装は本当はあなたが着たかったものだと判明する。ヘルスタイリストへの抗議がひどい罵倒とともに却下されるシーンが脳裏にフラッシュバックする。相手への関係を、属性「服よこせ」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にし、かつ相手からあなたへの関係の【深度】を1以上にする。根負けした相手はちょっとヘルドレスを貸してくれて、あなたは満足する。ちなみに、本当に似合っているかどうかは関係ない。\n報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】 diff --git a/src/assets/extratables/Oukahoushin3rd_BKT.txt b/src/assets/extratables/Oukahoushin3rd_BKT.txt deleted file mode 100644 index 422555c0a..000000000 --- a/src/assets/extratables/Oukahoushin3rd_BKT.txt +++ /dev/null @@ -1,12 +0,0 @@ -2D6:武器攻撃裏成功表 -2:1ポイント清徳値が低下。連続攻撃が行える。この場合の連続攻撃においては、命中判定のサイコロは常にひっくり返して用いるが、2撃目以降はこの表は使わない。 -3:敵に叩きつけると同時に武器が破損。素手や身体に備わった武器(爪、牙など)で攻撃をしていた場合には、自身にも1D6(のみ)ダメージ。 -4:効果的命中。ダメージに1D6加算。ただし極度に疲労するため、精神値に1D6点ダメージを受ける。(2ゾロ)1ポイント仙骨が上昇、体力または機敏(攻撃を行った者が選択する)が1ポイント低下。 -5:ふつうの命中。 -6:不完全な命中、ダメージは半分。(3ゾロ)1ポイント仙骨が低下。 -7:ふつうの命中。 -8:体力または機敏(攻撃を行った者が選択する)が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。 -9:ふつうの命中。 -10:体力または機敏(攻撃を行った者が選択する)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。 -11:呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。 -12:1ポイント清徳値が低下。体力または機敏(攻撃を行った者が選択する)が1ポイント上昇。 diff --git a/src/assets/extratables/Oukahoushin3rd_KKT.txt b/src/assets/extratables/Oukahoushin3rd_KKT.txt deleted file mode 100644 index be8a92e02..000000000 --- a/src/assets/extratables/Oukahoushin3rd_KKT.txt +++ /dev/null @@ -1,12 +0,0 @@ -2D6:狂気表 -2:心神喪失、生ける屍。 -3:被害妄想。仲間も含め、他者は全て自分を傷つけようとしていると思いこむ。行動はゲームマスターが管理。 -4:重度の不安症。失敗を恐れるあまり、次ラウンドは行動不可。それ以降も、2ラウンドに1回しか行動できない(自動武器や使役獣への命令なども)。\n「次のラウンドに行動できない」状態では、「割り込み」は行えない。 -5:重度の依存症。自分で行動を決められず、仲間に決めてもらわなければならない。 -6:二重人格。二つ目の人格は狂気。新たに狂気表(KKT)で決定(再度二重人格が出た場合は、振りなおす)。狂気表を使った直後は、この二つ目の人格。\n1日以上、二重人格が持続している場合、その間に精神値ダメージを受けるたびに、その直後に1Dを振らねばならない。1が出たらこの狂気が顔を出す。\n二つ目の人格が顔を出している時間は、1Dで決定する(1~3:短時間、4~5:半日、6:1日)。 -7:軽度の依存症。仲間の承認がなければ、思いついた行動を実行できない。 -8:軽度の偏執狂。ある行為や物品などに異常な執着を示す。ただし、行動に大きな影響は与えない。具体的な内容は、ゲームマスターとプレイヤーの相談で決定。 -9:重度の偏執狂。行動に重大な影響を与える。具体的内容は、ゲームマスターが決定。 -10:恐怖症。あるものに対して恐怖。対象からは、ひたすら逃亡しようとする。また、対象に遭遇するたびに、難易度10で意志の能力値判定を行わねばならず、失敗したら1Dの精神値ダメージを受ける。恐怖の対象は、ゲームマスターが決定。 -11:狂暴化。仲間も含め、他者はすべて敵とみなし、傷つけようとする。行動はゲームマスターが管理。 -12:錯乱。行動はゲームマスターが「なるべくでたらめになるように」決定する。 diff --git a/src/assets/extratables/Oukahoushin3rd_NHT.txt b/src/assets/extratables/Oukahoushin3rd_NHT.txt deleted file mode 100644 index f224636e7..000000000 --- a/src/assets/extratables/Oukahoushin3rd_NHT.txt +++ /dev/null @@ -1,12 +0,0 @@ -2D6:能力値判定裏成功表 -2:1ポイント清徳値が低下。変な癖が身についてしまう。 -3:やりすぎ。過剰な成功をしたり、よけいなことまでして災いが起こりうる。 -4:「気」の爆発。大成功。ただし極度に疲労するため、精神値に1D6点ダメージを受ける。(2ゾロ)1ポイント仙骨が上昇、使用した能力値が1ポイント低下。 -5:ふつうの成功。 -6:不完全な成功、数値的効果は半分ほどに見積もる。(3ゾロ)1ポイント仙骨が低下。 -7:ふつうの成功。 -8:使用した能力値が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。 -9:ふつうの成功。 -10:使用した能力値が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。 -11:呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。 -12:1ポイント清徳値が低下。使用した能力値が1ポイント上昇。 diff --git a/src/assets/extratables/Oukahoushin3rd_SDT.txt b/src/assets/extratables/Oukahoushin3rd_SDT.txt deleted file mode 100644 index 575a56170..000000000 --- a/src/assets/extratables/Oukahoushin3rd_SDT.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:精神値ダメージ悪影響表 -1:一瞬の放心。直後の判定は自動的に失敗。精神値を1D6×最大値の10%回復。 -2:一瞬の放心。直後の判定は自動的に失敗。精神値を1D6×最大値の10%回復。 -3:一瞬の放心。直後の判定は自動的に失敗。精神値を1D6×最大値の10%回復。 -4:放心状態。強制され、自動失敗するまで、自発的行動不可。精神値を(1D6+2)×最大値の10%回復。 -5:精神異常(具体的内容は狂気表(KKT)で決定)。短時間のみ。精神値を(1D6+4)×最大値の10%回復。 -6:精神異常(具体的内容は狂気表(KKT)で決定)。期間は1D6を振って決定(1~3:1日、4~5:99日間、6:永遠)。精神値を最大値まで回復。 diff --git a/src/assets/extratables/Oukahoushin3rd_SKT.txt b/src/assets/extratables/Oukahoushin3rd_SKT.txt deleted file mode 100644 index 6b401aeff..000000000 --- a/src/assets/extratables/Oukahoushin3rd_SKT.txt +++ /dev/null @@ -1,12 +0,0 @@ -2D6:仙術行使裏成功表 -2:1ポイント清徳値が低下。1ポイント仙骨が上昇。 -3:術の効果は術者にも解除不能になる。精神値に1点ダメージを受ける。 -4:「気」の暴走。効果3倍。ただし極度に疲労するため、精神値に1D6点ダメージを受ける。(2ゾロ)術者は1D6日間、仙術が使用不能になる。1ポイント仙骨が上昇。 -5:術が敵にかけたものの場合、仲間の1人を巻きこむ。精神値に1点ダメージを受ける。 -6:不完全な成功、効果半分。(3ゾロ)持続時間のある術の場合、術者がひたすら精神集中していない限り、術はすぐに解除される。 -7:ふつうの成功。 -8:1ポイント清徳値が低下。(4ゾロ)仙骨以外のいずれかの能力値(術者選択)が1D6日間、1ポイント上昇。 -9:術が味方もしくは自分にかけたものの場合、敵の1人にも同じようにかかる。精神値に1点ダメージを受ける。 -10:仙骨以外のいずれかの能力値(術者選択)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。 -11:1D3ポイント清徳値が低下。 -12:1D6ポイント清徳値が低下。仙骨以外のいずれかの能力値(術者選択)が1ポイント上昇。 diff --git a/src/assets/extratables/Oukahoushin3rd_STT.txt b/src/assets/extratables/Oukahoushin3rd_STT.txt deleted file mode 100644 index 32b94551f..000000000 --- a/src/assets/extratables/Oukahoushin3rd_STT.txt +++ /dev/null @@ -1,12 +0,0 @@ -2D6:仙術抵抗裏成功表 -2:1ポイント清徳値が低下。 -3:そらされた術の効果が味方に及ぶ。味方の誰にそらされたかは、この表を使ったものが選ぶ。集団攻撃仙術の場合、抵抗に成功したものの中から選ぶこと。ほかの誰も成功に抵抗していなかったときは、ふつうの抵抗成功として扱う。精神値に1点ダメージを受ける。 -4:仙術をかけた敵にその効果が及ぼされる。敵自身はそれに対して、抵抗を試みることができる。(2ゾロ)1ポイント仙骨が上昇。1ポイント知覚が低下。 -5:ふつうの抵抗成功。 -6:不完全な抵抗、ふつうの半分の効果を受ける。(3ゾロ)1ポイント仙骨が低下。 -7:ふつうの抵抗成功。 -8:仙骨または知覚(仙術に抵抗した者が選択する)が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。 -9:ふつうの抵抗成功。 -10:仙骨または知覚(仙術に抵抗した者が選択する)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。 -11:呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。 -12:1ポイント清徳値が低下。仙骨または知覚(仙術に抵抗した者が選択する)が1ポイント上昇。 diff --git a/src/assets/extratables/Oukahoushin3rd_UKT.txt b/src/assets/extratables/Oukahoushin3rd_UKT.txt deleted file mode 100644 index cbefba802..000000000 --- a/src/assets/extratables/Oukahoushin3rd_UKT.txt +++ /dev/null @@ -1,12 +0,0 @@ -2D6:受け・回避裏成功表 -2:1ポイント清徳値が低下。 -3:転倒する(空を飛んでいるものは落下。乗騎などに乗っていたら転落)。精神値に1点ダメージを受ける。 -4:相手のバランスを崩すのに成功。攻撃を行った敵が転倒(空を飛んでいるものは落下。乗騎などに乗っていたら転落)。(2ゾロ)1ポイント仙骨が上昇、機敏または知覚(攻撃を防御した者が選択する)が1ポイント低下。 -5:ふつうの防御成功。 -6:不完全な防御、通常の半分のダメージを受ける。しかし敵が連続攻撃を行うことは出来ない。攻撃者が裏成功攻撃であってもその反動は決めない。(3ゾロ)1ポイント仙骨が低下。 -7:ふつうの防御成功。 -8:機敏または知覚(攻撃を防御した者が選択する)が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。 -9:ふつうの防御成功。 -10:機敏または知覚(攻撃を防御した者が選択する)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。 -11:呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。 -12:1ポイント清徳値が低下。機敏または知覚(攻撃を防御した者が選択する)が1ポイント上昇。 diff --git a/src/assets/extratables/ShinobiGami_AKST.txt b/src/assets/extratables/ShinobiGami_AKST.txt deleted file mode 100644 index 557cbbac2..000000000 --- a/src/assets/extratables/ShinobiGami_AKST.txt +++ /dev/null @@ -1,12 +0,0 @@ -2D6:秋空に雪舞えばシーン表 - 2:どこから紛れ込んできたのか。シーンプレイヤーが1D6を振って3以下ならナタを持った少女、4以上なら冬篭りに備えた熊が襲ってくる。シーンに登場したキャラクターは、少女なら《刀術》・熊なら《鳥獣術》で判定し、失敗すると接近戦ダメージを1点受ける。 - 3:暗い夜の森の中、月明かりのみが周囲を照らす。忍が動くにはいい時間だ。 - 4:秋晴れの下、両脇で黄金色の稲穂が風に靡く道。刈り取りを控えたこの短い間にしか見る事の出来ない貴重な光景だ。 - 5:美味しそうな果実がたわわに実っている。一つくらい取って行ってもバチは当たらないだろう…。 - 6:山中に続く林道。勾配の厳しい道から、紅葉が浮かび流れる穏やかな川が見下ろせる。 - 7:村の広場。山や田畑が一望できる。波打つ稲穂の絨毯、山々には紅葉。秋を感じるひと時だ。 - 8:パチパチと爆ぜる音。どうやら籾殻で焚き火をしているらしい。少し暖まっていこうか。 - 9:神秘的な神社。祭りの準備が進められているが、今は人がいないようだ。 -10:ひと雨きそうな午後。重たい空気にキンモクセイがつと香る。 -11:草に埋もれ、崩れかけの古い空き家。どこか物悲しさを感じる。 -12:カツーン、カツーン、誰かが丑の刻参りをしている音が聞こえる。シーンに登場したキャラクターは《呪術》で判定し、成功すると誰かに《呪い》の変調を与えることができる。失敗すると《呪い》の変調を受ける。 diff --git a/src/assets/extratables/ShinobiGami_CLST.txt b/src/assets/extratables/ShinobiGami_CLST.txt deleted file mode 100644 index f19e0b6a4..000000000 --- a/src/assets/extratables/ShinobiGami_CLST.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:災厄シーン表 -1:瘴気に晒され続けたことであなたの身体が妖魔へと変貌する。《封術》の判定に失敗したシーンプレイヤーは、背景:劣勢因子と背景:魔人を獲得する。 -2:妖魔があなたに従属を強いる。やつが掲げた手の中には…。《遁走術》の判定に失敗したシーンプレイヤーは、背景:人質と兵糧丸1つを獲得する。 -3:妖魔の群れに捕まった!独力での包囲網突破のために君の体は限界を迎えようとしていた。《拷問術》の判定に失敗したシーンプレイヤーは、背景:侵食と神通丸1つを獲得する。 -4:戦いの激化はあなたの体を蝕む。《医術》の判定に失敗したシーンプレイヤーは、背景:病魔と神通丸1つを獲得する。 -5:下級妖魔を束ねたボスが、新たなる力を手に入れようとしている。シーンプレイヤーが《見敵術》の判定に失敗した場合、ボスに対してエニグマ:『秘奥義』が公開状態で追加される。 -6:力なき者が生き残ることは出来ない。ボスが新たな力を手に入れようとしている。シーンプレイヤーが《怪力》の判定に失敗した場合、ボスに対してエニグマ:『八面六臂』が公開状態で追加される。 diff --git a/src/assets/extratables/ShinobiGami_DXST.txt b/src/assets/extratables/ShinobiGami_DXST.txt deleted file mode 100644 index b9013fcc7..000000000 --- a/src/assets/extratables/ShinobiGami_DXST.txt +++ /dev/null @@ -1,12 +0,0 @@ -2D6:出島EXシーン表 - 2:迷宮街。いつから囚われてしまったのだろう?何重にも交差し、曲がりくねった道を歩き続ける。このシーンの登場人物は《記憶術》で判定を行わなければならない。成功すると、迷宮の果てで好きな忍具を一つ獲得する。失敗すると、行方不明の変調を受ける。 - 3:幻影城。訪れた者の過去や未来の風景を見せる場所。このシーンの登場人物は、《意気》の判定を行うことができる。成功すると、自分の持っている【感情】を好きな何かに変更することができる。 - 4:死者たちの行進。無念の死を遂げた者たちが、仲間を求めて彷徨らっている。このシーンの登場人物は《死霊術》で判定を行わなければならない。失敗すると、ランダムに変調を一つを受ける。 - 5:スラム。かろうじて生き延びている人たちが肩を寄せ合い生きているようだ。ここなら辛うじて安心できるかも……。 - 6:落書きだらけのホテル。その周囲には肌を露出させた女や男たちが、媚態を浮かべながら立ち並んでいる。 - 7:立ちふさがるのは妖魔の群れ。他に道などない、真正面から突き進むほかは…災厄シーン表(CLST)を振ること。 - 8:薄汚い路地裏。巨大な黒犬が何かを貪っている。あなたの気配を感じて黒犬は去るが、そこに遺されていたのは……。 - 9:昏い酒場。バーテンが無言でグラスを磨き続けている。あなたの他に客の気配はないが……。 -10:地面を覆う無数の瓦礫。その隙間から暗黒の瘴気が立ち昇る。このシーンの登場人物は《生存術》で判定を行わなければならない。失敗すると、好きな【生命力】を1点失う。 -11:熱気溢れる市場。武器や薬物などを売っているようだ。商人たちの中には、渡来人の姿もある。このシーンの登場人物は、《経済力》で判定を行うことができる。成功すると、好きな忍具を一つ獲得できる。 -12:目の前に渡来人が現れる。渡来人はあなたに興味を持ち、襲い掛かってくる。このシーンの登場人物は《刀術》で判定を行わなければならない。成功すると、渡来人を倒し、好きな忍具を一つ獲得する。失敗すると、3点の接近戦ダメージを受ける。 diff --git a/src/assets/extratables/ShinobiGami_HC.txt b/src/assets/extratables/ShinobiGami_HC.txt deleted file mode 100644 index b507add9a..000000000 --- a/src/assets/extratables/ShinobiGami_HC.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:中忍試験シーン表 -2:深い闇が辺りを覆う。何度目かの夜……いつまでこの試験は続くのだろう。このシーンに登場するキャラクターは《生存術》で判定を行い、失敗すると集団戦ダメージを1点受ける。 -3:山の冷気が肉体を蝕む。このシーンに登場するキャラクターは《衣装術》で判定を行い、失敗すると射撃戦ダメージを1受ける。 -4:腹を空かせた獣が襲いかかってくる。このシーンに登場するキャラクターは、《鳥獣術》で判定を行い、失敗すると射撃戦ダメージを1点受ける。 -5:上忍の仕掛けたトラップが発動。このシーンに登場するキャラクターは《罠術》で判定を行い、失敗すると射撃戦ダメージを1点受ける。 -6:濃い霧が出てきた。視界が極端に悪くなり、不安を感じる……。 -7:清廉な気配が漂う森の中。鳥のさえずりや、そよ風が木々を通り過ぎる音が聞こえる。 -8:朽ちた山小屋を発見する。何年も使った様子はなさそうだが……。 -9:山の天気は変わりやすい。嵐がやってくる。今後、戦闘が発生したとき、戦場表を使わなかった場合、その戦場は「平地」ではなく「悪天候」として扱う。 -10:ひときわ高くなっている尾根にたどり着く。このシーンの登場するキャラクターは、《登術》で判定を行い、成功すると、好きなキャラクター1人の【居所】を獲得する。 -11:深山幽谷(しんざんゆうこく)の果てに、清涼な泉を発見する。ふう、生き返るな。このシーンに登場するキャラクターは、《意気》の判定に成功すると、【生命力】を1点回復させることができる。 -12:脱落した別のグループの忍者の死体を発見する。こいつらには、もう不要だろう。好きな忍具1つを獲得する。(何を獲得するか宣言すること)。 \ No newline at end of file diff --git a/src/assets/extratables/ShinobiGami_HK.txt b/src/assets/extratables/ShinobiGami_HK.txt deleted file mode 100644 index 243ee7510..000000000 --- a/src/assets/extratables/ShinobiGami_HK.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:影の街でシーン表 -2:血の臭いがあたりに充満している。何者かの戦いがあった気配。 いや?まだ戦いは続いているのだろうか? -3:これは……夢か? もう終わったはずの過去。しかし、それを忘れることはできない。 -4:眼下に広がる街並みを眺める。ここからなら街を一望できるが……。 -5:世界の終わりのような暗黒。暗闇の中、お前達は密やかに囁く。 -6:死者たちの行進。無念の死を遂げた者たちが、死者を求めて彷徨っている。このシーンの登場人物は《死霊術》で判定を行わなければいけない。失敗すると、ランダムに変調1つを受ける。 -7:立ち並ぶ廃墟。その影から、人とも怪物ともつかない者の影が、あなたの様子を窺っている。 -8:地面を覆う瓦礫。その隙間から暗黒の瘴気が立ち昇る。このシーンの登場人物は、《生存術》で判定を行わなければならない。失敗すると好きな【生命力】1点を失う。 -9:強い雨が降り出す。人々は、軒を求めて、大慌てて駆けだしていく。 -10:大きな風が吹き荒ぶ。髪の毛や衣服が大きく揺れる。何かが起こりそうな予感…… -11:酔っぱらいの怒号。客引きたちの呼び声。女たちの嬌声。いつもの繁華街の一幕だが。 -12:太陽の微笑みがあなたを包み込む。影の世界の住人には、あまりにまぶしすぎる。 \ No newline at end of file diff --git a/src/assets/extratables/ShinobiGami_HLST.txt b/src/assets/extratables/ShinobiGami_HLST.txt deleted file mode 100644 index 3edc68957..000000000 --- a/src/assets/extratables/ShinobiGami_HLST.txt +++ /dev/null @@ -1,12 +0,0 @@ -2D6:斜歯ラボシーン表 - 2:今週のびっくりどっくり斜歯開発室、1D6を振り奇数なら好きな忍具が入手できる。偶数でも好きな忍具が入手できるが、射撃戦ダメージを1点受ける。 - 3:トランスポーターだ!《絡繰術》で判定すること。失敗するとどこかへ飛ばされて《行方不明》の変調を受ける。成功した場合、望む場所へ到達できる。好きな「居所」を入手すること。 - 4:改造室。調整途中の下忍戦闘員たちが錯乱し、あなたに襲い掛かる。〈傀儡術〉の判定を行う。失敗すると1点の集団戦ダメージを受ける。成功すれば「居所」を持っている他のキャラクターに1点の集団戦ダメージを与えることができる。 - 5:エレベーター。ただし四方八方へ移動する。行き先ボタンは無い。この箱はこれから何処へ行くのか。 - 6:長く続く廊下。不気味なほどに静まり返っているが、周囲からはまとわりつくような敵意を感じる。 - 7:たくさんの巨大な円筒状のガラスが立ち並び、中には様々な人間が謎の液体に浮かぶ。もちろん肝心な部分は光の反射で見えない。こいつは…まさか…!培養プラントシーン表(PLST)を振ること。 - 8:LEDが視覚的にやかましいコンピュータールーム。壁一面を埋めるディスプレイがちかちか光る。斜歯の誇る超コンピュータは性能に反して古めかしい。 - 9:司令室。とうとうDr.斜歯を追い詰めた。泣いて土下座するDr.斜歯……の首がバネ仕掛けで飛び出し、大爆発。影武者だ!このシーン中のファンブル値は+2される。 -10:斜歯のロボット兵器がところ狭しと並べられている。こいつらが起動したとしたら…《潜伏術》で判定し、失敗した場合ロボット兵器に見つかって1点の射撃戦ダメージを受ける。 -11:自爆装置のある中枢ルーム。《火術》で判定し、成功すると自爆させることができる。自爆させた場合、Dr.斜歯に2点の接近戦ダメージを与えることができる。 -12:部屋に置かれた実験装置によりマインドコントロールを受けてしまう。このシーンのあなたはGMの指定した行動をとらねばならない。 diff --git a/src/assets/extratables/ShinobiGami_HM.txt b/src/assets/extratables/ShinobiGami_HM.txt deleted file mode 100644 index e6ddcd90a..000000000 --- a/src/assets/extratables/ShinobiGami_HM.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:密室シーン表 -2:……ふう。あいつらと一緒にいると、緊張で息苦しくなる。トイレにいるときだけは、少しだけ落ち着くな。 -3:パチ、パチパチ……。電灯が明滅する。ずっと薄暗い部屋にいたせいで、時間の感覚が麻痺してきた。一体、いまは何時なんだ? -4:ガチャン!誰かが食器を落として割ってしまったようだ。落としたヤツは悪びれもせず、こっちを見て肩をすくめている。 -5:誰かがつけたテレビ。くだらないバラエティ番組が映っている。静かな部屋に作り物の笑いがむなしく響く。 -6:空調がイカれているのか、妙に暑い。じっとりと汗ばんでくる……。 -7:ぴちょん、ぴちょん、ぴちょん……静かな室内に水道から水が滴る音が響く。さっき、きっちり閉めたはずなんだが。 -8:タバコの煙が目に染みる。閉じきった部屋で吸うから、空気が悪くなってきているな。 -9:床に散乱した書類の中から、一枚の写真を見つける。この部屋の持ち主と、その恋人らしき人物が仲よさそうに写っているが……。 -10:誰かが、八つ当たり気味に壁を殴る。そんなことして、一体なんになるというのだろう? -11:ベッドでごろんと横になる。くそ!いつになったら、ここから出られるんだ! -12:壁のシミをぼんやりとながめていたら、それがゆっくりと人の顔の形になり、にやりと笑いかけてきた。……幻覚か。 \ No newline at end of file diff --git a/src/assets/extratables/ShinobiGami_HO.txt b/src/assets/extratables/ShinobiGami_HO.txt deleted file mode 100644 index e33ed7bf5..000000000 --- a/src/assets/extratables/ShinobiGami_HO.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:病院シーン表 -2:謎の入院患者。車椅子に座った少女が、あなたをじっと見つめている。 -3:急患入り口。サイレンの音に続いて、ストレッチャーに乗せられた救急患者が運ばれてきた。 -4:病院の屋上。巨大な病院の敷地が一望できる。 -5:診察室。机と清潔なベットが設えられている無機室な部屋。机の上にはパソコンといくつかの器具が置かれている。 -6:病院の廊下。患者の姿はなく、静まり返っている。 -7:面会用のロビーは、入院患者とその見舞客で賑わっている。だが、それに紛れて、妙な気配を感じるが……。 -8:病室。きつい消毒液の香りに混じって、死の匂いが漂っている。 -9:奇妙な囁き声。「助けてくれ……。」そんな訴えを耳元で聞いた気がしたが……? -10:ナースステーション。数人の看護師たちが慌ただしく業務をこなしている。 -11:中庭。どこからか悲鳴が聞こえたような気がするが……? -12:霊安室。その扉が並ぶ長い廊下には、地下特有の淀んだ空気が漂っている。なぜだか気分が悪い。 \ No newline at end of file diff --git a/src/assets/extratables/ShinobiGami_HR.txt b/src/assets/extratables/ShinobiGami_HR.txt deleted file mode 100644 index 3a8a3f88c..000000000 --- a/src/assets/extratables/ShinobiGami_HR.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:龍動シーン表 -2:血の匂いが辺りに充満している。何者かの戦いがあった気配。いや?まだ戦いは続いているのだろうか? -3:これは……夢か?もう終わったはずの過去。しかし、それを忘れることはできない。 -4:眼下に広がる街並みを眺める。ここからなら街を一望できるが……。 -5:世界の終りのような暗闇。暗闇の中、お前たちは囁く。 -6:雰囲気のある古い街並みを歩く。あの建物は見たことがあるような……。 -7:霧の中を黒い影が飛び回っている。連中か? -8:分厚い霧が街を折っている。霧の向こうには黒い影が……。 -9:強い雨が降り出す。人々は軒を求めて、大慌てで駆け出していく。 -10:大きな風が吹き荒ぶ。髪の毛や衣服が大きく揺れる。何かが起こりそうな予感……。 -11:どこからか奇妙な歌が響く。それはまるで、邪悪な神に捧げる祈りのようにも聞こえた。 -12:無残で冒涜的な死体。犠牲者の表情は苦悶に満ちあふれ、四肢には何者かに貪り食われた痕がある。 \ No newline at end of file diff --git a/src/assets/extratables/ShinobiGami_HS.txt b/src/assets/extratables/ShinobiGami_HS.txt deleted file mode 100644 index 67e18af88..000000000 --- a/src/assets/extratables/ShinobiGami_HS.txt +++ /dev/null @@ -1,7 +0,0 @@ -1d6:催眠シーン表 -1:あなたは心地よいベッドの中で、恋人の肌のぬくもりを感じながら微睡んでいる。恋人は「そろそろ起きる時間」とベッドからすり抜ける。目を開けると、そこには裸のナビキャラクターがいた。そして、ナビキャラクターはあなたに優しく口づけをした。柔らかな感触が、あなたの記憶を掘り起こす。 -2:あなたは一人で死体の片付けを行っている。とても恐ろしく、とても憎かったナビキャラクターを殺したのだ。ナビキャラクターの意志のない瞳を見下ろし、あなたは晴れやかな気分になる。そして、その死体の手のひらに何かが書かれているのに気が付いた。 -3:あなたはなぜかTVショーに登場している。黒いサングラスをかけた司会者と楽しくおしゃべりしていたら、友人を紹介してほしいと言われ、電話を渡された。覚えのある番号にかけてみると、受話器の向こうからナビキャラクターの声がした。声は、あなたにこう囁く……。 -4:あなたはいつの間にか子どもになって、お気に入りのアニメを見ている。夢中になってアニメを見ていると、ナビキャラクターがアニメの登場人物として現れた。ナビキャラクターは、画面から抜け出してきて、あなたをアニメの世界に引きずり込む。そして、あなたは世界の真実に気付いてしまう! -5:あなたはレストランでお腹を空かせている。そこに給仕の姿をしたナビキャラクターが、食事を運んできた。メインディッシュの銀製の蓋を開けてみると、そこにはあなたの大好物が。食欲をそそる香りが立ちこめ、あなたは重大な事実を思い出す。 -6:あなたは膨大な数の書架が林立する無人の図書館を歩いている。何気なく一冊の本を棚から抜き出すと、その本の向こう側にナビキャラクターの顔がのぞいている。「お前の求めるものは、その本の14ページに書かれている。」その言葉に従い、恐る恐る14ページを開いてみると……。 diff --git a/src/assets/extratables/ShinobiGami_HT.txt b/src/assets/extratables/ShinobiGami_HT.txt deleted file mode 100644 index 11d702592..000000000 --- a/src/assets/extratables/ShinobiGami_HT.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:滅びの塔シーン表 -2:血の臭いがあたりに充満している。何者かの戦いがあった気配。 いや?まだ戦いは続いているのだろうか? -3:これは……夢か? もう終わったはずの過去。しかし、それを忘れることはできない。 -4:眼下に広がる街並みを眺める。ここからなら街を一望できるが……。 -5:世界の終わりのような暗黒。暗闇の中、お前達は密やかに囁く。 -6:優しい時間が過ぎていく。影の世界のことを忘れてしまいそうだ。 -7:凄まじい業火。このシーンの登場する者は、『器術』分野からランダムに特技1つを選び、判定を行う。失敗すると射撃戦ダメージ1点を受ける。 -8:凄まじい人混み。喧噪。影の世界のことを知らない無邪気な人々の手柄話や無駄話が騒がしい。 -9:強い雨が降り出す。人々は、軒を求めて、大慌てて駆けだしていく。 -10:大きな風が吹き荒ぶ。髪の毛や衣服が大きく揺れる。何かが起こりそうな予感…… -11:凄まじい業火。このシーンの登場する者は、『器術』分野からランダムに特技1つを選び、判定を行う。失敗すると射撃戦ダメージ1点を受ける。 -12:太陽の微笑みがあなたを包み込む。影の世界の住人には、あまりにまぶしすぎる。 \ No newline at end of file diff --git a/src/assets/extratables/ShinobiGami_HY.txt b/src/assets/extratables/ShinobiGami_HY.txt deleted file mode 100644 index aebf51e83..000000000 --- a/src/assets/extratables/ShinobiGami_HY.txt +++ /dev/null @@ -1,12 +0,0 @@ -2d6:夜行列車シーン表 -2:車内の灯りがすべて消える。停電か?それとも……。すべてが闇に覆われる。 -3:どうやらこの車輌は喫煙席のようだ。もうもうと煙がたちこめている。しかし、あなたたち以外に、客の姿は見えないのだが……? -4:気分を変えるために、食堂車に移動する。そこには「解体屋」を名乗る例の女性がいた。あなたにむかって、婉然とほほえみかけてくる。 -5:……はッ!?夢か?いつの間にか眠っていたようだ。何か、悪夢を見ていたようなのだが……。 -6:窓越しに通過する駅のホームが見える。しかし、その駅の名前をどうしても読むことができない。どうにも、日本語には見えないのだが……。 -7:ガタンガタンガタン……路線を走る音をぼんやりと聞いている。一体、この列車はどこに向かっているんだろう? -8:車内を照らす白熱灯に、羽虫がたかり、それに合わせるように光が明滅する。 -9:髑髏のような細身の車掌あなたのチケットを確認すると、にたりと邪悪に微笑み、去って行った。 -10:一等車輛はコンパートメントになっているようだ。コンパートメントの中からは、楽しげな親子の話し声が聞こえてくるが……? -11:「お弁当に、お茶……。」車内販売の少女がやってくる。しかし、そこで売られている食べ物や飲み物は、生き物の内臓のような器官やぐねぐねと蠢く触手、異様な毛の塊など異形のものばかり。《経済力》の判定に成功すると、好きな「忍具」1つを購入できる。 -12:車輌の果てを確かめるため、延々扉をくぐっているが、いつまでたっても最前列(最後尾?)にたどりつかない。今、いったい何輌目だろうか? \ No newline at end of file diff --git a/src/assets/extratables/ShinobiGami_NTST.txt b/src/assets/extratables/ShinobiGami_NTST.txt deleted file mode 100644 index 1472fc4d1..000000000 --- a/src/assets/extratables/ShinobiGami_NTST.txt +++ /dev/null @@ -1,12 +0,0 @@ -2D6:夏の終わりシーン表 -2:どこから紛れ込んできたのか。ナタを持った少女がこちらに迫ってくる。あっそぼうよぉ。シーンに登場したキャラクターは《刀術》で判定し、失敗すると接近戦ダメージを1点受ける。 - 3:暗い夜の森の中、月明かりのみが周囲を照らす。忍が動くにはいい時間だ。 - 4:鬱蒼と繁っていて少し涼しい森の中。ほんのひとときでもいい。使命を忘れて少し涼もうか。 - 5:ほとんど人が出入りしない公民館。かろうじて扇風機は回っているが暑い。 - 6:山の斜面に立ち並ぶ墓石。踏み固められた周囲と墓前に供えられた小さな花束。こんな山中にも日々通う人がいるのだろうか。 - 7:村の広場。田畑が一望できる。夏の風物詩であるセミの鳴き声がうるさい。 - 8:澄み切った清流。冷たい飛沫が気持ちいい。森の中の穴場だ。 - 9:神秘的な神社。夏の終わりに向けて祭りの準備がされているが、今は人がいないようだ。 -10:無人の廃屋が並び、不気味な雰囲気が漂う。廃屋の影から息を潜める何者かの気配を感じる。 -11:村の上空。ここから眺めれば村など小さいものだ。 -12:カツーン、カツーン、誰かが丑の刻参りをしている音が聞こえる。シーンに登場したキャラクターは《呪術》で判定し、成功すると誰かに《呪い》の変調を与えることができる。失敗すると《呪い》の変調を受ける。 diff --git a/src/assets/extratables/ShinobiGami_OTKRT.txt b/src/assets/extratables/ShinobiGami_OTKRT.txt deleted file mode 100644 index 479056f13..000000000 --- a/src/assets/extratables/ShinobiGami_OTKRT.txt +++ /dev/null @@ -1,31 +0,0 @@ -1D30:お宝表 - 1:あ - 2:い - 3:う - 4:え - 5:お - 6:か - 7:き - 8:く - 9:け -10:こ -11:さ -12:し -13:す -14:せ -15:そ -16:た -17:ち -18:つ -19:て -20:と -21:な -22:に -23:ぬ -24:ね -25:の -26:は -27:ひ -28:ふ -29:へ -30:ほ diff --git a/src/assets/extratables/ShinobiGami_PLST.txt b/src/assets/extratables/ShinobiGami_PLST.txt deleted file mode 100644 index 52fcb5c9e..000000000 --- a/src/assets/extratables/ShinobiGami_PLST.txt +++ /dev/null @@ -1,7 +0,0 @@ -1D6:培養プラントシーン表 -1:培養槽。あなたそっくりの人間が謎の液体に浸かっている。あなたは本当に本物のあなただろうか?《記憶術》で判定を行い、失敗すると《忘却》の変調を受ける。 -2:巨大なガラス管の中に冒涜的な生物が蠢く実験室。《意気》で判定を行い、失敗すると《マヒ》の変調を受ける。 -3:試験管に浮かぶDr斜歯のクローン脳が大量にあるクローン施設。 -4:各流派頭領が浮かぶ試験管。ランダムな特技を決定し判定を行う。決定した特技が自分の得意分野の場合、成功すると兵糧丸を1つ入手する。得意分野でない場合、失敗すると接近戦ダメージを1点受ける。 -5:無人の実験室。中央には破壊された培養器があり、人とも獣ともつかない濡れた足跡が扉へと続いている。 -6:美少年改造プラント。このシーンに登場した者は《変装術》で判定すること。成功した場合、美少年になることができる。 diff --git a/src/src_bcdice/CardTrader.rb b/src/src_bcdice/CardTrader.rb deleted file mode 100644 index 09882f543..000000000 --- a/src/src_bcdice/CardTrader.rb +++ /dev/null @@ -1,1544 +0,0 @@ -#!/perl/bin/ruby -Ku -# -*- coding: utf-8 -*- - -require 'configBcDice.rb' - -$ircNickRegExp = '[A-Za-z\d\-\[\]\\\'^{}_]+' - -class CardTrader - OK_RESULT = '_OK_'.freeze - NG_RESULT = '_NG_'.freeze - - # カード置き場数。0なら無し。 - # @return [Integer] - attr_accessor :card_place - # 場札のタップ処理の必要があるか? - # @return [Boolean] - attr_accessor :canTapCard - - # デッキの数 - # @return [Integer] - attr_reader :numOfDecks - # ジョーカーの数 - # @return [Integer] - attr_reader :numOfJokers - - def initialize - initValues - - @card_channels = {} - @card_spell = [ - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', - 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', - ]; # 64種類の記号 - end - - # カードをデフォルトに戻す - def initValues - @cardTitles = {} - @cardRegExp = '[DHSCJdhscj][\d]+'; # カード指定文字列の正規表現 - @deal_cards = {'card_played' => []} - - set1Deck1Joker - self.card_place = 1 - @canTapCard = true - end - - # 1つのデッキ、1つのジョーカーを使う - # @return [self] - def set1Deck1Joker - @card_val = [ - 'S1', 'S2', 'S3', 'S4', 'S5', 'S6', 'S7', 'S8', 'S9', 'S10', 'S11', 'S12', 'S13', - 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9', 'H10', 'H11', 'H12', 'H13', - 'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'D10', 'D11', 'D12', 'D13', - 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10', 'C11', 'C12', 'C13', - 'J1', - ] - @cardRest = @card_val.clone - - @numOfDecks = 1 - @numOfJokers = 1 - - self - end - - # 1つのデッキ、2つのジョーカーを使う - # @return [self] - def set1Deck2Jokers - @card_val = [ - 'S1', 'S2', 'S3', 'S4', 'S5', 'S6', 'S7', 'S8', 'S9', 'S10', 'S11', 'S12', 'S13', - 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9', 'H10', 'H11', 'H12', 'H13', - 'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'D10', 'D11', 'D12', 'D13', - 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10', 'C11', 'C12', 'C13', - 'J1', 'J0', - ] - @cardRest = @card_val.clone - - @numOfDecks = 1 - @numOfJokers = 2 - - self - end - - # 2つのデッキ、2つのジョーカーを使う - # @return [self] - def set2Decks2Jokers - @card_val = [ - 'S1', 'S2', 'S3', 'S4', 'S5', 'S6', 'S7', 'S8', 'S9', 'S10', 'S11', 'S12', 'S13', - 's1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', 's10', 's11', 's12', 's13', - 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9', 'H10', 'H11', 'H12', 'H13', - 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8', 'h9', 'h10', 'h11', 'h12', 'h13', - 'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'D10', 'D11', 'D12', 'D13', - 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'd10', 'd11', 'd12', 'd13', - 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10', 'C11', 'C12', 'C13', - 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'c10', 'c11', 'c12', 'c13', - 'J1', 'J2', 'J3', 'J4', - ] - @cardRest = @card_val.clone - - @numOfDecks = 2 - @numOfJokers = 2 - - self - end - - def setBcDice(bcDice) - @bcdice = bcDice - end - - def setNick(nick_e) - @nick_e = nick_e - end - - def setTnick(t) - @tnick = t - end - - def readCardSet() - readExtraCard(@tnick) - sendMessageToOnlySender("カードセットの読み込み成功しました") - rescue StandardError => e - sendMessageToOnlySender(e.to_s) - end - - def sendMessage(to, message) - @bcdice.sendMessage(to, message) - end - - def sendMessageToOnlySender(message) - @bcdice.sendMessageToOnlySender(message) - end - - def sendMessageToChannels(message) - @bcdice.sendMessageToChannels(message) - end - - ########################################################################### - # ** ゲーム設定関連 - ########################################################################### - - # 専用カードセットのロード - def readExtraCard(cardFileName) - return if cardFileName.nil? - return if cardFileName.empty? - - debug("Loading Cardset『#{cardFileName}』...\n") - - @card_val = [] - - begin - lines = File.readlines(cardFileName) - - lines.each do |line| - next unless /^(\d+)->(.+)$/ =~ line # 番号->タイトル - - cardNumber = Regexp.last_match(1).to_i - cardTitle = Regexp.last_match(2) - @card_val.push(cardNumber) - @cardTitles[cardNumber] = cardTitle - end - - @cardRegExp = '[\d]+'; # カード指定文字列の正規表現 - @cardRest = @card_val.clone - @deal_cards = {'card_played' => []} - - debug("Load Finished...\n") - rescue StandardError => e - raise "カードデータを開けません :『#{cardFileName}』#{e}" - end - end - - # カード機能のコマンドを実行する - # @param [String] arg コマンド - # @param [String] channel IRCチャンネル - def executeCard(arg, channel) - @channel = channel - - debug('executeCard arg', arg) - return unless /(c-)/ =~ arg - - count = 0 - - case arg - - # カードのシャッフル - when /(c-shuffle|c-sh)($|\s)/ - output_msg = shuffleCards - sendMessage(@channel, output_msg) - - # カードを引く - when /c-draw(\[[\d]+\])?($|\s)/ - drawCardByCommandText(arg) - - # オープンでカードを引く - when /(c-odraw|c-opend)(\[[\d]+\])?($|\s)/ - value = Regexp.last_match(2) - drawCardOpen(value) - - # 手札と場札を見る - when /c-hand($|\s)/ - sendMessageToOnlySender(getHandAndPlaceCardInfoText(arg, @nick_e)) - - # 相手の手札と場札を見る - when /c-vhand\s*(#{$ircNickRegExp})($|\s)/ - name = Regexp.last_match(1) - debug("c-vhand name", name) - messageText = ("#{name} の手札は" + getHandAndPlaceCardInfoText("c-hand", name) + "です") - sendMessageToOnlySender(messageText) - - # カードを出す / カードを場に出す - when /c-play(\d*)\[#{@cardRegExp}(,#{@cardRegExp})*\]($|\s)/ - playCardByCommandText(arg) - - # 捨てカードを山に戻す - when /(c-rshuffle|c-rsh)($|\s)/ - output_msg = returnCards - sendMessage(@channel, output_msg) - - # 全員の場のカードを捨てる - when /c-clean($|\s)/ - output_msg = clearAllPlaceAllPlayerCards - sendMessage(@channel, output_msg) - - # @todo 説明文に記載されていないコマンド - when /c-review($|\s)/ - output_msg = reviewCards - sendMessageToOnlySender(output_msg) - - # 枚数配置を見る - when /c-check($|\s)/ - out_msg, place_msg = getAllCardLocation - sendMessage(@channel, out_msg) - sendMessage(@channel, place_msg) - - # カードを相手に一枚渡す / 場のカードを相手に渡す - when /c-pass(\d)*(\[#{@cardRegExp}(,#{@cardRegExp})*\])?\s*(#{$ircNickRegExp})($|\s)/ - sendTo = Regexp.last_match(4) - transferCardsByCommandText(arg, sendTo) - - # カードを選んで引く - when /c-pick\[#{@cardRegExp}(,#{@cardRegExp})*\]($|\s)/ - pickupCardCommandText(arg) - - # 捨てたカードを手札に戻す / 置いたカードを手札に戻す - # FIXME - when /c-back(\d)*\[#{@cardRegExp}(,#{@cardRegExp})*\]($|\s)/ - backCardCommandText(arg) - - # カードを配る - when /c-deal(\[[\d]+\]|\s)\s*(#{$ircNickRegExp})($|\s)/ - count = Regexp.last_match(1) - targetNick = Regexp.last_match(2) - dealCard(count, targetNick) - - # カードを見てから配る - when /c-vdeal(\[[\d]+\]|\s)\s*(#{$ircNickRegExp})($|\s)/ - count = Regexp.last_match(1) - targetNick = Regexp.last_match(2) - lookAndDealCard(count, targetNick) - - # カードを捨てる / 場のカードを選んで捨てる - when /c-(dis|discard)(\d)*\[#{@cardRegExp}(,#{@cardRegExp})*\]($|\s)/ - discardCardCommandText(arg) - - # カードを相手の場に出す / 場のカードを相手の場に出す - when /c-place(\d)*(\[#{@cardRegExp}(,#{@cardRegExp})*\])?\s*(#{$ircNickRegExp})($|\s)/ - targetNick = Regexp.last_match(4) - sendCardToTargetNickPlaceCommandText(arg, targetNick) - - # 場のカードをタップする / 場のカードをアンタップする - when /c-(un)?tap(\d+)\[#{@cardRegExp}(,#{@cardRegExp})*\]($|\s)/ - tapCardCommandText(arg) - - # 復活の呪文を表示する / 復活の呪文を唱える - when /c-spell(\[(#{$ircNickRegExp}[^\]]+?)\])?($|\s)/ - spellText = Regexp.last_match(2) - printCardRestorationSpellResult(spellText) - - # 山札からめくって捨てる - when /(c-mil(stone)?(\[[\d]+\])?)($|\s)/ - commandText = Regexp.last_match(1) - printMilStoneResult(commandText) - end - end - - #################### 山札関連 ######################## - - # デッキと手札の初期化 - def shuffleCards - @cardRest = @card_val.clone - @deal_cards = {'card_played' => []} - return "シャッフルしました" - end - - #################### ドロウ ######################## - def drawCardByCommandText(arg) - debug("drawCardByCommandText arg", arg) - - cards = drawCard(arg) - debug("drawCardByCommandText cards", cards) - - if !cards.empty? - sendMessageToOnlySender(getCardsTextFromCards(cards)) - sendMessage(@channel, "#{@nick_e}: #{cards.length}枚引きました") - else - sendMessage(@channel, "カードが残っていません") - end - - @card_channels[@nick_e] ||= @channel - end - - def drawCardOpen(value) - cmd = "c-draw" - cmd += value unless value.nil? - - cards = drawCard(cmd) - - if !cards.empty? - sendMessage(@channel, "#{@nick_e}: " + getCardsTextFromCards(cards) + 'を引きました') - else - sendMessage(@channel, "カードが残っていません") - end - - @card_channels[@nick_e] ||= @channel - end - - def drawCard(command, destination = nil) - destination ||= @nick_e - destination = destination.upcase - - debug("drawCard command, destination", command, destination) - outputCards = [] - - debug("@cardRest.length", @cardRest.length) - if @cardRest.length <= 0 - return outputCards - end - - unless /(c-draw(\[([\d]+)\])?)/ =~ command - return outputCards - end - - count = Regexp.last_match(3) - count ||= 1 - count = count.to_i - debug("draw count", count) - - count.times do |_i| - break if @cardRest.length <= 0 - - card = ejectOneCardRandomFromCards(@cardRest) - break if card.nil? - - @deal_cards[destination] ||= [] - @deal_cards[destination] << card - - outputCards << card - end - - return outputCards - end - - def pickupCardCommandText(string) - debug('pickupCardCommandText string', string) - - count, output_msg = pickupCard(string) - if count > 0 - sendMessage(@channel, "#{@nick_e}: #{count}枚選んで引きました") - end - if output_msg != "" - sendMessage(@channel, "[" + getCardsText(output_msg) + "]がありません") - end - sendMessageToOnlySender(getHandAndPlaceCardInfoText("Auto")) - end - - def pickupCard(string) - okCount = 0 - ngCardList = [] - - if /(c-pick\[((,)?#{@cardRegExp})+\])/ =~ string - cardName = Regexp.last_match(1) - okCount, ngCardList = pickupCardByCardName(cardName) - end - - ngCardText = ngCardList.join(",") - - return okCount, ngCardText; # 抜き出せた枚数とデッキに無かったカードを返す - end - - def pickupCardByCardName(cardName) - okCount = 0 - ngCardList = [] - - if /\[(#{@cardRegExp}(,#{@cardRegExp})*)\]/ =~ cardName - cards = Regexp.last_match(1).split(/,/) - okCount, ngCardList = pickupCardByCards(cards) - end - - return okCount, ngCardList - end - - def pickupCardByCards(cards) - okCount = 0 - ngCardList = [] - - cards.each do |card| - string = pickupOneCard(card) - if string == OK_RESULT - okCount += 1 - else - ngCardList << string - end - end - - return okCount, ngCardList - end - - def pickupOneCard(card) - if @cardRest.length <= 0 - return '山札' - end - - targetCard = card.upcase; # デッキから抜き出すカードの指定 - destination = @nick_e.upcase - - isDelete = @cardRest.delete_if { |c| c == targetCard } - - if isDelete - @deal_cards[destination] ||= [] - @deal_cards[destination] << targetCard - return OK_RESULT - else - return targetCard; # 無かったカードを返す - end - end - - def backCardCommandText(command) - count, output_msg = backCard(command) - - if count > 0 - sendMessage(@channel, "#{@nick_e}: #{count}枚戻しました") - end - - if output_msg != "" - sendMessage(@channel, "[#{getCardsText(output_msg)}]がありません") - else - sendMessageToOnlySender(getHandAndPlaceCardInfoText("Auto")) - end - end - - def backCard(command) - okCount = 0 - ngCards = [] - - if /(c-back(\d*)\[((,)?#{@cardRegExp})+\])/ =~ command - commandset = Regexp.last_match(1) - place = Regexp.last_match(2).to_i - okCount, ngCards = backCardByCommandSetAndPlace(commandset, place) - end - - return okCount, ngCards.join(',') - end - - def backCardByCommandSetAndPlace(commandset, place) - okCount = 0 - ngCards = [] - destination = @nick_e.upcase - - if /\[(#{@cardRegExp}(,#{@cardRegExp})*)\]/ =~ commandset - cards = Regexp.last_match(1).split(/,/) - - cards.each do |card| - string = backOneCard(card, destination, place) - if string == OK_RESULT - okCount += 1 - else - ngCards << string - end - end - end - - return okCount, ngCards; # 戻せた枚数とNGだったカードを返す - end - - def backOneCard(targetCard, destination, place) - if getBurriedCard <= 0 - return '捨て札'; # 捨て札が無い - end - - targetCard = targetCard.upcase - - if @card_place > 0 # 場があるときのみ処理 - string = transferOneCard(targetCard, "#{place}#{destination}", destination); # 場から手札への移動 - return OK_RESULT if string == OK_RESULT - end - - @deal_cards['card_played'] ||= [] - cards = @deal_cards['card_played'] - isDelete = cards.delete_if { |i| i == targetCard } - - if isDelete - @deal_cards[destination] << targetCard - return OK_RESULT - end - - return "${targetCard}"; # 戻せるカードが無かったらNGのカードを返す - end - - def dealCard(count, targetNick, isLook = false) - debug("dealCard count, targetNick", count, targetNick) - - cards = drawCard("c-draw#{count}", targetNick) - if !cards.empty? - sendDealResult(targetNick, count, getCardsTextFromCards(cards), isLook) - else - sendMessage(@channel, "カードが残っていません") - end - - @card_channels[targetNick] ||= @channel - - return count - end - - def sendDealResult(targetNick, count, output_msg, isLook) - sendMessage(targetNick, output_msg) - if isLook - sendMessage(@nick_e, "#{targetNick} に #{output_msg} を配りました") - end - sendMessage(@channel, "#{@nick_e}: #{targetNick}に#{count}枚配りました") - end - - def lookAndDealCard(count, targetNick) - isLook = true - dealCard(count, targetNick, isLook) - end - - def discardCardCommandText(commandText) - count, output_msg, _card_ok = discardCards(commandText) - - if count > 0 - sendMessage(@channel, "#{@nick_e}: #{count}枚捨てました") - - unless @cardTitles.empty? - cardText = getCardsText($card_ok) - sendMessage(@channel, "[#{cardText}]") - end - end - - if output_msg != "" - cardText = getCardsText(output_msg) - sendMessageToOnlySender("[#{cardText}]がありません") - else - sendMessageToOnlySender(getHandAndPlaceCardInfoText("Auto")) - end - end - - #################### プレイ ######################## - def playCardByCommandText(arg) - debug('c-play pattern', arg) - - count, output_msg, _card_ok = playCard(arg) - if count > 0 - sendMessage(@channel, "#{@nick_e}: #{count}枚出しました") - sendMessage(@channel, "[" + getCardsText($card_ok) + "]") unless @cardTitles.empty? - end - if output_msg != "" - debug("output_msg", output_msg) - sendMessage(@channel, "[" + getCardsText(output_msg) + "]は持っていません") - end - sendMessageToOnlySender(getHandAndPlaceCardInfoText("Auto", @nick_e)) - end - - def playCard(cardPlayCommandText) - debug('playCard cardPlayCommandText', cardPlayCommandText) - - okCardCount = 0 - okCardList = [] - ngCardList = [] - - if /(c-play(\d*)\[((,)?#{@cardRegExp})+\])/ =~ cardPlayCommandText - cardsBlockText = Regexp.last_match(1) - place = Regexp.last_match(2).to_i - debug("cardsBlockText", cardsBlockText) - debug("place", place) - okCardList, ngCardList = playCardByCardsBlockTextAndPlaceNo(cardsBlockText, place) - debug("okCardList", okCardList) - debug("ngCardList", ngCardList) - - okCardCount = okCardList.length - okCardText = okCardList.join(',') - ngCardText = ngCardList.join(',') - end - - # 出せた枚数、NGだったカード、出せたカード - return okCardCount, ngCardText, okCardText - end - - def playCardByCardsBlockTextAndPlaceNo(cardsBlockText, place) - okCardList = [] - ngCardList = [] - - if /\[(#{@cardRegExp}(,#{@cardRegExp})*)\]/ =~ cardsBlockText - cardsText = Regexp.last_match(1) - okCardList, ngCardList = playCardByCardsTextAndPlaceNo(cardsText, place) - end - - return okCardList, ngCardList - end - - def playCardByCardsTextAndPlaceNo(cardsText, place) - cards = cardsText.split(/,/) - - okCardList = [] - ngCardList = [] - - cards.each do |card| - okList, ngList = playCardByCardAndPlaceNo(card, place) - - okCardList += okList - ngCardList += ngList - end - - return okCardList, ngCardList - end - - def playCardByCardAndPlaceNo(card, place) - debug("playCardByCardAndPlaceNo card, place", card, place) - - okList = [] - ngList = [] - - result = playOneCard(card, place) - debug("playOneCard result", result) - - if result == OK_RESULT - okList << card - else - ngList << result - end - - return okList, ngList - end - - def playOneCard(card, place) - debug("playOneCard card, place", card, place) - - destination = @nick_e.upcase - result = "" - - if place > 0 - debug("playOneCard place > 0") - result = transferOneCard(card, destination, "#{place}#{destination}"); # 場に出す処理 - else - debug("playOneCard place <= 0") - result = discardOneCard(card, place, destination); # 場を使わないときは捨て札扱い - end - - if result == OK_RESULT - return result - else - return card - end - end - - def discardCards(command, destination = nil) - debug("discardCards command, destination", command, destination) - - destination = @nick_e if destination.nil? - destination = destination.upcase - - okList = [] - ngList = [] - - if /(c-(dis|discard)(\d*)\[((,)?#{@cardRegExp})+\])/ =~ command - debug("discardCards reg OK") - commandSet = Regexp.last_match(1) - place = Regexp.last_match(3).to_i - okList, ngList = discardCardsByCommandSetAndPlaceAndDestination(commandSet, place, destination) - end - - ngText = ngList.join(',') - okText = okList.join(',') - - return okList.length, ngText, okText - end - - def discardCardsByCommandSetAndPlaceAndDestination(commandSet, place, destination) - okList = [] - ngList = [] - - if /\[(#{@cardRegExp}(,#{@cardRegExp})*)\]/ =~ commandSet - cards = Regexp.last_match(1).split(/,/) - okList, ngList = discardCardsByCardsAndPlace(cards, place, destination) - end - - return okList, ngList - end - - def discardCardsByCardsAndPlace(cards, place, destination) - okList = [] - ngList = [] - - cards.each do |card| - result = discardOneCard(card, place, destination) - - if result == OK_RESULT - okList << card - else - ngList << result - end - end - - return okList, ngList - end - - def discardOneCard(card, place, destination) - card = card.upcase - destination = destination.upcase - destination = getDestinationWhenPlaceIsNotHand(place, destination) - - this_cards = [] - rest_cards = [] - - temp_cards = getCardsFromDealCards(destination) - - result = temp_cards.reject! { |i| i == card } - isTargetCardInHand = !result.nil? - if isTargetCardInHand - this_cards << card - else - rest_cards << card - end - - debug("isTargetCardInHand", isTargetCardInHand) - - if isTargetCardInHand - debug("isTargetCardInHand OK, so set card info") - @deal_cards[destination] ||= [] - @deal_cards[destination] += rest_cards - @deal_cards['card_played'] ||= [] - @deal_cards['card_played'] += this_cards - debug("@deal_cards", @deal_cards) - - return OK_RESULT - else - return card; # 指定のカードが無いので、無いカードを返す - end - end - - def getDestinationWhenPlaceIsNotHand(place, destination) - if place > 0 - # 場札から出すときは「出した人」を場札に書き替え - destination = "#{place}#{destination}" - return destination - end - - return destination - end - - def getCardsFromDealCards(destination) - debug('getCardsFromDealCards destination', destination) - debug('@deal_cards', @deal_cards) - debug('@deal_cards[destination]', @deal_cards[destination]) - - if @deal_cards[destination].nil? - debug('getCardsFromDealCards empty') - return [] - end - - cards = @deal_cards[destination] - debug('getCardsFromDealCards cards', cards) - return cards - end - - #################### パス ######################## - - def transferCardsByCommandText(commandText, sendTo) - debug("transferCardsByCommandText commandText, sendTo", commandText, sendTo) - count, output_msg = transferCards(commandText) - - if count < 0 - sendMessage(@channel, "#{@nick_e}: 相手が登録されていません") - else - if output_msg != "" - sendMessage(@channel, "[" + getCardsText(output_msg) + "]がありません") - end - if count > 0 - sendMessage(@channel, "#{@nick_e}: #{count}枚渡しました") - debug('transferCardsByCommandText sendTo', sendTo) - sendMessage(sendTo, getHandAndPlaceCardInfoText("Auto", sendTo)) - end - end - - sendMessageToOnlySender(getHandAndPlaceCardInfoText("Auto")) - end - - def transferCards(command) - debug('transferCards command', command) - - okCount = 0 - ngCardList = [] - - if /(c-pass(\d*)(\[(((,)?#{@cardRegExp})*)\])?)\s*(#{$ircNickRegExp})/ =~ command - destination = Regexp.last_match(7).upcase - commandset = Regexp.last_match(1) - place = Regexp.last_match(2).to_i - place ||= 0 - okCount, ngCardList = transferCardsByCommand(commandset, place, destination) - - debug('transferCardsByCommand resutl okCount, ngCardList', okCount, ngCardList) - end - - ngCardText = ngCardList.join(",") - return okCount, ngCardText; # 渡せた枚数とNGなカードを返す - end - - def transferCardsByCommand(commandset, place, destination) - debug('transferCardsByCommand commandset, place, destination', commandset, place, destination) - - nick_e = @nick_e - - if place > 0 - nick_e = "#{place}#{nick_e}" - end - - okCount = 0 - ngCardList = [] - debug('LINE', __LINE__) - - cards = [''] - if /\[(#{@cardRegExp}(,#{@cardRegExp})*)\]/ =~ commandset - cards = Regexp.last_match(1).split(/,/) - end - - debug('transferCardsByCommand cards', cards) - okCount, ngCardList = transferCardsByCards(cards, destination, nick_e) - - debug('LINE', __LINE__) - - return okCount, ngCardList - end - - def transferCardsByCards(cards, destination, nick_e) - okCount = 0 - ngCardList = [] - - cards.each do |card| - debug('transferCardsByCards card', card) - result = transferOneCard(card, nick_e, destination) - - debug('transferOneCard result', result) - - case result - when NG_RESULT - return -1, ['渡す相手が登録されていません'] - when OK_RESULT - okCount += 1 - else - ngCardList << result - end - end - - return okCount, ngCardList - end - - def transferOneCard(card, from, toSend) - debug('transferOneCard card, from, toSend', card, from, toSend) - - targetCard = card.upcase - toSend = toSend.upcase - from = from.upcase - - isTargetCardInHand = false - restCards = [] - thisCard = "" - - @deal_cards[from] ||= [] - cards = @deal_cards[from] - debug("from, cards, @deal_cards", from, cards, @deal_cards) - - if targetCard == '' - debug("カード指定がないのでランダムで一枚渡す") - thisCard = ejectOneCardRandomFromCards(cards) - isTargetCardInHand = true - restCards = @deal_cards[from] - else - debug("カード指定あり targetCard", targetCard) - thisCard, restCards, isTargetCardInHand = - transferTargetCard(targetCard, cards, toSend, from) - end - - debug("transferOneCard isTargetCardInHand", isTargetCardInHand) - - unless isTargetCardInHand - return targetCard - end - - debug("transferOneCard @deal_cards", @deal_cards) - debug("transferOneCard toSend", toSend) - - if @deal_cards[toSend] - debug("alreadyRegisted") - # debug('相手は登録済み') - @deal_cards[toSend] << thisCard - else - debug("NOT registed") - # debug('相手は未登録済み') - isSuccess = transferTargetCardToNewMember(toSend, thisCard) - debug('isSuccess', isSuccess) - return NG_RESULT unless isSuccess - end - - @deal_cards[from] = restCards - debug("transferOneCard @deal_cards", @deal_cards) - - return OK_RESULT - end - - def ejectOneCardRandomFromCards(cards) - debug('ejectOneCardRandomFromCards cards.length', cards.length) - - return nil if cards.empty? - - cardNumber, = @bcdice.roll(1, cards.length) - cardNumber -= 1 - debug("cardNumber", cardNumber) - - card = cards.delete_at(cardNumber) - debug("card", card) - - return card - end - - def transferTargetCard(targetCard, cards, toSend, from) - debug('transferTargetCard(targetCard, cards, toSend, from)', targetCard, cards, toSend, from) - - thisCard = "" - restCards = [] - isTargetCardInHand = false - - cards.each do |card| - if !isTargetCardInHand && (card == targetCard) - isTargetCardInHand = true - thisCard = card - else - restCards << card - end - end - - debug("restCards", restCards) - return thisCard, restCards, isTargetCardInHand - end - - def transferTargetCardToNewMember(destination, thisCard) - debug("transferTargetCardToNewMember destination, thisCard", destination, thisCard) - debug("@card_place", @card_place) - - isSuccess = false - - if @card_place > 0 - - if /^\d+(.+)/ =~ destination - # 渡すNickが数字で始まっていたら、場に出す処理の最初の一枚目 - placeName = Regexp.last_match(1) - debug("placeName", placeName) - - if @deal_cards[placeName] - # 手札は登録されていたら宛先間違いではない - @deal_cards[destination] ||= [] - @deal_cards[destination] << thisCard - isSuccess = true - end - end - end - - return isSuccess - end - - def sendCardToTargetNickPlaceCommandText(commandText, targetNick) - debug('sendCardToTargetNickPlaceCommandText commandText, targetNick', commandText, targetNick) - okCardList, ngCardList = getSendCardToTargetNickPlace(commandText, targetNick) - debug('getSendCardToTargetNickPlace okCardList, ngCardList', okCardList, ngCardList) - - if okCardList.length < 0 - - sendMessage(@channel, "#{@nick_e}: 相手が登録されていません") - return - end - - unless ngCardList.empty? - ngCardText = getCardsTextFromCards(ngCardList) - sendMessage(@channel, "[#{ngCardText}]がありません") - return - end - - unless okCardList.empty? - printRegistCardResult(targetNick, okCards) - end - - sendMessageToOnlySender(getHandAndPlaceCardInfoText("Auto")) - end - - # 相手の場にカードを置く - def getSendCardToTargetNickPlace(commandText, _nick_e) - ngCardList = [] - okCardList = [] - - debug("commandText", commandText) - if /(c-place(\d*)(\[(((,)?#{@cardRegExp})*)\])?)\s*(#{$ircNickRegExp})/ =~ commandText - cardset = Regexp.last_match(1) - placeNumber = Regexp.last_match(2).to_i - destination = Regexp.last_match(7).upcase - - getSendCardToTargetNickPlaceByCardSetAndDestination(cardset, placeNumber, destination) - end - - return okCardList, ngCardList - end - - def getSendCardToTargetNickPlaceByCardSetAndDestination(cardset, placeNumber, destination) - debug('getSendCardToTargetNickPlaceByCardSetAndDestination cardset, placeNumber, destination', cardset, placeNumber, destination) - - debug("今のところ場が1つしかないので相手の場は決めうち") - toSend = "1#{destination}" - debug("toSend", toSend) - - from = @nick_e - if placeNumber > 0 - from = "#{placeNumber}#{from}" - end - debug("from", from) - - if /\[(#{@cardRegExp}(,#{@cardRegExp})*)\]/ =~ cardset - cards = Regexp.last_match(1).split(/,/) - okCardList, ngCardList = getSendCardToTargetNickPlaceByCards(cards, from, toSend) - end - - return okCardList, ngCardList - end - - def getSendCardToTargetNickPlaceByCards(cards, destination, toSend) - debug("getSendCardToTargetNickPlaceByCards cards, destination, toSend", destination, toSend) - okCardList = [] - ngCardList = [] - - cards.each do |card| - result = transferOneCard(card, destination, toSend) - - case result - when NG_RESULT - return -1, '渡す相手が登録されていません' - when OK_RESULT - okCardList << card - else - ngCardList << result - end - end - - return okCardList, ngCardList - end - - def printRegistCardResult(targetNick, okCards) - sendMessage(@channel, "#{@nick_e}: #{okCards.length}枚場に置きました") - - unless @cardTitles.empty? - cardText = getCardsTextFromCards(okCards) - sendMessage(@channel, "[#{cardText}]") - end - - sendMessage(targetNick, getHandAndPlaceCardInfoText("Auto", targetNick)) - end - - #################### タップ ######################## - def tapCardCommandText(commandText) - debug("tapCardCommandText commandText", commandText) - - okList, ngList, isUntap = tapCard(commandText) - - unless okList.empty? - tapTypeName = (isUntap ? 'アンタップ' : 'タップ') - sendMessage(@channel, "#{@nick_e}: #{okList.length}枚#{tapTypeName}しました") - sendMessage(@channel, "[#{getCardsTextFromCards(okList)}]") unless @cardTitles.empty? - end - - unless ngList.empty? - sendMessage(@channel, "[#{getCardsTextFromCards(ngList)}]は場にありません") - end - - sendMessageToOnlySender(getHandAndPlaceCardInfoText("Auto", @nick_e)) - end - - def tapCard(command) - okCardList = [] - ngCardList = [] - - unless @canTapCard && @card_place - return okCardList, ngCardList - end - - unless /(c-(un)?tap(\d+)\[((,)?#{@cardRegExp})+\])/ =~ command - return okCardList, ngCardList - end - - place = Regexp.last_match(3).to_i - isUntap = Regexp.last_match(2) - cardsText = Regexp.last_match(1) - - okCardList, ngCardList = tapCardByCardsTextAndPlace(cardsText, place, isUntap) - return okCardList, ngCardList, isUntap - end - - def tapCardByCardsTextAndPlace(cardsText, place, isUntap) - okCardList = [] - ngCardList = [] - - if /\[(#{@cardRegExp}(,#{@cardRegExp})*)\]/ =~ cardsText - cards = Regexp.last_match(1).split(/,/) - cards.each do |card| - okCard, ngCard = tapOneCardByCardAndPlace(card, place, isUntap) - - okCardList << okCard unless okCard.nil? - ngCardList << ngCard unless ngCard.nil? - end - end - - return okCardList, ngCardList - end - - def tapOneCardByCardAndPlace(card, place, isUntap) - card = card.upcase - result = "" - - # return result unless(@canTapCard > 0) - # タップ処理をカードの場の移動で扱う(90度タップ、180度タップが将来必要になるかも) - - nick_e_original = @nick_e - @nick_e = @nick_e.upcase - - nick_to = "" - if isUntap - destination = "#{place * 2 - 1}#{@nick_e}" - nick_to = "#{place * 2}#{@nick_e}" - else - destination = "#{place * 2}#{@nick_e}" - nick_to = "#{place * 2 - 1}#{@nick_e}" - end - - result = transferOneCard(card, nick_to, destination) - - @nick_e = nick_e_original - - if result == OK_RESULT - return card, nil - else - return nil, card - end - end - - #################### 山札関連 ######################## - def printMilStoneResult(commandText) - count, output_msg = getCardMilstone(commandText) - - if count > 0 - sendMessage(@channel, "#{@nick_e}: #{getCardsText(output_msg)}が出ました") - else - sendMessage(@channel, "カードが残っていません") - end - end - - # 山からカードをめくって即座に捨てる - def getCardMilstone(commandText) - command = "c-draw" - count = 0 - if /\[(\d+)\]/ =~ commandText - count = Regexp.last_match(1).to_i - command += "[#{count}]" - end - - cards = drawCard(command) - debug("cards", cards) - - text = "" - - if !cards.empty? - cardInfo = getCardsTextFromCards(cards) - okCount, ngCount, text = discardCards("c-discard[#{cardInfo}]") - debug("discardCards okCount, ngCount, text", okCount, ngCount, text) - count = okCount - else - count = 0 - end - - debug("count", count) - debug("cardInfo", cardInfo) - - return count, cardInfo; # めくれた枚数と出たカードを返す - end - - # 全員の場に出たカードを捨てる(手札はそのまま) - def clearAllPlaceAllPlayerCards - @deal_cards.each do |place, cards| - clearAllPlayerCardsWhenPlayedPlace(place, cards) - end - - return '場のカードを捨てました' - end - - def clearAllPlayerCardsWhenPlayedPlace(place, cards) - if place =~ /^\d+/ # 最初が数値=場に出ているカードなので、カードを全部捨てて場も削除 - clearAllPlayerCards(place, cards) - end - end - - def clearAllPlayerCards(place, cards) - cardset = cards.join(',') - discardCards("c-discard[#{cardset}]", place) - - @deal_cards[place] ||= [] - @deal_cards[place].clear - end - - # 捨て札をデッキに戻す - def returnCards - @deal_cards['card_played'] ||= [] - cards = @deal_cards['card_played'] - - while !cards.empty? - @cardRest.push(cards.shift) - end - - return "捨て札を山に戻しました" - end - - def getBurriedCard - @deal_cards['card_played'] ||= [] - cards = @deal_cards['card_played'] - - cards.length - end - - #################### その他 ######################## - def reviewCards - @cardRest.join(',') - end - - def getAllCardLocation # 今のカード配置を見る - allText = "山札:#{@cardRest.length}枚 捨札:#{getBurriedCard}枚" - allPlaceText = "" - - @deal_cards.each do |place, cards| - next if place == 'card_played' - - text, placeText = getCardLocationOnPlace(place, cards) - allText += text - allPlaceText += placeText - end - - return allText, allPlaceText; # 山札&捨て札&各自の手札枚数表示 と 各自の場札表示の配列を返す。(表示レイアウトの関係) - end - - def getCardLocationOnPlace(place, cards) - text = "" - placeText = "" - - if place =~ /^(\d+)(#{$ircNickRegExp})/ - placeNumber = Regexp.last_match(1) - cnick = Regexp.last_match(2) - placeText = getCardLocationOnNumberdPlace(cards, placeNumber, cnick) - else - text = " #{place}:#{cards.length}枚" - end - - return text, placeText - end - - def getCardLocationOnNumberdPlace(cards, placeNumber, cnick) - cardText = getCardsText(cards) - if isTapCardPlace(placeNumber) - return " #{cnick}のタップした場札:#{cardText}" - else - return " #{cnick}の場札:#{cardText}" - end - end - - def getHandAndPlaceCardInfoText(str, destination = nil) # 自分の手札と場札の確認 - debug("getHandAndPlaceCardInfoText(str, destination)", str, destination) - - destination = @nick_e if destination.nil? - destination = destination.upcase - - hand = getHandCardInfoText(destination) - debug("hand", hand) - - place = getPlaceCardInfoText(destination) - debug("place", place) - - return hand + place - end - - def getHandCardInfoText(destination) - destination = destination.upcase - debug("getHandCardInfoText destination", destination) - - out_msg = getDealCardsText(destination) - - if out_msg.empty? - out_msg = "カードを持っていません" - end - - return out_msg - end - - def getDealCardsText(destination) - debug("getDealCardsText destination", destination) - - cards = @deal_cards[destination] - debug("@deal_cards", @deal_cards) - debug("getDealCardsText cards", cards) - - return '' if cards.nil? - - cardsText = getCardsTextFromCards(cards) - - return "[ #{cardsText} ]" - end - - # ソートサブルーチン - def compareCard(a, b) - if a =~ /[^\d]/ - compareCardByCardNumber(a, b) - else - a <=> b - end - end - - def compareCardByCardNumber(a, b) - /([^\d]+)(\d+)/ =~ a - a1 = Regexp.last_match(1) - a2 = Regexp.last_match(2) - - /([^\d]+)(\d+)/ =~ b - b1 = Regexp.last_match(1) - b2 = Regexp.last_match(2) - - result = [a1, a2] <=> [b1, b2] - - return result - end - - def getPlaceCardInfoText(destination) - destination = destination.upcase - - out_msg = "" - - unless @card_place > 0 - return out_msg - end - - place_max = @card_place - place_max *= 2 if @canTapCard - - debug("place_max", place_max) - place_max.times do |i| - index = i + 1 - - dealCardsKey = "#{index}#{destination}" - debug("dealCardsKey", dealCardsKey) - - cards = @deal_cards[dealCardsKey] - cards ||= [] - - cardsText = getCardsTextFromCards(cards) - - if isTapCardPlace(index) - out_msg += " タップした場札:[ #{cardsText} ]" - else - out_msg += " 場札:[ #{cardsText} ]" - end - end - - return out_msg - end - - def getCardsText(cardsText) # 汎用カードセット用カードタイトルの表示 - cards = cardsText.split(/,/) - return getCardsTextFromCards(cards) - end - - def getCardsTextFromCards(cards) - if $isHandSort - cards = cards.sort { |a, b| compareCard(a, b) } - end - - if @cardTitles.empty? - return cards.join(',') - end - - out_msg = "" - - cards.each do |cardNumber| - out_msg += "," if out_msg != "" - title = @cardTitles[cardNumber] - out_msg += "#{cardNumber}-#{title}" - end - - out_msg = '無し' if out_msg == "" - - return out_msg - end - - def isTapCardPlace(index) - return false unless @canTapCard - - return index.even? - end - - #################### 復活の呪文 ######################## - - def printCardRestorationSpellResult(spellText) - output_msg = throwCardRestorationSpell(spellText) - if output_msg == "readSpell" - sendMessage(@channel, "#{@nick_e}: カード配置を復活しました") - else - sendMessage(@channel, output_msg) - end - end - - def throwCardRestorationSpell(spellText) - output = '0' - - debug("spellText", spellText) - - # 呪文の取得 - if spellText.nil? - debug("getNewSpellText") - spellText = getNewSpellText() - output = "復活の呪文 > [#{spellText}]"; # 呪文表示を返す - else # 呪文の実行 - debug("setNewSpellText") - output = setNewSpellText(spellText) - end - - debug("throwCardRestorationSpell output", output) - return output; # 結果を返す - end - - def getNewSpellText - debug("getNewSpellText begin") - - textList = [] - - placeNames = @deal_cards.keys.sort - textList << placeNames - - spellWords = getSpellWords - textList << spellWords - - return textList.join(",") - end - - def getSpellWords - spellWords = "" - - @card_val.each do |card| - index = getDealCardIndex(card) - indexWord = getIndexWord(index) - spellWords << indexWord - end - - spellWords = shrinkSpellWords(spellWords) - - return spellWords - end - - def getIndexWord(index) - @card_spell[index + 1] - end - - def getDealCardIndex(card) - @deal_cards.keys.sort.each_with_index do |place, index| - cards = @deal_cards[place] - if cards.include?(card) - return index - end - end - - return -1 - end - - def shrinkSpellWords(spellWords) - @card_spell.each do |word| - spellWords = spellWords.gsub(/#{word}(#{word}+)/) { word + (Regexp.last_match(1).length + 1).to_s } - end - - return spellWords - end - - def setNewSpellText(spellText) - shuffleCards() - - textList = spellText.split(',') - spellWords = textList.pop - placeNames = textList - - debug("placeNames", placeNames) - debug("spellWords", spellWords) - - spellWords = expandSpellWords(spellWords) - debug("expanded spellWords", spellWords) - - placeNames.each_with_index do |place, index| - indexWord = getIndexWord(index) - cards = getCardsFromIndexWordAndSpellText(indexWord, spellWords) - @deal_cards[place] = cards - end - - debug("setNewSpellText @deal_cards", @deal_cards) - - return "readSpell" - end - - def expandSpellWords(spellWords) - @card_spell.each do |word| - spellWords = spellWords.gsub(/#{word}(\d+)/) { word * Regexp.last_match(1).to_i } - end - - return spellWords - end - - def getCardsFromIndexWordAndSpellText(indexWord, spellText) - cards = [] - - spellText.split(//).each_with_index do |word, index| - next unless indexWord == word - - card = @card_val[index] - isDelete = @cardRest.delete_if { |i| i == card } - next unless isDelete - - cards << card - end - - return cards - end -end diff --git a/src/src_bcdice/CountHolder.rb b/src/src_bcdice/CountHolder.rb deleted file mode 100644 index 37993fa9e..000000000 --- a/src/src_bcdice/CountHolder.rb +++ /dev/null @@ -1,450 +0,0 @@ -#!/bin/ruby -Ku -# -*- coding: utf-8 -*- - -require 'log' -require 'configBcDice.rb' - -class CountHolder - def initialize(bcdice, countInfos) - @bcdice = bcdice - @countInfos = countInfos - #=> @countInfos は - # {:channelName => {:characterName => (カウンター情報) } - # という形式でデータを保持します。 - end - - def executeCommand(command, nick, channel, pointerMode) - debug("point_counter_command begin(command, nick, channel, pointerMode)", command, nick, channel, pointerMode) - - @command = command - @nick = @bcdice.getNick(nick) - @channel = channel - @pointerMode = pointerMode - - output = "1" - isSecret = (pointerMode == :sameNick) - - case @command - when /^#OPEN!/i - output = get_point_list() - when /^#(.*)DIED!/i - output = delete_point_list() - unless output.nil? - output = "#{nick}: #{output} のカウンタが削除されました" - isSecret = true # 出力は常にTalk側 - end - when /^#RENAME!/i - output = rename_point_counter() - if output != "1" - output = "#{nick}: #{output}" - isSecret = false # 出力は常にPublic側 - end - - else - if /^#/ =~ @command - output = executeSetCommand() - if output != "1" - output = "#{nick}: #{output}" - end - end - end - - debug("point_counter_command END output, isSecret", output, isSecret) - - return output, isSecret - end - - #========================================================================= - # ** 汎用ポイントカウンタ - #========================================================================= - - #################### カウンタ操作 ######################## - def executeSetCommand - debug("setCountHolder nick, channel, pointerMode", @nick, @channel, @pointerMode) - - @characterName = @nick - - @tagName = nil - @currentValue = nil - @maxValue = nil - @modifyText = nil - - debug("$point_counter", $point_counter) - - debug("@command", @command) - - case @command - when %r{^#([^::]+)(:|:)(\w+?)\s*(\d+)(/(\d+))?} - debug(" #(識別名):(タグ)(現在値)/(最大値) で指定します。最大値がないものは省略できます。") - # #Zako1:HP9/9   #orc1:HP10/10  #商人:HP8/8 - @characterName = Regexp.last_match(1) - @tagName = Regexp.last_match(3) - @currentValue = Regexp.last_match(4).to_i - @maxValue = Regexp.last_match(6) - when /^#([^::]+)(:|:)(\w+?)\s*([\+\-]\d+)/ - debug(" #(識別名):(タグ)(変更量)") - # #Zako1:HP-1 - @characterName = Regexp.last_match(1) - @tagName = Regexp.last_match(3) - @modifyText = Regexp.last_match(4) - when %r{^#(\w+?)\s*(\d+)/(\d+)} - debug(" #(タグ)(現在値)/(最大値) 現在値/最大値指定は半角のみ。") - # #HP12/12   #衝動0/10 - @tagName = Regexp.last_match(1) - @currentValue = Regexp.last_match(2).to_i - @maxValue = Regexp.last_match(3) - when /^#(\w+?)\s*([\+\-]\d+)/ - debug(" #(タグ)(変更量)") - # #HP-1 - # #DEX-1 - @tagName = Regexp.last_match(1) - @modifyText = Regexp.last_match(2) - when /^#(\w+?)\s*(\d+)/ - debug(" #(タグ)(現在値) で指定します。現在値は半角です。") - # #DEX12   #浸食率0 - @tagName = Regexp.last_match(1) - @currentValue = Regexp.last_match(2).to_i - else - debug("not match command", @command) - return '' - end - - unless @maxValue.nil? - @maxValue = @maxValue.to_i - end - - debug("characterName", @characterName) - debug("tagName", @tagName) - debug("@currentValue", @currentValue) - debug("@maxValue", @maxValue) - debug("@modifyText", @modifyText) - - return setCountHolderByParams - end - - def setCountHolderByParams - debug("@modifyText", @modifyText) - if @modifyText.nil? - return setCount - else - return changeCount - end - end - - def setCount - @countInfos[@channel] ||= {} - characterInfoList = getCharacterInfoList - characterInfoList[@characterName] ||= {} - characterInfo = characterInfoList[@characterName] - - characterInfo[@tagName] = { - :currentValue => @currentValue, - :maxValue => @maxValue, - } - - debug('setCount @nick, @characterName', @nick, @characterName) - - output = "" - output += @characterName.downcase.to_s if @nick != @characterName - output += "(#{@tagName}) #{@currentValue}" - - debug("setCount @maxValue", @maxValue) - unless @maxValue.nil? - output += "/#{@maxValue}" - end - - return output - end - - def changeCount - debug("changeCount begin") - - modifyValue = @bcdice.parren_killer("(0#{@modifyText})").to_i - characterInfo = getCharacterInfo(@channel, @characterName) - - info = characterInfo[@tagName] - debug("characterInfo", characterInfo) - debug("info", info) - return "" if info.nil? - - currentValue = info[:currentValue] - maxValue = info[:maxValue] - - preText = getValueText(currentValue, maxValue) - - debug("currentValue", currentValue) - debug("modifyValue", modifyValue) - currentValue += modifyValue - info[:currentValue] = currentValue - - nowText = getValueText(currentValue, maxValue) - - output = "" - output += @characterName.downcase.to_s if @nick != @characterName - output += "(#{@tagName}) #{preText} -> #{nowText}" - - debug("changeCount end output", output) - - return output - end - - def getValueText(currentValue, maxValue) - text = currentValue.to_s - text += "/#{maxValue}" unless maxValue.nil? - - return text - end - - def getCharacterInfoList(channel = nil) - channel ||= @channel - - @countInfos[channel] ||= {} - characterInfoList = @countInfos[channel] - - return characterInfoList - end - - def getCharacterInfo(channel, characterName) - characterName ||= @characterName - - characterInfoList = getCharacterInfoList(channel) - - characterInfoList[characterName] ||= {} - characterInfo = characterInfoList[characterName] - - return characterInfo - end - - #################### カウンタ一覧 ######################## - def get_point_list - debug("get_point_list(command, nick, channel, pointerMode)", @command, @nick, @channel, @pointerMode) - - output = "1" - - return output unless /^#OPEN![\s]*(\w*)(\s|$)/ =~ @command - - tag = Regexp.last_match(1) - case @pointerMode - when :sameNick - debug("same nick") - pc_out = getPointListAtSameNick(tag) - output = pc_out unless pc_out.empty? - when :sameChannel - if tag - debug("same Channel") - pc_out = getPointListAtSameChannel(tag) - output = pc_out unless pc_out.empty? - end - end - - return output - end - - def getPointListAtSameNick(command, nick, channel, pointerMode, tag) - debug("getPointListAtSameNick(command, nick, channel, pointerMode, tag)", command, nick, channel, pointerMode, tag) - debug("同一Nick, 自キャラの一覧表示(パラメータ指定不要)") - - pc_list = $point_counter[nick] - pc_out = "" - if pc_list - sort_pc = {} - pc_list.each do |pc_o| - next unless $point_counter["#{nick},#{pc_o}"] - - tag_out = "" - if tag - check_name = "#{nick},#{pc_o}" - if $point_counter["#{check_name},#{tag},0"] - sort_pc[check_name] = $point_counter["#{check_name},#{tag},0"] - end - if $point_counter["#{check_name},#{tag},1"] - sort_pc[check_name] = $point_counter["#{check_name},#{tag},1"] - end - else - tag_arr = $point_counter["#{nick},#{pc_o}"] - tag_arr.each do |tag_o| - check_name = "#{nick},#{pc_o},#{tag_o}" - if $point_counter["#{check_name},0"] - tag_out += "$tag_o(" + $point_counter["#{check_name},0"] + ") " - end - if $point_counter["#{check_name},1"] - tag_out += "#{tag_o}[" + $point_counter["#{check_name},1"] + "] " - end - end - end - next unless tag_out - - debug("中身があるなら") - pc_out += ", " if pc_out - pc_out += "#{pc_o.downcase}:#{tag_out}" - end - - if tag - out_pc = "" - pc_sorted = sort_point_hash(sort_pc) - pc_sorted.each do |pc_o| - pc_name = pc_o.split(/,/) - out_pc += ", " if out_pc - if $pc_name[1] - if $point_counter["#{pc_o},#{tag},0"] - out_pc += "#{pc_name[1].upcase}(" + $point_counter["#{pc_o},#{tag},0"] + ")" - end - if $point_counter["#{pc_o},#{tag},1"] - out_pc += "#{pc_name[1].upcase}[" + $point_counter["#{pc_o},#{tag},1"] + "]" - end - else - if $point_counter["#{pc_o},#{tag},0"] - out_pc += "#{pc_name[0].upcase}(" + $point_counter["#{pc_o},#{tag},0"] + ")" - end - if $point_counter["#{pc_o},#{tag},1"] - out_pc += "#{pc_name[0].upcase}[" + $point_counter["#{pc_o},#{tag},1"] + "]" - end - end - end - pc_out = "#{tag}: #{out_pc}" if out_pc - end - else - if $point_counter["$nick,"] - tag_arr = $point_counter["$nick,"] - tag_out = "" - tag_arr.each do |tag_o| - check_name = "#{nick},,#{tag_o}" - if $point_counter["#{check_name},0"] - tag_out += "#{tag_o}(" + $point_counter["#{check_name},0"] + ") " - end - if $point_counter["#{check_name},1"] - tag_out += "#{tag_o}[" + $point_counter["#{check_name},1"] + "] " - end - end - if tag_out - debug("中身があるなら") - pc_out += ", " if pc_out - pc_out += tag_out.to_s - end - end - end - - return pc_out - end - - def getPointListAtSameChannel(tagName) - debug("getPointListAtSameChannel(command, nick, channel, pointerMode, tagName)", @command, @nick, @channel, @pointerMode, tagName) - debug("同一チャンネル特定タグ(ポイント)の表示") - - output = "" - - output += "#{tagName}:" unless tagName.empty? - - debug("getPointListAtSameChannel @countInfos", @countInfos) - characterInfoList = getCharacterInfoList - - characterInfoList.keys.sort.each do |characterName| - characterInfo = characterInfoList[characterName] - - tagText = '' - characterInfo.keys.sort.each do |currentTag| - unless tagName.empty? - next unless tagName == currentTag - end - - info = characterInfo[currentTag] - currentValue = info[:currentValue] - maxValue = info[:maxValue] - - tagText += currentValue.to_s - tagText += "/#{maxValue}" unless maxValue.nil? - end - - unless tagText.empty? - output += " " unless output.empty? - output += "#{characterName}(#{tagText})" - end - end - - return output - end - - #################### 識別名の交換 ######################## - def rename_point_counter - debug("rename_point_counter @command, @nick", @command, @nick) - - output = "1" - - return output unless /^#RENAME!\s*(.+?)\s*\-\>\s*(.+?)(\s|$)/ =~ @command - - oldName = Regexp.last_match(1) - newName = Regexp.last_match(2) - debug("oldName, newName", oldName, newName) - - # {:channelName => {:characterName => (カウンター情報) } - characterInfoList = getCharacterInfoList(@channel) - - counterInfo = characterInfoList.delete(oldName) - return output if counterInfo.nil? - - characterInfoList[newName] = counterInfo - - output = "#{oldName}->#{newName}"; # 変更メッセージ - return output - end - - #################### その他の処理 ######################## - - def setPointCounters(nick, pc, target) - key = "#{nick},#{pc}" - setPointCounter(key, pc) - - key = "#{nick},#{pc},#{target}" - setPointCounter(key, target) - end - - def setPointCounter(key, data) - debug("setPointCounter begin key, data", key, data) - - unless $point_counter.include?(key) - debug("$point_counterにkeyが存在しないので新規作成") - $point_counter[key] = data - return - end - - debug("$point_counterにkeyが存在する場合") - - cnt_list = $point_counter[key] - unless cnt_list.include?(data) - cnt_list << data - end - end - - # unused? - def sort_point_hash(base_hash) - keys = base_hash.keys - - pc_sorted = keys.sort_by do |a, b| - a_current, a_max = getPointHashCurrentAndMax(a) - b_current, b_max = getPointHashCurrentAndMax(b) - - # 現在値が小さい方が後ろ、同じ時はダメージが大きい方が後ろ(後方が危険) - - compare = (b_crr <=> a_crr) - if compare == 0 - compare = (a_max <=> b_max) - if compare == 0 - compare = (a <=> b) - end - end - - compare - end - - return pc_sorted - end - - def getPointHashCurrentAndMax(key) - if %r{(\d+)[/](\d+)} =~ key - current = Regexp.last_match(1) - max = Regexp.last_match(2) - return current, max - end - return 0, 0 - end -end diff --git a/src/src_bcdice/TableFileData.rb b/src/src_bcdice/TableFileData.rb deleted file mode 100644 index 85ae5dcea..000000000 --- a/src/src_bcdice/TableFileData.rb +++ /dev/null @@ -1,413 +0,0 @@ -# -*- coding: utf-8 -*- - -require 'fileutils' - -# extratables ディレクトリに置かれたテーブル定義ファイルを読み込む。 -# 詳細はREADME.txtの「7.オリジナルの表追加」を参照。 -# -# 定義ファイルの内容を @tableData として保持する。 -# この @tableData は -# -# @tableData : { -# コマンド : { -# "fileName" : (表ファイル名), -# "title" : (表タイトル), -# "command" : (コマンド文字), -# "gameType" : (ゲーム種別), -# "dice" : (ダイス文字), -# "table" : { -# (数値) : (テキスト), -# (数値) : (テキスト), -# (数値) : (テキスト), -# } -# } -# } -# -# というデータフォーマットとなる。 - -class TableFileData - @@virtualTableData = Hash.new #TKfix - - def initialize(isLoadCommonTable = true) - @dirs = [] - @tableData = {} - - return unless isLoadCommonTable - - #TKfix - #@dir = FileTest.directory?('./extratables') ? './extratables' : '../extratables' - @dir = './' - @tableData = searchTableFileDefine(@dir) - @tableData = @@virtualTableData - end - - def self.setVirtualTableData(hash, gameType, command, lines) - @@virtualTableData[hash] = { - "fileName" => "#{hash}.txt", - "gameType" => gameType, - "command" => command, - "lines" => lines, - } - end - - def setDir(dir, prefix = '') - return if @dirs.include?(dir) - - @dirs << dir - - tableData = searchTableFileDefine(dir, prefix) - @tableData.merge!(tableData) - end - - def searchTableFileDefine(dir, prefix = '') - tableData = {} - - return tableData if dir.nil? - return tableData unless File.exist?(dir) - return tableData unless File.directory?(dir) - - fileNames = Dir.glob("#{dir}/#{prefix}*.txt") - - fileNames.each do |fileName| - info = readGameCommandInfo(fileName, prefix) - gameType = info["gameType"] - gameType ||= "" - command = info["command"] - next if command.empty? - - tableData["#{gameType}_#{command}"] = info - end - - return tableData - end - - def readGameCommandInfo(fileName, prefix) - info = { - "fileName" => fileName, - "gameType" => '', - "command" => '', - } - - baseName = File.basename(fileName, '.txt') - - case baseName - when /^#{prefix}(.+)_(.+)_(.+)$/ - info["command"] = Regexp.last_match(3) - info["gameType"] = Regexp.last_match(1) + ":" + Regexp.last_match(2) - when /^#{prefix}(.+)_(.+)$/ - info["command"] = Regexp.last_match(2) - info["gameType"] = Regexp.last_match(1) - when /^#{prefix}(.+)$/ - info["command"] = Regexp.last_match(1) - info["gameType"] = '' - end - - return info - end - - def getAllTableInfo - result = [] - - @tableData.each do |_key, oneTableData| - tableData = readOneTableData(oneTableData) - result << tableData - end - - return result - end - - def getGameCommandInfos - commandInfos = [] - - @tableData.each do |_command, info| - commandInfo = { - "gameType" => info["gameType"], - "command" => info["command"], - } - - commandInfos << commandInfo - end - - return commandInfos - end - - def getTableDataFromFile(fileName) - table = [] - #lines = File.read(fileName).toutf8.lines.map(&:chomp) #TK - - # TKfix File.readの代替処理実装↓ - lines = [] - if (/(.+)\.txt$/ =~ fileName) - data = @tableData[$1] - unless(data.nil?) - lines = data["lines"].split("\n") - end - end - # TKfix File.readの代替処理実装↑ - - defineLine = lines.shift - dice, title = getDiceAndTitle(defineLine) - - lines.each do |line| - key, value = getLineKeyValue(line) - next if key.empty? - - key = key.to_i - table << [key, value] - end - - return dice, title, table - end - - def getLineKeyValue(line) - self.class.getLineKeyValue(line) - end - - def self.getLineKeyValue(line) - #line = line.toutf8.chomp #TKfix - - unless /^[\s ]*([^::]+)[\s ]*[::][\s ]*(.+)/ === line - return '', '' - end - - key = Regexp.last_match(1) - value = Regexp.last_match(2) - - return key, value - end - - def getDiceAndTitle(line) - dice, title = getLineKeyValue(line) - - return dice, title - end - - def getTableData(arg, targetGameType) - oneTableData = {} - isSecret = false - - @tableData.keys.each do |fileName| - next unless /.*_(.+)/ === fileName - - key = Regexp.last_match(1) - - next unless /^(s|S)?#{key}(\s|$)/i === arg - - data = @tableData[fileName] - gameType = data["gameType"] - - next unless isTargetGameType(gameType, targetGameType) - - oneTableData = data - isSecret = !Regexp.last_match(1).nil? - break - end - - readOneTableData(oneTableData) - - dice = oneTableData["dice"] - title = oneTableData["title"] - table = oneTableData["table"] - - table = changeEnterCode(table) - - return dice, title, table, isSecret - end - - def changeEnterCode(table) - newTable = {} - if table.nil? - return newTable - end - - table.each do |key, value| - value = value.gsub(/\\n/, "\n") - value = value.gsub(/\\\n/, "\\n") - newTable[key] = value - end - - return newTable - end - - def isTargetGameType(gameType, targetGameType) - return true if gameType.empty? - - return (gameType == targetGameType) - end - - def readOneTableData(oneTableData) - return if oneTableData.nil? - return unless oneTableData["table"].nil? - - command = oneTableData["command"] - gameType = oneTableData["gameType"] - fileName = oneTableData["fileName"] - - return if command.nil? - - # return unless File.exist?(fileName) # TKfix Fileは無効 - - dice, title, table = getTableDataFromFile(fileName) - - oneTableData["dice"] = dice - oneTableData["title"] = title - oneTableData["table"] = table - - return oneTableData - end -end - -class TableFileCreator - def initialize(dir, prefix, params) - @dir = dir - @prefix = prefix - @params = params - #TKfix - #@logger = DodontoF::Logger.instance - end - - def execute - fileName = getTableFileName() - checkFile(fileName) - - text = getTableText() - - createFile(fileName, text) - end - - def checkFile(fileName) - checkFileNotExist(fileName) - end - - def checkFileNotExist(fileName) - raise "commandNameAlreadyExist" if File.exist?(fileName) - end - - def checkFileExist(fileName) - raise "commandNameIsNotExist" unless File.exist?(fileName) - end - - def getTableFileName(command = nil, gameType = nil) - gameType = @params['gameType'] if gameType.nil? - gameType ||= '' - gameType = gameType.gsub(':', '_') - - if command.nil? - initCommand - command = @command - end - - checkCommand(command) - - prefix2 = "" - unless gameType.empty? - prefix2 = "#{gameType}_" - end - - fileName = "#{@dir}/#{@prefix}#{prefix2}#{command}.txt" - - return fileName - end - - def initCommand - @command = @params['command'] - @command ||= '' - #TKfix ! - @command = @command.gsub(/\./, '_') - end - - def checkCommand(command) - raise "commandNameIsEmpty" if command.empty? - - unless /^[a-zA-Z\d]+$/ === command - raise "commandNameCanUseOnlyAlphabetAndNumber" - end - end - - def getTableText() - dice = @params['dice'] - title = @params['title'] - table = @params['table'] - - text = "" - # text << "#{dice}:#{title}\n" - text += "#{dice}:#{title}\n"# TKfix << - unless table.is_a?(String) - table = getFormatedTableText(table) - end - # TKfix << - text += table - end - - def getFormatedTableText(table) - result = "" - - table.each_with_index do |line, index| - key, value = TableFileData.getLineKeyValue(line) - - key.tr!(' ', '') - key.tr!(' ', '') - key.tr!('0-9', '0-9') - key = checkTableKey(key, index) - #TKfix << - result = result + "#{key}:#{value}\n".toutf8 - end - - return result - end - - def checkTableKey(key, index) - return if key == "0" - - keyValue = key.to_i - - if keyValue == 0 - raise "tableFormatIsInvalid\t#{index + 1}\t#{key}" - end - - return keyValue - end - - def createFile(fileName, text) - File.open(fileName, "w+") do |file| - file.write(text) - end - end -end - -class TableFileEditer < TableFileCreator - def checkFile(fileName) - @originalCommand = @params['originalCommand'] - - @gameType = @params['gameType'] - @originalGameType = @params['originalGameType'] - - if (@originalCommand == @command) && (@originalGameType == @gameType) - checkFileWhenFileNameNotChanged(fileName) - else - checkFileWhenFileNameChanged(fileName) - end - end - - def checkFileWhenFileNameNotChanged(fileName) - checkFileExist(fileName) - end - - def checkFileWhenFileNameChanged(fileName) - originalCommand = @originalCommand - originalCommand ||= @command - originalGameType = @originalGameType - originalGameType ||= @gameType - - originalFileName = getTableFileName(originalCommand, originalGameType) - - checkFileExist(originalFileName) - checkFileNotExist(fileName) - - begin - FileUtils.mv(originalFileName, fileName) - rescue StandardError => e - raise "changeCommandNameFaild" - end - end -end diff --git a/src/src_bcdice/bcdice.rb b/src/src_bcdice/bcdice.rb deleted file mode 100644 index 9d3056081..000000000 --- a/src/src_bcdice/bcdice.rb +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/ruby -Ku -# -*- coding: utf-8 -*- - -$:.push(File.dirname(__FILE__)) # require_relative対策 - -require 'configBcDice.rb' - -class Cli - def sendMessage(_to, message) - print message - end - - def sendMessageToOnlySender(_nick_e, message) - print message - end - - def sendMessageToChannels(message) - print message - end -end - -def mainBcDiceCli(args) - message = args[0] - gameType = "DiceBot" - if args.length >= 2 - gameType = args[0] - message = args[1] - end - - print message - print "\n" - - bcdiceMaker = BCDiceMaker.new - bcdice = bcdiceMaker.newBcDice() - bcdice.setIrcClient(Cli.new) - bcdice.setGameByTitle(gameType) - - bcdice.setMessage(message) - channel = "" - bcdice.setChannel(channel) - bcdice.recievePublicMessage(gameType) -end - -if $0 === __FILE__ - require 'bcdiceCore.rb' - mainBcDiceCli(ARGV) -end diff --git a/src/src_bcdice/bcdiceCore.rb b/src/src_bcdice/bcdiceCore.rb deleted file mode 100644 index ceeb4e19b..000000000 --- a/src/src_bcdice/bcdiceCore.rb +++ /dev/null @@ -1,1227 +0,0 @@ -#!/bin/ruby -Ku -# -*- coding: utf-8 -*- - -require 'log' -require 'configBcDice.rb' -require 'CountHolder.rb' -require 'utils/ArithmeticEvaluator.rb' - -# WindowsでかつRuby 1.9未満の環境であるかどうかを示す -# 端末にShift_JISで出力する必要性の判定に用いる -$RUBY18_WIN = RUBY_VERSION < '1.9' && - /mswin(?!ce)|mingw|cygwin|bccwin/i === RUBY_PLATFORM - -$secretRollMembersHolder = {} -$secretDiceResultHolder = {} -$plotPrintChannels = {} -$point_counter = {} - -require 'CardTrader' -require 'TableFileData' -require 'diceBot/DiceBot' -require 'diceBot/DiceBotLoader' -require 'diceBot/DiceBotLoaderList' -require 'dice/AddDice' -require 'dice/UpperDice' -require 'dice/RerollDice' - -class BCDiceMaker - def initialize - @diceBot = DiceBot.new - @cardTrader = CardTrader.new - @cardTrader.initValues - - @counterInfos = {} - @tableFileData = TableFileData.new - end - - # @todo 未使用のため削除する - attr_accessor :diceBotPath - - def newBcDice - bcdice = BCDice.new(self, @cardTrader, @diceBot, @counterInfos, @tableFileData) - - return bcdice - end -end - -class BCDice - # BCDiceのバージョン番号 - VERSION = "2.08.00".freeze - - # @return [DiceBot] 使用するダイスボット - attr_reader :diceBot - - # @return [CardTrader] カード機能 - attr_reader :cardTrader - - # @return [Array<(Integer, Integer)>] 出目の配列 - attr_reader :rand_results - - alias getRandResults rand_results - - # @return [Array] 出目の詳細の配列 - attr_reader :detailed_rand_results - - # @return [String] メッセージ送信者のニックネーム - attr_reader :nick_e - - def initialize(parent, cardTrader, diceBot, counterInfos, tableFileData) - @parent = parent - - setDiceBot(diceBot) - - @cardTrader = cardTrader - @cardTrader.setBcDice(self) - @counterInfos = counterInfos - @tableFileData = tableFileData - - @nick_e = "" - @tnick = "" - @rands = nil - @isKeepSecretDice = true - - @collect_rand_results = false - @rand_results = [] - @detailed_rand_results = [] - end - - def setDir(dir, prefix) - @tableFileData.setDir(dir, prefix) - end - - def isKeepSecretDice(b) - @isKeepSecretDice = b - end - - # @deprecated {#diceBot} からゲームシステムIDを得るようにする。 - def getGameType - @diceBot.id - end - - def setDiceBot(diceBot) - return if diceBot.nil? - - @diceBot = diceBot - @diceBot.bcdice = self - end - - def readExtraCard(cardFileName) - @cardTrader.readExtraCard(cardFileName) - end - - # @todo ircClient経由でなく直接メッセージを返すようにする - def setIrcClient(client) - @ircClient = client - end - - def setMessage(message) - # 設定で変化し得るためopen系はここで正規表現を作る - openPattern = /\A\s*(?:#{$OPEN_DICE}|#{$OPEN_PLOT})\s*\z/i - - messageToSet = - case message - when openPattern - message - else - # 空白が含まれる場合、最初の部分だけを取り出す - message.split(/\s/, 2).first - end - debug("setMessage messageToSet", messageToSet) - - @messageOriginal = parren_killer(messageToSet) - @message = @messageOriginal.upcase - debug("@message", @message) - end - - def getOriginalMessage - @messageOriginal - end - - # 直接TALKでは大文字小文字を考慮したいのでここでオリジナルの文字列に変更 - def changeMessageOriginal - @message = @messageOriginal - end - - def recieveMessage(nick_e, tnick) - recieveMessageCatched(nick_e, tnick) - rescue StandardError => e - printErrorMessage(e) - end - - def printErrorMessage(e) - sendMessageToOnlySender("error " + e.to_s + e.backtrace.join("\n")) - end - - def recieveMessageCatched(nick_e, tnick) - debug('recieveMessage nick_e, tnick', nick_e, tnick) - - @nick_e = nick_e - @cardTrader.setTnick(@nick_e) - - @tnick = tnick - @cardTrader.setTnick(@tnick) - - debug("@nick_e, @tnick", @nick_e, @tnick) - - # ポイントカウンター関係 - executePointCounter - - # プロット入力処理 - addPlot(@messageOriginal.clone) - end - - def executePointCounter - arg = @messages - debug("executePointCounter arg", arg) - - unless arg =~ /^#/ - debug("executePointCounter is NOT matched") - return - end - - channel = getPrintPlotChannel(@nick_e) - debug("getPrintPlotChannel get channel", channel) - - if channel == "1" - sendMessageToOnlySender("表示チャンネルが登録されていません") - return - end - - arg += "->#{@tnick}" unless @tnick.empty? - - pointerMode = :sameNick - output, pointerMode = countHolder.executeCommand(arg, @nick_e, channel, pointerMode) - debug("point_counter_command called, line", __LINE__) - debug("output", output) - debug("pointerMode", pointerMode) - - if output == "1" - debug("executePointCounter point_counter_command output is \"1\"") - return - end - - case pointerMode - when :sameNick - debug("executePointCounter:Talkで返事") - sendMessageToOnlySender(output) - when :sameChannel - debug("executePointCounter:publicで返事") - sendMessage(channel, output) - end - - debug("executePointCounter end") - end - - def addPlot(arg) - debug("addPlot begin arg", arg) - - unless /#{$ADD_PLOT}[::](.+)/i =~ arg - debug("addPlot exit") - return - end - plot = Regexp.last_match(1) - - channel = getPrintPlotChannel(@nick_e) - - debug('addPlot channel', channel) - - if channel.nil? - debug('channel.nil?') - sendMessageToOnlySender("プロット出力先が登録されていません") - else - debug('addToSecretDiceResult calling...') - addToSecretDiceResult(plot, channel, 1) - sendMessage(channel, "#{@nick_e} さんがプロットしました") - end - end - - def getPrintPlotChannel(nick) - nick = getNick(nick) - return $plotPrintChannels[nick] - end - - def setChannel(channel) - debug("setChannel called channel", channel) - @channel = channel - end - - def recievePublicMessage(nick_e) - recievePublicMessageCatched(nick_e) - rescue StandardError => e - printErrorMessage(e) - end - - def recievePublicMessageCatched(nick_e) - debug("recievePublicMessageCatched begin nick_e", nick_e) - debug("recievePublicMessageCatched @channel", @channel) - debug("recievePublicMessageCatched @message", @message) - - @nick_e = nick_e - - # プロットやシークレットダイス用に今のチャンネル名を記憶 - setChannelForPlotOrSecretDice - - # プロットの表示 - if /(^|\s+)#{$OPEN_PLOT}(\s+|$)/i =~ @message - debug('print plot', @message) - printPlot() - end - - # シークレットロールの表示 - if /(^|\s+)#{$OPEN_DICE}(\s+|$)/i =~ @message - debug('print secret roll', @message) - printSecretRoll() - end - - # ポイントカウンター関係 - executePointCounterPublic - - # ダイスロールの処理 - executeDiceRoll - - # 四則計算代行 - if /(^|\s)C([-\d]+)\s*$/i =~ @message - output = Regexp.last_match(2) - if output != "" - sendMessage(@channel, "#{@nick_e}: 計算結果 > #{output}") - end - end - - # ここから大文字・小文字を考慮するようにメッセージを変更 - changeMessageOriginal - - # カード処理 - executeCard - - debug("\non_public end") - end - - def printPlot - debug("printPlot begin") - messageList = openSecretRoll(@channel, 1) - debug("messageList", messageList) - - messageList.each do |message| - if message.empty? - debug("message is empty") - setPrintPlotChannel - else - debug("message", message) - sendMessage(@channel, message) - end - end - end - - def setChannelForPlotOrSecretDice - debug("setChannelForPlotOrSecretDice Begin") - - return if isTalkChannel - - channel = getPrintPlotChannel(@nick_e) - if channel.nil? - setPrintPlotChannel - end - end - - def isTalkChannel - !(/^#/ === @channel) - end - - def printSecretRoll - outputs = openSecretRoll(@channel, 0) - - outputs.each do |diceResult| - next if diceResult.empty? - - sendMessage(@channel, diceResult) - end - end - - def executePointCounterPublic - debug("executePointCounterPublic begin") - - if /^#{$READY_CMD}(\s+|$)/i =~ @message - setPrintPlotChannel - sendMessageToOnlySender("表示チャンネルを設定しました") - return - end - - unless /^#/ =~ @message - debug("executePointCounterPublic NOT match") - return - end - - pointerMode = :sameChannel - countHolder = CountHolder.new(self, @counterInfos) - output, secret = countHolder.executeCommand(@message, @nick_e, @channel, pointerMode) - debug("executePointCounterPublic output, secret", output, secret) - - if secret - debug("is secret") - sendMessageToOnlySender(output) if output != "1" - else - debug("is NOT secret") - sendMessage(@channel, output) if output != "1" - end - end - - def executeDiceRoll - debug("executeDiceRoll begin") - debug("channel", @channel) - - output, secret = dice_command - - unless secret - debug("executeDiceRoll @channel", @channel) - sendMessage(@channel, output) if output != "1" - return - end - - # 隠しロール - return if output == "1" - - if @isTest - output += "###secret dice###" - end - - broadmsg(output, @nick_e) - - if @isKeepSecretDice - addToSecretDiceResult(output, @channel, 0) - end - end - - def setTest(isTest) - @isTest = isTest - end - - def executeCard - debug('executeCard begin') - @cardTrader.setNick(@nick_e) - @cardTrader.setTnick(@tnick) - @cardTrader.executeCard(@message, @channel) - debug('executeCard end') - end - - ########################################################################### - # ** 各種コマンド処理 - ########################################################################### - - #========================================================================= - # ** コマンド分岐 - #========================================================================= - def dice_command # ダイスコマンドの分岐処理 - arg = @message.upcase - - debug('dice_command arg', arg) - - output, secret = @diceBot.dice_command(@message, @nick_e) - return output, secret if output != '1' - - output, secret = rollD66(arg) - return output, secret unless output.nil? - - output, secret = checkAddRoll(arg) - return output, secret unless output.nil? - - output, secret = checkBDice(arg) - return output, secret unless output.nil? - - output, secret = checkRnDice(arg) - return output, secret unless output.nil? - - output, secret = checkUpperRoll(arg) - return output, secret unless output.nil? - - output, secret = checkChoiceCommand(arg) - return output, secret unless output.nil? - - output, secret = getTableDataResult(arg) - return output, secret unless output.nil? - - output = '1' - secret = false - return output, secret - end - - def checkAddRoll(arg) - debug("check add roll") - - secret = arg.start_with?('S') - command = secret ? arg[1..-1] : arg - - dice = AddDice.new(self, @diceBot) - output = dice.rollDice(command) - return nil if output == '1' - - return output, secret - end - - def checkBDice(arg) - debug("check barabara roll") - - output = bdice(arg) - return nil if output == '1' - - secret = (/S[\d]+B[\d]+/i === arg) - - return output, secret - end - - def checkRnDice(arg) - debug('check xRn roll arg', arg) - - return nil unless /(S)?[\d]+R[\d]+/i === arg - - secret = !Regexp.last_match(1).nil? - - output = @diceBot.dice_command_xRn(arg, @nick_e) - return nil if output.nil? || (output == '1') - - if output.empty? - dice = RerollDice.new(self, @diceBot) - output = dice.rollDice(arg) - end - - return nil if output.nil? || (output == '1') - - debug('xRn output', output) - - return output, secret - end - - def checkUpperRoll(arg) - debug("check upper roll") - - return nil unless /(S)?[\d]+U[\d]+/i === arg - - secret = !Regexp.last_match(1).nil? - - dice = UpperDice.new(self, @diceBot) - output = dice.rollDice(arg) - return nil if output == '1' - - return output, secret - end - - def checkChoiceCommand(arg) - debug("check choice command") - - return nil unless /((^|\s)(S)?choice\[[^,]+(,[^,]+)+\]($|\s))/i === arg - - secret = !Regexp.last_match(3).nil? - output = choice_random(Regexp.last_match(1)) - - return output, secret - end - - def getTableDataResult(arg) - debug("getTableDataResult Begin") - - dice, title, table, secret = @tableFileData.getTableData(arg, @diceBot.id) - debug("dice", dice) - - if table.nil? - debug("table is null") - return nil - end - - value, diceText = getTableIndexDiceValueAndDiceText(dice) - return nil if value.nil? - - debug("value", value) - - key, message = table.find { |i| i.first === value } - return nil if message.nil? - - message = rollTableMessageDiceText(message) - - output = "#{nick_e}:#{title}(#{value}[#{diceText}]) > #{message}" - - return output, secret - end - - def getTableIndexDiceValueAndDiceText(dice) - if /(\d+)D(\d+)/i === dice - diceCount = Regexp.last_match(1) - diceType = Regexp.last_match(2) - value, diceText = roll(diceCount, diceType) - return value, diceText - end - - string, _secret, _count, swapMarker = getD66Infos(dice) - unless string.nil? - value = getD66ValueByMarker(swapMarker) - # diceText = (value / 10).to_s + "," + (value % 10).to_s - diceText = (value / 10).floor.to_s + "," + (value % 10).to_s # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - return value, diceText - end - - return nil - end - - def rollTableMessageDiceText(text) - message = text.gsub(/(\d+)D(\d+)/) do - m = $~ - diceCount = m[1] - diceMax = m[2] - value, = roll(diceCount, diceMax) - "#{diceCount}D#{diceMax}(=>#{value})" - end - - return message - end - - #========================================================================= - # ** ランダマイザ - #========================================================================= - # ダイスロール - def roll(dice_cnt, dice_max, dice_sort = 0, dice_add = 0, dice_ul = '', dice_diff = 0, dice_re = nil) - dice_cnt = dice_cnt.to_i - dice_max = dice_max.to_i - dice_re = dice_re.to_i - - total = 0 - dice_str = "" - numberSpot1 = 0 - cnt_max = 0 - n_max = 0 - cnt_suc = 0 - d9_on = false - rerollCount = 0 - dice_result = [] - - # dice_add = 0 if( ! dice_add ) - - if (@diceBot.d66Type != 0) && (dice_max == 66) - dice_sort = 0 - dice_cnt = 2 - dice_max = 6 - end - - if @diceBot.isD9 && (dice_max == 9) - d9_on = true - dice_max += 1 - end - - unless (dice_cnt <= $DICE_MAXCNT) && (dice_max <= $DICE_MAXNUM) - return total, dice_str, numberSpot1, cnt_max, n_max, cnt_suc, rerollCount - end - - dice_cnt.times do |i| - i += 1 - dice_now = 0 - dice_n = 0 - dice_st_n = "" - round = 0 - - loop do - if d9_on - dice_n = roll_d9() - else - dice_n = rand(dice_max).to_i + 1 - end - - dice_now += dice_n - - debug('@diceBot.sendMode', @diceBot.sendMode) - if @diceBot.sendMode >= 2 - dice_st_n += "," unless dice_st_n.empty? - dice_st_n += dice_n.to_s - end - round += 1 - - break unless (dice_add > 1) && (dice_n >= dice_add) - end - - total += dice_now - - if dice_ul != '' - suc = check_hit(dice_now, dice_ul, dice_diff) - cnt_suc += suc - end - - if dice_re - rerollCount += 1 if dice_now >= dice_re - end - - if (@diceBot.sendMode >= 2) && (round >= 2) - dice_result.push("#{dice_now}[#{dice_st_n}]") - else - dice_result.push(dice_now) - end - - numberSpot1 += 1 if dice_now == 1 - cnt_max += 1 if dice_now == dice_max - n_max = dice_now if dice_now > n_max - end - - if dice_sort != 0 - dice_str = dice_result.sort_by { |a| dice_num(a) }.join(",") - else - dice_str = dice_result.join(",") - end - - return total, dice_str, numberSpot1, cnt_max, n_max, cnt_suc, rerollCount - end - - def setRandomValues(rands) - @rands = rands - end - - # @params [Integer] max - # @return [Integer] 0以上max未満の整数 - def rand_inner(max) - debug('rand called @rands', @rands) - - value = 0 - if @rands.nil? - value = randNomal(max) - else - value = randFromRands(max) - end - - if @collect_rand_results - @rand_results << [(value + 1), max] - end - - return value - end - - DetailedRandResult = Struct.new(:kind, :sides, :value) - - # @params [Integer] max - # @return [Integer] 0以上max未満の整数 - def rand(max) - ret = rand_inner(max) - - push_to_detail(:normal, max, ret + 1) - return ret - end - - # 十の位をd10を使って決定するためのダイスロール - # @return [Integer] 0以上90以下で10の倍数となる整数 - def roll_tens_d10() - # rand_innerの戻り値を10倍すればすむ話なのだが、既存のテストとの互換性の為に処理をする - r = rand_inner(10) + 1 - if r == 10 - r = 0 - end - - ret = r * 10 - - push_to_detail(:tens_d10, 10, ret) - return ret - end - - # d10を0~9として扱うダイスロール - # @return [Integer] 0以上9以下の整数 - def roll_d9() - ret = rand_inner(10) - - push_to_detail(:d9, 10, ret) - return ret - end - - # @param b [Boolean] - def setCollectRandResult(b) - @collect_rand_results = b - @rand_results = [] - @detailed_rand_results = [] - end - - # @params [Symbol] kind - # @params [Integer] sides - # @params [Integer] value - def push_to_detail(kind, sides, value) - if @collect_rand_results - detail = DetailedRandResult.new(kind, sides, value) - @detailed_rand_results.push(detail) - end - end - - def randNomal(max) - Kernel.rand(max) - end - - def randFromRands(targetMax) - nextRand = @rands.shift - - if nextRand.nil? - # return randNomal(targetMax) - raise "nextRand is nil, so @rands is empty!! @rands:#{@rands.inspect}" - end - - value, max = nextRand - value = value.to_i - max = max.to_i - - if max != targetMax - # return randNomal(targetMax) - raise "invalid max value! [ #{value} / #{max} ] but NEED [ #{targetMax} ] dice" - end - - return (value - 1) - end - - def dice_num(dice_str) - dice_str = dice_str.to_s - return dice_str.sub(/\[[\d,]+\]/, '').to_i - end - - #========================================================================== - # ** ダイスコマンド処理 - #========================================================================== - - #################### バラバラダイス ######################## - def bdice(string) # 個数判定型ダイスロール - suc = 0 - signOfInequality = "" - diff = 0 - output = "" - - string = string.gsub(/-[\d]+B[\d]+/, '') # バラバラダイスを引き算しようとしているのを除去 - - unless /(^|\s)S?(([\d]+B[\d]+(\+[\d]+B[\d]+)*)(([<>=]+)([\d]+))?)($|\s)/ =~ string - output = '1' - return output - end - - string = Regexp.last_match(2) - if Regexp.last_match(5) - diff = Regexp.last_match(7).to_i - string = Regexp.last_match(3) - signOfInequality = marshalSignOfInequality(Regexp.last_match(6)) - elsif /([<>=]+)(\d+)/ =~ @diceBot.defaultSuccessTarget - diff = Regexp.last_match(2).to_i - signOfInequality = marshalSignOfInequality(Regexp.last_match(1)) - end - - dice_a = string.split(/\+/) - dice_cnt_total = 0 - numberSpot1 = 0 - - dice_a.each do |dice_o| - dice_cnt, dice_max, = dice_o.split(/[bB]/) - dice_cnt = dice_cnt.to_i - dice_max = dice_max.to_i - - dice_dat = roll(dice_cnt, dice_max, (@diceBot.sortType & 2), 0, signOfInequality, diff) - suc += dice_dat[5] - output += "," if output != "" - output += dice_dat[1] - numberSpot1 += dice_dat[2] - dice_cnt_total += dice_cnt - end - - if signOfInequality != "" - string += "#{signOfInequality}#{diff}" - output = "#{output} > 成功数#{suc}" - output += @diceBot.getGrichText(numberSpot1, dice_cnt_total, suc) - end - output = "#{@nick_e}: (#{string}) > #{output}" - - return output - end - - #################### D66ダイス ######################## - def rollD66(string) - return nil unless /^S?D66/i === string - return nil if @diceBot.d66Type == 0 - - debug("match D66 roll") - output, secret = d66dice(string) - - return output, secret - end - - def d66dice(string) - string = string.upcase - secret = false - output = '1' - - string, secret, count, swapMarker = getD66Infos(string) - return output, secret if string.nil? - - debug('d66dice count', count) - - d66List = [] - count.times do |_i| - d66List << getD66ValueByMarker(swapMarker) - end - d66Text = d66List.join(',') - debug('d66Text', d66Text) - - output = "#{@nick_e}: (#{string}) > #{d66Text}" - - return output, secret - end - - def getD66Infos(string) - debug("getD66Infos, string", string) - - return nil unless /(^|\s)(S)?((\d+)?D66(N|S)?)(\s|$)/i === string - - secret = !Regexp.last_match(2).nil? - string = Regexp.last_match(3) - count = (Regexp.last_match(4) || 1).to_i - swapMarker = (Regexp.last_match(5) || "").upcase - - return string, secret, count, swapMarker - end - - def getD66ValueByMarker(swapMarker) - case swapMarker - when "S" - isSwap = true - getD66(isSwap) - when "N" - isSwap = false - getD66(isSwap) - else - getD66Value() - end - end - - def getD66Value(mode = nil) - mode ||= @diceBot.d66Type - - isSwap = (mode > 1) - getD66(isSwap) - end - - def getD66(isSwap) - output = 0 - - dice_a = rand(6) + 1 - dice_b = rand(6) + 1 - debug("dice_a", dice_a) - debug("dice_b", dice_b) - - if isSwap && (dice_a > dice_b) - # 大小でスワップするタイプ - output = dice_a + dice_b * 10 - else - # 出目そのまま - output = dice_a * 10 + dice_b - end - - debug("output", output) - - return output - end - - #################### その他ダイス関係 ######################## - def openSecretRoll(channel, mode) - debug("openSecretRoll begin") - channel = channel.upcase - - messages = [] - - memberKey = getSecretRollMembersHolderKey(channel, mode) - members = $secretRollMembersHolder[memberKey] - - if members.nil? - debug("openSecretRoll members is nil. messages", messages) - return messages - end - - members.each do |member| - diceResultKey = getSecretDiceResultHolderKey(channel, mode, member) - debug("openSecretRoll diceResulyKey", diceResultKey) - - diceResult = $secretDiceResultHolder[diceResultKey] - debug("openSecretRoll diceResult", diceResult) - - if diceResult - messages.push(diceResult) - $secretDiceResultHolder.delete(diceResultKey) - end - end - - if mode <= 0 # 記録しておいたデータを削除 - debug("delete recorde data") - $secretRollMembersHolder.delete(channel) - end - - debug("openSecretRoll result messages", messages) - - return messages - end - - def getNick(nick = nil) - nick ||= @nick_e - nick = nick.upcase - - if /[_\d]*(.+)[_\d]*/ =~ nick - nick = Regexp.last_match(1) # Nick端の数字はカウンター変わりに使われることが多いので除去 - end - - return nick - end - - def addToSecretDiceResult(diceResult, channel, mode) - channel = channel.upcase - - # まずはチャンネルごとの管理リストに追加 - addToSecretRollMembersHolder(channel, mode) - - # 次にダイスの出力結果を保存 - saveSecretDiceResult(diceResult, channel, mode) - end - - def addToSecretRollMembersHolder(channel, mode) - key = getSecretRollMembersHolderKey(channel, mode) - - $secretRollMembersHolder[key] ||= [] - members = $secretRollMembersHolder[key] - - nick = getNick() - - unless members.include?(nick) - members.push(nick) - end - end - - def getSecretRollMembersHolderKey(channel, mode) - "#{mode},#{channel}" - end - - def saveSecretDiceResult(diceResult, channel, mode) - nick = getNick() - - if mode != 0 - diceResult = "#{nick}: #{diceResult}" # プロットにNickを追加 - end - - key = getSecretDiceResultHolderKey(channel, mode, nick) - $secretDiceResultHolder[key] = diceResult # 複数チャンネルも一応想定 - - debug("key", key) - debug("secretDiceResultHolder", $secretDiceResultHolder) - end - - def getSecretDiceResultHolderKey(channel, mode, nick) - key = "#{mode},#{channel},#{nick}" - return key - end - - def setPrintPlotChannel - nick = getNick() - $plotPrintChannels[nick] = @channel - end - - #========================================================================== - # ** その他の機能 - #========================================================================== - def choice_random(string) - output = "1" - - unless /(^|\s)((S)?choice\[([^,]+(,[^,]+)+)\])($|\s)/i =~ string - return output - end - - string = Regexp.last_match(2) - targetList = Regexp.last_match(4) - - unless targetList - return output - end - - targets = targetList.split(/,/) - index = rand(targets.length) - target = targets[index] - output = "#{@nick_e}: (#{string}) > #{target}" - - return output - end - - #========================================================================== - # ** 結果判定関連 - #========================================================================== - def getMarshaledSignOfInequality(text) - return "" if text.nil? - - return marshalSignOfInequality(text) - end - - def marshalSignOfInequality(signOfInequality) # 不等号の整列 - case signOfInequality - when /(<=|=<)/ - return "<=" - when /(>=|=>)/ - return ">=" - when /(<>)/ - return "<>" - when /[<]+/ - return "<" - when /[>]+/ - return ">" - when /[=]+/ - return "=" - end - - return signOfInequality - end - - def check_hit(dice_now, signOfInequality, diff) # 成功数判定用 - suc = 0 - - if diff.is_a?(String) - unless /\d/ =~ diff - return suc - end - - diff = diff.to_i - end - - case signOfInequality - when /(<=|=<)/ - if dice_now <= diff - suc += 1 - end - when /(>=|=>)/ - if dice_now >= diff - suc += 1 - end - when /(<>)/ - if dice_now != diff - suc += 1 - end - when /[<]+/ - if dice_now < diff - suc += 1 - end - when /[>]+/ - if dice_now > diff - suc += 1 - end - when /[=]+/ - if dice_now == diff - suc += 1 - end - end - - return suc - end - - ########################################################################### - # ** 出力関連 - ########################################################################### - - def broadmsg(output, nick) - debug("broadmsg output, nick", output, nick) - debug("@nick_e", @nick_e) - - if output == "1" - return - end - - if nick == @nick_e - sendMessageToOnlySender(output) - else - sendMessage(nick, output) - end - end - - def sendMessage(to, message) - debug("sendMessage to, message", to, message) - @ircClient.sendMessage(to, message) - end - - def sendMessageToOnlySender(message) - debug("sendMessageToOnlySender message", message) - debug("@nick_e", @nick_e) - @ircClient.sendMessageToOnlySender(@nick_e, message) - end - - def sendMessageToChannels(message) - @ircClient.sendMessageToChannels(message) - end - - #################### テキスト前処理 ######################## - def parren_killer(string) - debug("parren_killer input", string) - - string = string.gsub(/\[\d+D\d+\]/i) do |matched| - # Remove '[' and ']' - command = matched[1..-2].upcase - times, sides = command.split("D").map(&:to_i) - rolled, = roll(times, sides) - - rolled - end - - string = changeRangeTextToNumberText(string) - - round_type = @diceBot.fractionType.to_sym - string = string.gsub(%r{\([\d/\+\*\-\(\)]+\)}) do |expr| - ArithmeticEvaluator.new.eval(expr, round_type) - end - - debug("diceBot.changeText(string) begin", string) - string = @diceBot.changeText(string) - debug("diceBot.changeText(string) end", string) - - string = string.gsub(/([\d]+[dD])([^\w]|$)/) { "#{Regexp.last_match(1)}6#{Regexp.last_match(2)}" } - - debug("parren_killer output", string) - - return string - end - - # [1...4]D[2...7] -> 2D7 のように[n...m]をランダムな数値へ変換 - def changeRangeTextToNumberText(string) - debug('[st...ed] before string', string) - - while /^(.*?)\[(\d+)[.]{3}(\d+)\](.*)/ =~ string - beforeText = Regexp.last_match(1) - beforeText ||= "" - - rangeBegin = Regexp.last_match(2).to_i - rangeEnd = Regexp.last_match(3).to_i - - afterText = Regexp.last_match(4) - afterText ||= "" - - next unless rangeBegin < rangeEnd - - range = (rangeEnd - rangeBegin + 1) - debug('range', range) - - rolledNumber, = roll(1, range) - resultNumber = rangeBegin - 1 + rolledNumber - string = "#{beforeText}#{resultNumber}#{afterText}" - end - - debug('[st...ed] after string', string) - - return string - end - - # 指定したタイトルのゲームを設定する - # @param [String] gameTitle ゲームタイトル - # @return [String] ゲームを設定したことを示すメッセージ - def setGameByTitle(gameTitle) - debug('setGameByTitle gameTitle', gameTitle) - - @cardTrader.initValues - - loader = DiceBotLoaderList.find(gameTitle) - diceBot = - if loader - loader.loadDiceBot - else - DiceBotLoader.loadUnknownGame(gameTitle) || DiceBot.new - end - - setDiceBot(diceBot) - diceBot.postSet - - message = "Game設定を#{diceBot.name}に設定しました" - debug('setGameByTitle message', message) - - return message - end -end diff --git a/src/src_bcdice/c.bat b/src/src_bcdice/c.bat deleted file mode 100644 index 1856a429c..000000000 --- a/src/src_bcdice/c.bat +++ /dev/null @@ -1,9 +0,0 @@ -@echo off -echo START -set RUBYOPT=-EUTF-8 -mkdir lib\diceBot -for /r ./dicebot %%i in (*.rb) do ( - opal -cO -I ./ -s 'kconv' %%i > lib/dicebot/%%~ni.js | echo %%~ni -) -opal -c -I ./ -s 'kconv' cgiDiceBot.rb > lib/cgiDiceBot.js | echo cgiDiceBot -echo OK \ No newline at end of file diff --git a/src/src_bcdice/cgiDiceBot.rb b/src/src_bcdice/cgiDiceBot.rb deleted file mode 100644 index 95b6fff6b..000000000 --- a/src/src_bcdice/cgiDiceBot.rb +++ /dev/null @@ -1,180 +0,0 @@ -# -*- coding: utf-8 -*- - -bcDiceRoot = File.expand_path(File.dirname(__FILE__)) -unless $:.include?(bcDiceRoot) - $:.unshift(bcDiceRoot) -end - -require 'bcdiceCore.rb' - -class CgiDiceBot - def initialize - @rollResult = "" - @isSecret = false - @rands = nil # テスト以外ではnilで良い。ダイス目操作パラメータ - @isTest = false - @bcdice = nil - end - - attr_reader :isSecret - - def rollFromCgi() - cgi = CGI.new - @cgiParams = @cgi.params - - rollFromCgiParams(cgiParams) - end - - def rollFromCgiParamsDummy() - @cgiParams = { - 'message' => 'STG20', - # 'message' => 'S2d6', - 'gameType' => 'TORG', - 'channel' => '1', - 'state' => 'state', - 'sendto' => 'sendto', - 'color' => '999999', - } - - rollFromCgiParams - end - - def rollFromCgiParams - message = @cgiParams['message'] - gameType = @cgiParams['gameType'] - gameType ||= 'diceBot' - # $rand_seed = @cgiParams['randomSeed'] - - result = "" - - result += "##>customBot BEGIN<##" - result += getDiceBotParamText('channel') - result += getDiceBotParamText('name') - result += getDiceBotParamText('state') - result += getDiceBotParamText('sendto') - result += getDiceBotParamText('color') - result += message - rollResult, randResults = roll(message, gameType) - result += rollResult - result += "##>customBot END<##" - - return result - end - - def getDiceBotParamText(paramName) - param = @cgiParams[paramName] - param ||= '' - - "#{param}\t" - end - - def roll(message, gameType, dir = nil, prefix = '', isNeedResult = false) - rollResult, randResults, gameType = executeDiceBot(message, gameType, dir, prefix, isNeedResult) - - result = "" - - unless @isTest - # result += "##>isSecretDice<##" if( @isSecret ) - end - - # 多言語対応のダイスボットは「GameType:Language」という書式なので、 - # ここで言語名を削って表示する。(内部的には必要だが、表示では不要のため) - gameType = gameType.gsub(/:.+$/, '') - - unless rollResult.empty? - result += "\n#{gameType} #{rollResult}" - end - - return result, randResults - end - - def setTest() - @isTest = true - end - - def setRandomValues(rands) - @rands = rands - end - - def executeDiceBot(message, gameType, dir = nil, prefix = '', isNeedResult = false) - bcdice = newBcDice - - bcdice.setIrcClient(self) - bcdice.setRandomValues(@rands) - bcdice.isKeepSecretDice(@isTest) - bcdice.setTest(@isTest) - bcdice.setCollectRandResult(isNeedResult) - bcdice.setDir(dir, prefix) - - if bcdice.getGameType != gameType - bcdice.setGameByTitle(gameType) - gameType = bcdice.getGameType - end - - bcdice.setMessage(message) - - channel = "" - nick_e = "" - bcdice.setChannel(channel) - bcdice.recievePublicMessage(nick_e) - - rollResult = @rollResult - @rollResult = "" - - randResults = bcdice.getRandResults - - return rollResult, randResults, gameType - end - - def newBcDice - if @bcdice.nil? - bcdiceMaker = BCDiceMaker.new - @bcdice = bcdiceMaker.newBcDice() - end - - return @bcdice - end - - def getGameCommandInfos(dir, prefix) - require 'TableFileData' - - tableFileData = TableFileData.new - tableFileData.setDir(dir, prefix) - infos = tableFileData.getGameCommandInfos - return infos - end - - def sendMessage(_to, message) - @rollResult += message - end - - def sendMessageToOnlySender(_nick_e, message) - @isSecret = true - @rollResult += message - end - - def sendMessageToChannels(message) - @rollResult += message - end - - def rand_results - @bcdice.rand_results - end - - def detailed_rand_results - @bcdice.detailed_rand_results - end -end - -if $0 === __FILE__ - bot = CgiDiceBot.new - - result = '' - if !ARGV.empty? - result, randResults = bot.roll(ARGV[0], ARGV[1]) - else - result = bot.rollFromCgiParamsDummy - end - - print(result + "\n") -end diff --git a/src/src_bcdice/configBcDice.rb b/src/src_bcdice/configBcDice.rb deleted file mode 100644 index 0c539f38e..000000000 --- a/src/src_bcdice/configBcDice.rb +++ /dev/null @@ -1,13 +0,0 @@ -# -*- coding: utf-8 -*- - -$isDebug = false - -$bcDiceVersion = "2.08.00" - -$DICE_MAXCNT = 200; # ダイスが振れる最大個数 -$DICE_MAXNUM = 1000; # ダイスの最大面数 -$isHandSort = true; # 手札をソートする必要があるか? -$OPEN_DICE = 'Open Dice!'; # シークレットダイスの出目表示コマンド -$OPEN_PLOT = 'Open Plot!'; # プロットの表示コマンド -$ADD_PLOT = 'PLOT'; # プロットの入力コマンド -$READY_CMD = '#HERE'; # 自分の居るチャンネルの宣言コマンド diff --git a/src/src_bcdice/dice/AddDice.rb b/src/src_bcdice/dice/AddDice.rb deleted file mode 100644 index af71d1a53..000000000 --- a/src/src_bcdice/dice/AddDice.rb +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- - -require "utils/normalize" -require "dice/add_dice/parser" -require "dice/add_dice/randomizer" - -class AddDice - def initialize(bcdice, diceBot) - @bcdice = bcdice - @diceBot = diceBot - @nick_e = @bcdice.nick_e - - @dice_list = [] - end - - #################### 加算ダイス ######################## - - def rollDice(string) - parser = Parser.new(string) - - command = parser.parse() - if parser.error? - return '1' - end - - randomizer = Randomizer.new(@bcdice, @diceBot, command.cmp_op) - total = command.lhs.eval(randomizer) - - output = - if randomizer.dice_list.size <= 1 && command.lhs.is_a?(Node::DiceRoll) - "#{@nick_e}: (#{command}) > #{total}" - else - "#{@nick_e}: (#{command}) > #{command.lhs.output} > #{total}" - end - - dice_list = randomizer.dice_list - num_one = dice_list.count(1) - num_max = dice_list.count(randomizer.sides) - - suffix, revision = @diceBot.getDiceRevision(num_max, randomizer.sides, total) - output += suffix - total += revision - - if command.cmp_op - dice_total = dice_list.inject(&:+) - output += @diceBot.check_result(total, dice_total, dice_list, randomizer.sides, command.cmp_op, command.rhs) - end - - output += @diceBot.getDiceRolledAdditionalText(num_one, num_max, randomizer.sides) - - return output - end -end diff --git a/src/src_bcdice/dice/RerollDice.rb b/src/src_bcdice/dice/RerollDice.rb deleted file mode 100644 index 6ab919e9f..000000000 --- a/src/src_bcdice/dice/RerollDice.rb +++ /dev/null @@ -1,234 +0,0 @@ -# -*- coding: utf-8 -*- - -require "utils/normalize" -require "utils/format" - -# 個数振り足しダイス -# -# ダイスを振り、条件を満たした出目の個数だけダイスを振り足す。振り足しがなくなるまでこれを繰り返す。 -# 成功条件を満たす出目の個数を調べ、成功数を表示する。 -# -# 例 -# 2R6+1R10[>3]>=5 -# 2R6+1R10>=5@>3 -# -# 振り足し条件は角カッコかコマンド末尾の @ で指定する。 -# [>3] の場合、3より大きい出目が出たら振り足す。 -# [3] のように数値のみ指定されている場合、成功条件の比較演算子を流用する。 -# 上記の例の時、出目が -# "2R6" -> [5,6] [5,4] [1,3] -# "1R10" -> [9] [1] -# だとすると、 >=5 に該当するダイスは5つなので成功数5となる。 -# -# 成功条件が書かれていない場合、成功数0として扱う。 -# 振り足し条件が数値のみ指定されている場合、比較演算子は >= が指定されたとして振舞う。 -class RerollDice - def initialize(bcdice, diceBot) - @bcdice = bcdice - @diceBot = diceBot - @nick_e = @bcdice.nick_e - end - - def rollDice(string) - unless parse(string) - return nil - end - - unless @reroll_threshold - return msg_invalid_reroll_number(string) - end - - dice_queue = @notation.split("+").map do |xRn| - x, n = xRn.split("R").map(&:to_i) - [x, n, 0] - end - - unless dice_queue.all? { |d| valid_reroll_rule?(d[1], @reroll_cmp_op, @reroll_threshold) } - return msg_invalid_reroll_number(string) - end - - success_count = 0 - dice_str_list = [] - dice_cnt_total = 0 - one_count = 0 - loop_count = 0 - - dice_total_count = 0 - - while !dice_queue.empty? && @diceBot.should_reroll?(loop_count) - # xRn - x, n, depth = dice_queue.shift - loop_count += 1 - dice_total_count += x - - dice_list = roll_(x, n) - success_count += dice_list.count() { |val| compare(val, @cmp_op, @target_number) } if @cmp_op - reroll_count = dice_list.count() { |val| compare(val, @reroll_cmp_op, @reroll_threshold) } - - dice_str_list.push(dice_list.join(",")) - - if depth.zero? - one_count += dice_list.count(1) - end - - if reroll_count > 0 - dice_queue.push([reroll_count, n, depth + 1]) - end - end - - grich_text = @diceBot.getGrichText(one_count, dice_total_count, success_count) - - sequence = [ - expr(), - dice_str_list.join(" + "), - "成功数#{success_count}", - trim_prefix(" > ", grich_text), - ].compact - - return "#{@nick_e}: #{sequence.join(' > ')}" - end - - private - - # @param command [String] - # @return [Boolean] - def parse(command) - m = /^S?(\d+R\d+(?:\+\d+R\d+)*)(?:\[([<>=]+)?(\d+)\])?(?:([<>=]+)(\d+))?(?:@([<>=]+)?(\d+))?$/.match(command) - unless m - return false - end - - @notation = m[1] - @cmp_op = Normalize.comparison_operator(m[4]) - @target_number = @cmp_op ? m[5].to_i : nil - unless @cmp_op - @cmp_op, @target_number = target_from_default() - end - - @reroll_cmp_op = decide_reroll_cmp_op(m) - @reroll_threshold = decide_reroll_threshold(m[3] || m[7], @target_number) - - return true - end - - # @return [Array<(Symbol, Integer)>] - # @return [Array<(nil, nil)>] - def target_from_default - m = /^([<>=]+)(\d+)$/.match(@diceBot.defaultSuccessTarget) - unless m - return nil, nil - end - - cmp_op = Normalize.comparison_operator(m[1]) - target_number = cmp_op ? m[2].to_i : nil - return cmp_op, target_number - end - - # @param m [MatchData] - # @return [Symbol] - def decide_reroll_cmp_op(m) - bracket_op = m[2] - bracket_number = m[3] - at_op = m[6] - at_number = m[7] - cmp_op = m[4] - - op = - if bracket_op && bracket_number - bracket_op - elsif at_op && at_number - at_op - else - cmp_op - end - - Normalize.comparison_operator(op) || :>= - end - - # @param captured_threshold [String, nil] - # @param target_number [Integer, nil] - # @return [Integer] - # @return [nil] - def decide_reroll_threshold(captured_threshold, target_number) - if captured_threshold - captured_threshold.to_i - elsif @diceBot.rerollNumber != 0 - @diceBot.rerollNumber - else - target_number - end - end - - # @return [String] - def expr() - reroll_cmp_op_text = @cmp_op != @reroll_cmp_op ? Format.comparison_operator(@reroll_cmp_op) : nil - cmp_op_text = Format.comparison_operator(@cmp_op) - - "(#{@notation}[#{reroll_cmp_op_text}#{@reroll_threshold}]#{cmp_op_text}#{@target_number})" - end - - # @param command [String] - # @return [String] - def msg_invalid_reroll_number(command) - "#{@nick_e}: #{command} > 条件が間違っています。2R6>=5 あるいは 2R6[5] のように振り足し目標値を指定してください。" - end - - # @param sides [Integer] - # @param cmp_op [Symbol] - # @param reroll_threshold [Integer] - # @return [Boolean] - def valid_reroll_rule?(sides, cmp_op, reroll_threshold) # 振り足しロールの条件確認 - case cmp_op - when :<= - reroll_threshold < sides - when :< - reroll_threshold <= sides - when :>= - reroll_threshold > 1 - when :> - reroll_threshold >= 1 - when :'!=' - (1..sides).include?(reroll_threshold) - else - true - end - end - - # @param times [Integer] - # @param sides [Integer] - # @return [Array] - def roll_(times, sides) - _, dice_list, = @bcdice.roll(times, sides, (@diceBot.sortType & 2)) - dice_list.split(",").map(&:to_i) - end - - # @param prefix [String] - # @param string [String] - # @param [String, nil] - def trim_prefix(prefix, string) - if string.start_with?(prefix) - string = string[prefix.size..-1] - end - - if string.empty? - nil - else - string - end - end - - # 整数を比較する - # Ruby 1.8のケア用 - # - # @param lhs [Integer] - # @param op [Symbol] - # @param rhs [Integer] - # @return [Boolean] - def compare(lhs, op, rhs) - if op == :'!=' - lhs != rhs - else - lhs.send(op, rhs) - end - end -end diff --git a/src/src_bcdice/dice/UpperDice.rb b/src/src_bcdice/dice/UpperDice.rb deleted file mode 100644 index 0f656121f..000000000 --- a/src/src_bcdice/dice/UpperDice.rb +++ /dev/null @@ -1,168 +0,0 @@ -# -*- coding: utf-8 -*- - -require 'utils/ArithmeticEvaluator' -require 'utils/normalize' -require 'utils/format' -require 'utils/modifier_formatter' - -# 上方無限ロール -# -# ダイスを1つ振る、その出目が閾値より大きければダイスを振り足すのを閾値未満の出目が出るまで繰り返す。 -# これを指定したダイス数だけおこない、それぞれのダイスの合計値を求める。 -# それらと目標値を比較し、成功した数を表示する。 -# -# フォーマットは以下の通り -# 2U4+1U6[4]>=6 -# 2U4+1U6>=6@4 -# -# 閾値は角カッコで指定するか、コマンドの末尾に @6 のように指定する。 -# 閾値の指定が重複した場合、角カッコが優先される。 -# この時、出目が -# "2U4" -> 3[3], 10[4,4,2] -# "1U6" -> 6[4,2] -# だとすると、 >=6 に該当するダイスは2つなので成功数2となる。 -# -# 2U4[4]+10>=6 のように修正値を指定できる。修正値は全てのダイスに補正を加え、以下のようになる。 -# "2U4" -> 3[3]+10=13, 10[4,4,2]+10=20 -# -# 比較演算子が書かれていない場合、ダイスの最大値と全ダイスの合計値が出力される。 -# 全ダイスの合計値には補正値が1回だけ適用される -# 2U4[4]+10 -# "2U4" -> 3[3]+10=13, 10[4,4,2]+10=20 -# 最大値:20 -# 合計値:23 = 3[3]+10[4,4,2]+10 -class UpperDice - include ModifierFormatter - - def initialize(bcdice, diceBot) - @bcdice = bcdice - @diceBot = diceBot - @nick_e = @bcdice.nick_e - end - - # 上方無限ロールを実行する - # - # @param string [String] - # @return [String] - def rollDice(string) - unless (m = /^S?(\d+U\d+(?:\+\d+U\d+)*)(?:\[(\d+)\])?([\+\-\d]*)(?:([<>=]+)(\d+))?(?:@(\d+))?/i.match(string)) - return '1' - end - - @command = m[1] - @cmp_op = Normalize.comparison_operator(m[4]) - @target_number = @cmp_op ? m[5].to_i : nil - @reroll_threshold = reroll_threshold(m[2] || m[6]) - - @modify_number = m[3] ? ArithmeticEvaluator.new.eval(m[3], @diceBot.fractionType.to_sym) : 0 - - if @reroll_threshold <= 1 - return "#{@nick_e}: (#{expr()}) > 無限ロールの条件がまちがっています" - end - - roll_list = [] - @command.split('+').each do |u| - times, sides = u.split("U", 2).map(&:to_i) - roll_list.concat(roll(times, sides)) - end - - result = - if @cmp_op - success_count = roll_list.count do |e| - x = e[:sum] + @modify_number - # Ruby 1.8のケア - @cmp_op == :'!=' ? x != @target_number : x.send(@cmp_op, @target_number) - end - "成功数#{success_count}" - else - sum_list = roll_list.map { |e| e[:sum] } - total = sum_list.inject(0, :+) + @modify_number - max = sum_list.map { |i| i + @modify_number }.max - "#{max}/#{total}(最大/合計)" - end - - sequence = [ - "#{@nick_e}: (#{expr()})", - dice_text(roll_list) + format_modifier(@modify_number), - result - ] - - return sequence.join(" > ") - end - - private - - # ダイスロールし、ダイスボットのソート設定に応じてソートする - # - # @param times [Integer] ダイスの個数 - # @param sides [Integer] ダイスの面数 - # @return [Array] - def roll(times, sides) - if @diceBot.upperRollThreshold == "Max" - @reroll_threshold = sides - end - - ret = Array.new(times) do - list = roll_ones(sides) - {:sum => list.inject(0, :+), :list => list} - end - - if @diceBot.sortType & 2 != 0 - ret = ret.sort_by { |e| e[:sum] } - end - - return ret - end - - # 一つだけダイスロールする - # - # @param sides [Integer] ダイスの面数 - # @return [Array] - def roll_ones(sides) - dice_list = [] - - loop do - value, = @bcdice.roll(1, sides) - dice_list.push(value) - break if value < @reroll_threshold - end - - return dice_list - end - - # ダイスロールの結果を文字列に変換する - # 振り足しがなければその数値、振り足しがあれば合計と各ダイスの出目を出力する - # - # @param roll_list [Array] - # @return [String] - def dice_text(roll_list) - roll_list.map do |e| - if e[:list].size == 1 - e[:sum] - else - "#{e[:sum]}[#{e[:list].join(',')}]" - end - end.join(",") - end - - # 振り足しの閾値を得る - # - # @param target [String] - # @return [Integer] - def reroll_threshold(target) - if target - target.to_i - elsif @diceBot.upperRollThreshold == "Max" - 2 - else - @diceBot.upperRollThreshold - end - end - - # パース済みのコマンドを文字列で表示する - # - # @return [String] - def expr - "#{@command}[#{@reroll_threshold}]#{format_modifier(@modify_number)}#{Format.comparison_operator(@cmp_op)}#{@target_number}" - end -end diff --git a/src/src_bcdice/dice/add_dice/node.rb b/src/src_bcdice/dice/add_dice/node.rb deleted file mode 100644 index a64f0492c..000000000 --- a/src/src_bcdice/dice/add_dice/node.rb +++ /dev/null @@ -1,456 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class AddDice - # 加算ロールの構文解析木のノードを格納するモジュール - module Node - # 加算ロールコマンドのノード。 - # - # 目標値が設定されていない場合は +lhs+ のみを使用する。 - # 目標値が設定されている場合は、+lhs+、+cmp_op+、+rhs+ を使用する。 - class Command - # 左辺のノード - # @return [Object] - attr_reader :lhs - # 比較演算子 - # @return [Symbol] - attr_reader :cmp_op - # 右辺のノード - # @return [Integer, String] - attr_reader :rhs - - # ノードを初期化する - # @param [Object] lhs 左辺のノード - # @param [Symbol] cmp_op 比較演算子 - # @param [Integer, String] rhs 右辺のノード - def initialize(lhs, cmp_op, rhs) - @lhs = lhs - @cmp_op = cmp_op - @rhs = rhs - end - - # 文字列に変換する - # @return [String] - def to_s - @lhs.to_s + cmp_op_text + @rhs.to_s - end - - # ノードのS式を返す - # @return [String] - def s_exp - if @cmp_op - "(Command (#{@cmp_op} #{@lhs.s_exp} #{@rhs}))" - else - "(Command #{@lhs.s_exp})" - end - end - - private - - # メッセージ中で比較演算子をどのように表示するかを返す - # @return [String] - def cmp_op_text - case @cmp_op - when :'!=' - '<>' - when :== - '=' - else - @cmp_op.to_s - end - end - end - - # 二項演算子のノード - class BinaryOp - # ノードを初期化する - # @param [Object] lhs 左のオペランドのノード - # @param [Symbol] op 演算子 - # @param [Object] rhs 右のオペランドのノード - def initialize(lhs, op, rhs) - @lhs = lhs - @op = op - @rhs = rhs - end - - # ノードを評価する - # - # 左右のオペランドをそれぞれ再帰的に評価した後で、演算を行う。 - # - # @param [Randomizer] randomizer ランダマイザ - # @return [Integer] 評価結果 - def eval(randomizer) - lhs = @lhs.eval(randomizer) - rhs = @rhs.eval(randomizer) - - return calc(lhs, rhs) - end - - # 文字列に変換する - # @return [String] - def to_s - "#{@lhs}#{@op}#{@rhs}" - end - - # メッセージへの出力を返す - # @return [String] - def output - "#{@lhs.output}#{@op}#{@rhs.output}" - end - - # ノードのS式を返す - # @return [String] - def s_exp - "(#{op_for_s_exp} #{@lhs.s_exp} #{@rhs.s_exp})" - end - - private - - # 演算を行う - # @param [Integer] lhs 左のオペランド - # @param [Integer] rhs 右のオペランド - # @return [Integer] 演算の結果 - def calc(lhs, rhs) - lhs.send(@op, rhs) - end - - # S式で使う演算子の表現を返す - # @return [String] - def op_for_s_exp - @op - end - end - - # 除算ノードの基底クラス - # - # 定数 +ROUNDING_METHOD+ で端数処理方法を示す記号 - # ( +'U'+, +'R'+, +''+ ) を定義すること。 - # また、除算および端数処理を行う +divide_and_round+ メソッドを実装すること。 - class DivideBase < BinaryOp - # ノードを初期化する - # @param [Object] lhs 左のオペランドのノード - # @param [Object] rhs 右のオペランドのノード - def initialize(lhs, rhs) - super(lhs, :/, rhs) - end - - # 文字列に変換する - # - # 通常の結果の末尾に、端数処理方法を示す記号を付加する。 - # - # @return [String] - def to_s - "#{super}#{rounding_method}" - end - - # メッセージへの出力を返す - # - # 通常の結果の末尾に、端数処理方法を示す記号を付加する。 - # - # @return [String] - def output - "#{super}#{rounding_method}" - end - - private - - # 端数処理方法を示す記号を返す - # @return [String] - def rounding_method - self.class::ROUNDING_METHOD - end - - # S式で使う演算子の表現を返す - # @return [String] - def op_for_s_exp - "#{@op}#{rounding_method}" - end - - # 演算を行う - # @param [Integer] lhs 左のオペランド - # @param [Integer] rhs 右のオペランド - # @return [Integer] 演算の結果 - def calc(lhs, rhs) - if rhs.zero? - return 1 - end - - return divide_and_round(lhs, rhs) - end - - # 除算および端数処理を行う - # @param [Integer] _dividend 被除数 - # @param [Integer] _divisor 除数(0以外) - # @return [Integer] - def divide_and_round(_dividend, _divisor) - raise NotImplementedError - end - end - - # 除算(切り上げ)のノード - class DivideWithRoundingUp < DivideBase - # 端数処理方法を示す記号 - ROUNDING_METHOD = 'U' - - private - - # 除算および端数処理を行う - # @param [Integer] dividend 被除数 - # @param [Integer] divisor 除数(0以外) - # @return [Integer] - def divide_and_round(dividend, divisor) - (dividend.to_f / divisor).ceil - end - end - - # 除算(四捨五入)のノード - class DivideWithRoundingOff < DivideBase - # 端数処理方法を示す記号 - ROUNDING_METHOD = 'R' - - private - - # 除算および端数処理を行う - # @param [Integer] dividend 被除数 - # @param [Integer] divisor 除数(0以外) - # @return [Integer] - def divide_and_round(dividend, divisor) - (dividend.to_f / divisor).round - end - end - - # 除算(切り捨て)のノード - class DivideWithRoundingDown < DivideBase - # 端数処理方法を示す記号 - ROUNDING_METHOD = '' - - private - - # 除算および端数処理を行う - # @param [Integer] dividend 被除数 - # @param [Integer] divisor 除数(0以外) - # @return [Integer] - def divide_and_round(dividend, divisor) - (dividend / divisor).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - end - end - - # 符号反転のノード - class Negate - # 符号反転の対象 - # @return [Object] - attr_reader :body - - # ノードを初期化する - # @param [Object] body 符号反転の対象 - def initialize(body) - @body = body - end - - # ノードを評価する - # - # 対象オペランドを再帰的に評価した後、評価結果の符号を反転する。 - # - # @param [Randomizer] randomizer ランダマイザ - # @return [Integer] 評価結果 - def eval(randomizer) - -@body.eval(randomizer) - end - - # 文字列に変換する - # @return [String] - def to_s - "-#{@body}" - end - - # メッセージへの出力を返す - # @return [String] - def output - "-#{@body.output}" - end - - # ノードのS式を返す - # @return [String] - def s_exp - "(- #{@body.s_exp})" - end - end - - # ダイスロールのノード - class DiceRoll - # ノードを初期化する - # @param [Number] times ダイスを振る回数のノード - # @param [Number] sides ダイスの面数のノード - def initialize(times, sides) - @times = times.literal - @sides = sides.literal - - # ダイスを振った結果の出力 - @text = nil - end - - # ノードを評価する(ダイスを振る) - # - # 評価結果は出目の合計値になる。 - # 出目はランダマイザに記録される。 - # - # @param [Randomizer] randomizer ランダマイザ - # @return [Integer] 評価結果(出目の合計値) - def eval(randomizer) - dice_groups = randomizer.roll(@times, @sides) - - # TODO: Ruby 2.4以降では Array#sum が使える - total = dice_groups.flatten.reduce(0, &:+) - - dice_str = dice_groups. - map { |dice_list| "[#{dice_list.join(',')}]" }. - join - @text = "#{total}#{dice_str}" - - return total - end - - # 文字列に変換する - # @return [String] - def to_s - "#{@times}D#{@sides}" - end - - # メッセージへの出力を返す - # @return [String] - def output - @text - end - - # ノードのS式を返す - # @return [String] - def s_exp - "(DiceRoll #{@times} #{@sides})" - end - end - - # フィルタ処理付きダイスロールのノード。 - # - # ダイスロール後、条件に従って出目を選択し、和を求める。 - class DiceRollWithFilter - # フィルタの構造体 - # - # 各フィルタには、あらかじめソートされた出目の配列が渡される。 - # - # @!attribute abbr - # @return [Symbol] フィルタの略称 - # @!attribute apply - # @return [Proc] フィルタ処理の内容 - Filter = Struct.new(:abbr, :apply) - - # 大きな出目から複数個取る - KEEP_HIGHEST = Filter.new( - :KH, - lambda { |sorted_values, n| sorted_values.reverse.take(n) } - ).freeze - - # 小さな出目から複数個取る - KEEP_LOWEST = Filter.new( - :KL, - lambda { |sorted_values, n| sorted_values.take(n) } - ).freeze - - # 大きな出目から複数個除く - DROP_HIGHEST = Filter.new( - :DH, - lambda { |sorted_values, n| sorted_values.reverse.drop(n) } - ).freeze - - # 小さな出目から複数個除く - DROP_LOWEST = Filter.new( - :DL, - lambda { |sorted_values, n| sorted_values.drop(n) } - ).freeze - - # ノードを初期化する - # @param [Number] times ダイスを振る回数のノード - # @param [Number] sides ダイスの面数のノード - # @param [Number] n_filtering ダイスを残す/減らす個数のノード - # @param [Filter] filter フィルタ - def initialize(times, sides, n_filtering, filter) - @times = times.literal - @sides = sides.literal - @n_filtering = n_filtering.literal - @filter = filter - - # ダイスを振った結果の出力 - @text = nil - end - - # ノードを評価する(ダイスを振り、出目を選択して和を求める) - # - # 評価結果は出目の合計値になる。 - # 出目はランダマイザに記録される。 - # - # @param [Randomizer] randomizer ランダマイザ - # @return [Integer] 評価結果(出目の合計値) - def eval(randomizer) - sorted_values = randomizer.roll_once(@times, @sides).sort - total = @filter. - apply[sorted_values, @n_filtering]. - reduce(0, &:+) - - @text = "#{total}[#{sorted_values.join(',')}]" - - return total - end - - # 文字列に変換する - # @return [String] - def to_s - "#{@times}D#{@sides}#{@filter.abbr}#{@n_filtering}" - end - - # メッセージへの出力を返す - # @return [String] - def output - @text - end - - # ノードのS式を返す - # @return [String] - def s_exp - "(DiceRollWithFilter #{@times} #{@sides} #{@filter.abbr.inspect} #{@n_filtering})" - end - end - - # 数値のノード - class Number - # 値 - # @return [Integer] - attr_reader :literal - - # ノードを初期化する - # @param [Integer] literal 値 - def initialize(literal) - @literal = literal - end - - # 符号を反転した結果の数値ノードを返す - # @return [Number] - def negate - Number.new(-@literal) - end - - # ノードを評価する - # @return [Integer] 格納している値 - def eval(_randomizer) - @literal - end - - # 文字列に変換する - # @return [String] - def to_s - @literal.to_s - end - - alias output to_s - alias s_exp to_s - end - end -end diff --git a/src/src_bcdice/dice/add_dice/parser.rb b/src/src_bcdice/dice/add_dice/parser.rb deleted file mode 100644 index 66267b031..000000000 --- a/src/src_bcdice/dice/add_dice/parser.rb +++ /dev/null @@ -1,253 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require "utils/ArithmeticEvaluator" -require "utils/normalize" -require "dice/add_dice/node" - -class AddDice - # 加算ロールの構文解析器のクラス - class Parser - # 構文解析器を初期化する - # @param [String] expr 構文解析対象の文字列 - def initialize(expr) - # 構文解析対象の文字列 - @expr = expr - # 読み込んだトークンのインデックス - @idx = 0 - # 構文解析エラーが発生したかどうか - @error = false - # 式にダイスロールが含まれるか - @contain_dice_roll = false - end - - # 構文解析を実行する - # @return [Node::Command] 加算ロールコマンド - def parse() - lhs, cmp_op, rhs = @expr.partition(/[<>=]+/) - - cmp_op = Normalize.comparison_operator(cmp_op) - if !rhs.empty? && rhs != "?" - rhs = ArithmeticEvaluator.new.eval(rhs) - end - - @tokens = tokenize(lhs) - lhs = expr() - - if @idx != @tokens.size || !@contain_dice_roll - @error = true - end - - return AddDice::Node::Command.new(lhs, cmp_op, rhs) - end - - # 構文解析エラーが発生したかどうかを返す - # @return [Boolean] - def error? - @error - end - - private - - # 構文解析対象の文字列をトークンの配列に変換する - # @return [Array] - def tokenize(expr) - expr.gsub(%r{[\+\-\*/DURSKHL@]}) { |e| " #{e} " }.split(' ') - end - - # 式 - def expr - consume("S") - - return add() - end - - # 加算、減算 - def add - node = mul() - - loop do - if consume("+") - op, rhs = sub_negative_number(:+, mul()) - node = AddDice::Node::BinaryOp.new(node, op, rhs) - elsif consume("-") - op, rhs = sub_negative_number(:-, mul()) - node = AddDice::Node::BinaryOp.new(node, op, rhs) - else - break - end - end - - return node - end - - # TODO: 処理の説明を書く - def sub_negative_number(op, rhs) - if rhs.is_a?(Node::Number) && rhs.literal < 0 - if op == :+ - return [:-, rhs.negate] - elsif op == :- - return [:+, rhs.negate] - end - end - - [op, rhs] - end - - # 乗算、除算 - def mul - node = unary() - - loop do - if consume("*") - node = AddDice::Node::BinaryOp.new(node, :*, unary()) - elsif consume("/") - rhs = unary() - klass = divide_node_class() - node = klass.new(node, rhs) - else - break - end - end - - return node - end - - # 端数処理方法を示す記号を読み込み、対応する除算ノードのクラスを返す - # @return [Class] 除算ノードのクラス - def divide_node_class - if consume('U') - # 切り上げ - Node::DivideWithRoundingUp - elsif consume('R') - # 四捨五入 - Node::DivideWithRoundingOff - else - # 切り捨て - Node::DivideWithRoundingDown - end - end - - # 単項演算 - def unary - if consume("+") - unary() - elsif consume("-") - node = unary() - - case node - when Node::Negate - node.body - when Node::Number - node.negate() - else - AddDice::Node::Negate.new(node) - end - else - term() - end - end - - # 項:ダイスロール、数値 - def term - num = expect_number() - if consume("D") - times = num - sides = expect_number() - - filter = dice_roll_filter() - if filter - # ダイスロール後のフィルタリングあり - n_filtering = expect_number() - @contain_dice_roll = true - return Node::DiceRollWithFilter.new(times, sides, n_filtering, filter) - end - - # 通常のダイスロール - @contain_dice_roll = true - return Node::DiceRoll.new(times, sides) - end - - return num - end - - # ダイスロール:フィルタ処理 - def dice_roll_filter - if consume('K', 'H') - # 大きな出目から複数個取る - Node::DiceRollWithFilter::KEEP_HIGHEST - elsif consume('K', 'L') - # 小さな出目から複数個取る - Node::DiceRollWithFilter::KEEP_LOWEST - elsif consume('D', 'H') - # 大きな出目から複数個除く - Node::DiceRollWithFilter::DROP_HIGHEST - elsif consume('D', 'L') - # 小さな出目から複数個除く - Node::DiceRollWithFilter::DROP_LOWEST - end - end - - # トークンを消費する - # - # トークンと期待した文字列が合致していた場合、次のトークンに進む。 - # 合致していなかった場合は、進まない。 - # - # @param [String] expected 期待する文字列 - # @return [true] トークンと期待した文字列が合致していた場合 - # @return [false] トークンと期待した文字列が合致していなかった場合 - def consume(*expected) - target = @tokens.slice(@idx, expected.length) - unless target == expected - return false - end - - @idx += expected.length - return true - end - - # 指定された文字列のトークンを要求する - # - # トークンと期待した文字列が合致していなかった場合、エラーとする。 - # エラーの有無にかかわらず、次のトークンに進む。 - # - # @param [String] str 期待する文字列 - # @return [void] - def expect(str) - if @tokens[@idx] != str - @error = true - end - - @idx += 1 - end - - # 整数のトークンを要求する - # - # 整数のトークンならば、対応する整数のノードを返す。 - # そうでなければエラーとし、整数0のノードを返す。 - # - # エラーの有無にかかわらず、次のトークンに進む。 - # - # @return [Node::Number] 整数のノード - def expect_number() - unless integer?(@tokens[@idx]) - @error = true - @idx += 1 - return AddDice::Node::Number.new(0) - end - - ret = @tokens[@idx].to_i - @idx += 1 - return AddDice::Node::Number.new(ret) - end - - # 文字列が整数かどうかを返す - # @param [String] str 対象文字列 - # @return [Boolean] - def integer?(str) - # Ruby 1.9 以降では Kernel.#Integer を使うべき - # Ruby 1.8 にもあるが、基数を指定できない問題がある - !/^\d+$/.match(str).nil? - end - end -end diff --git a/src/src_bcdice/dice/add_dice/randomizer.rb b/src/src_bcdice/dice/add_dice/randomizer.rb deleted file mode 100644 index 960e64e82..000000000 --- a/src/src_bcdice/dice/add_dice/randomizer.rb +++ /dev/null @@ -1,92 +0,0 @@ -# -*- coding: utf-8 -*- - -class AddDice - class Randomizer - attr_reader :dicebot, :cmp_op, :dice_list, :sides - - def initialize(bcdice, dicebot, cmp_op) - @bcdice = bcdice - @dicebot = dicebot - @cmp_op = cmp_op - @sides = 0 - @dice_list = [] - end - - # ダイスを振る - # @param [Integer] times ダイス数 - # @param [Integer] sides 面数 - # @return [Array>] 出目のグループの配列 - def roll(times, sides) - # 振り足し分も含めた出目グループの配列 - dice_groups = [] - - queue = [times] - while !queue.empty? - times = queue.shift - - dice_list = roll_once(times, sides) - @dice_list.concat(dice_list) - - dice_groups.push(dice_list) - - enqueue_reroll(dice_list, queue, times) - end - - return dice_groups - end - - # ダイスを振る(振り足しなしの1回分) - # @param [Integer] times ダイス数 - # @param [Integer] sides 面数 - # @return [Array] 出目の配列 - def roll_once(times, sides) - @sides = sides if @sides < sides - - if sides == 66 - return Array.new(times) { @bcdice.getD66Value() } - end - - _, dice_str, = @bcdice.roll(times, sides, @dicebot.sortType & 1) - - # 現在は出目が文字列で返ってきてしまうので、整数の配列に変換する - return dice_str.split(',').map(&:to_i) - end - - private - - def double_check? - if @dicebot.sameDiceRerollCount != 0 # 振り足しありのゲームでダイスが二個以上 - if @dicebot.sameDiceRerollType <= 0 # 判定のみ振り足し - return true if @cmp_op - elsif @dicebot.sameDiceRerollType <= 1 # ダメージのみ振り足し - debug('ダメージのみ振り足し') - return true unless @cmp_op - else # 両方振り足し - return true - end - end - - return false - end - - def enqueue_reroll(dice_list, dice_queue, roll_times) - unless double_check? && (roll_times >= 2) - return - end - - count_bucket = {} - - dice_list.each do |val| - count_bucket[val] ||= 0 - count_bucket[val] += 1 - end - - reroll_threshold = @dicebot.sameDiceRerollCount == 1 ? roll_times : @dicebot.sameDiceRerollCount - count_bucket.each do |_, num| - if num >= reroll_threshold - dice_queue.push(num) - end - end - end - end -end diff --git a/src/src_bcdice/diceBot/AFF2e.rb b/src/src_bcdice/diceBot/AFF2e.rb deleted file mode 100644 index c661e62eb..000000000 --- a/src/src_bcdice/diceBot/AFF2e.rb +++ /dev/null @@ -1,135 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class AFF2e < DiceBot - # ゲームシステムの識別子 - ID = 'AFF2e' - - # ゲームシステム名 - NAME = 'ADVANCED FIGHTING FANTASY 2nd Edition' - - # ゲームシステム名の読みがな - SORT_KEY = 'あとはんすとふあいていんくふあんたしい2' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 12 ? '失敗(大失敗ではない)' : '大失敗!' - else - total <= diff ? '成功' : '失敗' - end - end - - def critical(total) - case total - when 2 - 'ファンブル!' - when 12 - '強打!' - end - end - - def clamp(i, min, max) - if i < min - min - elsif i > max - max - else - i - end - end - - def rollDiceCommand(command) - case command - when /\AFF/ - # 対抗なしロール - # '成功' or '失敗' を出力する - # - md = Regexp.last_match - term = md.post_match - - # 目標値 - diff = eval_term(term) - - dice_command = "2D6<=#{diff}" - total, dice_str = roll(2, 6) - expr = "#{total}[#{dice_str}]" - succ = successful_or_failed(total, diff) - sequence = [ parentheses(dice_command), expr, succ ] - when /\AFR/ - # 対抗ロール - # 値を出力する - # - md = Regexp.last_match - term = md.post_match - - # 補正値 - corr = eval_term(term) - - dice_command = "2D6#{explicit_sign corr}" - total, dice_str = roll(2, 6) - expr = "#{total}[#{dice_str}]#{explicit_sign corr}" - crit = critical(total) - sequence = [ parentheses(dice_command), expr, crit, total + corr ].compact - when /\AFD/ - # 武器防具ロール - # ダメージを出力する - # - md = Regexp.last_match - term = md.post_match - md = /\A\[(.+)\]/.match(term) - unless md - return 'ダメージスロットは必須です。', false - end - - term = md.post_match - damage_slots = md[1].split(',').map { |t| eval_term(t) } - if damage_slots.size != 7 - return 'ダメージスロットの長さに誤りがあります。', false - end - - # 補正値 - corr = eval_term(term) - - dice_command = "1D6#{explicit_sign corr}" - total, dice_str = roll(1, 6) - expr = "#{total}#{explicit_sign corr}" - slot_number = clamp(total + corr, 1, 7) - damage = damage_slots[slot_number - 1] - sequence = [ parentheses(dice_command), expr, total + corr, "#{damage}ダメージ" ] - end - - result = sequence.join(' > ') - secret = false - return result, secret - end -end diff --git a/src/src_bcdice/diceBot/AceKillerGene.rb b/src/src_bcdice/diceBot/AceKillerGene.rb deleted file mode 100644 index 327488e8b..000000000 --- a/src/src_bcdice/diceBot/AceKillerGene.rb +++ /dev/null @@ -1,52 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/GardenOrder' - -class AceKillerGene < GardenOrder - # ゲームシステムの識別子 - ID = 'AceKillerGene' - - # ゲームシステム名 - NAME = 'エースキラージーン' - - # ゲームシステム名の読みがな - SORT_KEY = 'ええすきらあしいん' - - # ダイスボットの使い方 - HELP_MESSAGE = < 4 - - return checkRoll(diceCount, target, damage, criticalTrigger, criticalNumber) - end - - return nil - end - - def checkRoll(diceCount, target, damage, criticalTrigger, criticalNumber) - totalSuccessCount = 0 - totalCriticalCount = 0 - text = "" - - rollCount = diceCount - - while rollCount > 0 - _dice, diceText = roll(rollCount, 10, @sortType) - diceArray = diceText.split(/,/).collect { |i| i.to_i } - - successCount = diceArray.count { |i| i <= target } - criticalCount = diceArray.count { |i| i <= criticalNumber } - - totalSuccessCount += successCount - totalCriticalCount += criticalCount - - text += "+" unless text.empty? - text += "#{successCount}[#{diceText}]" - - rollCount = criticalCount - end - - result = "" - isDamage = (damage != 0) - - if isDamage - totalDamage = totalSuccessCount * damage + totalCriticalCount * criticalTrigger - - result += "(#{diceCount}D10\<\=#{target}) > #{text} > Hits:#{totalSuccessCount}*#{damage}" - result += " + Trigger:#{totalCriticalCount}*#{criticalTrigger}" if criticalTrigger > 0 - result += " > #{totalDamage}ダメージ" - else - result += "(#{diceCount}D10\<\=#{target}) > #{text} > 成功数:#{totalSuccessCount}" - end - - result += " / #{totalCriticalCount}クリティカル" if totalCriticalCount > 0 - - return result - end -end diff --git a/src/src_bcdice/diceBot/Alsetto.rb b/src/src_bcdice/diceBot/Alsetto.rb deleted file mode 100644 index dd4d6e459..000000000 --- a/src/src_bcdice/diceBot/Alsetto.rb +++ /dev/null @@ -1,121 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Alsetto < DiceBot - # ゲームシステムの識別子 - ID = 'Alsetto' - - # ゲームシステム名 - NAME = '詩片のアルセット' - - # ゲームシステム名の読みがな - SORT_KEY = 'うたかたのあるせつと' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 - _dice, diceText = roll(rollCount, 6, @sortType) - diceArray = diceText.split(/,/).collect { |i| i.to_i } - - successCount = 0 - criticalCount = 0 - - diceArray.each do |i| - if i <= target - successCount += 1 - end - - if i <= criticalNumber - criticalCount += 1 - end - end - - totalSuccessCount += successCount - totalCriticalCount += 1 unless criticalCount == 0 - - text += "+" unless text.empty? - text += "#{successCount}[#{diceText}]" - - break unless isCritical - - rollCount = criticalCount - end - - isDamage = (damage != 0) - - if isDamage - totalDamage = totalSuccessCount * damage - - result = "(#{rapid}D6\<\=#{target}) > #{text} > Hits:#{totalSuccessCount}*#{damage} > #{totalDamage}ダメージ" - else - result = "(#{rapid}D6\<\=#{target}) > #{text} > 成功数:#{totalSuccessCount}" - end - - if isCritical - result += " / #{totalCriticalCount}トライアンフ" - end - - return result - end -end diff --git a/src/src_bcdice/diceBot/Alshard.rb b/src/src_bcdice/diceBot/Alshard.rb deleted file mode 100644 index 1050ea8ca..000000000 --- a/src/src_bcdice/diceBot/Alshard.rb +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/SRS' - -# アルシャードのダイスボット -class Alshard < SRS - # ゲームシステム名 - NAME = 'アルシャード' - - # ゲームシステム名の読みがな - SORT_KEY = 'あるしやあと' - - # ゲームシステムの識別子 - ID = 'Alshard' - - # 固有のコマンドの接頭辞を設定する - setPrefixes(['2D6.*', 'AL.*']) - - # 成功判定のエイリアスコマンドを設定する - set_aliases_for_srs_roll('AL') -end diff --git a/src/src_bcdice/diceBot/AlterRaise.rb b/src/src_bcdice/diceBot/AlterRaise.rb deleted file mode 100644 index 30717fe43..000000000 --- a/src/src_bcdice/diceBot/AlterRaise.rb +++ /dev/null @@ -1,278 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class AlterRaise < DiceBot - # ゲームシステムの識別子 - ID = 'AlterRaise' - - # ゲームシステム名 - NAME = 'アルトレイズ' - - # ゲームシステム名の読みがな - SORT_KEY = 'あるとれいす' - - # ダイスボットの使い方 - HELP_MESSAGE = < 1 - dice = roc - dice = 12 if dice > 12 - diceText = '' - else - dice, diceText = roll(2, 6) - diceText = "(#{diceText})" - end - - tableText = get_table_by_number(dice, table) - # ''だと\nは文字列扱いに。 - tableText += "\n【達成値7以上】GM:攻撃ルーチン1つを開示(番号はペアPLが指定) PL:戦闘開始時のアクセルレベル+1" if dice >= 7 - return "#{name} > #{dice}#{diceText}:#{tableText}" - end - - def get_personality_table(roc) - name = "性格傾向表" - table = [ - [1, '挑戦'], - [2, '調和'], - [3, '感性'], - [4, '信念'], - [5, '論理'], - [6, '思慮'] - ] - return get_AlterRaise_1d6_table_result(name, table, roc) - end - - def get_location_table(roc) - name = "場所表" - table = [ - [13, '教室'], - [16, '部室'], - [23, '商店街'], - [26, '田舎'], - [33, '都会'], - [36, '駅'], - [43, 'バイト'], - [46, 'ステージ'], - [53, '図書館'], - [56, '病院'], - [63, '自然'], - [66, '家'] - ] - return get_AlterRaise_d66_table_result(name, table, roc) - end - - def get_quiet_table(roc) - name = "平穏・経験表" - table = [ - [13, '友達'], - [16, '幼馴染み'], - [23, '両親'], - [26, '兄弟'], - [33, '親戚'], - [36, '理解者'], - [43, '友人'], - [46, '仲間'], - [53, '趣味'], - [56, '練習'], - [63, '一人'], - [66, 'お気に入り'] - ] - return get_AlterRaise_d66_table_result(name, table, roc) - end - - def get_delight_table(roc) - name = "喜び・経験表" - table = [ - [13, '勝利'], - [16, '優勝'], - [23, '出会い'], - [26, '理解'], - [33, '幸運'], - [36, 'プレゼント'], - [43, '成就'], - [46, '成長'], - [53, '創造'], - [56, '好転'], - [63, '証明'], - [66, '生還'] - ] - return get_AlterRaise_d66_table_result(name, table, roc) - end - - def get_trauma_table(roc) - name = "心の傷・経験表" - table = [ - [13, '敗北'], - [16, '仲違い'], - [23, '失恋'], - [26, '無理解'], - [33, '無力'], - [36, '孤独'], - [43, '別離'], - [46, '死別'], - [53, '損壊'], - [56, '喪失'], - [63, '病'], - [66, '事故'] - ] - return get_AlterRaise_d66_table_result(name, table, roc) - end - - def get_scene_production_table(roc) - name = "シーン演出表" - table = [ - [1, '相談。君は相手に相談したいことがあった。'], - [2, '遊び。君は相手と遊びたかった。'], - [3, '案内。君は自身のアリウス・パーソナルを案内したかった。'], - [4, '勝負。君は相手と何らかの勝負をしたかった。'], - [5, 'お願い。君は相手にお願いしたいことがあった。'], - [6, '扉を開く前に。アクセルダイブ・ゲートをくぐる前に、君は相手に話したいことがあった。(*ダイブした後のシーンも演出すること)'] - ] - return get_AlterRaise_1d6_table_result(name, table, roc) - end - - def get_stance_table(roc) - name = "スタンス表" - table = [ - [1, '友人'], - [2, '恋愛'], - [3, '師事'], - [4, 'ライバル'], - [5, '家族'], - [6, '守護'] - ] - return get_AlterRaise_1d6_table_result(name, table, roc) - end - - def get_emotion_table(roc) - name = "感情表" - table = [ - [13, '勇気'], - [16, '怒り'], - [23, '悲しみ'], - [26, '喜び'], - [33, '驚き'], - [36, '恐れ'], - [43, '安らぎ'], - [46, '誠意'], - [53, '庇護'], - [56, '謝意'], - [63, '信頼'], - [66, '好意'] - ] - return get_AlterRaise_d66_table_result(name, table, roc) - end - - def get_AlterRaise_1d6_table_result(name, table, roc) - if roc > 0 - dice = roc - dice = 6 if dice > 6 - else - dice, = roll(1, 6) - end - tableText = get_table_by_number(dice, table) - return "#{name} > #{dice}:#{tableText}" - end - - def get_AlterRaise_d66_table_result(name, table, roc) - if roc > 10 - diceText = roc.to_s - dice1 = diceText[0, 1].to_i - dice1 = 6 if dice1 > 6 - dice2 = diceText[1, 1].to_i - dice2 = 1 if dice2 < 1 - dice2 = 6 if dice2 > 6 - elsif roc > 0 - dice1 = roc - dice1 = 6 if dice1 > 6 - dice2, = roll(1, 6) - else - dice1, = roll(1, 6) - dice2, = roll(1, 6) - end - dice = dice1 * 10 + dice2 - diceText = "#{dice1},#{dice2}" - tableText = get_table_by_number(dice, table) - return "#{name} > #{diceText}:#{tableText}" - end -end diff --git a/src/src_bcdice/diceBot/Amadeus.rb b/src/src_bcdice/diceBot/Amadeus.rb deleted file mode 100644 index 152582471..000000000 --- a/src/src_bcdice/diceBot/Amadeus.rb +++ /dev/null @@ -1,614 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Amadeus < DiceBot - # ゲームシステムの識別子 - ID = 'Amadeus' - - # ゲームシステム名 - NAME = 'アマデウス' - - # ゲームシステム名の読みがな - SORT_KEY = 'あまてうす' - - # ダイスボットの使い方 - HELP_MESSAGE = <=t) - 能力値のダイスごとに成功・失敗の判定を行います。 - x:能力ランク(S,A~D) y:修正値(省略可) - z:スペシャル最低値(省略:6) t:目標値(省略:4) -  例) RA RB-1 RC>=5 RD+2 RS-1@5>=6 - 出力書式は -  (達成値)_(判定結果)[(出目)(対応するインガ)] - C,Dランクでは対応するインガは出力されません。 -  出力例) 2_ファンブル![1黒] / 3_失敗[3青] -・各種表 - 境遇表 ECT/関係表 RT/親心表 PRT/戦場表 BST/休憩表 BT/ - ファンブル表 FT/致命傷表 FWT/戦果表 BRT/ランダムアイテム表 RIT/ - 損傷表 WT/悪夢表 NMT/目標表 TGT/制約表 CST/ - ランダムギフト表 RGT/決戦戦果表 FBT/ - 店内雰囲気表 SAT/特殊メニュー表 SMT -・試練表(~VT) - ギリシャ神群 GCVT/ヤマト神群 YCVT/エジプト神群 ECVT/ - クトゥルフ神群 CCVT/北欧神群 NCVT/中華神群 CHVT/ - ラストクロニクル神群 LCVT/ケルト神群 KCVT/ダンジョン DGVT/日常 DAVT -・挑戦テーマ表(~CT) - 武勇 PRCT/技術 TCCT/頭脳 INCT/霊力 PSCT/愛 LVCT/日常 DACT -INFO_MESSAGE_TEXT - - def initialize - super - @sendMode = 2 - @sortType = 1 - @d66Type = 2 - end - - def rollDiceCommand(command) - text = amadeusDice(command) - return text unless text.nil? - - info = TABLES[command.upcase] - return nil if info.nil? - - name = info[:name] - type = info[:type] - table = info[:table] - - text, number = - case type - when '1D6' - get_table_by_1d6(table) - when '2D6' - get_table_by_2d6(table) - when 'D66' - get_table_by_d66_swap(table) - end - - return nil if text.nil? - - return "#{name}(#{number}) > #{text}" - end - - def amadeusDice(command) - return nil unless /^(R([A-DS])([\+\-\d]*))(@(\d))?((>(=)?)([\+\-\d]*))?(@(\d))?$/i =~ command - - commandText = Regexp.last_match(1) - skillRank = Regexp.last_match(2) - modifyText = Regexp.last_match(3) - signOfInequality = (Regexp.last_match(7).nil? ? ">=" : Regexp.last_match(7)) - targetText = (Regexp.last_match(9).nil? ? "4" : Regexp.last_match(9)) - if nil | Regexp.last_match(5) - specialNum = Regexp.last_match(5).to_i - elsif nil | Regexp.last_match(11) - specialNum = Regexp.last_match(11).to_i - else - specialNum = 6 - end - - diceCount = CHECK_DICE_COUNT[skillRank] - modify = parren_killer("(" + modifyText + ")").to_i - target = parren_killer("(" + targetText + ")").to_i - - _, diceText, = roll(diceCount, 6) - diceList = diceText.split(/,/).collect { |i| i.to_i } - specialText = (specialNum == 6 ? "" : "@#{specialNum}") - - message = "(#{commandText}#{specialText}#{signOfInequality}#{targetText}) > [#{diceText}]#{modifyText} > " - diceList = [diceList.min] if skillRank == "D" - is_loop = false - diceList.each do |dice| - if is_loop - message += " / " - elsif diceList.length > 1 - is_loop = true - end - achieve = dice + modify - result = check_success(achieve, dice, signOfInequality, target, specialNum) - if is_loop - message += "#{achieve}_#{result}[#{dice}#{INGA_TABLE[dice]}]" - else - message += "#{achieve}_#{result}[#{dice}]" - end - end - - return message - end - - def check_success(total_n, dice_n, signOfInequality, diff, special_n) - return "ファンブル!" if dice_n == 1 - return "スペシャル!" if dice_n >= special_n - - success = bcdice.check_hit(total_n, signOfInequality, diff) - return "成功" if success >= 1 - - return "失敗" - end - - CHECK_DICE_COUNT = {"S" => 4, "A" => 3, "B" => 2, "C" => 1, "D" => 2}.freeze - INGA_TABLE = [ nil, "黒", "赤", "青", "緑", "白", "任意" ].freeze - - TABLES = - { - "ECT" => { - :name => "境遇表", - :type => '1D6', - :table => %w{ - 告白。あなたは、神と人間(獣の子の場合は何らかの動物)が愛し合って生まれた神子です。最近になって、その事実と予言について、自分の親から知らされました。あなたに両親がいる場合、どちらかの親は義理の親となります。 - 孤児。あなたは、親のことについて何も知りませんでした。過酷な環境で暮らすなか、あなたの兄弟姉妹が、あなたを迎えに来ました。そして、あなたが神の子どもであり、予言の持ち主だということを教えてくれました。 - 家族。あなたは、神の子として幼い頃から生活していました。現実と<聖地>を行き来し、様々なことを神である親から教えてもらっています。そして、いつの日か冒険に旅立ち、英雄になる日を楽しみに待っていました。 - 血脈。あなたの一族には、「大きな運命を持つ子が生まれる」という予言が伝わっていました。その予言の子があなたです。恐らく、あなたの遠い先祖に神がいたのでしょう。一族はあなたに大きな期待や畏怖を寄せています。 - 加護。あなたは、その資質や才能を親神に見いだされました。そして、夢の中で親神と出会い、<神の血>を直接与えられました。それ以来、あなたは不思議なものが見えたり聞こえたりするようになりました。 - 帰依。あなたは、怪物によって命の危機にさらされました。しかし、神の血を授かることによって、死の淵からよみがえりました。以来、あなたは自らを助けてくれた神に帰依し、その人生を捧げることにしました。 - }, - }, - - "BST" => { - :name => "戦場表", - :type => '1D6', - :table => %w{ - 墓場。ラウンドの終了時、PCと怪物の本体は、【生命力】が1D6点減少します。また、この戦場にいる場合、PCがギフトを使用するとき、黒の領域にインガが追加で2つあるものとして扱います。 - 市街地。すべてのPCと怪物は、与えるダメージが1D6点上昇します。また、この戦場にいる場合、PCがギフトを使用するとき、赤の領域にインガが追加で2つあるものとして扱います。 - 水中。潜水状態にないPCは、あらゆる判定にマイナス1の修正がつきます。ラウンドの終了時、潜水状態でないPCと怪物の本体は、【生命力】が1D6点減少します。また、この戦場にいる場合、PCがギフトを使用するとき、青の領域にインガが追加で2つあるものとして扱います。 - 森林。すべてのPCと怪物は、受けるダメージが1D6点軽減します。また、この戦場にいる場合、PCがギフトを使用するとき、緑の領域にインガが追加で2つあるものとして扱います。 - 空中。飛行状態にないPCは、あらゆる判定にマイナス1の修正がつきます。戦闘終了時、怪物の【生命力】が1点以上残っていた場合、その戦闘中に一度も飛行状態にならなかったPCと怪物の本体は、【生命力】が[戦闘に費やした乱戦ラウンド数×3D6]点減少します。また、この戦場にいる場合、PCがギフトを使用するとき、白の領域にインガが追加で2つあるものとして扱います。 - 平地。特に変わった効果はありません。 - }, - }, - - "RT" => { - :name => "関係表", - :type => '1D6', - :table => %w{ - 恋心(プラス)/殺意(マイナス) - 同情(プラス)/侮蔑(マイナス) - 憧憬(プラス)/嫉妬(マイナス) - 信頼(プラス)/疑い(マイナス) - 共感(プラス)/不気味(マイナス) - 大切(プラス)/面倒(マイナス) - }, - }, - - "PRT" => { - :name => "親心表", - :type => '1D6', - :table => %w{ - かわいい(プラス)/生意気(マイナス) - 期待(プラス)/脅威(マイナス) - 自慢(プラス)/恥(マイナス) - 愛情(プラス)/無関心(マイナス) - 有用(プラス)/心配(マイナス) - 過保護(プラス)/執着(マイナス) - }, - }, - - "FT" => { - :name => "ファンブル表", - :type => '1D6', - :table => %w{ - 運命の輪が回転する。運命の輪の上にある赤の領域のインガを青の領域に、青の領域のインガを緑の領域に、緑の領域のインガを白の領域に、白の領域のインガを赤の領域に、それぞれ同時に移動させる。 - 仲間に迷惑をかけてしまう。自分以外のPC全員の【生命力】が1点減少する。 - この失敗は後に祟るかもしれない……。自分の【生命力】が1D6点減少する。 - あまりの失敗に、みんなの態度が変わる。自分に対して一番高い【想い】の値を持っているキャラクター全員の、【想い】の属性が反転する。 - 心に大きな乱れが生まれる。自分の属性に対応した変調を受ける(黒なら絶望、赤なら憤怒、青なら臆病1、緑なら堕落、白なら恥辱)。 - 周囲から活気が失われる。運命の輪のなかから、黒以外の領域のインガがすべて1つずつ減少する。 - }, - }, - - "BT" => { - :name => "休憩表", - :type => 'D66', - :table => [ - [11, "土着の怪物が襲いかかってきた! なんとか撃退するが、傷を負ってしまった。1D6点のダメージを受ける。"], - [12, "美女の沐浴をのぞいてしまった。1D6を振る。1~2なら「堕落」、3~4なら「恥辱」、5~6なら「重傷1」の変調を受ける。"], - [13, "強欲な商人に出会う。このシーンに登場したキャラクターは、アイテムを購入することができる。ただし、すべてのアイテムの価格は通常の値段より1高い。"], - [14, "自分の過去の話をする。なんで、こんな話しちゃったんだろう? PCの中から、自分に対してもっとも高い【想い】を持つPC全員の、関係の属性が反転する。"], - [15, "周囲の空気が変わった。運命の輪が動き出す予感!運命の輪の上にある赤の領域のインガを青の領域に、青の領域のインガを緑の領域に、緑の領域のインガを白の領域に、白の領域のインガを赤の領域に、それぞれ同時に移動させる。"], - [16, "突然の空腹に襲われる。このシーン中に食事を行わなかったPCは「重傷2」の変調を受ける。この変調は、食事を行うと回復できる(ほかの方法でも回復可能)。"], - [22, "<絶界>の外の世界の友人のことを思い出す。みんなは元気にしているだろうか? この出目を振ったプレイヤーのPCは、【日常】で判定を行うことができる。成功すると、自分の変調を1つ回復するか、黒の領域からインガを1つ取り除くことができる。"], - [23, "奇妙な商人に出会う。このシーンに登場したキャラクターは、アイテムを購入することができる。"], - [24, "喋る動物に願いごとをされる。動物たちも、この神話災害で苦しんでいるようだ。あなたは、「この怪物の本体の【生命力】を0にする」という追加の【任務】を受けることができる。この【任務】を達成すると、追加で経験値を20点もらうことができる。"], - [25, "素敵な夢を見る。この出目を振ったプレイヤーは、自分のPC以外の好きなキャラクター一人に対する【想い】が1点上昇する。"], - [26, "大切な人から、あなたを心配するメールが届いていた。なんて返そう? この出目を振ったプレイヤーのPCは、【日常】で判定を行うことができる。成功すると、自分の変調を1つ回復するか、自分の好きなパトスマークについたチェックを1つ消す。"], - [33, "親切な商人に出会う。このシーンに登場したキャラクターは、アイテムを購入することができる。ただし、すべてのアイテムの価格は通常の値段より1低い(価格1未満にはならない)。"], - [34, "武器の手入れを行う。この出目を振ったプレイヤーのPCは、【日常】で判定を行うことができる。成功すると、そのセッションの間、自分の武器1つの威力を1点上昇させることができる。"], - [35, "最後に買い物をしたときに、おつりを多くもらっていたことに気がついた。1神貨を手に入れる。"], - [36, "食事をしながら、仲間と大いに語り合う。このシーンに登場して、食事を行ったキャラクターは、自分の好きなパトスマークについたチェックを一つ消す。"], - [44, "一眠りしてしまったのか、不思議な夢を見る。この出目を振ったプレイヤーのPCは、【霊力】で判定を行うことができる。成功すると、好きな予言カード1枚を選び、その【真実】を見ることができる。"], - [45, "チンピラにからまれている異性の子を見つける。この出目を振ったプレイヤーのPCは、【武勇】で判定を行うことができる。成功すると、その子は、そのPCに対して【想い】を1点獲得する。この子を協力者にするなら、そのプレイヤーはその子の名前と関係を自由に決めること。"], - [46, "心地よい風に吹かれる。運命があなたに味方してくれるような気がした。好きな領域にインガを1つ配置する。"], - [55, "目が覚めると、枕元に贈り物が。誰からだろう……? この出目を振ったプレイヤーのPCは、「ランダムアイテム表」を使用する。"], - [56, "困っている神話生物を助けてあげた。【日常】で判定を行う。成功すると、次に移動判定を行うことになったとき、自動的にそれを成功にすることができる(達成値が必要な場合6として扱う)。"], - [66, "親神が、あなたに話しかけてくる。親子の会話だ。この出目を振ったプレイヤーのPCは、【日常】で判定を行うことができる。成功すると、自分の親神に対する【想い】か、親神の自分に対する【想い】のいずれかを1点上昇する。"], - ], - }, - - "FWT" => { - :name => "致命傷表", - :type => '1D6', - :table => %w{ - 絶望的な攻撃を受ける。そのキャラクターは死亡する。 - 苦痛の悲鳴をあげ、無惨にも崩れ落ちる。そのキャラクターは行動不能になる。また、黒の領域のインガが1つ増える。 - 攻撃を受けた武器が砕け、敵の攻撃が直撃する。そのキャラクターは行動不能になる。また、自分の武器一つを破壊する。 - 強烈な一撃を受けて気絶する。そのキャラクターは行動不能になる。 - 意識はあるが、立ち上がることができない。そのキャラクターは行動不能になる。次のシーンになったら【生命力】が1点に回復する。 - 奇跡的に持ちこたえる。【生命力】1点で踏みとどまる。 - }, - }, - - "BRT" => { - :name => "戦果表", - :type => '1D6', - :table => %w{ - 1神貨を獲得する。 - 1D6神貨を獲得する。 - 好きな領域にインガを1つ置く。 - 黒の領域からインガを1つ取り除く。 - 「ランダムアイテム」表で、アイテムを入手できる。 - PC全員、自分の人物欄の中から、パトスのチェックを1つ消すことができる。 - }, - }, - - "RIT" => { - :name => "ランダムアイテム表", - :type => '2D6', - :table => %w{ - 「鎧」を1個獲得する。 - 「手がかり」を1個獲得する。 - 「お洒落」を1個獲得する。 - 「護符」を1個獲得する。 - 「甘露」を1個獲得する。 - 「食料」を1D6個獲得する。 - 「お香」を1個獲得する。 - 「供物」を1個獲得する。 - 「霊薬」を1個獲得する。 - 「ごちそう」を1個獲得する。 - 「爆弾」を1個獲得する。 - }, - }, - - "WT" => { - :name => "損傷表", - :type => '1D6', - :table => %w{ - 自分の【生命力】を1D6点減少する。 - 1D6神貨を失う。 - 黒の領域にインガを1つ置く。 - 「臆病2」の変調を受ける。 - 「重傷3」の変調を受ける。 - 自分の人物欄のもっとも高い【想い】1つを選び、それを1点減少する。 - }, - }, - - "NMT" => { - :name => "悪夢表", - :type => '1D6', - :table => %w{ - 絶望の闇に視界を遮断される。背後に怪物の気配を感じたと思ったときは遅かった。卑劣な攻撃があなたを襲う。好きな能力値で判定を行う。失敗すると死亡する。 - 絶望の闇の中、悲痛な叫びが聞こえてくる。事件の被害者たちだろうか。あなたは、救えなかったのだ。【日常】で判定を行う。失敗すると、「絶望」の呪いを受ける。 - 絶望の闇の中で怪物の笑いがこだまする。それは嘲りの笑いだった。怪物や仲間たち……何より自分への怒りがわき上がる。【日常】で判定を行う。失敗すると、「憤怒」の呪いを受ける。 - 絶望の闇の中に一人取り残される。誰もあなたに気づかない。孤独に耐えながら、何とか日常へ帰還したが……そのときの恐怖がぬぐえない。【日常】で判定を行う。失敗すると、「臆病3」の呪いを受ける。 - 絶望の闇から帰還したあなたを待っていたのは、代わり映えのない日常だった。あなたが任務に失敗しても、世界は変わらない。なら、もう、あんな怖い目をする必要はないんじゃないか? 【日常】で判定を行う。失敗すると、「堕落」の呪いを受ける。 - 絶望の闇の中を必死で逃げ出した。背後から仲間の声が聞こえた気がする。しかし、あなたは振り返ることができなかった。【日常】で判定を行う。失敗すると、「恥辱」の呪いを受ける。 - }, - }, - - "TGT" => { - :name => "目標表", - :type => '1D6', - :table => %w{ - 悪意。PCの中でもっとも【生命力】の低いもの一人を目標に選ぶ。もっとも低い【生命力】の持ち主が複数いる場合、その中から、GMが自由に一人目標を選ぶ。 - 狡猾。もっとも数値が高いパラグラフにいるPC一人を目標に選ぶ。全員が欄外にいる場合、欄外にいるPC全員を目標に選ぶ。 - 非道。PCの中でもっとも低いランクの【武勇】の持ち主一人を目標に選ぶ。もっとも低いランクの持ち主が複数いる場合、その中から、もっとも低いモッドの持ち主一人を目標に選ぶ。モッドも同じ値だった場合、GMがその中から自由に一人目標を選ぶ。 - 堅実。PCの中でもっとも低いランクの【技術】の持ち主一人を目標に選ぶ。もっとも低いランクの持ち主が複数いる場合、その中から、もっとも低いモッドの持ち主一人を目標に選ぶ。モッドも同じ値だった場合、GMがその中から自由に一人目標を選ぶ。 - 豪快。PCの中でもっとも高いランクの【武勇】の持ち主一人を目標に選ぶ。もっとも高いランクの持ち主が複数いる場合、その中から、もっとも高いモッドの持ち主一人を目標に選ぶ。モッドも同じ値だった場合、GMがその中から自由に一人目標を選ぶ。 - 単純。もっとも数値が低いパラグラフにいるPC一人を目標に選ぶ。全員が欄外にいる場合、欄外にいるPC全員を目標に選ぶ。 - }, - }, - - "CST" => { - :name => "制約表", - :type => '1D6', - :table => %w{ - 短命 - 誘惑 - 悪影響 - 束縛 - 喧嘩 - 干渉 - }, - }, - - "GCVT" => { - :name => "ギリシャ神群試練表", - :type => '1D6', - :table => %w{ - 山の向こうから一つ目の巨人、サイクロプスがこちらを見ている。岩を投げてきた!1D6点のダメージを受ける。 - 水音に目を向けると、アルテミスが泉で水浴びをしていた。美しい……あ、気づかれた?自分が男性なら、「重傷2」の変調を受ける。自分が女性なら、「恥辱」の変調を受ける。 - 海を渡ろうとすると、海が渦巻き乗った船が引き寄せられていく。中心にいるのは怪物カリュブディスだ。このままだと、船ごと飲み込まれてしまう。[青の領域にあるインガの数]点ダメージを受ける。 - デュオニソスの女性信者、マイナスたちに取り囲まれる。彼女たちは完全に酔っ払っており、話は通じない上、酒を飲めと強要してくる。【生命力】が1点回復し、「堕落」の変調を受ける。 - 巨大な天井を支えている巨人と出会う。巨人は「少しの間、支えるのを代わってくれないか?」と頼んでくる。断りにくい雰囲気だ……。【愛】で判定を行う。失敗すると、そのセッションの間、所持品の欄が一つ使えなくなる。その欄にアイテムが記入されていれば、それを捨てること。 - 「あなた最近、調子に乗ってない?」アフロディーテに難癖をつけられた。「自分のことだけ見てればいいんじゃない?」鏡に映る自分が、とても美しく思えてきた。自分への【想い】が2点上昇し、それ以外の人物欄のパトスすべてにチェックを入れる。 - }, - }, - - "YCVT" => { - :name => "ヤマト神群試練表", - :type => '1D6', - :table => %w{ - 空が急に暗くなる。太陽がどこにも見えない。もしかして、アマテラスが隠れてしまったのか?黒の領域にインガを一つ配置する。 - いつのまにか、黄泉国に迷い込んでしまっていた。周囲は黄泉軍に取り囲まれている。どうにかして、逃げなくては!移動判定を行う。失敗すると、3点のダメージを受け、もう一度「試練表」を振る。 - 目の前の海はワニザメでいっぱいだ。この海を渡らなければ、目的地にはたどり着けないのに。青の領域のインガを二つ取り除くか、自分が2D6点のダメージを受けるかを選ぶ。 - 「みんなー楽しんでるー!?」ここはウズメが歌い踊るライブ会場だ。どうしよう、目的を忘れそうなほど楽しい!自分は、自分の属性のインガを一つ取り除くか、「堕落」の変調を受けるかを選ぶ。 - 「龍の首の珠を取るのを手伝ってくれませんか?そうしたら、船に乗せてさしあげます」平安貴族のような格好をした男が話しかけてくる。手伝うしかないようだ。「重傷1」の変調を受ける。 - 海岸でいじめられている亀を助けたら、海の中の宮殿につれてきてくれた。トヨタマヒメが現れ、盛大にもてなしてくれる。あっという間に、夢のような時間が過ぎていく。でも、そろそろ行かなくては。【日常】で判定する。失敗すると、自分の年齢を6D6歳増やし、「絶望」の変調を受ける。 - }, - }, - - "ECVT" => { - :name => "エジプト神群試練表", - :type => '1D6', - :table => %w{ - 大蛇アペプが今にも目の前の空で輝く太陽を、飲み込もうとしている!止めなくては!【武勇】で判定する。失敗すると、黒の領域にインガを二つ配置する。 - 気がつけば、魂が羽の生えたバーだけになって、空を飛んでいた。早く肉体に戻らなくては。【霊力】で判定する。自分の【生命力】を1D6点減少し、もう一度「試練表」を振る。 - ぐつぐつと沸き立つ湖と、流れる火の川が見える。目的地は、この川を越えた先にある。【技術】で判定する。失敗すると、炎タグのついた2D6点のダメージを受け、黒以外の領域のインガが一つずつ取り除かれる。 - 冥界ドゥアトの番人たちが、目の前に現れた。と畜場より来る吸血鬼、下半身の排泄物を喰らうものが近づいてくる。ここは冥界なのか、それとも、やつらが地上に這い出してきたのか。自分は、「重傷1」の変調を受けるか、「恥辱」の変調を受けるかを選ぶ。 - 目の前にアヌビスがいる。アヌビスは天秤を掲げて、心臓を要求してくる。「お前の罪を数えろ」【日常】で判定を行う。失敗すると、【活力】が0点になる。この効果によって【生命力】の現在値が最大値を超えた場合、最大値と同じ値に調整する。 - 獅子頭の神、シェセムが、悪人の頭を砕いて、死者のためのワインにしている。悪人と見なされれば、頭をもがれてしまうだろう。【日常】で判定を行う。失敗すると、「重傷2」の変調を受ける。 - }, - }, - - "CCVT" => { - :name => "クトゥルフ神群試練表", - :type => '1D6', - :table => %w{ - 新聞記者たちが忙しく行き来しているオフィスにいる。ここは、新聞社アーカムアドバタイザーの編集部だ。「君が大きなニュースを持っていると聞いたんだけれど」記者の一人が尋ねてくる。自分の【真実】が公開されていなければ、「臆病1」の変調を受ける。 - 魚の顔と鱗に覆われた身体をもつ、ディープワンに取り囲まれる。あなたが女性ならば、彼らのすみかに連れ去られてしまう。男性ならば、暴力を振るわれ、1D6点のダメージを受ける。女性なら、衣服を奪われ、「恥辱」の変調を受ける。 - ここはどうやら夢の中らしい。目の前にクトゥルフがいる。「余になんの用だ。余を目覚めさせる気なら、容赦はしない」寝ぼけ眼のくせに、クトゥルフは怒っているようだ。「絶望」の変調を受ける。 - 地下のもぐり酒場で一息つけた……と思ったら、トンプソン機関銃を構えた男たちが飛び込んできた。マフィアの抗争だ!4点のダメージを受ける。 - 古ぼけた本を手に入れた。どうやら、魔導書のようだ。読むと正気を失う可能性もあるが、力が手に入る可能性も高い。【霊力】のランクがA以上なら、好きな領域にインガを二つ配置する。そうでない場合、「絶望」と「臆病2」の変調を受ける。 - なんの変哲も無い民家にいる。アーカムの静かな風景が……ああ、窓に!窓に!黒の領域にインガを一つ配置する。 - }, - }, - - "NCVT" => { - :name => "北欧神群試練表", - :type => '1D6', - :table => %w{ - 美しい乙女が告げる。「あなたはエインヘリアルたる資格がある」どうやら、戦乙女ヴァルキュリャに見初められたらしい。彼女たちは、戦死した者の魂を連れていくのだが。自分は、戦乙女から【想い】を2点獲得する。この【想い】の関係はマイナスの「殺意」となる。 - 雄叫びと共に現れたのは、獣の皮を被った屈強な戦士たち、ベルセルクだった。手に手に斧を構え、こちらに向かってくる!【武勇】で判定を行う。失敗すると、2D6点のダメージを受ける。 - オーディンの神子、エインヘリアルたちの宴会に紛れ込んでしまった。山のように積まれたご馳走を好きに食べていいと思ったら、「勝負だ!」という声。食べ比べを挑まれている。神子としては、負けるわけにはいかない。【日常】で判定を行う。失敗すると、「恥辱」の変調を受ける。 - 「ここは我々の土地だ。ただで通れると思っているのか?」ドヴェルグが行く手を塞ぎ、神貨を要求してくる。彼らはがめついことで有名だ。神貨を2点支払う。支払わない場合、自分の【生命力】を1点減少して、もう一度「試練表」を使用する。 - 「このまま冒険を続けても簡単すぎるんじゃないか?」ロキが話し掛けてきた。気がつくと君は狼の姿に変わっていた。このセッションの間、自分に「獣」のタグがつき、【愛】のランクが1段階低くなる(Dは変化しない)。 - 巨人が話し掛けてくる。「お前に力をやってもいい。代わりに、片目か、片腕をよこせ」オーディンは片目を差し出して、知恵を手に入れた。嘘ではないだろうが……。【生命力】を3D6点減少することで、好きな領域にインガを二つ配置できる。減少しなかった場合、「臆病1」の変調を受ける。 - }, - }, - - "DGVT" => { - :name => "ダンジョン試練表", - :type => '1D6', - :table => %w{ - 照明が切れてしまい、暗闇の中に放り出される。前が見えない。白の領域からインガを一つ取り除く。 - 罠だ!こちらに向かって、巨大な岩が転がって来る!【技術】で判定する。失敗すると、2D6点のダメージを受ける。 - 宝箱発見。罠がないかを慎重に調べてみよう。【技術】で判定する。成功すると、1神貨を獲得する。失敗すると、「憤怒」と「恥辱」の変調を受ける。 - 謎解きが必要な部分に迷い込む。この謎を解かなければ、罠を無理矢理突破しなければならない。【頭脳】で判定を行う。失敗すると、「絶望」の変調を受け、1D6点のダメージを受ける。 - 粘液が飛び散る部屋に入ってしまった。まずい、何でも溶かす酸だ!自分が装備しているアイテムの中から一つを選ぶ。選んだアイテムを破壊する。【食料】を選んだ場合は、すべての【食料】を破壊する。 - 怪物たちのすみかに迷い込んでしまったようだ。怪物が一斉に襲ってくる!【武勇】で判定を行う。失敗すると、2D6点のダメージを受ける。 - }, - }, - - "DAVT" => { - :name => "日常試練表", - :type => '1D6', - :table => %w{ - 仲間と移動していると、一般人の友達と偶然出会ってしまう。今何をしているかを聞かれたので、なんとかごまかす。自分に対して【想い】の値を持っているPC全員の属性が反転する。 - 仕事や勉強を催促する電話がかかってきた。今はそれどころじゃないんだって!「憤怒」の変調を受ける。 - ふと、見たかったテレビ番組を見逃していたことに気づいてしまう。録画もしてない。ちょっと凹む。自分の属性と同じ領域にあるインガを一つ取り除く。 - 警官に捕まって、職務質問を受ける。ちょっと言えない理由で、急いでいるんですけど。黒の領域にインガを一つ配置する。 - 自分の格好や言動が浮いていたらしい、自分を噂するひそひそ話が聞こえてきてしまう。「恥辱」の変調を受けるか、【食料】以外のアイテムを1つ破壊する。 - 乗りたかった電車やバスに乗り遅れる。仕方ないから、走るか。移動判定を行う。失敗すると、「堕落」の変調を受け、もう一度「試練表」を使用する。 - }, - }, - - "PRCT" => { - :name => "挑戦テーマ表【武勇】", - :type => '1D6', - :table => %w{ - 腕相撲 - 喧嘩 - 度胸試し - レスリング - 狩り - 武勇伝自慢 - }, - }, - - "TCCT" => { - :name => "挑戦テーマ表【技術】", - :type => '1D6', - :table => %w{ - 織物 - 戦車レース - マラソン - アクションゲーム - 射的 - 資格自慢 - }, - }, - - "INCT" => { - :name => "挑戦テーマ表【頭脳】", - :type => '1D6', - :table => %w{ - パズル - 謎かけ - チェス - 筆記試験 - 禅問答 - 学歴自慢 - }, - }, - - "PSCT" => { - :name => "挑戦テーマ表【霊力】", - :type => '1D6', - :table => %w{ - 詩作 - 動物を手なずける - 北風と太陽 - 絵画 - 演奏 - のど自慢 - }, - }, - - "LVCT" => { - :name => "挑戦テーマ表【愛】", - :type => '1D6', - :table => %w{ - ナンパ勝負 - 誰かからより愛される - 美人コンテスト - ティッシュ配り - 借り物競争 - 恋愛自慢 - }, - }, - - "DACT" => { - :name => "挑戦テーマ表【日常】", - :type => '1D6', - :table => %w{ - 料理 - 大食い - 呑み比べ - 倹約生活 - サバイバル - リア充自慢 - }, - }, - - "RGT" => { - :name => "ランダムギフト表", - :type => '1D6', - :table => %w{ - ランダムに選んだPCと同じ親神の親神ギフトの中から選ぶ。 - GMが選んだキャラクターと同じ親神の親神ギフトの中から選ぶ。 - ランダムに選んだPCと同じ神群の神群ギフトの中から選ぶ。 - GMが選んだキャラクターと同じ神群の神群ギフトの中から選ぶ。 - 好きな背景ギフトの中から選ぶ。 - 好きな汎用ギフトの中から選ぶ。 - }, - }, - - "FBT" => { - :name => "決戦戦果表", - :type => '1D6', - :table => %w{ - 1D6枚の神貨を獲得する。 - [戦闘に経過した偵察・乱戦・追撃ラウンド数の合計+2]枚の神貨を獲得する。 - [倒した怪物の本体レベル+2]枚の神貨を獲得する。 - [黒の領域の覚醒段階+2]枚の神貨を獲得。 - 「ランダムアイテム表」で、アイテムを入手できる。 - 「ランダムアイテム表」で、アイテムを入手できる。 - }, - }, - - "CHVT" => { - :name => "中華神群試練表", - :type => '1D6', - :table => %w{ - たどりついた場所は、桃源郷であった。すべてを忘れて、しばらく楽しんでしまう。年齢が2D6点上昇し、「堕落」の変調を受ける。 - 風にさらわれて、仙人に出会う。仙人は、稽古をつけてくれるが、激しい修行に体はボロボロになってしまった。好きな領域にインガを一つ配置し、「重傷4」の変調を受ける。 - 美男・美女に誘惑されるが、それは妖怪の化けた姿だった。たぶらかされたことに、怒りを覚える。「憤怒」の変調を受ける。 - 名前を呼ばれたので、返事をしたら、瓶の中に吸い込まれてしまった。瓶の中から脱出をするまでに苦労をする。2D6点のダメージを受け、「恥辱」の変調を受ける。 - 地府で行われてる閻魔の裁判に参考人として招集される。下手な証言をしたために、疑われて地獄に落とされかかった。「絶望」の変調を受ける。 - 麒麟の死骸を発見してしまう。これは、不吉の前触れだ。黒の領域にインガを一つ配置する。 - }, - }, - - "LCVT" => { - :name => "ラストクロニクル神群試練表", - :type => '1D6', - :table => %w{ - レ・ムゥの五色の太陽がすべて輝きを失う「千年夜」の到来を幻視する。これは起こりうる未来なのだろうか……。黒の領域にインガを1つ配置する。 - 召喚された小野小町が退屈を持て余してる。彼女の退屈を紛らわせるため【頭脳】か【愛】で判定する。失敗した場合、黒の領域にインガを1つ配置する。 - 血肉を貨幣代わりに扱う商人・ブラッドトレーダーと出会う。ラストクロニクル神群の聖地の買い物リストからアイテムを1つ選ぶ。【生命力】を「価格×3点」消費することで、選んだアイテムを獲得する。 - あなたは旅の途中で美女と出会い、意気投合する。しかし、その女性はメレドゥスの魔闘士・メニズマだった。彼女は去り際にあなたの精気を奪い取る。【生命力】と【活力】がそれぞれ1D6点減少する。 - 強欲なる司都官が治める街に迷い込んでしまう。通行料として神貨を1D6点支払う。支払えない場合、2D6点ダメージを受ける。 - 放浪の勇者・アルマイルから挨拶代わりの一撃を受ける。1D6点ダメージを受け、アルマイルからの【想い】が1点上昇する。 - }, - }, - - "KCVT" => { - :name => "ケルト神群試練表", - :type => '1D6', - :table => %w{ - 怪物が奏でる銀の竪琴の音色が聞こえてきて、しばらくの間、眠ってしまう。眠っている間に、妖精たちに悪戯された。「恥辱」の変調を受け、アイテムを一つ選んで失う。 - かつて倒した敵の娘から呪いをかけられてしまい、左腕が麻痺して動かなくなる。このセッションの間、【武勇】のランクが一段階減少する(Dより下にはならない)。 - エイネーという女性に、泉の底にある指輪を取ってきて欲しいと頼まれる。泉の底に潜って戻って来ると、自分が加齢してしまっていることに気付く。罠だったのだ。自分の年齢をD66歳増やし、【活力】が0点になる。 - 悪いドルイド僧から求婚を迫られる。急な話に戸惑っていると、ドルイド僧は怒りだし、PCを鹿に変える呪いをかけた。このセッションの間、【日常】のランクが一段階減少する(Dより下にはならない)。 - ウィッカーマンに閉じ込められ、焼かれてしまう。「重傷4」の変調を受ける。 - 道案内をしてくれた美女にそそのかされて、女人の国にたどりついてしまう。誘惑に耐えながら、なんとか脱出する。「堕落」と「臆病2」の変調を受ける。 - }, - }, - - "SAT" => { - :name => "店内雰囲気表", - :type => 'D66', - :table => [ - [11, "山の中にある峠の茶屋"], - [12, "煙草の煙がたゆたうセルフ式コーヒーチェーン店"], - [13, "山上りの座卓がある和風茶寮"], - [14, "ロココ調の優美で華やかな雰囲気の高級サロン"], - [15, "ヴィクトリア調のシックで上品なティーハウス"], - [16, "古い歌謡曲がかかり、テーブル筐体が懐かしい純喫茶"], - [22, "若い子で賑わうポップな内装のいかにもなチェーン店"], - [23, "ミッドセンチュリーの家具がお洒落なカフェ"], - [24, "ジュークボックスが目立つアメリカンダイナー"], - [25, "ピアノ曲が静かに流れる落ち着いた喫茶店"], - [26, "ノマドな若者が目立つコーヒーチェーン店"], - [33, "かわいい給仕さんがたくさんいるメイドカフェ"], - [34, "独特の茶器でゆったりお茶を楽しめる中国茶館"], - [35, "アースカラーが懐かしい健康志向なナチュラルカフェ"], - [36, "見晴らしのいいカフェテラスが自慢のオープンカフェ"], - [44, "壁一面にレコードが飾られているジャズ喫茶"], - [45, "24時間営業で荒れた雰囲気の漫画喫茶"], - [46, "色々なアナログゲームが楽しめるゲームカフェ"], - [55, "ショッピングモールのフードコート内にある出店"], - [56, "ビジネスマンたちが商談にいそしむ談話室"], - [66, "水タバコを吸いながら会話に興じる中東風カフェ"], - ], - }, - - "SMT" => { - :name => "特殊メニュー表", - :type => 'D66', - :table => [ - [11, "アド・パトレス(ケルト)"], - [12, "アムブロシア(ギリシア)"], - [13, "ネクタル(ギリシア)"], - [14, "アムリタ(インド)"], - [15, "ソーマ(インド)"], - [16, "ヤシオリ(ヤマト)"], - [22, "変若水/おちみず(ヤマト)"], - [23, "天舐酒/あまのたむけざけ(ヤマト)"], - [24, "エリクサー(錬金術)"], - [25, "ハオマ(ペルシア)"], - [26, "金丹(中華)"], - [33, "神農茶(中華)"], - [34, "チョコラトル(アステカ)"], - [35, "クヴァシル(北欧)"], - [36, "ヘイズルーンの乳(北欧)"], - [44, "ホワイト・ドロップ(エジプト)"], - [45, "リキッド・ゴールド(エジプト)"], - [46, "ジヴァヤ・ヴォジャ(スラブ)"], - [55, "スハルジク(メソポタミア)"], - [56, "ニンフサグのミルク(メソポタミア)"], - [66, "黄金の蜂蜜酒(クトゥルフ)"], - ], - }, - - }.freeze - - setPrefixes(['R[A-DS].*'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/Amadeus_Korean.rb b/src/src_bcdice/diceBot/Amadeus_Korean.rb deleted file mode 100644 index 19c92c5de..000000000 --- a/src/src_bcdice/diceBot/Amadeus_Korean.rb +++ /dev/null @@ -1,493 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Amadeus_Korean < DiceBot - # ゲームシステムの識別子 - ID = 'Amadeus:Korean' - - # ゲームシステム名 - NAME = '아마데우스' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Korean:아마데우스' - - # ダイスボットの使い方 - HELP_MESSAGE = <=t) - 다이스별로 성공, 실패의 판정을 합니다. - x:x에 랭크(S,A~D)를 입력. - y:y에 수정치를 입력. ±의 계산에 대응. 생략가능. - z:z에 스페셜이 되는 주사위 눈의 최저치를 입력. - 생략한 경우, 6의 값만 스페셜이 됩니다. - t:t에 목표치를 입력. ±의 계산에 대응. 생략가능. - 목표치를 생략한 경우, 목표치는 4로 계산됩니다. - 예) RA RB-1 RC>=5 RD+2 RS-1@5>=6 - ※ RB++ 나 RA- 같은, 플러스 마이너스만의 표기로는 계산되지 않습니다. - "달성치"_"판정결과"["주사위 눈""대응하는 인과"]와 같이 출력됩니다. - 단, C.D랭크에서는 대응하는 인과가 출력되지 않습니다. - 출력예) 1_펌블![1흑] / 3_실패[3청] -・각종표 - ・조우표 ECT/관계표 RT/부모마음표 PRT/전장표 BST/휴식표 BT/ -  펌블표 FT/치명상표 FWT/전과표 BRT/랜덤아이템표 RIT/ -  손상표 WT/악몽표 NMT/목표표 TGT/制約表 CST -・試練表(~VT) - ギリシャ神群 GCVT/ヤマト神群 YCVT/エジプト神群 ECVT/ - クトゥルフ神群 CCVT/北欧神群 NCVT/ダンジョン DGVT/日常 DAVT -・挑戦テーマ表(~CT) - 武勇 PRCT/技術 TCCT/頭脳 INCT/霊力 PSCT/愛 LVCT/日常 DACT -INFO_MESSAGE_TEXT - - def initialize - super - @sendMode = 2 - @sortType = 1 - @d66Type = 2 - end - - def rollDiceCommand(command) - text = amadeusDice(command) - return text unless text.nil? - - info = TABLES[command.upcase] - return nil if info.nil? - - name = info[:name] - type = info[:type] - table = info[:table] - - text, number = - case type - when '1D6' - get_table_by_1d6(table) - when '2D6' - get_table_by_2d6(table) - when 'D66' - get_table_by_d66_swap(table) - end - - return nil if text.nil? - - return "#{name}(#{number}) > #{text}" - end - - def amadeusDice(command) - return nil unless /^(R([A-DS])([\+\-\d]*))(@(\d))?((>(=)?)([\+\-\d]*))?(@(\d))?$/i =~ command - - commandText = Regexp.last_match(1) - skillRank = Regexp.last_match(2) - modifyText = Regexp.last_match(3) - signOfInequality = (Regexp.last_match(7).nil? ? ">=" : Regexp.last_match(7)) - targetText = (Regexp.last_match(9).nil? ? "4" : Regexp.last_match(9)) - if nil | Regexp.last_match(5) - specialNum = Regexp.last_match(5).to_i - elsif nil | Regexp.last_match(11) - specialNum = Regexp.last_match(11).to_i - else - specialNum = 6 - end - - diceCount = CHECK_DICE_COUNT[skillRank] - modify = parren_killer("(" + modifyText + ")").to_i - target = parren_killer("(" + targetText + ")").to_i - - _, diceText, = roll(diceCount, 6) - diceList = diceText.split(/,/).collect { |i| i.to_i } - specialText = (specialNum == 6 ? "" : "@#{specialNum}") - - message = "(#{commandText}#{specialText}#{signOfInequality}#{targetText}) > [#{diceText}]#{modifyText} > " - diceList = [diceList.min] if skillRank == "D" - is_loop = false - diceList.each do |dice| - if is_loop - message += " / " - elsif diceList.length > 1 - is_loop = true - end - achieve = dice + modify - result = check_success(achieve, dice, signOfInequality, target, specialNum) - if is_loop - message += "#{achieve}_#{result}[#{dice}#{INGA_TABLE[dice]}]" - else - message += "#{achieve}_#{result}[#{dice}]" - end - end - - return message - end - - def check_success(total_n, dice_n, signOfInequality, diff, special_n) - return "펌블!" if dice_n == 1 - return "스페셜!" if dice_n >= special_n - - success = bcdice.check_hit(total_n, signOfInequality, diff) - return "성공" if success >= 1 - - return "실패" - end - - CHECK_DICE_COUNT = {"S" => 4, "A" => 3, "B" => 2, "C" => 1, "D" => 2}.freeze - INGA_TABLE = [ nil, "흑", "적", "청", "녹", "백", "임의" ].freeze - - TABLES = - { - "ECT" => { - :name => "조우표", - :type => '1D6', - :table => [ - "고백. 당신은 신과 인간(짐승의 아이의 경우는 무언가의 동물)이 서로 사랑해 태어난 신의 아이입니다. 최근이 되어 그 사실과 예언에 관해 자신의 부모로부터 전해듣게 되었습니다. 당신은 양친이 있는 경우 어느 한쪽은 의붓부모가 됩니다.", - "고아. 당신은 부모에 대해 아무것도 몰랐습니다. 가혹한 환경에서 사는 동안, 당신의 형제자매가 당신을 맞이하러 왔습니다. 그리고 당신은 신의 아이이자, 예언의 당사자라는 것을 전해듣습니다.", - "가족. 당신은 신의 아이로서 어린 시절부터 생활해왔습니다. 현실과 <성지>를 왔다갔다하며 여러가지 것들을 신인 부모에게서 가르침 받았습니다. 그리고, 언젠가 모험에 나서, 영웅이 될 날을 즐겁게 기다리고 있었습니다.", - "혈맥. 당신의 일족에게는 '거대한 운명의 소유자가 태어난다'라고 하는 예언이 전해져 왔습니다. 그 예언의 아이가 당신입니다. 아마도, 당신의 먼 선조는 신이었을 것입니다. 일족은 당신에게 큰 기대와 두려움을 가지고 있습니다.", - "총애. 당신의 자질과 재능은 신에게 인정받았습니다. 그리고, 꿈 속에서 부모신과 만나, <신의 피>를 직접 하사받았습니다. 그 이후로, 당신은 불가사의한 것들이 보이거나 들리거나 하게 되었습니다.", - "귀의. 당신은 괴물에 의해 생명의 위협을 받았습니다. 하지만, 신의 피를 받은 것으로 죽음의 문턱에서 되돌아 왔습니다. 그 이후로, 당신은 당신을 구해준 신에게 귀의하여 인생을 바치기로 했습니다.", - ], - }, - - "BST" => { - :name => "전장표", - :type => '1D6', - :table => [ - "묘지. 라운드 종료 시 PC와 괴물의 본체는 【생명력】이 1D6점 감소한다. PC가 기프트를 사용할 때 흑의 영역의 인과가 추가로 2개 있는것으로 취급한다.", - "시가지. 모든 PC와 괴물은 입히는 데미지가 1D6점 상승한다. PC가 기프트를 사용할 때 적의 영역의 인과가 추가로 2개 있는것으로 취급한다.", - "수중. 잠수상태가 아닌 PC는 모든 판정에 -1의 수정치가 붙는다. 라운드 종료 시, 잠수상태가 아닌 PC와 괴물의 본체는 【생명력】이 1D6점 감소한다. PC가 기프트를 사용할 때 청의 영역의 인과가 추가로 2개 있는것으로 취급한다.", - "삼림. 모든 PC와 괴물은 받는 데미지가 1D6점 감소한다. PC가 기프트를 사용할 때 녹의 영역의 인과가 추가로 2개 있는것으로 취급한다.", - "공중. 비행상태가 아닌 PC는 모든 판정에 -1의 수정치가 붙는다. 전투종료 시 괴물의 【생명력】이 1점이상 남아있을 경우 그 전투중에 한번도 비행상태가 되지 않은 PC와 괴물의 본체는 【생명력】이 [전투에 소비한 난전 라운드 수x3D6]점 감소한다. PC가 기프트를 사용할 때 백의 영역의 인과가 추가로 2개 있는것으로 취급한다.", - "평지. 아무런 효과도 없다.", - ], - }, - - "RT" => { - :name => "관계표", - :type => '1D6', - :table => [ - "연심(플러스) / 살의(마이너스)", - "동정(플러스) / 모멸(마이너스)", - "동경(플러스) / 질투(마이너스)", - "신뢰(플러스) / 의심(마이너스)", - "공감(플러스) / 밥맛(마이너스)", - "소중(플러스) / 귀찮(마이너스)", - ], - }, - - "PRT" => { - :name => "부모마음표", - :type => '1D6', - :table => [ - "귀엽다(플러스) / 건방지다(마이너스)", - "기대(플러스) / 위협(마이너스)", - "자랑(플러스) / 수치(마이너스)", - "애정(플러스) / 무관심(마이너스)", - "유용(플러스) / 걱정(마이너스)", - "과보호(플러스) / 집착(마이너스)", - ], - }, - - "FT" => { - :name => "펌블표", - :type => '1D6', - :table => [ - "운명의 수레바퀴가 회전한다. 각각의 영역의 인과를 적->청->녹->백->적으로 옮긴다.", - "동료에게 민폐를 끼친다. 자신 이외의 PC전원은 【생명력】이 1점 감소한다.", - "이 실패는 나중에 빌미가 될지도 모른다. 자신의 【생명력】이 1D6점 감소한다.", - "너무 큰 실패에 다른 사람들의 태도가 변한다. 자신에 대해 가장 높은 【마음】을 가지고 있는 캐릭터 전원의 【마음】의 속성이 반전한다.", - "마음에 큰 동요가 생긴다. 자신에 속성에 대응한 상태이상을 획득한다.\n(흑->절망, 적->분노, 청->두려움3, 녹->타락, 백->수치)", - "주변에 활기가 사라진다. 운명의 수레바퀴에서 흑의 영역 이외의 인과를 모두 1개씩 제거한다.", - ], - }, - - "BT" => { - :name => "휴식표", - :type => 'D66', - :table => [ - [11, "토착 괴물이 습격해왔다! 어떻게든 격퇴했지만 부상을 입었다. 자신은 1D6점 데미지를 입는다."], - [12, "미녀의 목욕을 훔쳐보고 말았다. 1D6을 굴려 1~2라면 「타락」, 3~4라면 「수치」, 5~6이라면 「중상1」의 상태이상을 획득한다."], - [13, "욕심이 강한 상인을 만났다. 이 신에 등장한 모든 캐릭터는 아이템을 살 수 있다. 단, 평소의 가격보다 1 높다."], - [14, "자신의 과거의 이야기를 한다. 어째서 이런 얘기가 됐지? PC 중에서 자신에 대해 가장 높은 【마음】을 가지고 있는 PC 전원은 【마음】의 속성이 반전한다."], - [15, "주변의 공기가 변한다. 운명의 수레바퀴가 움직일 예감! 각각의 영역의 인과를 적->청->녹->백->적으로 옮긴다."], - [16, "당신은 무심코 노래를 부른다. 어느샌가 모두가 그 노래에 집중하고 있었다. 흑의 영역 이외의 원하는 인과 1개를 다른 영역으로 옮긴다."], - [22, "〈절계〉의 바깥 세계의 친구를 떠올린다. 모두 건강하게 지내고 있을까? 이 PC가【일상】의 판정에 성공하면 자신의 상태이상 1개를 회복하거나 흑의 영역의 인과를 하나 제거할 수 있다."], - [23, "기묘한 상인을 만났다. 이 신에 등장한 모든 캐릭터는 아이템을 살 수 있다."], - [24, "말하는 동물에게 부탁을 받는다. 동물들도 이 신화재해로 고생하고 있는듯 하다. 이 PC는 「이 괴물의 본체의 【생명력】을 0으로 한다」라는 추가의 【임무】를 받는다. 이 【임무】를 달성하면 추가로 경험치를 20점 받는다."], - [25, "멋진 꿈을 꾼다. 이 표를 굴린 PC는 자신의 PC 이외의 캐릭터 1명에 대한 【마음】이 1점 상승한다."], - [26, "소중한 사람에게서 당신을 걱정하는 문자를 받았다. 뭐라고 답장하지? 이 표를 굴린 PC는 【일상】의 판정에 성공하면 자신의 상태이상을 1개 회복하거나 자신이 가진 【마음】의 체크를 1개 해제한다."], - [33, "친절한 상인을 만났다. 이 신에 등장한 모든 캐릭터는 아이템을 살 수 있다. 단, 평소의 가격보다 1 낮다.(1 미만은 되지 않는다.)"], - [34, "무기의 정비를 한다. 이 표를 굴린 PC는 【일상】의 판정에 성공하면 이 세션 동안 무기 1개의 위력을 1점 상승시킬 수 있다."], - [35, "마지막으로 쇼핑을 했을때 잔돈을 더 받은걸 깨달았다. 코인을 1개 획득한다."], - [36, "식사를 하면서 동료들과 떠든다. 이 신에 등장해서 식사를 한 PC 전원은 자신이 가진 【마음】의 체크를 1개 해제한다."], - [44, "잠깐 잠들었는지 이상한 꿈을 꾼다. 이 표를 굴린 PC는 【영력】의 판정에 성공하면 원하는 예언카드 1장의 【진실】을 볼 수 있다."], - [45, "양아치들에게 얽힌 이성을 발견한다. 이 표를 굴린 PC가 【무용】의 판정에 성공하면 그 NPC는 이 표를 굴린 PC에 대한 【마음】을 1점 획득한다. 이 NPC를 협력자로 한다면 이 표를 굴린 PC가 이름과 관계를 자유롭게 정한다."], - [46, "기분좋은 바람이 분다. 운명이 당신을 도와주는듯한 기분이 든다. 원하는 영역에 인과를 1개 배치한다."], - [55, "눈을 뜨면 머리맡에 선물이 있다. 누굴까……? 이 표를 굴린 PC는 「랜덤 아이템표」를 사용한다."], - [56, "곤란해하는 신화생물을 도와줬다. 이 표를 굴린 PC는【일상】의 판정에 성공하면 다음 이동판정을 자동으로 성공한다.(달성치는 6으로 한다)"], - [66, "부모신이 당신에게 이야기하고 있다. 부모자식간의 대화다. 이 표를 굴린 PC는 【일상】의 판정에 성공하면 자신의 부모신에 대한 【마음】이나 부모신의 자신에 대한 【마음】중 하나를 1점 상승시킨다."], - ], - }, - - "FWT" => { - :name => "치명상표", - :type => '1D6', - :table => [ - "절망적인 공격을 받는다. 이 캐릭터는 사망한다.", - "고통의 비명을 지르고 무참하게 무너진다. 이 캐릭터는 행동불능이 되고 흑의 영역의 인과가 1 증가한다.", - "공격을 받은 무기가 부숴지고 적의 공격에 직격당한다. 이 캐릭터는 행동불능이 되고 아이템란 에서 무기 하나를 파괴한다.", - "강렬한 일격을 받아 기절한다. 이 캐릭터는 행동불능이 된다.", - "의식은 있지만 일어날 수 없다. 이 캐릭터는 행동불능이 되고 다음 신이 되면 【생명력】이 1점으로 회복된다.", - "기적적으로 버틴다. 【생명력】이 1점으로 회복된다.", - ], - }, - "BRT" => { - :name => "전과표", - :type => '1D6', - :table => [ - "코인을 1개 획득한다.", - "코인을 1D6개 획득한다.", - "원하는 영역에 인과를 1개 배치한다.", - "흑의 영역의 인과를 1개 제거한다.", - "「랜덤 아이템표」를 1번 사용한다.", - "PC 전원은 인물란의 체크를 1개 해제한다.", - ], - }, - - "RIT" => { - :name => "랜덤아이템표", - :type => '2D6', - :table => [ - "「갑옷」을 1개 획득한다.", - "「단서」를 1개 획득한다.", - "「패션 아이템」을 1개 획득한다.", - "「수호부적」을 1개 획득한다.", - "「감로」을 1개 획득한다.", - "「식량」을 1D6개 획득한다.", - "「향」을 1개 획득한다.", - "「공물」을 1개 획득한다.", - "「영약」을 1개 획득한다.", - "「진수성찬」을 1개 획득한다.", - "「폭탄」을 1개 획득한다.", - ], - }, - - "WT" => { - :name => "부상표", - :type => '1D6', - :table => [ - "자신의 【생명력】이 1D6점 감소한다.", - "코인을 1D6개 잃는다.", - "흑의 영역에 인과를 1개 배치한다.", - "「두려움3」의 상태이상을 획득한다.", - "「중상3」의 상태이상을 획득한다.", - "자신의 인물란의 가장 높은【마음】1개가 1점 감소한다. ", - ], - }, - - "NMT" => { - :name => "악몽표", - :type => '1D6', - :table => [ - "절망의 어둠에 시야를 차단당한다. 등뒤에 괴물의 기척이 느껴진다고 생각했을때는 늦었다. 비열한 공격이 당신을 덮친다. 원하는 능력치로 판정해 실패하면 사망한다.", - "절망의 어둠 속, 비통한 절규가 들려온다. 사건의 피해자들일까. 당신은 구하지 못했다. 【일상】의 판정에 실패하면 「절망」의 저주를 받는다.", - "절망의 어둠 속에서 괴물의 웃음소리가 메아리친다. 그것은 비웃는 소리였다. 괴물이나 동료들…… 무엇보다 자신에 대한 분노가 끓어오른다. 【일상】의 판정에 실패하면 「분노」의 저주를 받는다.", - "절망의 어둠 속에서 혼자 남겨졌다. 아무도 당신을 눈치채지 못한다. 고독에 견디면서 어떻게든 일상으로 귀환했지만…… 그 때의 공포를 극복하지 못했다. 【일상】의 판정에 실패하면 「두려움3」의 저주를 받는다.", - "절망의 어둠에서 귀환한 당신을 기다리고 있는건 전보다 나은것이 없는 일상이었다. 당신이 임무에 실패해도 세계는 변하지 않는다. 그렇다면, 더이상 당신은 그런 무서운 일을 당할 필요가 없지 않을까? 【일상】의 판정에 실패하면 「타락」의 저주를 받는다.", - "절망의 어둠 속에서 필사적으로 도망쳤다. 등뒤에서 동료의 목소리가 들린듯한 기분이 든다. 하지만, 당신은 돌아볼 수 없었다. 【일상】의 판정에 실패하면 「수치」의 저주를 받는다.", - ], - }, - - "TGT" => { - :name => "목표표", - :type => '1D6', - :table => [ - "악의. PC 중에서 가장 【생명력】이 낮은 PC 1명을 선택한다. 가장 낮은 【생명력】인 사람이 여럿 있을 경우, 그 중에서 GM이 자유롭게 선택한다.", - "교활. 가장 숫자가 높은 패러그래프에 있는 PC 1명을 선택한다. 전원이 장외에 있을 경우, 장외에 있는 PC 전원을 목표로 선택한다.", - "비도. PC 중에서 가장 【무용】랭크가 낮은 PC 1명을 선택한다. 가장 낮은 랭크를 가진 사람이 여럿 있을 경우, 그 중에서 가장 낮은 모드를 가진 사람을 1명 선택한다. 모드도 같을 경우, 그 중에서 GM이 자유롭게 선택한다.", - "견실. PC 중에서 가장 【기술】랭크가 낮은 PC 1명을 선택한다. 가장 낮은 랭크를 가진 사람이 여럿 있을 경우, 그 중에서 가장 낮은 모드를 가진 사람을 1명 선택한다. 모드도 같을 경우, 그 중에서 GM이 자유롭게 선택한다.", - "호쾌. PC 중에서 가장 【무용】랭크가 높은 PC 1명을 선택한다. 가장 높은 랭크를 가진 사람이 여럿 있을 경우, 그 중에서 가장 높은 모드를 가진 사람을 1명 선택한다. 모드도 같을 경우, 그 중에서 GM이 자유롭게 선택한다.", - "교활. 가장 숫자가 낮은 패러그래프에 있는 PC 1명을 선택한다. 전원이 장외에 있을 경우, 장외에 있는 PC 전원을 목표로 선택한다.", - ], - }, - - "CST" => { - :name => "制約表", - :type => '1D6', - :table => %w{ - 短命 - 誘惑 - 悪影響 - 束縛 - 喧嘩 - 干渉 - }, - }, - - "GCVT" => { - :name => "ギリシャ神群試練表", - :type => '1D6', - :table => %w{ - 山の向こうから一つ目の巨人、サイクロプスがこちらを見ている。岩を投げてきた!1D6点のダメージを受ける。 - 水音に目を向けると、アルテミスが泉で水浴びをしていた。美しい……あ、気づかれた?自分が男性なら、「重傷2」の変調を受ける。自分が女性なら、「恥辱」の変調を受ける。 - 海を渡ろうとすると、海が渦巻き乗った船が引き寄せられていく。中心にいるのは怪物カリュブディスだ。このままだと、船ごと飲み込まれてしまう。[青の領域にあるインガの数]点ダメージを受ける。 - デュオニソスの女性信者、マイナスたちに取り囲まれる。彼女たちは完全に酔っ払っており、話は通じない上、酒を飲めと強要してくる。【生命力】が1点回復し、「堕落」の変調を受ける。 - 巨大な天井を支えている巨人と出会う。巨人は「少しの間、支えるのを代わってくれないか?」と頼んでくる。断りにくい雰囲気だ……。【愛】で判定を行う。失敗すると、そのセッションの間、所持品の欄が一つ使えなくなる。その欄にアイテムが記入されていれば、それを捨てること。 - 「あなた最近、調子に乗ってない?」アフロディーテに難癖をつけられた。「自分のことだけ見てればいいんじゃない?」鏡に映る自分が、とても美しく思えてきた。自分への【想い】が2点上昇し、それ以外の人物欄のパトスすべてにチェックを入れる。 - }, - }, - - "YCVT" => { - :name => "ヤマト神群試練表", - :type => '1D6', - :table => %w{ - 空が急に暗くなる。太陽がどこにも見えない。もしかして、アマテラスが隠れてしまったのか?黒の領域にインガを一つ配置する。 - いつのまにか、黄泉国に迷い込んでしまっていた。周囲は黄泉軍に取り囲まれている。どうにかして、逃げなくては!移動判定を行う。失敗すると、3点のダメージを受け、もう一度「試練表」を振る。 - 目の前の海はワニザメでいっぱいだ。この海を渡らなければ、目的地にはたどり着けないのに。青の領域のインガを二つ取り除くか、自分が2D6点のダメージを受けるかを選ぶ。 - 「みんなー楽しんでるー!?」ここはウズメが歌い踊るライブ会場だ。どうしよう、目的を忘れそうなほど楽しい!自分は、自分の属性のインガを一つ取り除くか、「堕落」の変調を受けるかを選ぶ。 - 「龍の首の珠を取るのを手伝ってくれませんか?そうしたら、船に乗せてさしあげます」平安貴族のような格好をした男が話しかけてくる。手伝うしかないようだ。「重傷1」の変調を受ける。 - 海岸でいじめられている亀を助けたら、海の中の宮殿につれてきてくれた。トヨタマヒメが現れ、盛大にもてなしてくれる。あっという間に、夢のような時間が過ぎていく。でも、そろそろ行かなくては。【日常】で判定する。失敗すると、自分の年齢を6D6歳増やし、「絶望」の変調を受ける。 - }, - }, - - "ECVT" => { - :name => "エジプト神群試練表", - :type => '1D6', - :table => %w{ - 大蛇アペプが今にも目の前の空で輝く太陽を、飲み込もうとしている!止めなくては!【武勇】で判定する。失敗すると、黒の領域にインガを二つ配置する。 - 気がつけば、魂が羽の生えたバーだけになって、空を飛んでいた。早く肉体に戻らなくては。【霊力】で判定する。自分の【生命力】を1D6点減少し、もう一度「試練表」を振る。 - ぐつぐつと沸き立つ湖と、流れる火の川が見える。目的地は、この川を越えた先にある。【技術】で判定する。失敗すると、炎タグのついた2D6点のダメージを受け、黒以外の領域のインガが一つずつ取り除かれる。 - 冥界ドゥアトの番人たちが、目の前に現れた。と畜場より来る吸血鬼、下半身の排泄物を喰らうものが近づいてくる。ここは冥界なのか、それとも、やつらが地上に這い出してきたのか。自分は、「重傷1」の変調を受けるか、「恥辱」の変調を受けるかを選ぶ。 - 目の前にアヌビスがいる。アヌビスは天秤を掲げて、心臓を要求してくる。「お前の罪を数えろ」【日常】で判定を行う。失敗すると、【活力】が0点になる。この効果によって【生命力】の現在値が最大値を超えた場合、最大値と同じ値に調整する。 - 獅子頭の神、シェセムが、悪人の頭を砕いて、死者のためのワインにしている。悪人と見なされれば、頭をもがれてしまうだろう。【日常】で判定を行う。失敗すると、「重傷2」の変調を受ける。 - }, - }, - - "CCVT" => { - :name => "クトゥルフ神群試練表", - :type => '1D6', - :table => %w{ - 新聞記者たちが忙しく行き来しているオフィスにいる。ここは、新聞社アーカムアドバタイザーの編集部だ。「君が大きなニュースを持っていると聞いたんだけれど」記者の一人が尋ねてくる。自分の【真実】が公開されていなければ、「臆病1」の変調を受ける。 - 魚の顔と鱗に覆われた身体をもつ、ディープワンに取り囲まれる。あなたが女性ならば、彼らのすみかに連れ去られてしまう。男性ならば、暴力を振るわれ、1D6点のダメージを受ける。女性なら、衣服を奪われ、「恥辱」の変調を受ける。 - ここはどうやら夢の中らしい。目の前にクトゥルフがいる。「余になんの用だ。余を目覚めさせる気なら、容赦はしない」寝ぼけ眼のくせに、クトゥルフは怒っているようだ。「絶望」の変調を受ける。 - 地下のもぐり酒場で一息つけた……と思ったら、トンプソン機関銃を構えた男たちが飛び込んできた。マフィアの抗争だ!4点のダメージを受ける。 - 古ぼけた本を手に入れた。どうやら、魔導書のようだ。読むと正気を失う可能性もあるが、力が手に入る可能性も高い。【霊力】のランクがA以上なら、好きな領域にインガを二つ配置する。そうでない場合、「絶望」と「臆病2」の変調を受ける。 - なんの変哲も無い民家にいる。アーカムの静かな風景が……ああ、窓に!窓に!黒の領域にインガを一つ配置する。 - }, - }, - - "NCVT" => { - :name => "北欧神群試練表", - :type => '1D6', - :table => %w{ - 美しい乙女が告げる。「あなたはエインヘリアルたる資格がある」どうやら、戦乙女ヴァルキュリャに見初められたらしい。彼女たちは、戦死した者の魂を連れていくのだが。自分は、戦乙女から【想い】を2点獲得する。この【想い】の関係はマイナスの「殺意」となる。 - 雄叫びと共に現れたのは、獣の皮を被った屈強な戦士たち、ベルセルクだった。手に手に斧を構え、こちらに向かってくる!【武勇】で判定を行う。失敗すると、2D6点のダメージを受ける。 - オーディンの神子、エインヘリアルたちの宴会に紛れ込んでしまった。山のように積まれたご馳走を好きに食べていいと思ったら、「勝負だ!」という声。食べ比べを挑まれている。神子としては、負けるわけにはいかない。【日常】で判定を行う。失敗すると、「恥辱」の変調を受ける。 - 「ここは我々の土地だ。ただで通れると思っているのか?」ドヴェルグが行く手を塞ぎ、神貨を要求してくる。彼らはがめついことで有名だ。神貨を2点支払う。支払わない場合、自分の【生命力】を1点減少して、もう一度「試練表」を使用する。 - 「このまま冒険を続けても簡単すぎるんじゃないか?」ロキが話し掛けてきた。気がつくと君は狼の姿に変わっていた。このセッションの間、自分に「獣」のタグがつき、【愛】のランクが1段階低くなる(Dは変化しない)。 - 巨人が話し掛けてくる。「お前に力をやってもいい。代わりに、片目か、片腕をよこせ」オーディンは片目を差し出して、知恵を手に入れた。嘘ではないだろうが……。【生命力】を3D6点減少することで、好きな領域にインガを二つ配置できる。減少しなかった場合、「臆病1」の変調を受ける。 - }, - }, - - "DGVT" => { - :name => "ダンジョン試練表", - :type => '1D6', - :table => %w{ - 照明が切れてしまい、暗闇の中に放り出される。前が見えない。白の領域からインガを一つ取り除く。 - 罠だ!こちらに向かって、巨大な岩が転がって来る!【技術】で判定する。失敗すると、2D6点のダメージを受ける。 - 宝箱発見。罠がないかを慎重に調べてみよう。【技術】で判定する。成功すると、1神貨を獲得する。失敗すると、「憤怒」と「恥辱」の変調を受ける。 - 謎解きが必要な部分に迷い込む。この謎を解かなければ、罠を無理矢理突破しなければならない。【頭脳】で判定を行う。失敗すると、「絶望」の変調を受け、1D6点のダメージを受ける。 - 粘液が飛び散る部屋に入ってしまった。まずい、何でも溶かす酸だ!自分が装備しているアイテムの中から一つを選ぶ。選んだアイテムを破壊する。【食料】を選んだ場合は、すべての【食料】を破壊する。 - 怪物たちのすみかに迷い込んでしまったようだ。怪物が一斉に襲ってくる!【武勇】で判定を行う。失敗すると、2D6点のダメージを受ける。 - }, - }, - - "DAVT" => { - :name => "日常試練表", - :type => '1D6', - :table => %w{ - 仲間と移動していると、一般人の友達と偶然出会ってしまう。今何をしているかを聞かれたので、なんとかごまかす。自分に対して【想い】の値を持っているPC全員の属性が反転する。 - 仕事や勉強を催促する電話がかかってきた。今はそれどころじゃないんだって!「憤怒」の変調を受ける。 - ふと、見たかったテレビ番組を見逃していたことに気づいてしまう。録画もしてない。ちょっと凹む。自分の属性と同じ領域にあるインガを一つ取り除く。 - 警官に捕まって、職務質問を受ける。ちょっと言えない理由で、急いでいるんですけど。黒の領域にインガを一つ配置する。 - 自分の格好や言動が浮いていたらしい、自分を噂するひそひそ話が聞こえてきてしまう。「恥辱」の変調を受けるか、【食料】以外のアイテムを1つ破壊する。 - 乗りたかった電車やバスに乗り遅れる。仕方ないから、走るか。移動判定を行う。失敗すると、「堕落」の変調を受け、もう一度「試練表」を使用する。 - }, - }, - - "PRCT" => { - :name => "挑戦テーマ表【武勇】", - :type => '1D6', - :table => %w{ - 腕相撲 - 喧嘩 - 度胸試し - レスリング - 狩り - 武勇伝自慢 - }, - }, - - "TCCT" => { - :name => "挑戦テーマ表【技術】", - :type => '1D6', - :table => %w{ - 織物 - 戦車レース - マラソン - アクションゲーム - 射的 - 資格自慢 - }, - }, - - "INCT" => { - :name => "挑戦テーマ表【頭脳】", - :type => '1D6', - :table => %w{ - パズル - 謎かけ - チェス - 筆記試験 - 禅問答 - 学歴自慢 - }, - }, - - "PSCT" => { - :name => "挑戦テーマ表【霊力】", - :type => '1D6', - :table => %w{ - 詩作 - 動物を手なずける - 北風と太陽 - 絵画 - 演奏 - のど自慢 - }, - }, - - "LVCT" => { - :name => "挑戦テーマ表【愛】", - :type => '1D6', - :table => %w{ - ナンパ勝負 - 誰かからより愛される - 美人コンテスト - ティッシュ配り - 借り物競争 - 恋愛自慢 - }, - }, - - "DACT" => { - :name => "挑戦テーマ表【日常】", - :type => '1D6', - :table => %w{ - 料理 - 大食い - 呑み比べ - 倹約生活 - サバイバル - リア充自慢 - }, - }, - - }.freeze - - setPrefixes(['R[A-DS].*'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/AnimaAnimus.rb b/src/src_bcdice/diceBot/AnimaAnimus.rb deleted file mode 100644 index f2157c118..000000000 --- a/src/src_bcdice/diceBot/AnimaAnimus.rb +++ /dev/null @@ -1,95 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/table.rb' -require 'utils/range_table' -require 'utils/ArithmeticEvaluator' - -class AnimaAnimus < DiceBot - # ゲームシステムの識別子 - ID = 'AnimaAnimus' - - # ゲームシステム名 - NAME = 'アニマアニムス' - - # ゲームシステム名の読みがな - # - # 「ゲームシステム名の読みがなの設定方法」(docs/dicebot_sort_key.md)を参考にして - # 設定してください - SORT_KEY = 'あにまあにむす' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 ? '成功' : '失敗'}(達成値:#{result})#{has_critical ? ' (クリティカル発生)' : ''}" - end - - TABLES = { - 'IGT' => Table.new( - '情報収集表', - '1d10', - [ - 'ストリートファイト/<格闘>/「俺に勝てたら教えてやるよ」情報を知る魂願者から勝負を挑まれた。生き延びるためにもこの勝負、負けるわけにはいかない。', - '追跡!/<追跡/逃走>/有益な情報を持っている人間を見つけたが、こちらの顔を見るなり逃げ出した。どうにかして捕まえなくてはならない。', - '脅し/<威圧>/ならず者たちが集まるバーにやってきた。裏社会に生きる彼らを脅せば有益な情報が手に入るはずだ。', - 'インターネット/<コンピュータ>/SNSやニュースなど、インターネット上の情報を調査する。デマには騙されないようにしなくては。', - '瀕死の情報提供者/<医学>/情報を知る人物がいると聞いてやってきたら、その人物が瀕死の重傷を負っていた。なんとかして蘇生させなくては。', - '潜入捜査/<隠密>/敵対する魂願者たちのグループに潜り込んでの調査活動。リスクは高いが、有益な情報が手に入る確率は高い。', - '情報交換/<交渉>/友好的な関係にある魂願者との情報交換。うまく話を聞き出すことができるとよいが。', - '魔宴の情報屋/<調達>/魔宴の情報屋に接触して情報を聞き出すことにした。一筋縄ではいかない相手らしいが、はたして……?', - '違法調査/<犯罪>/法に触れるやり方で情報を集めることにした。ハッキング、窃盗、恐喝、どんな手段を選ぼうか。', - '聞き込み/<自我>/街ゆく人びとに聞き込みを行なう。地道な活動こそが目標にたどり着くための最短の方法だ。', - ] - ), - 'LT' => RangeTable.new( - '喪失表', - '1d10', - [ - [1..2, "存在/存在が希薄になり、知り合いや友人に自分の存在を忘れられてしまう。いずれ大切なパートナーの記憶からも消え、この世界でひとりぼっちになる。\nあなたの出自を消去すること。"], - [3..4, "記憶/自分の大切な記憶をひとつ失なう。これからは力を使うたびに記憶をひとつ失なうことになり、最後には大切なパートナーのことも思い出せなくなってしまう。\nあなたのメモリアをひとつ選択して消去すること。シナリオメモリアは選択できない。"], - [5..6, "容姿/だんだんと以前とはかけ離れた姿に変わっていく。いずれ誰も自分のことを自分だと気づかなくなるのだろう。\nあなたの特徴的な外見を失なう。内容をふさわしいものに書き換えること(特徴的な外見が美しい髪であれば醜い髪など)。"], - [7..8, "感情/喜怒哀楽の感情のうち、いずれかひとつを失なう。力を使うたびに他の感情も失っていき、最後にはただ生き残るために戦う機械となる。\nポジティブかネガティブのどちらかを選択する。選択した感情をすべてのメモリアから消去する。消去した結果、表出感情がなくなってしまった場合、残った感情を表出感情にすること。なお、新しくメモリアを取得した場合も、選んだ感情を得ることはできない。"], - [9..10, "五感/少しずつ五感が鈍くなる。今までできていたはずのことができなくなってしまう。\nあなたの特技をひとつ選択する。選択した特技に×をつけること。×が付いた技能で判定を行なうことはできず、判定を求められた場合は自動的に失敗となる。"], - ] - ), - }.freeze - - # ダイスボットで使用するコマンドを配列で列挙する - setPrefixes(['\d+AN<=\d([\+\-]\d+)*'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/Arianrhod.rb b/src/src_bcdice/diceBot/Arianrhod.rb deleted file mode 100644 index 94f965f9b..000000000 --- a/src/src_bcdice/diceBot/Arianrhod.rb +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Arianrhod < DiceBot - # ゲームシステムの識別子 - ID = 'Arianrhod' - - # ゲームシステム名 - NAME = 'アリアンロッドRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'ありあんろつとRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 2 - # 2個以上6の目があったらクリティカル - " > クリティカル(+#{n_max}D6)" if n_max >= 2 - elsif cmp_op != :>= || target == '?' - '' - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - alias check_2D6 check_nD6 -end diff --git a/src/src_bcdice/diceBot/ArsMagica.rb b/src/src_bcdice/diceBot/ArsMagica.rb deleted file mode 100644 index a7e74ad6f..000000000 --- a/src/src_bcdice/diceBot/ArsMagica.rb +++ /dev/null @@ -1,142 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require "utils/normalize" - -class ArsMagica < DiceBot - # ゲームシステムの識別子 - ID = 'ArsMagica' - - # ゲームシステム名 - NAME = 'アルスマギカ' - - # ゲームシステム名の読みがな - SORT_KEY = 'あるすまきか' - - # ダイスボットの使い方 - HELP_MESSAGE = <=]+)(\d+))?)(\s|$)/i.match(string)) - - diff = 0 - botch = 1 - bonus = 0 - crit_mul = 1 - total = 0 - cmp_op = nil - bonusText = m[3] - botch = m[5].to_i if m[4] - - if m[6] - cmp_op = Normalize.comparison_operator(m[7]) - diff = m[8].to_i - end - - bonus = parren_killer("(0#{bonusText})").to_i unless bonusText.empty? - - die = rand(10) - output = "(#{m[2]}) > " - - if die == 0 # botch? - count0 = 0 - dice_n = [] - - botch.times do |_i| - botch_die = rand(10) - count0 += 1 if botch_die == 0 - dice_n.push(botch_die) - end - - dice_n = dice_n.sort if sortType != 0 - - output += "0[#{die},#{dice_n.join(',')}]" - - if count0 != 0 - bonus = 0 - - if count0 > 1 - output += " > #{count0}Botch!" - else - output += " > Botch!" - end - - # Botchの時には目標値を使った判定はしない - cmp_op = nil - else - if bonus > 0 - output += "+#{bonus} > #{bonus}" - elsif bonus < 0 - output += "#{bonus} > #{bonus}" - else - output += " > 0" - end - total = bonus - end - elsif die == 1 # Crit - crit_dice = "" - while die == 1 - crit_mul *= 2 - die = rand(10) + 1 - crit_dice += "#{die}," - end - total = die * crit_mul - crit_dice = crit_dice.sub(/,$/, '') - output += total.to_s - if sendMode != 0 - output += "[1,#{crit_dice}]" - end - total += bonus - if bonus > 0 - output += "+#{bonus} > #{total}" - elsif bonus < 0 - output += "#{bonus} > #{total}" - end - else - total = die + bonus - if bonus > 0 - output += "#{die}+#{bonus} > #{total}" - elsif bonus < 0 - output += "#{die}#{bonus} > #{total}" - else - output += total.to_s - end - end - - if cmp_op == :>= - output += (total >= diff ? " > 成功" : " > 失敗") - end - - return ": #{output}" - end -end diff --git a/src/src_bcdice/diceBot/Avandner.rb b/src/src_bcdice/diceBot/Avandner.rb deleted file mode 100644 index b06072ddb..000000000 --- a/src/src_bcdice/diceBot/Avandner.rb +++ /dev/null @@ -1,98 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Avandner < DiceBot - # ゲームシステムの識別子 - ID = 'Avandner' - - # ゲームシステム名 - NAME = '黒絢のアヴァンドナー' - - # ゲームシステム名の読みがな - SORT_KEY = 'こつけんのあうあんとなあ' - - # ダイスボットの使い方 - HELP_MESSAGE = < 3 - return checkRoll(diceCount, target, damage, criticalTrigger, criticalNumber) - end - - return nil - end - - def checkRoll(diceCount, target, damage, criticalTrigger, criticalNumber) - totalSuccessCount = 0 - totalCriticalCount = 0 - text = "" - - rollCount = diceCount - - while rollCount > 0 - _dice, diceText = roll(rollCount, 10, @sortType) - diceArray = diceText.split(/,/).collect { |i| i.to_i } - - successCount = diceArray.count { |i| i <= target } - criticalCount = diceArray.count { |i| i <= criticalNumber } - - totalSuccessCount += successCount - totalCriticalCount += criticalCount - - text += "+" unless text.empty? - text += "#{successCount}[#{diceText}]" - - rollCount = criticalCount - end - - result = "" - isDamage = (damage != 0) - - if isDamage - totalDamage = totalSuccessCount * damage + totalCriticalCount * criticalTrigger - - result += "(#{diceCount}D10\<\=#{target}) > #{text} > Hits:#{totalSuccessCount}*#{damage}" - result += " + Trigger:#{totalCriticalCount}*#{criticalTrigger}" if criticalTrigger > 0 - result += " > #{totalDamage}ダメージ" - else - result += "(#{diceCount}D10\<\=#{target}) > #{text} > 成功数:#{totalSuccessCount}" - end - - result += " / #{totalCriticalCount}クリティカル" if totalCriticalCount > 0 - - return result - end -end diff --git a/src/src_bcdice/diceBot/BBN.rb b/src/src_bcdice/diceBot/BBN.rb deleted file mode 100644 index c4b3de070..000000000 --- a/src/src_bcdice/diceBot/BBN.rb +++ /dev/null @@ -1,138 +0,0 @@ -# -*- coding: utf-8 -*- - -class BBN < DiceBot - # ダイスボットで使用するコマンドを配列で列挙する - setPrefixes(['\d+BN.*']) - - ID = 'BBN'.freeze - - NAME = 'BBNTRPG'.freeze - - SORT_KEY = 'ひいひいえぬTRPG'.freeze - - HELP_MESSAGE = <=z[c,f]) - xD6の判定。クリティカル、ファンブルの自動判定を行います。 - 1Dのクリティカル値とファンブル値は1。2Dのクリティカル値とファンブル値は2。 - nDのクリティカル値とファンブル値は n/2 の切り上げ。 - クリティカルとファンブルが同時に発生した場合、クリティカルを優先。 - x:xに振るダイス数を入力。 - y:yに修正値を入力。省略可能。 - z:zに目標値を入力。省略可能。 - c:クリティカルに必要なダイス目「6」の数の増減。省略可能。 - f:ファンブルに必要なダイス目「1」の数の増減。省略可能。 - 例) 3BN+4 3BN>=8 3BN+1>=10[-1] 3BN+1>=10[,1] 3BN+1>=10[1,1] -MESSAGETEXT - - def rollDiceCommand(command) - unless parse(command) - return nil - end - - # ダイスロール - dice, dice_str = roll(@roll_times, 6) - dice_list = dice_str.split(',').map(&:to_i).sort - - total = dice + @modify - - # 出力文の生成 - sequence = [ - "(#{command})", - "#{dice}[#{dice_str}]#{@modify_str}", - total - ] - - # クリティカルとファンブルが同時に発生した時にはクリティカルが優先 - if critical?(dice_list) - sequence.push("クリティカル!", *additional_roll(dice_list.count(6), total)) - elsif fumble?(dice_list) - sequence.push("ファンブル!") - elsif @difficulty - sequence.push(total >= @difficulty ? "成功" : "失敗") - end - - return sequence.join(" > ") - end - - private - - # コマンド文字列をパースする - # - # @param command [String] コマンド - # @return [Boolean] パースに成功したか - def parse(command) - m = /^(\d+)BN([+-]\d+)?(>=(([+-]?\d+)))?(\[([+-]?\d+)?(,([+-]?\d+))?\])?/.match(command) - unless m - return false - end - - @roll_times = m[1].to_i - @modify_str = m[2] || '' - @modify = m[2].to_i - @difficulty = m[4] ? m[4].to_i : nil - - base = critical_base(@roll_times) - @critical = base + m[7].to_i - @fumble = base + m[9].to_i - - return true - end - - # 振るダイスの数からクリティカルとファンブルの基本値を算出する - # - # @param roll_times [Integer] 振るダイスの数 - # @return [Integer] クリティカルの値 - def critical_base(roll_times) - case roll_times - when 1, 2 - roll_times - else - (roll_times.to_f / 2).ceil - end - end - - # @return [Boolean] クリティカルか - def critical?(dice_list) - dice_list.count(6) >= @critical - end - - # @return [Boolean] ファンブルか - def fumble?(dice_list) - dice_list.count(1) >= @fumble - end - - # クリティカルの追加ロールをする - # 追加ロールで6が出た場合、さらに追加ロールが行われる - # - # @param additional_dice [Integer] クリティカルによる追加のダイス数 - # @param total [Integer] 現在の合計値 - # @return [Array] - def additional_roll(additional_dice, total) - sequence = [] - reroll_count = 0 - - # 追加クリティカルは無限ループしうるので、10回に制限 - while additional_dice > 0 && reroll_count < 10 - reroll_count += 1 - - dice_total, dice_str = roll(additional_dice, 6) - additional_dice = dice_str.split(',').map(&:to_i).count(6) - - sequence.push("#{total}+#{dice_total}[#{dice_str}]") - sequence.push("追加クリティカル!") if additional_dice > 0 - - total += dice_total - end - - if additional_dice > 0 - sequence.push("無限ループ防止のため中断") - end - - sequence.push total - if @difficulty - sequence.push(total >= @difficulty ? "成功" : "失敗") - end - - return sequence - end -end diff --git a/src/src_bcdice/diceBot/BadLife.rb b/src/src_bcdice/diceBot/BadLife.rb deleted file mode 100644 index bca83ea7f..000000000 --- a/src/src_bcdice/diceBot/BadLife.rb +++ /dev/null @@ -1,435 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class BadLife < DiceBot - # ゲームシステムの識別子 - ID = 'BadLife' - - # ゲームシステム名 - NAME = 'バッドライフ' - - # ゲームシステム名の読みがな - SORT_KEY = 'はつとらいふ' - - # ダイスボットの使い方 - HELP_MESSAGE = < diceMax - end - - diceMax = 5 if isHeavyAttack && diceMax <= 5 # 重撃 - - isCritical = (diceMax >= critical) - isFumble = (diceMax <= fumble) - - diceMax = 20 if isCritical # クリティカル - total = diceMax + modify - total += 5 if isAnticipation && diceMax <= 7 # 先見の明 - total = 0 if isFumble # ファンブル - - result = "#{diceCount}D20\(C:#{critical},F:#{fumble}\) > " - result += "#{diceMax}\[#{diceText}\]" - result += "\+" if modify > 0 - result += modify.to_s if modify != 0 - result += "\+5" if isAnticipation && diceMax <= 7 # 先見の明 - result += " > 達成値:#{total}" - - if target > 0 - success = total - target - result += ">=#{target} 成功度:#{success} > " - - if isCritical - result += "成功(クリティカル)" - elsif total >= target - result += "成功" - else - result += "失敗" - result += "(ファンブル)" if isFumble - end - else - result += " クリティカル" if isCritical - result += " ファンブル" if isFumble - end - - skillText = "" - skillText += "〈波乱万丈〉" if isStormy - skillText += "〈先見の明〉" if isAnticipation - skillText += "[重撃]" if isHeavyAttack - result += " #{skillText}" if skillText != "" - - return result - end - - def get_name_table(initials) - case initials - when 'T' # Thief - name = '怪盗コードネーム表' - table = [ - [1, 'フォックス'], - [2, 'フォックス'], - [3, 'ラット'], - [4, 'ラット'], - [5, 'キャット'], - [6, 'キャット'], - [7, 'タイガー'], - [8, 'タイガー'], - [9, 'シャーク'], - [10, 'シャーク'], - [11, 'コンドル'], - [12, 'コンドル'], - [13, 'スパイダー'], - [14, 'スパイダー'], - [15, 'ウルフ'], - [16, 'ウルフ'], - [17, 'コヨーテ'], - [18, 'コヨーテ'], - [19, 'ジャガー'], - [20, 'ジャガー'] - ] - when 'D' # Doctor - name = '闇医者コードネーム表' - table = [ - [1, 'キャンサー'], - [2, 'キャンサー'], - [3, 'ヘッドエイク'], - [4, 'ヘッドエイク'], - [5, 'ブラッド'], - [6, 'ブラッド'], - [7, 'ウーンズ'], - [8, 'ウーンズ'], - [9, 'ポイズン'], - [10, 'ポイズン'], - [11, 'ペイン'], - [12, 'ペイン'], - [13, 'スリープ'], - [14, 'スリープ'], - [15, 'キュア'], - [16, 'キュア'], - [17, 'デス'], - [18, 'デス'], - [19, 'リーンカーネイション'], - [20, 'リーンカーネイション'] - ] - when 'G' # Gambler - name = '博徒コードネーム表' - table = [ - [1, 'リトルダイス'], - [2, 'リトルダイス'], - [3, 'プラチナム'], - [4, 'プラチナム'], - [5, 'プレジデント'], - [6, 'プレジデント'], - [7, 'ドリーム'], - [8, 'ドリーム'], - [9, 'アクシデント'], - [10, 'アクシデント'], - [11, 'グリード'], - [12, 'グリード'], - [13, 'フォーチュン'], - [14, 'フォーチュン'], - [15, 'ミラクル'], - [16, 'ミラクル'], - [17, 'ホープ'], - [18, 'ホープ'], - [19, 'ビッグヒット'], - [20, 'ビッグヒット'] - ] - when 'K' # Killer - name = '殺シ屋コードネーム表' - table = [ - [1, 'ハンマー'], - [2, 'ハンマー'], - [3, 'アロー'], - [4, 'アロー'], - [5, 'ボマー'], - [6, 'ボマー'], - [7, 'キャノン'], - [8, 'キャノン'], - [9, 'ブレード'], - [10, 'ブレード'], - [11, 'スティング'], - [12, 'スティング'], - [13, 'ガロット'], - [14, 'ガロット'], - [15, 'パイルバンカー'], - [16, 'パイルバンカー'], - [17, 'レイザー'], - [18, 'レイザー'], - [19, 'カタナ'], - [20, 'カタナ'] - ] - when 'S' # Schemer - name = '業師コードネーム表' - table = [ - [1, 'ローズ'], - [2, 'ローズ'], - [3, 'サクラ'], - [4, 'サクラ'], - [5, 'ライラック'], - [6, 'ライラック'], - [7, 'ダンデライオン'], - [8, 'ダンデライオン'], - [9, 'フリージア'], - [10, 'フリージア'], - [11, 'カクタス'], - [12, 'カクタス'], - [13, 'ロータス'], - [14, 'ロータス'], - [15, 'リリィ'], - [16, 'リリィ'], - [17, 'ラフレシア'], - [18, 'ラフレシア'], - [19, 'ヒヤシンス'], - [20, 'ヒヤシンス'] - ] - when 'B' # Bum - name = '遊ビ人コードネーム表' - table = [ - [1, 'モノポリー'], - [2, 'モノポリー'], - [3, 'ブリッジ'], - [4, 'ブリッジ'], - [5, 'チェッカー'], - [6, 'チェッカー'], - [7, 'アクワイア'], - [8, 'アクワイア'], - [9, 'ジャンケン'], - [10, 'ジャンケン'], - [11, 'トランプ'], - [12, 'トランプ'], - [13, 'ケイドロ'], - [14, 'ケイドロ'], - [15, 'パンデミック'], - [16, 'パンデミック'], - [17, 'スゴロク'], - [18, 'スゴロク'], - [19, 'キャベツカンテイ'], - [20, 'キャベツカンテイ'] - ] - else - return nil - end - - return get_badlife_1d20_table_result(name, table) - end - - def get_skill_table - name = 'スキル表' - table = [ - [1, '一撃離脱'], - [2, '一撃離脱'], - [3, 'チェイサー'], - [4, 'チェイサー'], - [5, '影の外套'], - [6, '影の外套'], - [7, '二段ジャンプ'], - [8, '二段ジャンプ'], - [9, '韋駄天'], - [10, '韋駄天'], - [11, '手練'], - [12, '手練'], - [13, 'ハニーテイスト'], - [14, 'ハニーテイスト'], - [15, '先見の明'], - [16, '先見の明'], - [17, 'ベテラン'], - [18, 'ベテラン'], - [19, '応急手当'], - [20, '応急手当'], - [21, 'セラピー'], - [22, 'セラピー'], - [23, '緊急治療'], - [24, '緊急治療'], - [25, 'ゴールドディガー'], - [26, 'ゴールドディガー'], - [27, 'デイリーミッション'], - [28, 'デイリーミッション'], - [29, '見切り'], - [30, '見切り'], - [31, '鷹の目'], - [32, '鷹の目'], - [33, 'しびれ罠'], - [34, 'しびれ罠'], - [35, '大逆転'], - [36, '大逆転'], - [37, '武器習熟:○○'], - [38, '武器習熟:○○'], - [39, '百発百中'], - [40, '百発百中'], - [41, '屈強な肉体'], - [42, '屈強な肉体'], - [43, '二刀流'], - [44, '二刀流'], - [45, 'クイックリカバリー'], - [46, 'クイックリカバリー'], - [47, '体験主義'], - [48, '体験主義'], - [49, '破釜沈船'], - [50, '破釜沈船'], - [51, '想定の範囲内'], - [52, '想定の範囲内'], - [53, 'セカンドチャンス'], - [54, 'セカンドチャンス'], - [55, '優秀な子分'], - [56, '優秀な子分'], - [57, '時間管理術'], - [58, '時間管理術'], - [59, '連撃術'], - [60, '連撃術'], - [61, '罵詈雑言'], - [62, '罵詈雑言'], - [63, 'ケセラセラ'], - [64, 'ケセラセラ'], - [65, 'ダンス&ミュージック'], - [66, 'ダンス&ミュージック'], - [67, 'フェイント'], - [68, 'フェイント'], - [69, 'ヘイトコントロール'], - [70, 'ヘイトコントロール'], - [71, '惜別'], - [72, '惜別'], - [73, '戦闘マシーン'], - [74, '戦闘マシーン'], - [75, '戦闘マシーン'], - [76, '名医'], - [77, '名医'], - [78, '名医'], - [79, '忍者'], - [80, '忍者'], - [81, '忍者'], - [82, '観察眼'], - [83, '観察眼'], - [84, '観察眼'], - [85, 'クレバー'], - [86, 'クレバー'], - [87, 'クレバー'], - [88, 'フェイスマン'], - [89, 'フェイスマン'], - [90, 'フェイスマン'], - [91, 'スポーツマン'], - [92, 'スポーツマン'], - [93, 'スポーツマン'], - [94, '不屈'], - [95, '不屈'], - [96, '不屈'], - [97, '慎重'], - [98, '慎重'], - [99, '慎重'], - [100, 'この表を2回振る'] - ] - dice, = roll(1, 100) - result = get_table_by_number(dice, table) - - return get_badlife_table_result(name, dice, result) - end - - def get_badlife_1d20_table_result(name, table) - dice, = roll(1, 20) - output = get_table_by_number(dice, table) - return get_badlife_table_result(name, dice, output) - end - - def get_badlife_table_result(name, dice, output) - return "#{name}(#{dice}) > #{output}" - end - - def get_value(text) - text ||= "" - return parren_killer("(0#{text})").to_i - end -end diff --git a/src/src_bcdice/diceBot/BarnaKronika.rb b/src/src_bcdice/diceBot/BarnaKronika.rb deleted file mode 100644 index 5e3522aa0..000000000 --- a/src/src_bcdice/diceBot/BarnaKronika.rb +++ /dev/null @@ -1,205 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class BarnaKronika < DiceBot - # ゲームシステムの識別子 - ID = 'BarnaKronika' - - # ゲームシステム名 - NAME = 'バルナ・クロニカ' - - # ゲームシステム名の読みがな - SORT_KEY = 'はるなくろにか' - - # ダイスボットの使い方 - HELP_MESSAGE = < 1 - output += "成功数#{suc}" - else - output += "失敗" - end - - debug("set", set) - output += ",セット#{set}" if set > 0 - end - - return output - end - - def roll_barna_kronika(dice_n, criticalCallDice) - dice_n = dice_n.to_i - - output = '' - suc = 0 - set = 0 - at_str = '' - diceCountList = [0, 0, 0, 0, 0, 0] - - dice_n.times do |_i| - index = rand(6) - diceCountList[index] += 1 - if diceCountList[index] > suc - suc = diceCountList[index] - end - end - - 6.times do |i| - diceCount = diceCountList[i] - - next if diceCount == 0 - - diceCount.times do |_j| - output += "#{i + 1}," - end - - if isCriticalCall(i, criticalCallDice) - debug("isCriticalCall") - at_str += getAttackStringWhenCriticalCall(i, diceCount) - elsif isNomalAttack(criticalCallDice, diceCount) - debug("isNomalAttack") - at_str += getAttackStringWhenNomal(i, diceCount) - end - - set += 1 if diceCount > 1 - end - - if criticalCallDice != 0 - c_cnt = diceCountList[criticalCallDice - 1] - suc = c_cnt * 2 - - if c_cnt != 0 - set = 1 - else - set = 0 - end - end - - if @isBattleMode && (suc < 2) - at_str = "失敗" - end - - output = output.sub(/,$/, '') - at_str = at_str.sub(/,$/, '') - - return output, suc, set, at_str - end - - def isCriticalCall(index, criticalCallDice) - return false unless @isBattleMode - return false if criticalCallDice == 0 - - return (criticalCallDice == (index + 1)) - end - - def isNomalAttack(criticalCallDice, diceCount) - return false unless @isBattleMode - return false if criticalCallDice != 0 - - return (diceCount > 1) - end - - def getAttackStringWhenCriticalCall(index, diceCount) - hitLocation = getAttackHitLocation(index + 1) - attackValue = (diceCount * 2) - result = hitLocation + ":攻撃値#{attackValue}," - return result - end - - def getAttackStringWhenNomal(index, diceCount) - hitLocation = getAttackHitLocation(index + 1) - attackValue = diceCount - result = hitLocation + ":攻撃値#{attackValue}," - return result - end - - # 命中部位表 - def getAttackHitLocation(num) - table = [ - [1, '頭部' ], - [2, '右腕' ], - [3, '左腕' ], - [4, '右脚' ], - [5, '左脚' ], - [6, '胴体' ], - ] - - return get_table_by_number(num, table) - end -end diff --git a/src/src_bcdice/diceBot/BattleTech.rb b/src/src_bcdice/diceBot/BattleTech.rb deleted file mode 100644 index a4281c727..000000000 --- a/src/src_bcdice/diceBot/BattleTech.rb +++ /dev/null @@ -1,527 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/table' -require 'utils/range_table' - -class BattleTech < DiceBot - # ゲームシステムの識別子 - ID = 'BattleTech' - - # ゲームシステム名 - NAME = 'バトルテック' - - # ゲームシステム名の読みがな - SORT_KEY = 'はとるてつく' - - # ダイスボットの使い方 - HELP_MESSAGE = <=(目標値) - 回数は省略時 1固定。 - 部位はC(正面)R(右)、L(左)。省略時はC(正面)固定 - U(上半身)、L(下半身)を組み合わせ CU/RU/LU/CL/RL/LLも指定可能 - 例)BT3+2>=4 -  正面からダメージ3の攻撃を技能ベース2目標値4で1回判定 - 例)2BT3RL+5>=8 -  右下半身にダメージ3の攻撃を技能ベース5目標値8で2回判定 - ミサイルによるダメージは BT(ダメージ)の変わりに SRM2/4/6, LRM5/10/15/20を指定 - 例)3SRM6LU+5>=8 -  左上半身にSRM6連を技能ベース5目標値8で3回判定 -・CT:致命的命中表 -・DW:転倒後の向き表 -・CDx:メック戦士意識維持表。ダメージ値xで判定 例)CD3 -MESSAGETEXT - - setPrefixes(['\d*SRM\d+.+', '\d*LRM\d+.+', '\d*BT.+', 'CT', 'DW', 'CD\d+']) - - # 致命的命中が発生しない上限値 - NO_CRITICAL_HIT_LIMIT = 7 - - def changeText(string) - string.sub(/PPC/, 'BT10') - end - - def rollDiceCommand(command) - result = roll_tables(command, TABLES) - return result if result - - count = 1 - if /^(\d+)(.+)/ === command - count = Regexp.last_match(1).to_i - command = Regexp.last_match(2) - end - - debug('executeCommandCatched count', count) - debug('executeCommandCatched command', command) - - case command - when /^CD(\d+)$/ - damage = Regexp.last_match(1).to_i - return getCheckDieResult(damage) - when /^((S|L)RM\d+)(.+)/ - tail = Regexp.last_match(3) - type = Regexp.last_match(1) - damageFunc = lambda { getXrmDamage(type) } - return getHitResult(count, damageFunc, tail) - when /^BT(\d+)(.+)/ - debug('BT pattern') - tail = Regexp.last_match(2) - damageValue = Regexp.last_match(1).to_i - damageFunc = lambda { damageValue } - return getHitResult(count, damageFunc, tail) - end - - return nil - end - - def getXrmDamage(type) - raise "unknown XRM type:#{type}" unless XRM_DAMAGE_TABLES.key?(type) - - table = XRM_DAMAGE_TABLES[type] - roll_result = table.roll(bcdice) - - lrm = type.start_with?('L') - damage = roll_result.content - modified_damage = lrm ? damage : (2 * damage) - - return modified_damage, roll_result.sum, lrm - end - - LRM_LIMIT = 5 - - def getHitResult(count, damageFunc, tail) - m = /([LCR][LU]?)?(\+\d+)?>=(\d+)/.match(tail) - return nil unless m - - side = m[1] || 'C' - baseString = m[2] - target = m[3].to_i - base = getBaseValue(baseString) - debug("side, base, target", side, base, target) - - partTable = HitPart::TABLES[side] - - resultTexts = [] - damages = {} - hitCount = 0 - - count.times do - isHit, hitResult = getHitText(base, target) - if isHit - hitCount += 1 - - damages, damageText = getDamages(damageFunc, partTable, damages) - hitResult += damageText - end - resultTexts << hitResult - end - - resultTexts.push(" > #{hitCount}回命中") - - totalResultText = resultTexts.join("\n") - totalResultText += " 命中箇所:" + getTotalDamage(damages) if hitCount > 0 - - return totalResultText - end - - def getBaseValue(baseString) - base = 0 - return base if baseString.nil? - - base = parren_killer("(" + baseString + ")").to_i - return base - end - - def getHitText(base, target) - dice1, = roll(1, 6) - dice2, = roll(1, 6) - total = dice1 + dice2 + base - isHit = (total >= target) - baseString = (base > 0 ? "+#{base}" : "") - - result = "#{total}[#{dice1},#{dice2}#{baseString}]>=#{target} > " - - if isHit - result += "命中 > " - else - result += "外れ" - end - - return isHit, result - end - - # @param [Proc] damageFunc ダメージを返す手続き - # @param [RangeTable] partTable 命中部位表 - # @param [Hash] damages 蓄積したダメージの情報 - def getDamages(damageFunc, partTable, damages) - resultText = '' - damage, dice, isLrm = damageFunc.call() - - damagePartCount = 1 - if isLrm - damagePartCount = (1.0 * damage / LRM_LIMIT).ceil - resultText += "[#{dice}] #{damage}点" - end - - damagePartCount.times do |damageIndex| - currentDamage, damageText = getDamageInfo(dice, damage, isLrm, damageIndex) - - text, part, criticalText = getHitResultOne(damageText, partTable) - resultText += " " if isLrm - resultText += text - - if damages[part].nil? - damages[part] = { - :partDamages => [], - :criticals => [], - } - end - - damages[part][:partDamages] << currentDamage - damages[part][:criticals] << criticalText unless criticalText.empty? - end - - return damages, resultText - end - - def getDamageInfo(dice, damage, isLrm, index) - return damage, damage.to_s if dice.nil? - return damage, "[#{dice}] #{damage}" unless isLrm - - currentDamage = damage - (LRM_LIMIT * index) - if currentDamage > LRM_LIMIT - currentDamage = LRM_LIMIT - end - - return currentDamage, currentDamage.to_s - end - - def getTotalDamage(damages) - parts = ['頭', - '胴中央', - '右胴', - '左胴', - '右脚', - '左脚', - '右腕', - '左腕',] - - allDamage = 0 - damageTexts = [] - parts.each do |part| - damageInfo = damages.delete(part) - next if damageInfo.nil? - - damage = damageInfo[:partDamages].inject(0) { |sum, i| sum + i } - allDamage += damage - damageCount = damageInfo[:partDamages].size - criticals = damageInfo[:criticals] - - text = "" - text += "#{part}(#{damageCount}回) #{damage}点" - text += " #{criticals.join(' ')}" unless criticals.empty? - - damageTexts << text - end - - unless damages.empty? - raise "damages rest!! #{damages.inspect()}" - end - - result = damageTexts.join(" / ") - result += " > 合計ダメージ #{allDamage}点" - - return result - end - - # 攻撃を1回行い、その結果を返す - # @param [String] damage_text ダメージを表す文字列 - # @param [RangeTable] hit_part_table 命中部位表 - def getHitResultOne(damage_text, hit_part_table) - hit_part_roll_result = hit_part_table.roll(bcdice) - hit_part = hit_part_roll_result.content - - critical_hit_may_occur_str = - hit_part.critical_hit_may_occur ? '(致命的命中)' : '' - - result_parts = [ - [ - "[#{hit_part_roll_result.sum}]", - "#{hit_part.name}#{critical_hit_may_occur_str}", - "#{damage_text}点", - ].join(' ') - ] - - critical_hit_occurred = false - criticalText = '' - if hit_part.critical_hit_may_occur - ct_roll_result = TABLES['CT'].roll(bcdice) - - # 致命的命中が発生したか - critical_hit_occurred = ct_roll_result.sum > NO_CRITICAL_HIT_LIMIT - if critical_hit_occurred - criticalText = ct_roll_result.content - end - - result_parts.push("[#{ct_roll_result.sum}] #{ct_roll_result.content}") - end - - # TODO: 構造体で表現する - return result_parts.join(' > '), hit_part.name, criticalText - end - - def getCheckDieResult(damage) - if damage >= 6 - return "死亡" - end - - table = [[1, 3], - [2, 5], - [3, 7], - [4, 10], - [5, 11]] - - target = get_table_by_number(damage, table, nil) - - dice1, = roll(1, 6) - dice2, = roll(1, 6) - total = dice1 + dice2 - result = total >= target ? "成功" : "失敗" - text = "#{total}[#{dice1},#{dice2}]>=#{target} > #{result}" - - return text - end - - # 表の集合 - TABLES = { - 'CT' => RangeTable.new( - '致命的命中表', - '2D6', - [ - [2..NO_CRITICAL_HIT_LIMIT, '致命的命中はなかった'], - [8..9, '1箇所の致命的命中'], - [10..11, '2箇所の致命的命中'], - [12, 'その部位が吹き飛ぶ(腕、脚、頭)または3箇所の致命的命中(胴)'], - ] - ), - 'DW' => Table.new( - '転倒後の向き表', - '1D6', - [ - '同じ(前面から転倒) 正面/背面', - '1ヘクスサイド右(側面から転倒) 右側面', - '2ヘクスサイド右(側面から転倒) 右側面', - '180度逆(背面から転倒) 正面/背面', - '2ヘクスサイド左(側面から転倒) 左側面', - '1ヘクスサイド左(側面から転倒) 左側面', - ] - ) - }.freeze - - # 命中部位を表す構造体 - # @!attribute [rw] name - # @return [String] 部位名 - # @!attribute [rw] critical_hit_may_occur - # @return [Boolean] 致命的命中が発生し得るか - HitPart = Struct.new(:name, :critical_hit_may_occur) - - class HitPart - LEFT_TORSO = '左胴' - CENTER_TORSO = '胴中央' - RIGHT_TORSO = '右胴' - - LEFT_ARM = '左腕' - RIGHT_ARM = '右腕' - - LEFT_LEG = '左脚' - RIGHT_LEG = '右脚' - - HEAD = '頭' - - # 命中部位表 - TABLES = { - 'L' => RangeTable.new( - '命中部位表(左)', - '2D6', - [ - [2, new(LEFT_TORSO, true)], - [3, new(LEFT_LEG, false)], - [4..5, new(LEFT_ARM, false)], - [6, new(LEFT_LEG, false)], - [7, new(LEFT_TORSO, false)], - [8, new(CENTER_TORSO, false)], - [9, new(RIGHT_TORSO, false)], - [10, new(RIGHT_ARM, false)], - [11, new(RIGHT_LEG, false)], - [12, new(HEAD, false)], - ] - ), - 'C' => RangeTable.new( - '命中部位表(正面)', - '2D6', - [ - [2, new(CENTER_TORSO, true)], - [3..4, new(RIGHT_ARM, false)], - [5, new(RIGHT_LEG, false)], - [6, new(RIGHT_TORSO, false)], - [7, new(CENTER_TORSO, false)], - [8, new(LEFT_TORSO, false)], - [9, new(LEFT_LEG, false)], - [10..11, new(LEFT_ARM, false)], - [12, new(HEAD, false)], - ] - ), - 'R' => RangeTable.new( - '命中部位表(右)', - '2D6', - [ - [2, new(RIGHT_TORSO, true)], - [3, new(RIGHT_LEG, false)], - [4..5, new(RIGHT_ARM, false)], - [6, new(RIGHT_LEG, false)], - [7, new(RIGHT_TORSO, false)], - [8, new(CENTER_TORSO, false)], - [9, new(LEFT_TORSO, false)], - [10, new(LEFT_ARM, false)], - [11, new(LEFT_LEG, false)], - [12, new(HEAD, false)], - ] - ), - - 'LU' => RangeTable.new( - '命中部位表(左上半身)', - '1D6', - [ - [1..2, new(LEFT_TORSO, false)], - [3, new(CENTER_TORSO, false)], - [4..5, new(LEFT_ARM, false)], - [6, new(HEAD, false)], - ] - ), - # TODO: 普通のTableで書く - 'CU' => RangeTable.new( - '命中部位表(正面上半身)', - '1D6', - [ - [1, new(LEFT_ARM, false)], - [2, new(LEFT_TORSO, false)], - [3, new(CENTER_TORSO, false)], - [4, new(RIGHT_TORSO, false)], - [5, new(RIGHT_ARM, false)], - [6, new(HEAD, false)], - ] - ), - 'RU' => RangeTable.new( - '命中部位表(右上半身)', - '1D6', - [ - [1..2, new(RIGHT_TORSO, false)], - [3, new(CENTER_TORSO, false)], - [4..5, new(RIGHT_ARM, false)], - [6, new(HEAD, false)], - ] - ), - - 'LL' => RangeTable.new( - '命中部位表(左下半身)', - '1D6', - [ - [1..6, new(LEFT_LEG, false)], - ] - ), - 'CL' => RangeTable.new( - '命中部位表(右下半身)', - '1D6', - [ - [1..3, new(RIGHT_LEG, false)], - [4..6, new(LEFT_LEG, false)], - ] - ), - 'RL' => RangeTable.new( - '命中部位表(右下半身)', - '1D6', - [ - [1..6, new(RIGHT_LEG, false)], - ] - ), - }.freeze - end - - # ミサイルダメージ表 - XRM_DAMAGE_TABLES = { - 'SRM2' => RangeTable.new( - 'SRM2ダメージ表', - '2D6', - [ - [2..7, 1], - [8..12, 2], - ] - ), - 'SRM4' => RangeTable.new( - 'SRM4ダメージ表', - '2D6', - [ - [2, 1], - [3..6, 2], - [7..10, 3], - [11..12, 4], - ] - ), - 'SRM6' => RangeTable.new( - 'SRM6ダメージ表', - '2D6', - [ - [2..3, 2], - [4..5, 3], - [6..8, 4], - [9..10, 5], - [11..12, 6], - ] - ), - 'LRM5' => RangeTable.new( - 'LRM5ダメージ表', - '2D6', - [ - [2, 1], - [3..4, 2], - [5..8, 3], - [9..10, 4], - [11..12, 5], - ] - ), - 'LRM10' => RangeTable.new( - 'LRM10ダメージ表', - '2D6', - [ - [2..3, 3], - [4, 4], - [5..8, 6], - [9..10, 8], - [11..12, 10], - ] - ), - 'LRM15' => RangeTable.new( - 'LRM15ダメージ表', - '2D6', - [ - [2..3, 5], - [4, 6], - [5..8, 9], - [9..10, 12], - [11..12, 15], - ] - ), - 'LRM20' => RangeTable.new( - 'LRM20ダメージ表', - '2D6', - [ - [2..3, 6], - [4, 9], - [5..8, 12], - [9..10, 16], - [11..12, 20], - ] - ) - }.freeze -end diff --git a/src/src_bcdice/diceBot/BeastBindTrinity.rb b/src/src_bcdice/diceBot/BeastBindTrinity.rb deleted file mode 100644 index fb385128b..000000000 --- a/src/src_bcdice/diceBot/BeastBindTrinity.rb +++ /dev/null @@ -1,345 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/ArithmeticEvaluator' -require 'utils/format' -require 'utils/normalize' -require 'utils/table' -require 'utils/d66_grid_table' - -# ビーストバインド トリニティのダイスボット -# -# = 前ver(1.43.07)からの変更・修正 -# * nBBで判定を行う際、「ダイスを1個しか振らない場合」の達成値計算が正しくなかった誤りを修正。 -# * @x(クリティカル値指定)、を加減式で入力できるように仕様変更。クリティカル値は、加減式での入力なら%w(人間性からのクリティカル値計算)と併用可能に。 -# * #y(ファンブル値指定)を加減式で入力できるように仕様変更。また、「ファンブルしても達成値が0にならない」モード#Ayを追加。 -# * &v(出目v未満のダイスを出目vとして扱う)のモードを追加。2018年12月現在、ゲーマーズ・フィールド誌先行収録データでのみ使用するモードです。 -# * 「暴露表」および「正体判明チャート」をダイスボットに組み込み。 -# * どどんとふ以外のボーンズ&カーズを用いたオンラインセッション用ツールにあわせ、ヘルプメッセージ部分からイニシアティブ表についての言及を削除。 -class BeastBindTrinity < DiceBot - # ゲームシステムの識別子 - ID = 'BeastBindTrinity' - - # ゲームシステム名 - NAME = 'ビーストバインド トリニティ' - - # ゲームシステム名の読みがな - SORT_KEY = 'ひいすとはいんととりにてい' - - # ダイスボットの使い方 - HELP_MESSAGE = <=]+)(\d+))?$/.match(@command) - unless m - @parse_error = true - return - end - - @dice_num = m[1].to_i - @modify_number = m[2] ? ArithmeticEvaluator.new.eval(m[2]) : 0 - - @critical = parse_critical(m[3], m[4]) - - @keep_value_on_fumble = !m[5].nil? - - @fumble = parse_fumble(m[6]) - - @dice_pool = m[7] ? m[7].split("").map(&:to_i) : [] - @dice_pool.pop(@dice_pool.size - @dice_num) if @dice_pool.size > @dice_num - - @dice_value_lower_limit = m[8].to_i - - @cmp_op = Normalize.comparison_operator(m[9]) - @target_number = m[10] && m[10].to_i - - @parse_error = false - end - - # @param humanity [String, nil] - # @param atmark [String, nil] - # @return [Integer] - def parse_critical(humanity, atmark) - humanity = humanity ? humanity.to_i : 99 - atmark_value = atmark ? ArithmeticEvaluator.new.eval(atmark) : 0 - - critical = - if /^[+-]/.match(atmark) - [critical_from_humanity(humanity) + atmark_value, 12].min - elsif atmark - atmark_value - else - critical_from_humanity(humanity) - end - - return critical - end - - def critical_from_humanity(humanity) - if humanity <= 0 - 9 - elsif humanity <= 20 - 10 - elsif humanity <= 40 - 11 - else - 12 - end - end - - # @param sharp [String, nil] - # @return [Integer] - def parse_fumble(sharp) - sharp_value = sharp ? ArithmeticEvaluator.new.eval(sharp) : 0 - - if /^[+-]/.match(sharp) - 2 + sharp_value - elsif sharp - sharp_value - else - 2 - end - end - - def roll_with_dice_pool - dice_times = @dice_num - @dice_pool.size - dice_list = Array.new(dice_times) { @bot.roll(1, 6)[0] } + @dice_pool - - return dice_list.sort - end - - def command_expr - modifier = Format.modifier(@modify_number) - "(#{@dice_num}BB#{modifier}@#{@critical}\##{@fumble}#{@cmp_op}#{@target_number})" - end - - def interim_expr(dice_list) - expr = "#{@dice_total}[#{dice_list.join(',')}]#{Format.modifier(@modify_number)}" - expr += "+20" if critical? - - return expr - end - - def dice_status - if fumble? - "ファンブル" - elsif critical? - "クリティカル" - end - end - - def fumble? - @dice_total <= @fumble - end - - def critical? - @dice_total >= @critical - end - - def calc_total - total = @dice_total + @modify_number - if fumble? - total = 0 unless @keep_value_on_fumble - elsif critical? - total += 20 - end - - if total < 0 - total = 0 - end - - return total - end - - def result_compare(total) - if @cmp_op - total.send(@cmp_op, @target_number) ? "成功" : "失敗" - end - end - end - - def rollDiceCommand(command) - if (ret = roll_tables(command, TABLES)) - return ret - end - - bb = BBCommand.new(command) - return bb.roll(self) - end - - TABLES = { - 'EMO' => D66GridTable.new( - '邂逅表', - [ - ['家族', '家族', '信頼', '信頼', '忘却', '忘却'], - ['慈愛', '慈愛', '憧憬', '憧憬', '感銘', '感銘'], - ['同志', '同志', '幼子', '幼子', '興味', '興味'], - ['ビジネス', 'ビジネス', '師事', '師事', '好敵手', '好敵手'], - ['友情', '友情', '忠誠', '忠誠', '恐怖', '恐怖'], - ['執着', '執着', '軽蔑', '軽蔑', '憎悪', '憎悪'], - ] - ), - 'EXPO_A' => Table.new( - '暴露表', - '1D6', - [ - '噂になるがすぐ忘れられる', - '都市伝説として処理される', - 'ワイドショーをにぎわす', - 'シナリオ中[迫害状態]になる', - '絆の対象ひとりに正体が知られる', - '魔獣化暴露表へ' - ] - ), - 'EXPO_B' => Table.new( - '魔獣化暴露表', - '1D6', - [ - 'トンデモ業界の伝説になる', - 'シナリオ中[迫害状態]になる', - 'シナリオ中[迫害状態]になる', - '絆の対象ひとりに正体が知られる', - '絆の対象ひとりに正体が知られる', - '自衛隊退魔部隊×2D6体の襲撃' - ] - ), - 'EXPO_I' => Table.new( - 'アイドル専用暴露表', - '1D6', - [ - '愉快な伝説として人気になる', - 'ワイドショーをにぎわす', - '炎上。シナリオ中[迫害状態]', - '所属事務所に2D6時間説教される', - '絆の対象ひとりに正体が知られる', - 'アイドル専用魔獣化暴露表へ' - ] - ), - 'EXPO_J' => Table.new( - 'アイドル専用魔獣化暴露表', - '1D6', - [ - 'シナリオ中[迫害状態]になる', - 'シナリオ中[迫害状態]になる', - '絆の対象ひとりに正体が知られる', - '事務所から契約を解除される', - '絆の対象ひとりに正体が知られる', - '1D6本のレギュラー番組を失う' - ] - ), - 'FACE_A' => Table.new( - '正体判明チャートA', - '1D6', - [ - 'あなたを受け入れてくれる', - 'あなたを受け入れてくれる', - '絆が(拒絶)に書き換わる', - '絆がエゴに書き換わる', - '気絶しその事実を忘れる', - '精神崩壊する' - ] - ), - 'FACE_B' => Table.new( - '正体判明チャートB', - '1D6', - [ - 'あなたを受け入れてくれる', - '狂乱し攻撃してくる', - '退場。その場から逃亡。暴露表へ', - '絆がエゴに書き換わる', - '精神崩壊する', - '精神崩壊する' - ] - ), - 'FACE_C' => Table.new( - '正体判明チャートC', - '1D6', - [ - 'あなたを受け入れてくれる', - '退場。その場から逃亡。暴露表へ', - '退場。その場から逃亡。暴露表へ', - '絆がエゴに書き換わる', - '精神崩壊する', - '精神崩壊する' - ] - ), - }.freeze - - setPrefixes(['\d+BB.*', '\d+R6.*'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/BeginningIdol.rb b/src/src_bcdice/diceBot/BeginningIdol.rb deleted file mode 100644 index b0df0c3b8..000000000 --- a/src/src_bcdice/diceBot/BeginningIdol.rb +++ /dev/null @@ -1,2522 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class BeginningIdol < DiceBot - # ゲームシステムの識別子 - ID = 'BeginningIdol' - - # ゲームシステム名 - NAME = 'ビギニングアイドル' - - # ゲームシステム名の読みがな - SORT_KEY = 'ひきにんくあいとる' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - " > ファンブル(変調がランダムに1つ発生し、PCは【思い出】を1つ獲得する)" - elsif dice_total >= 12 - " > スペシャル!(PCは【思い出】を1つ獲得する)" - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - alias check_2D6 check_nD6 - - def rollDiceCommand(command) - case command.upcase - when /^([1-7]*)PD(\d+)([\+\-]\d+)?$/ - counts = Regexp.last_match(2).to_i - return nil if counts <= 0 - - residual = Regexp.last_match(1) - adjust = Regexp.last_match(3).to_i - - return rollPerformance(counts, residual, adjust) - - when 'HW' - title = '向かい風シーン表' - table = [ - "誰もいない屋内。静寂が世界を包んでいる。嵐の前の静けさだ。", - "話し声が絶えない夕暮れの帰り道。みんなが明るい声を上げる中、自分の周りだけがぽっかり穴が空いたかのように静かだ。", - "曇り空になってきた。早く屋内に行かないと、雨でぬれてしまうかもしれない。", - "ゲリラ豪雨だ。傘も持ってきていないので、激しい雨に打たれるしかない。ついてないな。", - "夜空を雲が覆いつくしてしまっている。空を見上げても、星の輝きは見えない。", - "屋内の電気がトラブルで点灯しないようだ。暗い世界は、気分まで滅入ってしまう。", - ] - return textFrom1D6Table(title, table) - - when 'BWT' - title = '大手芸能プロダクション仕事表' - table = [ - [11, "オフ", ''], - [12, "先輩アイドルが司会を務めるバラエティ番組に出演! どんなコーナーを任されるんだろう?", '趣味分野からランダム'], - [13, "先輩アイドルと街歩き番組で共演。この街には何があるんだろう?", '出身分野からランダム'], - [14, "先輩アイドルが音楽番組に出演。バックダンサーを務めることに。", '《ダンス/趣味9》'], - [15, "先輩アイドルと一緒にグラビア撮影。負けないように目立とう。", '《マイペース/キャラ4》'], - [16, "アイドル紹介番組で、先輩アイドルから紹介される。元気にいこう。", '《元気/キャラ8》'], - [22, "オフ", ''], - [23, "先輩アイドルのラジオ番組にゲスト出演。トークでうまく盛り上げられるかな?", '《キャラ分野の空白/キャラ7》'], - [24, "同期アイドルたちと一緒に、大掛かりなアスレチックセットに挑戦!", '《運動神経/才能8》'], - [25, "特別な衣装で行う演劇の仕事がやって来た。どんな衣装なんだろう?", '属性分野からランダム'], - [26, "プロダクションの超大御所が出演する番組に呼ばれる。", '《胆力/才能5》'], - [33, "オフ", ''], - [34, "シーンプレイヤーのキャラクターを活かしたミニドラマが制作される。", 'シーンプレイヤーの修得しているキャラ分野の特技'], - [35, "海外ロケを行うプロダクション制作の旅番組に出演。今日はどこまで行くんだろうか?", '《海外/出身12》'], - [36, "プロダクション内の劇場で、シーンプレイヤーの「好きなもの」を使った演劇が始まる。", 'シーンプレイヤーの修得している趣味分野の特技'], - [44, "オフ", ''], - [45, "ファッションブランドと提携したファッションショーに招待される。", '《おしゃれ/趣味5》'], - [46, "アイドル雑誌の出版社から取材がやってきた。うまく対応しよう。", '《物腰丁寧/キャラ10》'], - [55, "オフ", ''], - [56, "シリーズもののドラマにちょっとした役で出演!", '《演技力/才能12》'], - [66, "プロダクション内で総選挙が開始! 今回のテーマは……?", 'ランダム'], - ] - return textFromD66Table(title, table) - - when 'LWT' - title = '弱小芸能プロダクション仕事表' - table = [ - [11, "オフ", ''], - [12, "パートナープレイヤーの「身体的特徴」にびびっと来たTV曲からオファーが来る。", 'パートナープレイヤーが修得している身長分野の特技'], - [13, "スタントマンなしのアクションドラマが製作開始! オーディションを受けることに。", '《運動神経/才能8》'], - [14, "歌番組のオーディションに挑戦! たくさんのライバルの中から、選ばれることを目指す!", '《集中力/キャラ4》'], - [15, "飲み屋に営業へ。アイドルにあまり興味なさそうな客層だけど……。", '《マイペース/キャラ4》'], - [16, "結婚式のパンフレット写真を撮ることに。花嫁さんってどんな気分だろう?", '《スタイル/才能3》'], - [22, "オフ", ''], - [23, "CDデビューをかけて、バラエティ番組で他のアイドルと対決!", 'キャラ分野からランダム'], - [24, "CDショップで、CDを手渡し販売。よろしくお願いします。", '《元気/キャラ8》'], - [25, "ローカル番組に出演。この地方では、何が流行っているんだろう?", '出身分野からランダム'], - [26, "劇の脇役を勝ち取るためにオーディションを受ける。平凡な女の子を演じるらしい。", '《プレーン/属性7》'], - [33, "オフ", ''], - [34, "パートナープレイヤーの「好きなもの」が題材のドラマが製作中。オーディションを受けよう。", 'パートナープレイヤーが修得している属性分野の特技'], - [35, "パートナープレイヤーの「嫌いなもの」を題材にしたドラマにオファーが……。", 'パートナープレイヤーが修得している趣味分野の特技'], - [36, "コーラスに欠員が出たアイドルライブの穴埋めとして選ばれる。主役のキャラに合わせないと。", '属性分野からランダム'], - [44, "オフ", ''], - [45, "PCたちの事務所にレポートのカメラが入る。小さいけどがんばってます!", 'ランダム'], - [46, "オフ", ''], - [55, "オフ", ''], - [56, "オフ", ''], - [66, "オフ", ''], - ] - return textFromD66Table(title, table) - - when 'TWT' - title = 'ライブシアター仕事表' - table = [ - [11, "オフ", ''], - [12, "シアター内でドラマを収録。テーマは、パートナープレイヤーの「好きなもの」だ。", 'パートナープレイヤーが修得している属性分野の特技'], - [13, "シアター内で売り出すCDを制作。テーマは、シーンプレイヤーの「好きなもの」だ。", 'シーンプレイヤーが修得している趣味分野の特技'], - [14, "シアターの売店に駆り出される。直接お客さんと触れ合うチャンス!", '《笑顔/才能7》'], - [15, "シアター内でグッズを販売。今の売れ線は何かな?", 'キャラ分野からランダム'], - [16, "シアター内で握手会を開催! 来てくれたみんなに感謝を。", '《気配り/才能9》'], - [22, "オフ", ''], - [23, "今回の劇、シーンプレイヤーの【背景】を元にしたノンフィクションドラマ!", '趣味分野からランダム'], - [24, "シアターを使って、バラエティの企画が開始。みんなを笑わせよう。", '《ばか/キャラ12》'], - [25, "シアターに流れるミニラジオの収録。メンバーに無茶ぶりをするコーナーが見せ場。", 'キャラ分野からランダム'], - [26, "シアターにファッションデザイナーを招いてファッションショー。うまく魅せていこう。", '属性分野からランダム'], - [33, "オフ", ''], - [34, "シアター企画、1D6時間耐久ダンスが始まる……!", '《体力/才能6》'], - [35, "シアター企画、パートナープレイヤーは「嫌いなもの」に何回挑戦できるか!", 'パートナープレイヤーが修得している趣味分野の特技'], - [36, "シアター企画、シーンプレイヤー対「嫌いなもの」!", 'シーンプレイヤーが修得しているキャラ分野の特技'], - [44, "オフ", ''], - [45, "シアター企画、非常に高いゴールを使ったバスケット! ……本当にできるの?", '《190~/身長12》'], - [46, "シアター企画、動物と触れ合うアイドルの姿を中継!", '《ペット/趣味3》'], - [55, "オフ", ''], - [56, "シアターの外で行う仕事をこなす。", 'ランダム'], - [66, "オフ", ''], - ] - return textFromD66Table(title, table) - - when 'CWT' - title = 'アイドル部仕事表' - table = [ - [11, "オフ", ''], - [12, "先生に頼まれて、入部希望者たちの校内案内を務めることになった。", '《物腰丁寧/キャラ10》'], - [13, "校内イベントの司会進行をすることになった。うまく盛り上げられるかな?", '《ポップ/属性9》'], - [14, "校内放送に出演。全校生徒の前でも、緊張しないようにしないと。", '《胆力/才能5》'], - [15, "部活の大会に応援をしに行くことに。長い試合は、体力勝負だ。", '《体力/才能6》'], - [16, "アイドル部を取材する記者がやって来た。うまく自分たちの言葉を語れるかな?", '《気配り/才能9》'], - [22, "オフ", ''], - [23, "近くの幼稚園で歌を披露することになった。小さい子と目線を合わせないと……。", '《~125/身長2》'], - [24, "メイド喫茶をすることになった。パートナープレイヤーの「好きなもの」が主なメニューだ。", 'パートナープレイヤーが修得している趣味分野の特技'], - [25, "校内のイベントを取材することになった。そこにはパートナープレイヤーの「嫌いなもの」が……。", 'パートナープレイヤーが修得しているキャラ分野の特技'], - [26, "パートナープレイヤーの「ファッション特徴」を活かした、校内ファッションショー。", 'パートナープレイヤーが修得している属性分野の特技'], - [33, "オフ", ''], - [34, "地元の商店街からお店の手伝いを依頼される。町を盛り上げていこう。", '《ショッピング/趣味8》'], - [35, "地元のイベントに出演。郷土愛が試される!", 'プロデューサーが出身分野の特技から選ぶ'], - [36, "パートナープレイヤーの「身体的特徴」に惹かれた企業からオファーが来た!", '《セクシー/属性4》'], - [44, "オフ", ''], - [45, "オフ", ''], - [46, "オフ", ''], - [55, "オフ", ''], - [56, "オフ", ''], - [66, "オフ", ''], - ] - return textFromD66Table(title, table) - - when /^LO(\d{0,2})$/ - value = Regexp.last_match(1) - title = '地方アイドル仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "握手会をすることになった。遠方から自分たち目当てにやって来るお客さんも多数見える。チャンスが5以下ならオフ。", '《アイドル/趣味12》'], - [14, "ミニコンサートが全国放送で小さく紹介される。ちょっとだけ、外見が注目されたみたいだ。チャンスが4以下ならオフ。", '《スタイル/才能3》'], - [15, "地元ラジオ局で自分たちの番組が始まる。チャンスが3以下ならオフ。", '《キャラ分野の空白/趣味7》'], - [16, "地元のテレビ局にゲスト出演。うまく自分たちを紹介できるだろうか? チャンスが3以下ならオフ。", '好きな出身分野の特技'], - [22, "オフ", ''], - [23, "街頭でティッシュ配りの手伝いをする。笑顔を忘れずに、がんばろう。", '《笑顔/才能7》'], - [24, "地元のお手伝いの一環として、害虫退治に駆り出された。なぜ、こんなことに。", '《胆力/才能5》'], - [25, "畑仕事のお手伝いをすることになった。とりあえず、体力が要求される。", '《体力/才能6》'], - [26, "ショッピングモールのお手伝いをすることになった。うまくお手伝いができれば、繁盛するかも。", '《ショッピング/趣味8》'], - [33, "オフ", ''], - [34, "インターネットラジオに出演。声とトークで。地域のことを伝えていこう。", '《異国文化/才能2》'], - [35, "地元のテレビ局の取材が入る。テーマは、地方でがんばっている人たちだ。", '《元気/キャラ8》'], - [36, "デパートで風船を配るお手伝い。子どもたち相手のお仕事は、ちょっと大変です。", '《気配り/才能9》'], - [44, "オフ", ''], - [45, "着ぐるみを着て、市民と交流。暑くてつらい仕事だけど、大切な交流の時間です。", '《バーニング/属性10》'], - [46, "観光地の物販コーナーで地元の特産品を売るお手伝い。地方アイドル的に、大切なお仕事。", '好きな出身分野の特技'], - [55, "オフ", ''], - [56, "動画サイトのチャンネルで、自分たちの宣伝を行なうことに。世界中に発信!", '《スター/属性12》'], - [66, "オフ", ''], - ] - return textFromD66Table(title, table, value) - - when 'SU' - title = '情熱の夏仕事表' - table = [ - [11, "オフ", ''], - [12, "飲料水のコマーシャル。美味しそうに飲もう。", '《演技力/才能12》'], - [13, "夏のパレードのコマーシャル。今回のテーマは、パートナープレイヤーの「好きなもの」。", 'パートナープレイヤーが修得している趣味分野の特技'], - [14, "海水浴場のコマーシャル。見ている人に、元気をおすそ分けできればいいな。", '《ポップ/属性9》'], - [15, "避暑地のコマーシャル。涼しいところで、ゆったりと過ごしているところをお届け。", '《マイペース/キャラ4》'], - [16, "虫避け商品のコマーシャル。虫に立ち向かう男らしさを求められる。", '《硬派/キャラ9》'], - [22, "オフ", ''], - [23, "水族館で元気なイルカたちとショーをする。", '《元気/キャラ8》'], - [24, "少年野球の始球式を任される。球児たちに恥ずかしくないピッチングを魅せないと。", '《スポーツ/趣味4》'], - [25, "夏のファッションを雑誌で発表することになった。この時期のコーデはこれ!", '《おしゃれ/趣味5》'], - [26, "番組で夏野菜を美味しく食べる必要に迫られる。ゴーヤをアイドルらしく食べよう。", '《沖縄/出身2》'], - [33, "オフ", ''], - [34, "ビーチバレーで敵のアイドルと対決だ! 夏の暑さに負けるな!", '《バーニング/属性10》'], - [35, "ビーチで他のアイドルとナンパ対決をすることになった。どちらがうまくこなせるかな?", '《軟派/キャラ5》'], - [36, "夏のグルメ特集! 夏バテ防止のためにも、たくさん食べるところを魅せなければ。", '《料理/趣味6》'], - [44, "オフ", ''], - [45, "夏休みの子供たちと触れ合う番組に呼ばれる。子供たちの相手も大変だ。", '《気配り/才能9》'], - [46, "夏の旅行番組。夏ならではの、地元の強みを伝えることに。", 'シーンプレイヤーが修得している出身分野の特技'], - [55, "オフ", ''], - [56, "夏だからアツアツのお風呂に叩きこまれる。リアクションを撮りたいようだ。", '《ばか/キャラ12》'], - [66, "オフ", ''], - ] - return textFromD66Table(title, table) - - when 'WI' - title = 'ぬくもりの冬仕事表' - table = [ - [11, "オフ", ''], - [12, "クリスマスがテーマのコマーシャルソングを歌う。恋人たちに祝福を!", '《パッション/属性8》'], - [13, "スキー場のコマーシャルムービーを撮ることに。うまく滑れるといいな。", '《スポーツ/趣味4》'], - [14, "苦い失恋をテーマにしたコマーシャルムービーを撮ることになった。クールに決めよう。", '《クール/属性11》'], - [15, "スケートリンクのコマーシャルムービーに出演。氷上で華麗にダンスを決めよう。", '《ダンス/趣味9》'], - [16, "アイスのコマーシャルムービーに出演。寒いのを耐えろ!", '《胆力/才能5》'], - [22, "オフ", ''], - [23, "年末年始に流れる鉄道のコマーシャルムービーに起用される。清潔感のある演技が必要だ。", '《プレーン/属性7》'], - [24, "温泉地のコマーシャル。温泉に必要なのは、やっぱりセクシーさかな?", '《セクシー/属性4》'], - [25, "冬ファッションを雑誌で紹介することになった。冬コーデはこれで決まり!", '《おしゃれ/趣味5》'], - [26, "雪かきの大変さを伝えるために、東北で雪かきを手伝う。これは重労働だ。", '《東北地方/出身10》'], - [33, "オフ", ''], - [34, "年末のバラエティ番組で、関西の芸人と一緒にコントをやることになった。ノリを合わせよう。", '《近畿地方/出身6》'], - [35, "年末のフェスで、有名アイドルたちと共演! スターに負けない迫力を出そう。", '《スター/属性12》'], - [36, "冬の北海グルメを伝えるために、北海道に飛ぶ。果たして、寒さに耐えられるのか。", '《北海道/出身11》'], - [44, "オフ", ''], - [45, "冬のグルメ特集。鍋の作り方を教えます。", '《料理/趣味6》'], - [46, "バレンタインに向けて、女の子たちにアドバイス。", '《フェミニン/属性5》'], - [55, "オフ", ''], - [56, "冬だからアツアツのお風呂に叩きこまれる。暖かいというか熱い!", '《ばか/キャラ12》'], - [66, "オフ", ''], - ] - return textFromD66Table(title, table) - - when 'NA' - title = '大自然仕事表' - table = [ - [11, "オフ", ''], - [12, "渓流で釣り対決! たくさん釣ったほうが勝ち!", '《集中力/才能4》'], - [13, "海岸で釣りをすることに。釣った魚がおいしいほうが勝ち。", '《胆力/才能5》'], - [14, "虫取りに挑戦。元気に戯れる図を撮りたいとのこと。", '《元気/キャラ8》'], - [15, "キャンプを張ろう。みんな快適に寝泊りができるように、心配りが大事。", '《気配り/才能9》'], - [16, "海で泳ぎの対決。自分のペースを守って、戦おう。", '《マイペース/キャラ4》'], - [22, "オフ", ''], - [23, "森でナンパ対決! ……動物にモテた方が勝ち!", '《ペット/趣味3》'], - [24, "森で鬼ごっこをすることになった。相手の動きを読めば勝てる!", 'パートナープレイヤーが修得している身長分野の特技'], - [25, "森の奥で、動物との戦いが始まった。や、やるしかない。", '《運動神経/才能8》'], - [26, "オフ", ''], - [33, "オフ", ''], - [34, "料理ができる男をここでアピール! 飯盒炊爨(はんごうすいさん)に挑戦!", '《料理/趣味6》'], - [35, "山登り対決。早く登るよりも、怪我をしないように気をつけたい。", '《体力/才能6》'], - [36, "薪拾い。地味な絵面になってしまうので、退屈をさせないように魅せよう。", '《キャラ分野の空白/キャラ7》'], - [44, "オフ", ''], - [45, "視聴者が喜びそうなここだけの話をパートナープレイヤーにする。", 'パートナープレイヤーが修得しているキャラ分野の特技'], - [46, "些細なことでパートナープレイヤーと喧嘩になる。どっちが強いか勝負だ!", 'パートナープレイヤーが修得している才能分野の特技'], - [55, "オフ", ''], - [56, "ドラム缶風呂を用意することに。……熱いんだけど!", '《バーニング/属性10》'], - [66, "オフ", ''], - ] - return textFromD66Table(title, table) - - when 'GA' - title = '聖デトワール女学園仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "オフ", ''], - [14, "オフ", ''], - [15, "オフ", ''], - [16, "オフ", ''], - [22, "学園が主催しているアイドル触れ合いイベントに出演。美しく振舞おう。", '《スタイル/才能3》'], - [23, "学園のアイドルたちが出ているラジオに出演。先輩たちに負けないように、がんばろう。", '《元気/キャラ8》'], - [24, "学園と提携しているブランドのファッションショーに登場。", '《おしゃれ/趣味5》'], - [25, "学園を紹介するDVDに出演。うまく魅力を紹介できるかな?", '《気配り/才能9》'], - [26, "学内オーディションに出場。勝ち抜けば、歌番組に出場できる!", '《胆力/才能5》'], - [33, "学園が制作しているアイドルドラマに吸血鬼役で出演。恐ろし気な演技、できるかな?", '《オカルト/趣味2》'], - [34, "学園が制作しているドラマに出演。演技の中で、どうやって個性を出していこうか。", 'キャラ分野からランダム'], - [35, "学園主催のミニライブに出演。たくさんの出演者の中から、どうやって目立とう。", 'キャラ分野からランダム'], - [36, "学園の先輩たちと共演するライブイベントに出演。", '《胆力/才能5》'], - [44, "学園の紹介で、おいしい芋の紹介番組に出演。北海道に出発だ!", '《北海道/出身11》'], - [45, "学内オーディションで、ポップなCMのイメージガールを決定。戦い抜こう。", '《ポップ/属性9》'], - [46, "学内のミュージカルに出演することになった。自分たちの実力を舞台の上で発揮しよう。", '《演技力/才能12》'], - [55, "市内の店舗を手伝うドキュメンタリー番組を撮ることに。お店を手伝おう。", '《物腰丁寧/キャラ10》'], - [56, "市内のスタジオで収録されている朝の情報番組に出演。朝から元気に行こう。", '《元気/キャラ8》'], - [66, "裏山を使った簡単なPV撮影! 山での撮影は体力が要求される。", '《体力/才能6》'], - ] - return textFromD66Table(title, table) - - when 'BA' - title = 'アカデミー仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "オフ", ''], - [14, "オフ", ''], - [15, "オフ", ''], - [16, "オフ", ''], - [22, "アカデミーの中でも、特に優秀な成績を収めた者を表彰する式が開催される。", '《スター/属性12》'], - [23, "アカデミー主催の音楽祭に出演。楽器を演奏して、その姿で魅せよう。", '《音楽/趣味11》'], - [24, "アカデミーが製作しているドラマに出演。脇役だけど、しっかりと存在感を出していこう。", '《演技力/才能12》'], - [25, "番組の企画で、アカデミー生のアクションを見せることになった。", '《運動神経/才能9》'], - [26, "番組の1コーナーで、アカデミー生が様々なスポーツに挑戦する必要があるらしい。がんばろう。", '《スポーツ/趣味4》'], - [33, "先輩と一緒にバラエティ番組に出演。面白いリアクションを期待される。", '《ばか/キャラ10》'], - [34, "先輩のライブでバックコーラスに参加。美しい声を添えよう。", '《音楽/趣味11》'], - [35, "先輩のライブでバックダンサーとして出演。ダイナミックな演出に負けないようにしよう。", '《ダンス/趣味9》'], - [36, "先輩が主演を務めているアニメ映画に脇役の声優として出演。光る演技を見せよう。", '《演技力/才能12》'], - [44, "同級生と一緒に、漫画作品をモデルにしたミュージカルに出演。熱い気合を求められる。", '《バーニング/属性10》'], - [45, "同級生と一緒にキャラ付けの強いビジュアル系バンドを組んで、試験のステージで発表。", 'キャラ分野からランダム'], - [46, "同級生とファッションを競い合う、セルフプロデュース試験が始まる。", '《おしゃれ/趣味5》'], - [55, "一般教養の試験が始まる。恐ろしいことに、その様子を生中継するらしい。", '《学力/才能10》'], - [56, "アイドルの歴史を使った、クイズ試験が始まる。", '《アイドル/趣味12》'], - [66, "試験のテーマは耽美。セクシーさを仲間と競い合おう。", '《セクシー/属性4》'], - ] - return textFromD66Table(title, table) - - when 'WT' - title = '仕事表' - table = [ - [11, "オフ", ''], - [12, "握手会が始まる。アイドルとして重要な場面、集中していこう。", '《アイドル/趣味12》'], - [13, "パートナープレイヤーの「嫌いなもの」に取材をすることになった。大丈夫かな……?", 'パートナープレイヤーが修得している趣味分野の特技'], - [14, "シーンプレイヤーの「好きなもの」に関する番組の仕事だ! テンション上がるー!", 'シーンプレイヤーが修得している趣味分野の特技'], - [15, "パートナープレイヤーの「ファッション特徴」を活かす仕事がやって来た。", 'パートナープレイヤーが修得している属性分野の特技'], - [16, "クライアントから、もっとパートナープレイヤーの「個性特技」を推していこうよ、と提案を受ける。", 'パートナープレイヤーの個性特技'], - [22, "オフ", ''], - [23, "学園ドラマを撮影! 二人のキャラ付けはどうなるのかな?", 'キャラ分野からランダム'], - [24, "ドラマのアクションシーンを撮ることに。コンビネーションで切り抜けよう。", '身長分野からランダム'], - [25, "感動系のドラマに出演。どんな能力が必要になるかな?", '才能分野からランダム'], - [26, "趣味の番組に出演。こんな世界があるのか……。", '趣味分野からランダム'], - [33, "オフ", ''], - [34, "アイドルだらけのバラエティ番組に参戦! どのアイドルよりも高い点数を取るといいらしい!", '《ばか/キャラ12》'], - [35, "スポーツ番組の賑やかしとして呼ばれた! スポーツのこと、わかりますか?", '《スポーツ/趣味4》'], - [36, "クイズ番組に二人でゲスト出演。力を合わせて勝ち抜くか、それとも自分らしさを重視するか……。", '《学力/才能10》'], - [44, "オフ", ''], - [45, "料理番組に出演。どんな料理を作ろうかな。", '《料理/趣味8》'], - [46, "CDショップでサイン会を開催。ファンを喜ばせることができるかな?", '《気配り/才能9》'], - [55, "オフ", ''], - [56, "二人にグラビア撮影の仕事が来た。スタイルのよさを魅せるチャンス?", '《スタイル/才能3》'], - [66, "オフ", ''], - ] - return textFromD66Table(title, table) - - when 'VA' - title = 'バラエティ仕事表' - table = [ - [11, "オフ", ''], - [12, "食べたものをリポートする番組に出演。どうすれば味を言葉で表現できるだろうか?", '《料理/趣味6》'], - [13, "スポーツする番組に出演。どれだけ活躍できるかが試される。", '《スポーツ/趣味4》'], - [14, "トーク番組に出演。二人の喋りをうまく魅せなければ。", '《気配り/才能9》'], - [15, "猛獣の檻に入って、ボール遊びをすることに。度胸が肝心!", '《胆力/才能5》'], - [16, "パートナープレイヤーの「好きなもの」を題材にした番組コーナーを任された。", 'パートナープレイヤーの修得している趣味分野の特技'], - [22, "オフ", ''], - [23, "街歩き番組に出演。軽快なトークで、素人の人たちからうまい言葉を引き出そう。", '《軟派/キャラ5》'], - [24, "釣り番組に出ることになったが、大物を釣るまで帰れないという。さて、動きの少ない釣りでどうやって目立つか……。", '《キャラ分野の空白/キャラ7》'], - [25, "パートナープレイヤーの「嫌いなもの」を題材にした番組コーナーで、いじり役を任されることになった。", 'パートナープレイヤーの修得しているキャラ分野の特技'], - [26, "クイズ番組に出演。問題とどう向き合うか、それが大事だ。", '《学力/才能10》'], - [33, "オフ", ''], - [34, "農作業体験番組に出演。クワを持って畑に出かけよう。", '《体力/才能6》'], - [35, "工作体験番組に出演。いい物をスタジオにお届けできるよう、物づくりを真剣に行おう。", '《集中力/才能4》'], - [36, "電子ゲームやアナログゲームを遊ぶ番組に出演。どんな風に盛り上げられるかな?", '《ゲーム/趣味10》'], - [44, "オフ", ''], - [45, "今日は漫才をするようだ。笑わせるには、何が必要だろうか。", '《ばか/キャラ12》'], - [46, "シチュエーションコントに出演。大げさな演技が求められる。", '《演技力/才能12》'], - [55, "オフ", ''], - [56, "趣味的な番組に出ることになった。今日のテーマは何かな。", '《趣味分野の空白/趣味7》'], - [66, "オフ", ''], - ] - return textFromD66Table(title, table) - - when 'MU' - title = '音楽関係仕事表' - table = [ - [11, "オフ", ''], - [12, "シーンプレイヤーとパートナープレイヤーでミニライブをすることになった。うまく声を合わせよう。", 'パートナープレイヤーの修得している属性分野の特技'], - [13, "歌番組で取り上げられる。どんな気持ちで歌ったのか、うまく表現して伝えよう。", '《パッション/属性8》'], - [14, "パートナープレイヤーとハーモニーを重ねる歌がやってきた。二人の特徴をうまく声に乗せよう。", 'パートナープレイヤーの修得している才能分野の特技'], - [15, "CDの手渡し販売が開始。心を込めて、笑顔で手渡しだ。", '《笑顔/才能7》'], - [16, "レコーディングに音楽業界の大物が立ち会う。緊張せず、自分の実力を発揮しよう。", '《胆力/才能5》'], - [22, "オフ", ''], - [23, "パートナープレイヤーと話し合って歌詞を作ることになった。お互いのことをよく理解しよう。", 'パートナープレイヤーの修得しているキャラ分野の特技'], - [24, "活動範囲を広げるために、色々な楽器に挑戦!", '《音楽/趣味11》'], - [25, "高級そうなバーで歌うことに。高級感のあるファッションを身につけることを条件に歌うことを許される。", '《セレブ/才能11》'], - [26, "中学生がターゲットのCDを販売することになった。心の中の中学生を解放するときが来た!", '《中二病/キャラ2》'], - [33, "オフ", ''], - [34, "子供向けの歌を作ることになった。視線を子供に近づけないと。", '《~125/身長2》'], - [35, "結婚式の歌を任される。祝福の気持ちを込めて歌おう。", '《気配り/才能9》'], - [36, "レースを盛り上げるアップテンポな曲を作ることに。", '《元気/キャラ8》'], - [44, "オフ", ''], - [45, "パートナープレイヤーの地元を象徴するような歌を作ることになった。地元の話を聞き出そう。", 'パートナープレイヤーの修得している出身分野の特技'], - [46, "ホラームービーの主題歌を担当することになった。怖さを声で表現できるだろうか?", '《オカルト/趣味2》'], - [55, "オフ", ''], - [56, "作曲家の先生と打ち合わせ。自分のイメージをうまく伝えられるかな?", '《物腰丁寧/キャラ10》'], - [66, "オフ", ''], - ] - return textFromD66Table(title, table) - - when 'DR' - title = 'ドラマ関係仕事表' - table = [ - [11, "オフ", ''], - [12, "エキストラで出演。できるだけ目立たないように……。", '《プレーン/属性7》'], - [13, "刑事ドラマに刑事役で出演。クールに決めよう。", '《クール/属性11》'], - [14, "刑事ドラマに犯人役で出演。悪いことをはぐらかす演技が必要だ。", '《ミステリアス/キャラ3》'], - [15, "医療ドラマに医者役で出演。臓器や血にひるまずがんばろう。", '《胆力/才能5》'], - [16, "再現アニメの吹き替えに挑戦。できるだけ丁寧に。", '《物腰丁寧/キャラ10》'], - [22, "オフ", ''], - [23, "悪役に挑戦。暗い気持ちが必要だ。", '《ダーク/属性3》'], - [24, "学園ドラマに悩める生徒役で出演。青春らしさをどこまで見せようか。", '《中二病/キャラ2》'], - [25, "時代劇に出演。硬派に決めるシーンがやって来た。", '《硬派/キャラ9》'], - [26, "特撮にヒーロー役で出演。熱い演技を見せるとき!", '《バーニング/属性10》'], - [33, "オフ", ''], - [34, "共演者に超有名人が! 緊張せずにがんばろう。", '《マイペース/キャラ4》'], - [35, "気難しい監督にいろいろ注意される。どう対応したものか……。", '《スター/属性12》'], - [36, "パートナープレイヤーの【背景】を再現したミニドラマを撮るようだ。彼の過去をどう表現したものか。", 'パートナープレイヤーの修得している属性分野の特技'], - [44, "オフ", ''], - [45, "アクションドラマに出演。アクションを決められるかどうかがカギだ。", '《運動神経/才能8》'], - [46, "恋愛ドラマに出演。共演者をどきどきさせる演技が必要とのこと。", '《セクシー/属性4》'], - [55, "オフ", ''], - [56, "感動系ドラマに出演。泣くシーンは、ここ一番の見せ場だ!", '《演技力/才能12》'], - [66, "オフ", ''], - ] - return textFromD66Table(title, table) - - when 'VI' - title = 'ビジュアル関係仕事表' - table = [ - [11, "オフ", ''], - [12, "ビーチでグラビア撮影の仕事が入る。肉体美を見せるとき。", '《セクシー/属性4》'], - [13, "ファッション誌の取材がやって来て、自分らしいファッションを見せてほしいと頼まれる。", '《キャラ分野の空白/キャラ7》'], - [14, "地方ごとのファッションを取り入れるファッションショーが開幕。出演することに。", '出身分野からランダム'], - [15, "ファッションショーにモデルとして登場。完璧なスタイルを見せつけろ。", '《スタイル/才能3》'], - [16, "雑誌でシーンプレイヤーおすすめコーデを紹介するようだ。どんな組み合わせを街に発信しようか。", '《おしゃれ/趣味5》'], - [22, "オフ", ''], - [23, "パートナープレイヤーの「身体的特徴」がちょっとした流行になった。乗るしかない、このビッグウェーブに。", 'パートナープレイヤーが修得している身長分野の特技'], - [24, "深夜番組の1コーナーに、シーンプレイヤーの「身体的特徴」の特集が組まれるようだ。それに乗っかろう。", 'シーンプレイヤーが修得している身長分野の特技'], - [25, "ニュース番組の1コーナーで、パートナープレイヤーの「ファッション特徴」が紹介される。うまくアシストしよう。", 'パートナープレイヤーが修得している身長分野の特技'], - [26, "シーンプレイヤーの「ファッション特徴」を売っている企業から、CMに出てくれないかと頼まれる。", 'シーンプレイヤーが修得している属性分野の特技'], - [33, "オフ", ''], - [34, "女性のファッションについて語る番組に出演。", '《フェミニン/属性5》'], - [35, "高い身長向けの衣装が届いた。これを使ってうまく魅せられるのか?", '《190~/身長12》'], - [36, "テレビ番組でアニメキャラのコスプレをすることに。自分らしく決めポーズ。", '《趣味分野の空白/趣味7》'], - [44, "オフ", ''], - [45, "低身長向けコーデを作ったデザイナーから連絡が入る。それを見事に着こなしてほしいとのこと。", '《146/身長6》'], - [46, "子供と共演するCMを撮ることになった。子供に愛されるファッションを考えよう。", '《~125/身長2》'], - [55, "オフ", ''], - [56, "パートナープレイヤーを宣材用の撮影向けにコーディネートすることになった。さて、どうしてやろうか。", 'パートナープレイヤーが修得している身長分野の特技'], - [66, "オフ", ''], - ] - return textFromD66Table(title, table) - - when 'SP' - title = 'スポーツ仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "オフ", ''], - [14, "オフ", ''], - [15, "オフ", ''], - [16, "オフ", ''], - [22, "マラソン大会に参加することになった。とにかく、走ろう。", '《体力/才能6》'], - [23, "サッカー選手たちにインタビュー! サッカーの魅力を聞き出そう。", '《スポーツ/趣味4》'], - [24, "野球の始球式をすることになった。自分らしく、キャラクターを前面に出して投げるのがコツ。", '《キャラ分野の空白/キャラ7》'], - [25, "バスケットボールを体験! その魅力を伝えよう。", '《スポーツ/趣味4》'], - [26, "ラグビーのパワフルさを間近で体験。見ている人たちにも迫力を伝えないと。", '《スポーツ/趣味4》'], - [33, "アメフトのハーフタイムショーの短い時間を任される。集中して魅力を出し切ろう。", '《集中力/才能4》'], - [34, "チアリーディング(男性アイドルは応援団)でスポーツ選手たちの応援をすることに。みんながんばれ!", '《キュート/属性6》'], - [35, "陸上競技を一通り体験! それぞれの種目の見どころを発信しよう。", '《運動神経/才能8》'], - [36, "水泳をする仕事がやってきた。競泳水着をカッコよく着こなそう。", '《クール/属性11》'], - [44, "スポーツドリンクのCMだ。「生き返る」感じを出していこう。", '《パッション/属性8》'], - [45, "運動靴のCM。パートナープレイヤーを力強く追い抜いて、速くなれることをアピール!", '《バーニング/属性10》'], - [46, "ジャージや体操服のCMが入ってきた。うまく着こなして、運動着もおしゃれなことを証明しよう。", '《おしゃれ/趣味5》'], - [55, "近々開催される大会の応援団長を任された。出場する選手たちにエールを送ろう!", '《元気/キャラ8》'], - [56, "テニスの試合をパートナープレイヤーとやることになった。ダブルスでいこう。", 'パートナープレイヤーが修得している属性分野の特技'], - [66, "ゴルフコースを回りながら、プロから手ほどきを受けることに。丁寧な言葉遣いで、大人っぽく振舞おう。", '《物腰丁寧/キャラ10》'], - ] - return textFromD66Table(title, table) - - when 'CHR' - title = 'クリスマス仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "オフ", ''], - [14, "オフ", ''], - [15, "オフ", ''], - [16, "オフ", ''], - [22, "雪の積もる野外コンサートホールでミニライブ。苛酷な環境だけど、耐え抜かないと。", '《体力/才能6》'], - [23, "ラジオの公開録音中に、クリスマスケーキ作りにチャレンジすることになった。うまく作れるかな?", '《料理/趣味6》'], - [24, "アイドルが提案するクリスマスデート用のファッションを雑誌で紹介。勝てるコーデを考えてみよう。", '《おしゃれ/趣味5》'], - [25, "ケーキ屋さんと提携して、クリスマスケーキの売り込みをすることに。", '《ショッピング/趣味8》'], - [26, "地元の中学校のクリスマスイベントに登場。学生のみんなと一緒に盛り上がろう。", '《パッション/属性8》'], - [33, "クリスマスに放映される特別ドラマにパートナープレイヤーの恋人役で出演。恋愛をうまく演じられるかな?", '《演技力/才能12》'], - [34, "トークバラエティのクリスマス特番に呼ばれて収録を始める。本日のテーマは、「恋」について。", '《軟派/キャラ5》'], - [35, "ラジオ番組で、家族と過ごすクリスマスの思い出について語ることになった。", '《異国文化/才能2》'], - [36, "セクシーサンタグランプリというファッション大会に出ることになった。セクシーアイドルたちと対決だ!", '《セクシー/属性4》'], - [44, "遊園地で行われるクリスマスイベントのCMを撮影することになった。楽しそうな笑顔を見せよう。", '《笑顔/才能7》'], - [45, "サンタクロースの格好をして、小学生たちにプレゼントを配ることになった。オファーはかわいさ重視!", '《キュート/属性6》'], - [46, "サンタクロースの格好をして、街でイベントをすることに。異国っぽさをうまく出せるかな?", '《海外/出身12》'], - [55, "クリスマスをテーマにした写真集が発売。そのうちの何枚かを担当することに。", '《スタイル/才能3》'], - [56, "新人アイドルたちが歌うクリスマスソングを収めたカバーアルバムが発売。自分たちも収録されています。", '《音楽/趣味11》'], - [66, "アイドルとデートをした気分になれるDVDが発売。自分たちも、クリスマス編の収録を行った。", '《アイドル/趣味12》'], - ] - return textFromD66Table(title, table) - - when 'PAR' - title = 'パートナー関係仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "オフ", ''], - [14, "オフ", ''], - [15, "オフ", ''], - [16, "オフ", ''], - [22, "パートナープレイヤーの【背景】に関する仕事がやって来る。こいつは何を見てきたんだ?", 'パートナープレイヤーの個性特技'], - [23, "パートナープレイヤーの「好きなもの」に関する仕事がやって来る。場を盛り上げていこう。", 'パートナープレイヤーが修得している趣味分野の特技'], - [24, "パートナープレイヤーの「嫌いなもの」に関する仕事がやって来る。どうフォローしたものか。", 'パートナープレイヤーが修得しているキャラ分野の特技'], - [25, "パートナープレイヤーの「身体的特徴」に関する仕事がやって来る。どこがいいのかを聞いてみる。", 'パートナープレイヤーが修得している属性分野の特技'], - [26, "パートナープレイヤーの「ファッション特徴」に関する仕事がやって来る。自分も真似をすることに。", 'パートナープレイヤーが修得している身長分野の特技'], - [33, "パートナープレイヤーの個性特技に関する仕事がやって来る。合わせてみよう。", 'パートナープレイヤーの個性特技'], - [34, "パートナープレイヤーの「身体的特徴」に関する仕事がやって来る。どこがいいのかを聞いてみる。", 'パートナープレイヤーが修得している属性分野の特技'], - [35, "パートナープレイヤーが修得している属性分野の特技に関する仕事がやって来る。", 'パートナープレイヤーが修得している属性分野の特技'], - [36, "パートナープレイヤーが修得しているキャラ分野の特技に関する仕事がやって来る。", 'パートナープレイヤーが修得しているキャラ分野の特技'], - [44, "シーンプレイヤーの【背景】を振り返らせるような仕事がやって来た。今はアイドルとしてそれをこなそう。", 'シーンプレイヤーの個性特技'], - [45, "パートナープレイヤーが修得している趣味分野の特技に関する仕事がやって来る。", 'パートナープレイヤーが修得している趣味分野の特技'], - [46, "パートナープレイヤーが修得している出身分野の特技に関する仕事がやって来る。", 'パートナープレイヤーが修得している出身分野の特技'], - [55, "シーンプレイヤーの個性特技に関する仕事がやって来る。今こそ見せ場だ!", 'シーンプレイヤーの個性特技'], - [56, "パートナープレイヤーが修得している才能分野の特技に関する仕事がやって来る。", 'パートナープレイヤーが修得している才能分野の特技'], - [66, "シーンプレイヤーの「好きなもの」に関する仕事がやって来る。やったぜ!", 'シーンプレイヤーの個性特技'], - ] - return textFromD66Table(title, table) - - when 'SW' - title = 'お菓子仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "オフ", ''], - [14, "オフ", ''], - [15, "オフ", ''], - [16, "オフ", ''], - [22, "おいし過ぎて止まらない様子を描く、ふわふわなお菓子のCMを行う。", '《ポップ/属性9》'], - [23, "苦い恋模様を描く、ビターチョコレートのCM撮影を行う。", '《ダーク/属性3》'], - [24, "甘い恋模様を描く、甘いチョコレートのCM撮影を行う。", '《キュート/属性6》'], - [25, "家でポリポリ食べているところを描く、スナック菓子のCMを行う。", '《プレーン/属性7》'], - [26, "青春の汗を流す様子を描く、甘い飲料水のCMを行う。", '《バーニング/属性10》'], - [33, "チョコレートを食べて脳細胞を活性化させる探偵のドラマに出演する。", '《集中力/才能4》'], - [34, "朝のシリアルを食べて元気いっぱいな様子を描く、CM撮影を行う。", '《元気/キャラ8》'], - [35, "眠いときに目がすっきりと覚める様子を描く、刺激の強いお菓子のCM撮影を行う。", '《パッション/属性8》'], - [36, "一本で栄養補給ができる様子を描く、健康補助食品なお菓子のCM撮影を行う。", '《クール/属性11》'], - [44, "地元にある駄菓子屋さんのプロモーションを手伝う。", '《ショッピング/趣味8》'], - [45, "料理番組で、市販のお菓子を使った新しいおやつの開発を任される。", '《料理/趣味6》'], - [46, "お菓子の家を再現したアトラクション施設を宣伝する。", '《フェミニン/属性5》'], - [55, "情報番組の1コーナーで、お勧めのケーキを紹介する。", '《料理/趣味6》'], - [56, "お菓子をテーマにした、夢いっぱいの遊園地の宣伝を行う。", '《笑顔/才能7》'], - [66, "チョコレートを使ったグラビア撮影をすることになる。", '《スタイル/才能3》'], - ] - return textFromD66Table(title, table) - - when 'AN' - title = '動物仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "オフ", ''], - [14, "オフ", ''], - [15, "オフ", ''], - [16, "オフ", ''], - [22, "ライオンの檻に、餌を届ける仕事がやって来る。勇気を出して踏み込もう。", '《胆力/才能5》'], - [23, "ハムスターと戯れる絵を作る。", '《ペット/趣味4》'], - [24, "牛の乳しぼり体験を動画にしよう。", '《集中力/才能4》'], - [25, "かわいい猫の動画を撮るために、きまぐれな猫の機嫌をとりにいく。", '《ペット/趣味4》'], - [26, "犬の散歩シーンを撮るためにも、犬と信頼関係を作る。", '《ペット/趣味4》'], - [33, "公園の鳩に餌をあげるシーンの手伝いをする。", '《マイペース/キャラ4》'], - [34, "象の上に乗って、コメントを述べる仕事。", '《エスニック/属性2》'], - [35, "ぬるぬるしたどじょうを手づかみする絵を要求される。", '《セクシー/属性4》'], - [36, "ウサギをなでる絵を作る仕事がやって来る。不安そうなウサギを安心させよう。", '《ペット/趣味4》'], - [44, "奈良の鹿に餌をあげるドラマに出演。", '《近畿地方/出身6》'], - [45, "馬に乗って、競馬場を駆ける映像を撮ることに。うまく乗りこなそう。", '《セレブ/才能11》'], - [46, "水族館でペンギンたちと一緒に遊ぶシーンを撮影。", '《キュート/属性6》'], - [55, "蛇を手づかみする番組企画が入る。", '《胆力/才能5》'], - [56, "海に入って、魚や貝を見つける企画をすることになった。", '《元気/キャラ8》'], - [66, "山奥で歩き回って、色々な昆虫を見つける仕事を行う。", '《体力/才能6》'], - ] - return textFromD66Table(title, table) - - when 'MOV' - title = '映画仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "オフ", ''], - [14, "オフ", ''], - [15, "オフ", ''], - [16, "オフ", ''], - [22, "ゾンビ映画にゾンビ役で出演。動く死体らしい演技を心がけよう。", '《ダーク/属性3》'], - [23, "時代劇映画にサムライ役で出演。厚い忠義を見せよう。", '《硬派/キャラ9》'], - [24, "西部劇映画にガンマン役で出演。静かに熱い役を演じよう。", '《バーニング/属性10》'], - [25, "SF映画に未来のエンジニア役で出演。難しい言葉をクールに言い放とう。", '《クール/属性11》'], - [26, "カンフー映画に若き拳法家役で出演。激しいアクションで敵と戦おう。", '《運動神経/才能8》'], - [33, "恋愛映画に当て馬役として出演。フラれたあとに感情的になる演技が大事。", '《演技力/才能12》'], - [34, "現代劇に中学二年生役として出演。現代の若者を演技で表現しよう。", '《中二病/キャラ2》'], - [35, "特撮ヒーローにヒーロー役として出演。スーツアクターのアクションに、アフレコで魂を載せよう。", '《演技力/才能12》'], - [36, "ホラー映画に主役として出演。悲鳴や動きで怖がっているところを見せよう。", '《ダーク/属性3》'], - [44, "インド映画にダンサーとして出演。情熱的な踊りで映画を盛り上げよう。", '《ダンス/趣味9》'], - [45, "ミステリー映画の犯人役として出演。怪しげな演技で人々を魅了しよう。", '《ミステリアス/キャラ3》'], - [46, "戦争映画に出演。哀しみの叫びを上げよう。", '《演技力/才能12》'], - [55, "ちょっとしたお色気シーンを撮ることに。", '《セクシー/属性4》'], - [56, "ドキュメンタリー映画で、過去の偉人を演じることに。その人の一生をトレースしよう。", '《演技力/才能12》'], - [66, "おバカな映画に、突き抜けたバカ役として出演。バカになれ!", '《ばか/キャラ12》'], - ] - return textFromD66Table(title, table) - - when 'FA' - title = 'ファンタジー仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "オフ", ''], - [14, "オフ", ''], - [15, "オフ", ''], - [16, "オフ", ''], - [22, "ドラゴンと対峙しても、引かない勇気を見せるシーン。", '《胆力/才能5》'], - [23, "怪物の群れを魔法で一掃するシーン。", '《ポップ/属性9》'], - [24, "剣を使って街を荒らす盗賊たちを成敗するシーン。", '《硬派/キャラ9》'], - [25, "斧を振るって、動く植物を破壊するシーン。", '《体力/才能6》'], - [26, "仲間と一緒に槍で突いて、敵の兵士を追い返すシーン。", '《気配り/才能9》'], - [33, "歌と踊りでファンタジーの住民たちを惹きつけるシーン。", '《音楽/趣味11》'], - [34, "酒場で芸を披露して、人気者になるシーン。", '《軟派/キャラ5》'], - [35, "無実の罪でとらえられ、牢屋から脱出するシーン。", '《ミステリアス/キャラ3》'], - [36, "突然現れた魔物の群れに襲われるシーン。", '《どじ/キャラ11》'], - [44, "巨大な魔物に、みんなで立ち向かっていくシーン。", '《気配り/才能9》'], - [45, "悪の魔法使いによって、呪いをかけられるシーン。", '《ダーク/属性3》'], - [46, "新しい武器と防具を調達して、着こなすシーン。", '《おしゃれ/趣味5》'], - [55, "一面の草原を駆け抜けるシーン。", '《元気/キャラ8》'], - [56, "疲れている王様を元気づけてあげるシーン。", '《パッション/属性8》'], - [66, "空を駆ける不思議な船に乗って、感動するシーン。", '《笑顔/才能7》'], - ] - return textFromD66Table(title, table) - - when 'RE' - title = 'ランダムイベント' - - number, = roll(1, 6) - if number.even? - name = 'オンイベント表' - table = [ - [11, "雨女は誰?", 96], - [12, "千客万来☆アイドル喫茶", 97], - [13, "フチドル", 98], - [14, "生放送は踊る", 99], - [15, "貸し切りプールの誘惑", 100], - [16, "ケーオンストリート!", 101], - [21, "アイドル×アニメ×ドリーマー!", 102], - [22, "一日警察署長、緊急出動!?", 103], - [23, "アイドルフィン!", 104], - [24, "「カラオケ採点ガチバトル☆」", 105], - [25, "「大正乙女ろまんてぃっく」", 106], - [26, "鳩時計ラジオ", 107], - [31, "「ガチ学院」CM", 108], - [32, "「カラフルアイスクリーム」モデル", 109], - [33, "忙しすぎる毎日", 110], - [34, "悩める新人デザイナー", 112], - [35, "「スクール☆ライフ」", 113], - [36, "魔法のように", 114], - [41, "食レポとその後", 115], - [42, "ソロライブ!", 116], - [43, "お昼の放送", 117], - [44, "文化祭!", 118], - [45, "商店街を救え!", 120], - [46, "二つの仕事", 121], - [51, "温泉にて", 122], - [52, "アイドル探偵と豪華客船", 124], - [53, "のうぎょう", 125], - [54, "コント撮影", 127], - [55, "アイドルVSサメ", 128], - [56, "駅前で歌う", 130], - [61, "街の清掃ボランティア", 131], - [62, "ミニユニット活動", 132], - [63, "カブトムシ狩り", 134], - [64, "ポスター作り", 135], - [65, "メロディ", 136], - [66, "さいてい新聞部の取材", 138], - ] - else - name = 'オフイベント表' - table = [ - [11, "アイドル、未知との遭遇", 139], - [12, "神様おねがい!", 140], - [13, "プチ合宿の罠!?", 141], - [14, "どこかで会ったような……", 142], - [15, "アイデンティティがっ!", 143], - [16, "ホリダシ×オオソウジ", 144], - [21, "エンドレス!? 握手会", 146], - [22, "不安な路線変更", 147], - [23, "全力ねこレース", 148], - [24, "恐怖の再テスト!", 149], - [25, "たくさんのファンレター", 150], - [26, "夕暮れの帰り道。", 152], - [31, "どきどき♪ 調理実習", 153], - [32, "超アイドル衣装?", 154], - [33, "おもいでの修学旅行", 156], - [34, "アルバイト!", 158], - [35, "ドライブしよう!", 159], - [36, "ファミレス攻防戦", 160], - [41, "総合練習", 162], - [42, "歌声はお腹から", 164], - [43, "メイクレッスン基本から", 165], - [44, "怪我", 166], - [45, "エゴサ", 168], - [46, "喫茶店でひと息", 169], - [51, "天体観測ツアー", 170], - [52, "謎のコーチ", 172], - [53, "屋上にて", 174], - [54, "クラスメイトより", 176], - [55, "最強アイドル伝", 177], - [56, "イメチェンしよう", 178], - [61, "郊外ショッピング施設", 179], - [62, "お見舞い", 180], - [63, "ライブを観よう!", 181], - [64, "頂を目指す", 182], - [65, "重いコンダラ", 183], - [66, "アイドル改造計画", 184], - ] - end - - isSwap = false - dice = getD66(isSwap) - outcome, text, page = table.assoc(dice) - return "#{title} > (1D6) > #{number}\n#{name} > [#{outcome}] > #{text}(『ビギニングロード』#{page}ページ)" - - when 'HA' - title = 'ハプニング表' - table = [ - [11, "ハプニングなし", ''], - [12, "ハプニングなし", ''], - [13, "ハプニングなし", ''], - [14, "ハプニングなし", ''], - [15, "ハプニングなし", ''], - [16, "ハプニングなし", ''], - [22, "パートナープレイヤーに、地方からオファーが来た。その土地独特の文化を学んで、パートナープレイヤーに伝えよう。", 'AT6'], - [23, "グラビア撮影だが、用意された衣装のサイズがパートナープレイヤーに合わなかった。何とかして、衣装を合わせなければいけない。", 'パートナープレイヤーが修得している身長分野の特技'], - [24, "ダンス撮影中。パートナープレイヤーのダンスに迷いが見えた。何かアドバイスをして、迷いを取り払いたい。", '《ダンス/趣味9》'], - [25, "歌の仕事だが、パートナープレイヤーの歌がどこかぎこちない。うまく本来の歌を取り戻させよう。", 'パートナープレイヤーが修得している属性分野の特技'], - [26, "体力を消費する仕事の最中に、パートナープレイヤーが倒れてしまった! 急いで処置をしなければ!", '《気配り/才能9》'], - [33, "パートナープレイヤーにマイナースポーツのCMが回ってきたが、知らない様子だ。ルールを教えよう。", '《スポーツ/趣味4》'], - [34, "パートナープレイヤーのキャラに合わない仕事が舞い込んだ。演技力で乗り切ってほしい。", '《演技力/才能12》'], - [35, "パートナープレイヤーが風邪をひいてしまう。次の仕事までに、なんとか治してもらわなければ。", '《元気/キャラ8》'], - [36, "パートナープレイヤーの属性らしくない衣装が来てしまった。うまくアレンジできればいいけど。", '《おしゃれ/趣味5》'], - [44, "パートナープレイヤーのテンションが低い。テンションを上げるようなことを言おう。", '《バーニング/属性10》'], - [45, "パートナープレイヤーの仕事に必要な小道具が足りなくなった。調達しよう。", '《ショッピング/趣味8》'], - [46, "パートナープレイヤーに外国から仕事が舞い込んできた。外国の文化に合わせた仕事をしなければ。", '《異国文化/才能2》'], - [55, "パートナープレイヤーに大会社からの仕事のオファーがやって来る。プレッシャーに負けないように後押ししよう。", '《胆力/才能5》'], - [56, "パートナープレイヤーと他のアイドルグループとのコラボイベントが行われる。そのアイドルの情報を集めてこよう。", '《アイドル/趣味12》'], - [66, "パートナープレイヤーの周りで、幽霊騒ぎが起こる。安心させるためにも、調査に乗り出そう。", '《オカルト/趣味2》'], - ] - return textFromD66Table(title, table) - - when /^AT([1-6]?)$/ - value = Regexp.last_match(1).to_i - return getSkillList(value) - - when 'LUR' - title = '地方アイドル無茶ぶり表' - table1 = [ - "地元の商店街で", - "マスコットキャラクターと", - "地元のプールで", - "地元の小学校で", - "地元のショッピングモールで", - "田んぼの真ん中で", - ] - table2 = [ - "愛について叫ぶ", - "民謡を歌う", - "ファッションショー", - "水着で宣伝", - "ネット配信", - "お祭り騒ぎ", - ] - return textFrom1D6Table(title, table1, table2) - - when 'SUR' - title = '情熱の夏無茶ぶり表' - table1 = [ - "海水浴場で", - "偉い人の前で", - "あの有名アイドルの前で", - "仲間の前で", - "カメラの前で", - "一般客の前で", - ] - table2 = [ - "かき氷いっき食い", - "ナンパ", - "スイカ割り", - "カッコいいポーズ", - "満面の笑顔", - "喧嘩のふり", - ] - return textFrom1D6Table(title, table1, table2) - - when 'WUR' - title = 'ぬくもりの冬無茶ぶり表' - table1 = [ - "クリスマスツリーの前で", - "子供たちの前で", - "大雪の中で", - "雪が降り始めた街で", - "暖かい部屋の中で", - "暖房が効きすぎの部屋の中で", - ] - table2 = [ - "雪かき", - "アイスを食べる", - "薄着で登場", - "歌ってください", - "サンタのコスプレ", - "おでんを急いで食べる", - ] - return textFrom1D6Table(title, table1, table2) - - when 'NUR' - title = '大自然無茶ぶり表' - table1 = [ - "斧を持って", - "クワを持って", - "釣竿を持って", - "虫取り網を持って", - "栄養ドリンクの宣伝をしながら", - "命綱をつけて", - ] - table2 = [ - "木を倒す", - "畑を耕す", - "昆虫採集", - "大物を釣る", - "一晩過ごす", - "崖を登る", - ] - return textFrom1D6Table(title, table1, table2) - - when 'GUR' - title = '聖デトワール女学園無茶ぶり表' - table1 = [ - "裏山で", - "食堂で", - "先輩の前で", - "全国放送で", - "全校生徒の前で", - "学園の様子を伝えるネット中継で", - ] - table2 = [ - "歌を披露", - "乗馬", - "テニス", - "「個性とは何か」を語る", - "「アイドルとは何か」を語る", - "「アイドルをやっていてよかった瞬間」を語る", - ] - return textFrom1D6Table(title, table1, table2) - - when 'BUR' - title = 'アカデミー無茶ぶり表' - table1 = [ - "TVカメラの前で", - "ライバルと一緒に", - "試験で", - "寮で", - "幼年部で", - "初等部で", - ] - table2 = [ - "反省会", - "ゲリラライブ", - "宿題をこなす", - "食事を作る", - "自作の歌を披露", - "自作のポエムを披露", - ] - return textFrom1D6Table(title, table1, table2) - - when /^BT(\d+)?$/ - counts = (Regexp.last_match(1) || 1).to_i - return badStatus(counts) - - when 'SGT' - title = 'アイドルスキル修得表(チャレンジガールズ)' - table = [ - "シーンプレイヤーが修得している才能分野の特技が指定特技のアイドルスキル", - "シーンプレイヤーが修得しているキャラ分野の特技が指定特技のアイドルスキル", - "シーンプレイヤーが修得している趣味分野の特技が指定特技のアイドルスキル", - "ランダムに決定した特技が指定特技のアイドルスキル(身長分野、属性分野、出身分野が出たら振り直し)", - "《メンタルアップ》《パフォーマンスアップ》《アイテムアップ》のうちいずれか1つ", - "《メンタルアップ》《パフォーマンスアップ》《アイテムアップ》のうちいずれか1つ", - ] - return textFrom1D6Table(title, table) - - when 'RS' - title = 'アイドルスキル修得表(ロードトゥプリンス)' - table = [ - "シーンプレイヤーが修得している属性分野の特技が指定特技のアイドルスキル", - "シーンプレイヤーが修得しているキャラ分野の特技が指定特技のアイドルスキル", - "シーンプレイヤーが修得している趣味分野の特技が指定特技のアイドルスキル", - "ランダムに決定した特技が指定特技のアイドルスキル(身長分野、才能分野、出身分野が出たら振り直し)", - "《メンタルディフェンス》《判定アップ》《個性アップ》のうちいずれか1つ", - "《メンタルディフェンス》《判定アップ》《個性アップ》のうちいずれか1つ", - ] - return textFrom1D6Table(title, table) - - when 'SH' - title = 'ショッピングモール散策表' - table = [ - [11, "思いがけず、ブランドもの衣装を買えてしまった。これを、うまく使えないだろうか?\nシーンプレイヤーとパートナープレイヤーは、好きなブランドの衣装チケットを一つ獲得する。"], - [12, "雑貨コーナーを回って、自分たちらしいアクセサリーを探す。\nシーンプレイヤーとパートナープレイヤーは、アイテム「キャラアイテム」を一つ獲得する。"], - [13, "お歳暮コーナーが盛況だった。今のトレンドはなんだろうか。\nシーンプレイヤーとパートナープレイヤーは、アイテム「差し入れ」を一つ獲得する。"], - [14, "お菓子売り場で、気になっていたお菓子のシリーズを買い漁る。\nシーンプレイヤーとパートナープレイヤーは、アイテム「お菓子」を一つ獲得する。"], - [15, "スポーツショップに立ち寄って、スポーツドリンクを買い貯める。いつか使うかもしれない。\nシーンプレイヤーとパートナープレイヤーは、アイテム「スナミナドリンク」を一つ獲得する。"], - [16, "スポーツウェアの展示会をやっていたので、見て回る。びびっと来たアイテムも見つかった。\nシーンプレイヤーとパートナープレイヤーは、アイテム「トレーニングウェア」を一つ獲得する。"], - [22, "特売品を買い漁る。さて、使えるものかな?\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに二つ獲得する。"], - [23, "シューズコーナーで、普段使いの靴を調達する。ダンスにちょうどいいのはどれかな?\nシーンプレイヤーとパートナープレイヤーは、アイテム「ドリーミングシューズ」を一つ獲得する。"], - [24, "ふらりと買い物にやって来て、目についたものをとりあえず買ってみる。ちょっと疲れてたかも。\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], - [25, "色々な洋服を見て回って、自分やパートナーに合ったコーディネートを考えてみる。\nシーンプレイヤーとパートナープレイヤーは、【ビジュアル】が1点上昇する。"], - [26, "ちょうど買いたかったものが、格安で売られていた。タイミングがよかったみたいだ。\nシーンプレイヤーとパートナープレイヤーは、好きなアイテムを一つ獲得する。"], - [33, "ショッピングモールを歩いているうちに、アイテムを落としてしまう。\nシーンプレイヤーとパートナープレイヤーは、アイテムをすべて失う。"], - [34, "ショッピングモールを歩いていると、声をかけられた。地元の人たちから、応援のメッセージをもらう。\nシーンプレイヤーとパートナープレイヤーは、【獲得ファン人数】が4点上昇する。"], - [35, "ショッピングモールでは何も買わなかったが、交わした会話はお互いを知るきっかけになった。\nシーンプレイヤーとパートナープレイヤーは、お互いに対する【理解度】が3点上昇する。"], - [36, "ベンチで一休みしながら、お互いの長所について話し合う。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [44, "混雑中のフードコートで食事をしようとしたところ、一時間近く待たされる。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が2点減少する。"], - [45, "フードコートで定番メニューを頼み、勝手知ったる味を楽しむ。やっぱり、知っている味がいい。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が2点上昇する。"], - [46, "フードコートで新しいメニューにチャレンジ!\nシーンプレイヤーとパートナープレイヤーは、1D6を振る。出目が奇数の場合、そのPCは【メンタル】が5点減少し、出目が偶数の場合、そのPCは【メンタル】が5点上昇する。"], - [55, "CDコーナーを探しているうちに、迷ってしまった。さて、ここはどこだろう?\n変調がランダムに一つ発生する。"], - [56, "カフェコーナーで一休み。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が5点上昇する。"], - [66, "家具や家電コーナーを回るうちに、自分たちの将来が不安になってきた。\n変調がランダムに二つ発生する。"], - ] - return textFromD66Table(title, table) - - when 'MO' - title = '山散策表' - table = [ - [11, "山で迷っていたら、謎の仙人に助けられる。そのついでに、体をうまく動かす方法まで教わる。ありがとう! 謎の仙人!\nシーンプレイヤーとパートナープレイヤーの【合宿ポイント】が10点上昇する。"], - [12, "山の幸を頂いて、幸福感に包まれる。うまい!\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [13, "星空の下で、二人の【背景】を語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [14, "森林浴をして、体調を整える。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇し、変調がすべて回復する。"], - [15, "山登りを繰り返して、足腰を鍛える。\nシーンプレイヤーとパートナープレイヤーの【フィジカル】が1点上昇する。"], - [16, "二人で一緒に朝日を見て、訳も分からず感動する。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [22, "山で迷った。\n変調がランダムに二つ発生する。"], - [23, "山奥に住んでいるという、伝説のファッションデザイナーに着こなしの秘密を教えてもらう。\nシーンプレイヤーとパートナープレイヤーは、好きなブランドの衣装チケットを一つ獲得する。"], - [24, "山奥に住んでいるという、伝説のレッスントレーナーに教えを乞いに足を延ばす。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [25, "ふらっと立ち寄った地元の飲食店で郷土料理を食べる。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [26, "山奥にある神社まで登って、お祈りをする。無事にライブが成功しますように。\nシーンプレイヤーとパートナープレイヤーの【合宿ポイント】が5点上昇する。"], - [33, "虫にたかられて、嫌な思いをする。\n変調がランダムに一つ発生する。"], - [34, "仲間たちみんなとバーベキューをして楽しむ。\nシーンプレイヤーとパートナープレイヤーは、PC全員に対する【理解度】が3点上昇する。"], - [35, "キノコ狩りをする。\nシーンプレイヤーとパートナープレイヤーは、1D6を振る。その値が偶数だった場合、アイテム「スタミナドリンク」を一つ獲得する。奇数だった場合、【メンタル】が6点減少する。"], - [36, "避暑地の喫茶店で一杯飲みながら、お互いのアイドル論について語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [44, "山を移動中に、落し物をしてしまう。\nシーンプレイヤーとパートナープレイヤーは、アイテムを一つ失う。"], - [45, "山小屋で一晩を過ごす。お互いの生活習慣が見えてきた。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [46, "ハイキングをしながら、お互いの嫌いなものについて理解を深める。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [55, "野生の鹿に襲われそうになったので、プロデューサーが盾になった。\n変調「怪我」が発生する。"], - [56, "高原の広々としたテニスコートでテニスを楽しむ。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [66, "山道を歩き疲れて、足が棒になる。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が3点減少する。"], - ] - return textFromD66Table(title, table) - - when 'SEA' - title = '海散策表' - table = [ - [11, "浜辺で行われていたミスコンに強制的に参加させられる。\nシーンプレイヤーとパートナープレイヤーの【獲得ファン人数】が1D6点上昇する。"], - [12, "浜辺を散歩しながら、お互いの好きなものについて語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [13, "とれたての魚を使った寿司を食べて満足する。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [14, "浜辺を歩いていると、アイドルだと気づいた地元の人たちから声援が飛んでくる。\nシーンプレイヤーとパートナープレイヤーの【獲得ファン人数】が5点上昇する。"], - [15, "童心に返って、海に向かって走り出す。やったー海だー!\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [16, "水泳で体を鍛える。荒れやすい海は特訓にもってこいだ!\nシーンプレイヤーとパートナープレイヤーの【フィジカル】が1点上昇する。"], - [22, "せっかくだから釣りをしてみる。何が釣れるかな?\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], - [23, "二人で競い合いながら泳ぎまわる。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [24, "ちょっとだけ日に焼けて、違う自分をセルフプロデュース。ちゃんと事務所の許可はとれてます!\nシーンプレイヤーとパートナープレイヤーの【ビジュアル】が1点上昇する。"], - [25, "砂浜にいい感じのタイヤがあったので、それを引っ張りながら走り込みをする。\nシーンプレイヤーとパートナープレイヤーの【フィジカル】が1点上昇する。"], - [26, "海に向かって叫んで、すっきりする。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇し、【ボイス】が1点上昇する。"], - [33, "しつこいナンパに誘われて、ちょっと意気消沈してしまう。\n変調がランダムに二つ発生する。"], - [34, "みんなで花火をして楽しむ。\nシーンプレイヤーとパートナープレイヤーは、PC全員に対する【理解度】が2点上昇する。"], - [35, "水着で決めるファンションをコーディネートして、浜辺の視線を一人占め。\nシーンプレイヤーとパートナープレイヤーは、【ビジュアル】が1点上昇する。"], - [36, "魚料理を満足いくまで食べたはいいものの、食べ過ぎじゃないかが心配。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇する。"], - [44, "穏やかな海を見ながら、これまでのことを思い返す。\n変調が一つ回復する。"], - [45, "水族館に立ち寄ったら、お土産に色々持たされる。\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], - [46, "水族館のイルカショーから、新しい技のヒントをもらう。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [55, "海で遊んでいたら、溺れかける。\n変調がランダムに三つ発生する。"], - [56, "サーファーたちから、人を惹きつける技術について聞き出す。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [66, "夜の海に出没するという幽霊らしきものを見かけてしまい、ぞっとする。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が5点減少する。"], - ] - return textFromD66Table(title, table) - - when 'SPA' - title = '温泉街散策表' - table = [ - [11, "地元のお祭りに遭遇! 一緒になって盛り上げる。\nシーンプレイヤーとパートナープレイヤーの【獲得ファン人数】が5点上昇する。"], - [12, "卓球台を使って、お互いの力を出し切る。何かが掴めたような気がする。\nシーンプレイヤーとパートナープレイヤーの【合宿ポイント】が5点上昇する。"], - [13, "お土産屋さんで、色々なものを買い込む。しかし、これは役に立つのだろうか。\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], - [14, "温泉からあがった後に、ゆっくりと涼む。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇し、変調がすべて回復する。"], - [15, "温泉街の名物料理を出してもらう。うまい!\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [16, "浴衣で活気のある街並みを歩きながら、お互いの【背景】を語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が1D6点上昇する。"], - [22, "湯に浸かり過ぎて目が回る。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇し、変調がランダムに一つ発生する。"], - [23, "たくさんの温泉に次々浸かる。楽しいけど疲れた。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [24, "湯船に浸かってリフレッシュ。ひとまずは一息入れましょう。\n変調がすべて回復し、シーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [25, "ジャグジー風呂で肩こりや足のむくみを癒す。温泉地でもこういう施設はあるんだな。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [26, "みんなやプロデューサーを連れて足湯に浸かる。いつもご苦労様。\n変調がすべて回復する。"], - [33, "のぼせる。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が3点減少する。"], - [34, "貸切風呂で、ゆったりとしながらお互いを理解をするための話し合いをする。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [35, "マッサージ機を使って、日ごろの疲れをたたき出す。\n変調をすべて回復する。"], - [36, "お風呂の後の牛乳もうまい!\nシーンプレイヤーとパートナープレイヤーは、アイテム「スナミナドリンク」を一つ獲得する。"], - [44, "ついつい無駄遣いをしてしまう。てへへ。\n変調がランダムに一つ発生する。"], - [45, "屋台での観光客向けの料理に舌鼓をうつ。こういう味もありなのか。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇する。"], - [46, "温泉街の女将さんたちに、人の心を豊かにする術を教えてもらう。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [55, "部屋の中でぼけっと過ごす。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が1点上昇する。"], - [56, "観光客の人々と会話をして、自分たちの知名度を確認する。\nアイドルランク係数が「10」以上の場合、【獲得ファン人数】が4D6点上昇する。"], - [66, "複雑な地形と坂道で疲れ始める。目的の場所はまだ?\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が3点減少する。"], - ] - return textFromD66Table(title, table) - - when 'TN' - title = '夜語りシチュエーション表' - table = [ - ["みんなが寝静まった寝室。二人だけのお話。", '好きな特技'], - ["夜の街を歩きながら、【背景】をぽつぽつと語り出す。", 'シーンプレイヤーの個性特技'], - ["「好きなもの」を探しに出かけた帰り道。", 'シーンプレイヤーが修得している趣味分野の特技'], - ["「嫌いなもの」から逃げてきて、二人きりになってしまった。", 'AT'], - ["暗い道を往くとき、ふとしたきっかけで、「身体的特徴」に触れてしまう。", 'シーンプレイヤーが修得している身長分野の特技'], - ["「ファッション特徴」の話に夢中になっていたら、いつの間にか二人になっていたことに気づく。", 'シーンプレイヤーが修得している属性分野の特技'], - ] - number, = roll(1, 6) - return "#{title} > [#{number}] > " + table[number - 1][0] + getSkillText(table[number - 1][1]) - - when 'CG' - title = 'コモン成長表' - table = [ - "【メンタル】が2点上昇する。", - "【メンタル】が4点上昇する。", - "『チャレンジガールズ』か『ロードトゥプリンス』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。", - "アイテムをランダムに一つ獲得する。", - "アイテムをランダムに一つ獲得する。", - "【獲得ファン人数】が3点上昇する。", - ] - text = textFrom1D6Table(title, table) - if /アイテムをランダムに一つ獲得する。$/ =~ text - text += "\n" + getItem - end - return text - - when 'GG' - title = 'ゴールド成長表' - table = [ - [11, "好きなアイドルスキルを一つ選んで修得する。"], - [12, "『チャレンジガールズ』か『ロードトゥプリンス』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [13, "『チャレンジガールズ』か『ロードトゥプリンス』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [14, "『チャレンジガールズ』か『ロードトゥプリンス』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [15, "『チャレンジガールズ』か『ロードトゥプリンス』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [16, "『チャレンジガールズ』か『ロードトゥプリンス』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [22, "好きなアイドルスキルを一つ選んで修得する。"], - [23, "レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [24, "レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [25, "レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [26, "好きな能力値一つが1点上昇する。"], - [33, "好きな能力値一つが2点上昇する。"], - [34, "【ボイス】が1点上昇する。"], - [35, "【フィジカル】が1点上昇する。"], - [36, "【ビジュアル】が1点上昇する。"], - [44, "個性特技を別の特技に変更することができる。"], - [45, "好きな能力値二つが1点上昇する。"], - [46, "すべての能力値が1点上昇する。"], - [55, "【メンタル】が10点上昇する。"], - [56, "アイテムをランダムに一つ獲得する。"], - [66, "個性特技の目標値が1点減少する。"], - ] - skillTitle = 'レアアイドルスキル修得表' - skillTable = [ - "【秘めたる素質】を修得する。", - "【王者の風格】を修得する。", - "【万能アイドル】を修得する。", - "【最強の負けず嫌い】を修得する。", - "【超絶無敵コーデ】を修得する。", - "【強く正しく美しく】を修得する。", - ] - text = textFromD66Table(title, table) - - if /レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。/ =~ text - text += "\n" + textFrom1D6Table(skillTitle, skillTable) - elsif /アイテムをランダムに一つ獲得する。$/ =~ text - text += "\n" + getItem - end - return text - - when 'FL' - title = '駆け出しシーン表' - table = [ - "トレーニングルームで、皆が真剣な顔をしている。真面目な雰囲気が場を支配しており、軽い冗談も言えなさそう。", - "いつものたまり場。なのに、今日に限って、騒がしさがどこかに行ってしまったようだ。", - "誰も歩いていない夜道。人気もなく、不安を抱くような暗闇に、足音だけが響いている。", - "強い風と強い雨が吹きつける事務所の中。外に出れば、吹き飛ばされてしまいそう。", - "曇り空の下。そこにいるだけで、暗い気持ちになるような、どんよりとした天気。", - "雨が降り続けている。雨は、ずっと続いている。いつになったら晴れるのだろう。", - ] - return textFrom1D6Table(title, table) - - when 'LN' - title = '孤独表' - table = [ - "誰のことも信じられない。私は一人でやってみせる。\nPC全員の【理解度】すべてにチェックを入れる。センターPCは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。", - "事件がきっかけで、事務所の空気が悪くなった。嫌な雰囲気。\n変調がランダムに三つ発生する。", - "口調が荒くなり、きつい一言を仲間に言ってしまう。\nPC全員の【メンタル】が5点減少し、【理解度】すべてにチェックを入れる。", - "ちょっとした注意がきっかけで、仲間と喧嘩をしてしまう。\nPC全員の【メンタル】が10点減少する。", - "誰も、話をしない。気まずさと静寂が場を包んだ。このままでは、会場の空気も悪くなる。\n【目標動員数】が二倍になる。", - "突然の強い雨に打たれる。ずぶぬれのところに一人。そんなところを誰かに目撃されてしまう。\nセンターPCの【獲得ファン人数】が半分になる。", - ] - return textFrom1D6Table(title, table) - - when 'MS' - title = 'マイスキル名決定表' - nameTable = [ - "形容表+情景表+マテリアル表", - "形容表+情景表+アクション表", - "形容表+マテリアル表+アクション表", - "情景表+マテリアル表+アクション表", - "形容表もしくは情景表+称号表+PCの名前", - "マテリアル表もしくはアクション表+称号表+PCの名前", - ] - articleTitle = '称号表' - articleTable = [ - "アイドル", - "ガール/ボーイ", - "パラダイス", - "プリンセス/プリンス", - "スタイル", - "クイーン/キング", - ] - describeTitle = '形容表' - describeTable = [ - [11, "ビギニング"], - [12, "パワフル"], - [13, "ビューティフル"], - [14, "エターナル"], - [15, "きらめき"], - [16, "シャイニング"], - [22, "パーフェクト"], - [23, "1000%"], - [24, "フレッシュ"], - [25, "ドキドキ"], - [26, "ワイルド"], - [33, "ロイヤル"], - [34, "ときめき"], - [35, "ふわふわ"], - [36, "スタイリッシュ"], - [44, "小悪魔"], - [45, "スーパー"], - [46, "ウルトラ"], - [55, "ハイパー"], - [56, "ダイナマイト"], - [66, "アルティメット"], - ] - sceneTitle = '情景表' - sceneTable = [ - [11, "マーメイド"], - [12, "ドリーム"], - [13, "ピュア"], - [14, "アニマル"], - [15, "サンシャイン"], - [16, "ムーンライト"], - [22, "かわいい/かっこいい"], - [23, "フューチャリング"], - [24, "ライジング"], - [25, "バーニング"], - [26, "スターライト"], - [33, "ボンバー"], - [34, "レインボー"], - [35, "フローズン"], - [36, "ヒート"], - [44, "ダーク"], - [45, "ぴかぴか"], - [46, "サンライズ"], - [55, "スターダスト"], - [56, "オーロラ"], - [66, "ギャラクシー"], - ] - materialTitle = 'マテリアル表' - materialTable = [ - [11, "バスケット"], - [12, "エクスプレス"], - [13, "エアプレーン"], - [14, "ロケット"], - [15, "ハリケーン"], - [16, "バイク"], - [22, "タイガー"], - [23, "ドルフィン"], - [24, "ドッグ"], - [25, "キャット"], - [26, "バニー"], - [33, "ドラゴン"], - [34, "ソード"], - [35, "ランス"], - [36, "パラソル"], - [44, "ローズ"], - [45, "ロータス"], - [46, "コスモス"], - [55, "キャンディ"], - [56, "ハート"], - [66, "フェニックス"], - ] - actionTitle = 'アクション表' - actionTable = [ - [11, "スパイラル"], - [12, "フライ"], - [13, "シャワー"], - [14, "ダイブ"], - [15, "イリュージョン"], - [16, "ラッシュ"], - [22, "ターン"], - [23, "ラブ"], - [24, "ハグ"], - [25, "ダッシュ"], - [26, "シュート"], - [33, "ダイビング"], - [34, "クロス"], - [35, "トリック"], - [36, "ビーム"], - [44, "スラッシュ"], - [45, "ボイス"], - [46, "ドライブ"], - [55, "くるくる"], - [56, "ジャンプ"], - [66, "アクション"], - ] - name, nameNumber = get_table_by_1d6(nameTable) - - nameParts = [] - articleIndex = name.index(articleTitle) - unless articleIndex.nil? - text, number = get_table_by_1d6(articleTable) - nameParts.push([articleIndex, articleTitle, text, number]) - end - - setArrayFromD66Table(nameParts, name, describeTitle, describeTable) - setArrayFromD66Table(nameParts, name, sceneTitle, sceneTable) - setArrayFromD66Table(nameParts, name, materialTitle, materialTable) - setArrayFromD66Table(nameParts, name, actionTitle, actionTable) - nameParts.sort! - - numberString = "" - nameParts.each do |_index, src, text1, number1| - name = name.gsub(src, text1) - numberString += "#{src}#{number1}," - end - numberString = numberString[0, numberString.length - 1] - return "#{title} > [#{nameNumber},#{numberString}] > #{name}" - - when 'MSE' - title = 'マイスキル効果表' - table = [ - "演目を行ったときに使用できる。自分の【メンタル】が15点になる。この効果は、1回のセッションに1度まで使用できる。", - "ミラクル・ミラクルシンクロ・パーフェクトミラクルを発生させたときに使用できる。【パフォーマンス値】が10点上昇する。この効果は、1回のセッションに1度まで使用できる。", - "ファンブルではない判定の後に使用する。判定の達成値を12にする。この効果は、1回のセッションに1度まで使用できる。", - "演目を行ったときに使用できる。自分以外のPC全員の【メンタル】が2D6点上昇する。この効果は、1回のセッションに1度まで使用できる。", - "ライブフェイズ開始時に使用する。このフェイズの間、すべての判定の達成値にプラス2の修正がつく。この効果は、1回のセッションに1度まで使用できる。", - "パフォーマンスのサイコロを振った後に使用する。サイコロ1つの出目を6にすることができる。この効果は、1回のセッションに1度まで使用できる。", - ] - return textFrom1D6Table(title, table) - - when 'ST' - title = '演出表' - table = [ - "見事なパフォーマンスに、人々が感動する。", - "その声に観客が聞き惚れる。", - "一糸乱れぬダンスが決まる。", - "宙に飛ばしたマイクを見事にキャッチする。", - "トランポリンなどを使って、会場の天井近くまでジャンプ。", - "観客と一体になって決めポーズ。", - ] - return textFrom1D6Table(title, table) - - when 'FST' - title = 'ファンタジー演出表' - table = [ - "会場を覆っていた暗雲を退散させる。", - "会場に花が咲く。", - "炎の旋風が観客を燃え上がらせる。", - "ハートの風船が会場中を飛び交う。", - "羽を生やして会場を飛び回る。", - "打ち上がった花火と共に決めポーズ。", - ] - return textFrom1D6Table(title, table) - - when 'CHO' - title = 'サビ表' - table = [ - [11, "冒険だ/アドベンチャー\nこの演目の間、スペシャル値が1点減少。"], - [12, "世界中の愛/ラブ\nPC全員の【メンタル】が3点上昇。"], - [13, "今届けたい/待ちきれない\nこの演目の【パフォーマンス値】が1点上昇。"], - [14, "負けないぜ/勝ちたい\nこの演目のPPが5点減少(最低0)。"], - [15, "感謝の言葉/ありがとうと\n変調がすべて回復する。"], - [16, "キミとなら/あなたたちが\nこの演目の間、すべての【理解度】が2点高いものとして扱う。"], - [22, "仲間となら/仲間の\nPC全員は、自分以外のキャラクターに対する【理解度】が1点上昇。"], - [23, "マジで好き/MAX\nPC全員の【メンタル】が1D6点上昇。"], - [24, "死にたいぐらいに/闇に落ちて\nこの演目の間、スペシャル値とファンブル値が1点減少。"], - [25, "だけど/でも\nこの演目の間、一芸突破の目標値が5点になる。"], - [26, "キスよりも/囁くよりも\nこの演目の間、【ビジュアル】が1点上昇する。"], - [33, "一緒にいてほしい/ずっと\nアイドルクラスが「ほのぼの」のPC全員は【思い出】を1つ獲得。"], - [34, "走る/走れ\nこの演目の間、【フィジカル】が1点上昇する。"], - [35, "待ち焦がれる/いつまでも\nこの演目の間、シンフォニーを行ったとき、サイコロ1つの出目を1に変更できる。"], - [36, "真夜中の/真昼の\nミラクル・ミラクルシンクロが発生したとき、【パフォーマンス値】にプラス5。"], - [44, "笑おうぜ/笑顔で\nアイドルクラスが「コメディ」のPC全員は【獲得ファン人数】が[2D6に【ランク係数】をかけた数]点上昇。"], - [45, "パーティだ/お金でも\nPC全員は、アイテムを1つランダムに獲得する。"], - [46, "だから/それから\nこの演目の間、一芸突破以外の判定の達成値が1点上昇する。"], - [55, "オレだけを見ろ/独占したい\n一芸突破を行っても、【メンタル】が減少しない。"], - [56, "オレたちの歌/歌おう\nこの演目の間、【ボイス】が1点上昇する。"], - [66, "愛しています/好きだ\nアイドルクラスが「マジメ」のPC全員の【メンタル】が5点上昇。"], - ] - return textFromD66Table(title, table) - - when 'SCH' - title = '情熱の夏サビ表' - table = [ - "夏は\nこの演目の間、PC全員の【パフォーマンス値】が1点上昇。", - "熱いぜ!\nこの演目の間、PC全員のスペシャル値が1点減少。", - "水着が\nこの演目の間、衣装の効果によって上昇する値にプラス1。", - "乾いた喉\nこの演目の間、PC全員のファンブル値が3点上昇。", - "潤う\n【メンタル】が5点以下のPC全員の【メンタル】が10点上昇。", - "弾けて\nこの演目の間、パーフェクトミラクルの【パフォーマンス値】が15点上昇。", - ] - return textFrom1D6Table(title, table) - - when 'WCH' - title = 'ぬくもりの冬サビ表' - table = [ - "雪のような\nPC全員の【メンタル】が3点上昇。", - "チョコレートに\nPC1人の【メンタル】が10点上昇。", - "溶かしてあげる\nこの演目の間、PC全員の判定の達成値が1点上昇。", - "特別な日\nこの演目の間、PC1人のスペシャル値が3点減少。", - "吹雪が\nこの演目の間、ミラクルの【パフォーマンス値】が10点上昇。", - "寒さも忘れて\nこの演目の間、PCはファンブルが発生しても、変調が発生しない。", - ] - return textFrom1D6Table(title, table) - - when 'NCH' - title = '大自然サビ表' - table = [ - "野生の\nPC全員の【メンタル】が1D6点上昇。", - "パワーで\nこの演目の間、PC1人の【パフォーマンス値】が1D6点上昇。", - "鍛えた体\nPC全員の【メンタル】が3点上昇。", - "掴みとる\nこの演目の間、PC全員の【パフォーマンス値】が1点上昇。", - "抱き留める\nこの演目の間、PC1人の【パフォーマンス値】が3点上昇。", - "毎日が戦い\nPC1人の【獲得ファン人数】が[2D6に【ランク係数】をかけた数]点上昇。", - ] - return textFrom1D6Table(title, table) - - when 'GCH' - title = '女性向けサビ表' - table = [ - [11, "女の子だから/キュンキュンしてる\nPC全員の【メンタル】が1D6点上昇する。"], - [12, "見つめていたい/心の声\nこの演目の間、【パフォーマンス値】が2点上昇する。"], - [13, "私の気持ち/あなたへ届け\nこの演目の間、【協調値】が1点上昇する。"], - [14, "繋がりたい/夜を過ごしたい\nPC全員の【メンタル】が1D6点上昇する。"], - [15, "手と手を繋いで/みんなと一緒に\nこの演目の間、シンフォニーをするたびに、【メンタル】が5点上昇する。"], - [16, "ファッションで/おしゃれして\n衣装の効果が1点上昇する。"], - [22, "アイドルだけど/アイドルとして\nこの演目の間、意地判定の達成値が2点上昇する。"], - [23, "愛してる/好きです\nこの演目の間、【協調値】が1点上昇する。"], - [24, "恋したい/恋してる\nこの演目の間、【協調値】が1点上昇する。"], - [25, "LOVE/「大好き」\nこの演目の間、【協調値】が1点上昇する。"], - [26, "お母さんには秘密/ヴェールでかくして\nこの演目の間、【メンタル】が減少しない。"], - [33, "愛に溺れて/沈んでいく\nこの演目の間、シンフォニーをするたびに、【パフォーマンス値】が2点上昇する。"], - [34, "潰してほしい/壊して\nこの演目の間、判定に失敗したPCは【獲得ファン人数】が2D6点上昇する。"], - [35, "どんなに遠くに/離れても\nこの演目の間、すべてのギャップは埋まっているものとして扱う。"], - [36, "想いを届けて/胸に秘めた鼓動\nPC全員の【メンタル】が1D6点上昇する。"], - [44, "私のことが好きなら/一緒に死にたい\nこの演目の間、【メンタル】が0になっても、行動不能にならない。"], - [45, "(台詞)/(ピアノソロ)\nPC全員の【メンタル】が1D6点上昇する。"], - [46, "せーのっ/いくよー!\nこの演目の間、PCはパフォーマンスのサイコロすべてを一度だけ振り直すことができる。"], - [55, "あの日みたいに/あの子のこと忘れて\nこの演目の間、判定に失敗しても、判定のサイコロを一度だけ振り直すことができる。"], - [56, "歌を届けよう/声に想いを\nこの演目の間、【パフォーマンス値】が2点上昇する。"], - [66, "(ユニット名)/(PCの名前)\n好きな能力値が1点上昇する。"], - ] - return textFromD66Table(title, table) - - when 'PCH' - title = '力強いサビ表' - table = [ - [11, "バトル/戦いに臨む\nこの演目の間、判定の達成値が2点上昇する。"], - [12, "宇宙に/銀河が\nこの演目の間、パフォーマンスのサイコロは取り除かれない。"], - [13, "空へ/天に向けて\nこの演目の判定に成功したPCは、【メンタル】が10点上昇する。"], - [14, "ぶち壊すぜ/むしゃくしゃして\nこの演目の間、一芸突破を行ったときの目標値が4になる。"], - [15, "バイクに乗って/ヘリで飛ばして\nPC全員は、アイテム「キャラアイテム」を1個獲得する。"], - [16, "アタック/殴りかかる\nこの演目の間、一芸突破を行ったときの判定の達成値が3点上昇する。"], - [22, "情熱/熱情\nこの演目の間、スペシャル値が1点減少。"], - [23, "走り切るのさ/星の輝き\nこの演目の間、PCの【メンタル】が減少しない。"], - [24, "心赴くまま/願いを込めて\nPC全員の【メンタル】が[自分からの【理解度】の合計]点上昇する。"], - [25, "高みへ/打ち破る\nこの演目の間、スペシャル値が1点減少。"], - [26, "イメージを/覚悟を\nこの演目の間、スペシャル値が1点減少。"], - [33, "弱気な自分に/暗闇裂く\nPC全員は、アイテム「ドリーミングシューズ」を1個獲得する。"], - [34, "衝動(リビドー)/強敵(ライバル)\nこの演目の間、スペシャル値が1点減少。"], - [35, "覚悟を決めて/クライマックス\nこの演目が最終演目の場合、判定の達成値が4点上昇する。"], - [36, "最高の力を/最弱脱ぎ捨て\nこの演目の間、スペシャル値が1点減少。"], - [44, "自我(エゴ)/瞬間(とき)\nこの演目の間、判定に失敗しても、判定のサイコロを一度だけ振り直すことができる。"], - [45, "(台詞)/(ギターソロ)\nこの演目の間、スペシャル値が1点減少。"], - [46, "Let's/try\nこの演目の間、判定の達成値が1点上昇する。"], - [55, "起死回生/負けたりしない\nPC全員の【メンタル】が1D6点上昇する。"], - [56, "共鳴していく/想いを束ねて\nこの演目の間、シンフォニーするたびに、【パフォーマンス値】が2点上昇する。"], - [66, "運命(デスティニー)/正義(ジャスティス)\nこの演目の間、スペシャル値が1点減少。"], - ] - return textFromD66Table(title, table) - - when /^IT(\d+)?$/ - counts = (Regexp.last_match(1) || 1).to_i - return getItem(counts) - - when 'ACT' - title = 'アクセサリー種別決定表' - table = [ - "頭アクセサリー表を使用する。", - "帽子アクセサリー表を使用する。", - "胴アクセサリー表を使用する。", - "腕アクセサリー表を使用する。", - "足アクセサリー表を使用する。", - "その他アクセサリー表を使用する。", - ] - text = textFrom1D6Table(title, table) - - title = '頭アクセサリー表' - if text.include?(title) - table = [ - [11, "アイマスク"], - [12, "うさみみ"], - [13, "ねこみみ"], - [14, "サングラス"], - [15, "ピアス"], - [16, "シュシュ"], - [22, "仮面"], - [23, "ティアラ"], - [24, "エクステ"], - [25, "バンダナ"], - [26, "ヘアバンド"], - [33, "インカム"], - [34, "イヤリング"], - [35, "ホワイトプリム"], - [36, "ゴーグル"], - [44, "つけひげ"], - [45, "ヘッドホン"], - [46, "耳あて"], - [55, "トナカイの角"], - [56, "花飾り"], - [66, "かんざし"], - ] - return text + "\n" + textFromD66Table(title, table) - end - - title = '帽子アクセサリー表' - if text.include?(title) - table = [ - [11, "ヘルメット"], - [12, "麦わら帽子"], - [13, "サンタ帽子"], - [14, "花冠"], - [15, "学帽"], - [16, "ハンチング帽"], - [22, "シルクハット"], - [23, "テンガロンハット"], - [24, "ナイトキャップ"], - [25, "ロシア帽"], - [26, "ベレー帽"], - [33, "コック帽"], - [34, "パーティコーン"], - [35, "とんがり帽子"], - [36, "キャップ"], - [44, "ナースキャップ"], - [45, "カンカン帽"], - [46, "ハット帽"], - [55, "ターバン"], - [56, "セーラーキャップ"], - [66, "中共帽子"], - ] - return text + "\n" + textFromD66Table(title, table) - end - - title = '胴アクセサリー表' - if text.include?(title) - table = [ - [11, "首かけ指輪"], - [12, "カウベル"], - [13, "ネックレス"], - [14, "蝶ネクタイ"], - [15, "メガホン"], - [16, "ペンダント"], - [22, "ブローチ"], - [23, "金の首輪"], - [24, "チョーカー"], - [25, "南京錠"], - [26, "タスキ"], - [33, "エプロン"], - [34, "名札"], - [35, "階級章"], - [36, "胸当て"], - [44, "ベルト"], - [45, "ポシェット"], - [46, "マフラー"], - [55, "首かけカメラ"], - [56, "リボン"], - [66, "肩パット"], - ] - return text + "\n" + textFromD66Table(title, table) - end - - title = '腕アクセサリー表' - if text.include?(title) - table = [ - [11, "動物の手"], - [12, "宝石の腕輪"], - [13, "動物のマペット"], - [14, "グローブ"], - [15, "指ぬきグローブ"], - [16, "リストバンド"], - [22, "鍋掴み"], - [23, "手袋"], - [24, "長手袋"], - [25, "腕章"], - [26, "腕時計"], - [33, "ドリル"], - [34, "楽器"], - [35, "マフ"], - [36, "カフス"], - [44, "ボクシンググローブ"], - [45, "シルバーアクセサリー"], - [46, "ゴールドアクセサリー"], - [55, "ぬいぐるみ"], - [56, "ミサンガ"], - [66, "手甲"], - ] - return text + "\n" + textFromD66Table(title, table) - end - - title = '足アクセサリー表' - if text.include?(title) - table = [ - [11, "革靴"], - [12, "ブーツ"], - [13, "スポーツシューズ"], - [14, "スキー靴"], - [15, "アンクル"], - [16, "バスケットシューズ"], - [22, "スリッパ"], - [23, "ミサンガ"], - [24, "動物の足"], - [25, "作業靴"], - [26, "ルーズウォーマー"], - [33, "ニーパッド"], - [34, "ガーターリング"], - [35, "ポーチ"], - [36, "ローラースケート"], - [44, "へんなタイツ"], - [45, "白タイツ"], - [46, "網タイツ"], - [55, "ガラスの靴"], - [56, "グリープ"], - [66, "ベル"], - ] - return text + "\n" + textFromD66Table(title, table) - end - - title = 'その他アクセサリー表' - if text.include?(title) - table = [ - [11, "ボンボン"], - [12, "マント"], - [13, "蝶の羽"], - [14, "天使の羽"], - [15, "悪魔の羽"], - [16, "猫のしっぽ"], - [22, "トレンチコート"], - [23, "ばんそうこう"], - [24, "パラソル"], - [25, "ステッキ"], - [26, "タトゥーシール"], - [33, "バーコード"], - [34, "バレーボール"], - [35, "大きなリボン"], - [36, "鎖"], - [44, "キャラクターグッズ"], - [45, "イメージカラーのネイル"], - [46, "メガネ"], - [55, "旗"], - [56, "ジャケット"], - [66, "サスペンダー"], - ] - return text + "\n" + textFromD66Table(title, table) - end - return text - - when 'ACB' - title = 'アクセサリーブランド決定表' - table = [ - "『チャレンジガールズ』の衣装ブランドからランダムに決定する。", - "『チャレンジガールズ』の衣装ブランドからランダムに決定する。", - "『ロードトゥプリンス』の衣装ブランドからランダムに決定する。", - "『ロードトゥプリンス』の衣装ブランドからランダムに決定する。", - "『フォーチュンスターズ』の衣装ブランドからランダムに決定する。", - "『フォーチュンスターズ』の衣装ブランドからランダムに決定する。", - ] - text = textFrom1D6Table(title, table) - /『(.+)』/ =~ text - bookTitle = Regexp.last_match(1) - return text + "\n" + costume('衣装(' + bookTitle + ')', true) - - when 'ACE' - title = 'アクセサリー効果表' - table = [ - [11, "好きな能力値が1点高いものとして扱う。"], - [12, "【ボイス】が1点高いものとして扱う。"], - [13, "【フィジカル】が1点高いものとして扱う。"], - [14, "【ビジュアル】が1点高いものとして扱う。"], - [15, "このアクセサリーを装備したとき、【メンタル】が5点上昇する。この効果は、1回のセッションに1度まで使用できる。"], - [16, "【パフォーマンス値】が2点上昇する。"], - [22, "このアクセサリーを装備したとき、「アイドルスキル修得表」を使って、ランダムにアイドルスキルを1つ修得する。リザルトフェイズにそのアイドルスキルは失われる。この効果は、1回のセッションに1度まで使用できる。"], - [23, "開幕演目と最終演目で行う判定の達成値が2点上昇する。"], - [24, "【協調値】が1点上昇する。"], - [25, "アイドルスキルの効果が1点上昇する。"], - [26, "意地判定の達成値が3点上昇する。"], - [33, "特殊な演目によって上昇する【獲得ファン人数】が3点上昇する。"], - [34, "一芸突破を行ったとき、判定の達成値が2点上昇する。"], - [35, "このアクセサリーを装備したとき、好きな特技を1つ選ぶ。選んだ特技は、ライブフェイズの間、修得しているものとして扱う。この効果は、1回のセッションに1度まで使用できる。"], - [36, "幕間での判定の達成値が2点上昇する。"], - [44, "思い出を使用したとき、【メンタル】が3点上昇する。"], - [45, "ミラクルが発生したときの【パフォーマンス値】が15点になる。"], - [46, "アイドルスキルを使用したときの判定の達成値が2点上昇する。"], - [55, "特別な演目を行っても、【メンタル】が減少しない。"], - [56, "最終演目での【メンタル】減少が半分(端数切り捨て)になる。"], - [66, "スペシャルが発生したとき、【メンタル】が10点上昇する。"], - ] - return textFromD66Table(title, table) - - when 'DT' - return costume('衣装(チャレンジガールズ)') - - when 'RC' - return costume('衣装(ロードトゥプリンス)') - - when 'FC' - return costume('衣装(フォーチュンスターズ)') - - when 'CBT' - title = 'キャラ空白表(チャレンジガールズ)' - table = [ - [11, '変わった言葉遣い'], - [12, '口ぐせ'], - [13, '動物っぽい'], - [14, '和風'], - [15, 'お調子者'], - [16, '計算高い'], - [22, '妹/姉キャラ'], - [23, 'ポジティブ!'], - [24, 'ネガティブ……'], - [25, 'やんちゃ'], - [26, '年齢'], - [33, 'きぐるみ'], - [34, '負けず嫌い'], - [35, '努力家'], - [36, '語りたがり'], - [44, '天然'], - [45, '物まね'], - [46, '特徴なし'], - [55, '直感'], - [56, 'ピアノ'], - [66, '大切な人'], - ] - return textFromD66Table(title, table) - - when 'RCB' - title = 'キャラ空白表(ロードトゥプリンス)' - table = [ - [11, '悩み多し'], - [12, '俺様'], - [13, '弟系'], - [14, 'がんばり屋'], - [15, '物静か'], - [16, '不器用'], - [22, '二重人格'], - [23, 'ラッキーボーイ'], - [24, '愛され系'], - [25, '小悪魔'], - [26, 'のほほん'], - [33, '静かな狂気'], - [34, '肉体派'], - [35, 'ポエマー'], - [36, 'おせっかい'], - [44, '恋愛好き'], - [45, 'おかん'], - [46, '批評家'], - [55, '孤高'], - [56, '兄貴分'], - [66, '女嫌い'], - ] - return textFromD66Table(title, table) - - when 'HBT' - title = '趣味空白表(チャレンジガールズ)' - table = [ - [11, '無趣味'], - [12, 'ティータイム'], - [13, '詩'], - [14, '資格修得'], - [15, 'イラスト'], - [16, 'ぬいぐるみ'], - [22, '睡眠'], - [23, '長電話'], - [24, 'メール'], - [25, '昆虫採集'], - [26, '編み物'], - [33, '食事'], - [34, '散歩'], - [35, '天体観測'], - [36, 'カフェ巡り'], - [44, 'お風呂'], - [45, '小物コレクション'], - [46, 'ガーデニング'], - [55, '登山'], - [56, '歴史マニア'], - [66, '家事'], - ] - return textFromD66Table(title, table) - - when 'RHB' - title = '趣味空白表(ロードトゥプリンス)' - table = [ - [11, '鉄道'], - [12, '華道'], - [13, '旅行'], - [14, '日曜大工'], - [15, '習字'], - [16, '俳句'], - [22, '食べ歩き'], - [23, '筋トレ'], - [24, '工作'], - [25, '資格修得'], - [26, '釣り'], - [33, '街歩き'], - [34, 'ファッション'], - [35, '飼育'], - [36, 'いたずら'], - [44, '街でナンパ'], - [45, '読書'], - [46, '家事全般'], - [55, '昆虫採集'], - [56, 'アート'], - [66, '睡眠'], - ] - return textFromD66Table(title, table) - - when 'RU' - title = 'マスコット暴走表' - table = [ - "激しいアクションで興味を持った人たちを呼び寄せる。\nPC全員の【獲得ファン人数】が5点上昇する。", - "マスコットキャラクターから聞こえてはいけない音が聞こえてきて、次の瞬間には動かなくなってしまった。\nこのセッションの間、マスコットキャラクターが使用できなくなる。", - "マスコットキャラクターが行方不明! プロデューサーが代わりに着ぐるみを着たけれども、負担が大きかった。\n変調「怪我」が発生する。", - "マスコットキャラクターが不適切な発言をしてしまい、連帯責任で謝罪することになってしまう。\nPC全員の【獲得ファン人数】が、それぞれ5点減少する。", - "マスコットキャラクターが転んで起き上がれなくなってしまった! みんなで力を合わせて助け起こそう。\nPC全員の【メンタル】が3点減少する。", - "マスコットが突然PCに物申す。問題点を挙げて、鍛えてくれる。\nPC一人は、「アイドルスキル修得表」を使って、アイドルスキルを一つ修得する。", - ] - return textFrom1D6Table(title, table) - - when /^(\d{2})C$/ - title = 'バーストタイム' - degrees = Regexp.last_match(1).to_i - counts = 6 - if (degrees < 45) || (degrees > 55) - return nil - elsif degrees <= 49 - counts = 3 - elsif degrees <= 52 - counts = 4 - elsif degrees <= 54 - counts = 5 - end - - total, dice = roll(counts, 6, 1) - total += degrees - - text = "#{title} > #{degrees}+[#{dice}] > #{total} > " - if total >= 80 - text += "Burst!\n「バースト表」を使用する。" - elsif total >= 65 - string = "成功\n【獲得ファン人数】が2D6点上昇する。" - if total >= 75 - string = "大#{string}\nPC全員が挑戦者ではない場合、自分以外のPCを一人指名する。指名されたPCは、新たな挑戦者として、【メンタル】を減少させずに「バーストタイム」を行う。" - end - text += string - else - text += '失敗' - end - return text - - when 'BU' - title = 'バースト表' - table = [ - "熱い! 熱い!\n【メンタル】が2点減少する。", - "慌てて浴槽から出ようとしたが、足を滑らせて浴槽に落ちる。ウケたはいいが、とても熱い。\n【メンタル】が1D6点減少し、【獲得ファン人数】が3D6点上昇する。", - "温かい目で見守っていた仲間の手を力いっぱい引っ張り、浴槽に引きずり込む。\n自分以外のPCを一人選ぶ。選ばれたPCは、【メンタル】を3点減少させ、「バーストタイム」を行う。", - "あまりの熱さに浴槽へ入り損ねていたら、仲間の一人に叩き落とされる。\n【メンタル】を2点減少してから、PCを一人選ぶ。選んだPCに対する【理解度】が3点上昇し、チェックを外す。", - "思い切って氷を頭から浴びる。クールダウン完了!\n【メンタル】を2点減少させることで、もう一度「バーストタイム」を行うことができる。", - "熱湯風呂に入るための着替えに手間取ってしまい、急かされてしまう。結果、満足に着替えができなかった。\nこのライブフェイズの間、衣装の効果が無効化される。", - ] - return textFrom1D6Table(title, table) - - when /^(\d+)(S?)A([1-6]*)([\+\-]\d+)?$/ - title = '攻撃' - counts = Regexp.last_match(1).to_i - return nil if counts <= 0 - - sure = !Regexp.last_match(2).empty? - remove = Regexp.last_match(3) - adjust = Regexp.last_match(4) - adjust ||= '' - - result = roll(counts, 6, 1) - dice = result[1].split(",") - remove.split("") - - text = "#{title} > [" + result[1] + "]#{adjust} > " - - unless (dice.count == counts) || dice.empty? - text += '[' + dice.join(",") + "]#{adjust} > " - end - - if sure || (dice.count == dice.uniq.count) - total = adjust.to_i - total += dice.map(&:to_i).inject(:+) unless dice.empty? - total = 0 if total < 0 - text += "#{total}ダメージ" - else - text += '失敗' - end - return text - - when 'SIP' - title = 'かんたんパーソン表' - table = [ - 'テレビ番組に出て、ライブの宣伝をする。', - 'ラジオに出演して、ライブの宣伝をする。', - '動画を配信して、ライブの宣伝をする。', - 'ライブの宣伝のために、街でビラ配りをする。', - 'ライブに人を集めるために、派手なパフォーマンスを街中でする。', - 'ライブの宣伝のために、あちこちを走り回る。', - ] - return textFrom1D6Table(title, table) - - when 'BVT' - title = '大手芸能プロダクション会場表' - table = [ - '自社内テレビスタジオ', - '自社内ライブステージ', - '自社番組', - 'イベント会場', - 'ショッピングセンター', - '自社主催フェス', - ] - return textFrom1D6Table(title, table) - - when 'LVT' - title = '弱小芸能プロダクション会場表' - table = [ - '地方のお祭り', - 'CDショップ前', - '小劇場', - '音楽番組', - 'ローカルテレビ', - '芸能関係社共同開催フェス', - ] - return textFrom1D6Table(title, table) - - when 'TVT' - title = 'ライブシアター会場表' - table = [ - 'ライブシアター', - 'ライブシアター', - 'ライブシアター', - 'ライブシアター', - 'ライブシアター', - 'ライブシアター', - ] - return textFrom1D6Table(title, table) - - when 'CVT' - title = 'アイドル部会場表' - table = [ - '運動場', - '体育館', - '屋上', - '街中', - '地元のイベント', - '学園アイドル大会', - ] - return textFrom1D6Table(title, table) - - when 'BST' - title = '大手芸能プロダクション場所表' - table = [ - '社内プロジェクトルーム', - '社内カフェ', - '社内プール', - '社内レッスンルーム', - 'ショッピングセンター', - '社内エステルーム', - ] - return textFrom1D6Table(title, table) - - when 'LST' - title = '弱小芸能プロダクション場所表' - table = [ - '給湯室', - '客間', - '居間', - '屋上', - '社長室', - '近所の公演', - ] - return textFrom1D6Table(title, table) - - when 'TST' - title = 'ライブシアター場所表' - table = [ - '私たちの舞台', - '控室', - '売店', - 'シアター前', - 'レッスンルーム', - '舞台袖', - ] - return textFrom1D6Table(title, table) - - when 'CST' - title = 'アイドル部場所表' - table = [ - '部室', - '音楽室', - '教室', - '屋上', - '運動場', - '体育館', - ] - return textFrom1D6Table(title, table) - - when 'BPT' - title = '大手芸能プロダクションプレッシャー種別決定表' - table = [ - '先輩アイドルたちの期待', - '後輩アイドルたちからの憧れ', - '社長の視察', - '同期アイドルたちとの競い合い', - '大物ゲスト登場', - 'TV番組のプロデューサー', - ] - return textFrom1D6Table(title, table) - - when 'LPT' - title = '弱小芸能プロダクションプレッシャー種別決定表' - table = [ - '熱心にライブに来てくれるファン', - 'とても悪い条件でのステージ', - '大手プロダクションの視察', - 'ドレスデザイナーの品定め', - '新曲を提供したミュージシャン', - '取材に来た芸能記者', - ] - return textFrom1D6Table(title, table) - - when 'TPT' - title = 'ライブシアタープレッシャー種別決定表' - table = [ - 'ライブシアターに毎日来てくれるファン', - 'ライブシアターで働くスタッフ', - 'シアター経営者の視察', - 'シアターに偶然立ち寄った大勢の観客', - '並行して行われるイベントのファン', - 'ライバルライブシアターのアイドルユニット', - ] - return textFrom1D6Table(title, table) - - when 'CPT' - title = 'アイドル部プレッシャー種別決定表' - table = [ - 'ライバルチーム「海原校」の挑戦', - "最強チーム「Tiara's」の偵察", - 'PTAの視察', - 'PCの親', - '仲の良い同級生', - 'ライバルチーム「聖国際女学園」の挑戦', - ] - return textFrom1D6Table(title, table) - - when 'BIT' - title = '大手芸能プロダクション道具表' - table = [ - '栄養ドリンク', - '自動販売機', - '先輩アイドルのポスター', - '先輩アイドルのCD', - 'アイドル雑誌', - '台本', - ] - return textFrom1D6Table(title, table) - - when 'LIT' - title = '弱小芸能プロダクション道具表' - table = [ - 'セロハンテープ', - '冷蔵庫', - '百円玉', - 'ボロボロのソファー', - 'おにぎり', - 'キッチン', - ] - return textFrom1D6Table(title, table) - - when 'TIT' - title = 'ライブシアター道具表' - table = [ - '舞台の照明', - '企画書', - 'PCのグッズ', - 'ホワイトボード', - 'ライブポスター', - 'うどん', - ] - return textFrom1D6Table(title, table) - - when 'CIT' - title = 'アイドル部道具表' - table = [ - 'パソコン', - '机', - '鞄', - 'ハンディカメラ', - 'ジャージ', - '投票箱', - ] - return textFrom1D6Table(title, table) - end - - return nil - end - - def rollPerformance(counts, residual, adjust) - title = 'パフォーマンス' - - string = '' - string += '+' if adjust > 0 - string += adjust.to_s unless adjust == 0 - - result = roll(counts, 6, 1) - diceAll = result[1].delete(",") + residual - - total = 0 - diceUse = [] - (1..7).each do |i| - if diceAll.count(i.to_s) == 1 - total += i - diceUse.push(i) - end - end - - text = " > [" + result[1] + ']' - - if residual.empty? - text = "#{title}#{text}" - else - text = "シンフォニー#{text}" - end - - unless residual.empty? - text += ',[' + residual.split("").sort.join(",") + ']' - end - - text += "#{string} > " - - if total == 0 - if residual.empty? - total = 10 + adjust - text += "【ミラクル】#{total}" - else - total = 15 + adjust - text += "【ミラクルシンクロ】#{total}+シンフォニーを行った人数" - end - elsif (total == 21) && !diceUse.include?(7) - unless residual.empty? - text += '[' + diceUse.join(',') + "]#{string} > " - end - total = 30 + adjust - text += "【パーフェクトミラクル】#{total}" - else - unless residual.empty? && (diceUse.count == diceAll.length) - text += '[' + diceUse.join(',') + "]#{string} > " - end - total += adjust - text += total.to_s - end - - return text - end - - def textFromD66Table(title, table, chance = '') - isSwap = true - dice = getD66(isSwap) - number, text, skill = table.assoc(dice) - - text, skill = checkChance(text, skill, chance) - return "#{title} > [#{number}] > " + replaceBadStatus(text) + getSkillText(skill) - end - - def checkChance(text, skill, chance) - return text, skill if chance.empty? - return text, skill unless /チャンスが(\d{1,2})以下ならオフ。/ === text - - target = Regexp.last_match(1).to_i - matchedText = $& - - if target >= chance.to_i - text = "オフ" - skill = '' - else - text = text.gsub(matchedText, '') - text = text.chomp - end - - return text, skill - end - - def textFrom1D6Table(title, table1, table2 = nil) - text1, number1 = get_table_by_1d6(table1) - - text = "#{title} > " - if table2.nil? - text += "[#{number1}] > #{text1}" - else - text2, number2 = get_table_by_1d6(table2) - text += "[#{number1},#{number2}] > #{text1}#{text2}" - end - - if /ランダムに決定した特技が指定特技のアイドルスキル\(身長分野、(属性|才能)分野、出身分野が出たら振り直し\)$/ =~ text - category = Regexp.last_match(1) - loop do - skill = getSkillList() - text += "\n#{skill}" - break unless skill.include?("身長") || skill.include?(category) || skill.include?("出身") - - text += " > 振り直し" - end - end - - return replaceBadStatus(text) - end - - def getSkillList(field = 0) - title = '特技リスト' - table = [ - ['身長', ['~125', '131', '136', '141', '146', '156', '166', '171', '176', '180', '190~']], - ['属性', ['エスニック', 'ダーク', 'セクシー', 'フェミニン', 'キュート', 'プレーン', 'パッション', 'ポップ', 'バーニング', 'クール', 'スター']], - ['才能', ['異国文化', 'スタイル', '集中力', '胆力', '体力', '笑顔', '運動神経', '気配り', '学力', 'セレブ', '演技力']], - ['キャラ', ['中二病', 'ミステリアス', 'マイペース', '軟派', '語尾', 'キャラ分野の空白', '元気', '硬派', '物腰丁寧', 'どじ', 'ばか']], - ['趣味', ['オカルト', 'ペット', 'スポーツ', 'おしゃれ', '料理', '趣味分野の空白', 'ショッピング', 'ダンス', 'ゲーム', '音楽', 'アイドル']], - ['出身', ['沖縄', '九州地方', '四国地方', '中国地方', '近畿地方', '中部地方', '関東地方', '北陸地方', '東北地方', '北海道', '海外']], - ] - - number1 = 0 - if field == 0 - table, number1 = get_table_by_1d6(table) - else - table = table[field - 1] - end - - fieldName, table = table - skill, number2 = get_table_by_2d6(table) - - text = title - if field == 0 - text += " > [#{number1},#{number2}]" - else - text += "(#{fieldName}分野) > [#{number2}]" - end - - return "#{text} > 《#{skill}/#{fieldName}#{number2}》" - end - - def badStatus(counts = 1) - title = '変調' - table = [ - "「不穏な空気」 PCの【メンタル】が減少するとき、減少する数値が1点上昇する", - "「微妙な距離感」 【理解度】が上昇しなくなる", - "「ガラスの心」 PCのファンブル値が1点上昇する", - "「怪我」 幕間のとき、プロデューサーは「回想」しか行えない", - "「信じきれない」 PC全員の【理解度】を1点低いものとして扱う", - "「すれ違い」 PCはアイテムの使用と、リザルトフェイズに「おねがい」をすることができなくなる", - ] - - return '' if counts <= 0 - - result = roll(counts, 6, 1) - numbers = result[1].split(",").uniq - - text = "#{title} > [" + result[1] + '] > ' - occurrences = numbers.count - - if occurrences > 1 - text += "以下の#{occurrences}つが発生する。\n" - end - - occurrences.times do |i| - text += table[numbers[i].to_i - 1] + "\n" - end - - return text[0, text.length - 1] - end - - def getSkillText(skill) - return '' if skill.nil? || skill.empty? - - text = skill - if /^AT([1-6]?)$/ =~ text - text = getSkillList(Regexp.last_match(1).to_i) - else - text = "特技 : #{text}" - end - - return "\n#{text}" - end - - def setArrayFromD66Table(array, name, src, table) - index = name.index(src) - return if index.nil? - - isSwap = true - dice = getD66(isSwap) - number, text, = table.assoc(dice) - array.push([index, src, text, number]) - end - - def getItem(counts = 1) - title = 'アイテム' - table = [ - "スタミナドリンク", - "トレーニングウェア", - "ドリーミングシューズ", - "キャラアイテム", - "お菓子", - "差し入れ", - ] - - return '' if counts <= 0 - - result = roll(counts, 6, 1) - numbers = result[1].split(",") - unique = numbers.uniq - - text = "#{title} > [" + result[1] + '] > ' - acquisitions = numbers.count - kinds = unique.count - - kinds.times do |i| - string = table[unique[i].to_i - 1] - unless kinds == 1 - string = "「#{string}」" - end - - text += string - unless acquisitions == kinds - text += numbers.count(unique[i]).to_s + 'つ' - end - text += 'と' - end - - text = text.sub(/と$/, '') - - return text - end - - def replaceBadStatus(text) - return text unless /変調がランダムに(一|二|三)つ発生する。/ =~ text - - counts = 1 - case Regexp.last_match(1) - when '二' - counts = 2 - when '三' - counts = 3 - end - - substitution = text.clone - substitution = substitution.gsub($&, '') - substitution += "\n" unless substitution.empty? || /\n$/ =~ substitution - - return substitution + badStatus(counts) - end - - def costume(title, brandOnly = false) - table = [] - if title.include?('チャレンジガールズ') - table = [ - [11, "12&88\n自分の【パフォーマンス値】が決定したとき、その値を2点上昇する。"], - [12, "Glow Up Princess\nパフォーマンスを行うとき、サイコロを追加で1つ振れる。"], - [13, "しずく\nライブフェイズ開始時に、【メンタル】が5点上昇する。"], - [14, "Pop☆Sweet\n自分の【メンタル】が上昇するとき、さらに1点上昇する。"], - [15, "Ttype\n一芸突破をしても【メンタル】が減少しない。また、一芸突破をした時、達成値が1点上昇する。"], - [16, "Vampire Story\nパフォーマンスの【パフォーマンス値】が10以上の場合、自分の【メンタル】が3点上昇する。"], - [22, "Pure Mermaid\n【ビジュアル】の演目は、指定特技を《スタイル》に変更できる。指定特技が《スタイル》の演目では、【パフォーマンス値】が2点上昇する。"], - [23, "I'm cute\nライブフェイズ開始時に【メンタル】が1点上昇する。幕間の開始時に能力値を1つ選ぶ。選ばれた能力値は、このライブフェイズの間、1点上昇する。"], - [24, "No.1 Girl\n【パフォーマンス値】が決定するとき、【メンタル】を1点減少することで、【パフォーマンス値】が3点上昇する。"], - [25, "Final Romance\n【ビジュアル】のパフォーマンスを行うとき、キャラクターを1人選ぶ。選んだキャラクターの自分に対する【理解度】と同じだけ、【パフォーマンス値】が上昇する。"], - [26, "Prism Line\nパフォーマンス1回につき、1度だけパフォーマンスに使用したサイコロ1つを振り直すことができる。"], - [33, "さーばんとさーびす\nシンフォニーを行うたびに、そのパフォーマンスの【パフォーマンス値】が3点上昇する。"], - [34, "Travel Bag\n幕間に自分の【理解度】チェック1つを外すことができる。"], - [35, "JewelC\n開幕演目と幕間にアイテムを1つ選んで獲得する。"], - [36, "Sweet Girl\nパフォーマンスを行ったPCは、【メンタル】を2点上昇する。"], - [44, "Satisfaction West\nミラクル、ミラクルシンクロ、パーフェクトミラクルが発生したとき【パフォーマンス値】を5点上昇する。"], - [45, "Under Big Ben\n使用能力が【ボイス】のパフォーマンスの【パフォーマンス値】が10以上の場合、自分に対する【理解度】チェック1つを外すことができる。"], - [46, "PIERO\n一芸突破の達成値が2点上昇する。"], - [55, "甘々娘々\n使用能力が【ビジュアル】のパフォーマンスを行うとき、【パフォーマンス値】が3点上昇する。"], - [56, "花鳥風月\nシンフォニーを行うとき、振るサイコロの数を1つ増やす、もしくは1つ減らすことができる。"], - [66, "Jingle Bells\nリザルトフェイズに以下の効果が発生する。リザルトフェイズに、【獲得ファン人数】が1D6点上昇する。また、PC全員は、条件を満たしていなくても「お願い」をすることができる。"], - ] - elsif title.include?('ロードトゥプリンス') - table = [ - [11, "Angel kiss\nパフォーマンスを行うとき、1の目が出たサイコロは取り除かれない。シンフォニーを行ったとき、1の目が出たサイコロをすべて取り除く。"], - [12, "Pirate ship\n指定特技が属性分野の演目を行うとき、その指定特技を《セクシー/属性4》に変更することができる。"], - [13, "ロードトゥプリンス\nミラクル、ミラクルシンクロ、パーフェクトミラクルが発生したとき、そのキャラクターは【メンタル】が10点上昇する。"], - [14, "Princess Guardian\n自分以外のキャラクターの【メンタル】が0点になったときに、《気配り/才能9》で判定を行うことができる。この判定には、個性特技は使用できない。成功すると、そのキャラクターは、【獲得ファン人数】が半分にならない。"], - [15, "Starlight TourS\nライブフェイズの間、演目を1つ選んで、指定特技を《スター/属性12》に変更できる。"], - [16, "花鳥風月・裏\nライブフェイズ中、一度だけ場に残っているすべてのサイコロの目を反転(1なら6に、2なら5に、3なら4に)することができる。"], - [22, "しくらま\n判定に使用したサイコロの目が7の場合、【メンタル】が7点上昇する。"], - [23, "Chime\nミラクル、ミラクルシンクロ、パーフェクトミラクルが発生したとき、そのキャラクターはランダムにアイテムを1つ獲得する。"], - [24, "砂上の光\nシンフォニーを行ったとき、シンフォニーを受けたキャラクターの【メンタル】が5点上昇する。"], - [25, "Air by me\n幕間の開始時に、【メンタル】が5点上昇する。"], - [26, "戦国ストリート\n演目の使用能力が【フィジカル】のとき、【パフォーマンス値】が2点上昇する。また、指定特技が《ダンス/趣味9》の場合、【パフォーマンス値】が2点上昇する。"], - [33, "Wild man\n一芸突破の達成値が2点上昇する。ただし、スペシャルは発生しなくなる。"], - [34, "Gray Stand\n【獲得ファン人数】が減少したとき、減少した値の半分(端数切り捨て)と同じ値だけ、【獲得ファン人数】が上昇する。"], - [35, "トイ ARM\n演目の開始時に、2D6を振る。その結果が11以上の場合、この演目では【メンタル】が減少しない。"], - [36, "white plan\nファンブルが発生しても変調を受けない。"], - [44, "SINOBI\n開幕演目を行うとき、出ないことを選択することができる。"], - [45, "V-X\nミラクルが発生したときの【パフォーマンス値】を15にできる。"], - [46, "ドラゴンナックル\n幕間より後、PCが行うパフォーマンスの【パフォーマンス値】が4点上昇する。"], - [55, "Halloween Magic\n後半PPによって【メンタル】が減少するとき、その値を4点減少する(最低0)。"], - [56, "Satisfaction East\n【獲得ファン人数】が減少したとき、【メンタル】を20点にすることができる。"], - [66, "Devil kiss\nパフォーマンスを行うとき、6の目が出たサイコロは取り除かれない。シンフォニーを行ったとき、6の目が出たサイコロをすべて取り除く。"], - ] - elsif title.include?('フォーチュンスターズ') - table = [ - [11, "常峰製作所\n第一演目では、【メンタル】が減少しない。"], - [12, "フォーチュンスター\n最終演目の【パフォーマンス値】が「【メンタル】÷2(端数切り捨て)」点上昇する。"], - [13, "ファイタースケイル\n【メンタル】が5点以下の場合、【パフォーマンス値】が1D6点上昇する。"], - [14, "Blood Scissors\n自分以外のキャラクター一人の【メンタル】を5点減少するか、プロデューサーに変調「怪我」を与えることで、自分の【メンタル】が5点上昇する。この効果は、プロデューサーが既に「怪我」の変調を受けていると、使用できない。"], - [15, "蒸気式演技服\n判定を行うとき、【メンタル】を1点消費することで、判定の達成値が1点上昇する。"], - [16, "ウェイトスター\n「スタミナドリンク」によって、他のキャラクターの【メンタル】を上昇する場合、さらに4点上昇する。"], - [22, "Little Stage\n判定のサイコロやパフォーマンスで「1」の出目が1つ以上出た場合、【思い出】を1つ獲得する。"], - [23, "Check It\n開幕演目前に、最終演目以外の好きな演目を指定する。指定された演目では、自分の【メンタル】が減少しない。"], - [24, "12 Sword\nアイドル戦闘ルールを使用しているとき、与えるダメージが3点上昇し、上昇する【獲得ファン人数】が5点上昇する。"], - [25, "Magi Magic\nパフォーマンスや自分が行うシンフォニーでサイコロを取り除くたびに、【メンタル】が2点上昇する。"], - [26, "Jokers\n最終演目に行う一芸突破の目標値が3点減少する。"], - [33, "Papillon Club\n自分以外のキャラクターがタイプが「補助」のアイドルスキルを使用するたびに、【メンタル】が3点上昇する。"], - [34, "ネイキッドチャレンジ\n開幕演目開始時に、【メンタル】が5点減少する。このライブフェイズの間、好きな能力値が3点上昇する。"], - [35, "Cold Vivit\n好きなギャップを1つ埋める。このギャップは、ライブフェイズ終了時に元に戻る。"], - [36, "対魔絶伏\n特別な演目では、【メンタル】が減少しない。"], - [44, "Rescue Power\n演目の判定でファンブルが発生した場合、好きな能力値でパフォーマンスを行うことができる。"], - [45, "アニマルエンジン\n幕間の終了時に、好きな動物からの【理解度】が2点上昇する。"], - [46, "ふわふわキッチン\n好きなときに、「お菓子」を一つ消費することで、好きなキャラクターの【メンタル】が1D6点上昇できる。また、幕間に「お菓子」を1つ獲得する。"], - [55, "Night Talk\n幕間で「信用」を行ったとき、上昇する【メンタル】が10点になる。"], - [56, "ティーチングタイム\n自分以外のキャラクターを1人指定する。このライブフェイズの間、指定されたPCの能力値が1点上昇する。"], - [66, "See Diver\n演目名に「海」「水」「泡」「湖」「風呂」を含む演目を行った場合、【獲得ファン人数】が1D6点上昇する。"], - ] - else - return nil - end - - text = textFromD66Table(title, table) - text = text.split("\n").first if brandOnly - return text - end -end diff --git a/src/src_bcdice/diceBot/BeginningIdol_Korean.rb b/src/src_bcdice/diceBot/BeginningIdol_Korean.rb deleted file mode 100644 index 0c53f46dd..000000000 --- a/src/src_bcdice/diceBot/BeginningIdol_Korean.rb +++ /dev/null @@ -1,2372 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class BeginningIdol_Korean < DiceBot - # ゲームシステムの識別子 - ID = 'BeginningIdol:Korean' - - # ゲームシステム名 - NAME = '비기닝 아이돌' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Korean:비기닝 아이돌' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - " > ファンブル(変調がランダムに1つ発生し、PCは【思い出】を1つ獲得する)" - elsif dice_total >= 12 - " > 스페셜!(PC는 【추억】 1개 획득)" - elsif total >= target - " > 성공" - else - " > 실패" - end - end - - alias check_2D6 check_nD6 - - def rollDiceCommand(command) - case command.upcase - when /^([1-7]*)PD(\d+)([\+\-]\d+)?$/ - counts = Regexp.last_match(2).to_i - return nil if counts <= 0 - - residual = Regexp.last_match(1) - adjust = Regexp.last_match(3).to_i - - return rollPerformance(counts, residual, adjust) - - when 'HW' - title = '向かい風シーン表' - table = [ - "誰もいない屋内。静寂が世界を包んでいる。嵐の前の静けさだ。", - "話し声が絶えない夕暮れの帰り道。みんなが明るい声を上げる中、自分の周りだけがぽっかり穴が空いたかのように静かだ。", - "曇り空になってきた。早く屋内に行かないと、雨でぬれてしまうかもしれない。", - "ゲリラ豪雨だ。傘も持ってきていないので、激しい雨に打たれるしかない。ついてないな。", - "夜空を雲が覆いつくしてしまっている。空を見上げても、星の輝きは見えない。", - "屋内の電気がトラブルで点灯しないようだ。暗い世界は、気分まで滅入ってしまう。", - ] - return textFrom1D6Table(title, table) - - when 'BWT' - title = '대형 예능 프로덕션 업무표' - table = [ - [11, "오프", ''], - [12, "선배 아이돌이 사회를 맡는 버라이어티 프로그램에 출연! 어떤 코너를 맡는지?", '趣味分野からランダム'], - [13, "선배 아이돌과 로드 워킹 프로그램에서 공동 출연. 이 거리에는 무엇이 있는지?", '出身分野からランダム'], - [14, "선배 아이돌이 음악 프로그램에 출연. 백 댄서를 맡게 되었다", '《댄스/취미9》'], - [15, "선배 아이돌과 함께 그라비아 촬영. 지지 않게 눈에 띄자.", '《마이페이스/캐릭터4》'], - [16, "아이돌 소개 프로그램에서 선배 아이돌에게 소개된다. 기운차게 임하자", '《건강/캐릭터8》'], - [22, "오프", ''], - [23, "선배 아이돌의 라디오 프로그램에 게스트로 출연. 토크로 잘 북돋을 수 있을까?", '《캐릭터 분야 공백/캐릭터7》'], - [24, "동기 아이돌들과 함께, 대대적인 에스테틱 세트에 도전!", '《운동신경/재능8》'], - [25, "특별한 의상으로 실시하는 연극의 일이 왔다. 어떤 의상일까?", 'パートナープレイヤーが修得しているキャラ分野の特技'], - [26, "프로덕션의 초대형 중진이 출연하는 프로그램에 불린다.", '《담력/재능5》'], - [33, "오프", ''], - [34, "씬 플레이어의 캐릭터를 살린 미니 드라마가 제작된다.", '씬 플레이어가 보유한 캐릭터분야의특기'], - [35, "해외 로케를 하는 프로덕션 내 여행 프로그램 출연. 오늘은 어디까지 갈 건가?", '《해외/출신12》'], - [36, "프로덕션 내 극장에서 씬 플레이어가 「좋아하는 것」을 사용한 연극이 시작된다.", '씬 플레이어가 보유한 취미분야의특기'], - [44, "오프", ''], - [45, "패션 브랜드와 제휴한 패션쇼에 초대된다.", '《멋내기/취미5》'], - [46, "아이돌 잡지 출판사로부터 취재가 왔다. 잘 대응해야.", '《언행정중/캐릭터10》'], - [55, "오프", ''], - [56, "시리즈 드라마에 단역으로 출연!", '《연기력/재능12》'], - [66, "プロダクション内で総選挙が開始! 今回のテーマは……?", 'ランダム'], - ] - return textFromD66Table(title, table) - - when 'LWT' - title = '약소 예능 프로덕션 업무표' - table = [ - [11, "오프", ''], - [12, "파트너 플레이어의 「신체적 특징」에 느낌이 확 온 TV방송국으로부터 섭외가 온다.", '파트너 플레이어가 보유한 신장분야의특기'], - [13, "스턴트맨이 없는 액션 드라마가 제작 개시! 오디션을 받자.", '《운동신경/재능8》'], - [14, "가요 프로그램 오디션에 도전! 많은 라이벌 중에 선택되는 것을 목표로 한다!", '《집중력/캐릭터4》'], - [15, "선술집 영업. 아이돌에 별로 흥미 없을 것 같은 손님 층이지만…….", '《마이페이스/캐릭터4》'], - [16, "결혼식의 팜플렛 사진을 찍는 촬영. 신부는 어떤 기분일까?", '《스타일/재능3》'], - [22, "오프", ''], - [23, "CD 데뷔를 걸고 버라이어티 프로그램에서 다른 아이돌과 대결!", 'キャラ分野からランダム'], - [24, "CD숍에서, CD를 손수 판매. 잘 부탁 드립니다.", '《건강/캐릭터8》'], - [25, "로컬 프로그램에 출연. 이 지방에서는 무엇이 유행하고 있지?", '《プレーン/属性7》'], - [26, "극 조역을 차지하기 위해 오디션을 받는다. 평범한 한 명의 여자아이를 연기하는 것 같다.", '《플레인/속성7》'], - [33, "오프", ''], - [34, "파트너 플레이어의 「좋아하는 것」이 소재인 드라마가 제작 중. 오디션을 받자.", '파트너 플레이어가 보유한 속성분야의특기'], - [35, "파트너 플레이어의 「싫은 것」을 소재로 한 드라마에 섭외가…….", '파트너 플레이어가 보유한 취미분야의특기'], - [36, "코러스에서 결원이 나온 아이돌 라이브의 보충으로서 선택된다. 주역에게 맞추지 않으면.", '属性分野からランダム'], - [44, "오프", ''], - [45, "PC들의 사무소에 리포트 카메라가 들어간다. 작은 곳이지만 힘내고 있습니다!", 'ランダム'], - [46, "오프", ''], - [55, "오프", ''], - [56, "오프", ''], - [66, "오프", ''], - ] - return textFromD66Table(title, table) - - when 'TWT' - title = '라이브 시어터 업무표' - table = [ - [11, "오프", ''], - [12, "시어터 내 드라마를 수록. 테마는 파트너 플레이어의 「좋아하는 것」이다.", '파트너 플레이어가 보유한 속성분야의특기'], - [13, "시어터 내 판매용 CD를 제작. 테마는 씬 플레이어의 「좋아하는 것」이다.。", '씬 플레이어가 보유한 취미분야의특기'], - [14, "시어터의 매점에 끌려간다. 직접 손님과 접촉하는 찬스!", '《미소/재능7》'], - [15, "시어터 내에서 상품을 판매. 지금의 판매되는 유행은 무엇이지?", 'キャラ分野からランダム'], - [16, "시어터 내에서 악수회를 개최! 와준 모두에게 감사를.", '《배려/재능9》'], - [22, "오프", ''], - [23, "이번 극은 씬 플레이어의 【배경】을 바탕으로 한 논픽션 드라마!", '趣味分野からランダム'], - [24, "시어터를 이용한 버라이어티 기획이 개시되었다. 모두를 웃기자.", '《바보/캐릭터12》'], - [25, "시어터에 흐르는 미니 라디오를 수록. 맴버의 엉뚱함 다루는 코너가 볼거리", 'キャラ分野からランダム'], - [26, "시어터에 패션 디자이너를 불러 패션쇼. 잘 매료시켜 나가자.。", '属性分野からランダム'], - [33, "오프", ''], - [34, "시어터 기획, 1D6시간 집중 댄스가 시작된다…….", '《체력/재능6》'], - [35, "시어터 기획, 파트너 플레이어는 「싫은 것」에 몇 번이나 도전할 수 있을까!", '파트너 플레이어가 보유한 취미분야의특기'], - [36, "시어터 기획, 씬 플레이어 vs 「싫은 것」!", '씬 플레이어가 보유한 캐릭터분야의특기'], - [44, "오프", ''], - [45, "시어터 기획, 매우 높은 골을 위해 패스! …… 정말로 할 수 있는 거야?", '《190~/신장12》'], - [46, "시어터 기획, 동물을 대하는 아이돌의 모습을 중계!", '《펫/취미3》'], - [55, "오프", ''], - [56, "극장 밖에서 실시하는 일을 해낸다.", 'ランダム'], - [66, "오프", ''], - ] - return textFromD66Table(title, table) - - when 'CWT' - title = '아이돌 부 업무표' - table = [ - [11, "오프", ''], - [12, "선생님에게 부탁 받고 입학 희망자들의 교내 안내를 맡게 되었다.", '《언행정중/캐릭터10》'], - [13, "교내 이벤트의 사회 진행을 하게 되었다. 잘 분위기를 북돋울 수 있을까?", '《팝/속성9》'], - [14, "교내 방송에 출연. 전교생 앞에서 긴장하지 하지 않으려면.。", '《담력/재능5》'], - [15, "동아리 대회에 응원을 하러 간다. 긴 시합은 체력 승부다.", '《체력/재능6》'], - [16, "아이돌 부를 취재하는 기자가 왔다. 스스로의 말을 잘할 수 있을까?", '《배려/재능9》'], - [22, "오프", ''], - [23, "가까운 유치원에서 노래를 선보이게 되었다. 작은 아이와 시선을 맞추지 않으면…….", '《~125/신장2》'], - [24, "메이드 카페를 하게 되었다. 파트너 플레이어의 「좋아하는 것」이 주된 메뉴다.", '파트너 플레이어가 보유한 취미분야의특기'], - [25, "교내의 이벤트를 취재하게 되었다. 거기에는 파트너 플레이어의 「싫은 것」이…….", '파트너 플레이어가 보유한 캐릭터분야의특기'], - [26, "파트너 플레이어의 「패션 특징」을 살린 교내 패션 쇼.", '파트너 플레이어가 보유한 속성분야의특기'], - [33, "오프", ''], - [34, "현지 상가에 가게의 심부름을 의뢰 받는다. 마을을 북돋워 주러 가자.", '《쇼핑/취미8》'], - [35, "현지 이벤트에 출연. 향토애를 시험 받는다!", '프로듀서가 출신분야의특기를 골라준다'], - [36, "파트너 플레이어의 「신체적 특징」에 매료된 기업으로부터 섭외가 왔다!", '《섹시/속성4》'], - [44, "오프", ''], - [45, "오프", ''], - [46, "오프", ''], - [55, "오프", ''], - [56, "오프", ''], - [66, "오프", ''], - ] - return textFromD66Table(title, table) - - when /^LO(\d{0,2})$/ - value = Regexp.last_match(1) - title = '로컬 아이돌 업무표' - table = [ - [11, "오프", ''], - [12, "오프", ''], - [13, "握手会をすることになった。遠方から自分たち目当てにやって来るお客さんも多数見える。チャンスが5以下なら오프。", '《아이돌/취미12》'], - [14, "ミニコンサートが全国放送で小さく紹介される。ちょっとだけ、外見が注目されたみたいだ。チャンスが4以下なら오프。", '《스타일/재능3》'], - [15, "地元ラジオ局で自分たちの番組が始まる。チャンスが3以下なら오프。", '《캐릭터분야의 공백/취미7》'], - [16, "地元のテレビ局にゲスト出演。うまく自分たちを紹介できるだろうか? チャンスが3以下なら오프。", '好きな출신분야의특기'], - [22, "오프", ''], - [23, "街頭でティッシュ配りの手伝いをする。미소を忘れずに、がんばろう。", '《미소/재능7》'], - [24, "地元のお手伝いの一環として、害虫退治に駆り出された。なぜ、こんなことに。", '《담력/재능5》'], - [25, "畑仕事のお手伝いをすることになった。とりあえず、体力が要求される。", '《체력/재능6》'], - [26, "ショッピングモールのお手伝いをすることになった。うまくお手伝いができれば、繁盛するかも。", '《쇼핑/취미8》'], - [33, "오프", ''], - [34, "インターネットラジオに出演。声とトークで。地域のことを伝えていこう。", '《이국문화/재능2》'], - [35, "地元のテレビ局の取材が入る。テーマは、地方でがんばっている人たちだ。", '《건강/캐릭터8》'], - [36, "デパートで風船を配るお手伝い。子どもたち相手のお仕事は、ちょっと大変です。", '《배려/재능9》'], - [44, "오프", ''], - [45, "着ぐるみを着て、市民と交流。暑くてつらい仕事だけど、大切な交流の時間です。", '《버닝/속성10》'], - [46, "観光地の物販コーナーで地元の特産品を売るお手伝い。로컬 아이돌的に、大切なお仕事。", '好きな출신분야의특기'], - [55, "오프", ''], - [56, "動画サイトのチャンネルで、自分たちの宣伝を行なうことに。世界中に発信!", '《스타/속성12》'], - [66, "오프", ''], - ] - return textFromD66Table(title, table, value) - - when 'SU' - title = '정열의 여름 업무표' - table = [ - [11, "오프", ''], - [12, "음료수 커머셜(광고). 맛있을 것 같이 마시자.", '《연기력/재능12》'], - [13, "여름의 퍼레이드의 커머셜. 이번 테마는 파트너 플레이어의 「좋아하는 것」.", '파트너 플레이어가 보유한 취미분야의특기'], - [14, "해수욕장 커머셜. 보는 사람에게 활기를 나누어 줄 수 있으면 좋겠는데.", '《팝/속성9》'], - [15, "피서지 커머셜. 시원한 곳에서 느긋하게 보냄을 전해 주도록 하자", '《마이페이스/캐릭터4》'], - [16, "벌레 퇴치 용품의 커머셜. 벌레를 향한 남자다움이 요구된다.", '《외고집/캐릭터9》'], - [22, "오프", ''], - [23, "수족관에서 활기찬 돌고래들과 쇼를 한다.", '《건강/캐릭터8》'], - [24, "소년야구 시구식을 맡는다. 야구소년들에게 부끄럽지 않은 피칭으로 매료 시키지 않으면.", '《스포츠/취미4》'], - [25, "여름 패션을 잡지로 발표하게 되었다. 이 시기의 코디는 이것!", '《멋내기/취미5》'], - [26, "프로그램에서 여름들판의 나물을 맛있게 먹을 필요성을 느낀다. 여주를 아이돌답게 먹자.", '《오키나와/출신2》'], - [33, "오프", ''], - [34, "비치 발리볼 적 아이돌과 대결이다! 여름 더위에 지치지 말자!", '《버닝/속성10》'], - [35, "비치에서 타 아이돌과 헌팅대결을 하게 되었다. 어느 쪽을 잘 해낼 수 있을까?", '《유순/캐릭터5》'], - [36, "여름의 음식 특집! 더위 방지를 위해서라도 많이 먹는 곳은 빠져야", '《요리/취미6》'], - [44, "오프", ''], - [45, "여름방학의 아이들과 접촉하는 프로그램에 불린다. 아이들 상대도 큰 일이다.", '《배려/재능9》'], - [46, "여름의 여행 프로그램. 여름에만 가능한 현지의 강점을 몇 가지 있을 것이다.", '씬 플레이어가 보유한 출신분야의특기'], - [55, "오프", ''], - [56, "여름이니까 뜨끈뜨끈한 욕실이 난처할 수 있다. 리액션을 찍고 싶은 거 같다.", '《바보/캐릭터12》'], - [66, "오프", ''], - ] - return textFromD66Table(title, table) - - when 'WI' - title = '온기의 겨울 업무표' - table = [ - [11, "오프", ''], - [12, "크리스마스 테마의 커머셜 송을 노래한다. 연인들에게 축복을!", '《패션/속성8》'], - [13, "스키장의 커머셜 무비를 찍는다. 잘 탈 수 있으면 좋겠다.", '《스포츠/취미4》'], - [14, "씁쓸한 실연을 테마로 한 커머셜 무비를 찍게 되었다. 쿨하게 가자.", '《쿨/속성11》'], - [15, "스케이트 링크의 커머셜 무비에 출연. 빙상에서 화려하게 댄스를 하자.", '《댄스/취미9》'], - [16, "아이스크림의 커머셜 무비에 출현. 추운 것을 참아라!", '《담력/재능5》'], - [22, "오프", ''], - [23, "연말 연시에 운행되는 철도 커머셜 무비에 기용된다. 깔끔한 연기가 필요하다.", '《플레인/속성7》'], - [24, "온천지의 커머셜. 온천에 필요한 것은 역시 섹시함일까?", '《섹시/속성4》'], - [25, "겨울 패션을 잡지로 소개하게 되었다. 겨울 코디는 이것으로 정한다!", '《멋내기/취미5》'], - [26, "눈치우기가 큰일임을 알린다, 도호쿠의 눈치우기를 돕는다. 이것은 중노동이다.", '《도호쿠/출신10》'], - [33, "오프", ''], - [34, "연말 버라이어티 프로그램에서, 칸사이 연예인과 콩트를 하게 되었다. 말을 맞추자.", '《킨키/출신6》'], - [35, "연말 페스티벌에 유명 아이돌 들과 공동출연 스타에게 지지 않는 박력을 내자.", '《스타/속성12》'], - [36, "겨울 홋카이도 음식을 알리기 위해서, 홋카이도로 발 빠르게 가자. 과연, 추위에 견딜 수 있는 것 인가.", '《훗카이도/출신11》'], - [44, "오프", ''], - [45, "겨울의 음식 특집. 냄비요리를 만드는 방법을 가르칩니다.", '《요리/취미6》'], - [46, "발렌타인으로 향하는 여자아이에게 어드바이스.", '《페미닌/속성5》'], - [55, "오프", ''], - [56, "겨울이니까 뜨끈뜨끈한 욕실에 찾아본다. 따뜻하다고 할까 뜨겁다!", '《바보/캐릭터12》'], - [66, "오프", ''], - ] - return textFromD66Table(title, table) - - when 'NA' - title = '대자연 업무표' - table = [ - [11, "오프", ''], - [12, "계류에서 낚시 대결! 많이 낚시하는 쪽이 승리!", '《집중력/재능4》'], - [13, "해안에서 낚시를 한다. 낚은 생선이 맛있는 쪽이 이긴다.", '《담력/재능5》'], - [14, "곤충채집에 도전. 건강하게 노는 그림을 찍고 싶다.", '《건강/캐릭터8》'], - [15, "캠프를 하자. 모두 쾌적하게 숙박을 할 수 있도록 하는 배려가 중요.", '《배려/재능9》'], - [16, "바다 헤엄의 대결. 자신의 페이스를 지키면서 싸우자.", '《마이페이스/캐릭터4》'], - [22, "오프", ''], - [23, "숲에서 헌팅 대결! 동물에게 인기 있는 쪽이 승리!", '《펫/취미3》'], - [24, "숲에서 술래잡기를 하게 되었다. 상대의 움직임을 읽으면 이길 수 있다!", '파트너 플레이어가 보유한 신장분야의특기'], - [25, "숲 속 동물과의 싸움이 시작되었다. 아니 할 수 밖에 없다.", '《운동신경/재능8》'], - [26, "오프", ''], - [33, "오프", ''], - [34, "요리할 수 있는 남자를 여기서 어필! 반합취사에 도전!", '《요리/취미6》'], - [35, "등산 대결. 빨리 오르는 것보다도 다치지 않게 조심하고 싶다.", '《체력/재능6》'], - [36, "땔감 줍기. 수수한 장면이 되어 버리므로 싫증을 나지 않게 하자!", '《캐릭터분야의 공백/캐릭터7》'], - [44, "오프", ''], - [45, "시청자들의 기뻐할 이 자리에서만의 이야기를 파트너 플레이어와 이야기 한다.", '파트너 플레이어가 보유한 캐릭터분야의특기'], - [46, "사소한 일로 파트너 플레이어와 싸움이 났다. 어느 쪽이 강한지 승부다!", '파트너 플레이어가 보유한 재능분야의특기'], - [55, "오프", ''], - [56, "드럼통 욕조를 준비하자. ……뜨겁지만!", '《버닝/속성10》'], - [66, "오프", ''], - ] - return textFromD66Table(title, table) - - when 'GA' - title = '聖デトワール女学園仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "オフ", ''], - [14, "オフ", ''], - [15, "オフ", ''], - [16, "オフ", ''], - [22, "学園が主催しているアイドル触れ合いイベントに出演。美しく振舞おう。", '《スタイル/才能3》'], - [23, "学園のアイドルたちが出ているラジオに出演。先輩たちに負けないように、がんばろう。", '《元気/キャラ8》'], - [24, "学園と提携しているブランドのファッションショーに登場。", '《おしゃれ/趣味5》'], - [25, "学園を紹介するDVDに出演。うまく魅力を紹介できるかな?", '《気配り/才能9》'], - [26, "学内オーディションに出場。勝ち抜けば、歌番組に出場できる!", '《胆力/才能5》'], - [33, "学園が制作しているアイドルドラマに吸血鬼役で出演。恐ろし気な演技、できるかな?", '《オカルト/趣味2》'], - [34, "学園が制作しているドラマに出演。演技の中で、どうやって個性を出していこうか。", 'キャラ分野からランダム'], - [35, "学園主催のミニライブに出演。たくさんの出演者の中から、どうやって目立とう。", 'キャラ分野からランダム'], - [36, "学園の先輩たちと共演するライブイベントに出演。", '《胆力/才能5》'], - [44, "学園の紹介で、おいしい芋の紹介番組に出演。北海道に出発だ!", '《北海道/出身11》'], - [45, "学内オーディションで、ポップなCMのイメージガールを決定。戦い抜こう。", '《ポップ/属性9》'], - [46, "学内のミュージカルに出演することになった。自分たちの実力を舞台の上で発揮しよう。", '《演技力/才能12》'], - [55, "市内の店舗を手伝うドキュメンタリー番組を撮ることに。お店を手伝おう。", '《物腰丁寧/キャラ10》'], - [56, "市内のスタジオで収録されている朝の情報番組に出演。朝から元気に行こう。", '《元気/キャラ8》'], - [66, "裏山を使った簡単なPV撮影! 山での撮影は体力が要求される。", '《体力/才能6》'], - ] - return textFromD66Table(title, table) - - when 'BA' - title = 'アカデミー仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "オフ", ''], - [14, "オフ", ''], - [15, "オフ", ''], - [16, "オフ", ''], - [22, "アカデミーの中でも、特に優秀な成績を収めた者を表彰する式が開催される。", '《スター/属性12》'], - [23, "アカデミー主催の音楽祭に出演。楽器を演奏して、その姿で魅せよう。", '《音楽/趣味11》'], - [24, "アカデミーが製作しているドラマに出演。脇役だけど、しっかりと存在感を出していこう。", '《演技力/才能12》'], - [25, "番組の企画で、アカデミー生のアクションを見せることになった。", '《運動神経/才能9》'], - [26, "番組の1コーナーで、アカデミー生が様々なスポーツに挑戦する必要があるらしい。がんばろう。", '《スポーツ/趣味4》'], - [33, "先輩と一緒にバラエティ番組に出演。面白いリアクションを期待される。", '《ばか/キャラ10》'], - [34, "先輩のライブでバックコーラスに参加。美しい声を添えよう。", '《音楽/趣味11》'], - [35, "先輩のライブでバックダンサーとして出演。ダイナミックな演出に負けないようにしよう。", '《ダンス/趣味9》'], - [36, "先輩が主演を務めているアニメ映画に脇役の声優として出演。光る演技を見せよう。", '《演技力/才能12》'], - [44, "同級生と一緒に、漫画作品をモデルにしたミュージカルに出演。熱い気合を求められる。", '《バーニング/属性10》'], - [45, "同級生と一緒にキャラ付けの強いビジュアル系バンドを組んで、試験のステージで発表。", 'キャラ分野からランダム'], - [46, "同級生とファッションを競い合う、セルフプロデュース試験が始まる。", '《おしゃれ/趣味5》'], - [55, "一般教養の試験が始まる。恐ろしいことに、その様子を生中継するらしい。", '《学力/才能10》'], - [56, "アイドルの歴史を使った、クイズ試験が始まる。", '《アイドル/趣味12》'], - [66, "試験のテーマは耽美。セクシーさを仲間と競い合おう。", '《セクシー/属性4》'], - ] - return textFromD66Table(title, table) - - when 'WT' - title = '업무표' - table = [ - [11, "오프", ''], - [12, "악수회가 시작된다. 아이돌로서는 중요한 순간, 집중하자.", '《아이돌/취미12》'], - [13, "파트너 플레이어의 「싫은 것」 에 대해 취재를 하게 되었다. 괜찮을까……?", '파트너 플레이어가 보유한 취미분야의특기'], - [14, "씬 플레이어의 「좋아하는 것」에 관한 프로그램 일이다! 텐션 오른다.", '씬 플레이어가 보유한 취미분야의특기'], - [15, "파트너 플레이어의 「패션 특징」을 살리는 일이 왔다. 파트너.", '파트너 플레이어가 보유한 속성분야의특기'], - [16, "클라이언트로부터 파트너 플레이어의 「개성특기」를 헤아려 보자고 제안 받는다.", '파트너 플레이어의 개성특기'], - [22, "오프", ''], - [23, "학원 드라마를 촬영! 둘의 캐릭터는 어떻게 될까?", 'キャラ分野からランダム'], - [24, "드라마 액션씬을 찍게 되었다. 콤비네이션으로 헤쳐나가자!", '身長分野からランダム'], - [25, "감동계열의 드라마에 출연. 어떤 능력이 필요하게 될까?", '才能分野からランダム'], - [26, "취미 프로그램에 출연. 이런 세계가 있는 것인가…….", '趣味分野からランダム'], - [33, "오프", ''], - [34, "아이돌이 우글거리는 버라이어티 프로그램에 참전! 어느 아이돌보다 높은 점수를 받아야 할 것 같다!", '《바보/캐릭터12》'], - [35, "스포츠 프로그램을 떠들썩하게 하기 위해 불려졌다! 스포츠에 대해서 압니까?", '《스포츠/취미4》'], - [36, "퀴즈 프로그램. 둘이서 게스트로 출연. 힘을 합쳐 이겨낼지, 그렇지 않으면 자신다움을 중시해야 할까…….", '《학력/재능10》'], - [44, "오프", ''], - [45, "요리프로그램에 출현. 어떤 요리를 만들까?", '《요리/취미8》'], - [46, "CD샵에서 사인회를 개최. 팬을 기쁘게 할 수 있을까?", '《배려/재능9》'], - [55, "오프", ''], - [56, "둘에게 그라비아 촬영 일이 왔다. 좋은 스타일로 매료 시킬 찬스?", '《스타일/재능3》'], - [66, "오프", ''], - ] - return textFromD66Table(title, table) - - when 'VA' - title = '버라이어티 업무표' - table = [ - [11, "오프", ''], - [12, "먹는 것에 관한 리포트를 하는 프로그램에 출연. 어떻게 해야 맛을 잘 표현할 수 있을까?", '《요리/취미6》'], - [13, "스포츠를 하는 프로그램에 출연. 얼마나 활약할 수 있을 지 시험 받는다.", '《스포츠/취미4》'], - [14, "토크 프로그램에 출연. 두 명의 말할 때 잘 이끌어 줄 수 있을까?", '《배려/재능9》'], - [15, "맹수의 우리에게 들어가 볼 놀이를 한다. 담력이 중요!", '《담력/재능5》'], - [16, "파트너 플레이어의 「좋아하는 것」를 소재로 한 프로그램을 맡았다.", '파트너 플레이어가 보유한 취미분야의특기'], - [22, "오프", ''], - [23, "거리는 걷는 프로그램에 출연. 경쾌한 토크로 일반인들을 상대로 능숙하게 말을 걸어보자", '《유순/캐릭터5》'], - [24, "낚시 프로그램에 나오게 되었지만, 거물을 낚을 때까지는 돌아갈 수 없다고 한다. 그런데 움직임의 적은 낚시로 어떻게 눈에 띌까?", '《캐릭터분야의 공백/캐릭터7》'], - [25, "파트너 플레이어의 「좋아하는 것」를 소재로 한 프로그램 코너로, 장난 치는 역을 맡게 되었다.", '파트너 플레이어가 보유한 캐릭터분야의특기'], - [26, "퀴즈 프로그램에 출현. 문제를 어떻게 맞추는지 그것이 중요하다.", '《학력/재능10》'], - [33, "오프", ''], - [34, "농사일 체험 프로그램에 출연. 괭이를 가지고 밭으로 가자.", '《체력/재능6》'], - [35, "공작 체험 프로그램에 출연. 좋은걸 스튜디오에 전달할 수 있도록 물건 만들기를 진지하게 실시하자.", '《집중력/재능4》'], - [36, "전자게임이나 아날로그게임을 플레이 하는 프로그램에 출연. 어떤 식으로 북돋울 수 있을까?", '《게임/취미10》'], - [44, "오프", ''], - [45, "오늘은 만담을 하는 것 같다. 웃기려면 무엇이 필요할 것 일까?", '《바보/캐릭터12》'], - [46, "시츄에이션 코너에 출현. 거창한 연기가 요구 된다.", '《연기력/재능12》'], - [55, "오프", ''], - [56, "취미에 관한 프로그램에 나오게 되었다. 오늘의 테마는 무엇이지.", '《취미분야의 공백/취미7》'], - [66, "오프", ''], - ] - return textFromD66Table(title, table) - - when 'MU' - title = '음악 관련 업무표' - table = [ - [11, "오프", ''], - [12, "씬 플레이어와 파트너 플레이어가 미니라이브를 하게 되었다. 서로 소리를 잘 맞추어 보도록 하자.", '파트너 플레이어가 보유한속성분야의특기'], - [13, "가요 프로그램에서 다루어진다. 어떤 기분으로 노래했는지 잘 표현해 전하자.", '《패션/속성8》'], - [14, "파트너 플레이어와 하모니를 거듭하는 노래가 왔다. 둘의 특징을 목소리에 잘 실리도록 하자.", '파트너 플레이어가 보유한재능분야의특기'], - [15, "CD를 손수 전하는 판매를 개시. 마음을 담아 웃는 얼굴로 손수 전하자.", '《미소/재능7》'], - [16, "레코딩 음악 업계의 거물이 입회한다. 긴장하지 말고 자신의 실력을 발휘하자.", '《담력/재능5》'], - [22, "오프", ''], - [23, "파트너 플레이어하고 서로 이야기하며 가사를 만드는 것에 집중한다. 서로를 잘 이해하도록 하자,", '파트너 플레이어가 보유한캐릭터분야의특기'], - [24, "활동 범위를 넓히기 위해 다양한 악기에 도전!", '《음악/취미11》'], - [25, "고급스런 바에서 노래하는 것. 고급감이 있는 패션을 몸에 익히는 것을 조건으로 노래하는 것이 용서된다.", '《기품/재능11》'], - [26, "중학생이 타겟으로 CD를 판매하게 되었다. 마음 속의 중학생을 해방할 때가 왔다!", '《중2병/캐릭터2》'], - [33, "오프", ''], - [34, "어린이용의 노래를 만들게 되었다. 시선을 아이에게 맞추지 않으면.", '《~125/신장2》'], - [35, "결혼식의 노래를 맡는다. 축복의 기분을 담아 노래하자.", '《배려/재능9》'], - [36, "레이스를 북돋우는 업 템포인 곡을 만드는 것이다.", '《건강/캐릭터8》'], - [44, "오프", ''], - [45, "파트너 플레이어의 현지를 상징하는 노래를 만들게 되었다. 현지의 이야기를 듣기 시작하자.", '파트너 플레이어가 보유한출신분야의특기'], - [46, "호러 무비의 주제가를 담당하게 된, 무서움을 소리로 표현할 수 있을까?", '《오컬트/취미2》'], - [55, "오프", ''], - [56, "작곡자 선생님과의 회의. 자신의 이미지를 잘 전달해 줄 수 있을까?", '《언행정중/캐릭터10》'], - [66, "오프", ''], - ] - return textFromD66Table(title, table) - - when 'DR' - title = '드라마 관련 업무표' - table = [ - [11, "오프", ''], - [12, "엑스트라로 출연. 가능한 한 눈에 띄지 않게 하자.", '《플레인/속성7》'], - [13, "형사 드라마에 형사 역으로 출연. 쿨하게 하자.", '《쿨/속성11》'], - [14, "형사 드라마에 범인 역으로 출연. 나쁜 것을 강조하는 연기가 필요하다.", '《ミステリアス/캐릭터3》'], - [15, "의료 드라마에 의사 역으로 출연. 장기나 피 등에도 꿋꿋하게 힘내자.", '《담력/재능5》'], - [16, "재현 애니메이션의 더빙에 도전. 가능한 한 정중하게.", '《언행정중/캐릭터10》'], - [22, "오프", ''], - [23, "악역에 도전. 어두운 기분이 필요하다.", '《다크/속성3》'], - [24, "학원 드라마에 고뇌하는 학생 역으로 출연. 청춘인 것 같음을 어디까지 보여야?", '《중2병/캐릭터2》'], - [25, "시대극에 출연. 강경파가 된 씬의 차례가 왔다.", '《외고집/캐릭터9》'], - [26, "특수 촬영에 히어로 역으로 출연. 뜨거운 연기를 보일 때!", '《버닝/속성10》'], - [33, "오프", ''], - [34, "출연진 중에 초유명인이! 긴장하지 말고 힘내자.", '《마이페이스/캐릭터4》'], - [35, "까다로운 감독에게 여러 가지 주의를 받는다. 어떻게 대응해 할 것인가", '《스타/속성12》'], - [36, "파트너 플레이어의 [배경]을 재현한 미니 드라마를 찍는 것 같다. 그의 과거를 어떻게 표현할 것 인가.", '파트너 플레이어가 보유한속성분야의특기'], - [44, "오프", ''], - [45, "액션 드라마에 출연. 액션 씬을 잘 할 수 있을 지가 키 포인트다.", '《운동신경/재능8》'], - [46, "연애 드라마에 출연. 출연진를 두근두근 시키는 연기가 필요라는 것.", '《섹시/속성4》'], - [55, "오프", ''], - [56, "감동계 드라마에 출연. 우는 씬이 여기의 제일 볼만한 장면이다!", '《연기력/재능12》'], - [66, "오프", ''], - ] - return textFromD66Table(title, table) - - when 'VI' - title = '비주얼 관련 업무표' - table = [ - [11, "오프", ''], - [12, "비치에서 그라비아 촬영의 일이 생긴다. 육체미를 보여주어야.", '《섹시/속성4》'], - [13, "패션잡지의 취재가 오고, 자신다운 패션을 보이면 좋겠다고 부탁받는다.", '《캐릭터분야의 공백/캐릭터7》'], - [14, "지방마다의 패션을 도입하는 패션 쇼가 개막. 출연하게 되었다.", '出身分野からランダム'], - [15, "패션 쇼에 모델로 등장. 완벽한 스타일을 과시해라.", '《스타일/재능3》'], - [16, "잡지로 씬 플레이어 추천 코디를 소개한다. 어떤 조합을 소개 할까?", '《멋내기/취미5》'], - [22, "오프", ''], - [23, "파트너 플레이어의 「신체적 특징」이 약간 유행이 되었다. 이 빅 웨이브에 편승하려면", '파트너 플레이어가 보유한 신장분야의특기'], - [24, "심야 프로그램 코너에, 씬 플레이어의 「신체적 특징」 특집이 짜여 지는 것 같다.그것을 나타내야한다.", '씬 플레이어가 보유한 신장분야의특기'], - [25, "뉴스 프로그램 코너에서, 파트너 플레이어의 「패션 특징」이 소개된다. 잘 어시스트 하자.", '파트너 플레이어가 보유한 신장분야의특기'], - [26, "씬 플레이어의 「패션 특징」을 팔고 있는 기업으로부터 CM에 대해 부탁 받는다.", '씬 플레이어가 보유한 속성분야의특기'], - [33, "오프", ''], - [34, "여성의 패션에 대해 말하는 프로그램에 출연.", '《페미닌/속성5》'], - [35, "높은 신장 전용의 의상이 입게 된다. 이것을 입고 잘 나타낼 수 있으려나?", '《190~/신장12》'], - [36, "TV프로에서 애니메이션 캐릭의 코스프레를 한다. 자신답게 결정 포즈.", '《취미분야의 공백/취미7》'], - [44, "오프", ''], - [45, "작은 신장을 위한 코디를 만든 디자이너로부터 연락이 들어온다. 그것을 보기 좋고 맵시 있게 입었으면 좋다는 것 같다.", '《146/신장6》'], - [46, "아이와 공동으로 출연하는 CM를 찍게 되었다. 아이의 귀여운 패션을 생각하자.", '《~125/신장2》'], - [55, "오프", ''], - [56, "파트너 플레이어의 선전용 촬영의 코디를 하게 되었다. 그런데 어떻게 해야?", '파트너 플레이어가 보유한 신장분야의특기'], - [66, "오프", ''], - ] - return textFromD66Table(title, table) - - when 'SP' - title = '스포츠 업무표' - table = [ - [11, "오프", ''], - [12, "오프", ''], - [13, "오프", ''], - [14, "오프", ''], - [15, "오프", ''], - [16, "오프", ''], - [22, "マラソン大会に参加することになった。とにかく、走ろう。", '《체력/재능6》'], - [23, "サッカー選手たちにインタビュー! サッカーの魅力を聞き出そう。", '《스포츠/취미4》'], - [24, "野球の始球式をすることになった。自分らしく、캐릭터クターを前面に出して投げるのがコツ。", '《캐릭터분야의 공백/캐릭터7》'], - [25, "バスケットボールを体験! その魅力を伝えよう。", '《스포츠/취미4》'], - [26, "ラグビーのパワフルさを間近で体験。見ている人たちにも迫力を伝えないと。", '《스포츠/취미4》'], - [33, "アメフトのハーフタイムショーの短い時間を任される。集中して魅力を出し切ろう。", '《집중력/재능4》'], - [34, "チアリーディング(男性アイドルは応援団)で스포츠選手たちの応援をすることに。みんながんばれ!", '《キュート/속성6》'], - [35, "陸上競技を一通り体験! それぞれの種目の見どころを発信しよう。", '《운동신경/재능8》'], - [36, "水泳をする仕事がやってきた。競泳水着をカッコよく着こなそう。", '《쿨/속성11》'], - [44, "스포츠ドリンクのCMだ。「生き返る」感じを出していこう。", '《패션/속성8》'], - [45, "運動靴のCM。パートナープレイヤーを力強く追い抜いて、速くなれることをアピール!", '《버닝/속성10》'], - [46, "ジャージや体操服のCMが入ってきた。うまく着こなして、運動着も멋내기なことを証明しよう。", '《멋내기/취미5》'], - [55, "近々開催される大会の応援団長を任された。出場する選手たちにエールを送ろう!", '《건강/캐릭터8》'], - [56, "テニスの試合をパートナープレイヤーとやることになった。ダブルスでいこう。", '파트너 플레이어가 보유한 속성분야의특기'], - [66, "ゴルフコースを回りながら、プロから手ほどきを受けることに。丁寧な言葉遣いで、大人っぽく振舞おう。", '《언행정중/캐릭터10》'], - ] - return textFromD66Table(title, table) - - when 'CHR' - title = 'クリスマス 업무표' - table = [ - [11, "오프", ''], - [12, "오프", ''], - [13, "오프", ''], - [14, "오프", ''], - [15, "오프", ''], - [16, "오프", ''], - [22, "雪の積もる野外コンサートホールでミニライブ。苛酷な環境だけど、耐え抜かないと。", '《체력/재능6》'], - [23, "ラジオの公開録音中に、クリスマスケーキ作りにチャレンジすることになった。うまく作れるかな?", '《요리/취미6》'], - [24, "アイドルが提案するクリスマスデート用のファッションを雑誌で紹介。勝てるコーデを考えてみよう。", '《멋내기/취미5》'], - [25, "ケーキ屋さんと提携して、クリスマスケーキの売り込みをすることに。", '《쇼핑/취미8》'], - [26, "地元の中学校のクリスマスイベントに登場。学生のみんなと一緒に盛り上がろう。", '《패션/속성8》'], - [33, "クリスマスに放映される特別ドラマにパートナープレイヤーの恋人役で出演。恋愛をうまく演じられるかな?", '《연기력/재능12》'], - [34, "トークバラエティのクリスマス特番に呼ばれて収録を始める。本日のテーマは、「恋」について。", '《유순/캐릭터5》'], - [35, "ラジオ番組で、家族と過ごすクリスマスの思い出について語ることになった。", '《이국문화/재능2》'], - [36, "セクシーサンタグランプリというファッション大会に出ることになった。セクシーアイドルたちと対決だ!", '《섹시/속성4》'], - [44, "遊園地で行われるクリスマスイベントのCMを撮影することになった。楽しそうな미소を見せよう。", '《미소/재능7》'], - [45, "サンタクロースの格好をして、小学生たちにプレゼントを配ることになった。오프ァーはかわいさ重視!", '《キュート/속성6》'], - [46, "サンタクロースの格好をして、街でイベントをすることに。異国っぽさをうまく出せるかな?", '《해외/출신12》'], - [55, "クリスマスをテーマにした写真集が発売。そのうちの何枚かを担当することに。", '《스타일/재능3》'], - [56, "新人アイドルたちが歌うクリスマスソングを収めたカバーアルバムが発売。自分たちも収録されています。", '《음악/취미11》'], - [66, "アイドルとデートをした気分になれるDVDが発売。自分たちも、クリスマス編の収録を行った。", '《아이돌/취미12》'], - ] - return textFromD66Table(title, table) - - when 'PAR' - title = 'パートナー関係 업무표' - table = [ - [11, "오프", ''], - [12, "오프", ''], - [13, "오프", ''], - [14, "오프", ''], - [15, "오프", ''], - [16, "오프", ''], - [22, "パートナープレイヤーの【背景】に関する仕事がやって来る。こいつは何を見てきたんだ?", '파트너 플레이어의 개성특기'], - [23, "パートナープレイヤーの「好きなもの」に関する仕事がやって来る。場を盛り上げていこう。", '파트너 플레이어가 보유한 취미분야의특기'], - [24, "パートナープレイヤーの「嫌いなもの」に関する仕事がやって来る。どうフォローしたものか。", '파트너 플레이어가 보유한 캐릭터분야의특기'], - [25, "パートナープレイヤーの「身体的特徴」に関する仕事がやって来る。どこがいいのかを聞いてみる。", '파트너 플레이어가 보유한 속성분야의특기'], - [26, "パートナープレイヤーの「ファッション特徴」に関する仕事がやって来る。自分も真似をすることに。", '파트너 플레이어가 보유한 신장분야의특기'], - [33, "파트너 플레이어의 개성특기に関する仕事がやって来る。合わせてみよう。", '파트너 플레이어의 개성특기'], - [34, "パートナープレイヤーの「身体的特徴」に関する仕事がやって来る。どこがいいのかを聞いてみる。", '파트너 플레이어가 보유한 속성분야의특기'], - [35, "파트너 플레이어가 보유한 속성분야의특기に関する仕事がやって来る。", '파트너 플레이어가 보유한 속성분야의특기'], - [36, "파트너 플레이어가 보유한 캐릭터분야의특기に関する仕事がやって来る。", '파트너 플레이어가 보유한 캐릭터분야의특기'], - [44, "씬 플레이어의【背景】を振り返らせるような仕事がやって来た。今はアイドルとしてそれをこなそう。", '씬 플레이어의個性特技'], - [45, "파트너 플레이어가 보유한 취미분야의특기に関する仕事がやって来る。", '파트너 플레이어가 보유한 취미분야의특기'], - [46, "파트너 플레이어가 보유한 출신분야의특기に関する仕事がやって来る。", '파트너 플레이어가 보유한 출신분야의특기'], - [55, "씬 플레이어의個性特技に関する仕事がやって来る。今こそ見せ場だ!", '씬 플레이어의個性特技'], - [56, "파트너 플레이어가 보유한 재능분야의특기に関する仕事がやって来る。", '파트너 플레이어가 보유한 재능분야의특기'], - [66, "씬 플레이어의「好きなもの」に関する仕事がやって来る。やったぜ!", '씬 플레이어의個性特技'], - ] - return textFromD66Table(title, table) - - when 'SW' - title = 'お菓子仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "オフ", ''], - [14, "オフ", ''], - [15, "オフ", ''], - [16, "オフ", ''], - [22, "おいし過ぎて止まらない様子を描く、ふわふわなお菓子のCMを行う。", '《ポップ/属性9》'], - [23, "苦い恋模様を描く、ビターチョコレートのCM撮影を行う。", '《ダーク/属性3》'], - [24, "甘い恋模様を描く、甘いチョコレートのCM撮影を行う。", '《キュート/属性6》'], - [25, "家でポリポリ食べているところを描く、スナック菓子のCMを行う。", '《プレーン/属性7》'], - [26, "青春の汗を流す様子を描く、甘い飲料水のCMを行う。", '《バーニング/属性10》'], - [33, "チョコレートを食べて脳細胞を活性化させる探偵のドラマに出演する。", '《集中力/才能4》'], - [34, "朝のシリアルを食べて元気いっぱいな様子を描く、CM撮影を行う。", '《元気/キャラ8》'], - [35, "眠いときに目がすっきりと覚める様子を描く、刺激の強いお菓子のCM撮影を行う。", '《パッション/属性8》'], - [36, "一本で栄養補給ができる様子を描く、健康補助食品なお菓子のCM撮影を行う。", '《クール/属性11》'], - [44, "地元にある駄菓子屋さんのプロモーションを手伝う。", '《ショッピング/趣味8》'], - [45, "料理番組で、市販のお菓子を使った新しいおやつの開発を任される。", '《料理/趣味6》'], - [46, "お菓子の家を再現したアトラクション施設を宣伝する。", '《フェミニン/属性5》'], - [55, "情報番組の1コーナーで、お勧めのケーキを紹介する。", '《料理/趣味6》'], - [56, "お菓子をテーマにした、夢いっぱいの遊園地の宣伝を行う。", '《笑顔/才能7》'], - [66, "チョコレートを使ったグラビア撮影をすることになる。", '《スタイル/才能3》'], - ] - return textFromD66Table(title, table) - - when 'AN' - title = '動物仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "オフ", ''], - [14, "オフ", ''], - [15, "オフ", ''], - [16, "オフ", ''], - [22, "ライオンの檻に、餌を届ける仕事がやって来る。勇気を出して踏み込もう。", '《胆力/才能5》'], - [23, "ハムスターと戯れる絵を作る。", '《ペット/趣味4》'], - [24, "牛の乳しぼり体験を動画にしよう。", '《集中力/才能4》'], - [25, "かわいい猫の動画を撮るために、きまぐれな猫の機嫌をとりにいく。", '《ペット/趣味4》'], - [26, "犬の散歩シーンを撮るためにも、犬と信頼関係を作る。", '《ペット/趣味4》'], - [33, "公園の鳩に餌をあげるシーンの手伝いをする。", '《マイペース/キャラ4》'], - [34, "象の上に乗って、コメントを述べる仕事。", '《エスニック/属性2》'], - [35, "ぬるぬるしたどじょうを手づかみする絵を要求される。", '《セクシー/属性4》'], - [36, "ウサギをなでる絵を作る仕事がやって来る。不安そうなウサギを安心させよう。", '《ペット/趣味4》'], - [44, "奈良の鹿に餌をあげるドラマに出演。", '《近畿地方/出身6》'], - [45, "馬に乗って、競馬場を駆ける映像を撮ることに。うまく乗りこなそう。", '《セレブ/才能11》'], - [46, "水族館でペンギンたちと一緒に遊ぶシーンを撮影。", '《キュート/属性6》'], - [55, "蛇を手づかみする番組企画が入る。", '《胆力/才能5》'], - [56, "海に入って、魚や貝を見つける企画をすることになった。", '《元気/キャラ8》'], - [66, "山奥で歩き回って、色々な昆虫を見つける仕事を行う。", '《体力/才能6》'], - ] - return textFromD66Table(title, table) - - when 'MOV' - title = '映画仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "オフ", ''], - [14, "オフ", ''], - [15, "オフ", ''], - [16, "オフ", ''], - [22, "ゾンビ映画にゾンビ役で出演。動く死体らしい演技を心がけよう。", '《ダーク/属性3》'], - [23, "時代劇映画にサムライ役で出演。厚い忠義を見せよう。", '《硬派/キャラ9》'], - [24, "西部劇映画にガンマン役で出演。静かに熱い役を演じよう。", '《バーニング/属性10》'], - [25, "SF映画に未来のエンジニア役で出演。難しい言葉をクールに言い放とう。", '《クール/属性11》'], - [26, "カンフー映画に若き拳法家役で出演。激しいアクションで敵と戦おう。", '《運動神経/才能8》'], - [33, "恋愛映画に当て馬役として出演。フラれたあとに感情的になる演技が大事。", '《演技力/才能12》'], - [34, "現代劇に中学二年生役として出演。現代の若者を演技で表現しよう。", '《中二病/キャラ2》'], - [35, "特撮ヒーローにヒーロー役として出演。スーツアクターのアクションに、アフレコで魂を載せよう。", '《演技力/才能12》'], - [36, "ホラー映画に主役として出演。悲鳴や動きで怖がっているところを見せよう。", '《ダーク/属性3》'], - [44, "インド映画にダンサーとして出演。情熱的な踊りで映画を盛り上げよう。", '《ダンス/趣味9》'], - [45, "ミステリー映画の犯人役として出演。怪しげな演技で人々を魅了しよう。", '《ミステリアス/キャラ3》'], - [46, "戦争映画に出演。哀しみの叫びを上げよう。", '《演技力/才能12》'], - [55, "ちょっとしたお色気シーンを撮ることに。", '《セクシー/属性4》'], - [56, "ドキュメンタリー映画で、過去の偉人を演じることに。その人の一生をトレースしよう。", '《演技力/才能12》'], - [66, "おバカな映画に、突き抜けたバカ役として出演。バカになれ!", '《ばか/キャラ12》'], - ] - return textFromD66Table(title, table) - - when 'FA' - title = 'ファンタジー仕事表' - table = [ - [11, "オフ", ''], - [12, "オフ", ''], - [13, "オフ", ''], - [14, "オフ", ''], - [15, "オフ", ''], - [16, "オフ", ''], - [22, "ドラゴンと対峙しても、引かない勇気を見せるシーン。", '《胆力/才能5》'], - [23, "怪物の群れを魔法で一掃するシーン。", '《ポップ/属性9》'], - [24, "剣を使って街を荒らす盗賊たちを成敗するシーン。", '《硬派/キャラ9》'], - [25, "斧を振るって、動く植物を破壊するシーン。", '《体力/才能6》'], - [26, "仲間と一緒に槍で突いて、敵の兵士を追い返すシーン。", '《気配り/才能9》'], - [33, "歌と踊りでファンタジーの住民たちを惹きつけるシーン。", '《音楽/趣味11》'], - [34, "酒場で芸を披露して、人気者になるシーン。", '《軟派/キャラ5》'], - [35, "無実の罪でとらえられ、牢屋から脱出するシーン。", '《ミステリアス/キャラ3》'], - [36, "突然現れた魔物の群れに襲われるシーン。", '《どじ/キャラ11》'], - [44, "巨大な魔物に、みんなで立ち向かっていくシーン。", '《気配り/才能9》'], - [45, "悪の魔法使いによって、呪いをかけられるシーン。", '《ダーク/属性3》'], - [46, "新しい武器と防具を調達して、着こなすシーン。", '《おしゃれ/趣味5》'], - [55, "一面の草原を駆け抜けるシーン。", '《元気/キャラ8》'], - [56, "疲れている王様を元気づけてあげるシーン。", '《パッション/属性8》'], - [66, "空を駆ける不思議な船に乗って、感動するシーン。", '《笑顔/才能7》'], - ] - return textFromD66Table(title, table) - - when 'HA' - title = 'ハプニング表' - table = [ - [11, "ハプニングなし", ''], - [12, "ハプニングなし", ''], - [13, "ハプニングなし", ''], - [14, "ハプニングなし", ''], - [15, "ハプニングなし", ''], - [16, "ハプニングなし", ''], - [22, "パートナープレイヤーに、地方からオファーが来た。その土地独特の文化を学んで、パートナープレイヤーに伝えよう。", 'AT6'], - [23, "グラビア撮影だが、用意された衣装のサイズがパートナープレイヤーに合わなかった。何とかして、衣装を合わせなければいけない。", 'パートナープレイヤーが修得している身長分野の特技'], - [24, "ダンス撮影中。パートナープレイヤーのダンスに迷いが見えた。何かアドバイスをして、迷いを取り払いたい。", '《ダンス/趣味9》'], - [25, "歌の仕事だが、パートナープレイヤーの歌がどこかぎこちない。うまく本来の歌を取り戻させよう。", 'パートナープレイヤーが修得している属性分野の特技'], - [26, "体力を消費する仕事の最中に、パートナープレイヤーが倒れてしまった! 急いで処置をしなければ!", '《気配り/才能9》'], - [33, "パートナープレイヤーにマイナースポーツのCMが回ってきたが、知らない様子だ。ルールを教えよう。", '《スポーツ/趣味4》'], - [34, "パートナープレイヤーのキャラに合わない仕事が舞い込んだ。演技力で乗り切ってほしい。", '《演技力/才能12》'], - [35, "パートナープレイヤーが風邪をひいてしまう。次の仕事までに、なんとか治してもらわなければ。", '《元気/キャラ8》'], - [36, "パートナープレイヤーの属性らしくない衣装が来てしまった。うまくアレンジできればいいけど。", '《おしゃれ/趣味5》'], - [44, "パートナープレイヤーのテンションが低い。テンションを上げるようなことを言おう。", '《バーニング/属性10》'], - [45, "パートナープレイヤーの仕事に必要な小道具が足りなくなった。調達しよう。", '《ショッピング/趣味8》'], - [46, "パートナープレイヤーに外国から仕事が舞い込んできた。外国の文化に合わせた仕事をしなければ。", '《異国文化/才能2》'], - [55, "パートナープレイヤーに大会社からの仕事のオファーがやって来る。プレッシャーに負けないように後押ししよう。", '《胆力/才能5》'], - [56, "パートナープレイヤーと他のアイドルグループとのコラボイベントが行われる。そのアイドルの情報を集めてこよう。", '《アイドル/趣味12》'], - [66, "パートナープレイヤーの周りで、幽霊騒ぎが起こる。安心させるためにも、調査に乗り出そう。", '《オカルト/趣味2》'], - ] - return textFromD66Table(title, table) - - when /^AT([1-6]?)$/ - value = Regexp.last_match(1).to_i - return getSkillList(value) - - when 'LUR' - title = '로컬 아이돌 엉망진창표' - table1 = [ - "地元の商店街で", - "マスコット캐릭터クターと", - "地元のプールで", - "地元の小学校で", - "地元のショッピングモールで", - "田んぼの真ん中で", - ] - table2 = [ - "愛について叫ぶ", - "民謡を歌う", - "ファッションショー", - "水着で宣伝", - "ネット配信", - "お祭り騒ぎ", - ] - return textFrom1D6Table(title, table1, table2) - - when 'SUR' - title = '정열의 여름 엉망진창표' - table1 = [ - "해수욕장에서", - "훌륭한 사람의 앞에서", - "그 유명 아이돌의 앞에서", - "동료 앞에서", - "카메라 앞에서", - "일반관객 앞에서", - ] - table2 = [ - "빙수를 단번에 먹는다", - "헌팅", - "수박을 깬다.", - "멋진 포즈", - "만면에 미소", - "싸움의 행세", - ] - return textFrom1D6Table(title, table1, table2) - - when 'WUR' - title = '온기의 겨울 엉망진창표' - table1 = [ - "크리스마스 트리 앞에서", - "아이들 앞에서", - "폭설 속에서", - "눈 내리기 시작한 거리에서", - "따뜻한 방 안에서", - "난방이 너무 지나친 방에서", - ] - table2 = [ - "눈 치우기", - "아이스크림를 먹는다.", - "얇게 입고 등장.", - "노래를 불러 주세요.", - "산타 코스프레", - "오뎅을 서둘러 먹는다.", - ] - return textFrom1D6Table(title, table1, table2) - - when 'NUR' - title = '대자연 엉망진창표' - table1 = [ - "도끼를 가지고", - "괭이를 가지고", - "낚시대를 가지고", - "포충망를 가지고", - "영양 드링크 선전을 하면서", - "생명 줄을 달고서", - ] - table2 = [ - "나무를 넘어 뜨리다.", - "밭을 경작한다.", - "곤충채집.", - "거물을 낚시한다.", - "겁 없이 통과한다.", - "벼랑을 오른다.", - ] - return textFrom1D6Table(title, table1, table2) - - when 'GUR' - title = '聖デトワール女学園無茶ぶり表' - table1 = [ - "裏山で", - "食堂で", - "先輩の前で", - "全国放送で", - "全校生徒の前で", - "学園の様子を伝えるネット中継で", - ] - table2 = [ - "歌を披露", - "乗馬", - "テニス", - "「個性とは何か」を語る", - "「アイドルとは何か」を語る", - "「アイドルをやっていてよかった瞬間」を語る", - ] - return textFrom1D6Table(title, table1, table2) - - when 'BUR' - title = 'アカデミー無茶ぶり表' - table1 = [ - "TVカメラの前で", - "ライバルと一緒に", - "試験で", - "寮で", - "幼年部で", - "初等部で", - ] - table2 = [ - "反省会", - "ゲリラライブ", - "宿題をこなす", - "食事を作る", - "自作の歌を披露", - "自作のポエムを披露", - ] - return textFrom1D6Table(title, table1, table2) - - when /^BT(\d+)?$/ - counts = (Regexp.last_match(1) || 1).to_i - return badStatus(counts) - - when 'SGT' - title = '아이돌 스킬 습득표(챌린지 걸즈)' - table = [ - "씬 플레이어가 보유한 재능분야의특기가 지정 특기인 아이돌 스킬", - "씬 플레이어가 보유한 캐릭터분야의특기가 지정 특기인 아이돌 스킬", - "씬 플레이어가 보유한 취미분야의특기가 지정 특기인 아이돌 스킬", - "랜덤으로 지정한 특기가 지정 특기인 아이돌 스킬(신장분야、속성분야、출신분야가 나올경우 재굴림)", - "《멘탈 업》《퍼포먼스 업》《아이템 업》(챌린지 걸즈 216 페이지) 중 어느 쪽이든 1개", - "《멘탈 업》《퍼포먼스 업》《아이템 업》(챌린지 걸즈 216 페이지) 중 어느 쪽이든 1개", - ] - return textFrom1D6Table(title, table) - - when 'RS' - title = '아이돌 스킬 습득표(로드 투 프린스)' - table = [ - "씬 플레이어가 보유한 속성분야의특기가 지정 특기인 아이돌 스킬", - "씬 플레이어가 보유한 캐릭터분야의특기가 지정 특기인 아이돌 스킬", - "씬 플레이어가 보유한 취미분야의특기가 지정 특기인 아이돌 스킬", - "랜덤으로 지정한 특기가 지정 특기인 아이돌 스킬(신장분야、재능분야、출신분야가 나올경우 재굴림)", - "《멘탈 디펜스》《판정 업》《개성 업》중 어느 쪽이든 1개", - "《멘탈 디펜스》《판정 업》《개성 업》중 어느 쪽이든 1개", - ] - return textFrom1D6Table(title, table) - - when 'SH' - title = 'ショッピングモール散策表' - table = [ - [11, "思いがけず、ブランドもの衣装を買えてしまった。これを、うまく使えないだろうか?\nシーンプレイヤーとパートナープレイヤーは、好きなブランドの衣装チケットを一つ獲得する。"], - [12, "雑貨コーナーを回って、自分たちらしいアクセサリーを探す。\nシーンプレイヤーとパートナープレイヤーは、アイテム「캐릭터アイテム」を一つ獲得する。"], - [13, "お歳暮コーナーが盛況だった。今のトレンドはなんだろうか。\nシーンプレイヤーとパートナープレイヤーは、アイテム「差し入れ」を一つ獲得する。"], - [14, "お菓子売り場で、気になっていたお菓子のシリーズを買い漁る。\nシーンプレイヤーとパートナープレイヤーは、アイテム「お菓子」を一つ獲得する。"], - [15, "스포츠ショップに立ち寄って、스포츠ドリンクを買い貯める。いつか使うかもしれない。\nシーンプレイヤーとパートナープレイヤーは、アイテム「スナミナドリンク」を一つ獲得する。"], - [16, "스포츠ウェアの展示会をやっていたので、見て回る。びびっと来たアイテムも見つかった。\nシーンプレイヤーとパートナープレイヤーは、アイテム「トレーニングウェア」を一つ獲得する。"], - [22, "特売品を買い漁る。さて、使えるものかな?\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに二つ獲得する。"], - [23, "シューズコーナーで、普段使いの靴を調達する。댄스にちょうどいいのはどれかな?\nシーンプレイヤーとパートナープレイヤーは、アイテム「ドリーミングシューズ」を一つ獲得する。"], - [24, "ふらりと買い物にやって来て、目についたものをとりあえず買ってみる。ちょっと疲れてたかも。\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], - [25, "色々な洋服を見て回って、自分やパートナーに合ったコーディネートを考えてみる。\nシーンプレイヤーとパートナープレイヤーは、【ビジュアル】が1点上昇する。"], - [26, "ちょうど買いたかったものが、格安で売られていた。タイミングがよかったみたいだ。\nシーンプレイヤーとパートナープレイヤーは、好きなアイテムを一つ獲得する。"], - [33, "ショッピングモールを歩いているうちに、アイテムを落としてしまう。\nシーンプレイヤーとパートナープレイヤーは、アイテムをすべて失う。"], - [34, "ショッピングモールを歩いていると、声をかけられた。地元の人たちから、応援のメッセージをもらう。\nシーンプレイヤーとパートナープレイヤーは、【獲得ファン人数】が4点上昇する。"], - [35, "ショッピングモールでは何も買わなかったが、交わした会話はお互いを知るきっかけになった。\nシーンプレイヤーとパートナープレイヤーは、お互いに対する【理解度】が3点上昇する。"], - [36, "ベンチで一休みしながら、お互いの長所について話し合う。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [44, "混雑中のフードコートで食事をしようとしたところ、一時間近く待たされる。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が2点減少する。"], - [45, "フードコートで定番メニューを頼み、勝手知ったる味を楽しむ。やっぱり、知っている味がいい。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が2点上昇する。"], - [46, "フードコートで新しいメニューにチャレンジ!\nシーンプレイヤーとパートナープレイヤーは、1D6を振る。出目が奇数の場合、そのPCは【メンタル】が5点減少し、出目が偶数の場合、そのPCは【メンタル】が5点上昇する。"], - [55, "CDコーナーを探しているうちに、迷ってしまった。さて、ここはどこだろう?\n変調がランダムに一つ発生する。"], - [56, "カフェコーナーで一休み。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が5点上昇する。"], - [66, "家具や家電コーナーを回るうちに、自分たちの将来が不安になってきた。\n変調がランダムに二つ発生する。"], - ] - return textFromD66Table(title, table) - - when 'MO' - title = '山散策表' - table = [ - [11, "山で迷っていたら、謎の仙人に助けられる。そのついでに、体をうまく動かす方法まで教わる。ありがとう! 謎の仙人!\nシーンプレイヤーとパートナープレイヤーの【合宿ポイント】が10点上昇する。"], - [12, "山の幸を頂いて、幸福感に包まれる。うまい!\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [13, "星空の下で、二人の【背景】を語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [14, "森林浴をして、体調を整える。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇し、変調がすべて回復する。"], - [15, "山登りを繰り返して、足腰を鍛える。\nシーンプレイヤーとパートナープレイヤーの【フィジカル】が1点上昇する。"], - [16, "二人で一緒に朝日を見て、訳も分からず感動する。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [22, "山で迷った。\n変調がランダムに二つ発生する。"], - [23, "山奥に住んでいるという、伝説のファッションデザイナーに着こなしの秘密を教えてもらう。\nシーンプレイヤーとパートナープレイヤーは、好きなブランドの衣装チケットを一つ獲得する。"], - [24, "山奥に住んでいるという、伝説のレッスントレーナーに教えを乞いに足を延ばす。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [25, "ふらっと立ち寄った地元の飲食店で郷土요리を食べる。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [26, "山奥にある神社まで登って、お祈りをする。無事にライブが成功しますように。\nシーンプレイヤーとパートナープレイヤーの【合宿ポイント】が5点上昇する。"], - [33, "虫にたかられて、嫌な思いをする。\n変調がランダムに一つ発生する。"], - [34, "仲間たちみんなとバーベキューをして楽しむ。\nシーンプレイヤーとパートナープレイヤーは、PC全員に対する【理解度】が3点上昇する。"], - [35, "キノコ狩りをする。\nシーンプレイヤーとパートナープレイヤーは、1D6を振る。その値が偶数だった場合、アイテム「スタミナドリンク」を一つ獲得する。奇数だった場合、【メンタル】が6点減少する。"], - [36, "避暑地の喫茶店で一杯飲みながら、お互いのアイドル論について語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [44, "山を移動中に、落し物をしてしまう。\nシーンプレイヤーとパートナープレイヤーは、アイテムを一つ失う。"], - [45, "山小屋で一晩を過ごす。お互いの生活習慣が見えてきた。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [46, "ハイキングをしながら、お互いの嫌いなものについて理解を深める。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [55, "野生の鹿に襲われそうになったので、프로듀서가 盾になった。\n変調「怪我」が発生する。"], - [56, "高原の広々としたテニスコートでテニスを楽しむ。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [66, "山道を歩き疲れて、足が棒になる。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が3点減少する。"], - ] - return textFromD66Table(title, table) - - when 'SEA' - title = '海散策表' - table = [ - [11, "浜辺で行われていたミスコンに強制的に参加させられる。\nシーンプレイヤーとパートナープレイヤーの【獲得ファン人数】が1D6点上昇する。"], - [12, "浜辺を散歩しながら、お互いの好きなものについて語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [13, "とれたての魚を使った寿司を食べて満足する。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [14, "浜辺を歩いていると、アイドルだと気づいた地元の人たちから声援が飛んでくる。\nシーンプレイヤーとパートナープレイヤーの【獲得ファン人数】が5点上昇する。"], - [15, "童心に返って、海に向かって走り出す。やったー海だー!\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [16, "水泳で体を鍛える。荒れやすい海は特訓にもってこいだ!\nシーンプレイヤーとパートナープレイヤーの【フィジカル】が1点上昇する。"], - [22, "せっかくだから釣りをしてみる。何が釣れるかな?\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], - [23, "二人で競い合いながら泳ぎまわる。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [24, "ちょっとだけ日に焼けて、違う自分をセルフプロデュース。ちゃんと事務所の許可はとれてます!\nシーンプレイヤーとパートナープレイヤーの【ビジュアル】が1点上昇する。"], - [25, "砂浜にいい感じのタイヤがあったので、それを引っ張りながら走り込みをする。\nシーンプレイヤーとパートナープレイヤーの【フィジカル】が1点上昇する。"], - [26, "海に向かって叫んで、すっきりする。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇し、【ボイス】が1点上昇する。"], - [33, "しつこいナンパに誘われて、ちょっと意気消沈してしまう。\n変調がランダムに二つ発生する。"], - [34, "みんなで花火をして楽しむ。\nシーンプレイヤーとパートナープレイヤーは、PC全員に対する【理解度】が2点上昇する。"], - [35, "水着で決めるファンションをコーディネートして、浜辺の視線を一人占め。\nシーンプレイヤーとパートナープレイヤーは、【ビジュアル】が1点上昇する。"], - [36, "魚요리を満足いくまで食べたはいいものの、食べ過ぎじゃないかが心配。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇する。"], - [44, "穏やかな海を見ながら、これまでのことを思い返す。\n変調が一つ回復する。"], - [45, "水族館に立ち寄ったら、お土産に色々持たされる。\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], - [46, "水族館のイルカショーから、新しい技のヒントをもらう。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [55, "海で遊んでいたら、溺れかける。\n変調がランダムに三つ発生する。"], - [56, "サーファーたちから、人を惹きつける技術について聞き出す。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [66, "夜の海に出没するという幽霊らしきものを見かけてしまい、ぞっとする。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が5点減少する。"], - ] - return textFromD66Table(title, table) - - when 'SPA' - title = '温泉街散策表' - table = [ - [11, "地元のお祭りに遭遇! 一緒になって盛り上げる。\nシーンプレイヤーとパートナープレイヤーの【獲得ファン人数】が5点上昇する。"], - [12, "卓球台を使って、お互いの力を出し切る。何かが掴めたような気がする。\nシーンプレイヤーとパートナープレイヤーの【合宿ポイント】が5点上昇する。"], - [13, "お土産屋さんで、色々なものを買い込む。しかし、これは役に立つのだろうか。\nシーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。"], - [14, "温泉からあがった後に、ゆっくりと涼む。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇し、変調がすべて回復する。"], - [15, "温泉街の名物요리を出してもらう。うまい!\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [16, "浴衣で活気のある街並みを歩きながら、お互いの【背景】を語り合う。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が1D6点上昇する。"], - [22, "湯に浸かり過ぎて目が回る。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇し、変調がランダムに一つ発生する。"], - [23, "たくさんの温泉に次々浸かる。楽しいけど疲れた。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [24, "湯船に浸かってリフレッシュ。ひとまずは一息入れましょう。\n変調がすべて回復し、シーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [25, "ジャグジー風呂で肩こりや足のむくみを癒す。温泉地でもこういう施設はあるんだな。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が5点上昇する。"], - [26, "みんなやプロデューサーを連れて足湯に浸かる。いつもご苦労様。\n変調がすべて回復する。"], - [33, "のぼせる。\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が3点減少する。"], - [34, "貸切風呂で、ゆったりとしながらお互いを理解をするための話し合いをする。\nシーンプレイヤーとパートナープレイヤーのお互いに対する【理解度】が3点上昇する。"], - [35, "マッサージ機を使って、日ごろの疲れをたたき出す。\n変調をすべて回復する。"], - [36, "お風呂の後の牛乳もうまい!\nシーンプレイヤーとパートナープレイヤーは、アイテム「スナミナドリンク」を一つ獲得する。"], - [44, "ついつい無駄遣いをしてしまう。てへへ。\n変調がランダムに一つ発生する。"], - [45, "屋台での観光客向けの요리に舌鼓をうつ。こういう味もありなのか。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が3点上昇する。"], - [46, "温泉街の女将さんたちに、人の心を豊かにする術を教えてもらう。\nシーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [55, "部屋の中でぼけっと過ごす。\nシーンプレイヤーとパートナープレイヤーの【メンタル】が1点上昇する。"], - [56, "観光客の人々と会話をして、自分たちの知名度を確認する。\nアイドルランク係数が「10」以上の場合、【獲得ファン人数】が4D6点上昇する。"], - [66, "複雑な地形と坂道で疲れ始める。目的の場所はまだ?\nシーンプレイヤーとパートナープレイヤーは、【メンタル】が3点減少する。"], - ] - return textFromD66Table(title, table) - - when 'TN' - title = '夜語りシチュエーション表' - table = [ - ["みんなが寝静まった寝室。二人だけのお話。", '好きな特技'], - ["夜の街を歩きながら、【背景】をぽつぽつと語り出す。", '씬 플레이어의個性特技'], - ["「好きなもの」を探しに出かけた帰り道。", '씬 플레이어가 보유한 취미분야의특기'], - ["「嫌いなもの」から逃げてきて、二人きりになってしまった。", 'AT'], - ["暗い道を往くとき、ふとしたきっかけで、「身体的特徴」に触れてしまう。", '씬 플레이어가 보유한 신장분야의특기'], - ["「ファッション特徴」の話に夢中になっていたら、いつの間にか二人になっていたことに気づく。", '씬 플레이어가 보유한 속성분야의특기'], - ] - number, = roll(1, 6) - return "#{title} > [#{number}] > " + table[number - 1][0] + getSkillText(table[number - 1][1]) - - when 'CG' - title = 'コモン成長表' - table = [ - "【メンタル】が2点上昇する。", - "【メンタル】が4点上昇する。", - "『챌린지 걸즈』か『로드 투 프린스』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。", - "アイテムをランダムに一つ獲得する。", - "アイテムをランダムに一つ獲得する。", - "【獲得ファン人数】が3点上昇する。", - ] - text = textFrom1D6Table(title, table) - if /アイテムをランダムに一つ獲得する。$/ =~ text - text += "\n" + getItem - end - return text - - when 'GG' - title = 'ゴールド成長表' - table = [ - [11, "好きなアイドルスキルを一つ選んで修得する。"], - [12, "『챌린지 걸즈』か『로드 투 프린스』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [13, "『챌린지 걸즈』か『로드 투 프린스』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [14, "『챌린지 걸즈』か『로드 투 프린스』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [15, "『챌린지 걸즈』か『로드 투 프린스』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [16, "『챌린지 걸즈』か『로드 투 프린스』のアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [22, "好きなアイドルスキルを一つ選んで修得する。"], - [23, "レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [24, "レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [25, "レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。"], - [26, "好きな能力値一つが1点上昇する。"], - [33, "好きな能力値一つが2点上昇する。"], - [34, "【ボイス】が1点上昇する。"], - [35, "【フィジカル】が1点上昇する。"], - [36, "【ビジュアル】が1点上昇する。"], - [44, "個性特技を別の特技に変更することができる。"], - [45, "好きな能力値二つが1点上昇する。"], - [46, "すべての能力値が1点上昇する。"], - [55, "【メンタル】が10点上昇する。"], - [56, "アイテムをランダムに一つ獲得する。"], - [66, "個性特技の目標値が1点減少する。"], - ] - skillTitle = 'レアアイドルスキル修得表' - skillTable = [ - "【秘めたる素質】を修得する。", - "【王者の風格】を修得する。", - "【万能アイドル】を修得する。", - "【最強の負けず嫌い】を修得する。", - "【超絶無敵コーデ】を修得する。", - "【強く正しく美しく】を修得する。", - ] - text = textFromD66Table(title, table) - - if /レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。/ =~ text - text += "\n" + textFrom1D6Table(skillTitle, skillTable) - elsif /アイテムをランダムに一つ獲得する。$/ =~ text - text += "\n" + getItem - end - return text - - when 'FL' - title = '駆け出しシーン表' - table = [ - "トレーニングルームで、皆が真剣な顔をしている。真面目な雰囲気が場を支配しており、軽い冗談も言えなさそう。", - "いつものたまり場。なのに、今日に限って、騒がしさがどこかに行ってしまったようだ。", - "誰も歩いていない夜道。人気もなく、不安を抱くような暗闇に、足音だけが響いている。", - "強い風と強い雨が吹きつける事務所の中。外に出れば、吹き飛ばされてしまいそう。", - "曇り空の下。そこにいるだけで、暗い気持ちになるような、どんよりとした天気。", - "雨が降り続けている。雨は、ずっと続いている。いつになったら晴れるのだろう。", - ] - return textFrom1D6Table(title, table) - - when 'LN' - title = '孤独表' - table = [ - "誰のことも信じられない。私は一人でやってみせる。\nPC全員の【理解度】すべてにチェックを入れる。センターPCは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。", - "事件がきっかけで、事務所の空気が悪くなった。嫌な雰囲気。\n変調がランダムに三つ発生する。", - "口調が荒くなり、きつい一言を仲間に言ってしまう。\nPC全員の【メンタル】が5点減少し、【理解度】すべてにチェックを入れる。", - "ちょっとした注意がきっかけで、仲間と喧嘩をしてしまう。\nPC全員の【メンタル】が10点減少する。", - "誰も、話をしない。気まずさと静寂が場を包んだ。このままでは、会場の空気も悪くなる。\n【目標動員数】が二倍になる。", - "突然の強い雨に打たれる。ずぶぬれのところに一人。そんなところを誰かに目撃されてしまう。\nセンターPCの【獲得ファン人数】が半分になる。", - ] - return textFrom1D6Table(title, table) - - when 'MS' - title = 'マイスキル名決定表' - nameTable = [ - "形容表+情景表+マテリアル表", - "形容表+情景表+アクション表", - "形容表+マテリアル表+アクション表", - "情景表+マテリアル表+アクション表", - "形容表もしくは情景表+称号表+PCの名前", - "マテリアル表もしくはアクション表+称号表+PCの名前", - ] - articleTitle = '称号表' - articleTable = [ - "アイドル", - "ガール/ボーイ", - "パラダイス", - "プリンセス/プリンス", - "스타일", - "クイーン/キング", - ] - describeTitle = '形容表' - describeTable = [ - [11, "ビギニング"], - [12, "パワフル"], - [13, "ビューティフル"], - [14, "エターナル"], - [15, "きらめき"], - [16, "シャイニング"], - [22, "パーフェクト"], - [23, "1000%"], - [24, "フレッシュ"], - [25, "ドキドキ"], - [26, "ワイルド"], - [33, "ロイヤル"], - [34, "ときめき"], - [35, "ふわふわ"], - [36, "スタイリッシュ"], - [44, "小悪魔"], - [45, "スーパー"], - [46, "ウルトラ"], - [55, "ハイパー"], - [56, "ダイナマイト"], - [66, "アルティメット"], - ] - sceneTitle = '情景表' - sceneTable = [ - [11, "マーメイド"], - [12, "ドリーム"], - [13, "ピュア"], - [14, "アニマル"], - [15, "サンシャイン"], - [16, "ムーンライト"], - [22, "かわいい/かっこいい"], - [23, "フューチャリング"], - [24, "ライジング"], - [25, "버닝"], - [26, "스타ライト"], - [33, "ボンバー"], - [34, "レインボー"], - [35, "フローズン"], - [36, "ヒート"], - [44, "ダーク"], - [45, "ぴかぴか"], - [46, "サンライズ"], - [55, "스타ダスト"], - [56, "オーロラ"], - [66, "ギャラクシー"], - ] - materialTitle = 'マテリアル表' - materialTable = [ - [11, "バスケット"], - [12, "エクスプレス"], - [13, "エア플레인"], - [14, "ロケット"], - [15, "ハリケーン"], - [16, "バイク"], - [22, "タイガー"], - [23, "ドルフィン"], - [24, "ドッグ"], - [25, "キャット"], - [26, "バニー"], - [33, "ドラゴン"], - [34, "ソード"], - [35, "ランス"], - [36, "パラソル"], - [44, "ローズ"], - [45, "ロータス"], - [46, "コスモス"], - [55, "キャンディ"], - [56, "ハート"], - [66, "フェニックス"], - ] - actionTitle = 'アクション表' - actionTable = [ - [11, "スパイラル"], - [12, "フライ"], - [13, "シャワー"], - [14, "ダイブ"], - [15, "イリュージョン"], - [16, "ラッシュ"], - [22, "ターン"], - [23, "ラブ"], - [24, "ハグ"], - [25, "ダッシュ"], - [26, "シュート"], - [33, "ダイビング"], - [34, "クロス"], - [35, "トリック"], - [36, "ビーム"], - [44, "スラッシュ"], - [45, "ボイス"], - [46, "ドライブ"], - [55, "くるくる"], - [56, "ジャンプ"], - [66, "アクション"], - ] - name, nameNumber = get_table_by_1d6(nameTable) - - nameParts = [] - articleIndex = name.index(articleTitle) - unless articleIndex.nil? - text, number = get_table_by_1d6(articleTable) - nameParts.push([articleIndex, articleTitle, text, number]) - end - - setArrayFromD66Table(nameParts, name, describeTitle, describeTable) - setArrayFromD66Table(nameParts, name, sceneTitle, sceneTable) - setArrayFromD66Table(nameParts, name, materialTitle, materialTable) - setArrayFromD66Table(nameParts, name, actionTitle, actionTable) - nameParts.sort! - - numberString = "" - nameParts.each do |_index, src, text1, number1| - name = name.gsub(src, text1) - numberString += "#{src}#{number1}," - end - numberString = numberString[0, numberString.length - 1] - return "#{title} > [#{nameNumber},#{numberString}] > #{name}" - - when 'MSE' - title = 'マイスキル効果表' - table = [ - "演目を行ったときに使用できる。自分の【メンタル】が15点になる。この効果は、1回のセッションに1度まで使用できる。", - "ミラクル・ミラクルシンクロ・パーフェクトミラクルを発生させたときに使用できる。【パフォーマンス値】が10点上昇する。この効果は、1回のセッションに1度まで使用できる。", - "ファンブルではない判定の後に使用する。判定の達成値を12にする。この効果は、1回のセッションに1度まで使用できる。", - "演目を行ったときに使用できる。自分以外のPC全員の【メンタル】が2D6点上昇する。この効果は、1回のセッションに1度まで使用できる。", - "ライブフェイズ開始時に使用する。このフェイズの間、すべての判定の達成値にプラス2の修正がつく。この効果は、1回のセッションに1度まで使用できる。", - "パフォーマンスのサイコロを振った後に使用する。サイコロ1つの出目を6にすることができる。この効果は、1回のセッションに1度まで使用できる。", - ] - return textFrom1D6Table(title, table) - - when 'ST' - title = '演出表' - table = [ - "見事なパフォーマンスに、人々が感動する。", - "その声に観客が聞き惚れる。", - "一糸乱れぬ댄스が決まる。", - "宙に飛ばしたマイクを見事にキャッチする。", - "トランポリンなどを使って、会場の天井近くまでジャンプ。", - "観客と一体になって決めポーズ。", - ] - return textFrom1D6Table(title, table) - - when 'FST' - title = 'ファンタジー演出表' - table = [ - "会場を覆っていた暗雲を退散させる。", - "会場に花が咲く。", - "炎の旋風が観客を燃え上がらせる。", - "ハートの風船が会場中を飛び交う。", - "羽を生やして会場を飛び回る。", - "打ち上がった花火と共に決めポーズ。", - ] - return textFrom1D6Table(title, table) - - when 'CHO' - title = '하이라이트 표' - table = [ - [11, "모험이다 / 어드벤처\n이 공연간에, 스페셜치가 1점 감소."], - [12, "온 세상의 사랑 / 러브\nPC전원의【멘탈】이 3점 상승."], - [13, "지금 보내고 싶은 / 기다릴 수 없는\n이 공연의 【퍼포먼스치】가 1점 상승."], - [14, "지지 않는 거야 / 이기고 싶은\n이 공연의 PP가 5 점 감소(최저 0).。"], - [15, "감사의 말 / 고마워요\n변조가 모두 회복한다."], - [16, "너라면 / 당신들이\n이 공연 간에 모든 【이해도】가 2점 높은 것으로서 취급한다."], - [22, "동료와 함께라면 / 동료의\nPC전원은 자신 이외의 캐릭터에 대해 【이해도】가 1점 상승."], - [23, "정말로 좋아해 / MAX\nPC 전원의 【멘탈】이 1D6점 상승.。"], - [24, "죽고 싶을 정도로 / 어둠으로 떨어져\n이 공연 간에 스페셜치와 펌블치가 1점 감소."], - [25, "이지만 / 에서도、이 공연 간에 단기돌파 목표치가 5점이 된다."], - [26, "키스보다 / 속삭이는 것보다\n이 공연 목록의 간에 【비주얼】이 1점 상승한다."], - [33, "함께 있으면 좋은 / 쭉\n아이돌 클래스가 「훈훈한」인 PC전원은 【추억】을 획득"], - [34, "달리다 / 달리는\n이 공연 간에 【피지컬】이 1점 상승한다."], - [35, "기다림에 애태우는 / 언제까지나\n공연 간에 심포니를 실시했을 때 주사위 눈 하나를 1로 변경할 수 있다."], - [36, "한밤 중에 / 한낮에の\n미라클• 미라클 싱크로가 발생했을 때 【퍼포먼스치】에 +5."], - [44, "笑おうぜ/미소で\n아이돌 클래스가 「코메디」인 PC전원은 【획득 팬 인원수】가 [2D6에] 랭크 계수】를 적용한 수만큼 상승."], - [45, "파티다 / 돈으로도\nPC전원은, 아이템을 1개 랜덤에 획득한다."], - [46, "이니까 / 그리고\n공연 간에 단기돌파 이외의 판정 달성치가 1점 상승한다"], - [55, "나만 봐 / 독점하고 싶은\n단기돌파를 실시해도 【멘탈】이 감소하지 않는다."], - [56, "우리들의 노래 / 노래하자\n이 공연 간에 【보이스】가 1점 상승한다.。"], - [66, "사랑하고 있는 것 / 좋아해\n아이돌 클래스가 「진지한」인 PC전원의 【멘탈】이 5점 상승."], - ] - return textFromD66Table(title, table) - - when 'SCH' - title = '정열의 여름 하이라이트 표' - table = [ - "여름은\n이 공연간에 PC전원의 【퍼포먼스치】가 1점 상승.", - "뜨거운 거야!\n이 공연간에 PC전원의 스페셜치가 1점 감소.", - "수영복이\n이 공연간에 의상효과에 의해 상승하는 값이 +1.", - "목 마른\n이 공연간에 PC전원의 펌블치가 3점 상승.", - "촉촉한\n【멘탈】이 5점 이하인 PC전원은 【멘탈】이 10점 상승.", - "튀는\n이 공연간에 퍼펙트 미러클의【퍼포먼스치】가 15점 상승.", - ] - return textFrom1D6Table(title, table) - - when 'WCH' - title = '온기의 겨울 하이라이트 표' - table = [ - "눈과 같은\nPC전원의 【멘탈】이 3점 상승.", - "초콜릿에\nPC1인의 【멘탈】이 10점 상승.", - "녹여 주는\n이 공연 간, PC전원의 판정의 달성치가 1점 상승.", - "특별한 날\n이 공연 간, PC1인의 스페셜치가 3점 감소.", - "눈보라가\n이 공연 간, 미라클의 【퍼포먼스치】가 10점 상승.", - "추위도 잊어\n이 공연 간, 펌블이 발생해도 변조가 생기지 않는다.", - ] - return textFrom1D6Table(title, table) - - when 'NCH' - title = '대자연 하이라이트 표' - table = [ - "야생의\n전원 【멘탈】이 1D6점 상승.", - "파워로\n이 공연간에 PC 1명의 【퍼포먼스치】가 1D6점 상승.", - "단련된 몸\n전원 【멘탈】이 3점상승.", - "잡고 있는\n이 공연 간에 PC 전원 【파포먼스치】가 1점 상승.", - "부축 하는\n이 공연 간에 PC 1명의 【퍼포먼스치】가 3점 상승.", - "매일 싸워 나가는\nPC 1명의 【획득 팬 인원수】가 2D6에 【랭크계수】 걸친 수만큼 상승.", - ] - return textFrom1D6Table(title, table) - - when /^IT(\d+)?$/ - counts = (Regexp.last_match(1) || 1).to_i - return getItem(counts) - - when 'ACT' - title = 'アクセサリー種別決定表' - table = [ - "頭アクセサリー表を使用する。", - "帽子アクセサリー表を使用する。", - "胴アクセサリー表を使用する。", - "腕アクセサリー表を使用する。", - "足アクセサリー表を使用する。", - "その他アクセサリー表を使用する。", - ] - text = textFrom1D6Table(title, table) - - title = '頭アクセサリー表' - if text.include?(title) - table = [ - [11, "アイマスク"], - [12, "うさみみ"], - [13, "ねこみみ"], - [14, "サングラス"], - [15, "ピアス"], - [16, "シュシュ"], - [22, "仮面"], - [23, "ティアラ"], - [24, "エクステ"], - [25, "バンダナ"], - [26, "ヘアバンド"], - [33, "インカム"], - [34, "イヤリング"], - [35, "ホワイトプリム"], - [36, "ゴーグル"], - [44, "つけひげ"], - [45, "ヘッドホン"], - [46, "耳あて"], - [55, "トナカイの角"], - [56, "花飾り"], - [66, "かんざし"], - ] - return text + "\n" + textFromD66Table(title, table) - end - - title = '帽子アクセサリー表' - if text.include?(title) - table = [ - [11, "ヘルメット"], - [12, "麦わら帽子"], - [13, "サンタ帽子"], - [14, "花冠"], - [15, "学帽"], - [16, "ハンチング帽"], - [22, "シルクハット"], - [23, "テンガロンハット"], - [24, "ナイトキャップ"], - [25, "ロシア帽"], - [26, "ベレー帽"], - [33, "コック帽"], - [34, "パーティコーン"], - [35, "とんがり帽子"], - [36, "キャップ"], - [44, "ナースキャップ"], - [45, "カンカン帽"], - [46, "ハット帽"], - [55, "ターバン"], - [56, "セーラーキャップ"], - [66, "中共帽子"], - ] - return text + "\n" + textFromD66Table(title, table) - end - - title = '胴アクセサリー表' - if text.include?(title) - table = [ - [11, "首かけ指輪"], - [12, "カウベル"], - [13, "ネックレス"], - [14, "蝶ネクタイ"], - [15, "メガホン"], - [16, "ペンダント"], - [22, "ブローチ"], - [23, "金の首輪"], - [24, "チョーカー"], - [25, "南京錠"], - [26, "タスキ"], - [33, "エプロン"], - [34, "名札"], - [35, "階級章"], - [36, "胸当て"], - [44, "ベルト"], - [45, "ポシェット"], - [46, "マフラー"], - [55, "首かけカメラ"], - [56, "リボン"], - [66, "肩パット"], - ] - return text + "\n" + textFromD66Table(title, table) - end - - title = '腕アクセサリー表' - if text.include?(title) - table = [ - [11, "動物の手"], - [12, "宝石の腕輪"], - [13, "動物のマペット"], - [14, "グローブ"], - [15, "指ぬきグローブ"], - [16, "リストバンド"], - [22, "鍋掴み"], - [23, "手袋"], - [24, "長手袋"], - [25, "腕章"], - [26, "腕時計"], - [33, "ドリル"], - [34, "楽器"], - [35, "マフ"], - [36, "カフス"], - [44, "ボクシンググローブ"], - [45, "シルバーアクセサリー"], - [46, "ゴールドアクセサリー"], - [55, "ぬいぐるみ"], - [56, "ミサンガ"], - [66, "手甲"], - ] - return text + "\n" + textFromD66Table(title, table) - end - - title = '足アクセサリー表' - if text.include?(title) - table = [ - [11, "革靴"], - [12, "ブーツ"], - [13, "スポーツシューズ"], - [14, "スキー靴"], - [15, "アンクル"], - [16, "バスケットシューズ"], - [22, "スリッパ"], - [23, "ミサンガ"], - [24, "動物の足"], - [25, "作業靴"], - [26, "ルーズウォーマー"], - [33, "ニーパッド"], - [34, "ガーターリング"], - [35, "ポーチ"], - [36, "ローラースケート"], - [44, "へんなタイツ"], - [45, "白タイツ"], - [46, "網タイツ"], - [55, "ガラスの靴"], - [56, "グリープ"], - [66, "ベル"], - ] - return text + "\n" + textFromD66Table(title, table) - end - - title = 'その他アクセサリー表' - if text.include?(title) - table = [ - [11, "ボンボン"], - [12, "マント"], - [13, "蝶の羽"], - [14, "天使の羽"], - [15, "悪魔の羽"], - [16, "猫のしっぽ"], - [22, "トレンチコート"], - [23, "ばんそうこう"], - [24, "パラソル"], - [25, "ステッキ"], - [26, "タトゥーシール"], - [33, "バーコード"], - [34, "バレーボール"], - [35, "大きなリボン"], - [36, "鎖"], - [44, "キャラクターグッズ"], - [45, "イメージカラーのネイル"], - [46, "メガネ"], - [55, "旗"], - [56, "ジャケット"], - [66, "サスペンダー"], - ] - return text + "\n" + textFromD66Table(title, table) - end - return text - - when 'ACB' - title = 'アクセサリーブランド決定表' - table = [ - "『챌린지 걸즈』の衣装ブランドからランダムに決定する。", - "『챌린지 걸즈』の衣装ブランドからランダムに決定する。", - "『로드 투 프린스』の衣装ブランドからランダムに決定する。", - "『로드 투 프린스』の衣装ブランドからランダムに決定する。", - "『フォーチュンスターズ』の衣装ブランドからランダムに決定する。", - "『フォーチュンスターズ』の衣装ブランドからランダムに決定する。", - ] - text = textFrom1D6Table(title, table) - /『(.+)』/ =~ text - bookTitle = Regexp.last_match(1) - return text + "\n" + costume('의상(' + bookTitle + ')', true) - - when 'ACE' - title = 'アクセサリー効果表' - table = [ - [11, "好きな能力値が1点高いものとして扱う。"], - [12, "【ボイス】が1点高いものとして扱う。"], - [13, "【フィジカル】が1点高いものとして扱う。"], - [14, "【ビジュアル】が1点高いものとして扱う。"], - [15, "このアクセサリーを装備したとき、【メンタル】が5点上昇する。この効果は、1回のセッションに1度まで使用できる。"], - [16, "【パフォーマンス値】が2点上昇する。"], - [22, "このアクセサリーを装備したとき、「アイドルスキル修得表」を使って、ランダムにアイドルスキルを1つ修得する。リザルトフェイズにそのアイドルスキルは失われる。この効果は、1回のセッションに1度まで使用できる。"], - [23, "開幕演目と最終演目で行う判定の達成値が2点上昇する。"], - [24, "【協調値】が1点上昇する。"], - [25, "アイドルスキルの効果が1点上昇する。"], - [26, "意地判定の達成値が3点上昇する。"], - [33, "特殊な演目によって上昇する【獲得ファン人数】が3点上昇する。"], - [34, "一芸突破を行ったとき、判定の達成値が2点上昇する。"], - [35, "このアクセサリーを装備したとき、好きな特技を1つ選ぶ。選んだ特技は、ライブフェイズの間、修得しているものとして扱う。この効果は、1回のセッションに1度まで使用できる。"], - [36, "幕間での判定の達成値が2点上昇する。"], - [44, "思い出を使用したとき、【メンタル】が3点上昇する。"], - [45, "ミラクルが発生したときの【パフォーマンス値】が15点になる。"], - [46, "アイドルスキルを使用したときの判定の達成値が2点上昇する。"], - [55, "特別な演目を行っても、【メンタル】が減少しない。"], - [56, "最終演目での【メンタル】減少が半分(端数切り捨て)になる。"], - [66, "スペシャルが発生したとき、【メンタル】が10点上昇する。"], - ] - return textFromD66Table(title, table) - - when 'DT' - return costume('의상(챌린지 걸즈)') - - when 'RC' - return costume('의상(로드 투 프린스)') - - when 'FC' - return costume('의상(フォーチュンスターズ)') - - when 'CBT' - title = '캐릭터공백표(챌린지 걸즈)' - table = [ - [11, '바뀌는 말투'], - [12, '~버릇'], - [13, '동물 같은'], - [14, '일본식'], - [15, '경박함'], - [16, '계산이 빠름'], - [22, '여동생/누나 캐릭터'], - [23, '포지티브!'], - [24, '네거티브……'], - [25, '응석받이'], - [26, '연령'], - [33, '동물의상'], - [34, '지기 싫어함'], - [35, '노력가'], - [36, '말하고 싶어함'], - [44, '천연'], - [45, '흉내'], - [46, '특징 없음'], - [55, '직감'], - [56, '피아노'], - [66, '소중한 사람'], - ] - return textFromD66Table(title, table) - - when 'RCB' - title = '캐릭터공백표(로드 투 프린스)' - table = [ - [11, '걱정이 많은'], - [12, '본좌 (어르신)'], - [13, '남동생'], - [14, '노력가'], - [15, '차분함'], - [16, '서투름'], - [22, '이중인격'], - [23, '럭키보이'], - [24, '귀여운'], - [25, '소악마'], - [26, '유유자적'], - [33, '조용한 광기'], - [34, '육체파'], - [35, '시인'], - [36, '참견'], - [44, '연애를 좋아함'], - [45, '비평가'], - [46, '차가움'], - [55, '고고함'], - [56, '오빠'], - [66, '여자를 접하기 싫어함'], - ] - return textFromD66Table(title, table) - - when 'HBT' - title = '취미공백표(챌린지 걸즈)' - table = [ - [11, '취미없음'], - [12, '티타임'], - [13, '시'], - [14, '자격증 습득'], - [15, '일러스트레이트'], - [16, '인형'], - [22, '수면'], - [23, '천체관측'], - [24, '산책'], - [25, '식사'], - [26, '뜨개딜'], - [33, '곤충채집'], - [34, '문자'], - [35, '긴통화'], - [36, '카페순례'], - [44, '목욕'], - [45, '수집'], - [46, '조경'], - [55, '등산'], - [56, '역사 애호가'], - [66, '가사'], - ] - return textFromD66Table(title, table) - - when 'RHB' - title = '취미공백표(로드 투 프린스)' - table = [ - [11, '철도'], - [12, '꽃꽃이'], - [13, '여행'], - [14, '일요목수'], - [15, '서예'], - [16, '단형시 짓기'], - [22, '식도락'], - [23, '근력 트레이닝'], - [24, '공작'], - [25, '자격증 습득'], - [26, '낚시'], - [33, '산보'], - [34, '패션'], - [35, '사육'], - [36, '장난'], - [44, '거리에서 헌팅'], - [45, '독서'], - [46, '가사전반'], - [55, '곤충채집'], - [56, '아트'], - [66, '수면'], - ] - return textFromD66Table(title, table) - - when 'RU' - title = 'マスコット暴走表' - table = [ - "激しいアクションで興味を持った人たちを呼び寄せる。\nPC全員の【獲得ファン人数】が5点上昇する。", - "マスコット캐릭터クターから聞こえてはいけない音が聞こえてきて、次の瞬間には動かなくなってしまった。\nこのセッションの間、マスコット캐릭터クターが使用できなくなる。", - "マスコット캐릭터クターが行方不明! 프로듀서가 代わりに着ぐるみを着たけれども、負担が大きかった。\n変調「怪我」が発生する。", - "マスコット캐릭터クターが不適切な発言をしてしまい、連帯責任で謝罪することになってしまう。\nPC全員の【獲得ファン人数】が、それぞれ5点減少する。", - "マスコット캐릭터クターが転んで起き上がれなくなってしまった! みんなで力を合わせて助け起こそう。\nPC全員の【メンタル】が3点減少する。", - "マスコットが突然PCに物申す。問題点を挙げて、鍛えてくれる。\nPC一人は、「アイドルスキル修得表」を使って、アイドルスキルを一つ修得する。", - ] - return textFrom1D6Table(title, table) - - when /^(\d{2})C$/ - title = 'バーストタイム' - degrees = Regexp.last_match(1).to_i - counts = 6 - if (degrees < 45) || (degrees > 55) - return nil - elsif degrees <= 49 - counts = 3 - elsif degrees <= 52 - counts = 4 - elsif degrees <= 54 - counts = 5 - end - - total, dice = roll(counts, 6, 1) - total += degrees - - text = "#{title} > #{degrees}+[#{dice}] > #{total} > " - if total >= 80 - text += "Burst!\n「バースト表」を使用する。" - elsif total >= 65 - string = "成功\n【獲得ファン人数】が2D6点上昇する。" - if total >= 75 - string = "大#{string}\nPC全員が挑戦者ではない場合、自分以外のPCを一人指名する。指名されたPCは、新たな挑戦者として、【メンタル】を減少させずに「バーストタイム」を行う。" - end - text += string - else - text += '失敗' - end - return text - - when 'BU' - title = 'バースト表' - table = [ - "熱い! 熱い!\n【メンタル】が2点減少する。", - "慌てて浴槽から出ようとしたが、足を滑らせて浴槽に落ちる。ウケたはいいが、とても熱い。\n【メンタル】が1D6点減少し、【獲得ファン人数】が3D6点上昇する。", - "温かい目で見守っていた仲間の手を力いっぱい引っ張り、浴槽に引きずり込む。\n自分以外のPCを一人選ぶ。選ばれたPCは、【メンタル】を3点減少させ、「バーストタイム」を行う。", - "あまりの熱さに浴槽へ入り損ねていたら、仲間の一人に叩き落とされる。\n【メンタル】を2点減少してから、PCを一人選ぶ。選んだPCに対する【理解度】が3点上昇し、チェックを外す。", - "思い切って氷を頭から浴びる。쿨ダウン完了!\n【メンタル】を2点減少させることで、もう一度「バーストタイム」を行うことができる。", - "熱湯風呂に入るための着替えに手間取ってしまい、急かされてしまう。結果、満足に着替えができなかった。\nこのライブフェイズの間、衣装の効果が無効化される。", - ] - return textFrom1D6Table(title, table) - - when /^(\d+)(S?)A([1-6]*)([\+\-]\d+)?$/ - title = '攻撃' - counts = Regexp.last_match(1).to_i - return nil if counts <= 0 - - sure = !Regexp.last_match(2).empty? - remove = Regexp.last_match(3) - adjust = Regexp.last_match(4) - adjust ||= '' - - result = roll(counts, 6, 1) - dice = result[1].split(",") - remove.split("") - - text = "#{title} > [" + result[1] + "]#{adjust} > " - - unless (dice.count == counts) || dice.empty? - text += '[' + dice.join(",") + "]#{adjust} > " - end - - if sure || (dice.count == dice.uniq.count) - total = adjust.to_i - total += dice.map(&:to_i).inject(:+) unless dice.empty? - total = 0 if total < 0 - text += "#{total}ダメージ" - else - text += '失敗' - end - return text - - when 'SIP' - title = 'かんたんパーソン表' - table = [ - 'テレビ番組に出て、ライブの宣伝をする。', - 'ラジオに出演して、ライブの宣伝をする。', - '動画を配信して、ライブの宣伝をする。', - 'ライブの宣伝のために、街でビラ配りをする。', - 'ライブに人を集めるために、派手なパフォーマンスを街中でする。', - 'ライブの宣伝のために、あちこちを走り回る。', - ] - return textFrom1D6Table(title, table) - - when 'BVT' - title = '대형 예능 프로덕션 회장표' - table = [ - '자사내 TV 스튜디오', - '사내 라이브 스테이지', - '자사 프로그램', - '이벤트 회장', - '쇼핑센터', - '자사 주최 페스티벌', - ] - return textFrom1D6Table(title, table) - - when 'LVT' - title = '약소 예능 프로덕션 회장표' - table = [ - '지방 축제', - 'CD샵 앞', - '소극장', - '음악 프로그램', - '로컬 TV', - '예능 관계사 공동개최 페스티벌', - ] - return textFrom1D6Table(title, table) - - when 'TVT' - title = '라이브 시어터 회장표' - table = [ - '라이브 시어터', - '라이브 시어터', - '라이브 시어터', - '라이브 시어터', - '라이브 시어터', - '라이브 시어터', - ] - return textFrom1D6Table(title, table) - - when 'CVT' - title = '아이돌 부 회장표' - table = [ - '運動場', - '体育館', - '屋上', - '街中', - '地元のイベント', - '学園アイドル大会', - ] - return textFrom1D6Table(title, table) - - when 'BST' - title = '대형 예능 프로덕션 장소표' - table = [ - '사내 프로젝트 룸', - '사내 카페', - '사내 풀', - '사내 레슨 룸', - '쇼핑센터', - '사내 에스테틱 룸', - ] - return textFrom1D6Table(title, table) - - when 'LST' - title = '약소 예능 프로덕션 장소표' - table = [ - '급탕실', - '응접실', - '거실', - '옥상', - '사장실', - '근처공원', - ] - return textFrom1D6Table(title, table) - - when 'TST' - title = '라이브 시어터 장소표' - table = [ - '우리의 무대', - '대기실', - '매점', - '극장 앞', - '레슨 룸', - '무대 옆', - ] - return textFrom1D6Table(title, table) - - when 'CST' - title = '아이돌 부 장소표' - table = [ - '부실', - '음악실', - '교실', - '옥상', - '운동장', - '체육관', - ] - return textFrom1D6Table(title, table) - - when 'BPT' - title = '대형 예능 프로덕션 프레셔 종류 결정표' - table = [ - '선배 아이돌의 기대', - '후배 아이돌의 동경', - '사장의 시찰', - '동기 아이돌들과의 경쟁', - '거물 게스트 등장', - 'TV프로그램의 프로듀서', - ] - return textFrom1D6Table(title, table) - - when 'LPT' - title = '약소 예능 프로덕션 프레셔 종류 결정표' - table = [ - '열심히 라이브 와주는 팬', - '매우 나쁜 조건의 스테이지', - '대형 프로덕션의 시찰', - '드레스 디자이너의 품평', - '신곡을 제공한 뮤지션', - '취재하러 온 예능기자', - ] - return textFrom1D6Table(title, table) - - when 'TPT' - title = '라이브 시어터 프레셔 종류 결정표' - table = [ - '라이브 시어터에 매일 와주는 팬', - '라이브 시어터에서 일하는 스텝', - '시어터 경영자의 시찰', - '시어터에 우연히 들린 많은 관객', - '병행으로 행해지는 이벤트의 팬', - '라이벌 시어터의 아이돌 유닛', - ] - return textFrom1D6Table(title, table) - - when 'CPT' - title = '아이돌 부 프레셔 종류 결정표' - table = [ - '라이벌 팀 「카이와라교」의 도전', - "최강 팀 「Tiara's」의 정찰", - '학부모 교사 협회(PTA)의 시찰', - 'PC의 부모', - '친한 동급생', - '라이벌 팀 「성 국제 여학원」의 도전', - ] - return textFrom1D6Table(title, table) - - when 'BIT' - title = '대형 예능 프로덕션 도구표' - table = [ - '영양 드링크', - '자동 판매기', - '선배 아이돌의 포스터', - '선배 아이돌의 CD', - '아이돌 잡지', - '대본', - ] - return textFrom1D6Table(title, table) - - when 'LIT' - title = '약소 예능 프로덕션 도구표' - table = [ - '셀로판 테이프', - '냉장고', - '백엔 동전', - '너덜너덜한 소파', - '주먹밥', - '키친', - ] - return textFrom1D6Table(title, table) - - when 'TIT' - title = '라이브 시어터 도구표' - table = [ - '무대의 조명', - '기획서', - 'PC의 굿즈', - '화이트 보드', - '라이브 포스터', - '우동', - ] - return textFrom1D6Table(title, table) - - when 'CIT' - title = '아이돌 부 도구표' - table = [ - '퍼스널 컴퓨터', - '책상', - '가방', - '핸드 카메라', - '저지', - '투표함', - ] - return textFrom1D6Table(title, table) - end - - return nil - end - - def rollPerformance(counts, residual, adjust) - title = 'パフォーマンス' - - string = '' - string += '+' if adjust > 0 - string += adjust.to_s unless adjust == 0 - - result = roll(counts, 6, 1) - diceAll = result[1].delete(",") + residual - - total = 0 - diceUse = [] - (1..7).each do |i| - if diceAll.count(i.to_s) == 1 - total += i - diceUse.push(i) - end - end - - text = " > [" + result[1] + ']' - - if residual.empty? - text = "#{title}#{text}" - else - text = "シンフォニー#{text}" - end - - unless residual.empty? - text += ',[' + residual.split("").sort.join(",") + ']' - end - - text += "#{string} > " - - if total == 0 - if residual.empty? - total = 10 + adjust - text += "【ミラクル】#{total}" - else - total = 15 + adjust - text += "【ミラクルシンクロ】#{total}+シンフォニーを行った人数" - end - elsif (total == 21) && !diceUse.include?(7) - unless residual.empty? - text += '[' + diceUse.join(',') + "]#{string} > " - end - total = 30 + adjust - text += "【パーフェクトミラクル】#{total}" - else - unless residual.empty? && (diceUse.count == diceAll.length) - text += '[' + diceUse.join(',') + "]#{string} > " - end - total += adjust - text += total.to_s - end - - return text - end - - def textFromD66Table(title, table, chance = '') - isSwap = true - dice = getD66(isSwap) - number, text, skill = table.assoc(dice) - - text, skill = checkChance(text, skill, chance) - return "#{title} > [#{number}] > " + replaceBadStatus(text) + getSkillText(skill) - end - - def checkChance(text, skill, chance) - return text, skill if chance.empty? - return text, skill unless /チャンスが(\d{1,2})以下なら오프。/ === text - - target = Regexp.last_match(1).to_i - matchedText = $& - - if target >= chance.to_i - text = "오프" - skill = '' - else - text = text.sub(matchedText, '') - text = text.chomp - end - - return text, skill - end - - def textFrom1D6Table(title, table1, table2 = nil) - text1, number1 = get_table_by_1d6(table1) - - text = "#{title} > " - if table2.nil? - text += "[#{number1}] > #{text1}" - else - text2, number2 = get_table_by_1d6(table2) - text += "[#{number1},#{number2}] > #{text1}#{text2}" - end - - if /랜덤으로 지정한 특기가 지정 특기인 아이돌 스킬\(신장분야、(속성|재능)분야、출신분야가 나올경우 재굴림\)$/ =~ text - category = Regexp.last_match(1) - loop do - skill = getSkillList() - text += "\n#{skill}" - break unless skill.include?("신장") || skill.include?(category) || skill.include?("출신") - - text += " > 振り直し" - end - end - - return replaceBadStatus(text) - end - - def getSkillList(field = 0) - title = '特技リスト' - table = [ - ['신장', ['~125', '131', '136', '141', '146', '156', '166', '171', '176', '180', '190~']], - ['속성', ['에스닉', '다크', '섹시', '페미닌', '큐트', '플레인', '패션', '팝', '버닝', '쿨', '스타']], - ['재능', ['이국문화', '스타일', '집중력', '담력', '체력', '미소', '운동신경', '배려', '학력', '기품', '연기력']], - ['캐릭터', ['중2병', '신비', '마이페이스', '유순', '말버릇', '캐릭터분야의 공백', '건강', '외고집', '언행정중', '덜렁이', '바보']], - ['취미', ['오컬트', '펫', '스포츠', '멋내기', '요리', '취미분야의 공백', '쇼핑', '댄스', 'ゲーム', '음악', '아이돌']], - ['출신', ['오키나와', '큐슈', '시코쿠', '주코쿠', '킨키', '주부', '간토', '호쿠리쿠', '도호쿠', '훗카이도', '해외']], - ] - - number1 = 0 - if field == 0 - table, number1 = get_table_by_1d6(table) - else - table = table[field - 1] - end - - fieldName, table = table - skill, number2 = get_table_by_2d6(table) - - text = title - if field == 0 - text += " > [#{number1},#{number2}]" - else - text += "(#{fieldName}분야) > [#{number2}]" - end - - return "#{text} > 《#{skill}/#{fieldName}#{number2}》" - end - - def badStatus(counts = 1) - title = '변조' - table = [ - "「불온한 공기」 PC의 【멘탈】이 감소할 때, 감소하는 수치가 1점 상승한다.", - "「미묘한 거리감」 【이해도】가 상승하지 않게 된다.", - "「유리의 마음」 PC의 펌블치가 1점 상승한다.", - "「부상」 막간 때, 프로듀서는 「회상」만 실시할 수 있다.", - "「믿지 못하는」 PC전원의 【이해도】를 1점 낮은 것으로 취급한다.", - "「엇갈림」 PC는 아이템 사용과 리절트 페이즈에 「부탁」을 할 수 없게 된다.", - ] - - return '' if counts <= 0 - - result = roll(counts, 6, 1) - numbers = result[1].split(",").uniq - - text = "#{title} > [" + result[1] + '] > ' - occurrences = numbers.count - - if occurrences > 1 - text += "以下の#{occurrences}つが発生する。\n" - end - - occurrences.times do |i| - text += table[numbers[i].to_i - 1] + "\n" - end - - return text[0, text.length - 1] - end - - def getSkillText(skill) - return '' if skill.nil? || skill.empty? - - text = skill - if /^AT([1-6]?)$/ =~ text - text = getSkillList(Regexp.last_match(1).to_i) - else - text = "特技 : #{text}" - end - - return "\n#{text}" - end - - def setArrayFromD66Table(array, name, src, table) - index = name.index(src) - return if index.nil? - - isSwap = true - dice = getD66(isSwap) - number, text, = table.assoc(dice) - array.push([index, src, text, number]) - end - - def getItem(counts = 1) - title = 'アイテム' - table = [ - "スタミナドリンク", - "トレーニングウェア", - "ドリーミングシューズ", - "캐릭터アイテム", - "お菓子", - "差し入れ", - ] - - return '' if counts <= 0 - - result = roll(counts, 6, 1) - numbers = result[1].split(",") - unique = numbers.uniq - - text = "#{title} > [" + result[1] + '] > ' - acquisitions = numbers.count - kinds = unique.count - - kinds.times do |i| - string = table[unique[i].to_i - 1] - unless kinds == 1 - string = "「#{string}」" - end - - text += string - unless acquisitions == kinds - text += numbers.count(unique[i]).to_s + 'つ' - end - text += 'と' - end - - text = text.sub(/と$/, '') - - return text - end - - def replaceBadStatus(text) - return text unless /変調がランダムに(一|二|三)つ発生する。/ =~ text - - counts = 1 - case Regexp.last_match(1) - when '二' - counts = 2 - when '三' - counts = 3 - end - - substitution = text.clone - substitution = substitution.gsub($&, '') - substitution += "\n" unless substitution.empty? || /\n$/ =~ substitution - - return substitution + badStatus(counts) - end - - def costume(title, brandOnly = false) - table = [] - if title.include?('의상(챌린지 걸즈)') - table = [ - [11, "12&88\n자신의 【퍼포먼스치】가 결정되었을 때, 그 값을 2점 상승한다."], - [12, "Glow Up Princess\n퍼포먼스를 할 때 주사위를 추가로 1개 더 굴린다."], - [13, "시즈쿠\n라이브페이즈 개시 시 【멘탈】이 5점 상승한다."], - [14, "Pop☆Sweet\n자신의 【멘탈】이 상승할 때 추가로 1점 더 상승한다."], - [15, "Ttype\n단기돌파 시 【멘탈】이 감소하지 않는다. 또한 단기돌파를 할 때 달성치가 1점 상승한다."], - [16, "Vampire Story\n퍼포먼스의 【퍼포먼스치】가 10이상일 경우, 자신의 【멘탈】이 3점 상승한다."], - [22, "Pure Mermaid\n【비주얼】 공연 중 지정 특기를 《스타일》로 변경할 수 있다. 지정 특기가 《스타일》인 공연에서는 【퍼포먼스치】가 2점 상승한다."], - [23, "I'm cute\n라이브 페이즈 개시 시 【멘탈】이 1점 상승한다. 막간 개시 시 능력치를 1개 선택한다. 선택된 능력치는 이 라이브 페이즈 간에 1점 상승한다."], - [24, "No.1 Girl\n【퍼포먼스치】가 결정될 때 【멘탈】을 1점 감소시키고 【퍼포먼스치】가 3점 상승한다."], - [25, "Final Romance\n【비주얼】 퍼포먼스를 실시할 때 캐릭터를 1인 선택한다. 선택한 캐릭터의 자신에 대한 【이해도】와 같은 【퍼포먼스치】가 상승한다."], - [26, "Prism Line\n퍼포먼스 1회에 1번만 퍼포먼스에 사용한 주사위 1개를 다시 굴릴 수 있다."], - [33, "서번트 서비스\n심포니를 할 때마다 그 퍼포먼스 스의 【퍼포먼스치】가 3점 상승한다."], - [34, "Travel Bag\n막간에 자신의 【이해도】 체크 1개를 해제할 수 있다."], - [35, "JewelC\n개막공연과 막간에 아이템을 1개 선택해 획득한다."], - [36, "Sweet Girl\n퍼포먼스를 실시한 PC는 【멘탈】이 2점 상승한다."], - [44, "Satisfaction West\n미라클, 미라클 싱크로, 퍼펙트 미라클이 발생했을 때 【퍼포먼스치】가 5점 상승한다."], - [45, "Under Big Ben\n사용 능력이 【보이스】인 퍼포먼스의 【퍼포먼스치】가 10이상인 경우 자신에 대한 【이해도】 체크 1개를 해제할 수 있다."], - [46, "PIERO\n단기돌파의 달성치가 2점 상승한다."], - [55, "캉캉냥냥\n사용 능력이 【비주얼】인 퍼포먼스를 실시 할 때 【퍼포먼스치】가 3점 상승한다."], - [56, "화조풍월\n심포니를 실시할 때 굴리는 주사위의 수를 1개 늘린다, 혹은 1개 줄일 수 있다."], - [66, "Jingle Bells\n리절트페이즈에서 이하의 효과가 발생한다. 리절트페이즈에서 【획득 팬 인원수】가 1D6점 상승한다. 또 PC전원은 조건을 채우지 않아도 「부탁」을 할 수 있다."], - ] - elsif title.include?('의상(로드 투 프린스)') - table = [ - [11, "Angel kiss\n퍼포먼스를 할 때 1의 눈이 나온 주사위는 제거되지 않는다. 심포니를 실시했을 때, 1의 눈이 나온 주사위는 제거한다."], - [12, "Pirate ship\n공연목록에서 지정특기가 속성 분야일 경우 그 지정특기를 《섹시/속성4》로 변경할 수 있다."], - [13, "로드 투 프린스\n미러클 ・ 미라클 싱크로 ・ 퍼펙트 미라클・ 퍼펙트 미라클 싱크로가 발생했을 때, 그 캐릭터는 【멘탈】이 10점 상승한다."], - [14, "Princess Guardian\n자신 이외의 캐릭터가 【멘탈】이 o점이 되었을 때, 《배려/재능9》로 판정을 한다. 이 판정에 개성특기는 사용할 수 없다. 성공한다면 그 캐릭터는 [획득 팬 인원수]가 반감 되지 않는다."], - [15, "Starlight TourS\n라이브 페이즈 간에, 공연 목록을 1개 선택하고, 지정특기를 《스타/속성12》로 변경할 수 있다."], - [16, "화조풍월•속편\n라이프 페이즈 중, 한 번 남아있는 모든 주사위의 눈을 재반전(1이라면 4, 2라면 5, 3이라면 6으로)할 수 있다."], - [22, "시쿠라마\n판정에 사용한 주사위의 값이 7인 경우 【멘탈】이 7점 상승한다."], - [23, "Chime\n미러클 ・ 미라클 싱크로 ・ 퍼펙트 미라클・ 퍼펙트 미라클 싱크로가 발생했을 때, 그 캐릭터는 랜덤으로 아이템 1개를 얻는다."], - [24, "사상지광\n심포니를 할 때 심포니를 받은 캐릭터의 【멘탈】이 5점상승한다."], - [25, "Air by me\n막간 개시 시 【멘탈】이 5점 상승한다."], - [26, "전국 스트리트\n공연목록의 사용 능력이 【피지컬】이면 【퍼포먼스치】가 2점 상승한다. 또한 지정 특기가 《댄스/취미 9》일 경우, 【퍼포먼스치】가 2점 상승한다."], - [33, "Wild man\n단기돌파의 달성치가 2점 상승한다. 다만, 스페셜은 발생하지 않는다."], - [34, "Gray Stand\n【획득 팬 인원수】가 감소했을 때, 감소한 값의 반(소수점이하 버림)과 같은 값의 【획득 팬 인원수】가 상승한다."], - [35, "토이ARM\n공연을 개시할 때, 2D6을 굴린다. 그 결과가 11이상이면, 이 공연에서는 【멘탈】이 감소하지 않는다,"], - [36, "white plan\n펌블이 발생해도 변조를 받지 않는다.。"], - [44, "SINOBI\n개막 공연을 실시할 때, 나오지 않는 의상을 선택할 수 있다.."], - [45, "V-X\n미라클이 발생하면 퍼포먼스치를 15로 할 수 있다."], - [46, "드래곤 너클\n막간 후에, PC가 행하는 퍼포먼스의 【퍼포먼스치】가 4점 상승한다."], - [55, "Halloween Magic\n후반PP로 【멘탈】이 감소할 때, 그 값을 4점 감소시킨다. (최저 0)"], - [56, "Satisfaction East\n【획득 팬 인원수】가 감소하게 되면 【멘탈】을 20점으로 할 수 있다."], - [66, "Devil kiss\n퍼포먼스를 할 때 6의 눈이 나온 주사위는 제거되지 않는다. 심포니를 실시했을 때, 6의 눈이 나온 주사위는 제거한다."], - ] - elsif title.include?('フォーチュンスターズ') - table = [ - [11, "常峰製作所\n第一演目では、【メンタル】が減少しない。"], - [12, "フォーチュンスター\n最終演目の【パフォーマンス値】が「【メンタル】÷2(端数切り捨て)」点上昇する。"], - [13, "ファイタースケイル\n【メンタル】が5点以下の場合、【パフォーマンス値】が1D6点上昇する。"], - [14, "Blood Scissors\n自分以外のキャラクター一人の【メンタル】を5点減少するか、プロデューサーに変調「怪我」を与えることで、自分の【メンタル】が5点上昇する。この効果は、プロデューサーが既に「怪我」の変調を受けていると、使用できない。"], - [15, "蒸気式演技服\n判定を行うとき、【メンタル】を1点消費することで、判定の達成値が1点上昇する。"], - [16, "ウェイトスター\n「スタミナドリンク」によって、他のキャラクターの【メンタル】を上昇する場合、さらに4点上昇する。"], - [22, "Little Stage\n判定のサイコロやパフォーマンスで「1」の出目が1つ以上出た場合、【思い出】を1つ獲得する。"], - [23, "Check It\n開幕演目前に、最終演目以外の好きな演目を指定する。指定された演目では、自分の【メンタル】が減少しない。"], - [24, "12 Sword\nアイドル戦闘ルールを使用しているとき、与えるダメージが3点上昇し、上昇する【獲得ファン人数】が5点上昇する。"], - [25, "Magi Magic\nパフォーマンスや自分が行うシンフォニーでサイコロを取り除くたびに、【メンタル】が2点上昇する。"], - [26, "Jokers\n最終演目に行う一芸突破の目標値が3点減少する。"], - [33, "Papillon Club\n自分以外のキャラクターがタイプが「補助」のアイドルスキルを使用するたびに、【メンタル】が3点上昇する。"], - [34, "ネイキッドチャレンジ\n開幕演目開始時に、【メンタル】が5点減少する。このライブフェイズの間、好きな能力値が3点上昇する。"], - [35, "Cold Vivit\n好きなギャップを1つ埋める。このギャップは、ライブフェイズ終了時に元に戻る。"], - [36, "対魔絶伏\n特別な演目では、【メンタル】が減少しない。"], - [44, "Rescue Power\n演目の判定でファンブルが発生した場合、好きな能力値でパフォーマンスを行うことができる。"], - [45, "アニマルエンジン\n幕間の終了時に、好きな動物からの【理解度】が2点上昇する。"], - [46, "ふわふわキッチン\n好きなときに、「お菓子」を一つ消費することで、好きなキャラクターの【メンタル】が1D6点上昇できる。また、幕間に「お菓子」を1つ獲得する。"], - [55, "Night Talk\n幕間で「信用」を行ったとき、上昇する【メンタル】が10点になる。"], - [56, "ティーチングタイム\n自分以外のキャラクターを1人指定する。このライブフェイズの間、指定されたPCの能力値が1点上昇する。"], - [66, "See Diver\n演目名に「海」「水」「泡」「湖」「風呂」を含む演目を行った場合、【獲得ファン人数】が1D6点上昇する。"], - ] - else - return nil - end - - text = textFromD66Table(title, table) - text = text.split("\n").first if brandOnly - return text - end -end diff --git a/src/src_bcdice/diceBot/BladeOfArcana.rb b/src/src_bcdice/diceBot/BladeOfArcana.rb deleted file mode 100644 index b888aab32..000000000 --- a/src/src_bcdice/diceBot/BladeOfArcana.rb +++ /dev/null @@ -1,246 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class BladeOfArcana < DiceBot - # ゲームシステムの識別子 - ID = 'BladeOfArcana' - - # ゲームシステム名 - NAME = 'ブレイド・オブ・アルカナ' - - # ゲームシステム名の読みがな - SORT_KEY = 'ふれいとおふあるかな' - - # ダイスボットの使い方 - HELP_MESSAGE = < judgment - critical = judgment - end - - if fumble <= 0 - fumble = 20 - end - if counts <= 0 - counts = 1 - fumble -= 5 - end - if fumble < 2 - fumble = 2 - elsif fumble > 20 - fumble = 20 - end - - value, string = roll(counts, 20, 1) - text = "(#{counts}A#{judgment}C#{critical}F#{fumble}) > #{string} > " - - unless counts == 1 - value = string.split(",").map(&:to_i).min - text += "#{value} > " - end - - if value >= fumble - text += 'ファンブル' - elsif value <= critical - text += 'クリティカル' - elsif value > judgment - text += '失敗' - else - text += '成功' - end - return text - end - - def tableText(title, table, sign = '') - number, = roll(1, 20) - index = number - if sign == '+' - index += 1 - elsif sign == '-' - index -= 1 - end - - text = "#{title} > #{index}" - unless sign.empty? - text += "[#{number}#{sign}1]" - end - return text + ' > ' + table[index] - end -end diff --git a/src/src_bcdice/diceBot/BlindMythos.rb b/src/src_bcdice/diceBot/BlindMythos.rb deleted file mode 100644 index dd6c92ddc..000000000 --- a/src/src_bcdice/diceBot/BlindMythos.rb +++ /dev/null @@ -1,468 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class BlindMythos < DiceBot - # ゲームシステムの識別子 - ID = 'BlindMythos' - - # ゲームシステム名 - NAME = 'ブラインド・ミトスRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'ふらいんとみとすRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <=z、BMSx@y>=z -  x:スキルレベル -  y:目標難易度(省略可。デフォルト4) -  z:必要成功度 - BMコマンドはダイスの振り足しを常に行い、 - BMSは振り足しを自動では行いません。 - 例)BM>=1 BM@3>=1 BMS2>=1 - -・判定振り足し:ReRollx,x,x...@y>=1 -  x:振るダイスの個数 -  y:目標難易度(省略可。デフォルト4) -  z:必要成功度 - 振り足しを自動で行わない場合(BMSコマンド)に使用します。 - -・LE:失う感情表 -・感情後遺症表 ESx - ESH:喜、ESA:怒、ESS:哀、ESP:楽、ESL:愛、ESE:感 -・DT:汚染チャート -・RPxyz:守護星表チェック - xyz:守護星ナンバーを指定 - 例)RP123 RP258 -MESSAGETEXT - - def rollDiceCommand(command) - debug("rollDiceCommand Begin") - - text = judgeRoll(command) - return text unless text.nil? - - isStop = true - text, = reRoll(command, isStop) - return text unless text.nil? - - text = getRulingPlanetDiceCommandResult(command) - return text unless text.nil? - - text = getDurtyTableCommandReuslt(command) - return text unless text.nil? - - text = getTableCommandResult(command, TABLES) - return text - end - - def judgeRoll(command) - return nil unless /^BM(S)?(\d*)(@(\d+))?>=(\d+)$/i =~ command - - isStop = !Regexp.last_match(1).nil? - skillRank = Regexp.last_match(2).to_i - judgeNumberText = Regexp.last_match(3) - judgeNumber = (Regexp.last_match(4) || 4).to_i - targetNumber = (Regexp.last_match(5) || 1).to_i - - message = "" - diceCount = skillRank + 2 - isReRoll = false - text, bitList, successList, countOneList, canReRoll = - getRollResult([diceCount], judgeNumberText, judgeNumber, targetNumber, isReRoll, isStop) - - message += text - message += getTotalResultMessageText(bitList, successList, countOneList, targetNumber, isStop, canReRoll) - - return message - end - - def reRoll(command, isStop) - debug("ReRoll Begin", command) - - return nil unless /^ReRoll([\d,]+)(@(\d+))?>=(\d+)$/i =~ command - - debug("ReRoll pass") - - rerollCountsText = Regexp.last_match(1) - judgeNumberText = Regexp.last_match(2) - judgeNumber = (Regexp.last_match(3) || 4).to_i - targetNumber = Regexp.last_match(4).to_i - - rerollCounts = rerollCountsText.split(/,/).collect { |i| i.to_i } - - commandText = "" - rerollCounts.each do |diceCount| - commandText += "," unless commandText.empty? - commandText += "ReRoll#{diceCount}#{judgeNumberText}>=#{targetNumber}" - end - - debug("commandText", commandText) - - message = "" - if rerollCounts.size > 1 - message += "(#{commandText})" if isStop - end - message += "\n" - isReRoll = true - text, _bitList, successList, countOneList, = - getRollResult(rerollCounts, judgeNumberText, judgeNumber, targetNumber, isReRoll, isStop) - - message += text - - return message, successList, countOneList, targetNumber - end - - def getRollResult(rerollCounts, judgeNumberText, judgeNumber, targetNumber, isReRoll, isStop) - bitList = [] - successList = [] - countOneList = [] - rerollTargetList = [] - - message = "" - rerollCounts.each_with_index do |diceCount, index| - message += "\n" unless index == 0 - - commandName = "ReRoll#{diceCount}" - unless isReRoll - if isStop - commandName = "BMS#{diceCount - 2}" - else - commandName = "BM#{diceCount - 2}" - end - end - commandText = "#{commandName}#{judgeNumberText}>=#{targetNumber}" - - isSort = 1 - _, diceText, = roll(diceCount, 6, isSort) - - diceList = diceText.split(/,/).collect { |i| i.to_i } - - message += " > " if isReRoll - message += "(#{commandText}) > #{diceCount}D6[#{diceText}] > " - - success, countOne, resultText = getSuccessResultText(diceList, judgeNumber) - bitList += diceList.find_all { |i| i >= 4 } unless isReRoll - successList << success - countOneList << countOne - message += resultText - - sameDiceList = getSameDieList(diceList) - next if sameDiceList.empty? - - rerollText = "" - sameDiceList.each do |list| - rerollText += "," unless rerollText.empty? - rerollText += list.join('') - end - - rerollTargetList << sameDiceList.collect { |i| i.count }.join(",") - - message += "、リロール[#{rerollText}]" - end - - rerollCommand = "" - unless rerollTargetList.empty? - rerollCommand = "ReRoll#{rerollTargetList.join(',')}#{judgeNumberText}>=#{targetNumber}" - message += "\n > コマンド:#{rerollCommand}" if isStop - end - - canReRoll = !rerollCommand.empty? - - if canReRoll - unless isStop - text, successListTmp, countOneListTmp, = reRoll(rerollCommand, isStop) - message += text - successList += successListTmp - countOneList += countOneListTmp - end - end - - return message, bitList, successList, countOneList, canReRoll - end - - def getTotalResultMessageText(bitList, successList, countOneList, targetNumber, isStop, canReRoll) - success = successList.inject { |sum, i| sum + i } - countOne = countOneList.inject { |sum, i| sum + i } - - result = "" - - if successList.size > 1 - result += "\n > 最終成功数:#{success}" - end - - if canReRoll && isStop - result += "\n" - - if success >= targetNumber - result += " > 現状で成功。コマンド実行で追加リロールも可能" - else - result += " > 現状のままでは失敗" - result += "。汚染ポイント+#{countOne}" if countOne >= 1 - end - - return result - end - - if success >= targetNumber - result += " > 成功" - - if bitList.size >= 1 - result += "、禁書ビット発生[#{bitList.join(',')}]" - end - - else - result += " > 失敗" - result += "。汚染ポイント+#{countOne}" if countOne >= 1 - end - - return result - end - - def getSameDieList(diceList) - sameDiceList = [] - - diceList.uniq.each do |i| - next if i == 1 - - list = diceList.find_all { |dice| dice == i } - next if list.length <= 1 - - sameDiceList << list - end - - return sameDiceList - end - - def getSuccessResultText(diceList, judgeNumber) - success = 0 - countOne = 0 - - diceList.each do |i| - countOne += 1 if i == 1 - - next unless i >= judgeNumber - - success += 1 - end - - result = "成功数:#{success}" - - return success, countOne, result - end - - def getRulingPlanetDiceCommandResult(command) - return nil unless /^RP(\d+)/i === command - - targetNumbers = Regexp.last_match(1).split(//).collect { |i| i.to_i } - diceList = getRulingPlanetDice - - matchResult = "失敗" - targetNumbers.each do |i| - if diceList.include?(i) - matchResult = "発動" - break - end - end - - text = "守護星表チェック(#{targetNumbers.join(',')}) > #{diceList.count}D10[#{diceList.join(',')}] > #{matchResult}" - - return text - end - - def getRulingPlanetDice - dice1, = roll(1, 10) - dice2 = dice1 - - while dice1 == dice2 - dice2, = roll(1, 10) - end - - dice1 = changeRulingPlanetDice(dice1) - dice2 = changeRulingPlanetDice(dice2) - - return dice1, dice2 - end - - def changeRulingPlanetDice(dice) - return 0 if dice == 10 - - return dice - end - - def getDurtyTableCommandReuslt(command) - return nil unless /^DT$/i =~ command - - table = <<__TABLE_END__ -汚染チャートを2回振り、その効果を適用する(1・2-2,5・6-12 なら振り直す) -PC全員の「トラウマ」「喪失」すべてに2ダメージ -PC全員の「喪失」2つに4ダメージ -PC全員の「トラウマ」すべてに2ダメージ。その後さらに汚染が2増える -PC全員、1つの【記憶】の両方の値が0になる。このときアクロバットダイス獲得不可 -PC全員の「喪失」1つに4ダメージ。このときアクロバットダイス獲得不可 -PC全員の「トラウマ」すべてに1ダメージ。その後さらに汚染が3増える -PC全員の「トラウマ」すべてに1ダメージ。その後アクロバットダイスをPC人数分失う -PC全員の「喪失」すべてに2ダメージ。禁書ビットをすべて失う -PC全員の「トラウマ」2つに3ダメージ。その後さらに汚染が1増える -PC全員の「トラウマ」「喪失」すべてに1ダメージ -PC全員の「喪失」1つに4ダメージ。禁書ビットをすべて失う -PC全員の「トラウマ」すべてに2ダメージ -PC全員の1つの【記憶】の「トラウマ」「喪失」それぞれに3ダメージ -PC全員の「喪失」すべてに1ダメージ -PC全員の「トラウマ」3つに2ダメージ -PC全員の「トラウマ」と「喪失」それぞれ1つに3ダメージ -PC全員の「喪失」3つに2ダメージ -PC全員のすべての「トラウマ」に1 ダメージ -PC全員のひとつの【記憶】の「トラウマ」「喪失」それぞれに3ダメージ -PC全員の「喪失」すべてに2ダメージ -PC全員の「トラウマ」ひとつに4ダメージ。禁書ビットをすべて失う -PC全員の「トラウマ」「喪失」すべてに1ダメージ -PC全員の「喪失」2つに3ダメージ。その後さらに汚染が1増える -PC全員の「トラウマ」すべてに2ダメージ。禁書ビットをすべて失う -PC全員の「喪失」すべてに1ダメージ。その後アクロバットダイスをPC人数分失う -PC全員の「喪失」すべてに1ダメージ。その後さらに汚染が3増える -PC全員の「トラウマ」1つに4ダメージ。このときアクロバットダイス獲得不可 -PC全員、1つの【記憶】の両方の値が0になる。このときアクロバットダイス獲得不可 -PC全員の「喪失」すべてに2ダメージ。その後さらに汚染が2増える -PC全員の「トラウマ」2つに4ダメージ -PC全員の「トラウマ」「喪失」すべてに2ダメージ -汚染チャートを2回振り、その効果を適用する(1・2-2,5・6-12 なら振り直す) -__TABLE_END__ - - table = table.split("\n") - - dice1, = roll(1, 6) - dice2, = roll(2, 6) - - index = (dice2 - 2) * 3 + (dice1 / 2.0).ceil - 1 - - return "汚染チャート(#{dice1},#{dice2}) > #{table[index]}" - end - - TABLES = - { - 'LE' => { - :name => "失う感情表", - :type => '1D6', - :table => %w{ - 喜:喜びは消えた。嬉しい気持ちとは、なんだっただろう。 - 怒:激情は失われ、憎しみもどこかへと消える。 - 哀:どんなに辛くても、悲しさを感じない。どうやら涙も涸れたらしい。 - 楽:もはや楽しいことなどない。希望を抱くだけ無駄なのだ。 - 愛:愛など幻想……無力で儚い、役に立たない世迷い言だ。 - 感:なにを見ても、感動はない。心は凍てついている。 - }, - }, - - 'ESH' => { - :name => "「喜」の感情後遺症表", - :type => '2D6', - :table => %w{ - 日々喜びを求めてしまう。 - 日々喜びを求めてしまう。 - 嬉しい時間が長続きしない。 - 素直に喜びを共有できないことがある。 - 小さなことで大きく喜びを感じる。 - 小さなことで大きく喜びを感じる。 - 影響なし。 - 影響なし。 - 「喜」の後遺症をひとつ消してもよい。 - 「喜」の後遺症をひとつ消してもよい。 - 「喜」の後遺症をひとつ消してもよい。 - }, - }, - - 'ESA' => { - :name => "「怒」の感情後遺症表", - :type => '2D6', - :table => %w{ - 始終不機嫌になる。 - 始終不機嫌になる。 - 一度怒ると、なかなか収まらない。 - 怒りっぽくなる - 怒りかたが激しくなる。 - 怒りかたが激しくなる。 - 影響なし。 - 影響なし。 - 「怒」の後遺症をひとつ消してもよい。 - 「怒」の後遺症をひとつ消してもよい。 - 「怒」の後遺症をひとつ消してもよい。 - }, - }, - - 'ESS' => { - :name => "「哀」の感情後遺症表", - :type => '2D6', - :table => %w{ - 一度涙が出るとなかなか止まらない。 - 一度涙が出るとなかなか止まらない。 - 夜、哀しいことを思い出して目が覚める。 - 不意に哀しい気持ちになる。 - 涙もろくなる。 - 涙もろくなる。 - 影響なし。 - 影響なし。 - 「哀」の後遺症をひとつ消してもよい。 - 「哀」の後遺症をひとつ消してもよい。 - 「哀」の後遺症をひとつ消してもよい。 - }, - }, - - 'ESP' => { - :name => "「楽」の感情後遺症表", - :type => '2D6', - :table => %w{ - 突然陽気になったり、不意に笑い出してしまう。 - 突然陽気になったり、不意に笑い出してしまう。 - 周りが楽しくなさそうだと不安になる。 - 楽しいことがないと落ち着かない。 - 些細なことでも笑ってしまう。 - 些細なことでも笑ってしまう。 - 影響なし。 - 影響なし。 - 「楽」の後遺症をひとつ消してもよい。 - 「楽」の後遺症をひとつ消してもよい。 - 「楽」の後遺症をひとつ消してもよい。 - }, - }, - - 'ESL' => { - :name => "「愛」の感情後遺症表", - :type => '2D6', - :table => %w{ - 少しでも気になる相手に愛を求めてしまう。 - 少しでも気になる相手に愛を求めてしまう。 - 愛する相手(恋人・家族・ペット・空想)から離れたくない。 - 誰彼構わず優しくしてしまう。 - ひとりでいると不安を感じる。 - ひとりでいると不安を感じる。 - 影響なし。 - 影響なし。 - 「愛」の後遺症をひとつ消してもよい。 - 「愛」の後遺症をひとつ消してもよい。 - 「愛」の後遺症をひとつ消してもよい。 - }, - }, - - 'ESE' => { - :name => "「感」の感情後遺症表", - :type => '2D6', - :table => %w{ - 感動を共有できない相手を不信に思ってしまう。 - 感動を共有できない相手を不信に思ってしまう。 - 嬉しくても哀しくてもすぐに涙が出る。 - リアクションがオーバーになる。 - ちょっとしたことで感動する。 - ちょっとしたことで感動する。 - 影響なし。 - 影響なし。 - 「感」の後遺症をひとつ消してもよい。 - 「感」の後遺症をひとつ消してもよい。 - 「感」の後遺症をひとつ消してもよい。 - }, - }, - - }.freeze - - setPrefixes(['BM.*', 'ReRoll\d+.*', 'RP\d+', 'DT'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/BloodCrusade.rb b/src/src_bcdice/diceBot/BloodCrusade.rb deleted file mode 100644 index 27da98e3d..000000000 --- a/src/src_bcdice/diceBot/BloodCrusade.rb +++ /dev/null @@ -1,553 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class BloodCrusade < DiceBot - # ゲームシステムの識別子 - ID = 'BloodCrusade' - - # ゲームシステム名 - NAME = 'ブラッド・クルセイド' - - # ゲームシステム名の読みがな - SORT_KEY = 'ふらつとくるせいと' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - " > ファンブル(【モラル】-3。追跡フェイズなら吸血シーンを追加。戦闘フェイズなら吸血鬼は追加行動を一回得る)" - elsif dice_total >= 12 - " > スペシャル(【モラル】+3。追跡フェイズならあなたに関係を持つPCの【モラル】+2。攻撃判定ならダメージ+1D6)" - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - def rollDiceCommand(command) - command = command.upcase - output = '1' - type = "" - total_n = "" - - debug('getTableResult command', command) - - case command - - when 'RT' - type = '関係属性表' - output, total_n = getRelationTable - when 'ST' - type = 'シーン表' - output, total_n = getSceneTable - when 'IST' - type = '先制判定指定特技表' - output, total_n = getInitiativeSkillTable - when 'BRT' - type = '身体部位決定表' - output, total_n = getBodyRegionTable - when 'CHT' - type = '自信幸福表' - output, total_n = getConfidenceHappyTable - when 'SHT' - type = '地位幸福表' - output, total_n = getStatusHappyTable - when 'DHT' - type = '日常幸福表' - output, total_n = getDailyHappyTable - when 'LHT' - type = '人脈幸福表' - output, total_n = getLinkHappyTable - when 'EHT' - type = '退路幸福表' - output, total_n = getEvacuationHappyTable - when 'AST' - type = 'ランダム全特技表' - output, total_n = getAllSkillTable - when 'MIT' - type = '軽度狂気表' - output, total_n = getMildInsanityTable - when 'SIT' - type = '重度狂気表' - output, total_n = getSevereInsanityTable - else - return getTableCommandResult(command, TABLES) - end - - return output if output == '1' - - output = "#{type}(#{total_n}) > #{output}" - return output - end - - def getRelationTable - table = [ - '共感/不信', - '友情/忌避', - '愛情/嫌悪', - '忠義/侮蔑', - '憧憬/引け目', - '保護欲/殺意', - ] - return get_table_by_1d6(table) - end - - def getSceneTable - table = [ - 'どこまでも広がる荒野。風が吹き抜けていく。', - '血まみれの惨劇の跡。いったい誰がこんなことを?', - '都市の地下。かぼそい明かりがコンクリートを照らす。', - '豪華な調度が揃えられた室内。くつろぎの空間を演出。', - '普通の道端。様々な人が道を行き交う。', - '明るく浮かぶ月の下。暴力の気配が満ちていく。', - '打ち捨てられた廃墟。荒れ果てた景色に心も荒む。', - '生活の様子が色濃く残る部屋の中。誰の部屋だろう?', - '喧しい飲食店。騒ぐ人々に紛れつつ自体は進行する。', - 'ざわめく木立。踊る影。', - '高い塔の上。都市を一望できる。', - ] - return get_table_by_2d6(table) - end - - def getInitiativeSkillTable - table = [ - '《自信/社会5》', - '《地位/社会9》', - '《日常/環境3》', - '《人脈/環境9》', - '《退路/環境11》', - '《心臓/胴部7》', - ] - return get_table_by_1d6(table) - end - - def getBodyRegionTable - table = [ - '《脳》', - '《利き腕》', - '《利き脚》', - '《消化器》', - '《感覚器》', - '《攻撃したキャラクターの任意》', - '《口》', - '《呼吸器》', - '《逆脚》', - '《逆腕》', - '《心臓》', - ] - return get_table_by_2d6(table) - end - - def getConfidenceHappyTable - table = [ - '【戦闘能力】あなたは吸血鬼狩人としての自分の戦闘能力に自信を持っています。たとえ負けようとも、それは運か相手か仲間が悪かったので、あなたの戦闘能力が低いわけではありません。', - '【美貌】あなたは自分が美しいことを知っています。他人もあなたを美しいと思っているはず。鏡を見るたびに、あなたは自分の美しさに惚れ惚れしてしまいます。', - '【血筋】あなたは名家の血を引く者です。祖先の栄光を背負い、家門の名誉を更に増すために、偉業をなす運命にあります。または、普通にいい家族に恵まれているのかもしれません。', - '【趣味の技量】あなたは趣味の分野では第一人者です。必ずしも名前が知れ渡っているわけではありませんが、どんな相手にも負けない自信があります。どんな趣味かは自由です。', - '【仕事の技量】職場で最も有能なもの、それがあなたです。誰もあなたの仕事の量とクオリティを超えられません。どんな仕事をしているかは自由に決めて構いません。', - '【長生き】あなたは吸血鬼狩人としてかなりの年月を過ごしてきたが、まだ死んでいません。これは誇るべきことです。そこらの若造には、まだまだ負けていません。', - ] - return get_table_by_1d6(table) - end - - def getStatusHappyTable - table = [ - '【役職】あなたは職場、あるいは吸血鬼狩人の組織のなかで高い階級についています。そのため、下にいるものには命令でき、相応の敬意を払われます。', - '【英雄】あなたはかつて偉業を成し遂げたことがあり、誰でもそれを知っています。少々くすぐったい気もしますが、英雄として扱われるのは悪くありません。', - '【お金持ち】あなたには財産があります。それも生半可な財産ではなく、人が敬意を払うだけの財産です。あなたはお金に困ることはなく、その幸せを知っています', - '【特権階級】あなたは国が定める特権階級の一員です。王族や貴族をイメージするとわかりやすいでしょう。あなたは、どこに行っても、それ相応の扱いを受けることになります。', - '【人格者】誰もが認める人格者としての評判を持っているため、あなたのところには悩みを抱えた人々が引きも切らずに押しかけてきます。大変ですが、ちょっと楽しい', - '【リーダー】あなたは所属している何らかの組織を率いる立場にあります。会社の社長や、部活動の部長などです。あなたは求められてその地位にあります', - ] - return get_table_by_1d6(table) - end - - def getDailyHappyTable - table = [ - '【家】あなたの家はとても快適な空間です。コストと時間をかけて作り上げられた、あなたが居住するための空間。それはあなたの幸せの源なのです。', - '【職場】あなたは仕事が楽しくて仕方ありません。意義ある仕事で払いも悪くなく、チームの仲間はみんないい奴ばかりです。残業は……ちょっとあるかもしれません。', - '【行きつけの店】あなたには休みの日や職場帰りに立ち寄る行きつけの店があり、そこにいる時間は安らぎを感じることができます。店員とも顔見知りです。', - '【ベッド】あなたは動物を飼っています。よく懐いた可愛い、またはかっこいい動物です。一緒に過ごす時間はあなたに幸せを感じさせてくれます', - '【親しい隣人】おとなりさんやお向かいさん。よくお土産を渡したり、小さな子供を預かったりするような仲です。風邪を引いたときには、家事を手伝ってくれることも。', - '【思い出】あなたは昔の思い出を心の支えにしています。何らかの幸せな記憶……それがあれば、この先にどんなつらいことが待っていても大丈夫でしょう。', - ] - return get_table_by_1d6(table) - end - - def getLinkHappyTable - table = [ - '【理解ある家族】あなたの家族は、あなたが吸血鬼狩人であることを知ったうえで協力してくれます。これがどれほど稀なことかは、仲間に聞けば分かるでしょう。', - '【有能な友人】あなたの友人は、吸血鬼の存在とあなたの本当の仕事を知っています。そして、直接戦うだけの技量はないものの、あなたの探索をサポートしてくれます。', - '【愛する恋人】あなたには愛する人がいます。見つめあうだけで、あなたの心は舞い上がり……帰ってきません。この恋人を失うなんて、考えるだけでも恐ろしいことです。', - '【同志の権力者】あなたには吸血鬼の存在を知りながら、奴らに屈していない権力者との繋がりがあります。様々な違法行為をはたらく際に、役に立つでしょう。', - '【得がたい師匠】あなたは使う武器を学んだ師匠がいて、それを通して兄弟弟子とも繋がりがあります。過酷な訓練を経て、彼らとあなたには強い絆ができています。', - '【可愛い子供】あなたには子供がいます。聡明で魅力的、しかも健康な……将来を嘱望される子供です。子供が掴む幸せな未来を思う時、あなたの顔には笑みが広がります。', - ] - return get_table_by_1d6(table) - end - - def getEvacuationHappyTable - table = [ - '【故郷の町】あなたは生まれ育った街を離れて吸血鬼狩人として活動しています。いつの日かあの町へ帰る……その思いがあなたを戦いのなかで支えています。', - '【待っている人】あなたが吸血鬼狩人をやめて、普通の暮らしに戻ることを待ちわびている人がいます。そして、あなたはその思いに応えたいと思っています。', - '【就職先】あなたは吸血鬼狩りの報酬がなくなっても、すぐに入ることができる就職先があるので安心です。有能なのか過疎地域なのかは分かりませんが。', - '【配偶者】あなたは吸血鬼狩人をやめたあとに家庭に入ろうと考えています。暮らしの設計はすでに済み、あとは実行するだけなのですが、なかなかそうはいきません。', - '【大志】あなたが吸血鬼狩人として活動しているのは、やむにやまれぬ事情があるからです。あなたには「本当にやりたかったこと」があり、いつかその夢をかなえる気でいます。', - '【空想の王国】あなたには辛いことがあると白昼夢にふける、あるいは物語に没入する癖があり、そのときには非常に幸せな気分になることができます。', - ] - return get_table_by_1d6(table) - end - - # ランダム全特技表 - # 1d6で分野選択->2d6で分野から特技選択 - def getAllSkillTable - tableCSKT = [ - '社会2:怯える', - '社会3:脅す', - '社会4:考えない', - '社会5:自信', - '社会6:黙る', - '社会7:伝える', - '社会8:だます', - '社会9:地位', - '社会10:笑う', - '社会11:話す', - '社会12:怒る', - ] - - tableHSKT = [ - '頭部2:聴く', - '頭部3:感覚器', - '頭部4:見る', - '頭部5:反応', - '頭部6:考える', - '頭部7:脳', - '頭部8:閃く', - '頭部9:予感', - '頭部10:叫ぶ', - '頭部11:口', - '頭部12:噛む', - ] - - tableASKT = [ - '腕部2:締める', - '腕部3:殴る', - '腕部4:斬る', - '腕部5:利き腕', - '腕部6:撃つ', - '腕部7:操作', - '腕部8:刺す', - '腕部9:逆腕', - '腕部10:振る', - '腕部11:掴む', - '腕部12:投げる', - ] - - tableBSKT = [ - '胴部2:塞ぐ', - '胴部3:呼吸器', - '胴部4:止める', - '胴部5:受ける', - '胴部6:測る', - '胴部7:心臓', - '胴部8:逸らす', - '胴部9:かわす', - '胴部10:耐える', - '胴部11:消化器', - '胴部12:落ちる', - ] - - tableLSKT = [ - '脚部2:走る', - '脚部3:迫る', - '脚部4:蹴る', - '脚部5:利き脚', - '脚部6:跳ぶ', - '脚部7:仕掛ける', - '脚部8:踏む', - '脚部9:逆脚', - '脚部10:這う', - '脚部11:伏せる', - '脚部12:歩く', - ] - - tableESKT = [ - '環境2:休む', - '環境3:日常', - '環境4:隠れる', - '環境5:待つ', - '環境6:現れる', - '環境7:人脈', - '環境8:捕らえる', - '環境9:開ける', - '環境10:逃げる', - '環境11:退路', - '環境12:休まない', - ] - - categoryNum, = roll(1, 6) - detailText = nil - detailNum = 0 - if categoryNum == 1 - detailText, detailNum = get_table_by_2d6(tableCSKT) - elsif categoryNum == 2 - detailText, detailNum = get_table_by_2d6(tableHSKT) - elsif categoryNum == 3 - detailText, detailNum = get_table_by_2d6(tableBSKT) - elsif categoryNum == 4 - detailText, detailNum = get_table_by_2d6(tableASKT) - elsif categoryNum == 5 - detailText, detailNum = get_table_by_2d6(tableLSKT) - elsif categoryNum == 6 - detailText, detailNum = get_table_by_2d6(tableESKT) - end - return detailText, "#{categoryNum},#{detailNum}" - end - - # 軽度狂気表 - def getMildInsanityTable - table = [ - '【誇大妄想】(判定に失敗するたびに【感情】が1増加する。)', - '【記憶喪失】(【幸福】の修復判定にマイナス2の修正。)', - '【こだわり】(戦闘中の行動を「パス」以外で一つ選択し、その行動をすると【感情】が6増加する。)', - '【お守り中毒】(「幸運のお守り」を装備していない場合、全ての2d6判定にマイナス1の修正。)', - '【不死幻想】(自分が受けるダメージが全て1増加する。)', - '【血の飢え】(戦闘中に最低1体でも死亡させないと、戦闘終了時に【感情】10増加。【激情】は獲得できない。)', - ] - return get_table_by_1d6(table) - end - - # 重度狂気表 - def getSevereInsanityTable - table = [ - '【幸福依存】(【幸福】を一つ選択し、その【幸福】が結果フェイズに失われたとき、死亡する。)', - '【見えない友達】(自分の関わる「関係を深める」判定にマイナス3の修正がつく。)', - '【臆病】(自分の行う妨害判定にマイナス2の修正がつく。)', - '【陰謀論】(「幸福を味わう」判定にマイナス3の修正がつく。)', - '【指令受信】(追跡フェイズBでの自分の行動は、可能な範囲でGMが決定する。)', - '【猜疑心】(自分が「連携攻撃」を行うとき、関係の【深度】をダメージに加えられない。)', - ] - return get_table_by_1d6(table) - end - - TABLES = - { - - 'BDST' => { - :name => "戦場シーン表", - :type => '2d6', - :table => <<'TABLE_TEXT_END' -塹壕。迫撃砲が唸りを上げ、兵士たちの悲鳴が響き渡る。 -港の堤防。遠ざかっていく貨物船と、ゆっくりと揺れる鉛色の水面。 -一面の草に覆われた野原。膝から下は見えない。 -ドーム競技場。中のフィールドよりも外の通路が使われることが多い。 -建物と建物の間に、いつの間にかできた空き地。入る道は狭い。 -採石場。背景を爆破するのに向いた場所だ。 -工場。用途の分からない巨大機械が放置され、雰囲気を盛り上げる。 -暗いトンネル。停められた車のヘッドライトだけが頼りだ。 -競馬場。人のいない観客席を広告板が見下ろしている。 -河川敷。土手の補強用ブロックの規則的な並びが目眩を引き起こす。 -司令室。壁の巨大スクリーンでは、何かのカウントダウンが進行中。 -TABLE_TEXT_END - }, - - 'CYST' => { - :name => "田舎シーン表", - :type => '2d6', - :table => <<'TABLE_TEXT_END' -誰かの家。庭付き二階建て。部屋は余っている。 -山。周囲は木に囲まれ、その向こうの景色は全く見えない。 -さびれたバス停。時刻表は錆に覆われていて読むのが難しい。 -国道沿いのファミレス。巨大な駐車場にトラックが並ぶ。 -大型量販店。服や靴、電化製品などの大きな店。 -あぜ道。周りには季節によって違う姿を見せる水田が広がる。 -大型ショッピングモール。何でも揃う。 -コンビニ。11時で閉まるので夜は開いていないこともある。 -野菜の無人販売所。木の棚に人参やジャガイモが置いてある。 -廃屋。近所の学生がよく忍び込んで悪さをしているとか。 -駅。ホームには屋根がなく、周りには山と森が広がっている。 -TABLE_TEXT_END - }, - - 'DMST' => { - :name => "夢シーン表", - :type => '2d6', - :table => <<'TABLE_TEXT_END' -愛しい人を抱きしめていると、いつのまにか別人に変わっていて驚く。 -もらった種を鉢に植えて待っていると、人が生えてきた。 -ひたすら落下し続けている。一緒に堕ちている人が何か叫んでいる。 -誰かをひどく殴りつけている。一発ごとに周りの観客から喝采が上がる。 -知らない人ばかりのパーティのなか、必死に知り合いを探している。 -何かに追いかけられて暗い道を走っている。そして追いつかれた。 -列車に乗って、通り過ぎていく景色を見ている。向かいの客席に誰かがいる。 -朝起きて冷蔵庫を開けにいくと、ありえない人物が朝食を作っていた。 -なぜか分からないが捕まって留置された。入れられた房には意外な人が。 -道端にいた散歩の犬が「これは夢だ」と事情を語り始めた。 -みんな死んでしまった。墓の前で座っていると、近づいてくる人影がある。 -TABLE_TEXT_END - }, - - 'MNST' => { - :name => "館シーン表", - :type => '2d6', - :table => <<'TABLE_TEXT_END' -地下牢。朽ち果てた骸の手首には鉄枷がはまったままだ。 -礼拝堂。何千本もの蝋燭が祭壇を照らす。 -厨房。得体の知れない鍋の中で何かが煮えたぎっている。 -客間。天蓋付きの寝台は分厚く暖かそうだ。 -中庭。ガゼボが配置されているが斬りかかってはいけない。 -天井の高い廊下。あちこちに風景画が飾られている。 -植木の迷路。動物型の植木が沈黙の咆哮をあげている。 -玄関ホール。もちろん二階まで吹き抜けで階段がある。 -食堂。果てしなく長いテーブルに椅子がセットされている。 -時計塔。巨大な歯車とシャフトの組み合わせが回る。 -領主の部屋。重厚なデスクと背後の本棚が威圧的だ。 -TABLE_TEXT_END - }, - - 'SLST' => { - :name => "学校シーン表", - :type => '2d6', - :table => <<'TABLE_TEXT_END' -廊下。消防ホースの箱がやたらと赤く目立つ -運動場。石灰と混ざり合った白っぽい砂が積もっている。 -保健室。白いカーテンが揺れ、同じく白いベッドで影がおどる。 -講堂。ワックスのかかった床が、靴とこすれて甲高い音で鳴る。 -人でいっぱいの教室。みな座ってはいるがやかましい。 -誰もいない教室。時計の音がやけに大きく響く。 -昇降口。いくつも並んだ大きな下駄箱に名前が書かれている。 -音楽室。作曲家の肖像画がピアノを見下ろしている。 -理科室。薬品と埃の臭いが鼻をつく。 -工作室。机の大きな傷には木くずが詰まっている。 -開かずの教室。ここは真っ暗だ……出口も入り口もない。 -TABLE_TEXT_END - }, - - 'TD1T' => { - :name => "時間経過表十代", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -自分探しの旅に出た。旅先で見つけた新しい自分は、なかなか好きになれるやつだった。\n狩人は主武装のうち一つを変更してもかまわない。変更したらキャラクターの再構築を行う。 -吸血鬼狩りを通して、仲間との絆が深まる。\n仲間の狩人から一人を目標として選び、その狩人に対する関係【震度】を2増加させる。\nその状態でセッションを開始する。 -自分の将来に不安を覚え、吸血鬼狩り以外のことにチャレンジしてみるものの、どれも中途半端でうまくいかない。\n狩人は「動転」の変調を発動した状態でセッションを開始する。 -最近イヤなことがあって、相当不機嫌な状態になっている。\n【モラル】の現在値を0にし、その状態でセッションを開始する。 -新しい友達が出来る。\n狩人と同じ年齢の協力者を、狩人のプレイヤーが作成する。レベルは1とすること。\nこの協力者はセッションに登場し、獲得すれば使用できる。 -ちょっと見ないうちに協力者が成長する。\n協力者を獲得している場合、その中から一人を選ぶ。\nその協力者のレベルが1上昇する。\n協力者を獲得していない場合、効果はない。 -TABLE_TEXT_END - }, - - 'TD2T' => { - :name => "時間経過表二十代", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -表の仕事や学業で大抜擢され、若き天才として大いに名をはせる。\n【モラル】が3増加し、その状態でセッションを開始する。 -人生の新たな楽しみを発見する。\n【幸福】を一つ新たに設定し、獲得できる。\n【人間力】が足りない場合は、入れ替えるか無視すること。 -恋人との関係がシリアスなトラブルに変化する。\nまだ解決してはいないが、かなりのストレスだ。\n【感情】が3増加した状態でセッションを開始する。 -休暇中に無茶をして大怪我を負ってしまう。\n吸血鬼狩りはタイミングが命なので、怪我をおして参加することになる。\n狩人は「重症」の変調を発動した状態でセッションを開始する。 -新しい友達が出来た。\n狩人と五歳差までで任意の年齢の協力者を、狩人のプレイヤーが作成する。\nレベルは1とすること。この協力者はセッションに登場し、獲得すれば使用できる。 -協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\n協力者を獲得していない場合、狩人のイベントとなり効果はない。 -TABLE_TEXT_END - }, - - 'TD3T' => { - :name => "時間経過表三十代", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -ある種の慎重さを身につけ、常に狩りの準備を怠らないようになる。\n再殺武装から一つを選び、それをすでに獲得した状態でセッションを開始する。 -拠点の運営に協力し、管理を最適化して簡単に利用できるようにした。\n狩人側の拠点を一つ選び、その必要レベルを1減少させる。\nただし1未満にはならない。 -だんだんと責任のある立場になるにつれ、それに縛られているような感慨を覚えるようになる。\n「捕縛」の変調を発動した状態でセッションを開始する。 -狩人の噂を聞きつけた協力者が現れ、知己を得る。\n狩人と十歳差までで任意の年齢の協力者を、狩人のプレイヤーが作成する。\nレベルは1とすること。\nこの協力者はセッションに登場し、獲得すれば使用できる。 -軽い生活習慣病を発症する。特に狩りに影響はしない。 -協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\n協力者を獲得していない場合、狩人のイベントとなり効果はない。 -TABLE_TEXT_END - }, - - 'TD4T' => { - :name => "時間経過表四十代", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -だんだんと物事に動じず、迷わなくなってきた自分に気づく。\nこのセッションの遭遇シーンでは感情属性を任意に設定できる。 -重厚さを増す大人のオーラによって、他の狩人からの尊敬を勝ち取ることに成功する。\n仲間の狩人から目標を一人選び、目標から狩人への関係【深度】を1増加する。 -後進の育成に熱心になる。\nこのセッションの間、自分の追跡シーンに自分より若い味方キャラクターが登場している場合、判定にプラス1の修正がつく。\nこの修正は累積しない。 -大病発覚。\n狩人に後継者がいる場合、結果フェイズで狩人は死亡する。\n後継者がいない場合、またはセッション中に決別したり裏切られた場合には、奇跡的に回復する。 -幅広い人脈の中から吸血鬼の実在に耐えられる人物を見つけ出す。\n狩人と二十歳差までで任意の年齢の協力者を、狩人のプレイヤーが作成する。\nレベル1とすること。\nこの協力者はセッションに登場し、獲得すれば使用できる。 -協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\n協力者を獲得していない場合、狩人のイベントとなり効果はない。 -TABLE_TEXT_END - }, - - 'TD5T' => { - :name => "時間経過表五十代", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -長年の経験によって【人間力】がこのセッションの間だけ1増加し、【幸福】も一つ獲得する。\nこの効果は累積せず、すでに【人間力】が5の場合は効果なし。 -武器の扱いにトリックを付け加える。\n【ダメージ修正】がこのセッションの間だけ1増加する。この効果は累積しない。 -長年酷使されてきた体が、そろそろ狩りについていけなくなる。\n「捕縛」の変調を発動した状態でセッションを開始する。 -大病発覚。狩人に後継者がいる場合、結果フェイズで狩人は死亡する。\n後継者がいない場合、またはセッション中に決別したり裏切られた場合には、奇跡的に回復する。 -協力者を獲得している場合、そのうち一人が爆発的な成長を見せる。\nその協力者のレベルを2上げる。協力者を獲得していない場合、効果はなし。 -協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\n協力者を獲得していない場合、狩人のイベントとなり効果はない。 -TABLE_TEXT_END - }, - - 'TD6T' => { - :name => "時間経過表六十代", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -偉大な狩人の風格を漂わせることに成功。\n狩人のことを慕い、狩人に対して【深度】5の関係があるレベル7の協力者を獲得する。\n望むなら即座に後継者にしてもよい。 -吸血鬼の永遠の命に対する憧れが膨れあがってくる。\nセッションの間、「誘惑」に対する抵抗判定にマイナス2の修正がつく。\nこの効果は累積しない。 -隠退生活に思いをはせ始める。\nもはや狩りにあまり積極的にはなれず、【モラル】の現在値を0にし、その状態でセッションを開始する。 -大病発覚。\n狩人に後継者がいる場合、結果フェイズで狩人は死亡する。\n後継者がいない場合、またはセッション中に決別したり裏切られた場合には、奇跡的に回復する。 -ふと死期を悟る。次の狩りが最後になるだろう。\nセッションの間、暴走のたびに【激情】を二つ獲得できる。\n結果フェイズで狩人は死亡する。 -協力者を獲得している場合、その指導に一年をかける。\n協力者のなかから一人を選び、その協力者のレベルを2上げる。\n協力者を獲得していない場合、のんびりした一年だった。 -TABLE_TEXT_END - }, - - 'TDHT' => { - :name => "時間経過表半吸血鬼", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -じっくりと時間をかけて、敵吸血鬼の個性を研究する。\nこのセッションの間、吸血鬼を目標とした「前哨戦」の判定にプラス1の修正がつく。\nこの効果は累積しない。 -自分の血の力について考慮を深め、より自由に使いこなせるようになる。\n修得している血戒グループのアビリティから一つを選び、その名前に「+」をつけること。\nそのアビリティの反動はやはり二倍だが、【感情】の増加にすることができる。 -吸血鬼の強大な力に対する憧れが膨れあがってくる。\nセッションの間、「誘惑」に対する抵抗判定にマイナス2の修正がつく。\nこの効果は累積しない。 -種族がらみのイヤなイベントが起こった。\n【モラル】の現在値を0にし、その状態でセッションを開始する。 -吸血鬼に転成を持ちかけられる。\n敵の吸血鬼に対する関係【深度】が1増加し、その状態でセッションを開始する。 -新しい友達が出来る。\n任意の年齢の協力者を、狩人のプレイヤーが作成する。\nレベルは1とすること。\nこの協力者はセッションに登場し、獲得すれば使用できる。 -TABLE_TEXT_END - }, - }.freeze - - setPrefixes(['RT', 'ST', 'IST', 'BRT', 'CHT', 'SHT', 'DHT', 'LHT', 'EHT', 'AST', 'MIT', 'SIT'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/BloodMoon.rb b/src/src_bcdice/diceBot/BloodMoon.rb deleted file mode 100644 index 24880c371..000000000 --- a/src/src_bcdice/diceBot/BloodMoon.rb +++ /dev/null @@ -1,450 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class BloodMoon < DiceBot - # ゲームシステムの識別子 - ID = 'BloodMoon' - - # ゲームシステム名 - NAME = 'ブラッド・ムーン' - - # ゲームシステム名の読みがな - SORT_KEY = 'ふらつとむうん' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - return " > ファンブル(【余裕】が 0 に)" - elsif dice_total >= 12 - return " > スペシャル(【余裕】+3)" - elsif total >= target - return " > 成功" - else - return " > 失敗" - end - end - - def rollDiceCommand(command) - command = command.upcase - output = '1' - type = "" - total_n = "" - - debug('getTableResult command', command) - - case command - - when 'ST' - type = 'シーン表' - output, total_n = getSceneTable - when 'IST' - type = '先制判定指定特技表' - output, total_n = getInitiativeSkillTable - when 'BRT' - type = '身体部位決定表' - output, total_n = getBodyRegionTable - when 'CHT' - type = '自信幸福表' - output, total_n = getConfidenceHappyTable - when 'SHT' - type = '地位幸福表' - output, total_n = getStatusHappyTable - when 'DHT' - type = '日常幸福表' - output, total_n = getDailyHappyTable - when 'LHT' - type = '人脈幸福表' - output, total_n = getLinkHappyTable - when 'EHT' - type = '退路幸福表' - output, total_n = getEvacuationHappyTable - when 'AST' - type = 'ランダム全特技表' - output, total_n = getAllSkillTable - when 'MIT' - type = '軽度狂気表' - output, total_n = getMildInsanityTable - when 'SIT' - type = '重度狂気表' - output, total_n = getSevereInsanityTable - else - return getTableCommandResult(command, TABLES) - end - - return output if output == '1' - - output = "#{type}(#{total_n}) > #{output}" - return output - end - - def getRelationTable - table = [ - '共感/不信', - '友情/忌避', - '愛情/嫌悪', - '忠義/侮蔑', - '憧憬/引け目', - '保護欲/殺意', - ] - return get_table_by_1d6(table) - end - - def getSceneTable - table = [ - 'どこまでも広がる荒野。風が吹き抜けていく。', - '血まみれの惨劇の跡。いったい誰がこんなことを?', - '都市の地下。かぼそい明かりがコンクリートを照らす。', - '豪華な調度が揃えられた室内。くつろぎの空間を演出。', - '普通の道端。様々な人が道を行き交う。', - '明るく浮かぶ月の下。暴力の気配が満ちていく。', - '打ち捨てられた廃墟。荒れ果てた景色に心も荒む。', - '生活の様子が色濃く残る部屋の中。誰の部屋だろう?', - '喧しい飲食店。騒ぐ人々に紛れつつ自体は進行する。', - 'ざわめく木立。踊る影。', - '高い塔の上。都市を一望できる。', - ] - return get_table_by_2d6(table) - end - - def getInitiativeSkillTable - table = [ - '《自信/社会5》', - '《地位/社会9》', - '《日常/環境3》', - '《人脈/環境9》', - '《退路/環境11》', - '《心臓/胴部7》', - ] - return get_table_by_1d6(table) - end - - def getBodyRegionTable - table = [ - '《脳》', - '《利き腕》', - '《利き脚》', - '《消化器》', - '《感覚器》', - '《攻撃したキャラクターの任意》', - '《口》', - '《呼吸器》', - '《逆脚》', - '《逆腕》', - '《心臓》', - ] - return get_table_by_2d6(table) - end - - def getConfidenceHappyTable - table = [ - '【戦闘能力】あなたはハンターとしての自分の戦闘能力に自信を持っています。たとえ負けようとも、それは運か相手か仲間が悪かったので、あなたの戦闘能力が低いわけではありません。', - '【美貌】あなたは自分が美しいことを知っています。他人もあなたを美しいと思っているはず。鏡を見るたびに、あなたは自分の美しさに惚れ惚れしてしまいます。', - '【血筋】あなたは名家の血を引く者です。祖先の栄光を背負い、家門の名誉を更に増すために、偉業をなす運命にあります。または、普通にいい家族に恵まれているのかもしれません。', - '【趣味の技量】あなたは趣味の分野では第一人者です。必ずしも名前が知れ渡っているわけではありませんが、どんな相手にも負けない自信があります。どんな趣味かは自由です。', - '【仕事の技量】職場で最も有能なもの、それがあなたです。誰もあなたの仕事の量とクオリティを超えられません。どんな仕事をしているかは自由に決めて構いません。', - '【長生き】あなたはハンターとしてかなりの年月を過ごしてきたが、まだ死んでいません。これは誇るべきことです。そこらの若造には、まだまだ負けていません。', - ] - return get_table_by_1d6(table) - end - - def getStatusHappyTable - table = [ - '【役職】あなたは職場、あるいはハンターの組織のなかで高い階級についています。そのため、下にいるものには命令でき、相応の敬意を払われます。', - '【英雄】あなたはかつて偉業を成し遂げたことがあり、誰でもそれを知っています。少々くすぐったい気もしますが、英雄として扱われるのは悪くありません。', - '【お金持ち】あなたには財産があります。それも生半可な財産ではなく、人が敬意を払うだけの財産です。あなたはお金に困ることはなく、その幸せを知っています', - '【特権階級】あなたは国が定める特権階級の一員です。王族や貴族をイメージするとわかりやすいでしょう。あなたは、どこに行っても、それ相応の扱いを受けることになります。', - '【人格者】誰もが認める人格者としての評判を持っているため、あなたのところには悩みを抱えた人々が引きも切らずに押しかけてきます。大変ですが、ちょっと楽しい', - '【リーダー】あなたは所属している何らかの組織を率いる立場にあります。会社の社長や、部活動の部長などです。あなたは求められてその地位にあります', - ] - return get_table_by_1d6(table) - end - - def getDailyHappyTable - table = [ - '【家】あなたの家はとても快適な空間です。コストと時間をかけて作り上げられた、あなたが居住するための空間。それはあなたの幸せの源なのです。', - '【職場】あなたは仕事が楽しくて仕方ありません。意義ある仕事で払いも悪くなく、チームの仲間はみんないい奴ばかりです。残業は……ちょっとあるかもしれません。', - '【行きつけの店】あなたには休みの日や職場帰りに立ち寄る行きつけの店があり、そこにいる時間は安らぎを感じることができます。店員とも顔見知りです。', - '【ベッド】あなたは動物を飼っています。よく懐いた可愛い、またはかっこいい動物です。一緒に過ごす時間はあなたに幸せを感じさせてくれます', - '【親しい隣人】おとなりさんやお向かいさん。よくお土産を渡したり、小さな子供を預かったりするような仲です。風邪を引いたときには、家事を手伝ってくれることも。', - '【思い出】あなたは昔の思い出を心の支えにしています。何らかの幸せな記憶……それがあれば、この先にどんなつらいことが待っていても大丈夫でしょう。', - ] - return get_table_by_1d6(table) - end - - def getLinkHappyTable - table = [ - '【理解ある家族】あなたの家族は、あなたがハンターであることを知ったうえで協力してくれます。これがどれほど稀なことかは、仲間に聞けば分かるでしょう。', - '【有能な友人】あなたの友人は、モンスターの存在とあなたの本当の仕事を知っています。そして、直接戦うだけの技量はないものの、あなたの探索をサポートしてくれます。', - '【愛する恋人】あなたには愛する人がいます。見つめあうだけで、あなたの心は舞い上がり……帰ってきません。この恋人を失うなんて、考えるだけでも恐ろしいことです。', - '【同志の権力者】あなたにはモンスターの存在を知りながら、奴らに屈していない権力者との繋がりがあります。様々な違法行為をはたらく際に、役に立つでしょう。', - '【得がたい師匠】あなたは使う武器を学んだ師匠がいて、それを通して兄弟弟子とも繋がりがあります。過酷な訓練を経て、彼らとあなたには強い絆ができています。', - '【可愛い子供】あなたには子供がいます。聡明で魅力的、しかも健康な……将来を嘱望される子供です。子供が掴む幸せな未来を思う時、あなたの顔には笑みが広がります。', - ] - return get_table_by_1d6(table) - end - - def getEvacuationHappyTable - table = [ - '【故郷の町】あなたは生まれ育った街を離れてハンターとして活動しています。いつの日かあの町へ帰る……その思いがあなたを戦いのなかで支えています。', - '【待っている人】あなたがハンターをやめて、普通の暮らしに戻ることを待ちわびている人がいます。そして、あなたはその思いに応えたいと思っています。', - '【就職先】あなたは狩りの報酬がなくなっても、すぐに入ることができる就職先があるので安心です。有能なのか過疎地域なのかは分かりませんが。', - '【配偶者】あなたはハンターをやめたあとに家庭に入ろうと考えています。暮らしの設計はすでに済み、あとは実行するだけなのですが、なかなかそうはいきません。', - '【大志】あなたがハンターとして活動しているのは、やむにやまれぬ事情があるからです。あなたには「本当にやりたかったこと」があり、いつかその夢をかなえる気でいます。', - '【空想の王国】あなたには辛いことがあると白昼夢にふける、あるいは物語に没入する癖があり、そのときには非常に幸せな気分になることができます。', - ] - return get_table_by_1d6(table) - end - - # ランダム全特技表 - # 1d6で分野選択->2d6で分野から特技選択 - def getAllSkillTable - tableCSKT = [ - '社会2:怯える', - '社会3:脅す', - '社会4:考えない', - '社会5:自信', - '社会6:黙る', - '社会7:伝える', - '社会8:だます', - '社会9:地位', - '社会10:笑う', - '社会11:話す', - '社会12:怒る', - ] - - tableHSKT = [ - '頭部2:聴く', - '頭部3:感覚器', - '頭部4:見る', - '頭部5:反応', - '頭部6:考える', - '頭部7:脳', - '頭部8:閃く', - '頭部9:予感', - '頭部10:叫ぶ', - '頭部11:口', - '頭部12:噛む', - ] - - tableASKT = [ - '腕部2:締める', - '腕部3:殴る', - '腕部4:斬る', - '腕部5:利き腕', - '腕部6:撃つ', - '腕部7:操作', - '腕部8:刺す', - '腕部9:逆腕', - '腕部10:振る', - '腕部11:掴む', - '腕部12:投げる', - ] - - tableBSKT = [ - '胴部2:塞ぐ', - '胴部3:呼吸器', - '胴部4:止める', - '胴部5:受ける', - '胴部6:測る', - '胴部7:心臓', - '胴部8:逸らす', - '胴部9:かわす', - '胴部10:耐える', - '胴部11:消化器', - '胴部12:落ちる', - ] - - tableLSKT = [ - '脚部2:走る', - '脚部3:迫る', - '脚部4:蹴る', - '脚部5:利き脚', - '脚部6:跳ぶ', - '脚部7:仕掛ける', - '脚部8:踏む', - '脚部9:逆脚', - '脚部10:這う', - '脚部11:伏せる', - '脚部12:歩く', - ] - - tableESKT = [ - '環境2:休む', - '環境3:日常', - '環境4:隠れる', - '環境5:待つ', - '環境6:現れる', - '環境7:人脈', - '環境8:捕らえる', - '環境9:開ける', - '環境10:逃げる', - '環境11:退路', - '環境12:休まない', - ] - - categoryNum, = roll(1, 6) - detailText = nil - detailNum = 0 - if categoryNum == 1 - detailText, detailNum = get_table_by_2d6(tableCSKT) - elsif categoryNum == 2 - detailText, detailNum = get_table_by_2d6(tableHSKT) - elsif categoryNum == 3 - detailText, detailNum = get_table_by_2d6(tableBSKT) - elsif categoryNum == 4 - detailText, detailNum = get_table_by_2d6(tableASKT) - elsif categoryNum == 5 - detailText, detailNum = get_table_by_2d6(tableLSKT) - elsif categoryNum == 6 - detailText, detailNum = get_table_by_2d6(tableESKT) - end - return detailText, "#{categoryNum},#{detailNum}" - end - - # 軽度狂気表 - def getMildInsanityTable - table = [ - '【誇大妄想】(判定に失敗するたびに【感情】が1増加する。)', - '【記憶喪失】(【幸福】の修復判定にマイナス2の修正。)', - '【こだわり】(戦闘中の行動を「パス」以外で一つ選択し、その行動をすると【感情】が6増加する。)', - '【お守り中毒】(「幸運のお守り」を装備していない場合、全ての2d6判定にマイナス1の修正。)', - '【不死幻想】(自分が受けるダメージが全て1増加する。)', - '【血の飢え】(戦闘中に最低1体でも死亡させないと、戦闘終了時に【感情】10増加。【激情】は獲得できない。)', - ] - return get_table_by_1d6(table) - end - - # 重度狂気表 - def getSevereInsanityTable - table = [ - '【幸福依存】(【幸福】を一つ選択し、その【幸福】が結果フェイズに失われたとき、死亡する。)', - '【見えない友達】(自分の関わる「関係を深める」判定にマイナス3の修正がつく。)', - '【臆病】(自分の行う妨害判定にマイナス2の修正がつく。)', - '【陰謀論】(「幸福を味わう」判定にマイナス3の修正がつく。)', - '【指令受信】(追跡フェイズBでの自分の行動は、可能な範囲でGMが決定する。)', - '【猜疑心】(自分が「連携攻撃」を行うとき、関係の【深度】をダメージに加えられない。)', - ] - return get_table_by_1d6(table) - end - - TABLES = - { - - 'ID2T' => { - :name => "導入タイプ決定表(ハード込み)", - :type => 'D66', - :table => <<'TABLE_TEXT_END' -11:依頼\n《概要》 ハンターは任意のキャラクターに他のハンターの【幸福】を守るように依頼され、その依頼を受ける。\n《目的》 他のハンターの【幸福】のうち一つを結果フェイズまで破壊されないこと。この【幸福】は、ゲームマスターが指定する。\n《報酬》 経験値2 -12:防衛\n《概要》 ハンターは今回の敵となるモンスターに【幸福】を狙われている。モンスターを倒さなければ【幸福】を守る事は出来ない。\n《目的》 自分の獲得している【幸福】のうち一つを結果フェイズで失わないこと。この【幸福】はゲームマスターが指定する。\n《報酬》 経験値2 -13:復讐\n《概要》 ハンターは今回の敵となるモンスターに負けたことがある。戦闘に敗北したのか、それとも【幸福】を壊されたのか。いずれにせよ、復讐の時だ。\n《目的》 結果フェイズまでにモンスターを無力化すること。\n《報酬》 経験値2 -14:関係\n《概要》 ハンターは、特定の人物が参加しているから、という理由で狩りに参加する。憧れているのかライバルなのか、単に仲がいいのかは自由。\n《目的》 結果フェイズの時点で他のハンターのうち一人との関係が、お互いに【深度】3以上になっていること。対象のハンターはシーンプレイヤーが決定する。\n《報酬》 経験値2 -15:挑戦\n《概要》 ハンターは今回の敵となるモンスターのことをなんらかの理由で知り、自分から戦いに赴く。\n《目的》 結果フェイズまでハンター全員が生き残り、かつ、フォロワーやモンスターに変化していないこと。\n《報酬》 経験値2 -16:救済\n《概要》 ハンターは今回の敵となるフォロワーのうち一人を救うために戦う。\n《目的》 結果フェイズまでに対象のフォロワーを「説得」で無力化する。このフォロワーはシーンプレイヤーが決定する。\n《報酬》 経験値2 -22:復調\n 《概要》 ハンターは正気を取り戻し、【狂気】を癒すために戦う。\n《目的》 結果フェイズまでに自分の【狂気】を2減らす。\n《報酬》 経験値2 -23:撃滅 \n《概要》 ハンターは狩りの対象であるモンスターを倒すために育成されていたり、モンスターに【幸福】を全て破壊された過去を持っている。\n《目的》 モンスターを自分で無力化する。\n《報酬》 経験値6 -24:競争 \n《概要》 ハンターは自分で決めたライバルに勝つために狩りを行う。\n《目的》 他のプレイヤーのハンターからライバルを一人選ぶ。結果フェイズの段階で、ライバルよりも多くのモンスターとフォロワーを攻撃で倒している事。このライバルはシーンプレイヤーが選択する。\n《報酬》 経験値6 -25:育成 \n《概要》 ハンターは仲間を成長させるために狩りに出る。\n《目的》 他の狩人すべてに導入タイプの目的を達成させる。\n《報酬》 達成した人数+2の経験値 -26:窮乏 \n《概要》 ハンターは貧乏なので、金のために狩りをしなければならない。\n《目的》 自分が装備しているアイテムから一つを対象として選ぶ。対象は即座に破壊される。そのうえで、結果フェイズまで対象が書いてあったアイテム欄を使用しない。この対象はシーンプレイヤーが選択する。\n《報酬》 経験値6 -33:泰然 \n《概要》 ハンターはクールでかっこいい自分のスタイルを守るために狩りをする。\n《目的》 結果フェイズまで【激情】を使用しない。\n《報酬》 経験値8 -34:対話 \n《概要》 ハンターはモンスターと話をするために追いかけていく。\n《目的》 モンスターに対する関係【深度】が2以上になっている状態で決戦フェイズに入る。\n《報酬》 経験値8 -35:完勝 \n《概要》 ハンターは今回の敵となるモンスターに勝ったことがある。今度こそ、とどめを刺すのだ。\n《目的》 部位ダメージを受けずにモンスターを無力化する。\n《報酬》 経験値4 -36:依頼(ハード) \n《概要》 ハンターは任意のキャラクターに他のハンターの【幸福】を守るように依頼され、その依頼を受ける。\n《目的》 他のハンターの【幸福】を一つも結果フェイズまで破壊されないこと。対象となるハンターは、ゲームマスターが指定する。\n《報酬》 経験値4 -44:防衛(ハード) \n《概要》 ハンターは今回の敵となるモンスターに自分の【幸福】を狙われている。モンスターを倒さなければ、【幸福】を守ることはできない。\n《目的》 自分の獲得している【幸福】を一つも結果フェイズで失わないこと。\n《報酬》 経験値4 -45:復讐(ハード) \n《概要》 ハンターは今回の敵となるモンスターに負けたことがある。戦闘に敗北したのか、それとも、【幸福】を壊されたのか。いずれにせよ、復讐の時だ。\n《目的》 結果フェイズまでにモンスターとフォロワー全てを攻撃で倒すこと。自分の攻撃でなくてもかまわない。\n《報酬》 経験値6 -46:関係(ハード) \n《概要》 ハンターは、特定の人物が参加しているから、という理由で狩りに参加する。憧れているのかライバルなのか、単に仲がいいのかは自由。\n《目的》 結果フェイズの時点で他のハンターのうち一人との関係が、お互いに【深度】5になっていること。対象のハンターはシーンプレイヤーが決定する。\n《報酬》 経験値4 -55:挑戦(ハード) \n《概要》 ハンターは今回の敵となるモンスターのことをなんらかの理由で知り、自分から戦いに赴く。\n《目的》 結果フェイズまでハンター全員が一度も無力化されずに生き残り、かつ、フォロワーやモンスターに変化していないこと。\n《報酬》 経験値6 -56:救済(ハード) \n《概要》 ハンターは今回の敵となるフォロワー全員を救うために戦う。\n《目的》 結果フェイズまでにフォロワー全員を「説得」で無力化する。\n《報酬》 経験値6 -66:振り直し -TABLE_TEXT_END - }, - - 'IDT' => { - :name => "導入タイプ決定表(ノーマル)", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -依頼\n《概要》 ハンターは任意のキャラクターに他のハンターの【幸福】を守るように依頼され、その依頼を受ける。\n《目的》 他のハンターの【幸福】のうち一つを結果フェイズまで破壊されないこと。この【幸福】は、ゲームマスターが指定する。\n《報酬》 経験値2 -防衛\n《概要》 ハンターは今回の敵となるモンスターに【幸福】を狙われている。モンスターを倒さなければ【幸福】を守る事は出来ない。\n《目的》 自分の獲得している【幸福】のうち一つを結果フェイズで失わないこと。この【幸福】はゲームマスターが指定する。\n《報酬》 経験値2 -復讐\n《概要》 ハンターは今回の敵となるモンスターに負けたことがある。戦闘に敗北したのか、それとも【幸福】を壊されたのか。いずれにせよ、復讐の時だ。\n《目的》 結果フェイズまでにモンスターを無力化すること。\n《報酬》 経験値2 -関係\n《概要》 ハンターは、特定の人物が参加しているから、という理由で狩りに参加する。憧れているのかライバルなのか、単に仲がいいのかは自由。\n《目的》 結果フェイズの時点で他のハンターのうち一人との関係が、お互いに【深度】3以上になっていること。対象のハンターはシーンプレイヤーが決定する。\n《報酬》 経験値2 -挑戦\n《概要》 ハンターは今回の敵となるモンスターのことをなんらかの理由で知り、自分から戦いに赴く。\n《目的》 結果フェイズまでハンター全員が生き残り、かつ、フォロワーやモンスターに変化していないこと。\n《報酬》 経験値2 -救済\n《概要》 ハンターは今回の敵となるフォロワーのうち一人を救うために戦う。\n《目的》 結果フェイズまでに対象のフォロワーを「説得」で無力化する。このフォロワーはシーンプレイヤーが決定する。\n《報酬》 経験値2 -TABLE_TEXT_END - }, - - 'RAT' => { - :name => "関係属性表", - :type => 'd66n', - :table => <<'TABLE_TEXT_END' -11:愛情 -12:憧れ -13:怒り -14:悲しみ -15:感謝 -16:期待 -21:憧れ -22:共感 -23:恐怖 -24:嫌悪 -25:困惑 -26:罪悪感 -31:怒り -32:恐怖 -33:殺意 -34:嫉妬 -35:憎悪 -36:忠義 -41:悲しみ -42:嫌悪 -43:嫉妬 -44:不信感 -45:侮蔑 -46:保護欲 -51:感謝 -52:困惑 -53:憎悪 -54:侮蔑 -55:満足感 -56:友情 -61:期待 -62:罪悪感 -63:忠義 -64:保護欲 -65:友情 -66:喜び -TABLE_TEXT_END - }, - }.freeze - - setPrefixes(['ST', 'IST', 'BRT', 'CHT', 'SHT', 'DHT', 'LHT', 'EHT', 'AST', 'MIT', 'SIT'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/CardRanker.rb b/src/src_bcdice/diceBot/CardRanker.rb deleted file mode 100644 index 8c8b03c00..000000000 --- a/src/src_bcdice/diceBot/CardRanker.rb +++ /dev/null @@ -1,257 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class CardRanker < DiceBot - # ゲームシステムの識別子 - ID = 'CardRanker' - - # ゲームシステム名 - NAME = 'カードランカー' - - # ゲームシステム名の読みがな - SORT_KEY = 'かあとらんかあ' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - return " > ファンブル" - elsif dice_total >= 12 - return " > スペシャル > " + getRandumMonster() - elsif total >= target - return " > 成功" - else - return " > 失敗" - end - end - - def rollDiceCommand(command) - command = command.upcase - - case command - when /^RM$/i - return getRandumMonster - when /^CM(\w)(\d+)$/i - color = Regexp.last_match(1).upcase - index = Regexp.last_match(2).to_i - return getMonster(color, index) - else - return getTableCommandResult(command, TABLES) - end - end - - def getRandumMonster - type = "ランダムモンスター選択" - colorTable = getColorTable - color, colorIndex = get_table_by_1d6(colorTable) - - monsters = getMonsterTables(colorIndex - 1) - monsterName, monsterIndex = get_table_by_2d6(monsters) - - output = "#{type}(#{colorIndex},#{monsterIndex}) > #{color}の#{monsterIndex}:#{monsterName}" - return output - end - - def getColorTable - ['白', '青', '緑', '金', '赤', '黒'] - end - - def getMonsterTables(colorIndex) - tables = [ - %w{白竜 僧侶 格闘家 斧使い 剣士 槍士 歩兵 弓兵 砲兵 天使 軍神}, - %w{水竜 魚 魚人 イカ 蟹 探偵 海賊 魔術師 使い魔 雲 水精霊}, - %w{緑竜 ワーム 鳥人 鳥 獣 獣人 エルフ 妖精 昆虫 植物 森精霊}, - %w{金竜 宝石 岩石 鋼 錬金術師 魔法生物 ドワーフ 機械 運命 女神 土精霊}, - %w{火竜 竜人 恐竜 戦車 蛮族 小鬼 大鬼 巨人 雷 炎 火精霊}, - %w{黒竜 闇騎士 怪物 忍者 妖怪 蝙蝠 吸血鬼 不死者 幽霊 悪魔 邪神}, - ] - - return tables[colorIndex] - end - - def getMonster(color, monsterIndex) - return nil if monsterIndex < 2 - - type = "モンスター選択" - - colorWords = ['W', 'U', 'V', 'G', 'R', 'B'] - colorIndex = colorWords.index(color) - debug("colorIndex") - - return nil if colorIndex.nil? - - colorTable = getColorTable - color = colorTable[colorIndex] - - monsters = getMonsterTables(colorIndex) - debug("monsters", monsters) - debug("monsterIndex", monsterIndex) - monsterName = monsters[monsterIndex - 2] - - return nil if monsterName.nil? - - output = "#{type} > #{color}の#{monsterIndex}:#{monsterName}" - return output - end - - TABLES = - { - - 'BFT' => { - :name => "バトルフィールド表", - :type => '1D6', - :table => <<'TABLE_TEXT_END' -ハイ・アンティ/戦闘フェイズの終了時、勝者は通常習得できるモンスターカード一つに加えて、もう一つ敗者からモンスターカードを選んで手に入れることができる。//通常よりも多くのカードを賭けの対象にするルール。 -バーニング/ラウンドの終了時、すべてのキャラクターは【LP】現在値を3点失う。//マグマの近くや極寒の地など体力を削られるような過酷な環境で行われるルール。 -ノーマル/特に影響なし。//通常のルール。 -ハード/すべてのキャラクターの判定にプラス1の修正を加える。また、ラウンド終了時にすべてのキャラクターはモンスターカードを一つ選んで破壊状態(ルールブックP187参照)にしなければならない。//風の強い場所や水中など、カードを扱いにくい環境でのルール。 -スピード/モンスターカードのリスクが1高いものとして扱われる。また、判定に失敗した場合、速度から振り落とされて1D6のダメージを受ける。//バイクやローラーボードなどを使って行われる高速カードバトルルール。 -デスルール/戦闘フェイズでも死亡判定が発声する。また、戦闘不能になったキャラクターは即座に死亡判定を行う。ただし、攻撃を行った側がデスルールを使用しないことを選択すれば、死亡判定は発生しない。//モンスターによって実際のダメージを与える、死の危険性があるルール。 -TABLE_TEXT_END - }, - - 'CDT' => { - :name => "崩壊運命表", - :type => '1D6', - :table => <<'TABLE_TEXT_END' -レジェンドカードがあなたを崩壊する大地に呼び寄せた。暴虐な振る舞いをするダークランカーを倒すことをレジェンドカードは望んでいる。 -あなたはひょんなことから人を助けた。すると、あなたはいつの間にか救世主と呼ばれる存在になっていた、救世主であるあなたに人々は懇願する。ダークランカーを倒してくれと。 -あなたの住むところはダークランカーの力が及ばない楽園であった。しかし、楽園はダークランカー一味の襲撃にあい、あなただけが生き残ってしまった。楽園を出たあなたは戦いを決意する。 -世の中は変わった。だが、愛する人(もしくは愛する物や家族)は健在だ。あなたは愛する人を護るためにも、ダークランカーを倒すべく動き始めた。 -あなたはこの世界が好きだ。それはどんな理由でもよい。しかし、ダークランカーが持つダークカードはこの世界を壊す。ならば、倒してこの世界を守らねばならない。 -崩壊していく大地。泣き叫ぶ人々の声。あなたはこの状況を作ったのが、あなたの身内であると知る。ダークカードの手から身内を救うためにも、あなたはカードを手にとった。 -TABLE_TEXT_END - }, - - 'CST' => { - :name => "街中場所表", - :type => '1D6', - :table => <<'TABLE_TEXT_END' -カードショップ/ソウルカードを遊ぶ者たちが集まる場所。プレイスペースもあれば、カードの販売もしている。 -ビル街/ビルが立ち並ぶ街。ビジネスマンが忙しなく動き、チェーン店が多く見られる。 -駅前/人が集まる駅前。電車から降りてくる人は多く、今日も人と人がすれ違う。 -食事処/レストランから大衆食堂、喫茶店やバーなど、食事は人の活力であり、カードランカーにも元気は必要だ。 -道路/長く広い道路。車と人が通過していく場所だが、時おりトラブルを抱えたカードランカー同士が戦っている。 -プール/都会にあるプール。都会の生活に疲れた人々が集まる場所。時おり、ソウルカードの戦いも見られる。 -TABLE_TEXT_END - }, - - 'DT' => { - :name => "運命表", - :type => '1D6', - :table => <<'TABLE_TEXT_END' -あなたが欲しているカードはダークランカーが持っているかもしれないという情報を掴んだ。ダークランカーを倒し、アンティルールでカードを手に入れなければならない。 -ダークランカーとなった人物とあなたはカード仲間であったが、ある日見たその人物はダークカードの力にとり憑かれて豹変していた。あなたは仲間をカードによって救うため、戦いを決意した。 -ダークランカーはあなたの仲間や身内、大切なモノを傷つけた(壊した)。あなたの大切なものを傷つけたダークランカー、許しはしない。 -あなたの持つレジェンドカードが、ダークランカーもしくは他のレジェンドカードが出現することを察知した。レジェンドカードに導かれるまま、キミはダークランカー(レジェンドカード)を探し始めた。 -カードランカーの組織やソウルカードの安定を願う人からそのダークランカーを倒すように依頼を受けた、あなたはその仕事を受ける価値があると思った。そう思った理由は報酬でもいいし、あなたの流儀でもよい。 -ダークランカーとあなたは偶然にも出会ってしまった。ダークランカーは危険な存在だ。見てしまった以上、放っておくわけにはいかない。 -TABLE_TEXT_END - }, - - 'GDT' => { - :name => "学園運命表", - :type => '1D6', - :table => <<'TABLE_TEXT_END' -あなたが過ごしているクラスや寮、部活が潰されそうになった。その裏にはダークランカーの影響があるらしい。 -学園の偉い人から、カードランカーであるあなたに調査依頼が入った。どうやらダークランカーが学園に干渉しているとのこと。 -学園内のカードが奪われた。ダークランカーの影響だろう。大切にされていたカードを取り戻すために、あなたは立ち上がった。 -学内に邪悪な影響を受けたカードが入り込んでいた。おそらく、ダークランカーの仕業に違いない。 -ダークランカーによって被害を受けた生徒があなたに相談してきた。あなたはその生徒のためにもダークランカーの調査に乗り出した。 -ダークランカーの影響を受け、授業や部活動はまともにできなくなってしまった。あなたは元の学校生活を再開させるためにも、調査を始めた。 -TABLE_TEXT_END - }, - - 'OST' => { - :name => "郊外場所表", - :type => '1D6', - :table => <<'TABLE_TEXT_END' -カードショップ/ソウルカードを遊ぶ者たちが集まる場所。少し治安と客層が悪いが、賞金稼ぎも集まる。 -荒野/動植物も少なく、ピリピリとした雰囲気のある場所。 -遺跡/古代の遺跡。レジェンドカードやモンスターカードはこうした場所に発生したり、隠されていたりすることが多い。 -平原/どこまでも続く平原。動物も温厚であり、生い茂る草花が柔らかな印象を与える場所だ。 -山岳/険しい道が続く山。カードの精霊たちが生息していることもあるが、カード山賊団には気をつけねばならない。 -海川/海や川。山と同じくカードの精霊たちが住んでいる場所だ。安らげる場所でもあり、休憩している人がソウルカードをしている。 -TABLE_TEXT_END - }, - - 'GST' => { - :name => "学園場所表", - :type => '1D6', - :table => <<'TABLE_TEXT_END' -購買/学生にとっては学園内で唯一買い物ができる場所。パンの他に、カードパックが売っている。 -グラウンド/体育館/運動するのに適した広い空間だが、同時にソウルカードをやるのにもうってつけの場所である。 -屋上/校舎の屋上は一部の生徒には人気のスポットだ。今日も強い風が彼らを迎えている。 -教室/日が昇っている間は、学生たちの声で賑やかな場所。夕暮れからは少し物哀しく、寂しい。 -校舎裏/学校の中でも珍しく人目につかない場所。不良たちがソウルカードをやっている姿が見られる。 -部活棟/部活をやる者のために用意された場所。しかし、サボってソウルカードをやっているところも。 -TABLE_TEXT_END - }, - - 'ST' => { - :name => "場所表", - :type => '1D6', - :table => <<'TABLE_TEXT_END' -カード系/ショップや大会の会場など、ソウルカードに関係がある場所。カードランカーたちも集まってくる。 -自然/公園や山など、自然の息吹が感じられる場所。耳を澄ませばカードの声も聞こえるかもしれない。 -神秘/古代の施設や、神社・教会などの神秘的な場所。レジェンドカードが隠されているかもしれない。 -安息/自宅など、安らげる空間。そこはあなたが安らげる場所であり、思い出の地なのかもしれない。 -街中/人々が住む街中。何気なく落ちているカードの中には、価値があるものもあるかも。 -水辺/プールや海岸など、水が近くに存在する場所。ひとまず、ここでひと息つけそうだ。 -TABLE_TEXT_END - }, - - 'TDT' => { - :name => "大会運命表", - :type => '1D6', - :table => <<'TABLE_TEXT_END' -あなたは友人と共に大会に出場した。しかし、友人はダークランカーによって倒されてしまった。 -あなたは大会の商品を狙い、大会に出場した。だが、ダークランカーもそれを狙っているらしい。 -あなたは大会の運営者から、大会に関わっているダークランカーの撃破を依頼された。 -あなたはカードの導くままに、大会に関わってくるダークランカーの出現を察知した。 -あなたは大会の一選手として戦っていた。だが、謎の刺客によって襲われた。きっとダークランカーの仕業に違いない。 -あなたは大会に出場し、優勝候補と言われているカードランカーだ。だが、そんなキミをダークランカーは襲った。 -TABLE_TEXT_END - }, - - 'WT' => { - :name => "変調表", - :type => '1D6', - :table => <<'TABLE_TEXT_END' -猛毒/ラウンド終了時に【LP】の現在値を3点失う。また【LP】の現在値を回復できない。 -炎上/ラウンド終了時に、モンスターカードを一つ選び破壊状態にしなければならない。既に破壊状態になっているものは選べない。 -妨害/攻撃判定にマイナス2の修正を受ける。 -捕縛/ブロック判定にマイナス2の修正を受ける。 -召喚制限/「タイプ:補助」のモンスターカードを使用できない。 -暗闇/「タイプ:支援」のモンスターカードを使用できない。 -TABLE_TEXT_END - }, - }.freeze - - setPrefixes(['RM', 'CM.*'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/ChaosFlare.rb b/src/src_bcdice/diceBot/ChaosFlare.rb deleted file mode 100644 index b26c42add..000000000 --- a/src/src_bcdice/diceBot/ChaosFlare.rb +++ /dev/null @@ -1,188 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/command_parser' - -class ChaosFlare < DiceBot - # ゲームシステムの識別子 - ID = 'ChaosFlare' - # ゲームシステム名 - NAME = 'カオスフレア' - - # ゲームシステム名の読みがな - SORT_KEY = 'かおすふれあ' - - # ダイスボットの使い方 - HELP_MESSAGE = <=目標値] - CF以外は全て省略可能 - 例: - - CF 2D6,クリティカル値12,ファンブル値2で判定 - - CF+10@10 修正値+10,クリティカル値10で判定 - - CF+10#3 修正値+10,ファンブル値3で判定 - - CF+10>=10 目標値を指定した場合、差分値も出力する - - 3CF+10@10#3>=10 3D6での判定 - - CF@9#3+8>=10 - -2D6 - ファンブル値2で判定する。クリティカルの判定は行われない。 - 目標値が設定された場合、差分値を出力する。 - - 2D6+4>=10 - -各種表 - FT: 因縁表 - FTx: 数値を指定すると因果表の値を出力する - - FT -> 11から66の間でランダム決定 - - FT23 -> 23の項目を出力 - - FT0 - - FT7 -INFO_MESSAGE_TEXT - - setPrefixes(['\d*CF.*', 'FT\d*']) - - # ダイスボット設定後に行う処理 - # @return [void] - def postSet - if bcdice - bcdice.cardTrader.set2Decks2Jokers - # 手札の他のカード置き場 - bcdice.cardTrader.card_place = 0 - # 場札のタップ処理の必要があるか? - bcdice.cardTrader.canTapCard = false - end - end - - # ゲーム別成功度判定(2D6)。以前の処理をそのまま残しています。 - def check_2D6(total, dice_total, _dice_list, cmp_op, target) - return '' if target == '?' - - output = '' - - if dice_total <= 2 - total -= 20 - output = " > ファンブル(-20)" - end - - unless cmp_op == :>= - return output - end - - if total >= target - output += " > 成功" - if total > target - output += " > 差分値#{total - target}" - end - else - output += " > 失敗 > 差分値#{total - target}" - end - - return output - end - - def rollDiceCommand(command) - if command.start_with? "FT" - roll_fate_table(command) - else - cf_roll(command) - end - end - - private - - # 因縁表 - def roll_fate_table(command) - m = /^FT(\d+)?/.match(command) - if m[1] - num = m[1].to_i - if [0, 7].include?(num) - return "因果表(#{num}) > #{FATE_TABLE[num][0]}" - end - - dice1 = (num / 10).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - dice2 = num % 10 - if !(1..6).include?(dice1) || !(1..6).include?(dice2) - return nil - end - else - dice1, = roll(1, 6) - dice2, = roll(1, 6) - end - - index1 = dice1 - index2 = (dice2 / 2).floor - 1 # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - return "因果表(#{dice1}#{dice2}) > #{FATE_TABLE[index1][index2]}" - end - - # カオスフレア専用コマンド - # @param command [String] - # @return [String, nil] - def cf_roll(command) - parser = CommandParser.new(/\d*CF/) - - @cmd = parser.parse(command) - unless @cmd - return nil - end - - times = @cmd.command == "CF" ? 2 : @cmd.command.to_i - critical = @cmd.critical || 12 - fumble = @cmd.fumble || 2 - @cmd.dollar = nil - - if times < 0 || ![:>=, nil].include?(@cmd.cmp_op) - return nil - end - - dice_total, dice_list_text = roll(times, 6) - - is_critical = dice_total >= critical - is_fumble = dice_total <= fumble - - total = - if is_critical - 30 - elsif is_fumble - -20 - else - dice_total - end - - total += @cmd.modify_number - - sequence = [ - "(#{@cmd.to_s(:after_modify_number)})", - "#{dice_total}[#{dice_list_text}]", - total.to_s, - ("0" if total < 0), - ("クリティカル" if is_critical), - ("ファンブル" if is_fumble), - ("差分値 #{difference(total)}" if @cmd.target_number), - ].compact - - return sequence.join(" > ") - end - - # @param total [Integer] 合計値 - # @return [Integer] 差分値 - def difference(total) - if total < 0 - -@cmd.target_number - else - total - @cmd.target_number - end - end - - # 表を振るのに使う定数的なやつ。 - FATE_TABLE = [ - ["腐れ縁"], - ["純愛", "親近感", "庇護"], - ["信頼", "感服", "共感"], - ["友情", "尊敬", "慕情"], - ["好敵手", "期待", "借り"], - ["興味", "憎悪", "悲しみ"], - ["恐怖", "執着", "利用"], - ["任意"] - ].freeze -end diff --git a/src/src_bcdice/diceBot/Chill.rb b/src/src_bcdice/diceBot/Chill.rb deleted file mode 100644 index 49be22583..000000000 --- a/src/src_bcdice/diceBot/Chill.rb +++ /dev/null @@ -1,159 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Chill < DiceBot - # ゲームシステムの識別子 - ID = 'Chill' - - # ゲームシステム名 - NAME = 'Chill' - - # ゲームシステム名の読みがな - SORT_KEY = 'ちる' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 100 - " > ファンブル" - elsif total > target - " > 失敗" - elsif total >= (target * 0.9) - " > L成功" - elsif total >= (target / 2) - " > M成功" - elsif total >= (target / 10) - " > H成功" - else - " > C成功" - end - end - - def rollDiceCommand(command) - roll_strike_rank_result(command) - end - - def roll_strike_rank_result(string) - debug('strike_rank begin string', string) - - output = '' - wounds = 0 - sta_loss = 0 - dice = '' - dice_add = "" - dice_str = "" - - unless /(^|\s)[sS]?(SR|sr)(\d+)($|\s)/ =~ string - debug('invalid string', string) - return "1" - end - - strikeRank = Regexp.last_match(3).to_i - dice_w = '' - dice_ws = '' - dice_wa = '' - - if strikeRank < 14 - sta_loss, dice, dice_add, dice_str = check_strike_rank(strikeRank) - wounds, dice_w, dice_wa, dice_ws = check_strike_rank(strikeRank - 3) - dice = dice + ', ' + dice_w - dice_add += ', ' + dice_wa - dice_str = dice_str + ', ' + dice_ws - else - wounds_wk = 0 - sta_loss, dice, dice_add, dice_str = check_strike_rank(13) - wounds, dice_ws = roll(4, 10) - dice = '5d10*3, 4d10+' + ((strikeRank - 13) * 2).to_s + 'd10' - dice_add += ', ' + wounds.to_s - dice_str = "#{dice_str}, #{dice_ws}" - wounds_wk, dice_ws = roll((strikeRank - 13) * 2, 10) - dice_str += "+#{dice_ws}" - dice_add += "+#{wounds_wk}" - wounds += wounds_wk - end - - if sendMode > 1 - output = "#{dice_str} > #{dice_add} > スタミナ損失#{sta_loss}, 負傷#{wounds}" - elsif sendMode > 0 - output = "#{dice_add} > スタミナ損失#{sta_loss}, 負傷#{wounds}" - else - output = 'スタミナ損失' + sta_loss + ', 負傷' + wounds - end - - string += ':' + dice - - if output.empty? - return "1" - end - - output = "(#{string}) > #{output}" - debug('strike_rank end output', output) - - return output - end - - def check_strike_rank(strikeRank) - strikeRank = strikeRank.to_i - - dice = '' - dice_add = '' - dice_str = '' - damage = 0 - - if strikeRank < 1 - damage = 0 - dice_str = '-' - dice_add = '-' - dice = '-' - - elsif strikeRank < 2 - dice = '0or1' - damage, dice_str = roll(1, 2) - damage -= 1 - dice_add = damage.to_s - - elsif strikeRank < 3 - dice = '1or2' - damage, dice_str = roll(1, 2) - dice_add = damage.to_s - - elsif strikeRank < 4 - dice = '1d5' - damage, dice_str = roll(1, 5) - dice_add = damage.to_s - - elsif strikeRank < 10 - dice = (strikeRank - 3).to_s + 'd10' - damage, dice_str = roll(strikeRank - 3, 10) - dice_add = damage.to_s - - elsif strikeRank < 13 - dice = (strikeRank - 6).to_s + 'd10*2' - damage, dice_str = roll(strikeRank - 6, 10) - dice_add = damage.to_s + '*2' - damage *= 2 - dice_str = "(#{dice_str})*2" - else - dice = '5d10*3' - damage, dice_str = roll(5, 10) - dice_add = damage.to_s + '*3' - damage *= 3 - dice_str = "(#{dice_str})*3" - end - - return damage, dice, dice_add, dice_str - end -end diff --git a/src/src_bcdice/diceBot/Chill3.rb b/src/src_bcdice/diceBot/Chill3.rb deleted file mode 100644 index f13cea2ad..000000000 --- a/src/src_bcdice/diceBot/Chill3.rb +++ /dev/null @@ -1,49 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Chill3 < DiceBot - # ゲームシステムの識別子 - ID = 'Chill3' - - # ゲームシステム名 - NAME = 'Chill 3rd Edition' - - # ゲームシステム名の読みがな - SORT_KEY = 'ちる3' - - # ダイスボットの使い方 - HELP_MESSAGE = < target) || (dice_total == 100) # 00は必ず失敗 - if target > 100 # 目標値が100を超えている場合は、00を振ってもBotchにならない - return " > 失敗" - else - return " > Botch" - end - else - return " > C成功" - end - elsif (total <= target) || (dice_total == 1) # 01は必ず成功 - if total <= (target / 2) - return " > H成功" - else - return " > L成功" - end - else - return " > 失敗" - end - end -end diff --git a/src/src_bcdice/diceBot/CodeLayerd.rb b/src/src_bcdice/diceBot/CodeLayerd.rb deleted file mode 100644 index 46d5b3a85..000000000 --- a/src/src_bcdice/diceBot/CodeLayerd.rb +++ /dev/null @@ -1,138 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/modifier_formatter' - -class CodeLayerd < DiceBot - include ModifierFormatter - # ゲームシステムの識別子 - ID = 'CodeLayerd' - - # ゲームシステム名 - NAME = 'コード:レイヤード' - - # ゲームシステム名の読みがな - SORT_KEY = 'こおとれいやあと' - - # ダイスボットの使い方 - HELP_MESSAGE = <=5 :サイコロ7個で判定値6のロールを行い、目標値5に対して判定 - 4CL@7 :サイコロ4個で判定値7のロールを行い達成値を出す - 4CL+2@7 または 4CL@7+2 :サイコロ4個で判定値7のロールを行い達成値を出し、修正値2を足す。 - 4CL[2] :サイコロ4個でクリティカル値2のロールを行う。 - 0CL : 1CL[0]と同じ判定 -MESSAGETEXT - - setPrefixes(['[+-]?\d*CL([+-]\d+)?[@\d]*.*']) - - def isGetOriginalMessage - true - end - - def rollDiceCommand(command) - debug('rollDiceCommand command', command) - - result = '' - - case command - when /([+-]?\d+)?CL([+-]\d+)?(\@(\d))?(\[(\d+)\])?([+-]\d+)?(>=(\d+))?/i - m = Regexp.last_match - base = (m[1] || 1).to_i - modifier1 = m[2].to_i - target = (m[4] || 6).to_i - criticalTarget = (m[6] || 1).to_i - modifier2 = m[7].to_i - diff = m[9].to_i - result = checkRoll(base, target, criticalTarget, diff, modifier1 + modifier2) - end - - return nil if result.empty? - - return "#{command} > #{result}" - end - - def checkRoll(base, target, criticalTarget, diff, modifier) - result = "" - - base = getValue(base) - target = getValue(target) - criticalTarget = getValue(criticalTarget) - if base <= 0 - criticalTarget = 0 - base = 1 - end - - target = 10 if target > 10 - - result += "(#{base}d10#{format_modifier(modifier)})" - - _, diceText = roll(base, 10) - - diceList = diceText.split(/,/).collect { |i| i.to_i }.sort - - result += " > [#{diceList.join(',')}]#{format_modifier(modifier)} > " - result += getRollResultString(diceList, target, criticalTarget, diff, modifier) - - return result - end - - def getRollResultString(diceList, target, criticalTarget, diff, modifier) - successCount, criticalCount = getSuccessInfo(diceList, target, criticalTarget) - - successTotal = successCount + criticalCount + modifier - result = "" - - result += "判定値[#{target}] " unless target == 6 - result += "クリティカル値[#{criticalTarget}] " unless criticalTarget == 1 - result += "達成値[#{successCount}]" - - # 出目がすべて判定値より大きければ固定値に関わらずファンブル - if successCount <= 0 - result += " > ファンブル!" - return result - end - - result += "+クリティカル[#{criticalCount}]" if criticalCount > 0 - result += format_modifier(modifier) - result += "=[#{successTotal}]" if criticalCount > 0 || modifier != 0 - - successText = getSuccessResultText(successTotal, diff) - result += " > #{successText}" - - return result - end - - def getSuccessResultText(successTotal, diff) - return successTotal.to_s if diff == 0 - return "成功" if successTotal >= diff - - return "失敗" - end - - def getSuccessInfo(diceList, target, criticalTarget) - debug("checkSuccess diceList, target, criticalTarget", diceList, target, criticalTarget) - - successCount = 0 - criticalCount = 0 - - diceList.each do |dice| - successCount += 1 if dice <= target - criticalCount += 1 if dice <= criticalTarget - end - - return successCount, criticalCount - end - - def getValue(number) - return 0 if number > 100 - - return number - end -end diff --git a/src/src_bcdice/diceBot/ColossalHunter.rb b/src/src_bcdice/diceBot/ColossalHunter.rb deleted file mode 100644 index 176068936..000000000 --- a/src/src_bcdice/diceBot/ColossalHunter.rb +++ /dev/null @@ -1,558 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class ColossalHunter < DiceBot - # ゲームシステムの識別子 - ID = 'ColossalHunter' - - # ゲームシステム名 - NAME = 'コロッサルハンター' - - # ゲームシステム名の読みがな - SORT_KEY = 'ころつさるはんたあ' - - # ダイスボットの使い方 - HELP_MESSAGE = <=y) - 3D6の判定。クリティカル、ファンブルの自動判定を行います。 - x:修正値。省略可能。y:目標値。省略可能。 - 例) CH CH+1 CH+2>=10 -・BIG-6表(B6T) -・覚醒表(AWT) -・現状表(CST) -・ハンターマーク表(HMT) -・特徴表(SPT) -・プレシャス表(PRT) -・専門能力表(EXT) -・コロッサル行動表(CAT) -・NPC作成表(CNP) -・D66ダイスあり -MESSAGETEXT - - def initialize - super - @d66Type = 1 - end - - def rollDiceCommand(command) - # get~DiceCommandResultという名前のメソッドを集めて実行、 - # 結果がnil以外の場合それを返して終了。 - return analyzeDiceCommandResultMethod(command) - end - - def getCheckRollDiceCommandResult(command) - debug("getCheckRollDiceCommandResult command", command) - - return nil unless /(\d+)?CH([\+\-\d]*)(>=([\+\-\d]*))?$/i === command - - diceCount = (Regexp.last_match(1) || 3).to_i - modifyText = (Regexp.last_match(2) || '') - difficultyText = Regexp.last_match(4) - - # 修正値の計算 - modify = getValue(modifyText, 0) - - # 目標値の計算 - difficulty = getValue(difficultyText, nil) - - # ダイスロール - dice, dice_str = roll(diceCount, 6) - - total = dice + modify - - # 出力用ダイスコマンドを生成 - command = "#{diceCount}CH#{modifyText}" - command += ">=#{difficulty}" unless difficulty.nil? - - # 出力文の生成 - result = "(#{command}) > #{dice}[#{dice_str}]#{modifyText} > #{total}" - - # クリティカル・ファンブルチェック - if isFamble(dice) - result += " > ファンブル" - elsif isCritical(total) - result += " > クリティカル" - else - result += getJudgeResultString(difficulty, total) - end - - return result - end - - # 成否判定 - def getJudgeResultString(difficulty, total) - return '' if difficulty.nil? - - return " > 成功" if total >= difficulty - - return " > 失敗" - end - - def getValue(text, defaultValue) - return defaultValue if text.nil? || text.empty? - - parren_killer("(0" + text + ")").to_i - end - - def isCritical(total) - (total >= 16) - end - - def isFamble(total) - (total <= 5) - end - - def getSourceSceneDiceCommandResult(command) - return nil unless /^B6T$/ === command - - name = "BIG-6表" - table = getBig6Table - yearTitle = "年齢" - - return getYearTableResult(name, table, yearTitle) - end - - def getYearTableResult(name, table, yearTitle) - item, index = get_table_by_d66(table) - return nil if item.nil? - - title, text, yearText, = item - debug('yearText', yearText) - year, calculateText = getYear(yearText) - - result = "#{name}(#{index}) > #{title}:#{text} > #{yearTitle}:#{yearText}" - result += " > #{calculateText} > #{yearTitle}:#{year}" unless year.nil? - result += "歳" - - return result - end - - def getYear(yearText) - text = yearText.gsub(/(\d+)D(6+)/) { getD6xResult(Regexp.last_match(1).to_i, Regexp.last_match(2).length) } - - calculateText = "(#{text})" - year = parren_killer(calculateText.gsub(/×/, "*")) - return nil if year == calculateText - return nil if year == text - - return year, calculateText - end - - def getD6xResult(count, dice6Count) - total = 0 - - count.times do |_i| - number = 0 - - dice6Count.times do |_i| - number *= 10 - dice, = roll(1, 6) - number += dice - end - - total += number - end - - return total.to_s - end - - def getBig6Table - table = - [ - ["この世の地獄", "あれはまさに地獄。屍の山。嘆く者。呆然とする者。目の前で潰される者。あの日、人類は霊長ではなく……弱き獣の一種となった。", "15+2D6"], - ["悪の時代", "全ての崩壊、呆然の時。救援が望めぬとわかったなら、少なからぬ者が悪に走った。あの頃は、あなたもまた下劣なる略奪者だった。", "18+2D6"], - ["消えざる罪", "混乱の中、あなたは……私怨を晴らした。許せない人間を、その手で始末した。罪に問う者はいない……他ならぬあなた自身以外は。", "18+2D6"], - ["言葉にできない", "ただ呆然と。廃人のようにあの期間を過ごした。目の前で何が起きていたかは覚えているけれど。思い出したくは……ない。", "任意(最低14)"], - ["望む時代", "あの平和で膿んだ世界が嫌いだった。全てが壊れて、訪れた無法の時代。あなたは、あの日常が壊れた今を歓迎している。", "18+2D6"], - ["あなたの呪い", "世界を怨み、自殺しようとした時、世界は変わった。あなたの呪詛が形になったように……コロッサルが全てを破壊し始めたのだ。", "任意(最低20)"], - ["肉親の命日", "家族は、あなたの全てだった。だからあの日は、全てが失われた日だ。注ぐ愛も注がれる愛も、きっとあの日に枯れたのだ。", "任意(最低14)"], - ["戦友の命日", "あなたとその仲間は無抵抗をよしとせず、コロッサルに立ち向かった。そして……あなた以外は全員が死んだ。彼らの分も生きなければ。", "30+3D6"], - ["トラウマ", "あの日を思い出すだけで、震えが止まらず汗と涙が溢れ出す。忘れるためには、コロッサルと戦い続けるしかないだろう、きっと。", "任意(最低14)"], - ["死を逃した時", "意識を失い、目覚めれば全ては壊れた後。生き延びたのは幸運なのか。不幸なのか。あるいはそれとも、呪いなのか。", "10+3D6"], - ["呪縛", "あの時、無数の死を見た。その中で、ある一人が言った言葉が忘れられない。それは今も、あなたを縛る呪いとなっている。", "18+2D6"], - ["ひっかかり", "あの日、配偶者あるいは恋人と別れた。恋の終わりと、世界の終わり。あれ以来、相手が生きているかもわからない……。", "25+3D6"], - ["重症", "昏睡BIG-6で重い疵を負ったあなたは、長く昏睡状態だった。幸いにも人工冬眠装置によって、あなたは年を経ずに目を覚ましたが……。", "任意"], - ["些末事", "あなたにはコロッサルの出現などよりも重要な目的がある。BIG-6など、どうでもよい。あなたは決して揺らぎはしないのだ。", "任意"], - ["財産の消滅", "築き上げていた全てが失われた日。あなたにとって全てだった財貨も、権力も、消滅したあの日を、どうして忘れられようか。", "35+3D6"], - ["告白未遂", "告白しようとしていたその日、コロッサルが現れた。崩れる日常。あの人が生きているのか、どうなったのか、何もわからない。", "18+2D6"], - ["記憶喪失", "あの時、何があったのか、どうしても思い出せない。何か重大なことがあったはずなのに……思い出そうとすると頭痛が襲うのだ。", "任意(最低14)"], - ["誕生の時", "BIG-6と同年、コロッサル襲撃の最中に生まれ、赤ん坊の状態で生存者らに保護された。親はわからない。あなたの生存は奇跡である。", "10"], - ["ルーツ", "コロッサルによって破壊された瓦礫の合間に残されていた子……それがあなただ。親という概念すらなく、あなたは育ってきた。", "8+1D6"], - ["伝え聞くのみ", "物心ついた時には周囲はコロッサルの脅威にさらされていた。BIG-6以前については何も知らない。遥か過去のようにすら思えている。", "8+1D6"], - ["語られざること", "ZOSで育ったあなたには誰もBIG-6について教えてくれなかった。大人の会話の合間から、なんとなく想像するだけだ。", "8+1D6"], - ["絵物語", "瓦礫でない建物。人が街にあふれかえる。なんという子供だましのおとぎ話だろう。あなたはBIG-6以前の存在を信じていない。", "8+1D6"], - ["何それ", "隊商に見つけられるまで、獣同然に生きていた。BIG-6などあったことも知らない。物心ついた時には、餌を求め走っていたのだ。", "9+1D6"], - ["嫉妬", "BIG-6時をあなたは覚えていない。そして、BIG-6以前の豊かさと平和に激しい嫉妬を抱き、守れなかった大人たちを恨む。", "9+1D6"], - ["忘れたい記憶", "あなたはあの日を忘れようと努めた。今ではほとんど忘れたと言っていい。けれど、ふとした時にあの地獄の光景は現れて……。", "任意(最低14)"], - ["始まりの時", "あなたにとってあれは終わりではなく、始まり。停滞して行き詰まった世界が動き出し、どうでもよかった己の命を感じさせてくれた瞬間。", "15+3D6"], - ["かすかな記憶", "当時のあなたは幼かった。それでもうっすらと、あの平和で豊かだった時代を覚えている。いっそ知らなければ……と思うのだけれど。", "10+1D6"], - ["崩壊と再生", "あなたの人生は、BIG-6による社会崩壊と……その後の再生をなぞるものだ。あなたはBIG-6以後を何より間近で見て来た。", "10+1D6"], - ["他人事", "とても辺鄙な地方にいたせいか、コロッサルは出現しなかった。無論、影響はあったが……ゆっくりとしたもので。大災害の印象は薄い。", "6+3D6"], - ["新たな時代", "まだマテリアルの価値が定かでなかった頃から、あなたはその価値に目を付けていた。応用法も含め……社会崩壊後に備えたのだ。", "任意(最低17)"], - ["動乱", "当時は現役かつ、責任ある立場だった。守るために、あなたは全力で戦い、逃げ……そして時には同じ人間からも奪った。", "40+4D6"], - ["自信の元", "あなたは一家の長として家族を守り、導いた。全てが破壊される中、家族は確かに生き延びて、あなた自身も未だ生き残れたのだ。", "35+3D6"], - ["本能的記憶", "気が付けばゾーンに“いた”。コロッサルはさまざまな生物をクラフトする。中には小型のコロッサルとして独立して活動を開始するものもいるという。あなたもまた、気づいてほどなくハンターとして目覚めた。そう……あなたはクラフトされた存在。人よりもコロッサルに近い存在。記憶も感情も、どこまでが己のものなのか……。これは、およそ知られていい秘密ではない。(注意:外見年齢は任意)", "2D6-2"], - ["体験無き事象", "あなたは母から生まれた人間ではなく、人工的なハンター作成の副産物たるクローニング技術の結晶だ。親は知らないが“作者”は知っている。肌にはバーコードが刻まれ、その体が通常の人間ではないと思い知らされるだろう。丁寧に記憶まで、一定量が流し込まれており、日常生活には支障がない。この出生は隠さねばならない。(注意:外見年齢は任意。覚醒表の内容は作られた記憶である)", "2D6-2"], - ["特異点", "あのBIG-6の中では奇妙な時空のねじれが発生した。そして、あなたのようにありえざる時代や世界から、迷い込む者も現れたのだ。この事実は隠さねばならない……が、教えても誰も本気にはしないだろう。なお、あなたがどれほど特殊な能力や知識を持っていたとしても、データ上において他のPCと何ら変わらない。演出において、他の時代や異世界の知識や技術をいくらか使える程度である。", "任意(最低10)"], - ["覚醒の時", "BIG-6時に絶望の中でコロッサルに抗い、生まれた第一世代のハンター。平和の時代を知る存在。そして平和を壊され、平和を取り戻さんと渇望する存在だ。ハンターの中でも、最初期であり最も経験豊富であり、同じハンターらからは敬意を捧げられる。もちろん、相応の振る舞いも求められるだろうが……。(注意:覚醒表における「ZOS」は、「故郷」か「組織」に変わる)", "任意(最低17)"], - ] - return table - end - - def getCreateNpcDiceCommandResult(command) - return nil unless /^CNP$/ === command - - name = "NPC作成表" - table = [ - ['ハンター嫌いの', 'ごろつき', '全てへの絶望'], - ['心に傷を負った', '罪人', 'あなたへの殺意'], - ['精神不安定な', '浮浪者', 'ハンターへの殺意'], - ['病に伏した', '盗人', '己自身への殺意'], - ['重傷を負った', '終末論者', 'ハンターへの憎悪'], - ['悪名高い', '旅人', 'コロッサルへの崇拝'], - ['横暴な', '難民', '人間への嫌悪'], - ['あなたに依存している', '子供', 'あなたへの恐怖'], - ['無謀な', '老人', '左隣PCへの殺意'], - ['乱暴な', '少年', '窃盗への依存'], - ['信用できない', '少女', '快楽への依存'], - ['臆病な', '若者', '愛情への依存'], - ['だらしない', '芸人', '未来への絶望'], - ['短絡的な', '娼婦/男娼', '弱者への蔑視'], - ['怠け者の', '元軍人', '己自身への嫌悪'], - ['享楽的な', 'ハンター志願者', 'あなたへの疑念'], - ['エキセントリックな', '元ハンター', 'ギャンブルへの依存'], - ['ずる賢い', '労働者', 'アルコールへの依存'], - ['恋人のいる', 'スカベンジャー', '孤独への恐怖'], - ['残念な', '仕立て屋', 'ハンターへの恐怖'], - ['空回りしている', '職人', 'コロッサルへの憎悪'], - ['酒びたりの', '教師', 'ハンターへの不安'], - ['妄想癖のある', '建築家', 'ハンターへの嫉妬'], - ['努力家の', '商人', 'コロッサルへの恐怖'], - ['やさしい', '料理人', '己の命への執着'], - ['神秘的な', '漁師/猟師', 'あなたへの打算'], - ['世馴れた', '農家', '過去への執着'], - ['信用できる', '自警団員', 'マテリアルへの執着'], - ['達観した', '看護師', 'ハンターへの憧憬'], - ['血気盛んな', '研究者', 'あなたへの嫉妬'], - ['美貌の', '技師', '異性への執着'], - ['気高い', '医師', '力への渇望'], - ['優秀な', '神父/シスター', 'ZOSへの依存'], - ['天才肌の', '事務屋', '左隣PCへの執着'], - ['誰からも愛される', '指導者', 'あなたへの羨望'], - ['あなたに恋をしている', 'ハンター', 'あなたへの執着'], - ] - - nature, nature_number = getD66Item(table, 0) - type, type_number = getD66Item(table, 1) - secret, secret_number = getD66Item(table, 2) - - result = "#{name}(#{nature_number}, #{type_number}, #{secret_number}) > 性質:#{nature}/タイプ:#{type}/心の秘密:#{secret}" - return result - end - - def getD66Item(table, index) - item, number = get_table_by_d66(table) - return item[index], number - end - - def getTableDiceCommandResult(command) - info = TABLES[command] - return nil if info.nil? - - name = info[:name] - type = info[:type] - table = info[:table] - - text, number = - case type - when '2D6' - get_table_by_2d6(table) - when '1D6' - get_table_by_1d6(table) - when 'D66' - get_table_by_d66(table) - end - - return nil if text.nil? - - return "#{name}(#{number}) > #{text}" - end - - TABLES = - { - - 'AWT' => { - :name => "覚醒表", - :type => 'D66', - :table => %w{ - 実験体:当時ハンターを人工的に作り出すべく、倫理を無視した研究が多数行われていた。あなたこそ、無数の犠牲の上に生まれた……数少ない成功作なのだ。 - ゾーン留置刑:刑罰としてコロッサルの進路に拘束され放置される罪人がいる。多くは命を落とすが、ハンターとして目覚める可能性もあるのだ。他ならぬあなたのように……。 - ハンター殺し:相応の理由はあったから。頭部への一撃で、非道のハンターを殺してやった。その報いか。その瞬間、あなた自身がハンターになってしまったのだ。 - 目の前の変異:死んだハンターのコアが目の前でコロッサルと化す。しかし何という皮肉か。発生したゾーン。まき散らされるマテリアル。あなたはハンターとして覚醒した。 - ZOS壊滅:住んでいたZOSがコロッサルに蹂躙される。全てが破壊され、大切なものは全て失われる。無力感の中……皮肉にも、あなたは新たな力に目覚めた。 - 生贄:ハンターのいない集団は時として奇妙な行為をする。弱者を生贄に捧げるのだ。それは、あなたというハンターを生み出し……集団はコロッサルに滅ぼされた。 - 崩壊と追跡:ZOSの崩壊。誰も生き残らず。あなたは一人、復讐者と化して旅立つ。決意と覚悟が、あなたにハンターの力を与えてくれた。これは復讐の刃なのだ。 - 臨死経験:コロッサルの一撃であなたは死んだ……だが、唯一無事だった脳がコアと化し、肉体を再構築し……あなたは再び立ち上がったのだ。 - 脱走:実験施設か牢獄か、あるいは監禁場所か。あなたは死に物狂いで逃げ出した。偶然ゾーンに入っていたのか。あなたはハンターとなり、無事逃げ延びた。 - 感情の暴発:それは狂気だったのかもしれない。あなたはその時、抑えきれぬ感情を爆発させ、ありえぬ行動を、ありえぬように行った。ハンターとして覚醒したのだ。 - 肉体の欠損:まともな医療がないこの時代。体の一部を失う者は多い。あなたは絶望に呑まれず、失った体を、意志の力でクラフトした。そう、ハンターになったのだ。 - 飢餓:荒野で飢え、渇き、あがいた。誰にも助けてもらえない中……幸運にもそのゾーンであなたは力に目覚める。鳥や獣を捕らえ貪り、生き延びたのだ。 - 過剰な復讐:憎悪を募らせ、あなたは後先を考えず怨念の一撃を繰り出す。いつの間にか手には強大な武器があり、相手は建物ごと破壊された。憎悪に満ちた覚醒。 - 遅すぎた覚醒:大切な人が死ぬ。故郷が破壊される。全てを失い、絶望に打ちひしがれながら、仇たるコロッサルの遥か背後で、ハンターとして覚醒した。何もかも手遅れなのに。 - 贖罪の印:大切な人をあなた自身の手で殺してしまった。後悔と絶望の中、あなたはなぜかハンターとなる。それは己の贖罪のために与えられた力と思えた。 - 瓦礫の闇:瓦礫の中、身動きは取れない。誰も助けてくれない。閉塞感と飢餓感と絶望、理不尽への怒り。最後まで足掻きに足掻いてハンターとして目覚め、脱出した。 - 無謀なる突撃:ただ許せなかったのだ。故郷を蹂躙するコロッサルへ、武器とも呼べぬものを手に突撃する。ハンターとしての覚醒は、幸運の結果だったのだろう。 - 残された遺志:コロッサルの襲撃の中、一人のハンターがあなたを守り……命を落とした。その後の残ったマテリアルに触れた瞬間、あなたはハンターとして覚醒したのだ。 - 危機的覚醒:迫り来るコロッサルの一撃。けれど死を覚悟した瞬間、自身でも信じられない動きで攻撃を回避していた。そう、あなたはハンターになったのだ。 - 猛る夜:その夜、あなたは恐怖と不安の中で、湧き上がる欲望のまま獣となって猛り、貪った。その欲望の一夜を経て、あなたは人を超えてハンターへと変わる。 - コロッサル接触:瀕死のあなたに、コロッサルが触れる。その瞬間、あなたはハンターとなり生き延びた。あのコロッサルはなぜ、人を救うようなことをしたのだろう? - 記憶喪失:何か大きな出来事があったはずなのだ。けれど思い出せない……いったいどうして、あなたがハンターとなったのか。かつて何があったのか、あなたは知りたい。 - 偶然の獲得:ちっぽけな反抗、隔意、逃避。あなたはその日、ZOSを飛び出しコロッサルの領域内に立ち入ってしまい、偶然、ハンターとして目覚め、無事に生還した。 - ゾーン研究:あなたは学術的な興味から、ハンターに守られ何度もゾーンに入った。そして気づけば、あなた自身がハンターの力を得ていたのだ。 - ハンター志願:希望のない世界で、希望を得るため。多くは生きて帰れぬことを知りながら、コロッサルに立ち向かった。幸運にも……あなたはハンターとして覚醒できた。 - 野生の日々:集団に属せず、あなたは半ば野生の中で一人生き延びていた。コロッサルにも狙われず、ゾーンで共存すらした。ハンターの力を得たのも必然だろう。 - 自由落下:の中でふとした事故で、あなたは高所から落下した。けれど落下中、足場をクラフトし、あなたは九死に一生を得た。ハンターとして覚醒したのだ! - 昏睡:重傷を負って昏睡に陥り、夢の中で地の底からの囁きを聞いた。そして目覚めた時、あなたは能力にも目覚め、ハンターとなっていたのだ。 - 極限の修練:愚直に信じて、信じて、信じて、嘲笑われても修練を繰り返した。努力の価値はわからない。それでもあなたは、己の覚醒を修練の結果だと信じている。 - ハンターとの恋:あなたの恋人はハンターだ。あるいは、ハンターだった。その交わりの中で、恋人のゾーンに深く影響され……気づけばハンターの能力を得ていた。 - 恩人の危機:ZOSを守って来たハンター。逃げ遅れたあなた。目の前でハンターがコロッサルの一撃を受けて散ろうとするその瞬間……あなた自身が力に目覚めた。 - 守る力:大切な人を守るため、迫り来るコロッサルの前であなたは目覚めた。新たな力は、コロッサルを倒し……あなたは無事に、守るべき人を守り切ったのだ。 - 蟷螂の斧:たとえ無意味でも無価値でも、反抗の意を見せずにいられないから、あなたはコロッサルに立ち向かった。そして、己が無力ではないと、証明したのだ。 - ガイアの声:地の底から、呼びかける声を聞いた。コロッサルの傍にいたわけではない。しかし、その声を聞いた瞬間、あなたはハンターとなった。なってしまったのだ。 - 天性のハンター:初めてコロッサルに対峙した時、自然にリクラフトして武装していた。しかも、歴戦のハンターと同等以上の巧みさで。あなたはこの時代、待望された天才だ。 - ありえぬ存在:BIG-6以前から、あるいはものごころつく以前から、ハンターの能力が開花していた。周囲の目は期待と不安、そして打算にまみれている。 - }, - }, - - 'CST' => { - :name => "現状表", - :type => 'D66', - :table => %w{ - 逃れえぬ恐怖:かつての悪夢は心を握りしめ、離してはくれない。平時は暗がりの隅で一人震え、ぶつぶつと呟くばかり。友らは、立ち直らせようとしてくれているが……。 リーダー度:2 - 人間証明:いつからか自傷癖が身についてしまった。己が人間だと証明したいから。流れる血が赤いと知りたくて。己の手首を何度も何度も切り刻んでしまうのだ。 リーダー度:3 - 裏切者:かつて、あなたはコロッサルと戦う仲間を見捨てて逃げ出した。連携は崩れ、多くの仲間が散った。以来、あなたを信用する者はいない。いるわけがない。 リーダー度:1 - 人間不信:あなたは人々に裏切られ、罵られ、追放された身。ハンター同士ならまだしも、もはや人は信じられない。コロッサル以上に人間がおぞましいのだ。 リーダー度:2 - 孤独:力を得れば、周囲は距離を取る。それがつらくて……逃げてしまった。もう人には関わらない。今や誰も近づいては来ない。あなたは独りぼっちなのだ。 リーダー度:2 - 無法の首魁:力を得て増長したあなたには、多数の取り巻きがいる。暴虐も我儘も、ある程度は許されるのがハンターだ。今のあなたは、無法者の首領も同然である。 リーダー度:9 - 生存者:何も守れず……あなたのZOSはコロッサルに破壊された。ただ一人……ハンターの力で生き延びたのだ。今はただ前へ足を進めるだけで精一杯。 リーダー度:3 - 検体:乞われて研究者の検体に立候補した。あなたには何もない。どうされてもいい。力が手に入るならよし。誰かの礎になるならそれも……よし。 リーダー度:5 - 刹那の快楽:何度出撃しようとも、コロッサルは恐ろしい。生きて戻ってくれば、次の出撃を恐れる。あなたは酒色に溺れ、現実から少しでも逃れようともがくだろう。 リーダー度:3 - 戦闘機械:戦う以外は考えられなくなってしまった。何をすればいいのかわからないのだ。ただぼんやりと空を眺めているしか……することがない。 リーダー度:5 - 亡霊を背負う:毎日、散っていった者たちの姿が脳裏に浮かぶ。彼らはあなたに力をくれるのだろうか。それとも、あなたを彼らと同じ場所へ導こうとしているのだろうか。 リーダー度:8 - 雇用契約:大切な人を保護してもらう代わり、あなたはZOSのハンターになった。その人にはなかなか会えないけれど。きっと満足な生活を送っている……はずだ。 リーダー度:7 - 鍛錬の日々:共にハンターとして組んで来た戦友がいた。今はもう全て土の下だ。彼らの分まで戦わねばならない。幸せになってはいけない。己の修練が全てだ。 リーダー度:9 - 悪党の末路:悪事を重ね、ZOSを追放された。根無し草となり放浪する中、あなたの性根も少しは正されたろうか? それとも逆恨みの炎は消えていないのか? リーダー度:1 - ワーカホリック:恐怖があなたを働かせる。どんな雑務でもいいから仕事が必要だ。楽しみを知らないわけではないが……働いていないと、背後にまた恐怖が迫ってくる。 リーダー度:10 - 虚ろな愛:恋人ないし配偶者がいる。しかし関係はもはや形だけ。その心はあなたに向いていない。心を向ける相手は別にいるのだ……しかし、それでも、あなたは。 リーダー度:6 - 餓えしもの:今の世の中、マテリアルが金だ。コロッサルと戦えば戦うほど、あなたは財力と権力を得る。あなたは力に餓えて餓えて、戦いにも餓えているのだ。 リーダー度:8 - 家族を背負い:病か老いか、あるいは重傷を負ってまともに働けない家族がいる。家族を養い、RIACTの保護を受けるためにも、あなたは働かねばならない。 リーダー度:7 - 多情:こんな世の中では人の命は儚く、人の心もまた儚い。だからあなたは、いつも恋をして、いつも愛を囁いて。せめて己の軌跡を多くの人に残そうとする。 リーダー度:5 - 人捜しの旅:かつて生き別れた大切な人を捜して、ZOSからZOSへと渡り歩いている。きっと、必ず、どこかで生き延びている……はずだ。 リーダー度:1 - 善き狩人:特に働くわけではないが……あなたが披露する武勇伝は新世代を鼓舞し、ハンターへの憧れを抱かせる。人はコロッサルを恐れてばかりでは前に進めない。 リーダー度:8 - カジノ:ハンターならざる人々も、刹那的な享楽で全てを忘れようとしている。あなたは小さなカジノを営み、人々を楽しませる一方で、己の懐をあたためている。 リーダー度:4 - 恋々的日々:あなたは恋人のためハンターとして活躍する。恋の中で日々は輝き、全ての悪夢はかき消される。今のあなたは、幸福な夢にどこまでも盲目でいられる。 リーダー度:9 - 語り手:現実は、つらい。今の世には逃避する先が必要なのだ。だからはあなたは物語を読み漁り、時には自ら物語を書き、また時にはTRPGをする。 リーダー度:4 - スカベンジャー:崩壊した世界には隠されし謎・宝が無数にある。あなたは日々、廃墟を漁って機材や情報媒体を拾い集める。それは確かなZOSへの貢献となるのだ。 リーダー度:7 - エンジニア:機械いじりは楽しい。かつてあった文明の遺産から、新たなものを生み出す時、あなたは人類の前に広がる、明るい未来を信じられるのだ。 リーダー度:6 - 医師:既に人と言えないハンターの体。しかし、それでも自らが何度も壊れ、再構成してきたからこそ……人の体を知る。平時のあなたは、ZOSの医師だ。 リーダー度:10 - 訓練教官:最低限の自衛を覚えてもらうため。コロッサルについて若者らに教え、緊急時の対応を訓練する。その中にハンターとなる者もいるのだろうか? リーダー度:12 - 農家:コロッサルとの戦闘で少なからぬ人々が死ぬ。新たな命を芽生えさせ生かすべく……あなたは平時、農業に精を出している。農地と実りはあなたの宝だ。 リーダー度:11 - 一家の主:恋人ないし配偶者がいる。もうすぐ家族は増えそうだ。未来は明るい。だから出撃したなら……きっと生きて、帰らねばならない。 リーダー度:10 - トレーダー:あなたはハンターである以上に商人だ。自らZOSからZOSへ商品を運び、マテリアルを獲得する。マテリアルの貯蓄が、今のあなたの生き甲斐だ。 リーダー度:4 - アイドル:荒廃した世界だからこそ、人には娯楽が必要だ。あなたは自らの歌や踊りで人々を鼓舞し、その心に輝きを取り戻さんとする。未来はきっと、明るいはずだ。 リーダー度:6 - 自警団長:ZOSの治安はよくない。人々は皆、自暴自棄だ。ハンターにも不埒の輩は多い。あなたは人が人らしくあるべく、自警団を組織している。 リーダー度:12 - 孤児院長:偽善と知りつつ、あなたは多数の孤児らを集め育てている。彼らを受け入れ、育てられるのはマテリアルを直接獲得してくるハンターくらいなのだ。 リーダー度:11 - 導き手:自身も葛藤しつつ、あなたは宗教者として人に教えを説く。神に見放されたこの世界でも、心の支えは必要だ。人の心は救われねばならない。 リーダー度:11 - 指導者:あなたはZOSの顔役だ。多くの人望を集め、ハンターの地位を向上させている。一挙一動が注目を受ける。気をひきしめて日々を過ごさねば。 リーダー度:12 - }, - }, - - 'HMT' => { - :name => "ハンターマーク表", - :type => 'D66', - :table => %w{ - 顔 - 胸 - 背中 - 胴 - 肩 - 腕 - 顔 - 胸 - 背中 - 胴 - 肩 - 腕 - 顔 - 胸 - 背中 - 胴 - 肩 - 腕 - 掌 - 腿 - 脛 - 足裏 - 全身 - 片眼 - 掌 - 腿 - 脛 - 足裏 - 全身 - 片眼 - 掌 - 腿 - 脛 - 足裏 - 全身 - 片眼 - }, - }, - - 'SPT' => { - :name => "特徴表", - :type => 'D66', - :table => %w{ - 死んだ魚の目 - 凶悪な容貌 - 子供のように小柄 - 目の下の隈 - 疲れ切った背中 - 威圧的な筋肉 - ガリガリの痩身cc - 中性的な顔立ち - 無数の傷痕 - 顔に残る傷痕 - 隻眼 - 男装・女装 - 樽のような肥満 - 目立つ犬歯 - ぎらつく眼光 - 奇妙なタトゥー - 見上げるような長身 - 泣きボクロ - 滑らかな髪 - 手入れされた髪型 - 腰まで届くロングヘア - ベリーショート - ドレッド - スキンヘッド - 特殊な形の瞳 - 三白眼 - オッドアイ - 糸目 - 眼鏡 - 冷たい眼差し - きれいな指 - すべやかな肌 - 優しげな声 - 明るい笑顔 - 健康的な体 - 整った容貌 - }, - }, - - 'PRT' => { - :name => "プレシャス表", - :type => 'D66', - :table => %w{ - 壊れたスマートフォン - 誰かの写真 - 鳴らないヘッドホン - 記念の指輪 - 血まみれの布 - 空のスキットル(酒用の水筒) - 錆びたナイフ - 骨の欠片 - 古い銃と弾丸1発 - 銀の十字架 - 謎の携帯メモリ - インクが空の万年筆 - 色あせたお守り - 使い込まれたパイプ - よれた手帳 - 読み込まれた本 - ケースに入った楽器 - 綺麗な鈴 - 写真の入ったロケット - 古びた鍵 - 汚れた帽子 - 片耳分のピアス - 一房の髪 - 血塗られたストール - 裂けた服 - ヒビの入ったゴーグル - 壊れた眼鏡 - 曇ったモノクル - 革製の眼帯 - ボロボロの財布 - よく手入れされた工具 - 止まった腕時計 - 子ども用の傘 - 千切れたネックレス - 開かない懐中時計 - 一組のダイス - }, - }, - - 'EXT' => { - :name => "専門能力表", - :type => 'D66', - :table => %w{ - メンタル 分類:準備 - 宗教 分類:準備 - 危険物 分類:準備 - 化学 分類:準備 - 狩猟 分類:準備 - 警備 分類:準備 - 採掘 分類:準備 - トレーニング 分類:準備 - 輸送・保管 分類:準備 - サバイバル 分類:準備 - 通信 分類:調査 - 運転 分類:調査 - 探偵 分類:調査 - 地理 分類:調査 - ドローン 分類:調査 - 交渉 分類:調査 - 文献調査 分類:調査 - IT 分類:調査 - 建築 分類:調査 - 土木 分類:復興 - 農業・畜産 分類:復興 - 醸造 分類:復興 - 教育 分類:復興 - 公衆衛生 分類:復興 - 治安 分類:復興 - 電気 分類:復興 - 機械 分類:復興 - 芸術・芸能 分類:復興 - 単純作業 分類:日常 - ゲーム 分類:日常 - 調理 分類:日常 - 医療 分類:日常 - スポーツ 分類:日常 - ナイトビジネス 分類:日常 - 祭事 分類:日常 - 商売 分類:日常 - }, - }, - - 'CAT' => { - :name => "コロッサル行動表", - :type => '1D6', - :table => %w{ - ZOWが急速に拡大してゆく!左右いずれかのエリアをZOWにする。対象エリアはZOWとなり、既存のイベントは消滅する。対象エリアは相談して選択し、そのエリアのイベントは消滅する。 - あのコロッサルの反応は……。コロッサルの情報をひとつ得る。 - 何もしない。 - 何もしない。 - 何もしない。 - 何もしない。 - }, - }, - - }.freeze - - setPrefixes(["CH.*", "B6T", "CNP"] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/CrashWorld.rb b/src/src_bcdice/diceBot/CrashWorld.rb deleted file mode 100644 index 7ab2b3693..000000000 --- a/src/src_bcdice/diceBot/CrashWorld.rb +++ /dev/null @@ -1,78 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class CrashWorld < DiceBot - # ゲームシステムの識別子 - ID = 'CrashWorld' - - # ゲームシステム名 - NAME = '墜落世界' - - # ゲームシステム名の読みがな - SORT_KEY = 'ついらくせかい' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 - output = "(1D100<=#{diff})" - - if broken_num > 0 - output += " 故障ナンバー[#{broken_num}]" - end - - total_n, = roll(1, 100) - - output += " > #{total_n}" - output += " > #{getCheckResultText(total_n, diff, broken_num)}" - else - total_n, = roll(1, 100) - output = "(1D100) > #{total_n}" - end - - return output - end - - def getCheckResultText(total_n, diff, broken_num = 0) - result = "" - diff_special = 0 - fumble = false - - if @special_percentage > 0 - # specialの値設定が無い場合はクリティカル/ファンブル判定もしない - diff_special = (diff * @special_percentage / 100).floor - if diff_special < 1 - diff_special = 1 - end - end - - if (total_n <= diff) && (total_n < 100) - result = "成功" - - if diff_special > 0 - if total_n <= @critical_percentage - if total_n <= diff_special - result = "決定的成功/スペシャル" - else - result = "決定的成功" - end - else - if total_n <= diff_special - result = "スペシャル" - end - end - end - else - result = "失敗" - - if diff_special > 0 - if (total_n >= (101 - @fumble_percentage)) && (diff < 100) - result = "致命的失敗" - fumble = true - end - end - end - - if broken_num > 0 - if total_n >= broken_num - if fumble - result += "/故障" - else - result = "故障" - end - end - end - - return result - end - - def getRegistResult(command) - m = /RES(B)?([-\d]+)/i.match(command) - unless m - return "1" - end - - value = m[2].to_i - target = value * 5 + 50 - - if target < 5 - return "(1d100<=#{target}) > 自動失敗" - end - - if target > 95 - return "(1d100<=#{target}) > 自動成功" - end - - # 通常判定 - total_n, = roll(1, 100) - result = getCheckResultText(total_n, target) - - return "(1d100<=#{target}) > #{total_n} > #{result}" - end - - def getCombineRoll(command) - m = /CBR(B)?\((\d+),(\d+)\)/i.match(command) - unless m - return "1" - end - - diff_1 = m[2].to_i - diff_2 = m[3].to_i - - total, = roll(1, 100) - - result_1 = getCheckResultText(total, diff_1) - result_2 = getCheckResultText(total, diff_2) - - successList = ["決定的成功/スペシャル", "決定的成功", "スペシャル", "成功"] - - succesCount = 0 - succesCount += 1 if successList.include?(result_1) - succesCount += 1 if successList.include?(result_2) - debug("succesCount", succesCount) - - rank = - if succesCount >= 2 - "成功" - elsif succesCount == 1 - "部分的成功" - else - "失敗" - end - - return "(1d100<=#{diff_1},#{diff_2}) > #{total}[#{result_1},#{result_2}] > #{rank}" - end -end diff --git a/src/src_bcdice/diceBot/Cthulhu7th.rb b/src/src_bcdice/diceBot/Cthulhu7th.rb deleted file mode 100644 index ae2eb5098..000000000 --- a/src/src_bcdice/diceBot/Cthulhu7th.rb +++ /dev/null @@ -1,766 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Cthulhu7th < DiceBot - # ゲームシステムの識別子 - ID = 'Cthulhu7th' - - # ゲームシステム名 - NAME = '新クトゥルフ神話TRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'しんくとうるふしんわTRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <)>] - def roll_with_bonus(bonus) - tens_list = Array.new(bonus.abs + 1) { bcdice.roll_tens_d10 } - ones = roll_ones_d10() - - dice_list = tens_list.map do |tens| - dice = tens + ones - dice == 0 ? 100 : dice - end - - dice = - if bonus >= 0 - dice_list.min - else - dice_list.max - end - - return dice, dice_list - end - - def getCheckResultText(total, diff, fumbleable = false) - if total <= diff - return "クリティカル" if total == 1 - return "イクストリーム成功" if total <= (diff / 5) - return "ハード成功" if total <= (diff / 2) - - return "レギュラー成功" - end - - fumble_text = "ファンブル" - - return fumble_text if total == 100 - - if total >= 96 - if diff < 50 - return fumble_text - else - return fumble_text if fumbleable - end - end - - return "失敗" - end - - def getCombineRoll(command) - return nil unless /CBR\((\d+),(\d+)\)/i =~ command - - diff_1 = Regexp.last_match(1).to_i - diff_2 = Regexp.last_match(2).to_i - - total, = roll(1, 100) - - result_1 = getCheckResultText(total, diff_1) - result_2 = getCheckResultText(total, diff_2) - - successList = ["クリティカル", "イクストリーム成功", "ハード成功", "レギュラー成功"] - - succesCount = 0 - succesCount += 1 if successList.include?(result_1) - succesCount += 1 if successList.include?(result_2) - debug("succesCount", succesCount) - - rank = - if succesCount >= 2 - "成功" - elsif succesCount == 1 - "部分的成功" - else - "失敗" - end - - return "(1d100<=#{diff_1},#{diff_2}) > #{total}[#{result_1},#{result_2}] > #{rank}" - end - - def getFullAutoResult(command) - return nil unless /^FAR\((-?\d+),(-?\d+),(-?\d+)(?:,(-?\d+)?)?(?:,(-?\w+)?)?(?:,(-?\d+)?)?\)/i =~ command - - bullet_count = Regexp.last_match(1).to_i - diff = Regexp.last_match(2).to_i - broken_number = Regexp.last_match(3).to_i - bonus_dice_count = (Regexp.last_match(4) || 0).to_i - stop_count = (Regexp.last_match(5) || "").to_s.downcase - bullet_set_count_cap = (Regexp.last_match(6) || (diff / 10).floor).to_i # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - - output = "" - - # 最大で(8回*(PC技能値最大値/10))=72発しか撃てないはずなので上限 - bullet_count_limit = 100 - if bullet_count > bullet_count_limit - output += "弾薬が多すぎます。装填された弾薬を#{bullet_count_limit}発に変更します。\n" - bullet_count = bullet_count_limit - end - - # ボレーの上限の設定がおかしい場合の注意表示 - if (bullet_set_count_cap > (diff / 10).floor) && (diff > 39) && !Regexp.last_match(6).nil? # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - bullet_set_count_cap = (diff / 10).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - output += "ボレーの弾丸の数の上限は\[技能値÷10(切り捨て)\]発なので、それより高い数を指定できません。ボレーの弾丸の数を#{bullet_set_count_cap}発に変更します。\n" - elsif (diff <= 39) && (bullet_set_count_cap > 3) && !Regexp.last_match(6).nil? - bullet_set_count_cap = 3 - output += "技能値が39以下ではボレーの弾丸の数の上限および下限は3発です。ボレーの弾丸の数を#{bullet_set_count_cap}発に変更します。\n" - end - - # ボレーの下限の設定がおかしい場合の注意表示およびエラー表示 - return "ボレーの弾丸の数は正の数です。" if (bullet_set_count_cap <= 0) && !Regexp.last_match(6).nil? - - if (bullet_set_count_cap < 3) && !Regexp.last_match(6).nil? - bullet_set_count_cap = 3 - output += "ボレーの弾丸の数の下限は3発です。ボレーの弾丸の数を3発に変更します。\n" - end - - return "弾薬は正の数です。" if bullet_count <= 0 - return "目標値は正の数です。" if diff <= 0 - - if broken_number < 0 - output += "故障ナンバーは正の数です。マイナス記号を外します。\n" - broken_number = broken_number.abs - end - - unless @bonus_dice_range.include?(bonus_dice_count) - return "エラー。ボーナス・ペナルティダイスの値は#{@bonus_dice_range.min}~#{@bonus_dice_range.max}です。" - end - - output += "ボーナス・ペナルティダイス[#{bonus_dice_count}]" - output += rollFullAuto(bullet_count, diff, broken_number, bonus_dice_count, stop_count, bullet_set_count_cap) - - return output - end - - def rollFullAuto(bullet_count, diff, broken_number, dice_num, stop_count, bullet_set_count_cap) - output = "" - loopCount = 0 - - counts = { - :hit_bullet => 0, - :impale_bullet => 0, - :bullet => bullet_count, - } - - # 難易度変更用ループ - (0..3).each do |more_difficulty| - output += getNextDifficultyMessage(more_difficulty) - - # ペナルティダイスを減らしながらロール用ループ - while dice_num >= @bonus_dice_range.min - - loopCount += 1 - hit_result, total, total_list = getHitResultInfos(dice_num, diff, more_difficulty) - output += "\n#{loopCount}回目: > #{total_list.join(', ')} > #{hit_result}" - - if total >= broken_number - output += " ジャム" - return getHitResultText(output, counts) - end - - hit_type = getHitType(more_difficulty, hit_result) - hit_bullet, impale_bullet, lost_bullet = getBulletResults(counts[:bullet], hit_type, diff, bullet_set_count_cap) - - output += " (#{hit_bullet}発が命中、#{impale_bullet}発が貫通)" - - counts[:hit_bullet] += hit_bullet - counts[:impale_bullet] += impale_bullet - counts[:bullet] -= lost_bullet - - return getHitResultText(output, counts) if counts[:bullet] <= 0 - - dice_num -= 1 - end - - # 指定された難易度となった場合、連射処理を途中で止める - if shouldStopRollFullAuto?(stop_count, more_difficulty) - output += "\n【指定の難易度となったので、処理を終了します。】" - break - end - - dice_num += 1 - end - - return getHitResultText(output, counts) - end - - # 連射処理を止める条件(難易度の閾値) - # @return [Hash] - # - # 成功の種類の小文字表記 => 難易度の閾値 - ROLL_FULL_AUTO_DIFFICULTY_THRESHOLD = { - # レギュラー - 'r' => 0, - # ハード - 'h' => 1, - # イクストリーム - 'e' => 2 - }.freeze - - # 連射処理を止めるべきかどうかを返す - # @param [String] stop_count 成功の種類 - # @param [Integer] difficulty 難易度 - # @return [Boolean] - def shouldStopRollFullAuto?(stop_count, difficulty) - difficulty_threshold = ROLL_FULL_AUTO_DIFFICULTY_THRESHOLD[stop_count] - return difficulty_threshold && difficulty >= difficulty_threshold - end - - def getHitResultInfos(dice_num, diff, more_difficulty) - total, total_list = roll_with_bonus(dice_num) - - fumbleable = getFumbleable(more_difficulty) - hit_result = getCheckResultText(total, diff, fumbleable) - - return hit_result, total, total_list - end - - def getHitResultText(output, counts) - return "#{output}\n> #{counts[:hit_bullet]}発が通常命中、#{counts[:impale_bullet]}発が貫通、残弾#{counts[:bullet]}発" - end - - def getHitType(more_difficulty, hit_result) - successList, impaleBulletList = getSuccessListImpaleBulletList(more_difficulty) - - return :hit if successList.include?(hit_result) - return :impale if impaleBulletList.include?(hit_result) - - return "" - end - - def getBulletResults(bullet_count, hit_type, diff, bullet_set_count_cap) - bullet_set_count = getSetOfBullet(diff, bullet_set_count_cap) - hit_bullet_count_base = getHitBulletCountBase(diff, bullet_set_count) - impale_bullet_count_base = (bullet_set_count / 2.to_f) - - lost_bullet_count = 0 - hit_bullet_count = 0 - impale_bullet_count = 0 - - if !isLastBulletTurn(bullet_count, bullet_set_count) - - case hit_type - when :hit - hit_bullet_count = hit_bullet_count_base # 通常命中した弾数の計算 - - when :impale - impale_bullet_count = impale_bullet_count_base.floor # 貫通した弾数の計算 - hit_bullet_count = impale_bullet_count_base.ceil - end - - lost_bullet_count = bullet_set_count - - else - - case hit_type - when :hit - hit_bullet_count = getLastHitBulletCount(bullet_count) - - when :impale - impale_bullet_count = getLastHitBulletCount(bullet_count) - hit_bullet_count = bullet_count - impale_bullet_count - end - - lost_bullet_count = bullet_count - end - - return hit_bullet_count, impale_bullet_count, lost_bullet_count - end - - def getSuccessListImpaleBulletList(more_difficulty) - successList = [] - impaleBulletList = [] - - case more_difficulty - when 0 - successList = ["ハード成功", "レギュラー成功"] - impaleBulletList = ["クリティカル", "イクストリーム成功"] - when 1 - successList = ["ハード成功"] - impaleBulletList = ["クリティカル", "イクストリーム成功"] - when 2 - successList = [] - impaleBulletList = ["クリティカル", "イクストリーム成功"] - when 3 - successList = ["クリティカル"] - impaleBulletList = [] - end - - return successList, impaleBulletList - end - - def getNextDifficultyMessage(more_difficulty) - case more_difficulty - when 1 - return "\n【難易度がハードに変更】" - when 2 - return "\n【難易度がイクストリームに変更】" - when 3 - return "\n【難易度がクリティカルに変更】" - end - - return "" - end - - def getSetOfBullet(diff, bullet_set_count_cap) - bullet_set_count = (diff / 10).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - - if bullet_set_count_cap < bullet_set_count - bullet_set_count = bullet_set_count_cap - end - - if (diff >= 1) && (diff < 30) - bullet_set_count = 3 # 技能値が29以下での最低値保障処理 - end - - return bullet_set_count - end - - def getHitBulletCountBase(diff, bullet_set_count) - #hit_bullet_count_base = (bullet_set_count / 2) - hit_bullet_count_base = (bullet_set_count / 2).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - - if (diff >= 1) && (diff < 30) - hit_bullet_count_base = 1 # 技能値29以下での最低値保障 - end - - return hit_bullet_count_base - end - - def isLastBulletTurn(bullet_count, bullet_set_count) - ((bullet_count - bullet_set_count) < 0) - end - - def getLastHitBulletCount(bullet_count) - # 残弾1での最低値保障処理 - if bullet_count == 1 - return 1 - end - - count = (bullet_count / 2.to_f).floor - return count - end - - def getFumbleable(more_difficulty) - # 成功が49以下の出目のみとなるため、ファンブル値は上昇 - return (more_difficulty >= 1) - end - - # 表一式 - # 即時の恐怖症表 - def roll_bmr_table() - total_n, = roll(1, 10) - text = MADNESS_REAL_TIME_TABLE[total_n - 1] - - time_n, = roll(1, 10) - - return "狂気の発作(リアルタイム)(#{total_n}) > #{text}(1D10>#{time_n}ラウンド)" - end - - MADNESS_REAL_TIME_TABLE = [ - '健忘症:探索者は、最後に安全な場所にいた時からあとに起こった出来事の記憶を持たない。例えば、朝食を食べていた次の瞬間には怪物と向かい合っている。これは1D10ラウンド続く。', - '身体症状症:探索者は1D10ラウンドの間、狂気によって視覚や聴覚に異常が生じたり、四肢の1つまたは複数が動かなくなる。', - '暴力衝動:赤い霧が探索者に降り、1D10ラウンドの間、抑えの利かない暴力と破壊を敵味方を問わず周囲に向かって爆発させる。', - '偏執症:探索者は1D10ラウンドの間、重い偏執症に襲われる。誰もが探索者に襲い掛かろうとしている。信用できる者はいない。監視されている。裏切ったやつがいる。これはわなだ。', - '重要な人々:探索者のバックストーリーの重要な人々を見直す。探索者はその場にいた人物を、自分にとっての重要な人々だと思い込む。人間関係の性質を考慮した上で、探索者はそれに従って行動する。1D10ラウンド続く。', - '失神:探索者は失神する。1D10ラウンド後に回復する。', - 'パニックになって逃亡する:探索者は利用できるあらゆる手段を使って、可能なかぎり遠くへ逃げ出さずにはいられない。それが唯一の車両を奪って仲間を置き去りにすることであっても。探索者は1D10ラウンドの間、逃げ続ける。', - '身体的ヒステリーもしくは感情爆発:探索者は1D10ラウンドの間、笑ったり、泣いたり、あるいは叫んだりし続け、行動できなくなる。', - '恐怖症:探索者は新しい恐怖症に陥る。恐怖症表(PHコマンド)をロールするか、キーパーが恐怖症を1つ選ぶ。恐怖症の原因は存在しなくとも、その探索者は次の1D10ラウンドの間、それがそこにあると思い込む。', - 'マニア:探索者は新しいマニアに陥る。マニア表(MAコマンド)をロールするか、キーパーがマニアを1つ選ぶ。その探索者は次の1D10ラウンドの間、自分の新しいマニアに没頭しようとする。' - ].freeze - - # 略式の恐怖表 - def roll_bms_table() - total_n, = roll(1, 10) - text = MADNESS_SUMMARY_TABLE[total_n - 1] - - time_n, = roll(1, 10) - - return "狂気の発作(サマリー)(#{total_n}) > #{text}(1D10>#{time_n}時間)" - end - - MADNESS_SUMMARY_TABLE = [ - '健忘症:探索者が意識を取り戻すと、見知らぬ場所におり、自分が誰かもわからない。記憶は時間をかけてゆっくりと戻るだろう。', - '盗難:探索者は1D10時間後に意識を取り戻すが、盗難の被害を受けている。傷つけられてはいない。探索者が秘蔵の品を身に着けていた場合(「探索者のバックストーリー」参照)、〈幸運〉ロールを行い、それが盗まれていないか判定する。値打ちのあるものはすべて自動的に失われる。', - '暴行:探索者は1D10時間後に意識を取り戻し、自分が暴行を受け、傷ついていることに気づく。耐久力は狂気に陥る前の半分に減少している。ただし重症は生じていない。盗まれたものはない。どのようにダメージが加えられたかは、キーパーに委ねられる。', - '暴力:探索者は暴力と破壊の噴流を爆発させる。探索者が意識を取り戻した時、その行動を認識し記憶していることもあればそうでないこともある。探索者が暴力を振るった物、もしくは人、そして相手を殺してしまったのか、あるいは単に傷つけただけなのかはキーパーに委ねられる。', - 'イデオロギー/信念:探索者のバックストーリーのイデオロギーと信念を参照する。探索者はこれらの1つの権化となり、急進的かつ狂気じみて、感情もあらわに主張するようになる。例えば、宗教に関係する者は、その後地下鉄で声高に福音を説教しているところを目撃されるかもしれない。', - '重要な人々:探索者のバックストーリーの重要な人々を参照し、なぜその人物との関係が重要かを考える。時間がたってから(1D10時間以上)、探索者はその人物に近づくための最善の行動、そしてその人物との関係にとって最善の行動をとる。', - '収容:探索者は精神療養施設あるいは警察の留置所で意識を取り戻す。探索者は徐々にそこにいたった出来事を思い出すかもしれない。', - 'パニック:探索者は非常に遠い場所で意識を取り戻す。荒野で道に迷っているか、列車に乗っているか、長距離バスに乗っているかもしれない。', - '恐怖症:探索者は新たな恐怖症を獲得する。恐怖症表(PHコマンド)をロールするか、キーパーがどれか1つ選ぶ。探索者は1D10時間後に意識を取り戻し、この新たな恐怖症の対象を避けるためにあらゆる努力をする。', - 'マニア:探索者は新たなマニアを獲得する。マニア表(MAコマンド)をロールするか、キーパーがどれか1つ選ぶ。この狂気の発作の間、探索者はこの新たなマニアに完全に溺れているだろう。これがほかの人々に気づかれるかどうかは、キーパーとプレイヤーに委ねられる。' - ].freeze - - # キャスティング・ロールのプッシュに失敗した場合(小) - FAILED_CASTING_L_TABLE = [ - '視界がぼんやりするか、あるいは一時的な失明。', - '悲鳴、声、あるいはほかの雑音が肉体から発せられる。', - '強風やほかの大気の現象。', - '術者、ほかのその場に居合わせた者が出血する。あるいは環境(例えば、壁)から出血する。', - '奇妙な幻視と幻覚。', - 'その付近の小動物たちが爆発する。', - '硫黄の悪臭。', - 'クトゥルフ神話の怪物が偶然召喚される。' - ].freeze - - # キャスティング・ロールのプッシュに失敗した場合(大) - FAILED_CASTING_M_TABLE = [ - '大地が震え、壁に亀裂が入って崩れる。', - '叙事詩的な電撃。', - '血が空から降る。', - '術者の手がしなび、焼けただれる。', - '術者は不自然に年をとる(年齢に+2D10歳、30ページの「年齢」を参照し、能力値に修正を適用すること)。', - '強力な、あるいは無数のクトゥルフ神話存在が現れ、術者を手始めに、近くの全員を攻撃する!', - '術者や近くの全員が遠い時代か場所に吸い込まれる。', - 'クトゥルフ神話の神格が偶然招来される。' - ].freeze - - # 恐怖症表 - PHOBIAS_TABLE = [ - '入浴恐怖症:体、手、顔を洗うのが怖い。', - '高所恐怖症:高いところが怖い。', - '飛行恐怖症:飛ぶのが怖い。', - '広場恐怖症:広場、公共の(混雑した)場所が怖い。', - '鶏肉恐怖症:鶏肉が怖い。', - 'ニンニク恐怖症:ニンニクが怖い。', - '乗車恐怖症:車両の中にいたり車両に乗るのが怖い。', - '風恐怖症:風が怖い。', - '男性恐怖症:男性が怖い。', - 'イングランド恐怖症:イングランド、もしくはイングランド文化などが怖い。', - '花恐怖症:花が怖い。', - '切断恐怖症:手足や指などが切断された人が怖い。', - 'クモ恐怖症:クモが怖い。', - '稲妻恐怖症:稲妻が怖い。', - '廃墟恐怖症:廃墟が怖い。', - '笛恐怖症:笛(フルート)が怖い。', - '細菌恐怖症:細菌、バクテリアが怖い。', - '銃弾恐怖症:投擲物や銃弾が怖い。', - '落下恐怖症:落下が怖い。', - '書物恐怖症:本が怖い。', - '植物恐怖症:植物が怖い。', - '美女恐怖症:美しい女性が怖い。', - '低温恐怖症:冷たいものが怖い。', - '時計恐怖症:時計が怖い。', - '閉所恐怖症:壁に囲まれた場所が怖い。', - '道化師恐怖症:道化師が怖い。', - '犬恐怖症:犬が怖い。', - '悪魔恐怖症:悪魔が怖い。', - '群集恐怖症:人混みが怖い。', - '歯科医恐怖症:歯科医が怖い。', - '処分恐怖症:物を捨てるのが怖い(ためこみ症)', - '毛皮恐怖症:毛皮が怖い。', - '構断恐怖症:道路を横断するのが怖い。', - '教会恐怖症:教会が怖い。', - '鏡恐怖症:鏡が怖い。', - 'ピン恐怖症:針やピンが怖い。', - '昆虫恐怖症:昆虫が怖い。', - '猫恐怖症:猫が怖い。', - '橋恐怖症:橋を渡るのが怖い。', - '老人恐怖症:老人や年をとることが怖い。', - '女性恐怖症:女性が怖い。', - '血液恐怖症:血が怖い。', - '過失恐怖症:失敗が怖い。', - '接触恐怖症:触ることが怖い。', - '爬虫類恐怖症:爬虫類が怖い。', - '霧恐怖症:霧が怖い。', - '銃器恐怖症:銃器が怖い。', - '水恐怖症:水が怖い。', - '睡眠恐怖症:眠ったり、催眠状態に陥るのが怖い。', - '医師恐怖症:医師が怖い。', - '魚恐怖症:魚が怖い。', - 'ゴキブリ恐怖症:ゴキブリが怖い。', - '雷鳴恐怖症:雷鳴が怖い。', - '野菜恐怖症:野菜が怖い。', - '大騒音恐怖症:大きな騒音が怖い。', - '湖恐怖症:湖が怖い。', - '機械恐怖症:機械や装置が怖い。', - '巨大物恐怖症:巨大なものが怖い。', - '拘束恐怖症:縛られたり結びつけられたりするのが怖い。', - '隕石恐怖症:流星や隕石が怖い。', - '孤独恐怖症:独りでいることが怖い。', - '汚染恐怖症:汚れたり汚染されたりするのが怖い。', - '粘液恐怖症:粘液、粘体が怖い。', - '死体恐怖症:死体が怖い。', - '8恐怖症:8の数字が怖い。', - '歯恐怖症:歯が怖い。', - '夢恐怖症:夢が怖い。', - '名称恐怖症:特定の言葉(1つまたは複数)を聞くのが怖い。', - '蛇恐怖症:蛇が怖い。', - '鳥恐怖症:鳥が怖い。', - '寄生生物恐怖症:寄生生物が怖い。', - '人形恐怖症:人形が怖い。', - '恐食症:のみ込むこと食べること、もしくは食べられることが怖い。', - '薬物恐怖症:薬物が怖い。', - '幽霊恐怖症:幽霊が怖い。', - '羞明:日光が怖い。', - 'ひげ恐怖症:ひげが怖い', - '河川恐怖症:川が怖い', - 'アルコール恐怖症:アルコールやアルコール飲料が怖い。', - '火恐怖症:火が怖い。', - '魔術恐怖症:魔術が怖い。', - '暗黒恐怖症:暗闇や夜が怖い。', - '月恐怖症:月が怖い。', - '鉄道恐怖症:列車の旅が怖い。', - '星恐怖症:星が怖い。', - '狭所恐怖症:狭いものや場所が怖い。', - '対称恐怖症:左右対称が怖い。', - '生き埋め恐怖症:生き埋めになることや墓地が怖い。', - '雄牛恐怖症:雄牛が怖い。', - '電話恐怖症:電話が怖い。', - '奇形恐怖症:怪物が怖い。', - '海洋恐怖症:海が怖い。', - '手術恐怖症:外科手術が怖い。', - '13恐怖症:13の数字が怖い。', - '衣類恐怖症:衣服が怖い。', - '魔女恐怖症:魔女と魔術が怖い。', - '黄色恐怖症:黄色や「黄色」という言葉が怖い。', - '外国語恐怖症:外国語が怖い。', - '外国人恐怖症:外国人が怖い。', - '動物恐怖症:動物が怖い。', - ].freeze - - # マニア表 - MANIAS_TABLE = [ - '洗浄マニア:自分の体を洗わずにはいられない。', - '無為マニア:病的な優柔不断。', - '暗闇マニア:暗黒に関する過度の嗜好。', - '高所マニア:高い場所に登らずにはいられない。', - '善良マニア:病的な親切。', - '広場マニア:開けた場所にいたいという激しい願望。', - '先鋭マニア:鋭いもの、とがったものへの執着。', - '猫マニア:猫に関する異常な愛好心。', - '疼痛性愛:痛みへの執着。', - 'にんにくマニア:にんにくへの執着。', - '乗り物マニア:車の中にいることへの執着。', - '病的快活:不合理なほがらかさ。', - '花マニア:花への執着。', - '計算マニア:数への偏執的な没頭。', - '浪費マニア:衝動的あるいは無謀な浪費。', - '自己マニア:孤独への過度の嗜好。', - 'バレエマニア:バレエに関する異常な愛好心。', - '書籍約盗癖:本を盗みたいという強迫的衝動。', - '書物マニア:本または読書、あるいはその両方への執着。', - '歯ぎしりマニア:歯ぎしりしたいという強迫的衝動。', - '悪霊マニア:誰かの中に邪悪な精霊がいるという病的な信念。', - '自己愛マニア:自分自身の美への執着。', - '地図マニア:いたる所の地図を見る制御不可能な強迫的衝動。', - '飛び降りマニア:高い場所から跳躍することへの執着。', - '寒冷マニア:冷たさ、または冷たいもの、あるいはその両方への異常な欲望。', - '舞踏マニア:踊ることへの愛好もしくは制御不可能な熱狂。', - '睡眠マニア:寝ることへの過度の願望。', - '墓地マニア:墓地への執着。', - '色彩マニア:特定の色への執着。', - 'ピエロマニア:ピエロへの執着。', - '遭遇マニア:恐ろしい状況を経験したいという強迫的衝動。', - '殺害マニア:殺害への執着。', - '悪魔マニア:誰かが悪魔にとりつかれているという病的な信念。', - '皮膚マニア:人の皮膚を引っぱりたいという強迫的衝動。', - '正義マニア:正義が完遂されるのを見たいという執着。', - 'アルコールマニア:アルコールに関する異常な欲求。', - '毛皮マニア:毛皮を所有することへの執着。', - '贈り物マニア:贈り物を与えることへの執着。', - '逃走マニア:逃走することへの迫的衝動。', - '外出マニア:外を歩き回ることの強迫的衝動。', - '自己中心マニア:不合理な自心の態度か自己崇拝。', - '公職マニア:公的な職業に就きいという強欲な衝動。', - '戦慄マニア:誰かが罪を犯したという病的な信念', - '知識マニア:知識を得ることへ執着。', - '静寂マニア:静寂であることへ強迫的衝動。', - 'エーテルマニア:エーテルへの切望', - '求婚マニア:奇妙な求婚をすることへの執着。', - '笑いマニア:制御不可能な笑うことへの強迫的衝動。', - '魔術マニア:魔女と魔術への執着。', - '筆記マニア:すべてを書き留めることへの執着。', - '裸体マニア:裸になりたいという強迫的衝動。', - '幻想マニア:快い幻想(現実とは関係なく)にとらわれやすい異常な傾向。', - '蟲マニア:蟲に関する過度の嗜好。', - '火器マニア:火器への執着。', - '水マニア:水に関する不合理な渇望。', - '魚マニア:魚への執着。', - 'アイコンマニア:像や肖像への執着。', - 'アイドルマニア:偶像への執着または献身。', - '情報マニア:事実を集めることへの過度の献身。', - '絶叫マニア:叫ぶことへの説明できない強迫的衝動。', - '窃盗マニア:盗むことへの説明できない強迫的衝動。', - '騒音マニア:大きな、あるいは甲高い騒音を出すことへの制御不可能な強迫的衝動。', - 'ひもマニア:ひもへの執着。', - '宝くじマニア:宝くじに参加したいという極度の願望。', - 'うつマニア:異常に深くふさぎ込む傾向。', - '巨石マニア:環状列石/立石があると奇妙な考えにとらわれる異常な傾向。', - '音楽マニア:音楽もしくは特定の旋律への執着。', - '作詩マニア:詩を書くことへの強欲な願望。', - '憎悪マニア:何らかの対象あるいはグループの何もかもを憎む執着。', - '偏執マニア:ただ1つの思想やアイデアへの異常な執着。', - '虚言マニア:異常なほどにうそをついたり、誇張して話す。', - '疾病マニア:想像上の病気に苦められる幻想。', - '記録マニア:あらゆるものを記録に残そうという強迫的衝動。', - '名前マニア:人々、場所、ものなどの名前への執着', - '単語マニア:ある単語を繰り返したいという押さえ切れない欲求。', - '爪損傷マニア:指の爪をむしったりはがそうとする強迫的衝動。', - '美食マニア:1種類の食物への異常な愛。', - '不平マニア:不平を言うことへの異常な喜び。', - '仮面マニア:仮面や覆面を着けたいという強迫的衝動。', - '幽霊マニア:幽霊への執着。', - '殺人マニア:殺人への病的な傾向。', - '光線マニア:光への病的な願望。', - '放浪マニア:社会の規範に背きたいという異常な欲望。', - '長者マニア:富への強迫的な欲望。', - '病的虚言マニア:うそをつきたくてたまらない強迫的衝動。', - '放火マニア:火をつけることへの強迫的衝動。', - '質問マニア:質問したいという激しい強迫的衝動。', - '鼻マニア:鼻をいじりたいという強迫的衝動。', - '落書きマニア:いらずら書きや落書きへの執着。', - '列車マニア:列車と鉄道旅行への強い魅了。', - '知性マニア:誰かが信じられないほど知的であるという幻想。', - 'テクノマニア:新技術への執着。', - 'タナトスマニア:誰かが死を招く魔術によって呪われているという信念。', - '宗教マニア:その人が神であるという信仰。', - 'かき傷マニア:かき傷をつけることへの強迫的衝動。', - '手術マニア:外科手術を行なうことへの不合理な嗜好。', - '抜毛マニア:自分の髪を引き抜くことへの切望。', - '失明マニア:病的な視覚障害。', - '異国マニア:外国のものへの執着。', - '動物マニア:動物への正気でない溺愛。', - ].freeze -end diff --git a/src/src_bcdice/diceBot/Cthulhu7th_ChineseTraditional.rb b/src/src_bcdice/diceBot/Cthulhu7th_ChineseTraditional.rb deleted file mode 100644 index e84bd1da1..000000000 --- a/src/src_bcdice/diceBot/Cthulhu7th_ChineseTraditional.rb +++ /dev/null @@ -1,386 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Cthulhu7th_ChineseTraditional < DiceBot - # ゲームシステムの識別子 - ID = 'Cthulhu7th:ChineseTraditional' - - # ゲームシステム名 - NAME = '克蘇魯神話第7版' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Chinese Traditional:克蘇魯神話' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 0 - - return total_list.max - end - - def getCheckResultText(total, diff, fumbleable = false) - if total <= diff - return "決定性的成功" if total == 1 - return "極限的成功" if total <= (diff / 5) - return "困難的成功" if total <= (diff / 2) - - return "通常成功" - end - - fumble_text = "致命的失敗" - - return fumble_text if total == 100 - - if total >= 96 - if diff < 50 - return fumble_text - else - return fumble_text if fumbleable - end - end - - return "失敗" - end - - def getCombineRoll(command) - return nil unless /CBR\((\d+),(\d+)\)/i =~ command - - diff_1 = Regexp.last_match(1).to_i - diff_2 = Regexp.last_match(2).to_i - - total, = roll(1, 100) - - result_1 = getCheckResultText(total, diff_1) - result_2 = getCheckResultText(total, diff_2) - - successList = ["決定性的成功", "極限的成功", "困難的成功", "通常成功"] - - succesCount = 0 - succesCount += 1 if successList.include?(result_1) - succesCount += 1 if successList.include?(result_2) - debug("succesCount", succesCount) - - rank = - if succesCount >= 2 - "成功" - elsif succesCount == 1 - "部分的成功" - else - "失敗" - end - - return "(1d100<=#{diff_1},#{diff_2}) > #{total}[#{result_1},#{result_2}] > #{rank}" - end - - def getFullAutoResult(command) - return nil unless /^FAR\((-?\d+)(,(-?\d+))(,(-?\d+))(,(-?\d+))?\)/i =~ command - - bullet_count = Regexp.last_match(1).to_i - diff = Regexp.last_match(3).to_i - broken_number = Regexp.last_match(5).to_i - bonus_dice_count = (Regexp.last_match(7) || 0).to_i - - output = "" - - # 射擊數不超過(8回*(PC技能値最大値/10))=72的上限 - bullet_count_limit = 100 - if bullet_count > bullet_count_limit - output += "\n彈藥太多。請改裝填#{bullet_count_limit}發。\n" - bullet_count = bullet_count_limit - end - - return "正確裝填數。" if bullet_count <= 0 - return "正確目標值。" if diff <= 0 - - if broken_number < 0 - output += "\n正確故障值。排除獎勵記號。\n" - broken_number = broken_number.abs - end - - unless @bonus_dice_range.include?(bonus_dice_count) - return "\n錯誤。獎勵、懲罰骰値為#{@bonus_dice_range.min}~#{@bonus_dice_range.max}です。" - end - - output += "獎勵、懲罰骰値[#{bonus_dice_count}]" - output += rollFullAuto(bullet_count, diff, broken_number, bonus_dice_count) - - return output - end - - def rollFullAuto(bullet_count, diff, broken_number, dice_num) - output = "" - loopCount = 0 - - counts = { - :hit_bullet => 0, - :impale_bullet => 0, - :bullet => bullet_count, - } - - # 難度變更用Loop - (0..3).each do |more_difficlty| - output += getNextDifficltyMessage(more_difficlty) - - # ペナルティダイスを減らしながらロール用ループ削減獎勵骰時角色用Loop - while dice_num >= @bonus_dice_range.min - - loopCount += 1 - hit_result, total, total_list = getHitResultInfos(dice_num, diff, more_difficlty) - output += "\n#{loopCount}次: > #{total_list.join(', ')} > #{hit_result}" - - if total >= broken_number - output += "卡彈" - return getHitResultText(output, counts) - end - - hit_type = getHitType(more_difficlty, hit_result) - hit_bullet, impale_bullet, lost_bullet = getBulletResults(counts[:bullet], hit_type, diff) - - counts[:hit_bullet] += hit_bullet - counts[:impale_bullet] += impale_bullet - counts[:bullet] -= lost_bullet - - return getHitResultText(output, counts) if counts[:bullet] <= 0 - - dice_num -= 1 - end - - dice_num += 1 - end - - return getHitResultText(output, counts) - end - - def getHitResultInfos(dice_num, diff, more_difficlty) - units_digit = rollPercentD10 - total_list = getTotalLists(dice_num, units_digit) - total = getTotal(total_list, dice_num) - - fumbleable = getFumbleable(more_difficlty) - hit_result = getCheckResultText(total, diff, fumbleable) - - return hit_result, total, total_list - end - - def getHitResultText(output, counts) - return "#{output}\n> #{counts[:hit_bullet]}發射擊命中、#{counts[:impale_bullet]}射擊貫穿、剩餘彈藥#{counts[:bullet]}發" - end - - def getHitType(more_difficlty, hit_result) - successList, impaleBulletList = getSuccessListImpaleBulletList(more_difficlty) - - return :hit if successList.include?(hit_result) - return :impale if impaleBulletList.include?(hit_result) - - return "" - end - - def getBulletResults(bullet_count, hit_type, diff) - bullet_set_count = getSetOfBullet(diff) - hit_bullet_count_base = getHitBulletCountBase(diff, bullet_set_count) - impale_bullet_count_base = (bullet_set_count / 2.to_f) - - lost_bullet_count = 0 - hit_bullet_count = 0 - impale_bullet_count = 0 - - if !isLastBulletTurn(bullet_count, bullet_set_count) - - case hit_type - when :hit - hit_bullet_count = hit_bullet_count_base # 正常命中彈藥數之計算 - - when :impale - hit_bullet_count = impale_bullet_count_base.floor - impale_bullet_count = impale_bullet_count_base.ceil # 貫穿彈藥數之計算 - end - - lost_bullet_count = bullet_set_count - - else - - case hit_type - when :hit - hit_bullet_count = getLastHitBulletCount(bullet_count) - - when :impale - halfbull = bullet_count / 2.to_f - - hit_bullet_count = halfbull.floor - impale_bullet_count = halfbull.ceil - end - - lost_bullet_count = bullet_count - end - - return hit_bullet_count, impale_bullet_count, lost_bullet_count - end - - def getSuccessListImpaleBulletList(more_difficlty) - successList = [] - impaleBulletList = [] - - case more_difficlty - when 0 - successList = ["困難的成功", "通常成功"] - impaleBulletList = ["決定性的成功", "極限的成功"] - when 1 - successList = ["困難的成功"] - impaleBulletList = ["決定性的成功", "極限的成功"] - when 2 - successList = [] - impaleBulletList = ["決定性的成功", "極限的成功"] - when 3 - successList = ["決定性的成功"] - impaleBulletList = [] - end - - return successList, impaleBulletList - end - - def getNextDifficltyMessage(more_difficlty) - case more_difficlty - when 1 - return "\n 變更難度為困難的成功" - when 2 - return "\n 變更難度為極限的成功" - when 3 - return "\n 變更難度為決定性的成功" - end - - return "" - end - - def getSetOfBullet(diff) - #bullet_set_count = diff / 10 - bullet_set_count = (diff / 10).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - - if (diff >= 1) && (diff < 10) - bullet_set_count = 1 # 技能值9以下的最低限度保障處理 - end - - return bullet_set_count - end - - def getHitBulletCountBase(diff, bullet_set_count) - #hit_bullet_count_base = (bullet_set_count / 2) - hit_bullet_count_base = (bullet_set_count / 2).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - - if (diff >= 1) && (diff < 10) - hit_bullet_count_base = 1 # 技能值9以下的最低限度保障處理 - end - - return hit_bullet_count_base - end - - def isLastBulletTurn(bullet_count, bullet_set_count) - ((bullet_count - bullet_set_count) < 0) - end - - def getLastHitBulletCount(bullet_count) - # 在剩餘彈藥為1的最低限度保障處理 - if bullet_count == 1 - return 1 - end - - count = (bullet_count / 2.to_f).floor - return count - end - - def getFumbleable(more_difficlty) - # 成功判定時因只擲出49以下數值,而大失敗率上昇 - return (more_difficlty >= 1) - end -end diff --git a/src/src_bcdice/diceBot/Cthulhu7th_Korean.rb b/src/src_bcdice/diceBot/Cthulhu7th_Korean.rb deleted file mode 100644 index 5af8af2a8..000000000 --- a/src/src_bcdice/diceBot/Cthulhu7th_Korean.rb +++ /dev/null @@ -1,383 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Cthulhu7th_Korean < DiceBot - # ゲームシステムの識別子 - ID = 'Cthulhu7th:Korean' - - # ゲームシステム名 - NAME = '크툴루의 부름 7판' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Korean:크툴루' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 0 - - return total_list.max - end - - def getCheckResultText(total, diff, fumbleable = false) - if total <= diff - return "대성공" if total == 1 - return "대단한 성공" if total <= (diff / 5) - return "어려운 성공" if total <= (diff / 2) - - return "보통 성공" - end - - fumble_text = "대실패" - - return fumble_text if total == 100 - - if total >= 96 - if diff < 50 - return fumble_text - else - return fumble_text if fumbleable - end - end - - return "실패" - end - - def getCombineRoll(command) - return nil unless /CBR\((\d+),(\d+)\)/i =~ command - - diff_1 = Regexp.last_match(1).to_i - diff_2 = Regexp.last_match(2).to_i - - total, = roll(1, 100) - - result_1 = getCheckResultText(total, diff_1) - result_2 = getCheckResultText(total, diff_2) - - successList = ["대성공", "대단한 성공", "어려운 성공", "보통성공"] - - succesCount = 0 - succesCount += 1 if successList.include?(result_1) - succesCount += 1 if successList.include?(result_2) - debug("succesCount", succesCount) - - rank = - if succesCount >= 2 - "성공" - elsif succesCount == 1 - "부분적 성공" - else - "실패" - end - - return "(1d100<=#{diff_1},#{diff_2}) > #{total}[#{result_1},#{result_2}] > #{rank}" - end - - def getFullAutoResult(command) - return nil unless /^FAR\((-?\d+)(,(-?\d+))(,(-?\d+))(,(-?\d+))?\)/i =~ command - - bullet_count = Regexp.last_match(1).to_i - diff = Regexp.last_match(3).to_i - broken_number = Regexp.last_match(5).to_i - bonus_dice_count = (Regexp.last_match(7) || 0).to_i - - output = "" - - # 최대(8번*(PC기능 수치 최대값/10))=72발밖에 쏠 수 없으니 상한 - bullet_count_limit = 100 - if bullet_count > bullet_count_limit - output += "\n탄약이 너무 많습니다. 장전된 탄약을 #{bullet_count_limit}개로 변경합니다.\n" - bullet_count = bullet_count_limit - end - - return "탄약은 1 이상입니다." if bullet_count <= 0 - return "목표치는 1 이상입니다." if diff <= 0 - - if broken_number < 0 - output += "\n고장 넘버는 1 이상입니다. 마이너스 기호를 제거합니다.\n" - broken_number = broken_number.abs - end - - unless @bonus_dice_range.include?(bonus_dice_count) - return "\n에러. 보너스, 패널티 주사위의 수치는 #{@bonus_dice_range.min}~#{@bonus_dice_range.max}입니다." - end - - output += "보너스, 패널티 주사위 [#{bonus_dice_count}]" - output += rollFullAuto(bullet_count, diff, broken_number, bonus_dice_count) - - return output - end - - def rollFullAuto(bullet_count, diff, broken_number, dice_num) - output = "" - loopCount = 0 - - counts = { - :hit_bullet => 0, - :impale_bullet => 0, - :bullet => bullet_count, - } - - # 난이도 변경용 루프 - (0..3).each do |more_difficlty| - output += getNextDifficltyMessage(more_difficlty) - - # 패널티 다이스를 줄이면서 굴리는 용 루프 - while dice_num >= @bonus_dice_range.min - - loopCount += 1 - hit_result, total, total_list = getHitResultInfos(dice_num, diff, more_difficlty) - output += "\n#{loopCount}번째: > #{total_list.join(', ')} > #{hit_result}" - - if total >= broken_number - output += " 총알 걸림" - return getHitResultText(output, counts) - end - - hit_type = getHitType(more_difficlty, hit_result) - hit_bullet, impale_bullet, lost_bullet = getBulletResults(counts[:bullet], hit_type, diff) - - counts[:hit_bullet] += hit_bullet - counts[:impale_bullet] += impale_bullet - counts[:bullet] -= lost_bullet - - return getHitResultText(output, counts) if counts[:bullet] <= 0 - - dice_num -= 1 - end - - dice_num += 1 - end - - return getHitResultText(output, counts) - end - - def getHitResultInfos(dice_num, diff, more_difficlty) - units_digit = rollPercentD10 - total_list = getTotalLists(dice_num, units_digit) - total = getTotal(total_list, dice_num) - - fumbleable = getFumbleable(more_difficlty) - hit_result = getCheckResultText(total, diff, fumbleable) - - return hit_result, total, total_list - end - - def getHitResultText(output, counts) - return "#{output}\n> #{counts[:hit_bullet]}발이 명중, #{counts[:impale_bullet]}발이 관통, 잔탄 #{counts[:bullet]}발" - end - - def getHitType(more_difficlty, hit_result) - successList, impaleBulletList = getSuccessListImpaleBulletList(more_difficlty) - - return :hit if successList.include?(hit_result) - return :impale if impaleBulletList.include?(hit_result) - - return "" - end - - def getBulletResults(bullet_count, hit_type, diff) - bullet_set_count = getSetOfBullet(diff) - hit_bullet_count_base = getHitBulletCountBase(diff, bullet_set_count) - impale_bullet_count_base = (bullet_set_count / 2.to_f) - - lost_bullet_count = 0 - hit_bullet_count = 0 - impale_bullet_count = 0 - - if !isLastBulletTurn(bullet_count, bullet_set_count) - - case hit_type - when :hit - hit_bullet_count = hit_bullet_count_base # 보통명중한 탄수의 계산 - - when :impale - hit_bullet_count = impale_bullet_count_base.floor - impale_bullet_count = impale_bullet_count_base.ceil # 관통한 탄수의 계산 - end - - lost_bullet_count = bullet_set_count - - else - - case hit_type - when :hit - hit_bullet_count = getLastHitBulletCount(bullet_count) - - when :impale - halfbull = bullet_count / 2.to_f - - hit_bullet_count = halfbull.floor - impale_bullet_count = halfbull.ceil - end - - lost_bullet_count = bullet_count - end - - return hit_bullet_count, impale_bullet_count, lost_bullet_count - end - - def getSuccessListImpaleBulletList(more_difficlty) - successList = [] - impaleBulletList = [] - - case more_difficlty - when 0 - successList = ["어려운 성공", "보통 성공"] - impaleBulletList = ["대성공", "대단한 성공"] - when 1 - successList = ["어려운 성공"] - impaleBulletList = ["대성공", "대단한 성공"] - when 2 - successList = [] - impaleBulletList = ["대성공", "대단한 성공"] - when 3 - successList = ["대성공"] - impaleBulletList = [] - end - - return successList, impaleBulletList - end - - def getNextDifficltyMessage(more_difficlty) - case more_difficlty - when 1 - return "\n 난이도가 어려운 성공으로 변경" - when 2 - return "\n 난이도가 대단한 성공으로 변경" - when 3 - return "\n 난이도가 대성공으로 변경" - end - - return "" - end - - def getSetOfBullet(diff) - #bullet_set_count = diff / 10 - bullet_set_count = (diff / 10).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - - if (diff >= 1) && (diff < 10) - bullet_set_count = 1 # 기능 수치가 9 이하일 때의 최저수치 보장 처리 - end - - return bullet_set_count - end - - def getHitBulletCountBase(diff, bullet_set_count) - #hit_bullet_count_base = (bullet_set_count / 2) - hit_bullet_count_base = (bullet_set_count / 2).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - - if (diff >= 1) && (diff < 10) - hit_bullet_count_base = 1 # 기능 수치가 9 이하일 때의 최저수치 보장 - end - - return hit_bullet_count_base - end - - def isLastBulletTurn(bullet_count, bullet_set_count) - ((bullet_count - bullet_set_count) < 0) - end - - def getLastHitBulletCount(bullet_count) - # 잔탄 1발일 때의 최저수치 보장 처리 - if bullet_count == 1 - return 1 - end - - count = (bullet_count / 2.to_f).floor - return count - end - - def getFumbleable(more_difficlty) - # 성공이 49 이하일때만이기 때문에 펌블치는 상승 - return (more_difficlty >= 1) - end -end diff --git a/src/src_bcdice/diceBot/CthulhuTech.rb b/src/src_bcdice/diceBot/CthulhuTech.rb deleted file mode 100644 index 1b0fbc95d..000000000 --- a/src/src_bcdice/diceBot/CthulhuTech.rb +++ /dev/null @@ -1,264 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/DiceBot' -require 'utils/modifier_formatter' -require 'utils/ArithmeticEvaluator' - -# クトゥルフテックのダイスボット -class CthulhuTech < DiceBot - setPrefixes(['\d+D10.*']) - - # ゲームシステムの識別子 - ID = 'CthulhuTech' - - # ゲームシステム名 - NAME = 'クトゥルフテック' - - # ゲームシステム名の読みがな - SORT_KEY = 'くとうるふてつく' - - # ダイスボットの使い方 - HELP_MESSAGE = <=d - n個のダイスを使用して、修正値m、難易度dで行為判定(test)を行います。 - 修正値mは省略可能、複数指定可能(例:+2-4)です。 - 成功、失敗、クリティカル、ファンブルを自動判定します。 - 例)2D10>=12 4D10+2>=28 5D10+2-4>=32 - -・対抗判定(contest):nD10+m>d - 行為判定と同様ですが、防御側有利のため「>=」ではなく「>」を入力します。 - ダメージダイスも表示します。 -INFO_MESSAGE_TEXT - - # 行為判定のノード - class Test - include ModifierFormatter - - # 判定で用いる比較演算子 - # - # 対抗判定で変えられるように定数で定義する。 - COMPARE_OP = :>= - - # ノードを初期化する - # @param [Integer] num ダイス数 - # @param [Integer] modifier 修正値 - # @param [Integer] difficulty 難易度 - def initialize(num, modifier, difficulty) - @num = num - @modifier = modifier - @difficulty = difficulty - end - - # 判定を行う - # @param [DiceBot] bot ダイスボット - # @return [String] 判定結果 - def execute(bot) - dice_values = Array.new(@num) { bot.roll(1, 10)[0] } - - # ファンブル:出目の半分(小数点以下切り上げ)以上が1の場合 - fumble = dice_values.count(1) >= ((dice_values.length + 1) / 2).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - - sorted_dice_values = dice_values.sort - roll_result = calculate_roll_result(sorted_dice_values) - test_value = roll_result + @modifier - - diff = test_value - @difficulty - - # diff と @difficulty との比較の演算子が変わるので、send で対応 - # 例:COMPARE_OP が :>= ならば、diff >= 0 と同じ - success = !fumble && diff.send(self.class::COMPARE_OP, 0) - - critical = diff >= 10 - - output_parts = [ - "(#{expression()})", - test_value_expression(sorted_dice_values, roll_result), - test_value, - result_str(success, fumble, critical, diff) - ] - - return output_parts.join(' > ') - end - - private - - # 数式表現を返す - # @return [String] - def expression - modifier_str = format_modifier(@modifier) - return "#{@num}D10#{modifier_str}#{self.class::COMPARE_OP}#{@difficulty}" - end - - # 判定値の数式表現を返す - # @param [Array] dice_values 出目の配列 - # @param [Integer] roll_result ダイスロール結果の値 - # @return [String] - def test_value_expression(dice_values, roll_result) - dice_str = dice_values.join(',') - modifier_str = format_modifier(@modifier) - - return "#{roll_result}[#{dice_str}]#{modifier_str}" - end - - # 判定結果の文字列を返す - # @param [Boolean] success 成功したか - # @param [Boolean] fumble ファンブルだったか - # @param [Boolean] critical クリティカルだったか - # @param [Integer] _diff 判定値と難易度の差 - # @return [String] - def result_str(success, fumble, critical, _diff) - return 'ファンブル' if fumble - return 'クリティカル' if critical - - return success ? '成功' : '失敗' - end - - # ダイスロール結果を計算する - # - # 以下のうち最大のものを返す。 - # - # * 出目の最大値 - # * ゾロ目の和の最大値 - # * ストレート(昇順で連続する3個以上の値)の和の最大値 - # - # @param [Array] sorted_dice_values 昇順でソートされた出目の配列 - # @return [Integer] - def calculate_roll_result(sorted_dice_values) - highest_single_roll = sorted_dice_values.last - - candidates = [ - highest_single_roll, - sum_of_highest_set_of_multiples(sorted_dice_values), - sum_of_largest_straight(sorted_dice_values) - ] - - return candidates.max - end - - # ゾロ目の和の最大値を求める - # @param [Array] dice_values 出目の配列 - # @return [Integer] - def sum_of_highest_set_of_multiples(dice_values) - dice_values. - # TODO: Ruby 2.2以降では group_by(&:itself) が使える - group_by { |i| i }. - # TODO: Ruby 2.4以降では value_group.sum が使える - map { |_, value_group| value_group.reduce(0, &:+) }. - max - end - - # ストレートの和の最大値を求める - # - # ストレートとは、昇順で3個以上連続した値のこと。 - # - # @param [Array] sorted_dice_values 昇順にソートされた出目の配列 - # @return [Integer] ストレートの和の最大値 - # @return [0] ストレートが存在しなかった場合 - def sum_of_largest_straight(sorted_dice_values) - # 出目が3個未満ならば、ストレートは存在しない - return 0 if sorted_dice_values.length < 3 - - # ストレートの和の最大値 - max_sum = 0 - - # 連続した値の数 - n_consecutive_values = 0 - # 連続した値の和 - sum = 0 - # 直前の値 - # 初期値を負の値にして、最初の値と連続にならないようにする - last = -1 - - sorted_dice_values.uniq.each do |value| - # 値が連続でなければ、状態を初期化する(現在の値を連続1個目とする) - if value - last > 1 - n_consecutive_values = 1 - sum = value - last = value - - next - end - - # 連続した値なので溜める - n_consecutive_values += 1 - sum += value - last = value - - # ストレートならば、和の最大値を更新する - if n_consecutive_values >= 3 && sum > max_sum - max_sum = sum - end - end - - return max_sum - end - end - - # 対抗判定のノード - class Contest < Test - # 判定で用いる比較演算子 - COMPARE_OP = :> - - # 判定結果の文字列を返す - # - # 成功した場合(クリティカルを含む)、ダメージロールのコマンドを末尾に - # 追加する。 - # - # @param [Boolean] success 成功したか - # @param [Integer] diff 判定値と難易度の差 - # @return [String] - def result_str(success, _fumble, _critical, diff) - formatted = super - - if success - damage_roll_num = (diff / 5.0).ceil - damage_roll = "#{damage_roll_num}D10" - - "#{formatted}(ダメージ:#{damage_roll})" - else - formatted - end - end - end - - # ダイスボットを初期化する - def initialize - super - - # 加算ロールで出目をソートする - @sortType = 1 - end - - # ダイスボット固有コマンドの処理を行う - # @param [String] command コマンド - # @return [String] ダイスボット固有コマンドの結果 - # @return [nil] 無効なコマンドだった場合 - def rollDiceCommand(command) - node = parse(command) - return nil unless node - - return node.execute(self) - end - - private - - # 判定コマンドの正規表現 - TEST_RE = /\A(\d+)D10((?:[-+]\d+)+)?(>=?)(\d+)\z/.freeze - - # 構文解析する - # @param [String] command コマンド - # @return [Test, Contest] 判定のノード - # @return [nil] 無効なコマンドだった場合 - def parse(command) - m = TEST_RE.match(command) - return nil unless m - - num = m[1].to_i - modifier = m[2] ? ArithmeticEvaluator.new.eval(m[2]) : 0 - node_class = m[3] == '>' ? Contest : Test - difficulty = m[4].to_i - - return node_class.new(num, modifier, difficulty) - end -end diff --git a/src/src_bcdice/diceBot/Cthulhu_ChineseTraditional.rb b/src/src_bcdice/diceBot/Cthulhu_ChineseTraditional.rb deleted file mode 100644 index bc78222a0..000000000 --- a/src/src_bcdice/diceBot/Cthulhu_ChineseTraditional.rb +++ /dev/null @@ -1,240 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Cthulhu_ChineseTraditional < DiceBot - # ゲームシステムの識別子 - ID = 'Cthulhu:ChineseTraditional' - - # ゲームシステム名 - NAME = '克蘇魯神話' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Chinese Traditional:克蘇魯神話7' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 - output = "(1D100<=#{diff})" - - if broken_num > 0 - output += " 故障率[#{broken_num}]" - end - - total_n, = roll(1, 100) - - output += " > #{total_n}" - output += " > #{getCheckResultText(total_n, diff, broken_num)}" - else - total_n, = roll(1, 100) - output = "(1D100) > #{total_n}" - end - - return output - end - - def getCheckResultText(total_n, diff, broken_num = 0) - result = "" - diff_special = 0 - fumble = false - - if @special_percentage > 0 - # 需有special的數值設定才能做爆擊/大失敗的判定 - diff_special = (diff * @special_percentage / 100).floor - if diff_special < 1 - diff_special = 1 - end - end - - if (total_n <= diff) && (total_n < 100) - result = "成功" - - if diff_special > 0 - if total_n <= @critical_percentage - if total_n <= diff_special - result = "決定性的成功/特殊" - else - result = "決定性的成功" - end - else - if total_n <= diff_special - result = "特殊" - end - end - end - else - result = "失敗" - - if diff_special > 0 - if (total_n >= (101 - @fumble_percentage)) && (diff < 100) - result = "致命性失敗" - fumble = true - end - end - end - - if broken_num > 0 - if total_n >= broken_num - if fumble - result += "/故障" - else - result = "故障" - end - end - end - - return result - end - - def getRegistResult(command) - m = /RES(B)?([-\d]+)/i.match(command) - unless m - return "1" - end - - value = m[2].to_i - target = value * 5 + 50 - - if target < 5 - return "(1d100<=#{target}) > 自動失敗" - end - - if target > 95 - return "(1d100<=#{target}) > 自動成功" - end - - # 通常判定 - total_n, = roll(1, 100) - result = getCheckResultText(total_n, target) - - return "(1d100<=#{target}) > #{total_n} > #{result}" - end - - def getCombineRoll(command) - m = /CBR(B)?\((\d+),(\d+)\)/i.match(command) - unless m - return "1" - end - - diff_1 = m[2].to_i - diff_2 = m[3].to_i - - total, = roll(1, 100) - - result_1 = getCheckResultText(total, diff_1) - result_2 = getCheckResultText(total, diff_2) - - successList = ["決定性成功/特殊", "決定性成功", "特殊", "成功"] - - succesCount = 0 - succesCount += 1 if successList.include?(result_1) - succesCount += 1 if successList.include?(result_2) - debug("succesCount", succesCount) - - rank = - if succesCount >= 2 - "成功" - elsif succesCount == 1 - "部分性成功" - else - "失敗" - end - - return "(1d100<=#{diff_1},#{diff_2}) > #{total}[#{result_1},#{result_2}] > #{rank}" - end -end diff --git a/src/src_bcdice/diceBot/Cthulhu_Korean.rb b/src/src_bcdice/diceBot/Cthulhu_Korean.rb deleted file mode 100644 index 25bf52097..000000000 --- a/src/src_bcdice/diceBot/Cthulhu_Korean.rb +++ /dev/null @@ -1,238 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Cthulhu_Korean < DiceBot - # ゲームシステムの識別子 - ID = 'Cthulhu:Korean' - - # ゲームシステム名 - NAME = '크툴루' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Korean:크툴루의부름7' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 - output = "(1D100<=#{diff})" - - if broken_num > 0 - output += " 고장넘버[#{broken_num}]" - end - - total_n, = roll(1, 100) - - output += " > #{total_n}" - output += " > #{getCheckResultText(total_n, diff, broken_num)}" - else - # 1D100단순 치환 취급 - # 필요없을지도 - total_n, = roll(1, 100) - output = "(1D100) > #{total_n}" - end - - return output - end - - def getCheckResultText(total_n, diff, broken_num = 0) - result = "" - diff_special = 0 - fumble = false - - if @special_percentage > 0 - # special의 값설정이 없는 경우 크리티컬/펌블 판정도 없다 - diff_special = (diff * @special_percentage / 100).floor - if diff_special < 1 - diff_special = 1 - end - end - - if (total_n <= diff) && (total_n < 100) - result = "성공" - - if diff_special > 0 - if total_n <= @critical_percentage - if total_n <= diff_special - result = "크리티컬/스페셜" - else - result = "크리티컬" - end - else - if total_n <= diff_special - result = "스페셜" - end - end - end - else - result = "실패" - - if diff_special > 0 - if (total_n >= (101 - @fumble_percentage)) && (diff < 100) - result = "펌블" - fumble = true - end - end - end - - if broken_num > 0 - if total_n >= broken_num - if fumble - result += "/고장" - else - result = "고장" - end - end - end - - return result - end - - def getRegistResult(command) - m = /RES(B)?([-\d]+)/i.match(command) - unless m - return "1" - end - - value = m[2].to_i - target = value * 5 + 50 - - if target < 5 - return "(1d100<=#{target}) > 자동실패" - end - - if target > 95 - return "(1d100<=#{target}) > 자동성공" - end - - # 통상판정 - total_n, = roll(1, 100) - result = getCheckResultText(total_n, target) - - return "(1d100<=#{target}) > #{total_n} > #{result}" - end - - def getCombineRoll(command) - m = /CBR(B)?\((\d+),(\d+)\)/i.match(command) - unless m - return "1" - end - - diff_1 = m[2].to_i - diff_2 = m[3].to_i - - total, = roll(1, 100) - - result_1 = getCheckResultText(total, diff_1) - result_2 = getCheckResultText(total, diff_2) - - successList = ["크리티컬/스페셜", "크리티컬", "스페셜", "성공"] - - succesCount = 0 - succesCount += 1 if successList.include?(result_1) - succesCount += 1 if successList.include?(result_2) - debug("succesCount", succesCount) - - rank = - if succesCount >= 2 - "성공" - elsif succesCount == 1 - "부분적 성공" - else - "실패" - end - - return "(1d100<=#{diff_1},#{diff_2}) > #{total}[#{result_1},#{result_2}] > #{rank}" - end -end diff --git a/src/src_bcdice/diceBot/DarkBlaze.rb b/src/src_bcdice/diceBot/DarkBlaze.rb deleted file mode 100644 index 1aea1caf8..000000000 --- a/src/src_bcdice/diceBot/DarkBlaze.rb +++ /dev/null @@ -1,216 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class DarkBlaze < DiceBot - # ゲームシステムの識別子 - ID = 'DarkBlaze' - - # ゲームシステム名 - NAME = 'ダークブレイズ' - - # ゲームシステム名の読みがな - SORT_KEY = 'たあくふれいす' - - # ダイスボットの使い方 - HELP_MESSAGE = <=m mは難易度)に読替をします。 - クリティカルとファンブルも自動で処理されます。 - DB@x@y#m と DBx,y#m にも対応しました。 - 例)DB33   DB32#-1   DB@3@1#1   DB3,2   DB23#1>=4   3R6+1[3,3]>=4 - -・掘り出し袋表 (BTx) - "BT(ダイス数)"で掘り出し袋表を自動で振り、結果を表示します。 - 例)BT1   BT2   BT[1...3] -INFO_MESSAGE_TEXT - - setPrefixes(['DB.*', 'BT.*']) - - def initialize - super - @sendMode = 2 - end - - def changeText(string) - return string unless string =~ /DB/i - - string = string.gsub(/DB(\d),(\d)/) { "DB#{Regexp.last_match(1)}#{Regexp.last_match(2)}" } - string = string.gsub(/DB\@(\d)\@(\d)/) { "DB#{Regexp.last_match(1)}#{Regexp.last_match(2)}" } - string = string.gsub(/DB(\d)(\d)(#([\d][\+\-\d]*))/) { "3R6+#{Regexp.last_match(4)}[#{Regexp.last_match(1)},#{Regexp.last_match(2)}]" } - string = string.gsub(/DB(\d)(\d)(#([\+\-\d]*))/) { "3R6#{Regexp.last_match(4)}[#{Regexp.last_match(1)},#{Regexp.last_match(2)}]" } - string = string.gsub(/DB(\d)(\d)/) { "3R6[#{Regexp.last_match(1)},#{Regexp.last_match(2)}]" } - - return string - end - - def dice_command_xRn(string, nick_e) - return check_roll(string, nick_e) - end - - # ゲーム別成功度判定(nD6) - def check_nD6(total, _dice_total, _dice_list, cmp_op, target) - if cmp_op != :>= || target == "?" - '' - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - def check_roll(string, nick_e) - output = "1" - - return '1' unless (m = /(^|\s)S?(3[rR]6([\+\-\d]+)?(\[(\d+),(\d+)\])(([>=]+)(\d+))?)(\s|$)/i.match(string)) - - string = m[2] - mod = 0 - abl = 1 - skl = 1 - signOfInequality = "" - diff = 0 - - mod = parren_killer("(0#{m[3]})").to_i if m[3] - - if m[4] - abl = m[5].to_i - skl = m[6].to_i - end - - if m[7] - signOfInequality = marshalSignOfInequality(m[8]) - diff = m[9].to_i - end - - total, out_str, dice_list = get_dice(mod, abl, skl) - output = "#{nick_e}: (#{string}) > #{out_str}" - - if signOfInequality != "" # 成功度判定処理 - dice_total = dice_list.inject(&:+) - cmp_op = Normalize.comparison_operator(signOfInequality) - output += check_result(total, dice_total, dice_list, 6, cmp_op, diff) - end - - return output - end - - def get_dice(mod, abl, skl) - total = 0 - crit = 0 - fumble = 0 - dice_c = 3 + mod.abs - - dummy = roll(dice_c, 6, 1) - - dummy.shift - dice_str = dummy.shift - - dice_arr = dice_str.split(/,/).collect { |i| i.to_i } - - 3.times do |i| - ch = dice_arr[i] - - if mod < 0 - ch = dice_arr[dice_c - i - 1] - end - - total += 1 if ch <= abl - total += 1 if ch <= skl - crit += 1 if ch <= 2 - fumble += 1 if ch >= 5 - end - - resultText = "" - - if crit >= 3 - resultText = " > クリティカル" - total = 6 + skl - end - - if fumble >= 3 - resultText = " > ファンブル" - total = 0 - end - - output = "#{total}[#{dice_str}]#{resultText}" - - return total, output, dice_arr - end - - def rollDiceCommand(command) - case command - when /BT(\d+)?/i - dice = Regexp.last_match(1) - dice ||= 1 - return get_horidasibukuro_table(dice) - end - - return nil - end - - # ** 掘り出し袋表 - def get_horidasibukuro_table(dice) - output = '1' - - material_kind = [ # 2D6 - "蟲甲", # 5 - "金属", # 6 - "金貨", # 7 - "植物", # 8 - "獣皮", # 9 - "竜鱗", # 10 - "レアモノ", # 11 - "レアモノ", # 12 - ] - - magic_stone = [ # 1D3 - "火炎石", - "雷撃石", - "氷結石", - ] - - num1, = roll(2, 6) - num2, = roll(dice, 6) - - debug('dice', dice) - debug('num1', num1) - debug('num2', num2) - - if num1 <= 4 - num2, = roll(1, 6) - magic_stone_result = (magic_stone[(num2 / 2).to_i - 1]) - output = "《#{magic_stone_result}》を#{dice}個獲得" - elsif num1 == 7 - output = "《金貨》を#{num2}枚獲得" - else - type = material_kind[num1 - 5] - - if num2 <= 3 - output = "《#{type} I》を1個獲得" - elsif num2 <= 5 - output = "《#{type} I》を2個獲得" - elsif num2 <= 7 - output = "《#{type} I》を3個獲得" - elsif num2 <= 9 - output = "《#{type} II》を1個獲得" - elsif num2 <= 11 - output = "《#{type} I》を2個《#{type} II》を1個獲得" - elsif num2 <= 13 - output = "《#{type} I》を2個《#{type} II》を2個獲得" - elsif num2 <= 15 - output = "《#{type} III》を1個獲得" - elsif num2 <= 17 - output = "《#{type} II》を2個《#{type} III》を1個獲得" - else - output = "《#{type} II》を2個《#{type} III》を2個獲得" - end - end - - if output != '1' - output = "掘り出し袋表[#{num1},#{num2}] > #{output}" - end - - return output - end -end diff --git a/src/src_bcdice/diceBot/DarkDaysDrive.rb b/src/src_bcdice/diceBot/DarkDaysDrive.rb deleted file mode 100644 index b74f1bb2a..000000000 --- a/src/src_bcdice/diceBot/DarkDaysDrive.rb +++ /dev/null @@ -1,504 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class DarkDaysDrive < DiceBot - # ゲームシステムの識別子 - ID = 'DarkDaysDrive' - - # ゲームシステム名 - NAME = 'ダークデイズドライブ' - - # ゲームシステム名の読みがな - SORT_KEY = 'たあくていすとらいふ' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - " > ファンブル(判定失敗。失敗表(FT)を追加で1回振る)" - elsif dice_total >= 12 - " > スペシャル(判定成功。大成功表(GJT)を1回使用可能)" - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - def rollDiceCommand(command) - string = command.upcase - - case string - when 'RTT' # ランダム特技決定表 - return getRandomSkillTableResult(command) - end - - return getTableDiceCommandResult(command) - end - - # 指定特技ランダム決定表 - def getRandomSkillTableResult(_command) - name = 'ランダム' - - skillTableFull = [ - ['背景', ['呪い', '絶望', '孤児', '死別', '一般人', '獲物', '憧れ', '友人', '挑戦者', '血縁', '永遠']], - ['仕事', ['脅迫', '捨てる', '拉致', '盗む', 'ハッキング', '侵入', '変装', 'だます', '隠す', 'のぞく', '聞き出す']], - ['捜索', ['トイレ', '食事', '自然', '運動施設', '街', '友愛会', '暗部', '史跡', '文化施設', '温泉', '宿泊']], - ['趣味', ['お酒', 'グルメ', 'ダンス', 'スポーツ', '健康', 'ファッション', '恋愛', 'フェス', '音楽', '物語', '学問']], - ['雰囲気', ['だらしない', 'のんびり', '暖かい', '明るい', '甘い', '普通', '洗練', '渋い', '静か', '真面目', '冷たい']], - ['戦闘法', ['忍術', '古武術', '剣術', '棒術', '拳法', 'ケンカ', '総合格闘技', 'レスリング', '軍隊格闘術', '射撃', '弓術']], - ] - - skillTable, total_n = get_table_by_1d6(skillTableFull) - tableName, skillTable = skillTable - skill, total_n2 = get_table_by_2d6(skillTable) - - output = "#{name}指定特技表(#{total_n},#{total_n2}) > 『#{tableName}』#{skill}" - - return output - end - - def getTableDiceCommandResult(command) - info = TABLES[command] - return nil if info.nil? - - name = info[:name] - type = info[:type] - table = info[:table] - - text, number = - case type - when '2D6' - get_table_by_2d6(table) - when '1D6' - get_table_by_1d6(table) - when 'D66S' - table = getD66Table(table) - get_table_by_d66_swap(table) - when 'D66N' - table = getD66Table(table) - isSwap = false - number = bcdice.getD66(isSwap) - result = get_table_by_number(number, table) - [result, number] - end - - return nil if text.nil? - - return "#{name}(#{number}) > #{text}" - end - - def getD66Table(table) - table.map do |item| - if item.is_a?(String) && (/^(\d+):(.*)/ === item) - [Regexp.last_match(1).to_i, Regexp.last_match(2)] - else - item - end - end - end - - TABLES = - { - 'ABRT' => { - :name => "アビリティ決定表", - :type => 'D66S', - :table => %w{ - 11:インストラクター(P155) - 12:運送業(P155) - 13:運転手(P155) - 14:カフェ店員(P155) - 15:趣味人(P155) - 16:ショップ店員(P155) - 22:正社員(P156) - 23:大工(P156) - 24:探偵(P156) - 25:バイヤー(P156) - 26:俳優(P156) - 33:派遣社員(P156) - 34:犯罪者(P157) - 35:バンドマン(P157) - 36:バーテンダー(P157) - 44:ヒモ(P157) - 45:ホスト(P157) - 46:ホテルマン(P157) - 55:無職(P158) - 56:用心棒(P158) - 66:料理人(P158) - }, - }, - - 'DT' => { - :name => "ダメージ表", - :type => '1D6', - :table => %w{ - 疲れ - 痛み - 焦り - 不調 - ショック - ケガ - }, - }, - - 'FT' => { - :name => "失敗表", - :type => '1D6', - :table => %w{ - 任意のアイテムを一つ失う - 1ダメージを受ける - 【所持金ランク】が1減少する(最低0) - 2ダメージを受ける - 【所持金ランク】が2減少する(最低0) - 標的レベルが1増加する - }, - }, - - 'GJT' => { - :name => "大成功表", - :type => '1D6', - :table => %w{ - 主人からお褒めの言葉をいただく - ダメージを1回復する - ダメージを1回復する - 関係のチェックを一つ消す - ダメージを2回復する - 【所持金ランク】が1増加する - }, - }, - - 'ITT' => { - :name => "移動トラブル表", - :type => '1D6', - :table => %w{ - 検問(P220) - 急な腹痛(P220) - 黒煙(P221) - 蚊(P221) - 落とし物(P222) - 空腹(P222) - }, - }, - - 'NTT' => { - :name => "任務トラブル表", - :type => '1D6', - :table => %w{ - 通報(P223) - プレッシャー(P223) - マナー違反(P224) - 志願者(P224) - 仲間割れ(P225) - 狩人の噂(P225) - }, - }, - - 'STT' => { - :name => "襲撃トラブル表", - :type => '1D6', - :table => %w{ - 孤独な追跡者(P226) - 地元の若者たち(P226) - V-FILES(P227) - チンピラの群れ(P227) - 孤独な狩人(P228) - 狩人の群れ(P228) - }, - }, - - 'HTT' => { - :name => "変身トラブル表", - :type => 'D66N', - :table => %w{ - 11:あれを食べたい(P214) - 12:あれを着たい(P214) - 13:あれを見たい(P215) - 14:あれを狩りたい(P215) - 15:あれを踊りたい(P216) - 16:あれに入りたい(P216) - 21:強奪(P217) - 22:暴行(P217) - 23:虐殺(P218) - 24:誘拐(P218) - 25:無精(P219) - 26:失踪(P219) - 31:あれを食べたい(P214) - 32:あれを着たい(P214) - 33:あれを見たい(P215) - 34:あれを狩りたい(P215) - 35:あれを踊りたい(P216) - 36:あれに入りたい(P216) - 41:強奪(P217) - 42:暴行(P217) - 43:虐殺(P218) - 44:誘拐(P218) - 45:無精(P219) - 46:失踪(P219) - 51:あれを食べたい(P214) - 52:あれを着たい(P214) - 53:あれを見たい(P215) - 54:あれを狩りたい(P215) - 55:あれを踊りたい(P216) - 56:あれに入りたい(P216) - 61:強奪(P217) - 62:暴行(P217) - 63:虐殺(P218) - 64:誘拐(P218) - 65:無精(P219) - 66:失踪(P219) - }, - }, - - 'DET' => { - :name => "ドライブイベント表", - :type => '1D6', - :table => %w{ - 身の上話をする。目標が背景分野で選択している特技がドライブ判定の指定特技になる。 - スキル自慢をする。目標が仕事分野で選択している特技がドライブ判定の指定特技になる。 - むかし行った場所の話をする。目標が捜索分野で選択している特技がドライブ判定の指定特技になる。 - 趣味の話をする。目標が趣味分野で選択している特技がドライブ判定の指定特技になる。 - テーマがない雑談をする。目標が雰囲気分野で選択している特技がドライブ判定の指定特技になる。 - 物騒な話をする。目標が戦闘法分野で選択している特技がドライブ判定の指定特技になる。 - }, - }, - - 'BET' => { - :name => "ブレイクイベント表", - :type => '1D6', - :table => %w{ - イケメンの車は風光明美な場所に到着する。197ページの「観光地」を参照。 - イケメンの車は明るい光に照らされた小さな店に到着する。197ページの「コンビニ」を参照。 - イケメンの車は巨大かつ何でも売っている店に到着する。198ページの「ホームセンター」を参照。 - イケメンの車はドライバーたちの憩いの地に到着する。198ページの「サービスエリア」を参照。 - イケメンの車は大きなサービスエリアのような場所に到着する。199ページの「道の駅」を参照。 - イケメンの車は闇の底に隠された秘密の場所に到着する。199ページの「友愛会支部」を参照。 - }, - }, - - 'CT' => { - :name => "キャンプ表", - :type => '1D6', - :table => %w{ - 無料仮眠所・いい感じの空き地:定員無制限/居住性-2/価格0/発見率2 - カプセルホテル:定員1/居住性-1/価格3/発見率2 - ラブホテル:定員2/居住性0/価格4/発見率1 - ビジネスホテル:定員2/居住性0/価格4/発見率1 - 観光ホテル:定員4/居住性1/価格5/発見率1 - 高級ホテル:定員4/居住性2/価格6/発見率0 - }, - }, - - 'KZT' => { - :name => "関係属性表", - :type => '1D6', - :table => %w{ - 軽蔑 - 反感 - 混乱 - 興味 - 共感 - 憧れ - }, - }, - - 'IA' => { - :name => "イケメンアクション決定表", - :type => 'D66S', - :table => %w{ - 11:遠距離 - 12:遠距離 - 13:移動 - 14:移動 - 15:近距離 - 16:近距離 - 22:善人 - 23:善人 - 24:悪人 - 25:悪人 - 26:幼い - 33:幼い - 34:バカ - 35:バカ - 36:渋い - 44:渋い - 45:賢い - 46:賢い - 55:超自然 - 56:超自然 - 66:振り直しor自由選択 - }, - }, - - 'IAA' => { - :name => "イケメンアクション(遠距離)表", - :type => '1D6', - :table => %w{ - 目を合わせて微笑む(かっこよさ:4) - 場所を譲る(かっこよさ:4) - 髪をかきあげる(かっこよさ:5) - 複雑なポーズで座る(かっこよさ:5) - 物憂げな表情で振り返る(かっこよさ:6) - ものを上に持つ(かっこよさ:6) - }, - }, - - 'IAB' => { - :name => "イケメンアクション(移動)表", - :type => '1D6', - :table => %w{ - 車道側を歩く(かっこよさ:4) - 乗り物から降りる(かっこよさ:4) - 真剣な表情で近づく(かっこよさ:4) - 馬に乗る(かっこよさ:6) - ダメージを受けつつ移動(かっこよさ:6) - 瞬間移動(かっこよさ:6) - }, - }, - - 'IAC' => { - :name => "イケメンアクション(近距離)表", - :type => '1D6', - :table => %w{ - 黙って見つめる(かっこよさ:3) - ちょっとしたプレゼント(かっこよさ:3) - 顎クイ(かっこよさ:5) - 壁ドン(かっこよさ:5) - お姫様抱っこ(かっこよさ:7) - 床ドン(かっこよさ:7) - }, - }, - - 'IAD' => { - :name => "イケメンアクション(善人)表", - :type => '1D6', - :table => %w{ - 手を引いて逃げる(かっこよさ:4) - 毛布を掛ける(かっこよさ:4) - 守る(かっこよさ:5) - 笑って去る(かっこよさ:5) - 全てを捧げる(かっこよさ:6) - 悪堕ち(かっこよさ:6) - }, - }, - - 'IAE' => { - :name => "イケメンアクション(悪人)表", - :type => '1D6', - :table => %w{ - 攻撃する(かっこよさ:4) - 暗く笑う(かっこよさ:4) - 奪う(かっこよさ:4) - 目論見を口にする(かっこよさ:6) - 罠にかける(かっこよさ:6) - 改心する(かっこよさ:6) - }, - }, - - 'IAF' => { - :name => "イケメンアクション(幼い)表", - :type => '1D6', - :table => %w{ - 甘える(かっこよさ:3) - 疲れる(かっこよさ:3) - 無邪気な発言(かっこよさ:5) - おねだり(かっこよさ:5) - 上目遣い(かっこよさ:7) - 抱きつく(かっこよさ:7) - }, - }, - - 'IAG' => { - :name => "イケメンアクション(バカ)表", - :type => '1D6', - :table => %w{ - 苦悩する(かっこよさ:4) - 屈託のない笑顔(かっこよさ:4) - 転ぶ(かっこよさ:4) - 叫ぶ(かっこよさ:6) - 間違える(かっこよさ:6) - 怖がる(かっこよさ:6) - }, - }, - - 'IAH' => { - :name => "イケメンアクション(渋い)表", - :type => '1D6', - :table => %w{ - 説教(かっこよさ:4) - 気づかせる(かっこよさ:4) - 見守る(かっこよさ:5) - 残心(かっこよさ:5) - 称える(かっこよさ:6) - いい位置を取る(かっこよさ:6) - }, - }, - - 'IAI' => { - :name => "イケメンアクション(賢い)表", - :type => '1D6', - :table => %w{ - 難しい本を読む(かっこよさ:3) - アドバイスをする(かっこよさ:3) - 眼鏡を持ち上げる(かっこよさ:5) - 状況を解説する(かっこよさ:5) - 計算できなくなる(かっこよさ:7) - 大丈夫だと言う(かっこよさ:7) - }, - }, - - 'IAJ' => { - :name => "イケメンアクション(超自然)表", - :type => '1D6', - :table => %w{ - 水に濡れる(かっこよさ:4) - 風を纏う(かっこよさ:4) - 地割れ(かっこよさ:5) - 火を放つ(かっこよさ:5) - 闇を生み出す(かっこよさ:6) - 光る(かっこよさ:6) - }, - } - - }.freeze - - setPrefixes(['RTT'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/DarkSouls.rb b/src/src_bcdice/diceBot/DarkSouls.rb deleted file mode 100644 index 4440c1c4e..000000000 --- a/src/src_bcdice/diceBot/DarkSouls.rb +++ /dev/null @@ -1,85 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class DarkSouls < DiceBot - # ゲームシステムの識別子 - ID = 'DarkSouls' - - # ゲームシステム名 - NAME = 'ダークソウルTRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'たあくそうるTRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <=#{target}") - - if isActive - diceArray = diceText.split(/,/).collect { |i| i.to_i } - focusDamage = diceArray.count { |i| i == 1 } - - if focusDamage > 0 - focusText = "■" * focusDamage - focusText = "(FP#{focusText}消費)" - end - end - - result = "(#{diceCount}D6#{modifyText}#{targetText})" - result += " > #{dice}(#{diceText})#{modifyText}" - result += " > #{successValue}#{targetText}" - - if target > 0 - if successValue >= target - result += " > 【成功】" - else - result += " > 【失敗】" - end - end - - result += focusText.to_s - return result - end - - def getValue(text) - text ||= "" - return parren_killer("(0#{text})").to_i - end - - def getValueText(value) - return "" if value == 0 - return value.to_s if value < 0 - - return "\+#{value}" - end -end diff --git a/src/src_bcdice/diceBot/DeadlineHeroes.rb b/src/src_bcdice/diceBot/DeadlineHeroes.rb deleted file mode 100644 index a72c9b8ee..000000000 --- a/src/src_bcdice/diceBot/DeadlineHeroes.rb +++ /dev/null @@ -1,580 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/range_table' - -class DeadlineHeroes < DiceBot - # ゲームシステムの識別子 - ID = 'DeadlineHeroes' - - # ゲームシステム名 - NAME = 'デッドラインヒーローズRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'てつとらいんひいろおすRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <#{dice}) = #{key_number}] > #{key_text} : #{chosen}" - end - - private - - # key_numberの10から20がindexの0から10に対応する - def at(key_number) - if key_number < 10 - ["10以下", @chart.first] - elsif key_number > 20 - ["20以上", @chart.last] - else - [key_number.to_s, @chart[key_number - 10]] - end - end - end - - def roll_death_chart(command) - m = /^DC([LSC])(\d+)$/i.match(command) - unless m - return m - end - - chart = DEATH_CHARTS[m[1]] - minus_score = m[2].to_i - - return chart.roll(self, minus_score) - end - - DEATH_CHARTS = { - 'L' => DeathChart.new( - '肉体', - [ - "何も無し。キミは奇跡的に一命を取り留めた。闘いは続く。", - "激痛が走る。以後、イベント終了時まで、全ての判定の成功率-10%。", - "キミは[硬直]ポイント2点を得る。[硬直]ポイントを所持している間、キミは「属性:妨害」のパワーを使用することができない。各ラウンド終了時、キミは所持している[硬直]ポイントを1点減らしてもよい。", - "渾身の一撃!! キミは〈生存〉判定を行なう。失敗した場合、[死亡]する。", - "キミは[気絶]ポイント2点を得る。[気絶]ポイントを所持している間、キミはあらゆるパワーを使用できず、自身のターンを得ることもできない。各ラウンド終了時、キミは所持している[気絶]ポイントを1点減らしてもよい。", - "以後、イベント終了時まで、全ての判定の成功率-20%。", - "記録的一撃!! キミは〈生存〉-20%の判定を行なう。失敗した場合、[死亡]する。", - "キミは[瀕死]ポイント2点を得る。[瀕死]ポイントを所持している間、キミはあらゆるパワーを使用できず、自身のターンを得ることもできない。各ラウンド終了時、キミは所持している[瀕死]ポイントを1点を失う。全ての[瀕死]ポイントを失う前に戦闘が終了しなかった場合、キミは[死亡]する。", - "叙事詩的一撃!! キミは〈生存〉-30%の判定を行なう。失敗した場合、[死亡]する。", - "以後、イベント終了時まで、全ての判定の成功率-30%。", - "神話的一撃!! キミは宙を舞って三回転ほどした後、地面に叩きつけられる。見るも無惨な姿。肉体は原型を留めていない(キミは[死亡]した)。", - ] - ), - 'S' => DeathChart.new( - '精神', - [ - "何も無し。キミは歯を食いしばってストレスに耐えた。", - "以後、イベント終了時まで、全ての判定の成功率-10%。", - "キミは[恐怖]ポイント2点を得る。[恐怖]ポイントを所持している間、キミは「属性:攻撃」のパワーを使用できない。各ラウンド終了時、キミは所持している[恐怖]ポイントを1点減らしてもよい。", - "とても傷ついた。キミは〈意志〉判定を行なう。失敗した場合、[絶望]してNPCとなる。", - "キミは[気絶]ポイント2点を得る。[気絶]ポイントを所持している間、キミはあらゆるパワーを使用できず、自身のターンを得ることもできない。各ラウンド終了時、キミは所持している[気絶]ポイントを1点減らしてもよい。", - "以後、イベント終了時まで、全ての判定の成功率-20%。", - "信じるものに裏切られたような痛み。キミは〈意志〉-20%の判定を行なう。失敗した場合、[絶望]してNPCとなる。", - "キミは[混乱]ポイント2点を得る。[混乱]ポイントを所持している間、キミは本来味方であったキャラクターに対して、可能な限り最大の被害を与える様、行動し続ける。各ラウンド終了時、キミは所持している[混乱]ポイントを1点減らしてもよい。", - "あまりに残酷な現実。キミは〈意志〉-30%の判定を行なう。失敗した場合、[絶望]してNPCとなる。", - "以後、イベント終了時まで、全ての判定の成功率-30%。", - "宇宙開闢の理に触れるも、それは人類の認識限界を超える何かであった。キミは[絶望]し、以後NPCとなる。", - ] - ), - 'C' => DeathChart.new( - '環境', - [ - "何も無し。キミは黒い噂を握りつぶした。", - "以後、イベント終了時まで、全ての判定の成功率-10%。", - "ピンチ! 以後、イベント終了時まで、キミは《支援》を使用できない。", - "裏切り!! キミは〈経済〉判定を行なう。失敗した場合、キミはヒーローとしての名声を失い、[汚名]を受ける。", - "以後、シナリオ終了時まで、代償にクレジットを消費するパワーを使用できない。", - "キミの悪評は大変なもののようだ。協力者からの支援が打ち切られる。以後、シナリオ終了時まで、全ての判定の成功率-20%。", - "信頼の失墜!! キミは〈経済〉-20%の判定を行なう。失敗した場合、キミはヒーローとしての名声を失い、[汚名]を受ける。", - "以後、シナリオ終了時まで、【環境】系の技能のレベルがすべて0となる。", - "捏造報道!! 身の覚えのない犯罪への荷担が、スクープとして報道される。キミは〈経済〉-30%の判定を行なう。失敗した場合、キミはヒーローとしての名声を失い、[汚名]を受ける。", - "以後、イベント終了時まで、全ての判定の成功率-30%。", - "キミの名は史上最悪の汚点として永遠に歴史に刻まれる。もはやキミを信じる仲間はなく、キミを助ける社会もない。キミは[汚名]を受けた。", - ] - ) - }.freeze - - class RealNameChart < RangeTable - def initialize(name, columns, chart) - items = chart.map { |l| mix_column(columns, l) } - super(name, "1D100", items) - end - - private - - def mix_column(columns, item) - range, names = item - if names.size == 1 - return range, names[0] - end - - candidate = columns.zip(names).map { |l| "\n" + l.join(": ") }.join("") - return range, candidate - end - end - - TABLES = { - 'RNCJ' => RealNameChart.new( - 'リアルネームチャート(日本)', - ['姓', '名(男)', '名(女)'], - [ - [ 1..6, ['アイカワ/相川、愛川', 'アキラ/晶、章', 'アン/杏']], - [ 7..12, ['アマミヤ/雨宮', 'エイジ/映司、英治', 'イノリ/祈鈴、祈']], - [13..18, ['イブキ/伊吹', 'カズキ/和希、一輝', 'エマ/英真、恵茉']], - [19..24, ['オガミ/尾上', 'ギンガ/銀河', 'カノン/花音、観音']], - [25..30, ['カイ/甲斐', 'ケンイチロウ/健一郎', 'サラ/沙羅']], - [31..36, ['サカキ/榊、阪木', 'ゴウ/豪、剛', 'シズク/雫']], - [37..42, ['シシド/宍戸', 'ジロー/次郎、治郎', 'チズル/千鶴、千尋']], - [43..48, ['タチバナ/橘、立花', 'タケシ/猛、武', 'ナオミ/直美、尚美']], - [49..54, ['ツブラヤ/円谷', 'ツバサ/翼', 'ハル/華、波留']], - [55..60, ['ハヤカワ/早川', 'テツ/鉄、哲', 'ヒカル/光']], - [61..66, ['ハラダ/原田', 'ヒデオ/英雄', 'ベニ/紅']], - [67..72, ['フジカワ/藤川', 'マサムネ/正宗、政宗', 'マチ/真知、町']], - [73..78, ['ホシ/星', 'ヤマト/大和', 'ミア/深空、美杏']], - [79..84, ['ミゾグチ/溝口', 'リュウセイ/流星', 'ユリコ/由里子']], - [85..90, ['ヤシダ/矢志田', 'レツ/烈、裂', 'ルイ/瑠衣、涙']], - [91..96, ['ユウキ/結城', 'レン/連、錬', 'レナ/玲奈']], - [97..100, ['名無し(何らかの理由で名前を持たない、もしくは失った)']], - ] - ), - 'RNCO' => RealNameChart.new( - 'リアルネームチャート(海外)', - ['名(男)', '名(女)', '姓'], - [ - [ 1..6, ['アルバス', 'アイリス', 'アレン']], - [ 7..12, ['クリス', 'オリーブ', 'ウォーケン']], - [13..18, ['サミュエル', 'カーラ', 'ウルフマン']], - [19..24, ['シドニー', 'キルスティン', 'オルセン']], - [25..30, ['スパイク', 'グウェン', 'カーター']], - [31..36, ['ダミアン', 'サマンサ', 'キャラダイン']], - [37..42, ['ディック', 'ジャスティナ', 'シーゲル']], - [43..48, ['デンゼル', 'タバサ', 'ジョーンズ']], - [49..54, ['ドン', 'ナディン', 'パーカー']], - [55..60, ['ニコラス', 'ノエル', 'フリーマン']], - [61..66, ['ネビル', 'ハーリーン', 'マーフィー']], - [67..72, ['バリ', 'マルセラ', 'ミラー']], - [73..78, ['ビリー', 'ラナ', 'ムーア']], - [79..84, ['ブルース', 'リンジー', 'リーヴ']], - [85..90, ['マーヴ', 'ロザリー', 'レイノルズ']], - [91..96, ['ライアン', 'ワンダ', 'ワード']], - [97..100, ['名無し(何らかの理由で名前を持たない、もしくは失った)']], - ] - ) - }.freeze - - def roll_hero_name_chart() - dice, = roll(1, 10) - template = HERO_NAME_TEMPLATES[dice - 1] - - template_result = "ヒーローネームチャート(#{dice}) > #{template[:text]}" - if template[:text] == "任意" - return template_result - end - - results = [template_result] - elements = [] - template[:elements].each do |type| - base_chart = HERO_NAME_BASE_CHARTS[type] - unless base_chart - elements.push(type) - next - end - - result, element = base_chart.roll(self) - results.push(result) - elements.push(element) - end - - hero_name = elements.join("").gsub(/・{2,}/, "・").sub(/・$/, "") - results.push("ヒーローネーム > #{hero_name}") - - return results.join("\n") - end - - HERO_NAME_TEMPLATES = [ - {:text => 'ベースA+ベースA', :elements => ['ベースA', 'ベースB']}, - {:text => 'ベースB', :elements => ['ベースB']}, - {:text => 'ベースB×2回', :elements => ['ベースB', 'ベースB']}, - {:text => 'ベースB+ベースC', :elements => ['ベースB', 'ベースC']}, - {:text => 'ベースA+ベースB+ベースC', :elements => ['ベースA', 'ベースB', 'ベースC']}, - {:text => 'ベースA+ベースB×2回', :elements => ['ベースA', 'ベースB', 'ベースB']}, - {:text => 'ベースB×2回+ベースC', :elements => ['ベースB', 'ベースB', 'ベースC']}, - {:text => '(ベースB)・オブ・(ベースB)', :elements => ['ベースB', '・オブ・', 'ベースB']}, - {:text => '(ベースB)・ザ・(ベースB)', :elements => ['ベースB', '・ザ・', 'ベースB']}, - {:text => '任意', :elements => ['任意']}, - ].freeze - - class HeroNameBaseChart - def initialize(name, items) - @name = name - @items = items - end - - # @param bot [#roll] - # @return [Array<(String, String)>] - def roll(bot) - dice, = bot.roll(1, 10) - chosen = @items[dice - 1] - - result = "#{@name}(#{dice}) > #{chosen}" - if (m = chosen.match(/^[(.+)]$/)) - element_type = m[1] - element_chart = HERO_NAME_ELEMENT_CHARTS[element_type] - - element_result, chosen = element_chart.roll(bot) - result = [result, element_result].join(" > ") - end - - return result, chosen - end - end - - class HeroNameElementChart - def initialize(name, items) - @name = name - @items = items - end - - # @param bot [#roll] - # @return [Array<(String, String)>] - def roll(bot) - dice, = bot.roll(1, 10) - chosen = @items[dice - 1] - - result = "#{@name}(#{dice}) > #{chosen[:element]} (意味:#{chosen[:mean]})" - return result, chosen[:element] - end - end - - HERO_NAME_BASE_CHARTS = { - "ベースA" => HeroNameBaseChart.new( - "ベースA", - [ - "ザ・", - "キャプテン・", - "ミスター/ミス/ミセス・", - "ドクター/プロフェッサー・", - "ロード/バロン/ジェネラル・", - "マン・オブ・", - "[強さ]", - "[色]", - "マダム/ミドル・", - "数字(1~10)・", - ] - ), - "ベースB" => HeroNameBaseChart.new( - "ベースB", - [ - "[神話/夢]", - "[武器]", - "[動物]", - "[鳥]", - "[虫/爬虫類]", - "[部位]", - "[光]", - "[攻撃]", - "[その他]", - "数字(1~10)・", - ] - ), - "ベースC" => HeroNameBaseChart.new( - "ベースC", - [ - "マン/ウーマン", - "ボーイ/ガール", - "マスク/フード", - "ライダー", - "マスター", - "ファイター/ソルジャー", - "キング/クイーン", - "[色]", - "ヒーロー/スペシャル", - "ヒーロー/スペシャル", - ] - ), - }.freeze - - HERO_NAME_ELEMENT_CHARTS = { - "部位" => HeroNameElementChart.new( - "部位", - [ - {:element => "ハート", :mean => "心臓"}, - {:element => "フェイス", :mean => "顔"}, - {:element => "アーム", :mean => "腕"}, - {:element => "ショルダー", :mean => "肩"}, - {:element => "ヘッド", :mean => "頭"}, - {:element => "アイ", :mean => "眼"}, - {:element => "フィスト", :mean => "拳"}, - {:element => "ハンド", :mean => "手"}, - {:element => "クロウ", :mean => "爪"}, - {:element => "ボーン", :mean => "骨"}, - ] - ), - "武器" => HeroNameElementChart.new( - "武器", - [ - {:element => "ナイヴス", :mean => "短剣"}, - {:element => "ソード", :mean => "剣"}, - {:element => "ハンマー", :mean => "鎚"}, - {:element => "ガン", :mean => "銃"}, - {:element => "スティール", :mean => "刃"}, - {:element => "タスク", :mean => "牙"}, - {:element => "ニューク", :mean => "核"}, - {:element => "アロー", :mean => "矢"}, - {:element => "ソウ", :mean => "ノコギリ"}, - {:element => "レイザー", :mean => "剃刀"}, - ] - ), - "色" => HeroNameElementChart.new( - "色", - [ - {:element => "ブラック", :mean => "黒"}, - {:element => "グリーン", :mean => "緑"}, - {:element => "ブルー", :mean => "青"}, - {:element => "イエロー", :mean => "黃"}, - {:element => "レッド", :mean => "赤"}, - {:element => "バイオレット", :mean => "紫"}, - {:element => "シルバー", :mean => "銀"}, - {:element => "ゴールド", :mean => "金"}, - {:element => "ホワイト", :mean => "白"}, - {:element => "クリア", :mean => "透明"}, - ] - ), - "動物" => HeroNameElementChart.new( - "動物", - [ - {:element => "バニー", :mean => "ウサギ"}, - {:element => "タイガー", :mean => "虎"}, - {:element => "シャーク", :mean => "鮫"}, - {:element => "キャット", :mean => "猫"}, - {:element => "コング", :mean => "ゴリラ"}, - {:element => "ドッグ", :mean => "犬"}, - {:element => "フォックス", :mean => "狐"}, - {:element => "パンサー", :mean => "豹"}, - {:element => "アス", :mean => "ロバ"}, - {:element => "バット", :mean => "蝙蝠"}, - ] - ), - "神話/夢" => HeroNameElementChart.new( - "神話/夢", - [ - {:element => "アポカリプス", :mean => "黙示録"}, - {:element => "ウォー", :mean => "戦争"}, - {:element => "エターナル", :mean => "永遠"}, - {:element => "エンジェル", :mean => "天使"}, - {:element => "デビル", :mean => "悪魔"}, - {:element => "イモータル", :mean => "死なない"}, - {:element => "デス", :mean => "死神"}, - {:element => "ドリーム", :mean => "夢"}, - {:element => "ゴースト", :mean => "幽霊"}, - {:element => "デッド", :mean => "死んでいる"}, - ] - ), - "攻撃" => HeroNameElementChart.new( - "攻撃", - [ - {:element => "ストローク", :mean => "一撃"}, - {:element => "クラッシュ", :mean => "壊す"}, - {:element => "ブロウ", :mean => "吹き飛ばす"}, - {:element => "ヒット", :mean => "打つ"}, - {:element => "パンチ", :mean => "殴る"}, - {:element => "キック", :mean => "蹴る"}, - {:element => "スラッシュ", :mean => "斬る"}, - {:element => "ペネトレイト", :mean => "貫く"}, - {:element => "ショット", :mean => "撃つ"}, - {:element => "キル", :mean => "殺す"}, - ] - ), - "その他" => HeroNameElementChart.new( - "その他", - [ - {:element => "ヒューマン", :mean => "人間"}, - {:element => "エージェント", :mean => "代理人"}, - {:element => "ブースター", :mean => "泥棒"}, - {:element => "アイアン", :mean => "鉄"}, - {:element => "サンダー", :mean => "雷"}, - {:element => "ウォッチャー", :mean => "監視者"}, - {:element => "プール", :mean => "水たまり"}, - {:element => "マシーン", :mean => "機械"}, - {:element => "コールド", :mean => "冷たい"}, - {:element => "サイド", :mean => "側面"}, - ] - ), - "鳥" => HeroNameElementChart.new( - "鳥", - [ - {:element => "ホーク", :mean => "鷹"}, - {:element => "ファルコン", :mean => "隼"}, - {:element => "キャナリー", :mean => "カナリア"}, - {:element => "ロビン", :mean => "コマツグミ"}, - {:element => "イーグル", :mean => "鷲"}, - {:element => "オウル", :mean => "フクロウ"}, - {:element => "レイブン", :mean => "ワタリガラス"}, - {:element => "ダック", :mean => "アヒル"}, - {:element => "ペンギン", :mean => "ペンギン"}, - {:element => "フェニックス", :mean => "不死鳥"}, - ] - ), - "光" => HeroNameElementChart.new( - "光", - [ - {:element => "ライト", :mean => "光"}, - {:element => "シャドウ", :mean => "影"}, - {:element => "ファイアー", :mean => "炎"}, - {:element => "ダーク", :mean => "暗い"}, - {:element => "ナイト", :mean => "夜"}, - {:element => "ファントム", :mean => "幻影"}, - {:element => "トーチ", :mean => "灯火"}, - {:element => "フラッシュ", :mean => "閃光"}, - {:element => "ランタン", :mean => "手さげランプ"}, - {:element => "サン", :mean => "太陽"}, - ] - ), - "虫/爬虫類" => HeroNameElementChart.new( - "虫/爬虫類", - [ - {:element => "ビートル", :mean => "甲虫"}, - {:element => "バタフライ/モス", :mean => "蝶/蛾"}, - {:element => "スネーク/コブラ", :mean => "蛇"}, - {:element => "アリゲーター", :mean => "ワニ"}, - {:element => "ローカスト", :mean => "バッタ"}, - {:element => "リザード", :mean => "トカゲ"}, - {:element => "タートル", :mean => "亀"}, - {:element => "スパイダー", :mean => "蜘蛛"}, - {:element => "アント", :mean => "アリ"}, - {:element => "マンティス", :mean => "カマキリ"}, - ] - ), - "強さ" => HeroNameElementChart.new( - "強さ", - [ - {:element => "スーパー/ウルトラ", :mean => "超"}, - {:element => "ワンダー", :mean => "驚異的"}, - {:element => "アルティメット", :mean => "究極の"}, - {:element => "ファンタスティック", :mean => "途方もない"}, - {:element => "マイティ", :mean => "強い"}, - {:element => "インクレディブル", :mean => "凄い"}, - {:element => "アメージング", :mean => "素晴らしい"}, - {:element => "ワイルド", :mean => "狂乱の"}, - {:element => "グレイテスト", :mean => "至高の"}, - {:element => "マーベラス", :mean => "驚くべき"}, - ] - ), - }.freeze -end diff --git a/src/src_bcdice/diceBot/DemonParasite.rb b/src/src_bcdice/diceBot/DemonParasite.rb deleted file mode 100644 index 8a76af978..000000000 --- a/src/src_bcdice/diceBot/DemonParasite.rb +++ /dev/null @@ -1,520 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class DemonParasite < DiceBot - # ゲームシステムの識別子 - ID = 'DemonParasite' - - # ゲームシステム名 - NAME = 'デモンパラサイト' - - # ゲームシステム名の読みがな - SORT_KEY = 'てもんはらさいと' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 2 # 1の目が2個以上ならファンブル - return " > 致命的失敗" - elsif dice_list.count(6) >= 2 # 6の目が2個以上あったらクリティカル - return " > 効果的成功" - elsif target == "?" - return '' - end - - if [:>=, :>].include?(cmp_op) - if total.send(cmp_op, target) - " > 成功" - else - " > 失敗" - end - end - end - - def rollDiceCommand(command) - return get_urge(command) - end - - # 衝動表 - def get_urge(string) - m = /([NAMUC])?URGE\s*(\d+)/i.match(string) - unless m - return '1' - end - - initialWord = m[1] - urgelv = m[2].to_i - - case initialWord - when nil - title = "衝動表" - urge = URGE_TABLE - when "N" - title = "新衝動表" - urge = NEW_URGE_TABLE - when "A" - title = "誤作動表" - urge = MALFUNCTION_TABLE - when "M" - title = "ミュータント衝動表" - urge = MUTANT_TABLE - when "U" - title = "鬼御魂(戦闘外)衝動表" - urge = ONIMITAMA_OUT_OF_BATTLE_TABLE - when "C" - title = "鬼御魂(戦闘中)衝動表" - urge = ONIMITAMA_BATTLE_TABLE - else - # あり得ない文字 - return '1' - end - - if urgelv < 1 || urgelv > 5 - return '衝動段階は1から5です' - end - - dice_now, = roll(2, 6) - - resultText = urge[urgelv - 1][dice_now - 2] - - return "#{title}#{urgelv}-#{dice_now}:#{resultText}" - end - - # 衝動表 - URGE_TABLE = [ - [ - '『怒り』突然強い怒りに駆られる。近くの対象に(非暴力の)怒りを全力でぶつける。このターンの終了まで「行動不能」となる。[経験値20点]', - '『絶叫』寄生生物が体内で蠢く。その恐怖に絶叫。このターンの終了まで「行動不能」となる。[経験値10点]', - '『悲哀』急に悲しいことを思い出して動きが止まる。このターンの終了まで「行動不能」となる。[経験値10点]', - '『微笑』可笑しくてしょうがない。くすくす笑いが止まらず、このターンの終了まで「行動不能」となる。[経験値10点]', - '『鈍感』衝動に気が付かなかった。何も起こらない。[経験値0点]', - '『抑制』衝動を抑え込んだ。何も起こらない。[経験値0点]', - '『我慢』衝動を我慢した。何も起こらない。[経験値0点]', - '『前兆』悪魔的特徴が一瞬目立つ。1ターン(10秒)持続。変身中なら影響なし。[経験値10点]', - '『発現』悪魔的特徴が急に目立つ。60ターン(10分)持続。変身中なら影響なし。[経験値10点]', - '『変化』利き腕/前脚が2ターン(20秒)かけて悪魔化する。18ターン(3分)持続。変身中なら影響なし。[経験値20点]', - '『顕現』利き腕/前脚が瞬時に悪魔化。60ターン(10分)持続。変身中なら影響なし。[経験値20点]', - ], - [ - '『茫然』思考が止まり、このターンの終了まで「攻撃」行動を行えない。回避行動に影響はない。[経験値20点]', - '『激怒』側にいるもの(生物、物体問わず)が憎く、殴る。変身後ならば次のターンの終了まで、すべての命中判定+5、回避判定-5。[経験値20点]', - '『残忍』殺意、破壊衝動が一瞬増す。戦闘中ならば次のターンに行われる「攻撃」行動の達成値に+5。[経験値20点]', - '『落涙』過去の悲しい想い出が去来し、涙が溢れる。1ターン(10秒)「通常」行動を行えない。回避行動に影響はない。[経験値10点]', - '『抑制』衝動を抑え込んだ。何も起こらない。[経験値0点]', - '『我慢』衝動を我慢した。何も起こらない。[経験値0点]', - '『忍耐』肉体を傷つけて衝動に耐えた。5ダメージ。[経験値10点]', - '『辛抱』ほんの一瞬、全身が変身しかかる。無理に抑えたので、5ダメージ。変身中なら影響なし。[経験値10点]', - '『異貌』3ターン(30秒)かけて顔が変身する。18ターン(3分)持続。変身中なら影響なし。[経験値20点]', - '『苦痛』寄生生物が体内で暴れ、痛みにのけぞる。10ダメージ。[経験値20点]', - '『変貌』変身後の(特異な)外見的特徴が3ターン(30秒)かけて現れる。18ターン(3分)持続。変身中なら影響なし。[経験値20点]', - ], - [ - '『憤怒』怒りに全身が満たされる。次のターンの終了まで、すべてのダメージのサイコロを+1個する。[経験値20点]', - '『加速』ほとばしる衝動により。次のターンは【行動値】が2倍になる。[経験値20点]', - '『発露』力が溢れ出る。次のターンの終了まで、すべてのダメージに+5、防御点-5(最低0)される。[経験値20点]', - '『乾き』攻撃衝動を抑えられない。次のターンの終了まで全ての命中判定+5、回避判定-5。[経験値10点]', - '『絶叫』あらん限りの声で叫ぶ。このターンの終了まで、全ての回避判定に-10。[経験値10点]', - '『我慢』衝動を我慢した。何も起こらない。[経験値0点]', - '『限界』衝動を無理矢理抑え込む。あちこちの血管が破裂し、10ダメージ。[経験値10点]', - '『解放』衝動に耐えられず変身が始まる。3ターン(30秒)かけて変身。変身中なら影響なし。[経験値10点]', - '『本能』衝動に駆られ、瞬時に変身。次のターン、目の前の動くものを敵味方区別無く攻撃する。[経験値20点]', - '『保身』次のターンの終了まで、敵を攻撃できない。全ての防御力に+5。[経験値20点]', - '『救済』悪魔寄生体が危機を察知し、【エナジー】を20点回復する。[経験値20点]', - ], - [ - '『癒し』衝動を1点使った回復を行う。[経験値20点]', - '『離脱』その場から逃げ出す。逃げられない場合は、うずくまって動けなくなる。1ターン(10秒)経過すれば我に返る。[経験値20点]', - '『脱力』急に力が抜ける。次のターンの終了まで、全ての判定に-5される。[経験値20点]', - '『全力』激しい躁状態。次のターンの終了まで、命中判定に+10、回避判定に-10[経験値20点]', - '『混沌』意味のある言葉を話せなくなる。1時間持続する。[経験値10点]', - '『限界』衝動を無理矢理抑え込む。あちこちの血管が破裂し、10ダメージ。[経験値10点]', - '『本能』衝動に駆られ、瞬時に変身。次のターン、目の前の動くものを敵味方区別無く攻撃する。[経験値20点]', - '『焦燥』焦りから「転倒」する。[経験値20点]', - '『猜疑』味方が急に敵に思える。即座に近くの味方に一回攻撃し、自動命中となる。いなければ影響なし。[経験値20点]', - '『自虐』自分が許せない。自分へ攻撃(自動命中。ダメージは通常)。[経験値20点]', - '『自浄』少し我に返る。衝動が2点回復する。[経験値20点]', - ], - [ - '『絶望』自殺を試みる。変身中ならば最強の攻撃(特殊能力等を使用しての攻撃)を自分へ与える。[経験値30点]', - '『賛美』敵(複数いる場合はリーダー格)を主と思いこむ。主が倒されるか、このターンの終了まで主の命令を聞く。[経験値30点]', - '『拒絶』変身が解除される。変身していなければ影響なし。[経験値20点]', - '『飢餓』近くの無防備な対象を喰らおうとする。邪魔する物は敵として攻撃する。次ターンの終了時に我に返る。[経験値20点]', - '『暗闇』視神経に影響が出る。以後1日「暗闇」になる。[経験値20点]', - '『混乱』意味のある言葉を話せなくなる。1時間持続する。[経験値20点]', - '『嫉妬』仲間に猛烈な嫉妬を覚える。即座に一番近くの味方を攻撃。判定は自動的に効果的成功となる。いなければ影響なし。[経験値20点]', - '『暴君』自分が最強に思えてしかたがない。60ターン(10分)攻撃判定の達成値に+10、回避判定の達成値は-10。[経験値20点]', - '『無双』全力だが無防備。60ターン(10分)、全てのダメージに+10、防御点0、【行動値】0。[経験値20点]', - '『定着』変身していなければ、即座に変身。肉体が変身に馴染んでしまう。24時間、変身が解除されなくなる。[経験値30点]', - '『眠り』猛烈な睡魔に襲われる。60ターン(10分)、もしくは戦闘終了まで起こしても起きない。[経験値30点]', - ] - ].freeze - - # 新衝動表 - NEW_URGE_TABLE = [ - [ - '『開眼』潜在能力が発揮される。10分間、あらゆる戦闘以外の判定に+5。', - '『集中』感覚が研ぎ澄まされる。次のターンの終了まで、射撃の命中判定に+5。', - '『迅速』運動神経が上昇する。20分間、戦闘以外の【機敏】判定に+5。', - '『怪力』怪力を発揮する。20分間、戦闘以外の【肉体】判定に+5。', - '『鈍感』衝動に気が付かない。何も起こらない。', - '『抑制』衝動を抑え込む。何も起こらない。', - '『我慢』衝動を我慢する。何も起こらない。', - '『無心』冷静になる。20分間、戦闘以外の【精神】判定に+5。', - '『解放』感覚が解放される。20分間、戦闘以外の【感覚】判定に+5。', - '『攻撃』攻撃の姿勢を取る。次のターンの終了まで、すべてのダメージが+5。', - '『防御』防御の姿勢を取る。このターンの終了まで、すべての防御力が+5。', - ], - [ - '『敵視』激しい攻撃本能に駆られる。次のターンの終了まで、肉弾ダメージ+10。', - '『忘我』怒りに痛みを忘れる。エナジー5点回復。', - '『閃き』頭が冴える。20分間、戦闘以外の【知力】判定に+5。', - '『全力』筋肉のリミッターが一時的にはずれる。次のターンの終了まで、肉弾ダメージに+5。', - '『抑制』衝動を抑え込む。何も起こらない。', - '『我慢』衝動を我慢する。何も起こらない。', - '『反射』反射神経が研ぎ澄まされる。次のターンの終了まで、射撃の回避判定に+5。', - '『機転』わずかなチャンスを見逃さなくなる。20分間、戦闘以外の【幸運】判定に+5。', - '『耐性』精神力が上昇する。次のターンの終了まで、特殊防御力+5。', - '『怒り』敵に対する怒りにとらわれる。次のターンの終了まで、肉弾の命中判定に+10。', - '『活発』明るく活発になる。戦闘終了まで【行動値】+5。', - ], - [ - '『漲り』体の奥底から力がみなぎってくる。エナジー10点回復。', - '『分析』相手の動きを冷静に分析できるようになる。5ターンの間、射撃ダメージに+10。', - '『慈愛』万人に対して慈愛を感じるようになる。5ターンの間、回復に振るダイスが+1d。', - '『慎重』敵の攻撃に慎重になる。次のターンの終了まで、すべての回避判定に+5。', - '『本能』攻撃本能がむき出しになる。5ターンの間、特殊の命中判定に+5。', - '『性急』気が早くなる。次のターンの終了まで、【行動値】に+3', - '『凶暴』イライラが止まらなくなる。5ターンの間、肉弾の命中判定に+5。', - '『楽観』気分がリラックスする。エナジー5点回復。', - '『自閉』自分の殻に閉じこもろうとする。5ターンの間、特殊防御力に+5。', - '『反射』敵の攻撃に即座に反応できる。5ターンの間、肉弾の回避判定に+10。', - '『快感』快感を覚える。衝動が1点回復する。', - ], - [ - '『情熱』激しい情熱が噴き出してくる。エナジー10点と衝動1点回復。', - '『気合』体中に気合いが入る。10ターンの間、すべてのダメージに+10。', - '『加速』体中の神経が加速する。10ターンの間、すべての命中判定に+10。', - '『利己』考え方が利己的になる。10ターンの間、特殊の命中判定に+10。', - '『頑強』肉体が鋼のように強くなる。10ターンの間、肉弾防御力に+5。', - '『察知』相手の動きを察知できる。10ターンの間、射撃防御力に+5。', - '『殺意』激しい殺意にとらわれる。10ターンの間、特殊ダメージに+10。', - '『静観』心が落ち着き冷静になる。10ターンの間、射撃の回避判定に+5。', - '『是空』頭が冴えて敵の行動が読める。10ターンの間、すべての回避判定に+5。', - '『心眼』心の目で相手の行動を読める。5ターンの間、射撃の回避判定に+10。', - '『自愛』何をおいても自分が愛しく思える。5ターンの間、特殊の回避判定に+10。', - ], - [ - '『神速』人知を超えたスピードに目覚める。戦闘終了まで「通常」行動を2回行えるようになる。', - '『流水』超感覚に目覚める。10ターンの間、すべての回避判定に+10。', - '『覚醒』肉体の回復力が限界突破。エナジー20点回復。', - '『忍耐』あらゆる苦痛に耐える鋼の精神が宿る。10ターンの間、すべての防御力に+5。', - '『予知』第六感が研ぎ澄まされる。10ターンの間、射撃の命中とダメージに+10。', - '『豪傑』身体能力が限界を超えて上昇する。10ターンの間、肉弾の命中とダメージに+10。', - '『殺気』猛烈な殺意がみなぎる。10ターンの間、特殊の命中判定とダメージに+10。', - '『発動』反射神経が飛躍的に加速される。10ターンの間、【行動値】+10。', - '『激情』激しい感情があふれ出す。10ターンの間、すべてのダメージに+10。', - '『超人』運動神経が飛躍的に加速される。10ターンの間、すべての命中判定に+15。', - '『悟り』心が解放され無我の境地に達する。衝動が3点回復する', - ] - ].freeze - - # 誤作動表 - MALFUNCTION_TABLE = [ - [ - '『緊急停止』機能に異常発生。次のターンの終了まで、「行動不能」になる。[30点]', - '『動力不調』動力装置に異常発生。このターンの終了時まで、「行動不能」になる。[30点]', - '『腕部停止』腕部機構に異常発生。このターンの終了時まで、「タイミング:攻撃」が行えない。[20点]', - '『脚部停止』脚部機構に異常発生。このターンの終了時まで、あらゆる「移動」を行えない。[20点]', - '『機能制動』機能が一瞬停止するが、影響なし。[10点]', - '『不良調整』機能に違和感。影響なし。[10点]', - '『機能安定』機能が安定した。影響なし。[10点]', - '『機能暴発』直前に使用した《兵装》がこのターンの終了時まで使用不能。未使用なら影響なし。[20点]', - '『離脱機能』機能の異常発生。行動を消費することなく、即座に敵から「移動(全力)」で離れる。[20点]', - '『排熱暴走』排熱機能に異常発生。次のターン終了時まで「着火」状態となる。[30点]', - '『作動予測』次に起きる誤作動を予測できる。「第2限界点」に達したとき、「作動予測」以外の任意の誤作動を選択できる。[30点]', - ], - [ - '『安全機能』安全機能が作動。このターンの終了時まで、あらゆる判定に-5。[40点]', - '『筋肉萎縮』人工筋肉に異常発生。次のターン終了時まで、【肉体】判定に-2。[30点]', - '『出力低下』駆動部に異常発生。次のターンの終了時まで、【機敏】判定に-2。[30点]', - '『感覚異常』視界機能に異常発生。次のターンの終了時まで、【感覚】判定に-2。[20点]', - '『視界不良』視界機能に異常発生。次のターンの終了時まで、【幸運】判定に-2。[20点]', - '『機能制動』機能が一瞬停止するが、影響なし。[10点]', - '『不良調整』機能に違和感。影響なし。[10点]', - '『援護不通』援護ソフトが誤作動。次のターンの終了時まで、【知力】判定-2。[20点]', - '『発声変調』発声機能に異常発生。次のターンの終了時まで、【精神】判定-2。[30点]', - '『装甲軟化』防御機構に異常発生。あらゆる防御力に-5。[30点]', - '『作動予測』次に起きる誤作動を予測できる。「第3限界点」に達したとき、「作動予測」以外の任意の誤作動を選択できる。[40点]', - ], - [ - '『動力漏電』動力から漏電。『負荷』が2点上昇。[40点]', - '『駆動異常』脚部に異常発生。次のターンの終了時まで、「移動」距離半減。[40点]', - '『足下転倒』バランサーに異常発生。「転倒」状態となる。[30点]', - '『出力向上』《兵装》機能が向上。次のターンの終了時まで、特殊ダメージに+1d点。[30点]', - '『機能制動』機能が一瞬停止するが、影響なし。[20点]', - '『機能暴走』攻撃機能が暴走し、戦闘能力が上昇。「着火」状態になるが、あらゆるダメージに+10。[20点]', - '『身体向上』格闘機能が向上。次のターンの終了時まで、肉弾ダメージに+1d点。[30点]', - '『反射向上』反応速度が向上。次のターンの終了時まで、【行動値】が+5。[30点]', - '『精度向上』標準機能が向上。次のターンの終了時まで、射撃ダメージに+1d点。[30点]', - '『電子賦活』電磁障壁が突如回復。【電力】が10点回復する。[30点]', - '『作動予測』次に起きる誤作動を予測できる。「第4限界点」に達したとき、「作動予測」以外の任意の誤作動を選択できる。[40点]', - ], - [ - '『照準誤認』照準機能に異常発生。即座に最も近い味方を全力攻撃。[50点]', - '『攻撃特化』攻撃機能が上昇。次のターン終了時まで、あらゆるダメージに+2dされるが「タイミング:防御」を行えない。[40点]', - '『機内窒息』呼吸補助機能に異常発生。次のターン終了時まで、「窒息」状態。[40点]', - '『機能増強』全機能が飛躍的に向上。次のターン終了時まで、《兵装》のコストを払わなくて良い。[30点]', - '『音声遮断』聴覚機能に異常発生。次のターン終了時まで、一切の物音が聞こえず、あらゆる回避判定に-5。[30点]', - '『電流加速』電磁障壁が効率的に流れる。『負荷』が1点回復。[20点]', - '『精密射撃』照準の精度が向上。あらゆるダメージに+5点。[30点]', - '『電力浪費』電磁障壁が過剰に使用される。【電力】が10点減少。[30点]', - '『荷電暴走』【電力】を5点消費するが、次のターン終了時まで、あらゆるダメージに+10点。[40点]', - '『状況分析』視界機能が向上。あらゆる命中判定に+5。[40点]', - '『作動予測』次に起きる誤作動を予測できる。「第5限界点」に達したとき、「作動予測」以外の任意の誤作動を選択できる。[50点]', - ], - [ - '『出力過剰』全出力が過剰。次のターン終了時まで、あらゆるダメージの総計が2倍になるが《兵装》のコストも2倍になる。[50点]', - '『機関暴走』放熱機能が暴走。自分を中心に半径5m以内すべての対象を「着火」状態にする。[50点]', - '『機体清冽』機能異常から復帰。「気絶」「死亡」を除く、あらゆる状態変化がすべて消滅。[40点]', - '『鉄壁装甲』防御機能が向上。次のターン終了時まで、あらゆる防御力に+5。[30点]', - '『緊急駆動』回避機能が向上。次のターン終了時まで、あらゆる回避判定に+5。[30点]', - '『出力増大』装備補助機能が向上。次のターン終了時まで、「所持品」あるいは《兵装》を使用したダメージ総計が2倍になる。[30点]', - '『機体加速』運動機能が暴走。次のターン終了時まで、【行動値】が2倍となる。[30点]', - '『自動追尾』自動追尾機能が発動。次のターン終了時まで、あらゆる命中値に+5。[40点]', - '『限定解除』全機能の限界を解除。次のターン終了時まで、あらゆるダメージに+10。[50点]', - '『負荷軽減』急激に機体の負荷が低下。『負荷』が2点回復する。[50点]', - '『複合反応』この表を2回振る。ただし、同じ結果が出た場合は適用するのは一度だけ。獲得経験値は累積する。[0点]', - ] - ].freeze - - # ミュータント衝動表 - MUTANT_TABLE = [ - [ - '『怒り』突然強い怒りに駆られる。近くの対象にあたりちらす。このターンの終了まで「行動不能」となる。[20点]', - '『絶叫』悪魔寄生体が蠢きだす。その恐怖に絶叫。このターンの終了まで「行動不能」となる。[10点]', - '『悲哀』急に悲しいことを思い出す。このターンの終了まで「行動不能」となる。[10点]', - '『微笑』可笑しくてしょうがない。くすくす笑いが止まらず、このターンの終了まで「行動不能」となる。[10点]', - '『鈍感』衝動に気が付かなかった。何も起こらない。[0点]', - '『抑制』衝動を抑え込んだ。何も起こらない。[0点]', - '『我慢』衝動を我慢した。何も起こらない。[0点]', - '『前兆』悪魔的特徴が一瞬目立つ。1ターン(10秒)持続。《擬態変化》を解いているなら影響なし。[10点]', - '『発現』悪魔的特徴が急に目立つ。60ターン(10分)持続。《擬態変化》を解いているなら影響なし。[10点]', - '『解除』利き腕/前脚の《擬態変化》が2ターン(20秒)かけて解除される。18ターン(3分)持続。《擬態変化》を解いているなら影響なし。[20点]', - '『顕現』利き腕/前脚の《擬態変化》が瞬時に解除。60ターン(10分)持続。《擬態変化》を解いているなら影響なし。[20点]', - ], - [ - '『茫然』思考が止まり、このターンの終了まで「攻撃」行動を行えない。その他の行動は影響なし。[20点]', - '『激怒』側にいるもの(生物、物体問わず)が憎くなり、殴る。《擬態変化》を解いているならば次のターンの終了まで、すべての命中判定+5、回避判定-5。[20点]', - '『残忍』殺意、破壊衝動が一瞬増す。戦闘中ならば次のターンに行われる「攻撃」行動の達成値に+5。[20点]', - '『落涙』過去の悲しい想い出が去来し、涙が溢れる。1ターン(10秒)「通常」行動を行えない。その他の行動に影響はない。[10点]', - '『抑制』衝動を抑え込んだ。何も起こらない。[0点]', - '『我慢』衝動を我慢した。何も起こらない。[0点]', - '『忍耐』肉体を傷つけて衝動に耐えた。5点ダメージ。[10点]', - '『辛抱』ほんの一瞬、《擬態変化》が解けかかる。無理に抑えたので5点ダメージ。《擬態変化》を解いているなら影響なし。[10点]', - '『異貌』3ターン(30秒)かけて《擬態変化》が解除される。18ターン(3分)持続。《擬態変化》を解いているなら影響なし。[20点]', - '『苦痛』寄生生物が体内で暴れ狂う。10点ダメージ。[20点]', - '『変貌』特異な外見的特徴が3ターン(30秒)かけて現れる。18ターン(3分)持続。《擬態変化》を解いているなら影響なし。[20点]', - ], - [ - '『憤怒』怒りに全身が満たされる。次のターンの終了まで、すべてのダメージを+1d点する。[20点]', - '『加速』ほとばしる衝動により。次のターンは【行動値】が2倍になる。[20点]', - '『発露』力が溢れ出る。次のターンの終了まで、すべてのダメージに+5、防御点-5(最低0)される。[20点]', - '『乾き』攻撃衝動を抑えられない。次のターンの終了まで全ての命中判定+5、回避判定-5。[10点]', - '『絶叫』あらん限りの声で叫ぶ。このターンの終了まで、あらゆる回避判定に-10。[10点]', - '『我慢』衝動を我慢した。何も起こらない。[0点]', - '『限界』衝動を無理矢理抑え込む。10点ダメージ。[10点]', - '『解放』衝動に耐えられず擬態が解ける。3ターン(30秒)かけて解除。《擬態変化》を解いているなら影響なし。[10点]', - '『本能』衝動に駆られ、《擬態変化》が瞬時に解除。次のターンは、目の前の動くものを敵味方区別無く攻撃する。[20点]', - '『保身』次のターンの終了まで、敵を攻撃できない。全ての防御力に+5。[20点]', - '『救済』悪魔寄生体が危機を察知し、【エナジー】を20点回復する。[20点]', - ], - [ - '『癒し』【エナジー】が即座に3d点回復。[20点]', - '『離脱』その場から逃げ出す。逃げられない場合は、うずくまって動けなくなる。1ターン(10秒)経過すれば我に返る。[20点]', - '『脱力』急に力が抜ける。次のターンの終了まで、全ての判定に-5される。[20点]', - '『全力』激しい躁状態。次のターンの終了まで、命中判定に+10、回避判定に-10。[20点]', - '『混沌』1時間の間、意味のある言葉を話せなくなる。[10点]', - '『争乱』体内で共生生物同士が争い、暴れ回る。衝動が1点増える。[10点]', - '『本能』衝動に駆られ、《擬態変化》が瞬時に解除。次のターン、目の前の動くものを敵味方区別無く攻撃する。[20点]', - '『焦燥』焦りから「転倒」する。[20点]', - '『猜疑』味方が急に敵に思える。即座に近くの味方に1回攻撃(自動命中。ダメージは通常)。いなければ影響なし。[20点]', - '『自虐』自分が許せない。自分へ素手攻撃(自動命中。ダメージは通常)。[20点]', - '『自浄』少し我に返る。衝動が2点回復する。[20点]', - ], - [ - '『絶望』無力感にさいなまれる。次のターンの終了時まで「行動不能」となる。[30点]', - '『眠り』猛烈な睡魔に襲われる。60ターン(10分)、もしくは戦闘終了まで起こしても起きない。[30点]', - '『誤動』突然《擬態変化》が使用され、人間の姿になる(衝動も通常通り使用する)。既に使用していた場合は変化無し。[20点]', - '『暗闇』視神経に影響が出る。以後1日「暗闇」になる。[20点]', - '『再生』共生生物が危機を察知し、【エナジー】を10点回復する。[20点]', - '『混乱』1時間の間、意味のある言葉を話せなくなる。[20点]', - '『硬化』急に体が硬直する。このターンの終了時まで、あらゆる命中判定に-10、防御力に+10。[20点]', - '『暴君』自分が最強に思えてしかたがない。60ターン(10分)攻撃判定に+10、回避判定に-10。[20点]', - '『無双』全力だが無防備。60ターン(10分)、全てのダメージに+10、防御点と【行動値】は0。[20点]', - '『喪失』《擬態変化》が使用中なら、即座に解除。さらに24時間、《擬態変化》が使えなくなる。[30点]', - '『進化』共生生物たちが上手く混じって身体能力が向上する。次の判定の達成値+10。[30点]', - ] - ].freeze - - # 鬼御魂(戦闘外)衝動表 - ONIMITAMA_OUT_OF_BATTLE_TABLE = [ - [ - '『恐怖』恐怖の感情が爆発し、目に映るすべてが恐ろしくなる。[20点]', - '『落涙』過去の悲しい思い出が去来し、涙が溢れる。[10点]', - '『哄笑』突如として精神が高揚し、狂ったように笑う。[10点]', - '『咆哮』<和魂>によって怒りが増し、突如として雄たけびを上げる。[10点]', - '『抑制』衝動を完全に律する。何も起こらない。[0点]', - '『沈静』穏やかな気分になる。[0点]', - '『理性』衝動を理性で押さえ込む。何も起こらない。[0点]', - '『破裂』衝動を押さえ込もうとして体内の欠陥が破裂、喀血する。[10点]', - '『喪失』一瞬、〈和魂〉の神通力が失われる。[10点]', - '『枯渇』吸血への渇望が押さえられず、一般人を血走った目で見つめる。[10点]', - '『内包』凄まじい勢いで体内に妖気が内包され、力が増す。[20点]', - ], - [ - '『飢餓』突然の吸血衝動。一般人を猛烈に襲いたくなる。[20点]', - '『封印』妖気を操作できず、1分間《特殊能力》を使用できない。[20点]', - '『拒絶』情緒が不安定となり、味方が急に怖くなる。[20点]', - '『拡散』突如として全身から妖気が噴出、目の前の対象を吹き飛ばす。[10点]', - '『抑制』衝動を完全に律する。なにも起こらない。[0点]', - '『治癒』疲れが癒される。[0点]', - '『本能』暴力衝動に駆られ、瞬時に"異形化"してしまう。[10点]', - '『破砕』破壊衝動が巻き起こり、目の前の障害物を破壊する。[20点]', - '『悪寒』突如として悪寒が走り、物事に集中できなくなる。', - '『心傷』突如としてトラウマを思い出し、立ちつくす。[20点]', - '『回想』過去の思い出が去来、活力がみなぎる。[30点]', - ], - [ - '『不動』妖気が全身を駆け巡り、激痛によって動けなくなる。[20点]', - '『脱力』突如として妖気が衰え、脱力のあまり膝をつく。[20点]', - '『異形』瞬時にして犬歯が肥大し、目が紅く、邪悪に輝く。[20点]', - '『精密』突如として視界が広がり、目視せずとも背後の風景や人物を見通せる。[10点]', - '『獰猛』突如として怒りの感情が湧き起こり、目前の対象を罵倒する。[0点]', - '『高揚』〈和魂〉の影響により精神が高揚、躁状態となる。[0点]', - '『憎悪』突如として憎悪が沸き起こり、目前の対象に掴みかかる。[0点]', - '『加速』全身に妖気が駆け巡り、反射速度が増し、10秒を1分のように感じる。[10点]', - '『平穏』精神に変調が起こり、異常なほど理性的になる。[20点]', - '『慈愛』あらゆる者に自愛を抱き、親身に接する。[20点]', - '『支配』一瞬〈和魂〉を完全支配、次に行う戦闘外の判定を1回だけ効果的成功する。[20点]', - ], - [ - '『変質』突如として妖気が変質、半径5mにわたって透明な壁を展開する。[30点]', - '『増強』妖気によって身体能力が増強され、10分間[運動]上級を取得する。[20点]', - '『拡大』妖気が目視できるほど両腕から発散、20m先の物体を操作できる。[20点]', - '『清浄』妖気を開放、<鬼御魂>を持たない半径10m内全ての生物を眠らせる。[10点]', - '『透視』濃密な妖気が瞳に宿り、1分間20mの距離を透視できる。[10点]', - '『強行』突如として妖気が増し、接触した対象を【肉体】x2m吹き飛ばす。[0点]', - '『衝撃』妖気が殺傷能力を帯び、接触した物体を破壊。20秒間、手足が簡易の肉弾武器となる。[10点]', - '『撃滅』妖気が稲妻や火災へと変異し、接触した物体を「着火」させる。[20点]', - '『展開』全身を包む妖気の層が厚くなり、1分間物理的な接触を行えない。[20点]', - '『模倣』<和魂>が精神を活性化させ、異常な記憶力を手に入れる。[20点]', - '『支配』一瞬<和魂>を完全支配、次に行う戦闘外の判定を1回だけ効果的成功する。[20点]', - ], - [ - '『解放』妖気を無尽蔵に解放、1分間、戦闘外で使用する「コスト」を無視できる。[30点]', - '『加速』妖気が両足に集中、1分間、時速50kmで疾走できる。[20点]', - '『付与』妖気が感覚に集中、1分間50m先を透視できる。[20点]', - '『強固』妖気が全身に浸透、1分間「窒息」「状態変化」のダメージを無効。[20点]', - '『破壊』全妖気が膂力に変換され、1分間【肉体】判定の達成値を2倍にする。[20点]', - '『爆散』1分間妖気が変質、接触した対象を爆破でき、障害物を瞬時に破壊。[10点]', - '『浄化』半径10m全てを浄化、範囲内で持続する《特殊能力》の効果を無効化。[20点]', - '『律動』半径10m内の<鬼御魂>を持たない生物を1分間気絶させる。[20点]', - '『修復』妖気が極限まで活性化され、疲労を取り払う。[20点]', - '『本性』瞬時に異形化。異形化中であれば、さらに禍々しい姿へ変質する。[20点]', - '『覚醒』1時間、全身から閃光を発し、高さが【精神】mの"光の柱"に包まれる。[30点]', - ] - ].freeze - - # 鬼御魂(戦闘中)衝動表 - ONIMITAMA_BATTLE_TABLE = [ - [ - '『恐怖』効果が発生したターンの終了時まで「行動不能」状態となる。', - '『落涙』1ターン(10秒)「通常」行動を行えない。回避行動に影響はない。', - '『哄笑』効果が発生したターンの終了時まで「行動不能」となる。', - '『咆哮』効果が発生したターンの終了時まで「行動不能」となる。', - '『抑制』影響なし。', - '『沈静』【エナジー】を3点回復する。', - '『理性』影響なし。', - '『破裂』【エナジー】が5点減少する。', - '『喪失』次ターンの【行動値】が半減(端数切捨て)。', - '『枯渇』次ターンの終了時まで、あらゆるダメージに「+2」点。', - '『内包』『衝動』が2点回復する。', - ], - [ - '『飢餓』最も近くの無防備な対象から血液摂取を試みる。対象が<鬼御魂>を持たない場合、血液採取の効果を得られる。', - '『封印』効果が発生したターンの終了時まで《特殊能力》を使用できない。', - '『拒絶』効果が発生したターンの終了時まで、味方を対象とした《特殊効果》を使用不可。', - '『拡散』半径5m以内の対象全ての【エナジー】を1d点減少する(抵抗不可、防御力無視)。', - '『抑制』影響なし。', - '『治癒』【エナジー】を5点回復する。', - '『本能』即座に"異形化"、ターン終了まで任意のダメージ1つに「+1d」点。', - '『破砕』行動を消費することなく、近くに存在する障害物1つを瞬時に破壊。', - '『悪寒』効果が発生したターンの終了時まで、あらゆる判定の達成値に「-5」。', - '『心傷』効果が発生したターンの終了時まで、「タイミング:攻撃」を行えない。', - '『回想』『衝動』を3点回復する。', - ], - [ - '『不動』次のターンの終了時まで「タイミング:通常」を行えない。', - '『脱力』次のターンの終了時まで「転倒」状態となる。', - '『異形』次に行う行為判定は、出目に関係なく効果的成功として扱う。', - '『精密』次のターンの終了時まで、射撃ダメージに「+5」点。', - '『獰猛』次のターンの終了時まで、肉弾ダメージに「+5」点。', - '『高揚』次のターンの終了時まで、あらゆるダメージに「+1d」点。', - '『憎悪』次のターンの終了時まで、特殊ダメージに「+5」点。', - '『加速』次のターンの終了時まで【行動値】に「+5」。', - '『平穏』あらゆる「状態変化」を任意で1つ消滅させる。', - '『慈愛』半径5m内の味方全ての【エナジー】を5点回復する。', - '『支配』「衝動表」の結果を、第三段階の中から任意のものから1つ選択できる。', - ], - [ - '『変質』次のターンの終了時まで、任意の防御力の1つに「+10」点。', - '『増強』次のターンの終了時まで、任意の回避判定1つに「+5」。', - '『拡大』次のターンの終了時まで、任意の命中判定1つに「+5」。', - '『清浄』半径10m内の味方全ての【エナジー】を5点回復する。', - '『透視』次のターン終了時まで、射撃ダメージに「+10」点。', - '『強行』次のターンは、「タイミング:攻撃」を余分に1回行うことができる。', - '『衝撃』次のターンの終了時まで、肉弾ダメージに「+10」点。', - '『撃滅』次のターンの終了時まで、特殊ダメージに「+10」点。', - '『展開』次のターンの終了時まで、本人が受けるあらゆるダメージを半減できる。', - '『模倣』次のターンの終了時まで、敵が使用した《特殊能力》1つを1回だけ使用可能。', - '『支配』「衝動表」の結果を、第四段階の中から任意のものから1つ選択できる。', - ], - [ - '『解放』次のターンの終了時まで、あらゆる戦闘修正が2倍となる。', - '『加速』次のターンの終了時まで、【行動値】が2倍となる。', - '『付与』次のターンの終了時まで、射撃ダメージの総計を2倍にできる。', - '『強固』次のターンの終了時まで、あらゆる防御力に「+10」点。', - '『破壊』次のターンの終了時まで、肉弾ダメージの総計を2倍にできる。', - '『爆散』次のターンの終了時まで、あらゆるダメージに「+2d」点。', - '『浄化』『衝動』を1d点回復する。', - '『律動』次のターンの終了時まで、特殊ダメージの総計を2倍にできる。', - '『修復』【エナジー】が最大値まで回復する。', - '『本性』この戦闘中のみ、最終能力を2回使用できる。', - '『覚醒』第五段階を2回振り、双方の効果を適応する。', - ] - ].freeze -end diff --git a/src/src_bcdice/diceBot/DetatokoSaga.rb b/src/src_bcdice/diceBot/DetatokoSaga.rb deleted file mode 100644 index 241840f02..000000000 --- a/src/src_bcdice/diceBot/DetatokoSaga.rb +++ /dev/null @@ -1,313 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class DetatokoSaga < DiceBot - # ゲームシステムの識別子 - ID = 'DetatokoSaga' - - # ゲームシステム名 - NAME = 'でたとこサーガ' - - # ゲームシステム名の読みがな - SORT_KEY = 'てたとこさあか' - - # ダイスボットの使い方 - HELP_MESSAGE = <=z or xDSy>=z - (x=スキルレベル、y=現在フラグ値(省略時0)、z=目標値(省略時8)) - 例)3DS 2DS5 0DS 3DS>=10 3DS7>=12 -・判定値 xJD or xJDy or xJDy+z or xJDy-z or xJDy/z - (x=スキルレベル、y=現在フラグ値(省略時0)、z=修正値(省略時0)) - 例)3JD 2JD5 3JD7+1 4JD/3 -・体力烙印表 SST (StrengthStigmaTable) -・気力烙印表 WST (WillStigmaTable) -・体力バッドエンド表 SBET (StrengthBadEndTable) -・気力バッドエンド表 WBET (WillBadEndTable) -INFO_MESSAGE_TEXT - - setPrefixes([ - '\d+DS.*', '\d+JD.*', - 'SST', 'StrengthStigmaTable', - 'WST', 'WillStigmaTable', - 'SBET', 'StrengthBadEndTable', - 'WBET', 'WillBadEndTable' - ]) - - def initialize - super - @sendMode = 2 - @sortType = 1 - @d66Type = 2 - end - - def rollDiceCommand(command) - debug("rollDiceCommand begin string", command) - - result = '' - - result = checkRoll(command) - return result unless result.empty? - - result = checkJudgeValue(command) - return result unless result.empty? - - debug("各種表として処理") - return rollTableCommand(command) - end - - # 通常判定 xDS or xDSy or xDS>=z or xDSy>=z - def checkRoll(string) - debug("checkRoll begin string", string) - - return '' unless /^(\d+)DS(\d+)?((>=)(\d+))?$/i =~ string - - target = 8 - - skill = Regexp.last_match(1).to_i - flag = Regexp.last_match(2).to_i - target = Regexp.last_match(5).to_i unless Regexp.last_match(5).nil? - - result = "判定! スキルレベル:#{skill} フラグ:#{flag} 目標値:#{target}" - - total, rollText = getRollResult(skill) - result += " > #{total}[#{rollText}] > 判定値:#{total}" - - success = getSuccess(total, target) - result += " > #{success}" - - result += getCheckFlagResult(total, flag) - - return result - end - - def getRollResult(skill) - diceCount = skill + 1 - diceCount = 3 if skill == 0 - - dice = [] - diceCount.times do |i| - dice[i], = roll(1, 6) - end - - diceText = dice.join(',') - - dice = dice.sort - dice = dice.reverse if skill != 0 - - total = dice[0] + dice[1] - - return total, diceText - end - - def getSuccess(check, target) - if check >= target - return "目標値以上!【成功】" - end - - return "目標値未満…【失敗】" - end - - def getCheckFlagResult(total, flag) - if total > flag - return "" - end - - willText = getDownWill(flag) - result = "、フラグ以下!【気力#{willText}点減少】" - result += "【判定値変更不可】" - - return result - end - - def getDownWill(flag) - if flag >= 10 - return "6" - end - - dice, = roll(1, 6) - return "1D6->#{dice}" - end - - # スキル判定値 xJD or xJDy or xJDy+z or xJDy-z or xJDy/z - def checkJudgeValue(string) - debug("checkJudgeValue begin string", string) - - return '' unless %r{^(\d+)JD(\d+)?(([+]|[-]|[/])(\d+))?$}i =~ string - - skill = Regexp.last_match(1).to_i - flag = Regexp.last_match(2).to_i - operator = Regexp.last_match(4) - value = Regexp.last_match(5).to_i - - result = "判定! スキルレベル:#{skill} フラグ:#{flag}" - - modifyText = getModifyText(operator, value) - result += " 修正値:#{modifyText}" unless modifyText.empty? - - total, rollText = getRollResult(skill) - result += " > #{total}[#{rollText}]#{modifyText}" - - totalResult = getTotalResultValue(total, value, operator) - result += " > #{totalResult}" - - result += getCheckFlagResult(total, flag) - - return result - end - - def getModifyText(operator, value) - return '' if value == 0 - - operatorText = - case operator - when "+" - "+" - when "-" - "-" - when "/" - "÷" - else - return "" - end - - return "#{operatorText}#{value}" - end - - def getTotalResultValue(total, value, operator) - case operator - when "+" - return "#{total}+#{value} > 判定値:#{total + value}" - when "-" - return "#{total}-#{value} > 判定値:#{total - value}" - when "/" - return getTotalResultValueWhenSlash(total, value) - else - return "判定値:#{total}" - end - end - - def getTotalResultValueWhenSlash(total, value) - return "0では割れません" if value == 0 - - quotient = ((1.0 * total) / value).ceil - - result = "#{total}÷#{value} > 判定値:#{quotient}" - return result - end - - #################### - # 各種表 - - def rollTableCommand(command) - command = command.upcase - result = [] - - debug("rollDiceCommand command", command) - - name = '' - text = '' - total = 0 - - case command.upcase - when "SST", "StrengthStigmaTable".upcase - name, text, total = choiceStrengthStigmaTable() - when "WST", "WillStigmaTable".upcase - name, text, total = choiceWillStigmaTable() - when "SBET", "StrengthBadEndTable".upcase - name, text, total = choiceStrengthBadEndTable() - when "WBET", "WillBadEndTable".upcase - name, text, total = choiceWillBadEndTable() - else - return - end - - result = "#{name}(#{total}) > #{text}" - - return result - end - - # ##表一覧 - - def choiceStrengthStigmaTable() - name = "体力烙印表" - table = %w{ - あなたは【烙印】を2つ受ける。この表をさらに2回振って受ける【烙印】を決める(その結果、再びこの出目が出ても【烙印】は増えない)。 - 【痛手】手負い傷を負った。何とか戦えているが……。 - 【流血】血があふれ出し、目がかすむ……。 - 【衰弱】体が弱り、その心さえも萎えてしまいそうだ……。 - 【苦悶】痛みと苦しみ、情けなさ。目に涙がにじむ。 - 【衝撃】吹き飛ばされ、壁や樹木にめりこむ。早く起き上がらねば。 - 【疲労】あなたの顔に疲労の色が強まる……この戦いがつらくなってきた。 - 【怒号】うっとうしい攻撃に怒りの叫びを放つ。怒りが戦いを迷わせるか? - 【負傷】手傷を負わされた……。 - 【軽症】あなたの肌に傷が残った。これだけなら何ということもない。 - 奇跡的にあなたは【烙印】を受けなかった。 - } - - text, total = get_table_by_2d6(table) - return name, text, total - end - - def choiceWillStigmaTable() - name = "気力烙印表" - - table = %w{ - あなたは【烙印】を2つ受ける。この表をさらに2回振って受ける【烙印】を決める(その結果、再びこの出目が出ても【烙印】は増えない)。 - 【絶望】どうしようもない状況。希望は失われ……膝を付くことしかできない。 - 【号泣】あまりの理不尽に、子供のように泣き叫ぶことしかできない。 - 【後悔】こんなはずじゃなかったのに。しかし現実は非情だった。 - 【恐怖】恐怖に囚われてしまった!敵が、己の手が、恐ろしくてならない! - 【葛藤】本当にこれでいいのか?何度も自身への問いかけが起こる……。 - 【憎悪】怒りと憎しみに囚われたあなたは、本来の力を発揮できるだろうか? - 【呆然】これは現実なのか?ぼんやりとしながらあなたは考える。 - 【迷い】迷いを抱いてしまった。それは戦う意志を鈍らせるだろうか? - 【悪夢】これから時折、あなたはこの時を悪夢に見ることだろう。 - 奇跡的にあなたは【烙印】を受けなかった。 - } - - text, total = get_table_by_2d6(table) - return name, text, total - end - - def choiceStrengthBadEndTable() - name = "体力バッドエンド表" - - table = %w{ - 【死亡】あなたは死んだ。次のセッションに参加するには、クラス1つを『モンスター』か『暗黒』にクラスチェンジしなくてはいけない。 - 【命乞】あなたは恐怖に駆られ、命乞いをしてしまった!次のセッション開始時に、クラス1つが『ザコ』に変更される! - 【忘却】あなたは記憶を失い、ぼんやりと立ち尽くす。次のセッションに参加するには、クラス1つを変更しなくてはならない。 - 【悲劇】あなたの攻撃は敵ではなく味方を撃った!全てが終わるまであなたは立ち尽くしていた。任意の味方の【体力】を1D6点減少させる。 - 【暴走】あなたは正気を失い、衝動のまま暴走する!同じシーンにいる全員の【体力】を1D6点減少させる。 - 【転落】あなたは断崖絶壁から転落した。 - 【虜囚】あなたは敵に囚われた。 - 【逃走】あなたは恐れをなし、仲間を見捨てて逃げ出した。 - 【重症】あなたはどうしようもない痛手を負い、倒れた。 - 【気絶】あなたは気を失った。そして目覚めれば全てが終わっていた。 - それでもまだ立ち上がる!あなたはバッドエンドを迎えなかった。体力の【烙印】を1つ打ち消してよい。 - } - - text, total = get_table_by_2d6(table) - return name, text, total - end - - def choiceWillBadEndTable() - name = "気力バッドエンド表" - - table = %w{ - 【自害】あなたは自ら死を選んだ。次のセッションに参加するには、クラス1つを『暗黒』にクラスチェンジしなくてはいけない。 - 【堕落】あなたは心の中の闇に飲まれた。次のセッション開始時に、クラス1つが『暗黒』か『モンスター』に変更される! - 【隷属】あなたは敵の言うことに逆らえない。次のセッションであなたのスタンスは『従属』になる。 - 【裏切】裏切りの衝動。任意の味方の【体力】を1D6点減少させ、その場から逃げ出す。 - 【暴走】あなたは正気を失い、衝動のまま暴走する!同じシーンにいる全員の【体力】を1D6点減少させる。 - 【呪い】心の闇が顕在化したのか。敵の怨嗟か。呪いに蝕まれたあなたは、のたうちまわることしかできない。 - 【虜囚】あなたは敵に囚われ、その場から連れ去られる。 - 【逃走】あなたは恐れをなし、仲間を見捨てて逃げ出した。 - 【放心】あなたはただぼんやりと立ち尽くすしかなかった。我に返った時、全ては終わっていた。 - 【気絶】あなたは気を失った。そして目覚めれば全てが終わっていた。 - それでもまだ諦めない!あなたはバッドエンドを迎えなかった。あなたは気力の【烙印】を1つ打ち消してよい。 - } - - text, total = get_table_by_2d6(table) - return name, text, total - end -end diff --git a/src/src_bcdice/diceBot/DetatokoSaga_Korean.rb b/src/src_bcdice/diceBot/DetatokoSaga_Korean.rb deleted file mode 100644 index 6b16a0f56..000000000 --- a/src/src_bcdice/diceBot/DetatokoSaga_Korean.rb +++ /dev/null @@ -1,313 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class DetatokoSaga_Korean < DiceBot - # ゲームシステムの識別子 - ID = 'DetatokoSaga:Korean' - - # ゲームシステム名 - NAME = '데타토코 사가' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Korean:데타토코 사가' - - # ダイスボットの使い方 - HELP_MESSAGE = <=z or xDSy>=z - (x=스킬레벨, y=현재 플래그(생략=0), z=목표치(생략=8)) - 예)3DS 2DS5 0DS 3DS>=10 3DS7>=12 -・판정치 xJD or xJDy or xJDy+z or xJDy-z or xJDy/z - (x=스킬레벨, y=현재 플래그(생략=0), z=수정치(생략=0)) - 예)3JD 2JD5 3JD7+1 4JD/3 -・체력 낙인표 SST (StrengthStigmaTable) -・기력 낙인표 WST (WillStigmaTable) -・체력 배드엔딩표 SBET (StrengthBadEndTable) -・기력 배드엔딩표 WBET (WillBadEndTable) -INFO_MESSAGE_TEXT - - setPrefixes([ - '\d+DS.*', '\d+JD.*', - 'SST', 'StrengthStigmaTable', - 'WST', 'WillStigmaTable', - 'SBET', 'StrengthBadEndTable', - 'WBET', 'WillBadEndTable' - ]) - - def initialize - super - @sendMode = 2 - @sortType = 1 - @d66Type = 2 - end - - def rollDiceCommand(command) - debug("rollDiceCommand begin string", command) - - result = '' - - result = checkRoll(command) - return result unless result.empty? - - result = checkJudgeValue(command) - return result unless result.empty? - - debug("각종표로서 처리") - return rollTableCommand(command) - end - - # 통상판정 xDS or xDSy or xDS>=z or xDSy>=z - def checkRoll(string) - debug("checkRoll begin string", string) - - return '' unless /^(\d+)DS(\d+)?((>=)(\d+))?$/i =~ string - - target = 8 - - skill = Regexp.last_match(1).to_i - flag = Regexp.last_match(2).to_i - target = Regexp.last_match(5).to_i unless Regexp.last_match(5).nil? - - result = "판정! 스킬레벨:#{skill} 플래그:#{flag} 목표치:#{target}" - - total, rollText = getRollResult(skill) - result += " > #{total}[#{rollText}] > 판정치:#{total}" - - success = getSuccess(total, target) - result += " > #{success}" - - result += getCheckFlagResult(total, flag) - - return result - end - - def getRollResult(skill) - diceCount = skill + 1 - diceCount = 3 if skill == 0 - - dice = [] - diceCount.times do |i| - dice[i], = roll(1, 6) - end - - diceText = dice.join(',') - - dice = dice.sort - dice = dice.reverse if skill != 0 - - total = dice[0] + dice[1] - - return total, diceText - end - - def getSuccess(check, target) - if check >= target - return "목표치 이상!【성공】" - end - - return "목표치 미달… 【실패】" - end - - def getCheckFlagResult(total, flag) - if total > flag - return "" - end - - willText = getDownWill(flag) - result = ", 플래그 이하! 【기력#{willText}점 감소】" - result += " 【판정치 변경 불가】" - - return result - end - - def getDownWill(flag) - if flag >= 10 - return "6" - end - - dice, = roll(1, 6) - return "1D6->#{dice}" - end - - # 스킬판정치 xJD or xJDy or xJDy+z or xJDy-z or xJDy/z - def checkJudgeValue(string) - debug("checkJudgeValue begin string", string) - - return '' unless %r{^(\d+)JD(\d+)?(([+]|[-]|[/])(\d+))?$}i =~ string - - skill = Regexp.last_match(1).to_i - flag = Regexp.last_match(2).to_i - operator = Regexp.last_match(4) - value = Regexp.last_match(5).to_i - - result = "판정! 스킬레벨:#{skill} 플래그:#{flag}" - - modifyText = getModifyText(operator, value) - result += " 수정치:#{modifyText}" unless modifyText.empty? - - total, rollText = getRollResult(skill) - result += " > #{total}[#{rollText}]#{modifyText}" - - totalResult = getTotalResultValue(total, value, operator) - result += " > #{totalResult}" - - result += getCheckFlagResult(total, flag) - - return result - end - - def getModifyText(operator, value) - return '' if value == 0 - - operatorText = - case operator - when "+" - "+" - when "-" - "-" - when "/" - "÷" - else - return "" - end - - return "#{operatorText}#{value}" - end - - def getTotalResultValue(total, value, operator) - case operator - when "+" - return "#{total}+#{value} > 판정치:#{total + value}" - when "-" - return "#{total}-#{value} > 판정치:#{total - value}" - when "/" - return getTotalResultValueWhenSlash(total, value) - else - return "판정치:#{total}" - end - end - - def getTotalResultValueWhenSlash(total, value) - return "0으로는 나누어지지 않습니다" if value == 0 - - quotient = ((1.0 * total) / value).ceil - - result = "#{total}÷#{value} > 판정치:#{quotient}" - return result - end - - #################### - # 각종표 - - def rollTableCommand(command) - command = command.upcase - result = [] - - debug("rollDiceCommand command", command) - - name = '' - text = '' - total = 0 - - case command.upcase - when "SST", "StrengthStigmaTable".upcase - name, text, total = choiceStrengthStigmaTable() - when "WST", "WillStigmaTable".upcase - name, text, total = choiceWillStigmaTable() - when "SBET", "StrengthBadEndTable".upcase - name, text, total = choiceStrengthBadEndTable() - when "WBET", "WillBadEndTable".upcase - name, text, total = choiceWillBadEndTable() - else - return - end - - result = "#{name}(#{total}) > #{text}" - - return result - end - - # ##표 목록 - - def choiceStrengthStigmaTable() - name = "체력 낙인표" - table = [ - "당신은 【낙인】을 2개 받는다. 이 표를 다시 2번 굴려 받을 【낙인】을 정한다(그 경우, 다시 이 눈이 나와도 【낙인】은 늘어나지 않는다).", - "【상처】 심한 상처를 입었다. 어떻게든 싸울 수는 있지만…….", - "【출혈】 피가 흘러넘쳐, 눈이 흐릿하다…….", - "【쇠약】 몸이 약해져, 그 마음마저도 시들어버릴 거 같다.", - "【고통】 아픔과 괴로움, 한심함. 눈에서 눈물이 새어 나온다.", - "【충격】 날려져서, 벽이나 나무에 부딪힌다. 빨리 일어서지 않으면.", - "【피로】 당신의 얼굴에 피로의 색이 강해진다……이 싸움이 힘겨워졌다.", - "【노호】 성가신 공격에 분노의 함성을 지른다. 분노가 싸움을 어렵게 할까?", - "【부상】 상처를 입었다…….", - "【경상】 당신의 피부에 상처가 남았다. 이것만이라면 아무렇지도 않다.", - "기적적으로 당신은 【낙인】을 받지 않았다.", - ] - - text, total = get_table_by_2d6(table) - return name, text, total - end - - def choiceWillStigmaTable() - name = "기력 낙인표" - - table = [ - "당신은 【낙인】을 2개 받는다. 이 표를 다시 2번 굴려 받을 【낙인】을 정한다(그 경우, 다시 이 눈이 나와도 【낙인】은 늘어나지 않는다).", - "【절망】 어떻게 하지 못하는 상황. 희망은 사라지고……무릎을 꿇을 수밖에 없다.", - "【통곡】 너무도 부조리함에, 어린아이처럼 울음을 터트릴 수밖에 없다.", - "【후회】 이럴 생각은 아니었는데. 하지만 현실은 비정했다.", - "【공포】 공포에 사로잡혔다! 적이, 자신의 손이, 무서워서 참을 수 없다!", - "【갈등】 정말로 이걸로 괜찮은 걸까? 몇 번이고 자신에게 의문이 일어난다…….", - "【증오】 분노와 증오에 사로잡힌 당신은, 본래의 힘을 발휘할 수 있을까?", - "【망연】 이것은 현실인가? 몽롱한 정신으로 당신은 생각한다.", - "【주저】 망설임을 가졌다. 그것은 싸울 의지를 둔하게 할 것인가?", - "【악몽】 이제부터 때때로, 당신은 이 순간을 악몽으로 볼 것이다.", - "기적적으로 당신은 【낙인】을 받지 않았다.", - ] - - text, total = get_table_by_2d6(table) - return name, text, total - end - - def choiceStrengthBadEndTable() - name = "체력 배드엔딩표" - - table = [ - "【사망】 당신은 죽었다. 다음 세션에 참가하기 위해서는, 클래스 1개를 『몬스터』나 『암흑』으로 클래스 체인지해야만 한다.", - "【목숨 구걸】 당신은 공포를 느껴, 목숨을 구걸했다! 다음 세션 개시 시에, 클래스 1개가 『자코』로 변경된다!", - "【망각】 당신은 기억을 잃고, 우두커니 섰다. 다음 세션에 참가하기 위해서는, 클래스 1개를 변경해야만 한다.", - "【비극】 당신의 공격은 적이 아니라 아군을 맞췄다! 모든 것이 끝날 때까지 당신은 우두커니 서 있게 된다. 임의의 아군의 【체력】을 1D6점 감소시킨다.", - "【폭주】 당신은 이성을 잃고, 충동에 따라 폭주한다! 같은 씬에 있는 전원의 【체력】을 1D6점 감소시킨다.", - "【전락】 당신은 단애절벽에서 떨어진다.", - "【포로】 당신은 적에게 사로잡혔다.", - "【도주】 당신은 겁에 질려, 동료를 버리고 도망쳤다.", - "【중상】 당신은 어찌할 수 없는 상처를 입고, 쓰러졌다.", - "【기절】 당신은 의식을 잃었다. 그리고 정신이 들면 모든 것이 끝나있었다.", - "그래도 아직 일어선다! 당신은 배드엔드를 맞이하지 않았다. 체력의 【낙인】을 1개 지워도 좋다.", - ] - - text, total = get_table_by_2d6(table) - return name, text, total - end - - def choiceWillBadEndTable() - name = "기력 배드엔딩표" - - table = [ - "【자해】 당신은 스스로 죽음을 골랐다. 다음 세션에 참가하기 위해서는 클래스 1개를 『암흑』으로 클래스 체인지해야만 한다.", - "【타락】 당신은 마음속의 어둠에 먹혔다. 다음 세션 개시 시에, 클래스 1개가 『암흑』이나 『몬스터』로 변경된다!", - "【예속】 당신은 적의 말에 거스를 수 없다. 다음 세션에 당신의 스탠스는 『종속』이 된다.", - "【배반】 배반의 충동. 임의의 아군의 【체력】을 1D6점 감소시키고, 그 자리에서 도망친다.", - "【폭주】 당신은 이성을 잃고, 충동에 따라 폭주한다! 같은 씬에 있는 전원의 【체력】을 1D6점 감소시킨다.", - "【저주】 마음의 어둠이 현재화한 것인가. 적의 원한인가. 저주에 삼켜진 당신은, 그저 고통에 몸부림칠 수밖에 없다.", - "【포로】 당신은 적에게 사로잡혀, 그 자리에서 끌려갔다.", - "【도주】 당신은 겁에 질려, 동료를 버리고 도망쳤다.", - "【방심】 당신은 그저 멍하니 서 있을 수밖에 없다. 정신을 차렸을 때, 모든 것은 끝나있었다.", - "【기절】 당신은 의식을 잃었다. 그리고 정신이 들면 모든 것이 끝나있었다.", - "그래도 아직 포기하지 않아! 당신은 배드엔드를 맞이하지 않았다. 기력의 【낙인】을 1개 지워도 좋다.", - ] - - text, total = get_table_by_2d6(table) - return name, text, total - end -end diff --git a/src/src_bcdice/diceBot/DiceBot.rb b/src/src_bcdice/diceBot/DiceBot.rb deleted file mode 100644 index 7398fa5e0..000000000 --- a/src/src_bcdice/diceBot/DiceBot.rb +++ /dev/null @@ -1,584 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class DiceBot - # 空の接頭辞(反応するコマンド) - EMPTY_PREFIXES_PATTERN = /(^|\s)(S)?()(\s|$)/i.freeze - - # ゲームシステムの識別子 - ID = 'DiceBot' - - # ゲームシステム名 - NAME = 'DiceBot' - - # ゲームシステム名の読みがな - SORT_KEY = '*たいすほつと' - - # ダイスボットの使い方 - HELP_MESSAGE = '' - - class << self - # 接頭辞(反応するコマンド)の配列を返す - # @return [Array] - attr_reader :prefixes - - # 接頭辞(反応するコマンド)の正規表現を返す - # @return [Regexp] - attr_reader :prefixesPattern - - # 接頭辞(反応するコマンド)を設定する - # @param [Array] prefixes 接頭辞のパターンの配列 - # @return [self] - def setPrefixes(prefixes) - @prefixes = prefixes. - # 最適化が効くように内容の文字列を変更不可にする - map(&:freeze). - # 配列全体を変更不可にする - freeze - @prefixesPattern = /(^|\s)(S)?(#{prefixes.join('|')})(\s|$)/i.freeze - - self - end - - # 接頭辞(反応するコマンド)をクリアする - # @return [self] - def clearPrefixes - @prefixes = [].freeze - @prefixesPattern = EMPTY_PREFIXES_PATTERN - - self - end - - private - - # 継承された際にダイスボットの接頭辞リストをクリアする - # @param [DiceBot] subclass DiceBotを継承したクラス - # @return [void] - def inherited(subclass) - subclass.clearPrefixes - end - end - - clearPrefixes - - @@bcdice = nil - - DEFAULT_SEND_MODE = 2 # デフォルトの送信形式(0=結果のみ,1=0+式,2=1+ダイス個別) - - def initialize - @sendMode = DEFAULT_SEND_MODE # (0=結果のみ,1=0+式,2=1+ダイス個別) - @sortType = 0 # ソート設定(1 = 足し算ダイスでソート有, 2 = バラバラロール(Bコマンド)でソート有, 3 = 1と2両方ソート有) - @sameDiceRerollCount = 0 # ゾロ目で振り足し(0=無し, 1=全部同じ目, 2=ダイスのうち2個以上同じ目) - @sameDiceRerollType = 0 # ゾロ目で振り足しのロール種別(0=判定のみ, 1=ダメージのみ, 2=両方) - @d66Type = 1 # d66の差し替え(0=D66無し, 1=順番そのまま([5,3]->53), 2=昇順入れ替え([5,3]->35) - @isPrintMaxDice = false # 最大値表示 - @upperRollThreshold = 0 # 上方無限 - @unlimitedRollDiceType = 0 # 無限ロールのダイス - @rerollNumber = 0 # 振り足しする条件 - @defaultSuccessTarget = "" # 目標値が空欄の時の目標値 - @rerollLimitCount = 10000 # 振り足し回数上限 - @fractionType = "omit" # 端数の処理 ("omit"=切り捨て, "roundUp"=切り上げ, "roundOff"=四捨五入) - - if !prefixs.empty? && self.class.prefixes.empty? - # 従来の方法(#prefixs)で接頭辞を設定していた場合でも - # クラス側に接頭辞が設定されるようにする - warn("#{id}: #prefixs is deprecated. Please use .setPrefixes.") - self.class.setPrefixes(prefixs) - end - end - - attr_accessor :rerollLimitCount - - attr_reader :sendMode, :sameDiceRerollCount, :sameDiceRerollType, :d66Type - attr_reader :isPrintMaxDice, :upperRollThreshold - attr_reader :defaultSuccessTarget, :rerollNumber, :fractionType - - # ダイスボット設定後に行う処理 - # @return [void] - # - # 既定では何もしない。 - def postSet - # 何もしない - end - - # ダイスボットについての情報を返す - # @return [Hash] - def info - { - 'gameType' => id, - 'name' => name, - 'sortKey' => sort_key, - 'prefixs' => self.class.prefixes, - 'info' => help_message, - } - end - - # ゲームシステムの識別子を返す - # @return [String] - def id - self.class::ID - end - - # ゲームシステムの識別子を返す - # @return [String] - # @deprecated 代わりに {#id} を使ってください - def gameType - warn("#{id}: #gameType is deprecated. Please use #id.") - return id - end - - # ゲームシステム名を返す - # @return [String] - def name - self.class::NAME - end - - # ゲームシステム名を返す - # @return [String] - # @deprecated 代わりに {#name} を使ってください - def gameName - warn("#{id}: #gameName is deprecated. Please use #name.") - return name - end - - # ゲームシステム名の読みがなを返す - # @return [String] - def sort_key - self.class::SORT_KEY - end - - # ダイスボットの使い方を返す - # @return [String] - def help_message - self.class::HELP_MESSAGE - end - - # ダイスボットの使い方を返す - # @return [String] - # @deprecated 代わりに {#help_message} を使ってください - def getHelpMessage - warn("#{id}: #getHelpMessage is deprecated. Please use #help_message.") - return help_message - end - - # 接頭辞(反応するコマンド)の配列を返す - # @return [Array] - def prefixes - self.class.prefixes - end - - # @deprecated 代わりに {#prefixes} を使ってください - alias prefixs prefixes - - def setSendMode(m) - @sendMode = m - end - - attr_writer :upperRollThreshold - - def bcdice=(b) - @@bcdice = b - end - - def bcdice - @@bcdice - end - - def rand(max) - @@bcdice.rand(max) - end - - def roll(*args) - @@bcdice.roll(*args) - end - - def marshalSignOfInequality(*args) - @@bcdice.marshalSignOfInequality(*args) - end - - def unlimitedRollDiceType - @@bcdice.unlimitedRollDiceType - end - - attr_reader :sortType - - def setSortType(s) - @sortType = s - end - - def d66(*args) - @@bcdice.getD66Value(*args) - end - - def parren_killer(string) - @@bcdice.parren_killer(string) - end - - def changeText(string) - debug("DiceBot.parren_killer_add called") - string - end - - def dice_command(string, nick_e) - string = @@bcdice.getOriginalMessage if isGetOriginalMessage - - debug('dice_command Begin string', string) - secret_flg = false - - unless self.class.prefixesPattern =~ string - debug('not match in prefixes') - return '1', secret_flg - end - - secretMarker = Regexp.last_match(2) - command = Regexp.last_match(3) - - command = removeDiceCommandMessage(command) - debug("dicebot after command", command) - - debug('match') - - output_msg, secret_flg = rollDiceCommandCatched(command) - output_msg = '1' if output_msg.nil? || output_msg.empty? - secret_flg ||= false - - output_msg = "#{nick_e}: #{output_msg}" if output_msg != '1' - - if secretMarker # 隠しロール - secret_flg = true if output_msg != '1' - end - - return output_msg, secret_flg - end - - # 通常ダイスボットのコマンド文字列は全て大文字に強制されるが、 - # これを嫌う場合にはこのメソッドを true を返すようにオーバーライドすること。 - def isGetOriginalMessage - false - end - - def removeDiceCommandMessage(command) - # "2d6 Attack" のAttackのようなメッセージ部分をここで除去 - command.sub(/[\s ].+/, '') - end - - def rollDiceCommandCatched(command) - result = nil - begin - debug('call rollDiceCommand command', command) - result, secret_flg = rollDiceCommand(command) - rescue StandardError => e - debug("executeCommand exception", e.to_s, e.backtrace.join("\n")) - end - - debug('rollDiceCommand result', result) - - return result, secret_flg - end - - def rollDiceCommand(_command) - nil - end - - def dice_command_xRn(_string, _nick_e) - '' - end - - # @param total [Integer] コマンド合計値 - # @param dice_total [Integer] ダイス目の合計値 - # @param dice_list [Array] ダイスの一覧 - # @param sides [Integer] 振ったダイスの面数 - # @param cmp_op [Symbol] 比較演算子 - # @param target [Integer, String] 目標値の整数か'?' - # @return [String] - def check_result(total, dice_total, dice_list, sides, cmp_op, target) - ret = - case [dice_list.size, sides] - when [1, 100] - check_1D100(total, dice_total, cmp_op, target) - when [1, 20] - check_1D20(total, dice_total, cmp_op, target) - when [2, 6] - check_2D6(total, dice_total, dice_list, cmp_op, target) - end - - return ret unless ret.nil? || ret.empty? - - ret = - case sides - when 10 - check_nD10(total, dice_total, dice_list, cmp_op, target) - when 6 - check_nD6(total, dice_total, dice_list, cmp_op, target) - end - - return ret unless ret.nil? || ret.empty? - - check_nDx(total, cmp_op, target) - end - - # 成功か失敗かを文字列で返す - # - # @param (see #check_result) - # @return [String] - def check_nDx(total, cmp_op, target) - return " > 失敗" if target.is_a?(String) - - # Due to Ruby 1.8 - success = cmp_op == :"!=" ? total != target : total.send(cmp_op, target) - if success - " > 成功" - else - " > 失敗" - end - end - - # @abstruct - # @param (see #check_result) - # @return [nil] - def check_1D100(total, dice_total, cmp_op, target); end - - # @abstruct - # @param (see #check_result) - # @return [nil] - def check_1D20(total, dice_total, cmp_op, target); end - - # @abstruct - # @param (see #check_result) - # @return [nil] - def check_nD10(total, dice_total, dice_list, cmp_op, target); end - - # @abstruct - # @param (see #check_result) - # @return [nil] - def check_2D6(total, dice_total, dice_list, cmp_op, target); end - - # @abstruct - # @param (see #check_result) - # @return [nil] - def check_nD6(total, dice_total, dice_list, cmp_op, target); end - - def get_table_by_2d6(table) - get_table_by_nD6(table, 2) - end - - def get_table_by_1d6(table) - get_table_by_nD6(table, 1) - end - - def get_table_by_nD6(table, count) - get_table_by_nDx(table, count, 6) - end - - def get_table_by_nDx(table, count, diceType) - num, = roll(count, diceType) - - text = getTableValue(table[num - count]) - - return '1', 0 if text.nil? - - return text, num - end - - def get_table_by_1d3(table) - debug("get_table_by_1d3") - - count = 1 - num, = roll(count, 6) - debug("num", num) - - index = ((num - 1) / 2) - debug("index", index) - - text = table[index] - - return '1', 0 if text.nil? - - return text, num - end - - def getD66(isSwap) - return bcdice.getD66(isSwap) - end - - # D66 ロール用(スワップ、たとえば出目が【6,4】なら「64」ではなく「46」とする - def get_table_by_d66_swap(table) - isSwap = true - number = bcdice.getD66(isSwap) - return get_table_by_number(number, table), number - end - - # D66 ロール用 - def get_table_by_d66(table) - dice1, = roll(1, 6) - dice2, = roll(1, 6) - - num = (dice1 - 1) * 6 + (dice2 - 1) - - text = table[num] - - indexText = "#{dice1}#{dice2}" - - return '1', indexText if text.nil? - - return text, indexText - end - - # ダイスロールによるポイント等の取得処理用(T&T悪意、ナイトメアハンター・ディープ宿命、特命転校生エクストラパワーポイントなど) - def getDiceRolledAdditionalText(_n1, _n_max, _dice_max) - '' - end - - # ダイス目による補正処理(現状ナイトメアハンターディープ専用) - def getDiceRevision(_n_max, _dice_max, _total_n) - return '', 0 - end - - # ガンドッグのnD9専用 - def isD9 - false - end - - # シャドウラン4版用グリッチ判定 - def getGrichText(_numberSpot1, _dice_cnt_total, _suc) - '' - end - - # 振り足しを行うべきかを返す - # @param [Integer] loop_count ループ数 - # @return [Boolean] - def should_reroll?(loop_count) - loop_count < @rerollLimitCount || @rerollLimitCount == 0 - end - - # ** 汎用表サブルーチン - def get_table_by_number(index, table, default = '1') - table.each do |item| - number = item[0] - if number >= index - return getTableValue(item[1]) - end - end - - return getTableValue(default) - end - - def getTableValue(data) - if( data.kind_of?( Proc ) ) - # TKfix Procオブジェクトで一旦ブロック化しないとOpalで変換したときに正常に処理されない - lambdaBlock = lambda{ return data.call() } - return lambdaBlock.call() - end - - return data - end - - def analyzeDiceCommandResultMethod(command) - # get~DiceCommandResultという名前のメソッドを集めて実行、 - # 結果がnil以外の場合それを返して終了。 - - # TKfix public_methods(false)だと[]が返ってくる - #methodList = public_methods(false).select do |method| - # /^get.+DiceCommandResult$/ === method.to_s - #end - - methodList = public_methods().select do |method| - /^get.+DiceCommandResult$/ === method.to_s - end - - methodList.each do |method| - result = send(method, command) - return result unless result.nil? - end - - return nil - end - - def get_table_by_nDx_extratable(table, count, diceType) - number, diceText = roll(count, diceType) - text = getTableValue(table[number - count]) - return text, number, diceText - end - - def getTableCommandResult(command, tables, isPrintDiceText = true) - # info = tables[command] - info = tables[command.upcase] # TKfix extratables互換性 - return nil if info.nil? - - name = info[:name] - type = info[:type].upcase - table = info[:table] - - if (type == 'D66') && (@d66Type == 2) - type = 'D66S' - end - - text, number, diceText = - case type - when /(\d+)D(\d+)/ - count = Regexp.last_match(1).to_i - diceType = Regexp.last_match(2).to_i - limit = diceType * count - (count - 1) - table = getTableInfoFromExtraTableText(table, limit) - get_table_by_nDx_extratable(table, count, diceType) - when 'D66', 'D66N' - table = getTableInfoFromExtraTableText(table, 36) - item, value = get_table_by_d66(table) - value = value.to_i - output = item[1] - #diceText = (value / 10).to_s + "," + (value % 10).to_s - diceText = (value / 10).floor.to_s + "," + (value % 10).to_s # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - [output, value, diceText] - when 'D66S' - table = getTableInfoFromExtraTableText(table, 21) - output, value = get_table_by_d66_swap(table) - value = value.to_i - #diceText = (value / 10).to_s + "," + (value % 10).to_s - diceText = (value / 10).floor.to_s + "," + (value % 10).to_s # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - [output, value, diceText] - else - raise "invalid dice Type #{command}" - end - - text = text.gsub("\\n", "\n") - text = @@bcdice.rollTableMessageDiceText(text) - - return nil if text.nil? - - return "#{name}(#{number}[#{diceText}]) > #{text}" if isPrintDiceText && !diceText.nil? - - return "#{name}(#{number}) > #{text}" - end - - def getTableInfoFromExtraTableText(text, count = nil) - if text.is_a?(String) - text = text.split(/\n/) - end - - newTable = text.map do |item| - if item.is_a?(String) && (/^(\d+):(.*)/ === item) - [Regexp.last_match(1).to_i, Regexp.last_match(2)] - else - item - end - end - - unless count.nil? - if newTable.size != count - raise "invalid table size:#{newTable.size}\n#{newTable.inspect}" - end - end - - return newTable - end - - def roll_tables(command, tables) - #table = tables[command] - table = tables[command.upcase] # TKfix extratables互換性 - unless table - return nil - end - - return table.roll(bcdice).to_s - end -end diff --git a/src/src_bcdice/diceBot/DiceBotLoader.rb b/src/src_bcdice/diceBot/DiceBotLoader.rb deleted file mode 100644 index 62bb700e2..000000000 --- a/src/src_bcdice/diceBot/DiceBotLoader.rb +++ /dev/null @@ -1,246 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -# ダイスボットの読み込みを担当するクラス -class DiceBotLoader - # ボットの名前として有効なパターン(クラス名のパターン) - # @see https://docs.ruby-lang.org/ja/1.8.7/doc/spec=2flexical.html#identifier - # @see https://docs.ruby-lang.org/ja/1.8.7/doc/spec=2fvariables.html - # - # * 最初の文字は大文字のアルファベット - # * 2文字目以降は英数字かアンダースコア(_) - BOT_NAME_PATTERN = /\A[A-Z]\w*\z/.freeze - - # 収集時に無視するボット名 - # - # クラス名として有効なもののみ記述する。 - # - # * 最初の文字は大文字のアルファベット - # * 2文字目以降は英数字かアンダースコア(_) - BOT_NAMES_TO_IGNORE = [ - 'DiceBot', - 'DiceBotLoader', - 'DiceBotLoaderList' - ].freeze - - # 有効なゲームタイプかを返す - # @param [String] gameType ゲームタイプ - # @return [Boolean] - # - # Object.const_getで該当するダイスボットのクラスを取得するので、 - # クラス名として有効な名前でなければ、無効なゲームタイプと見なす。 - # - # また、無視するボット名の一覧に含まれるゲームタイプも無効と見なす。 - # - # '.' や '/' はクラス名には含まれないため、ディレクトリトラバーサル攻撃も - # これで防げる。 - def self.validGameType?(gameType) - BOT_NAME_PATTERN === gameType && - !BOT_NAMES_TO_IGNORE.include?(gameType) - end - - # 登録されていないタイトルのダイスボットを読み込む - # @param [String] gameType ゲームタイプ - # @return [DiceBot] ダイスボットが存在した場合 - # @return [nil] 読み込み時にエラーが発生した場合 - def self.loadUnknownGame(gameType) - debug('DiceBotLoader.loadUnknownGame gameType', gameType) - - # TKfix - # unless validGameType?(gameType) - # # クラス名として正しくない名前が指定された場合、後の - # # Object.const_getで必ず失敗するため、読み込みを中止する - # debug('DiceBotLoader.loadUnknownGame: 無効なゲームタイプ', - # gameType) - # return nil - # end - - # # validGameType?によって '.' や '/' といったディレクトリが変わる文字が - # # 含まれていないことが保証されているため、必ずダイスボットディレクトリ - # # 直下のファイルが参照される - # fileName = File.expand_path("#{gameType}.rb", File.dirname(__FILE__)) - - # unless File.exist?(fileName) - # # ファイルが存在しない場合、後のrequireで必ずLoadErrorが発生するため、 - # # 読み込みを中止する - # debug('DiceBotLoader.loadUnknownGame: ダイスボットファイルが存在しません', - # gameType) - # return nil - # end - - begin - # require(fileName) # TKfix dynamic requireは不可 - # TKfix ダイスボットファイルがこのディレクトリ内に存在すると仮定して読み込む - Object.const_get(gameType).new - rescue LoadError, StandardError => e - debug('DiceBotLoader.loadUnknownGame: ダイスボットの読み込みに失敗しました', - e.to_s) - nil - end - end - - # ダイスボットディレクトリに含まれるダイスボットを収集する - # @return [Array] - def self.collectDiceBots - # TKfix - # diceBotDir = File.expand_path(File.dirname(__FILE__)) - - # require("#{diceBotDir}/DiceBot") - - # botFiles = Dir.glob("#{diceBotDir}/*.rb") - # botNames = - # botFiles.map { |botFile| File.basename(botFile, '.rb') } - # validBotNames = - # # 特別な名前のものを除外する - # (botNames - BOT_NAMES_TO_IGNORE). - # # 正しいクラス名になるものだけ選ぶ - # select { |botName| BOT_NAME_PATTERN === botName } - - # bots = validBotNames.map do |botName| - # require("#{diceBotDir}/#{botName}") - # Object.const_get(botName).new - # end - - # return bots.sort_by(&:sort_key) - return [] - end - - # 読み込み処理を初期化する - # @param [String, Array, Regexp] gameTitlePattern ゲームタイトルのパターン - # @param [Hash] options 追加のオプション - # @option options [Array] :filenames 読み込むダイスボットのファイル名の配列 - # @option options [String, Symbol] :class ダイスボットのクラス - # - # できるだけ簡潔に記述できるようにするため、引数のルールを以下のように定める。 - # - # = gameTitlePatternの型 - # gameTitlePatternには原則として文字列、文字列の配列、正規表現を渡すことができる。 - # - # 従来と同様の挙動になるように、指定されたタイトルにマッチさせるときの - # 大文字小文字の扱いを以下のように定める。 - # - # * 文字列、文字列の配列の場合は、大文字小文字を区別しない。 - # * 正規表現の場合は、正規表現のオプションに従う。 - # - # = 引数がgameTitlePatternのみの場合 - # - # gameTitlePatternに文字列、文字列の配列を指定することができる。 - # - # == gameTitlePatternが文字列の場合 - # - # 例: - # - # DiceBotLoader.new('Elysion') - # - # * マッチするタイトルは 'Elysion'(大文字小文字区別なし) - # * 読み込むダイスボットファイルは diceBot/Elysion.rb(大文字小文字区別あり) - # * ダイスボットのクラス名は Elysion(大文字小文字区別あり) - # - # == gameTitlePatternが文字列の配列の場合 - # - # 例: - # - # DiceBotLoader.new(%w(Cthulhu COC)) - # - # * マッチするタイトルは 'Cthulhu', 'COC'(大文字小文字区別なし) - # * 読み込むダイスボットファイルは、最初に指定した diceBot/Cthulhu.rb(大文字小文字区別あり) - # * 最初が正式名称、以下が別名というイメージ - # * ダイスボットのクラス名は Cthulhu(大文字小文字区別あり) - # - # = オプション引数として :filenames のみを渡す場合 - # - # * gameTitlePatternに文字列、文字列の配列、正規表現を指定することができる。 - # * 読み込むダイスボットファイルを指定することができる。 - # - # 例: - # - # DiceBotLoader.new(%w(Elric EL), :filenames => %w(Elric)) - # - # * マッチするタイトルは 'Elric', 'EL'(大文字小文字区別なし) - # * 読み込むダイスボットファイルは diceBot/Elric.rb(大文字小文字区別あり) - # * ダイスボットのクラス名は :filenames で最初に指定した Elric(大文字小文字区別あり) - # - # = オプション引数として :filenames と :class を渡す場合 - # - # * gameTitlePatternに文字列、文字列の配列、正規表現を指定することができる。 - # * 読み込むダイスボットファイルを指定することができる。 - # * 作成するダイスボットのクラス名を指定することができる。 - # - # 例: - # - # DiceBotLoader.new(/\A(?:Parasite\s*Blood|PB)\z/i, - # :filenames => %w(DemonParasite ParasiteBlood), - # :class => :ParasiteBlood) - # - # * 正規表現 /\A(?:Parasite\s*Blood|PB)\z/i と指定されたタイトルをマッチさせる - # * 読み込むダイスボットファイルは、大文字小文字区別ありで - # * diceBot/DemonParasite.rb - # * diceBot/ParasiteBlood.rb - # * ダイスボットのクラス名は ParasiteBlood(大文字小文字区別あり) - def initialize(gameTitlePattern, options = {}) - case gameTitlePattern - when String - # 扱いを簡単にするために1要素の配列に変える - # - # 大文字小文字を区別しないようにするため、すべて小文字に変える - @gameTitlePattern = [gameTitlePattern.downcase] - when Array - # 大文字小文字を区別しないようにするため、すべて小文字に変える - @gameTitlePattern = gameTitlePattern.map(&:downcase) - when Regexp - unless options[:filenames] - raise ArgumentError, - 'options[:filenames] is required when gameTitlePattern is a Regexp' - end - - @gameTitlePattern = gameTitlePattern - else - raise TypeError, - 'gameTitlePattern must be a String or an Array or a Regexp' - end - - # 既定の読み込むファイル名の配列 - # 大文字小文字を区別することに注意 - defaultFilenames = - case gameTitlePattern - when String - [gameTitlePattern] - when Array - [gameTitlePattern.first] - when Regexp - [] - end - - @filenames = options[:filenames] || defaultFilenames - @diceBotClass = options[:class] || @filenames.first - end - - # 指定されたゲームタイトルがパターンとマッチするかを返す - # @return [Boolean] - # - # マッチするパターンが文字列や文字列の配列で指定されていた場合は - # 指定されたゲームタイトルの大文字小文字を区別しないようにする。 - # - # 正規表現の場合は指定されたゲームタイトルをそのまま正規表現と - # マッチさせる。 - def match?(gameTitle) - case @gameTitlePattern - when Array - @gameTitlePattern.include?(gameTitle.downcase) - when Regexp - @gameTitlePattern === gameTitle - end - end - - # ダイスボットを読み込む - # @return [DiceBot] - def loadDiceBot - # TKfix dynamic requireは不可 - #@filenames.each do |filename| - # require_path = File.expand_path(filename, File.dirname(__FILE__)) - # require(require_path) - #end - - Object.const_get(@diceBotClass).new - end -end diff --git a/src/src_bcdice/diceBot/DiceBotLoaderList.rb b/src/src_bcdice/diceBot/DiceBotLoaderList.rb deleted file mode 100644 index 4231b6a1f..000000000 --- a/src/src_bcdice/diceBot/DiceBotLoaderList.rb +++ /dev/null @@ -1,155 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/DiceBotLoader' - -# setGameByTitleで使用する読み込み処理のリスト -class DiceBotLoaderList - # ゲームタイトルから該当する読み込み処理を探す - # @param [String] gameTitle ゲームタイトル - # @return [DiceBotLoader, nil] - def self.find(gameTitle) - # 前後の空白を除いておく - strippedTitle = gameTitle.strip - - return nil if strippedTitle.empty? - - @loaders.find { |loader| loader.match?(strippedTitle) } - end - - # ゲームタイトル別の読み込み処理の一覧 - # @return [Array] - # - # 新しいダイスボットを追加した際は、以下も追加する。 - @loaders = [ - DiceBotLoader.new(%w(Cthulhu COC)), - DiceBotLoader.new(%w(Hieizan COCH)), - DiceBotLoader.new(%w(Elric EL), :filenames => %w(Elric)), - DiceBotLoader.new(%w(RuneQuest RQ)), - DiceBotLoader.new(%w(Chill CH)), - DiceBotLoader.new(%w(RoleMaster RM)), - DiceBotLoader.new(%w(ShadowRun SR)), - DiceBotLoader.new(%w(ShadowRun4 SR4)), - DiceBotLoader.new(%w(Pendragon PD)), - DiceBotLoader.new(/\A(?:SwordWorld|SW)\s*2\.0\z/i, - :filenames => %w(SwordWorld SwordWorld2_0), - :class => :SwordWorld2_0), - DiceBotLoader.new(/\A(?:SwordWorld|SW)\s*2\.5\z/i, - :filenames => %w(SwordWorld SwordWorld2_5), - :class => :SwordWorld2_5), - DiceBotLoader.new(%w(SwordWorld SW)), - DiceBotLoader.new(%w(Arianrhod AR)), - DiceBotLoader.new(/\A(?:Infinite\s*Fantasia|IF)\z/i, - :filenames => %w(InfiniteFantasia)), - DiceBotLoader.new('WARPS'), - DiceBotLoader.new(/\A(?:Demon\s*Parasite|DP)\z/i, - :filenames => %w(DemonParasite)), - DiceBotLoader.new(/\A(?:Parasite\s*Blood|PB)\z/i, - :filenames => %w(DemonParasite ParasiteBlood), - :class => :ParasiteBlood), - DiceBotLoader.new(/\A(?:Gun\s*Dog|GD)\z/i, - :filenames => %w(Gundog)), - DiceBotLoader.new(/\A(?:Gun\s*Dog\s*Zero|GDZ)\z/i, - :filenames => %w(Gundog GundogZero), - :class => :GundogZero), - DiceBotLoader.new(/\A(?:Tunnels\s*&\s*Trolls|TuT)\z/i, - :filenames => %w(TunnelsAndTrolls)), - DiceBotLoader.new(/\A(?:Nightmare\s*Hunter[=\s]*Deep|NHD)\z/i, - :filenames => %w(NightmareHunterDeep)), - DiceBotLoader.new(/\A(?:War\s*Hammer(FRP)?|WH)\z/i, - :filenames => %w(Warhammer)), - DiceBotLoader.new(/\A(?:Phantasm\s*Adventure|PA)\z/i, - :filenames => %w(PhantasmAdventure)), - DiceBotLoader.new(/\A(?:Chaos\s*Flare|CF)\z/i, - :filenames => %w(ChaosFlare)), - DiceBotLoader.new(/\A(?:Cthulhu\s*Tech|CT)\z/i, - :filenames => %w(CthulhuTech)), - DiceBotLoader.new(/\A(?:Tokumei\s*Tenkousei|ToT)\z/i, - :filenames => %w(TokumeiTenkousei)), - DiceBotLoader.new(/\A(?:Shinobi\s*Gami|SG)\z/i, - :filenames => %w(ShinobiGami)), - DiceBotLoader.new(/\A(?:Double\s*Cross|DX)\z/i, - :filenames => %w(DoubleCross)), - DiceBotLoader.new(/\A(?:Sata\s*Supe|SS)\z/i, - :filenames => %w(Satasupe)), - DiceBotLoader.new(/\A(?:Ars\s*Magica|AM)\z/i, - :filenames => %w(ArsMagica)), - DiceBotLoader.new(/\A(?:Dark\s*Blaze|DB)\z/i, - :filenames => %w(DarkBlaze)), - DiceBotLoader.new(/\A(?:Night\s*Wizard|NW)\z/i, - :filenames => %w(NightWizard)), - DiceBotLoader.new('TORG', :filenames => %w(Torg)), - DiceBotLoader.new(/\ATORG1.5\z/i, - :filenames => %w(Torg Torg1_5), - :class => :Torg1_5), - DiceBotLoader.new(/\A(?:hunters\s*moon|HM)\z/i, - :filenames => %w(HuntersMoon)), - DiceBotLoader.new(/\A(?:Blood\s*Crusade|BC)\z/i, - :filenames => %w(BloodCrusade)), - DiceBotLoader.new(/\A(?:Meikyu\s*Kingdom|MK)\z/i, - :filenames => %w(MeikyuKingdom)), - DiceBotLoader.new(/\A(?:Earth\s*Dawn|ED)\z/i, - :filenames => %w(EarthDawn)), - DiceBotLoader.new(/\A(?:(?:Earth\s*Dawn|ED)3)\z/i, - :filenames => %w(EarthDawn EarthDawn3), - :class => :EarthDawn3), - DiceBotLoader.new(/\A(?:(?:Earth\s*Dawn|ED)4)\z/i, - :filenames => %w(EarthDawn EarthDawn4), - :class => :EarthDawn4), - DiceBotLoader.new(/\A(?:Embryo\s*Machine|EM)\z/i, - :filenames => %w(EmbryoMachine)), - DiceBotLoader.new(/\A(?:Gehenna\s*An|GA)\z/i, - :filenames => %w(GehennaAn)), - DiceBotLoader.new(/\A(?:Magica\s*Logia|ML)\z/i, - :filenames => %w(MagicaLogia)), - DiceBotLoader.new(%w(Nechronica NC)), - DiceBotLoader.new(/\A(?:Meikyu\s*Days|MD)\z/i, - :filenames => %w(MeikyuDays)), - DiceBotLoader.new(%w(Peekaboo PK)), - DiceBotLoader.new(/\A(?:Barna\s*Kronika|BK)\z/i, - :filenames => %w(BarnaKronika)), - DiceBotLoader.new(%w(RokumonSekai2 RS2)), - DiceBotLoader.new(/\A(?:Monotone\s*Museum|MM)\z/i, - :filenames => %w(MonotoneMuseum)), - DiceBotLoader.new(/\AZettai\s*Reido\z/i, :filenames => %w(ZettaiReido)), - DiceBotLoader.new(/\AEclipse\s*Phase\z/i, - :filenames => %w(EclipsePhase)), - DiceBotLoader.new('NJSLYRBATTLE', :filenames => %w(NjslyrBattle)), - DiceBotLoader.new(%w(ShinMegamiTenseiKakuseihen SMTKakuseihen)), - DiceBotLoader.new('Ryutama'), - DiceBotLoader.new('CardRanker'), - DiceBotLoader.new('ShinkuuGakuen'), - DiceBotLoader.new('CrashWorld'), - DiceBotLoader.new('WitchQuest'), - DiceBotLoader.new('BattleTech'), - DiceBotLoader.new('Elysion'), - DiceBotLoader.new('GeishaGirlwithKatana'), - DiceBotLoader.new('GURPS', :filenames => %w(Gurps)), - DiceBotLoader.new('GurpsFW'), - DiceBotLoader.new('FilledWith'), - DiceBotLoader.new('HarnMaster'), - DiceBotLoader.new('Insane'), - DiceBotLoader.new('KillDeathBusiness'), - DiceBotLoader.new('Kamigakari'), - DiceBotLoader.new('RecordOfSteam'), - DiceBotLoader.new('Oukahoushin3rd'), - DiceBotLoader.new('BeastBindTrinity'), - DiceBotLoader.new('BloodMoon'), - DiceBotLoader.new('Utakaze'), - DiceBotLoader.new('EndBreaker'), - DiceBotLoader.new('KanColle'), - DiceBotLoader.new('GranCrest'), - DiceBotLoader.new('HouraiGakuen'), - DiceBotLoader.new('TwilightGunsmoke'), - DiceBotLoader.new('Garako'), - DiceBotLoader.new('ShoujoTenrankai'), - DiceBotLoader.new('GardenOrder'), - DiceBotLoader.new('DarkSouls'), - DiceBotLoader.new('SterileLife'), - DiceBotLoader.new('Paradiso'), - DiceBotLoader.new('SamsaraBallad'), - DiceBotLoader.new('GoblinSlayer'), - DiceBotLoader.new('RyuTuber'), - DiceBotLoader.new('None', :filenames => [], :class => :DiceBot) - ] -end diff --git a/src/src_bcdice/diceBot/DiceOfTheDead.rb b/src/src_bcdice/diceBot/DiceOfTheDead.rb deleted file mode 100644 index ce90958fe..000000000 --- a/src/src_bcdice/diceBot/DiceOfTheDead.rb +++ /dev/null @@ -1,112 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class DiceOfTheDead < DiceBot - # ゲームシステムの識別子 - ID = 'DiceOfTheDead' - - # ゲームシステム名 - NAME = 'ダイス・オブ・ザ・デッド' - - # ゲームシステム名の読みがな - SORT_KEY = 'たいすおふさてつと' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 && bot.should_reroll?(loop_count) - values = Array.new(num_of_dice) { bot.roll(1, 10)[0] } - - value_group = ValueGroup.new(values, @critical_value) - value_groups.push(value_group) - - # 次回はクリティカル発生数と等しい個数のダイスを振る - # [3rd ルールブック1 p. 185] - num_of_dice = value_group.num_of_critical_occurrences - - loop_count += 1 - end - - return result_str(value_groups) - end - - private - - # 数式表記を返す - # @return [String] - def node_expression - lhs = "#{@num}DX#{@critical_value}#{@modifier_str}" - - return @target_value ? "#{lhs}>=#{@target_value}" : lhs - end - - # 判定結果の文字列を返す - # @param [Array] value_groups 出目のグループの配列 - # @return [String] - def result_str(value_groups) - fumble = value_groups[0].values.all? { |value| value == 1 } - # TODO: Ruby 2.4以降では Array#sum が使える - sum = value_groups.map(&:max).reduce(0, &:+) - achieved_value = fumble ? 0 : (sum + @modifier) - - parts = [ - "(#{@expression})", - "#{value_groups.join('+')}#{@modifier_str}", - achieved_value_with_if_fumble(achieved_value, fumble), - compare_result(achieved_value, fumble) - ] - - return parts.compact.join(' > ') - end - - # ファンブルかどうかを含む達成値の表記を返す - # @param [Integer] achieved_value 達成値 - # @param [Boolean] fumble ファンブルしたか - # @return [String] - def achieved_value_with_if_fumble(achieved_value, fumble) - fumble ? "#{achieved_value} (ファンブル)" : achieved_value.to_s - end - - # 達成値と目標値を比較した結果を返す - # @param [Integer] achieved_value 達成値 - # @param [Boolean] fumble ファンブルしたか - # @return [String, nil] - def compare_result(achieved_value, fumble) - return nil unless @target_value - - # ファンブル時は自動失敗 - # [3rd ルールブック1 pp. 186-187] - return '失敗' if fumble - - # 達成値が目標値以上ならば行為判定成功 - # [3rd ルールブック1 p. 187] - return achieved_value >= @target_value ? '成功' : '失敗' - end - end - - # 出目のグループを表すクラス - class ValueGroup - # 出目の配列 - # @return [Array] - attr_reader :values - # クリティカル値 - # @return [Integer] - attr_reader :critical_value - - # 出目のグループを初期化する - # @param [Array] values 出目の配列 - # @param [Integer] critical_value クリティカル値 - def initialize(values, critical_value) - @values = values.sort - @critical_value = critical_value - end - - # 出目のグループの文字列表記を返す - # @return [String] - def to_s - "#{max}[#{@values.join(',')}]" - end - - # 出目のグループ中の最大値を返す - # @return [Integer] - # - # クリティカル値以上の出目が含まれていた場合は10を返す。 - # [3rd ルールブック1 pp. 185-186] - def max - @values.any? { |value| critical?(value) } ? 10 : @values.max - end - - # クリティカルの発生数を返す - # @return [Integer] - def num_of_critical_occurrences - @values. - select { |value| critical?(value) }. - length - end - - private - - # クリティカルが発生したかを返す - # @param [Integer] value 出目 - # @return [Boolean] - # - # クリティカル値以上の値が出た場合、クリティカルとする。 - # [3rd ルールブック1 pp. 185-186] - def critical?(value) - value >= @critical_value - end - end - - def check_nD10(total, _dice_total, dice_list, cmp_op, target) - return '' if target == '?' - return '' unless cmp_op == :>= - - if dice_list.count(1) == dice_list.size - " > ファンブル" - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - # ダイスボット固有コマンドの処理を行う - # @param [String] command コマンド - # @return [String] ダイスボット固有コマンドの結果 - # @return [nil] 無効なコマンドだった場合 - def rollDiceCommand(command) - if (dx = parse_dx(command)) - return dx.execute(self) - end - - if command == 'ET' - return roll_emotion_table() - end - - return nil - end - - private - - # OD Tool式の成功判定コマンドの正規表現 - # - # キャプチャ内容は以下のとおり: - # - # 1. ダイス数 - # 2. 修正値 - # 3. クリティカル値 - # 4. 達成値 - DX_OD_TOOL_RE = /\A(\d+)DX([-+]\d+(?:[-+*]\d+)*)?@(\d+)(?:>=(\d+))?\z/io.freeze - - # 疾風怒濤式の成功判定コマンドの正規表現 - # - # キャプチャ内容は以下のとおり: - # - # 1. ダイス数 - # 2. クリティカル値 - # 3. 修正値 - # 4. 達成値 - DX_SHIPPU_DOTO_RE = /\A(\d+)DX(\d+)?([-+]\d+(?:[-+*]\d+)*)?(?:>=(\d+))?\z/io.freeze - - # 成功判定コマンドの構文解析を行う - # @param [String] command コマンド文字列 - # @return [DX, nil] - def parse_dx(command) - case command - when DX_OD_TOOL_RE - return parse_dx_od(Regexp.last_match) - when DX_SHIPPU_DOTO_RE - return parse_dx_shippu_doto(Regexp.last_match) - end - - return nil - end - - # OD Tool式の成功判定コマンドの正規表現マッチ情報からノードを作る - # @param [MatchData] m 正規表現のマッチ情報 - # @return [DX] - def parse_dx_od(m) - num = m[1].to_i - modifier = m[2] ? ArithmeticEvaluator.new.eval(m[2]) : 0 - critical_value = m[3] ? m[3].to_i : 10 - - target_value = m[4] && m[4].to_i - - return DX.new(num, critical_value, modifier, target_value) - end - - # 疾風怒濤式の成功判定コマンドの正規表現マッチ情報からノードを作る - # @param [MatchData] m 正規表現のマッチ情報 - # @return [DX] - def parse_dx_shippu_doto(m) - num = m[1].to_i - critical_value = m[2] ? m[2].to_i : 10 - modifier = m[3] ? ArithmeticEvaluator.new.eval(m[3]) : 0 - - target_value = m[4] && m[4].to_i - - return DX.new(num, critical_value, modifier, target_value) - end - - # 感情表を振る - # - # ポジティブとネガティブの両方を振って、表になっている側に○を付ける。 - # - # @return [String] - def roll_emotion_table - pos_result = POSITIVE_EMOTION_TABLE.roll(bcdice) - neg_result = NEGATIVE_EMOTION_TABLE.roll(bcdice) - - positive = roll(1, 2)[0] == 1 - pos_neg_text = - if positive - ["○#{pos_result.content}", neg_result.content] - else - [pos_result.content, "○#{neg_result.content}"] - end - - output_parts = [ - "感情表(#{pos_result.sum}-#{neg_result.sum})", - pos_neg_text.join(' - ') - ] - - return output_parts.join(' > ') - end - - # 感情表(ポジティブ) - POSITIVE_EMOTION_TABLE = RangeTable.new( - '感情表(ポジティブ)', - '1D100', - [ - # [0, '傾倒(けいとう)'], - [1..5, '好奇心(こうきしん)'], - [6..10, '憧憬(どうけい)'], - [11..15, '尊敬(そんけい)'], - [16..20, '連帯感(れんたいかん)'], - [21..25, '慈愛(じあい)'], - [26..30, '感服(かんぷく)'], - [31..35, '純愛(じゅんあい)'], - [36..40, '友情(ゆうじょう)'], - [41..45, '慕情(ぼじょう)'], - [46..50, '同情(どうじょう)'], - [51..55, '遺志(いし)'], - [56..60, '庇護(ひご)'], - [61..65, '幸福感(こうふくかん)'], - [66..70, '信頼(しんらい)'], - [71..75, '執着(しゅうちゃく)'], - [76..80, '親近感(しんきんかん)'], - [81..85, '誠意(せいい)'], - [86..90, '好意(こうい)'], - [91..95, '有為(ゆうい)'], - [96..100, '尽力(じんりょく)'], - # [101, '懐旧(かいきゅう)'], - # [102, '任意(にんい)'], - ] - ).freeze - - # 感情表(ネガティブ) - NEGATIVE_EMOTION_TABLE = RangeTable.new( - '感情表(ネガティブ)', - '1D100', - [ - # [0, '侮蔑(ぶべつ)'], - [1..5, '食傷(しょくしょう)'], - [6..10, '脅威(きょうい)'], - [11..15, '嫉妬(しっと)'], - [16..20, '悔悟(かいご)'], - [21..25, '恐怖(きょうふ)'], - [26..30, '不安(ふあん)'], - [31..35, '劣等感(れっとうかん)'], - [36..40, '疎外感(そがいかん)'], - [41..45, '恥辱(ちじょく)'], - [46..50, '憐憫(れんびん)'], - [51..55, '偏愛(へんあい)'], - [56..60, '憎悪(ぞうお)'], - [61..65, '隔意(かくい)'], - [66..70, '嫌悪(けんお)'], - [71..75, '猜疑心(さいぎしん)'], - [76..80, '厭気(いやけ)'], - [81..85, '不信感(ふしんかん)'], - [86..90, '不快感(ふかいかん)'], - [91..95, '憤懣(ふんまん)'], - [96..100, '敵愾心(てきがいしん)'], - # [101, '無関心(むかんしん)'], - # [102, '任意(にんい)'], - ] - ).freeze -end diff --git a/src/src_bcdice/diceBot/DoubleCross_Korean.rb b/src/src_bcdice/diceBot/DoubleCross_Korean.rb deleted file mode 100644 index 8c73afcdc..000000000 --- a/src/src_bcdice/diceBot/DoubleCross_Korean.rb +++ /dev/null @@ -1,372 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/DiceBot' -require 'utils/ArithmeticEvaluator' -require 'utils/modifier_formatter' -require 'utils/range_table' - -class DoubleCross_Korean < DiceBot - # ゲームシステムの識別子 - ID = 'DoubleCross:Korean' - - # ゲームシステム名 - NAME = '더블크로스2nd,3rd' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Korean:더블크로스' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 && bot.should_reroll?(loop_count) - values = Array.new(num_of_dice) { bot.roll(1, 10)[0] } - - value_group = ValueGroup.new(values, @critical_value) - value_groups.push(value_group) - - # 次回はクリティカル発生数と等しい個数のダイスを振る - # [3rd ルールブック1 p. 185] - num_of_dice = value_group.num_of_critical_occurrences - - loop_count += 1 - end - - return result_str(value_groups) - end - - private - - # 数式表記を返す - # @return [String] - def node_expression - lhs = "#{@num}DX#{@critical_value}#{@modifier_str}" - - return @target_value ? "#{lhs}>=#{@target_value}" : lhs - end - - # 判定結果の文字列を返す - # @param [Array] value_groups 出目のグループの配列 - # @return [String] - def result_str(value_groups) - fumble = value_groups[0].values.all? { |value| value == 1 } - # TODO: Ruby 2.4以降では Array#sum が使える - sum = value_groups.map(&:max).reduce(0, &:+) - achieved_value = fumble ? 0 : (sum + @modifier) - - parts = [ - "(#{@expression})", - "#{value_groups.join('+')}#{@modifier_str}", - achieved_value_with_if_fumble(achieved_value, fumble), - compare_result(achieved_value, fumble) - ] - - return parts.compact.join(' > ') - end - - # ファンブルかどうかを含む達成値の表記を返す - # @param [Integer] achieved_value 達成値 - # @param [Boolean] fumble ファンブルしたか - # @return [String] - def achieved_value_with_if_fumble(achieved_value, fumble) - fumble ? "#{achieved_value} (펌블)" : achieved_value.to_s - end - - # 達成値と目標値を比較した結果を返す - # @param [Integer] achieved_value 達成値 - # @param [Boolean] fumble ファンブルしたか - # @return [String, nil] - def compare_result(achieved_value, fumble) - return nil unless @target_value - - # ファンブル時は自動失敗 - # [3rd ルールブック1 pp. 186-187] - return '실패' if fumble - - # 達成値が目標値以上ならば行為判定成功 - # [3rd ルールブック1 p. 187] - return achieved_value >= @target_value ? '성공' : '실패' - end - end - - # 出目のグループを表すクラス - class ValueGroup - # 出目の配列 - # @return [Array] - attr_reader :values - # クリティカル値 - # @return [Integer] - attr_reader :critical_value - - # 出目のグループを初期化する - # @param [Array] values 出目の配列 - # @param [Integer] critical_value クリティカル値 - def initialize(values, critical_value) - @values = values.sort - @critical_value = critical_value - end - - # 出目のグループの文字列表記を返す - # @return [String] - def to_s - "#{max}[#{@values.join(',')}]" - end - - # 出目のグループ中の最大値を返す - # @return [Integer] - # - # クリティカル値以上の出目が含まれていた場合は10を返す。 - # [3rd ルールブック1 pp. 185-186] - def max - @values.any? { |value| critical?(value) } ? 10 : @values.max - end - - # クリティカルの発生数を返す - # @return [Integer] - def num_of_critical_occurrences - @values. - select { |value| critical?(value) }. - length - end - - private - - # クリティカルが発生したかを返す - # @param [Integer] value 出目 - # @return [Boolean] - # - # クリティカル値以上の値が出た場合、クリティカルとする。 - # [3rd ルールブック1 pp. 185-186] - def critical?(value) - value >= @critical_value - end - end - - def check_nD10(total, _dice_total, dice_list, cmp_op, target) - return '' if target == '?' - return '' unless cmp_op == :>= - - if dice_list.count(1) == dice_list.size - " > 펌블" - elsif total >= target - " > 성공" - else - " > 실패" - end - end - - # ダイスボット固有コマンドの処理を行う - # @param [String] command コマンド - # @return [String] ダイスボット固有コマンドの結果 - # @return [nil] 無効なコマンドだった場合 - def rollDiceCommand(command) - if (dx = parse_dx(command)) - return dx.execute(self) - end - - if command == 'ET' - return roll_emotion_table() - end - - return nil - end - - private - - # OD Tool式の成功判定コマンドの正規表現 - # - # キャプチャ内容は以下のとおり: - # - # 1. ダイス数 - # 2. 修正値 - # 3. クリティカル値 - # 4. 達成値 - DX_OD_TOOL_RE = /\A(\d+)DX([-+]\d+(?:[-+*]\d+)*)?@(\d+)(?:>=(\d+))?\z/io.freeze - - # 疾風怒濤式の成功判定コマンドの正規表現 - # - # キャプチャ内容は以下のとおり: - # - # 1. ダイス数 - # 2. クリティカル値 - # 3. 修正値 - # 4. 達成値 - DX_SHIPPU_DOTO_RE = /\A(\d+)DX(\d+)?([-+]\d+(?:[-+*]\d+)*)?(?:>=(\d+))?\z/io.freeze - - # 成功判定コマンドの構文解析を行う - # @param [String] command コマンド文字列 - # @return [DX, nil] - def parse_dx(command) - case command - when DX_OD_TOOL_RE - return parse_dx_od(Regexp.last_match) - when DX_SHIPPU_DOTO_RE - return parse_dx_shippu_doto(Regexp.last_match) - end - - return nil - end - - # OD Tool式の成功判定コマンドの正規表現マッチ情報からノードを作る - # @param [MatchData] m 正規表現のマッチ情報 - # @return [DX] - def parse_dx_od(m) - num = m[1].to_i - modifier = m[2] ? ArithmeticEvaluator.new.eval(m[2]) : 0 - critical_value = m[3] ? m[3].to_i : 10 - - target_value = m[4] && m[4].to_i - - return DX.new(num, critical_value, modifier, target_value) - end - - # 疾風怒濤式の成功判定コマンドの正規表現マッチ情報からノードを作る - # @param [MatchData] m 正規表現のマッチ情報 - # @return [DX] - def parse_dx_shippu_doto(m) - num = m[1].to_i - critical_value = m[2] ? m[2].to_i : 10 - modifier = m[3] ? ArithmeticEvaluator.new.eval(m[3]) : 0 - - target_value = m[4] && m[4].to_i - - return DX.new(num, critical_value, modifier, target_value) - end - - # 感情表を振る - # - # ポジティブとネガティブの両方を振って、表になっている側に○を付ける。 - # - # @return [String] - def roll_emotion_table - pos_result = POSITIVE_EMOTION_TABLE.roll(bcdice) - neg_result = NEGATIVE_EMOTION_TABLE.roll(bcdice) - - positive = roll(1, 2)[0] == 1 - pos_neg_text = - if positive - ["○#{pos_result.content}", neg_result.content] - else - [pos_result.content, "○#{neg_result.content}"] - end - - output_parts = [ - "감정표(#{pos_result.sum}-#{neg_result.sum})", - pos_neg_text.join(' - ') - ] - - return output_parts.join(' > ') - end - - # 感情表(ポジティブ) - POSITIVE_EMOTION_TABLE = RangeTable.new( - '감정표(포지티브)', - '1D100', - [ - # [0, '傾倒(けいとう)'], - [1..5, '호기심'], - [6..10, '동경'], - [11..15, '존경'], - [16..20, '연대감'], - [21..25, '자애'], - [26..30, '감복'], - [31..35, '순애'], - [36..40, '우정'], - [41..45, '모정(慕情)'], - [46..50, '동정'], - [51..55, '유지(遺志)'], - [56..60, '비호'], - [61..65, '행복감'], - [66..70, '신뢰'], - [71..75, '집착'], - [76..80, '친근감'], - [81..85, '성의'], - [86..90, '호의'], - [91..95, '유위(有為)'], - [96..100, '진력'], - # [101, '懐旧(かいきゅう)'], - # [102, '任意(にんい)'], - ] - ).freeze - - # 感情表(ネガティブ) - NEGATIVE_EMOTION_TABLE = RangeTable.new( - '감정표(네거티브)', - '1D100', - [ - # [0, '侮蔑(ぶべつ)'], - [1..5, '식상'], - [6..10, '위협'], - [11..15, '질투'], - [16..20, '회개'], - [21..25, '공포'], - [26..30, '불안'], - [31..35, '열등감'], - [36..40, '소외감'], - [41..45, '치욕'], - [46..50, '연민'], - [51..55, '편애'], - [56..60, '증오'], - [61..65, '격의'], - [66..70, '혐오'], - [71..75, '시의심'], - [76..80, '싫음'], - [81..85, '불신감'], - [86..90, '불쾌감'], - [91..95, '분만(憤懣)'], - [96..100, '적개심'], - # [101, '無関心(むかんしん)'], - # [102, '任意(にんい)'], - ] - ).freeze -end diff --git a/src/src_bcdice/diceBot/Dracurouge.rb b/src/src_bcdice/diceBot/Dracurouge.rb deleted file mode 100644 index 7c0055468..000000000 --- a/src/src_bcdice/diceBot/Dracurouge.rb +++ /dev/null @@ -1,1848 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Dracurouge < DiceBot - # ゲームシステムの識別子 - ID = 'Dracurouge' - - # ゲームシステム名 - NAME = 'ドラクルージュ' - - # ゲームシステム名の読みがな - SORT_KEY = 'とらくるうしゆ' - - # ダイスボットの使い方 - HELP_MESSAGE = < "D", - :name => "ドラク", - :table => %w{ - 空に輝く紅い月を仰ぐ - 小さくため息をつく - 相手を見下すように見る - じっと目を合わせ語りかける - かすかに微笑んで見せる - 懐から蝙蝠が飛び立つ - 頭上を蝙蝠が渦巻くように飛ぶ - 眉を寄せると共に、目が紅く光る - 手の中のワインを一口すする - 全身から薄紅色のオーラを発する - 不敵な笑みを浮かべる - 風もなく髪が舞う - 飽きた目で相手を見据える - 足元に小さなつむじ風が起こる - 激情や緊張感に髪が逆立つ - 紅い月の光を浴び、目を閉じる - 武器を掲げ、誓いの音頭を取る - 己の紋章をじっと見つめる - }}, - {:type => "R", - :name => "ローゼンブルク", - :table => %w{ - 鼻で笑う - 前髪をかき上げる - 己の髪をいじる - 一人小さく笑う - ハミングで歌を口ずさむ - 片足を軸に、くるりと回る - 花弁を具現化し散らす - 衣装や鎧の色や装飾を変える - 己に酔い、目を閉じる - 具現化した華を手の中で弄ぶ - 気になる相手を口説こうとする - 肩をすくめる - 己の武器に口づけをする - 誘うように誰かの手を取る - 楽器を具現化し音を奏でる - 相手にウィンクする - 衣装についた埃を払う - マントから無数の蝶が飛び立つ - }}, - {:type => "H", - :name => "ヘルズガルド", - :table => %w{ - 自粛を呼びかける咳払いをする - 眉をひそめる - 小言を言う - 無表情で相手を観察する - 足元に小さな地獄門が生じる - 周囲にわずかな怨嗟の声が響く - 咎めるような目を向ける - 直立不動の姿勢で立つ - 呆れた様子でため息をつく - 突然、振り返って睨む - 周囲の空気が凍りつく - 胸に手を当て、己を落ち着かせる - 手の中に具現化した鎖を弄ぶ - 周囲を厳しい目で見渡す - 仲間に疑いの視線を向ける - 感情に合わせ周囲に鎖が具現化 - 堕落について忠告する - 冷たい視線で相手を一瞥する - }}, - {:type => "M", - :name => "ダストハイム", - :table => %w{ - 眉を寄せて考え込む - 周りを値踏みする目で見る - 手元に本を具現化し書き込む - つまらなそうに眺める - 落ち着いた歩調で近づく - 目を閉じ、過去に想いを馳せる - 歩む跡、かすかな霧が舞う - 苦笑を浮かべて歩み寄る - 現状を分析する独り言を言う - 興味深そうに質問する - 目の前の様式に文句を言う - 無感動に会釈をする - 手の中に具現化したペンを弄ぶ - 目を見開き、感心する - 本、袖、マントなどで口元を隠す - 宙に浮かび、すべるように進む - 無感情に状況を検分する - 一瞬、姿が霧に包まれぼやける - }}, - {:type => "A", - :name => "アヴァローム", - :table => %w{ - 欠伸を噛み殺す - 頭をかく - 手元に生じた果実を食べる - 人懐っこい笑みを浮かべる - 夜鳥が肩にとまって来る - 黒猫が足元にじゃれて来る - 周囲を妖精の光が舞う - 瞬時に相手の側に現れる - 瞬時に相手から離れる - 虫や植物に気を取られる - 無垢な笑みを見せる - うっかり誰かを巻き込んでころぶ - 誰かに甘えるようにもたれかかる - 笑みを浮かべながら頷く - 小さく首をかしげる - 無数の黒い鳥の羽根が宙を舞う - 果実を取り出して食べる - 思わせぶりな言葉や仕草をする - }}, - {:type => "N", - :name => "ノスフェラス", - :table => %w{ - 冥王領の方角を睨む - 舌打ちをする - 俯いて床や地面を睨む - 無意識に涙が伝う - 唇を噛む - 胸を押さえじっと考える - 首を打ち振って邪念を払う - 内心の怒りに険しい貌となる - 毅然とした態度で立ち向かう - 渇いた笑い声を漏らす - 己の血族を貶める言葉を紡ぐ - 静かな怒りと共に目が青白く光る - 野の花に触れ、それを枯らす - 疲れた様子で淡く光る吐息を吐く - 己の紋章をぼんやりと見つめる - 自嘲的に小さく笑う - 疲れた目でぼんやりと他を見る - 何か決心したように顔を上げる - }}, - {:type => "G", - :name => "ゲイズヴァルト", - :table => %w{ - 相手を見下すように見る - 激情に合わせ頭髪が - 高らかに自らの血統を名乗る - 武器を具現化し、掲げる - 他者を睨みつける - 相対する者が、圧迫感を感じる - じっと目を閉じる - 他に威圧的な態度をとる - 不敵な笑みを浮かべる - 片目に手を当て、眉を寄せる - 目が一瞬だけ異様に光る - 鋭い視線を周囲に巡らせる - 髪が淡く光る - 背後の者が、貴卿の視線を感じる - 眼球の白目が異様な色に光る - 目隠しを具現化して目を隠す - 余裕のある笑みを浮かべる - 目から光が炎のように噴き上がる - }}, - - {:type => "K", - :name => "カインシルト", - :table => %w{ - 両手で顔を覆う - 逆立つ小さく肩を落とす - 過去を思い出し、眉をひそめる - 疲れ切ったように座り込む - 己の紋章に触れ、ためいきをつく - ワインの水面をじっと見つめる - 疲れ、渇いた笑みを浮かべる - 居心地悪そうに下を向く - 故郷の方角をちらりと見る - 衣装の襟や裾をいじる - 他の騎士から少し距離をとり、離れる - 他の騎士を、自虐的に褒める - 胸に手を当て、沈思黙考する - 己のかつての血統の名を呟く - 沈痛な面持ちで空を見上げる - 誇りを持って、己の紋章を掲げる - 己の罪や信仰を吐露する - 血統を捨てた理由について語る - }}, - - ] - - return infos - end - - def getReactionInfoStyle - infos = - [ - {:type => "F", - :name => "領主", - :table => %w{ - 相手の目を覗き心を探る - 己の領地に想いを馳せる - 従者を侍らせる - 従者の世話を受ける - 好ましい相手を手招きする - 憂いに満ちた物思いにふける - 重々しく頷く - 優しげな微笑を浮かべる - ちらりと己の紋章を示す - ワインの杯を他の騎士に渡す - じっと風景を眺める - 手の中にチェスの駒を具現化する - 胸を張り、自信を持って発言する - 速やかに謝罪する - 他の騎士を正面から褒める - 他の騎士の髪や頬を撫でる - 重々しく名乗りを上げる - 口元を隠しつつ上品に笑う - }}, - {:type => "G", - :name => "近衛", - :table => %w{ - 主の傍にそっと寄り添う - 紋章の刻まれた盾を掲げる - 武器を構えて上品に一礼する - 己の盾の紋章を指でなぞる - 他の騎士に寄り添う - 主の背後から相手を睨む - 主の前、または傍らにひざまずく - きまり悪そうに顔を赤く染める - 誰かの前に立ちはだかる - 落ち着かなげに歩き回る - はにかんだ笑みを浮かべる - 緊張した視線を周囲に巡らす - 心の中で他の騎士と試合をする - じっと動かず控えている - 主をじっと見つめる - 主を褒めたたえる - 主の袖を握りしめる - 主に対する、周囲の態度を咎める - }}, - {:type => "R", - :name => "遍歴", - :table => %w{ - かつての戦いについて語る - 風に髪をなびかせる - 具現化した乗騎を撫でる - 仲間の肩を叩く、あるいは抱く - 爽やかに笑う - 高らかに名乗りをあげる - 周囲に積極的に話しかける - 己の名に誓い、約束をする - 大げさに誰かを褒めたたえる - 他の騎士に手合わせを乞う - マントを大げさにひるがえす - 相手を褒めそやし口づけを求める - 己の故郷を思い出す - 己の紋章について語る - 他の騎士と世間話をする - 困ったように小さく唸る - 格上の前に跪いて礼を尽くす - 格下や人間に微笑みかける - }}, - {:type => "W", - :name => "賢者", - :table => %w{ - 相手を推し測るように見つめる - メガネを具現化してかける - わずかな点に目を留める - 大げさにため息をついて見せる - 目を閉じて思索にふける - 他の騎士に助言する - ごまかすように咳払いする - わずかな会釈をする - 他の騎士に目で合図をする - 謎めいた笑みを浮かべる - 空に浮かぶ星々を眺める - 深い知識で詳しい説明をする - 未来について占ってみる - ささやかな予言をする - 噂の類を他の騎士に囁く - ふとした品を興味深く観察する - 月を見上げドラクルを褒め讃える - 他の騎士の感情をいさめる - }}, - {:type => "J", - :name => "狩人", - :table => %w{ - “敵”を思い出し険しい目になる - 唾を吐く - 具現化した武器を撫でる - 陰鬱な目で虚空を睨む - 裾から現れた蛇か蜘蛛を撫でる - 思いつめた目で夜空を見る - 己の武器を舐めて見せる - 暗い笑みを浮かべる - 物陰に隠れる - 他の騎士の紋章を観察する - 空気を読まない発言をする - 突然振り向いて背後に警戒する - 過去の無念に血涙を流す - 鮫のように笑う - その場にいない騎士を嘲笑う - 他の騎士とのへだたりを感じる - ぼそりと名乗りをあげる - 格下を見下した目で見る - }}, - {:type => "N", - :name => "夜獣", - :table => %w{ - 獣のような荒い呼吸をする - 潤んだ上目遣いで相手を見る - 俯いて深呼吸する - 壁や床に爪を立てて引っかく - 己に言い聞かせる独り言を言う - 堕落の兆しをじっと見る - 他の騎士から目をそらす - 他の騎士の機嫌を窺う - 相手を睨み唸る - 己の指先をちろりと舐め上げる - 他の騎士から距離を取り離れる - 獰猛な笑みを浮かべる - 己の肌を、爪などで傷つける - こっそり舌なめずりをする - 妖しい流し目を送る - 哀しげな目で己の紋章を見る - 獲物を狙う目で、他の騎士を見る - 自虐的な言葉をつぶやく - }}, - {:type => "E", - :name => "将軍", - :table => %w{ - 机や壁を叩きつつ、激昂する - 失敗した部下をたしなめる - 凶悪な笑みを浮かべる - 音を立てて踵をそろえ、直立する - 不機嫌そうに酒杯をあおる - 壁や卓上に周辺地図を具現化する - 口をつぐみ、厳めしい顔をする - 部下から情報を耳打ちされる - 他の騎士を品定めするように見る - 内密の話のため、移動する - 他の騎士に助言する - 他者をいさめる - 目を閉じ、戦場に想いを馳せる - 部下や民に酒食をふるまう - かつての戦場について語る - 戦術について他の騎士と語る - 他者を激励する - 部下や民からの報告を聞く - }}, - {:type => "B", - :name => "僧正", - :table => %w{ - 深々とため息をつく - 紅い月を眺め、涙を溢れさせる - 他者を咎め説教する - その場に跪き、月へ祈る - 他の騎士を心配する - 教典の一文を読み上げる - 他の騎士や民を諌める - 教典を具現化し、他者に手渡す - 真祖へ感謝の言葉を述べる - 壇上などに真祖の印を具現化する - 騎士や民を微笑み眺める - 他者の言葉に大いに感動する - 他の騎士の行いを戒める - 相手を慈しむ微笑みを浮かべる - 他者を大いに褒める - 他者をいたわるように撫でる - 真祖の印を強く握りしめる - 天の紅き月へ感謝を捧げる - }}, - {:type => "H", - :name => "空駆", - :table => %w{ - 乗騎が他を退け、過剰に守ろうとする - 粗相した乗騎を、軽く叱る - 他の者らを警戒する乗騎をなだめる - 他の者に心許す乗騎に嫉妬する - 己の乗騎と、子供のように戯れる - 乗騎に乗り、共に駆ける素晴らしさを語る - 高らかに、己と乗騎の名乗りをあげる - つい礼法を忘れ、誰かの髪を撫でる - 乗騎にもたれかかり、目を細める - 周りと話しつつも、己の乗騎を気に掛ける - 己の乗騎に語りかける - 己の乗騎と、食事を分け合う - 己の乗騎を褒められて照れる - 己の乗騎の頼もしさについて語る - 様々な装飾を具現化し、己の乗騎を飾る - 具現化ではない小鳥や小動物が集まる - 乗騎を抱きしめて撫でながら褒める - 己の乗騎を得た次第について語る - }}, - {:type => "K", - :name => "船長", - :table => %w{ - 少しばかり下世話な冗句を言う - 礼式に肩をすくめ、居心地悪そうにする - かすかな潮風を具現化させ、吹かせる - 口笛で素朴な曲を披露して見せる - 瀟洒ならずとも快活な笑いをこぼす - その周囲にかすかな潮騒が聞こえ始める - 異国風の歌や曲を披露して見せる - 誰かに、美しい貝殻を土産として手渡す - 誰かの手を取り、異国風の踊りに誘う - 異郷の珍味、酒を周りに勧める - 己の船の小さな模型を具現化して見せる - 情熱的に、誰かをかき口説く - 他の領地で見聞した話を語る - 己の船と、その名の由来について語る - 誰かを次の航海に誘う - 海の脅威について法螺交じりに語る - 異郷の様々な情景を具現化して見せる - 遥か遠い奇妙な島や海域について語る - }}, - - {:type => "L", - :name => "寵童", - :table => %w{ - 主の影にそっと隠れる - 主から離れず、ぴったりと密着する - 主の袖を小さく摘まみ、軽く引っ張る - 主に頭を撫でてもらう - 主の髪に指を絡め、梳いたり弄ったりする - 主に甘えるようにもたれかかる - 主に、ちょっとした我儘を言う - はにかんだ笑顔を浮かべて見せる - 目を潤ませ、熱い溜息をつく - きまり悪そうに頬を赤く染め、顔を背ける - 申し訳なさそうな顔で、うつむいてしまう - 主以外の騎士を、じっと見つめてしまう - 無意識に誘うような仕草をしてしまう - 誰かに飛びつき、しがみついて抱きしめる - 庇護欲をそそらせる微笑を浮かべる - 主以外の騎士に、熱心に質問を重ねる - 切なげな溜息をつく - 主の手を取り、その指を舐める - }}, - {:type => "V", - :name => "仲立", - :table => %w{ - 他者を冷たい目で品定めする - 人目を避けて、露骨に不機嫌な顔になる - 音を立てずに舌打ちする - ほがらかな笑顔だが、目は笑っていない - 敢えて周囲に軽んじられるよう、振る舞う - 顎に手を当て、軽く考え込む - 会話に入り込めない者を話に誘う - 他の者らを紹介させ合い、縁を取り持つ - 目論見を思案し、悪い顔で目を細める - 周囲の人間模様をそれとなく観察する - 誰かに積極的に話しかける - 笑顔で会話しつつ、相手の真意を探る - そっと相手の唇に指を当て、言葉を封じる - 様々な人々との談笑にふける - 誰かにちょっとした贈り物を手渡す - 誰かに相談事はないかと、軽く聞く - 誰かについて、惜しみない賞賛を語る - 誰かを嫌味でない程度に褒めそやす - }}, - {:type => "U", - :name => "技師", - :table => %w{ - 持ち歩いていた人形の部位を弄ぶ - 過去の作品を具現化し、自画自賛する - 己の技巧の未熟さについて嘆く - 己の作品以外が褒められるを聞いて嫉妬 - ふとした品を興味深そうに分解し始める - 人形に活かすべく誰かの体を撫で回す - 誰かの手を取り、弄り回す - 突然、羊皮紙に図面を書き始める - メガネを具現化してかける - 人形の美しさについて、周囲の意見を問う - 相手の美しさを奇妙な視点で賛辞する - 思いついた人形の部位を具現化してみる - 他愛ない事象から、新たな着想を得る - 自動人形のための衣装を具現化してみる - 魂と堕落について、誰かと語り合う - 己の理想とする人形について語る - 誰かの美しさに目を奪われる - 誰かの仕草に、嘆息して感動を覚える - }}, - {:type => "D", - :name => "博士", - :table => %w{ - 素晴らしい着想を得て、奇声をあげる - 誰かの非理論的な発言に食ってかかる - 他の騎士の非合理的作法を鼻で笑う - 突然、満面の笑みを浮かべる - 己の研究について嬉々として語る - 平然と場の空気を無視した発言をする - 実験動物を見る目で、誰かを見つめる - 衣装の機能性について、誰かを批判する - 己の才に酔い、一人ほくそえむ - 閃いた着想を紙片に書き留めておく - 行き詰った研究について独り言を呟く - 誰かのあまりに低い知的水準を嘆く - メガネを具現化してかける - 黙り込んで様々な試行錯誤に専念する - 目を閉じて、学術的瞑想にふける - ふとした品を興味深く観察し、分析する - 誰かに研究への協力を頼みこむ - 己なりに知的な言葉で誰かを賛辞する - }}, - {:type => "S", - :name => "星読", - :table => %w{ - 空に同調しすぎて、一瞬だけ具現化が解ける - 目を開き空を見上げたまま、仰向けに横たわる - じっと空を見上げたまま、反応しなくなる - 星辰の変化に驚愕し、奇声をあげてしまう - ほんやりと空の星を見上げる - 星を掴もうとするように両手を広げ、空を見上げる - 目を見開き、じっと空の星を集中して見つめる - 星辰について感覚的な言葉を並べ続ける - ぶつぶつと星の在り方について呟き、計算する - 手近な誰かに、星辰の在り様を細かく説明する - 思わぬ星の動きを見つけ、興奮する - 誰かに、興味深い星が宿っていることに気づく - 誰かに、星の定めた運命を予言する - 誰かに、その運命を変えると宣言する - 空を指差し、その先にある星を輝かせる - 空に手を軽く振り、風を起こして雲をどかす - 空に手を軽く振り、雲で特定の星を隠す - 空に手を差し出し、紅月をさらに輝かせる - }}, - {:type => "G2", - :name => "後見", - :table => %w{ - 己の過去に搦めて、誰かを説教してしまう - 庇護対象の未熟さに、小さな溜息をつく - 少し離れた場所から庇護対象を見守る - 昂り、出しゃばってしまいそうな己を抑える - 庇護対象の背後に、黙って控える - 誰かと語らいつつ、庇護対象を時折うかがう - 若き騎士らの様子を、まぶしそうに見守る - 己の紋章を撫でて、若き日々に思いを馳せる - そっと、庇護対象を背後から抱き寄せる - 顎に手を当て、軽く考え込む - 会話に入り込めない者を話に誘う - 他の者らを紹介させ合い、縁を取り持つ - 誰かに、庇護対象の良き逸話を話す - ふと、自身の騎士道の果てが近づいたと感じる - 民らの様子を、注意深く観察する - 庇護対象の成長に、、思わず顔をほころばせる - 庇護対象に、控えめな助言を与える - 庇護対象に微笑みかけ、わずかに褒める - }}, - ] - - return infos - end - - def getHeresyReactionInfoBlood - infos = - [ - {:type => "L", - :name => "異端卿", - :table => %w{ - 床を睨み意識を何とか保つ - 歩いた跡に、消えゆく塵を遺す - 鎧全体に、光が脈打つ - 金の軋むような呻き声を漏らす - 足音に悲嘆がこもる - 声なき咆哮を放つ - 他者を威圧する - 胸に手を当て、己を落ち着かせる - 一瞬、かつての紋章が浮かぶ - 鎧の中で金属の軋む音がする - 鎧に一瞬、無数の棘が生える - 兜の中の目がギラギラと光る - 体が痙攣したように震える - 鎧の一部が一瞬、武器化する - 鎧が蠢いて奇怪な形になる - 周囲に青白い光が立ち昇る - 己の目的について語る - 恐ろしい目で他者を見る - }}, - {:type => "V", - :name => "ヴルコラク", - :table => %w{ - 己の頭をかきむしる - 膝をついて、苦しみもがく - 一瞬、人狼の姿が重なる - 他者の喉を凝視する - 獣のように呼吸が荒くなる - 己に言い聞かせる独り言を言う - 唇を噛み、口の端から血を流す - ざわざわと衣服の下で肉が蠢く - 牙を剥きだして唸る - 顔を険しくしかめる - 思いつめた目で押し黙る - 壁にすがりつき、嗚咽を漏らす - 己の胸を押さえて深呼吸する - 獲物を狙う目で、騎士を見る - 月をじっと見つめる - 一瞬、頭に狼の耳が現れる - 月を見上げ、怒りの唸りを漏らす - 決意した顔で、正面を見る - }}, - {:type => "N", - :name => "ナハツェーラ", - :table => %w{ - 生きたものをじっと見つめる - 己の手を見て、深いため息をつく - 少しだけ遅れて受け応えする - 一瞬、脱力して死体に戻る - ひからびたような笑い声を漏らす - 歩いた跡に血の足跡が残る - 周囲に生ぬるい湿った風が吹く - 手がどろりと血に塗れる - 無意識に、涙が流れてしまう - 植物に触れ、一瞬で枯らす - 裾から多数の骨が溢れ出す - 触れた通常の品が、朽ち果てる - 周囲の温度が下がる - 目が青白く光る - 淡く光るため息を漏らす - 傍らに鬼火を具現化する - 生前について語る - 手の中に髑髏を具現化する - }}, - {:type => "K", - :name => "カルンシュタイン", - :table => %w{ - 姿が霧に包まれぼやける - 一瞬、白目が黒く染まる - 存在感を消して物陰に佇む - 周囲の些細な音に警戒する - 騎士から目をそらす - 一人小さく笑う - 床を浮かび、すべるように進む - 歩む跡、かすかに黒い霧が舞う - 黒い蒸気のような吐息を吐く - 片足を軸に、くるりと回る - 己の髪をいじったり、かき上げる - 衣装についた埃を払う - 口元を隠して笑みをこぼす - 他から距離を取って、闇に潜む - 騎士の紋章をじろじろと見る - 貴族的な笑みをこぼす - 自信に溢れた様子で胸を張る - 豪奢な衣装を具現化してまとう - }}, - {:type => "G", - :name => "グリマルキン", - :table => %w{ - その場で居眠りする - 大きな欠伸をする - 猫の姿で、居眠りをする - 猫の姿で、壁をひっかく - 他者の具現化に飛びかかる - 黒猫が足元にじゃれて来る - 尻尾をぴんと伸ばす - 猫の姿で、他者を威嚇する - 不満を漏らす - 猫の姿で、狭い所に入り込む - 耳と尻尾がぴくぴくと動く - 家具や木の上に登る - 猫の声で鳴く - 退屈そうに小物をいじり回す - 周囲に近隣の猫が集まる - 猫の姿で、他者の膝上にのる - 適当な小物にじゃれついて遊ぶ - 他者にじゃれつく - }}, - {:type => "S", - :name => "ストリガ", - :table => %w{ - 翼をきつく閉じて怯える - 他の騎士や異端にとにかく謝る - 弱者をいじめる - 他のストリガを貶める言葉を紡ぐ - 強者にへりくだって媚びを売る - 民などに高慢な態度をとる - 民の小さな失敗をなじる - 肩にとまった小鳥と語らう - 翼を広げ、他者に手をさしのべる - 袖から小鳥が飛び立つ - ハミングで歌を口ずさむ - 上空で鳥が輪を描き、歌う - 他者に愛想よく微笑みかける - 無数の黒い鳥の羽根が宙を舞う - 他者を翼で包み抱きしめる - 美しい声で歌い始める - 肩に舞い降りた鳥が耳元で鳴く - 周囲に無数の小鳥が集まる - }}, - {:type => "M", - :name => "メリュジーヌ", - :table => %w{ - ぼんやりと遠くを眺める - 口から小さく威嚇音を漏らす - 一瞬舌を出し、香りを舐めとる - つまらなさそうに様子を眺める - 過去を思い出すように考え込む - 目を見開き、他者に感心する - 湿った風が渦巻く - 下半身を人間のものに変える - 手から水を生み出し、杯に注ぐ - 周囲に水たまりができる - 謎めいた笑みを浮かべる - 舌を伸ばし、他者の顔を舐める - 下半身の蛇を、他者に絡ませる - 興味深そうに質問する - 毒蛇を具現化し、身に絡め弄ぶ - 袖から無数の蛇が現れる - 卵を取り出して丸呑みする - 他者に下半身を絡め抱きしめる - }}, - {:type => "F", - :name => "フォーン", - :table => %w{ - より退廃的な衣装をまとう - 悪戯っぽく首をかしげてみせる - よこしまな笑顔を見せる - ふしだらな舌なめずりをする - 顔を上気させ、ため息をつく - 己を抱きしめて身をよじる - 己の指先をちろりと舐め上げる - ひどく淫らな声を漏らす - 武器にいやらしく舌を這わす - 濡れた上目遣いを見せる - 扇情的な仕草をする - 頭髪があやしく波打つ - 妖しい流し目を送る - 他者の耳元に囁き、息をかける - 他者にしなだれかかる - 他者の体に手を這わせ愛撫する - 謎めいた笑みを浮かべる - 他者を口説き始める - }}, - {:type => "H", - :name => "ホムンクルス", - :table => %w{ - 苦しそうに咳き込みながら膝をつく - ふらつき、壁や他の騎士にもたれる - 己の胸に手を当て、沈痛な顔を見せる - 腕か脚が一瞬、霧のように崩れかける - 自嘲的な乾いた笑いが漏れる - 無表情に周りの様子をぼんやり眺める - 月光を避けるように影や屋内に入る - 他の騎士に手を伸ばしかけて、止める - 不意に月光を浴びてしまい、苦痛を耐える - 会話に入ろうとするが、やめてしまう - 具現化した花の消える様子に己を重ねる - 他の騎士たちをまぶしそうに見守る - 未来について、詳細な推理を述べる - 疲れた様子で、淡く光る吐息を深々と吐く - 瞬時に予想し、落ちかけた品を受け止める - 遠い先の話題に、自虐的な笑みを漏らす - 一刻後の天候を、正確に言い当てる - ほんのかすかな笑顔が浮かぶ - }}, - {:type => "E", - :name => "エナメルム", - :table => %w{ - 人形の虚ろな表情からは何もわからない - 居心地悪そうに、隅にいる - 何かを口にしかけるが、うつむいてしまう - 何かに触れ、カチンと金属音を立てる - ぎこちない動きで体を動かす - 誰かに無言で、何かを訴える - 身振り手振りで、己の感情を伝えようとする - せめて感触を得ようと、誰かに触れ続ける - 誰かをじっと、硝子の瞳で見つめている - 人の体にはできない動きで、奇妙に舞う - 立ったまま、微動だにしない - 己の記憶を取り戻そうと、辺りを見回す - 無意識に、表情も動かぬまま涙が溢れる - 誰かの所作を、己に取り入れようとする - 声ではない、楽器の音色のような歌を披露 - 無機的な目で、冷たく誰かを一瞥する - 無言でただそっと、誰かに寄り添う - 断片的に、かつての魂の記憶が蘇る - }}, - {:type => "S2", - :name => "サングィナリエ", - :table => %w{ - 怒りや欲望で、顔が怪物のように醜くゆがむ - 衝動的に誰かを抱き寄せ、首筋に顔を寄せる - 騎士を嘲るように見て、鼻で笑う - 渇きと共に、口の端から紅い唾液が垂れる - 足元から真紅の血だまりが広がり、場を覆う - 目が光り、誰かの首筋を舐めるように見る - 騎士道の偽善性を説き、嘲笑う - 誰かの首筋を、じいっと凝視する - 胸に手を当て、深呼吸して己を落ち着かせる - 誰かの血の味を口の中に思い出し、ほくそ笑む - 切なげなため息をつき、舌なめずりする - 誰かに、慇懃無礼な皮肉めいた誉め言葉を送る - マントをひるがえして誰かに近づくか、傍から退く - 目が異様な光を灯す、民がいるなら陶然となる - わざとらしく衣装についた埃を払ってみせる - 高らかに、サングィナリエの血統を名乗る - 騎士の在り方について、異端の論を披露する - 余裕のある不敵な笑みを浮かべる - }}, - {:type => "A", - :name => "アールヴ", - :table => %w{ - 平然と場の空気を無視した発言をする - 他の誰かが褒められて様子に、嫉妬する - ハミングで、妖精の歌を口ずさむ - 好奇心も露に、誰かに話しかける - 肩にとまった小鳥と語らう - 野の花をそっと愛でて、微笑む - 誰かに、剣での立ち合いを求める - 流れるような動きで誰かに近づき、手を取る - 妖精の美酒を手元に出し、誰かの盃に注ぐ - 周囲に小さな妖精たちが、光の点となって舞う - 妖精郷の歌や舞を披露してみせる - 様々な人々との談笑にふける - 誰かに愛の言葉を捧げ、口説き始める - 誰かについて、惜しみない称賛を語る - 少し奇妙な言い回しで、誰かを賛辞する - 騎士道について、熱く語る - 己の属する妖精郷の宮廷に、誰かを誘う - 誰かの振る舞いに嘆息し、大いに感動を覚える - }}, - {:type => "V2", - :name => "ヴィーヴル", - :table => %w{ - 周囲の者は、圧迫感と居心地の悪さを感じる - 誰かに、理不尽な我儘を言う - つまらなさそうに他の者達の様子を眺める - 話題を断ち切り、己の目的を率直に遂げんとす - 傲慢とも取れる目で誰かを見下ろし、品定めする - 威嚇するように、腕に翼を大きく広げる - 誰かを子供扱いし、わざと挑発してからかう - 幻に包まれたように、その姿が一瞬だけ揺らぐ - 表情を変えずとも、ぞわりと龍体の色が変わる - 浮かんだまま、遠い目をする - 他の者達の絆の強さを、見定めようと観察する - 誰かに髪の手入れを求める - 各地の様々な事象について、次々と質問する - 真祖と龍と月について、滔々と語り始める - 誰かの行いを諫め、戒める - 誰かを龍の翼で包むように抱きしめ、褒める - 誰かを慈しむように撫で、いたわる - その姿が一瞬、巨大な龍に見える - }}, - {:type => "L2", - :name => "ルーガルー", - :table => %w{ - 巨大な狼の姿となって、警戒も露にうなる - 怒りを耐えるように、拳をきつく握りしめる - 苛立たしげに、狼の口から牙を剥きだしてうなる - 怒りを抑えるが、獣毛が逆立つ - 疲労や緊張から、獣のように呼吸が荒くなる - 疲れ、乾いた笑みを浮かべる - 周囲の些細な音に警戒し、耳を動かす - 誰かを睨みつけ、威圧する - 狼の鼻先が、ひくひくと動く - 鋭い視線を無表情で巡らせ、状況を把握する - 目を閉じ、腕を組んで、じっと立ち続ける - 1人遠く、故郷の方角へと視線を向けて佇む - 決意した顔で、正面から誰かと向かい合う - 沈痛な面持ちで空を見上げ、うなる - 自然の在り様について、言葉少なに語る - たとえ屋内であろうと、野の風が吹く - 誰かの美しさに、思わず目を奪われる - 目を閉じて、故郷たる自然に思いを馳せる - }}, - {:type => "A2", - :name => "アルラウネ", - :table => %w{ - 不満を漏らしたり、軽い我儘を言ったりする - そっと誰かの耳元に何かを囁く - 己の髪に指を絡め、梳いたり弄ったりする - 感じ取った未来を口にしかけるが、やめてしまう - 1悪戯っほい、謎めいた笑みを浮かべる - 誰かに己の身をすりつけるように、絡みつく - 瞬時に予知し、落ちかけた品を受け止める - わずかに動くごとに、周囲を花の香りが包む - 舞うような足取りで、誰かに密着するよう近づく - 煽情的な仕草をしつつ、妖しい流し目を送る - 誰かに甘えるようにもたれかかる - 誰かの運命について、断片的に口にする - 足元に妖しくも美しい花畑が具現化される - 具現化した蔓と葉が、その肢体に絡みつく - 周囲に無数の花弁を具現化しつつ、舞う - より華麗で美しい衣装をまとう - 未来について、曖昧な予言を口にする - 己に咲く花を摘み、誰かに手渡す(瞬時に再生) - }}, - {:type => "F2", - :name => "フリッガ", - :table => %w{ - その影が巨大な蜘蛛となって、蠢く - 他の騎士や異端にとにかく謝る - 居心地悪そうに、隅にいる - ほがらかな笑顔だが、目は笑っていない - 恋の話題に、自虐的な笑みしか浮かばない - 己に口い聞かせるように、独り言を言う - 会話に入ろうとするが、やめてしまう - 申し訳なさそうな顔で、うつむいてしまう - 無意識に、己の腹をいとおしげに撫でる - 誰かの腕や袖をしっかりと掴んで、離さない - 誰かを思いつめた目で、じっと見つめている - 目を潤ませ、熱い溜息をつく - 他の騎士に手を伸ばしかけて、止める - 具現化した糸を、誰かの指とつなぐ - 困ったような、泣き笑いの微笑みを浮かべる - 誰かにびったりと密着して離れない - そっと相手の唇に指を当て、言葉を封じる - 誰かに、狂気の如き恋心を抱き始める - }}, - ] - - return infos - end - - def getHeresyReactionInfoStyle - infos = - [ - {:type => "W", - :name => "野伏", - :table => %w{ - 露骨に、騎士から距離をとる - 騎士や民を見て、舌打ちする - 騎士について不満を口にする - 民の在り様について批判する - 獰猛な笑みで周りをねめつける - 粗野に体をぼりぼりと掻く - 床に唾を吐き捨てる - 武骨な武具を具現化する - 革袋の酒や水を飲み干す - 他者に咎めるような目を向ける - 手づかみで、粗野に食事する - 騎士を見下した目で見る - 正面から相手を見据え会話する - 取り出した肉を噛みちぎり喰らう - 自然の力について語る - 周囲を厳しい目で見渡す - 無礼な発言をする - 己の土地について語る - }}, - {:type => "N", - :name => "流浪", - :table => %w{ - 呆れた様子でため息をつく - 欠伸を噛み殺す - 大げさに肩をすくめて見せる - 他から距離を取り、様子を眺める - 具現化した果実を食べる - 口笛を吹く - 一組のカードを具現化して弄ぶ - 名もなき野草の花を愛でる - 楽器を具現化し、音を奏でる - 他者と世間話をする - 風評を元に他者を褒めたたえる - 吹く風に目を細める - 小鳥や虫、植物らに話しかける - 仲間の肩を叩く、あるいは抱く - 風に髪をなびかせる - 旅の土産話を披露する - 目を閉じてリラックスする - 他者に異郷の珍しい品を渡す - }}, - {:type => "S", - :name => "密使", - :table => %w{ - 周りを値踏みする目で見る - 冷たい目で外を眺める - 濁った眼で、他者をじっと見る - 無感情に状況を検分する - 小さな名もなき花を目に留める - 他の騎士に目で合図を送る - 感情のない目で他者を見る - 小さく自嘲的な笑みを浮かべる - 過剰なほどに周囲を警戒する - 他者をちらちらと観察する - 手の中でナイフを弄ぶ - 騎士に深々と礼をする - 自虐的な言葉を呟く - そっと騎士に寄り添い控える - 他者と世間話をし、談笑する - 主の名を、心の中で唱える - 騎士を褒めたたえる - 他者に積極的に話しかける - }}, - {:type => "H", - :name => "魔女", - :table => %w{ - 誰もいないところに話しかける - 含み笑いから、やがて高笑いへ - 眉を寄せて、水面を見つめる - 騎士を胡乱な目で見る - 大鍋を具現化し、かき混ぜる - 胡散臭い笑みを浮かべる - 足元をゴブリンが駆けていく - 小さく含み笑いを漏らす - 奇妙な言い回しの言葉を言う - 具現化した杖で、床を叩く - 思わせぶりな言葉や仕草をする - 周囲を魔法や妖精の光が舞う - 奇妙な知識で状況説明する - 奇怪な呪文を呟く - あやしげな護符を取り出す - 袖から現れた小動物と会話する - 他者の人相などを占う - 手の中に青白い炎を具現化する - }}, - {:type => "F", - :name => "剣士", - :table => %w{ - 騎士の礼儀作法を嘲笑い、茶化す - 具現化した武器の柄に手を伸ばす - 凶悪な笑みを浮かべ、相手をねめつける - 油断なく周囲に視線を走らせ、警戒する - 剣を手の中に具現化し、弄ぶ - 口笛やハミングで、簡単な曲を奏でる - 不敵な笑みを浮かべながら、名乗る - 周囲の騎士や異端との戦いを、思い描く - 誰かに関する風聞と、実際の印象を語る - 警戒と同時に、手が武器に伸びてしまう - 自信に溢れた様子で、堂々と会話する - 過去の敗北から得た教訓について語る - 闘志により周りの風景が、ぐにゃりと歪む - 周囲に風が渦巻き、衣装をはためかせる - 気に入った相手を口説こうとする - 勇ましく迫力に満ちた剣舞を披露する - 騎士や民に目を向けて、舌打ちする - かつての戦いや冒険について語る - }}, - {:type => "X", - :name => "検体", - :table => %w{ - 肉体が異形化しようとするように、波打つ - 発作的にうずくまり、呻き苦しむ - 指の長さが異様に伸びたり縮んだりする - ふとした金属音に、異様なほど怯える - 汗をかきながら、俯いて深呼吸する - 己に言い聞かせるように、独り言をいう - 蘇る苦痛の記憶に、震えが止まらない - 誰かにぴったりとしがみついて離れない - 一瞬、肌に無数の傷跡が浮かび上がる - 過去を振り払うように、首を打ち振る - 初対面の人物の所作に、怯え隠れる - 体の内から、脈打つように異様な光を放つ - 一瞬、爪や犬歯が伸びて異形の姿となる - 何かの拍子に、異様なほどの跳躍をする - 他の者を妬み呪う言葉が口から溢れる - 目から血が涙のように流れ出す - 壁にすがりつき、何かを抑え嗚咽を漏らす - 誰かに、己の苦しみからの助けを求める - }}, - ] - - return infos - end - - def getCorruptionDiceCommandResult(command) - return nil unless /^CT(\d+)$/ === command - - modify = Regexp.last_match(1).to_i - - name = "堕落表" - table = - [ - [ 0, "あなたは完全に堕落した。この時点であなたは[壁の華]となり、人狼、黒山羊、夜獣卿のいずれかとなる。その[幕]の終了後にセッションから退場する。247ページの「消滅・完全なる堕落」も参照すること。"], - [ 1, "あなたの肉体は精神にふさわしい変異を起こす……。「堕落の兆し表」を2回振って特徴を得る。このセッション終了後、【道】を「夜獣」にすること。(既に「夜獣」なら【道】は変わらない)"], - [ 3, "あなたの肉体は精神にふさわしい変異を起こす……。「堕落の兆し表」を1回振って特徴を得る。このセッション終了後、【道】を「夜獣」にすること。(既に「夜獣」なら【道】は変わらない)"], - [ 5, "気高き心もやがて堕ちる。あなたが今、最も多くルージュを持つ対象へのルージュを全て失い、同じだけのノワールを得る。ノワールを得た結果【渇き】が3点以上になった場合は、再度堕落表を振ること。"], - [ 6, "内なる獣の息遣い……あなたが今【渇き】を得たノワールの対象へ、任意のノワール2点を獲得する。"], - [ 7, "内なる獣の息遣い……あなたが今【渇き】を得たノワールの対象へ、任意のノワール1点を獲得する。"], - [ 8, "荒ぶる心を鎮める……幸いにも何も起きなかった。"], - [99, "あなたは荒れ狂う感情を抑え、己を律した! 【渇き】が1減少する!"], - ] - - number, number_text = roll(2, 6) - index = (number - modify) - debug('index', index) - text = get_table_by_number(index, table) - - return "2D6[#{number_text}]-#{modify} > #{name}(#{index}) > #{text}" - end - - def getTableDiceCommandResult(command) - info = TABLES[command] - return nil if info.nil? - - name = info[:name] - type = info[:type] - table = info[:table] - - text, number = - case type - when '2D6' - get_table_by_2d6(table) - when '1D6' - get_table_by_1d6(table) - when 'D66' - get_table_by_d66(table) - end - - return nil if text.nil? - - return "#{name}(#{number}) > #{text}" - end - - def getSourceSceneDiceCommandResult(command) - return nil unless /^ST$/ === command - - name = "原風景表" - table = getSourceSceneTable - return getTitleD66TableResult(name, table) - end - - def getPassionDiceCommandResult(command) - return nil unless /^PN$/ === command - - name = "受難表" - table = getPassionTable - return getTitleD66TableResult(name, table) - end - - def getTitleD66TableResult(name, table) - debug("getTitleD66TableResult") - item, index = get_table_by_d66(table) - return nil if item.nil? - - title, text, = item - - return "#{name}(#{index}) > #{title}:#{text}" - end - - def getConfermentDiceCommandResult(command) - return nil unless /^CO$/ === command - - name = "叙勲表" - table = getConfermentTable - yearTitle = "叙勲年齢" - - return getYearTableResult(name, table, yearTitle) - end - - def getConfermentAfterDiceCommandResult(command) - return nil unless /^CA$/ === command - - name = "叙勲後表" - table = getConfermentAfterTable - yearTitle = "騎士歴" - - return getYearTableResult(name, table, yearTitle) - end - - def getElderPastDiceCommandResult(command) - return nil unless /^EP$/ === command - - name = "遥か過去表" - table = getElderPastTable - yearTitle = "騎士歴" - - return getYearTableResult(name, table, yearTitle) - end - - def getOriginalSinDiceCommandResult(command) - return nil unless /^OS$/ === command - - name = "原罪表" - table = getOriginalSinTable - yearTitle = "外見年齢" - - return getYearTableResult(name, table, yearTitle) - end - - def getRecentStateDiceCommandResult(command) - return nil unless /^RS$/ === command - - name = "近況表" - table = getRecentStateTable - yearTitle = "活動年数" - - return getYearTableResult(name, table, yearTitle) - end - - def getPeacefulPastDiceCommandResult(command) - return nil unless /^PP$/ === command - - name = "平和な過去表" - table = getPeacefulPastTable - yearTitle = "外見年齢" - - return getYearTableResult(name, table, yearTitle) - end - - def getYearTableResult(name, table, yearTitle) - item, index = get_table_by_d66(table) - return nil if item.nil? - - title, text, yearText, = item - year, calculateText = getYear(yearText) - - return "#{name}(#{index}) > #{title}:#{text} > #{yearTitle}:#{yearText} > #{calculateText} > #{yearTitle}:#{year}年" - end - - def getYear(yearText) - text = yearText.gsub(/(\d+)D(6+)/) { getD6xResult(Regexp.last_match(1).to_i, Regexp.last_match(2).length) } - text = "(#{text})" - - year = parren_killer(text.gsub(/×/, "*")) - return year, text - end - - def getD6xResult(count, dice6Count) - total = 0 - - count.times do |_i| - number = 0 - - dice6Count.times do |_i| - number *= 10 - dice, = roll(1, 6) - number += dice - end - - total += number - end - - return total.to_s - end - - def getSourceSceneTable - table = - [ - ["虐待", "あの地獄のような日々で、貴卿がされてきたことを思えば……騎士となっても、人を見る目は暗い。"], - ["野良犬の如く", "孤児だった貴卿はひたすら盗み殺し騙して。手段を問わず生き抜いた。騎士の前には罪人として突き出された。"], - ["悪行", "貴卿は叙勲以前、悪しき不徳の行いに手を染めていた。幸いにも主には気づかれず、騎士となったが……行いは正されているだろうか?"], - ["忌まわしの火", "故郷は太陽の欠片に襲われた。家族は命を落とし、騎士が貴卿を救った。あの呪わしい炎を貴卿は忘れない。"], - ["太陽の夢", "今はなき太陽の照らす……美しく生命に満ちた世界を、幼い頃から夢で見る。奇妙な疑念が内から消えない。"], - ["黒い衝動", "暴力性や残虐性が、貴卿の中に眠っている。それは時折突発的に現れて……大事なものを破壊するのだ。"], - ["氷の心", "過酷な日々を暮らす中、貴卿の心は凍てついた。能力を買われ騎士となるが……心の氷はまだ溶けない。"], - ["腰抜け", "かつての貴卿は、立ち向かうべきものから逃げ出した。それは騎士となってなお残る、心の疵だ。"], - ["孤独", "貴卿はずっと孤独だった。手を差し伸べてくれたのは主のみ。主なき日々など考えられない。"], - ["野心", "貴卿はより高い地位が欲しい。民では足りない。騎士になりたい。もっともっと多くを支配したいのだ。"], - ["惚れっぽい", "簡単に恋をしてしまう。わずかな縁でも恋人のつもりになって、心から尽くしてしまうのだ。"], - ["間近の堕落", "故郷の領主が堕落し、暴虐を為した。貴卿は、騎士というものについて他ほど無邪気には信じられまい。"], - ["妄想", "夢見がちな貴卿は、自らが騎士となる夢想を何度もしてきた。今も、ともすれば夢を見ているのだろうか。"], - ["空白", "かつての時間の中には思い出せない時期がある。その間に何があったのか、貴卿には何もわからない。"], - ["敬虔なる心", "貴卿は人の頃より紅き月とドラクルを深く信仰してきた。たゆまぬ信仰こそ、己を騎士に導いたと信じている。"], - ["妖精の導き", "入ってはならぬ森で妖精と親しくなった。そして戯れる中、気づけば貴卿は騎士の城にいた。"], - ["従者の一族", "生まれつき従者として生きる一族もいる。貴卿はその中に生まれ、才見出されて騎士となったのだ。"], - ["市井の心", "ごく凡俗な民の家にて長く育った貴卿は世俗的ながらも、民の視野を持つ騎士となるであろう。"], - ["流浪", "貴卿は人の頃から流浪の身。視野を広げるつもりの旅であったが、従者としてこの地に居つくこととなった。"], - ["人の血縁", "血縁者が騎士となった。そしたまた貴卿も……。貴卿には、人としての血縁者が、同胞にいるのだ。"], - ["妖精の友", "妖精を引き寄せる、奇妙な魅力を持って生まれた。幼き頃より、貴卿は妖精や獣の友である。"], - ["無垢なる魂", "浮世の邪念から余りに遠く生きて来たがゆえに、貴卿の魂はあまりに気高く美しい。そして脆い。"], - ["戦場の獣", "主と共に、貴卿は数多の戦場を渡った。戦いは貴卿の呼吸であり歩み。何処にあろうとも戦いの嵐は逃さぬ。"], - ["古き格式", "貴卿は非常に格式を重んじる地に生まれ育った。たとえ形骸化しようと、古き格式を忘れて何が騎士か。"], - ["カリスマ", "人に頼られ注目を浴びやすい。貴卿は生まれつき、人々のまとめ役だ。騎士には必要な才と言えるだろう。"], - ["鍛錬の日々", "騎士となる日を目指し、幼き頃から武の鍛錬欠かさず。いまや貴卿はこれほどの武勇を得たのだ。"], - ["恩返し", "かつて、貴卿はある騎士に助けられた。そして彼の方を助けるべく従者となり……ついに騎士となったのだ。"], - ["騎士の養子", "幼くして見いだされ、物ごころついた頃には、騎士手づからの教育と鍛錬を受けて来た。人の親は知らない。"], - ["英雄志願", "守られる民としての生活に耐えられなかった。貴卿は英雄への道を求め家を飛び出し、従者となったのだ。"], - ["燃える恋", "一目見て、ある騎士に恋をした。人の身では叶わぬ恋。しかし貴卿はついに叙勲を受け、騎士となる。"], - ["救世の想い", "人々は様々な恐怖に怯え、困窮している。己の努力で何とかできれば……と、貴卿は騎士への道を選んだ。"], - ["美貌", "貴卿の美貌が評判になる頃、その美を耳にした騎士が訪れ、貴卿を城に導いた。"], - ["憧れの騎士", "貴卿には憧れる騎士がいる。いつかきっとその人と同じ高みに立つのだと、心に決めた人物がいるのだ。"], - ["ドラクルの夢", "ある日の夢の中、貴卿のもとにドラクルが降りた。そして人生の全てを変える神託を賜ったのだ。"], - ["神童", "時として、貴卿のように有り余る才を持って生まれる者がいる。そして定められたように騎士への道を歩むのだ。"], - ["運命の子", "貴卿の生まれた折、旅の賢者が訪れた。貴卿はきっと伝説に残る騎士となるだろう。そう約束されているのだ。"], - ] - return table - end - - def getConfermentTable - table = - [ - ["堕落の血", "貴卿は堕落者に襲われ、その結果……騎士となった。貴卿に流れるは堕落した血なのだ。", "7+1D6×1D6"], - ["忌まわしの血", "乱心した主は堕落の間際、公爵の許しも得ず貴卿を叙勲した。残された貴卿には……疑いの目が向けられた。", "7+1D6×1D6"], - ["悪しき取引", "貴卿は主と悪しき取引の後、叙勲を受けた。主は不徳の身、今や貴卿の立場は主の奴隷も同然である。", "7+1D6×1D6"], - ["裏切の予言", "叙勲の折、賢者は貴卿に予言をした……いずれ信じた者に裏切られる日が来るであろうと。", "7+1D6×1D6"], - ["謀略", "貴卿は騎士にあるまじき行いによって他を蹴落とし、叙勲を得た。その秘密を知る者はいない。今のところは。", "7+1D6×1D6"], - ["不吉な予言", "叙勲の折、賢者は貴卿に予言をした……大切な人を自らの手で殺めるだろうと。", "7+1D6×1D6"], - ["堕落の誘い", "その叙勲の折、貴卿の脳裏に堕落した己が現れた。そして、堕落すべしと囁きかけて来た。今も、時折。", "7+1D6×1D6"], - ["不相応", "他の従者はみんな優れた才能を持っていた。貴卿には何もない……なのに主は、なぜか貴卿を選んだ。", "10+2D6"], - ["矮小なる主", "叙勲と共にものの見方は変わる。叙勲後、主がくだらない存在と見えた。貴卿は主のもとを離れた。", "7+1D6×1D6"], - ["家庭あれど", "貴卿は人として家庭を築いていた。しかし、主より叙勲を受けられるならばと……貴卿は家庭を捨てたのだ。", "14+1D6×1D6"], - ["かき口説き", "貴卿は主を甘き言葉で口説き、心蕩かして叙勲を与えさせた。精神面において主はむしろ……貴卿なのだ。", "7+1D6×1D6"], - ["不安", "騎士とは何か。叙勲とは何か。騎士そのものとなった今も、貴卿は言い知れぬ不安を感じている……。", "10+1D6×1D6"], - ["忘却", "誰が貴卿を騎士にしたのか。正直わからない……気が付いたら騎士になっていたのだ。", "7+1D6×1D6"], - ["ある夜の寝室", "それは衝動的な行いだったのだろう。主はある夜、突如訪れ……あなたに口づけをし、叙勲を施したのだ。", "10+2D6"], - ["生存者", "堕落者、あるいは太陽の欠片の襲撃を受け、主の従者は全滅。貴卿のみが生き延び……叙勲を受けた。", "7+1D6×1D6"], - ["献身の誓い", "叙勲の折、貴卿は民を守り続けると誓った。貴卿は民の盾にして、数多の敵を退ける矛である。", "14+1D6×1D6"], - ["罪許されて", "貴卿は罪を犯した。罪人として処罰を受ける中、主は貴卿を認め叙勲すら与えてくれた。報わねばなるまい。", "10+2D6"], - ["守秘の誓い", "叙勲の折、貴卿は主から秘密を知らされた。そしてそれを決して他に漏らさぬ誓いを立てたのだ。", "7+1D6×1D6"], - ["勝者は一人", "その日、主の従者数多において武術の試合が行われた。貴卿は最後に勝ち残り、ついに叙勲を得たのだ。", "14+1D6×1D6"], - ["磨かれし技", "今まで一つの技を磨き、極め続けた。その愚直に磨かれた技が評価され、貴卿は叙勲を受けたのだ。", "18+1D6×1D6"], - ["武勲の予言", "叙勲の折、賢者は貴卿に予言をした……いずれ大乱が起こる中にて目覚ましき武勲を上げんと。", "10+2D6"], - ["癒えぬ傷痕", "貴卿の体には消えぬ傷痕が刻まれている。しかし、傷を受けてまで主を守った功こそ、貴卿を騎士にした。", "7+1D6×1D6"], - ["隆盛の予言", "叙勲の折、賢者は貴卿に予言をした……その名は財と誉れに包まれ安らかにあらんと。", "7+1D6×1D6"], - ["胆力", "貴卿は主と共に堕落者に襲われ……一歩も退かずあれば、その胆力を認められ叙勲を受けた。", "7+1D6×1D6"], - ["友情の予言", "叙勲の折、賢者は貴卿に予言をした……いずれ素晴らしき友を得んと。", "7+1D6×1D6"], - ["惜しまれり", "長く従者として生きる中、貴卿は老いた。しかし、老いてなお、主は貴卿を必要とした。それゆえの叙勲である。", "30+1D6×1D6"], - ["守護の誓い", "叙勲の折、ある人を、町を、国を守ると誓った。それを背に敵に立ち向かう限り、あなたは逃げ出したりしない。", "14+1D6×1D6"], - ["返しきれぬ恩", "あの日、貴卿は死んだ……。しかし貴卿は、主の叙勲により蘇った。主は罰を受けたが、それでも笑っていた。", "7+1D6×1D6"], - ["信仰の誓い", "叙勲の折、貴卿はドラクルへの篤き信仰を誓った。紅き月の下、貴卿の勝利はドラクルに捧げられよう。", "14+1D6×1D6"], - ["終わらじの恋", "騎士と互いに恋に落ちた。甘く狂おしい時間、移ろいゆく時。貴卿は恋人の手で叙勲を受け、騎士となった。", "10+2D6"], - ["英雄の予言", "叙勲の折、賢者は貴卿に予言をした……恐るべき敵を打ち倒し、その名は諸国に響くであろうと。", "14+1D6×1D6"], - ["忠義の誓い", "叙勲の折、ある人に深き忠誠を誓った。たとえ世界を敵に回そうと、貴卿が裏切ることなどありはしない。", "14+1D6×1D6"], - ["生ける芸術", "叙勲により、貴卿の美貌はさらなる高みに上った。もはや貴卿を見て心奪われぬ者などいない。", "7+4D6"], - ["思わぬ武勲", "貴卿は従者の身ながら、思わぬ武勲を立てた。その功は叙勲を受けるに十分のものである。", "14+1D6×1D6"], - ["当主の寵愛", "貴卿は、公爵家当主その人の寵愛を得た。宮廷において、重き地位を得られるであろう。", "7+1D6×1D6"], - ["始祖の寵愛", "貴卿は、始祖その人の寵愛を得た。真祖ドラクルに最も近しい、誇るべき身の一人となったのだ。", "7+1D6×1D6"], - ] - return table - end - - def getConfermentAfterTable - table = - [ - ["滅亡", "貴卿の領地は敵に滅ぼされた。守るべき民は絶え、名誉は失われた。彼の者らを許すわけにはいかない。", "2D6×10"], - ["冤罪", "貴卿は身に覚えのない罪を背負っている。何者かの陰謀が貴卿を絡めとり、罪を負わせたのだ。", "1D6×1D6"], - ["呪い", "かつて貴卿は、妖精から呪いを受けた。呪いはゆっくりと貴卿を蝕み、その身に災いを招いている。", "1D6×1D6"], - ["血の昂ぶり", "戦った後は体が火照り昂ぶり、どうしようもなく疼く。堕落の日は遠くない……貴卿の中には確信がある。", "2D6×5"], - ["報復の序章", "かつて貴卿の名誉は友に裏切られ、奪われた。今や新たな道を歩んでいるが、復讐は今も忘れていない。", "2D6×10"], - ["仇敵", "忘れてはならぬ敵がいる。やつの胸を貫き、首を落とすまで、貴卿に安息の日は来ない。来ないのだ。", "1D6×1D6"], - ["堕落の共鳴", "貴卿の魂は堕ちかけているのだろうか。堕落した者たちがどうしようもなく近しく思えてしまうのだ。", "2D6×10"], - ["不徳の日々", "かつての貴卿は品行方正とは言い難い人物だった。心入れかえた貴卿だが、まだまだ世間の目は厳しい。", "1D6×5"], - ["主の堕落", "貴卿を叙勲した主が堕落した。主を誇って来た貴卿は、心ない他の騎士から、侮蔑や疑惑を受けがちだ。", "2D6×10"], - ["冥王の虜囚", "冥王の侵攻の中。貴卿は敗れ、一時なれど虜囚の辱めを受けた。奴らを許すわけにはいかない。", "2D6×3"], - ["近しき堕落", "貴卿の友や恋人が堕落した。それは決して拭えず、忘れられない。常に心に幽鬼の如く頭をもたげるのだ。", "1D6×1D6"], - ["修羅", "貴卿は戦い続けて来た。功を他に譲ってでも戦い、戦い、戦い続けて。戦うだけの存在となりつつある。", "1D6×1D6"], - ["空白", "騎士となってから、思い出せない時期がある。その間に何があったのか、貴卿には何もわからない。", "2D6×10"], - ["追跡", "堕落した友を捜している。彼の者が大切だからこそ、貴卿がケリをつけねばならないのだ。", "2D6×10"], - ["退屈", "変わらぬ日常。甲斐なき日々。仲間の武勲を聞き、貴卿は自らも勲を立てんと立ち上がった。", "2D6×20"], - ["失恋", "愛深きゆえに貴卿は愛を捨てた。……捨てきってはいないかもしれないが、捨てたと信じた。", "2D6×10"], - ["隠遁", "戦いに虚しさを感じたのはいつからか。勇猛な騎士だったあなただが、今は静かに隠者として暮らしている。", "2D6×20"], - ["謎の失踪", "貴卿の大切な人が突然、姿を消してしまった。攫われたのか、逃げたのか、それともまさか……。", "1D6×1D6"], - ["井の中の蛙", "己こそ最高の騎士と思っていた貴卿だが……彼の騎士を見て全ては崩れた。まだまだ修練が足りぬ。", "1D6×3"], - ["賢者の予言", "貴卿は予言に導かれている。貴卿は誰かと出会わねばならぬ。それは主君か友か恋人……あるいは敵か。", "1D6×1D6"], - ["浮名", "多くの恋を振りまく貴卿の名は宮廷では有名だ。敵も味方も、きっと抱えきれぬほどにいることだろう。", "1D6×5"], - ["見届け人", "民の移り変わる様をじっと眺めている。貴卿は目まぐるしく変わる彼らを眺めるのが好きなのだ。", "2D6×10"], - ["人捜し", "貴卿はその心を動かした人を捜している。人間だ。人は脆く移ろいやすい……早く見つけねば。", "1D6×1D6"], - ["深い寵愛", "貴卿は主より深い愛情を注がれ続けた。そのため叙勲は随分以前だが、騎士の活動は始めたばかりだ。", "2D6×10"], - ["血気盛ん", "貴卿は多くの騎士と立ち合い、自らの技と力を磨きたい。腕のある騎士を見れば、挑まずにいられぬ。", "2D6"], - ["啓蒙", "至高なる騎士と違い、世界は愚かで哀れな民で溢れている。騎士として彼らを導いてやらねばなるまい……。", "1D6×1D6"], - ["叙勲すべし", "必要な人がいる。彼の人を叙勲せねばならぬ。貴卿はそのため、功に焦り始めている。", "2D6"], - ["憂国の士", "貴卿は己が国の現状を憂う。宮廷の問題を正さねばならぬと、心に深く誓っている。", "1D6×1D6"], - ["叙勲与えり", "功少なくともそれなりの古株として、貴卿は己の従者を叙勲し、騎士に取り立てた経験がある。", "2D6×20"], - ["堕落の虜囚", "貴卿は一時、堕落者の虜囚となり、慰み者として日々を過ごしたことがある。屈辱であり汚名だ……。", "2D6×10"], - ["名勝負", "貴卿は己の意志を貫くため決闘し、勝利した。その決闘は、近隣でも噂の名勝負とされている。", "1D6×1D6"], - ["長き眠り", "貴卿はかつて太陽の欠片と戦い、体の多くを喪失して眠りについた……随分と長く寝ていたようだ。", "2D6×50"], - ["世界は広く", "騎士となって世界の広さを知った。可能な限り世界を知りたい……貴卿は広き世界を見聞せんとしている。", "2D6×10"], - ["王器", "叙勲以来、人をひれ伏させる圧倒的な魅力を得た。それはまさしく、支配者となるべく与えられた資質だ。", "1D6×1D6"], - ["高名", "数多の決闘や馬上試合で実力を示してきた。あなたは実力ある騎士として名を馳せている。", "2D6×5"], - ["伝説", "貴卿は未だ偉業わずかなれど、その逸話は伝説の域。すでに吟遊詩人らの歌にさえ歌われている。", "1D6×1D6"], - ] - - return table - end - - def getElderPastTable - table = - [ - ["古き罪人", "地獄が生まれるより前。誰もが忘れた牢に閉じ込められていた罪人……それが貴卿だ。幾百年を経て、ついに牢は破られた。", "1D66+1300"], - ["地獄漏れ", "貴卿は不徳と堕落を重ね、地獄へと幽閉された……はずだ。しかし、気づけば外におり、数百年が過ぎていた……。", "1D666"], - ["禁忌の探求", "とうに死した一人の民……あるいは騎士を、貴卿は蘇らさんとしている。外法の類だ。わかっていても……諦められぬのだ。", "1D666"], - ["堕落せし身", "一度は堕落し、恥と穢れにまみれた。心ある友らが救い出してくれたが、汚名は今も付きまとう。堕落の兆しが全て消えようとも。", "1D666"], - ["臆病の失態", "太陽竜の現れた時、貴卿は恐怖から討伐の招集より逃げ出した。この恥は、長き時を経た今も貴卿の心を苛んでいる。", "1D66+1250"], - ["無限の復讐", "貴卿はこの世の理不尽に泣かされた。ゆえに終わらぬ復讐を始めたのだ。この世界全てを、変えてしまうために……。", "1D666"], - ["悪しき発端", "かつて貴卿は、よからぬ考えに取りつかれていた。かつての活動は、今も悪しき後継者を生んでいる。止めねばなるまい。", "3D6×100"], - ["妖精の輪", "妖精に誘われ、一夜の宴を楽しんだ。そして今……かつてより、幾百年が過ぎている。貴卿を知る騎士は、まずいない。", "2D6×100"], - ["破滅の疫病", "あの頃、疫病はノスフェラス以外も侵した。貴卿の故郷もまた……民を見殺しにした貴卿に、彼の冥王を責められようか。", "1D66+1210"], - ["主の堕落", "貴卿を叙勲した主が堕落した。主を誇って来た貴卿は、己の中から何か大切なものが……すっぽりと抜けたように思えた。", "1D666"], - ["異端の友", "かつて、異端と騎士の距離は近かった。貴卿には異端の友がおり、距離を取りつつもお互いに助け合って来たのだが……。", "2D6×100"], - ["時を超えて", "何があったのかわからない。しかし、気づけば遥か未来の大地に立っていた。幾百年もの空白が、今も貴卿を苛んでいる。", "3D6×100"], - ["太陽竜襲撃", "彼の太陽竜による襲撃を、貴卿はまともに受けた。守るべき領地は失われ、討つべき太陽竜も、己の手では討てなかったのだ。", "1D66+1300"], - ["数多の堕落", "知る者の多くが堕落していった。かつての友で今も残るはわずか。決して堕落すまいと、固い決意をしているが……。", "2D6×100"], - ["最後の命令", "太陽竜討伐の折、ある将軍が貴卿を庇い、帰らぬ人となった。最後の命令は「生きろ」――以来、貴卿は命令を守り続けている。", "1D6+1250"], - ["今は後日談", "貴卿は復讐を成し遂げた。そして、為すべきことを失った。かろうじて堕落は避けているが、新たな生きる甲斐を見つけねば。", "1D666"], - ["守るべき地", "ある領主が、堕落した。惨劇の後、もはやそこには誰も住まない。だが、貴卿が彼の人と過ごした思い出はある。守らねば。", "1D666"], - ["開拓者", "民の心を知りたくて。貴卿は一人荒野を拓き耕した。やがて村ができ、貴卿は領主となった。彼の地は貴卿の第二の故郷だ。", "1D666"], - ["己だけが", "太陽竜討伐の折、目の前でゲイズヴァルト家が滅んだ。貴卿にわずかでも勇気があれば、彼の家は残っていたのでは……。", "1D66+1250"], - ["信仰の日々", "僧正として拝殿にこもり、大いなるドラクルへの感謝を捧げてきた。今も、紅き月を見上げる時、貴卿の内には感謝が満ちる。", "2D6×100"], - ["寵童の日々", "叙勲の主によって、屋敷の中で大事に大事に扱われてきた。騎士として不本意でもあったが、人として彼の方を愛している。", "1D666"], - ["傍観の日々", "民の移り変わる様をじっと眺めている。貴卿は目まぐるしく彼らを、隠者として眺めているのが好きだった。", "3D6×100"], - ["遍歴の日々", "遍歴の騎士として諸領を巡り、数多の騎士、数多の冒険、数多の恋の中で過ごしてきた。今も色あせぬ美しき思い出だ。", "2D6×100"], - ["忠義の日々", "仕えるべき御方を見つけ、貴卿は全てを捧げて彼の人を守ってきた。その忠誠は未だ損なわれてはいない……。", "2D6×100"], - ["民の血統", "叙勲され、騎士になったが……民の頃を捨てられなかった。貴卿はずっと、ずっと、己の血縁や友の子孫を見守っている。", "1D6×150"], - ["長い眠り", "生き疲れてか、傷を負ってか。貴卿は長い長い眠りについた。そうして近年ようやく目を覚ましたばかりである。", "2D6×100"], - ["冥王と後悔", "かつてノスフェラスにて地位を得ていた。しかしあの災禍の中で貴卿は逃げたのだ。冥王と化す彼女を見捨てて……。", "1D66+1250"], - ["勃興の協力者", "貴卿はローゼンブルク勃興のため、グランツ公へと協力してきた。彼の裏も表もよく知っているし、彼の地で勢力も築いている。", "1D66+400"], - ["ノスフェラス", "貴卿はノスフェラス末期、疫病の中で叙勲を受けて救われたる騎士。冥王とその一党の風評を何より苦々しく見てきた者だ。", "1212"], - ["財産", "長い年月の中、貴卿は多くの品や建物を具現化し、永続化した。貴卿の周囲は己の生み出したもので溢れている。", "2D6×100"], - ["妖精の国", "騎士を引退し、歴代アヴァローム公の如く、妖精らの国で楽しく暮らしていた。今宵、騎士として世に出たは、気まぐれに過ぎぬ。", "2D6×100"], - ["数多の叙勲", "数多の戦いを経て来た貴卿は、数え切れぬ武勲を立てて来た。一つ一つを数えるのも、もはや馬鹿らしいほどだ。", "1D66×10"], - ["血統の重鎮", "血統とは、騎士の最も大きな枠組みであり派閥だ。そして貴卿は、血統内において大きな発言力を持つ重鎮なのだ。", "3D6×100"], - ["始祖の懇意", "始祖とて心寂しい時はある。貴卿はある始祖と懇意にしていた。彼女にとって、あなたは数少ない心許せる存在なのだ。", "3D6×100"], - ["太陽竜討伐", "彼の恐るべき太陽竜討伐に参加し、華々しき活躍を飾った。その一方で貴卿は、多くの犠牲者らも目にしている。", "1D66+1300"], - ["最初の騎士", "貴卿こそは、真祖百年の喪が明けし時、始祖その人より最初期に叙勲されたる騎士。常夜全ての歴史の生き証人だ。", "1D66+1833"], - ] - - return table - end - - def getOriginalSinTable - table = - [ - ["虐待", "あの地獄のような日々で、御身がされてきたことを思えば……誰も彼も、常夜国すべて等しく呪うしかない。", "7+1D6×1D6"], - ["野良犬の如く", "孤児だった御身は盗み殺し騙して。手段を問わず生き抜いた。罪人として捕まらず、逃げ延びたは天運か。", "7+1D6×1D6"], - ["弱肉強食", "暴力で欲しいものを奪ってきた御身は、略奪者にして狩人。どれだけ取り繕っても、世を支配するのは獣の法。", "7+1D6×1D6"], - ["黒い衝動", "暴力性や残虐性が、御身の中に眠っている。それは時折突発的に表れて……大事なものを破壊するのだ。", "7+1D6×1D6"], - ["氷の心", "過酷な日々を暮らす中、御身の心は凍てついた。異端として力を得た今も……心の氷はまだ溶けない。", "7+1D6×1D6"], - ["生存者", "堕落者、あるいは太陽の欠片の襲撃を受け、故郷は全滅。御身のみが生き延びた。背負う魂は数多い。", "7+1D6×1D6"], - ["血の渇き", "民の体を流れる血に、異様な執着を覚えてしまう。どうしても満たされぬ時は、己の血を舐めるほどに。", "7+1D6×1D6"], - ["嘲笑の的", "いつも、周りで誰かが嘲笑う。誰も彼も御身を嘲笑う。何が間違っているというのか、何がおかしいというのか。", "7+1D6×1D6"], - ["死者を前", "に大切な人が死んだ。朽ちゆく死体を見て、死のおぞましさを知った。何があろうと絶対に、死んでなるものか。", "7+1D6×1D6"], - ["騎士への嫉妬", "御身は騎士という存在に嫉妬していた。美しく強く老いぬ者ら……なぜ奴らは華々しく、己は惨めなのか。", "13+1D6×1D6"], - ["背負う罪", "かつて、ふとした悪戯心が、人を死なせてしまった。どれほど時を経ても、最初に刻まれた罪は消えない。", "7+1D6×1D6"], - ["騎士の堕落", "よく知る騎士が堕落し、暴虐を為した。御身は、騎士というものが異端と何も変わらぬと知っている。", "13+1D6×1D6"], - ["太陽の幻視", "昔から時折、太陽に照らされた大地の夢を見る。それは決して、悪い世界ではなかったと思えるのだが……。", "7+1D6×1D6"], - ["退廃", "酒色に御身は、どうしようもない屑と化していた。思い出したくもない、怠惰と強欲に溺れた日々。", "13+1D6×1D6"], - ["虚栄", "誰かに認めて欲しくて、己を嘘で塗り固めて。努力以上に、嘘を重ねて生きて来た。", "13+1D6×1D6"], - ["黒い歴史", "かつての己は弱く、愚かで。思い返せば、頭を掻きむしりながら消え去りたいという想いばかりが。", "13+1D6×1D6"], - ["刻まれた恐怖", "恐ろしい存在に出会った。堕落者か、妖精か、太陽か。御身の中には、それに対する恐怖が刻まれたままだ。", "7+1D6×1D6"], - ["血気盛ん", "性急に過ぎると、古くから言われていた。しかし年を経ても、気質は治らぬ。御身の心は今も、若く、未熟だ。", "7+1D6×1D6"], - ["孤独への恐怖", "一人きりは怖い。寂しさは恐怖だ。媚びてでも、使われてでも、傍にいてくれないと、気が狂いそうになる。", "10+1D6×1D6"], - ["野育ち", "森や荒野で一人生きて来た。獣も人も何も変わりはしない。ただ一匹の獣として生きて来たのだ。", "7+1D6×1D6"], - ["唸る獣", "人に、威圧的に接してしまう。友好的に接したくても、それができない。御身の笑顔は牙を剥く獣の如し。", "15+1D6×1D6"], - ["移り気", "どうにも目先のものに気をとられがちだ。落ち着いてものごとを考えられない。年経ても変わらぬ性分だ。", "6+2D6"], - ["空白", "遠い昔、異端の力を得る前の己について、覚えていない。思い出そうとすると、脳中に霧がかかるのだ。", "7+1D6×1D6"], - ["蘇生の願い", "大切な人が死んだ。けれど諦められない。諦めない。何か、解決策が、蘇らせる方法が、きっと。", "7+1D6×1D6"], - ["本の虫", "静かに本を読むのが好きだ。本の中の世界、己の世界に没頭したい。外で駆けまわるのは苦手なのだ。", "13+1D6×1D6"], - ["老醜", "老いて朽ちゆく恐怖。死への忌避感。必死でもがいて足掻いて、御身はそれから逃れようとした。", "35+1D6×1D6"], - ["好奇心", "気を引くものがあれば、目を向ける。秘密とあれば暴かずにいられない。知らぬままでは、済ませられぬのだ。", "9+2D6"], - ["惚れっぽい", "簡単に恋をしてしまう。わずかな縁でも恋人のつもりになって、心まで尽くしてしまうのだ。", "13+1D6×1D6"], - ["叶わぬ初恋", "ある民に恋をした。恋は叶わず、彼の人は御身の前から姿を消した。けれど、あの笑顔は、今も御身を力づける。", "9+2D6"], - ["無垢なる魂", "浮世の邪念から余りに遠く生きて来たがゆえに、御身の魂はどこまでも穢れなく美しい。そして脆い。", "6+2D6"], - ["平穏", "御身は家族に囲まれ、愛情に満ちた生活を送っていた。平凡な生活、平凡な日々。とても、とても幸せだった。", "7+1D6×1D6"], - ["甘い夢", "世界を何も知らなかった甘い夢の日々。その夢から覚めたのは幸福か、不幸か。あるいは今も、夢の中か。", "7+2D6"], - ["美貌", "誰もが羨み、振り返る美貌。その美貌は周囲に響き、また騎士すらも御身を賛美した。", "7+1D6×1D5"], - ["妖精の友", "妖精を引き寄せる、奇妙な魅力を持って生まれた。幼き頃より、御身は妖精や獣の友である。", "7+1D6×1D6"], - ["騎士の奉仕者", "御身は麗しき騎士に仕えていた。信頼と憧れを育み、その立場に誇りを持っていたのだが……。", "13+1D6×1D6"], - ["神童", "御身は有り余る才を持って生まれた。騎士になるかと思われていたのだが……。", "7+1D6×1D6"], - ] - return table - end - - def getPassionTable - table = - [ - ["地獄", "騎士らによって、御身は一度は地獄に封じられた。何とか脱出できたのは、幸運以外のなにものでもあるまい。"], - ["暴発する殺意", "殺すつもりなどなかったのに。ふとした口論から、かっとなって……一人の民をその手で、殺めてしまった。"], - ["復讐の道", "かつて御身は友に裏切られ、全てを奪われた。今や御身の命は、かつての友を葬るためにある。"], - ["異端審問", "あの忌まわしき異端審問官らに捕まり、屈辱と苦痛を受けた。彼の者らの存在など決して認めぬ……。"], - ["仇敵", "忘れてはならぬ敵がいる。やつの胸を貫き、首を落とすまで、御身に安息の日は来ない。来ないのだ。"], - ["堕落の冤罪", "一人の騎士が堕落した。その罪を民や他の騎士らは、当人ではなく……異端である御身に押し付けたのだ。"], - ["忌まわしの火", "故郷は太陽の欠片に襲われた。全てが焼かれ、御身も傷を負った。あの呪わしい炎、決して忘れはしない。"], - ["惨劇に佇む", "気がつけば、無数の民の血肉舞う惨状の中に立っていた。これは己の所業なのか……? 答える者はいない。"], - ["異相の拒絶", "かつての御身は己の異端の体を受け入れられなかった。何度も己の異相を切り落とし、堕落の淵に迷った。"], - ["堕落の道標", "何気ない言葉が、友の心を傷つけた。彼の者は堕落した。御身の言葉が切っ掛けでないと、どうして言えようか。"], - ["力に酔う", "異端の力を得て、有頂天となった。己こそ王と信じ、民に暴虐を為した。すぐに誤りを思い知りはしたが……。"], - ["近しき堕落", "友や恋人が堕落した。それは忘れられぬ過去。ともすれば己もまた、と悪しき未来を思い描いてしまう。"], - ["民への失望", "信頼を育んで来た民が、異端審問官らの言葉に流され、御身を罵り始めた。御身が何をしたというのか。"], - ["民の罠", "快く迎えられ、宿に泊められ……眠りについた御身を襲ったのは異端審問官だった。もはや、民など信じぬ。"], - ["異端卿の友", "御身のよく知る異端が、御身の友たる騎士を再叙勲し、異端卿に変えた。御身一人だけが……何も知らされず。"], - ["堕落の様相", "御身は堕落者に襲われた。何とか生き残ったが、あの怪物の様相は……己もまた、ああなってしまうのか?"], - ["それでも力が", "御身は騎士になれなかった。それでも力が欲しくて……異端にすがりつき、隷属と引き換えに力を得たのだ。"], - ["石もて追われ", "人外の力を持つ御身に、民は石を投げつけ追い払わんとした。何もしてはいないのに……民は信じられぬ。"], - ["呪い", "妖精から呪いを受けた。呪いはゆっくりと御身を蝕み、その身に災いを招く。すでに呪いは解けたろうか?"], - ["望まぬ救い", "受難より御身を救った者は、さらなる災いであった。救い手は暴君となり、御身の全てを支配したのだ。"], - ["汚い仕事", "騎士に雇われ、下劣な仕事をした。結果、汚名をかぶせられ、その地を逃げ出す羽目となったのだが。"], - ["異端の住処", "行ってはならぬ場所に行き。逢ってはならぬ異端に逢って。御身はそのまま、故郷へ帰れぬ身となった。"], - ["死別", "特別な存在だった民が……少し見ぬ間に死んでいた。同じ異端に変え、時を過ごすつもりだったのに。"], - ["真の恋", "これまでの恋とはただの欲望であった。御身は真の恋を知ったのだ。全てが手遅れになった後に……。"], - ["拒絶", "愛した民がいた。同じ異端に変えて、長い時の伴侶としたかったが……当人から拒絶された。"], - ["最期の足掻き", "民として死にかけ。潔く散るはずが……最後の最後で執着に囚われた。代価を差し出し、異端と化したのだ。"], - ["死の味", "きっと御身は一度は死んだのだ。命を失い、体が冷たい塊と化すあの時を……とてもよく、覚えているのだから。"], - ["妖精の導き", "入ってはならぬ森で妖精と親しくなった。そして戯れる中、気づけば見知らぬ土地と時代にいたのだ。"], - ["つまずき", "ほんのわずかなつまずきが、いつまでも澱のように残っている。この憂いが晴れる日は来るのだろうか。"], - ["忘却", "御身に何か忌まわしいことが起きた……はずだ。しかし思い出せない。いったい何が……?"], - ["人でなしの恋", "御身は異端との恋に落ちた。甘く狂おしい時間、移ろいゆく時。御身は恋人の手で、異端の体を得た。"], - ["主の気まぐれ", "あの日、死んだはずの御身……。しかし、通りすがった主が、御身を異端へと変えて救ってくれたのだ。"], - ["悲劇の予言", "魔女が御身に予言をした……いつか、大切な人を自らの手で殺めるだろうと。"], - ["かき口説き", "御身は、孤独な異端を甘き言葉で口説き、心蕩かし、己を仲間に加えさせた。精神面において主はむしろ……。"], - ["孤独", "ずっと孤独だった。異端となってなお孤独。御身はこのまま、堕落を待つばかりかと思ったのだが……。"], - ["井の中の蛙", "己こそ最強と思っていた御身だが……一人の騎士を見て、全ては崩れた。まだまだ、世界は広い。"], - ] - return table - end - - def getRecentStateTable - table = - [ - ["悪夢", "眠りにつくたび、受難の記憶が蘇る。御身の心は晴れず、忌まわしい悪夢がつきまとい続けているのだ。", "2D6×10"], - ["血の昂ぶり", "戦った後は体が火照り昂ぶり、どうしようもなく疼く。堕落の日は遠くない……御身には確信がある。", "1D6×1D6"], - ["逃走", "異端審問官に追われ、住み慣れた地を離れねばならなかった。民も、異端に不審の目を向ける。生きづらい。", "1D6×1D6"], - ["堕落の共鳴", "御身の魂は堕ちかけているのだろうか。堕落した者たちがどうしようもなく近しく思えてしまうのだ。", "1D6×1D6"], - ["死にたがり", "もう飽きるほど生きた。堕落者や太陽を少しでも巻き添えに……己にふさわしい場所で、消滅してしまいたい。", "3D6×30"], - ["再叙勲の儀", "騎士を異端卿に変える方法を、御身は知っている。そして実際に一人の異端卿を生み出してもいるのだ。", "3D6×30"], - ["改心", "かつての御身はろくでもない悪党だった。心入れかえたのだが……異端に対する世間の目は厳しい。", "2D6×10"], - ["追跡", "堕落した友を探している。彼の者が大切だからこそ、御身の手でケリをつけねばならないのだ。", "2D6×10"], - ["嵐の予感", "御身には予感がある――常夜国に近く、恐るべき災厄が起きるであろう。少しでも多くに知らせ、備えねば。", "2D6×10"], - ["仮面", "傷つくのが怖くて、表情を作った。本当の己を隠した。今や御身はもう、本当の己を忘れてしまっている……。", "2D6×10"], - ["墓守", "親しくして死んでいった者たちの墓を見守っている。誰もが拝殿の墓場に葬られるわけではないのだ。", "2D6×20"], - ["空白", "その体となってから、思い出せない時期がある。その間に何があったのか、御身には何もわからない。", "1D6×1D6"], - ["失恋", "御身は異端ゆえか、その性格ゆえか。一つの恋を終えた。今は傷心のままに彷徨っている。", "1D6×1D6"], - ["主がために", "騎士か異端か。御身には、心に決めた特定の主がいる。その方の命に従い、御身は行動する。", "1D6×1D6"], - ["新米", "御身は未だ、異端となったばかり。得た力に振り回され、受難にも懲りず(古き異端は選択できない)。", "1"], - ["退屈", "変わらぬ日常。甲斐なき日々。ゆっくりと朽ちていく感覚。このまま己を失い、堕落してしまうのだろうか。", "2D6×10"], - ["隠遁", "民の目、騎士の目は、平穏を乱す。御身は自らの平穏のため、厳しき自然の中で隠棲している。", "2D6×20"], - ["愛がほしい", "寂しくて人恋しい日々。誰かを信じたい。誰かに信じられたい。利用されてもいいから、人の側にいたい。", "1D6×1D6"], - ["魔女の予言", "御身は予言に導かれている。御身は誰かと出会わねばならぬ。それは主か友か恋人……あるいは敵か。", "1D6×1D6"], - ["見届け人", "民の移り変わる様をじっと眺めている。御身は目まぐるしく彼らを眺めるのが好きなのだ。", "3D6×30"], - ["後継探し", "御身は己の心を動かす民を探している。己と同じ存在に変え、永遠の時を共に過ごすのだ……。", "3D6×20"], - ["ゴブリン", "ゴブリンたちに懐かれている。彼らは頻繁に、御身の前へと姿を現し、ちょっとした悪戯や贈り物をしていくのだ。", "1D6×1D6"], - ["血の後継", "御身は目に留めた者を仲間に加えたことがある。そして、その者との親交は未だ途絶えてはいない。", "3D6×30"], - ["神秘の伝承", "神秘の技を、民や他の異端に伝えている。古い知識を伝えるためあるいは単に驚く顔を見ようと。 ", "3D6×20"], - ["変革の狼煙", "異端と蔑まれ、このような立場に追いやられた現状を是とするのか? 立ち上がり、変えるべきではないか?", "1D6×1D6"], - ["民と共に", "長く民と交わり、彼らとの交流の中で生きて来た。多くの感謝と、いくらかの疑いを受けながら生きている。", "1D6×1D6"], - ["放浪癖", "一つ所に留まる気になれない。御身は常に道を歩き、数多の村、数多の都市を渡り歩いてきた。", "1D6×1D6"], - ["民の間に", "積極的に民と交わり、彼らの生活に関わっている。御身は人が好きで、彼らと接してこそ、己を感じられるのだ。", "1D6×1D6"], - ["恩返し", "かつて、御身はある騎士、または異端に助けられた。いつか、この恩は返さねばならない。", "1D6×10"], - ["騎士の友", "騎士と時を過ごし、信頼を築いた。騎士という連中への忌避感は少ない。彼らとは助け合えるだろう。", "2D6×10"], - ["長き眠り", "御身はかつて人知れず太陽の欠片と戦い、体の多くを喪失して眠りについた……随分と長く寝ていたようだ。", "3D6×50"], - ["英雄の星", "出会った魔女が予言した……いずれ御身が恐るべき敵を打ち倒し、その名は諸領に響くであろうと。", "1D6×1D6"], - ["導くもの", "多くの異端が、蔑まれる立場に甘んじ、堕落していく。御身が誇りと、家族と、愛情を教えねばならない。", "3D6×20"], - ["慈愛", "御身は全てを慈しむ。たとえ今は不幸な行き違いがあろうとも、彼らを救い続ける手を止めてはなるまい。", "2D6×10"], - ["生ける芸術", "その美しさゆえ、御身に平穏は訪れぬ。姿を見ただけで、あらゆる者が御身に焦がれ、愛を捧げよう。", "1D6×1D6"], - ["伝説", "御身は異端なれど、常夜国の歴史に少なからず関わってきた。吟遊詩人にも歌われる伝説の存在だ。", "3D6×50"], - ] - return table - end - - def getPeacefulPastTable - table = - [ - ["乱暴者", "短気で、気性が荒く、ついつい手が出て乱暴を働いてしまう。故郷での評判はあまりよくない。今はどうだろう?", "8+2D6"], - ["孤児", "親兄弟もなく、ただ一人で知恵を働かせて生きて来た。自由だが、厳しい環境の中で御身の魂は磨かれてきたのだ。", "6+2D6"], - ["絶対の恐怖", "ある生き物が、どうしようもなく恐い。とにかく生理的に無理。それを見れば御身は無様に飛び上がり逃げまどう。", "7+1D6×1D6"], - ["酒乱", "昔から酒に酔うと、どうにもろくなことをしない。民でなくなった今、酒には酔わないはずだが……。", "15+1D6×1D6"], - ["怠け者", "才能はあっても、動くのはどうにも億劫で。いつも、どうにかしてラクに過ごそうと、そればかり考えていた。", "7+1D6×1D6"], - ["内気", "臆病で人見知りする性格。人との交流も苦手。付き合いは深く狭く。そんな御身でも縁はあるもので……。", "7+1D6×1D6"], - ["血気盛ん", "性急に過ぎると、古くから言われていた。しかし年を経ても、気質は直らぬ。御身の心は今も若く、未熟だ。", "7+1D6×1D6"], - ["幼馴染", "とても仲のいい幼馴染がおり、将来について語り合っていた。今、彼の人はどうしていることだろうか。", "7+1D6×1D6"], - ["忘れざる味", "御身には、どうしても忘れがたい大好物がある。民でなくなった今も、それを夢中で口にしてしまうだろう。", "7+1D6×1D6"], - ["朴念仁", "かつて多数の異性から想いを向けられたが、御身は気づかなかった。最近ふと思い出し、気づいたのだ。", "7+1D6×1D6"], - ["ある別れ", "親友や家族が、騎士または異端となり……故郷を離れた。しかし、同じ時を生きる今なら、きっと会 えるはずだ。", "7+1D6×1D6"], - ["本の虫", "静かに本を読むのが好きだ。本の中の世界、己の世界に没頭したい。外で駆けまわるのは苦手なのだ。", "7+1D6×1D6"], - ["はねっかえり", "どうにも人の言葉を、素直に聞けない。ついつい反抗しては周りに迷惑をかけてしまう。時を経た今も変わらず。", "6+2D6"], - ["お調子者", "あれこれと失敗しているのに、ついつい調子に乗ってしまう。勢いのままに、無謀な行動をしてしまいがちだ。", "7+1D6×1D6"], - ["好奇心", "気を引くものがあれば、目を向ける。秘密とあれば暴かずにいられない。知らぬままでは、済ませられぬのだ。", "9+2D6"], - ["説教癖", "何かと人の所作が気になり、つい人にうるさく言ってしまう。己自身にも厳しくあろうとしているのだが……。", "15+1D6×1D6"], - ["腕自慢", "恵まれた体躯と身体能力で、故郷において並ぶものなき腕自慢、力自慢だった。無論、民としては……だが。", "9+3D6"], - ["自然の中で", "故郷が僻地にあったのか。それとも野に暮らしていたのか。御身は自然に溶け込み、自然をよく知っている。", "7+1D6×1D6"], - ["旅人", "様々な村や街を行き来する旅人だった。流浪の異端や、遍歴の騎士にも、それなりの知り合いがいる。", "10+1D6×1D6"], - ["自由に焦がれ", "平凡な日々への反発。己という枠を超えて、異端になってしまえば、きっと自由になれると思った。", "9+2D6"], - ["叶わぬ初恋", "ある民に恋をした。恋は叶わず、彼の人は御身の前から姿を消した。けれど、あの笑顔は、今も御身を力づける。", "9+2D6"], - ["奇妙な初恋", "一人の異端と出会い、その美しさに恋をした。彼の人を求め、すべてを打ち捨て……同じ時を生きる身となった", "9+3D6"], - ["移り気", "どうにも目先のものに気をとられがちだ。落ち着いてものごとを考えられない。年経ても変わらぬ性分だ。", "6+2D6"], - ["鳥獣の友", "鳥や獣の意思がなんとなくわかる。御身は彼らの友であり、様々な場で助けられ、また助けてもきた。", "7+1D6×1D6"], - ["妖精の友", "妖精を引き寄せる、奇妙な魅力を持って生まれた。幼き頃より、御身は妖精や獣の友である。", "7+1D6×1D6"], - ["おせっかい", "周りの人が気になって仕方がない。困っている人には、迷惑がられても口出ししてしまう性分なのだ。", "7+1D6×1D6"], - ["無垢なる魂", "浮世の邪念から余りに遠く生きて来たがゆえに、御身の魂はどこまでも穢れなく美しい。そして脆い。", "6+2D6"], - ["修道僧", "真祖の拝殿にて、僧正に仕える修道僧だった。もっとも、異端審問のような視野の狭い考えは持っていない。", "10+1D6×1D6"], - ["平穏", "御身は家族に囲まれ、愛情に満ちた生活を送っていた。平凡な生活、平凡な日々。とても、とても幸せだった。", "7+1D6×1D6"], - ["働き者", "故郷では評判の働き者。誠実な人柄でも知られていた。その気質は今も変わらず、余裕を持って行動できない。", "12+1D6×1D6"], - ["熟練者", "ある専門技術について、天才的な能力を持っている。故郷の領主も、御身の意見や技術を頼みとしたほどだ。", "15+1D6×1D6"], - ["熱愛", "とても深く、激しい、熱病のような恋をした。恋の炎は今も、御身の中でくすぶっている。決して消えてはいない。", "9+3D6"], - ["美貌", "誰もが羨み、振り返る美貌。その美貌は周囲に響き、また騎士すらも御身を賛美した。", "7+1D6×1D6"], - ["魔女の弟子", "故郷の近くに住む魔女にかわいがられていた。薬草や占い、異端について、御身は人よりよく知るだろう。", "7+1D6×1D6"], - ["騎士の友", "ある騎士によく寵愛を受けていた。否、立場の差を超えた、友情や親愛と言ってもいい対等の絆をつないだのだ。", "7+1D6×1D6"], - ["血統を遺す身", "伴侶を得て、子を為し、家庭を築いた。その血は、御身が民ならざる身となった今も脈絡と続いている。", "12+4D6"], - ] - return table - end - - TABLES = - { - 'CS' => { - :name => "堕落の兆し表", - :type => '2D6', - :table => %w{ - あなたは完全に堕落した。この時点であなたは[壁の華]となり、人狼、黒山羊、夜獣卿のいずれかとなる。その[幕]の終了後にセッションから退場する。247ページの「消滅・完全なる堕落」も参照すること。 - 獣そのものの頭(狼、山羊、蝙蝠のいずれか) - 夜鳥の翼 - コウモリの翼 - 鉤爪ある異形の腕 - ねじれた二本角 - 狼の耳と尾 - 青ざめた肌 - 異様な光を宿す目 - 突き出した犬歯 - 目に見える変化はない…… - }, - }, - - 'ECS' => { - :name => "拡張・堕落の兆し表", - :type => 'D66', - :table => %w{ - 完全なる堕落:あなたは〔壁の華〕となり、いずれかの堕落者となる。その〔幕〕の終了後にセッションから退場する。(基本247ページ参照) - 異様な体躯:体が膨れ上がったように、過剰なまでの筋肉を付け、体格も巨躯となる。堕落は近い。 - 殺戮鬼:民に触れれば、もう貴卿は衝動を抑えきれない。引き裂き殺し、血を啜ってしまう。民に近づいてはならない……。 - 獣頭:頭が狼や山羊、蝙蝠そのものとなる。遠目にもわかる異常であり、人狼と間違えられて討たれる騎士もいるという。 - 原初の鎧:体の多くが硬い漆黒の塊となり、禍々しい怪物のような体となる。顔または顔の半分は、元の形を維持できるだろう。 - 夜鳥の翼:背中に黒い鳥の翼が生える。ストリガともはや変わらず、貴卿は常に異端と並べ揶揄されるだろう。 - 蝙蝠の翼:背中に蝙蝠の翼が生える。決して隠せず、限定的ながらも空を飛べる……毛の生えた黒い翼だ。 - 割れた肌:全身の肌がひび割れる。中からじわりと紅い光が常に漏れる。姿が美しかろうと、その様子はもはや怪物だ。 - 退廃の香り:甘く心蕩かす香りが体から発せられる。騎士ならばともかく、民には麻薬や媚薬のように作用するものだ。 - 異形の腕:悪鬼を思わせる鉤爪を備えた腕。表面はタールのような漆黒の塊で覆われ……歪んだ凶悪な形をしている。 - 鬼火を宿す目:目に鬼火が宿る。この異様な光は目から溢れ、炎となって常に揺らめいている。貴卿とまともに向き合う者はもういない。 - 悪の棘:肘や膝、拳、額、あるいはより思わぬところから、黒か赤の鋭い棘が生える。周囲の皮膚も硬質化を始める。 - 異様なる刻印:顔を含めた全身の肌に、紅い光による異端の如き刻印が現れる。欲望の性質によって、刻印の様相は常に変わる。 - 毒蛇:肩からか、あるいは尾のように、禍々しい毒蛇が生える。袖や裾から見せれば具現化させた使役獣に見えなくもないが……。 - 第三の目:貴卿の額に、第三の目が開く。髪やフードで隠せなくもないが……隠し通すのは難しいだろう。 - 拡がる鱗:貴卿の体のそこかしこが鱗に覆われ始める。ゆっくりと拡がるそれは、やがて隠しきれなくなるだろう。 - 獣の唸り:貴卿の内から、獣の唸り声が聞こえるようになる。やがては獣臭も漂い始めるだろう。内は既に獣となりつつある。 - 変身:なぜこのような……貴卿は性別、外見年齢、体格のいずれか、時にはすべてが大きく変わってしまう。 - 山羊の角:頭から二本の、ねじれた長い山羊角が生えてくる。この角は、具現化などによって隠したりはできない。 - 牙の咢:歯が全て犬歯となり、口自体も大きく開くようになる。笑顔も、威嚇しているかのように見えるだろう。 - 竜の翼:背中に鱗で覆われた頑強な翼が生える。滑空程度はできるだろう。幸いにも竜翼は……吉兆と見る騎士も多い。 - 山羊の脚:衣装で何とか隠せるのが救いだが……その脚は黒山羊のものとなってしまった。見た者は嫌悪に眉をひそめるだろう。 - 狼の耳と尾:貴卿の頭に狼の耳が、尻に狼の尾が現れる。これらは獣のように、貴卿の感情に合わせて動く。 - 闇溢れの目:目の、白目が黒くなる。さらに目からは闇がにじみ出しあふれ、黒い炎の如く揺らめく。 - 青ざめた肌:死体のように冷たく、また異様に青ざめた肌となる。一見して貴卿の堕落は明らかだ。 - 発作的変身:【渇き】が増えるごとに貴卿の姿は一瞬だけ、特定の堕落者の姿に変身してしまう。おぞましき末路の暗示なのだ。 - 具現化不安定:具現化が不安定となる。貴卿が具現化するものは全て歪み、優雅さを失った異形となるだろう。 - 異様に光る眼:目が鬼火のように光っている。それは闇におぞましい尾を引いて、無意識の内に獲物を狙うだろう。 - 目立つ犬歯:八重歯と言うには長く、鋭すぎる犬歯。口づけの折、ともすれば相手の肌を傷つけてしまいそうになる……。 - 魔女爪:手足の爪が、異様な鉤爪となる。具現化でごまかすこともできない……籠手などを常に着けておけば可能だろうか。 - 加減困難:貴卿の力は制御が難しくなる。ふとした拍子に、家具を壊したり民を傷つけてしまうだろう。 - 長い舌:貴卿の舌は、己の目まで届くほどに長くなる。幸いにも伸ばして見せない限りは、外部からわかるまいが……。 - 不埒な口づけ:口づけのごとに、貴卿を異様な劣情が襲う。その作法は浅ましく、淫らがましいものとなってしまうだろう。 - 堕落の影:紅い月光が照らす貴卿の影は、もはや堕落者のものだ。初対面ならともかく、長く気づかれずには……いられまい。 - 月光欲:屋根があると不快感を感じる。なるべく月光を浴びられる場所でいたい。宮廷でも庭園やバルコニーを好むだろう。 - 幸運:自覚するような兆しはないようだが……己を戒めねばなるまい。貴卿は今や堕落の瀬戸際にいると自覚せよ。 - }, - }, - - 'BT' => { - :name => "絆内容決定表:ルージュ/ノワール", - :type => '1D6', - :table => %w{ - 憐(Pity) 相手を憐れみ、慈しむ。/侮(Contempt) 相手を侮り、軽蔑する。 - 友(Friend) 相手に友情を持つ。/妬(Jealousy) 相手を羨望し、妬む。 - 信(Trust) 相手を信頼する。/欲(Desire) 相手を欲し、我がものにしたいと思う。 - 恋(Love) 相手に恋し、愛する。/怒(Anger) 相手に怒りを感じる。 - 敬(Respect) 相手の実力や精神を敬う。/殺(Kill) 相手に殺意を持ち、滅ぼそうと思う。 - 主(Obey) 相手を主と仰ぎ、忠誠を誓う。/仇(Vendetta) 相手を怨み、仇と狙う。 - }, - }, - }.freeze - - setPrefixes(['DR.*', 'RT.*', 'HRT.*', 'CT\d+', "ST", "CO", "CA", "EP", "OS", "PN", "RS", "PP"] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/Dracurouge_Korean.rb b/src/src_bcdice/diceBot/Dracurouge_Korean.rb deleted file mode 100644 index 07b9bbbfb..000000000 --- a/src/src_bcdice/diceBot/Dracurouge_Korean.rb +++ /dev/null @@ -1,312 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Dracurouge_Korean < DiceBot - # ゲームシステムの識別子 - ID = 'Dracurouge:Korean' - - # ゲームシステム名 - NAME = '드라크루주' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Korean:드라크루주' - - # ダイスボットの使い方 - HELP_MESSAGE = < { - :name => "타락의 전조표", - :type => '2D6', - :table => [ - "당신은 완전히 타락했다. 이 시점에서 당신은 [월 플라워]가 되어 늑대인간, 검은 산양, 야수 중 하나가 된다. 그 [막]의 종료 후에 세션에서 퇴장한다. 247페이지의 「소멸・완전한 타락」을 참조한다.", - "짐승 그 자체의 머리(늑대, 산양, 박쥐 중 하나)", - "밤새의 날개", - "박쥐의 날개", - "갈퀴발톱이 있는 이형의 팔", - "뒤틀린 두 개의 뿔", - "늑대의 귀와 꼬리", - "창백해진 피부", - "이상한 빛을 발하는 눈", - "튀어나온 송곳니", - "눈에 보이는 변화는 없다……", - ], - }, - - 'BT' => { - :name => "인연 내용 결정표:루주/누아르", - :type => '1D6', - :table => [ - "연민(Pity) 상대를 불쌍히 여기고 동정한다. /모멸(Contempt) 상대를 깔보고 경멸한다.", - "친구(Friend) 상대에게 우정을 갖는다. /질투(Jealousy) 상대를 부러워하고 질투한다. ", - "신뢰(Trust) 상대를 신뢰한다. /욕망(Desire) 상대를 원하고 나의 것으로 만들고 싶어한다.", - "사랑(Love) 상대를 좋아하고 사랑한다. /분노(Anger) 상대에게 분노를 느낀다. ", - "존경(Respect) 상대의 실력이나 정신을 존경한다. /살의(Kill) 상대에게 살의를 느끼고 없애고자 한다.", - "복종(Obey) 상대를 주군으로서 받들고 충의를 맹세한다. /복수(Vendetta) 상대를 원망하고 원수로 여긴다.", - ], - }, - }.freeze - - setPrefixes(['DR.*', 'RT.*', 'CT\d+'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/DungeonsAndDragons.rb b/src/src_bcdice/diceBot/DungeonsAndDragons.rb deleted file mode 100644 index b3ca3d715..000000000 --- a/src/src_bcdice/diceBot/DungeonsAndDragons.rb +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class DungeonsAndDragons < DiceBot - # ゲームシステムの識別子 - ID = 'DungeonsAndDragons' - - # ゲームシステム名 - NAME = 'ダンジョンズ&ドラゴンズ' - - # ゲームシステム名の読みがな - SORT_KEY = 'たんしよんすあんととらこんす' - - # ダイスボットの使い方 - HELP_MESSAGE = "※このダイスボットは部屋のシステム名表示用となります。\n" -end diff --git a/src/src_bcdice/diceBot/EarthDawn.rb b/src/src_bcdice/diceBot/EarthDawn.rb deleted file mode 100644 index 252eed342..000000000 --- a/src/src_bcdice/diceBot/EarthDawn.rb +++ /dev/null @@ -1,222 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class EarthDawn < DiceBot - # ゲームシステムの識別子 - ID = 'EarthDawn' - - # ゲームシステム名 - NAME = 'アースドーン' - - # ゲームシステム名の読みがな - SORT_KEY = 'ああすとおん' - - # ダイスボットの使い方 - HELP_MESSAGE = < 40 - step = 40 - end - - if Regexp.last_match(2) - targetNumber = Regexp.last_match(2).to_i - targetNumber = 42 if targetNumber > 43 - end - - hasKarmaDice = Regexp.last_match(3).to_i if Regexp.last_match(3) - karmaDiceCount = Regexp.last_match(4).to_i if Regexp.last_match(4) - karmaDiceType = Regexp.last_match(5) if Regexp.last_match(5) - - return nil if targetNumber < 0 - - stable = getStepTable() - - nmod = stable[0][step - 1] - d20step = stable[1][step - 1] - d12step = stable[2][step - 1] - d10step = stable[3][step - 1] - d8step = stable[4][step - 1] - d6step = stable[5][step - 1] - d4step = stable[6][step - 1] - - if hasKarmaDice - case karmaDiceType - when /d20/i - d20step += karmaDiceCount - when /d12/i - d12step += karmaDiceCount - when /d10/i - d10step += karmaDiceCount - when /d8/i - d8step += karmaDiceCount - when /d6/i - d6step += karmaDiceCount - when /d4/i - d4step += karmaDiceCount - else - nmod += karmaDiceCount - end - end - - @string = "" - - debug('d20step, d12step, d10step, d8step, d6step, d4step', d20step, d12step, d10step, d8step, d6step, d4step) - - stepTotal += rollStep(20, d20step) - stepTotal += rollStep(12, d12step) - stepTotal += rollStep(10, d10step) - stepTotal += rollStep(8, d8step) - stepTotal += rollStep(6, d6step) - stepTotal += rollStep(4, d4step) - - if nmod > 0 # 修正分の適用 - @string += "+" - end - - if nmod != 0 - @string += nmod.to_s - stepTotal += nmod - end - - # ステップ判定終了 - @string += " > #{stepTotal}" - - output = "ステップ#{step} > #{@string}" - return output if targetNumber == 0 - - # 結果判定 - @string += ' > ' - - excelentSuccessNumber = stable[7][targetNumber - 1] - superSuccessNumber = stable[8][targetNumber - 1] - goodSuccessNumber = stable[9][targetNumber - 1] - failedNumber = stable[11][targetNumber - 1] - - if @isFailed - @string += '自動失敗' - elsif stepTotal >= excelentSuccessNumber - @string += '最良成功' - elsif stepTotal >= superSuccessNumber - @string += '優成功' - elsif stepTotal >= goodSuccessNumber - @string += '良成功' - elsif stepTotal >= targetNumber - @string += '成功' - elsif stepTotal < failedNumber - @string += '大失敗' - else - @string += '失敗' - end - - output = "ステップ#{step}>=#{targetNumber} > #{@string}" - - return output - end - - def getStepTable - # 表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 34x 3x 4x 5x 6x 7x 8x 9x10x11x12x13x - - mod = [-2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,] - d20 = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,] - d12 = [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1,] - d10 = [ 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 3, 2, 1, 1, 1, 2, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 1,] - d8 = [ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0,] - d6 = [ 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 1, 0, 0, 0,] - d4 = [ 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,] - exsuc = [ 6, 8, 10, 12, 14, 17, 19, 20, 22, 24, 25, 27, 29, 32, 33, 35, 37, 38, 39, 41, 42, 44, 45, 47, 48, 49, 51, 52, 54, 55, 56, 58, 59, 60, 62, 64, 65, 67, 68, 70, 71, 72,] - ssuc = [ 4, 6, 8, 10, 11, 13, 15, 16, 18, 19, 21, 22, 24, 26, 27, 29, 30, 32, 33, 34, 35, 37, 38, 40, 41, 42, 43, 45, 46, 47, 48, 49, 51, 52, 53, 55, 56, 58, 59, 60, 61, 62,] - gsuc = [ 2, 4, 6, 7, 9, 10, 12, 13, 14, 15, 17, 18, 20, 21, 22, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, 50, 51, 52, 53, 54,] - nsuc = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,] - fsuc = [ 0, 1, 1, 1, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 11, 12, 13, 13, 14, 15, 16, 17, 18, 18, 18, 20, 21, 22, 23, 23, 24, 25, 26, 26, 27, 28, 29, 30,] - - stable = [mod, d20, d12, d10, d8, d6, d4, exsuc, ssuc, gsuc, nsuc, fsuc] - - return stable - end - - # 41以上のステップの為の配列です。 - # 以下のようなルールでダイスを増やしています。より正しいステップ計算法をご存知の方は、 - # どうぞそちらに合せて調整して下さい。 - #  基本: 2d20+d10+d8 - #  これを仮にステップ34xとしています。 - #  一般式としては、ステップxxのダイスは、 - - #   ステップ34xのダイス - # + [(xx-45)/11]d20 - # + ステップ[(xx-34)を11で割った余り+3]のダイス - - def rollStep(diceType, diceCount) - debug('rollStep diceType, diceCount, @string', diceType, diceCount, @string) - - stepTotal = 0 - return stepTotal unless diceCount > 0 - - # diceぶんのステップ判定 - - @string += "+" unless @string.empty? - @string += "#{diceCount}d#{diceType}[" - debug('rollStep @string', @string) - - diceCount.times do |i| - dice_now, = roll(1, diceType) - - if dice_now != 1 - @isFailed = false - end - - dice_in = dice_now - - while dice_now == diceType - dice_now, = roll(1, diceType) - - dice_in += dice_now - end - - stepTotal += dice_in - - @string += ',' if i != 0 - @string += dice_in.to_s - end - - @string += "]" - - return stepTotal - end -end diff --git a/src/src_bcdice/diceBot/EarthDawn3.rb b/src/src_bcdice/diceBot/EarthDawn3.rb deleted file mode 100644 index 78ca2d9b2..000000000 --- a/src/src_bcdice/diceBot/EarthDawn3.rb +++ /dev/null @@ -1,273 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/EarthDawn' - -class EarthDawn3 < EarthDawn - # ゲームシステムの識別子 - ID = 'EarthDawn3' - - # ゲームシステム名 - NAME = 'アースドーン3版' - - # ゲームシステム名の読みがな - SORT_KEY = 'ああすとおん3' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 - @string += modify.to_s - return @string - end - - def getBaseStepTable - stepTable = - [ - # dice - # D20 D12 D10 D8 D6 D4 mod - [ 1, [ 0, 0, 0, 0, 1, 0, -3] ], - [ 2, [ 0, 0, 0, 0, 1, 0, -2] ], - [ 3, [ 0, 0, 0, 0, 1, 0, -1] ], - [ 4, [ 0, 0, 0, 0, 1, 0, 0] ], - [ 5, [ 0, 0, 0, 1, 0, 0, 0] ], - [ 6, [ 0, 0, 1, 0, 0, 0, 0] ], - [ 7, [ 0, 1, 0, 0, 0, 0, 0] ], - ] - - return stepTable - end - - def getStepInfo(step) - baseStepTable = getBaseStepTable - baseMaxStep = baseStepTable.last.first - - if step <= baseMaxStep - return get_table_by_number(step, baseStepTable) - end - - baseStepInfo = [ 0, 1, 0, 0, 0, 0, 0] - overStep = step - baseMaxStep - 1 - - stepRythm = - [ - # dice - # D20 D12 D10 D8 D6 D4 mod - [ 0, 0, 0, 0, 2, 0, 0], - [ 0, 0, 0, 1, 1, 0, 0], - [ 0, 0, 0, 2, 0, 0, 0], - [ 0, 0, 1, 1, 0, 0, 0], - [ 0, 0, 2, 0, 0, 0, 0], - [ 0, 1, 1, 0, 0, 0, 0], - [ 0, 2, 0, 0, 0, 0, 0], - ] - - result = [ 0, 0, 0, 0, 0, 0, 0] - - # loopCount = (overStep / stepRythm.size) - loopCount = (overStep / stepRythm.size).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - - loopCount.times do - addStepToResult(result, baseStepInfo) - end - - index = (overStep % stepRythm.size) - restStepInfo = stepRythm[index] - - addStepToResult(result, restStepInfo) - - return result - end - - def addStepToResult(result, step) - result.size.times do |i| - result[i] += step[i] - end - - return result - end - - def getSuccess(targetNumber, stepTotal) - return '自動失敗' if @isFailed - - successTable = getSuccessTable - successInfo = get_table_by_number(targetNumber, successTable) - - pathetic, poor, average, good, excelent, extraordinary = successInfo - - return 'Extraordinary(極上)' if stepTotal >= extraordinary - return 'Excelent(最高)' if stepTotal >= excelent - return 'Good(上出来)' if stepTotal >= good - return 'Average(そこそこ)' if stepTotal >= average - return 'Poor(お粗末)' if stepTotal >= poor - return 'Pathetic(惨め)' if stepTotal >= pathetic - end - - def getSuccessTable - successTable = - [ - # Pathetic Poor Average Good Excellent Extraordinary - [ 2, [ 0, 1, 2, 5, 7, 9 ] ], - [ 3, [ 0, 1, 3, 6, 8, 10 ] ], - [ 4, [ 0, 1, 4, 7, 10, 12 ] ], - [ 5, [ 1, 2, 5, 8, 11, 14 ] ], - [ 6, [ 1, 2, 6, 9, 13, 17 ] ], - [ 7, [ 1, 3, 7, 11, 15, 19 ] ], - [ 8, [ 1, 4, 8, 13, 16, 20 ] ], - [ 9, [ 1, 5, 9, 15, 18, 22 ] ], - [10, [ 1, 6, 10, 16, 20, 24 ] ], - [11, [ 1, 6, 11, 17, 21, 25 ] ], - [12, [ 1, 7, 12, 18, 23, 27 ] ], - [13, [ 1, 7, 13, 20, 25, 29 ] ], - [14, [ 1, 8, 14, 21, 26, 31 ] ], - [15, [ 1, 9, 15, 23, 27, 31 ] ], - [16, [ 1, 10, 16, 24, 28, 33 ] ], - [17, [ 1, 11, 17, 25, 30, 34 ] ], - [18, [ 1, 12, 18, 26, 31, 36 ] ], - [19, [ 1, 12, 19, 28, 33, 37 ] ], - [20, [ 1, 13, 20, 29, 34, 39 ] ], - [21, [ 1, 14, 21, 30, 36, 41 ] ], - [22, [ 1, 15, 22, 31, 37, 42 ] ], - [23, [ 1, 16, 23, 33, 38, 43 ] ], - [24, [ 1, 16, 24, 34, 39, 44 ] ], - [25, [ 1, 17, 25, 35, 41, 46 ] ], - [26, [ 1, 18, 26, 36, 42, 47 ] ], - [27, [ 1, 19, 27, 37, 43, 49 ] ], - [28, [ 1, 19, 28, 39, 45, 50 ] ], - [29, [ 1, 21, 29, 40, 46, 51 ] ], - [30, [ 1, 21, 30, 41, 47, 53 ] ], - [31, [ 1, 22, 31, 42, 48, 54 ] ], - [32, [ 1, 23, 32, 43, 49, 55 ] ], - [33, [ 1, 24, 33, 45, 51, 57 ] ], - [34, [ 1, 24, 34, 46, 52, 58 ] ], - [35, [ 1, 25, 35, 47, 53, 60 ] ], - [36, [ 1, 26, 36, 48, 54, 60 ] ], - [37, [ 1, 27, 37, 49, 56, 62 ] ], - [38, [ 1, 28, 38, 51, 57, 63 ] ], - [39, [ 1, 29, 39, 52, 58, 64 ] ], - [40, [ 1, 30, 40, 53, 59, 66 ] ], - ] - - return successTable - end - - def rollStep(diceType, diceCount) - debug('rollStep diceType, diceCount, @string', diceType, diceCount, @string) - - stepTotal = 0 - return stepTotal unless diceCount > 0 - - # diceぶんのステップ判定 - - @string += "+" unless @string.empty? - @string += "#{diceCount}d#{diceType}[" - debug('rollStep @string', @string) - - diceCount.times do |i| - dice_now, = roll(1, diceType) - - if dice_now != 1 - @isFailed = false - end - - dice_in = dice_now - - while dice_now == diceType - dice_now, = roll(1, diceType) - - dice_in += dice_now - end - - stepTotal += dice_in - - @string += ',' if i != 0 - @string += dice_in.to_s - end - - @string += "]" - - return stepTotal - end -end diff --git a/src/src_bcdice/diceBot/EarthDawn4.rb b/src/src_bcdice/diceBot/EarthDawn4.rb deleted file mode 100644 index a9f7a51a3..000000000 --- a/src/src_bcdice/diceBot/EarthDawn4.rb +++ /dev/null @@ -1,271 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/EarthDawn' - -class EarthDawn4 < EarthDawn - # ゲームシステムの識別子 - ID = 'EarthDawn4' - - # ゲームシステム名 - NAME = 'アースドーン4版' - - # ゲームシステム名の読みがな - SORT_KEY = 'ああすとおん4' - - # ダイスボットの使い方 - HELP_MESSAGE = <!! str", str) - - step, calc, total, value, nextText = getStepResultInfo(str) - debug("=====> step", step) - - return nil if step.nil? - - steps << step - calcs << calc - totals << total - target = value unless value == 0 - - debug("=====> nextText", nextText) - break if nextText == str - - str = nextText - end - - stepText = steps.join("+") - calcText = calcs.join(")+(") - stepTotal = totals.inject { |sum, i| sum + i } - - calcText = "(" + calcText + ")" if calcs.size > 1 - calcText += " > (#{totals.join('+')})" if totals.size > 1 - - return stepText, calcText, stepTotal, target - end - - def getStepResultInfo(str) - return nil unless /^(\d+)E(\d+)?(K)?(\+\d+$)?(\+(.*))?/i =~ str - - stepTotal = 0 - @isFailed = true - - step = Regexp.last_match(1).to_i # ステップ - targetNumber = Regexp.last_match(2).to_i # 目標値 - return nil if targetNumber < 0 - - hasKarmaDice = !Regexp.last_match(3).nil? # カルマダイスの有無 - diceModify = Regexp.last_match(4).to_i - nextText = Regexp.last_match(6) - - stepInfo = getStepInfo(step) - debug('stepInfo', stepInfo) - - @calcText = "" - - diceTypes = [20, 12, 10, 8, 6, 4] - diceTypes.each do |type| - stepTotal += rollStep(type, stepInfo.shift) - end - modify = stepInfo.shift - - stepTotal += rollStep(6, 1) if hasKarmaDice - - @calcText += (getModifyText(modify) + getModifyText(diceModify)) - stepTotal += (modify + diceModify) - - stepText = "ステップ#{step}" - - return stepText, @calcText, stepTotal, targetNumber, nextText - end - - def getModifyText(modify) - string = "" - return string if modify == 0 - - string += "+" if modify > 0 - string += modify.to_s - return string - end - - def getBaseStepTable - stepTable = - [ - # dice - # D20 D12 D10 D8 D6 D4 mod - [ 1, [ 0, 0, 0, 0, 0, 1, -2] ], - [ 2, [ 0, 0, 0, 0, 0, 1, -1] ], - [ 3, [ 0, 0, 0, 0, 0, 1, 0] ], - [ 4, [ 0, 0, 0, 0, 1, 0, 0] ], - [ 5, [ 0, 0, 0, 1, 0, 0, 0] ], - [ 6, [ 0, 0, 1, 0, 0, 0, 0] ], - [ 7, [ 0, 1, 0, 0, 0, 0, 0] ], - ] - - return stepTable - end - - def getStepInfo(step) - baseStepTable = getBaseStepTable - baseMaxStep = baseStepTable.last.first - - if step <= baseMaxStep - return get_table_by_number(step, baseStepTable) - end - - # dice - # D20 D12 D10 D8 D6 D4 mod - overBounusStep = [ 1, 0, 0, 0, 0, 0, 0] - overStep = step - baseMaxStep - 1 - - stepRythm = - [ - # dice - # D20 D12 D10 D8 D6 D4 mod - [ 0, 0, 0, 0, 2, 0, 0], - [ 0, 0, 0, 1, 1, 0, 0], - [ 0, 0, 0, 2, 0, 0, 0], - [ 0, 0, 1, 1, 0, 0, 0], - [ 0, 0, 2, 0, 0, 0, 0], - [ 0, 1, 1, 0, 0, 0, 0], - [ 0, 2, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 2, 0, 0], - [ 0, 1, 0, 1, 1, 0, 0], - [ 0, 1, 0, 2, 0, 0, 0], - [ 0, 1, 1, 1, 0, 0, 0], - ] - - # [ 1, 0, 0, 0, 2, 0, 0], - - result = [ 0, 0, 0, 0, 0, 0, 0] - - # loopCount = (overStep / stepRythm.size) - loopCount = (overStep / stepRythm.size).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - - loopCount.times do - addStepToResult(result, overBounusStep) - end - - index = (overStep % stepRythm.size) - restStepInfo = stepRythm[index] - - addStepToResult(result, restStepInfo) - - return result - end - - def addStepToResult(result, step) - result.size.times do |i| - result[i] += step[i] - end - - return result - end - - def getSuccess(targetNumber, stepTotal) - return '自動失敗' if @isFailed - - diff = stepTotal - targetNumber - debug("diff", diff) - - if diff < 0 - return "失敗" - end - - # level = (diff / 5) + 1 - level = (diff / 5).floor + 1 # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - - return "成功 レベル:#{level}" - end - - def rollStep(diceType, diceCount) - debug('rollStep diceType, diceCount, @calcText', diceType, diceCount, @calcText) - - stepTotal = 0 - return stepTotal unless diceCount > 0 - - # diceぶんのステップ判定 - - @calcText += "+" unless @calcText.empty? - @calcText += "#{diceCount}d#{diceType}[" - debug('rollStep string', @calcText) - - diceCount.times do |i| - dice_now, = roll(1, diceType) - - if dice_now != 1 - @isFailed = false - end - - dice_in = dice_now - - while dice_now == diceType - dice_now, = roll(1, diceType) - - dice_in += dice_now - end - - stepTotal += dice_in - - @calcText += ',' if i != 0 - @calcText += dice_in.to_s - end - - @calcText += "]" - - return stepTotal - end -end diff --git a/src/src_bcdice/diceBot/EclipsePhase.rb b/src/src_bcdice/diceBot/EclipsePhase.rb deleted file mode 100644 index 016a8fa02..000000000 --- a/src/src_bcdice/diceBot/EclipsePhase.rb +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class EclipsePhase < DiceBot - # ゲームシステムの識別子 - ID = 'EclipsePhase' - - # ゲームシステム名 - NAME = 'エクリプス・フェイズ' - - # ゲームシステム名の読みがな - SORT_KEY = 'えくりふすふえいす' - - # ダイスボットの使い方 - HELP_MESSAGE = - '1D100<=m 方式の判定で成否、クリティカル・ファンブルを自動判定' - - def check_1D100(total, _dice_total, cmp_op, target) - return '' if target == '?' - return '' unless cmp_op == :<= - - diceValue = total % 100 # 出目00は100ではなく00とする - dice_ten_place = (diceValue / 10).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - dice_one_place = diceValue % 10 - - if dice_ten_place == dice_one_place - return ' > 決定的失敗' if diceValue == 99 - return ' > 00 > 決定的成功' if diceValue == 0 - return ' > 決定的成功' if total <= target - - return ' > 決定的失敗' - end - - diff_threshold = 30 - - if total <= target - if total >= diff_threshold - ' > エクセレント' - else - ' > 成功' - end - elsif (total - target) >= diff_threshold - ' > シビア' - else - ' > 失敗' - end - end -end diff --git a/src/src_bcdice/diceBot/Elric.rb b/src/src_bcdice/diceBot/Elric.rb deleted file mode 100644 index 2172773ac..000000000 --- a/src/src_bcdice/diceBot/Elric.rb +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Elric < DiceBot - # ゲームシステムの識別子 - ID = 'Elric' - - # ゲームシステム名 - NAME = 'エルリック!' - - # ゲームシステム名の読みがな - SORT_KEY = 'えるりつく' - - # ダイスボットの使い方 - HELP_MESSAGE = "貫通、クリティカル、ファンブルの自動判定を行います。\n" - - # ゲーム別成功度判定(1d100) - def check_1D100(total, _dice_total, cmp_op, target) - return '' if target == '?' - return '' unless cmp_op == :<= - - # 1は常に貫通 - return " > 貫通" if total <= 1 - # 100は常に致命的失敗 - return " > 致命的失敗" if total >= 100 - - return " > 決定的成功" if total <= (target / 5 + 0.9) - return " > 成功" if total <= target - return " > 致命的失敗" if (total >= 99) && (target < 100) - - return " > 失敗" - end -end diff --git a/src/src_bcdice/diceBot/Elysion.rb b/src/src_bcdice/diceBot/Elysion.rb deleted file mode 100644 index 35b649f70..000000000 --- a/src/src_bcdice/diceBot/Elysion.rb +++ /dev/null @@ -1,1229 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Elysion < DiceBot - # ゲームシステムの識別子 - ID = 'Elysion' - - # ゲームシステム名 - NAME = 'エリュシオン' - - # ゲームシステム名の読みがな - SORT_KEY = 'えりゆしおん' - - # ダイスボットの使い方 - # - # 教室 R:classRoom/購買 S:Shop/部室 B:Box/生徒会室 C:Council/学生寮 D:Dormitory/図書館 I:lIbrary/屋上 F:rooF/ - #  研究室 L:Labo/プール P:Pool/中庭 N:iNner/商店街 A:Avenue/廃墟 V:deVastation/ゲート G:Gate - # 温泉 H:Hotsprings/修学旅行 T:School trip/お祭り室 E:festival/潜入調査 U:Infiltration study/ - HELP_MESSAGE = < 0 - return "-#{value}" if value < 0 - - return "" - end - - def getCheckResult(total) - success = getSuccessRank(total) - - return " > 失敗" if success == 0 - - return getSuccessResult(success) - end - - def getSuccessResult(success) - result = " > 成功度#{success}" - result += " > 大成功 《アウル》2点獲得" if success >= SUCCESS_MAX - - return result - end - - SUCCESS_MAX = 5 - - def getSuccessRank(total) - success = ((total - 9) / 5.0).ceil - success = 0 if success < 0 - success = SUCCESS_MAX if success > SUCCESS_MAX - return success - end - - def getSpecialResult(number, total) - debug("getSpecialResult", number) - - if number == 6 - return getCriticalResult - end - - return getFambleResultText(number, total) - end - - def getCriticalResult - getSuccessResult(SUCCESS_MAX) - end - - def getFambleResultText(number, total) - debug("getFambleResultText number", number) - - if number == 1 - return " > 大失敗" - end - - result = getCheckResult(total) - result += " / (#{number - 1}回目のアシストなら)大失敗" - - debug("getFambleResultText result", result) - - return result - end - - def getDateBothResult(type, pc1, pc2) - dice1, = roll(1, 6) - dice2, = roll(1, 6) - - result = "#{pc1}[#{dice1}],#{pc2}[#{dice2}] > " - - number = dice1 * 10 + dice2 - - if dice1 > dice2 - tmp = pc1 - pc1 = pc2 - pc2 = tmp - number = dice2 * 10 + dice1 - end - - result += getDateResult(type, number, pc1, pc2) - - return result - end - - def getDateResult(type, number, pc1, pc2) - name, table = getDateTableByType(type) - debug("getDateTable name", name) - - text = get_table_by_number(number, table) - text = changePcName(text, '受け身キャラ', pc1) - text = changePcName(text, '攻め気キャラ', pc2) - - return "#{name}表(#{number}) > #{text}" - end - - def getDateTableByType(type) - case type - when nil - return getDateTable() - when /^F$/i - return getFrindDateTable() - when /^O$/i - return getOnewayDateTable() - when /^M$/i - return getMidnightDateTable() - end - - return '', [] - end - - def getDateTable() - name = 'デート' - - table = [ - [11, "「こんなはずじゃなかったのにッ!」仲良くするつもりが、ひどい喧嘩になってしまう。この表の使用者のお互いに対する《感情値》が1点上昇し、属性が《敵意》になる。"], - [12, "「あなたってサイテー!!」大きな誤解が生まれる。受け身キャラの攻め気キャラ以外に対する《感情値》がすべて0になり、その値のぶんだけ攻め気キャラに対する《感情値》が上昇し、その属性が《敵意》になる。"], - [13, "「ねぇねぇ知ってる…?」せっかく二人きりなのに、他人の話で盛り上がる。この表の使用者は、PCの中からこの表の使用者以外のキャラクター一人を選び、そのキャラクターに対する《感情値》が1点上昇する。"], - [14, "「そこもっとくわしく!」互いの好きなものについて語り合う。受け身キャラは、攻め気キャラの「好きなもの」一つを選ぶ。受け身キャラは、自分の「好きなもの」一つをそれに変更したうえで、攻め気キャラへの《感情値》が2点上昇し、その属性が《好意》になる。"], - [15, "「なぁ、オレのことどう思う?」思い切った質問!受け身キャラは、攻め気キャラに対する《感情値》を2上昇させ、その属性を好きなものに変更できる。"], - [16, "「あなたのこと心配してるわけじゃないんだからね!」少し前の失敗について色々と言われてしまう。ありがたいんだけど、少しムカつく。受け身キャラは、攻め気キャラに対する《感情値》が2点上昇する。"], - [22, "「え、もうこんな時間!?」一休みするつもりが、気がつくとかなり時間がたっている。この表の使用者のお互いに対する《感情値》が1点上昇し、《アウル》1点を獲得する。"], - [23, "「気になってることがあるんだけど…?」何気ない質問だが、これは難しい。変な答えはできないぞ。攻め気キャラは〔学力〕で判定を行う。成功すると、この表の使用者のお互いに対する《感情値》が成功度の値だけ上昇し、その属性が《好意》になる。失敗すると、何とか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《感情値》が1点上昇し、その属性が《敵意》になる。"], - [24, "「なんか面白いとこ連れてって」うーん、これは難しい注文かも?攻め気キャラは、〔政治力〕で判定を行う。成功すると、この表の使用者のお互いに対する《感情値》が成功度の値だけ上昇し、その属性が《好意》になる。失敗すると、何とか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《感情値》が1点上昇し、その属性が《敵意》になる。"], - [25, "「うーん、ちょっと困ったことがあってさ」悩みを相談されてしまう。ここはちゃんと答えないと。攻め気キャラは、〔青春力〕で判定を行う。成功すると、この表の使用者のお互いに対する《感情値》が成功度の値だけ上昇し、その属性が《好意》になる。失敗すると、何とか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《感情値》が1点上昇し、その属性が《敵意》になる。"], - [26, "「天魔だ。後ろにさがってろ!」何処からとも無く現れた天魔に襲われる。攻め気キャラは好きな能力値で判定を行う。成功すると、この表の使用者のお互いに対する《感情値》が成功度の値だけ上昇し、その属性が《好意》になる。失敗すると、互いに1D6点のダメージを受けつつ、何とか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《感情値》が1点上昇し、その属性が《敵意》になる。"], - [33, "「ごめん、勘違いしてた」誤解が解ける。この表の使用者のお互いに対する《感情値》が1点上昇し、《好意》になる。"], - [34, "「これ、キミにしか言ってないんだ。二人だけの秘密」受け身キャラが隠している夢や秘密を攻め気キャラが知ってしまう。受け身キャラの攻め気キャラに対する《感情値》が2点上昇する。"], - [35, "「これからも、よろしく頼むぜ。相棒」攻め気キャラが快活に微笑む。受け身キャラの攻め気キャラに対する《感情値》が2点上昇する。"], - [36, "「わ、わたしは、あなたのことが…」受け身キャラの思わぬ告白!受け身キャラの攻め気キャラに対する《感情値》が2点上昇する。"], - [44, "「大丈夫?痛くないか?」互いに傷を治療しあう。この表の使用者は、お互いの自分に対する[《好意》×1D6]点だけ、自分の《生命力》を回復する事ができる。でちらかの《生命力》が1点以上回復したら、この表の使用者のお互いに対する《感情値》が1点上昇する。"], - [45, "「この事件が終わったら、伝えたい事が…あるんだ」攻め気キャラの真剣な言葉。え、それって…?受け身キャラの攻め気キャラに対する《感情値》が1点上昇し、その属性が《好意》になる。エピローグに攻め気キャラが生きていれば、この表の使用者のお互いに対する《感情値》がさらに2点上昇する。ただし、以降このセッションの間、攻め気キャラは「致命傷表」を使用したとき、二つのサイコロを振って低い目を使う。"], - [46, "「停電ッ!?…って、どこ触ってるんですかッ!?」辺りが不意に暗くなり、思わず変なところを触ってしまう。攻め気キャラの受け身キャラに対する《感情値》が2点上昇し、その属性が《好意》になる。また、受け身キャラの攻め気キャラに対する《感情値》が2点上昇し、その属性が《敵意》になる。"], - [55, "「お前ってそんなやつだったんだ?」意外な一面を発見する。互いに対する《感情値》が1点上昇し、その属性が反転する。"], - [56, "「え?え?えぇぇぇぇッ?!」ふとした拍子に唇がふれあう。受け身キャラの攻め気キャラ以外に対する《感情値》が全て0になり、その値の分だけ攻め気キャラに対する《感情値》が上昇し、その属性が《好意》になる。"], - [66, "「…………」気がつくとお互い、目をそらせなくなってしまう。そのまま顔を寄せ合い…。この表の使用者のお互いに対する《感情値》が3点上昇する。"], - ] - return name, table - end - - def getFrindDateTable() - name = "友達デート" - - table = [ - [11, "「こんなはずじゃなかったのにッ!」\n仲良くするつもりが、ひどい喧嘩になってしまう。この表の使用者のお互いに対する《感情値》が1点上昇し、属性が《敵意》になる。"], - [12, "「……。」\n会話が続かなくて、非常に気まずい。この表の使用者は《生命力》が1D6天回復するが、お互いに対する《感情値》が1点減点する。"], - [13, "「そういえば、キミってアレやってる?」\nお互いの趣味について語り合う。この表の使用者の「好きなもの」の中に近い内容のものを探す。近い内容一つにつき、この表の使用者のお互いに対する《感情値》が1点上昇し、その属性は《好意》になる。"], - [14, "「キミと僕は似ている?」\n攻め気キャラは、受け身キャラと自分の共通点を探す(ジョブやアイテム、髪型やクラス、好き嫌いなど)。1つでも見つけると、攻め気キャラの受け身キャラに対する《感情値》が1点上昇する。属性は攻め気キャラが決定できる。"], - [15, "「いや、全然似てないよ」\n受け身キャラは、攻め気キャラと自分の違うところを探す。3つ以上見つけた場合、受け身キャラの攻め気キャラに対する《感情値》は1点上昇する。属性は受け身キャラが決定できる。"], - [16, "「え、そうだったの!?」\nお互いに意外なところを発見してしまう。この表の使用者のお互いに対する《感情値》が1点上昇し、属性を反転する。"], - [22, "「えーっと、アレがソレでコレになって。\n」非情に当たり障りのない言葉でぼんやりとした会話をする。何も起こらない。"], - [23, "「一緒に体を動かさない?」\n一緒に汗をかいて、リフレッシュ。攻め気キャラの受け身キャラに対する《感情値》が1点上昇し、属性が《好意》になる。受け身キャラは[青春力]で判定を行う。判定に成功すると、受け身キャラから攻め気キャラに対する《感情値》が1点上昇し、属性は《好意》になる。失敗すると、受け身キャラの《アウル》が1点減少する。"], - [24, "「一緒に勉強しようか。」\n一緒に勉強に励む。この表の使用者は[学力]で判定を行う。二人とも成功すると、お互いに対する《感情値》が1点上昇し、属性が《好意》になり、好きな授業の□にチェックを入れる。一人でも失敗すると、攻め気キャラの受け身キャラに対する《感情値》の属性は《敵意》になる。"], - [25, "「一緒に遊ぼうよ!」\n一緒に一つのゲームに向かい合って遊んでみる。お互いに2D6を振る。攻め気キャラの出目が高かった場合、攻め気キャラの受け身キャラに対する《感情値》1点上昇する。受け身キャラの出目が高かった場合、受け身キャラの攻め気キャラに対する《感情値》が2点上昇し、属性は《好意》となる。"], - [26, "「奢るよ。」\n攻め気キャラは、分類「食物」のアイテムを一つ選んで調達判定を行う。成功すると、受け身キャラに調達したアイテムを渡し、受け身キャラの攻め気キャラに対する《感情値》が2点上昇し、属性は《好意》になる。"], - [33, "「交換してみる?」\nこの表の使用者は、武器と防具を一つずつ選ぶ。この表の使用者はお互いに選んだアイテムを交換して、お互いに対する《感情値》が2点上昇し、属性が《好意》になる。このセッションの間、交換したアイテムがこの表の使用者以外の手に渡ったり、消えてしまった場合、この表の使用者はお互いに対する感情の属性は《敵意》になる。"], - [34, "「ショッピングしよう!」\n二人で買い物を始める。攻め気キャラは好きなアイテムを1つ選んで調達判定を行える。調達判定に成功すると、受け身キャラは選んだアイテムを手に入れ、攻め気キャラの《感情値》が1点上昇し、属性は《好意》になる。"], - [35, "「ちょっと休憩しようか。」\n二人でゆっくり過ごす。受け身キャラは、攻め気キャラに対する《感情値》が1点上昇し、属性は《好意》になる。攻め気キャラはプレイスを一つ選び、休憩表を振る。"], - [36, "「二人でやる仕事があるんだけど……。」\n攻め気キャラは好きな能力値で判定を行う。成功すると、続いて受け身キャラが同じ能力値で判定を行う。成功すると、この表の使用者の成功度を足した数と同じだけ【お金】を手に入れる。お互いに対する《感情値》の属性が《好意》になる。どちらかでも失敗すると、お互いに対する《感情値》の属性が《敵意》になる。"], - [44, "「一緒にご飯を食べよう。」\n二人で同じテーブルを囲んでご飯を食べる。この表の使用者は好きなだけ【お金】を消費する。この表の使用者は《生命力》を[消費した【お金】の合計×1]点回復し、お互いに対する《感情値》が[消費した【お金】の合計+1]点上昇し、属性は《好意》になる。"], - [45, "「キミといると楽しいね!」\n会話が弾んで、また遊びたいと思えるような関係になる。この表の使用者はお互いに対する《感情値》が2点上昇し、属性は《好意》となる。さらに、受け身キャラは《感情値》を1点上昇させる。"], - [46, "「あの、さ。」\n悩み事を相談する。受け身キャラは[政治力]で判定を行う。成功すると、攻め気キャラの変調を1つ回復し、攻め気キャラの受け身キャラに対する《感情値》が2点上昇し、属性は《好意》となる。"], - [55, "「ズッ友だよ!」\nこの表の使用者はお互いに対する《感情値》が2点上昇し、属性は《好意》になる。さらに、このセッションの終了フェイズ中、「データのリセット」のタイミングで「自分のアドレスにある《感情値》の合計」を算出する際に、数えなくてもよく、調整もしなくてよい。"], - [56, "「あ。ご、ごめん。」\nふとした拍子に、触れてはならない場所を触れてしまった。受け身キャラの攻め気キャラに対する《感情値》を0にして、元の値と同じだけ攻め気キャラの受け身キャラに対する《感情値》が上昇する。"], - [66, "「実はコイツ……。」\n思っていたよりずっと近かった二人の距離に気付く。この表の使用者のお互いに対する《感情値》が3点上昇し、属性は《好意》になる。"], - ] - - return name, table - end - - def getOnewayDateTable() - name = "片思いデート" - - table = [ - [11, "「気付いてくれないあなたが悪いんだから……!」\n突然の告白と、刃物沙汰。撃退士じゃなかったら死んでいた。受け身キャラは《生命力》が3D6点減少する。攻め気キャラの受け身キャラに対する《感情値》が3点上昇し、属性が《敵意》にあんる。受け身キャラは攻め気キャラに対するフラグがあった場合、フラグを折る。"], - [12, "「どうしてあの子の話ばかりするのかな?」\nあの人は、いつもそう。私の前であの子の話ばかり。受け身キャラはこの表の使用者以外のキャラクターを一人選ぶ。攻め気キャラは選ばれたキャラクターに対する《感情値》が2点上昇し、属性が《敵意》になる。"], - [13, "「お仕置き、しないとね。」\n受け身キャラが持っている一番高い《好意》を持っているキャラクターを選ぶ。選ばれたキャラクターは《生命力》を1D6点減少し、攻め気キャラに対する感情の属性が《敵意》になる。選んだキャラクターが攻め気キャラだった場合、攻め気キャラの受け身キャラに対する《感情値》が1点上昇し《生命力》が1D6天回復する。"], - [14, "「負け犬って何のこと?」\n受け身キャラが持っている中で、一番高い《好意》を持っているキャラクターが攻め気キャラでない場合、攻め気キャラの受け身キャラに対するフラグと、受け身キャラの攻め気キャラに対するフラグを折る。攻め気キャラが最も高い場合攻め気キャラは《アウル》を3点回復する。"], - [15, "「何で気づいてくれないの?」\n一方的に思いは募る。攻め気キャラは受け身キャラに対する《感情値》が2点上昇し、属性が《好意》になる。受け身キャラの攻め気キャラに対するフラグがあった場合、フラグを折る。"], - [16, "「贈り物…だよ……。」\n愛情がたくさん入ったアイテム……だけど呪術的なものも入っている気がする。攻め気キャラは好きなアイテムを一つ選び、調達判定を行う。成功した場合、手に入れたアイテムを受け身キャラに渡す。受け身キャラは、渡したアイテムの価格と同じだけ《アウル》が減少する。攻め気キャラは受け身キャラに対する《感情値》が2点上昇する。"], - [22, "「神様、勇気をください。」\n勇気を出して声をかけていく。受け身キャラは攻め気キャラに対する《感情値》が1点上昇し、属性は《好意》になる。"], - [23, "「大変だ!何とかしないと!」\n献身的な看病で、体の調子を戻す。受け身キャラが受けている変調をすべて回復する。攻め気キャラは受け身キャラが持っていた変調をすべて受け、受け身キャラに対する《感情値》が受けた変調と同じ値だけ上昇する。受け身キャラが変調を受けていなかった場合、受け身キャラは【ポーション】を1つ獲得する。"], - [24, "「調べてきたよ!」\n想い人のために、役立つ情報を調べてくる。攻め気キャラは[学力]で判定を行う。成功すると、受け身キャラは好きな授業を一つ選んで□にチェックを入れる。攻め気キャラは受け身キャラに対する《感情値》が1点上昇する。"], - [25, "「どうかこの時間がずっと続きますように。」\n幸せの一瞬。一緒にいるだけでいいのに、時は無情にも過ぎていく。攻め気キャラは《生命力》が限界値まで回復し、《アウル》が2点回復する。ただし、このセッション中に受け身キャラと違うキャラクターとデートを行ったとき、攻め気キャラの《アウル》は0になる。"], - [26, "「お似合いだなんて、そんな……。」\n一緒に歩いているところを冷やかされる。攻め気キャラは受け身キャラに対する《感情値》が2点上昇し、属性は《好意》になる。受け身キャラは攻め気キャラに対するフラグがあった場合フラグを折る。"], - [33, "「応援してるよ!」\n本心を隠して、恋や友情の応援!攻め気キャラは、キャラクターを一人選ぶ。受け身キャラは選ばれたキャラクターに対する《感情値》が2点上昇し、属性が《好意》になる。攻め気キャラが受け身キャラに対するフラグがあった場合、フラグを折る。"], - [34, "「頭が沸騰しそうだよッ!」\n手と手が触れ合って、とても幸せになる。攻め気キャラの《アウル》が受け身キャラに対する《好意》の点数と同じ値だけ回復する。"], - [35, "「あなたは死んでも守る。」\n絶対に守るという固い意志を示す。攻め気キャラの受け身キャラに対する《感情値》が1点上昇する。また、このセッション中に一度だけ、受け身キャラが受けたダメージを代わりに攻め気キャラが受けることができる。"], - [36, "「もう死んでもいいかも……。」\n突然のハプニングでお互い大事なところが触れ合う!思い人と急接近!この表の使用者はお互いに対する《感情値》が1点上昇し属性が《好意》になる。"], - [44, "「何かと必要のはず!」\nお金を工面して、想い人に渡す。受け身キャラは【お金】を1個獲得する。攻め気キャラは受け身キャラに対する《感情値》が1点上昇し、属性は《好意》になる。"], - [45, "「あなたの行きたいところなら!」\n想い人が行くところならどこまでもついて行きますとも。受け身キャラはプレイスを一つ選ぶ。選んだプレイスの休憩表を振って効果を適応する。攻め気キャラは受け身キャラに対する《感情値》が1点上昇し、属性は《好意》になる。"], - [46, "「きっと食べるよね。」\nお菓子を用意して、戻ってくるのを待っている。受け身キャラは《アウル》が1点回復し、攻め気キャラは受け身キャラに対する《感情値》が1点上昇し、属性は《好意》になる。"], - [55, "「肩、揉んであげようか?」\n疲れを察して、率先して動いて休ませてあげる。受け身キャラは《生命力》が1D6点回復し、攻め気キャラに対する《感情値》の属性が《好意》になる。"], - [56, "「贈り物だよっ!」\n愛情がたくさん入ったアイテムを送る。攻め気キャラは好きなアイテムを一つ選び、調達判定を行う。成功した場合、アイテムを受け身キャラに渡す。渡したアイテムの価格の値と同じだけ、攻め気キャラの受け身キャラに対する《感情値》が上昇する。"], - [66, "「そっか、私……。」\n思いが届かないうちに、片思いの相手が他の人と仲良くしているところをみせつけられる。受け身キャラは攻め気キャラ以外のキャラクターを一人選んで《感情値》を3点上昇し、属性を《好意》にする。この表の使用者のお互いに対するフラグがあった場合、フラグを折る。"], - ] - return name, table - end - - def getMidnightDateTable() - name = "真夜中デート" - - table = [ - [11, "「こんなはずじゃなかったのにッ!」\n仲良くするつもりが、ひどい喧嘩になってしまう。この表の使用者のお互いに対する《感情値》が1点上昇し、属性が《敵意》になる。"], - [12, "「夜風が気持ちいい。」\n夜の風が二人を優しく撫でる。落ち着いて話をしよう。この表の使用者は、持っている《感情値》を一つ選んで好きな属性に変更できる。"], - [13, "「夜の散歩に出かけてみようか。」\n攻め気キャラはプレイスを一つ選び、この表の使用者はお互いに選んだプレイスの休憩表を振る。この休憩表によって上昇する《感情値》は二倍になる。"], - [14, "「やべっ、風紀委員だ!」\n風紀委員に見つかって、二人で逃げ回るはめに。この表の使用者はお互いに対する《感情値》の属性を反転させる。"], - [15, "「夜は別の顔があるんだよ。」\n夜はいつもと違った一面を見せる時間だ。攻め気キャラは[政治力]判定を行う。成功すると、受け身キャラに対する《感情値》が2点上昇する。受け身キャラは、攻め気キャラに対する《感情値》の属性を判定させる。"], - [16, "「ね、ねむい。」\n眠くてデートどころではなかったが、寝顔は見られた。受け身キャラは行動の「睡眠」を行い、攻め気キャラは受け身キャラに対する《感情値》が2点上昇し、属性は《好意》になる。"], - [22, "「夜通し遊ぶぜ!」\nついつい張り切ってしまって、夜通し遊んでしまう。この表の使用者はお互いに対する《感情値》が3点上昇し、「眠気」の変調を受ける。"], - [23, "「夜の学校っていいもんだな。」\n夜の学園に忍び込み、二人で探検する。攻め気キャラは1D6を振る。出た目と同じだけ、お互いに対する《感情値》が上昇し、属性が反転する。"], - [24, "「夜の個人授業。」\n夜中の教室で二人だけの授業をする。攻め気キャラは[学力]判定を行う。成功すると、受け身キャラは好きな授業を1つ選び、□にチェックをする。さらに、攻め気キャラの受け身キャラに対する《感情値》1点上昇する。失敗すると、受け身キャラの攻め気キャラに対する《感情値》が2点上昇する。"], - [25, "「怖い話。」\n思い立って、怖い話をしてみる。攻め気キャラは好きな能力値で判定を行う。成功すると、受け身キャラは「恐怖」の変調を受け、受け身キャラに攻め気キャラに対する《感情値》が3点上昇する。受け身キャラは攻め気キャラに対するフラグがあった場合、フラグを折る。"], - [26, "「綺麗な星だな。」\n空を見上げて二人で天体観測。二人の距離はずっと近くに。この表の使用者がお互いに対する《好意》を持っている場合、お互いに対する感情値が1D6点上昇する。"], - [33, "「眼が冴えてきたな。」\n目が冴えてきて、夜中でも問題なく動けそうだ。この表の使用者は、このパートの間「真夜中パートに睡眠を行わなかったキャラクターは、そのパート終了時に1D6点を振って、その目に対応した変調を受けます。」というルールを無効化し、「真夜中デート表」をもう一度振る。"], - [34, "「夜の騎士!」\n夜に紛れて悪さをしようとしていた悪人を懲らしめて戦利品を手に入れる。攻め気キャラは好きな能力値で判定を行う。成功すると、受け身キャラの攻め気キャラに対する《感情値》が判定の成功度だけ上昇する。攻め気キャラは【タバコ】か【お金】を手に入れる。"], - [35, "「いいものアルヨ。」\n妖しいポーションの勧誘に引っかかってしまった。攻め気キャラは[政治力]で判定を行う。判定に成功すると、受け身キャラは《生命力》を1D6点回復し、《感情値》が回復した《生命力》の値と同じだけ上昇し、属性が《好意》になる。判定に失敗すると、受け身キャラは「病気」の変調を受け、《感情値》が2点上昇する。"], - [36, "「私といいことしない?」\n夜闇に乗じて、セクシーな悪魔が誘惑してくる。攻め気キャラは好きな能力値で判定を行う。判定に成功すると、この表の使用者のお互いに対する《感情値》が判定の成功度だけ上昇し、属性は《好意》になる。判定に失敗し、お互いにフラグがあった場合、フラグを折る。"], - [44, "「出歯亀だ!?」\n二人だけの真夜中デートだと思ったら、誰かが見ていたのだ。攻め気キャラは、攻め気キャラでも受け身キャラでもない好きなPCを一人選ぶ。選ばれたPCは、この表の使用者二人に対する《感情値》が2点上昇する。この表の使用者二人は、選ばれたPCに対する感情の属性が《敵意》になる。"], - [45, "「夜の宴が始まる。」\n夜中にパーティーを開き、大騒ぎだ。この表の使用者は、【ごちそう】か【お酒】をすべて消費する。消費した場合、この表の使用者は《生命力》が限界値まで回復し、《アウル》が2点回復する。さらに、お互いに対する《感情値》が2点上昇し、属性が反転する。消費出来なかった場合、何も起こらない。"], - [46, "「月以外、誰も見ていないさ……。」\n見つめ合ったまま、二人の夜が更けていく。この表の使用者はお互いの《感情値》が1D6点上昇し、属性は好きなものを選ぶことができる。"], - [55, "「夜のコスプレショー!」\nお互いに似合うコスチュームを探ってみる。この表の使用者は、同時に「分類:防具/魔装」のアイテムの名前を一つ挙げる(相談禁止)。お互いに同じアイテムの名前を挙げた場合、お互いに対する《感情値》が4点上昇し、挙げたアイテムを一つ獲得する。"], - [56, "「ふー。」\nお互いに色々ぶちまけてスッキリした。この表の使用者は変調をすべて回復し、1D6をどちらかが振る。この表の使用者は、お互いの《感情値》が1D6の目と同じになる。"], - [66, "「帰りの電車がなくなったの……。」\n二人で一夜を過ごす。この表の使用者はお互いに対する《感情値》が5点上昇するが、お互いに「バカ」の変調を受ける。"], - ] - - return name, table - end - - def changePcName(text, base, name) - return text if name.nil? || name.empty? - - return text.gsub(/(#{base})/) { Regexp.last_match(1) + "(#{name})" } - end - - def getDateValue - dice1, = roll(1, 6) - return dice1.to_s - end - - def getClassRoomBreakTable - name = '教室' - table = [ - "風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が真夜中パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。真夜中パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", - "引き出しのパン\n「お!こんなとこにッ!?」机の中に以前買った食べ物を発見する。アイテムの【焼きそばパン】を一つ獲得する。使用するときに1D6を振ること。奇数が出たら、問題なく使用できる。偶数が出たら、それは腐っている。【焼きそばパン】の効果の変わりに「病気」の変調を受ける事。", - "授業の質問\n「ねぇねぇ、ここ分かる?」クラスメイトに授業の質問を受ける。〔学力〕で判定を行う。成功すると、質問に答えるうちに自分の理解も深まる。自分の授業欄の中から好きなもの一つを選び、□にチェックを入れる。", - "先生の依頼\n「丁度いいところにいるな。手伝ってくれ」先生に用事を言いつけられる。〔政治力〕で判定を行う。成功すると、感謝されてアイテムの【タリスマン】を一つ獲得する", - "誰かの視線\n……誰かの視線を感じる。もしかして? 教室にいるキャラクターの中から好きな者を一人選び、そのキャラクターの自分に対する《感情値》が1点上昇する。(教室に誰がいるのかは、最終的にGMが決定すること)。", - "遊びの誘い\n「ねぇねぇ、明日の放課後ひま?」クラスメイトに遊びに誘われる。翌日の放課後、自由行動として「遊び」を行うことができる。「遊び」を行うと、《アウル》が1D6点回復する。", - "居眠り\n「ZZZ……」教室での居眠りは最高だ。《アウル》1点を変調一つを回復する。ただし、今が授業パートなら、〔青春力〕で判定を行う。失敗すると、先生に怒られて《生命力》が1D6点減少し、《アウル》も変調も回復しない。", - "お腹空いた\n「ねぇねぇ。お腹空いた。なんかない?」クラスメイトに食事をねだられた。分類が「食物」のアイテムを一つ消費することができたら、教室にいるキャラクターの中から好きな者を一人選び、そのキャラクターの自分に対する《感情値》が1点上昇する。", - "クラスの噂\n「ねぇねぇ、これ知ってる?」クラスメイトの噂話……。〔政治力〕の判定を行う。成功すると、手がかり一つを選び、その情報を公開する。失敗すると、あなたについての噂をたてられる。あなたの周囲に、あなたに対して《感情値》を持つキャラクターがいたら、それを反転させる。", - "ラブレター!?\n「こ、これは……ッ!?」机の中に何かを発見。〔青春力〕で判定を行う。成功すると、誰かからのラブレターを発見! 好きなNPC一人を選び、そのキャラクターの自分に対する《感情値》が1点上昇し、属性を《好意》にする。", - "笑い声\n「あはははははは」にぎやかな笑い声が響く。〔青春力〕で判定を行う。成功したら輪の中に溶け込み、《アウル》が1点回復する。失敗すると「孤独」の変調を受ける。", - ] - getBreakTable(name, table) - end - - def getSchoolStoreBrakeTable - name = '購買' - table = [ - "風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", - "まとめ買いセール\n「まとめ買いセール!」好きなアイテムを一つ選ぶ。そのアイテムの調達の判定を一度行う事ができる。このとき、そのアイテムの価格を1高くするたび、追加でもう一個そのアイテムを獲得することができる。", - "防具セール!\n「うわぁ。これ欲しいなぁ」セール品を見つける。分類が「防具」のアイテムの中から好きなものを一つ選ぶ。そのアイテムの価格が1低いものとして調達の判定を一度行うことができる(ただし1未満にはならない)。", - "武器セール!\n「何と!こんなものまで!」セール品を見つける。分類が「武器」のアイテムの中から好きなものを一つ選ぶ。そのアイテムの価格が1低いものとして調達の判定を一度行うことができる(ただし1未満にはならない)。", - "色々セール!\n「ほほう!これはお買い得!」セール品を見つける。分類が「一般」のアイテムの中から好きなものを一つ選ぶ。そのアイテムの価格が1低いものとして調達の判定を一度行うことができる(ただし1未満にはならない)。", - "ウィンドウショッピング\n「へぇ、こんな商品出たんだ」ウインドウショッピングでも、結構気分は晴れるもんだよね。《アウル》が1点回復する。", - "試食\n「お!良かったら食べてみて!」新商品の試食を頼まれる。1D6を振ること。奇数なら美味しさのあまり《生命力》が1D6点と「空腹」の変調が回復する。偶数なら微妙すぎて《生命力》が1点減少する。", - "購買での出会い\n「……あ」陳列棚の商品に伸ばした手と手が触れあう。購買にいるキャラクターの中から好きなキャラクターの自分に対する《感情値》が1点上昇する(購買に誰がいるのかは、最終的にGMが決定すること)。", - "高価買い取り!\n「いいもの持ってるね。よかったら、それ引き取るよ」好きなアイテム一つと【お金】一つを交換することができる。", - "デリバリー\n「あー、今は品切れだねぇ。補充したら届けるよ」好きなアイテムを一つ選ぶ。そのアイテムの調達の判定を一度行うことができる。調達の判定に成功すると、そのアイテムを次のパート以降、好きなタイミングで入手することができる。", - "サイフ紛失\n「あれ? あれれれッ!?」サイフを落としてしまった。【お金】を持っていたら、それを全て失う。", - ] - getBreakTable(name, table) - end - - def getClubRoomBrakeTable - name = '部室' - table = [ - "風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", - "謎の忠告\n「霊があなたに何かを訴えかけようとしてる…」〔政治力〕の判定を行う。成功すると、手がかり一つを選び、その情報を公開する。失敗すると「恐怖」の変調を受ける。", - "後輩現る!\n「どこまでもついていきますよ先輩!」いつのまにか可愛い後輩ができていた。もしも【クラブ】のコミュを修得していたら、アイテムの【後輩】一つを獲得する。", - "先輩現る!\n「おう、さしいれ持ってきたぞ!」先輩がやってくる。アイテムの「ごちそう」を一つ獲得する。", - "青春の汗\n「ダハハハ! 青春の汗を流そうぜ!」部室の中から体育会系部員の熱い会話が聞こえてきた。好きな能力値で判定を行う。成功すると、このセッションの間、〔青春力〕の修整が1点上昇する。失敗すると「バカ」の変調を受ける。", - "茶飲み話\n「まぁまぁ。お茶でも飲んでいきなよ」知り合いの所属する部室でお茶を飲む。〔政治力〕の判定を行う。成功すると、《アウル》が1点回復する。", - "熱い議論「もっと本質的な部分に目を向けようよ!」部室の中から文科系部員の高度な会話が聞こえてきた。好きな能力値で判定を行う。成功すると、このセッションの間、〔学力〕の修整が1点上昇する。失敗すると「孤独」の変調を受ける。", - "マネージャー\n「あれ? ケガしてるじゃないですか」もしも【クラブ】のコミュを修得していたら、可愛いマネージャーが絆創膏をくれる。《生命力》が1D6点回復する。", - "突然の料理\n「ちょっと付き合えよ」もしも【クラブ】のコミュを修得していたら、仲間の部員に呼び止められる。〔政治力〕で判定を行う。成功すると、自分の放課後欄の中から好きな【クラブ】一つを選び、□にチェックを入れる。", - "仲間の告白\n「キミ、最近なんかいい感じだよね」もしも【クラブ】のコミュを修得していたら、部室にいるキャラクターの中から好きな者を一人選び、そのキャラクターの自分に対する《感情値》が1点上昇する(部室に誰がいるのかは、最終的にGMが決定する事)", - "門外不出品?\n「なんだこれ……?」部室の奥から、いわれのありそうな古書が出てくる。外国の言葉で書かれているみたいだけど……?〔学力〕で判定を行う。必要な成功度は、自分のカオスレートの絶対値となる(1未満にはならない)。成功すると、そのセッションの間、自分のカオスレートを1点上昇するか、1点減少する。", - ] - getBreakTable(name, table) - end - - def getStudentCouncilBrakeTable - name = '生徒会室' - table = [ - "風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が真夜中パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。真夜中パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", - "秘密の会話\n「これ……極秘……はい……早急……対処……」生徒会質の面々の内緒話が漏れ聞こえてくる。これはいいことを聞かせてもらった。次に自分が調査の判定を行ったとき、その達成値が3点上昇する。", - "天魔情報\n「むむ!これは……」天魔に対する情報を検索していたら、気になる情報が……。〔学力〕の判定を行う。成功すると、このシナリオに登場する可能性のある天魔の種類すべてをGMから教えてもらえる。", - "気になるあいつ\n「不運。そういう名前なのか、あいつ」もしこのシナリオに登場しているNPCで、名前がわからないキャラクターがいたら、それを知ることができる。また、「好きなもの」と「嫌いなもの」が分からないキャラクターがいたら、「単語表」を使ってランダムに決める事ができる。", - "調べられてる?\n「あれ、これって……?」誰かが自分のことを検索した形跡がある。〔政治力〕で判定を行う。成功すると、自分について調査していた人物を発見!好きなNPC一人を選び、そのキャラクターの自分に対する《感情値》が1点上昇する。", - "プロフィール更新\n「自分のプロフィールを更新しておこう」〔政治力〕で判定を行う。成功すると、好きなキャラクター一人を選ぶ。そのキャラクターの自分に対する《感情値》の属性を《好意》にすることができる。", - "思わぬ一面\n「へぇ。こいつって、こんなヤツだったんだ」生徒会質で知り合いの思わぬ一面を知る。自分が《感情値》を持っているキャラクター一人を選ぶ。そのキャラクターへの《感情値》の属性を反転する。", - "友達検索\n「折角なんで、あいつのこと調べてみるか」友人の情報を検索してみる。〔政治力〕で判定を行う。成功すると、PCの中から好きなキャラクター一人を選ぶ。そのキャラクターに対する《感情値》が1点上昇する。", - "同僚との遭遇\n「こんなとこで何してんの?」もしも【委員会】のコミュを修得していたら、仲間の委員に呼び止められる。〔政治力〕で判定を行う。成功すると、自分の放課後欄の中から好きな【委員会】一つを選び、□にチェックを入れる。", - "旧友との再会\n「おう!久しぶりッ!!」昔の友人とばったり再会。〔青春力〕の判定を行う。成功すると、昔貸していた本を返してくれる。アイテムの【参考書】を一つ獲得する。", - "謎の警告\n「深追いはするな。これは警告だ」携帯電話に謎の脅迫メールが届く。何者かに目をつけられたようだ。〔政治力〕で判定を行う。失敗すると「恐怖」の変調を受ける。", - ] - getBreakTable(name, table) - end - - def getDormitoryBrakeTable - name = '学生寮' - table = [ - "風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", - "友達との時間\n「だよねー」友達の部屋でお茶とお菓子をごちそうになる。《生命力》が1D6点、《アウル》が1点回復する。", - "思い出の日\n寮の友人とハメを外して、寮長に怒られる。学生寮にいるキャラクターの中から好きな者を一人選ぶ。自分とそのキャラクターは「バカ」の変調を受け、お互いに対する《感情値》が2点上昇する(寮に誰がいるのかは、最終的にGMが決定する事)。", - "引越しの手伝い\n「あ、今日からここに住む者です。よろしく」行きがかり上、引越しの手伝いをすることに。〔青春力〕で判定を行う。成功すると、感謝されてアイテムの【ごちそう】を一つ獲得する。", - "色々トーク\n友達を自分の部屋に呼んでボーイズトーク!ガールズトーク♪ 「青春力」の判定を行う。成功すると、自分に対して《好意》を持っている同姓のキャラクター全員の、自分に対する《感情値》が1点上昇する。判定に失敗するか、自分に対して《好意》を持っているキャラクターが一人もいないと「孤独」の変調を受ける。", - "好物発見!\n「お、ラッキー♪」冷蔵庫の中に好物を発見。分類が「食物」のアイテムの中から好きなものを一つ選ぶ。それを一つ獲得する。使用するときに1D6を振ること。奇数が出たら、問題なく使用できる。偶数が出たら、それは腐っている。そのアイテムの効果の代わりに「病気」の変調を受ける事。", - "お見舞い\n「ねぇ、大丈夫?」もしも「病気」か「孤独」の変調を受けていたら、友人がお見舞いに来てくれる。好きなキャラクター一人を選ぶ。自分とそのキャラクターは、お互いに対する《感情値》が1点上昇する。そして好きな変調一つが回復する。", - "魔蟲襲来!\n「カサカサカサ……」黒くて素早く動くアイツが現れた!〔学力〕で判定を行う。失敗すると、《アウル》が1点減少する。", - "恋の相談\n寮の友人から恋人に関する相談を受ける。もしも【恋人】のコミュを修得していたら、《アウル》が2点回復する。修得していなかったら「孤独」の変調を受ける。", - "寮に潜入\n「こっそり遊びにきてみない?」異性の友人を呼んでスリルを味わう。好きなキャラクター一人を選び、「青春力」で判定を行う。成功すると、自分とそのキャラクターは《アウル》が2点回復する。失敗すると、互いに対する《感情値》が1点減少する。", - "ささいなケンカ\n「なんだとーッ!」「なにをーッ!」ささいな行き違いから、他の住人とケンカになってしまう。〔青春力〕か〔政治力〕で判定を行う。〔青春力〕の判定に失敗すると《生命力》が2D6点減少する。〔政治力〕の判定に失敗すると「孤独」の変調を受ける。", - ] - getBreakTable(name, table) - end - - def getLibraryBrakeTable - name = '図書館' - table = [ - "風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", - "重たい空気\n静かな気配に圧倒される。とりあえず手近にあった本のページを開いてみるが……。〔学力〕で判定を行う。失敗すると「バカ」の変調を受ける。", - "文献調査\n「過去にも似たような事件があったようだ」文献を調べる。次に自分が調査の判定を行ったとき、その達成値が3点上昇する。", - "天魔対策\n「アイツの習性は……」天魔の事を調べる。天使か悪魔のエネミー一種を選んで、〔学力〕の判定を行う。成功すると、そのセッションの間、そのエネミーの攻撃に対して、ガード判定を行う場合、その達成値が2点上昇する。", - "物語の世界へ\n「…………」シーンと静まり返った雰囲気の中、読書が進む。本の中にどんどん入り込んでいく。すべての変調が回復し、「空腹」の変調を受ける。", - "本の貸し出し\n「へー、こんな本もあるんだ」アイテムの【週刊誌】か【参考書】のいずれか一つを獲得する。", - "授業の予習\nせっかく図書館に来たので、気になっていた科目について調べる。〔学力〕で判定を行う。成功すると、疑問点が解消される。自分の授業欄の中から好きなものを一つ選び、□にチェックを入れる。", - "図書館での出会い\n「……あ」書架の本に伸ばした手と手が触れ合う。図書館にいるキャラクターの中から好きな者を一人選び、そのキャラクターの自分に対する《感情値》が1点上昇する(図書館に誰がいるのかは、最終的にGMが決定する事)。", - "書物の夢\n本を読んでいるうちにいつの間にか眠ってしまったようだ。何か面白い夢を見たような気がするんだけど……うーん、まだ眠い。「眠気」の変調を受け、《アウル》が2点回復する。", - "謎の手紙\n「……ッ!?」本を開いてみると、そこにはあなた宛の手紙が……どうして、この本を読む事が分かったんだろう。〔青春力〕で判定を行う。成功すると、手がかり一つを選び、その情報を公開する。失敗すると、「恐怖」の変調を受ける。", - "残念!\n目当ての本はすでに借りられていた。残念!《アウル》が1点減少する。", - ] - getBreakTable(name, table) - end - - def getRoofBrakeTable - name = '屋上' - table = [ - "風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", - "通り雨\n「キャ〜〜〜〜!」突然雨がふってきた!みんな屋上を去っていく。屋上にいるキャラクターの中から好きな者を一人選び、そのキャラクターの自分に対する《感情値》が1点上昇する(屋上に誰がいるのかは、最終的にGMが決定すること)。", - "自動販売機\n「なんで屋上に自動販売機があるんだ?」細かい事は気にせず何かのもう。〔政治力〕の判定を行う。成功すると、アイテムの【ポーション】か【お酒】か【タバコ】のいずれか一つを獲得できる。", - "青空\n空を見上げると、自分がちっぽけな存在に思えてくる。〔青春力〕で判定を行う。成功すると、使用回数に制限がある授業かコミュを一つ選ぶ。その使用回数が一度分回復する。", - "物思い\n空をながめながら、物思いにふける。俺ってアイツの事、どう思ってるんだろう?〔青春力〕で判定を行う。成功すると、PCの中から好きなキャラクター一人を選ぶ。そのキャラクターに対する、《感情値》が1点上昇する。", - "開放感\n開放的で非常に気分がいい。《アウル》が1点と「眠気」の変調が回復する。", - "学園は広大だわ\n街並みを見下ろす。一体、この学園で何が起きているんだろう?〔学力〕で判定を行う。成功すると手がかり一つを選び、その情報を公開する。失敗すると、ほかの学生たちの姿が目に映り、今の自分に疑問がわいてくる。《アウル》が1点減少する。", - "嵐の予感\n雲の動きが早くなっている。吹き荒ぶ風に、嵐の予感を感じた。〔青春力〕で判定を行う。成功すると、そのセッションの間、《アウル》の限界値が1点上昇する。失敗すると風に吹かれて風邪をひいてしまう。「病気」の変調を受ける。", - "昼寝屋\nハンモックを貸し出している「昼寝屋」を発見。気持ちよさそうだ。〔政治力〕で判定を行う。成功すると、《生命力》が2D6点と「眠気」の変調が回復する。", - "欲望の宴\n美味しそうな弁当を食べる者、恋人同士でイチャイチャするもの、怠惰な眠りを貪る者……屋上は欲望の見本市のようだ。「空腹」、「孤独」、「眠気」の内、好きな変調を受けることができる。受けた変調一種につき《アウル》が2点回復する。", - "サビシガリヤ\n「……あなたも一人?」もしも「孤独」の変調を受けていたら、寂しそうな異性に声をかけられる。好きな異性のキャラクター一人を選ぶ。自分とそのキャラクターは、お互いに対する《感情値》が2点上昇する。そして好きな変調一つが回復する。", - ] - getBreakTable(name, table) - end - - def getLaboratoryBrakeTable - name = '研究室' - table = [ - "風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が真夜中パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。真夜中パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", - "装甲強化実験\n「ほう。面白い防具を使っているようだな」白衣を着た怪しげな生徒が防具の改造を申し出る。申し出を受け入れるなら、自分のもっている好きな防具一つを選んで、1D6を振る。奇数が出ると、そのセッションの間、その防具の装甲が1上昇する。偶数が出ると、その防具は破壊される。", - "試薬\n「この試薬を飲んでみてくれないか」毒々しい色のポーションを渡される。「政治力」で判定を行う。失敗すると、断りきれずそれを飲むハメになる。。1D6を振る。奇数が出ると《生命力》が2D6点、《アウル》が1点回復する。偶数が出ると、「恐怖」と「病気」の変調を受ける。", - "爆発事故\n「逃げろー!」研究室から数人の生徒が逃げ出してくる。なにかヤな予感。〔青春力〕で判定を行う。失敗すると、実験の爆発に巻き込まれる。《生命力》に2D6点のダメージを受ける。", - "威力強化実験\n「ほう。面白い武器を使っているようだな」白衣を着た怪しげな生徒が武器の改造を申し出る。申し出を受け入れるなら、自分のもっている好きな武器一つを選んで、1D6を振る。奇数が出ると、そのセッションの間、その武器の威力が1上昇する。偶数が出ると、その武器は破壊される。", - "命中強化実験\n「ほう。面白い武器を使っているようだな」白衣を着た怪しげな生徒が武器の改造を申し出る。申し出を受け入れるなら、自分のもっている好きな武器一つを選んで、1D6を振る。奇数が出ると、そのセッションの間、その武器に「精度2」の特殊効果が加わる(すでに「精度」の特殊効果のある武器は、その値が2上昇する)。偶数が出ると、その武器は破壊される。", - "威力安定実験\n「ほう。面白い武器を使っているようだな」白衣を着た怪しげな生徒が武器の改造を申し出る。申し出を受け入れるなら、自分のもっている好きな武器一つを選んで、1D6を振る。奇数が出ると、そのセッションの間、その武器に「安定性3」の特殊効果が加わる(すでに「安定性」の特殊効果のある武器は、その値が1上昇する)。偶数が出ると、その武器は破壊される。", - "バイオハザード\n「ピーーーー!ピーーーー!ピーーーー!」不吉な警告音が鳴り響く。バ、バイオハザードッ!?〔政治力〕で判定を行う。失敗すると、実験施設から漏れ出した奇妙な細菌に感染する。1D6を二回振って、ランダムに変調を二つ選び、それを受ける。", - "ビーカーコーヒー\n「一杯やるかい?」ビーカーに注がれた珈琲を貰う。結構美味いんだけど、ちゃんと洗ってるのかな?「眠気」と「空腹」の変調が回復する。", - "装甲安定実験\n「ほう。面白い防具を使っているようだな」白衣を着た怪しげな生徒が防具の改造を申し出る。申し出を受け入れるなら、自分のもっている好きな防具一つを選んで、1D6を振る。奇数が出ると、そのセッションの間、その防具に「堅牢2」の特殊効果が加わる(すでに「堅牢」の特殊効果のある防具は、その値が2上昇する)。偶数が出ると、その防具は破壊される。", - "失敗作\n「そいつは失敗作だよ。欲しければ持っていって構わない」価格が3以下の好きなアイテム一つを選ぶ。それを一個獲得する。このアイテムは、持ち主がファンブルすると、破壊される。", - ] - getBreakTable(name, table) - end - - def getPoolBrakeTable - name = 'プール' - table = [ - "風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", - "熱いシャワー\n「……ふぅ」プールから出て、暖かいシャワーで冷えた体を暖める。疲れが少しずつほぐれていく。《生命力》が1D6点回復する。", - "新作水着\n新しい水着の評判はどうかな?〔青春力〕の判定を行う。成功すると、プールにいるキャラクターの中から好きな者をその成功度と同じ人数だけ選び、そのキャラクターの自分に対する《感情値》が1点上昇する(プールに誰がいるのかは、最終的にGMが決定すること)。", - "ポロリもあるよ\nプールからあがろうとしたき、思わず水着がポロリ。げげ。今の誰か見てたッ!?周囲にいる異性のキャラクターの自分に対する《感情値》の属性が反転する。", - "熱視線\n誰かが、美しいフォームで飛び込み、水しぶきがあがる。思わず見惚れてしまう。プールにいるキャラクターの中から好きな者を一人選び、自分のそのキャラクターに対する《感情値》が1点上昇する(プールに誰がいるのかは、最終的にGMが決定すること)。", - "眼福眼福\n水着がまぶしい!いい眺めかも……。《アウル》が1点回復する。", - "人魚のように\n華麗なターンが決まり、周囲から賞賛の声があがる。プールにいるキャラクターの中から好きな者を一人を選び、そのキャラクターの自分に対する《感情値》が1点上昇する(プールに誰がいるのかは、最終的にGMが決定すること)。", - "プカプカ\n水に浮かんでのんびりプカプカ。《アウル》が1点回復する。", - "心地よい疲れ\n結構長い時間泳いだぞ。いい運動になったけど、お腹ペコペコダー。「空腹」の変調を受け、そのセッションの間、《生命力》の限界値が1D6点上昇する。", - "記録に挑戦!\n「今日は、どこまで泳げるかな?」」自己新記録に挑戦!〔学力〕で判定を行う。成功すると、自己新記録を更新して《アウル》が2点回復する。失敗すると、溺れてしまう。《生命力》を2D6点減少する。", - "地獄の特訓\n様々な地獄プールで特訓!みっちり自分の体をおいじめて、鍛えたぞ。〔青春力〕の判定を行う。成功すると、《生命力》が2D6点減少し、そのセッションの間、《生命力》の限界値が減少した《生命力》と同じ値だけ上昇する。", - ] - getBreakTable(name, table) - end - - def getInnerCourtBrakeTable - name = '中庭' - table = [ - "風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", - "オープンカフェ\nカフェテリアでお茶にする。優雅なひと時。《アウル》が1点回復する。", - "犬登場\n「ワンワンワン!」不思議な犬がグラウンドに現れる。ここを掘れと言っているようだが……。1D6を振ること。奇数なら、地面にはお金が埋まっていた【お金】を一つ獲得する。偶数なら、低級の天魔が封印されていた。「学力」で判定を行う。失敗すると《生命力》に3D6点のダメージを受ける。", - "観戦中\nグラウンドで行われている撃退士同士の特訓風景を眺めている。踏む。なるほどなぁ……。〔学力〕で判定を行う。成功すると、自分の授業欄の中から好きなものを一つ選び、□にチェックを入れる。", - "占い師\n「そこのあなた。死相がでています。」そう言って、占い研のメンバーに呼び止められる。〔政治力〕の判定を行う。成功すると、危険を回避する方法を占ってもらうことができる。次に自分が判定で大失敗したとき、その判定のサイコロを1度だけ振り直すことができる。", - "屋台\nお弁当屋さんや屋台が軒を並べている。美味しそうな匂いが漂ってきた。〔政治力〕の判定を行う。成功すると、色々な食事を食べて、《生命力》が1D6点と「空腹」の変調が回復する。", - "特訓参加\n「おい、そこのお前!お前も一緒にやれ!」授業中の先生に、無理やり授業に参加させられる。ひたすら攻撃を避けまくる。ふは。疲れたー。《生命力》が2D6点減少し、そのセッションの間、《生命力》の限界値が減少した《生命力》と同じ値だけ上昇する。", - "落し物\nあれ?こんなものが落ちてる。どうしたんだろう? 1なら【タバコ】、2なら【情報誌】、3なら【お洒落グッズ】、4なら【参考書】、5なら【阻霊符】、6なら【タリスマン】を一個獲得する。", - "突然の告白!\n「先輩、ずっと前から憧れてました!」そう言って、後輩が告白して来た。え?ええッ!?突然の事に頭が真っ白になってしまった。好きな異性のキャラクター一人を選ぶ。そのキャラクターの自分に対する《感情値》が2点上昇する。その後、〔青春力〕で判定を行う。失敗すると「バカ」の変調を受ける。", - "鉄球飛来!\n「おーい!危ないぞーッ!!」陸上部の投げた砲丸が飛んでくる。〔青春力〕で判定を行う。失敗すると《生命力》に2D6点のダメージを受ける。", - "ちょっぴり贅沢\n今日は自分にご褒美。学食で贅沢しちゃおっかなー〔政治力〕で判定を行う。成功すると《生命力》が2D6点と《アウル》1点が回復する。", - ] - getBreakTable(name, table) - end - - def getShoppingAvenueBrakeTable - name = '商店街' - table = [ - "風紀委員の巡回!\n「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。〔政治力〕で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。", - "自習\nファーストフード店でレポート執筆。……あまり進まないなぁ。〔学力〕で判定を行う。成功度を2以上獲得すると、レポートは完成。自分の授業欄の中から好きなもの一つを選び、□にチェックを入れる。", - "立ち話\n「よう。寄ってかないかい!」店の主人が陽気に声をかけてくる。〔政治力〕で判定を行う。成功すると、気になる話を聞かせてくれる。手がかり一つを選び、その情報を公開する。失敗すると、退屈な話に付き合わされる。「眠気」の変調を受ける。", - "雰囲気のいい店\n「へぇ。こんな店あったんだ」とても雰囲気のいい店を見つける。次に自分がデート判定を行うとき、その達成値が2点上昇する。", - "お気に入り!\n「おお!すごくいいッ!!」とってもこのみなオシャレアイテムを見つける。〔政治力〕の判定を行う。成功すると、アイテムの〔お洒落グッズ〕一個を獲得し、《アウル》1点を獲得する。", - "大売出し\n「スーパークリアランスバザール!」お買い得なキャンペーンをやっている。アイテムの中から好きなものを一つ選ぶ。そのアイテムの価格が1低いものとして調達の判定を一度行う事ができる(ただし1未満にはならない)", - "なじみの店\n先輩のアルバイトしているお店に遊びに行ってみた。色々サービスしてくれて大満足。《生命力》1D6点と《アウル》1点を回復する。", - "休日\nお目当ての店に行ってみたら、シャッターが閉まっていた。どうやら臨時休業の模様。がっくりきて、《アウル》を1点減少する。", - "泥棒\n「泥棒よー!捕まえてー!」商店街を走って逃げる不良生徒たち……捕まえるなら〔青春力〕で判定を行う。成功すると、泥棒を捕まえ、そのお礼としてアイテムの〔ポーション〕か〔タリスマン〕を一つ獲得する。失敗すると、泥棒を逃がした上に商店街の色々な場所を壊してしまい、しばらく出入り禁止に。このセッションの間、商店街で休憩を行うことができなくなる。", - "福引\n福引をやっていた!1D6を振る。1〜5の目がでたら残念賞。アイテムの【焼きそばパン】一つを手に入れる。6の目がでたら【お金】を二つ手に入れる。", - "家庭教師\n「ねぇねぇ、教えて酔う」近所の子供に勉強を教えてくれと頼まれる。〔学力で〕判定を行う。成功すると、彼らは尊敬の目できみを見つめる。アイテムの【後輩】を一つ獲得する。失敗すると「バカ」の変調を受ける。", - ] - getBreakTable(name, table) - end - - def getDevastationBrakeTable - name = '廃墟' - table = [ - "迷子\n「きゃーーー!」少女がディアボロに襲われている。〔青春力〕で判定を行う。成功すると、少女を助けて感謝される。少女の自分に対する《感情値》が3点上昇し、その属性が《好意》になる。失敗すると、少女は命は取り留めたものの、傷つき倒れてしまう。《生命力》に2D6点のダメージと「孤独」変調を受ける。", - "ライバル登場?\n「一度、お前と手合わせしてみたかったんだよ」撃退士らしき見覚えある人物が現れる。好きなNPCを一人選び、そのキャラクターの自分に対する《感情値》が1点上昇する。", - "無人の部屋\n「…………」誰もいないはずなのに、何かの気配がする。イヤな感じだ。〔青春力〕で判定を行う。成功すると、視線の正体を発見する。それはかわいい子猫だった。あまりのかわいらしさに《アウル》を1点獲得する。失敗すると「恐怖」の変調を受ける。", - "戦いの跡\n戦いがあったであろう場所に、一振りの剣が突き刺さっていた。この剣の持ち主はどうなったんだろう…?アイテムの【大剣】一個を獲得する。", - "裏の事情通\n「あんたの知りたい情報を売ってやろうか?」情報屋らしき男が情報の購入を持ちかける。手がかり一つを選び、調達の判定を一度行うことができる。情報の価格は、手がかりの[必要成功度-1(1未満にはならない)]になる。情報の調達に成功すると、その情報を公開する。", - "怪しげな男\n「いいものがあるぜ。欲しいかい?]怪しげな男が【ポーション】を打っている。アイテムの【ポーション】の調達の判定を一度行うことができる。この【ポーション】の価格は3になるが、回復する《生命力》は3D6点になる。", - "縄張り\n「おいおい、ここは俺たちの縄張りだぜ]不良たちに絡まれる。〔政治力〕で判定を行う。成功すると、不良たちは捨て台詞と共に逃げ出す。もし、廃墟に自分に対して《敵意》の属性の《感情値》の持ち主がいた場合、その属性を反転する(廃墟に誰がいるのかは、最終的にGMが決定すること)。失敗すると、1D6点のダメージを受ける。", - "野良犬\n「グルルルルルッ!」野良犬たちが牙をむいている。〔青春力〕の判定を行う。失敗すると2D6点のダメージを受ける。", - "隠れ家\n「学園だとどうしても気分が出なくてなぁ」【酒】か【タバコ】を何個でも使用することができる。ここで【酒】か【タバコ】を一個使用するたびに追加で《アウル》が1点回復する。また、ここで【酒】や【タバコ】を使った場合、その効果によって「眠気」や「孤独」の変調を受けない。", - "実験\n「一度試してみたかったんだよな]ここでなら思い切り暴れても特に問題なさそうだ。あの技を試してみるか……。[青春力]で判定を行う。成功すると、自分の授業欄の中から好きなもの一つを選び、□にチェックを入れる。", - "不良撃退士\n「ほう。いいもの持ってるじゃないか。そいつを寄こしたら見逃してやるよ」自分の携行品の中で一番価格の高いものを一つ選ぶ。それを渡せば特に何も起こらない。もし渡すのを断るのなら、〔青春力〕で判定を行う。成功度が2以下だった場合、3D6点のダメージを受ける。", - ] - getBreakTable(name, table) - end - - def getGateBrakeTable - name = 'ゲート' - table = [ - "尋問\nゲート内にひそんでいた天魔から情報を収集する。〔政治力〕の判定を行う。成功すると、このシナリオに登場する可能性のある天魔の種類すべてをGMから教えてもらえる。失敗すると、1D6点のダメージを受ける。", - "計略\n敵の計略に掛かる。〔政治力〕で判定を行う。失敗すると、GMは手がかり一つを選ぶ。その手がかりの必要成功度が1上昇する。この効果は累積しない。", - "活性化\n戦いを通じて、《アウル》の使い方を学んで行く。〔学力〕で判定を行う。成功すると、《アウル》を2点回復する。失敗すると、1D6点のダメージを受ける。", - "克服\n無数の敵と戦ううちに、心が研ぎ澄まされていく。好きな能力地で判定を行う。成功すると、その成功度と同じ数だけ変調を回復する。失敗すると、1D6点のダメージを受ける。", - "経験\nゲート内で多くの天魔と戦う。好きな能力値で判定を行う。成功すると、その成功度の数と同じだけ、成長欄のまだチェックの入っていない□をチェックする事ができる。失敗すると、1D6点のダメージを受ける。", - "不意打ち\n「……あれは、もしや?]ゲートの中で、恐ろしい程の殺気の持ち主を見かける。もしや、今回の事件の黒幕か?彼に不意打ちを仕掛けることができる。不意打ちを仕掛けるなら〔青春力〕の判定を行う。成功すると、そのシナリオの黒幕(ボス)に[判定成功度×1]D6点のダメージを与える事ができる。失敗すると、3D6点のダメージを受ける。", - "捜索\nゲート内を捜索する。〔学力〕で判定を行う。成功すると、「初期アイテム決定表」を一度使用し、そのアイテム一個を獲得する。失敗すると、1D6点のダメージを受ける。", - "戦友\n一緒に敵と戦ううちに、絆が芽生えてくる。〔青春力〕で判定を行う。成功すると、ゲートにいるキャラクターの中から好きなものを一人選ぶ。自分とそのキャラクターは、お互いに対する《感情値》が1点上昇する(ゲートに誰がいるのかは、最終的にGMが決定すること)。失敗すると1D6点のダメージを受ける。", - "援軍\nゲートには大量の敵が待ち構えていた。〔政治力〕のはんていを行う。成功すると、仲間が助けに来てくれて逃げ出すことができる。アイテムの【ポーション】を一つ獲得する。失敗すると、1D6点のダメージを受ける。", - "罠\nゲートに仕掛けられた罠が発動する!〔学力〕で判定を行う。失敗すると、1D6点のダメージとランダムに選んだ変調一つを受ける。", - "魔剣\n敵と戦う内に、武器の切れ味が鋭くなっている。〔学力〕で判定を行う。成功すると好きな武器一つを選ぶ。このセッションの間、威力が1点上昇する。失敗すると、1D6点のダメージを受ける。", - ] - getBreakTable(name, table) - end - - def getBreakTable(name, table) - number, = roll(2, 6) - index = number - 2 - - text = table[index] - return '' if text.nil? - - return "#{name}休憩表(#{number}) #{text}" - end - - def getD6Table(name, table) - number, = roll(1, 6) - index = number - 1 - - text = table[index] - return '' if text.nil? - - return "#{name}(#{number}) #{text}" - end - - def getBattleFieldTable - name = '戦場表' - table = [ - "平地。\n特に特殊効果はない。", - "罠。\n落とし穴やセキュリティー装置など、無数の罠が仕掛けられた戦場。この戦場にいるキャラクターは、ダメージを受けたとき、速度によるダメージ修整が2倍になる。", - "障害物。\n林の中や狭い部屋の中など、自由に身動きすることが難しい戦場。この戦場にいるキャラクターは、プロットを行うとき、5以上の速度をプロットできなくなる。", - "機動戦\n車や電車、船や飛行機など、動いているものの上での戦闘を表す。この戦場にいるキャラクターは、何らかの行為判定にファンブルした場合〔青春力〕で判定を行う。失敗すると、行動済みになり、速度が0になる。", - "力場。\n展開や魔界の影響を強く受けている戦場。この戦場にいるキャラクターは、ラウンドの終了時に速度0にいると、〔学力〕の判定を行うことができる。成功すると、《アウル》を1点獲得できる。", - "修羅場\n自分たちとは別の撃退士や天魔たちが戦闘を行っていたり、悪意に満ちた第三勢力に囲まれていたりする戦場。この戦場にいるキャラクターは、ラウンドの終了時に速度0にいると、〔政治力〕の判定を行う。失敗すると、《生命力》が1D6点減少する。", - ] - getD6Table(name, table) - end - - def getFatalWoundsTable - name = '致命傷表' - table = [ - "圧倒的な攻撃が急所をつらぬく。\n行動不能になる。1D6ラウンド後の「ラウンドの終了時」に、まだ戦闘が継続しており、行動不能が回復していなければ、そのキャラクターは死亡する。", - "昏睡し、身体中から血と生きる意志が失われていく。\n行動不能になる。また、この行動不能から回復した後、1D6を振り、ランダムに選んだ変調一つを受ける。", - "大きな傷を負う。行動不能になる。", - "凄まじい一撃に意識を失う。\n《生命力》が0点になり、行動不能になる。", - "一瞬、気を失う。\n行動不能になる。1D6ラウンド後の「ラウンドの終了時」、もしくは、戦闘終了時に《生命力》が1点まで回復する(1D6ラウンドが経過するまでに、すでに《生命力》が1点以上に回復していた場合は、この効果は無効になる)。", - "凄まじい幸運。\nそのシーンに自分に《好意》を持っているキャラクターがいたら、代わりにそのキャラクターがダメージを受けることができる(ダメージを代わりに受けるかどうかは、そのキャラクターを操るプレイヤー、もしくはGMが決定する)。誰もダメージを代わりに受けなかった場合、行動不能になる。", - ] - getD6Table(name, table) - end - - def getFumbleTable - name = 'ファンブル表' - table = [ - "何もかもむなしくなる。誰かに対する《感情値》を1点減少する。", - "あまりの失敗に心理的変調をきたす。1D6を振ってランダムに変調一つを選び、それを受ける。", - "ポッキリと心が折れる。《アウル》を1点失う。", - "あまりにも酷い大失敗を見られてしまい、周囲のキャラクターからの評価が変わる。自分の周囲に、自分に対して《感情値》を持つキャラクターがいたら、それを反転させる。", - "敵の罠にかかる。自分の周りにいる、自分以外のすべての見方キャラクターは《生命力》を1D6点減少する。", - "アウルが暴走して、大惨事に。自分の《生命力》を2D6点減少する。", - ] - getD6Table(name, table) - end - - def getRandomNpcSchoolLife - name = "学生生活関連NPC表" - - table = [ - [11, "振り直し/任意"], - [12, "大山恵(おおやま・めぐみ):中等部3年0組:P84"], - [13, "黒瀧辰馬(くろたき・たつま):風紀委員長・大学部5年0組:P82"], - [14, "シルヴァリティア・ドーン:大学部1年0組:P83"], - [15, "岸崎蔵人(きしざき・くらんど):大学部5年0組:P84"], - [16, "レミエル・N・V:大学部2年0組:P83"], - [22, "神楽坂茜(かぐらざか・あかね):生徒会会長・高等部2年0組:P82"], - [23, "炎條忍(えんじょう・しのぶ):高等部1年0組:P83"], - [24, "中山寧々美(なかやま・ねねみ):新聞同好会会長・高等部3年0組:P83"], - [25, "恵ヴィヴァルディ(めぐみ・−):大学部2年0組:P83"], - [26, "轟闘吾(とどろき・とうご):高等部3年0組:P84"], - [33, "鬼島武(きじま・たけし):生徒会副会長・大学部1年0組:P82"], - [34, "クリスティーナ・カーティス:大学部1年0組:P83"], - [35, "潮崎紘乃(しおざき・ひろの):依頼斡旋所受付:P84"], - [36, "ライゼ:教師・寮長:P85"], - [44, "大塔寺源九郎(だいとうじ・げんくろう):生徒会書記・高等部3年0組:P82"], - [45, "ストローベレー:用務員:P83"], - [46, "竜崎アリス(りゅうざき・−):オペレーター:P84"], - [55, "大鳥南(おおとり・みなみ):生徒会会計・高等部3年0組:P82"], - [56, "筧鷹政(かけい・たかまさ):OB:P83"], - [66, "振り直し/任意"], - ] - - return getRandomNpc(name, table) - end - - def getRandomNpcOther - name = "教師・その他NPC表" - - table = [ - [11, "振り直し/任意"], - [12, "月摘紫蝶(るつみ・しちょう):教師:P84"], - [13, "棄棄(すてき):教師:P84"], - [14, "遠野冴草(とおの・さえぐさ):教師:P84"], - [15, "速水風子(はやみ・ふうこ):教師:P85"], - [16, "アリス・ペンデルトン:教師:P85"], - [22, "宝井正博(たからい・まさひろ):学園長:P82"], - [23, "白田悠里(しろた・ゆうり):教師:P85"], - [24, "常盤楓(ときわ・かえで):教師:P85"], - [25, "ダイナマ伊藤(−・いとう):保健医:P85"], - [26, "小日向千陰(おびなた・ちかげ):教師・司書:P85"], - [33, "ウーネミリア:悪魔:P114"], - [34, "太珀(たいはく):教師:P85"], - [35, "神無月灯(みなづき・あかり):ヴァニタス:P114"], - [36, "キーヨ:ヴァニタス:P114"], - [44, "マッド・ザ・クラウン:悪魔:P114"], - [45, "劉玄盛(りゅう・げんせい):シュトラッサー:P114"], - [46, "厄蔵(やくぞう):シュトラッサー:P114"], - [55, "ギメル・ツァダイ:天使:P114"], - [56, "ナターシャ:シュトラッサー:P114"], - [66, "振り直し/任意"], - ] - - return getRandomNpc(name, table) - end - - def getRandomNpcDownClassmen - name = "学生図鑑 下級学年表" - - table = [ - [11, "若菜白兎(わかな・しろう):初等部2年2組:P72"], - [12, "海原満月(かいばら・みづき):初等部4年1組:P66"], - [13, "雫(しずく):初等部4年1組:P60"], - [14, "相馬カズヤ(そうま・−):初等部4年1組:P48"], - [15, "廿九日神無(ひづめ・かんな):初等部4年1組:P62"], - [16, "カイン大澤(−・おおさわ):初等部5年2組:P12"], - [22, "機嶋結(きじま・ゆう):初等部6年2組:P123"], - [23, "静馬源一(しずま・げんいち):初等部6年12組:P78"], - [24, "花菱彪臥(はなびし・ひょうが):中等部1年1組:P53"], - [25, "天菱東希(てんびし・あずき):中等部2年2組:P61"], - [26, "御守陸(みもり・りく):中等部2年2組:P51"], - [33, "西園寺勇(さいおんじ・ゆう):中等部2年3組:P47"], - [34, "九条朔(くじょう・さく):中等部3年1組:P77"], - [35, "柴島華桜璃(くにじま・かおり):中等部3年1組:P48"], - [36, "唐沢完子(からさわ・かんこ):中等部3年2組:P57"], - [44, "雪成藤花(ゆきなり・とうか):中等部3年2組:P53"], - [45, "桐原雅(きりはら・みやび):高等部1年1組:P18"], - [46, "アイリス・L・橋場(−・るなくるす・はしば):高等部1年11組:P79"], - [55, "双星一(そうせい・はじめ):高等部1年120組:P152"], - [56, "影野恭弥(かげの・きょうや):高等部2年2組:P78"], - [66, "振り直し/任意"], - ] - - return getRandomNpc(name, table) - end - - def getRandomNpcUpperClassmen - name = "学生図鑑 上級学年表" - - table = [ - [11, "下妻笹緒(しもつま・ささお):高等部2年2組:P117"], - [12, "ファティナ・V・アイゼンブルク(−・フォン・−):高等部2年3組:P110"], - [13, "姫川翔(ひめかわ・しょう):高等部2年5組:P111"], - [14, "イシュタル:高等部2年115組:P152"], - [15, "小田切ルビィ(おだぎり・−):高等部3年4組:P109"], - [16, "大炊御門菫(おおいのみかど・すみれ):高等部3年6組:P112"], - [22, "朱頼天山楓(しゅらい・てんざん・かえで):高等部3年114組:P152"], - [23, "米流是武武(べるぜぶぶ):高等部3年117組:P152"], - [24, "麻生遊夜(あそう・ゆうや):大学部1年1組:P122"], - [25, "フィオナ・ボールドウィン:大学部1年1組:P79"], - [26, "アデル・リーヴィス:大学部1年50組:P152"], - [33, "エルディン:大学部1年50組:P152"], - [34, "斐川幽夜(ひかわ・ももや):大学部2年2組:P57"], - [35, "ミハイル・エッカート:大学部2年4組:P122"], - [36, "阿岳恭司(あたけ・きょうじ):大学部2年9組:P119"], - [44, "アンジェラ・アップルトン:大学部2年9組:P75"], - [45, "アウリーエ・F・ダッチマン(−・フライング・−):大学部3年50組:P152"], - [46, "ジェディファ・エルクラステ:大学部3年50組:P152"], - [55, "有田アリストテレス(ありた・−):大学部4年6組:P69"], - [56, "澄野絣(すみの・かすり):大学部4年6組:P61"], - [66, "振り直し/任意"], - ] - - return getRandomNpc(name, table) - end - - def getRandomNpc(name, table) - result, number = get_table_by_d66_swap(table) - return "#{name}(#{number}) #{result}" - end - - def getUsuallyEncount(level) - name = "日常遭遇表" - table = [ - [2, "ブラックシープ(基本p129)×2"], - [3, "イフリート(基本p126)、グリフォン(基本p126)"], - [4, "ファウスト(基本p129)、ワーウルフ(基本p129)"], - [5, "焔の蝶(p99)"], - [6, "デビルキャリアー(p102)、狂信者(p104)"], - [7, "ケルベロス(p99)、百足女(p99)"], - [8, "カプリコーン(p102)×2"], - [9, "邪神怪人(基本p135)"], - [10, "聖少女(基本p127)"], - [11, "業魔(基本p129)、デュアル(基本p126)"], - [12, "ファイアレーベン(p98)×2、ゴーレム(p99)"], - [13, "ブラッドウォーリア(p103)、ブラッドロード(p103)"], - [14, "フェニックス(p99)、ドラゴンゾンビ(p99)"], - [15, "マッドマーマンティス(p102)×2、バンパイアロード(p103)"], - [16, "ドラゴン(p99)×2"], - [17, "風紀委員(p107)、保安委員(p107)×2"], - ] - getEncountTableResult(name, table, level) - end - - def getBossEncount(level) - name = "ボスキャラクター遭遇表" - table = [ - [2, "剥奪天使(p101)、イフリート(基本p126)×PCと同じ数"], - [3, "没落悪魔(p105)、ブラックシープ(基本p129)×PCと同じ数"], - [4, "技巧派教員(基本p134)、一般人×PCと同じ数"], - [5, "肉体派教員(基本p135)、オペレーター×PCと同じ数"], - [6, "フェニックス(p99)、焔の蝶(p99)×PCと同じ数"], - [7, "美しきバンシー(p103)、デビルキャリアー(p102)×PCと同じ数"], - [8, "ドラゴン(p99)、キラー(基本p126)×PCと同じ数"], - [9, "バンパイアロード(p103)、戦闘員(基本p132)×PCと同じ数"], - [10, "殺戮天使(p101)、下級使徒(p100)×PCと同じ数"], - [11, "小悪魔(p105)、デスストーカー(p102)×PCと同じ数"], - [12, "仙人(基本p127)、サブラヒナイト(基本p126)×PCと同じ数"], - [13, "狂犬(p104)、ワーウルフ(基本p129)×PCと同じ数"], - [14, "下級天使(基本p128)、ケルベロス(p99)×PCと同じ数"], - [15, "誘惑悪魔(p105)、カプリコーン(p102)×PCと同じ数"], - [16, "権天使(基本p128)、百足女(p99)×PCと同じ数"], - [17, "悪魔貴族(基本p131)、ブラッドウォーリア(p103)×PCと同じ数"], - ] - getEncountTableResult(name, table, level) - end - - def getEncountTableResult(name, table, level) - dice, = roll(1, 6) - index = dice + level - - text = get_table_by_number(index, table, table.last.last) - return '' if text.nil? - - return "#{name}(#{index}) #{text}" - end - - TABLES = - { - - 'EBT' => { - :name => "お祭り室休憩表", - :type => '2d6', - :table => <<'TABLE_TEXT_END' -花火\n「たーまやー!」大きな花火があがって、祭りの雰囲気を盛り上げる。真夜中パートだった場合《好意》を持っているキャラクター一人を選ぶ。選んだキャラクターに対する《感情値》が2点上昇する。真夜中パート以外の場合ゆっくりして《アウル》が1点上昇する。 -客天魔\n「今日は客として来たんだよ。」天魔が客としてやって来ている!?何もしなければいいけど……。[政治力]で判定を行う。成功すると天魔から称賛され、《アウル》が1点回復する。失敗すると、天魔が暴れて帰ってしまい、[政治力]が2D6点減少する。 -クタクタ……\n「休ませて……。」祭りの準備にかり出されて、骨の髄まで疲れてしまった。【お金】を1個手に入れるが、「眠気」の変調を受ける。 -意外な一面\n「あいつ、あんな表情もできたんだ。」お祭りの中で、仲間の意外な一面を知る。PCの中から好きなキャラクターを選ぶ。選んだキャラクターに対する《感情値》の属性を反転する。 -出店!\nクラブやクラスでお店を出すことになった。[青春力]で判定を行う。判定に成功すると、お店は繁盛して【お金】を1個手に入れる。判定に失敗すると、恥ずかしい目に遭って【アウル】が1点減少する。 -お祭りの雰囲気\n「ワイワイ、ガヤガヤ。」お祭りだ!つい開放的な気分になって、隣の人を誘ってしまおうかなと思える。好きなPCを一人選ぶ。選んだキャラクターとデートを行う。このデートは選んだキャラクターが行動済みでも行え、デートを行っても行動済みにならない。必ず「友達デート表」を使用すること。 -対抗レース!\nグラウンドでクラブや委員会を巻き込んだ大レースが始まった!【クラブ】か【委員会】のコミュに所属しているPCは全員、[青春力]で判定を行う。成功すると、《アウル》が1点回復する。さらに、最も達成値が低いキャラクターはMVPとなり、【後輩】を手に入れる。 -水泳大会!\n「あの子の為に、泳ぐぞ!」大規模な水泳大会!さあ、新記録は出るのか!好きなPCを一人選び、[青春力]で判定を行う。判定に成功すると、選んだPCの自分に対する《感情値》が[判定値の成功度×1]点上昇する。このとき、【水着】もしくは【派手な水着】を持っている場合、この判定の達成値が3点上昇する。 -応援合戦!\n「フレー!フレー!」応援団に交じって仲間を鼓舞しよう!このパートの間、自分は「行動済み」であってもアシストを行うことができる。 -怪しげなお店\n「いらっしゃい。……ふふふ。」怪しいクラブが出店しているお店がある。本当に大丈夫か?1D6を振る。1の目が出た場合、【メイド服】を手に入れる。2の目が出た場合、【究極鉛筆】を手に入れる。3の目が出た場合、【みそかれーうどん】を手に入れる。4の目が出た場合、【進化の石】を手に入れる。5の目が出た場合、【牛乳】を手に入れる。6の目が出た場合、【安眠セット】を手に入れる。ただし、ここで手に入れた種別が「食物」のアイテムを使用すると「病気」の変調を受ける。 -キャンプファイヤーの下で……\nキャンプファイヤーを囲みながら、みんなで踊る。PC全員は、好きなPCを一人選ぶ。PC全員は、選んだPCに対する《感情値》が1点上昇し、属性は《好意》となる。 -TABLE_TEXT_END - }, - - 'GIT' => { - :name => "陰謀表", - :type => '2d6', - :table => <<'TABLE_TEXT_END' -「お前たちの血を邪神様の生贄に捧げてやる!」\n世界征服同好会の仕掛けた邪悪で陰湿なトラップにひっかかる。PC全員は《生命力》が2D6点減少する。このシナリオに登場する世界征服同好会のキャラクターの名前が分かっている場合、そのキャラクターに対する《感情値》を1点上昇させ、その属性を《敵意》にする。 -「……キミ、よく見るとかわいいね。ちょっとつきあわない?」\n世界征服同好会の一員からデートを申し込まれる。ランダムにPC一人を選ぶ。そのPCは、このシナリオに登場ソウル正解征服同好会のキャラクター一人と、デートを一回行うことができる。(行動済みにはならない。) -「すみません、少し道を尋ねたいのですが……。」\n謎の老婆に道を尋ねられる。PCの代表者は1D6を振ること。奇数だと老婆に変装した世界征服同好会の刺客だった。PC全員は《生命力》が1D6点減少し、「バカ」の変調を受ける。偶数だと助けた老人から感謝される。【焼きそばパン】一個か【タリスマン】一個を獲得する。 -「あなたは、だんだん眠くなるぅ〜。」\n世界征服同好会の催眠に合う。PC全員が受けている変調をすべて回復し、「眠気」の変調を受ける。 -「ねぇねぇ、あの人たちって……。」\n世界征服同好会が、PCたちの悪い噂をばらまく。このパートに判定を行う場合、[学力]以外の能力値で行う判定は、ファンブル率が3上昇する。 -「ねぇねぇ、ボクともっと遊んでよ。」\n世界征服同好会が、様々な妨害工作を行っている。このパートに行う判定は、ファンブル率が1上昇する。 -「ねぇねぇ、あの人って……。」\nPCたちの一人に世界征服同好会の一員であるという嫌疑がかけられる。ランダムにPC一人を選ぶ。そのPCに対して《好意》を持っているPCがいたら、そのPCは[政治力]で判定を行う。失敗するとNPCのそのキャラクターに対する《好意》が《敵意》に変わる。 -「ふふふ、僕の言う未来に興味はないかい?」\n世界征服同好会の催眠に合う。PC全員の《アウル》の現在値を1にする。 -「これ以上我々の邪魔をすると死ぬことになるぞ。」\n物陰から世界征服同好会の構成員が襲い掛かってきた。PCの代表者は[青春力]の判定を行う。成功すると、襲いかかってきた構成員を返り討ちにできる。GMは決戦フェイズに登場するエネミーから一体を選び、《生命力》を3D6点減少させること。失敗すると、戦いに敗れてしまう。PC全員は、《生命力》が1D6点減少し「恐怖」の変調を受ける。 -「ふふふふふ、ここで大人しくしておけ。」\n世界征服同好会に監禁されてしまう。PCの代表者は[学力]の判定を行う。失敗すると、プレイスの中から好きなものを一つ選ぶ。PC全員、そのパートは、そのプレイスで休憩する以外の行動を行えなくなる。 -「我々のファミリーに近づく者には消えてもらおう。」\n世界征服同好会の仕掛けた周到で悪逆なトラップにひっかかる。PC全員はゲームマスターの選んだ変調を一つ受ける。(PCごとにばらばらの変調を選んでもよい)。このシナリオに登場する世界征服同好会のキャラクターの名前が分かっている場合、そのキャラクターに対する《感情値》を1点上昇させ、その属性を《敵意》にする。 -TABLE_TEXT_END - }, - - 'HBT' => { - :name => "温泉休憩表", - :type => '2d6', - :table => <<'TABLE_TEXT_END' -風紀委員の巡回!\n"「そこ、何やってる!」風紀委員に見つかった。現在が授業パートであればこっぴどく叱られる。[政治力]で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。 -サウナで激闘!\n「……あいつに負けるわけには。」サウナでがまん比べが始ってしまう。[政治力]で判定を行う。成功すると《アウル》1点を獲得する。失敗すると、「病気」の変調を受ける。 -湯上りの一杯\n"「お風呂の後はこれだよな!」[政治力]で判定を行う。成功すると、変調をすべて回復することができる。 -あれ?服が……\n「あれ?何だこれ?」自分の着替えを入れたはずのロッカーを開けてみると、服が消えて、別の何かが……。「防具」を装備していたら、その中から一つを選び、それを消費する。そして消費したアイテムの代わりに「初期アイテム決定表(基本P43)」を一度使用して、ランダムに一つのアイテムを獲得する。 -偶然の出会い\n「あれ?来てたんだ。」知り合いと偶然出会う。好きなキャラクター一人を選び、[青春力]の判定を行う。成功すると、そのキャラクターとデートを一度行うことができる。 -いいお湯♪\n「ふう。体の芯から温まるぅ。」疲れがとれていく。《生命力》が1D6点、《アウル》が1点回復する。 -転倒!\n「はわわわわッ!」洗い場で滑って転びそうになる。[学力]で判定を行う。失敗すると、獲得していた「手がかり」を一つ失う。(「手がかり」の活用が行えなくなるだけで、情報を忘れるわけではない。) -命の洗濯\n「……。」お風呂に入りながら、今週の出来事を振り返る。失敗を次に活かさないと……。もしも、このセッションの間に一度以上判定に失敗していたら、《アウル》の限界値が1点上昇する。 -湯あたり\n「うう。のぼせちゃった。」お風呂に長時間入ってのぼせてしまった。1D6点のダメージを受けるか、次のパート行動しないか、どちらかを選ぶ。 -美容効果\nお肌がツルツルピカピカ!そのセッションの間、[青春力]の判定の達成値が1点上昇する。 -混浴ッッ!?\n湯船に入ってみると、そこには異性の姿が……ええッ!?男湯と女湯間違えたッ!?好きな異性のキャラクターを1人選ぶ。そのキャラクターの自分に対する《達成値》が2点上昇する。その後、[青春力]で判定を行う。失敗すると「バカ」の変調を受ける。 -TABLE_TEXT_END - }, - - 'HT' => { - :name => "ロウ表", - :type => '2d6', - :table => <<'TABLE_TEXT_END' -「たまには釣りにでも行くか」「釣り人表」を振る。 -「汚い下着があったので没収!」【インナー】(基本p104)を取得し《アウル》を1点取得する。ただし、誰のものかはPCの中からランダムで決定する。 -「街をきれいに!……ふー、心がきれいになったなあ!」ボランティア活動をしよう!プレイスの中から1つ選び、その表を振る。その後、生命力を1D6点回復する。 -「いやー、いいことを言ったなあ」お説教をする。あなた以外のPCを一人選ぶ。選ばれたPCとあなたはカオスレートを+1する。 -ついつい人の恋愛事情に口出ししてしまう。自分以外の任意のPC(できれば異性)2人をデートさせる。この表によるデートは行動を消費しない。 -身近にいるカオスなやつがむかついてしょうがない。理由もなく殴ってすべてのカオスレートが-2以下のPCに2D6点のダメージを与える。成功度を1として扱い好きな能力値でガードが可能。 -「な、なんでもないはずなのに!」叱っていたアイツのことが気になってきた……。もっともカオスレートが低い異性のキャラクターに対する《感情値》が2点上昇する。 -ネット上で情報について検索していたら、いつの間にかネット上で喧嘩していた。つい熱くなってしまう。「バカ」の変調を受けるが、好きな感情を1つだけ公開することができる。 -ありがたい高級なツボを手近にいたPCに売りつける。ランダムに【お金】を持つあなた以外のPCを選ぶ。そのキャラクターは【お金】をすべて消費し、【タリスマン】(基本p107)を入手するが、あなたは「孤独」を受ける。【お金】がなかった場合、舌打ちだけする。 -「欲望には勝てなかったよ……」ちょっとした誘惑から悪堕ちして、露出度の高い格好になるしやたらと黒と漢字を好むようになった。カオスレートを-5する。【タバコ】(基本p160)と【お酒】(基本p160)を1個ずつ獲得する。 -ロウとカオスの境界線なんて曖昧なものなのかもしれない。「カオス表」を振る。 -TABLE_TEXT_END - }, - - 'IT' => { - :name => "釣り人表", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -「良い物が釣れたぞ!」価格3以下のアイテムを1つ選んで入手する。 -足を釣った。行動済でなかった場合、行動済みになる。 -下着を釣ってしまった。【インナー】(基本p104)を入手する。ただし、誰のものかはPCの中からランダムで決定する。 -「太公望になった気分だ」釣りをしながら、政治を語る。カオスレートを+1もしくは-1できる。 -「大漁大漁!」お魚を換金して【お金】を1個入手する。 -ついサメを釣ってしまった。【キラー】(基本p126)と戦闘を行う。この戦闘はイベントシーン扱いとし、撤退できない。 -TABLE_TEXT_END - }, - - 'JH' => { - :name => "授業ハプニング表", - :type => '2d6', - :table => <<'TABLE_TEXT_END' -授業中に突然テロリストが侵入してくる。「日常遭遇表(p97)」を使ってエネミーを決定する。そのエネミーと、この授業判定を行ったキャラクターは戦闘を行う。 -もうすこしがんばりましょう。先生からのプレゼント。もし、この授業判定に失敗していたら、この表を使用したキャラクターは【参考書】(基本p107)を一つ獲得する。 -居眠りしてたらリフレッシュ!この表を使用したキャラクターは、《生命力》を1D6点回復する。 -先生からお使いを頼まれる。この表を利用したキャラクターは、「図書館」(基本p92)の「図書館休憩表」を使用する。 -アウルが暴走して事故発生!この表を使用したキャラクターは《生命力》を1D6点減少する。 -授業中に生徒同士で口論になる。この授業判定を行ったキャラクターの中に、この表を使用したキャラクターに対して《好意》を持っていたキャラクターがいたら、その属性を《敵意》にする。 -先生から課題をもらう。この表を使用したキャラクターは、次に[学力]で判定に成功するまで、この授業の□にチェックを入れることができない(チェックを入れることができないような場合は、特に効果はない)。 -先生は受講態度が気にくわなかったようだ。なぜか廊下に立たされる。この表を使用したキャラクターは、1D6を振って、ランダムに変調一つを選び、それを受ける。 -ちょっとだけ自習になる。この授業判定に参加したキャラクター全員は、「教室」(基本p87)の「教室休憩表」を一度ずつ使用する。 -を?こんなところにパンが落ちてる。この表を使用したキャラクターは【焼きそばパン】(基本p106)を一つ獲得する。この【焼きそばパン】を使用した時1D6を振る。1が出ると、通常の【焼きそばパン】の効果の代わりに《生命力》が1点減少する。 -先生はみんなの授業態度に大いに満足したようだ。授業判定の成否や授業レベル、授業の種類に関わらず、授業判定に参加したキャラクター全員は、この曜日の授業の□にチェックを入れる。 -TABLE_TEXT_END - }, - - 'KT' => { - :name => "カオス表", - :type => '2d6', - :table => <<'TABLE_TEXT_END' -「たまには釣りにでも行くか」「釣り人表」を振る。 -悪いとわかっていたがつい下着を手に取ってしまう。【インナー】(基本p104)を取得し《アウル》を1点獲得する。ただし、誰のものかはPCの中からランダムで決定する。 -「ヒャッハー!」カオスに染まってとりあえず手近なところに襲撃を行う。プレイスの中から1つを選び、その表を振る。その後【お金】を1個入手し、カオスレートを-1する。 -「なあ、ちょっとやってみないか。ちょっとでいいから、な?」ワルの道に勧誘する。あなた以外のPCを一人選ぶ。選ばれたPCとあなたはカオスレートを-1する。 -「横恋慕をしてナンボ」それがカオスの恋愛だ。一度でもデートをしたPCの片方に対してデートを行う。デートしたPCが居ない場合、任意のPCに対してデートを行う。この表によるデートは行動を消費しない。 -身近にいるロウなやつがムカついてしょうがない。理由もなく殴ってすべてのカオスレートが+2以上のPCに2D6点のダメージを与える。この攻撃は成功度を1として扱い、好きな能力値でガード可能。 -「だるい……休もう……」あなたの《生命力》を2D6点回復する。ただし、「眠気」の変調を受ける。 -ゲームセンターに行ってストレスを発散!……できればいいな。「青春力」の判定を行う。成功すると、《アウル》を2個獲得する。失敗するとムキになって【お金】を1個失う上に「バカ」の変調を受ける。 -「せっかくだから覗きをしよう。フヘへ……」「プール休憩表」もしくは「温泉休憩表(p78)を任意のPCに振らせ、その効果をPCに適応させる。その後あなたのそのPCに対する《感情値》を2点上昇させる。 -捨て猫を披露。あなたのカオスレートが+5され、あなたに対する《感情値》の属性がすべて反転する。また【後輩】(基本p106)を獲得する。 -ロウとカオスの境界線なんて曖昧なものなのかもしれない。「ロウ表」を振る。 -TABLE_TEXT_END - }, - - 'NA' => { - :name => "新初期アイテム決定表", - :type => '2d6', - :table => <<'TABLE_TEXT_END' -従 者 p89 -菓子折り p88 -ホイッスル p89 -おせっかいな友人 p89 -釣り竿 p89 -牛 乳 p88 -究極六角鉛筆 p90 -使い捨てカメラ p89 -メイド服 p89 -マスコットストラップ p89 -秘薬の小瓶 p88 -TABLE_TEXT_END - }, - - 'NT' => { - :name => "ニュートラル表", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -「善とか悪とか、全部煩わしくなってきた」カオスレートが+2以上もしくは2以下のPCがいる場合、そのキャラクター全てを理由もなく殴りつける。。殴りつけられたPCに2D6点のダメージを与える。この攻撃は成功度を1として扱い、好きな能力値でガード可能。 -「危ない!」電車に轢かれそうな子供が!?【生命力】を1D6点失うものの、助けて感謝される。いいことをすると気持ちいいなあ。カオスレート+1。 -心のバランスを保つため、釣りでもしよう。「釣り人表」を振る。 -「どうしよう」落し物の財布を拾っちゃった……。ネコババすると、カオスレートが-3されて【お金】を2つ入手。ちゃんと交番に届けるとカオスレートが+1されて、お礼に【お金】を1つ入手。 -急に興奮する。「ロウ表」もしくは「カオス表」のどちらか好きな方を振る。 -人に影響される。すべてのPCのカオスレートを合計し、+1以上だった場合、あなたのカオスレートを+2する。-1以下だった場合、あなたのカオスレートを-2する。0だった場合、特に何も起こらない。 -TABLE_TEXT_END - }, - - 'OJ1' => { - :name => "音楽ジャンル決定表A", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -さわやかな -ちょっと大人な -正統派 -初恋色の -女の子らしい -カオス全開☆ -TABLE_TEXT_END - }, - - 'OJ2' => { - :name => "音楽ジャンル決定表B", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -アイドルポップス -ロックチューン -ラブソング -バラード -テクノポップ -電波ソング -TABLE_TEXT_END - }, - - 'TBT' => { - :name => "修学旅行休憩表", - :type => '2d6', - :table => <<'TABLE_TEXT_END' -見回り先生の巡回!\n「そこ、何やってる!」見回りの先生に見つかった。現在真夜中パートであれば、こっぴどく叱られる。[政治力]で判断を行う。失敗すると、次のパートは行動できない。真夜中パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。 -自然災害\n修学旅行先で自然災害に遭ってしまい、観光しようにもできない。仕方ないのでホテルでゆっくりしよう。《生命力》を2D6点回復する。 -地元の天魔!\n「見かけない撃退士だな。」「初めて見る天魔だ。」好きな能力値で判定を行う。判定に成功すると、このシナリオで登場する天魔の種類をすべてGMから教えてもらえる。失敗すると《生命力》が1D6点減少する。 -二人で迷子\n「あれれ?こっちの道でよかったのかな?」二人ではぐれてしまう。PCの中から好きなキャラクターを1人選ぶ。自分の選んだキャラクターに対する《感情値》が1点上昇し、属性が《敵意》になる。 -ホームシック\n不意に、久遠ヶ原学園が懐かしくなっていしまう。「孤独」の変調を受ける。 -歴史的観光地\n歴史のある観光地を見て回り、自分の五感で知識を蓄える。[学力]で判定を行う。西欧すると、自分の修得している授業から好きなものを一つ選び、□にチェックを入れる。 -お土産屋\n「旅のお土産にお一ついかがですか?」お土産屋でいろいろなものをチェックする!役立つものもあるかも?[青春力]で判定を行う。成功すると、分類が[一般]、価値が2以下の好きなアイテムを一個獲得する。失敗すると、木刀やペナントなど役に立たないものを買い込んでしまう。【お金】を1個失う。 -名産品\nその他の名産品を食べて舌鼓を打つ。おいしい!《アウル》が1点回復し、「空腹」の変調が回復する。 -地元の学校\n「よろしゅーに。」「なかようせんとあかんよ。」地元の学校と共同授業だ。これは負けていられない。[学力]で判定を行う。判定に成功すると、地元の生徒からの《好意》が2点上昇し、「バカ」の変調が回復する。失敗すると、「バカ」の変調を受ける。 -枕投げ!\nやっぱり修学旅行といえば枕投げでしょ!PCの中から好きなキャラクターを一人選ぶ。[青春力]で判定を行う。成功すると、そのキャラクターは《生命力》が1D6点減少し、そのキャラクターの自分に対する《感情値》が2点上昇する。失敗すると、自分の《生命力》が1D6点減少し、そのキャラクターに対する《感情値》が2点上昇する。 -好きな人語り!\n「ねえねえ、この際だからハッキリ言っちゃおうよ。」修学旅行での楽しみ、それがこの好きな人を語り合う時間だ。真夜中パートならば、PC全員はそれぞれ《好意》が最も高いPCを一人発表する。発表したPCは、発表されたPCに対する《感情値》が2点上昇する。真夜中パート以外であれば、よく眠ってリフレッシュ。《アウル》が1点回復する。 -TABLE_TEXT_END - }, - - 'UBT' => { - :name => "潜入調査休憩表", - :type => '2d6', - :table => <<'TABLE_TEXT_END' -風紀委員の巡回!\n「そこ、何をやっている!」他校の風紀委員に見つかった。現在が授業パートであれば、こっぴどく叱られる。[政治力]で判定を行う。失敗すると、次のパートは行動できない。授業パート以外であれば、心身ともにリフレッシュ。《アウル》が1点回復する。 -協力者\n「キミが、久遠ヶ原学園から来た子だね。」正体を知っている協力者との密会。次に行う調査判定が2点上昇する。 -変装中\n「どう?似合ってる?」変装をする為に、支援物資が届いていた。【メガネ】か【ジャージ】の内、好きな方を獲得する。 -不良に絡まれる\n「おい、テメェ最近目立ってるんだってな。」どうやら、他校の不良生徒に絡まれてしまったようだ。穏便に解決しなければ。【お金】か【タバコ】か【お酒】があれば、1個消費する。消費できなかった場合、殴られて《生命力》が1D6点減少する。 -教師からの注意\n「キミ、ちゃんとしてくれないと困るよ。」規律をいつの間にか破っていたらしい。教師から注意を受けて、《アウル》が1点減少する。 -一般授業\n「で、あるからして……。」一般的な授業を受ける。これが外の世界の普通か……。[学力]で判定を行う。成功すると【一般授業】か【交流授業】の□にチェックを入れる。どちらもない場合、スケジュールの好きな欄に【一般授業】を入れられる。 -お昼\n「はい、今日のメニューはこれ。」少々混むことはあるが、問題なく普通に食べることができる。コメントし辛い味で、なんだか物足りないような気もするけど……。《生命力》を1D6点回復する。 -おっかけ\n「びびびっと来ました!」どうしても目立ってしまう自分に、おっかけができてしまう。やりにくい……。おっかけとデートを行うことを選べる。デートを行わなかった場合、「孤独」の変調を受ける。 -うっかり\n「え、なにあれ……?」いつもの調子で、学校の中で能力を使いそうになる。[政治力]で判定を行う。成功すると、うまく説得して協力者にできる。【おせっかいな友人】を獲得する。失敗すると、なんとか誤魔化せたが視線が痛い。撃退士以外の生徒の自分に対する《感情値》が2点上昇し、その属性は《敵意》となる。 -襲撃\n「きゃあー!」一般生徒が天魔に襲われている!バレないように助けないと……。好きな能力値で判定を行う。成功すると、うまくバレずに助け出せる。撃退士以外の生徒に対する《感情値》が3点上昇し、その属性は《好意》となる。失敗すると、助けることには成功したが、傷を負ってしまう。《生命力》が2D6点減少する。 -疑い\n「キミって、ひょっとすると……。」勘のいい生徒から、本格的に疑われてしまう。[政治力]で判定を行う。成功すると、疑いを晴らすことができた上に、重要な情報をくれる。GMが選択した手がかり一つの情報を公開する。失敗すると、疑いの視線が学校中から向けられてしまう。《アウル》を2点減少する。 -TABLE_TEXT_END - }, - - 'UT1' => { - :name => "ユニット名決定表1A", - :type => 'd66', - :table => <<'TABLE_TEXT_END' -11:白い -12:月の -13:私は -14:虹色の -15:放課後 -16:はじめての -22:乙女の -23:ピンクの -24:魔法の -25:蒼い -26:恋の -33:ときめき -34:太陽の -35:燃えよ -36:雨の -44:星の -45:君に -46:思い出の -55:都会の -56:やさしい -66:黒い -TABLE_TEXT_END - }, - - 'UT2' => { - :name => "ユニット名決定表1B", - :type => 'd66', - :table => <<'TABLE_TEXT_END' -11:革命 -12:エージェント -13:アリス -14:自転車 -15:忍者 -16:予知夢 -22:リボン -23:メロディー -24:バースデイ -25:チョコレート -26:プレゼント -33:カオス -34:つばさ -35:夏 -36:ココロ -44:ジェラシー -45:朝ご飯 -46:保健室 -55:祈り -56:迷宮 -66:久遠ヶ原学園 -TABLE_TEXT_END - }, - - 'UT3' => { - :name => "ユニット名決定表2A", - :type => 'd66', - :table => <<'TABLE_TEXT_END' -11:堕天使 -12:ラヴクラフト -13:セレブリティ -14:スターダスト -15:ロリポップ -16:ファースト -22:ストロベリー -23:シャイニー -24:ドリーム -25:ヴァンパイア -26:シンデレラ -33:スウィート -34:ウィッチ -35:フラワー -36:オレンジ -44:ダイアモンド -45:モノクロ -46:バレンタイン -55:スタイリッシュ -56:コンクリート -66:ニンジャ -TABLE_TEXT_END - }, - - 'UT4' => { - :name => "ユニット名決定表2B", - :type => 'd66', - :table => <<'TABLE_TEXT_END' -11:スレイヤー -12:ファイター -13:セッション -14:ドーナツ -15:ワルツ -16:ティアラ -22:ガール -23:スカイ -24:キス -25:シティ -26:ステージ -33:ラブ -34:ロマンス -35:ノート -36:ショコラ -44:プリンセス -45:キャンディ -46:ハニー -55:ハンター -56:ディスコ -66:ブルー -TABLE_TEXT_END - }, - }.freeze - - setPrefixes([ - 'EL.*', - 'DATE.*', 'FDATE.*', 'ODATE.*', 'MDATE.*', - 'RBT', 'SBT', 'BBT', 'CBT', 'DBT', 'IBT', 'FBT', 'LBT', 'PBT', 'NBT', 'ABT', 'VBT', 'GBT', 'HBT', - 'BFT', 'FWT', 'FT', - 'SRT', 'ORT', 'DRT', 'URT', - 'NJ\d+', 'BS\d+' - ] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/EmbryoMachine.rb b/src/src_bcdice/diceBot/EmbryoMachine.rb deleted file mode 100644 index 17ea76cac..000000000 --- a/src/src_bcdice/diceBot/EmbryoMachine.rb +++ /dev/null @@ -1,222 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class EmbryoMachine < DiceBot - # ゲームシステムの識別子 - ID = 'EmbryoMachine' - - # ゲームシステム名 - NAME = 'エムブリオマシンRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'えむふりおましんRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <=#{Regexp.last_match(1)}[#{Regexp.last_match(4)},#{Regexp.last_match(6)}]" } - string = string.gsub(/EM(\d+)([\+\-][\+\-\d]+)(\#(\d+))/i) { "2R10#{Regexp.last_match(2)}>=#{Regexp.last_match(1)}[20,#{Regexp.last_match(4)}]" } - string = string.gsub(/EM(\d+)([\+\-][\+\-\d]+)(@(\d+))/i) { "2R10#{Regexp.last_match(2)}>=#{Regexp.last_match(1)}[#{Regexp.last_match(4)},2]" } - string = string.gsub(/EM(\d+)([\+\-][\+\-\d]+)/i) { "2R10#{Regexp.last_match(2)}>=#{Regexp.last_match(1)}[20,2]" } - string = string.gsub(/EM(\d+)(@(\d+))(\#(\d+))/i) { "2R10>=#{Regexp.last_match(1)}[#{Regexp.last_match(3)},#{Regexp.last_match(5)}]" } - string = string.gsub(/EM(\d+)(\#(\d+))/i) { "2R10>=#{Regexp.last_match(1)}[20,#{Regexp.last_match(3)}]" } - string = string.gsub(/EM(\d+)(@(\d+))/i) { "2R10>=#{Regexp.last_match(1)}[#{Regexp.last_match(3)},2]" } - string = string.gsub(/EM(\d+)/i) { "2R10>=#{Regexp.last_match(1)}[20,2]" } - end - - def dice_command_xRn(string, nick_e) - return checkRoll(string, nick_e) - end - - # ゲーム別成功度判定(nD10) - def check_nD10(total, dice_total, _dice_list, cmp_op, target) - return '' if target == '?' - return '' unless cmp_op == :>= - - if dice_total <= 2 - " > ファンブル" - elsif dice_total >= 20 - " > クリティカル" - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - def checkRoll(string, nick_e) - output = '1' - - return output unless /(^|\s)S?(2[rR]10([\+\-\d]+)?([>=]+(\d+))(\[(\d+),(\d+)\]))(\s|$)/i =~ string - - string = Regexp.last_match(2) - diff = 0 - crit = 20 - fumble = 2 - mod = 0 - total_n = 0 - modText = Regexp.last_match(3) - - diff = Regexp.last_match(5).to_i if Regexp.last_match(5) - crit = Regexp.last_match(7).to_i if Regexp.last_match(7) - fumble = Regexp.last_match(8).to_i if Regexp.last_match(8) - mod = parren_killer("(0#{modText})").to_i if modText - - dice_now, dice_str, = roll(2, 10, (sortType & 1)) - dice_loc, = roll(2, 10) - dice_arr = dice_str.split(/,/).collect { |i| i.to_i } - big_dice = dice_arr[1] - output = "#{dice_now}[#{dice_str}]" - total_n = dice_now + mod - if mod > 0 - output += "+#{mod}" - elsif mod < 0 - output += mod.to_s - end - if output =~ /[^\d\[\]]+/ - output = "#{nick_e}: (#{string}) > #{output} > #{total_n}" - else - output = "#{nick_e}: (#{string}) > #{output}" - end - # 成功度判定 - if dice_now <= fumble - output += " > ファンブル" - elsif dice_now >= crit - output += " > クリティカル > " + get_hit_level_table(big_dice) + "(ダメージ+10) > [#{dice_loc}]#{get_hit_location_table(dice_loc)}" - elsif total_n >= diff - output += " > 成功 > " + get_hit_level_table(big_dice) + " > [#{dice_loc}]#{get_hit_location_table(dice_loc)}" - else - output += " > 失敗" - end - - return output - end - - def rollDiceCommand(command) - debug("rollDiceCommand command", command) - - output = '1' - type = "" - number = 0 - - case command - when /HLT/i - type = '命中部位' - number, = roll(2, 10) - output = get_hit_location_table(number) - when /SFT/i - type = '射撃ファンブル' - number, = roll(2, 10) - output = get_shoot_fumble_table(number) - when /MFT/i - type = '白兵ファンブル' - number, = roll(2, 10) - output = get_melee_fumble_table(number) - end - - if output != '1' - output = "#{type}表(#{number}) > #{output}" - end - return output - end - - # ** 命中部位表 - def get_hit_location_table(num) - table = [ - [ 4, '頭'], - [ 7, '左脚'], - [ 9, '左腕'], - [12, '胴'], - [14, '右腕'], - [17, '右脚'], - [20, '頭'], - ] - - return get_table_by_number(num, table) - end - - # ** ファンブル表 - def get_shoot_fumble_table(num) # 射撃攻撃ファンブル表 - output = '1' - table = [ - '暴発した。使用した射撃武器が搭載されている部位に命中レベルAで命中する。', - 'あまりに無様な誤射をした。パイロットの精神的負傷が2段階上昇する。', - '誤射をした。自機に最も近い味方機体に命中レベルAで命中する。', - '誤射をした。対象に最も近い味方機体に命中レベルAで命中する。', - '武装が暴発した。使用した射撃武器が破損する。ダメージは発生しない。', - '転倒した。次のセグメントのアクションが待機に変更される。', - '弾詰まりを起こした。使用した射撃武器は戦闘終了まで使用できなくなる。', - '砲身が大きく歪んだ。使用した射撃武器による射撃攻撃の命中値が戦闘終了まで-3される。', - '熱量が激しく増大した。使用した射撃武器の消費弾薬が戦闘終了まで+3される。', - '暴発した。使用した射撃武器が搭載されている部位に命中レベルBで命中する。', - '弾薬が劣化した。使用した射撃武器の全てのダメージが戦闘終了まで-2される。', - '無様な誤射をした。パイロットの精神的負傷が1段階上昇する。', - '誤射をした。対象に最も近い味方機体に命中レベルBで命中する。', - '誤射をした。自機に最も近い味方機体に命中レベルBで命中する。', - '砲身が歪んだ。使用した射撃武器による射撃攻撃の命中値が戦闘終了まで-2される。', - '熱量が増大した。使用した射撃武器の消費弾薬が戦闘終了まで+2される。', - '砲身がわずかに歪んだ。使用した射撃武器による射撃攻撃の命中値が戦闘終了まで-1される。', - '熱量がやや増大した。使用した射撃武器の消費弾薬が戦闘終了まで+1される。', - '何も起きなかった。', - ] - dc = 2 - output = table[num - dc] if table[num - dc] - return output - end - - def get_melee_fumble_table(num) # 白兵攻撃ファンブル表 - output = '1' - table = [ - '大振りしすぎた。使用した白兵武器が搭載されている部位の反対の部位(右腕に搭載されているなら左側)に命中レベルAで命中する。', - '激しく頭を打った。パイロットの肉体的負傷が2段階上昇する。', - '過負荷で部位が爆発した。使用した白兵武器が搭載されている部位が全壊する。ダメージは発生せず、搭載されている武装も破損しない。', - '大振りしすぎた。使用した白兵武器が搭載されている部位の反対の部位(右腕に搭載されているなら左側)に命中レベルBで命中する。', - '武装が爆発した。使用した白兵武器が破損する。ダメージは発生しない。', - '部分的に機能停止した。使用した白兵武器は戦闘終了まで使用できなくなる。', - '転倒した。次のセグメントのアクションが待機に変更される。', - '激しい刃こぼれを起こした。使用した白兵武器の全てのダメージが戦闘終了まで-3される。', - '地面の凹凸にはまった。次の2セグメントは移動を行うことができない。', - '刃こぼれを起こした。使用した白兵武器の全てのダメージが戦闘終了まで-2される。', - '大振りしすぎた。使用した白兵武器が搭載されている部位の反対の部位(右腕に搭載されているなら左側)に命中レベルCで命中する。', - '頭を打った。パイロットの肉体的負傷が1段階上昇する。', - '駆動系が損傷した。移動力が戦闘終了まで-2される(最低1)。', - '間合いを取り損ねた。隣接している機体(複数の場合は1機をランダムに決定)に激突する。', - '機体ごと突っ込んだ。機体が向いている方角へ移動力をすべて消費するまで移動する。', - '制御系が損傷した。回避値が戦闘終了まで-1される(最低1)。', - '踏み誤った。機体が向いている方角へ移動力の半分を消費するまで移動する。', - 'たたらを踏んだ。機体が向いている方角へ1の移動力で移動する。', - '何も起きなかった。', - ] - dc = 2 - output = table[num - dc] if table[num - dc] - return output - end - - def get_hit_level_table(num) - table = [ - [ 6, '命中レベルC'], - [ 9, '命中レベルB'], - [10, '命中レベルA'], - ] - - return get_table_by_number(num, table) - end -end diff --git a/src/src_bcdice/diceBot/EndBreaker.rb b/src/src_bcdice/diceBot/EndBreaker.rb deleted file mode 100644 index 61740b99a..000000000 --- a/src/src_bcdice/diceBot/EndBreaker.rb +++ /dev/null @@ -1,130 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class EndBreaker < DiceBot - # ゲームシステムの識別子 - ID = 'EndBreaker' - - # ゲームシステム名 - NAME = 'エンドブレイカー!' - - # ゲームシステム名の読みがな - SORT_KEY = 'えんとふれいかあ' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 - end - - # ダイスの出目の個数を集計 - result += " >" - (2..6).each do |num| - count = diceFullList.select { |i| i == num }.size - result += " [#{num}:#{count}個]" unless count == 0 - end - - return result - end - - def getLifeAndDeathUnknownResult() - table = [ - ' 1日:生還!', - ' 1日:生還!', - ' 1日:生還!', - ' 1日:生還!', - ' 1日:生還!', - ' 1日:生還!', - - ' 1日:生還!', - ' 5日:敵に捕らわれ、ひどい暴行と拷問を受けた。', - ' 2日:謎の人物に命を救われた。', - '10日:奴隷として売り飛ばされた。', - ' 8日:おぞましい儀式の生贄として連れ去られた。', - ' 9日:幽閉・投獄された。', - - ' 1日:生還!', - ' 7日:モンスター蠢く地下迷宮に滑落した。', - '12日強力なマスカレイドにとらわれ、実験台にされた。', - ' 8日:放浪中に遭遇した事件を、颯爽と解決していた。', - ' 5日:飢餓状態に追い込まれた。', - '15日:記憶を失い放浪した。', - - ' 1日:生還!', - '10日:異性に命を救われて、手厚い看病を受けた。', - ' 3日:負傷からくる熱病で、生死の境を彷徨った。', - '11日:闘奴にされたが、戦いと友情の末に自由を獲得した。', - ' 6日:負傷したまま川に落ち、遥か下流まで流された。', - ' 9日:敵に連れ去られ、執拗な拷問を受け続けた。', - - ' 1日:生還!', - ' 4日:繰り返す「死の悪夢」に苛まれた。', - ' 3日:巨獣の巣に連れ去られた。', - '10日:謎の集団に救われて、手厚い看病を受けた。', - ' 3日:チッタニアンの集落に迷い込み、もてなしを受けた。', - ' 7日:ピュアリィの群れにとらわれ、弄ばれた。', - - ' 1日:生還!', - ' 6日:楽園のような場所を発見し、しばらく逗留した。', - ' 9日:盗賊団に救われ、恩返しとして少し用心棒をした。', - '10日:熱病の見せる官能的な幻影にとらわれ、彷徨った。', - ' 5日:謎の賞金首に狙われ、傷めつけられていた。', - ' - :「五分五分」の一般判定。失敗すると死亡。', - ] - return get_table_by_d66(table) - end -end diff --git a/src/src_bcdice/diceBot/EtrianOdysseySRS.rb b/src/src_bcdice/diceBot/EtrianOdysseySRS.rb deleted file mode 100644 index 0497cf55f..000000000 --- a/src/src_bcdice/diceBot/EtrianOdysseySRS.rb +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/SRS' - -# 世界樹の迷宮SRSのダイスボット -class EtrianOdysseySRS < SRS - # ゲームシステムの識別子 - ID = 'EtrianOdysseySRS' - - # ゲームシステム名 - NAME = '世界樹の迷宮SRS' - - # ゲームシステム名の読みがな - SORT_KEY = 'せかいしゆのめいきゆうSRS' - - # 固有のコマンドの接頭辞を設定する - setPrefixes(['2D6.*', 'EO.*', 'SQ.*']) - - # 成功判定のエイリアスコマンドを設定する - set_aliases_for_srs_roll('EO', 'SQ') -end diff --git a/src/src_bcdice/diceBot/Fiasco.rb b/src/src_bcdice/diceBot/Fiasco.rb deleted file mode 100644 index 34bee85de..000000000 --- a/src/src_bcdice/diceBot/Fiasco.rb +++ /dev/null @@ -1,113 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Fiasco < DiceBot - # ゲームシステムの識別子 - ID = 'Fiasco' - - # ゲームシステム名 - NAME = 'フィアスコ' - - # ゲームシステム名の読みがな - SORT_KEY = 'ふいあすこ' - - # ダイスボットの使い方 - HELP_MESSAGE = < #{diceList[0]}個 2 => #{diceList[1]}個 3 => #{diceList[2]}個 4 => #{diceList[3]}個 5 => #{diceList[4]}個 6 => #{diceList[5]}個" - end - - def makeWhiteBlackDiceRoll(type, m) - if type == W_DICEROLL_COMMAND_TAG - whiteTotal, whiteDiceText, blackTotal, blackDiceText = makeArgsDiceRoll(m[BW_FIRST_DICE_INDEX], m[BW_SECOND_DICE_INDEX]) - result = "白#{whiteTotal}[#{whiteDiceText}]" - if blackDiceText - if m[BW_SECOND_DICE_TAG_INDEX] == W_DICEROLL_COMMAND_TAG - return "#{m}:白指定(#{W_DICEROLL_COMMAND_TAG})は重複できません。" - end - - result += " 黒#{blackTotal}[#{blackDiceText}]" - end - elsif type == B_DICEROLL_COMMAND_TAG - blackTotal, blackDiceText, whiteTotal, whiteDiceText = makeArgsDiceRoll(m[BW_FIRST_DICE_INDEX], m[BW_SECOND_DICE_INDEX]) - result = "黒#{blackTotal}[#{blackDiceText}]" - if whiteDiceText - if m[BW_SECOND_DICE_TAG_INDEX] == B_DICEROLL_COMMAND_TAG - return "#{m}:黒指定(#{B_DICEROLL_COMMAND_TAG})は重複できません。" - end - - result += " 白#{whiteTotal}[#{whiteDiceText}]" - end - else - return '' - end - - if blackTotal > whiteTotal - return "#{result} > 黒#{blackTotal - whiteTotal}" - elsif blackTotal < whiteTotal - return "#{result} > 白#{whiteTotal - blackTotal}" - end - - return "#{result} > 0" - end - - def makeArgsDiceRoll(firstDice, secondDice) - secondTotal = 0 - - firstTotal, firstDiceText, = roll(firstDice, 6) - - if secondDice - if secondDice.to_i > 0 - secondTotal, secondDiceText, = roll(secondDice, 6) - else - secondDiceText = "0" - end - end - - return firstTotal, firstDiceText, secondTotal, secondDiceText - end -end diff --git a/src/src_bcdice/diceBot/Fiasco_Korean.rb b/src/src_bcdice/diceBot/Fiasco_Korean.rb deleted file mode 100644 index 989a7970d..000000000 --- a/src/src_bcdice/diceBot/Fiasco_Korean.rb +++ /dev/null @@ -1,112 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Fiasco_Korean < DiceBot - # ゲームシステムの識別子 - ID = 'Fiasco:Korean' - - # ゲームシステム名 - NAME = '피아스코' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Korean:피아스코' - - # ダイスボットの使い方 - HELP_MESSAGE = < #{diceList[0]}개 2 => #{diceList[1]}개 3 => #{diceList[2]}개 4 => #{diceList[3]}개 5 => #{diceList[4]}개 6 => #{diceList[5]}개" - end - - def makeWhiteBlackDiceRoll(type, m) - if type == W_DICEROLL_COMMAND_TAG - whiteTotal, whiteDiceText, blackTotal, blackDiceText = makeArgsDiceRoll(m[BW_FIRST_DICE_INDEX], m[BW_SECOND_DICE_INDEX]) - result = "흰색#{whiteTotal}[#{whiteDiceText}]" - if blackDiceText - if m[BW_SECOND_DICE_TAG_INDEX] == W_DICEROLL_COMMAND_TAG - return "#{m}:흰색 지정(#{W_DICEROLL_COMMAND_TAG})은 중복될 수 없습니다." - end - - result += " 검은색#{blackTotal}[#{blackDiceText}]" - end - elsif type == B_DICEROLL_COMMAND_TAG - blackTotal, blackDiceText, whiteTotal, whiteDiceText = makeArgsDiceRoll(m[BW_FIRST_DICE_INDEX], m[BW_SECOND_DICE_INDEX]) - result = "검은색#{blackTotal}[#{blackDiceText}]" - if whiteDiceText - if m[BW_SECOND_DICE_TAG_INDEX] == B_DICEROLL_COMMAND_TAG - return "#{m}:검은색 지정(#{B_DICEROLL_COMMAND_TAG})은 중복될 수 없습니다." - end - - result += " 흰색#{whiteTotal}[#{whiteDiceText}]" - end - else - return '' - end - - if blackTotal > whiteTotal - return "#{result} > 검은색#{blackTotal - whiteTotal}" - elsif blackTotal < whiteTotal - return "#{result} > 흰색#{whiteTotal - blackTotal}" - end - - return "#{result} > 0" - end - - def makeArgsDiceRoll(firstDice, secondDice) - secondTotal = 0 - - firstTotal, firstDiceText, = roll(firstDice, 6) - - if secondDice - if secondDice.to_i > 0 - secondTotal, secondDiceText, = roll(secondDice, 6) - else - secondDiceText = "0" - end - end - - return firstTotal, firstDiceText, secondTotal, secondDiceText - end -end diff --git a/src/src_bcdice/diceBot/FilledWith.rb b/src/src_bcdice/diceBot/FilledWith.rb deleted file mode 100644 index 76b65889c..000000000 --- a/src/src_bcdice/diceBot/FilledWith.rb +++ /dev/null @@ -1,1542 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class FilledWith < DiceBot - # ゲームシステムの識別子 - ID = 'FilledWith' - - # ゲームシステム名 - NAME = 'フィルトウィズ' - - # ゲームシステム名の読みがな - SORT_KEY = 'ふいるとういす' - - # ダイスボットの使い方 - HELP_MESSAGE = <= fmb - result += " > ファンブル!" - else - # 成否判定 - unless difficultyText.nil? - success = difficulty - dice - if dice <= difficulty - result += " > 成功(成功度:#{success})" - else - result += " > 失敗(失敗度:#{success})" - end - end - end - - return result - end - - def getValue(text, defaultValue) - return defaultValue if text.nil? || text.empty? - - parren_killer("(0" + text + ")").to_i - end - - def getAdjustNumber(number, table) - min = table.first.first - return min if number < min - - max = table.last.first - return max if number > max - - return number - end - - # 必殺技表 - def getSpecialResult - table = [ - '[命中]判定に出目[1,1,1]でクリティカル。更に致傷力に「SLv×20」のボーナスを得る。', - '[命中]判定と致傷力に「SLv×10」のボーナスを得る。', - '致傷力に「SLv×10」のボーナスを得る。', - '攻撃が命中するとバッドステータス「転倒」を与える。', - '通常攻撃。', - '[命中]判定に[6,6,6]でファンブル。更に、使用者がバッドステータス「転倒」を受ける。', - ] - return get_table_by_1d6(table) - end - - # マジカルクッキング - def getCookResult(lv) - cook(lv, "") - end - - def cook(lv, num) - case lv - when 1 - table = [ - 'おべんとミートボール', - 'パリパリ小魚', - 'キャロットタルト', - 'おにぎり', - lambda { return cook(2, 5) }, - lambda { return cook(2, 6) }, - ] - when 2 - table = [ - 'カリカリミミズ肉', - '竹つきチクワ', - 'トロピカルジュース', - 'イナリ寿司', - lambda { return cook(3, 5) }, - lambda { return cook(3, 6) }, - ] - when 3 - table = [ - 'ホットミートパイ', - '魔界魚の目玉', - 'パンプキンプリン', - 'スタミナ丼', - lambda { return cook(4, 5) }, - lambda { return cook(4, 6) }, - ] - when 4 - table = [ - 'ジャンボ串焼き', - 'シルヴァまっしぐら', - 'フラウアイスクリーム', - 'ピクニックランチ', - lambda { return cook(5, 5) }, - lambda { return cook(5, 6) }, - ] - when 5 - table = [ - 'グラント風香草焼き', - 'エドマエスシ', - 'スターフルーツパフェ', - '具沢山本格カレー', - lambda { return cook(6, 5) }, - lambda { return cook(6, 6) }, - ] - when 6 - table = [ - 'ドラゴンステーキ', - '刺身盛り合わせ', - 'エデンのアップルパイ', - 'フォートレス炒飯', - lambda { return cook(7, 5) }, - lambda { return cook(7, 6) }, - ] - when 7 - table = [ - 'マツザカスペシャル', - 'オオトロスシ', - 'スノーホワイトボンブ', - 'よもつへぐい', - lambda { return cook(8, 5) }, - lambda { return cook(8, 6) }, - ] - when 8 - table = [ - '超特大マンガ肉', - '特上うな丼', - '魔将樹のかき氷', - 'ヘブンズランチ', - lambda { return cook(9, 5) }, - lambda { return cook(9, 6) }, - ] - when 9 - table = [ - '世界樹のサラダ', - '世界樹のサラダ', - '世界樹のサラダ', - '黄金のラダマン鍋', - '黄金のラダマン鍋', - '黄金のラダマン鍋', - ] - end - - result, number = get_table_by_1d6(table) - if result.class.name == "Array" - number = result[1] - result = result[0] - end - number = "#{num}#{number}" - return result, number - end - - # フィルトウィズナンバーワンくじ(GURPS-FW版) - def getLotResult(type) - if type == "P" - premium(1, "") - else - normal(1, "") - end - end - - # ノーマルくじ表 - def normal(phase, num) - case phase - when 1 - table = [ - 'イレブンチキン', - 'イレブンチキン', - 'イレブンチキン', - lambda { return normal(2, 4) }, - lambda { return normal(2, 5) }, - lambda { return normal(3, 6) }, - ] - when 2 - table = [ - 'バロールたわし', - 'イグニスジッポ', - 'ヤコ仮面or梟の文鎮(選択可)', - 'ナレッジのハンモックorジンジャビースト', - lambda { return normal(3, 5) }, - lambda { return normal(3, 6) }, - ] - when 3 - table = [ - '特性HPポーション', - '特性MPポーション', - '黒い甲冑', - '天体望遠鏡', - '金獅子の剥製', - lambda { return normal(4, 6) }, - ] - when 4 - table = [ - '特性スタミナポーション', - '戦乙女の兜', - 'フェンリルの首輪', - 'フェニックスカーペット', - '動くアダマンゴーレム', - lambda { return normal(5, 6) }, - ] - when 5 - table = [ - 'キャンディークッション', - '屑鉄の金床', - '薪割り王の斧', - 'ロジエの水差し', - '箱舟の模型', - lambda { return premium(5, 6) }, - ] - end - - result, number = get_table_by_1d6(table) - if result.class.name == "Array" - number = result[1] - result = result[0] - end - number = "#{num}#{number}" - return result, number - end - - # プレミアムくじ表 - def premium(phase, num) - case phase - when 1 - table = [ - 'プレミアムチキン', - 'プレミアムチキン', - 'プレミアムチキン', - lambda { return normal(3, 4) }, - lambda { return premium(2, 5) }, - lambda { return premium(2, 6) }, - ] - when 2 - table = [ - '親衛隊バッジ', - 'ハタモトチャブダイ', - '星のコンパス', - '白銀の甲冑', - lambda { return normal(4, 5) }, - lambda { return premium(3, 6) }, - ] - when 3 - table = [ - '特性クイックHPポーション', - '特性クイックMPポーション', - '特製クイックスタミナポーション', - '火龍のフィギュアor氷龍のフィギュア(選択可)', - 'ヒメショーグンドレス', - lambda { return premium(4, 6) }, - ] - when 4 - table = [ - 'クイックユグドラポーション', - '銀河龍のフィギュア/ドラゴン', - '銀河龍のフィギュア/魔族', - '魔族チェスセット', - 'イグニスコンロ', - lambda { return premium(5, 6) }, - ] - when 5 - table = [ - 'グレヴディバリウス', - '天使の望遠鏡orデスの目覚まし時計(選択可)', - '世界樹の蔦', - '死神の飾りドレス', - 'ザバーニヤ等身大フィギュア', - lambda { return premium(6, 6) }, - ] - when 6 - table = [ - 'イレブンチキン', - 'イレブンチキン(2ピース)', - 'イレブンチキン(3ピース)', - 'イレブンチキン(6ピース)', - 'イレブンチキン(12ピース)', - 'wish star', - ] - end - - result, number = get_table_by_1d6(table) - if result.class.name == "Array" - number = result[1] - result = result[0] - end - number = "#{num}#{number}" - return result, number - end - - # 夢幻の迷宮財宝表 - def getTresureResult(command) - return nil unless /TRS(\d+)([\+\-]\d)?/ === command - - rank = Regexp.last_match(1).to_i - modify = Regexp.last_match(2).to_i - - tableName = "財宝表" - - rank += modify unless modify.nil? - rank = 0 if rank < 0 - rank = 10 if rank > 10 - - case rank - when 0 - table = [ - 'HPポーション(消耗品)', - 'FPポーション(消耗品)', - 'マジックパウダー:火(消耗品)', - 'マジックパウダー:氷(消耗品)', - 'マジックパウダー:雷(消耗品)', - '500GP', - ] - - when 1 - table = [ - '高級HPポーション(消耗品)', - '高級FPポーション(消耗品)', - '高級抵抗ポーション(消耗品)', - '高級鉄壁ポーション(消耗品)', - 'マジックパウダー:火、氷、雷の3点セット(消耗品)', - '1000GP', - ] - - when 2 - table = [ - '鈴のお守り(装飾品)', - '盗賊の小手(装飾品)', - '狩人の羽帽子(装飾品)', - '狙撃手の指貫(装飾品)', - '「スタミナバンド」「健康お守り」「レザーマント」3点セット', - '2000GP', - ] - - when 3 - table = [ - '最高級HPポーション(消耗品)', - '最高級FPポーション(消耗品)', - '最高級抵抗ポーション(消耗品)', - '任意の装飾品1つ(3000GPまでのもの)', - 'アタッチメント割引券(全員に1枚)', - 'GP', - ] - - when 4 - table = [ - '任意の「ミスリル」武器1つ', - 'ミスリルシールド(盾)', - 'ミスリルメイル(鎧)', - '任意の装飾品1つ(5000GPまでのもの)', - 'アタッチメント割引券(全員に2枚)', - '5000GP', - ] - - when 5 - table = [ - '任意の武器1つ(10000GPまでのもの)', - '任意の盾1つ(10000GPまでのもの)', - '任意の鎧1つ(10000GPまでのもの)', - '最高級HPポーション(人数分)', - '任意の装飾品1つ(10000GPまでのもの)', - '7500GP', - ] - - when 6 - table = [ - '任意の武器1つ(15000GPまでのもの)', - '任意の盾1つ(15000GPまでのもの)', - '任意の鎧1つ(15000GPまでのもの)', - '任意の装飾品1つ(15000GPまでのもの)', - '最高級FPポーション(人数分)', - '10000GP', - ] - - when 7 - table = [ - '任意の武器1つ(30000GPまでのもの)', - '任意の盾1つ(30000GPまでのもの)', - '任意の鎧1つ(30000GPまでのもの)', - '任意の装飾品1つ(30000GPまでのもの)', - '蘇生ポーション(消耗品)', - '20000GP', - ] - - when 8 - table = [ - '任意の武器1つ(60000GPまでのもの)', - '任意の盾1つ(60000GPまでのもの)', - '任意の鎧1つ(60000GPまでのもの)', - '任意の装飾品1つ(60000GPまでのもの)', - '蘇生ポーション(装飾品)+アタッチメント割引券10枚(割引券は人数分)', - '40000GP', - ] - - when 9 - table = [ - '任意の武器1つ(100000GPまでのもの)', - '任意の盾1つ(100000GPまでのもの)', - '任意の鎧1つ(100000GPまでのもの)', - '任意の装飾品1つ(100000GPまでのもの)', - '蘇生ポーション(装飾品)+アタッチメント割引券20枚(割引券は人数分)', - '60000GP', - ] - - when 10 - table = [ - '任意の武器1つ(150000GPまでのもの)', - '任意の盾1つ(150000GPまでのもの)', - '任意の鎧1つ(150000GPまでのもの)', - '任意の装飾品1つ(200000GPまでのもの)', - '蘇生ポーション(装飾品)+アタッチメント割引券30枚(割引券は人数分)', - '黄金の守護者の証(装飾品)(【ハッキング】があれば黄金の電子暗号キー(装飾品)も追加)', - ] - - else - return nil - end - - result, number = get_table_by_1d6(table) - - return "#{tableName}(#{number}):#{result}" - end - - # 夢幻の迷宮トラップ表 - def getTrapResult(command) - return nil unless /TRAP(E|N|H|L)/ === command - - dif = Regexp.last_match(1) - tableName = "トラップ表" - - case dif - when "E" - difficultyText = "初級" - difficulty = 0 - - when "N" - difficultyText = "中級" - difficulty = 1 - - when "H" - difficultyText = "上級" - difficulty = 2 - - when "L" - difficultyText = "悪夢" - difficulty = 3 - - else - return nil - end - - table = [ - "トライディザスター:宝箱から広範囲に火炎・冷気・電撃が放たれる罠。PC全員に「3D+#{[3, 50, 70, 100][difficulty]}」の「火炎」「冷気」「電撃」属性ダメージ。", - "ペトロブラスター:広範囲に石化光線を放つ罠。PC全員[抵抗-#{[2, 4, 6, 8][difficulty]}]判定を行い、失敗したPCはBS「石化」を受ける。", - "クロスボウストリーム:宝箱から矢の嵐が放たれる罠。PC全員に「3D+#{[20, 40, 60, 90][difficulty]}」の「刺突」属性ダメージ。「ドッジ-#{[4, 6, 8, 10][difficulty]}」で[回避]が可能。", - "フォーチュンイーター:PC全員の幸運を食らい、Ftを#{[1, 2, 3, 4][difficulty]}点減少させる。Ftが0の場合「3D+#{[30, 50, 70, 100][difficulty]}」点の防護点無視ダメージ。", - "スロット:解除に失敗しても害はないが、スロットが揃うまで開かない宝箱。スロットを1回まわすには#{[100, 300, 600, 1000][difficulty]}GPが必要。行動を消費して[感覚-#{[4, 6, 8, 10][difficulty]}]判定に成功すればスロットは揃う。有利な特異点「ビビット反射」があれば判定に+4のボーナス。", - "テレポーター:PC全員(とエンカウントしているエネミー)を転送して道に迷わせる。「財宝ランク」が1段階減少する。", - "アイスコフィン:宝箱を開けようとしたキャラクターを氷漬けにする罠。対象1体に「3D+#{[30, 50, 70, 100][difficulty]}」の「冷気」属性ダメージ。更にFPにも#{[5, 10, 15, 20][difficulty]}点の防護点無視ダメージ。", - "クロスボウ:宝箱を開けようとしたキャラクターに強力な矢が放たれる罠。対象1体に「3D+#{[20, 40, 60, 90][difficulty]}」の「刺突」属性ダメージ。「ドッジ-#{[4, 6, 8, 10][difficulty]}」", - "毒針:宝箱を開けようとしたキャラクターに毒針を突き刺す罠対象1体に#{[15, 30, 45, 60][difficulty]}点の防護点無視ダメージ。更に[抵抗-#{[4, 6, 8, 10][difficulty]}]判定に失敗するとシナリオ終了まであらゆる判定に-2のペナルティ。", - "アラーム:即座にその地形のエンカウント表を振って、それに対応したエネミーが出現する。出現したエネミーはそのターンから行動順に組み込まれる。出現するエネミー以外の記述は無視する。", - "殺人鬼の斧:宝箱を開けようとしたキャラクターに斧が振り下ろされる罠。対象1体に「3D+#{[30, 50, 70, 100][difficulty]}」の「打撃」「斬撃」属性ダメージ。「ドッジ-#{[4, 6, 8, 10][difficulty]}」か「シールド-#{[4, 6, 8, 10][difficulty]}」で[回避]が可能。", - "死神:宝箱を開けようとしたキャラクターに死神を取り憑かせる罠。4ラウンド目が終了するまであらゆる判定に-3のペナルティを受け、4ラウンド目の終了と同時に「3D+#{[30, 50, 70, 100][difficulty]}」の防護点無視ダメージ。", - "幻の宝:宝箱に偽の財宝を入れ、本物の財宝を入手させない罠。トラップが発動すると価値の無い偽の宝物「幻の宝」を入手してしまう。「幻の宝」はアイテム欄を3つ占有し、シナリオ終了まで捨てられない。アイテム欄に空きがない場合は、何かを捨てて誰かが必ず持たなくてはならない。", - "エクスプロージョン:宝箱が大爆発を起こし、中身を粉々にしてしまう罠。宝箱の中身は消滅する。PC全員に「3D+#{[10, 30, 50, 80][difficulty]}」の「打撃」「火炎」属性ダメージ。", - "レインボーポイズン:宝箱から七色の毒ガスが放たれる罠。PC全員に「3D+#{[10, 30, 45, 60][difficulty]}」の防護点無視ダメージ。更にシナリオ終了まであらゆる判定に-2のペナルティ。[抵抗-#{[4, 6, 8, 10][difficulty]}]判定に成功すれば無効。", - "デスクラウド:宝箱から致死性の毒ガスを放つ罠。PC全員を即死させる。[抵抗-#{[2, 4, 6, 8][difficulty]}]判定に成功すれば無効。", - ] - - result, number = get_table_by_nD6(table, 3) - - return "#{tableName}<#{difficultyText}>(#{number}):#{result}" - end - - # 夢幻の迷宮追加オプション表 - def getRandomOptionResult(command) - return nil unless /ROP(E|N|H|L)/ === command - - dif = Regexp.last_match(1) - tableName = "迷宮追加オプション表" - - case dif - when "E" - difficultyText = "初級" - difficulty = 0 - - when "N" - difficultyText = "中級" - difficulty = 1 - - when "H" - difficultyText = "上級" - difficulty = 2 - - when "L" - difficultyText = "悪夢" - difficulty = 3 - - else - return nil - end - - table = [ - [11, "黄金の迷宮(財宝ランク+2):全てが黄金で彩られた迷宮。財宝ランクが大きく上昇する。"], - [12, "密林の迷宮(財宝ランク+1):密林の中にひっそりとたたずむ迷宮。分類が「魔獣」「獣人」「霊獣」のエネミーが行うあらゆる判定に+2のボーナス。"], - [13, "カラクリの迷宮:複雑なカラクリが周囲で絶え間なく動いている迷宮。分類「ギア」のエネミーが行うあらゆる判定に+2のボーナス。クリア時に「アタッチメント割引券」を全員が#{[1, 2, 3, 5][difficulty]}枚獲得。"], - [14, "フラウの舞踏会:あちこちに花畑のある迷宮。フラウが発生するランダムイベントが発生した際、「この迷宮を制覇して、私達が舞踏会を開けるようにしてね」とお願いされ、クリア時の報酬に#{['「キノコの帽子」(装飾品)', '「猛毒の花」(装飾品)', '「フルブロウン」(鎧)', '「緊急召喚の宝珠」(装飾品)'][difficulty]}が追加される。"], - [15, "アズマ風の迷宮:風流なアズマ風の迷宮。武器に「刀」を持つエネミーが行うあらゆる判定に+2のボーナス。クリア時に「アタッチメント割引券」を全員が#{[1, 2, 3, 5][difficulty]}枚獲得。"], - [16, "枯れた泉の迷宮:「全地形1-1」の回復の泉が全て枯れており、回復効果を得ることができない。「断崖1-6」の貴重な水源や、「水辺1-6」の毒の泉などはそのまま存在する。"], - - [21, "天空への道(財宝ランク+1):上へ上へと果てしなく登っていく迷宮。空気が薄くなって疲労しやすくなる。【特技】特技などによるFP消費が全て+3。"], - [22, "灼熱焦土の迷宮(財宝ランク+1):とてつもなく暑く、あちこちで炎が燃え盛る迷宮。エネミーが行う「火炎」属性を含む攻撃の致傷力に+#{[10, 20, 30, 50][difficulty]}のボーナス。"], - [23, "灼熱焦土の迷宮(財宝ランク+1):とてつもなく寒く、気温が氷点下の迷宮。エネミーが行う「冷気」属性を含む攻撃の致傷力に+#{[10, 20, 30, 50][difficulty]}のボーナス。"], - [24, "盗賊王の迷宮:迷宮内での罠や鍵を解除する[感覚]判定に-3のペナルティ。4ラウンドまでに出現した宝箱の「財宝ランク」+1。"], - [25, "ミミック狂暴化:「全地形2-5」のミミックの致傷力に+#{[20, 30, 50, 80][difficulty]}のボーナス。ミミックを見破った場合に得られるGPが#{[500, 1000, 3000, 5000][difficulty]}GP増加する。"], - [26, "トレジャーイーター狂暴化:「全地形2-6」のトレジャーイーターを見破る[感覚]判定に-3のペナルティ。4ラウンドまでに出現した宝箱の「財宝ランク」+1。"], - - [31, "暗闇の迷宮:どこもかしこも真っ暗な迷宮。「猫の目」がなければ視覚に関する[感覚]判定に-5のペナルティ。"], - [32, "騒音の迷宮:常に大音量で謎の音楽(BGM)が鳴っている迷宮。聴覚に関する[感覚]判定に-5のペナルティ。"], - [33, "未知の怪物の迷宮(財宝ランク+1):エネミーの姿がシルエットのみになる迷宮。エネミーのデータがいかなる手段でも判明させられなくなる。(通常通り[HP][FP][先制]は判明する)"], - [34, "氾濫中の迷宮:大雨が降っており、川などが氾濫している迷宮。水泳を行う際の[敏捷]判定に-5のペナルティ。「森林3-6」の山火事イベントの効果は無視できる。"], - [35, "間抜けの迷宮(財宝ランク+1):頭がおかしくなりそうな極彩色の迷宮。[知力][意志]判定に-2のペナルティ。[知力]や[意志]そのものが下がるわけではない。"], - [36, "瘴気の迷宮(財宝ランク+1):生命力を奪う紫の霧で満ちた迷宮。"], - - [41, "加速する迷宮:狂ったように針の動く時計が多数された迷宮。「CT:安息の日」以外の【特技】が「CT:なし」になる。"], - [42, "停滞する迷宮(財宝ランク+1):動かない時計が多数設置された迷宮。「CT:安息の日」以外のCTの存在する【特技】が「CT:シナリオ終了」になる。この効果はシナリオ終了まで持続する。"], - [43, "猛毒の迷宮(財宝ランク+1):見るからに毒々しい紫色の沼があちこちにある迷宮。エネミーが行う、名称に「毒」もしくは「ポイズン」が入る【特技】や、名称に「毒」もしくは「ポイズン」が入るトラップの致傷力に+#{[10, 20, 40, 50][difficulty]}のボーナス。"], - [44, "死の迷宮(財宝ランク+2):死の運命から逃れることのできない、血まみれの迷宮。「生命保険証」の効果が適用されない。"], - [45, "幸運の迷宮:何者かの加護を感じる迷宮。PC全員のFtの最大値と現在値に+1のボーナス。この効果はシナリオ終了まで持続する。"], - [46, "不運の迷宮:PC全員のFt最大値と現在値に-1のペナルティ。この効果はシナリオ終了まで持続する。"], - - [51, "レアメタルの迷宮:非常にレアなエネミー「レアメタルキャンディー」「レアメタルクラウン」が生息している迷宮。キャンディークラウン(CL40)、ゴールデンクラウン(CL177)から獲得できる通常ドロップのGPが5倍になる。"], - [52, "魔力の泉:PCとエネミーの双方が、[FP]を消費せずに【魔法】を使用できるようになる。最終的な消費[FP]が最大[FP]より大きい【魔法】は使用できない。"], - [53, "ブルーの迷宮:陰鬱な気分になり、他のキャラクターと関わる気力を失う。PC全員が不利な特異点「嫌な奴」を1段階得る。"], - [54, "レッドの迷宮:なぜか興奮して非常に好戦的になる。PC全員が不利な特異点「脳みそ筋肉」を得る。交戦中に「1:回復系」のイベントが発生しても戦闘を終了させることができない。"], - [55, "ピンクの迷宮:なんだか身近な異性(同性も?)が気になって仕方なくなる。PC全員が不利な特異点「英雄色を好む」を得る。魔族も戦闘意欲を失い、「分類:魔族」のエネミーが出現するイベントは無視する。"], - [56, "ハズレの迷宮(財宝ランク-1):ツギハギだらけの壁などでできた、ハリボテのような貧相な迷宮。宝箱の中身もなんだか貧相になる。"], - - [61, "ラダマンティスの迷宮(財宝ランク+2):第一魔将ラダマンティスの像が入口に設置された迷宮。全てのエネミーが行うあらゆる判定に+2のボーナス。また、「遺跡6-6」のイベントのダメージ+#{[20, 40, 60, 80][difficulty]}。"], - [62, "グレイヴディガーの迷宮(財宝ランク+2):第二魔将グレイブディガーの像が入口に設置された迷宮。「分類:アンデッド」のエネミーが行うあらゆる判定に+5のボーナス。"], - [63, "ハイペリオンの迷宮(財宝ランク+2):第三魔将ハイペリオンの像が入口に設置された迷宮。全てのエネミーが「ターン開始」時に[HP]を全回復する。"], - [64, "ムスペルニヴルの迷宮(財宝ランク+2):勇ましくも美しい女性の像が設置された迷宮。エネミーが行う「火炎」もしくは「冷気」属性を含む攻撃の致傷力に+#{[20, 40, 60, 80][difficulty]}のボーナス。"], - [65, "ウェルスの迷宮:人懐っこそうなアズマ風の青年が設置された迷宮。シナリオ上で第五魔将の正体が明らかに鳴っている場合のみ、PC全員のFtの最大値と現在値に+5のボーナス。この効果はシナリオ終了まで持続する。"], - [66, "バロールの迷宮(財宝ランク+2):第六魔将バロールの像が入口に設置された迷宮。「分類:ギア」のエネミーが行うあらゆる判定に+5のボーナス。"], - ] - - result, number = get_table_by_d66(table) - _, result = result - - return "#{tableName}<#{difficultyText}>(#{number}):#{result}" - end - - # 夢幻の迷宮ランダムイベント表 - def getRandomEventResult(command) - if /RAND(E|N|H|L)([1-6])?/ === command - dif = Regexp.last_match(1) - area = Regexp.last_match(2).to_i - area, = roll(1, 6) if Regexp.last_match(2).nil? - type, = roll(1, 6) - elsif /RENC(E|N|H|L)([1-6])?/ === command - dif = Regexp.last_match(1) - area = Regexp.last_match(2).to_i - area, = roll(1, 6) if Regexp.last_match(2).nil? - type = 4 - else - return nil - end - - tableName = "ランダムイベント表" - - case dif - when "E" - difficultyText = "初級" - difficulty = 0 - - when "N" - difficultyText = "中級" - difficulty = 1 - - when "H" - difficultyText = "上級" - difficulty = 2 - - when "L" - difficultyText = "悪夢" - difficulty = 3 - - else - return nil - end - - case area - when 1 - areaText = "洞窟" - case type - when 1 - table = [ - "回復の泉。PC全員の[HP][FP]が完全に回復する。「死亡」以外のあらゆるBSも回復する。", - "淡い光を放つ鉱石に包まれた部屋に出る。Ftが#{[1, 2, 3, 4][difficulty]}点回復する。", - "天井が開いていて植物の育っている洞窟内庭園。[知力-#{[3, 6, 9, 12][difficulty]}]判定に成功すると、力の枠木の実を見つけてPC全員の[HP][FP]を#{[20, 30, 40, 50][difficulty]}点回復できる。有効:「自然と生きる」【賢人の知恵】", - "「きのこっきのこっげんきでろ~♪」洞窟内で栽培できる特殊なキノコを栽培する、キノコのフラウに出会う。100GP支払うことでキノコを1つ譲ってもらうことができ、[HP]が全回復してシナリオ終了まで[HP]の最大値に+#{[10, 15, 20, 25][difficulty]}のボーナスを得る。", - "ギア技術を用いた強力な懐中電灯のおいてある休憩室。迷宮を出るまでPC全員に有利な特異点「猫の目」があるものとして扱う。迷宮を出ると懐中電灯は寿命が来たのか壊れてしまう。", - "不思議な光を放つ水が湧いている。PCの[HP][FP]のいずれかが減少している場合、このイベントは拒否できない。また全快でも不利な特異点「好奇心は猫を殺す」を持つPCは飲みにいこうとする。飲んだキャラクターは1Dを振り、以下の様な効果が発生する。 - ---------- - 1:[HP][FP]と「死亡」以外のBS全回復 - 2:シナリオ終了まで不利な特異点が全て消滅する - 3:シナリオ終了まで精神的に不利な特徴が1つ消滅する - 4:[HP]が1点になってしまう。[HP]が0以下の場合は[HP][FP]が全回復 - 5:シナリオ終了まで余分な獣っぽい耳や尻尾が生える。既に生えているキャラクターはそれが大きくなる。聴覚に関する[感覚]判定+4。 - 6:あいやー!それ呪いの泉アルよ!シナリオ終了まで性別が男女入替わる。ロールプレイが面白かった場合、シナリオ終了時に「アタッチメント割引券」を与えても良い", - ] - - when 2 - table = [ - "財宝ランク#{[0, 2, 4, 6][difficulty]}の宝箱を発見する。カギやトラップはかかっていない。行動を消費することで開けることができる。", - "財宝ランク#{[1, 3, 5, 7][difficulty]}の宝箱を発見する。難易度#{[3, 6, 9, 12][difficulty]}のカギがかかっている。行動を消費して[感覚-#{[3, 6, 9, 12][difficulty]}]判定でカギを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", - "財宝ランク#{[1, 3, 5, 7][difficulty]}の宝箱を発見する。難易度#{[3, 6, 9, 12][difficulty]}のトラップがかかっている。行動を消費して[感覚-#{[3, 6, 9, 12][difficulty]}]判定でトラップを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", - "頑丈な岩壁に阻まれた隠し財宝の部屋を発見する。岩壁は「打撃」属性で合計#{[100, 200, 300, 500][difficulty]}点のダメージを与えると破壊され、財宝ランク#{[2, 4, 6, 8][difficulty]}のアイテムを入手可能。岩壁はどのHexからでも隣接扱いで攻撃可能。", - "ミミックの罠。ランダムなキャラクターに「3D+#{[30, 50, 70, 100][difficulty]}」の「斬撃」属性ダメージを与える。[知力-#{[3, 6, 9, 12][difficulty]}]判定に成功すればこの罠を見抜いて無効化でき、なおかつ#{[1000, 2000, 5000, 10000][difficulty]}GPを入手可能。有効:【盗賊の心得】【ロックスミス】", - "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。[知力-#{[3, 6, 9, 12][difficulty]}]判定に成功すればこの罠を見抜いて無効化することができ、なおかつ#{[1000, 2000, 5000, 10000][difficulty]}GP入手可能。", - ] - - when 3 - table = [ - "洞窟内で暗がりの中に近道を発見!有利な特異点「猫の目」を持つキャラクターがいればクリア時の財宝ランク+1。", - "洞窟内で近道を発見!だが狭くて通れるかどうか…?有利な特異点「軟体動物」を持つキャラクターがいればクリア時の財宝ランク+1。", - "6つの分かれ道だ、どちらに進めばいいのだろうか…?1Dを振って1~3が出ればクリア時の財宝ランク+1。4~6が出ればクリア時の財宝ランク-1。有効:「非凡な直感」", - "足場の悪い道だ。うまく降りられればいいが…。[敏捷-#{[3, 6, 9, 12][difficulty]}]判定に成功すればクリア時の財宝ランク+1。失敗すると判定を行ったキャラクターに[3D+20]の防護点無視ダメージ。有効:「軟体動物」", - "大きな岩でふさがれた近道。力づくでどかせてやる![体力-#{[2, 4, 6, 8][difficulty]}]判定に成功すれば売り味の財宝ランク+1。失敗すると判定を行ったキャラクターは[FP]を5点消費する。", - "6つの分かれ道だ、どうやら正解の道以外はエネミーの巣だが…。1Dを振って1が出ればクリア時の財宝ランク+1。2~6が出れば即座に洞窟のエンカウントイベントが発生する!有効:「非凡な直感」", - ] - - when 4 - table = [ - "水あめ状のボディに王冠をのせた、珍しいエネミーだ!エネミーとエンカウント。", - "獣の皮をかぶった魔族が狩った獲物の取り分でもめているようだ。彼らは興奮して争っているが、PCたちを見つけると向きを変えて襲い掛かってくる!エネミーとエンカウント。「マジカルクッキング」で持ち歩くタイプのものを作っていた場合、それを渡すことで戦闘を回避することもできる。", - "岩だと思って通りすぎようとしたら魔族だった!?エネミーとエンカウント。相手は洞窟で巧妙に擬態しており、[先制]に+10のボーナスを得る。有利な特異点「虫の知らせ」があれば[先制]ボーナスを無効化できる。", - "洞窟でトロッコに乗ったら暴走するギア魔族に追いかけられた!エネミーとエンカウント。トロッコに乗って逃げつつの戦闘になり、2ラウンド以内に倒せなければ轢かれてPC全員が「3D+#{[30, 30, 30, 100][difficulty]}」の防護点無視ダメージを受ける。また、1ラウンドに1人誰かが行動を消費してトロッコを運転する必要があり、これに失敗すると即座に轢かれてしまう。轢かれると戦闘は終了する。PCにケイヴウォーカーがいればトロッコの運転を「支援ターン」で行える。", - "炎の燃え盛る洞窟だ!運の悪いことに魔獣までいるようだ…。イベント詳細決定時に敵味方全員が「3D+#{[10, 20, 30, 50][difficulty]}」の「火炎」属性ダメージを受ける。さらにエネミーとエンカウント。", - "冷気に包まれた洞窟だ。更に氷の魔族や魔獣まで棲息している!イベント詳細決定時に敵味方全員が「3D+#{[10, 20, 30, 50][difficulty]}」の「冷気」属性ダメージを受ける。さらにエネミーとエンカウント。", - ] - - when 5 - table = [ - "突然の落盤がエネミーを押しつぶす!戦闘中の場合、ランダムにエネミー1体を即死させ、ドロップ品も入手可能。それ以外の場合は特に何も起きない。「分類:ネームド」「分類:魔将」のエネミーには「3D+50」の防護点無視ダメージ。", - "採掘用のダイナマイトが打ち捨てられている。ケイヴウォーカー用の消耗品#{['「ダイナマイト」', '「特性ダイナマイト」2個と「ダイナマイト」', '「特性ダイナマイト」4個と「ダイナマイト」', '「特性ダイナマイト」'][difficulty]}を持てるだけ持つことができる。", - "洞窟内に有毒ガスが発生している!敵味方全員[抵抗-#{[4, 6, 8, 10][difficulty]}]で判定し、失敗したキャラクターは#{[15, 30, 45, 60][difficulty]}点の防護点無視ダメージを受ける。有効:【ガシンショウタン】", - "溶岩の流れる部屋だ、早くおさらばしたいところだが…。[敏捷-#{[3, 6, 9, 12][difficulty]}]判定に成功すれば何事も無く渡り切ることができる。失敗するとPC全員に「3D+#{[20, 40, 60, 90][difficulty]}」の「火炎」属性ダメージ。PCにドラコニアンがいれば判定不要。有効:【野伏の歩み】", - "突然の落盤がPCのうちランダムに1人を押しつぶす!「3D+#{[40, 60, 80, 120][difficulty]}」の防護点無視ダメージを受ける。「ドッジ-#{[4, 6, 8, 10][difficulty]}」で回避可能。有利な特異点「猫の目」か「虫の知らせ」があれば判定不要。", - "突然の地震が起きて洞窟全体が崩落を始める!このイベントが発生すると戦闘は強制終了する。PC全員[敏捷#{['', '-1', '-2', '-4'][difficulty]}]で判定し、失敗したキャラクターは[HP]が0になる。[HP]が0以下だった場合は死亡してしまう。全員が判定に成功した場合、クリア時の財宝ランク+1。", - ] - - when 6 - table = [ - "プラネタリウムのように鉱石が輝く部屋。星の配置に関する謎かけになっている。行動を消費して[知力-#{[6, 9, 12, 15][difficulty]}]判定に成功するとこの謎を解くことができる。謎が解けると「うぃっしゅすたー」(大事なもの)#{['か、10000GP', '2個か、20000GP', '3個か、30000GP', '5個か、50000GP'][difficulty]}の好きな方を入手可能。有効:【賢人の知恵】", - "地熱で温泉が湧いている!みんなで一休みできそうだ。このイベントが発生すると戦闘は強制終了する。PC全員の[HP][FP][Ft]が全回復する。また、シナリオ終了まで「ターン開始」時に[HP]が#{[5, 10, 15, 20][difficulty]}点ずつ回復する。", - "地下渓流を発見する。どうやらここを進んでいくしかないようだ…。このラウンドではPCが「水中」にいるものとする。また、[敏捷-#{[6, 9, 12, 15][difficulty]}]判定に成功すると水中に沈んだ宝箱を発見する。中身は「#{['3Dx100GP', '(3D+10)x100GP', '(3D+30)x100GP', '3Dx1000GP'][difficulty]}」で、カギやトラップはかかっていない。行動を消費することで開けることができる。有効:【野伏の歩み】", - "とてつもない量のアダマン合金の原石を発見する!持ち帰り放題だ!「アダマン原石」は1つ#{[300, 500, 1000, 2000][difficulty]}GPで売却可能で、行動を消費することで自分のアイテム欄に好きなだけ入手可能。", - "地面から強力な重力で引きつけられる!敵味方全員が[移動]に-5のペナルティを受ける。さらに洞窟のエンカウントイベントが発生。「4-5」と「4-6」の部屋のダメージは適用しない。", - "怪しい光を放つ鉱石の部屋。鉱石は不気味な振動を放っており、ラウンド終了時にランダムなPC1人の武器が1つ壊れてシナリオ終了まで使用できなくなる。鉱石は「打撃」属性で合計#{[100, 200, 300, 500][difficulty]}点のダメージを与えると破壊される。鉱石はどのヘクスからでも隣接扱いで攻撃可能。", - ] - - else - return nil - end - - when 2 - areaText = "遺跡" - case type - when 1 - table = [ - "回復の泉。PC全員の[HP][FP]が完全に回復する。「死亡」以外のあらゆるBSも回復する。", - "随分進んだし一休みしよう。ラウンド数が奇数の場合は[FP]が「#{['3D', '3D+5', '3D+10', '3D+15'][difficulty]}」回復する。ラウンド数が偶数の場合は進んだように見せかけて迷っているだけだった。どっと疲れてしまい[FP]は回復せず、クリア時の財宝ランク-1。有利な特異点「精緻な記憶」があれば、偶数ラウンドでも[FP]が回復して財宝ランクも減少しない。", - "どうやらここは古代の医務室らしい。なにやら怪しげな機械がたくさんあるが…。[知力-#{[3, 6, 9, 12][difficulty]}]判定に成功すればPC全員の[HP][FP]が完全に回復する。「死亡」以外のあらゆるBSも回復する。有効:【魔導工学のススメ】", - "「きみたちの道に光りあれ…お金?いらないよ」道標の光ゴケを栽培している、苔のフラウに出会う。以後「いくつかの道から正解を選ぶ」イベントが発生した場合、光ゴケがそのうちの1つに飛んでいき、必ず正解の道を選ぶことができる。", - "ダンジョンの見取り図を書いた部屋に出る。次のランダムイベントでは、好きな地形を選択してからイベント表を振ることができる。次が最終イベントだった場合、クリア時の財宝ランク+1。", - "「パワーアップ装置!」と書かれた怪しげな機械が置いてある。#{[3000, 5000, 10000, 20000][difficulty]}GPを支払って使用するとキャラクターを強化(?)可能。使用するかは自由だが、不利な特異点「好奇心は猫を殺す」を持っているキャラクターはGPがあるなら入ってしまう。使用したキャラクターは1Dを振り、以下のような効果が発生する。 - ---------- - 1:なんと、ランダムな[主能力]が1点上昇する! - 2:ただの日焼けサロンだ!健康的に焼け、シナリオ終了まで「火炎」に対する防護点+10。 - 3:CLが1上昇する!やったね!【特技】はシナリオが終了してから習得する。 - 4:装置は突然爆発する!ダメージは受けないが髪型がアフロに。装置は壊れる。 - 5:巨大化してシナリオ終了まで第代[HP]+50![HP][FP]も全回復。装置は壊れる。 - 6:故障のせいかランダムな[主能力]が1点下降する…大ショック…", - ] - - when 2 - table = [ - "財宝ランク#{[0, 2, 4, 6][difficulty]}の宝箱を発見する。カギやトラップはかかっていない。行動を消費することで開けることができる。", - "財宝ランク#{[1, 3, 5, 7][difficulty]}の宝箱を発見する。難易度#{[3, 6, 9, 12][difficulty]}のカギがかかっている。行動を消費して[感覚-#{[3, 6, 9, 12][difficulty]}]判定でカギを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", - "財宝ランク#{[1, 3, 5, 7][difficulty]}の宝箱を発見する。難易度#{[3, 6, 9, 12][difficulty]}のトラップがかかっている。行動を消費して[感覚-#{[3, 6, 9, 12][difficulty]}]判定でトラップを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", - "部屋で脱出ゲームのような様々な仕掛けをとかないと開かない宝箱。行動を消費して[知力-#{[6, 9, 12, 15][difficulty]}]判定に成功すれば開けることができ、財宝ランク#{[2, 4, 6, 8][difficulty]}のアイテムを入手可能。判定に失敗すると宝箱を入手可能。判定に失敗すると宝箱は爆発してしまい、中身も失われる。有効:【盗賊の心得】", - "ミミックの罠。ランダムなキャラクターに「3D+#{[30, 50, 70, 100][difficulty]}」の「斬撃」属性ダメージを与える。[知力-#{[3, 6, 9, 12][difficulty]}]判定に成功すればこの罠を見抜いて無効化でき、なおかつ#{[1000, 2000, 5000, 10000][difficulty]}GPを入手可能。有効:【盗賊の心得】【ロックスミス】", - "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。[知力-#{[3, 6, 9, 12][difficulty]}]判定に成功すればこの罠を見抜いて無効化することができ、なおかつ#{[1000, 2000, 5000, 10000][difficulty]}GP入手可能。", - ] - - when 3 - table = [ - "鏡に映る怪人が自分の真似をしろとジェスチャーしている。[敏捷-#{[6, 8, 10, 12][difficulty]}]判定に成功するとうまく真似してパントマイムすることができ、鏡が消滅して隠し通路が開かれる。クリア時の財宝ランク+1。【華劇:○○】を習得したフラウがいれば判定不要。", - "小さな魔将の像がフィルトウィズの地図上で乱雑に置かれている。[知力-#{[6, 9, 12, 15][difficulty]}]判定に成功すれば魔将の所在地を正しく配置することができ、隠し通路が開かれる。クリア時の財宝ランク+1。有効:【賢人の知恵】", - "シュートの罠に引っかかるが、結果的に新たな道を発見できた!このイベントが発生すると戦闘は強制終了する。PC全員が「3D+10」の「打撃」属性ダメージを受けるが、クリア時の財宝ランク+1。", - "ラダマンティス崇拝者が創りだした巨大な甲羅のようなものが置かれた部屋。登っていけば近道することができそうだが、これはかなり骨が折れそうだ…。行動を消費して[敏捷-#{[6, 9, 12, 15][difficulty]}]判定を行い、成功すればクリア時の財宝ランク+1。判定に挑戦したキャラクターは次のターンまで[回避]判定を行えない。有効:「軟体動物」【野伏の歩み】", - "後ろから重い物が転がってくる音がする。ローリングストーンだ!このイベントが発生すると戦闘は強制終了する。ラウンド終了時に全員の[移動]が#{[6, 8, 10, 12][difficulty]}以上であればクリア時の財宝ランク+1。[移動]が#{[6, 8, 10, 12][difficulty]}未満のPCは「3D+#{[30, 50, 70, 100][difficulty]}」の防護点無視ダメージを受ける。", - "通路が複雑に入り組んでおり道に迷いそうだ…。2Dを振り、ゾロ目ならクリア時の財宝ランク+1。それ以外の場合はクリア時の財宝ランク-1。有効:「非凡な直感」", - ] - - when 4 - table = [ - "絶体絶命、モンスターハウスだ!危機感を煽るBGMも流れてくる。1Dをふって無限の迷宮の地形から1つ選択する。その地形で該当する難易度に名前の書かれたエネミーが全て1体ずつ出現する。特別な強化が施されている場合それも適用する。これらのエネミーを全滅させた際、最後に倒したエネミーからは必ず「レア」を入手できる。エネミー決定後に逃亡を宣言しても良い。その場合クリア時の財宝ランク-2。", - "石像が並んでいる通路があるが…なんと石像は警備装置だった!エネミーとエンカウント。奇襲攻撃のため、エネミーからの攻撃の[回避]に-4のペナルティを受ける。【魔導工学のススメ】があれば警戒していたため、このペナルティは受けない。", - "魔族が障害物に身を隠しながら狙撃してきた!エネミーとエンカウント。障害物のため、エネミーは近接攻撃に対する防護点に+30のボーナス。", - "「汝が戦う理由とは何か?答えい人間!」ブツゼンにモンスターが仁王立ちしており、問答を行ってくる。[意思-6]判定に成功すると戦闘を回避することができ、ドロップ品も入手可能。判定に失敗するか戦闘を望んだ場合、エネミーとエンカウント。有効:【詩人の交渉術】", - "進路上に鎖に繋がれたモンスターを発見する。どうやら普通のモンスターより凶暴なようだ、戦うべきか避けるべきか…エネミーとエンカウント。エネミーはあらゆる致傷力に+#{[10, 20, 30, 40][difficulty]}のボーナスを得る。戦闘を避けた場合クリア時の財宝ランク-1。", - "暴れゴーレムが襲い掛かってくる!暴走しているせいか凄まじいスピードだ!エネミーとエンカウント。このエネミーは[移動][先制]に+10のボーナスを得ており、全員が行動終了した後、ラウンド終了前にもう1度ターンがまわってくる。", - ] - - when 5 - table = [ - "一斉に周囲の壁の射出光が開き、無数の矢が放たれる!PC全員に「3D+#{[20, 40, 60, 90][difficulty]}」の「刺突」属性ダメージ。「ドッジ-#{[4, 6, 8, 10][difficulty]}」で[回避]が可能。有利な特異点「虫の知らせ」があれば[回避]に+4のボーナスを得る。", - "突然部屋に白いガスが充満して睡魔が襲ってくる!PC全員がBS「睡眠」を受ける。[抵抗-#{[2, 4, 6, 8][difficulty]}]判定で無効化。", - "フロアイミテーターの罠だ!突然部屋の入口が閉まり、君たちを消化し始める!「斬撃」属性で合計#{[100, 200, 300, 500][difficulty]}点のダメージを与えると入り口が開き脱出できるが、それまでPC全員は「ターン開始」時に#{[10, 20, 30, 40][difficulty]}点の防護点無視ダメージを受ける。ラウンドごとの地形変化やイベントは行われず、最終イベントにも進めなくなる。入り口はどのヘクスからでも隣接扱いで攻撃可能。誰も「斬撃」属性の攻撃ができないなら君たちの冒険はここまでだ。", - "休憩室のようだ。寝心地のよさそうなふかふかのベッドまである。このイベントが発生すると戦闘は強制終了する。PC全員が[意思-#{[2, 4, 6, 8][difficulty]}]判定を行い、失敗したPCはBS「眠り」を受ける。この「眠り」は誰かが行動を羊皮して叩き起こさない限り、シナリオ終了まで持続する。全員が判定に失敗した場合、君たちの冒険はここまでだ。もう目覚めることはないが、せめていい夢を見れるといいだろう。ホムンクルスは「居眠り禁止」を厳命されているため、「眠り」を受けない。", - "「ラダマンティスの蛇」の像と目が合ってしまった。どうやらダンジョンの監視者に見つかってしまったらしい!以後探索中にエネミーと遭遇した場合、CLの最も高いエネミーが1体増加する。このイベントの効果は累積せず、「分類:ネームド」「分類:魔将」のエネミーの数は変化しない。", - "怪しげな卵が置かれた部屋。君たちが近寄ると卵が割れて…?1Dを振り、その出目によって中から様々なものが出現する。 - ---------- - 1~2:これは財宝だ!財宝ランク#{[2, 4, 6, 8][difficulty]}のアイテムが入手可能。 - 3~4:卵はそのまま大爆発!PC全員に「3D+#{[30, 50, 70, 100][difficulty]}」の「打撃」「火炎」属性ダメージ。 - 5~6:卵からドラゴンが!エネミーとエンカウント。", - ] - - when 6 - table = [ - "突然ダンジョンの明かりが消えてほぼ真っ暗になってしまう!次のラウンドに入るまであらゆる判定に-6のペナルティを受ける。有利な特異点「猫の目」があればペナルティを受けない。また「洞窟1-5の懐中電灯」や「遺跡1-4の光ゴケ」などがあれば無効。", - "どうやら古代の訓練施設のようだ。「パンチングマシーン」と書かれたものがあり、行動を消費すれば100GPを支払って挑戦可能。「格闘」武器でのダメージ判定を1回行い、与えたダメージによってファンファーレとともに景品が出る。1回挑戦すると、ガタが来ていたのか壊れてしまう。 - ---------- - ダメージ#{[20, 40, 60, 80][difficulty]}以上:財宝ランク#{[0, 2, 4, 6][difficulty]}のアイテム - ダメージ#{[30, 50, 70, 90][difficulty]}以上:財宝ランク#{[1, 3, 5, 7][difficulty]}のアイテム - ダメージ#{[40, 60, 80, 100][difficulty]}以上:財宝ランク#{[2, 4, 6, 8][difficulty]}のアイテム", - "謎の装置のせいで気になるあの子と体が入れ替わってしまった!?シナリオ終了までPCのうち2人の体や能力が入れ替わってしまう。入れ替わるキャラクターはランダムで決定するか、面白くなるようにGMが選ぶ。戦闘で扱うデータは今までどおりだが、入れ替わったキャラクターのロールプレイを行うこと。", - "やった、きんきらきんの宝物庫だ!「2-1」「2-2」「2-3」の宝箱が3つ同時に出現する。ただし、「2-3」の罠の解除に失敗すると、宝箱を開けようとしたキャラクターは黄金像になってしまう。めでたく財宝の仲間入りだ。BS「石化」と同様に扱うが、シナリオ終了までいかなる手段でも治せない。", - "キャンディークラウンハウスだ!エネミーとエンカウント。4ラウンド終了までに1体も倒せなかった場合、チャンスを逃した悔しさからPC全員が[FP]に「逃げたキャンディークラウンの数x5」の防護点無視ダメージを受ける。", - "なぜここに呼ばれたかお分かりになりますでしょうか?ラダマンティス崇拝者の作りだした審判の部屋に飛ばされてしまった!ラウンド終了時に部屋の中央のラダマンティス像から裁きの光が放たれ、PC全員が「3D+#{[50, 80, 110, 150][difficulty]}」の防護点無視ダメージを受ける。#{[200, 400, 600, 1000][difficulty]}点のダメージを与えれば破壊可能でダメージも受けない。ラダマンティス像はどのヘクスからでも隣接扱いで攻撃可能。破壊に成功すると財宝ランク#{[3, 5, 7, 9][difficulty]}のアイテムが入手可能。", - ] - - else - return nil - end - - when 3 - areaText = "山岳" - case type - when 1 - table = [ - "回復の泉。PC全員の[HP][FP]が完全に回復する。「死亡」以外のあらゆるBSも回復する。", - "休憩に丁度いい広場を見つけた。[FP]が3D#{['', '+5', '+10', '+15'][difficulty]}点回復する!だが、居心地が良すぎて離れづらくなってしまう。PC全員が[意思-#{[2, 3, 4, 6][difficulty]}]判定を行う。PCのうち半分以上が失敗した場合、次のラウンドもこのイベントが発生して、クリア時の財宝ランク-1。", - "山小屋を発見し一休み。[HP]と[FP]が3D#{['', '+5', '+10', '+15'][difficulty]}点回復する。PCが4人の時にこのイベントが発生した場合、休憩中の暇つぶしに山小屋の四隅をぐるぐるまわって運動し始める。だが、後から妙なことに気が付きFtが1点減少する…", - "「へーっ、こんなとこまでよく来たね!これ、食べる?食べる?」キイチゴを栽培しているフラウに出会う。栄養満点で幸せになる。PC全員の[HP]と[FP]を10点、Ftを1点回復することができる。さらに、【魔法の料理人】を持つPCがいれば、消耗品「いちごジャム」をSLv個入手可能。 - ---------- - 名称:いちごジャム - 価格:非売品 - 解説:[HP]と[FP]を10点、Ftを1点回復する。戦闘中には使用できない。", - "少し休憩できそうな洞窟を発見する。PC全員の[FP]を10点回復する。中には他のエクスプローラーが残していったと思われる道具もあった。「#{['高級HPポーション', '最高級HPポーション', '特性HPポーション', 'うぃっしゅすたー'][difficulty]}」を入手することができる。大雨が降っていたり、火災が起こったりしていた場合、その効果も消滅する。", - "回復の泉。PC全員の[HP][FP]が完全に回復する。「死亡」以外のあらゆるBSも回復する。しかし山間の貴重な水源のため亜人によって管理されており、使用するには#{[500, 1000, 2000, 4000][difficulty]}GPが必要。PCのパーティーに管理している亜人と同じ種族がいるか、【詩人の交渉術#{[1, 2, 3, 4][difficulty]}】を持つキャラクターがいれば無料で使用可能。どの種族が管理しているかは1Dを振って決定する。 - ---------- - 1:ドラコニアン - 2:リザードとワイズマン - 3:フラウ - 4:シルヴァテイル - 5:ストームコーザー - 6:グラント", - ] - - when 2 - table = [ - "財宝ランク#{[0, 2, 4, 6][difficulty]}の宝箱を発見する。カギやトラップはかかっていない。行動を消費することで開けることができる。", - "財宝ランク#{[1, 3, 5, 7][difficulty]}の宝箱を発見する。難易度#{[3, 6, 9, 12][difficulty]}のカギがかかっている。行動を消費して[感覚-#{[3, 6, 9, 12][difficulty]}]判定でカギを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", - "財宝ランク#{[1, 3, 5, 7][difficulty]}の宝箱を発見する。難易度#{[3, 6, 9, 12][difficulty]}のトラップがかかっている。行動を消費して[感覚-#{[3, 6, 9, 12][difficulty]}]判定でトラップを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", - "狭い谷底に宝箱があるのが見える。そして手元には岩とロープが。これはもうバンジージャンプで取ってくるしかない!行動を消費して[敏捷-#{[3, 6, 9, 12][difficulty]}][意思-#{[3, 5, 7, 9][difficulty]}]で判定を行い、両方に成功すれば財宝ランク#{[3, 5, 7, 9][difficulty]}のアイテムを入手できる。[敏捷]判定がファンブルだった場合ロープがちぎれてしまい、4ラウンド目が終了するまで戻ってこれない。有効:【野伏の歩み】([敏捷]判定のみ)", - "ミミックの罠。ランダムなキャラクターに「3D+#{[30, 50, 70, 100][difficulty]}」の「斬撃」属性ダメージを与える。[知力-#{[3, 6, 9, 12][difficulty]}]判定に成功すればこの罠を見抜いて無効化でき、なおかつ#{[1000, 2000, 5000, 10000][difficulty]}GPを入手可能。有効:【盗賊の心得】【ロックスミス】", - "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。[知力-#{[3, 6, 9, 12][difficulty]}]判定に成功すればこの罠を見抜いて無効化することができ、なおかつ#{[1000, 2000, 5000, 10000][difficulty]}GP入手可能。", - ] - - when 3 - table = [ - "山歩きの達人だけが発見できるショートカットコース。有利な特異点「鷹の目」#{['', '', '2段階', '2段階'][difficulty]}か【野伏の歩み#{[1, 2, 3, 4][difficulty]}】を持つキャラクターがいればクリア時の財宝ランク+1。", - "鉱物を運んでいたのであろう、運搬用トロッコを発見する。うまく運転できれば素早く進行できそうだが…?[敏捷-#{[3, 6, 9, 12][difficulty]}]判定に成功すればクリア時の財宝ランク+1。判定に失敗すると脱線して放り出されてしまい、PC全員が「3D+10」の防護点無視ダメージを受ける。PCにケイヴウォーカーがいれば判定不要。", - "険しい斜面が続く。これは体力勝負になりそうだ…。PC全員が[体力#{['', '-1', '-2', '-4'][difficulty]}]判定を行い、全員が成功すればクリア時の財宝ランク+1。判定に失敗したキャラクターは[FP]に#{[5, 10, 15, 20][difficulty]}点の防護点無視ダメージを受ける。", - "空を飛べればショートカットできそうな崖を発見する。なんらかの飛行手段のあるPCがいる場合、クリア時の財宝ランク+1。元々飛行できなくてもラウンド中に【フライト】などの【特技】を使用してラウンド終了時に「飛行状態」であれば良い。", - "遠くから山彦のような不思議な声が聞こえる。山彦と会話をすると迷いやすい道を教えてくれるが、大声で会話をしているのでエネミーに見つかりやすくなる。会話をするなら次のイベントは必ず山岳のエンカウントイベントになり、会話を諦めるならクリア時の財宝ランク-1。有利な特異点「天体時計」があれば会話を諦めてもデメリットはない。", - "急に突風が吹いてきて、体力のないものは吹き飛ばされてしまう!もっとも「体力」の低いPC1人が[体力-#{[2, 3, 4, 6][difficulty]}]判定を行い、失敗すると「3D+#{[20, 40, 60, 90][difficulty]}」の防護点無視ダメージを受ける。さらに、救助に時間がかかるためクリア時の財宝ランク-1。PCにストームコーザーがいればイベントの効果を無視できる(演出は自由)。", - ] - - when 4 - table = [ - "高いところから多数の岩がごろごろと…いや、これは魔物だ!エネミーとエンカウント。高低差で勢いがついているため、エネミーは[移動]に+5、物理攻撃の致傷力に+#{[10, 30, 60, 120][difficulty]}のボーナスを得る", - "空中から羽をもった魔物があちこちから攻撃を仕掛けてきた!エネミーとエンカウント。エネミーのうち#{[3, 3, 1, 1][difficulty]}体は任意の「PC配置ヘクス」に設置される。", - "「た、隊長、もうダメです!」「バカもん!この程度で根を上げるな!」登山訓練中の魔族の正体と出くわす。だが相手は疲れているようだ?エネミーとエンカウント。[FP]は最大値から10点減少している。", - "山道の横から突然穴が空き、魔物と鉢合わせしてしまう!エネミーとエンカウント。PC全員が[感覚-3]判定を行い、失敗したキャラクターはそのラウンド中に行動することができない。([回避]や[抵抗]の判定、自分のターン以外で行う【特技】は可能)有効:「狐の耳」", - "ケタケタ笑いながら空から襲撃される。エネミーとエンカウント。彼女達はとても飽きっぽいので2ラウンド行動した後、3ラウンド目の開始前に立ち去ってしまう。(ドロップは入手できない)", - "フェニックスがつがいで暮らす縄張りに足を踏み入れてしまった!エネミーとエンカウント。すぐに引き返せば戦闘を回避できるが、クリア時の財宝ランク-1。そのまま進むのであれば[意思-6]で判定を行い、成功すれば見逃してもらうことができる。失敗するとフェニックスは怒り狂い、襲ってくる。有効:【詩人の交渉術】", - ] - - when 5 - table = [ - "ジャーンジャーン!げぇ、落石だ!!上から魔族が岩を落とし始める。PC全員に「3D+#{[20, 40, 60, 90][difficulty]}」点の「打撃」属性ダメージ。「ドッジ-#{[3, 5, 7, 9][difficulty]}」で[回避]が可能。", - "ファイトー!いっぱーつ!!足場が崩れ出す。PC全員が[敏捷-#{[3, 6, 9, 12][difficulty]}]判定を行い、失敗すると「3D+#{[20, 40, 60, 90][difficulty]}」点の防護点無視ダメージを受ける。成功したPCは[体力]判定を行い、失敗したPC1人を支えることができる。この判定に失敗した場合、支えようとしたキャラクターも一緒にダメージを受ける。有効:【野伏の歩み】", - "滑りやすい岩を飛び移っていく道が続いている。敵味方全員が[敏捷-2]で判定を行い、失敗したキャラクターはBS「転倒」を受ける。飛行可能なキャラクターはこの影響を受けない。有効:【野伏の歩み】", - "先に進む道に『銀糸の甲殻』アルゲントゥムの巣がびっしり張られている。幸い主はいないようだが、巣が邪魔で移動がしにくい…敵味方全員が4ラウンド目まで飛行状態になれなくなり、[移動]にも-5のペナルティを受ける。不利な特異点「トラウマ:虫」などがあればそれも適用する。", - "美しい万年雪の中を進んでいたと思ったのも束の間、雪崩に遭遇してしまう!全員が「3D+#{[30, 50, 70, 100][difficulty]}」点の「打撃」「冷気」属性ダメージを受け、クリア時の財宝ランク-2。[感覚-#{[6, 9, 12, 15][difficulty]}]の判定に成功すれば、すぐに洞窟に避難してやり過ごすことができる。洞窟の中には#{['スノーの結晶(装飾品/3000GP)', '紺碧の瞳(装飾品/10000GP)', '氷狼の爪(装飾品/25000GP)', '氷河龍の盾(盾/65000GP)'][difficulty]}があり、入手可能。有効:「狐の耳」【野伏の歩み】", - "下から魔族の大群が登ってくる!ジャーンジャーン!石を落として撃退だ!魔族の群れは射撃攻撃で合計#{[100, 200, 300, 500][difficulty]}点のダメージを与えれば撃退可能。複数の対象を攻撃できる【特技】を使用した場合は、ダメージを2回計算可能。ラウンド終了時までに撃退できなかった場合、PC全員が撃破に足りなかったダメージに等しい防護点無視ダメージを受ける。魔族の群れはどのヘクスからでも攻撃可能だが、射程が10ヘクス以上の攻撃でなければならない。石を落としても攻撃可能で、「3D+#{[10, 20, 30, 50][difficulty]}」点の「打撃」属性ダメージを与える。この攻撃は判定なしで自動的に命中する。", - ] - - when 6 - table = [ - "急に大雨が降り出した、屋内に避難したいところだが…地形が「洞窟」か「遺跡」に変更されるまで、ラウンド終了時、[FP]に「#{['1D', '2D', '3D', '3D+5'][difficulty]}」点の防護点無視ダメージを受ける。[FP]に受けるダメージはPCがそれぞれダイスを振って決定する。「水中行動」が可能なPCはこの効果を受けない。", - "色とりどりの石が岩肌に…これはカラーストーンの原石だ![知力-#{[6, 9, 12, 15][difficulty]}]判定に成功すればカラーストーン原石を持ち帰ることができる。「カラーストーン原石」は1つ#{[500, 1000, 2000, 3000][difficulty]}GPで売却可能で、行動を消費することで自分のアイテム欄に好きなだけ入手可能。有効:【魔導工学のススメ】", - "不思議な岩がある。1Dを振って1~2であれば「火炎」属性、3~4であれば「冷気」属性、5~6であれば「電撃」属性の攻撃で、4ラウンド目終了までに#{[30, 60, 100, 200][difficulty]}点のダメージを与えれば破壊可能。不思議な岩はどのヘクスからでも隣接扱いで攻撃可能で、破壊したあとには財宝ランク#{[2, 4, 6, 8][difficulty]}のアイテムが発見できる。", - "「こんなところで人間に会うなんて珍しいな、お前らも食っていくか?」ストームコーザーが獲物を取った後調理している。このイベントが発生するとエネミーは消滅する。マジカルクッキングLv4「ジャンボ串焼き」を食べさせてもらえる。【魔法の料理人】を習得したPCがいれば、Lv5「グラント風香草焼き」にパワーアップする。この料理の効果は、自分たちが「マジカルクッキング」で作った料理と累積する。", - "高山植物の群生地を発見する。薬草の材料になるものもありそうだ?[知力-#{[6, 9, 12, 15][difficulty]}]判定に成功すれば、薬草を持ち帰ることができる。「高山の薬草」は1つ#{[500, 1000, 2000, 3000][difficulty]}GPで売却可能で、行動を消費することで自分のアイテム欄に好きなだけ入手可能。【ポーションナレッジ】があれば判定は不要。有効:【賢人の知恵】「自然と生きる」", - "岩壁が大きく崩れていく!崩落に巻き込まれて入口付近まで戻されてしまい、クリア時の財宝ランク-2。だが、崩落した後に鈍く輝くアイテムが転がっている…?[感覚-#{[6, 9, 12, 15][difficulty]}]判定に成功すれば#{['アダマンソード(剣/8000GP)', 'アダマンスケイル(鎧/15000GP)', 'アダマンプレート(鎧/30000GP)', 'ヒュージーブレード(剣/45000GP)'][difficulty]}を入手可能。有効:「鷹の目」", - ] - - else - return nil - end - - when 4 - areaText = "水辺" - case type - when 1 - table = [ - "回復の泉。PC全員の[HP][FP]が完全に回復する。「死亡」以外のあらゆるBSも回復する。", - "甲羅干しに適した暖かい小島を見つける。少しだけ休憩しよう。[HP]と[FP]が「3D#{['', '+5', '+10', '+15'][difficulty]}」点回復する。ワイズマンのPCは全回復する。何か面白い寝言を言ったPCに「#{['HPポーション', '高級HPポーション', '最高級HPポーション', 'うぃっしゅすたー'][difficulty]}」が空から降ってくる。", - "魚の群れを発見!捕まえてたらふくいただくとしよう!【魔法の料理人】があればマジカルクッキングの「魔界魚の目玉」(Lv3)#{['', '、【魔法の料理人2】があれば「シルヴァまっしぐら」(Lv4)と「エドマエスシ」(Lv5)', '、【魔法の料理人2】があれば「シルヴァまっしぐら」(Lv4)と「エドマエスシ」(Lv5)', '、【魔法の料理人2】があれば「シルヴァまっしぐら」(Lv4)と「エドマエスシ」(Lv5)'][difficulty]}#{['', '', '、【魔法の料理人3】があれば「刺身盛り合わせ」(Lv6)と「オオトロスシ」(Lv7)', '、【魔法の料理人3】があれば「刺身盛り合わせ」(Lv6)と「オオトロスシ」(Lv7)'][difficulty]}#{['', '', '', '、【魔法の料理人4】があれば「特上うな丼」(Lv8)'][difficulty]}の全ての効果を得られる。この効果はすでにマジカルクッキングを使用していても累積する。", - "「こんにちは、スーっとして気持ちいいよ。…ふふ、一緒に入ろうか?」ミントや菖蒲を育てているフラウに出会い、薬湯に浸かって[FP]が全回復する。さらに、「火炎」属性に対する防護点に+10のボーナス。", - "リザードの集落につく。[HP]の減ったキャラクターがいれば持て囃され、マジカルクッキング「カリカリミミズ肉」(Lv2)をごちそうしてもらい、この先の道案内も買って出てくれる。クリア時の財宝ランク+1。全員の[HP]が満タンの場合は、そっけない扱いをされ何も起こらない。この効果はすでにマジカルクッキングを使用していても累積する。", - "回復の泉に見せかけた毒の泉。パーティーメンバーの[HP][FP]のいずれかが減少している場合このイベントは拒否できない。毒の水で「3D+#{[10, 20, 30, 50][difficulty]}」点の防護点無視ダメージを受ける。[HP][FP]が全快のキャラクターと「虫の知らせ」があるPCはこの効果を受けない。[知力-6]判定に成功すればこれが毒の泉だとわかる。有効:【野伏の歩み】【賢人の知恵】", - ] - - when 2 - table = [ - "財宝ランク#{[0, 2, 4, 6][difficulty]}の宝箱を発見する。カギやトラップはかかっていない。行動を消費することで開けることができる。", - "財宝ランク#{[1, 3, 5, 7][difficulty]}の宝箱を発見する。難易度#{[3, 6, 9, 12][difficulty]}のカギがかかっている。行動を消費して[感覚-#{[3, 6, 9, 12][difficulty]}]判定でカギを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", - "財宝ランク#{[1, 3, 5, 7][difficulty]}の宝箱を発見する。難易度#{[3, 6, 9, 12][difficulty]}のトラップがかかっている。行動を消費して[感覚-#{[3, 6, 9, 12][difficulty]}]判定でトラップを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", - "水中の奥深くに宝箱があるのが見える。とってくるのは無理そうに見えるが…行動を消費して[敏捷-#{[9, 12, 15, 18][difficulty]}]判定を行い、成功すれば財宝ランク#{[3, 5, 7, 9][difficulty]}のアイテムを入手できる。有利な特異点「水中行動」があれば判定不要。有効:【野伏の歩み】", - "ミミックの罠。ランダムなキャラクターに「3D+#{[30, 50, 70, 100][difficulty]}」の「斬撃」属性ダメージを与える。[知力-#{[3, 6, 9, 12][difficulty]}]判定に成功すればこの罠を見抜いて無効化でき、なおかつ#{[1000, 2000, 5000, 10000][difficulty]}GPを入手可能。有効:【盗賊の心得】【ロックスミス】", - "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。[知力-#{[3, 6, 9, 12][difficulty]}]判定に成功すればこの罠を見抜いて無効化することができ、なおかつ#{[1000, 2000, 5000, 10000][difficulty]}GP入手可能。", - ] - - when 3 - table = [ - "進みやすい浅瀬が続き、すいすいと進める。クリア時の財宝ランク+1。有利な特異点「水中行動」や【ミズグモ】をもつPCがいればクリア時の財宝ランク+2。ただしグラントがいると浅瀬にもかかわらず溺れてしまい、財宝ランクは変化しない。(RP次第でグラントがいるデメリットをなくしても良い)", - "様々な漂流物が流れこむ船の墓場だ。お宝もありそうだが探索は大変そうだ…[FP]を3点消費する代わりに水辺の財宝系イベント「2-1~2-6」が発生する。この効果を望まない場合は特に何も起きない。", - "ヒャッハー、ウォータースライダーだ!巨大な植物の幹を滑って進むことができるが、かなり怖いので勇気が必要。PC全員が[意思#{['', '-1', '-2', '-4'][difficulty]}]判定を行い、全員成功すればクリア時の財宝ランク+1。この判定に成功したPCは、失敗したPCを1人まで抱えて滑り落ちることで成功扱いにできる。", - "大蓮のような植物の群生地を渡っていく。重たい装備を身に着けていると沈んでしまいそうだ…[必要体力]が15以上の装備を所有しているPCがいるとクリア時の財宝ランク-1。そのPCに有利な特異点「水中行動」や【ミズグモ】があればこのデメリットは受けない。", - "水流が複雑になっており、思うように進めず戻されてしまう。[体力-#{[4, 5, 6, 8][difficulty]}]判定に失敗するとクリア時の財宝ランク-1。", - "突然の激流にイカダが巻き込まれる!身を任せている場合じゃない!敵味方全員が[敏捷-#{[2, 3, 4, 6][difficulty]}]判定を行い、失敗したキャラクターは4ラウンド終了まで帰ってこれなくなる。全員が失敗してしまった場合、冒険は強制的に失敗となりダンジョンの入口に戻されてしまう。ダンジョン内で手に入れたアイテムも消耗品とGP以外はセバて水に流されて消滅する。有効:【野伏の歩み】", - ] - - when 4 - table = [ - "蟹の魔物がイカダをちょんぎろうとしている!早く倒さなくては!エネミーとエンカウント。1ラウンド以内に倒せなかった場合、イカダをちょんぎられてクリア時の財宝ランク-1。", - "アシガル潜水隊と遭遇。エネミーとエンカウント。エネミーは奇襲攻撃を仕掛けてくるため[先制]に+5のボーナスを得る。[感覚-#{[6, 8, 10, 12][difficulty]}]判定に成功すると水面に動く竹筒を発見可能で、その場合は[先制]へのボーナスは無効化可能。有効:「鷹の目」", - "何か水面が揺れている…まさか、あれはニンジャ!?エネミーとエンカウント。エネミーは謎の光学迷彩ギアで姿を隠しており、[回避]に+#{[2, 2, 4, 6][difficulty]}のボーナス。", - "水辺で花を育てている少女に出会う…が、少女は魔族だった!エネミーとエンカウント。彼女が育てている花の根元には無数の動物の死体が無残にも肥料にされている。戦闘開始時に[意思]判定を行い、失敗したキャラクターは戦慄して1ターン行動不可。[回避][抵抗]の判定を行うことはできる。", - "高波にのった魔族の騎士が現れる!エネミーとエンカウント。エネミーは波で勢いがついているため、最初のターンは[移動][先制]に+5のボーナス。", - "湖の上を渡っていると思ったら巨大なスライムの上だった!?エネミーとエンカウント。エネミーは巨大なため[HP]に+#{[50, 100, 150, 250][difficulty]}のボーナスを得ている。また、全てのヘクスに対して隣接しているものとする。(移動妨害も全てのヘクスで受ける)", - ] - - when 5 - table = [ - "美しい歌声が響き渡る、意識が引きずり込まれそうだ。その場にいる敵味方全員は[抵抗-#{[2, 4, 6, 8][difficulty]}]判定を行い、失敗すると1ターンBS「☆眠り」を受ける。有効:【音響補正装置】", - "小舟で進んでいると、なにやら激しい水の音がする。この先は滝のようだ!PC全員が[移動-#{[3, 4, 5, 7][difficulty]}]判定を行い(「水中行動」があれば+5のボーナスを得る)、成功したキャラクターがいれば事なきを得る。更に滝の裏の洞窟から財宝ランク#{[3, 5, 7, 9][difficulty]}のアイテムを入手可能。[移動]判定に全員失敗した場合、全員が滝から転落して「3D+#{[20, 30, 40, 60][difficulty]}」の防護点無視ダメージを受ける。有効:【野伏の歩み】", - "船の墓場を進んでいると、強風でマストが倒れてくる!PC全員が「ドッジ-#{[2, 4, 6, 8][difficulty]}」判定を行い、失敗すると「3D+#{[10, 20, 30, 50][difficulty]}」の防護点無視ダメージを受け、BS「☆転倒」を受ける。", - "ぺっぺっ、水がしょっぱい!濃い塩水がギアをダメにしてしまう。所有している武器と盾についたアタッチメントがシナリオ終了まで消滅してしまう。【魔導工学のススメ#{[1, 1, 2, 3][difficulty]}】があれば応急処置を行い、この効果を受けない。", - "とても寒く冷たい水辺で、体力をどんどん奪われてしまう。「冷気」属性に対する防護点が#{[10, 15, 20, 25][difficulty]}以下のキャラクターは、ラウンド終了時に[FP]を#{[5, 10, 15, 20][difficulty]}点消費する。", - "突然間欠泉が吹き出してダメージを受ける!敵味方全員のうちランダムで1体に3D+#{[40, 60, 80, 120][difficulty]}点の「火炎」属性ダメージとBS「☆転倒」を与える。このイベントが2ラウンド目で発生した場合、4ラウンド目のイベントはダイスを振らず「洞窟6-2」の温泉イベントになる。", - ] - - when 6 - table = [ - "傷ついた#{['スワンプランナー', 'スカイサーチャー', 'グリマルキン', 'ゴールデンコーン'][difficulty]}を発見する。ラウンド終了までに[HP]を#{[30, 50, 70, 100][difficulty]}点まで回復させればなついて#{['スワンプランナー(ペット/4000GP)', 'スカイサーチャー(ペット/6000GP)', 'グリマルキン(ペット/15000GP)', 'ゴールデンコーン(ペット/30000GP)'][difficulty]}を入手可能。回復できなかった場合、#{['スワンプランナー', 'スカイサーチャー', 'グリマルキン', 'ゴールデンコーン'][difficulty]}は逃走する。", - "なにやら派手な魚を見つける。あれはもしやアズマに伝わる幻の魚「ニシキゴイ」か!?行動を消費して[敏捷-#{[8, 10, 12, 15][difficulty]}]判定に成功すれば見事に捕まえ、アイテム欄に入手することができる。売却すると#{[3000, 6000, 12000, 24000][difficulty]}GPになる。この判定は4ラウンド目が終了するまで何度でも行うことができる。有効:【野伏の歩み】", - "カエルの合唱が響き渡る。何やら意味がある歌声に聞こえるが…[知力-#{[6, 9, 12, 15][difficulty]}]判定に成功すると歌の意味を理解できる。カエル達は安全な道を教えてくれていたのだ!判定に成功した場合クリア時の財宝ランク+1。判定に失敗すると毒の沼に足を踏み入れ、PC全員が「3D+#{[10, 20, 30, 50][difficulty]}」点の防護点無視ダメージを受ける。有効:「自然と生きる」【賢人の知恵】", - "老齢のグラントが岩に腰かけ釣りをしている。このイベントが発生するとエネミーは消滅する。「どうだね、よかったら釣り勝負をやっていかないか?」PC全員が行動を消費して3Dを振り、誰かが3か4を出せば見事勝利することができる。「見事じゃ、そこにあるガラクタはワシには必要ないものじゃから好きに持って行くがいい」と財宝を渡してくれる。財宝ランク#{[3, 5, 7, 9][difficulty]}のアイテムを2つ入手可能。", - "沈没した「死者の方舟」だ。探せば何かありそうだが危険そうだ…1Dを振って以下の結果を適用すること。このイベントは無視することができ、その場合は何も起きない。 - ---------- - 1~2:…これは財宝だ!財宝ランク#{[3, 5, 7, 9][difficulty]}のアイテムと#{['スケルトンメイル(鎧)', '死者の心臓(装飾品)', '死霊貴族の服(鎧)', 'デュラハンの盾(盾)'][difficulty]}を入手。 - 3~4:…マストが倒れてきた!「水辺5-3」と同様のイベントが発生する。 - 5~6:…船に残っていたアンデッドが襲ってきた!エネミーとエンカウント。", - "貝の群生地だ。貝の中にはキラリと光るものが…あれは真珠だ!行動を消費して[敏捷-#{[6, 9, 12, 15][difficulty]}]判定を行い、成功すれば1回ごとにアイテム「真珠」を入手可能。これは1つ#{[1000, 2000, 4000, 8000][difficulty]}GPで売却可能で、4ラウンド目が終了するまで何回でも入手可能。ただし、判定の成否に関わらず[FP]を2点消費する。「水中行動」があれば判定不要で[FP]も消費しない。有効:【野伏の歩み】", - ] - - else - return nil - end - - when 5 - areaText = "森林" - case type - when 1 - table = [ - "回復の泉。PC全員の[HP][FP]が完全に回復する。「死亡」以外のあらゆるBSも回復する。", - "鬱蒼とした森の奥に見事な佇まいの茶室を見つける。ラウンド中に【ソチャデスカ】を使用した際の回復量が2倍になる。茶室の中には友好的なカラクリフラウがいて、#{[100, 200, 300, 500][difficulty]}GPを支払ったPC全員の[HP][FP]を「3D+#{[10, 20, 30, 50][difficulty]}」点回復してくれる。", - "おいしそうな果実の木だ!とてもおいしく、食べるとやたらとテンションが高くなる。[HP][FP]が「3D#{['', '+5', '+10', '+15'][difficulty]}」点回復するが、シナリオ終了まで不利な特異点「脳みそ筋肉」を得たかのように猪突猛進型の性格になってしまう。[知力-#{[3, 6, 9, 12][difficulty]}]判定に成功すれば興奮作用のある種をどけてデメリットは受けない。有効:「自然と生きる」【賢人の知恵】", - "「ひんやりおいしい森のアイスやさんですよ~。今なら私との握手券付き~♪」フラウが果物いっぱいのトロピカルなアイスクリームを売っている。マジカルクッキング「フラウアイスクリーム」(Lv4)を食べさせてもらえる。この料理の効果は、自分たちが「マジカルクッキング」で作った料理と累積する。", - "森のなかにひっそりとたたずむジンジャを発見して、ナインテイルのカンヌシかミコが旅の無事を祈ってくれる。PT全員に【不死なる炎】がかかり、最終イベントに入るまで、死亡判定に自動成功するようになる。", - "食人植物の花粉による回復の泉の幻影。PTメンバーの[HP][FP]のいずれかが減少している場合このイベントは拒否できない。[知力-6]判定に失敗すると食人植物の群生地にふらふらと入り、PC全員が「3D+#{[20, 30, 40, 60][difficulty]}」の「斬撃」属性ダメージを受ける。有利な特異点「自然と生きる」があれば、事前に気が付きダメージは受けない。有効:【賢人の知恵】", - ] - - when 2 - table = [ - "財宝ランク#{[0, 2, 4, 6][difficulty]}の宝箱を発見する。カギやトラップはかかっていない。行動を消費することで開けることができる。", - "財宝ランク#{[1, 3, 5, 7][difficulty]}の宝箱を発見する。難易度#{[3, 6, 9, 12][difficulty]}のカギがかかっている。行動を消費して[感覚-#{[3, 6, 9, 12][difficulty]}]判定でカギを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", - "財宝ランク#{[1, 3, 5, 7][difficulty]}の宝箱を発見する。難易度#{[3, 6, 9, 12][difficulty]}のトラップがかかっている。行動を消費して[感覚-#{[3, 6, 9, 12][difficulty]}]判定でトラップを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", - "上から3本の蔓が垂れ下がっている。すごく引っ張りたくなる形状だ…行動を消費して引っ張ったキャラクターは1Dを振って以下のものを入手する。蔦を1つ引っ張ると他の蔦はスルスルっと上に消えていってしまう。有効:「非凡な直感」 - ---------- - 1~2:大当たり!財宝ランク#{[3, 5, 7, 9][difficulty]}の財宝 - 3~4:小当たり!おいしい果物(#{['HPポーション', '高級HPポーション', '最高級HPポーション', '奇跡のポーション'][difficulty]}と同等) - 5~6:「ハズレ」と書かれた硬い木の実が直撃!「3D+#{[10, 20, 30, 50][difficulty]}」点の「打撃属性ダメージを受ける」", - "ミミックの罠。ランダムなキャラクターに「3D+#{[30, 50, 70, 100][difficulty]}」の「斬撃」属性ダメージを与える。[知力-#{[3, 6, 9, 12][difficulty]}]判定に成功すればこの罠を見抜いて無効化でき、なおかつ#{[1000, 2000, 5000, 10000][difficulty]}GPを入手可能。有効:【盗賊の心得】【ロックスミス】", - "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。[知力-#{[3, 6, 9, 12][difficulty]}]判定に成功すればこの罠を見抜いて無効化することができ、なおかつ#{[1000, 2000, 5000, 10000][difficulty]}GP入手可能。", - ] - - when 3 - table = [ - "この獣道を通れば近道になりそうだ!しかし狭くて動きにくい…クリア時の財宝ランクが+1されるが、ラウンド中の[移動]に-3のペナルティ。", - "「ホウホウホーウ。そっちの道は危ないぞ…」鳥たちが古い言葉で道案内をしてくれる。[知力-6]判定に成功すれば、クリア時の財宝ランク+1。失敗すると次のイベントは必ず「森林」のエンカウントイベントになる。このイベントが4ラウンド目だった場合、道に迷ってクリア時の財宝ランク-1。有効:「自然と生きる」【賢人の知恵】", - "時計をもった兎が忙しそうに走っている。追いかけていくと木の幹に落っこちて妙な場所についてしまった!4ラウンド目が終了するまで「迷宮オプション」を新たに1つ追加する。このイベントが4ラウンド目だった場合、近道になりクリア時の財宝ランク+1。", - "毒草の群生地だ!突っ切れば近道になりそうだが…気にせず直進すればシナリオ終了まで[HP]の最大値と現在値が#{[10, 15, 20, 25][difficulty]}点減少するが、クリア時の財宝ランク+1。迂回すると悪い効果は受けないがクリア時の財宝ランク-1。", - "「花の香りのする方においで」と看板がある。[感覚-#{[6, 9, 12, 15][difficulty]}]判定に失敗すると遠回りになりクリア時の財宝ランク-1。有利な特徴「犬の鼻」が#{['あれば判定不要。', 'あれば判定不要。', '二段階あれば判定不要。一段階はボーナスのみ。', '二段階あれば判定不要。一段階はボーナスのみ。'][difficulty]}", - "おや、進行方向から動物たちが逃げてくるぞ?…大変だ、森林火災だ!引き返して火災から逃げるとクリア時の財宝ランク-2。構わず突っ切るなら4ラウンド目が終了するまで、ターン開始時に「3D+#{[10, 15, 20, 30][difficulty]}」点の「火炎」属性ダメージを受ける。", - ] - - when 4 - table = [ - "森の盗賊団がこちらの懐を狙ってきた!エネミーとエンカウント。このエネミーからダメージをうけるたびに所持品のうち価格の安いものを奪われてしまう。4ラウンド目までに倒せばうばいかえすことができる。", - "動物刈りを楽しんでいた魔族と偶然遭遇してしまう。エネミーとエンカウント。「分類:魔物」「分類:魔獣」のエネミーが登場していた場合、魔族たちにに狩られると思い逃亡する。", - "魔族の偵察隊と遭遇する。報告される前に倒さなくては!指定のエネミーを1ラウンド以内に倒せなかった場合、次のエンカウントが発生した際、新たに登場するエネミーは準備万端で待ち構えているため[先制]に+10、あらゆる致傷力に+#{[10, 20, 30, 40][difficulty]}のボーナス。", - "森を支配する木の魔族の王に遭遇してしまった!エネミーとエンカウント。#{['エネミーは[HP]に+100のボーナス。', 'エネミーは[HP]に+150のボーナス。', 'エネミーは[HP]に+200のボーナス。', ''][difficulty]}4ラウンド終了までに討伐に成功すると財宝ランク#{[3, 5, 7, 9][difficulty]}のアイテムを入手できる。", - "フラウとその尖兵が道案内をしてくれる…と思ったらカラーコンタクトをつけてフラウのふりをした魔族とその尖兵だった!エネミーとエンカウント。尖兵は「PC配置ヘクス」に配置すること。PCはラウンド終了まで[回避]に-6のペナルティ。有利な特異点「背中の目」があれば[回避]へのペナルティは受けない。", - "迷彩服をキて軍事訓練中の第3師団精鋭コンバット部隊だ!エネミーとエンカウント。エネミーは[先制]に+4のボーナス。", - ] - - when 5 - table = [ - "良い香りが周囲に満ちていく。戦闘中だった場合、闘争心を失わせるキノコの香りで敵味方ともに剣を収め強制的に戦闘終了となる。戦闘中ではなかった場合は[知力-6]判定に失敗すると香りをまともにかいで闘争心を失ってしまい、シナリオ終了まであらゆる致傷力に-5のペナルティ。有効:「犬の鼻」「自然と生きる」【賢人の知恵】", - "突然上から木の蔓が誰かを吊り上げて首を絞めようとする!ランダムなPC1人は[感覚-#{[3, 4, 5, 7][difficulty]}]判定を行い、失敗すると「3D+#{[30, 50, 70, 100][difficulty]}」点の防護点無視ダメージを受け、そのラウンド中は行動も[回避]も行えない。有利な特異点「自然と生きる」をもつPCが対象になった場合は何も起きない。有効:【野伏の歩み】", - "巧妙なベアトラップが仕掛けてある。ランダムなキャラクター1人(エネミーも含む)に「3D+#{[10, 20, 30, 50][difficulty]}」点の「斬撃」属性ダメージを与え、[移動][回避]を0にする。このトラップにかかったキャラクターか隣接したキャラクターが行動を消費して[感覚-#{[6, 8, 10, 12][difficulty]}]判定に成功すれば解除可能。有効:【盗賊の心得】【ロックスミス】", - "突然前も見えないほどのスコールに見舞われる!敵味方全員の攻撃や【特技】の射程が全て1になってしまう。森林「3-6」の山火事が起きていた場合、鎮火する。", - "ランダムなPC1人が巨大な食虫植物に喰われてしまう!幸いすぐに助け出すことができたのだが、鎧も服もボロボロにされてしまう(イヤーン)喰われたPCが装備していた鎧はシナリオ終了まで使用不可能になる。", - "すさまじい悪臭を放つ巨大な花だ!あまりの悪臭にPCの装備していた「ペット」じゃ全て気絶してシナリオ終了まで使用不可能になる。なぜかギア製のペットももれなく気絶する。有利な得意点「犬の鼻」をもつPCがいれば近寄る前に回避可能。", - ] - - when 6 - table = [ - "魔族の狩りで傷ついた狼を発見する。ラウンド終了までに[HP]を1点でも回復してやればふらふらと歩きだし、木の根元でここを掘れというように吠える。埋まっていたものは1Dを振って決定する。 ----------- -1:犬の糞(ゴミ) -2:10GP -3:財宝ランク#{[0, 2, 4, 6][difficulty]}のアイテム -4:財宝ランク#{[1, 3, 5, 7][difficulty]}のアイテム -5:財宝ランク#{[2, 4, 6, 8][difficulty]}のアイテム -6:うぃっしゅすたー(大事なもの)", - "少し開けた原っぱでフラウのダンスパーティーに誘われる。このイベントが発生するとエネミーは消滅する。行動を消費して[敏捷-#{[6, 8, 10, 12][difficulty]}]判定に成功してダンスを踊ると原っぱの中心からすくすくと大きなキノコが育ち、キノコの馬車でダンジョンのゴール付近まで一気にすっとばしてくれる。第4ラウンドが終了したものと扱い、クリア時の財宝ランク+2。", - "フラウたちが「森ガールファッションコンテスト」を開催しており、その助っ人を依頼される。このイベントが発生するとエネミーは消滅する。[意思-#{[6, 8, 10, 12][difficulty]}]判定に成功すれば的確なアドバイスで助っ人を依頼したフラウを優勝に導くことができ、その謝礼として#{['狩人の羽根帽子(装飾品)', '緊急召喚の宝珠(装飾品)', '毒の香水瓶(装飾品)', '女王の花冠(装飾品)'][difficulty]}", - "霊樹の花にたまった水が神秘的な魔力を帯びている。[知力-6]判定に成功するとそれにポーションとしての効果があることがわかり、奇跡のポーション(消耗品)を入手する。【ポーションナレッジ】を習得したPCがいれば判定不要。有効:【賢人の知恵】", - "迷子のフラウを見つける。4ラウンド目が終了するまでに他のフラウに出会うイベントが発生した場合、偶然にもそのフラウと知り合いで、お礼に財宝ランク#{[3, 5, 7, 9][difficulty]}のアイテムを渡してくれる。フラウに出会えずシナリオをクリアした場合も、迷宮からひとまず出ることができたお礼に財宝ランク#{[1, 3, 5, 7][difficulty]}のアイテムを渡してくれる。", - "ランダムに選んだPC1人が、うっかり泉に武器を落としてしまう。すると泉から女神が出現して、落とした武器と同じ種類の超高級品の武器(魔将ドロップ品など)を落としたかどうかを聞いてくる。[意思#{['', '-2', '-4', '-6'][difficulty]}]判定に成功すれば正直に答え、武器に#{[5000, 10000, 30000, 50000][difficulty]}GPまでの任意のアタッチメントを追加してくれる。失敗すると嘘をついて女神を怒らせてしまい、装備していた武器を失ってしまう。", - ] - - else - return nil - end - - when 6 - areaText = "墓場" - case type - when 1 - table = [ - "回復の泉。PC全員の[HP][FP]が完全に回復する。「☆死亡」以外のあらゆるBSも回復する。", - "「彼らは生前の思いが強すぎ成仏できません。語りかけて鎮めてやるとよいでしょう…」アズマ風の墓石が佇んでいる。[知力-#{[3, 6, 9, 12][difficulty]}]判定か[意思-#{[3, 6, 9, 12][difficulty]}]判定に成功するとアズマ式お祈りや語りかけにより霊に感謝され、[HP][FP][Ft]が全回復する。失敗すると霊を怒らせて呪われ、全員の[Ft]が1点減少する。有効:【賢人の知恵】(知力)【詩人の交渉術】(意思)", - "墓守の休憩所を見つける。心の落ち着くお線香の香りがする…[HP][FP]#{[10, 15, 20, 25][difficulty]}点とBSを回復する。更にシナリオ終了まで[抵抗]に+2のボーナス。", - "「人間か。キミたちはここの亡者のようにならないようにね…」ヒガンバナの世話をするフラウと出会い、「ヒガンバナの毒」を武器に塗ってもらうことができる。物理攻撃の致傷力に+5のボーナス。", - "シルヴァテイルのネクロマンサー達が集まって、何やら怪しい儀式をしている。道中で「☆死亡」した、もしくは保険を適用して強制送還されたキャラクターがいれば、[HP][FP]とBSが全回復した状態で復活させてもらうことができる。それ以外の場合は不気味な儀式に不安を感じ、FPを1点消費する。", - "回復の泉があるのだが…?PCのうち1人でも[HP][FP]のいずれかが減少している場合このイベントは拒否できない。PC全員の[HP][FP]が完全に回復する。「☆死亡」以外のあらゆるBSも回復する。黄泉の国の水を飲んだことでシナリオ終了まで「分類:アンデッド」となり、【死者に鞭】【アマテラスの光】などの、一部の【特技】の効果を受ける。", - ] - - when 2 - table = [ - "財宝ランク#{[0, 2, 4, 6][difficulty]}の宝箱を発見する。カギやトラップはかかっていない。行動を消費することで開けることができる。", - "財宝ランク#{[1, 3, 5, 7][difficulty]}の宝箱を発見する。難易度#{[3, 6, 9, 12][difficulty]}のカギがかかっている。行動を消費して[感覚-#{[3, 6, 9, 12][difficulty]}]判定でカギを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", - "財宝ランク#{[1, 3, 5, 7][difficulty]}の宝箱を発見する。難易度#{[3, 6, 9, 12][difficulty]}のトラップがかかっている。行動を消費して[感覚-#{[3, 6, 9, 12][difficulty]}]判定でトラップを解除して開けることができる。有効:【盗賊の心得】【ロックスミス】", - "骸が何かを大事そうに握りしめている(抱きかかえている)。行動を消費して[体力-#{[2, 4, 6, 10][difficulty]}]判定に成功すれば、財宝ランク#{[2, 4, 6, 8][difficulty]}のアイテムを入手できるが、Ftが1点減少する。", - "ミミックの罠。ランダムなキャラクターに「3D+#{[30, 50, 70, 100][difficulty]}」の「斬撃」属性ダメージを与える。[知力-#{[3, 6, 9, 12][difficulty]}]判定に成功すればこの罠を見抜いて無効化でき、なおかつ#{[1000, 2000, 5000, 10000][difficulty]}GPを入手可能。有効:【盗賊の心得】【ロックスミス】", - "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。[知力-#{[3, 6, 9, 12][difficulty]}]判定に成功すればこの罠を見抜いて無効化することができ、なおかつ#{[1000, 2000, 5000, 10000][difficulty]}GP入手可能。", - ] - - when 3 - table = [ - "ちょっとなにか出そうな、柳の木でできたトンネルを発見する。PC全員が[意思]判定を行い、全員成功した場合はクリア時の財宝ランク+1。最も成功度の低かった(失敗度の大きかった)PCは揺れる柳を幽霊と思い込み、4ラウンド終了まであらゆる判定に-2のペナルティ。", - "石畳の道を歩いている途中で朽ちた祠を発見する。何かお供え物をしたほうが良いだろうか?アイテム欄の消耗品1つをお供えすると祠が動いて地下通路が出現する!この通路を通ることで近道できて、クリア時の財宝ランク+1。", - "道が途切れ、草が伸び放題の荒れ地に出る。方向もわからず、進むには骨が折れそうだ…[体力-#{[2, 4, 6, 8][difficulty]}]判定を行い、成功すればクリア時の財宝ランク+1。失敗するとクリア時の財宝ランク-1。", - "どこまでも卒塔婆とススキしかない…同じ景色が続き、進んでいるか怪しくなる。1Dを振って1~3が出れば何もないが、4~6が出るとクリア時の財宝ランク-1。有利な特異点「天体時計」があればペナルティは受けない。", - "地面から突如骨の手が伸びて足を掴んでくる!PC全員が[移動#{['+4', '+2', '', '-2'][difficulty]}]判定を行い、クリア時の財宝ランクが「失敗した人数」分減少する。【死者に鞭】を持つPCがいれば骨は威圧されて引っ込み、この効果は無視できる。", - "先へ進む道には纏わりつくような死者の呪いが満ちている。直進するとシナリオ終了まであらゆる判定に-2のペナルティ。遠回りをすると悪影響は受けないがクリア時の財宝ランク-2。【死者に鞭】か【鎮魂の盾】を持つPCがいれば呪いをはねつけ、直進してもペナルティを受けない。", - ] - - when 4 - table = [ - "墓場に浮かんでいた人魂が突如魔物になって襲いかかってきた!エネミーとエンカウント。", - "朽ちていた骨が突如起き上がり襲いかかってきた!エネミーとエンカウント。このエネミーは業物の武器を持っており、物理攻撃の致傷力に+#{[5, 10, 15, 20][difficulty]}のボーナス。", - "不吉な歌を口ずさみ、ステップを踏みながらかわいらしい少女が近づいてくる。エネミーとエンカウント。", - "遠くから不吉な進軍の音を聞く。PC全員が[感覚-#{[2, 4, 6, 8][difficulty]}]判定を行い、誰か1人でも成功すれば、第二魔将グレヴディガーの軍勢が迫っているのを知る。全員判定に失敗してしまうとPCは第二魔将グレイヴディガーとその配下である無数の亡霊騎士団と相対することになる。#{['「保険」に入っていなければPCたちは死亡して、グレイヴディガーの配下にさせられてしまう。君たちの冒険はここで終了だ。', '「保険」に入っていなければPCたちは死亡して、グレイヴディガーの配下にさせられてしまう。君たちの冒険はここで終了だ。', '「保険」に入っていなければPCたちは死亡して、グレイヴディガーの配下にさせられてしまう。君たちの冒険はここで終了だ。', 'エネミーとエンカウント。'][difficulty]}有効:「狐の耳」「虫の知らせ」", - "「我らの眠りを妨げるものは誰だ…!」貴族の棺とそれを守る人形だ。墓荒らしには容赦なく襲い掛かる!エネミーとエンカウント。棺の中には貴金属が入っており、一部エネミーの通常ドロップの金額が増加する。", - "壁に埋まった10mはあろうかという巨大な蛇の骨が動き出し襲い掛かってくる!エネミーとエンカウント。", - ] - - when 5 - table = [ - "PC全員に墓から突然幻影が襲いかかる。幻影なので実害はないのだが、本当の攻撃と思って「パリイ」か「シールド」を1回消費してしまう。どちらも行えない場合、腰を抜かしてBS「☆転倒」を受ける。【トゥルービジョン】などがかかっているPCには無効。", - "「ひひっ、かかったなボケが!」理不尽にもギロチンが突如ランダムなPC1人に落ちてくる!「ドッジ-#{[4, 6, 8, 10][difficulty]}」判定を行い、失敗すると「3D+#{[40, 60, 80, 120][difficulty]}」点の「斬撃」属性ダメージを受ける。", - "「すいっちおーん。私達の仲間にしてやるよ!」用途不明の建物に迷い込んでしまったが…なんてこった、ここは火葬場だ!早く脱出しないと灰になるまで焼かれてしまうぞ!PC全員が「3D+#{[30, 40, 50, 70][difficulty]}」点の「火炎」属性ダメージを受ける。[移動]が#{[8, 9, 10, 12][difficulty]}以上のPCは何とか逃げ出しダメージを受けず、さらに自分より[体力]の低いキャラクター1人を連れて脱出可能。有効:【盗賊の心得】【ロックスミス】", - "墓石が動き出し中から何かが出てこようとしている![体力-#{[4, 6, 8, 10][difficulty]}]判定に成功すればなにも起こらないが、失敗すると探索中に倒されたエネミーの中で最もCLが高いエネミーが再度出現する。該当モンスターが存在しなかった場合は、昼寝をしていたフラウが出てくるだけ。", - "金の亡者のゾンビが群がってくる。金を渡してやるまで満足しそうにない…#{[1000, 2000, 4000, 8000][difficulty]}GPを支払うと満足して去っていくが、支払いを拒否した場合(もしくはお金が足りなかった場合)はPC全員が「3D+#{[10, 20, 30, 50][difficulty]}」の「打撃」属性ダメージを受ける。【死者に鞭】を持つPCがいればひと睨みでそそくさと去っていく。", - "「おやおや。死者に気に入られましたか…困りましたねえホッホッ」ランダムなPC1人の武器が死者の怨念を吸い取り魔剣となる!魔剣は攻撃力に+5のボーナスを得るが、装備していると[HP]の最大値が10点減少する。魔剣となった武器は売却不可能で、不要な場合は捨てるしかない。すでに魔剣となっている武器と、【特技】によって入手した武器は魔剣にならない。", - ] - - when 6 - table = [ - "雷が突然鳴り響く。敵味方全員が3Dを振り、出目が一番高いキャラクターは「3D+#{[30, 50, 70, 100][difficulty]}」点の「電撃」属性ダメージを受ける。", - "「いいところに来たナ。どうだ、お前らも飲んでいくカ?」タルの上に腰かけ、減ることのない酒を口に運び続けるスケルトンがいる。このイベントが発生するとエネミーは消滅する。酒を飲む場合、行動を消費して[意思#{['', '-1', '-2', '-4'][difficulty]}]判定を4回連続で行う。全て成功すると、「ついに酒が切れたカ、最後の晩酌に付き合ってもらって感謝するゼ」と感謝を述べて消滅し、あとには財宝ランク3のアイテムが残る。途中で1度でも失敗した場合、酒に悪酔いしてシナリオ終了まであらゆる判定に-2のペナルティ。", - "怪しい輝きを放つ宝石を発見する。手にとったPCは呪われてシナリオ終了まであらゆる判定に-2のペナルティ。手に取らない場合は全員に[意思#{['', '-1', '-2', '-3'][difficulty]}]判定が必要で、不利な特異点「金の亡者」「好奇心は猫を殺す」があるとこの[意思]判定に-4のペナルティ。無事持ち帰った場合呪いは解け、#{[2000, 6000, 20000, 60000][difficulty]}GPで売却できる。", - "朽ちたギアの墓場だ。まだ使えるギアがあるかもしれない。【魔導工学のススメ】があれば、SLvに応じたアイテムが1つ入手可能。 - ---------- - SLv1:カラクリバランサー(装飾品) - SLv2:カラクリお茶キット(装飾品) - SLv3:ゴーレムアーム(装飾品) - #{['', 'SLv4:ホイールブースター(装飾品)', 'SLv4:ホイールブースター(装飾品)', 'SLv4:ホイールブースター(装飾品)'][difficulty]} - #{['', '', 'SLv5:ナグルファル装甲(装飾品)', 'SLv5:ナグルファル装甲(装飾品)'][difficulty]} - #{['', '', '', 'SLv6:死者の止まらない歯車(装飾品)'][difficulty]}", - "「ほーらよっといでーよっといでー、地獄の沙汰も金次第…」うすら寒い気配の漂う川辺に出る。川辺には渡し守らしき、ローブをかぶった2人の少女がいる。1人あたり#{[200, 500, 1000, 2000][difficulty]}GPを支払えばクリア時の財宝ランク+1。支払いを拒否したかお金が足りない場合、エネミーとエンカウント。", - "『千ノ戦イデ千ノ勝チヲ知ル者、ココニ眠ル』と刻まれた棺を見つける。棺を開けた場合はエネミーとエンカウント。勝利すると#{['キメラパーツ(装飾品)', 'キメラパーツ(装飾品)', 'グレートキメラパーツ(装飾品)', 'ウェポンマスターの証(装飾品)'][difficulty]}を入手できる。不利な特異点「好奇心は猫を殺す」「脳みそ筋肉」を持つキャラクターは[意思]判定を行い、失敗すると棺を開けてしまう。", - ] - - else - return nil - end - - else - return nil - end - - result, event = get_table_by_1d6(table) - number = "#{area}#{type}#{event}" - - return "#{tableName}(#{number}):#{areaText}<#{difficultyText}>:#{result}" - end - - # 夢幻の迷宮エネミーデータ表 - def getRandomEnemyDataResult(command) - if /RED(E|N|H|L)(256|265|465|665|666)/ === command - dif = Regexp.last_match(1) - area = 0 - event = Regexp.last_match(2).to_i - number = event - elsif /RED(E|N|H|L)([1-6])4([1-6])/ === command - dif = Regexp.last_match(1) - area = Regexp.last_match(2).to_i - event = Regexp.last_match(3).to_i - number = "#{area}4#{event}" - else - return nil - end - - tableName = "エネミーデータ表" - - case dif - when "E" - difficultyText = "初級" - difficulty = 0 - - when "N" - difficultyText = "中級" - difficulty = 1 - - when "H" - difficultyText = "上級" - difficulty = 2 - - when "L" - difficultyText = "悪夢" - difficulty = 3 - - else - return nil - end - - case area - when 1 - areaText = "洞窟" - table = [ - [1, [ - 'キャンディークラウン(CL40)1匹', - 'キャンディクラウン(CL40)「1D-3」匹(最低1匹)', - 'キャンディークラウン「1D-2」匹(最低1匹)出目が6だった場合ゴールデンクラウン(CL177)1匹', - 'ゴールデンクラウン(CL177)とエンカウント' - ]], - [2, [ - 'ベルセルク(CL7)3匹', - 'ベルセルク(CL7)3匹([命中]+4、[HP]+30、[FP]+10、あらゆる致傷力+20)', - 'ベルセルク(CL7)3匹([命中]+8、[HP]+60、[FP]+20、あらゆる致傷力+40)', - 'ベルセルク(CL7)3匹([命中]+16、[HP]+120、[FP]+40、あらゆる致傷力+80)' - ]], - [3, [ - 'ガーゴイル(CL10)2匹', - 'ガーゴイル(CL10)2匹([命中]+4、[HP]+20、[FP]+10、あらゆる致傷力と防護点+20)', - 'ガーゴイル(CL10)2匹([命中]+8、[HP]+40、[FP]+20、あらゆる致傷力と防護点+40)', - 'ザッハーク(CL39)3匹' - ]], - [4, [ - 'デビルホイール(CL18)1匹', - 'デビルホイール(CL18)1匹、あらゆる致傷力+20', - 'デビルホイール(CL18)1匹、あらゆる致傷力+40', - 'ムスペルヘイムの獣(CL65)、あらゆる防護点+20' - ]], - [5, [ - 'ヘルハウンド(CL12)1匹、インプ(CL3)2匹', - 'フェニックス(CL25)2匹', - '火龍ヘルブレイザー(CL50)1匹、ケルベロス(CL33)1匹', - '煉獄龍バーガトリ(CL100)1匹' - ]], - [6, [ - 'アイスメイデン(CL10)1匹、アイスリザード(CL7)2匹', - 'クリスタルビースト(CL25)2匹', - '氷河龍グレイシャル(CL65)1匹', - '冥界龍コキュートス(CL110)1匹' - ]], - ] - - when 2 - areaText = "遺跡" - table = [ - [1, [ - '1Dをふって無限の迷宮の地形から1つ選択する。その地形で該当する難易度[初級]に名前の書かれたエネミーが全て1体ずつ出現する。特別な強化が施されている場合それも適用する。', - '1Dをふって無限の迷宮の地形から1つ選択する。その地形で該当する難易度[中級]に名前の書かれたエネミーが全て1体ずつ出現する。特別な強化が施されている場合それも適用する。', - '1Dをふって無限の迷宮の地形から1つ選択する。その地形で該当する難易度[上級]に名前の書かれたエネミーが全て1体ずつ出現する。特別な強化が施されている場合それも適用する。', - '1Dをふって無限の迷宮の地形から1つ選択する。その地形で該当する難易度[悪夢]に名前の書かれたエネミーが全て1体ずつ出現する。特別な強化が施されている場合それも適用する。' - ]], - [2, [ - 'アルテミス(CL8)3匹', - 'アルテミス(CL8)3匹([命中]+4、[HP]+30、[FP]+20、あらゆる致傷力+20)', - 'アルテミス(CL8)3匹([命中]+8、[HP]+60、[FP]+30、あらゆる致傷力+40)', - 'アルテミス(CL8)3匹([命中]+16、[HP]+120、[FP]+40、あらゆる致傷力+80)' - ]], - [3, [ - 'スターゲイザー(CL10)2匹', - 'コスモロジスト(CL20)2匹', - 'コスモロジスト(CL20)4匹', - 'デスサジタリー(CL45)2匹' - ]], - [4, [ - 'ヤシャ(CL10)1匹、スケルトン(CL3)3匹', - 'ヤシャ(CL10)3匹([命中]+4、[HP]+30、[FP]+10、あらゆる致傷力+15)', - 'アシュラ(CL48)2匹', - 'コンゴウ(CL60)2匹' - ]], - [5, [ - 'ヘルハウンド(CL12)2匹', - 'クリスタルビースト(CL25)2匹', - '火龍ヘルブレイザー(CL50)1匹、氷河龍グレイシャル(CL65)', - '『単眼の巨神』アイングロース(CL100/ネームド)' - ]], - [6, [ - 'ゴーレム(CL13)1匹', - 'ミスリルゴーレム(CL27)1匹', - 'アダマンゴーレム(CL45)1匹', - 'カラクリヒメショーグン(CL75)1匹' - ]], - ] - - when 3 - areaText = "山岳" - table = [ - [1, [ - 'アイアンプリチン(CL5)5匹', - 'アイアンプリチン(CL5)5匹([命中]+4、[HP]+30、[FP]+10)', - 'アイアンプリチン(CL5)5匹([命中]+8、[HP]+60、[FP]+20)', - 'アイアンプリチン(CL5)5匹([命中]+16、[HP]+120、[FP]+40)' - ]], - [2, [ - 'ウイングスレイブ(CL4)5匹', - 'ウイングスレイブ(CL4)5匹([命中]+4、[HP]+30、[FP]+10、あらゆる致傷力+20)', - 'ガルーダ(CL40)2匹', - '栄光の天使(CL60)2匹' - ]], - [3, [ - 'ブラックナイト(CL10)1匹、ソルジャー(CL4)3匹', - 'デュラハン(CL22)1匹、ブラックナイト(CL10)2匹', - 'サーバントマスター(CL35)1匹、デュラハン(CL22)2匹', - 'ジェネラル(CL55)1匹、サーバントマスター(CL35)2匹' - ]], - [4, [ - 'ソルジャーアント(CL8)2匹', - 'ソルジャーアント(CL8)2匹([命中]+4、[HP]+30、[FP]+10、あらゆる致傷力+20)', - 'インペリアルアント(CL30)2匹', - '『女王キノコ』アカシックツリー(CL50/ネームド)1匹、インペリアルアント(CL30)2匹' - ]], - [5, [ - 'カボチャの魔女(CL8)2匹', - 'カボチャの魔女(CL8)2匹([命中]+4、[HP]+30、[FP]+10、あらゆる致傷力+20)', - 'カボチャの大魔女(CL35)2匹', - '堕落の黒天使(CL60)2匹' - ]], - [6, [ - 'フェニックス(CL25)2匹', - 'フェニックス(CL25)2匹([命中]+4、[HP]+40、[FP]+10、あらゆる致傷力+30)', - 'フェニックス(CL25)2匹([命中]+8、[HP]+80、[FP]+20、あらゆる致傷力+60)', - '煉獄フェニックス(CL85)2匹' - ]], - ] - - when 4 - areaText = "水辺" - table = [ - [1, [ - 'フロストクラブ(CL6)2匹', - 'フロストクラブ(CL6)3匹', - '『氷海の主』ギガントキャンサー(CL20/ネームド)', - '『氷海の主』ギガントキャンサー(CL20/ネームド)、フロストクラブ(CL6)3匹' - ]], - [2, [ - 'アシガル(CL4)3匹', - 'ハタモト(CL10)3匹', - 'ヒトキリ(CL33)2匹', - 'スカーレス(CL38)3匹' - ]], - [3, [ - 'アンブッシュマン(CL5)3匹', - 'アンブッシュマン(CL5)3匹([命中]+4、[HP]+20、[FP]+10、あらゆる致傷力+10)', - 'シャドウストーカー(CL35)2匹', - 'シャドウストーカー(CL35)3匹' - ]], - [4, [ - 'アップルドール(CL12)2匹', - 'アップルドール(CL12)2匹、ポイズンリリー(CL7)2匹', - 'テラードール(CL30)2匹', - 'テラードール(CL30)2匹、バリアリーフ(CL27)2匹' - ]], - [5, [ - 'ナイトライダー(CL15)1匹', - 'ナイトライダー(CL15)2匹', - 'ジェネラル(CL55)1匹', - 'ジェネラル(CL55)2匹' - ]], - [6, [ - 'ジェルスケルトン(CL10)1匹', - 'ジェルスケルトン(CL10)1匹([命中]+4、[FP]+10、あらゆる致傷力+20)', - 'ジェルスケルトン(CL10)1匹([命中]+8、[FP]+20、あらゆる致傷力+40)', - 'ジェルスケルトン(CL10)1匹([命中]+12、[FP]+40、あらゆる致傷力+80)' - ]], - ] - - when 5 - areaText = "森林" - table = [ - [1, [ - 'スナッチャー(CL4)3匹', - 'ゴールデンビースト(CL10)3匹', - 'ヨウコ(CL30)2匹', - 'イビルオーメン(CL42)2匹' - ]], - [2, [ - 'スターゲイザー(CL10)1匹、オーク(CL3)3匹', - 'スターゲイザー(CL10)1匹、ヘルハウンド(CL12)2匹', - 'コスモロジスト(CL20)1匹、ケルベロス(CL33)1匹', - 'サーバントマスター(CL35)1匹、ケルベロス(CL33)2匹' - ]], - [3, [ - 'オウルセージ(CL5)1匹、インプ(CL3)3匹。指定エネミー:オウルセージ', - 'オウルセージ(CL5)3匹。指定エネミー:オウルセージ', - 'オウルコマンダー(CL18)1匹、キメラ(CL15)2匹。指定エネミー:オウルコマンダー', - 'オウルコマンダー(CL18)2匹、キメラグレート(CL60)1匹。指定エネミー:オウルコマンダー' - ]], - [4, [ - 'グリーンアクトレス(CL22)1匹', - '魔将樹の騎士(CL40)1匹', - '魔将樹の番人(CL80)1匹', - '『魔将樹の剣姫』ロジエモール(CL120/ネームド)1匹' - ]], - [5, [ - 'ポイズンリリー(CL7)1匹、リリーの尖兵(CL5)1匹', - 'ポイズンリリー(CL7)1匹、リリーの尖兵(CL5)1匹([命中]+4、[HP]+30、[FP]+10、あらゆる致傷力+20)', - 'バリアリーフ(CL27)1匹、リリーの尖兵(CL5)1匹([命中]+8、[HP]+60、[FP]+20、あらゆる致傷力+40)', - '『密林の女王』クイーンリリー(CL70/ネームド)1匹、リリーの尖兵(CL5)1匹([命中]+16、[HP]+120、[FP]+40、あらゆる致傷力+80)' - ]], - [6, [ - 'ブラックナイト(CL10)1匹、ソルジャー(CL4)3匹', - 'ヴァルキリー(CL20)1匹、ブラックナイト(CL10)2匹', - 'フレイヤ(CL45)1匹、ヴァルキリー(CL20)2匹', - 'ジェネラル(CL55)1匹、フレイヤ(CL45)2匹' - ]], - ] - - when 6 - areaText = "墓場" - table = [ - [1, [ - 'ヤコ(CL6)3匹(【狐の送り火】のデータを「疲労:なし」に変更)', - 'ヨウコ(CL30)1匹(【狐の送り火】のデータを「疲労:なし」に変更)', - 'ヨウコ(CL30)3匹(【狐の送り火】のデータを「疲労:なし」に変更)', - 'タタリドラゴン(CL60/ネームド)1匹(【狐の送り火】のデータを「疲労:なし」に変更)' - ]], - [2, [ - 'スケルトン(CL3)4匹', - 'ナイトスケルトン(CL12)3匹', - 'ヒトキリ(CL33)2匹(「分類:アンデッド」を追加)', - '堕ちた黒龍(CL48)2匹' - ]], - [3, [ - 'ポイズンリリー(CL7)1匹(【華劇:リリーオブザバレー】使用済み)、ファントム(CL5)2匹', - 'ポイズンリリー(CL7)1匹(【華劇:リリーオブザバレー】使用済み)、ゴースト(CL10)3匹', - 'グリーンアクトレス(CL22)1匹(【華劇:フォレストステップ】使用済み)、デュラハン(CL22)2匹', - 'グリーンアクトレス(CL22)1匹(【華劇:フォレストステップ】使用済み)、カラクリヒメショーグン(CL75)1匹' - ]], - [4, [ - '君たちの冒険はここで終了だ。', - '君たちの冒険はここで終了だ。', - '君たちの冒険はここで終了だ。', - '第二魔将『葬送者』グレイヴディガー(CL200/魔将)1匹、『ディガー様親衛隊長』フネライユ(CL66/ネームド)1匹、『トラップマスター』アンテルモン(CL65/ネームド)1匹' - ]], - [5, [ - 'ゴースト(CL10)1匹(通常ドロップ「1000GP」)、ソルジャー(CL4)2匹', - 'ゴースト(CL10)1匹(通常ドロップ「2000GP」)、ハタモト(CL10)3匹', - 'リッチ(CL44)1匹(通常ドロップ「4000GP」)、ミスリルゴーレム(CL27)1匹', - 'エルダーリッチ(CL55)1匹(通常ドロップ「8000GP」)、アダマンゴーレム(CL45)1匹' - ]], - [6, [ - 'ボーンスネーク(CL20)1匹', - 'ボーンスネーク(CL20)2匹', - 'ラダマンティスの蛇(CL50)1匹', - 'ラダマンティスの蛇(CL50)1匹(ネームド仕様[HP4倍、【ネームドエネミー】習得])' - ]], - ] - - when 0 - table = [ - [256, [ - 'ボーンスネーク(CL50)1匹', - 'ラダマンティスの蛇(CL50)1匹', - '銀河龍ラクテア/ドラゴン形態(CL90)1匹', - '『三つ首の災厄』トライディザスター(CL100/ネームド)1匹' - ]], - [265, [ - 'キャンディークラウン(CL40)「1D」匹', - 'キャンディークラウン(CL40)「1D+1」匹', - 'キャンディークラウン(CL40)「1D」匹、ゴールデンクラウン(CL177)1匹', - 'キャンディークラウン(CL40)「1D」匹、ゴールデンクラウン(CL177)2匹' - ]], - [465, [ - 'リビングデッド(CL5)3匹', - 'ゴースト(CL10)3匹', - 'デュラハン(CL22)3匹', - 'リッチ(CL44)3匹' - ]], - [665, [ - 'カロン(CL12)2匹', - 'カロンキャプテン(CL25)2匹', - 'リッチ(CL44)2匹', - 'エルダーリッチ(CL55)2匹([HP]+10)' - ]], - [666, [ - '『漆黒の戦鬼』ブラックナイト(CL10/ネームド)1匹', - '『漆黒の戦鬼』ブラックナイト(CL10/ネームド)1匹([命中]+4、あらゆる致傷力+20、[HP]+200)', - '『白銀の猛将』ジェネラル(CL55/ネームド)1匹', - '『白銀の猛将』ジェネラル(CL55/ネームド)1匹([命中]+4、あらゆる致傷力+20、[HP]+500)' - ]], - ] - # case event / 100 - case (event / 100).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - when 1 - areaText = "洞窟" - when 2 - areaText = "遺跡" - when 3 - areaText = "山岳" - when 4 - areaText = "水辺" - when 5 - areaText = "森林" - when 6 - areaText = "墓場" - else - return nil - end - - else - return nil - end - - result = get_table_by_number(event, table) - - return "#{tableName}(#{number}):#{areaText}<#{difficultyText}>:#{result[difficulty]}" - end -end diff --git a/src/src_bcdice/diceBot/FullMetalPanic.rb b/src/src_bcdice/diceBot/FullMetalPanic.rb deleted file mode 100644 index dc63aaa05..000000000 --- a/src/src_bcdice/diceBot/FullMetalPanic.rb +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/SRS' - -# フルメタル・パニック!のダイスボット -class FullMetalPanic < SRS - # ゲームシステムの識別子 - ID = 'FullMetalPanic' - - # ゲームシステム名 - NAME = 'フルメタル・パニック!RPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'ふるめたるはにつくRPG' - - # 固有のコマンドの接頭辞を設定する - setPrefixes(['2D6.*', 'MG.*', 'FP.*']) - - # 成功判定のエイリアスコマンドを設定する - set_aliases_for_srs_roll('MG', 'FP') -end diff --git a/src/src_bcdice/diceBot/FutariSousa.rb b/src/src_bcdice/diceBot/FutariSousa.rb deleted file mode 100644 index 9ed69e54b..000000000 --- a/src/src_bcdice/diceBot/FutariSousa.rb +++ /dev/null @@ -1,1004 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class FutariSousa < DiceBot - # ゲームシステムの識別子 - ID = 'FutariSousa' - - # ゲームシステム名 - NAME = 'フタリソウサ' - - # ゲームシステム名の読みがな - SORT_KEY = 'ふたりそうさ' - - # ダイスボットの使い方 - HELP_MESSAGE = <= @success_threshold - - return "失敗" - end - - # AS - def get_as(count) - diceList = [] - count.times do - dice, = roll(1, 6) - diceList << dice - end - - output = get_as_result(diceList) - diceText = diceList.join(",") - - return output, diceText - end - - def get_as_result(diceList) - max = diceList.max - - return "ファンブル(変調を受け、心労が1点上昇)" if max <= 1 - return "スペシャル(余裕2点と、探偵から助手への感情を獲得)" if diceList.include?(@special_dice) - return "成功(余裕1点と、探偵から助手への感情を獲得)" if max >= @success_threshold - - return "失敗" - end - - def getTableResult(table, dice) - number, text, command = table.assoc(dice) - - if command.respond_to?(:call) - text += command.call(self) - end - - return number, text - end - - def getAddRollProc(command) - # 引数なしのlambda - # Ruby 1.8と1.9以降で引数の個数の解釈が異なるため || が必要 - lambda { || getAddRoll(command) } - end - - def getAddRoll(command) - return command if /^\s/ === command - - text = rollDiceCommand(command) - return " > #{command} is NOT found." if text.nil? - - return " > \n #{command} > #{text}" - end - - # 異常な癖決定表 - def get_strange_habit_random - table = [ - [1, '「異常な癖・口から出る表」の表を使用する。'], - [2, '「異常な癖・強引な捜査表」の表を使用する。'], - [3, '「異常な癖・すっとぼけ表」の表を使用する。'], - [4, '「異常な癖・事件に夢中表」の表を使用する。'], - [5, '「異常な癖・パートナーと……表」の表を使用する。'], - [6, '「異常な癖・何かしている表」の表を使用する。'], - [7, '「異常な癖・急なひらめき表」の表を使用する。'], - [8, '「異常な癖・喜怒哀楽表」の表を使用する。'], - [9, '「異常な癖・奇想天外表」の表を使用する。'], - [10, '好きな「異常な癖」の表を使用する。'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_from_mouth - table = [ - [1, '猛烈に感謝の言葉を述べる'], - [2, '皮肉ばかり言ってしまう'], - [3, '相手の言葉を肯定してから否定する'], - [4, 'ニヤニヤ笑いながら謝る'], - [5, '相手の言葉を聞かずに自分だけ喋る'], - [6, '「こうは考えられないでしょうか」'], - [7, '「それとも、何か隠していることでも?」'], - [8, '「妙ですね」'], - [9, '「だいたいわかりました」'], - [10, '「黙っていろ」'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_bull_through - table = [ - [1, '勝手に捜査対象の鞄や引き出しを開ける'], - [2, '警察の捜査に割り込む'], - [3, '捜査のためにハッキングや不法侵入を行う'], - [4, '許可されていないところに立ち入る'], - [5, '警察の捜査を盗み見や盗み聞きする'], - [6, '証拠品を許可なく解体する'], - [7, '捜査対象を騙して情報を聞き出す'], - [8, '勝手に関係者の持ち物を触る'], - [9, '証拠品を勝手に持ち歩いている'], - [10, '勝手に鑑識を始める'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_play_innocent - table = [ - [1, '自分の身分を偽って関係者に話を聞く'], - [2, '情報を隠しながら話を聞く'], - [3, 'パートナーと演技をして情報を聞き出そうとする'], - [4, '通行人のふりをして、関係者の話を盗み聞き'], - [5, '偶然を装って証拠品を手に入れてしまう'], - [6, 'わざとらしくすっとぼける'], - [7, '関係者を怒らせる演技をして、情報を引き出す'], - [8, 'やんわりと関係者を脅す'], - [9, '落し物をしたと主張して現場や証拠品を漁る'], - [10, '関係者に誘導尋問を仕掛ける'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_engrossed - table = [ - [1, 'パートナーの体を使って事件を再現しようとする'], - [2, '謎を解くことが楽しくて笑ってしまう'], - [3, '寝食を忘れて捜査をしていたので急に倒れる'], - [4, '考え事をしていて、誰の声も聞こえない'], - [5, '事件の相関図を手近な壁や床に描き始める'], - [6, '事件に関係する言葉を次々に発して止まらない'], - [7, '事件解決以外のことをまったく考えていない'], - [8, '事件の流れをぶつぶつと喋り始める'], - [9, '事件現場に踏み込んで調べ物をする'], - [10, '食事中でも、かまわずに事件の話をする'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_with_partner - table = [ - [1, 'パートナーの信頼に甘える'], - [2, 'パートナーを置いて先に行ってしまう'], - [3, 'パートナーに事件についてどう思っているか質問する'], - [4, 'パートナーに自慢する'], - [5, 'パートナーに事件に関するクイズを出題する'], - [6, 'パートナーと些細なことで喧嘩をする'], - [7, 'パートナーに教師のようにふるまう'], - [8, 'パートナーがついてくる前提で勝手に動く'], - [9, 'パートナーに対して懇切丁寧に事件を説明する'], - [10, 'パートナーの耳元でいきなり喋り始める'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_do_something - table = [ - [1, '大量の本を読んでいる'], - [2, '好きな音楽を大音量で流している'], - [3, '何かの数式を解いている'], - [4, '大量の好物をずっと食べている'], - [5, 'ずっとパソコンやスマートフォンなどの画面と向かい合って調べている'], - [6, '小さな謎を解いている'], - [7, 'チェスや将棋などを指している'], - [8, '喫茶店の席に座って何かを待っている'], - [9, 'ずっと眠っていたが急に起きる'], - [10, 'しばらく何もしていない'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_fantastic - table = [ - [1, 'やめろと言われていることをする'], - [2, 'しばらく姿を消していたが戻って来た'], - [3, '予想もつかないところ(地中や空中など)から登場する'], - [4, '何かを思いついて突然走り出す'], - [5, 'ふがいない自分を責める'], - [6, '知らないうちに事件の謎を一つ解いていた'], - [7, '事件について分かった様子だが誰にも教えない'], - [8, '置き手紙やメールで報告をするも姿が見えない'], - [9, '時計を見て、急に動き出した'], - [10, '事件とは関係なさそうな新聞の記事を読んでいる'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_inspiration - table = [ - [1, '食事をとっていたら急に謎が解ける'], - [2, '助手との何気ない会話から急に謎が解ける'], - [3, '聞こえてきた会話から急に謎が解ける'], - [4, '風呂に入っていたら急に謎が解ける'], - [5, '夢の中で急に謎が解ける'], - [6, '風が吹いて飛んできた物で謎が解ける'], - [7, '本を読んでいたら事件のヒントが見つかる'], - [8, '現場を再び訪れてひらめく'], - [9, '資料を確認している最中にひらめく'], - [10, '関係者と会話をしている最中にひらめく'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_emotion - table = [ - [1, '急に泣く'], - [2, '急に怒る'], - [3, '急に笑いだす'], - [4, '急にハイテンションになる'], - [5, '急に喜ぶ'], - [6, '急に叫ぶ'], - [7, '急にニヤニヤし始める'], - [8, '急にこの事件の悲しさを語る'], - [9, '淡々と物事を進める'], - [10, 'ロボットのように決められたことだけをやる'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - # イベント表 - def get_event_scene - table = [ - "気になるもの(P.165)\n 事件の起きた現場は、まだ残されている。\n ここで起きた“何か”は、霧の向こうに隠されていた。\n その霧に手を突っ込む者たちがいる。", - "煙たがられる(P.166)\n 刑事が一人、現場を熱心に見て回っている。\n この事件の担当を任された刑部正義という男だ。\n 彼は、PCたちの顔を見るなり、顔をしかめた。歓迎されていない。", - "聞き込み(P.167)\n PCたちは、現場付近を通りがかったり、事件を目撃したりした人物がいないか探し回っていた。\n しかし、どこで何を聞いても、それらしい手がかりはない。\n そろそろ、足に疲労が蓄積してきた。", - "頑なな関係者(P.168)\n 事件現場に、とある人物が現れた。\n 探偵たちは、神妙な顔で現場を見つめていたその人物が気になって、声をかける。\n その人物は、自らを被害者の関係者と名乗った……。", - "現場徹底調査!(P.169)\n 事件現場に残された証拠は、あらかた見つけた。\n ……はたして、本当にそうだろうか?\n あらゆる角度から調査と検証をし、現場に残されたものはないか、調べることになった。", - "逃げた人物(P.170)\n 脱兎のごとく、誰かが現場から逃げている。\n その人物の走り方、焦り方は普通ではなかった。\n これは、何かを知っている。あるいは、何かを持ち去った可能性がある。\n PCたちは、追いかけ始めた。", - ] - return get_table_by_1d6(table) - end - - def get_event_why - table = [ - "移動ルート(P.171)\n この道を通ったとき、あの人は何を思っただろうか?\n この道を通った時、あの人は何をしなければならなかったのか?\n 事件関係者の足取りには、事件に繋がる何かが残されている。\n そう信じて、道を歩く。", - "自分なら……(P.172)\n 探偵と助手が事件について語り合っていた。\n 話のお題は、「この状況で、自分が犯人ならどうするか」。\n その仮定は、ヒントを与えてくれるかもしれない。", - "謎のメッセージ(P.173)\n それは、謎の言葉だった。\n ただの文字列かもしれないし、意味不明な言葉かもしれない。\n 事件に関わる場所にあったからといって、事件に関わっているとは限らない。\n だけど、これは事件に関わっている。そう直感が告げている。", - "事件のおさらい(P.174)\n ホワイトボード、黒板、ノート。\n なんでもいいから、書くものが必要だ。\n 今から、事件についてまとめるのだから。", - "怪しい人物は?(P.175)\n 探偵たちは、一人の人物を追っている。\n その人物は、事件に繋がる何かを持っている。そういう確信があった。\n さて、実際のところ、彼は何者なのだろうか?", - "被害者の視点(P.176)\n 被害者の身に何が起こったのか。\n 被害者は何を見たのか。\n そのヒントは、被害者自身が知っているはずだ。", - ] - return get_table_by_1d6(table) - end - - def get_event_npc - table = [ - "事件の映像(P.177)\n PCたちは目を細めて、映像を眺めている。\n それは、偶然にも現場で撮られたものだった。\n 果たして、真実はこの映像の中に、映っているのだろうか?", - "変わった目撃者(P.178)\n 探偵たちは捜査の結果、事件に関する何かを見たという目撃者を見つける。\n しかし、その人物は目撃証言を渋った。どうしてだろうか?", - "専門家(P.179)\n 調査中、どうしても専門的な知識が必要な場面が出てくる。\n 今がその時であり、探偵たちはどうしようかと悩んでいた。", - "情報屋(P.180)\n メールソフトに連絡が入った。\n 連絡を入れてきたのは、界隈では有名な情報屋だった。\n その情報屋にかかれば、手に入らない情報はないという。\n さて、どうしようか。", - "関係者と一緒に(P.181)\n 事件関係者の一人が、突然協力を持ちかけてきた。\n どうやら、その人もこの事件には思うところがあるらしい。", - "素人推理(P.182)\n 事件関係者の前で、ゲストNPCが推理を披露している。\n だけど、その推理は穴だらけで……。", - ] - return get_table_by_1d6(table) - end - - def get_event_coming - table = [ - "不審な電話(P.183)\n 突然、電話が鳴り響いた。\n その電話は調査を進展させることになるが……。\n 同時に、新たな謎を残した。", - "今は余暇を(P.184)\n 果報は寝て待て。\n 待てば海路の日和あり。\n ということで、ひとまずたまり場にいる。\n 果たして、事態は好転するのだろうか?", - "道端でばったり(P.185)\n 犬も歩けば棒に当たる。\n この言葉には、幸運にぶつかるという意味も、災難に当たるという意味も込められている。\n では、探偵と助手が歩いたら、何に当たるのだろうか?", - "ひらめきの瞬間(P.186)\n ふとしたきっかけで、探偵はひらめくことがある。\n 今回は、一体何がきっかけだったのだろうか?", - "知り合いから(P.187)\n 事件捜査の手がかりを持ってきたのは、知り合いだった。\n 持つべきものは友。\n と言いたいところだが……。", - "探偵たちのピンチ(P.188)\n 捜査は突然ストップした。\n その原因はわかっている。\n 原因を取り除かなければ、事件の調査どころではない。", - ] - return get_table_by_1d6(table) - end - - def get_event_vs - table = [ - "容疑者の嘘(P.189)\n 人は、何か後ろめたいことがあったとき、嘘をつく。\n この容疑者は嘘をついている。\n なら、何を隠しているのだろうか?", - "ゆさぶり(P.190)\n その容疑者は、何かを隠していた。\n 目立った嘘をついているわけではない。\n だけれども、何かを隠している。探偵には、そう見えた。", - "外見からの推理(P.191)\n 少しだけ、話をした。\n 少しだけ、その姿を見た。\n 少しだけ、その人を知った。\n それだけで、探偵という生き物は十を知ってしまう。そういうものなのだ。", - "直接尋ねる(P.192)\n ここにきて、探偵と助手は大胆な手に出た。\n 容疑者に対して、事件の具体的なところまで突っ込んだ質問をしたのだ。\n それに対して、容疑者は……。", - "脅される(P.193)\n どうやら、自分たちは脅されているようだ。", - "鬼の居ぬ間に(P.194)\n その容疑者の元を訪ねたとき、偶然にも席をはずしていた。\n これはチャンス。\n そう思ってしまうのが、探偵の悲しい性だ。", - ] - return get_table_by_1d6(table) - end - - # 調査の障害表 - def get_obstruction_table - table = [ - [11, '探偵と助手が警察にマークされる'], - [12, '探偵の気まぐれ'], - [13, '探偵のやる気'], - [14, '探偵の奇行に耐えられなくなる'], - [15, '探偵が奇異の眼に晒される'], - [16, '探偵が疲れる'], - [22, '探偵と助手が不審者に間違われる'], - [23, '助手がパートナーに信頼されていないと思う'], - [24, '探偵に助手がついていけない'], - [25, '助手の苦労がいつも以上に大きい'], - [26, '助手の捜査だけがうまくいかない'], - [33, '捜査のための資金がない'], - [34, '世間の眼が厳しい'], - [35, '警察から疎ましく思われる'], - [36, '関係者に協力してもらえない'], - [44, '捜査してはいけないと圧力がかかる'], - [45, '犯人による妨害'], - [46, '犯人による裏工作'], - [55, '植木鉢や鉄骨など、不自然に危険な物が飛んでくる'], - [56, '何者かが探偵と助手に襲い掛かる'], - [66, '偶然が積み重なってうまくいかない'], - ] - - return get_table_by_d66_swap(table) - end - - # 変調表 - def get_abnormal_condition - table = [ - 'すれ違い', - '探偵の暴走', - '喧嘩', - '迷子', - '悪い噂', - '注目の的', - ] - return get_table_by_1d6(table) - end - - # 目撃者表 - def get_eyewitness_table - table = [ - "遊び相手が欲しい若者。判定技能:≪流行≫", - "物覚えが悪い人。判定技能:なし", - "忙しい人。判定技能:≪ビジネス≫", - "犯人の知り合い。判定技能:≪説得≫", - "探偵(警察)嫌い。判定技能:≪嘘≫", - "反社会主義者。判定技能:≪突破≫", - ] - return get_table_by_1d6(table) - end - - # 迷宮入り表 - def get_wrapped_in_mystery_table - table = [ - [1, '真犯人とは別の人間が犯人にされてしまい、実刑を食らってしまった。その証拠はないが、そう直感できる。'], - [2, '解決されないまま時が過ぎ、やがて事件のことは忘れられた。探偵と助手、それから事件関係者だけが覚えている。'], - [3, '被害者遺族や関係者は悲しみに暮れている。探偵と助手は、それを黙ってみていることしかできない。あのとき、犯人を捕まえていれば……。'], - [4, '警察によって、犯人が検挙された。だけど、その人が本当に犯人かどうかはわからない。探偵も、何とも言えないようだ。'], - [5, '証拠がなくなってしまっている。あれさえあれば、事件の調査を再開できるのに……。犯人の仕業かどうかすら、わからない。'], - [6, '関係者がいなくなってしまた。その後、消息も不明だ。いったい何を思って消えたのだろうか? ともかく、調査はできなくなった。'], - [7, '関係者から嫌われてしまい、近寄ることすらできなくなった。探偵と助手は揃って出禁になってしまったようだ。これでは、調査ができない。'], - [8, '助手はときどき、被害者の関係者と会っている。彼らの話を聞いて、彼らの感情を受け止めているようだ。'], - [9, '探偵と助手は機会を見つけては、事件を再調査している。しかし、確かな証拠は見つからないまま時が過ぎていく。'], - [10, '探偵は直感によって、真犯人を突き止めた。だが、真犯人を捕まえるための証拠がない。犯人を告発することができず、歯噛みをした。'], - ] - - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - # 背景表 - def get_background_detective_destiny - table = [ - [1, '『名探偵の先祖(真)』自分の先祖に著名な探偵がいる。その名を出せば、誰もが知るような大人物だ。自分はその血を濃く引いているようで、探偵としての才能を存分に発揮している。'], - [2, '『名探偵の先祖(想)』自分の先祖は著名な探偵だ。しかし、その活躍は「フィクション」として語られている。その人物は実在しないと言われているが……それは真実ではない。自分がその血を引いているのだから。'], - [3, '『親が世界的探偵』自分の親は、世界的に名の知れた名探偵だ。数々の難事件も解決している。自分にもその血が流れていて、事件に対する鋭い洞察力を受け継ぐことになった。'], - [4, '『街の名探偵』自分の親は、街ではよく名の知れた名探偵だ。街の人々から愛され、頼りにされていた。自分もその血を引いているのか、探偵として活動する力が備わっている。'], - [5, '『推理作家』自分を育てた人物は、著名な推理作家であった。その思考能力は自分にも継がれており、トリックを暴く力は探偵並みにあると言っていいだろう。'], - [6, '『育ての親』自分を育ててくれた人物は、事件を解決に導いたことのある人物である。その人物の教えを受けて、自分は探偵の才を開花させた。'], - [7, '『堕ちた名探偵』かつて、自分の親はあらゆる事件を解決し、名探偵として有名だった。しかし、今では優れた思考能力を悪用し、人々を駒のように扱っている。能力を引き継いだ自分もいつかはそうなるのだろうか?'], - [8, '『大悪人の血』世間を騒がせた大悪党や大怪盗。その血が自分にも流れている。故に悪人の思考をトレースすることができ、結果として名探偵のようにふるまえる。'], - [9, '『隠された血筋』どういう訳か、自分のルーツは抹消されている。自分が何者なのかすら、わからない。ただ、自分には事件を解決できる力があって、それがルーツに関係していると直感できる。'], - [10, '『クローン』自分は有名な名探偵のDNAから生まれた存在だ。そのためか、名探偵の力は生まれながらに備わっていた。'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - - return output, diceText - end - - def get_background_detective_genius - table = [ - [1, '『超エリート』自分はエリートとして活躍すべく、あらゆる分野の訓練を行った。そして、望まれるままに優秀な人間となった。'], - [2, '『瞬間記憶能力』見たものはすべて頭の中にインプットされる。そして、決して忘れない。自分はそういう能力を備えている。'], - [3, '『知識の泉』頭の中にある引き出しの中には、あらゆる知識が収められている。つまり、知らないことはないということだ。'], - [4, '『スパルタ教育』厳しい教育を受け、その結果知識を得ることができた。その代わり、少し変わった思考方法になってしまったが……。大したことではないだろう。'], - [5, '『既に名探偵』既に幾多の事件を解決している天才である。数々の難事件も、自分の手腕で解決してきた。その傍らには、パートナーの姿もあった。'], - [6, '『憧れの背中』自分には憧れている相手がいた。その存在に追いつくために、努力をし、今の能力を手に入れた。その人物は、今は……。'], - [7, '『ライバル』自分と競い合っていたライバルがいる。能力としては、ほぼ互角だった。競い合いの中で、自分の能力は磨かれていったのである。'], - [8, '『かつての名探偵』かつては、あらゆる事件を解決に導いた天才であった。しかし、今は事件解決に消極的である。事件を遠ざけたいと思う何かがあったのだ。'], - [9, '『孤立した名探偵』自分は天才的な能力を持って数多の事件を解決した名探偵である。それ故に疎まれ、恐れられ、世間や組織の中で孤立をしてしまっている。'], - [10, '『人工名探偵』自分は何者かによって軟禁されて探偵知識を詰め込まれた、「人口名探偵」だ。名探偵になるべくして育てられた自分は、その能力を期待通りに発揮することができる。'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - - return output, diceText - end - - def get_background_detective_mania - table = [ - [1, '『サスペンスマニア』自分はサスペンスもののフィクションや、実在する事件に対して非常に強い関心を寄せている。ため込んだトリックの知識を活かすことができる機会を窺っている。'], - [2, '『死体マニア』自分は死体に対して強い関心を寄せている。死体の状態や詳細を知ることによって、強い興奮を覚えるという性質なのだ。困ったものだ。'], - [3, '『科学マニア』科学によって解明できないことはない。自分はそう考えているし、そのために能力を磨いてきた。人の起こす事件であれ、科学はすべてを見通すことができるだろう。'], - [4, '『いわゆるオタク』ゲームや漫画などで得た知識というのは、案外バカにならないものだ。自分はゲームを通じて様々な知識をため込んでおり、それを応用することであらゆる事件を解決する。'], - [5, '『人間マニア』自分は人間が好きだ。それ故に、観察もしている。行動に当人もわからない理由があることも知っている。事件も、どうしてそんなことを起こしたのかに興味がある。'], - [6, '『書物マニア』書物には、あらゆることが書かれている。少なくとも自分はそう考えているし、その証拠に本の知識を応用することで、難事件も解決できる。紙上の名探偵のように。'], - [7, '『オカルトマニア』オカルトや超常現象を信じている。それ故に、インチキを見破る術も知っているし、許せないと感じている。それが、どういうわけか難事件の解決にも繋がる。不思議だ。'], - [8, '『探偵マニア』古今東西、様々な探偵がいる。それについて調べていくうちに、自分もまた探偵としての能力が備わった。'], - [9, '『暴走する知識欲』自分は一つのことのマニアであるが、それから派生した物の知識もよく知っている。自分の知識欲は、それからさらに派生したものまで及ぶ。'], - [10, '『正義のマニア』自分が信奉している何か(書物や科学など)が、事件に関わっているとなると、居ても立っても居られない。マニアとして、その謎を解明しなければならない。'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - - return output, diceText - end - - def get_background_assistant_justice - table = [ - '『お人よし』自分は他者からよくお人よしと言われている。そのため、人に頼まれて事件に絡むことがよくあった。だから、人の悩みを解決できる能力があるパートナーと一緒にいる。', - '『許せない』自分は事件の被害者に対して入れ込むタイプだ。被害者の気持ちを考えると、やりきれない思いと共に、犯人を許せないという気持ちが湧いてくる。だから、犯人を追うためにパートナーが必要だ。', - '『納得したい』自分が事件に対して首を突っ込むのは、自分の中に納得が欲しいからだ。事件を通じて何らかの解答を見つけるために、正義を行っている。パートナーは、そのために必要な人間だ。', - '『利用している』どんな手段を使ってでも、事件を解決するのが正しいと自分は考えている。そのための道具として、パートナーを使っているだけだ。', - '『頼れる協力者』パートナーのことを頼れる協力者であると感じている。パートナーは自分が困ったとき、迷ったときに、答えを示してくれる人間だと思っている。相手がどう思っていようが、それは変わらない。', - '『正義の同志』パートナーも、一緒に正義のために事件解決をしてくれている。自分はそう感じている。思い込んでいるだけかもしれないが、その思い込みは止められない。ひょっとしたら自分の方がパートナーを振り回しているのかも。', - ] - return get_table_by_1d6(table) - end - - def get_background_assistant_passion - table = [ - '『能力にほれ込んだ』自分はパートナーの事件に関する能力にほれ込んだ。その鋭い洞察力や、推理力、知識の深さ。すべてが自分を魅了している。', - '『人柄にほれ込んだ』自分がパートナーと組んでいるのは、人格の面が大きい。一見わかりづらいところもあるが、隠された本質に自分はほれ込んでいる。', - '『一目惚れ』はじめて会ったときから、パートナーのことが気になっていた。その能力もさることながら、直感めいたものを感じたのだ。だから一緒にいる。', - '『ウマが合った』自分とパートナーは話が合う。二人なら盛り上がれるし、二人ならなんでもできる。そう思っている。……自分がそう思っているだけかもしれないが。', - '『対立』パートナーと自分は対立している。それでも一緒にいるのは、パートナーのことを理解するためだ。……いつか、パートナーを倒す手段を見つけるために。', - '『放っておけない』パートナーのことを放っておくと何をしでかすかわからない。だから、自分が見張っていないといけない。そう感じた。', - ] - return get_table_by_1d6(table) - end - - def get_background_assistant_involved - table = [ - '『一方的に気に入られた』パートナーから、一方的に気に入られている。どうしてそうなったのかはわからないが、そういうものらしい。一緒にいるのは、不本意なのだけど……。', - '『リアクション要員』パートナーによると、自分はリアクションを期待されているらしい。事件を解決したときや、何らかの驚きがあったときに見せる反応が楽しいのだとか。', - '『過去のツケ』過去に、パートナーに秘密や弱味を握られた。それ以来、パートナーの手伝いをさせられている。まだ、逃げられていない。', - '『必要な人材』パートナーに、自分が必要だと頼まれた。だから、一緒に事件を解決している。どうして自分が必要なのかは、まだわからない。', - '『親しい人』パートナーにとって自分は、親しい人物だ。幼馴染や友人、親戚など。それ故に、昔から振り回されているし、これからも振り回されるだろう。', - '『偶然の積み重ね』パートナーが事件に直面するたびに居合わせる。それが繰り返されるうちに、いつの間にか親しくなっていた。今では、一緒にいることも多い。', - ] - return get_table_by_1d6(table) - end - - # 身長表 - def get_height_table - table = [ - '非常に高い', - '高め', - '平均的', - '低め', - '非常に低い', - 'パートナーより少し高い/少し低い', - ] - - return get_table_by_1d6(table) - end - - # たまり場表 - def get_base_table - table = [ - [1, 'PCが働いている職場'], - [2, '静かな雰囲気の喫茶店'], - [3, '騒がしい雰囲気の居酒屋'], - [4, '探偵活動のために借りた事務所'], - [5, 'PCのうち、どちらかの家'], - [6, '行きつけの料理屋'], - [7, '移動に使う車の中'], - [8, '知り合いから譲り受けた倉庫'], - [9, 'いつもパートナーと会う交差点'], - [10, '二人だけが知っている秘密の場所'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - # 関係表 - def get_guest_relation_table - table = [ - [11, '昔のバディ'], - [12, '友人'], - [13, '親友'], - [14, '顔見知り'], - [15, '戦友'], - [16, '腐れ縁'], - [22, '過去に何かあった'], - [23, 'いとこ'], - [24, '友達の友達'], - [25, '遠い親戚'], - [26, '近所の人'], - [33, '迷惑をかけた'], - [34, '師匠'], - [35, 'ネットで知り合った'], - [36, '偶然知り合った'], - [44, '前に一度だけ会った'], - [45, 'パートナーのことで相談された'], - [46, 'パートナーについて質問された'], - [55, '幼馴染'], - [56, 'パートナーを追っている'], - [66, '一方的に知られている'], - ] - return get_table_by_d66_swap(table) - end - - # 思い出の品決定表 - def get_memorial_item_table - table = [ - [11, 'たまり場にずっと置いてある宅配ピザの箱'], - [12, '一緒に解決した事件のファイル'], - [13, '二人が出会うきっかけになった本'], - [14, '二人で遊んだチェスボードや将棋盤'], - [15, '二人の思い出が詰まったゲーム機'], - [16, '自分たちを写した写真'], - [22, '二人の捜査ノート'], - [23, '一緒に使った掃除道具'], - [24, '被害者から贈られたぬいぐるみ'], - [25, '二人で一緒に座ったソファー'], - [26, 'いつも座っている椅子'], - [33, 'よく使う電話機'], - [34, '二人の時を刻んだ時計'], - [35, 'いつも置いてある机'], - [36, '事件の解説をしたホワイトボードや黒板'], - [44, 'なぜかある人体模型'], - [45, 'お気に入りのコップ'], - [46, '事件解決に使った小道具'], - [55, '一緒に飲む約束をしたお酒やジュース'], - [56, 'お気に入りの料理'], - [66, '二人だけの秘密の交換日記'], - ] - return get_table_by_d66_swap(table) - end - - # 職業表A - def get_job_table_66 - table = [ - [11, 'パートナーと同じ'], - [12, 'フリーター'], - [13, '学生(優秀)'], - [14, '学生(普通)'], - [15, '学生(不真面目)'], - [16, '教師・講師'], - [22, 'パートナーと同じ'], - [23, '会社員'], - [24, '主夫・主婦'], - [25, '自営業者'], - [26, 'ディレッタント'], - [33, 'パートナーと同じ'], - [34, '刑事(新人)'], - [35, '刑事(エリート)'], - [36, '公務員'], - [44, 'パートナーと同じ'], - [45, '探偵助手'], - [46, '探偵'], - [55, 'パートナーと同じ'], - [56, '無職'], - [66, 'パートナーと同じ'], - ] - - return get_table_by_d66_swap(table) - end - - # 職業表B - def get_job_table_10 - table = [ - [1, 'ディレッタント'], - [2, '刑事'], - [3, '探偵(有名)'], - [4, '探偵(不人気)'], - [5, '探偵助手'], - [6, '研究者'], - [7, '自営業者'], - [8, '会社員'], - [9, '作家'], - [10, '学生'], - ] - - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - # ファッション特徴表A - def get_fashion_table_66 - table = [ - [11, '高級志向'], - [12, 'スーツ'], - [13, 'カジュアルウェア'], - [14, 'フォーマルウェア'], - [15, 'スポーツウェア'], - [16, 'リーズナブル'], - [22, 'サングラス'], - [23, 'Yシャツ'], - [24, 'Tシャツ'], - [25, 'ネックレス'], - [26, '帽子'], - [33, 'ミリタリー風'], - [34, 'ピアス'], - [35, 'ジャージ'], - [36, 'エクステ'], - [44, '和服'], - [45, '指輪'], - [46, 'チョーカー'], - [55, 'サンダル'], - [56, 'ジャンパー'], - [66, 'ファッションにこだわりがない'], - ] - return get_table_by_d66_swap(table) - end - - # ファッション特徴表B - def get_fashion_table_10 - table = [ - [1, 'スーツ'], - [2, 'インバネスコート'], - [3, '白衣'], - [4, 'グローブ'], - [5, 'パイプ'], - [6, 'チョッキ'], - [7, '和服'], - [8, 'カラフルな色使い'], - [9, 'パートナーと同じ'], - [10, 'ファッションにこだわりがない'], - ] - - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - # 好きなもの/嫌いなもの表A - def get_like_dislike_table_66 - table = [ - [11, '死体'], - [12, '犬'], - [13, '猫'], - [14, 'サスペンス'], - [15, '物語'], - [16, 'アイドル'], - [22, '犯罪'], - [23, 'オカルト'], - [24, '健康'], - [25, 'ジャンクフード'], - [26, '高級な食事'], - [33, 'ファッション'], - [34, '権力'], - [35, '名誉'], - [36, '友情'], - [44, 'おやつ'], - [45, '地元'], - [46, '家族'], - [55, '警察'], - [56, '音楽'], - [66, '銃'], - ] - - return get_table_by_d66_swap(table) - end - - # 好きなもの/嫌いなもの表B - def get_like_dislike_table_10 - table = [ - [1, '犯罪'], - [2, '謎'], - [3, '探偵'], - [4, 'パートナー'], - [5, 'パートナーの好きなもの'], - [6, 'パートナーの嫌いなもの'], - [7, '特になし'], - [8, 'チェスや将棋などボードゲーム'], - [9, '人間'], - [10, '知らないこと'], - ] - - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - # 感情表A - def get_feeling_table_66 - table = [ - [11, '顔'], - [12, '雰囲気'], - [13, '外見'], - [14, '捜査方法'], - [15, '立ち振る舞い'], - [16, '匂い'], - [22, '存在そのもの'], - [23, '言葉遣い'], - [24, '趣味'], - [25, 'なんとなく'], - [26, '他人への態度'], - [33, '金銭感覚'], - [34, '生活習慣'], - [35, '技能'], - [36, '服装'], - [44, '喋るタイミング'], - [45, '倫理観'], - [46, '自分への態度'], - [55, '距離感'], - [56, '自分との関係'], - [66, '生活習慣'], - ] - - return get_table_by_d66_swap(table) - end - - # 感情表B - def get_feeling_table_10 - table = [ - [1, '人間性'], - [2, '趣味'], - [3, '技能'], - [4, 'なんとなく'], - [5, '感覚'], - [6, '雰囲気'], - [7, '自分が知らないところ'], - [8, '自分がよく知っているところ'], - [9, '自分への態度'], - [10, '自分との関係'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - # 呼び名表A - def get_name_to_call_table_66 - table = [ - [11, 'ダーリン、ハニー'], - [12, '呼び捨て'], - [13, '~くん'], - [14, '~さん'], - [15, '~ちゃん'], - [16, '~様、~殿'], - [22, '~先輩、~後輩'], - [23, '相棒'], - [24, 'あんた'], - [25, 'あなた'], - [26, '先生、センセ'], - [33, '物で例える'], - [34, '貴様、貴殿'], - [35, 'てめえ、おまえ'], - [36, 'あだ名'], - [44, 'ユー'], - [45, 'お前さん'], - [46, '探偵くん、探偵さん'], - [55, '親友'], - [56, 'パートナーと同じ'], - [66, '毎回呼び方が変わる'], - ] - - return get_table_by_d66_swap(table) - end - - # 呼び名表B - def get_name_to_call_table_10 - table = [ - [1, '呼び捨て'], - [2, '~くん'], - [3, '~さん'], - [4, '~ちゃん'], - [5, '~様、~殿'], - [6, '相棒'], - [7, 'あんた、あなた'], - [8, 'キミ'], - [9, '愛しの~'], - [10, 'あだ名'], - ] - - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - - return output, diceText - end -end diff --git a/src/src_bcdice/diceBot/FutariSousa_Korean.rb b/src/src_bcdice/diceBot/FutariSousa_Korean.rb deleted file mode 100644 index 377c6e7f9..000000000 --- a/src/src_bcdice/diceBot/FutariSousa_Korean.rb +++ /dev/null @@ -1,1004 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class FutariSousa_Korean < DiceBot - # ゲームシステムの識別子 - ID = 'FutariSousa:Korean' - - # ゲームシステム名 - NAME = '둘이서 수사(후타리소우사)' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Korean:둘이서 수사' - - # ダイスボットの使い方 - HELP_MESSAGE = <= @success_threshold - - return "실패" - end - - # AS - def get_as(count) - diceList = [] - count.times do - dice, = roll(1, 6) - diceList << dice - end - - output = get_as_result(diceList) - diceText = diceList.join(",") - - return output, diceText - end - - def get_as_result(diceList) - max = diceList.max - - return "펌블(변조를 받고, 조수의 마음고생이 1점 상승)" if max <= 1 - return "스페셜(여유 2점과, 탐정의 조수를 향한 감정을 획득)" if diceList.include?(@special_dice) - return "성공(여유 1점과, 탐정의 조수를 향한 감정을 획득)" if max >= @success_threshold - - return "실패" - end - - def getTableResult(table, dice) - number, text, command = table.assoc(dice) - - if command.respond_to?(:call) - text += command.call(self) - end - - return number, text - end - - def getAddRollProc(command) - # 引数なしのlambda - # Ruby 1.8と1.9以降で引数の個数の解釈が異なるため || が必要 - lambda { || getAddRoll(command) } - end - - def getAddRoll(command) - return command if /^\s/.match(command) - - text = rollDiceCommand(command) - return " > #{command} is NOT found." if text.nil? - - return " > \n #{command} > #{text}" - end - - # 異常な癖決定表(이상한 버릇 결정표) - def get_strange_habit_random - table = [ - [1, '「이상한 버릇・지껄이다표」를 사용한다.'], - [2, '「이상한 버릇・강압적인 수사표」를 사용한다.'], - [3, '「이상한 버릇・시치미 떼기표」를 사용한다.'], - [4, '「이상한 버릇・사건에 몰두표」를 사용한다.'], - [5, '「이상한 버릇・파트너와……표」를 사용한다.'], - [6, '「이상한 버릇・무언가 하고 있다표」를 사용한다.'], - [7, '「이상한 버릇・기상천외표」를 사용한다.'], - [8, '「이상한 버릇・갑작스런 번뜩임표」를 사용한다.'], - [9, '「이상한 버릇・희노애락표」를 사용한다.'], - [10, '원하는「이상한 버릇표」를 사용한다.'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_from_mouth - table = [ - [1, '맹렬하게 감사인사를 한다.'], - [2, '빈정거리는 투로 말해버린다.'], - [3, '상대의 말을 긍정한 뒤 부정한다.'], - [4, '히죽히죽 웃으며 사과한다.'], - [5, '상대의 말을 듣지 않고 자신만 말한다.'], - [6, '「이렇게는 생각할 수 없을까요?」'], - [7, '「아니면, 뭔가 숨기고 있는 거라도 있나요?」'], - [8, '「묘하네요.」'], - [9, '「대충 알겠어요.」'], - [10, '「잠자코 있어.」'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_bull_through - table = [ - [1, '마음대로 수사대상의 가방이나 서랍을 연다.'], - [2, '경찰의 수사에 끼어든다.'], - [3, '수사를 위해 해킹이나 불법침입을 한다.'], - [4, '허가 받지 않은 곳에 들어간다.'], - [5, '경찰의 수사를 엿보거나 엿듣는다.'], - [6, '증거품을 허가 없이 해체한다.'], - [7, '수사대상을 속여 정보를 캐낸다.'], - [8, '마음대로 관계자의 소지품을 만진다.'], - [9, '증거품을 마음대로 들고 다닌다.'], - [10, '마음대로 감식을 시작한다.'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_play_innocent - table = [ - [1, '자신의 신분을 속이고 관계자에게 이야기를 듣는다'], - [2, '정보를 숨기며 이야기를 듣는다'], - [3, '파트너와 연기를 하며 정보를 캐내려 한다'], - [4, '행인인 척하며 관계자의 이야기를 엿듣는다.'], - [5, '우연을 가장해 증거품을 손에 넣어버린다.'], - [6, '부자연스럽게 시치미를 뗀다.'], - [7, '관계자를 화나게 하는 연기를 하여 정보를 끌어낸다.'], - [8, '완곡하게 관계자를 위협한다'], - [9, '물건을 잃어버렸다고 말하며 현장이나 증거품을 뒤진다.'], - [10, '관계자에게 유도 신문을 한다.'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_engrossed - table = [ - [1, '파트너의 몸을 사용해 사건을 재현하려고 한다'], - [2, '수수께끼를 푸는 것이 즐거워서 웃어 버린다'], - [3, '먹지도 자지도 않고 수사를 하다 갑자기 쓰러진다'], - [4, '생각을 하느라 누구의 목소리도 들리지 않는다.'], - [5, '사건의 관계도를 가까운 벽이나 바닥에 그리기 시작한다'], - [6, '사건에 관계되는 말을 계속해서 말해나간다.'], - [7, '사건 해결 이외의 것은 전혀 생각하고 있지 않다.'], - [8, '사건의 흐름을 중얼중얼 말하기 시작한다.'], - [9, '사건 현장을 파고들어 조사를 한다.'], - [10, '식사중이라도, 상관 없이 사건 이야기를 한다.'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_with_partner - table = [ - [1, '파트너의 신뢰에 응석부린다.'], - [2, '파트너를 두고 먼저 가버린다.'], - [3, '파트너에게 사건에 대해 어떻게 생각하는지 질문한다.'], - [4, '파트너에게 자랑한다.'], - [5, '파트너에게 사건에 관한 퀴즈를 낸다.'], - [6, '파트너와 사소한 일로 싸움을 한다.'], - [7, '파트너에게 선생님 행세를 한다.'], - [8, '파트너가 따라오는 전제로 멋대로 움직인다.'], - [9, '파트너에 대해서 친절하고 정중하게 사건을 설명한다.'], - [10, '파트너의 귓가에 갑자기 말하기 시작한다.'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_do_something - table = [ - [1, '많은 양의 책을 읽고 있다.'], - [2, '좋아하는 음악을 큰 소리로 틀고 있다.'], - [3, '어떤 수식을 풀고 있다.'], - [4, '많은 양의 좋아하는 음식을 계속 먹고 있다.'], - [5, '계속 컴퓨터나 스마트폰 등의 화면과 마주보며 조사하고 있다.'], - [6, '작은 수수께끼를 풀고 있다.'], - [7, '체스나 장기 등을 두고 있다.'], - [8, '찻집 자리에 앉아 무언가를 기다리고 있다.'], - [9, '계속 잠들어 있다가 갑자기 일어난다.'], - [10, '잠시 아무 것도 하지 않는다.'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_fantastic - table = [ - [1, '그만두라는 말을 듣고 있는 일을 한다.'], - [2, '잠시 사라졌다가 돌아온다.'], - [3, '예상치 못한 곳(땅 속이나 공중 등)에서 등장한다.'], - [4, '뭔가 생각나서 갑자기 달리기 시작한다.'], - [5, '한심한 자신을 비난한다.'], - [6, '모르는 사이에 사건의 수수께끼를 하나 풀고 있었다.'], - [7, '사건에 대해 알아차린 모양이지만 누구에게도 가르쳐 주지 않는다.'], - [8, '두고 가는 편지나 메일로 보고를 하면 모습이 보이지 않는다.'], - [9, '시계를 보고 갑자기 움직인다.'], - [10, '사건과는 관계 없을 것 같은 신문의 기사를 읽고 있다.'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_inspiration - table = [ - [1, '식사를 하고 있으면 갑자기 수수께끼가 풀린다.'], - [2, '조수와의 아무렇지도 않은 대화에서 갑자기 수수께끼가 풀린다.'], - [3, '들려온 대화로부터 갑자기 수수께끼가 풀린다.'], - [4, '목욕을 하고 있으면 갑자기 수수께끼가 풀린다.'], - [5, '꿈 속에서 갑자기 수수께끼가 풀린다.'], - [6, '바람이 불어 날아온 물건으로 수수께끼가 풀린다.'], - [7, '책을 읽다가 사건의 힌트가 발견된다.'], - [8, '현장을 다시 방문하니 번뜩인다.'], - [9, '자료를 확인하는 중에 번뜩인다.'], - [10, '관계자와 대화를 나누는 중에 번뜩이다.'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - def get_strange_habit_emotion - table = [ - [1, '갑자기 운다.'], - [2, '갑자기 화낸다.'], - [3, '갑자기 웃기 시작한다.'], - [4, '갑자기 하이텐션이 된다.'], - [5, '갑자기 기뻐한다.'], - [6, '갑자기 소리친다.'], - [7, '갑자기 히죽거리기 시작한다.'], - [8, '갑자기 이 사건의 슬픔을 말한다.'], - [9, '담담하게 일을 진행한다.'], - [10, '로봇처럼 정해진 것만 한다.'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - # イベント表 - def get_event_scene - table = [ - "신경쓰이는 것(P.165)\n 사건이 일어난 현장은 아직 남아 있다.\n 여기서 일어난 '무언가'는 안개 저편에 숨겨져 있었다.\n 그 안개에 손을 뻗는 자들이 있다.", - "거북해하다(P.166)\n 한 형사가 현장을 열심히 둘러보고 있다.\n 이 사건의 담당을 맡은 오사카베 마사요시(刑部正義)라는 남자다.\n 그는 PC들의 얼굴을 보자마자 얼굴을 찡그린다. 환영받지 못하고 있다.", - "탐문(P.167)\n PC들은 현장 부근을 지나다니거나 사건을 목격한 인물이 없는지 찾아다녔다.\n 그러나 어디서 무엇을 물어도 그럴 듯한 단서는 없다.\n 슬슬 다리에 피로가 쌓이기 시작했다.", - "완고한 관계자(P.168)\n 사건 현장에 어떤 인물이 나타났다.\n PC들은, 신묘한 얼굴로 현장을 바라보던 그 인물이 궁금해 말을 건다.\n 그 인물은 자신을 피해자의 관계자라고 자칭했다…….", - "현장을 철저히 조사!(P.169)\n 사건 현장에 남겨진 증거는 거의 찾아냈다.\n ……과연 정말 그럴까?\n 모든 각도에서 조사와 검증을 하여 현장에 남겨진 것은 없는지 찾아보게 됐다.", - "도망친 인물(P.170)\n 매우 빠르게 누군가가 현장에서 도망치고 있다.\n 그 인물의 달리는 모습이나 초조해하는 모습은 평범하지 않았다.\n 이건, 무언가를 알고 있다. 혹은 무언가를 가지고 떠났을 가능성이 있다.\n PC들은 쫓기 시작했다.", - ] - return get_table_by_1d6(table) - end - - def get_event_why - table = [ - "이동 루트(P.171)\n 이 길을 지나갔을 때, 그 사람은 무슨 생각을 했을까?\n 이 길을 지나갔을 때, 그 사람은 무엇을 해야 했을까?\n 사건관계자들의 행적에는 사건에 이어지는 무언가가 남아 있다.\n 그렇게 믿으며, 길을 걷는다.", - "자신이라면……(P.172)\n 탐정과 조수가 사건에 대해 이야기를 나누고 있었다.\n 이야기의 주제는,「 이 상황에서 자신이 범인이라면 어떻게 할 것인가.」\n 그 가정은 힌트를 줄 수도 있다.", - "수수께끼의 메시지(P.173)\n 그것은, 수수께끼의 말이었다.\n 단순한 문자열일 수도 있고 뜻 모를 말일 수도 있다.\n 사건과 관련된 장소에 있었다고 해서, 사건에 관련되어 있다고는 할 수 없다.\n 하지만, 이것은 사건에 연루되어 있다. 그렇게 직감이 고하고 있다.", - "사건 복습(P.174)\n 화이트보드, 칠판, 노트.\n 뭐든지 간에 쓸 것이 필요하다.\n 지금부터 사건에 대해 정리하는 거니까.", - "수상한 인물은?(P.175)\n PC들은 한 인물을 쫓고 있다.\n 그 인물은 사건에 이어지는 무언가를 가지고 있다. 그런 확신이 들었다.\n 자, 그는 어떤 사람일까?", - "피해자의 시점(P.176)\n 피해자의 몸에 무슨 일이 일어났는가.\n 피해자는 무엇을 보았는가.\n 그 힌트는 피해자 자신이 알 것이다.", - ] - return get_table_by_1d6(table) - end - - def get_event_npc - table = [ - "사건의 영상(P.177)\n PC들은 눈을 가늘게 뜨고 영상을 바라보고 있다.\n 그것은 공교롭게도 현장에서 찍힌 것이었다.\n 과연 진실은 이 영상 속에 담겨있는 것일까?", - "특이한 목격자(P.178)\n PC들은 수사 결과, 사건에 관한 무언가를 봤다는 목격자를 발견한다.\n 그러나 그 사람은 목격증언을 꺼렸다. 왜 그럴까?", - "전문가(P.179)\n 조사 중, 아무래도 전문적인 지식이 필요한 곳이 나온다.\n 지금이 그 때이고 PC들은 어떻게 할지 고민하고 있었다.", - "정보상(P.180)\n 메일 소프트웨어에 연락이 왔다.\n 연락해온 곳은 이 일대에서 유명한 정보상이었다.\n 그 정보상에게 걸리면 얻을 수 없는 정보는 없다고 한다.\n 자, 어떻게 할까?", - "관계자와 함께(P.181)\n 사건관계자 중 한명이 갑자기 협력을 제안했다.\n 아무래도 그 사람도 이 사건에 대해서는 생각하는 구석이 있는 것 같다.", - "아마추어 추리(P.182)\n 사건관계자 앞에서, 게스트 NPC가 추리를 선보이고 있다.\n 하지만 그 추리는 구멍투성이고…….", - ] - return get_table_by_1d6(table) - end - - def get_event_coming - table = [ - "수상한 전화(P.183)\n 갑자기 전화가 울렸다.\n 그 전화는 조사를 진전시키게 될까…….\n 동시에, 새로운 수수께끼를 남겼다.", - "지금은 여가를(P.184)\n 행운은 누워서 기다려라.\n 쥐구멍에도 볕 들 날이 있다.\n 라는 걸로, 일단은 아지트에 있다.\n 과연 상황이 나아질까?", - "길에서 딱(P.185)\n 개도 쏘다니면 몽둥이에 맞는다.\n 이 말에는 행운을 만난다는 의미도, 봉변을 당한다는 의미도 있다.\n 그럼, 탐정과 조수가 걸으면 무엇에 해당할까?", - "번뜩이는 순간(P.186)\n 우연한 계기로 탐정은 번뜩이는 수가 있다.\n 이번엔 대체 무엇이 계기였을까?", - "지인으로부터(P.187)\n 사건 수사의 단서를 가져온 것은, 지인이었다.\n 역시 친구밖에 없다.\n 라고 말하고 싶은 참인데…….", - "PC들의 위기(P.188)\n 수사는 갑자기 멈췄다.\n 그 원인은 알고 있다.\n 원인을 제거하지 않으면 사건 조사는 할 수 없다.", - ] - return get_table_by_1d6(table) - end - - def get_event_vs - table = [ - "용의자의 거짓말(P.189)\n 사람은 뭔가 떳떳하지 못한 일이 있을 때 거짓말을 한다.\n 이 용의자는 거짓말을 하고 있다.\n 그렇다면, 무엇을 숨기고 있을까?", - "흔들림(P.190)\n 그 용의자는 뭔가를 숨기고 있었다.\n 눈에 띄는 거짓말을 하고 있는 것은 아니다.\n 그렇지만 무언가 숨기고 있다. 탐정에겐, 그렇게 보였다.", - "외모로부터의 추리(P.191)\n 조금만 이야기를 했다.\n 조금만 그 모습을 보았다.\n 조금만, 그 사람을 알았다.\n 그것만으로 탐정이라는 생물은 열을 안다. 원래 그런 것이다.", - "직접 묻다(P.192)\n 여기서 탐정과 조수는 대담한 수를 썼다.\n 용의자를 상대로 사건의 구체적인 부분까지 파고드는 질문을 한 것이다.\n 그것에 대해 용의자는…….", - "위협 받다(P.193)\n 아무래도 우리는 위협을 받는 것 같다.", - "술래가 없는 사이에(P.194)\n 그 용의자를 찾아갔을 때 우연히 자리를 비우고 있었다.\n 이건 기회다.\n 그렇게 생각하는 것이 바로 탐정의 슬픈 천성이다.", - ] - return get_table_by_1d6(table) - end - - # 調査の障害表(조사의 장애표) - def get_obstruction_table - table = [ - [11, '탐정과 조수가 경찰에게 마크당한다.'], - [12, '탐정의 변덕'], - [13, '탐정의 의욕'], - [14, '탐정의 기행을 견딜 수 없게 되다.'], - [15, '탐정이 기이한 의심을 받다.'], - [16, '탐정이 피곤하다.'], - [22, '탐정과 조수가 수상한 인물로 오인받는다.'], - [23, '조수가 파트너에게 신뢰받지 못한다고 생각한다.'], - [24, '조수가 탐정에게 따라갈 수 없다.'], - [25, '조수의 수고가 어느 때보다 크다.'], - [26, '조수의 수사만이 잘 안 된다.'], - [33, '수사를 위한 자금이 없다.'], - [34, '세상의 눈이 매섭다.'], - [35, '경찰로부터 역겹다고 여겨진다.'], - [36, '관계자가 협력해주지 않는다.'], - [44, '수사해서는 안 된다고 압력이 들어온다.'], - [45, '범인에 의한 방해'], - [46, '범인에 의한 이면공작'], - [55, '화분이나 철골 등 부자연스럽게 위험한 물건이 날아온다.'], - [56, '누군가가 탐정과 조수에게 덤벼든다.'], - [66, '우연이 겹쳐서 잘 안 된다.'], - ] - - return get_table_by_d66_swap(table) - end - - # 変調表(변조표) - def get_abnormal_condition - table = [ - '엇갈림', - '탐정의 폭주', - '다툼', - '미아', - '나쁜 소문', - '주목의 대상', - ] - return get_table_by_1d6(table) - end - - # 目撃者表(목격자표) - def get_eyewitness_table - table = [ - "놀이 상대를 원하는 젊은이. 판정기능:≪유행≫", - "기억력이 나쁜 사람. 판정기능:없음", - "바쁜 사람. 판정기능:≪비즈니스≫", - "범인의 지인. 판정기능:≪설득≫", - "탐정(경찰)을 싫어하는 사람. 판정기능:≪거짓말≫", - "반사회주의자. 판정기능:≪돌파≫", - ] - return get_table_by_1d6(table) - end - - # 迷宮入り表(미제사건표) - def get_wrapped_in_mystery_table - table = [ - [1, '진범이 아닌 인간이 범인이 되어, 실형을 받고 말았다. 그 증거는 없지만 그렇게 직감할 수 있다.'], - [2, '해결되지 않은 채 시간이 흐르고, 이윽고 사건은 잊혀졌다. 탐정과 조수, 그리고 사건관계자들만 기억한다.'], - [3, '피해자 유족과 관계자들은 슬픔에 잠겨 있다. 탐정과 조수는 그저 잠자코 보고만 있을 뿐이다. 그때, 범인을 잡았다면…….'], - [4, '경찰에 의해 범인이 검거되었다고 하지만, 그 사람이 정말로 범인인지 어떤지는 알 수 없다. 탐정도, 뭐라고 말할 수 없는 것 같다.'], - [5, '증거가 없어져 버렸다. 그것만 있다면, 사건의 조사를 재개할 수 있을 텐데……. 범인의 소행인지조차 알 수 없다.'], - [6, '관계자가 없어져 버렸다. 그 후 소식도 묘연하다. 도대체 무슨 생각을 하며 사라진 것일까? 어쨌든, 조사는 할 수 없게 되었다.'], - [7, '관계자에게 미움 받아, 접근 조차 할 수 없게 되었다. 탐정과 조수는 모두 출입금지가 되어 버린 것 같다. 이래서는 조사를 할 수 없다.'], - [8, '조수는 때때로 피해자의 관계자와 만나고 있다. 그들의 말을 듣고 그들의 감정을 받아들이는 것 같다.'], - [9, '탐정과 조수는 기회를 발견하고 사건을 재조사하고 있다. 그러나 확실한 증거는 찾지 못한 채 시간이 흘러간다.'], - [10, '탐정은 직감으로 진범을 밝혀냈다. 하지만 진범을 잡기 위한 증거가 없다. 범인을 고발하지 못해 이를 갈았다.'], - ] - - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - # 背景表(배경표) - def get_background_detective_destiny - table = [ - [1, '『명탐정인 조상(실재)』자신의 조상에 저명한 탐정이 있다. 그 이름을 대면 누구나 알 만한 대인물이다. 자신은 그 피를 진하게 잇고 있는 것 같고, 탐정으로서의 재능을 마음껏 발휘하고 있다.'], - [2, '『명탐정인 조상(허구)』자신의 조상은 저명한 탐정이다. 그러나 그 활약은 픽션으로 알려져 있다. 그 인물은 실존하지 않는다고 말하지지만… 그것은 사실이 아니다. 자신이 그 피를 잇고 있으니까.'], - [3, '『부모가 세계적인 탐정』자신의 부모는 세계적으로 알려진 명탐정이다. 숱한 난사건도 해결했다. 자신에게도 그 피가 흐르고 있어 사건에 대한 날카로운 통찰력을 이어받게 되었다.'], - [4, '『마을의 명탐정』자신의 부모는, 마을에서는 잘 알려진 명탐정이다. 마을 사람들에게 사랑받고 의지가 되는 존재였다. 자신도 그 피를 잇고 있는지 탐정으로서 활동할 힘이 있다.'], - [5, '『추리작가』자신을 키운 인물은 저명한 추리작가였다. 그 사고능력은 자신에게도 계승되었고, 트릭을 파헤치는 힘은 탐정 수준에 있다고 해도 좋을 것이다.'], - [6, '『양부모』자신을 키워 준 인물은, 사건을 해결로 이끈 적이 있는 인물이다. 그 사람의 가르침을 받고 자신은 탐정의 재능을 꽃피웠다.'], - [7, '『타락한 명탐정』일찍이, 자신의 부모는 모든 사건을 해결하여, 명탐정으로 유명했다. 그러나 지금은 뛰어난 사고능력을 악용해 사람들을 장기말마냥 다룬다. 능력을 이어받은 자신도 언젠가는 그렇게 될까?'], - [8, '『대악인의 피』세상을 떠들썩하게 했던 대악당과 대괴도. 그 피가 자신에게도 흐르고 있다. 그러므로 악인의 사고를 추적할 수 있으며 결과적으로 명탐정처럼 행동한다.'], - [9, '『숨겨진 핏줄』무슨 이유에서인지, 자신의 뿌리는 말소되어 있다. 내가 누구인지조차 모른다. 단지, 자신에게는 사건을 해결할 수 있는 힘이 있고, 그것이 뿌리와 관계가 있다고 직감할 수 있다.'], - [10, '『클론』자신은 유명한 명탐정의 DNA에서 태어난 존재다. 그래서인지 명탐정의 힘은 타고난 것이었다.'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - - return output, diceText - end - - def get_background_detective_genius - table = [ - [1, '『초엘리트』자신은 엘리트로 활약하기 위해 모든 분야의 훈련을 받았다. 그리고 원하는 대로 우수한 사람이 되었다.'], - [2, '『순간기억능력』본 것은 모두 머릿속에 입력된다. 그리고, 절대로 잊지 않는다. 자신은 그런 능력을 갖추고 있다.'], - [3, '『지식의 샘』머리 속에 있는 서랍 속에는 온갖 지식이 담겨 있다. 즉, 모르는 게 없다는 얘기다.'], - [4, '『스파르타 교육』엄격한 교육을 받았고, 그 결과 지식을 얻을 수 있었다. 그 대신, 조금 별난 사고방식이 되어 버렸지만……. 별 것 아닐 것이다.'], - [5, '『이미 명탐정』이미 수많은 사건을 해결하고 있는 천재이다. 숱한 난사건도 자신의 수완으로 해결해 왔다. 그 옆에는 파트너의 모습도 있었다.'], - [6, '『동경하는 등』자신에게는 동경하고 있는 상대가 있었다. 그 존재를 따라잡기 위해 노력했고 지금의 능력을 얻었다. 그 인물은, 지금은…….'], - [7, '『라이벌』자신과 겨루던 라이벌이 있다. 능력으로는 거의 호각이었다. 경쟁 속에서, 자신의 능력은 연마되어 간 것이다.'], - [8, '『과거의 명탐정』이전에는, 모든 사건을 해결로 이끈 천재였다. 그러나 지금은 사건 해결에 소극적이다. 사건을 멀리하고 싶은 무언가가 있었던 것이다.'], - [9, '『고립된 명탐정』자신은 천재적인 능력을 가지고 수많은 사건을 해결한 명탐정이다. 그 때문에 소외되고, 두려운 존재로 여겨져, 세간이나 조직 속에서 고립되었다.'], - [10, '『인공 명탐정』자신은 누군가에게 연금되어 탐정 지식을 주입당한 「인공 명탐정」이다. 명탐정이 되도록 길러진 자신은 그 능력을 기대한 대로 발휘할 수 있다.'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - - return output, diceText - end - - def get_background_detective_mania - table = [ - [1, '『서스펜스 마니아』자신은 서스펜스물의 픽션이나, 실존하는 사건에 대해서 매우 큰 관심을 가지고 있다. 쌓아온 트릭의 지식을 활용할 수 있는 기회를 노리고 있다.'], - [2, '『시체 마니아』자기는 시체에 대해 큰 관심을 갖고 있다. 시체의 상태나 상세정보를 아는 것으로써, 강한 흥분을 느끼는 성질인 것이다. 난처한 일이다.'], - [3, '『과학 마니아』과학에 의해 해명되지 못할 것은 없다. 나는 그렇게 생각하고 있으며 이를 위해 능력을 닦아 왔다. 사람이 일으키는 사건이라도, 과학은 모든 것을 내다볼 수 있을 것이다.'], - [4, '『이른바 오타쿠』게임이나 만화 등에서 얻은 지식이란 의외로 바보 취급할 수 없다. 자신은 게임을 통해 다양한 지식을 쌓아왔으며 이를 응용함으로써 모든 사건을 해결한다.'], - [5, '『인간 마니아』자신은 인간을 좋아한다. 그래서 관찰도 하고 있다. 행동에 당사자도 모르는 이유가 있다는 것도 알고 있다. 사건도, 왜 그런 일을 저질렀는지에 관심이 있다.'], - [6, '『서적 마니아』책에는 모든 것이 적혀 있다. 적어도 자신은 그렇게 생각하고 있고, 그 증거로 책의 지식을 응용함으로써 어려운 사건도 해결할 수 있다. 종이 속의 명탐정처럼.'], - [7, '『오컬트 마니아』오컬트나 초상현상을 믿는다. 그래서 가짜를 알아보는 법도 알며, 용서할 수 없다고 느끼고 있다. 그것이, 어찌된 영문인지 난사건 해결로도 연결된다. 신기하다.'], - [8, '『탐정 마니아』동서고금, 다양한 탐정이 있다. 그에 대해 조사해 가는 동안, 자신 또한 탐정으로서의 능력이 갖추어졌다.'], - [9, '『폭주하는 지식욕』자신은 한 가지 일에 마니아이지만, 그로부터 파생된 것의 지식도 잘 알고 있다. 자신의 지식욕은, 거기서부터 또다시 파생된 것까지 이른다.'], - [10, '『정의의 마니아』자신이 신봉하고 있는 무언가(서적, 과학 등)가 사건에 연루되면 좌불안석이다. 마니아로서 그 수수께끼를 풀어야 한다.'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - - return output, diceText - end - - def get_background_assistant_justice - table = [ - '『착한 사람』자신은 다른 사람으로부터 곧잘 좋은 사람이라는 말을 듣는다. 그렇기 때문에 다른 사람의 부탁을 받고 사건에 얽히는 일이 잦았다. 그래니 남의 고민을 해결할 수 있는 능력이 있는 파트너와 함께 있다.', - '『용서할 수 없다』자신은 사건의 피해자에 이입하는 타입이다. 피해자의 심정을 생각하면 참담하면서도 범인을 용서할 수 없다는 생각이 든다. 그래서 범인을 쫓기 위해 파트너가 필요하다.', - '『납득하고 싶다』자신이 사건에 대해 깊이 관여하는 것은, 자신이 납득하길 원하기 때문이다. 사건을 통해 어떤 해답을 찾기 위해 정의를 행하고 있다. 파트너는 이를 위해 필요한 사람이다.', - '『이용하고 있다』어떤 수단을 써서라도 사건을 해결하는 것이 옳다고 자신은 생각하고 있다. 그것을 위한 도구로서 파트너를 쓰고 있을 뿐이다.', - '『믿을 수 있는 협력자』파트너를 의지할 수 있는 협력자라고 느끼고 있다. 파트너는 자신이 곤란할 때, 방황할 때, 대답을 해주는 사람이라고 생각한다. 상대가 어떻게 생각하든 그것은 변하지 않는다.', - '『정의의 동지』파트너도 함께 정의를 위해 사건 해결을 해주고 있다. 자신은 그렇게 느끼고 있다. 그렇게 믿고 있을 뿐일지도 모르지만, 그 믿음은 멈출 수 없다. 어쩌면 자신이 파트너를 휘두르고 있는지도 모르겠다.', - ] - return get_table_by_1d6(table) - end - - def get_background_assistant_passion - table = [ - '『능력에 반했다』자신은 파트너의 사건에 관한 능력에 반했다. 그 예리한 통찰력과 추리력, 지식의 깊이. 모든 것이 자신을 매료시키고 있다.', - '『인품에 반했다』자신이 파트너와 손을 잡고 있는 것은 인격적인 면이 크다. 언뜻 보기 힘든 대목도 있지만 감춰진 본질에 자신은 푹 빠져 있다.', - '『첫눈에 반했다』처음 만났을 때부터 파트너가 마음에 걸렸다. 그 능력도 그렇지만 직감적인 것을 느꼈던 것이다. 그래서 같이 있는다.', - '『마음이 맞았다』자신과 파트너는 마음이 잘 맞는다. 두 사람이면 흥을 돋울 수 있고, 두 사람이면 뭐든지 할 수 있다. 그렇게 생각한다……자신이 그렇게 생각하는 것일 뿐일지도 모르지만.', - '『대립』자신과 파트너는 대립하고 있다. 그래도 함께 있는 것은 파트너를 이해하기 위해서다…… 언젠가, 파트너를 쓰러뜨릴 수단을 찾기 위해서.', - '『내버려둘 수 없다』파트너를 내버려두면 무슨 짓을 할지 모른다. 그러니까 자신이 지켜보고 있어야 돼. 그렇게 느꼈다.', - ] - return get_table_by_1d6(table) - end - - def get_background_assistant_involved - table = [ - '『일방적으로 마음에 들었다』파트너가 일방적으로 좋아한다. 어쩌다 그랬는지는 모르겠지만 그런 것 같다. 함께 있는 것은 자신의 의지가 아니지만…….', - '『리액션 요원』파트너에 의하면, 자신에게 리액션을 기대하고 있는 것 같다. 사건을 해결했을 때나, 어떤 놀라움이 있었을 때에 보이는 반응이 즐겁다던가.', - '『과거의 빚』과거, 파트너에게 비밀이나 약점을 잡혔다. 그 이후, 파트너가 부려먹고 있다. 아직 도망치지 못했다.', - '『필요한 인재』파트너에게 자신이 필요하다고 부탁받았다. 그래서, 함께 사건을 해결하고 있다. 왜 자신이 필요한지는 아직 모른다.', - '『친한 사람』파트너에게 자신은 친근한 인물이다. 소꿉친구와 친구, 친척 등. 그래서 옛날부터 휘둘리고 있고 앞으로도 계속 휘둘릴 것이다.', - '『우연의 연속』파트너가 사건에 직면할 때마다 마침 그 자리에 있다. 그러다 보니 어느새 친해져 있었다. 지금은 함께 있는 일도 많다.', - ] - return get_table_by_1d6(table) - end - - # 身長表(신장표) - def get_height_table - table = [ - '매우 크다', - '큰 편', - '평균적', - '작은 편', - '매우 작다', - '파트너보다 조금 크다/조금 작다', - ] - - return get_table_by_1d6(table) - end - - # たまり場表(아지트표) - def get_base_table - table = [ - [1, 'PC가 일하고 있는 직장'], - [2, '조용한 분위기의 찻집'], - [3, '떠들썩한 분위기의 술집'], - [4, '탐정활동을 위해 빌린 사무소'], - [5, 'PC 중 한쪽의 집'], - [6, '단골 음식점'], - [7, '이동에 쓰이는 차 안'], - [8, '지인에게 양도받은 창고'], - [9, '언제나 파트너와 만나는 교차점'], - [10, '둘만 알고 있는 비밀장소'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - # 関係表() - def get_guest_relation_table - table = [ - [11, '옛날 친구'], - [12, '친구(友人)'], - [13, '친구(親友)'], - [14, '안면이 있다'], - [15, '전우'], - [16, '악연'], - [22, '과거에 무언가 있었다'], - [23, '사촌'], - [24, '친구의 친구'], - [25, '먼 친척'], - [26, '이웃'], - [33, '민폐를 끼쳤다'], - [34, '스승'], - [35, '인터넷으로 알게 되었다'], - [36, '우연히 알게 되었다'], - [44, '전에 딱 한 번 만났다'], - [45, '파트너의 일로 상담 받았다'], - [46, '파트너에 대해 질문 받았다'], - [55, '소꿉친구'], - [56, '파트너를 쫓고 있다'], - [66, '일방적으로 알려져 있다'], - ] - return get_table_by_d66_swap(table) - end - - # 思い出の品決定表(추억의 물건 결정표) - def get_memorial_item_table - table = [ - [11, '아지트에 계속 놓여 있는 배달피자상자'], - [12, '같이 해결한 사건의 파일'], - [13, '두 사람이 만난 계기가 된 책'], - [14, '둘이서 놀았던 체스판이나 장기판'], - [15, '두 사람의 추억이 쌓인 게임기'], - [16, '두 사람이 찍힌 사진'], - [22, '두 사람의 수사노트'], - [23, '같이 사용한 청소도구'], - [24, '피해자로부터 받은 인형'], - [25, '둘이서 같이 앉은 소파'], - [26, '언제나 앉아있는 의자'], - [33, '자주 사용하는 전화기'], - [34, '둘의 시간을 새긴 시계'], - [35, '언제나 놓여있는 책상'], - [36, '사건 해설을 한 화이트보드나 칠판'], - [44, '어째선지 있는 인체모형'], - [45, '좋아하는 컵'], - [46, '사건해결에 쓴 소도구'], - [55, '같이 마시기로 약속한 술이나 주스'], - [56, '좋아하는 요리'], - [66, '둘만의 비밀교환일기'], - ] - return get_table_by_d66_swap(table) - end - - # 職業表A(직업표A) - def get_job_table_66 - table = [ - [11, '파트너와 같음'], - [12, '프리터'], - [13, '학생(우수)'], - [14, '학생(보통)'], - [15, '학생(불성실)'], - [16, '교사,강사'], - [22, '파트너와 같음'], - [23, '회사원'], - [24, '주부'], - [25, '자영업자'], - [26, '딜레탕트'], - [33, '파트너와 같음'], - [34, '형사(신입)'], - [35, '형사(엘리트)'], - [36, '공무원'], - [44, '파트너와 같음'], - [45, '탐정조수'], - [46, '탐정'], - [55, '파트너와 같음'], - [56, '무직'], - [66, '파트너와 같음'], - ] - - return get_table_by_d66_swap(table) - end - - # 職業表B(직업표B) - def get_job_table_10 - table = [ - [1, '딜레탕트'], - [2, '형사'], - [3, '탐정(유명)'], - [4, '탐정(인기없음)'], - [5, '탐정조수'], - [6, '연구자'], - [7, '자영업자'], - [8, '회사원'], - [9, '작가'], - [10, '학생'], - ] - - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - # ファッション特徴表A(패션특징표A) - def get_fashion_table_66 - table = [ - [11, '고급지향'], - [12, '정장'], - [13, '캐주얼 웨어(평상복)'], - [14, '포멀 웨어(정장)'], - [15, '스포츠웨어'], - [16, '합리적임'], - [22, '선글라스'], - [23, '와이셔츠'], - [24, '티셔츠'], - [25, '목걸이'], - [26, '모자'], - [33, '밀리터리'], - [34, '피어스'], - [35, '추리닝'], - [36, '붙임머리'], - [44, '일본전통옷'], - [45, '반지'], - [46, '초커'], - [55, '샌들'], - [56, '점퍼'], - [66, '패션에 구애받지 않는다'], - ] - return get_table_by_d66_swap(table) - end - - # ファッション特徴表B(패션특징표B) - def get_fashion_table_10 - table = [ - [1, '정장'], - [2, '인버네스'], - [3, '백의'], - [4, '글로브'], - [5, '파이프'], - [6, '조끼'], - [7, '일본전통옷'], - [8, '컬러풀한 색 사용'], - [9, '파트너와 같음'], - [10, '패션에 구애받지 않는다'], - ] - - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - # 好きなもの/嫌いなもの表A(좋아하는 것/싫어하는 것표A) - def get_like_dislike_table_66 - table = [ - [11, '시체'], - [12, '개'], - [13, '고양이'], - [14, '서스펜스'], - [15, '이야기'], - [16, '아이돌'], - [22, '범죄'], - [23, '오컬트'], - [24, '건강'], - [25, '정크푸드'], - [26, '고급식사'], - [33, '패션'], - [34, '권력'], - [35, '명예'], - [36, '우정'], - [44, '간식'], - [45, '고향'], - [46, '가족'], - [55, '경찰'], - [56, '음악'], - [66, '총'], - ] - - return get_table_by_d66_swap(table) - end - - # 好きなもの/嫌いなもの表B(좋아하는 것/싫어하는 것표B) - def get_like_dislike_table_10 - table = [ - [1, '범죄'], - [2, '수수께끼'], - [3, '탐정'], - [4, '파트너'], - [5, '파트너가 좋아하는 것'], - [6, '파트너가 싫어하는 것'], - [7, '딱히 없음'], - [8, '체스나 장기 등의 보드게임'], - [9, '인간'], - [10, '모르는 것'], - ] - - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - # 感情表A(감정표A) - def get_feeling_table_66 - table = [ - [11, '얼굴'], - [12, '분위기'], - [13, '외관'], - [14, '수사방법'], - [15, '행동거지'], - [16, '냄새'], - [22, '존재 그 자체'], - [23, '말투'], - [24, '취미(취향)'], - [25, '왠지 모르게'], - [26, '타인을 향한 태도'], - [33, '금전감각'], - [34, '생활습관'], - [35, '기능'], - [36, '복장'], - [44, '말할 타이밍'], - [45, '윤리관'], - [46, '자신을 향한 태도'], - [55, '거리감'], - [56, '자신과의 관계'], - [66, '생활습관'], - ] - - return get_table_by_d66_swap(table) - end - - # 感情表B(감정표B) - def get_feeling_table_10 - table = [ - [1, '인간성'], - [2, '취미(취향)'], - [3, '기능'], - [4, '왠지 모르게'], - [5, '감각'], - [6, '분위기'], - [7, '자신이 모르는 점'], - [8, '자신이 잘 알고 있는 점'], - [9, '자신을 향한 태도'], - [10, '자신과의 관계'], - ] - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - return output, diceText - end - - # 呼び名表A(호칭표A) - def get_name_to_call_table_66 - table = [ - [11, '달링, 허니'], - [12, '이름'], - [13, '~군(くん)'], - [14, '~씨(さん)'], - [15, '~쨩(ちゃん)'], - [16, '~님(様), ~공(殿)'], - [22, '~선배, ~후배'], - [23, '파트너(相棒)'], - [24, '당신(あんた)'], - [25, '당신(あなた)'], - [26, '선생(님)'], - [33, '물건으로 비유한다.'], - [34, '네놈/자네(貴様)、귀하(貴殿)'], - [35, '너(てめえ、おまえ)'], - [36, '별명'], - [44, '유(ユー)'], - [45, '자네(お前さん)'], - [46, '탐정군, 탐정씨'], - [55, '친구'], - [56, '파트너와 같다.'], - [66, '매번 호칭이 바뀐다.'], - ] - - return get_table_by_d66_swap(table) - end - - # 呼び名表B(호칭표B) - def get_name_to_call_table_10 - table = [ - [1, '이름'], - [2, '~군(くん)'], - [3, '~씨(さん)'], - [4, '~쨩(ちゃん)'], - [5, '~님(様), ~공(殿)'], - [6, '파트너(相棒)'], - [7, '당신(あんた、あなた)'], - [8, '너(キミ)'], - [9, '사랑하는~'], - [10, '별명'], - ] - - diceText, = roll(1, 10) - output = get_table_by_number(diceText, table) - - return output, diceText - end -end diff --git a/src/src_bcdice/diceBot/Garako.rb b/src/src_bcdice/diceBot/Garako.rb deleted file mode 100644 index e045328c5..000000000 --- a/src/src_bcdice/diceBot/Garako.rb +++ /dev/null @@ -1,556 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/table' -require 'utils/range_table' -require 'utils/format' - -class Garako < DiceBot - # ゲームシステムの識別子 - ID = 'Garako' - - # ゲームシステム名 - NAME = 'ガラコと破界の塔' - - # ゲームシステム名の読みがな - SORT_KEY = 'からことはかいのとう' - - # ダイスボットの使い方 - HELP_MESSAGE = <=X:「+n」で判定値を指定、「X」で目標値を指定。 -・部位決定チャート:HIT -・ダメージチャート:xDCy(CDC/EDC/FDC/ADC/LDC) - xは C:コックピット、E:エンジン、F:フレーム、A:アーム、L:レッグ - yはダメージ値 -各種表 -・個性表:IDI/動機決定表:MTV -・名前表 -ピグマー族  男:PNM 女:PNF  エレメント族 男:ENM 女:ENF -ノーマッド族 男:NNM 女:NNF  ラット族   男:RNM 女:RNF -ブレイン族  1:BN1 2:BN2  テンタクル族 1:TN1 2:TN2 -・ガラコ改造チャート表:GCC -・武器改造チャート表:WCC -・イベントチャート表:EVC -・戦闘開始距離:BSD -MESSAGETEXT - - # @param command [String] - # @return [String, nil] - def rollDiceCommand(command) - roll_tables(command, TABLES) || - roll_gr(command) || - roll_damage_chart(command) - end - - private - - # 判定 - # - # @param command [String] - # @return [String, nil] - def roll_gr(command) - m = /^GR([+-]\d+)?>=(\d+)$/i.match(command) - unless m - return nil - end - - modify_number = m[1].to_i - target_number = m[2].to_i - - dice, = roll(1, 10) - total = dice + modify_number - - result = - if dice == 1 - "ファンブル" - elsif dice == 10 - "クリティカル" - elsif total >= target_number - "成功" - else - "失敗" - end - - formated_modifier = Format.modifier(modify_number) - sequence = [ - "(1D10#{formated_modifier}>=#{target_number})", - "#{dice}[#{dice}]#{formated_modifier}", - total.to_s, - result - ] - - return sequence.join(" > ") - end - - # 部位ダメージチャート - # - # @param command [String] - # @return [String, nil] - def roll_damage_chart(command) - m = /^(\wDC)(\d+)$/i.match(command) - unless m - return nil - end - - part = m[1] - damage = clamp(m[2].to_i, 1, 10) - index = damage - 1 - - chart = DAMAGE_CHARTS[part] - unless chart - return nil - end - - chosen = chart[:table][index] - - return "#{chart[:name]}(#{damage}) > #{chosen}" - end - - def clamp(i, min, max) - if i < min - min - elsif i > max - max - else - i - end - end - - DAMAGE_CHARTS = { - "CDC" => { - :name => "部位ダメージチャート:コックピット", - :table => [ - "小破(アーマー損傷):以後、この部位の【部位装甲】-1。", - "小破(視界不良):モニターやハッチの歪み等により、視界を大きく遮られる。以後、【視認性】-1、【部位装甲】-1。", - "小破(強震):大きく揺さぶられる。キミは【身体】10の判定を行う。失敗した場合、次のターンを失う。【部位装甲】-1。", - "小破(収納直撃):アイテム収納スペースに直撃! 所持品一つにつき1d10を振れ。出目が5以下だった所持品は破壊される。【部位装甲】-1。", - "中破(計器損傷):コンソールの一部が停止する。[弱体1]を受ける。", - "中破(制御不能):コントロールが効かなくなる。キミは次のターンを失う。[弱体1]を受ける。", - "中破(貫通!):パイロットに被害が! キミはHPダメージ(1d10-【身体】)に加え、[弱体1]を受ける。", - "大破(故障):コックピットが完全にいかれる。キミは次のラウンド終了時まで、あらゆる判定に自動的にファンブルする。[弱体1]を受ける。", - "大破(貫通!):パイロットに被害が! キミはHPダメージ(1d10+3-【身体】)に加え、[弱体1]を受ける。", - "修復不能(破壊):コックピットが[修復不能]となる。キミは2d10-【身体】点のHPダメージを受ける。ガラコはすべての機能を停止する。コックピットのハッチが自動的に開く。", - ] - }, - "EDC" => { - :name => "部位ダメージチャート:エンジン", - :table => [ - "小破(アーマー損傷):以後、この部位の【部位装甲】-1。", - "小破(アーマー損傷):以後、この部位の【部位装甲】-1。", - "小破(燃料漏れ):タンクから燃料が漏れる。燃料-1。この部位の【部位装甲】-1。", - "小破(燃料漏れ):タンクから燃料が漏れる。燃料-2。この部位の【部位装甲】-1。", - "中破(エンジン不調):時々エンジンが動かなくなる。[弱体1]を受ける。", - "中破(燃料漏れ):タンクから燃料が漏れる。燃料-2。[弱体1]を受ける。", - "中破(ヒート):オーバーヒートする。次のターンの終了時まで、移動と攻撃を行えない。[弱体1]を受ける。", - "大破(エンジン不調):キミは次のターンを失う。[弱体1]を受ける。", - "大破(故障):以後、この部位の【部位装甲】が0になる。[弱体1]を受ける。", - "修復不能(エンジン停止):エンジンが停止する。ガラコはすべての機能を停止する。コックピットのハッチが自動的に開く。【操作性】10の判定を行うこと。失敗するとエンジンが爆発する。その場合、すべての部位が[修復不能]となり、キミは2d10-【身体】点のダメージを受ける。", - ] - }, - "FDC" => { - :name => "部位ダメージチャート:フレーム", - :table => [ - "小破(不安定):体勢を崩す。次のターン、キミは攻撃を行えない。この部位の【部位装甲】-1。", - "小破(スクラッチ!):フレームに醜い傷が残る。この部位の【部位装甲】-1。", - "小破(アーマー損傷):フレームが歪む。この部位の【部位装甲】-1。", - "小破(アーマー損傷):フレームがきしみ始め、ガラコの動きを阻害し始める。【移動力】-1。さらに、この部位の【部位装甲】-1。", - "中破(放熱板損傷):熱を機体外に逃すことができなくなる。[弱体1]を受ける。", - "中破(スタビライザー損傷):機体のバランス調整装置が故障する。【身体】10の判定を行うこと。失敗した場合、キミは次のターンを失う。[弱体1]を受ける。", - "中破(貫通!):パイロットに被害が! キミはHPダメージ(1d10-【身体】)を受ける。[弱体1]を受ける。", - "大破(停止):フレームが動かない。キミは次のターンを失う。[弱体1]を受ける。", - "大破(アーマー損傷):フレームに甚大なダメージを受ける。以後、この部位の【部位装甲】に-3。[弱体1]を受ける。", - "修復不能(フレーム崩壊):フレームが[修復不能]となる。フレームの大部分が剥がれ落ち、ガラコの内部が晒される。以後、キミに対して部位狙いが行われる場合、その命中判定に対する修正(p21)は発生しなくなる。[弱体2]を受ける。", - ] - }, - "ADC" => { - :name => "部位ダメージチャート:アーム", - :table => [ - "小破(アーマー損傷):アームの装甲にヒビが入る。【部位装甲】-1。", - "小破(武器落とし!):【身体】8の判定を行う。失敗した場合、ダメージを受けた側のアームに(スロットを消費して)装着していた武器を落とす。【部位装甲】-1。", - "小破(マニュピレータ損傷):指が何本かちぎれ飛んだ。【操作性】-1、【部位装甲】-1。", - "小破(機能停止):次のターンの終了時まで、このアームを使った攻撃はできない。以後、この部位の【部位装甲】-1。", - "中破(痙攣):アームの動きがぶれ始める。[弱体1]を受ける。", - "中破(武器落とし!):ダメージを受けた側のアームに(スロットを消費して)装着していた武器を落とす。[弱体1]を受ける。", - "中破(スピン):機体が大きく回転する。【身体】10の判定を行うこと。失敗した場合、[伏せ]状態となった上、次のターンを失う。[弱体1]を受ける。", - "大破(アーマー損傷):以後、この部位の【部位装甲】を-3。[弱体1]を受ける。", - "大破(武器落とし!):ダメージを受けた側のアームに(スロットを消費して)装着していた武器を落とす。以後、この部位の【部位装甲】が0になる。[弱体1]を受ける。", - "修復不能(破壊):ダメージを受けた側のアームが[修復不能]となる。[弱体2]を受ける。", - ] - }, - "LDC" => { - :name => "部位ダメージチャート:レッグ", - :table => [ - "小破(アーマー損傷):以後、この部位の【部位装甲】-1。", - "小破(よろめき):以後、この部位の【部位装甲】-1。次のターン終了時まで、キミは移動できない。", - "小破(スネア):足元をすくわれる。【部位装甲】-1。さらに【身体】8の判定を行うこと。失敗した場合、キミは[伏せ]状態になる。", - "小破(跛足):以後、【移動力】-1、【部位装甲】-1。", - "中破(シャフト損傷):脚部の軸に歪みが生じる。[弱体1]を受ける。", - "中破(アクチュエータ損傷):脚部のアクチュエータに大きな損傷を受ける。【移動力】-1。[弱体1]を受ける。", - "中破(スピン):機体が大きく回転する。【身体】10の判定を行うこと。失敗した場合、[伏せ]状態となった上、次のターンを失う。[弱体1]を受ける。", - "大破(アーマー損傷):以後、この部位の【部位装甲】を-3。[弱体1]を受ける。", - "大破(跛足):以後、【移動力】-2。この部位の【部位装甲】が0になる。[弱体1]を受ける。", - "修復不能(破壊):ダメージを受けた側のレッグが[修復不能]となる。【移動力】-2。[弱体2]を受ける。", - ] - } - }.freeze - - TABLES = { - "PNM" => Table.new( - "名前表:ピグマー族(男)", - "1D10", - [ - "バビロン", - "グリニッジ", - "デトロイト", - "ヨコスカ", - "ボルドー", - "テキサス", - "シチリア", - "チェルノブイリ", - "グンマ", - "サマルトリア", - ] - ), - "PNF" => Table.new( - "名前表:ピグマー族(女)", - "1D10", - [ - "ルアンダ", - "ローマ", - "フロリダ", - "ホノルル", - "ツガル", - "ゲルニカ", - "シャンハイ", - "モナコ", - "チグリス", - "オーサカ", - ] - ), - "ENM" => Table.new( - "名前表:エレメント族(男)", - "1D10", - [ - "アポロン", - "ミキストリ", - "アザゼル", - "フマクト", - "マサカド", - "ククルカン", - "ルシフェル", - "ザギグ", - "フェムト", - "マイトレーヤ", - ] - ), - "ENF" => Table.new( - "名前表:エレメント族(女)", - "1D10", - [ - "クシナダ", - "アルテミス", - "ゼノビア", - "フレイヤ", - "イシュタム", - "ベルゼバブ", - "マイシェラ", - "バステト", - "スクルド", - "アテナ", - ] - ), - "NNM" => Table.new( - "名前表:ノーマッド族(男)", - "1D10", - [ - "ドラム", - "カホン", - "ハレルヤ", - "トリノウタ", - "スリラー", - "シンバル", - "リュート", - "ウクレレ", - "タンバリン", - "ユメコウネン", - ] - ), - "NNF" => Table.new( - "名前表:ノーマッド族(女)", - "1D10", - [ - "ピアノ", - "テルミン", - "ソバカス", - "イマジン", - "ツナミ", - "ピッコロ", - "ハープ", - "シャミセン", - "ミザルー", - "ドナドナ", - ] - ), - "RNM" => Table.new( - "名前表:ラット族(男)", - "1D10", - [ - "ポチ", - "シシマル", - "ポンタ", - "コテツ", - "アルフォンス", - "パトラッシュ", - "ミッキー", - "ジジ", - "サカモト", - "オンソクマル", - ] - ), - "RNF" => Table.new( - "名前表:ラット族(女)", - "1D10", - [ - "タマ", - "ココ", - "ラブ", - "ピーコ", - "モカ", - "オリガミ", - "ヒメ", - "ミィ", - "ルナ", - "ク・メル", - ] - ), - "BN1" => Table.new( - "名前表:ブレイン族(その1)", - "1D10", - [ - "マリファナ", - "バファリン", - "タミフル", - "セーロガン", - "モルヒネ", - "ハルシオン", - "トリカブト", - "バイアグラ", - "エリクサー", - "クラレ", - ] - ), - "BN2" => Table.new( - "名前表:ブレイン族(その2)", - "1D10", - [ - "ニトロ", - "ダイオキシン", - "タウリン", - "コイーバ", - "マールボロ", - "キャメル", - "ドクダミ", - "アブサン", - "ドブロク", - "マティーニ", - ] - ), - "TN1" => Table.new( - "名前表:テンタクル族(その1)", - "1D10", - [ - "アップル", - "プリン", - "ビフテキ", - "ガンモ", - "レバニラ", - "カボチャ", - "コロッケ", - "マトン", - "ギョーザ", - "タバスコ", - ] - ), - "TN2" => Table.new( - "名前表:テンタクル族(その2)", - "1D10", - [ - "キノコ", - "セロリ", - "ラザニア", - "ユドーフ", - "ニンジン", - "カイワレ", - "ボルシチ", - "ハクサイ", - "キャラメル", - "ワタアメ", - ] - ), - "MTV" => Table.new( - "動機決定表", - "1D10", - [ - "金。お宝の臭いがした。", - "正義。破界の塔は災いのもと。絶たねばならない。", - "友情。この破界の塔のせいで友人が困っている。助けなくちゃ。", - "探究心。破界の塔のことをもっと知りたい。", - "戦闘狂。もっと戦いたい。", - "暇つぶし。退屈な日常を忘れたい。", - "自殺願望。なんかもう死にたい。", - "冒険家。ワクワクしたい。", - "山男。シティが肌に合わない。", - "特に動機らしい動機はない。", - ] - ), - "HIT" => Table.new( - "部位決定チャート", - "1D10", - [ - "コックピット", - "エンジン", - "フレーム", - "フレーム", - "フレーム", - "フレーム", - "ライトアーム", - "レフトアーム", - "ライトレッグ", - "レフトレッグ", - ] - ), - "GCC" => Table.new( - "ガラコ改造チャート表", - "1D10", - [ - "【命中+】価格+200。【操作性】+1。[不安定]1。", - "【回避+】価格+200。【機動性】+1。[不安定]1。", - "【視界+】価格+200。【視認性】+2。[不安定]1。", - "【移動+】価格+100。【移動力】+1。", - "【火力+】価格+200。その部位に装着した武器の火力を常に+2する。", - "【部位装甲+】価格+100。【部位装甲】+2。", - "【限界重量+】価格+100。【限界重量】+1000。", - "【安定性+】価格+50。[不安定]-1。", - "【スロット+】価格+500。【スロット】+1。", - "【弱体無効】価格+500。このパーツへの部位ダメージによる[弱体]の効果を無視する。", - ] - ), - "WCC" => Table.new( - "武器改造チャート表", - "1D10", - [ - "【命中+】価格+200。【操作性】+1。", - "【火力+】価格+200。【火力】+2。", - "【射程】価格+200。【射程】+3。「射程:近接」の場合、「射程:3 or 近接」となる(攻撃する度にどちらかを選ぶ)。", - "【範囲+】価格+200。1シーンにつき1回、この武器の目標を「範囲2」に変更してもよい(フリーアクション)。もともと範囲攻撃できる武器の場合は、「範囲n+1」にできる(1シーン1回、フリーアクション)。", - "【部位変更】価格+200。装着できる部位がランダムに追加される。部位決定チャート(『GHT』p21)を使用して決めること。", - "【部位装甲+】価格+100。装着した部位の【部位装甲】+2。", - "【精度+】価格+100。この武器を使って狙い撃ちをする場合、命中判定に+1。", - "【装飾+】価格+500。特に効果はないが、売却した時の金額が上昇する。", - "【幸運+】価格+500。この武器による命中判定の出目が1だった場合、判定を振り直しても良い(1シーン1回まで)。", - "【回数無限】価格+500。武器の使用回数制限がなくなる。", - ] - ), - "EVC" => Table.new( - "イベントチャート表", - "1D10", - [ - "【クリーチャー】スタートル(『GTD』p30)が1d10+3体現れる。戦闘開始。", - "【ビット】コーンノーズ(『GTD』p23)が1d10+3体現れる。戦闘開始。", - "【ノーマッド】ノーマッド族のランドクローラーと遭遇する。このシーンはノーマッドからアイテムを購入しても良い。ノーマッド族は天蓋都市で購入できるすべてのアイテムを販売している(ただし金額は20%増し)。", - "【ピグマー族】君達の目的地方面から、ボロボロになったピグマー族のNPCが歩いてくる。NPCに何があったのかはGMが決めよ。ピグマー族を天蓋都市まで送った場合、謝礼として200クレジットを受け取ることが出来る。NPCは重量50のアイテムとして扱う。", - "【ビット】ダスクウォッチ(『GTD』p23)が1d10+3体現れる。戦闘開始。", - "【異常気象】嵐、竜巻、豪雨など、異常な気象によって行動を阻害される。PCのうち代表者1名が【視認】10の判定を行うこと。失敗した場合、次のシーンはスポットを移動できない。現在のスポットに留まることになる。", - "【クリーチャー】ナグ(『GTD』p31)が1d10+4体現れる。戦闘開始。", - "【ビット】ランオーバー(『GTD』p25)が3体現れる。戦闘開始。", - "【猛毒の霧】付近に毒の霧が立ち込める。全てのキャラクターは毒によって1d10のHPダメージを受ける。", - "【最悪の敵】ズルワーン(『GTD』p29)が1体現れる。戦闘開始。", - ] - ), - "BSD" => Table.new( - "戦闘開始距離", - "1D10", - [ - "3マス", - "3マス", - "6マス", - "6マス", - "9マス", - "9マス", - "12マス", - "12マス", - "15マス", - "15マス", - ] - ), - 'IDI' => RangeTable.new( - "個性表", - "1D100", - [ - [1..5, '〈近接武器熟練〉 近接攻撃の火力+1。'], - [6..10, '〈遠隔武器熟練〉 遠隔攻撃の火力+1。'], - [11..15, '〈天才〉 【技術】+1。'], - [16..20, '〈頑強〉 【身体】+1。'], - [21..25, '〈早業〉 【速度】+1。'], - [26..30, '〈スイフトフット〉 【移動力】+1。'], - [31..35, '〈超反応〉 行動判定値+2。'], - [36..40, '〈警戒心〉 罠を発見するための判定に+2。'], - [41..45, '〈解除屋〉 罠を解除するための判定に+2。'], - [46..50, '〈タフガイ〉 最大HP+5。'], - [51, '〈踏み込み〉 キミが使用する近接武器のデータを「射程:2」に変更する。'], - [52, '〈不動〉 キミは強制移動の効果を受けない。'], - [53, '〈ペイローダー〉 ガラコの【限界重量】+2000。'], - [54, '〈魅力〉 キミがHPを回復するアイテム、もしくは超能力の目標になった時、キミのHPを追加で1点回復する。'], - [55, '〈ダブルタップ〉 キミのターン開始時に使用。このターンの間、キミは追加で1回の遠隔攻撃を行うことができる。'], - [56, '〈薙ぎ払い〉 キミのターン開始時に使用。このターンの間、キミが行う近接攻撃の目標を「周囲1マス以内にいるすべての敵」に変更する。'], - [57, '〈武器落とし〉 キミは部位ひとつを指定する。目標は指定された部位に(スロットを消費して)装着している武器すべてを地面に落とす。'], - [58, '〈切り払い〉 キミが行う回避判定の直前に使用。その判定を、【機動性】ではなく【操作性】で判定してよい。ただし、キミは近接武器を装着していなければならない。'], - [59, '〈体崩しの達人〉 キミが目標のレッグに攻撃を命中させる度、その目標は【機動性】10の判定を行う。失敗した場合、目標は[伏せ]状態になる。'], - [60, '〈超分解術〉 アイテムひとつを目標にする。目標のアイテムの重量を1/4にする。ただし、そのアイテムは使用できなくなる。再度〈超分解術〉の判定に成功することで、元に戻せる(重量が元に戻り、アイテムが使用可能になる)。'], - [61, '〈即時換装〉 キミは、ガラコのパーツ換装を(ベースアクションではなく)ムーブアクションで行ってもよい。'], - [62, '〈ノックバック〉 キミが目標に5点以上の最終ダメージを与えた直後に使用。目標を1マス、任意の方向に強制移動させる。近接武器で攻撃した場合のみ使用できる。'], - [63, '〈照準〉 このターンの間、次に行う攻撃の命中判定+1。'], - [64, '〈燃料節約術〉 戦闘時以外、キミは燃料を消費しなくてよい。'], - [65, '〈追撃〉 キミの敵が、隣接するマスから離れるような移動を宣言した直後に使用。キミはその敵に対して近接攻撃を行う。近接攻撃の後、敵は移動を行うこと。'], - [66, '〈連撃〉 キミが敵の部位を[修復不能]にした直後に使用。キミは再度、その敵に対して攻撃を行う。'], - [67, '〈殺し屋〉 キミがコックピットに攻撃を命中させる度、そのガラコの操縦者は2点のHPを失う。'], - [68, '〈極大射程〉 キミが扱う遠隔武器の射程を2倍にする。'], - [69, '〈援護射撃〉 目標が回避判定を行った直後に使用。目標の回避判定の達成値-1。その後、キミは準備済みの遠隔武器ひとつの使用回数を1減らすこと。'], - [70, '〈鉄壁〉 キミがダメージを受けた直後に使用。そのダメージを無効化する。'], - [71, '〈心臓狙い〉 キミが部位狙いを行い、コックピット、もしくはエンジンに対して攻撃を行う際、命中判定+1。'], - [72, '〈四肢狙い〉 キミが部位狙いを行い、アーム、もしくはレッグに対して攻撃を行う際、命中判定+1。'], - [73, '〈窮地逆転〉 キミの判定の出目が1だった時、その出目を10に変更する。'], - [74, '〈防御重視〉 ラウンド開始時に使用。【操作性】-1。【機動性】+2。ラウンド終了時まで。'], - [75, '〈チアガール〉 目標は即座に追加のターンを得る。'], - [76, '〈毒半減〉 キミが[毒]状態になった時、毎回失うHPを1点減らす。ノーマッド族はこの個性を取得できない。'], - [77, '〈毒無効〉 キミは[毒]状態にならない。この個性はノーマッド族だけが取得できる。'], - [78, '〈生存術〉 キミは各シーン終了時、HPを減らさなくてよい。'], - [79, '〈平衡感覚〉 キミは[不安定]状態のペナルティを受けない。'], - [80, '〈不屈〉 キミのターン開始時に使用。このターンの間、キミはガラコの損傷による[弱体]の効果を受けない。'], - [81, '〈プレデターセンス〉 近接攻撃の命中判定+2。この個性はラット族だけが取得できる。'], - [82, '〈鷹の目〉 遠隔攻撃の命中判定+2。この個性はラット族だけが取得できる。'], - [83, '〈超リペア術〉 部位をひとつ選択する。目標の部位の被ダメージすべてを一時的に回復する(修復不能を除く)。回復したダメージは、シーン終了時に元に戻る(再度壊れる)。この個性はブレイン族のみが取得できる。'], - [84, '〈浮遊術〉 キミは[飛行]状態になる。シーン終了時まで。この個性はテンタクル人のみが取得できる。'], - [85, '〈瞬間移動術〉 キミは任意のマスに瞬間移動する。この個性はテンタクル人のみが取得できる。'], - [86, '〈ハイボルテージ〉 4ラウンドめ以降、キミが持つすべての武器の火力を+2する。'], - [87, '〈スライドディフェンス〉 キミが部位決定チャートを振った直後に使用。チャートの結果を+1する。'], - [88, '〈カーブアタック〉 目標が部位決定チャートを振った直後に使用。チャートの結果を-1する。'], - [89, '〈サイコショット〉 目標に[火力0]の攻撃を行う(自動命中)。(超能力)'], - [90, '〈ファイア〉 目標に[火力5]の攻撃を行う。(超能力)'], - [91, '〈アイス〉 目標に[火力3]の攻撃を行う。(超能力)'], - [92, '〈サンダー〉 目標に[火力2]の攻撃を行う。(超能力)'], - [93, '〈テレパシー〉 キミは念話によって会話することができる。(超能力)'], - [94, '〈ミラー〉 目標が超能力の使用を宣言した直後に使用。超能力の目標を使用者自身に変更する。(超能力)'], - [95, '〈バインド〉 目標のターン開始時に使用。目標の移動力-3。ターン終了時まで。(超能力)'], - [96, '〈アーマー〉 目標のすべての部位装甲+2。シーン終了時まで。(超能力)'], - [97, '〈バリア〉 目標がダメージを受けた直後に使用。ダメージを3点軽減する。(超能力)'], - [98, '〈ヒール〉 目標のHPを[1d10-4]点回復する。出目が低いとHPを失う可能性があることに注意。(超能力)'], - [99, '〈カース〉 目標が判定を行った直後に使用。その判定の達成値を-3する。'], - [100, '〈リザレクション〉 死んだ目標を生き返らせる。生き返った目標のHPは10になる。このシーンの間に死亡したキャラクターのみ目標にできる。(超能力)'], - ] - ) - }.freeze - - setPrefixes(['GR.*', '(C|E|F|A|L)DC\d+'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/GardenOrder.rb b/src/src_bcdice/diceBot/GardenOrder.rb deleted file mode 100644 index f507685be..000000000 --- a/src/src_bcdice/diceBot/GardenOrder.rb +++ /dev/null @@ -1,450 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class GardenOrder < DiceBot - # ゲームシステムのの識別子 - ID = 'GardenOrder' - - # ゲームシステム名 - NAME = 'ガーデンオーダー' - - # ゲームシステム名の読みがな - SORT_KEY = 'かあてんおおたあ' - - # ダイスボットの使い方 - HELP_MESSAGE = <= fumble_border - return "成功" if dice_value <= success_rate - - return "失敗" - end - - def look_up_damage_chart(type, damage_value) - name, table = get_damage_table_info_by_type(type) - - row = get_table_by_number(damage_value, table, nil) - return nil if row.nil? - - "負傷表:#{name}[#{damage_value}] > #{row[:damage]} | #{row[:name]} … #{row[:text]}" - end - - def get_damage_table_info_by_type(type) - data = DAMAGE_TABLE[type] - return nil if data.nil? - - return data[:name], data[:table] - end - - DAMAGE_TABLE = { - "SL" => { - :name => "切断", - :table => [ - [ 5, - {:name => "切り傷", - :text => "皮膚が切り裂かれる。", - :damage => "軽傷1"}], - [10, - {:name => "脚部負傷", - :text => "足が切り裂かれ、思わずひざまずく。", - :damage => "軽傷2/マヒ"}], - [13, - {:name => "出血", - :text => "斬り裂かれた傷から出血が続く。", - :damage => "軽傷3/DOT:軽傷1"}], - [16, - {:name => "胴部負傷", - :text => "胴部に大きな傷を受ける。", - :damage => "軽傷4"}], - [19, - {:name => "腕部負傷", - :text => "腕に大きな傷を受ける。", - :damage => "重傷1/DOT:軽傷1"}], - [22, - {:name => "腹部負傷", - :text => "腹部を深く切り裂かれる。", - :damage => "重傷2"}], - [25, - {:name => "大量出血", - :text => "傷は深く、そこから大量に出血する。", - :damage => "重傷2/DOT:軽傷2"}], - [28, - {:name => "裂傷", - :text => "治りにくい傷をつけられる。", - :damage => "重傷3"}], - [31, - {:name => "視界不良", - :text => "頭部に受けた傷から血が流れ、視界がふさがれる。", - :damage => "重傷3/スタン"}], - [34, - {:name => "胸部負傷", - :text => "胸から腰にかけて大きく切り裂かれる。", - :damage => "致命傷1"}], - [37, - {:name => "動脈切断", - :text => "動脈が切り裂かれ、噴き出るように出血する。", - :damage => "致命傷1/DOT:軽傷3"}], - [39, - {:name => "胸部切断", - :text => "傷が肺にまで達し、喀血する。", - :damage => "致命傷2"}], - [9999, - {:name => "脊髄損傷", - :text => "脊髄が損傷する。", - :damage => "致命傷2/放心、スタン、マヒ"}], - ] - }, - - "BL" => { - :name => "銃弾", - :table => [ - [ 5, - {:name => "腕部損傷", - :text => "銃弾が腕をかすめた。", - :damage => "軽傷2"}], - [10, - {:name => "腕部貫通", - :text => "銃弾が腕を貫く。痛みはあるが動作に支障はない。", - :damage => "軽傷3"}], - [13, - {:name => "胴部負傷", - :text => "胴部に銃弾をくらう。痛みで動きが鈍くなる。", - :damage => "軽傷4/スロウ:-3"}], - [16, - {:name => "肩負傷", - :text => "肩を貫かれる。骨が砕けたようだ。", - :damage => "重傷1"}], - [19, - {:name => "腹部負傷", - :text => "腹部が貫かれる。かろうじて内臓にダメージはないようだ。", - :damage => "重傷2"}], - [22, - {:name => "脚部貫通", - :text => "脚を銃弾に貫かれ、その場でひざまずく。", - :damage => "重傷2/マヒ"}], - [25, - {:name => "消化器系損傷", - :text => "胃などの消化器官にダメージを受ける。", - :damage => "重傷3"}], - [28, - {:name => "盲管銃弾", - :text => "身体に弾丸が深々と刺さる。激痛が走る。", - :damage => "重傷3/スロウ:-5"}], - [31, - {:name => "内臓損傷", - :text => "いくつかの内臓にダメージを受ける。", - :damage => "致命傷1/スタン"}], - [34, - {:name => "胴部貫通", - :text => "腹部への攻撃が貫通し、出血する。", - :damage => "致命傷1/DOT:軽傷1"}], - [37, - {:name => "胸部負傷", - :text => "銃弾で肺を貫かれる。", - :damage => "致命傷2"}], - [39, - {:name => "致命的な一撃", - :text => "銃弾が頭部に命中。ショックで意識を飛ばされる。", - :damage => "致命傷2/放心"}], - [9999, - {:name => "必殺の一撃", - :text => "銃弾が心臓の近くを貫く。動脈にダメージを受けたようだ。", - :damage => "致命傷2/DOT:重傷1"}], - ] - }, - - "IM" => { - :name => "衝撃", - :table => [ - [ 5, - {:name => "打撲", - :text => "攻撃を受けた箇所がどす黒く腫れ上がる。", - :damage => "軽傷1"}], - [10, - {:name => "転倒", - :text => "衝撃で転倒する。", - :damage => "軽傷1/マヒ"}], - [13, - {:name => "平衡感覚喪失", - :text => "衝撃で三半規管にダメージを受ける。", - :damage => "軽傷2、疲労2"}], - [16, - {:name => "ボディーブロー", - :text => "腹部に直撃。痛みが継続し、体力を奪う。", - :damage => "軽傷3/DOT:疲労3"}], - [19, - {:name => "痛打", - :text => "胴部や脚部などに打撃を受ける。", - :damage => "軽傷4/スタン"}], - [22, - {:name => "頭部痛打", - :text => "頭部にクリーンヒット。意識がもうろうとする。", - :damage => "軽傷5/放心"}], - [25, - {:name => "脚部骨折", - :text => "攻撃が足に命中し、骨折する。", - :damage => "重傷1/スロウ:-5"}], - [28, - {:name => "大転倒", - :text => "激しい衝撃によって、負傷すると共に大きく体勢を崩す。", - :damage => "重傷1/マヒ、スタン"}], - [31, - {:name => "脳震盪", - :text => "脳が大きく揺さぶられ、意識が飛びそうになる。", - :damage => "重傷2/放心"}], - [34, - {:name => "複雑骨折", - :text => "攻撃を受けた部分が大きくひしゃげ、複雑骨折したようだ。", - :damage => "重傷3/放心、スタン"}], - [37, - {:name => "頭部裂傷", - :text => "頭部に命中。皮膚が大きく裂ける。", - :damage => "致命傷1、疲労3"}], - [39, - {:name => "肋骨負傷", - :text => "折れた肋骨が肺に突き刺さり、まともに呼吸を行なうことができない。", - :damage => "致命傷1/放心、スタン"}], - [9999, - {:name => "内臓損傷", - :text => "衝撃が身体の芯まで届き、内臓がいくつか傷ついたようだ。", - :damage => "致命傷2/DOT:重傷1"}], - ] - }, - - "BR" => { - :name => "灼熱", - :table => [ - [ 5, - {:name => "火傷", - :text => "皮膚に小さな火傷を負う。", - :damage => "軽傷1"}], - [10, - {:name => "温度上昇", - :text => "熱によって、怪我だけではなく体力も奪われる。", - :damage => "軽傷2、疲労1"}], - [13, - {:name => "恐怖", - :text => "燃え上がる炎に恐怖を感じ、身体がすくんで動きが止まる。", - :damage => "軽傷3/放心"}], - [16, - {:name => "発火", - :text => "衣服や身体の一部に火が燃え移る。", - :damage => "軽傷3/DOT:軽傷1"}], - [19, - {:name => "爆発", - :text => "爆発により吹き飛ばされ、転倒する。", - :damage => "重傷1/マヒ"}], - [22, - {:name => "大火傷", - :text => "痕が残るほどの大きな火傷を負う。", - :damage => "重傷2"}], - [25, - {:name => "熱波", - :text => "火傷と強力な熱により意識がもうろうとする。", - :damage => "重傷2/スタン"}], - [28, - {:name => "大爆発", - :text => "激しい爆発で吹き飛ばされ、ダメージと共に転倒する。", - :damage => "重傷3/マヒ"}], - [31, - {:name => "大発火", - :text => "広範囲に火が燃え移る。", - :damage => "重傷3/DOT:軽傷1"}], - [34, - {:name => "炭化", - :text => "高熱のあまり、焼けた部分が炭化してしまう。", - :damage => "致命傷1"}], - [37, - {:name => "内臓火傷", - :text => "高温の空気を吸い込む、気道にも火傷を負ってしまう。", - :damage => "致命傷1/DOT:軽傷1"}], - [39, - {:name => "全身火傷", - :text => "身体の各所に深い火傷を負う。", - :damage => "致命傷2"}], - [9999, - {:name => "致命的火傷", - :text => "身体の大部分に焼けどを負う。", - :damage => "致命傷2/スタン"}], - ] - }, - - "RF" => { - :name => "冷却", - :table => [ - [ 5, - {:name => "冷気", - :text => "軽い凍傷を受ける。", - :damage => "軽傷1"}], - [10, - {:name => "霜の衣", - :text => "身体が薄い氷で覆われ、動きが鈍る。", - :damage => "軽傷1/疲労1"}], - [13, - {:name => "凍傷", - :text => "凍傷により身体が傷つけられる。", - :damage => "軽傷2"}], - [16, - {:name => "体温低下", - :text => "冷気によって体温を奪われる。", - :damage => "軽傷3/DOT:疲労1"}], - [19, - {:name => "氷の枷", - :text => "肘や膝などが氷で覆われ、動きが取りにくくなる。", - :damage => "重傷1/マヒ"}], - [22, - {:name => "大凍傷", - :text => "身体の各所に凍傷を受ける。", - :damage => "重傷1/DOT:疲労2"}], - [25, - {:name => "氷の束縛", - :text => "下半身が凍りつき、動くことができない。", - :damage => "重傷2/マヒ"}], - [28, - {:name => "視界不良", - :text => "頭部にも氷が張り、視界がふさがれる。", - :damage => "重傷2/スタン"}], - [31, - {:name => "腕部凍結", - :text => "腕が凍りづけになり、動かすことができない。", - :damage => "重傷3/放心"}], - [34, - {:name => "重度凍傷", - :text => "さらに体温が低下し、深刻な凍傷を受ける。", - :damage => "致命傷1"}], - [37, - {:name => "全身凍結", - :text => "全身が凍りづけになる。", - :damage => "致命傷1/DOT:疲労2"}], - [39, - {:name => "致命的凍傷", - :text => "身体全身に凍傷を受ける。", - :damage => "致命傷2"}], - [9999, - {:name => "氷の棺", - :text => "完全に氷に閉じ込められる。", - :damage => "致命傷2/スタン、マヒ"}], - ] - }, - - "EL" => { - :name => "電撃", - :table => [ - [ 5, - {:name => "静電気", - :text => "全身の毛が逆立つ。", - :damage => "疲労3"}], - [10, - {:name => "電熱傷", - :text => "電流によって傷つく。", - :damage => "疲労1、軽傷1"}], - [13, - {:name => "感電", - :text => "電流で傷つくと共に、身体が軽くしびれる。", - :damage => "疲労2、軽傷2"}], - [16, - {:name => "閃光", - :text => "激しい電光により、一時的に視界がふさがれる。", - :damage => "軽傷3/スタン"}], - [19, - {:name => "脚部感電", - :text => "電流により脚がしびれ、動けなくなる。", - :damage => "重傷1/マヒ"}], - [22, - {:name => "大電熱傷", - :text => "身体の各所が電流によって傷つく。", - :damage => "疲労2、重傷2"}], - [25, - {:name => "腕部負傷", - :text => "電流で腕がしびれ、動けなくなる。", - :damage => "軽傷1、重傷2/放心"}], - [28, - {:name => "大感電", - :text => "電流によって身体中がしびれ、動けなくなる。", - :damage => "重傷2/スタン、マヒ"}], - [31, - {:name => "一時心停止", - :text => "強力な電撃のショックにより、心臓がほんの一瞬だけ止まる。", - :damage => "疲労3、重傷3"}], - [34, - {:name => "大電流", - :text => "全身に電流が駆け巡る。", - :damage => "重傷3/放心、マヒ"}], - [37, - {:name => "致命電熱傷", - :text => "全身が電流によって傷つく。", - :damage => "重傷1、致命傷1"}], - [39, - {:name => "心停止", - :text => "強力な電撃のショックにより、心臓が一時的に止まる。死の淵が見える。", - :damage => "疲労3、重傷1、致命傷1"}], - [9999, - {:name => "組織炭化", - :text => "全身が電流で焼かれ、あちこちの組織が炭化する。", - :damage => "致命傷2/スタン"}], - ] - } - }.freeze -end diff --git a/src/src_bcdice/diceBot/GehennaAn.rb b/src/src_bcdice/diceBot/GehennaAn.rb deleted file mode 100644 index 60b0e605a..000000000 --- a/src/src_bcdice/diceBot/GehennaAn.rb +++ /dev/null @@ -1,128 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class GehennaAn < DiceBot - # ゲームシステムの識別子 - ID = 'GehennaAn' - - # ゲームシステム名 - NAME = 'ゲヘナ・アナスタシス' - - # ゲームシステム名の読みがな - SORT_KEY = 'けへなあなすたしす' - - # ダイスボットの使い方 - HELP_MESSAGE = <=#{Regexp.last_match(2)}[1]" } - string = string.gsub(/(\d+)GA(\d+)/) { "#{Regexp.last_match(1)}R6>=#{Regexp.last_match(2)}[1]" } - string = string.gsub(/(\d+)G(\d+)([\+\-][\+\-\d]+)/) { "#{Regexp.last_match(1)}R6#{Regexp.last_match(3)}>=#{Regexp.last_match(2)}[0]" } - string = string.gsub(/(\d+)G(\d+)/) { "#{Regexp.last_match(1)}R6>=#{Regexp.last_match(2)}[0]" } - end - - def dice_command_xRn(string, nick_e) - return checkGehenaAn(string, nick_e) - end - - def checkGehenaAn(string, nick_e) - output = '1' - - return output unless /(^|\s)S?((\d+)[rR]6([\+\-\d]+)?([>=]+(\d+))(\[(\d)\]))(\s|$)/i =~ string - - string = Regexp.last_match(2) - diceCount = Regexp.last_match(3).to_i - modText = Regexp.last_match(4) - diff = Regexp.last_match(6).to_i - mode = Regexp.last_match(8).to_i - - mod = parren_killer("(0#{modText})").to_i - - diceValue, diceText, = roll(diceCount, 6, (sortType & 1)) - - diceArray = diceText.split(/,/).collect { |i| i.to_i } - - dice_1st = "" - isLuck = true - diceValue = 0 - - # 幸運の助けチェック - diceArray.each do |i| - if dice_1st != "" - if (dice_1st != i) || (i < diff) - isLuck = false - end - else - dice_1st = i - end - - diceValue += 1 if i >= diff - end - - diceValue *= 2 if isLuck && (diceCount > 1) - - output = "#{diceValue}[#{diceText}]" - success = diceValue + mod - success = 0 if success < 0 - - failed = diceCount - diceValue - failed = 0 if failed < 0 - - if mod > 0 - output += "+#{mod}" - elsif mod < 0 - output += mod.to_s - end - - if /[^\d\[\]]+/ =~ output - output = "#{nick_e}: (#{string}) > #{output} > 成功#{success}、失敗#{failed}" - else - output = "#{nick_e}: (#{string}) > #{output}" - end - - # 連撃増加値と闘技チット - output += getAnastasisBonusText(mode, success) - - return output - end - - def getAnastasisBonusText(mode, success) - return '' if mode == 0 - - ma_bonus = ((success - 1) / 2).to_i - ma_bonus = 7 if ma_bonus > 7 - - bonus_str = '' - bonus_str += "連撃[+#{ma_bonus}]/" if ma_bonus > 0 - bonus_str += "闘技[#{getTougiBonus(success)}]" - return " > #{bonus_str}" - end - - def getTougiBonus(success) - table = [ - [ 6, '1'], - [13, '2'], - [18, '3'], - [22, '4'], - [99, '5'], - ] - - return get_table_by_number(success, table) - end -end diff --git a/src/src_bcdice/diceBot/GeishaGirlwithKatana.rb b/src/src_bcdice/diceBot/GeishaGirlwithKatana.rb deleted file mode 100644 index 15a555988..000000000 --- a/src/src_bcdice/diceBot/GeishaGirlwithKatana.rb +++ /dev/null @@ -1,119 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class GeishaGirlwithKatana < DiceBot - # ゲームシステムの識別子 - ID = 'GeishaGirlwithKatana' - - # ゲームシステム名 - NAME = 'ゲイシャ・ガール・ウィズ・カタナ' - - # ゲームシステム名の読みがな - SORT_KEY = 'けいしやかあるういすかたな' - - # ダイスボットの使い方 - HELP_MESSAGE = < "自動失敗/自分の装甲効果無しでダメージを受けてしまう", - [4, 5, 6] => "自動成功/敵の装甲を無視してダメージを与える", - [1, 1, 1] => "10倍成功 YPが10増加/10倍ダメージ YPが10増加", - [2, 2, 2] => "2倍成功/2倍ダメージ", - [3, 3, 3] => "3倍成功/3倍ダメージ", - [4, 4, 4] => "4倍成功/4倍ダメージ", - [5, 5, 5] => "5倍成功/5倍ダメージ", - [6, 6, 6] => "6倍成功/6倍ダメージ", - } - - yaku = rule[diceList] - return yaku - end - - def getDemeZorome(diceList) - deme = 0 - zorome = 0 - - if diceList[0] == diceList[1] - deme = diceList[2] - zorome = diceList[0] - elsif diceList[1] == diceList[2] - deme = diceList[0] - zorome = diceList[1] - end - - return deme, zorome - end - - def getResultTextByDice(diceList, result) - getResultText("#{diceList.join(',')} > #{result}") - end - - def getResultText(result) - "(3B6) > #{result}" - end -end diff --git a/src/src_bcdice/diceBot/GoblinSlayer.rb b/src/src_bcdice/diceBot/GoblinSlayer.rb deleted file mode 100644 index 5fcd3c2e2..000000000 --- a/src/src_bcdice/diceBot/GoblinSlayer.rb +++ /dev/null @@ -1,150 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class GoblinSlayer < DiceBot - # ゲームシステムの識別子 - ID = 'GoblinSlayer' - - # ゲームシステム名 - NAME = 'ゴブリンスレイヤーTRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'こふりんすれいやあTRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <=y - 2d6の判定を行い、達成値を出力します。 - xは基準値、yは目標値です。いずれも省略可能です。 - yが設定されている場合、大成功/成功/失敗/大失敗を自動判定します。 - 例)GS>=12 GS>10 GS(10)>14 GS+10>=15 GS10>=15 GS(10) GS+10 GS10 GS - -・祈念 MCPI(n)$m - 祈念を行います。 - nは【幸運】などによるボーナスです。この値は省略可能です。 - mは因果点の現在値です。 - 因果点の現在値を使用して祈念を行い、成功/失敗を自動判定します。 - 例)MCPI$3 MCPI(1)$4 MCPI+2$5 MCPI2$6 - -・命中判定の効力値によるボーナス DB(n) - ダメージ効力表による威力へのボーナスを自動で求めます。 - nは命中判定の効力値です。 - 例)DB(15) DB12 - -※上記コマンドの計算内で割り算を行った場合、小数点以下は切り上げされます。 - ただしダイス出目を割り算した場合、小数点以下は切り捨てされます。 - 例)入力:GS(8+3/2) 実行結果:(GS10) > 10 + 3[1,2] > 13 -   入力:2d6/2  実行結果:(2D6/2) > 3[1,2]/2 > 1 - -※MCPIでは、シークレットダイスを使用できません。 -MESSAGETEXT - - # 因果点は共有リソースなのでMCPIはシークレットダイスを無効化 - setPrefixes(['GS\(\d+\)', 'GS.*', '^MCPI.*\$\d+$', 'DB\d+']) - - def initialize - super - @fractionType = "roundUp" - end - - def rollDiceCommand(command) - case command - when /^GS/i - return getCheckResult(command) - when /^MCPI/i - return murmurChantPrayInvoke(command) - when /^DB/i - return damageBonus(command) - else - return nil - end - end - - def getCheckResult(command) - m = /^GS([-+]?\d+)?((>=?)(\d+))?$/i.match(command) - unless m - return nil - end - - basis = m[1].to_i # 基準値 - target = m[4].to_i - without_compare = m[2].nil? || target <= 0 - cmp_op = m[3] - - total, diceText, = roll(2, 6) - achievement = basis + total # 達成値 - - fumble = diceText == "1,1" - critical = diceText == "6,6" - - result = " > #{resultStr(achievement, target, cmp_op, fumble, critical)}" - if without_compare && !fumble && !critical - result = "" - end - basis_str = basis == 0 ? "" : "#{basis} + " - - return "(#{command}) > #{basis_str}#{total}[#{diceText}] > #{achievement}#{result}" - end - - def murmurChantPrayInvoke(command) - m = /^MCPI(\+?\d+)?\$(\d+)$/i.match(command) - unless m - return nil - end - - luck = m[1].to_i # 幸運 - volition = m[2].to_i # 因果点 - if volition >= 12 - return "因果点が12点以上の場合、因果点は使用できません。" - end - - total, diceText = roll(2, 6) - achievement = total + luck - - result = " > #{resultStr(achievement, volition, '>=', false, false)}" - luck_str = luck == 0 ? "" : "+#{luck}" - - return "祈念(2d6#{luck_str}) > #{total}[#{diceText}]#{luck_str} > #{achievement}#{result}, 因果点:#{volition}点 → #{volition + 1}点" - end - - def damageBonus(command) - m = /^DB(\d+)$/i.match(command) - unless m - return nil - end - - num = m[1].to_i - fmt = "命中判定の効力値によるボーナス > " - if num >= 40 - total, diceText, = roll(5, 6) - elsif num >= 30 - total, diceText, = roll(4, 6) - elsif num >= 25 - total, diceText, = roll(3, 6) - elsif num >= 20 - total, diceText, = roll(2, 6) - elsif num >= 15 - total, diceText, = roll(1, 6) - else - return fmt + "なし" - end - return fmt + "#{total}[#{diceText}] > #{total}" - end - - # 判定結果の文字列を返す - # @param [Integer] achievement 達成値 - # @param [Integer] target 目標値 - # @param [String] cmp_op 達成値と目標値を比較する比較演算子 - # @param [Boolean] fumble ファンブルかどうか - # @param [Boolean] critical クリティカルかどうか - # @return [String] - def resultStr(achievement, target, cmp_op, fumble, critical) - return '大失敗' if fumble - return '大成功' if critical - if cmp_op == ">=" - return achievement >= target ? "成功" : "失敗" - else - return achievement > target ? "成功" : "失敗" - end - end -end diff --git a/src/src_bcdice/diceBot/GoldenSkyStories.rb b/src/src_bcdice/diceBot/GoldenSkyStories.rb deleted file mode 100644 index 93dedcf17..000000000 --- a/src/src_bcdice/diceBot/GoldenSkyStories.rb +++ /dev/null @@ -1,76 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class GoldenSkyStories < DiceBot - # ゲームシステムの識別子 - ID = 'GoldenSkyStories' - - # ゲームシステム名 - NAME = 'ゆうやけこやけ' - - # ゲームシステム名の読みがな - SORT_KEY = 'ゆうやけこやけ' - - # ダイスボットの使い方 - HELP_MESSAGE = <=7 : 2D6して7以上なら成功 -MESSAGETEXT - - setPrefixes(['G.*']) - - def changeText(string) - string = string.gsub(/^(S)?G/i) { "#{Regexp.last_match(1)}2D6" } - return string - end - - def check_2D6(total, _dice_total, dice_list, cmp_op, target) - return '' if target == '?' - - if dice_list == [5, 5] - " > ゴリティカル(自動的成功)" - elsif total.send(cmp_op, target) - " > 成功" - else - " > 失敗" - end - end -end diff --git a/src/src_bcdice/diceBot/GranCrest.rb b/src/src_bcdice/diceBot/GranCrest.rb deleted file mode 100644 index b98648045..000000000 --- a/src/src_bcdice/diceBot/GranCrest.rb +++ /dev/null @@ -1,514 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class GranCrest < DiceBot - # ゲームシステムの識別子 - ID = 'GranCrest' - - # ゲームシステム名 - NAME = 'グランクレストRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'くらんくれすとRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <=19 3d6+5>=24 -・邂逅表(MT) -・感情表(-FT) - ポジティブ感情表(PFT)、ネガティブ感情表(NFT) -・国特徴表(-CT) - カテゴリー表(CT)、地形表(TCT)、産業表(ICT)、人物表(PCT) - 組織表(OCT)、拠点表(BCT)、文化表(CCT) -MESSAGETEXT - - setPrefixes([ - 'MT', - 'PFT', - 'NFT', - 'CT', - 'TCT', - 'ICT', - 'PCT', - 'OCT', - 'BCT', - 'CCT' - ]) - - def initialize - super - @sendMode = 2 - @sortType = 1 - @d66Type = 1 - @fractionType = "omit" - end - - # ゲーム別成功度判定(nD6) - def check_nD6(total, _dice_total, dice_list, cmp_op, target) - result = '' - - if dice_list.count(6) >= 2 - total += 10 - result = "(クリティカル) > #{total}" - end - - if cmp_op != :>= || target == '?' - return result - end - - if total >= target - result += " > 成功" - else - result += " > 失敗" - end - - return result - end - - alias check_2D6 check_nD6 - - def rollDiceCommand(command) - debug("rollDiceCommand command", command) - - tableName = "" - result = "" - - case command - - when "MT" - # 邂逅表 - tableName, result, number = getMeetingTableResult() - when /^.+FT$/i - # 感情表 - tableName, result, number = getFeelingTableResult(command) - - when /^.*CT$/i - # 国特徴表 - tableName, result, number = getCountryTableResult(command) - - else - debug("rollDiceCommand commandNOT matched -> command:", command) - return "" - end - - text = "#{tableName}(#{number}) > #{result}" - return text - end - - def getMeetingTableResult - tableName = "邂逅表" - table = [ - "師匠\nあなたは彼(彼女)から多くのものを学んだ。あなたにとって、彼(彼女)は師であった。", - "保護者\nあなたは彼(彼女)を兄や姉、あるいは父親のように慕っている。もちろん本当に血縁関係があってもよい。", - "恩人\nあなたは彼(彼女)に恩義があり、その恩を返したいと思っている。", - "忠誠\nあなたは彼(彼女)に忠誠を誓っている。それはあなたが望んでそうしているのか、別の事情があるのかは好きに設定すること。", - "借り\nあなたは彼(彼女)に何らかの借りがある。その借りは必ず返さねばならないものだ。", - "興味\nあなたは彼(彼女)に興味がある。善悪の問題ではない。どこかで、彼(彼女)を面白いと感じるのだ。", - "師匠\nあなたは彼(彼女)から多くのものを学んだ。あなたにとって、彼(彼女)は師であった。", - "保護者\nあなたは彼(彼女)を兄や姉、あるいは父親のように慕っている。もちろん本当に血縁関係があってもよい。", - "恩人\nあなたは彼(彼女)に恩義があり、その恩を返したいと思っている。", - "忠誠\nあなたは彼(彼女)に忠誠を誓っている。それはあなたが望んでそうしているのか、別の事情があるのかは好きに設定すること。", - "借り\nあなたは彼(彼女)に何らかの借りがある。その借りは必ず返さねばならないものだ。", - "興味\nあなたは彼(彼女)に興味がある。善悪の問題ではない。どこかで、彼(彼女)を面白いと感じるのだ。", - "家族\nあなたは彼(彼女)は家族同然の関係だ。もちろん本当に血縁関係があってもよい。", - "友人\nあなたと彼(彼女)は友人だ。共に時間を過ごし、その友情を育んできた。", - "仲間\nあなたと彼(彼女)は仲間同士だ。同じ目的、同じ志を持ち、共に協力してこれまで事に当たってきた。", - "仕事\nあなたと彼(彼女)は仕事上でのつきあいだ。仕事相手として信頼できる相手ではあるが、それ以上でもそれ以下でもない。", - "腐れ縁\nあなたと彼(彼女)は、何かにつけてよく顔を合わせる腐れ縁だ。長いつきあいと言えるだろう。", - "忘却\nあなたと彼(彼女)は、どこかで出会ったことがある。だが、それがいつ、どこだったかを思い出すことはできない。", - "家族\nあなたは彼(彼女)は家族同然の関係だ。もちろん本当に血縁関係があってもよい。", - "友人\nあなたと彼(彼女)は友人だ。共に時間を過ごし、その友情を育んできた。", - "仲間\nあなたと彼(彼女)は仲間同士だ。同じ目的、同じ志を持ち、共に協力してこれまで事に当たってきた。", - "仕事\nあなたと彼(彼女)は仕事上でのつきあいだ。仕事相手として信頼できる相手ではあるが、それ以上でもそれ以下でもない。", - "腐れ縁\nあなたと彼(彼女)は、何かにつけてよく顔を合わせる腐れ縁だ。長いつきあいと言えるだろう。", - "忘却\nあなたと彼(彼女)は、どこかで出会ったことがある。だが、それがいつ、どこだったかを思い出すことはできない。", - "慕情\nあなたは彼(彼女)を慕っている。心の底から、純粋に、それは恋愛感情と呼べるものかもしれない。", - "貸し\nあなたは彼(彼女)に貸しがある。いつか、この貸しは必ず返してもらわねばならない。", - "弟妹\nあなたは彼(彼女)を弟や妹のように思っている。もちろん本当に血縁関係があってもよい。", - "秘密\nあなたと彼(彼女)は秘密を共有している仲だ。一方的に秘密を握られているのかもしれない。", - "好敵手\nあなたと彼(彼女)は好敵手――ライバルという関係がふさわしい。いつかヤツに勝つため、あなたは研鑽を積む。", - "仇敵\n彼(彼女)はあなたの仇敵だ。いつかヤツを殺し、雪辱を果たさなければ気が済まない。", - "慕情\nあなたは彼(彼女)を慕っている。心の底から、純粋に、それは恋愛感情と呼べるものかもしれない。", - "貸し\nあなたは彼(彼女)に貸しがある。いつか、この貸しは必ず返してもらわねばならない。", - "弟妹\nあなたは彼(彼女)を弟や妹のように思っている。もちろん本当に血縁関係があってもよい。", - "秘密\nあなたと彼(彼女)は秘密を共有している仲だ。一方的に秘密を握られているのかもしれない。", - "好敵手\nあなたと彼(彼女)は好敵手――ライバルという関係がふさわしい。いつかヤツに勝つため、あなたは研鑽を積む。", - "仇敵\n彼(彼女)はあなたの仇敵だ。いつかヤツを殺し、雪辱を果たさなければ気が済まない。", - ] - - result, number = get_table_by_d66(table) - - return tableName, result, number - end - - def getFeelingTableResult(command) - debug("getFeelingTableResult command", command) - - tableName = '' - table = [] - - case command - when /^PFT$/i, /^PositiveFT$/i - tableName = "ポジティブ感情表" - table = [ - "好奇心\nあなたは彼(彼女)に好奇心を感じた。彼(彼女)はとても面白い。もっと知ってみたいと感じた。", - "憧憬\nあなたは彼(彼女)にあこがれを感じた。彼(彼女)のようになりたいと思った。その思いは今でも続いている。", - "尊敬\nあなたは彼(彼女)を尊敬している。彼(彼女)を敬い、決して下には見ないだろう。", - "同志\nあなたは彼(彼女)と同じ志を持つものだと感じている。共に道を行く仲間、もしかしたら好敵手なのかもしれない。", - "友情\nあなたは彼(彼女)に友情を感じている。彼(彼女)は得がたい友人だ。あなたを助け、そしてあなたも向こうを助けることだろう。", - "慕情\nあなたは彼(彼女)にほのかな愛情を感じている。それは恋と呼ばれるものかもしれないし、違うかもしれない。", - "好奇心\nあなたは彼(彼女)に好奇心を感じた。彼(彼女)はとても面白い。もっと知ってみたいと感じた。", - "憧憬\nあなたは彼(彼女)にあこがれを感じた。彼(彼女)のようになりたいと思った。その思いは今でも続いている。", - "尊敬\nあなたは彼(彼女)を尊敬している。彼(彼女)を敬い、決して下には見ないだろう。", - "同志\nあなたは彼(彼女)と同じ志を持つものだと感じている。共に道を行く仲間、もしかしたら好敵手なのかもしれない。", - "友情\nあなたは彼(彼女)に友情を感じている。彼(彼女)は得がたい友人だ。あなたを助け、そしてあなたも向こうを助けることだろう。", - "慕情\nあなたは彼(彼女)にほのかな愛情を感じている。それは恋と呼ばれるものかもしれないし、違うかもしれない。", - "庇護\nあなたは彼(彼女)を守ってやらねばならぬ、と感じている。あなたが彼(彼女)を苦難から救うのだ。", - "幸福感\nあなたは彼(彼女)を見ると、幸福感に包まれる。彼(彼女)がそばにいる、それがあなたにとっては幸せなのだ。", - "信頼\nあなたは彼(彼女)を信用している。その能力を、もしくは性格を、信じ、頼っている。", - "尽力\nあなたは彼(彼女)に力を尽くしたいと考えている。彼(彼女)の役に立つ、それがあなたのしたいことだ。", - "可能性\nあなたは彼(彼女)に、何らかの可能性を感じている。今はまだ未熟でも、彼(彼女)はいつか花開くだろう。", - "慈愛\nあなたは彼(彼女)に愛情を感じている。見返りなどなくとも、あなたは彼(彼女)の力となるだろう。", - "庇護\nあなたは彼(彼女)を守ってやらねばならぬ、と感じている。あなたが彼(彼女)を苦難から救うのだ。", - "幸福感\nあなたは彼(彼女)を見ると、幸福感に包まれる。彼(彼女)がそばにいる、それがあなたにとっては幸せなのだ。", - "信頼\nあなたは彼(彼女)を信用している。その能力を、もしくは性格を、信じ、頼っている。", - "尽力\nあなたは彼(彼女)に力を尽くしたいと考えている。彼(彼女)の役に立つ、それがあなたのしたいことだ。", - "可能性\nあなたは彼(彼女)に、何らかの可能性を感じている。今はまだ未熟でも、彼(彼女)はいつか花開くだろう。", - "慈愛\nあなたは彼(彼女)に愛情を感じている。見返りなどなくとも、あなたは彼(彼女)の力となるだろう。", - "かわいい\nあなたは彼(彼女)をかわいいと思っている。いつまでも愛でることができたら、それはどんなに幸せだろうか。", - "同情\nあなたは彼(彼女)に同情している。その過去か、それとも別のものか、あなたは彼(彼女)をかわいそうだと思っている。", - "連帯感\nあなたは彼(彼女)に連帯感を持っている。彼(彼女)はどこかで自分と似ていると思っている。", - "親近感\nあなたは彼(彼女)に親近感を抱いている。彼(彼女)は家族のようなものだ。そう接してもよいだろう。", - "感服\nあなたは彼(彼女)に感服している。その能力か、それとも別の事柄か、彼(彼女)をすごいと感じ、認めている。", - "誠意\nあなたは彼(彼女)に誠意を感じている。他がどうであろうとも、彼(彼女)はあなたにとってみれば誠実だ。", - "かわいい\nあなたは彼(彼女)をかわいいと思っている。いつまでも愛でることができたら、それはどんなに幸せだろうか。", - "同情\nあなたは彼(彼女)に同情している。その過去か、それとも別のものか、あなたは彼(彼女)をかわいそうだと思っている。", - "連帯感\nあなたは彼(彼女)に連帯感を持っている。彼(彼女)はどこかで自分と似ていると思っている。", - "親近感\nあなたは彼(彼女)に親近感を抱いている。彼(彼女)は家族のようなものだ。そう接してもよいだろう。", - "感服\nあなたは彼(彼女)に感服している。その能力か、それとも別の事柄か、彼(彼女)をすごいと感じ、認めている。", - "誠意\nあなたは彼(彼女)に誠意を感じている。他がどうであろうとも、彼(彼女)はあなたにとってみれば誠実だ。", - ] - when /^NFT$/i, /^NegativeFT$/i - tableName = "ネガティブ感情表" - table = [ - "憤憑\nあなたは彼(彼女)に憤憑を覚えている。性格か、その癖か、何かにあなたは怒りを覚えているのだ。", - "悲哀\nあなたは彼(彼女)に悲哀を感じている。その過去か、それとも別のものか、あなたは彼(彼女)をかわいそうだと感じている。", - "寂しさ\nあなたは彼(彼女)を見ると寂しさを覚える。もっと距離を近づけたいのか、別の理由なのか、ともあれ、どこか寂しいのだ。", - "食傷\nあなたは彼(彼女)に食傷を覚えている。口癖や考え方、あるいは別のものにうんざりしているのだ。", - "敵愾心\nあなたは彼(彼女)に敵愾心を覚えている。ここだけは彼(彼女)に負けたくないと思っているのだ。", - "不快感\nあなたは彼(彼女)に不快感を覚えている。他のところはともかく、どうしてもここだけはイヤだ、という部分があるのだ。", - "憤憑\nあなたは彼(彼女)に憤憑を覚えている。性格か、その癖か、何かにあなたは怒りを覚えているのだ。", - "悲哀\nあなたは彼(彼女)に悲哀を感じている。その過去か、それとも別のものか、あなたは彼(彼女)をかわいそうだと感じている。", - "寂しさ\nあなたは彼(彼女)を見ると寂しさを覚える。もっと距離を近づけたいのか、別の理由なのか、ともあれ、どこか寂しいのだ。", - "食傷\nあなたは彼(彼女)に食傷を覚えている。口癖や考え方、あるいは別のものにうんざりしているのだ。", - "敵愾心\nあなたは彼(彼女)に敵愾心を覚えている。ここだけは彼(彼女)に負けたくないと思っているのだ。", - "不快感\nあなたは彼(彼女)に不快感を覚えている。他のところはともかく、どうしてもここだけはイヤだ、という部分があるのだ。", - "猜疑心\nあなたは彼(彼女)に猜疑心を覚えている。なぜか、彼(彼女)のことを信じられない。どこかで疑ってしまうのだ。", - "嫌悪\nあなたは彼(彼女)のことを嫌っている。考え方なのか、癖なのか、どうしても拒否感を覚えずにはいられない。", - "隔意\nあなたは彼(彼女)とは隔たりがあると感じている。何かの分野について、向こうと自分には距離があると思っている。", - "憎悪\nあなたは彼(彼女)を憎んでいる。ここだけは許せない、という部分について、憎しみを燃やさずにはいられない。", - "偏愛\nあなたは彼(彼女)を愛している。だが、その愛はどこか偏りがある、一方通行気味のものだ。", - "疎外感\nあなたは彼(彼女)に疎外感を覚えている。なぜか仲間はずれにされているような、そんな感覚がまとわりつく。", - "猜疑心\nあなたは彼(彼女)に猜疑心を覚えている。なぜか、彼(彼女)のことを信じられない。どこかで疑ってしまうのだ。", - "嫌悪\nあなたは彼(彼女)のことを嫌っている。考え方なのか、癖なのか、どうしても拒否感を覚えずにはいられない。", - "隔意\nあなたは彼(彼女)とは隔たりがあると感じている。何かの分野について、向こうと自分には距離があると思っている。", - "憎悪\nあなたは彼(彼女)を憎んでいる。ここだけは許せない、という部分について、憎しみを燃やさずにはいられない。", - "偏愛\nあなたは彼(彼女)を愛している。だが、その愛はどこか偏りがある、一方通行気味のものだ。", - "疎外感\nあなたは彼(彼女)に疎外感を覚えている。なぜか仲間はずれにされているような、そんな感覚がまとわりつく。", - "劣等感\nあなたは彼(彼女)に劣等感を覚えている。彼(彼女)には敵わない、なぜか上に行かれる、そんなコンプレックスを持っている。", - "不安\nあなたは彼(彼女)を見ると、どこか不安を覚える。理由は無いのかもしれない、なぜかイヤな予感を覚えるのだ。", - "恐怖\nあなたは彼(彼女)を怖がっている。その能力や考え方、あるいは彼(彼女)自身ではなく、失うことを恐れているのかもしれない。", - "嫉妬\nあなたは彼(彼女)に嫉妬している。その過去や能力、あるいは環境を羨ましいと思わずにはいられない。", - "驚異\nあなたは彼(彼女)に脅威を感じている。自分にとって致命的な存在になるかもしれないと考えている。", - "侮蔑\nあなたは彼(彼女)を侮り、蔑んでいる。彼(彼女)は自分より下の存在であると思っている。", - "劣等感\nあなたは彼(彼女)に劣等感を覚えている。彼(彼女)には敵わない、なぜか上に行かれる、そんなコンプレックスを持っている。", - "不安\nあなたは彼(彼女)を見ると、どこか不安を覚える。理由は無いのかもしれない、なぜかイヤな予感を覚えるのだ。", - "恐怖\nあなたは彼(彼女)を怖がっている。その能力や考え方、あるいは彼(彼女)自身ではなく、失うことを恐れているのかもしれない。", - "嫉妬\nあなたは彼(彼女)に嫉妬している。その過去や能力、あるいは環境を羨ましいと思わずにはいられない。", - "驚異\nあなたは彼(彼女)に脅威を感じている。自分にとって致命的な存在になるかもしれないと考えている。", - "侮蔑\nあなたは彼(彼女)を侮り、蔑んでいる。彼(彼女)は自分より下の存在であると思っている。", - ] - end - - result, number = get_table_by_d66(table) - debug("getFeelingTableResult result", result) - - return tableName, result, number - end - - def getCountryTableResult(command) - debug("getCountryTableResult command", command) - - tableName = '' - table = [] - - if /^CT$/i =~ command || /^CategoryCT$/i =~ command - tableName = "国特徴・カテゴリー表" - table = [ - "地形(TCT)\n森林、山岳、河川など、その国に存在する地勢を表す。", - "産業(ICT)\n農耕が盛ん、鍛冶技術に優れるなど、その国の産業を表す。", - "人物(PCT)\n腕のよい鍛冶屋がいる、知識豊富な薬師がいるなど、その国にいる人物を表す。", - "組織(OCT)\n狩人の組合がある、キャラバンがいるなど、その国にある組織を表す。", - "拠点(BCT)\n砦や関所などの軍用拠点の他、市場や街道など、その国にある拠点を表す。", - "文化(CCT)\n食のバリエーションが多い、森に造詣が深いなどのその国の文化や風習を表す。", - ] - - result, number = get_table_by_1d6(table) - else - case command - when /^TCT$/i - tableName = "国特徴・地形表" - table = [ - "水辺\nあなたの国は大河や海洋に面しており、水運の便に優れている。\n技術+2、資金+1", - "森林\nあなたの国には大きな森がいくつもある。ただ風光明媚なだけでなく、木材資源にも恵まれている。\n森林+3", - "山岳\nあなたの国は大きな山に囲まれている。山は国にさまざまな実りをもたらしてくれる。\n鉱物+2、森林+1", - "草原\nあなたの国は見渡す限りの大草原から構成されている。馬を育てたり交易を行なうには、絶好の土地と言えるだろう。\n食料+1、馬+2", - "沼地\nあなたの国は小さな川と、それが流れ込む池や沼地から構成されている。\n食料+2、森林+1", - "荒野\nあなたの国のほとんどは荒野からなっている。野生のごつごつした荒々しさが国土の特徴だ。\n鉱物+2、馬+2、資金-1", - "水辺\nあなたの国は大河や海洋に面しており、水運の便に優れている。\n技術+2、資金+1", - "森林\nあなたの国には大きな森がいくつもある。ただ風光明媚なだけでなく、木材資源にも恵まれている。\n森林+3", - "山岳\nあなたの国は大きな山に囲まれている。山は国にさまざまな実りをもたらしてくれる。\n鉱物+2、森林+1", - "草原\nあなたの国は見渡す限りの大草原から構成されている。馬を育てたり交易を行なうには、絶好の土地と言えるだろう。\n食料+1、馬+2", - "沼地\nあなたの国は小さな川と、それが流れ込む池や沼地から構成されている。\n食料+2、森林+1", - "荒野\nあなたの国のほとんどは荒野からなっている。野生のごつごつした荒々しさが国土の特徴だ。\n鉱物+2、馬+2、資金-1", - "水辺\nあなたの国は大河や海洋に面しており、水運の便に優れている。\n技術+2、資金+1", - "森林\nあなたの国には大きな森がいくつもある。ただ風光明媚なだけでなく、木材資源にも恵まれている。\n森林+3", - "山岳\nあなたの国は大きな山に囲まれている。山は国にさまざまな実りをもたらしてくれる。\n鉱物+2、森林+1", - "草原\nあなたの国は見渡す限りの大草原から構成されている。馬を育てたり交易を行なうには、絶好の土地と言えるだろう。\n食料+1、馬+2", - "沼地\nあなたの国は小さな川と、それが流れ込む池や沼地から構成されている。\n食料+2、森林+1", - "荒野\nあなたの国のほとんどは荒野からなっている。野生のごつごつした荒々しさが国土の特徴だ。\n鉱物+2、馬+2、資金-1", - "砂漠\nあなたの国は砂漠に取り巻かれている。灼熱の昼と極寒の夜があなたたちの日常だ。\n技術+2、資金+2、森林-1", - "寒冷地\nあなたの国は雪と氷を友としている。夏は短く、冬は長い。鉛色の雲の下であなたたちは育った。\n鉱物+2、資金+1", - "熱帯雨林\nあなたの国は焦熱の地である。雨期になれば大量の雨が降り注ぎ、巨大な密林を構成する。\n食料+1、森林+2", - "火山\nあなたの国は火山地帯にある。山は火を噴き大地を揺らすが、それ故の豊かさもある。\n鉱物+3", - "諸島群\nあなたの国はいくつもの小さな島によって構成されている。交易にこれほど適した土地もないだろう。\n資金+3", - "秘境\nあなたの国は、混沌の影響によってこの世ならぬ光景を持っている。空を飛ぶ島や形を取った虹などだ。商才はGMと相談せよ。\n国資源ひとつを+3", - "砂漠\nあなたの国は砂漠に取り巻かれている。灼熱の昼と極寒の夜があなたたちの日常だ。\n技術+2、資金+2、森林-1", - "寒冷地\nあなたの国は雪と氷を友としている。夏は短く、冬は長い。鉛色の雲の下であなたたちは育った。\n鉱物+2、資金+1", - "熱帯雨林\nあなたの国は焦熱の地である。雨期になれば大量の雨が降り注ぎ、巨大な密林を構成する。\n食料+1、森林+2", - "火山\nあなたの国は火山地帯にある。山は火を噴き大地を揺らすが、それ故の豊かさもある。\n鉱物+3", - "諸島群\nあなたの国はいくつもの小さな島によって構成されている。交易にこれほど適した土地もないだろう。\n資金+3", - "秘境\nあなたの国は、混沌の影響によってこの世ならぬ光景を持っている。空を飛ぶ島や形を取った虹などだ。商才はGMと相談せよ。\n国資源ひとつを+3", - "砂漠\nあなたの国は砂漠に取り巻かれている。灼熱の昼と極寒の夜があなたたちの日常だ。\n技術+2、資金+2、森林-1", - "寒冷地\nあなたの国は雪と氷を友としている。夏は短く、冬は長い。鉛色の雲の下であなたたちは育った。\n鉱物+2、資金+1", - "熱帯雨林\nあなたの国は焦熱の地である。雨期になれば大量の雨が降り注ぎ、巨大な密林を構成する。\n食料+1、森林+2", - "火山\nあなたの国は火山地帯にある。山は火を噴き大地を揺らすが、それ故の豊かさもある。\n鉱物+3", - "諸島群\nあなたの国はいくつもの小さな島によって構成されている。交易にこれほど適した土地もないだろう。\n資金+3", - "秘境\nあなたの国は、混沌の影響によってこの世ならぬ光景を持っている。空を飛ぶ島や形を取った虹などだ。商才はGMと相談せよ。\n国資源ひとつを+3", - ] - - when /^ICT$/i - tableName = "国特徴・産業表" - table = [ - "農業\nあなたの国は農業生産力に優れている。大地の恵みが国の基だ。\n食料+3", - "手工業\nあなたの国は織物や細工物といった人間の手作業から生み出される道具作りに秀でている。\n技術+3", - "鉱業\nあなたの国は大地そのものに眠る鉱物資源が豊富なことで知られている。\n鉱物+4、森林-1", - "牧畜\nあなたの国は広大な領地を生かして、牛や馬のような牧畜産業が豊かである。\n食料+1、馬+2", - "漁業\nあなたの国は海または河川を生かした大規模な漁業で名を轟かせている。\n技術+1、食料+2", - "貿易\nあなたの国は国と国とを結びつけ、その仲立ちをして利益を得ている。\n資金+3", - "農業\nあなたの国は農業生産力に優れている。大地の恵みが国の基だ。\n食料+3", - "手工業\nあなたの国は織物や細工物といった人間の手作業から生み出される道具作りに秀でている。\n技術+3", - "鉱業\nあなたの国は大地そのものに眠る鉱物資源が豊富なことで知られている。\n鉱物+4、森林-1", - "牧畜\nあなたの国は広大な領地を活かして、牛や馬のような牧畜産業が豊かである。\n食料+1、馬+2", - "漁業\nあなたの国は海または河川を生かした大規模な漁業で名を轟かせている。\n技術+1、食料+2", - "貿易\nあなたの国は国と国とを結びつけ、その仲立ちをして利益を得ている。\n資金+3", - "農業\nあなたの国は農業生産力に優れている。大地の恵みが国の基だ。\n食料+3", - "手工業\nあなたの国は織物や細工物といった人間の手作業から生み出される道具作りに秀でている。\n技術+3", - "鉱業\nあなたの国は大地そのものに眠る鉱物資源が豊富なことで知られている。\n鉱物+4、森林-1", - "牧畜\nあなたの国は広大な領地を活かして、牛や馬のような牧畜産業が豊かである。\n食料+1、馬+2", - "漁業\nあなたの国は海または河川を生かした大規模な漁業で名を轟かせている。\n技術+1、食料+2", - "貿易\nあなたの国は国と国とを結びつけ、その仲立ちをして利益を得ている。\n資金+3", - "金融\nあなたの国は他社の金を預かり、その金を貸し付けることで富を得ている。\n資金+3", - "金属加工\nあなたの国は刀剣鍛冶や金細工といった、金属を加工して別の何かに変える産業を有している。\n技術+2、鉱物+2、森林-1", - "ガラス\nあなたの国はガラス工芸技術を保持している。列国でも稀な技術だ。\n技術+2、資金+2、森林-1", - "香辛料\nあなたの国は胡椒や唐辛子のようなスパイスの産地である。\n食料+1、資金+2", - "酒造\nあなたの国は葡萄酒や蜂蜜酒のようなアルコールの産地として知られている。\n食料+2、資金+1", - "サービス業\nあなたの国は演劇や酒場、レストランといった文化的な産業で名を馳せている。\n技術+1、資金+2", - "金融\nあなたの国は他社の金を預かり、その金を貸し付けることで富を得ている。\n資金+3", - "金属加工\nあなたの国は刀剣鍛冶や金細工といった、金属を加工して別の何かに変える産業を有している。\n技術+2、資金+2、森林-1", - "ガラス\nあなたの国はガラス工芸技術を保持している。列国でも稀な技術だ。\n技術+2、資金+2、森林-1", - "香辛料\nあなたの国は胡椒や唐辛子のようなスパイスの産地である。\n食料+1、資金+2", - "酒造\nあなたの国は葡萄酒や蜂蜜酒のようなアルコールの産地として知られている。\n食料+2、資金+1", - "サービス業\nあなたの国は演劇や酒場、レストランといった文化的な産業で名を馳せている。\n技術+1、資金+2", - "金融\nあなたの国は他社の金を預かり、その金を貸し付けることで富を得ている。\n資金+3", - "金属加工\nあなたの国は刀剣鍛冶や金細工といった、金属を加工して別の何かに変える産業を有している。\n技術+2、資金+2、森林-1", - "ガラス\nあなたの国はガラス工芸技術を保持している。列国でも稀な技術だ。\n技術+2、資金+2、森林-1", - "香辛料\nあなたの国は胡椒や唐辛子のようなスパイスの産地である。\n食料+1、資金+2", - "酒造\nあなたの国は葡萄酒や蜂蜜酒のようなアルコールの産地として知られている。\n食料+2、資金+1", - "サービス業\nあなたの国は演劇や酒場、レストランといった文化的な産業で名を馳せている。\n技術+1、資金+2", - ] - - when /^PCT$/i - tableName = "国特徴・人物表" - table = [ - "哲学者\nあなたの国には高名な哲学者がいる。あなたの国には知的な国家だと考えられている。\n技術+1、資金+2", - "科学者\nあなたの国には混沌に立ち向かう科学者(メイジではない)がおり、技術に優れている。\n技術+3", - "高名な騎士\nあなたの国には高名な騎士がおり、その武勇を慕ってさまざまな武芸者が集まってくる。\n技術+1、", - "芸能者\nあなたの国には偉大な芸術家や歌姫がおり、その人気は他国にも響いている。\n技術+1、資金+2", - "大商人\nあなたの国に居を構えている大商人の富は、一国にも匹敵する。その税収はばかにならない。\n資金+3", - "聖人\nあなたの国には聖人と呼ばれる偉大な宗教的指導者がいる。その名声は素晴らしい。\n食料+2、資金+1", - "哲学者\nあなたの国には高名な哲学者がいる。あなたの国には知的な国家だと考えられている。\n技術+1、資金+2", - "科学者\nあなたの国には混沌に立ち向かう科学者(メイジではない)がおり、技術に優れている。\n技術+3", - "高名な騎士\nあなたの国には高名な騎士がおり、その武勇を慕ってさまざまな武芸者が集まってくる。\n技術+1、", - "芸能者\nあなたの国には偉大な芸術家や歌姫がおり、その人気は他国にも響いている。\n技術+1、資金+2", - "大商人\nあなたの国に居を構えている大商人の富は、一国にも匹敵する。その税収はばかにならない。\n資金+3", - "聖人\nあなたの国には聖人と呼ばれる偉大な宗教的指導者がいる。その名声は素晴らしい。\n食料+2、資金+1", - "哲学者\nあなたの国には高名な哲学者がいる。あなたの国には知的な国家だと考えられている。\n技術+1、資金+2", - "科学者\nあなたの国には混沌に立ち向かう科学者(メイジではない)がおり、技術に優れている。\n技術+3", - "高名な騎士\nあなたの国には高名な騎士がおり、その武勇を慕ってさまざまな武芸者が集まってくる。\n技術+1、", - "芸能者\nあなたの国には偉大な芸術家や歌姫がおり、その人気は他国にも響いている。\n技術+1、資金+2", - "大商人\nあなたの国に居を構えている大商人の富は、一国にも匹敵する。その税収はばかにならない。\n資金+3", - "聖人\nあなたの国には聖人と呼ばれる偉大な宗教的指導者がいる。その名声は素晴らしい。\n食料+2、資金+1", - "森林官\nあなたの国には森林資源を管理する森林官がおり、その技術を弟子たちに分け与えている。\n森林+3", - "名工\nあなたの国には非常に優秀な鍛冶職人がおり、その技術を弟子たちに分け与えている。\n技術+2、資金+1", - "売国奴\nあなたの国には極めて油断ならない臣下がいる。大変有能だが、裏切りを考えていることは明白なのだ。\n資金+4、技術-1", - "農民指導者\nあなたの国には農民たちを指導する偉大な英雄がいる。彼は常に農民の味方だ。\n食料+3", - "亡命者\nあなたの国には他国から亡命してきた優秀な技術者がいる。その事がいずれ災厄を呼び込むかもしれない\n国資源ふたつに+2", - "かつての英雄\nあなたの国土の一部は、かつての英雄たるアーティストと融合している。彼は時折あなたに力を貸してくれる。\n食料に+1、森林+2", - "森林官\nあなたの国には森林資源を管理する森林官がおり、その技術を弟子たちに分け与えている。\n森林+3", - "名工\nあなたの国には非常に優秀な鍛冶職人がおり、その技術を弟子たちに分け与えている。\n技術+2、資金+1", - "売国奴\nあなたの国には極めて油断ならない臣下がいる。大変有能だが、裏切りを考えていることは明白なのだ。\n資金+4、技術-1", - "農民指導者\nあなたの国には農民たちを指導する偉大な英雄がいる。彼は常に農民の味方だ。\n食料+3", - "亡命者\nあなたの国には他国から亡命してきた優秀な技術者がいる。その事がいずれ災厄を呼び込むかもしれない\n国資源ふたつに+2", - "かつての英雄\nあなたの国土の一部は、かつての英雄たるアーティストと融合している。彼は時折あなたに力を貸してくれる。\n食料に+1、森林+2", - "森林官\nあなたの国には森林資源を管理する森林官がおり、その技術を弟子たちに分け与えている。\n森林+3", - "名工\nあなたの国には非常に優秀な鍛冶職人がおり、その技術を弟子たちに分け与えている。\n技術+2、資金+1", - "売国奴\nあなたの国には極めて油断ならない臣下がいる。大変有能だが、裏切りを考えていることは明白なのだ。\n資金+4、技術-1", - "農民指導者\nあなたの国には農民たちを指導する偉大な英雄がいる。彼は常に農民の味方だ。\n食料+3", - "亡命者\nあなたの国には他国から亡命してきた優秀な技術者がいる。その事がいずれ災厄を呼び込むかもしれない\n国資源ふたつに+2", - "かつての英雄\nあなたの国土の一部は、かつての英雄たるアーティストと融合している。彼は時折あなたに力を貸してくれる。\n食料に+1、森林+2", - ] - - when /^OCT$/i - tableName = "国特徴・組織表" - table = [ - "運搬業者\nあなたの国には水運や運搬など、輸送に携わる人々が多い。\n食料+3", - "職人学校\nあなたの国は技術を伝授し発展させる学校を有している。\n技術+3", - "森番\nあなたの国は森を守るための独自の警察を有している。\n森林+3", - "金掘り衆\nあなたの国はいわゆる山師を組織化しており、鉱山開発に熱心だ。\n鉱物+3", - "民会\nあなたの国は豪商や大農場主からなる議会を持ち、意見を取り入れている。\n資金+3", - "飛脚\nあなたの国は飛脚や早馬といった高速通信網が発達している。\n馬+3", - "運搬業者\nあなたの国には水運や運搬など、輸送に携わる人々が多い。\n食料+3", - "職人学校\nあなたの国は技術を伝授し発展させる学校を有している。\n技術+3", - "森番\nあなたの国は森を守るための独自の警察を有している。\n森林+3", - "金掘り衆\nあなたの国はいわゆる山師を組織化しており、鉱山開発に熱心だ。\n鉱物+3", - "民会\nあなたの国は豪商や大農場主からなる議会を持ち、意見を取り入れている。\n資金+3", - "飛脚\nあなたの国は飛脚や早馬といった高速通信網が発達している。\n馬+3", - "運搬業者\nあなたの国には水運や運搬など、輸送に携わる人々が多い。\n食料+3", - "職人学校\nあなたの国は技術を伝授し発展させる学校を有している。\n技術+3", - "森番\nあなたの国は森を守るための独自の警察を有している。\n森林+3", - "金掘り衆\nあなたの国はいわゆる山師を組織化しており、鉱山開発に熱心だ。\n鉱物+3", - "民会\nあなたの国は豪商や大農場主からなる議会を持ち、意見を取り入れている。\n資金+3", - "飛脚\nあなたの国は飛脚や早馬といった高速通信網が発達している。\n馬+3", - "放浪民\nあなたの国には、騎馬民族や放浪民といった人々が訪れることが多い。\n馬+2、資金+1", - "宗教結社\nあなたの国には巨大な宗教結社が存在する。悩んだらクレスト教団とせよ。\n技術+2、資金+1", - "学術団体\nあなたの国にはアカデミーの分校、あるいは何らかの研究施設が存在する。\n食料+1、技術+2", - "異民族\nあなたの国には主流民族とは別の異民族が発生しており、目下のところ共存している。\n技術+1、資金+2", - "難民\nあなたの国には他国の戦乱を逃れてきた難民たちが避難してきている。しかし、安価な労働力の供給源であることも確かだ。\n食料-2、技術+2、資金+3", - "犯罪結社\nあなたの国は豊かで、それゆえに犯罪結社が跳梁している。\n資金+3", - "放浪民\nあなたの国には、騎馬民族や放浪民といった人々が訪れることが多い。\n馬+2、資金+1", - "宗教結社\nあなたの国には巨大な宗教結社が存在する。悩んだらクレスト教団とせよ。\n技術+2、資金+1", - "学術団体\nあなたの国にはアカデミーの分校、あるいは何らかの研究施設が存在する。\n食料+1、技術+2", - "異民族\nあなたの国には主流民族とは別の異民族が発生しており、目下のところ共存している。\n技術+1、資金+2", - "難民\nあなたの国には他国の戦乱を逃れてきた難民たちが避難してきている。しかし、安価な労働力の供給源であることも確かだ。\n食料-2、技術+2、資金+3", - "犯罪結社\nあなたの国は豊かで、それゆえに犯罪結社が跳梁している。\n資金+3", - "放浪民\nあなたの国には、騎馬民族や放浪民といった人々が訪れることが多い。\n馬+2、資金+1", - "宗教結社\nあなたの国には巨大な宗教結社が存在する。悩んだらクレスト教団とせよ。\n技術+2、資金+1", - "学術団体\nあなたの国にはアカデミーの分校、あるいは何らかの研究施設が存在する。\n食料+1、技術+2", - "異民族\nあなたの国には主流民族とは別の異民族が発生しており、目下のところ共存している。\n技術+1、資金+2", - "難民\nあなたの国には他国の戦乱を逃れてきた難民たちが避難してきている。しかし、安価な労働力の供給源であることも確かだ。\n食料-2、技術+2、資金+3", - "犯罪結社\nあなたの国は豊かで、それゆえに犯罪結社が跳梁している。\n資金+3", - ] - - when /^BCT$/i - tableName = "国特徴・拠点表" - table = [ - "城塞\nあなたの首都はその難攻不落の防壁で知られている。\n技術+3", - "長城\nあなたの国境線は堅牢な長城で守られている。それが国境線の全域に及ぶかどうかはGMと相談せよ。\n技術+2、資金+1", - "良港\nあなたの国には誰もがうらやむ非常に安定した広い港がある。\n資金+3", - "運河\nあなたの国には巨大な運河があり、人々に流通と治水とをもたらしている。\n食料+2、技術+1", - "図書館\nあなたの国には図書館があり、膨大な知識を過去から蓄積している。\n技術+3", - "訓練所\nあなたの国には訓練所があり、兵士たちを常に鍛えることができる。\n技術+2、馬+1", - "城塞\nあなたの首都はその難攻不落の防壁で知られている。\n技術+3", - "長城\nあなたの国境線は堅牢な長城で守られている。それが国境線の全域に及ぶかどうかはGMと相談せよ。\n技術+2、資金+1", - "良港\nあなたの国には誰もがうらやむ非常に安定した広い港がある。\n資金+3", - "運河\nあなたの国には巨大な運河があり、人々に流通と治水とをもたらしている。\n食料+2、技術+1", - "図書館\nあなたの国には図書館があり、膨大な知識を過去から蓄積している。\n技術+3", - "訓練所\nあなたの国には訓練所があり、兵士たちを常に鍛えることができる。\n技術+2、馬+1", - "城塞\nあなたの首都はその難攻不落の防壁で知られている。\n技術+3", - "長城\nあなたの国境線は堅牢な長城で守られている。それが国境線の全域に及ぶかどうかはGMと相談せよ。\n技術+2、資金+1", - "良港\nあなたの国には誰もがうらやむ非常に安定した広い港がある。\n資金+3", - "運河\nあなたの国には巨大な運河があり、人々に流通と治水とをもたらしている。\n食料+2、技術+1", - "図書館\nあなたの国には図書館があり、膨大な知識を過去から蓄積している。\n技術+3", - "訓練所\nあなたの国には訓練所があり、兵士たちを常に鍛えることができる。\n技術+2、馬+1", - "下町\nあなたの国には貧しい人々が住まう下町(悪い言い方をすれば貧民街)がある。豊かではないが、そこには活気がある。\n食料+2、資金+1", - "高級住宅街\nあなたの国には豊かな人々が多く、そこに住みたいと考える人も多い。\n資金+3", - "保養地\nあなたの国には風光明媚で過ごしやすい土地がある。外国人であっても、そこで休暇を取ることを好むのだ。\n森林+1、資金+2", - "宗教的聖地\nあなたの国には、それに実際的な効果があるかどうかはともかく宗教的な聖地があり、人々を集めている。\n食料+2、森林+1", - "鉱山街\nあなたの国には鉱山があり、その鉱山で働く人たちのための酒場や学校や病院が完備されている。\n鉱物+3", - "歓楽街\nあなたの国は楽しく過ごせる酒場や劇場といったもので評判だ。人々の笑顔がさらなる富をもたらすのだ。\n食料+1、資金+2", - "下町\nあなたの国には貧しい人々が住まう下町(悪い言い方をすれば貧民街)がある。豊かではないが、そこには活気がある。\n食料+2、資金+1", - "高級住宅街\nあなたの国には豊かな人々が多く、そこに住みたいと考える人も多い。\n資金+3", - "保養地\nあなたの国には風光明媚で過ごしやすい土地がある。外国人であっても、そこで休暇を取ることを好むのだ。\n森林+1、資金+2", - "宗教的聖地\nあなたの国には、それに実際的な効果があるかどうかはともかく宗教的な聖地があり、人々を集めている。\n食料+2、森林+1", - "鉱山街\nあなたの国には鉱山があり、その鉱山で働く人たちのための酒場や学校や病院が完備されている。\n鉱物+3", - "歓楽街\nあなたの国は楽しく過ごせる酒場や劇場といったもので評判だ。人々の笑顔がさらなる富をもたらすのだ。\n食料+1、資金+2", - "下町\nあなたの国には貧しい人々が住まう下町(悪い言い方をすれば貧民街)がある。豊かではないが、そこには活気がある。\n食料+2、資金+1", - "高級住宅街\nあなたの国には豊かな人々が多く、そこに住みたいと考える人も多い。\n資金+3", - "保養地\nあなたの国には風光明媚で過ごしやすい土地がある。外国人であっても、そこで休暇を取ることを好むのだ。\n森林+1、資金+2", - "宗教的聖地\nあなたの国には、それに実際的な効果があるかどうかはともかく宗教的な聖地があり、人々を集めている。\n食料+2、森林+1", - "鉱山街\nあなたの国には鉱山があり、その鉱山で働く人たちのための酒場や学校や病院が完備されている。\n鉱物+3", - "歓楽街\nあなたの国は楽しく過ごせる酒場や劇場といったもので評判だ。人々の笑顔がさらなる富をもたらすのだ。\n食料+1、資金+2", - ] - - when /^CCT$/i - tableName = "国特徴・文化表" - table = [ - "芸術指向\nあなたの国の人々は芸術に高い価値を与えている。\n資金+3", - "享楽的\nあなたの国民は、今日を楽しく過ごすことが大切だと考えている。\n食料+1、資金+2", - "禁欲的\nあなたの国民は、道徳を重んじ、常に自分の欲望を制限することが理想的だと考えている。\n食料+4、資金-1", - "好戦的\nあなたの国民は好戦的だ。物事は剣と暴力によって解決するべきだと考えている。\n技術+1、馬+2", - "平和主義\nあなたの国民は平和を愛している。まず話し合うことが大事だと思っているのだ。\n食料+1、森林+2", - "理知的\nあなたの国民は論理性を重んじる。道理が通っているかが問題だ。\n技術+3", - "芸術指向\nあなたの国の人々は芸術に高い価値を与えている。\n資金+3", - "享楽的\nあなたの国民は、今日を楽しく過ごすことが大切だと考えている。\n食料+1、資金+2", - "禁欲的\nあなたの国民は、道徳を重んじ、常に自分の欲望を制限することが理想的だと考えている。\n食料+4、資金-1", - "好戦的\nあなたの国民は好戦的だ。物事は剣と暴力によって解決するべきだと考えている。\n技術+1、馬+2", - "平和主義\nあなたの国民は平和を愛している。まず話し合うことが大事だと思っているのだ。\n食料+1、森林+2", - "理知的\nあなたの国民は論理性を重んじる。道理が通っているかが問題だ。\n技術+3", - "芸術指向\nあなたの国の人々は芸術に高い価値を与えている。\n資金+3", - "享楽的\nあなたの国民は、今日を楽しく過ごすことが大切だと考えている。\n食料+1、資金+2", - "禁欲的\nあなたの国民は、道徳を重んじ、常に自分の欲望を制限することが理想的だと考えている。\n食料+4、資金-1", - "好戦的\nあなたの国民は好戦的だ。物事は剣と暴力によって解決するべきだと考えている。\n技術+1、馬+2", - "平和主義\nあなたの国民は平和を愛している。まず話し合うことが大事だと思っているのだ。\n食料+1、森林+2", - "理知的\nあなたの国民は論理性を重んじる。道理が通っているかが問題だ。\n技術+3", - "情念深い\nあなたの国民は感情を重視する。恩は忘れず、恨みもまた決して忘れない。\n鉱物+1、森林+2", - "礼儀重視\nあなたの国民は建前としての礼儀を重んじる。礼儀こそ平和と繁栄への道だ。\n技術+2、馬+1", - "拝金主義\nあなたの国民にとって、もっとも重要なのは金である。金がなくてどうして生きて行けよう。\n森林-1、資金+4", - "農本主義\nあなたの国では農民が国の基である。大地を耕すことが理想的なのだ。\n食料+3", - "富国強兵\nあなたの国は技術を発展させ軍隊を近代化させるべく一丸となっている。\n技術+2、馬+1", - "呑気\nあなたの国は豊かだ。人々は思い煩うことなく、日々をのんびりと楽しく生きている。\n技術-1、食料+4", - "情念深い\nあなたの国民は感情を重視する。恩は忘れず、恨みもまた決して忘れない。\n鉱物+1、森林+2", - "礼儀重視\nあなたの国民は建前としての礼儀を重んじる。礼儀こそ平和と繁栄への道だ。\n技術+2、馬+1", - "拝金主義\nあなたの国民にとって、もっとも重要なのは金である。金がなくてどうして生きて行けよう。\n森林-1、資金+4", - "農本主義\nあなたの国では農民が国の基である。大地を耕すことが理想的なのだ。\n食料+3", - "富国強兵\nあなたの国は技術を発展させ軍隊を近代化させるべく一丸となっている。\n技術+2、馬+1", - "呑気\nあなたの国は豊かだ。人々は思い煩うことなく、日々をのんびりと楽しく生きている。\n技術-1、食料+4", - "情念深い\nあなたの国民は感情を重視する。恩は忘れず、恨みもまた決して忘れない。\n鉱物+1、森林+2", - "礼儀重視\nあなたの国民は建前としての礼儀を重んじる。礼儀こそ平和と繁栄への道だ。\n技術+2、馬+1", - "拝金主義\nあなたの国民にとって、もっとも重要なのは金である。金がなくてどうして生きて行けよう。\n森林-1、資金+4", - "農本主義\nあなたの国では農民が国の基である。大地を耕すことが理想的なのだ。\n食料+3", - "富国強兵\nあなたの国は技術を発展させ軍隊を近代化させるべく一丸となっている。\n技術+2、馬+1", - "呑気\nあなたの国は豊かだ。人々は思い煩うことなく、日々をのんびりと楽しく生きている。\n技術-1、食料+4", - ] - end - - result, number = get_table_by_d66(table) - end - - debug("getCountryTableResult result", result) - - return tableName, result, number - end -end diff --git a/src/src_bcdice/diceBot/Gundog.rb b/src/src_bcdice/diceBot/Gundog.rb deleted file mode 100644 index dd3baf3de..000000000 --- a/src/src_bcdice/diceBot/Gundog.rb +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Gundog < DiceBot - # ゲームシステムの識別子 - ID = 'Gundog' - - # ゲームシステム名 - NAME = 'ガンドッグ' - - # ゲームシステム名の読みがな - SORT_KEY = 'かんとつく' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 100 - " > ファンブル" - elsif total <= 1 - " > 絶対成功(達成値1+SL)" - elsif total <= target - dig10 = (total / 10).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - dig1 = total - dig10 * 10 - dig10 = 0 if dig10 >= 10 - dig1 = 0 if dig1 >= 10 # 条件的にはあり得ない(笑 - - if dig1 <= 0 - " > クリティカル(達成値20+SL)" - else - " > 成功(達成値#{(dig10 + dig1)}+SL)" - end - else - " > 失敗" - end - end - - def isD9 - true - end -end diff --git a/src/src_bcdice/diceBot/GundogRevised.rb b/src/src_bcdice/diceBot/GundogRevised.rb deleted file mode 100644 index eb020170e..000000000 --- a/src/src_bcdice/diceBot/GundogRevised.rb +++ /dev/null @@ -1,296 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/Gundog' - -class GundogRevised < DiceBot - # ゲームシステムの識別子 - ID = 'GundogRevised' - - # ゲームシステム名 - NAME = 'ガンドッグ・リヴァイズド' - - # ゲームシステム名の読みがな - SORT_KEY = 'かんとつくりうあいすと' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 100 - " > ファンブル" - elsif total <= 1 - " > ベアリー(達成値1+SL)" - elsif total <= target - dig10 = (total / 10).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - dig1 = total - dig10 * 10 - dig10 = 0 if dig10 >= 10 - dig1 = 0 if dig1 >= 10 # 条件的にはあり得ない(笑 - - if dig1 <= 0 - " > クリティカル(達成値20+SL)" - else - " > 成功(達成値#{(dig10 + dig1)}+SL)" - end - else - " > 失敗" - end - end - - def isD9 - true - end - # ---- コピペ分、ここまで - - def rollDiceCommand(command) - string = command.upcase - - table = [] - ttype = "" - type = "" - dice = 0 - mod = 0 - - # ダメージペナルティ表 - if /(\w)DPT([\+\-\d]*)/i =~ string - ttype = 'ダメージペナルティー' - head = Regexp.last_match(1) - mod = parren_killer("(0#{Regexp.last_match(2)})").to_i if Regexp.last_match(2) - - type, table = getDamageTypeAndTable(head) - end - - # ファンブル表 - if /(\w)FT([\+\-\d]*)/i =~ string - ttype = 'ファンブル' - head = Regexp.last_match(1) - mod = parren_killer("(0#{Regexp.last_match(2)})").to_i if Regexp.last_match(2) - - type, table = getFumbleTypeAndTable(head) - end - - return '1' if type.empty? - - dice, diceText = roll(2, 10) - - dice = mod - diceArray = diceText.split(/,/).collect { |i| i.to_i } - diceArray.each do |i| - dice += i if i < 10 - end - diceOriginalText = dice - dice = 0 if dice < 0 - dice = 18 if dice > 18 - - output = "#{type}#{ttype}表[#{diceOriginalText}] > #{table[dice]}" - - return output - end - - def getDamageTypeAndTable(head) - case head - when "S" - type = '射撃' - # 射撃ダメージペナルティー表 - table = [ - '対象は[死亡]', # 0 - '[追加D]4D6/[出血]2D6/[重傷]-40%/[朦朧判定]15', # 1 - '[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]14', # 2 - '[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]13', # 3 - '[追加D]3D6/[出血]1D6/[重傷]-20%/[朦朧判定]12', # 4 - '[追加D]2D6/[出血]1D6/[重傷]-20%/[朦朧判定]11', # 5 - '[追加D]2D6/[軽傷]-20%/[朦朧判定]11', # 6 - '[追加D]2D6/[軽傷]-20%/[朦朧判定]10', # 7 - '[追加D]2D6/[軽傷]-20%/[朦朧判定]8', # 8 - '[追加D]2D6/[軽傷]-20%/[朦朧判定]6', # 9 - '[追加D]2D6/[軽傷]-10%/[朦朧判定]4', # 10 - '[追加D]2D6/[軽傷]-20%', # 11 - '[追加D]1D6/[軽傷]-20%', # 12 - '[追加D]1D6/[軽傷]-10%', # 13 - '[ショック]-20%', # 14 - '[ショック]-10%', # 15 - '[不安定]', # 16 - '手に持った武器を落とす。複数ある場合はランダム', # 17 - 'ペナルティー無し', # 18 - ] - - when "M" - type = '格闘' - # 格闘ダメージペナルティー表 - table = [ - '対象は[死亡]', # 0 - '[追加D]4D6/[出血]2D6/[重傷]-40%/[朦朧判定]15', # 1 - '[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]14', # 2 - '[追加D]3D6/[出血]1D6/[重傷]-20%/[朦朧判定]14/[不安定]', # 3 - '[追加D]2D6/[出血]1D6/[重傷]-20%/[朦朧判定]14', # 4 - '[追加D]2D6/[重傷]-20%/[朦朧判定]12/[不安定]', # 5 - '[追加D]2D6/[軽傷]-20%/[朦朧判定]11', # 6 - '[追加D]2D6/[軽傷]-20%/[朦朧判定]10', # 7 - '[追加D]2D6/[軽傷]-20%/[朦朧判定]8', # 8 - '[追加D]2D6/[軽傷]-20%/[朦朧判定]6', # 9 - '[追加D]1D6/[軽傷]-20%/[朦朧判定]6', # 10 - '[追加D]1D6/[軽傷]-10%/[朦朧判定]6', # 11 - '[追加D]1D6/[軽傷]-10%/[不安定]', # 12 - '[追加D]1D6/[軽傷]-10%', # 13 - '[ショック]-20%', # 14 - '[ショック]-10%', # 15 - '[不安定]', # 16 - '手に持った武器を落とす。複数ある場合はランダム', # 17 - 'ペナルティー無し', # 18 - ] - - when "V" - type = '車両' - # 車両ダメージペナルティー表 - table = [ - '[クラッシュ]する。[チェイス]から除外', # 0 - '[車両D]4D6/[乗員D]3D6/[操作性]-40%/[スピン判定]', # 1 - '[車両D]3D6/[乗員D]3D6/[操作性]-30%/[スピン判定]', # 2 - '[乗員D]3D6/[操作性]-20%/[スピン判定]', # 3 - '[乗員D]3D6/[操作性]-20%/[スピン判定]', # 4 - '[乗員D]3D6/[操作性]-10%/[スピン判定]', # 5 - '[乗員D]3D6/[操作性]-10%/[スピン判定]', # 6 - '[乗員D]2D6/[スピード]-2/[スピン判定]', # 7 - '[乗員D]2D6/[スピード]-2/[スピン判定]', # 8 - '[乗員D]2D6/[操縦判定]-20%/[スピン判定]', # 9 - '[乗員D]2D6/[操縦判定]-20%/[スピン判定]', # 10 - '[乗員D]2D6/[操縦判定]-20%', # 11 - '[乗員D]2D6/[操縦判定]-20%', # 12 - '[乗員D]1D6/[操縦判定]-20%', # 13 - '[乗員D]1D6/[操縦判定]-10%', # 14 - '攻撃が乗員をかすめる。ランダムな乗員1人に[ショック]-20%', # 15 - '攻撃が乗員に当たりかける。ランダムな乗員1人に[ショック]-10%', # 16 - '車両が蛇行。乗員全員は〈運動〉判定。失敗で[不安定]', # 17 - 'ペナルティー無し', # 18 - ] - - when "G" - type = '汎用' - # 汎用ダメージペナルティー表 - table = [ - '対象は[死亡]', # 0 - '[追加D]4D6/[出血]2D6/[重傷]-40%/[朦朧判定]15', # 1 - '[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]14', # 2 - '[追加D]2D6/[出血]1D6/[重傷]-30%/[朦朧判定]13/[不安定]', # 3 - '[追加D]2D6/[出血]1D6/[重傷]-30%/[朦朧判定]12', # 4 - '[追加D]2D6/[重傷]-20%/[朦朧判定]12/[不安定]', # 5 - '[追加D]1D6/[重傷]-20%/[朦朧判定]11', # 6 - '[追加D]1D6/[軽傷]-30%/[朦朧判定]10', # 7 - '[追加D]1D6/[軽傷]-30%/[朦朧判定]8', # 8 - '[追加D]1D6/[軽傷]-30%/[朦朧判定]6', # 9 - '[追加D]1D6/[軽傷]-20%/[朦朧判定]6', # 10 - '[軽傷]-20%/[朦朧判定]6', # 11 - '[軽傷]-20%/[不安定]', # 12 - '[軽傷]-20%', # 13 - '[軽傷]-10%', # 14 - '[ショック]-20%', # 15 - '[ショック]-10%', # 16 - '[不安定]', # 17 - 'ペナルティー無し', # 18 - ] - else - head = "S" # 間違ったら射撃扱い - type, table = getDamageTypeAndTable(head) - end - - return type, table - end - - def getFumbleTypeAndTable(head) - case head - when "S" - type = '射撃' - # 射撃ファンブル表 - table = [ - '銃器が暴発、自分に命中。[貫通D]。武装喪失', # 0 - '銃器が暴発、自分に命中。[非貫通D]。武装喪失', # 1 - '誤射。射線に最も近い味方に命中。[貫通D]', # 2 - '誤射。射線に最も近い味方に命中。[非貫通D]', # 3 - '銃器が完全に故障。直せない', # 4 - '故障。30分かけて〈メカニック〉判定に成功するまで使用不可。', # 5 - '故障。〈メカニック〉-20%の判定に成功するまで使用不可。', # 6 - '故障。〈メカニック〉判定に成功するまで射撃不可', # 7 - '作動不良。[アイテム使用]を2回行って修理するまで射撃不可', # 8 - '作動不良。[アイテム使用]を行って修理するまで射撃不可', # 9 - '足がもつれて倒れる。[転倒]', # 10 - '無理な射撃姿勢で腕を痛める。[軽傷]-20%', # 11 - '無理な射撃姿勢でどこかの筋を痛める。[軽傷]-10%', # 12 - '武装を落とす。スリング(肩ひも)も切れる', # 13 - '武装を落とす。スリング(肩ひも)があれば落とさない', # 14 - '排莢された薬莢が服の中に。[ショック]-20%', # 15 - '排莢された薬莢が顔に当たる。[ショック]-10%', # 16 - '薬莢を踏んで態勢を崩す。[不安定]', # 17 - 'ペナルティー無し', # 18 - ] - when "M" - type = '格闘' - # 格闘ファンブル表 - table = [ - '自分に命中。[貫通D]', # 0 - '自分に命中。[非貫通D]', # 1 - '最も近い味方(射程内にいなければ自分)に[貫通D]', # 2 - '最も近い味方(射程内にいなければ自分)に[非貫通D]', # 3 - '頭を強く打ちつける。[朦朧]', # 4 - '武装が壊れる。直せない。[格闘タイプ]なら[重傷]-20%', # 5 - '武装がすっぽ抜ける。グレネードの誤差で落下先を決定', # 6 - '武装が損傷。30分かけて〈手先〉判定に成功するまで使用不可。[格闘タイプ]なら[重傷]-10%', # 7 - '武装がガタつく。〈手先〉判定([格闘タイプ]なら〈強靭〉)に成功するまで使用不可。', # 8 - '武装に違和感。[アイテム使用]を行って調整するまで、命中率-20%', # 9 - '足がもつれる。[転倒]', # 10 - '足がつる。2[ラウンド]の間、移動距離1/2', # 11 - '無理な体勢で腕(あるいは脚)を痛める。[軽傷]-20%', # 12 - '無理な体勢でどこかの筋を痛める。[軽傷]-10%', # 13 - '武装を落とす', # 14 - '武装で自分が負傷。[ショック]-20%', # 15 - '武装の扱いを間違える。[ショック]-10%', # 16 - '攻撃を避けられて体勢を崩す。[不安定]', # 17 - 'ペナルティー無し', # 18 - ] - when "T" - type = '投擲' - # 投擲ファンブル表 - table = [ - '勢いをつけすぎて転倒し、頭を打つ。[気絶]', # 0 - '自分に命中。(手榴弾なら自分の足元に落ちる)[貫通D]', # 1 - '自分に命中。(手榴弾なら自分の足元に落ちる)[非貫通D]', # 2 - '暴投。射線に最も近い味方に命中。[貫通D]。手榴弾なら新たな中心点からさらに誤差が生じる', # 3 - '暴投。射線に最も近い味方に命中。[非貫通D]。手榴弾なら新たな中心点からさらに誤差が生じる', # 4 - '頭を強く打ちつける。[朦朧]', # 5 - '肩の筋肉断裂。この腕を使う判定に、[重傷]-20%', # 6 - 'ヒジの筋肉断裂。この腕を使う判定に、[重傷]-10%', # 7 - '肩の筋をひどく痛める。〈医療〉判定に成功するまで、この腕を使う判定に-20%', # 8 - '肩の筋を痛める。[行動]を使って休めるまで、この腕を使う判定に-20%', # 9 - '腰を痛める。[軽傷]-30%', # 10 - '足がもつれて倒れる。[転倒]', # 11 - '足がつる。2[ラウンド]の間、移動距離1/2', # 12 - '無理な投擲体勢で腕(あるいは脚)を痛める。[軽傷]-20%', # 13 - '無理な投擲体勢でどこかの筋を痛める。[軽傷]-10%', # 14 - '肩に違和感。[ショック]-20%', # 15 - 'ヒジに違和感。[ショック]-10%', # 16 - 'つまずいて姿勢を崩す。[不安定]', # 17 - 'ペナルティー無し', # 18 - ] - else - head = "S" # 間違ったら射撃扱い - type, table = getFumbleTypeAndTable(head) - end - - return type, table - end -end diff --git a/src/src_bcdice/diceBot/GundogZero.rb b/src/src_bcdice/diceBot/GundogZero.rb deleted file mode 100644 index 9c5742803..000000000 --- a/src/src_bcdice/diceBot/GundogZero.rb +++ /dev/null @@ -1,259 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/Gundog' - -class GundogZero < Gundog - # ゲームシステムの識別子 - ID = 'GundogZero' - - # ゲームシステム名 - NAME = 'ガンドッグゼロ' - - # ゲームシステム名の読みがな - SORT_KEY = 'かんとつくせろ' - - # ダイスボットの使い方 - HELP_MESSAGE = < 18 - - output = "#{type}#{ttype}表[#{diceOriginalText}] > #{table[dice]}" - - return output - end - - def getDamageTypeAndTable(head) - case head - when "S" - type = '射撃' - # 射撃ダメージペナルティー表 - table = [ - '対象は[死亡]', # 0 - '[追加D]4D6/[出血]2D6/[重傷]-30%/[朦朧判定]15', # 1 - '[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]14', # 2 - '[追加D]3D6/[出血]2D6/[重傷]-20%/[朦朧判定]14', # 3 - '[追加D]3D6/[出血]1D6/[重傷]-20%/[朦朧判定]12', # 4 - '[追加D]2D6/[出血]1D6/[重傷]-10%/[朦朧判定]12', # 5 - '[追加D]2D6/[軽傷]-20%/[朦朧判定]10', # 6 - '[追加D]2D6/[軽傷]-10%/[朦朧判定]10', # 7 - '[追加D]2D6/[軽傷]-20%/[朦朧判定]8', # 8 - '[追加D]2D6/[軽傷]-20%/[朦朧判定]6', # 9 - '[追加D]2D6/[軽傷]-10%/[朦朧判定]4', # 10 - '[追加D]1D6/[軽傷]-20%', # 11 - '[追加D]1D6/[軽傷]-20%', # 12 - '[追加D]1D6/[軽傷]-10%', # 13 - '[軽傷]-20%', # 14 - '[軽傷]-10%', # 15 - '[軽傷]-10%', # 16 - '手に持った武器を落とす', # 17 - 'ペナルティー無し', # 18 - ] - - when "M" - type = '格闘' - # 格闘ダメージペナルティー表 - table = [ - '対象は[死亡]', # 0 - '[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]15', # 1 - '[追加D]2D6/[出血]2D6/[重傷]-30%/[朦朧判定]14', # 2 - '[追加D]2D6/[出血]1D6/[重傷]-20%/[朦朧判定]14', # 3 - '[追加D]3D6/[出血]1D6/[重傷]-10%/[朦朧判定]12', # 4 - '[追加D]2D6/[軽傷]-20%/[朦朧判定]12', # 5 - '[追加D]2D6/[軽傷]-10%/[朦朧判定]12', # 6 - '[追加D]2D6/[軽傷]-10%/[朦朧判定]10', # 7 - '[追加D]1D6/[軽傷]-20%/[朦朧判定]8', # 8 - '[追加D]1D6/[軽傷]-10%/[朦朧判定]8', # 9 - '[追加D]1D6/[軽傷]-10%/[朦朧判定]6', # 10 - '[軽傷]-20%/[朦朧判定]6', # 11 - '[軽傷]-10%/[朦朧判定]6', # 12 - '[軽傷]-10%/[朦朧判定]4', # 13 - '[軽傷]-20%', # 14 - '[軽傷]-10%', # 15 - '[軽傷]-10%', # 16 - '手に持った武器を落とす', # 17 - 'ペナルティー無し', # 18 - ] - - when "V" - type = '車両' - # 車両ダメージペナルティー表 - table = [ - '[クラッシュ]する。[チェイス]から除外', # 0 - '[乗員D]3D6/[操縦性]-20%/[スピン判定]', # 1 - '[乗員D]3D6/[操縦性]-20%/[スピン判定]', # 2 - '[乗員D]2D6/[操縦性]-10%/[スピン判定]', # 3 - '[乗員D]2D6/[操縦性]-10%/[スピン判定]', # 4 - '[乗員D]3D6/[スピード]-2/[スピン判定]', # 5 - '[乗員D]3D6/[スピード]-2/[スピン判定]', # 6 - '[乗員D]2D6/[スピード]-1/[スピン判定]', # 7 - '[乗員D]2D6/[スピード]-1/[スピン判定]', # 8 - '[乗員D]2D6/[操縦判定]-20%', # 9 - '[乗員D]2D6/[操縦判定]-20%', # 10 - '[乗員D]1D6/[操縦判定]-10%', # 11 - '[乗員D]1D6/[操縦判定]-10%', # 12 - '[スピン判定]', # 13 - '[スピン判定]', # 14 - '乗員に[ショック]-20%', # 15 - '乗員に[ショック]-10%', # 16 - '乗員に[ショック]-10%', # 17 - 'ペナルティー無し', # 18 - ] - - when "G" - type = '汎用' - # 汎用ダメージペナルティー表 - table = [ - '対象は[死亡]', # 0 - '[追加D]4D6/[出血]2D6/[重傷]-30%/[朦朧判定]18', # 1 - '[追加D]4D6/[出血]2D6/[重傷]-30%/[朦朧判定]16', # 2 - '[追加D]3D6/[出血]2D6/[重傷]-20%/[朦朧判定]14', # 3 - '[追加D]3D6/[出血]2D6/[重傷]-20%/[朦朧判定]14', # 4 - '[追加D]3D6/[出血]1D6/[重傷]-10%/[朦朧判定]12', # 5 - '[追加D]2D6/[出血]1D6/[重傷]-10%/[朦朧判定]12', # 6 - '[追加D]2D6/[軽傷]-30%/[朦朧判定]12', # 7 - '[追加D]2D6/[軽傷]-30%/[朦朧判定]10', # 8 - '[追加D]2D6/[軽傷]-30%/[朦朧判定]8', # 9 - '[追加D]2D6/[軽傷]-20%/[朦朧判定]8', # 10 - '[追加D]2D6/[軽傷]-20%/[朦朧判定]6', # 11 - '[追加D]2D6/[軽傷]-10%/[朦朧判定]6', # 12 - '[追加D]1D6/[軽傷]-20%/[朦朧判定]4', # 13 - '[追加D]1D6/[軽傷]-20%', # 14 - '[追加D]1D6/[軽傷]-10%', # 15 - '[軽傷]-20%', # 16 - '[軽傷]-10%', # 17 - 'ペナルティー無し', # 18 - ] - else - head = "S" # 間違ったら射撃扱い - type, table = getDamageTypeAndTable(head) - end - - return type, table - end - - def getFumbleTypeAndTable(head) - case head - when "S" - type = '射撃' - # 射撃ファンブル表 - table = [ - '銃器が暴発、自分に命中。[貫通D]', # 0 - '銃器が暴発、自分に命中。[非貫通D]', # 1 - '誤射。ランダムに味方に命中。[貫通D]', # 2 - '誤射。ランダムに味方に命中。[非貫通D]', # 3 - '銃器が完全に故障', # 4 - '銃器が完全に故障', # 5 - '故障。〈メカニック〉判定に成功するまで射撃不可', # 6 - '故障。〈メカニック〉判定に成功するまで射撃不可', # 7 - '作動不良。[アイテム使用]を2回行って修理するまで射撃不可', # 8 - '作動不良。[アイテム使用]を2回行って修理するまで射撃不可', # 9 - '作動不良。[アイテム使用]を行って修理するまで射撃不可', # 10 - '作動不良。[アイテム使用]を行って修理するまで射撃不可', # 11 - '姿勢を崩す。[不安定]', # 12 - '姿勢を崩す。[不安定]', # 13 - '姿勢を崩す。[ショック]-20%', # 14 - '姿勢を崩す。[ショック]-20%', # 15 - '姿勢を崩す。[ショック]-10%', # 16 - '姿勢を崩す。[ショック]-10%', # 17 - 'ペナルティー無し', # 18 - ] - when "M" - type = '格闘' - # 格闘ファンブル表 - table = [ - '避けられて[転倒]、[朦朧]状態', # 0 - 'ランダムに[至近距離]の味方(居なければ自分)に命中。[貫通D]', # 1 - 'ランダムに[至近距離]の味方(居なければ自分)に命中。[貫通D]', # 2 - '武器が完全に壊れる', # 3 - '武器がガタつく。〈手先〉判定に成功するまで使用不可', # 4 - '武器がガタつく。〈手先〉判定に成功するまで使用不可', # 5 - '無理な姿勢で筋を伸ばす。[軽傷]-30%', # 6 - '無理な姿勢で筋を伸ばす。[軽傷]-30%', # 7 - '無理な姿勢で筋を伸ばす。[軽傷]-20%', # 8 - '無理な姿勢で筋を伸ばす。[軽傷]-20%', # 9 - '無理な姿勢で筋を伸ばす。[軽傷]-10%', # 10 - '無理な姿勢で筋を伸ばす。[軽傷]-10%', # 11 - '姿勢を崩す。[不安定]', # 12 - '姿勢を崩す。[不安定]', # 13 - '姿勢を崩す。[ショック]-20%', # 14 - '姿勢を崩す。[ショック]-20%', # 15 - '姿勢を崩す。[ショック]-10%', # 16 - '姿勢を崩す。[ショック]-10%', # 17 - 'ペナルティー無し', # 18 - ] - when "T" - type = '投擲' - # 投擲ファンブル表 - table = [ - '[転倒]、[朦朧]状態', # 0 - '自分に命中。[貫通D]', # 1 - '自分に命中。[非貫通D]', # 2 - 'ランダムに味方(居なければ自分)に命中。[非貫通D]', # 3 - 'ランダムに味方(居なければ自分)に命中。[非貫通D]', # 4 - '武器が完全に壊れる', # 5 - '武器が完全に壊れる', # 6 - '腰を痛める。[軽傷]-30%', # 7 - '肩を痛める。[軽傷]-20%', # 8 - '肩を痛める。[軽傷]-20%', # 9 - '肘に違和感。[軽傷]-10%', # 10 - '肘に違和感。[軽傷]-10%', # 11 - '姿勢を崩す。[不安定]', # 12 - '姿勢を崩す。[不安定]', # 13 - '姿勢を崩す。[ショック]-20%', # 14 - '姿勢を崩す。[ショック]-20%', # 15 - '姿勢を崩す。[ショック]-10%', # 16 - '姿勢を崩す。[ショック]-10%', # 17 - 'ペナルティー無し', # 18 - ] - else - head = "S" # 間違ったら射撃扱い - type, table = getFumbleTypeAndTable(head) - end - - return type, table - end -end diff --git a/src/src_bcdice/diceBot/Gurps.rb b/src/src_bcdice/diceBot/Gurps.rb deleted file mode 100644 index 4749383cc..000000000 --- a/src/src_bcdice/diceBot/Gurps.rb +++ /dev/null @@ -1,399 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Gurps < DiceBot - # ゲームシステムの識別子 - ID = 'GURPS' - - # ゲームシステム名 - NAME = 'ガープス' - - # ゲームシステム名の読みがな - SORT_KEY = 'かあふす' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 16) - return crt_string - elsif (dice_total <= 5) && (target >= 15) - return crt_string - elsif dice_total <= 4 - return crt_string - end - - # ファンブル - if (target - dice_total) <= -10 - return fmb_string - elsif (dice_total >= 17) && (target <= 15) - return fmb_string - elsif dice_total >= 18 - return fmb_string - elsif dice_total >= 17 - return fail_string - end - - if total <= target - return " > 成功(成功度:#{success})" - else - return " > 失敗(失敗度:#{success})" - end - end - - def rollDiceCommand(command) - result = getRollDiceResult(command) - return result unless result.nil? - - # クリティカル・ファンブル表 - result = getCFTableResult(command) - return result unless result.nil? - - # 恐怖表 - result = getFearResult(command) - return result unless result.nil? - - # 反応表 - result = getReactResult(command) - return result unless result.nil? - - # 命中部位表 - result = getHitResult(command) - return result unless result.nil? - - return "" - end - - def getRollDiceResult(command) - return nil unless /([\d\+\-]+)\-3[dD]6?([\d\+\-]*)/ === command - - diffStr = Regexp.last_match(1) - modStr = (Regexp.last_match(2) || '') - - dice_cnt = 3 - dice_max = 6 - dice_n, dice_str = roll(dice_cnt, dice_max) - diceList = dice_str.split(',').map(&:to_i).sort - diff = getValue(diffStr, 0) - total_n = dice_n + getValue(modStr, 0) - - result = "(3D6#{modStr}<=#{diff}) > #{dice_n}[#{dice_str}]#{modStr} > #{total_n}#{check_nD6(total_n, dice_n, diceList, :<=, diff)}" - return result - end - - def getCFTableResult(command) - return nil unless /\w*(FMB|CRT)/ === command - - case command - when "CRT" - tableName = "クリティカル表" - table = [ - '体を狙っていたら、相手は気絶(回復は30分後に生命力判定)。他はダメージ3倍。', - '相手の防御点を無視。', - 'ダメージ3倍。', - 'ダメージ2倍。', - '相手は生命力判定を行い、失敗すると朦朧状態となる。', - '四肢を狙っていたら、6ターンそこが使えなくなる。通常ダメージ。', - '通常ダメージ。', - '通常ダメージ。', - '通常ダメージ。', - '四肢を狙っていたら、6ターンそこが使えなくなる。通常ダメージ。', - '相手の防御点を無視。', - '四肢を狙っていたら、そこが使えなくなる(通常ダメージ)。他は2倍ダメージ。', - '相手は武器を落とす。通常ダメージ。', - 'ダメージ2倍。', - 'ダメージ3倍。', - '体を狙っていたら、相手は気絶(回復は30分後に生命力判定)。他はダメージ3倍。', - ] - - when "HCRT" - tableName = "頭部打撃クリティカル表" - table = [ - '敵は即死する。', - '敵は意識を失う。30分ごとに生命力判定をして、成功すると意識を回復する。', - '敵は意識を失う。30分ごとに生命力判定をして、成功すると意識を回復する。', - '敵は両目を負傷する。朦朧状態になる。目が見えないので、敏捷力-10。', - '敵は片目を負傷する。朦朧状態になる。敏捷力-2。', - '敵はバランスを失う。次のターンまで、防御しかできない。', - '通常ダメージのみ。', - '通常ダメージのみ。', - '通常ダメージのみ。', - '「叩き」攻撃なら、敵は24時間のあいだ耳が聞こえなくなる。「切り」「刺し」なら、1点しかダメージを与えられないが、傷跡が残る。', - '「叩き」攻撃なら、敵は耳が聞こえなくなる。「切り」「刺し」なら、2点しかダメージを与えられないが、傷跡が残る。', - '敵は逃げ腰になって武器を落とす(両手に武器を持っていたらランダムに決定)。', - '敵は通常のダメージを受け、朦朧状態になる。', - '敵は通常のダメージを受け、朦朧状態になる。', - '敵は通常のダメージを受け、朦朧状態になる。', - '敵は通常のダメージを受け、朦朧状態になる。', - ] - - when "FMB" - tableName = "ファンブル表" - table = [ - '武器が壊れる。ただし、メイスなど固い"叩き"武器は壊れない(ふりなおし)。', - '武器が壊れる。ただし、フレイルなど固い"叩き"武器は壊れない(ふりなおし)。', - '自分の腕か足に命中(通常ダメージ)。ただし"刺し"武器や射撃ならふりなおし。', - '自分の腕か足に命中(半分ダメージ)。ただし"刺し"武器や射撃ならふりなおし。', - 'バランスを失い、次ターンは行動不可。次ターンの行動の番まで、能動防御-2。', - '使った武器が非準備状態になる。1ターンよぶんに準備行動を行わないと、準備状態にならない。', - '武器を落とす。', - '武器を落とす。', - '武器を落とす。', - '使った武器が非準備状態になる。1ターンよぶんに準備行動を行わないと、準備状態にならない。', - 'バランスを失い、次ターンは行動不可。次ターンの行動の番まで、能動防御-2。', - '前か後ろ(ランダム)に武器が1メートル飛んでいく。その場にいるキャラクターは敏捷力判定を行い、失敗するとダメージ(通常の半分)を受ける。ただし、"刺し"武器や弓矢はその場に落ちるだけ。', - '利き腕をくじいてしまう。30分間、攻撃にも防御にも使えない。', - '足をすべらせ、その場に倒れる。', - '武器が壊れる。ただし、モールなど固い"叩き"武器は壊れない(ふりなおし)。', - '武器が壊れる。ただし、金属バットなど固い"叩き"武器は壊れない(ふりなおし)。', - ] - - when "MFMB" - tableName = "呪文ファンブル表" - table = [ - '呪文が完全に失敗する。術者は1D点のダメージを受ける。', - '呪文が術者にかかる。', - '呪文が術者の仲間にかかる(対象はランダムに決定)。', - '呪文が近くの敵にかかる(対象はランダムに決定)。', - '哀れな物音があがり、硫黄のひどい匂いが立ち込める。', - '呪文が目標以外のもの(仲間、敵、品物)にかかる。対象はランダムに決定するか、おもしろくなるようにGMが決定する。', - '呪文が完全に失敗する。術者は1点のダメージを受ける。', - '呪文が完全に失敗する。術者は朦朧状態になる(立ち直るには知力判定を行う)。', - '大きな物音があがり、色とりどりの閃光が走る。', - '見せ掛けの効果があらわれるが、弱くてとても役に立たない。', - '意図した効果と逆の効果があらわれる。', - '違った目標に、意図した効果とは逆の効果があらわれる(対象はランダムに決定)。', - '何も起こらないが、術者は一時的にその呪文を忘れてしまう。思い出すまで、1週間ごとに知力判定を行う。', - '呪文がかかったように思えるが、役に立たないただの見せかけだけ。', - '呪文が完全に失敗し、術者の右腕が損なわれる。回復に1週間を要する。', - '呪文が完全に失敗する。GMから見て、術者や呪文が純粋で善良なものでなければ、悪魔(第3版文庫版P.384参照)があらわれ、術者を攻撃する。', - ] - - when "YSCRT" - tableName = "妖魔夜行スペシャルクリティカル表" - table = [ - '目(あるいは急所)に当たった!目(あるいは急所)が無ければ3倍ダメージ。', - '胴体を狙っていたら、相手は気絶(回復は30分後に生命力判定)。他は3倍ダメージ。', - '相手の防護点を無視。通常ダメージ。', - 'ダメージ3倍。', - 'ダメージ2倍', - '敵は転倒する。通常ダメージ。', - '四肢を狙っていたら、6ターンの間そこが使えなくなる。通常ダメージ。', - '通常ダメージ。', - '相手は武器を落とす。通常ダメージ。', - '相手は生命力判定を行い、失敗すると朦朧状態になる。回復判定は毎ターンはじめに行う。通常ダメージ。', - '相手の防護点を無視。通常ダメージ。', - '四肢を狙っていたら、その四肢は使えなくなる(通常ダメージ)。他は2倍ダメージ。', - '攻撃者は、目(あるいはその他の主要感覚部位)がくらんでしまう。1D-3ターン(最低1ターン)盲目状態。通常ダメージ。', - 'ダメージ2倍。', - 'ダメージ3倍。', - '胴体を狙っていたら、相手は気絶(回復は30分後に生命力判定)。他は3倍ダメージ。', - ] - - when "YSFMB" - tableName = "妖魔夜行スペシャルファンブル表" - table = [ - 'この表を2回振って、両方の結果を適用する。', - '自分に命中。通常ダメージ。防護点、吸収、反射は無視(「◯◯に無敵」の妖力は有効)。', - '自分に命中。半分ダメージ。防護点、吸収、反射は無視(「◯◯に無敵」の妖力は有効)。', - '足などが傷つき、30分のあいだ、移動手段が失われる。能動防御-4。', - '攻撃に使った部位に1D点のダメージ。防護点は無視。', - 'バランスを失い、次ターンは行動不可。次ターンの行動の番まで、能動防御-2。', - '攻撃に使った部位に1D-2点のダメージ。防護点は無視。', - 'よろけてしまう。次のターンは移動できない。', - 'バランスを失う。次のターンの行動の番まで、能動防御-2。', - '足をすべらせその場に倒れる。飛行中なら50m落下(高度が50m以下なら墜落)。', - '近くに味方(または無関係の人物)がいれば、攻撃が命中してしまう。いなければ、振り直し。', - '大きな隙ができる。接近戦なら、敵は、即座に一撃をくわえられる。能動防御は-2で可能。射撃戦なら振り直し。', - '攻撃に使った部位をくじいてしまう。30分間、攻撃にも防御にも使えない。', - '攻撃者は、目(あるいはその他の主要感覚部位)がくらんでしまう。1D-3ターン(最低1ターン)盲目状態。通常ダメージ。', - '自分に命中。半分ダメージ。防護点は無効。', - 'この表を2回振って、プレイヤーが好きな方を適用する。', - ] - - when "YFMB" - tableName = "妖術ファンブル表" - table = [ - '妖術が完全に失敗する。術者は3D点のダメージを受ける。', - '妖術が完全に失敗する。術者は1D点のダメージを受ける。', - '妖術が術者にかかる。', - '妖術が術者の仲間にかかる(誰にかかるかは、ランダムに決定する)。', - '妖術が近くの敵にかかる(誰にかかるかは、ランダムに決定する)。', - '妖術が目標以外のもの(仲間、敵、品物)にかかる。何にかかるかは、ランダムに決定するか、おもしろくなるようにGMが選ぶ。', - '妖術が発動したように見えるが、実際の効果はない。効果があったように見えても、GMがいちばん面白いと思った時に消滅させられる。', - '妖術は発動するが、威力レベルが半分になっている。', - '妖術は発動するが、威力レベルが半分になっている。さらに大きな音があがり、色とりどりの閃光が走り、悪臭(善い意図で使われたなら芳香)がたちこめる。', - '妖術が完全に失敗する。術者は朦朧状態になる(立ち直るにはターンの頭ごとに意志判定を行う)。', - '妖術は発動する。しかし制御することができない。次のターンでも、妖術を使ってしまうが、自動的にファンブルになる。', - '目標に、意図した効果と正反対の効果があらわれる。', - '何も怒らない。術者は一時的にその妖術を忘れてしまう。思い出すまで、1日ごとに知力判定を行う。', - '違った目標に、意図した効果とは正反対の効果があらわれる(どこにあらわれるかはランダムに決定)。とっさに思いつかなければ"振り直す"。', - '妖術が完全に失敗し、術者の弱点が明らかにされる。弱点がなければ振り直して良い。', - '妖術が完全に失敗する。術者は完全な行動不能におちいる。回復は反日ごとに生命力で判定を行う。', - ] - - else - return nil - end - - result, number = get_table_by_nD6(table, 3) - - return "#{tableName}(#{number}):#{result}" - end - - def getFearResult(command) - return nil unless /FEAR((\+)?\d+)?/ === command - - modify = Regexp.last_match(1).to_i - - tableName = "恐怖表" - table = [ - '1ターン朦朧状態。2ターン目に自動回復。', - '1ターン朦朧状態。2ターン目に自動回復。', - '1ターン朦朧状態。以後、毎ターン不利な修正を無視した意志判定を行い、成功すると回復。', - '1ターン朦朧状態。以後、毎ターン不利な修正を無視した意志判定を行い、成功すると回復。', - '1ターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '1ターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '2Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '思考不能。15ターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '新たな癖をひとつ植え付けられる。', - '1D点疲労。さらに1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '1D点疲労。さらに1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '新たな癖をひとつ獲得。さらに1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。', - '生命力判定を行い、失敗すると1点の負傷を受ける。さらに1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。', - '1点負傷。2D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。', - '卒倒。4D分間意識不明。1D点疲労。', - 'パニック。1D分間のあいだ、叫びながら走り回ったり、座り込んで泣きわめいたりする。以後、1分ごとに知力判定(修正なし)を行い、成功すると回復。', - '-10CPの妄想を植え付けられる。', - '-10CPの軽い恐怖症を植え付けられる。', - '肉体的な変化。髪が真白になったり、老化したりする。-15CPぶんの肉体的特徴に等しい。', - 'その恐怖に関連する軽い恐怖症を持っているならそれが強い恐怖症(CP2倍)になる。そうでなければ、-10CPぶんの精神的特徴を植え付けられる。', - '-10CPの妄想を植え付けられる。生命力判定を行い、失敗すると1点の負傷を受ける。さらに1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。', - '-10CPの軽い恐怖症を植え付けられる。生命力判定を行い、失敗すると1点の負傷を受ける。さらに1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。', - '浅い昏睡状態。30分ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。', - '昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。', - '硬直。1D日のあいだ身動きしない。その時点で生命力判定を行い、成功すると動けるようになる。失敗するとさらに1D日硬直。その間、適切な医学的処置を受けていないかぎり、初日に1点、2日目に2点、3日目に3点と生命力を失っていく。動けるようになってからも、硬直していたのと同じ日数だけ、あらゆる判定に-2の修正。', - '痙攣。1D分間地面に倒れて痙攣する。2D点疲労。また、生命力判定に失敗すると1D点負傷。これがファンブルなら生命力1点を永遠に失う。', - '発作。軽い心臓発作を起こし、地面に倒れる。2D点負傷。', - '大パニック。キャラクターは支離滅裂な行動に出る。GMが3Dを振り、目が大きければ大きいほど馬鹿げた行動を行う。その行動が終わったら知力判定を行い、成功すると我に返る。失敗すると新たな馬鹿げた行動をとる。', - '強い妄想(-15CP)を植え付けられる。', - '強い恐怖症、ないし-15CPぶんの精神的特徴を植え付けられる。', - '激しい肉体的変化。髪が真白になったり、老化したりする。-20CPぶんの肉体的特徴に等しい。', - '激しい肉体的変化。髪が真白になったり、老化したりする。-30CPぶんの肉体的特徴に等しい。', - '昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。さらに強い妄想(-15CP)を植え付けられる。', - '昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。さらに強い恐怖症、ないし-30CPぶんの精神的特徴を植え付けられる。', - '昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。さらに強い恐怖症、ないし-30CPぶんの精神的特徴を植え付けられる。知力が1点永遠に低下する。あわせて精神系の技能、呪文、超能力のレベルも低下する。', - ] - - dice, = roll(3, 6) - number = dice + modify - if number > 40 - num = 36 - else - num = number - 4 - end - result = table[num] - - return "#{tableName}(#{number}):#{result}" - end - - def getReactResult(command) - return nil unless /REACT((\+|\-)?\d*)/ === command - - modify = Regexp.last_match(1).to_i - - tableName = "反応表" - dice, = roll(3, 6) - number = dice + modify - - if number < 1 - result = "最悪" - elsif number < 4 - result = "とても悪い" - elsif number < 7 - result = "悪い" - elsif number < 10 - result = "良くない" - elsif number < 13 - result = "中立" - elsif number < 16 - result = "良い" - elsif number < 19 - result = "とても良い" - else - result = "最高" - end - - return "#{tableName}(#{number}):#{result}" - end - - def getHitResult(command) - return nil unless "HIT" === command - - tableName = "命中部位表" - table = [ - '脳', - '脳', - '頭', - '遠い腕', - '手首(左右ランダム)', - '近い腕', - '胴体', - '胴体', - '胴体', - '遠い足', - '近い足', - '近い足', - '足首(左右ランダム)', - '足首(左右ランダム)', - '重要機関(胴体の)', - '武器', - ] - result, number = get_table_by_nD6(table, 3) - - return "#{tableName}(#{number}):#{result}" - end - - def getValue(text, defaultValue) - return defaultValue if text.nil? || text.empty? - - parren_killer("(0" + text + ")").to_i - end -end diff --git a/src/src_bcdice/diceBot/GurpsFW.rb b/src/src_bcdice/diceBot/GurpsFW.rb deleted file mode 100644 index 5fbabf7b5..000000000 --- a/src/src_bcdice/diceBot/GurpsFW.rb +++ /dev/null @@ -1,2345 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -# どどんとふ用 GURPS-FW オリジナルダイスボット -# Last update 2013/11/07 - -class GurpsFW < DiceBot - # ゲームシステムの識別子 - ID = 'GurpsFW' - - # ゲームシステム名 - NAME = 'ガープスフィルトウィズ' - - # ゲームシステム名の読みがな - SORT_KEY = 'かあふすふいるとういす' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 16) - return crt_string - elsif (dice_total <= 5) && (target >= 15) - return crt_string - elsif dice_total <= 4 - return crt_string - end - - # ファンブル - if (target - dice_total) <= -10 - return fmb_string - elsif (dice_total >= 17) && (target <= 15) - return fmb_string - elsif dice_total >= 18 - return fmb_string - elsif dice_total >= 17 - return fail_string - end - - if total <= target - return " > 成功(成功度:#{success})" - else - return " > 失敗(失敗度:#{success})" - end - end - - def getCommandResult(string, nick_e) - tableName = "" - result = "" - number = 0 - - case string - - when "CRT" - tableName = "クリティカル表" - table = [ - '体を狙っていたら、相手は気絶(回復は30分後に生命力判定)。他はダメージ3倍。', - '相手の防御点を無視。', - 'ダメージ3倍。', - 'ダメージ2倍。', - '相手は生命力判定を行い、失敗すると朦朧状態となる。', - '四肢を狙っていたら、6ターンそこが使えなくなる。通常ダメージ。', - '通常ダメージ。', - '通常ダメージ。', - '通常ダメージ。', - '四肢を狙っていたら、6ターンそこが使えなくなる。通常ダメージ。', - '相手の防御点を無視。', - '四肢を狙っていたら、そこが使えなくなる(通常ダメージ)。他は2倍ダメージ。', - '相手は武器を落とす。通常ダメージ。', - 'ダメージ2倍。', - 'ダメージ3倍。', - '体を狙っていたら、相手は気絶(回復は30分後に生命力判定)。他はダメージ3倍。', - ] - result, number = get_table_by_nD6(table, 3) - - when "HCRT" - tableName = "頭部打撃クリティカル表" - table = [ - '敵は即死する', - '敵は意識を失う。30分ごとに生命力判定をして、成功すると意識を回復する。', - '敵は意識を失う。30分ごとに生命力判定をして、成功すると意識を回復する。', - '敵は両目を負傷する。朦朧状態になる。目が見えないので、敏捷力-10。', - '敵は片目を負傷する。朦朧状態になる。敏捷力-2。', - '敵はバランスを失う。次のターンまで、防御しかできない。', - '通常ダメージのみ。', - '通常ダメージのみ。', - '通常ダメージのみ。', - '「叩き」攻撃なら、敵は24時間のあいだ耳が聞こえなくなる。「切り」「刺し」なら、1点しかダメージを与えられないが、傷跡が残る。', - '「叩き」攻撃なら、敵は耳が聞こえなくなる。「切り」「刺し」なら、2点しかダメージを与えられないが、傷跡が残る。', - '敵は逃げ腰になって武器を落とす(両手に武器を持っていたらランダムに決定)。', - '敵は通常のダメージを受け、朦朧状態になる。', - '敵は通常のダメージを受け、朦朧状態になる。', - '敵は通常のダメージを受け、朦朧状態になる。', - '敵は通常のダメージを受け、朦朧状態になる。', - ] - result, number = get_table_by_nD6(table, 3) - - when "FMB" - tableName = "ファンブル表" - table = [ - '武器が壊れる。ただし、メイスなど固い"叩き"武器は壊れない(ふりなおし)。', - '武器が壊れる。ただし、フレイルなど固い"叩き"武器は壊れない(ふりなおし)。', - '自分の腕か足に命中(通常ダメージ)。ただし"刺し"武器や射撃ならふりなおし。', - '自分の腕か足に命中(半分ダメージ)。ただし"刺し"武器や射撃ならふりなおし。', - 'バランスを失い、次ターンは行動不可。次ターンの行動の番まで、能動防御-2。', - '使った武器が非準備状態になる。1ターンよぶんに準備行動を行わないと、準備状態にならない。', - '武器を落とす。', - '武器を落とす。', - '武器を落とす。', - '使った武器が非準備状態になる。1ターンよぶんに準備行動を行わないと、準備状態にならない。', - 'バランスを失い、次ターンは行動不可。次ターンの行動の番まで、能動防御-2。', - '前か後ろ(ランダム)に武器が1メートル飛んでいく。その場にいるキャラクターは敏捷力判定を行い、失敗するとダメージ(通常の半分)を受ける。ただし、"刺し"武器や弓矢はその場に落ちるだけ。', - '利き腕をくじいてしまう。30分間、攻撃にも防御にも使えない。', - '足をすべらせ、その場に倒れる。', - '武器が壊れる。ただし、モールなど固い"叩き"武器は壊れない(ふりなおし)。', - '武器が壊れる。ただし、金属バットなど固い"叩き"武器は壊れない(ふりなおし)。', - ] - result, number = get_table_by_nD6(table, 3) - - when "MFMB" - tableName = "呪文ファンブル表" - table = [ - '呪文が完全に失敗する。術者は1D点のダメージを受ける。', - '呪文が術者にかかる。', - '呪文が術者の仲間にかかる(対象はランダムに決定)。', - '呪文が近くの敵にかかる(対象はランダムに決定)。', - '哀れな物音があがり、硫黄のひどい匂いが立ち込める。', - '呪文が目標以外のもの(仲間、敵、品物)にかかる。対象はランダムに決定するか、おもしろくなるようにGMが決定する。', - '呪文が完全に失敗する。術者は1点のダメージを受ける。', - '呪文が完全に失敗する。術者は朦朧状態になる(立ち直るには知力判定を行う)。', - '大きな物音があがり、色とりどりの閃光が走る。', - '見せ掛けの効果があらわれるが、弱くてとても役に立たない。', - '意図した効果と逆の効果があらわれる。', - '違った目標に、意図した効果とは逆の効果があらわれる(対象はランダムに決定)。', - '何も起こらないが、術者は一時的にその呪文を忘れてしまう。思い出すまで、1週間ごとに知力判定を行う。', - '呪文がかかったように思えるが、役に立たないただの見せかけだけ。', - '呪文が完全に失敗し、術者の右腕が損なわれる。回復に1週間を要する。', - '呪文が完全に失敗する。GMから見て、術者や呪文が純粋で善良なものでなければ、悪魔(第3版文庫版P.384参照)があらわれ、術者を攻撃する。', - ] - result, number = get_table_by_nD6(table, 3) - - when "HIT" - tableName = "命中部位表" - table = [ - '脳', - '脳', - '頭', - '遠い腕', - '手首(左右ランダム)', - '近い腕', - '胴体', - '胴体', - '胴体', - '遠い足', - '近い足', - '近い足', - '足首(左右ランダム)', - '足首(左右ランダム)', - '重要機関(胴体の)', - '武器', - ] - result, number = get_table_by_nD6(table, 3) - - when /FEAR((\+)?\d+)?/ - modify = Regexp.last_match(1).to_i - - tableName = "恐怖表" - table = [ - '1ターン朦朧状態。2ターン目に自動回復。', - '1ターン朦朧状態。2ターン目に自動回復。', - '1ターン朦朧状態。以後、毎ターン不利な修正を無視した意志判定を行い、成功すると回復。', - '1ターン朦朧状態。以後、毎ターン不利な修正を無視した意志判定を行い、成功すると回復。', - '1ターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '1ターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '2Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '思考不能。15ターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '新たな癖をひとつ植え付けられる。', - '1D点疲労。さらに1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '1D点疲労。さらに1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '新たな癖をひとつ獲得。さらに1Dターン朦朧状態。以後、毎ターン通常の意志判定を行い、成功すると回復。', - '1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。', - '生命力判定を行い、失敗すると1点の負傷を受ける。さらに1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。', - '1点負傷。2D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。', - '卒倒。4D分間意識不明。1D点疲労。', - 'パニック。1D分間のあいだ、叫びながら走り回ったり、座り込んで泣きわめいたりする。以後、1分ごとに知力判定(修正なし)を行い、成功すると回復。', - '-10CPの妄想を植え付けられる。', - '-10CPの軽い恐怖症を植え付けられる。', - '肉体的な変化。髪が真白になったり、老化したりする。-15CPぶんの肉体的特徴に等しい。', - 'その恐怖に関連する軽い恐怖症を持っているならそれが強い恐怖症(CP2倍)になる。そうでなければ、-10CPぶんの精神的特徴を植え付けられる。', - '-10CPの妄想を植え付けられる。生命力判定を行い、失敗すると1点の負傷を受ける。さらに1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。', - '-10CPの軽い恐怖症を植え付けられる。生命力判定を行い、失敗すると1点の負傷を受ける。さらに1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。', - '浅い昏睡状態。30分ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。', - '昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。', - '硬直。1D日のあいだ身動きしない。その時点で生命力判定を行い、成功すると動けるようになる。失敗するとさらに1D日硬直。その間、適切な医学的処置を受けていないかぎり、初日に1点、2日目に2点、3日目に3点と生命力を失っていく。動けるようになってからも、硬直していたのと同じ日数だけ、あらゆる判定に-2の修正。', - '痙攣。1D分間地面に倒れて痙攣する。2D点疲労。また、生命力判定に失敗すると1D点負傷。これがファンブルなら生命力1点を永遠に失う。', - '発作。軽い心臓発作を起こし、地面に倒れる。2D点負傷。', - '大パニック。キャラクターは支離滅裂な行動に出る。GMが3Dを振り、目が大きければ大きいほど馬鹿げた行動を行う。その行動が終わったら知力判定を行い、成功すると我に返る。失敗すると新たな馬鹿げた行動をとる。', - '強い妄想(-15CP)を植え付けられる。', - '強い恐怖症、ないし-15CPぶんの精神的特徴を植え付けられる。', - '激しい肉体的変化。髪が真白になったり、老化したりする。-20CPぶんの肉体的特徴に等しい。', - '激しい肉体的変化。髪が真白になったり、老化したりする。-30CPぶんの肉体的特徴に等しい。', - '昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。さらに強い妄想(-15CP)を植え付けられる。', - '昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。さらに強い恐怖症、ないし-30CPぶんの精神的特徴を植え付けられる。', - '昏睡状態。1時間ごとに生命力判定を行い、成功すると目覚める。目覚めてから6時間はあらゆる判定に-2の修正。さらに強い恐怖症、ないし-30CPぶんの精神的特徴を植え付けられる。知力が1点永遠に低下する。あわせて精神系の技能、呪文、超能力のレベルも低下する。', - ] - - dice, = roll(3, 6) - number = dice + modify - if number > 40 - num = 36 - else - num = number - 4 - end - result = table[num] - - when /REACT((\+|\-)?\d*)/ - modify = Regexp.last_match(1).to_i - - tableName = "反応表" - dice, = roll(3, 6) - number = dice + modify - - if number < 1 - result = "最悪" - elsif number < 4 - result = "とても悪い" - elsif number < 7 - result = "悪い" - elsif number < 10 - result = "良くない" - elsif number < 13 - result = "中立" - elsif number < 16 - result = "良い" - elsif number < 19 - result = "とても良い" - else - result = "最高" - end - - when /TRAP(\w)/ - tableName = "トラップリスト" - diff = Regexp.last_match(1) - dif, table = getTrapTable(diff) - if table.nil? - return "" - end - - result, number = get_table_by_nD6(table, 3) - result = "#{dif}:#{result}" - - when /TRS(E|N|H|L)(\d+)((\+|\-)?\d*)/ - tableName = "財宝テーブル" - diff = Regexp.last_match(1) - depth = Regexp.last_match(2).to_i - # num = depth / 10 - num = (depth / 10).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - if num >= 6 - num = 5 - end - case diff - when "N" - num += 1 - - when "H" - num += 2 - - when "L" - num += 3 - end - unless Regexp.last_match(4).nil? - num += Regexp.last_match(3).to_i - end - table = getTresureTable(num) - if table.nil? - return "" - end - - result, number = get_table_by_1d6(table) - - when /RAND(E|N|H|L)(\d)?/ - tableName = "ランダムイベント表" - diff = Regexp.last_match(1) - if !Regexp.last_match(2).nil? - dice1 = Regexp.last_match(2).to_i - else - dice1, = roll(1, 6) - end - dice2, = roll(1, 6) - area, dif, table = getRandomEvent(dice1, dice2, diff) - result, dice3 = get_table_by_1d6(table) - number = "#{dice1}#{dice2}#{dice3}" - result = "#{area}(#{dif}):#{result}" - - when /RENC(E|N|H|L)(\d)?/ - tableName = "ランダムエンカウント表" - diff = Regexp.last_match(1) - if !Regexp.last_match(2).nil? - dice1 = Regexp.last_match(2).to_i - else - dice1, = roll(1, 6) - end - dice2 = 4 - area, dif, table = getRandomEvent(dice1, dice2, diff) - result, dice3 = get_table_by_1d6(table) - number = "#{dice1}#{dice2}#{dice3}" - result = "#{area}(#{dif}):#{result}" - - when "AREA" - tableName = "地形決定表" - table = [ - '洞窟 -「ん、暗くて先が見えないって?そりゃこのフィルトウィズのことかい?」 -姿を様々に変える洞窟。ケイヴウォーカーがいれば有利に探索可能。非常に暗く「暗視」がなければ満足に進むことはできないだろう。 -☆深度判定:体力判定(「暗視」があれば深度判定に+3のボーナスを受ける) -☆屋内(飛行不可) -☆薄暗い(ストームコーザー「鳥目」を適用)', - '遺跡 -「どんな仕掛けにだって意味はある。人が作ったものだからな」 -人為的に作られた様々な建造物の内部。 -様々な恐ろしい仕掛けが行く手を阻む。 -☆深度判定:<探索> -☆屋内(飛行不可)', - '断崖 -「うーん、とっても気持ちのいい風ね。ん?何を震えてるの?」 -一歩踏み外せば奈落の底。過酷な自然の要塞。 -ストームコーザーなどの飛行可能な仲間がいると心強いだろう。 -☆深度判定:<軽業> -☆屋外', - '水辺 -「人間とは何かと不便なことが多い種族ですな」 -川、湖などを泳いだりして進んでいくダンジョン。 -リザードやワイズマンがその力を発揮するだろう。 -☆深度判定:<水泳> -(水泳に「自動的に成功」するキャラクターは敏捷力+4で判定可能。 - 《水泳》のかかっているキャラクターがいた場合も同様。 - 【ミズグモ】があれば敏捷力+2で深度判定可能) -☆屋外 ', - '森林 -「ここが危険だと思う?それはアナタがこの森では『異質』だからよ」 -鬱蒼とした森林は、人間にはとても過酷な環境となっている。 -フラウなどの自然と共に生きる者の力が助けになるだろう。 -☆深度判定:<生存> -☆屋外', - '墓地 -「客人とは珍しい・・・『死者の王』に出会わぬよう、ゆめゆめご注意を・・・」 -死者どもの彷徨う、暗く冷たい墓地。 -ローブをかぶった得体の知れない墓守を<追跡>して脱出せよ。 -☆深度判定:<追跡> -☆屋外 -☆薄暗い(ストームコーザー「鳥目」を適用)', - ] - result, number = get_table_by_1d6(table) - - when /DROP(N)?((\+)?(\d))?/ - tableName = "ドロップ判定" - mode = "S" - text = "" - modify = 0 - - unless Regexp.last_match(1).nil? - mode = Regexp.last_match(1) - end - unless Regexp.last_match(4).nil? - modify = Regexp.last_match(4).to_i - end - - dice, = roll(3, 6) - number = dice - modify - - if number <= 3 - result = "レアアイテム1" - - elsif (number <= 4) && (mode == "N") - result = "レアアイテム2" - - elsif number < 7 - if mode == "N" - result = "CL×200GP" - - else - result = "CL×100GP" - - end - - else - if mode == "N" - result = "CL×20GP" - - else - result = "CL×10GP" - - end - - end - - when "HST" - tableName = "必殺技表" - table = [ - '命中判定に[1,1,1]でクリティカル(クリティカル表も参照)。', - '命中判定に+20のボーナス。', - 'ダメージを与えると「生命力-2」で気絶判定。', - 'ダメージを与えると「敏捷力-4」で転倒判定。', - '致傷力+2D。', - '命中判定に[6,6,6]でファンブル(ファンブル表も参照)。', - ] - result, number = get_table_by_1d6(table) - - when "KHST" - tableName = "驚異的必殺技表" - table = [ - '命中判定に[1,1,1]でクリティカル。クリティカル表は参照せず、相手は即死。「分類:ネームド」「分類:魔将」に対しては最大HPの半分のダメージを与える。', - '命中判定に[1,1,1]でクリティカル。クリティカル表は参照せず、致傷力3倍。', - '命中判定に[1,1,1]でクリティカル。クリティカル表は参照せず、致傷力2倍。', - '命中判定に[1,1,1]でクリティカル(クリティカル表も参照)。', - '命中判定に+40のボーナス。', - '致傷力+4D(火炎特性)。', - '致傷力+3D(雷撃特性)。', - '与えたダメージに等しいHPを回復する。回避に-3のペナルティを与える。', - '1点でもダメージを与えた場合、対象を転倒状態にする。回避に-3のペナルティを与える。', - '致傷力+3D。', - '致傷力+4D(冷気特性)。', - '1点でもダメージを与えた場合、-6のペナルティで気絶判定。', - '致傷力+4D。防護点無視。', - '致傷力+6D。回避に-3のペナルティを与える。', - '命中判定に[6,6,5]でファンブル(ファンブル表も参照)。目標値が16以上だった場合は自動失敗。', - '命中判定に[6,6,6]でファンブル(ファンブル表も参照)。', - ] - result, number = get_table_by_nD6(table, 3) - - when "RANDOP" - tableName = "迷宮追加オプション表" - table = [ - '「宝物の迷宮」 -財宝決定の際、1段階深度の高い財宝テーブルを使用する。', - '「密林の迷宮」 初期深度+10 -分類が「魔獣」「獣人」「霊獣」のモンスターは全ての判定に+2のボーナスを得る。', - '「カラクリ技師の迷宮」 -分類「ギア」のモンスターは全ての判定に+2のボーナスを得る。 -クリア時に獲得できるAPが2倍になる。', - '「フラウの舞踏会」 -フラウが登場するランダムイベントが発生した際、 -「この迷宮を制覇して、私達が舞踏会を開けるようにしてね」とお願いされ、 -迷宮クリア時の獲得CPに+1のボーナスを得る。', - '「アズマ風の迷宮」 初期深度+10 -風流なアズマ風の迷宮。 -アシガルファイター(CL4)、アンブッシュマン(CL5)、カラクリフラウ(CL6)、 -ヤコ(CL6)、ヤシャ(CL10)、ヒトキリ(CL33)、シャドウストーカー(CL35)、 -アシュラ(CL48)、コンゴウ(CL60)、カラクリヒメショーグン(CL75)が行う、 -全ての判定に+2のボーナスを得る。', - '「枯れた泉の迷宮」 初期深度+5 -回復の泉が全て枯れており、回復効果を得ることができない。毒の泉はそのまま存在する。', - - '「天空への道」 初期深度+15 -上へ上へと果てしなく昇っていく迷宮。空気が薄くなって疲労しやすくなる。 -技などによるFPの最終的な消費と、FPに受ける最終的なダメージが2倍になる。', - '「灼熱焦土の塔」 初期深度+10 -とてつもなく熱く、気温が50度以上の塔。 -「特性:火炎」の攻撃でPCが受ける最終的なダメージが2倍になる。', - '「永久凍土の塔」 初期深度+10 -とてつもなく寒く、気温が氷点下の塔。 -「特性:冷気」の攻撃でPCが受ける最終的なダメージが2倍になる。 -リザードやワイズマンなどの寒さに弱いキャラクターは動きが鈍り、あらゆる判定に-2のペナルティを受ける。', - '「盗賊王の迷宮」 初期深度+10 -<罠><鍵開け>に+3のペナルティを受ける。', - '「ミミック狂暴化」 -「全地形2-5」のミミックを見破る<罠>の判定に-3のペナルティを受け、 -ミミックの致傷力も2倍になる。ミミックから獲得できるGPが3倍になる。', - '「トレジャーイーター狂暴化」 初期深度+10 -「全地形2-6」のトレジャーイーターを見破る<罠>の判定に-5のペナルティを受ける。', - - '「暗闇の迷宮」 初期深度+5 -「暗視」がなければ視覚判定に-5のペナルティを受ける。 -ストームコーザーはペナルティが2倍。', - '「騒音の迷宮」 初期深度+5 -「音量自動補正装置」がなければ聴覚判定に-5のペナルティを受ける。 -シルヴァテイルはペナルティが2倍。', - '「未知の怪物の迷宮」 初期深度+10 -モンスターのデータが判明させられなくなる。 -モンスター名は全て「謎の影」となる', - '「氾濫中の迷宮」 初期深度+10 -<水泳>に-5のペナルティを受ける。', - '「間抜けの迷宮」 初期深度+15 -あらゆる知力を基準とした判定(精神系技能含む)に-2のペナルティを受ける。', - '「瘴気の迷宮」 初期深度+15 -あらゆる生命力判定に-4のペナルティを受ける。', - - '「加速する迷宮」 -1ラウンドで1日が経過する迷宮。技のCTやフラウの水分補給に影響する。 -「CT:1日」までの技も次ターンで使用可能になっている。', - '「停滞する迷宮」 -敵味方双方が、「CT:次ターン」の技を使用すると最終イベントまで再使用不可。 -また、「次ターンまで」有効な技は最終イベントまでずっと適用される。', - '「猛毒の迷宮」 初期深度+20 -最大HP、MP、FPに-5のペナルティを受ける。最低1点は残る。 -中級:-10 上級:-15 悪夢:-20', - '「死の迷宮」 初期深度+25 -「保険」の効果が適用されない迷宮。', - '「幸運の迷宮」 -PC全員のフォーチュン最大値+1。', - '「不運の迷宮」 初期深度+10 -PC全員のフォーチュン最大値が半減する。', - - '「レアメタルの迷宮」 -非常にレアなモンスター「レアメタルキャンディー」「レアメタルクラウン」が生息している迷宮。 -キャンディークラウン(CL40)、ゴールデンクラウン(CL177)から -獲得できるAPが5倍になる。ただし、この2体の防護点は10になる。', - '「魔力の泉」 -PCとモンスターの双方が、MPを減少させずに魔法を使用できるようになる。 -最大MPの足りていない魔法は使用できない。', - '「青色の迷宮」 初期深度+10 -PCは全員「内気3」の特徴を得る。 -迷宮内で他のNPCに出会った際のイベントは全て無視する。', - '「赤色の迷宮」 初期深度+10 -PCは全員「直情」「自信過剰」の特徴を得る。「撤退」はできなくなる。', - '「ピンクの迷宮」 -PCは全員「好色」「平和愛好/専守防衛」の特徴を得る。「分類:魔族」とのエンカウントは無視する。', - '「ハズレの迷宮」 -財宝決定の際、1段階深度の低い財宝テーブルを使用する。', - - '「ラダマンティスの迷宮」 初期深度+20 -「分類:岩石」のモンスターは全ての判定に+3のボーナスを得る。 -また、「遺跡6-6」のイベントの致傷力が2倍になる。', - '「グレイヴディガーの迷宮」 初期深度+20 -「分類:アンデッド」のモンスターは全ての判定に+3のボーナスを得る。 -また、「墓場」の深度判定に-5のペナルティを受ける。', - '「ハイペリオンの迷宮」 初期深度+20 -全てのモンスターがターンの最初にHPを5点ずつ回復する。 -中級:10点 上級:20点 悪夢:30点。', - '「ムスペルニブルの迷宮」 初期深度+20 -「特性:火炎」「特性:冷気」の攻撃で、PCが受ける最終的なダメージが2倍になる。', - '「 の迷宮」 -何も起きない。第五魔将の封印が解除されている場合のみ、フォーチュン最大値+5。', - '「バロールの迷宮」 初期深度+20 -「分類:ギア」のモンスターは全ての判定とあらゆる攻撃の致傷力に+3のボーナスを得る。', - ] - result, number = get_table_by_d66(table) - - when /LOT(N|P)/ - type = Regexp.last_match(1) - if type == "P" - tableName = "ナンバーワンプレミアムくじ" - else - tableName = "ナンバーワンノーマルくじ" - end - result = getLotResult(type) - return "#{nick_e}: #{tableName}:#{result}" - - else - return "" - end - - text = "#{nick_e}: #{tableName}(#{number}):#{result}" - - return text - end - - # ノーマルくじ表1 - def normal1 - table = [ - 'イレブンチキン', - 'イレブンチキン', - 'イレブンチキン', - lambda { return normal2.to_s }, - lambda { return normal2.to_s }, - lambda { return normal3.to_s }, - ] - result, = get_table_by_1d6(table) - return result - end - - # ノーマルくじ表2 - def normal2 - table = [ - 'バロールたわし', - 'イグニスジッポ', - 'ヤコ仮面or梟の文鎮(選択可)', - 'ナレッジのハンモックorジンジャビースト', - lambda { return normal3.to_s }, - lambda { return normal3.to_s }, - ] - result, = get_table_by_1d6(table) - return result - end - - # ノーマルくじ表3 - def normal3 - table = [ - '特性HPポーション', - '特性MPポーション', - '黒い甲冑', - '天体望遠鏡', - '金獅子の剥製', - lambda { return normal4.to_s }, - ] - result, = get_table_by_1d6(table) - return result - end - - # ノーマルくじ表4 - def normal4 - table = [ - '特性スタミナポーション', - '戦乙女の兜', - 'フェンリルの首輪', - 'フェニックスカーペット', - '動くアダマンゴーレム', - lambda { return normal5.to_s }, - ] - result, = get_table_by_1d6(table) - return result - end - - # ノーマルくじ表5 - def normal5 - table = [ - 'キャンディークッション', - '屑鉄の金床', - '薪割り王の斧', - 'ロジエの水差し', - '箱舟の模型', - lambda { return premium5.to_s }, - ] - result, = get_table_by_1d6(table) - return result - end - - # プレミアムくじ表1 - def premium1 - table = [ - 'プレミアムチキン', - 'プレミアムチキン', - 'プレミアムチキン', - lambda { return normal3.to_s }, - lambda { return premium2.to_s }, - lambda { return premium2.to_s }, - ] - result, = get_table_by_1d6(table) - return result - end - - # プレミアムくじ表2 - def premium2 - table = [ - '親衛隊バッジ', - 'ハタモトチャブダイ', - '星のコンパス', - '白銀の甲冑', - lambda { return normal4.to_s }, - lambda { return premium3.to_s }, - ] - result, = get_table_by_1d6(table) - return result - end - - # プレミアムくじ表3 - def premium3 - table = [ - '特性クイックHPポーション', - '特性クイックMPポーション', - '特製クイックスタミナポーション', - '火龍のフィギュアor氷龍のフィギュア(選択可)', - 'ヒメショーグンドレス', - lambda { return premium4.to_s }, - ] - result, = get_table_by_1d6(table) - return result - end - - # プレミアムくじ表4 - def premium4 - table = [ - 'クイックユグドラポーション', - '銀河龍のフィギュア/ドラゴン', - '銀河龍のフィギュア/魔族', - '魔族チェスセット', - 'イグニスコンロ', - lambda { return premium5.to_s }, - ] - result, = get_table_by_1d6(table) - return result - end - - # プレミアムくじ表5 - def premium5 - table = [ - 'グレヴディバリウス', - '天使の望遠鏡orデスの目覚まし時計(選択可)', - '世界樹の蔦', - '死神の飾りドレス', - 'ザバーニヤ等身大フィギュア', - lambda { return premium6.to_s }, - ] - result, = get_table_by_1d6(table) - return result - end - - # プレミアムくじ表6 - def premium6 - table = [ - 'イレブンチキン', - 'イレブンチキン(2ピース)', - 'イレブンチキン(3ピース)', - 'イレブンチキン(6ピース)', - 'イレブンチキン(12ピース)', - 'wish star', - ] - result, = get_table_by_1d6(table) - return result - end - - # GURPS-FW ナンバーワンくじ - def getLotResult(type) - if type == "P" - premium1 - else - normal1 - end - end - - # GURPS-FW 夢幻の迷宮財宝テーブル(ver.2013/05/03) - def getTresureTable(num) - case num - # 初級マイナス - when -1 - table = [ - 'HPポーション(消耗品)', - 'MPポーション(消耗品)', - 'スタミナポーション(消耗品)', - '抵抗ポーション(消耗品)', - 'マジックパウダー:無(消耗品)', - '200GP', - ] - - # 初級0-9 - when 0 - table = [ - '高級HPポーション(消耗品)', - '高級MPポーション(消耗品)', - '高級スタミナポーション(消耗品)', - '高級抵抗ポーション(消耗品)', - 'マジックパウダー:銀(消耗品)', - '600GP', - ] - - # 初級10-19 - when 1 - table = [ - '大地の守り(装飾品)', - 'ファインウェポンケース(装飾品)', - '狩人の羽帽子(装飾品)', - '狙撃手の指貫(装飾品)', - 'スタミナバンド・健康お守り・レザーマント3点セット(装飾品)', - '1200GP', - ] - - # 初級20-29 - when 2 - table = [ - 'ミスリルダガーorミスリルシールドを選択(短剣or盾)', - '高級クイック能力増加ポーション(消耗品)', - '高級クイックHPポーション(消耗品)', - '高級クイックMPポーション(消耗品)', - '装飾品1つ(3000GPまでのもの)', - '2000GP', - ] - - # 初級30-39 - when 3 - table = [ - 'ミスリル武器(4000GPまでのもの)', - '最高級能力増加ポーション(消耗品)', - '高級クイック再生ポーション(消耗品)', - '魔法1つ(5000GPまでのもの)', - '防具1つ(5000GPまでのもの)', - '3000GP', - ] - - # 初級40-49 - when 4 - table = [ - 'オサフネorサスケブレードを選択(刀)', - 'アダマンダガー', - '弓1つ(5000GPまでのもの)', - 'ギロチンブレード(両手剣)', - '装飾品1つ(5000GPまでのもの)', - '4500GP', - ] - - # 初級50- - when 5 - table = [ - 'アダマン武器(8000GPまでのもの)', - 'アダマンシールド(盾)', - 'ミスリルスケイル', - '蘇生ポーション', - '装飾品1つ(10000GPまでのもの)', - '6000GP', - ] - - # 初級最高 - when 6 - table = [ - '武器1つ(612000GPまでのもの)', - '盾1つ(12000GPまでのもの)', - '鎧1つ(12000GPまでのもの)', - '蘇生ポーション', - '装飾品1つ(15000GPまでのもの)', - '10000GP', - ] - - # 中級最高 - when 7 - table = [ - '武器1つ(30000GPまでのもの)', - '盾1つ(30000GPまでのもの)', - '鎧1つ(30000GPまでのもの)', - '蘇生ポーション+特製クイックHPポーション(特製は人数分)', - '装飾品1つ(40000GPまでのもの)', - '25000GP', - ] - - # 上級最高 - when 8 - table = [ - '武器1つ(60000GPまでのもの)', - '盾1つ(60000GPまでのもの)', - '鎧1つ(60000GPまでのもの)', - '蘇生ポーション+特製クイックポーション(特製は人数分、HP・MP・スタミナの3種)', - '装飾品1つ(80000GPまでのもの)', - '50000GP', - ] - - # 悪夢最高 - when 9 - table = [ - '武器1つ(150000GPまでのもの)', - '盾1つ(150000GPまでのもの)', - '鎧1つ(150000GPまでのもの)', - 'クイック蘇生ポーション+特製クイックポーション(特製は人数分、HP・MP・スタミナの3種)', - '装飾品1つ(200000GPまでのもの)', - '黄金の守護者の証(装飾品)+黄金の電子暗号キー(装飾品)', - ] - - else - table = nil - end - - return table - end - - # トラップリスト(ver.2013/11/07) - def getTrapTable(diff) - case diff - when "E" # 初級 - dif = "初級" - d = 0 - - when "N" # 中級 - dif = "中級" - d = 1 - - when "H" # 上級 - dif = "上級" - d = 2 - - when "L" # 悪夢 - dif = "悪夢" - d = 3 - - else - dif = nil - d = nil - - end - - table = [ - "トライディザスター:宝箱から広範囲に火炎・冷気・電撃が放たれる。PC全員に火炎により#{['3D', '4D', '5D', '7D'][d]}の「叩き」ダメージ、冷気により#{['3D', '4D', '5D', '7D'][d]}の「叩き」ダメージ、電撃により#{['2D', '3D', '4D', '6D']}の「叩き」ダメージを与える(電撃は金属鎧の防護点無視)", - "ペトロブラスター:宝箱を開けたキャラクターに《肉を石》をかける。技能レベルは#{['20', '22', '24', '30'][d]}。", - "クロスボウストーム:宝箱から矢の嵐が放たれる罠。PC全員に#{['2D', '3D', '5D', '8D'][d]}の「刺し」ダメージを与える。盾の受動防御を無視した「よけ#{['', '-2', '-4', '-8'][d]}」で回避が可能。", - "フォーチュンイーター:PC全員の幸運を食らい、フォーチュンを#{['1', '2', '3', '5'][d]}減少させる。フォーチュンが0の場合#{['3D', '6D', '9D', '15D'][d]}の防護点無視ダメージを受ける。", - "スロット:スロットが揃うまで開かない宝箱。スロットを1回まわすには#{['100', '300', '500', '1000'][d]}GPが必要。行動を消費して「視覚#{['-5', '-7', '-9', '-13'][d]}」判定に成功すればスロットはそろう。「反射神経」があれば「視覚」そのままで判定可能。", - "テレポーター:宝箱の周囲に存在するPC全員(とエンカウントしているモンスター)をダンジョン入口方面に転送する。深度が#{['3D減少する', '4D減少する', '5D減少する', '0になる'][d]}。", - "アイスコフィン:宝箱を開けようとしたキャラクターに冷気で#{['3D', '5D', '7D', '12D'][d]}の「叩き」ダメージを与え更に最終的なダメージの半分のFPダメージを与える。", - "クロスボウ:宝箱を開けようとしたキャラクターに#{['2D', '3D', '5D', '8D'][d]}の「刺し」ダメージを与える。盾の受動防御を無視した「よけ#{['', '-2', '-4', '-8'][d]}」で回避が可能。", - "毒針:宝箱を開けようとしたキャラクターに#{['1D', '2D', '3D', '6D'][d]}の「刺し」ダメージを与える。1点でもダメージを受けると「生命力#{['-4', '-5', '-6', '-8'][d]}」で判定を行い、失敗すると1日間すべての判定に-2のペナルティを受ける。盾の受動防御を無視した「よけ#{['', '-2', '-4', '-8'][d]}」で回避が可能。", - "アラーム:即座にその地形のエンカウント表(イベント表4-1~4-6)を振る。", - "殺人鬼の斧:宝箱を開けようとしたキャラクターに#{['3D', '4D', '6D', '10D'][d]}の「切り」ダメージを与える。命中部位は「ランダム部位命中表」を用いて決定すること。盾の受動防御を無視した「よけ#{['', '-2', '-4', '-8'][d]}」で回避が可能。", - "死神:宝箱を開けようとしたキャラクターにネクロマンサーの呪術【憑物】+【死神】の効果を与える。3ラウンドすべての判定に#{['-1', '-2', '-3', '-4'][d]}のペナルティを受け、効果が切れると同時に#{['3D+3', '3D+6', '3D+9', '3D+15'][d]}の防護点無視ダメージを受ける。", - "幻の宝:宝箱は二重底になっている。「知力#{['-5', '-7', '-9', '-13'][d]}」か<商人#{['', '-2', '-4', '-8'][d]}>の判定に失敗すると、重さ10kgの価値のない偽の宝物を入手してしまう。偽の宝物はシナリオ終了まで捨てることはできないが「トレジャーイーター」の罠にかかると消滅する。", - "エクスプロージョン:宝箱が爆発し、PC全員に#{['4D', '6D', '9D', '15D'][d]}の「叩き」ダメージを与える。宝箱の中身は粉々になる。", - "レインボーポイズン:宝箱から七色の毒ガスが放たれる。PC全員が「生命力#{['-4', '-5', '-6', '-8'][d]}」で判定を行い、失敗するとHP、MP、FPに#{['2D', '3D', '4D', '6D'][d]}の防護点無視ダメージを受ける。", - "デスクラウド:宝箱から致死性の毒ガスが放たれる。PC全員が「生命力#{['-4', '-5', '-6', '-8'][d]}」で判定を行い、失敗したPCは即座に死亡する。", - ] - return dif, table - end - - # ランダムイベント表(ver.2013/11/07) - def getRandomEvent(dice1, dice2, diff) - case diff - when "E" - dif = "初級" - d = 0 - - when "N" - dif = "中級" - d = 1 - - when "H" - dif = "上級" - d = 2 - - when "L" - dif = "悪夢" - d = 3 - - else - dif = "" - d = nil - end - - case dice1 - when 1 - area = "洞窟" - case dice2 - when 1 - table = [ - "回復の泉。PC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。", - "淡い光を放つ鉱石に包まれた部屋に出る。フォーチュンが#{getRandomDiff(dice1, 12, d, 0)}点回復する。", - "天井が開いていて植物の育っている洞窟内庭園。#{getRandomDiff(dice1, 13, d, 0)}に成功すると力の沸く木の実を見つけHP・FP・MPを#{getRandomDiff(dice1, 13, d, 1)}点回復できる。", - "洞窟内で栽培できる特殊なキノコを栽培するフラウに出会う。100GP支払うことでキノコを1つ譲ってもらうことができ、シナリオ終了まで《怪力2》《すばやさ2》《知恵2》《活力2》のいずれかの効果を得る(ランダム)このキノコは持ち帰ることはできず、2つめを食べても効果はない。", - "ギア技術を用いた強力な懐中電灯のおいてある休憩室。迷宮を出るまで洞窟の深度判定で「暗視」があるものとして扱う。迷宮を出ると懐中電灯は寿命が来たのか壊れてしまう。", - "不思議な光を放つ水が沸いている。パーティーメンバーのHP・MP・FPのいずれかが減少している場合このイベントは拒否できない。また、全快でも「好奇心」を持つキャラクターは知力判定に失敗すると飲みにいこうとする。飲んだキャラクターは1Dを振り、以下のような効果が発生する。ロールプレイが面白かった場合シナリオ終了時に1CPのボーナスを与えてもよい。 ----------- -1:HP・MP・FP全回復 -2:シナリオ終了まで肉体的に不利な特徴が1つ消滅する -3:シナリオ終了まで精神的に不利な特徴が1つ消滅する -4:HP・MP・FPが現在地の半分になる HPがマイナスの場合はHP・MP・FP全回復 -5:シナリオ終了まで余分な獣っぽい耳や尻尾が生える 聴覚判定+4 -6:シナリオ終了まで性別が男女入れ替わる。 -----------", - ] - - when 2 - table = [ - "財宝(カギ・トラップなし)。財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギつき。行動を消費して#{getRandomDiff(dice1, 22, d, 0)}に成功すれば開く)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギなし、トラップつき。行動を消費して#{getRandomDiff(dice1, 23, d, 0)}に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギ、トラップつき。行動を消費して#{getRandomDiff(dice1, 24, d, 0)}に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "ミミックの罠。ランダムなキャラクターに3Dの「切り」ダメージを与える。#{getRandomDiff(dice1, 25, d, 0)}に成功すればこの罠を見抜いて無効化することができ、なおかつ「深度×#{getRandomDiff(dice1, 25, d, 1)}」GPを入手可能。", - "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。#{getRandomDiff(dice1, 26, d, 0)}に成功すればこの罠を見抜いて無効化することができる。", - ] - - when 3 - table = [ - "洞窟内で近道を発見。深度が1D+1増加する。", - "洞窟内で近道を発見。深度が1D増加する。細い道のため、体の大きなキャラクター(STが13以上)は、通るのに苦労してFPを1点消耗する", - "分かれ道。2分の1の確率で深度が1D増加する。「方向感覚」があれば必ず増加。", - "足場の悪い近道。PTの誰かが#{getRandomDiff(dice1, 34, d, 0)}に成功すれば深度が1D増加する。失敗した場合は#{getRandomDiff(dice1, 34, d, 1)}の「叩き」ダメージを受ける", - "大きな岩でふさがれた近道。1ラウンドで破壊することができれば深度が1D増加する。岩はどのヘクスからでも攻撃可能。分類:岩石、防護点8、#{getRandomDiff(dice1, 35, d, 0)}、切り刺しダメージボーナス無効。", - "道が3つに分かれている。1Dで1、2が出るとペナルティなし、1Dで3、4が出ると深度-2、1Dで5、6が出ると深度-4。「直感」があれば、#{getRandomDiff(dice1, 36, d, 0)}の判定に成功すれば正しい道を選択可能。", - ] - - when 4 - table = [ - "#{getRandomDiff(dice1, 41, d, 0)}とエンカウント。2ラウンド経過するとキャンディークラウンは戦場全域に《べたべた》をかけて逃亡する。", - "#{getRandomDiff(dice1, 42, d, 0)}彼らはお互いに争っているがPCたちを見つけると向きを変えて襲い掛かってくる。#{getRandomDiff(dice1, 42, d, 1)}", - "#{getRandomDiff(dice1, 43, d, 0)}相手は洞窟では巧妙に擬態しており、【ハイドインシャドウ】状態とみなす。#{getRandomDiff(dice1, 43, d, 1)}", - "#{getRandomDiff(dice1, 44, d, 0)}トロッコに乗って逃げつつの戦闘になり、2ラウンド以内に倒せなければ轢かれてPC全員が#{getRandomDiff(dice1, 44, d, 1)}の防護点無視ダメージを受ける。また、1ラウンドに1人誰かが体力判定を行ってトロッコを運転する必要があり、これに失敗すると即座に轢かれてしまう。轢かれると戦闘は終了する。パーテイー内にケイヴウォーカーがいればこの判定は不要。", - "炎の燃え盛る洞窟。深度判定直前に炎で#{getRandomDiff(dice1, 45, d, 0)}の「叩き」ダメージを受ける。さらに#{getRandomDiff(dice1, 45, d, 1)}とエンカウント。火炎弱点のモンスターがいれば即座に逃亡する。", - "冷気に包まれた洞窟。深度判定直前に冷気で#{getRandomDiff(dice1, 46, d, 0)}のFPダメージを受ける(防護点無視)さらに#{getRandomDiff(dice1, 46, d, 1)}とエンカウント。冷気弱点のモンスターがいれば即座に逃亡する。", - ] - - when 5 - table = [ - "落盤がモンスターを押しつぶす。戦闘中の場合ランダムなモンスター1人を即死させる。APやドロップ品も入手可能。それ以外の場合は特に何も起きない。", - "採掘用のダイナマイトが打ち捨てられている。行動ターンを消費して使用することで任意の半径#{getRandomDiff(dice1, 52, d, 0)}の敵味方全員に#{getRandomDiff(dice1, 52, d, 1)}の「叩き」ダメージを与える。命中判定は自動的に0成功とし、《爆裂火球》と同様にダメージの軽減が可能。", - "有毒ガスが発生している。分類「ギア」「アンデッド」以外のキャラクターは敵味方全員#{getRandomDiff(dice1, 53, d, 0)}で判定を行い、失敗度分のダメージを受ける。《空気浄化》などがあれば使用することで無効化できる。", - "溶岩の流れる部屋。深度判定直前に炎で#{getRandomDiff(dice1, 54, d, 0)}の「叩き」ダメージを受ける。深度判定を行い、失敗したキャラクターはさらに追加で#{getRandomDiff(dice1, 54, d, 0)}の「叩き」ダメージを受ける。", - "落盤がPCのうちランダムに1人を押しつぶす。受動防御無視の#{getRandomDiff(dice1, 55, d, 0)}に失敗すると#{getRandomDiff(dice1, 55, d, 1)}の「叩き」ダメージを受ける。パーティーの誰かが「第六感」か「視覚-5」の判定に成功すれば事前に回避可能。(「暗視」があれば「視覚-2」でも判定可能)", - "進んできた道の後方が急に崩落する。ダンジョン攻略が完了するまで「撤退」ができなくなるが、「深度」が現時点より下がることがなくなる。", - ] - - when 6 - table = [ - "プラネタリウムのように鉱石が輝く部屋。星の配置に関する謎かけになっている。行動を消費して#{getRandomDiff(dice1, 61, d, 0)}に成功すればこの謎を解くことができる。謎が解けると#{getRandomDiff(dice1, 61, d, 1)}が入手できる。", - "地熱で温泉が湧いている。このイベントが発生するとモンスターは消滅する。みんなで温泉に浸かることでFPが全回復する。また、温泉の薬効により受けていた毒は無効化され、ラウンドの最初にHPが#{getRandomDiff(dice1, 62, d, 0)}点ずつ回復するようになる。", - "地下渓流を発見する。深度判定が体力判定ではなく<水泳>判定になる。深度判定に#{getRandomDiff(dice1, 63, d, 0)}成功以上した場合は地底湖に沈む財宝を発見可能。財宝にカギやトラップはなく、中身は深度そのままの財宝テーブルを使用する。", - "アダマン鉱脈を発見する。「<採掘>の成功度×深度×#{getRandomDiff(dice1, 64, d, 0)}」GP分のアダマン鉱石を入手可能。複数人数で判定を行えばその回数分入手可能。ただし50GP分ごとに重量が1kg。撤退・全滅した場合アダマン鉱石は消滅する。", - "強烈な磁力を放つ鉱石のある部屋。金属製の防具は重量を2倍に計算する。続いてエンカウント表(4-1~4-6)を振ること。なお、4-5の部屋の炎と4-6の部屋の冷気による効果は適用しない。", - "怪しい光を放つ鉱石の部屋。鉱石は無生物を破壊する振動を放っており、武器に#{getRandomDiff(dice1, 66, d, 0)}の効果を与える。また、種族「ギア」のキャラクターも同様の効果を受ける。ラウンド終了前に鉱石を破壊すればこの効果は受けない。鉱石はどのヘクスからでも攻撃可能。分類:岩石、防護点8、HP#{getRandomDiff(dice1, 66, d, 1)}、切り刺しダメージボーナス無効。", - ] - - else - table = nil - end - - when 2 - area = "遺跡" - case dice2 - when 1 - table = [ - "回復の泉。PC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。", - "随分進んだし一休みしよう。深度が奇数の場合はFPが#{getRandomDiff(dice1, 12, d, 0)}回復。深度が偶数の場合は進んだように見せかけて迷っているだけだった。深度が1D減少する。", - "どうやらここは古代の医務室らしい。#{getRandomDiff(dice1, 13, d, 0)}に成功すればPC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。", - "「道標のヒカリゴケ」を栽培しているフラウに出会う。300GPを払うと、以後の深度増加判定に+1のボーナスを得る。", - "ダンジョンの見取り図を書いた部屋に出る。次のランダムイベントでは、好きな地形を選択してからイベント表を振ることができる。次が最終イベントだった場合、ラウンド終了時の深度判定に+2のボーナスを得る。", - "「パワーアップ装置!」と書かれた怪しげな機械が置いてある。#{getRandomDiff(dice1, 16, d, 0)}を支払って使用するとキャラクターを強化(?)可能。使用するかは自由だが、「好奇心」を持つキャラクターは知力判定に失敗すると使用する。使用したキャラクターは1Dを振り、以下のような効果が発生する。 ----------- -1:能力値が1点上昇する。上がる能力値はランダムで1つ。CP総計はそれに応じて増加する -2:お肌がピチピチになり、容貌が1段階上昇する。「超美形」の場合さらに反応が男女とも+1(+5CP) -3:習得している技1つを選択して強化する。ソーサルギアは#{getRandomDiff(dice1, 16, d, 1)}までの魔法を1つ習得する -4:装置は突然大爆発を起こす!#{getRandomDiff(dice1, 16, d, 2)}の「叩き」ダメージを受ける -5:「鋭敏感覚1」が身につく。すでに「鋭敏感覚」がある場合そのレベルが上昇する -6:能力値が1点下降する。下がる能力値はランダムで1つ。CP総計はそれに応じて減少する -----------", - ] - - when 2 - table = [ - "財宝(カギ・トラップなし)。財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギつき。行動を消費して#{getRandomDiff(dice1, 22, d, 0)}に成功すれば開く)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギなし、トラップつき。行動を消費して#{getRandomDiff(dice1, 23, d, 0)}に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギ、トラップつき。行動を消費して#{getRandomDiff(dice1, 24, d, 0)}に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "ミミックの罠。ランダムなキャラクターに3Dの「切り」ダメージを与える。#{getRandomDiff(dice1, 25, d, 0)}に成功すればこの罠を見抜いて無効化することができ、なおかつ「深度×#{getRandomDiff(dice1, 25, d, 1)}」GPを入手可能。", - "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。#{getRandomDiff(dice1, 26, d, 0)}に成功すればこの罠を見抜いて無効化することができる。", - ] - - when 3 - table = [ - "鏡に映る怪人が自分の真似をしろとジェスチャーしている#{getRandomDiff(dice1, 31, d, 0)}のいずれかに成功すると鏡が消滅して隠し通路が開かれ、深度が2D増加する。", - "小さな魔将の像がフィルトウィズの地図の上で乱雑に置かれている。#{getRandomDiff(dice1, 32, d, 0)}で判定を行い、魔将の所在地を正しく配置すると隠し通路が開かれ、深度が2D増加する。", - "シュートの罠に引っかかるが、結果的に新たな道を発見する。深度が2D増加するが、PC全員が増加した深度#{getRandomDiff(dice1, 33, d, 0)}「叩き」ダメージを受ける。<軽業>で判定を行い、その成功度分ダメージを軽減可能。", - "ラダマンティス崇拝者が作り出した、巨大な甲羅のようなものが置かれた部屋。登っていけば近道することができそうだ。#{getRandomDiff(dice1, 34, d, 0)}に成功すれば深度が1D増加する。", - "後ろから重い物が転がってくる音がする。ローリングストーンだ!#{getRandomDiff(dice1, 35, d, 0)}で判定を行い、失敗したPCは#{getRandomDiff(dice1, 35, d, 1)}の「叩き」ダメージを受ける。全員成功だった場合のみ深度が2D増加する。", - "通路が入り組んでおり道に迷いそうだ。#{getRandomDiff(dice1, 36, d, 0)}の判定に失敗すると深度が2D減少する。「方向感覚」があればこの影響は受けない。", - ] - - when 4 - table = [ - "#{getRandomDiff(dice1, 41, d, 0)}とエンカウント。2ラウンド経過するとキャンディークラウンは戦場全域に《べたべた》をかけて逃亡する。", - "石像が並ぶ通路がある。1Dを振って1・2・3なら#{getRandomDiff(dice1, 42, d, 0)}。1Dを振って4・5・6・の場合ガーゴイルに似ている、ただの石像。<モンスター知識-5>か「第六感」の判定に成功していなければ必ず相手の先制攻撃になり、その際PC先手で進行中の場合もモンスター先手に変更される。#{getRandomDiff(dice1, 42, d, 1)}", - "障害物に隠れて#{getRandomDiff(dice1, 43, d, 0)}が狙撃してくる。モンスターのすぐ傍には合計5ヘクスの障害物(防護点5、HP35。形はGMが任意に決定する)がある。障害物ごしに攻撃するには射撃武器でなくてはならず、射撃武器も命中に-2のペナルティを受ける。", - "ブツゼンにモンスターが仁王立ちをしており、問答を行ってくる。#{getRandomDiff(dice1, 44, d, 0)}に成功すると戦闘を回避することができ、APとドロップ品も入手可能。失敗するか戦闘を望んだ場合#{getRandomDiff(dice1, 44, d, 1)}とエンカウントする。", - "進路上に鎖に繋がれたモンスターを発見する。迂回して戦闘を避けるなら深度1D減少し、戦闘して倒すと深度が1D増加する。戦闘を行う場合#{getRandomDiff(dice1, 45, d, 0)}とエンカウントする。", - "暴れゴーレムが襲いかかってくる!《倍速》の魔法がかかった#{getRandomDiff(dice1, 46, d, 0)}とエンカウントする。このゴーレムは暴走の負荷によりターンの最初にHPが#{getRandomDiff(dice1, 46, d, 1)}減少する。", - ] - - when 5 - table = [ - "毒矢が飛んでくる。#{getRandomDiff(dice1, 51, d, 0)}に失敗すると#{getRandomDiff(dice1, 51, d, 1)}の「刺し」ダメージを受け、1点でもダメージを受けた場合#{getRandomDiff(dice1, 51, d, 2)}判定を行い失敗すると以後ターンの最初に#{getRandomDiff(dice1, 51, d, 3)}の防護点無視ダメージを受ける。", - "毒霧が部屋に散布される。#{getRandomDiff(dice1, 52, d, 0)}で判定を行い、失敗すると《解毒》などを使用しない限り以後の判定全てに-2のペナルティを受ける。《空気浄化》があれば防御タイミングで使用して打ち消すことができる。", - "フロアイミテーターだ!この部屋自体が魔物である。ロックバトラー(#{getRandomDiff(dice1, 53, d, 0)})とエンカウントする。このモンスターがいる限り移動はできず、ラウンドごとの地形変化や深度増加も行わない。PCとフロアイミテーターは常に隣接しているものとして扱う。", - "どうやら休憩室のようだ、ふわふわのベッドもある。#{getRandomDiff(dice1, 54, d, 0)}判定に失敗すると転倒状態になり、ダメージを受けるか行動を消費して起こしてもらうまで行動不能。全員失敗した場合、君たちの冒険はここまでだ。せめていい夢を見れるといいだろう(保険は適用可能)", - "ラダマンティスの蛇の像と目が合う。どうやらダンジョンの監視者に見つかってしまったらしい!以後モンスターとエンカウントする場合、その数が2倍となる(この効果は累積する)なお、ネームドもしくは魔将の数は変化しない。", - "怪しげな卵が1つ置かれている。GMは#{getRandomDiff(dice1, 56, d, 0)}の中から好きなものを1体選びエンカウントさせることができる。深度が0の場合、卵の中から1段階高い財宝テーブルのアイテムが手に入る。", - ] - - when 6 - table = [ - "突如持っていた灯が消えて真っ暗になってしまう。暗闇を見通せる手段(特徴「暗視」、魔法《持続光》、遺跡1-4のヒカリゴケなど)がない限り、PCはこのラウンド中の敏捷力に-4のペナルティを受ける。(ストームコーザーは-8)", - "どうやら過去の訓練施設のようだ。「パンチングマシーン」と書かれたものがあり、100GP払って挑戦可能。武器を外した状態での「叩き」ダメージを求め、値が大きいと景品が入手可能。1回挑戦すると、ガタがきていたのか壊れてしまう。<格闘><猫格闘><空手>の技を使用しても構わない。 ---------- -ダメージが#{getRandomDiff(dice1, 62, d, 0)}以上:2D×50GP -ダメージが#{getRandomDiff(dice1, 62, d, 1)}以上:深度が1段階低い財宝テーブル -ダメージが#{getRandomDiff(dice1, 62, d, 2)}以上:深度が1段階高い財宝テーブル ----------", - "謎の装置のせいで気になるあの子と体が入れ替わってしまった!?シナリオ終了までPCのうち2人の体が入れ替わってしまい、精神的な特徴と癖が入れ替わってしまう。なぜか知力や技能はそのまま。プレイヤーは入れ替わった相手の性格を演じること。入れ替わる2人はランダムに決定するか面白くなるようにGMが選ぶ。展開が面白かった場合、GMはシナリオクリア時のCPを1点追加しても良い。", - "古代のテクノロジーを使用した医療施設だ。このイベントが発生するとモンスターは消滅する。#{getRandomDiff(dice1, 64, d, 0)}に成功すると全員のHP・FP・MPと転倒以外の状態異常を全回復できる。また、シナリオ終了まで不利な肉体的・精神的な特徴を無効化できる。", - "キャンディークラウンハウスだ!キャンディークラウン(CL40)×1D#{getRandomDiff(dice1, 65, d, 0)}とエンカウントする。もし1体も倒せなかった場合、1体も倒せずチャンスをものにできなかった悔しさからFPに出てきたキャンディークラウンの数Dのダメージを受ける(軽減不可)", - "なぜここに呼ばれたかおわかりになりますでしょうか?ラダマンティス崇拝者の作り出した審判の部屋。<地域知識/フィルトウィズ全域-3>に成功すると罰を与える部屋だとわかり、部屋の中央のラダマンティス像を攻撃できるようになる。像はどのヘクスからでも攻撃可能。分類:岩石、防護点8、HP#{getRandomDiff(dice1, 66, d, 0)}、切り刺しダメージボーナスなし。2ラウンド以内に破壊すれば現在の深度に等しいAPを入手可能。破壊できなかった場合像から裁きの光が放たれ、PC全員が「#{getRandomDiff(dice1, 66, d, 1)}」点の防護点無視ダメージを受ける。", - ] - - else - table = nil - end - - when 3 - area = "断崖" - case dice2 - when 1 - table = [ - "回復の泉。PC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。", - "休憩に丁度いい広場を見つけた。FPが2D回復するが、#{getRandomDiff(dice1, 12, d, 0)}判定を行うこと。PCの半数以上が失敗すると居心地が良すぎて離れづらくなり次の深度判定と地形変化が起きなくなる。その場合次もこのイベントを行うこと。", - "山小屋を発見し一休み。HPとFPが#{getRandomDiff(dice1, 13, d, 0)}回復する。4人で休んでいる場合暇つぶしに山小屋の四隅をぐるぐるまわって運動し始めるが、後から妙なことに気が付きMPが1D減少する。", - "キイチゴを栽培しているフラウに出会う。栄養満点。50GP払うことでFPとMPを#{getRandomDiff(dice1, 14, d, 0)}回復することができる(1人1回)", - "少し休憩できそうな洞窟を発見する。中には他のエクスプローラーが残していったと思われる道具もあった。#{getRandomDiff(dice1, 15, d, 0)}GPまでの好きな消耗品1つを入手して、大雨が降っていればそれも止む。", - "回復の泉。しかし山間の貴重な水源のため、亜人によって管理されており使用させてもらうには#{getRandomDiff(dice1, 16, d, 0)}GPが必要。パーティーに管理している亜人と同じ種族がいれば無料で使用可能。使用するとPC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。どの種族が管理しているかは1Dを振って決定する。 ----------- -1:ドラコニアン -2:リザードとワイズマン -3:フラウ -4:シルヴァテイル -5:ストームコーザー -6:グラント -----------", - ] - - when 2 - table = [ - "財宝(カギ・トラップなし)。財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギつき。行動を消費して#{getRandomDiff(dice1, 22, d, 0)}に成功すれば開く)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギなし、トラップつき。行動を消費して#{getRandomDiff(dice1, 23, d, 0)}に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギ、トラップつき。行動を消費して#{getRandomDiff(dice1, 24, d, 0)}に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "ミミックの罠。ランダムなキャラクターに3Dの「切り」ダメージを与える。#{getRandomDiff(dice1, 25, d, 0)}に成功すればこの罠を見抜いて無効化することができ、なおかつ「深度×#{getRandomDiff(dice1, 25, d, 1)}」GPを入手可能。", - "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。#{getRandomDiff(dice1, 26, d, 0)}に成功すればこの罠を見抜いて無効化することができる。", - ] - - when 3 - table = [ - "ショートカットコースを発見。#{getRandomDiff(dice1, 31, d, 0)}に成功すると深度が2D増加する。", - "鉱物を運んでいたのであろう、運搬用トロッコのレールを発見する。深度が1D増加する。ケイブウォーカーがいる場合#{getRandomDiff(dice1, 32, d, 0)}で判定を行い、更にその成功度分深度が増加する。", - "険しい斜面が続く。#{getRandomDiff(dice1, 33, d, 0)}に失敗すると道の選択を誤り深度が1D、FPが1点減少する。", - "空を飛べればショートカットできそうな崖を発見する。なんらかの飛行手段のあるPCがいる場合深度が2D増加する。(魔法などの場合その分のMPを消費すること。1人分でよい)飛行手段がなければ遠回りになり、深度が1D減少する。", - "遠くから山彦のような不思議な声が聞こえる。#{getRandomDiff(dice1, 35, d, 0)}に成功すると何者かが迷いやすい道を注意してくれているのがわかる。判定に失敗した場合、深度が1D減少する。", - "急に突風が吹いてきた!全員で#{getRandomDiff(dice1, 36, d, 0)}判定を行うこと。失敗したキャラクターは急斜面を落下して3Dの「叩き」ダメージを受ける。また、「失敗したPCの人数×1D」の深度が減少する。", - ] - - when 4 - table = [ - "#{getRandomDiff(dice1, 41, d, 0)}とエンカウント。2ラウンド経過するとキャンディークラウンは戦場全域に《べたべた》をかけて逃亡する。", - "あれはストームコーザー?・・・いや、魔物だ!#{getRandomDiff(dice1, 42, d, 0)}。うまく地形を利用して幻惑してくるため、この敵からの回避には-2のペナルティを受ける。", - "登山訓練中の魔族の小隊と出くわす。相手は疲れているようだ?#{getRandomDiff(dice1, 43, d, 0)}とエンカウント。FPは最大値の半分まで減少している。", - "突然魔族が飛びかかってきた!#{getRandomDiff(dice1, 44, d, 0)}。体の一部が宝石でできており、普通の#{getRandomDiff(dice1, 44, d, 1)}とは異なるようだ。撃破時に入手できるAPが2倍で、ドロップ判定のダイスが良い方に1点修正される。#{getRandomDiff(dice1, 44, d, 2)}", - "ケタケタ笑いながら空から襲撃をされる。#{getRandomDiff(dice1, 45, d, 0)}。彼女達はとても飽きっぽいので2ラウンド行動したあと深度判定の際に立ち去ってしまう(APとドロップは入手できない)#{getRandomDiff(dice1, 45, d, 1)}", - "#{getRandomDiff(dice1, 46, d, 0)}の縄張りに足を踏み入れる#{getRandomDiff(dice1, 46, d, 1)}。引き返して一度縄張りを離れるなら深度が2D減少する。そのまま進むのであればPC全員で反応判定を行うこと。(反応修正は容貌も含め全て適用。同性とみなす)1人でも「良い」以上の反応であれば見逃してもらえる。全員が「普通」以下の場合は戦闘になる。", - ] - - when 5 - table = [ - "ジャーンジャーン!げぇ、落石だ!!魔族がここぞとばかりに岩を落とし始める。#{getRandomDiff(dice1, 51, d, 0)}の判定に失敗したPCは#{getRandomDiff(dice1, 51, d, 1)}の「叩き」ダメージを受ける。「第六感」に事前に成功していれば全員が回避可能。", - "ファイトー!いっぱーつ!!足場が崩れ出す。#{getRandomDiff(dice1, 52, d, 0)}に失敗したPCは落下して#{getRandomDiff(dice1, 52, d, 1)}の「叩き」ダメージを受ける。成功したPCは体力判定を行い、落下するキャラを支えることができる。この判定に失敗した場合支えようとしたキャラクターも一緒にダメージを受ける。", - "滑りやすい岩を飛び移っていく道が続いている。敵味方全員が#{getRandomDiff(dice1, 53, d, 0)}判定を行い、失敗したキャラクターは転倒してFPに1点のダメージを受ける。浮遊・飛行して移動しているキャラクターはこの影響を受けない。#{getRandomDiff(dice1, 53, d, 1)}", - "『銀糸の甲殻』アルゲントゥムの巣が張られている。幸い主はいないようだ・・・?1Dを振って3以下だった敵味方全員はソーサルギアの《べたべた》の効果を受ける。#{getRandomDiff(dice1, 54, d, 0)}", - "美しい万年雪の中を進んでいたと思ったのも束の間、雪崩に遭遇してしまう!#{getRandomDiff(dice1, 55, d, 0)}か「第六感」に誰かが成功すれば回避可能。失敗すると敵味方全員が#{getRandomDiff(dice1, 55, d, 1)}の防護点無視ダメージ、その半分のFPダメージを受ける。", - "下から魔族が大量に登ってくる、今のうちに撃退しなくては。魔族の群れは「分類:魔族、#{getRandomDiff(dice1, 56, d, 0)}、ダメージボーナス有効」とみなし、どのヘクスからも攻撃可能。ラウンド終了後の深度判定時に、PC全員が「残りHP÷2」の防護点無視ダメージを受ける。シナリオ終了時に「与えたダメージ合計÷2」に等しいAPを得ることができる。", - ] - - when 6 - table = [ - "急に大雨が降り出した、屋外に避難したいところだが・・・地形が「洞窟」か「遺跡」に変更されるまで深度判定の成功度に#{getRandomDiff(dice1, 61, d, 0)}のペナルティを受ける。", - "カラーストーンの原石を見つける。行動ターンを消費して<採掘>か<技師/魔道具ー5>の判定を行い、「成功度×#{getRandomDiff(dice1, 62, d, 0)}GP」を入手することができる。クリティカル時は成功度を3倍に計算する。", - "不思議な岩がある。1Dを振って1・2であれば火炎、3・4であれば冷気、5・6であれば電撃特性の攻撃で破壊可能。#{getRandomDiff(dice1, 63, d, 0)}行動ターンを消費して岩を狙うと宣言すればよい。岩は全てのヘクスから攻撃可能で、破壊したあとには財宝が発見できる。財宝の中身は現在の深度に応じた財宝テーブルを使用する。", - "ストームコーザーが獲物を取った後調理をしている。このイベントが発生するとモンスターは消滅する。「こんなところで人間に会うなんて珍しいな、お前らも食っていくか?」10GPを支払うことでマジカルクッキング#{getRandomDiff(dice1, 64, d, 0)}の効果を得ることができる。", - "高山植物の群生地。#{getRandomDiff(dice1, 65, d, 0)}のいずれかで判定を行う。成功した場合、「深度×#{getRandomDiff(dice1, 65, d, 1)}」GP相当の薬草が入手可能。", - "岩壁が大きく崩れる!崩落に巻き込まれ深度が0になってしまう。#{getRandomDiff(dice1, 66, d, 0)}に成功すると何やら崩れたあとに鈍く輝く武器を発見する。武器、盾、鎧の中から好きなもの1つを入手することができる(#{getRandomDiff(dice1, 66, d, 1)}GPまで)", - ] - - else - table = nil - end - - when 4 - area = "水辺" - case dice2 - when 1 - table = [ - "回復の泉。PC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。", - "甲羅干しに適した暖かい小島を見つける。FPとMPを#{getRandomDiff(dice1, 12, d, 0)}回復。ワイズマンは回復量2倍。", - "魚の群れを発見する。行動を消費して<釣り>に成功すると、さらに行動ターンで<調理>判定を行うことでジャンル「魚」のマジカルクッキングを行うことができる。<釣り>と<調理>を行うキャラクターは別々でも構わない。できた料理の効果はその場で適用する。", - "ミントや菖蒲を育てているフラウに出会う。100GP払うと薬湯に入れてもらうことができる。FPとMPが生命力と同じ値だけ回復する。", - "リザードの集落につく。HPの減ったキャラクターがいれば持て囃され、マジカルクッキング「カリカリミミズ肉」をごちそうしてもらい、この先の道案内も買って出てくれる。そのラウンドの深度判定に+3のボーナスを得る。全員のHPが満タンの場合は、そっけない扱いをされ何も起こらない。", - "回復の泉に見せかけた毒の泉。パーティーメンバーのHP・MP・FPのいずれかが減少している場合このイベントは拒否できない。毒の水でHP・MP・FPに#{getRandomDiff(dice1, 16, d, 0)}のダメージを受ける。HP・MP・FPが全快のキャラクターはこの効果を受けない。#{getRandomDiff(dice1, 16, d, 1)}か「第六感」に成功すればこれが毒の泉だとわかる。", - ] - - when 2 - table = [ - "財宝(カギ・トラップなし)。財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギつき。行動を消費して#{getRandomDiff(dice1, 22, d, 0)}に成功すれば開く)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギなし、トラップつき。行動を消費して#{getRandomDiff(dice1, 23, d, 0)}に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギ、トラップつき。行動を消費して#{getRandomDiff(dice1, 24, d, 0)}に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "ミミックの罠。ランダムなキャラクターに3Dの「切り」ダメージを与える。#{getRandomDiff(dice1, 25, d, 0)}に成功すればこの罠を見抜いて無効化することができ、なおかつ「深度×#{getRandomDiff(dice1, 25, d, 1)}」GPを入手可能。", - "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。#{getRandomDiff(dice1, 26, d, 0)}に成功すればこの罠を見抜いて無効化することができる。", - ] - - when 3 - table = [ - "進みやすい浅瀬だ。深度が1D増加する。#{getRandomDiff(dice1, 31, d, 0)}に成功すればちょうどいいイカダを組み、深度が2D増加。", - "様々な漂流物が流れ込む船の墓場。障害物が多く進みにくい。#{getRandomDiff(dice1, 32, d, 0)}の判定に成功すれば深度が1D増加。失敗した場合深度が1D減少する。", - "大蓮のような植物の群生地。荷重レベルが「軽荷」以下のキャラクターがいる場合安全に移動できるようになり深度が1D増加する。全員「並荷」以上の場合は大蓮が絡まり深度が1D減少する。", - "周囲に深い霧が発生する。#{getRandomDiff(dice1, 34, d, 0)}の判定に失敗すると深度が1D減少する。「暗視」があれば「視覚-2」で判定可能。「方向感覚」があればまったく影響を受けない。", - "沼地で思うように進めない。#{getRandomDiff(dice1, 35, d, 0)}で判定を行い、失敗すると深度が1D減少する。ペット「スワンプランナー」を装備している場合と【ミズグモ】がある場合はまったく影響を受けない。", - "水流が複雑になっており思うように進めず戻されてしまう。#{getRandomDiff(dice1, 36, d, 0)}の判定に失敗すると深度が2D減少する。リザードかワイズマンは知力そのままで判定してもよい。", - ] - - when 4 - table = [ - "#{getRandomDiff(dice1, 41, d, 0)}とエンカウント。2ラウンド経過するとキャンディークラウンは戦場全域に《べたべた》をかけて逃亡する。", - "アシガル潜水隊と遭遇。#{getRandomDiff(dice1, 42, d, 0)}とエンカウント。<偽装>か「視覚-3」判定に成功すると水面に動く竹筒を発見可能。最初の判定に成功していればPC側のイニシアチブ値+1、失敗していれば敵の先手で戦闘を開始する。その際PC先手で進行中の場合もモンスター先手に変更される。", - "何か水面が揺れている。#{getRandomDiff(dice1, 43, d, 0)}。敵は全員【ハイドインシャドウ】状態。#{getRandomDiff(dice1, 43, d, 1)}判定に失敗すると敵の先手で戦闘を開始する。その際PC先手で進行中の場合もモンスター先手に変更される。", - "水辺で花を育てている少女に出会う・・・が、少女は#{getRandomDiff(dice1, 44, d, 0)}だった!彼女が育てている花の根本には無数の動物の死体が無残にも肥料にされている。遭遇したラウンドのイニシアチブ判定直後に恐怖判定を行うこと。", - "水かと思ったらスライムだった!?#{getRandomDiff(dice1, 45, d, 0)}。相手側のイニシアチブ判定には+3のボーナスがある。", - "高波にのった騎士が現れる。#{getRandomDiff(dice1, 46, d, 0)}。最初の攻撃に限り、【チャージアタック】時に追加で5ヘクス移動した扱いになる。", - ] - - when 5 - table = [ - "美しい歌声が響き渡る、意識が引きずり込まれそうだ。その場にいる全員(敵も)は#{getRandomDiff(dice1, 51, d, 0)}判定を行う。音量自動補正装置がある場合この効果を受けない。失敗した場合1ラウンド朦朧状態となる。朦朧としたキャラクターは深度判定も不可。", - "小舟で進んでいると、なにやら激しい水の音がする。この先は滝のようだ!行動を消費して#{getRandomDiff(dice1, 52, d, 0)}を行い、全員が失敗すると#{getRandomDiff(dice1, 52, d, 1)}の防護点無視ダメージを受ける。この判定がクリティカルだった場合、滝の裏に財宝の洞窟を発見する。罠や鍵はかかっておらず、財宝の中身は1段階高い深度の財宝テーブルを使用する。", - "船の墓場だ。強風でマストが倒れてくる。#{getRandomDiff(dice1, 53, d, 0)}に失敗したPCは#{getRandomDiff(dice1, 53, d, 1)}の「叩き」ダメージを受けて転倒する。", - "水がしょっぱい、ここは塩水のようだ。ミスリル製とアダマン製以外の金属鎧を身に着けている場合、#{getRandomDiff(dice1, 54, d, 0)}の判定に失敗すると防具の防護点#{getRandomDiff(dice1, 54, d, 1)}。下がった防護点は「簡易修理キット」などで修理は可能。ドライブギアの場合、シナリオ終了時にメンテナンスのため(受動防御+防護点)×50GPの費用がかかる。", - "ここの水は冷たい、気をつけないと体力を奪われてしまう。#{getRandomDiff(dice1, 55, d, 0)}判定を行い、失敗するとFPに#{getRandomDiff(dice1, 55, d, 1)}のダメージを受ける。リザードとワイズマンは生命力判定に-3のペナルティを受ける。", - "凄まじい勢いで間欠泉が噴き出している!#{getRandomDiff(dice1, 56, d, 0)}の判定に失敗すると。ランダムで1D人が間欠泉に直撃して、#{getRandomDiff(dice1, 56, d, 1)}の「叩き」ダメージを受ける。", - ] - - when 6 - table = [ - "傷付いて荒ぶった#{getRandomDiff(dice1, 61, d, 0)}を発見する。反応判定を行い(「動物共感」なら+4)13以上が出た場合、#{getRandomDiff(dice1, 61, d, 0)}はおとなしくなる。そのあと#{getRandomDiff(dice1, 61, d, 1)}の判定に成功すると、#{getRandomDiff(dice1, 61, d, 0)}がなつき、#{getRandomDiff(dice1, 61, d, 0)}(ペット)を手に入れることができる。反応判定が10~12の場合特に何もおこらない。反応判定が9以下だった場合、#{getRandomDiff(dice1, 61, d, 0)}が暴れてPC全員が1Dの防護点無視ダメージを受け、#{getRandomDiff(dice1, 61, d, 0)}は逃亡する。", - "なにやら派手な魚を見つける、あれはもしやアズマに伝わる幻の魚「ニシキゴイ」か!?行動を消費して#{getRandomDiff(dice1, 62, d, 0)}の判定に成功すると見事つり上げ、持ち帰ると#{getRandomDiff(dice1, 62, d, 1)}GPとなる。判定にファンブルすると逃げられ、以後判定できなくなる。撤退・全滅した場合ニシキゴイは消滅する。", - "カエルの合唱が響き渡る。何やら意味がある歌声に聞こえるが・・・#{getRandomDiff(dice1, 63, d, 0)}の判定に成功すると歌の意味を理解できる。「動物共感」があればこの判定に+4のボーナスを得る。カエル達は安全な道を教えてくれていたのだ。判定に成功した場合深度が2D増加する。判定に失敗すると毒の沼に足を踏み入れ、PC全員が#{getRandomDiff(dice1, 63, d, 1)}の防護点無視ダメージを受ける。", - "老齢のグラントが岩に腰かけ釣りをしている。このイベントが発生するとモンスターは消滅する。「どうだね、よかったら釣り勝負をやっていかないか?グラントの太公望(#{getRandomDiff(dice1, 64, d, 0)})とPCの<釣り>技能で行動を消費して即決勝負を行う。成功度で勝利した場合、「見事じゃ、そこにあるガラクタはワシには必要ない物じゃから好きに持っていくがいい」と財宝を渡してくれる。財宝の中身は1段階高い深度の財宝テーブルを使用する。", - "船の墓場だ、ここは何かありそうな感じがする。#{getRandomDiff(dice1, 65, d, 0)}に成功すると「2D×#{getRandomDiff(dice1, 65, d, 1)}」GPを入手できる。判定がクリティカルだった場合、それに加えて財宝も入手可能。財宝の中身は1段階高い深度の財宝テーブルを使用する。", - "貝の群生地だ。#{getRandomDiff(dice1, 66, d, 0)}に成功すると真珠が見つかる。行動を消費して<水泳-4>か<潜水>を行い、1人成功するごとに#{getRandomDiff(dice1, 66, d, 1)}GPを入手可能。水泳や潜水の判定に失敗した場合はFPに1点のダメージを受ける。", - ] - - else - table = nil - end - - when 5 - area = "森林" - case dice2 - when 1 - table = [ - "回復の泉。PC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。", - "鬱蒼とした森の奥に見事な佇まいの茶室を見つける。【ソチャデスガ】を使用した際の回復量が2倍になる。パーティーにサスライがいない場合は友好的なカラクリフラウ(CL6)がいて、「PTの人数×20」GPで<茶道15>の【ソチャデスガ】を使用してくれる。", - "おいしそうな果実を見つける。<植物学>か<動植物知識-3>で判定を行い、成功するとHPとFPが#{getRandomDiff(dice1, 13, d, 0)}回復する。", - "果実を育てているフラウに出会う。「PTの人数×20」GP払うとジャンル「果実」のマジカルクッキングを行うことができる。品質が良いので<調理>には+2のボーナスを得る。できた料理の効果はその場で適用する。", - "森の中にひっそりとたたずむジンジャを発見して、ナインテイルのカンヌシかミコが旅の無事を祈ってくれる。パーティー全員に【不死なる炎+5】がかかり、最終イベントに入るまで、死亡判定に自動的に成功するようになる。この効果が続いている間、保険を適用した状態で死亡判定に突入しても帰還せずにその戦闘を継続することが可能。", - "食人植物の花粉による回復の泉の幻影。パーティーメンバーのHP・MP・FPのいずれかが減少している場合このイベントは拒否できない。パーティーの誰かが#{getRandomDiff(dice1, 16, d, 0)}に成功しない限り食人植物の群生地にふらふらと入ってしまい、全員が#{getRandomDiff(dice1, 16, d, 1)}の「切り」ダメージを受ける。パーティーにフラウがいれば事前に気が付きダメージは受けない", - ] - - when 2 - table = [ - "財宝(カギ・トラップなし)。財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギつき。行動を消費して#{getRandomDiff(dice1, 22, d, 0)}に成功すれば開く)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギなし、トラップつき。行動を消費して#{getRandomDiff(dice1, 23, d, 0)}に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギ、トラップつき。行動を消費して#{getRandomDiff(dice1, 24, d, 0)}に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "ミミックの罠。ランダムなキャラクターに3Dの「切り」ダメージを与える。#{getRandomDiff(dice1, 25, d, 0)}に成功すればこの罠を見抜いて無効化することができ、なおかつ「深度×#{getRandomDiff(dice1, 25, d, 1)}」GPを入手可能。", - "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。#{getRandomDiff(dice1, 26, d, 0)}に成功すればこの罠を見抜いて無効化することができる。", - ] - - when 3 - table = [ - "#{getRandomDiff(dice1, 31, d, 0)}に成功すれば獣道を発見し深度が2D増加する。「動物共感」があれば判定不要。", - "複雑で迷いそうな密林に迷い込んでしまう。鳥たちが古い言葉の会話を鳴声で再現しており、#{getRandomDiff(dice1, 32, d, 0)}に成功するとこの森について秘密がわかり深度が1D増加する。失敗した場合道に迷い進行度が1D減少する。", - "兎たちがこちらを伺っている。「動物共感」があれば道案内をしてくれ、深度が1D増加する。この時マジカルクッキングで作ったものが「キャロットタルト」だった場合は「動物共感」があるのと同じように深度が1D増加するうえ、以後ラウンド開始時にずっとこの効果を得ることができる。", - "毒草の群生地だ。直進すると進行度が1D増加するが、#{getRandomDiff(dice1, 34, d, 0)}判定に失敗するとHPとFPに#{getRandomDiff(dice1, 34, d, 1)}の防護点無視ダメージを受ける。遠回りする場合、進行度が1D減少する。", - "背の高い草が生い茂っており、岩も多く進みづらい、飛行を能力を持ったPCが先の様子を確認しない限り、移動に手間取り進行度が2D減少する。ペット「スカイサーチャー」や魔法《飛行》《魔法の目》でも確認可能。", - "森林火災に遭遇する、進行方向から動物たちが逃げ出していくのが見える。迂回して安全策を通るなら進行度が2D減少する。このまま進む場合シナリオ終了までラウンド開始時に炎により#{getRandomDiff(dice1, 36, d, 0)}の「叩き」ダメージを受ける。", - ] - - when 4 - table = [ - "#{getRandomDiff(dice1, 41, d, 0)}とエンカウント。2ラウンド経過するとキャンディークラウンは戦場全域に《べたべた》をかけて逃亡する。", - "動物狩りを楽しんでいた魔族と偶然遭遇してしまう。#{getRandomDiff(dice1, 42, d, 0)}とエンカウント。#{getRandomDiff(dice1, 42, d, 1)}には全員《ぼやけ5》がかかった状態。#{getRandomDiff(dice1, 42, d, 2)}減らしておくこと。", - "魔族の偵察隊と遭遇する。#{getRandomDiff(dice1, 43, d, 0)}とエンカウント。オウルセージのうち1体は行動ターンに逃亡して他の魔族に警戒を呼び掛けに行く。これを阻止できなかった場合、以後出現する「分類:魔族」のモンスターは物理攻撃の致傷力+#{getRandomDiff(dice1, 43, d, 1)}、防護点+#{getRandomDiff(dice1, 43, d, 1)}のボーナスを得る。", - "木々の間を飛び回る何かに背後から突然襲撃される。#{getRandomDiff(dice1, 44, d, 0)}。ペット「スカイサーチャー」か「広視界」がなければ必ず相手の先制攻撃になり、その際PC先手で進行中の場合もモンスター先手に変更される。", - "果物を採取する少女達を発見する。しかしよく見ると血塗れの鋏を持つ人形だった!#{getRandomDiff(dice1, 45, d, 0)}とエンカウント。パーティーメンバー全員が#{getRandomDiff(dice1, 45, d, 1)}で判定を行い、成功すれば回避可能。", - "前方の森に何か違和感を感じる。周囲に擬態していた#{getRandomDiff(dice1, 46, d, 0)}。「視覚-5」か「第六感」の判定に成功していなければ必ず相手の先制攻撃になり、その際PC先手で進行中の場合もモンスター先手に変更される。判定成功時は深度を1D減少させて戦闘回避も可能。", - ] - - when 5 - table = [ - "良い香りが周囲に満ちていく。闘争心を失わせるキノコの香りで、戦闘中だった場合敵味方ともに剣を収め強制的に戦闘終了となる。また、以後シナリオ終了まで「平和愛好:専守防衛」の特徴を得る。(意志判定に失敗するとイニシアチブ判定に自動敗北)この効果を受けたくない場合、#{getRandomDiff(dice1, 51, d, 0)}のいずれかの判定に成功する必要がある。この判定には「鋭敏味覚」のレベル分ボーナスを得る。", - "美味しそうな果実が生っているのを見つける。意志判定に失敗するとすぐに食べてしまうが(「グルメ」の場合「意志-3」)興奮作用のある実のため頭に血が昇ってしまう。HPとFPが#{getRandomDiff(dice1, 52, d, 0)}回復するが「バーサーク」の特徴を得る。", - "巧妙なベアトラップが仕掛けてある。ランダムなキャラクター1人(モンスターも含む)に#{getRandomDiff(dice1, 53, d, 0)}の「切り」ダメージを与える。以後ターンの最初に#{getRandomDiff(dice1, 53, d, 1)}の判定に成功するまで移動不可。本人か隣接したキャラクターが行動を消費して#{getRandomDiff(dice1, 53, d, 2)}で判定することでも解除可能。", - "突然のスコールに見舞われる。#{getRandomDiff(dice1, 54, d, 0)}判定を行い、失敗すると体温が奪われFPに#{getRandomDiff(dice1, 54, d, 1)}のダメージを受ける。リザードとワイズマンはこの効果を受けない。<気象学-3>に成功すればあらかじめ雨宿りができ、この効果を受けない。森林イベント3-6の山火事が起きていた場合、その効果は消滅する。", - "巨大食虫植物の群生地に足を踏み入れてしまう。#{getRandomDiff(dice1, 55, d, 0)}で判定を行い、失敗するとランダムで1人が植物に飲み込まれてしまう。強酸により#{getRandomDiff(dice1, 55, d, 1)}の「叩き」ダメージを受け、金属でない鎧を装備していた場合1Dで1、2が出ると破壊される。", - "すさまじい悪臭を放つ巨大な花。#{getRandomDiff(dice1, 56, d, 0)}判定に失敗したキャラクターはシナリオ終了まで知力が#{getRandomDiff(dice1, 56, d, 1)}点減少する(最大MPは変化しないものとする)また、対応技能が<技師/魔道具>以外のペットは匂いで気絶してシナリオ終了まで効果を得られなくなる。", - ] - - when 6 - table = [ - "魔族の狩りにより深く傷ついたクレッセントムーンを発見する。<応急処置-7>か<獣医-3>の判定に成功すると、クレッセントムーンの傷は完治し、クレッセントムーン(ペット)を手に入れることができる。", - "少し開けた原っぱで、フラウのダンスパーティーに誘われる。このイベントが発生するとモンスターは消滅する#{getRandomDiff(dice1, 62, d, 0)}で判定を行い、成功するとそこにキノコが生え始める。フラウは協力してくれたお礼にこのキノコを分けてくれる。大変貴重な珍味で、持ち帰ると「(1D+成功度)×#{getRandomDiff(dice1, 62, d, 1)}」GPになる。", - "フラウたちが「森ガールファッションコンテスト」を開催しており、その助っ人を依頼される。このイベントが発生するとモンスターは消滅する。#{getRandomDiff(dice1, 63, d, 0)}に成功すると自然と一体化したファッションが高評価を受け、お礼に#{getRandomDiff(dice1, 63, d, 1)}(装飾品)を入手できる。", - "霊樹の花にたまった水が魔力を帯びている。<神秘学>に成功するとそれにポーションとしての効果があることが分かる。1Dを振り、その出目に対応したポーションが手に入る。 ----------- -#{getRandomDiff(dice1, 64, d, 0)} -----------", - "迷子のフラウを見つける。イベント表で他のフラウに出会った場合そのフラウと知り合いで、お礼に財宝を渡してくれる。財宝の中身は1段階高い深度の財宝テーブルを使用する。フラウに出会えずシナリオをクリアした場合も、1段階低い深度の財宝テーブルの中身をくれる。", - "ランダムに選んだPC1人が、うっかり泉に武器を落としてしまう。すると女神が出て落とした武器と同じ技能で扱うもので、価格が一ランク上のアイテムを落としたのかと聞いてくる。落とした武器と提示してきた武器の差額を1000で割った値をペナルティとして意志判定を行うこと。「守銭奴」はペナルティが2倍になるが、「正直」の場合は自動的に成功になる。成功すると正直に答え提示されたアイテムを両方手に入れることができるが、失敗すると嘘をついて女神を怒らせてしまい、武器を失う。落とした武器が10000GP以上だった場合や、それ以上の武器がアイテムリストになかった場合、自動的にアイテムは返却してもらえる。", - ] - - else - table = nil - end - - when 6 - area = "墓地" - case dice2 - when 1 - table = [ - "回復の泉。PC全員のHP・MP・FPが完全に回復する。気絶・朦朧状態も回復。", - "アズマ風の墓石が佇んでいる。<地域知識/アズマ><地域知識/カベノナカ-4>のいずれかで判定を行う。成功すると正しくお参りを行うことができ、HP、FP、MPの全てが#{getRandomDiff(dice1, 12, d, 0)}回復する。失敗すると霊を怒らせ、全員がFPに#{getRandomDiff(dice1, 12, d, 1)}のダメージを受ける。", - "墓守の休憩所を見つける。様々な薬草が置いてあり、行動を消費して<応急処置>を行うことができる。成功すれば#{getRandomDiff(dice1, 13, d, 0)}のHPが回復する。", - "ヒガンバナの世話をするフラウと出会う。100GPを払うと「ヒガンバナの毒」を武器に塗ってもらうことができる。最終ダメージに+2の効果があり、武器の通じない「ファントム」のようなモンスターにも武器による攻撃が有効になる。この効果はシナリオ終了時まで持続する。", - "シルヴァテイルのネクロマンサー達が集まって、何やら怪しい儀式をしている。道中で死亡もしくは保険を適用して強制送還されたキャラクターがいれば、#{getRandomDiff(dice1, 15, d, 0)}GPを支払うことで復活させてもらうことができる。それ以外の場合、何か不気味な儀式に不安を感じ、FPを1点消耗する。", - "回復の泉があるのだが・・・?パーティーメンバーのHP・MP・FPのいずれかが減少している場合このイベントは拒否できない。HP・MP・FPが完全に回復して気絶や朦朧からも立ち直るが、黄泉の国の水を飲んだことで迷宮から出るまで「分類:アンデッド」となる。回復魔法の効果などは通常の効果があるが、一部の技や魔法で特攻を受ける。《閃光》を受けた際も3Dの防護点無視ダメージを受ける。", - ] - - when 2 - table = [ - "財宝(カギ・トラップなし)。財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギつき。行動を消費して#{getRandomDiff(dice1, 22, d, 0)}に成功すれば開く)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギなし、トラップつき。行動を消費して#{getRandomDiff(dice1, 23, d, 0)}に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "財宝(カギ、トラップつき。行動を消費して#{getRandomDiff(dice1, 24, d, 0)}に成功すれば解除可能)財宝の中身は1段階低い深度の財宝テーブルを使用する。", - "ミミックの罠。ランダムなキャラクターに3Dの「切り」ダメージを与える。#{getRandomDiff(dice1, 25, d, 0)}に成功すればこの罠を見抜いて無効化することができ、なおかつ「深度×#{getRandomDiff(dice1, 25, d, 1)}」GPを入手可能。", - "トレジャーイーターの罠。冒険中に入手したアイテム(消耗品・GP以外)を全て失う。#{getRandomDiff(dice1, 26, d, 0)}に成功すればこの罠を見抜いて無効化することができる。", - ] - - when 3 - table = [ - "なにもなさそうな道だが、#{getRandomDiff(dice1, 31, d, 0)}で判定を行う。成功するとちょっとなにかでそうな近道を発見する。深度が2D増加するが、「臆病」なキャラクターは意志判定が必要。", - "舗装されていて通りやすい道が続く。深度が1D増加する。途中には祠があり、マジカルクッキングで作った食べ物を持っていた場合、それをお供えすることでHP・MP・FPが全回復する。", - "道が途切れ、草が伸び放題の荒れ地に出る。進むには骨が折れそうだ。#{getRandomDiff(dice1, 33, d, 0)}に成功すれば深度+2。失敗するとFPに#{getRandomDiff(dice1, 33, d, 1)}点のダメージを受ける。", - "どこまでも卒塔婆とススキしかない・・・同じ景色が続き進んでいるか怪しくなる。2分の1の確率で深度が1D減少する。「方向感覚」があればこの効果は無視できる。", - "地面から突如骨の手が伸び移動を邪魔する。全員「移動力+5」を目標値に判定を行い、失敗したキャラクターの人数だけ深度が減少する。【死者に鞭】を持つネクロマンサーがいればこの効果は無視できる。", - "先へ進む道には死者の呪いが満ちている。そのまま進むと深度が1D増加するが、以後全ての判定の目標値に#{getRandomDiff(dice1, 36, d, 0)}のペナルティを受ける。遠回りをすると悪影響は受けないが深度が1D減少する。【死者に鞭】を持つネクロマンサーがいれば直進しても悪影響を受けない。", - ] - - when 4 - table = [ - "#{getRandomDiff(dice1, 41, d, 0)}とエンカウント。2ラウンド経過するとキャンディークラウンは戦場全域に《べたべた》をかけて逃亡する。", - "朽ちていた骨が突如起き上がり襲いかかる。#{getRandomDiff(dice1, 42, d, 0)}。「第六感」の判定に成功していなければ必ず相手の先制攻撃になり、その際PC先手で進行中の場合もモンスター先手に変更される。", - "不吉な歌を口すざみ、ステップを踏みながらかわいらしい少女が近づいてくる。#{getRandomDiff(dice1, 43, d, 0)}とエンカウント。#{getRandomDiff(dice1, 43, d, 1)}の「華劇」は最初から#{getRandomDiff(dice1, 43, d, 2)}段階進行している。", - "遠くから不吉な進軍の音を聞く。PCは全員「聴覚-4」か「第六感」で判定を行うこと。ネクロマンサーは知力判定を行ってもよい。誰か1人でも判定に成功すれば、魔将グレイヴディガーの軍勢が迫っているのを知り、深度を1D減少させてひとまず逃亡することができる。全員判定に失敗してしまうとPCは魔将グレイヴディガー(CL200)とその配下である無数の亡霊騎士団と相対することになる。#{getRandomDiff(dice1, 44, d, 0)}", - "貴族の棺とそれを守る人形。#{getRandomDiff(dice1, 45, d, 0)}とエンカウント。棺の中には貴金属が入っており、#{getRandomDiff(dice1, 45, d, 1)}を倒せば「深度×#{getRandomDiff(dice1, 45, d, 2)}」GPを入手可能。", - "壁に埋まった10mはあろうかという巨大な蛇の骨が、動き出し襲いかかってくる。#{getRandomDiff(dice1, 46, d, 0)}。", - ] - - when 5 - table = [ - "PC全員に墓から突然幻影が襲いかかる。#{getRandomDiff(dice1, 51, d, 0)}判定に失敗すると気を取られ「受け」か「止め」を1回消費する。「受け」も「止め」も行えない場合腰を抜かして転倒してしまう。", - "ギロチンが突如PCのうちランダムに1人に目掛けて落ちてくる。盾の受動防御を無視した#{getRandomDiff(dice1, 52, d, 0)}に失敗すると#{getRandomDiff(dice1, 52, d, 1)}の「切り」ダメージを受ける。", - "用途不明の建物に迷い込む。#{getRandomDiff(dice1, 53, d, 0)}に成功すると、その建物が火葬場であると判明し、すぐに脱出できる。判定に失敗するとPC全員が火炎で#{getRandomDiff(dice1, 53, d, 1)}の「叩き」ダメージを受ける。", - "墓石が動き出し中から何かが出てこようとしている。行動を消費して#{getRandomDiff(dice1, 54, d, 0)}で判定を行い、成功すればなにも起こらない。失敗した場合、探索中に倒されたモンスターの中で最もCLが高いモンスターと再度エンカウントする(深度判定終了後)該当するモンスターが存在しなかった場合、#{getRandomDiff(dice1, 54, d, 1)}が出現する。", - "金の亡者が群がってくる。「2D×#{getRandomDiff(dice1, 55, d, 0)}」GPを払うと支払うと満足して去っていくが、支払を拒否した場合はPC全員が#{getRandomDiff(dice1, 55, d, 1)}の「叩き」ダメージを受ける。【死者に鞭】を持つネクロマンサーがいればこの効果は無視できる。", - "ランダムなPC1人の武器が死者の怨念を吸い取り魔剣となる。魔剣は致傷力に+2のボーナスを得るが、所有者は最大HPが5点減少し、不利な特徴「バーサーク」「残忍」を持つようになる。魔剣には「マジックパウダー:無」が常にかかっているものとみなす。魔剣となった武器は売却不可能で、不要な場合捨てるしかない。すでに魔剣になっている武器と、グラントの宝剣は魔剣にはならない。", - ] - - when 6 - table = [ - "雷が突然鳴り響く。その場にいる全てのキャラクター(モンスター含む)は全員3Dを振り、金属鎧を着ているキャラクターはその値に+3する。この値が一番高いキャラクターは電撃により#{getRandomDiff(dice1, 61, d, 0)}の「叩き」ダメージを受ける(金属鎧の防護点を無視)", - "タルの上に腰かけ酒を口に運び続ける、減ることのない酒に向き合うスケルトンがいる。「どうだ、お前らも飲んでいくか?」と声をかけられる。酒を飲む場合、#{getRandomDiff(dice1, 62, d, 0)}判定を4回連続で行うこと。全て成功した場合は、「ついに酒が切れたか、最後の晩酌に付き合ってもらって感謝する」と感謝を述べて財宝を渡してくれる。財宝の中身は1段階高い深度の財宝テーブルを使用する。途中で1度でも失敗した場合、酒に悪酔いしてシナリオ終了まで全ての判定に-1のペナルティを受ける。", - "妖しい輝きを放つ宝石を発見する。手にとると呪われてシナリオ終了まで全ての判定に#{getRandomDiff(dice1, 63, d, 0)}のペナルティを受ける。手にとらない場合は意志判定に成功しなければならず、「守銭奴」「好奇心」「直情」がある場合意志判定に-3のペナルティを受ける(不利な特徴が複数ある場合修正は累積する)無事持ち帰った場合呪いは解け、#{getRandomDiff(dice1, 63, d, 1)}GPで売却できる", - "朽ちたギアの墓場。まだ使えるギアがあるかもしれない。<技師/魔道具>の判定を行い、5成功以上ならアイテムが入手可能。アイテムの内容は1Dで決定する。 ----------- -#{getRandomDiff(dice1, 64, d, 0)} -----------", - "うすら寒い気配の漂う川辺に出る。川辺には渡し守らしき、ローブをかぶった2人の少女がいる。1人あたり#{getRandomDiff(dice1, 65, d, 0)}GPを支払えば深度が1D増加する。支払を拒否した場合は#{getRandomDiff(dice1, 65, d, 1)}。", - "『千ノ戦イデ千ノ勝チ方ヲ知ル者、ココニ眠ル』と刻まれた棺を見つける。「好奇心」「直情」のキャラクターは開けずにいるには意志判定が必要。棺を開けた場合は#{getRandomDiff(dice1, 66, d, 0)}。勝利した場合、通常のドロップとは別に#{getRandomDiff(dice1, 66, d, 1)}(《戻る武器》は無し)が必ず手に入る。 ----------- -#{getRandomDiff(dice1, 66, d, 2)} -----------", - ] - - else - table = nil - end - - else - return nil - end - - return area, dif, table - end - - def getRandomDiff(dice1, dice23, dif, index) - table = [] - - case dice1 - when 1 # 洞窟 - table = [ - [12, [ - ['1', '2', '3', '4'] - ]], - [13, [ - ['<植物学>か<動植物知識-3>', '<植物学-2>か<動植物知識-5>', '<植物学-4>か<動植物知識-7>', '<植物学-8>か<動植物知識-11>'], - ['5', '10', '15', '20'], - ]], - - [22, [ - ['<鍵開け-3>', '<鍵開け-5>', '<鍵開け-7>', '<鍵開け-11>'] - ]], - [23, [ - ['<罠-3>', '<罠-5>', '<罠-7>', '<罠-11>'] - ]], - [24, [ - ['<罠-3><鍵開け-3>', '<罠-5><鍵開け-5>', '<罠-7><鍵開け-7>', '<罠-11><鍵開け-11>'] - ]], - [25, [ - ['<罠-5>', '<罠-5>', '<罠-7>', '<罠-11>'], - ['100', '200', '300', '500'], - ]], - [26, [ - ['<罠-5>', '<罠-5>', '<罠-7>', '<罠-11>'] - ]], - - [34, [ - ['<軽業>', '<軽業-2>', '<軽業-4>', '<軽業-8>'], - ['3D', '4D', '6D', '10D'], - ]], - [35, [ - ['HP30', 'HP60', 'HP90', 'HP150'] - ]], - [36, [ - ['「知力-1」', '「知力-2」', '「知力-3」', '「知力-5」'] - ]], - - [41, [ - ['キャンディークラウン(CL40)', 'キャンディークラウン(CL40)「1D-3」匹(最低1匹)', 'キャンディークラウン(CL40)「1D-2」匹(最低1匹)、出目が6だった場合ゴールデンクラウン(CL177)1匹', 'ゴールデンクラウン(CL177)'] - ]], - [42, [ - ['ベルセルク(CL7)×3とエンカウント。', 'ベルセルク(CL7)×3とエンカウント。', 'ベルセルク(CL15)×3とエンカウント、命中+10、ST24、HP+40、FP+8。', 'ベルセルク(CL25)×3とエンカウント、命中+20、ST32、HP+90、FP+18。'], - ['争っていたためHPとFPは半減している', '', '', ''], - ]], - [43, [ - ['ロックバトラー(CL6)×3とエンカウント。', 'ガーゴイル(CL10)×3とエンカウント、【ハイドインシャドウ】を追加。', 'ガーゴイル(CL15)×3とエンカウント、以下のように強化。', 'ザッハーク(CL39)×2とエンカウント。'], - ['', '', ' - ---------- - ガーゴイル(CL15) 魔族/岩石 - ST20 DX13 IQ13 HT18 HP63 FP33 - 受防3 防護18 移動6(飛行) よけ6 受け8 止め- - ガーゴイルの戦槌16(両手メイス)・・・命中20 3d+8「叩き」 重量5 - ・ニンジャ - 【ハイドインシャドウ】 - ・グラント - 【グランドインペイル+3】【エクステンドインペイル】【トルマリンスパーク+3】 - 【チェーンスパーク】【グラビティブレイク+4】【グラビティパニッシュ】 - ----------', ''], - ]], - [44, [ - ['デビルホール(CL18)とエンカウント。', 'デビルホイール(CL22)とエンカウント、防護点+2、HP+12。', 'デビルホイール(CL26)とエンカウント、防護点+4、HP+24。', 'ムスペルヘイムの獣(CL65)とエンカウント。'], - ['5D', '6D', '8D', '12D'], - ]], - [45, [ - ['3D', '4D', '5D', '6D'], - ['ヘルハウンド(CL12)、インプ(CL3)×2', 'ヘルハウンド(CL12)×2', 'フェニックス(CL25)、ヘルハウンド(CL12)×2', '火龍ヘルブレイザー(CL50)、ケルベロス(CL33)'], - ]], - [46, [ - ['1D', '1D+1', '2D', '3D'], - ['アイスメイデン(CL10)、アイスリザード(CL7)、スノー(CL3)', 'カロン(CL12)×2、アイスメイデン(CL10)', 'クリスタルビースト(CL25)×2', '氷龍グレイシャル(CL65)'], - ]], - - [52, [ - ['3ヘクス', '5ヘクス', '7ヘクス', '12ヘクス'], - ['3D', '5D', '7D', '12D'], - ]], - [53, [ - ['「生命力-4」', '「生命力-6」', '「生命力-8」', '「生命力-12」'] - ]], - [54, [ - ['2D', '3D', '5D', '10D'] - ]], - [55, [ - ['「よけ」', '「よけ-2」', '「よけ-4」', '「よけ-8」'], - ['5D', '7D', '9D', '15D'], - ]], - - [61, [ - ['<天文学-5>', '<天文学-5>', '<天文学-7>', '<天文学-11>'], - ['レア装飾品「星の怒り」かレア魔法《彗星》(好きな方)', 'レア装飾品「星の怒り」かレア魔法《彗星》(好きな方)', 'レア魔法《流星群》', 'レア魔法《滅びの矢》'], - ]], - [62, [ - ['2', '3', '4', '5'] - ]], - [63, [ - ['7', '9', '11', '15'] - ]], - [64, [ - ['50', '100', '150', '200'] - ]], - [66, [ - ['《粉砕3》', '《粉砕4》', '《粉砕6》', '《粉砕10》'], - ['HP30', 'HP60', 'HP90', 'HP150'], - ]], - ] - - when 2 # 遺跡 - table = [ - [12, [ - ['2D', '3D', '4D', '6D'] - ]], - [13, [ - ['<錬金術>か<医師-3>', '<錬金術-2>か<医師-5>', '<錬金術-4>か<医師-7>', '<錬金術-8>か<医師-11>'] - ]], - [16, [ - ['3000GP', '4000GP', '6000GP', '10000GP'], - ['5000GP', '10000GP', '20000GP', '40000GP'], - ['8D', '10D', '15D', '20D'], - ]], - - [22, [ - ['<鍵開け-3>', '<鍵開け-5>', '<鍵開け-7>', '<鍵開け-11>'] - ]], - [23, [ - ['<罠-3>', '<罠-5>', '<罠-7>', '<罠-11>'] - ]], - [24, [ - ['<罠-3><鍵開け-3>', '<罠-5><鍵開け-5>', '<罠-7><鍵開け-7>', '<罠-11><鍵開け-11>'] - ]], - [25, [ - ['<罠-5>', '<罠-5>', '<罠-7>', '<罠-11>'], - ['100', '200', '300', '500'], - ]], - [26, [ - ['<罠-5>', '<罠-5>', '<罠-7>', '<罠-11>'] - ]], - - [31, [ - ['<身振り-3><演技><演劇>', '<身振り-5><演技-2><演劇-2>', '<身振り-7><演技-4><演劇-4>', '<身振り-11><演技-8><演劇-8>'], - ]], - [32, [ - ['<モンスター知識-5>か<地域知識/カベノソト-3>', '<モンスター知識-7>か<地域知識/カベノソト-5>', '<モンスター知識-9>か<地域知識/カベノソト-7>', '<モンスター知識-13>か<地域知識/カベノソト-11>'], - ]], - [33, [ - ['に等しい', '×2の', '×3の', '×5の'], - ]], - [34, [ - ['<登攀>', '<登攀-2>', '<登攀-4>', '<登攀-8>'], - ]], - [35, [ - ['「敏捷力」', '「敏捷力-2」', '「敏捷力-4」', '「敏捷力-8」'], - ['6D', '8D', '10D', '15D'], - ]], - [36, [ - ['「知力-5」', '知力-6', '「知力-7」', '「知力-9」'], - ]], - - [41, [ - ['キャンディークラウン(CL40)', 'キャンディークラウン(CL40)「1D-3」匹(最低1匹)', 'キャンディークラウン(CL40)「1D-2」匹(最低1匹)、出目が6だった場合ゴールデンクラウン(CL177)1匹', 'ゴールデンクラウン(CL177)'] - ]], - [42, [ - ['ガーゴイル(CL10)とエンカウント', 'ガーゴイル(CL15)とエンカウント、以下のように強化', 'ザッハーク(CL39)とエンカウント', 'ラダマンティスの蛇(CL50)×2とエンカウント、必ず敵の先制攻撃'], - ['', ' - ---------- - ガーゴイル(CL15) 魔族/岩石 - ST20 DX13 IQ13 HT18 HP63 FP33 - 受防3 防護18 移動6(飛行) よけ6 受け8 止め- - 宝石への命中判定ペナルティは-10 - ガーゴイルの戦槌16(両手メイス)・・・命中20 3d+8「叩き」 重量5 - ・ニンジャ - 行動:【ハイドインシャドウ】 FP1 姿を消す 「視覚-5」で発見可能 - ・グラント - 行動:【グランドインペイル+3】+【エクステンドインペイル+1】(両手メイス) FP10 - 3D+8「叩き」 受動防御無視「よけ」のみ 半径3ヘクス攻撃 射程5 - 行動:【トルマリンスパーク+2】+【チェーンスパーク】(両手メイス) FP7 - 3D+8「叩き」 命中もしくは「受け」「止め」時に電撃で2D+2の追加ダメージ - 行動:【グラビティブレイク+2】+【グラビティパニッシュ】(両手メイス) FP7 - 3D+13「叩き」 「荷重レベル+3」の回避ペナルティ 命中後1ターンペナルティ持続 - ----------', '', ''], - ]], - [43, [ - ['スターゲイザー(CL10)、ウイングシレイブ(CL4)', 'スターゲイザー(CL10)×2、ポイズンリリー(CL7)', 'コスモロジスト(CL20)×2、オウルコマンダー(CL18)', '栄光の天使(CL60)、ヴァルキリー(CL20)×2'], - ]], - [44, [ - ['<文学>か<礼儀作法-3>', '<文学-3>か<礼儀作法-6>', '<文学-6>か<礼儀作法-9>', '<文学-12>か<礼儀作法-15>'], - ['ヤシャ(CL10)、スケルトン(CL3)×2', 'ヤシャ(CL15、ST17、HP43、FP28、命中22に強化)、ゴースト(CL10)×2', 'ヤシャ(CL25、ST23、HP63、FP38、命中30に強化)、カロン(CL12)×2', 'コンゴウ(CL60)×2'], - ]], - [45, [ - ['ヘルハウンド(CL12)', 'ケルベロス(CL33)', '火龍ヘルブレイザー(CL50)', '煉獄龍バーガトリ(CL100)'], - ]], - [46, [ - ['ゴーレム(CL12)', 'ミスリルゴーレム(CL27)', 'アダマンゴーレム(CL45)', 'カラクリヒメショウグン(CL75)'], - ['2D', '3D', '4D', '4D'], - ]], - - [51, [ - ['「よけ」', '「よけ-2」', '「よけ-4」', '「よけ-8」'], - ['1D+3', '2D+1', '2d+3', '4D'], - ['「生命力」', '「生命力-2」', '「生命力-4」', '「生命力-8」'], - ['1D', '2D', '3D', '5D'], - ]], - [52, [ - ['「生命力-3」', '「生命力-5」', '「生命力-7」', '「生命力-11」'], - ]], - [53, [ - ['HPを2倍に計算しCLは10とする', 'HPを3倍に計算しCLは15とする', 'HPを4倍に計算しCLは20とする', 'HPを6倍に計算しCLは30とする'], - ]], - [54, [ - ['「意志」', '「意志-2」', '「意志-4」', '「意志-8」'], - ]], - [56, [ - ['「現在の深度÷2」以下のCLのモンスター', '「現在の深度」以下のCLのモンスター', '「現在の深度×1.5」以下のCLのモンスター', 'CL80以下のモンスター(ネームド以外)'], - ]], - - [62, [ - ['6', '7', '8', '10'], - ['9', '10', '11', '14'], - ['12', '13', '14', '16'], - ]], - [64, [ - ['<医師>か<考古学>', '<医師-2>か<考古学-2>', '<医師-4>か<考古学-4>', '<医師-8>か<考古学-8>'], - ]], - [65, [ - ['', '', '、ゴールデンクラウン(CL177)', '、ゴールデンクラウン(CL177)×2'], - ]], - [66, [ - ['30', '60', '90', '150'], - ['「深度÷2」', '「深度」', '「深度×1.5」', '「深度×2」'], - ]], - ] - - when 3 # 断崖 - table = [ - [12, [ - ['「意志」', '「意志-2」', '「意志-4」', '「意志-7」'], - ]], - [13, [ - ['2D', '3D', '4D', '6D'], - ]], - [14, [ - ['1D', '2D', '3D', '5D'], - ]], - [15, [ - ['500', '1000', '2000', '4000'], - ]], - [16, [ - ['500', '1000', '2000', '4000'], - ]], - - [22, [ - ['<鍵開け-3>', '<鍵開け-5>', '<鍵開け-7>', '<鍵開け-11>'], - ]], - [23, [ - ['<罠-3>', '<罠-5>', '<罠-7>', '<罠-11>'], - ]], - [24, [ - ['<罠-3><鍵開け-3>', '<罠-5><鍵開け-5>', '<罠-7><鍵開け-7>', '<罠-11><鍵開け-11>'], - ]], - [25, [ - ['<罠-5>', '<罠-5>', '<罠-7>', '<罠-11>'], - ['100', '200', '300', '500'], - ]], - [26, [ - ['<罠-5>', '<罠-5>', '<罠-7>', '<罠-11>'], - ]], - - [31, [ - ['<登攀>', '<登攀-2>', '<登攀-4>', '<登攀-7>'], - ]], - [32, [ - ['<運転/アカシックホイール>', '<運転/アカシックホイール-2>', '<運転/アカシックホイール/-4>', '<運転/アカシックホイール-7>'], - ]], - [33, [ - ['<生存>', '<生存-2>', '<生存-4>', '<生存-7>'], - ]], - [35, [ - ['<神秘学>', '<神秘学-2>', '<神秘学-4>', '<神秘学-7>'], - ]], - [36, [ - ['「体力」', '「体力-2」', '「体力-4」', '「体力-8」'], - ]], - - [41, [ - ['キャンディークラウン(CL40)', 'キャンディークラウン(CL40)「1D-3」匹(最低1匹)', 'キャンディークラウン(CL40)「1D-2」匹(最低1匹)、出目が6だった場合ゴールデンクラウン(CL177)1匹', 'ゴールデンクラウン(CL177)'], - ]], - [42, [ - ['ウイングスレイブ(CL4)×2とエンカウント', 'ウイングスレイブ(CL8)×2とエンカウント、致傷力+1、命中+2、HP+8', 'ウイングスレイブ(CL12)×2とエンカウント、致傷力+3、命中+6、HP+16', 'ガルーダ(CL40)×2とエンカウント'], - ]], - [43, [ - ['ブラックナイト(CL10)、ソルジャー(CL4)×2、オーク(CL3)', 'ブラックナイト(CL10)×2、ハタモト(CL10)、サーバント(CL5)', 'サーバントマスター(CL35)、ヘルハウンド(CL12)×2', 'ジェネラル(CL55)、サーバントマスター(CL35)、ケルベロス(CL33)'], - ]], - [44, [ - ['ガーゴイル(CL10)とエンカウント', 'ガーゴイル(CL15)とエンカウント、以下のように強化', 'ザッハーク(CL39)とエンカウント', '銀河龍ラクテア(CL90)とエンカウント'], - ['ガーゴイル', 'ガーゴイル', 'ザッハーク', '銀河龍ラクテア'], - ['', ' - ---------- - ガーゴイル(CL15) 魔族/岩石 - ST20 DX13 IQ13 HT18 HP63 FP33 - 受防3 防護18 移動6(飛行) よけ6 受け8 止め- - 宝石への命中判定ペナルティは-10 - ガーゴイルの戦槌16(両手メイス)・・・命中20 3D+8「叩き」 重量5 - ・ニンジャ - 行動:【ハイドインシャドウ】 FP1 姿を消す 「視覚-5」で発見可能 - ・グラント - 行動:【グランドインペイル+3】+【エクステンドインペイル+1】(両手メイス) FP10 - 3D+8「叩き」 受動防御無視「よけ」のみ 半径3ヘクス攻撃 射程5 - 行動:【トルマリンスパーク+2】+【チェーンスパーク】(両手メイス) FP7 - 3D+8「叩き」 命中もしくは「受け」「止め」時に電撃で2D+2の追加ダメージ - 行動:【グラビティブレイク+2】+【グラビティパニッシュ】(両手メイス) FP7 - 3D+13「叩き」 「荷重レベル+3」の回避ペナルティ 命中後1ターンペナルティ持続 - ----------', '', ''], - ]], - [45, [ - ['カボチャの魔女(CL8)×2とエンカウント', 'カボチャの魔女(CL10)×2とエンカウント、《カボチャの雨》の致傷力+1Dされ、生命力-1で気絶判定、HP+2', 'カボチャの魔女(CL14)×2とエンカウント、《カボチャの雨》の致傷力+2Dされ生命力-3で気絶判定、HP+6', 'カボチャの大魔女(CL35)×2とエンカウント'], - ['', '', '', ' - ---------- - カボチャの大魔女(CL35) 魔族 - ST11 DX15 IQ20 HT15 HP120 MP160 FP81 - 受防1 防護4 移動10(飛行)よけ10 受け- 止め- - <戦術20> イニシアチブ値12 - ・ソーサルギア - 《韋駄天》《火炎武器》《氷結武器》《電撃武器》《べたべた》 - 《音噴射》《集団誘眠》《粉砕8》 - ・センチュリオン - イニシ:【ファーストムーブ】(戦術) FP3 イニシアチブ判定に自動的に勝利 - ・アークメイジ - ダメージ後:【マナシールド+2】 FP3 HPダメージをMPで肩代わり 1ターンに3回まで - 支援:【ダブルキャスト】 FP5 次の行動ターンに連続で魔法が使用可能 - 行動:【テンペスト】 FP7 他の魔法に追加使用 「通常」の魔法や呪術を周囲半径10ヘクスに CT:シナリオ - ・オリジナル魔法 - 《カボチャの大災厄》(パンプキンカタストロフ) 通常 消費30 - 半径5ヘクスの敵味方を区別せず6Dの「叩き」ダメージを与える。 - 隙間なく降り注ぐカボチャは回避不可能で、 - 1点でもダメージを受けると「生命力-6」判定を行い、失敗すると気絶する - ----------'], - ]], - [46, [ - ['フェニックス(CL25)', 'フェニックス(CL30)', 'フェニックス(CL35)', '煉獄フェニックス(CL85)'], - ['', '、クチバシの致傷力+2、命中+4、アクセルギア【ディザスタープログラム】を追加', '、クチバシの致傷力+4、命中+8、アクセルギア【ディザスタープログラム】を追加', ''], - ]], - - [51, [ - ['「敏捷力-3」', '「敏捷力-4」', '「敏捷力-5」', '「敏捷力-7」'], - ['3D+5', '5D+5', '7D+5', '11D+5'], - ]], - [52, [ - ['<登攀>', '<登攀-2>', '<登攀-4>', '<登攀-7>'], - ['4D', '6D', '8D', '12D'], - ]], - [53, [ - ['「敏捷力」', '「敏捷力-2」', '「敏捷力-4」', '「敏捷力-7」'], - ['', '', '', '判定失敗時さらに最も単価の高い消耗品を自分のヘクスに落とす(拾うには行動消費)'], - ]], - [54, [ - ['', '', '《べたべた》判定後、『銀糸の甲殻』アルゲントゥム(CL40・ネームド)とエンカウント。', '《べたべた》判定後、『銀糸の甲殻』アルゲントゥム(CL50・ネームド)×2とエンカウント、あらゆる致傷力+2D、命中判定+8。'], - ]], - [55, [ - ['<生存-3>', '<生存-5>', '<生存-7>', '<生存-11>'], - ['4D', '5D', '6D', '8D'], - ]], - [56, [ - ['防護点2、HP80', '防護点4、HP120', '防護点6、HP160', '防護点8、HP320'], - ]], - - [61, [ - ['-2', '-3', '-4', '-6'], - ]], - [62, [ - ['100', '200', '300', '500'], - ]], - [63, [ - ['', '', '1Dを2回振って属性決定、2回攻撃で破壊。', '1Dを3回振って属性決定、3回攻撃で破壊。'], - ]], - [64, [ - ['「ジャンボ串焼き」', '「ジャンボ串焼き」「グラント風香草焼き」のいずれか(選択可能)', '「ジャンボ串焼き」「グラント風香草焼き」「ドラゴンステーキ」のいずれか(選択可能)', '「ジャンボ串焼き」「グラント風香草焼き」「ドラゴンステーキ」「マツザカスペシャル」のいずれか(選択可能)'], - ]], - [65, [ - ['<植物学><医師><動植物知識-3>', '<植物学-2><医師-2><動植物知識-5>', '<植物学-4><医師-4><動植物知識-7>', '<植物知識-7><医師-7><動植物知識-11>'], - ['100', '200', '300', '500'], - ]], - [66, [ - ['「視覚-5」か<武具屋>', '「視覚-7」か<武具屋-2>', '「視覚-9」か<武具屋-4>', '「視覚-13」か<武具屋-7>'], - ['10000', '20000', '30000', '60000'], - ]], - ] - - when 4 # 水辺 - table = [ - [12, [ - ['1D', '2D', '3D', '5D'], - ]], - [16, [ - ['<毒物-5>', '<毒物-7>', '<毒物-9>', '<毒物-13>'], - ['1D', '2D', '3D', '5D'] - ]], - - [22, [ - ['<鍵開け-3>', '<鍵開け-5>', '<鍵開け-7>', '<鍵開け-11>'] - ]], - [23, [ - ['<罠-3>', '<罠-5>', '<罠-7>', '<罠-11>'] - ]], - [24, [ - ['<罠-3><鍵開け-3>', '<罠-5><鍵開け-5>', '<罠-7><鍵開け-7>', '<罠-11><鍵開け-11>'] - ]], - [25, [ - ['<罠-5>', '<罠-5>', '<罠-7>', '<罠-11>'], - ['100', '200', '300', '500'], - ]], - [26, [ - ['<罠-5>', '<罠-5>', '<罠-7>', '<罠-11>'] - ]], - - [31, [ - ['<生存>', '<生存-2>', '<生存-4>', '<生存-7>'], - ]], - [32, [ - ['<登攀>か<軽業>', '<登攀-2>か<軽業-2>', '<登攀-4>か<軽業-4>', '<登攀-8>か<軽業-8>'], - ]], - [34, [ - ['「視覚-5」', '「視覚-6」', '「視覚-7」', '「視覚-11」'], - ]], - [35, [ - ['「体力-5」', '「体力-6」', '「体力-7」', '「体力-9」'], - ]], - [36, [ - ['<船乗り-3>', '<船乗り-5>', '<船乗り-7>', '<船乗り-11>'], - ]], - - [41, [ - ['キャンディークラウン(CL40)', 'キャンディークラウン(CL40)「1D-3」匹(最低1匹)', 'キャンディークラウン(CL40)「1D-2」匹(最低1匹)、出目が6だった場合ゴールデンクラウン(CL177)1匹', 'ゴールデンクラウン(CL177)'] - ]], - [42, [ - ['アシガル(CL4)×2、アイスリザード(CL7)', 'ハタモト(CL10)×2、アイスリザード(CL7)', 'ナイトライダー(CL15)×2、アイスメイデン(CL10)', 'スカーレス(CL38)×3'], - ]], - [43, [ - ['アンブッシュマン(CL5)×3とエンカウント', 'アンブッシュマン(CL9)×3とエンカウント、致傷力+2、命中+4、HP+8、FP+4', 'アンブッシュマン(CL13)×3とエンカウント、致傷力+4、命中+8、HP16、FP+8', 'シャドウストーカー(CL35)×2とエンカウント'], - ['「視覚-5」', '「視覚-5」', '「視覚-5」', '「視覚-9」'], - ]], - [44, [ - ['アップルドール(CL12)', 'アップルドール(CL12)×2', 'アップルドール(CL12)×2とポイズンリリー(CL7)×2', '水陸両用改造型アップルドール(CL30)×2とバリアリーフ(CL27)'], - ]], - [45, [ - ['ジェルスケルトン(CL10)とエンカウント', 'ジェルスケルトン(CL15)とエンカウント、ST21、命中+2、防護6、HP+15、FP+10', 'ジェルスケルトン(CL20)とエンカウント、ST25、命中+4、防護8、HP+30、FP+20', 'ジェルスケルトン(CL40)とエンカウント、ST45、命中+12、防護12、HP+90、FP+60'], - ]], - [46, [ - ['ナイトライダー(CL15)とエンカウント', 'ナイトライダー(CL15)×2とエンカウント', 'ナイトライダー(CL15)×2、バリアリーフ(CL27)とエンカウント', 'ジェネラル(CL55)、バリアリーフ(CL27)とエンカウント、ジェネラルはペット「スワンプランナー」に<乗馬20>で騎乗、移動8'], - ]], - - [51, [ - ['「意志-3」', '「意志-4」', '「意志-5」', '「意志-7」'], - ]], - [52, [ - ['<水泳>', '<水泳-2>', '<水泳-4>', '<水泳-8>'], - ['8D', '10D', '12D', '20D'], - ]], - [53, [ - ['「よけ」', '「よけ-2」', '「よけ-4」', '「よけ-8」'], - ['4D', '6D', '8D', '12D'], - ]], - [54, [ - ['<武具屋>', '<武具屋-2>', '<武具屋-4>', '<武具屋-8>'], - ['-2', '-3', '-4', '-6'], - ]], - [55, [ - ['「生命力」', '「生命力-2」', '「生命力-4」', '「生命力-8」'], - ['1D', '2D', '3D', '5D'], - ]], - [56, [ - ['<地質学>か「聴覚-7」', '<地質学-2>か「聴覚-9」', '<地質学-4>か「聴覚-11」', '<地質学-8>か「聴覚-15」'], - ['5D', '7D', '9D', '13D'], - ]], - - [61, [ - ['スワンプランナー', 'スワンプランナー', 'スワンプランナー', 'ゴールデンコーン'], - ['<応急処置-4>か<獣医>', '<応急処置-4>か<獣医>', '<応急処置-4>か<獣医>', '<応急処置-10>か<獣医-6>'], - ]], - [62, [ - ['<釣り-5>', '<釣り-7>', '<釣り-9>', '<釣り-13>'], - ['3000', '6000', '9000', '18000'], - ]], - [63, [ - ['<歌唱-3>か<作詞>', '<歌唱-5>か<作詞-2>', '<歌唱-7>か<作詞-4>', '<歌唱-11>か<作詞-8>'], - ['2D', '3D', '4D', '6D'], - ]], - [64, [ - ['<釣り20>', '<釣り22>', '<釣り24>', '<釣り28>'], - ]], - [65, [ - ['<探索-3>', '<探索-5>', '<探索-7>', '<探索-11>'], - ['100', '200', '300', '500'], - ]], - [66, [ - ['<動植物知識>', '<動植物知識-2>', '<動植物知識-4>', '<動植物知識-8>'], - ['1000', '2000', '3000', '5000'], - ]], - ] - - when 5 # 森林 - table = [ - [13, [ - ['2D', '3D', '4D', '6D'], - ]], - [16, [ - ['<植物学-3>か<動植物知識-5>', '<植物学-5>か<動植物知識-7>', '<植物学-7>か<動植物知識-9>', '<植物学-11>か<動植物知識-13>'], - ['3D', '4D', '6D', '9D'], - ]], - - [22, [ - ['<鍵開け-3>', '<鍵開け-5>', '<鍵開け-7>', '<鍵開け-11>'] - ]], - [23, [ - ['<罠-3>', '<罠-5>', '<罠-7>', '<罠-11>'] - ]], - [24, [ - ['<罠-3><鍵開け-3>', '<罠-5><鍵開け-5>', '<罠-7><鍵開け-7>', '<罠-11><鍵開け-11>'] - ]], - [25, [ - ['<罠-5>', '<罠-5>', '<罠-7>', '<罠-11>'], - ['100', '200', '300', '500'], - ]], - [26, [ - ['<罠-5>', '<罠-5>', '<罠-7>', '<罠-11>'] - ]], - - [31, [ - ['<生存>', '<生存-2>', '<生存-4>', '<生存-8>'], - ]], - [32, [ - ['<考古学>', '<考古学-2>', '<考古学-4>', '<考古学-8>'], - ]], - [34, [ - ['「生命力」', '「生命力-2」', '「生命力-4」', '「生命力-8」'], - ['1D', '2D', '3D', '5D'], - ]], - [36, [ - ['2D', '3D', '4D', '6D'], - ]], - - [41, [ - ['キャンディークラウン(CL40)', 'キャンディークラウン(CL40)「1D-3」匹(最低1匹)', 'キャンディークラウン(CL40)「1D-2」匹(最低1匹)、出目が6だった場合ゴールデンクラウン(CL177)1匹', 'ゴールデンクラウン(CL177)'] - ]], - [42, [ - ['スターゲイザー(CL10)、オーク(CL3)×3', 'スターゲイザー(CL10)、ヘルハウンド(CL12)×2', 'コスモロジスト(CL20)、ナイトライダー(CL15)×2', 'サーバントマスター(CL35)、ガルーダ(40)×2'], - ['オーク', 'ヘルハウンド', 'ナイトライダー', 'ガルーダ'], - ['スターゲイザーのMPを15点', 'スターゲイザーのMPを10点', 'コスモロジストのMPを10点', 'サーバントマスターのMPを10点'], - ]], - [43, [ - ['オウルセイージ(CL5)×2、インプ(CL3)、オーク(CL3)', 'オウルセージ(CL5)×3、キメラ(CL15)', 'オウルコマンダー(CL18)×2、ブラックナイト(CL10)×2', 'オウルコマンダー(CL18)×2、ヨウコ(CL30)、アダマンゴーレム(CL45)'], - ['2', '3', '4', '6'], - ]], - [44, [ - ['gールデンビースト(CL10)とエンカウント', 'ゴールデンビースト(CL15)とエンカウント、致傷力+2、命中+4、HP+10、FP+10', 'ゴールデンビースト(CL25)とエンカウント、致傷力+4、命中+10、HP+30、FP+30', 'イビルオーメン(CL42)×2とエンカウント'], - ]], - [45, [ - ['アップルドール(CL12)、ポイズンリリー(CL7)', 'アップルドール(CL12)×2、ポイズンリリー(CL7)', '水陸両用改造型アップルドール(CL30)、グリーンアクトレス(CL22)', '水陸両用改造型アップルドール(CL30)×2、リッチ(CL44)'], - ['<忍び>', '<忍び-1>', '<忍び-2>', '<忍び-4>'], - ]], - [46, [ - ['キメラ(CL15)とエンカウント', 'キメラ(CL20)とエンカウント、防護+2、致傷力+2、命中+4、HP+20、FP+10', '防護+4、致傷力+6、命中+10、HP+60、FP+30', 'キメラグレート(CL60)とエンカウント'], - ]], - - [51, [ - ['<毒物><植物学><動植物知識-3>', '<毒物-2><植物学-2><動植物知識-5>', '<毒物-4><植物学-4><動植物知識-7>', '<毒物-8><植物学-8><動植物知識-11>'], - ]], - [52, [ - ['2D', '3D', '4D', '5D'], - ]], - [53, [ - ['2D', '4D', '6D', '10D'], - ['「体力-5」', '「体力-7」', '「体力-9」', '「体力-13」'], - ['<罠-5>', '<罠-7>', '<罠-9>', '<罠-13>'], - ]], - [54, [ - ['1D', '2D', '3D', '5D'], - ['「生命力」', '「生命力-2」', '「生命力-4」', '「生命力-8」'], - ]], - [55, [ - ['<植物学>か<動植物知識-3>', '<植物学-2>か<動植物知識-5>', '<植物学-2>か<動植物知識-5>', '<植物学-2>か<動植物知識-5>'], - ['3D', '5D', '7D', '11D'], - ]], - [56, [ - ['「生命力」', '「生命力-2」', '「生命力-4」', '「生命力-8」'], - ['1', '2', '3', '4'], - ]], - - [62, [ - ['<踊り>', '<踊り-2>', '<踊り-4>', '<踊り-8>'], - ['200', '400', '600', '1000'], - ]], - [63, [ - ['<偽装-5>', '<偽装-9>', '<偽装-13>', '<偽装-19>'], - ['狩人の羽帽子', '緊急召喚の宝珠', '毒の香水瓶', '女王の花冠'], - ]], - [64, [ - [ - '1:高級クイックHPポーション - 2:高級クイックMPポーション - 3:高級クイックスタミナポーション - 4:クイック解毒ポーション - 5:クイック中和ポーション - 6:高級抵抗ポーション', - '1:高級クイックHPポーション - 2:高級クイックMPポーション - 3:高級クイックスタミナポーション - 4:クイック解毒ポーション - 5:クイック中和ポーション - 6:高級抵抗ポーション', - '1:高級クイックHPポーション - 2:最高級クイックMPポーション - 3:最高級クイックスタミナポーション - 4:加速ポーション - 5:加速ポーション - 6:最高級抵抗ポーション', - '1:特製クイックHPポーション - 2:特製クイックHPポーション - 3:特製クイックMPポーション - 4:特製クイックMPポーション - 5:特製クイックスタミナポーション - 6:特製クイックスタミナポーション' - ], - ]], - ] - - when 6 # 墓地 - table = [ - - [12, [ - ['2D', '3D', '4D', '6D'], - ['1D', '3D', '5D', '8D'], - ]], - [13, [ - ['2D', '3D', '4D', '6D'], - ]], - [15, [ - ['1000', '2000', '3000', '5000'], - ]], - - [22, [ - ['<鍵開け-3>', '<鍵開け-5>', '<鍵開け-7>', '<鍵開け-11>'] - ]], - [23, [ - ['<罠-3>', '<罠-5>', '<罠-7>', '<罠-11>'] - ]], - [24, [ - ['<罠-3><鍵開け-3>', '<罠-5><鍵開け-5>', '<罠-7><鍵開け-7>', '<罠-11><鍵開け-11>'] - ]], - [25, [ - ['<罠-5>', '<罠-5>', '<罠-7>', '<罠-11>'], - ['100', '200', '300', '500'], - ]], - [26, [ - ['<罠-5>', '<罠-5>', '<罠-7>', '<罠-11>'] - ]], - - [31, [ - ['「視覚-5」', '「視覚-7」', '「視覚-9」', '「視覚-13」'], - ]], - [33, [ - ['<生存>', '<生存-2>', '<生存-4>', '<生存-8>'], - ['2', '4', '6', '10'], - ]], - [36, [ - ['-1', '-2', '-3', '-4'], - ]], - - [41, [ - ['キャンディークラウン(CL40)', 'キャンディークラウン(CL40)「1D-3」匹(最低1匹)', 'キャンディークラウン(CL40)「1D-2」匹(最低1匹)、出目が6だった場合ゴールデンクラウン(CL177)1匹', 'ゴールデンクラウン(CL177)'] - ]], - [42, [ - ['スケルトン(CL3)×3とエンカウント', 'スケルトン(CL3)×6とエンカウント、致傷力+2、命中+2', 'デッドリーローズ(CL15)×3とエンカウント、スケルトン化しており「叩きダメージボーナス2倍」を追加', '堕ちた黒竜(CL48)×3とエンカウント、スケルトン化しており「叩きダメージボーナス2倍」を追加'], - ]], - [43, [ - ['ポイズンリリー(CL7)、ファントム(CL5)×2', 'ポイズンリリー(CL7)、ゴースト(CL10)×2', 'グリーンアクトレス(CL22)、デュラハン(CL22)×2', 'グリーンアクトレス(CL22)、ヒトキリ(CL33)×2'], - ['ポイズンリリー', 'ポイズンリリー', 'グリーンアクトレス', 'グリーンアクトレス'], - ['1', '2', '3', '4'], - ]], - [44, [ - ['「保険」に入っていなければPC達は死亡し、グレイヴディガーの配下にさせられてしまう。冒険はここで終了だ。', '「保険」に入っていなければPC達は死亡し、グレイヴディガーの配下にさせられてしまう。冒険はここで終了だ。', '「保険」に入っていなければPC達は死亡し、グレイヴディガーの配下にさせられてしまう。冒険はここで終了だ。', '『葬送者』グレイヴディガー(CL200・魔将)、『ディガー様親衛隊隊長』フュネライユ(CL66・ネームド)、エルダーリッチ(CL55)、イビルオーメン(CL42)×2とエンカウント。'], - ]], - [45, [ - ['ゴースト(CL10)、ソルジャー(CL4)×2', 'ゴースト(CL10)、ハタモト(CL10)×2', 'デュラハン(CL22)、ハタモト(CL10)×3', 'エルダーリッチ(CL55)、アダマンゴーレム(CL45)×2'], - ['ゴースト', 'ゴースト', 'デュラハン', 'エルダーリッチ'], - ['100', '200', '300', '500'], - ]], - [46, [ - ['ボーンスネーク(CL20)とエンカウント', 'ボーンスネーク(CL20)×2とエンカウント', 'ボーンスネーク(CL20)×3とエンカウント、致傷力+2', 'ラダマンティスの蛇(CL50)×2とエンカウント、半ば化石になりかけており「叩きダメージボーナス2倍」を追加'], - ]], - - [51, [ - ['「意志」', '「意志-2」', '「意志-4」', '「意志-8」'], - ]], - [52, [ - ['「よけ」', '「よけ-2」', '「よけ-4」', '「よけ-8」'], - ['3D', '5D', '7D', '11D'], - ]], - [53, [ - ['<建築>', '<建築-2>', '<建築-4>', '<建築-8>'], - ['3D', '5D', '7D', '11D'], - ]], - [54, [ - ['「体力-3」', '「体力-5」', '「体力-7」', '「体力-11」'], - ['ジェルスケルトン(CL10)', 'ボーンスネーク(CL20)', 'リッチ(CL44)', '『ディガー様親衛隊隊長』フュネライユ(CL66・ネームド)'], - ]], - [55, [ - ['100', '200', '400', '1000'], - ['3D', '5D', '7D', '11D'], - ]], - - [61, [ - ['5D', '7D', '9D', '13D'], - ]], - [62, [ - ['「生命力」', '「生命力-1」', '「生命力-2」', '「製絵魅力-4」'], - ]], - [63, [ - ['-1', '-2', '-3', '-4'], - ['2000', '6000', '20000', '60000'], - ]], - [64, [ - [ - '1:火炎弾×5(アームガン弾薬) - 2:冷凍弾×5(アームガン弾薬) - 3:貫甲弾×3(アームガン弾薬) - 4:簡易ソーサルセット(装飾品) - 5:ギアテール(装飾品) - 6:パイルバンカー高速収納装置(装飾品)', - '1:火炎弾×5(アームガン弾薬) - 2:冷凍弾×5(アームガン弾薬) - 3:貫甲弾×3(アームガン弾薬) - 4:ゴーレムアーム(装飾品) - 5:ゴーレムアーム(装飾品) - 6:ホイールブースター(装飾品)', - '1:火炎弾×5(アームガン弾薬) - 2:冷凍弾×5(アームガン弾薬) - 3:貫甲弾×3(アームガン弾薬) - 4:ヒュージーミスリルフィスト(装飾品) - 5:ヒュージーミスリルフィスト(装飾品) - 6:ヒュージーブレード(両手剣)', - '1:火炎弾×5(アームガン弾薬) - 2:冷凍弾×5(アームガン弾薬) - 3:貫甲弾×3(アームガン弾薬) - 4:ヒュージーブレード(両手剣) - 5:ヒュージーブレード(両手剣) - 6:ナグルファル装甲(装飾品)' - ], - ]], - [65, [ - ['200', '500', '1000', '5000'], - ['カロン(CL12)×2とエンカウント', 'カロン(CL12)×2とエンカウント、致傷力+2', 'カロンキャプテン(CL25)×2とエンカウント', 'エルダーリッチ(CL55)×2とエンカウント'], - ]], - [66, [ - ['墓場のブラックナイト(CL10)とエンカウント', '墓場のブラックナイト(CL20)とエンカウント', '墓場のブラックナイト(CL30)とエンカウント', '墓場のハイペリオンダミー(CL100)とエンカウント'], - ['キメラウェポンズ', 'キメラウェポンズ', 'キメラウェポンズ', 'グレートキメラウェポンズ'], - [ - '墓場のブラックナイト(標準CL10) 魔族 - 攻防ともに高い能力を持つ、魔族のエリート騎士。 - 常時《倍速》で武器には《戻る武器》がかかっている。 - ST16 DX15 IQ12 HT15 HP45 FP26 - 受防3(金属鎧) 防護6(金属鎧) 移動5 よけ5 受け9 止め- - 常時《倍速》 <跳躍18> - キメラウェポンズ18(特殊)・・・攻撃ごとに形状変化 上質 壊れない 《戻る武器》 - キメラウェポンズ/両手剣・・・命中21 2D+6「切り」 射程2 - キメラウェポンズ/両手メイス・・・命中21 2D+7「叩き」 射程2 - キメラウェポンズ/両手斧・・・命中21 2D+6「切り」 射程2 - キメラウェポンズ/長槍・・・命中21 2D+6「刺し」 射程3 - ・ウォリアー - 行動:【クロスブレイク】+【ハイスピードブレイク】(両手剣) FP6 2D+7「切り」 2回攻撃 - 行動:【リープアタック】+【ジェノサイドリープ】(両手剣) FP4 - 2D+6「切り」<跳躍>でフェイント 2体まで攻撃 移動妨害・大振りにならない - 行動:【ヘビースマッシュ】(両手メイス) FP2 2D+13「叩き」 - 行動:【トマホークミサイル】(両手斧) FP2 2D+8「切り」 回避-2 半致傷16 最大射程24 - 行動:【スターダストフォール】(長槍) FP3 1D+6 回避-3 半致傷16 最大射程24 - 行動:【ワールウィンド】(長槍) FP3 2D+6「切り」 周囲半径3ヘクス - ・オリジナル - 【騎士の闘気】 - 使用:常時 判定:なし 疲労:なし 強化:× - ターンの最初にFPを3点回復する。 - 所有レア:漆黒の甲冑(鎧)', - - '墓場のブラックナイト(標準CL20) 魔族 - 攻防ともに高い能力を持つ、魔族のエリート騎士。 - 常時《倍速》で武器には《戻る武器》がかかっている。 - ST16 DX15 IQ12 HT15 HP75 FP36 - 受防3(金属鎧) 防護6(金属鎧) 移動5 よけ5 受け9 止め- - 常時《倍速》 <跳躍18> - キメラウェポンズ18(特殊)・・・攻撃ごとに形状変化 上質 壊れない 《戻る武器》 - キメラウェポンズ/両手剣・・・命中31 2D+10「切り」 射程2 - キメラウェポンズ/両手メイス・・・命中31 2D+11「叩き」 射程2 - キメラウェポンズ/両手斧・・・命中31 2D+10「切り」 射程2 - キメラウェポンズ/長槍・・・命中31 2D+10「刺し」 射程3 - ・ウォリアー - 行動:【クロスブレイク】+【ハイスピードブレイク】(両手剣) FP6 2D+11「切り」 2回攻撃 - 行動:【リープアタック】+【ジェノサイドリープ】(両手剣) FP4 - 2D+10「切り」<跳躍>でフェイント 2体まで攻撃 移動妨害・大振りにならない - 行動:【ヘビースマッシュ】(両手メイス) FP2 2D+17「叩き」 - 行動:【トマホークミサイル】(両手斧) FP2 2D+12「切り」 回避-2 半致傷16 最大射程24 - 行動:【スターダストフォール】(長槍) FP3 1D+10 回避-3 半致傷16 最大射程24 - 行動:【ワールウィンド】(長槍) FP3 2D+10「切り」 周囲半径3ヘクス - ・オリジナル - 【騎士の闘気】 - 使用:常時 判定:なし 疲労:なし 強化:× - ターンの最初にFPを3点回復する。 - 所有レア:漆黒の甲冑(鎧)', - - '墓場のブラックナイト(標準CL30) 魔族 - 攻防ともに高い能力を持つ、魔族のエリート騎士。 - 常時《倍速》で武器には《戻る武器》がかかっている。 - ST16 DX15 IQ12 HT15 HP105 FP46 - 受防3(金属鎧) 防護6(金属鎧) 移動5 よけ5 受け9 止め- - 常時《倍速》 <跳躍18> - キメラウェポンズ18(特殊)・・・攻撃ごとに形状変化 上質 壊れない 《戻る武器》 - キメラウェポンズ/両手剣・・・命中41 2D+14「切り」 射程2 - キメラウェポンズ/両手メイス・・・命中41 2D+15「叩き」 射程2 - キメラウェポンズ/両手斧・・・命中41 2D+14「切り」 射程2 - キメラウェポンズ/長槍・・・命中41 2D+14「刺し」 射程3 - ・ウォリアー - 行動:【クロスブレイク】+【ハイスピードブレイク】(両手剣) FP6 2D+15「切り」 2回攻撃 - 行動:【リープアタック】+【ジェノサイドリープ】(両手剣) FP4 - 2D+14「切り」<跳躍>でフェイント 2体まで攻撃 移動妨害・大振りにならない - 行動:【ヘビースマッシュ】(両手メイス) FP2 2D+21「叩き」 - 行動:【トマホークミサイル】(両手斧) FP2 2D+16「切り」 回避-2 半致傷16 最大射程24 - 行動:【スターダストフォール】(長槍) FP3 1D+14 回避-3 半致傷16 最大射程24 - 行動:【ワールウィンド】(長槍) FP3 2D+14「切り」 周囲半径3ヘクス - ・オリジナル - 【騎士の闘気】 - 使用:常時 判定:なし 疲労:なし 強化:× - ターンの最初にFPを3点回復する。 - 所有レア:漆黒の甲冑(鎧)', - - '墓場のハイペリオンダミー(標準CL100) 魔族 - 第三魔将ハイペリオンを模して造られたダミー装甲。 - 常時《倍速》で武器には《戻る武器》がかかっている。 - ST75 DX22 IQ15 HT27 HP527 FP275 - 受防4 防護15 移動10 よけ10 受け14 止め- - バッドステータス無効 ファンブル無効 切り刺しダメージボーナス無効 - 常時《倍速》 <戦術20> イニシアチブ値12 装備重量150kg - グレートキメラウェポンズ28(特殊)・・・攻撃ごとに形状変化 最高品質 《戻る武器》 - キメラウェポンズ/両手剣・・・命中58 17D+10「切り」 射程2 - キメラウェポンズ/両手メイス・・・命中58 17D+11「叩き」 射程2 - キメラウェポンズ/両手斧・・・命中58 17D+10「切り」 射程2 - キメラウェポンズ/長槍・・・命中58 17D+10「刺し」 射程3 - 世界樹装甲・・・防護点が減少しない(一時的な「防護点無視」の効果は受ける) - 着用者のHPをターンの最初に10点回復する - ・ウォリアー - 行動:【クロスブレイク+5】+【ハイスピードブレイク+5】(両手剣) FP16 - 17D+16「切り」 回避-5 2回攻撃 - 行動:【ヘビースマッシュ+5】+【ヘビーストライク】(両手メイス) FP11 - 17D+40「切り」 「受け」「止め」時に装備を破壊 「生命力-6」に失敗すると朦朧 - 行動:【トマホークミサイル+5】+【トールハンマー】(両手斧) FP10 - 命中64 17D+27「切り」 回避-2 半致傷750 最大射程1120 - 行動:【スターダストフォール+5】+【プロミストビクトリー】(長槍) FP12 - 8D+20「刺し」 必中クリティカル クリティカル表参照なし 射撃攻撃 半致傷75 最大射程112 - 行動:【ワールウィンド+5】+【バイオレントウィンド】(長槍) FP - 17D+10+(移動距離÷2)「切り」 周囲半径3ヘクス 「敏捷-9」で転倒判定 大振りにならない - ・センチュリオン - イニシ:【ファーストムーブ】(戦術) FP3 イニシアチブ判定に自動的に勝利 - 回避:【ツーハンドプロテクト】 FP3 武器技能の3分の2で「受け」を行う - 行動:【ソニックブーム+4】 FP7 他の技に追加使用 近接物理攻撃の射程が50に - ダメージ後:【アドバンストガード】 FP5 近接物理攻撃で受けた最終ダメージを半減 CT:次 - ・マスターナイト - 行動:【グレートチャージ】 FP5 他の近接技に追加使用 致傷力+15 - 行動:【シーズエンジン】 FP6 他の射撃技に追加使用 「切り」+3D 「刺し」+2D - ・オリジナル - 【無限の闘気】 - 使用:常時 判定:なし 疲労:なし 強化:× - ターンの最初にFPを30点回復する。 - 【障壁破壊】 - 使用:常時 判定:なし 疲労:なし 強化:× - 移動および攻撃時に《物質障壁》《完全障壁》の影響を受けない。 - また、ハイペリオンダミーの攻撃は受動防御のみで回避することができない。 - 所有レア:世界樹装甲(鎧)' - ], - ]], - ] - - else - return "[ERROR:getRandomDiff]" - end - - result = get_table_by_number(dice23, table) - return result[index][dif] - end -end diff --git a/src/src_bcdice/diceBot/HarnMaster.rb b/src/src_bcdice/diceBot/HarnMaster.rb deleted file mode 100644 index e85b4ce1e..000000000 --- a/src/src_bcdice/diceBot/HarnMaster.rb +++ /dev/null @@ -1,200 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class HarnMaster < DiceBot - # ゲームシステムの識別子 - ID = 'HarnMaster' - - # ゲームシステム名 - NAME = 'ハーンマスター' - - # ゲームシステム名の読みがな - SORT_KEY = 'はあんますたあ' - - # ダイスボットの使い方 - HELP_MESSAGE = < diff - - return getSuccessResult(total) - end - - def getFailResult(total) - return "致命的失敗" if (total % 5) == 0 - - return "失敗" - end - - def getSuccessResult(total) - return "決定的成功" if (total % 5) == 0 - - return "成功" - end - - def rollDiceCommand(command) - result = nil - - case command - when /^SHK(\d*),(\d+)/i - toughness = Regexp.last_match(1).to_i - damage = Regexp.last_match(2).to_i - result = getCheckShockResult(damage, toughness) - when /SLH(U|D)?/i - type = Regexp.last_match(1) - result = getStrikeLocationHuman(type) - else - result = nil - end - - return result - end - - def getCheckShockResult(damage, toughness) - dice, diceText = roll(damage, 6) - result = (dice <= toughness ? '成功' : '失敗') - - text = "ショック判定(ダメージ:#{damage}, 耐久力:#{toughness}) > (#{dice}[#{diceText}]) > #{result}" - return text - end - - def getStrikeLocationHuman(type) - typeName = '' - table = nil - - case type - when 'U' - typeName = "命中部位(人型 上段)" - table = getStrikeLocationHumanUpperTable() - when 'D' - typeName = "命中部位(人型 下段)" - table = getStrikeLocationHumanDownTable() - when nil - typeName = "命中部位(人型 中段)" - table = getStrikeLocationHumanNormalTable() - else - raise "unknow atak type #{type}" - end - - number, = roll(1, 100) - part = get_table_by_number(number, table) - part = getLocationSide(part, number) - part = getFaceLocation(part) - - result = "#{typeName} > (#{number})#{part}" - - return result - end - - def getLocationSide(part, number) - unless /^\*/ === part - debug("part has NO side", part) - return part - end - - debug("part has side", part) - - side = (number.odd? ? "左" : "右") - - part.sub(/\*/, side) - end - - def getFaceLocation(part) - debug("getFaceLocation part", part) - - unless /\+$/ === part - debug("is NOT Face") - return part - end - - debug("is Face") - - table = [ - [ 15, "顎"], - [ 30, "*目"], - [ 64, "*頬"], - [ 80, "鼻"], - [ 90, "*耳"], - [100, "口"], - ] - - number, = roll(1, 100) - faceLocation = get_table_by_number(number, table) - debug("faceLocation", faceLocation) - debug("number", number) - faceLocation = getLocationSide(faceLocation, number) - - result = part.sub(/\+$/, " > (#{number})#{faceLocation}") - return result - end - - def getStrikeLocationHumanUpperTable() - table = [ - [ 15, "頭部"], - [ 30, "顔+"], - [ 45, "首"], - [ 57, "*肩"], - [ 69, "*上腕"], - [ 73, "*肘"], - [ 81, "*前腕"], - [ 85, "*手"], - [ 95, "胸部"], - [100, "腹部"], - ] - return table - end - - def getStrikeLocationHumanNormalTable() - table = [ - [ 5, "頭部"], - [ 10, "顔+"], - [ 15, "首"], - [ 27, "*肩"], - [ 33, "*上腕"], - [ 35, "*肘"], - [ 39, "*前腕"], - [ 43, "*手"], - [ 60, "胸部"], - [ 70, "腹部"], - [ 74, "股間"], - [ 80, "*臀部"], - [ 88, "*腿"], - [ 90, "*膝"], - [ 96, "*脛"], - [100, "*足"], - ] - return table - end - - def getStrikeLocationHumanDownTable() - table = [ - [ 6, "*前腕"], - [ 12, "*手"], - [ 19, "胸部"], - [ 29, "腹部"], - [ 35, "股間"], - [ 49, "*臀部"], - [ 70, "*腿"], - [ 78, "*膝"], - [ 92, "*脛"], - [100, "*足"], - ] - return table - end -end diff --git a/src/src_bcdice/diceBot/HatsuneMiku.rb b/src/src_bcdice/diceBot/HatsuneMiku.rb deleted file mode 100644 index c2ec0057c..000000000 --- a/src/src_bcdice/diceBot/HatsuneMiku.rb +++ /dev/null @@ -1,772 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class HatsuneMiku < DiceBot - # ゲームシステムの識別子 - ID = 'HatsuneMiku' - - # ゲームシステム名 - NAME = '初音ミクTRPG ココロダンジョン' - - # ゲームシステム名の読みがな - SORT_KEY = 'はつねみくTRPGこころたんしよん' - - # ダイスボットの使い方 - HELP_MESSAGE = <=t) - 能力値のダイスごとに成功・失敗の判定を行います。 - x:能力ランク(S,A~D)。数字指定で直接その個数のダイスが振れます - y:修正値。A+2 あるいは A++ のように表記。混在時は A++,+1 のように記述も可能 - z:スペシャル最低値(省略:6) t:目標値(省略:4) -  例) RA R2 RB+1 RC++ RD+,+2 RA>=5 RS-1@5>=6 - 結果はネイロを取得した残りで最大値を表示 -例) RB - HatsuneMiku : (RB>=4) > [3,5] > -  ネイロに3(青)を取得した場合 5:成功 -  ネイロに5(白)を取得した場合 3:失敗 -・各種表 - ファンブル表 FT/致命傷表 CWT/休憩表 BT/目標表 TT/関係表 RT - 障害表 OT/リクエスト表 RQT/情景表 ST -・キーワード表 - ダーク DKT/ホット HKT/ラブ LKT/エキセントリック EKT/メランコリー MKT -・名前表 NT - コア別 ダーク DNT/ホット HNT/ラブ LNT/エキセントリック ENT/メランコリー MNT -・オトダマ各種表 - 性格表A OPA/性格表B OPB/趣味表 OHT/外見表 OLT/一人称表 OIT/呼び名表 OYT - リアクション表 ORT/出会い表 OMT -INFO_MESSAGE_TEXT - - def initialize - super - @sendMode = 2 - @d66Type = 2 - end - - def rollDiceCommand(command) - text = judgeRoll(command) - return text unless text.nil? - - string = command.upcase - - case string - when 'RTT' # ランダム特技決定表 - return getRandomSkillTableResult(command) - end - - return getTableDiceCommandResult(command) - end - - def judgeRoll(command) - return nil unless /^(R([A-DS]|\d+)([\+\-\d,]*))(@(\d))?((>(=)?)([\+\-\d]*))?(@(\d))?$/i =~ command - - skillRank = Regexp.last_match(2) - modifyText = Regexp.last_match(3) - signOfInequality = (Regexp.last_match(7).nil? ? ">=" : Regexp.last_match(7)) - targetText = (Regexp.last_match(9).nil? ? "4" : Regexp.last_match(9)) - - specialNum = Regexp.last_match(5) - specialNum ||= Regexp.last_match(11) - specialNum ||= 6 - specialNum = specialNum.to_i - specialText = (specialNum == 6 ? "" : "@#{specialNum}") - - modifyText = getChangedModifyText(modifyText) - - commandText = "R#{skillRank}#{modifyText}" - - rankDiceList = {"S" => 4, "A" => 3, "B" => 2, "C" => 1, "D" => 2} - diceCount = rankDiceList[skillRank] - diceCount = skillRank.to_i if /^\d+$/ === skillRank - - modify = parren_killer("(" + modifyText + ")").to_i - target = parren_killer("(" + targetText + ")").to_i - - isSort = 1 - _, diceText, = roll(diceCount, 6, isSort) - diceList = diceText.split(/,/).collect { |i| i.to_i } - diceList = [diceList.min] if skillRank == "D" - - message = "(#{commandText}#{specialText}#{signOfInequality}#{targetText}) > [#{diceText}]#{modifyText} > " - - if diceList.length <= 1 - dice = diceList.first - total = dice + modify - result = check_success(total, dice, signOfInequality, target, specialNum) - message += "#{total}:#{result}" - else - texts = [] - diceList.each_with_index do |pickup_dice, index| - rests = diceList.clone - rests.delete_at(index) - dice = rests.max - total = dice + modify - result = check_success(total, dice, signOfInequality, target, specialNum) - - colorList = ["黒", "赤", "青", "緑", "白", "任意"] - color = colorList[pickup_dice - 1] - texts << " ネイロに#{pickup_dice}(#{color})を取得した場合 #{total}:#{result}" - end - texts.uniq! - message += "\n" + texts.join("\n") - end - - return message - end - - def getChangedModifyText(text) - modifyText = "" - values = text.split(/,/) - - values.each do |value| - case value - when "++" - modifyText += "+2" - when "+" - modifyText += "+1" - else - modifyText += value - end - end - - return modifyText - end - - def check_success(total_n, dice_n, signOfInequality, diff, special_n) - return "ファンブル" if dice_n == 1 - return "スペシャル" if dice_n >= special_n - - success = bcdice.check_hit(total_n, signOfInequality, diff) - return "成功" if success >= 1 - - return "失敗" - end - - def getTableDiceCommandResult(command) - info = TABLES[command] - return nil if info.nil? - - name = info[:name] - type = info[:type] - table = info[:table] - - text, number = - case type - when '2D6' - get_table_by_2d6(table) - when '1D6' - get_table_by_1d6(table) - when 'D66', 'D66S' - table = getD66Table(table) - get_table_by_d66_swap(table) - else - raise "invaolid dice Type #{command}" - end - - return nil if text.nil? - - return "#{name}(#{number}) > #{text}" - end - - def getD66Table(table) - newTable = table.map do |item| - if item.is_a?(String) && (/^(\d+):(.*)/ === item) - [Regexp.last_match(1).to_i, Regexp.last_match(2)] - else - item - end - end - - raise "invalid table size:#{newTable.size}\n#{newTable.inspect}" if newTable.size != 21 - - return newTable - end - - TABLES = - { - 'FT' => { - :name => "ファンブル表", - :type => '1D6', - :table => %w{ - 周囲から活気が失われる。黒以外のすべてのネイロを一つずつ減らす。 - 仲間に迷惑をかけてしまう。自分以外のPC全員の【生命力】が1点減少する。 - この失敗は後に祟るかもしれない……。自分の【生命力】が1D6点減少する。 - ココロに疲労感が満ちていく。自分がストレスを1点受ける。 - 1D6を振ること。そのPCのコアが、その出目が1ならダークに、2ならホットに、3ならラブに、4ならエキセントリックに、5ならメランコリーに変化する。6だった場合、コアは変化しない。 - ラッキー!特に何も起こらない - }, - }, - - 'CWT' => { - :name => "致命傷表", - :type => '1D6', - :table => %w{ - 絶望的な攻撃を受ける。そのキャラクターは強制退出になる。 - 苦痛の悲鳴をあげ、無惨にも崩れ落ちる。そのキャラクターは行動不能になる。また、黒のネイロが一つ増える。 - オトクイの一撃で、あなたは吹き飛ばされてしまう。そのキャラクターは行動不能になる。また、分類が装備のナンバーにストレスを1点受ける。 - 強烈な一撃を受けて気絶する。そのキャラクターは行動不能になる。 - 意識はあるが、立ち上がることができない。そのキャラクターは行動不能になる。次のシーンにまだ【生命力】が0点だった場合、自動的に1点に回復する。 - 奇跡的に踏みとどまり、持ちこたえる。【生命力】が1点になる。 - }, - }, - - 'BT' => { - :name => "休憩表", - :type => '1D6', - :table => %w{ - 仲間との楽しい時間。自分の【想い人】のパトスを一つ回復する。 - これまでの冒険を思い返す。自分の【能力値】のパトスを一つ回復する。 - 自分のオトダマと会話する。【協力者】のパトスか、ナンバーのパトスを一つ回復する。 - 体をゆっくり休める。自分の【生命力】を2D6点回復する。望むなら、回復を行う前に、自分の【活力】を決め直してもよい。 - お、ラッキー!いいもの見つけた!自分のコインを1枚増やす。 - ノイズストアに接続できた。各PCは、自分の【頭脳】のダイスの数と同じ個数まで、アプリを購入できる。 - }, - }, - - 'TT' => { - :name => "目標表", - :type => '1D6', - :table => %w{ - 悪意。PCの中でもっとも【生命力】の低いもの一人を目標に選ぶ。もっとも低い【生命力】の持ち主が複数いる場合、その中から、GMが自由に一人目標を選ぶ。 - 狡猾。パラグラフ1〜5の中で、もっとも高い数値のパラグラフにいるPC一人を目標に選ぶ。全員が圏外にいる場合、圏外にいるPC全員を目標に選ぶ。 - 堅実。PCの中で、その脅威の「判定欄」に書かれた能力値がもっとも低いランクのキャラクター一人を目標に選ぶ。もっとも低いランクのキャラクターが複数いる場合、その中から、もっとも低いモッドのキャラクター一人を目標に選ぶ。モッドも同じ値だった場合、GMが自由に一人目標を選ぶ。 - 豪快。PCの中でもっとも高いランクの【武勇】の持ち主一人を目標に選ぶ。もっとも高いランクの持ち主が複数いる場合、その中から、もっとも高いモッドの持ち主一人を目標に選ぶ。モッドも同じ値だった場合、GMが自由に一人目標を選ぶ。 - 単純。パラグラフ1〜5の中で、もっとも低い数値のパラグラフにいるPC一人を目標に選ぶ。全員が圏外にいる場合、圏外にいるPC全員を目標に選ぶ。 - 乱戦。その脅威のいるパラグラフの数値と数値が1離れたパラグラフにいるPC全員を目標に選ぶ。そのパラグラフにPCがいなかった場合、GMが自由に一人目標を選ぶ。 - }, - }, - - 'RT' => { - :name => "関係表", - :type => '1D6', - :table => %w{ - 恋心(プラス)/殺意(マイナス) - 同情(プラス)/侮蔑(マイナス) - 憧憬(プラス)/嫉妬(マイナス) - 信頼(プラス)/疑い(マイナス) - 共感(プラス)/不気味(マイナス) - 大切(プラス)/面倒(マイナス) - }, - }, - - 'OT' => { - :name => "障害表", - :type => '1D6', - :table => %w{ - あなたのココロに大きな変化が訪れる。1D6を振ること。そのPCのコアが、その出目が1ならダークに、2ならホットに、3ならラブに、4ならエキセントリックに、5ならメランコリーに変化する。6だった場合、コアは変化しない。 - あなたは肉体的に大きなダメージを負う。1D6点のダメージを受ける。 - ノイズの助けを借りて問題を解決する。コインを1D6枚を支払う必要がある。コインを支払う場合、ほかのPCからコインを譲ってもらってもよい。支払いが足りなかった場合、その差額分だけ自分の【生命力】を減らす。 - 大きな疲労感を感じる。ストレスを1点受ける。 - 思わず時間をつかってしまう。【タイム】が1点減少する。 - 場にイヤな気配が満ちていく。黒のネイロが一つ増える。 - }, - }, - - 'RQT' => { - :name => "リクエスト表", - :type => '2D6', - :table => %w{ - そのエリアの風景が、あなたの【情景】へと書き換えられていく。「お前の始まりの物語を語れ。お前はこの地で何を思った?」 - あなたは、そのエリアの風景の中に懐かしいものを見つけ、自分の罪を思い出した。「何を見た?なにを悔いている?」 - そのエリアの風景が、あなたのコアと同じ色に染まる。あなたは、その風景の中になりたい自分の姿を見つける。「それがお前の望みか?お前は未来に何を求める?」 - あなたの脳裏に、人物欄に書かれた人物一人のイメージが浮かぶ。その人物は何かを囁き、あなたのココロが傷ついた。「そいつは誰だ?一体何と言ったのだ?」 - あなたは、そのエリアの風景の中に奇妙なものを見つけ、恐怖した。「何を見た?なぜそれを恐れる?」 - そのエリアにココロダンジョンの持ち主が現れる。その人物は、お前に質問してくる。「私をどう思ってる?なぜ、私を助ける?」 - あなたのオトダマの姿が、あなたのよく知っている人物に変わる「その人物は誰だ?そいつをどう思っている?」 - そのエリアに、あなたの持つナンバーが響き渡る。「これがお前のウタか?そのウタの名はなんだ?」 - あなたのオトダマの姿が、あなたの好きな人物の姿に変わる。「それがお前が焦がれる人物か。そいつをどうしたい?」 - そのエリアの風景にあなたの日常が浮かび上がる。「お前は何をしている?その暮らしをどう思っている?」 - あなたの目の前に、あなたの死体が横たわっている。「お前を殺すものは何だ?お前は誰に殺される?」 - }, - }, - - 'ST' => { - :name => "情景表", - :type => 'D66', - :table => %w{ - 11:立ち並ぶ本棚の森 - 12:夕日が差し込む教室 - 13:鳴り止まない踏切 - 14:ビルから見下ろした街並み - 15:二人で見た星空 - 16:液晶画面に映る奇妙な光景 - 22:ガラス窓に並ぶ雨だれ - 23:植物園の温室 - 24:屋台が並ぶ祭りの風景 - 25:陽炎が立ちのぼるアスファルト - 26:0時を示す時計の針 - 33:無機質な白い天井 - 34:暗闇に浮かび上がるヘッドライト - 35:後ろからついてくる野良猫 - 36:一面の花畑 - 44:あなたを見つめる大勢の観衆 - 45:降り積もる雪 - 46:古めかしい洋館の応接間 - 55:おとぎ話に出てくるような森 - 56:深夜のコンビニ - 66:誰もいない体育館 - }, - }, - - 'DKT' => { - :name => "ダーク・キーワード表", - :type => 'D66', - :table => %w{ - 11:崩壊する楽園 - 12:空に堕ちる - 13:優しい暴力 - 14:沈黙の掟 - 15:闇に溺れる - 16:こぼれ落ちた命 - 22:行き止まりの絶望 - 23:漆黒の翼 - 24:眠れぬ夜 - 25:避けられぬ運命 - 26:斬り裂かれた景色 - 33:からっぽな自分 - 34:仮面の奥 - 35:月光中毒 - 36:昏い魔術 - 44:……オブザデッド - 45:ココロを殺す - 46:感染する破滅 - 55:愛の鎖 - 56:残酷な真実 - 66:デスゲーム - }, - }, - - 'DNT' => { - :name => "ダーク・名前表", - :type => 'D66', - :table => %w{ - 11:ダーク/濁、搦 ネロ/音呂、寝路 - 12:クロト/黒斗、玄徒 ヤミ/夜美、闇 - 13:ネクロ/根黒、寝喰 マコ/魔子、混乎 - 14:カゲオ/影男、陰夫 オニコ/鬼子、隠忍呼 - 15:アクタ/芥、悪太 ホタル/蛍、歩足 - 16:マオウ/魔王、万凹 ミダラ/淫、美堕裸 - 22:マミヤ/魔美也、狸夜 ジャミ/邪美、蛇実 - 23:ドクロ/髑髏、毒炉 ヨミ/黄泉、詠 - 24:マクラ/枕、真暗 サツキ/殺鬼、五月 - 25:ゲドウ/外道、戯堂 サヤ/小夜、鞘 - 26:ジゴク/地獄、慈極 ウマル/埋、兎丸 - 33:エンド/怨人、終 ヨハネ/夜羽、世刎 - 34:ノロイ/呪、鈍 カバネ/屍、椛音 - 35:アクム/悪夢、飽夢 クサリ/腐、鎖 - 36:バツ/罰、× ニエ/贄、沸 - 44:ネガ/音我、願 リリス/璃々子、離里素 - 45:ウツロ/虚、洞 ネタミ/妬美、寝多実 - 46:ハジメ/始、創 ホロビ/滅、亡 - 55:ザイン/罪印、沙陰 リンボ/淋墓、辺獄 - 56:ハラワタ/腑、祓輪太 ユガミ/歪、由神 - 66:イミ/忌、逝美 ムイミ/無意味、無為巳 - }, - }, - - 'HKT' => { - :name => "ホット・キーワード表", - :type => 'D66', - :table => %w{ - 11:真夜中をぶっ壊す - 12:夢を打ち上げろ - 13:譲れない明日 - 14:あふれ出す衝動 - 15:獣を解き放て - 16:蒸発した涙 - 22:高らかに叫べ - 23:負けられない戦い - 24:握りしめた拳 - 25:疾走する青春 - 26:ココロに従え - 33:がんばれ - 34:そのまま進め - 35:自分の旗 - 36:抗い壊し突き進む - 44:咲き誇る情熱の花 - 45:暑苦しい友情 - 46:オレ色に染まれ - 55:世界に八つ当たり - 56:消せない炎 - 66:オーバードライブ - }, - }, - - 'HNT' => { - :name => "ホット・名前表", - :type => 'D66', - :table => %w{ - 11:レッド/烈怒、煉集 アカネ/赤音、茜 - 23:タケル/武、猛 ヒトミ/瞳、仁美 - 36:ジョウ/情、丈 アオリ/煽、亜織 - 12:アツシ/熱、純志 カンナ/神奈、柑菜 - 24:グレン/紅蓮、九煉 ナツコ/夏子、懐子 - 44:ロック/六句、麓 フォルテ/鳳流弖、彫照 - 13:カケル/駆、賭 ハル/晴、春 - 25:アラシ/嵐、荒 ヒカル/光、晃 - 45:ヤマト/大和、岳斗 イサミ/伊佐美、勇美 - 14:ガッツ/牙突、勝 アカリ/紅莉、明里 - 26:エンジョウ/炎上、円定 コマチ/小町、小真知 - 46:リュウセイ/流星、龍盛 ミライ/未来、美良依 - 15:ケン/剣、拳 アスカ/明日香、飛鳥 - 33:レツ/烈、裂 リズム/理澄、李珠夢 - 55:イカル/怒、鵤 ヒマワリ/向日葵、火回 - 16:ゴウ/豪、剛 ヒミコ/日美子、卑弥呼 - 34:リキ/力、陸希 キョウカ/響歌、驚花 - 56:ツトム/努、勉 ハナビ/花火、羽夏妃 - 22:ヒイロ/火色、陽彩 アキラ/晶、爽 - 35:ホムラ/焔、吠叢 カグヤ/輝夜、赫映 - 66:レオ/伶央、獅王 マツリ/祭、茉莉 - }, - }, - - 'LKT' => { - :name => "ラブ・キーワード表", - :type => 'D66', - :table => %w{ - 11:大人の恋 - 12:ドキドキが止まらない - 13:つないだ手 - 14:世界を敵に回しても - 15:重なる声 - 16:君のためなら死ねる - 22:甘い口づけ - 23:まぶたをとじて - 24:キミとボク - 25:好きとか嫌いとか - 26:いつまでも - 33:抱きしめたい - 34:75億と1千五百万人愛してる - 35:自動的な恋 - 36:会いたい - 44:伝えたいコトバ - 45:ありがとう - 46:時間を止めて - 55:大好き - 56:素敵な贈り物 - 66:ビューティフルワールド - }, - }, - - 'LNT' => { - :name => "ラブ・名前表", - :type => 'D66', - :table => %w{ - 11:シアン/詩庵、思杏 アオイ/葵、蒼生 - 12:ソナタ/奏名太、其方 イズミ/泉、出海 - 13:ツナグ/繋、継 カレン/可憐、歌恋 - 14:ミノル/実、稔 コイ/恋、鯉 - 15:ユウ/優、悠 ラブ/良舞、羅步 - 16:レイン/玲音、霊印 アマミ/甘味、天海 - 22:ソウヤ/想夜、添也 フミ/文、芙美 - 23:イトシ/糸糸、意俊 コイシ/恋志、小石 - 24:エガオ/笑顔、描生 オモイ/想、念 - 25:マコト/誠、真実 マナ/真菜、愛 - 26:ユウリ/有理、悠里 ケイ/恵、佳 - 33:チヒロ/千尋、茅紘 ウララ/麗、占 - 34:トモ/友、杜望 ヒナ/雛、比奈 - 35:ソラ/空、宙 ツユ/露、梅雨 - 36:ユウダイ/雄大、優大 ノゾミ/望、希海 - 44:ハグ/剥、抱 キス/喜好、口吻 - 45:ショウタ/翔太、祥太 アイ/愛、藍 - 46:ジュン/純、潤 ミサオ/美沙緒、操 - 55:リョウ/涼、猟 イチズ/一途、意地図 - 56:シグレ/時雨、紫暮 アオバ/青葉、碧羽 - 66:ロミオ/路美雄、露澪 ロマン/浪漫、絽萬 - }, - }, - - 'EKT' => { - :name => "エキセントリック・キーワード表", - :type => 'D66', - :table => %w{ - 11:シェフのきまぐれニルヴァーナ - 23:宇宙人とデート - 36:ぷるぷる - 12:おかず食べ過ぎ - 24:まいにち寝正月 - 44:夜明けのツタンカーメン - 13:バイバイバイアグラ - 25:猫がにゃー - 45:半額の宴 - 14:おふとん王国の攻防 - 26:道草にがい - 46:超気持ちいいなにか - 15:ぐるぐるとクルクル - 33:ブシドーロック!サムライパンク! - 55:いあ!いあ!はすたあ! - 16:ゴリラの千年王国 - 34:冷やしインド - 56:小学生に貯金で負けた - 22:くもん式フランケンシュタイナー - 35:生きててよかった - 66:秒速1ポロンクセマ - }, - }, - - 'ENT' => { - :name => "エキセントリック・名前表", - :type => 'D66', - :table => %w{ - 11:ライム/来夢、雷鵡 ミドリ/緑、美登里 - 12:ランポ/乱歩、蘭舗 ビビリ/恐、美々裏 - 13:シラズ/不知、調頭 ヒスイ/翡翠、陽彗 - 14:ムウ/夢生、無 キノコ/茸、紀乃子 - 15:ネコヒコ/猫彦、寝子日子 イヌコ/犬子、夷猫 - 16:ダダ/駄々、蛇陀 キリコ/切子、霧湖 - 22:イケメン/活面、逝麺 ラムネ/来夢音、螺旨 - 23:キョウスケ/狂介、京助 ランマ/乱麻、爛漫 - 24:ネジ/螺子、寝児 アリス/有栖、亜梨子 - 25:マワル/回、環 タタミ/畳、多々実 - 26:キュウ/球、Q ズキン/頭巾、厨琴 - 33:サバン/沙蛮、裂卍 マニア/摩尼亜、間合 - 34:カエル/帰、蛙 エリマキ/襟巻、絵里真希 - 35:ナゾウ/謎宇、何造 カンノン/観音、疳暢 - 36:イッキュウ/一休、逸宮 ミロク/弥勒、診録 - 44:シュール/酒潤、終琉 カプリ/華降、噛布里 - 45:キジン/奇人、鬼神 フシギ/不思議、節黄 - 46:カブキ/歌舞伎、傾 メロン/芽論、女侖 - 55:ジョーカー/冗歌、浄化 ピエロ/秘絵呂、道化師 - 56:ウイロウ/外郎、初弄 マッチャ/抹茶、末耶 - 66:ビックリ/吃驚、! ハテナ/果菜、? - }, - }, - - 'MKT' => { - :name => "メランコリー・キーワード表", - :type => 'D66', - :table => %w{ - 11:ごめんなさい - 12:甘い甘い逃避 - 13:ひとりぼっち - 14:ズルい世界 - 15:果たせなかった約束 - 16:取り返しのつかない言葉 - 22:いっそ死にたい - 23:置いてきた夢 - 24:見あげた青空 - 25:きみの嘘 - 26:すれ違う言葉 - 33:幸せだった昨日 - 34:こんなはずじゃなかった - 35:別れてしまった二つの道 - 36:また会えたらいいね - 44:ここではないどこか - 45:青春の終わり - 46:大好きだった膝の上 - 55:誰かぼくをほめて - 56:高潔な裏切り - 66:ナルシズム - }, - }, - - 'MNT' => { - :name => "メランコリー・名前表", - :type => 'D66', - :table => %w{ - 11:ヴァイス/灰主、唄守 マシロ/真白、万代 - 12:キズ/傷、疵 ダレカ/誰香、惰麗華 - 13:ユレル/揺、遊玲流 エモ/絵萌、恵面 - 14:オボロ/朧、憶露 ホノカ/仄、穂乃香 - 15:メロ/夢露、芽朗 シズ/静、志津 - 16:ヒイラギ/柊、氷刺木 カタミ/形見、片実 - 22:リネン/理然、離念 スノウ/素皇、珠瑙 - 23:セツナ/切、刹那 シノブ/偲、忍 - 24:ナミダ/涙、波太 カスカ/霞歌、幽 - 25:ムスビ/結、息日 カコ/過去、寡子 - 26:ウソ/嘘、宇曽 アイカ/哀歌、愛香 - 33:ペイン/閉音、病印 ツラミ/辛美、貫実 - 34:ヨリミチ/寄道、頼道 シラユキ/白雪、知由樹 - 35:ヒトリ/独、一人 オトナ/音鳴、乙菜 - 36:スバル/昴、透遙 ハルカ/遥、晴香 - 44:バイバイ/梅云、吠々 バニラ/香子蘭、芭韮 - 45:トオル/透、通 リツ/律、慄 - 46:タビ/旅、足袋 チギリ/契、千切 - 55:サイゴ/彩吾、最期 サクラ/桜、咲良 - 56:アワレ/憐、哀 ヒメイ/悲鳴、姫衣 - 66:ヘヴン/戸聞、天国 ガラス/硝子、枯州 - }, - }, - - 'OPA' => { - :name => "オトダマ性格表A", - :type => 'D66', - :table => %w{ - 11:さわやか - 12:単純 - 13:目立ちたがり - 14:笑い上戸 - 15:P大好き - 16:がんばり屋 - 22:ひょうきん - 23:ほれっぽい - 24:勇敢 - 25:好奇心旺盛 - 26:優しい - 33:八方美人 - 34:博愛 - 35:感情的 - 36:おしゃべり - 44:無鉄砲 - 45:元気 - 46:楽観的 - 55:自信家 - 56:自由 - 66:好戦的 - }, - }, - - 'OPB' => { - :name => "オトダマ性格表B", - :type => 'D66', - :table => %w{ - 11:悲観的 - 12:大人しい - 13:臆病 - 14:クール - 15:のんき - 16:マジメ - 22:夢想家 - 23:常識人 - 24:サイコ - 25:おおらか - 26:平和主義者 - 33:慎重 - 34:合理主義者 - 35:無口 - 36:照れ屋 - 44:おひとよし - 45:なまけもの - 46:腰が低い - 55:疑い深い - 56:謙虚 - 66:嘘つき - }, - }, - - 'OHT' => { - :name => "オトダマ趣味表", - :type => 'D66', - :table => %w{ - 11:散歩 - 23:温泉 - 36:オークション - 12:うわさ話 - 24:ギャンブル - 44:パズル - 13:寝る - 25:動物 - 45:占い - 14:読書 - 26:アニメ - 46:焼き肉 - 15:アイドル - 33:ガーデニング - 55:スポーツ観戦 - 16:甘味 - 34:漫画 - 56:ゲーム - 22:飲み会 - 35:ドラマ - 66:動画配信 - }, - }, - - 'OLT' => { - :name => "オトダマ外見表", - :type => 'D66', - :table => %w{ - 11:デフォルト - 12:王子様/お姫様 - 13:和装 - 14:獣系 - 15:ゴス - 16:眼鏡 - 22:スポーツ - 23:軍服 - 24:天使/悪魔の羽 - 44:季節イベント - 25:学生服 - 26:メガホン - 33:スポーツ系 - 34:パンク - 35:フォーマル - 36:ジャージ - 45:白衣 - 46:童話コス - 55:バニー - 56:水着 - 66:戦隊コス - }, - }, - - 'OIT' => { - :name => "オトダマ一人称表", - :type => '2D6', - :table => %w{ - それがし - おいら/あたい - 自分の名前 - おれ/あたし - わたくし - 私 - ぼく/うち - 自分 - 俺様/あたくし - 余/妾 - ミー - }, - }, - - 'OYT' => { - :name => "オトダマ呼び名表", - :type => '2D6', - :table => %w{ - ユー - (PCの名前)たん/きゅん - 同志(PCの名前) - キミ - (PCの名前)くん/ちゃん - マスター - (PCの名前)さん - (PCの名前)様 - あなた - (PCの名前)氏/女史 - (PCの名前)殿 - }, - }, - - 'ORT' => { - :name => "リアクション表", - :type => '1D6', - :table => %w{ - オトダマの表の性格を表すセリフ - オトダマの裏の性格を表すセリフ - PCを応援するセリフ - PCをからかうセリフ - 趣味にまつわるセリフ - 攻撃を行うときのセリフ - }, - }, - - 'OMT' => { - :name => "出会い表", - :type => '2D6', - :table => %w{ - 名門オトダマ使い。あなたは、代々オトダマを操る一族に生まれました。あなたには、幼い頃から相棒となるオトダマがいます。あなたは、そのオトダマと共に育ちました。 - 傷ついたオトダマ。ある日、あなたは傷ついたオトダマを発見しました。意識を失い、今にも消えそうなオトダマに触れると、オトダマは意識を取り戻し、あなたを恩人と慕うようになりました。 - 見えないお友達。あなたは孤独な幼年期を過ごしてきました。そのとき、あなたを導いてくれたのが、あなたのオトダマです。オトダマは、あなたに他人のココロのウタを聞き、人々を助ける術を教えてくれました。 - 再生。あなたはオトクイに自分のココロのウタを食べられました。オトダマ使いに憑依したオトクイが倒されたとき、自分のココロの中から新たなオトダマが生まれました。 - 愛するココロ。あなたには、子どもの頃から大好きだったウタがありました。ある日、そのウタを口ずさんでいるとき、突然、後ろから拍手の音が聞こえました。振り向くと、そこにオトダマがいました。 - 動画。あなたは、動画を通じて歌を聞くのが好きでした。あるとき、聞いたことのないような素敵なウタが聞こえてきたかと思うと、画面の向こうからオトダマが飛び出してきました。 - 喪失。ある日、あなたは悲劇に見舞われました。そのとき、あなたはとても大切にしていた何かを失いました。その失ったものを補うかのように、あなたの側にオトダマが現れました。 - 受け継がれるウタ。あなたのオトダマは、あなたが大好きだった人の相棒だったオトダマでした。しかし、その人は悲劇に出会い、あなたの元を去りました。そのとき、あなたにオトダマを託したのです。 - 謎のメール。ある日、友人からあなたの元に一通のメールが送られてきました。そのメールを開くと、不思議な音楽が流れ出し、オトダマが現れました。その友人とは、それ以来、連絡がつきません。 - 封印。ある日、あなたは古いレコード屋で一曲の音盤に出会います。その音盤を再生してみると、オトダマが現れました。そして、オトダマは「封印を解いてくれたお礼に、しばらく付き合ってあげる」と言ってきました。 - 一目惚れ。以前、あなたは様々な楽曲を発表していました。すると、その楽曲に一目惚れしたと言って、あなたの元にオトダマが押しかけてきました。以来、そのオトダマに付きまとわれる毎日です。 - }, - }, - - }.freeze - - setPrefixes(['R([A-DS]|\d+).*'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/Hieizan.rb b/src/src_bcdice/diceBot/Hieizan.rb deleted file mode 100644 index a90e0e9be..000000000 --- a/src/src_bcdice/diceBot/Hieizan.rb +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Hieizan < DiceBot - # ゲームシステムの識別子 - ID = 'Hieizan' - - # ゲームシステム名 - NAME = '比叡山炎上' - - # ゲームシステム名の読みがな - SORT_KEY = 'ひえいさんえんしよう' - - # ダイスボットの使い方 - HELP_MESSAGE = "大成功、自動成功、失敗、自動失敗、大失敗の自動判定を行います。\n" - - # ゲーム別成功度判定(1d100) - def check_1D100(total, _dice_total, _cmp_op, target) - return '' if target == '?' - - if total <= 1 - # 1は自動成功 - if total <= (target / 5) - " > 大成功" - else - " > 自動成功" - end - elsif total >= 100 - # 00は大失敗(大失敗は自動失敗でもある) - " > 大失敗" - elsif total >= 96 - # 96-00は自動失敗 - " > 自動失敗" - elsif total <= target - if total <= (target / 5) - # 目標値の1/5以下は大成功 - " > 大成功" - else - " > 成功" - end - else - " > 失敗" - end - end -end diff --git a/src/src_bcdice/diceBot/HouraiGakuen.rb b/src/src_bcdice/diceBot/HouraiGakuen.rb deleted file mode 100644 index 48b7f31a6..000000000 --- a/src/src_bcdice/diceBot/HouraiGakuen.rb +++ /dev/null @@ -1,257 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class HouraiGakuen < DiceBot - # ゲームシステムの識別子 - ID = 'HouraiGakuen' - - # ゲームシステム名 - NAME = '蓬莱学園の冒険!!' - - # ゲームシステム名の読みがな - SORT_KEY = 'ほうらいかくえんのほうけん' - - # ダイスボットの使い方 - HELP_MESSAGE = < enemyRank - return "あなたが勝利" - end - - if yourRank < enemyRank - return "相手が勝利" - end - - return "引き分け" - end - - def getResultRank(result) - ranks = [ - FUMBLE, - FAILURE, - SUCCESS, - CRITICAL, - ] - - return ranks.index(result) - end - - # 陰陽コマンド - def getInnyouResult(_command) - oddCount = 0 - evenCount = 0 - - 3.times do - dice, = roll(1, 6) - - if dice.even? - evenCount += 1 # 偶数カウント - else - oddCount += 1 # 奇数カウント - end - end - - if evenCount < oddCount - return "陽(奇数の方が多い)" - else - return "陰(偶数の方が多い)" - end - end - - # 八徳コマンド - def getHattokuResult(_command) - # 3回振って、奇数・偶数がどの順序で出たかを記録する - oddEvenList = [] - 3.times do - oddEvenList << getOddEven - end - - oddEvenText = oddEvenList.join("、") - - case oddEvenText - when "奇数、奇数、奇数" - return "仁義八徳は、【仁】(#{oddEvenText})" - when "奇数、奇数、偶数" - return "仁義八徳は、【義】(#{oddEvenText})" - when "奇数、偶数、奇数" - return "仁義八徳は、【礼】(#{oddEvenText})" - when "奇数、偶数、偶数" - return "仁義八徳は、【智】(#{oddEvenText})" - when "偶数、奇数、奇数" - return "仁義八徳は、【忠】(#{oddEvenText})" - when "偶数、奇数、偶数" - return "仁義八徳は、【信】(#{oddEvenText})" - when "偶数、偶数、奇数" - return "仁義八徳は、【孝】(#{oddEvenText})" - when "偶数、偶数、偶数" - return "仁義八徳は、【悌】(#{oddEvenText})" - else - return "異常終了" - end - end - - def getOddEven - dice, = roll(1, 6) - - return "偶数" if dice.even? - - return "奇数" - end - - def getGogyouResult(_command) - type = '五行表' - - table = getGogyouTable - text, number = get_table_by_1d6(table) - - output = "#{type}(#{number}) > #{text}" - return output - end - - # 五行コマンド - def getGogyouTable - table = [ - '五行【木】', - '五行【火】', - '五行【土】', - '五行【金】', - '五行【水】', - '五行は【任意選択】', - ] - return table - end -end diff --git a/src/src_bcdice/diceBot/HuntersMoon.rb b/src/src_bcdice/diceBot/HuntersMoon.rb deleted file mode 100644 index 29d0db687..000000000 --- a/src/src_bcdice/diceBot/HuntersMoon.rb +++ /dev/null @@ -1,648 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class HuntersMoon < DiceBot - # ゲームシステムの識別子 - ID = 'HuntersMoon' - - # ゲームシステム名 - NAME = 'ハンターズ・ムーン' - - # ゲームシステム名の読みがな - SORT_KEY = 'はんたあすむうん' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - " > ファンブル(モノビースト追加行動+1)" - elsif dice_total >= 12 - " > スペシャル(変調1つ回復orダメージ+1D6)" - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - def rollDiceCommand(command) - string = command.upcase - output = '1' - type = "" - total_n = "" - - case string.upcase - - when /CLT/i - type = '都市ロケーション' - output, total_n = hm_city_location_table - when /SLT/i - type = '閉所ロケーション' - output, total_n = hm_small_location_table - when /HLT/i - type = '炎熱ロケーション' - output, total_n = hm_hot_location_table - when /FLT/i - type = '冷暗ロケーション' - output, total_n = hm_freezing_location_table - when /DLT/i - type = '部位ダメージ決定' - output, total_n = hm_hit_location_table - - when /MAT/i - type = 'モノビースト行動' - output, total_n = hm_monobeast_action_table - - when /SA(2)?T(\d*)/i - isType2 = !Regexp.last_match(1).nil? - count = Regexp.last_match(2).to_i - count = 1 if count == 0 - - type = '異形アビリティー' - output, total_n = get_strange_ability_table_result(count, isType2) - - when /TST/i - type = '指定特技(社会)' - output, total_n = hm_social_skill_table - when /THT/i - type = '指定特技(頭部)' - output, total_n = hm_head_skill_table - when /TAT/i - type = '指定特技(腕部)' - output, total_n = hm_arm_skill_table - when /TBT/i - type = '指定特技(胴部)' - output, total_n = hm_trunk_skill_table - when /TLT/i - type = '指定特技(脚部)' - output, total_n = hm_leg_skill_table - when /TET/i - type = '指定特技(環境)' - output, total_n = hm_environmental_skill_table - - when 'ET' - type = '遭遇' - output, total_n = hm_encount_table - - else - return getTableCommandResult(command, TABLES) - end - - return output if output == '1' - - output = "#{type}表(#{total_n}) > #{output}" - return output - end - - # ** ロケーション表 - def hm_city_location_table - table = [ - '住宅街/閑静な住宅街。不意打ちに適しているため、ハンターの攻撃判定に+1の修正をつけてもよい。', - '学校/夜の学校。遮蔽物が多く入り組んだ構造のため、ハンターはブロック判定によって肩代わりしたダメージを1減少してもよい。', - '駅/人のいない駅。全てのキャラクターがファンブル時に砂利に突っ込んだり伝染に接触しかけることで1D6のダメージを受ける。', - '高速道路/高速道路の路上。全てのキャラクターが、ファンブル時には走ってきた車に跳ねられて1D6のダメージを受ける。', - 'ビル屋上/高いビルの屋上。ハンターはファンブル時に屋上から落下して強制的に撤退する。命に別状はない', - '繁華街/にぎやかな繁華街の裏路地。大量の人の気配が近くにあるため、モノビーストが撤退するラウンドが1ラウンド早くなる。決戦フェイズでは特に効果なし。', - ] - return get_table_by_1d6(table) - end - - def hm_small_location_table - table = [ - '地下倉庫/広々とした倉庫。探してみれば色々なものが転がっている。ハンターは戦闘開始時に好きなアイテムを一つ入手してもよい。', - '地下鉄/地下鉄の線路上。全てのキャラクターが、ファンブル時にはなぜか走ってくる列車に撥ねられて1D6ダメージを受ける。', - '地下道/暗いトンネル。車道や照明の落ちた地下街。ハンターは、ファンブル時にアイテムを一つランダムに失くしてしまう。', - '廃病院/危険な廃物がたくさん落ちているため、誰もここで戦うのは好きではない。キャラクター全員の【モラル】を3点減少してから戦闘を開始する。', - '下水道/人が2人並べるくらいの幅の下水道。メンテナンス用の明かりしかなく、非常に視界が悪いため、ハンターの攻撃判定に-1の修正がつく。', - '都市の底/都市の全てのゴミが流れ着く場所。広い空洞にゴミが敷き詰められている。この敵対的な環境では、ハンターの攻撃判定に-1の修正がつく。さらにハンターは攻撃失敗時に2ダメージを受ける。', - ] - return get_table_by_1d6(table) - end - - def hm_hot_location_table - table = [ - '温室/植物が栽培されている熱く湿った場所。生命に満ち溢れた様子は、戦闘開始時にハンターの【モラル】を1点増加する。', - '調理場/調理器具があちこちに放置された、アクションには多大なリスクをともなう場所。全てのキャラクターは、ファンブル時に良くない場所に手をついたり刃物のラックをひっくり返して1D6ダメージを受ける。', - 'ボイラー室/モノビーストは蒸気機関の周囲を好む傾向があるが、ここはうるさくて気が散るうえに暑い。全てのキャラクターは、感情属性が「怒り」の場合、全てのアビリティの反動が1増加する。', - '機関室/何らかの工場。入り組みすぎて周りを見通せないうえ、配置がわからず出たとこ勝負を強いられる。キャラクター全員が戦闘開始時に「妨害」の変調を発動する。', - '火事場/事故現場なのかモノビーストの仕業か、あたりは激しく燃え盛っている。ハンターはファンブル時に「炎上」の変調を発動する。', - '製鉄所/無人ながら稼働中の製鉄所。安全対策が不十分で、溶けた金属の周囲まで近づくことが可能だ。ハンターは毎ラウンド終了時に《耐熱》で行為判定をし、これに失敗すると「炎上」の変調を発動する。', - ] - return get_table_by_1d6(table) - end - - def hm_freezing_location_table - table = [ - '冷凍保管室/食品が氷漬けにされている場所。ここではモノビーストは氷に覆われてしまう。モノビーストは戦闘開始時に「捕縛」の変調を発動する。', - '墓地/死んだ人々が眠る場所。ここで激しいアクションを行うことは冒涜的だ。全てのキャラクターは感情属性が恐怖の場合、全てのアビリティの反動が1増加する。', - '魚市場/発泡スチロールの箱に鮮魚と氷が詰まり、コンクリートの床は濡れていて滑りやすい。ハンターはファンブル時に転んで1D6ダメージを受ける。', - '博物館/すっかり静まり返った博物館で、モノビーストは動物の剥製の間に潜んでいる。紛らわしい展示物だらけであるため、ハンターは攻撃判定に-1の修正を受ける。', - '空き地/寒風吹きすさぶ空き地。長くいると凍えてしまいそうだ。ハンターはファンブル時に身体がかじかみ、「重傷」の変調を発動する。', - '氷室/氷で満たされた洞窟。こんな場所が都市にあったとは信じがたいが、とにかくひどく寒い。ハンターは毎ラウンド終了時に《耐寒》で判定し、失敗すると「重傷」の変調を発動する。', - ] - return get_table_by_1d6(table) - end - - # ** 遭遇表 - def hm_encount_table - table = [ - '獲物/恐怖/あなたはモノビーストの獲物として追い回される。満月の夜でないと傷を負わせることができない怪物相手に、あなたは逃げ回るしかない。', - '暗闇/恐怖/あの獣は暗闇の中から現れ、暗闇の中へ消えていった。どんなに振り払おうとしても、あの恐ろしい姿の記憶から逃れられない。', - '依頼/怒り/あなたはモノビーストの被害者の関係者、あるいはハンターや魔術師の組織から、モノビーストを倒す依頼を受けた。', - '気配/恐怖/街の気配がどこかおかしい。視線を感じたり、物音が聞こえたり・・・だが、獣の姿を捉えることはできない。漠然とした恐怖があなたの心をむしばむ。', - '現場/怒り/あなたはモノビーストが獲物を捕食した現場を発見した。派手な血の跡が目に焼きつく。こんなことをする奴を生かしてはおけない。', - '賭博/怒り/あなたの今回の獲物は、最近ハンターの間で話題になっているモノビーストだ。次の満月の夜にあいつを倒せるか、あなたは他のハンターと賭けをした。', - ] - return get_table_by_1d6(table) - end - - # ** - def hm_monobeast_action_table - table = [ - '社会/モノビーストは時間をかけて逃げ続けることで、ダメージを回復しようとしているようだ。部位ダメージを自由に一つ回復する。部位ダメージを受けていない場合、【モラル】が1D6回復する。', - '頭部/モノビーストはハンターを撒こうとしている。次の戦闘が日暮れ、もしくは真夜中である場合、モノビーストは1ラウンド少ないラウンドで撤退する。次の戦闘が夜明けである場合、【モラル】が2D6増加する。', - '腕部/モノビーストは若い犠牲者を選んで捕食しようとしている。どうやら力を増そうとしているらしい。セッション終了までモノビーストの攻撃によるダメージは+1の修正がつく。', - '胴部/モノビーストは別のハンターと遭遇し、それを食べて新しいアビリティを手に入れる! ランダムに異形アビリティを一つ決定し、修得する。', - '脚部/モノビーストはハンターを特定の場所に誘導しているようだ。ロケーション表を振り、次の戦闘のロケーションを変更する。そのロケーションで次の戦闘が始まった場合、モノビーストは最初のラウンドに追加行動を1回得る。', - '環境/モノビーストは移動中に人間の団体と遭遇し、食い散らかす。たらふく食ったモノビーストは【モラル】を3D6点増加させる', - ] - return get_table_by_1d6(table) - end - - # ** 部位ダメージ決定表 - def hm_hit_location_table - table = [ - '脳', - '利き腕', - '利き脚', - '消化器', - '感覚器', - '攻撃したキャラクターの任意の部分', - '口', - '呼吸器', - '逆脚', - '逆腕', - '心臓', - ] - return get_table_by_2d6(table) - end - - def getStrangeAbilityTable1; end - - # ** 異形アビリティー表 - def get_strange_ability_table_result(count, isType2) - output = '' - dice = '' - - table1 = get_strange_ability_table_1 - table2 = get_strange_ability_table_2 - - count.times do |i| - if i != 0 - output += "/" - dice += "," - end - - table = table1 - - if isType2 - number, = roll(1, 6) - index = (number.odd? ? 0 : 1) - - table = [table1, table2][index] - dice += "#{number}-" - output += "[表#{index + 1}]" - end - - ability, indexText = get_table_by_d66(table) - next if ability == '1' - - output += ability.to_s - dice += indexText - end - - return '1', dice if output.empty? - - return output, dice - end - - def get_strange_ability_table_1 - table = %w{ - 大牙 - 大鎌 - 針山 - 大鋏 - 吸血根 - 巨大化 - 瘴気 - 火炎放射 - 鑢 - ドリル - 絶叫 - 粘液噴射 - 潤滑液 - 皮膚装甲 - 器官生成 - 翼 - 四肢複製 - 分解 - 異言 - 閃光 - 冷気 - 悪臭 - 化膿歯 - 気嚢 - 触手 - 肉瘤 - 暗視 - 邪視 - 超振動 - 酸分泌 - 結晶化 - 裏腹 - 融合 - 嘔吐 - 腐敗 - 変色 - } - return table - end - - def get_strange_ability_table_2 - table = %w{ - 電撃 - 障壁 - 追加肢 - 破裂球 - 死病 - ソナー - 未来視 - 寄生体 - 再構築 - 分身 - 大角 - 鉄塊 - 硬質化 - 生命力吸収 - 鬼火 - 金縛り - 排出口 - 金属化 - 鋼鱗 - 神経接合 - 光翼 - 環境適応 - 消化剤 - プロペラ - 血栓 - 骨槍 - 回転 - 怒髪 - 煙幕 - 脂肪層 - 逆棘 - 偽頭 - 赤化 - 発条 - 凶運 - 巨砲 - } - return table - end - - # ** 指定特技ランダム決定(社会) - def hm_social_skill_table - table = [ - '怯える', - '考えない', - '話す', - '黙る', - '売る', - '伝える', - '作る', - '憶える', - '脅す', - '騙す', - '怒る', - ] - return get_table_by_2d6(table) - end - - # ** 指定特技ランダム決定(頭部) - def hm_head_skill_table - table = [ - '聴く', - '感覚器', - '見つける', - '反応', - '閃く', - '脳', - '考える', - '予感', - '叫ぶ', - '口', - '噛む', - ] - return get_table_by_2d6(table) - end - - # ** 指定特技ランダム決定(腕部) - def hm_arm_skill_table - table = [ - '操作', - '殴る', - '斬る', - '利き腕', - '撃つ', - '掴む', - '投げる', - '逆腕', - '刺す', - '振る', - '締める', - ] - return get_table_by_2d6(table) - end - - # ** 指定特技ランダム決定(胴部) - def hm_trunk_skill_table - table = [ - '塞ぐ', - '呼吸器', - '止める', - '動かない', - '受ける', - '心臓', - '逸らす', - 'かわす', - '落ちる', - '消化器', - '耐える', - ] - return get_table_by_2d6(table) - end - - # ** 指定特技ランダム決定(脚部) - def hm_leg_skill_table - table = [ - '迫る', - '走る', - '蹴る', - '利き脚', - '跳ぶ', - '仕掛ける', - 'しゃがむ', - '逆脚', - '滑る', - '踏む', - '歩く', - ] - return get_table_by_2d6(table) - end - - # ** 指定特技ランダム決定(環境) - def hm_environmental_skill_table - table = [ - '耐熱', - '休む', - '待つ', - '捕らえる', - '隠れる', - '追う', - 'バランス', - '現れる', - '追い込む', - '休まない', - '耐寒', - ] - return get_table_by_2d6(table) - end - - TABLES = - { - - 'DS1ET' => { - :name => "ディフェンス遭遇表1st", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -状況 あなたはモノビーストに追い詰められるまま建物に閉じこもる。とりあえず、夜は建物の中を威勢よく動き回り、相手を威嚇しなければ。\n指定特技 《脅す/社会10》\n成功 建物の外から隙を窺うモノビーストをきつく睨みつける。感情属性を「怒り」に設定。\n失敗 ヤツはあなたを嘲笑うかのように建物の中に出現を繰り返す。感情属性を「恐怖」に設定。 -状況 廃墟となって久しいこの建物には、ハンターがいた形跡がある。山と仕掛けられれたトラップに気をつけながら探索を続けるが……。\n指定特技 《見つける/頭部4》\n成功 裏口で格闘の跡を見つける。何かの事情で、出たところを襲われたのだ。感情属性を「怒り」に設定。\n失敗 トラップに引っかかり怪我をする。こんなところに立て篭もって大丈夫か?感情属性を「恐怖」に設定。 -状況 あなたの友人のハンターは脚に重傷を負って動けない。しばらくこの建物の中で回復を待つしかなさそうだが、彼は足手まといになるのを嫌って戸外で死のうとする。止めよう。\n指定特技 《逆腕/腕部9》\n成功 必死に引き止めた戸口の向こうで、笑うような息遣いが聞こえた。感情属性を「恐怖」に設定。\n失敗 制止を振り切って出て行った友人は死んだ。感情属性を「怒り」に設定。 -状況 エレベーターが落ちた。不運な同行者と一緒に、誰も来ないビルの地下に閉じ込められる。落ちる寸前、天井で聞いた音は間違いなくヤツのものだ。\n指定特技 《落ちる/胴部10》\n成功 怪我もなく落下を切り抜けたが、同行者を連れて出て行く手段がない。感情属性を「恐怖」に設定。\n失敗 ショックでパニックに陥った同行者はあなたを責め立てる。感情属性を「怒り」に設定。 -状況 今回の相手は光が強い環境では消散能力を使えないようだ。あなたは建物中を駆けまわって、照明をつけてまわる。\n指定特技 《逆脚/脚部9》\n成功 なんとか防御体制は整ったが、送電線が気に掛かる。感情属性を「恐怖」に設定。\n失敗 間に合わない。建物の半分の送電が絶たれ、あなたは狭い部屋に閉じこもることになる。感情属性を「怒り」に設定。 -状況 金がないのか脚が遅いのか、あなたは逃げ回ることができない。唯一の選択肢は、あらかじめ作っておいた隠れ家に潜むことだ。\n指定特技 《隠れる/環境6》\n成功 とりあえず、うまく隠れることができたようだ。感情属性を「怒り」に設定。\n失敗 隠れ家の装備は、すでに破壊されていた。感情属性を「恐怖」に設定。 -TABLE_TEXT_END - }, - - 'DS2ET' => { - :name => "ディフェンス遭遇表2nd", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -状況 建物の構造を把握し、憶えこむことで、満月の晩までの生存率は大きく向上するだろう。あなたは眠い目を擦りつつ、昼間も探索を続ける。\n指定特技 《覚える/社会9》\n成功 やつを迎え撃つ自信が湧いてきた。【モラル】が2点増加する。\n失敗 眠くて全然覚えられない。体力を消耗してしまう。「重傷」の変調を発動する。 -状況 夜が来るたびに退屈な見張りが始まる。代わり映えのしない景色を眺めていると、モノビーストの襲撃に対する反応速度を保つのは難しい。\n指定特技 《反応/頭部5》\n成功 襲われたが難なくやり過ごす。感情属性を任意に変更できる。\n失敗 後ろに実体化したモノビーストに気付くのが遅れ、痛い代償を払うことになった。アイテムを任意に1つ失う。 -状況 モノビーストが実体化するにはある程度のスペースが必要だ。あなたは部屋の中にワイアを張り巡らし、空間を細分することで攻撃を防ぐ。\n指定特技 《斬る/腕部4》\n成功 モノビーストはあなたを警戒するあまり動きが鈍り、「妨害」の変調を発動する。\n失敗 動きづらくなっただけで襲撃が無い……【モラル】が2点減少する。 -状況 建物の中にあるものを何でも積んでバリケードを作る。霧になる相手には効果が薄いかもしれないが。移動を制限できるぶん、ないよりマシだ。\n指定特技 《心臓/胴部7》\n成功 この場所は満月の夜にヤツを追い詰める場所としても使えるだろう。【ネット】を入手する。\n失敗 堂々と壁を破って侵入された……撃退はしたが、自らのあまりの愚かさに「動転」してしまう。 -状況 自作の罠を建物のあちこちに配置する。うまくいけば、ヤツを退散させる程度の役には立つだろう。\n指定特技 《仕掛ける/脚部7》\n成功 うとうとしていた夜更け、悲鳴とともに逃げ出すモノビーストの移動音で目を覚ます。【モラル】が2点増加する。\n失敗 まるで意に介さないモノビーストに追い回されトラウマを負う。このセッションが終了するまで妨害判定にマイナス2の修正がつく。 -状況 やばい。寒い。空調の故障か季節が悪いのか、モノビーストと勝負する前に凍死してしまいそうだ。\n指定特技 《耐寒/環境12》\n成功 あなたは苦難を耐え切り、自信を身につける。次の遭遇表の行為判定にプラス2の修正がつく。\n失敗 我慢できなくなってアイテムを燃やして暖を取る。ランダムにアイテムを1つ失う。 -TABLE_TEXT_END - }, - - 'DS3ET' => { - :name => "ディフェンス遭遇表3rd", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -状況 時は来た。問題は立て篭もっていた建物から出て行くタイミングだが、囮を使うことでモノビーストを騙し、安全に出ていけるかもしれない。\n指定特技 《騙す/社会11》\n成功 相手の不意を打った!次に行う行為判定にプラス2の修正がつく。\n失敗 逆に騙され、日が沈みきっていない早い時間に飛び出してしまう。モノビーストは夕暮れの戦闘で変調を発動しない。 -状況 長い潜伏期間を過ごした建物を振り返り、その上に出ている満月を見つめる。この夜でケリがつく。そんな予感があなたの胸を満たす。\n指定特技 《予感/頭部9》\n成功 どんな形で決着がつくか、脳裏にイメージが浮かぶ。感情属性を任意に変更できる。\n失敗 不安があなたの心を締め付ける。【感情】が2点増加する。 -状況 さて満月の夜だ。幸い投擲武器が豊富な場所にいるわけで、外にいるモノビーストに、すこし先制攻撃をさせてもらおう。\n指定特技 《投げる/腕部8》\n成功 投げたものがばらばらと当たり、相手はいらついている。モノビーストの【感情】が2点増加する。\n失敗 物を投げるのが楽しくなってしまい、狩りに出遅れる。夕暮れの追跡フェイズで行う判定にマイナス2の修正がつく。 -状況 ついに相手と対等になる夜だ、と意気揚々と外に出たあなたを、上空からの不意打ちが襲う。もちろん、ヤツはあなたを待ち構えていたのだ。\n指定特技 《かわす/胴部9》\n成功 待ち伏せくらいは予想のうちだ。【モラル】が2点増加する。\n失敗 まともに食らったが、アイテムのおかげで命拾いする。持っていれば【医療キット】を失う。 -状況 狭い所に閉じこもりきりで、これまで走り出したくてうずうずしていた脚に気合を入れる。今夜はどこまでも走っていけそうだ。\n指定特技 《走る/脚部3》\n成功 いい感じに体が軽い。このセッションの間、ロケーション変更判定にプラス2の修正がつく。\n失敗 いきなり脚をくじく。せめて準備運動はするべきだったかもしれない。【モラル】が4点減少する。 -状況 こんなこともあろうかと、あなたは秘密の出口を作っておいたのだ。予想もしない場所から出てくるあなたに、ヤツは恐れおののくに違いない。\n指定特技 《現れる/環境9》\n成功 かなり効果的に敵の虚をついた。モノビーストは次に得る追加行動を1回失う。\n失敗 秘密の出口はすでに破壊されていた……とぼとぼと戻る。【感情】が4点増加する。 -TABLE_TEXT_END - }, - - 'EE1ET' => { - :name => "エスケープ遭遇表1st", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -状況 あなたは見た。夜の街を闊歩し、気ままに人を食い散らかす怪物を。すぐ近くまで追っている危険を、大事な人に伝えなければならない。\n指定特技 《伝える/社会7》\n成功 最近疲れてるんじゃない?と返され絶望する。感情属性を「恐怖」に設定。\n失敗 病院に連れて行かれた。感情属性を「怒り」に設定。 -状況 夜道で角を曲がったら怪物がいた。しかもばっちり目が合った。不運を嘆く暇もなく、ヤツは襲い掛かってくる。速く逃げないと!\n指定特技 《反応/頭部5》\n成功 逃げられたが理不尽さに怒りがこみ上げる。感情属性を「怒り」に設定。\n失敗 頭を食いちぎられる寸前で危うくも逃げ出す。感情属性を「恐怖」に設定。 -状況 買い物帰り、夜道を並んで歩いていた友人の上半身がいきなり消えた。喰われたのだ。今すぐヤツに買い物袋を投げつけろ。\n指定特技 《投げる/腕部8》\n成功 無駄になった食材と友人のため、感情属性を「怒り」に設定。\n失敗 散らばった買い物に足をとられて転び、捕食シーンをまざまざと見せつけられる。感情属性を「恐怖」に設定。 -状況 音がする。床を踏みしめる音。固い何かが触れ合う音。吐く息、吸う息、唸り声、悲鳴。何も聞こえないふりをしなければ、これは本当にあることになってしまう。\n指定特技 《耐える/胴部12》\n成功 パニックを起こさずに冷静に検討した結果、逃げなければならないと結論が出る。 感情属性を「怒り」に設定。\n失敗 パニックに陥りやみくもに逃げ出す。感情属性を「恐怖」に設定。 -状況 この子を頼む、と叫んで幼児を放り投げたハンターは、目の前でモノビーストに食われて死んだ。ヤツは明らかにこの子を狙っているし、まずは受け止める必要がある。\n指定特技 《跳ぶ/脚部6》\n成功 うまくキャッチ!この子を抱えて武器を振り回すわけにはいかない、まずは逃げよう。感情属性を「怒り」に設定。\n失敗 落とした……かと思ったよ。いや危ない危ない。感情属性を「恐怖」に設定。 -状況 きつい一日だった。下を向いて歩いていたからだろう。すぐ横にモノビーストがいるのに気付かなかった。あまりに近すぎて動揺し、足がもつれる。\n指定特技 《バランス/環境8》\n成功 見えていることは気づかれていない……感情属性を「恐怖」に設定。\n失敗 モノビーストと接触し、一晩中追い回される。感情属性を「怒り」に設定。 -TABLE_TEXT_END - }, - - 'EE2ET' => { - :name => "エスケープ遭遇表2nd", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -状況 モノビーストから逃げるあなたの目の前に、パトロール中の警察官が!夜中に必死な顔で走っている理由をひねり出せ。\n指定特技 《騙す/社会11》\n成功 うまく言い抜けた。【モラル】が1点増加する。\n失敗 質問されているうちにモノビーストが追いつき、警察官を食い殺す。感情属性が反転する。 -状況 あの夜以来、毎晩モノビーストに追い回されている。完全に目をつけられたようだ。この状況から抜け出すために、あなたは眠い目を擦りながら昼間も考え続ける。\n指定特技 《考える/頭部8》\n成功 ヤツの能力について整理できた。このセッション中、弱点調査判定にプラス1の修正がつく。\n失敗 眠くて何も考えられない。感情属性を「恐怖」に設定。 -状況 車で街から逃走しようとしたところ、ひどい渋滞に引っかかって夜になり、案の定襲撃があって車をひっくり返された。武器になりそうなのは発炎筒だけだ……。\n指定特技 《撃つ/腕部6》\n成功 なんとか撃退成功。駆けつけたJAFの人から【医療キット】を入手できる。\n失敗 まるで効かない。車に積んであった装備を諦め、街に逃げ戻る。【感情】が2点増加する。 -状況 密閉した部屋に閉じこもり、隙間がないこと、ヤツが諦めてくれることを神に祈る。どんな神であれ、心から祈れば答えがあるかもしれない。\n指定特技 《心臓/胴部7》\n成功 徴が現れた!【勝利のお守り】を入手できる。\n失敗 何も起こらない。【感情】が2点増加する。 -状況 モノビーストには縄張りがある。まっすぐ歩き続ければ、いつかその外に出られるはずだ。\n指定特技 《歩く/脚部12》\n成功 行く先々で橋は落ち、停電は発生し、公共交通機関は止まっている。感情属性が反転する。\n失敗 いつのまにか迷子になってしまっている。「動転」の変調を発動する。 -状況 モノビーストから逃げ続けるなか、ヤツと戦う人間を見かける。あの人を追いかけられれば、協力できるかもしれない。\n指定特技 《追う/環境7》\n成功 任意の他のハンターと出会う。【モラル】が3点増加する。\n失敗 ダメだ、見失ってしまった。【感情】が2点増加する。 -TABLE_TEXT_END - }, - - 'EE3ET' => { - :name => "エスケープ遭遇表3rd", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -状況 考え付く限りのルートと手段を使って逃げ続けたあなたがたどりついた袋小路には、モノビーストが待っていた。もう何も考えず、必死に戦うしかないようだ。\n指定特技 《考えない/社会3》\n成功 思考停止成功!感情属性を好きに変更できる。\n失敗 別のハンターが倒してくれるかもしれないと考えて気後れする。夕暮れの戦闘フェイズでは自分が行う全ての攻撃判定にマイナス1の修正がつく。 -状況 いつまでも逃げ続けるわけにはいかない。体力的にも限界が近づいている。この状況を打開する方法を見つけなければならない。\n指定特技 《見つける/頭部4》\n成功 モノビーストを殺せば逃げなくてもよくなると発見。【モラル】が2点増加する。\n失敗 どうも戦うしかないようだ。感情属性が反転する。 -状況 逃げるあなたの巻き添えで、また人が殺される。こんなのはもうたくさんだ。逃げればそのうち何とかなるという考えを振り払わねばならない。\n指定特技 《振る/腕部11》\n成功 弱気な考えを振り切った。この決意にあたるものとして【興奮剤】を入手することができる。\n失敗 勝てる気がしない。【モラル】が2点減少する。 -状況 空を見上げれば満月が浮かんでいる。あなたの実力をもってすれば、今ならモノビーストと戦える。今こそ逃げるのを止めて戦う時なのだ。\n指定特技 《止める/胴部3》\n成功 【激情】を1点得る。ただしこのセッションで【感情】が30になっても【激情】を得られない。\n失敗 明らかに怯えた様子のあなたを見て、モノビーストの【モラル】が3点増加する。 -状況 走ってどこまでも逃げていく。順調にいけば振りきれただろうが、ぬかるみ、血、それに類する何かによってあなたの足は滑り、モノビーストに追いつかれてしまう。覚悟を決める時が来たようだ。\n指定特技 《滑る/脚部10》\n成功 速度を利用していい位置に。夕暮れの戦闘フェイズでは先制判定を振らず、成功にすることができる。\n失敗 滑り方がよくなかった。「妨害」の変調を発動する。 -状況 ハンターが集まり、モノビーストに戦いを挑んでいる。今なら難なく逃げ切れるはずだ……しかし、彼らを見捨てることなどできない。あなたは来た道を引き返していく。\n指定特技 《現れる/環境9》\n成功 突然現れた増援に、モノビーストの【モラル】が2点減少する。\n失敗 逃げる途中で落し物。ランダムにアイテムを1つ失う。 -TABLE_TEXT_END - }, - - 'ERT' => { - :name => "代償表", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -評判の失墜\n 次のセッションで登場するハンターキラーの合計レベルが1上昇します。\nこの代償を持つハンターがセッションに複数参加している場合、効果の累積はしません。 -闇夜の饗宴\n 次のセッションに登場するモノビーストのランクが1上昇します。\nこの代償を持つハンターがセッションに複数参加してる場合、効果の累積はしません。 -特技の忘却\n 習得した特技の中から1つを任意に選び、使用不能にします。\n次にモノビーストを殺したタイミングで、この特技は使用可能になります。\nこの代償を複数回得ることで特技が0個になったハンターは、判定および生活が不可能になって死亡します。最終判定すらできません。 -能力の不調\n 習得している汎用または武器アビリティの中から1つを任意に選び、使用不能にします。\n次にモノビーストを殺したタイミングで、このアビリティは使用可能になります。\nこの代償を複数回得ることでアビリティを全て失ったハンターは、戦闘不能となり引退します。 -自信の喪失\n 【モラル】基準値が1減少します。この減少は、次にモノビーストを殺したタイミングで元に戻ります。\nこの代償を複数回得ることで【モラル】基準値がマイナスになったハンターは、気力を完全に失い引退します。 -引退の決意\n 異形アビリティを全て失います。この代償で失った異形アビリティを回復することはできません。\nこの代償を続けて2回得た段階でハンターはモノビーストとの接触を失い、視認できなくなります。つまり強制的に引退です。 -TABLE_TEXT_END - }, - - 'ET1ET' => { - :name => "エスコート遭遇表1st", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -状況 追われる彼/彼女があなたの前に現れたのは満月の夜。獲物に集中しているモノビーストを攻撃するのは容易いことだったが……。\n指定特技 《怯える/社会2》\n成功 今戦えば彼/彼女は死ぬと思いとどまって一緒に逃げる。感情属性を「恐怖」に設定。\n失敗 モノビーストを倒しきれず、彼/彼女は一生残る傷を負う。感情属性を「怒り」に設定。 -状況 彼/彼女は、窓を破りながらあなたの家に飛び込んできた。モノビーストは見えているようだが、あなたの渋い顔は見えていないようだ。\n指定特技 《反応/頭部5》\n成功 とっさに反応し、モノビーストを攻撃して追い払う。感情属性を「怒り」に設定。\n失敗 あまりの唐突さに襲い来るモノビーストへの対応が遅れ、部屋を放棄して逃げることになる。感情属性を「恐怖」に設定。 -状況 夜、あなたの隣を歩いている彼/彼女が不意打ちを受ける。どうやら獲物として選ばれたようだが、腕を引いて助けることはできるだろうか?\n指定特技 《利き腕/腕部5》\n成功 紙一重で攻撃を避けさせることに成功。感情属性を「恐怖」に設定。\n失敗 かばう形になり手傷を負う。感情属性を「怒り」に設定。 -状況 彼/彼女はどう見てもハンターとしては無能だが、あるモノビーストを倒す必要があるのだという。助力を頼まれたあなたは……。\n指定特技 《止める/頭部4》\n成功 その場の勢いで代わりに戦うことになってしまった。感情属性を「恐怖」に設定。\n失敗 説得するが失敗。彼/彼女は一人で夜の街へ飛び出す。感情属性を「怒り」に設定。 -状況 彼/彼女は子供で、子供を餌として好む怪物に追われていて、助けてやれる人はあなたしかいない。安心させるために目の高さを合わせてみよう。\n指定特技 《しゃがむ/脚部8》\n成功 彼/彼女はよくあなたに懐き、それを狙うモノビーストへの感情属性は「怒り」になる。\n失敗 全然ダメ。護衛を放り出すわけにもいかないが先行き不安だ。感情属性を「恐怖」に設定。 -状況 あなたはモノビーストの標的となった彼/彼女を数カ月にわたって守り続けている。逃避行のなか、気が休まるのは日が高いうちだけだ。\n指定特技 《休む/環境3》\n成功 よく休み気力は充分だ。今度の満月の夜に、この逃避行を終わらせる。感情属性を「怒り」に設定。 \n失敗 ちょっとした暗がりにヤツが潜んでいる気がしてならない。まるで休めず、感情属性を「恐怖」に設定。 -TABLE_TEXT_END - }, - - 'ET2ET' => { - :name => "エスコート遭遇表2nd", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -状況 彼/彼女は怪物に狙われる日々に憔悴している。モノビーストは狙いを変えたとか、もう死んだとか、元気付けるようなことを言わなくては。\n指定特技 《騙す/社会11》\n成功 一時しのぎの嘘だが元気な笑顔が見られる。【勝利のお守り】として記憶に刻んでおいてもよい。\n失敗 あなたの下手な嘘は彼/彼女を「動転」させる。あなたも影響を受けて同じ変調を発動する。 -状況 彼/彼女は執拗に狙われる理由を知りたがっている。考えてみよう。もしかしたら、戦わずにすむかもしれない。\n指定特技 《考える/頭部8》\n成功 モノビーストは彼/彼女と似たタイプの人間を殺してきているようだ。このセッション中、習性調査判定にプラス1の修正がつく。\n失敗 全然分からない。【感情】が2点増加する。 -状況 彼/彼女はあなたの献身的な姿に罪悪感を覚え、人知れず姿を消し、モノビーストに殺されることであなたの苦労を終わらせようとする。\n指定特技 《掴む/腕部7》\n成功 間一髪のところで掴まえた。感情属性を反転させる。\n失敗 あなたの手は届かない。行方不明になった彼/彼女を探すことで疲労困憊したあなたは「妨害」の変調を発動する。 -状況 何日も二人で過ごすうち、あなたの彼/彼女の間には愛情のようなものが芽生え始める。この気持ちは果たして本物だろうか?\n指定特技 《落ちる/胴部10》\n成功 真実の愛を発見したあなたの【モラル】は6点上昇する。\n失敗 ハンターに愛はいらない。感情属性を任意に変更できる。 -状況 不意をうたれた。モノビーストの襲撃から逃れるためには、彼/彼女を抱えて跳ぶしかない\n指定特技 《跳ぶ/脚部6》\n成功 危ういジャンプだったが何とかなった。【モラル】が2点増加する。\n失敗 彼/彼女を放り出し怒られる。釈然とせず【感情】が2点増加する。 -状況 あなたは眠らない。彼/彼女をモノビーストの牙にかけるわけにはいかないのだ。しかし、これをいつまで続けることができるのか?\n指定特技 《休まない/環境11》\n成功 疲労が溜まっていく……あなたは「重傷」の変調を発動する。\n失敗 いつのまにか眠ってしまっていたあなたに毛布がかけられている。幸い襲撃はなかったようだ。【モラル】が2点増加する。 -TABLE_TEXT_END - }, - - 'ET3ET' => { - :name => "エスコート遭遇表3rd", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -状況 もうすぐ満月が昇る。あなたと彼/彼女は、モノビーストを倒した後に何をするか話しあう。希望の持てる未来のヴィジョンを作れただろうか?\n指定特技 《作る/社会8》\n成功 待ち受ける未来に対して任意に感情属性を変更することができる。\n失敗 特にすることがないような……やけになって【感情】が2点増加する。 -状況 あと数日で満月だというのに、彼/彼女はモノビーストに重傷を負わされ、死ぬ。あなたは微かな声で囁かれる最後の言葉を聞き取ろうとする。\n指定特技 《聴く/頭部2》\n成功 【モラル】が6点増加する。\n失敗 意味のある言葉は何も聴きとれない。失意に沈んだあなたはランダムな頭部カテゴリの特技1つが使用不可能になる。 -状況 やっと分かった。彼/彼女が肌身離さず持っていたアイテムが狙われる原因だったのだ。あなたは彼/彼女に、そのアイテムをこちらに投げ渡すように頼む。\n指定特技 《投げる/腕部8》\n成功 うまく投げてもらう。【幸運のお守り】を入手できる。\n失敗 あなたはアイテムを取り落とし、微妙な空気がただよう。【感情】が2点増加する。 -状況 あなたは夜の街を、彼/彼女の手を引いて駆け抜ける。もう少しで安全な場所につく。そうすれば、あなただけが戻って戦うことができる。\n指定特技 《心臓/胴部7》\n成功 これで彼/彼女の身は安全だ。このセッション中、あなたの【モラル】基準値は1点増加する。\n失敗 息切れ、および時間切れ。狩りの時間だ。ただしあなたの【モラル】は3点減少している。 -状況 満月を見上げながら、二人でこれまで踏みしめてきた道を振り返る。背後にモノビーストがいることは分かっている。しかし、もはや二人とも恐れはない……だろうか?\n指定特技 《踏む/脚部11》\n成功 彼/彼女は狩りの間あなたについていき、一度だけ【医療キット】に相当する応援をしてくれる。\n失敗 いつのまにか彼/彼女が逃げ出していることに気付く。「動転」の変調を発動する。 -状況 逃避行がクライマックスに近づくにつれ、二人の間の緊張感は耐え難いほどに高まる。このままでは恋に落ちてしまいそうだが、どうしたものだろうか。\n指定特技 《耐熱/環境2》\n成功 胸の熱い気持ちを押さえ込む。感情属性を任意に変更できる。\n失敗 彼/彼女のために頑張ろう。このセッション中、練習判定にプラス1の修正がつく。 -TABLE_TEXT_END - }, - - 'MST' => { - :name => "異形化表", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -【感情】が2増加する。 -【感情】が4増加する。 -【感情】が6増加する。 -【感情】が6増加する。部位ダメージを受ける。 -【感情】が6増加する。異形アビリティをランダムに1つ失う。\n異形アビリティが1つもなければ部位ダメージを受ける。 -【感情】が6増加する。部位ダメージを2回受ける。 -TABLE_TEXT_END - }, - - 'TK1ET' => { - :name => "トラッキング遭遇表1st", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -状況 あなたは隠れ場所に潜みながらモノビーストが獲物…あなたの大切な誰かを貪るのを見ている。満月の夜は遠く、まだ奴を仕留める事は出来ない。\n指定特技 《黙る/社会5》\n成功 押さえ込んだ怒りが膨れ上がる。感情属性を「怒り」に設定。 \n失敗 思わず声を上げてしまい、無敵のモノビーストに手酷い傷を負わされる。感情属性を「恐怖」に設定。 -状況 すばらしい味だった。前の満月の晩に捕り逃した奴の血は、まさに超常的な美味。あの味を空気の中にまで感じ取ることができるようだ。\n指定特技 《口/頭部11》 \n成功 神々しい味を完璧にイメージできた。感情属性を「恐怖」に設定。\n失敗 待ちきれなくて口の中を噛む。感情属性を「怒り」に設定。 -状況 夜、屋根の上。あなたはモノビーストが人家に忍び込まないよう牽制している。屋根はもともと走りまわるようにはできていないのだが。\n指定特技 《掴む/腕部7》\n成功 屋根の縁を掴んで落下を免れる。感情属性を「怒り」に設定。\n失敗 屋根から落ちてひどい目にあう。感情属性を「恐怖」に設定。 -状況 数カ月ぶりに獲物が現れたというのに、友人が満月の夜に予定を入れようとしてくる。合コンの人数が足りないらしいのだが、そんなの知るか。\n指定特技 《逸らす/胴部8》\n成功 うまく言い逃れたが苛々する。待ちきれなくて口の中を噛む。感情属性を「怒り」に設定。\n失敗 狩りのあとで顔を出す約束をしてしまう。普通の日常感覚という奴が蘇り、感情属性を「恐怖」に設定。 -状況 見間違えようもないモノビーストの足跡をたどり、あなたはこの街まで来た。問題はその足跡が鍵のかかったドアの向こうに続いていることだ。うまく蹴り開けられるだろうか?\n指定特技 《蹴る/脚部4》\n成功 ドアは開き、あなたはその向こうにあるものを見た。感情属性を「恐怖」に設定。\n失敗 足がドアを突き抜けたが開かない。脱出は手間だった。感情属性を「怒り」に設定。 -状況 悪天候のなか、あなたはモノビーストの出現を待ち続ける。奴を狩るために、色々なものを犠牲にしてきたのだ。しかし……天気が悪い。\n指定特技 《待つ/環境4》\n成功 奴はまだ現れない。天気に呼応するかのようにあなたの気分も暗くなる。感情属性を「恐怖」に設定。\n失敗 耐えきれずその場を去る。こんな思いをするのも全部ヤツのせいだ。感情属性を「怒り」に設定。 -TABLE_TEXT_END - }, - - 'TK2ET' => { - :name => "トラッキング遭遇表2nd", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -状況 あなたはモノビーストの眼前に立ちふさがり、相手になってやると宣言する。言葉が通じなくとも、喧嘩を売ったことは伝わるはずだ。\n指定特技 《売る/社会6》\n成功 このセッション中、【基本攻撃】の攻撃判定にプラス1の修正が付く。\n失敗 まるで相手にされない。【感情】が2点増加する。 -状況 あなたは病院で目を覚ます。記憶がはっきりしない。どうやら不覚をとったらしく、裏路地で頭を強打して倒れていたようだ。\n指定特技 《脳/頭部7》\n成功 おぼろげに狩りの理由を思い出してきたような気がする。感情属性が反転する。\n失敗 ランダムにアイテムを1つ失う。無くしたことすら気づかない。 -状況 夜ごとにモノビーストを追いかける生活が続く中、あなたの腕がうずく。思う存分にふるわれる時が間もないことに気づいているのだろうか。\n指定特技 《逆腕/腕部9》\n成功 このセッション中、練習判定にプラス1の修正がつく。 \n失敗 よく調べたら腕が折れていた。【モラル】が2点減少する。 -状況 ヤツの捕食をまめに妨害することで、夜の行動範囲を狭めていく。もうすぐ、満月の夜には追い詰めることができるだろう。\n指定特技 《塞ぐ/胴部2》\n成功 その後のことに想いを馳せる。感情属性を好きに変更できる。\n失敗 追い詰める過程で手傷を負う。「重傷」の変調を発動する。 -状況 ヤツを見つけてからいくつの夜が過ぎ去っただろう。モノビーストの足取りを追って移動を続けるあなたの体力は限界を迎えようとしていた。\n指定特技 《逆脚/脚部9》\n成功 いや、まだいける。【モラル】を2点増加させる。\n失敗 もう足が動かない。【モラル】を2点減少する。 -状況 モノビーストのねぐらを発見した。問題は人間の匂いに気づいてあたりを嗅ぎ回るヤツからどうやって隠れ、戻るかだ。\n指定特技 《隠れる/環境6》\n成功 じっくりモノビーストを観察する機会を得る。このセッション中、習性調査判定にプラス1の修正がつく。\n失敗 あなたを見つけたモノビーストはこのねぐらを放棄した。感情属性が反転する。 -TABLE_TEXT_END - }, - - 'TK3ET' => { - :name => "トラッキング遭遇表3rd", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -状況 舞台は整った。やつを追い詰めながら作り上げてきた包囲網は、確実にヤツをあの場所に追い詰めている。急ぐ必要はない。ゆっくりと行こう。\n指定特技 《作る/社会8》\n成功 準備に時間をかけたので、アイテムを一つ入手できる。\n失敗 ゆっくりした結果、モノビーストは何人か犠牲者を増やし、【モラル】を3点増加させている。 -状況 煌々と輝く月の下、行くべき場所はすでに分かっていた。武器が、体が、夜に満ちる死の予感に震える。決戦の時が来たのだ。\n指定特技 《予感/頭部9》\n成功 日暮れの戦闘フェイズの間、自分が行う全ての攻撃のダメージにプラス1の修正がつく。\n失敗 あれ、いない?あてがはずれた結果、日暮れの追跡フェイズの判定すべてにマイナス2の修正がつく。 -状況 ついにモノビーストに追いつき、憎しみを込めて殴りつける。この夜の間だけは対等だ。痛みと自分の血の味を知るがいい!\n指定特技 《殴る/腕部3》\n成功 命中!モノビーストの【モラル】を2点減少させる。\n失敗 効いた様子がない。【感情】が2点増加する。 -状況 ついに追いつめたモノビーストが威嚇とともに襲いかかってくるが、あなたは慌てずにその攻撃を受け止める。驚いた顔のまま死ぬ人間ばかりではないことを教えてやろう。\n指定特技 《受ける/腕部6》\n成功 攻撃を受けてみた結果、感情属性を好きに変更できる。\n失敗 攻撃を受けたときに、「流血」の変調を発動する。 -状況 ヤツは満月の持つ意味を知っていた。だが、必死に逃げようとするモノビーストにも知らないことはあった。あなたはヤツより速いのだ。\n指定特技 《迫る/脚部2》\n成功 ヤツは動揺している。モノビーストの【感情】が2点増加する。\n失敗 速いはずだがなぜか追いつけない。日暮れの戦闘フェイズの先制判定を行わず、必ず後攻になる。 -状況 モノビーストの出現ポイントにあたりをつけ、あなたは狩りの前に休息をとる。あの獣を自分の手で殺すため、今は力をたくわえよう。\n指定特技 《休む/環境3》\n成功 英気を養った。【モラル】が2点増加する。\n失敗 じっとしているうちに不安になってきた。感情属性が反転する。 -TABLE_TEXT_END - }, - }.freeze - - setPrefixes(['(ET|CLT|SLT|HLT|FLT|DLT|MAT|SAT|SA2T|TST|THT|TAT|TBT|TLT|TET)\d*'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/Illusio.rb b/src/src_bcdice/diceBot/Illusio.rb deleted file mode 100644 index 67306f788..000000000 --- a/src/src_bcdice/diceBot/Illusio.rb +++ /dev/null @@ -1,86 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Illusio < DiceBot - # ゲームシステムの識別子 - ID = 'Illusio' - - # ゲームシステム名 - NAME = '晃天のイルージオ' - - # ゲームシステム名の読みがな - SORT_KEY = 'こうてんのいるうしお' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 - resultArray.push("×") - else - resultArray.push(i) - success += 1 - end - end - - blockText = blockNo.join(',') - blockText2 = "Block" - blockText2 = "Parry" if isParry - resultText = resultArray.join(',') - - result = "#{diceCount}D6(#{blockText2}:#{blockText}) > #{diceText} > #{resultText} > " - if isParry - if success < diceCount - result += "パリィ成立! 次の非ダメージ2倍。" - else - result += "成功数:#{success} パリィ失敗" - end - else - result += "成功数:#{success}" - end - - return result - end -end diff --git a/src/src_bcdice/diceBot/InfiniteFantasia.rb b/src/src_bcdice/diceBot/InfiniteFantasia.rb deleted file mode 100644 index c342d0b7c..000000000 --- a/src/src_bcdice/diceBot/InfiniteFantasia.rb +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class InfiniteFantasia < DiceBot - # ゲームシステムの識別子 - ID = 'InfiniteFantasia' - - # ゲームシステム名 - NAME = '無限のファンタジア' - - # ゲームシステム名の読みがな - SORT_KEY = 'むけんのふあんたしあ' - - # ダイスボットの使い方 - HELP_MESSAGE = "失敗、成功レベルの自動判定を行います。\n" - - # ゲーム別成功度判定(1d20) - def check_1D20(total, _dice_total, cmp_op, target) - return '' if target == '?' - - if cmp_op != :<= - return '' - elsif total > target - return " > 失敗" - end - - output = - if total <= (target / 32) - " > 32レベル成功(32Lv+)" - elsif total <= (target / 16) - " > 16レベル成功(16LV+)" - elsif total <= (target / 8) - " > 8レベル成功" - elsif total <= (target / 4) - " > 4レベル成功" - elsif total <= (target / 2) - " > 2レベル成功" - else - " > 1レベル成功" - end - - if total <= 1 - output += "/クリティカル" - end - - output - end -end diff --git a/src/src_bcdice/diceBot/Insane.rb b/src/src_bcdice/diceBot/Insane.rb deleted file mode 100644 index 5498b543a..000000000 --- a/src/src_bcdice/diceBot/Insane.rb +++ /dev/null @@ -1,816 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Insane < DiceBot - # ゲームシステムの識別子 - ID = 'Insane' - - # ゲームシステム名 - NAME = 'インセイン' - - # ゲームシステム名の読みがな - SORT_KEY = 'いんせいん' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - " > ファンブル(判定失敗。山札から【狂気】を1枚獲得)" - elsif dice_total >= 12 - " > スペシャル(判定成功。【生命力】1点か【正気度】1点回復)" - elsif target == "?" - "" - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - def rollDiceCommand(command) - output = '1' - type = "" - total_n = "" - - case command - when 'ST' - type = 'シーン表' - output, total_n = get_scene_table - when 'HJST' - type = '本当は怖い現代日本シーン表' - output, total_n = get_horror_scene_table - when 'MTST' - type = '狂騒の二〇年代シーン表' - output, total_n = get_mania_scene_table - when 'DVST' - type = '暗黒のヴィクトリアシーン表' - output, total_n = get_dark_scene_table - when 'DT' - type = '形容表' - output, total_n = get_description_table - when 'BT' - type = '本体表' - output, total_n = get_body_table - when 'PT' - type = '部位表' - output, total_n = get_parts_table - when 'FT' - type = '感情表' - output, total_n = get_fortunechange_table - when 'JT' - type = '職業表' - output, total_n = get_job_table - when 'BET' - type = 'バッドエンド表' - output, total_n = get_badend_table - when 'RTT' - type = 'ランダム特技決定表' - output, total_n = get_random_skill_table - when 'TVT' - type = '指定特技(暴力)表' - output, total_n = get_violence_skill_table - when 'TET' - type = '指定特技(情動)表' - output, total_n = get_emotion_skill_table - when 'TPT' - type = '指定特技(知覚)表' - output, total_n = get_perception_skill_table - when 'TST' - type = '指定特技(技術)表' - output, total_n = get_skill_skill_table - when 'TKT' - type = '指定特技(知識)表' - output, total_n = get_knowledge_skill_table - when 'TMT' - type = '指定特技(怪異)表' - output, total_n = get_mystery_skill_table - when 'CHT' - type = '会話ホラースケープ表' - output, total_n = get_conversation_horror_table - when 'VHT' - type = '街中ホラースケープ表' - output, total_n = get_ville_horror_table - when 'IHT' - type = '不意訪問ホラースケープ表' - output, total_n = get_inattendu_horror_table - when 'RHT' - type = '廃墟遭遇ホラースケープ表' - output, total_n = get_ruines_horror_table - when 'MHT' - type = ' 野外遭遇ホラースケープ表' - output, total_n = get_Mlle_horror_table - when 'LHT' - type = '情報潜在ホラースケープ表 ' - output, total_n = get_latence_horror_table - when 'ECT' - type = '遭遇表・都市' - output, total_n = get_city_table - when 'EMT' - type = '遭遇表・山林' - output, total_n = get_mountainforest_table - when 'EAT' - type = '遭遇表・海辺' - output, total_n = get_seaside_table - when 'OHT' - type = '残業ホラースケープ表 ' - output, total_n = get_overtime_horror_table - when 'OPT' - type = '残業電話表' - output, total_n = get_overtimephone_table - when 'OWT' - type = '残業シーン表' - output, total_n = get_overtimework_scene_table - when 'CNT1' - type = '社名決定表1' - output, total_n = get_corporatenameone_table - when 'CNT2' - type = '社名決定表2' - output, total_n = get_corporatenametwo_table - when 'CNT3' - type = '社名決定表3' - output, total_n = get_corporatenamethree_table - when 'RET' - type = '反応表' - output, total_n = get_reaction_scene_table - when 'IRN' - type = '暫定整理番号作成' - output, total_n = get_interim_reference_number - end - - return "#{type}(#{total_n}) > #{output}" - end - - # シーン表 - def get_scene_table - table = [ - '血の匂いがあたりに充満している。事件か? 事故か? もしや、それは今も続いているのだろうか?', - 'これは……夢か? もう終わったはずの過去が、記憶の中から蘇ってくる。', - '眼下に広がる町並みを見下ろしている。なぜこんな高所に……?', - '世界の終わりのような暗黒。暗闇の中、何者かの気配が蠢く……。', - '穏やかな時間が過ぎていく。まるであんなことがなかったかのようだ。', - '湿った土の匂い。濃密な気配が漂う森の中。鳥や虫の声、風にそよぐ木々の音が聞こえる。', - '人通りの少ない住宅街。見知らぬ人々の住まう家々の中からは、定かではない人声や物音が漏れてくる……。', - 'にわかに空を雲が覆う。強い雨が降り出す。人々は、軒を求めて、大慌てで駆け出していく。', - '荒れ果てた廃墟、朽ちた生活の名残。かすかに聞こえるのは風か、波の音か、耳鳴りか。', - '人ごみ。喧騒。けたたましい店内BGMに、調子っぱずれの笑い声。騒がしい繁華街の一角だが……?', - '明るい光りに照らされて、ほっと一息。だが光が強いほどに、影もまた濃くなる……。', - ] - - return get_table_by_2d6(table) - end - - # 本当は怖い現代日本シーン表 - def get_horror_scene_table - table = [ - '不意に辺りが暗くなる。停電か? 闇の中から、誰かがあなたを呼ぶ声が聞こえてくる。', - 'ぴちょん。ぴちょん。ぴちょん。どこからか、水滴が落ちるような音が聞こえてくる。', - '窓ガラスの前を通り過ぎたとき、不気味な何かが映り込む。目の錯覚……?', - 'テレビからニュースの音が聞こえてくる。何やら近所で物騒な事件があったようだが……', - '暗い道を一人歩いている。背後から、不気味な跫音が近づいてくるような気がするが……。', - '誰だろう? ずっと視線を感じる。振り向いて見ても、そこにあるのは、いつも通りの光景なのだが……', - '突如、携帯電話の音が鳴り響く。マナーモードにしておいたはずなのに……。一体、誰からだろう?', - '茜さす夕暮れ。太陽は沈みかけ、空は血のように赤い。不安な気持ちが広がっていく……。', - '美味しそうな香りが漂ってきて、急に空腹を感じる。今日は何を食べようかなぁ?', - '甲高い泣き声が、響き渡る。猫や子供がどこかで泣いているのか? それとも……。', - '寝苦しくて目を覚ます。何か悪夢を見ていたようだが……。あれ、意識はあるのに身体が動かない!', - ] - - return get_table_by_2d6(table) - end - - # 狂騒の二〇年代シーン表 - def get_mania_scene_table - table = [ - '苔のこびりつく巨大な岩が並ぶ、川に浮かぶ島。何を祀っているのかも分からない祭壇があり、いわく言いがたい雰囲気を漂わせる。', - 'もぐり酒場。看板もない地下の店は、街の男や酌婦たちで騒がしい。', - '遺跡の中。誰が建てたとも知れぬ、非ユークリッド幾何学的な建築は、中を歩く者の正気を、徐々に蝕んでいく。', - '大学図書館。四十万冊を超える蔵書の中には、冒涜的な魔道書も含まれているという。', - '強い風にのって、どこからか磯の香りが漂ってくる。海は遠いはずだが……。', - '多くの人でごったがえす街角。ここならば、何者が混じっていても、気付かれることはない。', - '深い闇の中。その向こうには、名状しがたきなにものかが潜んでいそうだ。', - '歴史ある新聞社。休むことなく発行し続けた、百年分におよぶ新聞が保管されている。', - '古い墓地。捻れた木々の間に、古びて墓碑銘も読めぬような墓石が並ぶ。いくつかの墓石はなぜか傾いている。', - '河岸に建つ工場跡。ずいぶん前に空き家になったらしく、建物は崩れかけている。どうやら浮浪者の住処になっているらしい。', - '静かな室内。なにか、不穏な気配を感じるが……あれはなんだ? 窓に、窓に!', - ] - - return get_table_by_2d6(table) - end - - # 暗黒のヴィクトリアシーン表 - def get_dark_scene_table - table = [ - '霊媒師を中心に円卓を取り囲む人々が、降霊会を行っている。薄暗い部屋の中に怪しげなエクトプラズムが漂い始める。', - '労働者達の集うパブ。女給が運ぶエールやジンを、赤ら顔の男たちが飲み干している。', - '血の香りの漂う場所。ここで何があったのだろうか……。', - '売春宿の建ち並ぶ貧民街。軒先では娼婦たちが、客を待ち構えている。', - '人々でごったがえす、騒がしい通り。様々な噂話が飛び交っている。東洋人を初めとした、外国人の姿も目立つ。', - '霧深い街角。ガス灯の明かりだけが、石畳を照らし出している。', - '静まり返った部屋の中。ここならば、何をしても余計な詮索はされないだろう。', - '汽笛の響く波止場。あの船は、外国へと旅立つのだろうか。', - '書物の溢れる場所。調べ物をするにはもってこいだが。', - '貴族や資産階級の人々が集うパーティ。上品な微笑みの下では、どんな企みが進んでいるのだろうか。', - '静かな湖のほとり。草むらでは野生の兎が飛びはねている。', - ] - return get_table_by_2d6(table) - end - - # 形容表 - def get_description_table - table = [ - [11, '青ざめた'], - [12, '血をしたたらせた'], - [13, 'うろこ状の'], - [14, '冒涜的な'], - [15, '円筒状の'], - [16, '無限に増殖する'], - [22, '不規則な'], - [23, 'ガーガー鳴く'], - [24, '無数の'], - [25, '毛深い'], - [26, '色彩のない'], - [33, '伸縮する'], - [34, 'みだらな'], - [35, '膨れ上がった'], - [36, '巨大な'], - [44, '粘液まみれの'], - [45, '絶えず変化する'], - [46, '蟲まみれの'], - [55, 'キチン質の'], - [56, '「本体表を使用する」のような'], - [66, '虹色に輝く'], - ] - - return get_table_by_d66_swap(table) - end - - # 本体表 - def get_body_table - table = [ - [11, '人間'], - [12, '犬'], - [13, 'ネズミ'], - [14, '幽鬼'], - [15, 'なめくじ'], - [16, '蟲'], - [22, '顔'], - [23, '猫'], - [24, 'ミミズ'], - [25, '牛'], - [26, '鳥'], - [33, '半魚人'], - [34, '人造人間'], - [35, '蛇'], - [36, '老人'], - [44, 'アメーバ'], - [45, '女性'], - [46, '機械'], - [55, 'タコ'], - [56, '「部位表」を使用する'], - [66, '小人'], - ] - - return get_table_by_d66_swap(table) - end - - # 部位表 - def get_parts_table - table = [ - [11, '胴体'], - [12, '足'], - [13, '腕'], - [14, '髪の毛/たてがみ'], - [15, '口'], - [16, '乳房'], - [22, '顔'], - [23, '肌'], - [24, '瞳'], - [25, '尾'], - [26, '触手'], - [33, '鼻'], - [34, '影'], - [35, '牙'], - [36, '骨'], - [44, '宝石'], - [45, '翼'], - [46, '脳髄'], - [55, '舌'], - [56, '枝や葉'], - [66, '内臓'], - ] - - return get_table_by_d66_swap(table) - end - - # 感情表 - def get_fortunechange_table - table = [ - '共感(プラス)/不信(マイナス)', - '友情(プラス)/怒り(マイナス)', - '愛情(プラス)/妬み(マイナス)', - '忠誠(プラス)/侮蔑(マイナス)', - '憧憬(プラス)/劣等感(マイナス)', - '狂信(プラス)/殺意(マイナス)', - ] - - return get_table_by_1d6(table) - end - - # 職業表 - def get_job_table - table = [ - [11, '考古学者≪情景≫≪考古学≫'], - [12, 'ギャング≪拷問≫≪怒り≫'], - [13, '探偵≪第六感≫≪数学≫'], - [14, '警察≪射撃≫≪追跡≫'], - [15, '好事家≪芸術≫≪人類学≫'], - [16, '医師≪切断≫≪医学≫'], - [22, '教授 知識分野から好きなものを二つ'], - [23, '聖職者≪恥じらい≫≪愛≫'], - [24, '心理学者 情動分野から好きなものを二つ'], - [25, '学生 知識分野と情動分野から好きなものを一つずつ'], - [26, '記者≪驚き≫≪メディア≫'], - [33, '技術者≪電子機器≫≪機械≫'], - [34, '泥棒≪物陰≫≪罠≫'], - [35, '芸能人≪悦び≫≪芸術≫'], - [36, '作家≪憂い≫≪教養≫'], - [44, '冒険家≪殴打≫≪乗物≫'], - [45, '司書≪整理≫≪メディア≫'], - [46, '料理人≪焼却≫≪味≫'], - [55, 'ビジネスマン≪我慢≫≪効率≫'], - [56, '夜の蝶≪笑い≫≪官能≫'], - [66, '用心棒 好きな暴力×2'], - ] - - return get_table_by_d66_swap(table) - end - - # バッドエンド表 - def get_badend_table - table = [ - 'あなたの周りに漆黒の闇が、異形の前肢が、無数の触手が集まってくる。彼らは、新たな仲間の誕生を祝福しているのだ。あなたは、もう怪異に怖がることはない。なぜなら、あなた自身が怪異となったからだ。以降、あなたは怪異のNPCとなって登場する。', - lambda { return "牢獄のような、手術室のような薄暗い部屋に監禁される。そして、毎日のようにひどい拷問を受けることになった。何とか隙を見て逃げ出すことができたが……。#{get_random_skill_table_text_only}の特技が【恐怖心】になる。" }, - '間一髪のところを、謎の組織のエージェントに助けられる。「君は見所がある。どうだい? 我々と一緒にやってみないか」あなたは望むなら、忍者/魔法使い/ハンターとして怪異と戦うことができる。その場合、あなたは別のサイコロ・フィクションのキャラクターとして生まれ変わる。', - '病院のベッドで目を覚ます。長い間、ひどい悪夢を見ていたような気がする。そのセッションの後遺症判定は、マイナス1の修正がつき、ファンブル値が1上昇する。', - 'どこかの民家で目を覚ます。素敵な人物に助けられ、手厚い介護を受けたようだ。特にペナルティはなし。', - '「危ない!」大いなる絶望が、あなたに襲いかかってくる。1D6マイナス1点のダメージを受ける。これによって【生命力】が0点になった場合、あなたは死亡する。ただし、あなたにプラスの【感情】を持つNPCがいた場合、そのNPCが、そのダメージを無効化してくれる。', - '別の新たな怪事件に巻き込まれる。苦労のすえ、そちらは何とか無事解決! 特にペナルティはなし。', - '大きな傷を負い、生死の境をさまよう。好きな特技で判定を行うこと。失敗すると死亡する。このとき、減少している【生命力】の分だけマイナスの修正がつく。', - '目が覚めると見慣れない場所にいた。ここはどこだ? 私は誰だ? どうやら、恐怖のあまり、記憶を失ってしまったようだ。功績点があれば、それを1点失う。', - lambda { return "目を覚ますと、そこはいつもの場所だった。しかし、どこか違和感を覚える。君たち以外、誰も事件のことを知らないようだ。死んだはずのあの人物も生きている。時間を旅したのか、ここは違う世界線か……? #{get_random_skill_table_text_only}の特技が【恐怖心】になる。" }, - '振り返ると、そこには圧倒的な「それ」が待ち構えていた。無慈悲な一撃が、あなたを襲い、あなたは死亡する。', - ] - return get_table_by_2d6(table) - end - - # 指定特技ランダム決定表 - def get_random_skill_table - skillTableFull = [ - ['暴力', ['焼却', '拷問', '緊縛', '脅す', '破壊', '殴打', '切断', '刺す', '射撃', '戦争', '埋葬']], - ['情動', ['恋', '悦び', '憂い', '恥じらい', '笑い', '我慢', '驚き', '怒り', '恨み', '哀しみ', '愛']], - ['知覚', ['痛み', '官能', '手触り', 'におい', '味', '物音', '情景', '追跡', '芸術', '第六感', '物陰']], - ['技術', ['分解', '電子機器', '整理', '薬品', '効率', 'メディア', 'カメラ', '乗物', '機械', '罠', '兵器']], - ['知識', ['物理学', '数学', '化学', '生物学', '医学', '教養', '人類学', '歴史', '民俗学', '考古学', '天文学']], - ['怪異', ['時間', '混沌', '深海', '死', '霊魂', '魔術', '暗黒', '終末', '夢', '地底', '宇宙']], - ] - - skillTable, total_n = get_table_by_1d6(skillTableFull) - tableName, skillTable = *skillTable - skill, total_n2 = get_table_by_2d6(skillTable) - return "「#{tableName}」≪#{skill}≫", "#{total_n},#{total_n2}" - end - - # 特技だけ抜きたい時用 あまりきれいでない - def get_random_skill_table_text_only - text, = get_random_skill_table - return text - end - - # 指定特技ランダム決定(暴力) - def get_violence_skill_table - table = [ - '焼却', - '拷問', - '緊縛', - '脅す', - '破壊', - '殴打', - '切断', - '刺す', - '射撃', - '戦争', - '埋葬', - ] - return get_table_by_2d6(table) - end - - # 指定特技ランダム決定(情動) - def get_emotion_skill_table - table = [ - '恋', - '悦び', - '憂い', - '恥じらい', - '笑い', - '我慢', - '驚き', - '怒り', - '恨み', - '哀しみ', - '愛', - ] - return get_table_by_2d6(table) - end - - # 指定特技ランダム決定(知覚) - def get_perception_skill_table - table = [ - '痛み', - '官能', - '手触り', - 'におい', - '味', - '物音', - '情景', - '追跡', - '芸術', - '第六感', - '物陰', - ] - return get_table_by_2d6(table) - end - - # 指定特技ランダム決定(技術) - def get_skill_skill_table - table = [ - '分解', - '電子機器', - '整理', - '薬品', - '効率', - 'メディア', - 'カメラ', - '乗物', - '機械', - '罠', - '兵器', - ] - return get_table_by_2d6(table) - end - - # 指定特技ランダム決定(知識) - def get_knowledge_skill_table - table = [ - '物理学', - '数学', - '化学', - '生物学', - '医学', - '教養', - '人類学', - '歴史', - '民俗学', - '考古学', - '天文学', - ] - return get_table_by_2d6(table) - end - - # 指定特技ランダム決定(怪異) - def get_mystery_skill_table - table = [ - '時間', - '混沌', - '深海', - '死', - '霊魂', - '魔術', - '暗黒', - '終末', - '夢', - '地底', - '宇宙', - ] - return get_table_by_2d6(table) - end - - # 会話ホラースケープ表 - def get_conversation_horror_table - table = [ - "指定特技:死\n会話の最中、あなたはふと、相手の肩越しに目を向ける。なんの前触れもなく、遠くの建物の屋上から女が飛び降りた。声を上げる暇もなく、彼女は吸い込まれるように地面に叩きつけられる。距離があるにもかかわらず、女と目が合ってしまった。―それ以降、女の顔が脳裏にこびりついて、離れようとしない……。", - "指定特技:殴打\n地面に横たわった相手を見ながら、あなたは冷や汗が背中に伝うのを感じていた。相手は倒れたまま、不自然に体をねじ曲げて、ぴくりとも動かない。じわじわと血溜まりが広がっていく……。――殺してしまった。動揺して瞬きしたとき、相手の身体は消えていた。血溜まりもなくなっている。あなたは茫然と立ちすくむ。幻覚だったのだろうか……?", - "指定特技:電子機器\nあなたが電話で相手と話をしていると、不意に、相手が黙り込んだ。「……なんだあれ?」独り言のように言って、それから慌てたような声を出した。「こっち来る……こっち来る!うわっ!うわああああっ!助けて!助けて!!」それを最後に、電話はぶつりと切れる。かけ直すと話し中だ。ずっと。", - "指定特技:物音\nあなたが電話で相手と話していると、ぶつぶつ言う声が聞こえてくる。混線だろうか?不思議に思って聞いているうちに、頭がぼんやりしてくる。ぶつぶつ、ぶつぶつ、ぶつぶつ、ぶつぶつ……。気が付くと、電話をもったままぼーっと立っていた。ただ、とても怖いことを言われたような気がしている。そもそも、あなたは誰と話をしていたんだろう?", - "指定特技:拷問\n会話の最中、血の味を感じた。同時に、口の中にごろごろした違和感を覚える。相手が真っ青になってあなたの顔を指差す。どうしたのか訊ねようと口を開くと、ぽろりと何かが地面に落ちた。見下ろすと、血溜まりの中に白々と、あなたの歯が一本落ちていた。", - "指定特技:人類学\n会話の最中、視界に違和感を覚えて、あなたは瞬きする。相手の顔が、変になっていた。引き延ばして、かき回したように、グロテスクに歪んでいる。えっ?と思ってよく見るが、歪みは変わらない。相手はまったく気付いていないようだ。きつく目を瞑ってから見直すと、ようやく歪みは消えた。君の心に一つの疑いが生まれる。目の前の相手は、本当に人間なのだろうか?", - ] - return get_table_by_1d6(table) - end - - # 街中ホラースケープ表 - def get_ville_horror_table - table = [ - "指定特技:乗物\nキキィーッ!激しいブレーキ音、そして鈍い音。はっとして振り返ると、止まった車と、その前に倒れている人が目に入った。交通事故だ!慌てて駆け寄り、被害者の顔を見た途端、あなたは凍り付いた。倒れているのは、あなただった。――えっ!?驚いて瞬きすると、路上のあなたも、車も消えていた。", - "指定特技:情景\n通りすがりの家の屋根に誰かが立っている。あんなところで何を……?その誰かは踊りを踊っているように見えた。手足を振り回し、頭を激しく動かして、踊っている。尋常な様子ではない。狂ったように踊っている。見ているうちにものすごく不吉な気分になってきた。見たくないのに、どういうわけか、目を逸らすことができない。不吉な予感はどんどん強くなってくる……。", - "指定特技:終末\nウゥゥゥゥゥゥゥゥ………… 街にサイレンが鳴り響く。どこで鳴っているのか、いつまで鳴っているのか。こんなに大きな音なのに、どうして誰も騒がないのだろう。不思議に思って歩いていると、道を向こうから歩いてくる人影がある。怪我をしているのか、よろめいて、今にも倒れそうになりながら、がくり、がくりと不自然な歩き方で近づいてくる。あれはいったい………?", - "指定特技:脅す\n歩いていると、不意に静かになった。あたりを見渡すと、人も車も誰もいない。無人の街が、どこまでも広がっている。さっきまでたくさん人がいたのに……!?「おい!何やってるんだ!」突然怒鳴られてぎくりとする。振り返ると、作業着をきた男性がこっちへ走ってきていた。「馬鹿野郎!こんなところに来たら――」最後まで聞かないうちに、不意に音が戻ってきた。人と車が行き交う、元通りの街だ。今のは何だったんだ……?", - "指定特技:混沌\n電柱の根元に、女性がうずくまっている。お腹を押さえて、苦しそうに顔を伏せている。「大丈夫ですか?」近づいて声をかけたあなたに、女性は頷いた。「はい――ありがとうございます。」そう言って顔を上げた女性の顔には、何もなかった。つるりとした剥き玉子のような皮膚が続いているだけだった。うわっ!?のけぞった途端、意識が遠ざかって、気がつくとあなたは電柱の根元にうずくまっていた。", - "指定特技:笑い\n駅に着くと、やけに混雑している。人身事故で電車が止まっているようだ。ツイてないな。そう思っていると、改札付近の人ごみの中から、和服の女性が急ぎ足であなたのほうへ近づいてきた。女性は満面の笑みを浮かべていた。独りごとを言っているのか、口が動いている。すれ違いざまに、女性の声が耳に入った。「やってやった。やってやった。やってやった。ざまあみろ」えっ、と思って振り返るあなたを残して、女性は人ごみの中へ消えていった。", - ] - - return get_table_by_1d6(table) - end - - # 不意訪問ホラースケープ表 - def get_inattendu_horror_table - table = [ - "指定特技:驚き\nバタバタバタッ!突然の物音に、あなたはぎょっとして振り仰ぐ。天井裏を何かが動き回っているようだ。動物が入り込んだのだろうか?それにしては大きい音だ。――まるで子供がめちゃめちゃに走り回っているような。物音は一瞬止まり、すぐに再開した。ドン!ドン!ドン!ドン!飛び跳ねるような音がするのは、ちょうどあなたの真上だ……。", - "指定特技:宇宙\n窓から光が差し込む。窓に目を向けてみると、白く輝く巨大な飛行物体が浮かんでいた。魅せられたように見つめていると、鳥や飛行機とは思えないような、激しく不規則な動きで飛び回り始める。なんだろう、あれは?不思議に思っていると、背後から誰かが囁いた。「あれは………だよ」はっと気付くと、いつの間にか、まったく違う場所にいた。手のひらに何か埋まっているような硬い感触がある……。", - "指定特技:におい\n奇妙な荷物が届いた。ガムテープでぐるぐる巻きにされた大きな段ボールだ。差出人名を書いた紙がはってあるが、滲んでしまって読めない。箱の中身は土だった。陶器のかけらや石ころが混ざった、変な臭いのする土が入っていた。わけがわからないので中身は捨てたが、それ以降なんだかツキが落ちている気がする……。", - "指定特技:我慢\n壁の向こうから誰かが話している声が聞こえてくる。「……だから。こいつは……しないと」「そうね……わいそ……さなきゃ」ぼそぼそ、ぼそぼそと、陰気な調子で会話は続く。何を話しているのか、内容はよくわからないが、なんとなく自分のことを言われているようで薄気味が悪い。気になって壁に耳を当てたとき、はっきりした声が、壁の向こうからこう言った。「……ねえ、ちゃんと聞いてる?」", - "指定特技:手触り\nぽたり。ぽたり。首筋に落ちた生暖かい水滴の感触に、あなたは眉を寄せた。気がつくと机の上に、赤い雫が落ちている。鉄臭いにおいが鼻を突く。ぽたり。ぽたり。ぽたり。雫は勢いを増し、次々と落ちてきて、机の上に広がってゆく。ゆっくりと見上げると、天井には大きく赤黒いしみが広がっていた。ぽたり。ぽたりぽたり。ぽたり。――ぼたぼたぼたっ!高まる水音にあなたは立ちすくむ。天井裏に、いったい何が……?", - "指定特技:地底\n見慣れたはずの場所に、見慣れない扉を見つけた。開けてみると、長い下り階段が闇の中に伸びている。不審に思って下りてみると……そこは地下室だった。こんな場所があったなんて。明かりを片手に進んでいくと、何かが近づいてくる気配がする。闇の中から、何者かが、あなたの名を呼んだ。", - ] - - return get_table_by_1d6(table) - end - - # 廃墟遭遇ホラースケープ表 - def get_ruines_horror_table - table = [ - "指定特技:暗黒\n重く頑丈そうな扉を開ける。部屋の中は真っ暗だった。灯りで照らしてみると、別の部屋へと続く道が何本か見つかった。目ぼしいものはなさそうだ。一旦、入り口に戻ろうと、入ってきた扉のほうを振り返る。そこには壁しかなかった。あの重厚な扉がなくなっている。そんな馬鹿な。しかし、何度探してもどの壁にも扉らしきものは見当たらない。仕方なく、通路を進むことにしたが、じわじわと不吉な気分が込み上げてくる。……あの扉は、開けてはいけなかったのではないだろうか?", - "指定特技:整理\nあなたは廃墟の中、ブーン……という低い音に気付いた。冷蔵庫だ。どこから電気が来ているのか、白い冷蔵庫が廃屋の片隅にひっそりと佇んでいる。ガチャリと扉を引き開けてみたあなたは、中にいた何かと、目が合った。……気がつくと、あなたは暗くて冷たいところで体を丸めている。ブーン…という音が聞こえている。ここは涼しくて、狭くて――とても居心地がいい。", - "指定特技:追跡\n廃屋のふすまを開けたとき、あなたは強い違和感を覚える。分厚く埃が積もったその部屋には、濃厚な気配が漂っていた。ちゃぶ台の上には中身の残った湯飲み。さっきまで誰かが座っていたみたいに凹んだ座布団。なぜこの茶の間には、こんなに生活感があるのだろうか……。", - "指定特技:愛\n廃墟を歩いていると、突然、あなたの携帯に電話がかかってきた。静まりかえった廃墟に鳴り響く着信音に肝を潰しつつも出てみると、電話の向こうから、あなたの祖母がいきなり叱りつけてきた。「あんた、何やってんの!そんなとこ行ったらダメでないの!」え?なぜ祖母が……?「早くそこから出なさい!大変なことになるよ!」わけがわからずに口ごもっているうちに、電話は切れた。ディスプレイには、「圏外」と表示されていた。", - "指定特技:罠\n廃墟を歩いていると、いきなり足に激痛が走った。悲鳴をこらえて下を見ると、あなたの足首をがっちりとトラバサミが捕えている。なぜこんな場所に、こんな罠が……?苦労してトラバサミを解除して、改めて周りを見たとき、あなたは愕然とする。罠は一つだけではなかった。瓦礫の下に隠すようにして、いくつもいくつも、トラバサミが仕掛けられていた。", - "指定特技:薬品\n不意に、シンナーの匂いが鼻を刺した。廃墟の壁にべったりと、赤いペンキの文字が書かれている。何が書いてあるのかは判然としないが、ひたすら悪意と憎しみを塗り込めたようなタッチにおぞけが走る。そのうちあることに気付いて、あなたは総毛立った。ペンキがまだ新しい。……塗り立てのように新しいのだ。", - ] - - return get_table_by_1d6(table) - end - - # 野外遭遇ホラースケープ表 - def get_Mlle_horror_table - table = [ - "指定特技:痛み\nブ―――――――ン耳元で甲高い羽音が響いてくる。見たことのない真っ赤な羽虫の群れが飛んでいた。ブ―――――――ン。羽虫を追い払うように、腕を振るう。痛いっ。腕に刺すような痛みが走った。ブ―――――――ン虫たちは、どこかへ去っていく。みるみる腕の表面に不気味な水疱がぽつぽつと浮かび上がってきた。", - "指定特技:夢\n木々の間で、何か大きなものが動いているのが見える。肉の腐ったような臭いがぷんと鼻を突く。まだら模様のあれは……毛皮?それとも、ずたずたになった服の切れ端?そいつがあなたを見た。木の葉の合間から除く目は、まるで人のような――目が合った瞬間から記憶がない。気が付くと、人の髪に似た黒い毛が、あなたの全身に付着していた。", - "指定特技:恨み\n林の中で出くわした大樹の幹には、たくさんの藁人形が釘で打ち付けられていた。うわあ、と思いながら見上げるうちに、気のめいる事実に気付いてしまった。新しめの藁人形の一つに、名前の書かれた札が貼り付けられている。――ひどく、見覚えのある名前だった。", - "指定特技:深海\n……おーい。……お―――い。遠く、呼ぶ声を聴いた気がして、波の合間に目を凝らす。つるりとした黒い影が、浮きつ沈みつ、あなたを差し招いている。ひい、ふう、みい、よう……七人。七人の黒い影が、波間から、あなたに手を振っている。――なんだか、頭がぼうっとしてきた。", - "指定特技:物陰\n藪の中に廃車が埋もれている。特徴のない白いバンだ。窓は真っ黒な煤で汚れていて、何も見えない。車体は錆び付いて、塗料も剥がれ、打ち棄てられて久しい廃車であることは確実だ。――それなのに、廃車の中から刺すような視線を感じる。ロックが外れる音がして、ゆっくりと後部座席のドアが開き始める……。", - "指定特技:焼却\nパチ……パチ……。火の燃える音がする。空き地で焚火が炎を上げていた。そばには誰もいない。心温まる思いで立ち止まり、木の枝で焚火をかき回していると、炎の中から軽やかな笑い声が聞こえた。ぎょっとするあなたの足許を、猫のような大きさの何かがするりと抜けていった。焚火に目を戻すと、そこにはただ、くすぶる骨の塊が残されているだけだった。", - ] - - return get_table_by_1d6(table) - end - - # 情報潜在ホラースケープ表 - def get_latence_horror_table - table = [ - "指定特技:味\nのどの渇きを覚えた。調べ物を開始した時間から、時計の針は大分進んでいる。どうやら根をつめ過ぎたようだ。画面に目を戻しつつ、ペットボットルの水を口に含む。すると、口内に違和感が広がった。たまらず水を吐き出す。すると、真っ黒い液体が机の上の資料を汚した。口の中には、ドブ川のような臭いがこびりついている。確認したペットボトルの水は、透明なのだが……?", - "指定特技:カメラ\n資料の間から、黄ばんだ封筒に入った写真の束が出てきた。被写体は……あなただ。知らないうちに撮られた、あなたの写真が、何十枚も束ねられている。色褪せた写真を無造作に止めた輪ゴムは劣化して、ねばついていた。――だれが、こんな写真を?何の目的で……?", - "指定特技:メディア\nテレビのニュースを見ていると、それまで淀みなく喋っていたアナウンサーが、不意に黙り込んだ。どうしたんだろう、と思っていると、アナウンサーが奇妙なことを言い始めた。「死ぬこともあり得ます。と語りました。また、高確率で、災いが起こります。今日から明日にかけて、厳重に警戒してください。警戒してください。警戒してください」アナウンサーは、画面の向こうからあなたの目をじっと見つめている。あなたが戸惑っていると、ひとりでにテレビの電源が切れた。", - "指定特技:民俗学\n資料を漁るうちに、ある寒村に伝わるおぞましい風習に辿り着いた。暴力……儀式……生贄……。とてもまともな人間のやることとは思えない所業に震えあがる。その風習には、なぜか既視感があった。どこで読んだんだろう?考えるうちに、ある記憶が蘇った。あなたの幼い頃の記憶だった。いや……そんな、馬鹿な。あなたの故郷が、こんな寒村のはずがない……。", - "指定特技:魔術\n資料の中から、奇妙な古書が出てきた。皮装丁の豪華な本で、妙な臭いがする。文書は支離滅裂で、正気の人間が書いたとは思えない。だが、破れそうなページを一枚一枚めくっていくと、しだいに作者の言っていることがわかってくる。どんどん、どんどん、わかってくる。ああ、もう、わかる。完全にわかる。もう大丈夫だ。きっとこの本は、あなたに読まれるために書かれたのだ。", - "指定特技:歴史\n表紙のないレポートが見つかった。パラパラめくってみると、まさにあなたが今調べている件についての調査報告だった。もどかしいことに、あちこち墨塗りされていて、肝心のところがわからない。察するに、どうも、軍による調査のようだ。軍?なぜ軍隊がこの件を調べていたのだろう……?", - ] - - return get_table_by_1d6(table) - end - - # 遭遇表・都市 - def get_city_table - table = [ - "できそこない×3 基本p246", - "にらむ人×1 デッドループp190 犬×1 基本p243", - "信奉者×2 基本p243", - "顔を隠した女×1 デッドループp192", - "幽霊自動車×1 デッドループp193", - "怨霊×1 基本p245", - ] - - return get_table_by_1d6(table) - end - - # 遭遇表・山林 - def get_mountainforest_table - table = [ - "のっぺらぼう×3 デッドループp190", - "毒蟲の群れ×2 デッドループp191", - "熊×1 デッドループp191", - "巨大昆虫×1 デッドループp192", - "人狼×1 基本p265", - "くねくね×1 デッドループp193", - ] - - return get_table_by_1d6(table) - end - - # 遭遇表・海辺 - def get_seaside_table - table = [ - "人魂×3 デッドループp190", - "深きもの×2 基本p261", - "星を渡るもの×1 基本p261", - "宇宙人×1 基本p257", - "魔女×1 基本p245", - "這いずるもの×1 基本p261", - ] - - return get_table_by_1d6(table) - end - - # 残業ホラースケープ表 - def get_overtime_horror_table - table = [ - "指定特技:死\n窓に目をやったとき、窓の外を落下する人影と目が合った!慌てて窓辺に駆け寄るが、下には何もない。幻覚だったのだろうか……?", - "指定特技:機械\n突然、コピー機が唸りを上げて紙を吐き出し始めた。床に舞い散ったコピー用紙には、歪んだ人の顔のようなものが印刷されている。気味が悪い……。", - "指定特技:物陰\n蒼白い子供が机の下からあなたを見上げている。うわっ!と叫んで飛び退くと、子供の姿は消えた。", - "指定特技:手触り\n仕事をしていると、背後から長い黒髪が垂れ下がってきた。女の長い黒髪だ。……後ろで覗き込んでいるのは、一体誰だ?", - "指定特技:憂い\n視界の隅を、暗い顔の男が通り過ぎるのが見えた。振り返ってみても、誰もいない。誰だ?知らないぞ、あんな奴。", - "指定特技:暗黒\nバツン!突然の停電でフロアが闇に沈んだ。驚いて顔を上げると、闇の中にたくさんの人影が佇んで、じっとあなたを見ている……!", - ] - - return get_table_by_1d6(table) - end - - # 残業電話表 - def get_overtimephone_table - table = [ - "「進捗どうですか?」クライアントからの進捗確認の電話。今やってるよ!電話の時間がもったいないんだよ!ストレスで胃が痛い。【生命力】マイナス1。", - "「仕様が変わりまして……」クライアントから仕様変更の連絡。今かよ!?殺すぞ!?せっかくの作業が無駄になる。PPマイナス1。", - "「最近電話に出ないけど……大丈夫?」恋人や家族など、大切な人からの電話。仕事中にかけてくるなよと思いつつも、少し気が紛れた。【正気度】1回復。", - "「特上寿司五人前お願いします!」間違い電話だった。驚かせやがって……。", - "「ちょっと、この前の仕事だけどどうなってるんだ!」別件のクレームの電話だ!疲れた精神にダメージを負って、【正気度】マイナス1。", - "「……ねばいいのに。」電話の向こうから地獄のような声が囁く。ぞっとして反射的に電話を切る。着信履歴は残っていない……なんだ今の!?《電子機器》で恐怖判定。", - ] - - return get_table_by_1d6(table) - end - - # 残業シーン表 - def get_overtimework_scene_table - table = [ - "ジジッ……不意に蛍光灯がちらつく。電気系統がおかしいのだろうか?停電は勘弁してほしいのだが…。", - "ぴちょん。ぴちょん。どこからか水の滴る音が聞こえる。雨漏りか、蛇口の閉め忘れか?", - "ジャバーッ……ズゴゴゴゴ。トイレの水を流す音が響き渡る。誰かトイレにいたのか?それとも、他の階だろうか?", - "サイレンの音が近づいてきて、赤色灯の光が窓から射し込む。近くで何かがあったようだが……。", - "背後から誰かの話し声が聞こえた気がする。咄嗟に振り返るが……空耳だろうか?", - "窓ガラスの向こうに見える夜の灯りを切ない気持ちで見つめる。早く帰りたい……。", - "突如、携帯電話の音が鳴り響く。マナーモードにしていたはずなのに……。一体、誰からだろう?", - "不意の機械音に驚いてみると、ファックスが紙を吐き出している。こんな時間になんだろう?", - "美味しそうな香りが漂ってきて、急に空腹を感じる。どこから来たんだ、この匂いは?", - "気分転換に見ていたネットに夢中になって、ふと気付くと何分も経過……いかんいかん。", - "ガクンと船を漕いで、ハッと目を覚ました。慌てて時計を見る……えっ、もうこんな時間なの!?", - ] - return get_table_by_2d6(table) - end - - # 社名決定表1 - def get_corporatenameone_table - table = [ - "フライング", - "トラブル", - "ブラッド", - "プリティー", - "クリムゾン", - "ボンバー", - ] - - return get_table_by_1d6(table) - end - - # 社名決定表2 - def get_corporatenametwo_table - table = [ - "ウィッチ―ズ", - "インテリジェンス", - "キャッツ", - "バード", - "ホラー", - "インセイン", - ] - - return get_table_by_1d6(table) - end - - # 社名決定表3 - def get_corporatenamethree_table - table = [ - "(株)", - "(株)", - "(株)", - "(有)", - "(有)", - "(有)", - ] - - return get_table_by_1d6(table) - end - - # 反応表 - def get_reaction_scene_table - table = [ - "「ちょっとこちらにきてもらえますか。」いきなり逮捕、拘束される。「反応表」を使用したキャラクターは、このシーンが終わってから2シーンの間、自分がシーンプレイヤーでないシーンに登場することができなくなる(マスターシーンには登場可能)。", - "「私が協力できるのはここまでだ。」協力を求めた人物は、怯えたような様子で手に持った包みをあなたに押し付けた。「反応表」を使用したキャラクターは、何か好きなアイテム一つを獲得する。", - "「その件は捜査中です。情報提供ありがとうございます。」協力を求めた人物は、にこにこ笑って、そう答える。何を言っても、同じ返答しか返ってこない。「反応表」を使用したキャラクターは、【正気度】を1点減少する。", - "「もしかして、お前、あの事件の関係者か……?」どうやら協力を求めた人物も、ちょうど同じ事件を調査していたようだ。いろいろ情報を提供してくれるようだ。「反応表」を使用したキャラクターは、以降、調査判定を行うときプラス1の修正がつく。", - "「夢でも見たんじゃないですか?」どんなに強く訴えても信じてもらえない。……もしかして、おかしいのは私の方なのか?情動の特技分野からランダムに特技一つを選んで恐怖判定を行う。", - "「はいはい。我々もヒマじゃないんだよ。」色々話しても相手にしてもらえない。門前払いを喰らう。", - "「ちょっと身体検査よろしいでしょうか?」怪しい人物だと思われたらしい。「反応表」を使用したキャラクターが、アイテムや、違法そうなプライズを持っていた場合、このシーンが終わってから2シーンの間、自分がシーンプレイヤーでないシーンに登場することができなくなる(マスターシーンには登場可能)。", - "「それは気になりますね。こちらでも調査してみましょう。」親身になって相談に乗ってくれる。何か分かったら連絡してくれると言うが……。1D6を振る。奇数なら、2シーン後に情報をくれる。「反応表」を使用したキャラクターは、好きな【秘密】一つを獲得する。偶数なら調査していたNPCが謎の死を遂げる。「反応表」を使用したキャラクターは、知識の特技分野からランダムに特技一つを選んで恐怖判定を行う。", - "「命が惜しければこれ以上関わるな。」あなたは人気のない場所に連れていかれ、殴られた。協力を求めた人物は、助けを求めたはずのあなたを激しく拒絶する。「反応表」を使用したキャラクターは、【生命力】を1点減少する。", - "「分かりました。念のためパトロールを強化しましょう。」周辺の警護を約束してくれる。「反応表」を使用したキャラクターは、このセッションの間、一度だけ自分が受けたダメージを無効化することができる。ダメージを無効化した場合、「反応表」を使用したキャラクターは、暴力の特技分野からランダムに一つを選んで恐怖判定を行う。", - "「……なんじゃこりゃぁっ!?」助けを求めた相手が突然死亡する。ヤツらの手は、こんなところまで及んでいるのか?「反応表」を使用したキャラクターは、暴力の特技分野からランダムに一つを選んで恐怖判定を行う。", - ] - return get_table_by_2d6(table) - end - - # 暫定整理番号作成表 - def get_interim_reference_number - table = [ - [11, '1'], - [12, '2'], - [13, '3'], - [14, '4'], - [15, '5'], - [16, '6'], - [22, 'G'], - [23, 'I'], - [24, 'J'], - [25, 'K'], - [26, 'O'], - [33, 'P'], - [34, 'Q'], - [35, 'S'], - [36, 'T'], - [44, 'U'], - [45, 'V'], - [46, 'X'], - [55, 'Y'], - [56, 'Z'], - [66, '-'], - ] - - number, total_n = roll(1, 6) - counts = 3 - if number <= 4 - counts = number + 5 - elsif number == 5 - counts = 4 - end - - output = '' - counts.times do - character, number = get_table_by_d66_swap(table) - output += character - total_n += ",#{number}" - end - return output, total_n - end -end diff --git a/src/src_bcdice/diceBot/Insane_Korean.rb b/src/src_bcdice/diceBot/Insane_Korean.rb deleted file mode 100644 index 0169ec818..000000000 --- a/src/src_bcdice/diceBot/Insane_Korean.rb +++ /dev/null @@ -1,768 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Insane_Korean < DiceBot - # ゲームシステムの識別子 - ID = 'Insane:Korean' - - # ゲームシステム名 - NAME = '인세인' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Korean:인세인' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - " > 펌블(판정실패。 덱에서 【광기】를 1장 획득)" - elsif dice_total >= 12 - " > 스페셜(판정성공。 【생명력】 1점이나 【정신력】 1점 회복)" - elsif total >= target - " > 성공" - else - " > 실패" - end - end - - def rollDiceCommand(command) - output = '1' - type = "" - total_n = "" - - case command - when 'ST' - type = '씬표' - output, total_n = get_scene_table - when 'HJST' - type = '사실은 무서운 현대 일본 씬표' - output, total_n = get_horror_scene_table - when 'MTST' - type = '광조의 20년대 씬표' - output, total_n = get_mania_scene_table - when 'DVST' - type = '암흑의 빅토리아 씬표' - output, total_n = get_dark_scene_table - when 'DT' - type = '수식표' - output, total_n = get_description_table - when 'BT' - type = '본체표' - output, total_n = get_body_table - when 'PT' - type = '부위표' - output, total_n = get_parts_table - when 'FT' - type = '감정표' - output, total_n = get_fortunechange_table - when 'JT' - type = '직업표' - output, total_n = get_job_table - when 'BET' - type = '배드엔딩표' - output, total_n = get_badend_table - when 'RTT' - type = '랜덤 특기 결정표' - output, total_n = get_random_skill_table - when 'TVT' - type = '지정특기(폭력)표' - output, total_n = get_violence_skill_table - when 'TET' - type = '지정특기(감정)표' - output, total_n = get_emotion_skill_table - when 'TPT' - type = '지정특기(지각)표' - output, total_n = get_perception_skill_table - when 'TST' - type = '지정특기(기술)표' - output, total_n = get_skill_skill_table - when 'TKT' - type = '지정특기(지식)표' - output, total_n = get_knowledge_skill_table - when 'TMT' - type = '지정특기(괴이)표' - output, total_n = get_mystery_skill_table - when 'CHT' - type = '회화 중에 발생하는 공포표' - output, total_n = get_conversation_horror_table - when 'VHT' - type = '거리에서 조우하는 공포표' - output, total_n = get_ville_horror_table - when 'IHT' - type = '갑자기 찾아오는 공포표' - output, total_n = get_inattendu_horror_table - when 'RHT' - type = '폐허에서 조우하는 공포표' - output, total_n = get_ruines_horror_table - when 'MHT' - type = ' 야외에서 조우하는 공포표' - output, total_n = get_Mlle_horror_table - when 'LHT' - type = '정보 속에 숨어 있는 공포표' - output, total_n = get_latence_horror_table - when 'ECT' - type = '조우표・도시' - output, total_n = get_city_table - when 'EMT' - type = '조우표・산림' - output, total_n = get_mountainforest_table - when 'EAT' - type = '조우표・해변' - output, total_n = get_seaside_table - when 'OHT' - type = '야근 시 조우하는 공포표' - output, total_n = get_overtime_horror_table - when 'OPT' - type = '야근 시 전화표' - output, total_n = get_overtimephone_table - when 'OWT' - type = '야근 씬표' - output, total_n = get_overtimework_scene_table - when 'CNT1' - type = '회사명 결정표1' - output, total_n = get_corporatenameone_table - when 'CNT2' - type = '회사명 결정표2' - output, total_n = get_corporatenametwo_table - when 'CNT3' - type = '회사명 결정표3' - output, total_n = get_corporatenamethree_table - when 'RET' - type = '반응표' - output, total_n = get_reaction_scene_table - end - - return "#{type}(#{total_n}) > #{output}" - end - - # 씬표 - def get_scene_table - table = [ - '피 냄새가 지독히 풍긴다. 사건인가? 사고인가? 혹시, 아직 끝나지 않은 걸까?', - '이건……꿈인가? 이미 끝났을 일이 기억 속에서 되살아난다.', - '아래에 펼쳐진 거리를 내려다보고 있다. 왜 이런 높은 곳에……?', - '종말을 맞은 세계 같은 암흑. 어둠 속, 누군가의 기척이 꿈틀거린다…….', - '평온한 시간이 지나간다. 마치 그런 일은 없었던 것 같다.', - '물먹은 흙의 냄새, 농밀한 기척이 흐르는 숲 속, 새나 벌레의 울음소리, 바람에 흔들리는 나무들의 소리가 들려온다.', - '사람이 다니기엔 좁은 주택가. 모르는 사람들이 사는 집들에서 이런저런 소리들이 새어나와 어렴풋이 들린다…….', - '갑자기 하늘을 구름이 덮는다. 비가 거세게 쏟아진다. 사람들은 처마를 찾아 허둥지둥 달려간다.', - '황폐한 폐허, 썩어 사라져가는 생활의 흔적. 희미하게 들려오는 건 바람일까, 파도 소리일까, 이명일까.', - '수많은 사람들. 시끄러운 소리. 매우 소란스러운 점내 BGM에, 비정상적인 웃음소리. 시끄러운 번화가의 한 곳이지만……?', - '밝은 빛에 비춰져, 안심하며 한숨. 하지만 빛이 강해지는 만큼, 그림자도 짙어진다.', - ] - - return get_table_by_2d6(table) - end - - # 사실은 무서운 현대 일본 씬표 - def get_horror_scene_table - table = [ - '갑자기 주변이 어두워진다. 정전인가? 어둠 속에서, 누군가가 당신을 부르는 목소리가 들려온다.', - '똑. 똑. 똑. 어디서일까, 물방울이 떨어지는 것 같은 소리가 들려온다.', - '창문 앞을 지나갈 때, 무언가 기분 나쁜 것이 비쳤다. 눈의 착각인가……?', - 'TV에서 뉴스 소리가 들려온다. 아무래도 근처에서 뒤숭숭한 사건이 일어난 것 같은데…….', - '어두운 길을 혼자 걷고 있다. 뒤로 기분 나쁜 발소리가 다가오는 것 같은 기분이 드는데…….', - '누굴까? 계속 시선이 느껴진다. 뒤를 돌아봐도 거기에 있는 것은 평소와 같은 광경인데…….', - '갑자기 핸드폰 벨소리가 울려 퍼진다. 매너모드로 해둔 것 같은데……. 대체, 누구한테 온 것일까?', - '빨간 빛을 비치는 석양. 태양은 가라앉고 하늘은 핏빛처럼 새빨갛다. 불안한 기분이 번져간다…….', - '맛있을 것 같은 냄새가 풍겨와, 갑자기 공복감이 느껴진다. 오늘은 뭘 먹을까?', - '새된 울음소리가 울려 퍼진다. 갑자기 공복감이 느껴진다. 오늘은 뭘 먹을까?', - '잠을 이루지 못하고 눈을 뜬다. 뭔가 악몽을 꾼 것 같은데……. 어라, 의식은 있는데 몸이 움직이지 않아!', - ] - - return get_table_by_2d6(table) - end - - # 광조의 20년대 씬표 - def get_mania_scene_table - table = [ - '이끼가 달라붙은 거대한 바위가 늘어선, 강에 떠오른 섬. 무엇을 모시고 있는지도 알 수 없는 제단이 있고, 이루 말하기 힘든 분위기가 떠오른다.', - '무허가 술집. 가판도 없는 지하의 가게는, 거리의 남자나 호스티스들로 떠들썩하다.', - '유적 안. 누가 세웠는지도 모르는, 비 유클리드 기하학적인 건축은, 안을 걷는 자의 정신을 서서히 좀먹어간다.', - '대학도서관. 사십만을 넘는 장서 속에는, 모독적인 마도서도 있다고 한다.', - '강한 바람을 다고, 어디선가 바다의 냄새가 풍겨온다. 바다는 멀리 있을텐데…….', - '수많은 사람들로 붐비는 길목. 여기라면 누가 섞여있어도 알아챌 수 없을 것이다.', - '깊은 어둠 속, 그 너머에는 말로 표현할 수 없는 무언가가 숨어있는 듯 하다.', - '역사 있는 신문사. 휴간 한 번 없이 발행한 백년분에 달하는 신문이 보관되어있다.', - '오래된 묘지. 비틀어진 나무들 사이에 낡아서 묘비명도 읽을 수 없는 비석이 서있다. 몇 개인가의 비석은 왜인지 기울어져있다.', - '강가의 공장 터. 아주 오래 전부터 쓰지 않은 듯, 건물은 무너져가고 있다. 아무래도 부랑자들이 거처로 쓰고 있는 듯하다.', - '조용한 실내. 무언가 불온한 기색이 느껴지지만……저건 뭐지? 창문에, 창문에!', - ] - - return get_table_by_2d6(table) - end - - # 암흑의 빅토리아 씬표 - def get_dark_scene_table - table = [ - '영매사를 중심으로 원탁을 에워싼 사람들이, 강령회를 하고 있다. 어둑한 방 안에 수상쩍은 엑토플라즘이 흐르기 시작한다.', - '노동자들이 모이는 펍. 여급이 나르는 에일이나 진을, 붉은 얼굴의 남자들이 들이킨다.', - '피 냄새가 풍기는 곳. 여기서 무슨 일이 있었던 것 일까…….', - '사창가가 늘어선 빈민가. 건물 앞에는 창부들이 손님을 기다리고 있다.', - '사람들로 붐비는 떠들썩한 거리. 다양한 소문이 떠돌고 있다. 동양인을 비롯한 외국인의 모습도 보인다.', - '안개가 짙은 길목. 가스등의 빛만이 돌로 포장된 길을 비추어 드러내고 있다.', - '아주 조용한 방 안. 여기라면 뭘 해도 쓸데없는 방해는 받지 않겠지.', - '기적 소리가 울리는 부두. 저 배는 외국으로 여행을 떠나는 걸까.', - '책이 넘쳐나는 곳. 뭔가를 조사하기에는 안성맞춤이지만.', - '귀족이나 자산가들이 모인 파티. 품위 있는 미소 아래에서는 어떤 흉계를 꾸미고 있는 걸까.', - '조용한 호수 부근 풀숲에서는 야생의 토끼가 뛰어다니고 있다.', - ] - return get_table_by_2d6(table) - end - - # 수식표 - def get_description_table - table = [ - [11, '핼쑥한'], - [12, '피를 흘리는'], - [13, '비늘 모양의'], - [14, '모독적인'], - [15, '원통형의'], - [16, '비정상적으로 증식하는'], - [22, '불규칙적인'], - [23, '꽥꽥 우는'], - [24, '무수한'], - [25, '털이 많은'], - [26, '색채 없는'], - [33, '신축하는'], - [34, '외설적인'], - [35, '부풀어 오른'], - [36, '거대한'], - [44, '점액 투성이의'], - [45, '끊임없이 변화하는'], - [46, '벌레 투성이의'], - [55, '키틴질의'], - [56, '「본체표를 사용」 같은'], - [66, '무지개 빛으로 빛나는'], - ] - - return get_table_by_d66_swap(table) - end - - # 본체표 - def get_body_table - table = [ - [11, '인간'], - [12, '개'], - [13, '쥐'], - [14, '망령'], - [15, '민달팽이'], - [16, '벌레'], - [22, '얼굴'], - [23, '고양이'], - [24, '지렁이'], - [25, '소'], - [26, '새'], - [33, '반어인'], - [34, '인조인간'], - [35, '뱀'], - [36, '노인'], - [44, '아메바'], - [45, '여성'], - [46, '기계'], - [55, '문어'], - [56, '「부위표」를 사용'], - [66, '소인'], - ] - - return get_table_by_d66_swap(table) - end - - # 부위표 - def get_parts_table - table = [ - [11, '몸통'], - [12, '발'], - [13, '팔뚝'], - [14, '머리털/갈기'], - [15, '입'], - [16, '유방'], - [22, '얼굴'], - [23, '피부'], - [24, '눈'], - [25, '꼬리'], - [26, '촉수'], - [33, '코'], - [34, '그림자'], - [35, '이빨'], - [36, '뼈'], - [44, '보석'], - [45, '날개'], - [46, '뇌수'], - [55, '혀'], - [56, '가지나 잎'], - [66, '내장'], - ] - - return get_table_by_d66_swap(table) - end - - # 감정표 - def get_fortunechange_table - table = [ - '공감(플러스)/불신(마이너스)', - '우정(플러스)/분노(마이너스)', - '애정(플러스)/시기(마이너스)', - '충성(플러스)/모멸(마이너스)', - '동정(플러스)/열등감(마이너스)', - '광신(플러스)/살의(마이너스)', - ] - - return get_table_by_1d6(table) - end - - # 직업표 - def get_job_table - table = [ - [11, '고고학자≪정경≫≪고고학≫'], - [12, '갱(Gang)≪고문≫≪분노≫'], - [13, '탐정≪육감≫≪수학≫'], - [14, '경찰≪사격≫≪추적≫'], - [15, '호사가≪예술≫≪인류학≫'], - [16, '의사≪절단≫≪의학≫'], - [22, '교수 지식분야에서 원하는 것을 2개'], - [23, '성직자≪부끄러움≫≪사랑≫'], - [24, '심리학자 감정분야에서 원하는 것을 2개'], - [25, '학생 지식분야와 감정분야에서 원하는 것을 하나씩'], - [26, '기자≪놀람≫≪미디어≫'], - [33, '기술자≪전자기기≫≪기계≫'], - [34, '도둑≪그늘≫≪함정≫'], - [35, '예능인≪기쁨≫≪예술≫'], - [36, '작가≪근심≫≪교양≫'], - [44, '모험가≪구타≫≪탈것≫'], - [45, '사서≪정리≫≪미디어≫'], - [46, '요리사≪소각≫≪맛≫'], - [55, '비즈니스맨≪참음≫≪효율≫'], - [56, '호스트or호스티스≪웃음≫≪관능≫'], - [66, '경호원 폭략분야에서 원하는 것을 2개'], - ] - - return get_table_by_d66_swap(table) - end - - # 배드엔딩표 - def get_badend_table - table = [ - '당신 주위에 칠흑의 어둠이, 이형의 앞다리가, 무수한 촉수가 모여든다. 새로운 동료를 축복하고 있는 것이다. 당신은 이제 괴이를 무서워하지 않는다. 왜냐하면, 당신 자신이 괴이가 되었기 떄문이다. 이후, 당신은 괴이 NPC로서 등장한다', - lambda { return "감옥과도 같은, 수술실 같은 어둑한 방에 감금당했다. 그리고, 매일같이고문을 받게 되었다. 어떻게든 도망칠 수는 있었지만……. #{get_random_skill_table_text_only}의 특기가 【공포심】이 된다." }, - '아슬아슬한 순간, 수수께끼의 조직의 에이전트에게 구해진다. 「당신, 장래성이 있군. 어떤가? 우리들과 함께 하지 않겠나?」\n 당신은 원한다면, 닌자/마법사/헌터로서 괴이와 싸워나가는 것이 가능하다. 그 경우, 당신은 다른 사이코로 픽션의 캐릭터로 다시 태어난다.', - '병원 침대에서 눈을 뜬다. 오랫동안, 무서운 악몽을 꾼 것 같은 기분이 든다. 그 세션의 후유증 판정은, 마이너스 1의 수정이 붙고, 펌블 수치가 1 상승한다.', - '어딘가의 민가에서 눈을 뜬다. 근사한 사람에게 구해져서, 극진한 간호를 받은 듯 하다. 딱히 페널티는 없다.', - '「위험해!」\n 거대한 절망이 당신을 덮쳐온다. 1D6 마이너스 1점의 데미지를 입는다. 이에 의해 【생명력】이 0점이 된 경우, 당신은 사망한다. 단, 당신에게 플러스의 【감정】을 가진 NPC가 있을 경우, 그 NPC가 그 데미지를 무효화해준다.', - '다른 새로운 괴사건에 휘말린다. 고생은 끝, 그쪽은 어떻게든 무사해결! 딱히 패널티는 없다.', - '커다란 상처를 입고, 생사의 경계를 헤맨다. 원하는 특기로 판정을 시행하라. 실패하면 사망한다. 【생명력】만큼 마이너스의 수정이 붙는다.', - '눈을 뜨면 익숙하지 않은 장소다. 여긴 어디지? 나는 누구? 아무래도 지나친 공포로 기억을 잃어버린 것 같다. 공적점이 있다면, 그것을 1점 잃는다.', - lambda { return "눈을 뜨니, 그곳은 평소의 그곳이었다. 하지만, 어딘가 위화감을 느낀다. 당신들 외에, 누구도 사건에 대해서는 모르는 것 같다. 죽었을 터인 그 인물도 살아있다. 시간을 여행한 것일까, 여긴 다른 세계선인가……?  #{get_random_skill_table_text_only}의 특기가 【공포심】이 된다." }, - '뒤를 돌아보자, 거기에는 압도적인 「그것」이 기다리고 있었다. 무자비한 일격이 당신을 덮치고, 당신은 사망한다.', - ] - return get_table_by_2d6(table) - end - - # 랜덤 특기 결정표 - def get_random_skill_table - skillTableFull = [ - ['폭력', ['소각', '고문', '긴박', '위협하기', '파괴', '구타', '절단', '찌르기', '사격', '전쟁', '매장']], - ['감정', ['연정', '기쁨', '근심', '부끄러움', '웃음', '참음', '놀람', '분노', '원한', '슬픔', '사랑']], - ['지각', ['아픔', '관능', '감촉', '향기', '맛', '소리', '정경', '추적', '예술', '육감', '그늘']], - ['기술', ['분해', '전자기기', '정리', '약품', '효율', '미디어', '카메라', '탈것', '기계', '함정', '병기']], - ['지식', ['물리학', '수학', '화학', '생물학', '의학', '교양', '인류학', '역사', '민속학', '고고학', '천문학']], - ['괴이', ['시간', '혼돈', '심해', '죽음', '영혼', '마술', '암흑', '종말', '꿈', '지저', '우주']], - ] - - skillTable, total_n = get_table_by_1d6(skillTableFull) - tableName, skillTable = *skillTable - skill, total_n2 = get_table_by_2d6(skillTable) - return "「#{tableName}」≪#{skill}≫", "#{total_n},#{total_n2}" - end - - # 특기만 뽑고싶을 때 사용. 별로 예쁘진 않다. - def get_random_skill_table_text_only - text, = get_random_skill_table - return text - end - - # 지정특기 랜덤결정(폭력) - def get_violence_skill_table - table = [ - '소각', - '고문', - '긴박', - '위협하기', - '파괴', - '구타', - '절단', - '찌르기', - '사격', - '전쟁', - '매장', - ] - return get_table_by_2d6(table) - end - - # 지정특기 랜덤결정(감정) - def get_emotion_skill_table - table = [ - '연정', - '기쁨', - '근심', - '부끄러움', - '웃음', - '참음', - '놀람', - '분노', - '원한', - '슬픔', - '사랑', - ] - return get_table_by_2d6(table) - end - - # 지정특기 랜덤결정(지식) - def get_perception_skill_table - table = [ - '아픔', - '관능', - '감촉', - '향기', - '맛', - '소리', - '정경', - '추적', - '예술', - '육감', - '그늘', - ] - return get_table_by_2d6(table) - end - - # 지정특기 랜덤결정(기술) - def get_skill_skill_table - table = [ - '분해', - '전자기기', - '정리', - '약품', - '효율', - '미디어', - '카메라', - '탈것', - '기계', - '함정', - '병기', - ] - return get_table_by_2d6(table) - end - - # 지정특기 랜덤결정(지식) - def get_knowledge_skill_table - table = [ - '물리학', - '수학', - '화학', - '생물학', - '의학', - '교양', - '인류학', - '역사', - '민속학', - '고고학', - '천문학', - ] - return get_table_by_2d6(table) - end - - # 지정특기 랜덤결정(괴이) - def get_mystery_skill_table - table = [ - '시간', - '혼돈', - '심해', - '죽음', - '영혼', - '마술', - '암흑', - '종말', - '꿈', - '지저', - '우주', - ] - return get_table_by_2d6(table) - end - - # 회화 중에 발생하는 공포표 - def get_conversation_horror_table - table = [ - "지정특기:죽음\n한창 대화중에, 당신은 문득, 상대의 어깨 너머로 시선을 향한다. 갑자기, 먼 건물의 옥상에서 여자가 뛰어내렸다. 소리 지를 틈도 없이, 그녀는 빨려 들어가듯 지면으로 내동댕이쳐진다. 거리가 있음에도 불구하고, 그녀와 눈이 마주치고 말았다. –-그 이후, 그녀의 얼굴이 뇌리에 박혀, 사라지지 않는다…….", - "지정특기:구타\n땅바닥에 드러누운 상대를 보면서, 당신은 등줄기에 식은땀이 나는 것을 느꼈다. 상대는 쓰러진 채, 부자연스럽게 신체를 비틀며 꼼짝도 하지 않는다. 천천히 피 웅덩이가 커져간다……. –죽여버리고 말았다. 동요하며 눈을 깜빡였을 때, 상대의 신체가 사라졌다. 피 웅덩이도 보이지 않는다. 당신은 망연히 멈춰 서있다. 환각이었던걸까……?", - "지정특기:전자기기\n당신이 전화로 상대와 이야기하고 있으면, 난데없이 상대가 입을다물어버린다. 「……저게 뭐지?」\n 상대는 혼잣말하듯 중얼거리더니, 당황한 듯 소리를 지른다. 「이리로 온다…… 이리로 온다! 우왓! 우와아아앗! 살려줘! 살려줘!!」\n 그것을 마지막으로 전화가 뚝하고 끊어진다. 다시 걸어보면 통화중이다. 계속.", - "지정특기:소리\n당신이 전화로 상대와 이야기하고 있으면, 낮은 소리로 중얼거리는 목소리가 들려온다. 혼선인걸까? 이상하게 생각하며 듣고 있는 동안, 머리가 멍해져 온다. 중얼중얼, 중얼중얼, 중얼중얼, 중얼중얼……. 정신을 차리면, 전화기를 든 챌 멍- 하니 서 있다. 통화는 끊어져 있다. 무슨 이야기를 하고 있었는지 기억나지 않는다. 다만, 굉장히 무서운 것을 들은 듯한 기분이 든다. 대체, 당신은 누구와 이야기하고 있었던걸까?", - "지정특기:고문\n대화 도중, 피 맛이 났다. 동시에 갈그랑거리는 위화감을 느꼈다. 상대가 새파랗게 질려서 당신의 얼굴을 가리킨다. 어찌된 일인지 물어보려 입을 열자, 뚝하고 무언가가 땅바닥으로 떨어졌다. 내려다보면, 피 웅덩이 속에 새하얗게 당신의 이빨이 한 개 떨어져 있다.", - "지정특기:인류학\n대화 도중, 시야에 위화감을 느낀 당신은 눈을 깜빡였다. 상대의 얼굴이, 이상하게 되어 있었다. 잡아 늘여서, 휘저은 것처럼, 그로테스크하게 일그러져 있다. 엣? 하고 자세히 보지만 일그러짐은 변함없다. 상대는 전혀 눈치채지 못한 듯하다. 눈을 질끈 감았다가 다시 보자, 겨우 일그러짐이 사라졌다. 당신은 마음에 한가지 의심이 생겨난다. 눈 앞에 있는 상대는, 정말로 인간인걸까?", - ] - return get_table_by_1d6(table) - end - - # 거리에서 조우하는 공포표 - def get_ville_horror_table - table = [ - "지정특기:탈것\n끼이익--!! 거친 브레이크 소리, 그리고 둔탁한 소리. 깜짝 놀라 뒤를 돌아보자, 멈춰진 차와, 그 앞에 쓰러져있는 사람이 눈에 들어왔다. 교통사고다! 황급히 뛰어가서, 피해자의 얼굴을 본 순간, 당신은 그대로 얼어붙었다. 쓰러져 있는 사람은, 당신이었다. --엣?! 깜짝 놀라 눈을 깜빡이면, 길 위의 당신도, 차도, 사라졌다.", - "지정특기:정경\n지나가는 집의 지붕에 누군가 서있다. 그나저나 당신 뭘……? 그 누군가는, 춤을 추고 있는 듯이 보였다. 손발을 휘저으며, 머리를 거세게 움직이며 춤추고 있다. 평범한 모습은 아니다. 미친 것처럼 춤추고 있다. 보고 있는 동안에 불길한 기분이 들었다. 보고싶지 않은데, 어째서인지, 눈을 돌릴 수 없다. 불길한 예감이 점점 커져간다…….", - "지정특기:종말\n애애애애애애애애애앵……. 거리에 사이렌이 울려 퍼진다. 어디서 울리고 있는 걸까, 언제까지 울리는 걸까. 이렇게 커다란 소리인데도, 어째서 아무도 동요하지 않는 걸까. 이상한 마음에 걷고 있으면, 길 건너편에서 걸어오는 사람 그림자가 있다. 상처를 입었는지, 비틀거리며, 지금 당장이라도 쓰러질 것처럼, 힘없이, 힘없이 부자연스런 걸음걸이로 가까이 다가온다. 저건 대체……?", - "지정특기:위협하기\n걷고 있으려니, 갑자기 조용해진다. 주변을 둘러보면, 사람도, 차도, 아무도 없다. 아무도 없는 거리가 어디까지고 펼쳐져 있다. 방금까지 사람이 굉장히 많이 있었는데……?\n 「이봐! 뭐 하고 있는거야!」\n 갑자기 호통치는 소리에 가슴이 덜컥한다. 뒤돌아보니, 작업복을 입은 남자가 이리로 걸어오고 있었다. 「멍청한 녀석! 이런델 왔다간--」\n 끝까지 듣기도 전에, 갑자기 소리가 돌아왔다. 사람과 차가 지나다니는, 원래의 거리다. 방금은 뭐였을까……?", - "지정특기:혼돈\n전봇대 밑에 여성이 웅크리고 있다. 배를 부여잡고, 괴로운 듯 얼굴을 숙이고 있다. 「괜찮으세요?」\n 다가가서 말을 건 당신에게, 여성은 고개를 끄덕였다. 「네—감사합니다。」\n 그렇게 말하며 고개를 든 여성의 얼굴은, 아무것도 없었다. 반들반들하게 벗겨진 달걀 같은 피부가 계속되고 있을 뿐이었다. 우왓!?\n 뒤로 몸을 젖힌 순간, 의식이 멀어졌고, 정신을 차려보니 당신은 전봇대 밑에 웅크리고 있었다.", - "지정특기:웃음\n역에 도착하니, 몹시 혼잡했다. 인신사고로 전차가 멈춰있는 듯하다. 재수 없으려니. 그렇게 생각하고 있으면, 개찰구 근처의 인파 속에서, 일본 옷을 입은 여성이 빠른 걸음으로 당신 쪽으로 다가왔다. 여성은 만면에 미소를 짓고 있었다. 혼잣말을 중얼거리는지, 입이 움직이고 있다. 스쳐지나갈 때에, 여성의 목소리가 귀에 들렸다. 「해버렸다. 해버렸다. 해버렸다. 꼴좋네。」\n 엣, 하며 돌아보는 당신을 남겨두고, 여성은 인파 속으로 사라져버렸다.", - ] - - return get_table_by_1d6(table) - end - - # 갑자기 찾아오는 공포표. - def get_inattendu_horror_table - table = [ - "지정특기:놀람\n쿵쾅쿵쾅쿵쾅! 갑작스런 소리에, 당신은 깜짝 놀라 고개를 들고 올려다본다. 지붕 밑에 무언가가 돌아다니고 있는 것 같다. 동물이 들어온 걸까? 그렇다고 쳐도 커다란 소리다. --마치, 어린아이가 이리저리 뛰어 돌아다니는 듯한. 한 순간 소리가 멈췄다가, 이내 다시 들린다. 쿵! 쿵! 쿵! 쿵! 펄떡펄떡 뛰어오르는 듯한 소리가 나는 곳은, 정확히 당신의 바로 위였다…….", - "지정특기:우주\n창문으로 빛이 들어온다. 하늘로 눈을 돌려 바라보면, 하얗고 빛나는 거대한 비행물체가 떠있다. 홀린 듯 쳐다보고 있으면, 새나 비행기라고 생각할 수 없는, 불규칙한 움직임으로 날아다니기 시작한다. 뭐야 저건? 이상하게 생각하고 있으면, 등 뒤에서 누군가가 속삭인다. 「저건……야」\n 핫 하고 눈치채면, 어느샌가, 전혀 다른 장소에 있다. 손 안에 무언가 쥐여있는 듯한 딱딱한 감촉이 있다…….", - "지정특기:냄새\n기묘한 화물이 도착했다. 검테이프로 꽁꽁 싸매진 커다란 골판지다. 발신인 이름을 적어둔 종이가 붙어있지만 번져있어 읽을 수 없다. 상자의 내용물은 흙이었다. 사금파리나 돌맹이가 섞인, 이상한 냄새를 풍기는 흙이 들어 있었다. 이유를 알 수 없어서 내용물은 버렸지만, 그 이후 왠지 운이 나빠진듯한 기분이 든다…….", - "지정특기:참음\n벽 너머에서 누군가 이야기하는 소리가 들려온다. 「……니까, 이 녀석은……하지 않으면。」\n 「그렇네……하군……지 않으면。」\n 수군수군, 수군수군하고, 음침한 어조로 대화는 계속된다. 무엇을 이야기하고 있는지, 내용은 잘 모르겠지만, 어쩐지 자신의 이야기를 하고 있는 듯해서 왠지 기분이 나쁘다. 신경쓰여서 벽에 귀를 대었을 때, 확실한 목소리가 벽 너머에서 이렇게 말했다. 「……얘, 제대로 듣고 있어?」", - "지정특기:감촉\n똑. 똑. 목덜미에 떨어진 미지근한 물방울의 감촉에 당신은 눈썹을 찌푸렸다. 눈치채고 나면, 책상 위에 빨간 물방울이 떨어져 있다. 쇳내가 코를 찌른다. 똑. 똑. 똑. 물방울은 세를 늘려, 자꾸 자꾸 떨어져내려, 책상 위로 퍼져나간다. 천천히 올려다보면, 천장에는 커다랗고 검붉은 얼룩이 넓게 퍼져있다. 똑. 토독. 똑. --토도도도독! 높아진 물소리에 당신은 우뚝 멈춰 선다. 지붕 밑에, 대체, 뭐가……?", - "지정특기:지저\n낯익은 장소에서, 낯선 문을 발견했다. 열어보면, 긴 내리막계단이 어둠 속으로 뻗어 있다. 수상쩍게 생각해서 아래로 내려가보니…… 그 곳은 지하실이었다. 이런 장소가 있었던가. 한 손에 불빛을 들고 나아가보면 무언가 다가오는 기분이 든다. 어둠 속에서, 누군가가, 당신의 이름을 불렀다.", - ] - - return get_table_by_1d6(table) - end - - # 폐허에서 조우하는 공포표 - def get_ruines_horror_table - table = [ - "지정특기:암흑\n무겁고 튼튼해 보이는 문을 연다. 방 안은 새까맸다. 등불로 비춰보니, 다른 방으로 이어지는 길이 몇 갈래 발견되었다. 달리 눈에 띄는 것은 없는 듯 하다. 일단, 입구로 되돌아가려고, 들어왔던 문 쪽으로 돌아선다. 그 곳에는 벽 밖에 없었다. 그 중후한 문이 사라져있다. 그런 말도 안 되는 일이. 그러나, 몇 번이고 찾아봐도 어떤 벽에도 문 같은 것은 보이지 않는다. 할 수 없이, 통로를 나아가기로 했지만, 조금씩 불길한 기분이 엄습해 온다. ……그 문은, 열어서는 안됐던 것 아닐까?", - "지정특기:정리\n당신은 폐허 속에서 부웅…… 하는 낮은 소리를 눈치챘다. 냉장고다. 어디서 전기가 들어오고 잇는지, 하얀 냉장고가 폐허의 한 쪽 구석에 조용히 서 있었다. 찰카닥 하고 문을 잡아당겨 열어본 당신은, 안에 있던 무언가와 눈이 마주쳤다. ……정신을 차리니, 당신은 어둡고 차가운 곳에 몸을 웅크리고 있다. 부웅……하는 소리가 들려온다. 이곳은 서늘하고 좁아서--굉장히 편안하다.", - "지정특기:추적\n폐옥의 미닫이문을 열었을 때, 당신은 강한 위화감을 느꼈다. 먼지가 두껍게 쌓인 그 방에는, 묵직한 분위기가 감돌았다. 밥상 위에는 내용물이 남은 찻잔, 방금 전까지 누군가가 앉아있던 걸로 보이는 움푹 패인 방석. 어째서 이 거실에는, 이리도 생활감이 남아있는 걸까?", - "지정특기:사랑\n폐허를 걷고 있자니, 돌연, 당신의 휴대폰으로 전화가 걸려왔다. 쥐죽은 듯 고요한 폐허에 울려 퍼지는 착신음에 몹시 놀라면서도 받아보면 전화기 저편에서, 당신의 할머니가 갑자기 꾸짖는다. 「얘야, 뭐 하는 거니! 그런데는 가면 안되잖니!」\n 엣, 어째서 할머니가……?\n 「빨리 거기서 나오렴! 그러다 큰일 난다!」\n 영문도 알 수 없는 채로 우물쭈물 거리고 있는 동안, 전화는 끊어졌다. 화면에는 「권외」라고 표시되어 있었다.", - "지정특기:함정\n폐허를 걷고 있으니, 갑자기 발에 극심한 통증이 일었다. 비명을 억누르며 아래를 보니, 발목에 덫이 꽉 물려있다. 어째서 이런 곳에, 이런 덫이……? 고생해서 덫을 해제하고, 다시 주변을 둘러보았을 때, 당신은 깜짝 놀란다. 덫은 하나가 아니었다. 잔해 속에 숨겨놓은 것처럼, 몇 개고, 몇 개고, 덫이 설치되어 있었다.", - "지정특기:약품\n갑자기, 신나 냄새가 코를 찔렀다. 폐허의 벽에 끈적끈적하게, 붉은 페인트로 문자가 쓰여있다. 무엇이 쓰여있는지는 분명하지 않지만, 오로지 악의와 증오만을 칠해 넣은 듯한 터치에 두려움이 생긴다. 그러던 도중 어떤 사실을 눈치채고, 당신은 바짝 소름이 돋았다. 페인트가 아직 마르지 않았다. ……갓 칠한 것처럼 새로운 것이다.", - ] - - return get_table_by_1d6(table) - end - - # 야외에서 조우하는 공포표 - def get_Mlle_horror_table - table = [ - "지정특기:아픔\n부우우우우우웅. 귓가에 새된 날개소리가 울려 퍼진다. 본 적 없는 새빨간 날벌레 무리가 날고 있었다. 부우우우우우웅. 날벌레를 쫓아내려고, 팔을 휘두른다. 아얏. 팔에 찌르는 듯한 통증이 일었다. 부우우우우우웅. 벌레들은, 어디론가로 가버린다. 순간 팔의 표면에 이상한 수포가 돋아나기 시작했다.", - "지정특기:꿈\n나무들 사이에, 무언가 커다란 것이 움직이고 있는 것이 보인다. 고기 썩는 듯한 냄새가 물씬 코를 찌른다. 얼룩덜룩한 무늬는…… 모피? 그게 아니면, 갈기갈기 찢어진 옷 조각? 그 녀석이 당신을 봤다. 나뭇잎 사이로 들여다보는 눈은, 마치 사람 같은—눈이 마주친 순간부터 기억이 없다. 정신이 들면, 머리카락을 닮은 검은 털이, 당신의 전신에 붙어있다.", - "지정특기:원한\n숲 속에서 맞닥뜨린 거대한 나무의 줄기에는 수많은 짚인형이 못으로 고정되어 있었다. 우와아, 라고 생각하며 올려다보던 중, 기분 나쁜 사실을 눈치채고 말았다. 새 짚인형 중 하나에, 이름이 쓰여진 팻말이 붙어있다. --굉장히, 눈에 익은 이름이었다.", - "지정특기:심해\n……이봐 ……이봐아. 멀리서 부르는 소리를 들은 기분이 들어, 물결 사이를 응시한다. 반들반들한 검은 그림자가 떠올랐다 가라앉았다 하며, 당신을 부르고 있다.", - "지정특기:그늘\n덤불 속에 폐차가 파묻혀있다. 특징 없는 하얀 밴이다. 창문은 새카맣게 그을음이 묻어있어, 아무것도 보이지 않는다. 차체는 녹이 슬고, 도료도 벗겨져서, 방치되어버린 오래된 폐차임이 확실하다. —-그런데도, 폐차 속에서 날카로운 시선이 느껴진다. 잠금이 풀리는 소리가 나고, 천천히 뒷좌석의 문이 열리기 시작한다…….", - "지정특기:소각\n타닥……타닥……. 불이 타오르는 소리가 들린다. 공터에 모닥불이 불꽃을 튀기고 있었다. 곁에는 아무도 없다 따듯해진 기분으로 멈춰 서서, 나뭇가지로 모닥불을 휘젓고 있으니, 불 속에서 가벼운 웃음소리가 들렸다. 흠칫 놀란 당신의 발 밑을, 고양이처럼 커다란 무언가가 스르륵 빠져나갔다. 모닥불로 눈을 돌리면, 그 곳에는 단지 그을은 뼛조각만 남아있었다.", - ] - - return get_table_by_1d6(table) - end - - # 정보 속에 숨어 있는 공포표. - def get_latence_horror_table - table = [ - "지정특기:맛\n목이 마른 것을 깨달았다. 조사를 시작하고 나서, 시간이 상당히 많이 흘렀다. 아무래도 너무 깊이 몰두하고 있었던 듯하다. 화면에 눈을 돌리면서, 페트병의 물을 입에 머금는다. 그러자, 입 속에 위화감이 퍼졌다. 참지 못하고 물을 토해낸다. 그러자, 새까만 액체가 책상 위의 자료를 더럽혔다. 입 속에는, 구정물 같은 냄새가 떠나지 않는다. 확인해본 페트병의 물은 투명했는데……?", - "지정특기:카메라\n자료 사이에서, 노란 봉투에 들어있는 사진 묶음이 나왔다. 피사체는……당신이다. 모르는 사이에 찍힌, 상신의 사진이 몇 십장이나 묶여있다. 빛 바랜 사진을 아무렇게나 묶어놓은 고무줄은 낡아서, 끈적거렸다. --누가, 이런 사진을? 무엇 때문에……?", - "지정특기:미디어\n텔레비전의 뉴스를 보고 있으면, 그때까지 막힘없이 재잘거리고 있던아나운서가, 갑자기 입을 다문다. 어쩌려는거야, 라고 생각하고 있으니, 아나운서가 기묘한 것을 말하기 시작했다. 「죽을 수도 있습니다. 라고 말했습니다. 또한, 높은 확률로, 재앙이 발생합니다. 오늘부터 내일까지, 엄중히 경계하세요. 엄중히 경계하세요. 엄중히 경계하세요」\n 아나운서는, 화면 저 편에서 당신의 눈을 지그시 응시하고 있다. 당신이 당황해 하고 있으면, 텔레비전의 전원이 스스로 꺼진다.", - "지정특기:민속학\n자료를 찾던 와중, 어느 한촌에 전해지는 역겨운 풍습에 다다랐다. 폭력……의식……제물……도저히 정상적인 인간이 한 짓이라고 생각할 수 없는 소행에 치가 떨린다. 그 풍습에는, 어째선지 기시감이 있다. 어디서 읽었더라? 생각하던 도중, 어떤 기억이 되살아났다. 당신이 어릴 적의 기억이었다. 아냐……그런, 말도 안되는, 당신의 고향이, 이런 한촌일리 없어…….", - "지정특기:마술\n자료 속에서, 기묘한 고서가 나왔다. 가죽 장정의 호화로운 책으로, 묘한 냄새가 난다. 문장은 지리멸렬해서, 정상적인 인간이 썼다고 생각되지 않는다. 그러나, 찢어진 듯한 페이지를 한 장 한 장 넘기고 있으려니, 차츰차츰 작자가 말하려는 바를 알게 된다. 계속, 계속해서 알게 된다. 아아, 이제 알았다. 완전히 알았다. 이제 괜찮다. 분명 이 책은, 당신에게 읽혀지기 위해 쓰여졌던 것이다..", - "지정특기:역사\n표지가 없는 보고서를 발견했다. 팔락팔락 넘겨보면, 지금 막 당신이 조사하고 있는 사건에 대한 조사보고서였다. 안타깝게도, 여기저기 먹칠이 되어있어, 가장 중요한 부분은 알 수 없다. 보아하니, 아무래도, 군에 의한 조사인 듯하다. 군? 어째서 군대가 이 사건을 조사하고 있었던 거지?", - ] - - return get_table_by_1d6(table) - end - - # 조우표・도시 - def get_city_table - table = [ - "실패작×3 기본p246", - "노려보는 사람×1 데드 루프p190 개×1 기본p243", - "신봉자×2 기본p243", - "얼굴을 가린 여자×1 데드 루프p192", - "유령 자동차×1 데드 루프p193", - "원령×1 기본p245", - ] - - return get_table_by_1d6(table) - end - - # 조우표・산림 - def get_mountainforest_table - table = [ - "놋페라보×3 데드 루프p190", - "독충 무리×2 데드 루프p191", - "곰×1 데드 루프p191", - "거대 곤충×1 데드 루프p192", - "늑대 인간×1 기본p265", - "쿠네쿠네×1 데드 루프p193", - ] - - return get_table_by_1d6(table) - end - - # 조우표・해변 - def get_seaside_table - table = [ - "도깨비불×3 데드 루프p190", - "깊은 곳의 존재×2 기본p261", - "별을 건너는 자×1 기본p261", - "우주인×1 기본p257", - "마녀×1 기본p245", - "기어 다니는 자×1 기본p261", - ] - - return get_table_by_1d6(table) - end - - # 야근 시 조우하는 공포표 - def get_overtime_horror_table - table = [ - "지정특기:죽음\n창문에 눈을 돌렸을 때, 창 밖을 떨어지는 그림자와 눈이 마주쳤다! 황급히 창가에 달려가지만, 아래에는 아무것도 없다. 환각이었던 것일까……?", - "지정특기:기계\n갑자기 복사기가 윙윙거리며 종이를 쏟아 내기 시작했다. 바닥에 흩날리는 복사 용지에는 비뚤어진 사람 얼굴 같은 것이 인쇄되어 있다. 징그럽다…….", - "지정특기:그늘\n창백한 아이가 책상 밑에서 당신을 쳐다보고 있다. 우와!라고 외치며 뛰어 올랐다가 앉으면, 아이의 모습은 사라졌다.", - "지정특기:감촉\n일을 하고 있자니, 뒤에서 긴 흑발이 늘어져 왔다. 여자의 긴 생머리다. ……뒤에서 들여다보는 것은 도대체 누구인가?", - "지정특기:근심\n시야의 구석을 어두운 얼굴의 남자가 지나가는 것이 보였다. 돌아봐도 아무도 없다. 누구야? 모른다고, 저런 녀석.", - "지정특기:암흑\n팟! 갑작스런 정전으로 층이 어둠에 잠겼다. 놀라서 얼굴을 들어올리면, 어둠 속에서 많은 사람의 그림자가 멈춰 서서, 당신을 가만히 보고 있다!", - ] - - return get_table_by_1d6(table) - end - - # 야근 시 전화표 - def get_overtimephone_table - table = [ - "「진행 상황은 어떻습니까?」\n 클라이언트에게서의 진행 확인 전화. 지금 하고 있어요! 전화 시간이 아깝다구! 스트레스로 배가 아프다. 【생명력】 -1.", - "「사양이 바뀌어서…… 」\n 클라이언트의 사양 변경 연락. 이제와서!? 죽여버린다!? 모처럼의 작업이 무효가 된다. PP -1", - "「최근 전화를 받지 않는데……괜찮아?」\n 연인이나 가족 등 소중한 사람의 전화. 업무 시간에 걸지마 하고 생각하면서도, 조금 기분 전환이 된다. 【정신력】 1 회복.", - "「특상 초밥 오인분 부탁드립니다!」\n 잘못 걸려온 전화였다. 놀라게 하다니…….", - "「어이! 좀 전의 일인데 어떻게 된거야!」\n 다른 용무의 클레임 전화다! 지친 정신에 손상을 입고, 【정신력】 -1.", - "「……없으면 좋을텐데。」\n 전화 저편에서 지옥 같은 목소리가 속삭인다. 오싹해져 반사적으로 전화를 끊는다. 착신 이력은 남아있지 않다……뭐야 지금!? 《전자기기》로 공포판정.", - ] - - return get_table_by_1d6(table) - end - - # 야근 씬표 - def get_overtimework_scene_table - table = [ - "지직……갑자기 형광등이 깜박인다. 전기 쪽이 이상한걸까? 정전만은 참아줬으면.", - "톡. 톡. 어디선가 물이 뚝뚝 떨어지는 소리가 들린다. 어딘가 비가 새거나, 수도꼭지를 잠그는 것을 잊은걸까?", - "슈욱……쏴아아아아. 화장실 물 내리는 소리가 울린다. 누군가 화장실에 있었나? 아니면다른 층인가?", - "사이렌 소리가 가까이 다가오고, 적색 빛이 창문에 비친다. 근처에 뭔가 있던 것 같은데…….", - "뒤에서 누군가 말하는 소리를 들은 것 같다. 순간적으로 뒤돌아 보지만……환청일까?", - "창문 유리 너머로 보이는 밤의 불빛을 안타까운 마음으로 바라본다. 빨리 돌아가고 싶다…….", - "갑자기, 핸드폰 소리가 울려 퍼진다. 매너모드로 하고 있었을텐데……도대체, 누구일까?", - "갑작스런 기계음에 놀라 보면, 팩스가 종이를 뱉어내고 있다. 이런 시간에 무엇일까?", - "맛있을 것 같은 냄새가 풍겨오고, 갑자기 허기를 느낀다. 어디서 오는거야, 이 냄새는?", - "기분 전환으로 보고 있던 인터넷이 푹 빠져 문득 깨닫자 수 분 경과……안돼 안돼.", - "앞으로 배의 노를 저어, 번쩍 눈을 떴다. 황급히 시계를 보고……엣, 벌써 이런 시간이야!?", - ] - return get_table_by_2d6(table) - end - - # 회사명 결정표1 - def get_corporatenameone_table - table = [ - "플라잉", - "트러블", - "브래드", - "프리티", - "크림슨", - "범인", - ] - - return get_table_by_1d6(table) - end - - # 회사명 결정표2 - def get_corporatenametwo_table - table = [ - "위치-즈", - "인텔리전스", - "고양이", - "새", - "공포", - "인세인", - ] - - return get_table_by_1d6(table) - end - - # 회사명 결정표3 - def get_corporatenamethree_table - table = [ - "(주)", - "(주)", - "(주)", - "(유)", - "(유)", - "(유)", - ] - - return get_table_by_1d6(table) - end - - # 반응표 - def get_reaction_scene_table - table = [ - "「잠시 이쪽으로 와주시겠습니까。」\n 갑자기 체포, 구속당한다. 「반응표」를 사용했던캐릭터는, 이 씬이 종료되고 나서, 2씬 동안, 자신이 씬 플레이어가 아닌 씬에 등장할 수 없게 된다.(마스터 씬에는 등장 가능)", - "「내가 협력할 수 있는 건, 여기까지다。」\n 협력을 구했던 인물은, 겁을 먹은 듯한 모습으로 손에 든 꾸러미를 당신에게 건네주었다. 「반응표」를 사용했던 캐릭터는, 원하는 아이템 1개를 획득한다.", - "「그 건은 수사 중입니다. 정보제공 감사합니다。」\n 협력을 구했던 인물은, 생글생글 웃으며 그렇게 대답한다. 무엇을 물어봐도, 똑 같은 대답만 되돌아온다. 「반응표」를 사용했던 캐릭터는, 【정신력】을 1점 감소시킨다.", - "「혹시 자네, 그 사건의 관계자인가……?」\n 아무래도 협력을 구했던 인물도, 마침 같은 사건을 조사하고 있었던 듯하다. 여러 가지 정보를 제공해 줄 것 같다. 「반응표」를 사용했던 캐릭터는, 이후, 조사판정을 할 때 +1의 수정이 붙는다.", - "「꿈이라도 꾼 것 아닙니까?」\n 아무리 강하게 호소해도 믿어주지 않는다. ……혹시, 이상한 건 내 쪽이란 건가? 감정의 특기분야에서 랜덤으로 특기를 1개 골라 공포판정을 행한다.", - "「네네, 우리들도 한가하지 않다구요。」\n 여러 가지를 이야기해도 상대조차 해주지 않는다. 문전박대를 당한다.", - "「잠시 신체검사를 해도 괜찮겠습니까?」\n 수상한 인물로 여겨진 것 같다. 「반응표」를사용했던 캐릭터가, 아이템이나 위법인 듯한 프라이즈를 가지고 있었을 경우, 이 씬이 종료되고 나서 2씬 동안, 자신이 씬 플레이어가 아닌 씬에 등장할 수 없게 된다.(마스터 씬에서는 등장 가능)", - "「그건 신경쓰이는군요. 이쪽에서도 조사해보도록하죠。」\n 자기 일처럼 상담에 응해준다. 뭔가 알게되면 연락해주겠다고 말하지만……. 1D6을 굴린다. 홀수라면, 2씬 후에 정보를 건네준다. 「반응표」를 사용했던 캐릭터는, 원하는 【비밀】 1개를 획득한다. 짝수라면, 조사하고 있던 NPC가 의문사 당한다. 「반응표」를 사용했던 캐릭터는, 지식의 특기분야에서 랜덤으로 특기 1개를 골라 공포판정을 한다.", - "「목숨이 아깝다면 이 이상 관여하지마。」\n 당신은 인기척도 없는 곳으로 끌려가, 구타를 당했다. 협력을 구했던 인물은, 도움을 청했을 터인 당신을 강하게 거부했다. 「반응표」를 사용했던 캐릭터는 【생명력】을 1점 감소시킨다.", - "「알겠습니다. 만일을 위해 패트롤을 강화하도록 하죠。」\n 주변의 경호를 약속해준다. 「반응표」를 사용했던 캐릭터는, 이 세션 동안, 한 번은 자신이 입었던 데미지를 무효화 시킬 수 있다. 데미지를 무효화 했을 경우, 「반응표」를 사용했던 캐릭터는, 폭력의 특기분야에서 랜덤으로 특기 1개를 골라 공포판정을 한다.", - "「……뭐야 이녀석!?」\n 도움을 구했던 상대가 갑자기 사망한다. 놈들의 손길이, 이런 곳까지 미치고 있는걸까? 「반응표」를 사용했던 캐릭터는, 폭력의 특기분야에서 랜덤으로 특기 1개를 골라 공포판정을 한다.", - ] - return get_table_by_2d6(table) - end -end diff --git a/src/src_bcdice/diceBot/IthaWenUa.rb b/src/src_bcdice/diceBot/IthaWenUa.rb deleted file mode 100644 index da10b84e0..000000000 --- a/src/src_bcdice/diceBot/IthaWenUa.rb +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class IthaWenUa < DiceBot - # ゲームシステムの識別子 - ID = 'IthaWenUa' - - # ゲームシステム名 - NAME = 'イサー・ウェン=アー' - - # ゲームシステム名の読みがな - SORT_KEY = 'いさあうえんああ' - - # ダイスボットの使い方 - HELP_MESSAGE = "1D100<=m 方式の判定で成否、クリティカル(01)・ファンブル(00)を自動判定します。\n" - - def check_1D100(total, _dice_total, cmp_op, target) - return '' if target == '?' - return '' unless cmp_op == :<= - - diceValue = total % 100 - dice0 = (diceValue / 10).floor # 10の位を代入 # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - dice1 = diceValue % 10 # 1の位を代入 - - if (dice0 == 0) && (dice1 == 1) - ' > 01 > クリティカル' - elsif (dice0 == 0) && (dice1 == 0) - ' > 00 > ファンブル' - elsif total <= target - ' > 成功' - else - ' > 失敗' - end - end -end diff --git a/src/src_bcdice/diceBot/JamesBond.rb b/src/src_bcdice/diceBot/JamesBond.rb deleted file mode 100644 index 48b412010..000000000 --- a/src/src_bcdice/diceBot/JamesBond.rb +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class JamesBond < DiceBot - # ゲームシステムの識別子 - ID = 'JamesBond' - - # ゲームシステム名 - NAME = 'ジェームズ・ボンド007' - - # ゲームシステム名の読みがな - SORT_KEY = 'しええむすほんと007' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 100 - # 100は常に失敗 - " > 失敗" - elsif total <= base - " > 効果1(完璧)" - elsif total <= base * 2 - " > 効果2(かなり良い)" - elsif total <= base * 5 - " > 効果3(良)" - elsif total <= target - " > 効果4(まあまあ)" - else - " > 失敗" - end - end -end diff --git a/src/src_bcdice/diceBot/Kamigakari.rb b/src/src_bcdice/diceBot/Kamigakari.rb deleted file mode 100644 index 7499fdc4e..000000000 --- a/src/src_bcdice/diceBot/Kamigakari.rb +++ /dev/null @@ -1,396 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Kamigakari < DiceBot - # ゲームシステムの識別子 - ID = 'Kamigakari' - - # ゲームシステム名 - NAME = '神我狩' - - # ゲームシステム名の読みがな - SORT_KEY = 'かみかかり' - - # ダイスボットの使い方 - HELP_MESSAGE = < 9 - rankTable = get_table_by_number(rank, table) - power, number = get_table_by_1d6(rankTable) - - return power, number - end - - def getMaterialEffectRare() - table = [[3, '**付与'], - [5, '**半減'], - [6, '※GMの任意'],] - - number, = roll(1, 6) - result = get_table_by_number(number, table) - debug('getMaterialEffectRare result', result) - - if /\*\*/ === result - attribute, number2 = getAttribute() - result = result.sub(/\*\*/, attribute.to_s) - number = "#{number},#{number2}" - end - - return result, number - end - - def getAttribute() - table = [ - [21, '[火炎]'], - [33, '[冷気]'], - [43, '[電撃]'], - [53, '[風圧]'], - [56, '[幻覚]'], - [62, '[魔毒]'], - [64, '[磁力]'], - [66, '[閃光]'], - ] - - isSwap = false - number = bcdice.getD66(isSwap) - - result = get_table_by_number(number, table) - - return result, number - end - - def getPrice(effect) - power = 0 - - case effect - when /\+(\d+)/ - power = Regexp.last_match(1).to_i - when /付与/ - power = 3 - when /半減/ - power = 4 - else - power = 0 - end - - table = [nil, - '500G(効果値:1)', - '1000G(効果値:2)', - '1500G(効果値:3)', - '2000G(効果値:4)', - '3000G(効果値:5)',] - price = table[power] - - return price - end - - TABLES = - { - - 'ET' => { - :name => "感情表", - :type => 'd66', - :table => <<'TABLE_TEXT_END' -11:運命/そのキャラクターに、運命的、あるいは宿命的なものを感じている。 -12:運命/そのキャラクターに、運命的、あるいは宿命的なものを感じている。 -13:家族/そのキャラクターに、家族のような親近感をいだいている。 -14:家族/そのキャラクターに、家族のような親近感をいだいている。 -15:腐れ縁/そのキャラクターに、腐れ縁を感じている。 -16:腐れ縁/そのキャラクターに、腐れ縁を感じている。 -21:師弟/そのキャラクターとは、まるで師弟のような関係だと感じている。どちらが弟子で、どちらが師匠かは相談して決定する。 -22:師弟/そのキャラクターとは、まるで師弟のような関係だと感じている。どちらが弟子で、どちらが師匠かは相談して決定する。 -23:好敵手/そのキャラクターを、好敵手だと感じている。 -24:好敵手/そのキャラクターを、好敵手だと感じている。 -25:親近感/そのキャラクターに、親近感をいだいている。 -26:親近感/そのキャラクターに、親近感をいだいている。 -31:誠意/そのキャラクターに、誠実さを感じている。 -32:誠意/そのキャラクターに、誠実さを感じている。 -33:友情/そのキャラクターに、友情をいだいている。 -34:友情/そのキャラクターに、友情をいだいている。 -35:尊敬/そのキャラクターに、尊敬をいだいている。 -36:尊敬/そのキャラクターに、尊敬をいだいている。 -41:庇護/そのキャラクターに、庇護の感情をいだいている。どちらが保護者で、どちらが被保護者かは相談して決定する。 -42:庇護/そのキャラクターに、庇護の感情をいだいている。どちらが保護者で、どちらが被保護者かは相談して決定する。 -43:好感/そのキャラクターに、好感をいだいている。 -44:好感/そのキャラクターに、好感をいだいている。 -45:興味/そのキャラクターに、興味をいだいている。 -46:興味/そのキャラクターに、興味をいだいている。 -51:感銘/そのキャラクターに、感銘をいだいている。 -52:感銘/そのキャラクターに、感銘をいだいている。 -53:畏怖/そのキャラクターに、畏怖をいだいている。 -54:畏怖/そのキャラクターに、畏怖をいだいている。 -55:お気に入り/そのキャラクターを、気に入っている。 -56:お気に入り/そのキャラクターを、気に入っている。 -61:愛情/そのキャラクターに愛情、またはそれに近い執着心をいだいている。 -62:愛情/そのキャラクターに愛情、またはそれに近い執着心をいだいている。 -63:信頼/そのキャラクターに、信頼を感じている。 -64:信頼/そのキャラクターに、信頼を感じている。 -65:*PCの任意/プレイヤー、またはGMが設定した任意の感情をいだいている。 -66:*PCの任意/プレイヤー、またはGMが設定した任意の感情をいだいている。 -TABLE_TEXT_END - }, - - 'KT' => { - :name => "魔境臨界表", - :type => 'd66', - :table => <<'TABLE_TEXT_END' -11:時空の捻じれ\n現在地の時空が捻じれ、PC全員は即時に[侵入エリア]へと戻る。 -12:時空の捻じれ\n現在地の時空が捻じれ、PC全員は即時に[侵入エリア]へと戻る。 -13:強敵登場\n突如、<崇り神>化した[モノノケ]が出撃する。GMは、PCの[世界干渉LV]の平均+3の[LV]を持つ任意の[モノノケ]を1体選び任意の[探索エリア]に配置。そこでは[迂回]不可で[戦闘]が発生する。 -14:強敵登場\n突如、<崇り神>化した[モノノケ]が出撃する。GMは、PCの[世界干渉LV]の平均+3の[LV]を持つ任意の[モノノケ]を1体選び任意の[探索エリア]に配置。そこでは[迂回]不可で[戦闘]が発生する。 -15:影の手\n瘴気で形成された無数の手がPC達を握りつぶそうとする。PC全員は[効果種別:魔法攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:20+PCの[世界干渉LV]の平均/魔法ダメージ:20×PCの[世界干渉LV]の平均/抵抗[半減]]を受ける。 -16:影の手\n瘴気で形成された無数の手がPC達を握りつぶそうとする。PC全員は[効果種別:魔法攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:20+PCの[世界干渉LV]の平均/魔法ダメージ:20×PCの[世界干渉LV]の平均/抵抗[半減]]を受ける。 -21:無数の邪眼\n空間全体に恐ろしい邪眼が出現する。PC全員は、[大休止]するまで[状態変化:暗闇・苦痛]となる。 -22:無数の邪眼\n空間全体に恐ろしい邪眼が出現する。PC全員は、[大休止]するまで[状態変化:暗闇・苦痛]となる。 -23:空間崩壊\n突如として、魔境の空間が崩壊する。PC全員は[効果種別:物理攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:30+PCの[世界干渉LV]の平均/物理ダメージ:30×PCの[世界干渉LV]の平均]]を受ける。 -24:空間崩壊\n突如として、魔境の空間が崩壊する。PC全員は[効果種別:物理攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:30+PCの[世界干渉LV]の平均/物理ダメージ:30×PCの[世界干渉LV]の平均]]を受ける。 -25:防具腐食\n周辺から異様な霧が立ち込め、防具を腐食する。PC全員は、[所持・装備]中の任意の[アイテム:防具]1つを失う。 -26:防具腐食\n周辺から異様な霧が立ち込め、防具を腐食する。PC全員は、[所持・装備]中の任意の[アイテム:防具]1つを失う。 -31:素材消失\n周囲から異様な光が零れ、所持中の[素材]を消失させる。PC全員が[所持]中の[素材]が、すべて消滅する。 -32:素材消失\n周囲から異様な光が零れ、所持中の[素材]を消失させる。PC全員が[所持]中の[素材]が、すべて消滅する。 -33:なし\n特に何も起こらない。 -34:なし\n特に何も起こらない。 -35:モノノケ強襲\n突如として<崇り神>化した[モノノケ]が出現し、PCたちに襲いかかる。GMはPCの[世界干渉LV]の平均+2の[LV]を持つ任意の[モノノケ]を2体選び、PC達の前に出現させ、即座に[戦闘]を開始する。 -36:モノノケ強襲\n突如として<崇り神>化した[モノノケ]が出現し、PCたちに襲いかかる。GMはPCの[世界干渉LV]の平均+2の[LV]を持つ任意の[モノノケ]を2体選び、PC達の前に出現させ、即座に[戦闘]を開始する。 -41:休息妨害\nPCが休息しようとするたびに、さまざまな空間から、触手や毒蠱などが出現して襲いかかってくる。PCたちは以降、[魔境討伐]が終了するまで[大休止]を行えない。 -42:休息妨害\nPCが休息しようとするたびに、さまざまな空間から、触手や毒蠱などが出現して襲いかかってくる。PCたちは以降、[魔境討伐]が終了するまで[大休止]を行えない。 -43:龍脈破壊\n霊力が暴走して空間が歪み、[霊力]が狂う。PC全員は即座に[霊力]をすべて振り直す。 -44:龍脈破壊\n霊力が暴走して空間が歪み、[霊力]が狂う。PC全員は即座に[霊力]をすべて振り直す。 -45:固有時間停止\nPCたちの肉体の一部が灰色と化し、動かなくなる。PC全員は[タイミング:準備・防御・特殊]から1つ選び、以後その[タイミング]を消費できなくなる。 -46:固有時間停止\nPCたちの肉体の一部が灰色と化し、動かなくなる。PC全員は[タイミング:準備・防御・特殊]から1つ選び、以後その[タイミング]を消費できなくなる。 -51:龍脈不順\n霊力が突如として混濁し、[霊力]の循環に悪影響が発生する。PC全員は以後、[魔境討伐]が終了するまで[霊力操作]が行えない。 -52:龍脈不順\n霊力が突如として混濁し、[霊力]の循環に悪影響が発生する。PC全員は以後、[魔境討伐]が終了するまで[霊力操作]が行えない。 -53:術技封印\n周囲の空気が変貌し、悪影響が起こる。PC全員は以後、修得済みの《タレント》中、使用する[コスト]が最も多いもの1つが[魔境討伐]終了まで使用不能となる。[コスト:なし]ばかりの場合、GMが任意で1つを決定する。 -54:術技封印\n周囲の空気が変貌し、悪影響が起こる。PC全員は以後、修得済みの《タレント》中、使用する[コスト]が最も多いもの1つが[魔境討伐]終了まで使用不能となる。[コスト:なし]ばかりの場合、GMが任意で1つを決定する。 -55:装飾品消滅\n周囲が青い光に包まれると、なぜかPCたちの装飾品が失われている。PC全員は[所持・装備中]の[アイテム・装飾]をすべて失う。 -56:装飾品消滅\n周囲が青い光に包まれると、なぜかPCたちの装飾品が失われている。PC全員は[所持・装備中]の[アイテム・装飾]をすべて失う。 -61:愚者の黄金消失\n周囲が赤い光に包まれると、なぜかPCたちの[G]が失われている。PC全員は、[所持金]が[半減]する。 -62:愚者の黄金消失\n周囲が赤い光に包まれると、なぜかPCたちの[G]が失われている。PC全員は、[所持金]が[半減]する。 -63:GMの任意\nこの表のなかから、GMが効果を1つ選んで発生させる。 -64:GMの任意\nこの表のなかから、GMが効果を1つ選んで発生させる。 -65:臨界重複\n[魔境臨界]が2回発生する。GMはこの表を2回振り、効果をそれぞれ適応できる。再び「臨界重複」が発生した場合、[GMの任意]1回として扱う。 -66:臨界重複\n[魔境臨界]が2回発生する。GMはこの表を2回振り、効果をそれぞれ適応できる。再び「臨界重複」が発生した場合、[GMの任意]1回として扱う。 -TABLE_TEXT_END - }, - - 'NT' => { - :name => "伝奇名字・名前決定表", - :type => 'd66', - :table => <<'TABLE_TEXT_END' -11:御剣(みつるぎ) 陸/凛 -12:獅子内(ししうち) 大和/楓 -13:白銀(はくぎん) 隼人/桜 -14:竹内(たけのうち) 真/遥 -15:古太刀(こだち) 大地/美咲 -16:空閑(くが) 俊/真央 -21:鬼形(おにがた) 諒/舞 -22:御巫(みかんなぎ) 匠/七海 -23:護摩堂(ごまどう) 仁/千尋 -24:龍円(りゅうえん) 拓真/茜 -25:鏡部(かがみべ) 京/明日香 -26:犬神(いぬがみ) 剛/栞 -31:明月院(めいげついん) 葵/唯 -32:百目鬼(どうめき) 蓮也/萌 -33:恐神(おそがみ) 達也/綾香 -34:蘭(あららぎ) 龍之介/梓 -35:珠輝(たまき) 章/瞳 -36:眼龍(がんりゅう) 圭/沙織 -41:鉄砲塚(てっぽうづか) 雅人/沙良 -42:檻神(おりがみ) 直哉/弥生 -43:不死原(ふじわら) 純/千秋 -44:九郎座(くろうざ) 武蔵/春菜 -45:土御門(つちみかど) 亮介/翠 -46:十六夜(いざよい) 啓二/双葉 -51:転法輪(てんぽうりん) 英雄/麗菜 -52:執行(しぎょう) 響/小百合 -53:祝(ほうり) 良太郎/陽奈 -54:神尊(こうそ) 智/紫苑 -55:芦屋(あしや) 孝之/香澄 -56:七社(ななしゃ) 克己/風香 -61:騎馬(きば) 哲也/詩乃 -62:当麻(とうま) 玄/沙耶 -63:狐塚(きつねづか) 北斗/麻耶 -64:天神林(てんじんばやし) 空/晶 -65:明嵐(めあらし) 八雲/乙葉 -66:草壁(くさかべ) 大悟/文 -TABLE_TEXT_END - }, - }.freeze - - setPrefixes(['RT', 'MT(\d*)'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/Kamigakari_Korean.rb b/src/src_bcdice/diceBot/Kamigakari_Korean.rb deleted file mode 100644 index eddb03912..000000000 --- a/src/src_bcdice/diceBot/Kamigakari_Korean.rb +++ /dev/null @@ -1,429 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Kamigakari_Korean < DiceBot - # ゲームシステムの識別子 - ID = 'Kamigakari:Korean' - - # ゲームシステム名 - NAME = '카미가카리' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Korean:카미가카리' - - # ダイスボットの使い方 - HELP_MESSAGE = < command:", command) - return "" - end - - if result.empty? - return "" - end - - text = "#{tableName}(#{number}):#{result}" - return text - end - - def getReimonCompensationTableResult - tableName = "영문소비의 댓가표" - - table = [ - '사신화:물리법칙을 너무 초월한 대가로, 영혼이 왜곡되어, PC는 즉시 아라미타마로 변모한다. 아라미타마화한 PC는, 어딘가로 떠나간다.', - '존재소멸:아라미타마화를 최후의 힘으로 억누른다. 하지만 그 결과, PC의 영혼은 불타버려, 이 세계에서 소멸한다. 그 PC는 [상태변화: 사망]이 되어, 시체도 남지 않는다.', - '사망:영혼의 왜곡을 어떻게든 막지만, 영혼이 붕괴한다. PC는 [상태변화: 사망]이 되나 유체는 남는다.', - '영혼반괴:영혼의 왜곡을 막아냈지만, 영혼 자체에 치명적인 부상을 입어, 전신에 장해가 남는다. 거기에 동반하여 영문도 소실해, 일반인으로 돌아간다.', - '기억소멸:기적적으로, 영혼의 마모에 의한 신체적 악영향을 피한다. 시간을 두는 것으로 영문도 회복되나, 정신적인 영향을 받아, 모든 기억을 잃는다.', - '영향없음:기적적으로, 영혼의 마모에 의한 악영향을 완전히 피하고, 또한 영문의 회복도 빠를 것으로 보인다. 육체나 정신 모두, 딱히 영향은 없다.', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getEmotionTableResult - tableName = "감정표" - - table = [ - [11, '운명/그 캐릭터에게, 운명적, 또는 숙명적인 것을 느끼고 있다.'], - [12, '운명/그 캐릭터에게, 운명적, 또는 숙명적인 것을 느끼고 있다.'], - [13, '가족/그 캐릭터에게, 가족같은 친근감을 품고 있다.'], - [14, '가족/그 캐릭터에게, 가족같은 친근감을 품고 있다.'], - [15, '악연/그 캐릭터에게, 악연을 느끼고 있다.'], - [16, '악연/그 캐릭터에게, 악연을 느끼고 있다.'], - [21, '사제/그 캐릭터와는, 마치 사제지간의 감정을 느끼고 있다. 누가 제자고 누가 스승인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'], - [22, '사제/그 캐릭터와는, 마치 사제지간의 감정을 느끼고 있다. 누가 제자고 누가 스승인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'], - [23, '호적수/그 캐릭터를, 호적수라 여기고 있다.'], - [24, '호적수/그 캐릭터를, 호적수라 여기고 있다.'], - [25, '친근감/그 캐릭터에게, 친근감을 품고 있다.'], - [26, '친근감/그 캐릭터에게, 친근감을 품고 있다.'], - [31, '성의/그 캐릭터에게, 성실함을 느끼고 있다.'], - [32, '성의/그 캐릭터에게, 성실함을 느끼고 있다.'], - [33, '우정/그 캐릭터에게, 우정을 품고 있다.'], - [34, '우정/그 캐릭터에게, 우정을 품고 있다.'], - [35, '존경/그 캐릭터에게, 존경을 품고 있다.'], - [36, '존경/그 캐릭터에게, 존경을 품고 있다.'], - [41, '비호/그 캐릭터에게, 비호의 감정을 품고 있다. 누가 보호자고 누가 피보호자인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'], - [42, '비호/그 캐릭터에게, 비호의 감정을 품고 있다. 누가 보호자고 누가 피보호자인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'], - [43, '호감/그 캐릭터에게, 호감을 품고 있다.'], - [44, '호감/그 캐릭터에게, 호감을 품고 있다.'], - [45, '흥미/그 캐릭터에게, 흥미를 품고 있다.'], - [46, '흥미/그 캐릭터에게, 흥미를 품고 있다.'], - [51, '감명/그 캐릭터에게, 감명을 느끼고 있다.'], - [52, '감명/그 캐릭터에게, 감명을 느끼고 있다.'], - [53, '외경/그 캐릭터를 두려워하고 있다.'], - [54, '외경/그 캐릭터를 두려워하고 있다.'], - [55, '마음에 듬/그 캐릭터를 마음에 들어한다.'], - [56, '마음에 듬/그 캐릭터를 마음에 들어한다.'], - [61, '애정/그 캐릭터에게 애정, 또는 거기에 가까운 집착심을 품고 있다.'], - [62, '애정/그 캐릭터에게 애정, 또는 거기에 가까운 집착심을 품고 있다.'], - [63, '신뢰/그 캐릭터에게 신뢰를 느끼고 있다.'], - [64, '신뢰/그 캐릭터에게 신뢰를 느끼고 있다.'], - [65, '*PC의 임의/플레이어, 또는 GM이 설정한 임의의 감정을 품고 있다.'], - [66, '*PC의 임의/플레이어, 또는 GM이 설정한 임의의 감정을 품고 있다.'], - ] - - isSwap = false - number = bcdice.getD66(isSwap) - - result = get_table_by_number(number, table) - - return tableName, result, number - end - - def getNameTableResult - tableName = "전기 성씨・이름 결정표" - - table = [ - [11, '미츠루기(御剣) 리쿠/린'], - [12, '시시우치(獅子内) 야마토/카에데'], - [13, '하쿠긴(白銀) 하야토/사쿠라'], - [14, '타케노우치(竹内) 마코토/하루카'], - [15, '코다치(古太刀) 다이치/미사'], - [16, '쿠가(空閑) 슌/마오'], - [21, '오니가타(鬼形) 료/마이'], - [22, '미칸나기(御巫) 타쿠미/나나미'], - [23, '고마도우(護摩堂) 히토시/치히로'], - [24, '류엔(龍円) 타쿠마/아카네'], - [25, '카가미베(鏡部) 쿄우/아스카'], - [26, '이누가미(犬神) 코우/시오리'], - [31, '메이게츠인(明月院) 아오이/유이'], - [32, '도우메키(百目鬼) 렌야/모에'], - [33, '오소가미(怨神) 타츠야/아야카'], - [34, '아라라기(蘭) 류노스케/아즈사'], - [35, '타마키(珠輝) 아키라/히토미'], - [36, '간류(眼龍) 케이/사오리'], - [41, '텟포즈카(鉄砲塚) 마사토/사라'], - [42, '오리가미(檻神) 나오야/야요이'], - [43, '후지와라(不死原) 쥰/치아키'], - [44, '쿠로우자(九朗座) 무사시/하루나'], - [45, '츠치미카도(土御門) 쿄스케/스이'], - [46, '이자요이(十六夜) 케이지/후타바'], - [51, '텐포우린(転法輪) 히로/레나'], - [52, '시교우(執行) 히비키/사유리'], - [53, '호우리(祝) 료타로/히나'], - [54, '코우소(神尊) 토모/시온'], - [55, '아시야(芦屋) 타카유키/카스미'], - [56, '나나샤(七社) 카즈키/후카'], - [61, '키바(騎馬) 테츠야/시노'], - [62, '토우마(当麻) 켄/사야'], - [63, '키츠네즈카(狐塚) 호쿠토/마야'], - [64, '텐진바야시(天神林) 소라/아키라'], - [65, '메아라시(明嵐) 야쿠모/오토하'], - [66, '쿠사카베(草壁) 다이고/아야'], - ] - - isSwap = false - number = bcdice.getD66(isSwap) - - result = get_table_by_number(number, table) - - return tableName, result, number - end - - def getKyoukaiTableResult - tableName = "마경임계표" - - table = [ - [11, "시공의 비틀림\n현재 위치의 시공이 비틀려, PC전원은 즉시 [침입 에리어]로 돌아간다."], - [12, "시공의 비틀림\n현재 위치의 시공이 비틀려, PC전원은 즉시 [침입 에리어]로 돌아간다."], - [13, "강적등장\n갑자기, 〈재앙신〉화한 [모노노케]가 출현한다. GM은 PC의 [세계간섭LV]의 평균+3의 [LV]을 가진 임의의 [모노노케]를 1체 골라, 임의의 [탐색 에리어]에 배치. 거기서는 [우회]불가로 [전투]가 발생한다."], - [14, "강적등장\n갑자기, 〈재앙신〉화한 [모노노케]가 출현한다. GM은 PC의 [세계간섭LV]의 평균+3의 [LV]을 가진 임의의 [모노노케]를 1체 골라, 임의의 [탐색 에리어]에 배치. 거기서는 [우회]불가로 [전투]가 발생한다."], - [15, "그림자의 손\n장기로 형성된 무수한 손이, PC들을 붙잡으려고 한다. PC전원은 [효과종류: 마법공격/거리: 전투지대/대상: 전투지대/달성치: 20+PC의 [세계간섭LV]의 평균/마법 데미지: 20×PC의 [세계간섭LV]의 평균/저항[반감]]을 받는다."], - [16, "그림자의 손\n장기로 형성된 무수한 손이, PC들을 붙잡으려고 한다. PC전원은 [효과종류: 마법공격/거리: 전투지대/대상: 전투지대/달성치: 20+PC의 [세계간섭LV]의 평균/마법 데미지: 20×PC의 [세계간섭LV]의 평균/저항[반감]]을 받는다."], - [21, "무수한 마안\n공간 전체게 무시무시한 마안이 출현한다. PC전원은 [대휴식]할 때까지 [상태변화: 암흑·고통]이 된다."], - [22, "무수한 마안\n공간 전체게 무시무시한 마안이 출현한다. PC전원은 [대휴식]할 때까지 [상태변화: 암흑·고통]이 된다."], - [23, "공간붕괴\n갑자기, 마경의 공간이 붕괴한다. PC전원은 [효과종류: 물리공격/거리: 전투지대/대상: 전투지대/달성치: 30+PC의 [세계간섭LV]의 평균/물리 데미지: 30×PC의 [세계간섭LV]의 평균]을 받는다."], - [24, "공간붕괴\n갑자기, 마경의 공간이 붕괴한다. PC전원은 [효과종류: 물리공격/거리: 전투지대/대상: 전투지대/달성치: 30+PC의 [세계간섭LV]의 평균/물리 데미지: 30×PC의 [세계간섭LV]의 평균]을 받는다."], - [25, "방어구 부식\n이질적인 안개가 나타나, 방어구를 부식시킨다. PC전원은, [소지·장비]중인 임의의 [아이템: 방어구]를 1개 잃는다."], - [26, "방어구 부식\n이질적인 안개가 나타나, 방어구를 부식시킨다. PC전원은, [소지·장비]중인 임의의 [아이템: 방어구]를 1개 잃는다."], - [31, "소재소실\n주변에서 수상한 빛이 떨어져, 소지 중인 [소재]를 소실시킨다. PC 전원이 [소지]중인 [소재]가 전부 소멸한다."], - [32, "소재소실\n주변에서 수상한 빛이 떨어져, 소지 중인 [소재]를 소실시킨다. PC 전원이 [소지]중인 [소재]가 전부 소멸한다."], - [33, "없음\n딱히 아무 일도 일어나지 않는다."], - [34, "없음\n딱히 아무 일도 일어나지 않는다."], - [35, "모노노케 강습\n갑자기, 〈재앙신〉화한 [모노노케]가 출현해, PC들을 덮친다. GM은 PC의 [세계간섭LV]의 평균+2의 [LV]을 가진 임의의 [모노노케]를 2체 골라, PC의 앞에 출현시키고, 즉시 [전투]를 개시한다."], - [36, "모노노케 강습\n갑자기, 〈재앙신〉화한 [모노노케]가 출현해, PC들을 덮친다. GM은 PC의 [세계간섭LV]의 평균+2의 [LV]을 가진 임의의 [모노노케]를 2체 골라, PC의 앞에 출현시키고, 즉시 [전투]를 개시한다."], - [41, "휴식방해\nPC가 휴식하려고 할 때마다, 다양한 공간에서 촉수나 독충 등이 출현해 덮쳐든다. PC들은 이후, [마경토벌]이 종료될 때까지 [대휴식]을 할 수 없다."], - [42, "휴식방해\nPC가 휴식하려고 할 때마다, 다양한 공간에서 촉수나 독충 등이 출현해 덮쳐든다. PC들은 이후, [마경토벌]이 종료될 때까지 [대휴식]을 할 수 없다."], - [43, "용맥파괴\n영력이 폭주해 공간이 일그러져, [영력]이 어그러진다. PC전원은 즉시 [영력]을 모두 다시 굴린다."], - [44, "용맥파괴\n영력이 폭주해 공간이 일그러져, [영력]이 어그러진다. PC전원은 즉시 [영력]을 모두 다시 굴린다."], - [45, "고유시간정지\nPC들의 육체의 일부가 잿빛으로 변하고, 움직일 수 없게 된다. PC 전원은, [타이밍: 준비·방어·특수]에서 1개 골라, 이후 그 [타이밍]을 소비할 수 없게 된다."], - [46, "고유시간정지\nPC들의 육체의 일부가 잿빛으로 변하고, 움직일 수 없게 된다. PC 전원은, [타이밍: 준비·방어·특수]에서 1개 골라, 이후 그 [타이밍]을 소비할 수 없게 된다."], - [51, "용맥불순\n영력이 갑자기 고갈되어, [영력]의 순환에 악영향이 발생한다. PC전원은 이후, [마경토벌]이 종료될 때까지 [영력조작]을 할 수 없다."], - [52, "용맥불순\n영력이 갑자기 고갈되어, [영력]의 순환에 악영향이 발생한다. PC전원은 이후, [마경토벌]이 종료될 때까지 [영력조작]을 할 수 없다."], - [53, "술식봉인\n주변의 공기가 변모해, 악영향이 일어난다. PC전원은 이후, 취득한 《탤런트》중, 사용하는 [코스트]가 가장 큰 것 1개가 [마경토벌]종료까지 사용불능이 된다. [코스트: 없음]뿐일 경우, GM이 임의로 1개 결정한다."], - [54, "술식봉인\n주변의 공기가 변모해, 악영향이 일어난다. PC전원은 이후, 취득한 《탤런트》중, 사용하는 [코스트]가 가장 큰 것 1개가 [마경토벌]종료까지 사용불능이 된다. [코스트: 없음]뿐일 경우, GM이 임의로 1개 결정한다."], - [55, "장식품 소멸\n주변이 푸른 빛으로 감싸이고, 어째선지 PC들의 장식품이 사라진다. PC전원은, [소지·장비]중인 [아이템: 장식]을 모두 잃는다.。"], - [56, "장식품 소멸\n주변이 푸른 빛으로 감싸이고, 어째선지 PC들의 장식품이 사라진다. PC전원은, [소지·장비]중인 [아이템: 장식]을 모두 잃는다."], - [61, "우자의 황금 소실\n주변이 붉은 빛으로 감싸이고, 어째선지 PC들의 [G]가 사라진다. PC 전원은, [소지금]이 [반감]한다."], - [62, "우자의 황금 소실\n주변이 붉은 빛으로 감싸이고, 어째선지 PC들의 [G]가 사라진다. PC 전원은, [소지금]이 [반감]한다."], - [63, "GM의 임의\n이 표 중에서 GM이 효과를 1개 골라 발생시킨다."], - [64, "GM의 임의\n이 표 중에서 GM이 효과를 1개 골라 발생시킨다."], - [65, "임계중복\n[마경임계]가 2번 발생한다. GM은 이 표를 2번 굴려, 효과를 각각 적용할 수 있다. 다시 「임계중복」이 발생한 경우, [GM의 임의] 1번으로 취급한다."], - [66, "임계중복\n[마경임계]가 2번 발생한다. GM은 이 표를 2번 굴려, 효과를 각각 적용할 수 있다. 다시 「임계중복」이 발생한 경우, [GM의 임의] 1번으로 취급한다."], - ] - - isSwap = false - number = bcdice.getD66(isSwap) - - result = get_table_by_number(number, table) - - return tableName, result, number - end - - def getGetMaterialTableResult(rank) - tableName = "획득 소재 차트" - table = [ - '진홍의 ', - '까끌까끌한 ', - '비취의 ', - '예리한 ', - '황금의 ', - '말랑말랑한 ', - '은색의 ', - '뾰족한 ', - '순백의 ', - '딱딱한 ', - '칠흑의 ', - '빛나는 ', - '매끄러운 ', - '탁한 ', - '덥수룩한 ', - '사악한 ', - '끈적이는 ', - '성스러운 ', - '작열의 ', - '불꽃의 ', - '빙결의 ', - '얼음의 ', - '뜨거운 ', - '바람의 ', - '차가운 ', - '번개의 ', - '흙의 ', - '환상의 ', - '뼈형태의 ', - '봉인의 ', - '이빨형태의 ', - '비늘형태의 ', - '돌형태의 ', - '보석형태의 ', - '모피형태의 ', - '깃털형태의 ', - ] - - result, number = get_table_by_d66(table) - result += "단편" - - effect, number2 = getMaterialEffect(rank) - number = "#{number},#{number2}" - - price = getPrice(effect) - - result = "#{result}.#{effect}" - result += ":#{price}" unless price.nil? - - return tableName, result, number - end - - def getMaterialEffect(rank) - number, = roll(1, 6) - - result = "" - type = "" - if number < 6 - result, number2 = getMaterialEffectNomal(rank) - type = "자주 발견되는 소재" - else - result, number2 = getMaterialEffectRare() - type = "드문 소재" - end - - result = "#{type}:#{result}" - number = "#{number},#{number2}" - - return result, number - end - - def getMaterialEffectNomal(rank) - table = [ - [13, '체력+n'], - [16, '민첩+n'], - [23, '지성+n'], - [26, '정신+n'], - [33, '행운+n'], - [35, '물D+n'], - [41, '마D+n'], - [43, '행동+n'], - [46, '생명+n×3'], - [53, '장갑+n'], - [56, '결계+n'], - [63, '이동+n마스'], - [66, '※PC의 임의'], - ] - - isSwap = false - number = bcdice.getD66(isSwap) - - result = get_table_by_number(number, table) - debug("getMaterialEffectNomal result", result) - - if /\+n/ === result - power, number2 = getMaterialEffectPower(rank) - - result = result.sub(/\+n/, "+#{power}") - number = "#{number},#{number2}" - end - - return result, number - end - - def getMaterialEffectPower(rank) - table = [ - [ 4, [1, 1, 1, 2, 2, 3]], - [ 8, [1, 1, 2, 2, 3, 3]], - [ 9, [1, 2, 3, 3, 4, 5]], - ] - - rank = 9 if rank > 9 - rankTable = get_table_by_number(rank, table) - power, number = get_table_by_1d6(rankTable) - - return power, number - end - - def getMaterialEffectRare() - table = [[3, '**부여'], - [5, '**반감'], - [6, '※GM의 임의'],] - - number, = roll(1, 6) - result = get_table_by_number(number, table) - debug('getMaterialEffectRare result', result) - - if /\*\*/ === result - attribute, number2 = getAttribute() - result = result.sub(/\*\*/, attribute.to_s) - number = "#{number},#{number2}" - end - - return result, number - end - - def getAttribute() - table = [ - [21, '[화염]'], - [33, '[냉기]'], - [43, '[전격]'], - [53, '[풍압]'], - [56, '[환각]'], - [62, '[마독]'], - [64, '[자력]'], - [66, '[섬광]'], - ] - - isSwap = false - number = bcdice.getD66(isSwap) - - result = get_table_by_number(number, table) - - return result, number - end - - def getPrice(effect) - power = 0 - - case effect - when /\+(\d+)/ - power = Regexp.last_match(1).to_i - when /부여/ - power = 3 - when /반감/ - power = 4 - else - power = 0 - end - - table = [nil, - '500G(효과치:1)', - '1000G(효과치:2)', - '1500G(효과치:3)', - '2000G(효과치:4)', - '3000G(효과치:5)',] - price = table[power] - - return price - end -end diff --git a/src/src_bcdice/diceBot/KanColle.rb b/src/src_bcdice/diceBot/KanColle.rb deleted file mode 100644 index d7485296d..000000000 --- a/src/src_bcdice/diceBot/KanColle.rb +++ /dev/null @@ -1,935 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/table' - -class KanColle < DiceBot - # ゲームシステムの識別子 - ID = 'KanColle' - - # ゲームシステム名 - NAME = '艦これRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'かんこれRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <=7 : 行為判定。2D6して目標値7以上出れば成功。 -例) 2D6+2>=7 : 行為判定。2D6に修正+2をした上で目標値7以上になれば成功。 - -2D6での行為判定時は1ゾロでファンブル、6ゾロでスペシャル扱いになります。 -天龍ちゃんスペシャルは手動で判定してください。 - -・各種表 - ・感情表 ET/アクシデント表 ACT - ・日常イベント表 EVNT/交流イベント表 EVKT/遊びイベント表 EVAT -  演習イベント表 EVET/遠征イベント表 EVENT/作戦イベント表 EVST - ・ほのぼのイベント表 ETHT/航海イベント表 ETVT 外出イベント表 ETGT -  激戦イベント表 ETBT/任務イベント表 ETMT/恐怖イベント表 ETFT/侵攻効果表 ETIT - ・大規模部隊表 LSFT/艦隊敗北表 LFDT/艦隊勝利表 LFVT - ・開発表 DVT/開発表(一括)DVTM -   装備1種表 WP1T/装備2種表 WP2T/装備3種表 WP3T/装備4種表 WP4T - ・アイテム表 ITT/目標表 MHT/戦果表 SNT/特殊戦果表 SPSNT - ・ランダム個性選択:一括 KTM/分野 BT -   背景 KHT/魅力 KMT/性格 KST/趣味 KSYT/航海 KKT/戦闘 KSNT - ・戦場表 SNZ 暴走表/RNT - ・特殊開発表 WPMC (燃料6/弾薬3/鋼材6/ボーキ3) - ・新・特殊開発表 WPMCN - ・艦載機関開発表 WPFA (燃料3/弾薬6/鋼材3/ボーキ6) - ・砲類開発表 WPCN (燃料3/弾薬6/鋼材6/ボーキ3) - ・敵深海棲艦の装備決定 BT2~BT12 -・D66ダイス(D66S相当=低い方が10の桁になる) -INFO_MESSAGE_TEXT - - def initialize - super - @sendMode = 2 - @sortType = 3 - @d66Type = 2 - end - - def check_2D6(total, dice_total, _dice_list, cmp_op, target) - return '' if target == '?' - return '' unless cmp_op == :>= - - if dice_total <= 2 - " > ファンブル(判定失敗。アクシデント表を自分のPCに適用)" - elsif dice_total >= 12 - " > スペシャル(判定成功。【行動力】が1D6点回復)" - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - def rollDiceCommand(command) - output = '1' - type = "" - total_n = "" - - case command - when 'DVT' - type = '開発表' - output, total_n = get_develop_table - when 'DVTM' - type = '開発表(一括)' - output, total_n = get_develop_matome_table - when 'WP1T' - type = '装備1種表' - output, total_n = get_weapon1_table - when 'WP2T' - type = '装備2種表' - output, total_n = get_weapon2_table - when 'WP3T' - type = '装備3種表' - output, total_n = get_weapon3_table - when 'WP4T' - type = '装備4種表' - output, total_n = get_weapon4_table - when 'KTM' - type = '個性:一括' - output, total_n = get_kosei_table - when 'BT' - type = '個性:分野表' - output, total_n = get_bunya_table - when 'KHT' - type = '個性:背景表' - output, total_n = get_kosei_haikei_table - when 'KMT' - type = '個性:魅力表' - output, total_n = get_kosei_miryoku_table - when 'KST' - type = '個性:性格表' - output, total_n = get_kosei_seikaku_table - when 'KSYT' - type = '個性:趣味表' - output, total_n = get_kosei_syumi_table - when 'KKT' - type = '個性:航海表' - output, total_n = get_kosei_koukai_table - when 'KSNT' - type = '個性:戦闘表' - output, total_n = get_kosei_sentou_table - else - return roll_tables(command, TABLES) - end - - return "#{type}(#{total_n}) > #{output}" - end - - def get_develop_table - table = [ - '装備1種表(WP1T)', - '装備1種表(WP1T)', - '装備2種表(WP2T)', - '装備2種表(WP2T)', - '装備3種表(WP3T)', - '装備4種表(WP4T)', - ] - return get_table_by_1d6(table) - end - - def get_develop_matome_table - output1 = '' - output2 = '' - total_n2 = "" - - dice, = roll(1, 6) - - case dice - when 1 - output1 = '装備1種表' - output2, total_n2 = get_weapon1_table - when 2 - output1 = '装備1種表' - output2, total_n2 = get_weapon1_table - when 3 - output1 = '装備2種表' - output2, total_n2 = get_weapon2_table - when 4 - output1 = '装備2種表' - output2, total_n2 = get_weapon2_table - when 5 - output1 = '装備3種表' - output2, total_n2 = get_weapon3_table - when 6 - output1 = '装備4種表' - output2, total_n2 = get_weapon4_table - end - result = "#{output1}:#{output2}" - number = "#{dice},#{total_n2}" - return result, number - end - - def get_weapon1_table - table = [ - '小口径主砲(P249)', - '10cm連装高角砲(P249)', - '中口径主砲(P249)', - '15.2cm連装砲(P249)', - '20.3cm連装砲(P249)', - '魚雷(P252)', - ] - return get_table_by_1d6(table) - end - - def get_weapon2_table - table = [ - '副砲(P250)', - '8cm高角砲(P250)', - '大口径主砲(P249)', - '41cm連装砲(P250)', - '46cm三連装砲(P250)', - '機銃(P252)', - ] - return get_table_by_1d6(table) - end - - def get_weapon3_table - table = [ - '艦上爆撃機(P250)', - '艦上攻撃機(P251)', - '艦上戦闘機(P251)', - '偵察機(P251)', - '電探(P252)', - '25mm連装機銃(P252)', - ] - return get_table_by_1d6(table) - end - - def get_weapon4_table - table = [ - '彗星(P250)', - '天山(P251)', - '零式艦戦52型(P251)', - '彩雲(P251)', - '61cm四連装(酸素)魚雷(P252)', - '改良型艦本式タービン(P252)', - ] - return get_table_by_1d6(table) - end - - def get_kosei_table - output1 = '' - output2 = '' - total_n2 = "" - - output1, total_n1 = get_bunya_table - - case total_n1 - when 1 - output2, total_n2 = get_kosei_haikei_table - when 2 - output2, total_n2 = get_kosei_miryoku_table - when 3 - output2, total_n2 = get_kosei_seikaku_table - when 4 - output2, total_n2 = get_kosei_syumi_table - when 5 - output2, total_n2 = get_kosei_koukai_table - when 6 - output2, total_n2 = get_kosei_sentou_table - end - result = "《#{output2}/#{output1}#{total_n2}》" - number = "#{total_n1},#{total_n2}" - return result, number - end - - def get_bunya_table - table = [ - '背景', - '魅力', - '性格', - '趣味', - '航海', - '戦闘', - ] - return get_table_by_1d6(table) - end - - def get_kosei_haikei_table - table = [ - '人脈', - '名声', - '暗い過去', - '古風', - '口ぐせ', - '幸運', - 'アイドル', - '秘密兵器', - 'お嬢様', - 'スタイル', - '外国暮らし', - ] - return get_table_by_2d6(table) - end - - def get_kosei_miryoku_table - table = [ - '素直', - 'クール', - '優しい', - 'おしとやか', - 'けなげ', - '笑顔', - 'ばか', - 'さわやか', - '面白い', - 'えっち', - '派手', - ] - return get_table_by_2d6(table) - end - - def get_kosei_seikaku_table - table = [ - '不思議', - 'おおらか', - '面倒見', - 'マジメ', - '負けず嫌い', - '元気', - '楽観的', - '丁寧', - 'いじわる', - '自由奔放', - '大胆', - ] - return get_table_by_2d6(table) - end - - def get_kosei_syumi_table - table = [ - '寝る', - '空想', - '生き物', - '読書', - '食べ物', - 'おしゃべり', - '買い物', - '芸能', - 'おしゃれ', - '入浴', - '恋愛', - ] - return get_table_by_2d6(table) - end - - def get_kosei_koukai_table - table = [ - '暗号', - '通信', - '索敵', - '規律', - '補給', - '待機', - '機動', - '海図', - '指揮', - '衛生', - '整備', - ] - return get_table_by_2d6(table) - end - - def get_kosei_sentou_table - table = [ - '電子戦', - '航空打撃戦', - '航空戦', - '対空戦闘', - '突撃', - '砲撃', - '退却', - '支援', - '魚雷', - '対潜戦闘', - '夜戦', - ] - return get_table_by_2d6(table) - end - - TABLES = { - "ET" => Table.new( - "感情表", - "1D6", - [ - "かわいい(プラス)/むかつく(マイナス)", - "すごい(プラス)/ざんねん(マイナス)", - "たのしい(プラス)/こわい(マイナス)", - "かっこいい(プラス)/しんぱい(マイナス)", - "いとしい(プラス)/かまってほしい(マイナス)", - "だいすき(プラス)/だいっきらい(マイナス)", - ] - ), - "ACT" => Table.new( - "アクシデント表", - "1D6", - [ - "よかったぁ。何もなし。", - "意外な手応え。その判定に使った個性の属性(【長所】と【弱点】)が反対になる。自分が判定を行うとき以外はこの効果は無視する。", - "えーん。大失態。このキャラクターに対して【感情値】を持っているキャラクター全員の声援欄にチェックが入る。", - "奇妙な猫がまとわりつく。サイクルの終了時、もしくは、艦隊戦の終了時まで、自分の行う行為判定にマイナス1の修正がつく(この効果は、マイナス2まで累積する)。", - "いててて。損傷が一つ発生する。もしも艦隊戦中なら、自分と同じ航行序列にいる味方艦にも損傷が一つ発生する。", - "ううう。やりすぎちゃった!自分の【行動力】が1D6点減少する。", - ] - ), - "EVNT" => Table.new( - "日常イベント表", - "2D6", - [ - "何もない日々:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は、《待機/航海7》で判定。(着任p220)", - "ティータイム:《外国暮らし/背景12》で判定。(着任p220)", - "釣り:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《おおらか/性格3》で判定。(着任p220)", - "お昼寝:《寝る/趣味2》で判定。(着任p220)", - "綺麗におそうじ!:《衛生/航海11》で判定。(着任p220)", - "海軍カレー:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《食べ物/趣味6》で判定。(着任p220)", - "銀蝿/ギンバイ:《規律/航海5》で判定。(着任p220)", - "日々の訓練:《素直/魅力2》で判定。(着任p220)", - "取材:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《名声/背景3》で判定。(着任p220)", - "海水浴:《突撃/戦闘6》で判定。(着任p220)", - "マイブーム:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《口ぐせ/背景6》で判定。(着任p220)", - ] - ), - "EVKT" => Table.new( - "交流イベント表", - "2D6", - [ - "一触即発!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《笑顔/魅力7》で判定。(着任p221)", - "手取り足取り:自分以外の好きなPC1人を選んで、《えっち/魅力11》で判定。(着任p221)", - "恋は戦争:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《恋愛/趣味12》で判定。(着任p221)", - "マッサージ:自分以外の好きなPC1人を選んで、《けなげ/魅力6》で判定。(着任p221)", - "裸のつきあい:《入浴/趣味11》で判定。(着任p221)", - "深夜のガールズトーク:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《おしゃべり/趣味7》で判定。(着任p221)", - "いいまちがえ:《ばか/魅力8》で判定。(着任p221)", - "小言百より慈愛の一語:自分以外の好きなPC1人を選んで、《面倒見/性格4》で判定。(着任p221)", - "差し入れ:自分以外の好きなPC1人を選んで、提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《優しい/魅力4》で判定。(着任p221)", - "お手紙:自分以外の好きなPC1人を選んで、《古風/背景5》で判定。(着任p221)", - "昔語り:自分以外の好きなPC1人を選んで、提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《暗い過去/背景4》で判定。(着任p221)", - ] - ), - "EVAT" => Table.new( - "遊びイベント表", - "2D6", - [ - "遊びのつもりが……:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《さわやか/魅力9》で判定。(着任p222)", - "新しい遊びの開発:《空想/趣味3》で判定。(着任p222)", - "宴会:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《元気/性格7》で判定。(着任p222)", - "街をぶらつく:《面白い/魅力10》で判定。(着任p222)", - "ガールズコーデ:《おしゃれ/趣味10》で判定。(着任p222)", - "○○大会開催!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《大胆/性格12》で判定。(着任p222)", - "チェス勝負:自分以外の好きなPC1人を選んで、《クール/魅力3》で判定。(着任p222)", - "熱唱カラオケ大会:《芸能/趣味9》で判定。(着任p222)", - "アイドルコンサート:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《アイドル/背景8》で判定。(着任p222)", - "スタイル自慢!:《スタイル/背景11》で判定。(着任p222)", - "ちゃんと面倒みるから!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《生き物/趣味4》で判定。(着任p222)", - ] - ), - "EVET" => Table.new( - "演習イベント表", - "2D6", - [ - "大げんか!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《負けず嫌い/性格6》で判定。(着任p223)", - "雷撃演習:《魚雷/戦闘10》で判定。(着任p223)", - "座学の講義:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《マジメ/性格5》で判定。(着任p223)", - "速力演習:《機動/航海8》で判定。(着任p223)", - "救援演習:《支援/戦闘9》で判定。シーンプレイヤーのPCは、経験点を10点獲得する。残念:PC全員の【行動力】が1D6点減少する。(着任p223)", - "砲撃演習:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《砲撃/戦闘7》で判定。(着任p223)", - "艦隊戦演習:《派手/魅力12》で判定。(着任p223)", - "整備演習:《整備/航海12》で判定。(着任p223)", - "夜戦演習:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《夜戦/戦闘12》で判定。(着任p223)", - "開発演習:《秘密兵器/背景9》で判定。(着任p223)", - "防空射撃演習:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《対空戦闘/戦闘5》で判定。(着任p223)", - ] - ), - "EVENT" => Table.new( - "遠征イベント表", - "2D6", - [ - "謎の深海棲艦:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《退却/戦闘8》で判定。(着任p224)", - "資源輸送任務:《買い物/趣味8》で判定。(着任p224)", - "強行偵察任務:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《索敵/航海4》で判定。(着任p224)", - "航空機輸送作戦:《航空戦/戦闘4》で判定。(着任p224)", - "タンカー護衛任務:《丁寧/性格9》で判定。(着任p224)", - "海上護衛任務:提督が選んだ(キーワード)に対応した指定能力で判定。思いつかない場合は《不思議/性格2》で判定。(着任p224)", - "観艦式:《おしとやか/魅力5》で判定。(着任p224)", - "ボーキサイト輸送任務:《補給/航海6》で判定。(着任p224)", - "社交界デビュー?:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《お嬢様/背景10》で判定。(着任p224)", - "対潜警戒任務:《対潜戦闘/戦闘11》で判定。(着任p224)", - "大規模遠征作戦、発令!:提督の選んだ(キーワード)に対応した指定能力値で判定。思いつかな場合は《指揮/航海10》で判定。(着任p224)", - ] - ), - "EVST" => Table.new( - "作戦イベント表", - "2D6", - [ - "電子の目:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《電子戦/戦闘2》で判定。(着任p225)", - "直掩部隊:《航空戦/戦闘4》で判定。(着任p225)", - "噂によれば:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《通信/航海3》で判定。(着任p225)", - "資料室にて:《海図/航海9》で判定。(着任p225)", - "守護天使:《幸運/背景7》で判定。(着任p225)", - "作戦会議!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《自由奔放/性格11》で判定。(着任p225)", - "暗号解読:《暗号/航海2》で判定。(着任p225)", - "一か八か?:《楽観的/性格8》で判定。(着任p225)", - "特務機関との邂逅:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《人脈/背景2》で判定。(着任p225)", - "クイーンズ・ギャンビット:《いじわる/性格10》で判定。(着任p225)", - "知彼知己者、百戦不殆:《読書/趣味5》で判定。(着任p225)", - ] - ), - "ETHT" => Table.new( - "ほのぼのイベント表", - "2D6", - [ - "模様替え:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《派手/魅力12》で判定。(建造弐p134)", - "門限破り:《夜戦/戦闘12》で判定。(建造弐p134)", - "ぼやき大会:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《いじわる/性格10》で判定。(建造弐p134)", - "もしも……:《自由奔放/性格11》で判定。(建造弐p134)", - "退屈な会議:《暗号/航海2》で判定。(建造弐p134)", - "気の合う趣味:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《面白い/魅力10》で判定。(建造弐p134)", - "身だしなみ:《さわやか/魅力9》で判定。(建造弐p134)", - "ダイエット:《スタイル/背景11》で判定。(建造弐p134)", - "通信販売:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《待機/背景2》で判定。(建造弐p134)", - "気になる視線:《えっち/魅力11》で判定。(建造弐p134)", - "思い立ったが吉日:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《恋愛/趣味12》で判定。(建造弐p134)", - ] - ), - "ETVT" => Table.new( - "航海イベント表", - "2D6", - [ - "厳しくいくぞ:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《規律/航海5》で判定。(建造弐p135)", - "密航者:《笑顔/魅力7》で判定。(建造弐p135)", - "不審の目:《外国暮らし/背景12》で判定。(建造弐p135)", - "危険海域:《海図/航海9》で判定。(建造弐p135)", - "波間の影:《砲撃/戦闘7》で判定。(建造弐p135)", - "ホームシック:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《支援/戦闘9》で判定。(建造弐p135)", - "追跡者:《対潜戦闘/戦闘11》で判定。(建造弐p135)", - "大嵐:《機動/航海8》で判定。(建造弐p135)", - "うち捨てられた基地:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《読書/趣味5》で判定。(建造弐p135)", - "ネズミ上陸:《衛生/航海11》で判定。(建造弐p135)", - "味の探求:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《読書/趣味5》で判定。(建造弐p135)", - ] - ), - "ETGT" => Table.new( - "外出イベント表", - "2D6", - [ - "ノブレス・オブリージュ:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《お嬢様/背景10》で判定。(建造弐p136)", - "サイン会:《名声/背景3》で判定。(建造弐p136)", - "蚤の市:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《古風/背景5》で判定。(建造弐p136)", - "追っかけ:《退却/戦闘8》で判定。(建造弐p136)", - "走り込み:《航空戦/戦闘4》で判定。(建造弐p136)", - "外食:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《索敵/航海4》で判定。(建造弐p136)", - "迷子:《面倒見/性格4》で判定。(建造弐p136)", - "街頭モデル:《おしゃれ/趣味10》で判定。(建造弐p136)", - "暴れ○○だ!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《生き物/趣味4》で判定。(建造弐p136)", - "臨時講師:《おしゃべり/性格10》で判定。(建造弐p136)", - "映画撮影:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《芸能/趣味9》で判定。(建造弐p136)", - ] - ), - "ETBT" => Table.new( - "激戦イベント表", - "2D6", - [ - "分裂の危機:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《指揮/航海10》で判定。(建造弐p137)", - "脱走:《通信/航海3》で判定。(建造弐p137)", - "勇気の呪文:《口ぐせ/背景6》で判定。(建造弐p137)", - "混乱:《整備/航海12》で判定。(建造弐p137)", - "不意の遭遇:《魚雷/戦闘10》で判定。(建造弐p137)", - "敵の襲撃:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《大胆/性格12》で判定。(建造弐p137)", - "対空迎撃戦:《対空戦闘/戦闘5》で判定。(建造弐p137)", - "傷自慢:《元気/性格7》で判定。(建造弐p137)", - "怖がらないで:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《優しい/魅力4》で判定。(建造弐p137)", - "生き延びろ:《負けず嫌い/性格10》で判定。(建造弐p137)", - "極限の集中:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《ばか/魅力8》で判定。(建造弐p137)", - ] - ), - "ETMT" => Table.new( - "任務イベント表", - "2D6", - [ - "視察:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《面倒見/魅力12》で判定。(建造弐p138)", - "酒保祭り:《補給/航海6》で判定。(建造弐p138)", - "アイドルユニット結成:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《アイドル/背景8》で判定。(建造弐p138)", - "お風呂場大改造:《入浴/趣味11》で判定。(建造弐p138)", - "現場の融通:《人脈/背景2》で判定。(建造弐p138)", - "緊急空輸:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《航空戦/戦闘4》で判定。(建造弐p138)", - "資源の再利用:《マジメ/性格5》で判定。(建造弐p138)", - "物欲:《買い物/趣味8》で判定。(建造弐p138)", - "魔改造:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《秘密兵器/背景9》で判定。(建造弐p138)", - "ちゃんと伝えたってば!:《クール/魅力3》で判定。(建造弐p138)", - "ストライキ:《おおらか/性格3》で判定。(建造弐p138)", - ] - ), - "ETFT" => Table.new( - "恐怖イベント表", - "2D6", - [ - "未知の怪物:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《突撃/戦闘6》で判定。(建造弐p139)", - "ドッペルゲンガー:《不思議/性格2》で判定。(建造弐p139)", - "悪夢:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《寝る/趣味2》で判定。(建造弐p139)", - "イマジナリーフレンド:《空想/趣味3》で判定。(建造弐p139)", - "幽霊船:《電子戦/戦闘2》で判定。(建造弐p139)", - "謎の予言:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《楽観的/性格8》で判定。(建造弐p139)", - "黒猫:《幸運/背景7》で判定。(建造弐p139)", - "サルベージ:《丁寧/性格9》で判定。(建造弐p139)", - "フラッシュバック:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《暗い過去/背景4》で判定。(建造弐p139)", - "深海の呼び声:《素直/魅力2》で判定。(建造弐p139)", - "死者の声:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《けなげ/魅力6》で判定。(建造弐p139)", - ] - ), - "BT10" => Table.new( - "指定個性⑩", - "1D6", - [ - "1-10 《お嬢様》", - "2-10 《面白い》", - "3-10 《いじわる》", - "4-10 《おしゃれ》", - "5-10 《指揮》", - "6-10 《魚雷》", - ] - ), - "BT11" => Table.new( - "指定個性⑪", - "1D6", - [ - "1-11 《スタイル》", - "2-11 《えっち》", - "3-11 《自由奔放》", - "4-11 《入浴》", - "5-11 《衛生》", - "6-11 《対潜戦闘》", - ] - ), - "BT12" => Table.new( - "指定個性⑫", - "1D6", - [ - "1-12 《外国暮らし》", - "2-12 《派手》", - "3-12 《大胆》", - "4-12 《恋愛》", - "5-12 《整備》", - "6-12 《夜戦》", - ] - ), - "BT2" => Table.new( - "指定個性②", - "1D6", - [ - "1-2 《人脈》", - "2-2 《素直》", - "3-2 《不思議》", - "4-2 《寝る》", - "5-2 《暗号》", - "6-2 《電子戦》", - ] - ), - "BT3" => Table.new( - "指定個性③", - "1D6", - [ - "1-3 《名声》", - "2-3 《クール》", - "3-3 《おおらか》", - "4-3 《空想》", - "5-3 《通信》", - "6-3 《航空打撃戦》", - ] - ), - "BT4" => Table.new( - "指定個性④", - "1D6", - [ - "1-4 《暗い過去》", - "2-4 《優しい》", - "3-4 《面倒見》", - "4-4 《生き物》", - "5-4 《索敵》", - "6-4 《航空戦》", - ] - ), - "BT5" => Table.new( - "指定個性⑤", - "1D6", - [ - "1-5 《古風》", - "2-5 《おしとやか》", - "3-5 《マジメ》", - "4-5 《読書》", - "5-5 《規律》", - "6-5 《対空戦闘》", - ] - ), - "BT6" => Table.new( - "指定個性⑥", - "1D6", - [ - "1-6 《口ぐせ》", - "2-6 《けなげ》", - "3-6 《負けず嫌い》", - "4-6 《食べ物》", - "5-6 《補給》", - "6-6 《突撃》", - ] - ), - "BT7" => Table.new( - "指定個性⑦", - "1D6", - [ - "1-7 《幸運》", - "2-7 《笑顔》", - "3-7 《元気》", - "4-7 《おしゃべり》", - "5-7 《待機》", - "6-7 《砲撃》", - ] - ), - "BT8" => Table.new( - "指定個性⑧", - "1D6", - [ - "1-8 《アイドル》", - "2-8 《ばか》", - "3-8 《楽観的》", - "4-8 《買い物》", - "5-8 《機動》", - "6-8 《退却》", - ] - ), - "BT9" => Table.new( - "指定個性⑨", - "1D6", - [ - "1-9 《秘密兵器》", - "2-9 《さわやか》", - "3-9 《丁寧》", - "4-9 《芸能》", - "5-9 《海図》", - "6-9 《支援》", - ] - ), - "ETIT" => Table.new( - "侵攻効果表", - "2D6", - [ - "援軍\n深海棲艦は徐々に力をつけ、大艦隊へとせいちょうしつつある。決戦フェイズの深海棲艦側の艦隊に、駆逐ハ級(『着任ノ書p258』)が一人追加される。", - "海域汚染\n特定の海域が深海棲艦の住みやすい環境になる。このセッションの艦隊戦のの各ラウンドの開始時に、深海棲艦の艦隊は誰か一人だけ【行動力】を1D6点減少できるようになる。【行動力】を消費すると、その戦場を好きなものに変更できる。", - "略奪\n大勢の物資や人々を奪い、連れ去られる。鎮守府の資材がすべて1D6個失われる。", - "象徴破壊\n人類に歴史的建造物や貴重な遺産、世界的な観光名所が破壊される。PC全員は【行動力】を1D6点減少する。", - "襲撃\n深海棲艦の侵攻によって、鎮守府の周辺に住む人たちに大きな被害が出る。PC全員は暴走判定を行うこと。", - "通商破壊\n深海棲艦の侵攻によって、通商ルートが破壊される。そのセッションの間、資材を獲得する効果が発生したとき、その資材の数がいずれも一つずつ減少する。", - "謎のキリ\n謎の霧が海域を覆う。このセッションの艦隊戦中、深海棲艦はランドの開始時に、【行動力】を1D6点消費できるようになる。そのラウンドの間、消費した【行動力】の半分の値(切り捨て。0〜3点の値になる)だけ、深海棲艦全員は、艦隊戦で受けるダメージが軽減できる。この効果は累積するが、この効果で軽減できるダメージの上限は3点である。", - "陸地浸食\n陸地を浸食し、海に変える。この事態に鎮守府への非難が高まる。そのセッションの間、PC全員はあらゆる判定にマイナス1の修正がつく。この侵攻以降、行動判定を行うPCは、判定直前に自分の【行動力】を1点消費するたび、進行による修正をすべて打ち消すことができる。", - "新型改造\n深海棲艦は自らを強化しているようだ。そのセッションの決戦フェイズに登場する深海棲艦の中から一人を選ぶ。その深海棲艦をeliteのクラスを付加する。その深海棲艦がすでにeliteならflagshipに、flagshipなら改にすることもできる。", - "艦娘研究\n艦娘が拿捕され、鹵獲される。一体何を企んでいるのか……?提督は、好きなNPCの艦娘を一人選ぶ。深海棲艦の一人に、その艦娘の持つアビリティ一つを習得させることができる。", - "基地建設\n深海棲艦は自分たちの基地を建造した。そのセッションの決戦フェイズで、深海棲艦の旗艦は、開幕雷撃戦と雷撃戦でダメージを受けなくなる。", - ] - ), - "LFDT" => Table.new( - "艦隊敗北表", - "1D6", - [ - "敵の支援砲撃。ランダムなPC一人に損傷を一つ与える。", - "敵の罠。ランダムなPC一人に「アクシデント表」を一回適用する。", - "追い詰められる。戦場が「T字戦不利」になる。", - "本隊への合流。「敵部隊のサポート」発生。", - "盟友艦行方不明(MIA)。敵部隊の旗艦が決戦フェイズ中、対応する盟友艦の固有、または戦術アビリティをいずれか一つを修得する。", - "盟友艦轟沈。盟友艦は失われ「暴走表」を一回振り、暴走する。", - ] - ), - "LFVT" => Table.new( - "艦隊勝利表", - "1D6", - [ - "支援砲撃。敵艦の中からランダムな一人に損傷を一つ与える。", - "士気高揚。この表を振ったPCの【命中力】が1点上昇する。", - "士気高揚。この表を振ったPCの【火力】が1点上昇する。", - "士気高揚。この表を振ったPCの【回避力】が1点上昇する。", - "士気高揚。この表を振ったPCの【装甲力】が1点上昇する。", - "絆が深まる。その盟友艦からのPCへの【感情値】が1点上昇する。", - ] - ), - "LSFT" => Table.new( - "大規模部隊表", - "1D6", - [ - "水上打撃部隊 「脅威力:10」", - "空母機動部隊 「脅威力:9」", - "水雷戦隊    「脅威力:8」", - "潜水艦部隊   「脅威力:7」", - "輸送部隊 「脅威力:6」", - "主力部隊 「脅威力:12」", - ] - ), - "WPCN" => Table.new( - "砲開発表(燃料3/弾薬6/鋼材6/ボーキ3)", - "4D6", - [ - "開発失敗!(資材だけ失う)", - "開発失敗!(資材だけ失う)", - "三式弾(建造壱p169)", - "25mm連装機銃(着任p252)", - "41cm連装砲(着任p250)", - "8cm高角砲(着任p250)", - "15.2cm連装砲(着任p249)", - "魚雷(着任p252)", - "機銃(着任p252)", - "小口径主砲(着任p249)", - "中口径主砲(着任p249)", - "小口径主砲(着任p249)", - "中口径主砲(着任p249)", - "10cm連装高角砲(着任p249)", - "20.3cm連装砲(着任p249)", - "61cm四連装(酸素)魚雷(着任p252)", - "46cm三連装砲(着任p250)", - "15.5cm三連装砲(副砲)(建造壱p167)", - "61cm五連装(酸素)魚雷(建造壱p168)", - "53cm艦種(酸素)魚雷(建造壱p168)", - "九一式徹甲弾(建造壱p169)", - ] - ), - "WPFA" => Table.new( - "艦載機開発表(燃料3/弾薬6/鋼材3/ボーキ6)", - "4D6", - [ - "開発失敗!(資材だけ失う)", - "開発失敗!(資材だけ失う)", - "開発失敗!(資材だけ失う)", - "開発失敗!(資材だけ失う)", - "開発失敗!(資材だけ失う)", - "Ju87C改(建造壱p167)", - "流星(建造壱p167)", - "紫電改二(建造壱p167)", - "零式艦戦52型(着任p251)", - "艦上戦闘機(着任p251)", - "偵察機(着任p251)", - "艦上爆撃機(着任p250)", - "艦上攻撃機(着任p251)", - "彩雲(着任p251)", - "彗星(着任p250)", - "天山(着任p251)", - "瑞雲(建造壱p168)", - "彗星一二型甲(建造壱p167)", - "流星改(建造壱p167)", - "烈風(建造壱p168)", - "零式水上観測機(建造壱p168)", - ] - ), - "WPMC" => Table.new( - "特殊開発表(燃料6/弾薬3/鋼材6/ボーキ3)", - "2D6", - [ - "開発失敗!(資材だけ失う)", - "開発失敗!(資材だけ失う)", - "開発失敗!(資材だけ失う)", - "開発失敗!(資材だけ失う)", - "探照灯(建造壱p169)", - "電探(着任p252)", - "改良型艦本式タービン(着任p252)", - "九四式爆雷投射機(建造壱p169)", - "甲標的 甲(建造壱p168)", - "33号対水上電探(建造壱p169)", - "増設バルジ(中型艦)(建造壱p169)", - ] - ), - "WPMCN" => Table.new( - "新特殊開発表(燃料6/弾薬3/鋼材6/ボーキ3)", - "2D6", - [ - "開発失敗!(資材だけ失う)", - "カ号観測機(建造弐p171)", - "九三式水中聴音機(建造弐p171)", - "ドラム缶(輸送用)(建造弐p171)", - "探照灯(建造壱p169)", - "電探(着任p252)", - "改良型艦本式タービン(着任p252)", - "九四式爆雷投射機(建造壱p169)", - "甲標的 甲(建造壱p168)", - "33号対水上電探(建造壱p169)", - "増設バルジ(中型艦)(建造壱p169)", - ] - ), - "ITT" => Table.new( - "アイテム表", - "1D6", - [ - "アイス(P241)", - "羊羹(P241)", - "開発資材(P241)", - "高速修復剤(P241)", - "応急修理要員(P241)", - "思い出の品(P241)", - ] - ), - "MHT" => Table.new( - "目標表", - "1D6", - [ - "敵艦の中で、もっとも航行序列の高いPC", - "敵艦の中で、もっとも損傷の多いPC", - "敵艦の中で、もっとも【装甲力】の低いPC", - "敵艦の中で、もっとも【回避力】の低いPC", - "敵艦の中で、もっとも【火力】の高いPC", - "敵艦の中から完全にランダムに決定", - ] - ), - "SNT" => Table.new( - "戦果表", - "1D6", - [ - "燃料/1D6+[敵艦隊の人数]個", - "弾薬/1D6+[敵艦隊の人数]個", - "鋼材/1D6+[敵艦隊の人数]個", - "ボーキサイト/1D6+[敵艦隊の人数]個", - "任意の資材/1D6+[敵艦隊の人数]個", - "感情値/各自好きなキャラクターへの【感情値】+1", - ] - ), - "SPSNT" => Table.new( - "特殊戦果表", - "1D6", - [ - "すべての資材/+3", - "アイテム表(着任p241)から好きなアイテムを取得", - "家具コイン/+1", - "砲類開発表を使用する(資材は消費しない)", - "艦載機開発表を使用する(資材は消費しない)", - "新特殊開発表を使用する(資材は消費しない)", - ] - ), - "SNZ" => Table.new( - "戦場表", - "1D6", - [ - "同航戦(P231)", - "反航戦(P231)", - "T字有利(P231)", - "T字不利(P231)", - "悪天候(P231)", - "悪海象(あくかいしょう)(P231)", - ] - ), - "RNT" => Table.new( - "暴走表", - "1D6", - [ - "妄想(建造弐p164)", - "狂戦士(建造弐p164)", - "興奮(建造弐p164)", - "溺愛(建造弐p164)", - "慢心(建造弐p164)", - "絶望(建造弐p164)", - ] - ), - }.freeze - - setPrefixes([ - 'DVT', 'DVTM', 'WP1T', 'WP2T', 'WP3T', 'WP4T', - 'KTM', 'BT', 'KHT', 'KMT', 'KST', 'KSYT', 'KKT', 'KSNT', - ] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/KemonoNoMori.rb b/src/src_bcdice/diceBot/KemonoNoMori.rb deleted file mode 100644 index 8b68c9ee1..000000000 --- a/src/src_bcdice/diceBot/KemonoNoMori.rb +++ /dev/null @@ -1,255 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/table.rb' -require 'utils/range_table' - -class KemonoNoMori < DiceBot - # ゲームシステムの識別子 - ID = 'KemonoNoMori' - - # ゲームシステム名 - NAME = '獸ノ森' - - # ゲームシステム名の読みがな - SORT_KEY = 'けもののもり' - - # ダイスボットの使い方 - HELP_MESSAGE = < RangeTable.new( - '大失敗表', - '1D12', - [ - [1..3, '【余裕】が3点減少する(最低0まで)'], - [4..5, 'ランダムな荷物1個が落ちて行方不明になる(大失敗したエリアのアイテム調査で見つけることが可能)'], - [6..7, 'ランダムな荷物1個が破壊される'], - [8..9, 'ランダム天気表を使用し、結果をターンの終了まで適用する'], - [10, 'ランダムな準備している小道具1個が破壊される'], - [11, '着想している防具が破壊される'], - [12, '準備している武器が破壊される'], - ] - ), - 'RST' => RangeTable.new( - '能力値ランダム決定表', - '1D12', - [ - [1..2, '【移動】'], - [3..4, '【格闘】'], - [5..6, '【射撃】'], - [7..8, '【製作】'], - [9..10, '【察知】'], - [11..12, '【自制】'], - ] - ), - 'RTT' => RangeTable.new( - 'ランダム所要時間表', - '1D12', - [ - [1..3, '2'], - [4..6, '3'], - [7..9, '4'], - [10..12, '5'], - ] - ), - 'RET' => RangeTable.new( - 'ランダム消耗表', - '1D12', - [ - [1..3, '0'], - [4..6, '1'], - [7..9, '2'], - [10..12, '4'], - ] - ), - 'RWT' => RangeTable.new( - 'ランダム天気表', - '1D12', - [ - [1..2, '濃霧'], - [3..4, '大雨'], - [5..6, '雷雨'], - [7..8, '強風'], - [9..10, '酷暑'], - [11..12, '極寒'], - ] - ), - 'RWDT' => RangeTable.new( - 'ランダム天気持続表', - '1D12', - [ - [1..2, '1ターン'], - [3..4, '3ターン'], - [5..6, '6ターン'], - [7..8, '24ターン'], - [9..10, '72ターン'], - [11..12, '156ターン'], - ] - ), - 'ROMT' => RangeTable.new( - 'ランダム遮蔽物表(屋外)', - '1D12', - [ - [1..2, '【藪】耐久度3,軽減値1,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-1の修正を付加'], - [3..5, '【木】耐久度5,軽減値2,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-1の修正を付加'], - [6..8, '【大木】耐久度7,軽減値3,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-2の修正を付加'], - [9..10, '【岩】耐久度6,軽減値4,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-1の修正を付加/コンタクト内で行われる格闘攻撃のダメージ+1'], - [11..12, '【岩壁】耐久度8,軽減値4,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-2の修正を付加/コンタクト内で行われる格闘攻撃のダメージ+2'], - ] - ), - 'RIMT' => RangeTable.new( - 'ランダム遮蔽物表(屋内)', - '1D12', - [ - [1..4, '【木材の壁】耐久度4,軽減値2,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-1の修正を付加'], - [5..8, '【木材の扉】耐久度4,軽減値2,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-1、接触判定と突撃判定に-2の修正を付加'], - [9..12, '【木製家具】耐久度3,軽減値2,特殊効果:コンタクト内で行われる格闘攻撃のダメージ+1'], - ] - ), - 'EET' => RangeTable.new( - '逃走体験表', - '1D12', - [ - [1..3, '【余裕】が0になる'], - [4..6, '任意の【絆】を合計2点減少する'], - [7..9, '全ての荷物を失う(逃走したエリアに配置され、調査で発見可能)'], - [10..12, '全ての武器と防具と小道具と荷物を失う(逃走したエリアに配置され、調査で発見可能)'], - ] - ), - 'GFT' => RangeTable.new( - '食材採集表', - '1D12', - [ - [1..2, '食べられる根(栄養価:2)'], - [3..5, '食べられる草(栄養価:3)'], - [6..8, '食べられる実(栄養価:5)'], - [9..10, '小型動物(栄養価:10)'], - [11, '大型動物(栄養価:40)'], - [12, '気持ち悪い虫(栄養価:1)'], - ] - ), - 'GWT' => RangeTable.new( - '水採集表', - '1D12', - [ - [1..6, '汚水'], - [7..11, '飲料水'], - [12, '毒水'], - ] - ), - 'WST' => Table.new( - '白の魔石効果表', - '1D12', - [ - '役に立たないものの色を変える', - '役に立たないものを大きくする', - '役に立たないものを小さくする', - '役に立たないものを保存する', - '役に立たないものを復元する', - '役に立たないものを召喚する', - '役に立たないものを動かす', - '役に立たないものを増やす', - '役に立たないものを貼り付ける', - '役に立たないものを作り出す', - '小型動物を召喚する', - '大型動物を召喚する', - ] - ), - }.freeze - - setPrefixes(['K[AC]\d[-+\d]*', 'CTR'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/KillDeathBusiness.rb b/src/src_bcdice/diceBot/KillDeathBusiness.rb deleted file mode 100644 index 9cee4e6f7..000000000 --- a/src/src_bcdice/diceBot/KillDeathBusiness.rb +++ /dev/null @@ -1,1421 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class KillDeathBusiness < DiceBot - # ゲームシステムの識別子 - ID = 'KillDeathBusiness' - - # ゲームシステム名 - NAME = 'キルデスビジネス' - - # ゲームシステム名の読みがな - SORT_KEY = 'きるてすひしねす' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - " > ファンブル(判定失敗。【視聴率】が20%減少)" - elsif dice_total >= 12 - " > スペシャル(判定成功。【視聴率】が10%増加)" - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - def rollDiceCommand(command) - debug("rollDiceCommand command", command) - - # 判定チェックは先に処理 - case command - when JUDGE_DICE_REG - result = judgeDice(command) - text = "判定#{result}" - return text - end - - # 判定以外なら表コマンドの処理に - return rollTableCommand(command) - end - - JUDGE_DICE_REG = /(^|\s)JD(\d+)([\+\-]\d+)?(,(\d+))?($|\s)/i.freeze - - def judgeDice(command) - unless JUDGE_DICE_REG === command - return '1' - end - - target = Regexp.last_match(2).to_i - modify = Regexp.last_match(3).to_i - fumble = Regexp.last_match(5).to_i - - result = "" - - if target > 12 - result += "【#{command}】 > 難易度が12以上はスペシャルのみ成功。\n" - target = 12 - end - - if target < 5 - result += "【#{command}】 > 難易度の最低は5。\n" - target = 5 - end - - if fumble < 2 - fumble = 2 - elsif fumble > 11 - result += "【#{command}】 > スペシャルを出すと必ず成功なので、ファンブル率は11とする。\n" - fumble = 11 - end - - number, diceText, = roll(2, 6) - - result += "【難易度#{target}、補正#{modify}、ファンブル率#{fumble}】 > 出目(#{diceText}) > " - - if number == 2 - result += "出目が2なのでファンブル!(判定失敗。【視聴率】が20%減少)" - elsif number == 12 - result += "出目が12なのでスペシャル!(判定成功。【視聴率】が10%増加)" - elsif number <= fumble - result += "出目がファンブル率以下なのでファンブル!(判定失敗。【視聴率】が20%減少)" - else - number += modify - if number < target - result += "達成値#{number}、難易度未満なので判定失敗!" - else - result += "達成値#{number}、難易度以上なので判定成功!" - end - end - - return result - end - - def rollTableCommand(command) - result = getTableCommandResult(command, TABLES) - return result unless result.nil? - - tableName = "" - result = "" - - case command - - when "HST" - tableName, result, number = getHistoryTableResult - - when /^ST(\d)?$/ - # シーン表 - type = Regexp.last_match(1).to_i - - tableName, result, number = getSceneTableResult(type) - - when /^.+WT$/i - # 願い事表 - tableName, result, number = getWishTableResult(command) - - when /^NAME(\d)?$/ - # 万能命名表 - type = Regexp.last_match(1).to_i - tableName, result, number = getNameTableResult(type) - - when /^.+SPT$/i - # サブプロット表 - tableName, result, number = getSubprotTableResult(command) - - when "CMT" - # CM表 - tableName, result, number = getCmTableResult() - - when "ERT" - # 副作用蘇生表 - tableName, result, number = getErTableResult() - - when "WKT" - # 一週間表 - tableName, result, number = getWKTableResult() - - when /^EST$/i, /^sErviceST$/i - tableName, result, number = getServiceSceneTableResult() - - when "SOUL" - tableName, result, number = getSoulTableResult() - - when "STGT" - tableName, result, number = getSceneTelopGenericTableResult() - - when /^HSAT(\d)?$/ - type = Regexp.last_match(1).to_i - tableName, result, number = getHairStylistAbuseTableResult(type) - - when /^EXT(\d)?$/ - type = Regexp.last_match(1).to_i - tableName, result, number = getExtraTableResult(type) - - when /^SKL(T|J)$/ - type = Regexp.last_match(1) - tableName, result, number = getSkillTableResult(type) - - when "PCDT" - # 製作委員決定表 - tableName, result, number = getpcTableResult() - when "OHT" - # 実際どうだったのか表 - tableName, result, number = getohTableResult() - when "PCT1" - # ヘルライオンタスク表 - tableName, result, number = getplTableResult() - when "PCT2" - # ヘルクロウタスク表 - tableName, result, number = getprTableResult() - when "PCT3" - # ヘルスネークタスク表 - tableName, result, number = getpnTableResult() - when "PCT4" - # ヘルドラゴンタスク表 - tableName, result, number = getpdTableResult() - when "PCT5" - # ヘルフライタスク表 - tableName, result, number = getpfTableResult() - when "PCT6" - # ヘルゴートタスク表 - tableName, result, number = getpgTableResult() - when "PCT7" - # ヘルベアタスク表 - tableName, result, number = getpbTableResult() - end - - if result.empty? - return "" - end - - text = "#{tableName}(#{number}):#{result}" - return text - end - - def getHistoryTableResult - tableName = "履歴表" - - table = [ - '魔術 -あなたは悪魔との接触を目指して研磨を積んでいたオカルティスト、または恐怖の探索者である。たいへんな苦労の末、ようやく現れた悪魔は、願いと引き替えに番組に出ろ、などと言い出した。あなたは少々あっけにとられながらも、そもそも悪魔を探していた理由である願い事を叶えるため、彼らの主催する番組に出演する事を承諾した。', - '天才 -あなたはある分野での天才である。なんの天才であるのかは、キャラクター作成を進めるうちに思いついたら決めてもいいし、まったく決めなくてもかまわない。とにかく、天才が番組に登場するとキャラが立って面白くなると考えた悪魔は、あなたの目の前に番組の出演交渉のために現れた。あなたはその話に乗り、魂の回収人になることに決めた。', - '狂気 -あなたは頭がおかしい。そのため、周囲の社会とうまくかみ合わない人生を送っていた。悪魔はそこに出現し、社会をあなたに合わせて変えてしまうことが可能だと言った。ただし人を殺すゲーム番組で優勝しなければならないらしい。しかし、あなたは頭がおかしいので、人を殺すところは気にもならなかった。とにかく勝てば幸せになれるのだ。がんばろう。', - '絶望 -あなたはなんらかの失敗によって失意のどん底にあった。合法、あるいは違法な薬物に溺れ、生活はどんどん荒み、そろそろ死んでしまおうかと考えているところに悪魔が現れた。そいつの言うことには、なんかリアリティ番組で勝てば、この状況から抜け出せるらしい。もはや失うものなどないあなたは、その話に飛びつき、番組に出演することにした。', - '先達 -あなたは過去『キルデスビジネス』の勝利者と知り合いである。急に理由もなく大きな成功をおさめた知り合いに事情を聞くと、こっそりと悪魔が主催する殺人ゲーム番組のことを教えてくれた。あなたは願い事を叶えてもらうために、その知り合いを通して悪魔に推薦してもらい、番組に参加することになった。知り合いは、きっと番組を見ているだろう。', - '友人 -あなたは平穏な人生を送っていたが、あるとき目の前に悪魔が現れる。そいつは番組出演のエントリーシートを持っていて、そこにはあなたの名前が書かれていた。友人が勝手にあなたの名前で番組にエントリーシートを送っていたのだ! あなたはそのまま拉致され、むりやり願い事を決めさせられ、悪趣味な番組で暴力を撒き散らす事になってしまった。', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getSceneTableResult(type) - debug("getSceneTableResult type", type) - - tableName = "シーン表" - - sceneTable1 = [ - [11, 'あなたが根城にしていた'], - [12, 'あなたの写真で壁が埋め尽くされた'], - [13, 'アナログテレビが山と積まれた'], - [14, 'ゴミで埋め尽くされた'], - [15, 'ヘル'], - [16, '押し寄せてくる砂に埋もれた'], - [22, '価値あるもので豪華に飾られた'], - [23, '監視機器で電子の要塞と化した'], - [24, '奇妙なオブジェだらけの'], - [25, '巨大な穴のふちに危うく引っかかった'], - [26, '極彩色の壁画に彩られた'], - [33, '消えかけて点滅する明かりに照らされた'], - [34, '青白く何もかもが凍りついた'], - [35, '赤い血と鉄のにおいに満ちた'], - [36, '太陽が強烈な光を投げかける'], - [44, '鳥が無数に集まってきている'], - [45, '燃え上がる炎に照らされた'], - [46, '白い霧で少し先すら見えない'], - [55, '腐った死体が折り重なる'], - [56, '有毒な汚水がたっぷり詰まった'], - [66, '略奪を受けて空っぽになった'], - ] - sceneTable2 = [ - [11, 'オフィス'], - [12, '祭壇'], - [13, 'スタジオ'], - [14, '倉庫'], - [15, 'バス停'], - [16, '牢獄'], - [22, '暗闇'], - [23, '駅'], - [24, '屋上'], - [25, '下水道'], - [26, '学校'], - [33, '研究室'], - [34, '車内'], - [35, '森'], - [36, '庭園'], - [44, '店'], - [45, '農園'], - [46, '廃墟'], - [55, '墓地'], - [56, '民家'], - [66, '野原'], - ] - - result = '' - number = 0 - - case type - when 1 - result, number = get_table_by_d66_swap(sceneTable1) - when 2 - result, number = get_table_by_d66_swap(sceneTable2) - else - result1, num1 = get_table_by_d66_swap(sceneTable1) - result2, num2 = get_table_by_d66_swap(sceneTable2) - result = "#{result1}#{result2}" - number = "#{num1},#{num2}" - end - - return tableName, result, number - end - - def getWishTableResult(command) - debug("getWishTableResult command", command) - - tableName = '' - table = [] - - case command - when /^DWT$/i, /^DeathWT$/i - tableName = "願い事表「死」" - table = [ - '今の美しさを保ったまま死にたい。', - 'おもしろい死にかたをしてみたい。', - '自殺する勇気がないので死にたい。', - '死んだらどうなるのか見てみたい。', - 'とても嫌なことがあったので死にたい。', - '不老不死に飽きたので死にたい。', - ] - when /^RWT$/i, /^RevengeWT$/i - tableName = "願い事表「復讐」" - table = [ - '家族を殺した犯人に復讐したい。', - '自分より幸せな隣人に復讐したい。', - '自分を裏切った友人に復讐したい。', - '自分を捨てた恋人に復讐したい。', - '大事なものを盗んだ犯人に復讐したい。', - '手ひどく負けたライバルに復讐したい。', - ] - when /^VWT$/i, /^VictoryWT$/i - tableName = "願い事表「勝利」" - table = [ - 'かつて負けたライバルに勝利したい。', - '倒したい有名人(故人)がいる。', - '倒したい有名人がいる。', - '特定の業界で一番の実力者になりたい。', - '特定のゲームで最強のプレイヤーになりたい。', - '特定のテストで一位になりたい。', - ] - when /^PWT$/i, /^PossesionWT$/i - tableName = "願い事表「獲得」" - table = [ - '欲しいアイテムがある。', - '欲しい生き物がいる。', - '欲しい関係がある。', - '欲しい親族がいる。', - '欲しい知識がある。', - '欲しい不動産がある。', - ] - when /^CWT$/i, /^ControlWT$/i - tableName = "願い事表「支配」" - table = [ - '支配したい人物集団がいる。', - '支配したい地域がある。', - '世界を征服したい。', - '選挙で勝ちたい。', - '這いつくばらせたい人がいる。', - 'わがままな縁者を思い通りにしたい。', - ] - when /^FWT$/i, /^FlourishWT$/i - tableName = "願い事表「繁栄」" - table = [ - '落ちぶれた一族を復権させたい。', - '地元経済を活性化させたい。', - '趣味のジャンルに人を集めたい。', - '絶滅した生き物を復活させたい。', - '動物や植物を絶滅から救いたい。', - 'とにかくたくさんお金が欲しい。', - ] - when /^IWT$/i, /^IntensifyWT$/i - tableName = "願い事表「強化」" - table = [ - '世界最強になりたい。', - '世界で最も美しくなりたい。', - '世界で最も賢くなりたい。', - '世界で最も幸せになりたい。', - '世界で最もタフになりたい。', - '世界で最も速くなりたい。', - ] - when /^HWT$/i, /^HealthWT$/i - tableName = "願い事表「健康」" - table = [ - '完成させたい薬物がある。', - '絶滅させたい病原菌がある。', - '難病から回復させたい縁者がいる。', - '難病から回復したい。', - '病気で死なせてしまった人を復活させたい。', - '病気にならない体が欲しい。', - ] - when /^SaWT$/i, /^SafetyWT$/i - tableName = "願い事表「安全」" - table = [ - '穏やかな生活を送りたい。', - '穏やかに暮らして欲しい人がいる。', - '終わらせたい争いがある。', - '事故で死なせてしまった人を復活させたい。', - '事故に遭わない能力が欲しい。', - '迫り来る世界の危機を回避したい。', - ] - when /^LWT$/i, /^LongevityWT$/i - tableName = "願い事表「長寿」" - table = [ - '今の美しさを保ちたい。', - '今の強さを保ちたい。', - '子供が一人前になるまで死ねない。', - '不老の体が欲しい。', - 'ボケたくない。', - '孫の顔を見てみたい。', - ] - when /^EWT$/i, /^ExistWT$/i - tableName = "願い事表「生」" - table = [ - '生きている実感が欲しい。', - '今とは違う人生をやり直したい。', - '死んでしまったので復活したい。', - '死んでしまった人を復活させたい。', - '生レバー復活しないかな。', - '理想の人生を手に入れたい。', - ] - end - - result, number = get_table_by_1d6(table) - debug("getWishTableResult result", result) - - return tableName, result, number - end - - def getNameTableResult(type) - tableName = "万能命名表" - - nameTable1 = [ - [11, 'アナログ'], - [12, 'イージー'], - [13, 'エターナル'], - [14, 'エレクトロ'], - [15, 'オート'], - [16, 'キング'], - [22, 'クール'], - [23, 'グリム'], - [24, 'グレート'], - [25, 'スーパー'], - [26, 'スプーク'], - [33, 'スマート'], - [34, 'ドレッド'], - [35, 'ハイテク'], - [36, 'ハンターズ'], - [44, 'ブラック'], - [45, 'ヘル'], - [46, 'マジック'], - [55, 'メカニカル'], - [56, 'ラヴ'], - [66, 'レッド'], - ] - nameTable2 = [ - [11, 'X'], - [12, 'アビス'], - [13, 'グレイブ'], - [14, 'ゴールド'], - [15, 'ゴシック'], - [16, 'シノビ'], - [22, 'スペシャル'], - [23, 'デーモン'], - [24, 'デジタル'], - [25, 'デス'], - [26, 'デビル'], - [33, 'ナイトメア'], - [34, 'バロック'], - [35, 'ブラッド'], - [36, 'ブレイク'], - [44, 'ブレイズ'], - [45, 'フロスト'], - [46, 'メガ'], - [55, 'メカナイズド'], - [56, 'リンボ'], - [66, 'ロボ'], - ] - nameTable3 = [ - [11, 'アーム'], - [12, 'アイ'], - [13, 'イヤー'], - [14, 'ウィング'], - [15, 'エンジン'], - [16, 'カード'], - [22, 'ガン'], - [23, 'ギア'], - [24, 'キャノン'], - [25, 'サーキット'], - [26, 'スキン'], - [33, 'ソード'], - [34, 'タービン'], - [35, 'ハート'], - [36, 'ハンド'], - [44, 'ビーム'], - [45, 'プレート'], - [46, 'ヘア'], - [55, 'メカニズム'], - [56, 'モーター'], - [66, 'レッグ'], - ] - - result = '' - number = 0 - - case type - when 1 - result, number = get_table_by_d66_swap(nameTable1) - when 2 - result, number = get_table_by_d66_swap(nameTable2) - when 3 - result, number = get_table_by_d66_swap(nameTable3) - else - result1, num1 = get_table_by_d66_swap(nameTable1) - result2, num2 = get_table_by_d66_swap(nameTable2) - result3, num3 = get_table_by_d66_swap(nameTable3) - result = "#{result1}#{result2}#{result3}" - number = "#{num1},#{num2},#{num3}" - end - - return tableName, result, number - end - - def getSubprotTableResult(command) - tableName = '' - table = [] - - case command - when /^OSPT$/i, /^OccultSPT$/i - tableName = "サブプロット表「オカルト」" - table = [ - '『死の探求』 -回収人から一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、番組による頻繁な死が相手をどう変えていくのか観察したくなる。相手への関係を属性「研究対象」で獲得する。【深度】は1になる。 -クリア条件:相手が、あなたの登場しているシーンで二回死亡する。死亡によって相手がどう変わったのか、勝手なことをつらつらと語ってもいいし、なにも語らずにわかったような顔をしていても構わない。 -報酬:【視聴率】10%増加、400【ソウル】', - '『来訪者』 -キャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、相手が着ているものは巧妙な偽装であり、その正体が宇宙人であることに気付く。相手への関係を属性「宇宙人」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にする。すると、相手は自分の本当の姿を教えてくれる。本当に宇宙人なのかどうかは相手次第で、別にどちらでもかまわない。適当に喜んだりがっかりしておくこと。 -報酬:【視聴率】10%増加、200【ソウル】', - '『記憶喪失』 -キャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、その瞬間に、相手が何かを知っているという確信だけを残し、あとのすべての個人的な記憶を失う。相手への関係を、属性「知人」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を3にする。すると、相手はあなたがどんな人物だったのか思い出させてくれる。直接思い出しても構わないし、なにげない仕草が思い出すきっかけになるのかもしれない。 -報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】、相手がNPCなら600【ソウル】', - '『秘密結社』 -キャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手がなにげなく行っていた動作が、あなたの所属する秘密結社のメンバーであることを示すサインだと見抜く。相手への関係を、属性「メンバー」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にする。相手は本当にメンバーなのかもしれないし、あなたの勘違いかもしれない。どちらにせよ、探りを入れながら近づくことで、相手のことがよくわかった。 -報酬:【視聴率】10%増加、200【ソウル】', - '『殺人鬼』 -キャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手が有名な連続殺人犯の犯人であると確信する。顔や性別は変えたのかもしれない。相手への関係を、属性「殺人鬼」で獲得する。【深度】は1になる。 -クリア条件:連続殺人鬼を許せないなら、相手を戦闘で一度倒す。または、連続殺人鬼のファンなら、相手と一緒に「サービス」シーンを成功させる。どちらにせよ、相手が本当に連続殺人をやったのかははっきりしない。 -報酬:【視聴率】10%増加、クリア条件達成時の相手への関係【深度】× 200【ソウル】', - '『魔法使い』 -キャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手はもともと本当に魔法が使える人間であり、持っている道具は高名なマジックアイテムだと確信する。相手への関係を、属性「魔法使い」で獲得する。【深度】は1となる。 -クリア条件:相手への関係の【深度】を2以上にし、かつ相手からあなたへの関係の【深度】を1以上にする。根負けした相手は魔法を教えてくれて、あなたは満足する。ちなみに、この魔法は効果があいまいでハッキリしないものを適当に設定する。 -報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】', - ] - when /^FSPT$/i, /^FamilySPT$/i - tableName = "サブプロット表「家族」" - table = [ - '『説得』 -キャラクターから一人選び、相手が「小道具」で習得している特技を指定特技として判定を行う。判定に成功すると、相手が持っているのはあなたの贈りものであり、旧友が悪趣味なショーに出ているのだとわかる。降りるように説得しなければ。相手への関係を、属性「旧友」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を3にする。すると、説得をやるだけやったあなたは満足する。相手は多分諦めない。または、選択された「旧友」が死亡するか(回収人なら)地獄に墜ちる。すると、なんだかあきらめがつく。 -報酬:【視聴率】10%増加、400【ソウル】', - '『生き別れ』 -キャラクターから一人選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手が家族特有の特徴を持っていることがわかり、かなり昔に生き別れた家族だと確信する。相手への関係を、属性「生き別れ」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を3にする。すると、相手はあなたのことを思い出す。まるで違う環境で暮らしてきたのかもしれないが、あなたたちのルーツは同じだ。続柄や生別したときの状況は好きに設定できるし、別に設定しなくてもかまわない。 -報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】相手がNPCなら600【ソウル】', - '『家族自慢』 -回収人ーから一人選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の職業を聞き出したうえで、同じ分野で相手より成功している家族の話を聞かせてやれる。相手への関係を、属性「自慢済み」で獲得する。【深度】は1になる。 -クリア条件:三人のキャラクターへ【深度】1以上の関係を獲得し、すべての属性を「自慢済み」にする。すでに「自慢済み」の人は、死んでいたりいなくなっても大丈夫。かなり嫌がられそうだが、まあ仕方がない。 -報酬:【視聴率】10%増加、400【ソウル】', - '『捨て猫』 -回収人から一人選び、相手が「感情」で修得している特技を指定特技として判定を行う。判定に成功すると、懐から仔猫が出てくる。これは相手が故あって捨てた猫だが、あなたはそれが許せない。相手への関係を、属性「猫の飼い主」で獲得する。【深度】は1になる。 -クリア条件:相手に猫を飼わせるため、戦闘で一度倒す。すると、相手は猫を飼うことに同意する。猫の詳細なスペックを決めてもいいし、決めなくてもかまわない。あと、動物の種類も実は自由だ。 -報酬:【視聴率】10%増加、クリア条件達成時の相手への関係の【深度】× 200【ソウル】', - '『義理の家族』 -回収人から一人選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、衣装の傾向から、相手が義理の家族であることが判明する。こんなところでなにをやっているんだ。相手への関係を、属性「義理の家族」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にする。すると、相手はなぜ番組に出ることになったのか、そのときどんな状況や気分だったのかを話してくれる。または、相手が地獄に墜ちると、縁が切れてクリアだ。 -報酬:【視聴率】10%増加、200【ソウル】', - '『孤独な人』 -キャラクターから一人選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、相手が孤独に耐えている寂しい人物であることを確信する。あなたが相手を救うのだ。相手への関係を、属性「孤独な人」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にする。すると、相手は打ち解ける……かもしれないし、なにも変わないかもしれない。ただ、あなたには、相手の孤独が少し癒やされたことがわかる。 -報酬:【視聴率】10%増加、200【ソウル】', - ] - when /^LoSPT$/i, /^LoveSPT$/i - tableName = "サブプロット表「恋愛」" - table = [ - '『禁断の恋』 -標的が「衣装」で修得している特技を指定特技として判定を行う。標的がすでに死亡している場合、サブプロット表を振りなおす。判定に成功すると、標的に一目惚れするか、標的が前から好きだった人であったことが判明する。急がないと殺されてしまう。相手への関係を、属性「好きな人」で獲得する。【深度】は1となる。 -クリア条件:相手への関係の【深度】を3にする。すると、標的はあなたの思いに対してなんらかの答えを返す。結果がどうあれ、いい経験になるだろう。または、相手への関係の【深度】が2以上の状態で、相手が死亡してもいい。嘆こう。 -報酬:【視聴率】10%増加、400【ソウル】', - '『番組内デート』 -回収人から一人を選び相手が「情動」で修得している特技を指定特技として判定を行う判定に成功すると、相手とあなたは番組開始前からつきあっている。収録のついでに仲を進展させてもいいかもしれない。相手への関係を、属性「恋人」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にし、相手からあなたの関係の【深度】も2以上にする。するとけっこういい感じに関係が発展する。番組終了時に視聴者にお知らせすることがあるかもしれない。 -報酬:【視聴率】10%増加、あなたと相手の両方に400【ソウル】', - '『悩み相談』 -キャラクターから一人を選び相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の職業的見地から恋愛に関するアドバイスをもらえるかもしれないと気づく。相手への関係を属性「相談役」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】は3にする。恋愛に関するアドバイスをもらった気になる。相手がその気で言ったかは関係ない。最後に関係の属性を『好きな人』に変えたりするとそれっぽい。 -報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】相手がNPCなら600【ソウル】', - '『人気獲得』 -キャラクターから一人を選び相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手とあなたが並ぶと非常に画面映えして視聴者に受けると確信する。誘ってサービスシーンを成功させればヘル視聴者に愛されるだろう。相手への関係を属性「相棒」で獲得する。【深度】は1になる。 -クリア条件:相手と一緒にサービスシーンを成功させる。驚くべきことに、ヘル視聴者は本当にコンビが気に入ってしまう。ただ、もう一度同じことをやっても、ウケるかどうかはわからない。 -報酬:【視聴率】10%増加、200【ソウル】', - '『贈り物』 -キャラクターから一人を選び相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の望みがなんとなくわかる。欲しいものすらわかるので、あげたら好きになってもらえるかもしれない。なにが欲しいのか、相手に実際に尋ねる必要はない。相手への関係を属性「欲しがり」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にする。すると相手は貴方のプレゼントを受け取る。何を渡したのかは適当に決めてかまわないが、迷ったらヘルCM表をつかうこと。 -報酬:【視聴率】10%増加、200【ソウル】', - '『手料理』 -キャラクターから一人を選び相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の持っているものがヒントになって、すごい料理を思いつく。もしかしたら材料にするのかもしれない。相手への関係を属性「毒見役」で獲得する。【深度】は1になる。 -クリア条件:相手に戦闘を挑み、キラートリックで倒す。このとき、キラートリックの名前は思いついた料理の名前に変更される。困ったら万能命名表を使うこと。 -報酬:【視聴率】10%増加、500【ソウル】', - ] - when /^JSPT$/i, /^JusticeSPT$/i - tableName = "サブプロット表「正義」" - table = [ - '『殺せない標的』 -標的が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手があなたの正義に照らし合わせて申し分のない人物である事が分かる(もしくは、実は非常に善良な人物であったことがわかる)。これを殺させるわけにはいかない。相手への関係を、属性「護衛対象」で獲得する。【深度】は1になる。 -クリア条件:結果フェイズまで相手を生き残らせる。なぜ味方をしたのか、なぜ味方をするのか、相手に語ってあげると喜ぶかもしれない。 -報酬:【視聴率】10%増加、700【ソウル】', - '『親友の復讐』 -キャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手が身につけていた装身具が、あなたの親友を殺害した犯人の特徴とぴったり合致することがわかる。相手への関係を、属性「犯人」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にする。すると、相手は自白する。そのあとに戦闘を挑み、一度相手を倒せ。死んだものは帰ってこないが、あなたは満足する。 -報酬:【視聴率】10%増加、400【ソウル】', - '『護身』 -キャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、相手はかつてあなたに断罪された事があり、それを恨みに思っていることが明らかになる。相手への関係を、属性「復讐者」で獲得する。【深度】は1になる。 -クリア条件:結果フェイズまで標的に殺されない。すると、なんとかやりすごせる・・・・・・が、次はどうなることやら。 -報酬:【視聴率】10%増加、相手が回収人なら500【ソウル】相手がNPCなら100【ソウル】', - '『心酔』 -回収人から一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手を第一印象から善人だと確信し、いろんな理屈をつけて相手の願いごとを正義だと信じ込む。相手への関係を、属性「善人」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にする。すると、相手の願いごとの本質を理解し、酔いから醒めたり、忠実な協力者となることを約束したりする。 -報酬:【視聴率】10%増加、200【ソウル】', - '『悪党』 -キャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、相手はその筋では有名な悪い職業人であることが判明する。こいつを放っておけば悲しむ人が出るだろう。相手への関係を、属性「悪人」で獲得する。【深度】は1になる。 -クリア条件:悪人を許せないなら、相手を戦闘で一度倒す。または、改心させたいなら、相手への関係の【深度】を3にする。相手が本当に改心するかどうかは関係なく、会心の説得を撃ち放ったことで、あなたは満足する。 -報酬:【視聴率】10%増加、クリア条件達成時の相手への関係【深度】�200【ソウル】', - '『サイドキック』 -回収人から一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、相手は自分の相棒として悪を倒すのに最適な人物であると確信する。サイドキックだ。相手への関係を、属性「仲間」で獲得する。【深度】は1になる。 -クリア条件:自分が登場しているシーンで、相手が誰かを倒し、そのあと自分が殺されずに戦闘が終了する。相手を褒めて、仲間にふさわしい人物だと宣言してあげよう。 -報酬:【視聴率】10%増加、300【ソウル】', - ] - when /^TSPT$/i, /^TrainingSPT$/i - tableName = "サブプロット表「修行」" - table = [ - '『戦闘狂』 -回収人から一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、周りにいる強そうな人に対して対抗心が沸いてくる。結局、勝つのは一人なんだから、今から叩いておいたほうがいい。相手への関係を、属性「敵」で獲得する。【深度】は1になる。 -クリア条件:相手を含む三人のキャラクターを一回以上死亡させる。すると、あなたの戦闘熱はおさまる。そこから仲良くできるかどうかは微妙なところかもしれない。 -報酬:【視聴率】10%増加、600【ソウル】', - '『弟子入り』 -キャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは、その職業の世界的権威を発見する。故あって引退して久しいが、教えを請えば今後の人生の役に立つだろう。教える気があるかどうかは知らないが。相手への関係を、属性「師匠」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を3にする。すると、相手は何かを教えてくれる。あるいは、もう教えることはなにもないと言うだろう。 -報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】相手がNPCなら600【ソウル】', - '『ライバル』 -キャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。成功すると、相手はあなたに特定の分野で勝利したことのある人物だとわかる。奴に勝たねば、あなたは先に進めない。相手への関係を、属性「ライバル」で獲得する。【深度】は1になる。 -クリア条件:2サイクル目以降で相手を一度倒す。あなたが倒すまで、相手は他のキャラクターに倒されてはならない。お前を倒すのは俺だって決まってるんだからな! -報酬:【視聴率】10%増加、相手が回収人なら300【ソウル】相手がNPCなら500【ソウル】', - '『改造』 -回収人から一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、相手に比べて自分の肉体が貧弱すぎるような気がしてくる。改造してもっと強くならなければ。相手への関係を、属性「基準線」で獲得する。【深度】は1になる。 -クリア条件:相手よりも多くのヘルサイバーをインストールした状態で結果フェイズを迎える。この時数えるのは個数だけ、そして同じ数ではダメだ。 -報酬:【視聴率】10%増加、600【ソウル】', - '『装備改善』 -回収人から一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の持っている装備について興味が湧く。自分の能力上昇のヒントになるかもしれない。相手への関係を、属性「いい装備」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にする。すると、相手は持ち物について解説してくれるか、あるいはキッパリと断る。あなたの探索はそこで終わるが、経験は残る。 -報酬:【視聴率】10%増加、200【ソウル】', - '『特訓』 -回収人から一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると相手は自分と同じく修行不足を痛感しているのだと確信する。一緒にトレーニングだ。相手への関係を、属性「特訓仲間」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にする。すると、あなたと相手はなんらかの手応えを感じて、特訓は終わる。このタイミングでキラートリックの名前を変えたりしてもかまわない。 -報酬:【視聴率】10%増加、200【ソウル】', - ] - when /^BSPT$/i, /^BeamSPT$/i - tableName = "サブプロット表「笑い」" - table = [ - '『大サービス』 -キャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、この殺伐とした番組を和やかにできるのは、自分と相手しかいないと確信する。相手への関係を、属性「相棒」で獲得する。【深度】は1になる。 -クリア条件:相手と一緒に。「サービス」シーンの判定に2回成功する。すると、なんだか番組が楽しくなったような気もするが……変わってない気もする。あなたの戦いはまだ続く。 -報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】', - '『脱げ』 -キャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の衣装をいい感じで脱がせればウケが取れると確信してしまう。相手への関係を、属性「脱がせたい」で獲得する。【深度】は1になる。 -クリア条件:相手に戦闘を挑み。キラートリックで倒す。このとき、相手の衣装はバラバラに粉砕され、ヘルスタイリストが相手を罵倒しながら新しいものを用意することになる。 -報酬:【視聴率】10%増加、500【ソウル】', - '『いい話』 -キャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手はヘコんでいるのか嫌なことがあるのか、表情に乏しい。笑顔を取り戻してやらなければ。相手への関係を、属性「暗い奴」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を3にする。相手は少し笑顔を見せたかもしれないし、光の加減でそう見えただけかもしれない。だが、あなたは確かな手応えを感じる。 -報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】相手がNPCなら600【ソウル】', - '『笑い屋』 -キャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、相手は援護がないとサービスシーンがキツそうだな、と直感する。相手への関係を、属性「真面目な奴」で獲得する。【深度】は1になる。 -クリア条件:相手の登場する「サービス」シーンに自分も登場し、カメラの外から笑い声を出すロールプレイを行う。 -報酬:【視聴率】10%増加、あなたと相手の両方に100【ソウル】', - '『戦闘回避』 -キャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の願いごとに深く共感してしまう。そのため、相手の邪魔はしたくはなくなる。相手への関係を、属性「勝つべき人」で獲得する。【深度】は1になる。 -クリア条件:結果フェイズまで直接相手を殺さない。すると、誰も気づかないかもしれないが、あなたは自分のやるべきことをやったことになる。 -報酬:【視聴率】10%増加、200【ソウル】', - '『親友』 -キャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、その小道具についての会話をきっかけに、相手への興味が芽生える。もしかしたら友達になれるかもしれない。相手への関係を、属性「友人」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にする。すると、あなたと相手は友情のようなもので結ばれるかもしれないし、やはり無理だったのだと、あなたが諦めるかもしれない。 -報酬:【視聴率】10%増加、200【ソウル】', - ] - - end - - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getCmTableResult() - tableName = "CM表" - table = [ - [11, 'あなたのTシャツ/決めポーズの姿が背中にプリントされたTシャツです。そして、フロントにはあの名台詞が!'], - [12, 'あなたのアクションフィギュア/放送中から大人気!職人が一つ一つ入魂の手作り!夜になると、込められた魂が泣き叫びます。'], - [13, 'ヘルーレイボックス/シーズン666の全てがここに……特典映像満載で送る、豪華ボックスセット!予約特典はヘルくんストラップです。'], - [14, 'ヘルエアコン/これさえあれば、火事の最中でも気温は氷点下!逆に家を燃やすこともできますよ。温度調節機能は有料オプションです!'], - [15, 'ヘルおむつ/ヘルギャザーで漏れをストップ、666年間履きっぱなしでも平気!中身がどうなるか保証しません、ヘルおむつ'], - [16, 'ヘルサプリ/寝なくても平気!カラフルな幻覚が見える!でもメイン機能は健康増進です。ヘルサプリで健康生活を!'], - [22, 'ヘルツアーズ/お得な料金で地獄百景を回ろう!苦しむ人間との魂の触れ合いが満載!ヘルツアーズでは、他社ではできない体験をお約束します。'], - [23, 'ヘルテレビ/夜中に女性が出てきますが、気にしなければ大丈夫!アナログヘルテレビは政府の協賛を得ています。'], - [24, 'ヘルビール/アルコール度数666%、ヘルホップ使用。地獄の渇きにはヘルビール……違いの分かる人のために。'], - [25, 'ヘルフォン/ドヤ顔のノマド気取りをぶちのめすこともできます。そう、ヘルフォンならね。'], - [26, 'ヘルまんじゅう/数千年のご愛顧をいただいております、地獄銘菓ヘルまんじゅう。うまい、ヘルうますぎる。しかしながら、食べると死にます。'], - [33, 'ヘルモービル/人を轢けば轢くほど速くなり……走りは別次元へ。ヘルモービルが、お求めやすい価格で新登場。'], - [34, 'ヘル会話教室/隣人をうまく罵れない?イヤな奴に言いくるめられた?ヘル会話を学べば、どんな相手も激昂させられます!'], - [35, 'ヘル金融/金利666%の安心がここに。ヘル金融の取り立ては、非常に紳士的だと評判です。'], - [36, 'ヘル汁(健康飲料)/辺獄で採れた新鮮な毒草を、そのまま粉末にしました。これを飲めば、もう病気や老化の心配はいりません。健康飲料ヘル汁。'], - [44, 'ヘル整形外科/無保険かつ無免許ですが、どんな注文にも応えます。ヘル整形外科は、あなたのおっしゃる通りの外見を実現します!'], - [45, 'ヘル生命保険/すぐ死ぬあなたに、ヘル生命の安全コース。残された人には地獄が待っています。'], - [46, 'ヘル洗剤/どんなにしつこい血糊や汚物も一撃!どんな色の服も地獄の黒に染まります!ヘル洗剤、好評発売中!'], - [55, 'ヘル洗濯機/666層式、音速を超えた回転があなたの衣装を粉々に!なにをしたかったのか忘れれば壮観です。ヘル洗濯機!'], - [56, 'ヘル掃除機/好評の壁面粉砕機能に加えて、今年のモデルには屋根吸引機能も!ヘル掃除機のスイッチを入れるだけで、あなたの家がなくなります。'], - [66, 'ヘル入浴剤/体が溶ける!新感覚で話題を呼んだヘル入浴剤がついに登場!死体の処理には使わないでください。'], - ] - result, number = get_table_by_d66_swap(table) - - return tableName, result, number - end - - def getErTableResult() - tableName = "蘇生副作用表" - table = [ - [11, 'おいそそうな匂いがするようになった'], - [12, 'おまけでヤギが出てきた'], - [13, '髪が蛍光色に変わった'], - [14, '声がロボっぽくなった'], - [15, '先が三角形になったシッポが生えた'], - [16, '頭上に謎のプログレスバーが出ている'], - [22, '性別が変わった'], - [23, '全身にモザイクがかかった'], - [24, '全体的に半透明になった'], - [25, 'ちょっと腐った'], - [26, '肌が蛍光色に変わった'], - [33, '羽が生えた'], - [34, '番組参加中の記憶を失った'], - [35, '額に第三の目が開いた'], - [36, '微妙に浮いてる'], - [44, 'ひよこにかわった'], - [45, '不合格品のスタンプを押された'], - [46, '太った'], - [55, '耳が好きな動物のものに変わった'], - [56, '痩せた'], - [66, '立派な角が額に生えた'], - ] - result, number = get_table_by_d66_swap(table) - - return tableName, result, number - end - - def getWKTableResult() - tableName = "一週間表" - table = [ - [11, '家を追い出されたヘルPが泊まりに来た'], - [12, '危険なオーラを醸し出せるようになり、非常にモテた'], - [13, '地獄落ちを覚悟し、身辺整理を行った'], - [14, '地獄テレビ情報雑誌にインタビューを受けた'], - [15, '実家の商売が好調になるが、客がみんなヘルピープル'], - [16, '信号待ちをしていたら、仕事中の悪魔にサインを求められた'], - [22, '親戚が番組を見ていて、電話で感想を伝えてきた'], - [23, '次の週の護衛天使と知り合いになった'], - [24, '次の週の標的と知り合いになった'], - [25, 'トラウマが残って全く眠れず、酒に溺れた'], - [26, '願いが叶うなら働かなくていいし、仕事を辞めた'], - [33, '願いとは別に出演報酬が振り込まれたので豪遊した'], - [34, '番組中のノリで人をはたいたら、なんだか死んでしまった'], - [35, '番組や悪魔が怖くなって世界中を逃げ回った'], - [36, 'ファンを名乗るストーカーに自宅を荒らされた'], - [44, 'ふと思い立って山に籠り、修行に明け暮れた'], - [45, 'ヘルスタイリストに自宅の衣類をすべて燃やされた'], - [46, 'ヘルドクターが借金の申し込みに来た'], - [55, 'ヘルドレスの偽物を売りつけようとする下級悪魔と戦った'], - [56, '他の回収人のうち一人と同じ職場だったことが明らかに'], - [66, '妙に寄付を募る営業電話がかかってくる週だった'], - ] - result, number = get_table_by_d66_swap(table) - - return tableName, result, number - end - - def getServiceSceneTableResult() - tableName = "サービスシーン表" - sceneTable = [ - '脱衣系サービスシーン表', - '暴力系サービスシーン表', - '旅行系サービスシーン表', - '恋愛系サービスシーン表', - '感動系サービスシーン表', - '別ジャンルサービスシーン表', - ] - sceneGroup, number1 = get_table_by_1d6(sceneTable) - - case sceneGroup - when "脱衣系サービスシーン表" - table = [ - '衣装の不調', - '着替え', - '脱衣麻雀', - '入浴', - '水着で戦う', - '野球拳', - ] - when "暴力系サービスシーン表" - table = [ - '勝ったあとの暴力', - '集団の暴力', - '暴力をのほめかす会話', - '負けた後の暴力', - 'まったく無意味な暴力', - '無意味な暴力', - ] - when "旅行系サービスシーン表" - table = [ - '移動機関の紹介', - '地元の遊びの紹介', - '地元の動物の紹介', - '地元の宿の紹介', - '寝起きドッキリ', - '名物料理の紹介', - ] - when "恋愛系サービスシーン表" - table = [ - 'キスシーン', - '恋に気付く', - '恋に悩む', - 'デートシーン', - '秘密を告白する', - 'ラブシーン', - ] - when "感動系サービスシーン表" - table = [ - '家族の愛に気付く', - 'かっこいいことを言う', - '失敗して落ち込む', - '地元住民と触れ合う', - '死んだ人の話をする', - '高いところでかっこいいことをいう', - ] - else - table = [ - 'サイコサスペンス', - 'スペースオペラ', - '童話', - 'ヒロイックファンタジー', - 'モンスターホラー', - 'ロボ', - ] - end - - resultTmp, number2 = get_table_by_1d6(table) - result = "#{sceneGroup}「#{resultTmp}」を行う。" - number = "#{number1}#{number2}" - - return tableName, result, number - end - - def getSoulTableResult() - tableName = "ソウル放出表" - table = [ - '100', - '200', - '200', - '200', - '300', - '300', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getSceneTelopGenericTableResult() - tableName = "汎用演出表" - table = [ - '大きくて分かりやすい文字でテロップが出る', - '回想に合わせて再現ビデオが流れる', - '関係者が登場人物について語る', - 'ゲストヘルピープルが行動を論評する', - '行動の是非についてヘル視聴者の投票が始まる', - 'ヘルバンドの新曲がBGMとして流れる', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getHairStylistAbuseTableResult(type) - tableName = "ヘルスタイリスト罵倒表" - - hellStylistAbuseTable1 = [ - [11, ' 汁まみれになった'], - [12, ' お爺ちゃんがこのまえ捨てた'], - [13, ' 失敗メイクの'], - [14, ' 低予算の映画のモンスター代わりにされた'], - [15, ' 仲間はずれの'], - [16, ' 悪い意味で成分無調整の'], - [22, ' 宇宙人が中身を抜いていったあとの'], - [23, ' 化学処理班が処理しにきそうな'], - [24, ' 革命直後にギロチンにかけられた'], - [25, ' 狂気の芸術家が想像で作りあげた'], - [26, ' 故郷の村を帝国軍に焼かれた直後の'], - [33, ' 五年ぶりにベッドの下から出てきた'], - [34, ' 高速道路でなんども轢かれた'], - [35, ' 死後六週間の'], - [36, ' 失敗料理を無理に食べた'], - [44, ' 小さい子供がはじめて描いた'], - [45, ' 箪笥と壁の隙間に住み着いた'], - [46, ' 猫がくわえてもってきた'], - [55, ' 有名なタコっぽいモンスターを見てしまった'], - [56, ' 旅行先で財布がないことに気づいた'], - [66, ' 猟奇殺人を趣味にしている'], - ] - hellStylistAbuseTable2 = [ - [11, ' アルマジロ'], - [12, ' イソギンチャク'], - [13, ' カメムシ'], - [14, ' カモノハシ'], - [15, ' クジャク'], - [16, ' クラゲ'], - [22, ' ゴキブリ'], - [23, ' ゴミムシ'], - [24, ' サル'], - [25, ' ドブネズミ'], - [26, ' ナマケモノ'], - [33, ' ナマコ'], - [34, ' うんこ'], - [35, ' フンコロガシ'], - [36, ' ペンギン'], - [44, ' ミジンコ'], - [45, ' 古い人形'], - [46, ' 人食い熊'], - [55, ' 毒トカゲ'], - [56, ' 毛虫'], - [66, ' 野良犬'], - ] - - hellStylistwtable1 = [ - '「まるで『', - '「まるで『', - '「まさに『', - '「まさに『', - '「あなたは『', - '「あなたは『', - ] - hellStylistwtable2 = [ - '』みたいよ!」', - '』みたいだわ!」', - '』じゃないの!」', - '』ね。」', - '』に見えるわ。」', - '』そっくりよ!」', - ] - - case type - when 1 - result, number = get_table_by_d66_swap(hellStylistAbuseTable1) - when 2 - result, number = get_table_by_d66_swap(hellStylistAbuseTable2) - else - result1, num1 = get_table_by_d66_swap(hellStylistAbuseTable1) - result2, num2 = get_table_by_d66_swap(hellStylistAbuseTable2) - before, = get_table_by_1d6(hellStylistwtable1) - after, = get_table_by_1d6(hellStylistwtable2) - result = "#{before}#{result1}#{result2}#{after}" - number = "#{num1},#{num2}" - end - - return tableName, result, number - end - - def getSkillTableResult(type) - skillTableFull = [ - ['職業', ['無職', '芸術家', '研究者', '家事手伝い', '学生', '悪漢', '労働者', '探偵', '大物', '医師', '公務員']], - ['動作', ['叫ぶ', '閃く', '斬る', '振る', '投げる', '殴る', '蹴る', '跳ぶ', '撃つ', '掴む', '待つ']], - ['小道具', ['ピアス', '髪飾り', '銃', 'ネックレス', 'ベルト', '眼鏡', '帽子', '時計', '剣', 'リング', 'タトゥー']], - ['衣装', ['ネイキッド', 'アウトドア', 'エスニック', 'ヒップホップ', 'ミリタリー', 'フォーマル', 'トラッド', 'ゴシック', 'パンク', 'メタル', 'アイドル']], - ['情動', ['愛', '喜び', '期待', '焦り', '自負', '怒り', '悲しみ', '嫉妬', '恐怖', '恥', '嫌悪']], - ['願望', ['死', '復讐', '勝利', '支配', '獲得', '繁栄', '強化', '安全', '健康', '長寿', '生']], - ] - skillTable, num1 = get_table_by_1d6(skillTableFull) - skillGroup, table = skillTable - if type == "T" - tableName = "指定特技ランダム決定表" - skill, num2 = get_table_by_2d6(table) - result = "「#{skillGroup}」《#{skill}》" - number = "#{num1},#{num2}" - else - tableName = "指定特技分野ランダム決定表" - result = skillGroup - number = num1 - end - - return tableName, result, number - end - - def getExtraTableResult(type) - tableName = "エキストラ表" - extraTable1 = [ - [11, "あなたの親友である"], - [12, "あなたと恨んで付け狙っている"], - [13, "いそがしく電話で話し込んでいる"], - [14, "ころんで逃げ損ねた"], - [15, "シーンの背景の持ち主である"], - [16, "架空の人物だと思われていた神"], - [22, "過去のシーズン優勝者である"], - [23, "気分よく酔っ払った"], - [24, "恐怖で身をすくませている"], - [25, "業界では有名な"], - [26, "幸せな家庭を持つ"], - [33, "広域指名手配されている"], - [34, "今朝のニュースで特集されていた"], - [35, "常に微笑みを絶やさない大物"], - [36, "真実の探求の過程で発狂した"], - [44, "地元では負けを知らない"], - [45, "非常に動作にキレのある"], - [46, "普通の"], - [55, "変身ヒーローの正体である"], - [56, "『#{getNameTableResult(0)[1]}』の異名を持つ"], - [66, "歴史上の人物だが実は生きていた"], - ] - extraTable2 = [ - [11, "サラリーマン"], - [12, "スポーツ選手"], - [13, "チンピラ"], - [14, "ドライバー"], - [15, "ねずみ"], - [16, "パイロット"], - [22, "映画監督"], - [23, "犬"], - [24, "刺客"], - [25, "主婦"], - [26, "小説家"], - [33, "雀士"], - [34, "政治家"], - [35, "大金持ち"], - [36, "大男"], - [44, "謎の美女"], - [45, "猫"], - [46, "美少女"], - [55, "文化人"], - [56, "勇者"], - [66, "神"], - ] - extraTable3 = [ - [11, "怪しい箱の中から"], - [12, "哀れな犠牲者を殺しながら"], - [13, "牛に乗りつつ"], - [14, "馬に乗りつつ"], - [15, "壁を粉砕しながら"], - [16, "壁を粉砕しながら"], - [22, "濃い霧の中からゆっくりと"], - [23, "自動ドアを抜けながら"], - [24, "上空から急降下しつつ"], - [25, "全速力で走りつつ"], - [26, "高いところから"], - [33, "テーマ音楽とともに"], - [34, "通りがかりに"], - [35, "名前と職業のテロップと一緒に"], - [36, "バイクに乗りつつ"], - [44, "墓をやぶって"], - [45, "部下を大勢引き連れて"], - [46, "吹きすさぶ風を纏い"], - [55, "武器を構えつつ"], - [56, "ヘルポータルを通って"], - [66, "炎をバックに"], - ] - extraTable4 = [ - [11, "愛らしく登場"], - [12, "あざやかに登場"], - [13, "あっさりと登場"], - [14, "怪しく登場"], - [15, "荒々しく登場"], - [16, "勢い良く登場"], - [22, "美しく登場"], - [23, "偉そうに登場"], - [24, "おごそかに登場"], - [25, "恐ろしく登場"], - [26, "かっこよく登場"], - [33, "気取って登場"], - [34, "死の予感とともに登場"], - [35, "しめやかに登場"], - [36, "上品に登場"], - [44, "だらしなく登場"], - [45, "知的に登場"], - [46, "なごやかに登場"], - [55, "なめらかに登場"], - [56, "不機嫌に登場"], - [66, "陽気に登場"], - ] - - case type - when 1 - result, number = get_table_by_d66_swap(extraTable1) - when 2 - result, number = get_table_by_d66_swap(extraTable2) - when 3 - result, number = get_table_by_d66_swap(extraTable3) - when 4 - result, number = get_table_by_d66_swap(extraTable4) - else - result1, num1 = get_table_by_d66_swap(extraTable1) - result2, num2 = get_table_by_d66_swap(extraTable2) - result3, num3 = get_table_by_d66_swap(extraTable3) - result4, num4 = get_table_by_d66_swap(extraTable4) - result = "#{result1}#{result2}が#{result3}#{result4}" - number = "#{num1},#{num2},#{num3},#{num4}" - end - - return tableName, result, number - end - - def getpcTableResult() - tableName = "製作委員決定表" - table = [ - [11, 'ヘルライオン'], - [12, 'ヘルライオン'], - [13, 'ヘルライオン'], - [14, 'ヘルクロウ'], - [15, 'ヘルクロウ'], - [16, 'ヘルクロウ'], - [22, 'ヘルスネーク'], - [23, 'ヘルスネーク'], - [24, 'ヘルスネーク'], - [25, 'ヘルドラゴン'], - [26, 'ヘルドラゴン'], - [33, 'ヘルドラゴン'], - [34, 'ヘルフライ'], - [35, 'ヘルフライ'], - [36, 'ヘルフライ'], - [44, 'ヘルゴート'], - [45, 'ヘルゴート'], - [46, 'ヘルゴート'], - [55, 'ヘルベア'], - [56, 'ヘルベア'], - [66, 'ヘルベア'], - ] - result, number = get_table_by_d66_swap(table) - - return tableName, result, number - end - - def getohTableResult() - tableName = "実際どうだったのか表" - table = [ - 'おおむね【興行収入】の予測は正確だった。増減はなしで、回収人はしばらく公共の場所でモテる。', - '思ったよりいけた!【興行収入】が4D6億ヘル円増加。ジャンルの佳作として五年後も話に上る。', - 'ちょっとゴタついて公開時期を逃した。【興行収入】が4D6億ヘル円減少。ヘルーレイの売り上げに期待しよう。', - '何の間違いか、同時期に他シーズンの映画版が公開される。【興行収入】は半分になる。', - 'なんの間違いか、ヘルアカデミー賞をいっぱい取った。【興行収入】は2倍になる!', - 'エピソード中の表現が微妙かつ厄介な問題を引き起こし、たくさんのヘルピープルが嫌な気分になったうえ公開ナシに。', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getplTableResult() - tableName = "ヘルライオンタスク表" - table = [ - '「フランス語。」指定特技は《芸術家》。なぜか登場人物全員がフランス語でしか会話できないシーンが設定される。知っている限りのフランス語を駆使して意思疎通を試みろ!', - '「会話がない。」指定特技は《跳ぶ》。会話そのものが下劣でエンターテイメント的だということで、全く言葉を発することが許されないシーン表が設定される。ジェスチャーで頑張れ!', - '「名言の引用。」指定特技は《髪飾り》。過去の名作映画や小説、歴史上の出来事などからパクってきた名言しか口にできないシーンが設定される。教養がないと喋れない!', - '「登場人物の増加。」指定特技は《トラッド》。登場人物が無駄に倍に増え、それぞれ個性的な悩みや事件を語り始める。このままでは面倒だしギャラもかさむので、全員殺そう。', - '「漠然とした不安。」指定特技は《自負》。特定のものごとではなく、ぼんやりとした不安感に延々苦しんだり落ち込んだりするシーンを強要される。これを退屈にしないのは難しい!', - '「長回し。」指定特技は《生》。カットの切り替わりなしで、30分ほど同じシーンが続く。NGは許されない。これで間を持たせられるのはプロの俳優くらいのものだが、回収人は演技の素人だ。', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getprTableResult() - tableName = "ヘルクロウタスク表" - table = [ - '「しょぼいゲスト。」指定特技は《悪漢》。一般人や犬、弟やお母さんがゲストとして登場する。本来のゲストとの差額は着服される。事情を知らされていないゲストとうまく絡め!', - '「実家での撮影。」指定特技は《叫ぶ》。撮影場所が実家になる。本来のロケ費用は着服される。家人を説得して、うまく撮影許可をもらわなければ赤字が出てしまうだろう!', - '「普段着での撮影。」指定特技は《眼鏡》。なぜかヘルスタイリストが休みで、その分の人件費と衣装代は着服される。普段着のまま超常のアクションをこなすのは不可能に近い!', - '「徒歩で移動する。」指定特技は《ゴシック》。ヘルポータルの予算を着服された。ひたすらシーンまで歩かないと撮影すらできない。撮影前に疲れ切ってしまうと、観客にも伝わるだろう。', - '「特殊効果が出ない。」指定特技は《期待》。リアルタイム特殊効果の予算を着服された!予算なしで働こうとしないヘルSFXエンジニアを、なんとか泣き落としで働かせろ!', - '「食事が出ない。」指定特技は《獲得》。食事の時間だが、ヘル仕出し弁当が来ない。その分の予算を着服されたのだ。空腹のままいい演技をするには、気合に頼るしかない。', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getpnTableResult() - tableName = "ヘルスネークタスク表" - table = [ - '「仇。」指定特技は《家事手伝い》。過去改変により、任意の相手が、急に親の仇や恋人の仇になる。戸惑わずに怒りに燃えよう。なぜこうなったのか、考えてしまってはダメだ!', - '「些細なことから大喧嘩。」指定特技は《待つ》。任意の相手と、どうでもいい理由でけんかをすることを強要される。本当にどうでもよくなって仲たがいをやめることは許されない。', - '「利益が相反する。」指定特技は《ネックレス》。任意の相手の願いごとと自分の願いごとが両立しないことをアピールさせられる。そうでなくても、むりやり理由をひねり出せ!', - '「神敵。」指定特技は《ネイキッド》。趣味や宗教を理由に、任意の相手と仲たがいすることを強要される。話してわかってしまったり、趣味の幅が広がってはいけない。', - '「幼児期のトラウマ。」指定特技は《嫉妬》。過去改変で哀しい記憶が捏造され、猟奇殺人犯としてキャラ付される。若干引いてしまったり、悲しさを乗り越えてはダメだ。狂え!', - '「人類一般への憎しみ。」指定特技は《復讐》。理由なく人を憎むことを強要される。もともと性格のいい回収人にとってはかなりの難行だ。人類の悪いところ探しをしよう!', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getpdTableResult() - tableName = "ヘルドラゴンタスク表" - table = [ - '「バリエーションを見たくてNG。」指定特技は《大物》。別に悪い演技ではないのに、ちょっと違うバリエーションを何度もやらされるぞ。キレずに耐えてくれ!', - '「なんか違うからNG。」指定特技は《殴る》。回収人の演技に難癖をつけられた。しかしどんな演技をすればいいのか教えてはくれない。キレずに耐えてくれ!他の人を殴れ!', - '「まだ時間があるからNG。」指定特技は《タトゥー》。クソみたいな理由でNGを出されたが、とにかくキレずに耐えてくれ。ヘルドラゴンが機嫌を損ねると広告費が削られる!', - '「予算を使い切りたくてNG。」指定特技は《ネイキッド》。まだ人件費が使えるからもう一回、とかいう理由でやり直しだ。キレずに耐えてくれ。ヤツは金を持ってるんだ!', - '「機嫌が悪いのでNG。」指定特技は《怒り》。家で何かイヤなことがあったので難癖をつけられた。もう、なにをしてもOKは出ない。キレずに耐えてくれ。いつかは終わる!', - '「お前そのものがNG。」指定特技は《安全》。回収人の人選そのものに難癖をつけられた。あなたにNGを出すことだけが目的だ。キレずに耐えてくれ。相手は超強いのだ。', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getpfTableResult() - tableName = "ヘルフライタスク表" - table = [ - '「汚いトイレ。」指定特技は《探偵》。すごく不衛生な場所に背景が変更される。肥溜めと見まごうばかりのトイレか、肥溜めだ。臭いに耐えられるかどうか、そこが勝負の分かれ目だ!', - '「芸術的陰部隠し。」指定特技は《跳ぶ》。全裸でシーンを過ごすが映ってはいけないものがある。本来なら水着の布地がある部分がカメラに映らないように、障害物を活用しろ!', - '「触手。」指定特技は《ベルト》。唐突に触手モンスターが登場する。彼は紳士的だが容赦なく襲いかかってくるので、セクシーに負けろ!さもなくば観客はがっかりするだろう!', - '「ヌルヌル。」指定特技は《トラッド》。なんだか粘液が入ったバケツが登場する。これを被ってシーンを始めろというのだ。成分もわからない粘液はイヤだが、なんとか耐えろ!', - '「病原体を経口摂取する。」指定特技は《恐怖》。病気の原因になりそうなものを無理やり食べることに。具体的には排泄物や腐敗したもの、最初から不衛生なものなどだ。', - '「局部へのひどい打撃。」指定特技は《死》。ヘルADや他のキャラクターから局部を強打されることを強要される。死なずにうまく痛がれ。下手をするとショックでそのまま死ぬ!', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getpgTableResult() - tableName = "ヘルゴートタスク表" - table = [ - '「アイドルが仲間として登場。」指定特技は《医師》。推しアイドルが回収人の味方として登場するので、スムーズに関係を築いて共闘し、相手を立てよう。リスペクトだ!', - '「アイドルが敵として登場。」指定特技は《蹴る》。推しアイドルが標的の味方。回収人の敵として登場!見せ場を用意してあげつつ、うまく倒せ。一方的ではダメだ!', - '「アイドルが無意味に登場。」指定特技は《剣》。推しアイドルが登場するが、なぜ登場するのか誰もわからない。本人も役を教えられていない。即興で何とかしろ!', - '「アイドルの仲間になる。」指定特技は《エスニック》。推しアイドルの仲間となり、唐突に恋や冒険をすることに。黄金の魂と関係ない話が続くが、観客にそれを気づかせるな!', - '「アイドルと握手。」指定特技は《愛》。推しアイドルが急に出てきて握手してくれる。急なことだが、とまどってはいけない。流れるように話題を作って会話し、握手へのコメントをしよう」!', - '「混ざってダンス。」指定特技は《健康》。いきなりダンスシーンが始まる!ただし回収人はバックダンサーだ。歌え!踊りきれ!息切れしたり笑顔が引きつるとNGだ!', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getpbTableResult() - tableName = "ヘルベアタスク表" - table = [ - '「ヘルふとん。」指定特技は《大物》。地獄のような寝心地を提供する、一枚200万ヘル円のヘルふとんをアピールすることに。素材は絶対そんなにしないから、技術を強調しよう。', - '「ヘルハンドバッグ。」指定特技は《掴む》。無限にものが入るハンドバッグをアピールだ。ただし狙ったものを取り出せないし、バッグのなかにバッグを入れると、ひどいことが起きる。', - '「へルマスク。」指定特技は《帽子》。完全にヘルPの頭部を再現した高級マスクを被り、その素晴らしさをアピールしながら映画を撮影しよう。なお、視界はすごく悪い。', - '「ヘルカメラ。」指定特技は《アイドル》。かならず心霊写真が写るカメラを観客に売りつけろ!霊障が起きることもあるんだが、それを悟られてはいけない。写真をはっきり見られるな!', - '「ヘルウォッチ。」指定特技は《焦り》。時間はわからないが超かっこいい時計をアピール。それってブレスレットじゃないのか、と突っ込まれる前に逃げ切るんだ!', - '「ヘルお札。」指定特技は《繁栄》。願いを成就する悪霊が、あなたの成功を確約!その後は成功したまま事故で死ぬことになるが、そんなの些細なことだ!', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - TABLES = - { - - 'ANSPT' => { - :name => "サブプロット表「対悪魔」", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -『退魔の印』\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の持っているものが有名なマジックアイテムであり、将来的に悪魔と戦うときに有用だと確信する。貸してもらう約束をとりつけなければ!相手への関係を、属性「退魔師」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると、相手は小道具を譲ることに同意してくれる。それが役に立つのかは、また別の話。\n報酬:【視聴率】10%増加、200【ソウル】 -『サービスしない』\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の姿がヒントになって、サービスシーンが失敗すればヘルピープルがガッカリするだろうと気づく。相手への関係を、属性「失敗要因」で獲得する。【深度】は1になる。\nクリア条件:相手がサービスシーンを失敗したところに居合わせる。結局、心の声なども放送されているので、あなたの無謀な試みはヘル視聴者に筒t抜けだ。\n報酬:【視聴率】10%増加、あなたと相手の両方に200【ソウル】 -『悪魔の手下』\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の職業がなんであるのか気づく……それは昔からあなたが悪魔の手下とみなしている職業だった!相手への関係を、属性「悪魔の手下」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると誤解が解けて、職業的偏見も解消される……あるいは、本当に悪魔の手下であったことが判明する。\n報酬:【視聴率】10%増加、200【ソウル】 -『番組失敗』\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の抱いている興奮や不安を、ヘルPも同様に抱いていることが分かる。つまり、この番組がうまくいかなければ、悪魔が一匹苦しむ。相手への関係を、属性「気づき」で獲得する。【深度】は1になる。\nクリア条件:結果フェイズ開始時に【視聴率】が30%以下になっていること。これで奴をリンボにトばせるかもしれない。\n報酬:【視聴率】10%増加、200【ソウル】 -『不殺』\n標的が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、標的を殺さないことで悪魔の力を削ぐことができると気づく。そのためには、相手を守らないといけない。相手への関係を、属性「守るべき人」で獲得する。【深度】は1になる。\nクリア条件:結果フェイズまで相手を生き残らせる。怒るヘルPに皮肉の一つでも言ってやるといいだろう。\n報酬:【視聴率】10%増加、700【ソウル】 -『仲間』\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手が悪魔と戦う際に力になってくれる人物だと確信する。愚かな番組への協力をやめさせれば、きっと大丈夫だ。相手への関係を、属性「同士」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を3にする。結局断られるかもしれないが、あなたは言うだけ言ったことで満足した。\n報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】 相手がNPCなら600【ソウル】 -TABLE_TEXT_END - }, - - 'MASPT' => { - :name => "サブプロット「意地悪」", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -『二位狙い』\nキャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたはがっかりした相手の顔を見たくなる。相手への関係を、属性「二位にしたい」で獲得する。【深度】は1になる。\nクリア条件:結果フェイズに他のサブプロットクリアの処理が終わったあとで、相手の【ソウル】が回収人のなかで最も多い状態ではないこと。ギリギリの二位にしてやることで、いい顔が見られるだろう。\n報酬:【視聴率】10%増加、相手の所持【ソウル】と同じだけの【ソウル】(最低0、最大600) -『偏見』\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の職業に対して根強い偏見を持っていることになる。どんどんイヤミを言っていこう。相手への関係を、属性「いらない奴」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を3にする。あなたの偏見は解消されるのかもしれないし、あるいは相手がひどく落ち込むことで、あなたが勝利を確信するのかもしれない。\n報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】 相手がNPCなら600【ソウル】 -『ダメ衣装』\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の衣装が非常にダメだと確信する。罵倒したい。いやむしろ罵倒しないといけない。相手への関係を、属性「服がダメ」で獲得する。【深度】は1になる。\nクリア条件:相手と同じシーンに三回登場し、三シーンにわたってヘルスタイリスト罵倒表を使った罵倒を行う。オリジナルの罵倒でもかまわない。\n報酬:【視聴率】10%増加、あなたと相手の両方に100【ソウル】 -『弱そうな奴』\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の動きが非常に一般人じみていて簡単に倒せそうであると確信する。相手への関係を、属性「弱そう」で獲得する。【深度】は1になる。\nクリア条件:相手に戦闘を挑みキラートリックで倒す。ラッキーヒットだったのかもしれないし、相手は本当にチョロかったのかもしれない。だが、そんなことは結果の前には関係ない。\n報酬:【視聴率】10%増加、500【ソウル】 -『ニセブランド』\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の持っているアイテムがニセのブランド品だと確信する!これはしつこく言い立てなければ!相手への関係を、属性「情報弱者」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。あなたの間違いが判明するか、あなたが正しかったことが判明するか、あるいはどうでもよくなるか。選ぶのはあなただ!\n報酬:【視聴率】10%増加、200【ソウル】 -『泣かせたい』\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の泣き顔がヘル視聴者(と、あなた)に非常な満足感を与えてくれるであろうと確信する。相手への関係を、属性「泣かせたい人」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。相手は泣き出すか、そっと涙を流す……が、理由は相手が決定する。血が目に入っただけかもしれない。\n報酬:【視聴率】10%増加、200【ソウル】 -TABLE_TEXT_END - }, - - 'MOSPT' => { - :name => "サブプロット表「金儲け」", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -『悪魔の代わり』\n回収人から一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の願いを叶える現実的な方法を思いつく。まとまった予算があれば可能だ。あとは売り込むだけ!相手への関係を、属性「新規顧客」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を3にする。すると、相手は承諾する……番組で負けたらの話だが。そして約束は守られない可能性がある。\n報酬:【視聴率】10%増加、400【ソウル】 -『スカウト』\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、相手こそあなたのビジネスに必要な人材だったと気がつく。番組の勝敗がどうなるにせよ、番組終了後に相手を確保しておきたい。相手への関係を、属性「即戦力」で獲得する。【深度】は1になる。\nクリア条件:このサブプロットを獲得した次のセッションの導入シーンの始めに相手が登場する。地獄に堕ちているとダメ。\n報酬:【視聴率】10%増加、200【ソウル】 -『売り出し』\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、ヘルドレスの下に隠された相手の体格が、マスのニーズにぴったりと合致するものだと確信する。マネージメントして大儲けだ!相手への関係を、属性「モデル候補」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると相手のプロフィールをある程度把握することに成功し、あとで勝手に売り出すことが可能になる。\n報酬:【視聴率】10%増加、200【ソウル】 -『クローン』\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、その小道具はデザインがかっこいいうえに、ちょっとした施設があれば簡単にコピー品を量産できることに気がつく。相手への関係を、属性「オリジナル」で獲得する。【深度】は1になる。\nクリア条件:相手を戦闘で一度倒す。ヘルERに送られる相手の小道具をそっと抜き取り、グレーな感じの工場に送ろう。来週には世界中に出回っているはずだ。\n報酬:【視聴率】10%増加、300【ソウル】 -『チャンプ』\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の身のこなしのなかに、任意の格闘技の世界チャンプになれる素質を見て取る。いいトレーナーをつければイケるはずだ!相手への関係を、属性「原石」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると、相手は興味を示した、とあなたが確信する。チャンピオンのマネージャーとして栄華を極めるあなたの未来が目に浮かぶ。\n報酬:【視聴率】10%増加、200【ソウル】 -『ゆるキャラ』\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手のムードにぴったりのキャラを思いつく。あなたの考えた変な語尾をつけさせることができれば、大ヒット間違いなしだ……!相手への関係を、属性「中身」で獲得する。【深度】は1になる。\nクリア条件:語尾を一つ指定する。相手が登場するメインフェイズのうち三つで、プレイヤーのものを含む発言すべてにその語尾をつけて喋るとクリア。他のプレイヤーやゲームマスターに語尾の欠落を指摘されるとNG。\n報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】 -TABLE_TEXT_END - }, - - 'PASPT' => { - :name => "サブプロット表「仕切り」", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -『協力しろ』\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手は番組の内容にうんざりしていて、はなから協力する気がないのだと確信する。説得して番組を盛り上げるようにしなくては!相手への関係を、属性「非協力的」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を3にする。すると相手はあなたの意気込みを分かってくれたような……くれないような。まあとにかく一区切りがつく。\n報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】相手がNPCなら600【ソウル】 -『願いごと変更』\nキャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の願いは番組的によくないものだと確信する。もっと盛り上がるような、いい願いに変えさせなければ!相手への関係を、属性「願いが下手」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると、相手は願いごとをあなたが提案したものに変更することに同意する。そして、後で本当に変更したりしなかったりするだろう。\n報酬:【視聴率】10%増加、200【ソウル】 -『少しの助け』\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手は自分が手を貸してやらないとダメな奴だと直感する。放っておいたらなんの役にも立たずにいるだけになってしまうだろう。相手への関係を、属性「一人ではダメ」で獲得する。【深度】は1になる。\nクリア条件:相手に対して判定への協力を行い、その判定が成功する。すると相手の成功にも自分の協力にも満足がいき、感動的なBGMも流れる。\n報酬:【視聴率】10%増加、クリア条件達成時の相手への関係【深度】×200【ソウル】 -『トリビア』\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の職業的知識をトリビアとして披露することが番組には不可欠だと確信してしまう。なんとかして聞き出さなければ。相手への関係を、属性「トリビア係」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。いくつか職業的知識がヘル視聴者に披露されたことで、視聴者ではなくあなたの知識欲が満たされた。\n報酬:【視聴率】10%増加、200【ソウル】 -『決め台詞』\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手が小道具を使うときにドラマティックな決め台詞を使えば番組的にオイシイと気づく。言わせたい……!相手への関係を、属性「素人」で獲得する。【深度】は1になる。\nクリア条件:相手が参加する戦闘の開始時に、あなたの考えた決め台詞を相手に二回言わせる。途中で台詞を変えたらカウントしなおし。\n報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】 -『テコ入れ回避』\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、こんな人がいるんじゃあ番組の視聴率も期待できないと確信してしまう。頑張らなければ。誰が?あなたが!相手への関係を、属性「売れなさそう」で獲得する。【深度】は1になる。\nクリア条件:結果フェイズ開始時に【視聴率】が40%以上になっている。危ない場面もあったかもしれないが、とりあえずOKだ。\n報酬:【視聴率】10%増加、300【ソウル】 クリア時にフィーバーが発生していれば、さらに300【ソウル】 -TABLE_TEXT_END - }, - - 'POSPT' => { - :name => "サブプロット表「人気」", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -『踏み台』\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手のようなムードの人物と一緒にサービスシーンを行えばヘル視聴者に愛されると確信する。相手への関係を、属性「踏み台」で獲得する。【深度】は1になる。\nクリア条件:相手と一緒にサービスシーンを成功させる。意図していたのかは不明だが、相手のアシストによりサービスは成功、ちょっと実況されたりもする。\n報酬:【視聴率】10%増加、200【ソウル】 -『器用さ』\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、どんな相手と組ませてもソツなくこなすマルチな人材としてヘルPにチヤホヤされる未来が目に浮かぶ。まずはあいつからだ。相手への関係を、属性「最初の課題」で獲得する。【深度】は1になる。\nクリア条件:合計三人のキャラクターと一緒にサービスシーンを三回成功させる。それぞれ違うキャラクターと行うこと。成功するたびにヘル視聴者はあなたの器用さに感銘を受ける。\n報酬:【視聴率】10%増加、500【ソウル】 クリア時にフィーバーが発生していれば、さらに300【ソウル】 -『主役争い』\nキャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の願いごとはヘル視聴者にウケて人気が出てしまいそうだと直感する。なんとか相手を自分のストーリーに巻き込まなければ。相手への関係を、属性「脇役候補」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を3にする。相手のことを深く知り、ヘルカメラに向かって事情を語らせることで、こいつのストーリーは終わったと確信できた!\n報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】 相手がNPCなら500【ソウル】 -『アレを奪え』\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の持っているものは自分にこそふさわしいと確信する。ヘルスタイリストのチョイスは間違っていた。あれはあなたのものだ!相手への関係を、属性「アイテムハンガー」で獲得する。【深度】は1になる。\nクリア条件:暴力で奪うなら、相手を戦闘で一度倒す。譲ってもらいたいなら、相手への関係の【深度】を3にする。どちらにせよ、クリア条件を達成した時点であなたは高揚感に包まれて満足してしまい、結局小道具はいらないものだったと悟る。\n報酬:【視聴率】10%増加、クリア条件達成時の相手への関係【深度】×200【ソウル】 -『振り付け』\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手のなにげない動きに対して、今年の流行ナンバーワンになる可能性を見て取る。あの振り付けを盗まなければ……!相手への関係を、属性「無自覚な天才」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると相手は振り付けを教えてくれて、あなたは完全にそれをモノにする。流行るかどうかはまた別の問題だ。\n報酬:【視聴率】10%増加、200【ソウル】 -『着こなし』\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、相手のヘルドレスの着こなしはあなたを完全に凌駕していると確信してしまう。他の面では勝っているのに。相手への関係を、属性「ファッショナブル」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると相手は着こなしについて丁寧な、あるいは短いが核心を突いていると思われる助言をあなたにしてくれる。役に立ったり立たなかったりするだろう。\n報酬:【視聴率】10%増加、200【ソウル】 -TABLE_TEXT_END - }, - - 'UMSPT' => { - :name => "サブプロット表「恨み」", - :type => '1d6', - :table => <<'TABLE_TEXT_END' -『悲しい過去』\nキャラクターから一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、相手と同じ職業の人に虐げられた悲しい過去が、あなたの脳裏にフラッシュバックする。相手への関係を、属性「奴らの同類」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。相手を深く知っていくなかで、あなたの恨みは溶けて消えるか、さらに深まって人格の一部になるだろう。\n報酬:【視聴率】10%増加、200【ソウル】 -『昔の恋人』\nキャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、相手とあなたの昔の恋人がまったく同じ癖を持っている事が判明する!もしや……そして、手ひどくフラれた過去がフラッシュバックする。相手への関係を、属性「昔の恋人」で獲得する。【深度】は1になる。\nクリア条件:なぜフッたのか聞き出すため戦闘で一度倒す。すると、相手は理由を語るか、あるいはただの人違いであったことが判明する。いずれにせよあなたは人間的に成長できる……かもしれない。\n報酬:【視聴率】10%増加、クリア条件達成時の【関係深度】×200【ソウル】 -『間違い』\nキャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手と同じモチベーションで行動する人に敗北した過去が、あなたの脳裏にフラッシュバックする。奴らは間違っている。それを地獄に知らしめなければ!相手への関係を、属性「悪人」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると、相手は分かってくれる。または、あなたは理解してもらえたと思い込む。今日は久々にいい気分で眠れそうだ。\n報酬:【視聴率】10%増加、あなたと相手の両方に100【ソウル】 -『破れた夢』\nキャラクターから一人を選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたはかつて同じ夢を抱き、そして破れていたことが判明する。夢を諦める悲しいシーンが脳裏にフラッシュバックする。相手への関係を、属性「破滅しそう」で獲得する。【深度】は1になる。\nクリア条件:相手がサブプロットを達成したシーンに登場する。すると、あなたは相手の成功を我がことのように喜んでいる自分に気づく。もしかしたら、これがきっかけで変われるのかもしれない。\n報酬:【視聴率】10%増加、300【ソウル】 -『仇の手下』\nキャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、その小道具にはあなたが生涯の敵として定めた人物が関わっていることが明らかになる。そんなものを使うとは……許せん!相手への関係を、属性「奴らの手下」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にする。すると、相手は本当に奴らの手下であると確信できる。本当のところは不明。そのあとに戦闘を挑み、一度相手を倒せ。すると、あなたは満足する。次は奴だ。\n報酬:【視聴率】10%増加、300【ソウル】 -『服よこせ』\nキャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、その衣装は本当はあなたが着たかったものだと判明する。ヘルスタイリストへの抗議がひどい罵倒とともに却下されるシーンが脳裏にフラッシュバックする。相手への関係を、属性「服よこせ」で獲得する。【深度】は1になる。\nクリア条件:相手への関係の【深度】を2以上にし、かつ相手からあなたへの関係の【深度】を1以上にする。根負けした相手はちょっとヘルドレスを貸してくれて、あなたは満足する。ちなみに、本当に似合っているかどうかは関係ない。\n報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】 -TABLE_TEXT_END - }, - }.freeze - - setPrefixes([ - 'HST', - 'ST[1-2]?', - 'DWT', 'DeathWT', - 'RWT', 'RevengeWT', - 'VWT', 'VictoryWT', - 'PWT', 'PossesionWT', - 'CWT', 'ControlWT', - 'FWT', 'FlourishWT', - 'IWT', 'IntensifyWT', - 'HWT', 'HealthWT', - 'SaWT', 'SafetyWT', - 'LWT', 'LongevityWT', - 'EWT', 'ExistWT', - 'NAME[1-3]?', 'NAME[1-3]?', - 'OSPT', 'OccultSPT', - 'FSPT', 'FamilySPT', - 'LoSPT', 'LoveSPT', - 'JSPT', 'JusticeSPT', - 'TSPT', 'TrainingSPT', - 'BSPT', 'BeamSPT', - 'CMT', - 'EST', 'sErviceST', - 'SOUL', - 'STGT', - 'HSAT[1-2]?', - 'EXT[1-4]?', - 'SKLT', - 'SKLJ', - 'ERT', - 'WKT', - 'PCDT', - 'OHT', - 'PCT1', - 'PCT2', - 'PCT3', - 'PCT4', - 'PCT5', - 'PCT6', - 'PCT7', - 'JD.*' - ] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/KillDeathBusiness_Korean.rb b/src/src_bcdice/diceBot/KillDeathBusiness_Korean.rb deleted file mode 100644 index 6012555d4..000000000 --- a/src/src_bcdice/diceBot/KillDeathBusiness_Korean.rb +++ /dev/null @@ -1,1504 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class KillDeathBusiness_Korean < DiceBot - # ゲームシステムの識別子 - ID = 'KillDeathBusiness:Korean' - - # ゲームシステム名 - NAME = 'Kill Death Business (한국어)' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Korean:Kill Death Business' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - " > 펌블(판정 실패.【시청률】이 20%감소)" - elsif dice_total >= 12 - " > 스페셜(판정 성공.【시청률】이 10%증가)" - elsif total >= target - " > 성공" - else - " > 실패" - end - end - - def rollDiceCommand(command) - debug("rollDiceCommand command", command) - - # 판정체크는 먼저 처리 - case command - when JUDGE_DICE_REG - result = judgeDice(command) - text = "판정#{result}" - return text - end - - # 판정 이외라면 표 커멘드의 처리를 한다 - return rollTableCommand(command) - end - - JUDGE_DICE_REG = /(^|\s)JD(\d+)([\+\-]\d+)?(,(\d+))?($|\s)/i.freeze - - def judgeDice(command) - unless JUDGE_DICE_REG === command - return '1' - end - - target = Regexp.last_match(2).to_i - modify = Regexp.last_match(3).to_i - fumble = Regexp.last_match(5).to_i - - result = "" - - if target > 12 - result += "【#{command}】 > 난이도가 12이상은 스페셜만 성공.\n" - target = 12 - end - - if target < 5 - result += "【#{command}】 > 난이도의 최저치는 5.\n" - target = 5 - end - - if fumble < 2 - fumble = 2 - elsif fumble > 11 - result += "【#{command}】 > 스페셜을 내면 반드시 성공이므로, 펌블치은 11으로 한다.\n" - fumble = 11 - end - - number, diceText, = roll(2, 6) - - result += "【난이도#{target}、보정#{modify}、펌블치#{fumble}】 > 주사위 눈(#{diceText}) > " - - if number == 2 - result += "주사위 눈이 2이므로 펌블!(판정 실패.【시청률】이 20%감소)" - elsif number == 12 - result += "주사위 눈이 12이므로 스페셜!(판정 성공.【시청률】이 10%증가)" - elsif number <= fumble - result += "주사위 눈이 펌블율 이하이므로 펌블!(판정 실패.【시청률】이 20%감소)" - else - number += modify - if number < target - result += "달성치#{number}、난이도미만이므로 판정 실패!" - else - result += "달성치#{number}、난이도이상이므로 판정 성공!" - end - end - - return result - end - - def rollTableCommand(command) - tableName = "" - result = "" - - case command - - when "HST" - tableName, result, number = getHistoryTableResult - - when /^ST(\d)?$/ - # 씬표 - type = Regexp.last_match(1).to_i - - tableName, result, number = getSceneTableResult(type) - - when /^.+WT$/i - # 소원표 - tableName, result, number = getWishTableResult(command) - - when /^NAME(\d)?$/ - # 만능이름표 - type = Regexp.last_match(1).to_i - tableName, result, number = getNameTableResult(type) - - when /^.+SPT$/i - # 서브플롯표 - tableName, result, number = getSubprotTableResult(command) - - when "CMT" - # CM표 - tableName, result, number = getCmTableResult() - - when "ERT" - # 소생 부작용 표 - tableName, result, number = getErTableResult() - - when "WKT" - # 일주일간 표 - tableName, result, number = getWKTableResult() - - when /^EST$/i, /^sErviceST$/i - tableName, result, number = getServiceSceneTableResult() - - when "SOUL" - tableName, result, number = getSoulTableResult() - - when "STGT" - tableName, result, number = getSceneTelopGenericTableResult() - - when /^HSAT(\d)?$/ - type = Regexp.last_match(1).to_i - tableName, result, number = getHairStylistAbuseTableResult(type) - - when /^EXT(\d)?$/ - type = Regexp.last_match(1).to_i - tableName, result, number = getExtraTableResult(type) - - when /^SKL(T|J)$/ - type = Regexp.last_match(1) - tableName, result, number = getSkillTableResult(type) - - when "PCDT" - # 제작위원 결정표 - tableName, result, number = getpcTableResult() - when "OHT" - # 실제 어떠했는가 표 - tableName, result, number = getohTableResult() - when "PCT1" - # 헬 스타일리스트 표 - tableName, result, number = getplTableResult() - when "PCT2" - # 헬 크로우 태스크 표 - tableName, result, number = getprTableResult() - when "PCT3" - # 헬 스네이크 태스크 표 - tableName, result, number = getpnTableResult() - when "PCT4" - # 헬 드래곤 태스크 표 - tableName, result, number = getpdTableResult() - when "PCT5" - # 헬 플라이 태스크 표 - tableName, result, number = getpfTableResult() - when "PCT6" - # 헬 갓 태스크 표 - tableName, result, number = getpgTableResult() - when "PCT7" - # 헬 베어 태스크 표 - tableName, result, number = getpbTableResult() - - else - debug("rollDiceCommand commandNOT matched -> command:", command) - return "" - end - - if result.empty? - return "" - end - - text = "#{tableName}(#{number}):#{result}" - return text - end - - def getHistoryTableResult - tableName = "이력표" - - table = [ - '마술 -당신은 악마와의 접촉을 위해 연구를 쌓아온 오컬티스트, 또는 공포의 탐색자다. 굉장한 고난과 노력을 통해,드디어 나타난 악마는, 소원을 들어주는 대신 방송에나가라, 다고 말했다. 당신은 조금 어이없어 하면서도,애당초 악마를 찾던 이유인 소원을 이루기 위해, 그들이 주최하는 방송에 출연할 것을 승낙했다.', - '천재 -당신은 어떤 분야에서의 천재였다. 어떤 천재였는지는,캐릭터 작성을 하는 중에 생각해서 정해도 되고, 전혀정하지 않아도 상관없다. 아무튼, 천재가 방송에 등장하면 캐릭터가 살아 재밌겠다고 생각한 악마는, 당신의눈앞에 방송의 출연교섭을 위해 나타났다. 당신은 그이야기에 따라, 혼의 회수인이 되기로 했다.', - '광기 -당신은 머리가 이상하다. 그렇기 때문에, 주변 사회에잘 적응하지 못한 인생을 보냈다. 악마는 거기에 출현해, 사회를 당신에게 맞춰 바꿔주는 것이 가능하다 말했다. 단 사람을 죽이는 게임 방송에서 우승해야하는모양이다. 그러나, 당신은 머리가 이상하므로, 사람을죽이는 점은 신경 쓰지 않았다. 아무튼 이기면 행복해지는 것이다. 힘내자.', - '절망 -당신은 어떠한 실패를 통해 실의의 밑바닥에 있다. 합법, 또는 위법인 약물에 취해, 생활은 점점 피폐해지고,슬슬 죽을 거라 생각했을 때 악마가 나타났다. 그녀석의 말에 따르면, 어떤 리얼리티 방송에서 이기면, 이상황에서 빠져나갈 수 있다고 한다. 더 이상 잃을 것은없는 당신은, 그 이야기에 따라, 방송에 출연하기로 했다.', - '선달 -당신은 과거에 『킬 데스 비즈니스』의 승리자와 아는사이다. 갑자기 이유도 없이 큰 성공을 거둔 지인에게사정을 물으니, 바로 악마가 주최하는 살인 게임 방송에 대해 알려줬다. 당신은 소원을 이루기 위해, 그 지인을 통해 악마에게 추천해 달라 하여, 방송에 참가하게 됐다. 지인은, 분명 방송을 보고 있겠지.', - '친구 -당신은 평온한 인생을 보내고 있었으나, 어느 날 눈앞에 악마가 나타났다. 그 녀석은 방송 출연의 엔트리 시트를 가지고 있어서, 거기에는 당신의 이름이 적혀 있었다. 친구가 멋대로 당신의 이름으로 방송에 엔트리시트를 보낸 것이다! 당신은 그대로 납치되어, 억지로소원을 정하게 되어, 악취미인 방송에서 폭력을 휘두르게 됐다.', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getSceneTableResult(type) - debug("getSceneTableResult type", type) - - tableName = "씬표" - - sceneTable1 = [ - [11, '당신이 근거로 삼고 있는'], - [12, '당신의 사진으로 벽이 메워진'], - [13, '아날로그TV가 산처럼 쌓인'], - [14, '쓰레기가 뒤덮은'], - [15, '헬'], - [16, '밀어닥친 모래로 뒤덮인'], - [22, '가치 있는 것으로 호화롭게 장식된'], - [23, '시계장치의 전자의 요새로 변한'], - [24, '기묘한 오브제로 가득한'], - [25, '거대한 구멍의 가장자리에 위태롭게 걸친'], - [26, '극채색의 벽화가 그려진'], - [33, '사라질 듯이 명멸하는 빛이 비추는'], - [34, '창백하게 뭐든지 얼어붙은'], - [35, '붉은 피와 철의 냄새로 가득 찬'], - [36, '태양이 강렬한 빛을 뿌리는'], - [44, '새가 무수히 모여 있는'], - [45, '타오르는 불꽃이 비추는'], - [46, '하얀 안개로 한치 앞도 보이지 않는'], - [55, '썩은 시체가 쌓여있는'], - [56, '유독한 오수가 잔뜩 모여 있는'], - [66, '약탈을 당해 텅 빈'], - ] - sceneTable2 = [ - [11, '오피스'], - [12, '제단'], - [13, '스튜디오'], - [14, '창고'], - [15, '버스 정류장'], - [16, '감옥'], - [22, '암흑'], - [23, '역'], - [24, '옥상'], - [25, '하수도'], - [26, '학교'], - [33, '연구실'], - [34, '차 안'], - [35, '삼림'], - [36, '정원'], - [44, '가게'], - [45, '농원'], - [46, '폐허'], - [55, '묘지'], - [56, '민가'], - [66, '들판'], - ] - - result = '' - number = 0 - - case type - when 1 - result, number = get_table_by_d66_swap(sceneTable1) - when 2 - result, number = get_table_by_d66_swap(sceneTable2) - else - result1, num1 = get_table_by_d66_swap(sceneTable1) - result2, num2 = get_table_by_d66_swap(sceneTable2) - result = "#{result1} #{result2}" - number = "#{num1},#{num2}" - end - - return tableName, result, number - end - - def getWishTableResult(command) - debug("getWishTableResult command", command) - - tableName = '' - table = [] - - case command - when /^DWT$/i, /^DeathWT$/i - tableName = "소원표「죽음」" - table = [ - '지금의 아름다움을 유지한 채 죽고 싶다.', - '재밌는 방법으로 죽어보고 싶다.', - '자살할 용기가 없어서 죽고 싶다.', - '죽으면 어떻게 될지 보고 싶다.', - '너무나 싫은 일이 있어서 죽고 싶다.', - '불로불사가 질려서 죽고 싶다.', - ] - when /^RWT$/i, /^RevengeWT$/i - tableName = "소원표「복수」" - table = [ - '가족을 죽인 범인에게 복수하고 싶다.', - '자신보다 행복한 이웃에게 복수하고 싶다.', - '자신을 배반한 친구에게 복수하고 싶다.', - '자신을 버린 애인에게 복수하고 싶다.', - '소중한 것을 빼앗은 범인에게 복수하고 싶다.', - '처참한 패배를 안겨준 라이벌에게 복수하고 싶다.', - ] - when /^VWT$/i, /^VictoryWT$/i - tableName = "소원표「승리」" - table = [ - '이전에 졌던 라이벌에게 이기고 싶다.', - '쓰러트리고 싶은 유명인(고인)이 있다.', - '쓰러트리고 싶은 유명인이 있다.', - '특정 업계에서 제일의 실력자가 되고 싶다.', - '특정 게임에서 최강의 플레이어가 되고 싶다.', - '특정 테스트에서 1위를 하고 싶다.', - ] - when /^PWT$/i, /^PossesionWT$/i - tableName = "소원표「획득」" - table = [ - '원하는 아이템이 있다.', - '원하는 생물이 있다.', - '원하는 관계가 있다.', - '원하는 친족이 있다.', - '원하는 지식이 있다.', - '원하는 부동산이 있다.', - ] - when /^CWT$/i, /^ControlWT$/i - tableName = "소원표「지배」" - table = [ - '지배하고 싶은 인물집단이 있다.', - '지배하고 싶은 지역이 있다.', - '세계를 정복하고 싶다.', - '선거에서 이기고 싶다.', - '굴욕을 주고 싶은 사람이 있다.', - '어리광쟁이인 친척을 마음대로 하고 싶다.', - ] - when /^FWT$/i, /^FlourishWT$/i - tableName = "소원표「번영」" - table = [ - '몰락한 일족을 부흥시키고 싶다.', - '지역 경제를 활성화시키고 싶다.', - '취미인 장르에서 사람을 모으고 싶다.', - '절멸한 생물을 부활시키고 싶다.', - '동물이나 식물을 절멸에서 구하고 싶다.', - '아무튼 많은 돈을 원한다.', - ] - when /^IWT$/i, /^IntensifyWT$/i - tableName = "소원표「강화」" - table = [ - '세계최강이 되고 싶다.', - '세계에서 가장 아름다워지고 싶다.', - '세계에서 가장 현명해지고 싶다.', - '세계에서 가장 행복해지고 싶다.', - '세계에서 가장 터프해지고 싶다.', - '세계에서 가장 빨라지고 싶다.', - ] - when /^HWT$/i, /^HealthWT$/i - tableName = "소원표「건강」" - table = [ - '완성시키고 싶은 약물이 있다.', - '절멸시키고 싶은 병원균이 있다.', - '난치병에서 회복시키고 싶은 친척이 있다.', - '난치병에서 회복하고 싶다.', - '병으로 죽은 사람을 부활시키고 싶다.', - '병에 걸리지 않는 몸을 원한다.', - ] - when /^SaWT$/i, /^SafetyWT$/i - tableName = "소원표「안전」" - table = [ - '평온한 생활을 보내고 싶다.', - '평온하게 지내길 바라는 사람이 있다.', - '끝내고 싶은 분쟁이 있다.', - '사고로 죽은 사람을 부활시키고 싶다.', - '사고를 겪지 않는 능력을 원한다.', - '다가오는 세계의 위기를 회피하고 싶다.', - ] - when /^LWT$/i, /^LongevityWT$/i - tableName = "소원표「장수」" - table = [ - '지금의 아름다움을 유지하고 싶다.', - '지금의 강함을 유지하고 싶다.', - '아이가 어른이 되기까지 죽지 않는다.', - '불로의 몸을 원한다.', - '치매에 걸리고 싶지 않다.', - '손자의 얼굴을 보고 싶다.', - ] - when /^EWT$/i, /^ExistWT$/i - tableName = "소원표「삶」" - table = [ - '살아 있다는 실감을 원한다.', - '지금과는 다른 인생을 살고 싶다.', - '죽어버렸으니 부활하고 싶다.', - '죽은 사람을 되살리고 싶다.', - '불사의 몸을 원한다.', - '이상의 인생을 손에 넣고 싶다.', - ] - end - - result, number = get_table_by_1d6(table) - debug("getWishTableResult result", result) - - return tableName, result, number - end - - def getNameTableResult(type) - tableName = "만능이름표" - - nameTable1 = [ - [11, '아날로그'], - [12, '이지'], - [13, '이터널'], - [14, '일렉트로'], - [15, '오토'], - [16, '킹'], - [22, '쿨'], - [23, '그림'], - [24, '그레이트'], - [25, '슈퍼'], - [26, '스푸크'], - [33, '스마트'], - [34, '드레드'], - [35, '하이테크'], - [36, '헌터즈'], - [44, '블랙'], - [45, '헬'], - [46, '매직'], - [55, '메카니컬'], - [56, '러브'], - [66, '레드'], - ] - nameTable2 = [ - [11, 'X'], - [12, '어비스'], - [13, '그레이브'], - [14, '골드'], - [15, '고딕'], - [16, '시노비'], - [22, '스페셜'], - [23, '데몬'], - [24, '디지털'], - [25, '데스'], - [26, '데빌'], - [33, '나이트메어'], - [34, '발록'], - [35, '블러드'], - [36, '브레이크'], - [44, '블레이즈'], - [45, '프로스트'], - [46, '메가'], - [55, '메카나이즈드'], - [56, '림보'], - [66, '로보'], - ] - nameTable3 = [ - [11, '암'], - [12, '아이'], - [13, '이어'], - [14, '윙'], - [15, '엔진'], - [16, '가드'], - [22, '건'], - [23, '기어'], - [24, '캐논'], - [25, '서킷'], - [26, '스킨'], - [33, '소드'], - [34, '터빈'], - [35, '하트'], - [36, '핸드'], - [44, '빔'], - [45, '플레이트'], - [46, '헤어'], - [55, '메카니즘'], - [56, '모터'], - [66, '레그'], - ] - - result = '' - number = 0 - - case type - when 1 - result, number = get_table_by_d66_swap(nameTable1) - when 2 - result, number = get_table_by_d66_swap(nameTable2) - when 3 - result, number = get_table_by_d66_swap(nameTable3) - else - result1, num1 = get_table_by_d66_swap(nameTable1) - result2, num2 = get_table_by_d66_swap(nameTable2) - result3, num3 = get_table_by_d66_swap(nameTable3) - result = "#{result1}#{result2}#{result3}" - number = "#{num1},#{num2},#{num3}" - end - - return tableName, result, number - end - - def getSubprotTableResult(command) - tableName = '' - table = [] - - case command - when /^OSPT$/i, /^OccultSPT$/i - tableName = "서브플롯표「오컬트」" - table = [ - '『죽음의 탐구』 -회수인으로부터 한 명을 골라, 상대가 「직업」으로 습득하고 있는 특기를 지정특기로판정한다. 판정에 성공하면, 방송에 의한 빈번한 죽음이 상대를 어떻게 변화시키는지 관찰하고싶어진다. 상대에 대한 관계를, 속성 「연구대상」으로 획득한다. 【심도】는 1이 된다. -클리어조건 : 상대가, 당신이 등장하고 있는 신에서 2번사망한다. 사망에 따라 상대가 어떻게 변하는지, 제멋대로 이러쿵저러쿵 말해도 되고, 아무것도 말하지 않고 다 안 것 같은 표정을 해도 된다. -보수:【시청률】10%증가、400【소울】', - '『내방자』 -캐릭터로부터 한 명을 골라, 상대가 「의장」으로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 상대가 입고 있는 것은 교묘한 위장이며, 그 정체는 우주인이란 것을 깨닫는다. 상대에 대한 관계를, 속성 「우주인」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다. 그러면, 상대는 자신의 진짜 모습을 알려준다. 정말로 우주인인지는 상대의 마음이고, 딱히 어느 쪽이든 상관없다. 적당히 기뻐하든 실망하든 할 것. -보수:【시청률】10%증가、200【소울】', - '『기억상실』 -캐릭터로부터 한 명을 골라, 상대가 「소원」으로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 그 순간, 상대가 무언가를 알고 있다는 확신만을 남기고, 다른 모든 개인적인 기억을 잃는다. 상대에 대한 관계를, 속성 「지인」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 3으로 한다. 그러면, 상대는 당신이 어떤 인물이었는지 생각나게 해준다. 직접 알려줘도 좋고, 별의미 없는 행동이 계기가 될지도 모른다. -보수:【시청률】10%증가、상대가 회수인이라면400【소울】、상대가 NPC라면600【소울】', - '『비밀결사』 -캐릭터로부터 한 명을 골라, 상대가 「동작」으로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 상대가 무의식적으로 한 동작이, 당신이 소속된 비밀결사의 멤버라는 것을 밝히는 사인이라고 파악한다. 상대에 대한 관계를, 속성 「멤버」로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다. 상대는 정말로 멤버일지도 모르고, 당신의 착각일지도 모른다. 어느 쪽이든, 탐색하며 가까워지는 과정에서, 상대를 잘 알게 된다. -보수:【시청률】10%증가、200【소울】', - '『살인귀』 -캐릭터로부터 한 명을 골라, 상대가 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 상대가 유명한 연쇄살인의 범인이라고 확신한다. 얼굴이나 성별은 바꾼 것일지도 모른다. 상대에 대한 관계를, 속성 「살인귀」로 획득한다. 【심도】는 1이 된다. -클리어조건 : 연쇄살인귀를 용서할 수 없다면, 상대를 전투로 한 번 쓰러트린다. 또는, 연쇄살인귀의 팬이라면, 상대와 함께「서비스」신을 성공시킨다. 어느 쪽이든, 상대가 정말 연쇄살인을 했는지는 분명하지 않다. -보수:【시청률】10%증가、클리어조건 달성 시의 상대에 대한 관계【심도】× 200【소울】', - '『마법사』 -캐릭터로부터 한 명을 골라, 상대가 「소도구」으로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 상대는 애초에 진짜로 마법을 사용할 수 있는 인간이며, 가지고 있는 도구는 고명한 매직 아이템이라고 확신한다. 상대에 대한 관계를, 속성 「마법사」으로획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 -하고, 또한 상대의 당신에 대한 관계의 -【심도】를 1이상으로 한다. 정체가 드러난 상대는 마법을 가르쳐주고, 당신은 만족한다. 덧붙여, 이 마법은 효과가 애매하고 확실하지 앟은 것을 적당히 설정한다. -보수:【시청률】10%증가、당신과 상대 모두 300【소울】', - ] - when /^FSPT$/i, /^FamilySPT$/i - tableName = "서브플롯표「가족」" - table = [ - '『설득』 -캐릭터로부터 한 명을 골라, 상대가 「소도구」로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 상대가 가지고 있는 것은 당신이 선물한 것이며, 옛 친구가 악취미인 쇼에 나왔단 것을 알 수 있다. 그만두도록 설득하지 않으면 상대에 대한 관계를, 속성 「옛 친구」로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 3으로 한다. 그러면, 설득을 할 만큼 한 당신은 만족한다. 상대는 분명 그만두지 않는다. 또는, 선택한 「옛 친구」가 사망하거나(회수인이라면)지옥에 떨어진다. 그러면, 아무래도 포기하게 된다. -보수:【시청률】10%증가、400【소울】', - '『이별』 -캐릭터로부터 한 명을 골라, 상대가 「동작」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대가 가족 특유의 특징을 가지고 있단 것을 알고, 상당히 예전에 이별한 가족이라 확신한다. 상대에 대한 관계를, 속성 「이별」로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 3으로 한다. -그러면, 상대는 당신을 기억해낸다. 전혀 다른 환경에서 자랐을지도 모르지만, 당신들의 뿌리는 같다. -속사정이나 이별한 상황은 좋을 대로 설정해도 되고, 딱히 설정하지 않아도 된다. -보수:【시청률】10%증가、상대가 회수인이라면 400【소울】상대가 NPC라면 600【소울】', - '『가족자랑』 -회수인으로부터 한 명을 골라, 상대가 「직업」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대의 직업을 듣고, 같은 분야에서 상대보다 성공한 가족의 이야기를 들려준다. -상대에 대한 관계를, 속성 「자랑함」으로 획득한다. 【심도】는 1이 된다. -클리어조건:세 사람의 캐릭터에 대해 【심도】1이상의 관계를 획득하고, 모든 속성을 「자랑함」으로 한다. -이미 「자랑함」인 캐릭터는, 죽든지 없어져도 괜찮다. -상당히 싫어하는 모양이나, 뭐어 상관없다. -보수:【시청률】10%증가、400【소울】', - '『버려진 고양이』 -회수인으로부터 한 명을 골라, 상대가 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 품에서 아기 고양이가 나온다. 이것은 상대가 예전에 버린 고양이인 걸까, 당신은 그것을 용서할 수 없다. -상대에 대한 관계를, 속성 「고양이의 주인」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에게 고양이를 기르게 하기 위해, 전투로 한 번 쓰러트린다. -그러면, 상대는 고양이를 기를 것에 동의한다. -고양이의 상세한 스펙을 정해도 되고, 정하지 않아도 된다. -그리고, 동물의 종류도 사실은 자유다. -보수:【시청률】10%증가、클리어조건 달성 시의 상대에 대한 관계의【深度】× 200【소울】', - '『의가족』 -회수인으로부터 한 명을 골라, 상대가 「의장」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 의장의 경향에서, 상대가 의가족인 것이 판명된다. 이런 곳에서 뭘 하고 있는거야. -상대에 대한 관계를, 속성 「의가족」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다. -그러면, 상대는 어째서 방송에 나오게 됐는지, 그 때 어떤 상황이나 기분이었는지를 말한다. -또는, 상대가 지옥에 떨어지면, 연이 끊어져서 클리어다. -보수:【시청률】10%증가、200【소울】', - '『고독한 사람』 -캐릭터로부터 한 명을 골라, 상대가 「소원」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대가 고독을 견디고 있는 외로운 인물이란 것을 확신한다. 당신이 상대를 구하는 것이다. -상대에 대한 관계를, 속성 「고독한 사람」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다. -그러면, 상대는 변할……지도 모르고, 아무것도 변하지 않을지도 모른다. 그저, 당신은, 상대의 고독이 조금 치유된 것을 알 수 있다. -보수:【시청률】10%증가、200【소울】', - ] - when /^LoSPT$/i, /^LoveSPT$/i - tableName = "서브플롯표「연애」" - table = [ - '『금단의 사랑』 -표적이 「의장」으로 습득하고 있는 특기를 지정특기로 판정한다. 표적이 이미 사망한 경우, 서브플롯표를 다시 굴린다. -판정에 성공하면, 표적에게 첫눈에 반하거나, 표적이 전부터 좋아했던 사람이란 것이 판명된다. 서두르지 않으면 죽어버린다. -상대에 대한 관계를, 속성 「좋아하는 사람」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 3으로 한다. -그러면, 표적은 당신의 마음에 대해 어떠한 대답을 돌려준다. 결과는 아무튼, 좋은 경험이 될 것이다. -또는, 상대에 대한 관계의 【심도】가 2이상인 상태에서, 상대가 사망해도 좋다. 통곡하자. -보수:【시청률】10%증가、400【소울】', - '『방송 내 데이트』 -회수인으로부터 한 명을 골라, 상대가 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대와 당신은 방송 개시 전부터 사귀고 있었다. 수록을 겸해 사이를 진전시켜도 좋을 것이다. -상대에 대한 관계를, 속성 「연인」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 하고, 상대로부터 당신에 대한 관계의 【심도】도 2이상으로 한다. -그러면, 꽤 좋은 느낌으로 관계가 발전한다. 방송 종료 시에 시청자에게 알릴 일이 생길지도 모른다. -보수:【시청률】10%증가、당신과 상대 모두 400【소울】', - '『고민 상담』 -캐릭터로부터 한 명을 골라, 상대가 「직업」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대의 직업적 견지에서 연애에 관한 어드바이스를 받을지도 모른다고 깨닫는다. -상대에 대한 관계를, 속성 「상담역」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 3으로 한다. -연애에 관한 어드바이스를 받은 기분이 든다. 상대가 그런 의도로 말했는지는 관계없다. -최후의 관계의 속성을 「좋아하는 사람」으로 하면 그럴싸해진다. -보수:【시청률】10%증가、상대가 회수인이라면400【소울】상대가 NPC라면600【소울】', - '『인기획득』 -캐릭터로부터 한 명을 골라, 상대가 「동작」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대와 당신이 함께하면 대단히 좋은 장면이 나와 시청자에게 먹힐 것이라 확신한다. 끌어들여 서비스 신을 성공하면 헬 시청자에게 사랑받겠지. -상대에 대한 관계를, 속성 「파트너」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대와 함께 서비스 신을 성공시킨다. -놀랍게도, 헬 시청자는 정말로 콤비를 마음에 들어 한다. 단, 한 번 더 한다고, 먹힐지는 모른다. -보수:【시청률】10%증가、200【소울】', - '『선물』 -캐릭터로부터 한 명을 골라, 상대가 「소원」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대의 소원을 왠지 알 수 있다. 원하는 것을 알고 있으니, 주면 좋아할지도 모른다. 뭘 원하는지, 상대에게 실제로 물을 필요는 없다. -상대에 대한 관계를, 속성 「원함」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다. -그러면, 상대는 당신의 선물을 받는다. 무엇을 주는지는 적당히 정해도 되나, 고민되면 헬CM표를 사용할 것. -보수:【시청률】10%증가、200【소울】', - '『수제요리』 -캐릭터로부터 한 명을 골라, 상대가 「소도구」로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대가 가지고 있는 것이 힌트가 돼서, 엄청난 요리를 떠올린다. 어쩌면 재료로 할 수 있을지도 모른다. -상대에 대한 관계를, 속성 「시식역」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에게 전투를 걸어, 킬러트릭으로 쓰러트린다. -이때, 킬러트릭의 이름은 생각한 요리의 이름으로 변경된다. -고민되면 만능 명명표를 사용할 것. -보수:【시청률】10%증가、500【소울】', - ] - when /^JSPT$/i, /^JusticeSPT$/i - tableName = "서브플롯표「정의」" - table = [ - '『죽일 수 없는 표적』 -표적이 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대가 당신의 정의에 비추어 볼 때 허물없는 인물이란 것을 알 수 있다(어쩌면, 실은 대단히 선량한 인물이었단 것을 안다). 이 사람을 죽일 수는 없다. -상대에 대한 관계를, 속성 「호위대상」으로 획득한다. 【심도】는 1이 된다. -클리어조건:결과 페이즈까지 상대를 생존시킨다. -어째서 아군이 됐는지, 어째서 아군으로 삼았는지, 상대에게 말해주면 기뻐할지도 모른다. -보수:【시청률】10%증가、700【소울】', - '『친구의 복수』 -캐릭터로부터 한 명을 골라, 상대가 「소도구」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대가 몸에 지니고 있는 장신구가, 당신의 친구를 살해한 범인의 특징과 일치하는 것을 안다. -상대에 대한 관계를, 속성 「범인」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다. -그러면, 상대는 자백한다. -그 후에 전투를 걸어, 한 번 상대를 쓰러트려라. -죽은 자는 돌아오지 않으나, 당신은 만족한다. -보수:【시청률】10%증가、400【소울】', - '『호신』 -캐릭터로부터 한 명을 골라, 상대가 「소원」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대가 한때 당신에게 단죄 받은 적이 있어, 그것을 원망하고 있는 것을 알게 된다. -상대에 대한 관계를, 속성 「복수자」로 획득한다. 【심도】는 1이 된다. -클리어조건:결과페이즈까지 상대에게 살해당하지 않는다. -그러면, 어떻게든 살아남……지만, 다음은 어떻게 될는지. -보수:【시청률】10%증가、상대가 회수인이라면500【소울】상대가 NPC라면 100【소울】', - '『심취』 -회수인으로부터 한 명을 골라, 상대가 「동작」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대를 첫 인상부터 선인이라 확신하고, 다양한 논리를 더해 상대의 소원을 정의라고 믿는다. -상대에 대한 관계를, 속성 「선인」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다. -그러면, 상대의 소원의 본질을 이해하고, 깨어나거나, 충실한 협력자가 될 것을 약속하거나 한다. -보수:【시청률】10%증가、200【소울】', - '『악당』 -캐릭터로부터 한 명을 골라, 상대가 「직업」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대는 그 일대에서는 유명한 악의 직업인이란 것이 판명된다. 이 녀석을 내버려두면 슬퍼하는 사람이 나오겠지. -상대에 대한 관계를, 속성 「악인」으로 획득한다. 【심도】는 1이 된다. -클리어조건:악인을 용서할 수 없다면, 상대를 전투에서 한 번 쓰러트린다. -또는, 개심시키고 싶다면, 상대에 대한 관계의 【심도】를 3으로 한다. -상대가 정말로 개심했는지는 관계없이, 회심의 설득을 한 것에, 당신은 만족한다. -보수:【시청률】10%증가、클리어조건 달성 시의 상대에 대한 관계【심도】X200【소울】', - '『사이드킥』 -회수인으로부터 한 명을 골라, 상대가 「의장」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대는 자신의 파트너로써 악을 쓰러트리기에 최적인 인물이라 확신한다. 사이드킥이다. -상대에 대한 관계를, 속성 「동료」으로 획득한다. 【심도】는 1이 된다. -클리어조건:자신이 등장하고 있는 신에서, 상대가 누군가를 쓰러트리고, 그 후 당신이 죽지 않고 전투가 종료된다. -상대를 칭찬해서, 동료에 어울리는 인물이라고 선언하자. -보수:【시청률】10%증가、300【소울】', - ] - when /^TSPT$/i, /^TrainingSPT$/i - tableName = "서브플롯표「수행」" - table = [ - '『전투광』 -회수인으로부터 한 명을 골라, 상대가 「동작」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 주변에 있는 강해보이는 사람들에 대해 대항심이 끓어오른다. 결국, 남는 것은 한 사람 뿐이니까, 지금부터 때려눕히는 게 좋다. -상대에 대한 관계를, 속성 「적」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대를 포함해 세 명의 캐릭터를 한 번 이상 사망시킨다. -그러면, 당신의 전투열은 가라앉는다. 이제부터 사이가 좋아질지는 미묘할지도 모른다. -보수:【시청률】10%증가、600【소울】', - '『제자입문』 -캐릭터로부터 한 명을 골라, 상대가 「직업」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 당신은, 그 직업의 세계적인 권위를 발견한다. 이유가 있어 은퇴한지 오래지만, 가르침을 받으면 이후의 인생에 도움이 될 것이다. 가르칠 마음이 있는지는 모르겠지만 -상대에 대한 관계를, 속성 「스승」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 3으로 한다. -그러면, 상대는 무언가를 가르쳐준다. 또는, 더 이상 가르칠 것이 아무것도 없다고 말할 것이다. -보수:【시청률】10%증가、상대가 회수인이라면400【소울】상대가 NPC라면600【소울】', - '『라이벌』 -캐릭터로부터 한 명을 골라, 상대가 「소원」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대는 당신에게 특정 분야에서 승리한 적이 있는 인물임을 알게 된다. 녀석에게 이기지 못하면, 당신은 앞으로 나아갈 수 없다. -상대에 대한 관계를, 속성 「라이벌」로 획득한다. 【심도】는 1이 된다. -클리어조건:2사이클 이후에 상대를 한 번 쓰러트린다. 당신이 쓰러트리기까지, 상대는 다른 캐릭터에게 쓰러져서는 안 된다. -너를 쓰러트리는 것은 나로 정해져있으니까! -보수:【시청률】10%증가、상대가 회수인이라면300【소울】상대가 NPC라면500【소울】', - '『개조』 -회수인으로부터 한 명을 골라, 상대가 「의장」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대에 비해 자신의 육체가 너무 빈약한 기분이 든다. 개조해서 더욱 강해지지 않으면. -상대에 대한 관계를, 속성 「기준선」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대보다 많은 헬 사이버를 인스톨한 상태로 결과 페이즈를 맞이한다. -이때 세는 것은 개수뿐, 그리고 같은 수라면 안 된다. -보수:【시청률】10%증가、600【소울】', - '『장비개선』 -회수인으로부터 한 명을 골라, 상대가 「소도구」로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대가 가지고 있는 장비에 대한 흥미가 솟는다. 자신의 능력상승의 힌트가 될지도 모른다. -상대에 대한 관계를, 속성 「좋은 장비」로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다. -그러면, 상대는 가진 것에 대해 해설해주거나, 또는 단호하게 거절한다. 당신의 탐색은 거기서 끝나나, 경험은 남는다. -보수:【시청률】10%증가、200【소울】', - '『특훈』 -캐릭터로부터 한 명을 골라, 상대가 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대는 자신과 마찬가지로 수행부족을 통감하고 있다고 확신한다. 함께 트레이닝이다. -상대에 대한 관계를, 속성 「특훈동료」로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다. -그러면, 당신과 상대는 어떠한 성과를 느끼고, 특훈은 끝난다. -이 타이밍에서 킬러트릭의 이름을 바꾸거나 해도 된다. -보수:【시청률】10%증가、200【소울】', - ] - when /^BSPT$/i, /^BeamSPT$/i - tableName = "서브플롯표「웃음」" - table = [ - '『대 서비스』 -캐릭터로부터 한 명을 골라, 상대가 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 이 살벌한 방송을 온화하게 할 수 있는 것은, 자신과 상대 밖에 없다고 확신한다. -상대에 대한 관계를, 속성 「파트너」로 획득한다. 【심도】는 1이 된다. -클리어조건:상대와 함께, 「서비스」신의 판정에 2번 성공한다. -그러면, 어쩐지 방송이 즐거워진 것 같은 느낌도 드나……변하지 않은 것 같은 기분도 든다. 당신의 싸움은 아직 계속된다. -보수:【시청률】10%증가、당신과 상대 모두 【소울】', - '『벗기』 -캐릭터로부터 한 명을 골라, 상대가 「의장」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대의 의장을 좋은 느낌으로 벗기면 먹힐 것이라 확신한다. -상대에 대한 관계를, 속성 「벗기고 싶다」로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에게 전투를 걸어, 킬러트릭으로 쓰러트린다. -이때, 상대의 의장은 산산조각으로 분쇄되어, 헬 스타일리스트가 상대를 매도하며 새로운 것을 준비하게 된다. -보수:【시청률】10%증가、500【소울】', - '『좋은 이야기』 -캐릭터로부터 한 명을 골라, 상대가 「동작」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대는 풀이 죽었는지 싫은 건지, 표정이 적다. 웃음을 돌려주지 않으면. -상대에 대한 관계를, 속성 「어두운 녀석」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 3으로 한다. -상대는 조금 웃음을 보일지도 모르고, 빛의 영향으로 그렇게 보일지도 모른다. 그러나, 당신은 확실한 성과를 느낀다. -보수:【시청률】10%증가、상대가 회수인이라면400【소울】상대가 NPC라면600【소울】', - '『웃음전도사』 -캐릭터로부터 한 명을 골라, 상대가 「소원」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대는 원호가 없으면 서비스 신이 힘들 것이다, 라고 직감한다. -상대에 대한 관계를, 속성 「진지한 녀석」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대가 등장하는 「서비스」신에 자신도 등장해, 카메라 밖에서 웃음소리를 내는 롤플레이를 한다. -보수:【시청률】10%증가、당신과 상대 모두 100【소울】', - '『전투회피』 -캐릭터로부터 한 명을 골라, 상대가 「직업」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 당신은 상대의 소원에 깊게 공감한다. 그 때문에, 상대를 방해하고 싶지 않게 된다. -상대에 대한 관계를, 속성 「이기게 하고픈 사람」으로 획득한다. 【심도】는 1이 된다. -클리어조건:결과 페이즈까지 직접 상대를 죽이지 않는다. -그러면, 누구도 알아채지 못하지만, 당신은 자신이 할 일을 한 게 된다. -보수:【시청률】10%증가、200【소울】', - '『친구』 -캐릭터로부터 한 명을 골라, 상대가 「소도구」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 그 소도구에 대한 대화를 계기로, 상대에 대한 흥미가 싹튼다. 어쩌면 친구가 될지도 모른다. -상대에 대한 관계를, 속성 「친구」로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다. -그러면, 당신과 상대는 우정과 같은 것으로 묶일지도 모르고, 역시 무리였다고, 당신이 포기할지도 모른다. -보수:【시청률】10%증가、200【소울】', - ] - - end - - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getCmTableResult() - tableName = "CM표" - table = [ - [11, '당신의 T셔츠 -결정 포즈의 모습이 등에 프린트 된 T셔츠입니다. 그리고 앞면에는 뭣이 그 명대사가!'], - [12, '당신의 액션 피규어 -방송 중부터 대인기! 직인이 하나하나 혼을 담은 수제! -밤이 되면, 집어넣은 혼이 귀곡성을 냅니다.'], - [13, '헬 레이 박스 -시즌 666의 전부가 여기에……특전 영상 만재로 보내드리는, 호화 박스 세트! 예약특전은 헬군 스트랩입니다.'], - [14, '헬 에어컨 -이것만 있으면, 화재 현장이라도 기온은 어는 점 이하! 반대로 집을 태울 수도 있습니다. 온도조절기능은 유료 옵션입니다!'], - [15, '헬 기저귀 -헬 원단으로 젖음을 완벽방지, 666년 간 입더라도 걱정 없습니다! 안쪽이 어떻게 될지는 보증하지 않습니다, 헬 기저귀! -헬 서플리'], - [16, '헬 서플리 -자지 않아도 괜찮아! 컬러풀한 환각이 보인다! 하지만 메인 기능은 건강증진입니다. 헬 서플리로 건강한 생활을!'], - [22, '헬 투어 -저렴한 요금으로 지옥백경을 돌아보자! 고통 받는 인간과의 혼의 교감이 가득! 헬 투어는, 타사에서는 불가능한 체험을 약속합니다.'], - [23, '헬 테레비 -밤중에 여성이 나오나, 신경 쓰지 않아도 괜찮습니다! 아날로그 헬 테레비는 정부의 협찬을 받고 있습니다.'], - [24, '헬 맥주 -알코올 도수 666%, 헬 보리 사용. 지옥의 갈증에는 헬 맥주……차이를 아는 사람을 위해.'], - [25, '헬 폰 -의기양양한 앱등이의 콧대를 눌러버릴 수 있습니다. 네, 헬폰이라면 말이죠.'], - [26, '헬 만쥬 -수천 년의 사랑을 받고 있습니다, 지옥명과 헬만쥬. 맛있다. 헬 맛있어! 그렇지만, 먹으면 죽습니다.'], - [33, '헬 모빌 -인간을 치면 칠수록 점점 빨라져……속도는 다른 세계로. 헬 모빌이 구하기 쉬운 가격으로 신등장.'], - [34, '헬 회화교실 -이웃을 잘 속이고 싶나요? 싫은 녀석에게 속으셨나요? 헬 회화를 배우면, 어떤 상대도 격앙시킬 수 있습니다!'], - [35, '헬 금융 -금리 666%으로 안심할 수 있습니다. 헬 금융의 징수는, 대단히 신사적이라 호평입니다.'], - [36, '헬 즙(건강음료) -지옥 변경에서 채취한 신선한 독초를, 그대로 분말로 했습니다. -이걸 마시면, 더 이상 병이나 노화 걱정은 없습니다. 건강음료 헬 즙!'], - [44, '헬 정형외과 -무보험이며 무면허나, 어떤 주문이든 받아줍니다. 헬 정형외과는, 당신이 바라는 대로의 외모를 실현합니다!'], - [45, '헬 생명보험 -곧 죽을 당신에게, 헬 생명의 안심코스. 남겨진 사람에게는 지옥이 기다리고 있습니다.'], - [46, '헬 세제 -얼마나 심한 핏자국이나 오물도 일격! 어떤 색의 옷이라도 지옥의 검정으로 물들입니다! 헬 세제, 호평 발매 중!'], - [55, '헬 세탁기 -666층식, 음속을 넘는 회전이 당신의 의장을 산산히! 무엇을 하려고 했는지 잊는다면 장관입니다. 헬 세탁기!'], - [56, '헬 청소기 -호평인 벽면분쇄기능에 더해, 올해의 모델에는 옥상흡인기능도! -헬 청소기의 스위치를 넣는 것만으로, 당신의 집은 없어집니다.'], - [66, '헬 입욕제 -몸이 끓는다! 신감각으로 화제를 부른 헬 입욕제가 드디어 등장! 사체의 처리에는 사용하지 말아주세요.'], - ] - result, number = get_table_by_d66_swap(table) - - return tableName, result, number - end - - def getErTableResult() - tableName = "소생부작용표" - table = [ - [11, '늙다리같은 냄새가 나기 시작한다'], - [12, '덤으로 염소가 나왔다'], - [13, '머리색이 형광색으로 변했다'], - [14, '목소리가 로봇처럼 변했다'], - [15, '끝이 삼각형으로 생긴 꼬리가 생겼다'], - [16, '얼굴에 수수께끼의 프로그레스 바가 나왔다'], - [22, '성별이 바꼇다'], - [23, '온몸에 모자이크가 걸렸다'], - [24, '전체적으로 반투명이 됬다'], - [25, '조금 썩었다'], - [26, '피푸가 형광색으로 빛난다'], - [33, '날개가 자랐다'], - [34, '프로그램 참가중의 기억을 잃었다'], - [35, '이마에 제 3의 눈이 열렸다'], - [36, '미묘하게 뜬다'], - [44, '병아리로 변했다'], - [45, '불합격품의 스탬프가 찍혔다'], - [46, '살쪗다'], - [55, '귀가 좋아하는 동물의 것으로 바꼇다'], - [56, '말라졌다'], - [66, '훌륭한 뿔이 이마에 났다'], - ] - result, number = get_table_by_d66_swap(table) - - return tableName, result, number - end - - def getWKTableResult() - tableName = "일주일간표" - table = [ - [11, '집에서 쫓겨난 헬P가 묶으러 왔다'], - [12, '위험한 오오라를 낼 수 있게 되어, 엄청 인기생겼다'], - [13, '지옥입거를 각오하고 신변정리를 했다'], - [14, '지옥TV정보잡지에서 인터뷰를 받았다'], - [15, '친가의 사업이 잘되고 있는데 손님이 왠지 모두 헬피플'], - [16, '신호 기다리고 있는데 업무중인 악마가 사인요청 했다'], - [22, '친척이 프로그램을 보고 있고 전화로 감상을 말했다'], - [23, '다음 주의 수호천사와 아는 사이가 되버렸다'], - [24, '다음 주의 타겟과 아는 사이가 되버렸다'], - [25, '트라우마가 남아서 수면을 못하고 술에 빠졌다'], - [26, '소원이 이루어지면 일 안해도 되니까,, 일 그만뒀다'], - [33, '소원과는 별도로 출연보수가 들어와서 호와롭게 놀았다'], - [34, '프로그램 중에 장난으로 사람을 쳤는데, 왠지 죽어버렸다'], - [35, '프로그램 중에 악마가 무서워져서 온세상을 도망쳐다녔다'], - [36, '팬을 자칭하는 스토커가 집을 망쳐놓았다'], - [44, '문득 생각난 김에 산에 들어가서 수련했다'], - [45, '헬 스타일리스트한테 집의 의류를 모조리 태워져버렸다'], - [46, '헬 닥터가 밀린 치료비를 요구했다'], - [55, '헬 드레스의 짝퉁을 강매하려고 한 하급 악마와 싸웠다'], - [56, '다른 회수인 중 한명이 같은 직장인이라는 것이 확실해졌다'], - [66, '묘하게 기부를 모집하는 영업전화가 걸려오는 주였다'], - ] - result, number = get_table_by_d66_swap(table) - - return tableName, result, number - end - - def getServiceSceneTableResult() - tableName = "서비스 씬 표" - sceneTable = [ - '탈의계 서비스 신표', - '폭력계 서비스 신표', - '여행계 서비스 신표', - '연애계 서비스 신표', - '감동계 서비스 신표', - '다른 장르계 서비스 신표', - ] - sceneGroup, number1 = get_table_by_1d6(sceneTable) - - case sceneGroup - when "탈의계 서비스 신표" - table = [ - '의장의 문제', - '갈아입기', - '탈의마작', - '입욕', - '수영복으로 싸운다', - '야구권', - ] - when "폭력계 서비스 신표" - table = [ - '이긴 후의 폭력', - '집단의 폭력', - '폭력을 암시하는 대화', - '진 후의 폭력', - '전혀 무의미한 폭력', - '무의미한 폭력', - ] - when "여행계 서비스 신표" - table = [ - '이동기관의 소개', - '지역의 놀이를 소개', - '지역의 동물을 소개', - '지역의 여관을 소개', - '일어나면 깜짝이야', - '명물 요리의 소개', - ] - when "연애계 서비스 신표" - table = [ - '키스신', - '사랑을 깨닫다', - '사랑에 고민함', - '데이트신', - '비밀을 고백한다', - '러브신', - ] - when "감동계 서비스 신표" - table = [ - '가족의 사랑을 깨닫다', - '멋진 걸 말한다', - '실패해서 실의에 빠진다', - '지역 주민과 교류한다', - '죽은 사람 얘기를 한다', - '높은 곳에서 멋진 걸 말한다', - ] - else - table = [ # "다른 장르계 서비스 신표" - '사이코 서스펜스', - '스페이스 오페라', - '동화', - '히로익 판타지', - '몬스터 호러', - '로보', - ] - end - - resultTmp, number2 = get_table_by_1d6(table) - result = "#{sceneGroup}「#{resultTmp}」을/를 행한다." - number = "#{number1}#{number2}" - - return tableName, result, number - end - - def getSoulTableResult() - tableName = "소울방출표" - table = [ - '100', - '200', - '200', - '200', - '300', - '300', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getSceneTelopGenericTableResult() - tableName = "범용 연출표" - table = [ - '크고 알기 쉬운 자막이 나온다.', - '회상에 맞춰 재현 비디오가 흐른다.', - '관계자가 등장인물에 대해서 이야기한다.', - '게스트 헬 피플이 행동을 논평한다.', - '행동의 시비에 대해 헬 시청자의 투표가 시작된다.', - '헬 밴드의 신곡이 BGM으로 흐른다.', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getHairStylistAbuseTableResult(type) - tableName = "헬 스타일리스트 매도 표" - - hellStylistAbuseTable1 = [ - [11, ' 땀범벅이 된'], - [12, ' 영감이 저번에 버린'], - [13, ' 실패작인'], - [14, ' 저예산의 영화로 몬스터 대신이 된'], - [15, ' 무리를 잃은'], - [16, ' 나쁜 의미로 성분 무조정인'], - [22, ' 우주인이 내용물을 뺀 후의'], - [23, ' 화학처리반이 처리하러 올 것 같은'], - [24, ' 혁명 직후 단두대에 걸린'], - [25, ' 광기의 예술가가 사상으로 만든'], - [26, ' 고향 마을을 제국군에게 불태워진 직후의'], - [33, ' 오년 만에 침대 아래에서 나온'], - [34, ' 고속도로에서 마구 치인'], - [35, ' 사후 6주 동안의'], - [36, ' 실패요리를 억지로 먹인'], - [44, ' 갓난아기가 처음으로 그린'], - [45, ' 장롱과 벽 사이의 틈에서 사는'], - [46, ' 고양이가 물어간'], - [55, ' 유명한 문어를 닮은 몬스터를 본'], - [56, ' 여행지에서 지갑이 없단 것을 깨달은'], - [66, ' 엽기살인을 취미로 하고 있는'], - ] - hellStylistAbuseTable2 = [ - [11, ' 아르마딜로'], - [12, ' 말미잘'], - [13, ' 노린재'], - [14, ' 오리너구리'], - [15, ' 공작'], - [16, ' 해파리'], - [22, ' 바퀴벌레'], - [23, ' 벌레'], - [24, ' 원숭이'], - [25, ' 시궁쥐'], - [26, ' 벌거숭이'], - [33, ' 해삼'], - [34, ' 똥'], - [35, ' 쇠똥구리'], - [36, ' 펭귄'], - [44, ' 물벼룩'], - [45, ' 낡은 인형'], - [46, ' 식인 곰'], - [55, ' 독 있는 도마뱀'], - [56, ' 송충이'], - [66, ' 들개'], - ] - - hellStylistwtable1 = [ - '「마치『', - '「마치『', - '「정말로『', - '「정말로『', - '「너는『', - '「너는『', - ] - hellStylistwtable2 = [ - '』같아!」', - '』같구나!」', - '』잖아!」', - '』구나.」', - '』처럼 보여.」', - '』나 다를 바 없어! 」', - ] - - case type - when 1 - result, number = get_table_by_d66_swap(hellStylistAbuseTable1) - when 2 - result, number = get_table_by_d66_swap(hellStylistAbuseTable2) - else - result1, num1 = get_table_by_d66_swap(hellStylistAbuseTable1) - result2, num2 = get_table_by_d66_swap(hellStylistAbuseTable2) - before, = get_table_by_1d6(hellStylistwtable1) - after, = get_table_by_1d6(hellStylistwtable2) - result = "#{before}#{result1}#{result2}#{after}" - number = "#{num1},#{num2}" - end - - return tableName, result, number - end - - def getSkillTableResult(type) - skillTableFull = [ - ['직업', ['무직', '예술가', '연구자', '가사 도우미', '학생', '악당', '노동자', '탐정', '거물', '의사', '공무원']], - ['동작', ['외치다', '번뜩이다', '베다', '휘두르다', '던지다', '때리다', '차다', '뛰다', '쏘다', '잡다', '기다리다']], - ['소도구', ['피어스', '머리장식', '총', '목걸이', '벨트', '안경', '모자', '시계', '검', '링', '타투']], - ['의상', ['네이킷드', '아웃도어', '에스닉', '힙합', '밀리터리', '포멀', '전통', '고딕', '펑크', '메탈', '아이돌']], - ['정동', ['사랑', '기쁨', '기대', '초조', '자부', '분노', '슬픔', '질투', '공포', '수치', '혐오']], - ['소원', ['죽음', '복수', '승리', '지배', '획득', '번영', '강화', '안전', '건강', '장수', '생']], - ] - skillTable, num1 = get_table_by_1d6(skillTableFull) - skillGroup, table = skillTable - if type == "T" - tableName = "지정특기 랜덤결정표" - skill, num2 = get_table_by_2d6(table) - result = "「#{skillGroup}」《#{skill}》" - number = "#{num1},#{num2}" - else - tableName = "지정특기분야 랜덤결정표" - result = skillGroup - number = num1 - end - - return tableName, result, number - end - - def getExtraTableResult(type) - tableName = "엑스트라 표" - extraTable1 = [ - [11, "당신과 친구인"], - [12, "당신과 원망하는 녀석의 기회를 노리고 있는"], - [13, "바쁘게 전화로 이야기 하고있는"], - [14, "넘어지며 도망친"], - [15, "씬의 배경의 소유자인"], - [16, "가공의 인물이라고 생각되고 있던 신(神)"], - [22, "과거의 시즌 우승자인"], - [23, "기분 좋게 엄청 취한"], - [24, "공포로 몸을 움츠리게 하고 있는"], - [25, "업계에서는 유명한"], - [26, "행복한 가정을 가지고 있는"], - [33, "광역 지명 수배되고 있는"], - [34, "오늘 모닝뉴스에서 특집으로 되어 있던"], - [35, "항상 미소를 잊지 않는 거물인"], - [36, "진실의 탐구 과정에서 발광한"], - [44, "현지에서는 패배를 모르는"], - [45, "매우 동작에 절도가 있는"], - [46, "평범한"], - [55, "변신 히어로의 정체인"], - [56, "『#{getNameTableResult(0)[1]}』의 이명을 가지고 있는"], - [66, "역사상의 인물이지만 실은 살아있던"], - ] - extraTable2 = [ - [11, "샐러리맨"], - [12, "스포츠 선수"], - [13, "양아치"], - [14, "드라이버"], - [15, "쥐"], - [16, "파일럿"], - [22, "영화 감독"], - [23, "개"], - [24, "자객"], - [25, "주부"], - [26, "소설가"], - [33, "작사"], - [34, "정치가"], - [35, "갑부"], - [36, "큰 남자"], - [44, "수수께끼의 미녀"], - [45, "고양이"], - [46, "미소녀"], - [55, "문화인"], - [56, "용자"], - [66, "신(神)"], - ] - extraTable3 = [ - [11, "이상한 상자안에서"], - [12, "불쌍한 희생자를 죽이면서"], - [13, "소를 타면서"], - [14, "말을 타면서"], - [15, "벽을 분쇄하면서"], - [16, "문을 분쇄하면서"], - [22, "진한 안개속에서 천천히"], - [23, "자동문에서 나오면서"], - [24, "상공에서 급강하하면서"], - [25, "전속력으로 달리면서"], - [26, "높은 곳으로부터"], - [33, "테마 음악과 함께"], - [34, "지나가는 길에"], - [35, "이름과 직업의 명함과 함께"], - [36, "오토바이를 타면서"], - [44, "무덤을 뚫으며"], - [45, "부하를 여럿 거느리며"], - [46, "거친 바람에 감기며"], - [55, "무기를 잡으며"], - [56, "헬 포탈을 지나며"], - [66, "불길을 등에 지며"], - ] - extraTable4 = [ - [11, "사랑스럽게 등장"], - [12, "선명하게 등장"], - [13, "시원스럽게 등장"], - [14, "이상하게 등장"], - [15, "몹시 거칠게 등장"], - [16, "기세 좋게 등장"], - [22, "아름답게 등장"], - [23, "잘난듯이 등장"], - [24, "엄숙하게 등장"], - [25, "무섭게 등장"], - [26, "멋지게 등장"], - [33, "뽐내며 등장"], - [34, "죽음의 예감과 함께 등장"], - [35, "조용하게 등장"], - [36, "품위있게 등장"], - [44, "야무지지 못하게 등장"], - [45, "지적이게 등장"], - [46, "나고야풍으로 등장"], - [55, "매끈하게 등장"], - [56, "기분이 안좋게 등장"], - [66, "쾌활하게 등장"], - ] - - case type - when 1 - result, number = get_table_by_d66_swap(extraTable1) - when 2 - result, number = get_table_by_d66_swap(extraTable2) - when 3 - result, number = get_table_by_d66_swap(extraTable3) - when 4 - result, number = get_table_by_d66_swap(extraTable4) - else - result1, num1 = get_table_by_d66_swap(extraTable1) - result2, num2 = get_table_by_d66_swap(extraTable2) - result3, num3 = get_table_by_d66_swap(extraTable3) - result4, num4 = get_table_by_d66_swap(extraTable4) - result = "#{result1}#{result2}が#{result3}#{result4}" - number = "#{num1},#{num2},#{num3},#{num4}" - end - - return tableName, result, number - end - - def getpcTableResult() - tableName = "제작위원 결정표" - table = [ - [11, '헬 라이온'], - [12, '헬 라이온'], - [13, '헬 라이온'], - [14, '헬 크로우'], - [15, '헬 크로우'], - [16, '헬 크로우'], - [22, '헬 스네이크'], - [23, '헬 스네이크'], - [24, '헬 스네이크'], - [25, '헬 드래곤'], - [26, '헬 드래곤'], - [33, '헬 드래곤'], - [34, '헬 플라이'], - [35, '헬 플라이'], - [36, '헬 플라이'], - [44, '헬 갓'], - [45, '헬 갓'], - [46, '헬 갓'], - [55, '헬 베어'], - [56, '헬 베어'], - [66, '헬 베어'], - ] - result, number = get_table_by_d66_swap(table) - - return tableName, result, number - end - - def getohTableResult() - tableName = "실제로 어떠했는가 표" - table = [ - '대개【흥행수입】의 예측은 정확했다. 증감은 없이, 회수인은 당분간 공공장소에서 인기였다.', - '생각보다 흥행했다!【흥행수입】이 4D6억 헬엔 증가. 장르의 수작으로 5년 후에도 가끔 입에 오른다', - '조금 트러블이 생겨서 공개 시기를 놓쳤다. 【흥행수입】이 4D6억 헬엔 감소. 헬-레이의 매상을 기대하자', - '이런 맙소사, 동시기에 타시즌의 영화판이 공개된다. 【흥행수입】이 반이 된다.', - '오 맙소사, 헬 아카데미상을 잔뜩 받았다.【흥행수입】이 두배가 된다!', - '에피소드의 표현중에 미묘하고 귀찮은 문제를 일으켜 많은 헬 피플이 언짢게 본다. 공개는 없음으로.', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getplTableResult() - tableName = "헬 라이온터스크 표" - table = [ - ' -「프랑스어.」지정 특기는《예술가》. 왠지 등장 인물 전원이 프랑스어로 밖에 회화할 수 없는 씬이 설정된다. 할 수 있는 한, 프랑스어를 구사하고 의사소통을 시도해라!', - ' -「회화가 없다.」지정 특기는《뛰다》. 회화 그 자체가 비열하고 엔터테인먼트적이라고 하는 것으로, 모든 말을 발언하는 것이 허락되지 않는 씬표가 설정된다. 제스처로 힘내라!', - ' -「명언의 인용.」지정 특기는《머리장식》. 과거의 명작 영화나 소설, 역사상의 사건등에서 따라한 명언 밖에 말할 수 없는 씬이 설정된다. 교양이 없으면 말할 수 없다!', - ' -「등장인물의증가。」지정 특기는《트레드》. 등장 인물이 쓸데 없이 두배로 늘어나서 각각 개성적인 고민이나 사건을 말하기 시작한다. 이대로는 귀찮고 개런티도 늘어나므로, 전부 죽이자.', - ' -「막연한 불안.」지정 특기는《자부》. 특별히 무언가 정해지지않고, 멍하니 불안감에 연연 괴로워하거나 침체하거나 하는 씬을 강요 당한다. 이것을 지루하게 하지 않는 것은 어렵다!', - - '「길게 끌기.」지정 특기는《삶》. 컷 없이 30분 정도 같은 씬이 계속 된다. NG는 용서되지 않는다. 이것으로 중간을 가지게할 수 있는 것은 프로의 배우정도의 것이지만, 회수인은 연기의 아마추어다.', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getprTableResult() - tableName = "헬 크로우터스크 표" - table = [ - - '「초라한 게스트.」지정 특기는《악당》. 일반인이나 개, 남동생이나 엄마가 게스트로서 등장한다. 본래의 게스트와의 차액은 착복된다. 사정을 알려져 있지 않은 게스트와 잘 관련되자!', - - '「친가에서의 촬영.」지정 특기는《외치다》. 촬영 장소가 친가가 된다. 본래의 로케 비용은 착복된다. 가족을 설득하고, 잘 촬영 허가를 받지 않으면 적자가 나와 버릴 것이다!', - - '「평상복으로의 촬영.」지정 특기는《안경》. 왠지 헬 스타일리스트가 휴일로, 그 만큼의 인건비와 의상대로써 착복된다. 평상복인 채로 초상의 액션을 해내는 것은 불가능하게 가깝다!', - - '「도보로 이동한다.」지정 특기는《고딕》. 헬 포털의 예산이 착복되었다. 오로지 씬까지 걷지 않으면 촬영조차 할 수 없다. 촬영전에 녹초가되어 버리면, 관객에게도 전해질 것이다.', - - '「특수 효과가 나오지 않는다.」지정 특기는《기대》. 리얼타임 특수 효과의 예산이 착복되었다! 예산 없이 일하려고 하지 않는 헬 SFX 엔지니어를, 어떻게든 애원이라도 해서 일하게 하자!', - - '「식사가 나오지 않는다.」지정 특기는《획득》. 식사의 시간이지만, 헬 주문 도시락이 오지 않는다. 그 만큼의 예산이 착복되었던 것이다. 공복인 상태로 좋은 연기를 하려면 , 기합에 의지할 수 밖에 없다.', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getpnTableResult() - tableName = "헬 스네이크터스크 표" - table = [ - - '「원수.」지정 특기는《가사도우미》. 과거 개변에 의해, 임의의 상대가, 갑자기 부모의 원수나 연인의 원수가 된다. 당황하지 않고 분노에 불타자. 왜 이렇게 되었는지, 생각해선 안돼!', - - '「사소한 일로부터 대싸움.」지정 특기는《기다리다》. 임의의 상대와 아무래도 좋은 이유로 싸움을 하는 것을 강요 당한다. 정말로 아무래도 좋아지고 싸움을 그만두는 것은 용서되지 않는다.', - - '「이익이 상반된다.」지정 특기는《네크리스》. 임의의 상대가 바라는 것과 자신이 바라는 것이 양립하지 않는 것을 어필 당한다. 그렇지 않더라 하여도 억지로 이유를 생각해 내라!', - - '「신적.」지정 특기는《네이키드》. 취미나 종교를 이유로, 임의의 상대와 싸움 하는 것을 강요 당한다. 이야기하고 알아 버리거나 취미의 폭이 넓어져선 안 된다.', - - '「유아기의 트라우마.」지정 특기는《질투》. 과거 개변으로 슬픈 기억이 날조 되어 엽기 살인범으로서 캐릭터가 추가된다. 약간 깬다거나 슬퍼하지마라. 미쳐라!', - - '「인류 일반상식의 미움.」지정 특기는《복수》. 이유 없게 사람을 미워하는 것을 강요 당한다. 원래 성격 좋은 회수인에 있어서는 상당한 난행이다. 인류의 나쁜 면 찾기를 하자!', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getpdTableResult() - tableName = "헬 드래곤터스크 표" - table = [ - - ' 「바리에이션을 보고 싶어서 NG.」지정 특기는《대물》. 별로 나쁜 연기는 아닌데, 조금 다른 바리에이션을 몇번이나 할거야. 이성을 잃지 말고 참아 줘!', - - '「뭔가 다르니까 NG.」지정 특기는《때리다》. 회수인의 연기에 트집을 잡을 수 있었다. 그러나 어떤 연기를 하면 좋은 것인지 가르쳐 주지 않는다. 이성을 잃지 않고 참아 줘! 다른 사람을 때려라!', - - '「 아직 시간이 있으니까 NG.」지정 특기는《타투》. 바보같은 이유로 NG가 나왔지만, 어쨌든 이성을 잃지 않고 참아 줘. 헬 드래곤의 기분을 해친다면 광고비가 깎아진다!', - - '「예산을 다 사용하고 싶어서 NG.」지정 특기는《네이키드》. 아직 인건비를 사용할 수 있기 때문에 다시 한번, 이라든가 하는 이유로 재시도다. 이성을 잃지 않고 참아 줘. 녀석은 돈을 가지고 있어!', - - '「기분이 나쁘기 때문에 NG.」지정 특기는《화내다》. 집에서 무엇인가 싫은 일이 있었으므로 라는 둥 트집을 잡혔다. 이제, 무엇을 해도 OK는 나오지 않는다. 이성을 잃지 않고 참아 줘. 언젠가는 끝난다!', - - '「네 존재자체가 NG.」지정 특기는《안전》. 회수인의 인선 그 자체에 트집을 잡을 수 있었다. 당신에게 NG를 내는 것만이 목적이다. 이성을 잃지 않고 참아 줘. 상대는 무진장 강하다.', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getpfTableResult() - tableName = "헬 플라잉터스크 표" - table = [ - - '「더러운 화장실.」지정 특기는《탐정》. 몹시 비위생적인 장소로 배경이 변경된다. 똥투성이 푸세식인 화장실인지, 똥구덩이 냄새가 풀풀난다. 악취에 견딜 수 있을지, 그것이 승부의 갈림길이다!', - - '「예술적 음부 은폐.」지정 특기는《뛰다》. 전라로 씬을 내지만 비쳐선 안 되는 것 이다. 본래라면 수영복의 천이 있는 부분이 카메라에 비치지 않게, 장애물을 활용해라!', - - '「촉수.」지정 특기는《벨트》. 당돌하게 촉수 몬스터가 등장한다. 그는 신사적이지만 가차 없이 습격해오므로, 섹시하게 져라! 아니면 관객은 실망할 것이다!', - '「미끌미끌.」지정 특기는《트레드》. 어쩐지 점액이 들어간 물통이 등장한다. 이것을 감싸고 씬을 시작하라고 말한다. 성분도 모르는 점액은 싫지만, 어떻게든 참아라!', - - '「병원체를 거쳐 입으로 섭취한다.」지정 특기는《공포》. 병의 원인이 될 것 같은 것을 억지로 먹혀진다. 구체적으로는 배설물이나 부패한 것, 처음부터 비위생적인 것 이다.', - - '「국부에의 심한 타격.」지정 특기는《죽음》. 헬 AD나 다른 캐릭터로부터 국부가 강타되는 것을 강요 당한다. 죽지 않고 잘 아파해라. 잘못하면 쇼크로 그대로 죽는다!', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getpgTableResult() - tableName = "헬 갓터스크 표" - table = [ - - '「아이돌이 동료로서 등장.」지정 특기는《의사》. 푸시받는 아이돌이 회수인의 아군으로서 등장하므로, 부드럽게 관계를 쌓아 올려 공투 해, 상대를 세우자. 리스펙트다!', - - '「아이돌이 적으로서 등장.」지정 특기는《차다》. 푸시받는 아이돌이 표적의 아군. 회수인의 적으로서 등장! 볼만한 장면을 준비 해 주면서, 잘 넘어뜨려라. 일방적으로는 안돼!', - - '「아이돌이 무의미하게 등장.」지정 특기는《검》. 푸시받는 아이돌이 등장하지만, 왜 등장하는지 아무도 모른다. 본인도 대본을 받지 않았다. 즉흥으로 어떻게든 해라!', - - '「아이돌의 동료가 된다.」지정 특기는《에스닉》. 푸시받는 아이돌의 동료가 되어, 당돌하게 사랑이나 모험을 한다. 황금의 영혼과 관계없는 이야기가 계속 되지만, 관객에게 그것을 눈치채게 하지 말아라!', - - '「아이돌과 악수.」지정 특기는《사랑》. 푸시받는 아이돌이 갑자기 나와 악수해 준다. 갑작스러운 일이지만, 당황해선 안 된다. 흐르는 듯이 화제를 만들며 회화해, 악수에 대해 코멘트를 하자!', - - '「같이 댄스.」지정 특기는《건강》. 갑자기 댄스 씬이 시작된다! 다만 회수인은 백 댄서다. 노래해라! 다 춤추어라! 헐떡거리거나 웃는 얼굴이 망가지면 NG다!', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end - - def getpbTableResult() - tableName = "헬 베어터스크 표" - table = [ - '「헬 이불.」지정 특기는《대물》. 지옥과 같은 잘 때의 기분을 제공하는, 한 장 200만 헬엔의 헬 이불을 어필하는 것에. 소재는 절대 그렇게 좋지 않기 때문에, 기술을 강조하자.', - - '「헬 핸드백.」지정 특기는《잡다》. 무한하게 물건이 들어가는 핸드백을 어필이다. 다만 원하는 것을 꺼낼 수 없고, 가방안에 가방을 넣으면, 심한 일이 일어난다.', - - '「헬 마스크.」지정 특기는《모자》. 완전하게 헬 P의 머리 부분을 재현한 고급 마스크를 써, 그 훌륭함을 어필하면서 영화를 촬영하자. 덧붙여 시야는 몹시 나쁘다.', - - '「헬 카메라.」지정 특기는《아이돌》. 반드시 심령 사진이 찍히는 카메라를 사용하며 손님에게 강매해라! 영령사진이 나오기도 하지만, 그것을 눈치채여선 안 된다. 사진을 분명히 잘 보인다!', - - '「헬 와치.」지정 특기는《초조》. 시간은 모르지만 엄청 멋진 시계를 어필. 그 거 팔찌아냐, 라고 태클받기기 전에 잘 회유하자!', - - '「헬 부적.」지정 특기는《번영》. 소원을 성취하는 악령이, 당신의 성공을 확약! 그 다음은 성공한 채로 사고로 죽게 되지만, 그런 것 사소한 일이다!', - ] - result, number = get_table_by_1d6(table) - - return tableName, result, number - end -end diff --git a/src/src_bcdice/diceBot/KurayamiCrying.rb b/src/src_bcdice/diceBot/KurayamiCrying.rb deleted file mode 100644 index 5c0b44a7f..000000000 --- a/src/src_bcdice/diceBot/KurayamiCrying.rb +++ /dev/null @@ -1,57 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class KurayamiCrying < DiceBot - # ゲームシステムの識別子 - ID = 'KurayamiCrying' - - # ゲームシステム名 - NAME = 'クラヤミクライン' - - # ゲームシステム名の読みがな - SORT_KEY = 'くらやみくらいん' - - # ダイスボットの使い方 - HELP_MESSAGE = "・アクシデント表(ACT)\n" - - def rollDiceCommand(command) - case command - when /^ACT(\d+)$/i - number = Regexp.last_match(1).to_i - info = TABLES["ACT"] - name = info[:name] - table = getTableInfoFromExtraTableText(info[:table]) - - text = table[number] - - result = "#{name}(#{number}) > #{text}" - return text - end - result = getTableCommandResult(command, TABLES) - return result unless result.nil? - end - - TABLES = - { - - 'ACT' => { - :name => "アクシデント表", - :type => '1D10', - :table => <<'TABLE_TEXT_END' -頭の中が黒く染まってゆく、怖い、苦しい。気持ち悪い!でも…なんだか少しだけ、すがすがしい。あなたは「発狂」する。すでに「発狂」している場合、「理性」を2点失う。 -待って、今のはナシ!調子が愚かったっていうか、ちょっと違うことしちゃったからさ…もう1回やらせてよ、ね?失敗した「判定」を再度やり直す。ただし、前回と同じ「能力値」を使うことはできす、進行役と「交渉」を行った扱いとなる(代替判定により「浸食」が2点増加する)。 -こっちは必死にやってるってのに、まったく、アイツめ……! あなたが「ツナガリ」を結んでいる主人公を任意に1人選び、「感情」を変更する。この際、必す「負の惑情」を選ばなければならない。「ツナガリ」を結んでいる主人公がいない場合、ダイスを振り直し、再度「アクシデント表」に当てはめる。 -不意を突かれたあなたは、とっさに化物を攻撃する!……確かに化物に見えたのだ。しかし、あなたが手にかけたのは見知った顔だった。あなたが正の「ツナガリ」を結んでいる主人公をランダムに1人選び、2点のダメージを与える。正の「ツナガリ」を結んでいる主人公がいない場合、ダイスを振り直し、再度「アクシデント表」に当てはめる。 -さっきからずっと、不気味な視線を感じる……どうやら、良くない存在に目をつけられてしまったようだ。「怪異」があなたに一方的な「ツナガリ」を獲得する。すでに「怪異」から「ツナガリ」を獲得されている場合、ダイスを振り直し、再度「アクシデント表」に当てはめる。 -ぶつんと頭の中で音がする。あれっ?誰かのことを考えていたような……なんだか記憶が霞んで、思い出せない。あなたが獲得している「ツナガリ」をランダムに1つ失う(「継続的なツナガリ」である場合、セッション終了後に再度獲得する)。「ツナガリ」が1つもない場合、ダイスを振り直し、再度「アクシデント表」に当てはめる。 -ぞわりと背中に懇寒が走る。自分を取り巻く「流れ」──運命に似た何かが歪んでしまったような、おぞましい予感が胸を走る。「確保」しているダイスの目が「10」になる。ダイスを「確保」していない場合、新たに「10」を「確保」する。すでに「10」の目を「確保」している場合、ダイスを振り直し、再度「アクシデント表」に当てはめる。 -違う……違う、違う。これは自分のせいじゃない。いや、きっと何かの間違いだ。そう、あいつのせいに決まってる!進行役があなた以外の主人公をランダムに1人選ぷ(誰を選んだか参加者に教えてはならない) 。選ばれた主人公が次に判定を行った際、進行役は、最も低い数字を示しているダイスの目を「10」に変更する。 -あぁ……見つからない。アレがないとダメなのに。一体どうしたら──!「アイテム」をランダムに1つ失う(「継続品」である場合、センョン終了後に再度獲得する)。「アイテム」を1つも所持していない場合、「アイテム」を所持する主人公をランダムに1人選び、2点のダメージを与え、「アイテム」を1つ奪い取る。主人公が誰も「アイテム」を所持していない場合、「理性」を2点失う。 -まるで自分を支える何かが失われたように、あなたはその場に立ち尽くす。諦めと絶望が心を支配する。ああ、そうか。これが、「心が折れる」ということか……。あなたは「理性」を4点失う。 -TABLE_TEXT_END - }, - - }.freeze - - setPrefixes(["ACT.*"] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/LiveraDoll.rb b/src/src_bcdice/diceBot/LiveraDoll.rb deleted file mode 100644 index c83b7edd0..000000000 --- a/src/src_bcdice/diceBot/LiveraDoll.rb +++ /dev/null @@ -1,375 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class LiveraDoll < DiceBot - # ゲームシステムの識別子 - ID = 'LiveraDoll' - - # ゲームシステム名 - NAME = '紫縞のリヴラドール' - - # ゲームシステム名の読みがな - SORT_KEY = 'ししまのりうらとおる' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 - resultArray.push("×") - else - resultArray.push(i) - success += 1 - end - end - - blockText = blockNo.join(',') - resultText = resultArray.join(',') - - result = "#{diceCount}D6(Block:#{blockText}) > #{diceText} > #{resultText} > 成功数:#{success}" - - return result - end - - def get_card_text(color, cardtype, cardindex) - if cardindex == 0 - return nil - end - - case color - when 'C' - case cardtype - when 'L' - table = [ - [1, '『ストライク』 対象に【アタック:1《OD》】を行い、可能ならば追加で【エクストルード】を行う(可能な状況であれば行わなければならない)。'], - [2, '『シュート』 対象に【アタック:1《OD》】を行う。対象が自身より低い「高度」に存在する場合、代わりに【アタック:2《OD》】を行う。'], - [3, '『スナイプ』 対象に【アタック:1《OD》】を行う。対象が自身より低い「高度」に存在する場合、代わりに【アタック:2《OD》】を行う。'], - [4, '『ウォーク』 【ムーヴ:1】を行う。'], - [5, '『ラン』 【ムーヴ:2】を行う。'], - [6, '『オルタネート』 直後に行うアタックネイルでは、ダイスロールを2度行い、任意の一方の結果を選ぶことが出来る。'], - [7, '『ジャンプ』 このアタックネイル終了時まで自身が「高度:3《OD》」に存在するものとして扱う。'], - [8, '『オーヴァードライヴ』 直後のネイルでは《OD》指定された数値を「4《OD》」増加する。'], - [9, '『ガード』 ダイスロールで使用されたダイスの内ふたつまでを選ぶ。その出目を1減少する。'], - [10, '『パリィ』 ダイスロールで使用されたダイスの内ふたつまでを選ぶ。そのダイスを振り直しさせる。この時、振り直した後の値のみを採用する。'], - [11, '『カウンターアタック』 自身の「シールドレス」を破壊したユニットに対し、即座に【アタック:1】を行う。'], - [12, '『トラップ』 移動を行ったユニットに対し、即座に【アタック:1】を行う。'], - [13, '『ミスチーフ』 移動を行ったユニットに、追加で【ムーヴ:1】を行わせる。この移動先は貴女が決定する。'], - [14, '『ライトニングダンス』 即座に【ムーヴ:1】を行う。(これによって、直後のアタックネイルの射程の外に出た場合、そのアタックネイルのダイスロールは行われず、失敗したことになる)'], - ] - when 'D' - table = [ - [1, '『貴女好みの装い(おすきなように)』 貴女好みの装いは破壊されない。'], - [2, '『迷子の貴女へ(きめられないのなら、そのままどうぞ)』 全ての色(無色を含む)のAsレベルが3であるかのようにオーナーズネイルを使用することが出来る。'], - ] - end - when 'K' - case cardtype - when 'L' - table = [ - [1, '『黒爪の掻きむしり(デザイア・スクラッチ)』 対象に【アタック:黒Asレベル《OD》+1】を行う。'], - [2, '『黒爪の突き刺し(ヘイトレッド・ピアース)』 対象に【アタック:3《OD》】を行い、その後【エクストルード】を行ってもよい。'], - [3, '『黒弾の豪雨(ブラックレイン・ダムネイション)』 対象に【アタック:4】を行う。その後自身に【アタック:1】を行う。'], - [4, '『黒弾の奔流(ブラックニードルカスケイド)』 対象に【アタック:2】を行う。対象が自身よりも低い「高度」に存在する場合、代わりに【アタック:4《OD》】を行う。'], - [5, '『黒影の疾走(シャドウ・ストリート・ラン)』 【ムーヴ:1】か【ムーヴ:2】のどちらかを行う。'], - [6, '『夜空を征け(ナイト・ランナー)』 【ムーヴ:1】を行う。このムーヴネイル以降、クリンナップフェイズ終了時まで、自身が「高度:7」に存在するものとして扱う。'], - [7, '『黒刃の執行者(ブラック・エンフォーサー)』 直後に行うアタックネイルでは、《OD》指定された数値を「2《OD》」増加する。また、2以上の成功数が出た場合、攻撃対象の「シールドレス」を追加でもう1枚破壊する。'], - [8, '『黒茨の塔を駆け抜けよ(スーサイド・ドライヴ)』 自身に【アタック:1】を行う。これ以降クリンナップフェイズ終了時まで、地震が「高度:13《OD》」に存在するものとして扱う。'], - [9, '『舞い踊る黒刃(ハイマニューバ・ブラック・ブレイド)』 直前のムーヴネイルで移動したセル数に等しい回数だけ、直後のアタックネイルの複製を作成し、実行する。'], - [10, '『影跳び(シャドウ・ダッジ)』 直前のアタックネイルによって、自身の「シールドレス」が1枚も破壊されていなかった場合、即座に【ドロゥ:1】を行う。'], - [11, '『報復の刃(アヴェンジャー・エッジ)』 自身の「シールドレス」を破壊したユニットに対し、即座に【アタック:黒Asレベル】を行う。'], - ] - when 'D' - table = [ - [1, '『始まりの黒(ニューブラック・ドレス)』'], - [2, '『第二夜の黒(クレセントブラック・ドレス)』 自身がドロゥを行う時、自身に【アタック:1】を行うことで、ドロゥ数を+2しても良い。'], - [3, '『第三夜の黒(ハーフブラック・ドレス)』 自身がドロゥを行う時、ダイスロールを行うダイスのうちひとつを振らず、任意の出目を出したものとして良い。'], - [4, '『第四夜の黒(フルブラック・ドレス)』 いずれかのユニットがムーヴネイルを使用する度、そのユニットに対し即座に【アタック:2】を行ってもよい。'], - [5, '『終わりの黒(ダークブラック・ドレス)』 自身を含む全てのユニットの、ドロゥフェイズ中のドロゥ数を5減少する。'], - ] - when 'O' - table = [ - [1, '『意志の介入(マインド・ランペイジ)』 プレイヤーの1人を対象とする。対象のオーナーズネイルをすべて見る。その後、その中のひとつを「使用済」にする。'], - [2, '『意志の散逸(マインド・ロスト)』 ドロゥのダイスロールに使用されたダイスひとつを取り除く。(取り除かれたダイスはセットダイスとしてセットされない)'], - [3, '『漆黒の願い(ブラック・ウィッシュ)』 このラウンドの終了時まで、自身の黒のコスト上限を3増加する。(例えば、現在の黒のAsレベルが2である場合、このラウンドの間のみAsレベルが5であるかのようにオーナーズネイルを使用することが出来る。ただし、実際にAsレベルが上昇しているわけではないことに注意すること)'], - [4, '『想いの黒刃(ハートブレイド:ブラック)』 ユニット1体を対象とする。対象に【アタック:3】を行い、自身のリヴラドールに【アタック:1】を行う。'], - [5, '『黒の報酬(ブラック・サプライズ)』 自身のリヴラドールに【アタック:1】を行う。このフェイズで行う自身のドロゥ数を2増加する。'], - [6, '『翔けよ黒夜(ミッドナイトホーク)』 このラウンド終了時まで、貴女のリヴラドールが使用するアタックネイルに以下の一文を追加する。「対象が自身よりも低い「高度」に存在する場合、追加で【アタック:1】を行う。」'], - [7, '『傷跡の共鳴(ハート・レゾナンス)』 プレイヤー1人を対象とする。対象の「シールドレス」を1枚破壊する。その後自身の「シールドレス」を1枚破壊する。'], - [8, '『居心地の悪さ(ブラック・マイアズマ)』 このムーヴネイルを打ち消す。'], - [9, '『鉄茨よ侵食せよ(ブラックブランブル)』 セルひとつを指定する。指定したセルに「鉄茨マーカー」を設置する。'], - [10, '『鉄華乱舞(アイアン・ブルーム)』 ユニット1体を対象とする。対象に【アタック:3】を行う。これによって対象の「シールドレス」を1枚以上破壊した場合、対象のセットダイスの内、貴女の任意のふたつを取り除く。'], - [11, '『だむねいしょん』 自身のリヴラドールを含む、ナインライヴラリ上に存在する全てのユニットの現在の「パッシヴドレス」を1枚破壊する。(現在のパッシヴドレスの前に装備していたパッシヴドレスへと変更される)'], - [12, '『残酷な真実(クルーエルトゥルース)』 リヴラオーナー1人を対象とする。対象のオーナーズネイルをすべて見る。その後、その中のみっつを「使用済」にする。'], - [13, '『孤独と銃と最前線(アヴァンドナー)』 これ以降自身のリヴラが行うムーヴネイル全てに以下の一文を追加する。「移動先のセルに存在するユニットに対し【アタック:1】を行っても良い」。これはリヴラバトル終了時まで継続する。'], - [14, '『節制の黒絢(テンパランス:ザ ブラックソード)』 自身のオーナーズネイルの内、任意のふたつの「使用済」を解除する。'], - [15, '『雷電の黒絢(ライトニング:ザ ブラックソード)』 ユニット1体を対象とする。対象に【アタック:2】を行う。これによって対象の「シールドレス」を1枚以上破壊した場合、さらに対象のセットダイスを1個取り除く。'], - [16, '『思索の黒絢(マインド:ザ ブラックソード)』 全てのプレイヤーはプレイヤー自身のセットダイスを1個取り除く。その後貴女は【ドロゥ:2】を行う。'], - [17, '『爛熱の黒絢(グロウス:ザ ブラックソード)』 全てのプレイヤーは【ドロゥ:1】を行う。その後、貴女は【ドロゥ:2】を行う。'], - ] - end - when 'W' - case cardtype - when 'L' - table = [ - [1, '『閃け白刃(ホワイトブレイド)』 対象に【アタック:白Asレベル《OD》+1】を行い、その後【エクストルード】を行ってもよい。'], - [2, '『二重に響け白刃(ホワイト・ダブルストライク)』 対象に【アタック:1】を行い、その後【アタック:1】を行う。'], - [3, '『白き弾丸にて狙い撃て(ホワイト・スナイパー)』 対象に【アタック:2】を行う。対象が自身よりも低い「高度」に存在する場合、代わりに【アタック:4《OD》】を行う。'], - [4, '『白き弾丸よ降り注げ(ホワイト・バレットシャワー)』 対象に【アタック:3《OD》】を行い、続けて【アタック:3】を行う。'], - [5, '『白光の如く駆けよ(フラッシュ・ランニング)』 【ムーヴ:3】を行う。'], - [6, '『閃光の突撃(フラッシュチャージ)』 対象が存在するセルへ移動する。'], - [7, '『白光の衣(ホワイト・エンチャント)』 直後のアタックネイルで、現在の自身の「シールドレス」の枚数以上の成功数が出た場合、自身の「シールドレス」を1枚回復する。'], - [8, '『荘厳なりし白の塔(ホワイトゴールドタワー)』 クリンナップフェイズ終了時まで、自身が「高度:8《OD》」に存在するものとして扱う。'], - [9, '『輝きの盾(ホワイトシールド)』 自身のパッシヴドレスの「ブロックナンバー」に6を追加する。この効果はこのダイスロールの結果のみに有効である。'], - [10, '『より疾きは光の一手(ライトニング・インターセプト)』 移動を行ったユニットに対し、即座に【アタック:2】を行う。'], - [11, '『白の語り部(ホワイトテラー)』 ダイスロールで使用されたダイス全ての出目を6に変更する。'], - ] - when 'D' - table = [ - [1, '『愚者の白(ホワイトフール)』'], - [2, '『魔術師の白(ホワイトマジシャン)』 自身が「高度:6」以上に存在する時、ドロゥ数を+1しても良い。'], - [3, '『女教皇の白(ホワイトハイプリエステス)』 1ラウンドに1回まで、自身のダイスロールの出目ひとつを1増加しても良い。'], - [4, '『女帝の白(ホワイトエンプレス)』 自身の白のアタックネイルに、以下の一文を追加する。「続けて【アタック:1】を行う。射程はこのアタックネイルに準ずる」'], - [5, '『皇帝の白(ホワイトエンペラー)』 自身の「シールドレス」が破壊される度に、1d6のダイスロールを行う。この時1か2の出目が出た場合「シールドレス」を1枚回復する。'], - ] - when 'O' - table = [ - [1, '『秩序の護り手(ホワイト・ディフェンダー)』 【ドロゥ:1】を行う。'], - [2, '『あなたにも愛を(トゥーミーユアラヴリィ)』 自身の「シールドレス」を1枚回復し、その後自身以外の「シールドレス」を1枚回復する。'], - [3, '『罪なき純白(じゅんぱくイノセント)』 このドロゥフェイズで行うダイスロールの出目を全て1減少する。(1の出目は1のままである)'], - [4, '『白銀に輝け我が左腕(アージェティア)』 このアタックネイルで「シールドレス」を少なくとも1枚以上破壊した場合、追加で【アタック:2】を行う。'], - [5, '『撲滅の白(パニッシュメント・ブレス)』 自身のリヴラドールを含む、ナインライヴラリ上に存在する全てのユニットに【アタック:2】を行う。'], - [6, '『誠実の白(ホワイトオネスティ)』 次のスタンバイフェイズ開始時まで、自身のリヴラドールのパッシヴドレス「ブロックナンバー」に5を追加する。'], - [7, '『正義の剣(ソード・オブ・ジャスティス)』 このアタックネイルで「シールドレス」を少なくとも2枚以上破壊した場合、自身の「シールドレス」を1枚回復する。'], - [8, '『物語の護り手(ロア・ディフェンダー)』 ナインライヴラリ上に存在するマーカーを、任意の数取り除く。'], - [9, '『撲滅の賦(がらすまどのむこうがわ)』 自身のリヴラドールを含む、ナインライヴラリ上に存在する全てのユニットの現在の「パッシヴドレス」を1枚破壊する。(現在のパッシヴドレスの前に装備していたパッシヴドレスへと変更される)'], - [10, '『忘却の白(ホワイト・オブリビオン)』 自身のセットダイスを全て取り除く。自身のオーナーズネイルの内、任意のふたつの「使用済」を解除する。'], - [11, '『白の従者(ホワイト・フォロワ)』 セルひとつを指定する。指定したセルに「白従者マーカー」を設置する。'], - [12, '『秩序の龍(クロム・クラーク・レプリカ)』 セルひとつを指定する。指定したセルに「偽龍マーカー」を設置する。'], - [13, '『夢の向こうの旅人(ロアテラ)』 このドロゥフェイズで行うダイスロールでは、ダイスそれぞれに対し、任意の出目が出たものとして扱う。'], - [14, '『混色もまた物語:黒(ロア:ブラック)』 自身を含む全てのユニットに【アタック:4】を行う。'], - [15, '『混色もまた物語:赤(ロア:レッド)』 ユニット1体を対象とする。対象に【アタック:ラウンド数】を行う。このアタックで「シールドレス」を破壊した場合、貴女の「シールドレス」を1枚回復する。'], - [16, '『混色もまた物語:青(ロア:ブルー)』 使用されたオーナーズネイルの効果は発揮されず、「使用済」となる。'], - [17, '『混色もまた物語:緑(ロア:グリーン)』 プレイヤー1人を対象とする。対象の「シールドレス」を1枚回復する。'], - ] - end - when 'R' - case cardtype - when 'L' - table = [ - [1, '『焼きつくせ炎の爪(ファイアクロウ)』 対象に【アタック:赤Asレベル《OD》+2】を行う。'], - [2, '『焦がれの情熱(ファイアフィスト)』 対象に【アタック:4】を行い、その後追加で【エクストルード】を行っても良い。'], - [3, '『掻きむしれ炎禍(ファイアドライヴ)』 対象に【アタック:赤Asレベル】を行い、その後【エクストルード】を行う。移動先は対象ごとに、貴女が決定する。'], - [4, '『炎の壁よなぎ払え(ファイアウォール)』 自身の存在するセルと、隣接しているセル全てに存在するユニット全て(自身を除く)を対象とする。対象に【アタック:2】を行う。'], - [5, '『赤熱鉄柱ぶん回しの刑(マス・ファイア・ブレード)』 対象に【アタック:4】を行い、続けて【アタック:3《OD》】を行う。その後【エクストルード】を2度行う。'], - [6, '『赤熱溶断ぶった斬り(ヒュージ・ファイア・ブレード)』 対象に【アタック:3《OD》】を行い、続けて【アタック:2】を行い、続けて【アタック:1】を行う。'], - [7, '『追い打ちの炎渦(ファイアストーム)』 直後に行うアタックネイルでは、《OD》指定された数値を「3」増加する。また、このアタックネイルで「シールドレス」を1枚以上破壊した場合、即座に【ドロゥ:2】を行い、続けてセットダイスを2個取り除く。'], - [8, '『雷電疾走(ライトニング・ランニング)』 【ムーヴ:3】を行う。'], - [9, '『烈火流星雨あられ(メテオストーム)』 このムーヴネイルに以下の一文を追加する。「このムーヴネイルの移動開始セル、通過したセル、移動完了セルに存在する全てのユニット(自身を含む)に【アタック:3】を行う」'], - [10, '『あなたは私のもの!(にがさない)』 移動を行ったユニットを、自身と同じセルまで移動させる。'], - [11, '『叩き落とせ!(フォールアウト)』 アタックネイルを使用するユニット1体を対象とする。対象が存在するセルの高度を0に変更する。また対象の「高度」をクリンナップフェイズまで、即座に0に変更する。'], - ] - when 'D' - table = [ - [1, '『灯散らす赤き花輪(フローラルリング)』 リヴラフェイズ開始時に、任意のユニット1体を対象とし【アタック:1】を行ってもよい。'], - [2, '『アネモスのビスチェ』 ドロウフェイズ時、自身のドロゥ数を1減少することで、自身を除く全てのユニットに【アタック:1】を行うことを選んでも良い。'], - [3, '『ベラドンナのピンヒール』 自身の行う【アタック:X】では、攻撃対象のブロックナンバーのうち「2」を無視して攻撃を行うことが出来る。'], - [4, '『オダマキの花冠(フラワークラウン)』 クリンナップフェイズの開始時に、自身を除く全てのユニットに【アタック:2】を行う。'], - [5, '『朱塔の花園(ブルーミングガーデン)』 メインフェイズ開始時、自身の「シールドレス」を1枚破壊しても良い。こうした場合、オーナーズネイルひとつの「使用済」を解除する。'], - ] - when 'O' - table = [ - [1, '『走れ雷電(ライトニング・ボルト)』 ユニット1体を対象とし、【アタック:2】を行う。全てのプレイヤーは、このオーナイズネイルに対し、リアクトネイルを使用することが出来ない。'], - [2, '『穿て炎槍(フレイムランス)』 ユニット1体を対象とし、【アタック:2】を行う。全てのプレイヤーは、このオーナイズネイルに対し、リアクトネイルを使用することが出来ない。'], - [3, '『熱情と踊れ(ダンス・ウィズ・ヒート)』 自身のリヴラドールを含む全てのユニットに対し【アタック:1】を行う。'], - [4, '『昇炎の罠(ファイアリングトラップ)』 直後のムーヴネイルで移動を行ったユニットを対象とし、【アタック:3】を行う。'], - [5, '『精神混沌の炎(レッド・パラノイア)』 自身のセットダイスのうち、任意のふたつを取り除き、【ドロゥ:2】を行う。セットダイスがふたつ以上存在しない場合にはこのネイルを使用することが出来ない。'], - [6, '『愛情の渇望(あなたがほしい)』 任意のユニット1体を対象とする。対象を自身と同じセルに移動させる。その後自身と同じセルに存在するユニット全てに【アタック:2】を行う。'], - [7, '『過去からの想い(6400年後の私へ)』 このドロゥフェイズで貴女はドロゥを行うことが出来ない。次のラウンドのドロゥフェイズでは、貴女のドロゥ数を7増加する。'], - [8, '『咲き乱れよ百合の花(レッド・リリィ)』 自身を含む全てのユニットが行ったドロゥのダイスロール結果全てを振り直させる。'], - [9, '『煉獄の恋(ヘルフレイム・ラヴソング)』 プレイヤー1人を対象とする。対象の「シールドレス」を1枚破壊する。その後自身の「シールドレス」を1枚破壊する。'], - [10, '『その信頼は重圧(トラストユー)』 ユニット1体を対象とする。このラウンドの終了時まで、対象がいずれかのユニットに【アタック:X】を行う度に、対象に【アタック:1】を行う。'], - [11, '『龍炎の嵐(ドラゴンストーム)』 セルひとつを指定する。指定したセルに「炎龍マーカー」を設置する。'], - [12, '『復讐の花(ブルーム・オブ・リベンジ)』 自身のリヴラドールを除く全てのユニットに【アタック:4】を行い、続けて【アタック:3】を行う。'], - [13, '『再臨の銀(アガートラム)』 このドロゥフェイズで行った自身のダイスロール結果のダイス全ての出目を3減少する。その後【ドロゥ:3】を行う(このドロゥには出目減少の効果は適用されない)。'], - [14, '『銀腕、携えるは黒(フレイガラク:ブラック)』 自身のセットダイスを2個取り除く。ユニット1体を対象とする。対象に【アタック:3】を行い、【アタック:2】を行い、【アタック:1】を行う。'], - [15, '『銀腕、携えるは白(クライドハームソルース:ホワイト)』 全てのユニットの「シールドレス」を1枚回復する。その後貴女はさらに「シールドレス」を1枚回復する。'], - [16, '『銀腕、携えるは青(カレトヴルッフ:ブルー)』 【ドロゥ:5】を行う。その後セットダイスを2個取り除く。'], - [17, '『銀腕、携えるは緑(スカザック:グリーン)』 セルひとつを指定する。指定したセルに「影槍マーカー」を設置する。'], - ] - end - when 'B' - case cardtype - when 'L' - table = [ - [1, '『碧空の剣(ストラトスフィア・ブレイド)』 対象に【アタック:3】を行う。'], - [2, '『蒼天の剣靴(ストラトスフィア・ブレイドブーツ)』 対象に【アタック:1】を行う。対象が自身よりも低い「高度」に存在する場合、代わりに【アタック:4《OD》】を行い、対象の存在するセルへ移動する。'], - [3, '『強襲翼撃(ウィング・ブレイド)』 対象に【アタック:3《OD》】を行い、対象の存在するセルへ移動する。'], - [4, '『蒼弓の猛撃(ブルー・アローレイン)』 対象に【アタック:1】を行う。対象が自身よりも低い「高度」に存在する場合、続けて【アタック:3】を行う。'], - [5, '『空歩き(エアステップ)』 【ムーヴ:2】を行う。このムーヴネイル以降、クリンナップフェイズ終了時まで、自身が「高度:6《OD》」に存在するものとして扱う。'], - [6, '『凪歩き(カームステップ)』 【ムーヴ:1】を行う。移動先のセルにリヴラドールが存在する場合、【エクストルード】を行っても良い。'], - [7, '『風の道標(ウィンドサインポスト)』 このアタックネイルの効果で「シールドレス」を1枚以上破壊した場合、アタックネイルの処理が終わった後、【ドロゥ:1】を行う。'], - [8, '『精密思考(シャープセンス)』 このアタックネイルでは、攻撃対象のブロックナンバーのうち「3」を無視して攻撃を行うことが出来る。'], - [9, '『思考の渦(ぐるぐる)』 ダイスロールに使用されたダイスひとつを指定する。そのダイスを振り直させる。'], - [10, '『空翔けの回避(レビテート)』 そのアタックネイルのダイスロールで使用されたダイス全ての出目を1減少する。'], - [11, '『たゆたう心、空の様に(ストラトスフィア・ハート)』 自身に適用された【エクストルード】を打ち消し、元のセルへと戻る。その後【ドロゥ:1】を行う。'], - ] - when 'D' - table = [ - [1, '『青空を這い(スカイ・クロウラ)』 セットアップフェイズ毎に、ダイスを1個振っても良い。そうした場合、クリンナップフェイズまで、ダイスの出目に等しい「高度」に自身が存在するものとして扱う。'], - [2, '『碧海を舞い(ブルー・アルペジオ)』 自身が「高度:0」にいる間、ドロゥ数を2増加する。'], - [3, '『蒼天を翔ける(キディ・グレイド)』 ドロゥフェイズでのドロゥ数を1減少することで、即座に任意のユニット1体に【アタック:1】を行っても良い。この効果は1ラウンドに1回のみ宣言出来る。'], - [4, '『戦場の妖精(フェアリィドレス:スノウ・ウィンド)』 自身が「高度:6」以上に存在する間、自身のブロックナンバーに6を追加する。'], - [5, '『いつか碧空の果てへ(プレアデス)』 自身がドロゥを行う時、ダイスロールに使用するダイスの内最大2個を任意の出目が出たことにして良い。'], - ] - when 'O' - table = [ - [1, '『冷静な思案(いま、このタイミング)』 【ドロゥ:青Asレベル】を行う。'], - [2, '『入念な思考(これとこれは、いらないかな)』 【ドロゥ:1】を行い、セットダイスから任意のひとつを取り除く。'], - [3, '『即決即断(みてたよ。させないんだから)』 このダイスロールのダイス目全てを2減少する。'], - [4, '『方針変更(こっちの方がきっといいよ)』 ダイスロールで使用されたダイスひとつを裏返す(もしくは7からその出目の数値を引いた出目に変更する)。'], - [5, '『小さな知略(マハトマ)』 任意のプレイヤー1人を対象とする。対象のオーナーズネイルを見る。その中から1枚を指定する。対象はそのオーナーズネイルを次のラウンドのクリンナップフェイズまで使用できなくなる。'], - [6, '『青の精鋭(ブルー・アデプト)』 セットダイスを2個取り除く。ユニット1体を対象とする。対象に【アタック:2】を行う。'], - [7, '『対抗(カウンタースペル)』 使用されたオーナーズネイルの効果は発揮されず、「使用済」となる。'], - [8, '『碧空の加護(オルガ)』 自身のオーナーズネイルひとつの「使用済」を解除する。'], - [9, '『思考妨害(あ、あれ見て?)』 ダイスロールに使用されたダイスの内、最大ふたつまでを指定する。それらのダイスを振り直させる。'], - [10, '『碩学式回路(ジーニアス・サーキット)』 【ドロゥ:3】を行い、セットダイスから任意のふたつを取り除く。'], - [11, '『碩学式"大"回路(ジーニアス・メガ・サーキット)』 任意のプレイヤー1人を対象とする。対象のオーナーズネイルを見る。その中から1枚を指定する。そのオーナーズネイルに以下の一文を追加する。「この効果を解決した後、自身に【アタック:5】を行う。」'], - [12, '『偉大なる集合知(ハイアラキ)』 【ドロゥ:6】を行い、セットダイスから任意のみっつを取り除く。'], - [13, '『碧空を越える者(ストラトスフィア・ブレイヴ)』 【ドロゥ:自身のリヴラドールの現在の高度】を行う。'], - [14, '『深淵なる熟慮(わるだくみ)』 【ドロゥ:2】を行う。この時、6の出目を出したダイスはセットされず、取り除かれる。'], - [15, '『深遠たる秩序(知識こそが正義)』 1~6の内、数字をひとつ指定する。このドロゥフェイズの間、全てのプレイヤーが行う【ドロゥ:X】では、指定した出目を出したダイスはセットすることが出来ない。'], - [16, '『深淵より至れ、始まりへ(アマランサス・レプリカ)』 自身の「シールドレス」を1枚破壊する。【ドロゥ:3】を行い、自身のオーナーズネイルひとつの「使用済」を解除する。'], - [17, '『深遠より至れ原初の森(混沌の森)』 リヴラドール1体を対象とする。対象の現在のパッシヴドレスと、自身のパッシヴドレスを交換する。この効果はクリンナップフェイズまで継続する。(効果中にパッシヴドレスが破壊されていた場合、破壊される前のパッシヴドレスに戻る)'], - ] - end - when 'G' - case cardtype - when 'L' - table = [ - [1, '『隕鉄の剣(メテオ・ブランド)』 対象に【アタック:緑Asレベル+2《OD》】を行う。'], - [2, '『大樹の槌(トネリコ・ハンマー)』 対象に【アタック:緑Asレベル+1】を行い、続けて【エクストルード】を行う。'], - [3, '『巨腕の操者(ストレングス・アーム)』 対象に【アタック:5】を行い、【アタック:2】を行い、続けて【エクストルード】を行う。'], - [4, '『地を割る弾丸(ガイア・バレット)』 対象に【アタック:3《OD》】を行う。'], - [5, '『踏み割り進め!(デストラクトウォーク)』 【ムーヴ:1】を行う。移動先のセルの「高度」を1減少する(高度は0より低い値にはならない)。'], - [6, '『鋼の木樹を纏うように(ワイヤーアクション)』 【ムーヴ:1】を行う。自身が「高度:5」より高いセルから移動する場合、代わりに任意の座標へ移動する。'], - [7, '『より大きく!(ビッグ・アンド・ビガー)』 直後に行うアタックネイルでは、合計3以上の成功数が出た場合、攻撃対象の「シールドレス」を追加でもう1枚破壊する。'], - [8, '『より強靭に!(アンド・タフ)』 直後に行うアタックネイルで、合計3以上の成功数が出た場合、自身の「シールドレス」を1枚回復する。'], - [9, '『翼の切断(まっさかさまにおちなさい)』 対象の「高度」を0に変更する。移動先のセルに「高度」が設定されている場合はその「高度」に変更する。'], - [10, '『茸の道(マッシュロード)』 即座に【ムーヴ:1】を行う。'], - [11, '『分かれ道(ロード・トゥワイス)』 対象の移動距離を1減少する。'], - ] - when 'D' - table = [ - [1, '『仮面舞踏会(マスカレイド)』'], - [2, '『黙示の鎧(アポカリプス)』 自身が「高度:0」に存在する間、自身のブロックナンバーに「5、6」を追加する。'], - [3, '『昇華の階段(スパイラル・アセンション)』 スタンバイフェイズ毎に、ダイスを2個振り、セルをひとつ指定して良い。そうした場合、そのセルの高度はダイスので目の合計値に変更される。'], - [4, '『忘却の森(フォレスト:ジ オブリビオン)』 自身が行う【アタック:X】で2以上の成功数を出していた場合、破壊する「シールドレス」の枚数は1枚ではなく、成功数の値に等しくなる。'], - [5, '『永遠に続く一日(バンデッド アゲート:ザ ドリーミング)』 自身の全てのネイルの《OD》指定された値を「5」増加する(この計算は、他の《OD》指定された数値を変動させる効果の前に行われる)'], - ] - when 'O' - table = [ - [1, '『限定巨大化(リミテッド・グロウス)』 このラウンドの終了時まで、自身のリヴラネイルの【アタック:X】は【アタック:X+1】に変更される。'], - [2, '『被覆の盾(シュラウド・シールド)』 このアタックネイルの成功数を1減少する。'], - [3, '『自然の叡智(ネイチャーズ・ウィズダム)』 アタックネイル、リアクトネイルのいずれか一方を指定する。全てのプレイヤーはこのラウンド終了時まで、選択されたネイルを使用することが出来ない。'], - [4, '『茨の道(ソーン・ロード)』 直後のムーヴネイルで移動を行ったユニットを対象とし、【アタック:2】を行う。'], - [5, '『小さな花園(リトル・リトル・フラワーガーデン)』 このアタックネイルの【アタック:X】を【アタック:X-1】に変更する。'], - [6, '『バジリスクの寄せ餌(バジリスク・ルア)』 このラウンドの終了時まで、全てのユニットはアタックネイルを使用する度に、使用したユニット自身に【アタック:1】を行う。'], - [7, '『生命の芽吹き(カム・イントゥ・バッズ)』 セットダイスを2個取り除く。自身のシールドレスを1枚回復する。'], - [8, '『絡めとり(まちなさい!)』 ユニット1体を対象とする。対象が「高度:1」以上の高度に存在する場合、対象の行う全てのダイスロールの出目を1減少する。'], - [9, '『繁栄の礎(プロスペリティ)』 直後の自身のドロゥフェイズで、ドロゥを行わないことを選ぶ代わりに、自身の緑のAsレベルを1上昇しても良い。'], - [10, '『なる(ように)なる(ケ・セラ・セラ)』 自身のオーナーズネイルの「使用済」を解除する。'], - [11, '『現代の災厄の象徴(すけいるどわーむ)』 ユニット1体を対象とする。対象はこのラウンドの終了時までアタックネイルを除くリヴラネイルを使用することが出来ない。また、対象が行うアタックネイルの【アタック:X】は、【アタック:X+2】に変更される。'], - [12, '『吠え猛る龍禍(ワン・ゼイ・フィア)』 全てのユニットは、そのユニット自身に対して【アタック:そのユニットが存在する高度】を行う。この攻撃によって1枚以上シールドレスが破壊されたユニットは、自身のセットダイスを2個取り除く。'], - [13, '『緩やかなる原初の監獄(エンクロージア)』 貴女を含む全てのプレイヤーは、そのプレイヤー自身のシールドレスを1枚回復することを選んでも良い。その後、貴女はこれによって回復したシールドレスの合計枚数に等しい数のシールドレスをさらに回復する。'], - [14, '『裏切りの大渦(ベトレイアル・メイルストロム)』 ユニット1体を対象とする。対象に【アタック:3】を行い、【アタック:2】を行う。その後対象は【ドロゥ:1】を行う。'], - [15, '『秩序の大渦(メイルストロム・オーダー)』 このラウンドの終了時まで、全てのユニットはアタックネイルを使用することが出来ない。'], - [16, '『憤怒の大渦(アンガー・メイルストロム)』 全てのプレイヤーのシールドレスを、現在最もシールドレスの枚数が少ないプレイヤーの枚数と同じ枚数に変更する。'], - [17, '『神秘の大渦(ミスティック・メイルストロム)』 使用されたオーナーズネイルの効果は発揮されず、「使用済」となる。'], - ] - end - when 'E' - case cardtype - when 'D' - table = [ - [1, '『黒の餓狼(ブラックソード・ウルフ)』 1.このユニットが使用するアタックネイルの対象を1増加しても良い。 2.このユニットの【アタック:X】で3以上の成功数が出た場合、自身のシールドレスを1枚回復する。'], - [2, '『白の鋼鉄騎士(ぼくめつのりゅう)』 このユニットが使用するアタックネイルの対象を1増加しても良い。'], - [3, '『赤の飛龍(クロムクラーク)』 1.このユニットが使用するアタックネイルの対象を1増加しても良い。 2.このユニットのアタックネイルの【アタック:X】のXを2増加する。'], - [4, '『青の翼龍(ヴァイエル)』 1.このユニットが使用するアタックネイルの対象を1増加しても良い。 2.このユニットが「高度:9」以上に存在する限り、ブロックナンバーに4を追加する。'], - [5, '『緑の操り人形(グリーン・ジェイラー)』 自身を含む、このユニットと同じセルに存在するユニットは、クリンナッププロセスの終了時にシールドレスを1枚失う。'], - ] - end - end - - return get_table_by_number(cardindex, table) - end -end diff --git a/src/src_bcdice/diceBot/LogHorizon.rb b/src/src_bcdice/diceBot/LogHorizon.rb deleted file mode 100644 index 603d894ae..000000000 --- a/src/src_bcdice/diceBot/LogHorizon.rb +++ /dev/null @@ -1,3552 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class LogHorizon < DiceBot - # ゲームシステムの識別子 - ID = 'LogHorizon' - - # ゲームシステム名 - NAME = 'ログ・ホライズンTRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'ろくほらいすんTRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <=z) - xD6の判定。クリティカル、ファンブルの自動判定を行います。 - x:xに振るダイス数を入力。 - ±y:yに修正値を入力。±の計算に対応。省略可能。 - >=z:zに目標値を入力。±の計算に対応。省略可能。 - 例) 3LH 2LH>=8 3LH+1>=10 -・消耗表(tCTx±y$z) - PCT 体力/ECT 気力/GCT 物品/CCT 金銭 - x:CRを指定。 - ±y:修正値。+と-の計算に対応。省略可能。 - $z:$を付けるとダイス目を z 固定。表の特定の値参照用に。省略可能。 - 例) PCT1 ECT2+1 GCT3-1 CCT3$5 -・財宝表(tTRSx±y$) - CTRS 金銭/MTRS 魔法素材/ITRS 換金アイテム/OTRS そのほか/※HTRS ヒロイン/GTRS ゴブリン財宝表 - x:CRを指定。省略時はダイス値 0 固定で修正値の表参照。《ゴールドフィンガー》使用時など。 - ±y:修正値。+と-の計算に対応。省略可能。 - $:$を付けると財宝表のダイス目を7固定(1回分のプライズ用)。省略可能。 - 例) CTRS1 MTRS2+1 ITRS3-1 ITRS+27 CTRS3$ -・パーソナリティタグ表(PTAG) -・交友表(KOYU) -・イースタル探索表(ESTLx±y$z) - x:CRを指定。省略時はダイス値 0 固定で修正値の表参照。 - ±y:修正値。+と-の計算に対応。省略可能。 - $z:$を付けるとダイス目を z 固定。特定CRの表参照用に。省略可能。 - 例) ESTL1 ESTL+15 ESTL2+1$5 ESTL2-1$5 -・プレフィックスドマジックアイテム効果表(MGRx) xはMGを指定。(LHZB1用) -†楽器種別表(MIIx) xは楽器の種類(1~6を指定)、省略可能 - 1 打楽器1/2 鍵盤楽器/3 弦楽器1/4 弦楽器2/5 管楽器1/6 管楽器2 -☆特殊消耗表(tSCTx±y$z) 消耗表と同様、ただしCRは省略可能。 - ESCT ロデ研は爆発だ!/CSCT アルヴの呪いじゃ! -※攻撃命中箇所ランダム決定表(HLOC) -※PC名ランダム決定表(PCNM) -※ロデ研の新発明ランダム決定表(IATt) - IATA 特徴A(メリット)/IATB 特徴B(デメリット)/IATL 見た目/IATT 種類 - tを省略すると全て表示。tにA/B/L/Tを任意の順で連結可能 - 例)IAT IATALT IATABBLT IATABL -※アキバの街で遭遇するトラブルランダム決定表(TIAS) -※廃棄児ランダム決定表(ABDC) -†印は☆印は「イントゥ・ザ・セルデシア さらなるビルドの羽ばたき(1)」より、 -☆印はセルデシア・ガゼット「できるかな66」Vol.1より、 -※印は「実録・七面体工房スタッフ座談会(夏の陣)」より。利用法などはそちら参照。 -・D66ダイスあり -MESSAGETEXT - - setPrefixes(['\d+LH.*', 'PC.*', 'EC.*', 'GC.*', 'CC.*', 'CTR.*', 'MTR.*', 'ITR.*', 'OTR.*', 'HTR.*', 'GTR.*', 'PTAG', 'KOYU', 'MGR.', 'HLOC', 'PCNM', 'IAT.*', 'TIAS', 'ABDC', 'MII.*', 'ESCT.*', 'CSCT.*', 'ESTL.*']) - - def initialize - super - @d66Type = 1 - end - - def rollDiceCommand(command) - # get~DiceCommandResultという名前のメソッドを集めて実行、 - # 結果がnil以外の場合それを返して終了。 - return analyzeDiceCommandResultMethod(command) - end - - def getCheckRollDiceCommandResult(command) - return nil unless /(\d+)LH([\+\-\d]*)(>=([\+\-\d]*))?/i === command - - diceCount = Regexp.last_match(1).to_i - modifyText = (Regexp.last_match(2) || '') - difficultyText = Regexp.last_match(4) - - # 修正値の計算 - modify = getValue(modifyText, 0) - - # 目標値の計算 - difficulty = getValue(difficultyText, nil) - - # ダイスロール - dice, dice_str = roll(diceCount, 6) - diceList = dice_str.split(/,/).collect { |i| i.to_i }.sort - - total = dice + modify - - # 出力用ダイスコマンドを生成 - command = "#{diceCount}LH#{modifyText}" - command += ">=#{difficulty}" unless difficulty.nil? - - # 出力文の生成 - result = "(#{command}) > #{dice}[#{dice_str}]#{modifyText} > #{total}" - - # クリティカル・ファンブルチェック - if isCritical(diceList) - result += " > クリティカル!" - elsif isFamble(diceList, diceCount) - result += " > ファンブル!" - else - result += getJudgeResultString(difficulty, total) - end - - return result - end - - # 成否判定 - def getJudgeResultString(difficulty, total) - return '' if difficulty.nil? - - if total >= difficulty - return " > 成功" - else - return " > 失敗" - end - end - - def getValue(text, defaultValue) - return defaultValue if text.nil? || text.empty? - - parren_killer("(0" + text + ")").to_i - end - - def isCritical(diceList) - (diceList.select { |i| i == 6 }.size >= 2) - end - - def isFamble(diceList, diceCount) - (diceList.select { |i| i == 1 }.size >= diceCount) - end - - # 消耗表 - def getConsumptionDiceCommandResult(command) - return nil unless /(P|E|G|C|ES|CS)CT(\d+)?([\+\-\d]*)(\$(\d+))?/ === command - - type = Regexp.last_match(1) - is_special = (Regexp.last_match(1) && Regexp.last_match(1).length > 1) - rank = Regexp.last_match(2) && Regexp.last_match(2) != '' ? Regexp.last_match(2).to_i : nil - return nil if !rank && !is_special - - rank ||= 0 - is_choice = !Regexp.last_match(4).nil? - dice_value = Regexp.last_match(5) - modifyText = Regexp.last_match(3) - modify = getValue(modifyText, 0) - - tableName = "" - tables = nil - - case type - when "P" - tableName, tables = getPhysicalConsumptionResultTables - when "E" - tableName, tables = getEnergyConsumptionResultTables - when "G" - tableName, tables = getGoodsConsumptionResultTables - when "C" - tableName, tables = getCashConsumptionResultTables - when "ES" - tableName, tables = getExplosionSpecialConsumptionResultTables - when "CS" - tableName, tables = getCurseSpecialConsumptionResultTables - else - return nil - end - - table = getTableByRank(rank, tables) - - number, dice_str = is_choice ? [dice_value.to_i, dice_value] : roll(1, 6) - number += modify - - adjustedNumber = getAdjustNumber(number, table) - - result = get_table_by_number(adjustedNumber, table) - - text = "#{tableName}(#{number}[#{dice_str}]):#{result}" - - return text - end - - def getPhysicalConsumptionResultTables() - tableName = "体力消耗表" - tables = [[ - [0, '消耗なし'], - [1, '[疲労:5]を受ける'], - [2, '[疲労:8]を受ける'], - [3, '[疲労:10]を受ける'], - [4, '[疲労:13]を受ける'], - [5, '[疲労:15]を受ける'], - [6, '[疲労:18]を受ける'], - [7, '[疲労:20]を受ける'], - ], - [ - [0, '消耗なし'], - [1, '[疲労:10]を受ける'], - [2, '[疲労:15]を受ける'], - [3, '[疲労:20]を受ける'], - [4, '[疲労:25]を受ける'], - [5, '[疲労:30]を受ける'], - [6, '[疲労:35]を受ける'], - [7, '[疲労:40]を受ける'], - ], - [ - [0, '消耗なし'], - [1, '[疲労:25]を受ける'], - [2, '[疲労:35]を受ける'], - [3, '[疲労:45]を受ける'], - [4, '[疲労:55]を受ける'], - [5, '[疲労:65]を受ける'], - [6, '[疲労:65]を受け、【因果力】を1点失う'], - [7, '[疲労:65]を受け、【因果力】を2点失う'], - ], - [ - [0, '消耗なし'], - [1, '[疲労:40]を受ける'], - [2, '[疲労:60]を受ける'], - [3, '[疲労:80]を受ける'], - [4, '[疲労:80]を受け、【因果力】を1点失う'], - [5, '[疲労:80]を受け、【因果力】を2点失う'], - [6, '[疲労:90]を受け、【因果力】を2点失う'], - [7, '[疲労:90]を受け、【因果力】を3点失う'], - ], - [ - [0, '消耗なし'], - [1, '[疲労:60]を受ける'], - [2, '[疲労:85]を受ける'], - [3, '[疲労:110]を受ける'], - [4, '[疲労:100]を受け、【因果力】を1点失う'], - [5, '[疲労:120]を受け、【因果力】を1点失う'], - [6, '[疲労:100]を受け、【因果力】を2点失う'], - [7, '[疲労:100]を受け、【因果力】を3点失う'], - ], - [ - [0, '消耗なし'], - [1, '[疲労:80]を受ける'], - [2, '[疲労:120]を受ける'], - [3, '[疲労:120]を受け、【因果力】を1点失う'], - [4, '[疲労:120]を受け、【因果力】を1点失う'], - [5, '[疲労:120]を受け、【因果力】を2点失う'], - [6, '[疲労:120]を受け、【因果力】を2点失う'], - [7, '[疲労:120]を受け、【因果力】を3点失う'], - ],] - - return tableName, tables - end - - def getEnergyConsumptionResultTables() - tableName = "気力消耗表" - tables = [[ - [0, '消耗なし'], - [1, '【因果力】を1点失う'], - [2, '【因果力】を1点失う'], - [3, '【因果力】を1点失う'], - [4, '【因果力】を1点失う'], - [5, '【因果力】を2点失う'], - [6, '【因果力】を2点失う'], - [7, '【因果力】を2点失う'], - ], - [ - [0, '消耗なし'], - [1, '【因果力】を1点失う'], - [2, '【因果力】を1点失う'], - [3, '【因果力】を1点失う'], - [4, '【因果力】を2点失う'], - [5, '【因果力】を2点失う'], - [6, '【因果力】を2点失う'], - [7, '【因果力】を3点失う'], - ], - [ - [0, '消耗なし'], - [1, '【因果力】を1点失う'], - [2, '【因果力】を1点失う'], - [3, '【因果力】を2点失う'], - [4, '【因果力】を2点失う'], - [5, '【因果力】を2点失う'], - [6, '【因果力】を3点失う'], - [7, '【因果力】を4点失う'], - ], - [ - [0, '消耗なし'], - [1, '【因果力】を1点失う'], - [2, '【因果力】を2点失う'], - [3, '【因果力】を2点失う'], - [4, '【因果力】を2点失う'], - [5, '【因果力】を3点失う'], - [6, '【因果力】を1点失い、特技喪失する'], - [7, '【因果力】を2点失い、特技喪失する'], - ], - [ - [0, '消耗なし'], - [1, '【因果力】を1点失う'], - [2, '【因果力】を2点失う'], - [3, '【因果力】を2点失う'], - [4, '【因果力】を3点失う'], - [5, '【因果力】を1点失い、特技喪失する'], - [6, '【因果力】を2点失い、特技喪失する'], - [7, '【因果力】を3点失い、特技喪失する'], - ], - [ - [0, '消耗なし'], - [1, '【因果力】を1点失う'], - [2, '【因果力】を2点失う'], - [3, '【因果力】を3点失う'], - [4, '【因果力】を1点失い、特技喪失する'], - [5, '【因果力】を4点失う'], - [6, '【因果力】を2点失い、特技喪失する'], - [7, '【因果力】を3点失い、特技喪失する'], - ],] - - return tableName, tables - end - - def getGoodsConsumptionResultTables() - tableName = "物品消耗表" - tables = [[ - [0, '消耗なし'], - [1, '[消耗品]アイテムを1個失う'], - [2, '[消耗品]アイテムを1個失う'], - [3, '[消耗品]アイテムを1個失う'], - [4, '[消耗品]アイテムを2個失う'], - [5, '[消耗品]アイテムを2個失う'], - [6, '[消耗品]アイテムを2個失う'], - [7, '[消耗品]アイテムを2個失う'], - ], - [ - [0, '消耗なし'], - [1, '[消耗品]アイテムを1個失う'], - [2, '[消耗品]アイテムを1個失う'], - [3, '[消耗品]アイテムを2個失う'], - [4, '[消耗品]アイテムを2個失う'], - [5, '[消耗品]アイテムを3個失う'], - [6, '[消耗品]アイテムを3個失う'], - [7, '[消耗品]アイテムを4個失う'], - ], - [ - [0, '消耗なし'], - [1, '[消耗品]アイテムを1個失う'], - [2, '[消耗品]アイテムを2個失う'], - [3, '[消耗品]アイテムを2個失う'], - [4, '[消耗品]アイテムを3個失う'], - [5, '[消耗品]アイテムを3個失う'], - [6, '[消耗品]アイテムを3個失い、[圧迫:1]を受ける'], - [7, '[消耗品]アイテムを3個失い、[圧迫:2]を受ける'], - ], - [ - [0, '消耗なし'], - [1, '[消耗品]アイテムを2個失う'], - [2, '[消耗品]アイテムを2個失う'], - [3, '[消耗品]アイテムを2個失い、[圧迫:1]を受ける'], - [4, '[消耗品]アイテムを3個失う'], - [5, '[消耗品]アイテムを3個失い、[圧迫:1]を受ける'], - [6, '[消耗品]アイテムを4個失う'], - [7, '[消耗品]アイテムを4個失い、[圧迫:1]を受ける'], - ], - [ - [0, '消耗なし'], - [1, '[消耗品]アイテムを2個失う'], - [2, '[消耗品]アイテムを2個失い、[圧迫:1]を受ける'], - [3, '[消耗品]アイテムを3個失う'], - [4, '[消耗品]アイテムを3個失い、[圧迫:1]を受ける'], - [5, '[消耗品]アイテムを4個失う'], - [6, '[消耗品]アイテムを4個失い、[圧迫:1]を受ける'], - [7, '[消耗品]アイテムを4個失い、[圧迫:2]を受ける'], - ], - [ - [0, '消耗なし'], - [1, '[消耗品]アイテムを3個失う'], - [2, '[消耗品]アイテムを3個失う'], - [3, '[消耗品]アイテムを3個失い、[圧迫:1]を受ける'], - [4, '[消耗品]アイテムを4個失う'], - [5, '[消耗品]アイテムを4個失い、[圧迫:1]を受ける'], - [6, '[消耗品]アイテムを4個失い、[圧迫:2]を受ける'], - [7, '[消耗品]アイテムを4個失い、[圧迫:3]を受ける'], - ],] - - return tableName, tables - end - - def getCashConsumptionResultTables() - tableName = "金銭消耗表" - tables = [[ - [0, '消耗なし'], - [1, '所持金を10G失う'], - [2, '所持金を15G失う'], - [3, '所持金を20G失う'], - [4, '所持金を25G失う'], - [5, '所持金を30G失う'], - [6, '所持金を35G失う'], - [7, '所持金を40G失う'], - ], - [ - [0, '消耗なし'], - [1, '所持金を25G失う'], - [2, '所持金を35G失う'], - [3, '所持金を50G失う'], - [4, '所持金を60G失う'], - [5, '所持金を75G失う'], - [6, '所持金を90G失う'], - [7, '所持金を100G失う'], - ], - [ - [0, '消耗なし'], - [1, '所持金を50G失う'], - [2, '所持金を80G失う'], - [3, '所持金を110G失う'], - [4, '所持金を140G失う'], - [5, '所持金を160G失う'], - [6, '所持金を190G失う'], - [7, '所持金を220G失う'], - ], - [ - [0, '消耗なし'], - [1, '所持金を100G失う'], - [2, '所持金を150G失う'], - [3, '所持金を200G失う'], - [4, '所持金を250G失う'], - [5, '所持金を300G失う'], - [6, '所持金を350G失う'], - [7, '所持金を400G失う'], - ], - [ - [0, '消耗なし'], - [1, '所持金を160G失う'], - [2, '所持金を240G失う'], - [3, '所持金を320G失う'], - [4, '所持金を400G失う'], - [5, '所持金を480G失う'], - [6, '所持金を560G失う'], - [7, '所持金を640G失う'], - ], - [ - [0, '消耗なし'], - [1, '所持金を210G失う'], - [2, '所持金を320G失う'], - [3, '所持金を430G失う'], - [4, '所持金を540G失う'], - [5, '所持金を650G失う'], - [6, '所持金を760G失う'], - [7, '所持金を870G失う'], - ],] - - return tableName, tables - end - - def getExplosionSpecialConsumptionResultTables - tableName = "特殊消耗表:ロデ研は爆発だ!" - tables = [[ - [0, '……しかし特に何も起こらない!:効果なし。'], - [1, 'キミの頭髪が爆発した! 見事なアフロヘアーだ:シナリオ終了まで[頭部]タグのついた装備不可。'], - [2, '芸術は爆発である:所持しているアイテムがランダムに1つ、芸術品になり[換金]アイテム化する'], - [3, '反応起爆装甲:防具スロットに装備しているアイテムがチョバムアーマーになる。次にあなたが【HP】ダメージを受けた時、そのダメージを無効化し、そのアイテムを失う。'], - [4, '山羊スライムが爆発的に増殖する:[所持品]スロットを全て山羊スライム([取引不可]、価格50)で埋める。'], - [5, 'キミのリアルが爆発する:コネクションを1つ、シナリオ終了時まで失う。'], - [6, '工場が爆発する:[消耗品]タグを持つアイテムを購入することができなくなる。'], - [7, 'ボスエネミーが爆発する:シナリオはクライマックスを迎えることなく終了する。お疲れ様でした。'], - ]] - return tableName, tables - end - - def getCurseSpecialConsumptionResultTables - tableName = "特殊消耗表:アルヴの呪いじゃ!" - tables = [[ - [0, '「祝ってやる!」祝われる:あなたの【因果力】+1。'], - [1, '空腹の呪い:すぐさま食料アイテムひとつを食べる。空腹のせいでとてもおいしい!'], - [2, '無職の呪い:サブ職が強制的に〈ニート〉に変更させられる。'], - [3, '種族変更の呪い:ランダムでダイスを振って別の種族に変わる。種族特技が使用不能になる。'], - [4, 'バリアフリーの呪い:[軽減][障壁]状態になることができなくなる。'], - [5, '集中力を乱す囁きの呪い:フォームが崩れて[構え]タグを持つ特技が使用不能になる。'], - [6, '盲目の呪い:あなたの所持するコネクションのうちランダムに一つの関係が「熱愛」にかわる。'], - [7, 'やる気が萎える呪い:あーもーまじやる気しねえ、何もやる気しねえ。【因果力】使用不可。'], - ]] - return tableName, tables - end - - def getTableByRank(rank, tables) - # index = (rank - 1) / 5 - index = ((rank - 1) / 5).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - - index = [0, index].max - index = [index, (tables.size - 1)].min - - return tables[index] - end - - def getAdjustNumber(number, table) - number = getAdjustNumberMin(number, table) - number = getAdjustNumberMax(number, table) - return number - end - - # 最少値の調整(値が小さすぎるなら表の最小値に) - def getAdjustNumberMin(number, table) - value = getTableMinimum(table) - return [number, value].max - end - - def getTableMinimum(table) - table.first.first - end - - # 最大値の調整(値が大きすぎるなら表の最大値に) - def getAdjustNumberMax(number, table) - value = table.last.first - return [number, value].min - end - - # 財宝表 - def getTresureDiceCommandResult(command) - return nil unless (m = /(C|M|I|O|H|G)TRS(\d*)([\+\-\d]*)(\$)?/.match(command)) - - type = m[1] - rank = m[2].to_i - is_choice = (m[2].empty? || !m[4].nil?) - modifyText = m[3] - modify = getValue(modifyText, 0) - is_prize = (m[4] == "$") - dice_value = nil - dice_value = '7' if is_prize - is_rank_enable = (!is_choice || is_prize) - - tableName, table = - case type - when "C" - getCashTresureResultTable - when "M" - getMagicTresureResultTable - when "I" - getItemTresureResultTable - when "O" - getOtherTresureResultTable - when "H" - getHeroineTresureResultTable - when "G" - getGoblinTresureResultTable - end - - return nil if table.nil? - - number, dice_str, = - if is_choice - [dice_value.to_i, dice_value] - else - roll(2, 6) - end - - number += (rank * (is_rank_enable ? 5 : 0)) + modify - - return command if is_choice && (number < getTableMinimum(table)) - - if type == "H" - number = [getAdjustNumberMin(number, table), 87].min - result = getHiroineTresureResultString(table, number) - elsif type == "G" - number = [getAdjustNumberMin(number, table), 87].min - result = getOtherTresureResultString(table, number) - else - number = [getAdjustNumberMin(number, table), 187].min - result = getOtherTresureResultStringEx(table, number) - end - - return "#{tableName}(#{number}#{dice_str ? '[' + dice_str + ']' : ''}):#{result}" - end - - def getHiroineTresureResultString(table, number) - table_max_number = table.map { |e| e.first }.max - - result = - if number <= table_max_number - get_table_by_number(number, table) - else - "※ #{table_max_number + 1}以降は未定義です ※" - end - - return result - end - - def getOtherTresureResultString(table, number) - result = - case number - when 63..72 - get_table_by_number(number - 10, table) + '&80G' - when 73..82 - get_table_by_number(number - 20, table) + '&160G' - when 83..87 - get_table_by_number(number - 30, table) + '&260G' - else - get_table_by_number(number, table) - end - - return result - end - - def getOtherTresureResultStringEx(table, number) - result = - case number - when 163..172 - get_table_by_number(number - 10, table) + '&200G' - when 173..182 - get_table_by_number(number - 20, table) + '&400G' - when 183..187 - get_table_by_number(number - 30, table) + '&600G' - else - get_table_by_number(number, table) - end - - return result - end - - def getCashTresureResultTable - tableName = "金銭財宝表" - table = [ - [ 7, '35G'], - [ 8, '40G'], - [ 9, '40G'], - [ 10, '40G'], - [ 11, '45G'], - [ 12, '45G'], - [ 13, '45G'], - [ 14, '50G'], - [ 15, '50G'], - [ 16, '50G'], - [ 17, '55G'], - [ 18, '55G'], - [ 19, '60G'], - [ 20, '60G'], - [ 21, '65G'], - [ 22, '70G'], - [ 23, '70G'], - [ 24, '75G'], - [ 25, '75G'], - [ 26, '80G'], - [ 27, '85G'], - [ 28, '85G'], - [ 29, '90G'], - [ 30, '95G'], - [ 31, '100G'], - [ 32, '100G'], - [ 33, '105G'], - [ 34, '110G'], - [ 35, '115G'], - [ 36, '120G'], - [ 37, '125G'], - [ 38, '130G'], - [ 39, '135G'], - [ 40, '140G'], - [ 41, '145G'], - [ 42, '150G'], - [ 43, '155G'], - [ 44, '160G'], - [ 45, '165G'], - [ 46, '170G'], - [ 47, '175G'], - [ 48, '180G'], - [ 49, '185G'], - [ 50, '195G'], - [ 51, '200G'], - [ 52, '205G'], - [ 53, '210G'], - [ 54, '220G'], - [ 55, '225G'], - [ 56, '230G'], - [ 57, '240G'], - [ 58, '245G'], - [ 59, '255G'], - [ 60, '260G'], - [ 61, '265G'], - [ 62, '275G'], - [ 63, '280G'], - [ 64, '290G'], - [ 65, '300G'], - [ 66, '300G'], - [ 67, '310G'], - [ 68, '320G'], - [ 69, '330G'], - [ 70, '340G'], - [ 71, '340G'], - [ 72, '350G'], - [ 73, '360G'], - [ 74, '370G'], - [ 75, '380G'], - [ 76, '390G'], - [ 77, '400G'], - [ 78, '410G'], - [ 79, '420G'], - [ 80, '430G'], - [ 81, '440G'], - [ 82, '450G'], - [ 83, '460G'], - [ 84, '460G'], - [ 85, '480G'], - [ 86, '490G'], - [ 87, '500G'], - [ 88, '510G'], - [ 89, '520G'], - [ 90, '530G'], - [ 91, '540G'], - [ 92, '550G'], - [ 93, '560G'], - [ 94, '570G'], - [ 95, '580G'], - [ 96, '590G'], - [ 97, '610G'], - [ 98, '620G'], - [ 99, '630G'], - [100, '640G'], - [101, '650G'], - [102, '660G'], - [103, '680G'], - [104, '690G'], - [105, '700G'], - [106, '710G'], - [107, '730G'], - [108, '740G'], - [109, '750G'], - [110, '760G'], - [111, '780G'], - [112, '790G'], - [113, '800G'], - [114, '820G'], - [115, '830G'], - [116, '840G'], - [117, '860G'], - [118, '870G'], - [119, '890G'], - [120, '900G'], - [121, '910G'], - [122, '930G'], - [123, '940G'], - [124, '960G'], - [125, '970G'], - [126, '990G'], - [127, '1000G'], - [128, '1020G'], - [129, '1030G'], - [130, '1050G'], - [131, '1060G'], - [132, '1080G'], - [133, '1090G'], - [134, '1110G'], - [135, '1130G'], - [136, '1140G'], - [137, '1160G'], - [138, '1170G'], - [139, '1190G'], - [140, '1210G'], - [141, '1220G'], - [142, '1240G'], - [143, '1260G'], - [144, '1270G'], - [145, '1290G'], - [146, '1310G'], - [147, '1330G'], - [148, '1340G'], - [149, '1360G'], - [150, '1380G'], - [151, '1400G'], - [152, '1410G'], - [153, '1430G'], - [154, '1450G'], - [155, '1470G'], - [156, '1490G'], - [157, '1500G'], - [158, '1520G'], - [159, '1540G'], - [160, '1560G'], - [161, '1580G'], - [162, '1600G'], - ] - - return tableName, table - end - - def getMagicTresureResultTable - tableName = "魔法素材財宝表" - table = [ - [ 7, '魔触媒2[魔触媒2](20G)&魔触媒1[魔触媒1](15G)'], - [ 8, '新緑の若芽[コア素材](30G)'], - [ 9, '魔触媒2[魔触媒2](20G)&魔触媒1[魔触媒1](15G)'], - [ 10, '怪しい丸薬[コア素材](30G)'], - [ 11, '魔触媒2[魔触媒2](20G)&魔触媒1[魔触媒1](15G)'], - [ 12, '滑らかな被膜[コア素材](30G)'], - [ 13, '魔触媒2[魔触媒2](20G)&魔触媒1[魔触媒1](15G)'], - [ 14, '呪法シリンダー[コア素材](30G)'], - [ 15, '魔触媒3[魔触媒3](25G)&魔触媒2[魔触媒2](20G)'], - [ 16, '反魔水銀[コア素材](40G)'], - [ 17, '魔触媒3[魔触媒3](25G)&魔触媒2[魔触媒2](20G)'], - [ 18, '鋭い牙[コア素材](40G)'], - [ 19, '魔触媒3[魔触媒3](25G)&魔触媒2[魔触媒2](20G)'], - [ 20, '自戒の茨[コア素材](50G)'], - [ 21, '魔触媒4[魔触媒4](30G)&魔触媒3[魔触媒3](25G)'], - [ 22, '流星のかけら[コア素材](50G)'], - [ 23, '魔触媒4[魔触媒4](30G)&魔触媒3[魔触媒3](25G)'], - [ 24, '聖なる繊維[コア素材](50G)'], - [ 25, '魔触媒5[魔触媒5](40G)&魔触媒4[魔触媒4](30G)'], - [ 26, '巨人の髭[コア素材](60G)'], - [ 27, '魔触媒5[魔触媒5](40G)&魔触媒4[魔触媒4](30G)'], - [ 28, '精密な歯車[コア素材](60G)'], - [ 29, '魔触媒5[魔触媒5](40G)&魔触媒4[魔触媒4](30G)'], - [ 30, '謎めいた毛皮[コア素材](80G)'], - [ 31, '魔触媒6[魔触媒6](50G)&魔触媒5[魔触媒5](40G)'], - [ 32, '雄々しい角[コア素材](80G)'], - [ 33, '魔触媒6[魔触媒6](50G)&魔触媒5[魔触媒5](40G)'], - [ 34, 'つややかな繭[コア素材](80G)'], - [ 35, '魔触媒7[魔触媒7](60G)&魔触媒6[魔触媒6](50G)'], - [ 36, '小型錬成陣[コア素材](100G)'], - [ 37, '魔触媒7[魔触媒7](60G)&魔触媒6[魔触媒6](50G)'], - [ 38, '銀の円環[コア素材](100G)'], - [ 39, '魔触媒7[魔触媒7](60G)&魔触媒6[魔触媒6](50G)'], - [ 40, '仙桃果[コア素材](120G)'], - [ 41, '魔触媒8[魔触媒8](70G)&魔触媒7[魔触媒7](60G)'], - [ 42, '動力ケーブル[コア素材](120G)'], - [ 43, '魔触媒8[魔触媒8](70G)&魔触媒7[魔触媒7](60G)'], - [ 44, '流星歯車[コア素材](120G)'], - [ 45, '魔触媒9[魔触媒9](90G)&魔触媒8[魔触媒8](70G)'], - [ 46, '茨のトゲ[コア素材](140G)'], - [ 47, '魔触媒9[魔触媒9](90G)&魔触媒8[魔触媒8](70G)'], - [ 48, '砕けた剛剣[コア素材](140G)'], - [ 49, '魔触媒9[魔触媒9](90G)&魔触媒8[魔触媒8](70G)'], - [ 50, '絶えない火種[コア素材](180G)'], - [ 51, '魔触媒10[魔触媒10](110G)&魔触媒9[魔触媒9](90G)'], - [ 52, '魔導錠[コア素材](180G)'], - [ 53, '魔触媒10[魔触媒10](110G)&魔触媒9[魔触媒9](90G)'], - [ 54, '青ざめた盾鱗[コア素材](180G)'], - [ 55, '魔触媒10[魔触媒10](110G)x2'], - [ 56, '破軍の戦帯[コア素材](220G)'], - [ 57, '魔触媒11[魔触媒11](120G)&魔触媒10[魔触媒10](110G)'], - [ 58, '派手な羽根飾り[コア素材](220G)'], - [ 59, '魔触媒11[魔触媒11](120G)&魔触媒10[魔触媒10](110G)'], - [ 60, '神隠しの古枝[コア素材](240G)'], - [ 61, '魔触媒11[魔触媒11](120G)x2'], - [ 62, '呪紋水晶[コア素材](240G)'], - [ 63, '魔触媒12[魔触媒12](150G)&魔触媒11[魔触媒11](120G)'], - [ 64, '謎めいたフラスコ[コア素材](240G)'], - [ 65, '魔触媒12[魔触媒12](150G)&魔触媒11[魔触媒11](120G)'], - [ 66, '未熟な竜玉[コア素材](300G)'], - [ 67, '魔触媒12[魔触媒12](150G)x2'], - [ 68, '陰陽の水銀[コア素材](300G)'], - [ 69, '魔触媒13[魔触媒13](170G)&魔触媒12[魔触媒12](150G)'], - [ 70, '金剛骨[コア素材](340G)'], - [ 71, '魔触媒13[魔触媒13](170G)x2'], - [ 72, 'アルヴの研磨剤[コア素材](340G)'], - [ 73, '魔触媒14[魔触媒14](190G)&魔触媒13[魔触媒13](170G)'], - [ 74, '不死王の心臓[コア素材](340G)'], - [ 75, '魔触媒14[魔触媒14](190G)x2'], - [ 76, '緑小鬼の大軍旗[コア素材](380G)'], - [ 77, '魔触媒14[魔触媒14](190G)x2'], - [ 78, '深層アダマン鉱石[コア素材](380G)'], - [ 79, '魔触媒15[魔触媒15](220G)&魔触媒14[魔触媒14](190G)'], - [ 80, '漆黒の眼球[コア素材](440G)'], - [ 81, '魔触媒15[魔触媒15](220G)&魔触媒14[魔触媒14](190G)'], - [ 82, '雪桃の実[コア素材](440G)'], - [ 83, '魔触媒15[魔触媒15](220G)x2'], - [ 84, '四つ葉のアンク[コア素材](440G)'], - [ 85, '魔触媒16[魔触媒16](250G)&魔触媒15[魔触媒15](220G)'], - [ 86, '金色のたてがみ[コア素材](500G)'], - [ 87, '魔触媒16[魔触媒16](250G)&魔触媒15[魔触媒15](220G)'], - [ 88, '銀の車輪[コア素材](500G)'], - [ 89, '魔触媒16[魔触媒16](250G)x2'], - [ 90, '封緑樹の堅枝[コア素材](560G)'], - [ 91, '魔触媒17[魔触媒17](280G)&魔触媒16[魔触媒16](250G)'], - [ 92, '千年王樹の種子[コア素材](560G)'], - [ 93, '魔触媒17[魔触媒17](280G)x2'], - [ 94, '巨鳥の鎖骨[コア素材](560G)'], - [ 95, '魔触媒17[魔触媒17](280G)x2'], - [ 96, '水棲緑鬼の王卵[コア素材](620G)'], - [ 97, '魔触媒18[魔触媒18](310G)&魔触媒17[魔触媒17](280G)'], - [ 98, '太陽の飾り鋲[コア素材](620G)'], - [ 99, '魔触媒18[魔触媒18](310G)x2'], - [100, '火精霊の心核[コア素材](680G)'], - [101, '魔触媒19[魔触媒19](340G)&魔触媒18[魔触媒18](310G)'], - [102, '獄炎狼の房毛[コア素材](680G)'], - [103, '魔触媒19[魔触媒19](340G)x2'], - [104, '島クジラの巨骨[コア素材](680G)'], - [105, '魔触媒19[魔触媒19](340G)x2'], - [106, '原初の炎[コア素材](740G)'], - [107, '魔触媒20[魔触媒20](370G)&魔触媒19[魔触媒19](340G)'], - [108, '魔石草の種[コア素材](740G)'], - [109, '魔触媒20[魔触媒20](370G)x2'], - [110, '稠密立方魔晶[コア素材](820G)'], - [111, '魔触媒21[魔触媒21](410G)&魔触媒20[魔触媒20](370G)'], - [112, '清掃用女中人形九号[コア素材](820G)'], - [113, '魔触媒21[魔触媒21](410G)&魔触媒20[魔触媒20](370G)'], - [114, '飛びイルカの心臓[コア素材](820G)'], - [115, '魔触媒21[魔触媒21](410G)x2'], - [116, '奈落皇蛇の額鱗[コア素材](900G)'], - [117, '魔触媒22[魔触媒22](450G)&魔触媒21[魔触媒21](410G)'], - [118, 'ブリザードダイヤ[コア素材](900G)'], - [119, '魔触媒22[魔触媒22](450G)&魔触媒21[魔触媒21](410G)'], - [120, '火炎向日葵の花びら[コア素材](980G)'], - [121, '魔触媒22[魔触媒22](450G)x2'], - [122, '紅蓮蝙蝠の鮮血[コア素材](980G)'], - [123, '魔触媒23[魔触媒23](490G)&魔触媒22[魔触媒22](450G)'], - [124, '落日祈祷書[コア素材](980G)'], - [125, '魔触媒24[魔触媒24](530G)&黒檀の馬具[換金](440G)'], - [126, '辰砂の組紐[コア素材](1060G)'], - [127, '魔触媒23[魔触媒23](490G)x2'], - [128, '黴臭い皮の剣帯[コア素材](1060G)'], - [129, '魔触媒24[魔触媒24](530G)&魔触媒23[魔触媒23](490G)'], - [130, '玻璃蜥蜴の抜け殻[コア素材](1160G)'], - [131, '魔触媒24[魔触媒24](530G)x2'], - [132, '火炎巨人の尺骨[コア素材](1160G)'], - [133, '魔触媒24[魔触媒24](530G)x2'], - [134, '高熱練炭[コア素材](1160G)'], - [135, '魔触媒26[魔触媒26](620G)&青銅の装置[換金](510G)'], - [136, 'すり切れた羽衣[コア素材](1240G)'], - [137, '魔触媒25[魔触媒25](580G)x2'], - [138, '亡霊のため息[コア素材](1240G)'], - [139, '魔触媒25[魔触媒25](580G)x2'], - [140, '宵闇色のヒゲ[コア素材](1340G)'], - [141, '魔触媒27[魔触媒27](670G)&月長石の腕輪[換金](550G)'], - [142, 'コアトルの毒腺[コア素材](1340G)'], - [143, '魔触媒26[魔触媒26](620G)x2'], - [144, '玄亀の甲羅[コア素材](1340G)'], - [145, '魔触媒28[魔触媒28](720G)&宝玉のネックレス[換金](570G)'], - [146, '山大鹿の角[コア素材](1440G)'], - [147, '魔触媒28[魔触媒28](720G)&消えない燭台[換金](600G)'], - [148, '煉獄クモの燃糸[コア素材](1540G)'], - [149, '魔触媒27[魔触媒27](670G)x2'], - [150, '碧氷晶の単眼球[コア素材](1540G)'], - [151, '魔触媒29[魔触媒29](770G)&琥珀のイヤリング[換金](630G)'], - [152, '衝撃竜の牙[コア素材](1540G)'], - [153, '魔触媒29[魔触媒29](770G)&茨を模したティアラ[換金](650G)'], - [154, '鉄鼠の自在尾[コア素材](1540G)'], - [155, '魔触媒30[魔触媒30](820G)&石榴石の腕輪[換金](650G)'], - [156, '人工生命の素[コア素材](1640G)'], - [157, '魔触媒30[魔触媒30](820G)&輝くメガネ[換金](680G)'], - [158, '翡翠甲虫の刃翅[コア素材](1640G)'], - [159, '魔触媒29[魔触媒29](770G)x2'], - [160, '無限渦流の煤[コア素材](1640G)'], - [161, '魔触媒30[魔触媒30](820G)&スライム入り試験管[換金](750G)'], - [162, '陽喰い鳥の嘴[コア素材](1640G)'], - ] - - return tableName, table - end - - def getItemTresureResultTable - tableName = "換金アイテム財宝表" - table = [ - [ 7, '破れた書籍[換金](30G)'], - [ 8, '古ぼけたぬいぐるみ[換金](40G)'], - [ 9, 'あやしい書籍[換金](40G)'], - [ 10, '分厚い書籍[換金](40G)'], - [ 11, '子供向けの書籍[換金](40G)'], - [ 12, '犬のぬいぐるみ[換金](40G)'], - [ 13, '使い込まれたティーセット[換金](40G)'], - [ 14, 'クマのぬいぐるみ[換金](50G)'], - [ 15, '白磁のティーセット[換金](50G)'], - [ 16, '藍色の染料[換金](50G)'], - [ 17, '毛糸の帽子[換金](50G)'], - [ 18, '恐竜のぬいぐるみ[換金](50G)'], - [ 19, '豪華な日記[換金](60G)'], - [ 20, '乳白色の角[換金](60G)'], - [ 21, '羽根付き帽子[換金](60G)'], - [ 22, '魔法の書籍[換金](70G)'], - [ 23, '木製の食器[換金](70G)'], - [ 24, '猛獣の毛皮[換金](70G)'], - [ 25, '魔法使いの帽子[換金](70G)'], - [ 26, '貴族の絵本[換金](80G)'], - [ 27, '陶製の食器[換金](80G)'], - [ 28, '磨かれたティーセット[換金](80G)'], - [ 29, 'しなやかな毛皮[換金](90G)'], - [ 30, '巨大な角[換金](90G)'], - [ 31, '貴重な書籍[換金](100G)'], - [ 32, '銀の食器[換金](100G)'], - [ 33, '魔獣の毛皮[換金](100G)'], - [ 34, '司祭の帽子[換金](110G)'], - [ 35, '野獣の牙[換金](110G)'], - [ 36, '巨人のスプーン[換金](120G)'], - [ 37, '枝分かれした角[換金](120G)'], - [ 38, '猫耳帽子[換金](130G)'], - [ 39, '木綿のドレス[換金](130G)'], - [ 40, '水晶の角[換金](140G)'], - [ 41, '琥珀の円盤[換金](140G)'], - [ 42, '幻獣の牙[換金](150G)'], - [ 43, '古代のドレス[換金](150G)'], - [ 44, '王朝風のティーセット[換金](160G)'], - [ 45, '傷ひとつない毛皮[換金](160G)'], - [ 46, '絹のドレス[換金](170G)'], - [ 47, '魔法のぬいぐるみ[換金](170G)'], - [ 48, '神獣の毛皮[換金](180G)'], - [ 49, '水晶の食器[換金](180G)'], - [ 50, '石の呪具[換金](190G)'], - [ 51, '禍々しい仮面[換金](200G)'], - [ 52, 'ねず耳カチューシャ[換金](200G)'], - [ 53, '竜の牙[換金](210G)'], - [ 54, 'スライム?の剥製[換金](220G)'], - [ 55, '銀のネジ[換金](220G)'], - [ 56, '大猫の剥製[換金](230G)'], - [ 57, '舞踏会の仮面[換金](240G)'], - [ 58, '重厚な牙[換金](240G)'], - [ 59, '宝石細工の仮面[換金](250G)'], - [ 60, 'サテンのドレス[換金](260G)'], - [ 61, '光る角[換金](260G)'], - [ 62, '魔法のドレス[換金](270G)'], - [ 63, '道化師の仮面[換金](280G)'], - [ 64, 'アルヴのティーセット[換金](290G)'], - [ 65, '燃えない毛皮[換金](300G)'], - [ 66, '雪狼の剥製[換金](300G)'], - [ 67, '籐製の椅子[換金](310G)'], - [ 68, '赤い石板[換金](320G)'], - [ 69, '黒獅子の剥製[換金](330G)'], - [ 70, '三角の椅子[換金](340G)'], - [ 71, '子供用紳士服[換金](340G)'], - [ 72, 'アルヴの食器[換金](350G)'], - [ 73, 'ほつれた紳士服[換金](360G)'], - [ 74, '上等な紳士服[換金](370G)'], - [ 75, '寄木細工の文箱[換金](380G)'], - [ 76, '白磁の燭台[換金](390G)'], - [ 77, '黄金の牙[換金](400G)'], - [ 78, '白木の文箱[換金](410G)'], - [ 79, '青銅の燭台[換金](420G)'], - [ 80, '輝く燭台[換金](430G)'], - [ 81, '王様の椅子[換金](440G)'], - [ 82, '古風な紳士服[換金](450G)'], - [ 83, '思い出のドレス[換金](460G)'], - [ 84, '古代の種[換金](460G)'], - [ 85, '小さな宝石箱[換金](480G)'], - [ 86, 'ひびわれた姿見[換金](490G)'], - [ 87, '楓の書棚[換金](500G)'], - [ 88, '神秘的な仮面[換金](510G)'], - [ 89, 'トネリコの書見台[換金](520G)'], - [ 90, 'ビロードの紳士服[換金](530G)'], - [ 91, '磨きこまれた姿見[換金](540G)'], - [ 92, '大きな宝石箱[換金](550G)'], - [ 93, '白檀の文箱[換金](560G)'], - [ 94, '白樺の姿見[換金](570G)'], - [ 95, '焼き物の像[換金](580G)'], - [ 96, '彫刻付き姿見[換金](590G)'], - [ 97, '粘土の像[換金](610G)'], - [ 98, '銀の燭台[換金](620G)'], - [ 99, '鳳凰の剥製[換金](630G)'], - [100, '呪われた像[換金](640G)'], - [101, '魔王の椅子[換金](650G)'], - [102, '神域の椅子[換金](660G)'], - [103, '満杯の宝石箱[換金](680G)'], - [104, '大理石の貨幣[換金](690G)'], - [105, '絵の具のセット[換金](700G)'], - [106, '染料のセット[換金](710G)'], - [107, '木製の貨幣[換金](730G)'], - [108, '貝殻の貨幣[換金](740G)'], - [109, '覆い付き書見台[換金](750G)'], - [110, '手作りのゲーム盤[換金](760G)'], - [111, '祭祀用の像[換金](780G)'], - [112, '真鍮製のゲーム盤[換金](790G)'], - [113, '螺鈿の文箱[換金](800G)'], - [114, '青銅の書見台[換金](820G)'], - [115, '香木の小像[換金](830G)'], - [116, '魔法使いの像[換金](840G)'], - [117, '鍵のかかった宝石箱[換金](860G)'], - [118, 'いかさまゲーム盤[換金](870G)'], - [119, '魔法の紳士服[換金](890G)'], - [120, '化粧品のセット[換金](900G)'], - [121, '古代の姫の小像[換金](910G)'], - [122, '翡翠の小像[換金](930G)'], - [123, '真鍮の鉱石[換金](940G)'], - [124, '真鉄の塊[換金](960G)'], - [125, '銀の塊[換金](970G)'], - [126, '古代の貨幣[換金](990G)'], - [127, '瑪瑙の文箱[換金](1000G)'], - [128, '銀細工の書見台[換金](1020G)'], - [129, '粗末な馬具[換金](1030G)'], - [130, 'あふれた宝石箱[換金](1050G)'], - [131, '異文明の貨幣[換金](1060G)'], - [132, '透明な文箱[換金](1080G)'], - [133, '香水のセット[換金](1090G)'], - [134, '鳥が象られたティアラ[換金](1110G)'], - [135, '金細工の燭台[換金](1130G)'], - [136, '重厚な馬具[換金](1140G)'], - [137, '香辛料のセット[換金](1160G)'], - [138, '太陽のティアラ[換金](1170G)'], - [139, '豪華な姿見[換金](1190G)'], - [140, '月のティアラ[換金](1210G)'], - [141, '水晶のメガネ[換金](1220G)'], - [142, '魔法銀の塊[換金](1240G)'], - [143, '硝子のメガネ[換金](1260G)'], - [144, '金細工のゲーム盤[換金](1270G)'], - [145, '金剛石のメガネ[換金](1290G)'], - [146, '品のあるネックレス[換金](1310G)'], - [147, '植物の標本[換金](1330G)'], - [148, 'くすんだ首輪[換金](1340G)'], - [149, '空色鋼の塊[換金](1360G)'], - [150, '騎士の像[換金](1380G)'], - [151, 'ちぎれたネックレス[換金](1400G)'], - [152, '漆黒の呪具[換金](1410G)'], - [153, '精巧な馬具[換金](1430G)'], - [154, '飾り気のないティアラ[換金](1450G)'], - [155, '動物の標本[換金](1470G)'], - [156, '人造人間の標本[換金](1490G)'], - [157, 'しゃべる姿見[換金](1500G)'], - [158, '精巧なゲーム盤[換金](1520G)'], - [159, 'アルヴの貨幣[換金](1540G)'], - [160, '豪奢なネックレス[換金](1560G)'], - [161, '猫目石の腕輪[換金](1580G)'], - [162, '藍玉の腕輪[換金](1600G)'], - ] - - return tableName, table - end - - def getOtherTresureResultTable - tableName = "そのほか財宝表" - table = [ - [ 7, '百科事典(40G)'], - [ 8, 'ライトメイス(40G)'], - [ 9, '蘇生の宝珠(初級)(40G)'], - [ 10, '季節の野菜ポトフ(20G)x2'], - [ 11, '荷馬車の笛(45G)'], - [ 12, 'モンスター図鑑(初級)(40G)&お好みサンドイッチ(10G)'], - [ 13, 'ファインダガー(50G)'], - [ 14, 'パッデドアーマー[破損](55G)'], - [ 15, '鉄壁符(初級)(45G)'], - [ 16, 'ショートボウ[破損](55G)'], - [ 17, 'マーシャルアーツドレス[破損](60G)'], - [ 18, 'ケルピーの鱗(60G)'], - [ 19, 'クレセントバーガー(30G)x2'], - [ 20, 'シェフの気まぐれピザ(60G)'], - [ 21, 'スモールシールド(70G)'], - [ 22, 'ウィローバンド[破損](30G)&暗闇透視薬(初級)(40G)'], - [ 23, 'スモールシールド[破損](35G)&魔精の小瓶(初級)(40G)'], - [ 24, '鉢がね(80G)'], - [ 25, 'ベリーのタルト(40G)x2'], - [ 26, '防水バッグ[破損](35G)&水中活動の巻物(初級)(50G)'], - [ 27, 'スティレット(90G)'], - [ 28, '飛行の巻物(初級)(50G)&強酸毒(初級)(40G)'], - [ 29, 'スプリントメイル[破損](100G)'], - [ 30, '異次元バッグ(初級)[破損](45G)&おにぎり(50G)'], - [ 31, 'ウッデンラウンド(100G)'], - [ 32, '野太刀[破損](110G)'], - [ 33, '保護の巻物(初級)(70G)&消耗毒(初級)(50G)'], - [ 34, 'ライトクロスボウ[破損](115G)'], - [ 35, '良質な楽器(110G)'], - [ 36, 'ハンターフード[破損](60G)&猛毒薬(中級)(60G)'], - [ 37, 'とんすとんの焼き串盛り合わせ(120G)'], - [ 38, 'クィルブイリ[破損](135G)'], - [ 39, 'ケープ(140G)'], - [ 40, 'トートバッグ(140G)'], - [ 41, '三つ目鳥の卵炒飯(70G)&衰弱毒(中級)(80G)'], - [ 42, '範囲隠密の巻物(初級)(150G)'], - [ 43, 'アイアンシールド(150G)'], - [ 44, 'クイックカード(初級)(170G)'], - [ 45, 'イーグルカード(初級)(170G)'], - [ 46, '和弓[破損](170G)'], - [ 47, 'エストック[破損](170G)'], - [ 48, '食料バッグ(170G)'], - [ 49, 'トポト親方のコロッケ(90G)&拘束毒(中級)(100G)'], - [ 50, 'モーニングスター(200G)'], - [ 51, 'シーダーのスタッフ[破損](200G)'], - [ 52, 'カイトシールド(220G)'], - [ 53, '怪鳥肉の水炊き(210G)'], - [ 54, 'チェインシャツ[破損](245G)'], - [ 55, '大弓[破損](240G)'], - [ 56, '範囲飛行の巻物(初級)(210G)'], - [ 57, 'ポーションホルダー(中級)(240G)'], - [ 58, 'アウトレイジ[破損](240G)'], - [ 59, '定番カレー(130G)x2'], - [ 60, '蘇生の宝珠(中級)(240G)'], - [ 61, '招命の宝珠(中級)(120G)&焼きそばパン(150G)'], - [ 62, '異次元バッグ(中級)(280G)'], - [ 63, '名工の楽器(280G)'], - [ 64, '月狼の牙[破損](180G)&解毒薬(中級)(130G)'], - [ 65, '魚鱗の宝珠(中級)(280G)'], - [ 66, '防水ポーチ(320G)'], - [ 67, '収納シールド(320G)'], - [ 68, '火炎のイヤリング(330G)'], - [ 69, '絹の帽子(350G)'], - [ 70, '幻翼の宝珠(中級)(320G)'], - [ 71, 'バグナウ[破損](340G)'], - [ 72, 'ロングボウ[破損](370G)'], - [ 73, 'ショテル[破損](370G)'], - [ 74, 'デッキシールド[破損](185G)&チキンボックス(200G)'], - [ 75, 'コルセスカ[破損](365G)'], - [ 76, 'サイプレスのスタッフ[破損](425G)'], - [ 77, 'チェーンシックル[破損](230G)&苺のふんわりカップケーキ(230G)'], - [ 78, 'ブロードアックス(410G)'], - [ 79, 'クロスシールド(470G)'], - [ 80, 'モンスター図鑑(上級)(400G)'], - [ 81, '羽毛のケープ(400G)'], - [ 82, '鉄身のブーツ(400G)'], - [ 83, '看破の宝珠(中級)(420G)'], - [ 84, 'アドベンチャーザック(480G)'], - [ 85, '隠密の巻物(中級)(460G)'], - [ 86, 'ファルクス[破損](500G)'], - [ 87, 'ポーションホルダー(上級)(540G)'], - [ 88, 'カタール[破損](500G)'], - [ 89, '名匠の楽器(540G)'], - [ 90, '技能薬(上級)(480G)'], - [ 91, '火炎のタリスマン(620G)'], - [ 92, 'からすの手提げ袋(600G)'], - [ 93, '範囲隠密の巻物(中級)(570G)'], - [ 94, 'トラベラーハット(650G)'], - [ 95, '高位保護の巻物(中級)(520G)'], - [ 96, '長柄槍[破損](600G)'], - [ 97, '範囲飛行の巻物(中級)(570G)'], - [ 98, 'クイックカード(中級)(620G)'], - [ 99, 'トラベラーハット(650G)'], - [100, '剛手甲[破損](650G)'], - [101, '掃討の巻物(特級)(570G)'], - [102, 'エスパドン[破損](700G)'], - [103, '異次元バッグ(上級)(740G)'], - [104, 'まごころミートパイ(410G)x2'], - [105, '李満弓[破損](700G)'], - [106, '招命の宝珠(上級)(395G)x2'], - [107, '識別の巻物(上級)(690G)'], - [108, 'リネンクロス[破損](850G)'], - [109, '出前のおかもち(820G)'], - [110, '回復薬(上級)(720G)'], - [111, '蘇生の宝珠(上級)(790G)'], - [112, '再生薬(上級)(790G)'], - [113, 'エレメンタルカード(上級)(750G)'], - [114, '極上の楽器(900G)'], - [115, '踏破の巻物(上級)(750G)'], - [116, '垣間見の巻物(特級)(750G)'], - [117, '鉄壁符(上級)(820G)'], - [118, '魚鱗の宝珠(上級)(860G)'], - [119, '神奉刀[破損](850G)'], - [120, 'ヘヴィナックル[破損](950G)'], - [121, '巧指符(特級)(1000G)'], - [122, '幻翼の宝珠(上級)(930G)'], - [123, '火炎のベルト(1000G)'], - [124, 'シルキーベレー(1100G)'], - [125, 'ヒーリングワード(上級)(970G)'], - [126, '技能薬(特級)(930G)'], - [127, 'クレセントアックス[破損](1100G)'], - [128, 'ウォーハンマー(1100G)'], - [129, 'ミスルトゥのスタッフ[破損](1150G)'], - [130, '範囲保護の巻物(上級)(970G)'], - [131, '浄眼の巻物(上級)(970G)'], - [132, 'マジカルカード(上級)(1000G)'], - [133, '現身符(上級)(1000G)'], - [134, 'ジュエリーポーチ(1200G)'], - [135, '耐魔の軟膏(上級)(1000G)'], - [136, '鉄身の軟膏(上級)(1000G)'], - [137, '範囲飛行の巻物(上級)(1100G)'], - [138, '隠密の巻物(上級)(1100G)'], - [139, '魔性の楽器(1300G)'], - [140, '良業物[破損](1150G)'], - [141, '範囲付呪の巻物(上級)(1100G)'], - [142, 'ジャマダハル[破損](1300G)'], - [143, 'マスターパック(1400G)'], - [144, 'ドライハンダー[破損](1450G)'], - [145, 'グレイトヘルム[破損](1050G)'], - [146, '高位保護の巻物(上級)(1200G)'], - [147, '範囲隠密の巻物(上級)(1200G)'], - [148, 'ローズサークレット(1600G)'], - [149, '火炎のメダリオン(1600G)'], - [150, 'ファインジャベリン[破損](1200G)'], - [151, 'カッツバルゲル[破損](1250G)'], - [152, '紫の指輪[破損](1300G)'], - [153, '異次元バッグ(特急)(1600G)'], - [154, '五人張[破損](1750G)'], - [155, '皇国技芸寮打物[破損](1400G)'], - [156, 'ヘヴィランス[破損](1500G)'], - [157, '竜手甲[破損](1650G)'], - [158, 'ポロニアのワンド[破損](1700G)'], - [159, 'デスサイズ[破損](1700G)'], - [160, 'フランシスカ(1700G)'], - [161, '伝説の楽器(1700G)'], - [162, 'ウルミン(1900G)'], - ] - - return tableName, table - end - - def getHeroineTresureResultTable - tableName = "ヒロイン財宝表" - table = [ - [ 7, '行き倒れのみすぼらしいやせっぽちの幼女'], - [ 8, '何よりお金が大事な御団子頭のチャイナ娘'], - [ 9, 'おネダり上手キャミソ肩だしセーター妖術師'], - [10, '小さな背中で皆を護るカットジーンズ武闘家'], - [11, 'イカ帽子をかぶったドジっ娘侵略者'], - [12, '呆れるほどポジティブな自称名探偵'], - [13, '肝心な所でドジ踏む猫毛ポニテ殴り施療神官'], - [14, '卵かけご飯の好きな貧乳神祇官'], - [15, '光物大好きガメツイビッグリボン二刀細剣士'], - [16, 'オークから命からがら逃げてきた剣の乙女'], - [17, 'あなたのことを盲目的に賛美する自称妹'], - [18, 'アピールするのに認識されない神祇官'], - [19, '明るくポジティブなピンクのリボンの少女'], - [20, '虚乳の魔法が使えないコンプレックス魔女'], - [21, '食欲に一切躊躇しないむっちり駄肉アイドル'], - [22, '泣きホクロが魅惑の悪戯お姉さん盗剣士'], - [23, '執着心の強い若作りで陽気な年増神話生物'], - [24, '詩歌を愛する平安引きこもり姫'], - [25, '病弱だが誇り高い没落貴族のお嬢様'], - [26, '元気いっぱい!小柄な狼牙族の野生児少女'], - [27, '借金のかたで段ボールハウスなリコピン'], - [28, '帰国子女の巫女服風魔砲少女デース!'], - [29, 'ついてくるだけは出来るゾンビ娘'], - [30, '夢にひたむきな緑髪の超時空アイドル候補生'], - [31, 'すぐ股間を蹴るギザギザ歯のヤンキー娘'], - [32, '使い減りしない盾'], - [33, 'FXで有り金を全部とかしたうつろな先輩'], - [34, '二の腕ぷにぷにだが家計簿を付けられる魔王'], - [35, 'その胸は豊満であった記憶喪失の女ニンジャ'], - [36, 'よくお裾わけをくれるおさげ髪のパン屋の娘'], - [37, '「汚いは褒め言葉」の目線つき女暗殺者'], - [38, 'ボタンが弾けそうで涙目のギルド窓口看板娘'], - [39, '何でもオカルトにしてパニックになる少女'], - [40, '戦闘の度に大食いしてしまう悩める弓術少女'], - [41, '些細なことですぐ絆されちゃう金髪少女'], - [42, '一緒に帰るのが恥ずかしいピンク髪幼馴染'], - [43, 'ぽんぽんがペインでトイレ常駐なエルフ少女'], - [44, '見つめると赤面する前髪法儀族少女'], - [45, 'すぐビビッてテンパる小動物系少女'], - [46, '背が高く紳士でキザなヅカ系王子様騎士女'], - [47, '竹を割ったような性格の筋肉ドワーフ女'], - [48, 'いつもあなたを夢に見ているポニテ少女'], - [49, '先陣先駆け夜討ち朝駆けお寝坊姉御武士'], - [50, '何にでも首を突っ込む旅ガラスのロリババア'], - [51, '事あるごとに踊る薄着南国褐色娘'], - [52, '彼女はあなたの初恋の人に似ている'] - ] - - return tableName, table - end - - def getGoblinTresureResultTable - tableName = "ゴブリン財宝表" - table = [ - [ 7, 'ライトメイス(40G)'], - [ 8, '百科事典(40G)'], - [ 9, '42G'], - [10, '古びた髑髏[コア素材](40G)'], - [11, '加速の巻物(初級)(45G)'], - [12, '46G'], - [13, '48G'], - [14, '50G'], - [15, 'ガラス玉[換金](60G)'], - [16, '血塗られた刃[コア素材](50G)'], - [17, '歪んだ金皿[換金](60G)'], - [18, '59G'], - [19, '毛皮の敷物[換金](60G)'], - [20, 'とがった爪[コア素材](60G)'], - [21, '67G'], - [22, '傷だらけの象牙像[換金](70G)'], - [23, '72G'], - [24, 'ライトランス[破損](75G)'], - [25, '骨のネックレス[換金](80G)'], - [26, '砂金混じりの石[換金](80G)'], - [27, '85G'], - [28, '香木の小片[換金](90G)'], - [29, '奇妙なお面[換金](90G)'], - [30, '96G'], - [31, 'シミター(100G)'], - [32, 'ウッデンラウンド(100G)'], - [33, '風鳴りの鈴[コア素材](80G)&鉄の陣笠[コア素材](30G)'], - [34, '112G'], - [35, '山羊スライム(大)[換金](120G)'], - [36, '121G'], - [37, '高級桧材[換金](125G)'], - [38, '130G'], - [39, '水晶のチェス駒[換金](135G)'], - [40, '140G'], - [41, 'テント(キャンプ用)(150G)'], - [42, '怪しい丸薬[コア素材](30G)x2&100G'], - [43, '謎めいた毛皮[コア素材](80G)&怨念の鍔[コア素材](80G)'], - [44, '儀式の骨剣[換金](160G)'], - [45, '古ぼけたコイン[換金](165G)'], - [46, '狼牙棒(170G)'], - [47, '法理回路[コア素材](60G)&120G'], - [48, '大きな魔力結晶[コア素材](120G)&60G'], - [49, '189G'], - [50, '上等な樽酒[換金](200G)'], - [51, '201G'], - [52, '白の指輪(210G)'], - [53, 'ヒスイの首飾り[換金](210G)'], - [54, '金のゴブリン像[換金](220G)'], - [55, 'サーベル(230G)'], - [56, '真鉄の刀身[コア素材](120G)&120G'], - [57, '汚れた青磁の壺[換金](240G)'], - [58, 'とんすとんの焼き串盛り合わせ(120G)x2'], - [59, 'ゴブリン王の勲章[換金](255G)'], - [60, '垣間見の巻物(中級)(130G)x2'], - [61, '269G'], - [62, '白狼の毛皮[換金](280G)'], - ] - - return tableName, table - end - - # パーソナリティタグ表 - def getPersonalityTagDiceCommandResult(command) - return nil unless "PTAG" === command - - tableName = "パーソナリティタグ表" - table = [ - '[おませさん]', - '[好奇心旺盛]', - '[寂しがりや]', - '[生真面目]', - '[食いしん坊]', - '[やんちゃ]または[おてんば]', - - '[お人よし]', - '[情熱家]', - '[世話好き]', - '[理知的]', - '[頑固者]', - '[兄貴肌]または[姉御肌]', - - '[義理堅い]', - '[気まぐれ]', - '[職人気質]', - '[熱血漢]', - '[努力家]', - '[男好き]または[女好き]', - - '[家庭的]', - '[負けず嫌い]', - '[純真]', - '[朴念仁]', - '[慈悲深い]', - '[マイペース]', - - '[楽天家]', - '[仲間思い]', - '[誇り高い]', - '[社交的]', - '[冷静沈着]', - '[ロマンチスト]', - - '[学者肌]', - '[内向的]', - '[苦労人]', - '[派手好き]', - '[勇猛果敢]', - '[ミステリアス]', - ] - - result, number = get_table_by_d66(table) - - text = "#{tableName}(#{number}):#{result}" - return text - end - - # 交友表 - def getFriendlyChartDiceCommandResult(command) - return nil unless "KOYU" === command - - tableName = "交友表" - table = [ - "交友対象への庇護\nあなたは、交友対象を庇護したいと思っている。守ってあげられる強さがあなたにはある。", - "交友対象への親愛\nあなたは、交友対象を好ましく思っている。その気持ちを彼に伝えているとは限らない。", - "交友対象との義兄弟\nあなたは、交友対象と兄弟同然の間柄だ。もちろん、血は繋がっていないが、そんなことは些細なことだ。", - "交友対象の英雄\nあなたは、交友対象から英雄視されている。それは例えあなたが否定しても変わらない。", - "交友対象への尊敬\nあなたは、交友対象を尊敬している。彼の技術、心の強さ。それがなんであっても彼への敬意は変わらない。", - "交友対象の相棒\nあなたは、交友対象を相棒だと思っている。彼なら自分と一緒に歩んでくれるだろう。", - - "交友対象への庇護\nあなたは、交友対象を庇護したいと思っている。守ってあげられる強さがあなたにはある。", - "交友対象への親愛\nあなたは、交友対象を好ましく思っている。その気持ちを彼に伝えているとは限らない。", - "交友対象との義兄弟\nあなたは、交友対象と兄弟同然の間柄だ。もちろん、血は繋がっていないが、そんなことは些細なことだ。", - "交友対象の英雄\nあなたは、交友対象から英雄視されている。それは例えあなたが否定しても変わらない。", - "交友対象への尊敬\nあなたは、交友対象を尊敬している。彼の技術、心の強さ。それがなんであっても彼への敬意は変わらない。", - "交友対象の相棒\nあなたは、交友対象を相棒だと思っている。彼なら自分と一緒に歩んでくれるだろう。", - - "交友対象の恩\nあなたは交友対象に恩を受けた。今度は自分がその恩に報いる番だ。", - "交友対象のライバル\nあなたは、交友対象をライバルだと思っている。それは一方的なものかもしれないし、切磋琢磨する間柄かもしれない。", - "交友対象への興味\nあなたは、交友対象に対して興味を持っている。彼を見ているのが面白く、彼の行動を見届けてみたい。", - "交友対象との友情\nあなたは、彼を友人だと思っている。それはどこに行っても変わらない確かなものだ。", - "交友対象との同志\nあなたは、交友対象の同志である。同好の士であったり、同じ目的に向かう者だったりするだろう。", - "交友対象への理解\nあなたは、交友対象を理解したいと思っている。彼はあなたと違う新しい視点を見せてくれる。", - - "交友対象の恩\nあなたは交友対象に恩を受けた。今度は自分がその恩に報いる番だ。", - "交友対象のライバル\nあなたは、交友対象をライバルだと思っている。それは一方的なものかもしれないし、切磋琢磨する間柄かもしれない。", - "交友対象への興味\nあなたは、交友対象に対して興味を持っている。彼を見ているのが面白く、彼の行動を見届けてみたい。", - "交友対象との友情\nあなたは、彼を友人だと思っている。それはどこに行っても変わらない確かなものだ。", - "交友対象との同志\nあなたは、交友対象の同志である。同好の士であったり、同じ目的に向かう者だったりするだろう。", - "交友対象への理解\nあなたは、交友対象を理解したいと思っている。彼はあなたと違う新しい視点を見せてくれる。", - - "交友対象への尽力\nあなたは、交友対象に尽くしたいと思っている。それは彼の人柄かもしれないし、あなたの拘りかもしれない。", - "交友対象との師弟\nあなたは、交友対象との師弟関係を結んでいる。どちらが師でも構わないがいろいろ教えられることがあるだろう。", - "交友対象との雇用関係\nあなたは、交友対象と雇用関係にある。あなたと彼は仕事を通じて互いの力量を認め合う仲だ。", - "交友対象の隣人\nあなたは交友対象の近隣に住んでいる。毎日挨拶を交わす程度かもしれないし、一緒に夕食を食べる仲かもしれない。", - "交友対象との取引\nあなたは交友対象と商売をしている。互いに利のある取引ができる相手だ。", - "交友対象の家族\nあなたは交友対象と一緒に暮らしている。同じ家に誰かがいると寂しくはないだろう。", - - "交友対象への尽力\nあなたは、交友対象に尽くしたいと思っている。それは彼の人柄かもしれないし、あなたの拘りかもしれない。", - "交友対象との師弟\nあなたは、交友対象との師弟関係を結んでいる。どちらが師でも構わないがいろいろ教えられることがあるだろう。", - "交友対象との雇用関係\nあなたは、交友対象と雇用関係にある。あなたと彼は仕事を通じて互いの力量を認め合う仲だ。", - "交友対象の隣人\nあなたは交友対象の近隣に住んでいる。毎日挨拶を交わす程度かもしれないし、一緒に夕食を食べる仲かもしれない。", - "交友対象との取引\nあなたは交友対象と商売をしている。互いに利のある取引ができる相手だ。", - "交友対象の家族\nあなたは交友対象と一緒に暮らしている。同じ家に誰かがいると寂しくはないだろう。" - ] - - result, number = get_table_by_d66(table) - - text = "#{tableName}([#{number}]) > #{result}" - return text - end - - # プレフィックスドマジックアイテム表 - def getPrefixedMagickItemDiceCommandResult(command) - return nil unless /MGR([1-3])/ === command - - rank = Regexp.last_match(1).to_i - - table_1 = [ - "接頭語:気合の 対応タグ:すべての武器\nアイテム効果:この武器の【攻撃力】に+1する。", - "接頭語:秘術の 対応タグ:[杖][魔石]\nアイテム効果:このアイテムの【魔力】を+1する。", - "接頭語:一撃の 対応タグ:[白兵攻撃]可能な武器\nアイテム効果:〔起動:ダメージロール〕この武器による[白兵攻撃]のダメージロールに+7する。シナリオ1回使用可能。", - "接頭語:狙撃の 対応タグ:[弓][投擲]\nアイテム効果:〔起動:行動〕この武器による[射撃攻撃]と同時に使用する。攻撃の射程を+2Sqする。シナリオ1回使用可能。", - "接頭語:必殺の 対応タグ:すべての武器\nアイテム効果:〔起動:判定直後〕この武器による[武器攻撃]による[命中判定]のダイスに6の出目が1つ以上あれば、判定をクリティカルにする。シナリオ1回使用可能。", - "接頭語:火炎の 対応タグ:すべての武器、楽器\nアイテム効果:アイテムに[火炎]タグを追加する。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「冷気の」「電撃の」のように変更すること)", - - "接頭語:気合の 対応タグ:すべての武器\nアイテム効果:この武器の【攻撃力】に+1する。", - "接頭語:秘術の 対応タグ:[杖][魔石]\nアイテム効果:このアイテムの【魔力】を+1する。", - "接頭語:一撃の 対応タグ:[白兵攻撃]可能な武器\nアイテム効果:〔起動:ダメージロール〕この武器による[白兵攻撃]のダメージロールに+7する。シナリオ1回使用可能。", - "接頭語:狙撃の 対応タグ:[弓][投擲]\nアイテム効果:〔起動:行動〕この武器による[射撃攻撃]と同時に使用する。攻撃の射程を+2Sqする。シナリオ1回使用可能。", - "接頭語:必殺の 対応タグ:すべての武器\nアイテム効果:〔起動:判定直後〕この武器による[武器攻撃]による[命中判定]のダイスに6の出目が1つ以上あれば、判定をクリティカルにする。シナリオ1回使用可能。", - "接頭語:火炎の 対応タグ:すべての武器、楽器\nアイテム効果:アイテムに[火炎]タグを追加する。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「冷気の」「電撃の」のように変更すること)", - - "接頭語:炎使いの 対応タグ:[杖][魔石][腕部]\nアイテム効果:〔起動:ダメージロール〕あなたが行う[火炎]タグを持つ攻撃のダメージロールに+7する。シナリオ1回使用可能。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「氷使いの」「雷使いの」のように変更すること)", - "接頭語:鉄身の 対応タグ:[盾][重鎧][中鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近距離からの攻撃):3]を得る。", - "接頭語:矢除けの 対応タグ:[盾][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近以外からの攻撃):3]を得る。", - "接頭語:火除けの 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(火炎):10]を得る。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「氷除けの」「雷除けの」のように変更すること)", - "接頭語:根性の 対応タグ:[重鎧][頭部]\nアイテム効果:〔起動:本文〕あなたがBSを受けた直後に使用する。直前に受けたBSから1つ選んで解除する。シナリオ1回使用可能。", - "接頭語:癒しの 対応タグ:[腕部]\nアイテム効果:あなたの【回復力】を+2する。", - - "接頭語:炎使いの 対応タグ:[杖][魔石][腕部]\nアイテム効果:〔起動:ダメージロール〕あなたが行う[火炎]タグを持つ攻撃のダメージロールに+7する。シナリオ1回使用可能。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「氷使いの」「雷使いの」のように変更すること)", - "接頭語:鉄身の 対応タグ:[盾][重鎧][中鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近距離からの攻撃):3]を得る。", - "接頭語:矢除けの 対応タグ:[盾][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近以外からの攻撃):3]を得る。", - "接頭語:火除けの 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(火炎):10]を得る。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「氷除けの」「雷除けの」のように変更すること)", - "接頭語:根性の 対応タグ:[重鎧][頭部]\nアイテム効果:〔起動:本文〕あなたがBSを受けた直後に使用する。直前に受けたBSから1つ選んで解除する。シナリオ1回使用可能。", - "接頭語:癒しの 対応タグ:[腕部]\nアイテム効果:あなたの【回復力】を+2する。", - - "接頭語:スナネズミの 対応タグ:[腕部][外套]\nアイテム効果:〔起動:クリンナップ〕あなたの【ヘイト】をー2する。シナリオ1回使用可能。", - "接頭語:フクロウの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:インスタント〕あなたは[暗視]タグを得る。この効果はCSとして扱う。シナリオ1回使用可能。", - "接頭語:ヤマイワナの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:インスタント〕あなたは[水棲]タグを得る。この効果はCSとして扱う。シナリオ1回使用可能。", - "接頭語:目利きの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたがドロップ品ロールを行った直後に使用する。そのロールを振り直す。シナリオ1回使用可能。", - "接頭語:宝探しの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが財宝表ロールを行った直後に使用する。そのロールを振り直す。シナリオ1回使用可能。", - "接頭語:早変わりの 対応タグ:[鞄]\nアイテム効果:〔起動:インスタント〕あなたは即座に《装備の変更》を行う。シーン1回使用可能。", - - "接頭語:スナネズミの 対応タグ:[腕部][外套]\nアイテム効果:〔起動:クリンナップ〕あなたの【ヘイト】をー2する。シナリオ1回使用可能。", - "接頭語:フクロウの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:インスタント〕あなたは[暗視]タグを得る。この効果はCSとして扱う。シナリオ1回使用可能。", - "接頭語:ヤマイワナの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:インスタント〕あなたは[水棲]タグを得る。この効果はCSとして扱う。シナリオ1回使用可能。", - "接頭語:目利きの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたがドロップ品ロールを行った直後に使用する。そのロールを振り直す。シナリオ1回使用可能。", - "接頭語:宝探しの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが財宝表ロールを行った直後に使用する。そのロールを振り直す。シナリオ1回使用可能。", - "接頭語:早変わりの 対応タグ:[鞄]\nアイテム効果:〔起動:インスタント〕あなたは即座に《装備の変更》を行う。シーン1回使用可能。" - ] - - table_2 = [ - "接頭語:怒りの 対応タグ:[両手]武器\nアイテム効果:〔起動:ダメージロール〕この武器による[武器攻撃]のダメージロールに+[あなたの【ヘイト】]する。シーン1回使用可能。", - "接頭語:連撃の 対応タグ:[片手]武器\nアイテム効果:〔起動:判定直後〕この武器による[武器攻撃]の[命中判定]を振り直す。シーン1回使用可能。", - "接頭語:鋭刃の 対応タグ:[剣][刀][槍]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。", - "接頭語:痛撃の 対応タグ:[槌斧][格闘][鞭][杖]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。", - "接頭語:魔弾の 対応タグ:[弓][投擲]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。", - "接頭語:理力の 対応タグ:すべての武器、[魔石][楽器]\nアイテム効果:あなたの[魔法攻撃][特殊攻撃]のダメージロールに+1Dする。この効果は複数累積しない。", - - "接頭語:怒りの 対応タグ:[両手]武器\nアイテム効果:〔起動:ダメージロール〕この武器による[武器攻撃]のダメージロールに+[あなたの【ヘイト】]する。シーン1回使用可能。", - "接頭語:連撃の 対応タグ:[片手]武器\nアイテム効果:〔起動:判定直後〕この武器による[武器攻撃]の[命中判定]を振り直す。シーン1回使用可能。", - "接頭語:鋭刃の 対応タグ:[剣][刀][槍]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。", - "接頭語:痛撃の 対応タグ:[槌斧][格闘][鞭][杖]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。", - "接頭語:魔弾の 対応タグ:[弓][投擲]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。", - "接頭語:理力の 対応タグ:すべての武器、[魔石][楽器]\nアイテム効果:あなたの[魔法攻撃][特殊攻撃]のダメージロールに+1Dする。この効果は複数累積しない。", - - "接頭語:鬼殺しの 対応タグ:すべての武器\nアイテム効果:この武器による[人型]への[武器攻撃]のダメージロールに+1Dする。(この効果を選んだ時、種族のタグを[自然][精霊][幻獣][不死][人造][人間]のいずれかに変更してもよい。その場合は接頭語も「精霊殺しの」「幻獣殺しの」のように変更すること)", - "接頭語:堅守の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:この防具の【物理防御力】に+4する。", - "接頭語:抗魔の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:この防具の【魔法防御力】に+4する。", - "接頭語:防壁の 対応タグ:[盾][頭部]\nアイテム効果:あなたはシーン開始時に[障壁:10]を得る。", - "接頭語:忍耐の 対応タグ:[盾][頭部]\nアイテム効果:〔起動:本文〕あなたが強制的な移動を受けた時に使用する。その移動距離をー1Sqする。", - "接頭語:護法の 対応タグ:[腕部]\nアイテム効果:あなたが与える[障壁]の強度は+5される。", - - "接頭語:鬼殺しの 対応タグ:すべての武器\nアイテム効果:この武器による[人型]への[武器攻撃]のダメージロールに+1Dする。(この効果を選んだ時、種族のタグを[自然][精霊][幻獣][不死][人造][人間]のいずれかに変更してもよい。その場合は接頭語も「精霊殺しの」「幻獣殺しの」のように変更すること)", - "接頭語:堅守の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:この防具の【物理防御力】に+4する。", - "接頭語:抗魔の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:この防具の【魔法防御力】に+4する。", - "接頭語:防壁の 対応タグ:[盾][頭部]\nアイテム効果:あなたはシーン開始時に[障壁:10]を得る。", - "接頭語:忍耐の 対応タグ:[盾][頭部]\nアイテム効果:〔起動:本文〕あなたが強制的な移動を受けた時に使用する。その移動距離をー1Sqする。", - "接頭語:護法の 対応タグ:[腕部]\nアイテム効果:あなたが与える[障壁]の強度は+5される。", - - "接頭語:脈動の 対応タグ:[腕部]\nアイテム効果:あなたが与える[再生]の強度は+3される。", - "接頭語:疾走の 対応タグ:[脚部][外套]\nアイテム効果:〔起動:行動〕あなたが《ラン》《ダッシュ》を行う時に使用する。その移動距離に+1Sqする。シーン1回使用可能。", - "接頭語:瞬速の 対応タグ:[脚部][外套]\nアイテム効果:このアイテムの[行動修正]に+3する。", - "接頭語:逆境の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが[戦闘不能]になった直後に使用できる。あなたは【因果力】1点を得る。シーン1回使用可能。", - "接頭語:森渡りの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:あなたはシーン開始時に[軽減([天然]プロップ、ギミックからのダメージ):15]を得る。(この効果を選んだ時、タグを[魔法][機械]のいずれかに変えてもよい。その場合は、接頭語も「魔渡りの」「罠渡りの」のように変更すること)", - "接頭語:旅人の 対応タグ:[鞄]\nアイテム効果:このアイテムに[所持品スロット]4個を追加する。", - - "接頭語:脈動の 対応タグ:[腕部]\nアイテム効果:あなたが与える[再生]の強度は+3される。", - "接頭語:疾走の 対応タグ:[脚部][外套]\nアイテム効果:〔起動:行動〕あなたが《ラン》《ダッシュ》を行う時に使用する。その移動距離に+1Sqする。シーン1回使用可能。", - "接頭語:瞬速の 対応タグ:[脚部][外套]\nアイテム効果:このアイテムの[行動修正]に+3する。", - "接頭語:逆境の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが[戦闘不能]になった直後に使用できる。あなたは【因果力】1点を得る。シーン1回使用可能。", - "接頭語:森渡りの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:あなたはシーン開始時に[軽減([天然]プロップ、ギミックからのダメージ):15]を得る。(この効果を選んだ時、タグを[魔法][機械]のいずれかに変えてもよい。その場合は、接頭語も「魔渡りの」「罠渡りの」のように変更すること)", - "接頭語:旅人の 対応タグ:[鞄]\nアイテム効果:このアイテムに[所持品スロット]4個を追加する。" - ] - - table_3 = [ - "接頭語:気迫の 対応タグ:すべての武器\nアイテム効果:この武器の【攻撃力】に+3する。", - "接頭語:神秘の 対応タグ:[杖][魔石]\nアイテム効果:このアイテムの【魔力】に+3する。", - "接頭語:遠当ての 対応タグ:[弓][投擲]\nアイテム効果:この武器の射程に+1Sqする。", - "接頭語:吸血の 対応タグ:[白兵攻撃]可能な武器\nアイテム効果:この武器による[白兵攻撃]でダメージを与えた時、あなたの【HP】は5点回復する。", - "接頭語:衝撃の 対応タグ:[片手]武器\nアイテム効果:この武器による《基本武器攻撃》でダメージを与えた時、攻撃の対象に[放心]を与える。", - "接頭語:怒号の 対応タグ:[両手]武器\nアイテム効果:この武器による《基本武器攻撃》でダメージを与えた時、攻撃の対象に[萎縮]を与える。", - - "接頭語:気迫の 対応タグ:すべての武器\nアイテム効果:この武器の【攻撃力】に+3する。", - "接頭語:神秘の 対応タグ:[杖][魔石]\nアイテム効果:このアイテムの【魔力】に+3する。", - "接頭語:遠当ての 対応タグ:[弓][投擲]\nアイテム効果:この武器の射程に+1Sqする。", - "接頭語:吸血の 対応タグ:[白兵攻撃]可能な武器\nアイテム効果:この武器による[白兵攻撃]でダメージを与えた時、あなたの【HP】は5点回復する。", - "接頭語:衝撃の 対応タグ:[片手]武器\nアイテム効果:この武器による《基本武器攻撃》でダメージを与えた時、攻撃の対象に[放心]を与える。", - "接頭語:怒号の 対応タグ:[両手]武器\nアイテム効果:この武器による《基本武器攻撃》でダメージを与えた時、攻撃の対象に[萎縮]を与える。", - - "接頭語:甲羅の 対応タグ:[盾][重鎧][中鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近距離からの攻撃):10]を得る。", - "接頭語:矢弾きの 対応タグ:[盾][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近以外からの攻撃):10]を得る。", - "接頭語:耐火の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(火炎):25]を得る。(この効果を選んだ時、軽減するタグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「耐冷の」「耐電の」のように変更すること)", - "接頭語:城砦の 対応タグ:[盾][頭部]\nアイテム効果:あなたはシーン開始時に【障壁:20】を得る。", - "接頭語:物見の 対応タグ:[頭部]\nアイテム効果:あなたが行う[偵察]タグを持つ行動、および《異常探知》の判定に+1Dする。", - "接頭語:快癒の 対応タグ:[腕部]\nアイテム効果:あなたの【回復力】に+5する。", - - "接頭語:甲羅の 対応タグ:[盾][重鎧][中鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近距離からの攻撃):10]を得る。", - "接頭語:矢弾きの 対応タグ:[盾][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近以外からの攻撃):10]を得る。", - "接頭語:耐火の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(火炎):25]を得る。(この効果を選んだ時、軽減するタグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「耐冷の」「耐電の」のように変更すること)", - "接頭語:城砦の 対応タグ:[盾][頭部]\nアイテム効果:あなたはシーン開始時に【障壁:20】を得る。", - "接頭語:物見の 対応タグ:[頭部]\nアイテム効果:あなたが行う[偵察]タグを持つ行動、および《異常探知》の判定に+1Dする。", - "接頭語:快癒の 対応タグ:[腕部]\nアイテム効果:あなたの【回復力】に+5する。", - - "接頭語:罠外しの 対応タグ:[腕部]\nアイテム効果:〔起動:判定直前〕あなたが《プロップ解除》を行う時に使用する。その判定はクリティカルとなる。シーン1回使用可能。", - "接頭語:不動の 対応タグ:[脚部][外套]\nアイテム効果:あなたは[阻止能力]を失わない。", - "接頭語:影走りの 対応タグ:[脚部][外套]\nアイテム効果:あなたが[隠密状態]の時に《ラン》を行っても、[隠密状態]は解除されない。", - "接頭語:深海の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:あなたは[暗視][水棲]タグを得る。", - "接頭語:金運の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが財宝表ロールまたはドロップ表ロールを行った直後に使用する。そのロールを振り直す。シーン1回使用可能。", - "接頭語:罠避けの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:ダメージ適用直前〕あなたに適用される予定のプロップおよび[ギミック]によるダメージを無効にする。シナリオ1回使用可能。", - - "接頭語:罠外しの 対応タグ:[腕部]\nアイテム効果:〔起動:判定直前〕あなたが《プロップ解除》を行う時に使用する。その判定はクリティカルとなる。シーン1回使用可能。", - "接頭語:不動の 対応タグ:[脚部][外套]\nアイテム効果:あなたは[阻止能力]を失わない。", - "接頭語:影走りの 対応タグ:[脚部][外套]\nアイテム効果:あなたが[隠密状態]の時に《ラン》を行っても、[隠密状態]は解除されない。", - "接頭語:深海の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:あなたは[暗視][水棲]タグを得る。", - "接頭語:金運の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが財宝表ロールまたはドロップ表ロールを行った直後に使用する。そのロールを振り直す。シーン1回使用可能。", - "接頭語:罠避けの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:ダメージ適用直前〕あなたに適用される予定のプロップおよび[ギミック]によるダメージを無効にする。シナリオ1回使用可能。" - ] - - tableName = "プレフィックスドアイテム効果表" - table = nil - - case rank - when 1 - tableName += "(マジックグレード1)" - table = table_1 - when 2 - tableName += "(マジックグレード2)" - table = table_2 - when 3 - tableName += "(マジックグレード3)" - table = table_3 - end - - result, number = get_table_by_d66(table) - - text = "#{tableName}([#{number}]) > #{result}" - return text - end - - # 攻撃命中箇所ランダム決定表 - def getHitLocationDiceCommandResult(command) - return nil unless "HLOC" === command - - tableName = "攻撃命中箇所" - table = [ - '額', - '頬', - '鼻', - '顎', - '後頭部', - '首', - - '耳', - '目', - 'こめかみ', - '腕', - '肘', - '手', - - '手の指', - '心臓', - '胃', - '肺', - '肋骨', - '肩', - - '背', - 'わき腹', - '腰', - '下腹', - '太もも', - '喉', - - 'ふくらはぎ', - 'アキレス腱', - 'かかと', - 'すね', - '足の小指', - '膝', - - '社会的信用', - '人間関係', - '初恋の思い出', - '完璧なはずの予測', - '心', - '眼鏡', - ] - result, number = get_table_by_d66(table) - "#{tableName}(#{number}):#{result}" - end - - # PC名ランダム決定表 - def getPCNameDiceCommandResult(command) - return nil unless "PCNM" === command - - tableName = "PC名" - table = [ - 'Kuraudo', - 'Sefirosu', - 'Kirito', - 'Asuna', - 'Leeroy Jenkins', - 'Buront', - - '水瀬陽夢', - '三宝寺吾郎', - '奈流麗夢', - 'フランチャイズ竜崎', - '太宰治', - 'ねざ', - - 'クロウ・リー', - 'ダィテス', - '達也', - '深雪', - 'スレイ', - 'タカぼんさん', - - '黒の錬金術士', - '†愛天使猫姫†', - 'デス★ガン', - '卍漆黒の堕天使卍', - '光速の異名を持ち重力を自在に操る高貴なる騎士', - '新世界†英傑殺し', - - 'ろぐほら', - 'ああああ', - 'そうこ', - 'ぎんこう', - 'あずかり', - 'もょもと', - - 'サスケ', - 'ラファエロ', - 'ドナテロ', - 'ミケランジェロ', - '川内', - 'フジキド', - ] - - result, number = get_table_by_d66(table) - - return "#{tableName}(#{number}):#{result}" - end - - # ロデ研の新発明ランダム決定表 - def getInventionAttributeTextDiceCommandResult(command) - return nil unless /IAT([ABMDLT]*)/ === command - - tableName = "ロデ研の新発明" - - table_indicate_string = Regexp.last_match(1) && Regexp.last_match(1) != '' ? Regexp.last_match(1) : 'MDLT' - is_single = (table_indicate_string.length == 1) - - result = [] - number = [] - - table_indicate_string.split(//).each do |char| - dice_result, dice_str = roll(1, 6) - number << dice_str - result << case char - when 'A', 'M' - [ - '光って回って音が鳴る', - '何かに目覚める', - '硬くて強い', - 'すごく速い', - '大量生産できる', - 'よい手触り', - ].map { |e| (is_single ? '特徴A(メリット):' : '') + e } - when 'B', 'D' - [ - '中毒性のある', - '凄まじく重い', - 'ひどい臭いの', - '壊れやすい', - 'マニュアルが超厚い', - '捨てても戻ってくる', - ].map { |e| (is_single ? '特徴B(デメリット):' : '') + e } - when 'L' - [ - '美しい', - '素朴な', - '風流な', - '斬新な', - '名状しがたき', - '命を刈り取る形をしている', - ].map { |e| (is_single ? '見た目:' : '') + e } - when 'T' - [ - '武器', - '防具', - 'アクセサリ', - '食料', - '薬品', - '乗り物', - ].map { |e| (is_single ? '発明品の種類:' : '') + e } - end[dice_result - 1] - end - - return "#{tableName}([#{number.join(',')}]):#{result.join(' ')}" - end - - # アキバの街で遭遇するトラブルランダム決定表 - def getTroubleInAkibaStreetDiceCommandResult(command) - return nil unless command === "TIAS" - - tableName = "アキバの街で遭遇するトラブル" - - number = [] - result = [] - - [ - [ - '〈記録の地平線〉が', - '〈三日月同盟〉が', - '〈D.D.D〉が', - '〈黒剣騎士団〉が', - '〈西風の旅団〉が', - '〈ロデリック商会〉が' - ], - [ - 'ギルド会館で', - 'くいだおれ横丁で', - '街の真ん中で', - '水楓の館で', - '公衆浴場で', - '下水道で' - ], - [ - '理不尽な', - 'ささやかな', - '甘い', - '不自然な', - '危険な', - '頭の悪い' - ], - [ - '喧嘩', - '恋愛沙汰', - 'いたずら', - '陰謀', - '事故', - '落し物' - ] - ].each do |table| - dice_result, dice_str = roll(1, 6) - number << dice_str - result << table[dice_result - 1] - end - - return "#{tableName}([#{number.join(',')}]):#{result.join(' ')}" - end - - # 廃棄児ランダム決定表 - def getAbandonedChildDiceCommandResult(command) - return nil unless command === "ABDC" - - tableName = "廃棄児" - - number = [] - result = [] - - [ - [ - '花の名前', - '星の名前', - '色の名前', - '石の名前', - '動物の名前', - '番号' - ].map { |e| '名前:' + e }, - [ - '廃ビル', - '道端', - '居候', - '木の上', - '公園', - '下水道' - ].map { |e| '住居:' + e }, - [ - '探し物', - '料理', - '歌', - '商売', - '手先が器用', - 'あざといポーズ' - ].map { |e| '特技:' + e }, - [ - '痩せている', - 'ちびっこ', - '発育良好', - '背が高い', - 'ぷにぷに', - 'ガチムチ' - ].map { |e| '体型:' + e }, - [ - '果物', - 'お肉', - 'お野菜', - 'お魚', - 'お菓子', - '虫' - ].map { |e| '好きな食べ物:' + e }, - [ - 'ぼく/わたし', - 'オイラ/アタシ', - '俺/私', - '拙者/わらわ', - '自分の名前', - 'ミー' - ].map { |e| '一人称:' + e } - ].each do |table| - dice_result, dice_str = roll(1, 6) - number << dice_str - result << table[dice_result - 1] - end - - return "#{tableName}([#{number.join(',')}]):#{result.join(' ')}" - end - - # 楽器種別表 - def getMusicalInstrumentTypeDiceCommandResult(command) - return nil unless /MII(\d?)/ === command - - type, is_roll = if Regexp.last_match(1) && Regexp.last_match(1) != '' - [Regexp.last_match(1).to_i, false] - else - roll(1, 6) - end - return nil if type < 1 || 6 < type - - tableName = "楽器種別表" - type_name = ['打楽器1', '鍵盤楽器', '弦楽器1', '弦楽器2', '管楽器1', '管楽器2'][type - 1] - - dice, = roll(1, 6) - result = [ - ['カスタネット', 'マラカス', 'シンバル', 'トライアングル', '太鼓', 'ドラム'], - ['木琴', '鉄琴', 'ハーモニウム', 'ハープシコード', 'ピアノ', 'クラヴィコード'], - ['ハープ', 'リュート', 'ギター', 'バイオリン', 'チェロ', 'リラ'], - ['琵琶', '和琴', '胡琴', '三味線', 'シタール', 'ダルシマー'], - ['トランペット', 'ホルン', 'トロンボーン', 'チューバ', 'フルート', 'クラリネット'], - ['リコーダー', 'オカリナ', 'オーボエ', 'ハーモニカ', 'アコーディオン', '尺八'] - ][type - 1][dice - 1] - - return tableName.to_s + (is_roll ? "(#{type})" : '') + ":#{type_name}(#{dice}):#{result}" - end - - # イースタル探索表 - def getEastalDiceCommandResult(command) - return nil unless (m = /ESTL(\d*)([\+\-\d]*)(\$(\d+))?/.match(command)) - - return command if m[1].empty? && m[2].empty? && m[3].nil? - - rank = m[1].to_i - is_choice = (m[1].empty? || !m[3].nil?) - modifyText = m[2] - modify = getValue(modifyText, 0) - is_fix_roll = !m[3].nil? - dice_value = m[4] - is_rank_enable = (!is_choice || is_fix_roll) - - tableName, table = getEastalExplorationResultTable - - number, dice_str, = - if is_choice - [dice_value.to_i, dice_value] - else - roll(2, 6) - end - - number += (rank * (is_rank_enable ? 5 : 0)) + modify - - number = [getAdjustNumberMin(number, table), 162].min - result = get_table_by_number(number, table) - result = result.chomp - - return "#{tableName}(#{number}#{dice_str ? '[' + dice_str + ']' : ''})\n#{result}" - end - - def getEastalExplorationResultTable - tableName = "イースタル探索表" - table = [ - [ 7, <=z) - xD6의 판정.크리티컬, 펌블의 자동 판정을 실시합니다. - x:x로 굴릴 주사위의 수를 입력합니다. - ±y:y로 수정치를 입력합니다. ±의 계산에 대응하며 생략이 가능합니다. - >=z:z로 목표값을 입력합니다. ±의 계산에 대응하며 생략이 가능합니다. - 예시) 3LH 2LH>=8 3LH+1>=10 -・소모표(tCTx±y$z) - PCT 체력/ECT 기력/GCT 물품/CCT 금전 - x:CR을 지정합니다. - ±y:수정치, +와 -의 계산에 대응하며 생략이 가능합니다. - $z:$를 붙이면 주사위 눈을 z고정합니다. 표의 특정 값 참조용으로 사용하며.생략 가능. - 例) PCT1 ECT2+1 GCT3-1 CCT3$5 -・재물표(tTRSx±y$) - CTRS 금전/MTRS 마법소재/ITRS 환전 아이템/※HTRS 히로인/GTRS 고블린 재보표 - x:CR을 지정합니다. 생략시에는 다이치 0고정으로 수정치의 표를 참조.《골드 핑거》사용 시 등. - ±y:수정치, +와 -의 계산에 대응하며 생략이 가능합니다. - $:$을 붙이면 재물표의 다이스를 7로 고정합니다.(1차 분량의 프라이즈 용도)생략이 가능합니다. - 예시) CTRS1 MTRS2+1 ITRS3-1 ITRS+27 CTRS3$ -・퍼스널리티 태그 표(PTAG) -・교우표(KOYU) -・이스탈 탐색표(ESTLx) x는 CR을 지정합니다. -・프리픽스드 매직아이템 효과 표(MGRx) x는 MG를 지정합니다. -†악기 종류 표(MIIx) x는 악기의 종류를 지정합니다.(1~6를 지정) 생략이 가능합니다. - 1 타악기1/2 건반악기/3 현악기1/4 현악기2/5 관악기1/6 관악기2 -☆특수 소모표(tSCTx±y$z) 소모표와 마찬가지로 지정합니다. 다만 CR은 생략이 가능합니다. - ESCT 로데릭 연구소는 폭발했다!/CSCT 알브의 저주다! -※공격 명중 장소 랜덤 결정표(HLOC) -※PC명 랜덤 결정표(PCNM) -※로데릭 연구소의 새로운 발명 랜덤 결정표(IATt) - IATA 특징A(장점)/IATB 특징B(단점)/IATL 외형/IATT 종류 - t를 생략할 경우 모두 표시합니다. t에 A/B/L/T를 임의의 순서로 연결 할 수 있습니다. - 例)IAT IATALT IATABBLT IATABL -※아키바 거리에서 발생하는 문제 랜덤결정 표(TIAS) -※버려진 아이 랜덤 결정 표(ABDC) -†표시와 ☆표시는「인투・더・셀덴시아 새로운 빌드의 날개짓(1)」에서、 -☆표시는 셀덴시아・가제트「D 되기는 할까? 66」Vol.1에서、 -※표시는「실록・칠면체공방 좌담회(여름의 장)」에서 참조했습니다. 이용법은 항목을 참조해주세요. -・D66다이스도 있습니다. - -・역자의 말 : 「실록・칠면체공방 좌담회(여름의 장)」은 한국에서 발매하지 않습니다. 참고해주세요. -・이니티움님, 광황님, CoC방 여러분 감사합니다. by호흡도의식하면귀찮아 -MESSAGETEXT - - setPrefixes(['\d+LH.*', 'PC.*', 'EC.*', 'GC.*', 'CC.*', 'CTR.*', 'MTR.*', 'ITR.*', 'HTR.*', 'GTR.*', 'PTAG', 'KOYU', 'MGR.', 'HLOC', 'PCNM', 'IAT.*', 'TIAS', 'ABDC', 'MII.*', 'ESCT.*', 'CSCT.*', 'ESTL.*']) - - def initialize - super - @d66Type = 1 - end - - def rollDiceCommand(command) - # get~DiceCommandResultという名前のメソッドを集めて実行、 - # 結果がnil以外の場合それを返して終了。 - return analyzeDiceCommandResultMethod(command) - end - - def getCheckRollDiceCommandResult(command) - return nil unless /(\d+)LH([\+\-\d]*)(>=([\+\-\d]*))?/i === command - - diceCount = Regexp.last_match(1).to_i - modifyText = (Regexp.last_match(2) || '') - difficultyText = Regexp.last_match(4) - - # 修正値の計算 - modify = getValue(modifyText, 0) - - # 目標値の計算 - difficulty = getValue(difficultyText, nil) - - # ダイスロール - dice, dice_str = roll(diceCount, 6) - diceList = dice_str.split(/,/).collect { |i| i.to_i }.sort - - total = dice + modify - - # 出力用ダイスコマンドを生成 - command = "#{diceCount}LH#{modifyText}" - command += ">=#{difficulty}" unless difficulty.nil? - - # 출력문 생성 - result = "(#{command}) > #{dice}[#{dice_str}]#{modifyText} > #{total}" - - # クリティカル・ファンブルチェック - if isCritical(diceList) - result += " > 크리티컬!" - elsif isFamble(diceList, diceCount) - result += " > 펌블!" - else - result += getJudgeResultString(difficulty, total) - end - - return result - end - - # 成否判定 - def getJudgeResultString(difficulty, total) - return '' if difficulty.nil? - - if total >= difficulty - return " > 성공" - else - return " > 실패" - end - end - - def getValue(text, defaultValue) - return defaultValue if text.nil? || text.empty? - - parren_killer("(0" + text + ")").to_i - end - - def isCritical(diceList) - (diceList.select { |i| i == 6 }.size >= 2) - end - - def isFamble(diceList, diceCount) - (diceList.select { |i| i == 1 }.size >= diceCount) - end - - # 消耗表 - def getConsumptionDiceCommandResult(command) - return nil unless /(P|E|G|C|ES|CS)CT(\d+)?([\+\-\d]*)(\$(\d+))?/ === command - - type = Regexp.last_match(1) - is_special = (Regexp.last_match(1) && Regexp.last_match(1).length > 1) - rank = Regexp.last_match(2) && Regexp.last_match(2) != '' ? Regexp.last_match(2).to_i : nil - return nil if !rank && !is_special - - rank ||= 0 - is_choice = !Regexp.last_match(4).nil? - dice_value = Regexp.last_match(5) - modifyText = Regexp.last_match(3) - modify = getValue(modifyText, 0) - - tableName = "" - tables = nil - - case type - when "P" - tableName, tables = getPhysicalConsumptionResultTables - when "E" - tableName, tables = getEnergyConsumptionResultTables - when "G" - tableName, tables = getGoodsConsumptionResultTables - when "C" - tableName, tables = getCashConsumptionResultTables - when "ES" - tableName, tables = getExplosionSpecialConsumptionResultTables - when "CS" - tableName, tables = getCurseSpecialConsumptionResultTables - else - return nil - end - - table = getTableByRank(rank, tables) - - number, dice_str = is_choice ? [dice_value.to_i, dice_value] : roll(1, 6) - number += modify - - adjustedNumber = getAdjustNumber(number, table) - - result = get_table_by_number(adjustedNumber, table) - - text = "#{tableName}(#{number}[#{dice_str}]):#{result}" - - return text - end - - def getPhysicalConsumptionResultTables() - tableName = "체력 소모표" - tables = [[ - [0, '소모없음'], - [1, '[피로:5]를 받는다'], - [2, '[피로:8]을 받는다'], - [3, '[피로:10]을 받는다'], - [4, '[피로:13]을 받는다'], - [5, '[피로:15]를 받는다'], - [6, '[피로:18]을 받는다'], - [7, '[피로:20]을 받는다'], - ], - [ - [0, '소모없음'], - [1, '[피로:10]을 받는다'], - [2, '[피로:15]를 받는다'], - [3, '[피로:20]을 받는다'], - [4, '[피로:25]를 받는다'], - [5, '[피로:30]을 받는다'], - [6, '[피로:35]를 받는다'], - [7, '[피로:40]을 받는다'], - ],] - - return tableName, tables - end - - def getEnergyConsumptionResultTables() - tableName = "기력 소모표" - tables = [[ - [0, '소모없음'], - [1, '【인과력】을 1점 잃는다'], - [2, '【인과력】을 1점 잃는다'], - [3, '【인과력】을 1점 잃는다'], - [4, '【인과력】을 1점 잃는다'], - [5, '【인과력】을 2점 잃는다'], - [6, '【인과력】을 2점 잃는다'], - [7, '【인과력】을 2점 잃는다'], - ], - [ - [0, '소모없음'], - [1, '【인과력】을 1점 잃는다'], - [2, '【인과력】을 1점 잃는다'], - [3, '【인과력】을 1점 잃는다'], - [4, '【인과력】을 2점 잃는다'], - [5, '【인과력】을 2점 잃는다'], - [6, '【인과력】을 2점 잃는다'], - [7, '【인과력】을 3점 잃는다'], - ],] - - return tableName, tables - end - - def getGoodsConsumptionResultTables() - tableName = "물품 소모표" - tables = [[ - [0, '소모없음'], - [1, '[소모품] 아이템을 1개 잃는다.'], - [2, '[소모품] 아이템을 1개 잃는다.'], - [3, '[소모품] 아이템을 1개 잃는다.'], - [4, '[소모품] 아이템을 2개 잃는다.'], - [5, '[소모품] 아이템을 2개 잃는다.'], - [6, '[소모품] 아이템을 2개 잃는다.'], - [7, '[소모품] 아이템을 2개 잃는다.'], - ], - [ - [0, '소모없음'], - [1, '[소모품] 아이템을 1개 잃는다.'], - [2, '[소모품] 아이템을 1개 잃는다.'], - [3, '[소모품] 아이템을 2개 잃는다.'], - [4, '[소모품] 아이템을 2개 잃는다.'], - [5, '[소모품] 아이템을 3개 잃는다.'], - [6, '[소모품] 아이템을 3개 잃는다.'], - [7, '[소모품] 아이템을 4개 잃는다.'], - ],] - - return tableName, tables - end - - def getCashConsumptionResultTables() - tableName = "금전 소모표" - tables = [[ - [0, '소모없음'], - [1, '소지금 10G 잃는다.'], - [2, '소지금 15G 잃는다.'], - [3, '소지금 20G 잃는다.'], - [4, '소지금 25G 잃는다.'], - [5, '소지금 30G 잃는다.'], - [6, '소지금 35G 잃는다.'], - [7, '소지금 40G 잃는다.'], - ], - [ - [0, '소모없음'], - [1, '소지금 25G 잃는다.'], - [2, '소지금 35G 잃는다.'], - [3, '소지금 50G 잃는다.'], - [4, '소지금 60G 잃는다.'], - [5, '소지금 75G 잃는다.'], - [6, '소지금 90G 잃는다.'], - [7, '소지금 100G 잃는다.'], - ],] - - return tableName, tables - end - - def getExplosionSpecialConsumptionResultTables - tableName = "특수 소모표 : 로데릭 연구소는 폭발했다!" - tables = [[ - [0, '……하지만 아무 일도 일어나지 않았다!: 효과 없음'], - [1, '당신의 머리카락이 폭발했다! 멋진 아프로 헤어다: 시나리오가 끝날 때까지 [머리] 태그를 가진 장비는 장비 불가'], - [2, '예술은 폭발이다: 소지하고 있는 아이템 중 랜덤으로 정한 하나가 예술품이 되어 [환전] 아이템이 된다.'], - [3, '반응 기폭 장갑: 방어구 슬롯에 장비하고 있는 아이템이 쵸밤 아머가 된다. 다음에 당신이 【HP】 대미지를 받았을 때, 그 대미지를 무효로 하고 이 아이템을 잃는다.'], - [4, '산양 슬라임이 폭발적으로 증식한다: [소지품] 슬롯을 모두 산양 슬라임([거래 불가], 가격50)으로 채운다.'], - [5, '당신의 리얼이 폭발한다: 커넥션 하나를 시나리오가 끝날 때까지 잃는다.'], - [6, '공장이 폭발한다: [소모품] 태그를 가진 아이템을 구입할 수 없게 된다.'], - [7, '보스 에너미가 폭발한다: 시나리오는 클라이맥스를 맞이하지 않고 종료된다. 수고하셨습니다.'], - ]] - return tableName, tables - end - - def getCurseSpecialConsumptionResultTables - tableName = "특수 소모표: 알브의 저주다!" - tables = [[ - [0, '「축복해주지!」 축복을 받는다: 당신의 【인과력】+1'], - [1, '공복의 저주: 즉시 식량 아이템 하나를 먹는다. 배가 고프니 엄청 맛있어!'], - [2, '무직의 저주: 서브 직업이 강제로〈니트〉로 변경된다.'], - [3, '종족 변경의 저주: 랜덤으로 다이스를 굴려 다른 종족으로 변한다. 종족특기를 사용할 수 없게 된다.'], - [4, '배리어 프리의 저주: [경감], [장벽]상태가 될 수 없게 된다.'], - [5, '집중력을 흐트리는 속삭임의 저주:자세가 무너져 [태세] 태그를 가진 특기를 사용할 수 없게 된다.'], - [6, '맹목의 저주: 당신이 소지한 커넥션 중 랜덤으로 선택한 관계 하나가 「열애」로 변한다.'], - [7, '의욕이 사라지는 저주: 아~ 진짜 의욕이 안 나네. 아무 것도 하기 싫어.【인과력】 사용 불가.'], - ]] - return tableName, tables - end - - def getTableByRank(rank, tables) - # index = (rank - 1) / 5 - index = ((rank - 1) / 5).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - - index = [0, index].max - index = [index, (tables.size - 1)].min - - return tables[index] - end - - def getAdjustNumber(number, table) - number = getAdjustNumberMin(number, table) - number = getAdjustNumberMax(number, table) - return number - end - - # 최소치의 조정(값이 너무 작은경우 표의 최소) - def getAdjustNumberMin(number, table) - value = getTableMinimum(table) - return [number, value].max - end - - def getTableMinimum(table) - table.first.first - end - - # 최대치의 조정(값이 너무 큰 경우 표의 최대) - def getAdjustNumberMax(number, table) - value = table.last.first - return [number, value].min - end - - # 재보표 - def getTresureDiceCommandResult(command) - return nil unless (m = /(C|M|I|H|G)TRS(\d*)([\+\-\d]*)(\$)?/.match(command)) - - type = m[1] - rank = m[2].to_i - is_choice = (m[2].empty? || !m[4].nil?) - modifyText = m[3] - modify = getValue(modifyText, 0) - is_prize = (m[4] == "$") - dice_value = nil - dice_value = '7' if is_prize - is_rank_enable = (!is_choice || is_prize) - - tableName, table = - case type - when "C" - getCashTresureResultTable - when "M" - getMagicTresureResultTable - when "I" - getItemTresureResultTable - when "H" - getHeroineTresureResultTable - when "G" - getGoblinTresureResultTable - end - - return nil if table.nil? - - number, dice_str, = - if is_choice - [dice_value.to_i, dice_value] - else - roll(2, 6) - end - - number += (rank * (is_rank_enable ? 5 : 0)) + modify - - return command if is_choice && (number < getTableMinimum(table)) - - number = [getAdjustNumberMin(number, table), 87].min - - result = - if type == "H" - getHiroineTresureResultString(table, number) - else - getOtherTresureResultString(table, number) - end - - return "#{tableName}(#{number}#{dice_str ? '[' + dice_str + ']' : ''}):#{result}" - end - - def getHiroineTresureResultString(table, number) - table_max_number = table.map { |e| e.first }.max - - result = - if number <= table_max_number - get_table_by_number(number, table) - else - "※ #{table_max_number + 1}이후는 미정입니다 ※" - end - - return result - end - - def getOtherTresureResultString(table, number) - result = - case number - when 63..72 - get_table_by_number(number - 10, table) + '&80G' - when 73..82 - get_table_by_number(number - 20, table) + '&160G' - when 83..87 - get_table_by_number(number - 30, table) + '&260G' - else - get_table_by_number(number, table) - end - - return result - end - - def getCashTresureResultTable - tableName = "금전 재보표" - table = [ - [ 7, '39G'], - [ 8, '40G'], - [ 9, '42G'], - [10, '43G'], - [11, '45G'], - [12, '46G'], - [13, '48G'], - [14, '50G'], - [15, '52G'], - [16, '54G'], - [17, '57G'], - [18, '59G'], - [19, '61G'], - [20, '64G'], - [21, '67G'], - [22, '70G'], - [23, '72G'], - [24, '75G'], - [25, '79G'], - [26, '82G'], - [27, '85G'], - [28, '89G'], - [29, '92G'], - [30, '96G'], - [31, '100G'], - [32, '104G'], - [33, '108G'], - [34, '112G'], - [35, '117G'], - [36, '121G'], - [37, '126G'], - [38, '130G'], - [39, '135G'], - [40, '140G'], - [41, '145G'], - [42, '150G'], - [43, '155G'], - [44, '161G'], - [45, '166G'], - [46, '172G'], - [47, '178G'], - [48, '183G'], - [49, '189G'], - [50, '195G'], - [51, '201G'], - [52, '208G'], - [53, '214G'], - [54, '221G'], - [55, '227G'], - [56, '234G'], - [57, '241G'], - [58, '248G'], - [59, '255G'], - [60, '262G'], - [61, '269G'], - [62, '277G'], - ] - - return tableName, table - end - - def getMagicTresureResultTable - tableName = "마법소재 재물표" - table = [ - [ 7, '마촉매2[마촉매2](20G)x2'], - [ 8, '마촉매2[마촉매2](20G)x2'], - [ 9, '마촉매1[마촉매1](15G)x3'], - [10, '마촉매1[마촉매1](15G)x3'], - [11, '마촉매1[마촉매1](15G)x3'], - [12, '코발트조각[코어소재](30G)&광석 샘플[환전](15G)'], - [13, '신록의 떡잎[코어소재](30G)&조그만 꽃씨[환전](20G)'], - [14, '생명의 잎[코어소재](40G)&강인한 넝쿨[환전](10G)'], - [15, '날카로운 송곳니[코어소재](40G)&잘 길든 나이프[환전](10G)'], - [16, '마촉매3[마촉매3](25G)x2'], - [17, '오래된 해골[코어소재](40G)&검은 시집[환전](15G)'], - [18, '흑수련꽃잎[코어소재](40G)&물곰방대[환전](20G)'], - [19, '순백색깃털[코어소재](40G)&조그만 고글[환전](20G)'], - [20, '진홍색 발톱[코어소재](50G)&조그만 거울[환전](15G)'], - [21, '적열의 작은 발톱[코어소재](50G)&세공 화로[환전](20G)'], - [22, '자성의 작은덩쿨[코어소재](50G)&그을린 용가죽[환전](20G)'], - [23, '유성 조각[코어소재](50G)&소박한 반지[환전](10G)x2'], - [24, '성스러운 섬유[코어소재](50G)&흠짓 난 메달[환전](25G)'], - [25, '부러진 축[코어소재](60G)&잡동산이 무더기[환전](5G)x4'], - [26, '거인의 머리카락[코어소재](50G)&조그만 빗[환전](20G)'], - [27, '정밀한 톱니바퀴[코어소재](60G)&공구강 파편[환전](25G)'], - [28, '뾰족한 발톱[코어소재](60G)&자수 장식띠[환전](30G)'], - [29, '촉매 플라스크[코어소재](60G)&작은 초상화[환전](30G)'], - [30, '액화마정[코어소재](60G)&정밀한 인형[환전](35G)'], - [31, '마촉매5[코어소재](40G)&마촉매4[마촉매4](30G)x2'], - [32, '부드러운 돌[코어소재](80G)&소형증류기[환전](20G)'], - [33, '수수께끼의 모피[코어소재](80G)&기묘한 두개골[환전](30G)'], - [34, '별똥별 은사[코어소재](80G)&주석 도금 별자리판[환전](30G)'], - [35, '마촉매5[마촉매5](40G)x3'], - [36, '소형연성진[코어소재](100G)&기괴한 오브제[환전](20G)'], - [37, '마촉매6[마촉매6](50G)&마촉매5[마촉매5](40G)x2'], - [38, '주문의 씨앗[코어소재](100G)&부서진 보석[환전](30G)'], - [39, '은제원반[코어소재](100G)&순백색 코사주[환전](30G)'], - [40, '잠자는 씨앗[코어소재](100G)&정원사의 장식끈[환전](40G)'], - [41, '물엿색 점액[코어소재](1210G)&극채색 입자[환전](5G)x5'], - [42, '마촉매6[마촉매6](50G)x3'], - [43, '납색갑각[코어소재](120G)&향긋한 꽃봉오리[환전](10G)x4'], - [44, '마촉매7[마촉매7](60G)&마촉매6[마촉매6](50G)x2'], - [45, '커다란 마력결정[코어소재](120G)&요정의 낙서[환전](40G)'], - [46, '권사의 백(魄)조각[코어소재](140G)&백지 두루마리[환전](40G)'], - [47, '마촉매7[마촉매7](60G)x3'], - [48, '푸른광석[코어소재](140G)&천연 유리덩어리[환전](25G)x2'], - [49, '거대한 날개깃[코어소재](140G)&두꺼운 알껍질[환전](50G)'], - [50, '마촉매8[마촉매8](70G)x2&마촉매7[마촉매7](60G)'], - [51, '끊임 없는 불씨[코어소재](180G)&漆黒のスス[환전](20G)'], - [52, '마촉매8[마촉매8](70G)x3'], - [53, '마도 정제[코어소재](180G)&つくりかけの錠前[환전](10G)x3'], - [54, '일곱색깔 투명나사[코어소재](180G)&열리지 않는 세공상자[환전](40G)'], - [55, '편속성 마법결정[코어소재](220G)&보고서 다발[환전](10G)'], - [56, '마촉매9[마촉매9](90G)&마촉매8[마촉매8](70G)x2'], - [57, '마촉매9[마촉매9](90G)&마촉매8[마촉매8](70G)x2'], - [58, '화려한 깃털장식[코어소재](220G)&공상동물 도감[환전](30G)'], - [59, '모래장미[코어소재](220G)&바늘 같은 수정[환전](10G)x5'], - [60, '마촉매9[마촉매9](90G)x3'], - [61, '튼튼한 위장[코어소재](220G)&기묘한 표본[환전](50G)'], - [62, '마촉매10[마촉매10](110G)&마촉매9[마촉매9](90G)x2'], - ] - - return tableName, table - end - - def getItemTresureResultTable - tableName = "환전아이템 재물표" - table = [ - [ 7, '그림이 들어간 머그컵[환전](40G)'], - [ 8, '목재 기사상[환전](40G)'], - [ 9, '조그만 풍경화[환전](50G)'], - [10, '기묘한 초상화[환전](50G)'], - [11, '무도회 가면[환전](50G)'], - [12, '주석 식기 세트[환전](50G)'], - [13, '낡은 시집[환전](50G)'], - [14, '화려한 자수 손수건[환전](50G)'], - [15, '큰 도자기 접시[환전](60G)'], - [16, '그림 두루마리[환전](60G)'], - [17, '도자기 수반[환전](60G)'], - [18, '세공 귀걸이[환전](60G)'], - [19, '숙녀의 초상화[환전](70G)'], - [20, '조그만 보석상자[환전](70G)'], - [21, '놋쇠 촛대[환전](70G)'], - [22, '귀족의 오래된 일기[환전](70G)'], - [23, '기사의 초상화[환전](80G)'], - [24, '옷칠 나막신[환전](80G)'], - [25, '정밀한 게임 보드[환전](80G)'], - [26, '정밀한 정물화[환전](90G)'], - [27, '떡갈나무 의자[환전](90G)'], - [28, '오래된 비스크 돌(러시아인형)[환전](90G)'], - [29, '현란한 가면[환전](100G)'], - [30, '토끼 봉제인형[환전](100G)'], - [31, '놋쇠 몬스터상[환전](100G)'], - [32, '지방 역사서[환전](110G)'], - [33, '무도회 장갑[환전](110G)'], - [34, '하이힐[환전](120G)'], - [35, '동화책[환전](120G)'], - [36, '소녀의 초상화[환전](130G)'], - [37, '작은 목각인형[환전](130G)'], - [38, '등나무 의자[환전](130G)'], - [39, '개와 고양이 꼭두각시 인형[환전](140G)'], - [40, '족자[환전](G140)'], - [41, '곰 봉제인형[환전](150G)'], - [42, '고양이 변장탈[환전](150G)'], - [43, '학술서[환전](160G)'], - [44, '매 박제[환전](170G)'], - [45, '대리석 현자상[환전](170G)'], - [46, '자수가 들어간 쿠션[환전](180G)'], - [47, '개 변장 탈[환전](180G)'], - [48, '대형 떡갈나무 테이블[환전](190G)'], - [49, '조각 반지[환전](190G)'], - [50, '화조화 족자[환전](200G)'], - [51, '최상급 모피[환전](210G)'], - [52, '질 좋은 백분[환전](210G)'], - [53, '자기 찻잔[환전](220G)'], - [54, '간소한 티아라[환전](230G)'], - [55, '조각 귀걸이[환전](230G)'], - [56, '화려한 목걸이[환전](240G)'], - [57, '질 좋은 향수[환전](250G)'], - [58, '산수화 족자[환전](250G)'], - [59, '섬세한 드레스/예복[환전](260G)'], - [60, '도자기 그림접시[환전](270G)'], - [61, '여우 봉제인형[환전](270G)'], - [62, '오래된 역사서[환전](280G)'], - ] - - return tableName, table - end - - def getHeroineTresureResultTable - tableName = "히로인 재보표" - table = [ - [ 7, '쓰러져 있는 초라한 말라깽이의 유녀'], # 라스트오더 - [ 8, '돈을 밝히는 경단머리인 차이나 아가씨'], - [ 9, '응석부리고고 캐미솔을 어깨에 한 스웨터의 요술사'], - [10, '작은 등으로 모두를 지키는 장면의 청바지를 입은 무투가'], - [11, '오징어 모자를 쓴 도짓코 침략자'], # 이카무스메 - [12, '지나치게 긍정적인 자칭 명탐정씨'], - [13, '중요한 곳에서 실수하는 부스스한 포니테일의 클레릭'], - [14, '계란밥 좋아하는 빈유의 칸나기'], - [15, '보석을 너무 좋아하는 억척스런 큰 리본의 이도류 세검사'], - [16, '오크에게서 간신히 도망쳐온 검의 처녀'], # 큿 코로 - [17, '당신을 맹목적으로 찬미하는 자칭 여동생'], - [18, '어필을 하지만 인식되지 않는 칸나기'], # 금서목록 히메가미아이사 - [19, '밝고 긍정적인 분홍색 리본의 소녀'], # 카나메 마도카(?) - [20, '마법을 사용할수 없는 가슴이 작은게 컴플렉스인 마녀'], # 루이즈 - [21, '식욕에 일체 주저함이 없는 포동포동한 가슴의 아이돌'], # 미무라 카나코 - [22, '눈물점이 매혹의 저주인 누님계의 스워시버클러 '], # FATE 시리즈 랜서(4차)TS?!?! - [23, '집착심이 강한 젊게 차려입은 노처녀 신화생무'], # 알퀘이드 - [24, '시가를 사랑하는 헤이안 히키코모리 공주'], # NEET히메 - [25, '병약하지만 프라이드있는 몰락귀족 아가씨'], - [26, '활기가득! 왜소한 낭아족 야생 소녀'], # 원령공주 산 - [27, '빚더미에 올라 골판지 상자에서 사는 리코핀(로그호라 엑스트라 캐릭터)'], # 로그호라이즌 리코핀 - [28, '귀국자녀인 무녀복 스타일의 마포소녀에YO!'], # 콩고 - [29, '붙어 왔다갔다 하기만 할 수 있는 좀비 아가씨'], # 유클리우드 헬사이즈 - [30, '꿈에 한결같은 녹색머리 초시공 아이돌 후보생'], # 란카 리 - [31, '바로 발이 올라가는 뾰족한 이빨의 불량소녀'], - [32, '지치지 않는 방패'], - [33, '외환거래에 가진 돈을 전부 잃어 공허한 선배'], # 아이마이미의 포노카선배 - [34, '팔뚝이 말랑말랑하지만 가계부를 쓰는 마왕'], # 마오유우 마왕 - [35, '그 가슴 실로 풍만하였다는 기억상실의 여자 닌자'], # 닌자 슬레이어 유카노 - [36, '잘 옷자락을 붙잡는 양갈래 땋은 머리의 빵집 소녀'], - [37, '「더럽다는건 칭찬이다!」라는 주관의 여자 암살자'], # 파이널 판타지 11 - [38, '단추가 터질것 같고 울상인 길드 창구의 간판아가씨'], - [39, '뭐든지 오컬트에 아수라장이 되는 소녀'], - [40, '전투 때마다 많이 먹어지게 되는게 고민인 궁술소녀'], - [41, '사소한 것에 바로 얽메이게 되는 금발소녀'], - [42, '함께 돌아가는 것을 부끄럽게 생각하는 핑크머리 소꿉친구'], - [43, '배가 안좋아서 화장실에 상주하게 되는 엘프소녀'], - [44, '응시하면 얼굴이 빨개지는 앞머리 법의족 소녀'], - [45, '바로 파밧하고 겁먹는 소동물계 소녀'], - [46, '키가 크고 신사적인 여성 극단의 왕자님역의 기사녀'], - [47, '올곧은 성격의 근육이 있는 드워프 여자'], - [48, '항상 꿈에서 당신을 보는 포니테일의 소녀'], - [49, '선진선구, 심야에서 새벽까지 달리는 잠꾸러기 언니인 사무라이'], - [50, '뭐든지 깊이 파고들려 하는 방랑자 로리BBA'], - [51, '항상 밝은 남국의 갈색피부 소녀'], - [52, '당신의 첫사랑과 닮은 그녀'], - ] - - return tableName, table - end - - def getGoblinTresureResultTable - tableName = "고블린 재물표" - table = [ - [ 7, '라이트메이스'], - [ 8, '백과사전'], - [ 9, '42G'], - [10, '오래된 해골[코어소재](40G)'], - [11, '가속의 두루마리(초급)'], - [12, '46G'], - [13, '48G'], - [14, '50G'], - [15, '유리구슬[환전](60G)'], - [16, '피로 얼룩진 칼[코어소재](50G)'], - [17, '찌그러진 금접시[환전](60G)'], - [18, '59G'], - [19, '모피로 된 깔개[환전](60G)'], - [20, '뾰족한 발톱[코어소재](60G)'], - [21, '67G'], - [22, '흠집투성이의 상아상[환전](70G)'], - [23, '72G'], - [24, '라이트 랜스[파손]'], - [25, '골제 목걸이[환전](80G)'], - [26, '사금이 섞인 돌[환전](80G)'], - [27, '85G'], - [28, '향나무 파편[환전](90G)'], - [29, '기묘한 가면[환전](90G)'], - [30, '96G'], - [31, '시미터'], - [32, '우든 라운드'], - [33, '바람 소리의 방울[코어소재](80G)&철제 전립[코어소재](30G)'], - [34, '112G'], - [35, '산양슬라임(라지사이즈)[환전](120G)'], - [36, '121G'], - [37, '고급 노송나무[환전](125G)'], - [38, '130G'], - [39, '크리스탈제 체스말[환전](135G)'], - [40, '140G'], - [41, '텐트(캠핑용)'], - [42, '이상한 환약[코어소재](30G)×2&100G'], - [43, '수수께끼의 모피[코어소재](80G)&원한의 고리[코어소재](80G)'], - [44, '의식용 뼈 검[환전](160G)'], - [45, '낡은 동전[환전](165G)'], - [46, '낭아봉'], - [47, '법리회로[코어소재](60G)&120G'], - [48, '커다란 마력회로[코어소재](120G)&60G'], - [49, '189G'], - [50, '고급 통술[환전](200G)'], - [51, '201G'], - [52, '백색 반지'], - [53, '비취 목걸이[환전](210G)'], - [54, '황금 고블린상[환전](220G)'], - [55, '샤벨'], - [56, '진철 검신[코어소재](120G)&120G'], - [57, '지저분한청자[환전](240G)'], - [58, '톤스톤의 모듬 꼬치구이×2'], - [59, '고블린 왕의 훈장[환전](255G)'], - [60, '실눈뜨기의 두루마리(중급)×2'], - [61, '269G'], - [62, '백랑의 모피[환전](280G)'], - ] - - return tableName, table - end - - # パーソナリティタグ表 - def getPersonalityTagDiceCommandResult(command) - return nil unless "PTAG" === command - - tableName = "퍼스널리티 태그" - table = [ - '[조숙]', - '[호기심왕성]', - '[외로움쟁이]', - '[지극성실]', - '[먹보]', - '[개구쟁이]또는[말괄량이]', - - '[사람좋음]', - '[정열]', - '[남챙겨주기]', - '[이지적]', - '[벽창호]', - '[형님 기질]또는[누님 기질]', - - '[의리투철]', - '[변덕쟁이]', - '[장인기질]', - '[열혈한]', - '[노력가]', - '[남자밝힘]또는[여자밝힘]', - - '[가정적]', - '[호승심]', - '[순진]', - '[무뚝뚝이]', - '[자비로움]', - '[마이페이스]', - - '[낙천가]', - '[동료애]', - '[자긍심]', - '[사교적]', - '[냉정침착]', - '[로맨티스트]', - - '[학구적]', - '[내향적]', - '[사서고생]', - '[허영심]', - '[용맹과감]', - '[미스테리어스]', - ] - - result, number = get_table_by_d66(table) - - text = "#{tableName}(#{number}):#{result}" - return text - end - - # 交友表 - def getFriendlyChartDiceCommandResult(command) - return nil unless "KOYU" === command - - tableName = "교우표" - table = [ - "교우대상에 대한 보호\n당신은 교우대상을 보호하고 싶다. 당신에게는 지켜줄수 있는 강함이 있다.", - "교우대상에 대한 친애\n당신은 교우대상에게 호감을 가지고 있다. 그 마음을 상대에게 전했을지 아닐지는 임의. ", - "교우대상에 대한 의형제\n당신은 교우대상과 형제나 다름없는 사이다. 물론 피는 이어지지 않았지만 그런것은 사소한 일이다.", - "교우대상의 영웅\n당신은 교우대상에게서 영웅시되고 있다. 설령 당신이 부정하더라도 상관 없다.", - "교우대상에 대한 존경\n당신은 교우대상을 존경한다. 그의 기술, 강인한 마음. 그것이 무엇이든 그에대한 경의는 변함이 없다.", - "교우대상의 파트너\n당신은 교우대상을 파트너라고 생각한다. 그라면 자신과 함께 가 줄 것이다.", - - "교우대상에 대한 보호\n당신은 교우대상을 보호하고 싶다. 당신에게는 지켜줄수 있는 강함이 있다.", - "교우대상에 대한 친애\n당신은 교우대상에게 호감을 가지고 있다. 그 마음을 상대에게 전했을지 아닐지는 임의. ", - "교우대상에 대한 의형제\n당신은 교우대상과 형제나 다름없는 사이다. 물론 피는 이어지지 않았지만 그런것은 사소한 일이다.", - "교우대상의 영웅\n당신은 교우대상에게서 영웅시되고 있다. 설령 당신이 부정하더라도 상관 없다.", - "교우대상에 대한 존경\n당신은 교우대상을 존경한다. 그의 기술, 강인한 마음. 그것이 무엇이든 그에대한 경의는 변함이 없다.", - "교우대상의 파트너\n당신은 교우대상을 파트너라고 생각한다. 그라면 자신과 함께 가 줄 것이다.", - - "교우대상의 은혜\n당신은 교우대상에게 큰 은혜를 입었다.", - "교우대상의 라이벌\n당신은 교우대상을 라이벌이라고 생각한다. 이는 일반적인 감정일 수도 있고, 서로 절차탁마 하는 관계일 수도 있다.", - "교우대상에 대한 흥미\n당신은 교우대상에게 흥미를 품고 있다. 그를 보는것이 재미있어서 그의 행동을 지켜보고 싶다.", - "교우대상에 대한 우정\n당신은 교우대상을 벗이라고 생각한다. 언제 어디서나 그 마음은 변하지 않을 것이다.", - "교우대상의 동지\n당신은 교우대상과 뜻을 함께 한다. 언제나 어디서나 그 마음은 변하지 않을 것이다.", - "교우대상에 대한 이해\n당신은 교우대상을 이해하고 싶다. 그는 당신과는 다른 새로운 관점을 보여준다.", - - "교우대상의 은혜\n당신은 교우대상에게 큰 은혜를 입었다.", - "교우대상의 라이벌\n당신은 교우대상을 라이벌이라고 생각한다. 이는 일반적인 감정일 수도 있고, 서로 절차탁마 하는 관계일 수도 있다.", - "교우대상에 대한 흥미\n당신은 교우대상에게 흥미를 품고 있다. 그를 보는것이 재미있어서 그의 행동을 지켜보고 싶다.", - "교우대상에 대한 우정\n당신은 교우대상을 벗이라고 생각한다. 언제 어디서나 그 마음은 변하지 않을 것이다.", - "교우대상의 동지\n당신은 교우대상과 뜻을 함께 한다. 언제나 어디서나 그 마음은 변하지 않을 것이다.", - "교우대상에 대한 이해\n당신은 교우대상을 이해하고 싶다. 그는 당신과는 다른 새로운 관점을 보여준다.", - - "교우대상에 대한 진력\n당신은 교우대상을 힘껏 돕고 싶다. 그것은 그의 인품 때문일 수도, 당신의 집착 때문일 수도 있다.", - "교우대상과의 사제관계\n당신은 교우대상과 사제관계를 맺었다. 어느쪽이라도 상관은 없지만 많은 것을 가르치거나 배울 수 있을 것이다.", - "교우대상과의 고용관계\n당신은 교우대상과 고용관계에 있다. 당신과 그는 ", - "교우대상의 이웃\n당신은 교우대상의 이웃이다. 매일 아침 인사를 나누는 정도일 수도 있고, 함께 저녁을 먹는 사이일 수도 있다.", - "교우대상과의 거래\n당신은 교우대상과 장사를 한다. 서로에게 이익이 있는 좋은 거래를 할 수 있는 상대다.", - "교우대상의 가족\n당신은 교우대상과 함께 살고 있다. 같은집에 누군가 있으면 쓸쓸하지 않을 것이다.", - - "교우대상에 대한 진력\n당신은 교우대상을 힘껏 돕고 싶다. 그것은 그의 인품 때문일 수도, 당신의 집착 때문일 수도 있다.", - "교우대상과의 사제관계\n당신은 교우대상과 사제관계를 맺었다. 어느쪽이라도 상관은 없지만 많은 것을 가르치거나 배울 수 있을 것이다.", - "교우대상과의 고용관계\n당신은 교우대상과 고용관계에 있다. 당신과 그는 ", - "교우대상의 이웃\n당신은 교우대상의 이웃이다. 매일 아침 인사를 나누는 정도일 수도 있고, 함께 저녁을 먹는 사이일 수도 있다.", - "교우대상과의 거래\n당신은 교우대상과 장사를 한다. 서로에게 이익이 있는 좋은 거래를 할 수 있는 상대다.", - "교우대상의 가족\n당신은 교우대상과 함께 살고 있다. 같은집에 누군가 있으면 쓸쓸하지 않을 것이다.", - ] - - result, number = get_table_by_d66(table) - - text = "#{tableName}([#{number}]) > #{result}" - return text - end - - # プレフィックスドマジックアイテム表 - def getPrefixedMagickItemDiceCommandResult(command) - return nil unless /MGR([1-3])/ === command - - rank = Regexp.last_match(1).to_i - - table_1 = [ - "접두어:기합의 해당태그:모든 무기\n아이템 효과:이 무기의【공격력】에 +1한다.", - "접두어:비술의 해당태그:[지팡이][마석]\n아이 템효과:이 아이템의【마력】에 +1한다.", - "접두어:일격의 해당태그:[백병공격]가능한 무기\n아이템 효과:〔기동:대미지굴림〕이 무기에 의한 [백병공격]의 대미지 굴림에 +7. 시나리오 당 1회 사용 가능.", - "접두어:저격의 해당태그:[활][투척]\n아이템 효과:〔기동:행동〕이 무기에 의한 [사격공격]과 동시에 사용한다. 공격의 사정거리에 +2Sq. 시나리오당 1회사용가능", - "접두어:필살의 해당태그:모든 무기\n아이템 효과:〔기동:판정 직후〕이 무기에 의한[무기공격]의 [명중판정] 다이스에 6이 하나 이상 있다면 판정을 크리티컬로 간주한다. 시나리오당 1회 사용 가능.", - "접두어:화염의 해당태그:모든 무기, [악기]\n아이템 효과:아이템에 [화염]태그를 추가한다.(이 효과를 선택할 때 태그를[냉기][전격][광휘][사독][정신] 중 하나로 바뀌어도 좋다. 그 경우「냉기의」「전격의」와 같이 변경할 것)", - - "접두어:기합의 해당태그:모든 무기\n아이템 효과:이 무기의【공격력】에 +1한다.", - "접두어:비술의 해당태그:[지팡이][마석]\n아이 템효과:이 아이템의【마력】에 +1한다.", - "접두어:일격의 해당태그:[백병공격]가능한 무기\n아이템 효과:〔기동:대미지굴림〕이 무기에 의한 [백병공격]의 대미지 굴림에 +7. 시나리오 당 1회 사용 가능.", - "접두어:저격의 해당태그:[활][투척]\n아이템 효과:〔기동:행동〕이 무기에 의한 [사격공격]과 동시에 사용한다. 공격의 사정거리에 +2Sq. 시나리오당 1회사용가능", - "접두어:필살의 해당태그:모든 무기\n아이템 효과:〔기동:판정 직후〕이 무기에 의한[무기공격]의 [명중판정] 다이스에 6이 하나 이상 있다면 판정을 크리티컬로 간주한다. 시나리오당 1회 사용 가능.", - "접두어:화염의 해당태그:모든 무기, [악기]\n아이템 효과:아이템에 [화염]태그를 추가한다.(이 효과를 선택할 때 태그를[냉기][전격][광휘][사독][정신] 중 하나로 바뀌어도 좋다. 그 경우「냉기의」「전격의」와 같이 변경할 것)", - - "접두어:화염술사의 해당태그:[지팡이][마석][다리]\n아이템 효과:〔기동:대미지 굴림〕당신이 행할 [화염]태그를 가진 대미지굴림에 +7, 시나리오당 1회 사용가능 (이 효과를 선택할 때에는 태그를 [냉기], [전격], [광휘], [사독], [정신] 중 하나로 바꾸어도 좋다. 그 경우 접두어도 [빙술사의], [뇌술사의]와 같이 플레이 할것)", - "접두어:철신의 해당태그:[방패][중갑][경갑]\n아이템 효과:당신은 장면이 시작될 때[경감(지근거리부터의 공격) :3]을 얻는다.", - "접두어:화살막이의 해당태그:[盾][中鎧][軽鎧]\n아이템 효과:당신은 장면이 시작될 때[경감(지근거리 이외로부터의 공격) :3]을 얻는다.", - "접두어:화염막이의 해당태그:[중갑][경갑][연갑]\n아이템 효과:당신은 장면 개시시에 [경감(화염):10]을 받는다.(이 효과를 선택할 때 경감할 태그를 [냉기], [전격], [사독], [광휘] [정신] 중 하나로 바꾸어도 좋다. 그 경우 접두어도「얼음막이의」,「벼락막이의」와 같이 변경할 것)", - "접두어:근성의 해당태그:[중갑][머리]\n아이템 효과:〔기동:본문〕당신이 BS를 입은 직후에 사용한다. 직전에 입은 BS에서 하나를 선택해 해제한다. 시나리오당 1회 사용 가능", - "접두어:치유의 해당태그:[팔]\n아이템 효과:당신의【회복력】에 +2한다.", - - "접두어:화염술사의 해당태그:[지팡이][마석][다리]\n아이템 효과:〔기동:대미지 굴림〕당신이 행할 [화염]태그를 가진 대미지굴림에 +7, 시나리오당 1회 사용가능 (이 효과를 선택할 때에는 태그를 [냉기], [전격], [광휘], [사독], [정신] 중 하나로 바꾸어도 좋다. 그 경우 접두어도 [빙술사의], [뇌술사의]와 같이 플레이 할것)", - "접두어:철신의 해당태그:[방패][중갑][경갑]\n아이템 효과:당신은 장면이 시작될 때[경감(지근거리부터의 공격) :3]을 얻는다.", - "접두어:화살막이의 해당태그:[盾][中鎧][軽鎧]\n아이템 효과:당신은 장면이 시작될 때[경감(지근거리 이외로부터의 공격) :3]을 얻는다.", - "접두어:화염막이의 해당태그:[중갑][경갑][연갑]\n아이템 효과:당신은 장면 개시시에 [경감(화염):10]을 받는다.(이 효과를 선택할 때 경감할 태그를 [냉기], [전격], [사독], [광휘] [정신] 중 하나로 바꾸어도 좋다. 그 경우 접두어도「얼음막이의」,「벼락막이의」와 같이 변경할 것)", - "접두어:근성의 해당태그:[중갑][머리]\n아이템 효과:〔기동:본문〕당신이 BS를 입은 직후에 사용한다. 직전에 입은 BS에서 하나를 선택해 해제한다. 시나리오당 1회 사용 가능", - "접두어:치유의 해당태그:[팔]\n아이템 효과:당신의【회복력】에 +2한다.", - - "접두어:모래쥐의 해당태그:[다리][외투]\n아이템 효과:〔기동:클린업〕당신의【헤이트】에 ー2한다. 시나리오당1회 사용가능.", - "접두어:올뺴미의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:인스턴트〕당신은 [암시]태그를 얻는다. 이 효과는 CS로 간주한다. 시나리오당 1회 사용가능.", - "접두어:곤들매기의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:인스턴트〕당신은 [수생]태그를 얻는다. 이 효과는 CS로 간주한다. 시나리오당 1회 사용가능.", - "접두어:눈썰미의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 드롭 아이템 굴림을 한 직후에 사용해 해당 굴림을 다시 굴린다. 시나리오당 1회 사용가능.", - "접두어:보물 찾기의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 재물표 굴림을 한 직후에 사용해 해당 굴림을 다시 굴린다.. 시나리오당 1회 사용가능.", - "접두어:돌변의 해당태그:[가방]\n아이템 효과:〔기동:인스턴트〕당신은 곧바로《장비 변경》을 한다. 시나리오당 1회 사용가능.", - - "접두어:모래쥐의 해당태그:[다리][외투]\n아이템 효과:〔기동:클린업〕당신의【헤이트】에 ー2한다. 시나리오당1회 사용가능.", - "접두어:올뺴미의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:인스턴트〕당신은 [암시]태그를 얻는다. 이 효과는 CS로 간주한다. 시나리오당 1회 사용가능.", - "접두어:곤들매기의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:인스턴트〕당신은 [수생]태그를 얻는다. 이 효과는 CS로 간주한다. 시나리오당 1회 사용가능.", - "접두어:눈썰미의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 드롭 아이템 굴림을 한 직후에 사용해 해당 굴림을 다시 굴린다. 시나리오당 1회 사용가능.", - "접두어:보물 찾기의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 재물표 굴림을 한 직후에 사용해 해당 굴림을 다시 굴린다.. 시나리오당 1회 사용가능.", - "접두어:돌변의 해당태그:[가방]\n아이템 효과:〔기동:인스턴트〕당신은 곧바로《장비 변경》을 한다. 시나리오당 1회 사용가능.", - ] - - table_2 = [ - "접두어:분노의 해당태그:[양손]무기\n아이템 효과:〔기동:대미지굴림〕이 무기에 의한 [무기공격]의 대미지 굴림에+[당신의【헤이트】]. 장면에 1회 사용가능.", - "접두어:연격의 해당태그:[한손]무기\n아이템 효과:〔기동:판정 직후〕이 무기에 의한 [무기공격]의 [명중판정]을 다시 굴린다. 장면에 1회 사용가능.", - "접두어:예리한 해당태그:[검][카타나][창]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D", - "접두어:치명타의 해당태그:[둔기/도끼][격투][채찍][지팡이]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D", - "접두어:마탄의 해당태그:[활][투척]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D", - "접두어:지력의 해당태그:모든무기, [마석][악기]\n아이템 효과:당신의 [마법공격], [특수공격]의 대미지 굴림에 +1D. 이 효과는 중첩되지 않는다.", - - "접두어:분노의 해당태그:[양손]무기\n아이템 효과:〔기동:대미지굴림〕이 무기에 의한 [무기공격]의 대미지 굴림에+[당신의【헤이트】]. 장면에 1회 사용가능.", - "접두어:연격의 해당태그:[한손]무기\n아이템 효과:〔기동:판정 직후〕이 무기에 의한 [무기공격]의 [명중판정]을 다시 굴린다. 장면에 1회 사용가능.", - "접두어:예리한 해당태그:[검][카타나][창]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D", - "접두어:치명타의 해당태그:[둔기/도끼][격투][채찍][지팡이]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D", - "접두어:마탄의 해당태그:[활][투척]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D", - "접두어:지력의 해당태그:모든무기, [마석][악기]\n아이템 효과:당신의 [마법공격], [특수공격]의 대미지 굴림에 +1D. 이 효과는 중첩되지 않는다.", - - "접두어:악귀퇴치의 해당태그:모든 무기\n아이템 효과:이 무기에 의한 [인간형]에 대한 [무기공격]의 대미지에 +10 (이효과를 선택할 때 태그를 [자연],[정령],[환수],[불사],[인조],[인간]중 하나로 바꾸어도 좋다. 그 경우 접두어도「정령퇴치의」 「환수퇴치의」와 같이 변경할 것)", - "접두어:견고한 해당태그:[중갑][경갑][연갑]\n아이템 효과:이 방어구의 【물리방어력】에 +4", - "접두어:항마의 해당태그:[중갑][경갑][연갑]\n아이템 효과:이 방어구의 【마법방어력】에 +4", - "접두어:방벽의 해당태그:[방패][머리]\n아이템 효과:당신은 장면이 시작될 때 [장벽:10]을 얻는다.", - "접두어:인내의 해당태그:[방패][머리]\n아이템 효과:〔기동:본문〕당신이 강제적인 이동을 받았을 때에 사용해 해당 거리를ー1Sq한다.", - "접두어:호법의 해당태그:[팔]\n아이템 효과:당신이 부여할 [장벽]의 강도에 +5.", - - "접두어:악귀퇴치의 해당태그:모든 무기\n아이템 효과:이 무기에 의한 [인간형]에 대한 [무기공격]의 대미지에 +10 (이효과를 선택할 때 태그를 [자연],[정령],[환수],[불사],[인조],[인간]중 하나로 바꾸어도 좋다. 그 경우 접두어도「정령퇴치의」 「환수퇴치의」와 같이 변경할 것)", - "접두어:견고한 해당태그:[중갑][경갑][연갑]\n아이템 효과:이 방어구의 【물리방어력】에 +4", - "접두어:항마의 해당태그:[중갑][경갑][연갑]\n아이템 효과:이 방어구의 【마법방어력】에 +4", - "접두어:방벽의 해당태그:[방패][머리]\n아이템 효과:당신은 장면이 시작될 때 [장벽:10]을 얻는다.", - "접두어:인내의 해당태그:[방패][머리]\n아이템 효과:〔기동:본문〕당신이 강제적인 이동을 받았을 때에 사용해 해당 거리를ー1Sq한다.", - "접두어:호법의 해당태그:[팔]\n아이템 효과:당신이 부여할 [장벽]의 강도에 +5.", - - "접두어:맥동하는 해당태그:[팔]\n아이템 효과:당신이 부여하는 [재생]의 강도에+3.", - "접두어:질주하는 해당태그:[다리][외투]\n아이템 효과:〔기동:행동〕당신이 《런》, 《대시》를 사용했을 때에 사용해 이동거리를 +1Sq 한다. ", - "접두어:신속의 해당태그:[다리][외투]\n아이템 효과:이 아이템의 [행동수정]에 +3.", - "접두어:역경의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 [전투불능]이 된 직후 사용할 수 있다.당신은 【인과력】1점 얻는다. 장면에 1회사용 가능", - "접두어:숲지름 해당태그:[보조장비][악기][가방]\n아이템 효과:당신이 장면을 시작 될 때 [경감([천연]프롭, 기믹에서 오는 데미지): 15]를 얻는다.(이 효과를 선택할 때 태그를[마법], [기계] 중 하나로 바꾸어도 좋다. 그 경우 접두어도 [지옥지름], [함정지름]과 같이 변경할 것)", - "접두어:여행자의 해당태그:[가방]\n아이템 효과:이 아이템에 [소지품 슬롯] 4개를 추가한다.", - - "접두어:맥동하는 해당태그:[팔]\n아이템 효과:당신이 부여하는 [재생]의 강도에+3.", - "접두어:질주하는 해당태그:[다리][외투]\n아이템 효과:〔기동:행동〕당신이 《런》, 《대시》를 사용했을 때에 사용해 이동거리를 +1Sq 한다. ", - "접두어:신속의 해당태그:[다리][외투]\n아이템 효과:이 아이템의 [행동수정]에 +3.", - "접두어:역경의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 [전투불능]이 된 직후 사용할 수 있다.당신은 【인과력】1점 얻는다. 장면에 1회사용 가능", - "접두어:숲지름 해당태그:[보조장비][악기][가방]\n아이템 효과:당신이 장면을 시작 될 때 [경감([천연]프롭, 기믹에서 오는 데미지): 15]를 얻는다.(이 효과를 선택할 때 태그를[마법], [기계] 중 하나로 바꾸어도 좋다. 그 경우 접두어도 [지옥지름], [함정지름]과 같이 변경할 것)", - "접두어:여행자의 해당태그:[가방]\n아이템 효과:이 아이템에 [소지품 슬롯] 4개를 추가한다.", - ] - - table_3 = [ - "접두어:기백의 해당태그:모든 무기\n아이템 효과:이 무기의【공격력】에 +3한다.", - "접두어:신비의 해당태그:[지팡이][마석]\n아이템 효과:이 무기의【마력】에 +3한다.", - "접두어:원격의 해당태그:[활][트착]\n아이템 효과:이 무기의 사정거리에 +1Sq한다.", - "접두어:흡혈의 해당태그:[백병공격]가능한 무기\n아이템 효과:이 무기에의한[백병공격]으로 데미지를 입혔을 때【HP】는5점 회복된다.", - "접두어:충격의 해당태그:[한손]무기\n아이템 효과:이 무기에 의한《기본무기공격》으로 데미지를 입혔을 때 공격 대상에게 [멍함]을 입힌다.", - "접두어:노호의 해당태그:[양손]무기\n아이템 효과:이 무기에 의한《기본무기공격》으로 데미지를 입혔을 때 공격 대상에게 [위축]을 입힌다.", - - "접두어:기백의 해당태그:모든 무기\n아이템 효과:이 무기의【공격력】에 +3한다.", - "접두어:신비의 해당태그:[지팡이][마석]\n아이템 효과:이 무기의【마력】에 +3한다.", - "접두어:원격의 해당태그:[활][트착]\n아이템 효과:이 무기의 사정거리에 +1Sq한다.", - "접두어:흡혈의 해당태그:[백병공격]가능한 무기\n아이템 효과:이 무기에의한[백병공격]으로 데미지를 입혔을 때【HP】는5점 회복된다.", - "접두어:충격의 해당태그:[한손]무기\n아이템 효과:이 무기에 의한《기본무기공격》으로 데미지를 입혔을 때 공격 대상에게 [멍함]을 입힌다.", - "접두어:노호의 해당태그:[양손]무기\n아이템 효과:이 무기에 의한《기본무기공격》으로 데미지를 입혔을 때 공격 대상에게 [위축]을 입힌다.", - - "접두어:갑주비늘 해당태그:[방패][중갑][경갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(지근거리로부터의 공격):10]을 얻는다.", - "접두어:화살반사 해당태그:[방패][경갑][연갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(지근거리 이외로부터의 공격) :10]을 얻는다.", - "접두어:내화의  해당태그:[중갑][경갑][연갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(화염) :25]를 얻는다. (이 효과를 선택할 때 경감할 태그를 [냉기], [전격], [사독], [광휘], [정신]중 하나로 바꾸어도 좋다. 이경우 접두어도「내빙의」「내전의」와 같이 변경했어)", - "접두어:성채의  해당태그:[방패][머리]\n아이템 효과:당신은 장면이 시작 될 때 【장벽:20】을 얻는다.", - "접두어:정찰의  해당태그:[머리]\n아이템 효과:당신이 행할[정찰]태그를 가진 행동 및《이상탐지》판정에+1D.", - "접두어:쾌유의  해당태그:[머리]\n아이템 효과:당신의【회복력】에+5.", - - "접두어:갑주비늘 해당태그:[방패][중갑][경갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(지근거리로부터의 공격:10]을 얻는다.", - "접두어:화살반사 해당태그:[방패][경갑][연갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(지근거리 이외로부터의 공격) :10]을 얻는다.", - "접두어:내화의  해당태그:[중갑][경갑][연갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(화염) :25]를 얻는다. (이 효과를 선택할 때 경감할 태그를 [냉기], [전격], [사독], [광휘], [정신]중 하나로 바꾸어도 좋다. 이경우 접두어도「내빙의」「내전의」와 같이 변경했어)", - "접두어:성채의  해당태그:[방패][머리]\n아이템 효과:당신은 장면이 시작 될 때 【장벽:20】을 얻는다.", - "접두어:정찰의  해당태그:[머리]\n아이템 효과:당신이 행할[정찰]태그를 가진 행동 및《이상탐지》판정에+1D.", - "접두어:쾌유의  해당태그:[머리]\n아이템 효과:당신의【회복력】에+5.", - - "접두어:함정해제의 해당태그:[팔]\n아이템 효과:〔기동:판정 직전〕당신이 《프롭 해제》를 행할 때 사용하며그 판정은 크리티컬이 된다. 장면에1회 사용 가능", - "접두어:부동의  해당태그:[다리][외투]\n아이템 효과:당신은 [멍함],[경직]상태가 되어도 [저지능력]을 잃지 않는다.", - "접두어:그림자질주 해당태그:[다리][외투]\n아이템 효과:당신이 [은밀상태]일 때《런》을 해도 [은밀상태]는 해제되지 않는다.", - "접두어:심해의  해당태그:[보조장비][악기][가방]\n아이템 효과: 당신은 [암시],[수생]태그를 얻는다.", - "접두어:금전운의  해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 재물표 굴림 또는 드롭 아이템 굴림을 한 직후에 사용하며 해당 굴림을 다시 굴린다. 장면에1회 사용할 수 있다.", - "접두어:함정회피의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:데미지 적용 직전〕당신에게 적용될 예정인 프롭 및[기믹]에 의한 데미지를 무효로 할 수 있다. 시나리오당1회 사용할 수 있다.", - - "접두어:함정해제의 해당태그:[팔]\n아이템 효과:〔기동:판정 직전〕당신이 《프롭 해제》를 행할 때 사용하며그 판정은 크리티컬이 된다. 장면에1회 사용 가능", - "접두어:부동의  해당태그:[다리][외투]\n아이템 효과:당신은 [멍함],[경직]상태가 되어도 [저지능력]을 잃지 않는다.", - "접두어:그림자질주 해당태그:[다리][외투]\n아이템 효과:당신이 [은밀상태]일 때《런》을 해도 [은밀상태]는 해제되지 않는다.", - "접두어:심해의  해당태그:[보조장비][악기][가방]\n아이템 효과: 당신은 [암시],[수생]태그를 얻는다.", - "접두어:금전운의  해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 재물표 굴림 또는 드롭 아이템 굴림을 한 직후에 사용하며 해당 굴림을 다시 굴린다. 장면에1회 사용할 수 있다.", - "접두어:함정회피의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:데미지 적용 직전〕당신에게 적용될 예정인 프롭 및[기믹]에 의한 데미지를 무효로 할 수 있다. 시나리오당1회 사용할 수 있다.", - ] - - tableName = "프리픽스드 아이템 효과표" - table = nil - - case rank - when 1 - tableName += "(매직 그레이드1)" - table = table_1 - when 2 - tableName += "(매직 그레이드2)" - table = table_2 - when 3 - tableName += "(매직그레이드3)" - table = table_3 - end - - result, number = get_table_by_d66(table) - - text = "#{tableName}([#{number}]) > #{result}" - return text - end - - # 공격 명중 장소 랜덤결정표 - def getHitLocationDiceCommandResult(command) - return nil unless "HLOC" === command - - tableName = "공격명중장소" - table = [ - '이마', - '뺨', - '코', - '턱', - '뒷통수', - '목', - - '귀', - '눈', - '관자놀이', - '팔', - '팔꿈치', - '손', - - '손가락', - '심장', - '위', - '폐', - '갈비', - '어깨', - - '등', - '옆구리', - '허리', - '아랫배', - '허벅지', - '목', - - '장딴지', - '아킬레스건', - '발 뒤꿈치', - '정강이', - '새끼 발가락', - '무릅', - - '사회적 신용', - '인간관계', - '첫사랑의 추억', - '완벽한 예측', - '마음', - '안경', - ] - result, number = get_table_by_d66(table) - "#{tableName}(#{number}):#{result}" - end - - # PC명 랜덤 결정표 - def getPCNameDiceCommandResult(command) - return nil unless "PCNM" === command - - tableName = "PC名" - table = [ - 'Kuraudo', - 'Sefirosu', - 'Kirito', - 'Asuna', - 'Leeroy Jenkins', - 'Buront', - - '의사양반', - '거대도너츠', - '이등병가민', - '버섯대위', - '∃@ㅏ이돌전도사E', - '작업장', - - '크로울리', - '다이테스', - '타츠야', - '미유키', - '슬레인', - '타카본씨', - - '흑의 연금술사', - '†사랑의천사네코히메†', - '데스★건', - '卍칠흑의타천사卍', - '광속의이명을가지고중력을자유자재로조종하는고귀한기사', - '신세계†영걸살해자', - - '로그호라', - 'ㄱㄱㄱㄱ', - '창고', - '은행', - '보관', - '위탁', - - '사스케', - '라파엘로', - '도나텔로', - '미켈란젤로', - '센다이', - '후지키도', - ] - - result, number = get_table_by_d66(table) - - return "#{tableName}(#{number}):#{result}" - end - - # ロデ研の新発明ランダム決定表 - def getInventionAttributeTextDiceCommandResult(command) - return nil unless /IAT([ABMDLT]*)/ === command - - tableName = "로데릭 연구소의 새로운 발명" - - table_indicate_string = Regexp.last_match(1) && Regexp.last_match(1) != '' ? Regexp.last_match(1) : 'MDLT' - is_single = (table_indicate_string.length == 1) - - result = [] - number = [] - - table_indicate_string.split(//).each do |char| - dice_result, dice_str = roll(1, 6) - number << dice_str - result << case char - when 'A', 'M' - [ - '빛나고 돌며 소리가 울리는', - '무언가를 자각한', - '단단하고 강한', - '굉장히 빠르거나 거친', - '대량 생산이 가능한', - '좋은 감촉의', - ].map { |e| (is_single ? '특징A(장점):' : '') + e } - when 'B', 'D' - [ - '중독성 있는', - '굉장히 무거운', - '굉장히 냄새나는', - '망가지기 쉬운', - '설명할 것이 많은', - '버려도 버려도 되돌아오는 ', - ].map { |e| (is_single ? '특징B(단점):' : '') + e } - when 'L' - [ - '아름다운', - '소박한', - '풍류있는', - '참신한', - '형언할 수 없는', - '목숨을 깍는 형태를 한', - ].map { |e| (is_single ? '형용:' : '') + e } - when 'T' - [ - '무기', - '방어구', - '악세사리', - '식량', - '약품', - '장난감', - ].map { |e| (is_single ? '발명품의 종류:' : '') + e } - end[dice_result - 1] - end - - return "#{tableName}([#{number.join(',')}]):#{result.join(' ')}" - end - - # 아키바 거리에서 발생하는 문제 랜덤결정 표 - def getTroubleInAkibaStreetDiceCommandResult(command) - return nil unless command === "TIAS" - - tableName = "아키바 거리에서 발생하는 문제" - - number = [] - result = [] - - [ - [ - '〈로그 호라이즌〉이', - '〈초승달 동맹〉이', - '〈D.D.D〉가', - '〈흑검기사단〉이', - '〈서풍여단〉이', - '〈로데릭 상회〉가' - ], - [ - '길드 회관에서', - '무위도식 골목에서', - '거리 한가운데에서', - '수풍관에서', - '공중목욕탕에서', - '하수구에서' - ], - [ - '불합리한', - '겸손', - '달콤한', - '부자연스러운', - '위험한', - '머리 나쁜' - ], - [ - '싸움', - '연애소식', - '장난', - '음모', - '사고', - '분실물' - ] - ].each do |table| - dice_result, dice_str = roll(1, 6) - number << dice_str - result << table[dice_result - 1] - end - - return "#{tableName}([#{number.join(',')}]):#{result.join(' ')}" - end - - # 버림받은 아이 랜덤결정표 - def getAbandonedChildDiceCommandResult(command) - return nil unless command === "ABDC" - - tableName = "버림받은 아이" - - number = [] - result = [] - - [ - [ - '꽃의 이름', - '별의 이름', - '색깔 종류', - '돌의 이름', - '동물 이름', - '번호' - ].map { |e| '이름:' + e }, - [ - '폐 건물', - '길가', - '식객', - '나무 위', - '공원', - '하수도' - ].map { |e| '주거:' + e }, - [ - '무언가를 찾기', - '요리', - '노래', - '장사', - '손재주있는', - '약삭빠른 행동' - ].map { |e| '특기:' + e }, - [ - '깡마른', - '키작은', - '발육이 좋은', - '키가 큰', - '부드럽고 탄력있는', - '근육질의' - ].map { |e| '체형:' + e }, - [ - '과일', - '고기', - '신선한 야채', - '생선', - '과자', - '벌레' - ].map { |e| '좋아하는 음식:' + e }, - [ - '말이 서툰', - '사투리', - '일반적인 말투', - '사극체', - '3인칭', - '귀국자녀' - ].map { |e| '말투:' + e } - ].each do |table| - dice_result, dice_str = roll(1, 6) - number << dice_str - result << table[dice_result - 1] - end - - return "#{tableName}([#{number.join(',')}]):#{result.join(' ')}" - end - - # 楽器種別表 - def getMusicalInstrumentTypeDiceCommandResult(command) - return nil unless /MII(\d?)/ === command - - type, is_roll = if Regexp.last_match(1) && Regexp.last_match(1) != '' - [Regexp.last_match(1).to_i, false] - else - roll(1, 6) - end - return nil if type < 1 || 6 < type - - tableName = "악기 종류 표" - type_name = ['타악기1', '건반악기', '현악기1', '현악기2', '관악기1', '관악기2'][type - 1] - - dice, = roll(1, 6) - result = [ - ['캐스터네츠', '마라카스', '심벌즈', '트라이앵글', '북', '드럼'], - ['목제 실로폰', '철제 실로폰', '하모늄', '하프시 코드', '피아노', '클라비코드'], - ['하프', '류트', '기타', '바이올린', '첼로', '리라'], - ['비파', '6현금', '호금', '샤미센', '시타르', '덜시머'], - ['트럼펫', '호른', '트럼본', '튜바', '피리', '클라리넷'], - ['리코더', '오카리나', '오보에', '하모니카', '아코디언', '퉁소'] - ][type - 1][dice - 1] - - return tableName.to_s + (is_roll ? "(#{type})" : '') + ":#{type_name}(#{dice}):#{result}" - end - - def getEastalDiceCommandResult(command) - return nil unless command =~ /ESTL(\d+)/ - - cr = Regexp.last_match(1).to_i - return nil unless cr >= 1 && cr <= 10 - - tableName = "이스탈 탐색표" - - table = ["숲 베리 따기: 여러분은 베리가 열린 수풀을 발견한다. 탐색을 하는 PC는 난이도 8의 [지각판정]을 한다(한 명당 1회만). 성공한 사람은 「숲 베리 (맘대로 샌드위치에 상당)」를 하나 입수한다.", - "나뭇잎 사이로 햇빛이 비치는 산책길: 나뭇잎 사이로 햇빛이 비치는 밝은 잡목림이 이어진다. 적당히 사람의 손이 닿아서 산책하는 기분으로 걸을 수 있다.", - "군생지에는 주의: 여러분은 트리피드의 군생지에 들어오고 말았다! 힘겨운 싸움 끝에 다행히도 승리를 거머쥐었지만, 여러분 전원은 [피로: 10]을 입는다.", - "페어 트레이드: 여러분은 〈대지인〉 농부를 만났다. 20G를 내면 「계절야채 포토푀」를 구입할 수 있다(다 합쳐서 PC와 같은 수까지).", - "강에서의 삶: 제방을 따라 강 근처를 걷는다. 작은 선착장에서 위세 좋은 목소리가 들린다. 물고기를 잡고 있는 모양이다.", - "건너려 해도 건널 수 없는: 강물이 붇는 바람에 여러분은 강을 건널 곳을 찾느라 고생한다. [수생] 태그를 소지하고 있거나 얻을 수 있는 수단이 있는 PC가 한 명이라도 있다면 아무 문제 없다. 없다면 멀리 우회하여 전원 [피로: 10]을 입는다.", - "코볼트 조우전: 여러분은 코볼트 무리를 물리쳤다! 전원 10G를 손에 넣는다. 쫓아가서 섬멸한다면 전원 [피로: 10]을 입는 대신 추가로 「코볼트의 이빨 [환전](10G)」를 한 사람당 1개 손에 넣는다.", - "풍요로운 전원 풍경: 큰 논이 몇 자리나 펼쳐져 있다. 가을이라면 황금색 벼 이삭이 바람에 흔들릴 것이다.", - "불운한 예감: 검은 고양이가 눈앞을 가로지르고, 까마귀가 머리 위에서 울고, 신발 끈이 뚝 끊어졌다. 왠지 모를 한기까지. 여러분 전원은 【인과력】을 1점 잃는다.", - "친구의 친구는 친구: PC 전원은 2D를 굴린다. 가장 큰 눈이 나온 「당신」은 가장 적은 눈이 나온 「대상」과 공통의 지인에 대한 화제로 이야기꽃을 피운다. 당신과 대상은 「인과력 티켓」 한 장으로 각자 서로에 대한 커넥션을 취할 수 있다. 관계는「우정, 이해」 중 하나가 된다.", - "시간은 흐른다: 길을 따라 외벽만 남은 철근 빌딩이 서 있다. 지금은 새의 둥지가 된 듯하다.", - "갑작스러운 폭우!: 여러분은 갑작스러운 폭우를 만나, 고생 끝에 폐가에 도착했다. 여러분 전원은 [식량] 아이템을 하나 소비해야 한다. 단, [피로] 회복량은 절반이다. [식량] 아이템을 소비할 수 없는 경우는【인과력】 1점을 잃는다.", - "들꽃이 만발하다: 여러분은 넓은 꽃밭에 도착한다. 탐색을 하는 PC는 목표치 9의 [지식판정을 한다(한 명당 1회만). 성공한 사람은 「귀중한 약초 [환전] (20G)」를 하나 입수한다.", - "녹색 터널: 멋진 할엽수가 나란히 늘어서서 녹색의 천장을 이루고 있다. 발치에는 부엽토가 두껍게 깔렸고, 곳곳에서 나무뿌리가 모습을 드러내고 있다.", - "고블린 강습 부대: 여러분은 고블린 강습부대와의 조우전에 휘말렸다. 여러분 전원은 [피로: 20]을 입거나, 또는 [시나리오n회]형 특기의 사용횟수를 소비한다(여러분이 선택).", - "정보교환: 여러분은 모험자 집단과 만났다. 대표자는 목표 10의 [교섭판정]을 한다(적절한 서브 직업이 있다면 +2의 보너스를 얻을 수도 있다). 성공하면 부근의 정보를 들을 수 있다. 여러분 중 하나는 다음에 하는 [정찰] 행동에 +2를 얻는다.", - "못의 어부: 물이 가득한 못에 나왔다. 어부가 투망을 던지는 모습이 보인다.", - "토막난 샛길: 산사태로 길이 무너져 내리고 말았다. 이 길은 사용할 수 없을 것 같다. [비행] 상태이거나 [비행] 상태를 얻을 수 있는 수단을 가진 PC가 한 명이라도 있다면 주변을 탐색할 수 있으므로 문제는 없다. 그렇지 않다면 여러분은 아주 멀리 돌아가야 한다. 여러분 전원은 [피로:25]를 입는다.", - "코볼트를 물리쳐라!: 여러분은 코볼트 순찰대를 물리쳤다. 전원 [피로: (1D6+5)]를 입는 대신, 전리품으로 1인당 20G를 입수한다.", - "대지의 은총: 이랑을 따라 채소의 파릇파릇한 잎이 무성하다. 맛있는 요리를 만들 수 있을 것 같다.", - "미끄러져 굴러서: 가도를 걷고 있는데 갑자기 거대한 와일드 보어가 튀어나온다. 피하던 찰나에 넘어져서 여러분 전원은 [소모품] 아이템을 하나 잃는다. [소모품]아이템을 가지고 있지 않다면 【인과력】 1점을 잃는다.", - "빙글빙글 꽈당: PC 전원은 2D를 굴린다. 가장 작은 눈의 「당신」은 젖은 풀에 발이 미끄러져 굴러떨어지고 만다. 구해준 동료는 「인과력 티켓」 한 장으로 「당신」에 대해 커넥션을 얻을 수 있다. 관계는 「비호, 친애」 중 하나가 된다.", - "무인들이 꾼 꿈의 흔적: 반쯤 무너진 돌담이 이어진다. 아인과의 격렬한 싸움의 흔적도 지금은 희미하게 남아있을 뿐이다.", - "오리무중: 짙은 안개가 낀다. 팔을 뻗으면 손끝이 안 보일 정도다. 여러분 전원은 [피로: 25]를 입거나 【인과력】 1점을 잃는다(여러분이 선택).", - "치유의 샘물: 여러분은 세차게 솟구치는 맑은 물을 발견한다. 목표치 13의 [지각판정]을 한다. 누구든 한 명이라도 성공하면 이것이 매우 맑으며 마력이 있는 물이라는 것을 알게 된다. 길어 담아갈 수는 없지만, 마시면 즉석에서 【인과력】 1점을 얻는다.", - "침엽수 숲: 침엽수가 울퉁불퉁한 나무껍질을 드러내고 있다. 그늘에 잡초가 적어 조금 쌀쌀한 인상을 받는다.", - "어인의 습격: 여러분은 사하긴 순찰소대와 격렬한 싸움을 벌였다! 여러분 전원은 [피로: 25]를 입거나 [소모품] 아이템 2개를 잃는다(여러분이 선택).", - "상부상조: 여러분은 꼼짝도 못 하고 서 있는 마차에 탄 여행자를 만났다. 그들을 돕는 경우, 도우려는 멤버 전원이 [조작판정]을 한다. 달성치 합계가 (PC 수ⅹ10)이상이라면 마차를 길에 되돌린다. 그 경우 1인당 20G의 사례금을 받는다.", - "시냇물과 산들바람: 잔잔하게 흐르는 작은 시냇가로 나왔다. 수면을 스쳐 지나가는 산들바람에 기분이 상쾌하다.", - "파이팅 일발!: 여러분은 절벽을 따라 난 좁은 통로를 나아가느라 체력만이 아니라 기력까지 소모한다. 여러분 전원은 [피로:15]를 입는다. 거기에 더하여 [피로: 15]를 입거나 【인과력】 1점을 잃는다(여러분이 선택).", - "거인과 만나다: 숲 위로 불쑥 머리를 내민 것은 대머리 거인이었다. 전투에 승리한 여러분은 전원 25G를 입수한다. 거인의 보금자리를 찾으려면 대표자가 목표치 12의 [해석판정]에 성공해야 한다. 성공한 경우 거인의 보금자리에서 [마촉매6]을 1D6+1개 입수한다.", - "휴식 장소: 쉬기 딱 좋은 도로 가의 공터를 발견한다. 예전에 누군가 같은 생각을 한 사람이 있었는지 모닥불을 피운 흔적도 있다.", - "그럴 리가: 길을 잃고 말았다. 여러분 전원은 【인과력】을 2점 잃는다. 【인과력】을 잃을 수 없는 경우, 부족한 【인과력】 1점당 [피로: 15]를 입는다. 여러분의 동료중에 [지도 제작자]나 [척후]가 있다면 [피로: 15]는 [피로: 10]으로 그친다.", - "좋아하는 애 있어?: 무슨 영문인지 여러분은 휴식 중에 좋아하는 이성에 대한 화제에 돌입하고 말았다. [애정] 또는 [사랑], [설렘]에 준하는 커넥션을 가지고 있는 PC는 그 사실을 고백할 수 있다. 그 경우, GM은 그 PC의 용기에 깊이 감동하며【인과력】 1점을 주자. 만약 고백 상대가 지금 파티에 있는 동료라면, 롤플레이에 따라서는 그 상대에게도 준다.", - "저 다리를 건너서: 붉게 녹슨 철교가 강 위로 그림자를 드리우고 있다. 예전에는 전차가 이 다리 위를 건넜는지 이끼 사이로 레일이 엿보인다.", - "얼음덩어리: 큼직한 우박이 내려 사정없이 여러분을 두들긴다. 주위는 탁 트인 토지라서 피할 수도 없다. 여러분 전원은 [피로: 30]을 입는다.", - "두근두근 동굴: 여러분은 기분 나쁜 동굴을 발견한다. 탐색을 하는 PC는 목표치 12의 [지각판정]을 한다. 실패한 사람은 [피로: 10]을 입는다. 한 사람이라도 성공한 경우, 동굴 안에서 금화 100G가 들어있는 자루를 발견한다. 공평하게 나누자!", - "수풀을 헤치고: 낮은 관목이 곳곳에 수풀을 이루고 있어 똑바로 전진하기 힘들다.하지만 누군가가 지나간 길이 있어서 헤매지 않고 끝날 것 같다.", - "이곳에서 저지하라!: 여러분은 〈대지인〉의 마을 주변에서 와이번과의 전투에 돌입했다! 여러분 전원은 [피로: 30]을 입거나 【인과력】 2점을 잃는다(여러분이 선택).", - "언젠가 지나온 길: 여러분은 아직 신출내기인 〈모험자〉들과 만났다. 뭔가 도움을 주고 싶다면 [소모품]을 몇 개쯤 건네줄 수도 있고, 뭐든 조언을 해줄 수도 있다. 그들은 거듭 감사하며 길을 떠난다. GM은 PC들의 롤플레이에 따라 【인과력】 1점을 줄 수 있다.", - "계곡에 울리는 물소리: 가파른 골짜기 밑에서 기세 좋게 물이 흐른다. 그리 멀지않은 곳에서 폭포 소리가 들려온다.", - "독 늪: 여러분은 썩은 내가 풍기는 늪지를 가로질렀다. 여러분 전원은 목표치 14의 [운동판정]을 해야 한다. 실패한 PC는 [소모품] 아이템을 2개 잃는다.", - "고르곤 슬레이어: 여러분은 쇠로 된 피부 를 지닌 소를 물리쳤다! 전원 【인과력】 1점을 잃는다. 전리품으로 【철우의 비늘 [환전] (35G)】를 인원수만큼 손에 넣는다.", - "개척자들: 몇 명의 대지인이 숲을 개간하고 있다. 씨를 뿌리려면 조금 더 걸릴 것 같다.", - "예상 밖의 조우: 10m가 넘는 녹색 드래곤과 우연히 마주친다. 왜 이런 곳에! 여러분은 전력을 다해 도망쳤다. 여러분 전원은 【인과력】을 2점 잃거나, [보조장비] 하나에 [파손] 태그를 입는다. 둘 다 할 수 없다면 [피로: 35]를 입는다.", - "끝말잇기는 귀문: 여러분은 여행의 흥을 돋우기 위해 다 함께 끝말잇기를 하면서 걷고 있다. PC 전원은 「누」(GM은 다른걸로 바꿔도 좋다)로 시작하는 단어를 하나 발표한다. 가장 창피한 단어를 발표한 PC를 다 함께 결정한다. 그 PC에 대한 커넥션을 가지고 있는 다른 PC는 커넥션의 관계를 [동정], [실망], [재미있음]으로 변경할 수 있다.", - "오래된 신역: 커다란 석제 토리이가 오랜세월의 풍파를 견디며 우뚝 솟아있다. 주위에 엄숙한 분위기가 가득했다.", - "난기류: 돌풍은 회오리가 되었다! 여러분은 간신히 통과할 수 있었지만 멀쩡하지는 않았다. 여러분은 [피로: 35]를 입거나 [소모품] 2개를 잃는다(여러분이 선택).", - "노리려면 월척을: 여러분은 멋진 낚시터를 발견한다. 탐색을 하는 PC는 [식량] 아이템을 하나 소비해서 목표치 13의 [조작판정]을 한다(어부나 그에 준하는 서브 직업에겐 +2를 줘도 좋다). 성공한 사람은「기름이 오른 송어 (정석 카레에 상당)」를 [1D/2]마리(최저 1마리) 입수한다.", - "고목 미궁: 울퉁불퉁한 고목이 서로 얽혀 압박감을 느끼게 한다. 숲이 보내온 세월의 무게가 어깨를 짓누르는 듯하다.", - "중과부적: 여러분은 무수한 구렁이에게 둘러싸였다! 여러분 전원은 [피로: 40]을 입거나 보조장비 하나에 [파손] 태그를 붙인다(여러분이 선택).", - "축복의 고리: 여러분은 대지인의 마을에서 결혼을 축하하는 조촐한 연회를 접한다. 축복을 해주고 싶다면 대표 PC가 난이도 14의 [교섭] 판정을 한다. 선물로 [식량] 태그를 가진 아이템을 하나 내놓을 때마다 +2의 보너스를 얻는다. 성공한 경우, 어딘가에서 상쾌한 바람이 불어 여러분 전원은 【인과력】 1점을 얻는다. 그렇지 않은 경우라도 연회에는 초대받으며, 소박한 만찬을 먹고 전원의 [피로]가 -20 줄어든다.", - "큰 강을 이루는 한 방울: 깨끗한 물이 세차게 솟아난다. 이 물은 분명 저 큰 강으로 이어질 것이다.", - "냉랭한 산길: 여러분은 바람이 세차게 부는, 얼어붙을 듯한 산길을 걸어간다. [경감(냉기)를 가지고 있거나, 혹은 얻을 수 있는 PC는 이 영향을 받지 않는다. 그렇지 않은 PC는 【인과력】 2점을 잃거나 보조장비 하나에 [파손] 태그를 입는다(여러분이 선택). 양쪽 모두 선택할 수 없는 경우, [피로: 50]을 입는다.", - "고블린의 야영지: 여러분은 야영 중인 고블린들을 물리쳤다! 전원 50G를 손에 넣는다. 목표치 14의 [지각판정]을 한다(한사람당 1회). 성공한 사람은 「고브 영웅상[환전] (60G)」을 하나 입수한다.", - "줄곧 이어지는 생활: 산비탈의 한 면 전체에 밭들이 계단처럼 펼쳐져 있다. 이 정도의 논밭을 일구는 데 도대체 얼마나 많은 시간이 들었을까? 근처에는 틀림없이 〈대지인〉의 마을이 있을 것이다."] - - d1, = roll(1, 6) - d2, = roll(1, 6) - value = (d1.to_i + d2.to_i - 2 + (cr - 1) * 5) - - result = table[value] - - return "#{tableName}CR#{cr}(#{value + 7}[#{d1},#{d2}])\n#{result}" - end -end diff --git a/src/src_bcdice/diceBot/LostRecord.rb b/src/src_bcdice/diceBot/LostRecord.rb deleted file mode 100644 index 178e4876f..000000000 --- a/src/src_bcdice/diceBot/LostRecord.rb +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class LostRecord < DiceBot - # ゲームシステムの識別子 - ID = 'LostRecord' - - # ゲームシステム名 - NAME = 'ロストレコード' - - # ゲームシステム名の読みがな - SORT_KEY = 'ろすとれこおと' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 3 - text += " [スペシャル]" - end - - if fumble?(keys, chained_sequence) - text += " [ファンブル]" - end - end - - return text - end - - def find_sequence(keys) - keys = keys.sort - - sequences = (1...6).map do |start_key| - find_sequence_from_start_key(keys, start_key) - end - sequence = sequences.select { |x| x.size > 1 }.max { |a, b| a.size <=> b.size } - - sequence - end - - def find_sequence_from_start_key(keys, start_key) - chained_keys = [] - - key = start_key - - while keys.include? key - chained_keys << key - key += 1 - end - - if !chained_keys.empty? && chained_keys[0] == 1 - key = 6 - while keys.include? key - chained_keys.unshift key - key -= 1 - end - end - - return chained_keys - end - - def fumble?(keys, chained_sequence) - chained_sequence.each do |k| - if keys.count(k) >= 2 - return true - end - end - - false - end - - def roll_fumble_chart - key, = roll(1, 6) - - text = [ - "何かの問題で言い争い、主君に無礼を働いてしまう。あなたは主君の名誉点を1点失うか、【時間】を1点消費して和解の話し合いを持つか選べる。", - "見過ごせば人々を不幸にする危険に遭遇する。あなたは逃げ出して冒険の名誉点を1点失うか、これに立ち向かい【命数】を2点減らすかを選べる。", - "あなたが惹かれたのは好意に付け込む人だった。あなたはその場を去って恋慕の名誉点を1点失うか【正義】を1点減らして礼を尽くすかを選べる。", - "金銭的な問題で、生命と魂の苦しみを背負う人に出会う。あなたは庇護の名誉点を1点失うか出費を3点増やすかを選べる。", - "襲撃を受ける。苦もなく叩き伏せると、卑屈な態度で命乞いをしてきた。容赦なく命を奪い寛容の名誉点を1点失うか、密告によって【血路】が1D6点増えるかを選ぶことができる。", - "風聞により、友が悪に身を貶めたと知る。共に並んだ戦場が色褪せる想いだ。戦友の名誉点を1点減らすか、【酒と歌】すべてを失うかを選べる。", - ][key - 1] - - return "1D6 => [#{key}] #{text}" - end - - def roll_wind_power_chart - key = 0 - total_bonus = 0 - text = "" - - loop do - dice, = roll(1, 6) - key += dice - - add, bonus, current_text, = [ - [true, 0, "ほぼ凪(振り足し)"], - [true, 0, "弱い風(振り足し)"], - [false, 0, "ゆるやかな風"], - [false, 0, "ゆるやかな風"], - [false, 1, "やや強い風(儀式点プラス1)"], - [false, 2, "強い風(龍を幻視、儀式点プラス2)"], - [false, 3, "体が揺らぐほどの風(龍を幻視、儀式点プラス3)"], - ][[key, 7].min - 1] - - total_bonus += bonus - - if key != dice - current_text = "1D6[#{dice}]+#{key - dice} #{current_text}" - else - current_text = "1D6[#{dice}] #{current_text}" - end - - if text.empty? - text = current_text - else - text = "#{text} => #{current_text}" - end - - unless add - text += " [合計:儀式点 +#{total_bonus} ]" - return text - end - end - end - - def roll_emotion_chart - key, = roll(1, 6) - - text = [ - "愛情/殺意", - "友情/負目", - "崇拝/嫌悪", - "興味/侮蔑", - "信頼/嫉妬", - "守護/欲情", - ][key - 1] - - return "1D6 => [#{key}] #{text}" - end - - def roll_hope(number_of_dice) - total = 0 - text = "" - - loop do - d1, = roll(1, 6) - d2 = 0 - - if number_of_dice >= 2 - d2, = roll(1, 6) - end - - total += d1 + d2 - - if number_of_dice == 2 - text += "2D6[#{d1},#{d2}]" - else - text += "1D6[#{d1}]" - end - - if is_1or2(d1) || is_1or2(d2) - text += " (振り足し) => " - else - text += " => 合計 #{total}" - return text - end - end - end - - def is_1or2(n) - [1, 2].include?(n) - end -end diff --git a/src/src_bcdice/diceBot/MagicaLogia.rb b/src/src_bcdice/diceBot/MagicaLogia.rb deleted file mode 100644 index a38308b0d..000000000 --- a/src/src_bcdice/diceBot/MagicaLogia.rb +++ /dev/null @@ -1,1143 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class MagicaLogia < DiceBot - # ゲームシステムの識別子 - ID = 'MagicaLogia' - - # ゲームシステム名 - NAME = 'マギカロギア' - - # ゲームシステム名の読みがな - SORT_KEY = 'まきかろきあ' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - output = - if dice_total <= 2 - " > ファンブル" - elsif dice_total >= 12 - " > スペシャル(魔力1D6点か変調1つ回復)" - elsif total >= target - " > 成功" - else - " > 失敗" - end - - output += gainMagicElement(dice_list[0], dice_list[1]) - - return output - end - - # 表振り分け - def rollDiceCommand(command) - output = '1' - type = "" - total_n = "" - - case command - when 'BGT' - type = '経歴表' - output, total_n = magicalogia_background_table - when 'DAT' - type = '初期アンカー表' - output, total_n = magicalogia_defaultanchor_table - when 'FAT' - type = '運命属性表' - output, total_n = magicalogia_fortune_attribution_table - when 'WIT' - type = '願い表' - output, total_n = magicalogia_wish_table - when 'ST' - type = 'シーン表' - output, total_n = magicalogia_scene_table - when 'FT' - type = 'ファンブル表' - output, total_n = magicalogia_fumble_table - when 'WT' - type = '変調表' - output, total_n = magicalogia_wrong_table - when 'FCT' - type = '運命変転表' - output, total_n = magicalogia_fortunechange_table - when 'AT' - type = '事件表' - output, total_n = magicalogia_accident_table - when 'RTT' - type = 'ランダム特技決定表' - output, total_n = magicalogia_random_skill_table - when 'TPT' - type = '時の流れ表' - output, total_n = magicalogia_time_passage_table - when 'TCT' - type = '運命変転「典型的災厄」' - output, total_n = magicalogia_typical_fortune_change_table - when 'PCT' - type = '運命変転「物理的災厄」' - output, total_n = magicalogia_physical_fortune_change_table - when 'MCT' - type = '運命変転「精神的災厄」' - output, total_n = magicalogia_mental_fortune_change_table - when 'ICT' - type = '運命変転「狂気的災厄」' - output, total_n = magicalogia_insanity_fortune_change_table - when 'SCT' - type = '運命変転「社会的災厄」' - output, total_n = magicalogia_social_fortune_change_table - when 'XCT' - type = '運命変転「超常的災厄」' - output, total_n = magicalogia_paranormal_fortune_change_table - when 'WCT' - type = '運命変転「不思議系災厄」' - output, total_n = magicalogia_wonderful_fortune_change_table - when 'CCT' - type = '運命変転「コミカル系災厄」' - output, total_n = magicalogia_comical_fortune_change_table - when 'BST' - type = 'ブランク秘密表' - output, total_n = magicalogia_blank_secret_table - when 'PT' - type = 'プライズ表' - output, total_n = magicalogia_prise_table - when 'MIT' - type = '宿敵表' - output, total_n = magicalogia_inveterate_enemy_table - when 'MOT' - type = '謀略表' - output, total_n = magicalogia_conspiracy_table - when 'MAT' - type = '因縁表' - output, total_n = magicalogia_fate_table - when 'MUT' - type = '奇人表' - output, total_n = magicalogia_cueball_table - when 'MFT' - type = '力場表' - output, total_n = magicalogia_force_field_table - when 'MLT' - type = '同盟表' - output, total_n = magicalogia_alliance_table - when 'XEST' - type = '極限環境シーン表' - output, total_n = magicalogia_extreme_environment_scene_table - when 'IWST' - type = '内面世界シーン表' - output, total_n = magicalogia_innner_world_scene_table - when 'MCST' - type = '魔法都市シーン表' - output, total_n = magicalogia_magic_city_scene_table - when 'WDST' - type = '死後世界シーン表' - output, total_n = magicalogia_world_after_dead_scene_table - when 'LWST' - type = '迷宮世界シーン表' - output, total_n = magicalogia_labyrinth_world_scene_table - when 'STB' - type = '大判シーン表' - output, total_n = magicalogia_new_scene_table - when 'RTS' - type = '指定特技(星)' - output, total_n = magicalogia_random_skill_star_table - when 'RTB' - type = '指定特技(獣)' - output, total_n = magicalogia_random_skill_beast_table - when 'RTF' - type = '指定特技(力)' - output, total_n = magicalogia_random_skill_force_table - when 'RTP' - type = '指定特技(歌)' - output, total_n = magicalogia_random_skill_poem_table - when 'RTD' - type = '指定特技(夢)' - output, total_n = magicalogia_random_skill_dream_table - when 'RTN' - type = '指定特技(闇)' - output, total_n = magicalogia_random_skill_night_table - when 'MGCT' - type = '運命変転「魔法使いの災厄」' - output, total_n = magicalogia_magi_fortune_change_table - when 'MBST' - type = '魔法書架シーン表' - output, total_n = magicalogia_magic_bookshelf_scene_table - when 'MAST' - type = '魔法学院シーン表' - output, total_n = magicalogia_magic_academy_scene_table - when 'TCST' - type = 'クレドの塔シーン表' - output, total_n = magicalogia_tower_credo_scene_table - when 'PWST' - type = '並行世界シーン表' - output, total_n = magicalogia_parallel_world_scene_table - when 'PAST' - type = '終末シーン表' - output, total_n = magicalogia_post_apocalypse_scene_table - when 'GBST' - type = '異世界酒場シーン表' - output, total_n = magicalogia_god_bar_scene_table - when 'SLST' - type = 'ほしかげシーン表' - output, total_n = magicalogia_starlight_scene_table - when 'WLAT' - type = '世界法則追加表' - output, total_n = magicalogia_world_low_add_table - when 'WMT' - type = 'さまよう怪物表' - output, total_n = magicalogia_wondaring_monster_table - when 'FFT' - type = '落花表' - output, total_n = magicalogia_fallen_flower_table - when 'OLST' - type = '旧図書館シーン表' - output, total_n = magicalogia_old_library_scene_table - when 'TPTB' - type = '大判時の流れ表' - output, total_n = magicalogia_new_time_passage_table - when 'FLT' - type = 'その後表' - output, total_n = magicalogia_fallen_after_table - - end - - return "#{type}(#{total_n}) > #{output}" - end - - # シーン表 - def magicalogia_scene_table - table = [ - '魔法で作り出した次元の狭間。ここは時間や空間から切り離された、どこでもあり、どこでもない場所だ。', - '夢の中。遠く過ぎ去った日々が、あなたの前に現れる。', - '静かなカフェの店内。珈琲の香りと共に、優しく穏やかな雰囲気が満ちている。', - '強く風が吹き、雲が流されていく。遠く、雷鳴が聞こえた。どうやら、一雨きそうだ。', - '無人の路地裏。ここならば、邪魔が入ることもないだろう。', - lambda { return "周囲で〈断章〉が引き起こした魔法災厄が発生する。#{magicalogia_random_skill_table_text_only}の判定を行うこと。成功すると、好きな魔素が一個発生する。失敗すると「運命変転表」を使用する。" }, - '夜の街を歩く。暖かな家々の明かりが、遠く見える。', - '読んでいた本を閉じる。そこには、あなたが知りたがっていたことが書かれていた。なるほど、そういうことか。', - '大勢の人々が行き過ぎる雑踏の中。あなたを気に掛ける者は誰もいない。', - '街のはるか上空。あなたは重力から解き放たれ、自由に空を飛ぶ。', - '未来の予感。このままだと起きるかもしれない出来事の幻が現れる。', - ] - - return get_table_by_2d6(table) - end - - # ファンブル表 - def magicalogia_fumble_table - table = [ - '魔法災厄が、あなたのアンカーに降りかかる。「運命変転」が発生する。', - '魔法災厄が、あなたの魔素を奪い取る。チャージしている魔素の中から、好きな組み合わせで2点減少する。', - '魔法の制御に失敗してしまう。【魔力】が1点減少する。', - '魔法災厄になり、そのサイクルが終了するまで、行為判定にマイナス1の修正が付く。', - '魔法災厄が、直接あなたに降りかかる。変調表を振り、その変調を受ける。', - 'ふぅ、危なかった。特に何も起こらない。', - ] - - return get_table_by_1d6(table) - end - - # 変調表 - def magicalogia_wrong_table - table = [ - '『封印』自分の魔法(習得タイプが装備以外)からランダムに一つ選ぶ。選んだ魔法のチェック欄をチェックする。その魔法を使用するには【魔力】を2点消費しなくてはいけない。', - '『綻び』魔法戦の間、各ラウンドの終了時に自分の【魔力】が1点減少する。', - '『虚弱』【攻撃力】が1点減少する。', - '『病魔』【防御力】が1点減少する。', - '『遮蔽』【根源力】が1点減少する', - lambda { return "『不運』#{magicalogia_random_skill_table_text_only}のチェック欄をチェックする。その特技が使用不能になり、その分野の特技が指定特技になった判定を行うとき、マイナス1の修正が付く。" }, - ] - - return get_table_by_1d6(table) - end - - # 運命変転表 - def magicalogia_fortunechange_table - table = [ - '『挫折』そのキャラクターは、自分にとって大切だった夢を諦める。', - '『別離』そのキャラクターにとって大切な人――親友や恋人、親や兄弟などを失う。', - '『大病』そのキャラクターは、不治の病を負う。', - '『借金』そのキャラクターは、悪人に利用され多額の借金を負う。', - '『不和』そのキャラクターは、人間関係に失敗し深い心の傷を負う。', - '『事故』そのキャラクターは交通事故にあい、取り返しのつかない怪我を負う。', - ] - return get_table_by_1d6(table) - end - - # 事件表 - def magicalogia_accident_table - table = [ - '不意のプレゼント、素晴らしいアイデア、悪魔的な取引……あなたは好きな魔素を1つ獲得するか【魔力】を1D6点回復できる。どちらかを選んだ場合、その人物に対する【運命】が1点上昇する。【運命】の属性は、ゲームマスターが自由に決定できる。', - '気高き犠牲、真摯な想い、圧倒的な力……その人物に対する【運命】が1点上昇する。【運命】の属性は「尊敬」になる。', - '軽い口論、殴り合いの喧嘩、魔法戦……互いに1D6を振り、低い目を振った方が、高い目を振った方に対して【運命】が1点上昇する。【運命】の属性は高い目を振った方が、自由に決定できる。', - '裏切り、策謀、不幸な誤解……その人物に対する【運命】が1点上昇する。【運命】の属性は「宿敵」になる。', - '意図せぬ感謝、窮地からの救済、一生のお願いを叶える……その人物に対する【運命】が1点上昇する。【運命】の属性は「支配」になる。', - lambda { return "生ける屍の群れ、地獄の業火、迷宮化……魔法災厄に襲われる。#{magicalogia_random_skill_table_text_only}の判定を行う。成功すると好きな魔素が1点発生する。失敗すると、その人物に対し「運命変転表」を使用する。" }, - '道路の曲がり角、コンビニ、空から落ちてくる……偶然出会う。その人物に対する【運命】が1点上昇する。【運命】の属性は「興味」になる。', - '魂のひらめき、愛の告白、怪しい抱擁……その人物に対する【運命】が1点上昇する。【運命】の属性は「恋愛」になる。', - '師弟関係、恋人同士、すれ違う想い……その人物との未来が垣間見える。たがいに対する【運命】が1点上昇する。', - '懐かしい表情、大切な思い出、伴侶となる予感……その人物に対する【運命】が1点上昇する。【運命】の属性は「血縁」になる。', - '献身的な看護、魔法的な祝福、奇跡……その人物に対する【運命】が1点上昇する。【運命】の属性は自由に決定できる。もしも関係欄に疵があれば、その疵を1つ関係欄から消すことができる。', - ] - - return get_table_by_2d6(table) - end - - # 魔素獲得チェック - def gainMagicElement(dice1, dice2) - return "" unless dice1 == dice2 - - # ゾロ目 - table = ['星', '獣', '力', '歌', '夢', '闇'] - return " > " + table[dice1 - 1] + "の魔素2が発生" - end - - # 経歴表 - def magicalogia_background_table - table = [ - '書警/ブックウォッチ', - '司書/ライブラリアン', - '書工/アルチザン', - '訪問者/ゲスト', - '異端者/アウトサイダー', - '外典/アポクリファ', - ] - - return get_table_by_1d6(table) - end - - # 初期アンカー表 - def magicalogia_defaultanchor_table - table = [ - '『恩人』あなたは、困っているところを、そのアンカーに助けてもらった。', - '『居候』あなたかアンカーは、どちらかの家や経営するアパートに住んでいる。', - '『酒友』あなたとアンカーは、酒飲み友達である。', - '『常連』あなたかアンカーは、その仕事場によくやって来る。', - '『同人』あなたは、そのアンカーと同じ趣味を楽しむ同好の士である。', - '『隣人』あなたは、そのアンカーの近所に住んでいる。', - '『同輩』あなたはそのアンカーと仕事場、もしくは学校が同じである。', - '『文通』あなたは、手紙やメール越しにそのアンカーと意見を交換している。', - '『旧友』あなたは、そのアンカーと以前に、親交があった。', - '『庇護』あなたは、そのアンカーを秘かに見守っている。', - '『情人』あなたは、そのアンカーと肉体関係を結んでいる。', - ] - - return get_table_by_2d6(table) - end - - # 運命属性表 - def magicalogia_fortune_attribution_table - table = [ - '『血縁』自分や、自分が愛した者の親類や家族。', - '『支配』あなたの部下になることが運命づけられた相手。', - '『宿敵』何らかの方法で戦いあい、競い合う不倶戴天の敵。', - '『恋愛』心を奪われ、相手に強い感情を抱いている存在。', - '『興味』とても稀少だったり、不可解だったりして研究や観察をしたくなる対象。', - '『尊敬』その才能や思想、姿勢に対し畏敬や尊敬を抱く人物。', - ] - - return get_table_by_1d6(table) - end - - # 願い表 - def magicalogia_wish_table - table = [ - '自分以外の特定の誰かを助けてあげて欲しい。', - '自分の大切な人や憧れの人に会わせて欲しい。', - '自分をとりまく不幸を消し去って欲しい。', - '自分のなくした何かを取り戻して欲しい。', - '特定の誰かを罰して欲しい。', - '自分の欲望(金銭欲、名誉欲、肉欲、知識欲など)を満たして欲しい。', - ] - - return get_table_by_1d6(table) - end - - # 指定特技ランダム決定表 - def magicalogia_random_skill_table - skillTableFull = [ - ['星', ['黄金', '大地', '森', '道', '海', '静寂', '雨', '嵐', '太陽', '天空', '異界']], - ['獣', ['肉', '蟲', '花', '血', '鱗', '混沌', '牙', '叫び', '怒り', '翼', 'エロス']], - ['力', ['重力', '風', '流れ', '水', '波', '自由', '衝撃', '雷', '炎', '光', '円環']], - ['歌', ['物語', '旋律', '涙', '別れ', '微笑み', '想い', '勝利', '恋', '情熱', '癒し', '時']], - ['夢', ['追憶', '謎', '嘘', '不安', '眠り', '偶然', '幻', '狂気', '祈り', '希望', '未来']], - ['闇', ['深淵', '腐敗', '裏切り', '迷い', '怠惰', '歪み', '不幸', 'バカ', '悪意', '絶望', '死']], - ] - - skillTable, total_n = get_table_by_1d6(skillTableFull) - tableName, skillTable = skillTable - skill, total_n2 = get_table_by_2d6(skillTable) - return "「#{tableName}」≪#{skill}≫", "#{total_n},#{total_n2}" - end - - # 特技だけ抜きたい時用 あまりきれいでない - def magicalogia_random_skill_table_text_only - text, = magicalogia_random_skill_table - return text - end - - # 魔素の種類獲得表 - def get_magic_element_type - table = ['星', '獣', '力', '歌', '夢', '闇'] - return get_table_by_1d6(table) - end - - # 時の流れ表 - def magicalogia_time_passage_table - output = "" - num, = roll(1, 6) - - if num == 1 - output = "標的となり追われる生活が続いた。ここ数年は苦しい戦いの日々だった。#{magicalogia_random_skill_table_text_only}の判定を行う。成功するとセッション終了時に追加の功績点1点。失敗すると「運命変転」発生。" - elsif num == 2 - output = "冒険の日々の途中、大きな幸せが訪れる。#{magicalogia_random_skill_table_text_only}の判定を行う。成功すると、自分のアンカーの災厄か、自分の疵一つを無効化する。" - elsif num == 3 - text1, = get_magic_element_type - text2, = get_magic_element_type - text3, = get_magic_element_type - output = "瞑想から目を覚ます。もうそんな時間か。おかげで十分な魔素を得ることができた。「#{text1}」「#{text2}」「#{text3}」の魔素を獲得する。" - elsif num == 4 - output = "傷を癒すには十分な時間だ。自分の【魔力】を最大値まで回復する。もしくは「魔力のリセット」を行うことができる。好きな方を選ぶこと。" - elsif num == 5 - output = "平穏な日々の中にも、ちょっとした事件が起きる。自分のアンカーを一人選んで「事件表」を振ることができる。" - elsif num == 6 - output = "日々研鑚を重ね、魔法の修行に精進した。もしも望むなら、蔵書欄にある魔法を、自分の修得できる範囲の中で、現在とは別の魔法に変更して構わない。もしも、魔素がチャージされていた魔法を見習得にした場合、その魔素は失われる。" - end - - return output, num - end - - # 典型的災厄 - def magicalogia_typical_fortune_change_table - table = [ - '挫折。自分にとって大切だった夢をあきらめる。', - '別離。自分にとって大切な人―親友や恋人、親や兄弟などを失う。', - '大病。不治の病を負う。', - '借金。悪人に利用され、多額の借金を負う。', - '不和。人間関係に失敗し深い心の傷を負う。', - '事故。交通事故にあい、取り返しのつかないケガを負う。', - ] - return get_table_by_1d6(table) - end - - # 物理的災厄 - def magicalogia_physical_fortune_change_table - table = [ - '火事。自分の家が焼け落ち、帰るところが無くなる。', - '盗難。自分の大切なものが盗まれ、失われる。', - '災害。自然災害に襲われ、生活環境が激変する', - '失明。眼が見えなくなる。', - '誘拐。何者かにさらわれ、監禁される。', - '傷害。通り魔やあなたを憎む者に傷を負わされる。', - ] - return get_table_by_1d6(table) - end - - # 精神的災厄 - def magicalogia_mental_fortune_change_table - table = [ - '倦怠。疲労感に襲われ、何もやる気がなくなる。', - '家出。今、自分がいる場所に安らぎを感じなくなり、失踪する。', - '憎悪。周囲の誰かやPCに対して激しい憎悪を抱くようになる。', - '不眠。眠れなくなり、疲労する。', - '虚言。本当のことを話せなくなってしまう。', - '記憶喪失。友達やPCのことを忘れてしまう。', - ] - return get_table_by_1d6(table) - end - - # 狂気的災厄 - def magicalogia_insanity_fortune_change_table - table = [ - '二重人格。もう一つの人格が現れ、勝手な行動を始める。', - '恐怖。高所や異性、蜘蛛など、特定の何かに対する恐怖症になる。', - '妄想。突拍子もない奇妙な妄想が頭を離れなくなる。', - '偏愛。特定の物や状況などに熱狂的な愛情を示すようになる。', - '暴走。時折、自分の感情が制御できなくなり、凶暴化する。', - '発情。体温が上昇、脈拍が増大し、性的に興奮状態になる。', - ] - return get_table_by_1d6(table) - end - - # 社会的災厄 - def magicalogia_social_fortune_change_table - table = [ - '逮捕。無実の罪で捕らわれ、留置される。', - '裏切り。信頼していた人物に騙されたり、恋人に浮気されたりする。', - '暴露。自分の隠しておきたい秘密を暴露される。', - '籠絡。どう見てもよくない相手に心を奪われる。', - '加害。人を傷つけたり、殺めたりしてしまう。', - '多忙。とてつもない量の仕事に追われ、心身共に疲労する。', - ] - return get_table_by_1d6(table) - end - - # 超常的災厄 - def magicalogia_paranormal_fortune_change_table - table = [ - '霊感。見えるはずのないものが見えるようになる。', - '不運。身の回りで、不幸な偶然が頻発するようになる。', - '感染。吸血鬼やゾンビなど、怪物になりかかってしまう。', - '阻害。自分の存在が、魔法的存在以外から見えなくなってしまう。', - '変身。姿が動物や別の人間に変わってしまう。', - '標的。殺人鬼や魔法災厄など、悪意を引き寄せてしまう。', - ] - return get_table_by_1d6(table) - end - - # 不思議系災厄 - def magicalogia_wonderful_fortune_change_table - table = [ - '邪気眼。ついつい痛い言動を繰り返すようになってしまう。', - 'ドジ。ありえないほどよく転び、物を壊す体質になってしまう。', - '方向音痴。信じられないくらい道に迷うようになってしまう。', - '変語尾。なぜか、自分が話す言葉の語尾が変になってしまう。', - 'ひらがな。話す言葉が全てひらがなで聞こえるようになる。', - 'ヤンデレ。PCのことを病的に愛するようになり、自分以外にPCへの好意を持つ者に対して攻撃的になる。', - ] - return get_table_by_1d6(table) - end - - # コミカル系災厄 - def magicalogia_comical_fortune_change_table - table = [ - '性別逆転。自分の肉体の性別が逆転してしまう。', - '猫耳。頭から猫耳が生える。', - '太る。びっくりするほど太る。', - '足がくさい。哀しくなるほど足がくさくなる。', - 'ハラペコ。一回の食事で、ご飯を二十杯くらいおかわりしないと空腹でなにもできなくなる。', - '脱衣。その場ですべての服が脱げる。', - ] - return get_table_by_1d6(table) - end - - # ブランク秘密表用テーブル - # 宿敵表 - def magicalogia_inveterate_enemy_table - output = "" - num, = roll(1, 6) - if num == 1 - output = '嫉妬。その人物は、実は調査者の実力をねたむ〈大法典〉の魔法使いだった。データは〈火刑人〉を使用する。ただし、魔法の使用には魔素を必要とし、魔法使いをコレクションすることはできない。GMは調査者やそのアンカーに魔法戦を挑み、邪魔をするように操作すること。' - elsif num == 2 - output = '蒐集。その人物は、実は調査者をコレクションしようとする〈書籍卿〉だった。データは〈混血主義者〉を使用する。GMは〈断章〉に立ち会ったり、魔法戦を挑んだりして、調査者の邪魔をするように操作すること。' - elsif num == 3 - output = '妨害。その人物は、実は現在調査者が追っている〈断章〉を奪おうとする〈書籍卿〉だった。データは〈囁きの誘惑者〉を使用する。GMは〈断章〉に立ち会ったり、魔法戦を挑んだりして、調査者の邪魔をするように操作すること。' - elsif num == 4 - output = "断章。その人物には、今回の件と関係ない〈断章〉が憑依していた。データは〈猛獣〉を使用する。ただし特技と召喚する騎士は#{magicalogia_random_skill_table_text_only}に変更する。GMは〈断章〉に立ち会ったり、魔法戦を挑んだりして、調査者の邪魔するように操作すること。" - elsif num == 5 - output = '黒服。その人物は、実は魔法やオバケなどのあらゆる超常現象を否定する秘密結社「サークルエンド」の工作員だった。データは〈サークルエンド〉を使用する。GMは【隠蔽工作】を使用したり、魔法戦を挑んだりして、調査者の邪魔をするように操作すること。' - elsif num == 6 - output = '忍者。その人物は、実はあなたを殺せという使命を受けた忍者である。データは〈忍者〉を使用する。GMは〈断章〉に立ち会ったり、魔法戦を挑んだりして、調査者の邪魔をするようにそうさすること。' - end - return output, num - end - - # 謀略表 - def magicalogia_conspiracy_table - table = [ - '爆弾。その人物には、調査者の肉体を爆発させる魔法爆弾が仕掛けられていた。この【秘密】が公開されると、調査者は1d6点のダメージを受ける。', - '呪詛。その人物には、調査者に感染する呪いの魔法が仕掛けられていた。この【秘密】が公開されると、調査者はランダムに選んだ変調を一つ受ける。', - '幽閉。その人物には、調査者を異次元の牢獄に閉じ込める魔法が仕掛けられていた。この【秘密】が公開されると、調査者のプレイヤーがシーンプレイヤーになるか、クライマックスフェイズになるまで、シーンに登場できなくなる(マスターシーンでの登場の可否はGMが決定できる)。', - '強化。その人物には、調査者の運命の力を吸収する魔法が仕掛けられていた。この【秘密】が公開されると、調査者のアンカーの数と同じ数まで、セッションに登場する〈断章〉の憑依深度が1上昇する。', - '不幸。その人物には、調査者のアンカーに不幸な出来事を起こす魔法が仕掛けられていた。この【秘密】が公開されると、調査者のアンカーの中から〈愚者〉を一人選び、そのNPCに運命変転表を使用する。', - '脱走。その人物には、〈断章〉の逃亡を手助けする魔法が仕掛けられていた。この【秘密】が公開されると、GMは〈断章〉一つとNPC一人を選ぶ。その〈断章〉は、そのNPCに憑依できる。このときGMは、すでに魔法使いによって回収された〈断章〉を選んでも良く、その場合【魔力】は1d6点回復する。', - ] - return get_table_by_1d6(table) - end - - # 因縁表 - def magicalogia_fate_table - table = [ - '思慕。その人物は、実は調査者のことを知っており、深く愛していた。調査者はその人物に対する【運命】を2点上昇し、その属性を「恋愛」にする。その人物の【運命】の属性が「恋愛」の間、調査者は、この人物に対する【運命】が1点上昇するたび、【魔力】がその【運命】の値だけ回復する。', - '縁者。その人物は、実は調査者と血縁関係があった。調査者はその人物に対する【運命】を2点上昇し、その属性を「血縁」にする。その人物の【運命】の属性が「血縁」の間、調査者の復活判定に、その【運命】の値だけプラスの修正がつく。', - '怨恨。その人物は、実は調査者に深い恨みを持つ人物だった。調査者はその人物に対する【運命】を2点上昇し、その属性を「宿敵」にする。その人物の【運命】の属性が「宿敵」の間は、調査者がファンブルすると、その【運命】の値だけ【魔力】が減少する。', - '狂信。その人物は、実は調査者を崇拝していた。調査者はその人物に対する【運命】を2点上昇し、その属性を「支配」にする。その人物の【運命】の属性が「支配」の間、調査者は、その人物に憑依した〈断章〉に魔法戦を挑んだ場合、自動的に勝利することができる。ただし、調査者は、行為判定のとき、その【運命】の値以下の目が出るとファンブルになる。', - '分身。その人物は、実は調査者の魔法によって切り離された魂の一部だった。そのNPCは、調査者と融合し、調査者は功績点を1点獲得する。', - '無関係。その人物は、今回の事件に特に関係はなかった。しかし、この出会いは本当に無意味だったのだろうか? 調査者は、その人物を対象として事件表を振ること。', - ] - return get_table_by_1d6(table) - end - - # 奇人表 - def magicalogia_cueball_table - table = [ - '寿命。その人物の命脈は尽きていた。この【秘密】が公開されると、その人物は死亡する。', - '殺意。その人物は、世の中に対する憎悪に溢れ、無差別に誰かを傷つけようとしていた。GMはサイクルの終わりにランダムにこの【秘密】の持ち主以外のNPCを一人選ぶ。そのNPCが〈断章〉に憑依されていない〈愚者〉なら死亡し、そうでなければ、この【秘密】の持ち主本人が死亡する。このとき、いずれにせよその死亡を望まないキャラクターは「闇」の分野かの中からランダムに特技一つを選び、判定を行うことができる。判定に成功するとその死亡を無効化できる。', - '強運。その人物は、一種の特異点で、とても強い幸運の持ち主だった。このNPCは、プライズとして扱う。このプライズの持ち主は、あらゆる行為判定を行うとき、プラス1の修正がつく。調査者は、このプライズを獲得する。', - '疵痕。その人物は、過去に魔法によって大切なものを奪われており、魔法とその関係者を憎んでいる。その人物がいるシーンでは、召喚と呪文の判定にマイナス2の修正がつく。', - '善人。その人物は、強く優しい精神の持ち主だった。その人物に対する【運命】を3点上昇する。', - '依代。その人物は、霊媒体質で何かに憑依されやすい。この人物に〈断章〉が憑依した場合、【攻撃力】と【防御力】が2点ずつ上昇する。この【秘密】が公開されると、GMはサイクルの終わりに〈断章〉一つを選び、その憑依の対象をこのNPCに変更することができるようになる。ただし、すでに魔法使いによって回収された〈断章〉を選ぶことはできない。', - ] - return get_table_by_1d6(table) - end - - # 力場表 - def magicalogia_force_field_table - table = [ - '加護。その人物の頭上には、常に星の恩寵が降り注いでいる。この【秘密】が公開されると、そのシーンに「星」の魔素が2点発生する。また、このセッションの間、この人物に対する【運命】が1点上昇したキャラクターは「星」の魔素を2点獲得する。', - '変化(へんげ)。その人物は、実は歳を経た動物―狐や狸などが化けた存在である。この【秘密】が公開されると、そのシーンに「獣」の魔素が2点発生する。また、このセッションの間、この人物に対する【運命】が1点上昇したキャラクターは「獣」の魔素を2点獲得する。', - '超能力。その人物には、ESPやPKなど、潜在的な超能力が眠っている。この【秘密】が公開されると、そのシーンに「力」の魔素が2点発生する。また、このセッションの間、この人物に対する【運命】が1点上昇したキャラクターは「力」の魔素を2点獲得する。', - '詩人。その人物は、詩神に祝福された存在である。この【秘密】が公開されると、そのシーンに「歌」の魔素が2点発生する。また、このセッションの間、この人物に対する【運命】が1点上昇したキャラクターは「歌」の魔素を2点獲得する。', - '夢想家。その人物には、大きな理想や実現したいと思っている夢がある。何か大きなことを成し遂げようとしている。。この【秘密】が公開されると、そのシーンに「夢」の魔素が2点発生する。また、このセッションの間、この人物に対する【運命】が1点上昇したキャラクターは「夢」の魔素を2点獲得する。', - '暗黒。その人物は、呪われた運命を背負っており、世界の破滅を呼び込む可能性を持っている。この【秘密】が公開されると、そのシーンに「闇」の魔素が2点発生する。また、このセッションの間、この人物に対する【運命】が1点上昇したキャラクターは「闇」の魔素を2点獲得する。', - ] - return get_table_by_1d6(table) - end - - # 同盟表 - def magicalogia_alliance_table - output = "" - num, = roll(1, 6) - if num == 1 - output = "精霊。その人物は、実は姿を変え、人間界に顕現した精霊だった。象徴する特技は#{magicalogia_random_skill_table_text_only}である。調査者は、そのセッションの間だけ、その特技の【精霊召喚】を修得する。また、セッションに一度だけ、その【精霊召喚】の判定を自動的に成功にすることができる。" - elsif num == 2 - output = "騎士。その人物は、実は姿を変え、人間界に顕現した騎士だった。象徴する特技は#{magicalogia_random_skill_table_text_only}である。調査者は、そのセッションの間だけ、その特技の【騎士召喚】を修得する。また、セッションに一度だけ、その【騎士召喚】の判定を自動的に成功にすることができる。" - elsif num == 3 - output = "魔王。その人物は、実は姿を変え、人間界に顕現した魔王だった。象徴する特技は#{magicalogia_random_skill_table_text_only}である。調査者は、そのセッションの間だけ、その特技の【魔王召喚】を修得する。また、セッションに一度だけ、その【魔王召喚】の判定を自動的に成功にすることができる。" - elsif num == 4 - output = '魔法屋。その人物は、魔法の道具を取引するタリスモンガーだった。以降、この人物のいるシーンでは、自分のチャージしている魔素1つを別の魔素1つに交換してもらうことができる。また、この人物のいるシーンでは、自分の装備魔法1つを修得可能な別の装備魔法1つに交換してもらうことができる。' - elsif num == 5 - output = '師匠。その人物は、かつて調査者に魔法を教えた師匠だった。以降、この人物のいるシーンでは、自分の修得している特技1つを修得可能な別の特技1つに交換してもらうことができる。また、この人物のいるシーンでは、自分の呪文魔法1つを修得可能な別の呪文魔法1つに交換してもらうことができる。' - elsif num == 6 - output = '無垢。その人物は、汚れ無き心の持ち主だった。このNPCは、プライズとして扱う。このプライズの持ち主は、セッション中に一度、【浄化】の呪文をコストなしで使用することができる。この判定は自動的に成功する。' - end - return output, num - end - - # ブランク秘密表 - def magicalogia_blank_secret_table - outtext = "" - outnum = '' - num, = roll(1, 6) - if num == 1 - outtext, outnum = magicalogia_inveterate_enemy_table - outtext = "宿敵。#{outtext}" - elsif num == 2 - outtext, outnum = magicalogia_conspiracy_table - outtext = "謀略。#{outtext}" - elsif num == 3 - outtext, outnum = magicalogia_fate_table - outtext = "因縁。#{outtext}" - elsif num == 4 - outtext, outnum = magicalogia_cueball_table - outtext = "奇人。#{outtext}" - elsif num == 5 - outtext, outnum = magicalogia_force_field_table - outtext = "力場。#{outtext}" - elsif num == 6 - outtext, outnum = magicalogia_alliance_table - outtext = "同盟。#{outtext}" - end - outnum = "#{num},#{outnum}" - return outtext, outnum - end - - # プライズ表 - def magicalogia_prise_table - table = [ - '敗者は内側から破裂し、四散する。功績点を1点獲得する。', - '敗者は無数の蟲や小動物へと姿を変え、それを使い魔とする。勝者は好きな特技(魂の特技は除く)を一つ選ぶ。そのセッションの間、指定特技がその特技の【精霊召喚】【魔剣召喚】【悪夢召喚】のうち一つを修得する。', - '敗者は爆発音と共にどこかへと消え、辺りには硫黄のような匂いだけが残る。勝者はそのセッション中に、一度だけ好きなタイミングで「変調」一種を回復することができる。', - '敗者は奇妙な形をした数枚の金貨へと姿を変える。勝者は倒した相手のランクと等しい魔貨を獲得する', - '敗者は地面から突如現れた無数の腕に引き込まれながら、勝者に向かって賞賛の言葉と共に重要な何かを語る。公開されているハンドアウト一つを選び、その【秘密】を公開する。', - '敗者は無数の光の粒へとなっていき、そこから魔素を得る。勝者は好きな魔素を2点獲得する(立会人に渡してもよい)。', - '敗者はバラバラのページとなって地面に散らばり、そこから未知の力を読み取る。勝者は【一時的魔力】を2点獲得する。', - '敗者は妙なる音楽へと変わり、その曲は勝者の心にしみいる。勝者は倒した相手のランクと等しい魔貨を獲得する。', - '敗者は一輪の花となる。勝者はそのセッション中に、一度だけ自分が振った行為判定のサイコロを振り直す権利を得る。', - '敗者は言葉のかけらとなっていき、勝者はそこから未来の運命を読み取る。勝者は「事件表」を使用し、その結果を記録しておく。それ以降、そのセッション中のドラマシーンに、同じシーンに登場しているキャラクター一人を選び、一度だけその結果を適用できる。', - '敗者は影となって、その場に焼き付き、異境への入り口となる。勝者は、好きな異境を一つ選ぶ。そのセッションの間、その異境へ移動できるようになる。', - ] - return get_table_by_2d6(table) - end - - # 極限環境シーン表 - def magicalogia_extreme_environment_scene_table - table = [ - '上下左右も分からない、完全なる闇。このシーンに登場しているPCのうち一人は、≪光≫の判定を行う。成功すると、闇の魔素二個を獲得する。失敗すると、「遮断」の変調を受ける。誰かが判定を行うと、成否に関わらずこの効果はなくなる。', - '眼前に広がる業火の海。何もかも喰らい尽すような敵意は圧倒的だ。≪炎≫の判定を行う。失敗すると【魔力】が2点減少する。', - '激しい天候で地形が一変する。さきほどまでの光景が嘘のようだ。≪嵐≫で判定を行う。失敗すると、【魔力】が1点減少する。', - 'どこまでも続く、砂漠。舞い上がる砂塵に、目を開けていられない。≪大地≫の判定を行う。失敗すると、「封印」の変調を受ける。', - '言葉さえも凍り付きそうな極寒。生き物の気配は感じられない。【魔力】が1点減少する。', - lambda { return "苛酷な自然環境によってキミたちは窮地に立たされる。#{magicalogia_random_skill_table_text_only}の判定を行うこと。成功すると、なんとか使えそうなものを探し、好きな魔素が一個発生する。失敗すると、キミの負った傷は時間と空間を超えて、キミのアンカーに不幸をもたらす。「運命変転」が発生する。" }, - '一面の雪野原に、てんてんと足跡が残っている。どうやら、先客がいるらしい。', - '切り立つ崖の上。眼下には大きな海が広がっている。上空からは海鳥の鳴き声が聞こえてくる。', - '高重力の地。身体全体が鉛に変わってしまったかのように感じられる。≪重力≫の判定を行う。失敗すると【魔力】が1点減少する。', - '深い水の底。青に染まった空間に、何かが漂っている。このシーンに登場しているPCのうち一人は≪海≫の判定を行うことができる。成功すると、星の魔素を三個獲得する。失敗すると、【魔力】が2点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - '鼓膜を破りそうな、轟音が鳴り響く。言葉による意思の疎通は諦めた方がよさそうだ。≪旋律≫の判定を行う。失敗すると、チャージしているまその中から好きなものを二個失う。', - ] - return get_table_by_2d6(table) - end - - # 内面世界シーン表 - def magicalogia_innner_world_scene_table - table = [ - '肌の色と熱い吐息で満たされた場所。無数の男女が、思いつく限りの肉の欲望を実践している。このシーンに登場しているPCのうち一人は、≪エロス≫の判定を行うことができる。成功すると【一時的魔力】を1点獲得する。失敗すると【魔力】が2点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - '壁一面に、黒光りする虫がびっしりと張り付き、羽音を立てている部屋。この精神の持ち主は、虫が好きなのだろうか、嫌いなのだろうか。このシーンに登場しているPCのうち一人は、≪蟲≫の判定を行うことができる。成功すると、元型「蟲の騎士」をそのセッションの間、相棒にできる。相棒は、破壊か消滅するまで、自分が何らかのシーンに登場すると、そのシーンの種類に関わらず、同じタイミングで召喚される。失敗すると、虫が一斉に飛び立ち、そのシーンに登場しているPC全員の【魔力】が1点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - '誰もいない教室。なぜか、ヒソヒソと囁く声がどこからともなく聞こえ、見られているような視線を感じる。このシーンに登場しているPCのうち一人は、≪不安≫の判定を行うことができる。成功すると、公開されているハンドアウトの中から、好きな【秘密】を公開することができる。失敗すると、「遮断」の変調を受ける。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - '薄暗いが暖かく、ひどく安らぐ空間。ここはまるで、母親の胎内のようだ。このシーンに登場しているPCが、魔素を消費して、【魔力】の回復を行う場合、魔素一個につき、【魔力】を2点回復できる。', - '遊園地。賑やかなパレードが目の前を通り過ぎて行くが、客は一人もいない。', - lambda { return "夜の道。もやもやと黒いものが後ろから、追いかけてくる。はっきりした姿も分からないのに、ひどく恐ろしく感じる。このシーンに登場するPCは、#{magicalogia_random_skill_table_text_only}の判定を行う。成功すると、好きな魔素二個を獲得できる。失敗した場合、もやもやとした黒いものは君のアンカーの前に現れる。「運命変転」が発生する。" }, - '夕暮れの街。なんだか寂しい気分になる。', - '床、壁、天井までが赤黒い色に染まった部屋。生臭い臭いが充満している。このシーンに登場しているPCのうち一人は≪血≫で判定を行うことができる。成功すると、【一時的魔力】2点を獲得する。失敗すると【魔力】が1点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - 'どこへとも行くか知れぬ電車の中。あなたの他に乗客はいないようだが……。このシーンに登場しているPCのうち一人は≪異界≫で判定を行うことができる。成功すると、好きな異境一つに行くことができる魔法門を発見できる。失敗するとこのシーンに登場しているPC全員の【魔力】が2点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - '大勢の人が行き交う雑踏の中。誰も、あなたに関心を払わない。このシーンでは「不干渉」の世界法則を無視して、好きなキャラクターを調査することができる。', - 'どことも知れぬ空間。あなたの最も愛しい人が、目の前に現れる。このシーンに登場しているPCのうち一人は、≪情熱≫の判定を行うことができる。成功すると、好きなアンカーに対する【運命】を1点上昇させることができる。失敗すると、「運命変転」が発生する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - ] - return get_table_by_2d6(table) - end - - # 魔法都市シーン表 - def magicalogia_magic_city_scene_table - table = [ - '急に爆発が起こる。誰かが実験で失敗したらしい。「綻び」の変調を受けた後、「力」の魔素を二個獲得する。', - '標本の並ぶ地下室。実験によって生み出された魔法生物が、瓶詰めにされて並んでいる。', - 'ごった返す市場。色とりどり食料品や日用品を始め、幻獣の目玉やマンドラゴラの根といった、魔法の触媒となる品までが商われている。このシーンに登場しているPCは、一人一度だけ、功績点1点を消費することで、好きな魔素を二個獲得することができる。', - '魔法使いたちの集うサロン。ここなら、有益な情報が得られそうだ。このシーンに登場しているPCのうち一人は、≪物語≫の判定を行うことができる。成功すると、公開されているハンドアウトの中から、好きな【秘密】を公開することができる。失敗すると「封印」の変調を受ける。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - '大通り。幻獣の引く馬車や、絨毯や箒などの空飛ぶ乗り物が、せわしなく通り過ぎる。', - lambda { return "広場。魔法使い同士が喧嘩を始め、魔法が飛び交い始める。このシーンに登場したPCは、#{magicalogia_random_skill_table_text_only}で判定を行う。成功すると、好きな魔素を二個獲得する。失敗すると、この場所の魔法の影響が時空を超えて、アンカーに現れる。「運命変転」が発生する。" }, - '賑わう酒場。客の中には妖精や魔物たちの姿も多い。このシーンに登場したPCは、【魔力】が1点回復する。', - '入り組んだ路地裏。奇妙な異種族たちで構成された盗賊団に襲われる。≪雷≫で判定を行う。失敗すると【魔力】が2点減少するか、もし魔法にチャージした魔素を二個以上持っていればそれを消費するか、どちらかを選ぶ。', - '都市の門。新たなる知識を求めてやってきた者、自分の世界へ帰る者、様々な世界の様々な人々が行き来する。', - '歓楽街。角や尻尾、翼を持つ、肌もあらわな美女たちが、なまめかしい視線を送ってくる。このシーンに登場しているPCのうち一人は、≪エロス≫で判定を行うことができる。成功すると、元型「エロスの乙女」をそのセッションの間、相棒にできる。相棒は、破壊か消滅するまで、自分が何らかのシーンに登場すると、そのシーンの種類に関わらず、同じタイミングで召喚される。失敗すると【魔力】が1点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - '闘技場。魔法使いが、強化した元型や幻獣を競い合わせている。シーンプレイヤーのPCは、一度だけ、基本ルールブックに載っている、ランク4以下の〈書籍卿〉か〈越境者〉に、魔法戦を挑むことができる。勝利すると、「プライズ表」を使用することができる。', - ] - return get_table_by_2d6(table) - end - - # 死後世界シーン表 - def magicalogia_world_after_dead_scene_table - table = [ - '寂しげな村。影のような人々が時折行き来する。ここでは、死んだキャラクターに会うことができる。このシーンに登場しているPCのうち一人は、疵をひとつだけ、克服することができる。', - 'どこまでも広がる花畑。穏やかな雰囲気に満たされている。', - '裁判所。強面の裁判官が、溢れる死者の群れに、次々と裁きを下している。≪嘘≫の判定を行う。失敗すると、【魔力】が2点減少する。', - '白い光に包まれた食堂。豪勢な食事と美酒が、尽きることなく振る舞われる。このシーンに登場しているPCのうち一人は、≪肉≫の判定を行うことができる。成功すると、【一時的魔力】を1点獲得する。失敗すると、「病魔」の変調を受ける。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - lambda { return "床が白い雲になっている場所。雲の隙間からは、現世のような風景が見える。#{magicalogia_random_skill_table_text_only}の判定を行う。成功すると、このセッション中一度だけ、判定のサイコロを振り直すことができる。失敗すると、時空を越えて、アンカーが死後世界を垣間見てしまう。「運命変転」が発生する。" }, - '広い川の岸辺。向こう岸は、現世なのだろうか。このシーンに登場しているPCのうち一人は≪円環≫の判定を行うことができる。成功すると、魔力をリセットできる。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - '礼拝堂。死んでもなお、祈り続ける魂が、無言で跪いている。このシーンに登場しているPCのうち一人は、≪祈り≫の判定を行うことができる。成功すると、【一時的魔力】を2点獲得する。失敗すると、「不運」の変調を受ける。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - 'ごく普通の住宅街。日常の営みを繰り返す魂の集う場所だ。', - '拷問場。鬼たちが、使者に無限の責め苦を味合わせている。このシーンに登場しているPCのうち一人は、≪絶望≫の判定を行うことができる。成功すると、【一時的魔力】を2点獲得する。失敗すると、「綻び」の変調を受ける。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - '戦場。羽兜の乙女に率いられた戦士たちが、巨人と戦いを繰り広げている。このシーンに登場しているPCのうち一人は、≪天空≫で判定を行うことができる。成功すると、【一時的魔力】を3点獲得する。失敗すると、【魔力】が3点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - 'どことも知れぬ空間。あなたの最も愛しい人が、目の前に現れる。このシーンに登場しているPCのうち一人は、≪情熱≫の判定を行うことができる。成功すると、好きなアンカーに対する【運命】を1点上昇させることができる。失敗すると、「運命変転」が発生する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - ] - return get_table_by_2d6(table) - end - - # 迷宮世界シーン表 - def magicalogia_labyrinth_world_scene_table - table = [ - 'がらんとした、石畳の部屋。床に描かれた魔法陣が、不気味な光を放っている。このシーンに登場しているPCのうち一人は、≪異界≫で判定を行うことができる。成功すると、その魔法陣を地球に帰還できる魔法門として使用できる。失敗すると、魔法門から現れた道の怪物に襲われ、このシーンに登場しているPC全員の【魔力】が1D6減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - '微かなランプの明かりに照らし出される牢獄。檻の中には、誰かの朽ちた骸が転がっている。このシーンに登場しているPCのうち一人は、≪死≫で判定を行うことができる。成功すると公開されているハンドアウトの中から、好きな【秘密】を公開することができる。失敗すると、死体が呪詛の言葉を吐き、このシーンに登場しているPC全員が「綻び」の変調を受ける。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - '通路の先に、扉と看板がある。看板の文字は宿屋と読める。このシーンに登場しているPC全員は、一度だけ、功績点1点を消費することで、調律を一度行うことができる。', - '人一人通るのが、やっとの狭い通路が続いている。この廊下はどこまで伸びているのだろう?', - '幾つもの扉と幾つもの分かれ道を進む。おや?いつの間にか、きみは迷ってしまった。シーンプレイヤー以外のPCが、このシーンに登場しようとする場合、≪道≫で判定を行う。失敗したPCは、このシーンに登場できない。', - lambda { return "怪物が現れ、キミたちを襲う。このシーンに登場しているPC全員は、#{magicalogia_random_skill_table_text_only}の判定を行うこと。成功すると、怪物を倒し、好きな魔素が一個発生する。失敗すると、キミの負った傷は時間と空間を越えて、キミのアンカーに不幸をもたらす。「運命変転」が発生する。" }, - '目の前には、似たような扉がずらりとならんでいる。どの扉を開いたものか?', - '暗闇の中から、うなり声が聞こえてくる。どうやら、近くに怪物が潜んでいるようだ。うまくやりすごせないものか……。≪静寂≫で判定を行う。失敗すると、【魔力】が1点減少する。', - '通路が途切れ、深い谷が口を開けている。谷底まで光は届かず、まるで地の底まで続いているかのようだ。「闇」の魔素を一個獲得できる。', - '金貨や銀貨、宝石に王冠、山のような宝物の積み上げられた部屋。番人は見当たらないが……。このシーンに登場しているPCのうち一人は、≪黄金≫で判定を行うことができる。成功すると1D6点の魔貨かランダムに決定した魔素三個を獲得できる。失敗すると、このシーンに登場しているPC全員の【魔力】が1点減少する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - '行き止まりの壁には、一見、意味不明な文字が並んでいる。ここから先に進むためには、この文字の謎を解かねばならないのだろうか。このシーンに登場しているPCのうち一人は、≪謎≫で判定を行うことができる。成功すると公開されているハンドアウトの中から、好きな【秘密】を公開することができる。失敗すると、部屋に仕掛けられた罠が発動し、このシーンは強制的に終了する。誰かが判定を行うと、成否にかかわらずこの効果はなくなる。', - ] - return get_table_by_2d6(table) - end - - # 大判シーン表 - def magicalogia_new_scene_table - table = [ - 'ここではないどこか。魔法の力が満ちた異境の一つへ、一瞬だけ旅をする。そのシーンに星の魔素が1点発生する。', - '夢の中。遠く過ぎ去った日々が、あなたの前に現れる。そのシーンに夢の魔素が1点発生する。', - '強く風が吹き、雲が流されていく。遠く、雷鳴が聞こえた。そのシーンに力の魔素が1点発生する。', - '静かなカフェの店内。珈琲の香りと共に、優しく穏やかな雰囲気が満ちている。', - '無人の路地裏。ここならば、邪魔が入ることもないだろう。', - lambda { return "周囲で〈断章〉が引き起こした魔法災厄が発生する。#{magicalogia_random_skill_table_text_only}の判定を行うこと。成功すると、そのシーンに好きな魔素が1点発生する。失敗すると、「運命変転表」を使用する。" }, - 'なんの変哲もないおだやかな風景。しかし、その日常の背後で魔法災厄の影を感じる。', - '読んでいた本を閉じる。そこには、あなたが知りたかったことが書かれていた。なるほど、そういうことか。', - '夜の街を歩く。暖かな家々の明かりが、遠く見える。そのシーンに歌の魔素が1点発生する。', - '大勢で賑わう広場。祭りでも行われているのだろうか? 誰かを呼ぶ声が聞こえる。そのシーンに獣の魔素が1点発生する。', - '悲劇の予感。家族の不幸、友の絶望、仲間の死......このままだと起きてしまうかもしれない出来事の幻が見える。そのシーンに闇の魔素が1点発生する。', - ] - - return get_table_by_2d6(table) - end - - # 指定特技(星) - def magicalogia_random_skill_star_table - table = [ - '黄金', '大地', '森', '道', '海', '静寂', '雨', '嵐', '太陽', '天空', '異界', - ] - - return get_table_by_2d6(table) - end - - # 指定特技(獣) - def magicalogia_random_skill_beast_table - table = [ - '肉', '蟲', '花', '血', '鱗', '混沌', '牙', '叫び', '怒り', '翼', 'エロス', - ] - - return get_table_by_2d6(table) - end - - # 指定特技(力) - def magicalogia_random_skill_force_table - table = [ - '重力', '風', '流れ', '水', '波', '自由', '衝撃', '雷', '炎', '光', '円環', - ] - - return get_table_by_2d6(table) - end - - # 指定特技(歌) - def magicalogia_random_skill_poem_table - table = [ - '物語', '旋律', '涙', '別れ', '微笑み', '想い', '勝利', '恋', '情熱', '癒し', '時', - ] - - return get_table_by_2d6(table) - end - - # 指定特技(夢) - def magicalogia_random_skill_dream_table - table = ['追憶', '謎', '嘘', '不安', '眠り', '偶然', '幻', '狂気', '祈り', '希望', '未来'] - - return get_table_by_2d6(table) - end - - # 指定特技(闇) - def magicalogia_random_skill_night_table - table = [ - '深淵', '腐敗', '裏切り', '迷い', '怠惰', '歪み', '不幸', 'バカ', '悪意', '絶望', '死', - ] - - return get_table_by_2d6(table) - end - - # 特技だけ抜きたい時用(星) あまりきれいでない - def magicalogia_random_skill_table_text_only_star - text, = magicalogia_random_skill_star_table - return text - end - - # 特技だけ抜きたい時用(獣) あまりきれいでない - def magicalogia_random_skill_table_text_only_beast - text, = magicalogia_random_skill_beast_table - return text - end - - # 特技だけ抜きたい時用(力) あまりきれいでない - def magicalogia_random_skill_table_text_only_force - text, = magicalogia_random_skill_force_table - return text - end - - # 特技だけ抜きたい時用(歌) あまりきれいでない - def magicalogia_random_skill_table_text_only_poem - text, = magicalogia_random_skill_poem_table - return text - end - - # 特技だけ抜きたい時用(夢) あまりきれいでない - def magicalogia_random_skill_table_text_only_dream - text, = magicalogia_random_skill_dream_table - return text - end - - # 特技だけ抜きたい時用(闇) あまりきれいでない - def magicalogia_random_skill_table_text_only_night - text, = magicalogia_random_skill_night_table - return text - end - - # 魔法使いの災厄 - def magicalogia_magi_fortune_change_table - table = [ - '嫌悪。〈愚者〉たちを嫌悪し、〈大法典〉のやり方に疑問を覚えるようになる。この不幸が二度発生すると、その魔法使いは死亡しないで〈書籍卿〉になり、NPCとなる。この不幸が〈書籍卿〉に降り注いだ場合、不幸は無効化される。', - '悪心。魔法に関する強い願いや邪悪な欲望が肥大化していく。この不幸が二度発生すると、その魔法使いは死亡した後〈禁書〉となり、NPCとなる。', - '幽霊。肉体がほとんど失われ、霊的存在になる。この不幸が二度発生すると、その魔法使いは死亡ではなく消滅する。', - '連鎖。運命変転が発生する。この不幸が二度発生しても死亡しない。', - '変調。ランダムに変調1つを受ける。この不幸が二度発生しても死亡しない。', - '消耗。【魔力】が1点減少する。この不幸が二度発生しても死亡しない。', - ] - return get_table_by_1d6(table) - end - - # 魔法書架シーン表 - def magicalogia_magic_bookshelf_scene_table - table = [ - lambda { return "〈禁書〉の保管庫へ入ることを許可された。幾重にも張り巡らされた決壊や、鋭い目つきの書警たちが目に付く。その隙をついて、〈禁書〉が襲い掛かってきた!このシーンに登場したPCは一人だけ《#{magicalogia_random_skill_table_text_only_force}》の判定を行う。失敗すると、【魔力】が3点減少する。成功すると、【一時的魔力】を3点得る。誰かが判定すると、成否にかかわらず、この効果はなくなる。" }, - '私室。狭いけれど、一番落ち着ける場所だ。このシーンに登場しているPCのうち一人は、【魔力】を上限まで回復させることができる。', - '町の図書館。いつのまにか、人界に戻ってきてしまったようだ。このシーンに登場しているPCのうち一人は、好きなキャラクターを1人選び、事件表を一回振って、その効果を適用する。', - '巨大な円卓がしつらえられた部屋。どうやらここは、会議場のようだ。', - '長い廊下。学院の制服に身を包んだ少年少女が、笑いさざめきながら駆けていく。', - lambda { return "荒れ果てた部屋。倒れた空っぽの本棚が、目に付く。これは〈大破壊〉の影響なのだろうか…。このシーンに登場するPCは、#{magicalogia_random_skill_table_text_only}の判定を行う。失敗すると、時空を超えてアンカーに影響が現れる。「運命変転」が発生する。" }, - '倉庫。未整理の本が山のように積まれて、司書たちが分類整理に追われている。', - '誰かの研究室に迷い込む。積まれている魔導書が興味深い。', - '高い天井と、天井まで続く壁を埋め尽くす、本の群れ。このすべてが、この書庫に所蔵された魔導書だ。このシーンに登場しているPCのうち一人は、【一時的魔力】を1点獲得する。', - lambda { return "魔導書の閲覧室。数人の魔法使いが、熱心に魔導書を読んでいる。このシーンに登場しているPCのうち一人は、#{magicalogia_random_skill_table_text_only}の判定を行うことができる。成功すると、修得している魔法を一つ、修得可能な別の魔法に入れ替えることができる。失敗すると、「封印」の変調を受ける。誰かが判定すると、成否にかかわらず、この効果はなくなる。" }, - '本棚と本棚の間に、唐突に扉が浮かんでいる。この扉は、異界につながる戸口だ。一体どこにつながっているのだろう。異界シーン表の中からランダムに一つを選んで、その効果を適用する。', - ] - - return get_table_by_2d6(table) - end - - # 魔法学園シーン表 - def magicalogia_magic_academy_scene_table - table = [ - '目の前に美しい黒龍が現れた。学院の長、ザナルパトスだ。彼は、何を告げようとしているのだろうか。', - lambda { return "突然何かが襲い掛かってきた!生徒が元型の召喚に失敗したようだ。このシーンに登場しているPCのうち一人は、≪#{magicalogia_random_skill_table_text_only_force}≫の判定を行う。失敗すると、【魔力】が3点減少する。成功すると、【一時的魔力】を3点得る。誰かが判定すると、成否にかかわらず、この効果はなくなる。" }, - lambda { return "ここは女子寮?このシーンに男性のPCが登場した場合、その男性PCは≪#{magicalogia_random_skill_table_text_only_beast}≫の判定を行う。失敗すると、「封印」の変調を受ける。" }, - '寮の廊下。「どなたですか?」寮監のシグリットに呼び止められた。このシーンに登場しているPCは≪自由≫で判定を行う。失敗すると、このシーンで行う判定すべてにマイナス1の修正を受ける。', - '天井の高い廊下。分厚い扉の向こうからかすかに授業を行う講師の声が聞こえてくる。', - lambda { return "扉を開けて現れたのは、よく知る相手だった。なぜか、学院に迷い込んでしまったようだ。#{magicalogia_random_skill_table_text_only}で判定を行う。失敗すると、「運命変転」が発生する。" }, - '誰かが作った秘密の小部屋に迷い込んでしまう。学園ではあまり食べられないお菓子が山のように仕舞われているようだ。', - '学院西部に広がるアーデンの森。鳥の鳴き声が聞こえる。', - lambda { return "授業を行っている教室。講師が呼び出した元型がこちらに向かって飛んでくる。このシーンに登場しているPCは一人だけ#{magicalogia_random_skill_table_text_only}で判定を行う。失敗すると【魔力】が1点減少する。成功すると、その特技の精霊が召喚できる。誰かが判定すると、成否にかかわらず、この効果はなくなる。" }, - lambda { return "生徒に何か魔法を見せて欲しいと乞われる。このシーンに登場しているPCは一人だけ、≪#{magicalogia_random_skill_table_text_only_dream}≫の判定を行う。失敗すると、「不運」の変調を受ける。成功すると、「夢」の魔素をを2点獲得する。誰かが判定すると、成否にかかわらず、この効果はなくなる。" }, - lambda { return "自習室。生徒たちが必死に魔導書を理解しようとしている。このシーンに登場しているPCは一人だけ、≪#{magicalogia_random_skill_table_text_only_star}≫の判定を行う。成功すると、好きな魔素をを2点獲得する。誰かが判定すると、成否にかかわらず、この効果はなくなる。" }, - ] - - return get_table_by_2d6(table) - end - - # クレドの塔シーン表 - def magicalogia_tower_credo_scene_table - table = [ - '目の前に一人の少女が現れる。眠り姫の長、ラトゥナだ。ずっと眠り続けている筈の彼女が現れたのは、いったい何を告げるためなのだろうか。', - lambda { return "突然何かが襲い掛かってきた!未熟な魔法使いが元型の召喚に失敗したようだ。このシーンに登場しているPCは一人だけ、≪#{magicalogia_random_skill_table_text_only_force}≫の判定を行う。失敗すると、【魔力】が3点減少する。成功すると、【一時的魔力】を3点得る。誰かが判定すると、成否にかかわらず、この効果はなくなる。" }, - lambda { return "話しかけてきた天涯預言者が、不幸な未来を予言する。このシーンに登場しているPCは一人だけ、≪#{magicalogia_random_skill_table_text_only_dream}≫の判定を行う。失敗すると、【魔力】が1点減少する。成功すると、「夢」の魔素をを1点獲得する。誰かが判定すると、成否にかかわらず、この効果はなくなる。" }, - '塔の内側の壁に並ぶ、無数の魔道書の前。この中から、なにかの手がかりが得られるかも知れない。このシーンに登場しているPCのうち一人は、【一時的魔力】を1点獲得する。', - '小さな客間で〈大法典〉からの使者との会合が行われている。天涯が新たな予言を伝えているのかも知れない。', - lambda { return "こんな場所にいる筈のない人が君の前にあらわれる。眠り姫の眠りの中に迷い込んでしまったらしい。#{magicalogia_random_skill_table_text_only}で判定を行う。失敗すると、「運命変転」が発生する。" }, - '塔の上。山脈の連なりとその上に浮かぶ月が、塔を静かに見下ろしている。', - '塔の外壁に作られた螺旋階段の上。強い風が吹き付けている。', - 'クレドの塔に続く、険しい山道。何かが潜んでいるんだろうか…。「獣」の魔素を1点獲得できる。', - '幻夢殿の中。眠り姫達の安らかな寝息が聞こえてくる。こちらも眠くなってくる。', - '突然、目の前に扉が現れる。この扉は、異界につながる戸口だ。一体どこにつながっているのだろう。異界シーン表の中からランダムに一つを選んで、その効果を適用する。', - ] - - return get_table_by_2d6(table) - end - - # 並行世界シーン表 - def magicalogia_parallel_world_scene_table - table = [ - 'カフェのテーブル。FMラジオは、去年解散したはずのバンドの、先日発表した新曲を流している。このシーンに登場しているPCのうち一人は、「時の流れ表」を1回振り、効果を適用する。', - lambda { return "賑やかな通り。向こうから、あなたにそっくりな人物が歩いてくる。あれはこの世界の、あなた自身だろうか。このシーンに登場しているPCの一人は、#{magicalogia_random_skill_table_text_only}の判定を行う。成功すると、好きな魔素をを2点獲得する。失敗すると、「病魔」の変調を受ける。誰かが判定すると、成否にかかわらず、この効果はなくなる。" }, - '夜の街を歩く。よく知っている筈の風景なのに、どこか違うという違和感がぬぐえない。', - '買い物客でにぎわう商店街。つぶれたはずの店が健在であったり、繁盛しているはずの店が潰れていたりしている。', - '繁華街。ビルの大型ビジョンから、知らない国同士の戦争に関するニュースが流れている。', - lambda { return "縁のある人の家の前。玄関から、見知らぬ人が現れ、こちらを不審げに眺めている。この人はもしかして…?#{magicalogia_random_skill_table_text_only}で判定を行う。失敗すると、「運命変転」が発生する。" }, - '乗客のいない電車の中。時折、聞き覚えのない駅名がアナウンスされる。', - '学校帰りの学生たちが目立つ、駅前のロータリー。あの学校の制服のリボンは、赤だっただろうか?', - '洋館の前。ここに、こんな建物はなかった筈だが。', - lambda { return "小学校の前を通る。音楽室の窓から、見知らぬ音楽家の肖像が見える。≪#{magicalogia_random_skill_table_text_only_poem}≫の判定を行う。失敗すると、「封印」の変調を受ける。" }, - '目の前で、以前、経験した出来事が起きる。この世界では、これは、今から起きる出来事なのだ。このシーンに登場しているPCのうち一人は、このシーンの間、判定に+1の修正を受ける。', - ] - - return get_table_by_2d6(table) - end - - # 終末シーン表 - def magicalogia_post_apocalypse_scene_table - table = [ - '夜。雨宿りのために足を踏み入れた寺院に危険は気配はなく、ゆっくり休めそうだ。静に時が流れていく。', - '夜。雑草が生い茂り、ツタに覆われた人気のない山村で巨大な肉食獣が襲い掛かってくる。このシーンに登場しているPCのうち一人は、≪牙≫の判定を行わなければならない。失敗すると、【魔力】が2点減少する。誰かが判定すると、成否にかかわらず、この効果はなくなる。', - '夜。大規模な爆撃で地平線と化した戦場跡。どこの国ともわからぬ国旗が夜風に吠えている。虚憑が一体襲い掛かってくる。魔法戦を行うこと。この魔法戦はゲーム中に一度だけ発生する。', - lambda { return "夜。もはや廃墟と化した埃っぽい都市。〈愚者〉が虚憑に襲われている。このシーンに登場しているPCの一人は、#{magicalogia_random_skill_table_text_only}の判定することができる。成功すれば救出でき、助け出した〈愚者〉に対し、好きな属性で運命を1点獲得する。失敗すると【魔力】を3点失う。" }, - '夜。虚憑の群れに付きまとわれる。シーンプレイヤーは≪悪意≫の判定を行う。失敗するとこのシーンの間、あらゆる判定がマイナス2される。', - '夜明け前。ハイウェイが一直線に突き抜ける灰色の荒野。静かすぎて自らの鼓動を感じるほどだ。虚憑が一体襲い掛かってくる。魔法戦を開始すること。2ラウンド経過するまでは夜、以降のラウンドは昼として処理する。この魔法戦はゲーム中に一度だけ発生する。', - '昼。〈愚者〉の子供が、歴史的な遺産を遊び場に、一人遊びをしている。この子の未来はどうなるのだろうか。', - '昼。世界大戦で墜落した戦闘機が、砂漠の砂に半ば埋もれている。だが、そのエンジンは死んでいない。このシーンに登場しているPCの一人は≪風≫で判定を行うことができる。成功すると魔力のリセットを行う。成否にかかわらず、この効果は一度だけ発生する。', - '昼。広い建物が並ぶ美しい海岸。かつてはリゾート地だったそこには、白い遺骨が大量に打ち上げられ、潮騒に洗われている。誰か一人が≪別れ≫の特技の判定に成功すると、ランダムに選んだ魔素3点を獲得する。誰かが判定すると、成否にかかわらず、この効果はなくなる。', - '昼。崩壊した農村のかたわらで、美味しそうな果実を発見する。≪大地≫の判定に成功すると【魔力】が2点回復する。', - '夕刻。錆び付いた線路。その先までたくさんのしゃれこうべが無造作に転がっている。虚憑が一体襲い掛かってくる。魔法戦を開始すること。2ラウンド経過するまでは昼、以降のラウンドは夜として処理する。この魔法戦はゲーム中に一度だけ発生する。', - ] - - return get_table_by_2d6(table) - end - - # 異世界酒場シーン表 - def magicalogia_god_bar_scene_table - table = [ - 'マスターの雷神に絡まれる。このシーンに登場しているPCのうち一人は、雷神相手に「事件表」を振る。', - '神々しく光輝く、威厳に溢れた神が現れ、場の雰囲気を支配する。このシーンの間、「世界法則」に「調査阻害」が加わる。', - '上の階に登ろうとすると、キマイラが待ち構えている。このシーンに登場しているPCのうち一人は、≪炎≫で判定を行う。失敗すると、【魔力】が1点減少する。成功するまで判定を行うこと。この効果は一度だけ発生する。', - '「かんぱーい!」注がれた酒をつい飲んでしまう。ずいぶん強いスピリッツのようだが。このシーンに登場しているPCのうち一人は、≪水≫で判定を行うことができる。成功すると魔貨を1点手に入れる。成否にかかわらずこの効果は一度だけ発生する。', - '乾杯のかけ声、酔っ払いの笑い声、あちこちのテーブルでは大きな話し声…。どこにでもある、酒場の光景だ。', - lambda { return "客の一人に、無理矢理酒を飲まされる。なんて強い酒だろう。#{magicalogia_random_skill_table_text_only}で判定を行う。失敗すると、「運命変転」が発生する。" }, - '階段を上っている。いったいいつから登り始めたのか記憶にない。これはどこまで続くのだろう。', - '建物の中の筈なのに、雷雲が立ちこめ、嵐が巻き起こる。神々がケンカしている!このシーンに登場しているPCのうち一人は、≪嵐≫で判定を行う。失敗すると、【魔力】が2点減少する。成否にかかわらずこの効果は一度だけ発生する。', - '扉の前に、妖怪が張り付いていて、通してくれない。妖怪は何かくれと強請ってくる。このシーンに登場しているPCのうち一人は、好きな魔素を1点減少する。減少する魔素がない場合、【魔力】が1点減少する。', - '上の階に登ろうとすると、竜が待ち構えている。このシーンに登場しているPCのうち一人は、≪牙≫で判定を行う。失敗すると、「綻び」の変調を受ける。成否にかかわらず、この効果は一度だけ発生する。', - '美しい女神が、鏡をのぞき込んでいる。どうやら、運命が映る鏡だと言うのだが。このシーンに登場しているPCのうち一人は、≪未来≫で判定を行っても良い。成功すると好きなアンカーとの【運命】が1点上昇する。成否にかかわらず、この効果は一度だけ発生する。', - ] - - return get_table_by_2d6(table) - end - - # ほしかげシーン表 - def magicalogia_starlight_scene_table - table = [ - 'あなたの持つ「切符」は無効であると車掌に告げられる。他の乗客の視線を感じる。このシーンに登場しているPCのうち一人は、もう一度「切符」を調達しなければならない。魂の特技の判定を、成功するまで繰り返すこと。', - 'ごとごと。ごとごと。ガラスより透き通る銀河の水辺を走る。色とりどりの花々が星の光に冴え渡っては通り過ぎて行く。', - 'ふと目を覚ます。汽車に揺られていつの間にか眠っていたらしい。夢の中で誰かと会っていた気がしてならない。シーンプレイヤーが≪深淵≫の判定に成功すると、ランダムに選んだアンカーとの運命が1点上昇する。', - '銀河の水辺にぽつりと浮かぶ島に、目の覚めるような白い立派な十字架がそびえたっている。このシーンに登場しているPCのうち一人は、≪祈り≫で判定を行うことができる。成功すると、以降このゲーム中に発生する魔法災厄が一回だけ無効化される。誰かが判定すると、成否にかかわらず、この効果はなくなる。', - '窓から銀河を見つめる、黒い外套を着た少女がいる。あなたに気づくとお菓子を差し出し、にこりと笑って去っていく。シーンプレイヤーはランダムに選んだ魔素を1点獲得する。', - 'ノイズ混じりの車内放送が「停車駅」への到着を告げる。しばらくすると「汽車」が止まった。キャラクターは「停車駅」で降りることができる。降りる場合、「停車駅」の世界法則を決定し、その法則に従ってシーンを進めること。', - '車窓の向こうに、星明りに照らされたススキ野原が青白く広がる。そんな中で、不思議な紋様の書かれた三角標が何本か、ぽつり、ぽつりと立ち尽くしているのが見えた。', - '気づくと誰もいない。青いビロウドを張った座席だけが、空間をむなしく彩っている。シーンプレイヤー以外のPCが、このシーンに登場しようとする場合、≪静寂≫で判定を行う。失敗したPCは、このシーンに登場できない。', - lambda { return "「この席、よろしいかな?」あなたの隣に〈書籍卿〉が座る。#{magicalogia_random_skill_table_text_only}の判定に成功すると公開されているハンドアウトの中から、好きなものを選び、その【秘密】を公開することができる。誰かが判定すると、成否にかかわらず、この効果はなくなる。" }, - '銀河を超える渡り鳥の群れ。しばし「汽車」と並走し、やがて離れ、天の川のようにきらきらした光の帯になっていく。このシーンに登場しているPCのうち一人は、≪翼≫で判定を行うことができる。成功すると魔力をリセットできる。誰かが判定すると、成否にかかわらず、この効果はなくなる。', - '隣の車輛から誰かが移ってきた。なんと、あなたのアンカーである。このシーンに登場しているPCをランダムに一人選び、そのPCのアンカーの中から、この異境に存在しない〈愚者〉のアンカーをランダムで一人選ぶこと。そのアンカーが、元の世界へ無事戻ることができたら、ゲーム終了時に功績点を1点獲得する。', - ] - - return get_table_by_2d6(table) - end - - # 世界法則追加表 - def magicalogia_world_low_add_table - table = [ - '世界法則「楽園」。この「停車駅」は美しく、慰めに満ちている。この「停車駅」で降りた〈愚者〉は魅了され、ここで一生を過ごすことになる。「刻印百景」の特技で判定に成功すると、これを押しとどめることができる。この判定は、対象の〈愚者〉一人につき一回しかできない。', - '世界法則「夜祭」。星の明かりや提灯を頼りに、終わらないお祭りが続いている。このシーンに登場しているキャラクターは、「刻印百景」の特技で判定に成功すると、【手当】の俗呪を使用したとき、消費した魔素1点につき、【魔力】を2点回復できるようになる。', - '世界法則「遺棄」。この「停車駅」の周辺は、様々なモノが捨てられている。シーンプレイヤーが「刻印百景」の特技で判定に成功すると、魔法【回想】と同じ効果が一回だけ発生する。誰を対象とするかは、シーンに登場しているキャラクターの中から、ランダムに選ばれる。', - '世界法則「妖蝶」。この「停車駅」の周辺は、魔素を帯びた不思議な色合いの羽をもつ蝶が生息している。このシーンに登場しているキャラクターは、「刻印百景」の特技で判定に成功すると、任意の魔素を2点獲得できる。失敗すると、ランダムに選んだ変調1つを受ける。', - 'この「停車駅」の周辺は死んだ〈愚者〉たちの終着点でもある。もしここで降りる〈愚者〉がいれば、その人物は死んでいたことになる。このシーンに登場しているキャラクターがその〈愚者〉をアンカーとしている場合、「刻印百景」の特技で判定に成功すると、「疵」になることなく運命欄から消去できる。', - '世界法則「魔法門」。他の異境への入り口が存在する。「刻印百景」の特技で判定に成功すると、その魔法門を発見できる。', - ] - return get_table_by_1d6(table) - end - - # さまよう怪物表 - def magicalogia_wondaring_monster_table - table = [ - lambda { return "トロールに率いられたオークとゴブリンの大軍団に遭遇する。数百という怪物たちが野蛮な叫び声をあげながら、魔法使いたちに襲い掛かってくる。≪#{magicalogia_random_skill_table_text_only_star}≫の判定を行う。全員の判定が終わったら、失敗したPCは1d6点のダメージを受ける。このとき、判定に成功したPCの数だけそのダメージの値を軽減できる。" }, - lambda { return "大きな猛牛の頭をした巨漢…ミノタウロスが立ち塞がる。手に持った青銅の斧を振りかぶる。シーンに登場しているPCの中からランダムに代表を1人選ぶ。代表は≪#{magicalogia_random_skill_table_text_only_beast}≫の判定を行う。失敗すると、PC全員は2点のダメージと「綻び」の変調を受ける。" }, - lambda { return "突如、ドラゴンが現れる。深紅の鱗に覆われた巨影は、鎌首をもたげると、数瞬後、強烈な炎を吐いた。シーンに登場しているPC全員は≪#{magicalogia_random_skill_table_text_only_force}≫の判定を行う。全員の判定が終わったら、PC全員は、1+判定に失敗した人数点のダメージを受ける。" }, - lambda { return "白銀の鎧に身を包んだ騎士が現れる。騎士は一対一の勝負を挑んできた。シーンに登場しているPCの中から代表を1人選ぶ。代表は≪#{magicalogia_random_skill_table_text_only_poem}≫の判定を行う。失敗すると代表は5点のダメージを受ける。" }, - lambda { return "美しい上半身と獣の下半身を持つ女怪が現れる。艶めかしくその体をくゆらせながら、手を差し出してくる。シーンに登場しているPC全員は≪#{magicalogia_random_skill_table_text_only_dream}≫の判定を行う。失敗したPCは、3点のダメージを受け、好きな魔素を3点失う。" }, - lambda { return "黒いローブをまとった幽鬼が現れる。枯れ木のような細い腕を振り上げて、勇気は呪いの言葉を叫ぶ。幽鬼の【魔力】は4点。シーンに登場しているPC全員は≪#{magicalogia_random_skill_table_text_only_night}≫の判定を行う。失敗したPCは、「不幸」の変調を受け、運命変転が発生する。" }, - ] - return get_table_by_1d6(table) - end - - # 落花表 - def magicalogia_fallen_flower_table - table = [ - '肉体が枯れるように崩壊する。その苦痛は耐え難いもののようだ。人の言葉にならない断末魔が聞く者を苛み、死ぬ。〈永遠〉をアンカーにしているものは、それが疵になる。', - '精神が壊れる。その唇から、〈永遠〉が抱く夢や願望だけが小さく小さく、壊れた楽器のように吐き出され、季節が変わる頃に、死ぬ。〈永遠〉をアンカーにしているものは、それが疵になる。', - 'その生命力が暴走し、死と再生が繰り返される。助けてくれと懇願する声すら出せない。1d6ヶ月後、死ぬ。〈永遠〉をアンカーにしているものは、それが疵になる。', - '〈禁書〉とともに封印に飲み込まれる。運命を結んでいるPCの夢に、暗い、怖い、助けてくれと繰り返し現れるが、次の新月の夜にふつりと途切れる。〈永遠〉をアンカーにしているものは、それが疵になる。', - 'その時は何も起きない。運良く助かったか、〈愚者〉に戻れたようにも見える。だが一度でも眠りにつけば、目を覚ますことなく死ぬ。〈永遠〉をアンカーにしているものは、それが疵になる。', - '身体がしおれ、「種」が落ちる。しかし、再生することはない。もし大地に埋めてやれば、何かの植物として芽吹くだろう。(〈永遠〉をアンカーにしているものは、そのアンカーを失う。疵にはならない)', - ] - return get_table_by_1d6(table) - end - - # 旧図書館シーン表 - def magicalogia_old_library_scene_table - table = [ - lambda { return "曲がり角。唐突に〈禁書〉が現れ、襲いかかってきた!このシーンに登場するPCは、#{magicalogia_random_skill_table_text_only}で判定を行う。失敗すると、【魔力】を3点失う。" }, - '通路の真ん中。扉を開けて〈旧世界秩序〉の〈書籍卿〉「古き書物の化身」が現れた。彼はこのシーンに登場しているPCに協力を申し出る。このシーンに登場しているPCの一人は、《嘘》で判定を行う。成功すると〈書籍卿〉はこのシナリオの間、そのPCが行う魔法戦で、一度だけ立会人になる。失敗すると〈書籍卿〉は怒り出し、次のシーンでそのPCに対して、魔法戦をしかけてくる。誰かが判定すると、成否にかかわらず、この効果はなくなる。', - '元・研究室。壊れた実験道具が床に散らばっている。', - '元・閲覧室。数人の魔法使いたちが休んでいる。ここならば、色々な話が聞けそうだ。', - '空の書架が並ぶ、開けた空間。ここならば、一息つけるだろう。', - lambda { return "破壊された魔導書が、山のように積み重なる場所。本の山に隠れていた〈断章〉が襲い掛かってくる。このシーンに登場するPCは、#{magicalogia_random_skill_table_text_only}で判定を行う。成功すると、〈断章〉を倒し、好きな魔素を一個手に入れる。失敗すると、時空を超えてアンカーに影響が現れる。「運命変転」が発生する。" }, - '破壊された書架が重なり合って作り上げた、迷路のような通路が続く。この先には、何があるのだろうか', - '元・宿舎。簡素な寝台が、いくつか残っている。', - '通路の行き止まり。目の前になぜか大きな箱がある。このシーンに登場しているPCの一人は、《謎》で判定を行うことができる。成功すると、箱の中にプライズを発見する。「プライズ表」を1回使用することができる。失敗すると、トラップが発動する。箱は爆発し、このシーンに登場しているPC全員の【魔力】が1点減少する。誰かが判定すると、成否にかかわらず、この効果はなくなる。', - lambda { return "どこからか湧き出した水が、床の上に泉を作っている場所。泉の上に何者かの呼び出した元型が浮かんでいる。#{magicalogia_random_skill_table_text_only}で判定を行う。成功すると、【一時的魔力】を1点手に入れる。失敗すると、攻撃され、【魔力】が1点減少する。誰かが判定すると、成否にかかわらず、この効果はなくなる。" }, - 'なぜ、君がここに?扉を開けると、そこにはPCのアンカーがいた。シーンプレイヤーのアンカーの中から、ランダムに一人を選ぶ。そのアンカーが登場する。シーンプレイヤーは、そのアンカーに「事件」を行っても、行動済みにならない。', - ] - return get_table_by_2d6(table) - end - - # 大判時の流れ表 - def magicalogia_new_time_passage_table - table = [ - lambda { return "波乱万丈の人生を送る。この時代に起きた有名な事件の背後では、多くの魔法的存在が暗躍していた。あなたも、その事件に関わり、〈禁書〉や〈書籍卿〉たちと戦いを繰り広げる。#{magicalogia_random_skill_table_text_only}の判定を行う。成功するとセッション終了時に追加で功績点を1点獲得する。失敗すると、自分に「運命変転」が発生する。" }, - lambda { return "冒険の日々の途中、大きな幸せがおとずれる。#{magicalogia_random_skill_table_text_only}の判定を行う。成功すると、自分のアンカーが負っている不幸か、自分が負っている疵一つを無効化する。" }, - '瞑想していたのか。それとも何か封印されていたのか。長い眠りから目を覚ます。もうそんな時間か。おかげで十分に休息できた。ランダムに魔素を三個獲得するか、自分が「魔力のリセット」を行うか、自分の受けている変調をすべて回復する。', - '特殊な異境に旅をしていた。そのせいか、人界で何が起きていたのかまったく分からない。浦島太郎になった気分だ。異境の土産として、魔貨を1d6点獲得する。', - '市井の人々に交じって平穏な日々をおくる。そんな日々の中にも、ちょっとした事件が起きた。自分のアンカーを一人目標に選んで「事件表」を振ることができる。', - '日々研鑚を重ね、魔法の修行に精進した。もしも望むなら、蔵書欄にある魔法を、自分の修得可能な別の魔法に変更して構わない。もしも、魔素がチャージされていた魔法を未習得にした場合、その魔素は失われる。', - ] - return get_table_by_1d6(table) - end - - # その後表 - def magicalogia_fallen_after_table_low - table = [ - '成就者は、邪悪な魔法の力にひかれるようになる。成就者が、そのセッションで〈断章〉に憑依されていたり、魔法災厄の犠牲になったりしていた場合、【堕落値】が1点上昇し、堕落チェックを行う。堕落チェックに失敗した場合、成就者は命を落とし、そのPCの疵となる。', - '成就者は、自分の不幸が魔法使いによるものだと信じるようになる。成就者が何らかの不幸に見舞われていた場合、【堕落値】が1点上昇し、堕落チェックを行う。堕落チェックに失敗した場合、願いを叶えたPCの成就者との【運命】の値が2点減少する。', - '成就者は、自分が特別な人間だと信じるようになる。願いを叶える努力を放棄するようになり、自堕落になる。成就者の【堕落値】が2点上昇する。堕落チェックを行う。堕落チェックに失敗した場合、「運命変転表『狂気的災厄』」を使用し、その不幸を受ける。', - '成就者は、願いが叶い、欲望が増大する。次はより大きな願いを求めるようになるだろう。成就者の【堕落値】が1点上昇する。堕落チェックを行う。堕落チェックに失敗した場合、「運命変転表『社会的災厄』」を使用し、その不幸を受ける。', - '成就者は、自分の願いを叶えたのが魔法によるものだと気付く。成就者の【堕落値】が1点上昇する。堕落チェックを行う。堕落チェックに失敗した場合、「運命変転表『超常的災厄』」を使用し、その不幸を受ける。', - '成就者は、自分の願いを叶えたのがPCだと気付く。成就者の【堕落値】が、そのPCの成就者との【運命】の値と同じ値になる。もし、この効果によって【堕落値】が以前より増えていた場合、堕落チェックを行う。堕落チェックに失敗した場合、成就者は〈愚者〉ではなくなり、魔法使いとなる。', - ] - return get_table_by_1d6(table) - end - - def magicalogia_fallen_after_table_high - table = [ - '成就者は、突如自分に訪れた幸運に罪悪感を覚えるようになる。もし成就者の【堕落値】が1点以上だった場合、堕落チェックを行う。堕落チェックに失敗した場合、「運命変転表『精神的災厄』」を使用し、その不幸を受ける。', - '成就者は、願いを叶えたPCに対して不信感を感じるようになる。自分は利用されているのでは無いかと疑い始め、願いを叶えたPCと距離を取る。成就者との【運命】の値が1点減少する。', - '成就者は、叶えて貰った願いを失うことになる。堕落チェックを行う。堕落チェックに成功すると、【堕落値】が1点減少する。', - '成就者は、願いを叶えたPCが魔法使いだと気付く。以降、その成就者の【堕落値】が上昇することがあった場合、その上昇値が1点増える(この効果は累積しない)。この効果が気に入らない場合、PCはその成就者の自分に関する記憶を消すことで、この効果を無効化することもできる。その場合、PCの成就者との【運命】の値は1になる。', - '成就者は、突然の幸運に感謝しつつも、自分の日常と戦っていく。もし、成就者に【堕落値】が1点以上ある場合、その値が1点減少する。', - '成就者は、信じれば夢が叶うと思うようになり、少しだけ前向きになる。PCは功績点を1点獲得する。', - ] - return get_table_by_1d6(table) - end - - def magicalogia_fallen_after_table - num, = roll(1, 6) - if num <= 3 - outtext, outnum = magicalogia_fallen_after_table_low - else - outtext, outnum = magicalogia_fallen_after_table_high - end - outtext = outtext.to_s - outnum = "#{num},#{outnum}" - return outtext, outnum - end -end diff --git a/src/src_bcdice/diceBot/MeikyuDays.rb b/src/src_bcdice/diceBot/MeikyuDays.rb deleted file mode 100644 index 52b98d8b8..000000000 --- a/src/src_bcdice/diceBot/MeikyuDays.rb +++ /dev/null @@ -1,511 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class MeikyuDays < DiceBot - # ゲームシステムの識別子 - ID = 'MeikyuDays' - - # ゲームシステム名 - NAME = '迷宮デイズ' - - # ゲームシステム名の読みがな - SORT_KEY = 'めいきゆうていす' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - " > 絶対失敗" - elsif dice_total >= 12 - " > 絶対成功" - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - def checkRoll(string) - output = "1" - - debug("checkRoll string", string) - unless (m = /(^|\s)S?((\d+)[rR]6([\+\-\d]*)(([>=]+)(\d+))?)(\s|$)/i.match(string)) - debug("not mutch") - return output - end - - string = m[2] - dice_c = m[3].to_i - bonus = 0 - signOfInequality = "" - diff = 0 - - bonusText = m[4] - bonus = parren_killer("(0" + bonusText + ")").to_i unless bonusText.nil? - - signOfInequality = m[6] if m[6] - diff = m[7].to_i if m[7] - dice_now = 0 - dice_str = "" - total_n = 0 - - _, dice_str, = roll(dice_c, 6, (sortType & 1)) - dice_num = dice_str.split(',').map(&:to_i) - - dice_now = dice_num[dice_c - 2] + dice_num[dice_c - 1] - total_n = dice_now + bonus - - dice_str = "[#{dice_str}]" - - output = "#{dice_now}#{dice_str}" - - if bonus > 0 - output += "+#{bonus}" - elsif bonus < 0 - output += bonus.to_s - end - - if sendMode > 0 - if /[^\d\[\]]+/ =~ output - output = "#{@nick_e}: (#{string}) > #{output} > #{total_n}" - else - output = "#{@nick_e}: (#{string}) > #{total_n}" - end - else - output = "#{@nick_e}: (#{string}) > #{total_n}" - end - - if signOfInequality != "" # 成功度判定処理 - cmp_op = Normalize.comparison_operator(signOfInequality) - output += check_2D6(total_n, dice_now, dice_num, cmp_op, diff) - end - - return output - end - - #################### 迷宮デイズ ######################## - def rollDiceCommand(command) - output = '1' - type = "" - total_n = 0 - - # 散策表(2d6) - case command - when /DRT/i - type = '散策' - output, total_n = md_research_table - # 休憩表(2D6) - when /DBT/i - type = '休憩' - output, total_n = md_break_table - # ハプニング表(2D6) - when /DHT/i - type = 'ハプニング' - output, total_n = md_happening_table - # お宝表 - when /MPT/i - type = '相場' - output, total_n = md_market_price_table - when /T1T/i - type = 'お宝1' - output, total_n = md_treasure1_table - when /T2T/i - type = 'お宝2' - output, total_n = md_treasure2_table - when /T3T/i - type = 'お宝3' - output, total_n = md_treasure3_table - when /T4T/i - type = 'お宝4' - output, total_n = md_treasure4_table - # 因縁表 - when /DCT/i - type = '因縁' - output, total_n = md_connection_table - when /MCT/i - type = '怪物因縁' - output, total_n = md_monster_connection_table - when /PCT/i - type = 'PC因縁' - output, total_n = md_pc_connection_table - when /LCT/i - type = 'ラブ因縁' - output, total_n = md_love_connection_table - # 戦闘系 - when /CAT/i - type = '痛打' - output, total_n = md_critical_attack_table - when /FWT/i - type = '致命傷' - output, total_n = md_fatal_wounds_table - when /CFT/i - type = '戦闘ファンブル' - output, total_n = md_combat_fumble_table - # そのほか - when /DNT/i - type = '交渉' - output, total_n = md_negotiation_table - when /APT/i - type = '登場' - output, total_n = md_appearance_table - when /KST/i - type = 'カーネル停止' - output, total_n = md_kernel_stop_table - end - - if output != '1' - output = "#{type}表(#{total_n}) > #{output}" - end - - return output - end - - # **散策表(2d6) - def md_research_table - table = [ - '次に挑む迷宮の迷宮支配者を倒さなければ人類文明が滅ぶことを偶然知ってしまう。《気力》を最大値まで回復する。', - '同じ迷宮を対象とする違う依頼を受ける。シナリオの目的を果たしたときに、追加で1d6MCの報酬を得られるようになる。', - '他の迷宮屋の評判を耳にする。パーティから好きなキャラクター1人を選び、そのキャラクターに対する《好意》が1点上昇する。', - '毎日の散歩の成果が出て、体の調子が良い。このゲーム中、《HP》の最大値が5点上昇し、《HP》が5点回復する。', - 'メディアの取材を受ける。《民の声》を2点得る。', - '近所からおすそ分けをもらう。【回復薬】を6個手に入れる。', - '近所の人がきみの噂話をしている。ゲーム中に自分が対象に入った「恋人」「親友」「忠誠」の人間関係を成立させるたび、《民の声》を2点得る。', - '似たような迷宮に挑んだことがある迷宮屋から話を聞いた。迷宮フェイズでの情報収集の難易度が2下がる。', - '武具の安売りを見つける。ランダムな武具アイテム1つを半分の値段で購入することができる。', - '他の迷宮屋と喧嘩になる。パーティの中からランダムに1人を選び、お互いの《敵意》を1点上昇させる。', - '迷宮屋志望の見習が、1d6人ほど配下として加わる。', - ] - - return get_table_by_2d6(table) - end - - # **休憩表(2d6) - def md_break_table - table = [ - 'アイテムの改善案を出し合ってみる。各キャラクターは、好きなキャラクター1体を選び、1d6を振ってそのキャラクターのアイテムスロットから1つをランダムに選ぶ。出た目のアイテムにレベルがあれば、1上昇する。', - '何気ない雑談が腹の探り合いに発展する。各キャラクターは、好きなキャラクターに対する《好意》と《敵意》を入れ替え、その属性を自由に変更することができる。', - '好きな単語表からランダムに単語を1つ選ぶ。その部屋にはそれに関係したものがたくさん置いてあるため、出た単語が「好きなもの」に入っているキャラクターは、《気力》を2点得る。', - '嫌いな人の話題で盛り上がる。各キャラクターは同じキャラクターに《敵意》を持っている人を1人選び、その人への《好意》を1点上昇させる。', - '窓の外から報道のヘリコプターがこちらを撮影しているのが見える。格好よく見せるために、各キャラクターは〔魅力〕で難易度13の判定を行う。誰かが成功するたびに《民の声》が1点増加する。', - '雑談や休息など、思い思いに時間を過ごす。各キャラクターは、好きなキャラクター1体への《好意》を1点上昇させる。', - '通路の片隅で素材が山を作っているのを見つけた。各キャラクターは〔探索〕で難易度11の判定を行う。誰かが成功するたびに、好きな素材を1種類選び、それを1d6個手に入れる。', - 'チームワークの確認。各プレイヤーは打ち合わせをせずに、一斉にじゃんけんを行う。いちばん出した人が多かった手を出したプレイヤーのPCは、《気力》を2点得る。', - '仮眠をとって休憩。各キャラクターは〔才覚〕で難易度9の判定を行う。成功すれば《HP》が最大値まで回復する。', - '各キャラクターは、迷宮化現象に巻き込まれ、身動きがとれない普通の人を1人見つけた。《配下》に加えることができる。', - '各キャラクターは1d6を振る。出た目の上位2名が唐突に恋に落ちる。同じ目が出て2名をうまく割り出せない場合は、GMの左隣に近い方を優先する。恋に落ちた2人、相手以外に対する《好意》を合計し、その値に対する《好意》に加える。その後、相手以外に対する《好意》をすべて0にする。', - ] - - return get_table_by_2d6(table) - end - - # **交渉表(2d6) - def md_negotiation_table - table = [ - '中立的な態度は偽装だった。彼らは不意打ちを行う。奇襲扱いで戦闘を開始すること。', - '交渉は決裂! 戦闘を行うこと。', - '交渉は決裂! 戦闘を行うこと。', - '「贄をささげれば話を聞こう」モンスターの中で最もレベルが高いもののレベルと等しい数だけ何らかの素材を減少すれば、友好的になる。減少させない場合、戦闘を開始すること。', - '「……お前の趣味、なに?」好きな単語表一個を選び、D66を振る。パーティの中に、その項目を好きなものにしているキャラクターがいれば、友好的になる。そうでなければ戦闘を開始すること。', - '怪物たちは物欲しそうにこちらを見ている。「肉」の素材をモンスターの数だけ消費するか、【お弁当】【フルコース】1個を消費すれば友好的になる。消費しなければ、戦闘を開始すること。', - '怪物たちは値踏みするようにこちらを見ている。現金で1d6MC支払えば友好的になる。そうでない場合、戦闘を開始すること。', - '「何かいいもんよこせ」モンスターの中で最もレベルの高いもののレベル以上の価格のアイテムを消費すれば友好的になる。そうでない場合、戦闘を開始すること。', - '「面白い話を聞かせろよ」プレイヤーたちは面白い話をすること。GMは面白いと思えばモンスターは友好的になる。面白くなかった場合は戦闘を開始する。', - '「俺に勝てたら話を聞いてやろう」怪物が力比べを挑んできた。モンスターの中で最もレベルが高いものと、パーティの代表がそれぞれ〔武勇〕で判定を行う。パーティの代表の達成値がモンスター以上であれば友好的になる。負けた場合、もう一度交渉するか戦闘するかを決定すること。', - '運命の出会い。一目見た瞬間に打ち解けあい、友好的になる。', - ] - return get_table_by_2d6(table) - end - - # **ハプニング表(2d6) - def md_happening_table - table = [ - '急に絶望に襲われる。【お酒】を消費することが出来なければ、このゲーム中、最も高い能力値が1点減少する。', - '思考に靄がかかってしまう。「散漫」のバッドステータスを受ける。', - '気がついたら太っていた。「肥満」のバッドステータスを受ける。', - '無残な失敗に愛想を尽かした配下が2d6人ほど去って行ってしまう。', - '微妙な空気を読み切れず、パーティ全員の《気力》が1点減少する。', - '事故だか故意だかで、仲間を殴ってしまう。ランダムに選んだパーティメンバー1名の《HP》を自分の〔武勇〕と同じ値だけ減少させる。', - '期待が大きければ失望も大きい。あなたに対して《好意》を持っているキャラクター全員は、あなたに対する《好意》を1点減らす。', - 'アイテムを粗末に扱ってしまう。持ち物の中からランダムにアイテムを1つ決定する。そのアイテムにレベルがある場合、レベルが1下がる。', - '失敗のショックのせいで知的な行動をとれなくなる。「愚か」のバッドステータスを受ける。', - '過去の行状のせいで人に呪われる。「呪い」のバッドステータスを受ける。', - '自分の失敗が許せない。このゲームの間、《器》が1点減少したものとして扱う。', - ] - - return get_table_by_2d6(table) - end - - # **カーネル停止表(2d6) - def md_kernel_stop_table - table = [ - 'カーネルが肉体に致命的な迷宮化を引き起こす!致命傷表を振ること。カーネルはまだ停止しない。', - '〔才覚〕で難易度9の判定を行う。失敗すると記憶が迷宮化を起こし、銀行口座の暗証番号を忘れてしまう。口座に入っているMCはすべて失われる。カーネルは停止しない。', - '迷宮化エネルギーが装備を直撃。素早く避けるため〔武勇〕で難易度9の判定を行う。失敗した場合、持っているアイテムからランダムに1つを選ぶ。そのアイテムは激しい迷宮化を起こし破壊される。カーネルは停止しない。', - '正体不明のエネルギーが部屋中を駆け巡る。パーティ全員は1d6ダメージを受ける。カーネルは停止しない。', - '心象が迷宮化していく。〔魅力〕で難易度9の判定を行う。失敗すると人間関係が迷宮化を起こし、持っている感情値がすべて1点減少する。カーネルは停止しない。', - '激しい迷宮化に曝され、1d6点のダメージを受ける。〔探索〕で難易度11の判定を行う。成功すれば、怪我を負いながらもカーネルを停止させることに成功する。', - 'パーティ全員は軽い迷宮化に曝され1ダメージを受ける。パーティを統率する為に〔魅力〕で難易度11の判定を行うこと。成功すれば、カーネルは停止する。', - '素早い一撃でカーネルの息の根を止めるために〔武勇〕で難易度9の判定を行う。成功すれば見事にカーネルを停止させることに成功する。', - 'カーネルの構造を感じ取り、一瞬にして停止させることに成功。さらに迷宮化の副産物としてランダムなレアアイテム1つを入手する。', - 'カーネルは停止した。そして持っているアイテムの中からランダムに1つを選ぶ。そのアイテムにレベルがあれば、いつのまにかレベルが1上昇している。', - '鮮やかにカーネルを停止させ、傷一つないまま保存することに成功した。このカーネルの売却価格が3d6MC上昇する。', - ] - - return get_table_by_2d6(table) - end - - # **痛打表(2d6) - def md_critical_attack_table - table = [ - '武器の伝説がまた一つ増えた。攻撃に使用した武具アイテムにレベルがあれば、そのレベルが1点上昇する。', - '偶然ながら敵の弱点をつく。敵の《HP》を現在の半分の値にする。', - '攻撃が終わった後、攻撃の勢いを利用して、自分を好きなエリアに移動させることができる。', - '素晴らしい手ごたえに自分でも感動し、自分の《HP》が全快する。', - '叙事詩的な一撃。《民の声》を1点増やす。', - 'クリーンヒット。攻撃の威力が2d6点上昇する。', - '敵の動きを封じた。攻撃目標の《回避値》を戦闘終了まで2下げる。この効果は累積する。', - '敵の勢いを利用し大ダメージ。攻撃の威力が、攻撃目標のレベルと同じだけ上昇する。', - '敵の技を封じる。攻撃目標のスキル1種類を選び、戦闘中はそのスキルを使用できなくする。', - '敵の急所をとらえ致命傷を与える。攻撃目標の《HP》を0にする。', - '戦いの中、武具もまた成長する。持っているアイテムをランダムに1選ぶ。そのアイテムにレベルがあれば、1点上昇する。', - ] - - return get_table_by_2d6(table) - end - - # **致命傷表(2d6) - def md_fatal_wounds_table - table = [ - '重要器官を粉砕される。キャラクターは即座に死亡する。', - '傍目にも分かる致命傷。キャラクターは次の自分の行動処理が終わった時点で死亡する。《HP》の回復でこの死亡を防ぐことはできない。', - '全身に強い衝撃をうける。〔武勇〕で難易度[5+受けたダメージ]の判定に成功すると、行動不能になる。判定に失敗すると死亡する。', - '出血多量で意識不明。行動不能になる。この戦闘が終了するまでに《HP》を1以上にしないと、キャラクターは死亡する。', - '重傷を負い昏睡状態。行動不能になる。このクォーターが終了するまでに《HP》を1以上にしないと、キャラクターは死亡する。', - '攻撃で負った傷により意識を失う。行動不能になる。', - '緊急回避! 〔探索〕で難易度[7-現在の《HP》]の判定を行う。成功すると、ランダムなバッドステータス1つを受けたうえで攻撃が無効になる。失敗すると、ランダムなバッドステータス1つを受けたうえで行動不能になる。', - '最後の一撃を見切ることができるかもしれない。〔才覚〕で難易度[9-現在の《HP》]の判定を行う。成功すると《HP》が1になる。失敗すると行動不能になる。', - 'まだここで死ぬ運命ではないのかもしれない。〔魅力〕で難易度[9-現在の《HP》]の判定を行う。成功すると《HP》が1になる。失敗すると行動不能になる。', - 'カウンター! 攻撃をしてきた敵に対して、割り込んで好きな武器またはスキルを使った反撃をすることができる。これらの判定が成功した場合、ダメージやスキルの効果のあとで《HP》が1になる。失敗した場合、ただ行動不能になる。', - '致命傷を受けたような気がしたが、気のせいだった。', - ] - return get_table_by_2d6(table) - end - - # **戦闘ファンブル表(2d6) - def md_combat_fumble_table - table = [ - 'ぶざまな失敗に熱くなる。攻撃の目標のキャラクターに対して《敵意》を4点得る。', - '急にお腹が痛くなる! 何か回復アイテムを使うまで攻撃を行えなくなる。モンスターの場合、そのラウンドの終わりに未行動にならなくなる。', - 'アイテムが壊れた! 自分が持っているアイテムの中からランダムに1つを選び、そのアイテムが失われる。モンスターの場合、1d6ダメージを受ける。', - '敵がいい気になる。行動不能になっていない敵軍キャラクター全ての《HP》を6点回復する。', - '自分に攻撃が命中! 使用した武器のダメージを自分に与える。', - 'なんというか、やる気をなくす。《気力》を1点失う。モンスターの場合、1d6ダメージを受ける。', - '仲間に攻撃が命中! 使用した武器の射程内の味方から、ランダムに1人を選ぶ。そのキャラクターに武器のダメージを与える。', - '仲間の邪魔をしてしまう。未行動の自軍キャラクター1体を選び、行動済みにする。', - 'スキルを忘れてしまった! 習得しているスキルからランダムに1種類を選ぶ。そのスキルは戦闘が終了するまで使用できない。', - '位置取りに失敗してとんでもない場所に。敵陣営プレイヤーまたはGMが、ファンブルしたキャラクターを好きな位置に移す。', - 'ピンチがチャンスに! 《HP》が現在値の半分になり、《気力》が最大値まで貯まる。', - ] - return get_table_by_2d6(table) - end - - # **登場表(2d6) - def md_appearance_table - table = [ - '「ここから先に行かせるわけにはいかん」急ぐ途中に敵が立ちふさがる。〔武勇〕で難易度11の判定を行う。成功すればバトルフィールドの好きなエリアにそのキャラクターを配置することができる。失敗した場合、《HP》を1にした状態でバトルフィールドの好きなエリアにそのキャラクターを配置することができる。', - '「待たせたな!」バトルフィールドの好きなエリアにそのキャラクターを配置することができる。', - 'おっと鉢合わせ! バトルフィールドの敵軍の本陣に、そのキャラクターを配置すること。', - '全力で駆けつける! 《HP》を2d6点減少すれば、バトルフィールドの好きなエリアにそのキャラクターを配置することができる。', - 'あいつらはこの先に行ったはず! GMはそのキャラクターをバトルフィールドの好きなエリアに配置する。', - 'あの聞き覚えのある音は……! そのキャラクターが【乗騎】を装備していれば、GMはそのキャラクターをバトルフィールドの好きなエリアに配置する。', - '……間に合ったみたいだな。バトルフィールドの中に、そのキャラクターに対する《好意》が1点以上あるキャラクターがいれば、同じエリアにそのキャラクターを配置することができる。', - 'を! これはこれは。好きな素材を1個拾う。', - 'いかん! 迷ってしまった。〔探索〕で難易度11の判定を行うこと。成功すればもう一度登場表を振り、結果を適用することができる。', - 'むむむむ? ここは一度来た道のような……? 疲労して《気力》が1点減少。', - '……いや、しかしそれどころではない! そのキャラクターは、この戦闘に登場することはできない。', - ] - return get_table_by_2d6(table) - end - - # **因縁表(2d6) - def md_connection_table - table = [ - '対象はあなたの父、もしくは母である。幼い頃に家庭を捨てて失踪した対象を、あなたはずっと憎んでいた。対象への《敵意》が1点上昇する。また、対象を戦闘で倒した際に、経験点10点を得ることができる。', - '対象は、あなたの小学校時代の恩師である。懐かしい顔にこんな形で会うことになろうとは。対象への《好意》もしくは《敵意》が1点上昇する。', - '対象は、過去にあなたと戦い、あなたの体に古傷を残している。今でもときどき傷は代償を求めて疼く。対象への《敵意》が1点上昇する。', - 'あなたは対象に憧れているが、全く相手にされていない。たとえ敵としてでも対象に認めてもらうことがあなたの願いだ。彼または彼女への《敵意》が1点上昇し、「ライバル」の人間関係を結ぶことが出来れば経験点を10得られるようになる。', - 'あなたは過去、対象のせいで、思い出したくもない大失敗をしたことがある。嫌いなものに絡んだ大失敗を設定すること。対象への《敵意》が1点上昇する。', - 'あなたは対象に手酷く敗北したことがある。あなたは屈辱を晴らすためにできる限りのことをする気でいる。対象への《敵意》が1点上昇する。', - '対象はあなたの親族を殺した。あなたはいつか訪れる復讐の日を信じて、鍛錬を続けてきた。対象への《敵意》が1点上昇する。', - '対象は、過去のあなたの仲間だ。意見の違いで袂を分かったが、ここまで対立することになるとは考えてもいなかった。対象への《敵意》が1点上昇する。', - '対象とあなたは、前世があなたの妻/夫であった。幸せな生涯の記憶が蘇る。対象への《好意》が1点上昇する。', - 'あなたは対象とあなたの通勤・通学路でぶつかったことがあり、そこで一目惚れしている。恋を幸せに成就させるため、もしくは不幸な恋を対象の死によって終わらせるため、あなたは迷宮にめぐる。対象への愛情の《好意》4点と、「片思い」の人間関係を得る。', - 'あなたは過去に対象の恋人であった。対象のどこが好きだったのかは、自分の好きなものからランダムに単語を決め、それに関連した話をでっち上げること。対象への愛情の《好意》4点と、「恋人」の人間関係を得る。', - ] - return get_table_by_2d6(table) - end - - # **怪物因縁表(2d6) - def md_monster_connection_table - table = [ - '対象はあなたの故郷を滅ぼした。そこは、もうペンペン草すら生えない廃墟となっている。対象への《敵意》が4点上昇する。', - '対象はあなたのDNA情報をもとに某国が作り出したものである。GMは対象にあなたのスキルから1つを任意に選んで修得させる。対象への《敵意》が1点上昇する。', - 'あなたはかつて対象の同族を絶滅させた。しかし、奴らは死んではいなかったのだ。対象への《敵意》が1点上昇する。', - 'あなたは幼いころに対象と遭遇したが、一顧だにされず見逃された。対象への《敵意》が1点上昇する。', - '何年も前に死んだ、あなたの親しい人は、ちょうど対象の攻撃手段と同じ方法で殺されている。対象への《敵意》が1点上昇する。', - '対象はなんとなくあなたが嫌いな特徴をそなえている。嫌いなものに関連した特徴を設定すること。対象への《敵意》が1点上昇する。', - 'あなたは過去に対象と戦い、完敗を喫している。対象への《敵意》が1点上昇する。対象との戦闘に勝利した場合、経験点10点を得る。', - '対象はあなたの好きなものを穢したり貶めたことがある。好きなものにちなんだ出来事を設定すること。対象への《敵意》が1点上昇する。', - 'あなたは、対象が同族のなかでも強力な個体であることを知っている。対象への《敵意》が2点上昇する。対象の《HP》と威力を6点ずつ上昇させる。', - '対象はあなたが昔飼っていた生き物や持っていたものが変化したものである。対象への《好意》と《敵意》が1点ずつ上昇する。交渉によって対象との戦闘を終わらせた場合、経験点10点を得る。', - 'かつてあなたは対象と同族であった。対象への《好意》と《敵意》が1点ずつ上昇する。', - ] - return get_table_by_2d6(table) - end - - # **PC因縁表(2d6) - def md_pc_connection_table - table = [ - '対象はあなたが追い求めていた敵だった。なぜ敵なのか設定すること。対象への《敵意》が4点上昇する。対象を殺害すると経験点100点を得る。', - '対象は、あなたがあなたのクラスになるきっかけを作った人物である。1分以内に詳細を設定できれば対象への好きな感情値を2点上昇させてよい。', - '対象と共通の知人がいることが発覚する。好きなものにちなんだ知人を設定すること。対象への《好意》が1点上昇する。', - '対象と同じ場所に住んでいたり、通っていたことが分かる。対象への《好意》が1点上昇する。', - 'あなたは何らかの種類の迷宮屋ランキングで対象に負けている。対象への《敵意》が1点上昇する。終了フェイズで対象に(何でもいいので)負けを認めさせれば、経験点を1点獲得する。', - '対象は、なんとなくあなたの好きな特徴を備えているような気がする。好きなものにちなんだ特徴を1つ設定し、対象のプレイヤーの了解をとること。チャンスは1回だ。OKなら対象への《好意》が1点上昇する。', - '対象は何らかの媒体で、あなたに対して好意的でないコメントを出したことがあるような気がする。コメントの詳細はあなたが決定すること。対象への《敵意》が1点上昇する。', - 'あなたは対象に関する良い噂を聞いたことがある。噂の内容を決定したうえで、対象への《好意》が1点上昇する。', - '対象は実は幼馴染だったことが明らかになる。容姿の変化などで気付かなかったのだ。対象への《好意》が1点上昇する。', - '対象が実は兄弟であったことが明らかになる。家庭の事情を1分で考えだせれば、対象への《好意》が1点上昇する。', - 'あなたと対象は、今まで隠していたが実はつきあっている。対象のプレイヤーの了解を15秒以内にとることができれば、お互いへの愛情の《好意》を4点上昇させることができる。', - ] - return get_table_by_2d6(table) - end - - # **ラブ因縁表(2d6) - def md_love_connection_table - table = [ - 'あなたは対象と過去にいい友人だった。対象への《好意》が2点上昇するが、その属性は友情に変化する。', - 'あなたは対象を本来とは別の性別だと思い込んで片思いしていた。対象への《敵意》が2点、または《好意》が1点上昇する。', - 'あなたはかつて親友であった対象に恋人を奪われたことがある。対象への《敵意》が1点上昇する。', - '対象は、あなたの好きなものによく似ている。好きなものから1つを選んで、どう似ているか説明できたら、対象への《好意》が1点上昇する。', - '対象をよく見たらけっこう可愛いような気がしてきた。対象への《好意》が1点上昇し、対象への《好意》をすべて愛情に変換する。', - 'あなたは対象と過去につきあっていたことがある。現在はどうだか分からないが、あのころは本気だった。対象への《好意》が1点上昇する。', - '対象は、むかしあなたが好きだった人と印象がよく似ている。対象への《好意》が1点上昇する。', - 'あなたは対象に助けられたり、命を救われたことがある。1分以内に設定を作り上げられれば、対象への《好意》が1点上昇する。', - 'あなたは対象に振られ、失意のあまり自殺しようとしたことがある。対象への《好意》と《敵意》が1点上昇する。', - 'あなたは昔から、対象を独占したいと思っていた。対象があなた以外と関わるたびに怒りを募らせていたのだ。対象への《好意》と《敵意》が2点ずつ上昇する。', - 'なんだか良く分からないが、とにかく好きでたまらない。対象への《好意》が3点上昇し、対象への《好意》をすべて愛情に変換する。' - ] - return get_table_by_2d6(table) - end - - # **相場表(2d6) - def md_market_price_table - table = [ - 'なし', - '肉', - '牙', - '鉄', - '魔素', - '機械', - '衣料', - '木', - '火薬', - '情報', - '革', - ] - return get_table_by_2d6(table) - end - - # **お宝表1(1d6) - def md_treasure1_table - table = [ - '何もなし。', - '何もなし。', - 'そのモンスターの素材欄の中から、好きな素材を1個。', - 'そのモンスターの素材欄の中から、好きな素材を2個。', - 'そのモンスターの素材欄の中から、好きな素材を3個。', - '【お弁当】1個。', - ] - return get_table_by_1d6(table) - end - - # **お宝表2(1d6) - def md_treasure2_table - table = [ - 'そのモンスターの素材欄の中から、好きな素材を3個。', - 'そのモンスターの素材欄の中から、好きな素材を4個。', - 'そのモンスターの素材欄の中から、好きな素材を5個。', - 'ランダムな回復アイテム1個。', - 'ランダムな武具アイテム1個。そのアイテムにレベルがあれば、レベル1のアイテムとなる。', - 'ランダムなレアアイテム1個。', - ] - return get_table_by_1d6(table) - end - - # **お宝表3(1d6) - def md_treasure3_table - table = [ - 'そのモンスターの素材欄の中から、好きな素材を5個。', - 'そのモンスターの素材欄の中から、好きな素材を7個。', - 'そのモンスターの素材欄の中から、好きな素材を10個。', - '好きなコモンアイテムのカテゴリ1種を選ぶ。そのカテゴリの中からランダムなアイテム1個。そのアイテムにレベルがあれば、レベル1のアイテムとなる。', - 'ランダムなレアアイテム1個', - 'ランダムなレアアイテム1個。そのアイテムにレベルがあれば、レベル1のアイテムとなる。', - ] - return get_table_by_1d6(table) - end - - # **お宝表4(1d6) - def md_treasure4_table - table = [ - 'そのモンスターの素材欄の中から、好きな素材を5個。', - 'そのモンスターの素材欄の中から、好きな素材を10個。', - '好きなコモンアイテムのカテゴリ1種を選ぶ。そのカテゴリの中からランダムなアイテム1個。そのアイテムにレベルがあれば、レベル2のアイテムとなる。', - '好きなコモンアイテムのカテゴリ1種を選ぶ。そのカテゴリの中からランダムなアイテム1個。そのアイテムにレベルがあれば、レベル3のアイテムとなる。', - 'ランダムなレアアイテム1個。そのアイテムにレベルがあれば、レベル1のアイテムとなる。', - 'ランダムなレアアイテム1個。そのアイテムにレベルがあれば、レベル2のアイテムとなる。', - ] - return get_table_by_1d6(table) - end -end diff --git a/src/src_bcdice/diceBot/MeikyuKingdom.rb b/src/src_bcdice/diceBot/MeikyuKingdom.rb deleted file mode 100644 index 6a46a4a7f..000000000 --- a/src/src_bcdice/diceBot/MeikyuKingdom.rb +++ /dev/null @@ -1,2260 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class MeikyuKingdom < DiceBot - # ゲームシステムの識別子 - ID = 'MeikyuKingdom' - - # ゲームシステム名 - NAME = '迷宮キングダム' - - # ゲームシステム名の読みがな - SORT_KEY = 'めいきゆうきんくたむ' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_n <= 2 - " > 絶対失敗" - elsif dice_n >= 12 - " > 絶対成功" - else - get2D6ResultOnlySuccess(total_n, diff) - end - end - - def get2D6ResultOnlySuccess(total_n, diff) - if total_n >= diff - " > 成功" - else - " > 失敗" - end - end - - def getKiryokuResult(total_n, dice_list, diff) - num_6 = dice_list.count(6) - - if num_6 == 0 - return "" - elsif num_6 >= 2 - return " & 《気力》#{num_6}点獲得" - end - - none6_list = dice_list.reject { |i| i == 6 }.sort - - maxDice1 = none6_list.pop.to_i - maxDice2 = none6_list.pop.to_i - debug("maxDice1", maxDice1) - debug("maxDice2", maxDice2) - - debug("total_n", total_n) - none6Total_n = total_n - 6 + maxDice2 - debug("none6Total_n", none6Total_n) - - none6Dice_n = maxDice1 + maxDice2 - debug("none6Dice_n", none6Dice_n) - debug("diff", diff) - none6DiceReuslt = get2D6ResultOnlySuccess(none6Total_n, diff) - - return " (もしくは) #{none6Total_n}#{none6DiceReuslt} & 《気力》1点獲得" - end - - #################### 迷宮キングダム ######################## - def mayokin_check(string, nick_e) - debug("mayokin_check string", string) - - output = "1" - - # return output unless /(^|\s)S?((\d+)[rR]6([\+\-\d]*)(([>=]+)(\d+))?)(\s|$)/i =~ string - - m = /^S?((\d+)R6([\+\-\d]*)(([>=]+)(\d+))?)/i.match(string) - unless m - return "1" - end - - string = m[1] - diceCount = m[2].to_i - modifyText = m[3] - signOfInequality = m[5] || "" - diff = m[6].to_i - - bonus = modifyText ? ArithmeticEvaluator.new.eval(modifyText) : 0 - - dice_now = 0 - dice_str = "" - total_n = 0 - - _, dice_str, = roll(diceCount, 6, (sortType & 1)) - dice_list = dice_str.split(',').map(&:to_i) - - dice1 = diceCount >= 2 ? dice_list[diceCount - 2] : 0 - dice2 = diceCount >= 1 ? dice_list[diceCount - 1] : 0 - dice_now = dice1 + dice2 - debug("dice1, dice2, dice_now", dice1, dice2, dice_now) - - total_n = dice_now + bonus - dice_str = "[#{dice_str}]" - - output = "#{dice_now}#{dice_str}" - if bonus > 0 - output += "+#{bonus}" - elsif bonus < 0 - output += bonus.to_s - end - - if sendMode > 0 - if output =~ /[^\d\[\]]+/ - output = "#{nick_e}: (#{string}) > #{output} > #{total_n}" - else - output = "#{nick_e}: (#{string}) > #{total_n}" - end - else - output = "#{nick_e}: (#{string}) > #{total_n}" - end - - if signOfInequality != "" # 成功度判定処理 - cmp_op = Normalize.comparison_operator(signOfInequality) - output += check_result(total_n, dice_now, dice_list, 6, cmp_op, diff) - end - - return output - end - - #################### 迷宮キングダム ######################## - - def rollDiceCommand(command) - output = "" - type = "" - total_n = "" - - case command - - when /^NAMEA/i - debug("namea passed") - type = '名前A' - total_n = d66(2) - output = mk_name_a_table(total_n) - when /^NAMEB/i - type = '名前B' - total_n = d66(2) - output = mk_name_b_table(total_n) - when /^NAMEEX/i - type = 'エキゾチック名前' - total_n = d66(2) - output = mk_name_ex_table(total_n) - when /^NAMEFA/i - type = 'ファンタジック名前' - total_n = d66(2) - output = mk_name_fa_table(total_n) - - when /^NAME(\d*)/i - type = '名前' - count = getCount(Regexp.last_match(1)) - names = "" - count.times do |_i| - name, dice = mk_name_table - names += "[#{dice}]#{name} " - end - output = names - total_n = count - - when /^PNT(\d*)/i - type = '地名' - count = getCount(Regexp.last_match(1)) - output = mk_pn_decide_table(count) - total_n = count - - when /^MLT(\d*)/i - type = '地名' - count = getCount(Regexp.last_match(1)) - output = mk_ls_decide_table(count) - total_n = count - when /^DFT/i - type = 'デバイスファクトリー' - output = mk_device_factory_table() - total_n = 1 - when /^LRT/i - type = '生活散策' - output, total_n = mk_life_research_table - when /^ORT/i - type = '治安散策' - output, total_n = mk_order_research_table - when /^CRT/i - type = '文化散策' - output, total_n = mk_calture_research_table - when /^ART/i - type = '軍事散策' - output, total_n = mk_army_research_table - when /^FRT/i - type = 'お祭り' - output, total_n = mk_festival_table - - # 休憩表(2D6) - when /^TBT/i - type = '才覚休憩' - output, total_n = mk_talent_break_table - when /^CBT/i - type = '魅力休憩' - output, total_n = mk_charm_break_table - when /^SBT/i - type = '探索休憩' - output, total_n = mk_search_break_table - when /^VBT/i - type = '武勇休憩' - output, total_n = mk_valor_break_table - when /^FBT/i - type = 'お祭り休憩' - output, total_n = mk_festival_break_table - # ハプニング表(2D6) - when /^THT/i - type = '才覚ハプニング' - output, total_n = mk_talent_happening_table - when /^CHT/i - type = '魅力ハプニング' - output, total_n = mk_charm_happening_table - when /^SHT/i - type = '探索ハプニング' - output, total_n = mk_search_happening_table - when /^VHT/i - type = '武勇ハプニング' - output, total_n = mk_valor_happening_table - # お宝表 - when /^MPT/i - type = '相場' - output, total_n = mk_market_price_table - when /^T1T/i - type = 'お宝1' - output, total_n = mk_treasure1_table - when /^T2T/i - type = 'お宝2' - output, total_n = mk_treasure2_table - when /^T3T/i - type = 'お宝3' - output, total_n = mk_treasure3_table - when /^T4T/i - type = 'お宝4' - output, total_n = mk_treasure4_table - when /^T5T/i - type = 'お宝5' - output, total_n = mk_treasure5_table - - # アイテム表 - when /^RWIT/i - type = 'レア武具アイテム' - total_n = d66(1) - output = mk_rare_weapon_item_table(total_n) - when /^RUIT/i - type = 'レア一般アイテム' - total_n = d66(1) - output = mk_rare_item_table(total_n) - when /^WIT/i - type = '武具アイテム' - total_n = d66(2) - output = mk_weapon_item_table(total_n) - when /^LIT/i - type = '生活アイテム' - total_n = d66(2) - output = mk_life_item_table(total_n) - when /^RIT/i - type = '回復アイテム' - total_n = d66(2) - output = mk_rest_item_table(total_n) - when /^SIT/i - type = '探索アイテム' - total_n = d66(2) - output = mk_search_item_table(total_n) - when /^IFT/i - type = 'アイテム特性' - total_n, = roll(2, 6) - output = mk_item_features_table(total_n) - when /^IDT/i - type = 'アイテムカテゴリ決定' - total_n, = roll(1, 6) - output = mk_item_decide_table(total_n) - - # ランダムエンカウント表 - when /^1RET/i - type = '1Lvランダムエンカウント' - total_n, = roll(1, 6) - output = mk_random_encount1_table(total_n) - when /^2RET/i - type = '2Lvランダムエンカウント' - total_n, = roll(1, 6) - output = mk_random_encount2_table(total_n) - when /^3RET/i - type = '3Lvランダムエンカウント' - total_n, = roll(1, 6) - output = mk_random_encount3_table(total_n) - when /^4RET/i - type = '4Lvランダムエンカウント' - total_n, = roll(1, 6) - output = mk_random_encount4_table(total_n) - when /^5RET/i - type = '5Lvランダムエンカウント' - total_n, = roll(1, 6) - output = mk_random_encount5_table(total_n) - when /^6RET/i - type = '6Lvランダムエンカウント' - total_n, = roll(1, 6) - output = mk_random_encount6_table(total_n) - - # その他表 - when /^KDT/i - type = '王国災厄' - output, total_n = mk_kingdom_disaster_table - when /^KCT/i - type = '王国変動' - output, total_n = mk_kingdom_change_table - when /^KMT/i - type = '王国変動失敗' - output, total_n = mk_kingdom_mischange_table - when /^CAT/i - type = '痛打' - output, total_n = mk_critical_attack_table - when /^FWT/i - type = '致命傷' - output, total_n = mk_fatal_wounds_table - when /^CFT/i - type = '戦闘ファンブル' - output, total_n = mk_combat_fumble_table - when /^TT/i - type = '道中' - output, total_n = mk_travel_table - when /^NT/i - type = '交渉' - output, total_n = mk_negotiation_table - when /^ET/i - type = '感情' - output, total_n = mk_emotion_table - - when /^KNT(\d+)/i - type = '王国名' - count = getCount(Regexp.last_match(1)) - total_n = d66(2) - - case count - when 1 - output = mk_kingdom_name_1_table(total_n) - when 2 - output = mk_kingdom_name_2_table(total_n) - when 3 - output = mk_kingdom_name_3_table(total_n) - end - - when /^WORD(\d+)/i - type = '単語' - count = getCount(Regexp.last_match(1)) - total_n = d66(2) - - case count - when 1 - output = mk_word_1_table(total_n) - when 2 - output = mk_word_2_table(total_n) - when 3 - output = mk_word_3_table(total_n) - when 4 - output = mk_word_4_table(total_n) - end - - when /^ABT/i - type = '捜索後休憩' - output, total_n = getAftersearchBreakTable() - when /^WBT/i - type = '全体休憩' - output, total_n = getWholeBreakTable() - when /^LBT/i - type = 'カップル休憩' - output, total_n = getLoversBreakTable() - else - return nil - end - - if output != '1' - output = "#{type}表(#{total_n}) > #{output}" - end - end - - def getCount(countText) - if countText.empty? - return 1 - end - - return countText.to_i - end - - # 生活散策表(2d6) - def mk_life_research_table - get_table_by_2d6([ - "ハグルマ資本主義神聖共和国から使者が現れる。受け入れる場合[生活レベル/9]に成功すると(1d6)MG獲得。この判定の難易度は、ハグルマとの関係が険悪なら+2、敵対なら+4される。使者を受け入れない場合、ハグルマとの関係が1段階悪化する。すでに関係が敵対なら、領土1つを失う", - "王国の活気にやる気がでる。《気力》+1、もう一度王国フェイズに行動できる", - "この国の評判を聞いて、旅人がやってくる。このゲームのシナリオの目的を果たしたら、終了フェイズに《民》+(2d6)人", - "旅の商人に出会い、昨今の相場を聞く。(2d6)を振り、メモしておく。終了フェイズの収支報告のタイミングに、2d6を振る代わりにその目が出たことにして相場を決定する", - "主婦たちの井戸端会議によると、生活用品が不足しているらしい。ゲーム中に「革」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「革」を獲得出来ないと、維持費+1MG", - "食料に対する不安を漏らす民の姿を見かける。ゲーム中に「肉」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「肉」を獲得出来ないと、維持費+1MG", - "散策の途中、様々な施設が老朽化しているのを発見する。ゲーム中に「木」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「木」を獲得出来ないと、維持費+1MG", - "お腹の大きくなった女性が、無事戻ったら赤子の名付け親になって欲しいと言う。このゲームのシナリオの目的を果たしたら、終了フェイズに《民》+(2d6)人", - "王国内で民とともに汗を流す。[生活レベル/9]の判定に成功すると、(生産施設の数×1)MGを獲得する", - "「これ、便利だと思うんですけど」 [生活レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の生活アイテム1個を1Lvで獲得できる", - "突然王国に旅人が訪れ、王国の食料庫が乏しくなってくる。[生活レベル/11]に成功すると、他国から補給を呼んで《民》+(2d6)人。失敗すると《民》-(2d6)人", - ]) - end - - # 治安散策表(2d6) - def mk_order_research_table - get_table_by_2d6([ - "メトロ汗国から使者が現れる。受け入れる場合、[治安レベル/9]に成功すると《民》+(2d6)人。失敗すると《民》-(2d6)人。この判定の難易度は、汗国との関係が険悪なら+2、敵対なら+4される。使者を受け入れない場合、汗国との関係が1段階悪化する。すでに関係が敵対なら、領土1つを失う", - "「つまらないものですが、これを冒険に役立ててください……」相場表でランダムに素材1種を選び、それを(1d6)個獲得する", - "民たちが自分らで、王国を守る相談をしている。この気0無のシナリオの目的を果たしたら、好きなレベルのある施設1軒を選び、その隣の部屋に同じ施設1軒を建設する", - "毎日の散歩の成果が出て、体の調子が良い。このゲーム中、《HP》の最大値+5し、《HP》5点回復する", - "王国の民たちが、ランドメイカーの留守を守る人間が少ないことを心配している。ゲーム中に逸材1人を獲得するたびに《民の声》+1。終了フェイズまでに1人も逸材を獲得出来ないと、維持費+1MG", - "王国周辺の迷宮化が進んでいる。対迷宮化結界を強化せねば…。ゲーム中に「魔素」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「魔素」を獲得出来ないと、維持費+1MG", - "王国内の施設の稼働率が下がっている。整備が必要そうだ。ゲーム中に「機械」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「機械」を獲得出来ないと、維持費+1MG", - "周辺諸国の噂を聞く。王国シートの既知の土地欄の中から、関係が同盟・良好・中立の他国があれば、ランダムに国1つを選ぶ、相場表でランダムに素材1種類を選ぶ。その国の相場はその素材となる", - "王国の平和な光景を見て、手応えを感じる。[治安レベル/9」の判定に成功すると、[公共施設の数×1]MGを獲得する", - "「迷宮のごかごがありますように……」 [治安レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の探索アイテム1個を1Lvで獲得できる", - "王国の中で不満分子たちがなにやら不穏な話をしているのを耳にする。[治安レベル/11]の判定に成功すると、あなたは留守中の準備をしておくことができる。そのゲーム中、一度だけ王国災厄表の結果を無効にすることができる。失敗すると、ランダムに施設1軒を選び、それが破壊される", - ]) - end - - # 文化散策表(2d6) - def mk_calture_research_table - get_table_by_2d6([ - "千年王朝から使者が現れる。受け入れる場合、[文化レベル/9]に成功すると《民の声》+(1d6)、失敗するとすると《民の声》-(1d6)。この判定の難易度は、千年王朝との関係が険悪なら+2、敵対なら+4される。使者を受け入れない場合、千年王朝との関係が1段階悪化する。すでに関係が敵対なら、領土1つを失う", - "民が祭りの準備を進めている。シナリオの目的を果たしていれば、収支報告の時に[収支報告時の《民の声》-ゲーム開始時の《民の声》]MGを獲得できる。ただし、数値がマイナスになった場合は、その分維持費が上昇する", - "都会に出て行った幼馴染から手紙がくる。王国の様子を知りたがっているようだ。シナリオの目的を果たしたら、終了フェイズにランダムなジョブの逸材1人を獲得する", - "他のランドおメイカーの噂を聞く。宮廷から好きなキャラクター1人を選び、そのキャラクターに対する《好意》+1", - "若者たちの有志が、街を発展させるため諸外国のことを勉強したいと言い出した。ゲーム中に「情報」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「情報」を獲得出来ないと、維持費+1MG", - "若い娘たちが、流行の衣装について楽しそうに話している。ゲーム中に「衣料」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「衣料」を獲得出来ないと、維持費+1MG", - "民たちが、君のうわさ話をしている。ゲーム中にあなたにたいして「恋人」「忠義」「親友」の人間関係が成立するたびに《民の声》+2。終了フェイズの収支報告までに1回も人間関係が成立できないと、維持費+1MG", - "あなたに熱い視線が注がれているのを感じる。宮廷から好きなキャラクター1人を選び、そのキャラクターの自分に対する《好意》+1", - "王国内を訪れる旅人たちを見かける。[文化レベル/9]の判定に成功すると、[憩いの施設の数×1]MGを獲得する", - "「ご無事をお祈りしております……」 [文化レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の回復アイテム1個を1Lvで獲得できる", - "王国の中の民たちの表情に制裁がない。暗い迷宮生活に倦んでいるようだ。[文化レベル/11]の判定に成功すると民を盛り上げる祭りを開き、《民の声》+(1d6)。失敗すると維持費+(1d6)", - ]) - end - - # 軍事散策表(2d6) - def mk_army_research_table - get_table_by_2d6([ - "ダイナマイト帝国から使者が現れる。受け入れる場合、[軍事レベル/9]に成功すると(1d6)MG獲得、失敗すると維持費+(1d6)MG。この判定の難易度は、ダイナマイトとの関係が険悪なら+2、敵対なら+4される。使者を受け入れない場合、ダイナマイトとの関係が1段階悪化する。すでに関係が敵対なら、領土1つを失う", - "長老から迷宮の昔話を聞く。このゲーム中、自分のレベル以下のモンスターを倒すと、そのモンスターをモンスターの《民》にすることができる。この効果は、そのゲーム中に1度だけ使用できる", - "冒険に向かう君に期待の声がかかる。民たちの期待に、気持ちが引き締まる。このゲーム中、《器》が1点上昇する", - "くだらないことで口論になる。宮廷の中から1人を選び、互いに対する《敵意》+1", - "兵士たちの訓練の様子を見るが、武装がやや乏しい。ゲーム中に「牙」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「牙」を獲得出来ないと、維持費+1MG", - "旅人から隣国が軍備を拡張していると言う噂を聞く。ゲーム中に「鉄」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「鉄」を獲得出来ないと、維持費+1MG", - "近隣で凶悪なモンスターたちが大量発生していると言う。ゲーム中に「火薬」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「火薬」を獲得出来ないと、維持費+1MG", - "周辺諸国で戦争が勃発する。王国シートの既知の土地欄から2つの国を選び、両国間で戦争を行う。それぞれ「領土数+(1d6)」が戦力。大きい方が勝利して領土1つを獲得し、負けた方の国は領土を1つ失う。どちらかに援軍を送ることができる。[軍事レベル/9+戦う相手の領土数]の判定に成功すると戦力+(1d6)。勝敗に関係なく援軍を送った国との関係が1段階友好になり、戦った相手の国との関係が1段階悪化する", - "隣国からの貢物が届く。[軍事レベル/11]の判定に成功すると、収支報告の時に価格の()内の数字が[領土の数×1]以下のレアアイテム1個を獲得する", - "「こんなものを用意してみました」 [軍事レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の武具アイテム1個を1Lvで獲得できる", - "あなたが他の出発を察知して、何者かが国を襲う![軍事レベル/11]の判定に成功するとあなたが他の武勇に歓声が上がり宮廷全員の気力+(1d6)。失敗すると、宮廷全員の《HP》と《配下》が(1d6)減少する", - ]) - end - - # 才覚休憩表(2d6) - def mk_talent_break_table - get_table_by_2d6([ - "民との会話の中、経費節約のアイデアが沸く。[才覚/11]の判定に成功すると、維持費が(1d6)MG減少する", - "嫌いなものが出てくる夢を見て心寂しくなったところに仲間が来てくれる。好きな宮廷内のキャラクター1人への《好意》+1", - "好きなものの夢を見る。シチュエーションを表現し、幸せそうだと感じるプレイヤーが居たら《気力》+2", - "国に残した家族を心配する民を励ます。[才覚/11]の判定に成功すると、《民の声》+2", - "あらん限りの声を力を込めて檄を飛ばす。[才覚/9]の判定に成功すると、宮廷全員のあなたに対する《好意》の合計だけ、《民の声》が回復する", - "休憩中も休み無く働いていると、配下がお茶を入れてくれる。《民の声》+1", - "今後の冒険について口角泡を飛ばして議論する。好きな宮廷内のキャラクター1人を選び、そのキャラの自分に対する《敵意》を好きなだけ上昇させる。上昇した《敵意》と等しい値だけ《民の声》が回復する", - "たまには料理をしようと思い立つ。【お弁当】か【フルコース】の効果を使用して、食事を取ることが出来る。使用した場合、(1d6)を振る。奇数が出たら料理は美味だった、《民の声》+1。偶数が出たら料理は非道い味になった、宮廷全員のあなたに対する《敵意》+1", - "年若い配下に冒険譚をせがまれる。[才覚/現在の《民の声》の値+3]の判定に成功すると、《民の声》+(1d6)。失敗すると次の1クォーター行動できない", - "迷宮に囚われた人々を見つける。助けたいが、食料がやや心配だ。[才覚/9]の判定に成功すると、自分の《配下》+(1d6)", - "この迷宮は一筋縄ではいかないようだ。今こそ、用意していたアレが役に立つだろう。自分の習得しているスキル1種を未修得にし、同じスキルグループのスキル1種を修得してもよい。この効果は永続する。", - ]) - end - - # 魅力休憩表(2d6) - def mk_charm_break_table - get_table_by_2d6([ - "妖精のワイン倉を発見し、酒盛りが始まる。宮廷全員の《気力》+1。[魅力/9]の判定に失敗すると、あなたは脱ぎ出す。(1d6)を振り、奇数なら宮廷全員のあなたに対する《好意》+1、偶数なら《敵意》+1", - "休憩中、意外な寝言を言ってしまう。自分を除く宮廷全員は自分に対する《好意》と《敵意》を入れ替えることが出来る。また、その属性を自由に変更することができる", - "床の冷たさから、ぬくもりを求めて身体を寄せ合う。あなたに《好意》を持っているキャラの数だけ《気力》と《HP》が回復する", - "こっそり二人で抜け出して良い雰囲気に。その部屋の中に、好きなものが同じキャラが居ればそのキャラ1体を選び、互いに対する《好意》+1", - "星の灯りがあなたの顔をロマンチックに照らし出す。その部屋にいる好きなキャラ1体を選び、[魅力/そのキャラのあなたに対する《好意》+9]の判定に成功すると、そのキャラのあなたに対する《好意》+1", - "あいつと目が合う。[魅力/9]の判定に成功したら、宮廷内からランダムに1体選び、そのキャラから自分への《好意》か、または自分のそのキャラへの《好意》いづれかが+1される", - "うたた寝をしていると誰かが毛布を掛けてくれた。ランダムにキャラを選び、自分のそのキャラへの《好意》+1", - "たき火を囲みながら会話を楽しむ。GMの左隣にいるプレイヤーから順番に、自分のPCが《好意》を持っているキャラ1体を選ぶ。選ばれたキャラは《気力》+1。誰からも選ばれなかったキャラは《気力》-1、ランダムに選んだ宮廷内のキャラへの《敵意》+1", - "着替えを覗かれる。宮廷内からランダムに1体選び、(1d6)を振る。奇数なら大声をだしてしまい宮廷全員のそのキャラに対する《敵意》+1、偶数ならそのキャラとあなたの互いの《好意》+1", - "食べ物の匂いにつられたモンスターと遭遇する。ランダムエンカウント表でモンスターを決定する。[魅力/モンスターの中で最も高いレベル+3]の判定に成功した場合、そのモンスターたちと取引できる。失敗した場合戦闘に突入する", - "ふとした拍子に唇が触れあう。好きなキャラ1体を選ぶ。そのキャラの自分以外への《好意》の合計を全て自分に対する《好意》に加える。その後、自分以外への《好意》を0にする", - ]) - end - - # 探索休憩表(2d6) - def mk_search_break_table - get_table_by_2d6([ - "一休みの前に道具の手入れ。ランダムに自分のアイテムスロット1つを選ぶ。そのスロットにレベルがあるアイテムがあった場合、そのアイテムのレベルが1上がる", - "寝床を探していたらアルコープの奥の宝箱を見つける。[探索/11]の判定に成功したら好きな素材1種類を(1d6)個手に入れる", - "一眠りしたら夢の中で…。[探索/11]の判定に成功したら、好きな部屋のモンスターの名前とトラップの数をGMから教えてもらえる", - "配下が眠りにつき、静寂が訪れると隣の部屋から妙な物音が聞こえてきた。隣接する好きな部屋を選ぶ。[探索/10]の判定に成功すると、その部屋にモンスターがいるかどうか、いる場合はモンスターの種類と数が分かる", - "一休みしようと持ったら、モンスターの墓場を発見した。好きな素材を1種類えらび、宮廷全員のあなたにたいする《好意》の合計に等しい個数だけその素材を入手する", - "この部屋はなぜか落ち着く。もしもその部屋の中にあなたの好きなものがあれば《気力》を(1d6)点回復することができる", - "壁に書かれた奇妙な壁画が、あなたを見つめている気がする…。[探索/9]の判定に成功したら、【エレベータ】を発見する", - "白骨化した先客の死体が見つかる。使えそうな装備はありがたく頂戴しておこう。[探索/11]の判定に成功したら、コモンアイテムのカテゴリの中から好きなものを1つ選び、そのカテゴリのアイテムをランダムで1個手に入れる", - "星の灯りで地図を眺める…部屋の構造からして、この辺りに何かありそうだ。[探索/10]の判定に成功すると、この部屋に仕掛けられたイベント型のトラップを全て発見する", - "休んでいる間にトイレにいきたくなった。[探索/11]の判定に成功すると、迷宮のほころびを見つける。このゲームの間、この部屋から迷宮の外へ帰還することができる", - "こ、これは秘密の扉?[探索/11]の判定に成功すると、この部屋に隣接する好きな部屋に通路を延ばすことができる", - ]) - end - - # 武勇休憩表(2d6) - def mk_valor_break_table - get_table_by_2d6([ - "時が満ちるにつれ、闘志が高まる。現在の経過ターン数と等しい数だけ《気力》が回復する", - "もっと敵と戦いたい、血に飢えた自分を発見する。[武勇/11]の判定に成功すると《気力》が1点、《HP》が(1d6)点回復する", - "部屋の片隅にうち捨てられた亡骸を発見する。このマップの支配者の名前が分かっていれば、宮廷全員は支配者への《敵意》を1点上昇させることができる", - "部屋の隅に隠れていた怪物が襲いかかってきた。[武勇/10]の判定に成功すると怪物を追い払い《民の声》+1。失敗すると自分の《配下》-(1d6)、《民の声》-1", - "あいつの短剣がきみの横をかすめて毒蛇を追い払う。好きなキャラ1体を選び、そのキャラに対する《敵意》の分だけ《好意》を上昇させ、その後《敵意》を0にする", - "実力を付けてきたアイツへとドス黒い気持ちがわき上がる。好きなキャラ1体を選び、そのキャラへの《敵意》+1", - "ちょっとした行き違いから軽い口論になる。宮廷内からランダムにキャラ1体を選び、そのキャラとあなたの互いへの《敵意》+1", - "ライバルの活躍が気になる。宮廷全員の中で、最も高いあなたに対する《敵意》の値と同じ数だけ《気力》を獲得する", - "休むべきときにしっかり休む。《HP》を(2d6)点回復することができる", - "怪物のいた痕跡を発見する。[武勇/11]の判定を行い、成功するとGMからこのゲームで遭遇する予定の、まだ種類の分かっていないモンスターを1種類教えてもらえる", - "殺気に反応し飛び起きた!ランダムエンカウント表でモンスターを決定し戦闘を行う。そのモンスターを倒した後、ランダムにレアアイテム1個を手に入れる", - ]) - end - - # お祭り休憩表(2D6) - def mk_festival_break_table - get_table_by_2d6([ - 'お祭りに向かう旅人たちとすれ違う。1D6MGが手に入る【宿屋】か【夜店】があれば、さらにもう1D6MGが手に入る', - 'なんでこんなときに、ダンジョンに行かなきゃいけないんだ! 「あ、電報でーす」このマップの支配者から、お祭りによせて祝辞の電報がやってくる。そうか、おまえのせいかッ!! マップの支配者の名前が分かり、そのキャラクターへの《敵意》が1D6点上がる', - '「そういえば、国のみんなが何かいってたなぁ……」回想シーン。好きな散策表を1つ選び、2D6を振る。表に照らし合わせた結果を処理する', - 'あー。早く帰って、お祭りを楽しみたーい! この時点でキャンプを終了し、すぐに次の部屋へ移動すれば、このクォーターは、時間の経過が起こらない', - 'どこからか美味しそうな匂いが漂ってくる。「あ、うまそう」死んだふりをしていた民が起き上がる。今回の冒険で消費していた《配下》が1D6人回復する', - '雰囲気がいつもと違うせいかな。なんかあの人がステキに見える。好きなキャラクター1人を選ぶ。そのキャラクターへの《好意》を1点上げる', - 'あ、こんなところにまで屋台が! あてくじ屋さんだ。1MG減らして、好きなアイテムカテゴリを選び、さらにそのカテゴリの中からランダムにアイテム1個を選ぶ。そのアイテムをもらえる(レアアイテムは飾ってあるが、絶対当たらない)', - 'お祭りを目指す交易商人と出会う。「あ、王様。これから王国行くんすよ」宮廷の持つ好きな素材を何個でも、同じ数の別の素材と交換してくれる', - 'せっかくお祭りなんだし、肩肘はってないで、ノリノリでGO!! このゲーム中は食事をするたびに《民の声》が1点回復する', - '「あ、この歌は……」祭囃子がキミの封印されていたモンスターにまつわる過去の記憶を呼び戻す。好きなモンスター1種類を選ぶ。そのモンスター全般への《敵意》が1点上がる', - 'みんなのワクワクがアイテムに乗り移った? ランダムに自分のアイテムスロット1つを選ぶ。そこにレベルのあるアイテムがあった場合、そのレベルが1上がる', - ]) - end - - # お祭り表(2D6) - def mk_festival_table - get_table_by_2d6([ - '祈願祭。国や重要人物の無病息災を祈ったり、戦いの勝利などを祈る祭り。災害や飢饉、流行り病が起こった付近で行われる。シナリオの目的をクリアしていれば、《民》が1D6人上昇する', - '血祭り。戦いに向け、士気を向上させる祭り。戦争だけでなく、迷宮探索に向けて行われることも多い。生贄の血を軍神に捧げたりする。このゲームの間、戦闘に勝利すると《民の声》を1点獲得し、逃走すると《民の声》が1点失われる', - '記念日。建国記念日や領土獲得などの記念日のお祝い。簡単につくることができるが、気がつくと記念日だらけで、何の記念だったかを忘れてしまう。ほどほどに。このゲームの間、行為判定の目で3でも絶対失敗、11でも絶対成功になる(「呪い」のバッドステータスを受けたものは4でも絶対失敗、【必殺】を使った命中判定なら10でも絶対成功)', - '星祭。季節のお祭り。冬至や夏至などの祭りや、七夕、お花見、雪祭りなどが含まれる。季節感の少ない迷宮では、殊更にその風情を楽しもうとやたら盛り上がる。宮廷全員、好きなキャラクター1人を選び、そのキャラクターに対する《好意》を1点上げる', - '民衆の宴。民が自発的に開くお祭り、イベント。アキハバラ電気祭りに餃子祭り、コミックマーケットなど、文化や地域の活性化と結びつくものが多い。このゲームの間、好きな施設1つを選んで、その施設の施設レベルを1上げる', - '誕生日。ランドメイカーや逸材、国の重要人物の誕生日。聖誕祭や花祭りなど、国教の聖人などを祝う国も多い。現王の誕生日を「父の日」、后の誕生日を「母の日」とする国も多い。そのゲームの間、ケーキやおにぎり、缶ジュースなど、1人分が明確な食べ物を食べきったとき、自分のPCが《気力》1点を獲得する', - '冠婚葬祭。国の重要人物の元服(成人)、婚礼、葬儀、祖先の慰霊などの儀式。格式の高い王国では、もっとも重要な祭礼である。このゲームの間、国力を使った判定の達成値を1上昇させる', - '感謝祭。豊漁や豊作などがあったときに自然(迷宮)や精霊、信仰対象など、偉大なるものへの感謝を捧げるお祭り。獲物の毛の一部を切りとって迷宮に感謝する毛祭りや瀬祭り、豊饒を祝う新嘗祭などがある。終了フェイズに「木」や「革」、「肉」のいずれかを1つ消費すると、王国変動表の結果を±1の範囲でずらすことができる', - '鬼祭り。お正月に旧年の悪を正す修正会、豆をまいて福を呼び込む追儺の儀式、怪物に仮装した子供たちが夜の王国をねり歩くハロウィーンなど、悪魔や悪霊を払うお祭り。モンスター除けに行われる。このゲームの間、ランダムエンカウントの戦闘後に使用するお宝表が1段階、高いレベルのものを使用する', - '舞踏会。最高の音楽と芸術的な食事、そしてとびきりの衣装で臨む社交界の華。身分や素性を隠してパートナーを探す仮面舞踏会も人気は高い。ちなみに仮面舞踏会では、女性の側から男性をダンスに誘うのが礼儀だぞ。宮廷全員、ランダムにキャラクター1人を選び、そのキャラクターに対する《好意》を1点上げる', - '競技会。国をあげて、スポーツや芸術、ゲームなど、さまざまなジャンルの一番を決めるお祭り、大会。オリンピックや料理勝負、歌合戦などがある。ランダムに能力値1つを選び、宮廷全員で難易度15の判定を行う。このとき成功した中で、もっとも達成値が高かったキャラクターは、シナリオ終了後、終了フェイズの探索会議で決定されるキャラクターとは別に、勲章を得る', - ]) - end - - # 王国災厄表(2d6) - def mk_kingdom_disaster_table - get_table_by_2d6([ - "王国の悪い噂が蔓延する。既知の土地にある他国との関係が全て1段階悪化する", - "自国のモンスターが凶暴化する。自国のモンスターの《民》からランダムに1種類選び、そのレベルと等しいだけ《民》が減少する。その後、その種類のモンスターの《民》は全ていなくなる", - "疫病が大流行する。《民》-(2d6)", - "自国の迷宮化が進行する。自国の領土のマップ数と等しい値だけ維持費が上昇する", - "敵国のテロが横行する。[治安レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、ランダムに施設を1軒失う", - "敵国襲来![軍事レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、ランダムに自国の領土を1つ失う", - "敵国の陰謀。[文化レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、ランダムに逸材を1人失う", - "食糧危機。《民》-(2d6)。王国にある「肉」の素材を1個消費する度に、《民》の減少を1人抑えることができる", - "住民の不満が爆発する。[生活レベル/敵対国数×2+険悪国数+9]の判定に失敗すると《民の声》-1", - "局地的な迷宮津波が発生。ランダムに自国の領土1つを選び、既知の土地の中からランダムに選んだ場所と場所を入れ替える", - "敵国の勢力が強大化する。GMは、関係が敵対の国全てについて、その国の領土に接する土地を1つ選び、その土地をその国の領土にする", - ]) - end - - # 才覚ハプニング表(2d6) - def mk_talent_happening_table - get_table_by_2d6([ - "自分に王国を導くことなどできるのだろうか…。【お酒】を消費することができなければ、このゲーム中[才覚]-1", - "国王の威信が問われる。(2d6)を振り、その値が[《民の声》+宮廷全員の国王に対する《好意》の合計]以上の場合、《民の声》-(1d6)し、さらに才覚ハプニング表を振る", - "思考に霧の帳が降りる。「散漫」のバッドステータスを受ける", - "重大な裏切りを犯してしまう。あなたに対する《好意》が最も高いキャラを1人選ぶ。そのキャラに対する《好意》の分だけそのキャラへの《敵意》を上昇させ、その後《好意》を0にする", - "この人についていっていいのだろうか…?宮廷全員のあなたに対する《好意》-1(最低0)。その結果、誰かの《好意》が0になると《民の声》-1", - "宮廷のスキャンダルが暴露される。宮廷全員のあなたに対する《敵意》のうち最も高いものと同じだけ《民の声》が減少する", - "あなたの失策が噂になる。近隣の国の中からランダムで1つ選ぶ。その国との関係が1段階悪化する", - "王国の経済に破綻の危機が。[生活レベル/9+現在の経過ターン数]の判定に失敗すると維持費+(1d6)MG", - "この区画一体の迷宮化が激しくなる。1クォーターが経過する", - "逸材の賃上げ要求が始まる。終了フェイズの予算会議の時、[今回使用した逸材の数×1]MGだけ維持費が上昇する", - "今の自分に自信が持てなくなる。生まれ表からランダムにジョブを1つ選び、現在のジョブをそのジョブに変更する", - ]) - end - - # 魅力ハプニング表(2d6) - def mk_charm_happening_table - get_table_by_2d6([ - "民同士の諍いに心を痛め、頭髪にもダメージが!【お酒】を消費することができなければ、このゲーム中[魅力]-1", - "何気ない一言が不和の種に…。好きなキャラ1人を選び、宮廷全員のそのキャラに対する《敵意》+1", - "あなたの美しさに嫉妬した迷宮が、あなたの姿を変える。「呪い」のバッドステータスを受ける", - "かわいさ余って憎さ百倍。あなたに対する《好意》が最も高いキャラを1人選ぶ。そのキャラに対する《好意》の分だけそのキャラへの《敵意》を上昇させ、その後《好意》を0にする", - "あなたを巡って不穏な空気が。宮廷全員のあなたに対する「愛情」の《好意》を比べ、高い順に2人選ぶ。その2人の互いに対する《敵意》+1", - "いがみ合う宮廷を見て民の士気が減少する。宮廷全員のあなたに対する《敵意》の中で最も高い値と同じだけ《配下》が減少する", - "宮廷に嫉妬の嵐が巻き起こる。宮廷の中で、あなたに対して愛情を持つキャラクターの数を数える。このゲームの間、行為判定を行うとき、ダイス目の合計がこの値以下なら絶対失敗となる(最低2)", - "愛想を尽かされる。宮廷全員のあなたに対する《好意》-1(最低0)", - "あなたの指揮に疑問の声が。[魅力/自分の《配下》の数]の判定に失敗すると[難易度-達成値]人だけ《配下》が減少する", - "あなたの恋人だという異性が現れる。宮廷全員のあなたに対する《好意》を比べ、最も高いキャラ1人を選ぶ。あなたはそのキャラの[武勇]と同じだけ《HP》を減少させる", - "他人が信用できなくなる。このゲームの間、協調行動を行えなくなり、人間関係のルールも使用できなくなる", - ]) - end - - # 探索ハプニング表(2d6) - def mk_search_happening_table - get_table_by_2d6([ - "指の震えが止まらない。【お酒】を消費することができなければ、このゲーム中[探索]-1", - "流れ星に直撃。《HP》-(1d6)", - "敵の過去を知り、同情してしまう。あなたのこのマップの支配者に対する《好意》+1。このゲームの間、《好意》を持ったキャラに対して攻撃を行い、絶対失敗した場合そのキャラへの《好意》と同じだけ《気力》が減少する", - "昨日の友は今日の敵。あなたに対する《好意》が最も高いキャラを1人選ぶ。そのキャラに対する《好意》の分だけそのキャラへの《敵意》を上昇させ、その後《好意》を0にする", - "うっかりアイテムを落として壊す。ランダムにアイテムスロットを1つ選び、そこにアイテムが入っていればそれを全て破壊する", - "カーネルが活性化しトラップが強化される。このゲームの間、トラップを解除するための難易度+1", - "友情にヒビが!宮廷全員のあなたに対する《好意》-1(最低0)、《敵意》+1", - "敵の迷宮化攻撃!宮廷全員は[探索/11]を行い、失敗したキャラは(2d6)点のダメージを受ける", - "つい出来心から国費に手を出してしまう。GMは好きなコモンアイテム1つを選ぶ。あなたはそのアイテムを手に入れるが、維持費+(1d6)MG、《民の声》-1。同じ部屋のPCは《希望》1点を消費して[探索/9]の判定に成功すれば、それを止めることができる", - "封印されていたトラップを発動させてしまう。ランダムに災害系トラップから1つを選び、それを発動させる", - "あなたを憎む迷宮支配者が賞金をかけた。このゲームの間、モンスターの攻撃やトラップの目標をランダムに決める場合、その目標はかならずあなたになる。(この効果を複数人が受けた場合、その中からランダムで決定する)", - ]) - end - - # 武勇ハプニング表(2d6) - def mk_valor_happening_table - get_table_by_2d6([ - "つい幼児退行を起こしそうになる。【お酒】を消費することができなければ、このゲーム中[武勇]-1", - "不意打ちを食らう。ランダムエンカウントが発生し、奇襲扱いで戦闘を行う", - "配下の期待が、あなたの重荷となる。[現在の《民の声》-(1d6)]だけ《気力》が減少する", - "配下があなたをかばう。自分の《配下》が(1d6)人減少する", - "ムカついたので思わず殴る。自分の《敵意》が最も高いキャラからランダムに1体選び、そのキャラの《HP》が自分の[武勇]と同じだけ減少する", - "決闘だっ!宮廷全員のあなたに対する《敵意》の中で、最も高い値と同じだけあなたの《HP》が減少する", - "豚どもめ…。宮廷全員に対する《敵意》+1", - "古傷が痛み出す。このゲームの間、戦闘で、あなたに対する敵の攻撃が成功すると、常に余分に1点ダメージを受ける", - "不意に絶望と虚無感が襲い、心が折れる。宮廷全員の《気力》-1", - "あなたを親の敵と名乗るものたちが現れた。このゲーム中に倒したモンスターからランダムに1種類を選び、そのモンスター(1d6)体と戦闘を行う", - "自分の失敗が許せない。このゲームの間、《器》が1点減少したものとして扱う", - ]) - end - - # 王国変動表(2d6) - def mk_kingdom_change_table - get_table_by_2d6([ - "列強のプロパガンダが現れる。(1d6)を振り、その目が現在の《民の声》以下で、現在列強の属国になっていたら属国から抜けることができる。上回っていたら、ランダムに列強を1つ選びその属国になる", - "冒険の成功を祝う民たちが出迎えてくれる。《民の声》+2。この結果を出したプレイヤー(以下、当PL)以外の全員は、今回の冒険を振り返り当PLのPCが《好意》を得るとしたら誰が一番ふさわしいかを協議する。決定したキャラへの当PLのPCの《好意》+1", - "何者かによる唐突な奇襲攻撃。未知の土地に面している領土からランダムに1つを選ぶ。[軍事レベル/敵対国数×2+険悪国数+9]の判定に成功すると返り討ちにして(1d6)MGを得る。失敗するとその領土は施設ごと失われる", - "民の労働の結果が明らかに。[生活レベル/敵対国数×2+険悪国数+9]の判定に成功すると《予算》が自国の領土のマップ数と同じだけ増える。失敗したら《予算》が同じだけ減る", - "民は領土を渇望していた。5MGを支払えば、隣接する未知の土地1つを領土にできる。(1d6)を振り、その数だけ通路を引くことができる。通路でつながっていない部屋は自国の領土として扱わない", - "王国の子どもたちが宮廷をあなた方を見て成長する。《民》が[王国に残した《民》の数÷10+治安レベル]人増える", - "あなたの活躍を耳にした者たちがやってくる。シナリオの目的を満たしている場合、関係が良好・同盟の国の数だけ(1d6)を振り、[合計値+治安レベル]人だけ《民》が増える", - "街の機能に異変が!?[治安レベル/敵対国数×2+険悪国数+9]の判定に成功すると、自国の好きな施設1軒を選び、その施設の隣でかつ通路がつながっている部屋に同じ種類の施設がもう1軒できる。失敗したら、自国のタイプ:部屋の施設を1軒選び、破壊する", - "王国同士の交流が行われた。[文化レベル/敵対国数×2+険悪国数+9]の判定に成功すると、生まれ表でランダムにジョブを決めた逸材が1人増え、好きな国1つとの関係を1段階良好にする。失敗すると、自国の逸材1人を選んで失い、ランダムに決めた国1つとの関係が1段階悪化する", - "ただ、無為に時が過ぎていたわけではない。迷宮フェイズで過ごした1ターンにつき《予算》が1MG増える", - "民の意識が大きく揺れる。(1d6)を振り、その目が現在の《民の声》以下だったら、好きな国力が1点上昇する。上回っていたら、好きな国力が1点減少する", - ]) - end - - # 王国変動失敗表(2d6) - def mk_kingdom_mischange_table - get_table_by_2d6([ - "列強のプロパガンダが現れる。(1d6)を振り、その目が現在の《民の声》を上回っていたら、ランダムに列強1つを選びその属国になる", - "新たな勢力が勃発する。王国シートの基地の土地欄の中から1つ、未知の土地を選ぶ。(1d6)を振り、その結果をその土地に記入する。1:敵対関係の国。2:険悪関係の国。3:凶暴な怪物の巣。4:人間嫌いのダンジョンマスターの庵。5:迷宮化の進んだ大迷宮。6:列強の飛び地", - "何者かによる唐突な奇襲攻撃。未知の土地に面している領土からランダムに1つを選ぶ。[軍事レベル/敵対国数×2+険悪国数+9]の判定に失敗するとその領土は施設ごと失われる", - "民の労働の結果が明らかに。[生活レベル/敵対国数×2+険悪国数+9]の判定に失敗したら《予算》が自国の領土のマップ数と同じだけ減る", - "他国の使者がやってくる。基地の土地欄の中からランダムに自国以外の国を1つ選ぶ。その国の領土のマップ数を等しい《予算》を消費するとその国との関係が1段階よくなる。消費しないと1段階悪くなる", - "民の声は離れ、この国を去る者たちがいた。《民》が(1d6)人減少する", - "過ぎゆく時が王政を帰る。基地の土地欄の中から、経過したターン数と等しい数までランダムに他国を選ぶ。GMは、その国に面する未知の土地1つを選び、それをその国の新たな領土とする。(周囲に未知の土地がない場合は増やせない)", - "街の機能に異変が!?[治安レベル/敵対国数×2+険悪国数+9]の判定に失敗したら、自国のタイプ:部屋の施設を1軒選び、破壊する", - "王国同士の交流が行われた。[文化レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、自国の逸材1人を選んで失い、ランダムに決めた国1つとの関係が1段階悪化する", - "ただ、無為に時が過ぎていたわけではない。迷宮フェイズで過ごした1ターンにつき《予算》が1MG増える", - "民の意識が大きく揺れる。(1d6)を振り、その目が現在の《民の声》を上回っていたら、好きな国力が1点減少する", - ]) - end - - # 痛打表(2d6) - def mk_critical_attack_table - get_table_by_2d6([ - "攻撃の手応えが武器に刻まれる。その攻撃に使用した武具アイテムにレベルがあれば、そのレベルが1点上昇する", - "電光石火の一撃。攻撃の処理が終了したあと、もう一度行動できる", - "相手の姿形を変えるほどの一撃。攻撃目標に「呪い」のバッドステータスを与える", - "乾坤一擲!攻撃の威力が2倍になる", - "相手を吹き飛ばす一撃。攻撃目標を好きなエリアに移動させる", - "会心の一撃!攻撃の威力+(1d6)", - "相手の勢いを利用した一撃。攻撃の威力が攻撃目標のレベルと同じだけ上昇する", - "あと1歩まで追いつめる。ダメージを与える代わりに、攻撃目標の残り《HP》を(1d6)点にすることができる", - "敵の技を封じる。攻撃目標のスキルを1種選び、その戦闘の間、そのスキルを未修得の状態にする", - "怒りの一撃!攻撃の威力+(2d6)", - "急所をとらえ一撃で切り伏せる。攻撃目標の《HP》を0にする", - ]) - end - - # 致命傷表(2d6) - def mk_fatal_wounds_table - get_table_by_2d6([ - "圧倒的一撃で急所を貫かれた。死亡する", - "致命的な一撃が頭をかすめる。[探索/受けたダメージ+5]の判定に失敗すると死亡する", - "出血多量で昏睡する。行動不能になる。この戦闘が終了するまでに《HP》を1以上にしないと死亡する", - "頭を打ちつけ昏睡する。行動不能になる。このクォーターが終了するまでに《HP》を1以上にしないと死亡する", - "重傷を負い昏睡する。行動不能になる。(1d6)クォーターが経過するまでに《HP》を1以上にしないと死亡する", - "意識を失う。行動不能になる", - "偶然アイテムに身を守られる。ランダムにアイテムを選び、そのアイテムを破壊してダメージを無効化する。破壊できるアイテムを1個も装備していない場合、行動不能になる", - "《民》たちが身を挺して庇う。自分の《配下》を(2d6)人減少させ、ダメージを無効化する。《配下》が1人も居ない場合行動不能になる", - "根性で跳ね返す。[探索/9-現在の《HP》]の判定に成功すると《HP》が1になる。失敗すると行動不能になる", - "精神力だけで耐える。[武勇/9-現在の《HP》]の判定に成功すると《HP》が1になる。失敗すると行動不能になる", - "幸運にもダメージを免れる。ダメージを無効化するが、代わりにランダムにバッドステータス1種を受ける", - ]) - end - - # 道中表(2d6) - def mk_travel_table - get_table_by_2d6([ - "道中の時間が愛を育む。全員、好きなキャラ1体を選びそのキャラに対する《好意》+1", - "何かの死体を見つけた。好きな素材1種類を(1d6)手に入れる", - "辺りが闇に包まれる。宮廷の中からランダムにキャラを選ぶ。そのキャラが【星の欠片】を持っていたら、それが1個破壊される", - "道に迷いそうになる。全員[才覚/9]の判定を行い、(1d6-成功したキャラ数)クォーター(最低0)、時間が経過する", - "トラップに引っかかる。全員[探索/9]の判定にを行い、失敗したキャラは《HP》が(1d6)点減少する", - "未知の土地の場合、何も起こらない。既知の土地の場合、その土地固有のイベントがある場合はそれが起こる", - "モンスターの襲撃を受けた。全員[武勇/9]の判定を行い、失敗したキャラは《HP》が(1d6)点減少する", - "恐ろしげな咆哮が響き渡る。全員[魅力/9]の判定を行い、失敗したキャラは《配下》が(1d6)人逃走し、自国へ帰る", - "周辺の迷宮化が進む。宮廷全員は、既知の土地の中からランダムに選んだ土地へ移動する", - "何かを拾う。コモンアイテムをランダムに1個選び、それを入手する", - "1MG拾う", - ]) - end - - # 交渉表(2d6) - def mk_negotiation_table - get_table_by_2d6([ - "中立的な態度は偽装だった。不意を打たれ、奇襲扱いで戦闘を行う", - "交渉は決裂した。戦闘を行う", - "交渉は決裂した。戦闘を行う", - "生け贄を要求された。モンスターの中で最もレベルが高いもののレベルと同じだけ《配下》を減少させれば友好的になる。ただし、《民の声》-(1d6)。《配下》を減らさなければ戦闘を行う", - "趣味を聞かれた。好きな単語表1つを選びD66を振る。宮廷の中に、その項目を好きなものに指定しているキャラがいれば友好的になる。居なければ戦闘を行う", - "物欲しそうにこちらを見ている。「肉」の素材(1d6)個か、【お弁当】または【フルコース】1個を消費すれば友好的になる。しなければ戦闘を行う", - "値踏みするようにこちらを見ている。維持費を(1d6)MG上昇させれば友好的になる。させなければ戦闘を行う", - "「何かいいもの」を要求された。モンスターの中で最もレベルが高いもののレベル以上の価格のアイテムを消費すれば友好的になる。レアアイテムは価格を+10して扱う。しなければ戦闘を行う", - "面白い話を要求された。プレイヤー達はモンスター達が興味を引きそうな話をすること。GMがそれを面白いと判断したら[魅力/9]の判定を行い、成功すれば。友好的になる。さもなければ戦闘を行う", - "一騎打ちを申し込んできた。宮廷の中から代表を1名選び、モンスターの中で最もレベルの高いものと1対1で戦闘を行う(配置は互いに前列)。勝利すれば友好的になる。敗北すれば、再び交渉するか戦闘するかを決断する。この一騎打ちに外野がスキルやアイテムで干渉すると全員で戦闘になる", - "運命の出会い。モンスター達の宮廷の代表に対する《好意》+1、友好的になる", - ]) - end - - # 戦闘ファンブル表(2d6) - def mk_combat_fumble_table - get_table_by_2d6([ - "敵に援軍が現れる。敵軍の中で最もレベルの低いモンスターが(1d6)体増える。モンスター側がこの結果になった場合、好きなPCの《配下》+(1d6)", - "敵の士気が大いに揺らぐ。自軍のキャラは全員1マス後退する", - "勢い余って仲間を攻撃!自分の居るエリアからランダムに自軍のキャラを1体選び、そのキャラに使用している武器と同じ威力のダメージを与える", - "つい仲間と口論になる。自軍の未行動キャラの中からランダムに1体選び、行動済みにする", - "魔法の効果が消える。自軍のキャラが使用したスキルやアイテムの効果で、戦闘中持続するものが全て無効になる", - "自分を傷つけてしまう。自分に(1d6)ダメージ", - "攻撃の勢いを逆に利用される。自分の《HP》を現在値の半分にする", - "アイテムを落とした。自分が装備しているアイテムからランダムに1個選び、破壊する。モンスター側の場合、自分に(1d6)ダメージ", - "カーネルが活性化する。戦闘系とラップからランダムに1種類選び、それがその場に配置される", - "空を切った攻撃に絶望する。自分と、自分に対して1点以上《好意》を持ったキャラ全員の《気力》-1。モンスター側の場合、自分に(1d6)ダメージ", - "武器がすっぽ抜ける。攻撃に使用していたアイテムが破壊される。モンスター側の場合、自分に(1d6)ダメージ。その後、バトルフィールドにいるキャラの中からランダムに1体選び、そのキャラの《HP》を1点にする", - ]) - end - - # 感情表(1d6) - def mk_emotion_table - get_table_by_1d3([ - "忠誠/怒り", - "友情/不信", - "愛情/侮蔑", - ]) - end - - # 相場表(2d6) - def mk_market_price_table - get_table_by_2d6([ - "無し", - "肉", - "牙", - "鉄", - "魔素", - "機械", - "衣料", - "木", - "火薬", - "情報", - "革", - ]) - end - - # お宝表1(1d6) - def mk_treasure1_table - get_table_by_1d6([ - "何も無し", - "何も無し", - "そのモンスターの素材欄の中から、好きな素材1個", - "そのモンスターの素材欄の中から、好きな素材2個", - "そのモンスターの素材欄の中から、好きな素材3個", - "【お弁当】1個", - ]) - end - - # お宝表2(1d6) - def mk_treasure2_table - get_table_by_1d6([ - "そのモンスターの素材欄の中から、好きな素材3個", - "そのモンスターの素材欄の中から、好きな素材4個", - "そのモンスターの素材欄の中から、好きな素材5個", - "ランダムに回復アイテム1個", - "ランダムに武具アイテム1個。レベルがあるアイテムなら1レベルのものが手に入る", - "ランダムにレア一般アイテム1個", - ]) - end - - # お宝表3(1d6) - def mk_treasure3_table - get_table_by_1d6([ - "そのモンスターの素材欄の中から、好きな素材5個", - "そのモンスターの素材欄の中から、好きな素材7個", - "そのモンスターの素材欄の中から、好きな素材10個", - "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個。レベルがあるアイテムなら1レベルのものが手に入る", - "ランダムにレア一般アイテム1個。レベルがあるアイテムなら1レベルのものが手に入る", - "ランダムにレア武具アイテム1個", - ]) - end - - # お宝表4(1d6) - def mk_treasure4_table - get_table_by_1d6([ - "そのモンスターの素材欄の中から、好きな素材5個", - "そのモンスターの素材欄の中から、好きな素材10個", - "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個。レベルがあるアイテムなら2レベルのものが手に入る", - "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個。レベルがあるアイテムなら3レベルのものが手に入る", - "ランダムにレア一般アイテム1個。レベルのあるアイテムなら2レベルのものが手に入る", - "ランダムにレア武具アイテム1個。レベルのあるアイテムなら1レベルのものが手に入る", - ]) - end - - # お宝表5(1d6) - def mk_treasure5_table - get_table_by_1d6([ - "そのモンスターの素材欄の中から、好きな素材10個", - "そのモンスターの素材欄の中から、好きな素材15個", - "好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個。レベルがあるアイテムなら4レベルのものが手に入る", - "ランダムにレア一般アイテム1個。レベルのあるアイテムなら3レベルのものが手に入る", - "ランダムにレア武具アイテム1個。レベルのあるアイテムなら2レベルのものが手に入る", - "好きなレアアイテム1個", - ]) - end - - # 名前表 - def mk_name_table - debug("mk_name_table begin") - output = '1' - # 名前表 - name_n = (rand(6) + 1) - debug("name_n", name_n) - - d1 = d66(2) - d2 = d66(2) - debug("d1, d2", d1, d2) - - debug("name_n", name_n) - if name_n <= 1 - # 名前表A+二つ名表A - output = mk_nick_a_table(mk_name_a_table(d1), d2) - elsif name_n <= 2 - # 名前表B+二つ名表A - output = mk_nick_a_table(mk_name_b_table(d1), d2) - elsif name_n <= 3 - # 名前表エキゾチック+二つ名表A - output = mk_nick_a_table(mk_name_ex_table(d1), d2) - elsif name_n <= 4 - # 名前表A+二つ名表B - output = mk_nick_b_table(mk_name_a_table(d1), d2) - elsif name_n <= 5 - # 名前表B+二つ名表B - output = mk_nick_b_table(mk_name_b_table(d1), d2) - else - # 名前表ファンタジー+二つ名表B - output = mk_nick_b_table(mk_name_fa_table(d1), d2) - end - - dice = "#{name_n},#{d1},#{d2}" - - return output, dice - end - - # 二つ名表A(D66) - def mk_nick_a_table(output, num) - table = [ - [11, "“災い転じて福となす”"], - [12, "“七転び八起きの”"], - [13, "“冗談にも程がある”"], - [14, "“虎の尾を踏む”"], - [15, "“石橋を叩いて渡る”"], - [16, "“一を聴いて十を知る”"], - [22, "“喉から手が出る”"], - [23, "“据え膳食わぬは男の恥の”"], - [24, "“天につば吐く”"], - [25, "“風に柳の”"], - [26, "“目に入れても痛くない”"], - [33, "“とかく浮世は色と酒の”"], - [34, "“当たるも八卦、当たらぬも八卦の”"], - [35, "“泣く子も黙る”"], - [36, "“天上天下唯我独尊”"], - [44, "“虫も殺さぬ”"], - [45, "“花も恥じらう”"], - [46, "“触らぬ神に祟り無しの”"], - [55, "“両手に花の”"], - [56, "“(ゲーム会場の地名)でも一、二を争う”"], - ] - if num < 66 - output = get_table_by_number(num, table) + output - else - output = "#{output}#{(rand(6) + 1)}世" - end - - return output - end - - # 二つ名表B(D66) - def mk_nick_b_table(output, num) - table = [ - [11, "“身も蓋もない”"], - [12, "“七人の敵がいる”"], - [13, "“ドラゴンも裸足で逃げ出す”"], - [14, "“われらが”"], - [15, "“機会攻撃を誘発する”"], - [16, "“佳人薄命”"], - [22, "“すねに傷持つ”"], - [23, "“湯上りは親でも惚れる”"], - [24, "“叶わぬ時の神頼みの”"], - [25, "“果報は寝て待つ”"], - [26, "“清濁併せ呑む”"], - [33, "“かゆいところに手が届く”"], - [34, "“酒池肉林の”"], - [35, "“蛇の道は蛇の”"], - [36, "“口から先に生まれた”"], - [44, "“柔よく剛を制す”"], - [45, "“死人に口なしの”"], - [46, "“噂をすれば”"], - [55, "“ミスター/ミス”"], - [56, "“(好きな名前表)の子”"], - [66, "“(好きな単語表)の父/母”"], - ] - return get_table_by_number(num, table) + output - end - - # 名前表A(D66) - def mk_name_a_table(num) - table = [ - [11, "オレンジ/ジャスミン"], - [12, "ホオズキ/アサガオ"], - [13, "クローバー/ダチュラ"], - [14, "ダフニ/キノコ"], - [15, "グラナーダ/プリムローズ"], - [16, "ラディッシュ/マリーゴールド"], - [22, "サイプレス/マグノリア"], - [23, "バンブー/オリーブ"], - [24, "クラウド/クリマ"], - [25, "タオ/スノウ"], - [26, "アヴァランチ/エクレール"], - [33, "ビバシータ/メトロノーム"], - [34, "カノン/ファゴット"], - [35, "オーボエ/アルモニカ"], - [36, "チューバ/オルガノ"], - [44, "ナン/クッキー"], - [45, "ウイロウ/カシュカシュ"], - [46, "スコーン/クスクス"], - [55, "フラスコ/クリップ"], - [56, "クラパドーラ/クレヨン"], - [66, "ソープ/ブルーム"], - ] - - return get_table_by_number(num, table) - end - - # 名前表B(D66) - def mk_name_b_table(num) - table = [ - [11, "エイジ/ウェンズデイ"], - [12, "ジョルノ/ノエル"], - [13, "タスク/マニャーナ"], - [14, "ウィンター/ジュノー"], - [15, "ハイラン/ブランカ"], - [16, "ウォルナット/ルージュ"], - [22, "グレイ/スカーレット"], - [23, "シュバルツ/モエギ"], - [24, "スロット/キリエ"], - [25, "ジョーカー/ダイス"], - [26, "ジグソウ/ドミノ"], - [33, "バックギャモン/マーブル"], - [34, "シーガロ/ココア"], - [35, "スピーチカ/オレンジペコー"], - [36, "ジッポ/ショコラ"], - [44, "ナインピンズ/ルチャ"], - [45, "デカスロン/ラクロス"], - [46, "カバディ/ピンポン"], - [55, "ポンド/ヴェルベット"], - [56, "ルーブル/コットン"], - [66, "シリング/シルク"], - ] - - return get_table_by_number(num, table) - end - - # 名前表エキゾチック(D66) - def mk_name_ex_table(num) - table = [ - [11, "モアイ/スイショウドクロ"], - [12, "チュパカブラ/ムベンベ"], - [13, "カンフー/インヤン"], - [14, "ブシドー/ミヤコ"], - [15, "チャンピオン/バービー"], - [16, "ウパニシャッド/ゾルゲ"], - [22, "デスマーチ/インテル"], - [23, "ゴッホ/ヴィクトリア"], - [24, "ゾンビ/オニャンコポン"], - [25, "ゲロッパ/カルメン"], - [26, "オーバーキル/サシミ"], - [33, "ブッチャー/デヴィ"], - [34, "ブロンソン/マドンナ"], - [35, "ガイギャックス/エロイカ"], - [36, "好きな星の名前(スピカ,オリオン)"], - [44, "好きな武器の名前(エペ,フランベルジュ)"], - [45, "好きな動物の名前(イタチ,パグ)"], - [46, "好きな鉱物の名前(ルビィ,ヒスイ)"], - [55, "好きな言葉+ドラゴン"], - [56, "好きな単語表で決定する"], - [66, "プレイヤーと同じ名前"], - ] - return get_table_by_number(num, table) - end - - # 名前表ファンタジー(D66) - def mk_name_fa_table(num) - table = [ - [11, "アダム/イヴ"], - [12, "ジャック/モモ"], - [13, "オズ/アリス"], - [14, "コナン/レダ"], - [15, "アーサー/イシス"], - [16, "エルリック/グローリアーナ"], - [22, "ギルガメッシュ/アマテラス"], - [23, "マハラジャ/クリシュナ"], - [24, "カゲオトコ/クロトカゲ"], - [25, "オルフェウス/ヴィーナス"], - [26, "ソロモン/サロメ"], - [33, "ワタリガラス/ディードリット"], - [34, "ニャルラトホテプ/バースト"], - [35, "アンナタール/フォルトゥナ"], - [36, "ザナドゥ/ヨミ"], - [44, "アルビオン/ラピュタ"], - [45, "ゼンダ/ゴーメンガースト"], - [46, "インスマウス/イース"], - [55, "フウヌイム/ヤプー"], - [56, "ザンス/ナルニア"], - [66, "カレワラ/イーハトーブ"], - ] - - return get_table_by_number(num, table) - end - - # デバイスファクトリー(1D6) - def mk_device_factory_table() - output = mk_item_decide_table(rand(6) + 1) - - dice, = roll(2, 6) - output = output + ' / ' + mk_item_features_table(dice) - return output - end - - # アイテムカテゴリ決定表(1D6) - def mk_item_decide_table(num) - functionTable = [ - [ 1, lambda { mk_weapon_item_table(d66(2)) } ], - [ 2, lambda { mk_life_item_table(d66(2)) } ], - [ 3, lambda { mk_rest_item_table(d66(2)) } ], - [ 4, lambda { mk_search_item_table(d66(2)) } ], - [ 5, lambda { mk_rare_weapon_item_table(d66(1)) } ], - [ 6, lambda { mk_rare_item_table(d66(1)) } ], - ] - return get_table_by_number(num, functionTable) - end - - # 武具アイテム表(D66) - def mk_weapon_item_table(num) - table = [ - [ 11, 'だんびら' ], - [ 12, 'だんびら' ], - [ 13, 'ダガー' ], - [ 14, '戦斧' ], - [ 15, '盾' ], - [ 16, '鑓' ], - [ 22, '籠手(だんびら)' ], - [ 23, '手裏剣' ], - [ 24, '石弓' ], - [ 25, '甲冑' ], - [ 26, '戦鎚' ], - [ 33, '大弓(だんびら)' ], - [ 34, '爆弾' ], - [ 35, '鉄砲' ], - [ 36, '大剣' ], - [ 44, '拳銃(だんびら)' ], - [ 45, 'ホウキ' ], - [ 46, '徹甲弾' ], - [ 55, 'だんびら' ], - [ 56, '大砲' ], - [ 66, 'だんびら' ], - ] - - return get_table_by_number(num, table) - end - - # 生活アイテム表(D66) - def mk_life_item_table(num) - table = [ - [ 11, 'バックパック' ], - [ 12, 'バックパック' ], - [ 13, '鍋' ], - [ 14, 'クラッカー' ], - [ 15, 'がまぐち' ], - [ 16, 'マント' ], - [ 22, '法衣(バックパック)' ], - [ 23, 'カード' ], - [ 24, 'エプロン' ], - [ 25, '住民台帳' ], - [ 26, '携帯電話' ], - [ 33, '召喚鍵(バックパック)' ], - [ 34, '肖像画' ], - [ 35, '衣装' ], - [ 36, '山吹色のお菓子' ], - [ 44, 'バックパック' ], - [ 45, '眼鏡' ], - [ 46, 'クレジットカード' ], - [ 55, 'バックパック' ], - [ 56, '魔道書' ], - [ 66, 'バックパック' ], - ] - - return get_table_by_number(num, table) - end - - # 回復アイテム表(D66) - def mk_rest_item_table(num) - table = [ - [ 11, 'お弁当' ], - [ 12, 'お弁当' ], - [ 13, '特効薬' ], - [ 14, '保存食' ], - [ 15, '担架' ], - [ 16, '珈琲' ], - [ 22, '軟膏(お弁当)' ], - [ 23, 'チョコレート' ], - [ 24, 'お酒' ], - [ 25, 'フルコース' ], - [ 26, 'ポーション' ], - [ 33, 'お弁当' ], - [ 34, '救急箱' ], - [ 35, '強壮剤' ], - [ 36, '迷宮保険' ], - [ 44, 'お弁当' ], - [ 45, '科学調味料' ], - [ 46, '惚れ薬' ], - [ 55, 'お弁当' ], - [ 56, '復活薬' ], - [ 66, 'お弁当' ], - ] - - return get_table_by_number(num, table) - end - - # 探索アイテム表(D66) - def mk_search_item_table(num) - table = [ - [ 11, '星の欠片' ], - [ 12, '星の欠片' ], - [ 13, '旗' ], - [ 14, 'お守り' ], - [ 15, '拷問具' ], - [ 16, 'パワーリスト' ], - [ 22, '工具(星の欠片)' ], - [ 23, 'テント' ], - [ 24, '楽器' ], - [ 25, '使い魔' ], - [ 26, '乗騎' ], - [ 33, '迷宮迷彩(星の欠片)' ], - [ 34, '罠百科' ], - [ 35, '迷宮防護服' ], - [ 36, '地図' ], - [ 44, '星の欠片' ], - [ 45, '時計' ], - [ 46, 'もぐら棒' ], - [ 55, '星の欠片' ], - [ 56, 'カボチャの馬車' ], - [ 66, '星の欠片' ], - ] - - return get_table_by_number(num, table) - end - - # レア武具アイテム表(1D6+1D6) - def mk_rare_weapon_item_table(num) - table = [ - [ 11, '虚弾' ], - [ 12, '怪物毒' ], - [ 13, '小鬼の襟巻' ], - [ 14, '喇叭銃' ], - [ 15, '蛍矢' ], - [ 16, '大盾' ], - [ 21, 'まわし' ], - [ 22, '怪物毒' ], - [ 23, 'しゃべる剣' ], - [ 24, '小麦粉' ], - [ 25, '王笏' ], - [ 26, '服従の鞭' ], - [ 31, 'ぬいぐるみ' ], - [ 32, '魔杖' ], - [ 33, '怪物毒' ], - [ 34, '星衣' ], - [ 35, '聖印' ], - [ 36, '獣の毛皮' ], - [ 41, '日傘' ], - [ 42, 'チェインソード' ], - [ 43, '邪眼' ], - [ 44, '怪物毒' ], - [ 45, '徒手空拳' ], - [ 46, 'バカには見えない鎧' ], - [ 51, 'ビキニアーマー' ], - [ 52, '輝く者' ], - [ 53, '貪る者' ], - [ 54, '滅ぼす者' ], - [ 55, '機械の体' ], - [ 56, '破城槌' ], - [ 61, '刈り取る者' ], - [ 62, '貫く者' ], - [ 63, '黄金の鶴嘴' ], - [ 64, 'ムラサマ' ], - [ 65, '蒸気甲冑' ], - [ 66, '王剣' ], - ] - - return get_table_by_number(num, table) - end - - # レア一般アイテム表(1D6+1D6) - def mk_rare_item_table(num) - table = [ - [ 11, 'ブルーリボン' ], - [ 12, '聖痕' ], - [ 13, '剥製' ], - [ 14, '愚者の冠' ], - [ 15, '名刺' ], - [ 16, '種籾' ], - [ 21, '香水' ], - [ 22, '守りの指輪(名刺)' ], - [ 23, '煙玉' ], - [ 24, '悪名' ], - [ 25, '藁人形' ], - [ 26, 'パワー餌' ], - [ 31, '王妃の鏡' ], - [ 32, '蓄音機' ], - [ 33, '無限の心臓(名刺)' ], - [ 34, '星籠' ], - [ 35, '水晶球' ], - [ 36, '転ばぬ先の杖' ], - [ 41, '悟りの書' ], - [ 42, '操りロープ' ], - [ 43, '盗賊の七つ道具' ], - [ 44, '携帯算術機(名刺)' ], - [ 45, '棺桶' ], - [ 46, 'カメラ' ], - [ 51, '不思議なたまご' ], - [ 52, 'ブーケ' ], - [ 53, '露眼鏡' ], - [ 54, '災厄王の遺物' ], - [ 55, '経験値' ], - [ 56, '鞍' ], - [ 61, '視肉' ], - [ 62, '玉璽' ], - [ 63, '衛星帯' ], - [ 64, '軍配' ], - [ 65, '聖杯' ], - [ 66, '愛' ], - ] - - return get_table_by_number(num, table) - end - - # アイテムの特性決定表(2D6) - def mk_item_features_table(num) - output = "" - dice, = roll(2, 6) - - if num <= 2 - output = '「' + mk_item_power_table(rand(6) + 1) + '」の神力を宿す' - elsif num <= 3 - output = '寿命を持つ。寿命の値を決定する。' + "\n" - output += 'さらに、' + mk_item_features_table(dice) - elsif num <= 4 - output = '境界障壁を持つ。《HP》の値を決定する。' - elsif num <= 5 - output = '銘を持つ。銘を決定する。' - elsif num <= 6 - output = '合成具である。もう1つの機能は「' + mk_item_decide_table(rand(6) + 1) + '」である。' - elsif num <= 7 - output = 'そのアイテムにレベルがあれば、レベルを1点上昇する。' + "\n" - output += 'レベルが設定されていなければ、' + mk_item_features_table(dice) - elsif num <= 8 - output = '「' + mk_item_jyumon_table(dice) + '」の呪紋を持つ。' - elsif num <= 9 - output = '「' + mk_item_jyuka_table(rand(6) + 1) + '」の呪禍を持つ。' + "\n" - output += 'さらに、' + mk_item_features_table(dice) - elsif num <= 10 - output = '高価だ。価格を設定する。' - elsif num <= 11 - output = '「条件:' + mk_item_aptitude_table(rand(6) + 1) + '」の適性を持つ。' + "\n" - output += 'さらに、' + mk_item_features_table(dice) - else - output = '「' + mk_item_attribute_table(rand(6) + 1) + '」の属性を持つ。' - end - - return '特性[' + num.to_s + ']:' + output - end - - # 神力決定表(1D6) - def mk_item_power_table(num) - table = [ - [ 1, '〔才覚〕' ], - [ 2, '〔魅力〕' ], - [ 3, '〔探索〕' ], - [ 4, '〔武勇〕' ], - [ 5, '〈器〉' ], - [ 6, '〈回避値〉' ], - ] - - return "[#{num}]" + get_table_by_number(num, table) - end - - # 呪紋決定表(2D6) - def mk_item_jyumon_table(num) - table = [ - [ 2, 'モンスタースキル' ], - [ 3, '便利スキル' ], - [ 4, '芸能スキル' ], - [ 5, '迷宮スキル' ], - [ 6, '星術スキル' ], - [ 7, '一般スキル' ], - [ 8, '召喚スキル' ], - [ 9, '科学スキル' ], - [ 10, '交渉スキル' ], - [ 11, '神官のクラススキル' ], - [ 12, 'ジョブスキル' ], - ] - - return "[#{num}]" + get_table_by_number(num, table) - end - - # 呪禍表(1D6) - def mk_item_jyuka_table(num) - table = [ - [ 1, '「呪い」のバッドステータス' ], - [ 2, '「肥満」のバッドステータス' ], - [ 3, '「愚か」のバッドステータス' ], - [ 4, 'サイクルの終了時に《HP》が1点減少する' ], - [ 5, '条件を満たしても誰とも人間関係を結べない' ], - [ 6, '〈器〉が1点減少する' ], - ] - - return "[#{num}]" + get_table_by_number(num, table) - end - - # 適正表(1D6) - def mk_item_aptitude_table(num) - table = [ - [ 1, 'ランダムなクラス1種' ], - [ 2, lambda { mk_family_business_table(d66(2)) } ], - [ 3, lambda { mk_gender_table((rand 6) + 1) + '性' } ], - [ 4, '上級ジョブ' ], - [ 5, 'モンスタースキルを修得' ], - [ 6, '童貞、もしくは処女' ], - ] - - return "[#{num}]" + get_table_by_number(num, table) - end - - # 属性表(1D6) - def mk_item_attribute_table(num) - table = [ - [ 1, '自然の力' ], - [ 2, '幻夢の力' ], - [ 3, '星炎の力' ], - [ 4, '暗黒の力' ], - [ 5, '聖なるの力' ], - [ 6, '災厄の力' ], - ] - - return "[#{num}]" + get_table_by_number(num, table) - end - - def mk_gender_table(num) - output = '1' - - if num.odd? - output = '男' - else - output = '女' - end - - return output - end - - # 生まれ表(D66) - def mk_family_business_table(num) - table = [ - [ 11, '星術師' ], - [ 12, '魔道師' ], - [ 13, '召喚師' ], - [ 14, '博士' ], - [ 15, '医者' ], - [ 16, '貴族' ], - [ 22, '宦官' ], - [ 23, '武人' ], - [ 24, '処刑人' ], - [ 25, '衛視' ], - [ 26, '商人' ], - [ 33, '迷宮職人' ], - [ 34, '亭主' ], - [ 35, '料理人' ], - [ 36, '寿ぎ屋' ], - [ 44, '働きもの' ], - [ 45, '狩人' ], - [ 46, '冒険者' ], - [ 55, '怠け者' ], - [ 56, '盗賊' ], - [ 66, '生まれ表の中から、好きなジョブ1つを選ぶ' ], - ] - - return "[#{num}]" + get_table_by_number(num, table) - end - - # 1レベルランダムエンカウント表(1D6) - def mk_random_encount1_table(num) - table = [ - [ 1, '『守って守って突撃ゴー!』 前衛:ごんぎつね×宮廷の人数、後衛:ノコギリ猪×1' ], - [ 2, '『じわじわ削る、カボチャの舞』 前衛:焔虫×宮廷の人数、本陣:カボチャ頭×宮廷の人数の半分' ], - [ 3, '『ものすごくジャマな人たち。』 前衛:小人さん×宮廷の人数、取り替え子×宮廷の人数の半分' ], - [ 4, '『何かやってくれるかも……』 前衛:兵隊エルフ×宮廷の人数' ], - [ 5, '『【かばう】で延命しつつ【鉄の勇気】』 前衛:キンギョ×宮廷の人数、本陣:イカロス×宮廷の人数の半分' ], - [ 6, '『英雄で指示してシュシュシュシュ~~~~ト!!』 前衛:小鬼×宮廷の人数、後衛:小鬼×宮廷の人数、本陣:小鬼大砲×1、小鬼英雄×1' ], - ] - - return get_table_by_number(num, table) - end - - # 2レベルランダムエンカウント表(1D6) - def mk_random_encount2_table(num) - table = [ - [ 1, '『作戦判定に負けてもOK、そして強い』 前衛:ガーゴイル×宮廷の人数' ], - [ 2, '『吸い殺せ! ドレインしまくれ!』 後衛:塚人×宮廷の人数の半分' ], - [ 3, '『ゴールデンコンビ結成。指揮と【鉄腕】+【範囲攻撃】で大暴れ』 前衛:牛頭×宮廷の人数の半分、後衛:山羊頭×宮廷の人数の半分' ], - [ 4, '『クピドは野放しにできないが、ハルキュオネは殺せない。このジレンマが……』 前衛:ハルキュオネ×宮廷の人数、後衛:ハルキュオネ×宮廷の人数、本陣:クピド×宮廷の人数の半分' ], - [ 5, '『眠りコンボ』 前衛:グレムリン×宮廷の人数、本陣:眠りの精×1' ], - [ 6, '『回避を減らしてみみずの範囲攻撃』 前衛:みみず×宮廷の人数、本陣:大喰らい×宮廷の人数の半分' ], - ] - - return get_table_by_number(num, table) - end - - # 3レベルランダムエンカウント表(1D6) - def mk_random_encount3_table(num) - table = [ - [ 1, '『魅了→木霊ハメ』 後衛:淫魔×1、本陣:レーシィ×宮廷の人数' ], - [ 2, '『素早く【多勢に無勢】をしかけ……たい』 前衛:階賊×宮廷の人数、本陣:抜け忍×1' ], - [ 3, '『倒しても嬉しくない人柱をどうぞ』 前衛:人柱×宮廷の人数、本陣:恋のぼり×宮廷の人数の半分' ], - [ 4, '『位置を調整して【抱擁】してみよう』 後衛:霧妾×宮廷の人数、本陣:お化けシーツ×宮廷の人数' ], - [ 5, '『クリティカルヒットしたい(希望)』 後衛:ヴォーパルバニー×宮廷の人数、本陣:二面人×1' ], - [ 6, '『なんとか特攻したい(願望)』 前衛:穴人×宮廷の人数、ゴーレム×1' ], - ] - - return get_table_by_number(num, table) - end - - # 4レベルランダムエンカウント表(1D6) - def mk_random_encount4_table(num) - table = [ - [ 1, '『増やして治す。ド外道タッグが嵐を呼ぶぜ』 前衛:闇双子×1、本陣:坊主子牛×宮廷の人数の半分' ], - [ 2, '『カリスマ的存在+平和の使者→エセNGOみたいな?』 前衛:ワリアヒラ×宮廷の人数、後衛:妖精騎士×1' ], - [ 3, '『【星戦】→攻撃、【星界】→【ベアハッグ】』 前衛:洞窟熊×宮廷の人数、本陣:星人×宮廷の人数の半分' ], - [ 4, '『さりげなく先攻を取りつつ《民》をバイドバイパー作戦』 前衛:大目玉×宮廷の人数、本陣:笛吹き男×宮廷の人数の半分' ], - [ 5, '『アンデッドチーム、がんばれ!』 前衛:墓暴き×宮廷の人数、本陣:吸血鬼×1' ], - [ 6, '『まよセレ、このゲームの代名詞(?)。こいつは欠かせない!』 後衛:マヨネーズキング・ピュアセレクト×宮廷の人数、本陣:メイクイーン×1' ], - ] - - return get_table_by_number(num, table) - end - - # 5レベルランダムエンカウント表(1D6) - def mk_random_encount5_table(num) - table = [ - [ 1, '『「死ぬが良い」最終鬼畜兵器岸降臨』 前衛:暗黒騎士×1' ], - [ 2, '『割と痛い。さりげなく魔王が分裂する』 前衛:カミツキ魔王×宮廷の人数の半分、本陣:雷鳥×1' ], - [ 3, '『ハマると死ぬ。5人パーティだと3体出てザマーミロ』 前衛:ヴァララカール×宮廷の人数の半分' ], - [ 4, '『不意打ちされたらデンジャー。ひそかにワイヴァーンで先手を取る』 前衛:睨み毒蛇×宮廷の人数の半分、後衛:ワイヴァーン×1' ], - [ 5, '『ゾンビスペシャル……で、がんばりたい』 前衛:死にぞこない×宮廷の人数の半分、後衛:死にぞこない×宮廷の人数の半分、本陣:屍術師×1' ], - [ 6, '『とにかく殴れ! 単純明快パワーチーム』 前衛:鮫人×宮廷の人数、夜這い海星×1' ], - ] - - return get_table_by_number(num, table) - end - - # 6レベルランダムエンカウント表(1D6) - def mk_random_encount6_table(num) - table = [ - [ 1, '『死んでください。【外皮】か【甲冑】がないと相当ヤバい』 本陣:死告天使×宮廷の人数' ], - [ 2, '『ド迫力。ブレス連発。3体出ちゃったらカーニバル』 本陣:ドラゴン×宮廷の人数の半分' ], - [ 3, '『死霊のボス。スキル次第でヤバい。GMの悪意が閃くときだ』 本陣:骨龍×1、推奨スキル【不滅の炎】、【困惑】、【ヤバチョンガー】など' ], - [ 4, '『《好意》を消して【魅了】に持ち込む』 後衛:愛染明王×宮廷の人数' ], - [ 5, '『真の狙いは【蜘蛛の群れ】』 前衛:アラクネ×宮廷の人数、本陣:蜘蛛の王×1' ], - [ 6, '『お約束。まあこいつは出るだろうみたいな』 前衛:魔蟹×1、帳魚×1' ], - ] - - return get_table_by_number(num, table) - end - - # 地名決定表 - def mk_pn_decide_table(num) - output = '' - - d1, = roll(1, 6) - d2, = roll(1, 6) - debug("d1", d1) - debug("d2", d2) - - d1 = (d1 / 2.0).ceil.to_i - d2 = (d2 / 2.0).ceil.to_i - - num.times do |_i| - output += "「" + mk_decoration_table(d1) + mk_placename_table(d2) + "」" - end - - return output - end - - # 修飾決定表(1D6) - def mk_decoration_table(num) - debug("mk_decoration_table num", num) - - table = [ - [ 1, lambda { mk_basic_decoration_table(d66(2)) } ], - [ 2, lambda { mk_spooky_decoration_table(d66(2)) } ], - [ 3, lambda { mk_katakana_decoration_table(d66(2)) } ], - ] - return get_table_by_number(num, table) - end - - # 地名決定表(1D6) - def mk_placename_table(num) - table = [ - [ 1, lambda { mk_passage_placename_table(d66(2)) } ], - [ 2, lambda { mk_natural_placename_table(d66(2)) } ], - [ 3, lambda { mk_artifact_placename_table(d66(2)) } ], - ] - return get_table_by_number(num, table) - end - - # 基本表(D66) - def mk_basic_decoration_table(num) - table = [ - [ 11, '欲望(よくぼう)' ], - [ 12, '漂流(ひょうりゅう)' ], - [ 13, '黄金(おうごん)' ], - [ 14, '火達磨(ひだるま)' ], - [ 15, '災厄(さいやく)' ], - [ 16, '三日月(みかづき)' ], - [ 22, '絡繰り(からくり)' ], - [ 23, '流星(りゅうせい)' ], - [ 24, '棘々(とげとげ)' ], - [ 25, '鏡(かがみ)' ], - [ 26, '銀鱗(ぎんりん)' ], - [ 33, '螺旋(らせん)' ], - [ 34, '七色(なないろ)' ], - [ 35, '殉教(じゅんきょう)' ], - [ 36, '水晶(すいしょう)' ], - [ 44, '氷結(ひょうけつ)' ], - [ 45, '忘却(ぼうきゃく)' ], - [ 46, '幸福(こうふく)' ], - [ 55, '妖精(ようせい)' ], - [ 56, '霧雨(きりさめ)' ], - [ 66, '夕暮れ(ゆうぐれ)' ], - ] - return get_table_by_number(num, table) - end - - # 不気味表(D66) - def mk_spooky_decoration_table(num) - table = [ - [ 11, '赤錆(あかさび)' ], - [ 12, '串刺し(くしざし)' ], - [ 13, '鬼蜘蛛(おにぐも)' ], - [ 14, '蠍(さそり)' ], - [ 15, '幽霊(ゆうれい)' ], - [ 16, '髑髏(どくろ)' ], - [ 22, '血溜まり(ちだまり)' ], - [ 23, '臓物(ぞうもつ)' ], - [ 24, '骸(むくろ)' ], - [ 25, '鉤爪(かぎづめ)' ], - [ 26, '犬狼(けんろう)' ], - [ 33, '奈落(ならく)' ], - [ 34, '大蛇(おろち)' ], - [ 35, '地獄(じごく)' ], - [ 36, '蚯蚓(みみず)' ], - [ 44, '退廃(たいはい)' ], - [ 45, '土竜(もぐら)' ], - [ 46, '絶望(ぜつぼう)' ], - [ 55, '夜泣き(よなき)' ], - [ 56, '緑林(りょくりん)' ], - [ 66, 'どん底(どんぞこ)' ], - ] - return get_table_by_number(num, table) - end - - # カタカナ表(D66) - def mk_katakana_decoration_table(num) - table = [ - [ 11, 'マヨネーズ' ], - [ 12, 'ダイナマイト' ], - [ 13, 'ドラゴン' ], - [ 14, 'ボヨヨン' ], - [ 15, 'モケモケ' ], - [ 16, 'マヌエル' ], - [ 22, 'ダイス' ], - [ 23, 'ロマン' ], - [ 24, 'ウクレレ' ], - [ 25, 'エップカプ' ], - [ 26, 'カンパネルラ' ], - [ 33, 'マンチキン' ], - [ 34, 'バロック' ], - [ 35, 'ミサイル' ], - [ 36, 'ドッキリ' ], - [ 44, 'ブラック' ], - [ 45, '好きなモンスターの名前' ], - [ 46, '好きなトラップの名前' ], - [ 55, '好きな単語表で' ], - [ 56, '好きな名前決定表で' ], - [ 66, '好きな数字の組み合わせ' ], - ] - return get_table_by_number(num, table) - end - - # 通路系地名表(D66) - def mk_passage_placename_table(num) - table = [ - [ 11, '門(ゲート)' ], - [ 12, '回廊(コリドー)' ], - [ 13, '通り(ストリート)' ], - [ 14, '小路(アレイ)' ], - [ 15, '大路(アベニュー)' ], - [ 16, '街道(ロード)' ], - [ 22, '鉄道(ライン)' ], - [ 23, '迷宮(メイズ)' ], - [ 24, '坑道(トンネル)' ], - [ 25, '坂(スロープ)' ], - [ 26, '峠(パス)' ], - [ 33, '運河(カナル)' ], - [ 34, '水路(チャネル)' ], - [ 35, '河(ストリーム)' ], - [ 36, '堀(モート)' ], - [ 44, '溝(ダイク)' ], - [ 45, '階段(ステア)' ], - [ 46, '辻(トレイル)' ], - [ 55, '橋(ブリッジ)' ], - [ 56, '穴(ホール)' ], - [ 66, '柱廊(ストア)' ], - ] - return get_table_by_number(num, table) - end - - # 自然系地名表(D66) - def mk_natural_placename_table(num) - table = [ - [ 11, '砂漠(デザート)' ], - [ 12, '丘陵(ヒル)' ], - [ 13, '海(オーシャン)' ], - [ 14, '森(フォレスト)' ], - [ 15, '沼(ポンド)' ], - [ 16, '海岸(コースト)' ], - [ 22, '密林(ジャングル)' ], - [ 23, '湖(レイク)' ], - [ 24, '山脈(マウンテンズ)' ], - [ 25, '平原(プレイン)' ], - [ 26, 'ヶ原(ランド)' ], - [ 33, '荒野(ヒース)' ], - [ 34, '渓谷(ヴァレー)' ], - [ 35, '島(アイランド)' ], - [ 36, '連峰(ピークス)' ], - [ 44, '火山(ヴォルケイノ)' ], - [ 45, '湿原(ウェットランド)' ], - [ 46, '星雲(ネビュラ)' ], - [ 55, '星(スター)' ], - [ 56, 'ヶ淵(プール)' ], - [ 66, '雪原(スノウズ)' ], - ] - return get_table_by_number(num, table) - end - - # 人工系地名表(D66) - def mk_artifact_placename_table(num) - table = [ - [ 11, '城(キャッスル)' ], - [ 12, '壁(ウォール)' ], - [ 13, '砦(フォート)' ], - [ 14, '地帯(ゾーン)' ], - [ 15, '室(ルーム)' ], - [ 16, 'の間(チャンバー)' ], - [ 22, '浴室(バス)' ], - [ 23, '畑(ファーム)' ], - [ 24, '館(ハウス)' ], - [ 25, '座(コンスティレィション)' ], - [ 26, '遺跡(ルイン)' ], - [ 33, 'ヶ浜(ビーチ)' ], - [ 34, '塔(タワー)' ], - [ 35, '墓場(グレイブ)' ], - [ 36, '洞(ケイヴ)' ], - [ 44, '堂(バジリカ)' ], - [ 45, '野(フィールド)' ], - [ 46, '書院(スタディ)' ], - [ 55, '駅前(ステイション)' ], - [ 56, '房(クラスター)' ], - [ 66, '腐海(ケイオスシー)' ], - ] - return get_table_by_number(num, table) - end - - # 迷宮風景決定表 - def mk_ls_decide_table(num) - output = '' - num.times do |_i| - output += "「" + mk_landscape_table(rand(6) + 1) + "」" - end - return output - end - - # 迷宮風景表(1D6) - def mk_landscape_table(num) - dice = d66(2) - table = [ - [ 1, lambda { mk_artifact_landscape_table(dice) } ], - [ 2, lambda { mk_cave_landscape_table(dice) } ], - [ 3, lambda { mk_natural_landscape_table(dice) } ], - [ 4, lambda { mk_waterside_landscape_table(dice) } ], - [ 5, lambda { mk_skyrealm_landscape_table(dice) } ], - [ 6, lambda { mk_strange_place_landscape_table(dice) } ], - ] - return get_table_by_number(num, table) - end - - # 人工風景表(D66) - def mk_artifact_landscape_table(num) - table = [ - [ 11, '石組みの部屋' ], - [ 12, '巨大な縦穴に刻まれた螺旋階段' ], - [ 13, '埃だらけの古い図書館' ], - [ 14, '古びた、素朴な祭壇' ], - [ 15, '歯車やピストンがやかましい動力室' ], - [ 16, '石組みの巨大な階段' ], - [ 22, '太い丸太で組まれた部屋' ], - [ 23, '作りかけの製品が放置された工房' ], - [ 24, '錆びた武器や骨が散らばる古戦場' ], - [ 25, '石組みのトイレ' ], - [ 26, '高い天井の厨房' ], - [ 33, 'レンガで組まれた部屋' ], - [ 34, '静まりかえった劇場' ], - [ 35, 'がらくたが散らばっているゴミ捨て場' ], - [ 36, '切り出し途中で放棄された巨大な石像' ], - [ 44, '壁画やタペストリーが残る大広間' ], - [ 45, 'メトロ汗国の線路' ], - [ 46, '絵画や彫刻が展示してあるギャラリー' ], - [ 55, '石棺が並ぶ墓' ], - [ 56, '錆びついた扉が残る巨大な門' ], - [ 66, '放置された牢獄' ], - ] - return get_table_by_number(num, table) - end - - # 洞窟風景表(D66) - def mk_cave_landscape_table(num) - table = [ - [ 11, '岩肌がむき出しの洞穴' ], - [ 12, 'コウモリや羽蟲が飛び交う洞穴' ], - [ 13, '放置された坑道' ], - [ 14, '誰かのキャンプ跡' ], - [ 15, '岩だらけで見通しのきかない空洞' ], - [ 16, '煙が吹きぬける洞穴' ], - [ 22, 'どこからか水音が響く鍾乳洞' ], - [ 23, '光の衰えた星がまたたく幻想的な空洞' ], - [ 24, '流砂が流れる洞穴' ], - [ 25, '生物が掘った、つるつるした洞穴' ], - [ 26, '冷えきった氷の洞穴' ], - [ 33, '巨大な岩の隙間' ], - [ 34, '動物や狩を描いた素朴な壁画が続く洞穴' ], - [ 35, '巨大な空洞にかけられた自然の橋' ], - [ 36, '埋まりかけで天井すれすれの洞穴' ], - [ 44, '奈落と断崖絶壁' ], - [ 45, '壁がうごめく蟲でおおわれた洞穴' ], - [ 46, '無数の化石が埋まっている洞穴' ], - [ 55, '熱気を放つ溶岩が流れる空洞' ], - [ 56, '水晶でできた洞穴' ], - [ 66, '骨が散らばるなにものかの住処' ], - ] - return get_table_by_number(num, table) - end - - # 自然風景表(D66) - def mk_natural_landscape_table(num) - table = [ - [ 11, '苔むした部屋' ], - [ 12, '動物の声が響き渡る密林' ], - [ 13, 'つる草でできた通路' ], - [ 14, '空洞いっぱいのお花畑' ], - [ 15, '壁から木の根が突き出している部屋' ], - [ 16, '空洞に広がる耕作地' ], - [ 22, '折り重なって繁茂する森林' ], - [ 23, '垂直の空洞にえんえんと伸びる大木の幹' ], - [ 24, '空洞中に広がるアザラシの営巣地' ], - [ 25, 'カビで壁がねとつく部屋' ], - [ 26, 'サボテンが点在する部屋' ], - [ 33, '巨大キノコの群生地' ], - [ 34, '真ん中に大木が一本そびえ立っている空洞' ], - [ 35, '通路いっぱいに進む野生ウマトカゲの大群' ], - [ 36, '落ち葉がうずたかく積もった部屋' ], - [ 44, '植え込みで作られた迷宮庭園' ], - [ 45, '生い茂る竹林' ], - [ 46, '松ぼっくりが転がる部屋' ], - [ 55, '丈の長い草が生い茂る部屋' ], - [ 56, '枯れた森林' ], - [ 66, '大木の空洞内のような通路や部屋' ], - ] - return get_table_by_number(num, table) - end - - # 水域風景表(D66) - def mk_waterside_landscape_table(num) - table = [ - [ 11, '轟々と流れる川にかかった橋' ], - [ 12, '色とりどりの珊瑚の中' ], - [ 13, '腰高まで水に浸かった部屋' ], - [ 14, '澄んだ水が流れる噴水と水飲み場' ], - [ 15, '沸騰する湖' ], - [ 16, '地面が干潟化した部屋' ], - [ 22, '水をたたえた貯水池' ], - [ 23, '熱い蒸気がたちこめる部屋' ], - [ 24, '空洞に広がる沼地' ], - [ 25, '樽や鎖が放置されている船の中' ], - [ 26, '水槽が並ぶ水族館' ], - [ 33, '悪臭を放つ下水道' ], - [ 34, '底に遺跡が見える水没した空洞' ], - [ 35, '桟橋と船着き場' ], - [ 36, '筏やハシケが浮かぶ湖' ], - [ 44, '巨大な縦穴と滝' ], - [ 45, 'かつて建設された上水道の中' ], - [ 46, 'ペンギンの右往左往する氷結した湖' ], - [ 55, '湯気を立てる温泉' ], - [ 56, '奇怪な彫刻が施された古井戸' ], - [ 66, '壁に貝やフジツボがはりついた部屋' ], - ] - return get_table_by_number(num, table) - end - - # 天空風景表(D66) - def mk_skyrealm_landscape_table(num) - table = [ - [ 11, '雨が降る部屋' ], - [ 12, 'チーズにうがたれた洞穴' ], - [ 13, '中空に何層にも重なる空中庭園' ], - [ 14, '無限に連なる真っ白な洗濯物' ], - [ 15, '天空に向かって伸びる豆の木' ], - [ 16, '巨大な縦穴にぶら下がる縄ばしごや鎖' ], - [ 22, '強風の吹き荒れる部屋' ], - [ 23, '雲の上。なぜか、その上を歩くことができる' ], - [ 24, '濃霧に覆われた空洞' ], - [ 25, '無重量でふわふわ浮く部屋' ], - [ 26, '雪がしんしんと降り積もる部屋' ], - [ 33, '時空がねじ曲がった空中回廊' ], - [ 34, '怪物よけの風車が音を立てる通路' ], - [ 35, '天井に遺跡が見える空洞' ], - [ 36, '轟々と音を立てる巨大排気孔' ], - [ 44, '時折稲妻の走る部屋' ], - [ 45, '鳥の羽毛が舞い落ちる部屋' ], - [ 46, '青空が壁面いっぱいに描かれた空洞' ], - [ 55, '一面、鏡でできた部屋' ], - [ 56, 'オーロラがゆらめく空洞' ], - [ 66, '重力方向がばらばらの部屋' ], - ] - return get_table_by_number(num, table) - end - - # 異界風景表(D66) - def mk_strange_place_landscape_table(num) - table = [ - [ 11, '古びた六畳間' ], - [ 12, 'せせこましいカラオケボックス' ], - [ 13, '時の止まった街' ], - [ 14, 'ボールが一個転がっている体育館' ], - [ 15, '毛が生えている部屋' ], - [ 16, 'なにかの待合室' ], - [ 22, '生物の粘液したたる体内' ], - [ 23, 'ブランコやすべり台のある小公園' ], - [ 24, '安っぽいユニットバス' ], - [ 25, '上の住人がうるさい部屋' ], - [ 26, '人骨で組まれている部屋' ], - [ 33, '呼吸している部屋' ], - [ 34, '斜めに傾いた部屋' ], - [ 35, 'ラブホテルの一室' ], - [ 36, 'ときどきなにかが覗いていく部屋' ], - [ 44, 'がやがやと話し声が聞こえる部屋' ], - [ 45, '触手が生えている部屋' ], - [ 46, '机と椅子が置いてある取調室' ], - [ 55, '静まりかえった教室' ], - [ 56, '天井に巨大な人の顔がある部屋' ], - [ 66, '常に揺れている部屋' ], - ] - return get_table_by_number(num, table) - end - - ################# - - # 王国名決定表1(D66) - def mk_kingdom_name_1_table(num) - table = [ - [11, "暗黒"], - [12, "王政"], - [13, "超"], - [14, "共和制"], - [15, "古代"], - [16, "社会主義"], - [22, "自由"], - [23, "新(ネオ)"], - [24, "神聖(セント、聖)"], - [25, "正統"], - [26, "絶対主義"], - [33, "大"], - [34, "天階"], - [35, "深階"], - [36, "第三"], - [44, "中央"], - [45, "帝政"], - [46, "統一"], - [55, "独立"], - [56, "東"], - [66, "立憲"], - ] - return get_table_by_number(num, table) - end - - # 王国名決定表2(D66) - def mk_kingdom_name_2_table(num) - table = [ - [11, "英雄"], - [12, "連合"], - [13, "グランドゼロ"], - [14, "迷宮(ダンジョン)"], - [15, "災厄"], - [16, "魔神(デーモン)"], - [22, "征服"], - [23, "中華"], - [24, "ドラゴン(龍)"], - [25, "猫"], - [26, "バナナ"], - [33, "ファンタジー"], - [34, "冒険"], - [35, "魔法(マジカル)"], - [36, "超人"], - [44, "無敵"], - [45, "路地裏"], - [46, "ローマ"], - [55, "(好きな単語表で決定)"], - [56, "(プレイ会場の地名 例:ネリマ)"], - [66, "(国王の名前。後で決定)"], - ] - return get_table_by_number(num, table) - end - - # 王国名決定表3(D66) - def mk_kingdom_name_3_table(num) - table = [ - [11, "王国(キングダム)"], - [12, "王朝"], - [13, "会社(公社)"], - [14, "学園(学校)"], - [15, "合衆国"], - [16, "共同体"], - [22, "共和国"], - [23, "星"], - [24, "公国"], - [25, "市(街、シティ、ポリス)"], - [26, "自治国"], - [33, "植民地"], - [34, "帝国"], - [35, "同盟"], - [36, "首長国"], - [44, "幕府"], - [45, "領"], - [46, "村"], - [55, "横丁(亭)"], - [56, "ランド"], - [66, "連邦"], - ] - return get_table_by_number(num, table) - end - - # 単語表1(D66) - def mk_word_1_table(num) - table = [ - [11, "魔法"], - [12, "おめかし"], - [13, "狭いところ"], - [14, "夜更かし"], - [15, "節約"], - [16, "会議"], - [22, "ヒゲ"], - [23, "孤独"], - [24, "自慢話"], - [25, "自分探し"], - [26, "異性"], - [33, "ヒラヒラした服"], - [34, "平穏な生活"], - [35, "自分語り"], - [36, "風呂"], - [44, "古いもの"], - [45, "頭が悪い人"], - [46, "暗闇"], - [55, "許嫁"], - [56, "民"], - [66, "バカ"], - ] - return get_table_by_number(num, table) - end - - # 単語表2(D66) - def mk_word_2_table(num) - table = [ - [11, "科学"], - [12, "読書"], - [13, "広いところ"], - [14, "早起き"], - [15, "ムダ"], - [16, "仕事"], - [22, "ハゲ"], - [23, "みんなで集まること"], - [24, "ナンパ"], - [25, "昔話"], - [26, "同性"], - [33, "武器の手入れ"], - [34, "戦争"], - [35, "人の噂"], - [36, "散髪"], - [44, "新しいもの"], - [45, "頭がよい人"], - [46, "光"], - [55, "親"], - [56, "王様"], - [66, "ホラ話"], - ] - return get_table_by_number(num, table) - end - - # 単語表3(D66) - def mk_word_3_table(num) - table = [ - [11, "子供"], - [12, "弱い人"], - [13, "処刑"], - [14, "叙事詩"], - [15, "煙草"], - [16, "病院"], - [22, "目立つこと"], - [23, "酒盛り"], - [24, "料理"], - [25, "武芸"], - [26, "田舎"], - [33, "自分の国"], - [34, "伝統"], - [35, "セレモニー"], - [36, "告げ口"], - [44, "自分の声"], - [45, "マヨネーズ"], - [46, "おせっかい"], - [55, "外国人"], - [56, "迷宮"], - [66, "ねこみみ"], - ] - return get_table_by_number(num, table) - end - - # 単語表4(D66) - def mk_word_4_table(num) - table = [ - [11, "年寄り"], - [12, "強い人"], - [13, "空想"], - [14, "冗談"], - [15, "クスリ"], - [16, "怪物"], - [22, "一騎打ち"], - [23, "賭け事"], - [24, "歌"], - [25, "勉強"], - [26, "都会"], - [33, "冒険"], - [34, "ダイナマイト大帝"], - [35, "悪事"], - [36, "言い訳"], - [44, "隣のキャラのジョブ"], - [45, "小鬼"], - [46, "謝ること"], - [55, "異種族"], - [56, "星"], - [66, "虫"], - ] - return get_table_by_number(num, table) - end - - def getAftersearchBreakTable() - get_table_by_2d6([ - '「おつとめ、ご苦労様です」同行する民たちが感謝の言葉をかける。《民の声》が1点回復する。', - '「おい、サボるな」と仲間から怒られた。いやいや、こっちは今までマジメにやってましたよ。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《敵意》が1点上昇する。', - '大漁大漁! 色々な素材が見つかる。肉、牙、革、木、鉄の素材(キャラクターシートの上の段の素材)を1個ずつ獲得する。', - 'そこは、もう、使い魔が探索してくれていたようだ。サンキュー相棒! この捜索の判定に【使い魔】を利用していれば、行動済みにならず、さらにもう1回行動を行うことができる。', - '危険なトラップを見つけたが、なんとか無力化できた。任務完了。自分の《気力》が1点回復する。', - '何も見つからなかったか、と思っていたら「いつも、ありがとう」と宮廷の仲間から声をかけられた。まぁ、何もない方がいいか。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《好意》が1点上昇する。', - '「さすが! 素晴らしいお手並みだ」鮮やかな捜索に、仲間の見る目が変わる。宮廷の中から好きなキャラクター1人を選ぶ。そのキャラクターの自分に対する《好意》が1点上昇する。', - 'よしよし、これはいいものが見つかった。好きな素材を1d6個獲得する。この捜索の判定に【使い魔】を使用していれば、獲得数が1d6個上昇する。', - '大漁大漁! 色々な素材が見つかる。衣料、魔素、機械、火薬、情報の素材(キャラクターシートの上の段の素材)を1個ずつ獲得する。', - 'うわ! 罠だ。余計なものまで見つけてしまった。宮廷全員は1d6点のダメージを受ける。', - '「へぇ、こんなヤツだったのか」仲間の意外な一面を見つける。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《好意》か《敵意》を1点上昇させ、その属性を好きなものに変更できる。', - ]) - end - - def getWholeBreakTable() - get_table_by_2d6([ - '部屋の中から使えそうな装備をみつくろう。宮廷全員は、それぞれ好きなコモンアイテムのカテゴリを選び、そのランダムにコモンアイテムを1つ獲得する。そのアイテムにレベルがあれば、それは1レベルのものとなる。', - 'みんなで今後の作戦を練る。宮廷全員は、そのターンの間、あらゆる判定の達成値が1上昇する。', - '手分けして物資の調達を行う。各キャラクターは、好きな素材を1d6個獲得できる。このとき、素材が揃っていれば、各キャラクターにつき1個までアイテムを作成することができる。', - '体を休めながら他愛もない世間話に花が咲く。宮廷全員は、それぞれ宮廷の中から好きなキャラクター1人を選び、そのキャラクターに対する《好意》が1点上昇する。', - '宮廷メンバーで交代で見張りを行い、疲労した配下たちを休ませる。《民の声》が宮廷の人数と同じ値だけ回復する。', - '一行はしっかりと休息を取り、鋭気を養う。宮廷全員の《気力》が1点回復する。', - '配下たちと一緒に体を休める。《民の声》が1d6点回復する。', - '配下たちに見張りを任せ、体を休める。宮廷全員の《HP》がすべて回復する。', - '緊急ミーティング! 国家運営に関してみんなで知恵を出し合う。《予算》を[宮廷の人数*1]MG獲得する。', - '負傷した配下たちの治療を行う。宮廷全員の《配下》が1d6人回復する。', - '宮廷の前に光り輝くアイテムが降臨する。レア武具アイテムかレア一般アイテムのどちらかを選ぶ。ランダムにそのアイテムを1つ選び、それを獲得する。', - ]) - end - - def getLoversBreakTable() - table = [ - [11, '「あーもう、最悪!」仲良く休憩するつもりが、ひどい喧嘩になってしまう。この表の使用者のお互いに対する《好意》が0になり、その値の分だけお互いに対する《敵意》が上昇する。'], - [12, '「何もかもがお前が悪かったのかッ!!」大きな誤解が生まれる。受け身キャラの攻め気キャラ以外に対する《敵意》がすべて0になり、その値の分だけ攻め気キャラに対する《敵意》が上昇する。'], - [13, '「でさぁ、あの人のことなんだけど……」せっかく2人きりなのに、他人の話で盛り上がる。この表の使用者は、宮廷の中からこの表の使用者以外のキャラクター1人を選び、そのキャラクターに対する《好意》が1点上昇する。'], - [14, '「へぇ、そんなのあるんだ」互いの好きなものについて語り合う。受け身キャラは、攻め気キャラの「好きなもの」1つを選ぶ。受け身キャラは、自分の「好きなもの」1つをそれに変更し、攻め気キャラへの《好意》が1点上昇する。'], - [15, '「なぁ、オレのことどう思う?」思い切った質問! 受け身キャラは、攻め気キャラに対する《好意》か《敵意》を1点上昇させ、その属性を好きなものに変更できる。'], - [16, '「だいじょうぶ? 無茶するんだから」少し前の失敗について色々と言われてしまう。ありがたいんだけど、少しムカつく。受け身キャラは、攻め気キャラに対する《好意》と《敵意》が1点ずつ上昇する。'], - [22, '「え、もうこんな時間!?」一休みするつもりが、気がつくとかなり時間がたっている。宮廷の未行動キャラクターが全員行動済みになったら、通常の時間の経過に加え、さらに1クォーターが経過する。この表の使用者のお互いに対する《好意》が1点上昇する。また、宮廷のこの表の使用者2人に対する《敵意》が1点上昇する。'], - [23, '「ねぇねぇ、これわかる?」何気ない質問だが、これは難しい。変な答えは出来ないぞ。攻め気キャラは、〔才覚〕で難易度9の判定を行う。成功すると、この表の使用者のお互いに対する《好意》が1点上昇する。失敗すると、なんとか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《敵意》が1点上昇する。'], - [24, '「おいおい、まずは落ち着け」配下同士が喧嘩を始めた。うまく仲裁しないと……。攻め気キャラは、〔魅力〕で難易度9の判定を行う。成功すると、この表の使用者のお互いに対する《好意》が1点上昇する。失敗すると、なんとか危機を切り抜けることができるが、受け身キャラの攻め気キャラに帯する《敵意》が1点上昇する。'], - [25, '「オレが解除するからちょっと待ってろ」2人で休憩するつもりが、一緒にトラップにひっかかってしまった。互いの体が密着してしまう。攻め気キャラは、〔探索〕で難易度9の判定を行う。成功すると、この表の使用者のお互いに対する《好意》が1点上昇する。失敗すると、なんとか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《敵意》が1点上昇する。'], - [26, '「お前は後ろに下がってろ!」休憩中に怪物に襲われる。攻め気キャラは、〔武勇〕で難易度9の判定を行う。成功すると、この表の使用者のお互いに対する《好意》が1点上昇する。失敗すると、なんとか危機を切り抜けることができるが、受け身キャラの攻め気キャラに対する《敵意》が1点上昇する。'], - [33, '「なぁ、さっきは悪かったな」誤解が解ける。この表の使用者のお互いに対する《敵意》が0になり、その値のぶんだけお互いに対する《好意》が上昇する。'], - [34, '「これを言ったのはあなただけです。誰にも言わないでくださいね」受け身キャラが隠している夢や秘密を攻め気キャラが知ってしまう。受け身キャラの攻め気キャラに対する《好意》が1点上昇する。攻め気キャラの受け身キャラに対する《好意》の属性が「忠誠」に変わる。'], - [35, '「これからも、よろしく頼むぜ。相棒」攻め気キャラが快活に微笑む。受け身キャラの攻め気キャラに対する《好意》が1点上昇する。攻め気キャラの受け身キャラに対する《好意》の属性が「友情」に変わる。'], - [36, '「わ、わたしは、あなたのことが……」受け身キャラの思わぬ告白! 受け身キャラの攻め気キャラに対する《好意》が1点上昇する。攻め気キャラの受け身キャラに対する《好意》の属性が「愛情」に変わる。'], - [44, '「大丈夫? 痛くないか?」互いに傷を治療しあう。この表の使用者は、お互いの自分に対する《好意》の分だけ、自分の《HP》を回復することができる。どちらかが《HP》が1点以上回復したら、この表の使用者のお互いに対する《好意》が1点上昇する。'], - [45, '「この冒険が終わったら、伝えたいことが……あるんだ」攻め気キャラの真剣な言葉。え、それって……? 受け身キャラの攻め気キャラに対する《好意》が1点上昇する。エピローグに攻め気キャラが生きていれば、この表の使用者のお互いに対する《好意》が2点上昇する。ただし、以後このゲームの間、攻め気キャラが「致命傷表」を使用することになった場合、余分に1個サイコロを振り、その中からもっとも低い目2つを選んで、その結果を適用する。'], - [46, '「蝕ッ!? ……って、どこ触ってるんですかッ!?」あたりが不意に暗くなり、思わず変なところを触ってしまう。攻め気キャラの受け身キャラに対する《好意》が2点上昇し、受け身キャラの攻め気キャラに対する《敵意》が2点上昇する。この表の使用者が持っている【星の欠片】1個を破壊すれば、このイベントをなかったことにできる。'], - [55, '「これ、はんぶんこしない?」2人仲良く、アイテムを分け合う。この表の使用者が、使用するとなくなる回復アイテムを持っていれば、それを1個使用出来る。ただし、その効果の大賞は、この表を使用した2人に変更される。この表の使用者のお互いに対する《好意》が1点上昇する。'], - [56, '「え? え? えぇぇぇぇッ!?」ふとした拍子に唇がふれあう。受け身キャラの攻め気キャラ以外に対する《好意》がすべて0になり、その値のぶんだけ攻め気キャラに対する《好意》が上昇する。'], - [66, '「…………」気がつくとお互い、目をそらせなくなってしまう。そのまま顔を寄せ合い……。この表の使用者のお互いに対する《好意》が2点上昇し、その属性を「愛情」にする。'], - ] - - value = d66(2) - return get_table_by_number(value, table), value - end -end diff --git a/src/src_bcdice/diceBot/MeikyuKingdomBasic.rb b/src/src_bcdice/diceBot/MeikyuKingdomBasic.rb deleted file mode 100644 index a68607212..000000000 --- a/src/src_bcdice/diceBot/MeikyuKingdomBasic.rb +++ /dev/null @@ -1,2394 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require "diceBot/MeikyuKingdom" -require "utils/table" - -class MeikyuKingdomBasic < MeikyuKingdom - # ゲームシステムの識別子 - ID = 'MeikyuKingdomBasic' - - # ゲームシステム名 - NAME = '迷宮キングダム 基本ルールブック' - - # ゲームシステム名の読みがな - SORT_KEY = 'めいきゆうきんくたむ きほんるうるふつく' - - # ダイスボットの使い方 - HELP_MESSAGE = < Table.new( - '視察表', - '2D6', - [ - "神託が下る。苦難がPCを襲うが、それは救いのための試練である。このセッションの間、PCが10点以上のダメージをモンスターから受けるたび《民の声》+1。", - "長老が迷宮の昔話をしてくれた。この表を使用したPCが判定で失敗したとき、その判定のサイコロを振り直すことができる。この効果は、このセッションの間に1回だけ使用できる。", - "民は怪物の脅威に怯えている。この表を使用したPCがモンスターの《HP》を0点にすると、《民の声》+2。この効果は、このセッションの間に1回だけ使用できる。", - "日用品が不足しているという不満を持つ民がいるようだ。このセッションの間、自国に「革」を5個輸送するたび《民の声》+1。", - "民たちは王国の守りが薄いのではという不安を抱えていた。このセッションの間、自国に「鉄」を5個輸送するたび《民の声》+1。", - "主婦たちが食糧不足に対する不安を訴えてきた。このセッションの間、自国に「肉」を5個輸送するたび《民の声》+1。", - "民たちは新しい施設の建設を望んでいる。このセッションの間、自国に「木」を5個輸送するたび《民の声》+1。", - "武器の備えが乏しいのではないかという不安があるようだ。このセッションの間、自国に「牙」を5個輸送するたび《民の声》+1。", - "配下にした若者が熱心に未来を語る。この表を使用したPCは《配下》を1人消費して、《特殊配下》を1人増やす。その《特殊配下》に名前をつけ、「生まれ表」でなりたいジョブを決定すること。なりたいジョブに対応した能力値(その《特殊配下》がなりたいジョブの能力値ボーナス欄に書いてある能力値)を使った判定で、このセッションの間に自分が絶対成功すると、その《特殊配下》は、そのジョブの逸材になる。", - "王国は活気に満ちている。この表を使用したPCは《気力》+1、もう一度王国フェイズに行動することができる。", - "民たちはワクワクするような冒険譚を求めている! このセッションのシナリオの目的を達成していたら、終了フェイズの円卓会議の開始時に、(1D6)MGが手に入る。", - ] - ), - 'SE' => Table.new( - '特殊遭遇表', - '1D6', - [ - "宙を舞う【グレムリン】が、宮廷の方を物欲しそうに眺めている。宮廷の中で、素材欄に「機械」が含まれているアイテムを持っているPC全員は、[才覚/7+装備している素材欄に「機械」が含まれるアイテムの数]の判定を行う。失敗したPCは、そのアイテムをすべて破壊し、[装備している素材欄に「機械」が含まれるアイテムの数]D6点のダメージを受ける。", - "迷宮の壁や床の中に隠れた【群狼】が、キミたちを待ち伏せていた! 【狼牙】にさらされた宮廷全員は、[探索/5+宮廷の人数]の判定を行う。失敗したPCは、自分の《HP》が(1D6)点になる。", - "部屋を埋め尽くすほど大勢の【小鬼】の群れに遭遇する。【小鬼】たちは瞳を赤くし、我を忘れて襲いかかってくる。宮廷全員は[武勇/5+宮廷の人数]の判定を行う。成功したキャラクターは、「牙」の素材を(1D6)個獲得する。失敗したキャラクターは、[(1D6)+宮廷の平均レベル]点のダメージを受ける。", - "【鬼婆】の奴隷商人に出会う。鎖につながれた無数の奴隷が、恨めしそうにこちらを見ている。宮廷の代表は、[魅力/7+宮廷の人数]の判定を行う。成功すれば、【鬼婆】から奴隷を購入することができる。《予算》を1MG消費するたびに、(1D6)人の《民》を獲得できる。その場で自由に宮廷の《配下》として編成すること。判定に失敗すると、【鬼婆】は奴隷を差し向け、襲いかかってくる。宮廷全員は[武勇/9]の判定を行う。失敗したPCは[(1D6)+宮廷の平均レベル]点のダメージを受けた上、《配下》-(1D6)。", - "年若い娘が1人倒れている。宮廷の中で誰か彼女を助ける者がいるなら、(1D6)を振ること。その目が奇数なら、彼女は有能な逸材だった。彼女はお礼を言い、王国に仕えさせてくれという。「生まれ表」でランダムに選んだジョブの逸材になる。偶数なら、彼女は【メデューサ】だった。【石化の視線】が襲いかかる。彼女を助けようとした者は[才覚/7+宮廷の人数]、残りのPCは[才覚/5+宮廷の人数]の判定を行う。失敗した者は、(1D6)点のダメージを受け、「呪い3」の変調を受ける。この判定に宮廷全員が失敗すると宮廷は全滅する。", - "災厄教の巡礼者の一団に出会う。彼らは、迷宮災厄こそおごり高ぶった人類への罰であり、悔い改めよとその教えを説いた。《配下》を1人以上連れているキャラクターは、[魅力/自分の《配下》の数+5]の判定を行う。失敗したPC1人につき、《民の声》-1。", - ] - ), - 'IG' => Table.new( - '情報収集表', - '2D6', - [ - "調査隊は、伝説の財宝の噂を聞きつける。《配下》を(1D6)人消費すると、迷宮マップの中からランダムに部屋を1つ目標に選ぶことができる。冒険フェイズに目標の捜索に成功すると、ランダムに選んだレアアイテム1個を獲得する。", - "素材のある部屋を見つける。迷宮マップの中からランダムに部屋を1つ目標に選び、好きな素材を1種類選ぶ。冒険フェイズに目標の捜索に成功すると、その素材を[(1D6)+宮廷の平均レベル]個獲得する。", - "噂に聞いたことのある怪物を発見する。迷宮マップの中からランダムに部屋を1つ目標に選ぶ。その部屋に、レベルが[PCの平均レベル+5]以下の好きなモンスターを1体、中立的なモンスターとして配置することができる。", - "調査隊は、怪物にまつわる情報を入手した! 迷宮マップの中から好きな部屋を2つ目標に選ぶ。目標の脅威情報をGMに教えてもらう。", - "危険な迷宮を調査隊は進む。《配下》を1人消費すると、迷宮マップの中から好きな部屋を1つ目標に選ぶことができる。目標の脅威情報と通路情報をGMに教えてもらう。目標から他の部屋に通路がつながっていない場合、PCは行動済みにならず、もう一度、指揮判定を行うことができる。", - "入り口にたどりつく。迷宮マップの中から【入り口】のある部屋1つをGMに教えてもらい、その部屋を目標に選ぶ。目標の脅威情報をGMに教えてもらう。その後、《配下》を消費することができる。《配下》を(1D6)人消費すると、PCは行動済みにならず、もう一度、指揮判定を行うことができる。", - "調査隊は不慮の事故に巻き込まれる。《配下》を1人消費すると、迷宮マップの中から好きな部屋を1つ目標に選ぶことができる。目標の脅威情報と通路情報をGMに教えてもらう。", - "調査隊は無事、迷宮にたどりつく。迷宮マップの中から好きな部屋を1つ目標に選ぶ。目標の脅威情報と通路情報をGMに教えてもらう。", - "難民のいる部屋を発見する。迷宮マップの中からランダムに部屋を1つ目標に選ぶ。冒険フェイズに目標の捜索に成功すると、宮廷の1人は《配下》を(1D6)人獲得する。", - "調査隊は隠し財産がある部屋に接近した! 迷宮マップの中からランダムに部屋を1つ目標に選ぶ。冒険フェイズに目標の捜索に成功すると(1D6)MGを獲得する。", - "調査隊の素晴らしい活躍! 迷宮マップの中から好きな部屋を1つ目標に選ぶ。目標の脅威情報と通路情報をGMに教えてもらう。さらに、「情報収集表」をもう1回使用できる。", - ] - ), - 'BDT' => Table.new( - '生まれ決定表', - '1D6', - [ - "才覚系生まれ表で決定", - "魅力系生まれ表で決定", - "探索系生まれ表で決定", - "武勇系生まれ表で決定", - "好きな生まれ表で決定", - "好きな生まれ表で決定", - ] - ), - 'TBO' => Table.new( - '才覚系生まれ表', - '1D6', - [ - "魔導師", - "博士", - "医者", - "宦官", - "商人", - "地図師", - ] - ), - 'CBO' => Table.new( - '魅力系生まれ表', - '1D6', - [ - "星術師", - "召喚師", - "貴族", - "亭主", - "寿ぎ屋", - "語り部", - ] - ), - 'SBO' => Table.new( - '探索系生まれ表', - '1D6', - [ - "迷宮職人", - "料理人", - "働き者", - "狩人", - "盗賊", - "鉱工", - ] - ), - 'VBO' => Table.new( - '武勇系生まれ表', - '1D6', - [ - "武人", - "処刑人", - "衛視", - "冒険者", - "怠け者", - "番人", - ] - ), - 'FET' => Table.new( - '好意表', - '1D6', - [ - "忠誠", - "忠誠", - "友情", - "友情", - "愛情", - "愛情", - ] - ), - 'HET' => Table.new( - '敵意表', - '1D6', - [ - "怒り", - "怒り", - "不信", - "不信", - "侮蔑", - "侮蔑", - ] - ), - 'IEQ' => Table.new( - '初期装備表', - '2D6', - [ - "鉄砲", - "爆弾", - "お守り", - "フルコース", - "星の欠片", - "お弁当", - "ポーション", - "お酒", - "乗騎", - "衣装", - "魔導書", - ] - ), - 'SDT' => Table.new( - 'スキル決定表', - '1D6', - [ - "基本スキル表で決定", - "基本スキル表で決定", - "基本スキル表で決定", - "上級スキル表で決定", - "上級スキル表で決定", - "上級スキル表で決定", - ] - ), - 'BUS' => Table.new( - '基本肉弾スキル表', - '1D6', - [ - "投げる", - "鉄腕", - "かばう", - "突撃", - "乱舞", - "二刀流", - ] - ), - 'SHS' => Table.new( - '基本射撃スキル表', - '1D6', - [ - "狙う", - "連射", - "魔弾", - "援護射撃", - "必殺", - "零距離射撃", - ] - ), - 'ASS' => Table.new( - '基本星術スキル表', - '1D6', - [ - "刻騙し", - "流れ星", - "星占い", - "星剣", - "星界", - "星戦", - ] - ), - 'SUS' => Table.new( - '基本召喚スキル表', - '1D6', - [ - "宅配便", - "大転移", - "送還", - "転送", - "魔物使い", - "憑依", - ] - ), - 'SCS' => Table.new( - '基本科学スキル表', - '1D6', - [ - "設計", - "分析", - "マルチタスク", - "錬成", - "抗魔式", - "理力の一撃", - ] - ), - 'LAS' => Table.new( - '基本迷宮スキル表', - '1D6', - [ - "罠師", - "すりぬけ", - "足止め", - "軽業", - "地裂", - "隠形", - ] - ), - 'NES' => Table.new( - '基本交渉スキル表', - '1D6', - [ - "スカウト", - "人脈", - "時間稼ぎ", - "命乞い", - "右腕", - "仲間割れ", - ] - ), - 'COS' => Table.new( - '基本便利スキル表', - '1D6', - [ - "合体攻撃", - "目覚めのキス", - "不屈", - "電撃作戦", - "デート", - "連携攻撃", - ] - ), - 'ENS' => Table.new( - '基本芸能スキル表', - '1D6', - [ - "宴", - "軍楽", - "武楽", - "呪歌", - "音霊", - "ナルシスト", - ] - ), - 'TOS' => Table.new( - '基本道具スキル表', - '1D6', - [ - "大かばん", - "お買い物", - "修理", - "プレゼント", - "武器習熟", - "渾身の力", - ] - ), - 'EBT' => Table.new( - '空振り休憩表', - '2D6', - [ - "「おつとめ、ご苦労様です」同行する民たちが感謝の言葉をかける。《民の声》+1。", - "「おい、サボるな」と仲間から怒られた。いやいや、こっちは今までマジメにやってましたよ。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《敵意》+1。", - "大量大量! 色々な素材が見つかる。肉、牙、鉄、魔素、機械の素材(キャラクターシートの上の段の素材)を1個ずつ獲得する。", - "そこはもう、使い魔が探索してくれていたようだ。サンキュー相棒! この捜索の判定に【使い魔】を利用していれば、行動済みにならず、さらにもう1回行動を行うことができる。", - "危険なトラップを見つけたが、何とか無力化できた。任務完了。自分の《気力》+1。", - "何も見つからなかったか、と思っていたら「いつも、ありがとう」と宮廷の仲間から声をかけられた。まぁ、何もない方がいいか。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《好意》+1", - "「さすが! 素晴らしいお手並みだ」鮮やかな捜索に、仲間の見る目が変わる。宮廷の中から好きなキャラクター1人を選ぶ。そのキャラクターの自分に対する《好意》+1。", - "よしよし、これはいいものが見つかった。好きな1種類の素材を(1D6)個獲得する。この捜索の判定に【使い魔】を使用していれば、獲得数が(1D6)個上昇する。", - "大量大量! 色々な素材が見つかる。衣料、木、火薬、情報、革の素材(キャラクターシートの上の段の素材)を1個ずつ獲得する。", - "うわ! 罠だ。余計なものまで見つけてしまった。宮廷全員は(1D6)点のダメージを受ける。", - "「へぇ、こんなヤツだったのか」仲間の意外な一面を見つける。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《感情値》を反転させ、属性を好きなものに変更できる。", - ] - ), - 'ARN' => Table.new( - '人工部屋特殊遭遇表', - '1D6', - [ - "他の王国のランドメイカーらしき一行が現れる。彼らは食事が尽きているらしく、アイテムの交換を持ちかけてきた。話を聞くなら、1クォーターが経過し、食事アイテム1個と交換で【ポーション】か【特効薬】1個を獲得できる。話をきかないなら、彼らは食事を無理矢理奪おうとしてくる。宮廷の代表は[魅力/宮廷の人数+5]の判定を行う。失敗すると、食事アイテムを持っているPCは(1D6)点のダメージを受け、持っている食事アイテムをすべて消費する。", - "数人の【人間の屑】が物欲しそうな顔つきでこちらを見ながら、ひそひそと話しあっている。宮廷が、価格が3以上のコモンアイテムを[宮廷の人数の半分]個のアイテムを消費すると、【人間の屑】たちは卑屈な笑みを浮かべながら、この部屋を去っていく。消費しないなら、宮廷全員は[探索/宮廷の人数+5]の判定を行う。失敗した者は、ランダムにアイテムスロット1つを選び、そのスロットに装備・収納されているアイテムをすべて破壊する。", - "ラストエグザイルという修行の旅をしている【ラストサムライ】の一団に出会う。PC1人が素材欄に「鉄」を含むアイテム1個を消費すると、彼らは喜んで旅の噂話を教えてくれる。1クォーターが経過し、宮廷の代表は「情報」の素材を(1D6)個獲得する。各PCは、望むなら食事アイテムを1個ずつ使用できる。アイテムを消費しない場合、彼らは襲いかかってくる。宮廷全員は[武勇/宮廷の人数+5]の判定を行う。失敗した者は、ランダムにアイテムスロット1つを選び、そのスロットに装備・収納されているアイテムをすべて破壊し、(1D6)+1点のダメージを受ける。", - "部屋の片隅に宝箱を見つける。宝箱を開けてみるなら(1D6)を振ること。1なら【宝石】1個を獲得する。2ならランダムに選んだ1レベルのコモンアイテム1個を獲得する。3ならランダムに選んだレア一般アイテムを1個獲得する。4なら【箱入り娘】に魅了されて、ランダムに選んだ自分以外のPC1体に(2D6)点のダメージを与える。5なら【匣男】に抱きつかれ、そのターンの間「散漫1」の変調を受け、《HP》の最大値-3。6なら【生き金貨】がブレスを吐いてきて、宮廷全員は4点のダメージを受ける。", - "宮廷たちの背後から、迷宮の壁に描かれた絵がゆっくりと襲いかかってくる。【逆壁】だ! 宮廷の代表は[才覚/宮廷の人数+7]の判定を行う。成功したら、宮廷は【逆壁】の不意打ちに気づいて、返り討ちにする。失敗したら、宮廷全員は(1D6)点のダメージを受ける。", - "【ウマトカゲ】に乗ったメトロ汗国の斥候たちに出会う。彼らは奴隷を集めに来たようだ。宮廷全員は[武勇/宮廷の人数+5]の判定を行う。失敗した者は《配下》-(1D6)。", - ] - ), - 'WEN' => Table.new( - '水域部屋特殊遭遇表', - '1D6', - [ - "【エルフ】の集団が現れた。【エルフ】たちは、抜け目なく宮廷の様子をうかがっている。宮廷の代表は、[才覚/13]の判定を行う(「言語」の選択ルールを適用して、深人語を修得していたら自動的に成功する)。成功すると、彼らがPCたちの王国を襲撃しようとしていることが分かる。宮廷全員は[武勇/13-宮廷の人数]の判定を行う。成否にかかわらず、【エルフ】たちの企みは止めることができるが、失敗した者は(1D6)+1点のダメージを受ける。[才覚]の判定に失敗すると彼らの狙いに気づくことができない。終了フェイズの「王国変動」のタイミングで、追加で1回「王国変動表」の4番の効果が発生する。", - "突如現れた【マッハペンギン】に向かって、水中から【鉄砲魚】が砲撃を行う。このままでは、天使と深人の争いに巻き込まれてしまいそうだ。どちらかの加勢をするなら、宮廷全員は[好きな能力値/宮廷の人数+7]の判定を行う。成功したPCが宮廷の人数の半分以上いると、加勢した側が勝利する。天使側に加勢したならPC全員はランダムに回復アイテムを1個ずつ、深人側に加勢したならPC全員はランダムに武具アイテムを1個ずつ獲得する。成功したPCが宮廷の人数の半分未満だと、PC全員は(2D6)点のダメージを受ける。", - "水域の近くから「モウレン、ヤッサ、イナガ貸セエ」という声が近づいてくる。【丹幽霊】だ。宮廷の誰かが【鍋】を1個消費すると、不思議そうな顔をしてそれを持っていき、彼らは水域の向こう側へと消えていく。そうでなければ、宮廷が持っている乗物アイテムがすべて消費される。", - "【河ドワーフ】が水路を伸ばす工事を行っている。このままだと、この部屋は完全に水没してしまうかもしれない。止めたほうがいいのだろうか? 止めるなら、宮廷の代表は[魅力/宮廷の人数+7]の判定を行う。成功すると、快く【河ドワーフ】たちは水路を伸ばす方向を変えてくれる。失敗すると、【河ドワーフ】たちに愉快な罵倒を浴びせられ、宮廷全員の《気力》-1、《民の声》-1。止められないなら、その部屋に【水槽】のトラップが配置される。", - "「ヨーホー! 金目のものをよこしやがれ!」【階賊】の集団に襲われる! 宮廷全員は[武勇/13-宮廷の人数]の判定を行う。失敗した者は、ランダムに自分のアイテムスロット1つを選び、そのスロットに装備・収納されたものをすべて消費し、(1D6)点のダメージを受ける。", - "水の中から突如触手が現れた! 宮廷の1人にからみつくと、水の中に引きずり込んでしまう。宮廷の中からランダムに1人を選ぶ。選ばれたPCは[探索/9+装備・収納している、素材欄に「鉄」が含まれるアイテムの数]の判定を行う。失敗すると、《HP》を([判定の難易度-判定の達成値]D6)点減少する。また、そのPCが装備・収納している、素材欄に「火薬」が含まれるアイテムを破壊する。", - ] - ), - 'NEN' => Table.new( - '自然部屋特殊遭遇表', - '1D6', - [ - "大きな地響きが聞こえる。この森を構成している大勢の【トレント】たちが別の部屋へと移動しているようだ。ほかの生き物たちも、木々の行進に続いている。森の大移動だ。宮廷の代表は[探索/宮廷の人数+7]の判定を行う。失敗すると、宮廷は【トレント】たちの大行進に出くわしてしまう。宮廷全員は《HP》の現在値を(1D6)点にして、《配下》-(1D6)。", - "天井近くに【アラクネ】の巣を見つける。近くに【蜘蛛の王】の領域があるのかもしれない。駆除しておくべきか……。駆除に挑戦するなら、1クォーターが経過し、PC全員は[武勇/13-宮廷の人数]の判定を行う。判定の成否に関わらず巣を除去することができるが、失敗した者は、アラクネの反撃を受け、(2D6)-2点のダメージを受ける。放っておく場合、終了フェイズの王国変動のタイミングで(1D6)を振る。その出目が、[「周辺階域」欄のそのマップがある土地から自国がある土地までのマス数]以下だった場合、【蜘蛛の王】の襲撃により、自国に残っていた《民》が(5D6)人減少する。", - "やぶの中から突如現れた巨大な怪物を目撃する。【睨み蜥蜴】だ! PC全員は[探索/9]の判定を行う。失敗した者は《HP》を1点にする。", - "【緑の親指】が森の木々を手入れしている。自分が管理する森にやってきたPCたちを警戒しているようだ。宮廷の代表は[才覚/宮廷の人数+7]の判定を行う。成功すると、日常アイテム1個と交換で「木」の素材を(1D6)個獲得できる。失敗した者は(1D6)+6点のダメージを受ける。", - "森の奥から何かを叩くポコポコという音が響いてくる。のぞいてみると、【豆狸】たちが、腹鼓を叩きながら、楽しげに唄っている。PC全員は[魅力/宮廷の人数+5] の判定を行う。成功したPCが宮廷の人数の半分以上いると、楽しい時間を過ごす。各PCは《気力》+1、望むなら食事のアイテムを1個ずつ使用できる。成功した PCが宮廷の人数の半分未満だと、気がつくと辺りには誰もいなくなっている。2クォーターが経過し、各PCは、ランダムにアイテムスロット1つを選び、そのスロットに装備・収納されたものをすべて消費する。", - "その部屋の奥には、茸の森が広がっていた。その中心にたたずむ巨大な【オバケ茸】を【茸人】たちが囲んで、何か祈りを捧げている。……ここなら、もしかすると【百年茸】があるかも。【百年茸】を探すなら、宮廷の中から望む者は[探索/9+この判定に挑戦した回数(初回は1回と数える)]の判定を行う。成功した者は、レア一般アイテムの 【百年茸】を1個獲得する。誰か1人でも失敗すると、【茸人】に見つかり、PC全員は「毒2」の変調を受ける。【百年茸】を探さないなら、安全にその場を離れ、何も起こらない。", - ] - ), - 'CEN' => Table.new( - '洞窟部屋特殊遭遇表', - '1D6', - [ - "突如、天井から魔法の掘削機械が飛び出してくる。【ドワーフ】の直線主義者の一団だ。このままだと押しつぶされてしまう! PC全員は[探索/宮廷の人数+5]の判定を行う。失敗した者は(1D6)点のダメージを受け、《配下》-(1D6)。その後GMは、その部屋に隣接するシナリオ上、遭遇が設定されていない部屋があれば、そこに向けて通路1本を引く。", - "眠っている【洞窟熊】を見つける。攻撃するか? それとも音を立てないようにやり過ごすか? 攻撃するなら、PC全員は[武勇/7]の判定を行う。判定の成否にかかわらず【洞窟熊】を倒すことはできるが、失敗した者は《HP》を1点にする。やり過ごすなら、PC全員は[探索/宮廷の人数+5]の判定を行う。失敗した者が宮廷の人数の半分以上いると逃げ切れず、PC全員は(1D6)点のダメージを受ける。", - "【まじない師】に率いられた【穴人】に取り囲まれる。【まじない師】は、謎かけをしてくる。宮廷の代表は[才覚/12]の判定を行う。成功すると、彼らはこの部屋を立ち去る。失敗すると【穴人】に襲いかかられ、PC全員は(2D6)点のダメージを受ける。", - "洞窟の奥から【大蝙蝠】の群れが飛んでくる。PC全員は[探索/宮廷の人数+7]の判定を行う。失敗した者は「毒3」の変調を受ける。", - "【ドラゴン】が現れた! 流暢な「ひとつの言葉」を使って、その巨大な生き物は「うるさくて眠れない」と苦情を言ってきた。宮廷の代表は[魅力/宮廷の人数+7]の判定を行う。成功すると丁重にお帰りいただくことができる。失敗すると、宮廷全員は15点のダメージを受ける。", - "空気がじめじめとしてくる。【黴姫】の領域が近いようだ。下手をすると食事を駄目にしてしまうかもしれない。PC全員は[才覚/宮廷の人数+5]の判定を行う。失敗した者は自分の装備・収納している食事アイテムをすべて破壊する。", - ] - ), - 'SEN' => Table.new( - '天空部屋特殊遭遇表', - '1D6', - [ - "【取立人】が現れ、慇懃に挨拶すると、PCたちの栄光を褒め称える。そして、その栄光は天使の導きによるものだから、と対価を要求してくる。対価を支払うなら《予算》を[PCたちの平均レベル]MG消費するか、王国に残った《民》を[PCたちの平均レベル]人消費する。いずれかを消費すると【取立人】は満足そうにうなずき、未来に起こる出来事をこっそり耳打ちする。宮廷は、そのセッション中、振ったサイコロを1度だけ振り直すことができるようになる。対価をはねのけると、PC全員は「呪い3」の変調を受ける。", - "【羽根兜の乙女】が立ち塞がり、「勇者よ! きさまの魂をもらい受ける!」と決闘を挑んでくる。決闘を受けるなら、宮廷の代表は[武勇/14]の判定を行う。成功すると、【羽根兜の乙女】は、「次は絶対勝つ!」と、泣きながら逃げていく。判定に成功したPCが装備可能なら【愛】を1個獲得する。失敗した者は(1D6)+8点のダメージを受け、【羽根兜の乙女】から「腰抜けが。とんだ見込み違いだ」と罵倒される。決闘を拒否するなら、【羽根兜の乙女】の怒りを買い、PC全員は(2D6)点のダメージを受ける。", - "一天にわかにかき曇る。【雲神】だ! (1D6)を振る。1なら雨が振ってきて、PC全員は素材欄に「火薬」が含まれるアイテムを破壊する。2なら雷が落ちてきて、素材欄に「鉄」が含まれるアイテムを装備・収納しているPCは(3D6)点のダメージを受ける。3なら霧がたちこめ、PC全員は、その部屋で行う判定の達成値が2点減少する。4なら突風が吹き、PC全員は《配下》を[(1D6)×1/2]人減少する。5か6なら心地良い風が吹き、PC全員は《気力》+2。", - "腹を空かせた【鷲獅子】が、空中から襲いかかる! PC全員は[武勇/宮廷の人数+7]の判定を行う。【乗騎】を装備・収納しているPCは難易度が2点上昇する。判定に失敗した者は(2D6)点のダメージを受ける。【乗騎】を装備・収納しているPCが判定に失敗した場合、その【乗騎】がすべて消費される。", - "空に巨大な星が輝く。その星が不気味に笑った気がする。あれは【星首】だ。宮廷の中から、ランダムに2人のPCを選ぶ。そのPCが装備・収納している【星の欠片】をすべて破壊する。", - "何か雪のようなものが降ってきたと思ったら、気分が悪くなってきた。上空を見あげると、【蝶の王】が羽ばたいている。狂気の鱗粉だ! PC全員は[魅力/9]の判定を行う。失敗した者は、「毒6」と「散漫1」と「憤怒」の変調を受ける。", - ] - ), - 'OEN' => Table.new( - '異界部屋特殊遭遇表', - '1D6', - [ - "扉をあけて、ハグルマ風の衣装を着た人物が現れる。何やら話が通じない。もしかすると噂に名高い【稀人】というやつか? 《配下》たちが何かを期待しているのを感じる。宮廷の代表は[才覚/宮廷の人数+7]の判定を行う。成功すると、意思の疎通に成功する。【稀人】1体を《特殊配下》にできる。王国につれて帰ることができると《モンスターの民》になる。失敗すると、【稀人】は話が通じず途方にくれ、扉の向こうに帰っていく。《民の声》-1。", - "【ケチャップリンス】と【メイクイーン】が激論を交わしている。どうやら、どちらが【マヨネーズキング】にふさわしいかについて語り合っているようだ。仲裁するなら、宮廷の代表は[才覚/宮廷の人数+7の判定を行う。成功すると美味しい食べ物を御馳走してくれる。PC全員は《HP》を(1D6)点回復し、《気力》+1。失敗するとPC全員は「肥満2」の変調を受ける。スルーするなら、PC全員は[探索/7]の判定を行う。誰か1人でも失敗するとPC全員は「肥満2」の変調を受ける。", - "突然、その部屋が闇に包まれ、重力がなくなる。扉が開く音がして、そこから強い光がさしこんできた。【灰色の宇宙人】だ。【乗騎】、【使い魔】、【家畜】のいずれかを装備・収納しているPCは[魅力/宮廷の人数+7]の判定を行う。成功した者は【乗騎】、【使い魔】、【家畜】のうちいずれか1個と交換で【星の欠片】か【携帯電話】1個を獲得できる。判定に失敗した者は【乗騎】、【使い魔】、【家畜】のうちいずれか1個を消費する。", - "扉を破って、無数の「死にぞこないの群れが現れた。ゾンビラッシュ! PC全員は[武勇/宮廷の人数+7]の判定を行う。失敗した者は、(1D6)点のダメージと「毒3」の変調を受ける。", - "遠くの方から何かが転がってくる。ゴロゴロと音が大きくなり、気がつくと【悪意の骰子】が眼前に迫っていた! 宮廷全員は[探索/9]の判定を行う。失敗した者は「呪い4」の変調を受け、奇妙な姿に変えられる。", - "暗闇の中に幾つかの星が輝く。あれは【星座獣】だ! PC全員は[魅力/9]の判定を行う。失敗した者は[そのPCが装備・収納している【星の欠片】の合計数+1]D6点のダメージを受ける。", - ] - ), - }.freeze -end diff --git a/src/src_bcdice/diceBot/MetalHead.rb b/src/src_bcdice/diceBot/MetalHead.rb deleted file mode 100644 index c34b8b131..000000000 --- a/src/src_bcdice/diceBot/MetalHead.rb +++ /dev/null @@ -1,246 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/ArithmeticEvaluator' -require 'utils/range_table' - -class MetalHead < DiceBot - # ゲームシステムの識別子 - ID = 'MetalHead' - - # ゲームシステム名 - NAME = 'メタルヘッド' - - # ゲームシステム名の読みがな - SORT_KEY = 'めたるへつと' - - # ダイスボットの使い方 - HELP_MESSAGE = <=目標値 -・スキルロール SR<=目標値(%) -・命中判定ロール HR<=目標値(%) - - 例)AR>=5 - 例)SR<=(40+25) - 例)HR<=(50-10) - - これらのロールで成否、絶対成功/絶対失敗、クリティカル/アクシデントを自動判定します。 - -・クリティカルチャート CC -・アクシデントチャート 射撃・投擲用:ACL 格闘用:ACS -・戦闘結果チャート CRCsn s=耐久レベル(SUV) n=数値 - - 例)CRCA61 SUV=Aを対象とした数値61(62に変換される)の戦闘結果を参照する。 - 例)CRCM98 対物で数値98の戦闘結果を参照する。 -MESSAGETEXT - - setPrefixes(['AR', 'SR', 'HR<=.+', 'CC', 'ACT', 'ACL', 'ACS', 'CRC[A-Z]\d+']) - - def rollDiceCommand(command) - result = roll_tables(command, TABLES) - return result if result - - case command - when /\ACRC(\w)(\d+)\z/ - suv = Regexp.last_match(1) - num = Regexp.last_match(2) - return mh_crc_table(suv, num) - when /\AHR<=(.+)/ - target = ArithmeticEvaluator.new.eval( - Regexp.last_match(1), @fractionType.to_sym - ) - return rollHit(target) - end - - return nil - end - - def changeText(string) - string = string.gsub(/^(S)?AR/i) { "#{Regexp.last_match(1)}2D6" } - string = string.gsub(/^(S)?SR/i) { "#{Regexp.last_match(1)}1D100" } - return string - end - - def check_2D6(total, dice_total, _dice_list, cmp_op, target) - return '' if cmp_op != :>= || target == "?" - - if dice_total >= 12 - " > 絶対成功" - elsif dice_total <= 2 - " > 絶対失敗" - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - def rollHit(target) - total, = roll(1, 100) - resultText = getHitResult(total, total, target) - - text = "(1D100<=#{target}) > #{total}#{resultText}" - - return text - end - - def check_1D100(total, dice_total, cmp_op, target) - return '' if target == '?' - return '' unless cmp_op == :<= - - return getResult(total, dice_total, target) - end - - def getHitResult(total_n, _dice_n, diff) - diceValue = total_n % 100 - dice1 = diceValue % 10 # 1の位を代入 - - debug("total_n", total_n) - - return ' > 失敗' if total_n > diff - - return ' > 成功(クリティカル)' if dice1 == 1 - return ' > 失敗(アクシデント)' if dice1 == 0 - - return ' > 成功' - end - - def getResult(total_n, dice_n, diff) - return ' > 絶対成功' if dice_n <= 5 - return ' > 絶対失敗' if dice_n >= 96 - - return ' > 成功' if total_n <= diff - - return ' > 失敗' - end - - # 戦闘結果チャートを振る - # @param [String] suv 耐久レベル - # @param [String] num 数値 - # @return [String] 振った結果 - def mh_crc_table(suv, num) - header_parts = ['戦闘結果チャート', num] - separator = ' > ' - - suv = suv.to_s.upcase - numbuf = num.to_i - if numbuf < 1 - return (header_parts + ['数値が不正です']).join(separator) - end - - num_d1 = numbuf % 10 - debug("num_d1[#{num_d1}]") - if num_d1 == 1 - numbuf += 1 - end - if num_d1 == 0 - numbuf -= 1 - end - num_d1 = numbuf % 10 - debug("num_d1[#{num_d1}]") - - table_point = [ - nil, # 0 - nil, # 1 - "腕部", # 2 - "腕部", # 3 - "脚部", # 4 - "脚部", # 5 - "胴部", # 6 - "胴部", # 7 - "胴部", # 8 - "頭部", # 9 - ] - - table_damage = { - 'S' => [ {'N' => 2}, {'LW' => 16}, {'MD' => 46}, {'MW' => 56}, {'HD' => 76}, {'HW' => 96}, {'MO' => 106}, {'K' => 116} ], - 'A' => [ {'LW' => 2}, {'MW' => 46}, {'HW' => 76}, {'MO' => 96}, {'K' => 116} ], - 'B' => [ {'LW' => 2}, {'MW' => 36}, {'HW' => 66}, {'MO' => 96}, {'K' => 106} ], - 'C' => [ {'LW' => 2}, {'MW' => 26}, {'HW' => 66}, {'MO' => 86}, {'K' => 106} ], - 'D' => [ {'LW' => 2}, {'MW' => 26}, {'HW' => 46}, {'MO' => 76}, {'K' => 96} ], - 'E' => [ {'LW' => 2}, {'MW' => 26}, {'HW' => 39}, {'MO' => 54}, {'K' => 76} ], - 'F' => [ {'LW' => 2}, {'MW' => 16}, {'HW' => 39}, {'MO' => 54}, {'K' => 66} ], - 'G' => [ {'LW' => 2}, {'MW' => 6}, {'HW' => 16}, {'MO' => 26}, {'K' => 39} ], - 'M' => [ {'0' => 2}, {'1' => 22}, {'2' => 42}, {'3' => 62}, {'4' => 82}, {'5' => 92}, {'6' => 102}, {'8' => 112} ], - } - - if table_damage[suv].nil? - return (header_parts + [ - "耐久レベル(SUV)[#{suv}]", - "耐久レベル(SUV)の値が不正です", - ]).join(separator) - end - - damage_level = '' - table_damage[suv].each do |v| - v.each do |d, n| - debug("suv[#{suv}] #{v} #{d} #{n}") - if n <= numbuf - damage_level = d - end - end - end - - result_parts = [] - - if numbuf != num.to_i - result_parts.push(numbuf.to_s) - end - - if suv == 'M' - result_parts.push('耐物', "HP[#{damage_level}]") - else - result_parts.push( - "耐久レベル(SUV)[#{suv}]", - "部位[#{table_point[num_d1]}] : 損傷種別[#{damage_level}]" - ) - end - - return (header_parts + result_parts).join(separator) - end - - # 表を振った結果の整形処理 - TABLE_ROLL_RESULT_FORMATTER = lambda do |table, result| - [table.name, result.sum, result.content].join(' > ') - end - - # 表の集合 - TABLES = { - 'CC' => RangeTable.new( - 'クリティカルチャート', - '1D10', - [ - [1, '相手は知覚系に多大なダメージを受けた。PERを1にして頭部にHWのダメージ、および心理チェック。'], - [2, '相手の運動神経を断ち切った。DEXを1にして腕部にHWのダメージ、および心理チェック。さらに腕に持っていた武器などは落としてしまう。'], - [3, '相手の移動手段は完全に奪われた。REFを1にして脚部にHWダメージと心理チェック。また、次回からのこちらの攻撃は必ず命中する。'], - [4..5, '相手の急所に命中。激痛のため気絶した上、胴にHWダメージ。'], - [6, '効果的な一撃。胴にHWダメージ。心理チェック。'], - [7, '効果的な一撃。胴にMOダメージ。心理チェック。'], - [8..10, '君の一撃は相手の中枢を完全に破壊した。即死である。'], - ], - &TABLE_ROLL_RESULT_FORMATTER - ), - 'ACL' => RangeTable.new( - 'アクシデントチャート(射撃・投擲)', - '1D10', - [ - [1..7, 'ささいなミス。特にペナルティーはない。'], - [8, '不発、またはジャム。弾を取り出さねばならない物は次のターンは射撃できない。'], - [9, 'ささいな故障。可能なら次のターンから個別武器のスキルロールで修理を行える。'], - [10, '武器の暴発、または爆発。頭部HWの心理効果ロール。さらに、その武器は破壊されPERとDEXのどちらか、または両方に計2ポイントのマイナスを与える。(遠隔操作の場合、射手への被害は無し)'], - ], - &TABLE_ROLL_RESULT_FORMATTER - ), - 'ACS' => RangeTable.new( - 'アクシデントチャート(格闘)', - '1D10', - [ - [1..3, '足を滑らせて転倒し、起き上がるまで相手に+20の命中修正を与える。'], - [4..6, '手を滑らせて、武器を落とす。素手の時は関係ない。'], - [7..9, '使用武器の破壊。素手戦闘のときはMWのダメージを受ける。'], - [10, '手を滑らせ、不幸にも武器は飛んでいき、5m以内に人がいれば誰かに刺さるか、または打撃を与えるかもしれない。ランダムに決定し、普通どおり判定を続ける。素手のときは関係ない。'], - ], - &TABLE_ROLL_RESULT_FORMATTER - ), - }.freeze -end diff --git a/src/src_bcdice/diceBot/MetalHeadExtream.rb b/src/src_bcdice/diceBot/MetalHeadExtream.rb deleted file mode 100644 index 9f24cd6a4..000000000 --- a/src/src_bcdice/diceBot/MetalHeadExtream.rb +++ /dev/null @@ -1,914 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class MetalHeadExtream < DiceBot - # ゲームシステムの識別子 - ID = 'MetalHeadExtream' - - # ゲームシステム名 - NAME = 'メタルヘッドエクストリーム' - - # ゲームシステム名の読みがな - SORT_KEY = 'めたるへつとえくすとりいむ' - - # ダイスボットの使い方 - HELP_MESSAGE = < 1 - complementText += ", LUC:#{luckPoint}" if luckPoint > 0 - - if modify >= 1 - modifyText = modify.to_i.to_s - else - modifyText = "1\/#{(1 / modify).to_i}" - end - - formulaText = getFormulaText(target, modify, advancedRoll, luckPoint) - - result = "#{rollText}R#{modifyText}(#{complementText}):1D100<=#{rollTarget}#{formulaText} > [#{dice}] #{resultText}" - result += " 《ミューズ》" if isMuse - - return result - end - - def get_roll_parameter(accident, advanced, luck, marker, value) - value = value.to_i - - case marker - when '@' - accident = value - when 'A' - advanced = value if [2, 4, 8].include?(value) - when 'L' - luck = value - end - - return accident, advanced, luck - end - - def getRollResultTextAndSuccesValue(dice, advancedRoll, rollTarget, accidentValue, isMuse) - successValue = 0 - - if dice >= accidentValue - resultText = "失敗(アクシデント)" - return resultText, successValue - end - - if dice > rollTarget - resultText = "失敗" - return resultText, successValue - end - - dig1 = dice - ((dice / 10).to_i * 10) - - if isMuse - isCritical = (dig1 <= 1) - else - isCritical = (dig1 == 1) - end - - resultText = "成功" - resultText += "(クリティカル)" if isCritical - - successValue = dice * advancedRoll - - return resultText, successValue - end - - def getFormulaText(target, modify, advancedRoll, luckPoint) - formulaText = target.to_s - formulaText += "\*#{modify.to_i}" if modify > 1 - formulaText += "\/#{(1 / modify).to_i}" if modify < 1 - formulaText += "\/#{advancedRoll}" if advancedRoll > 1 - formulaText += "\*#{2**luckPoint}" if luckPoint > 0 - - return "" if formulaText == target.to_s - - return "[#{formulaText}]" - end - - def get_hit_table(hitPart, roc) - case hitPart - when 'HU' - name = '命中部位表:人間' - table = [ - [1, '胴部(クリティカル)'], - [2, '頭部'], - [3, '左腕部'], - [4, '右腕部'], - [5, '胴部'], - [6, '胴部'], - [7, '胴部'], - [8, '胴部'], - [9, '脚部'], - [10, '脚部'] - ] - when 'BK' - name = '命中部位表:バイク' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, 'パワープラント'], - [6, 'ドライブ'], - [7, 'ドライブ'], - [8, '兵装・貨物'], - [9, '乗員'], - [10, '乗員'] - ] - when 'WA' - name = '命中部位表:ワゴン' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, '本体'], - [7, 'パワープラント'], - [8, 'ドライブ'], - [9, '兵装・貨物'], - [10, '乗員'] - ] - when 'SC' - name = '命中部位表:シェルキャリア' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, '本体'], - [7, 'パワープラント'], - [8, 'ドライブ'], - [9, '兵装・貨物'], - [10, '乗員'] - ] - when 'BG' - name = '命中部位表:バギー' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, 'パワープラント'], - [7, 'ドライブ'], - [8, '兵装・貨物'], - [9, '兵装・貨物'], - [10, '乗員'] - ] - when 'IN' - name = '命中部位表:インセクター' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, 'パワープラント'], - [7, 'ドライブ'], - [8, 'ドライブ'], - [9, 'ドライブ'], - [10, '乗員'] - ] - when 'PT' - name = '命中部位表:ポケットタンク' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, 'パワープラント'], - [7, 'パワープラント'], - [8, 'ドライブ'], - [9, 'ドライブ'], - [10, '兵装・貨物'] - ] - when 'HT' - name = '命中部位表:ホバータンク' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, '本体'], - [7, 'パワープラント'], - [8, 'ドライブ'], - [9, '兵装・貨物'], - [10, '兵装・貨物'] - ] - when 'TA' - name = '命中部位表:戦車' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, 'パワープラント'], - [7, 'ドライブ'], - [8, 'ドライブ'], - [9, '兵装・貨物'], - [10, '兵装・貨物'] - ] - when 'AC' - name = '命中部位表:装甲車' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, 'パワープラント'], - [7, 'ドライブ'], - [8, 'ドライブ'], - [9, '兵装・貨物'], - [10, '兵装・貨物'] - ] - when 'HE' - name = '命中部位表:ヘリ' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, 'パワープラント'], - [6, 'ドライブ'], - [7, 'ドライブ'], - [8, '兵装・貨物'], - [9, '兵装・貨物'], - [10, '乗員'] - ] - when 'TR' - name = '命中部位表:トレーラー' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, 'パワープラント'], - [6, 'ドライブ'], - [7, '兵装・カーゴ'], - [8, '兵装・カーゴ'], - [9, '兵装・カーゴ'], - [10, '乗員'] - ] - when 'VT' - name = '命中部位表:VTOL' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, 'パワープラント'], - [7, 'ドライブ'], - [8, '兵装・貨物'], - [9, '兵装・貨物'], - [10, '乗員'] - ] - when 'BO' - name = '命中部位表:ボート' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, '本体'], - [7, '本体'], - [8, 'パワープラント'], - [9, 'ドライブ'], - [10, '兵装・貨物'] - ] - when 'CS' - name = '命中部位表:通常・格闘型コンバットシェル' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, '本体'], - [7, 'ザック'], - [8, 'ドライブ'], - [9, '兵装・貨物'], - [10, '兵装・貨物'] - ] - when 'TH' - name = '命中部位表:可変・重コンバットシェル' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, '本体'], - [7, 'ドライブ'], - [8, 'ドライブ'], - [9, '兵装・貨物'], - [10, '兵装・貨物'] - ] - when 'AM' - name = '命中部位表:オートモビル' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, 'パワープラント'], - [7, 'ドライブ'], - [8, '兵装・貨物'], - [9, '兵装・貨物'], - [10, '乗員'] - ] - when 'GD' - name = '命中部位表:ガンドック' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, 'パワープラント'], - [7, 'ドライブ'], - [8, 'ドライブ'], - [9, '兵装・貨物'], - [10, '乗員'] - ] - when 'HC' - name = '命中部位表:ホバークラフト' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, 'パワープラント'], - [6, 'パワープラント'], - [7, 'ドライブ'], - [8, '兵装・貨物'], - [9, '乗員'], - [10, '乗員'] - ] - when 'BI' - name = '命中部位表:自転車' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, 'パワープラント'], - [7, 'ドライブ'], - [8, '兵装・貨物'], - [9, '兵装・貨物'], - [10, '乗員'] - ] - when 'BT' - name = '命中部位表:バトルトレーラー' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, 'パワープラント'], - [7, 'ドライブ'], - [8, '兵装・貨物'], - [9, '兵装・貨物'], - [10, '乗員'] - ] - when 'AI' - name = '命中部位表:エアクラフト' - table = [ - [1, '本体(クリティカル)'], - [2, '本体'], - [3, '本体'], - [4, '本体'], - [5, '本体'], - [6, 'パワープラント'], - [7, 'ドライブ'], - [8, '兵装・貨物'], - [9, '兵装・貨物'], - [10, '乗員'] - ] - else - return nil - end - - return get_MetalHeadExtream_1d10_table_result(name, table, roc) - end - - def get_SUV_table(armorGrade, damage) - name = '戦闘結果表' - table = [ - [0, 1, 6, 16, 26, 36], - [0, 1, 6, 26, 36, 46], - [0, 1, 16, 26, 46, 56], - [1, 6, 26, 36, 56, 76], - [1, 16, 36, 46, 66, 76], - [1, 26, 36, 56, 76, 86], - [1, 36, 56, 66, 76, 96], - [1, 56, 76, 86, 96, 106], - [1, 66, 86, 96, 106, 116], - [1, 66, 86, 96, 116, 136], - [1, 76, 96, 106, 126, 156], - [1, 76, 96, 116, 146, 166], - [1, 86, 106, 126, 166, 176], - [1, 106, 126, 136, 176, 196], - [1, 106, 126, 146, 186, 206], - [1, 116, 136, 156, 196, 206], - [1, 126, 146, 166, 206, 226], - [1, 126, 146, 176, 226, 246], - [1, 136, 156, 186, 246, 266], - [1, 156, 176, 206, 246, 286], - [1, 156, 176, 206, 266, 306], - [1, 166, 186, 206, 286, 346], - [1, 176, 196, 246, 326, 366], - [1, 196, 226, 266, 346, 386], - [1, 206, 226, 286, 366, 406], - [1, 226, 246, 306, 386, 406] - ] - - armorIndex = ('A'..'Z').to_a.index(armorGrade) - damageInfo = table[armorIndex] - - woundRanks = ['無傷', 'LW(軽傷)', 'MW(中傷)', 'HW(重傷)', 'MO(致命傷)', 'KL(死亡)'] - - woundText = "" - - damageInfo.each_with_index do |rate, index| - break if rate > damage - - woundText = woundRanks[index] - end - - return "#{name}(#{armorGrade}):#{damage} > #{woundText}" - end - - def get_damageEffect_table(hitPart, damageStage) - damageInfos = [['L', '(LW)'], - ['M', '(MW)'], - ['H', '(HW)'], - ['O', '(MO)']] - - index = damageInfos.index { |i| i.first == damageStage } - return nil if index == -1 - - damageIndex = index + 1 - damageText = damageInfos[index][1] - - case hitPart - when 'H' - name = '対人損傷効果表:頭部' - table = [ - [1, 'ダメージ修正+10。'], - [2, 'ダメージ修正+10。【PER】のAR、【PER】がベースアビリティのスキルのSRにSR1/2のロール修正。'], - [3, 'ダメージ修正+20。【PER】のAR、【PER】がベースアビリティのスキルのSRにSR1/4のロール修正。'], - [4, 'ダメージ修正+30。[死亡]。頭部がサイバーの場合は[戦闘不能]。'] - ] - when 'T' - name = '対人損傷効果表:胴部' - table = [ - [1, 'ダメージ修正+10。'], - [2, 'ダメージ修正+10。【DEX】のAR、【DEX】がベースアビリティのスキルのSRにSR1/2のロール修正。'], - [3, 'ダメージ修正+20。【DEX】のAR、【DEX】がベースアビリティのスキルのSRにSR1/4のロール修正。'], - [4, 'ダメージ修正+30。[戦闘不能]。'] - ] - when 'A' - name = '対人損傷効果表:腕部' - table = [ - [1, 'ダメージ修正+10。'], - [2, 'ダメージ修正+10。損傷した腕を使用する、また両腕を使用する行動にSR1/2のロール修正。'], - [3, 'ダメージ修正+20。損傷した腕を使用する、また両腕を使用する行動にSR1/4のロール修正。'], - [4, 'ダメージ修正+30。損傷した腕を使用する、また両腕を使用する行動不可。'] - ] - when 'L' - name = '対人損傷効果表:脚部' - table = [ - [1, 'ダメージ修正+10。'], - [2, 'ダメージ修正+10。【REF】のAR、【REF】がベースアビリティのスキルのSRにSR1/2のロール修正。'], - [3, 'ダメージ修正+20。【REF】のAR、【REF】がベースアビリティのスキルのSRにSR1/4のロール修正。【MV】が1/2。'], - [4, 'ダメージ修正+30。[戦闘不能]。'] - ] - when 'M' - name = '心理損傷効果表' - table = [ - [1, 'ダメージ修正+10。焦り。効果は特になし。シーン終了で自然回復。'], - [2, 'ダメージ修正+20。混乱。1シーン、すべてのロールがSR1/2となる。シーン終了で自然回復。'], - [3, 'ダメージ修正+30。恐怖。1シーン、すべてのロールがSR1/4となる。シーン終了で自然回復。'], - [4, 'ダメージ修正+50。喪失。[戦闘不能]。シーン終了で自然回復。'] - ] - when 'E' - name = '電子損傷効果表' - table = [ - [1, 'ダメージ修正+10。処理落ち。効果は特になし。'], - [2, 'ダメージ修正+20。ノイズ。1シーン、キャラクターならすべてのロールが、アイテムならそれを使用したロールが1/2となる。'], - [3, 'ダメージ修正+30。恐怖。1シーン、キャラクターならすべてのロールが、アイテムならそれを使用したロールが1/4となる。'], - [4, 'ダメージ修正+50。クラッシュ。キャラクターなら[戦闘不能]。アイテムなら1シナリオ中、使用不可。'] - ] - when 'B' - name = 'メカニック損傷効果表:本体' - table = [ - [1, 'ダメージ修正+10。'], - [2, 'ダメージ修正シフト1。修理費がフレーム価格の1/4かかる。'], - [3, 'ダメージ修正シフト2。修理費がフレーム価格の1/2かかる。'], - [4, 'ダメージ修正シフト3。移動不能。修理費がフレーム価格と同じだけかかる。走行中なら事故表を振ること。'] - ] - when 'P' - name = 'メカニック損傷効果表:パワープラント' - table = [ - [1, 'ダメージ修正+10。'], - [2, 'ダメージ修正+10。メカニックの【MV】が1/2になる。修理費がパワープラント価格の1/4かかる。'], - [3, 'ダメージ修正+20。メカニックの【MV】が1/4になる。修理費がパワープラント価格の1/2かかる。'], - [4, 'ダメージ修正+30。移動不能。修理費がパワープラント価格と同じだけかかる。走行中なら事故表を振ること。'] - ] - when 'D' - name = 'メカニック損傷効果表:ドライブ' - table = [ - [1, 'ダメージ修正+10。'], - [2, 'ダメージ修正+10。メカニックの【REF】が1/2になる。[メカニック]スキルにSR1/2の修正。修理費がドライブ価格の1/4かかる。'], - [3, 'ダメージ修正+20。メカニックの【REF】が1/2になる。[メカニック]スキルにSR1/4の修正。修理費がドライブ価格の1/2かかる。'], - [4, 'ダメージ修正+30。移動不能。修理費がドライブ価格と同じだけかかる。走行中なら事故表を振ること。'] - ] - else - return nil - end - - text = get_table_by_number(damageIndex, table) - return "#{name}#{damageText} > #{text}" - end - - def get_critical_table(roc) - name = 'クリティカル表' - table = [ - [1, '特に追加被害は発生しない。'], - [2, '対象はバランスを崩す。クリンナッププロセスまで、対象は命中ロールにSR1/2のロール修正を受ける。'], - [3, '対象に隙を作る。クリンナッププロセスまで、対象はリアクションにSR1/2のロール修正を受ける。'], - [4, '激しい一撃。最終火力に+20してダメージを算出すること。'], - [5, '多大なダメージ。最終火力に+20してダメージを算出すること。'], - [6, '弱点に直撃。対象の装甲値を無視してダメージを算出すること。'], - [7, '効果的な一撃。対象の受ける損傷段階をシフト1する。'], - [8, '致命的な一撃。対象の受ける損傷段階をシフト2する。'], - [9, '中枢に直撃。対象の【SUV】を3ランク低いものとしてダメージを算出する。'], - [10, '中枢を破壊。対象の装甲値を無視し、【SUV】を3ランク低いものとしてダメージを算出する。'] - ] - return get_MetalHeadExtream_1d10_table_result(name, table, roc) - end - - def get_accident_table(damageType, roc) - case damageType - when 'G' - name = '格闘アクシデント表' - table = [ - [1, '体勢を崩す。その攻撃は失敗する。'], - [2, '体勢を崩す。その攻撃は失敗する。'], - [3, '体勢を崩す。その攻撃は失敗する。'], - [4, '転倒。格闘回避と機動回避にSR1/4、【MV】が半分に。'], - [5, '転倒。格闘回避と機動回避にSR1/4、【MV】が半分に。'], - [6, '転倒。格闘回避と機動回避にSR1/4、【MV】が半分に。'], - [7, '武器が足下(0m離れたところ)に落ちる。素手のときは何もなし。'], - [8, '武器が足下(0m離れたところ)に落ちる。素手のときは何もなし。'], - [9, '武器が5m離れたところに落ちる。素手のときは関係ない。'], - [10, '使用武器が壊れ、1シーン使用不可。'] - ] - when 'S' - name = '射撃/投擲アクシデント表' - table = [ - [1, 'ささいなミス。その攻撃は失敗する。'], - [2, 'ささいなミス。その攻撃は失敗する。'], - [3, 'ささいなミス。その攻撃は失敗する。'], - [4, '射撃武器はジャム。投擲武器ならば武器が取り出せないなど、マイナーアクションを消費しなければその武器を使用できない。'], - [5, '射撃武器はジャム。投擲武器ならば武器が取り出せないなど、マイナーアクションを消費しなければその武器を使用できない。'], - [6, '射撃武器はジャム。投擲武器ならば武器が取り出せないなど、マイナーアクションを消費しなければその武器を使用できない。'], - [7, '故障。メジャーアクションで【DEX】のSR1のロールに成功しなければ、その武器を使用できない。'], - [8, '故障。メジャーアクションで【DEX】のSR1のロールに成功しなければ、その武器を使用できない。'], - [9, '破壊。以後、その武器は使用できない。'], - [10, '武器の暴発。固定火力100のダメージを、装甲値無視で武器を持っていた腕(両手なら両手)、または兵装・貨物に受ける。'] - ] - when 'M' - name = '心理攻撃アクシデント表' - table = [ - [1, '集中失敗。攻撃は失敗する。'], - [2, '集中失敗。攻撃は失敗する。'], - [3, '集中失敗。攻撃は失敗する。'], - [4, '思考ノイズ。クリンナップまですべてのリアクションにSR1/2。'], - [5, '思考ノイズ。クリンナップまですべてのリアクションにSR1/2。'], - [6, '思考ノイズ。クリンナップまですべてのリアクションにSR1/2。'], - [7, 'EXの暴走。頭部に装甲値無視、固定火力60のダメージを受ける。'], - [8, 'EXの暴走。頭部に装甲値無視、固定火力60のダメージを受ける。'], - [9, '感情暴走。攻撃に使用したマニューバが1シーン使用不可。'], - [10, 'トラウマの再現。装甲値無視、固定火力100の心理ダメージを受ける。'] - ] - when 'E' - name = '電子攻撃アクシデント表' - table = [ - [1, 'ショック。攻撃は失敗する。'], - [2, 'ショック。攻撃は失敗する。'], - [3, 'ショック。攻撃は失敗する。'], - [4, 'ノイズ発生。クリンナップまで電子攻撃のリアクションにSR1/2。'], - [5, 'ノイズ発生。クリンナップまで電子攻撃のリアクションにSR1/2。'], - [6, 'ノイズ発生。クリンナップまで電子攻撃のリアクションにSR1/2。'], - [7, 'ソフトウェア障害。攻撃に使用したソフトが1シーン使用不可。'], - [8, 'ソフトウェア障害。攻撃に使用したソフトが1シーン使用不可。'], - [9, 'ハードウェア障害。装甲値無視、固定火力80の電子ダメージを受ける。'], - [10, '信号逆流。装甲値無視、固定火力100の心理ダメージを受ける。'] - ] - else - return nil - end - - return get_MetalHeadExtream_1d10_table_result(name, table, roc) - end - - def get_mechanicAccident_table(locationType, roc, correction) - case locationType - when 'A' - name = '空中メカニック事故表' - table = [ - [3, '兵装/貨物。メカニックが装備している一番ENCの大きい武器ひとつが戦闘終了時まで使用不能になる。武器がない場合はメカニックオプションが使用不能になり、それもない場合は一番ENCの重い貨物(乗客をのぞく)が失われる。'], - [6, '操作不能。メカニック本体にMWダメージ。操縦者は適切な[メカニック]スキルでSR1/4のロールを行い、成功したら体勢を立て直せる。失敗した場合、次のクリンナッププロセスまで、回避をふくめた一切の行動を取ることができない。'], - [8, '不時着。メカニック本体にHWダメージ。次のクリンナッププロセスまで、回復をふくめた一切の行動を取ることができない。'], - [9, '墜落。メカニック本体にMOダメージ。すべての乗員は、墜落のショックによってランダムな部位に〈物〉155の固定ダメージを受ける。このダメージは機動回避可能である。'], - [10, '爆発。メカニックが爆発し、完全に破壊される。すべての乗員は、爆発と落下によって胴体に〈熱〉205の固定ダメージを受ける。このダメージは機動回避可能だが、SRに1/4の修正がある。'] - ] - when 'S' - name = '水上/水中メカニック事故表' - table = [ - [3, '横揺れ。次のクリンナッププロセスまで、このメカニックに乗っているキャラクターの行うすべての[メカニック]ロールに1/2の修正が与えられる。'], - [6, '兵装/貨物。メカニックが装備している一番ENCの大きい武器ひとつが戦闘終了時まで使用不能になる。武器がない場合はメカニックオプションが使用不能になり、それもない場合は一番ENCの重い貨物(乗客をのぞく)が失われる。'], - [8, '横転。メカニック本体にMWダメージ。操縦者は適切な[メカニック]スキルでSR1/4のロールを行い、成功したら体勢を立て直せる。失敗した場合、次のクリンナッププロセスまで、回避をふくめた一切の行動を取ることができない。'], - [9, '激突。メカニック本体に〈物〉255の固定ダメージ。'], - [10, '爆発。メカニックが爆発し、完全に破壊される。すべての乗員は、爆発によって胴体に〈熱〉155の固定ダメージを受ける。このダメージは機動回避可能だが、SRに1/4の修正がある。'] - ] - when 'L' - name = '地上メカニック事故表' - table = [ - [3, '接触。メカニック本体にLWダメージ。'], - [6, '兵装/貨物。メカニックが装備している一番ENCの大きい武器ひとつが戦闘終了時まで使用不能になる。武器がない場合はメカニックオプションが使用不能になり、それもない場合は一番ENCの重い貨物(乗客をのぞく)が失われる。'], - [8, 'スピン。メカニック本体にMWダメージ。操縦者は適切な[メカニック]スキルでSR1/4のロールを行い、成功したら体勢を立て直せる。失敗した場合、次のクリンナッププロセスまで、回避をふくめた一切の行動を取ることができない。'], - [9, '激突。メカニック本体に〈物〉255の固定ダメージ。次のクリンナッププロセスまで、回避をふくめた一切の行動を取ることができない。'], - [10, '爆発。メカニックが爆発し、完全に破壊される。すべての乗員は、爆発によって胴体に〈熱〉155の固定ダメージを受ける。このダメージは機動回避可能だが、SRに1/4の修正がある。'] - ] - else - return nil - end - - dice = get_roc_dice(roc, 10) - diceText = dice.to_s - - dice += correction - dice = 10 if dice > 10 - diceText = "#{dice}[#{diceText}+#{correction}]" if correction > 0 - - tableText = get_table_by_number(dice, table) - text = "#{name}(#{diceText}) > #{tableText}" - return text - end - - def get_strategyEvent_chart - name = 'ストラテジーイベントチャート' - table = [ - [50, '特に何事もなかった。'], - [53, 'スコール。種別:レーザーを装備している部隊の戦力はこのターン半減する。この効果は重複しない。'], - [55, 'ただよう不安。味方ユニットはWILのAR1を行い、失敗すると士気の10%を失う。'], - [57, '狙撃! 司令官キャラクターは胴体に〈物〉155点の固定ダメージを受ける。機動回避は可能。'], - [60, '敵の猛烈な反撃! 味方ユニットはREFのAR1を行い、失敗するとこのターン、移動力がマイナス1。'], - [63, '敵弾幕の隙を見いだす。このターン、味方ユニットは突破判定がSR2に。'], - [65, '突破のチャンス。このターン、味方ユニットは移動力が1点上昇する。'], - [67, '士気高揚。味方ユニットの士気がそれぞれ現在値の10%だけ回復する。'], - [70, '敵陣崩壊。敵ユニットの中で士気がもっとも低いユニットが戦場から撤退する。複数いた場合、すべて撤退。PC、ゲストには効果なし。'], - [73, '大声援。戦闘がどこかのハッカーによって衛星中継され、喝采を浴びる。'], - [75, '雨/雪。種別;レーザーを部隊の戦力はこのターン半減する。この効果は重複しない。'], - [77, '磁気嵐。このターン、種別:ミサイルは戦力に数えず、突撃に使用することもできない。'], - [80, '膠着した戦況。このターン、味方ユニットは突破判定がSR1/2に。'], - [83, 'メタルホッパー! 金属イナゴの襲来で視界をふさがれ、このラウンドは全てのMC射程が0となる。'], - [85, '大竜巻! 飛行しているユニットの移動力は0となり、飛行ユニットはこのターン自分から突撃を行えない。'], - [87, '通信の混乱。味方ユニットはINTのAR1を行い、失敗するとこのターン、移動力がマイナス1。'], - [90, '幸運が微笑む。味方ユニットのラックポイントが1点ずつ回復。NPCには無効。'], - [93, '致命的な狙撃! 司令官キャラクターは胴体に〈物〉205点の固定ダメージを受ける。機動回避は可能。'], - [95, '敵の罠に落ちた。このターン、敵軍ユニットは移動力が1点上昇する。'], - [97, '勝利の予感。味方ユニットの士気がそれぞれの現在値の20%だけ回復する。'], - [99, '天変地異が襲いかかる! このターン、すべてのユニットは移動できない。'], - [100, '大混乱。後2回振る。'] - ] - return get_MetalHeadExtream_1d100_table_result(name, table, 0) - end - - def get_NPCAttack_chart - name = 'NPC攻撃処理チャート' - table = [ - [5, '戦力の低い側だけが一方的に除去される。'], - [8, '双方、一番戦力の少ないユニットひとつを除去する。'], - [10, '戦力の高い側が最大戦力のユニットひとつを除去する。'] - ] - return get_MetalHeadExtream_1d10_table_result(name, table, 0) - end - - def get_loserDestiny_chart - name = '敗者運命チャート' - table = [ - [1, '奇跡的に無傷で生き延びた。いずれ復讐の機会もあるだろう。'], - [2, 'ランダムな部位にLWを負う。'], - [3, '戦力決定に使っていた武器が破壊される。'], - [4, 'ランダムな部位にMWを負う。'], - [5, '外見に影響するような傷を負う。治療するなら$3000。'], - [6, 'ランダムな部位にHWを負う。'], - [7, '着用している防具すべてが破壊される。衣服は壊れない。'], - [8, 'ランダムな部位にMOを負う。'], - [9, 'ランダムに決定した能力値ひとつを、永久に1点失う。'], - [10, '残念ながら、君は死んでしまった。'] - ] - return get_MetalHeadExtream_1d10_table_result(name, table, 0) - end - - def get_randomEncounter_table(locationType, roc) - case locationType - when 'W' - name = '荒野ランダムエンカウント表' - table = [ - [80, '特に遭遇は発生しなかった'], - [85, '1d10名のバンデッド'], - [87, 'ヴェーダ・バウンサー1名に率いられた1d10+2(最低1)のヴェーダ・ソルジャー'], - [89, '1d10+2体のウェーブコヨーテ'], - [91, '1d10÷2体(最低1)のレーザーアント'], - [93, '1d10-5体(最低1)のライトニングホーク'], - [96, '1d10体のメタルホッパー'], - [98, '1体のブラスビースト'], - [100, '1d10÷3体(最低1)のサンドワーム'] - ] - else - return nil - end - - return get_MetalHeadExtream_1d100_table_result(name, table, roc) - end - - def get_MetalHeadExtream_1d10_table_result(name, table, roc) - get_MetalHeadExtream_1dX_table_result(name, table, roc, 10) - end - - def get_MetalHeadExtream_1d100_table_result(name, table, roc) - get_MetalHeadExtream_1dX_table_result(name, table, roc, 100) - end - - def get_MetalHeadExtream_1dX_table_result(name, table, roc, diceMax) - dice = get_roc_dice(roc, diceMax) - text = get_table_by_number(dice, table) - - return "#{name}(#{dice}) > #{text}" - end - - def get_roc_dice(roc, diceMax) - dice = roc - dice = diceMax if dice > diceMax - - if dice == 0 - dice, = roll(1, diceMax) - end - - return dice - end - - # 端数が使いたいので、parren_killer未使用 - def get_value(originalValue, calculateText) - result = originalValue.to_f - calculateArray = (calculateText || '').scan(%r{[\*/]\d*}) # 修正値を分割して配列へ - calculateArray.each do |i| # 配列内ループで補正率を計算 - i =~ %r{([\*/])(\d*)}i - result *= Regexp.last_match(2).to_i if Regexp.last_match(1) == '*' - result /= Regexp.last_match(2).to_i if Regexp.last_match(1) == '/' - end - return result - end -end diff --git a/src/src_bcdice/diceBot/MetallicGuardian.rb b/src/src_bcdice/diceBot/MetallicGuardian.rb deleted file mode 100644 index f25124153..000000000 --- a/src/src_bcdice/diceBot/MetallicGuardian.rb +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/SRS' - -# メタリックガーディアンのダイスボット -class MetallicGuardian < SRS - # 固有のコマンドの接頭辞を設定する - setPrefixes(['2D6.*', 'MG.*']) - - # 成功判定のエイリアスコマンドを設定する - set_aliases_for_srs_roll('MG') - - # ゲームシステム名を返す - # @return [String] - # ゲームシステム名 - NAME = 'メタリックガーディアンRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'めたりつくかあていあんRPG' - - # ゲームシステム識別子を返す - # @return [String] - # ゲームシステムの識別子 - ID = 'MetallicGuardian' -end diff --git a/src/src_bcdice/diceBot/MonotoneMuseum.rb b/src/src_bcdice/diceBot/MonotoneMuseum.rb deleted file mode 100644 index 442f1e9b4..000000000 --- a/src/src_bcdice/diceBot/MonotoneMuseum.rb +++ /dev/null @@ -1,348 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/table' -require 'utils/d66_range_table' -require 'utils/d66_grid_table' -require 'utils/format' - -class MonotoneMuseum < DiceBot - # ゲームシステムの識別子 - ID = 'MonotoneMuseum' - - # ゲームシステム名 - NAME = 'モノトーンミュージアムRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'ものとおんみゆうしあむRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <=t[c,f] -  修正値m,目標値t,クリティカル値c,ファンブル値fで判定ロールを行います。 -  クリティカル値、ファンブル値は省略可能です。([]ごと省略できます) -  自動成功、自動失敗、成功、失敗を自動表示します。 -・各種表 - ・感情表 ET/感情表 2.0 ET2 - ・兆候表 OT/兆候表ver2.0 OT2 - ・歪み表 DT/歪み表ver2.0 DT2/歪み表(野外) DTO/歪み表(海) DTS/歪み表(館・城) DTM - ・世界歪曲表 WDT/世界歪曲表2.0 WDT2 - ・永劫消失表 EDT -・D66ダイスあり -INFO_MESSAGE_TEXT - - # ダイスボットを初期化する - def initialize - super - - # 式、出目ともに送信する - @sendMode = 2 - # D66ダイスあり(出目をソートしない) - @d66Type = 1 - # バラバラロール(Bコマンド)でソートする - @sortType = 1 - end - - # 固有のダイスロールコマンドを実行する - # @param [String] command 入力されたコマンド - # @return [String, nil] ダイスロールコマンドの実行結果 - def rollDiceCommand(command) - if (ret = check_roll(command)) - return ret - end - - return roll_tables(command, TABLES) - end - - private - - def check_roll(command) - m = /^(\d+)D6([\+\-\d]*)>=(\d+)(\[(\d+)?(,(\d+))?\])?$/i.match(command) - unless m - return nil - end - - dice_count = m[1].to_i - modify_number = m[2] ? ArithmeticEvaluator.new.eval(m[2]) : 0 - target = m[3].to_i - critical = (m[5] || 12).to_i - fumble = (m[7] || 2).to_i - - dice_value, dice_str, = roll(dice_count, 6, @sortType && 1) - total = dice_value + modify_number - - result = - if dice_value <= fumble - "自動失敗" - elsif dice_value >= critical - "自動成功" - elsif total >= target - "成功" - else - "失敗" - end - - sequence = [ - "(#{command})", - "#{dice_value}[#{dice_str}]#{Format.modifier(modify_number)}", - total.to_s, - result, - ] - - return sequence.join(" > ") - end - - # モノトーンミュージアム用のテーブル - # D66を振って決定する - # 1項目あたり出目2つに対応する - class MMTable < D66RangeTable - # @param name [String] - # @param items [Array] - def initialize(name, items) - if items.size != RANGE.size - raise UnexpectedTableSize.new(name, items.size) - end - - items_with_range = RANGE.zip(items) - - super(name, items_with_range) - end - - # 1項目あたり2個 - RANGE = [11..12, 13..14, 15..16, 21..22, 23..24, 25..26, 31..32, 33..34, 35..36, 41..42, 43..44, 45..46, 51..52, 53..54, 55..56, 61..62, 63..64, 65..66].freeze - end - - TABLES = { - "ET" => D66GridTable.new( - "感情表", - [ - ["【信頼(しんらい)】", "【有為(ゆうい)】", "【友情(ゆうじょう)】", "【純愛(じゅんあい)】", "【慈愛(じあい)】", "【憧れ(あこがれ)】"], - ["【恐怖(きょうふ)】", "【脅威(きょうい)】", "【憎悪(ぞうお)】", "【不快感(ふかいかん)】", "【食傷(しょくしょう)】", "【嫌悪(けんお)】"], - ["【好意(こうい)】", "【庇護(ひご)】", "【遺志(いし)】", "【懐旧(かいきゅう)】", "【尽力(じんりょく)】", "【忠誠(ちゅうせい)】"], - ["【不安(ふあん)】", "【侮蔑(ぶべつ)】", "【嫉妬(しっと)】", "【劣等感(れっとうかん)】", "【優越感(ゆうえつかん)】", "【憐憫(れんびん)】"], - ["【尊敬(そんけい)】", "【感服(かんぷく)】", "【慕情(ぼじょう)】", "【同情(どうじょう)】", "【傾倒(けいとう)】", "【好奇心(こうきしん)】"], - ["【偏愛(へんあい)】", "【執着(しゅうちゃく)】", "【悔悟(かいご)】", "【警戒心(けいかいしん)】", "【敵愾心(てきがいしん)】", "【忘却(ぼうきゃく)】"], - ] - ), - "ET2" => D66GridTable.new( - "感情表2.0", - [ - ["【プレイヤーの任意】", "【同一視(どういつし)】", "【連帯感(れんたいかん)】", "【幸福感(こうふくかん)】", "【親近感(しんきんかん)】", "【誠意(せいい)】"], - ["【懐旧(かいきゅう)】", "【同郷(どうきょう)】", "【同志(どうし)】", "【くされ縁(くされえん)】", "【期待(きたい)】", "【好敵手(こうてきしゅ)】"], - ["【借り(かり)】", "【貸し(かし)】", "【献身(けんしん)】", "【義兄弟(ぎきょうだい)】", "【幼子(おさなご)】", "【親愛(しんあい)】"], - ["【疎外感(そがいかん)】", "【恥辱(ちじょく)】", "【憐憫(れんびん)】", "【隔意(かくい)】", "【嫌悪(けんお)】", "【猜疑心(さいぎしん)】"], - ["【厭気(けんき)】", "【不信感(ふしんかん)】", "【怨念(おんねん)】", "【悲哀(ひあい)】", "【悪意(あくい)】", "【殺意(さつい)】"], - ["【敗北感(はいぼくかん)】", "【徒労感(とろうかん)】", "【黒い泥(くろいどろ)】", "【憤懣(ふんまん)】", "【無関心(むかんしん)】", "【プレイヤーの任意】"], - ] - ), - "OT" => Table.new( - "兆候表", - "2D6", - [ - "【信念の喪失】\n[出自]を喪失する。特徴は失われない。", - "【昏倒】\nあなたは[戦闘不能]になる。", - "【肉体の崩壊】\nあなたは2D6点のHPを失う。", - "【放心】\nあなたはバッドステータスの[放心]を受ける。", - "【重圧】\nあなたはバッドステータスの[重圧]を受ける。", - "【現在の喪失】\n現在持っているパートナーをひとつ喪失する。", - "【マヒ】\nあなたはバッドステータスの[マヒ]を受ける。", - "【邪毒】\nあなたはバッドステータスの[邪毒]5を受ける。", - "【色彩の喪失】\n漆黒、墨白、透明化……。その禍々しい色彩の喪失は他らなぬ異形化の片鱗だ。", - "【理由の喪失】\n[境遇]を喪失する。特徴は失われない。", - "【存在の喪失】\nあなたの存在は一瞬、この世界から消失する。", - ] - ), - "DT" => Table.new( - "歪み表", - "2D6", - [ - "【世界消失】\n演目の舞台がすべて失われる。舞台に残っているのはキミたちと異形、伽藍だけだ。クライマックスフェイズへ。", - "【生命減少】\n演目の舞台となっている街や国から動物や人間の姿が少なくなる。特に子供の姿は見られない。", - "【空間消失】\n演目の舞台の一部(建物一棟程度)が消失する。", - "【天候悪化】\n激しい雷雨に見舞われる。", - "【生命繁茂】\nシーン内に植物が爆発的に増加し、建物はイバラのトゲと蔓草に埋没する。", - "【色彩喪失】\n世界から色彩が失われる。世界のすべてをモノクロームになったかのように認識する。", - "【神権音楽】\n美しいが不安を覚える音が流れる。音は人々にストレスを与え、街の雰囲気は悪化している。", - "【鏡面世界】\n演目の舞台に存在するあらゆる文字は鏡文字になる。", - "【時空歪曲】\n昼夜が逆転する。昼間であれば夜になり、夜であれば朝となる。", - "【存在修正】\nGMが任意に決定したNPCの性別や年齢、外見が変化する。", - "【人体消失】\nシーンプレイヤーのパートナーとなっているNPCが消失する。どのNPCが消失するかは、GMが決定する。", - ] - ), - "DT2" => MMTable.new( - "歪み表ver2.0", - [ - "【色彩侵食】\nシーン内に存在するあらゆる無生物と生物は、白と黒とのモノトーンの存在となる。紡ぎ手は【縫製】難易度8の判定に成功すれば、この影響を受けない。この効果は歪みをもたらした異形の死によって解除される。", - "【虚無現出】\nほつれの中から虚無がしみ出す。シーンに登場しているエキストラは虫一匹にいたるまで消滅し、二度と現れない。", - "【季節変容】\n季節が突如として変化する。1D6し、1なら春、2なら夏、3なら秋、4なら冬、5ならプレイしている現在の季節、6ならGMの任意とせよ。", - "【ほつれ】\n世界がひび割れ、ほつれが現出する。ほつれに触れたものは虚無に飲み込まれ、帰ってくることはない。", - "【異形化】\nシーン内のすべてのエキストラは何らかの異形化を受ける。これを治癒する術はない。異形の群れ(『IZ』P.237)×1D6と戦闘させてもよい。", - "【死の行進】\n人々の心に虚無が広がり、不安と絶望に満たされていく。逃れられぬ恐怖から逃れようと、人々はみずから、あるいは無意識のうちに死へと向かい行動を始める。", - "【時間加速】\nシーン内に存在するあらゆる無生物と生物は、2D6年ぶん時間が加速する。生物なら老化する。紡ぎ手は【縫製】難易度8の判定に成功すれば、この影響を受けない。", - "【時間逆流】\nシーン内に存在するあらゆる無生物と生物は、2D6年ぶん時間が逆流する。生物ならば若返る。製造年/生年より前に戻った場合は虚無に飲まれ消滅する。紡ぎ手は【縫製】難易度8の判定に成功すれば、この影響を受けない。", - "【災害到来】\n嵐、火山の噴火、洪水など、ほつれによって乱された自然が、人々に牙をむく。", - "【人心荒廃】\n歪みによってもたらされた不安と恐怖は、人々を捨て鉢にさせる。", - "【平穏無事】\n何も起きない。紡ぎ手は背筋が凍るほどの恐怖を覚える。", - "【疫病蔓延】\n登場しているキャラクターは【肉体】難易度8の判定を行ない、失敗すると[邪毒]5を受ける。病の治療法の有無などについてはGMが決定する。迷ったら、伽藍を倒すと病も消滅する、とせよ。", - "【異端審問】\n異端審問の時は近い。PCたちが紡ぎ手であることが知れ渡れば、PCたちも火刑台へと送られることになろう。", - "【歪み出現】\nほつれの破片から歪みが現れ、人々を襲撃する。病魔(『IZ』P.238)×2と戦闘を行なわせてもよい。また、別の異形でもよい。", - "【悪夢現出】\nシーン内のあらゆる人々は恐るべき恐怖の夢を見る。心弱きものたちは、伽藍にすがるか、異端者を火あぶりにせねばこの夢から逃れられぬと考えるだろう。", - "【鼠の宴】\n鼠の大群が出現し、穀物を食い荒らし、疫病をまき散らす。大鼠(『MM』P.240)×1D6と戦闘を行なわせてもよい。", - "【歪曲御標】\n歪んだ御標が下される。歪み表(『MM』P.263)を振ること。", - "【地域消滅】\n演目の舞台となっている地域そのものが消えてなくなる。影響下にあるすべてのキャラクター(伽藍を含む)は【縫製】難易度10の判定に成功すれば脱出できる。失敗した場合即座に死亡する。エキストラは無条件で死亡する。", - ] - ), - "WDT" => Table.new( - "世界歪曲表", - "2D6", - [ - "【消失】\n世界からボスキャラクターが消去され、消滅する。エンディングフェイズへ。", - "【自己犠牲】\nチャートを振ったPCのパートナーとなっているNPCのひとりが死亡する。チャートを振ったPCのHPとMPを完全に回復させる。", - "【生命誕生】\nキミたちは大地の代わりに何かの生き物の臓腑の上に立っている。登場しているキャラクター全員に[邪毒]5を与える。", - "【歪曲拡大】\nシーンに登場している紡ぎ手ではないNPCひとりが漆黒の凶獣(『MM』P.240)に変身する。", - "【暴走】\n“ほつれ”がいくつも生まれ、シーンに登場しているすべてのキャラクターの剥離値を+1する。", - "【幻像世界】\n周囲の空間は歪み、破壊的なエネルギーが充満する。次に行なわれるダメージロールに+5D6する。", - "【変調】\n右は左に、赤は青に、上は下に、歪みが身体の動きを妨げる。登場しているキャラクター全員に[狼狽]を与える。", - "【空間消失】\n演目の舞台が煙のように消失する。圧倒的な喪失感により、登場しているキャラクター全員に[放心]を与える。", - "【生命消失】\n次のシーン以降、エキストラは一切登場できない。現在のシーンのエキストラに関してはGMが決定する。", - "【自己死】\nもっとも剥離値の高いPCひとりが[戦闘不能]になる。複数のPCが該当した場合はGMがランダムに決定する。", - "【世界死】\n世界の破滅。難易度12の【縫製】判定に成功すると破滅から逃れられる。失敗すると行方不明になる。エンディングフェイズへ。", - ] - ), - "WDT2" => MMTable.new( - "世界歪曲表ver2.0", - [ - "【歪みの茨】\nシーン全体が鋼鉄よりも硬い茨の棘によって埋め尽くされる。飛行状態でないキャラクターは、移動を行う度に〈刺〉3D6+[そのシーンで登場するキャラクターの中で最大の演者レベル]点のダメージを受ける。", - "【世界歪曲】\n世界歪曲表(『MM』P264)を振る。", - "【さかさま世界】\n空か゛地面に、地面が空になる。そのシーン中、全ての飛行状態であるキャラクターは飛行状態でないものとして、飛行状態にないキャラクターは飛行状態として扱う。", - "【海の記憶】\n存在するはずのない潮騒が聞こえ、世界の全てが波に飲み込まれる。このシーン中、飛行状態でない全てのキャラクターは水中状態として扱う。", - "【空間湾曲】\n世界は歪む。こことあそこは意味を失う。このシーンの間、全てのキャラクターの移動力は∞となり、特技と装備の射程は全て「視界」となる。", - "【濃霧世界】\nミルクよりも白く、濃厚な霧が世界を閉ざす。このシーンの間、特技と装備の射程が「視界」「6m以上」出会った場合、すべて「5m」に変更される。", - "【豪雨】\nすさまじい雨が降る。雨は全ての人の心を凍らせる。このシーンの間、「種別:銃」である武器を用いた攻撃のファンブル値を+6する。また、別エンゲージへの物理攻撃の達成値を-2する。", - "【どろどろ】\n足下がいつの間にか不定型な泥沼になっている。このシーンの間、飛行状態でないキャラクターが同一エンゲージに対して行う物理攻撃のファンブル値を+6する。", - "【暴風】\n風は吹きすさび運命を嘲笑する。このシーンの間、飛行状態でないキャラクターが同一エンゲージに対して行う物理攻撃のファンブル値を+6する", - "【魔法暴走】\n魔法の力は暴走し、もう誰の手にも負えない。世界は終わる。消えていく。このシーンの間、「種別:術」の特技を用いた判定のファンブル値は+6される", - "【自己死】\n巨大なほつれが発生し、致命的なダメージを負う。最も剥離値の高いPCひとりが戦闘不能になる。複数のPCが該当した場合はGMがランダムに決定する", - "【虚構の報い】\n紡ぎ手によってゆがめられ続けた因果が逆襲する。このシーンで《虚構現出》を使用した場合、代償に加えて10D6点の実ダメージを受ける。このダメージは軽減できず、移し替えることもできない。", - "【虚構の果て】\n神が見捨てたのか、神を見捨てたのか。逸脱の果て、世界は終わる。あなたはこのシーンで逸脱能力を使用した場合、上昇した剥離値の10倍だけの実ダメージを受ける。このダメージは軽減できず、移し替えることも出来ない。", - "【人格交代】\n魂、厳密には魂の背後にあるナニモノカが入れ替わる。左隣のプレイヤーにキャラクターシートを渡し、このシーン中はそのプレイヤーがあなたのPCを演じる。GMが認めれば、GMもNPCと入れ替えてもいい。", - "【因果の糸】\n嗤う声がする。「逸脱の結果は共有しようよ?」PC全員の剥離値を平均し(端数切り上げ)、全員の剥離値をその計算結果に書き換える、", - "【剣に斃る】\n人を裁く者に報いを、剣には剣の対価を。このシーンで攻撃を行いファンブルした場合、5D6点の実ダメージを受ける。", - "【秘密暴露】\n隠しておきたい秘密を小鳥が囀り、リスが囁く。登場している全ての紡ぎ手、異形、伽藍は隠しておきたい秘密(そのキャラクターの主観で良い)ひとつを明らかにする。さもなければ、10D6点の実ダメージを受ける。このダメージは軽減も移し替えも出来ない。", - "【荒廃の王】\n気がつくと全てのキャラクターは、虚ろの荒野の荒廃の王(『MM』p.212)の身体の飢えにいる。全てのキャラクターはその虚無に巻き込まれ、5D6点の実ダメージを受ける。このダメージは軽減も移し替えも出来ない。荒廃の王があなたたちにどのような影響をもたらすかはGMの任意とせよ。", - ] - ), - "OT2" => MMTable.new( - "兆候表ver2.0", - [ - "【信念の喪失】\nあなたの精神があなたの過去を否定する。あなたは[出自]とそれにまつわる記憶をそのシーン中喪失する。特徴の効果は失われないが、其れを認識することは出来ない。", - "【昏倒】\nもうあなたは逸脱の重さに耐えることは出来ない。これが世界に刃向かった報いだ。あなたは[戦闘不能]になる。すでに[戦闘不能]なら、[死亡]する。", - "【肉体の崩壊】\n硝子の砕ける音がして、あなたも砕けていく。あなたは2D6+キャラクターレベル点の【HP】を失う。", - "【放心】\nあなたの心に大きな衝動が襲いかかる。心は伽藍に向かって歪み、瞳は色のない悪夢を見る。あなたはバッドステータスの[放心]を受ける。", - "【重圧】\nどこからかあなたを嘲笑する声がする。「こうして御標に背いた愚か者は、鎖に繋がれて責め苦を受けるのです」。あなたはバッドステータスの[重圧]を受ける。", - "【現在の喪失】\n現在持っているパートナーをひとつ喪失する。あなたは何かを失ったことには気がつくが、その人物のことは思い出せない。この効果はその演目の間、継続する。もちろん、新しく人間関係を構築することも出来ない。", - "【マヒ】\n異形化した肉体の変異に、魂が耐えられない。身体がしびれ、震えが止まらない。あなたはバッドステータスの[マヒ]を受ける。", - "【邪毒】\n意識の深いところで異形化が進行し、あなたの肉体を蝕みはじめる。あなたはバッドステータスの[邪毒]5を受ける。", - "【色彩の喪失】\nあなたの身体から色が消えて曇白へと近付いてゆく。服や化粧などで隠すことは出来るが、ばれれば異端尋問は免れまい。あなたの剥離値を+1D6する。(この効果では兆候表を振らない)", - "【理由の喪失】\nあなたの精神があなたの現在を否定する。あなたは[境遇]とそれにまつわる記憶をそのシーン中喪失する。特徴の効果は失われないが、其れを認識することはできない。", - "【存在の喪失】\nふいに、煙のようにあなたの姿がかき消えた。あなたの存在は一瞬、この世界から喪失する。あなたの剥離値を+1D6する。(この効果では兆候表を振らない)", - "【逸脱の対価】\n逸脱能力を用いた結果この表を振ることになった場合にのみ適用する(そうでないなら振り直し)。この表を振る原因となった逸脱能力はこのラウンド(戦闘中でないならシーン)中はもはや使用できない。", - "【逸脱の重責】\n世界から逸脱した結果、肉体が急激に異形化し身体を苛む。[上昇した剥離値×10]点の【HP】を失う。", - "【急激な異形化】\n身体の一部(耳、指、瞳)などが歪んだ獣のそれになる。しかし、そのことはあなたの力ともなる。【HP】を(キャラクターレベル)D6点回復する(回復できない状態でも回復する)。あなたの剥離値を+2する(この効果では兆候表を振らない)。", - "【精神の崩壊】\n身体が異形化し、世界から剥離していく。あなたの存在はぼやけてやがて消えていく。魂すらも。あなたは2D6+キャラクターレベル点の【MP】を失う。", - "【逸脱の呪い】\n逸脱能力を用いた結果この表を振ることになった場合にのみ適用する(そうでないなら振り直し)。この表を振る原因となった逸脱能力は、この演目の間あなたが使用する場合、剥離値の上昇を2倍に数える。", - "【剥離の伝播】\n世界の歪みは広がり、拡散し、誰も逃れられない。あなたの剥離値が、シーンに登場しているPCで最も剥離値の高いPCと同じになる。あなたが最も高いなら、最も低いPCの剥離値があなたと同じになる(複数登場している場合はランダムに選ぶこと)。", - "【運命の恩寵】\n恩寵、あるいは悲劇への対価か。あなたは逸脱能力をその演目中に限り、更に一種類使用できるようになる(任意に選択せよ)。選択した逸脱能力の剥離値上昇は+1される。", - ] - ), - "DTO" => MMTable.new( - "歪み表(野外)", - [ - "【死の蔓延】\n木は枯れて奇っ怪な姿になり、花はしおれる。大気は淀んだ腐敗臭を放ち、岩はねじくれる。すべてのものが死の気配に包まれる", - "【歪曲御標】\n歪んだ御標が下される。歪み表(『MM』P263)を振ること。", - "【季節変容】\n季節が突如として変化する。1D6し、1なら春、2なら夏、3なら秋、4なら冬、5なら四季が狂ったように変動し、6ならGMの任意とせよ。急激な季節の変化は、自然と人々の健康を痛めつける。", - "【ほつれ】\n世界がひび割れ、ほつれが現出する。ほつれに触れたものは虚無に飲み込まれ、帰ってくることはない。", - "【異形化】\n周囲の動物たちが歪みによって異形と化し、襲撃してくる。異形の群れ(『IZ』P237)×1D6体と戦闘になっても良い。", - "【凍結世界】\n気温が異様に低下し、すべてのものが凍結する。また、凍結した世界の中で戦闘する全てのキャラクターは、防御判定にファンブルした場合狼狽を受ける。", - "【天候暴走】\n大嵐、竜巻、吹雪、酷暑などの異常気象が発生する。船は木の葉のように揺れ、獣は恐怖に騒ぐ。このシーン中に行うすべての移動はその距離が半減する。", - "【天の怒り】\n歪みによってあり得ないほどの異常気象が発生する。全てを吹き飛ばす風が吹き、雷鳴が唸る。このシーン中、あらゆるキャラクターは飛行状態になることは出来ない。", - "【迷いの森】\n周囲の景色や地形が地図や知識にあるものと全く違っている。どこかに向かっているなら【知覚】難易度12の判定に失敗した場合、迷った結果として【MP】2D6点を失う", - "【死の世界】\n世界は異様に美しくなる。水には一匹の魚もなく、藪には一匹の虫もいない。空に鳥は飛ばない。不気味な静寂が世界を包む。", - "【影絵芝居】\nそこかしこの暗闇から、紡ぎ手たちの(あるいは登場するNPCの)不吉な運命を暗示する歌声が聞こえてくる。それは異形の声や虚無の軋みの音、あるいは歪みの幻影かもしれない。", - "【色彩浸食】\n世界が漆黒と曇白に塗り分けられる。シーン内に登場するあらゆる無生物と生物は、白と黒のモノトーンの存在になる。紡ぎ手は【縫製】難易度8の判定に成功すれば、この影響を受けない。", - "【濃霧】\nたとえそこが地底であっても、曇白の濃霧があたりを包み込む。手を伸ばしたら、その指先が見えないほどだ。濃霧内での攻撃は、敵との距離を2倍に計算する。", - "【異形出現】\nほつれの中から、おぞましく人を襲うことしか考えぬ異形の群れが現れ、恐怖のうちに居合わせた人々を襲撃する。GMが望むなら、異形の群れ(『IZ』P237)×1D6と戦闘を行わせても良い。また、GMは状況に応じて別のエネミーを選択しても良い。", - "【鉱脈露出】\nあり得ないほどの豊富な鉱脈が露出する。黄金、宝石、海ならば珊瑚などだ。人々は目の色を変えて鉱脈に群がる。それによってもたらされる混乱についてはGMが決定せよ。", - "【虚無現出】\nほつれの中から虚無がしみ出す。シーンに登場しているエキストラは虫一匹にいたるまで消滅し、二度と現れない。", - "【汚染世界】\n水は毒を含み、大気は有毒の霧に包まれる。登場している全てのキャラクターは【体力】難易度10の判定を行い、失敗すると邪毒5を受ける。エキストラがどうなるかはGMが決定するが、治療されなければ早晩死亡するだろう。", - "【地域消滅】\n演目の舞台となっている地域そのものが消えてなくなる。影響下にあるすべてのキャラクター(伽藍を含む)は【縫製】難易度10の判定に成功すれば脱出できる。失敗した場合即座に死亡する。エキストラは無条件で死亡する。", - ] - ), - "DTS" => MMTable.new( - "歪み表(海)", - [ - "【海域汚染】\n赤潮が発生する。あるいは海水そのものが毒に変わる。登場している全てのキャラクターは【体力】難易度10の判定を行い、失敗すると邪毒5を受ける。エキストラがどうなるかはGMが決定するが、治療されなければ早晩死亡するだろう。", - "【色彩浸食】\n世界が漆黒と曇白に塗り分けられる。シーン内に登場するあらゆる無生物と生物は、白と黒のモノトーンの存在になる。紡ぎ手は【縫製】難易度8の判定に成功すれば、この影響を受けない。", - "【異形の海】\n海の生物や海守りたちが異形化する。戦闘となる。GMは適切と思われるエネミーを配置すること。", - "【海底火山】\n海底火山が噴火する。海水は熱されて周囲の生物は次々と死滅し、海守りたちも苦しむ。海からのしぶきは熱湯となる。具体的な効果はGMが決定せよ。", - "【歪曲御標】\n歪んだ御標が下される。歪み表(『MM』P263)を振ること。", - "【曇白の海】\n海の水が曇白になる。虚無への甘い誘いに満ちた海に触れたものは、考えることをやめ、意思なき人形のようになり、いずれ溶けて消滅してしまう。この歪みが1D6シーン(または1D6日)以内に消えない場合、すべてのキャラクターは(PCも含め)エキストラとなって二度と自我を取り戻すことはない。GMは何らかの理由で効果を受けないキャラクターを設定しても良い。", - "【黒い海】\n海の水が漆黒に染まっていく。海の中にいると一寸先も見えない、[種別:射撃]の武器による攻撃のファンブル値を+5する。", - "【壁面崩壊】\n海の壁面が崩壊し、ヒビが入る。ヒビを何とかすることができなければ、水圧によって1D6シーン(または1D6時間)後には崩壊し、海があふれ出すことになる。", - "【固形化】\n海の水が固形化する。その中にいるものは氷で硬められたように身動きが取れず、ただ死を待つのみ。エキストラは完全に動けなくなる。エネミーやPCは等しく重圧&捕縛を受ける。この効果は歪みが引き受けられるまでの間、毎シーン&毎ラウンドの開始後に再度適用される。", - "【氾濫】\n海の水が急激に増幅し、水槽からあふれ出す。シーンに登場している海守りのクラスを持たないキャラクターの【HP】は即座に0になる。ただし《大河の導き》の効果を受けているキャラクターと《ミズモノ》を取得しているキャラクターは3D6点の【HP】を消費することでこの効果を打ち消せる。", - "【塩の雪】\n空から雪のように塩が降ってくる。人々は初めは喜ぶが、降り続ける雪は田畑を荒らし、人の身にも害を及ぼす。それでも塩は降り止まない。", - "【真水化】\n海が真水になる。人間の中には喜ぶ者もいるが、海の生物たちにとっては死を意味する。", - "【海流消失】\n海の海流が消える。海守りの力を持ってしても潮を起こすことはできない。よどんた海水は腐敗し、海の恩恵を受けて暮らす者たちは次々に病にかかる。", - "【崩れる世界】\n海の周囲(海の内部ではなく、その外部)で爆発的にほつれが広がっていく。その規模はGMが決定するが、遠からず住人たちは死を迎えることになるだろう。", - "【酒の海】\n海の水が酒になる。水を飲んだすべての者は酔っ払い理性を失う。その様はまるで暗黒期に滅亡した“怠惰の古都”を彷彿とさせる。", - "【冷たき海】\n海の水が魂を凍らせるような冷たさになる。水に触れた者は暗く排他的で疑心暗鬼になり、互いを憎悪するようになる。また、全てのキャラクターは海水に触れている限り、毎シーン【MP】を2D6点失う。", - "【大渦巻き】\n巨大な大渦が出現する。渦の中心は虚無に通じており、海守りの力を持ってしても渦を消すことはできない。海中にいる全てのキャラクターは2D6を振り、出た目に等しい【HP】を失う。ただし出目が2の場合、即座に【HP】が0となる。", - "【海の終焉】\n海を維持している生命の力そのものが消える。水は鎖、魚はしに、波は薙ぐ。あらゆる生命は死ぬ。", - ] - ), - "EDT" => Table.new( - "永劫消失表", - "2D6", - [ - "【無慈悲な現実】\n願いも希望も叶いはしない。伽藍を倒すことができた、それが精一杯の、あなたたちに許された幸福だったのだ。意識が、虚無へと呑まれ消えていく……。\n> ダイスの後振りは行なえず、伽藍となる", - "【命の消失】\n虚無はあなたの命を飲み込んでいった。身体が糸の切れた操り人形のように崩折れ、地面へと倒れ伏す。これが、あなたの人生の終わりなのだろうか………\n> あなたは死亡する。PCとして生き続けることを望む場合、キャラクターの成長の際にクラス:屍人(『TM』P90)を取得すること。", - "【魂の消失】\nあなたの心に虚無が忍び寄る。まったく虚ろでからっぽな絶望。まだ、あなたは伽藍になったりなどしない。まだ……今は。\n> 【精神力】を-[演者レベル]D6する(下限値1)", - "【肉体の消失】\n伽藍に捥がれたか、ほつれに呑まれたか。すべてを消失させる虚無はあなたの身体をも食らっていった。肉体の一部を失いつつも、あなたは辛うじて命を繋ぐことができたのだ。\n> 【耐久値】を-[演者レベル]D6する(下限値1)", - "【思い人の消失】\n大切な誰かがいた。愛か憎悪か、あなたの人生に刻まれた無二の存在だ。だが、思いのすべては虚無に呑まれて消えてしまった。例え相手の顔を覚えていることができたとしても、胸焦がす思いはもうないのだ。\n> 固定化しているパートナーからひとりを選択し消失する。演目中に喪失した固定化しているパートナーがいる場合は、優先的に代償とすること。", - "【境遇の消失】\nなぜ紡ぎ手となったのか……大切ななにかがあったはずだ。自分の人生を賭けるような、大切な、“なにか”が。けれど、もう思い出すことはできない。二度と、思い出せないだろう。\n> 境遇を消失する(特性も使用不可)", - "【出自の消失】\nあなたがどこから来たのか、何者であったのか。故郷や家族の思い出が虚無の向こうに消えていく。もはや永久に、思い出すことはできないだろう。\n> 出自を消失する(特性も使用不可)", - "【虚無の爪痕】\n四肢に激痛が走った。あなたの身体には虚無の爪痕がくっきりと残り、消えることなく身体を蝕み続けるだろう。\n> 【行動値】を-5する(下限値1)", - "【虚無の浸食】\n鼓動が不吉なリズムを刻む。身体が、魂が虚無に侵され消え失せてしまうような恐ろしい感覚。たとえ目に見えずとも、着実にあなたは虚無へ近づいている……。\n> アフタープレイで基本剥離値を+3する(上限値9)。代償の支払いが可能であるかは剥離チェック時に確定すること。", - "【異形化の発現】\nあなたの身体に禍々しい、色なき変容が現れた。ついに異形化がはじまったのだ。人々は恐れの混じった目で、君を石持て追うだろう。\n> あなたは異形となる。PCとして生き続けることを望む場合、キャラクター成長の際にクラス:異形(『MM』P116)を取得すること。", - "【一念の奇跡】\n奇跡は起きた。想いが神へと届いたか、それとも紡ぎ手の一念か、その身のなにを失うこともなく、あなたはこの戦いを終えることを許されたのだ。\n> 代償は発生しない", - ] - ), - "DTM" => MMTable.new( - "歪み表(館・城)", - [ - "【ほつれ】\n世界がひび割れ、ほつれが現出する。ほつれに触れたものは虚無に飲み込まれ、帰ってくることはない。", - "【色彩浸食】\n世界が漆黒と曇白とに塗り分けられる。シーン内に存在するあらゆる無生物と生物は、白と黒のトーンの存在となる。この効果は歪みをもたらした異形の死によって解除される。", - "【狂える色時計】\n柱時計や時計塔が狂ったように時を刻む。歪みを引き受けなかった場合、シーン内に存在するあらゆる無生物と生物は2D6年の歳月が過ぎたものとして振る舞う。生物なら老化する。", - "【凶月】\n館の窓から曇白の月が見える。禍々しい月の光に照らされた館にいるすべての人物は、心を虚無に囚われ自ら死へと向かいはじめる。", - "【無限図書館】\nどこまでも続く図書館。そこにある本が、知識への誘惑を囁いてくる。【意志】難易度14の判定に失敗した場合、1D6時間を浪費し、同じだけの【MP】を失う。", - "【曇白の部屋】\n曇白の部屋に閉じ込められる。心が朽ち始め、異形へと近づいていく。この歪みが1D6シーン(または1D6時間)以内に消えない場合、すべてのキャラクターは(PCも含め)エキストラとなって二度と自我を取り戻すことはない。", - "【悪しき鏡】\n鏡台や手鏡、鏡の部屋などから、鏡の中の自分がにやにやとこっちを見ている。すべての紡ぎ手の行なう判定のファンブル値を+3する。", - "【歪みの音色】\n館内に人を不安にさせる音楽が響きはじめる。心はかき乱され、自分以外の誰もが化け物の姿に見えはじめる。【縫製】難易度8の判定に失敗したキャラクターは即座に【MP】が0になる。", - "【暗闇の回廊】\n光をも塗りつぶす漆黒の闇が満ち、蝋燭の灯がすべて消える。何らかの手段で魔法的な光をPCたちが有していない限り、射撃攻撃の達成値は-5される。何らかの暗視能力や強力な嗅覚などを持つ、とGMが判断したキャラクターはこの効果を受けない。", - "【動く植物】\n屋敷の植物、鳥や薔薇などが動き出し、襲いかかってくる。【反射】難易度12の判定に失敗すると、〈斬〉5D6のダメージを受ける。", - "【黒い影】\n歪みによって、館に(あるいは館の建っている場所に)住んでいた過去の人物たちが影となって蘇り、館内を徘徊する。【反射】難易度10の判定に失敗したPCは発見され、【MP】4D6点となる。", - "【凶暴な獣】\n館に飼われている猛獣や、屋敷に住み着くネズミや鳥などが異形化し襲いかかってくる。GMは適切なエネミーを登場させ、戦闘を行なってもよい。", - "【牙持つ部屋】\n部屋が歪み、入ってきたものを食らおうと牙を剥く。室内にいるすべてのキャラクターは2D6を振り、出た目に等しい【HP】を失う。ただし出目が2の場合、即座に【HP】が0となる。", - "【灼熱の暖炉】\n暖炉から炎が噴き出し襲いかかる。登場しているキャラクターは【反射】難易度12の判定を行ない、失敗すると【HP】4D6点を失う。", - "【無限回廊】\n果てしなく続く通廊に迷い込む。どこまで行っても同じ部屋だ。1D6時間【あるいはGMが定めた時間】を浪費し、同じだけの【HP】を失う。", - "【奇妙な人形】\n登場キャラクターと同じ顔の人形かからくりが現われ話しかけてくる。幻影か、そのように作られているのかは歪みを引き受けるまでわからない。登場しているPCはシーン終了時に【MP】を2D6点失う。", - "【動く家具】\n椅子や戸棚、シャンデリアなどの家具、あるいはからくりが歪みの影響で動き襲いかかってくる。GMは任意のエネミーを登場させ、戦闘を行なってもよい。", - "【炎上】\n館が炎上をはじめる。ここに留まっていれば、問答無用で死ぬことになるだろう。", - ] - ), - }.freeze - - setPrefixes(['\d+D6.*'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/MonotoneMuseum_Korean.rb b/src/src_bcdice/diceBot/MonotoneMuseum_Korean.rb deleted file mode 100644 index d22376e79..000000000 --- a/src/src_bcdice/diceBot/MonotoneMuseum_Korean.rb +++ /dev/null @@ -1,299 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class MonotoneMuseum_Korean < DiceBot - # ゲームシステムの識別子 - ID = 'MonotoneMuseum:Korean' - - # ゲームシステム名 - NAME = '모노톤 뮤지엄' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Korean:모노톤 뮤지엄' - - # ダイスボットの使い方 - HELP_MESSAGE = <=t[c,f] -  수정치m,목표치t,크리티컬치c,펌블치f로 판정 굴림을 행합니다. -  크리티컬, 펌블치는 생략가능합니다. ([]자체를 생략가능) -  자동성공, 자동실패, 성공, 실패를 자동표기합니다. -・각종표 - ・감정표 ET/감정표 2.0 ET2 - ・징조표  OT - ・일그러짐표 DT/일그러짐표ver2.0 DT2 - ・세계왜곡표  WDT -・D66다이스 있음 -INFO_MESSAGE_TEXT - - setPrefixes(['2D6.*', 'ET', 'ET2', 'OT', 'DT', 'DT2', 'WDT']) - - def initialize - super - - @sendMode = 2 - @d66Type = 1 - @sortType = 1 - end - - def rollDiceCommand(command) - result = checkRoll(command) - return result unless result.empty? - - debug("판정롤이 아닙니다") - - debug("각종표로써 처리") - return rollTableCommand(command) - end - - def checkRoll(string) - output = '' - - crit = 12 - fumble = 2 - - return output unless /^2D6([\+\-\d]*)>=(\d+)(\[(\d+)?(,(\d+))?\])?$/i =~ string - - modText = Regexp.last_match(1) - target = Regexp.last_match(2).to_i - crit = Regexp.last_match(4).to_i if Regexp.last_match(4) - fumble = Regexp.last_match(6).to_i if Regexp.last_match(6) - - mod = 0 - mod = parren_killer("(0#{modText})") unless modText.nil? - - total, dice_str, = roll(2, 6, @sortType && 1) - total_n = total + mod.to_i - - output = "#{total}[#{dice_str}]+#{mod} → #{total_n}" - - if total >= crit - output += " > 자동 성공" - elsif total <= fumble - output += " > 자동 실패" - elsif total_n >= target - output += " > 성공" - else - output += " > 실패" - end - - output = "(#{string}) > #{output}" - - return output - end - - def rollTableCommand(command) - output = '' - type = "" - - case command - when /ET2/i - type = "감정표2.0" - output, total_n = mm_emotion_table_ver2() - when /ET/i - type = "감정표" - output, total_n = mm_emotion_table() - when /OT/i - type = "징조표" - output, total_n = mm_omens_table() - when /DT2/i - type = "일그러짐표ver2.0" - output, total_n = mm_distortion_table_ver2() - when /WDT/i - type = "세계왜곡표" - output, total_n = mm_world_distortion_table() - when /DT/i - type = "징조표" - output, total_n = mm_distortion_table() - end - - output = "#{type}(#{total_n}) > #{output}" if output != '' - - return output - end - - # 감정표(d66)[ET] - def mm_emotion_table - table = [ - "【신뢰(信頼)】", - "【유위(有為)】", - "【우정(友情)】", - "【순애(純愛)】", - "【자애(慈愛)】", - "【동경(憧れ)】", - "【공포(恐怖)】", - "【위협(脅威)】", - "【증오(憎悪)】", - "【불쾌감(不快感)】", - "【식상(食傷)】", - "【혐오(嫌悪)】", - "【호의(好意)】", - "【비호(庇護)】", - "【유지(遺志)】", - "【회고(懐旧)】", - "【진력(尽力)】", - "【충성(忠誠)】", - "【불안(不安)】", - "【모멸(侮蔑)】", - "【질투(嫉妬)】", - "【열등감(劣等感)】", - "【우월감(優越感)】", - "【연민(憐憫)】", - "【존경(尊敬)】", - "【감복(感服)】", - "【모정(慕情)】", - "【동정(同情)】", - "【심취(傾倒)】", - "【호기심(好奇心)】", - "【편애(偏愛)】", - "【집착(執着)】", - "【회개(悔悟)】", - "【경계심(警戒心)】", - "【적개심(敵愾心)】", - "【망각(忘却)】", - ] - return get_table_by_d66(table) - end - - # 감정표2.0(d66)[ET2] - def mm_emotion_table_ver2 - table = [ - "【플레이어의 임의】", - "【동일시(同一視)】", - "【연대감(連帯感)】", - "【행복감(幸福感)】", - "【친근감(親近感)】", - "【성의(誠意)】", - "【회고(懐旧)】", - "【동향(同郷)】", - "【동지(同志)】", - "【악연(くされ縁)】", - "【기대(期待)】", - "【호적수(好敵手)】", - "【빌려(借り)】", - "【대여(貸し)】", - "【헌신(献身)】", - "【의형제(義兄弟)】", - "【어린 아이(幼子)】", - "【친애(親愛)】", - "【소외감(疎外感)】", - "【치욕(恥辱)】", - "【연민(憐憫)】", - "【격의(隔意)】", - "【혐오(嫌悪)】", - "【시의심(猜疑心)】", - "【염기(厭気)】", - "【불신감(不信感)】", - "【원한(怨念)】", - "【비애(悲哀)】", - "【악의(悪意)】", - "【살의(殺意)】", - "【패배감(敗北感)】", - "【헛수고감(徒労感)】", - "【뒷 마음(黒い泥)】", - "【분만(憤懣)】", - "【무관심(無関心)】", - "【플레이어의 임의】", - ] - return get_table_by_d66(table) - end - - # 징조표(2d6)[OT] - def mm_omens_table - table = [ - "【신념의 상실】\n[출신]을 상실한다. 특징은 없어지지 않는다.", - "【졸도】\n[전투불능]이 된다.", - "【육체의 붕괴】\n2D6 점의 HP를 잃는다.", - "【방심】\n배드 스테이터스[방심]을 받는다.", - "【중압】\n배드 스테이터스[중압]을 받는다.", - "【현재의 상실】\n현재 가지고 있는 파트너 한 명을 상실한다.", - "【마비】\n배드 스테이터스[마비]를 받는다.", - "【사독】\n배드 스테이터스[사독] 5를 받는다.", - "【색채의 상실】\n칠흑、묵백、투명화……. 그 두려운 색채의 상실은 틀림없는 이형화의 편린이다.", - "【이유의 상실】\n[처지]를 상실한다. 특징은 없어지지 않는다.", - "【존재의 상실】\n당신의 존재는 일순간, 이 세계로부터 소실한다.", - ] - - return get_table_by_2d6(table) - end - - # 일그러짐표(2D6)[DT] - def mm_distortion_table - table = [ - "【세계소실】\n연극의 무대가 모두 없어진다. 무대에 남아있는 것은 너희들과 이형, 가람뿐이다. 클라이맥스 페이즈로.", - "【생명감소】\n연극의 무대에 있는 거리나 나라로부터 동물이나 인간의 모습이 적어진다. 특히 아이들의 모습을 볼 수 없다.", - "【공간소실】\n연극의 무대 일부(건물 한 개 동 정도)가 소실한다.", - "【날씨악화】\n격렬한 뇌우에 휩쓸린다.", - "【생명번무】\n씬 내에 식물이 폭발적으로 증가하고, 건물은 가시나무의 가시와 덩굴풀에 파묻힌다.", - "【색채상실】\n세계로부터 색채가 없어진다. 방적공(PC)이외의 사람들은 세계의 모든 것이 모노크롬처럼 되었다고 인식한다.", - "【신권음악】\n아름답지만 불안을 느끼는 소리가 흐른다. 소리는 사람들에게 스트레스를 주어 거리의 분위기가 악화하고 있다.", - "【경면세계】\n연극의 무대에 존재하는 모든 문자는 거울처럼 역전된다.", - "【시공왜곡】\n밤낮이 역전한다. 낮이면 밤이 되고, 밤이면 아침이 된다.", - "【존재수정】\nGM이 임의로 결정한 NPC의 성별이나 연령, 외관이 변화한다.", - "【인체소실】\n씬 플레이어의 파트너로 되어있는 NPC가 소실한다. 어느 NPC가 소실되는지는 GM이 결정한다.", - ] - return get_table_by_2d6(table) - end - - # 일그러짐표ver2.0(d66)[DT2] - def mm_distortion_table_ver2 - table = [ - "【색채침식】\n씬 내에 존재하는 모든 무생물과 생물은 흰색과 흑백으로 이루어진 모노톤의 존재가 된다. 방적공은 【봉제】 난이도 8의 판정에 성공하면 이 영향을 받지 않는다. 이 효과는 일그러짐을 가져온 이형의 죽음에 의해서 해제된다.", - "【색채침식】\n씬 내에 존재하는 모든 무생물과 생물은 흰색과 흑백으로 이루어진 모노톤의 존재가 된다. 방적공은 【봉제】 난이도 8의 판정에 성공하면 이 영향을 받지 않는다. 이 효과는 일그러짐을 가져온 이형의 죽음에 의해서 해제된다.", - "【허무출현】\n일그러짐 중에서 허무가 배어 나온다. 씬에 등장하고 있는 엑스트라는 벌레 한 마리에 이르기까지 소멸해서 두 번 다시 나타나지 않는다.", - "【허무출현】\n일그러짐 중에서 허무가 배어 나온다. 씬에 등장하고 있는 엑스트라는 벌레 한 마리에 이르기까지 소멸해서 두 번 다시 나타나지 않는다.", - "【계절변용】\n계절이 갑자기 변화한다. 1D6을 굴려서 1이라면 봄, 2라면 여름, 3이라면 가을, 4라면 겨울, 5라면 플레이하고 있는 현재의 계절, 6이라면 GM의 임의대로 변한다.", - "【계절변용】\n계절이 갑자기 변화한다. 1D6을 굴려서 1이라면 봄, 2라면 여름, 3이라면 가을, 4라면 겨울, 5라면 플레이하고 있는 현재의 계절, 6이라면 GM의 임의대로 변한다.", - "【일그러짐】\n세계에 금이 가서 일그러짐이 출현한다. 일그러짐에 접한 것은 허무에 삼켜져 돌아올 일은 없다.", - "【일그러짐】\n세계에 금이 가서 일그러짐이 출현한다. 일그러짐에 접한 것은 허무에 삼켜져 돌아올 일은 없다.", - "【이형화】\n씬 내에 모든 엑스트라는 어떠한 이형화를 받는다. 이것을 치유 할 방법은 없다. 이형의 무리(『인카르챤드』 P.237)×1D6와 전투시켜도 좋다.", - "【이형화】\n씬 내에 모든 엑스트라는 어떠한 이형화를 받는다. 이것을 치유 할 방법은 없다. 이형의 무리(『인카르챤드』 P.237)×1D6와 전투시켜도 좋다.", - "【죽음의 행진】\n사람들의 마음에 허무가 퍼져, 불안과 절망으로 채워져 간다. 피할 수 없는 공포로부터 피하려고 사람들은 스스로 혹은 무의식중에 죽음을 향해 행동을 시작한다.", - "【죽음의 행진】\n사람들의 마음에 허무가 퍼져, 불안과 절망으로 채워져 간다. 피할 수 없는 공포로부터 피하려고 사람들은 스스로 혹은 무의식중에 죽음을 향해 행동을 시작한다.", - "【시간가속】\n씬 내에 존재하는 모든 무생물과 생물은 2D6년만큼 시간이 가속한다. 생물이라면 노화한다. 방적공은 【봉제】 난이도 8의 판정에 성공하면 이 영향을 받지 않는다.", - "【시간가속】\n씬 내에 존재하는 모든 무생물과 생물은 2D6년만큼 시간이 가속한다. 생물이라면 노화한다. 방적공은 【봉제】 난이도 8의 판정에 성공하면 이 영향을 받지 않는다.", - "【시간역류】\n씬 내에 존재하는 모든 무생물과 생물은 2D6년만큼 시간이 역류한다. 생물이라면 젊어진다. 제조년/생년보다 앞으로 돌아왔을 때는 허무에 삼켜져서 소멸한다. 방적공은 【봉제】 난이도 8의 판정에 성공하면 이 영향을 받지 않는다.", - "【시간역류】\n씬 내에 존재하는 모든 무생물과 생물은 2D6년만큼 시간이 역류한다. 생물이라면 젊어진다. 제조년/생년보다 앞으로 돌아왔을 때는 허무에 삼켜져서 소멸한다. 방적공은 【봉제】 난이도 8의 판정에 성공하면 이 영향을 받지 않는다.", - "【재해도래】\n폭풍우, 화산분화, 홍수 등, 흐트러짐에 의해서 어지럽혀진 자연이 사람들에게 송곳니를 드러낸다.", - "【재해도래】\n폭풍우, 화산분화, 홍수 등, 흐트러짐에 의해서 어지럽혀진 자연이 사람들에게 송곳니를 드러낸다.", - "【인심황폐】\n일그러짐에 의해 초래된 불안과 공포는 사람들을 자포자기하게 한다.", - "【인심황폐】\n일그러짐에 의해 초래된 불안과 공포는 사람들을 자포자기하게 한다.", - "【평온무사】\n아무것도 일어나지 않는다. 방적공들은 등골이 오싹할 정도의 공포를 느낀다.", - "【평온무사】\n아무것도 일어나지 않는다. 방적공들은 등골이 오싹할 정도의 공포를 느낀다.", - "【역병만연】\n등장하고 있는 캐릭터는 【육체】 난이도 8의 판정을 하여 실패하면 [사독]5를 받는다. 병의 치료법의 유무 등에 대해서는 GM이 결정한다. 고민된다면 가람을 쓰러트리면 병도 소멸한다, 라고 하라.", - "【역병만연】\n등장하고 있는 캐릭터는 【육체】 난이도 8의 판정을 하여 실패하면 [사독]5를 받는다. 병의 치료법의 유무 등에 대해서는 GM이 결정한다. 고민된다면 가람을 쓰러트리면 병도 소멸한다, 라고 하라.", - "【이단심문】\n이단심문의 시기가 가깝다. PC들이 방적공인 것이 알려진다면, PC들도 화형대로 보내지게 될 것이다.", - "【이단심문】\n이단심문의 시기가 가깝다. PC들이 방적공인 것이 알려진다면, PC들도 화형대로 보내지게 될 것이다.", - "【일그러짐출현】\n흐트러짐의 파편으로부터 일그러짐이 나타나 사람들을 습격한다. 병마(『인카르챤드』 P.238)×2와 전투를 하게 해도 좋다. 또, 다른 이형이라도 좋다.", - "【일그러짐출현】\n흐트러짐의 파편으로부터 일그러짐이 나타나 사람들을 습격한다. 병마(『인카르챤드』 P.238)×2와 전투를 하게 해도 좋다. 또, 다른 이형이라도 좋다.", - "【악몽출현】\n씬 내의 모든 사람은 무서운 공포의 꿈을 꾼다. 마음 약한 사람들은 가람에 매달리던가, 이단자들을 화형에 처하는 것으로 이 꿈에서 벗어날 수 있을 거로 생각할 것이다.", - "【악몽출현】\n씬 내의 모든 사람은 무서운 공포의 꿈을 꾼다. 마음 약한 사람들은 가람에 매달리던가, 이단자들을 화형에 처하는 것으로 이 꿈에서 벗어날 수 있을 거로 생각할 것이다.", - "【쥐의 연회】\n다수의 쥐의 떼가 출현하여 곡물을 들쑤셔 먹고 역병을 흩뿌린다. 대형 쥐(『MM』 P.240)×1D6와 전투를 하게 해도 좋다.", - "【쥐의 연회】\n다수의 쥐의 떼가 출현하여 곡물을 들쑤셔 먹고 역병을 흩뿌린다. 대형 쥐(『MM』 P.240)×1D6와 전투를 하게 해도 좋다.", - "【왜곡길잡이표】\n삐뚤어진 길잡이표가 내려진다. 일그러짐표(『MM』 P.263)를 굴릴 것.", - "【왜곡길잡이표】\n삐뚤어진 길잡이표가 내려진다. 일그러짐표(『MM』 P.263)를 굴릴 것.", - "【지역소멸】\n연극의 무대가 되는 지역 그 자체가 사라져서 없어진다. 영향 아래에 있는 모든 캐릭터(가람을 포함한다)는 【봉제】 난이도 10의 판정에 성공하면 탈출할 수 있다. 실패했을 경우 그 즉시 사망한다. 엑스트라는 무조건 사망한다.", - "【지역소멸】\n연극의 무대가 되는 지역 그 자체가 사라져서 없어진다. 영향 아래에 있는 모든 캐릭터(가람을 포함한다)는 【봉제】 난이도 10의 판정에 성공하면 탈출할 수 있다. 실패했을 경우 그 즉시 사망한다. 엑스트라는 무조건 사망한다.", - ] - return get_table_by_d66(table) - end - - # 世界歪曲表(2D6)[WDT] - def mm_world_distortion_table - table = [ - "【소실】\n세계로부터 보스 캐릭터가 소거되어 소멸한다. 엔딩 페이즈로 직행.", - "【자기희생】\n표를 굴린 PC의 파트너로 되어있는 NPC 중 1명이 사망한다. 표를 굴린 PC의 HP와 MP를 완전회복시킨다.", - "【생명탄생】\n그대들은 대지 대신에 무엇인가의 생물의 내장 위에 서있다. 등장하고 있는 캐릭터 전원에게 [사독]5를 준다.", - "【왜곡확대】\n씬에 등장하고 있는 방적공이 아닌 NPC 하나가 칠흑의 흉수(『MM』 P.240)로 변신한다.", - "【폭주】\n“흐트러짐”이 대량으로 생겨나 씬에 등장하고 있는 모든 캐릭터의 박리치를 +1 한다.", - "【환상세계】\n주위의 공간이 삐뚤어져 파괴적인 에너지가 충만하다. 다음에 행해지는 대미지 산출에 +5D6한다.", - "【변조】\n오른쪽은 왼쪽으로, 빨강은 파랑으로, 위는 아래로, 일그러짐이 신체의 움직임을 방해한다. 등장하고 있는 캐릭터 전원에게 [낭패]를 준다.", - "【공간소실】\n연극의 무대가 연기와도 같이 소실된다. 압도적인 상실감에 의해 등장하고 있는 캐릭터 전원에게 [방심]을 준다.", - "【생명소실】\n다음 씬 이후, 엑스트라는 일절 등장할 수 없다. 현재의 씬의 엑스트라에 관해서는 GM이 결정한다.", - "【자기사(自己死)】\n가장 박리치가 높은 PC 하나가 [전투불능]이 된다. 복수의 PC가 해당했을 때는 GM이 랜덤으로 결정한다.", - "【세계사(世界死)】\n세계의 파멸. 난이도 12의 【봉제】 판정에 성공하면 파멸로부터 회피할 수 있다. 실패하면 행방불명이 된다. 엔딩 페이즈로 직행.", - ] - - return get_table_by_2d6(table) - end -end diff --git a/src/src_bcdice/diceBot/Nechronica.rb b/src/src_bcdice/diceBot/Nechronica.rb deleted file mode 100644 index ad0a5945b..000000000 --- a/src/src_bcdice/diceBot/Nechronica.rb +++ /dev/null @@ -1,210 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/table' - -class Nechronica < DiceBot - # ゲームシステムの識別子 - ID = 'Nechronica' - - # ゲームシステム名 - NAME = 'ネクロニカ' - - # ゲームシステム名の読みがな - SORT_KEY = 'ねくろにか' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if total >= 11 - " > 大成功" - elsif total >= target - " > 成功" - elsif dice_list.count { |i| i <= 1 } == 0 - " > 失敗" - elsif dice_list.size > 1 - " > 大失敗 > 使用パーツ全損" - else - " > 大失敗" - end - end - - def nechronica_check(string) - output = '1' - - debug("nechronica_check string", string) - - unless /(^|\s)S?((\d+)[rR]10([\+\-\d]+)?(\[(\d+)\])?)(\s|$)/i =~ string - debug("nechronica_check unmuched") - return output - end - - string = Regexp.last_match(2) - - dice_n = 1 - dice_n = Regexp.last_match(3).to_i if Regexp.last_match(3) - - battleMode = Regexp.last_match(6).to_i - - modText = Regexp.last_match(4) - mod = parren_killer("(0#{modText})").to_i - - # 0=判定モード, 1=戦闘モード - isBattleMode = (battleMode == 1) - debug("nechronica_check string", string) - debug("isBattleMode", isBattleMode) - - diff = 6 - total_n = 0 - - _, dice_str, _n1, _cnt_max, n_max = roll(dice_n, 10, 1) - - total_n = n_max + mod - - output = "#{@nick_e}: (#{string}) > [#{dice_str}]" - if mod < 0 - output += mod.to_s - elsif mod > 0 - output += "+#{mod}" - end - - dice = dice_str.split(',').map(&:to_i) - dice.map! { |i| i + mod } - - dice_str = dice.join(",") - output += " > #{total_n}[#{dice_str}]" - - output += check_nD10(total_n, dice_n, dice, :>=, diff) - - if isBattleMode - hit_loc = getHitLocation(total_n) - if hit_loc != '1' - output += " > #{hit_loc}" - end - end - - return output - end - - def getHitLocation(dice) - output = '1' - - debug("getHitLocation dice", dice) - return output if dice <= 5 - - output = '' - table = [ - '防御側任意', - '脚(なければ攻撃側任意)', - '胴(なければ攻撃側任意)', - '腕(なければ攻撃側任意)', - '頭(なければ攻撃側任意)', - '攻撃側任意', - ] - index = dice - 6 - - addDamage = "" - if dice > 10 - index = 5 - addDamage = "(追加ダメージ#{dice - 10})" - end - - output = table[index] + addDamage - - return output - end - - TABLES = { - 'NM' => Table.new( - '姉妹への未練表', - '1D10', - [ - '【嫌悪】[発狂:敵対認識]敵に命中しなかった攻撃は全て、射程内にいるなら嫌悪の対象に命中する。(防御側任意)', - '【独占】[発狂:独占衝動]戦闘開始時と終了時に1つずつ、対象はパーツを選んで損傷する。', - '【依存】[発狂:幼児退行]最大行動値が減少する(-2)', - '【執着】[発狂:追尾監視]戦闘開始時と終了時に1つずつ、対象はあなたへの未練に狂気点を得る。', - '【恋心】[発狂:自傷行動]戦闘開始時と終了時に1つずつ、あなたはパーツを選んで損傷する。', - '【対抗】[発狂:過剰競争]戦闘開始時と終了時に1つずつ、あなたは任意の未練に狂気点を追加で得る。', - '【友情】[発狂:共鳴依存]セッション終了時、対象にあなたよりも多く損傷したパーツがある際、あなたは損傷パーツ数が対象と同じになるまで、パーツを損傷させる。', - '【保護】[発狂:常時密着]あなたが対象と別エリアにいるなら「移動以外の効果を持つマニューバ」を宣言できない。「自身と対象」以外を移動マニューバの対象にできない。', - '【憧憬】[発狂:贋作妄想]あなたが対象と同エリアにいるなら「移動以外の効果を持つマニューバ」を宣言できない。「自身と対象」以外を移動マニューバの対象にできない。', - '【信頼】[発狂:疑心暗鬼]あなた以外の全ての姉妹の最大行動値が減少する(-1)', - ] - ), - 'NMN' => Table.new( - '中立者への未練表', - '1D10', - [ - '【忌避】[発狂:隔絶意識]あなたは未練の対象ないしサヴァントと同じエリアにいる間、「移動以外の効果を持つマニューバ」を宣言できない。また、「自身と未練の対象ないしサヴァント」以外を移動マニューバの対象にできない。', - '【嫉妬】[発狂:不協和音]全ての姉妹は行動判定に修正-1を受ける。', - '【依存】[発狂:幼児退行]最大行動値が減少する(-2)', - '【憐憫】[発狂:過情移入]あなたは「サヴァント」に対する攻撃判定の出目に修正-1を受ける。', - '【感謝】[発狂:病的返礼]発狂した際、あなたは任意の基本パーツ2つ(なければ最もレベルの低い強化パーツ1つ)を損傷する。', - '【悔恨】[発狂:自業自棄]あなたが失敗した攻撃判定は全て、あなた自身の任意の箇所にダメージを与える。', - '【期待】[発狂:希望転結]あなたは狂気点を追加して振り直しを行う際、出目に修正-1を受ける。(この効果は累積する)', - '【保護】[発狂:生前回帰]あなたは「レギオン」をマニューバの対象に選べない。', - '【尊敬】[発狂:神化崇拝]あなたは「他の姉妹」をマニューバの対象に選べない。', - '【信頼】[発狂:疑心暗鬼]あなた以外の全ての姉妹の最大行動値が減少する(-1)', - ] - ), - 'NME' => Table.new( - '敵への未練表', - '1D10', - [ - '【恐怖】[発狂:認識拒否]あなたは、行動判定・狂気判定の出目に修正-1を受ける。', - '【隷属】[発狂:造反有理]あなたが失敗した攻撃判定は全て、大失敗として扱う。', - '【不安】[発狂:挙動不審]最大行動値が減少する(-2)', - '【憐憫】[発狂:感情移入]あなたは「サヴァント」に対する攻撃判定の出目に修正-1を受ける。', - '【愛憎】[発狂:凶愛心中]あなたは狂気判定・攻撃判定で大成功するごとに[判定値-10]個の自身のパーツを選び、損傷させる。', - '【悔恨】[発狂:自業自棄]あなたが失敗した攻撃判定は全て、あなた自身の任意の箇所にダメージを与える。', - '【軽蔑】[発狂:眼中不在]同エリアの手駒があなたに対して行う攻撃判定の出目は修正+1を受ける。', - '【憤怒】[発狂:激情暴走]あなたは、攻撃判定・狂気判定の出目に修正-1を受ける。', - '【怨念】[発狂:不倶戴天]あなたは逃走判定ができない。あなたが「自身と未練の対象」以外を対象にしたマニューバを使用する際、行動値1点を追加で減らさなくてはいけない。', - '【憎悪】[発狂:痕跡破壊]この未練を発狂した際、あなた以外の姉妹から1人選ぶ。その姉妹は任意のパーツを2つ損傷する。', - ] - ) - }.freeze - - setPrefixes(['\d+NC', '\d+NA'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/Nechronica_Korean.rb b/src/src_bcdice/diceBot/Nechronica_Korean.rb deleted file mode 100644 index 8512cd5d1..000000000 --- a/src/src_bcdice/diceBot/Nechronica_Korean.rb +++ /dev/null @@ -1,163 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Nechronica_Korean < DiceBot - # ゲームシステムの識別子 - ID = 'Nechronica:Korean' - - # ゲームシステム名 - NAME = '네크로니카' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Korean:네크로니카' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if total >= 11 - " > 대성공" - elsif total >= target - " > 성공" - elsif dice_list.count { |i| i <= 1 } == 0 - " > 실패" - elsif dice_list.size > 1 - " > 대실패 > 사용파츠 전부 손실" - else - " > 대실패" - end - end - - def nechronica_check(string) - output = '1' - - debug("nechronica_check string", string) - - unless /(^|\s)S?((\d+)[rR]10([\+\-\d]+)?(\[(\d+)\])?)(\s|$)/i =~ string - debug("nechronica_check unmuched") - return output - end - - string = Regexp.last_match(2) - - dice_n = 1 - dice_n = Regexp.last_match(3).to_i if Regexp.last_match(3) - - battleMode = Regexp.last_match(6).to_i - - modText = Regexp.last_match(4) - mod = parren_killer("(0#{modText})").to_i - - # 0=판정모드, 1=전투모드 - isBattleMode = (battleMode == 1) - debug("nechronica_check string", string) - debug("isBattleMode", isBattleMode) - - diff = 6 - total_n = 0 - - _, dice_str, n1, cnt_max, n_max = roll(dice_n, 10, 1) - - total_n = n_max + mod - - output = "#{@nick_e}: (#{string}) > [#{dice_str}]" - if mod < 0 - output += mod.to_s - elsif mod > 0 - output += "+#{mod}" - end - - n1 = 0 - cnt_max = 0 - - dice = dice_str.split(',').map(&:to_i) - dice.length.times do |i| - dice[i] += mod - n1 += 1 if dice[i] <= 1 - cnt_max += 1 if dice[i] >= 10 - end - - dice_str = dice.join(",") - output += " > #{total_n}[#{dice_str}]" - - dice_total = dice.inject(&:+) - output += check_nD10(total_n, dice_total, dice, :>=, diff) - - debug("dice_n, n1, total_n diff", dice_n, n1, total_n, diff) - - # β판의 실장 - # if( (dice_n > 1) and (n1 >= 1) and (total_n <= diff) ) - # output += " > 파손#{n1}" - # end - - if isBattleMode - hit_loc = getHitLocation(total_n) - if hit_loc != '1' - output += " > #{hit_loc}" - end - end - - return output - end - - def getHitLocation(dice) - output = '1' - - debug("getHitLocation dice", dice) - return output if dice <= 5 - - output = '' - table = [ - '방어측 임의', - '다리(없으면 공격측 임의)', - '몸통(없으면 공격측 임의)', - '팔(없으면 공격측 임의)', - '머리(없으면 공격측 임의)', - '공격측 임의', - ] - index = dice - 6 - - addDamage = "" - if dice > 10 - index = 5 - addDamage = "(추가 데미지#{dice - 10})" - end - - output = table[index] + addDamage - - return output - end -end diff --git a/src/src_bcdice/diceBot/NeverCloud.rb b/src/src_bcdice/diceBot/NeverCloud.rb deleted file mode 100644 index 20b2be3e0..000000000 --- a/src/src_bcdice/diceBot/NeverCloud.rb +++ /dev/null @@ -1,70 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class NeverCloud < DiceBot - # ゲームシステムの識別子 - ID = 'NeverCloud' - - # ゲームシステム名 - NAME = 'ネバークラウドTRPG' - - # ゲームシステム名の読みがな - # - # 「ゲームシステム名の読みがなの設定方法」(docs/dicebot_sort_key.md)を参考にして - # 設定してください - SORT_KEY = 'ねはあくらうとTRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <=z) - xD6の判定を行います。ファンブル、クリティカルの場合、その旨を出力します。 - x:振るダイスの数。 - ±y:固定値・修正値。省略可能。 - z:目標値。省略可能。 - 例) 2NC+2>=5 1NC -MESSAGETEXT - - # ダイスボットで使用するコマンドを配列で列挙する - setPrefixes(['\d+NC.*', '\d+D6?([\+\-\d]*)>=\d+']) - - def rollDiceCommand(command) - m = /^(\d+)(?:NC|D6?)((?:[-+]\d+)*)(>=(\d+))?$/i.match(command) - unless m - return nil - end - - dice_count = m[1].to_i - modify_str = m[2] - modify_number = ArithmeticEvaluator.new.eval(modify_str) - cmp_str = m[3] - target = m[4] && m[4].to_i - - if modify_number == 0 - modify_str = '' - end - - dice_value, dice_str, = roll(dice_count, 6) - dice_list = dice_str.split(',').map(&:to_i) - - total = dice_value + modify_number - - result = - if dice_list.count(1) == dice_count - total = 0 - "ファンブル" - elsif dice_list.count(6) >= 2 - "クリティカル" - elsif target - total >= target ? "成功" : "失敗" - end - - sequence = [ - "(#{dice_count}D6#{modify_str}#{cmp_str})", - "#{dice_value}[#{dice_str}]#{modify_str}", - total, - result - ].compact - - return sequence.join(" > ") - end -end diff --git a/src/src_bcdice/diceBot/NightWizard.rb b/src/src_bcdice/diceBot/NightWizard.rb deleted file mode 100644 index 9cd26261e..000000000 --- a/src/src_bcdice/diceBot/NightWizard.rb +++ /dev/null @@ -1,227 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require "utils/normalize" -require "utils/format" -require "utils/command_parser" - -class NightWizard < DiceBot - # ゲームシステムの識別子 - ID = 'NightWizard' - - # ゲームシステム名 - NAME = 'ナイトウィザード The 2nd Edition' - - # ゲームシステム名の読みがな - SORT_KEY = 'ないとういさあと2' - - # ダイスボットの使い方 - HELP_MESSAGE = <] クリティカルになる出目の一覧 - attr_accessor :critical_numbers - - # @return [Array] ファンブルになる出目の一覧 - attr_accessor :fumble_numbers - - # @return [Integer, nil] プラーナによる補正 - attr_accessor :prana - - # @return [Integer] ファンブルでない時に適用される修正値 - attr_accessor :active_modify_number - - # @return [Symbol, nil] 比較演算子 - attr_accessor :cmp_op - - # @return [Integer, nil] 目標値 - attr_accessor :target_number - end - - class ParsedNW < Parsed - # @return [Integer] 判定の基礎値 - attr_accessor :base - - # @return [Integer] 修正値 - attr_accessor :modify_number - - def initialize(command) - @command = command - end - - # 常に適用される修正値を返す - # - # @return [Integer] - def passive_modify_number - @base + @modify_number - end - - # @return [String] - def to_s - base = @base.zero? ? nil : @base - modify_number = Format.modifier(@modify_number) - active_modify_number = Format.modifier(@active_modify_number) - dollar = @prana && "$#{@prana}" - - return "#{base}#{@command}#{modify_number}@#{@critical_numbers.join(',')}##{@fumble_numbers.join(',')}#{dollar}#{active_modify_number}#{@cmp_op}#{@target_number}" - end - end - - class Parsed2R6 < Parsed - # @return [Integer] 常に適用される修正値 - attr_accessor :passive_modify_number - - # @return [String] - def to_s - "2R6M[#{@passive_modify_number},#{@active_modify_number}]C[#{@critical_numbers.join(',')}]F[#{@fumble_numbers.join(',')}]#{@cmp_op}#{@target_number}" - end - end - - # @return [ParsedNW, nil] - def parse_nw(string) - m = /^([-+]?\d+)?#{@nw_command}((?:[-+]\d+)+)?(?:@(\d+(?:,\d+)*))?(?:#(\d+(?:,\d+)*))?(?:\$(\d+(?:,\d+)*))?((?:[-+]\d+)+)?(?:([>=]+)(\d+))?$/.match(string) - unless m - return nil - end - - ae = ArithmeticEvaluator.new - - command = ParsedNW.new(@nw_command) - command.base = m[1].to_i - command.modify_number = m[2] ? ae.eval(m[2]) : 0 - command.critical_numbers = m[3] ? m[3].split(',').map(&:to_i) : [10] - command.fumble_numbers = m[4] ? m[4].split(',').map(&:to_i) : [5] - command.prana = m[5] && m[5].to_i - command.active_modify_number = m[6] ? ae.eval(m[6]) : 0 - command.cmp_op = Normalize.comparison_operator(m[7]) - command.target_number = m[8] && m[8].to_i - - return command - end - - # @return [Parsed2R6, nil] - def parse_2r6(string) - m = /^2R6m\[([-+]?\d+(?:[-+]\d+)*)(?:,([-+]?\d+(?:[-+]\d+)*))?\](?:c\[(\d+(?:,\d+)*)\])?(?:f\[(\d+(?:,\d+)*)\])?(?:([>=]+)(\d+))?/i.match(string) - unless m - return nil - end - - ae = ArithmeticEvaluator.new - - command = Parsed2R6.new - command.passive_modify_number = ae.eval(m[1]) - command.active_modify_number = m[2] ? ae.eval(m[2]) : 0 - command.critical_numbers = m[3] ? m[3].split(',').map(&:to_i) : [10] - command.fumble_numbers = m[4] ? m[4].split(',').map(&:to_i) : [5] - command.cmp_op = Normalize.comparison_operator(m[5]) - command.target_number = m[6] && m[6].to_i - - return command - end - - def roll_nw(parsed) - @critical_numbers = parsed.critical_numbers - @fumble_numbers = parsed.fumble_numbers - - @total = 0 - @interim_expr = "" - @status = nil - - status = roll_once_first() - while status == :critical - status = roll_once() - end - - if status != :fumble && parsed.prana - prana_bonus, prana_list = roll(parsed.prana, 6) - @total += prana_bonus - @interim_expr += "+#{prana_bonus}[#{prana_list}]" - end - - base = - if status == :fumble - fumble_base_number(parsed) - else - parsed.passive_modify_number + parsed.active_modify_number - end - - @total += base - @interim_expr = base.to_s + @interim_expr - - return @total, @interim_expr, @status - end - - # @return [Symbol, nil] - def roll_once(fumbleable = false) - dice_value, dice_str = roll(2, 6) - - if fumbleable && @fumble_numbers.include?(dice_value) - @total -= 10 - @interim_expr += "-10[#{dice_str}]" - @status = "ファンブル" - return :fumble - elsif @critical_numbers.include?(dice_value) - @total += 10 - @interim_expr += "+10[#{dice_str}]" - @status = "クリティカル" - return :critical - else - @total += dice_value - @interim_expr += "+#{dice_value}[#{dice_str}]" - return nil - end - end - - # @return [Symbol, nil] - def roll_once_first - roll_once(true) - end - - # @return [Integer] - def fumble_base_number(parsed) - parsed.passive_modify_number - end -end diff --git a/src/src_bcdice/diceBot/NightWizard3rd.rb b/src/src_bcdice/diceBot/NightWizard3rd.rb deleted file mode 100644 index b6f5118e4..000000000 --- a/src/src_bcdice/diceBot/NightWizard3rd.rb +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/NightWizard' - -class NightWizard3rd < NightWizard - # ゲームシステム名 - NAME = 'ナイトウィザード The 3rd Edition' - - # ゲームシステム名の読みがな - SORT_KEY = 'ないとういさあと3' - - # ゲームシステムの識別子 - ID = 'NightWizard3rd' - - setPrefixes(['([-+]?\d+)?NW.*', '2R6.*']) - - def fumble_base_number(parsed) - parsed.passive_modify_number + parsed.active_modify_number - end -end diff --git a/src/src_bcdice/diceBot/NightmareHunterDeep.rb b/src/src_bcdice/diceBot/NightmareHunterDeep.rb deleted file mode 100644 index 1189bcaef..000000000 --- a/src/src_bcdice/diceBot/NightmareHunterDeep.rb +++ /dev/null @@ -1,90 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class NightmareHunterDeep < DiceBot - # ゲームシステムの識別子 - ID = 'NightmareHunterDeep' - - # ゲームシステム名 - NAME = 'ナイトメアハンター=ディープ' - - # ゲームシステム名の読みがな - SORT_KEY = 'ないとめあはんたあていいふ' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if target != "?" - if total >= target - return " > 成功" - else - return " > 失敗" - end - end - - sucLv = 1 - sucNL = 0 - - while total >= sucLv * 5 - 1 - sucLv += 1 - end - - while total >= (sucNL * 5 + 5) - sucNL += 1 - end - - sucLv -= 1 - sucNL -= 1 - - if sucLv <= 0 - " > 失敗" - else - " > Lv#{sucLv}/NL#{sucNL}成功" - end - end - - # ナイトメアハンターディープ用宿命表示 - def getDiceRolledAdditionalText(n1, n_max, dice_max) - debug('getDiceRolledAdditionalText begin: n1, n_max, dice_max', n1, n_max, dice_max) - - if (n1 != 0) && (dice_max == 6) - return " > 宿命獲得" - end - - return '' - end - - # ダイス目による補正処理(現状ナイトメアハンターディープ専用) - def getDiceRevision(n_max, dice_max, total_n) - addText = '' - revision = 0 - - if (n_max > 0) && (dice_max == 6) - revision = (n_max * 4) - addText = "+#{n_max}*4 > #{total_n + revision}" - end - - return addText, revision - end -end diff --git a/src/src_bcdice/diceBot/NinjaSlayer.rb b/src/src_bcdice/diceBot/NinjaSlayer.rb deleted file mode 100644 index 06f707f31..000000000 --- a/src/src_bcdice/diceBot/NinjaSlayer.rb +++ /dev/null @@ -1,275 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/DiceBot' -require 'utils/table' - -class NinjaSlayer < DiceBot - # ゲームシステムの識別子 - ID = 'NinjaSlayer' - - # ゲームシステム名 - NAME = 'ニンジャスレイヤーTRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'にんしやすれいやあRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = < 2, - 'E' => 3, - 'N' => 4, - 'H' => 5, - 'UH' => 6 - }.freeze - - def changeText(str) - m = NJ_RE.match(str) - return str unless m - - b_roll = bRollCommand(m[2], integerValueOfDifficulty(m[3] || m[4])) - return "#{m[1]}#{b_roll}" - end - - def rollDiceCommand(command) - debug('rollDiceCommand begin string', command) - - if (table = TABLES[command]) - return table.roll(bcdice) - end - - case node = parse(command) - when EV - return executeEV(node) - when AT - return executeAT(node) - when EL - return executeEL(node) - else - return nil - end - end - - private - - # 構文解析する - # @param [String] command コマンド文字列 - # @return [EV, AT, EL, nil] - def parse(command) - case command - when EV_RE - return parseEV(Regexp.last_match) - when AT_RE - return parseAT(Regexp.last_match) - when EL_RE - return parseEL(Regexp.last_match) - else - return nil - end - end - - # 正規表現のマッチ情報から回避判定ノードを作る - # @param [MatchData] m 正規表現のマッチ情報 - # @return [EV] - def parseEV(m) - num = m[1].to_i - difficulty = integerValueOfDifficulty(m[2] || m[3]) - targetValue = m[4] && m[4].to_i - - return EV.new(num, difficulty, targetValue) - end - - # 正規表現のマッチ情報から近接攻撃ノードを作る - # @param [MatchData] m 正規表現のマッチ情報 - # @return [AT] - def parseAT(m) - num = m[1].to_i - difficulty = integerValueOfDifficulty(m[2] || m[3]) - - return AT.new(num, difficulty) - end - - # 正規表現のマッチ情報から電子戦ノードを作る - # @param [MatchData] m 正規表現のマッチ情報 - # @return [EL] - def parseEL(m) - num = m[1].to_i - difficulty = integerValueOfDifficulty(m[2] || m[3]) - - return EL.new(num, difficulty) - end - - # 回避判定を行う - # @param [EV] ev 回避判定ノード - # @return [String] 回避判定結果 - def executeEV(ev) - command = bRollCommand(ev.num, ev.difficulty) - - rollResult = bcdice.bdice(command).sub(B_ROLL_RESULT_HEAD_RE, '') - return rollResult unless ev.targetValue - - m = /成功数(\d+)/.match(rollResult) - raise '成功数が見つかりません' unless m - - numOfSuccesses = m[1].to_i - if numOfSuccesses > ev.targetValue - return "#{rollResult} > カウンターカラテ!!" - end - - return rollResult - end - - # 近接攻撃を行う - # @param [AT] at 近接攻撃ノード - # @return [String] 近接攻撃結果 - def executeAT(at) - command = bRollCommand(at.num, at.difficulty) - rollResult = bcdice.bdice(command).sub(B_ROLL_RESULT_HEAD_RE, '') - - # バラバラロールの出目を取得する - # TODO: バラバラロールの結果として、出目を配列で取得できるようにする - m = /> (\d+(?:,\d+)*)/.match(rollResult) - values = m[1].split(',').map(&:to_i) - - numOfMaxValues = values.select { |v| v == 6 }.length - - return numOfMaxValues >= 2 ? "#{rollResult} > サツバツ!!" : rollResult - end - - # 電子戦を行う - # @param [EL] el 電子戦ノード - # @return [String] 電子戦結果 - def executeEL(el) - command = bRollCommand(el.num, el.difficulty) - rollResult = bcdice.bdice(command).sub(B_ROLL_RESULT_HEAD_RE, '') - - # バラバラロールの出目を取得する - # TODO: バラバラロールの結果として、出目を配列で取得できるようにする - m = /> (\d+(?:,\d+)*)/.match(rollResult) - values = m[1].split(',').map(&:to_i) - - numOfMaxValues = values.select { |v| v == 6 }.length - - sumOfTrueValues = values.select { |v| v >= el.difficulty }.length - - return numOfMaxValues >= 1 ? "#{rollResult} + #{numOfMaxValues} > #{sumOfTrueValues + numOfMaxValues}" : rollResult - end - - # 難易度の整数値を返す - # @param [String, nil] s 難易度表記 - # @return [Integer] 難易度の整数値 - # @raise [KeyError, IndexError] 無効な難易度表記が渡された場合。 - # - # sは2から6までの数字あるいは'K', 'E', 'N', 'H', 'UH'。 - # sがnilの場合は 4 を返す。 - def integerValueOfDifficulty(s) - return 4 unless s - - return s.to_i if /\A[2-6]\z/.match(s) - - return DIFFICULTY_SYMBOL_TO_INTEGER.fetch(s.upcase) - end - - # バラバラロールのコマンドを返す - # @param [#to_s] num ダイス数 - # @param [#to_s] difficulty 難易度 - # @return [String] - def bRollCommand(num, difficulty) - "#{num}B6>=#{difficulty}" - end - - # サツバツ表 - SATSUBATSU_TABLE = [ - '「死ねーッ!」腹部に強烈な一撃! 敵はくの字に折れ曲がり、ワイヤーアクションめいて吹っ飛んだ!:本来のダメージ+1ダメージを与える。敵は後方の壁または障害物に向かって、何マスでもまっすぐ弾き飛ばされる(他のキャラのいるマスは通過する)。壁または障害物に接触した時点で、敵はさらに1ダメージを受ける。敵はこの激突ダメージに対して改めて『回避判定』を行っても良い。', - '「イヤーッ!」頭部への痛烈なカラテ! 眼球破壊もしくは激しい脳震盪が敵を襲う!:本来のダメージを与える。さらに敵の【ニューロン】と【ワザマエ】がそれぞれ1ずつ減少する(これによる最低値は1)。残虐ボーナスにより【万札】がD3発生。この攻撃を【カルマ:善】のキャラに対して行ってしまった場合、【DKK】がD3上昇する。', - '「苦しみ抜いて死ぬがいい」急所を情け容赦なく破壊!:本来のダメージ+1ダメージを与える。耐え難い苦痛により、敵は【精神力】が-2され、【ニューロン】が1減少する(これによる最低値は1)。残虐ボーナスにより【万札】がD3発生。この攻撃を【カルマ:善】のキャラに対して行ってしまった場合、【DKK】がD3上昇する。', - '「逃げられるものなら逃げてみよ」敵の脚を粉砕!:本来のダメージを与える。さらに敵の【脚力】がD3減少する(最低値は1)。残虐ボーナスにより【万札】がD3発生。この攻撃を【カルマ:善】のキャラに対して行ってしまった場合、【DKK】がD3上昇する。', - '「これで手も足も出まい!」敵の両腕を切り飛ばした! 鮮血がスプリンクラーめいて噴き出す!:本来のダメージ+1ダメージを与える。さらに敵の【ワザマエ】と【カラテ】がそれぞれ2減少する(最低値は1)。残虐ボーナスにより【万札】がD3発生。この攻撃を【カルマ:善】のキャラに対して行ってしまった場合、【DKK】がD3上昇する。', - '「イイイヤアアアアーーーーッ!」ヤリめいたチョップが敵の胸を貫通! さらに心臓を掴み取り、握りつぶした! ナムアミダブツ!:敵は残り【体力】に関係なく即死する。残虐ボーナスにより【万札】がD6発生。この攻撃を【カルマ:善】のキャラに対して行ってしまった場合、【DKK】がD6上昇する。' - ].freeze - - # 表の定義 - TABLES = { - 'SB' => Table.new( - 'サツバツ表', - '1D6', - SATSUBATSU_TABLE - ) - }.freeze - - # ダイスボットで使用するコマンドを配列で列挙する - setPrefixes([ - 'NJ\d+.*', - 'EV\d+.*', - 'AT\d+.*', - 'EL\d+.*' - ] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/NjslyrBattle.rb b/src/src_bcdice/diceBot/NjslyrBattle.rb deleted file mode 100644 index 70603be8e..000000000 --- a/src/src_bcdice/diceBot/NjslyrBattle.rb +++ /dev/null @@ -1,51 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class NjslyrBattle < DiceBot - # ゲームシステムの識別子 - ID = 'NJSLYRBATTLE' - - # ゲームシステム名 - NAME = 'NJSLYRBATTLE' - - # ゲームシステム名の読みがな - SORT_KEY = 'にんしやすれいやあはとる' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 - " 重点 #{juuten} 溜まる" - else - "" - end - end -end diff --git a/src/src_bcdice/diceBot/Nuekagami.rb b/src/src_bcdice/diceBot/Nuekagami.rb deleted file mode 100644 index 96de1d55c..000000000 --- a/src/src_bcdice/diceBot/Nuekagami.rb +++ /dev/null @@ -1,290 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Nuekagami < DiceBot - # ゲームシステムの識別子 - ID = 'Nuekagami' - - # ゲームシステム名 - NAME = '鵺鏡' - - # ゲームシステム名の読みがな - SORT_KEY = 'ぬえかかみ' - - # ダイスボットの使い方 - HELP_MESSAGE = < { - :name => "喪失取戻表", - :type => '1D20', - :table => %w{ - 鬼化。妄執かくして鬼と結実す。欠けたるところすでになし。あやかし、己の欠けたるを足せり。すなわちその身、人ならず。 - 妄想。とくと見よ。何も失ってなどおらぬ。この肉この魂この身上、欠けたるところぞなし。欠けし夢を見しのみ。全て夢なり。 - 鵺型。肉に内に暗雲ゆらめく。欠けたるところ漂うそれは、鶴が欠片。暖昧の境界なれば、失いしものまた戻りたるが如く。 - 諦観。己が身を知る。望む愚かを知る。足掻く愚かを知る。心は折れり。望みは絶えり。諦めることで足るものもある知らむ。 - 屍漁。もはやいかな所業もいとわず。されば数多の骸を漁り、ついに欠けたるを満たせり。代わりに欠けたる心、知ることぞなし。 - 呪刻。あまねく呪はば、己も囚わる。己を騙る呪い、己を捕らえ絡めれば、欠けたるもまた満ちて見ゆる。 - 得心。すべては己の行いの結果なれば、因果応報。それなきは不具合なれど、得心せり。もはや悩めどせんなきことなりや。 - 奪取。無ければ、奪え。あな妬ましと思わば奪え。奪いて己がものとせよ。さすればたちまち、欲するところ戻れり。 - 罪価。己が罪を知れり。かくあさましき罪業に比ぶれば、己が失いしもの、なんと軽きことか。さあれば、悩むるに能はず。 - 代替。失へるもの、未だ失われり。されど、代わるものを得たり。二度とは失うわじ。失わばその痛みに狂い果てむ。 - 受容。納得はなし。諦観はなし。されど受け入れり。欠けたるもまた己なれば、欠けるところもて満たさば、それ己ならずや。 - 代行。かかる身にそれなくとも是。かく行い為すは、己が筆ならず。代わりて為す者、信ずべきあらばこそ。 - 適応。心痛むる時多けれど、欠けたるにも馴れたり。もはや欠けるに不自由なし。さればそれすなわち、欠けたるに非ず - 妖賞。大妖に遇ひて、饗応す。彼の妖、大いに慶びてその身に欠けたるを与へむ。それ異様なれど、用は足れり。 - 奪還。つひに奪われしもの、奪い返せり!取り戻せしそれ、再び手の内に収まりて輝けり。けしてまた手放すことあらじ。 - 本懐。己の求むるを、ついに為し遂げり。もはや己が力、己が技、疑うところなし。己が有様になんぞ足らざるあるべきや。 - 取得。艱難辛苦ぞありや。ついぞ果てに失いしそれ、身に修めん。ただ取り戻せしものにあらじ。新たに得たりしや。 - 賜物。その欠ける様、彼の人あはれに思いて、かくなるを与え賜り。以て、満ちたる己、彼の人にまた仕えむ。 - 大悟。足掻けれど足掻けれど、満ちることなし。足りざるは自然。己の姿を受け入れむ。されば欠けたるに、悩まさるるもなし。 - 望月。欠けたる月が満ちるが如く。欠けたるは突然に戻れり。いかなる誠、いかなる印か、知るものはあらず。 - }, - }, - - "BL" => { - :name => "血脈の喪失表", - :type => '1D20', - :table => %w{ - 髪の色。一夜にしてあなたの髪は白くなった。 - 視力。周囲がぼんやりとしか見えない。 - 所作。体の一部がまともに動かせない。 - 痛み。体が痛みを感じなくなってしまった。 - 容貌。顔に大きな傷や火傷を負った。 - 血の気。あなたの肌は血の気を失ったままだ。 - 赤い血。体を流れる血が異様な色となった。 - 子を作る力。子を作る力を失った。 - 器用さ。体が常に小さく震えている。 - 健康。病を患った……体が衰弱している。 - 寿命。あなたの寿命は残りわずかとなった。 - ぬくもり。その体は常に冷たい……。 - 片目。片目を失ってしまった……。 - 片脚。片脚を切り落とされた! - 片腕。片腕を切り落とされた! - 生命。あなたの鼓動は止まって久しい。 - 真の力。本来の力がほとんど発揮できない。 - 肉。異様に痩せたか、体の一部が白骨化している。 - 人の体。体が歪み変わり、異形と化した。 - 己の体。今は他人の体を借りている。 - }, - }, - - "LL" => { - :name => "生様の喪失表", - :type => '1D20', - :table => %w{ - 主君の寵愛。不興を買ってしまった。 - 師匠。死んだか、あるいはあなたが捨てられた。 - 面子。大いに恥をかいた。このままにしておけない。 - 時間。今まで精魂を傾けて来たものは無駄だった。 - 血縁。信じていた生まれではなかった……。 - 家宝。家の宝、あるいは形見を奪われてしまった。 - 恋人。死んだか、あるいは奪われた。 - 運。何をやってもうまくいかない。 - 財産。騙し取られたか……。あるいは使い果たした。 - 名声。あなたの名声は地に落ちている……。 - 居場所。居るべき場所、身分を失ってしまった……。 - 地位。かつての地位は失われたのだ。 - 日常。こんな世の中でも平和に暮らしていたのに。 - 相棒。死んだか、あるいは裏切られた。 - 仕える人。死んだか、あるいはあなたが捨てられた。 - 人望。かつてあなたを讃えた人が、今やあなたを罵る。 - 家族。死んだか、あるいはあなたが捨てられた。 - 故郷。何者かに滅ぼされたか、あるいは自滅した。 - 守るべき人。守るべき人を守れなかった……。 - 自由。脅され縛られ、誰かの命令を聞くしかできない。 - }, - }, - - "SL" => { - :name => "魂魄の喪失表", - :type => '1D20', - :table => %w{ - 誇り。誇りなど残ってはいない。 - 心の余裕。今を生きるだけで精一杯。 - 敬う心。己こそが全てだ。 - 気力。何もやる気がおきない……。 - 安眠。夜毎の悪夢に、まともに眠れない。 - 信じる心。二度と人など信じるものか。 - 愛。もはや誰かを愛することなどない。 - 夢。前に見えていた光、目標。今は闇の中だ。 - 一線。己の中の超えてはならぬ線を踏み越えた。 - 信じたもの。かつて信じたのはまやかしだった。 - 人の心。この世で人の心が何の役に立つ? - 瞳の光。全て虚しいものとしか見えない。 - 希望。この世に何を望むというのだろう? - 自制心。己を抑えて何とする? - 涙。その目が涙を流すことはない。 - 笑顔。二度と笑いなどしないだろう。 - 大切な記憶。どうしてか……記憶を失っている。 - 本当の自分。己を偽りすぎて、本来の己を忘れた。 - 正気。今のあなたは狂気の沙汰だ! - 己の意志。あなたは誰かの人形。道具に過ぎない。 - }, - }, - - "FL" => { - :name => "因縁表", - :type => '1D20', - :table => %w{ - 仇敵。奴は敵だ。あなたの敵だ。 - 殺意。殺してやりたい。 - 蔑視。口ほどにもない存在だ。 - 嫉妬。なぜアイツだけが……。 - 恐怖。恐ろしい。あれを怒らせてはいけない。 - 目障り。邪魔だ。気に入らない。 - 利用。役に立ってくれそうだな。 - 玩具。せいぜい楽しませてもらおう。 - 依存。あの人がいなければいけないのだ。 - 欲望。お前が欲しい……。 - 好敵。なかなかやるじゃないか。 - 憐憎。哀れな……。 - 悪友。腐れ縁。信用できないが妙に心地いい。 - 畏怖。あの人には逆らえない。 - 恩義。恩がある……返さなければ。 - 親友。心から信じられる友だ。 - 尊敬。あの人のようになりたい。 - 相棒。言葉はなくとも全てが通じ合う。 - 思慕。恋をしてしまった。 - 主君。心の主君。身命を賭して守り仕える。 - }, - }, - - "HG" => { - :name => "地獄門通過描写表", - :type => '1D20', - :table => %w{ - 背後見れば、地獄の門をば幻視せり。危うき次第を知りたり. - 必死に歩めり。背後に穂れし血と臓脈、こぼしたるが心地なれど。 - 背後の地に深き爪痕あり。己を捕らへむとせる鬼の爪跡かと思ふ。 - 劫火に焼かるる己を幻視す。汗にまみれ覚めれば、己が所業悔悟せり。 - 水鏡に映る己を見て目を覚ます。彼のままなれば地獄に堕つると。 - 天に鶴騒ぎたり。御身が魂晩取り逃がしたりと吃るが如く。 - 足が泥淳に囚わるる幻視。引きずり込む亡者。必死に逃れ至れり。 - 陰に蠢く餓鬼を見ゆ・明日は己ぞと思へば、背も震えたり。 - 喪失の苦しみ、いくばくか休めり。他を思う心地ぞ生まれり。 - いみじう悩み苦しけれど、やがてそれも馴れり。今や苦しみならず。 - しずけき雨降らば、己が所業洗い流さるるとも、思へたり。 - 汚泥が如く絡みし過ぎたる日々、わずかに離れたる心地ぞする。 - 背負いし怨念ら退き薄れむ。これなるは縁がゆへか、心地ゆへか。 - 内に孕むる絶望へ、連理たれと希望の芽、萌ゆる。 - 生温かき風と共に、大粒の雨降れり。すわ血の雨かとも思へり。 - 人と関わりて縁を見ゆ。抱ふるもの、いくらか少なくなりき。 - 夢枕、あるいは白昼夢なるか。神仏現るるにすがりたり。 - 劫火の中、白き手が己を引けりと幻視す。あるひは過去の縁か。 - 蛙呑む蛇を見たり。あさましき業に、己をふと顧みぬ。 - 心中にて、かそけき希望の糸見へり。慎重にたぐりて登らむとす。 - }, - }, - - "RG" => { - :name => "羅生門通過描写表", - :type => '1D20', - :table => %w{ - むごき所業、目にせり。心強張りて、常の様にてあれず. - 人の目に、己を嗤ふ気配感じたり。怒り、悔み、恥ぞ覚えむ。 - 鬼の腕より、ついに逃るるか.おぞましき震へぞ、治まりき。 - 辻吹く風に、人骨散れり。たちまち無常の感、起こりて心改めたり。 - 愛憎恩普、いよいよ狂ほしく。猛るまま、ただただ前へと進めり。 - 飢えたる犬の如し。泥水すすりても前に進み、想い果たさむ。 - 喪失、取り戻すは近し。思はず、あさましき笑みぞ浮かべり。 - いやしき者ども、あさましき目を向くる。蔑みてまかり通らむ。 - 喪失の夢繰り返すこといくたびか。もはや業苦の炎冷め、常日頃の如し。 - あるひは己の内よりか。あやしき声あれば欲心また昂ぶらむ。 - 死人を見、成仏を祈れり。心あらば、己が内にて仏も宿らむ。 - ただただ世の無常を知れば、哀愁の情あふれ感じむ。 - 路地に小さき花咲くを見ゆ。我執の心晴れたる心地せり。 - 冷たき風あらば、情動わずかに治まりて、落ち着きたりけり。 - 酒を飲めり。酔ひたる心地の内に、業苦も曖昧とならむ。 - 見えざる大門潜りしか。境目超えたるを感ずる。いざ、知らずの地平へ。 - 乞食坊主に逢ひて、恵む。これもまたいくばくの功徳なりきや。 - 子供ら遊ぶを見ゆ。己が古きを思へば、思はず顔ほころびぬ。 - 暗雲に包まれし都なれど今その身に、いくばくかの光差し照らしけり。 - 神仏の似姿、幻視す。されば、いかな身にも信心のいくばくか起これり。 - }, - }, - - "VG" => { - :name => "朱雀門通過描写表", - :type => '1D20', - :table => %w{ - 雷響きて、暗霊いよいよ濃ゆし。己が先を見せるるが如し。 - 今一つ取り戻すは及ばぬ口惜しきに、鬼が如く唸りし。 - 求めし手、届かずも絶望すれど再び、ふらふらと歩み出さむ。 - かたときの福なるか。狐に化かさるるが如く、鹿なる泡沫の夢。 - 流るる血。朱に染まる視界。されど、染まらざる中に光あり。 - 己が臓腑抉るが如く。己が業、抉り捨て進まん。 - 先に狐の影見ゆ。あやしけれど、迷ひながら、狐を追へり。 - 大いなる境を越えたるかと思えり。未だ道半ばなれば油断許さず。 - 暗雲に白鷺翔けるを見ゆ。瑞兆なれば希望もまた湧きぬ。 - 内より翼の出るが心地せり。いざ思い切りて、翔ばむ。 - 割れた杯より漏れたるも、重ねたる杯に。合一せば余さず受けり。 - 心激しくして魚跳ねるが如く。その実も暗き水面より跳ね出たり。 - 貴き牛車と行き逢はむ。幽かな香に、目ぞ覚めたる思いせり。 - ふと口をついて歌詠めり。何者か下の句継ぎて、心合わせむ。 - 知らずの人より、送られし歌あり。返歌いかがせむかと思ひたり。 - 鳥の巣立つを見たり。己もまた、新たな道歩むべきぞと心せり。 - 暗雲貫きて、空に月あり。天より見らるる心地して、行い正せり。 - 目的近づけど、心重し。胸痛みて、いみじう哀し。 - 不意に仏心起こりて、万物慈みの念おぼえたり。 - 頭上より何者かの楽の音、饗けり。その身、祝はるる心地せり。 - }, - }, - - "OG" => { - :name => "応天門通過描写表", - :type => '1D20', - :table => %w{ - 光捕らへど暗し。新たなる地獄の門に落つる己を知りたり。 - 求めしもの得たり。されど、なにものか失いし心地ぞせる……。 - 狐鴫きて自覚むる。全て一夜の夢の如し。痛みもまたしかり。 - なにゆへか、涙こぼるる。ただ涙こぼれ、業苦もまた流れむ。 - 人想ひて、未練生まるる。己が幸求めれば、死を畏れむ。 - 打ち返す波の音聞く。遥か遠く、旅立ちたむと念、生じたり。 - 実る稲田を幻視す。もはや都の有様、人住む地に非ずと思へり。 - 取り戻したるに、ただただ歓喜す。もはや周りの様も感ぜず。 - あまたの人の目、御身見てざわめくを感ず。優越の心地あり。 - かけがへなきもの、見つけたり。今はただ、そを喜ぶのみなれば。 - 天盤にて星巡り、時満ちて、方合へり。なればその身にも幸ありむ。 - 幾年月ぞ、剥那の如し。思ふれば囚わる檻も、無きかと見ゆ。 - 天より鵺退きて、日の光差す。浴びる中、魂魄またぬくもりを覚えり。 - 風流、解する心あらば天地自然もまた並び、自らその内に合一せむ。 - いかにせで、己の在り様を責むるや。己は己なれが、気に負うに値せず。 - あまねく世のことども、遠く鈍く思ひて心安らかなる境地に至れり。 - 天遠く光差せば、淡き虹も浮かべり。何処かへ渡す橋とも見ゆ。 - 天より一輪の花舞い降りて、御身の手に落つ。心また花咲けり。 - 鵺の内に竜神舞へり。風雨激しく、身濡らせど、心清々し。 - 都の暗雲、晴れたる日も稀にあり。なんぞ魂魄晴るる日なしや。 - }, - }, - - }.freeze - - setPrefixes(TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/OneWayHeroics.rb b/src/src_bcdice/diceBot/OneWayHeroics.rb deleted file mode 100644 index 64edcecab..000000000 --- a/src/src_bcdice/diceBot/OneWayHeroics.rb +++ /dev/null @@ -1,977 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class OneWayHeroics < DiceBot - # ゲームシステムの識別子 - ID = 'OneWayHeroics' - - # ゲームシステム名 - NAME = '片道勇者TRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'かたみちゆうしやTRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <53), 2=昇順入れ替え([5,3]->35) - end - - def rollDiceCommand(command) - debug("rollDiceCommand command", command) - - # get~DiceCommandResultという名前のメソッドを集めて実行、 - # 結果がnil以外の場合それを返して終了。 - result = analyzeDiceCommandResultMethod(command) - return result unless result.nil? - - return getCommandTablesResult(command) - end - - def getCommandTablesResult(command) - # TABLES の定義からコマンド検索 - info = TABLES[command.upcase] - return nil if info.nil? - - name = info[:name] - type = info[:type] - table = info[:table] - hasGap = info[:hasGap] - - number, text = - case type - when /^(\d+)D6$/i - count = Regexp.last_match(1).to_i - dice, = roll(count, 6) - getTableResult(table, dice, hasGap) - when 'D66' - isSwap = (@d66Type == 2) - dice = getD66(isSwap) - getTableResult(table, dice, hasGap) - end - - return nil if text.nil? - - return "#{name}(#{number}) > #{text}" - end - - def getRollDiceCommandResult(command) - return nil unless /^(\d*)JD(\d*)(\+(\d*))?(,(\d+))?$/ === command - - diceCount = Regexp.last_match(1) - diceCount = 2 if diceCount.empty? - diceCount = diceCount.to_i - return nil if diceCount < 2 - - ability = Regexp.last_match(2).to_i - target = Regexp.last_match(6) - target = target.to_i unless target.nil? - - modifyText = (Regexp.last_match(3) || "") - modifyText = "+1" if modifyText == "+" - modifyValue = modifyText.to_i - - dice, diceText = rollJudgeDice(diceCount) - total = dice + ability + modifyValue - - text = command.to_s - text += " > #{diceCount}D6[#{diceText}]+#{ability}#{modifyText}" - text += " > #{total}" - - result = getJudgeReusltText(dice, total, target) - text += " > #{result}" unless result.empty? - - return text - end - - def rollJudgeDice(diceCount) - dice, diceText, = roll(diceCount, 6) - - if diceCount == 2 - return dice, diceText - end - - diceList = diceText.split(",").map(&:to_i) - diceList.sort! - diceList.reverse! - - total = diceList[0] + diceList[1] - text = "#{diceText}→#{diceList[0]},#{diceList[1]}" - - return total, text - end - - def getJudgeReusltText(dice, total, target) - return "ファンブル" if dice == 2 - return "スペシャル" if dice == 12 - - return "" if target.nil? - - return "成功" if total >= target - - return "失敗" - end - - def getTableResult(table, dice, hasGap = false) - number, text, command = table.assoc(dice) - - if number.nil? && hasGap - params = nil - table.each do |data| - break if data.first > dice - - params = data - end - - number, text, command = *params - end - - if command.respond_to?(:call) - case command.arity - when 0 - text += command.call - when 1 - text += command.call(self) - end - end - - return number, text - end - - def getAddRoll(command) - return command if /^\s/ === command - - text = rollDiceCommand(command) - return " > #{command} is NOT found." if text.nil? - - return " > \n #{command} > #{text}" - end - - def getAddRollProc(command) - # 引数なしのlambda - # Ruby 1.8と1.9以降で引数の個数の解釈が異なるため || が必要 - lambda { || getAddRoll(command) } - end - - def getRandomEventAddText(day, command1, command2) - dice, = roll(1, 6) - text = " > \n 1D6[#{dice}]" - - if dice <= day - text += " > 日数[#{day}]以下" - text += getAddRoll(command1) - else - text += " > 日数[#{day}]を超えている" - text += getAddRoll(command2) - end - - return text - end - - def getRandomEventAddTextProc(day, command1, command2) - # 引数なしのlambda - # Ruby 1.8と1.9以降で引数の個数の解釈が異なるため || が必要 - lambda { || getRandomEventAddText(day, command1, command2) } - end - - def getRandomEventDiceCommandResult(command) - return nil unless /^RET(\d+)$/ === command - - day = Regexp.last_match(1).to_i - - name = "ランダムイベント表" - table = [ - [1, "さらに1D6を振る。現在PCがいるエリアの【日数】以下なら「施設表(FCLT)」へ移動。【日数】を超えていれば「ダンジョン表(DNGN#{day})」(153ページ)へ移動。", getRandomEventAddTextProc(day, "FCLT", "DNGN#{day}")], - [2, "さらに1D6を振る。現在PCがいるエリアの【日数】以下なら「世界の旅表」(157ページ)へ移動。【日数】を超えていれば「野外遭遇表(OUTENC)」(155ページ)へ移動。", getRandomEventAddTextProc(day, " > 「世界の旅表」(157ページ)へ。", "OUTENC")], - [3, "「施設表」へ移動。", getAddRollProc("FCLT")], - [4, "「世界の旅表」(157ページ)へ移動。"], - [5, "「野外遭遇表」(155ページ)へ移動。", getAddRollProc("OUTENC")], - [6, "「ダンジョン表」(152ページ)へ移動。", getAddRollProc("DNGN#{day}")] - ] - - dice, = roll(1, 6) - number, text = getTableResult(table, dice) - - return nil if text.nil? - - return "#{name}(#{number}) > #{text}" - end - - def getRandomEventPlusDiceCommandResult(command) - return nil unless /^RETP(\d+)$/ === command - - day = Regexp.last_match(1).to_i - - name = "ランダムイベント表プラス" - table = [ - [1, "さらに1D6を振る。現在PCがいるエリアの【日数】以下なら施設表プラス(022ページ)へ移動。【経過日数】を超えていればダンジョン表プラス(025ページ)へ移動", - getRandomEventAddTextProc(day, "FCLTP", "DNGNP#{day}")], - [2, "さらに1D6を振る。現在PCがいるエリアの【日数】以下なら世界の旅表(基本157ページ)へ移動。【経過日数】を超えていれば野外遭遇表(基本155ページ)へ移動", - getRandomEventAddTextProc(day, " > 「世界の旅表」(157ページ)へ。", "OUTENC")], - [3, "さらに1D6を振る。現在PCがいるエリアの【日数】以下なら世界の旅表2(028ページ)へ移動。【経過日数】を超えていれば野外遭遇表プラス(025ページ)へ移動", - getRandomEventAddTextProc(day, " > 世界の旅表2(028ページ)へ。", "OUTENCP")], - [4, "さらに1D6を振る。奇数なら世界の旅表(基本157ページ)へ移動。偶数なら世界の旅表2(028ページ)へ移動", - getRandomEventAddTextProc(day, " > 世界の旅表(基本157ページ)へ。", "偶数なら世界の旅表2(028ページ)へ。")], - [5, "施設表プラスへ移動(022ページ)", getAddRollProc("FCLTP")], - [6, "ダンジョン表プラスへ移動(025ページ)", getAddRollProc("DNGNP#{day}")] - ] - - dice, = roll(1, 6) - number, text = getTableResult(table, dice) - - return nil if text.nil? - - return "#{name}(#{number}) > #{text}" - end - - def getDungeonTableDiceCommandResult(command) - return nil unless /^DNGN(\d+)$/ === command - - day = Regexp.last_match(1).to_i - - name = "ダンジョン表" - table = - [ - [1, "犬小屋(155ページ)。"], - [2, "犬小屋(155ページ)。"], - [3, "「ダンジョン遭遇表」(153ページ)へ移動。小型ダンジョンだ。"], - [4, "「ダンジョン遭遇表」(153ページ)へ移動。小型ダンジョンだ。"], - [5, "「ダンジョン遭遇表」(153ページ)へ移動。ここは中型ダンジョンなので、モンスターが出現した場合、数が1体増加する。さらにイベントの経験値が1増加する。"], - [6, "「ダンジョン遭遇表」(153ページ)へ移動。ここは大型ダンジョンなので、モンスターが出現した場合、数が2体増加する。さらにイベントの経験値が2増加する。"], - [7, "牢獄遭遇表へ移動(154ページ)。牢獄つきダンジョン。"], - ] - - dice, = roll(1, 6) - dice += 1 if day >= 4 - - hasGap = true - number, text = getTableResult(table, dice, hasGap) - - return nil if text.nil? - - return "#{name}(#{number}) > #{text}" - end - - def getDungeonPlusTableDiceCommandResult(command) - return nil unless /^DNGNP(\d+)$/ === command - - day = Regexp.last_match(1).to_i - - name = "ダンジョン表プラス" - table = - [ - [2, "犬小屋(基本155ページ)"], - [3, "犬小屋(基本155ページ)"], - [4, "犬小屋(基本155ページ)"], - [5, "犬小屋(基本155ページ)"], - [6, "「ダンジョン遭遇表」(基本153ページ)へ移動。小型ダンジョンだ。"], - [7, "「ダンジョン遭遇表」(基本153ページ)へ移動。小型ダンジョンだ。"], - [8, "「ダンジョン遭遇表」(基本153ページ)へ移動。ここは中型ダンジョンのため、モンスターが出現した場合、数が1体増加する。またイベントの【経験値】が1増加する。"], - [9, "「ダンジョン遭遇表」(基本153ページ)へ移動。ここは大型ダンジョンのため、モンスターが出現した場合、数が2体増加する。またイベントの【経験値】が2増加する。"], - [10, "「ダンジョン遭遇表」(基本153ページ)へ移動。近くに寄っただけで吸い込まれる罠のダンジョンだ。「ダンジョン遭遇表」を使用したあと、中央にあるモニュメントに触れて転移して出るか、【鉄格子】と戦闘して出るか選択する。転移した場合は闇の目の前に出てしまい、全力ダッシュで【ST】を1D6消費する。【鉄格子】との戦闘では逃走を選択できない。"], - [11, "「ダンジョン遭遇表」(基本153ページ)へ移動。水浸しのダンジョンで、「ダンジョン遭遇表」を使用した直後に【ST】が3減少する。「水泳」"], - [12, "水路に囲まれた水上遺跡だ。なかに入るなら【ST】を4消費(「水泳」)してから「ダンジョン遭遇表」(基本153ページ)へ移動。イベントの判定に成功すると追加で【豪華な宝箱】が1つ出現し、戦闘か開錠を試みられる。"], - [13, "「牢獄遭遇表」(基本154ページ)へ移動。牢獄つきダンジョンだ。"], - [14, "砂の遺跡にたどりつき、「牢獄遭遇表」(基本154ページ)へ移動。モンスターが出現した場合、数が2体増加する。またイベントの【経験値】が2増加する。イベントの判定に成功すると追加で【珍しい箱】が1つ出現し、戦闘か開錠を試みられる。"], - ] - - dice, = roll(2, 6) - dice += 2 if day >= 4 - - hasGap = true - number, text = getTableResult(table, dice, hasGap) - - return nil if text.nil? - - return "#{name}(#{number}) > #{text}" - end - - def self.getGoldTextProc(diceCount, times, doSomething) - lambda { |diceBot| - total, diceText = diceBot.roll(diceCount, 6) - gold = total * times - - " > #{diceCount}D6[#{diceText}]×#{times} > 【所持金】 #{gold} を#{doSomething}" - } - end - - def self.getDownTextProc(name, diceCount) - lambda { |diceBot| - total, diceText = diceBot.roll(diceCount, 6) - - " > #{diceCount}D6[#{diceText}] > #{name}が #{total} 減少する" - } - end - - def self.getAddRollProc(command) - lambda { |diceBot| - diceBot.getAddRoll(command) - } - end - - TABLES = { - "FT" => { - :name => "ファンブル表", - :type => '1D6', - :table => [ - [1, "装備以外のアイテムのうちプレイヤー指定の1つを失う"], - [2, "装備のうちプレイヤー指定の1つを失う"], - [3, "1D6に100を掛け、それだけの【所持金】を失う", getGoldTextProc(1, 100, "失う")], - [4, "1D6に100を掛け、それだけの【所持金】を拾う", getGoldTextProc(1, 100, "拾う")], - [5, "【経験値】2を獲得する"], - [6, "【経験値】4を獲得する"] - ] - }, - - "DC" => { - :name => "魔王追撃表", - :type => '1D6', - :table => [ - [1, "装備以外のアイテムのうちGM指定の1つを失う"], - [2, "装備のうちGM指定の1つを失う"], - [3, "2D6に100を掛け、それだけの【所持金】を失う", getGoldTextProc(2, 100, "失う")], - [4, "【LIFE】が1D6減少する", getDownTextProc("【LIFE】", 1)], - [5, "【ST】が1D6減少する", getDownTextProc("【ST】", 1)], - [6, "【LIFE】が2D6減少する", getDownTextProc("【LIFE】", 2)] - ] - }, - - "PR" => { - :name => "進行ルート表", - :type => '1D6', - :table => [ - [1, "少し荒れた地形が続く。【日数】から【筋力】を引いただけ【ST】が減少する(最低0)。"], - [2, "穏やかな地形が続く。【日数】から【敏捷】を引いただけ【ST】が減少する(最低0)。"], - [3, "険しい岩山だ。【日数】に1を足して【生命】を引いただけ【ST】が減少する(最低0)。「登山」"], - [4, "山で迷った。【日数】に2を足して【知力】を引いただけ【ST】が減少する(最低0)。「登山」"], - [5, "川を泳ぐ。【日数】に1を足して【意志】を引いただけ【ST】が減少する(最低0)。「水泳」"], - [6, "広い川を船で渡る。【日数】に2を足して【魅力】を引いただけ【ST】が減少する(最低0)。「水泳」"] - ] - }, - - "TT" => { - :name => "会話テーマ表", - :type => '1D6', - :table => [ - [1, "身体の悩みごとについて話す。【筋力】で判定。"], - [2, "仕事の悩みごとについて話す。【敏捷】で判定。"], - [3, "家族の悩みごとについて話す。【生命】で判定。"], - [4, "勇者としてこれでいいのか的悩みごとを話す。【知力】で判定。"], - [5, "友人関係の悩みごとを話す。【意志】で判定。"], - [6, "恋の悩みごとを話す。【魅力】で判定。"] - ] - }, - - "EC" => { - :name => "逃走判定表", - :type => '1D6', - :table => [ - [1, "崖を登れば逃げられそうだ。【筋力】を使用する。"], - [2, "障害物はない。走るしかない。【敏捷】を使用する。"], - [3, "しつこく追われる。【生命】を使用する。"], - [4, "隠れられる地形がある。【知力】を使用する。"], - [5, "背中を向ける勇気が出るか? 【意志】を使用す"], - [6, "もう人徳しか頼れない。【魅力】を使用する。"] - ] - }, - - "RNPC" => { - :name => "ランダムNPC特徴表", - :type => '2D6', - :table => [ - [2, "【物持ちの】"], - [3, "【目のいい】"], - [4, "【弱そうな】"], - [5, "【宝石好きな】"], - [6, "【エッチな】"], - [7, "【ケチな】"], - [8, "【変態の】"], - [9, "【金持ちの】"], - [10, "【強そうな】"], - [11, "【目の悪い】"], - [12, "【すばやい】"] - ] - }, - - "SCT" => { - :name => "偵察表", - :type => '1D6', - :table => [ - [1, "山に突き当たる。「登山」判定:【筋力】 ジャッジ:山を登る描写。"], - [2, "川を流れ下る。「水泳」判定:【敏捷】 ジャッジ:川でピンチに陥る描写。"], - [3, "広い湖だ……。「水泳」判定:【生命】 ジャッジ:湖面を泳ぐ描写。"], - [4, "山の楽なルートを探そう。「登山」判定:【知力】 ジャッジ:山の豆知識。"], - [5, "迫る闇から恐怖のあまり目を離せない。判定:【意志】 ジャッジ:勇者としての決意。"], - [6, "任意のNPCに会って情報を聞く。判定:【魅力】 ジャッジ:相手を立てる会話。"] - ] - }, - - "FCLT" => { - :name => "施設表", - :type => '2D6', - :table => [ - [2, "聖なる神殿(152ページ)。"], - [3, "魔王の力を封じた神殿(152ページ)。"], - [4, "耳長たちの村(152ページ)。"], - [5, "「村遭遇表」へ移動。大きな街なので村遭遇表を2回使用し、好きな結果を選べる。"], - [6, "「村遭遇表」へ移動。小さな村だ。"], - [7, "エリアの地形が「雪原」なら雪国の小屋(152ページ)。エリアの地形が「山岳」なら山小屋(152ページ)。それ以外の地形なら「村遭遇表」へ移動。この村は「石の小屋」だ。"], - [8, "村遭遇表」へ移動。小さな村だ。"], - [9, "村遭遇表」へ移動。大きな街なので村遭遇表を2回使用し、好きな結果を選べる。"], - [10, "滅びた石の小屋(152ページ)。"], - [11, "滅びた小さな村(152ページ)。"], - [12, "闇ギルド(152ページ)。"] - ] - }, - - "FCLTP" => { - :name => "施設表プラス", - :type => 'D66', - :table => [ - [11, "聖なる神殿(基本152ページ)"], - [12, "魔王の力を封じた神殿(基本152ページ)"], - [13, "耳長たちの村(基本152ページ)判定成功時に【耳長の軽い弓】【耳長の杖】を購入可能"], - [14, "村遭遇表へ移動(基本151ページ)大きな街なので村遭遇表を2回振り、好きな結果を選べる"], - [15, "村遭遇表へ移動(基本151ページ)小さな村"], - [16, "エリアの地形が雪原なら雪国の小屋(基本152ページ)エリアの地形が山岳なら山小屋(基本152ページ)それ以外の地形なら石の小屋、村遭遇表へ移動(基本151ページ)"], - [22, "村遭遇表へ移動(基本151ページ)小さな村"], - [23, "村遭遇表へ移動(基本151ページ)大きな街なので村遭遇表を2回振り、好きな結果を選べる"], - [24, "滅びた石の小屋(基本152ページ)"], - [25, "滅びた小さな村(基本152ページ)"], - [26, "闇ギルド(基本152ページ)判定成功時に一度だけ【闇ギルド袋屋】に3000シルバ支払い【所持重量】を1増加することができる。"], - [33, "小さな店遭遇表プラスへ移動(023ページ)"], - [34, "酒場遭遇表プラスへ移動"], - [35, "酒場遭遇表プラスへ移動"], - [36, "錬金おばばの家(024ページ)"], - [44, "鍛冶屋の家(024ページ)"], - [45, "半獣人の隠れ家(024ページ)"], - [46, "罪人の街(024ページ)"], - [55, "封印の街(024ページ)"], - [56, "水上の街(024ページ)"], - [66, "人魚の集落(024ページ)"] - ] - }, - - "OUTENC" => { - :name => "野外遭遇表", - :type => '1D6', - :table => [ - [1, "エリアの地形ごとの野外モンスター表へ移動。モンスターのうち1体にランダムな特徴がつく。モンスター特徴表(156ページ)を使用する。", getAddRollProc("MONFT")], - [2, "エリアの地形ごとの野外モンスター表へ移動。"], - [3, "エリアの地形ごとの野外モンスター表へ移動。"], - [4, "アンデッドの群れ(156ページ)。"], - [5, "盗賊の群れ(156ページ)。"], - [6, "希少動物表(156ページ)へ移動。", getAddRollProc("RANI")] - ] - }, - - "OUTENCP" => { - :name => "野外遭遇表プラス", - :type => '1D6', - :table => [ - [1, "エリアの地形ごとの野外モンスター表プラスへ移動。モンスターのうち1体にランダムな特徴がつく。モンスター特徴表プラス(027ページ)を使用する。", getAddRollProc("MONFTP")], - [2, "エリアの地形ごとの野外モンスター表プラスへ移動し、出現したモンスターとの戦闘が発生する"], - [3, "スライムモンスター表プラス(027ページ)へ移動。"], - [4, "アンデッドの群れ(基本156ページ)"], - [5, "盗賊の群れ(基本156ページ)"], - [6, "希少動物表(基本156ページ)へ移動", getAddRollProc("RANI")] - ] - }, - - "MONFT" => { - :name => "モンスター特徴表", - :type => 'D66', - :table => [ - [11, "【エッチな】"], - [12, "【変態の】"], - [13, "【弱そうな】"], - [14, "【目のいい】"], - [15, "【目の悪い】"], - [16, "【強そうな】"], - [22, "【強そうな】"], - [23, "【宝石好きな】"], - [24, "【幻の】"], - [25, "【違法な】"], - [26, "【イカした】"], - [33, "【物持ちの】"], - [34, "【炎を吐く】"], - [35, "【必中の】"], - [36, "【すばやい】"], - [44, "【やたら硬い】"], - [45, "【名の知れた】"], - [46, "【凶悪な】"], - [55, "【賞金首の】"], - [56, "【古代種の】"], - [66, "【最強の】"] - ] - }, - - "MONFTP" => { - :name => "モンスター特徴表プラス", - :type => 'D66', - :table => [ - [11, "【エッチな】(基本178ページ)"], - [12, "【変態の】(基本178ページ)"], - [13, "【目のいい】(基本178ページ)"], - [14, "【目の悪い】(基本178ページ)"], - [15, "【強そうな】(基本178ページ)"], - [16, "【宝石好きな】(基本178ページ)"], - [22, "【幻の】(基本178ページ)"], - [23, "【違法な】(基本178ページ)"], - [24, "【イカした】(基本178ページ)"], - [25, "【物持ちの】(基本178ページ)"], - [26, "【炎を吐く】(基本178ページ)"], - [33, "【やたら硬い】(基本178ページ)"], - [34, "【古代種の】(基本178ページ)"], - [35, "【最強の】(基本178ページ)"], - [36, "【異国風の】(047ページ)"], - [44, "【毛深い】(047ページ)"], - [45, "【耐火の】(047ページ)"], - [46, "【耐雷の】(047ページ) "], - [55, "【浮遊の】(047ページ)"], - [56, "【臭い】( 0 4 7ページ)"], - [66, "【恐怖の】(047ページ)"] - ] - }, - - "RANI" => { - :name => "希少動物表", - :type => '1D6', - :hasGap => true, - :table => [ - [1, "【『緑の森』隊長】1体と遭遇する。今回のセッションで【雪ウサギ】【山岳ゴート】【遺跡白馬】【草原カワウソ】【砂漠キツネ】のいずれかを倒したことがあれば、戦闘が発生する。戦闘にならなかった場合はなごやかに別れる。"], - [2, "【『緑の森』団員】1体と遭遇する。今回のセッションで【雪ウサギ】【山岳ゴート】【遺跡白馬】【草原カワウソ】【砂漠キツネ】のいずれかを倒したことがあれば、戦闘が発生する。戦闘にならなかった場合はなごやかに別れる。"], - [4, "地形によって異なる希少動物が1体出現する。雪原なら【雪ウサギ】、山岳なら【山岳ゴート】、遺跡なら【遺跡白馬】、草原なら【草原カワウソ】、砂漠と荒野は【砂漠キツネ】。それ以外は【緑の森団員】となる。戦闘を挑んでもいいし、見送ってもいい。"] - ] - }, - - "DROP" => { - :name => "ドロップアイテム表", - :type => '1D6', - :table => [ - [1, "武器ドロップ表へ移動", getAddRollProc("DROPWP")], - [2, "武器ドロップ表へ移動", getAddRollProc("DROPWP")], - [3, "防具ドロップ表へ移動", getAddRollProc("DROPAR")], - [4, "食品ドロップ表へ移動", getAddRollProc("DROPFD")], - [5, "巻物ドロップ表へ移動", getAddRollProc("DROPSC")], - [6, "その他ドロップ表へ移動", getAddRollProc("DROPOT")] - ] - }, - - "DROPWP" => { - :name => "武器ドロップ表", - :type => 'D66', - :table => [ - [11, " 【さびた小剣】"], - [12, " 【さびた長剣】"], - [13, " 【さびた大剣】"], - [14, " 【長い棒】"], - [15, " 【ダガー】"], - [16, " 【木こりの大斧】"], - [22, " 【ショートブレイド】"], - [23, " 【木の杖】"], - [24, " 【狩人の弓】"], - [25, " 【レイピア】"], - [26, " 【携帯弓】"], - [33, " 【ロングブレイド】"], - [34, " 【スレンドスピア】"], - [35, " 【バトルアックス】"], - [36, " 【軍用剛弓】"], - [44, " 【グランドブレイド】"], - [45, " 【祈りの杖】"], - [46, " 【ヘビィボウガン】"], - [55, " 【シルバーランス】"], - [56, " 【イーグルブレイド】"], - [66, " 【クレセントアクス】"] - ] - }, - - "DROPAR" => { - :name => "防具ドロップ表", - :type => 'D66', - :table => [ - [11, " 【旅人の服】"], - [12, " 【旅人の服】"], - [13, " 【旅人の服】"], - [14, " 【レザーシールド】"], - [15, " 【レザーシールド】"], - [16, " 【騎士のコート】"], - [22, " 【騎士のコート】"], - [23, " 【スケイルシールド】"], - [24, " 【スケイルシールド】"], - [25, " 【レザーベスト】"], - [26, " 【レザーベスト】"], - [33, " 【ヘビィシールド】"], - [34, " 【チェインクロス】"], - [35, " 【チェインクロス】"], - [36, " 【試練の腕輪】"], - [44, " 【精霊のローブ】"], - [45, " 【必殺の腕輪】"], - [46, " 【ギガントプレート】"], - [55, " 【破壊の腕輪】"], - [56, " 【理力の腕輪】"], - [66, " 【加速の腕輪】"] - ] - }, - - "DROPHW" => { - :name => "聖武具ドロップ表", - :type => '2D6', - :table => [ - [2, "【紅き太陽の剣】"], - [3, "【紅き太陽の剣】"], - [4, "【聖剣カレドヴルフ】 "], - [5, "【聖斧エルサーベス】 "], - [6, "【水霊のマント】"], - [7, "【大地の鎧】"], - [8, "【大気の盾】"], - [9, "【聖弓ル・アルシャ】"], - [10, " 【聖槍ヴァルキウス】"], - [11, " 【聖なる月の剣】"], - [12, " 【聖なる月の剣】"] - ] - }, - - "DROPFD" => { - :name => "食品ドロップ表", - :type => 'D66', - :table => [ - [11, " 【枯れた草】"], - [12, " 【こげた草】"], - [13, " 【サボテンの肉】"], - [14, " 【動物の肉】"], - [15, " 【癒しの草】、地形が火山なら【こげた草】"], - [16, " 【癒しの草】、地形が火山なら【こげた草】、地形 が雪原なら【スノークリスタ草】"], - [22, " 【スタミナ草】、地形が火山なら【こげた草】"], - [23, " 【スタミナ草】、地形が火山なら【こげた草】、地 形が雪原なら【スノークリスタ草】"], - [24, " 【触手の草】、地形が火山なら【こげた草】"], - [25, " 【触手の草】、地形が火山なら【こげた草】、地形 が雪原なら【スノークリスタ草】"], - [26, " 【スタミナのアンプル】"], - [33, " 【癒しのアンプル】"], - [34, " 【癒しのアンプル】"], - [35, " 【ナユタの実】、地形が火山なら【こげた草】"], - [36, " 【ナユタの実】、地形が火山なら【こげた草】"], - [44, " 【火炎のアンプル】"], - [45, " 【強酸のアンプル】"], - [46, " 【とぶクスリ】"], - [55, " 【竜炎のアンプル】"], - [56, " 【おいしいお弁当】"], - [66, " 【自然治癒のアンプル】"] - ] - }, - - "DROPSC" => { - :name => "巻物ドロップ表", - :type => 'D66', - :table => [ - [11, " 【石壁の巻物】"], - [12, " 【石壁の巻物】"], - [13, " 【周辺の地図】"], - [14, " 【周辺の地図】"], - [15, " 【周辺の地図】"], - [16, " 【火炎付与の巻物】"], - [22, " 【混乱の巻物】"], - [23, " 【剣の巻物】"], - [24, " 【剣の巻物】"], - [25, " 【鎧の巻物】"], - [26, " 【鎧の巻物】"], - [33, " 【応急修理の巻物】"], - [34, " 【応急修理の巻物】"], - [35, " 【移動不能付与の巻物】"], - [36, " 【移動不能付与の巻物】"], - [44, " 【宝の地図】"], - [45, " 【宝の地図】"], - [46, " 【召喚の巻物】"], - [55, " 【剣の王の巻物】"], - [56, " 【守りの神の巻物】"], - [66, " 【高度修復の巻物】"] - ] - }, - - "DROPOT" => { - :name => "その他ドロップ表", - :type => 'D66', - :table => [ - [11, " 【大きな石】、地形が火山なら【くすんだ宝石】"], - [12, " 【大きな石】、地形が火山なら【くすんだ宝石】"], - [13, " 【大きな石】、地形が火山なら【美しい宝石】"], - [14, " 【木製の矢】"], - [15, " 【理力の矢】"], - [16, " 【鉄製の矢】"], - [22, " 【投げナイフ】"], - [23, " 【爆弾矢】"], - [24, " 【くすんだ宝石】"], - [25, " 【盾修復キット】"], - [26, " 【上質の研ぎ石】"], - [33, " 【エルザイト爆弾】"], - [34, " 【セーブクリスタル】"], - [35, " 【試練の腕輪】"], - [36, " 【必殺の腕輪】"], - [44, " 【破壊の腕輪】"], - [45, " 【理力の腕輪】"], - [46, " 【加速の腕輪】"], - [55, " 【美しい宝石】"], - [56, " 【封印のカギ】"], - [66, " 【闇ギルド会員証】"] - ] - }, - - "DROPP" => { - :name => "ドロップアイテム表プラス", - :type => 'D66', - :table => [ - [11, "武器ドロップ表", getAddRollProc("DROPWP")], - [12, "武器ドロップ表", getAddRollProc("DROPWP")], - [13, "武器ドロップ表2", getAddRollProc("DROPWP2")], - [14, "武器ドロップ表2", getAddRollProc("DROPWP2")], - [15, "防具ドロップ表", getAddRollProc("DROPAR")], - [16, "防具ドロップ表", getAddRollProc("DROPAR")], - [22, "防具ドロップ表2", getAddRollProc("DROPAR2")], - [23, "防具ドロップ表2", getAddRollProc("DROPAR2")], - [24, "食品ドロップ表", getAddRollProc("DROPFD")], - [25, "食品ドロップ表", getAddRollProc("DROPFD")], - [26, "食品ドロップ表2", getAddRollProc("DROPFD2")], - [33, "食品ドロップ表2", getAddRollProc("DROPFD2")], - [34, "薬品ドロップ表プラス", getAddRollProc("DROPDRP")], - [35, "薬品ドロップ表プラス", getAddRollProc("DROPDRP")], - [36, "巻物ドロップ表", getAddRollProc("DROPSC")], - [44, "巻物ドロップ表", getAddRollProc("DROPSC")], - [45, "巻物ドロップ表2", getAddRollProc("DROPSC2")], - [46, "巻物ドロップ表2", getAddRollProc("DROPSC2")], - [55, "その他ドロップ表", getAddRollProc("DROPOT")], - [56, "その他ドロップ表", getAddRollProc("DROPOT")], - [66, "その他ドロップ表2", getAddRollProc("DROPOT2")] - ] - }, - - "DROPDRP" => { - :name => "薬品ドロップ表プラス", - :type => 'D66', - :table => [ - [11, "【燃料油のビン】"], - [12, "【燃料油のビン】"], - [13, "【燃料油のビン】"], - [14, "【弱体の薬】"], - [15, "【弱体の薬】"], - [16, "【弱体の薬】"], - [22, "【成長の薬】"], - [23, "【ベルセルクアンプル】"], - [24, "【ベルセルクアンプル】"], - [25, "【浮遊の薬】"], - [26, "【浮遊の薬】"], - [33, "【反動解消の薬】"], - [34, "【反動解消の薬】"], - [35, "【癒しの大ボトル】"], - [36, "【癒しの大ボトル】"], - [44, "【超元気のアンプル】"], - [45, "【超元気のアンプル】"], - [46, "【薬命酒】"], - [55, "【薬命酒】"], - [56, "【洗脳のクスリ】"], - [66, "【洗脳のクスリ】"] - ] - }, - - "DROPSC2" => { - :name => "巻物ドロップ表2", - :type => 'D66', - :table => [ - [11, "【火炎波の巻物】"], - [12, "【悟りの巻物】"], - [13, "【理盾の巻物】"], - [14, "【泉の巻物】"], - [15, "【雷神の巻物】"], - [16, "【超激震の巻物】"], - [22, "【闇を阻む巻物】"], - [23, "【引きこもりの巻物】"], - [24, "【鋼鉄の巻物】"], - [25, "【回廊の巻物】"], - [26, "【騎士団の巻物】"], - [33, "【水泳能力の巻物】"], - [34, "【浮遊能力の巻物】"], - [35, "【治癒の書】"], - [36, "【浮遊の書】"], - [44, "【突風の書】"], - [45, "【睡眠の書】"], - [46, "【火炎の書】"], - [55, "【鋼鉄の書】"], - [56, "【加速の書】"], - [66, "【闇払いの書】"] - ] - }, - - "DROPWP2" => { - :name => "武器ドロップ表2", - :type => 'D66', - :table => [ - [11, "【さびた巨大斧】"], - [12, "【さびた巨大斧】"], - [13, "【モコモコのバトン】"], - [14, "【モコモコのバトン】"], - [15, "【ベルセルクアクス】"], - [16, "【ベルセルクアクス】"], - [22, "【クナイ】"], - [23, "【クナイ】"], - [24, "【術殺槍】"], - [25, "【ウィンドスピア】"], - [26, "【ウィンドスピア】"], - [33, "【つるはし】"], - [34, "【つるはし】"], - [35, "【理力の剣】"], - [36, "【蒼い短刀】"], - [44, "【クリムゾンクロウ】"], - [45, "【ナユタの杖】"], - [46, "【ナユタの杖】"], - [55, "【一撃斧】"], - [56, "【ファイアブランド】"], - [66, "【ソードクロスボウ】"] - ] - }, - - "DROPAR2" => { - :name => "防具ドロップ表2", - :type => 'D66', - :table => [ - [11, "【ボロボロの服】"], - [12, "【ボロボロの服】"], - [13, "【穴だらけの鎧】"], - [14, "【穴だらけの鎧】"], - [15, "【木製の追加装甲】"], - [16, "【木製の追加装甲】"], - [22, "【ガラスの鎧】"], - [23, "【ガラスの鎧】"], - [24, "【鉄板の追加装甲】"], - [25, "【鉄板の追加装甲】"], - [26, "【太陽のランタン】"], - [33, "【耐火服】"], - [34, "【獣の革のバッグ】"], - [35, "【重量ブーツ】"], - [36, "【冒険者のブーツ】"], - [44, "【ラバーブーツ】"], - [45, "【風のマント】"], - [46, "【狩人の服】"], - [55, "【ドラゴンスケイル】"], - [56, "【不育の腕輪】"], - [66, "【竜革の大きなバッグ】"] - ] - }, - - "DROPHWP" => { - :name => "聖武具ドロップ表プラス", - :type => 'D66', - :table => [ - [11, "【大気の盾】"], - [23, "【聖剣カレドヴルフ】"], - [36, "【紅蓮の書】"], - [12, "【大気の盾】"], - [24, "【聖斧エルサーベス】"], - [44, "【聖弓ル・アルシャ】"], - [13, "【大地の鎧】"], - [25, "【聖斧エルサーベス】"], - [45, "【聖弓ル・アルシャ】"], - [14, "【大地の鎧】"], - [26, "【聖槍ヴァルキウス】"], - [46, "【聖なる月の剣】"], - [15, "【水霊のマント】"], - [33, "【聖槍ヴァルキウス】"], - [55, "【紅き太陽の剣】"], - [16, "【水霊のマント】"], - [34, "【聖槍ヴァルキウス】"], - [56, "【嵐の聖剣】"], - [22, "【聖剣カレドヴルフ】"], - [35, "【紅蓮の書】"], - [66, "【超重の聖斧】"] - ] - }, - - "DROPFD2" => { - :name => "食品ドロップ表2", - :type => '1D6', - :table => [ - [1, "【解毒の草】、地形が火 山なら【こげた草】、地 形が海岸なら【おいし い海藻】"], - [2, "【気付けの草】、地形が 火山なら【こげた草】、 地形が海岸なら【おい しい海藻】"], - [3, "【夜目の草】"], - [4, "【力が湧く草】"], - [5, "【集中の草】"], - [6, "【牛乳】"] - ] - }, - - "DROPOT2" => { - :name => "その他 ドロップ表2", - :type => '2D6', - :table => [ - [2, "【五連の矢】"], - [3, "【炎の矢】"], - [4, "【聖なる投げ刃】"], - [5, "【物体破壊爆弾】"], - [6, "【閃光弾】"], - [7, "【聖なる短剣の破片】"], - [8, "【閃光弾】"], - [9, "【旋風の投げ刃】"], - [10, "【スーパーエルザイト 爆弾】"], - [11, "【炎の矢】"], - [12, "【五連の矢】"] - ] - }, - - "DROPRAREBOX2" => { - :name => "珍しい箱ドロップ表2", - :type => '2D6', - :table => [ - [2, "聖武具ドロップ表プラ スへ"], - [3, "【耐久力の結晶】"], - [4, "【偉大な筋力の結晶】"], - [5, "【偉大な敏捷の結晶】"], - [6, "【偉大な生命の結晶】"], - [7, "【竜鱗の追加装甲】"], - [8, "【偉大な魅力の結晶】"], - [9, "【偉大な意志の結晶】"], - [10, "【偉大な知力の結晶】"], - [11, "【スタミナの結晶】"], - [12, "【闇払いの書】"] - ] - }, - - "KNGFTP" => { - :name => "王特徴表プラス", - :type => '1D6', - :table => [ - [1, "【力の王の】(047ページ)"], - [2, "【力の王の】(047ページ)"], - [3, "【疾風の王の】(047ページ)"], - [4, "【疾風の王の】(047ページ)"], - [5, "【炎の王の】(047ページ)"], - [6, "【絶望の王の】(047ページ)"], - ] - } - }.freeze - - setPrefixes(['\d*JD.*', 'RET\d+', 'RETP\d+', 'DNGN\d+'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/OracleEngine.rb b/src/src_bcdice/diceBot/OracleEngine.rb deleted file mode 100644 index 81bc39acd..000000000 --- a/src/src_bcdice/diceBot/OracleEngine.rb +++ /dev/null @@ -1,270 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/command_parser' -require 'utils/format' -require 'utils/modifier_formatter' - -class OracleEngine < DiceBot - include ModifierFormatter - - # ゲームシステムの識別子 - ID = 'OracleEngine' - - # ゲームシステム名 - NAME = 'オラクルエンジン' - - # ゲームシステム名の読みがな - SORT_KEY = 'おらくるえんしん' - - # ダイスボットの使い方 - HELP_MESSAGE = <=z) - ダイスをx個振り、1個以上目標シフトzに到達したか判定します。修正yは全てのダイスにかかります。 - 成功した時は目標シフトを、失敗した時はダイスの最大値-1シフトを返します - zが指定されないときは、ダイスをx個を振り、それに修正yしたものを返します。 - 通常、最低シフトは1、最大シフトは6です。目標シフトもそろえられます。 - また、CLの後に7を入れ、(xCL7+y>=z)と入力すると最大シフトが7になります。 - ・判定 (xR6+y@c#f$b>=z) - ダイスをx個振り、大きいもの2つだけを見て達成値を算出し、成否を判定します。修正yは達成値にかかります。 - ダイスブレイクとしてbを、クリティカル値としてcを、ファンブル値としてfを指定できます。 - それぞれ指定されない時、0,12,2になります。 - クリティカル値の上限はなし、下限は2。ファンブル値の上限は12、下限は0。 - zが指定されないとき、達成値の算出のみ行います。 - ・ダメージロールのダイスブレイク (xD6+y$b) - ダイスをx個振り、合計値を出します。修正yは合計値にかかります。 - ダイスブレイクとしてbを指定します。合計値は0未満になりません。 -MESSAGETEXT - - # ダイスボットで使用するコマンドを配列で列挙する - setPrefixes(['\d+CL.*', '\d+R6.*', '\d+D6.*\$[\+\-]?\d+.*']) - - def initialize - super - @sortType = 3 - end - - def rollDiceCommand(command) - case command - when /\d+CL.*/i - clutch_roll(command) - when /\d+D6.*\$[\+\-]?\d.*/ - damage_roll(command) - when /\d+R6/ - r_roll(command) - end - end - - # クラッチロール - def clutch_roll(string) - debug("clutch_roll begin", string) - - parser = CommandParser.new(/\d+CL[67]?/i) - @cmd = parser.parse(string) - - unless @cmd - return nil - end - - unless [:>=, nil].include?(@cmd.cmp_op) - return nil - end - - @times, @max_shift = @cmd.command.split("CL").map(&:to_i) - @max_shift ||= 6 - @cmd.target_number = clamp(@cmd.target_number, 1, @max_shift) if @cmd.cmp_op - - if @times == 0 - return nil - end - - dice_list = roll_(@times, 6).map { |x| clamp(x + @cmd.modify_number, 1, @max_shift) }.sort - - sequence = [ - expr_clutch(), - "[#{dice_list.join(', ')}]", # Ruby 1.8はArray#to_sの挙動が違う - result_clutch(dice_list.last) - ] - - return sequence.join(' > ') - end - - def expr_clutch() - max_shift = @max_shift == 7 ? 7 : nil - cmp_op = Format.comparison_operator(@cmd.cmp_op) - modify_number = format_modifier(@cmd.modify_number) - - "(#{@times}CL#{max_shift}#{modify_number}#{cmp_op}#{@cmd.target_number})" - end - - def result_clutch(after_shift) - if @cmd.cmp_op != :>= - "シフト#{after_shift}" - elsif after_shift >= @cmd.target_number - "成功 シフト#{@cmd.target_number}" - else - after_shift -= 1 - after_shift = 1 if after_shift < 1 - "失敗 シフト#{after_shift}" - end - end - - def clamp(i, min, max) - if i < min - min - elsif i > max - max - else - i - end - end - - def roll_(times, sides) - _, dice_list = roll(times, sides) - return dice_list.split(',').map(&:to_i) - end - - # 判定 - def r_roll(string) - parser = CommandParser.new(/\d+R6/i) - @cmd = parser.parse(string) - unless @cmd - return nil - end - - unless [:>=, nil].include?(@cmd.cmp_op) - return nil - end - - @times = @cmd.command.to_i - - if @times == 0 - return nil - end - - @critical = normalize_critical(@cmd.critical || 12, string) - @fumble = normalize_fumble(@cmd.fumble || 2, string) - @break = (@cmd.dollar || 0).abs - - dice_list = roll_(@times, 6).sort - dice_broken = dice_list.pop(@break) - - # ブレイク後のダイスから最大値2つの合計がダイスの値 - dice_total = dice_list.dup.pop(2).inject(0, :+) - total = dice_total + @cmd.modify_number - - sequence = [ - expr_r(), - dice_result_r(dice_total, dice_list, dice_broken), - result_r(dice_total, total) - ] - - return sequence.join(' > ') - end - - def expr_r() - modify_number = format_modifier(@cmd.modify_number) - critical = @critical == 12 ? "" : "c[#{@critical}]" - fumble = @fumble == 2 ? "" : "f[#{@fumble}]" - brak = @break == 0 ? "" : "b[#{@break}]" - cmp_op = Format.comparison_operator(@cmd.cmp_op) - - "(#{@times}R6#{modify_number}#{critical}#{fumble}#{brak}#{cmp_op}#{@cmd.target_number})" - end - - def dice_result_r(dice_total, dice_list, break_list) - modify_number_text = format_modifier(@cmd.modify_number) - - # Ruby 1.8はArray#to_sの挙動が違う - if break_list.empty? - "#{dice_total}[#{dice_list.join(', ')}]#{modify_number_text}" - else - "#{dice_total}[#{dice_list.join(', ')}]×[#{break_list.join(', ')}]#{modify_number_text}" - end - end - - def result_r(dice_total, total) - if dice_total <= @fumble - "ファンブル!" - elsif dice_total >= @critical - "クリティカル!" - elsif @cmd.cmp_op == :>= - if total >= @cmd.target_number - "#{total} 成功" - else - "#{total} 失敗" - end - else - total.to_s - end - end - - def normalize_critical(critical, string) - if /@[+-]/.match(string) - critical = 12 + critical - end - - if critical < 2 - critical = 2 - end - - return critical - end - - def normalize_fumble(fumble, string) - if /#[+-]/.match(string) - fumble = 2 + fumble - end - - return clamp(fumble, 0, 12) - end - - # ダメージロール - def damage_roll(string) - parser = CommandParser.new(/\d+D6/i) - @cmd = parser.parse(string) - - if @cmd.nil? || !@cmd.cmp_op.nil? - return nil - end - - @times = @cmd.command.to_i - @break = (@cmd.dollar || 0).abs - - if @times == 0 - return nil - end - - dice_list = roll_(@times, 6).sort - dice_broken = dice_list.pop(@break) - - total_n = dice_list.inject(0, :+) + @cmd.modify_number - total_n = 0 if total_n < 0 - - sequence = [ - expr_damage(), - result_damage(dice_list, dice_broken), - total_n - ] - - return sequence.join(' > ') - end - - def expr_damage() - modify_number = format_modifier(@cmd.modify_number) - brak = @break == 0 ? "" : "b[#{@break}]" - - "(#{@times}D6#{modify_number}#{brak})" - end - - def result_damage(dice_list, break_list) - dice_total = dice_list.inject(0, :+) - modify_number_text = format_modifier(@cmd.modify_number) - - if break_list.empty? - "#{dice_total}[#{dice_list.join(', ')}]#{modify_number_text}" - else - "#{dice_total}[#{dice_list.join(', ')}]×[#{break_list.join(', ')}]#{modify_number_text}" - end - end -end diff --git a/src/src_bcdice/diceBot/OrgaRain.rb b/src/src_bcdice/diceBot/OrgaRain.rb deleted file mode 100644 index 126f95456..000000000 --- a/src/src_bcdice/diceBot/OrgaRain.rb +++ /dev/null @@ -1,73 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class OrgaRain < DiceBot - # ゲームシステムの識別子 - ID = 'OrgaRain' - - # ゲームシステム名 - NAME = '在りて遍くオルガレイン' - - # ゲームシステム名の読みがな - SORT_KEY = 'ありてあまねくおるかれいん' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 - resultArray.push("#{i}(x#{multiple})") - success += multiple - else - resultArray.push("×") - end - end - - countText = countNo.join(',') - resultText = resultArray.join(',') - - result = "#{diceCount}D10(命数:#{countText}) > #{diceText} > #{resultText} > 成功数:#{success}" - - return result - end -end diff --git a/src/src_bcdice/diceBot/Oukahoushin3rd.rb b/src/src_bcdice/diceBot/Oukahoushin3rd.rb deleted file mode 100644 index 3e19a920d..000000000 --- a/src/src_bcdice/diceBot/Oukahoushin3rd.rb +++ /dev/null @@ -1,156 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Oukahoushin3rd < DiceBot - # ゲームシステムの識別子 - ID = 'Oukahoushin3rd' - - # ゲームシステム名 - NAME = '央華封神RPG 第三版' - - # ゲームシステム名の読みがな - SORT_KEY = 'おうかほうしんRPG3' - - # ダイスボットの使い方 - HELP_MESSAGE = < { - :name => "武器攻撃裏成功表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -1ポイント清徳値が低下。連続攻撃が行える。この場合の連続攻撃においては、命中判定のサイコロは常にひっくり返して用いるが、2撃目以降はこの表は使わない。 -敵に叩きつけると同時に武器が破損。素手や身体に備わった武器(爪、牙など)で攻撃をしていた場合には、自身にも1D6(のみ)ダメージ。 -効果的命中。ダメージに1D6加算。ただし極度に疲労するため、精神値に1D6点ダメージを受ける。(2ゾロ)1ポイント仙骨が上昇、体力または機敏(攻撃を行った者が選択する)が1ポイント低下。 -ふつうの命中。 -不完全な命中、ダメージは半分。(3ゾロ)1ポイント仙骨が低下。 -ふつうの命中。 -体力または機敏(攻撃を行った者が選択する)が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。 -ふつうの命中。 -体力または機敏(攻撃を行った者が選択する)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。 -呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。 -1ポイント清徳値が低下。体力または機敏(攻撃を行った者が選択する)が1ポイント上昇。 -TABLE_TEXT_END - }, - - 'KKT' => { - :name => "狂気表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -心神喪失、生ける屍。 -被害妄想。仲間も含め、他者は全て自分を傷つけようとしていると思いこむ。行動はゲームマスターが管理。 -重度の不安症。失敗を恐れるあまり、次ラウンドは行動不可。それ以降も、2ラウンドに1回しか行動できない(自動武器や使役獣への命令なども)。\n「次のラウンドに行動できない」状態では、「割り込み」は行えない。 -重度の依存症。自分で行動を決められず、仲間に決めてもらわなければならない。 -二重人格。二つ目の人格は狂気。新たに狂気表(KKT)で決定(再度二重人格が出た場合は、振りなおす)。狂気表を使った直後は、この二つ目の人格。\n1日以上、二重人格が持続している場合、その間に精神値ダメージを受けるたびに、その直後に1Dを振らねばならない。1が出たらこの狂気が顔を出す。\n二つ目の人格が顔を出している時間は、1Dで決定する(1~3:短時間、4~5:半日、6:1日)。 -軽度の依存症。仲間の承認がなければ、思いついた行動を実行できない。 -軽度の偏執狂。ある行為や物品などに異常な執着を示す。ただし、行動に大きな影響は与えない。具体的な内容は、ゲームマスターとプレイヤーの相談で決定。 -重度の偏執狂。行動に重大な影響を与える。具体的内容は、ゲームマスターが決定。 -恐怖症。あるものに対して恐怖。対象からは、ひたすら逃亡しようとする。また、対象に遭遇するたびに、難易度10で意志の能力値判定を行わねばならず、失敗したら1Dの精神値ダメージを受ける。恐怖の対象は、ゲームマスターが決定。 -狂暴化。仲間も含め、他者はすべて敵とみなし、傷つけようとする。行動はゲームマスターが管理。 -錯乱。行動はゲームマスターが「なるべくでたらめになるように」決定する。 -TABLE_TEXT_END - }, - - 'NHT' => { - :name => "能力値判定裏成功表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -1ポイント清徳値が低下。変な癖が身についてしまう。 -やりすぎ。過剰な成功をしたり、よけいなことまでして災いが起こりうる。 -「気」の爆発。大成功。ただし極度に疲労するため、精神値に1D6点ダメージを受ける。(2ゾロ)1ポイント仙骨が上昇、使用した能力値が1ポイント低下。 -ふつうの成功。 -不完全な成功、数値的効果は半分ほどに見積もる。(3ゾロ)1ポイント仙骨が低下。 -ふつうの成功。 -使用した能力値が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。 -ふつうの成功。 -使用した能力値が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。 -呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。 -1ポイント清徳値が低下。使用した能力値が1ポイント上昇。 -TABLE_TEXT_END - }, - - 'SDT' => { - :name => "精神値ダメージ悪影響表", - :type => '1D6', - :table => <<'TABLE_TEXT_END' -一瞬の放心。直後の判定は自動的に失敗。精神値を1D6×最大値の10%回復。 -一瞬の放心。直後の判定は自動的に失敗。精神値を1D6×最大値の10%回復。 -一瞬の放心。直後の判定は自動的に失敗。精神値を1D6×最大値の10%回復。 -放心状態。強制され、自動失敗するまで、自発的行動不可。精神値を(1D6+2)×最大値の10%回復。 -精神異常(具体的内容は狂気表(KKT)で決定)。短時間のみ。精神値を(1D6+4)×最大値の10%回復。 -精神異常(具体的内容は狂気表(KKT)で決定)。期間は1D6を振って決定(1~3:1日、4~5:99日間、6:永遠)。精神値を最大値まで回復。 -TABLE_TEXT_END - }, - - 'SKT' => { - :name => "仙術行使裏成功表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -1ポイント清徳値が低下。1ポイント仙骨が上昇。 -術の効果は術者にも解除不能になる。精神値に1点ダメージを受ける。 -「気」の暴走。効果3倍。ただし極度に疲労するため、精神値に1D6点ダメージを受ける。(2ゾロ)術者は1D6日間、仙術が使用不能になる。1ポイント仙骨が上昇。 -術が敵にかけたものの場合、仲間の1人を巻きこむ。精神値に1点ダメージを受ける。 -不完全な成功、効果半分。(3ゾロ)持続時間のある術の場合、術者がひたすら精神集中していない限り、術はすぐに解除される。 -ふつうの成功。 -1ポイント清徳値が低下。(4ゾロ)仙骨以外のいずれかの能力値(術者選択)が1D6日間、1ポイント上昇。 -術が味方もしくは自分にかけたものの場合、敵の1人にも同じようにかかる。精神値に1点ダメージを受ける。 -仙骨以外のいずれかの能力値(術者選択)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。 -1D3ポイント清徳値が低下。 -1D6ポイント清徳値が低下。仙骨以外のいずれかの能力値(術者選択)が1ポイント上昇。 -TABLE_TEXT_END - }, - - 'STT' => { - :name => "仙術抵抗裏成功表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -1ポイント清徳値が低下。 -そらされた術の効果が味方に及ぶ。味方の誰にそらされたかは、この表を使ったものが選ぶ。集団攻撃仙術の場合、抵抗に成功したものの中から選ぶこと。ほかの誰も成功に抵抗していなかったときは、ふつうの抵抗成功として扱う。精神値に1点ダメージを受ける。 -仙術をかけた敵にその効果が及ぼされる。敵自身はそれに対して、抵抗を試みることができる。(2ゾロ)1ポイント仙骨が上昇。1ポイント知覚が低下。 -ふつうの抵抗成功。 -不完全な抵抗、ふつうの半分の効果を受ける。(3ゾロ)1ポイント仙骨が低下。 -ふつうの抵抗成功。 -仙骨または知覚(仙術に抵抗した者が選択する)が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。 -ふつうの抵抗成功。 -仙骨または知覚(仙術に抵抗した者が選択する)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。 -呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。 -1ポイント清徳値が低下。仙骨または知覚(仙術に抵抗した者が選択する)が1ポイント上昇。 -TABLE_TEXT_END - }, - - 'UKT' => { - :name => "受け・回避裏成功表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -1ポイント清徳値が低下。 -転倒する(空を飛んでいるものは落下。乗騎などに乗っていたら転落)。精神値に1点ダメージを受ける。 -相手のバランスを崩すのに成功。攻撃を行った敵が転倒(空を飛んでいるものは落下。乗騎などに乗っていたら転落)。(2ゾロ)1ポイント仙骨が上昇、機敏または知覚(攻撃を防御した者が選択する)が1ポイント低下。 -ふつうの防御成功。 -不完全な防御、通常の半分のダメージを受ける。しかし敵が連続攻撃を行うことは出来ない。攻撃者が裏成功攻撃であってもその反動は決めない。(3ゾロ)1ポイント仙骨が低下。 -ふつうの防御成功。 -機敏または知覚(攻撃を防御した者が選択する)が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。 -ふつうの防御成功。 -機敏または知覚(攻撃を防御した者が選択する)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。 -呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。 -1ポイント清徳値が低下。機敏または知覚(攻撃を防御した者が選択する)が1ポイント上昇。 -TABLE_TEXT_END - }, - }.freeze - - setPrefixes([ ] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/Paradiso.rb b/src/src_bcdice/diceBot/Paradiso.rb deleted file mode 100644 index b10fe2bd7..000000000 --- a/src/src_bcdice/diceBot/Paradiso.rb +++ /dev/null @@ -1,320 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Paradiso < DiceBot - # ゲームシステムの識別子 - ID = 'Paradiso' - - # ゲームシステム名 - NAME = 'チェレステ色のパラディーゾ' - - # ゲームシステム名の読みがな - SORT_KEY = 'ちえれすていろのはらていいそ' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 1 - damage[dice - 1] += 3 - tripledam += -1 - dicetext += "【30mm】" - elsif doubledam >= 1 - damage[dice - 1] += 2 - doubledam += -1 - dicetext += "【20mm】" - else - damage[dice - 1] += 1 - end - end - - result = "\n#{damage[0]}#{damage[1]}#{damage[2]}#{damage[3]}#{damage[4]}\n#{damage[5]}#{damage[6]}#{damage[7]}#{damage[8]}#{damage[9]}\n#{damage[10]}#{damage[11]}#{damage[12]}#{damage[13]}#{damage[14]}\n#{damage[15]}#{damage[16]}#{damage[17]}#{damage[18]}#{damage[19]}" - - text = "攻撃力#{attack}ダメージチェック > (#{dicetext}) > #{result}" - - return text - end - - # ラジオマリエッタ表 - def get_radiomarietta_table - dice = roll(1, 20)[0] - case dice - when 1 - text = "「なんてこった! ここで事故のお知らせだ!」\n通行止め……。ランダムなマス1つを決定する。この一日中、そのマスに移動する事はできない。" - when 2..4 - text = "「今日はまたずいぶんと湿気てるねぇ……。古傷がある人は要注意だよ」\n天候が悪い。この一日中、「●移動」のアクションで移動できるマス数は常に1マス低くなる。" - when 5..10 - text = "「日常は至上! 異常は退場! なんにもないからラジオは以上! ……なんつて」\nいつもどおりの日々。のんびりとした風で、何事もなし。" - when 11, 12 - text = "「それじゃ、本日のメインコーナー。行ってみよう!」\n軽妙なトーク。PC全員の【乗り手コンディション】が1点小さくなる。" - when 13..15 - text = "「いーなー、こんな日はボクも飛んでみたい気分だよ! ブオノあたりまでバーッとね!」\nとんでもなく快晴で絶好のフライト日和。【機体コンディション】【乗り手コンディション】がそれぞれ1点小さくなる。" - when 16 - text = "「店頭で言えば嬉しい値引き。本日のラッキーワードをメモする用意はできたかい?」\nおトクな情報。この一日中、各PCごとに一回ずつ、「価格」の効果値が2低いものとして効果を処理できる(最低値0)" - when 17 - text = "「いっやー……熱演だったね。もーぅ次回が待ちきれなぁい!!」\nラジオドラマが神回だった。その日一日に行う「交流」で獲得できる【キズナ】の点数が+1される。" - when 18 - text = "「イエス!ナイス!エレガンス!あのサーカス団が帰ってくる!」\nサーカス団がやってくる!ランダムなマス1つを決定する。\nこの一日中、そのマスは「娯楽施設:5」(P.55)の効果を得る。" - when 19 - text = "「ラジオネーム、ハプニングさんからのお便り! おっとぉ、これは興味深い相談だ」\nラジオの話している内容から手がかりが見つかる。\[手がかり\]が1箇所追加で配置される。" - when 20 - text = "「今夜は素敵なパーリィデイ! みんな!今夜の仮装を何にするかはもう決めてるかな?」\n酒場でパーティだ!「酒場」のスポット効果を持つスポットに「レストラン:「パーティ」」が追加される。" - end - - return "ラジオマリエッタ表" + "\(" + dice.to_s + "\):" + text - end - - # 移動表 - def get_takeoff_table - dice = roll(1, 20)[0] - case dice - when 1 - text = "エンジンがぶっ壊れた!ただちに【機体コンディション】が「20」となり、このターン中は2つ目のアクションも含め「●移動」することができない。" - when 2 - text = "離水に失敗した! キミの愛機のダメージマップ上の任意の「翼」部位のダメージボックスに1点のダメージを与え、このターン中は2つ目のアクションも含め「●移動」することができない。" - when 3 - text = "軽いエンジントラブル。このアクションでは移動することができない。" - when 4 - text = "同業者に遭遇。しかし煽られて曲芸飛行につきあわされる。\n任意の方向に強制的に3マス移動し、【物資点】3点を失う。" - when 5 - text = "道を間違えたらしい。【物資点】を5点消費し、ランダムな方向に1マス移動する効果を3回繰り返す。" - when 6 - text = "気づいたらオイル漏れを起こしていた!【物資点】を3点消費する。その後、1マスにつき1点の【物資点】を消費して最大4マスまで移動できる。" - when 7 - text = "あいにくのにわか雨。あまり飛びたくないなあ。1マスにつき1点の【物資点】を消費して最大2マスまで移動できる。" - when 8 - text = "唐突な襲撃。一撃加えたあと、謎の襲撃者はいずこかへ去っていった……。命中判定の達成値が12であると扱う、【火力】3のダメージチェックを受ける。その後、1マスにつき1点の【物資点】を消費して最大4マスまで移動できる。" - when 9 - text = "んー、少し調子が悪いかな? 1マスにつき1点の【物資点】を消費して最大3マスまで移動できる。" - when 10..12 - text = "順調な空の旅。1マスにつき1点の【物資点】を消費して最大5マスまで移動できる。" - when 13 - text = "島巡りの観光艇と遭遇。ちやほやされていい気分。1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、キミの【乗り手コンディション】を2点までの任意の点数下げる事ができる。" - when 14 - text = "同業者と遭遇。1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、同業者は「キミへの【キズナ】」を1点得る。同業者はこのセッション中、キミが望む場面でキミに「判定支援」を行ってくれる。" - when 15 - text = "すごく調子がいいぞ!1マスにつき1点の【物資点】を消費して最大7マスまで移動できる上、キミの【機体コンディション】を2点までの任意の点数下げる事ができる。" - when 16 - text = "すごく調子がいいぞ!1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、このアクションがこのターンに行う1回目のアクションである場合、2回目のアクションでも続けて「●移動」を行う事ができる。" - when 17 - text = "通りかかった先に思わぬ情報が!1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、このアクションがこのターンに行う1回目のアクションである場合、2回目のアクションでは今いるマスに\[手がかり\]が配置されているものとして「●探索」が行える。" - when 18 - text = "酒場が恋しい……。【物資点】を5点消費し、即座に同じ「クエストマップ」内の「酒場」のスポット効果を持つマスに移動する。" - when 19 - text = "アジトが恋しい……。【物資点】を5点消費し、即座に同じ「クエストマップ」内の任意のキミの「アジト」に移動する。" - when 20 - text = "仲間が恋しい……。【物資点】を5点消費し、即座に任意のPC一人のいる場所に移動する。" - end - - return "移動表" + "\(" + dice.to_s + "\):" + text - end - - # 探索表 - def get_exploration_table - dice = roll(1, 20)[0] - case dice - when 1 - text = "クソっ!このマスに付与されていた\[手がかり\]を失う。" - when 2 - text = "「ツケ払いやがれ!」見に覚えがあるかないか。キミに詰め寄ってくるヤツがいる。【物資点】を10点消費するか、「ツケを伸ばす」のどちらかを選択する。ツケを伸ばすを選択した場合、次にキミが行う「●探索」のアクションでも、探索表の結果は参照せず、自動的にこの効果が適用される。" - when 3 - text = "謎は深まる。このマスに付与されていた\[手がかり\]を失い、ランダムな場所に再付与する。【情報点】は得られない。" - when 4 - text = "コネクションは大事だ。「支援チェック」をチェックしていない【キズナ】が1点以上存在すれば、その「支援チェック」を入れたあと、このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。" - when 5..8 - text = "情報を手に入れるためには、少し骨を折る必要がありそうだ。好きな能力値を2つ組み合わせて{探索判定}を行う。成功すればこのマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。" - when 9 - text = "情報を提供してくれるというアイツは見返りを要求してきた。【物資点】を4点消費できる。そうした場合、このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。" - when 10..13 - text = "危なげなく情報ゲット。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。" - when 14 - text = "手がかりを追っている事を話すと、ソイツは協力を持ちかけてきてくれた。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。さらに、【物資点】を5点獲得する。" - when 15 - text = "手がかりを追っている事を話すと、ソイツは協力を持ちかけてきてくれた。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。さらに、アイテム「チケット」(P\.69)を入手する。" - when 16 - text = "昔の仲間から手がかりについて聞くことになった。ついでに積もる話も少々。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。さらに同業者は「キミへの【キズナ】」を1点得る。同業者はこのセッション中、キミが望む場面でキミに「判定支援」を行ってくれる。" - when 17 - text = "空軍にいる友人から手がかりについて聞くことになった。「なあ、お前もフラフラしてないで空軍に入ったらどうだ?」耳に痛い。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。さらに、アイテム「空軍のツテ」(P\.69)を入手する。" - when 18 - text = "手がかりを追っていたら他にもボロボロと……。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。さらに、1D20を二回振り、この「クエストマップ」上のランダムなマス2つを求める。それらのマスに\[手がかり\]が付与されていなければ、\[手がかり\]を付与する。" - when 19 - text = "あっさり情報を掴むことができてしまった。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。この「●探索」ではアクションを消費せず、追加で別のアクションを宣言する事ができる。" - when 20 - text = "これは重要な手がかりだ! このマスに付与されていた\[手がかり\]を失い、【情報点】を2点獲得する。" - end - - return "探索表" + "\(" + dice.to_s + "\):" + text - end - - # 補給表 - def get_flightsupply_table - dice = roll(1, 20)[0] - case dice - when 1 - text = "……えっ?! キミの【物資点】は0点となる。" - when 2 - text = "おいおい勘弁してくれよ……。このアクションがそのセグメントの一回目のアクションだった場合、キミは2回目のアクションを行えない。その後【物資点】を5点獲得する。" - when 3 - text = "取材に巻き込まれる。【物資点】は獲得できないが、記者の発言からはぽろりとなにかが見えたような?1D20を振り、出た目に対応したマスに「手がかり」を1つ配置する。" - when 4 - text = "成果ゼロ。ま、こんな日もあるかな。【物資点】は獲得できない。" - when 5 - text = "うまいこと補給できなかった。【物資点】を5点獲得する。" - when 6 - text = "「一稼ぎと言ったらこれだろ?」と声をかけてくる悪友たち。「カジノ」(『基本ルールブック』P\.55)のスポット効果を即座に適用する。ただしこの処理では判定の失敗により「刑務所」のスポット効果を持つスポットに移動する効果は発生せず、代わりに「酒場」のスポット効果を持つスポットに移動した上で、自身が持つ全ての【キズナ】の「支援チェック」にチェックを入れる。その後、次のセグメントが終了するまでの間アクションは行えない。" - when 7..9 - text = "のんびり釣りといこう。釣果は運次第だ。1D20を振り、出た目と同じ数だけ【物資点】を獲得する。" - when 10..12 - text = "なにごともなく補給が完了する。【物資点】を10点獲得する。" - when 13 - text = "ラジオの音が聞こえる。PCが望むなら、1D20を振り、出た目を「ラジオ・マリエッタ表」(『基本ルールブック』P.29)に照らし合わせて、その結果を反映する。これ以後、朝セグメントで振られたラジオ・マリエッタ表の効果は失われる。その後【物資点】を10点獲得する。" - when 14 - text = "補給の合間、ちょっと口寂しくなってしまって露店へ。【物資点】を8点獲得し、アイテム「レモネード」(『基本ルールブック』P\.69)を入手する。" - when 15 - text = "補給の合間、軽くメンテナンス。【機体コンディション】を1点下げることができる。その後【物資点】を10点獲得する。" - when 16 - text = "補給の合間、店主と軽く談笑。【乗り手コンデイション】を1点下げることができる。その後【物資点】を10点獲得する。" - when 17 - text = "補給の合間、仲間に軽く挨拶しておこうか。同じマスに他のPCがいた場合、そのPC1人への【キズナ】を1点獲得する。その後【物資点】を10点獲得する。" - when 18 - text = "補給の合間に通りがかった相手と意気投合。相手はキミへの【キズナ】を1点取得する。【物資点】を10点獲得する。" - when 19 - text = "あっさり補給が終わってしまった。どうしようかな。この補給ではアクションを消費せず、【物資点】を10点獲得する。" - when 20 - text = "降って湧いた幸運!【物資点】が20点になる。" - end - - return "補給表" + "\(" + dice.to_s + "\):" + text - end -end diff --git a/src/src_bcdice/diceBot/Paranoia.rb b/src/src_bcdice/diceBot/Paranoia.rb deleted file mode 100644 index d56301711..000000000 --- a/src/src_bcdice/diceBot/Paranoia.rb +++ /dev/null @@ -1,62 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Paranoia < DiceBot - # ゲームシステムの識別子 - ID = 'Paranoia' - - # ゲームシステム名 - NAME = 'パラノイア' - - # ゲームシステム名の読みがな - SORT_KEY = 'はらのいあ' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 5 } - success_rate -= dices.count { |dice| dice.to_i < 5 } if parameter_num < 0 - debug(dices) - - results, computer_dice_message = generate_roll_results(dices) - - debug("rollDiceCommand result") - - return "(#{command}) > [#{results.join(', ')}] > 成功度#{success_rate}#{computer_dice_message}" - end - - def get_mutant_power_roll(command) - debug("rollDiceCommand Begin") - - m = /^MP(\d+)/i.match(command) - unless m - return '' - end - - debug("command", command) - - parameter_num = m[1].to_i - dice_count = parameter_num.abs + 1 - - total, dice_text, = roll(dice_count, 6) - dices = dice_text.split(',') - failure_rate = dices.count { |dice| dice.to_i == 1 } - message = failure_rate == 0 ? '成功' : "失敗(#{failure_rate})" - - results, computer_dice_message = generate_roll_results(dices) - - debug(dices) - - debug("rollDiceCommand result") - - return "(#{command}) > [#{results.join(', ')}] > #{message}#{computer_dice_message}" - end -end diff --git a/src/src_bcdice/diceBot/ParasiteBlood.rb b/src/src_bcdice/diceBot/ParasiteBlood.rb deleted file mode 100644 index 9dcbc4847..000000000 --- a/src/src_bcdice/diceBot/ParasiteBlood.rb +++ /dev/null @@ -1,230 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/DemonParasite' - -class ParasiteBlood < DemonParasite - # ゲームシステムの識別子 - ID = 'ParasiteBlood' - - # ゲームシステム名 - NAME = 'パラサイトブラッドRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'はらさいとふらつとRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = < 5) - return '衝動段階は1から5です' - end - - if urge_type == 0 - return '1' - end - - dice_now, = roll(2, 6) - urge = get_pb_urge_table(urgelv, dice_now, urge_type) - resultText = "#{urgelv}-#{dice_now}:#{urge}" - if urge_type <= 1 - output = "衝動表#{resultText}" - elsif urge_type <= 2 - output = "誤作動表#{resultText}" - else - output = '1' - end - - return output - end - - def get_pb_urge_table(level, dice, urge_type) - table = nil - - if urge_type <= 1 # 衝動表 - table = get_pb_normal_urge_table - elsif urge_type <= 2 # AASとサイボーグの誤作動表 - table = get_pb_aas_urge_table - else # エラートラップ - table = get_pb_normal_urge_table - end - - return table[level - 1][dice - 2] - end - - def get_pb_normal_urge_table - return [[ - '『怒り/20』突然強い怒りに駆られる。最も近い対象を罵倒し、そのターンの終了まで[行動不能]となる。', - '『暗闇/20』視神経に悪影響が出て、24時間[暗闇]になる。', - '『悲哀/10』突然の悲みに動きが止まる。そのターンの終了まで[行動不能]となる。', - '『微笑/10』可笑しくてしょうがない。笑いが止まらず、そのターンの終了まで[行動不能]となる。', - '『鈍感/ 0』衝動に気が付かない。影響なし。', - '『抑制/ 0』衝動を抑制した。影響なし。', - '『我慢/ 0』衝動を我慢した。影響なし。', - '『前兆/10』悪魔的特徴が1ターン(10秒)目立つ。〈悪魔化〉時は影響なし。', - '『変化/10』利き腕や前脚のみ、2ターン(20秒)かけて〈悪魔化〉する。〈悪魔化〉時は影響なし。', - '『拒絶/10』〈悪魔化〉が解除される。通常時は影響なし。', - '『定着/20』通常時であれば、即座に〈悪魔化〉する。肉体が〈悪魔化〉に馴染み、24時間通常時に戻れない。', - ], - [ - '『賛美/20』最も近くの対象を主と思いこむ。1時間または自身か対象が[気絶・戦闘不能・死亡]するまで、対象のあらゆる命令を聞く。', - '『茫然/20』思考が停止。そのターンの終了まで[タイミング:攻撃]を行えない。', - '『苦痛/20』"悪魔寄生体"が体内で暴れる。苦痛を感じ、【エナジー】を10消費。', - '『落涙/10』過去の悲しい想い出が去来し、涙が溢れる。そのターンの終了まで[タイミング:準備]を行えない。', - '『限界/10』溢れる力が限界を超え、全身の血管が破裂。【エナジー】を5消費。', - '『辛抱/10』突如全身が〈悪魔化〉しようとしたが、意思の力で抑制。【エナジー】を5消費。〈悪魔化〉時は影響なし。', - '『忍耐/ 0』衝動に耐えた。影響なし。', - '『抑制/ 0』衝動を抑制した。影響なし。', - '『我慢/ 0』衝動を我慢した。影響なし。', - '『嫉妬/10』最も近くの対象に猛烈な嫉妬を感じ、[距離:移動10m/対象:1体]に通常肉弾攻撃を行う。', - '『変貌/20』〈悪魔化〉する。その際、特異な外見が目立つ。〈悪魔化〉時は影響なし。', - ], - [ - '『異貌/20』3ターンかけて、顔のみが〈悪魔化〉する。〈悪魔化〉時は影響なし。', - '『解放/20』衝動に耐えきれず3ターンかけて〈悪魔化〉する。〈悪魔化〉時は影響なし。', - '『発露/20』全身を駆け抜ける衝動により力が溢れる。次のターンの終了まで、ダメージに+5。', - '『渇望/10』攻撃衝動を抑えられない。次のターンの終了まで、命中判定の達成値に+5。', - '『絶叫/10』あらん限りの声で叫び、力が増す。次のターンの終了まで、ダメージに+1d。', - '『我慢/ 0』衝動を我慢した。影響なし。', - '『憤怒/10』全身に怒りが満ちて攻撃力上昇。次のターンの終了まで、ダメージに+1d。', - '『加速/10』全身を駆け抜ける衝動により速度上昇。次のターンの終了まで【行動値】が2倍。', - '『嫌悪/20』最も近くの対象に嫌悪を感じ、[距離:移動10m/対象:1体]に通常肉弾攻撃を行う。', - '『保身/20』突如として防御能力が高まる。次のターンの終了まで、防御力に+5。', - '『救済/20』"悪魔寄生体"が危機を察知し、【エナジー】を20回復。', - ], - [ - '『転倒/20』踏み込んだ瞬間、あまりの衝撃に地面をえぐり[転倒]してしまう。', - '『脱力/20』急に力が抜ける。そのターンの終了まで、判定の達成値に-5。', - '『困惑/20』精神に変調があらわれ、空間認識能力が狂う。次のターンの終了まで、[タイミング:瞬間]の《特殊能力》を行えない。', - '『全力/20』激しい躁状態。次のターンの終了まで、命中判定に+10。加えて[タイミング:ターン開始]の《特殊能力》を使用できなくなる。', - '『咆吼/10』大声で叫び、意味のある言葉を話せなくなる。1時間持続する。', - '『狂気/10』心が狂気に満たされ、強いストレスを感じる。【衝動】を2蓄積させる。', - '『本能/20』"悪魔寄生体"の生存本能が自我を支配。次のターンの終了まで、ダメージに+5。', - '『治癒/20』衝動を1蓄積させ、《肉体修復》を行う。', - '『敵意/20』最も近い対象に強い敵意を抱く。[距離:移動10m/対象:1体]に通常肉弾攻撃を行い、クリティカルとなる。', - '『自虐/20』自分が許せず自虐行為を行う。【エナジー】を10消費するが、次のターンの終了までダメージに+10。', - '『自浄/20』少し我に返る。【衝動】が2回復。', - ], - [ - '『睡眠/30』猛烈な睡魔に襲われ意識を失う。そのターンの終了まで[気絶]となる。', - '『飢餓/30』猛烈な飢餓感。20m以内の最も近い[気絶・戦闘不能・死亡]の対象へ移動し、喰らう。次のターンの終了まで、対象は【エナジー】を1dずつ消費。', - '『激怒/20』突如として強い怒りが湧き、周囲が見えなくなる。次のターンの終了まで、[タイミング:瞬間]の《特殊能力》を行えない。', - '『顕現/20』利き腕や前脚がさらに外骨格化し、肉体に強い負荷がかかる。【衝動】を3蓄積', - '『好機/20』チャンスに本能が素早く反応。即座に[タイミング:攻撃]の行動を1回だけ行える。', - '『狂化/20』精神に変調、心が強い狂気で満たされ、自虐行為に走る。【エナジー】を20消費する。', - '『混乱/20』精神に変調が現れ、肉体を意のままに動かせない。次のターンの終了まで、判定の達成値に-5。', - '『暴君/20』自分が最強に思えてしょうがない。60ターン(10分)の間、【行動値】とダメージに+5。', - '『無双/20』達人の感覚が目覚める。60ターン(10分)の間、命中判定と回避判定の達成値に+5。', - '『発現/30』通常時であれば、即座に《悪魔化》する。特異な外見が60ターン(10分)目立ち、その間、命中判定とダメージに+5。', - '『絶望/30』全身が絶望に満たされ、全てを破壊したくなる。次のターンの終了まで、ダメージに+15。', - ]] - end - - # **パラサイトブラッドの誤作動表(2d6) - def get_pb_aas_urge_table - return [[ - # **第1段階 - '『緊急停止/20』機能異常の警報と共に、機能が緊急停止。次のターンのターン終了時まで[行動不能]となる。', - '『動作不調/10』駆動系に異常発生。このターンのターン終了まで[行動不能]となる。', - '『腕部停止/10』腕部機能に異常発生。このターンのターン終了まで[タイミング:攻撃]を失う。', - '『視覚異常/10』センサー系に異常。60ターン(10分)の間、[暗闇]となる。', - '『機能制動/0』機能が一瞬停止するが、以後正常に動作。影響なし。', - '『機能安定/0』機能がむしろ安定した。影響なし。', - '『不良調整/0』機能に違和感を覚えるが誤差の範囲内。影響なし。', - '『機能暴発/10』兵装の調子が悪化。次のターンのターン終了まで、[タイミング:準備]の《兵装》が使用できない。', - '『離脱機能/10』異常発生。即座に[戦闘移動]を行い、最も近い敵から遠ざかるように移動する。', - '『排熱暴走/10』排熱機能に異常。次のターンのターン終了まで[着火]状態となる。特殊ダメージは本人のものを使用する。', - '『電装異常/20』電装系に異常。即座に【負荷】が2点蓄積する。', - ], - - # **第2段階 - [ - '『安全機能/20』セーフティが誤動作。このターンのターン終了まで判定の達成値に-5。', - '『筋肉萎縮/20』人工筋肉に異常発生。60ターン(10分)の間、【肉体】判定の達成値に-2。', - '『出力低下/20』駆動部に異常発生。60ターン(10分)の間、【機敏】判定の達成値に-2。', - '『感覚異常/10』感覚機能に異常発生。60ターン(10分)の間、【感覚】判定の達成値に-2。', - '『視界不良/10』視覚機能に異常発生。60ターン(10分)の間、【幸運】判定の達成値に-2。', - '『機能安定/0』機能がむしろ安定した。影響なし。', - '『不良調整/0』機能に違和感を覚えるが誤差の範囲内。影響なし。', - '『援護不通/10』援護ソフトが誤作動。60ターン(10分)の間、【知力】判定の達成値に-2。', - '『発声不調/20』通話機能に異常。60ターン(10分)の間、声を出しても雑音だらけになって意味が通じず、さらに【精神】判定の達成値に-2。', - '『装甲軟化/20』防御機能に異常。次のターンのターン終了まで、防御力に-5。', - '『装備異常/20』精密動作に異常発生。装備している[通常アイテム]の武器がランダムでひとつ、[装備]から外れる。', - ], - - # **第3段階 - [ - '『動力漏電/20』動力が漏電し始める。【負荷】が2点蓄積する。', - '『脚部異常/20』脚部に異常発生。次のターンのターン終了まで[戦闘移動][全力移動]の距離が半分になる。', - '『足下転倒/20』バランサーに異常発生。[転倒]状態となる。', - '『出力向上/20』突然出力が上昇する。次のターンのターン終了まで、特殊ダメージに+1d。', - '『機能制動/10』一瞬違和感を覚えるが、以後正常に動作。影響なし。', - '『障壁減衰/10』電力が減衰する。【電力】を5消費する。', - '『身体向上/10』格闘機能が向上。次のターンのターン終了まで、肉弾ダメージに+1d。', - '『精度向上/20』火器管制機能が向上。次のターンのターン終了まで、射撃ダメージに+1d。', - '『反射鋭化/20』反応速度が加速した。次のターンのターン終了まで、【行動値】に+5。', - '『友軍誤認/20』警戒装置が誤動。最も近い[距離:移動10m/対象:1体]に通常肉弾攻撃を行う。', - '『電子賦活/20』電磁障壁が突如復帰。【電力】が10回復する。', - ], - - # **第4段階 - [ - '『照準誤認/20』照準機能に異常発生。最も近い[距離:移動10m/対象:1体]に通常肉弾攻撃を行う。判定は自動的にクリティカルとなる。', - '『攻撃特化/20』攻撃機能が異常動作。次のターンのターン終了まで、ダメージに+2d。ただし、その間[タイミング:瞬間]を行えない。', - '『機内窒息/20』呼吸機能に異常。次のターンのターン終了まで[窒息]状態となる。', - '『自動援護/20』援護機能が自動的に作動する。即座に[タイミング:準備]を1回行う。', - '『音声遮断/10』聴覚機能に異常発生。次のターンのターン終了まで一切の物音が聞こえず、回避判定の達成値に-5。', - '『電流加速/10』突然電磁障壁が効率的に流れる。【電力】が10回復。', - '『精密射撃/20』照準機能が向上。60ターン(10分間)の間、ダメージに+5。', - '『緊急措置/20』突然、緊急時の対策機能が発動する。【負荷】が2蓄積し、【電力】が20回復する。', - '『荷電暴走/20』電流の流れに異常が発生。【HP】を10消費し、次のターンのターン終了までダメージに+10。', - '『状況分析/20』周辺解析ソフトが高速で動作。60ターン(10分間)の間、命中判定の達成値に+5。', - '『機能再生/20』兵装に誤作動。取得済みの使用不能になった《兵装》を1つ指定し、再び使用できるようになる。', - ], - - # **第5段階 - [ - '『機能停止/30』機能が作動しなくなる。このターンのターン終了まで、【負荷】を蓄積させる行動が取れなくなる。', - '『機関暴走/30』放熱機関が暴走する。本人を中心として[対象:半径5m全て]が次のターンのターン終了まで[着火]状態となる。特殊ダメージはこの表を振ったPCのものを使用する。', - '『電力低下/20』出力が上がらない。【電力】が20減少する。', - '『急速修復/20』電磁障壁と生命維持装置が高速処理を始める。【HP】が20回復。', - '『駆動不調/20』駆動系に動作不良。次のターンのターン終了まで、判定の達成値に-5。', - '『機体清冽/20』機能が初期化され、異常から復帰。[気絶・死亡・戦闘不能]以外の状態変化がすべて解除される。', - '『機体減速/20』運動機能が暴走。次のターンのターン終了まで【行動値】に-10(最低1)。', - '『排毒噴出/20』排気機構が誤作動。[対象:半径5m全て]が次のターンのターン終了まで[猛毒]状態となる。', - '『緊急駆動/20』機動性が向上。次のターンのターン終了まで判定の達成値に+5。', - '『負荷軽減/30』急激に負荷が解消される。【負荷】が2点回復する。', - '『出力過剰/30』全出力が過剰なまでに上昇する。次のターンのターン終了までダメージに+10。', - ]] - end -end diff --git a/src/src_bcdice/diceBot/Pathfinder.rb b/src/src_bcdice/diceBot/Pathfinder.rb deleted file mode 100644 index 6c8abda4b..000000000 --- a/src/src_bcdice/diceBot/Pathfinder.rb +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/DungeonsAndDragons' - -class Pathfinder < DungeonsAndDragons - # ゲームシステムの識別子 - ID = 'Pathfinder' - - # ゲームシステム名 - NAME = 'Pathfinder' - - # ゲームシステム名の読みがな - SORT_KEY = 'はすふあいんたあ' - - # ダイスボットの使い方 - HELP_MESSAGE = "※このダイスボットは部屋のシステム名表示用となります。\n" -end diff --git a/src/src_bcdice/diceBot/Peekaboo.rb b/src/src_bcdice/diceBot/Peekaboo.rb deleted file mode 100644 index 3e5e159cc..000000000 --- a/src/src_bcdice/diceBot/Peekaboo.rb +++ /dev/null @@ -1,351 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Peekaboo < DiceBot - # ゲームシステムの識別子 - ID = 'Peekaboo' - - # ゲームシステム名 - NAME = 'ピーカーブー' - - # ゲームシステム名の読みがな - SORT_KEY = 'ひいかあふう' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - return " > ファンブル(【眠気】が1d6点上昇)" - elsif dice_total >= 12 - return " > スペシャル(【魔力】あるいは【眠気】が1d6点回復)" - elsif total >= target - return " > 成功" - else - return " > 失敗" - end - end - - def rollDiceCommand(command) - string = command.upcase - - case string - when 'RTT' # ランダム特技決定表 - return getRandomSkillTableResult(command) - end - getTableCommandResult(command, TABLES) - end - - # 指定特技表 - def getRandomSkillTableResult(_command) - name = 'ランダム' - - skillTableFull = [ - ['不良', ['夜更かし', 'いねむり', '無視', 'ウソつき', '悪口', 'いたずら', 'ズル', '隠れる', 'ぬすむ', 'おどす', 'けんか',]], - ['運動', ['泳ぐ', '木登り', '柔らかい', 'マラソン', 'とぶ', 'かけっこ', 'バランス', '投げる', '球技', '打ち返す', '力持ち',]], - ['友達', ['ネット', 'うわさ話', '優しさ', 'がまん', 'お手紙', 'おしゃべり', '自転車', '勇気', '約束', '仕切る', '秘密基地',]], - ['遊び', ['パソコン', 'ゲーム', '集める', '絵', '音楽', '空想', '読書', 'お話づくり', 'クイズ', '手品', '占い',]], - ['勉強', ['実験', '宇宙', '生き物', '工作', '計算', '宿題', '漢字', '作文', '歴史', '地理', '外国語',]], - ['大人', ['法律', 'しかる', '手当て', 'マナー', '推理', '計画性', 'お料理', 'お買い物', 'オシャレ', '恋愛', '道楽',]], - ] - - skillTable, total_n = get_table_by_1d6(skillTableFull) - tableName, skillTable = skillTable - skill, total_n2 = get_table_by_2d6(skillTable) - - output = "#{name}指定特技表(#{total_n},#{total_n2}) > 《#{skill}/#{tableName}#{total_n2}》" - - return output - end - - TABLES = { - 'SET' => { - :name => "学校イベント表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -持ち物検査が行われる!イノセント全員は、《隠れる/不良9》の判定を行うこと。失敗したキャラクターは、GMがアイテム1個を選んで没収することができる(セッション終了時に返してもらえる) -クラスで流行っている遊びに誘われる。GMは、「遊び」の分野の中からランダムに特技一つを選ぶ。イノセント全員は、その判定を行う。失敗したキャラクターは、【眠気】が1d6点増える。 -とても退屈な授業が始まった。イノセント全員は、《いねむり/不良3》の判定を行う。失敗したキャラクターは、【眠気】が1d6+1点増える。 -明日までの宿題を出される。イノセント全員は、明日までに宿題を終わらせないといけない。宿題を終わらせるためには、各サイクルの終わりに、《宿題/勉強7》の判定を行い、それに成功しなければいけない。宿題を次の日の学校フェイズまでに終わらせることができなかった場合は、居残り勉強させられる。その日の放課後フェイズの最初のサイクルは、1回休み。 -今日も今日とて楽しい授業。GMは、「勉強」の分野の中からランダムに特技1つを選ぶ。イノセント全員は、その判定を行う。失敗したキャラクターは【眠気】が1d6点増える。 -特に変わったこともなく、おだやかな一日だった。イノセント全員は、【眠気】が1点増える。 -今日の体育の時間はハードだった! GMは、「運動」の分野の中からランダムに特技1つを選ぶ。イノセント全員は、その判定を行う。失敗したキャラクターは、【眠気】が1d6点増える。 -自習の時間だ!GMは、「勉強」の分野の中からランダムに特技1つを選ぶ。イノセント全員は、その判定を行う。成功したキャラクターは、1回だけ自由行動ができる。 -抜き打ちテストだ!GMは、「勉強」の分野の中からランダムに特技1つを選ぶ。イノセント全員は、-2の修正をつけて、その特技の判定を行う。成功したキャラクターはよい点をゲット!家にかえってそれを親に見せるとおこづかいを1個もらえる。失敗したキャラクターは、親にこっぴどく怒られ、【眠気】が1d6点増えるうえに、それ以降「みんなで遊ぶ」ことが出来なくなる。 -体操服や水着、宿題に提出物などなど、今日は学校に持ってこないといけないものがあったはず!《計画性/大人7》で判定を行う。失敗すると、先生に怒られてしょんぼり。【眠気】が1d6点増える。 -それぞれに色々なことがあった。イノセントは、各自1回ずつ2d6を振り、個別学校イベント表の指示に従うこと。 -TABLE_TEXT_END - }, - - 'PSET' => { - :name => "個別学校イベント表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -クラスの中に気になるコが現れる。《恋愛/大人11》の判定を行う。成功すると、その子と仲良くなって経験値を1点獲得する。 -お腹の調子が悪くなり、トイレに行きたくなる。《がまん/友達5》か《隠れる/不良9》の判定を行うこと。失敗すると、不名誉なあだ名をつけられ、それ以降、「友達」の分野の判定に-1の修正を受ける。 -今日の給食には、どうしても苦手な食べ物が出てきた。《勇気/友達9》で判定を行うこと。成功すると、苦手な食べ物を克服し、気分爽快!【眠気】を1d6点回復するか、【元気】を1点回復することができる。 -友達から遊ぼうと誘われる。その日の放課後フェイズに、クラスメイト1d6人と「みんなで遊ぶ」ことができる。これを断る場合は、《優しさ/友達4》で判定を行うこと。失敗するとこれ以降、「みんなで遊ぶ」を行うとき、友達を誘うことが出来なくなる。 -今日はクラブ活動があった。次のサイクルは行動できなくなる。その代わり、好きな特技1つを選ぶ。このセッションの間、その特技の判定を行うとき+1の修正がつく。 -授業中、先生がとても難しい問題を出してくる。GMは、「勉強」の分野からランダムに特技を1つ選ぶ。その判定を行うこと。成功すると、経験値を1点獲得する。 -クラスでオバケの噂を耳にする。《うわさ話/友達3》の判定に成功すると、GMからそのセッションで出てくるオバケの外見や情報を教えてもらうことができる。 -校庭や体育館など、自分達の遊び場が他のグループに占拠されている。《けんか/不良12》で判定を行うこと。成功すると、それ以降「友達」の分野の判定に+1の修正を受ける。失敗すると遊び場を失ってしまう。1ダメージを受け、それ以降、「友達と遊ぶ」ことができなくなってしまう。 -いじめの現場に出くわす! 《勇気/友達10》の判定に成功すると、いじめっこを撃退することができる。いじめられていた子が、お礼にお菓子を1個くれる。失敗すると1点のダメージを受ける。 -今日は全校集会があった。《がまん/友達5》で判定を行う。失敗すると貧血で倒れ次のサイクルは行動できなくなる。 -図書室で面白そうな本を発見する。《読書/遊び8》で判定を行うこと。成功すると、経験値を1点獲得する。 -TABLE_TEXT_END - }, - - 'OET' => { - :name => "お化け屋敷イベント表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -謎かけ守護者が門を護っている。未行動のキャラクターは、《クイズ/遊び10》の判定を行うことができる。判定したキャラクターは行動済みになる。失敗したキャラクターは、1点のダメージを受ける。誰かが成功すれば、イベントはクリアできる。 -天井から血の雨が降ってくる! この雨に触れると火傷しちゃうみたいだ!【防御力】が0のスプーキーとイノセントは、《かけっこ/運動7》の判定を行う。失敗すると、イノセントは1ダメージ、スプーキーは1d6ダメージを受ける。成功・失敗にかかわらず、イベントはクリアできる。 -トンガリ族の妖精がいる。彼は、先へ行くための通行料として、アイテムを要求してくる。何か好きなアイテム1個を渡すか、未行動のキャラクターは、《お話づくり/遊び9》の判定を行うことができる。判定したキャラクターは行動済みになる。誰かが判定に成功するか、アイテムを渡すかしたら、イベントはクリアできる。 -行き止まりだ。先に進む方法が分からない。未行動のキャラクターは、《推理/大人6》の判定を行うことができる。判定したキャラクターは行動済みになる。誰かが成功したら、イベントはクリアできる。 -まっくらで、何も見えない部屋だ。一行は不安におちいる。未行動のキャラクターは、《仕切る/友達11》の判定を行うことができる。判定したキャラクターは行動済みになる。誰かが成功すれば、イベントはクリアできる。 -ジメジメした通路だ。特に何もしなくても、イベントはクリアだ。誰かがのぞむなら、自由行動を1回行うことができるぞ。 -通路が途中で途切れて崖のようになっている。誰かが飛ぶことが出来れば、向こう岸にあるはしごを断崖にかけられそうだけど……。未行動のキャラクターは、《とぶ/運動6》の判定を行うことができる。判定したキャラクターは行動済みになる。誰かが成功すれば、イベントはクリアできる。 -まぼろしの部屋だ。各キャラクターの大好物のまぼろしがつぎつぎ現れる。未行動のキャラクターは、《がまん/友達5》の判定を行うことができる。判定したキャラクターは行動済みになる。誰かが成功したら、イベントはクリアできる。 -通路がいくつにも分岐している……。未行動のキャラクターのうち1人が《地理/勉強11》、もしくは《絵/遊び5》の判定を行う。判定したキャラクターは行動済みになる。失敗すると、そのオバケ屋敷の部屋数が1d6点上昇する。成功失敗にかかわらず、イベントはクリアできる。 -シャドウが見回りをしている。未行動のキャラクターのうち1人が、《隠れる/不良9》の判定を行う。成功すれば、イベントはクリアできる。失敗すると、プレイヤーと同じ人数のシャドウと戦闘を行うこと。勝利すればイベントはクリアできる。 -足下からシャドウが現れ、みんなに襲いかかる!プレイヤーと同じ人数のシャドウと戦闘を行うこと。勝利すればイベントはクリアできる。 -TABLE_TEXT_END - }, - - 'NET' => { - :name => "日中ブラブラ表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -相棒のスプーキーと喧嘩する。1d6サイクルの間、自分の相棒のスプーキーは、自分に対して【お助け力】を使用することができなくなる。 -ついついネットやゲームで時間をつぶす。特に何もなし。。 -街をブラブラしていたら、突然シッポ族のオバケに襲われる。「お前、大人のくせに俺が見えるのか?」GMは「運動」の分野の中から、ランダムに特技を1つ選ぶ。この表の使用者は、その判定を行う。成功したら、オバケに気に入られ、セッション中、好きな時に一度だけ、シッポ族の魔法をかけてもらうことができるようになる。失敗すると1点のダメージを受ける。 -…暇だ。たまには、タメになりそうな本でも読んでみるか。GMは「勉強」の分野の中から、ランダムに特技1つを選ぶ。この表の使用者はその判定を行う。成功したら、セッション中、好きな時に一度だけ、判定を自動的に成功することができるようになる。失敗すると退屈のあまり【眠気】が1d6点上昇する。 -ああ、まずい。会いたくないヤツに会っちまったなぁ。どうやって誤魔化そう?GMは「不良」の分野の中から、ランダムに特技1つを選ぶ。この表の使用者は、その判定を行う。成功したら、うまく誤魔化してそのシナリオに登場するハグレオバケの噂を手に入れることができる。失敗するとお説教をくらって【眠気】が1d6点上昇する。 -ふわわわわ。眠いなぁ。……寝るか。【眠気】を2d6点回復する。 -うーん。腹減った。何か食べたいけど……。GMは「大人」の分野の中から、ランダムに特技を1つ選ぶ。この表の使用者はその判定を行う。成功したら、【お菓子】を1d6個手に入れる。失敗すると、持っていれば【おこづかい】を一個減らす。 -うーん。そうだ。あいつに連絡してみるか……。GMは「友達」分野の中からランダムに特技1つを選ぶ。この表の使用者は、その判定を行う。成功したら友達の力を借りて、それ以降の自分の手番に二回行動することができるようになる。失敗すると、誰にも捕まらず、寂しさのあまり【眠気】が1d6点上昇する。 -臨時のバイト。久々の労働だ。GMは「遊び」の分野の中から、ランダムに特技を1つ選ぶ。この表の使用者は、その判定を行う。成功したら、【おこづかい】を1つ獲得できる。失敗すると【眠気】が1d6点上昇する。 -あ、これ欲しかったんだよな。つい無駄な買い物をしてしまう。持っていれば【おこづかい】を一個減らす。 -相棒のスプーキーと、素敵な時間を過ごす。そのセッションの間だけ、「武装契約」「守護契約」「強化契約」「同調契約」のいずれか一つを結ぶことができる。 -TABLE_TEXT_END - }, - - 'IBT' => { - :name => "イノセント用バタンキュー!表", - :type => '1D6', - :table => <<'TABLE_TEXT_END' -悲しい別れ。病院につれていくことができれば、1d6日入院したあとに目覚めます。その間は、行動不能です。目覚めたときに【眠気】も【元気】もすべて回復しますが、スプーキーを見ることができなくなっています。そのキャラクターはスプーキーと一緒に冒険を続けることはできません……。 -大けがをして昏睡状態。病院につれていくことができれば、1d6日入院したあとに目覚めます。その間は、行動不能です。目覚めたときに【眠気】はすべて回復し、【元気】が3点回復します。 -気絶しちゃった! 1d6サイクル後に目覚めます。気絶している間は、行動不能です。目覚めたときに【眠気】が1d6点、【元気】が1点回復します。 -体が動かない! 何かを見たり、話したりといった簡単な行動ならできますが、自由行動や戦闘行動といった通常の行動は行えません。1d6サイクル後に【元気】が1点回復し、通常通り行動できるようになります。 -かろうじて意識はあるものの、朦朧としてきた。【眠気】が2d6点増えます。それで行動不能になっていなければ、【元気】が1点回復します。そうでなければ、気絶してしまい、1d6サイクル後に目覚めます。気絶している間は、行動不能です。目覚めたときに【眠気】が1d6点減少し、【元気】が1点回復します。 -なんという幸運!アイテムがキミを護ってくれた。もし持ち物にアイテムがあった場合、それが1個破壊され、受けたダメージを無効化します。アイテムがなければ行動不能になります。 -TABLE_TEXT_END - }, - - 'SBT' => { - :name => "スプーキー用バタンキュー!表", - :type => '1D6', - :table => <<'TABLE_TEXT_END' -封印状態! オバケは封印されてしまいます。1d6*1年後になれば、そのオバケは復活します。それまでは、イノセントと一緒に冒険することはできません。できたとしても、そのときイノセントはあなたを見ることができなくなっているかもしれませんが……。 -休眠状態! オバケは休眠状態になります。1d6日が経過すると目覚めます。その間は、行動不能です。目覚めたときに【魔力】はすべて回復しています。 -コバケ状態! 体は小さく縮んてしまい、重戦闘も戦闘行動も行うことはできません。【魔力】が1点以上になると、通常通り行動できるようになります。 -混沌変化! 自分のリングのからだリストを使って、ランダムにからだを1つ選びます。自分のからだが、それに変化します。1d6サイクルの間、行動不能になります。その後、【魔力】が1d6点回復して通常通り行動できるようになります。 -魔力変質! 自分のリングの衣装リストを使って、ランダムに衣装を1つ選びます。自分の衣装1つが、それに変化します。そして、1d6サイクルの間、行動不能になります。その後、【魔力】が1d6点回復して通常通り行動できるようになります。 -魔法暴発! 自分の持っている魔法をランダムに1つ選んで、その効果が発動します。魔法の対象が選べる場合は、スプーキーのプレイヤーが選んで構いません。そして、1d6サイクルの間、行動不能になります。その後、【魔力】が1d6点回復して通常通り行動できるようになります。 -TABLE_TEXT_END - }, - - 'TNT' => { - :name => "指定特技(不良)表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -《夜更かし/不良2》 -《いねむり/不良3》 -《無視/不良4》 -《ウソつき/不良5》 -《悪口/不良6》 -《いたずら/不良7》 -《ズル/不良8》 -《隠れる/不良9》 -《ぬすむ/不良10》 -《おどす/不良11》 -《けんか/不良12》 -TABLE_TEXT_END - }, - - 'TET' => { - :name => "指定特技(運動)表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -《泳ぐ/運動2》 -《木登り/運動3》 -《柔らかい/運動4》 -《マラソン/運動5》 -《とぶ/運動6》 -《かけっこ/運動7》 -《バランス/運動8》 -《投げる/運動9》 -《球技/運動10》 -《打ち返す/運動11》 -《力持ち/運動12》 -TABLE_TEXT_END - }, - - 'TFT' => { - :name => "指定特技(友達)表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -《ネット/友達2》 -《うわさ話/友達3》 -《優しさ/友達4》 -《がまん/友達5》 -《お手紙/友達6》 -《おしゃべり/友達7》 -《自転車/友達8》 -《勇気/友達9》 -《約束/友達10》 -《仕切る/友達11》 -《秘密基地/友達12》 -TABLE_TEXT_END - }, - - 'TPT' => { - :name => "指定特技(遊び)表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -《パソコン/遊び2》 -《ゲーム/遊び3》 -《集める/遊び4》 -《絵/遊び5》 -《音楽/遊び6》 -《空想/遊び7》 -《読書/遊び8》 -《お話づくり/遊び9》 -《クイズ/遊び10》 -《手品/遊び11》 -《占い/遊び12》 -TABLE_TEXT_END - }, - - 'TST' => { - :name => "指定特技(勉強)表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -《実験/勉強2》 -《宇宙/勉強3》 -《生き物/勉強4》 -《工作/勉強5》 -《計算/勉強6》 -《宿題/勉強7》 -《漢字/勉強8》 -《作文/勉強9》 -《歴史/勉強10》 -《地理/勉強11》 -《外国語/勉強12》 -TABLE_TEXT_END - }, - - 'TAT' => { - :name => "指定特技(大人)表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -《法律/大人2》 -《しかる/大人3》 -《手当て/大人4》 -《マナー/大人5》 -《推理/大人6》 -《計画性/大人7》 -《お料理/大人8》 -《お買い物/大人9》 -《オシャレ/大人10》 -《恋愛/大人11》 -《道楽/大人12》 -TABLE_TEXT_END - }, - - 'STT' => { - :name => "オバケぶらり旅表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -オバケ狩りに遭遇してしまいますオバケ判定を行ってください。失敗すると2d6点のダメージを受けます。 -リングの上司からレポートを提出しろといわれます。セッション終了に、今回の暴言がどんな話だったかをまとめ、GMに報告してください。GMが、その報告がうまくまとまっていると感じたら、そのスプーキーとイノセントのコンビがもらえる経験点が1点上昇します。 -近所のお家に忍び込み、めぼしいものを探しました。オバケ判定を行ってください。成功すると、ルールブック228頁に書いてあるアイテム表を使ってランダムで決めたアイテム1個を入手します。 -街の優しいおばけたちに頼まれます。そのシナリオに登場するはぐれオバケを説得し、悪事をやめさせることができれば、そのスプーキーとイノセントのコンビがもらえる経験点が1点上昇します。 -オバケたちとギャンブルに興じます♪好きなだけ【魔力】を減少してください。サイコロを1個振ります。奇数が出たらギャンブルに勝利!減少した【魔力】の2倍の値だけ魔力が回復します。偶数が出たらギャンブルに敗北(しょぼん)。減少した魔力はかえってきません。 -オバケたちのウワサを耳にします。GMは、シナリオ上で重要な情報を1つ選んで下さい。その情報を入手することができます。 -人間について学習します。オバケ判定を行って下さい。成功すると、ランダムに好きな特技を1つ選びます。そのゲームの間、その特技を習得しているものとして、行為判定を行うことができるようになります。 -リングのオバケ学校で再修行。自分の魔法1つを未取得にします。そして、共用か自分のリングの魔法リストから、ランダムに魔法を1つ選び、新たに修得します。 -突如、誰かの役に立ちたいと思いました。このセッションが終わるまでに、そのスプーキーとイノセントのコンビに対して、5人以上のキャラクターが「ありがとう」と言ったら、コンビのもらえる経験点が1点上昇します。 -道端で拾ったものがオバケ市場で売れました。ラッキー♪お小遣いを1つ入手できます。 -オバケ狩りから身を隠すために変装します。自分の衣装1つを未取得にします。そして、共用か自分のリングの衣装から、ランダムに衣装を1つ選び、新たに修得します。 -TABLE_TEXT_END - }, - - 'SAT' => { - :name => "オバケ行動表", - :type => '2D6', - :table => <<'TABLE_TEXT_END' -「えー。お前なんか嫌いだ!」スプーキーは、イノセントとけんかしてしまいます。そのサイクルは行動せず、【魔力】も回復しません。 -「疲れたよーん」スプーキーは、行動をパスして【魔力】を回復します。 -「ムムム。気になる、気になるぞー」スプーキーは、戦闘フェイズなら「ひみつを暴く」を行います。それ以外なら「オバケ占い」を行います。 -「やっぱ定番はこうでしょう」スプーキーは、戦闘フェイズなら「攻撃」を行います。それ以外なら「調査」を行います。 -「オバケ的にはどう思う?」スプーキーは、ほかのスプーキーのいうことをききます。 -「うん、そうするー」スプーキーは自分の契約しているイノセントのいうことをききます。 -「うーん。そうかなぁ?」スプーキーは、ほかのイノセントのいうことをききます。 -「トリック・オア・トリート!」スプーキーは、何かのアイテム(お菓子やおこづかいが適当でしょう)をもらえたら、イノセントのいうことをききます。もらったアイテムは、即座に消費されます。 -「ここは派手にいきたいぜ!」スプーキーは、自分の修得している魔法をランダムに1個選んで、それを使用します。対象を決める場合は、自由に選んで構いません。 -「ここは様子見だなぁ」スプーキーは、行動をパスして【魔力】を回復します。 -「こうなりゃ本気モードだ!」スプーキーは自分の契約しているイノセントのいうことをききます。また、そのサイクルの間、そのスプーキーは魔力の消費なしで、魔法を使用することができます。 -TABLE_TEXT_END - }, - - 'NST' => { - :name => "仲間効果表", - :type => '1D6', - :table => <<'TABLE_TEXT_END' -用心棒。この仲間の効果は、誰かがダメージを受けた時に使用できる。そのダメージを無効化する。 -パトロン。この仲間の効果は、好きな時に使用できる。【おこづかい】一つか、ランダムに選んだアイテム一つを獲得できる。 -助言。この仲間の効果は、誰かが判定を行うときに使用できる。そのNPCが人間の場合、その判定に使う特技が、そのNPCが修得している特技なら、自動的に成功になる。そのNPCがオバケの場合、その判定にプラス2かマイナス2の修正をつけることができる。 -師匠。この仲間の効果は、好きな時に使用できる。そのNPCが人間の場合、ランダムに選んだ才能を一つ獲得する。この効果は、その日の終りまで持続する。そのNPCがオバケの場合、そのオバケが修得している好きな魔法を一つ使用する。 -時間稼ぎ。好きな行動済みのキャラクター1人を未行動にしてくれる。 -乱入行動。自分が攻撃に成功した時に使用できる。そのダメージを1d6点上昇してくれる。 -TABLE_TEXT_END - }, - }.freeze - - setPrefixes(['RTT'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/Pendragon.rb b/src/src_bcdice/diceBot/Pendragon.rb deleted file mode 100644 index 03a68c09b..000000000 --- a/src/src_bcdice/diceBot/Pendragon.rb +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Pendragon < DiceBot - # ゲームシステムの識別子 - ID = 'Pendragon' - - # ゲームシステム名 - NAME = 'ペンドラゴン' - - # ゲームシステム名の読みがな - SORT_KEY = 'へんとらこん' - - # ダイスボットの使い方 - HELP_MESSAGE = <= (40 - target)) || (total == target) - " > クリティカル" - else - " > 成功" - end - elsif total == 20 - " > ファンブル" - else - " > 失敗" - end - end -end diff --git a/src/src_bcdice/diceBot/PhantasmAdventure.rb b/src/src_bcdice/diceBot/PhantasmAdventure.rb deleted file mode 100644 index 441f34eda..000000000 --- a/src/src_bcdice/diceBot/PhantasmAdventure.rb +++ /dev/null @@ -1,80 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class PhantasmAdventure < DiceBot - # ゲームシステムの識別子 - ID = 'PhantasmAdventure' - - # ゲームシステム名 - NAME = 'ファンタズム・アドベンチャー' - - # ゲームシステム名の読みがな - SORT_KEY = 'ふあんたすむあとへんちやあ' - - # ダイスボットの使い方 - HELP_MESSAGE = < 20 - skill_mod = diff - 20 - end - - fumble = 20 + skill_mod - fumble = 20 if fumble > 20 - critical = 1 + skill_mod - dice_now, = roll(1, 20) - - if (total >= fumble) || (total >= 20) - fum_num = dice_now - skill_mod - fum_num = 20 if fum_num > 20 - fum_num = 1 if fum_num < 1 - - if sendMode <= 1 - return " > 致命的失敗(#{fum_num})" - end - - fum_str = dice_now.to_s - if skill_mod < 0 - fum_str += "+#{skill_mod * -1}=#{fum_num}" - else - fum_str += "-#{skill_mod}=#{fum_num}" - end - return " > 致命的失敗(#{fum_str})" - - elsif (total <= critical) || (total <= 1) - crit_num = dice_now + skill_mod - crit_num = 20 if crit_num > 20 - crit_num = 1 if crit_num < 1 - - if skill_mod < 0 - return " > 成功" - end - - if sendMode > 1 - return " > 決定的成功(#{dice_now}+#{skill_mod}=#{crit_num})" - end - - return " > 決定的成功(#{crit_num})" - - elsif total <= diff - return " > 成功" - else - return " > 失敗" - end - end -end diff --git a/src/src_bcdice/diceBot/Postman.rb b/src/src_bcdice/diceBot/Postman.rb deleted file mode 100644 index 98e027776..000000000 --- a/src/src_bcdice/diceBot/Postman.rb +++ /dev/null @@ -1,177 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Postman < DiceBot - # ゲームシステムの識別子 - ID = 'Postman' - - # ゲームシステム名 - NAME = '壊れた世界のポストマン' - - # ゲームシステム名の読みがな - SORT_KEY = 'こわれたせかいのほすとまん' - - # ダイスボットの使い方 - HELP_MESSAGE = < or >= or @X]  []内省略可。 - -達成値と判定の成否、クリティカル、ファンブルを結果表示します。 -「n」でダイス数を指定。省略時は2D。 -「+-a」で達成値への修正を指定。「+2+1-4」のような複数回指定可。 -「>X」「>=X」「@X」で難易度を指定可。 -「>X」は達成値>難易度、「>=X」「@X」は達成値>=難易度で判定します。 - -【書式例】 -3PO+2-1 → 3Dで達成値修正+1の判定。達成値のみ表示。 -PO@5+2 → 2Dで目標値7の判定。判定の成否と達成値を表示。 -4PO-2+1>7+2 → 4Dで達成値修正-1、目標値9(同値は失敗)の判定。 - - -◆天候チェック:WEA[n]  []内省略可。 - -天候チェック表を参照します。 -「n」を指定すると、指定した結果を表示します。(【幸運点】使用時用) - - -◆自由行動シチュエーション表:FRE -MESSAGETEXT - - setPrefixes([ - 'WEA\d*', - '(\d+)?PO.*', - 'FRE' - ]) - - def initialize - super - @sortType = 1 # ダイスのソート有 - end - - def rollDiceCommand(command) - text = - case command.upcase - - when /(\d+)?PO(\d+)?(([+-]\d+)*)?((>|>=|@)(\d+)(([+-]\d+)*)?)?/i - diceCount = (Regexp.last_match(1) || 2).to_i - diceCount = 2 if diceCount < 2 - - modify = (Regexp.last_match(2) || 0).to_i - modifyAddString = (Regexp.last_match(3) || '') - - type = (Regexp.last_match(6) || '') - target = (Regexp.last_match(7) || 0).to_i - targetAddString = (Regexp.last_match(8) || '') - - modify_list = modifyAddString.scan(/[+-]\d+/) - modify_list.each { |i| modify += i.to_i } - - if target != 0 - target_list = targetAddString.scan(/[+-]\d+/) - target_list.each { |j| target += j.to_i } - end - - checkRoll(diceCount, modify, type, target) - - when /WEA(\d+)?/i - roc = (Regexp.last_match(1) || 0).to_i - get_weather_table(roc) - - when 'FRE' - get_free_situation_table - - end - - return text - end - - def checkRoll(diceCount, modify, type, target) - dice, diceText = roll(diceCount, 6, @sortType) - - diceArray = diceText.split(/,/).collect { |i| i.to_i } - dice2 = diceArray[-2] + diceArray[-1] - diceText2 = "#{diceArray[-2]},#{diceArray[-1]}" - criticalCount = diceArray.count { |i| i == 6 } - - if modify != 0 - modifyText = '' - modifyText = "+" if modify > 0 - modifyText += modify.to_s - end - - result = dice2 + modify - - if type != '' - resultText = " 【失敗】" - operatorText = ">" - if type == '>' - resultText = " 【成功】" if result > target - else - operatorText += "=" - resultText = " 【成功】" if result >= target - end - end - - if criticalCount >= 2 - resultText = " 【成功】(クリティカル)" - elsif dice == diceCount - resultText = " 【失敗】(ファンブル)" - end - - text = "#{diceCount}D6(#{diceText})#{modifyText} > #{dice2}(#{diceText2})#{modifyText} = 達成値:#{result}" - text += "#{operatorText}#{target} " if target > 0 - text += resultText.to_s - - return text - end - - def get_weather_table(roc) - name = "天候チェック" - table = [ - [2, '大雨と強風。探索判定の難易度に+4。'], - [3, '風が強い1日になりそう。探索判定の難易度に+2。'], - [4, '晴れ。特になし。'], - [5, '夜の間の雨でぬかるむ。探索判定の難易度に+2。'], - [6, 'それなりの雨足。探索判定の難易度に+2。'], - [7, '晴れ。特になし。'], - [8, '天気は大荒れ。探索判定の難易度に+4。'], - [9, '小雨が降る。探索判定の難易度に+1。'], - [10, 'それなりの雨足。探索判定の難易度に+2。'], - [11, '晴れ。特になし。'], - [12, '風が強い1日になりそう。探索判定の難易度に+2。'] - ] - - if roc == 0 - dice, diceText = roll(2, 6) - else - roc = 2 if roc < 2 - roc = 12 if roc > 12 - dice = roc - diceText = "Choice:#{roc}" - end - - tableText = get_table_by_number(dice, table) - text = "#{name}(#{diceText}) > #{dice}:#{tableText}" - return text - end - - def get_free_situation_table() - name = "自由行動シチュエーション表" - table = [ - [2, '何をするでもなく、霞がかったような夜空を見上げる。ふと隣に目を向ければ、彼/彼女が居た。彼/彼女は、こうなる前の夜空を知っているのだろうか。'], - [3, '夢を見た。大戦の最中、街が、人が、世界が焼けていく悪夢を。追い立てられるようにして目を覚ますと、彼/彼女が君を見ていた。 ……もしかして、自分はよほどうなされていたのだろうか。'], - [4, '周囲で見つけたガラクタを使って、ちょっとしたビックリ玩具を作ってみた。「彼/ 彼女」にコイツをけしかけたら、どんな反応をするだろうか?'], - [5, '使えそうなものがないか探していると、カタンと物音がして何かが落ちた。拾い上げてみたそれは、かつてここで生活していた誰かの名残(写真、家具、玩具等)だった。'], - [6, 'テントの中で夜を過ごしていると、ふと彼/彼女と話したくてたまらない気持ちになった。言ってしまえば、夜の静けさに寂しさを覚えてしまったのだ。'], - [7, 'ここまでの配達の記録をつけていたら、背後から視線を感じる……! もしや、彼/彼女に覗かれている……!?'], - [8, '周囲を探索していると、君一人では手の届かないところに金属製の箱か何かがあることに気づいた。彼/彼女に手伝ってもらえば、取れるだろうか……?'], - [9, '朝まではまだしばらくあるというのに、目が覚めてしまった。二度寝しようにも寝付けずに居ると、隣でもぞもぞと動く気配がする。彼/彼女も、どうやら同じらしい。'], - [10, '他愛のない話をするうちに、君は彼/彼女に問いかけていた。「何故、ポストマンになろうと思ったのか」 ……そういえば、君自身はどうだったろうか。'], - [11, '保存食にありつこうとしたその時、君は気づいた。一匹のネズミが、彼/彼女の荷物の中に潜り込もうとしている。彼/彼女は気づいていないが、このままでは食料が危ない!'], - [12, 'テントを設営し、落ち着いた頃にふと気づく。 ……身体が熱い。少し、だるさもあるような気もする。大したことはないと思うが、彼/彼女に相談しておいた方がいいだろうか。'] - ] - dice, diceText = roll(2, 6) - tableText = get_table_by_number(dice, table) - text = "#{name}(#{diceText}) > #{dice}:#{tableText}" - return text - end -end diff --git a/src/src_bcdice/diceBot/PulpCthulhu.rb b/src/src_bcdice/diceBot/PulpCthulhu.rb deleted file mode 100644 index 888d17e6f..000000000 --- a/src/src_bcdice/diceBot/PulpCthulhu.rb +++ /dev/null @@ -1,181 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require "diceBot/Cthulhu7th" - -class PulpCthulhu < Cthulhu7th - # ゲームシステムの識別子 - ID = 'PulpCthulhu' - - # ゲームシステム名 - NAME = 'パルプ・クトゥルフ' - - # ゲームシステム名の読みがな - SORT_KEY = 'はるふくとうるふ' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 - armor += (Regexp.last_match(4) || 0).to_i - armor = 1 if armor < 1 - armor = 9 if armor > 9 - end - - return checkDamage(diceCount, armor) - - end - - return nil - end - - def checkRoll(diceCount, choiceCount, target) - if diceCount <= 0 - correction = 1 + diceCount * -1 - rollCount = 1 - else - correction = 0 - rollCount = diceCount - end - - _dice, diceText = roll(rollCount, 10, @sortType) - diceText2 = diceText.gsub('10', '0') - diceArray = diceText2.split(/,/).collect { |i| i.to_i } - diceArray.map! { |i| i - correction } - diceText2 = diceArray.sort.join(',') - - funbleArray = diceArray.select { |i| i <= 1 } - isFunble = (funbleArray.size >= rollCount) - - dice = 0 - success = 0 - unless isFunble - criticalCount = diceArray.count(0) - critical = criticalCount * 10 - - choiceArray = diceArray.reverse - choiceArray.delete(0) - choiceArray = choiceArray.slice(0..(choiceCount - 1)) - choiceText = choiceArray.join(',') - dice = choiceArray.inject(:+) - success = dice + critical - end - - result = "#{rollCount}D10" - result += "-#{correction}" if correction > 0 - result += " > [#{diceText}] > [#{diceText2}] > " - - if isFunble - result += "達成値:0 (Funble)" - else - result += "#{dice}[#{choiceText}]" - result += "+#{critical}" if critical > 0 - result += "=達成値:#{success}" - result += " (#{criticalCount}Critical)" if critical > 0 - end - - if target > 0 - result += ">=#{target} " - result += "【成功】" if success >= target - result += "【失敗】" if success < target - end - - return result - end - - def checkDamage(diceCount, armor) - if diceCount <= 0 - correction = 1 + diceCount * -1 - rollCount = 1 - else - correction = 0 - rollCount = diceCount - end - - _dice, diceText = roll(rollCount, 10, @sortType) - diceText2 = diceText.gsub('10', '0') - diceArray = (diceText2.split(/,/).collect { |i| i.to_i }).sort - criticalCount = diceArray.count(0) - diceArray.map! { |i| i - correction } - diceText2 = diceArray.join(',') - - result = "#{rollCount}D10" - result += "-#{correction}" if correction > 0 - result += " > [#{diceText}] > [#{diceText2}]" - - if armor > 0 - resultArray = [] - success = 0 - - diceArray.each do |i| - if i >= armor - resultArray.push(i) - success += 1 - else - resultArray.push("×") - end - end - resultText = resultArray.join(',') - - result += " > [#{resultText}]>=#{armor} 有効数:#{success}" - end - - result += " 0=#{criticalCount}個" - - return result - end -end diff --git a/src/src_bcdice/diceBot/RecordOfLodossWar.rb b/src/src_bcdice/diceBot/RecordOfLodossWar.rb deleted file mode 100644 index ed0b6c4f5..000000000 --- a/src/src_bcdice/diceBot/RecordOfLodossWar.rb +++ /dev/null @@ -1,56 +0,0 @@ -# -*- coding: utf-8 -*- - -require 'utils/command_parser' - -class RecordOfLodossWar < DiceBot - ID = 'RecordOfLodossWar'.freeze - NAME = 'ロードス島戦記RPG'.freeze - SORT_KEY = 'ろおとすとうせんきRPG'.freeze - - HELP_MESSAGE = <= auto_failure - "自動失敗(#{auto_failure})" - elsif dice_value <= critical - "大成功(#{critical})" - elsif dice_value <= 10 - "自動成功" - elsif cmd.cmp_op - dice_value <= cmd.target_number ? "成功" : "失敗" - end - - sequence = [ - "(1D100#{cmd.cmp_op}#{cmd.target_number})", - dice_value.to_s, - result - ].compact - - return sequence.join(" > ") - end -end diff --git a/src/src_bcdice/diceBot/RecordOfSteam.rb b/src/src_bcdice/diceBot/RecordOfSteam.rb deleted file mode 100644 index 73a9f8245..000000000 --- a/src/src_bcdice/diceBot/RecordOfSteam.rb +++ /dev/null @@ -1,147 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class RecordOfSteam < DiceBot - # ゲームシステムの識別子 - ID = 'RecordOfSteam' - - # ゲームシステム名 - NAME = 'Record of Steam' - - # ゲームシステム名の読みがな - SORT_KEY = 'れこおとおふすちいむ' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 150 - return "(多分)無限個なので振れません! ヤメテクダサイ、(プロセスが)死んでしまいますっ" - end - - if criticalValue >= 3 - return "(多分)無限個なので振れません! ヤメテクダサイ、(プロセスが)死んでしまいますっ" - end - - specialValue = criticalValue - - rollResult, successCount, roundCount, specialCount, fumbleCount = getDiceRollResult(diceCount, targetNumber, criticalValue, specialValue) - - output = "(#{command}) > #{rollResult}" - - roundCountText = getRoundCountText(roundCount) - successText = getSuccessText(successCount) - specialText = getSpecialText(specialCount) - fumbleText = getFumbleText(fumbleCount) - - result = "#{output}#{roundCountText}#{specialText}#{successText}#{fumbleText}" - - return result - end - - def getDiceRollResult(diceCount, targetNumber, criticalValue, specialValue) - successCount = 0 - roundCount = 0 - rollResult = "" - specialCount = 0 - specialFlag = false - fumbleCount = 0 - fumbleFlag = false - - while diceCount > 0 - _, diceListText, = roll(diceCount, 6) - debug("diceListText", diceListText) - - rollResult += "," if rollResult != "" - rollResult += diceListText - - diceList = diceListText.split(/,/).collect { |i| i.to_i } - if diceList.uniq.length == 1 && roundCount == 0 - if diceList.uniq.first <= specialValue - specialFlag = true - elsif diceList.uniq.first == 6 - fumbleFlag = true - end - end - debug("diceList", diceList) - - if specialFlag - specialCount = 1 - successCount = diceCount * 3 - - return rollResult, successCount, roundCount, specialCount, fumbleCount - elsif fumbleFlag - fumbleCount = 1 - - return rollResult, successCount, roundCount, specialCount, fumbleCount - end - - diceCount = 0 - - diceList.map do |diceValue| - debug("diceValue", diceValue) - debug("criticalValue", criticalValue) - debug("specialValue", specialValue) - - if diceValue <= criticalValue - diceCount += 2 - roundCount += 1 - end - - successCount += 1 if diceValue <= targetNumber - end - end - - return rollResult, successCount, roundCount, specialCount, fumbleCount - end - - def getRoundCountText(roundCount) - if roundCount <= 0 - return "" - end - - return " > #{roundCount}回転" - end - - def getSuccessText(successCount) - if successCount > 0 - return " > 成功数#{successCount}" - end - - return " > 失敗" - end - - def getSpecialText(specialCount) - if specialCount == 1 - return " > スペシャル" - end - end - - def getFumbleText(fumbleCount) - if fumbleCount == 1 - return " > ファンブル" - end - end -end diff --git a/src/src_bcdice/diceBot/RokumonSekai2.rb b/src/src_bcdice/diceBot/RokumonSekai2.rb deleted file mode 100644 index 8017e1838..000000000 --- a/src/src_bcdice/diceBot/RokumonSekai2.rb +++ /dev/null @@ -1,118 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class RokumonSekai2 < DiceBot - # ゲームシステムの識別子 - ID = 'RokumonSekai2' - - # ゲームシステム名 - NAME = '六門世界RPG セカンドエディション' - - # ゲームシステム名の読みがな - SORT_KEY = 'ろくもんせかいRPG2' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 5 - cnt2 += 1 if die1 <= 2 - suc += 1 if die1 <= abl - sum += die1 - end - - if sum < target - suc += 2 - elsif sum == target - suc += 1 - end - - suc = 0 if cnt5 >= 3 - suc = 5 if cnt2 >= 3 - - return dicestr, suc, sum - end - - def rokumon2_suc_rank(suc) - suc_rank = ['E', 'D', 'C', 'B', 'A', 'S'] - return suc_rank[suc] - end -end diff --git a/src/src_bcdice/diceBot/RoleMaster.rb b/src/src_bcdice/diceBot/RoleMaster.rb deleted file mode 100644 index 42a9965bf..000000000 --- a/src/src_bcdice/diceBot/RoleMaster.rb +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class RoleMaster < DiceBot - # ゲームシステムの識別子 - ID = 'RoleMaster' - - # ゲームシステム名 - NAME = 'ロールマスター' - - # ゲームシステム名の読みがな - SORT_KEY = 'ろおるますたあ' - - # ダイスボットの使い方 - HELP_MESSAGE = "上方無限ロール(xUn)の境界値を96にセットします。\n" - - def initialize - super - @upperRollThreshold = 96 - @unlimitedRollDiceType = 100 - end -end diff --git a/src/src_bcdice/diceBot/RuneQuest.rb b/src/src_bcdice/diceBot/RuneQuest.rb deleted file mode 100644 index cbab72154..000000000 --- a/src/src_bcdice/diceBot/RuneQuest.rb +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class RuneQuest < DiceBot - # ゲームシステムの識別子 - ID = 'RuneQuest' - - # ゲームシステム名 - NAME = 'ルーンクエスト' - - # ゲームシステム名の読みがな - SORT_KEY = 'るうんくえすと' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 100 - # 100は常に致命的失敗 - " > 致命的失敗" - elsif total <= (target.to_f / 5).round - " > 効果的成功" - elsif total <= target - " > 成功" - elsif total >= 95 + critical_value - " > 致命的失敗" - else - " > 失敗" - end - end -end diff --git a/src/src_bcdice/diceBot/RyuTuber.rb b/src/src_bcdice/diceBot/RyuTuber.rb deleted file mode 100644 index 137b115d9..000000000 --- a/src/src_bcdice/diceBot/RyuTuber.rb +++ /dev/null @@ -1,264 +0,0 @@ -# -*- coding: utf-8 -*- - -require "utils/table" - -class RyuTuber < DiceBot - # ゲームシステムの識別子 - ID = 'RyuTuber'.freeze - - # ゲームシステム名 - NAME = 'リューチューバーとちいさな奇跡'.freeze - - # ゲームシステム名の読みがな - SORT_KEY = 'りゆうちゆうはあとちいさなきせき'.freeze - - HELP_MESSAGE = < < < < < < < < < Table.new( - "職業表", - "1D6", - [ - '学生表へ', - '技術・専門職表へ', - '技術・専門職表へ', - '事務・サービス職表へ', - '事務・サービス職表へ', - 'エンタメ職表へ' - ] - ), - "JST" => Table.new( - "学生表", - "1D6", - [ - '中学生 (ゲーム 運動する)', - '高校生(文系) (仲良くする 文章を書く)', - '高校生(理系) (仲良くする 科学の知識)', - '専門学校生 (ものづくり 設計する)', - '大学生(文系) (社会の仕組み 外国語)', - '大学生(理系) (すごい技術 科学の知識)' - ] - ), - "JTPT" => Table.new( - "技術・専門職表", - "2D6", - [ - '勝負師・山師 (洞察力 精神力)', - '漁師/猟師 (自然の知識 料理する)', - '建築家、大工 (設計する 運転する)', - '料理人 (料理する ものづくり)', - '職人 (ものづくり 丁寧)', - '農家 (自然の知識 育てる)', - '医療・福祉関係(医師、薬剤師、介護職) (治す 科学の知識)', - '美容、スタイリスト (見た目を整える 仲良くする)', - 'プログラマー (プログラム 設計する)', - '士業(税理士、弁護士、行政書士等) (社会の仕組み 事務仕事)', - '研究者 (教える すごい技術)' - ] - ), - "JOST" => Table.new( - "事務・サービス職表", - "2D6", - [ - '宗教関係(巫女、僧侶など) (お祈りする 地元知識)', - '観光、旅行 (外国語 地元知識)', - '教師、保育士 (教える 育てる)', - '運転手、配達員 (運転する 地元知識)', - '自宅警備員 (ゲーム 想像力)', - 'サラリーマン (事務仕事 仲良くする)', - '店員 (丁寧 商品知識)', - '公務員 (事務仕事 地元知識)', - '警察、自衛隊、消防士 (社会の仕組み 戦う)', - '投資家、金融業、不動産 (プレゼンする 事務仕事)', - '経営者 (社会の仕組み 仲良くする)' - ] - ), - "JET" => Table.new( - "エンタメ職表", - "2D6", - [ - 'ゲーム制作 (プログラム ものづくり)', - '写真家 (自然の知識 絵を描く)', - 'デザイナー (設計する 見た目を整える)', - 'ライター (文章を書く 想像力)', - 'イラストレーター (絵を描く 見た目を整える)', - '専業配信者 (プレゼンする カリスマ)', - '声優 (声を出す 演技する)', - 'ミュージシャン (声を出す 音楽)', - 'アイドル・芸能人 (演技する カリスマ)', - 'プロゲーマー (ゲーム 戦う)', - 'プロスポーツ選手 (運動する 精神力)' - ] - ), - "HT" => Table.new( - "趣味表", - "1D6", - [ - '多人数でできる趣味表へ', - '多人数でできる趣味表へ', - '一人でできるインドア趣味表Aへ', - '一人でできるインドア趣味表Bへ', - '一人でできるアウトドア趣味表Aへ', - '一人でできるアウトドア趣味表Bへ' - ] - ), - "HGT" => Table.new( - "多人数でできる趣味表", - "1D6", - [ - '家族サービス (仲良くする 育てる)', - '野球・フットサル (仲良くする 運動する)', - 'ボードゲーム/TRPG/囲碁/将棋 (ゲーム 想像する)', - 'ボランティア (忍耐力 カリスマ)', - 'サバイバルゲーム (戦う 隠れる)', - 'バンド (音楽 見た目を整える)' - ] - ), - "HIAT" => Table.new( - "一人でできるインドア趣味表A", - "1D6", - [ - '工芸 (ものづくり 想像力)', - '編み物 (丁寧 見た目を整える)', - '陶芸 (ものづくり 想像力)', - 'プラモ (ものづくり 見た目を整える)', - '同人 (絵を描く 文章を書く)', - '読書 (外国語 社会の仕組み)' - ] - ), - "HIBT" => Table.new( - "一人でできるインドア趣味表B", - "1D6", - [ - '仕事 (事務仕事 忍耐力)', - '資格集め (社会の仕組み 商品知識)', - 'お絵かき (絵を描く 想像力)', - '料理 (料理する 設計する)', - '筋トレ (運動する 忍耐力)', - 'コンピューターゲーム (ゲーム プログラム)' - ] - ), - "HOAT" => Table.new( - "一人でできるアウトドア趣味表A", - "1D6", - [ - 'スポーツ観戦 (忍耐力 お祈りする)', - '水泳 (運動する 泳ぐ)', - '旅行/鉄道 (移動する 外国語)', - '写真 (自然の知識 想像力)', - 'ジグソーパズル (ゲーム 忍耐力)', - 'マラソン (運動する 忍耐力)' - ] - ), - "HOBT" => Table.new( - "一人でできるアウトドア趣味表B", - "1D6", - [ - 'スキー・スノーボード (運動する 自然の知識)', - '自転車 (移動する 運動する)', - '盆栽・生花 (丁寧 育てる)', - 'キャンプ (自然の知識 精神力)', - '映画鑑賞 (演技する 想像力)', - '恋愛 (仲良くする 見た目を整える)' - ] - ) - }.freeze - - setPrefixes(TEXTS.keys + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/Ryutama.rb b/src/src_bcdice/diceBot/Ryutama.rb deleted file mode 100644 index 1ea4c56a1..000000000 --- a/src/src_bcdice/diceBot/Ryutama.rb +++ /dev/null @@ -1,198 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Ryutama < DiceBot - # ゲームシステムの識別子 - ID = 'Ryutama' - - # ゲームシステム名 - NAME = 'りゅうたま' - - # ゲームシステム名の読みがな - SORT_KEY = 'りゆうたま' - - # ダイスボットの使い方 - HELP_MESSAGE = <=t(x,y:使用する能力値、t:目標値) - 1ゾロ、クリティカルも含めて判定結果を表示します - 能力値1つでの判定は Rx>=t で行えます -例)R8,6>=13 -INFO_MESSAGE_TEXT - - setPrefixes(['R\d+.*']) - - def initialize - super - @validDiceTypes = [20, 12, 10, 8, 6, 4, 2] - end - - def rollDiceCommand(command) - debug('rollDiceCommand begin') - - unless /^R(\d+)(,(\d+))?([\+\-\d]+)?(>=(\d+))?/ === command - debug('unmatched!') - return '' - end - debug('matched') - - dice1 = Regexp.last_match(1).to_i - dice2 = Regexp.last_match(3).to_i - modifyString = Regexp.last_match(4) - difficulty = Regexp.last_match(6) - - dice1, dice2 = getDiceType(dice1, dice2) - if dice1 == 0 - return '' - end - - modifyString ||= '' - modify = parren_killer("(" + modifyString + ")").to_i - difficulty = getDiffculty(difficulty) - - value1 = getRollValue(dice1) - value2 = getRollValue(dice2) - total = value1 + value2 + modify - - result = getResultText(value1, value2, dice1, dice2, difficulty, total) - unless result.empty? - result = " > #{result}" - end - - value1Text = "#{value1}(#{dice1})" - value2Text = (value2 == 0 ? "" : "+#{value2}(#{dice2})") - modifyText = getModifyString(modify) - - baseText = getBaseText(dice1, dice2, modify, difficulty) - output = "(#{baseText}) > #{value1Text}#{value2Text}#{modifyText} > #{total}#{result}" - return output - end - - def getDiceType(dice1, dice2) - debug('getDiceType begin') - - if dice2 != 0 - if isValidDiceOne(dice1) - return dice1, dice2 - else - return 0, 0 - end - end - - if isValidDice(dice1, dice2) - return dice1, dice2 - end - - diceBase = dice1 - - # dice1 = diceBase / 10 - dice1 = (diceBase / 10).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - dice2 = diceBase % 10 - - if isValidDice(dice1, dice2) - return dice1, dice2 - end - - # dice1 = diceBase / 100 - dice1 = (diceBase / 100).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - dice2 = diceBase % 100 - - if isValidDice(dice1, dice2) - return dice1, dice2 - end - - if isValidDiceOne(diceBase) - return diceBase, 0 - end - - return 0, 0 - end - - def isValidDice(dice1, dice2) - return (isValidDiceOne(dice1) && - isValidDiceOne(dice2)) - end - - def isValidDiceOne(dice) - @validDiceTypes.include?(dice) - end - - def getDiffculty(difficulty) - unless difficulty.nil? - difficulty = difficulty.to_i - end - - return difficulty - end - - def getRollValue(dice) - return 0 if dice == 0 - - value = rand(dice) + 1 - return value - end - - def getResultText(value1, value2, dice1, dice2, difficulty, total) - if isFamble(value1, value2) - return "1ゾロ【1ゾロポイント+1】" - end - - if isCritical(value1, value2, dice1, dice2) - return "クリティカル成功" - end - - if difficulty.nil? - return '' - end - - if total >= difficulty - return "成功" - end - - return "失敗" - end - - def isFamble(value1, value2) - return ((value1 == 1) && (value2 == 1)) - end - - def isCritical(value1, value2, dice1, dice2) - return false if value2 == 0 - - if (value1 == 6) && (value2 == 6) - return true - end - - if (value1 == dice1) && (value2 == dice2) - return true - end - - return false - end - - def getBaseText(dice1, dice2, modify, difficulty) - baseText = "R#{dice1}" - - if dice2 != 0 - baseText += ",#{dice2}" - end - - baseText += getModifyString(modify) - - unless difficulty.nil? - baseText += ">=#{difficulty}" - end - - return baseText - end - - def getModifyString(modify) - if modify > 0 - return "+" + modify.to_s - elsif modify < 0 - return modify.to_s - end - - return '' - end -end diff --git a/src/src_bcdice/diceBot/SRS.rb b/src/src_bcdice/diceBot/SRS.rb deleted file mode 100644 index 7efdf2f8c..000000000 --- a/src/src_bcdice/diceBot/SRS.rb +++ /dev/null @@ -1,345 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/DiceBot' -require 'utils/ArithmeticEvaluator' -require 'utils/modifier_formatter' - -# スタンダードRPGシステムのダイスボット -# -# スタンダードRPGシステムにおいて共通な2D6成功判定を実装している。 -# また、各ゲームシステムに合わせた2D6成功判定のエイリアスコマンドを -# 登録するクラスメソッド set_aliases_for_srs_roll を持つ。 -class SRS < DiceBot - # ゲームシステムの識別子 - ID = 'SRS' - - # ゲームシステム名 - NAME = 'スタンダードRPGシステム' - - # ゲームシステム名の読みがな - SORT_KEY = 'すたんたあとRPGしすてむ' - - include ModifierFormatter - - HELP_MESSAGE_1 = <=t[c,f] -  修正値m、目標値t、クリティカル値c、ファンブル値fで判定ロールを行います。 -  修正値、クリティカル値、ファンブル値は省略可能です([]ごと省略可)。 -  クリティカル値、ファンブル値の既定値は、それぞれ12、2です。 -  自動成功、自動失敗、成功、失敗を自動表示します。 - -  例) 2d6>=10     修正値0、目標値10で判定 -  例) 2d6+2>=10    修正値+2、目標値10で判定 -  例) 2d6+2>=10[11]  ↑をクリティカル値11で判定 -  例) 2d6+2>=10[12,4] ↑をクリティカル値12、ファンブル値4で判定 -HELP_MESSAGE - - HELP_MESSAGE_2 = <=\d+(?:\[\d*(?:,\d+)?\])?)\z' - #) - @aliases_re_for_srs_roll_with_target_value = /^(?:#{aliases_part})((?:[-+][-+\d]+)?>=\d+(?:\[\d*(?:,\d+)?\])?)$/ # TKfix 変数代入を持つ正規表現 - - #@aliases_re_for_srs_roll_without_target_value = Regexp.new( - # '\A' \ - # "(?:#{aliases_part})" \ - # '([-+][-+\d]+)?(\[\d*(?:,\d+)?\])?\z' - #) - @aliases_re_for_srs_roll_without_target_value = /^(?:#{aliases_part})([-+][-+\d]+)?(\[\d*(?:,\d+)?\])?$/ # TKfix 変数代入を持つ正規表現 - - prepare_help_msg_for_aliases_for_srs_roll(aliases_upcase) - @help_message = concatenate_help_messages - - return self - end - - # 成功判定のエイリアスコマンドを未設定にする - # @return [self] - def clear_aliases_for_srs_roll - @aliases_re_for_srs_roll_with_target_value = nil - @aliases_re_for_srs_roll_without_target_value = nil - @help_message = SRS::DEFAULT_HELP_MESSAGE - - return self - end - - private - - # 成功判定のエイリアスコマンドの説明文を用意する - # @param [Array] aliases エイリアスコマンドの配列 - # @return [self] - # @todo 現在は2文字のエイリアスコマンドに幅を合わせてある。 - # エイリアスコマンドの文字数が変わる場合があれば、位置を調整するコードが - # 必要。 - def prepare_help_msg_for_aliases_for_srs_roll(aliases) - @help_msg_for_aliases_for_srs_roll_with_target_value = - aliases. - map { |a| "  例) #{a}+2>=10     2d6+2>=10と同じ(#{a}が2D6のショートカットコマンド)\n" }. - join() - - @help_msg_for_aliases_for_srs_roll_without_target_value = - aliases. - map { |a| - "  例) #{a}      2d6[]と同じ(#{a}が2D6のショートカットコマンド)\n" \ - "  例) #{a}+2[12,4]  2d6+2[12,4]と同じ(#{a}が2D6のショートカットコマンド)\n" - }. - join() - - return self - end - - # ダイスボットの説明文を結合する - # @return [String] 結合された説明文 - def concatenate_help_messages - "#{SRS::HELP_MESSAGE_1}" \ - "#{@help_msg_for_aliases_for_srs_roll_with_target_value}\n" \ - "#{SRS::HELP_MESSAGE_2}" \ - "#{@help_msg_for_aliases_for_srs_roll_without_target_value}\n" \ - "#{SRS::HELP_MESSAGE_3}" - end - end - - class << self - # クラスが継承されたときに行う処理 - # @return [void] - def inherited(subclass) - subclass. - extend(ClassMethods). - clear_aliases_for_srs_roll - end - - # ダイスボットの説明文を返す - # @return [String] 既定のダイスボット説明文 - def help_message - DEFAULT_HELP_MESSAGE - end - - # 目標値あり成功判定のエイリアスコマンドの正規表現を返す - # @return [nil] - def aliases_re_for_srs_roll_with_target_value - nil - end - - # 目標値なし成功判定のエイリアスコマンドの正規表現を返す - # @return [nil] - def aliases_re_for_srs_roll_without_target_value - nil - end - end - - # 固有のコマンドの接頭辞を設定する - setPrefixes(['2D6.*']) - - # ダイスボットを初期化する - def initialize - super - - # 式、出目ともに送信する - @sendMode = 2 - # バラバラロール(Bコマンド)でソートする - @sortType = 1 - # D66ダイスあり(出目をソートしない) - @d66Type = 1 - end - - # ダイスボットの説明文を返す - # @return [String] - def help_message - self.class.help_message - end - - # 既定のクリティカル値 - DEFAULT_CRITICAL_VALUE = 12 - # 既定のファンブル値 - DEFAULT_FUMBLE_VALUE = 2 - - # 目標値あり成功判定の正規表現 - SRS_ROLL_WITH_TARGET_VALUE_RE = - /\A2D6([-+][-+\d]+)?>=(\d+)(?:\[(\d+)?(?:,(\d+))?\])?\z/.freeze - # 目標値なし成功判定の正規表現 - SRS_ROLL_WITHOUT_TARGET_VALUE_RE = - /\A2D6([-+][-+\d]+)?\[(\d+)?(?:,(\d+))?\]\z/.freeze - - # 既定の閾値指定表記 - SRS_ROLL_DEFAULT_THRESHOLDS = - "[#{DEFAULT_CRITICAL_VALUE},#{DEFAULT_FUMBLE_VALUE}]" - - # 成功判定コマンドのノード - SRSRollNode = Struct.new( - :modifier, :critical_value, :fumble_value, :target_value - ) do - include ModifierFormatter - - # 成功判定の文字列表記を返す - # @return [String] - def to_s - lhs = "2D6#{format_modifier(modifier)}" - expression = target_value ? "#{lhs}>=#{target_value}" : lhs - - return "#{expression}[#{critical_value},#{fumble_value}]" - end - end - - # 固有のダイスロールコマンドを実行する - # @param [String] command 入力されたコマンド - # @return [String, nil] ダイスロールコマンドの実行結果 - def rollDiceCommand(command) - alias_replaced_with_2d6 = replace_alias_for_srs_roll_with_2d6(command) - - if (node = parse(alias_replaced_with_2d6)) - return execute_srs_roll(node) - end - - return nil - end - - private - - # 成功判定のエイリアスコマンドを2D6に置換する - # @param [String] input 入力文字列 - # @return [String] - def replace_alias_for_srs_roll_with_2d6(input) - case input - when self.class.aliases_re_for_srs_roll_with_target_value - return "2D6#{Regexp.last_match(1)}" - when self.class.aliases_re_for_srs_roll_without_target_value - modifier = Regexp.last_match(1) - thresholds = Regexp.last_match(2) || SRS_ROLL_DEFAULT_THRESHOLDS - - return "2D6#{modifier}#{thresholds}" - else - return input - end - end - - # 構文解析する - # @param [String] command コマンド文字列 - # @return [SRSRollNode, nil] - def parse(command) - case command - when SRS_ROLL_WITH_TARGET_VALUE_RE - return parse_srs_roll_with_target_value(Regexp.last_match) - when SRS_ROLL_WITHOUT_TARGET_VALUE_RE - return parse_srs_roll_without_target_value(Regexp.last_match) - else - return nil - end - end - - # 修正値を評価する - # @param [String, nil] modifier_str 修正値部分の文字列 - # @return [Integer] 修正値 - def eval_modifier(modifier_str) - return 0 unless modifier_str - - return ArithmeticEvaluator.new.eval(modifier_str, @fractionType.to_sym) - end - - # 目標値あり成功判定の正規表現マッチ情報からノードを作る - # @param [MatchData] m 正規表現のマッチ情報 - # @return [SRSRollNode] - def parse_srs_roll_with_target_value(m) - modifier = eval_modifier(m[1]) - target_value = m[2].to_i - critical_value = (m[3] && m[3].to_i) || DEFAULT_CRITICAL_VALUE - fumble_value = (m[4] && m[4].to_i) || DEFAULT_FUMBLE_VALUE - - return SRSRollNode.new(modifier, critical_value, fumble_value, target_value) - end - - # 目標値なし成功判定の正規表現マッチ情報からノードを作る - # @param [MatchData] m 正規表現のマッチ情報 - # @return [SRSRollNode] - def parse_srs_roll_without_target_value(m) - modifier = eval_modifier(m[1]) - critical_value = (m[2] && m[2].to_i) || DEFAULT_CRITICAL_VALUE - fumble_value = (m[3] && m[3].to_i) || DEFAULT_FUMBLE_VALUE - - return SRSRollNode.new(modifier, critical_value, fumble_value, nil) - end - - # 成功判定を実行する - # @param [SRSRollNode] srs_roll 成功判定ノード - # @return [String] 成功判定結果 - def execute_srs_roll(srs_roll) - sum, dice_str, = roll(2, 6, @sortType & 1) - modified_sum = sum + srs_roll.modifier - - parts = [ - "(#{srs_roll})", - "#{sum}[#{dice_str}]#{format_modifier(srs_roll.modifier)}", - modified_sum, - compare_result(srs_roll, sum, modified_sum) - ] - - return parts.compact.join(' > ') - end - - # ダイスロール結果を目標値、クリティカル値、ファンブル値と比較する - # @param [SRSRollNode] srs_roll 成功判定ノード - # @param [Integer] sum 出目の合計 - # @param [Integer] modified_sum 修正後の値 - # @return [String, nil] 比較結果 - def compare_result(srs_roll, sum, modified_sum) - if sum >= srs_roll.critical_value - return '自動成功' - end - - if sum <= srs_roll.fumble_value - return '自動失敗' - end - - if srs_roll.target_value - return modified_sum >= srs_roll.target_value ? '成功' : '失敗' - end - - return nil - end -end diff --git a/src/src_bcdice/diceBot/SamsaraBallad.rb b/src/src_bcdice/diceBot/SamsaraBallad.rb deleted file mode 100644 index 14315286b..000000000 --- a/src/src_bcdice/diceBot/SamsaraBallad.rb +++ /dev/null @@ -1,108 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require "utils/command_parser" - -class SamsaraBallad < DiceBot - # ゲームシステムの識別子 - ID = 'SamsaraBallad' - - # ゲームシステム名 - NAME = 'サンサーラ・バラッド' - - # ゲームシステム名の読みがな - # - # 「ゲームシステム名の読みがなの設定方法」(docs/dicebot_sort_key.md)を参考にして - # 設定してください - SORT_KEY = 'さんさあらはらつと' - - # ダイスボットの使い方 - HELP_MESSAGE = <= critical) - end -end diff --git a/src/src_bcdice/diceBot/Satasupe.rb b/src/src_bcdice/diceBot/Satasupe.rb deleted file mode 100644 index 1f2130042..000000000 --- a/src/src_bcdice/diceBot/Satasupe.rb +++ /dev/null @@ -1,1171 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Satasupe < DiceBot - # ゲームシステムの識別子 - ID = 'Satasupe' - - # ゲームシステム名 - NAME = 'サタスペ' - - # ゲームシステム名の読みがな - SORT_KEY = 'さたすへ' - - # ダイスボットの使い方 - HELP_MESSAGE = <=x[y,z,c] or nR>=x or nR>=[,,c] etc) - nが最大ロール回数、xが難易度、yが目標成功度、zがファンブル値、cが必殺値。 - y と z と c は省略可能です。(省略時、y=無制限、z=1、c=13(なし)) - c の後ろにSを記述すると必殺が出た時点で判定を終了します。 - 例)5R>=5[10,2,7S] -・性業値コマンド(SRx or SRx+y or SRx-y x=性業値 y=修正値) -・各種表 : コマンド末尾に数字を入れると複数回の一括実行が可能 例)TAGT3 - ・タグ決定表(TAGT) - ・命中判定ファンブル表(FumbleT)、致命傷表(FatalT)、 -   乗物致命傷表(FatalVT) - ・ロマンスファンブル表(RomanceFT) - ・アクシデント表(AccidentT)、汎用アクシデント表(GeneralAT) - ・その後表 (AfterT)、臭い飯表(KusaiMT)、登場表(EnterT)、 -   落とし前表(PayT)、時間切れ表(TimeUT)、バッドトリップ表(BudTT) - ・報酬表(Get〜) : ガラクタ(GetgT)、実用品(GetzT)、値打ち物(GetnT)、 -   奇天烈(GetkT) - ・NPCの年齢と好みを一括出力(NPCT) - ・「サタスペ」のベースとアクセサリを出力(GETSSTx xはアクセサリ数、省略時1) -・以下のコマンドは +,- でダイス目修正、=でダイス目指定が可能 - 例)CrimeIET+1 CrimeIET-1 CrimeIET=7 - ・情報イベント表(〜IET) : 犯罪表(CrimeIET)、生活表(LifeIET)、 -   恋愛表(LoveIET)、教養表(CultureIET)、戦闘表(CombatIET) - ・情報ハプニング表(〜IHT) : 犯罪表(CrimeIHT)、生活表(LifeIHT)、 -   恋愛表(LoveIHT)、教養表(CultureIHT)、戦闘表(CombatIHT) - ・遭遇表(~RET):ミナミ遭遇表(MinamiRET)、中華街遭遇表(ChinatownRET)、 -   軍艦島遭遇表(WarshipLandRET)、官庁街遭遇表(CivicCenterRET)、 -   十三遭遇表(DowntownRET)、沙京遭遇表(ShaokinRET)、 -   らぶらぶ遭遇表(LoveLoveRET)、アジト遭遇表(AjitoRET)、 -   地獄湯遭遇表(JigokuSpaRET)、JAIL HOUSE遭遇表(JailHouseRET) - ・イベント表(~IT):治療イベント表(TreatmentIT)、大学イベント表(CollegeIT) -・D66ダイスあり -INFO_MESSAGE_TEXT - - setPrefixes(['(\d+R|SR\d+|TAGT|\w+IET|\w+IHT|F\w*T|F\w*T|A\w*T|G\w*A\w*T|A\w*T|R\w*FT|NPCT|KusaiMT|EnterT|BudTT|GetgT|GetzT|GetnT|GetkT|GETSST|PayT|TimeUT|\w+IT|ShaokinRET|MinamiRET|ChinatownRET|CivicCenterRET|DowntownRET|WarshipLandRET|LoveLoveRET|AjitoRET|JigokuSpaRET|JailHouseRET).*']) - - def initialize - super - @sendMode = 2 - @sortType = 1 - @d66Type = 2 - end - - def rollDiceCommand(command) - debug("rollDiceCommand begin string", command) - - result = '' - - result = checkRoll(command) - return result unless result.empty? - - debug("判定ロールではなかった") - - result = check_seigou(command) - return result unless result.empty? - - debug("〔性業値〕チェックでもなかった") - - debug("各種表として処理") - return rollTableCommand(command) - end - - def checkRoll(string) - debug("checkRoll begin string", string) - - return '' unless /^(\d+)R>=(\d+)(\[(\d+)?(,|,\d+)?(,\d+(S)?)?\])?$/i =~ string - - roll_times = Regexp.last_match(1).to_i - target = Regexp.last_match(2).to_i - params = Regexp.last_match(3) - - min_suc, fumble, critical, isCriticalStop = getRollParams(params) - - result = "" - - if target > 12 - result += "【#{string}】 > 難易度が12を超えたため、超過分、ファンブル率が上昇!\n" - while target > 12 - target -= 1 - fumble += 1 - end - end - - if (critical < 1) || (critical > 12) - critical = 13 - end - - if fumble >= 6 - result += "#{getJudgeInfo(target, fumble, critical)} > ファンブル率が6を超えたため自動失敗!" - return result - end - - if target < 5 - result += "【#{string}】 > あらゆる難易度は5未満にはならないため、難易度は5になる!\n" - target = 5 - end - - dice_str, total_suc, isCritical, isFumble = checkRollLoop(roll_times, min_suc, target, critical, fumble, isCriticalStop) - - result += "#{getJudgeInfo(target, fumble, critical)} > #{dice_str} > 成功度#{total_suc}" - - if isFumble - result += " > ファンブル" - end - - if isCritical && (total_suc > 0) - result += " > 必殺発動可能!" - end - - debug('checkRoll result result', result) - return result - end - - def getRollParams(params) - min_suc = 0 - fumble = 1 - critical = 13 - isCriticalStop = false - - # params => "[x,y,cS]" - unless params.nil? - if /\[(\d*)(,(\d*)?)?(,(\d*)(S)?)?\]/ =~ params - min_suc = Regexp.last_match(1).to_i - fumble = Regexp.last_match(3).to_i if Regexp.last_match(3).to_i != 0 - critical = Regexp.last_match(5).to_i if Regexp.last_match(4) - isCriticalStop = !Regexp.last_match(6).nil? - end - end - - return min_suc, fumble, critical, isCriticalStop - end - - def getJudgeInfo(target, fumble, critical) - "【難易度#{target}、ファンブル率#{fumble}#{getcriticalString(critical)}】" - end - - def getcriticalString(critical) - criticalString = (critical == 13 ? "なし" : critical.to_s) - return "、必殺#{criticalString}" - end - - def checkRollLoop(roll_times, min_suc, target, critical, fumble, isCriticalStop) - dice_str = '' - isFumble = false - isCritical = false - total_suc = 0 - - roll_times.times do |_i| - debug('roll_times', roll_times) - - debug('min_suc, total_suc', min_suc, total_suc) - if min_suc != 0 - if total_suc >= min_suc - debug('(total_suc >= min_suc) break') - break - end - end - - d1, = roll(1, 6) - d2, = roll(1, 6) - - dice_suc = 0 - dice_suc = 1 if target <= (d1 + d2) - dice_str += "+" unless dice_str.empty? - dice_str += "#{dice_suc}[#{d1},#{d2}]" - total_suc += dice_suc - - if critical <= d1 + d2 - isCritical = true - dice_str += "『必殺!』" - end - - if (d1 == d2) && (d1 <= fumble) # ファンブルの確認 - isFumble = true - isCritical = false - break - end - - if isCritical && isCriticalStop # 必殺止めの確認 - break - end - end - - return dice_str, total_suc, isCritical, isFumble - end - - def check_seigou(string) - debug("check_seigou begin string", string) - - return '' unless /^SR(\d+)(([+]|[-])(\d+))?$/i =~ string - - target = Regexp.last_match(1).to_i - operator = Regexp.last_match(3) - value = Regexp.last_match(4).to_i - - dice, = roll(2, 6) - modify = 0 - - unless operator.nil? - modify = value if operator == "+" - modify = value * -1 if operator == "-" - end - - diceTotal = dice + modify - - seigou = "" - seigou = "「激」" if target < diceTotal - seigou = "「迷」" if target == diceTotal - seigou = "「律」" if target > diceTotal - - result = "〔性業値〕#{target}、「修正値」#{modify} > ダイス結果:(#{dice}) > #{dice}+(#{modify})=#{diceTotal} > #{seigou}" - - result += " > 1ゾロのため〔性業値〕が1点上昇!" if dice == 2 - result += " > 6ゾロのため〔性業値〕が1点減少!" if dice == 12 - - debug('check_seigou result result', result) - return result - end - - #################### - # 各種表 - - def rollTableCommand(command) - command = command.upcase - result = [] - - return result unless /([A-Za-z]+)(\d+)?(([+]|[-]|[=])(\d+))?/ === command - - command = Regexp.last_match(1) - counts = 1 - counts = Regexp.last_match(2).to_i if Regexp.last_match(2) - operator = Regexp.last_match(4) - value = Regexp.last_match(5).to_i - - debug("rollDiceCommand command", command) - - case command - when "TAGT" - result = getTagTableResult(counts) - - when "GETSST" - result = getCreateSatasupeResult(counts) - - when "NPCT" - result = getNpcTableResult(counts) - else - result = getAnotherTableResult(command, counts, operator, value) - end - - return result.join("\n") - end - - def getTagTableResult(counts) - name = "タグ決定表" - table = [ - '情報イベント', - 'アブノーマル(サ)', - 'カワイイ(サ)', - 'トンデモ(サ)', - 'マニア(サ)', - 'ヲタク(サ)', - '音楽(ア)', - '好きなタグ', - 'トレンド(ア)', - '読書(ア)', - 'パフォーマンス(ア)', - '美術(ア)', - 'アラサガシ(マ)', - 'おせっかい(マ)', - '好きなタグ', - '家事(マ)', - 'ガリ勉(マ)', - '健康(マ)', - 'アウトドア(休)', - '工作(休)', - 'スポーツ(休)', - '同一タグ', - 'ハイソ(休)', - '旅行(休)', - '育成(イ)', - 'サビシガリヤ(イ)', - 'ヒマツブシ(イ)', - '宗教(イ)', - '同一タグ', - 'ワビサビ(イ)', - 'アダルト(風)', - '飲食(風)', - 'ギャンブル(風)', - 'ゴシップ(風)', - 'ファッション(風)', - '情報ハプニング', - ] - - result = [] - - counts.times do |_i| - info, number = get_table_by_d66(table) - text = "#{name}:#{number}:#{info}" - result.push(text) - end - - return result - end - - def getCreateSatasupeResult(counts) - debug("getCreateSatasupeResult counts", counts) - - name = "サタスペ作成" - - hit = 0 - damage = 0 - life = 0 - kutibeni = 0 - kiba = 0 - - abilities = [] - - baseParts = "#{name}:ベース部品:" - partsEffect = "部品効果:" - - number1, = roll(1, 6) - - case number1 - when 1 - baseParts += "「紙製の筒」" - partsEffect += "「命中:10、ダメージ:3、耐久度1」" - hit = 10 - damage = 3 - life = 1 - - when 2 - baseParts += "「木製の筒」" - partsEffect += "「命中:9、ダメージ:3、耐久度2」" - hit = 9 - damage = 3 - life = 2 - - when 3 - baseParts += "「小型のプラスチック製の筒」" - partsEffect += "「命中:9、ダメージ:4、耐久度2」" - hit = 9 - damage = 4 - life = 2 - - when 4 - baseParts += "「大型のプラスチック製の筒」" - partsEffect += "「命中:8、ダメージ:3、耐久度2、両手」" - hit = 8 - damage = 3 - life = 2 - abilities << "「両手」" - - when 5 - baseParts += "「小型の金属製の筒」" - partsEffect += "「命中:9、ダメージ:4、耐久度3」" - hit = 9 - damage = 4 - life = 3 - - when 6 - baseParts += "「大型の金属製の筒」" - partsEffect += "「命中:8、ダメージ:5、耐久度3、両手」" - hit = 8 - damage = 5 - life = 3 - abilities << "「両手」" - end - - armsTable = [ - [11, '「パチンコ玉」'], - [12, '「釘や画鋲、針」'], - [13, '「砂利や小石、ガラスの破片」'], - [14, '「口紅」'], - [15, '「バネやゼンマイ」'], - [16, '「捻子やビス」'], - [22, '「生ゴミ」'], - [23, '「ゴム」'], - [24, '「歯車」'], - [25, '「歯や牙、骨」'], - [26, '「ワイヤー」'], - [33, '「メガネなどのレンズ」'], - [34, '「マッチ」'], - [35, '「ガムテープや接着剤」'], - [36, '「洗濯ばさみ」'], - [44, '「花火」'], - [45, '「食玩」'], - [46, '「真空管やトランジスタ」'], - [55, '「エアコンプレッサ」'], - [56, '「豆」'], - [66, '「ガスボンベや殺虫剤」'], - ] - armsEffectTable = [ - [11, '「武器破壊」'], - [12, '「毒」'], - [13, '「散弾」'], - [14, '「(判定前宣言)一度だけ必殺10」'], - [15, '「フル」'], - [16, '「ダメージ+1」'], - [22, '「衝撃」'], - [23, '「ダメージ+1」'], - [24, '「リボルバー」'], - [25, '「(判定前宣言)1D6回、ダメージ+2」'], - [26, '「耐久度+1」'], - [33, '「命中-1」'], - [34, '「必殺12」'], - [35, '「耐久度+1」'], - [36, '「命中-1」'], - [44, '「弾幕1」'], - [45, '「暗器」'], - [46, '「神秘」'], - [55, '「ダメージ+1」'], - [56, '「マヒ」'], - [66, '「爆発3」'], - ] - - baseParts += " アクセサリ部品:" - - counts.times do |_i| - number2 = d66(2) - baseParts += get_table_by_number(number2, armsTable) - partsEffect += get_table_by_number(number2, armsEffectTable) - - case number2 - when 11 - abilities << "「武器破壊」" - when 12 - abilities << "「毒」" - when 13 - abilities << "「散弾」" - when 14 - kutibeni += 1 - when 15 - abilities << "「フル」" - when 16, 23, 55 - damage += 1 - when 22 - abilities << "「衝撃」" - when 24 - abilities << "「リボルバー」" - when 25 - kiba, = roll(1, 6) - when 26, 35 - life += 1 - when 33, 36 - hit -= 1 - when 34 - abilities << "「必殺12」" - when 44 - abilities << "「弾幕1」" - when 45 - abilities << "「暗器」" - when 46 - abilities << "「神秘」" - when 56 - abilities << "「マヒ」" - when 66 - abilities << "「爆発3」" - end - end - - result = [] - result.push(baseParts) - result.push(partsEffect) - - text = "完成品:サタスペ (ダメージ+#{damage}・命中#{hit}・射撃、" - text += "「(判定前宣言)#{kutibeni}回だけ、必殺10」" if kutibeni > 0 - text += "「(判定前宣言)#{kiba}回だけ、ダメージ+2」" if kiba > 0 - - text += abilities.sort.uniq.join - - text += "「サタスペ#{counts}」「耐久度#{life}」)" - - result.push(text) - - return result - end - - def getNpcTableResult(counts) - # 好み/雰囲気表 - lmood = [ - 'ダークな', - 'お金持ちな', - '美形な', - '知的な', - 'ワイルドな', - 'バランスがとれてる', - ] - # 好み/年齢表 - lage = [ - '年下が好き。', - '同い年が好き。', - '年上が好き。', - ] - # 年齢表 - age = [ - '幼年', # 6+2D6歳 - '少年', # 10+2D6歳 - '青年', # 15+3D6歳 - '中年', # 25+4D6歳 - '壮年', # 40+5D6歳 - '老年', # 60+6D6歳 - ] - agen = [ - '6+2D6', # 幼年 - '10+2D6', # 少年 - '15+3D6', # 青年 - '25+4D6', # 中年 - '40+5D6', # 壮年 - '60+6D6', # 老年 - ] - - name = "NPC表:" - - result = [] - - counts.times do |_i| - age_type, = roll(1, 6) - age_type -= 1 - - agen_text = agen[age_type] - age_const, age_dice = agen_text.split("+") - - times, sides = age_dice.split("D").map(&:to_i) - total, = roll(times, sides) - ysold = total + age_const.to_i - - lmodValue = lmood[(rand 6)] - lageValue = lage[(rand 3)] - - text = "#{name}#{age[age_type]}(#{ysold}歳):#{lmodValue}#{lageValue}" - result.push(text) - end - - return result - end - - def getAnotherTableResult(command, counts, operator, value) - result = [] - - name, table = get2d6TableInfo(command) - return result if name.empty? - - counts.times do |_i| - _, index = getTableIndex(operator, value, 2, 6) - - info = table[index - 2] - text = "#{name}#{index}:#{info}" - result.push(text) - end - - return result - end - - def getTableIndex(operator, value, diceCount, diceType) - index = nil - modify = 0 - - case operator - when "+" - modify = value - when "-" - modify = value * -1 - when "=" - index = value - end - - if index.nil? - index, = roll(diceCount, diceType) - index += modify - end - - index = [index, diceCount * 1].max - index = [index, diceCount * diceType].min - - return modify, index - end - - def get2d6TableInfo(command) - name = "" - table = [] - - case command - when /CrimeIET/i - name = "情報イベント表/〔犯罪〕:" - table = %w{ - 謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! - 昔やった仕事の依頼人が登場。てがかりをくれる。好きなタグの上位リンク(SL+2)を1つ得る。 - 謎のメモを発見……このターゲットについて調べている間、このトピックのタグをチーム全員が所有しているものとして扱う - 謎の動物が亜侠を路地裏に誘う。好きなタグの上位リンクを2つ得る - 偶然、他の亜侠の仕事現場に出くわす。口止め料の代わりに好きなタグの上位リンクを1つ得る - あまりに適切な諜報活動。コストを消費せず、上位リンクを3つ得る - その道の権威を紹介される。現在と同じタグの上位リンクを2つ得る - 捜査は足だね。〔肉体点〕を好きなだけ消費する。その値と同じ数の好きなタグの上位リンクを得る - 近所のコンビニで立ち読み。思わぬ情報が手に入る。上位リンクを3つ得る - そのエリアの支配盟約からメッセンジャーが1D6人。自分のチームがその盟約に敵対していなければ、好きなタグの上位リンクを2つ得る。敵対していれば、メッセンジャーは「盟約戦闘員(p.127)」となる。血戦を行え - 「三下(p.125)」が1D6人現れる。血戦を行え。倒した数だけ、好きなタグの上位リンクを手に入れる - } - when /LifeIET/i - name = "情報イベント表/〔生活〕:" - table = %w{ - 謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! - 隣の奥さんと世間話。上位リンクを4つ得る - ミナミで接待。次の1ターン何もできない代わりに、好きなタグの上位リンク(SL+2)を1つ得る - 息抜きにテレビを見ていたら、たまたまその情報が。好きなタグの上位リンクを1つ得る - 器用に手に入れた情報を転売する。《札巻》を1個手に入れ、上位リンクを3つ得る - 情報を得るついでに軽い営業。〔サイフ〕を1回復させ、上位リンクを3つ得る - 街の有力者からの突然の電話。そのエリアの盟約の幹部NPCの誰かと【コネ】を結ぶことができる - 金をばらまく。〔サイフ〕を好きなだけ消費する。その値と同じ数の任意の上位リンクを得る - 〔表の顔〕の同僚が思いがけないアドバイスをくれる。上位リンクを1D6つ得る - 謎の情報屋チュンさんが、情報とアイテムのトレードを申し出る。DDの指定するアイテムを1つ手に入れると、どこからともなくチュンさんが現れる。そのアイテムをチュンさんに渡せば、情報ゲット! - ターゲットとは関係ないが、ドデかい情報を掘り当てる。その情報を売って〔サイフ〕が全快する - } - when /LoveIET/i - name = "情報イベント表/〔恋愛〕:" - table = %w{ - 謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! - 恋人との別れ。自分に恋人がいれば、1人を選んで、お互いのトリコ欄から名前を消す。その代わり情報ゲット! - とびきり美形の情報提供者と遭遇。〔性業値〕判定で律になると、好きなタグの上位リンクを1つ得る - 敵対する亜侠と第一種接近遭遇。キスのあとの濡れた唇から、上位リンクを3つ得る - 昔の恋人がそれに詳しかったはず。その日の深夜・早朝に行動しなければ、好きなタグの上位リンク(SL+2)を1つ得る - 情報はともかくトリコをゲット。データは「女子高生(p.122)」を使用する - 関係者とすてきな時間を過ごす。好きなタグの上位リンクを1つ得る。ただし、次の1ターンは行動できない - 持つべきものは愛の奴隷。自分のトリコの数だけ好きなタグの上位リンクを得る - 自分よりも10歳年上のイヤなやつに身体を売る。現在と同じタグの上位リンクを1つ得る - 有力者からの突然のご指名。チームの仲間を1人、ランダムに決定する。差し出すなら、そのキャラクターは次の1ターン行動できない代わり、その後にそのキャラクターの〔恋愛〕と同じ数の上位リンクを得る - 愛する人の死。自分に恋人がいれば、1人選んで、そのキャラクターを死亡させる。その代わり情報ゲット! - } - when /CultureIET/i - name = "情報イベント表/〔教養〕:" - table = %w{ - 謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! - ネットで幻のリンクサイトを発見。すべての種類のタグに上位リンクがはられる - 間違いメールから恋が始まる。ハンドルしか知らない「女子高生(p.122)」と恋人(お互いのトリコ)の関係になる - 新聞社でバックナンバーを読みふける。上位リンクを6つ得る - 巨大な掲示板群から必要な情報をサルベージ。好きなタグの上位リンクを1つ得る - 検索エンジンにかけたらすぐヒット。コストを消費せず、上位リンクを4つ得る - 警察無線を傍受。興味深い。好きなタグの上位リンクを2つ得る - クールな推理がさえ渡る。〔精神点〕を好きなだけ消費する。その値と同じ数だけ好きなタグの上位リンクを得る - 図書館ロールが貫通。好きなタグの上位リンク(SL+3)を1つ得る - 図書館で幻の書物を発見。上位リンクを8つ得る。キャラクターシートのメモ欄に<クトゥルフ神話知識>、SANと記入し、それぞれ後ろに+5、-5の数値を書き加える - アジトに謎の手紙が届く。自分のアジトに戻れば、情報ゲット! - } - when /CombatIET/i - name = "情報イベント表/〔戦闘〕:" - table = %w{ - 謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! - 昔、お前が『更正』させた大幇のチンピラから情報を得る。〔精神点〕を2点減少し、好きなタグの上位リンク(SL+2)を1つ得る。 - 大阪市警の刑事から情報リーク。「敵の敵は味方」ということか……? 〔精神点〕を3点減少し、上位リンクを6つ得る。 - 無軌道な若者達を拳で『更正』させる。彼等は涙を流しながら情報を差し出した。……情けは人のためならず。好きなだけ〔精神点〕を減少する。減少した値と同じ数だけ、上位リンクを得る。 - クスリ漬けの流氓を拳で『説得』。流氓はゲロと一緒に情報を吐き出した。2点のダメージ(セーブ不可)を受け、好きなタグの上位リンクを1つ得る。 - 次から次へと糞どもがやってくる。コストを消費せずに上位リンクを3つ得る。 - 自称『善良な一市民』からの情報リークを受ける。オマエの持っている異能の数だけ上位リンクを得る。……罠か!? - サウナ風呂でくつろぐヤクザから情報収集。ヤクザは歯の折れた口から、弱々しい呻きと共に情報を吐き出した。好きなだけダメージを受ける(セーブ不可)。好きなタグの受けたダメージと同じ値のSLへリンクを1つ得る。 - ゼロ・トレランスオンスロートなラブ&ウォー。2D6を振り、その値が現在の〔肉体点〕以上であれば、情報をゲット! - お前達を狙う刺客が冥土の土産に教えてくれる。お前自身かチームの仲間、お前の恋人のいずれかの〔肉体点〕を0点にすれば、情報をゲットできる。 - お前の宿敵(データはブラックアドレス)が1D6体現れる。血戦によって相手を倒せば、情報ゲット。 - } - when /CrimeIHT/i - name = "情報ハプニング表/〔犯罪〕:" - table = %w{ - 謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! - 警官からの職務質問。一晩拘留される。臭い飯表(p.70)を1回振ること - だますつもりがだまされる。〔サイフ〕を1点消費 - 気のゆるみによる駐車違反。持っている乗物が無くなってしまう - 超えてはならない一線を越える。トラウマを1点受ける - そのトピックを取りしきる盟約に目をつけられる。このトピックと同じタグのトピックからはリンクをはれなくなる - 過去の亡霊がきみを襲う。自分の修得している異能の中から好きな1つを選ぶ。このセッションでは、その異能が使用不可になる - 敵対する盟約のいざこざに巻き込まれる。〔肉体点〕に1D6点のセーブ不可なダメージを受ける - スリにあう。〔通常装備〕からランダムにアイテムを1個選び、それを無くす - 敵対する盟約からの妨害工作。この情報は情報収集のルールを使って手に入れることはできなくなる - 頼れる協力者のもとへ行くと、彼(彼女)の無惨な姿が……自分の持っている現在のセッションに参加していないキャラクター1体を選び、〔肉体点〕を0にする。そして、致命傷表(p.61)を振ること - } - when /LifeIHT/i - name = "情報ハプニング表/〔生活〕:" - table = %w{ - 謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! - 経理の整理に没頭。この日の行動をすべてそれに費やさない限り、このセッションでは買物を行えなくなる - 壮大なる無駄使い。〔サイフ〕を1点消費 - 「当たり屋(p.124)」が【追跡】を開始 - 留守の間に空き巣が! 〔アジト装備〕からランダムにアイテムが1個無くなる - 「押し売り(p.124)」が【追跡】を開始 - 新たな風を感じる。自分の好きな〔趣味〕1つをランダムに変更すること - 貧乏ひまなし。[1D6-自分の〔生活〕]ターンの間、行動できなくなる - 留守の間にアジトが火事に! 〔アジト装備〕がすべて無くなる。明日からどうしよう? - 頼りにしていた有力者が失脚する。しわ寄せがこっちにもきて、〔生活〕が1点減少する - 覚えのない借金の返済を迫られる。〔サイフ〕を1D6点減らす。〔サイフ〕が足りない場合、そのセッション終了時までに不足分を支払わないと【借金大王】(p.119)の代償を得る - } - when /LoveIHT/i - name = "情報ハプニング表/〔恋愛〕:" - table = %w{ - 謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! - 一晩を楽しむが相手はちょっと特殊な趣味だった。アブノーマルの趣味を持っていない限り、トラウマを1点受ける。この日はもう行動できない - 一晩を楽しむが相手はちょっと特殊な趣味だった。【両刀使い】の異能を持っていない限り、トラウマを1点受ける。この日はもう行動できない - 一晩を楽しむが相手は年齢を10偽っていた。ロマンス判定のファンブル表を振ること - すてきな人を見かけ、一目惚れ。DDが選んだNPC1体のトリコになる - 「痴漢・痴女(p.124)」が【追跡】を開始 - 手を出した相手が有力者の女(ヒモ)だった。手下どもに袋叩きに会い、1D6点のダメージを受ける(セーブ不可) - 突然の別れ。トリコ欄からランダムに1体を選び、その名前を消す - 乱れた性生活に疲れる。〔肉体点〕と〔精神点〕がともに2点減少する - 性病が伝染る。1日以内に病院に行き、治療(価格4)を行わないと、鼻がもげる。鼻がもげると〔恋愛〕が1点減少する - 生命の誕生。子供ができる - } - when /CultureIHT/i - name = "情報ハプニング表/〔教養〕:" - table = %w{ - 謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! - アヤシイ書物を読み、一時的発狂。この日はもう行動できない。トラウマを1点受ける - 天才ゆえの憂鬱。自分の〔教養〕と同じ値だけ、〔精神点〕を減少させる - 唐突に睡魔が。次から2ターンの間、睡眠しなくてはならない - 間違いメールから恋が始まる。ハンドルしか知らない「女子高生(p.122)」に偽装した「殺人鬼(p.137)」と恋人(お互いのトリコ)の関係になる - 「勧誘員(p.124)」が【追跡】を開始 - OSの不調。徹夜で再インストール。この日はもう行動できない上、「無理」をしてしまう - 場を荒らしてしまう。このトピックと同じタグのトピックからはリンクをはれなくなる - ボケる。〔教養〕が1点減少する - クラッキングに遭う。いままで調べていたトピックとリンクをすべて失う - ネットサーフィンにハマってしまい、ついつい時間が過ぎる。毎ターンのはじめに〔性業値〕判定を行い、律にならないとそのターンは行動できない。この効果は1日続く - } - when /CombatIHT/i - name = "情報ハプニング表/〔戦闘〕:" - table = %w{ - 謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! - 悪を憎む心に支配され、一匹の修羅と化す。キジルシの代償から1種類を選び、このセッションの間、習得すること。修得できるキジルシの代償がなければ、あなたはNPCとなる。 - 自宅に帰ると、無惨に破壊された君のおたからが転がっていた。「この件から手を引け」という書き置きと共に……。この情報フェイズでは、リンク判定を行ったトピックのタグの〔趣味〕を修得していた場合、それを未修得にする。また、おたからを持っていたなら、このセッション中、そのおたからは利用できなくなる。 - 「俺にはもっと別の人生があったんじゃないだろうか……!?」突如、空しさがこみ上げて来る……その日は各ターンの始めに〔性業値〕判定を行う。失敗すると、酒に溺れ、そのターンは行動済みになる。 - クライムファイター仲間からスパイの容疑を受ける……1点のトラウマを追う。 - 自宅の扉にメモが……!! 「今ならまだ間に合う」奴等はどこまで知っているんだ!? このトピックからは、これ以上リンクを伸ばせなくなる。 - 大幇とコンビナートの抗争に何故か巻き込まれる。……なんとか生還するが、次のターンの最後まで行動できず、1D6点のダメージを受ける(セーブ不可) - 地獄組の鉄砲玉が君に襲い掛かってきた!! 〔戦闘〕で難易度9の判定に失敗すると、〔肉体点〕が0になる。 - 「お前はやり過ぎた」の書きおきと共に、友人の死体が発見される〔戦闘〕で難易度9の判定を行う。失敗すると、ランダムに選んだチームの仲間1人が死亡する。 - 宿敵によって深い疵を受ける。自分の修得している異能の中から、1つ選ぶこと。このセッションのあいだ、その異能を使用することができなくなる。 - 流氓の男の卑劣な罠にかかり、肥え喰らいの巣に落ちる!! 「掃き溜めの悪魔」1D6体と血戦を行う。戦いに勝たない限り、生きて帰ることはできないだろう……。もちろん血戦に勝ったところで情報は得られない。 - } - when /G(eneral)?A(ccident)?T/i - name = "汎用アクシデント表:" - table = %w{ - 痛恨のミス。激しく状況が悪化する。以降のケチャップに関する行為判定の難易度に+1の修正がつき、あなたが追う側なら逃げる側のコマを2マス進める(逃げる側なら自分を2マス戻す) - 最悪の大事故。ケチャップどころではない! 〔犯罪〕で難易度9の判定を行う。失敗したら、ムーブ判定を行ったキャラクターは3D6点のダメージを受け、ケチャップから脱落する。判定に成功すればギリギリ難を逃れる。特に何もなし。 - もうダメだ……。絶望感が襲いかかってくる。後3ラウンド以内にケリをつけないと、あなたが追う側なら自動的に逃げる側が勝利する(逃げる側なら追う側が勝利する) - まずい、突発事故だ! ムーブ判定を行ったキャラクターは、1D6点のダメージを受ける。 - 一瞬ひやりと緊張が走る。 ムーブ判定を行ったキャラクターは、〔精神点〕を2点減少する。 - スランプ! 思わず足踏みしてしまう。ムーブ判定を行った者は、ムーブ判定に使用した能力値を使って難易度7の判定を行うこと。失敗したら、ムーブ判定を行ったキャラクターは、ケチャップから脱落。成功しても、あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す) - イマイチ集中できない。〔性業値〕判定を行うこと。「激」になると、思わず見とれてしまう。あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す) - 古傷が痛み出す。以降のケチャップに関する行為判定に修正が+1つく - うっかり持ち物を見失う。〔通常装備〕欄からアイテムを1個選んで消す - 苦しい状態に追い込まれた。ムーブ判定を行ったキャラクターは、今後のムーブ判定で成功度が-1される。 - 頭の中が真っ白になる。〔精神点〕を1D6減少する。 - } - when /R(omance)?F(umble)?T/i - name = "ロマンスファンブル表:" - table = %w{ - みんなあいそをつかす。自分のトリコ欄のキャラクターの名前をすべて消すこと - 痴漢として通報される。〔犯罪〕の難易度9の判定に成功しない限り、1D6ターン後に検挙されてしまう - へんにつきまとわれる。対象は、トリコになるが、ファンブル表の結果やトリコと分かれる判定に成功しない限り、常備化しなくてもトリコ欄から消えることはない - 修羅場! 対象とは別にトリコを所有していれば、そのキャラクターが現れ、あなたと対象に血戦をしかけてくる - 恋に疲れる。自分の〔精神点〕が1D6点減少する - 甘い罠。あなたが対象のトリコになってしまう - 平手うち! 自分の〔肉体点〕が1D6点減少する - 浮気がばれる。恋人関係にあるトリコがいれば、そのキャラクターの名前をあなたのトリコ欄から消す - 無礼な失言をしてしまう。対象はあなたに対し「憎悪(p.120参照)」の反応を抱き、あなたはその対象の名前を書き込んだ【仇敵】の代償を得る - ショックな一言。トラウマを1点受ける - トリコからの監視! このセッションの間、ロマンス判定のファンブル率が自分のトリコの所持数と同じだけ上昇する - } - when /FumbleT/i - name = "命中判定ファンブル表:" - table = %w{ - 自分の持ち物がすっぽぬけ、偶然敵を直撃! 持っているアイテムを1つ消し、ジオラマ上にいるキャラクター1人をランダムに選ぶ。そのキャラクターの〔肉体点〕を1D6ラウンドの間0点にし、行動不能にさせる(致命傷表は使用しない)。1D6ラウンドが経過し、行動不能から回復すると、そのキャラクターの〔肉体点〕は、行動不能になる直前の値にまで回復する - 敵の増援! 「三下(p.125)」が1D6体現れて、自分たちに襲いかかってくる(DDは、この処理が面倒だと思ったら、ファンブルしたキャラクターの〔肉体点〕を1D6点減少させてもよい) - お前のいるマスに「障害物」が出現! そのマスに障害物オブジェクトを置き、そのマスにいたキャラクターは全員2ダメージを受ける(セーブ不可) - 射撃武器を使っていれば、弾切れを起こす。準備行動を行わないとその武器はもう使えない - 転んでしまう。準備行動を行わないと移動フェイズに行動できず、格闘、射撃、突撃攻撃が行えない - 急に命が惜しくなる。性業値判定をすること。「激」なら戦闘を続行。「律」なら次のラウンドから全力移動を行い、ジオラマから逃走を試みる。「迷」なら次のラウンドは移動・攻撃フェイズに行動できない - 誤って別の目標を攻撃。目標以外であなたに一番近いキャラクターに4ダメージ(セーブ不可)! - 誤って自分を攻撃。3ダメージ(セーブ不可)! - 今使っている武器が壊れる。アイテム欄から使用中の武器を消すこと。銃器を使っていた場合、暴発して自分に6ダメージ! 武器なしの場合、体を傷つけ3ダメージ(共にセーブ不可)! - 「制服警官(p.129)」が1人現れる。その場にいるキャラクターをランダムに攻撃する - 最悪の事態。〔肉体点〕を0にして、そのキャラクターは行動不能に(致命傷表は使用しない) - } - when /FatalT/i - name = "致命傷表:" - table = %w{ - 死亡。 - 死亡。 - 昏睡して行動不能。1D6ラウンド以内に治療し、〔肉体点〕を1以上にしないと死亡。 - 昏睡して行動不能。1D6ターン以内に治療し、〔肉体点〕を1以上にしないと死亡。 - 大怪我で行動不能。体の部位のどこかを欠損してしまう。任意の〔能力値〕1つが1点減少。 - 大怪我で行動不能。1D6ターン以内に治療し、〔肉体点〕を1以上にしないと体の部位のどこかを欠損してしまう。任意の〔能力値〕1つが1点減少。 - 気絶して行動不能。〔肉体点〕の回復には治療が必要。 - 気絶して行動不能。1ターン後、〔肉体点〕が1になる。 - 気絶して行動不能。1D6ラウンド後、〔肉体点〕が1になる。 - 気絶して行動不能。1D6ラウンド後、〔肉体点〕が1D6回復する。 - 奇跡的に無傷。さきほどのダメージを無効に。 - } - when /AccidentT/i - name = "アクシデント表:" - table = %w{ - ゴミか何かが降ってきて、視界を塞ぐ。以降のケチャップに関する判定に修正が+1つく。あなたが追う側なら逃げる側のコマを2マス進める(逃げる側なら自分を2マス戻す) - 対向車線の車(もしくは他の船、飛行機)に激突しそうになる。運転手は難易度9の〔精神〕の判定を行うこと。失敗したら、乗物と乗組員全員は3D6のダメージを受けた上に、ケチャップから脱落 - ヤバイ、ガソリンがもうない! 後3ラウンド以内にケリをつけないと逃げられ(追いつかれ)ちまう - 露店や消火栓につっこむ。その乗物に1D6ダメージ - 一瞬ひやりと緊張が走る。〔精神点〕を2点減らす - 何かの障害物に衝突する。運転手は難易度7の〔精神〕の判定を行うこと。失敗したら、乗物と乗組員全員は2D6ダメージを受けた上に、ケチャップから脱落。成功しても、あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す) - 走ってる途中に〔趣味〕に関する何かが目に映る。性業値判定を行うこと。「激」になると思わず見とれてしまう。あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す) - 軽い故障が起きちまった。以降のケチャップに関する行為判定に修正が+1つく - うっかり落し物。〔通常装備〕欄からアイテムを1個選んで消す - あやうく人にぶつかりそうになる。運転手は難易度9の〔精神〕の判定を行う。失敗したら、その一般人を殺してしまう。あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す) - 信号を無視しちまったら後ろで事故が起きた。警察のサイレンが鳴り響いてくる。DDはケチャップの最後尾に警察の乗物を加えろ。データは「制服警官(p.129)」のものを使用 - } - when /AfterT/i - name = "その後表:" - table = %w{ - ここらが潮時かもしれない。2D6を振り、その目が自分の修得している代償未満であれば、そのキャラクターは引退し、二度と使用できない - 苦労の数だけ喜びもある。2D6を振り、自分の代償の数以下の目を出した場合、経験点が追加で1点もらえる - 妙な恨みを買ってしまった。【仇敵】(p.95)を修得する。誰が【仇敵】になるかは、DDが今回登場したNPCの中から1人を選ぶ - 大物の覚えがめでたい。今回のセッションに登場した盟約へ入るための条件を満たしていれば、その盟約に経験点の消費なしで入ることができる - 思わず意気投合。今回登場したNPC1人を選び、そのキャラクターとの【コネ】(p.95)を修得する - 今回の事件で様々な教訓を得る。自分の修得しているアドバンスドカルマの中から、汎用以外のものを好きなだけ選ぶ。そのカルマの異能と代償を、別な異能と代償に変更することができる - 深まるチームの絆。今回のセッションでミッションが成功していた場合、【絆】(p.95)を修得する - 色々な運命を感じる。今回のセッションでトリコができていた場合、経験点の消費なしにそのトリコを常備化することができる。また、自分が誰かのトリコになっていた場合、その人物への【トリコ】(p.95)の代償を得る - やっぱり亜侠も楽じゃないかも。今回のセッションで何かツラい目にあっていた場合、【日常】(p.95)を取得する - くそっ! ここから出せ!! 今回のセッションで逮捕されていたら、【前科】(p.95)の代償を得る - 〔性業値〕が1以下、もしくは13以上だった場合、そのキャラクターは大阪の闇に消える。そのキャラクターは引退し、二度と使用できない - } - when /KusaiMT/i - name = "臭い飯表:" - table = %w{ - やあ署長、ご苦労さん。いつでも好きなときに留置所を出ることができる。 - 軽い取り調べを受ける。次の1ターンが終了するまで、未行動にならない。 - 荒っぽい取り調べを受ける。次の1ターンが終了するまで、未行動にならない。1ターン休み。1D6ダメージを受ける(セーブ不可)。 - 一晩泊まっていきなさい。次の日の朝まで未行動にならない。 - 粘り強い取り調べが続く。1D6日後の朝まで未行動にならない。 - 留置所のトイレで陵辱を受ける。1D6日後の朝まで未行動にならない。トラウマを1点受ける。 - 劣悪な環境のせいで伝染病にかかる。1D6日後の朝まで未行動にならない。【病弱】の代償を得る。 - 精神異常を訴え、無罪に。しかし、アーカム・アサイレムに移送され、1D6回別のキャラクターでセッションを行うまで、そのキャラクターを使用できない。キジルシの代償の中から、ランダムに1つの代償を得る。 - 起訴されて有罪に。海上刑務所行き。1D6回別のキャラクターでセッションを行うまで、そのキャラクターを使用できない。【前科】の代償を得る。 - 起訴されて有罪に。海上刑務所行き。2D6回別のキャラクターでセッションを行うまで、そのキャラクターを使用できない。【前科】の代償を得る。 - 起訴されて有罪に。海上刑務所行き。終身刑。そのキャラクターは引退する。 - } - when /EnterT/i - name = "登場表:" - table = %w{ - 「こっから先にはいかせないぜ」 【仇敵】がいれば現われ、血戦が始まる。現在の血戦、もしくはケチャップが終了したら、処理を行うこと。 - 「待たせたな、みんな!」 ジオラマの好きな場所に自分のキャラクターを配置する。 - おっと、鉢合わせ。ランダムにジオラマ上の敵を1体選ぶ。選んだ敵と同じマスに、そのキャラクターを配置する。 - 全力ダッシュで駆けつける! 〔肉体点〕を1D6点消費すれば、ジオラマの好きな場所に自分のキャラクターを配置する。そうでなければ、登場できない。 - 裏道を歩いていたら、偶然その場所にでくわした。DDはジオラマの好きな場所にそのキャラクターを配置する。 - 「キキィー!」 もしもそのキャラクターが乗物を装備していれば、DDはジオラマの好きな場所にそのキャラクターを配置する。そうでなければ、登場できない。 - ……間に合ったみたいだな。仲間を1人選び、そのキャラクターと同じマスに自分のキャラクターを配置する。 - ラッキー、「ジャリ銭」を拾った。……と、そんな場合じゃないよな。 - をっと、お前の好物だ。〔性業値〕判定を行え。「律」ならもう一回、登場表を振ることができる。それ以外なら、キャラクターを配置できない。 - んー。ここは一度通ったような。疲労から〔精神点〕を2点減少。 - くあー。完全に道に迷っちまった。この実行フェイズには登場できない。 - } - when /BudTT/i - name = "バッドトリップ表:" - table = %w{ - 自分の身の周りにいる人たちが異様な何か(悪魔、宇宙人、ゾンビ、お前と同じ顔をした誰か…)に変貌し襲い掛かってくる。お前はNPCとなって、同じ場所にいる誰かに血戦をしかける。血戦が終了すれば(そして生きていれば)、視界は元に戻っている。 - 世界は一つ。オープンソース。愛で結びつくべきなんだ。お前は自分の知っていることをペラペラと話だし、1D6ターンの間、聞かれれば知っていることを何でも話してしまう。 - 自分と他人の区別がつかなくなり、現実感が薄れる。〔精神点〕を1D6点減少する。 - 誰かが自分を殺そうと企んでいるような錯覚を覚える。1D6ターンの間、ペテン師の代償【疑心暗鬼】を修得する。 - 風景が極彩色に彩られる!もっと……もっと極彩色に!もし他にも「麻薬」カテゴリのアイテムを持っていれば、その中の1個を使用する(行動は使わない)。 - 目の前にいる人物が非常にいとおしく思えてくる。同じ場所にいるキャラクターの中からランダムに1人選ぶ。1D6ターンの間、そのキャラクターのトリコになる。 - 魅力的な裸の異性が、あなたの目の前で誘惑する幻覚を見る。〔性業値〕判定を行う。「激」になると服を脱ぎだす。もしも外にいればそのエリアの〔治安〕の難易度の〔犯罪〕判定を行う。失敗すると「臭い飯」表を振る。 - お前は痛みを感じなくなる。1D6ターンの間、〔肉体点〕の重症のペナルティが無効化される。 - 自分の持っているものから触手が生え、あなたにからみつく。自分の〔通常装備〕欄のアイテムの中からランダムに1種を選ぶ。それを捨てる。 - 皮膚の中を無数の蟲が蠢いているのを感じる。〔肉体点〕を3点減少する。 - 神々しい声が聞こえてくる。1D6ターンの間、自分の好きな能力値を1点上昇することができる。 - } - when /GetgT/i - name = "報酬・ガラクタ表:" - table = %w{ - 持ち主の〔生活〕と等しい個数の《食事》(基本80p、小道具・日用品) - 持ち主の〔生活〕と等しい個数の《トルエン》(基本79p、小道具・麻薬) - 持ち主の〔生活〕と等しい個数の《ジャリ銭》(基本78p、小道具・お金) - 壊れた実用品。実用品表で決定。(壊れたアイテムは、1ターン使用し〔教養〕で難易度9の判定に使用すると直せる) - 《テレカ》(基本78p、小道具・通信手段) - 何もなかった(涙)。残念でした。 - 《ロープ》(基本78p、小道具・保安器具) - 《トヨトミピストル》(基本74p、武器) - 《自転車》(基本76p、乗物) - 《ふとん》(基本79p、小道具・日用品) - 持ち主の〔趣味〕からランダムに1種類選ぶ。その趣味おたからを1個ランダムに選ぶ。 - } - when /GetzT/i - name = "報酬・実用品表:" - table = %w{ - 持ち主と同じタイプの汎用おたから(基本82p、汎用おたから) - 価格5の《ホテル》の使用券(基本80p、小道具・サービス) - 《苦力》(基本80p、小道具・手下) - 《カメラ》(基本80p、小道具・手下) - 持ち主が使っていた装備(ただし、一般アイテムに存在しない装備をPCは使用できない) - 持ち主の〔生活〕と等しい個数の《札巻》(基本78p、小道具・お金) - 持ち主の〔生活〕と等しい個数の《大麻》(基本79p、小道具・麻薬) - 《ノートパソコン》と《携帯電話》(基本78p、79p、小道具・日用品、通信手段) - 《ヴェスパ》(基本76p、乗物) - 《救急箱》(基本79p、小道具・保安器具) - 《札束》(基本78p、小道具・お金) - } - when /GetnT/i - name = "報酬・値打ち物表:" - table = %w{ - 社会的身分。【日常】の異能を手に入れる。 - 《人柱》(基本184p、盟約おたから・沙京流氓) - 貴重な貴金属。1ターン使って〔生活〕で難易度9の判定に成功すれば《トランク》と交換できる。 - 持ち主と同じタイプの汎用おたから(基本82p、汎用おたから) - 持ち主の〔生活〕と等しい個数の《ヘロイン》(基本79p、小道具・麻薬) - 持ち主の〔生活〕と等しい個数の《札束》(基本78p、小道具・お金) - 持ち主の〔生活〕と等しい個数の価格5以下の武器(基本79p、小道具・麻薬) - 《ロールスロイス》(基本76p、乗物) - 持ち主の〔趣味〕からランダムに1種類選ぶ。その趣味おたからを1個ランダムに選ぶ。 - 《トランク》(基本78p、小道具・お金) - 《宝箱》(基本78p、小道具・お金) - } - when /GetkT/i - name = "報酬・奇天烈表:" - table = %w{ - 好きな盟約おたから1個(プレイヤー全員で相談して決定) - 《気球》(基本76p、乗物) - 《チェインソー》(基本74p、武器) - 誰かから感謝される。それだけ? - 持ち主の〔趣味〕からランダムに1種類選ぶ。その趣味おたからを1個ランダムに選ぶ。 - 何もなかった(涙)。残念でした。 - 持ち主と同じタイプの汎用おたから(基本82p、汎用おたから) - 《フォークリフト》(基本76p、乗物) - 《RPG-7》(基本74p、武器) - 倒されたキャラクターは、致命傷表を振り、まだ生きていれば、そのキャラクターを倒した者のトリコになる。 - 「先にイッてるぜ」そのキャラクター1体を倒した者に経験点が1点与えられる。 - } - when /PayT/i - name = "落とし前表:" - table = %w{ - 闇のゲーム。ロシアンルーレットや地下闘技場への出場といった、致死率の高い理不尽な労働に従事させられる。この落とし前を1回受けるたびに、1D6を振る。1の出目が出ると、そのキャラクターは死亡する。 - 拷問。心身ともに痛めつけられる。この落とし前を1回受けるたびに、【悪夢】、【疑心暗鬼】、【出不精】、【依存体質】、【弱虫】、【虚弱】の中から代償を一つ選んで修得する。どの代償もすでに修得していた場合、そのキャラクターは死亡する。新しい恋人ができるたび、この落とし前の効果を1回分、無効化することができる。 - 苦役。売春や、組織犯罪の資金源になるよう強制労働に従事させられる。この落とし前を1回受けるたびに、以降、セッションの間に「苦役」という特に何の効果ももたらさない計画的行動を一度行わなければいけなくなる。セッション中に規定の「苦役」の回数をこなすことができなかったキャラクターは、「苦役」の必要回数に満たない数だけ、「落とし前表」を使用しなければならない。《トランク》を1個消費すると、この落とし前表の効果を1回分、無効化することができる。 - 係累への被害。自分の身内や恋人が殺される。この落とし前を1回受けるたびに、トラウマを1点受ける。 - 部位破壊。指や手首を切り落とされたり、臓器を摘出されたりする。この落とし前を1回受けるたびに、「致命傷表」の6番の効果を受ける。 - 罰金。法外な違約金を払わされたり、借金を負わされたりする。この落とし前を1回受けるたびに、〔サイフ〕の最大値が1点減少する。〔サイフ〕の最大値が0点になると、そのキャラクターは死亡する。《札束》を5個消費すると、この落とし前の効果を一回分、無効化することができる。 - さらし者。謝罪会見を行わされたり、恥ずかしい動画や写真を公開されたりする。この落とし前を1回受けるたびに、【世界の敵】、【悪名】、【有名人】、【狼少年】、【手配書】、【カモ】の中から代償を一つ選んで修得する。どの代償もすでに修得していた場合、そのキャラクターは死亡する。経験点を2点消費すると、この落とし前の効果を1回分、無効化することができる。 - 刻印。坊主頭にされたり、恥ずかしい入れ墨や刻印を刻み付けられたりする。この落とし前を1回受けるたびに、そのキャラクターが行うロマンスや交渉の判定の難易度が1点上昇する。 - 差し押さえ。この落とし前を1回受けるたびに、そのキャラクターは、自分が装備しているもっとも価格の高いアイテム1つを失う。おたからは価格8として扱い、もっとも高い価格のアイテムを複数持っている場合は、その中からランダムに選ぶ。 - 監禁。マグロ漁船や地下工場に閉じ込められ、長期的な労働に従事させられる。この落とし前を1回受けるたびに、一回別のキャラクターでセッションを行うまで、そのキャラクターを使用できない。《札束》を5個消費すると、この落とし前の効果を1回分、無効化することができる。 - 去勢。性的な機能を破壊される。この落とし前を受けると、「無言で押し倒す」ことができなくなる。この落とし前を二回以上受けると、そのキャラクターは死亡する。 - } - when /MinamiRET/i - name = "ミナミ遭遇表:" - table = %w{ - (場所)大変だ、阪神が勝った。4000人のトラキチが、一緒に道頓堀に飛び込もうと迫る。飛び込むなら水中には「下水ワニ」(基本132p)が待っている。拒否するならトラキチたちは「ベンガル虎」(基本133p)を亜侠にけしかける。 - (場所)突然の夕立、そして稲妻! 武器を一番多く持っている亜侠に雷が落ちる。複数いた場合、1D6で一番高い目を出した亜侠に落ちる。黒焦げになり、パーマがかかり、ランダムに一つ武器を失う(熔ける)。 - (一人)酔っ払いの吐瀉物を浴びて〔精神点〕に1ダメージ。風呂に入って着替えるまで、あらゆる交渉は自動的に成功度が-1される。 - (一人)好みの恋愛対象に出会ったと思ったら「美人局」(基本124p)だった! - (一人)うっかり入った店が暴力喫茶だった! 「押し売り」(基本124p)相当。 - (一人)しつこいキャッチに絡まれる。「勧誘員」(基本124p)相当。 - (一人)裏路地で襲われる。「痴漢・痴女」(基本124p)相当。 - (一人)道を渡ろうとしたら路面電車に撥ねられる。〔肉体点〕に1D6ダメージ。 - (一人)契約刑事に恐喝される。逮捕されたくなければ、〔サイフ〕を1減らせ。 - (一人)うっかりマリア・ヴィスコンティを怒らせた! この場では何も起こらないが、マリアは忘れない。次に亜侠が致命傷表送りになったとき、マリアが出現して亜侠の利き腕を吹き飛ばして去る(致命傷表の判定が必ず「7~9」になる)。 - (一人)「円盤」(基本138p)に襲われ、さらわれる。1ターン経って戻ってくると、頭からアンテナが生えている。キャラクターイラストにアンテナを書き加えろ。それが嫌なら戦うこと。 - } - when /ChinatownRET/i - name = "中華街遭遇表:" - table = %w{ - (一人)好みの恋愛対象に襲われて目くるめく一時を過ごす。だが1ターン経って目が覚めると、房中術で性転換させられている。 - (場所)人を食う「パンダ」(基本133p)に襲われる。 - (一人)道端の占い師をうっかり撥ねて、人肉饅頭の呪いを受ける。このセッション中に行動不能になったら、狂気の料理人に饅頭にされて食われ、後には何も残らない。 - (場所)漢方薬局を冷やかしていたら、世界自然保護プロレス基金WWWWF(World_Wide_Wildelife_Wrestling_Found)のレスラー1D6人(「街頭覇王」(基本134p))に襲われる。亜侠が手に取った犀の角が気に入らなかったのだ。誰かが〔サイフ〕を1支払ってTシャツを買うと許してくれる(キャラクターイラストにパンダのマークをつけること)が、そうでなければ戦うしかない。 - (場所)化石を売りつけようとする「押し売り」(基本124p)に遭遇。品物は1D6を振って決める。1:ゴモラの全身骨格、2:マチカネワニの涙、3:明石原人の糞石、4:生きた北京原人、5:豊臣秀吉15歳のしゃれこうべ、6:三葉虫ボトルキャップ - (場所)映画の撮影現場に紛れ込んでしまった! このセッションの間、戦闘時になると敵味方全員に《透明ワイヤー》の効果がつく。既に持っていた場合、「跳ぶ」を選んでも使用回数を消費しない。 - (一人)美味しい中華料理を食いすぎて、一時的にすごく太る。このセッションの間は、〔肉体〕が+1されるが、その亜侠に対する命中判定にも+1の修正がつく。 - (一人)道端で碁の勝負を見ていたら、いつのまにか1ターン経っていた。代わりに〔精神点〕が1回復する。 - (一人)お前をスターと間違えたおっかけの大群が迫ってくる。このセッションの間、【有名人】の代償がつく。 - (場所)空飛ぶギロチンを持った老人と片腕の格闘家が戦っている。二人はどちらもチームに加勢を求める。老人は「罪狩」(基本135p)、格闘家は「殺人鬼」(基本137p)だ。味方するなら、どちらに手を貸すか決めて戦闘を行え(味方された本人は戦わない)。どちらかを倒したらもう一人は礼を言って即座に去る。倒したのが格闘家なら《不肖の弟子》が、老人なら《空飛ぶギロチン》(本格的武器)が手に入る。 - (場所)「狂人」とその一党が現れた! キャラクターシートの「好きな映画」が空欄だった亜侠は、頭に火をつけられる。キャラクターのイラストから髪を取り除け。シートに顔を描いていなかった場合、キャラクターシートを燃やすか、自分の頭を燃やすか、〔肉体点〕を1減らすこと。「狂人」を倒すことはできない。彼は永遠だ。 - } - when /WarshipLandRET/i - name = "軍艦島遭遇表:" - table = %w{ - (場所)蟹の押し売りに遭う。しかもただの押し売りではない、食い詰めた「超人兵士」(基本134p)だ! 蟹(価格3の「食事」(基本79p))を買うか、そうでなければ戦うこと。 - (場所)救世軍の配給に長い行列ができている。〔性業値〕判定で「激」を出した亜侠はつい並んでしまい、1ターン消費して「食事」(基本79p)をゲット。 - (場所)荒廃した通りを横断していたら撃たれる。スナイパーだ! 全員1D6を振り、一番低い目を出した亜侠は〔肉体点〕に1D6のダメージ。 - (場所)突然の路面陥没! 乗り物を所持している亜侠は〔精神〕9の判定に成功しないと、逃げ遅れて乗り物に2D6のダメージを受ける。 - (場所)季節はずれの雪が降っている。青く光ってなんだかとても美しい。とりあえず〔肉体点〕と〔精神点〕に1ダメージ。 - (場所)飢えた野犬がぞろぞろついてくる。このセッション中に軍艦島で行動不能になった亜侠は、すぐに食われて後には何も残らない。 - (一人)気がつくと食玩塗りの搾取工場の中……。コンビナートの手配師に捕まったのだ。脱出するのに1ターン無駄にするが、見張りの「ブラックアドレス」(基本127p)一体と戦って勝てば時間を無駄にせずにすむ。 - (一人)自宅が膨張する203高地に取り込まれた。脱出するのに1ターンかかる上、アジトの場所が「軍艦島」になってしまう。 - (場所)ガス爆発!1D6して出た目のエリアに飛ばされる上、飛ばされたエリアの遭遇表を振らねばならない。1:ミナミ、2:十三、3:沙京、4:中華街、5:官庁街、6:軍艦島 - (場所)ひょろひょろ跳んできた「ミサイル」(基本130p)と目が合った。目標を見失っていたミサイルは、亜侠を新たな目標に決めて親しげに近づいてくる。 - (一人)「タイラー・ダーデン」に遭遇し、啓蒙される。これがお前の人生だ。お前はいつか必ず死ぬ。それを認識しない限り、お前は糞のままだ。〔肉体点〕と〔精神点〕に1ダメージ。〔性業値〕が2下がる。更にこのセッション中は「迷」が出ても「激」として扱う。 - } - when /CivicCenterRET/i - name = "官庁街遭遇表:" - table = %w{ - (場所)大規模なデモにぶつかって身動きが取れなくなった。まずいと思う間もなく、列強の鎮圧部隊が容赦なく群集に向かって発砲する。阿鼻叫喚の中で全員〔肉体点〕に1D6のダメージ。 - (場所)火事だ! ビルがぼうぼう燃えている。〔犯罪〕8の判定に失敗すると、野次馬の中でスリにやられ、アイテムをランダムに一つ失う。 - (場所)株価暴落で取り付け騒ぎが起こっている。〔生活〕4以上の亜侠は〔サイフ〕が1減る。 - (一人)身投げか事故か突き落とされたのか、ビルから人が振ってきた。〔戦闘〕で難易度9の判定に成功しないと、直撃されて〔肉体点〕に2D6のダメージ。 - (場所)観光客に写真を撮られる。このセッション中、亜侠に対する逮捕判定の難易度は-1される。 - (一人)汚職警官に職務質問される。「押し売り」(基本124p)相当。 - (場所)軍事パレードが開催中だ。「デモ行進」(基本124p)相当。 - (場所)今日は即売会だ。「ヲタク」か「マニア」の〔趣味〕を持つ亜侠は、1ターン消費して買い物しないと、〔精神点〕に1D6ダメージ。 - (一人)爆弾テロだ! 1D6して出た目のエリアに飛ばされる上、飛ばされたエリアの遭遇表を振らねばならない。1:ミナミ、2:十三、3:沙京、4:中華街、5:官庁街、6:軍艦島 - (場所)ビルから降ってきたお札をみんなが奪い合っている。争奪戦に加わるなら、〔肉体点〕に1D6ダメージを受けて〔サイフ〕を1回復してよい。 - (一人)閉鎖されているはずの地下鉄の入り口が開いている……。性業値判定で「激」が出るとふらふらと入ってしまい、1ターン経った後戻る。奇天烈の宝物表(基本140p)を1回振れる。トラウマを1点受け、中で起こったことは何も憶えていない。入り口は固く閉ざされ、もう開かない。……今のところは。 - } - when /DowntownRET/i - name = "十三遭遇表:" - table = %w{ - (場所)地震だ! 亜侠自身には被害はないが、家が大変なことに。帰宅すると、アジト装備がランダムに1個壊れている。アジト装備がなかった場合、家が壊れている。 - (場所)山から下りてきた猪が突っ込んでくる! データは「トラック野郎」(基本123p)を使う。 - (一人)草野球の代打を頼まれる。1D6せよ。「スポーツ」の趣味があれば+1。1,2:三振! 冷たい視線を浴びて〔精神点〕-1、3,4:ヒット! 喝采を浴びて〔精神点〕1回復。5,6:ホームラン! そしてガラスの割れる音!窓を割られた家から怒り狂った「おかん」(基本122p)が飛び出して、大根片手に亜侠を襲う。 - (場所)「獅子舞」(基本128p)が亜侠の周りをぐるぐる周って離れようとしない。この状態で戦闘が起こると、獅子舞は敵に加わって亜侠を襲う。〔サイフ〕を1渡せば、獅子舞は歯をがちがち言わせて去る。 - (一人)地獄湯の「勝負師」(基本126p)に賭けを挑まれ、ざわざわする。 - (一人)お魚くわえようとするドラ猫に襲われる。〔犯罪〕で難易度9の判定に失敗したらランダムにアイテム一つを失う。亜侠が「食事」(基本79p)を持っていれば、優先的にそれを狙う。 - (場所)神風師団の自警団に囲まれた! 名前にカタカナがある亜侠がいたら集中的に襲われる(「忘八」(基本128p)1D6人相当)。日本人名の亜侠しかいなければ、被害を受けることはない。 - (一人)生臭坊主/生臭尼僧にお布施を要求される。データは「勧誘員」(基本124p)。 - (一人)大仏から身投げをした人が降ってきた。〔戦闘〕で難易度9の判定に成功しないと、直撃されて〔肉体点〕に2D6のダメージ - (場所)祭囃子が聞こえてきたかと思ったら、目の前をすごい早さで神輿が通り過ぎる。性業値判定で「激」が出た亜侠は、思わず祭に参加してしまい、高速神輿に連れ去られる。1ターン戻ってこない上、疲れきって〔肉体点〕-1。 - (一人)好みの恋愛対象に誘われて夢のような時間を過ごし、気が付くと肥溜めに肩まで漬かっていることに気付く。おばけに化かされた!1ターン消費する。風呂に入って着替えるまで、あらゆる交渉は自動的に成功度が-1される。この効果は一緒に行動する仲間の判定にも影響する。 - } - when /ShaokinRET/i - name = "沙京遭遇表:" - table = %w{ - (一人)いつのまにか、少女/少年が1人ついてきている。奴隷のようだが、亜侠を主人だと思っているらしく離れようとしない。何に相当するか1D6を振れ。1:【守るべき者】(基本103p)、2:愛人(基本80p)、3:使用人(基本80p)、4:居候(基本80p)、5:落とし穴(基本78p)、6:食事(基本79p)。性別はプレイヤーが決めてよい。 - (場所)どこからか煙が漂ってくる……麻薬工場が火事だ! 煙を吸って目を回し、各自1D6を振れ、出た目のドラックの効果を受ける。直接摂取ではないので、ドラッグの強度からは-3。1:コカイン、2:大麻、3:ハルシオン、4:トルエン、5:エクスタシー、6自白剤(ドラッグのデータ→基本79p) - (場所)やけに人懐っこい豚がいると思ったら、人の味を覚えた豚だった! 戦闘になる。データは「ベンガル虎」(基本133p)を使う。 - (場所)あばれ象が車を踏み潰して暴走している! 乗り物を所持している亜侠は〔精神〕9の判定に成功しないと、逃げ遅れて乗り物に2D6のダメージを受ける。 - (場所)インド人が死んでいる……。死体を漁るなら1D6。1:カレー味の《視肉》(基本85p)、2:サファイア(札束(基本78p)相当)、3:《あわてるなタオル》(基本93p)、4:RPG-7(基本74p)、5:死体じゃなくて「ゾンビ」(137p)だった、6:「はきだめの悪魔」だった - (一人)バクシーシ! バクシーシ! じゃりンこ10人が〔サイフ〕1点払うまでぞろぞろついてくる。何かあると「邪魔」(基本37p)10人分を行う。 - (一人)いきなり足に何かが噛み付く。「下水ワニ」(基本132p)だ! 〔肉体〕9の判定に成功すると振りほどけるが、失敗すると〔肉体点〕に1ダメージ。成功するまで判定すること。〔肉体点〕が0になると、亜侠は水路に引きずり込まれて食われる。 - (一人)気がつくと奴隷船の船倉の中……。奴隷商人の人狩りに捕まったのだ。脱出するのに1ターン無駄にするが、見張りの「ククバット」(基本127p)1体と戦って勝てば時間を無駄にせずにすむ。 - (一人)アラブの露天商に水煙草を勧められる。一服してまったりする亜侠だが、その懐に小猿が手を伸ばす……。アイテムをランダムに1つ失う。 - (一人)魚を満載したトラックから鮫が落ちてきて、亜侠に噛み付いて死ぬ。怪我はないが離れようとしない。死んだ鮫をぶら下げて歩くことになるので、セッション終了時まで、その亜侠と一緒にいると治安が+2される。 - (場所)祝祭だ! 巨大なジャガーノート(山車)が通りを突き進んでくる。これに轢かれると幸せな来世が保証されるのだ。性業値判定を3回振れ。全部「激」を出した亜侠は、思わず車輪の下に飛び込んで〔肉体点〕に10のダメージを受ける。この亜侠が死んだら、次に作るキャラクターに異能と代償を一つずつ受け継がせること。これがカルマだ。 - } - when /LoveLoveRET/i - name = "らぶらぶ遭遇表:" - table = %w{ - (場所)お互いに運命を感じる。この後のロマンス判定で成功して、トリコを獲得した場合、セッション終了時にそのトリコを経験点消費なしに常備化できる。ただし、このトリコと別れたり、このトリコが死亡したりすると、経験点が1点減少する。 - (場所)「……こんなとこで何やってんの?」「げ」もし、自分のトリコの中に、この場所と同じ〔趣味〕の持ち主がいた場合、その人物が現れる。血戦を行うこと。 - (一人)デート中に相手の姿を見失ってしまう。〔犯罪〕で難易度9の判定を行う。成功すると、その場所の〔趣味〕に対応した趣味おたからをランダムに1つ獲得する。失敗すると、ロマンス判定は行えなくなる。 - (一人)楽しくショッピング! 〔生活〕で難易度9の判定を行う。成功すると、その成功度と同じ値だけ、〔精神点〕を回復できる。失敗すると、セッション中、この後のロマンス判定のファンブル率が2点上昇する。 - (一人)「…………」互いに遠慮して気まずい感じ。〔恋愛〕で難易度9の判定を行う。成功すると、この後のロマンス判定の難易度が1点減少する。失敗すると、この後のロマンス判定の難易度が2点上昇する。 - (場所)亜侠稼業を忘れてしまいそうなほど、充実した時間を過ごす。デートを行っているキャラクター全員は、〔精神点〕が2点回復する。 - (一人)「うーん、ここつまんないね。場所変えよっか」〔恋愛〕で難易度9の判定を行う。成功すると、この後のロマンス判定の難易度が1点減少する。失敗すると、デート参加者全員は、このエリカの遭遇表をさらに1回ずつ振らなければならない。 - (一人)趣味の会話で盛り上がる! 〔教養〕で難易度9の判定を行う。成功すると、それ以降一度だけ、そのセッション中に行う判定の難易度を、その成功度と同じ値だけ減少することができる。失敗すると、セッション中、この場所の〔趣味〕が未修得の状態になる。 - (一人)「あぶない、暴れ馬だッ!」〔戦闘〕で難易度9の判定を行う。成功すると、デートの相手の好みを、自分のタイプと同じものに変更することができる。失敗すると、デートの相手は1D6点のダメージを受ける(セーブ不可)。 - (場所)「ようよう、綺麗なねぇちゃん、連れとるやんけ」「三下」が1D6人現れる。血戦を行うこと。 - (場所)「んー付き合っちゃおうか」デートに参加したキャラクターは、この後のロマンス判定が自動的に成功する。 - } - when /AjitoRET/i - name = "アジト遭遇表:" - table = %w{ - (一人)「強盗殺人の容疑で逮捕する! お前には黙秘権があり、供述は、法廷で不利な証拠として……」どやどやと踏み込んでくる警官たち。「制服警官」がお前を対象にして【逮捕】の異能を使ってくる。「制服警官」の判定が失敗すると、それ以降、このセッション中では、「臭い飯」表を振るとき、その2D6の目からマイナス3することができる。 - (一人)ピンポーン♪ チャイムの音。イヤな予感がするなぁ。1D6を振る。奇数なら「勧誘員」が【ムダ話】を、偶数なら「押し売り」が【売り口上】を使ってくる。 - (一人)イメージチェンジ! たまにはスタイルを変えてみようかな? 外見表を使って、ランダムに外見を変える。そのセッション中、各エリアで〔犯罪〕の行為判定を行うとき、そのエリアの衣装欄に書かれた外見であれば、振ることのできる2D6の回数が1回上昇する。 - (場所)「やっぱり、ここにいやがったな」このアジトにいるキャラクターが【コネ】か【仇敵】か【トリコ】の汎用異能、もしくは汎用代償を修得していれば、それに対応するキャラクター(コネ、仇敵、自分の主人)が現れる。コネなら、アジトにいる全員は、価格がそのキャラクターの〔生活〕-1以下のアイテムを1つ獲得できる。仇敵なら、アジトにいる全員は1ダメージを受ける(セーブ不可)。自分の主人なら【トリコ】の持ち主は、別れをつげられ【トリコ】を失うが〔精神点〕が2D6点減少する。 - (一人)「よう、元気にしてるか?」家族や友人からの突然の連絡。懐かしい気持ちに高揚しつつも、優しい気持ちになる。〔性業値〕を1点上昇、もしくは1点減少することができる。 - (場所)何となくテレビでもつけ、面白いチャンネルがないか、探してみる。うーん。ケーブルテレビに入るべきか……。アジトの持ち主の〔生活〕の値と同じ回数だけ「趣味決定表」を振り、各自、その結果と自分の〔趣味〕を比べてみる。自分が持っている〔趣味〕と同じ〔趣味〕が出ていれば、その回数だけ、自分の〔精神点〕を回復する。 - (一人)あ、こんなところに買い置きが。《食事》を1D6個獲得する。 - (場所)「みんなで鍋でもするか」現在、このアジトにいるキャラクターと手下カテゴリーのアイテムの合計数だけ、〔精神点〕が回復する。 - (一人)ふぅ。やっぱり、自宅が一番落ち着くなぁ。もしも修得していなければ【日常】の異能を修得する。 - (一人)一休み……のつもりが、ついつい居眠りしてしまう。アジトに自分しかいなければ、性業値判定を行うこと。「律」になれば、〔精神点〕をアジトの〔快適度〕の半分だけ回復することができる。「激」なら、「睡眠」をしてしまう。「迷」なら、次のターンもアジトから移動できず、行動もできない。アジトに誰かいたら、もう一度アジト遭遇表を振ること。 - (一人)謎の贈り物が届く……。趣味おたからの中からランダムに1つを選び、それを獲得する。その後、1D6を振る。その目が、このイベントで趣味おたからを獲得した回数以下だった場合、贈り主の呪いによって2D6点のダメージを受ける(セーブ不可)。 - } - when /JigokuSpaRET/i - name = "地獄湯遭遇表:" - table = %w{ - (一人)なぜかあなたはローマ時代にタイムスリップする! 今後、このシナリオのあらゆる判定の難易度が1減少する(累積不可)。 - (場所)お湯の中に鮫が! 〔戦闘〕で難易度9の判定を行う。失敗したキャラクターは〔肉体点〕を1D6点減少。 - (一人)地獄湯の出張販売! 望むなら価格のある地獄組の盟約アイテムを購入することができる。 - (場所)ふぅ。湯上がりは親でも惚れるね。〔恋愛〕で難易度9の判定に成功すると、その場にいる好きなキャラクター1人をトリコにすることができる。 - (一人)あああ、なんか面白そうだなぁ。性業値判定を行う。「激」ならついついギャンブルゾーンに行ってしまう。「迷」なら行動済みになってしまう。「ギャンブル」の〔趣味〕の持ち主は、サイコロの目に2を加えること。 - (場所)地獄組による監視。もしチームが彼らと敵対していれば、うまく身を隠す必要がある。〔犯罪〕で難易度9の判定を行う。失敗すると、〔肉体点〕を1点減少する。そうでなければ、何もなし。 - (一人)うーん。のぼせちゃったかな。〔精神点〕を1点減少する。 - (場所)道に迷いそうになる。〔教養〕で難易度9の判定を行い、失敗したキャラクターは、地獄湯内の6つのゾーンの中からランダムに1つを選び、そこに移動する。 - (一人)ナンパにあう。〔恋愛〕で難易度9の判定に成功すると、色々おごってもらえる。〔サイフ〕を1点回復することができる。 - (場所)まずい。お湯の温度が恐ろしいことになっている! 〔精神点〕を2点減少する。 - (一人)価格3の買い物を行うと、マッサージをしてもらえる。〔肉体点〕を1点、〔精神点〕を1D6点回復できる。 - } - when /JailHouseRET/i - name = "JAILHOUSE遭遇表:" - table = %w{ - 「あちらのお客様からです」と渡されたグラス。その中には爆発寸前の《手榴弾》が入っていた。手榴弾はそのPCに命中したものとして扱う。 - 「……パパぁ」小さな「じゃりンこ」があなたの裾をつかむ。そのセッションの間、「じゃりンこ」がついてきて、そのPCのロマンス判定を【邪魔】する。 - 「あ、サイフがない!」〔サイフ〕を1点減らす。 - 乗物が盗まれる! 装備の中に乗物があった場合、そのアイテムを失う。 - 誰かと荷物を間違えてしまう! 自分の装備からランダムに1個のアイテムを失う。その後、自分の〔生活〕と等しい報酬表を振ってアイテムを1つ手に入れる。 - 「な、なんだテメェ!」他の客たちの喧嘩に巻き込まれる。〔肉体点〕を2点減少(セーブ不可)。 - 「突然だけど……別れましょう」あなたに恋人がいれば、そのキャラクターが現れ、2人は別れる。 - 何かの間違いだろうか。きみのあおったグラスの中に、《エクスタシー》が混じっていた! か、体があつィっ! - 「ようチンピラ、まだ生きてたのかい?」契約刑事のマリアが絡んでくる。彼女を楽しませるために「飲み会」を行わないとチーム全員が「臭い飯」表を一回ずつ振らなければいけない。 - 突然の銃声! 「侠客」1人がきみに向かって《トカレフ》を「仁義なく」ぶっ放す! 血戦を開始せよ。 - 「エルヴィス」があらわれ、店で奇跡的なまでに楽しいパーティーが行われる。チーム全員が気付くと1日が経過していた。 - } - when /TreatmentIT/i - name = "治療イベント表:" - table = %w{ - 不治の病だったことが分かる。1D6セッション後に死亡するが、今回以降のセッションで得られる経験値はすべて2倍になる。 - 治療中の動物が脱走! サイコロを1個振り、1~4なら「番犬」が、5~6なら「ベンガル虎」が現れる。誰かが〔戦闘〕で難易度11の判定に成功すると、血戦を回避できる。 - 「ここかなぁ~」治療の結果、変なツボをつかれたらしく、このセッションの間、〔破壊力〕が9に、〔反応力〕が1になる。 - 「芸術的な内臓をしている」希望すれば、あなたの腎臓を《トランク》1つで買ってくれる。 - 急患が大量に運ばれてくる。これ以降、このセッション終了時まで、乃木クリニックの治療の価格が、すべて1上昇する。 - 乃木センセイの本気が炸裂! 美形タイプの男性キャラクターが1人いるたびに、治療の成功度が自動的に+2される。 - 「だって、字ぃ読めないしぃ」リョータが点滴を間違える。サイコロを1個振り、下記のドラッグを摂取してしまう。1:《トルエン》 2:《ヘロイン》 3:《ハルシオン》 4《エクスタシー》 5:《コカイン》 6:《シャブ》 - 「ウッソ、マッジ!?」待合室で読みたかった雑誌のバックナンバーを発見。〔精神点〕が全快し、トラウマを受けていればそれも1点回復する。 - 医療ミス! サイコロを1個振り、1~4ならメスが、5~6ならランダムに趣味おたから1個が手術のミスで身体の中に残ってしまう。メスが身体に残っているキャラクターは、ファンブルを起こすたびに1ダメージを受けてしまう。重症の治療の判定に成功すると、中のアイテムを取り出すことができる。 - 治療のついでに身体の異常が発見される。男性なら性病で鼻がもげ〔恋愛〕が1点減少、女性なら子供ができていることがわかる。 - 奇跡的な治療のワザ! 治療判定の結果に関わらず〔肉体点〕が全快する。 - } - when /CollegeIT/i - name = "大学イベント表:" - table = %w{ - 運動家に勧誘される。〔精神点〕を2点減少する。 - 痴情のもつれ! 自分のトリコの数を数える。1D6を振り、その数以下の目を出してしまった場合、刺されてしまう。〔肉体点〕に3ダメージ(セーブ不可)。 - バイトの張り紙が…… セッション中に、何でもいいのでおたからを手に入れていれば、セッション終了時にそれを《トランク》で買い取ってくれる。 - コンパに誘われる。次の日の夜にコンパに行くことができる。コンパに行ったキャラクターは〔恋愛〕で難易度9の判定に成功すると、「女子高生」と恋人になる。 - 授業にもぐりこむ。すやすやと心地よい時間が過ぎ、〔精神点〕を6点回復する。 - サークルボックスでダベる。同じターンに、他の仲間がリンク判定を行っていれば、好きな情報イベント表を振ることができる。 - キャンパスでいちゃいちゃカップルに遭遇する。らぶらぶオーラにあてられる。 - 代返を頼まれる。〔精神〕で難易度9の判定に成功しないと、次の日の朝は行動を行えない。その代わり、学食で一回おごってもらえる。 - 教授の実験に付き合わされる。〔肉体〕で難易度9の判定に失敗すると、《LSD》を飲まされる。 - 麻雀に誘われる。次の日の夜に麻雀に行くことができる。麻雀に行ったキャラクターは、〔犯罪〕で難易度9の判定を行い、その成功度分だけ〔サイフ〕を回復することができる。ただし、〔性業値〕の判定を行い「律」以外だと徹マンになり、その日は無理してしまう。 - 恋愛フラグが起動。チームの異性のキャラクターをランダムに1人選び、その人のトリコになる。また、選ばれた異性のキャラクターもランダムに異性キャラクターを1人選び、その人のトリコになる。 - } - when /FatalVT/i - name = "乗物致命傷表:" - table = %w{ - 乗物は破壊。乗物に乗車していたキャラクターは、性業値判定を行う。「激」か「迷」だった者は、大破に巻き込まれ、2D6点のダメージを受ける(セーブ不可)。 - 「ひどい運転しやがって!」死んだかと思った乗物が幽霊自動車になって、襲いかかってくる。 - 「今まで一緒に乗ってくれてありがとう」乗物が、最後にきみに語りかけてくる。炎上する乗物を眺めながら、思わず涙が流れる。乗物は破壊。乗物の持ち主は、〔精神点〕を2点回復。 - ハンドルがきかず、人をひいてしまう。乗物は破壊。〔犯罪〕で難易度9の判定に失敗すると「臭い飯表」を1回振ること。 - コロコロコロコロ……車輪が転がる。ダメだ。もう一歩も動かない。乗物が破壊される。 - 壮絶なクラッシュ!! 乗物とその乗物に乗せていたアイテムがすべて破壊される。 - 乗物に衝撃が走る! 〔精神〕で難易度9の判定を行う。失敗すると、その乗物に乗せていたアイテムがすべて破壊される。乗物は破壊される。 - バッテリーがあがってしまった。乗物が一時的に使用不能に。1ターン後、乗物の〔肉体点〕が1になる。 - 「おい! 走ってくれ! 走ってくれよ!」乗物が一時的に使用不能に。1D6ラウンド後、〔肉体点〕が1になる。 - エンスト! 乗物が一時的に使用不能に。1D6ターン後、〔肉体点〕が1D6点回復する。 - 「まだ走れるよ!」奇跡のような走り! さきほどのダメージを無効に。 - } - when /TimeUT/i - name = "時間切れ表:" - table = %w{ - は! 夢か。今までのことは夢だった。すべて世はこともなし。 - UFOが現れ、トラクタービームに牽引される。全員〔精神〕で難易度9の判定を行う。失敗したキャラクターは、1D6セッション別のキャラクターでセッションを行うまで、再利用できなくなる。 - まわりでバタバタと人が倒れ始める。新型インフルエンザウイルスが、知性を持ち始め、突如人類に反旗を翻す。全員、〔肉体〕で難易度9の判定を行う。失敗したキャラクターは、〔肉体〕が1点減少する。 - 急に、家のガスコンロを消したかどうか気になり始める。全員、〔生活〕で難易度9の判定を行う。失敗したキャラクターは、本当に火を消し忘れていた。家が火事になり、〔アジト装備〕がすべて破壊される。 - 突如、みんなが歌い踊り出す。全員、〔教養〕で難易度9の判定を行う。失敗したキャラクターは、リズムを外して、トラウマを1点受ける。 - 内戦勃発! 派手な市街戦が開始される。全員、〔戦闘〕で難易度9の判定を行う。失敗したキャラクターは、2D6点のダメージを受ける。内戦は3日後に終結する。 - いやーん、まいっちんぐ。200人の裸の美女が目の前を走りさっていく。一体何が起きたんだろう? 全員、〔恋愛〕で難易度9の判定を行う。失敗したキャラクターは、いつの間にか、その集団に呑み込まれ……トラウマを1点受ける。 - ビルの上から、大量のお札が降ってくる。皆、我を忘れて、それに群がり始める。全員、〔犯罪〕で難易度9の判定を行う。失敗したキャラクターは、〔通常装備〕欄からランダムにアイテム1つを失う。 - 聖者が街にやってくる。「悔い改めよ!」全員、〔精神〕で難易度9の判定を行う。失敗したキャラクターは、好きなカルマ1種類の異能と代償が1つずつ未修得の状態になる。 - 地獄の釜が開く。街に死者たちがあふれ出す。全員〔肉体〕で難易度9の判定を行う。失敗したキャラクターは、屍人になる。 - たらら、たらら、たらららら、たらららら♪ 大阪湾に怪獣王が現れる。大阪市は大混乱に! 全員、爆発4の効果を適用される。 - } - end - - return name, table - end -end diff --git a/src/src_bcdice/diceBot/ScreamHighSchool.rb b/src/src_bcdice/diceBot/ScreamHighSchool.rb deleted file mode 100644 index f9012072d..000000000 --- a/src/src_bcdice/diceBot/ScreamHighSchool.rb +++ /dev/null @@ -1,125 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/GardenOrder' - -class ScreamHighSchool < GardenOrder - # ゲームシステムの識別子 - ID = 'ScreamHighSchool' - - # ゲームシステム名 - NAME = 'スクリームハイスクール' - - # ゲームシステム名の読みがな - SORT_KEY = 'すくりいむはいすくうる' - - # ダイスボットの使い方 - HELP_MESSAGE = <=t tは目標値)に読替されます。 - クリティカル値、ファンブル値が無い場合は1や13などのあり得ない数値を入れてください。 - 例)12SFM-5@7#2  1SFM  50SFM+5@7,10#2,5 50SFM-5+10@7,10#2,5+15+25 -INFO_MESSAGE_TEXT - - setPrefixes(['([-+]?\d+)?SFM.*', '2R6.*']) - - def initialize - super - @nw_command = "SFM" - end -end diff --git a/src/src_bcdice/diceBot/ShadowRun.rb b/src/src_bcdice/diceBot/ShadowRun.rb deleted file mode 100644 index 5a70156d5..000000000 --- a/src/src_bcdice/diceBot/ShadowRun.rb +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class ShadowRun < DiceBot - # ゲームシステムの識別子 - ID = 'ShadowRun' - - # ゲームシステム名 - NAME = 'シャドウラン' - - # ゲームシステム名の読みがな - SORT_KEY = 'しやとうらん' - - # ダイスボットの使い方 - HELP_MESSAGE = "上方無限ロール(xUn)の境界値を6にセットします。\n" - - def initialize - super - @sortType = 3 - @upperRollThreshold = 6 - @unlimitedRollDiceType = 6 - end -end diff --git a/src/src_bcdice/diceBot/ShadowRun4.rb b/src/src_bcdice/diceBot/ShadowRun4.rb deleted file mode 100644 index 4c49656f9..000000000 --- a/src/src_bcdice/diceBot/ShadowRun4.rb +++ /dev/null @@ -1,47 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class ShadowRun4 < DiceBot - # ゲームシステムの識別子 - ID = 'ShadowRun4' - - # ゲームシステム名 - NAME = 'シャドウラン 4th Edition' - - # ゲームシステム名の読みがな - SORT_KEY = 'しやとうらん4' - - # ダイスボットの使い方 - HELP_MESSAGE = <= dice_cnt_total_half - return '' - end - - # グリッチ! - if successCount == 0 - return ' > クリティカルグリッチ' - end - - return ' > グリッチ' - end -end diff --git a/src/src_bcdice/diceBot/ShadowRun5.rb b/src/src_bcdice/diceBot/ShadowRun5.rb deleted file mode 100644 index b45c5fe84..000000000 --- a/src/src_bcdice/diceBot/ShadowRun5.rb +++ /dev/null @@ -1,81 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/ShadowRun4' - -class ShadowRun5 < ShadowRun4 - # ゲームシステムの識別子 - ID = 'ShadowRun5' - - # ゲームシステム名 - NAME = 'シャドウラン 5th Edition' - - # ゲームシステム名の読みがな - SORT_KEY = 'しやとうらん5' - - # ダイスボットの使い方 - HELP_MESSAGE = < limit - after_suc_cnt = limit - over_suc_cnt = before_suc_cnt - limit - output_after_limited = output_before_limited.gsub(/成功数(\d+)/, "成功数#{after_suc_cnt}") - output_after_limited += "(リミット超過#{over_suc_cnt})" - end - - output = output_after_limited - output = output.slice(2..-1) - output = output.gsub('B', 'B6') - output = output.gsub('6>=5', "[6]Limit[#{limit}]>=5") - debug(output) - return output - end - - # シャドウラン5版用グリッチ判定 - def getGrichText(numberSpot1, dice_cnt_total, successCount) - debug("getGrichText numberSpot1", numberSpot1) - debug("dice_cnt_total", dice_cnt_total) - debug("successCount", successCount) - - dice_cnt_total_half = dice_cnt_total.to_f / 2 - debug("dice_cnt_total_half", dice_cnt_total_half) - - unless numberSpot1 > dice_cnt_total_half - return '' - end - - # グリッチ! - if successCount == 0 - return ' > クリティカルグリッチ' - end - - return ' > グリッチ' - end -end diff --git a/src/src_bcdice/diceBot/SharedFantasia.rb b/src/src_bcdice/diceBot/SharedFantasia.rb deleted file mode 100644 index 900860ccc..000000000 --- a/src/src_bcdice/diceBot/SharedFantasia.rb +++ /dev/null @@ -1,73 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class SharedFantasia < DiceBot - # ゲームシステムの識別子 - ID = 'SharedFantasia' - - # ゲームシステム名 - NAME = 'Shared†Fantasia' - - # ゲームシステム名の読みがな - SORT_KEY = 'しえああとふあんたしあ' - - # ダイスボットの使い方 - HELP_MESSAGE = <=9 : 2D6して4を足した値が9以上なら成功 -MESSAGETEXT - - setPrefixes(['SF.*', 'ST.*']) - - def changeText(string) - @throwString = '' - if string =~ /SF/i - string = string.gsub(/SF/i) { "2D6" } - end - if string =~ /ST/i - string = string.gsub(/ST/i) { "2D6" } - end - return string - end - - def check_2D6(total, dice_total, _dice_list, cmp_op, target) - return '' if target == '?' - - critical = false - fumble = false - - if dice_total == 12 - critical = true - elsif dice_total == 2 - fumble = true - end - - totalValueBonus = 0 - if cmp_op == :>= - totalValueBonus = 1 - end - - if [:>=, :>].include?(cmp_op) - if (total + totalValueBonus) > target - if critical - return " > 自動成功(劇的成功)" - elsif fumble - return " > 自動失敗" - else - return " > 成功" - end - else - if critical - return " > 自動成功" - elsif fumble - return " > 自動失敗(致命的失敗)" - else - return " > 失敗" - end - end - end - end -end diff --git a/src/src_bcdice/diceBot/ShinMegamiTenseiKakuseihen.rb b/src/src_bcdice/diceBot/ShinMegamiTenseiKakuseihen.rb deleted file mode 100644 index c36f78a8f..000000000 --- a/src/src_bcdice/diceBot/ShinMegamiTenseiKakuseihen.rb +++ /dev/null @@ -1,82 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class ShinMegamiTenseiKakuseihen < DiceBot - # ゲームシステムの識別子 - ID = 'SMTKakuseihen' - - # ゲームシステム名 - NAME = '真・女神転生TRPG 覚醒篇' - - # ゲームシステム名の読みがな - SORT_KEY = 'しんめかみてんせいTRPGかくせいへん' - - # ダイスボットの使い方 - HELP_MESSAGE = <= total - return getSuccessResult(isRepdigit) - end - - return getFailResult(isRepdigit) - end - - def getSuccessResult(isRepdigit) - if isRepdigit - return "絶対成功" - end - - return "成功" - end - - def getFailResult(isRepdigit) - if isRepdigit - return "絶対失敗" - end - - return "失敗" - end -end diff --git a/src/src_bcdice/diceBot/ShinkuuGakuen.rb b/src/src_bcdice/diceBot/ShinkuuGakuen.rb deleted file mode 100644 index e05c3d573..000000000 --- a/src/src_bcdice/diceBot/ShinkuuGakuen.rb +++ /dev/null @@ -1,527 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class ShinkuuGakuen < DiceBot - # ゲームシステムの識別子 - ID = 'ShinkuuGakuen' - - # ゲームシステム名 - NAME = '真空学園' - - # ゲームシステム名の読みがな - SORT_KEY = 'しんくうかくえん' - - # ダイスボットの使い方 - HELP_MESSAGE = <=y:この書式なら目標値 y で判定結果出力 - 例)RL10  RL22>=50 - -・武器攻撃 -(武器記号)(技能ベース値) - 例)SW10 BX30 -武器を技能ベースでダイスロール。技発動までチェック。 -武器記号は以下の通り - SW:剣、LS:大剣、SS:小剣、SP:槍、 - AX:斧、CL:棍棒、BW:弓、MA:体術、 - BX:ボクシング、PR:プロレス、ST:幽波紋 - -・カウンター攻撃 -カウンター技は武器記号の頭に「C」をつけるとロール可能。 - 例)CSW10 CBX76 -MESSAGETEXT - - setPrefixes([ - 'CRL.*', 'CSW.*', 'CLS.*', 'CSS.*', 'CSP.*', 'CAX.*', 'CCL.*', 'CMA.*', 'CBX.*', 'CPR.*', 'CST.*', - 'RL.*', 'SW.*', 'LS.*', 'SS.*', 'SP.*', 'AX.*', 'CL.*', 'BW.*', 'MA.*', 'BX.*', 'PR.*', 'ST.*' - ]) - - def rollDiceCommand(command) - prefixesRegText = prefixes.collect { |i| i.sub(/\.\*/, '') }.join('|') - unless /(^|\s)(S)?(#{prefixesRegText})([\d\+\-]*)(>=(\d+))?/i === command - debug("NOT match") - return nil - end - - debug("matched.") - - weaponCommand = Regexp.last_match(3) - base = Regexp.last_match(4).to_i - diff = Regexp.last_match(6) - - weaponInfo = getWeaponTable(weaponCommand) - output_msg = rollJudge(base, diff, weaponInfo) - - return output_msg - end - - def rollJudge(base, diff, weaponInfo) - debug("rollJudge base", base) - debug("rollJudge diff", diff) - - weaponName = weaponInfo[:name] - weaponTable = weaponInfo[:table] - - diceList = getJudgeDiceList - total = diceList.inject() { |value, i| value += i } - allTotal = total + base - - diffText = diff.nil? ? "" : ">=#{diff}" - result = "(#{weaponName}:#{base}#{diffText}) > 1D100+#{base} > #{total}" - result += "[#{diceList.join(',')}]" if diceList.length >= 2 - result += "+#{base}" - result += " > #{allTotal}" - result += getSuccessText(allTotal, diff, diceList, weaponTable) - result += getWeaponSkillText(weaponTable, diceList.max) - - debug("check_1D100 result", result) - - return result - end - - def getJudgeDiceList - diceList = [] - loop do - value, = roll(1, 100) - diceList << value - - rank01 = value % 10 - debug("rank01", rank01) - - break unless rank01 == 0 - end - - return diceList - end - - def getSuccessText(allTotal, diff, diceList, isWeapon) - first = diceList.first - return '' if first.nil? - - return " > ファンブル" if first <= 9 - - if diff.nil? && (first != 10) - return '' - end - - result = '' - skillText = getSkillText(first, diff, isWeapon) - result += skillText - - unless diff.nil? - result += ' > ' if skillText.empty? - - success = (allTotal >= diff.to_i ? "成功" : "失敗") - result += success.to_s - end - - return result - end - - def getSkillText(first, diff, isWeapon) - result = '' - return result if isWeapon - - result = ' > ' - return result unless first == 10 - - result += "技能なし:ファンブル" - - return result if diff.nil? - - result += "/技能あり:" - - return result\ - end - - def getWeaponTable(weaponCommand) - debug('getWeaponTable weaponCommand', weaponCommand) - - case weaponCommand.upcase - when 'SW' - return getWeaponTableSword - when 'CSW' - return getWeaponTableSwordCounter - when 'LS' - return getWeaponTableLongSword - when 'CLS' - return getWeaponTableLongSwordCounter - when 'SS' - return getWeaponTableShortSword - when 'CSS' - return getWeaponTableShortSwordCounter - when 'SP' - return getWeaponTableSpear - when 'CSP' - return getWeaponTableSpearCounter - when 'AX' - return getWeaponTableAx - when 'CAX' - return getWeaponTableAxCounter - when 'CL' - return getWeaponTableClub - when 'CCL' - return getWeaponTableClubCounter - when 'BW' - return getWeaponTableBow - when 'MA' - return getWeaponTableMartialArt - when 'CMA' - return getWeaponTableMartialArtCounter - when 'BX' - return getWeaponTableBoxing - when 'CBX' - return getWeaponTableBoxingCounter - when 'PR' - return getWeaponTableProWrestling - when 'CPR' - return getWeaponTableProWrestlingCounter - when 'ST' - return getWeaponTableStand - when 'CST' - return getWeaponTableStandCounter - end - - return {:name => '判定', :table => nil} - end - - def getWeaponTableSword - {:name => '剣', - :table => - [[11, '失礼剣', '成功度+5'], - [22, '隼斬り', '回避不可'], - [33, 'みじん斬り', '攻撃量2倍'], - [44, '天地二段', '2連続攻撃'], - [55, '波動剣', 'カウンター不可、B・D'], - [66, '疾風剣', '攻撃量3倍、盾受けー100'], - [77, '残像剣', '全体攻撃、B・D'], - [88, '五月雨斬り」', '回避不可.ダメージ3倍'], - [99, 'ライジングノヴア」', '2連続攻撃・2撃目敵無防備、B・D'], - [ 0, '光速剣', '攻撃量3倍、盾受け不可、カウンター不可、B・D'],]} - end - - def getWeaponTableSwordCounter - {:name => '剣カウンター', - :table => - [[33, 'パリィ', '攻撃の無効化'], - [44, nil, nil], - [55, nil, nil], - [66, 'かすみ青眼', 'カウンター'], - [77, nil, nil], - [88, nil, nil], - [99, nil, nil], - [ 0, '不動剣', 'クロスカウンター、B・D、ダメージ2倍'],]} - end - - def getWeaponTableLongSword - {:name => '大剣', - :table => - [[11, 'スマッシュ', '敵防御半分'], - [22, '峰打ち', '麻痺硬化「根性」0'], - [33, '水鳥剣', '敵防御判定ー50'], - [44, 'ブルクラッシュ', '敵防御力無視'], - [55, '逆風の太刀', 'カウンター不可、ダメージ2倍'], - [66, '濁流剣', '回避不可、カウンター不可、B・D'], - [77, '清流剣', '回避不可、カウンター不可、B・D'], - [88, '燕返し', '2連続攻撃・2撃目カウンター不可、B・D'], - [99, '地ずり残月', '盾受け不可、ダメージ3倍、B・D'], - [ 0, '乱れ雪月花', '3連続攻撃・三撃目敵無防備、ダメージ3倍、防御力無視、B・D'],]} - end - - def getWeaponTableLongSwordCounter - {:name => '大剣カウンター', - :table => - [[22, '無形の位', '攻撃の無効化'], - [33, nil, nil], - [44, nil, nil], - [55, '双破', 'クロスカウンター、B・D'], - [66, nil, nil], - [77, nil, nil], - [88, '喪心無想', 'カウンター、攻撃量6倍'], - [99, nil, nil], - [ 0, nil, nil],]} - end - - def getWeaponTableShortSword - {:name => '小剣', - :table => - [[11, '乱れ突き', '2連続攻撃'], - [22, 'フェイクタング', 'スタン効果「注意力」5'], - [33, 'マインドステア', '麻痺効果「注意力」0'], - [44, 'サイドワインダー', '成功度+3、盾受け不可'], - [55, 'スクリュードライバー', '防御力無視、ダメージ2倍'], - [66, 'ニードルロンド', '3連続攻撃'], - [77, 'プラズマブラスト', '麻痺効果「根性」0、B・D'], - [88, 'サザンクロス', '麻痺効果「根性」5、攻撃量2倍'], - [99, 'ファイナルレター', '気絶効果「根性」0、回避不可、カウンター不可、B・D'], - [ 0, '百花繚乱', '回避不可、盾受け不可、攻撃量3倍、B・D'],]} - end - - def getWeaponTableShortSwordCounter - {:name => '小剣カウンター', - :table => - [[11, 'リポスト', 'カウンター'], - [22, nil, nil], - [33, nil, nil], - [44, nil, nil], - [55, nil, nil], - [66, nil, nil], - [77, nil, nil], - [88, 'マタドール', 'カウンター、麻痺効果「注意力」5'], - [99, nil, nil], - [ 0, 'マリオネット', '攻撃の相手を変える'],]} - end - - def getWeaponTableSpear - {:name => '槍', - :table => - [[11, 'チャージ', 'ダメージ1.5倍、盾受けー30'], - [22, '稲妻突き', '回避不可'], - [33, '脳削り', '麻痺効果「根性」0'], - [44, '大車輪', '全体攻撃'], - [55, '狂乱撃', '二回攻撃'], - [66, 'スパイラルチャージ', '盾受け不可、ダメージ2倍、B・D'], - [77, '双龍波', 'スタン効果「注意力」5、盾受け不可、B・D'], - [88, '流星衝', 'カウンター不可、ダメージ3倍、次行動まで攻撃対象にならない'], - [99, 'ランドスライサー', '全体攻撃、回避不可、カウンター不可、B・D'], - [ 0, '無双三段', '三段攻撃、二段目B・D、三段目ダメージ2倍、B・D'],]} - end - - def getWeaponTableSpearCounter - {:name => '槍カウンター', - :table => - [[55, '風車', 'カウンター、ダメージ2倍'], - [66, nil, nil], - [77, nil, nil], - [88, nil, nil], - [99, nil, nil], - [ 0, nil, nil],]} - end - - def getWeaponTableAx - {:name => '斧', - :table => - [[11, '一人時間差', '防御行動ー100'], - [22, 'トマホーク', 'カウンター不可'], - [33, '大木断', 'ダメージ2倍'], - [44, 'ブレードロール', '全体攻撃'], - [55, 'マキ割りスペシャル', '盾受け不可、B・D'], - [66, 'ヨーヨー', 'カウンター不可、2連続攻撃'], - [77, 'メガホーク', 'カウンター不可、全体攻撃、攻撃量2倍'], - [88, 'デッドリースピン', '回避不可、攻撃量5倍'], - [99, 'マキ割りダイナミック', '盾受け不可、ダメージ2倍、B・D、ターンの最後に命中'], - [ 0, '高速ナブラ', '回避不可、カウンター不可、攻撃量3倍、B・D'],]} - end - - def getWeaponTableAxCounter - {:name => '斧カウンター', - :table => - [[44, '真っ向唐竹割り', 'クロスカウンター、B・D'], - [55, nil, nil], - [66, nil, nil], - [77, nil, nil], - [88, nil, nil], - [99, nil, nil], - [ 0, nil, nil],]} - end - - def getWeaponTableClub - {:name => '棍棒', - :table => - [[11, 'ハードヒット', '防御力無視'], - [22, 'ダブルヒット', '2連続攻撃'], - [33, '回転撃', '防御判定ー100'], - [44, '飛翔脳天撃', '麻痺効果「根性」5'], - [55, '削岩撃', '盾受け不可、攻撃量3倍'], - [66, '地裂撃', '防御力無視、カウンター不可、盾受け不可、スタン効果「注意力」0'], - [77, 'トリプルヒット', '3連続攻撃'], - [88, '亀甲羅割り', '防御力半分、盾受け不可、B・D'], - [99, '叩きつぶす', '防御力無視、防御行動、カウンター不可、B・D'], - [ 0, 'グランドクロス', '防御無視、盾、カウンター不可、ダメージ2倍、B・D、全体攻撃'],]} - end - - def getWeaponTableClubCounter - {:name => '棍棒カウンター', - :table => - [[11, 'ブロッキング', '攻撃の無効化'], - [22, nil, nil], - [33, nil, nil], - [44, nil, nil], - [55, nil, nil], - [66, 'ジャストミート', '飛び道具のみカウンター'], - [77, nil, nil], - [88, nil, nil], - [99, 'ホームラン', 'すべての攻撃に対するカウンター'], - [ 0, nil, nil],]} - end - - def getWeaponTableBow - {:name => '弓', - :table => - [[11, '影縫い', '麻痺効果「注意力」0'], - [22, 'アローレイン', '全体攻撃・回避ー50'], - [33, '速射', '2連続攻撃'], - [44, '瞬速の矢', '防御不可'], - [55, 'バラージシュート', '全体攻撃・盾受け不可・攻撃量2倍'], - [66, '貫きの矢', '防御力無視、B・D'], - [77, '落鳳波', '回避不可、B・D'], - [88, '皆死ね矢', '全体攻撃、気絶効果「根性」5'], - [99, 'ミリオンダラー', '三連続攻撃'], - [ 0, '夢想弓', 'B・D、ダメージ3倍'],]} - end - - def getWeaponTableMartialArt - {:name => '体術', - :table => - [[11, '集気法', '通常ダメージ分自分のHP回復'], - [22, 'コンビネーション', '2連続攻撃'], - [33, '逆一本', '盾受け不可、防御力半分、スタン効果「根性」0'], - [44, 'コークスクリューブロー', '防御力無視、ダメージ3倍'], - [55, '練気拳', '全体攻撃・回避不可'], - [66, 'バベルクランプル', '盾受け不可、B・D'], - [77, 'マシンガンジャブ', '3連続攻撃'], - [88, 'ナイアガラフォール', '盾受け不可、B・D、ダメージ2倍'], - [99, '羅刹掌', '防御力無視、防御不可、B・D、ダメージ3倍'], - [ 0, '千手観音', '5連続攻撃、すべてカウンター不可'],]} - end - - def getWeaponTableMartialArtCounter - {:name => '体術カウンター', - :table => - [[11, 'スウェイバック', '攻撃の無効化'], - [22, nil, nil], - [33, '当て身投げ', 'カウンター'], - [44, nil, nil], - [55, nil, nil], - [66, 'ジョルトカウンター', 'クロスカウンター、B・D'], - [77, nil, nil], - [88, nil, nil], - [99, 'ガードキャンセル', 'D10で振った必殺技によるカウンター' + getRandMartialArtCounter], - [ 0, nil, nil],]} - end - - def getRandMartialArtCounter - value, = roll(1, 10) - dice = value * 10 + value - dice = 100 if value == 110 - - tableInfo = getWeaponTableMartialArt - weaponTable = tableInfo[:table] - - result = " > (#{value})" - result += getWeaponSkillText(weaponTable, dice) - - return result - end - - def getWeaponTableBoxing - {:name => 'ボクシング', - :table => - [[11, 'ワン・ツー', '2連続攻撃・2攻撃目盾受け、回避不可'], - [22, 'リバーブロー', '麻痺効果「根性」5'], - [33, 'フリッカー', '2連続攻撃・全て盾受け、カウンター不可'], - [44, 'コークスクリューブロー', '防御力無視、ダメージ3倍'], - [55, 'レイ・ガン', '全体攻撃、B・D、陽属性魔法攻撃'], - [66, 'ショットガンブロー', '攻撃量10倍'], - [77, 'ハートブレイクショット', '2連続攻撃・1攻撃目防御力無視、ダメージ3倍・2撃目敵無防備'], - [88, 'デンプシーロール', '3連続攻撃・全てB・D'], - [99, 'フラッシュピストンマッハパンチ', '全体攻撃、B・D、気絶効果「根性」5'], - [ 0, '右', '防御力無視、ダメージ10倍'],]} - end - - def getWeaponTableBoxingCounter - {:name => 'ボクシングカウンター', - :table => - [[11, 'ダッキングブロー', 'カウンター'], - [22, 'ジョルトカウンター', 'クロスカウンター、B・D'], - [33, nil, nil], - [44, nil, nil], - [55, nil, nil], - [66, nil, nil], - [77, nil, nil], - [88, nil, nil], - [99, nil, nil], - [ 0, 'ノーガード戦法', '攻撃の無効化、次ターン以降は自分の盾受け、回避不可、全ての攻撃にB・D'],]} - end - - def getWeaponTableProWrestling - {:name => 'プロレス', - :table => - [[11, 'ボディスラム', '盾受け不可'], - [22, 'ドロップキック', 'B・D'], - [33, '水車落とし', '盾受け不可、成功度+5'], - [44, 'ナックルアロー', 'B・D、麻痺効果「根性」5'], - [55, 'ワン・ツー・エルボー', '2連続攻撃'], - [66, 'バックドロップ', '盾受け不可、ダメージ2倍'], - [77, '投げっ放しジャーマン', '盾受け不可、防御力無視、成功度+5'], - [88, 'パワーボム', '盾受け不可、ダメージ2倍、B・D'], - [99, 'デスバレーボム', '盾受け不可、防御力無視、ダメージ2倍、気絶効果「根性」5'], - [ 0, 'ジャックハマー', '盾受け不可、防御力無視、ダメージ3倍、成功度+10'],]} - end - - def getWeaponTableProWrestlingCounter - {:name => 'プロレスカウンター', - :table => - [[22, 'パワースラム', 'カウンター'], - [55, 'アックスボンバー', 'カウンター、B・D'], - [66, nil, nil], - [77, nil, nil], - [88, nil, nil], - [99, nil, nil], - [ 0, nil, nil],]} - end - - def getWeaponTableStand - {:name => '幽波紋', - :table => - [[11, 'SILER CHARIOT', '攻撃量5倍、刺しタイプ攻撃'], - [22, 'TOWER OF GRAY', '防御力無視'], - [33, 'DARK BLUE MOON', '全体攻撃、攻撃量2倍、水属性斬りタイプ攻撃'], - [44, 'EMPEROR', '回避不可、盾受け不可、カウンター不可、飛び道具攻撃'], - [55, 'MAGICIAN\'s RED', 'ダメージ2倍、B・D、火属性魔法攻撃'], - [66, 'DEATH 13', 'ダメージ0、全体攻撃、気絶効果「根性」5'], - [77, 'HIEROPHANT GREEN', '全体攻撃、B・D、水属性攻撃'], - [88, 'VANILLA ICE CREAM', '盾受け不可、カウンター不可、防御力無視、ダメージ3倍、B・D'], - [99, 'THE WORLD', '5連続攻撃、全て敵無防備'], - [ 0, 'STAR PLATINUM', '攻撃量15倍、B・D'],]} - end - - def getWeaponTableStandCounter - {:name => '幽波紋カウンター', - :table => - [[11, 'ANUBIS', '技のみカウンター、ダメージ(カウンターした回数の2乗)倍、斬りタイプ攻撃'], - [22, nil, nil], - [33, nil, nil], - [44, nil, nil], - [55, nil, nil], - [66, 'YELLOW TEMPERANE', '魔法・飛び道具含めて全ての攻撃を無効化'], - [77, nil, nil], - [88, nil, nil], - [99, nil, nil], - [ 0, nil, nil],]} - end - - def getWeaponSkillText(weaponTable, dice) - debug('getWeaponSkillText', dice) - - return '' if weaponTable.nil? - - preName = '' - preEffect = '' - - weaponTable.each do |index, name, effect| - name ||= preName - preName = name - - effect ||= preEffect - preEffect = effect - - next unless index == (dice % 100) - - return " > 「#{name}」#{effect}" - end - - return '' - end -end diff --git a/src/src_bcdice/diceBot/ShinobiGami.rb b/src/src_bcdice/diceBot/ShinobiGami.rb deleted file mode 100644 index 6624af11a..000000000 --- a/src/src_bcdice/diceBot/ShinobiGami.rb +++ /dev/null @@ -1,676 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/table.rb' - -class ShinobiGami < DiceBot - # ゲームシステムの識別子 - ID = 'ShinobiGami' - - # ゲームシステム名 - NAME = 'シノビガミ' - - # ゲームシステム名の読みがな - SORT_KEY = 'しのひかみ' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - " > ファンブル" - elsif dice_total >= 12 - " > スペシャル(【生命力】1点か変調一つを回復)" - elsif target == "?" - "" - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - def rollDiceCommand(command) - string = command.upcase - - result = roll_tables(command, TABLES) - if result - return result - end - - case string - when /\w*RTT/ # ランダム特技決定表 - return sinobigami_random_skill_table() - when 'MT' # 異形表 - return sinobigami_metamorphose_table() - end - - return nil - end - - private - - # ランダム指定特技表 - def sinobigami_random_skill_table() - skill_table, value1 = get_table_by_1d6(RANDOM_SKILL_TABLE) - table_name, skill_table = skill_table - skill, value2 = get_table_by_2d6(skill_table) - - return "ランダム指定特技表(#{value1},#{value2}) > 『#{table_name}』#{skill}" - end - - # 異形表 - def sinobigami_metamorphose_table() - text, value = get_table_by_1d6(METAMORPHOSE_TABLE) - output = "異形表(#{value}) > #{text}" - - if (demon_skill_table = DEMON_SKILL_TABLES[value - 1]) - text, = get_table_by_1d6(demon_skill_table[:table]) - output += " #{demon_skill_table[:name]} > #{text}#{demon_skill_table[:page]}" - end - - return output - end - - TABLES = { - 'ST' => Table.new( - 'シーン表', - '2D6', - [ - '血の臭いがあたりに充満している。何者かの戦いがあった気配。 いや?まだ戦いは続いているのだろうか?', - 'これは……夢か? もう終わったはずの過去。しかし、それを忘れることはできない。', - '眼下に広がる街並みを眺める。ここからなら街を一望できるが……。', - '世界の終わりのような暗黒。暗闇の中、お前達は密やかに囁く。', - '優しい時間が過ぎていく。影の世界のことを忘れてしまいそうだ。', - '清廉な気配が漂う森の中。鳥の囀りや、そよ風が樹々を通り過ぎる音が聞こえる。', - '凄まじい人混み。喧噪。影の世界のことを知らない無邪気な人々の手柄話や無駄話が騒がしい。', - '強い雨が降り出す。人々は、軒を求めて、大慌てて駆けだしていく。', - '大きな風が吹き荒ぶ。髪の毛や衣服が大きく揺れる。何かが起こりそうな予感……', - '酔っぱらいの怒号。客引きたちの呼び声。女たちの嬌声。いつもの繁華街の一幕だが。', - '太陽の微笑みがあなたを包み込む。影の世界の住人には、あまりにまぶしすぎる。', - ] - ), - 'CST' => Table.new( - '都市シーン表', - '2D6', - [ - 'シャワーを浴び、浴槽に疲れた身体を沈める。時には、癒しも必要だ。', - '閑静な住宅街。忍びの世とは関係のない日常が広がっているようにも見えるが……それも錯覚なのかもしれない', - '橋の上にたたずむ。川の対岸を結ぶ境界点。さて、どちらに行くべきか……?', - '人気のない公園。野良猫が一匹、遠くからあなたを見つめているような気がする。', - '至福の一杯。この一杯のために生きている……って、いつも言ってるような気がするなぁ。', - '無機質な感じのするオフィスビル。それは、まるで都市の墓標のようだ。', - '古びた劇場。照明は落ち、あなたたちのほかに観客の姿は見えないが……。', - '商店街を歩く。人ごみに混じって、不穏な気配もちらほら感じるが……。', - 'ビルの谷間を飛び移る。この街のどこかに、「アレ」は存在するはずなのだが……。', - '見知らぬ天井。いつの間にか眠っていたのだろうか?それにしてもここはどこだ?', - '廃屋。床には乱雑に壊れた調度品や器具が転がっている。', - ] - ), - 'MST' => Table.new( - '館シーン表', - '2D6', - [ - 'どことも知れぬ暗闇の中。忍びの者たちが潜むには、おあつらえ向きの場所である。', - '洋館の屋根の上。ここからなら、館の周りを一望できるが……。', - '美しい庭園。丹精こめて育てられたであろう色とりどりの花。そして、綺麗に刈り込まれた生垣が広がっている。', - 'あなたは階段でふと足を止めた。何者かの足音が近づいているようだ。', - 'あなたに割り当てられた寝室。ベッドは柔らかく、調度品も高級なものばかりだが……。', - 'エントランスホール。古い柱時計の時報が響く中、館の主の肖像画が、あなたを見下ろしている。', - '食堂。染み一つないテーブルクロスに覆われた長い食卓。その上は年代物の燭台や花で飾られている。', - '長い廊下の途中。この屋敷は広すぎて、迷子になってしまいそうだ。', - '戯れに遊戯室へ入ってみた。そこには撞球台やダーツの的、何組かのトランプが散らばっているポーカーテーブルがあった。', - 'かび臭い図書室。歴代の館の主たちの記録や、古今東西の名著が、ぎっしりと棚に並べられている。', - '一族の納骨堂がある。冷気と瘴気に満ちたその場所に、奇妙な叫びが届く。遠くの鳥のさえずりか?それとも死者の恨みの声か……?', - ] - ), - 'DST' => Table.new( - '出島シーン表', - '2D6', - [ - '迷宮街。いつから囚われてしまったのだろう?何重にも交差し、曲がりくねった道を歩き続ける。このシーンの登場人物は《記憶術》で判定を行わなければならない。成功すると、迷宮の果てで好きな忍具を一つ獲得する。失敗すると、行方不明の変調を受ける。', - '幻影城。訪れた者の過去や未来の風景を見せる場所。このシーンの登場人物は、《意気》の判定を行うことができる。成功すると、自分の持っている【感情】を好きな何かに変更することができる。', - '死者たちの行進。無念の死を遂げた者たちが、仲間を求めて彷徨らっている。このシーンの登場人物は《死霊術》で判定を行わなければならない。失敗すると、ランダムに変調を一つを受ける。', - 'スラム。かろうじて生き延びている人たちが肩を寄せ合い生きているようだ。ここなら辛うじて安心できるかも……。', - '落書きだらけのホテル。その周囲には肌を露出させた女や男たちが、媚態を浮かべながら立ち並んでいる。', - '立ち並ぶ廃墟。その影から、人とも怪物ともつかぬ者の影が、あなたの様子をじっとうかがっている。', - '薄汚い路地裏。巨大な黒犬が何かを貪っている。あなたの気配を感じて黒犬は去るが、そこに遺されていたのは……。', - '昏い酒場。バーテンが無言でグラスを磨き続けている。あなたの他に客の気配はないが……。', - '地面を覆う無数の瓦礫。その隙間から暗黒の瘴気が立ち昇る。このシーンの登場人物は《生存術》で判定を行わなければならない。失敗すると、好きな【生命力】を1点失う。', - '熱気溢れる市場。武器や薬物などを売っているようだ。商人たちの中には、渡来人の姿もある。このシーンの登場人物は、《経済力》で判定を行うことができる。成功すると、好きな忍具を一つ獲得できる。', - '目の前に渡来人が現れる。渡来人はあなたに興味を持ち、襲い掛かってくる。このシーンの登場人物は《刀術》で判定を行わなければならない。成功すると、渡来人を倒し、好きな忍具を一つ獲得する。失敗すると、3点の接近戦ダメージを受ける。', - ] - ), - 'TST' => Table.new( - 'トラブルシーン表', - '2D6', - [ - '同行者とケンカしてしまう。うーん、気まずい雰囲気。', - 'バシャ! 同行者のミスでずぶ濡れになってしまう。……冷たい。', - '敵の気配に身を隠す。……すると、同行者の携帯が着信音を奏で始める。「……えへへへへ」じゃない!', - '同行者の空気の読めない一言。場が盛大に凍り付く。まずい。何とかしないと。', - '危機一髪! 同行者を死神の魔手から救い出す。……ここも油断できないな。', - '同行者が行方不明になる。アイツめ、どこへ逃げたッ!', - 'ずて────ん! あいたたたた……同行者がつまずいたせいで、巻き込まれて転んでしまった。', - '同行者のせいで、迷子になってしまう。困った。どこへ行くべきか。', - '「どこに目つけてんだ、てめぇ!」同行者がチンピラにからまれる。うーん、助けに入るべきか。', - '! 油断していたら、同行者に自分の恥ずかしい姿を見られてしまう。……一生の不覚!', - '同行者が不意に涙を流す。……一体、どうしたんだろう?', - ] - ), - 'NST' => Table.new( - '日常シーン表', - '2D6', - [ - 'っくしゅん! ……うーん、風邪ひいたかなあ。お見舞いに来てくれたんだ。ありがとう。', - '目の前のアイツは、見違えるほどドレスアップしていた。……ゆっくりと大人な時間が過ぎていく。', - 'おいしそうなスイーツを食べることになる。たまには甘いものを食べて息抜き息抜き♪', - 'ふわわわわ、いつの間にか寝ていたようだ。……って、あれ? お前、いつからそこにいたッ!!', - '買い物帰りの友人と出会う。方向が同じなので、しばらく一緒に歩いていると、思わず会話が盛り上がる。', - 'コンビニ。商品に手を伸ばしたら、同時にその商品をとろうとした別の人物と手が触れあう。なんという偶然!', - 'みんなで食卓を囲むことになる。鍋にしようか? それとも焼き肉? お好み焼きなんかもい〜な〜♪', - 'どこからか楽しそうな歌声が聞こえてくる。……って、あれ? 何でお前がこんなところに?', - '野良猫に餌をやる。……猫はのどを鳴らし、すっかりあなたに甘えているようだ。', - '「……! ……? ……♪」テレビは、なにやら楽しげな場面を映している。あら。もう、こんな時間か。', - '面白そうなゲーム! 誰かと対戦することになる。GMは、「戦術」からランダムに特技1つを選ぶ。このシーンに登場しているキャラクターは、その特技の判定を行う。成功した場合、同じシーンに登場しているキャラクターを1人を選び、そのキャラクターの自分に対する【感情】を好きなものに変更する(何の【感情】も持っていない場合、好きな【感情】を芽生えさせる)。', - ] - ), - 'TKST' => Table.new( - '東京シーン表', - '2D6', - [ - 'お台場、臨界副都心。デート中のカップルや観光客が溢れている。', - '靖国神社。東京の中とも思えぬ、緑で満ちた場所だ。今は観光客もおらず、奇妙に静かだ……。', - '東京大学の本部キャンパス。正門から伸びる銀杏並木の道を学生や教職員がのんびりと歩いている。道の向こうには安田講堂が見える。', - '山手線の中。乗車率200%を超える、殺人的な通勤ラッシュ真っ最中。この中でできることは限られている……。', - '霞が関。この場に集う情報は、忍者にとっても価値が高いものだ。道を行く人々の中にも、役人や警察官が目につく。', - '渋谷駅前の雑踏。大型屋外ヴィジョンが見下ろす中で、大勢の若者たちが行き交っている。', - '夜の新宿歌舞伎町。酔っぱらったサラリーマン、華やかな夜の蝶、明らかに筋ものと判る男、外国人などの様々な人間と、どこか危険な雰囲気に満ちている。', - '新宿都庁。摩天楼が林立するビル街の下、背広姿の人々が行き交う。', - '神田古書街。多くの古書店が軒を連ねている。軒先に積まれた本の山にさえ、追い求める謎や、深遠な知識が埋もれていそうな気がする。', - '山谷のドヤ街。日雇い労働者が集う管理宿泊施設の多いこの場所は、身を隠すにはうってつけだ。', - '東京スカイツリーの上。この場所からならば東京の町が一望できる。', - ] - ), - 'KST' => Table.new( - '回想シーン表', - '2D6', - [ - '闇に蔓延する忍びの気配。あのときもそうだった。手痛い失敗の記憶。今度こそ、うまくやってみせる。', - '甘い口づけ。激しい抱擁。悲しげな瞳……一夜の過ちが思い返される。', - '記憶の中でゆらめくセピア色の風景。……見覚えがある。そう、私はここに来たことがあるはずだッ!!', - '目の前に横たわる死体。地面に広がっていく。あれは、私のせいだったのだろうか……?', - 'アイツとの大切な約束を思い出す。守るべきだった約束。果たせなかった約束。', - '助けを求める右手が、あなたに向かってまっすぐ伸びる。あなたは、必死でその手を掴もうとするが、あと一歩のところで、その手を掴み損ねる……。', - 'きらきらと輝く笑顔。今はもう喪ってしまった、大事だったアイツの笑顔。', - '恐るべき一撃! もう少しで命を落とすところだった……。しかし、あの技はいまだ見切れていない。', - '幼い頃の記憶。仲の良かったあの子。そういえば、あの子は、どこに行ってしまったのだろう。もしかして……。', - '「……ッ!!」激しい口論。ひどい別れ方をしてしまった。あんなことになると分かっていたら……。', - '懐の中のお守りを握りしめる。アイツにもらった、大切な思い出の品。「兵糧丸」を1つ獲得する。', - ] - ), - 'GST' => Table.new( - '戦国シーン表', - '2D6', - [ - '炎上する山城。人々の悲鳴や怒号がこだましている。どうやら、敵対する武将による焼き討ちらしい。今ならば、あるいは……。', - '荒れ果てた村。カラスの不吉な鳴き声が聞こえてくる中で、やせ細った村人たちが、うつろな瞳でこちらを伺っている。', - '人気のない山道。ただ鳥の声だけが響いている。通りがかった人を襲うのには、好都合かもしれない。', - '乾いた骸の転がる合戦後。生き物の姿はなく、草の一本さえも生えていない。落ち武者たちの恨みがましい声が聞こえてきそうだ……。', - '不気味な気配漂う森の中。何か得体のしれぬものが潜んでいそうだ。', - '荒れ果てた廃寺。ネズミがカサカサと這いまわる本堂の中を、残された本尊が見下ろしている。', - '街道沿いの宿場町。戦から逃げてきたらしい町人や、商売の種を探す商人、目つきの鋭い武士などが行き交い、賑わっている。', - '城の天守閣のさらに上。強く吹く風が、雲を流していく。', - '館の天井裏。この下では今、何が行われているのか……。', - '合戦場に設けられた陣内。かがり火がたかれ、武者たちが酒宴を行っている。', - '戦の真っただ中にある合戦場。騎馬にまたがった鎧武者が駆け抜けていく。勝者となるのは、いずれの陣営だろうか。', - ] - ), - 'GAST' => Table.new( - '学校シーン表', - '2D6', - [ - '清廉な気配が漂う森の中。鳥のさえずりやそよ風が木々を通りすぎる音が聞こえる。', - '学校のトイレ。……なんだか少しだけ怖い気がする。', - '誰もいない体育館。バスケットボールがころころと転がっている。', - '校舎の屋上。一陣の風が吹き、衣服をたなびかせる。', - '校庭。体操服姿の生徒たちが走っている。', - '廊下。休憩時間か放課後か。生徒たちが、楽しそうにはしゃいでいる。', - '学食のカフェテリア。生徒たちがまばらに席につき、思い思い談笑している。', - '静かな授業中の風景。しかし、忍術を使って一般生徒に気取られない会話をしている忍者たちもいる。', - '校舎と校舎をつなぐ渡り廊下。あなた以外の気配はないが……。', - '特別教室。音楽室や理科室にいるのってなんか楽しいよね。', - 'プール。水面が、ゆらゆら揺れている。', - ] - ), - 'KYST' => Table.new( - '京都シーン表', - '2D6', - [ - '夜の街並み。神社仏閣はライトアップされ、にぎやかな酔客が通りを埋める。昼間とはまた違った景色が広がっている。', - '京都駅ビル。その屋上は、京都市で最も高く、周囲を一望できる。', - '旅館で一休み。……のはずが、四方山話に花が咲く。', - '鴨川のあたりを歩いている。カップルが均等に距離を置いて座っているのが面白い。', - '京都はどこにでもおみやげ物屋があるなぁ。さて、あいつに何を買ってやるべきか……?', - '「神社仏閣シーン表(JBST)」で決定。', - '新京極でお買い物。アーケードには、新旧様々な店が建ち並ぶ。', - '大学が近くにあるのかな? 安い定食屋や古本屋、ゲームセンターなどが軒を連ねる学生街。京都はたくさん大学があるなぁ。', - '静かな竹林。凛とした気配が漂う。', - '祇園。時折、しずしずと歩く舞妓さんとすれ違う。雰囲気のある町並みだ。', - '一般公開された京都御所の中を歩く。昼間だというのに人通りはあまりなく、何だか少し寂しい気持ち。', - ] - ), - 'JBST' => Table.new( - '神社仏閣シーン表', - '2D6', - [ - '清明神社。一条戻り橋を越えたところにある小さな社。陰陽師に憧れる女性たちの姿が目立つ。', - '東寺。東寺真言宗総本山。密教独特の厳しい気配が漂う。', - '平安神宮。大鳥居を白無垢の花嫁行列がくぐり抜けていくのが見える。どうやら結婚式のようだ。', - '慈照寺――通称、銀閣寺。室町後期の東山文化を代表する建築である。錦鏡池を囲む庭園には、物思いにふける観光客の姿が……。', - '鹿苑寺――通称、金閣寺。室町前期の北山文化を代表する建築である。鏡湖池に映る逆さ金閣には、強力な「魔」を封印していると言うが……?', - '三十三間堂。荘厳な本堂に立ち並ぶ千一体の千手観音像は圧巻。', - '清水寺。清水坂を越え、仁王門を抜けると、本堂――いわゆる清水の舞台にたどり着く。そこからは、音羽の滝や子安塔が見える。', - '八坂神社。祇園さんの名前で知られるにぎやかな神社。舞妓さんの姿もちらほら。', - '伏見稲荷。全国約四万社の稲荷神社の総本宮。稲荷山に向かって立ち並ぶ約一万基の鳥居は、まるで異界へと続いているかのようだ……。', - '化野念仏寺。無数の石塔、石仏が立ち並ぶ景色は、どこか荒涼としている……。', - '六道珍皇寺。小野篁が冥界に通ったとされる井戸のある寺。この辺りは「六道の辻」と呼ばれ、不思議な伝説が数多く残っている。', - ] - ), - 'AKST' => Table.new( - '秋空に雪舞えばシーン表', - '2D6', - [ - 'どこから紛れ込んできたのか。シーンプレイヤーが1D6を振って3以下ならナタを持った少女、4以上なら冬篭りに備えた熊が襲ってくる。シーンに登場したキャラクターは、少女なら《刀術》・熊なら《鳥獣術》で判定し、失敗すると接近戦ダメージを1点受ける。', - '3:暗い夜の森の中、月明かりのみが周囲を照らす。忍が動くにはいい時間だ。', - '4:秋晴れの下、両脇で黄金色の稲穂が風に靡く道。刈り取りを控えたこの短い間にしか見る事の出来ない貴重な光景だ。', - '5:美味しそうな果実がたわわに実っている。一つくらい取って行ってもバチは当たらないだろう…。', - '6:山中に続く林道。勾配の厳しい道から、紅葉が浮かび流れる穏やかな川が見下ろせる。', - '7:村の広場。山や田畑が一望できる。波打つ稲穂の絨毯、山々には紅葉。秋を感じるひと時だ。', - '8:パチパチと爆ぜる音。どうやら籾殻で焚き火をしているらしい。少し暖まっていこうか。', - '9:神秘的な神社。祭りの準備が進められているが、今は人がいないようだ。', - 'ひと雨きそうな午後。重たい空気にキンモクセイがつと香る。', - '草に埋もれ、崩れかけの古い空き家。どこか物悲しさを感じる。', - 'カツーン、カツーン、誰かが丑の刻参りをしている音が聞こえる。シーンに登場したキャラクターは《呪術》で判定し、成功すると誰かに《呪い》の変調を与えることができる。失敗すると《呪い》の変調を受ける。', - ] - ), - 'CLST' => Table.new( - '災厄シーン表', - '1D6', - [ - '瘴気に晒され続けたことであなたの身体が妖魔へと変貌する。《封術》の判定に失敗したシーンプレイヤーは、背景:劣勢因子と背景:魔人を獲得する。', - '妖魔があなたに従属を強いる。やつが掲げた手の中には…。《遁走術》の判定に失敗したシーンプレイヤーは、背景:人質と兵糧丸1つを獲得する。', - '妖魔の群れに捕まった!独力での包囲網突破のために君の体は限界を迎えようとしていた。《拷問術》の判定に失敗したシーンプレイヤーは、背景:侵食と神通丸1つを獲得する。', - '戦いの激化はあなたの体を蝕む。《医術》の判定に失敗したシーンプレイヤーは、背景:病魔と神通丸1つを獲得する。', - '下級妖魔を束ねたボスが、新たなる力を手に入れようとしている。シーンプレイヤーが《見敵術》の判定に失敗した場合、ボスに対してエニグマ:『秘奥義』が公開状態で追加される。', - '力なき者が生き残ることは出来ない。ボスが新たな力を手に入れようとしている。シーンプレイヤーが《怪力》の判定に失敗した場合、ボスに対してエニグマ:『八面六臂』が公開状態で追加される。', - ] - ), - 'DXST' => Table.new( - '出島EXシーン表', - '2D6', - [ - '迷宮街。いつから囚われてしまったのだろう?何重にも交差し、曲がりくねった道を歩き続ける。このシーンの登場人物は《記憶術》で判定を行わなければならない。成功すると、迷宮の果てで好きな忍具を一つ獲得する。失敗すると、行方不明の変調を受ける。', - '幻影城。訪れた者の過去や未来の風景を見せる場所。このシーンの登場人物は、《意気》の判定を行うことができる。成功すると、自分の持っている【感情】を好きな何かに変更することができる。', - '死者たちの行進。無念の死を遂げた者たちが、仲間を求めて彷徨らっている。このシーンの登場人物は《死霊術》で判定を行わなければならない。失敗すると、ランダムに変調を一つを受ける。', - 'スラム。かろうじて生き延びている人たちが肩を寄せ合い生きているようだ。ここなら辛うじて安心できるかも……。', - '落書きだらけのホテル。その周囲には肌を露出させた女や男たちが、媚態を浮かべながら立ち並んでいる。', - '立ちふさがるのは妖魔の群れ。他に道などない、真正面から突き進むほかは…災厄シーン表(CLST)を振ること。', - '薄汚い路地裏。巨大な黒犬が何かを貪っている。あなたの気配を感じて黒犬は去るが、そこに遺されていたのは……。', - '昏い酒場。バーテンが無言でグラスを磨き続けている。あなたの他に客の気配はないが……。', - '地面を覆う無数の瓦礫。その隙間から暗黒の瘴気が立ち昇る。このシーンの登場人物は《生存術》で判定を行わなければならない。失敗すると、好きな【生命力】を1点失う。', - '熱気溢れる市場。武器や薬物などを売っているようだ。商人たちの中には、渡来人の姿もある。このシーンの登場人物は、《経済力》で判定を行うことができる。成功すると、好きな忍具を一つ獲得できる。', - '目の前に渡来人が現れる。渡来人はあなたに興味を持ち、襲い掛かってくる。このシーンの登場人物は《刀術》で判定を行わなければならない。成功すると、渡来人を倒し、好きな忍具を一つ獲得する。失敗すると、3点の接近戦ダメージを受ける。', - ] - ), - 'HC' => Table.new( - '中忍試験シーン表', - '2D6', - [ - '深い闇が辺りを覆う。何度目かの夜……いつまでこの試験は続くのだろう。このシーンに登場するキャラクターは《生存術》で判定を行い、失敗すると集団戦ダメージを1点受ける。', - '山の冷気が肉体を蝕む。このシーンに登場するキャラクターは《衣装術》で判定を行い、失敗すると射撃戦ダメージを1受ける。', - '腹を空かせた獣が襲いかかってくる。このシーンに登場するキャラクターは、《鳥獣術》で判定を行い、失敗すると射撃戦ダメージを1点受ける。', - '上忍の仕掛けたトラップが発動。このシーンに登場するキャラクターは《罠術》で判定を行い、失敗すると射撃戦ダメージを1点受ける。', - '濃い霧が出てきた。視界が極端に悪くなり、不安を感じる……。', - '清廉な気配が漂う森の中。鳥のさえずりや、そよ風が木々を通り過ぎる音が聞こえる。', - '朽ちた山小屋を発見する。何年も使った様子はなさそうだが……。', - '山の天気は変わりやすい。嵐がやってくる。今後、戦闘が発生したとき、戦場表を使わなかった場合、その戦場は「平地」ではなく「悪天候」として扱う。', - 'ひときわ高くなっている尾根にたどり着く。このシーンの登場するキャラクターは、《登術》で判定を行い、成功すると、好きなキャラクター1人の【居所】を獲得する。', - '深山幽谷(しんざんゆうこく)の果てに、清涼な泉を発見する。ふう、生き返るな。このシーンに登場するキャラクターは、《意気》の判定に成功すると、【生命力】を1点回復させることができる。', - '脱落した別のグループの忍者の死体を発見する。こいつらには、もう不要だろう。好きな忍具1つを獲得する。(何を獲得するか宣言すること)。', - ] - ), - 'HK' => Table.new( - '影の街でシーン表', - '2D6', - [ - '血の臭いがあたりに充満している。何者かの戦いがあった気配。 いや?まだ戦いは続いているのだろうか?', - 'これは……夢か? もう終わったはずの過去。しかし、それを忘れることはできない。', - '眼下に広がる街並みを眺める。ここからなら街を一望できるが……。', - '世界の終わりのような暗黒。暗闇の中、お前達は密やかに囁く。', - '死者たちの行進。無念の死を遂げた者たちが、死者を求めて彷徨っている。このシーンの登場人物は《死霊術》で判定を行わなければいけない。失敗すると、ランダムに変調1つを受ける。', - '立ち並ぶ廃墟。その影から、人とも怪物ともつかない者の影が、あなたの様子を窺っている。', - '地面を覆う瓦礫。その隙間から暗黒の瘴気が立ち昇る。このシーンの登場人物は、《生存術》で判定を行わなければならない。失敗すると好きな【生命力】1点を失う。', - '強い雨が降り出す。人々は、軒を求めて、大慌てて駆けだしていく。', - '大きな風が吹き荒ぶ。髪の毛や衣服が大きく揺れる。何かが起こりそうな予感……', - '酔っぱらいの怒号。客引きたちの呼び声。女たちの嬌声。いつもの繁華街の一幕だが。', - '太陽の微笑みがあなたを包み込む。影の世界の住人には、あまりにまぶしすぎる。', - ] - ), - 'HLST' => Table.new( - '斜歯ラボシーン表', - '2D6', - [ - '今週のびっくりどっくり斜歯開発室、1D6を振り奇数なら好きな忍具が入手できる。偶数でも好きな忍具が入手できるが、射撃戦ダメージを1点受ける。', - 'トランスポーターだ!《絡繰術》で判定すること。失敗するとどこかへ飛ばされて《行方不明》の変調を受ける。成功した場合、望む場所へ到達できる。好きな「居所」を入手すること。', - '改造室。調整途中の下忍戦闘員たちが錯乱し、あなたに襲い掛かる。〈傀儡術〉の判定を行う。失敗すると1点の集団戦ダメージを受ける。成功すれば「居所」を持っている他のキャラクターに1点の集団戦ダメージを与えることができる。', - 'エレベーター。ただし四方八方へ移動する。行き先ボタンは無い。この箱はこれから何処へ行くのか。', - '長く続く廊下。不気味なほどに静まり返っているが、周囲からはまとわりつくような敵意を感じる。', - 'たくさんの巨大な円筒状のガラスが立ち並び、中には様々な人間が謎の液体に浮かぶ。もちろん肝心な部分は光の反射で見えない。こいつは…まさか…!培養プラントシーン表(PLST)を振ること。', - 'LEDが視覚的にやかましいコンピュータールーム。壁一面を埋めるディスプレイがちかちか光る。斜歯の誇る超コンピュータは性能に反して古めかしい。', - '司令室。とうとうDr.斜歯を追い詰めた。泣いて土下座するDr.斜歯……の首がバネ仕掛けで飛び出し、大爆発。影武者だ!このシーン中のファンブル値は+2される。', - '斜歯のロボット兵器がところ狭しと並べられている。こいつらが起動したとしたら…《潜伏術》で判定し、失敗した場合ロボット兵器に見つかって1点の射撃戦ダメージを受ける。', - '自爆装置のある中枢ルーム。《火術》で判定し、成功すると自爆させることができる。自爆させた場合、Dr.斜歯に2点の接近戦ダメージを与えることができる。', - '部屋に置かれた実験装置によりマインドコントロールを受けてしまう。このシーンのあなたはGMの指定した行動をとらねばならない。', - ] - ), - 'HM' => Table.new( - '密室シーン表', - '2D6', - [ - '……ふう。あいつらと一緒にいると、緊張で息苦しくなる。トイレにいるときだけは、少しだけ落ち着くな。', - 'パチ、パチパチ……。電灯が明滅する。ずっと薄暗い部屋にいたせいで、時間の感覚が麻痺してきた。一体、いまは何時なんだ?', - 'ガチャン!誰かが食器を落として割ってしまったようだ。落としたヤツは悪びれもせず、こっちを見て肩をすくめている。', - '誰かがつけたテレビ。くだらないバラエティ番組が映っている。静かな部屋に作り物の笑いがむなしく響く。', - '空調がイカれているのか、妙に暑い。じっとりと汗ばんでくる……。', - 'ぴちょん、ぴちょん、ぴちょん……静かな室内に水道から水が滴る音が響く。さっき、きっちり閉めたはずなんだが。', - 'タバコの煙が目に染みる。閉じきった部屋で吸うから、空気が悪くなってきているな。', - '床に散乱した書類の中から、一枚の写真を見つける。この部屋の持ち主と、その恋人らしき人物が仲よさそうに写っているが……。', - '誰かが、八つ当たり気味に壁を殴る。そんなことして、一体なんになるというのだろう?', - 'ベッドでごろんと横になる。くそ!いつになったら、ここから出られるんだ!', - '壁のシミをぼんやりとながめていたら、それがゆっくりと人の顔の形になり、にやりと笑いかけてきた。……幻覚か。', - ] - ), - 'HO' => Table.new( - '病院シーン表', - '2D6', - [ - '謎の入院患者。車椅子に座った少女が、あなたをじっと見つめている。', - '急患入り口。サイレンの音に続いて、ストレッチャーに乗せられた救急患者が運ばれてきた。', - '病院の屋上。巨大な病院の敷地が一望できる。', - '診察室。机と清潔なベットが設えられている無機室な部屋。机の上にはパソコンといくつかの器具が置かれている。', - '病院の廊下。患者の姿はなく、静まり返っている。', - '面会用のロビーは、入院患者とその見舞客で賑わっている。だが、それに紛れて、妙な気配を感じるが……。', - '病室。きつい消毒液の香りに混じって、死の匂いが漂っている。', - '奇妙な囁き声。「助けてくれ……。」そんな訴えを耳元で聞いた気がしたが……?', - 'ナースステーション。数人の看護師たちが慌ただしく業務をこなしている。', - '中庭。どこからか悲鳴が聞こえたような気がするが……?', - '霊安室。その扉が並ぶ長い廊下には、地下特有の淀んだ空気が漂っている。なぜだか気分が悪い。', - ] - ), - 'HR' => Table.new( - '龍動シーン表', - '2D6', - [ - '血の匂いが辺りに充満している。何者かの戦いがあった気配。いや?まだ戦いは続いているのだろうか?', - 'これは……夢か?もう終わったはずの過去。しかし、それを忘れることはできない。', - '眼下に広がる街並みを眺める。ここからなら街を一望できるが……。', - '世界の終りのような暗闇。暗闇の中、お前たちは囁く。', - '雰囲気のある古い街並みを歩く。あの建物は見たことがあるような……。', - '霧の中を黒い影が飛び回っている。連中か?', - '分厚い霧が街を折っている。霧の向こうには黒い影が……。', - '強い雨が降り出す。人々は軒を求めて、大慌てで駆け出していく。', - '大きな風が吹き荒ぶ。髪の毛や衣服が大きく揺れる。何かが起こりそうな予感……。', - 'どこからか奇妙な歌が響く。それはまるで、邪悪な神に捧げる祈りのようにも聞こえた。', - '無残で冒涜的な死体。犠牲者の表情は苦悶に満ちあふれ、四肢には何者かに貪り食われた痕がある。', - ] - ), - 'HS' => Table.new( - '催眠シーン表', - '1D6', - [ - 'あなたは心地よいベッドの中で、恋人の肌のぬくもりを感じながら微睡んでいる。恋人は「そろそろ起きる時間」とベッドからすり抜ける。目を開けると、そこには裸のナビキャラクターがいた。そして、ナビキャラクターはあなたに優しく口づけをした。柔らかな感触が、あなたの記憶を掘り起こす。', - 'あなたは一人で死体の片付けを行っている。とても恐ろしく、とても憎かったナビキャラクターを殺したのだ。ナビキャラクターの意志のない瞳を見下ろし、あなたは晴れやかな気分になる。そして、その死体の手のひらに何かが書かれているのに気が付いた。', - 'あなたはなぜかTVショーに登場している。黒いサングラスをかけた司会者と楽しくおしゃべりしていたら、友人を紹介してほしいと言われ、電話を渡された。覚えのある番号にかけてみると、受話器の向こうからナビキャラクターの声がした。声は、あなたにこう囁く……。', - 'あなたはいつの間にか子どもになって、お気に入りのアニメを見ている。夢中になってアニメを見ていると、ナビキャラクターがアニメの登場人物として現れた。ナビキャラクターは、画面から抜け出してきて、あなたをアニメの世界に引きずり込む。そして、あなたは世界の真実に気付いてしまう!', - 'あなたはレストランでお腹を空かせている。そこに給仕の姿をしたナビキャラクターが、食事を運んできた。メインディッシュの銀製の蓋を開けてみると、そこにはあなたの大好物が。食欲をそそる香りが立ちこめ、あなたは重大な事実を思い出す。', - 'あなたは膨大な数の書架が林立する無人の図書館を歩いている。何気なく一冊の本を棚から抜き出すと、その本の向こう側にナビキャラクターの顔がのぞいている。「お前の求めるものは、その本の14ページに書かれている。」その言葉に従い、恐る恐る14ページを開いてみると……。', - ] - ), - 'HT' => Table.new( - '滅びの塔シーン表', - '2D6', - [ - '血の臭いがあたりに充満している。何者かの戦いがあった気配。 いや?まだ戦いは続いているのだろうか?', - 'これは……夢か? もう終わったはずの過去。しかし、それを忘れることはできない。', - '眼下に広がる街並みを眺める。ここからなら街を一望できるが……。', - '世界の終わりのような暗黒。暗闇の中、お前達は密やかに囁く。', - '優しい時間が過ぎていく。影の世界のことを忘れてしまいそうだ。', - '凄まじい業火。このシーンの登場する者は、『器術』分野からランダムに特技1つを選び、判定を行う。失敗すると射撃戦ダメージ1点を受ける。', - '凄まじい人混み。喧噪。影の世界のことを知らない無邪気な人々の手柄話や無駄話が騒がしい。', - '強い雨が降り出す。人々は、軒を求めて、大慌てて駆けだしていく。', - '大きな風が吹き荒ぶ。髪の毛や衣服が大きく揺れる。何かが起こりそうな予感……', - '凄まじい業火。このシーンの登場する者は、『器術』分野からランダムに特技1つを選び、判定を行う。失敗すると射撃戦ダメージ1点を受ける。', - '太陽の微笑みがあなたを包み込む。影の世界の住人には、あまりにまぶしすぎる。', - ] - ), - 'HY' => Table.new( - '夜行列車シーン表', - '2D6', - [ - '車内の灯りがすべて消える。停電か?それとも……。すべてが闇に覆われる。', - 'どうやらこの車輌は喫煙席のようだ。もうもうと煙がたちこめている。しかし、あなたたち以外に、客の姿は見えないのだが……?', - '気分を変えるために、食堂車に移動する。そこには「解体屋」を名乗る例の女性がいた。あなたにむかって、婉然とほほえみかけてくる。', - '……はッ!?夢か?いつの間にか眠っていたようだ。何か、悪夢を見ていたようなのだが……。', - '窓越しに通過する駅のホームが見える。しかし、その駅の名前をどうしても読むことができない。どうにも、日本語には見えないのだが……。', - 'ガタンガタンガタン……路線を走る音をぼんやりと聞いている。一体、この列車はどこに向かっているんだろう?', - '車内を照らす白熱灯に、羽虫がたかり、それに合わせるように光が明滅する。', - '髑髏のような細身の車掌あなたのチケットを確認すると、にたりと邪悪に微笑み、去って行った。', - '一等車輛はコンパートメントになっているようだ。コンパートメントの中からは、楽しげな親子の話し声が聞こえてくるが……?', - '「お弁当に、お茶……。」車内販売の少女がやってくる。しかし、そこで売られている食べ物や飲み物は、生き物の内臓のような器官やぐねぐねと蠢く触手、異様な毛の塊など異形のものばかり。《経済力》の判定に成功すると、好きな「忍具」1つを購入できる。', - '車輌の果てを確かめるため、延々扉をくぐっているが、いつまでたっても最前列(最後尾?)にたどりつかない。今、いったい何輌目だろうか?', - ] - ), - 'NTST' => Table.new( - '夏の終わりシーン表', - '2D6', - [ - 'どこから紛れ込んできたのか。ナタを持った少女がこちらに迫ってくる。あっそぼうよぉ。シーンに登場したキャラクターは《刀術》で判定し、失敗すると接近戦ダメージを1点受ける。', - '暗い夜の森の中、月明かりのみが周囲を照らす。忍が動くにはいい時間だ。', - '鬱蒼と繁っていて少し涼しい森の中。ほんのひとときでもいい。使命を忘れて少し涼もうか。', - 'ほとんど人が出入りしない公民館。かろうじて扇風機は回っているが暑い。', - '山の斜面に立ち並ぶ墓石。踏み固められた周囲と墓前に供えられた小さな花束。こんな山中にも日々通う人がいるのだろうか。', - '村の広場。田畑が一望できる。夏の風物詩であるセミの鳴き声がうるさい。', - '澄み切った清流。冷たい飛沫が気持ちいい。森の中の穴場だ。', - '神秘的な神社。夏の終わりに向けて祭りの準備がされているが、今は人がいないようだ。', - '無人の廃屋が並び、不気味な雰囲気が漂う。廃屋の影から息を潜める何者かの気配を感じる。', - '村の上空。ここから眺めれば村など小さいものだ。', - 'カツーン、カツーン、誰かが丑の刻参りをしている音が聞こえる。シーンに登場したキャラクターは《呪術》で判定し、成功すると誰かに《呪い》の変調を与えることができる。失敗すると《呪い》の変調を受ける。', - ] - ), - 'PLST' => Table.new( - '培養プラントシーン表', - '1D6', - [ - '培養槽。あなたそっくりの人間が謎の液体に浸かっている。あなたは本当に本物のあなただろうか?《記憶術》で判定を行い、失敗すると《忘却》の変調を受ける。', - '巨大なガラス管の中に冒涜的な生物が蠢く実験室。《意気》で判定を行い、失敗すると《マヒ》の変調を受ける。', - '試験管に浮かぶDr斜歯のクローン脳が大量にあるクローン施設。', - '各流派頭領が浮かぶ試験管。ランダムな特技を決定し判定を行う。決定した特技が自分の得意分野の場合、成功すると兵糧丸を1つ入手する。得意分野でない場合、失敗すると接近戦ダメージを1点受ける。', - '無人の実験室。中央には破壊された培養器があり、人とも獣ともつかない濡れた足跡が扉へと続いている。', - '美少年改造プラント。このシーンに登場した者は《変装術》で判定すること。成功した場合、美少年になることができる。', - ] - ), - 'FT' => Table.new( - 'ファンブル表', - '1D6', - [ - '何か調子がおかしい。そのサイクルの間、すべての行為判定にマイナス1の修正がつく。', - 'しまった! 好きな忍具を1つ失ってしまう。', - '情報が漏れる! このゲームであなたが獲得した【秘密】は、他のキャラクター全員の知るところとなる。', - '油断した! 術の制御に失敗し、好きな【生命力】を1点失う。', - '敵の陰謀か? 罠にかかり、ランダムに選んだ変調1つを受ける。変調は、変調表で決定すること。', - 'ふう。危ないところだった。特に何も起こらない。', - ] - ), - 'KFT' => Table.new( - '怪ファンブル表', - '1D6', - [ - '何か調子がおかしい。そのサイクルの間、すべての行為判定にマイナス1の修正がつく。', - 'しまった! 好きな忍具を1つ失ってしまう。', - '情報が漏れる! あなた以外のキャラクターは、あなたの持っている【秘密】か【居所】の中から、好きなものをそれぞれ一つ知ることができる。', - '油断した! 術の制御に失敗し、好きな【生命力】を1点失う。', - '敵の陰謀か? 罠にかかり、ランダムに選んだ変調一つを受ける。変調は、変調表で決定すること。', - 'ふう。危ないところだった。特に何も起こらない。', - ] - ), - 'ET' => Table.new( - '感情表', - '1D6', - [ - '共感(プラス)/不信(マイナス)', - '友情(プラス)/怒り(マイナス)', - '愛情(プラス)/妬み(マイナス)', - '忠誠(プラス)/侮蔑(マイナス)', - '憧憬(プラス)/劣等感(マイナス)', - '狂信(プラス)/殺意(マイナス)', - ] - ), - 'WT' => Table.new( - '変調表', - '1D6', - [ - '故障:すべての忍具が使用不能。1サイクルの終了時に、《絡繰術》で判定を行い、成功するとこの効果は無効化される。', - 'マヒ:修得済み特技がランダムに1つ使用不能になる。1サイクルの終了時に、《身体操術》で成功するとこの効果は無効化される。', - '重傷:次の自分の手番に行動すると、ランダムな特技分野1つの【生命力】に1点ダメージ。1サイクルの終了時に、《生存術》で成功すると無効化される。', - '行方不明:その戦闘終了後、メインフェイズ中に行動不可。1サイクルの終了時に、《経済力》で成功すると無効化される。', - '忘却:修得済み感情がランダムに1つ使用不能。1サイクルの終了時に、《記憶術》で成功すると無効化される。', - '呪い:修得済み忍法がランダムに1つ使用不能。1サイクルの終了時に、《呪術》で成功すると無効化される。', - ] - ), - 'KWT' => Table.new( - '怪変調表', - '1D6', - [ - '故障:すべての忍具が使用不能になる。この効果は累積しない。各サイクルの終了時に、《絡繰術》で行為判定を行い、成功するとこの変調は無効化される。', - 'マヒ:修得している特技の中からランダムに一つを選び、その特技が使用不能になる。この効果は、修得している特技の数だけ累積する。各サイクルの終了時に、《身体操術l》で行為判定を行い、成功するとこの変調はすべて無効化される。', - '重傷:命中判定、情報判定、感情判定を行うたびに、接近戦ダメージを1点受ける。この効果は累積しない。各サイクルの終了時に、《生存術》で行為判定を行い、成功するとこの変調は無効化される。', - '行方不明:メインフェイズ中、自分以外がシーンプレイヤーのシーンに登場することができなくなる。この効果は累積しない。各サイクルの終了時に、《経済力》で行為判定を行い、成功するとこの変調は無効化される。', - '忘却:修得している【感情】の中からランダムに一つを選び、その【感情】を持っていないものとして扱う。この効果は、修得している【感情】の数だけ累積する。各サイクルの終了時に、《記憶術》で行為判定を行い、成功するとこの変調はすべて無効化される。', - '呪い:修得している忍法の中からランダムに一つを選び、その忍法を修得していないものとして扱う。この効果は、修得している忍法の数だけ累積する。各サイクルの終了時に、《呪術》で行為判定を行い、成功するとこの変調はすべて無効化される。', - ] - ), - 'GWT' => Table.new( - '戦国変調表', - '1D6', - [ - '催眠:戦闘に参加した時、戦闘開始時、もしくはこの変調を受けた時に【生命力】を1点減少しないと、戦闘から脱落する。サイクル終了時に〈意気〉判定し成功すると無効化。', - '火達磨:ファンブル値が1上昇し、ファンブル時に1点の近接ダメージを受ける。シーン終了時に無効化。', - '猛毒:戦闘に参加した時、ラウンドの終了時にサイコロを1つ振る(飢餓と共用)。奇数だったら【生命力】を1減少。サイクル終了時に〈毒術〉判定し成功すると無効化。', - '飢餓:戦闘に参加した時、ラウンドの終了時にサイコロを1つ振る(猛毒と共用)。偶数だったら【生命力】を1減少。サイクル終了時に〈兵糧術〉判定し成功すると無効化。', - '残刃:回復判定、忍法、背景、忍具の効果による【生命力】回復無効。サイクル終了時に〈拷問術〉判定し成功すると無効化。', - '野望:命中判定に+1、それ以外の判定に-1。サイクル終了時に〈憑依術〉判定し成功すると無効化。', - ] - ), - 'BT' => Table.new( - '戦場表', - '1D6', - [ - '平地:特になし。', - '水中:海や川や、プール、血の池地獄など。この戦場では、回避判定に-2の修正がつく。', - '高所:ビルの谷間や樹上、断崖絶壁など。この戦場でファンブルすると1点のダメージを受ける。', - '悪天候:嵐や吹雪、ミサイルの雨など。この戦場では、すべての攻撃忍法の間合が1上昇する。', - '雑踏:人混みや教室、渋滞中の車道など。この戦場では、行為判定のとき、2D6の目がプロット値+1以下だとファンブルする。', - '極地:宇宙や深海、溶岩、魔界など。ラウンドの終わりにGMが1D6を振り、経過ラウンド以下なら全員1点ダメージ。ここから脱落したものは変調表を適用する。', - ] - ), - }.freeze - - # ランダム指定特技表 - RANDOM_SKILL_TABLE = [ - ['器術', ['絡繰術', '火術', '水術', '針術', '仕込み', '衣装術', '縄術', '登術', '拷問術', '壊器術', '掘削術']], - ['体術', ['騎乗術', '砲術', '手裏剣術', '手練', '身体操術', '歩法', '走法', '飛術', '骨法術', '刀術', '怪力']], - ['忍術', ['生存術', '潜伏術', '遁走術', '盗聴術', '腹話術', '隠形術', '変装術', '香術', '分身の術', '隠蔽術', '第六感']], - ['謀術', ['医術', '毒術', '罠術', '調査術', '詐術', '対人術', '遊芸', '九ノ一の術', '傀儡の術', '流言の術', '経済力']], - ['戦術', ['兵糧術', '鳥獣術', '野戦術', '地の利', '意気', '用兵術', '記憶術', '見敵術', '暗号術', '伝達術', '人脈']], - ['妖術', ['異形化', '召喚術', '死霊術', '結界術', '封術', '言霊術', '幻術', '瞳術', '千里眼の術', '憑依術', '呪術']], - ].freeze - - # 異形表 - METAMORPHOSE_TABLE = [ - '1D6を振り、「妖魔忍法表A」で、ランダムに忍法の種類を決定する。妖魔化している間、その妖魔忍法を修得しているものとして扱う。この異形は、違う種類の妖魔忍法である限り、違う異形として扱う。', - '1D6を振り、「妖魔忍法表B」で、ランダムに忍法の種類を決定する。妖魔化している間、その妖魔忍法を修得しているものとして扱う。この異形は、違う種類の妖魔忍法である限り、違う異形として扱う。', - '1D6を振り、「妖魔忍法表C」で、ランダムに忍法の種類を決定する。妖魔化している間、その妖魔忍法を修得しているものとして扱う。この異形は、違う種類の妖魔忍法である限り、違う異形として扱う。', - '妖魔化している間、戦闘中、1ラウンドに使用できる忍法のコストが、自分のプロット値+3点になり、装備忍法の【揺音】を修得する。', - '妖魔化している間、【接近戦攻撃】によって与える接近戦ダメージが2点になる。', - '妖魔化している間、このキャラクターの攻撃に対する回避判定と、このキャラクターの奥義に対する奥義破り判定にマイナス1の修正がつく。' - ].freeze - - # 妖魔忍法表A, B, C - DEMON_SKILL_TABLES = [ - { - :name => '妖魔忍法表A', - :page => '(怪p.252)', - :table => [ - '【震々】', - '【神隠】', - '【夜雀】', - '【猟犬】', - '【逢魔時】', - '【狂骨】', - ] - }, - { - :name => '妖魔忍法表B', - :page => '(怪p.253)', - :table => [ - '【野衾】', - '【付喪神】', - '【見越】', - '【木魂】', - '【鵺】', - '【生剥】', - ] - }, - { - :name => '妖魔忍法表C', - :page => '(怪p.254)', - :table => [ - '【百眼】', - '【呑口】', - '【荒吐】', - '【怨霊】', - '【鬼火】', - '【蛭子】', - ] - } - ].freeze - - setPrefixes(['MT', 'RTT'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/ShoujoTenrankai.rb b/src/src_bcdice/diceBot/ShoujoTenrankai.rb deleted file mode 100644 index 308cded58..000000000 --- a/src/src_bcdice/diceBot/ShoujoTenrankai.rb +++ /dev/null @@ -1,674 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class ShoujoTenrankai < DiceBot - # ゲームシステムの識別子 - ID = 'ShoujoTenrankai' - - # ゲームシステム名 - NAME = '少女展爛会TRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'しようしよてんらんかいTRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = < { - :name => "春", - :table => %w{ - 【奇・1】【花びら(純従)】(グッズ)が舞い込んで来ます。蝶だったかもしれません。 - 【奇・2】【初めて見る花(純察)】(グッズ)が咲いています。 - 【奇・3】春の香りがふと、強くただよいます。(ロマンティック+1) - 【奇・4】春の嵐が窓を打ち付けています。(ルナティック+1) - 【奇・5】鳥のさえずりが聞こえてきます。 - 【奇・6】軽く汗ばむほどの陽気です。 - 【偶・1】春霞がぼんやりと景色を包み込んでいます。(カタストロフ+1) - 【偶・2】花が散りました。 - 【偶・3】しんしんと花冷えがします。 - 【偶・4】春の雨が銀の紗をかけた様にさらさらと降っています。 - 【偶・5】開け放した窓のカーテンを春風がやさしく揺らしています。(ハートフル+1) - 【偶・6】気持ちよさそうにしている生き物(【コンパニオン】から任意)がいます。 - }, - }, - "SUMMER" => { - :name => "夏", - :table => %w{ - 【奇・1】建物の中に蔓草が入り込んでいます。(カタストロフ+1) - 【奇・2】大きな虹がかかっています。(ハートフル+1) - 【奇・3】稲妻が空を裂きます。 - 【奇・4】むくむくの入道雲が遠くに見えます。 - 【奇・5】虫の声が辺りを満たしています。 - 【奇・6】激しい嵐が屋敷を揺すっています。(ロマンティック+1) - 【偶・1】雲の影がゆっくりと庭を横切っていきます。 - 【偶・2】【夏の花(支純)】(グッズ)が咲き誇っています。 - 【偶・3】風もなく、ひどく蒸し暑い日です。 - 【偶・4】虫が一生懸命動き回っています。 - 【偶・5】物陰からふと、涼しい風が吹いてきました。 - 【偶・6】焼け付く日差しの中、黒々とした影が落ちています。(ルナティック+1) - }, - }, - "AUTUMN" => { - :name => "秋", - :table => %w{ - 【奇・1】たわわに実った果物があります。 - 【奇・2】鳥の声が鋭く響き渡ります。(カタストロフ+1) - 【奇・3】芯の冷えた木枯らしが通り過ぎていきます。 - 【奇・4】鬱々と長い秋の雨が降り続いています。 - 【奇・5】空が不思議に紫がかって見えます。 - 【奇・6】木々が鮮やかな色に染まっています。 - 【偶・1】【秋の花(従純)】(グッズ)がひと群れになって咲いています。 - 【偶・2】見事な夕焼けが辺り一面を染め上げます。(ロマンティック+1) - 【偶・3】ぱたりと物音がやみ、しんと静まりかえります。(ルナティック+1) - 【偶・4】吸い込まれるような青い空が高く広がっています。(ハートフル+1) - 【偶・5】【初めて見る木の実(純察)】(グッズ)が転がっています。 - 【偶・6】【枯葉(従純)】(グッズ)がさくさく、さらさらと音を立てます。 - }, - }, - "WINTER" => { - :name => "冬", - :table => %w{ - 【奇・1】太陽(月)に暈がかかっています。 - 【奇・2】風花が舞っています。 - 【奇・3】雪が積もっています。 - 【奇・4】恐ろしい勢いの吹雪が屋敷を埋めていきます。(ルナティック+1) - 【奇・5】おだやかな小春日和です。(ハートフル+1) - 【奇・6】霙がぽしゃぽしゃと降っています。 - 【偶・1】冬の空と空気が、硝子のように張り詰めています。 - 【偶・2】薪を焚く暖かな匂いがただよっています。(ロマンティック+1) - 【偶・3】窓硝子が曇っています。 - 【偶・4】【冬の花(従支)】(グッズ)が凛と咲いています。 - 【偶・5】氷柱(霜柱、氷)が鋭い光を投げかけています。 - 【偶・6】骸骨のようにそびえる冬の木の枝に、そこだけ青々とヤドリギが茂っています。(カタストロフ+1) - }, - }, - "MORNING" => { - :name => "朝", - :table => %w{ - 【奇・1】起きたら涙を流していました。 - 【奇・2】眠ったのとは別の場所で目覚めました。(ルナティック+1) - 【奇・3】寝相が悪かったのか、痛い思いをして目覚めました。(ハートフル+1) - 【奇・4】朝露が輝いています。 - 【奇・5】見事な朝焼けになりました。 - 【奇・6】まだかなり眠気が残っています。(ロマンティック+1) - 【偶・1】むやみに爽快な気分です。 - 【偶・2】なんだか体がこわばっていて、くたびれた感じがします。(カタストロフ+1) - 【偶・3】ひどく喉が渇いています。 - 【偶・4】白い月がまだ空に残っています。 - 【偶・5】最後の星が朝の光に飲み込まれる瞬間を見ました。 - 【偶・6】鳥の声が響いています。 - }, - }, - "NOON" => { - :name => "昼", - :table => %w{ - 【奇・1】なんだかじっとしていられません。 - 【奇・2】奇妙なだるさを感じています。 - 【奇・3】ひどくお腹がすいています。 - 【奇・4】急に厚い雲が日差しを遮りました。 - 【奇・5】薄い雲の向こうに、オパールの円盤のような太陽があります。(ロマンティック+1) - 【奇・6】なんだか無性にいらいらします。 - 【偶・1】この世界に自分ひとりだけが取り残されたような気分に襲われました。(ルナティック+1) - 【偶・2】変に草木の緑が目に付きます。(カタストロフ+1) - 【偶・3】なんだか急に、寒気を感じました。 - 【偶・4】さっぱりやる気が起きません。 - 【偶・5】みんなで賑やかに遊んでいる声が聞こえてきます。 - 【偶・6】目に触れるあらゆるものが輝いて見えます。(ハートフル+1) - }, - }, - "AFTERNOON" => { - :name => "昼下がり", - :table => %w{ - 【奇・1】快い眠気に襲われています。 - 【奇・2】まだ食べ足りない感じがします。 - 【奇・3】急に天気雨が降り出しました。(ロマンティック+1) - 【奇・4】雲の隙間から輝く光の矢が降り注いでいます。 - 【奇・5】どこかから甘い匂いが漂ってきます。 - 【奇・6】なんとはなしに物憂く、昼の日差しが憂鬱です。(ルナティック+1) - 【偶・1】元気が有り余っている感じがします。 - 【偶・2】今まで吹いていた風がぴたりと止まりました。 - 【偶・3】お日様の匂いがします。(ハートフル+1) - 【偶・4】一陣の風が吹きすぎてゆきました。 - 【偶・5】何か重いものが落ちた音がしました。(カタストロフ+1) - 【偶・6】視線を感じました。 - }, - }, - "TWILIGHT" => { - :name => "黄昏", - :table => %w{ - 【奇・1】人影を見たような気がします。(ルナティック+1) - 【奇・2】やけに色の薄い夕暮れで、なにもかもが灰色に見えます。 - 【奇・3】鮮やかな夕焼けになりました。 - 【奇・4】ふと、自分の影が気になって見つめてしまいました。(カタストロフ+1) - 【奇・5】窓硝子かなにかが、夕陽を照り返して輝いています。 - 【奇・6】葉ずれの音が、やけに大きくざわめいています。 - 【偶・1】一番星を見つけました。(ハートフル+1) - 【偶・2】物陰に夜の気配がわだかまっています。 - 【偶・3】蝙蝠の影らしきものが音もなく舞っています。 - 【偶・4】木の枝にびっしりと、鳥たちが身を寄せ合っています。 - 【偶・5】むやみに月が大きく見えます。 - 【偶・6】ものの境い目があいまいになり、全てが溶けて混ざり合ってしまいそうです。(ロマンティック+1) - }, - }, - "NIGHT" => { - :name => "夜中", - :table => %w{ - 【奇・1】なかなか眠くなれません。 - 【奇・2】ひどく眠くて、今にも寝てしまいそうです。(ハートフル+1) - 【奇・3】赤い月が空に低くかかっています。 - 【奇・4】月の青い光が降り注いでいます。(ロマンティック+1) - 【奇・5】特に星の綺麗な夜です。 - 【奇・6】灯していた明かりがざわめくように揺らいでいます。(ルナティック+1) - 【偶・1】月を隠しながら、薄い雲が通り過ぎていきます。 - 【偶・2】星一つ見えない闇夜です。 - 【偶・3】どこからか談笑の声が聞こえた気がします。 - 【偶・4】流れ星が流れました。 - 【偶・5】コトリと硬い音がしました。(カタストロフ+1) - 【偶・6】どこからかとても美味しそうな匂いがただよってきます。 - }, - }, - "MIDNIGHT" => { - :name => "夜更け", - :table => %w{ - 【奇・1】時計の音がやけに大きく響いています。(カタストロフ+1) - 【奇・2】夢から醒めましたが、どんな夢か覚えていません。 - 【奇・3】足音を聞いた気がします。 - 【奇・4】ぼそぼそと話す声を聞いた気がします。(ロマンティック+1) - 【奇・5】ひどく喉が渇いています。 - 【奇・6】ひどくお腹がすいています。(ハートフル+1) - 【偶・1】寝苦しさを感じています。 - 【偶・2】眠気が全く訪れません。 - 【偶・3】急に月の光を浴びました。(ルナティック+1) - 【偶・4】見慣れたものの影が全く別のものに見えました。 - 【偶・5】闇がやけに深く感じられます。 - 【偶・6】違和感のある香りを感じました。 - }, - }, - "NORBLE" => { - :name => "貴族趣味", - :table => %w{ - 【奇・1】毛足の長い絨毯に足音を吸い取られてしまいました。 - 【奇・2】見とれるほど豪奢な調度があります。 - 【奇・3】気後れするほど豪奢な調度があります。 - 【奇・4】誰かがどこかから窺っているような気がしました。(ルナティック+1) - 【奇・5】曇り一つ無いところに思わず手をついてしまいました。 - 【奇・6】窮屈なくらい、気品にあふれています。 - 【偶・1】仰々しすぎて、ちょっと嫌味に思えなくもありません。 - 【偶・2】豪華でよそ行きな雰囲気の中に、生活の気配がちょっとだけ、混ざりこんでいます。(ハートフル+1) - 【偶・3】【素敵なオブジェ(支押)】(グッズ)が飾られています。 - 【偶・4】わけもなく空しさが募りました。(ロマンティック+1) - 【偶・5】飾り縁のような窓に切り取られた外の景色が、ひどく遠く見えます。(カタストロフ+1) - 【偶・6】いつか聞いたお話の、お姫様を思い出しました。 - }, - }, - "MARCHEN" => { - :name => "メルヒェン", - :table => %w{ - 【奇・1】懐かしさを覚える木の香りがします。(カタストロフ+1) - 【奇・2】周りにあるのはなんの変哲もないものばかりです。 - 【奇・3】部屋のどこかがきしみました。 - 【奇・4】小さな音がします。 - 【奇・5】生活のぬくもりが、確かに刻まれています。(ハートフル+1) - 【奇・6】どこかで読んだお話の記憶と、目の前の風景が重なりました。 - 【偶・1】もったりとした野暮ったさにあふれています。 - 【偶・2】よく乾いたハーブと干草の香りがわずかに漂っています。(ロマンティック+1) - 【偶・3】飾り気がなくとも使いやすそうな調度が、存在感を放っています。 - 【偶・4】おいしそうな匂いが一度だけ、鼻をくすぐりました。 - 【偶・5】歩くと、床がことことと足音をたてます。 - 【偶・6】なにかがひとつ、足りない気がします。(ルナティック+1) - }, - }, - "COLONIAL" => { - :name => "コロニアル", - :table => %w{ - 【奇・1】重厚な調度が征服欲を刺激します。 - 【奇・2】床に傷を見つけてしまいました。 - 【奇・3】重厚な調度に頼もしさを感じます。 - 【奇・4】堅固すぎて、逆にいわく言いがたい不吉さを感じます。(カタストロフ+1) - 【奇・5】壁になにかが架けられていた跡が残っています。 - 【奇・6】ぐるっと回る椅子がなんだかすごく魅力的です。(ハートフル+1) - 【偶・1】しっかりした錠がだらしなく開いていました。 - 【偶・2】威厳を演出しすぎていて、かえって下品かもしれません。 - 【偶・3】外からの光が不思議な静けさをもたらしました。(ロマンティック+1) - 【偶・4】靴音が立ちました。(ルナティック+1) - 【偶・5】革の匂いがかすかに漂っています。 - 【偶・6】そこの頑丈そうな机は、なんだか座り心地がよさそうです。 - }, - }, - "SHELF" => { - :name => "本棚のある場所", - :table => %w{ - 【奇・1】明らかに踏み台に使ったらしく、【大判の本(打押)】(グッズ)が積み上げてあります。(ハートフル+1) - 【奇・2】古びた紙の匂いが辺りを満たしています。 - 【奇・3】【薄い本(打察)】(グッズ)が一冊、ぱたりと音を立てて倒れました。 - 【奇・4】なぜか本棚の一段がまるごと、からっぽになっています。 - 【奇・5】【気になる本(純押)】(グッズ)があるのですが、本棚の天辺に乗っている上非常に重そうです。(ルナティック+1) - 【奇・6】【破り取られた絵本の頁(支従)】(グッズ)が一葉、無残な破れ目をさらしています。 - 【偶・1】【広げっぱなしの本(支押)】(グッズ)にひどい落書きがされています。 - 【偶・2】全集の一冊が欠けていました。(ロマンティック+1) - 【偶・3】棚にきちんと本が納められておらず、バラバラで乱雑に押し込まれています。 - 【偶・4】本の隙間からなにかの気配を感じた気がします。 - 【偶・5】インクが乾いて干からびた、【インク瓶(従察)】(グッズ)と【万年筆(打押)】(グッズ)がテーブルに乗っています。(カタストロフ+1) - 【偶・6】【押し花(純察)】(グッズ)が一輪、落ちていました。 - }, - }, - "LITTLE" => { - :name => "小さな妹の部屋", - :table => %w{ - 【奇・1】つまづいてしまった【玩具(従純)】(グッズ)が、ころりと可愛らしい音を立てました。 - 【奇・2】シーツ(テーブルクロス)がくちゃくちゃです。 - 【奇・3】とんでもないところに食べこぼしの跡を見つけました。 - 【奇・4】過ぎたおいたの跡が、部屋に華々しく残っています。 - 【奇・5】こっそり隠したつもりのおやつが山を成しています。 - 【奇・6】脱ぎ散らかされた服が所在なさげにふて寝しています。 - 【偶・1】やさしい子守歌を思い出しました。(ハートフル+1) - 【偶・2】見る物全てがいちいち勘に障ります。(ルナティック+1) - 【偶・3】かわいらしい【食器(純押)】(グッズ)が置いてありました。(ロマンティック+1) - 【偶・4】わけもなく、涙がこぼれてきます。 - 【偶・5】壊してしまった【がらくた(純従)】(グッズ)が、こっそり隠してありました。 - 【偶・6】ふと、この棲み処の主は、どんな素敵な人になるだろう、と思いました。(カタストロフ+1) - }, - }, - "ELDER" => { - :name => "素敵なお姉さまの部屋", - :table => %w{ - 【奇・1】床に映った影が、ゆっくりと動いていきます。(カタストロフ+1) - 【奇・2】きゅっ、と音が立ちました。 - 【奇・3】自然に背筋が伸びてしまいます。 - 【奇・4】ふとほのかに甘い、柔らかな香りが漂いました。(ロマンティック+1) - 【奇・5】ほのかに確かににじみ出る魅力に、ちょっと嫉妬してしまいます。 - 【奇・6】素敵な【ベルト(支従)】がありました。(ルナティック+1) - 【偶・1】お茶が冷めていました。 - 【偶・2】ちょっとくたびれた【可愛らしい小物(純察)】(グッズ)が、物陰にこっそり置いてありました。 - 【偶・3】衣擦れの音がしました。 - 【偶・4】ダイビングにもってこいのベッドがあります。(ハートフル+1) - 【偶・5】気後れしそうなほど完成度の高い、【手作り品(支押)】(グッズ)が無造作に置いてあります。 - 【偶・6】【部屋着(従純)】(コーディネート)がハンガーにかけられています。 - }, - }, - "ATERIEL" => { - :name => "アトリエ", - :table => %w{ - 【奇・1】棚に【道具(打支)】(グッズ)がきちんと整頓されています。 - 【奇・2】【メモや図面(支押)】(グッズ)が書き散らされています。 - 【奇・3】【壊れた道具(従察)】が積み上げられています。 - 【奇・4】【作りかけらしい作品(純押)】(グッズ)が無造作に放置されています。 - 【奇・5】めちゃくちゃに壊された作品の残骸が散乱しています。(ルナティック+1) - 【奇・6】【見慣れない道具(打純)】(グッズ)が大切そうに置いてあります。 - 【偶・1】食べかけの食事がそのままになっています。 - 【偶・2】【ジャケット(打純)】(グッズ)が脱ぎ捨てられています。(ロマンティック+1) - 【偶・3】積み上げられていたものが、派手な音を立てて崩れました。 - 【偶・4】何気なく触れたところに、インク(や絵の具等)がべっとりついていました。 - 【偶・5】引き出しが一つ、丸々抜き去られています。(カタストロフ+1) - 【偶・6】「作業中、入るな!」と書かれた【紐付きのプレート(支押)】(グッズ)が手に取りやすい位置に置いてあります。(ハートフル+1) - }, - }, - "OPEN" => { - :name => "集まれる場所", - :table => %w{ - 【奇・1】かつての楽しい出来事の余韻が、伝わってくるような気がします。(ハートフル+1) - 【奇・2】テーブルクロスのしみが、涙の跡のように思えました。(ロマンティック+1) - 【奇・3】鉄錆くさい臭いがかすかに鼻を突きます。 - 【奇・4】ぜんぜん片付けられておらず、散らかり放題です。 - 【奇・5】なぜか1枚だけ、【割れた皿(支押)】(グッズ)がそっくりそのまま床に放置されています。 - 【奇・6】誰かが貼った「RESERVED(予約済み)」の【張り紙(支打)】(グッズ)が、堂々と居座っています。 - 【偶・1】整理されすぎていて、人のぬくもりが感じられません。 - 【偶・2】部屋の片隅に、布にくるまれた何か大きなモノが置いてあります。 - 【偶・3】完璧な作法で【食器(従察)】(グッズ)が並べられていますが、誰も、また何も、出てくる気配はありません。 - 【偶・4】壁の向こうを、大勢が賑やかに通り過ぎてゆく気配がします。(カタストロフ+1) - 【偶・5】直前に行われたパーティで余ったらしいお菓子が、「ご自由に」の書置きとともに残されています。 - 【偶・6】壁に【ナイフ(支従)】(グッズ)が突き立っています。(ルナティック+1) - }, - }, - "HAUNTED" => { - :name => "精神的瑕疵物件", - :table => %w{ - 【奇・1】赤黒い染みを見つけてしまいました。 - 【奇・2】叩くような、はじけるような音が断続的に聞こえるような気がします。 - 【奇・3】悪寒がします。 - 【奇・4】ふと手を触れた場所が、不自然に冷たく湿って感じました。 - 【奇・5】何人か余分に、人の気配を感じるような気がしてしかたありません。 - 【奇・6】ふっ、と辺りがいくらか暗くなって、また元に戻りました。 - 【偶・1】細く開いていた隙間が閉じる瞬間を見てしまいました。(カタストロフ+1) - 【偶・2】何かが足をするりと撫でました。(ルナティック+1) - 【偶・3】耳元でつぶやきが聞こえました。多分。(ロマンティック+1) - 【偶・4】出た……と思ったらものの影でした。(ハートフル+1) - 【偶・5】空気がゆっくりと渦をまいて、肌を撫でています。 - 【偶・6】うっすらと手形がついています。 - }, - }, - "SIMPLE" => { - :name => "侘び住まい", - :table => %w{ - 【奇・1】若干、風通しがよすぎるようです。 - 【奇・2】いろいろすっきりしています。 - 【奇・3】壁のひびを見つけました。 - 【奇・4】隅っこに穴が開いています。 - 【奇・5】思わず深呼吸してしまいました。 - 【奇・6】壁と柱の隙間から、外の光が細く漏れてきます。 - 【偶・1】ふと気づくと、掃除したらよさそうな場所を探している自分がいます。(ハートフル+1) - 【偶・2】ぱらっと何かこぼれた音がしました。 - 【偶・3】軋んだ音がした瞬間、棲み処全体が傾いでいくような錯覚に襲われました。(ルナティック+1) - 【偶・4】使い込まれた艶が用の美を控えめに放っています。(ロマンティック+1) - 【偶・5】二度と落ちなさそうな汚れがこびりついています。 - 【偶・6】このまま誰かの思い出の中に閉じこめられてしまいそうな気分になりました。(カタストロフ+1) - }, - }, - "LARGE" => { - :name => "広い場所", - :table => %w{ - 【奇・1】がらんとした広さに、胸を衝かれました。 - 【奇・2】誰かの残り香が、ほのかに甘く漂っています。(ロマンティック+1) - 【奇・3】扉がふいに開きましたが、誰も入ってきません。(カタストロフ+1) - 【奇・4】自分の足音がやけに大きく響き渡りました。 - 【奇・5】ふともらした独り言が、広い部屋の中にぽつりと消えていきました。(ルナティック+1) - 【奇・6】壁に素敵な絵が飾られています。 - 【偶・1】部屋の片隅に、壊れたオブジェが打ち捨てられています。 - 【偶・2】掃除道具が出しっぱなしです。(ハートフル+1) - 【偶・3】床に派手な傷がついています。 - 【偶・4】鉢植えが枯れています。 - 【偶・5】不意に空気が揺れ動くのを感じました。 - 【偶・6】天井がきしんだような気がします。 - }, - }, - "CORRIDOR" => { - :name => "廊下", - :table => %w{ - 【奇・1】窓が開け放たれています。(カタストロフ+1) - 【奇・2】パタン、と扉の閉まる音がしました。 - 【奇・3】人影が、向こうの曲がり角に姿を消したような気がします。(ロマンティック+1) - 【奇・4】壁のランプが落ちて割れています。 - 【奇・5】天井の染みにふと目を奪われました。 - 【奇・6】壁に掛けられた絵がわずかに傾いています。 - 【偶・1】愛を誓うささやかな落書きがありました。(ハートフル+1) - 【偶・2】壁紙が破れ、小さな影を作っています。 - 【偶・3】絨毯が擦り切れています。 - 【偶・4】自分の立てた音がやけに大きく耳に残りました。(ルナティック+1) - 【偶・5】【誰かの落し物(打察)】(グッズ)が落ちています。 - 【偶・6】空っぽの飾り棚が置かれています。 - }, - }, - "STAIRS" => { - :name => "階段", - :table => %w{ - 【奇・1】踊り場に大きな姿見が掛けられています。(カタストロフ+1) - 【奇・2】手すりが使い込まれたつややかな輝きを放っています。(ハートフル+1) - 【奇・3】手すりの一部が壊れています。 - 【奇・4】重いものをぶつけた痕が残っています。 - 【奇・5】【片っぽだけの靴(従純)】(グッズ)残されていました。(ロマンティック+1) - 【奇・6】段が嫌な音を立てて大きくきしみました。 - 【偶・1】隅に埃がたまっています。 - 【偶・2】なぜか、壊れた家具が階段の途中に積み上げてあります。 - 【偶・3】上の階から誰かの足音が聞こえてきます。 - 【偶・4】下の階からぼそぼそと声が聞こえたような気がします。(ルナティック+1) - 【偶・5】差し込む日差しが段に複雑な陰影を作っています。 - 【偶・6】一段踏み外しました。 - }, - }, - "COSY" => { - :name => "居心地のいい場所", - :table => %w{ - 【奇・1】一瞬、物音が全て途絶えました。 - 【奇・2】壁の模様が動いたような気がします。 - 【奇・3】蔦が少しばかり這いこんでいました。(カタストロフ+1) - 【奇・4】妙な息苦しさを覚えました。 - 【奇・5】部屋のどこかがきしみました。 - 【奇・6】小さな明かりがあかあかと揺れています。(ハートフル+1) - 【偶・1】梁の向こうになにかの気配を感じました。 - 【偶・2】窓が急に音を立てました。 - 【偶・3】敷物のすみがわずかに盛り上がっています。(ルナティック+1) - 【偶・4】何の前触れもなく、椅子が倒れました。 - 【偶・5】わけもなく寂しさが募ります。(ロマンティック+1) - 【偶・6】軽い眠気に教われました。 - }, - }, - "TERRACE" => { - :name => "テラス・ベランダ", - :table => %w{ - 【奇・1】木の枝や木の葉が積もっています。 - 【奇・2】【小鳥(純察)】(コンパニオン)がてすりでさえずっています。 - 【奇・3】誰かの洗濯物が風に翻っています。(ハートフル+1) - 【奇・4】てすりが壊れています。 - 【奇・5】バタン、と扉(窓)の閉ざされる音がしました。 - 【奇・6】テラスから覗く部屋の中が、暗く影に沈んでいます。(カタストロフ+1) - 【偶・1】下の方から、楽しげなさざめきが聞こえた気がします。 - 【偶・2】強い風が通り過ぎました。 - 【偶・3】なにかの影が上を通り過ぎました。(ルナティック+1) - 【偶・4】雨ざらしのテーブルと椅子が一揃いあります。 - 【偶・5】雨樋から雫がしたたっています。(ロマンティック+1) - 【偶・6】軒(窓、破風)の飾りが壊れ、【かけら(従察)】(グッズ)が落ちています。 - }, - }, - "GARRET" => { - :name => "屋根裏", - :table => %w{ - 【奇・1】隙間風が【空っぽの小箱(打支)】(グッズ)を揺らして床に落としました。 - 【奇・2】小さな窓から差し込む日差しの中に、埃が舞っています。(ロマンティック+1) - 【奇・3】【古ぼけてほつれた衣装(従純)】(コーディネート)が見つかりました。(ハートフル+1) - 【奇・4】クローゼットの扉が、ほんのわずか開いています。 - 【奇・5】【片手(片足)がもげたぬいぐるみ(純支)】(グッズ)が見つかりました。 - 【奇・6】【ガラスの破片(支純)】(グッズ)で小さな傷を作ってしまいました。 - 【偶・1】鍵穴のない、頑丈で重たい大きな箱があります。 - 【偶・2】埃だらけのクッションが積まれています。 - 【偶・3】がらくたにかぶせられた埃避けの布がかすかに揺れています。(カタストロフ+1) - 【偶・4】蜘蛛の巣がかかっています。 - 【偶・5】【蛾の死骸(従察)】(グッズ)を見つけました。 - 【偶・6】ねずみかなにかが壁の中を駆け抜けていく小さな物音がしました。(ルナティック+1) - }, - }, - "KITCHEN" => { - :name => "台所", - :table => %w{ - 【奇・1】【よく洗われた食器(従純)】(グッズ)が輝きを放っています。(ハートフル+1) - 【奇・2】【銀器(支打)】(グッズ)がくすんでしまっています。 - 【奇・3】水の樽がほとんど空になっていました。 - 【奇・4】【汚れた食器(従支)】(グッズ)が流しを占領しています。 - 【奇・5】【生ごみ(従支)】(グッズ)が異臭を放っています。(ルナティック+1) - 【奇・6】血痕が点々と散らばっています。 - 【偶・1】【ジャムや砂糖漬けの瓶(純打)】が宝石の列のように並んでいます。 - 【偶・2】鍋がコトコトと幸せそうな音を立てていますが、人が見当たりません。(カタストロフ+1) - 【偶・3】ついさっきまで人が立ち働いていたらしく、ぬくもりがまだ残っています。(ロマンティック+1) - 【偶・4】蟻の列が一生懸命おつかいに励んでいます。 - 【偶・5】隅の方に【大きなナメクジ(純従)】(コンパニオン)がへばりついています。 - 【偶・6】分捕り品に齧り付いている【ねずみ(支従)】(コンパニオン)と目が合ってしまいました。 - }, - }, - "BATH" => { - :name => "浴室", - :table => %w{ - 【奇・1】盛大に滑って転んでしまいました。(ハートフル+1) - 【奇・2】下水の饐えた匂いがします。 - 【奇・3】天井から雫がやけにしたたっています。 - 【奇・4】【お風呂用のおもちゃ(純従)】(グッズ)がさみしげに転がっています。(カタストロフ+1) - 【奇・5】空のバスタブの排水溝に、湿った長い髪の毛が絡んでいます。 - 【奇・6】バスタブに泡だらけのお湯が残っています。 - 【偶・1】シャワーが外れたまま床を這っています。(ロマンティック+1) - 【偶・2】床のタイルにひどいひびが入っています。 - 【偶・3】ここしばらく、誰も使った形跡がなく空気が乾いてすらいます。 - 【偶・4】【誰かの服(従打)】(コーディネート)がバスタブに投げ込まれ、ぐちゃぐちゃになっています。 - 【偶・5】不健康にじめついていて、どこもかしこもカビだらけです。 - 【偶・6】なにかが這い回ったような跡がありました。(ルナティック+1) - }, - }, - "REST" => { - :name => "化粧室", - :table => %w{ - 【奇・1】鏡の中の自分が別の顔をしていたような気がします。(カタストロフ+1) - 【奇・2】鬱陶しく虫が飛び回っています。 - 【奇・3】蛇口から水がしたたっています。 - 【奇・4】不快な匂いが強いようです。 - 【奇・5】【清潔なタオル(純従)】(グッズ)が整えられています。(ハートフル+1) - 【奇・6】壊れているらしい便器にガラクタがつっこんであります。 - 【偶・1】閉ざされた個室の中で、ぼそぼそと声がしたような気がします。(ロマンティック+1) - 【偶・2】誰かの【ささやかなアクセサリ(支打)】(グッズ)が置き忘れられています。 - 【偶・3】【清掃用具(打従)】(グッズ)が放り出されています。 - 【偶・4】扉の向こうで人の気配が立ち去りました。(ルナティック+1) - 【偶・5】清掃用具のクローゼットの扉の下から、水が漏れ広がっています。 - 【偶・6】換気窓の近くで空気がゆるく蠢いています。 - }, - }, - "CELLER" => { - :name => "地下倉庫", - :table => %w{ - 【奇・1】なにかべとべとしたものに触ってしまいました。 - 【奇・2】ひんやりとした空気がまとわりついてきます。 - 【奇・3】かすかに悪臭が漂ってきます。 - 【奇・4】作業台のようなものの上を、赤黒い染みが覆っています。(ルナティック+1) - 【奇・5】【ムカデ(純支)】(コンパニオン)がじっとしています。 - 【奇・6】【重たそうな麻袋(従支)】(コンテナ)が積み上げられています。 - 【偶・1】灯されたランプがチリチリと小さな音を立てました。(カタストロフ+1) - 【偶・2】積まれた石炭に、【スコップ(支押)】(グッズ)が突っ込まれています。 - 【偶・3】食べ物を収めた棚があります。(ハートフル+1) - 【偶・4】無愛想でそっけない造りの椅子が転がっています。 - 【偶・5】床の一部が磨り減り、妙に滑らかになっています。 - 【偶・6】梁の上から、視線を感じました。(ルナティック+1) - }, - }, - "LUMBER" => { - :name => "物置", - :table => %w{ - 【奇・1】壁の隙間の向こうを何かの影が通り過ぎました。 - 【奇・2】【気になる箱(従支)】(コンテナ)があるのですが、がらくたの山に埋もれて手が出せません。(ロマンティック+1) - 【奇・3】積まれていたがらくたの一つが、目を逸らした隙に消えたような気がします。(ルナティック+1) - 【奇・4】壊れた家具の下で、【人形(純支)】(グッズ)が潰されています。 - 【奇・5】【虫の死骸(純打)】(グッズ)を見つけました。 - 【奇・6】【安っぽいヒカリモノ(純打)】(グッズ)がたくさん詰まったバスケットがあります。(ハートフル+1) - 【偶・1】【庭いじりの道具(従支)】(グッズ)が無造作に立てかけてあります。 - 【偶・2】黴くさい臭いで息が詰まりそうです。 - 【偶・3】どこかでがらくたが崩れ、大きな音を立てました。 - 【偶・4】床の一部が抜けています。 - 【偶・5】片隅の暗がりから視線を感じました。 - 【偶・6】なんの前触れもなく、物置全体が小さくきしみました。(カタストロフ+1) - }, - }, - "GARDEN" => { - :name => "庭園", - :table => %w{ - 【奇・1】【季節の花(純支)】(グッズ)が美しく咲き乱れています。(ハートフル+1) - 【奇・2】せっかくの花壇が、無残に踏みにじられなぎ倒されています。 - 【奇・3】【庭いじりの道具(従押)】(グッズ)が放り出してあります。 - 【奇・4】物陰から小動物のような影が逃げ去っていきました。 - 【奇・5】手入れが悪く、栽培物が雑草に押され気味です。 - 【奇・6】枯れてしまった苗が、そのまま放置されています。(カタストロフ+1) - 【偶・1】【虫(純従)】(コンパニオン)が悠々と這っています。 - 【偶・2】ふいの強い風に、草木がざわりと不安な音を立てました。 - 【偶・3】どこからともなく、鮮烈な花の香りが漂ってきます。(ロマンティック+1) - 【偶・4】藤棚の作る蔭が、素敵に居心地よく見えます。 - 【偶・5】植え込みがよく育っているのですが、茂りすぎてなんだか怖いようです。(ルナティック+1) - 【偶・6】【花の名前を書いた札(打純)】(グッズ)が打ち棄てられています。 - }, - }, - "WASTED" => { - :name => "廃園", - :table => %w{ - 【奇・1】伸び放題の草が風にざわざわとざわめいています。 - 【奇・2】背丈よりも高い、見上げるような草むらが生い茂っています。 - 【奇・3】【清楚な野の花(純従)】(グッズ)が端然と咲いています。(ハートフル+1) - 【奇・4】草むらの中をなにかがざわざわと通り過ぎていきます。 - 【奇・5】花壇の残骸に躓きました。 - 【奇・6】アーチの残骸に絡む枯れた蔓草の上から、元気な蔓草が巻きついています。(ロマンティック+1) - 【偶・1】枯れた噴水があります。 - 【偶・2】でこぼこに割れた敷石の隙間から、雑草が茂っています。 - 【偶・3】全く草の生えていない一角があります。(カタストロフ+1) - 【偶・4】綺麗な彫刻の、半分くらいに割れた【かけら(従察)】(グッズ)があります。 - 【偶・5】大きな虫瘤があります。 - 【偶・6】虫が素早く、石の下に這いこんでいきました。(ルナティック+1) - }, - }, - "RUIN" => { - :name => "廃屋", - :table => %w{ - 【奇・1】天井や床が派手に崩壊していて、踏み込めない一角があります。 - 【奇・2】何か金属の部品が真っ二つになっていました。 - 【奇・3】硝子の破片が散乱しています。 - 【奇・4】ひどい隙間風が這いこんできています。 - 【奇・5】絡み付いた茨に可憐な花が付いていました。(ロマンティック+1) - 【奇・6】壊れてひっくり返った家具が黙然としています。 - 【偶・1】【汚れた人形(従察)】(グッズ)が転がっています。 - 【偶・2】あたり一面を、茨(蔦)がびっしり覆っています。 - 【偶・3】紐状のものが垂れ下がっています。(ルナティック+1) - 【偶・4】文字が乱れていて【読めないノート(打押)】(グッズ)が置き去られていました。(カタストロフ+1) - 【偶・5】壁が崩れていますが、まだ穴にはなっていません。 - 【偶・6】虫がせっせとなにかを運んでいます。(ハートフル+1) - }, - }, - "SHORE" => { - :name => "水のほとり", - :table => %w{ - 【奇・1】水面に波紋が広がっていきます。 - 【奇・2】視界の外で水音がしました。 - 【奇・3】生臭い匂いがします。 - 【奇・4】湿った空気が肌を撫でます。(ロマンティック+1) - 【奇・5】うっかり足元を濡らせてしまいました。 - 【奇・6】遠くを水鳥が滑っていきました。(ハートフル+1) - 【偶・1】水面に映した自分の顔が、不自然にくっきりとしていました。(カタストロフ+1) - 【偶・2】水がやけに濁っています。 - 【偶・3】底の方に何か沈んでいるのを見てしまったような気がします。 - 【偶・4】【ガラクタ(打従)】(グッズ)が所在なさげに浮かんでいます。 - 【偶・5】一瞬寒気に襲われました。(ルナティック+1) - 【偶・6】水の中で、魚の影が翻りました。 - }, - }, - }.freeze -end diff --git a/src/src_bcdice/diceBot/Skynauts.rb b/src/src_bcdice/diceBot/Skynauts.rb deleted file mode 100644 index 9146ade07..000000000 --- a/src/src_bcdice/diceBot/Skynauts.rb +++ /dev/null @@ -1,320 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Skynauts < DiceBot - # ゲームシステムの識別子 - ID = 'Skynauts' - - # ゲームシステム名 - NAME = '歯車の塔の探空士' - - # ゲームシステム名の読みがな - SORT_KEY = 'すかいのおつ' - - # ダイスボットの使い方 - HELP_MESSAGE = < {:name => "左下", :position_diff => {:x => -1, :y => +1}}, - 2 => {:name => "下", :position_diff => {:x => 0, :y => +1}}, - 3 => {:name => "右下", :position_diff => {:x => +1, :y => +1}}, - 4 => {:name => "左", :position_diff => {:x => -1, :y => 0}}, - # 5 は中央。算出する意味がないので対象外 - 6 => {:name => "右", :position_diff => {:x => +1, :y => 0}}, - 7 => {:name => "左上", :position_diff => {:x => -1, :y => -1}}, - 8 => {:name => "上", :position_diff => {:x => 0, :y => -1}}, - 9 => {:name => "右上", :position_diff => {:x => +1, :y => -1}}, - }.freeze - - def getDirectionInfo(direction, key, defaultValue = nil) - info = DIRECTION_INFOS[direction.to_i] - return defaultValue if info.nil? - - return info[key] - end - - def getFireResult(command) - return nil unless (m = %r{^D([12346789]*)(\[.+\])*/(\d+)(@([2468]))?$}.match(command)) - - debug("====getFireResult====") - - fireCount = m[3].to_i # 砲撃回数 - fireRange = m[1].to_s # 砲撃範囲 - ballistics = m[5].to_i # 《弾道学》 - debug("fireCount", fireCount) - debug("fireRange", fireRange) - debug("ballistics", ballistics) - - fireCountMax = 25 - fireCount = [fireCount, fireCountMax].min - - firePoint = getFirePoint(fireRange, fireCount) # 着弾座標取得(3次元配列) - fireText = getFirePointText(firePoint, fireCount) # 表示用文字列作成 - - if ballistics != 0 # 《弾道学》有 - fireText += " > 《弾道学》:" - fireText += getDirectionInfo(ballistics, :name, "") - fireText += "\n > " - fireText += getFirePointText(firePoint, fireCount, ballistics) - end - - text = "#{command} > #{fireText}" - - return text - end - - def getFirePoint(fireRange, fireCount) - debug("====getFirePoint====") - - firePoint = [] - - fireCount.times do |count| - debug("\n砲撃回数", count + 1) - - firePoint << [] - - yPos, = roll(1, 6) # 縦 - xPos, = roll(2, 6) # 横 - position = [xPos, yPos] - - firePoint[-1] << position - - debug("着弾点", firePoint) - - fireRange.split(//).each do |rangeText| - debug("範囲", rangeText) - - position_diff = getDirectionInfo(rangeText, :position_diff, {}) - position = [xPos + position_diff[:x].to_i, yPos + position_diff[:y].to_i] - - firePoint[-1] << position - debug("着弾点:範囲", firePoint) - end - end - - debug("\n最終着弾点", firePoint) - - return firePoint - end - - def getFirePointText(firePoint, _fireCount, direction = 0) - debug("====getFirePointText====") - - fireTextList = [] - firePoint.each do |point| - text = "" - point.each do |x, y| - # 《弾道学》《回避運動》などによる座標移動 - x, y = getMovePoint(x, y, direction) - - # マップ外の座標は括弧を付ける - text += (isInMapPosition(x, y) ? "[縦#{y},横#{x}]" : "([縦#{y},横#{x}])") - debug("着弾点テキスト", text) - end - - fireTextList << text - end - - fireText = fireTextList.join(",") - - debug("\n最終着弾点テキスト", fireText) - return fireText - end - - def isInMapPosition(x, y) - ((1 <= y) && (y <= 6)) && ((2 <= x) && (x <= 12)) - end - - def getMovePoint(x, y, direction) - debug("====getMovePoint====") - debug("方向", direction) - debug("座標移動前x", x) - debug("座標移動前y", y) - - position_diff = getDirectionInfo(direction, :position_diff, {}) - x += position_diff[:x].to_i - y += position_diff[:y].to_i - - debug("\n座標移動後x", x) - debug("座標移動後y", y) - return x, y - end - - def getBomberResult(command) - return nil unless (m = %r{^BOM(\d*)?/D([12346789]*)(\[.+\])*/(\d+)(@([2468]))?$}i.match(command)) - - debug("====getBomberResult====", command) - - target = m[1].to_s - direction = m[6].to_i - debug("弾道学方向", direction) - - text = "#{command} > " - text += getJudgeResult("SN" + target) # 砲撃判定 - - return text unless /成功/ === text - - # ダメージチェック部分 - fireCommand = command.slice(%r{D([12346789]*)(\[.+\])*/(\d+)(@([2468]))?}) - - text += "\n > #{getFireResult(fireCommand)}" - - return text - end - - def getAvoidResult(command) - return nil unless (m = /^AVO(\d*)?(@([2468]))(\(?\[縦\d+,横\d+\]\)?,?)+$/.match(command)) - - debug("====getAvoidResult====", command) - - direction = m[3].to_i - debug("回避方向", direction) - - judgeCommand = command.slice(/^AVO(\d*)?(@([2468]))/) # 判定部分 - text = "#{judgeCommand} > 《回避運動》" - text += getJudgeResult("SN" + Regexp.last_match(1).to_s) # 操舵判定 - - return text unless /成功/ === text - - pointCommand = command.slice(/(\(?\[縦\d+,横\d+\]\)?,?)+/) # 砲撃座標 - - firePoint = scanFirePoints(pointCommand) - fireCount = firePoint.size - - text += "\n > #{pointCommand}" - text += " > 《回避運動》:" - text += getDirectionInfo(direction, :name, "") - text += "\n > " - text += getFirePointText(firePoint, fireCount, direction) - - return text - end - - def scanFirePoints(command) - debug("====scanFirePoints====", command) - - command = command.gsub(/\(|\)/, "") # 正規表現が大変なので最初に括弧を外しておく - - firePoint = [] - - # 一組ずつに分ける("[縦y,横xの単位) - command.split(/\],/).each do |pointText| - debug("pointText", pointText) - - firePoint << [] - - # D以外の砲撃範囲がある時に必要 - pointText.split(/\]/).each do |point| - debug("point", point) - - firePoint[-1] << [] - - next unless /[^\d]*(\d+),[^\d]*(\d+)/ === point - - y = Regexp.last_match(1).to_i - x = Regexp.last_match(2).to_i - - firePoint[-1][-1] = [x, y] - - debug("着弾点", firePoint) - end - end - - return firePoint - end -end diff --git a/src/src_bcdice/diceBot/SteamPunkers.rb b/src/src_bcdice/diceBot/SteamPunkers.rb deleted file mode 100644 index 1e25fce78..000000000 --- a/src/src_bcdice/diceBot/SteamPunkers.rb +++ /dev/null @@ -1,483 +0,0 @@ -# -*- coding: utf-8 -*- - -require 'utils/d66_range_table' - -class SteamPunkers < DiceBot - ID = 'SteamPunkers'.freeze - NAME = 'スチームパンカーズ'.freeze - SORT_KEY = 'すちいむはんかあす'.freeze - - HELP_MESSAGE = <=(目標値) - SP4>=3のように入力し、5が出たらヒット数1,6が出たらヒット数2として成功数を数えます。 - ≪スチームパンク!≫による振り直しのため、出力には失敗ダイス数を表示します。 - 目標値は省略可能です。 - 例:(SP4>=3) > [3,4,1,6] > 成功数:2, 失敗数:3 > 失敗 - 例:(SP4) > [3,4,1,6] > 成功数:2, 失敗数:3 -・表 - ・プロフ(Profile):年齢表 PAT, 性別表 PST, 国籍表 PCT - ・名前表(Name):イギリス NIT, アメリカ NAT, フランス NFT, ドイツ NGT, ソビエト NST, 日本表 NJT - ・過去表(Past):トゥルース PTT, ガーディアン PGT, ノーブル PNT, デヴォート PDT, エセティック PET, チャレンジ PCT - ・経緯表(Background):ギガントアームズ BGT, アーマードリム BAT, エッジモービル BET, クロノウェポン BCT, スパイテック BST, スチームウェア BWT - ・特徴表(Feature):特徴表S FST, 特徴表P FPT - ・関係性表(Relationship):関係性表S RST, 関係性表P RPT - ・感情表(Emotion):感情表S EST, 感情表P EPT - ・その他(Other);災厄表 ODT, 場面表 OST, 交流表 OIT, 激憤表 OFT -MESSAGETEXT - - def rollDiceCommand(command) - result = roll_tables(command, TABLES) - return result if result - - return roll_sp(command) - end - - def roll_sp(command) - m = /^SP(\d+)(?:>=(\d+))?$/i.match(command) - unless m - return nil - end - - dice_count = m[1].to_i - target_number = m[2] && m[2].to_i - - _, dice_list_text, = roll(dice_count, 6) - dice_list = dice_list_text.split(',').map(&:to_i) - - successes = dice_list.count(6) * 2 + dice_list.count(5) - failures = dice_list.count { |x| x <= 4 } - - result = - if dice_list.all? { |x| x == 1 } - "ファンブル" - elsif target_number - successes >= target_number ? "成功" : "失敗" - end - - sequence = [ - "(#{command})", - "[#{dice_list_text}]", - "成功数:#{successes}, 失敗数:#{failures}", - result - ].compact - - return sequence.join(" > ") - end - - # スチームパンカーズ用のテーブル - class SPTable < D66RangeTable - # @param name [String] - # @param items [Array] - def initialize(name, items) - if items.size != RANGE.size - raise UnexpectedTableSize.new(name, items.size) - end - - items_with_range = RANGE.zip(items) - - super(name, items_with_range) - end - - # 23..32 と 61..66 が6パターン分 - # その他が4パターン分 - RANGE = [11..14, 15..22, 23..32, 33..36, 41..44, 45..52, 53..56, 61..66].freeze - end - - class UnexpectedTableSize < StandardError; end - - TABLES = { - "PAT" => SPTable.new( - "年齢表", - [ - "【14~15歳】 まだまだ、子ども扱い。また、過去の内容は父か母のことを指している。", - "【16~17歳】 そろそろ成人として扱われる。また、過去の内容は父か母のことを指している。", - "【18~19歳】 職場では修行期間中である。また、過去の内容は両親のことか、あなた自身のことだ。", - "【20~21歳】 ようやく一人前の年齢である。また、過去の内容は両親のことか、あなた自身のことだ", - "【22~23歳】 働き盛りである。また、過去の内容はあなた自身のことだ。", - "【24~25歳】 働き盛りである。また、過去の内容はあなた自身のことだ。", - "【26~27歳】 かつて、従軍した可能性がある。また、過去の内容はあなた自身のことだ。", - "【28~30歳】 蒸気大戦末期をよく知っている。また、過去の内容はあなた自身のことだ。" - ] - ), - "PST" => SPTable.new( - "性別表", - [ - "【男性】 背が高く、がっしりしている。", - "【女性】 蠱惑的な身体をしている。", - "【男性】 平均的な中肉中背である。", - "【女性】 女性らしい体形をしている。", - "【男性】 近世の取れた肉体をしている。", - "【女性】 彫刻のように美しい体形である。", - "【男性】 一見すると細身に見える。", - "【女性】 スリムな体形をしている。" - ] - ), - "PCT" => SPTable.new( - "国籍表", - [ - "【日本皇国】 あなたは日本人である。", - "【フランス共和国】 あなたはフランス人である。", - "【アメリカ合衆国】 あなたはアメリカ人である。", - "【イギリス王国】 あなたはイギリス人である。", - "【イギリス王国】 あなたはイギリス人である。", - "【イギリス王国】 あなたはイギリス人である。", - "【ドイツ帝国】 あなたはドイツ人である。", - "【ソビエト連邦】 あなたはソビエト人である。" - ] - ), - "NIT" => SPTable.new( - "名前表・イギリス(男性名/女性名/名字)", - [ - "アーロン/アビゲイル/アダム", - "カラム/オーレリア/バーナード", - "クライヴ/ブレンダ/ビーチャム", - "カーティス/キャロライン/ビリンガム", - "ダンカン/クリス/ボイド", - "アイオン/イーニッド/クロムウェル", - "ネイサン/グレイス/エアハート", - "ウィリアム/ローレンシア/ハックワース" - ] - ), - "NAT" => SPTable.new( - "名前表・アメリカ(男性名/女性名/名字)", - [ - "ジェラルド/デイジー/キャンベル", - "クラーク/ベアトリス/ベックフォード", - "ヴィクター/ケイト/ガードナー", - "ザック/ルシール/キンケイド", - "ヘクター/エレイン/コールリッジ", - "アーサー/アンジェリカ/アレクサンダー", - "アドニス/アルダ/オースティン", - "ランバート/イヴ/デビットソン" - ] - ), - "NFT" => SPTable.new( - "名前表・フランス(男性名/女性名/名字)", - [ - "ベルナール/ベアトリス/バシュラール", - "セドリック/セシリア/ベルモンド", - "エルネスト/コレット/ボニツェール", - "フレデリック/エルザ/ボワイエ", - "ロランド/リュクレース/ディノワール", - "イアサント/アンリエット/シャルトー", - "バスティアン/ブリジット/オードラン", - "ルイ/リリアーヌ/ドラクランジュ" - ] - ), - "NGT" => SPTable.new( - "名前表・ドイツ(男性名/女性名/名字)", - [ - "アルベルト/アデーレ/アッカーマン", - "バシリウス/アルマ/バルツァー", - "ブルーノ/クリステル/ビットナー", - "エトムント/エルネスタ/コルネリウス", - "ゴッツ/クラリッサ/アイヒマン", - "ヨハン/モニカ/フリードリヒ", - "レオンハルト/オクタヴィア/ハイセルタ", - "ブルクハルト/クロジンデ/ビンデバルト" - ] - ), - "NST" => SPTable.new( - "名前表・ソビエト(男性名/女性名/名字)", - [ - "イリイチ/バルバラ/バビチェフ", - "ミハイル/ジナイーダ/ボブロフ", - "セルゲイ/クラーラ/ヴォルコフ", - "イヴァン/レイラ/ガボエフ", - "アラン/オルガ/ジェミチェフ", - "ボリス/ナタリヤ/ドミトリエフ", - "ウラジミル/ソフィア/エルマコフ", - "アレクセイ/マルタ/ダンチェンコ" - ] - ), - "NJT" => SPTable.new( - "名前表・日本(男性名/女性名/名字)", - [ - "タキジ/タキ/トウドウ", - "シンヤ/アヤ/マツモト", - "レイジ/カオルコ/サガラ", - "コウタロウ/セン/オオシマ", - "ヒロシ/チサ/クジョウ", - "ジロウ/カナ/ヤマガタ", - "マサヒト/マイ/イトウ", - "ショウジ/アヤメ/シンドウ" - ] - ), - "PTT" => SPTable.new( - "過去表『トゥルース』", - [ - "【決着】 あなたは怨敵である蒸気事件の犯人を追っている。いつの日か、そいつとは決着をつけるつもりだ。", - "【陰謀】 とある陰謀により、あなたは故郷、あるいはかつての地位を失ってしまった。", - "【後悔】 ある蒸気事件を解決できなかった。結果、あなたは大切な人を失ってしまった。", - "【失踪】 かつて、あなたが愛した人は不自然な失踪を遂げてしまった。あの人はいったいどこへ……?", - "【冤罪】 ある陰謀により、あなたは冤罪をかけられ、かつての地位を追われてしまった。", - "【裏切り】 とある蒸気事件の際に無二の親友があなたを裏切り、理由も告げぬまま消え去った。", - "【誓い】 とある陰謀により、あなたは大切な何かを失った。いつか陰謀を暴く……それがあなたの誓いだ。", - "【喪失】 とある蒸気事件の際、あなたの家族は何者かの手により惨殺された。犯人は今も見つかっていない。" - ] - ), - "PGT" => SPTable.new( - "過去表『ガーディアン』", - [ - "【後悔】 ある蒸気事件を解決できなかった。結果、あなたは大切な人を失ってしまった。", - "【贖罪】 あなたは過去に罪なき人々の虐殺を強制させられた。だから、贖罪のために人々を護っている。", - "【無力】 かつて、あなたは無力だった。そして、無力ゆえに大切な人を護ることができなかった。", - "【憧れ】 あなたの憧れた人は、いつだって弱者の味方だった。そして、あなたはあの人の背中を追い続けている。", - "【使命】 弱き者たちの盾となる。それが生まれたときから、あなたに課せられ唯一の使命だった。", - "【見殺し】 あなたはやむを得ない事情により、仲間を見殺しにしてしまった。だから、次は絶対見殺しにしない。", - "【死別】 とある事件の際、あなたは家族を護りきれず失ってしまった。だから……今度こそ護ってみせる。", - "【庇護】 現在、あなたには護るべき人、護るべき場所がある。それらの日常を護るべく、あなたは戦ったいる。" - ] - ), - "PNT" => SPTable.new( - "過去表『ノーブル』", - [ - "【復讐】 あなたの家族は蒸気事件の犠牲となった。ゆえに、あなたは家族の仇を討つべく犯人を捜している。", - "【理不尽】 あなたは幼少期に、心優しかった使用人が理不尽な虐待の末に殺害される場面を目撃してしまった。", - "【反発】 あなたの親は悪徳を重ねる権力者だった。そんな親が嫌いで、あなたは常に反発していた。", - "【高貴】 あなたは生来から高貴な信念の持ち主だ。それゆえ弱者を救い、導くことに疑問はない。", - "【偽物】 あなたは貴族の影武者を務める元平民だ。しかし、演じるうちに、あなたは真の高貴を身に着けた。", - "【悲恋】 あなたは、下層市民と身分違いの恋をした。だが、愛する人は蒸気事件の犠牲者となった。", - "【権謀】 あなたの両親は、とある権力闘争に巻き込まれた際、不自然な蒸気事件に遭遇して命を落とした。", - "【慈愛】 あなたは、真の貴族であった両親から他者を慈しむことは当然だと教育された。" - ] - ), - "PDT" => SPTable.new( - "過去表『デヴォート』", - [ - "【忠義】 あなたは、忠義の大切さを教えられて育ってきた。それゆえ、あなたは主に忠誠をささげるのだ。", - "【忠臣】 あなたは国や組織に仕える忠臣だった。だが、権力闘争によって追われ、今は市井に身を潜めている。", - "【恩義】 あなたは現在の主たる人物、または組織に救われた。いつの日か、この恩に報いなければ。", - "【無心】 あなたは生来より、主や組織に仕える教育を受けてきた。ゆえに、忠義を尽くすことに疑問はない。", - "【心酔】 あなたは現在の主や組織に心酔している。だから、主や組織のために蒸気事件に立ち向かう", - "【復習】 あなたの主は邪悪な蒸気事件の犠牲となった。以後、あなたは主の仇を討つべく犯人を捜している。", - "【約束】 あなたの主は蒸気事件の犠牲者だ。主を看取る際、あなたは世界から蒸気事件を一掃すると約束した。", - "【犠牲】 あなたには尊敬に値する主がいた。だが、その主はあなたを庇って、邪悪な陰謀の犠牲となった。" - ] - ), - "PET" => SPTable.new( - "過去表『エセティック』", - [ - "【研究】 あなたは蒸気犯罪で用いられるスチームギアを撲滅するために、常に研究を続けている。", - "【悪用】 あなたは過去に自らが製造した、あるいは所有するスチームギアが悪用され、憤慨したことがある。", - "【仁義】 あなた、仁義の大切さを教えられて育ってきた。それゆえ、あなたは虐げられる物たちを救うのだ。", - "【美意識】 あなたは、スチームギアが犯罪に用いられる場面を目撃した際、吐き気がするほど醜いと感じた。", - "【正義】 あなたは蒸気事件の元犠牲者だ。あなたは、自らの正義を成すために今も蒸気事件に挑み続けている。", - "【正論】 あなたは昔から、スチームギアが正しい方法で利用されないことが我慢ならない。", - "【天誅】 あなたは蒸気事件によって、全てを失ってしまった。だから、蒸気事件を起こす黒幕が許せない。", - "【報復】 あなたの恩師は過去に蒸気事件で犠牲となっている。あなたはいつか、その犯人に報復するつもりだ。" - ] - ), - "BGT" => SPTable.new( - "経緯表『ギガントアームズ』", - [ - "【元近衛兵】 あなたは上層部の警護を任されていた元近衛兵で、スチームギアは大戦時に入手したものである。", - "【反逆者の子】 スチームギアは、スチームパンカーだったあなたの亡父が使っていた形見である。", - "【元殺し屋】 あなたは、かつて殺し屋だった。このスチームギアは以前の仕事の報酬として受け取ったものだ。", - "【元傭兵】 あなたは蒸気大戦で荒稼ぎしていた元傭兵で、このスチームギアは大戦時に入手したものだ。", - "【元英雄】 あなたは蒸気大戦の英雄だ。あなたは戦線に赴く際、上層部から新世代スチームギアを支給されたのだ。", - "【元軍人】 あなたは蒸気大戦にも従軍した元軍人で、大戦時にスチームギアを入手した。", - "【元特殊部隊】 あなたは蒸気大戦で活躍した元特殊部隊員で、大戦時にスチームギアを入手した。", - "【戦場帰り】 あなたは蒸気大戦に従軍した経験を持つ戦場帰りで、大戦時にスチームギアを入手した。" - ] - ), - "BAT" => SPTable.new( - "経緯表『アーマードリム』", - [ - "【試験操縦士】 あなたは軍や企業で試験操縦士を務めており、その折に、スチームギアを密かに入手した。", - "【闇取引】 あなたは闇取引のコネクションがあり、そのコネを利用してスチームギアを入手した。", - "【貴族出身】 あなたは貴族、あるいは元貴族だ。スチームギアは、屋敷の倉にあった品を改造したものである。", - "【元研究者】 あなたはスチームギアの元研究者で、自らの肉体を防護するためにスチームギアを開発した。", - "【戦場帰り】 あなたは蒸気大戦に従軍した経験を持つ戦場帰りで、大戦時にスチームギアを入手した。", - "【謎の協力者】 あなたが蒸気事件に立ち向かおうとした際、謎の協力者が現れ、スチームギアを与えてくれた。", - "【元修理屋】 あなたは元修理屋だ。スチームギアはジャンク置き場で偶然見かけたものをレストアしたものだ。", - "【簒奪者】 あなたは蒸気事件に巻き込まれた際、偶然と幸運が重なり、相手のスチームギアを奪取できた。" - ] - ), - "BET" => SPTable.new( - "経緯表『エッジモービル』", - [ - "【車泥棒】 あなたは元車泥棒だ。このスチームギアは出所不明のものをちょろまかしたものだ。", - "【元機関工】 あなたは優れた技術を持つ元機関工で、出所不明のスチームギアを偶然にも入手した。", - "【元エース】 あなたは蒸気大戦時に英雄と呼ばれた元操縦士で、大戦時にスチームギアを入手した。", - "【元輸送兵】 あなたは蒸気大戦に従軍した経験を持つ元輸送兵で、大戦時にスチームギアを入手した。", - "【蒸気工の子】 あなたは蒸気工、あるいは蒸気技術者の子供だった。スチームギアは、両親が所有していたものである。", - "【元レーサー】 あなたは蒸気車両のレースに出場していたレーサーで、スチームギアは偶然にも入手したものだ。", - "【違法改造屋】 あなたはかつて、違法で改造を施すモグリの機関工だった。スチームギアは、その際に入手したものだ。", - "【逃亡兵】 あなたは、戦場から逃げ出した逃亡兵だ。スチームギアは戦場に赴く際に支給された試作機である。" - ] - ), - "BCT" => SPTable.new( - "経緯表『クロノウェポン』", - [ - "【元武器商人】 あなたは蒸気大戦時にスチームギアを販売していた元武器商人、あるいはその護衛だ。", - "【元製造者】 あなたは蒸気大戦時にスチームギアを製造していた。そして、身を護るために自身の手で製造したのだ。", - "【反逆者の子】 スチームギアは、スチームパンカーだったあなたの亡父が使っていた形見である。", - "【元近衛兵】 あなたは上層部の警護を任されていた元近衛兵で、スチームギアは大戦時に入手したものである。", - "【元特殊部隊】 あなたは蒸気大戦で活躍した元特殊部隊員で、大戦時にスチームギアを入手した。", - "【元傭兵】 あなたは蒸気大戦で荒稼ぎしていた元傭兵で、このスチームギアは大戦時に入手したものだ。", - "【裏稼業】 あなたはかつて裏稼業に手を染めていた荒事屋で、スチームギアは、かつての仕事の報酬である。", - "【元英雄】 あなたは蒸気大戦の英雄だ。あなたは戦線に赴く際、上層部から新世代スチームギアを支給されたのだ。" - ] - ), - "BST" => SPTable.new( - "経緯表『スパイテック』", - [ - "【元刑事】 あなたは、蒸気事件ばかりを追っていた元刑事だ。スチームギアは犯罪者から奪い取ったものである。", - "【元結社の一員】 あなたは邪悪な秘密結社に所属していた元工作員だ。スチームギアはその頃に支給されたものである。", - "【研究者の肉親】 あなたの肉親が軍の研究者で、彼らが試作機として制作したものを偶然入手した。", - "【元工作員】 あなたは、蒸気大戦の裏側で活躍した元工作員で、大戦終結と同時に、そのスチームギアを入手した。", - "【元諜報員】 あなたは蒸気大戦の際に活躍した元スパイで、当時支給されたスチームギアを私物化している。", - "【後援者】 あなたが行なう蒸気事件の調査を援助する者がいる。彼は、このスチームギアを制作した人物である。", - "【元暗殺部隊】 あなたは、蒸気大戦時に暗躍した元暗殺部隊員で、スチームギアはその頃に入手したものだ。", - "【元盗人】 あなたは盗品として流れてきたスチームギアを偶然発見して、入手した。" - ] - ), - "BWT" => SPTable.new( - "経緯表『スチームウェア』", - [ - "【独自ルート】 あなたは人間の限界を超えるために、独自のルートを使って、自らの意志で肉体を機械化した。", - "【相棒の技師】 あなたが蒸気事件で肉体を欠損した際、機械技師をしている相棒が欠損部位を機械化してくれた。", - "【元実験体】 あなたは蒸気事件で重傷を負った際、実験体となる代わりに特殊な機械化手術を施された。", - "【元機械化兵】 あなたは大戦時に機械化手術で蘇った元蒸気兵だ。終戦後、スチームギアをわざと取り換えなかった。", - "【帰還兵】 あなたは蒸気大戦から帰還した帰還兵だ。だが戦時中に肉体が欠損し、軍部が機械化してくれた。", - "【元機械闘士】 あなたは機械化格闘に出場した元格闘士だ。機械化した部位は、その頃に違法改造したものだ。", - "【元闇医者】 あなたは、元モグリの機械医師だった。機械化したその部位は、その頃に自身で改造したものだ。", - "【元英雄】 あなたは蒸気大戦の英雄だ。あなたは戦線に赴く際、上層部から新世代スチームギアを支給されたのだ。" - ] - ), - "FST" => SPTable.new( - "特徴表S", - [ - "【蒸気帽】 あなたは、なんらかの蒸気機械を仕込んだ帽子を愛用している。", - "【装飾品】 あなたは、蒸気仕掛けが施された特殊なアクセサリーやペンダントを愛用している。", - "【蒸気杖/傘】 あなたは、特殊機能を備えた蒸気機械式の傘を、あるいはステッキを愛用している。", - "【ゴーグル】 あなたは、特殊機能を備えたゴーグルを愛用している。", - "【特殊眼鏡】 あなたは、拡大機能などを備えた眼鏡や単眼鏡を愛用している。", - "【蒸気ライター】 あなたは、小さなマグナイトが仕込まれた蒸気式ライターを隠し持っている。", - "【機関手袋】 あなたは、特殊機能を備えた頑丈な革手袋を愛用している。", - "【偽造カード】 あなたは、偽造した戸籍情報を点刻したパンチカードを隠し持っている。" - ] - ), - "FPT" => SPTable.new( - "特徴表P", - [ - "【傷】 顔、あるいは体のどこかに傷がある。", - "【美声】 一度聞くと忘れられないほど、美しい声だ。", - "【筋肉質】 鍛え抜かれた肉体をしている。", - "【美形】 生きている宝石のように美しい容貌をしている。", - "【童顔】 年齢に関係なく、非常に若く見える。", - "【髪】 不思議な髪の色、あるいはパンクな髪型をしている。", - "【刺青】 体のどこかに特徴的なタトゥーがある。", - "【瞳】 不思議な瞳の色、あるいは特徴的な眼差しをしている。" - ] - ), - "RST" => SPTable.new( - "関係性表S", - [ - "【元敵同士】 相手とは、元敵同士の間柄だ。どのように敵対していたかは、プレイヤーと相談して決定せよ。", - "【愛憎】 相手とは、愛憎渦巻く仲だ。愛しあっていた、憎みあっていたのかはプレイヤーと相談して決定せよ。", - "【元相棒】 相手とは、元相棒の間柄だ。なぜ相棒でなくなったかについてはプレイヤーと相談して決定せよ。", - "【犬猿】 相手とは、犬猿の仲だ。なぜ、いがみあっているかについてはプレイヤーと相談して決定せよ。", - "【共依存】 相手とは、共依存の関係だ。どのように依存しあっているかはプレイヤーと相談して決定せよ。", - "【仇同士】 相手とは、仇同士の間柄だ。どのような因縁であるかはプレイヤーと相談して決定せよ。", - "【主従】 相手とは、主従の間柄だ。どちらが主で、どちらが従者かはプレイヤーと相談して決定せよ。", - "【裏切り】 相手とは、裏切りあった間柄だ。どちらが裏切ったかについてはプレイヤーと相談して決定せよ。" - ] - ), - "RPT" => SPTable.new( - "関係性表P", - [ - "【血縁】 相手とは、血縁がある。どの程度の間柄であるかについてはプレイヤーと相談して決定せよ。", - "【同志】 相手は、同じ志を持っている。どんな志を共にしているかはプレイヤーと相談して決定せよ。", - "【好敵手】 相手とは、良きライバルだ。どのような形での好敵手かは、プレイヤーと相談して決定せよ。", - "【親友】 相手とは、親友の間柄だ。どのくらい仲が良いかについては、プレイヤーと相談して決定せよ。", - "【相棒】 相手は、無二の相棒だ。どのくらいの年月を共にしてきたかについてはプレイヤーと相談して決定せよ。", - "【腐れ縁】 相手とは幼い頃からの腐れ縁だ。どのくらいの年齢からであるかはプレイヤーと相談して決定せよ。", - "【戦友】 相手とは戦友の間柄だ。どこで、なにと戦ったかについてはプレイヤーと相談して決定せよ。", - "【師弟】 相手は師、あるいは弟子だ。どちらが師で、どちらが弟子かはプレイヤーと相談して決定せよ。" - ] - ), - "EST" => SPTable.new( - "感情表S", - [ - "【殺意】 相手に殺意を覚えている。どういった経緯で殺意を抱いているかについては自身で決定せよ。", - "【優越感】 相手に優越感がある。どういった経緯で優越感を抱いているかについては自身で決定せよ。", - "【嫉妬】 相手に嫉妬している。どういった経緯で嫉妬しているかについては自身で決定せよ。", - "【劣等感】 相手に劣等感がある。どういった経緯で劣等感を抱いているかについては自身で決定せよ。", - "【罪悪感】 相手に罪悪感がある。どういった経緯で罪悪感を持っているかについては自身で決定せよ。", - "【不安】 相手のことが不安だ。どういったときに不安を感じるかについては自身で決定せよ。", - "【恐怖】 相手のことを恐れている。どういった経緯で恐れるようになったかについては自身で決定せよ。", - "【嫌悪】 相手のことを嫌悪している。どの程度の嫌悪であるかについては自身で決定せよ。" - ] - ), - "EPT" => SPTable.new( - "感情表P", - [ - "【誠意】 相手に対して誠意を感じる。どういった経緯で誠意を感じたかについては自身で決定せよ。", - "【好感】 相手に対して好感を抱いている。どういった経緯で好感を抱くに至ったかについては自身で決定せよ。", - "【尊敬】 相手のことを尊敬している。どういった経緯で相手を尊敬したかについては自身で決定せよ。", - "【友情】 相手に対して友情を抱いている。どういった経緯で友情を抱くに至ったかについては自身で決定せよ。", - "【庇護】 相手を護りたいと思っている。どういった経緯で相手を庇護対象にしたかは自身で決定せよ。", - "【信頼】 相手のことを信頼している。どういった経緯で信頼するようになったかについては自身で決定せよ。", - "【期待】 相手に対して期待している。どういった経緯で期待を抱くようになったかについては自身で決定せよ。", - "【愛情】 相手に愛情や友愛を抱いている。どういった経緯で愛情を抱くに至ったかについては自身で決定せよ。" - ] - ), - "ODT" => SPTable.new( - "災厄表", - [ - "【蒸気の不調】 スチームギアが不調になった!おそらくマグナイトが尽きかけてるのだ。ペナルティーを受けたPCは、そのフェイズの終了まで、スチームの抑圧を解放できない。", - "【卑劣な強襲】 突如として強力な不意討ちを受けた。おそらく、スチームギアによる特殊な攻撃だ。PC全員は【耐久値】を-3する(最小1)。", - "【非道な行為】 黒幕は気まぐれから、罪のない人をスチームギアで傷つけた。なんという非道な行為だ!PC全員は世界からの抑圧を2枚受ける。", - "【嫌な予感】 今回の蒸気事件は特に嫌な予感がする……以後、全てのエネミーは終了フェイズを迎えるまで、実行の《アビリティ》の成功数を+1する。", - "【敵役出現】 見知らぬ妨害者が現れた!以後、[【反抗LV】の平均以下]のエネミーが、そのフェイズに1人参加。戦闘不能にしない限り、メインを迎える度に実行を行ない、活劇フェイズにも参加する。", - "【迎撃準備】 黒幕は万が一に備えて、手下を武装させ始めた。以後、全てのエネミーはシナリオ中、【耐久値】を+3する。", - "【疑惑の目】 まずい。警察や政府がキミたちに対して疑惑の目を向け始めているようだ。PC全員は【理性値】を-2する(最小0)。", - "【絶望感】 突如として心の傷が痛み、信念が揺らいでしまう。ペナルティーを受けたPCは、そのフェイズの終了まで、パンクの抑圧を解放できない。" - ] - ), - "OST" => SPTable.new( - "場面表", - [ - "【地下鉄】 途中まで、地下鉄を利用することにする。駅のホームは蒸気列車が放出する蒸気のせいで、湿り気と熱気を帯びていた。", - "【工業地帯】 工業地帯を横切る。開かれた窓の奥に視線を送ると、労働者たちが製造用蒸気機関を操り、真鍮製の煙突から蒸気が噴き上っている。", - "【店舗】 途中、店舗で簡単な買い物を済ませた。支払いは無論、パンチカードで一括。階差演算機関はすでに個人の予算残高すら管理下に置いている。", - "【ビッグ・ベン】 遠くから時刻を告げるビッグ・ベンの鐘が響くと、蒸気オルガンの薄暗い音色が、いつものようにロンドンの上空を覆った。", - "【人混み】 人混みのなかを進むと、ハンチング帽をかぶった少年たちが脇を駆け抜けた……彼らを護るためにも早く蒸気事件を解決しなければ。", - "【繁華街】 調査に向かった現場では、蒸気機械仕掛けの帯状装飾が点灯しており、帯が回転する度に様々な広告が表示された。", - "【大通り】 大通りに出ると、蒸気自動車が目前で行き交っていた。真鍮や錫で装飾された蒸気自動車は、まるで晩餐会に出入りする馬車のようだ。", - "【移動パブ】 途中、移動パブを見かけた。蒸気自動車に機関式サーバーを搭載したもので、周りには若いロンドン子たちが口に泡をつけながら騒いでいる。" - ] - ), - "OIT" => SPTable.new( - "交流表", - [ - "【過去】 そういえば、相手の過去を知らない気がする…聞けば教えてくれるだろうか?", - "【特徴】 さっきから相手の特徴が気になる。相手から特徴にまつわる話を聞いてみようか?", - "【感情】 相手に対して抱いてる感情のことを伝えるべきだろうか?それとも、伝えないべきだろうか?", - "【蒸気事件】 相手に、今回の事件の印象について聞いてみよう。", - "【事件後】 今回の事件が終わったら、相手は何をするつもりなのだろう?", - "【関係性】 相手とは……いつからこうした関係だったろう?そもそも、相手は覚えているのだろうか?", - "【職業】 相手は、どんな経緯で今の職業となったのだろう。興味があるので、聞いてみようか?", - "【経緯】 相手はどうやってスチームギアを得たのだろう?その経緯の一部でも聞いてみようか?" - ] - ), - "OFT" => SPTable.new( - "激憤表", - [ - "【憤怒】 これほど残虐な蒸気事件が起こったというのに、世界は一向に変わろうとしない。もはや世界への怒りは頂点へと達してしまった。PCはレヴォルトを失い、黒幕となる。", - "【破損】 怒りに任せて激闘を繰り返したため、スチームギアが破損した。もう、世界に反逆する力はない。以後、PCはスチームギアを失い、NPCとなる。", - "【偽装】 権力者からの圧力によって、社会的に抹殺されてしまった。が、それは想定済みだ。これからは別の人生を歩むことになる。PCの名前と職業を変更せよ。", - "【冷静】 今回の蒸気事件には少し思うところがあった。だが、しばらく時間を置くことで、理性的になることができた。キミはまだまだ戦える。特にペナルティーはない。", - "【重傷】 最後の戦いの際に負った傷が重症化してしまった。だが、しばらく治療に専念すれば復帰できるだろう。特にペナルティーはない。", - "【革命】 今回の事件を通じて、信念が揺らいだ。やはり、世界を変えるには圧倒的な”暴力”が必要なのだ。PCはレヴォルトを失い、黒幕となる。", - "【寝返り】 蒸気事件を通じて、世界の在り方に疑問を感じる。そんな矢先、目前にゾディアックの上級幹部が現れ、キミをスカウトしてきた。PCはレヴォルトを失い、黒幕となる。", - "【悪堕ち】 信念に従い、反逆を続けてきた。だが、蒸気事件が尽きる気配はない。反逆など無意味なのか。なら、この手で……PCはレヴォルトを失い、黒幕となる。" - ] - ) - }.freeze - - setPrefixes(['SP.*'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/StellarKnights.rb b/src/src_bcdice/diceBot/StellarKnights.rb deleted file mode 100644 index d7ed3b7eb..000000000 --- a/src/src_bcdice/diceBot/StellarKnights.rb +++ /dev/null @@ -1,915 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require "utils/table" -require "utils/d66_grid_table" - -class StellarKnights < DiceBot - # ゲームシステムの識別子 - ID = 'StellarKnights' - - # ゲームシステム名 - NAME = '銀剣のステラナイツ' - - # ゲームシステム名の読みがな - SORT_KEY = 'きんけんのすてらないつ' - - # ダイスボットの使い方 - HELP_MESSAGE = <l,...] -[]内は省略可能。 -n: ダイス数、d: アタック判定における対象の防御力、k, l: ダイスの出目がkならばlに変更(アマランサスのスキル「始まりの部屋」用) -d省略時はダイスを振った結果のみ表示。(nSKはnB6と同じ) - -4SK: ダイスを4個振って、その結果を表示 -5SK3: 【アタック判定:5ダイス】、対象の防御力を3として成功数を表示 -3SK,1>6: ダイスを3個振り、出目が1のダイスを全て6に変更し、その結果を表示 -6SK4,1>6,2>6: 【アタック判定:6ダイス】、出目が1と2のダイスを全て6に変更、対象の防御力を4として成功数を表示 - -・基本 -TT:お題表 -STA :シチュエーション表A:時間 (Situation Table A) -STB :シチュエーション表B:場所 (ST B) -STB2[n]:シチュエーション表B その2:学園編 (ST B 2) - n: 1(アーセルトレイ), 2(イデアグロリア), 3(シトラ), 4(フィロソフィア), 5(聖アージェティア), 6(SoA) -STC :シチュエーション表C:話題 (ST C) -ALLS :シチュエーション表全てを一括で(学園編除く) -GAT:所属組織決定 (Gakuen Table) -HOT:希望表 (Hope Table) -DET:絶望表 (Despair Table) -WIT:願い事表 (Wish Table) -YST:あなたの物語表 (Your Story Table) -YSTA:あなたの物語表:異世界 (YST Another World) -PET:性格表 (Personality Table) - 性格表を2回振り、性格を決定する - -・霧と桜のマルジナリア -YSTM:あなたの物語表:マルジナリア世界 (YST Marginalia) -STM:シチュエーション表:マルジナリア世界 (ST Marginalia) -YSTL:あなたの物語表:手紙世界 (YST Letter) -YSTR:あなたの物語表:リコレクト・ドール (YST Recollect-doll) -STBR:シチュエーション表B:場所(リコレクト・ドール) (ST B Recollect-doll) -STCR:シチュエーション表C:リコレクト (ST C Recollect) -STBS:シチュエーション表B:シトラセッティング (ST B Sut Tu Real) -STE:シチュエーション表:エクリプス専用 (ST Eclipse) - -・紫弾のオルトリヴート -FT:フラグメント表 (Fragment Table) - フラグメント表を5回振る -FTx:フラグメント表をx回振る -YSTB:あなたの物語表:ブリンガー (YST Bringer) -YSTF:あなたの物語表:フォージ (YST Forge) -STAL:シチュエーション表:オルトリヴート (ST Alt-Levoot) -MESSAGETEXT - - def initialize - super - - @sortType = 2 # バラバラロール(Bコマンド)でソート有 - @d66Type = 1 - end - - def rollDiceCommand(command) - command = command.upcase - - if (table = TABLES[command]) - table.roll(bcdice) - elsif (m = /(\d+)SK(\d)?((,\d>\d)+)?/.match(command)) - resolute_action(m[1].to_i, m[2] && m[2].to_i, m[3], command) - elsif command == 'STB2' - roll_all_situation_b2_tables - elsif command == 'ALLS' - roll_all_situation_tables - elsif command == "PET" - roll_personality_table - elsif (m = /FT(\d+)?/.match(command)) - num = (m[1] || 5).to_i - roll_fragment_table(num) - end - end - - private - - # @param [Integer] num_dices - # @param [Integer | nil] defence - # @param [String] dice_change_text - # @param [String] command - # @return [String] - def resolute_action(num_dices, defence, dice_change_text, command) - _, dice_text, = roll(num_dices, 6, @sortType) - output = "(#{command}) > #{dice_text}" - - dices = dice_text.split(',').map(&:to_i) - - # FAQによると、ダイスの置き換えは宣言された順番に適用されていく - dice_change_rules = parse_dice_change_rules(dice_change_text) - dice_change_rules.each do |rule| - dices.map! { |val| val == rule[:from] ? rule[:to] : val } - end - - unless dice_change_rules.empty? - dices.sort! - output += " > [#{dices.join(',')}]" - end - - unless defence.nil? - success = dices.count { |val| val >= defence } - output += " > 成功数: #{success}" - end - - output - end - - def parse_dice_change_rules(text) - return [] if text.nil? - - # 正規表現の都合で先頭に ',' が残っているので取っておく - text = text[1..-1] - rules = text.split(',').map do |rule| - v = rule.split('>').map(&:to_i) - { - :from => v[0], - :to => v[1], - } - end - - rules - end - - def roll_all_situation_b2_tables - (1..6).map { |num| TABLES["STB2#{num}"].roll(bcdice) }.join("\n") - end - - def roll_all_situation_tables - %w(STA STB STC).map { |command| TABLES[command].roll(bcdice) }.join("\n") - end - - def roll_personality_table - value1, index1 = get_table_by_d66(PERSONALITY_TABLE) - value2, index2 = get_table_by_d66(PERSONALITY_TABLE) - return "性格表(#{index1},#{index2}) > #{value1}にして#{value2}" - end - - def roll_fragment_table(num) - if num <= 0 - return nil - end - - results = Array.new(num) { get_table_by_d66(FRAGMENT_TABLE) } - values = results.map { |r| r[0] } - indexes = results.map { |r| r[1] } - - return "フラグメント表(#{indexes.join(',')}) > #{values.join(',')}" - end - - THEME_TABLE = [ - %w(未来 占い 遠雷 恋心 歯磨き 鏡).freeze, - %w(過去 キス ささやき声 黒い感情 だっこ 青空).freeze, - %w(童話 決意 風の音 愛情 寝顔 鎖).freeze, - %w(ふたりの秘密 アクシデント! 小鳥の鳴き声 笑顔 食事 宝石).freeze, - %w(思い出 うとうと 鼓動 嫉妬 ベッド 泥).freeze, - %w(恋の話 デート ため息 内緒話 お風呂 小さな傷).freeze, - ].freeze - - SITUATION_TABLE_A = %w{ - 朝、誰もいない - 騒がしい昼間の - 寂しい夕暮れの横たわる - 星の瞬く夜、 - 静謐の夜更けに包まれた - 夜明け前の - }.freeze - - SITUATION_TABLE_B_1_2 = [ - "教室  小道具:窓、机、筆記用具、チョークと黒板、窓の外から聞こえる部活動の声", - "カフェテラス 小道具:珈琲、紅茶、お砂糖とミルク、こちらに手を振っている学友", - "学園の中庭 小道具:花壇、鳥籠めいたエクステリア、微かに聴こえる鳥の囁き", - "音楽室 小道具:楽器、楽譜、足踏みオルガン、壁に掛けられた音楽家の肖像画", - "図書館 小道具:高い天井、天井に迫る程の本棚、無数に収められた本", - "渡り廊下 小道具:空に届きそうな高さ、遠くに別の学園が見える、隣を飛び過ぎて行く鳥", - ].freeze - - SITUATION_TABLE_B_3_4 = [ - "花の咲き誇る温室 小道具:むせ返るような花の香り、咲き誇る花々、ガラス越しの陽光", - "アンティークショップ 小道具:アクセサリーから置物まで、見慣れない古い機械は地球時代のもの?", - "ショッピングモール 小道具:西欧の街並みを思わせるショッピングモール、衣類に食事、お茶屋さんも", - "モノレール 小道具:車窓から覗くアーセルトレイの街並み、乗客はあなたたちだけ", - "遊歩道 小道具:等間隔に並ぶ街路樹、レンガ造りの街並み、微かに小鳥のさえずり", - "おしゃれなレストラン 小道具:おいしいごはん、おしゃれな雰囲気、ゆったりと流れる時間", - ].freeze - - SITUATION_TABLE_B_5_6 = [ - "何処ともしれない暗がり 小道具:薄暗がりの中、微かに見えるのは互いの表情くらい", - "寂れた喫茶店 小道具:姿を見せないマスター、その孫娘が持ってくる珈琲、静かなひととき", - "階段の下、秘密のお茶会 小道具:知る人ぞ知る階段下スペースのお茶会、今日はあなたたちだけ", - "学生寮の廊下 小道具:滅多に人とすれ違わない学生寮の廊下、窓の外には中庭が見える", - "ふたりの部屋 小道具:パートナーと共に暮らすあなたの部屋、内装や小物はお気に召すまま", - "願いの決闘場 小道具:決闘の場、ステラナイトたちの花章が咲き誇る場所", - ].freeze - - SITUATION_TABLE_B = [ - SITUATION_TABLE_B_1_2, - SITUATION_TABLE_B_1_2, - SITUATION_TABLE_B_3_4, - SITUATION_TABLE_B_3_4, - SITUATION_TABLE_B_5_6, - SITUATION_TABLE_B_5_6, - ].freeze - - SITUATION_TABLE_B2_1 = %w( - 地下のだだっぴろい学食 - パンの種類が豊富な購買の前 - 本当は進入禁止の屋上 - キャンプ部が手入れしている中庭 - 共用の広いグラウンド - 使い古された教室 - ).freeze - - SITUATION_TABLE_B2_2 = %w( - (美術or音楽)準備室 - 美しく整備された中庭 - 音楽室 - 格調高いカフェテラス - 誰もいない大型劇場 - 完璧な調和を感じる温室 - ).freeze - - SITUATION_TABLE_B2_3 = %w( - 中庭の神殿めいた温室 - 質素だが美しい会食室 - 天井まで届く本棚の並ぶ図書館 - 誰もいない学習室 - 寮生たちの秘密のお茶会室 - 寮の廊下 - ).freeze - - SITUATION_TABLE_B2_4 = %w( - 遠く聞こえる爆発音 - 学生のアンケート調査を受ける - 空から降ってくるドローン - 膨大な蔵書を備えた閉架書庫 - 鳴らすと留年するという小さな鐘の前 - 木漏れ日のあたたかな森 - ).freeze - - SITUATION_TABLE_B2_5 = %w( - おしゃれなカフェテラス - 小さなプラネタリウム - ローマの神殿めいた屋内プール - 誰もいない講堂 - 謎のおしゃれな空き部屋 - 花々の咲き乱れる温室 - ).freeze - - SITUATION_TABLE_B2_6 = %w( - 人気のない教室 - 歴代の寄せ書きの刻まれた校門前 - 珍しく人気のない学食 - 鍵の外れっぱなしの屋上 - 校舎裏 - 外周環状道路へ繋がる橋 - ).freeze - - SITUATION_TABLE_C_1_2_3 = [ - "未来の話:決闘を勝ち抜いたら、あるいは負けてしまったら……未来のふたりはどうなるのだろう。", - "衣服の話:冴えない服を着たりしていないか? あるいはハイセンス過ぎたりしないだろうか。よぉし、私が選んであげよう!!", - "ステラバトルの話:世界の未来は私たちにかかっている。頭では分かっていても、まだ感情が追いつかないな……。", - "おいしいごはんの話:おいしいごはんは正義。100年前も6405年前も異世界だろうと、きっと変わらない真理なのだ。おかわり!", - "家族の話:生徒たちは寮生活が多い。離れて暮らす家族は、どんな人たちなのか。いつかご挨拶に行きたいと言い出したりしても良いだろう。", - "次の週末の話:週末、何をしますか? 願いをかけた決闘の合間、日常のひとときも、きっと大切な時間に違いない。", - ].freeze - - SITUATION_TABLE_C_4_5_6 = [ - "好きな人の話:……好きな人、いるんですか? これはきっと真剣な話。他の何よりも重要な話だ。", - "子供の頃の話:ちいさな頃、パートナーはどんな子供だったのだろうか。どんな遊びをしたのだろうか。", - "好きなタイプの話:パートナーはどんな人が好みなのでしょうか……。気になります、えぇ。", - "思い出話:ふたりの思い出、あるいは出会う前の思い出の話。", - "願いの話:叶えたい願いがあるからこそ、ふたりは出会った。この戦いに勝利したら、どんな形で願いを叶えるのだろうか。", - "ねぇ、あの子誰?:この前見かけたパートナーと一緒にいた子。あの子誰?だーれー!? むー!!" - ].freeze - - SITUATION_TABLE_C = [ - SITUATION_TABLE_C_1_2_3, - SITUATION_TABLE_C_1_2_3, - SITUATION_TABLE_C_1_2_3, - SITUATION_TABLE_C_4_5_6, - SITUATION_TABLE_C_4_5_6, - SITUATION_TABLE_C_4_5_6, - ].freeze - - GAKUEN_TABLE = [ - "アーセルトレイ公立大学", - "イデアグロリア芸術総合大学", - "シトラ女学院", - "フィロソフィア大学", - "聖アージェティア学園", - "スポーン・オブ・アーセルトレイ", - ].freeze - - HOPE_TABLE_1_2_3 = [ - "より良き世界:世界はもっとステキになる。きっと、ずっと、もっと。", - "まだまだ物足りない:もっと上へ、もっと強く、あなたの未来は輝いている。", - "立ち止まっている暇はない!:止まっている時間がもったいない。もっともっと世界を駆けるのだ!", - "私が守るよ:君を傷つける全てから、私が絶対守ってあげる。", - "未来は希望に満ちている:生きていないと、素敵なことは起きないんだ!", - "慈愛の手:届く限り、あなたは手を差し伸べ続ける。", - ].freeze - - HOPE_TABLE_4_5_6 = [ - "自分を犠牲にしてでも:世界はもっときらきらしているんだよ。それを伝える為に、あなたは自分すら犠牲にする。", - "右手を伸ばす:救いたいもの、助けたいもの、大事なもの、なにひとつ見捨てるつもりはない!", - "無限の愛:愛を注ごう。この胸に溢れんばかりのこの愛を!", - "あなたを王に:絶望を知ったパートナーこそ、世界の王に相応しい。私があなたを王にする!", - "救世主:私はきっと、世界を救える。誰だって、救ってみせる。", - "大好きな人のために!:世界は希望に満ちている。あなたをもっと幸せにしたいの!", - ].freeze - - HOPE_TABLE = [ - HOPE_TABLE_1_2_3, - HOPE_TABLE_1_2_3, - HOPE_TABLE_1_2_3, - HOPE_TABLE_4_5_6, - HOPE_TABLE_4_5_6, - HOPE_TABLE_4_5_6, - ].freeze - - DESPAIR_TABLE_1_2_3 = [ - "理不尽なる世界:あなたは世界が如何に理不尽であるか思い知った。", - "この手は届かない:あなたにも目標はあった。しかし、もうこの手は届かないのだ。", - "停滞した世界:どんなにあがこうと、世界は変わらない。この絶望は救われない。", - "どうして僕をいじめるの:あなたは虐げられて生きてきた。守ってくれる者など、どこにもいなかった。", - "過去は絶望に満ちている:ずっとずっと、悪いことばかり、辛いことばかりだった。", - "周囲の視線:世界があなたを見る目は、限りなく冷たいものだった。", - ].freeze - - DESPAIR_TABLE_4_5_6 = [ - "大事故:それは壮絶な事故、いいや、それは事故なんて優しいものですらなかった。", - "目の前で消えたモノ:あなたの目の前で、大切なものは消えてしまった。", - "喪失:何よりも大事にしていたものは、もう二度と、この手には戻らない。", - "没落:あなたか、あなたの親か、ともかくあなたはかつての栄華を一瞬にして失った。", - "救いはない:底の底へと沈んでしまった。もう、誰も、俺を救ってくれる人は……。", - "偽物だった:あなたは幸せだった。そう思っていた。でもそれは全て作り物で、あなたは騙されていたのだ。", - ].freeze - - DESPAIR_TABLE = [ - DESPAIR_TABLE_1_2_3, - DESPAIR_TABLE_1_2_3, - DESPAIR_TABLE_1_2_3, - DESPAIR_TABLE_4_5_6, - DESPAIR_TABLE_4_5_6, - DESPAIR_TABLE_4_5_6, - ].freeze - - YOUR_STORY_TABLE_1_2 = [ - "熟練ステラナイト:あなたは既に何度もステラバトルを征してきた熟練者で ある。【勲章:3~7の間の好きな値】【歪みの共鳴:1】", - "権力者の血筋:統治政府や企業の上層部、あるいは学園組織の運営者の家系である。", - "天才:あなたは紛うことなき天才だ。", - "天涯孤独:あなたに両親はいない。促成培養槽で造られた者なのか、あるいは両親を失ったのか……。", - "救いの手:あなたは誰かに助けてもらった。だから、ここにいるのだ。", - "欠損:心や身体、大切な宝物、家族、あなたは何かを失って、そのまま今に至った。", - ].freeze - - YOUR_STORY_TABLE_3_4 = [ - "大切なもの:大事にしているものがある。", - "お気に入りの場所:好きな場所がある。秘密の場所、あるいは誰かと来たい場所。", - "メイド or バトラー:あなたには仕えるべき相手がいる。金銭の関係か、家柄か、恩義故かは自由に決めて良い。", - "パートナー大好き!!!!!!:私はー!! パートナーがー!! 大好きだー!!!", - "目指せ理想のタイプ:パートナーの理想のタイプ目指してー、ファイトー!!", - "世界への不満:こんな世界はダメダメだ! 私が絶対に創り変えてやる!!", - ].freeze - - YOUR_STORY_TABLE_5_6 = [ - "停滞:何もかもがつまらない。満たされない。動かない世界に嫌気が差している。", - "願いの奴隷:願いを叶える為なら、手段は選ばない。願いの為だけに私は生きている。", - "犯罪者の子:あなたの親は何らかの犯罪に手を染めた。その悪評は、子である君にも影響を及ぼしている。", - "探求者:世界の真実、隠された真実、万物の真理……あなたが追い求めるものはどこまでも尽きない。", - "正義:困った人を見捨てられない、悪は許せない、この胸に宿るのは正義の心。", - "誓約生徒会(カヴェナンター):あなたは一度、エクリプスと化し、討伐された者だ。しかし願いを諦めることは出来ない。だから、あなたはこの仮面を受け取り、戦い続けているのだ。【勲章:0~5の間の好きな値】【歪みの共鳴:0~2の間の好きな値】", - ].freeze - - YOUR_STORY_TABLE = [ - YOUR_STORY_TABLE_1_2, - YOUR_STORY_TABLE_1_2, - YOUR_STORY_TABLE_3_4, - YOUR_STORY_TABLE_3_4, - YOUR_STORY_TABLE_5_6, - YOUR_STORY_TABLE_5_6, - ].freeze - - YOUR_STORY_TABLE_ANOTHER_WORLD_1_2 = [ - "終わりなき戦場:あなたは果ての見えない戦場の世界からここへ流れ着いた。", - "滅びの世界:戦争、あるいは環境汚染か、滅びた後の世界から、あなたはここへ流れ着いた。", - "獣人たちの世界:人とは、獣の特徴を備えた者を指す言葉だった――あなたの世界では。あなたは獣の特徴を備えており、それはアーセルトレイでは奇異の目で見られることだろう。", - "箱庭の世界:都市か、屋敷か、あなたの住んでいた世界は極狭いものだった。大好きな姉妹や家族と、ただ平穏に暮らすだけの日々。永遠に続くと思っていたそれは、ある日突然に崩壊して、あなたはこの世界へと辿り着いた。", - "永遠なる迷宮の世界:無限に広がる迷宮の世界、人々はそこを旅する探索者だった。旧世界の遺産とも称される星まるごとが迷宮の世界、心躍る冒険――そんな日々は、ある日突然に終わってしまった。あなたが辿り着いたのは、アーセルトレイと呼ばれるこの場所だった。", - "巡礼者の世界:広大な自然と石造りの都の世界を、誰もが旅をし続ける世界からあなたはここへ流れ着いた。アーセルトレイに存在する文明は、どれもあなたにとって未知のものだろう。だが、広大なるあの世界へ、戻ることはもう出来ないのだ。", - ].freeze - - YOUR_STORY_TABLE_ANOTHER_WORLD_3_4 = [ - "永遠のヴィクトリア:200年にわたるヴィクトリア女王の統治が続く常闇の世界。蒸気の霧が街を覆い、夜な夜な怪人が闊歩する世界から、あなたはここへ流れ着いた。あなたからすれば、ここは平和な世界だ。しかし、ステラバトルの願いがぶつかる華やかさだけは、あの頃を思い出させる。", - "剣撃乱舞する世界:我々からすれば戦国と呼ばれた極東の一時代を、永遠に繰り返していた世界からあなたはここへ流れ着いた。あなたの剣技は、ステラバトルを切り抜けるのに十分に役立つことだろう。", - "薄暗き森の世界:広大にして永遠に続く森に包まれた世界、霧と風、獣の鳴き声に満ちた世界から、あなたはここへ流れ着いた。あなたの姿を見て、エルフだとか、妖精だとか呼ぶものもいるかもしれないが、あなたには関係のないことだ。", - "人類の瀬戸際:ここも、故郷も、大して変わらない。あなたの故郷は、地球に先んじてロアテラに滅ぼされた世界だ。ここを守護することに躊躇いはない。しかしそれよりも、あなたにとってはここで出会った唯一のパートナーの方が大切なのだ。", - "人形劇の世界:あなたの世界に生きる人々は、元々は人間と呼ばれていたらしい。全ての住人が人形と化したあなたの故郷は、それなりに平和で、楽しいものだったはずだ。しかしそんな日々は、ある日突然終わってしまった。人形そのものであるあなたの姿は、時に奇異の目で見られることだろう。", - "怪獣迎撃の世界:巨大な怪獣が存在し、それを迎え撃つ戦いを繰り返していた世界から、あなたはここへ流れ着いた。そして今も、アーセルトレイは異世界からの侵略者、ロアテラに狙われていると、あなたは理解している。", - ].freeze - - YOUR_STORY_TABLE_ANOTHER_WORLD_5_6 = [ - "蒸気機関の世界:蒸気機関技術が異様に発達した世界から、あなたはここへ流れ着いた。アーセルトレイの技術レベルはそれらに匹敵するものだが、あなたからすると使い方の分からない不思議な技術だ。", - "極東幻想の世界:我々の知る旧地球時代の日本、その国にて語られた鬼や妖怪が実在した世界からあなたはここへ流れ着いた。あなたからすれば、ステラナイトの強さはそれらをも超えるものかもしれない。", - "異端生物の世界:バイオ技術か、交配の結果か、様々な生物と人類が融合した世界から、あなたはここへ辿り着いた。獣や鳥、海棲生物の特徴をあなたは備えている。", - "異端科学の世界:人と機械の境界が曖昧な世界、個と全が曖昧な世界から、あなたはここへ流れ着いた。", - "先進科学の世界:地球の科学がどこまでも真っ直ぐに育った世界から、あなたはここへ流れ着いた。美しく磨きあげられた街並み、道行く人の誰もが笑顔で、万人が幸せな世界から。", - "草花の世界:植物と人が融合した世界から、あなたはここへ流れ着いた。あなたの身体は植物そのものかもしれないし、あるいは眼窩から花が咲いているかもしれない。", - ].freeze - - YOUR_STORY_TABLE_ANOTHER_WORLD = [ - YOUR_STORY_TABLE_ANOTHER_WORLD_1_2, - YOUR_STORY_TABLE_ANOTHER_WORLD_1_2, - YOUR_STORY_TABLE_ANOTHER_WORLD_3_4, - YOUR_STORY_TABLE_ANOTHER_WORLD_3_4, - YOUR_STORY_TABLE_ANOTHER_WORLD_5_6, - YOUR_STORY_TABLE_ANOTHER_WORLD_5_6, - ].freeze - - WISH_TABLE_1_2 = [ - "未知の開拓者:誰も知らない世界、誰も知らない宇宙、誰も知らない星に旅立つんだ!【願いの階梯:4】", - "故郷の復興:あなたの故郷である異世界、あるいは地球を復興する。【願いの階梯:4(階層規模の場合)】【願いの階梯:7(惑星規模の場合)】", - "復讐:絶対にこの復讐を果たすのだ。【願いの階梯:2】", - "誰にも傷つけられない世界:誰も私たちを傷つけない。そんな世界であればいい。【願いの階梯:7(惑星規模)】【願いの階梯:8(宇宙規模)】", - "きらめく世界:世界を明るく楽しくしたい。私が光になるんだ!【願いの階梯:3(自分の変革)】【願いの階梯:7(世界そのものの変革)】", - "おいしいごはん:ふたりで美味しいご飯を食べよう。それが世界で、一番大切なことなんだよ!【願いの階梯:2(おいしいごはんを食べるだけ)】【願いの階梯:4(ふたりの置かれた状況の改善)】", - ].freeze - - WISH_TABLE_3_4 = [ - "私だけのもの:独り占めしたいモノがある。【願いの階梯:5】", - "新たなる存在:この世に存在しないけれど、存在してほしいと願うモノ。私はそれが欲しいんだ。【願いの階梯:6】", - "欲しいもの:どうしても手に入れたいものがある。【願いの階梯:1~10(欲しいものの種類によって変動)】", - "取り戻す:あなたたちは何かを奪われた。それを取り戻すのが、唯一の願いだ。【願いの階梯:4(努力次第でいつか手に届く範囲)】【願いの階梯:6(通常は取り戻せないもの)】", - "誰よりも、高く、遠くへ!:こんな鳥籠は嫌だ。空の果てを目指すんだ!【願いの階梯:4(積層都市内)】【願いの階梯:8(宇宙規模の場合)】", - "あなたを自由に:大切なものは囚われ、縛られている。私のちからで、それを解き放つんだ!【願いの階梯:4(努力次第でいつか叶う範囲)】【願いの階梯:6(奇跡の領域)】", - ].freeze - - WISH_TABLE_5_6 = [ - "誰かの笑顔:誰かの笑顔の為に戦っても、いいだろう?【願いの階梯:1~6(対象の状況によって変動する)】", - "別の世界へ:……この世界ではない、別の世界へ行きたい。【願いの階梯:7(惑星規模)】【願いの階梯:8(宇宙規模)】", - "世界を平和に:平穏な日々を願っても許されるような世界に、この世界をやすらぎに満ちた場所に……。【願いの階梯:7】", - "世界を再誕させる:世界は根本から創り直す必要がある!【願いの階梯:8】", - "世界を征服する:私たちが王になってやる!【願いの階梯:7】", - "契約者:あなたの願いは既に叶えられた。今も戦い続けている理由は、女神との契約があるからだ。【願いの階梯:なし】", - ].freeze - - WISH_TABLE = [ - WISH_TABLE_1_2, - WISH_TABLE_1_2, - WISH_TABLE_3_4, - WISH_TABLE_3_4, - WISH_TABLE_5_6, - WISH_TABLE_5_6, - ].freeze - - PERSONALITY_TABLE = %w{ - 可憐 冷静 勇敢 楽観主義 負けず嫌い コレクター気質 - クール 癒やし系 惚れやすい 悲観主義 泣きやすい お嬢様 - 純粋 頑固 辛辣 まじめ 落ち込みやすい 謙虚 - スマート ゆるふわ 好奇心旺盛 はらぺこ 華麗 狭いところが好き - 冷徹 朴念仁 王子様 目立ちたがり 過激 マゾヒスト - ダンディ あらあらうふふ 過保護 死にたがり 強い自尊心 サディスト - }.freeze - - YOUR_STORY_TABLE_MARGINALIA_1_2 = [ - "パブ/カフェー店員:あなたは霧の帝都に無数に存在するパブ、あるいは桜の帝都で増え始めたカフェーの店員です。", - "屋台の店員:― 屋台とは戦いだ。あなたは霧の帝都の至る所に存在する、屋台の店員です。商売敵は数え切れないくらい存在します。目指せ、ナンバーワン屋台!!", - "商人:がっぽがっぽ。お空に都市がやってきて、販路が増えたぞがっぽがっぽ。あなたは様々な商品を扱う商人です。小売からもうひとつの世界を股にかける交易商人まで、商いの道は果てしなく広がっています。", - "飛行船・船長:あなたはふたつの都市をつなぐ交通の要、飛行船の船長です! ところで最近、船長の間で変な噂がたっています。ふたつの世界のちょうど狭間を通過する瞬間に、怪物と戦う騎士の幻が見えるのだとかなんとか……。", - "飛行船駅員:あなたは飛行船発着場で働く駅員です。管制員から売店の職員まで、数多の人々によって飛行船は運航されています。", - "図書館司書/博物館学芸員:あなたは文化の保護、知識の継承を担っています。霧の帝都、桜の帝都のどちらにも、立派な図書館、博物館が存在します。有名なのは桜の帝都「桜花書籍館」と霧の帝都「図書博物館」でしょう。", - ].freeze - - YOUR_STORY_TABLE_MARGINALIA_3_4 = [ - "帝都警察:あなたは帝都警察に所属し、都市の平和を守っています。帝都警察は市民の憧れの職業であり、皆誇りをもって職務に励んでいます。", - "警察軍:あなたは都市の有事の際に出動するべく、日々訓練に励む軍人です。災害や大規模な犯罪が発生した時こそ、あなたの出番です。", - "寡黙なる霧(クラブ・マイクロフト):霧の女王に仕える秘密の騎士団。いわゆる諜報機関、スパイ組織の構成員です。あなたは日々、怪物の発生や犯罪組織の暗躍に目を光らせています。", - "桜機関(ブロッサムエンジン):あなたはこの世界を、ロアテラに喰われる前に滅ぼすことを決意し、桜機関に所属したエージェントです。しかし、まだメモリィズを使用していないのは、迷いがあるからなのか、何らかの思惑があるからなのかもしれません。", - "桜花教神官:「万物には桜が宿っています。我らの誇りたる桜を傷つけることがないように」あなたは桜花教の神官です。神官は日々大変忙しい生活を送っています。毎日の祭事に祭りの準備、そしてふらりと現れる桜の皇帝への対応……頑張ってくださいね?", - "妖精教神官:「妖精は、いつもあなたの行いを見守っています」あなたは妖精教の神官です。週に一度のお祈りの日、毎日の貧民街への炊き出し、迷子の保護、霧の宮殿から抜け出していった霧の女王の捜索等、大忙しの日々が待っています。", - ].freeze - - YOUR_STORY_TABLE_MARGINALIA_5_6 = [ - "流浪の民:あなたの祖先は、この世界に「都市の外側」があった時代に、この場所へ流れ着いてきた者です。この都市ではあまり見かけない髪、肌、目の色をしていたり、顔つきが少々異なっていたりします。", - "イーストエンド:あなたは霧の帝都の貧民街で暮らしています。何故か伝統的に、貧民街は「イーストエンド」と呼ばれており、その地名がそのまま「貧民」を意味する言葉にもなっています。", - "貴族:あなたは貴族として、民を守り、国を守ってきた一族の末裔です。遥かな空に、もうひとつの世界が現れても、異世界の騎士を交えた戦いが起きたとしても、あなたの使命は変わらず民と国を守ることなのです。", - "職人:あなたは何らかの技術を身に付けた職人です。時計職人から傘張り職人まで、あなたの技術がふたつの世界を支えているのです。", - "メイド/バトラー:あなたは貴族の屋敷や、宮殿、御所で働くメイド/バトラーや、その見習いです。ご主人さまのため、今日も職務に励むのです。", - "バックアップ:あなたはかつて桜の皇帝、霧の女王のバックアップとして作成された人造生命体です。うりふたつの容姿をしていますが、その記憶は厳重に封印されており、あなたを含め、誰もその真実を知る者はいません。", - ].freeze - - YOUR_STORY_TABLE_MARGINALIA = [ - YOUR_STORY_TABLE_MARGINALIA_1_2, - YOUR_STORY_TABLE_MARGINALIA_1_2, - YOUR_STORY_TABLE_MARGINALIA_3_4, - YOUR_STORY_TABLE_MARGINALIA_3_4, - YOUR_STORY_TABLE_MARGINALIA_5_6, - YOUR_STORY_TABLE_MARGINALIA_5_6, - ].freeze - - SITUATION_TABLE_MARGINALIA_1_2_3 = [ - "表のお仕事:生きていくにはお金がかかる。霧の女王様や総帥に頼ってばかりじゃいられない! さぁ今日も元気に出勤だ! パートナーと一緒に、どんなお仕事をしているか描写してみよう!", - "カフェーでのんびり:とてものんびりした時間。おいしい紅茶とあまーいお菓子。……滅びそうな世界だなんて、思えないよね。", - "路面電車:道路を電車が走るなんて不思議な気分。最新鋭の路面電車をご堪能あれ。さて、今日はどこへ行こうかな?", - "参拝:霧の帝都なら妖精教会、桜の帝都なら桜花教神社。お参りをすると、ちょっと自分の考えがまとまるような気がする。", - "アパルトメント:アーセルトレイと比べると、どうしても時代を感じてしまうアパルトメント。でもパートナーがいれば関係ない! せっかくだし、この世界でも思い出を作っていこう!", - "桜の皇帝に遭遇:すごく意味深な質問をされた後、皇帝陛下は答えを聞くことなく、にっこりと微笑んで去っていった。えっ、あれ本物だよね? 本物の皇帝だよね!?", - ].freeze - - SITUATION_TABLE_MARGINALIA_4_5_6 = [ - "暗闇会議:路地裏か、真夜中の私室か、夢の中か、ふとした瞬間に訪れた暗闇。「君たちは、永遠に続く苦しみを生きるか、その前に死ぬか、どちらが正しいと思う?」そんな声が聞こえた気がする。", - "東部暗黒街:霧の帝都で最も治安の悪い場所。けれど誰もが好きでそうなったわけじゃない。人によっては、ここの方が居心地が良いのかも。", - "帝都劇場:どちらの帝都にも、立派な劇場がある。最近では電気館なる、アーセルトレイでいう映画館もできてきたらしいよ? ちょっと行ってみない?", - "飛行船内:帝都の間を結ぶ飛行船。アーセルトレイのモノレールにも少し似ているけれど、もっとレトロな感じ。船内販売の美味しいアイスクリンは絶対食べておこう!", - "パブが私を呼んでいる:パブりに行こうぜ、バディ。愉快な音楽と、美味しい飲み物と、ちょっと癖の強い料理が私たちを待っている! 今夜も派手に騒ごうぜ!", - "霧の女王からの呼び出し:霧の女王陛下に呼び出され、宮殿へ向かう道中の会話。いったい何の用事なんだろう? 確か先週は、アーセルトレイの話をいっぱいしながら、美味しいお茶をごちそうになったなぁ。", - ].freeze - - SITUATION_TABLE_MARGINALIA = [ - SITUATION_TABLE_MARGINALIA_1_2_3, - SITUATION_TABLE_MARGINALIA_1_2_3, - SITUATION_TABLE_MARGINALIA_1_2_3, - SITUATION_TABLE_MARGINALIA_4_5_6, - SITUATION_TABLE_MARGINALIA_4_5_6, - SITUATION_TABLE_MARGINALIA_4_5_6, - ].freeze - - YOUR_STORY_TABLE_LETTER_1_2_3 = [ - "旅に出ていた:あなたが旅先にいる時に、世界の滅びはおとずれた。旅にでなければ、あの人と離れ離れにはならなかったのに。", - "生き別れの――:パートナーとは生き別れの兄弟姉妹、親子のような、親密な関係だった。", - "双子:あなたとパートナーは双子だった。どこにいても、きっとこの想いと鼓動は同じだ。", - "幼馴染:あなたとパートナーは幼馴染だった。", - "親友:きっとそれは、恋人や親子よりも深い友情だった。", - "隠しきれない本音:本当は隠すつもりだった本音が、手紙となるとどうしても漏れ出してしまう。", - ].freeze - - YOUR_STORY_TABLE_LETTER_4_5_6 = [ - "愛している:あなたはパートナーを愛している。何よりも、誰よりも、世界よりも。", - "パズル:あなたは手紙に本音を隠す。縦読みだったり、暗号だったり……きっとそれは照れ隠しなのだ。", - "恥ずかしい!!:かつて言葉では言えたのに、手紙となると素直になれない! どうしてだー!", - "インク、筆跡:インクの色、筆跡を見るだけで、その手紙の主が誰だかわかる。――もちろん、君だろう?", - "心の支え:心の支えにしているものがある。それはきっと、パートナーがくれたものだ。", - "共犯者:ふたりはかつて、何らかの共犯者だった。内容は、自分自身が知っているだろう?", - ].freeze - - YOUR_STORY_TABLE_LETTER = [ - YOUR_STORY_TABLE_LETTER_1_2_3, - YOUR_STORY_TABLE_LETTER_1_2_3, - YOUR_STORY_TABLE_LETTER_1_2_3, - YOUR_STORY_TABLE_LETTER_4_5_6, - YOUR_STORY_TABLE_LETTER_4_5_6, - YOUR_STORY_TABLE_LETTER_4_5_6, - ].freeze - - YOUR_STORY_TABLE_RECOLLECT_DOLL_1_2_3 = [ - "大好き:本当は、世界のことなんてどうでもいい。パートナーの方が大切。ずっとずっと大切なんだから。", - "いつか人間に:あなたはリコレクト・ドールではなく、人間になりたいと思っている。", - "永遠の命:遥かな未来を見てみたい。願わくば、パートナーと一緒に。", - "ふたりきり:あなたはパートナーと一緒にいることだけを大切なことだと考えている。", - "私は人形:……感情? それは必要なもの?", - "探検隊:あなたは荒廃したこの世界をどこまでも探検したいと思っている。", - ].freeze - - YOUR_STORY_TABLE_RECOLLECT_DOLL_4_5_6 = [ - "退屈な日々:あなたはこの荒廃した世界を退屈に思っている。", - "理想の私:あなたは、あなたの考えうる限り最高で完璧で理想的なリコレクト・ドールだ。", - "思弁的ドール:あなたは正直どこにもでかけたくない。いいじゃーん、ここからでも色々分かるって、あっ、ひっぱらないでー、あー。", - "使命の徒:あなたはリコレクト・ドールとしての使命を第一に思っている。", - "未知なる創造主:あなたはいつか人間に会ってみたいと思っている。", - "漠然とした不安:旅も、戦いも、その先に待つのが終わりの日々なら……。みんなはどうして、不安に思わないの……?", - ].freeze - - YOUR_STORY_TABLE_RECOLLECT_DOLL = [ - YOUR_STORY_TABLE_RECOLLECT_DOLL_1_2_3, - YOUR_STORY_TABLE_RECOLLECT_DOLL_1_2_3, - YOUR_STORY_TABLE_RECOLLECT_DOLL_1_2_3, - YOUR_STORY_TABLE_RECOLLECT_DOLL_4_5_6, - YOUR_STORY_TABLE_RECOLLECT_DOLL_4_5_6, - YOUR_STORY_TABLE_RECOLLECT_DOLL_4_5_6, - ].freeze - - SITUATION_TABLE_B_RECOLLECT_DOLL_1_2_3 = [ - "教室:かつて学校の教室だった場所。椅子と机が散乱している。", - "劇場:かつて大きな劇場だった場所。天井が崩落し、ステージは瓦礫に埋もれている。", - "遊園地:かつて遊園地と呼ばれていた場所。錆びついた骨組み、朽ちたステージ、観覧車の支柱は曲がって、今にも倒れそう。", - "民家:扉や窓が無い家屋。埃が積もった室内には、錆びた家具がそのままになっている。", - "音楽室:折れた譜面台や朽ちたピアノが放置された学校の一室。かつて音楽室と言われていた場所。", - "喫茶店:食器と家具が散乱し、埃が積もった飲食店跡。かつては喫茶店だった場所。", - ].freeze - - SITUATION_TABLE_B_RECOLLECT_DOLL_4_5_6 = [ - "図書館:ぼろぼろになった本と、倒れた本棚が放置された施設。かつて図書館だった場所。", - "高層ビル:壁面が崩れ、骨格だけになった高層建築。上層階からは荒廃都市全体が見渡せる。かつてはオフィスビルだった場所。", - "ショッピングモール:商店跡が建ち並ぶ施設。かつて大型ショッピングモールだった場所。", - "荒野:都市周辺に、地平線の果てまで広がる灰色の荒野。かつてはのどかな田園地帯だった。", - "駅:崩れた駅舎と、所々欠損した線路。かつて鉄道の駅だった場所。", - "公園:石化した木々と、朽ちたベンチが点在する公園跡。かつては人々のいこいの場所だった。", - ].freeze - - SITUATION_TABLE_B_RECOLLECT_DOLL = [ - SITUATION_TABLE_B_RECOLLECT_DOLL_1_2_3, - SITUATION_TABLE_B_RECOLLECT_DOLL_1_2_3, - SITUATION_TABLE_B_RECOLLECT_DOLL_1_2_3, - SITUATION_TABLE_B_RECOLLECT_DOLL_4_5_6, - SITUATION_TABLE_B_RECOLLECT_DOLL_4_5_6, - SITUATION_TABLE_B_RECOLLECT_DOLL_4_5_6, - ].freeze - - SITUATION_TABLE_C_RECOLLECT_DOLL_1_2_3 = [ - "仲良し:友達なのか、家族なのか。楽しそうによりそう2人の姿。", - "けんか:顔を真っ赤にしてにらみ合う2人の姿。どうやらけんかしてしまったらしい。", - "ダンス:手を取り、笑いながら、くるくると踊る2人の姿。", - "食事:美味しそうに食事を摂る人の姿。あーん。", - "読書:何かの本を熱心に読みふける人の姿。あの分厚い本は何?", - "おしゃべり:楽しそうにおしゃべりする人々の姿。楽しそう、うぅん、幸せそう、なのかな?", - ].freeze - - SITUATION_TABLE_C_RECOLLECT_DOLL_4_5_6 = [ - "イベント:笑顔で乾杯する人々の姿。誕生会? 結婚式? 何のイベントだろう?", - "家族:連れ添い歩く家族の姿。パパとママ……家族って、どんなもの?", - "友達:楽しそうに連れだって歩く、少年少女たちの姿。私たちは、友達……なのかな……?", - "恋人:人目を忍んで手を繋ぎ見つめ合う、2人の姿。わ、わわ、わー! これは見ちゃだめー!! ", - "別れ:涙を流しながら、別々の方向へ歩いて行く2人の姿。", - "怪物:身の丈の倍ほどもある竜のような怪物と、逃げ惑う人々の姿。", - ].freeze - - SITUATION_TABLE_C_RECOLLECT_DOLL = [ - SITUATION_TABLE_C_RECOLLECT_DOLL_1_2_3, - SITUATION_TABLE_C_RECOLLECT_DOLL_1_2_3, - SITUATION_TABLE_C_RECOLLECT_DOLL_1_2_3, - SITUATION_TABLE_C_RECOLLECT_DOLL_4_5_6, - SITUATION_TABLE_C_RECOLLECT_DOLL_4_5_6, - SITUATION_TABLE_C_RECOLLECT_DOLL_4_5_6, - ].freeze - - SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_1_2_3 = [ - "長い廊下:お喋りをしながら歩いていると、いつまで経っても目的地につかないながーい廊下。時々遭難者がでるの。", - "迷子の女の子発見:迷子の女の子に遭遇してしまった。道案内してあげよう。……でも、やけに古い形の制服だなぁ。", - "中庭のお茶会:お散歩していたらお茶会に招かれちゃった。みんなふたりの馴れ初めを聞きたいらしいぞ?", - "誰もいない教室:あれ? さっきまでみんないたのに……。今はふたりしかいないみたい。", - "学生寮:第3階層、シトラ女学院学生寮。まるで鳥籠のようだけれど、暮らしてみれば居心地は抜群。", - "音楽室:昼間なら合唱部の歌声が、夜ならとても静かな夜の風が聞こえる場所。", - ].freeze - - SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_4_5_6 = [ - "シトラ女学院旧校舎:地球時代からあったとされる、まるで神殿のような白く美しい旧校舎。立入禁止。でも内緒話にはうってつけ。", - "輝紡の塔:塔とは名ばかりの、各委員会が部屋を構える大きなお屋敷。よく迷子が出るという噂あり。", - "地下談話室:良く晴れた日の温室を、絵画と錯視で再現した談話室。雨の日でもぽかぽか。", - "中庭のさくら:第1階層、シトラ女学院の中庭には、とても美しいさくらが咲いています。これは地球時代からあるものなのだとか……。", - "約束の館:静かに祈りを捧げる場所。昔は礼拝堂と呼ばれていたとか。ここで愛の告白をすると、永遠の愛が得られるという噂も!", - "星詠の間:輝紡の塔、最上階の小さな一室。地球があった頃の星空を再現する、星空投影機が設置されています。", - ].freeze - - SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL = [ - SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_1_2_3, - SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_1_2_3, - SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_1_2_3, - SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_4_5_6, - SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_4_5_6, - SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_4_5_6, - ].freeze - - SITUATION_TABLE_ECLIPSE_1_2_3 = [ - "道行く人々、その全ての視線が、まるで俺達を値踏みしているようだ……。", - "かけられる言葉、その全てに何か裏があるように思える。俺達を騙そうとしているんじゃないか?", - "部屋から出たくない。世界の全てが俺を殺そうとしている。早く、早くステラバトルの夜を……。", - "何故こいつは、俺の顔を見て笑っているんだ?不快だ……殺してしまいたい……。", - "俺をひとりにしないでくれ、どこにも行かないでくれ、頼む、俺を孤独にしないでくれ……。", - "誰も俺達を信じない、誰も俺達を必要としない。俺には、お前だけいればいいんだ。", - ].freeze - - SITUATION_TABLE_ECLIPSE_4_5_6 = [ - "世界の全てがおかしくなってしまった。もはや、世界を救えるのは俺達だけだ。", - "ふたりの女神め、お前たちが黒幕だったのか。ステラバトルを終えたら、次はお前たちを殺してやる。", - "俺の願いは……何だったか……。ああ、いや、すまない。大丈夫だ、俺は冷静だ。本当に……ああ……。", - "風景のコントラストが、やけに強く見える。趣味の悪い絵画のようで気持ち悪い……。", - "何を食べても味が感じられない。ロアテラの力が、世界の法則にまで侵食したのだろうか……。", - "世界の全てがモノクロに見える。なんだこれは、ロアテラの力によるものなのか? 早く、早く世界を救わねば……。", - ].freeze - - SITUATION_TABLE_ECLIPSE = [ - SITUATION_TABLE_ECLIPSE_1_2_3, - SITUATION_TABLE_ECLIPSE_1_2_3, - SITUATION_TABLE_ECLIPSE_1_2_3, - SITUATION_TABLE_ECLIPSE_4_5_6, - SITUATION_TABLE_ECLIPSE_4_5_6, - SITUATION_TABLE_ECLIPSE_4_5_6, - ].freeze - - FRAGMENT_TABLE = %w{ - 出会い 水族館 動物園 絵本 童話 神話 - 怒った 笑った 泣いた 好き 愛情 憎悪 - 寒い 暑い 甘い 苦い お菓子 路地 - 部屋 身体 ぬくもり 毛布 空想 願い - 笑顔 味覚 映画 朗読 うた 音楽 - 視力 肌の色 聴力 声 痛覚 触覚 - }.freeze - - YOUR_STORY_TABLE_BRINGER_1_2_3 = [ - "肉親を失った:ブライトによる事件であなたは肉親を失った。", - "恋人を失った: ブライトによる事件であなたは恋人や伴侶を失った。", - "八つ当たり:あなたはやり場のない怒りを、ブリンガーとしての職務にぶつけている。", - "正義感:あなたがブライトを狩れば、助かる人がいる。", - "スカウト:あなたは何らかの才能を見出され、ブリンガーとなった。", - "冷徹なる者:あなたはフォージの生命を、冷徹に切り捨てられると見込まれスカウトされた。本当に?", - ].freeze - - YOUR_STORY_TABLE_BRINGER_4_5_6 = [ - "復讐:あなたはブライトという存在に復讐するために生きている。", - "ノブリス・オブリージュ:あなたはブリンガーであることを義務だと考えている。", - "世界を取り戻す:ラストヴライトを目指そう。君となら、世界を救えるはずだ。", - "愛情:あなたはフォージを愛してしまった。", - "歴戦のブリンガー:あなたのパートナーはフォージのフラグメントを1~3個失った状態で作成する。", - "他階層出身:あなたは他の階層から第753層へ来た折に、世界の崩壊に巻き込まれた。", - ].freeze - - YOUR_STORY_TABLE_BRINGER = [ - YOUR_STORY_TABLE_BRINGER_1_2_3, - YOUR_STORY_TABLE_BRINGER_1_2_3, - YOUR_STORY_TABLE_BRINGER_1_2_3, - YOUR_STORY_TABLE_BRINGER_4_5_6, - YOUR_STORY_TABLE_BRINGER_4_5_6, - YOUR_STORY_TABLE_BRINGER_4_5_6, - ].freeze - - YOUR_STORY_TABLE_FORGE_1_2_3 = [ - "信頼:あなたはパートナーを信頼している。あなたとなら大丈夫。", - "愛情:あなたはパートナーを愛している。自分はフォージなのに、こんな感情を抱いても良いのだろうか。", - "利用:あなたはパートナーを利用して、何かを成そうとしている。", - "正義感:あなたが戦い続ければ、世界は維持される。", - "気になる:パートナーが気になる。気になるの。す、好きとかじゃないし。気になるだけ。", - "人形:あなたは無感情に、ただ任務を遂行し続ける。", - ].freeze - - YOUR_STORY_TABLE_FORGE_4_5_6 = [ - "失敗作:あなたは製造段階で問題が発生している。あなたはフラグメントを1個失う。", - "ノブリス・オブリージュ:あなたはフォージであることを義務だと考えている。", - "世界を取り戻す:ラストヴライトを目指そう。パートナーとなら、世界を救えるはずだ。", - "戦いたくない:あなたは戦いが嫌いだ。でもパートナーのためなら……。", - "自傷癖:どうせ死ぬなら、今傷ついても同じでしょ?", - "過去の記憶:あなたの元になった魂の輝き、その記憶をあなたは持っている。", - ].freeze - - YOUR_STORY_TABLE_FORGE = [ - YOUR_STORY_TABLE_FORGE_1_2_3, - YOUR_STORY_TABLE_FORGE_1_2_3, - YOUR_STORY_TABLE_FORGE_1_2_3, - YOUR_STORY_TABLE_FORGE_4_5_6, - YOUR_STORY_TABLE_FORGE_4_5_6, - YOUR_STORY_TABLE_FORGE_4_5_6, - ].freeze - - SITUATION_TABLE_ALT_LEVOOT_1_2_3 = [ - "張り込み中:パートナーがあんぱんとコーヒーを買ってきた。ひとまず腹ごしらえだ!", - "張り込み中:被疑者の部屋の窓にはカーテンがかかっている。薄暗いし、眠っているのかもしれない。はぁ、こっちも眠いぞ……。", - "追走劇:ブライト被疑者が逃走している。逃げるということは何かやましいことがあるのだろう。行くぞ!", - "追走劇:日常会話の最後に、他のステラナイトから被疑者確保の救援依頼が入る。手を貸してやるとしましょうか。", - "引き渡し後:大人しくつかまったブライト被疑者を引き渡した後。さて、何か食べに行こうか。", - "引き渡し後:被疑者を引き渡した後。逮捕の為に色々壊したりしてしまったので、報告書を書かねば。手伝ってくれよぉ……。", - ].freeze - - SITUATION_TABLE_ALT_LEVOOT_4_5_6 = [ - "非番:今日は何もなければこのまま休みだ。たまにはどこかに出かけるか?", - "非番:何か良い匂いがする。……パートナーが手料理を作ってくれた!?", - "殺人現場:ブライトの凶行の現場。現場検証に立ち会うことになったが……。", - "殺人現場:ブライトに殺されたのは、あなたの懇意にしていた情報屋だった。許さねぇぞ……。", - "寿命を数える:あと、パートナーは何日生きられるのか。その日になったら、俺はこいつを殺せるのか。", - "記念日:フォージとの記念日は毎月ある。一周年がないから、毎月なんだ。", - ].freeze - - SITUATION_TABLE_ALT_LEVOOT = [ - SITUATION_TABLE_ALT_LEVOOT_1_2_3, - SITUATION_TABLE_ALT_LEVOOT_1_2_3, - SITUATION_TABLE_ALT_LEVOOT_1_2_3, - SITUATION_TABLE_ALT_LEVOOT_4_5_6, - SITUATION_TABLE_ALT_LEVOOT_4_5_6, - SITUATION_TABLE_ALT_LEVOOT_4_5_6, - ].freeze - - TABLES = { - "TT" => D66GridTable.new( - "お題表", - THEME_TABLE - ), - "STA" => Table.new( - "シチュエーション表A:時間", - "1D6", - SITUATION_TABLE_A - ), - "STB" => D66GridTable.new( - "シチュエーション表B:場所", - SITUATION_TABLE_B - ), - "STB21" => Table.new( - "シチュエーション表Bその2:学園編 アーセルトレイ公立大学", - "1D6", - SITUATION_TABLE_B2_1 - ), - "STB22" => Table.new( - "シチュエーション表Bその2:学園編 イデアグロリア芸術総合大学", - "1D6", - SITUATION_TABLE_B2_2 - ), - "STB23" => Table.new( - "シチュエーション表Bその2:学園編 シトラ女学院", - "1D6", - SITUATION_TABLE_B2_3 - ), - "STB24" => Table.new( - "シチュエーション表Bその2:学園編 フィロソフィア大学", - "1D6", - SITUATION_TABLE_B2_4 - ), - "STB25" => Table.new( - "シチュエーション表Bその2:学園編 聖アージェティア学園", - "1D6", - SITUATION_TABLE_B2_5 - ), - "STB26" => Table.new( - "シチュエーション表Bその2:学園編 スポーン・オブ・アーセルトレイ", - "1D6", - SITUATION_TABLE_B2_6 - ), - "STC" => D66GridTable.new( - "シチュエーション表C:話題", - SITUATION_TABLE_C - ), - "GAT" => Table.new( - "所属組織決定", - "1D6", - GAKUEN_TABLE - ), - "HOT" => D66GridTable.new( - "希望表", - HOPE_TABLE - ), - "DET" => D66GridTable.new( - "絶望表", - DESPAIR_TABLE - ), - "WIT" => D66GridTable.new( - "願い事表", - WISH_TABLE - ), - "YST" => D66GridTable.new( - "あなたの物語表", - YOUR_STORY_TABLE - ), - "YSTA" => D66GridTable.new( - "あなたの物語表:異世界", - YOUR_STORY_TABLE_ANOTHER_WORLD - ), - "YSTM" => D66GridTable.new( - "あなたの物語表:マルジナリア世界", - YOUR_STORY_TABLE_MARGINALIA - ), - "STM" => D66GridTable.new( - "シチュエーション表:マルジナリア世界", - SITUATION_TABLE_MARGINALIA - ), - "YSTL" => D66GridTable.new( - "あなたの物語表:手紙世界", - YOUR_STORY_TABLE_LETTER - ), - "YSTR" => D66GridTable.new( - "あなたの物語表:リコレクト・ドール", - YOUR_STORY_TABLE_RECOLLECT_DOLL - ), - "STBR" => D66GridTable.new( - "シチュエーション表B:場所(リコレクト・ドール)", - SITUATION_TABLE_B_RECOLLECT_DOLL - ), - "STCR" => D66GridTable.new( - "シチュエーション表C:リコレクト", - SITUATION_TABLE_C_RECOLLECT_DOLL - ), - "STBS" => D66GridTable.new( - "シチュエーション表B:シトラセッティング", - SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL - ), - "STE" => D66GridTable.new( - "シチュエーション表:エクリプス専用", - SITUATION_TABLE_ECLIPSE - ), - "YSTB" => D66GridTable.new( - "あなたの物語表:ブリンガー", - YOUR_STORY_TABLE_BRINGER - ), - "YSTF" => D66GridTable.new( - "あなたの物語表:フォージ", - YOUR_STORY_TABLE_FORGE - ), - "STAL" => D66GridTable.new( - "シチュエーション表:オルトリヴート", - SITUATION_TABLE_ALT_LEVOOT - ), - }.freeze - - setPrefixes(['\d+SK\d?(,\d>\d)*', 'STB2', 'ALLS', 'PET', 'FT\d*'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/SterileLife.rb b/src/src_bcdice/diceBot/SterileLife.rb deleted file mode 100644 index ce0980b9b..000000000 --- a/src/src_bcdice/diceBot/SterileLife.rb +++ /dev/null @@ -1,449 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class SterileLife < DiceBot - # ゲームシステムの識別子 - ID = 'SterileLife' - - # ゲームシステム名 - NAME = 'ステラーライフTRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'すてらあらいふTRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <= single || dice == triple then success += 1 end - if (dice + correction).to_i >= double || dice == triple then success += 1 end - if dice == triple then success += 1 end # unless triple == -1 3成功はダイス目一致時のみ - if dicetext == "" - dicetext = dice.to_s - corrected = (dice + correction).to_s - else - dicetext = dicetext + "," + dice.to_s - corrected = corrected + "," + (dice + correction).to_s - end - end - - if correction == 0 - result = "(#{dicetext}) > 成功数#{success}" - end - - if correction > 0 - result = "(#{dicetext}) +#{correction} > (#{corrected}) > 成功数#{success}" - end - - if correction < 0 - result = "(#{dicetext}) #{correction} > (#{corrected}) > 成功数#{success}" - end - - return result - end - - # 1D10 ロール用 - def get_table_by_1d10(table) - dice, = roll(1, 10) - - text = table[dice - 1] - - indexText = (dice - 1).to_s - - return '1', indexText if text.nil? - - return text, indexText - end - - # D1010 ロール用 - def get_table_by_d1010(table) - dice1, = roll(1, 10) - dice2, = roll(1, 10) - - num = (dice1 - 1) * 10 + (dice2 - 1) - - text = table[num] - - indexText = "#{dice1 - 1}#{dice2 - 1}" - - return '1', indexText if text.nil? - - return text, indexText - end - - # D510 ロール用 - def get_table_by_d510(table) - dice1, = roll(1, 10) - dice2, = roll(1, 10) - - num = ((dice1 - 1) / 2) * 10 + (dice2 - 1) - - text = table[num] - - indexText = "#{dice1 - 1}#{dice2 - 1}" - - return '1', indexText if text.nil? - - return text, indexText - end - - # 船名接頭辞表 - def get_shipprefix_table - table = [ - 'ISS(独立宇宙船)', - 'PCS(惑星運搬船)', - 'NSS(中立星間船)', - 'SMS(星間商船)', - 'PSS(民間宇宙船)', - 'CIS(勅許独立船)', - 'FTS(自由貿易船)', - 'OES(外縁探検船)', - 'SSS(主権星間船)', - 'HMS(陛下の船)' - ] - return get_table_by_1d10(table) - end - - # 船名前半表 - def get_shipnameformer_table - table = [ - 'ブラック', 'ホワイト', 'レッド', 'ブルー', 'グリーン', 'パープル', 'ライラック', 'ブラウン', 'シルバー', 'ゴールド', - 'ネイビー', 'マリン', 'オーシャン', 'アクア', 'セイル', 'アンカー', 'パイレーツ', 'プライヴァティア', 'アルマダ', 'フロティラ', - 'ギャリソン', 'タンク', 'センチネル', 'スクァッド', 'トループ', 'フロント', 'オフェンシブ', 'ヴァンガード', 'オーダー', 'フラッグ', - 'ゲイザー', 'アストロ', 'ステラー', 'ギャラクティック', 'スターリー', 'ミルキー', 'プラネタリー', 'ゾディアック', 'ポラリス', 'イクェータ', - 'アイアンクラッド', 'サイエンス', 'ストーン', 'ソリッド', 'ウッド', 'ストック', 'フロー', 'ブレイズ', 'ディヴァイン', 'グロリアス', - 'ドラゴン', 'コヨーテ', 'ペガサス', 'カーバンクル', 'ガーゴイル', 'バジリスク', 'フェニックス', 'フェンリル', 'ケルベロス', 'キマイラ', - 'ジュラフ', 'ディアー', 'ゼブラ', 'ホエール', 'ラクーン', 'キャメル', 'ペンギン', 'リザード', 'サーバル', 'エルク', - 'フリー', 'ライト', 'リベラル', 'リッチ', 'エコノミー', 'マーケット', 'ナショナル', 'ソーシャル', 'エコロジカル', 'ナチュラル', - 'ロイヤル', 'プリンシパル', 'インペリアル', 'マジェスティック', 'ノーブル', 'ロード', 'ハイネス', 'デューク', 'カウント', 'バロン', - 'スモーク', 'クリア', 'ブリザード', 'ゲイル', 'ミスト', 'ヘイル', 'スノウ', 'ライトニング', 'サンダー', '(PC1人の名前)' - ] - return get_table_by_d1010(table) - end - - # 船名後半表 - def get_shipnamelatter_table - table = [ - 'ローズ', 'ダンデリオン', 'オーキッド', 'アザリア', 'スウォードリリー', 'アイリス', 'ラベンダー', 'プロテア', 'グラジオラス', 'マグノリア', - 'ライナー', 'カッター', 'フライター', 'フェリー', 'バルジ', 'クルーザー', 'クラフト', 'リガー', 'キール', 'ヴェッセル', - 'リミテッド', 'インク', 'マーチャント', 'エクスペディション', 'コンボイ', 'キャラバン', 'コマース', 'レティニュー', 'アドバイザリー', 'コンサルティング', - 'テレスコープ', 'オブザーバー', 'グラス', 'コスモス', 'ヘブン', 'ノート', 'ロット', 'スペースフェアラー', 'ノマド', - 'ブローカー', 'ディーラー', 'ダイバー', 'ドライバー', 'アドベンチャラー', 'ランナー', 'ウォーカー', 'トラベラー', 'トレーダー', 'エクスプローラー', - 'キャット', 'パンサー', 'ライオン', 'ピューマ', 'レオパルド', 'タイガー', 'ジャガー', 'オセロット', 'リンクス', 'チーター', - 'ウォルフ', 'カメレオン', 'クラブ', 'オスカー', 'シャーク', 'イーグル', 'コンドル', 'ドルフィン', 'サウルス', 'フィッシュ', - 'コンキスタドール', 'フサリア', 'ナイト', 'コサック', 'ヘタイロイ', 'バーサーカー', 'レギオン', 'ウォリアー', 'テルシオ', 'ライダー', - 'ルール', 'ディメイン', 'レイン', 'ジャスティス', 'エンクレーブ', 'ステート', 'カントリー', 'レルム', 'ドミニオン', 'ソブリン', - 'ストーム', 'テンペスト', 'アヴァランチ', 'ストライク', 'フォール', 'クエイク', 'ハリケーン', 'ブラスター', 'ブリザード', '(PC 1人の名前)' - ] - return get_table_by_d1010(table) - end - - # アバターアルファベット表① - def get_avataralphabetfirst_table - table = [ - 'A', 'F', 'G', 'I', 'J', 'K', 'R', 'S', 'T', 'V' - ] - return get_table_by_1d10(table) - end - - # アバターアルファベット表② - def get_avataralphabetsecond_table - table = [ - 'D', 'F', 'L', 'M', 'N', 'O', 'R', 'S', 'X', 'Z' - ] - return get_table_by_1d10(table) - end - - # ランダムNPC艦 - def get_randomnpcship_table - table = [ - '装甲+20(HP+400)', '装甲+20(HP+400)', '〈電磁パルスフィールド〉1基', '〈中性粒子ビーム砲〉2基', '〈バリアフィールド〉2基', - '装甲+20(HP+400)', '装甲+20(HP+400)', '〈電磁パルスフィールド〉1基 〈高機動ミサイル〉2基', '〈バリアフィールド〉2基', - '装甲+20(HP+400)', '装甲+20(HP+400)', '〈リサイクルフォージ〉', '〈高機動ミサイル〉2基', '〈バリアフィールド〉2基', - '装甲+20(HP+400)', '装甲+20(HP+400)', '〈リサイクルフォージ〉', '〈高機動ミサイル〉2基', '〈レーザーディフェンス〉2基', - '装甲+20(HP+400)', '〈ホーミング量子ビーム〉2基', '〈高圧縮精製装置〉', '〈アタックドローン〉1基 〈レーザーディフェンス〉2基', - '装甲+20(HP+400)', '〈ホーミング量子ビーム〉2基', '〈高圧縮精製装置〉', '〈爆縮高エネルギービーム砲〉2基 〈レーザーディフェンス〉2基', - '装甲+20(HP+400)', '〈ホーミング量子ビーム〉2基', '〈艦載メタルディテクター〉', '〈マグネティックアロイミサイル〉2基', '〈艦内防護装甲〉', - '装甲+20(HP+400)', '〈ロングランスミサイル〉2基', '〈「スターブレイカー」のハリボテ〉', '〈ドローンアバター〉1基 装甲+40(HP+800)', - '装甲+20(HP+400)', '〈ロングランスミサイル〉2基', '〈中性粒子ビーム砲〉2基', '〈拡散粒子ビーム砲〉2基 装甲+40(HP+800)', - '装甲+20(HP+400)', '〈ロングランスミサイル〉2基', '〈中性粒子ビーム砲〉2基', '〈マイクロミサイルポッド〉2基', '装甲+40(HP+800)' - ] - return get_table_by_d510(table) - end - - # ランダムイベント表 - def get_randomevent_table - table = [ - # 0 - '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', - # 1 - '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '巨大暗黒星雲 この星系ではビーム属性の攻撃の判定で達成値-1', '超新星残骸 この星系では実体弾属性の攻撃の判定で達成値-1', 'C型アステロイド 推進剤400を獲得', '氷のアステロイド群 推進剤500を獲得', '巨大アイスブロック 推進剤600を獲得', '資源アステロイド 推進剤200、鋼材200を獲得', '枯渇彗星核 実体弾攻撃でダメージ200を出すと推進剤600を獲得', '放棄されたドローン 鋼材200、希少金属1を獲得', - # 2 - '金属塊 鋼材300を獲得', 'S型アステロイド 鋼材400を獲得', 'S型アステロイド 鋼材400を獲得', 'スペースデブリ 鋼材500を獲得', 'スペースデブリ 鋼材500を獲得', 'M型アステロイド 鋼材600を獲得', '艦船の残骸 鋼材700を獲得', '大資源アステロイド 推進剤300、鋼材300を獲得', '小惑星の欠片 ビーム攻撃でダメージ200を出すと鋼材600を獲得', '希少金属アステロイド 希少金属2を獲得', - # 3 - '砕けた惑星核 希少金属3を獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '氷のアステロイド群 推進剤500を獲得', '巨大アイスブロック 推進剤600を獲得', - # 4 - '大資源アステロイド 推進剤300、鋼材300を獲得', '氷火山アステロイド 推進剤300、希少金属1を獲得', 'オーガニックアステロイド 推進剤700を獲得', '金属塊 鋼材300を獲得', 'スペースデブリ 鋼材500を獲得', 'M型アステロイド 鋼材600を獲得', '放棄されたモジュール 鋼材300、希少金属1を獲得', '砕けた惑星核 希少金属3を獲得', 'レアアースアステロイド 希少金属4を獲得', 'レアアースアステロイド 希少金属4を獲得' - ] - return get_table_by_d510(table) - end - - # お宝特徴表 - def get_treasurespec_table - table = [ - '恐竜を模した(価値+3)', 'ヘビを模した(価値+1)', '魚を模した(価値+1)', 'イヌを模した(価値+1)', 'ウマを模した(価値+1)', 'ネズミを模した(価値+1)', 'ウサギを模した(価値+1)', 'クマを模した(価値+1)', 'ネコを模した(価値+1)', '鳥を模した(価値+2)', - '触り心地の良い(価値+1)', 'ふかふかした(価値+1)', 'ふわふわの', '柔らかな', 'なめらかな', 'かすかに震える', 'とげとげした', '硬質な', 'ザラッとした', '持ちやすい(価値+1)', - '美しい(価値+1)', 'きれいな', '麗しの(価値+1)', '華美な', '派手な', 'ほのかに発光する', '色とりどりの', '鮮やかな', '変化に富む', '可憐な(価値+1)', - 'しゃべる(価値+1)', '泣き声がする', '鳴き声がする', '歌が聞こえる(価値+1)', '音を吸い込む', '静寂の', '聞き上手の', '良い音の', '共鳴する', '響きの良い(価値+1)', - 'おいしい匂いがする(価値+1)', '血の匂いがする', '動物の匂いがする', '草いきれの匂いがする', '上品な香りがする(価値+1)', '目の醒める匂いがする', '甘い匂いがする', '柑橘系の香りがする', '清冽な香りがする', '安らぎの香りがする(価値+1)', - '好意を感じさせる(価値+1)', '痛みを感じさせる', '怒りを感じさせる', '苦悶を感じさせる', '弱さを感じさせる', '癒やしを感じさせる(価値+1)', '母性を感じさせる', '優しさを感じさせる', '力強さを感じさせる', '年月を感じさせる(価値+1)', - '洗練された(価値+1)', 'とろけるような', '不安定な', 'まろやかな', '穏やかな', '柔和な', 'オーガニックな(価値+1)', 'ストイックな', 'シンプルな', 'ナチュラルな(価値+1)', - '気高き(価値+1)', '艶やかな', '気取った', '気位の高い', 'リッチな', '気品漂う', '高潔な', '格調高い(価値+1)', '典雅な', 'ロイヤルな(価値+1)', - '闇に溶けるような(価値+1)', '血塗られた', '片翼の', '円環の', '「機関」の', 'オッドアイの', '片目の', '堕天使の', '二重人格の(価値+1)', '輝きを纏う(価値+1)', - '秘密を持つ(価値+2)', 'いわく付きの(価値+1)', '歴史ある(価値+1)', '奪い合われた(価値+1)', '受け継がれた(価値+1)', '失われた文化の(価値+1)', '謎に満ちた(価値+1)', '廃墟で見つかった(価値+1)', 'あのシリーズの1つ(価値+1)', '寵愛を受けた(価値+3)' - ] - return get_table_by_d1010(table) - end - - # お宝形容表 - def get_treasureappearance_table - table = [ - 'ブレスト(価値+3)', 'ホーリー(価値+1)', 'ワンダフル(価値+1)', 'シャイニング(価値+1)', 'スーパー(価値+1)', 'エクセレント(価値+1)', 'グロリアス(価値+1)', 'グレート(価値+1)', 'フラワリー(価値+1)', 'ミラクル(価値+2)', - 'アース(価値+1)', 'サバンナ(価値+1)', 'マウンテン', 'リバー', 'フォレスト', 'ジャングル', 'デザート', 'ハイランド', 'レイク', 'オーシャン(価値+1)', - 'スペース(価値+1)', 'コスモ', 'ワールド(価値+1)', 'ユニバーサル', 'スカイ', 'メテオール', 'コメット', 'ルナティック', 'プラネタリー', 'ステラー(価値+1)', - 'アンティーク(価値+1)', 'エンシェント', 'オールド', 'エルダー(価値+1)', 'カスタム', 'レーテスト', 'アバンギャルド', 'アドバンスト', 'カティングエッジ', 'フューチャー(価値+1)', - 'ダーク(価値+1)', 'ソイル', 'ウォーター', 'アイス', 'フィジカル(価値+1)', 'マインド', 'フレイム', 'ウィンド', 'サンダー', 'ライト(価値+1)', - '闇の(価値+1)', '土の', '水の', '氷の', '物理', '心の(価値+1)', '炎の', '風の', '雷の', '光の(価値+1)', - '骨董品の(価値+1)', 'いにしえの', '古き', '長老の', '特注', '最新型', '前衛的(価値+1)', '発展的', '先進的', '未来的(価値+1)', - '宇宙(価値+1)', '乾坤', '世界', '森羅万象', '空の', '流星の', '隕石の', '月の(価値+1)', '惑星', '星の(価値+1)', - '大地の(価値+1)', '草原の', '山の', '川の', '森の', '林の', '砂漠の', '高地の', '湖の(価値+1)', '海の(価値+1)', - '祝福の(価値+2)', '神聖な(価値+1)', '不思議な(価値+1)', '輝かしい(価値+1)', '超(価値+1)', '素晴らしい(価値+1)', '栄光の(価値+1)', '偉大な(価値+1)', '華の(価値+1)', '奇跡の(価値+3)' - ] - return get_table_by_d1010(table) - end - - # お宝外見表 - def get_treasurematerial_table - table = [ - 'ダイヤモンド(価値+3)', 'ジェイド(価値+1)', 'エメラルド(価値+1)', 'トパーズ(価値+1)', 'サファイア(価値+1)', 'ルビー(価値+1)', 'ガーネット(価値+1)', 'ラピスラズリ(価値+1)', 'アメジスト(価値+1)', 'スモーキークォーツ(価値+2)', - 'ゴールデン(価値+1)', 'チタン(価値+1)', 'ブリキの', 'アイアン', 'スチール', '真鍮の', 'ブロンズ', 'カッパー', 'シルバー', 'プラチナ(価値+1)', - 'マーブル(価値+1)', 'グラナイト', 'オブシディアン(価値+1)', 'スレート', 'ライムストーン', 'ガラス', 'リネン', 'ビロード', 'コットン', 'シルク(価値+1)', - 'セラミック(価値+1)', 'プラスチック', 'レンガの', 'カーボン(価値+1)', 'コンクリート', 'クォーツの', 'オークの', 'レッドウッド', 'スプルースの', 'マホガニーの(価値+1)', - 'ブラック(価値+1)', 'オレンジ', 'グレー', 'ブルー', 'マジェンタ(価値+1)', 'グリーン', 'レッド', 'パープル', 'イエロー', 'ホワイト(価値+1)', - '黒い(価値+1)', '橙の', '灰色の', '青い', 'インディゴ', '緑の(価値+1)', '赤い', '紫の', '黄色い', '白い(価値+1)', - '磁器の(価値+1)', '陶器の', '粘土の', '紙の', '石膏の', '水晶の', 'チークの(価値+1)', 'ヒノキの', '杉の', 'ウォルナット(価値+1)', - '大理石の(価値+1)', '御影石の', '黒曜石の', '粘板岩の', '石灰岩の', '玻璃の', '麻の', '天鵞絨の(価値+1)', '綿の', '絹の(価値+1)', - '黄金の(価値+1)', 'アルミニウム', '錫の', '鉄の', '鋼鉄の', '鉛の', '青銅の', '銅の', '銀の(価値+1)', '白金の(価値+1)', - '金剛石の(価値+2)', '翡翠の(価値+1)', '翠玉の(価値+1)', '黄玉の(価値+1)', '蒼玉の(価値+1)', '紅玉の(価値+1)', '紅榴石の(価値+1)', '瑠璃の(価値+1)', '紫水晶の(価値+1)', '煙水晶の(価値+3)' - ] - return get_table_by_d1010(table) - end - - # お宝物品表 - def get_treasureobject_table - table = [ - 'フルート(価値+3)', 'オカリナ(価値+1)', 'ギター(価値+1)', 'ピアノ(価値+1)', 'ドラム(価値+1)', 'ティンパニー(価値+1)', '太鼓(価値+1)', 'トランペット(価値+1)', 'ハープ(価値+1)', 'マイク(価値+2)', - 'ブランコ(価値+1)', '人形(価値+1)', 'シーソー', 'ベンチ', 'すべり台', 'ラケット', 'ミニカー', 'コースター', 'ボール', 'オーブ(価値+1)', - '皿(価値+1)', 'プレート', 'ティーセット(価値+1)', '箸', 'フォーク', 'スプーン', 'ナイフ', 'フライパン', '鍋', 'カップ(価値+1)', - '王冠(価値+1)', '櫛', 'イヤリング', '首飾り(価値+1)', '腕輪', '指輪', 'ブローチ', 'サークレット', 'チョーカー', '羽飾り(価値+1)', - 'ロッド(価値+1)', 'ウィップ', 'ハンマー', 'アックス', 'ブレイド(価値+1)', 'セイバー', 'シールド', 'クラブ', 'ランス', 'ソード(価値+1)', - '錫杖(価値+1)', '鞭', '槌', '斧', '刃', '刀(価値+1)', '盾', '棍棒', '槍', '剣(価値+1)', - '扇(価値+1)', 'ボトル', '燭台', 'ペン', '仮面', 'バッグ', '時計(価値+1)', '傘', '徽章', '鏡(価値+1)', - 'スマートドレス(価値+1)', 'タッチパネル', 'インプットグローブ', 'プロジェクター', 'ディテクター', 'アナライザー', 'インジェクター', 'エアーボトル(価値+1)', 'ワイヤーロンチャー', 'ジェットパック(価値+1)', - 'ランプ(価値+1)', 'ドア', '窓', '灯籠', '棚', 'キッチン', 'ソファ', '椅子', 'テーブル(価値+1)', 'ベッド(価値+1)', - '人物像(価値+2)', 'フィギュア(価値+1)', 'モデル(価値+1)', '植物像(価値+1)', '動物像(価値+1)', 'レリーフ(価値+1)', 'オブジェ(価値+1)', 'ドーム(価値+1)', 'タペストリー(価値+1)', '絵画(価値+3)' - ] - return get_table_by_d1010(table) - end - - # 超未来の技術 - def get_sftechnology_table - table = [ - '船の種、家の種、ビルの種:発達したバイオテクノロジーにより、光合成をしながらカーボン製品を作り出す「種」が作られました。土に植えると一軒家に育ったり、立派な木になってコップの実をならせたりします。', - 'ワープリング:星と星の間を結ぶ空間のトンネルを作り出すのが、「ワープリング」です。中に入ると超光速で空間が周回しており、数時間から数日で数光年先の星に辿り着くことができます。', - '擬似重力発生装置:超未来の宇宙船や宇宙ステーションでは、回転による遠心力などを活用して、擬似的に床に引っ張られる力を発生させています。パラメーターを変えれば、物の重さも体重も思いのままです。', - 'アニマフォーム:ファブリックやマイクロマシンを使って作った人工の「動物」に、ネットワーク接続して「乗り移る」技術です。動物の姿で動物になりきって、自然の中を探索できます。', - 'スマートテクスタイル:布やロープが自由自在に動きます。カーボンナノチューブなどの導電性の素材を織り込むことで繊維自体が電子機器として稼働・変形し、ボタンのセンサーと連動して様々な機能を果たします。', - 'パーソナルバリア:人間の周囲を囲うバリアーで、身体の各所に付けた発生機から生まれた電磁フィールドが宇宙空間を飛び交う危険な宇宙線を防いでくれます。船外活動には必須の装備です。', - 'フィンガーティップデザイン:指と手首を動かしながら頭の中でイメージを作ることで、あっという間に3D のデザインを作成できます。超未来は「繊維やケーブルが動く」ため、モノ作りがかなり複雑になっているのです。', - 'ジェットパック:個人用の強力なジェット噴射機で、誰でも空に飛び上がることができます。長く使っていると高熱を発するので注意。宇宙空間では、これとスマートワイヤーを組み合わせて移動に使います。', - 'メンタルプロジェクション:ヒトの心は、様々な価値観や性格が溶け合う複層的なもの。その複雑な姿を脳波投影で視界に映して、心の整理を付けやすくする技術です。しばしば「天使と悪魔」のビジュアルを付けます。', - 'スライムソファ:球体状の大きなソファで、ポリマーとカーボン素材でできており、自在に変形させたり柔らかさを変えたりできます。床や壁に吸着してくれるため、無重力空間では身体を固定してくれます。' - ] - return get_table_by_1d10(table) - end - - # 超未来のエンタメ - def get_sfentertainment_table - table = [ - 'ホロシアター:劇場いっぱいにホログラムを展開して、広大な大地や美しい空の上などで大冒険のスペクタクルショーを「その場にいるような」臨場感で楽しむことができます。', - 'アバターファイト!:手の平サイズの小型の人型アバターを思念で操って、ドームの中でバトルを楽しみます。フィールドはホログラム生成で、ビームやミサイルもホログラム再現なので、損傷の心配はありません。', - 'VRゲーム:外接電脳さえ持っていれば、VR ゴーグルがなくても仮想現実世界にダイブできます。圧倒的なリアリティを持つ仮想世界を堪能し、育成や対戦、パズルなど様々なゲームを楽しめます。', - 'ハイド・アンド・シーク:惑星全域を舞台にしたかくれんぼです。第七感覚をフル活用して都市の全域を見て回り、ときには動物たちからも情報を集めながら、この星のどこかにいる鬼を見つけ出しましょう。', - 'アロマバス:リラックスできる香りがいっぱいのお湯に浸かって、心身を癒やします。神経に疲れが溜まる超未来。ハーブの香りを思い切り吸い込んで、緊張を溶きほぐします。', - 'ロジックパズル:外接電脳をフル活用しないと解けないような、難解なパズルに挑戦します。一見すると無関係な2つの要素を組み合わせることで、意外な手がかりが見つかります。', - 'ホロアスレチック:コンクリートや植物性ビルなどを使って組み立てた殺風景なアスレチックを、ホログラムで美しくダイナミックに彩ります。超未来人の高い運動能力を存分に発揮できます。', - 'スカイレース:超未来なので人は空を飛べます。トリブリードは自前の翼で、そうでなくても自分で設計したグライダーなどで、空中にホロ投影されるリングを通過しながら、複雑なコースを高速で飛びます。', - 'ミステリーハウス:宝探しや事件解決など、規定時間以内に「謎」を解くイベントです。屋敷の中には手がかりが散りばめられており、VRでもリアルでも手軽に探偵遊びを楽しむことができます。', - 'SNS:超未来のSNS は濃密にして苛烈!超高速でやり取りが行いながら、惑星の多くの人々と触れ合い交流を深めます。惑星ごとの微妙な文化の違いに注意を払いましょう。' - ] - return get_table_by_1d10(table) - end - - # 超未来の文化 - def get_sfculture_table - table = [ - 'リスペクト・ユー:超未来の社会では、他人に対する「リスペクト」が何より大事にされています。見てもらうこと、尊敬されることを目指して、今日も人々はSNSで活動したり、働いたりします。', - 'マインドミュージック:手を振るうことで感情を音色にする未来的な音楽です。VRやホログラフィと組み合わせれば映像効果も付き、思うままに自分の心から湧き出る音楽を演奏することができます。', - 'レプロドュィーユ:オペラやバレエ、歌舞伎、ミュージカルといった歌劇の血筋を引いた文化です。物語や歴史の登場人物になりきって、身体の動きを正確に制御しつつ音楽を演奏して全身で表現を行います。', - '物語:小説やアニメムービーなど、誰かが紡いだ物語を追体験します。星系によって異なる文化、異なるトレンドを持っているので、その違いもまた楽しめます。', - 'Deep in myself:深い瞑想をします。静かな落ち着いた空間でゆっくりと精神を集中し、自分の心の中に潜るように意識の状態を変容させ、マインドフルネスを達成します。', - 'ファッションコーデ:自然派やロマン風、モノトーンなど、統一感あるファッションは気品を感じさせます。今日のテーマはどうしましょうか。お部屋の家具も変形して、同じ系統にコーディネートしましょう。', - '美術品:超未来の絵画や彫刻は、動きます。内部のカーボンナノファイバーやナノマシンが変形することで、あらかじめ制作者がプログラムした動きやインタラクティブな動きを繰り返します。', - 'ガーデニング:平たい土地に植物や柵、椅子や机などの種を植えて、美しい庭を造成します。惑星ごとに異なる気候に適応した様々な固有種を使って、その惑星ならではの花の彩りを演出しましょう。', - 'お料理!:超未来の合成肉や促成栽培野菜などを使って、舌を楽しませるおいしい料理を作りましょう。調理器具は3Dプリンターやクローナイフ、調味料は塩や砂糖、マイクロマシンに香辛料などです。', - 'シリコンオフィス:角張ったオフィス机やタイムカードなど超未来の世界では絶滅しました。人々は家からでも公園からでも木の上や洞窟の中からでもワークに参加しますし、趣味と労働の区別を付けません。' - ] - return get_table_by_1d10(table) - end - - # 超未来の自然 - def get_sfnature_table - table = [ - 'アニマルハート:動物たちの鳴き声の意味を解読し、また脳波分析を組み合わせることで、高等知能動物たちとある程度の意思疎通ができます。共通の話題は天気の話や景色の話、それにコイバナなど。', - 'キャンプ:野外で夜を越すときは、キャンプをします。スマートテクスタイルを広げて雨風を避けるテントを作り、虫や鳥の鳴き声を聞きながら星空を眺めて一晩を過ごします。', - 'ミネラルウォーター:テラフォーミングした惑星の海は、元の惑星のミネラル組成によって成分がだいぶ違ってきます。それほどしょっぱくない海もあれば、赤や緑っぽい海もあり。生息する魚等もまったく違います。', - 'レイクサイド:クレーター等起伏のある地形に水が溜まってできた湖は、山裾の木々を鏡面のように反射して美麗な風景を作り出しています。中心部上層の澄んだ水は、簡単に浄化すれば飲み水にもできます。', - '固有種:惑星に導入した動植物は、その惑星の環境に合わせて急速に独自の進化を遂げます。やたらにふわふわしたネコ科動物や雪の上に育つスノードロップ、転がって移動するアルマジロなどなど。', - '枯れ草集め:都市部を離れると、エネルギー源はバイオ燃料に頼ることになります。地球以外の惑星には、基本的に石油や石炭など存在しません。燃料生成に使えそうな草木を集めましょう。', - '山に進め:ジェットパックやスマートワイヤーがあるといっても、特に重力が強い惑星では高いところで大気が薄くなりやすく、山登りは大変なもの。しかしその分、山の上からの眺めは絶景です。', - 'スカイハイ・ビュー:自然の環境ですばやく移動するには、グライダーや翼を使って滑空するのが手っ取り早いです。高い木や丘に上ってからジェットパック併用で舞い上がれば、空からの美しい景観も楽しめます。', - '道なき森の道:惑星を覆う森の中には、基本的に整備された道はありません。空を見上げれば陽の光を遮る樹の冠。草をかき分け、花や草いきれの臭いを感じながら、ときには木の上を通って、先に進みます。', - 'テラフォーミング:この銀河で、地球以外のすべての惑星はヒトが入植するために「テラフォーミング」したものです。水と大気を形成し、植物を育て、動物たちを導入し、長い年月を経て現在の姿になりました。' - ] - return get_table_by_1d10(table) - end - - # 超未来の宇宙船内 - def get_sfinterior_table - table = [ - '甲板上でお茶を:狭い宇宙船に飽きてきたら、甲板の上に出て無限に広がる宇宙を感じることもできます。気圧0なので圧力ポットで持ってくる必要がありますが、星空を眺めながら飲むお茶は乙なものです。', - 'マイクロマシン隔壁:宇宙船の隔壁はメタルナノカーボンやナノスチールでできていますが、補修のためにマイクロマシンが住んでいます。ときどき壁の端がちらちら動いて見えるのも、彼らのためかもしれません。', - 'ダンベル100kg持てる:惑星環境と比べれば、宇宙船の擬似重力はどうしても弱くなるもの。筋力の衰えを防ぐために、部屋にトレーニングマシンを生成して筋トレをします。適度な負荷をかけましょう。', - 'ユリカゴ:宇宙船に乗っている間は、多くの時間を宇宙船の居住スペース兼コントロールルームである「ユリカゴ」で過ごすことになります。たまにはホログラフィックで模様替えして気分を変えます。', - '宇宙農法:数週間に渡る宇宙の旅では、食べ物や水は船内で育てます。マゼンダ色のLED ライトで植物やユーグレナを促成栽培し、バイオプラントでエネルギーゼリーを合成します。', - 'メンテナンス:宇宙船は数多くのパーツでできているため、どこかが不具合や故障を起こすこともあります。基本的に自動制御で管理できますが、自分の目と外接電脳でもチェックを入れてみましょう。', - '重力のムラ:宇宙船は擬似重力発生装置を持っており、床に足が付きますが、場所によって「重力」にムラがあります。身体が重いと感じたら、部屋の隅に行けば軽くなるかもしれません。', - 'ワープ酔い:ワープ航法は空間の歪みを利用します。装甲が最も厚いユリカゴの中でも、ワープリングを出入りするときはグラっとくる感触があります。気分が悪くなったら、おとなしく寝ていましょう。', - '1日25時間:宇宙船に「昼夜」はないため、照明を人工的に調整して生活サイクルを作ります。どうせ惑星ごとに1日の長さは違うので、24時間にこだわる必要はありません。自由に決めます。', - 'スターリー・スカイ:惑星の明かりも大気もない宇宙船の上からは、星空を鮮やかに見ることができます。当然、星によって天球図も違います。月が2つや4つあったり、連星が見られたりします。' - ] - return get_table_by_1d10(table) - end -end diff --git a/src/src_bcdice/diceBot/StrangerOfSwordCity.rb b/src/src_bcdice/diceBot/StrangerOfSwordCity.rb deleted file mode 100644 index 7776dd64c..000000000 --- a/src/src_bcdice/diceBot/StrangerOfSwordCity.rb +++ /dev/null @@ -1,101 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class StrangerOfSwordCity < DiceBot - # ゲームシステムの識別子 - ID = 'StrangerOfSwordCity' - - # ゲームシステム名 - NAME = '剣の街の異邦人TRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'けんのまちのいほうしんTRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <=z - x=ダイス数、y=修正値(省略可、±省略時は+として扱う)、z=難易度(省略可) - 判定時はクリティカル、ファンブルの自動判定を行います。 -・通常のnD6ではクリティカル、ファンブルの自動判定は行いません。 -・D66ダイスあり -INFO_MESSAGE_TEXT - - setPrefixes(['\d+SR.*']) - - def initialize - super - @sendMode = 2 - @sortType = 1 - @d66Type = 1 - @fractionType = "omit" - end - - def rollDiceCommand(command) - debug('rollDiceCommand command', command) - - command = command.upcase - - result = '' - - result = checkRoll(command) - return result unless result.empty? - - return result - end - - def checkRoll(command) - debug("checkRoll begin command", command) - - result = '' - return result unless /^(\d+)SR([\+\-]?\d+)?(>=(\d+))?$/i === command - - diceCount = Regexp.last_match(1).to_i - modify = Regexp.last_match(2).to_i - difficulty = Regexp.last_match(4).to_i if Regexp.last_match(4) - - dice, diceText = roll(diceCount, 6) - diceList = diceText.split(/,/).collect { |i| i.to_i }.sort - - totalValue = (dice + modify) - modifyText = getModifyText(modify) - result += "(#{command}) > #{dice}[#{diceList.join(',')}]#{modifyText} > #{totalValue}" - - criticalResult = getCriticalResult(diceList) - unless criticalResult.nil? - result += " > クリティカル(+#{criticalResult}D6)" - return result - end - - if isFumble(diceList, diceCount) - result += ' > ファンブル' - return result - end - - unless difficulty.nil? - result += totalValue >= difficulty ? ' > 成功' : ' > 失敗' - end - - return result - end - - def getModifyText(modify) - return "" if modify == 0 - return modify.to_s if modify < 0 - - return "+#{modify}" - end - - def getCriticalResult(diceList) - dice6Count = diceList.select { |i| i == 6 }.size - - if dice6Count >= 2 - return dice6Count.to_s - end - - return nil - end - - def isFumble(diceList, diceCount) - (diceList.select { |i| i == 1 }.size >= diceCount) - end -end diff --git a/src/src_bcdice/diceBot/StratoShout.rb b/src/src_bcdice/diceBot/StratoShout.rb deleted file mode 100644 index b731444e6..000000000 --- a/src/src_bcdice/diceBot/StratoShout.rb +++ /dev/null @@ -1,313 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class StratoShout < DiceBot - # ゲームシステムの識別子 - ID = 'StratoShout' - - # ゲームシステム名 - NAME = 'ストラトシャウト' - - # ゲームシステム名の読みがな - SORT_KEY = 'すとらとしやうと' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - " > ファンブル! (ドラマフェイズ: 【ディスコード】+2 / ライブフェイズ: 【コンディション】-2)" - elsif dice_total >= 12 - " > スペシャル! (【コンディション】+2)" - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - def rollDiceCommand(command) - case command.upcase - when 'VOT' - title = 'ボーカルトラブル表(P167)' - table = [ - "歌詞を忘れてしまった! 何も言葉が出てこない……", - "マイクのコードに足を引っ掛けてしまった! 危ない!", - "マイクスタンドが倒れてしまった!", - "音程がズレているけど、なかなか直せない!", - "リズムがズレてきている気がする……修正できない!", - "喉が枯れそうだ。まずい、セーブしないと……!" - ] - return textFrom1D6Table(title, table) - when 'GUT' - title = 'ギタートラブル表(P169)' - table = [ - "やべっ、コードを間違えた! どうにかごまかそう……", - "ゲッ、シールド(信号を伝えるコード)が抜けちゃった! 音が出ない!", - "ギターの音にノイズが乗ってるような……直ってくれ……!", - "あれ? 今曲のどの辺りだっけ……?", - "弦が切れてしまった! なんて不吉な……。", - "ピックが飛んでった! 指で弾くしかない……!" - ] - return textFrom1D6Table(title, table) - when 'BAT' - title = 'ベーストラブル表(P171)' - table = [ - "やべっ、コードを間違えた! どうにかごまかそう……", - "ゲッ、シールド(信号を伝えるコード)が抜けちゃった! 音が出ない!", - "ベースの音にノイズが乗ってるような……直ってくれ……!", - "あれ? 今曲のどの辺りだっけ……?", - "指先の感覚が麻痺してきた。動かない……!", - "テンポが速くなってきているけど、止まらない!" - ] - return textFrom1D6Table(title, table) - when 'KEYT' - title = 'キーボードトラブル表(P173)' - table = [ - "指先の感覚が麻痺してきた。動かない……!", - "音量のスライドに触れてしまった! 爆音が出てしまう!", - "あれ? 今曲のどの辺りだっけ……?", - "音の出ない鍵がある……故障!?", - "音色を間違えた! 元の音色は何番だっけ……!?", - "手を置く位置が一つズレてる……! 不協和音だ!" - ] - return textFrom1D6Table(title, table) - when 'DRT' - title = 'ドラムトラブル表(P175)' - table = [ - "手がこんがらがってきた! 軌道修正しないと……!", - "あれ? 今曲のどの辺りだっけ……?", - "ハイハットが開かない! ネジが緩んでるのか……!?", - "アドリブ入れたけど、次のフレーズが思いつかない……!", - "テンポが速くなってきているけど、止まらない!", - "スティックが飛んでった! 代わりはどこだっけ……。" - ] - return textFrom1D6Table(title, table) - when 'EMO' - title = '感情表(P183)' - table = [ - "共感/不信", - "友情/嫉妬", - "好敵手/苛立ち", - "不可欠/敬遠", - "尊敬/劣等感", - "愛情/負い目" - ] - return textFrom1D6Table(title, table) - when /^AT([1-6]?)$/ - value = Regexp.last_match(1).to_i - return getSkillList(value) - when "SCENE" - title = "シーン表(P199)" - table = [ - "一人の時間。ふと過去の記憶を辿る。そういえば以前、あんなことがあったような……。", - "どこからか、言い争っているような声が聞こえてきた。喧嘩だろうか?", - "夜の帳が下り、辺りは静寂に包まれている。あいつは今、何をしているだろう。", - "仲間と一緒にご飯を食べていると、会話は自然とあの話に……。", - "笑い声に満ちた空間。ずっとこんな時間が続けばいいのに。", - "日の当たる場所。毎日の忙しさを離れ、穏やかな時間が過ぎていく。", - "スマートフォンに着信の通知がついていた。電話? メッセージ? 誰からだろう。", - "突然、あなたのもとに来訪者が現れた。何か伝えたいことがあるようだ。", - "誰かの忘れ物を見つけた。届けてあげたほうがいいだろうか。", - "誰かが噂話をしている。聞くつもりはなくとも、それは勝手に耳に入ってきた。", - "なんだか悪寒がする。なにか良くないことが起きているような……。" - ] - return textFrom2D6Table(title, table) - when "MACHI" - title = "街角シーン表(P199)" - table = [ - "入ったことのない場所に、初めて足を踏み入れた。少し緊張してしまうな。", - "アルバイト先。バイト仲間から、意外なことを教えられた。", - "会話もままならないような、大音量の音楽。その場にいるだけで気分が高揚する。", - "横断歩道で信号を待っていると、見知った人物の姿を見つけた。", - "突然の雨に、慌てて足を早める人々。自分も早く帰らなければ。", - "何気なく立ち寄った店の中で、知人とばったり。こんなところで何を?", - "練習を終えて立ち寄った飲食店で、意外な人物を発見。少し様子を見てみよう。", - "あちこちから子どもたちのはしゃぎ声が聞こえてくる。自分にもあんな頃があったんだろうか。", - "音のない、静寂の世界。たまには音から離れるのもいいものだ。", - "電車の中。つり革に掴まりながら揺られていると、見覚えのある乗客を見つけた。", - "カラオケの廊下を歩いていると、どこからか聞き覚えのある声が……?" - ] - return textFrom2D6Table(title, table) - when "GAKKO" - title = "学校シーン表(P199)" - table = [ - "校舎裏、何かを話す二人組を見かけた。一体何を話しているのだろう……?", - "とある部室。部員たちは集中して部活に励んでいるようだが……。", - "先生から、ターゲットについて尋ねられた。なにか気になることがあるようだ。", - "木々の隙間から朝日差し込む通学路。ある者は忙しそうに、またある者は楽しそうに校舎へ向かっている。", - "休み時間。教室のあちこちで飛び交う、他愛のない噂話。その中から、気になる会話が聞こえてきた。", - "何もかもが茜色に染まる夕暮れ時。生徒たちは学業から解放され、自由に残り少ない一日を過ごしている。", - "移動教室だ。渡り廊下から下を見ると、見覚えのある人物がいた。", - "昼休み。生徒は思い思いの場所で昼食を取っている。さて、自分はどこで食べようか。", - "先生から頼まれごとを引き受けてしまった。さっさと済ませてしまおう。", - "そろそろ学校が閉まる時間だ。明かりのついている教室はもうほとんどない。", - "スピーカーから校内放送が聞こえた。誰かを呼んでいるようだが……?" - ] - return textFrom2D6Table(title, table) - when "BAND" - title = "バンドシーン表(P199)" - table = [ - "音楽専門のニュースサイトをチェック。大小様々な記事が投稿されている。", - "意外なところで練習している人物を発見。少し声をかけてみようか。", - "ちょっとした壁に衝突。誰かに相談した方がいいかも……。", - "ライブを見るためライブハウスへとやってきた。どんなステージになるのだろう。", - "打ち合わせに行ったライブハウス。来ているのは自分たちだけじゃないようだ。", - "練習が終わった帰り道。あいつも練習が終わった頃だろうか。", - "どこからか楽器の音が聞こえてくる。誰か演奏しているのだろうか。", - "熱気のこもる部屋を出て、スタジオの待合室でクールダウン。ソファに座っているのは……。", - "訪れた楽器店で、見知った人物を発見。何をしに来ているのだろう。", - "最新のヒット曲が流れるCDショップの店内。次はどんな曲をやろうか……。", - "何気なく鳴らした音から、突発セッションに発展。軽く実力を見せつけてやろう。" - ] - return textFrom2D6Table(title, table) - when 'TENKAI' - title = 'シーン展開表(P201)' - table = [ - [11, "絶望: ステップを更に大きくする、あるいはシーンプレイヤーを破滅に追い込むような状況に陥ります。【ディスコード】+2点。"], - [12, "崩壊: ステップによってシーンプレイヤーの大切なものが崩壊する、あるいは崩壊目前に追い込まれます。【ディスコード】+2点。"], - [13, "断絶: シーンプレイヤーはステップによって何かと絶縁状態になります。【ディスコード】+2点。"], - [14, "恐怖: ステップに恐怖するような出来事に遭遇します。【ディスコード】+2点。"], - [15, "誤解: シーンプレイヤーがステップに関するなんらかの誤解を受けます。【ディスコード】+2点。"], - [16, "試練: シーンプレイヤーはステップに関連した試練に直面します。【ディスコード】+2点。"], - [22, "悪心: シーンプレイヤーの心に魔が差し、ステップを不合理に解決しようとします。【ディスコード】+1点。"], - [23, "束縛: ステップに関わるなんらかに束縛され、自由な行動ができなくなります。【ディスコード】+1点。"], - [24, "凶兆: ステップについて、悪いことが起きそうな前触れが訪れます。【ディスコード】+1点。"], - [25, "加速: シーンプレイヤーはステップの解決に追われます。【ディスコード】+1点。"], - [26, "日常: シーンプレイヤーはのんびりとした日常を送ります。【コンディション】+1点。"], - [33, "休息: ステップを忘れられるような、穏やかなひとときを過ごします。【コンディション】+1点。"], - [34, "吉兆: ステップについて、いいことが起きそうな前触れが訪れます。【コンディション】+1点。"], - [35, "発見: シーンプレイヤーはステップについて何かを発見します。【コンディション】+1点。"], - [36, "希望: シーンプレイヤーの中に、ステップに対して前向きに取り組む意思が生まれます。【コンディション】+1点。"], - [44, "成長: ステップを通して、シーンプレイヤーが成長します。【コンディション】+2点。"], - [45, "愛情: ステップを通して、シーンプレイヤーが愛情に触れます。【コンディション】+2点。"], - [46, "朗報: ステップに関する良い知らせが舞い込みます。【コンディション】+2点。"], - [55, "好転: ステップが良い方向に向かうような事件が起きます。【コンディション】+3点。"], - [56, "直感: ステップを解決させる決定的な閃きを得ます。【コンディション】+3点。"], - [66, "奇跡: ステップに関して、奇跡的な幸運が舞い込みます。【コンディション】+3点。"], - ] - return textFromD66Table(title, table) - # when 'TEMP' - # title = '表(P)' - # table = [ - # [11, ""], - # [12, ""], - # [13, ""], - # [14, ""], - # [15, ""], - # [16, ""], - # [22, ""], - # [23, ""], - # [24, ""], - # [25, ""], - # [26, ""], - # [33, ""], - # [34, ""], - # [35, ""], - # [36, ""], - # [44, ""], - # [45, ""], - # [46, ""], - # [55, ""], - # [56, ""], - # [66, ""], - # ] - # return textFromD66Table(title, table) - end - - return nil - end - - def textFromD66Table(title, table) - isSwap = true - dice = getD66(isSwap) - number, text, = table.assoc(dice) - - return "#{title} > [#{number}] > #{text}" - end - - def textFrom1D6Table(title, table1, table2 = nil) - text1, number1 = get_table_by_1d6(table1) - - text = "#{title} > " - if table2.nil? - text += "[#{number1}] > #{text1}" - else - text2, number2 = get_table_by_1d6(table2) - text += "[#{number1},#{number2}] > #{text1}#{text2}" - end - - return text - end - - def textFrom2D6Table(title, table) - text, number = get_table_by_2d6(table) - - return "#{title} > [#{number}] > #{text}" - end - - def getSkillList(field = 0) - title = '特技リスト' - table = [ - ['主義', ['過去', '恋人', '仲間', '家族', '自分', '今', '理由', '夢', '世界', '幸せ', '未来']], - ['身体', ['頭', '目', '耳', '口', '胸', '心臓', '血', '背中', '手', 'XXX', '足']], - ['モチーフ', ['闇', '武器', '魔法', '獣', '町', '歌', '食べ物', '花', '空', '季節', '光']], - ['エモーション', ['悲しい', '怒り', '不安', '恐怖', '驚き', '高鳴り', '情熱', '確信', '期待', '楽しい', '喜び']], - ['行動', ['泣く', '忘れる', '消す', '壊す', '叫ぶ', '歌う', '踊る', '走る', '鳴らす', '呼ぶ', '笑う']], - ['逆境', ['死', '喪失', '暴力', '孤独', '後悔', '実力', '退屈', '権力', '富', '恋愛', '生']], - ] - - number1 = 0 - if field == 0 - table, number1 = get_table_by_1d6(table) - else - table = table[field - 1] - end - - fieldName, table = table - skill, number2 = get_table_by_2d6(table) - - text = title - if field == 0 - text += " > [#{number1},#{number2}]" - else - text += "(#{fieldName}分野) > [#{number2}]" - end - - return "#{text} > 《#{skill}/#{fieldName}#{number2}》" - end -end diff --git a/src/src_bcdice/diceBot/StratoShout_Korean.rb b/src/src_bcdice/diceBot/StratoShout_Korean.rb deleted file mode 100644 index 1a49525c3..000000000 --- a/src/src_bcdice/diceBot/StratoShout_Korean.rb +++ /dev/null @@ -1,311 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class StratoShout_Korean < DiceBot - # ゲームシステムの識別子 - ID = 'StratoShout:Korean' - - # ゲームシステム名 - NAME = '스트라토 샤우트' - - # ゲームシステム名の読みがな - SORT_KEY = '国際化:Korean:스트라토 샤우트' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - " > 펌블! (드라마페이즈: 【디스코드】+2 / 라이브페이즈: 【컨디션】-2)" - elsif dice_total >= 12 - " > 스페셜! (【컨디션】+2)" - elsif total >= target - " > 성공" - else - " > 실패" - end - end - - def rollDiceCommand(command) - case command.upcase - when 'VOT' - title = '보컬 트러블표(P167)' - table = [ - "가사를 잊어버렸다! 어떤 말도 나오지 않아……", - "마이크 코드에 발이 걸려버렸다! 위험해!", - "마이크 스탠드가 쓰러져버렸다!", - "음정이 어긋나고 있지만, 쉽게 고칠 수가 없어!", - "리듬이 어긋나고 있는 것 같다……수정할 수 없어!", - "목이 갈라질 것 같다. 위험해, 비축하지 않으면……!" - ] - return textFrom1D6Table(title, table) - when 'GUT' - title = '기타 트러블표(P169)' - table = [ - "위험해, 코드를 틀렸다! 어떻게든 무마시키자……", - "겍, 실드(신호를 전달하는 코드)가 빠져버렸다! 소리가 안 나와!", - "기타 소리에 노이즈가 낀 것 같은데……고쳐져라……!", - "어라? 지금 곡의 어느 부분이더라……?", - "현이 끊겨버렸다! 무슨 불길한…….", - "피크가 날아가버렸다! 손가락으로 칠 수밖에 없어……!" - ] - return textFrom1D6Table(title, table) - when 'BAT' - title = '베이스 트러블표(P171)' - table = [ - "위험해, 코드를 틀렸다! 안 틀린 척 넘어가자……", - "겍, 실드(신호를 전달하는 코드)가 뽑혔다! 소리가 안 나와!", - "베이스 소리에 노이즈가 섞인 것 같은데……고쳐져라……!", - "어라? 지금 어디 치고 있었더라……?", - "손 끝의 감각이 둔해지기 시작했다. 안 움직여……!", - "템포가 좀 빨라졌지만, 멈출 수 없어!" - ] - return textFrom1D6Table(title, table) - when 'KEYT' - title = '키보드 트러블표(P173)' - table = [ - "손 끝의 감각이 둔해지기 시작했다. 안 움직여……!", - "실수로 볼륨 슬라이드를 건드렸다! 굉음이 나올거야!", - "어라? 지금 어디 치고 있었지……?", - "음이 안 나는 건반이 있어……고장!?", - "음색 잘못 골랐다! 원래 음색 몇 번에 저장해뒀었지……!?", - "건반 한 개를 잘못 짚었어……! 불협화음이다!" - ] - return textFrom1D6Table(title, table) - when 'DRT' - title = '드럼 트러블표(P175)' - table = [ - "팔이 꼬이기 시작했다! 다시 제대로 자릴 잡지 않으면……!", - "어라? 지금 어디 치고 있었더라……?", - "하이햇이 열리지 않아! 나사가 풀려있는 건가……!?", - "애드립을 넣었는데, 다음 프레이즈가 기억나지 않는다……!", - "템포가 점점 빨라지고 있지만, 멈출 수 없어!", - "스틱이 날아갔다! 여분을 어디다 뒀더라……." - ] - return textFrom1D6Table(title, table) - when 'EMO' - title = '감정표(P183)' - table = [ - "공감/불신", - "우정/질투", - "호적수/짜증", - "불가결/경원", - "존경/열등감", - "애정/부담감" - ] - return textFrom1D6Table(title, table) - when /^AT([1-6]?)$/ - value = Regexp.last_match(1).to_i - return getSkillList(value) - when "SCENE" - title = "장면표(P199)" - table = [ - "혼자만의 시간.문득 과거의 기억을 더듬어본다.그러고 보면 예전에 이런 일이 있었던 것 같은데…….", - "어디선가 언쟁하는 듯한 소리가 들려온다. 싸우는 걸까?", - "밤의 장막이 걷히고, 주변은 정적에 휩싸여 간다. 그녀석은 지금 뭘 하고있을까.", - "동료와 함께 식사를 하고있자니, 화제는 자연스레 그 이야기로……", - "웃음소리로 가득 찬 공간. 계속 이런 시간이 이어지면 좋을텐데.", - "햇볕이 드는 장소. 바쁜 일상에서 잠시 빠져나와 평온한 시간이 흘러간다.", - "스마트폰에서 착신 알람이 울린다. 전화? 메시지? 누구한테서 온 걸까.", - "갑작스레 누군가가 당신을 찾아왔다. 뭔가 전할 것이 있는 모양이다.", - "누군가가 잃어버린 물건을 발견했다. 전해주는 게 좋으려나.", - "누군가 소문에 대한 이야기를 하고 있다. 들을 생각이 없어도 그것은 제멋대로 들려온다.", - "어쩐지 오한이 인다. 좋지 않은 일이 일어날 것만 같은……" - ] - return textFrom2D6Table(title, table) - when "MACHI" - title = "거리 장면표(P199)" - table = [ - "들어간 적 없는 곳에 처음으로 발을 내딛었다. 조금 긴장되네.", - "아르바이트를 하는 곳. 함께 일하는 동료가 의외의 사실을 알려주었다.", - "대화하는 것조차 어려울 정도로 큰 소리의 음악. 그 곳에 있는 것만으로도 기분이 고양된다.", - "횡단보도에서 신호를 기다리고 있다보니 낯익은 인물의 모습을 발견했다.", - "갑작스럽게 내리는 비에 당황해서 발걸음을 빨리 하는 사람들. 나도 빨리 돌아가야 하는데.", - "무심코 들른 가게 안에서 아는 사람과 딱 마주쳤다. 이런 곳에서 뭘 하는 거야?", - "연습을 끝내고 들른 음식점에서 의외의 인물을 발견. 잠시 그 모습을 지켜보자.", - "여기저기서 어린 아이들의 신이 난 소목소리가 들려온다. 나도 저런 때가 있었을까?", - "아무 소리도 없는 정적의 세계. 가끔은 소리를 멀리 하는 것도 좋겠지. ", - "전차 안. 손잡이를 붙잡은 채 흔들리고 있다보니, 승객 중에서 낯익은 사람을 발견했다. ", - "가라오케의 복도를 걷고 있다보면 어디선가 들어본 적 있는 목소리가……?" - ] - return textFrom2D6Table(title, table) - when "GAKKO" - title = "학교 장면표(P199)" - table = [ - "교정 뒤에서 무언가에 대해 이야기하는 두 사람을 발견했다. 대체 무슨 얘기를 하고 있는 걸까……", - "어느 동아리실, 부원들은 집중한 채 부활동에 힘쓰고 있는 것 같은데……", - "선생님한테서 타겟에 대한 질문을 받았다. 뭔가 신경쓰이는 게 있는 모양이다.", - "나뭇잎 사이로 아침햇살이 비쳐드는 등굣길. 어떤 사람은 바쁜 듯이, 또 어떤 사람은 즐거운 듯이 학교로 향하고 있다. ", - "쉬는 시간. 교실 여기저기에 떠도는 시시한 소문들. 그 중에서 신경쓰이는 화제가 들려왔다.", - "모든 것이 노을빛으로 물드는 해질녘. 학생들은 학업에서 해방되어 자유롭게 얼마 남지 않은 하루를 보내고 있다.", - "이동수업용 교실로 향하는 구름다리에서 아래를 내려다보면, 낯익은 인물이 있다.", - "점심 시간. 학생들은 제각각의 장소에서 점심 식사를 하고 있다. 자 그럼, 난 어디서 먹을까.", - "선생님에게서 심부름을 부탁받아 떠맡고 말았다. 얼른 해치워버리자. ", - "슬슬 학교의 문이 닫힐 시간이다. 불이 들어와 있는 교실은 이제 거의 없다", - "스피커에서 교내방송이 들려온다. 누군가를 부르고 있는 것 같은데……?" - ] - return textFrom2D6Table(title, table) - when "BAND" - title = "밴드 장면표(P199)" - table = [ - "음악 전문 인터넷 뉴스 사이트를 체크. 크고 작은 기사가 투고되어 있다.", - "의외의 장소에서 연습하고 있는 인물을 발견. 살짝 말을 걸어볼까.", - "사소한 벽에 부딪쳤다. 누군가한테 상담하는 게 좋을지도……", - "라이브를 보기 위해 라이브 하우스에 찾아왔다. 어떤 스테이지가 되려나.", - "멤버들과 만나기로 한 라이브하우스. 도착해 있는 건 우리들만이 아닌 것 같다", - "연습이 끝난 후 돌아가는 길. 그녀석도 지금쯤 연습이 끝났으려나.", - "어디선가 악기 소리가 들려온다. 누가 연주하고 있는 걸까.", - "열기로 가득한 방에서 나와 스튜디오의 대합실에서 쿨 다운. 소파에 앉아있는 건……", - "악기점에 방문했다가 낯익은 인물을 발견. 뭘 하러 온 걸까.", - "최신 히트곡이 흐르고 있는 CD가게 안. 다음 곡은 어떤 걸로 할까……", - "무심코 울린 소리에서 즉흥 세션으로 발전. 가볍게 실력을 보여줄까." - ] - return textFrom2D6Table(title, table) - when 'TENKAI' - title = '장면 전개표(P201)' - table = [ - [11, "절망 : 절차를 역으로 크게 하거나 혹은, 장면 플레이어를 파멸로 몰아넣는 상황에 빠져듭니다.【디스코드】+2점"], - [12, "붕괴 : 절차에 의해 장면 플레이어의 소중한 것이 붕괴되거나 혹은, 붕괴 직전에 몰립니다.【디스코드】+2점"], - [13, "단절 : 장면 플레이어는 절차에 의해 무언가와 절연 상태가 됩니다.【디스코드】+2점"], - [14, "공포 : 절차에 공포를 느낄만한 일과 조우합니다.【디스코드】+2점"], - [15, "오해 : 장면 플레이어가 절차에 관련된 어떤 오해를 받습니다.【디스코드】+2점"], - [16, "시련 : 장면 플레이어는 절차에 관련된 시련에 직면합니다.【디스코드】+2점"], - [22, "악의 : 장면 플레이어의 마음에 순간적으로 나쁜 마음이 깃들어, 절차를 불합리하게 해결하려 합니다.【디스코드】+1점"], - [23, "속박 : 절차에 관련된 무언가에 속박되어, 자유로운 행동이 불가능해집니다.【디스코드】+1점"], - [24, "흉조 : 절차에 대해 나쁜 일이 일어날 것만 같은 조짐이 찾아옵니다.【디스코드】+1점"], - [25, "가속 : 장면 플레이어는 절차의 해결에 쫓깁니다.【디스코드】+1점"], - [26, "일상 : 장면 플레이어는 한가로운 일상을 보냅니다.【컨디션】+1점"], - [33, "휴식 : 절차를 잊어버릴만큼 평온한 한 때를 보냅니다.【컨디션】+1점"], - [34, "길조 : 절차에 대해 좋은 일이 일어날 것 같은 조짐이 찾아옵니다.【컨디션】+1점"], - [35, "발견 : 장면 플레이어는 절차에 대한 무언가를 발견합니다.【컨디션】+1점"], - [36, "희망 : 장면 플레이어의 마음 속에 절차에 대해 긍정적으로 맞설 의사가 생겨납니다.【컨디션】+1점"], - [44, "성장 : 절차를 통해 장면 플레이어가 성장합니다.【컨디션】+2점"], - [45, "애정 : 절차를 통해 장면 플레이어가 애정에 닿게 됩니다.【컨디션】+2점"], - [46, "낭보 : 절차에 대한 좋은 소식이 날아들어옵니다.【컨디션】+2점"], - [55, "호전 : 절차가 좋은 방향으로 향할 것 같은 사건이 일어납니다.【컨디션】+3점"], - [56, "직감 : 절차를 해결할 수 있는 결정적인 번뜩임을 얻습니다.【컨디션】+3점"], - [66, "기적 : 절차에 관한 기적적인 행운이 찾아옵니다.【컨디션】+3점"], - ] - return textFromD66Table(title, table) - # when 'TEMP' - # title = '表(P)' - # table = [ - # [11, ""], - # [12, ""], - # [13, ""], - # [14, ""], - # [15, ""], - # [16, ""], - # [22, ""], - # [23, ""], - # [24, ""], - # [25, ""], - # [26, ""], - # [33, ""], - # [34, ""], - # [35, ""], - # [36, ""], - # [44, ""], - # [45, ""], - # [46, ""], - # [55, ""], - # [56, ""], - # [66, ""], - # ] - # return textFromD66Table(title, table) - end - - return nil - end - - def textFromD66Table(title, table) - isSwap = true - dice = getD66(isSwap) - number, text, = table.assoc(dice) - - return "#{title} > [#{number}] > #{text}" - end - - def textFrom1D6Table(title, table1, table2 = nil) - text1, number1 = get_table_by_1d6(table1) - - text = "#{title} > " - if table2.nil? - text += "[#{number1}] > #{text1}" - else - text2, number2 = get_table_by_1d6(table2) - text += "[#{number1},#{number2}] > #{text1}#{text2}" - end - - return text - end - - def textFrom2D6Table(title, table) - text, number = get_table_by_2d6(table) - - return "#{title} > [#{number}] > #{text}" - end - - def getSkillList(field = 0) - title = '특기 리스트' - table = [ - ['주의', ['과거', '연인', '동료', '가족', '자신', '지금', '이유', '꿈', '세계', '행복', '미래']], - ['신체', ['머리', '눈', '귀', '입', '가슴', '심장', '피', '등', '손', 'XXX', '발']], - ['모티브', ['어둠', '무기', '짐승', '기계', '거리', '노래', '창', '꽃', '하늘', '계절', '빛']], - ['정서', ['슬픔', '분노', '불안', '공포', '놀라움', '설렘', '정열', '확신', '기대', '즐거움', '기쁨']], - ['행동', ['우는', '잊는', '지우는', '부수는', '외치는', '노래하는', '춤추는', '달리는', '만나는', '부르는', '웃는']], - ['역경', ['죽음', '상실', '폭력', '고독', '후회', '실력', '싫증', '본성', '부', '연애', '삶']], - ] - - number1 = 0 - if field == 0 - table, number1 = get_table_by_1d6(table) - else - table = table[field - 1] - end - - fieldName, table = table - skill, number2 = get_table_by_2d6(table) - - text = title - if field == 0 - text += " > [#{number1},#{number2}]" - else - text += "(#{fieldName}분야) > [#{number2}]" - end - - return "#{text} > 《#{skill}/#{fieldName}#{number2}》" - end -end diff --git a/src/src_bcdice/diceBot/Strave.rb b/src/src_bcdice/diceBot/Strave.rb deleted file mode 100644 index 91941b3ff..000000000 --- a/src/src_bcdice/diceBot/Strave.rb +++ /dev/null @@ -1,220 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Strave < DiceBot - # ゲームシステムの識別子 - ID = 'Strave' - - # ゲームシステム名 - NAME = '碧空のストレイヴ' - - # ゲームシステム名の読みがな - SORT_KEY = 'へきくうのすとれいふ' - - # ダイスボットの使い方 - HELP_MESSAGE = < 10 - - _dice, diceText = roll(diceCount, 10, @sortType) - diceArray = diceText.split(/,/).collect { |i| i.to_i } - - successCount = diceArray.find_all { |i| (i <= target) }.size - - isDamage = !damage.nil? - - if isDamage - totalDamage = successCount * damage - result = "(#{diceCount}D10\<\=#{target}) > #{diceText} > Hits:#{successCount}*#{damage} > #{totalDamage}ダメージ" - else - result = "(#{diceCount}D10\<\=#{target}) > #{diceText}" - if successCount > 0 - result += " > 【成功】" - else - result += " > 【失敗】" - end - end - - return result - end - - def get_affiliation_table - name = '所属表:基本' - table = [ - [1, 'アリウス管理委員会:あなたはアリウス管理委員会に所属している。'], - [2, 'オーヴァーブルー:あなたはオーヴァーブルーに所属している。'], - [3, 'ウォルゲイト:あなたはウォルゲイトに所属している。'], - [4, '暁部隊:あなたはかつて、反逆者・暁弥琴と同じ部隊に所属していた。'], - [5, '天文部:あなたは天文部に所属している。'], - [6, '吹奏楽部:あなたは吹奏楽部に所属している。'], - [7, '剣道部:あなたは剣道部に所属している。'], - [8, 'ボクシング部:あなたはボクシング部に所属している。'], - [9, '陸上部:あなたは陸上部に所属している。'], - [10, '茶道部:あなたは茶道部に所属している。'], - [11, 'パソコン部:あなたはパソコン部に所属している。'], - [12, '新聞部:あなたは新聞部に所属している。'], - [13, '弓道部:あなたは弓道部に所属している。'], - [14, '美術部:あなたは美術部に所属している。'], - [15, 'ミリタリー研究会:あなたはミリタリー研究会に所属している。'], - [16, '歴史研究会:あなたは歴史研究会に所属している。'], - [17, 'ロボット研究会:あなたはロボット研究会に所属している。'], - [18, '図書委員会:あなたは図書委員会に所属している。'], - [19, '任意:あなたの任意の所属を設定せよ。'], - [20, '任意:あなたの任意の所属を設定せよ。'] - ] - return get_strave_1d100_table_result(name, table) - end - - def get_identity_table - name = 'アイデンティティ表:基本' - table = [ - [1, '戦い:戦いこそが、あなたをあなたたらしめている。'], - [2, '守護:あなたには守るべきものがある。'], - [3, '復讐:あなたは復讐を誓っている。何かに、あるいは誰かに。'], - [4, '名声:その身に浴びる脚光を、何よりも誉としている。'], - [5, '恋愛:あなたはその身を焦がす恋に生きている。'], - [6, '家族:あなたにとって、家族はかけがえの無いものだ。'], - [7, '友人:あなたは友のために戦っている。'], - [8, '部隊:共に戦う部隊の仲間が、あなたに力をくれる。'], - [9, 'ストレイヴ:あなたは自身のストレイヴを誇りに思っている。'], - [10, 'スフィアブレイク:あなたはスフィアブレイクを熱烈に目指している。'], - [11, 'お金:あなたはお金を求めている。報酬こそが自分の価値だ。'], - [12, '夢:あなたには夢がある。自分を突き動かす夢が。'], - [13, '忠誠:あなたは忠誠を誓っている。何かに、あるいは誰かに。'], - [14, '共生:あなたは、ヴァイエルと人類との共生を望んでいる。'], - [15, '居場所:自身の居場所こそが、あなたに力をくれる。'], - [16, '強制:あなたは不本意ながら今の立場にいる。'], - [17, '碧空:見上げた青空が、あなたを変えた。'], - [18, '任意:あなたの任意のアイデンティティを設定せよ。'], - [19, '任意:あなたの任意のアイデンティティを設定せよ。'], - [20, '任意:あなたの任意のアイデンティティを設定せよ。'] - ] - return get_strave_1d100_table_result(name, table) - end - - def get_affiliation_table2 - name = '所属表:ヴァリアンスネイヴァー' - table = [ - [1, 'シュヴァレ・トワール:あなたはシュヴァレ・トワールに所属している。'], - [2, 'ディープシンカー:あなたはディープシンカーに所属している。'], - [3, 'ヴェルクシュタット:あなたはヴェルクシュタットに所属している。'], - [4, 'アウスヴァル:あなたはアウスヴァルに所属している。'], - [5, '美術科:あなたは美術科に所属している。'], - [6, '哲学科:あなたは哲学科に所属している。'], - [7, '数学科:あなたは数学科に所属している。'], - [8, '地理学科:あなたは地理学科に所属している。'], - [9, '工学科:あなたは工学科に所属している。'], - [10, '体育学科:あなたは体育学科に所属している。'], - [11, '農学科:あなたは農学科に所属している。'], - [12, '歴史学科:あなたは歴史学科に所属している。'], - [13, '医学科:あなたは医学科に所属している。'], - [14, '情報学科:あなたは情報学科に所属している。'], - [15, '音楽科:あなたは音楽科に所属している。'], - [16, '心理学科:あなたは心理学科に所属している。'], - [17, '文学科:あなたは文学科に所属している。'], - [18, '任意:あなたの任意の所属を設定すること。'], - [19, '任意:あなたの任意の所属を設定すること。'], - [20, '任意:あなたの任意の所属を設定すること。'] - ] - return get_strave_1d100_table_result(name, table) - end - - def get_identity_table2 - name = 'アイデンティティ表:ヴァリアンスネイヴァー' - table = [ - [1, '戦い:戦いへの衝動が、あなたをあなたたらしめている。'], - [2, '守護:守るべきものの存在が、あなたをあなたたらしめている。'], - [3, '復讐:復讐の誓いこそが、あなたをあなたたらしめている。'], - [4, '名声:与えられた名誉こそが、あなたをあなたたらしめている。'], - [5, '恋愛:愛する者への想いが、あなたをあなたたらしめている。'], - [6, '家族:かけがえのない家族が、あなたをあなたたらしめている。'], - [7, '友人:友の存在が、あなたをあなたたらしめている。'], - [8, '部隊:部隊の戦友こそが、あなたをあなたたらしめている。'], - [9, 'ストレイヴ:ストレイヴの存在が、あなたの心を保っている。'], - [10, '宇宙:やがて来る旅立ちの日まで、あなたはあなたであろうとしている。'], - [11, 'お金:与えられる報酬のため、あなたはあなたであろうとしている。'], - [12, '夢:あなたには、己の心に誓った夢がある。'], - [13, '忠誠:その心でもって、誓った忠義がある。'], - [14, '共生:あなたは、ヴァイエルと人類との共生を望んでいる。'], - [15, '居場所:自身の居場所への思いが、あなたをあなたたらしめている。'], - [16, 'ヴァイエル:あなたと同じでありながら、あなたと異なる存在。彼らへの思いが、あなたをあなたたらしめている。'], - [17, 'エコール:自身の生きる場所への思いが、あなたをあなたたらしめている。'], - [18, '任意:あなたの任意のアイデンティティを設定せよ。'], - [19, '任意:あなたの任意のアイデンティティを設定せよ。'], - [20, '任意:あなたの任意のアイデンティティを設定せよ。'] - ] - return get_strave_1d100_table_result(name, table) - end - - def get_strave_1d100_table_result(name, table) - dice, = roll(1, 100) - dice2 = ((dice.to_i - 1) / 5).floor + 1 - result = get_table_by_number(dice2, table) - return get_strave_table_result(name, dice, result) - end - - def get_strave_table_result(name, dice, result) - return "#{name}(#{dice}) > #{result}" - end -end diff --git a/src/src_bcdice/diceBot/SwordWorld.rb b/src/src_bcdice/diceBot/SwordWorld.rb deleted file mode 100644 index 2ddd40529..000000000 --- a/src/src_bcdice/diceBot/SwordWorld.rb +++ /dev/null @@ -1,490 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require "utils/modifier_formatter" - -class SwordWorld < DiceBot - include ModifierFormatter - - # ゲームシステムの識別子 - ID = 'SwordWorld' - - # ゲームシステム名 - NAME = 'ソードワールドRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'そおとわあると' - - # ダイスボットの使い方 - HELP_MESSAGE = "・SW レーティング表 (Kx[c]+m$f) (x:キー, c:クリティカル値, m:ボーナス, f:出目修正)\n" - - setPrefixes(['H?K\d+.*']) - - def initialize - rating_table = 0 - super() - @rating_table = rating_table - end - - # changeTextで使うレーティング表コマンドの正規表現 - # - # SW 2.5のダイスボットでも必要なため、共通化のために定数として定義する - RATING_TABLE_RE_FOR_CHANGE_TEXT = /\AS?H?K\d+/i.freeze - - # コマンド実行前にメッセージを置換する - # @param [String] string 受信したメッセージ - # @return [String] - def changeText(string) - # TODO: Ruby 2.4以降では Regexp#match? を使うこと - return string unless RATING_TABLE_RE_FOR_CHANGE_TEXT.match(string) - - string. - gsub(/\[(\d+)\]/) { "c[#{Regexp.last_match(1)}]" }. - gsub(/@(\d+)/) { "c[#{Regexp.last_match(1)}]" }. - gsub(/\$([-+]?\d+)/) { "m[#{Regexp.last_match(1)}]" }. - gsub(/r([-+]?\d+)/i) { "r[#{Regexp.last_match(1)}]" } - end - - def getRatingCommandStrings - "cmCM" - end - - def check_2D6(total, dice_total, _dice_list, cmp_op, target) - if dice_total >= 12 - " > 自動的成功" - elsif dice_total <= 2 - " > 自動的失敗" - elsif cmp_op != :>= || target == "?" - '' - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - def rollDiceCommand(command) - rating(command) - end - - private - - #################### SWレーティング表 ######################## - def rating(string) # レーティング表 - debug("rating string", string) - - commands = getRatingCommandStrings - - m = /^S?(H?K[\d\+\-]+([#{commands}]\[([\d\+\-]+)\])*([\d\+\-]*)([CMR]\[([\d\+\-]+)\]|GF|H)*)/i.match(string) - unless m - debug("not matched") - return '1' - end - - string = m[1] - half = string.include?("H") - - rateUp, string = getRateUpFromString(string) - crit, string = getCriticalFromString(string, half) - firstDiceChanteTo, firstDiceChangeModify, string = getDiceChangesFromString(string) - - key, addValue = getKeyAndAddValueFromString(string) - - return '1' unless key =~ /([\d]+)/ - - key = Regexp.last_match(1).to_i - - # 2.0対応 - rate_sw2_0 = getSW2_0_RatingTable - - keyMax = rate_sw2_0.length - 1 - debug("keyMax", keyMax) - if key > keyMax - return "キーナンバーは#{keyMax}までです" - end - - newRates = getNewRates(rate_sw2_0) - - output = "KeyNo.#{key}" - - output += "c[#{crit}]" if crit < 13 - output += "m[#{firstDiceChangeModify}]" if firstDiceChangeModify != 0 - output += "m[#{firstDiceChanteTo}]" if firstDiceChanteTo != 0 - output += "r[#{rateUp}]" if rateUp != 0 - - output, values = getAdditionalString(string, output) - - debug('output', output) - - if addValue != 0 - output += "+#{addValue}" if addValue > 0 - output += addValue.to_s if addValue < 0 - end - - output += " > " - - diceResultTotals = [] - diceResults = [] - rateResults = [] - dice = 0 - diceOnlyTotal = 0 - totalValue = 0 - round = 0 - - loop do - dice_raw, diceText = rollDice(values) - dice = dice_raw - - if firstDiceChanteTo != 0 - dice = dice_raw = firstDiceChanteTo - firstDiceChanteTo = 0 - elsif firstDiceChangeModify != 0 - dice += firstDiceChangeModify.to_i - firstDiceChangeModify = 0 - end - - # 出目がピンゾロの時にはそこで終了 - if dice_raw <= 2 - diceResultTotals << dice_raw.to_s - diceResults << diceText.to_s - rateResults << "**" - - round += 1 - break - end - - dice += getAdditionalDiceValue(dice, values) - - dice = 2 if dice < 2 - dice = 12 if dice > 12 - - currentKey = [key + round * rateUp, keyMax].min - debug("currentKey", currentKey) - rateValue = newRates[dice][currentKey] - debug("rateValue", rateValue) - - totalValue += rateValue - diceOnlyTotal += dice - - diceResultTotals << dice.to_s - diceResults << diceText.to_s - rateResults << (dice > 2 ? rateValue : "**") - - round += 1 - - break unless dice >= crit - end - - output += getResultText(totalValue, addValue, diceResults, diceResultTotals, - rateResults, diceOnlyTotal, round, half) - - return output - end - - def getAdditionalString(_string, output) - values = {} - return output, values - end - - def getAdditionalDiceValue(_dice, _values) - 0 - end - - def getCriticalFromString(string, half) - crit = half ? 13 : 10 - - regexp = /c\[(\d+)\]/i - - if regexp =~ string - crit = Regexp.last_match(1).to_i - crit = 3 if crit < 3 # エラートラップ(クリティカル値が3未満なら3とする) - string = string.gsub(regexp, '') - end - - return crit, string - end - - def getDiceChangesFromString(string) - firstDiceChanteTo = 0 - firstDiceChangeModify = 0 - - regexp = /m\[([\d\+\-]+)\]/i - - if regexp =~ string - firstDiceChangeModify = Regexp.last_match(1) - - unless /[\+\-]/ =~ firstDiceChangeModify - firstDiceChanteTo = firstDiceChangeModify.to_i - firstDiceChangeModify = 0 - end - - string = string.gsub(regexp, '') - end - - return firstDiceChanteTo, firstDiceChangeModify, string - end - - def getRateUpFromString(string) - rateUp = 0 - return rateUp, string - end - - def getKeyAndAddValueFromString(string) - key = nil - addValue = 0 - - if /K(\d+)([\d\+\-]*)/i =~ string # ボーナスの抽出 - key = Regexp.last_match(1) - if Regexp.last_match(2) - addValue = parren_killer("(" + Regexp.last_match(2) + ")").to_i - end - else - key = string - end - - return key, addValue - end - - def getSW2_0_RatingTable - rate_sw2_0 = [ - # 0 - '*,0,0,0,1,2,2,3,3,4,4', - '*,0,0,0,1,2,3,3,3,4,4', - '*,0,0,0,1,2,3,4,4,4,4', - '*,0,0,1,1,2,3,4,4,4,5', - '*,0,0,1,2,2,3,4,4,5,5', - '*,0,1,1,2,2,3,4,5,5,5', - '*,0,1,1,2,3,3,4,5,5,5', - '*,0,1,1,2,3,4,4,5,5,6', - '*,0,1,2,2,3,4,4,5,6,6', - '*,0,1,2,3,3,4,4,5,6,7', - '*,1,1,2,3,3,4,5,5,6,7', - # 11 - '*,1,2,2,3,3,4,5,6,6,7', - '*,1,2,2,3,4,4,5,6,6,7', - '*,1,2,3,3,4,4,5,6,7,7', - '*,1,2,3,4,4,4,5,6,7,8', - '*,1,2,3,4,4,5,5,6,7,8', - '*,1,2,3,4,4,5,6,7,7,8', - '*,1,2,3,4,5,5,6,7,7,8', - '*,1,2,3,4,5,6,6,7,7,8', - '*,1,2,3,4,5,6,7,7,8,9', - '*,1,2,3,4,5,6,7,8,9,10', - # 21 - '*,1,2,3,4,6,6,7,8,9,10', - '*,1,2,3,5,6,6,7,8,9,10', - '*,2,2,3,5,6,7,7,8,9,10', - '*,2,3,4,5,6,7,7,8,9,10', - '*,2,3,4,5,6,7,8,8,9,10', - '*,2,3,4,5,6,8,8,9,9,10', - '*,2,3,4,6,6,8,8,9,9,10', - '*,2,3,4,6,6,8,9,9,10,10', - '*,2,3,4,6,7,8,9,9,10,10', - '*,2,4,4,6,7,8,9,10,10,10', - # 31 - '*,2,4,5,6,7,8,9,10,10,11', - '*,3,4,5,6,7,8,10,10,10,11', - '*,3,4,5,6,8,8,10,10,10,11', - '*,3,4,5,6,8,9,10,10,11,11', - '*,3,4,5,7,8,9,10,10,11,12', - '*,3,5,5,7,8,9,10,11,11,12', - '*,3,5,6,7,8,9,10,11,12,12', - '*,3,5,6,7,8,10,10,11,12,13', - '*,4,5,6,7,8,10,11,11,12,13', - '*,4,5,6,7,9,10,11,11,12,13', - # 41 - '*,4,6,6,7,9,10,11,12,12,13', - '*,4,6,7,7,9,10,11,12,13,13', - '*,4,6,7,8,9,10,11,12,13,14', - '*,4,6,7,8,10,10,11,12,13,14', - '*,4,6,7,9,10,10,11,12,13,14', - '*,4,6,7,9,10,10,12,13,13,14', - '*,4,6,7,9,10,11,12,13,13,15', - '*,4,6,7,9,10,12,12,13,13,15', - '*,4,6,7,10,10,12,12,13,14,15', - '*,4,6,8,10,10,12,12,13,15,15', - # 51 - '*,5,7,8,10,10,12,12,13,15,15', - '*,5,7,8,10,11,12,12,13,15,15', - '*,5,7,9,10,11,12,12,14,15,15', - '*,5,7,9,10,11,12,13,14,15,16', - '*,5,7,10,10,11,12,13,14,16,16', - '*,5,8,10,10,11,12,13,15,16,16', - '*,5,8,10,11,11,12,13,15,16,17', - '*,5,8,10,11,12,12,13,15,16,17', - '*,5,9,10,11,12,12,14,15,16,17', - '*,5,9,10,11,12,13,14,15,16,18', - # 61 - '*,5,9,10,11,12,13,14,16,17,18', - '*,5,9,10,11,13,13,14,16,17,18', - '*,5,9,10,11,13,13,15,17,17,18', - '*,5,9,10,11,13,14,15,17,17,18', - '*,5,9,10,12,13,14,15,17,18,18', - '*,5,9,10,12,13,15,15,17,18,19', - '*,5,9,10,12,13,15,16,17,19,19', - '*,5,9,10,12,14,15,16,17,19,19', - '*,5,9,10,12,14,16,16,17,19,19', - '*,5,9,10,12,14,16,17,18,19,19', - # 71 - '*,5,9,10,13,14,16,17,18,19,20', - '*,5,9,10,13,15,16,17,18,19,20', - '*,5,9,10,13,15,16,17,19,20,21', - '*,6,9,10,13,15,16,18,19,20,21', - '*,6,9,10,13,16,16,18,19,20,21', - '*,6,9,10,13,16,17,18,19,20,21', - '*,6,9,10,13,16,17,18,20,21,22', - '*,6,9,10,13,16,17,19,20,22,23', - '*,6,9,10,13,16,18,19,20,22,23', - '*,6,9,10,13,16,18,20,21,22,23', - # 81 - '*,6,9,10,13,17,18,20,21,22,23', - '*,6,9,10,14,17,18,20,21,22,24', - '*,6,9,11,14,17,18,20,21,23,24', - '*,6,9,11,14,17,19,20,21,23,24', - '*,6,9,11,14,17,19,21,22,23,24', - '*,7,10,11,14,17,19,21,22,23,25', - '*,7,10,12,14,17,19,21,22,24,25', - '*,7,10,12,14,18,19,21,22,24,25', - '*,7,10,12,15,18,19,21,22,24,26', - '*,7,10,12,15,18,19,21,23,25,26', - # 91 - '*,7,11,13,15,18,19,21,23,25,26', - '*,7,11,13,15,18,20,21,23,25,27', - '*,8,11,13,15,18,20,22,23,25,27', - '*,8,11,13,16,18,20,22,23,25,28', - '*,8,11,14,16,18,20,22,23,26,28', - '*,8,11,14,16,19,20,22,23,26,28', - '*,8,12,14,16,19,20,22,24,26,28', - '*,8,12,15,16,19,20,22,24,27,28', - '*,8,12,15,17,19,20,22,24,27,29', - '*,8,12,15,18,19,20,22,24,27,30', - ] - - return rate_sw2_0 - end - - def getNewRates(rate_sw2_0) - rate_3 = [] - rate_4 = [] - rate_5 = [] - rate_6 = [] - rate_7 = [] - rate_8 = [] - rate_9 = [] - rate_10 = [] - rate_11 = [] - rate_12 = [] - zeroArray = [] - - rate_sw2_0.each do |rateText| - rate_arr = rateText.split(/,/) - zeroArray.push(0) - rate_3.push(rate_arr[1].to_i) - rate_4.push(rate_arr[2].to_i) - rate_5.push(rate_arr[3].to_i) - rate_6.push(rate_arr[4].to_i) - rate_7.push(rate_arr[5].to_i) - rate_8.push(rate_arr[6].to_i) - rate_9.push(rate_arr[7].to_i) - rate_10.push(rate_arr[8].to_i) - rate_11.push(rate_arr[9].to_i) - rate_12.push(rate_arr[10].to_i) - end - - if @rating_table == 1 - # 完全版準拠に差し替え - rate_12[31] = rate_12[32] = rate_12[33] = 10 - end - - newRates = [zeroArray, zeroArray, zeroArray, rate_3, rate_4, rate_5, rate_6, rate_7, rate_8, rate_9, rate_10, rate_11, rate_12] - - return newRates - end - - def rollDice(_values) - dice, diceText = roll(2, 6) - return dice, diceText - end - - # @param rating_total [Integer] - # @param modifier [Integer] - # @param diceResults [Array] - # @param diceResultTotals [Array] - # @param rateResults [Array] - # @param dice_total [Integer] - # @param round [Integer] - # @param half [Boolean] - def getResultText(rating_total, modifier, diceResults, diceResultTotals, - rateResults, dice_total, round, half) - sequence = [] - - sequence.push("2D:[#{diceResults.join(' ')}]=#{diceResultTotals.join(',')}") - - if dice_total <= 2 - sequence.push(rateResults.join(',')) - sequence.push("自動的失敗") - return sequence.join(" > ") - end - - # rate回数が1回で、修正値がない時には途中式と最終結果が一致するので、途中式を省略する - if rateResults.size > 1 || modifier != 0 - text = rateResults.join(',') + format_modifier(modifier) - if half - text = "(#{text})/2" - end - sequence.push(text) - elsif half - sequence.push("#{rateResults.first}/2") - end - - if round > 1 - round_text = "#{round - 1}回転" - sequence.push(round_text) - end - - total = rating_total + modifier - if half - total = (total / 2.0).ceil - end - - total_text = total.to_s - sequence.push(total_text) - - return sequence.join(" > ") - end - - def setRatingTable(tnick) - mode_str = "" - pre_mode = @rating_table - - if /(\d+)/ =~ tnick - @rating_table = Regexp.last_match(1).to_i - if @rating_table > 1 - mode_str = "2.0-mode" - @rating_table = 2 - elsif @rating_table > 0 - mode_str = "new-mode" - @rating_table = 1 - else - mode_str = "old-mode" - @rating_table = 0 - end - else - case tnick - when /old/i - @rating_table = 0 - mode_str = "old-mode" - when /new/i - @rating_table = 1 - mode_str = "new-mode" - when /2\.0/i - @rating_table = 2 - mode_str = "2.0-mode" - end - end - - return '1' if @rating_table == pre_mode - - return "RatingTableを#{mode_str}に変更しました" - end -end diff --git a/src/src_bcdice/diceBot/SwordWorld2_0.rb b/src/src_bcdice/diceBot/SwordWorld2_0.rb deleted file mode 100644 index 8958aa54e..000000000 --- a/src/src_bcdice/diceBot/SwordWorld2_0.rb +++ /dev/null @@ -1,307 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/ArithmeticEvaluator' -require 'utils/modifier_formatter' - -require 'diceBot/SwordWorld' - -class SwordWorld2_0 < SwordWorld - # ゲームシステムの識別子 - ID = 'SwordWorld2.0' - - # ゲームシステム名 - NAME = 'ソードワールド2.0' - - # ゲームシステム名の読みがな - SORT_KEY = 'そおとわあると2.0' - - # ダイスボットの使い方 - HELP_MESSAGE = <=30 - -・成長 (Gr) - 末尾に数字を付加することで、複数回の成長をまとめて行えます。 - 例)Gr3 - -・防御ファンブル表 (FT) - 防御ファンブル表を出すことができます。 - -・絡み効果表 (TT) - 絡み効果表を出すことができます。 -INFO_MESSAGE_TEXT - - setPrefixes(['H?K\d+.*', 'Gr(\d+)?', '2D6?@\d+.*', 'FT', 'TT']) - - # 超越判定のノード - class TranscendentTest - include ModifierFormatter - - # @param [Integer] critical_value クリティカル値 - # @param [Integer] modifier 修正値 - # @param [String, nil] cmp_op 比較演算子(> または >=) - # @param [Integer, nil] target 目標値 - def initialize(critical_value, modifier, cmp_op, target) - @critical_value = critical_value - @modifier = modifier - @cmp_op = cmp_op - @target = target - - @modifier_str = format_modifier(@modifier) - @expression = node_expression() - end - - # 超越判定を行う - # @param [SwordWorld2_0] bot ダイスボット - # @return [String] - def execute(bot) - if @critical_value < 3 - return "(#{@expression}) > クリティカル値が小さすぎます。3以上を指定してください。" - end - - first_value_group = roll_2d6(bot) - value_groups = [first_value_group] - - fumble = first_value_group == [1, 1] - critical = first_value_group == [6, 6] - - if !fumble && !critical - while sum_of_dice(value_groups.last) >= @critical_value - value_groups.push(roll_2d6(bot)) - end - end - - sum = sum_of_dice(value_groups) - total_sum = sum + @modifier - - parts = [ - "(#{@expression})", - "#{dice_str(value_groups, sum)}#{@modifier_str}", - total_sum, - @target && result_str(total_sum, value_groups.length, fumble, critical) - ].compact - - return parts.join(' > ') - end - - private - - # 数式表記を返す - # @return [String] - def node_expression - lhs = "2D6@#{@critical_value}#{@modifier_str}" - - return @target ? "#{lhs}#{@cmp_op}#{@target}" : lhs - end - - # 出目の合計を返す - # @param [(Integer, Integer), Array<(Integer, Integer)>] value_groups - # 出目のグループまたはその配列 - # @return [Integer] - def sum_of_dice(value_groups) - # TODO: Ruby 2.4以降では Array#sum が使える - value_groups.flatten.reduce(0, &:+) - end - - # ダイス部分の文字列を返す - # @param [Array<(Integer, Integer)>] value_groups 出目のグループの配列 - # @param [Integer] sum 出目の合計 - # @return [String] - def dice_str(value_groups, sum) - value_groups_str = - value_groups. - map { |values| "[#{values.join(',')}]" }. - join - - return "#{sum}#{value_groups_str}" - end - - # 判定結果の文字列を返す - # @param [Integer] total_sum 合計値 - # @param [Integer] n_value_groups 出目のグループの数 - # @param [Boolean] fumble ファンブルかどうか - # @param [Boolean] critical クリティカルかどうか - # @return [String] - def result_str(total_sum, n_value_groups, fumble, critical) - return '自動的失敗' if fumble - return '自動的成功' if critical - - if total_sum.send(@cmp_op, @target) - # 振り足しが行われ、合計値が41以上ならば「超成功」 - n_value_groups >= 2 && total_sum >= 41 ? '超成功' : '成功' - else - '失敗' - end - end - - # 2D6を振る - # @return [(Integer, Integer)] 出目のグループ - def roll_2d6(bot) - Array.new(2) { bot.roll(1, 6)[0] } - end - end - - def initialize - rating_table = 2 - super() - @rating_table = rating_table - end - - # 超越判定のパターン - TRANSCENDENT_TEST_RE = /\A2D6?@(\d+)([-+\d]+)?(?:(>=?)(\d+))?/.freeze - - def rollDiceCommand(command) - case command - when /^Gr(\d+)?/i - if command =~ /^Gr(\d+)/i - growth(Regexp.last_match(1).to_i) - else - growth - end - when TRANSCENDENT_TEST_RE - m = Regexp.last_match - - critical_value = m[1].to_i - modifier = m[2] ? ArithmeticEvaluator.new.eval(m[2]) : 0 - cmp_op = m[3] - target = m[3] && m[4].to_i - - node = TranscendentTest.new(critical_value, modifier, cmp_op, target) - node.execute(self) - when 'FT' - get_fumble_table - when 'TT' - get_tangle_table - else - super(command) - end - end - - def getRateUpFromString(string) - rateUp = 0 - - regexp = /r\[(\d+)\]/i - - if regexp === string - rateUp = Regexp.last_match(1).to_i - string = string.gsub(regexp, '') - end - - return rateUp, string - end - - def getAdditionalString(string, output) - output, values = super(string, output) - - isGratestFortune, string = getGratestFortuneFromString(string) - - values['isGratestFortune'] = isGratestFortune - output += "gf" if isGratestFortune - - return output, values - end - - def rollDice(values) - unless values['isGratestFortune'] - return super(values) - end - - dice, diceText = roll(1, 6) - - dice *= 2 - diceText = "#{diceText},#{diceText}" - - return dice, diceText - end - - def getGratestFortuneFromString(string) - isGratestFortune = false - - regexp = /gf/i - - if regexp === string - isGratestFortune = true - string = string.gsub(regexp, '') - end - - return isGratestFortune, string - end - - def growth(count = 1) - ((1..count).map { growth_step }).join " | " - end - - def growth_step - d1, = roll(1, 6) - d2, = roll(1, 6) - - a1 = get_ability_by_dice(d1) - a2 = get_ability_by_dice(d2) - - return a1 != a2 ? "[#{d1},#{d2}]->(#{a1} or #{a2})" : "[#{d1},#{d2}]->(#{a1})" - end - - def get_ability_by_dice(dice) - ['器用度', '敏捷度', '筋力', '生命力', '知力', '精神力'][dice - 1] - end - - def get_fumble_table() - table = [ - 'この表を2回振り、その両方を適用する。(同じ出目による影響は累積しない)。この自動失敗により得られる経験点は、+50点される', - 'ダメージに、攻撃者を強化している「剣のかけら」の数が追加される', - 'ダメージに、攻撃者の「レベル」が追加される', - 'ダメージ決定を2回行い、より高い方を採用する', - '合算ダメージを2倍する', - '防護点無効' - ] - text, num = get_table_by_1d6(table) - return "防御ファンブル表(#{num}) → #{text}" - end - - def get_tangle_table() - table = [ - '頭や顔:牙や噛みつきなどにおける命中力判定及び、魔法の行使やブレスに-2のペナルティ修正を受ける', - '武器や盾:武器の使用不可、又は盾の回避力修正及び防護点を無効化する', - '腕や手:武器や爪などにおける命中力判定に-2のペナルティ修正、盾を持つ腕方の腕ならその盾の回避力修正及び防護点を無効化する', - '脚や足:移動不可、更に回避力判定に-2のペナルティ修正を受ける ※両足に絡んでも累積しない', - '胴体:生命・精神抵抗力を基準値に用いる判定を除き、あらゆる行為判定に-1のペナルティ修正を受ける', - '特殊:尻尾や翼などに命中。絡められた部位を使用する判定において-2のペナルティ修正、またはそこが使えていたことによるボーナス修正を失う ※存在しない場合は決め直し' - ] - text, num = get_table_by_1d6(table) - return "絡み効果表(#{num}) → #{text}" - end -end diff --git a/src/src_bcdice/diceBot/SwordWorld2_5.rb b/src/src_bcdice/diceBot/SwordWorld2_5.rb deleted file mode 100644 index 9fe76bea3..000000000 --- a/src/src_bcdice/diceBot/SwordWorld2_5.rb +++ /dev/null @@ -1,118 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/SwordWorld2_0' - -class SwordWorld2_5 < SwordWorld2_0 - # ゲームシステムの識別子 - ID = 'SwordWorld2.5' - - # ゲームシステム名 - NAME = 'ソードワールド2.5' - - # ゲームシステム名の読みがな - SORT_KEY = 'そおとわあると2.5' - - # ダイスボットの使い方 - HELP_MESSAGE = <=30 - -・成長 (Gr) - 末尾に数字を付加することで、複数回の成長をまとめて行えます。 - 例)Gr3 - -・防御ファンブル表 (FT) - 防御ファンブル表を出すことができます。 - -・絡み効果表 (TT) - 絡み効果表を出すことができます。 -INFO_MESSAGE_TEXT - - setPrefixes(['H?K\d+.*', 'Gr(\d+)?', '2D6?@\d+.*', 'FT', 'TT']) - - # コマンド実行前にメッセージを置換する - # @param [String] string 受信したメッセージ - # @return [String] - def changeText(string) - # TODO: Ruby 2.4以降では Regexp#match? を使うこと - return string unless RATING_TABLE_RE_FOR_CHANGE_TEXT.match(string) - - super(string).gsub(/#([-+]?\d+)/) do - modifier = Regexp.last_match(1).to_i - "a[#{format_modifier(modifier)}]" - end - end - - def getRatingCommandStrings - super + "aA" - end - - def getAdditionalString(string, output) - output, values = super(string, output) - - keptDiceChangeModify, string = getKeptDiceChangesFromString(string) - - values['keptDiceChangeModify'] = keptDiceChangeModify - output += "a[#{keptDiceChangeModify}]" if keptDiceChangeModify != 0 - - return output, values - end - - def getAdditionalDiceValue(dice, values) - keptDiceChangeModify = values['keptDiceChangeModify'].to_i - - value = 0 - value += keptDiceChangeModify.to_i if (keptDiceChangeModify != 0) && (dice != 2) - - return value - end - - def getKeptDiceChangesFromString(string) - keptDiceChangeModify = 0 - regexp = /a\[([\+\-]\d+)\]/i - if regexp =~ string - keptDiceChangeModify = Regexp.last_match(1) - string = string.gsub(regexp, '') - end - return keptDiceChangeModify, string - end -end diff --git a/src/src_bcdice/diceBot/TherapieSein.rb b/src/src_bcdice/diceBot/TherapieSein.rb deleted file mode 100644 index 4a372bb2d..000000000 --- a/src/src_bcdice/diceBot/TherapieSein.rb +++ /dev/null @@ -1,88 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class TherapieSein < DiceBot - # ゲームシステムの識別子 - ID = 'TherapieSein' - - # ゲームシステム名 - NAME = 'セラフィザイン' - - # ゲームシステム名の読みがな - SORT_KEY = 'せらふいさいん' - - # ダイスボットの使い方 - HELP_MESSAGE = <=#{target}") - - result = "(2D6#{modifyText}#{targetText})" - result += " > #{dice}(#{diceText})#{modifyText}" - - if hasCritical && (dice == 12) - result += " > クリティカル!" - return result - end - - result += " > #{successValue}#{targetText}" - - return result if target == 0 - - if successValue >= target - result += " > 【成功】" - else - result += " > 【失敗】" - end - - return result - end - - def getValueText(value) - return "" if value == 0 - return value.to_s if value < 0 - - return "\+#{value}" - end -end diff --git a/src/src_bcdice/diceBot/TokumeiTenkousei.rb b/src/src_bcdice/diceBot/TokumeiTenkousei.rb deleted file mode 100644 index 11ad9e4ce..000000000 --- a/src/src_bcdice/diceBot/TokumeiTenkousei.rb +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class TokumeiTenkousei < DiceBot - # ゲームシステムの識別子 - ID = 'TokumeiTenkousei' - - # ゲームシステム名 - NAME = '特命転攻生' - - # ゲームシステム名の読みがな - SORT_KEY = 'とくめいてんこうせい' - - # ダイスボットの使い方 - HELP_MESSAGE = "「1の出目でEPP獲得」、判定時の「成功」「失敗」「ゾロ目で自動振り足し」を判定。\n" - - def initialize - super - @sendMode = 2 - @sortType = 1 - @sameDiceRerollCount = 1 # ゾロ目で振り足し(0=無し, 1=全部同じ目, 2=ダイスのうち2個以上同じ目) - @sameDiceRerollType = 2 # ゾロ目で振り足しのロール種別(0=判定のみ, 1=ダメージのみ, 2=両方) - end - - def check_nD6(total, _dice_total, _dice_list, cmp_op, target) - if cmp_op != :>= || target == "?" - return '' - end - - if total >= target - return " > 成功" - else - return " > 失敗" - end - end - - # 特命転校生用エキストラパワーポイント獲得 - def getDiceRolledAdditionalText(n1, _n_max, dice_max) - debug('getExtraPowerPointTextForTokumeiTenkousei n1, dice_max', n1, dice_max) - - if (n1 != 0) && (dice_max == 6) - point = n1 * 5 - return " > #{point}EPP獲得" - end - - return '' - end -end diff --git a/src/src_bcdice/diceBot/TokyoGhostResearch.rb b/src/src_bcdice/diceBot/TokyoGhostResearch.rb deleted file mode 100644 index 923d8f510..000000000 --- a/src/src_bcdice/diceBot/TokyoGhostResearch.rb +++ /dev/null @@ -1,119 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class TokyoGhostResearch < DiceBot - # ゲームシステムの識別子 - ID = 'TokyoGhostResearch' - - # ゲームシステム名 - NAME = '東京ゴーストリサーチ' - - # ゲームシステム名の読みがな - SORT_KEY = 'とうきようこおすとりさあち' - - # ダイスボットの使い方 - HELP_MESSAGE = <={目標値} - 例:目標値「5」の場合、5~0で成功 -各種表 - ・導入表 OP - ・一般トラブル表 TB -MESSAGETEXT - - # ダイスボットで使用するコマンドを配列で列挙する - setPrefixes([ - 'OP', 'TB', 'TK?\(\d+\)' - ]) - - def rollDiceCommand(command) - output = - case command.upcase - - when /TK/i - return getCheckResult(command) - - when 'OP' - tgr_opening_table - when 'TB' - tgr_common_trouble_table - end - - return output - end - - def getCheckResult(command) - output = "" - diff = 0 - - if /TK?<=(\d+)/i =~ command - diff = Regexp.last_match(2).to_i - end - - if diff > 0 - output += "(1D10<=#{diff})" - - total_n, = roll(1, 10) - output += ' > ' + total_n.to_s - output += ' > ' + getCheckResultText(total_n, diff) - end - return output - end - - def getCheckResultText(total_n, diff) - if total_n >= diff - result = "成功" - else - result = "失敗" - end - - return result - end - - # 導入表(1d10)[OP] - def tgr_opening_table - name = "導入表" - table = [ - [1, "【病休中断】体調不良または怪我で療養中だったが強制召喚された。"], - [2, "【忙殺中】別の業務で忙殺中であった。"], - [3, "【出張帰り】遠方での仕事から戻ったばかり。"], - [4, "【休暇取り消し】休暇中だったが呼び戻された。"], - [5, "【平常運転】いつもどおりの仕事中だった。"], - [6, "【休暇明け】十分に休養をとったあとで、心身ともに充実している。"], - [7, "【人生の岐路】人生の岐路にまさに差し掛かったところであった。"], - [8, "【同窓会】かつての同級生に会い、差を実感したばかりだった。"], - [9, "【転職活動中】転職を考えて求人サイトを見ているところだった。"], - [10, "【サボリ中】仕事をサボっているところに呼び出しがあった。"], - ] - return get_1d10_table_result(name, table) - end - - # 一般トラブル表(1d10)[TB] - def tgr_common_trouble_table - name = "一般トラブル表" - table = [ - [1, "トラブルが生じたが、間一髪、危機を脱した。【ダメージなし】"], - [2, "どうにかタスクを処理したが、非常に疲労してしまった。【肉体ダメージ1点】"], - [3, "タスク処理の過程で負傷してしまった。【肉体ダメージ1点】"], - [4, "恐怖や混乱、ストレスなどで精神の均衡を崩してしまった。【精神ダメージ1点】"], - [5, "過去のトラウマなどを思い出し、気分が沈んでしまった。【精神ダメージ1点】"], - [6, "自身の信用をキズつけたり、汚名を背負ってしまった。【環境ダメージ1点】"], - [7, "会社や上司の不興を買ってしまった。【環境ダメージ1点】"], - [8, "疲労困憊で動くこともままならない。【肉体ダメージ1点+精神ダメージ1点】"], - [9, "負傷したうえ、会社に損害を与えてしまった。【肉体ダメージ1点+環境ダメージ1点】"], - [10, "上司から厳しく叱責され、まずい立場になった。【精神ダメージ1点+環境ダメージ1点】"], - ] - return get_1d10_table_result(name, table) - end - - def get_1d10_table_result(name, table) - dice, = roll(1, 10) - output = get_table_by_number(dice, table) - return get_table_result(name, dice, output) - end - - def get_table_result(name, dice, output) - return "#{name}(#{dice}) > #{output}" - end -end diff --git a/src/src_bcdice/diceBot/TokyoNova.rb b/src/src_bcdice/diceBot/TokyoNova.rb deleted file mode 100644 index b05b549a3..000000000 --- a/src/src_bcdice/diceBot/TokyoNova.rb +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class TokyoNova < DiceBot - # ゲームシステムの識別子 - ID = 'TokyoNova' - - # ゲームシステム名 - NAME = 'トーキョーN◎VA' - - # ゲームシステム名の読みがな - SORT_KEY = 'とおきよおのは' - - # ダイスボットの使い方 - HELP_MESSAGE = "※このダイスボットは部屋のシステム名表示用となります。\n" -end diff --git a/src/src_bcdice/diceBot/Torg.rb b/src/src_bcdice/diceBot/Torg.rb deleted file mode 100644 index 58059d6ae..000000000 --- a/src/src_bcdice/diceBot/Torg.rb +++ /dev/null @@ -1,368 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Torg < DiceBot - # ゲームシステムの識別子 - ID = 'TORG' - - # ゲームシステム名 - NAME = 'トーグ' - - # ゲームシステム名の読みがな - SORT_KEY = 'とおく' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 - output = "#{sk_bonus}[#{dice_str}]+#{mod}" - else - output = "#{sk_bonus}[#{dice_str}]#{mod}" - end - else - output = "#{sk_bonus}[#{dice_str}]" - end - - output += " > " + (sk_bonus + mod).to_s - - if skilled != unskilled - output += "(技能無" + (get_torg_bonus(unskilled) + mod).to_s + ")" - end - - output = "#{nick_e}: (#{string}) > #{output}" - - return output - end - - def torg_dice - isSkilledCritical = true - isCritical = true - skilled = 0 - unskilled = 0 - dice_str = "" - - while isSkilledCritical - dummy = roll(1, 20, 0) - dice_n = dummy.shift - skilled += dice_n - unskilled += dice_n if isCritical - - dice_str += "," unless dice_str.empty? - dice_str += dice_n.to_s - - if dice_n == 20 - isCritical = false - elsif dice_n != 10 - isSkilledCritical = false - isCritical = false - end - end - - return skilled, unskilled, dice_str - end - - def rollDiceCommand(command) - string = command.upcase - - output = '1' - ttype = "" - value = 0 - - return '1' unless /([RITMDB]T)(\d+([\+\-]\d+)*)/i =~ string - - type = Regexp.last_match(1) - num = Regexp.last_match(2) - - case type - when 'RT' - value = parren_killer("(0#{num})").to_i - output = get_torg_success_level(value) - ttype = '一般結果' - when 'IT' - value = parren_killer("(0#{num})").to_i - output = get_torg_interaction_result_intimidate_test(value) - ttype = '威圧/威嚇' - when 'TT' - value = parren_killer("(0#{num})").to_i - output = get_torg_interaction_result_taunt_trick(value) - ttype = '挑発/トリック' - when 'MT' - value = parren_killer("(0#{num})").to_i - output = get_torg_interaction_result_maneuver(value) - ttype = '間合い' - when 'DT' - value = parren_killer("(0#{num})").to_i - if string =~ /ODT/i - output = get_torg_damage_ords(value) - ttype = 'オーズダメージ' - else - output = get_torg_damage_posibility(value) - ttype = 'ポシビリティ能力者ダメージ' - end - when 'BT' - output, value = get_torg_bonus_text(num) - ttype = 'ボーナス' - end - - if ttype != '' - output = "#{ttype}表[#{value}] > #{output}" - end - - return output - end - - # 一般結果表 成功度 - def get_torg_success_level(value) - success_table = [ - [0, "ぎりぎり"], - [1, "ふつう"], - [3, "まあよい"], - [7, "かなりよい"], - [12, "すごい" ] - ] - - return get_torg_table_result(value, success_table) - end - - # 対人行為結果表 - # 威圧/威嚇(intimidate/Test) - def get_torg_interaction_result_intimidate_test(value) - interaction_results_table = [ - [0, "技能なし"], - [5, "萎縮"], - [10, "逆転負け"], - [15, "モラル崩壊"], - [17, "プレイヤーズコール" ] - ] - - return get_torg_table_result(value, interaction_results_table) - end - - # 挑発/トリック(Taunt/Trick) - def get_torg_interaction_result_taunt_trick(value) - interaction_results_table = [ - [0, "技能なし"], - [5, "萎縮"], - [10, "逆転負け"], - [15, "高揚/逆転負け"], - [17, "プレイヤーズコール" ] - ] - - return get_torg_table_result(value, interaction_results_table) - end - - # 間合い(maneuver) - def get_torg_interaction_result_maneuver(value) - interaction_results_table = [ - [0, "技能なし"], - [5, "疲労"], - [10, "萎縮/疲労"], - [15, "逆転負け/疲労"], - [17, "プレイヤーズコール" ] - ] - - return get_torg_table_result(value, interaction_results_table) - end - - def get_torg_table_result(value, table) - output = '1' - - table.each do |item| - item_index = item[0] - - if item_index > value - break - end - - output = item[1] - end - - return output - end - - # オーズダメージチャート - def get_torg_damage_ords(value) - damage_table_ords = [ - [0, "1"], - [1, "O1"], - [2, "K1"], - [3, "O2"], - [4, "O3"], - [5, "K3"], - [6, "転倒 K/O4"], - [7, "転倒 K/O5"], - [8, "1レベル負傷 K/O7"], - [9, "1レベル負傷 K/O9"], - [10, "1レベル負傷 K/O10"], - [11, "2レベル負傷 K/O11"], - [12, "2レベル負傷 KO12"], - [13, "3レベル負傷 KO13"], - [14, "3レベル負傷 KO14"], - [15, "4レベル負傷 KO15"] - ] - - return get_torg_damage(value, - 4, - "レベル負傷 KO15", - damage_table_ords) - end - - # ポシビリティー能力者ダメージチャート - def get_torg_damage_posibility(value) - damage_table_posibility = [ - [0, "1"], - [1, "1"], - [2, "O1"], - [3, "K2"], - [4, "2"], - [5, "O2"], - [6, "転倒 O2"], - [7, "転倒 K2"], - [8, "転倒 K2"], - [9, "1レベル負傷 K3"], - [10, "1レベル負傷 K4"], - [11, "1レベル負傷 O4"], - [12, "1レベル負傷 K5"], - [13, "2レベル負傷 O4"], - [14, "2レベル負傷 KO5"], - [15, "3レベル負傷 KO5"] - ] - - return get_torg_damage(value, - 3, - "レベル負傷 KO5", - damage_table_posibility) - end - - def get_torg_damage(value, maxDamage, maxDamageString, damage_table) - if value < 0 - return '1' - end - - table_max_value = damage_table.length - 1 - - if value <= table_max_value - return get_torg_table_result(value, damage_table) - end - - over_kill_damage = ((value - table_max_value) / 2).to_i - return "" + (over_kill_damage + maxDamage).to_s + maxDamageString - end - - def get_torg_bonus_text(num) - val_arr = num.split(/\+/) - value = val_arr.shift.to_i - - mod = parren_killer("(0#{val_arr.join('+')})").to_i - resultValue = get_torg_bonus(value) - - debug('TORG BT resultValue', resultValue) - debug('TORG BT mod', mod) - - if mod == 0 - output = resultValue.to_s - else - output = getTorgBonusOutputTextWhenModDefined(value, resultValue, mod) - value = "#{value}+#{mod}" - end - - return output, value - end - - def getTorgBonusOutputTextWhenModDefined(value, resultValue, mod) - debug('getTorgBonusOutputTextWhenModDefined value, mod', value, mod) - if mod > 0 - return "#{resultValue}[#{value}]+#{mod} > #{resultValue + mod}" - else - debug('resultValue', resultValue) - debug('mod', mod) - return "#{resultValue}[#{value}]#{mod} > #{resultValue + mod}" - end - end - - def get_torg_bonus(value) - bonus_table = [ - [1, -12], - [2, -10], - [3, -8], - [5, -5], - [7, -2], - [9, -1], - [11, 0], - [13, 1], - [15, 2], - [16, 3], - [17, 4], - [18, 5], - [19, 6], - [20, 7] - ] - - bonus = get_torg_table_result(value, bonus_table) - - if value > 20 - over_value_bonus = ((value - 21) / 5).to_i + 1 - bonus += over_value_bonus - end - - return bonus - end -end diff --git a/src/src_bcdice/diceBot/Torg1_5.rb b/src/src_bcdice/diceBot/Torg1_5.rb deleted file mode 100644 index 25ee2afb1..000000000 --- a/src/src_bcdice/diceBot/Torg1_5.rb +++ /dev/null @@ -1,136 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'diceBot/Torg' - -class Torg1_5 < Torg - # ゲームシステムの識別子 - ID = 'TORG1.5' - - # ゲームシステム名 - NAME = 'トーグ1.5版' - - # ゲームシステム名の読みがな - SORT_KEY = 'とおく1.5' - - setPrefixes(Torg.prefixes) - - # 一般結果表 成功度 - def get_torg_success_level(value) - success_table = [ - [0, "ぎりぎり"], - [1, "ふつう"], - [3, "まあよい"], - [7, "かなりよい"], - [12, "すごい" ] - ] - - return get_torg_table_result(value, success_table) - end - - # 対人行為結果表 - # 威圧/威嚇(intimidate/Test) - def get_torg_interaction_result_intimidate_test(value) - interaction_results_table = [ - [0, "萎縮"], - [5, "技能なし"], - [10, "逆転負け"], - [15, "モラル崩壊"], - [17, "プレイヤーズコール" ] - ] - - return get_torg_table_result(value, interaction_results_table) - end - - # 挑発/トリック(Taunt/Trick) - def get_torg_interaction_result_taunt_trick(value) - interaction_results_table = [ - [0, "萎縮"], - [5, "技能なし"], - [10, "逆転負け"], - [15, "高揚/逆転負け"], - [17, "プレイヤーズコール" ] - ] - - return get_torg_table_result(value, interaction_results_table) - end - - # 間合い(maneuver) - def get_torg_interaction_result_maneuver(value) - interaction_results_table = [ - [0, "疲労"], - [5, "萎縮"], - [10, "技能なし"], - [15, "逆転負け/疲労"], - [17, "プレイヤーズコール" ] - ] - - return get_torg_table_result(value, interaction_results_table) - end - - # オーズダメージチャート - def get_torg_damage_ords(value) - damage_table_ords = [ - [0, "1"], - [1, "O1"], - [2, "K1"], - [3, "O2"], - [4, "K2"], - [5, "転倒 O3"], - [6, "転倒 K3"], - [7, "転倒 K/O4"], - [8, "1レベル負傷 KO4"], - [9, "1レベル負傷 K/O5"], - [10, "1レベル負傷 KO5"], - [11, "2レベル負傷 K/O6"], - [12, "2レベル負傷 KO6"], - [13, "3レベル負傷 K/O7"], - [14, "3レベル負傷 KO7"], - [15, "4レベル負傷 KO8"] - ] - - return get_torg_damage(value, 4, 8, damage_table_ords) - end - - # ポシビリティー能力者ダメージチャート - def get_torg_damage_posibility(value) - damage_table_posibility = [ - [0, "1"], - [1, "1"], - [2, "O1"], - [3, "K1"], - [4, "2"], - [5, "O2"], - [6, "転倒 K2"], - [7, "転倒 O3"], - [8, "転倒 K3"], - [9, "転倒 K/O3"], - [10, "1レベル負傷 K/O4"], - [11, "1レベル負傷 K/O4"], - [12, "1レベル負傷 KO4"], - [13, "2レベル負傷 K/O5"], - [14, "2レベル負傷 KO5"], - [15, "3レベル負傷 KO5"] - ] - - return get_torg_damage(value, 3, 5, damage_table_posibility) - end - - def get_torg_damage(value, max_damage, max_shock, damage_table) - if value < 0 - return '1' - end - - table_max_value = damage_table.length - 1 - - if value <= table_max_value - return get_torg_table_result(value, damage_table) - end - - over_kill_value = ((value - table_max_value) / 2).to_i - over_kill_damage = max_damage + over_kill_value * 1 - over_kill_shock = max_shock + over_kill_value * 1 - - return "#{over_kill_damage}レベル負傷 KO#{over_kill_shock}" - end -end diff --git a/src/src_bcdice/diceBot/TorgEternity.rb b/src/src_bcdice/diceBot/TorgEternity.rb deleted file mode 100644 index 0ee3ef0b9..000000000 --- a/src/src_bcdice/diceBot/TorgEternity.rb +++ /dev/null @@ -1,410 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class TorgEternity < DiceBot - # ゲームシステムの識別子 - ID = 'TorgEternity' - # ゲームシステム名 - NAME = 'TORG Eternity' - # ゲームシステム名の読みがな - SORT_KEY = 'とおくえたあにてい' - # ダイスボットの使い方 - HELP_MESSAGE = < 0 - output = "#{sk_bonus}[#{dice_str}]+#{mod}" - else - output = "#{sk_bonus}[#{dice_str}]#{mod}" - end - else - output = "#{sk_bonus}[#{dice_str}]" - end - output += " > " + (sk_bonus + mod).to_s - if skilled != unskilled - output += "(技能無" + (get_torg_eternity_bonus(unskilled) + mod).to_s + ")" - end - output = "#{nick_e}: (#{string}) > #{output}" - return output - end - - #################### TORG Eternity ######################## - # ロールコマンド (通常ロール) - def getRolld20DiceCommandResult(command) - debug("Torg Eternity Dice Roll Command ? ", command) - m = /(^|\s)(S)?(TE)/i.match(command) - unless m - return nil - end - - secret = !m[2].nil? - skilled, unskilled, dice_str, mishap = torg_eternity_dice(false, true) - if mishap == 1 - output = "d20ロール(通常) > 1d20[#{dice_str}] > Mishap! 絶対失敗!" - else - value_skilled = format("%+d", get_torg_eternity_bonus(skilled)) - if skilled != unskilled - value_unskilled = format("%+d", get_torg_eternity_bonus(unskilled)) - output = "d20ロール(通常) > 1d20[#{dice_str}] > #{value_skilled}[#{skilled}](技能有) / #{value_unskilled}[#{unskilled}](技能無)" - else - output = "d20ロール(通常) > 1d20[#{dice_str}] > #{value_skilled}[#{skilled}]" - end - end - debug(output, secret) - return output, secret - end - - # ロールコマンド (高揚ロール) - def getUpRollDiceCommandResult(command) - debug("Torg Eternity Dice Roll ( UP ) Command ? ", command) - m = /(^|\s)(S)?(UP)/i.match(command) - unless m - return nil - end - - secret = !m[2].nil? - skilled1, unskilled1, dice_str1, mishap = torg_eternity_dice(false, true) - if mishap == 1 - output = "d20ロール(高揚) > 1d20[#{dice_str1}] > Mishap! 絶対失敗!" - else - skilled2, unskilled2, dice_str2, = torg_eternity_dice(false, false) - subtotal_skilled = skilled1 + skilled2 - subtotal_unskilled = unskilled1 + unskilled2 - value_skilled = format("%+d", get_torg_eternity_bonus(subtotal_skilled)) - if subtotal_skilled != subtotal_unskilled - value_unskilled = format("%+d", get_torg_eternity_bonus(subtotal_unskilled)) - output = "d20ロール(高揚) > 1d20[#{dice_str1}] + 1d20[#{dice_str2}] > #{value_skilled}[#{subtotal_skilled}](技能有) / #{value_unskilled}[#{subtotal_unskilled}](技能無)" - else - output = "d20ロール(高揚) > 1d20[#{dice_str1}] + 1d20[#{dice_str2}] > #{value_skilled}[#{subtotal_skilled}]" - end - end - debug(output, secret) - return output, secret - end - - # ロールコマンド (ポシビリティロール) - def getPossibilityRollDiceCommandResult(command) - debug("Torg Eternity Possibility Roll Command ? ", command) - m = /(^|\s)(S)?(POS)((\d+)(\+\d+)?)/i.match(command) - unless m - return nil - end - - secret = !m[2].nil? - output_modifier = parren_killer("(0#{m[4]})").to_i - skilled, unskilled, dice_str, = torg_eternity_dice(true, false) - subtotal_skilled = skilled + output_modifier - subtotal_unskilled = unskilled + output_modifier - value_skilled = format("%+d", get_torg_eternity_bonus(subtotal_skilled)) - if subtotal_skilled != subtotal_unskilled - value_unskilled = format("%+d", get_torg_eternity_bonus(subtotal_unskilled)) - output = "d20ロール(ポシビリティ) > #{output_modifier}+1d20[#{dice_str}] > #{value_skilled}[#{subtotal_skilled}](技能有) / #{value_unskilled}[#{subtotal_unskilled}](技能無)" - else - output = "d20ロール(ポシビリティ) > #{output_modifier}+1d20[#{dice_str}] > #{value_skilled}[#{subtotal_skilled}]" - end - debug(output, secret) - return output, secret - end - - # ダメージボーナスコマンド - def getBonusDamageDiceCommandResult(command) - debug("TorgEternity Bonus Damage Roll Command ? ", command) - m = /(\d+)(BD)(([\+\-]\d+)*)/i.match(command) - unless m - return nil - end - - number_bonus_die = m[1].to_i - value_modifier, output_modifier = get_torg_eternity_modifier(m[3]) - if number_bonus_die <= 0 - output = "エラーです。xBD (x≧1) として下さい" - else - value_roll, output_roll = get_torg_eternity_damage_bonus_dice(number_bonus_die) - output_value = value_roll + value_modifier - output = "ボーナスダメージロール(#{number_bonus_die}BD#{output_modifier}) > #{value_roll}[#{output_roll}]#{output_modifier} > #{output_value}ダメージ" - end - return output - end - - # 成功レベル表コマンド - def getSuccessLevelDiceCommandResult(command) - debug("TorgEternity Success Level Table Command ? ", command) - m = /(RT|Result)(\-*\d+([\+\-]\d+)*)/i.match(command) - unless m - return nil - end - - value = parren_killer("(0#{m[2]})").to_i - debug(value) - if value < 0 - output = "Failure." - else - output = get_torg_eternity_success_level(value) - end - output = "成功レベル表[#{value}] > #{output}" - debug(output) - return output - end - - # ダメージ結果表コマンド - def getDamageResultDiceCommandResult(command) - debug("TorgEternity Damage Result Table Command ? ", command) - m = /(DT|Damage)(\-*\d+([\+\-]\d+)*)/i.match(command) - unless m - return nil - end - - value = parren_killer("(0#{m[2]})").to_i - debug(value) - output = get_torg_eternity_damage_result(value) - output = "ダメージ結果表[#{value}] > #{output}" - debug(output) - return output - end - - # ロールボーナス表コマンド - def getRollBonusDiceCommandResult(command) - debug("TorgEternity Roll Bonus Table Command ? ", command) - m = /(BT|Bonus)(\d+)(([\+\-]\d+)*)/i.match(command) - unless m - return nil - end - - value_roll = m[2].to_i - output_bonus = get_torg_eternity_bonus(value_roll) - debug(output_bonus) - value_modifier, output_modifier = get_torg_eternity_modifier(m[3]) - if value_roll <= 1 - output = "ロールボーナス表[#{value_roll}] > Mishap!!" - elsif output_modifier.empty? - output = "ロールボーナス表[#{value_roll}] > #{output_bonus}" - else - value_result = output_bonus.to_i + value_modifier - debug(value_result) - output = "ロールボーナス表[#{value_roll}]#{output_modifier} > #{output_bonus}[#{value_roll}]#{output_modifier} > #{value_result}" - end - debug(output) - return output - end - - def get_torg_eternity_table_result(value, table) - output = nil - table.each do |item| - item_index = item[0] - if item_index > value - break - end - - output = item[1] - end - return output - end - - # 修正式計算サブルーチン - def get_torg_eternity_modifier(string_modifier) - debug("modifier check : #{string_modifier}") - if string_modifier == '' - value_modifier = 0 - output_modifier = "" - else - value_modifier = parren_killer("(0#{string_modifier})").to_i - output_modifier = format("%+d", value_modifier) - end - debug(value_modifier) - debug(output_modifier) - return value_modifier, output_modifier - end - - # d20ロールサブルーチン - def torg_eternity_dice(check_pos, check_mishap) - isSkilledCritical = true - isCritical = true - skilled = 0 - unskilled = 0 - mishap = 0 - dice_str = "" - while isSkilledCritical - dice_str += "," unless dice_str.empty? - dummy = roll(1, 20, 0) - dice_n = dummy.shift - if check_pos - if dice_n < 10 - dice_str_now = "#{dice_n}→10" - dice_n = 10 - isSkilledCritical = false - else - dice_str_now = dice_n.to_s - end - dice_str += dice_str_now - else - dice_str += dice_n.to_s - end - skilled += dice_n - unskilled += dice_n if isCritical - if dice_n == 20 - isCritical = false - elsif dice_n != 10 - isSkilledCritical = false - isCritical = false - if check_mishap & (dice_n == 1) - mishap = 1 - end - end - check_pos = false - check_mishap = false - end - return skilled, unskilled, dice_str, mishap - end - - # ボーナスダイスロールサブルーチン - def get_torg_eternity_damage_bonus_dice(number) - debug("bonus dice roll : #{number}") - value_roll = 0 - output_roll = "" - if number > 0 - value_roll = 0 - output_roll = "" - while number > 0 - output_roll = "#{output_roll}," unless output_roll.empty? - dice_value, dice_text = roll(1, 6) - if dice_value == 6 - dice_value = 5 - dice_text = "5∞" - number += 1 - end - value_roll += dice_value - output_roll = "#{output_roll}#{dice_text}" - debug(value_roll) - debug(output_roll) - number -= 1 - end - else - output_roll = "0" - end - debug(value_roll) - debug(output_roll) - return value_roll, output_roll - end - - # 成功レベル表 - def get_torg_eternity_success_level(value) - success_table = [ - [0, "Success - Standard."], - [5, "Success - Good!"], - [10, "Success - Outstanding!!"] - ] - return get_torg_eternity_table_result(value, success_table) - end - - # ダメージチャート - def get_torg_eternity_damage_result(value) - damage_table = [ - [-50, "ノーダメージ"], - [-5, "1ショック"], - [0, "2ショック"], - [5, "1レベル負傷 + 2ショック"], - [10, "2レベル負傷 + 4ショック"], - [15, "3レベル負傷 + 6ショック"], - [20, "4レベル負傷 + 8ショック"], - [25, "5レベル負傷 + 10ショック"], - [30, "6レベル負傷 + 12ショック"], - [35, "7レベル負傷 + 14ショック"], - [40, "8レベル負傷 + 16ショック"], - [45, "9レベル負傷 + 18ショック"], - [50, "10レベル負傷 + 20ショック"] - ] - return get_torg_eternity_table_result(value, damage_table) - end - - def get_torg_eternity_bonus(value) - bonus_table = [ - [1, -10], - [2, -8], - [3, -6], - [5, -4], - [7, -2], - [9, -1], - [11, 0], - [13, 1], - [15, 2], - [16, 3], - [17, 4], - [18, 5], - [19, 6], - [20, 7] - ] - bonus = get_torg_eternity_table_result(value, bonus_table) - if value > 20 - over_value_bonus = ((value - 21) / 5).to_i + 1 - bonus += over_value_bonus - end - return bonus - end -end diff --git a/src/src_bcdice/diceBot/TrinitySeven.rb b/src/src_bcdice/diceBot/TrinitySeven.rb deleted file mode 100644 index 8d12389c5..000000000 --- a/src/src_bcdice/diceBot/TrinitySeven.rb +++ /dev/null @@ -1,361 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class TrinitySeven < DiceBot - # ゲームシステムの識別子 - ID = 'TrinitySeven' - - # ゲームシステム名 - NAME = 'トリニティセブンRPG' - - # ゲームシステム名の読みがな - SORT_KEY = 'とりにていせふんRPG' - - # ダイスボットの使い方 - HELP_MESSAGE = <= 96 - return "クリティカル" if total <= critical - - return "成功" if total <= target - - return "失敗" - end - - def rollDamage(command, diceCount, critical, modify) - return "" if diceCount < critical - - total, diceText, = roll(diceCount, 6) - - additionalListText = "" - total, additionalList = getRollDamageCritialText(diceCount, critical, total, diceText, modify) - - additionalListText = "→[#{additionalList.join(',')}]" unless additionalList.empty? - - modifyText = "" - modifyText = "+#{modify}" if modify > 0 - modifyText = modify.to_s if modify < 0 - - text = "(#{command}) [#{diceText}]#{additionalListText}#{modifyText} > #{total}" - - return text - end - - def getRollDamageCritialText(diceCount, critical, total, diceText, modify) - diceList = [] - - if critical == 0 - total += modify - return total, diceList - end - - diceList = diceText.split(/,/).collect { |i| i.to_i } - - diceList.sort! - restDice = diceList.clone - - critical = diceCount if critical > diceCount - - critical.times do - restDice.shift - diceList.shift - diceList.push(7) - end - - max = restDice.pop - max = 1 if max.nil? - - total = max * (7**critical) + modify - restDice.each { |i| total += i } - - return total, diceList - end - - def check_1D100(_total, dice_total, _cmp_op, _target) - if dice_total >= 96 - " > ファンブル" - elsif dice_total <= 7 - " > クリティカル" - end - end - - # 名前表 - def get_NAME_table - table = [ - [1, '春日'], - [2, '浅見'], - [3, '風間'], - [4, '神無月'], - [5, '倉田'], - [6, '不動'], - [7, '山奈'], - [8, 'シャルロック'], - [9, '霧隠'], - [10, '果心'], - [11, '今井'], - [12, '長瀬'], - [13, '明智'], - [14, '風祭'], - [15, '志貫'], - [16, '一文字'], - [17, '月夜野'], - [18, '桜田門'], - [19, '果瀬'], - [20, '九十九'], - [21, '速水'], - [22, '片桐'], - [23, '葉月'], - [24, 'ウィンザー'], - [25, '時雨里'], - [26, '神城'], - [27, '水際'], - [28, '一ノ江'], - [29, '仁藤'], - [30, '北千住'], - [31, '西村'], - [32, '諏訪'], - [33, '藤宮'], - [34, '御代'], - [35, '橘'], - [36, '霧生'], - [37, '白石'], - [38, '椎名'], - [39, '綾小路'], - [40, '二条'], - [41, '光明寺'], - [42, '春秋'], - [43, '雪見'], - [44, '刀条院'], - [45, 'ランカスター'], - [46, 'ハクア'], - [47, 'エルタニア'], - [48, 'ハーネス'], - [49, 'アウグストゥス'], - [50, '椎名町'], - [51, '鍵守'], - [52, '茜ヶ崎'], - [53, '鎮宮'], - [54, '美柳'], - [55, '鎖々塚'], - [56, '櫻ノ杜'], - [57, '鏡ヶ守'], - [58, '輝井'], - [59, '南陽'], - [60, '雪乃城'], - [61, '六角屋'], - [62, '鈴々'], - [63, '東三条'], - [64, '朱雀院'], - [65, '青龍院'], - [66, '白虎院'], - [67, '玄武院'], - [68, '麒麟院'], - [69, 'リーシュタット'], - [70, 'サンクチュアリ'], - [71, '六実'], - [72, '須藤'], - [73, 'ミレニアム'], - [74, '七里'], - [75, '三枝'], - [76, '八殿'], - [77, '藤里'], - [78, '久宝'], - [79, '東'], - [80, '赤西'], - [81, '神ヶ崎'], - [82, 'グランシア'], - [83, 'ダークブーレード'], - [84, '天光寺'], - [85, '月見里'], - [86, '璃宮'], - [87, '藤見澤'], - [88, '赤聖'], - [89, '姫宮'], - [90, '華ノ宮'], - [91, '天才'], - [92, '達人'], - [93, '賢者'], - [94, '疾風'], - [95, '海の'], - [96, '最強'], - [97, '凶器'], - [98, '灼熱'], - [99, '人間兵器'], - [100, '魔王'], - ] - - dice_now, = roll(1, 100) - - return get_table_by_number(dice_now, table) - end - - def get_NAMEtwo_table - table = [ - [1, 'アラタ/聖'], - [2, 'アビィス/リリス'], - [3, 'ルーグ/レヴィ'], - [4, 'ラスト/アリン'], - [5, 'ソラ/ユイ'], - [6, 'イーリアス/アキオ'], - [7, 'アカーシャ/ミラ'], - [8, 'アリエス/リーゼロッテ'], - [9, 'ムラサメ/シャルム'], - [10, '龍貴/竜姫'], - [11, '英樹/春菜'], - [12, '準一/湊'], - [13, '急司郎/光理'], - [14, '夕也/愛奈'], - [15, '晴彦/アキ'], - [16, '疾風/ヤシロ'], - [17, 'カガリ/灯花'], - [18, '次郎/優都'], - [19, '春太郎/静理'], - [20, 'ジン/時雨'], - [21, 'イオリ/伊織'], - [22, 'ユウヒ/優姫'], - [23, 'サツキ/翠名'], - [24, 'シュライ/サクラ'], - [25, 'ミナヅキ/姫乃'], - [26, 'カエデ/優樹菜'], - [27, 'ハル/フユ'], - [28, 'オdール/瑞江'], - [29, 'ニトゥレスト/キリカ'], - [30, 'スカー/綾瀬'], - [31, '真夏/小夏'], - [32, '光一/ののか'], - [33, '彩/翠'], - [34, 'トウカ/柊花'], - [35, '命/ミコト'], - [36, '司/つかさ'], - [37, 'ゆとり/なごみ'], - [38, '冬彦/観月'], - [39, 'カレン/華恋'], - [40, '清次郎/亜矢'], - [41, 'サード/夢子'], - [42, 'ボックス/詩子'], - [43, 'ヘリオス/カエデ'], - [44, 'ゲート/京香'], - [45, 'オンリー/パトリシア'], - [46, 'ザッハーク/アーリ'], - [47, 'ラスタバン/ラスティ'], - [48, '桜花/燁澄'], - [49, '計都/リヴィア'], - [50, 'カルヴァリオ/香夜'], - [51, '悠人/夜々子'], - [52, '太子/羽菜'], - [53, '夕立/夕凪'], - [54, 'アルフ/愛美'], - [55, 'ファロス/灯利'], - [56, 'スプートニク/詩姫'], - [57, 'アーネスト/累'], - [58, 'ナイン/カグヤ'], - [59, 'クリア/ヒマワリ'], - [60, 'ウォーカー/オリビア'], - [61, 'ダーク/クオン'], - [62, 'ウェイヴ/凛'], - [63, 'ルーン/マリエ'], - [64, 'エンギ/セイギ'], - [65, 'シラヌイ/ミライ'], - [66, 'ブライン/キズナ'], - [67, 'クロウ/カナタ'], - [68, 'スレイヤー/ヒカル'], - [69, 'レス/ミリアリア'], - [70, 'ミフユ/サリエル'], - [71, '鳴央/音央'], - [72, 'モンジ/理亜'], - [73, 'パルデモントゥム/スナオ'], - [74, 'ミシェル/詩穂'], - [75, 'フレンズ/サン'], - [76, 'サトリ/識'], - [77, 'ロード/唯花'], - [78, 'クロノス/久宝'], - [79, 'フィラデルフィア/冬海'], - [80, 'ティンダロス/美星'], - [81, '勇弥/ユーリス'], - [82, 'エイト/アンジェラ'], - [83, 'サタン/ルシエル'], - [84, 'エース/小波'], - [85, 'セージ/胡蝶'], - [86, '忍/千之'], - [87, '重吾/キリコ'], - [88, 'マイケル/ミホシ'], - [89, 'カズマ/鶴香'], - [90, 'ヤマト/エリシエル'], - [91, '歴史上の人物の名前(信長、ジャンヌなど)'], - [92, 'スポーツ選手の名前(ベッカム、沙保里など)'], - [93, '学者の名前(ソクラテス、エレナなど)'], - [94, 'アイドルの名前(タクヤ、聖子など)'], - [95, '土地、国、町の名前(イングランド、ワシントンなど)'], - [96, 'モンスターの名前(ドラゴン、ラミアなど)'], - [97, '武器防具の名前(ソード、メイルなど)'], - [98, '自然現象の名前(カザンハリケーンなど)'], - [99, '機械の名前(洗濯機、テレビなど)'], - [100, '目についた物の名前(シャーペン、メガネなど)'], - ] - - dice_now, = roll(1, 100) - - return get_table_by_number(dice_now, table) - end -end diff --git a/src/src_bcdice/diceBot/TunnelsAndTrolls.rb b/src/src_bcdice/diceBot/TunnelsAndTrolls.rb deleted file mode 100644 index 1316c2bab..000000000 --- a/src/src_bcdice/diceBot/TunnelsAndTrolls.rb +++ /dev/null @@ -1,256 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class TunnelsAndTrolls < DiceBot - # ゲームシステムの識別子 - ID = 'TunnelsAndTrolls' - - # ゲームシステム名 - NAME = 'トンネルズ&トロールズ' - - # ゲームシステム名の読みがな - SORT_KEY = 'とんねるすあんととろおるす' - - # ダイスボットの使い方 - HELP_MESSAGE = <=nLV) -失敗、成功、自動失敗の自動判定とゾロ目の振り足し経験値の自動計算を行います。 -SAVEの難易度を「レベル」で表記することが出来ます。 -例えば「2Lv」と書くと「25」に置換されます。 -判定時以外は悪意ダメージを表示します。 -バーサークとハイパーバーサーク用に専用コマンドが使えます。 -例)2D6+1>=1Lv -  (2D6+1>=20) > 7[2,5]+1 > 8 > 失敗 - 判定時にはゾロ目を自動で振り足します。 - -・バーサークとハイパーバーサーク (nBS+x or nHBS+x) - "(ダイス数)BS(修正値)"でバーサーク、"(ダイス数)HBS(修正値)"でハイパーバーサークでロールできます。 - 最初のダイスの読替は、個別の出目はそのままで表示。 - 下から2番目の出目をずらした分だけ合計にマイナス修正を追加して表示します。 -INFO_MESSAGE_TEXT - - setPrefixes(['(\d+H?BS)']) - - def initialize - super - @sendMode = 2 - @sortType = 1 - @sameDiceRerollCount = 1 - end - - def changeText(string) - debug('TunnelsAndTrolls parren_killer begin string', string) - - if /(\d+)LV/i =~ string - level_diff = Regexp.last_match(1).to_i * 5 + 15 - string = string.sub(/(\d+)LV/i) { level_diff.to_s } - end - - if /BS/i =~ string - string = string.gsub(/(\d+)HBS([^\d\s][\+\-\d]+)/i) { "#{Regexp.last_match(1)}R6#{Regexp.last_match(2)}[H]" } - string = string.gsub(/(\d+)HBS/i) { "#{Regexp.last_match(1)}R6[H]" } - string = string.gsub(/(\d+)BS([^\d\s][\+\-\d]+)/i) { "#{Regexp.last_match(1)}R6#{Regexp.last_match(2)}" } - string = string.gsub(/(\d+)BS/i) { "#{Regexp.last_match(1)}R6" } - end - - return string - end - - def dice_command_xRn(string, nick_e) - return tandt_berserk(string, nick_e) - end - - def check_2D6(total, dice_total, _dice_list, cmp_op, target) - return '' unless cmp_op == :>= - - if dice_total == 3 - return " > 自動失敗" - elsif target == "?" - return getMaxSuccessLevel(total, dice_total) - elsif total >= target - experiencePoint = getExperiencePoint(target, dice_total) - return " > 成功 > 経験値#{experiencePoint}" - else - return " > 失敗" - end - end - - def getMaxSuccessLevel(total_n, dice_n) - sucLv = 1 - - while total_n >= (sucLv * 5 + 15) - sucLv += 1 - end - - sucLv -= 1 - - if sucLv <= 0 - return " > 失敗 > 経験値#{dice_n}" - end - - return " > #{sucLv}Lv成功 > 経験値#{dice_n}" - end - - def getDiceRolledAdditionalText(n1, n_max, dice_max) - debug("getDiceRolledAdditionalText n1, n_max, dice_max", n1, n_max, dice_max) - if (n_max > 0) && (dice_max == 6) - return " > 悪意#{n_max}" - end - - return '' - end - - def getExperiencePoint(diff, dice_n) - debug("diff", diff) - debug("dice_n", dice_n) - - experiencePoint = (1.0 * (diff - 15) / 5 * dice_n) - - if int?(experiencePoint) - experiencePoint = experiencePoint.to_i - else - experiencePoint = format("%.1f", experiencePoint) - end - - debug("experiencePoint", experiencePoint) - - return experiencePoint - end - - def int?(v) - return (v == v.to_i) - end - - #################### Tunnels and Trolls Berserk ######################## - def tandt_berserk(string, nick_e) - debug('tandt_berserk string', string) - - output = "1" - - return output unless (m = /(^|\s)S?((\d+)[rR]6([\+\-\d]*)(\[(\w+)\])?)(\s|$)/i.match(string)) - - debug('tandt_berserk matched') - - string = m[2] - dice_c = m[3].to_i - bonus = 0 - bonus = parren_killer("(0#{m[4]})").to_i if m[4] - isHyperBerserk = false - isHyperBerserk = true if m[5] && (m[6] =~ /[Hh]/) - dice_arr = [] - dice_now = 0 - dice_str = "" - isFirstLoop = true - n_max = 0 - total_n = 0 - bonus2 = 0 - - debug('isHyperBerserk', isHyperBerserk) - - # 2回目以降 - dice_arr.push(dice_c) - - loop do - debug('loop dice_arr', dice_arr) - dice_wk = dice_arr.shift - - debug('roll dice_wk d6', dice_wk) - rollTotal, rollDiceResultText, roll_cnt1, rollDiceMaxCount, roll_n_max, roll_cnt_suc, roll_cnt_re = roll(dice_wk, 6, (sortType & 1)) - - debug('rollTotal, rollDiceResultText, roll_cnt1, rollDiceMaxCount, roll_n_max, roll_cnt_suc, roll_cnt_re', - rollTotal, rollDiceResultText, roll_cnt1, rollDiceMaxCount, roll_n_max, roll_cnt_suc, roll_cnt_re) - - if dice_wk >= 2 # ダイスが二個以上 - - dice_num = rollDiceResultText.split(/,/).collect { |i| i.to_i } - debug('dice_num', dice_num) - - diceType = 6 - - dice_face = [] - diceType.times do |_i| - dice_face.push(0) - end - - dice_num.each do |dice_o| - dice_face[dice_o - 1] += 1 - end - - dice_face.each do |dice_o| - if dice_o >= 2 - dice_o += 1 if isHyperBerserk - dice_arr.push(dice_o) - end - end - - if isFirstLoop && dice_arr.empty? - min1 = 0 - min2 = 0 - - diceType.times do |i| - index = diceType - i - 1 - debug('diceType index', index) - if dice_face[index] > 0 - min2 = min1 - min1 = index - end - end - - debug("min1, min2", min1, min2) - bonus2 = -(min2 - min1) - rollDiceMaxCount -= 1 if min2 == 5 - - if isHyperBerserk - dice_arr.push(3) - else - dice_arr.push(2) - end - end - end - - dice_now += rollTotal - dice_str += "][" if dice_str != "" - dice_str += rollDiceResultText - n_max += rollDiceMaxCount - isFirstLoop = false - - debug('loop last chek dice_arr', dice_arr) - - break if dice_arr.empty? - end - - debug('loop breaked') - - debug('dice_now, bonus, bonus2', dice_now, bonus, bonus2) - total_n = dice_now + bonus + bonus2 - - dice_str = "[#{dice_str}]" - output = "#{dice_now}#{dice_str}" - - if bonus2 < 0 - debug('bonus2', bonus2) - output += bonus2.to_s - end - - debug('bonus', bonus) - if bonus > 0 - output += "+#{bonus}" - elsif bonus < 0 - output += bonus.to_s - end - - if sendMode > 0 - if output =~ /[^\d\[\]]+/ - output = "#{nick_e}: (#{string}) > #{output} > #{total_n}" - else - output = "#{nick_e}: (#{string}) > #{total_n}" - end - else - output = "#{nick_e}: (#{string}) > #{total_n}" - end - - output += " > 悪意#{n_max}" if n_max > 0 - - return output - end -end diff --git a/src/src_bcdice/diceBot/TwilightGunsmoke.rb b/src/src_bcdice/diceBot/TwilightGunsmoke.rb deleted file mode 100644 index 1d6acc657..000000000 --- a/src/src_bcdice/diceBot/TwilightGunsmoke.rb +++ /dev/null @@ -1,521 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require 'utils/table' -require 'utils/d66_range_table' -require 'utils/d66_grid_table' -require 'utils/format' - -class TwilightGunsmoke < DiceBot - # ゲームシステムの識別子 - ID = 'TwilightGunsmoke' - - # ゲームシステム名 - NAME = 'トワイライトガンスモーク' - - # ゲームシステム名の読みがな - SORT_KEY = 'とわいらいとかんすもおく' - - # ダイスボットの使い方 - HELP_MESSAGE = <=t[c,f] -  修正値m,目標値t,クリティカル値c,ファンブル値fで判定ロールを行います。 -  クリティカル値、ファンブル値は省略可能です。([]ごと省略できます) -  自動成功、自動失敗、成功、失敗を自動表示します。 -・各種表 - ・邂逅表  CT - ・オープニングチャート -  リアリスティック OPR|シネマティック OPC - ・エンディングチャート -  リアリスティック EDR|シネマティック EDC - ・情報収集チャート -  荒野 RWL|ウェブ RWB|ストリート RST|上流 RUP - ・ドロップチャート -  コーポレイト DCP|バンデッド DBD|クリミナル DCR|ニンジャ DNJ -  ロボ DRB|武装車輛 DBS|ターレット DTR|メルカバ DMK -  ヘリ DHL|マシンライフ DML|ゾンビ DZB|ミュータント DMT -  BM/飛竜科 DHR|BM/巨爪科 DKS|フィーンド DFD -・D66ダイスあり -INFO_MESSAGE_TEXT - - def initialize - super - - @sendMode = 2 - @d66Type = 1 - @sortType = 1 - end - - def rollDiceCommand(command) - if (ret = check_roll(command)) - return ret - end - - return roll_tables(command, TABLES) - end - - private - - def check_roll(command) - m = /^2D6([\+\-\d]*)>=(\d+)(\[(\d+)?(,(\d+))?\])?$/i.match(command) - unless m - return nil - end - - modify_number = m[1] ? ArithmeticEvaluator.new.eval(m[1]) : 0 - target = m[2].to_i - critical = (m[4] || 12).to_i - fumble = (m[6] || 2).to_i - - dice_value, dice_str, = roll(2, 6, @sortType && 1) - total = dice_value + modify_number - - result = - if dice_value >= critical - "自動成功" - elsif dice_value <= fumble - "自動失敗" - elsif total >= target - "成功" - else - "失敗" - end - - sequence = [ - "(#{command})", - "#{dice_value}[#{dice_str}]#{Format.modifier(modify_number)}", - total.to_s, - result, - ] - - return sequence.join(" > ") - end - - # オプニング, エンディング, 情報収集チャート用のテーブル - # D66を振って決定する - # 1項目あたり出目3つに対応する - class TGTable < D66RangeTable - # @param name [String] - # @param items [Array] - def initialize(name, items) - if items.size != RANGE.size - raise UnexpectedTableSize.new(name, items.size) - end - - items_with_range = RANGE.zip(items) - - super(name, items_with_range) - end - - # 1項目あたり3個 - RANGE = [11..13, 14..16, 21..23, 24..26, 31..33, 34..36, 41..43, 44..46, 51..53, 54..56, 61..63, 64..66,].freeze - end - - TABLES = { - "CT" => D66GridTable.new( - "邂逅表", - [ - ["【関係:恩人】", "【関係:恩人】", "【関係:秘密】", "【関係:秘密】", "【関係:保護者】", "【関係:保護者】"], - ["【関係:忠誠】", "【関係:忠誠】", "【関係:憎悪】", "【関係:憎悪】", "【関係:あこがれ】", "【関係:あこがれ】"], - ["【関係:殺意】", "【関係:殺意】", "【関係:同志】", "【関係:同志】", "【関係:幼子】", "【関係:幼子】"], - ["【関係:興味】", "【関係:興味】", "【関係:ライバル】", "【関係:ライバル】", "【関係:師匠】", "【関係:師匠】"], - ["【関係:慕情】", "【関係:慕情】", "【関係:友情】", "【関係:友情】", "【関係:家族】", "【関係:家族】"], - ["【関係:忘却】", "【関係:忘却】", "【関係:ビジネス】", "【関係:ビジネス】", "【関係:腐れ縁】", "【関係:腐れ縁】"], - ] - ), - "OPR" => TGTable.new( - "オープニングチャート:リアリスティック", - [ - "おまえはめったにない休暇をエンジョイしていた。映画、デート、エステ、ドラッグ、やり方はお前の好きにしろ。", - "おまえはちょうど一仕事やり終えたところだ。おまえがどれだけ上手くやったかは自由に演出してよいが、残念ながらこの仕事の報酬はゲーム的には価値を持たない。ライフスタイルの一部として扱う。", - "おまえは一仕事終えてぐっすり眠っている。だがそんな時におまえを否応なく仕事の電話がたたき起こす。", - "おまえは金に困っている。家賃かもしれないし、別れた配偶者からの慰謝料請求かもしれない。とにかく、このオープニングでやってくる依頼はお前にとっては渡りに船だ。なお、この金はアフタープレイの出費に含まれるためゲーム的効果を持たない。", - "おまえは警察に不審尋問されている。そんな時、突然おまえが釈放されるという声がかかった。どうやら次の依頼人がわざわざおまえの身元を保証してくれたらしい。", - "おまえはコネクション(任意に選択するが、困ったらライフパスの相手とせよ)と会話している。その会話の内容がどんなものかはコネクションとおまえの関係次第だ。", - "おまえは家族との大切なひとときを過ごしている。もしおまえに家族というものがいないなら、かわいがっているストリートの野良犬や行きつけのバーのマスター、あるいは離婚して親権を取られた子供あたりでもいい。", - "おまえはネットワークにダイブし、情報の海を思うまま経巡っている(おまえがウェットでも、ネットワークそのものは利用できることを忘れるな)。仕事の連絡があったのはそんな時だ。", - "おまえはおまえの首を狙って名を上げようとする愚かなストリートギャングをひとり血祭りに上げたところだ。", - "おまえは荒野をひとり旅している。ウェイストランドの自然はお前に安らぎを与えてくれるか、おまえを苦しめているかは好きにしろ、だが仕事だ。スプロールに戻る時がきた。", - "おまえはごくプライベートなひとときを過ごしている。恋人との甘い一夜かもしれないし、ドラッグやアルコールの酩酊かもしれない。", - "おまえは死んだ大切な人間の墓に詣でている。心の中で別れを告げたその時、依頼人から電話がかかってきた。", - ] - ), - "OPC" => TGTable.new( - "オープニングチャート:シネマティック", - [ - "おまえは世界滅亡をたくらむテロリストのアジトを今まさに木っ端微塵に爆破したところだ。脱出したおまえに、休むヒマもなく新たな依頼がやってくる。", - "おまえは久しぶりに日常を楽しんでいた……はずだった。だが、おまえの乗る飛行機/船/列車がジャックされ、おまえはテロリストを徒手空拳でどうにか倒した。疲労困憊したおまえに新しい仕事がやってくる。", - "おまえはまったく無関係な別の敵に捕まって拷問されている。もっとも敵はエキストラだ。おまえは自由に脱出するまでのプロセスを演出できる。", - "おまえはムショにブチこまれている。幸いデイブレイカーだとバレてはいない。だが突然釈放の声がかかった。どうやら新しい依頼人が政治的圧力をかけたらしい。", - "おまえは今まさに、暴走したバイオモンスターに喰われそうになっている。こんな時に依頼というのはどんなバカだ。おまえはこのピンチをどう切り抜けたか自由に演出できる。", - "おまえは夢を見ていた。夢の中でおまえはまったく別の世界の、まったく別の人生を送っている。目覚めてもそちらが現実だったような気がする。まあそれはそれとして仕事だ。", - "おまえはカジノで途方もなく大勝ちをしている。目の前にチップの山が積み上がり、支配人の顔が青くなっていく。だがその時、仕事の呼び出しがかかった。残念ながらチップを換金するヒマはない(あるいは換金出来たが、オープニングの間に使い切ったとしてもいい)。", - "おまえは上手くやった。ネットで、リアルスペースで、芸能界で、暗黒街で、とにかくおまえのやったことは大評判を呼び、見知らぬ男たちと女たちがおまえの名を囁き交わす。そんな時におまえに依頼が来るのは当然と言えるだろう。", - "おまえはヘマをやった。ポリス、情報機関、マフィア、とにかくそんなものがおまえを追い回している。おまえに依頼がやってきたのはよりによってそんな時だ。おまえは判定なしでこの窮地を切り抜けることができる。", - "おまえはアイデンティティの危機に襲われる。おまえはクローンかもしれないし、記憶を継承したドロイドなのかもしれない。おまえは死んでいてネクロモーフなのかもしれない。まあそれはそれとして仕事だ。", - "おまえは目覚めると見知らぬ異性(または同性)と同じベッドの中にいた。何事だ。まるで身に覚えがない。シャワーを浴びて部屋に戻ると、相手は忽然と煙のように消えていた。呆然とするおまえの電話が鳴る・仕事らしい。その相手と仕事が関係あるのかは、GMが決定せよ。", - "おまえはショッピングモールでゾンビの大群に包囲されている。おまえは判定なしでこのゾンビパラダイスから脱出できるが、その過程をGMと協力して演出すること。", - ] - ), - "EDR" => TGTable.new( - "エンディングチャート:リアリスティック", - [ - "おまえは死んだ誰かの墓に詣でている。帰ってこないものは確かにあるのだ。", - "おまえはいつもの日常の喧騒へと戻っていく。家賃の請求、弾薬の補充、日々の料理、トレイの掃除。まあそんなところだ。", - "おまえは休暇をエンジョイしている。そこがホテルでもカジノでも、かかる費用はライフスタイルに含まれているものとする。", - "おまえは恋人、あるいは別れた恋人との親密な時間を過ごしている。それが甘い語らいなのか、深刻な別れ話まのかは好きにするといい。", - "おまえは今回の事件について、おまえのコネクションと会話している。コネクションがおまえと事件をどう思っているかは、GMと相談しろ。", - "おまえは日常的な銃と硝煙の世界へ戻っていく。幸い、この荒廃世界では敵には事欠かない。違うか?", - "おまえはウェイストランドに残された自然の中を歩いて行く。おまえはそこでスプロールよりも大切なものを見いだすのかもしれない。あるいはただ、冒険の一環なのかもしれない。", - "おまえはドラッグ/美食/酒/タバコ/ロマンスのもたらす悦楽に心ゆくまで浸っている。おまえは立派に仕事をやりとげた。当分は動きたくない。", - "おまえはトレーニングに励んでいる。ひとつの戦いは終わった。だがこの先にはさらなる戦いが待っている。そのときのために、鍛錬は必要なのだ。", - "おまえは株式投資や新興宗教の教祖といった「副業」に精を出している。それによって儲かっているにせよ儲かっていないにせよ、ゲームデータとしての金には影響しない。", - "おまえは新しいミッションを受けている。それがどのようなものか今決めてもいいし、次のシナリオの題材にしてもいい。", - "おまえは家族と過ごしている。家族と呼べる相手がいないなら、近所の野良猫でも行きつけのバーのマスターでもいいだろう。", - ] - ), - "EDC" => TGTable.new( - "エンディングチャート:シネマティック", - [ - "おまえは自分がアンドロイドであり、自分を人間だと思い込んでいたことを突如として思い出す。そしておまえには、おまえを追う刺客が迫っている。", - "おまえはこのシナリオの記憶がまったく存在しないことを思い出す。あるいは記憶だと思っていたものは、VRで植え付けられた偽記憶だったのかもしれない。おまえが誰かを探す旅が今始まる。", - "おまえは平和な日常に戻っていく。ところで画面が切り替わり、BOSSの墓が映る。墓が不気味に蠢いてシーンエンド。", - "なんとめでたいことに、名前を聞いたこともない遠縁の親戚の遺産がころがりこむ。スプロールの外れた洋館で魔術の研究をしていたらしい。おまえは遺産を受け継ぐため嵐の洋館へ向かっていく。", - "おまえは悪の黒幕(このシナリオの黒幕とは限らない)拳/拳銃/カタナの一撃で倒し、立ち去っていく。背後で大爆発。悪は滅んだ。", - "おまえは有名になりすぎた。お前を殺すために暗黒街が、メガ・コーポが、最強の刺客軍団を送り込んでくる。無論全員エキストラだ。お前が好き放題倒したら、シーンを終了させろ。", - "おまえはウェイストランドを探検し、ついに誰もたどりついたことのない秘境の都市を発見した。そこに何が眠っているのか。おまえはただひとり、都市へと向かう……!", - "おまえはおまえはようやく平穏な日常に戻って来た。のんびり過ごそうとした海岸のリゾートで悲鳴が上がる。なんてことだ! ゾンビ化した巨大鮫の襲撃だ! 畜生!", - "おまえはストリートの闇へ戻っていく。おまえのコネクションがおまえに囁く。「どうやらBOSSが全身をサイバーウェアでつなぎ止め、復活しておまえへの復讐を企んでいるらしいぞ」その言葉に、おまえは……。", - "今やストリートの伝説になったおまえには、密かにクローンが作り出されていた。対決する本人とクローン! 激震する暗黒街! 勝つのはどちらだ! 待て、次回!", - "倒したはずの宿敵(今回のBOSSとは限らない)がゾンビになって復活した。なんてしぶとい野郎だ。おまえはチェーンソーを手に立ち向かう。", - "仕事を終えてねぐらに戻ろうとするおまえを光が包み込んだ。UFOのアブダクションだ。果たしておまえの運命はどうなるのか。収拾がつかなくなった場合、夢だったことにするといい。", - ] - ), - "RWL" => TGTable.new( - "情報収集チャート:荒野", - [ - "どこまでも続く果てしない荒野と廃墟、かつてここに文明があったというのが信じられれない。あるいはあの輻輳都市が蜃気楼なのかもしれない。", - "どこかのバカが仕掛けた地雷が埋まっている! 【反射】難易度12の判定を行ない、失敗すれば〈殴〉5D+総合レベルのダメージを受ける。", - "まともに説明したらリプレイ一冊分になるような冒険の果て、お前は情報提供者のところにたどり着いた。【HP】を(総合レベル)D点失う。", - "伝説の白いワニだ! なぜワニがこんな下水道に!? 【体力】難易度12の判定を行ない、成功すれば威信点1を得る。失敗なら、〈斬〉10Dダメージ。", - "山間の峠を抜けると、素晴らしく美しい湖と草原に出た。まだこんな自然が残っていたのか。おまえの【MP】を完全に回復する。", - "たどりついた村人の親切な歓待。とっておきの肉のシチューを振る舞われる。【体力】難易度12の判定を行ない、成功すれば【HP】【MP】が完全に回復。失敗なら、【HP】を5D点失う。", - "フェリシア・リーの行商。おまえは購入難易度20以下のアイテムひとつを定価で購入してもよい(情報収集とは別に行なえる)。", - "バイオモンスターに襲われたらしい死体を発見する。端末で照合すると賞金首らしい。おまえが倒したことにするなら、威信点2を失い、$5000を得る。", - "情報は古い機械式の金庫に収められていた。【反射】難易度12の判定を行ない、成功なら次の情報収集+2(クリティカルなら+$500)。失敗なら金庫が自爆し、次の情報収集-2。", - "なんてこった、ゾンビの襲撃だ! 「種別:ゾンビ」で、おまえがもっともレベルの近いエネミー1D体がおまえを襲撃する。登場難易度の12のシーンで戦闘を行なうこと。距離は2マス。", - "旧時代の知識を持つ親切なロボットがおまえの手助けをしてくれた。次の情報収集に+2。", - "墜落したUFOを発見する。おまえは見なかったことにしてもよいし、雑誌社に売りつけてもよい。売りつけるなら、1D66×100$を得る。", - ] - ), - "RWB" => TGTable.new( - "情報収集チャート:ウェブ", - [ - "特に何事もない。ネットの世界はルーチンワークだ。おまえは粛々と情報を集めていく。", - "まさにおまえが必要としている情報の入ったファイルが、データ流の中を漂流していく。冗談か? 【幸運】難易度12の判定を行ない、成功すれば情報収集の達成値+2。ファンブルなら、情報収集そのものも失敗する。", - "コネクションのひとりからVRチャットのお誘い。どうやらまったく無関係に、ヤツは君と世間話がしたいようだ。だが、何か関連情報を知っているかもしれないぞ。【幸運】難易度12の判定を行ない、成功すれば情報収集の達成値+1。クリティカルなら、威信点にも+1。", - "おまえはネットの海に果てしなく潜り続ける。無数の情報がお前を魅惑し幻惑する。お前は万能だ。だが現実の肉体はそうではない。【体力】難易度12の判定を行ない、成失敗すると3D+キャラクターレベル点のHPを失う。ファンブルならその二倍だ。", - "目当ての情報に近いファイルを見つけた……。だが、それには悪質な電脳ドラッグの“お試し”データが仕込まれていた。【意志】難易度12の判定を行ない、失敗した場合、次のシーンの開始時、お前は狼狽・放心を受ける。", - "「ああ、その件なら知っているよ」お前のツレのハッカーが、そのネタを知っているらしい。しかもオープンソース精神とやらで、金はいらないそうだ。情報収集の達成値+2。", - "どうやらおまえが貸しを作っているライバルのハッカーが、お前の追っている事件についてのネタを握っているらしい。威信点を1点減らすなら、次の情報収集のクリティカル値を-2(下限値8)。", - "高速化された論理迷路の仕掛けられたデータストアに迷い込む。これだけ厳重な防御があるということは、核心の情報が保管されている可能性が高い。【知覚】難易度12の判定を行ない、成功すれば情報収集の達成値+2。失敗なら、-2。", - "目まぐるしい映像の洪水が流れて行く。ネットはいつでも広告と無縁ではいられない。お前はその中から、有用そうなデータをいくつか集めた。このシナリオ中、おまえの購入判定のクリティカル値を-1(下限値8)。", - "「最高のエクスタシー。肉体を捨てたトランスヒューマンだけの、嗜好の悦楽……」VRドラッグの試供品をもらう。おまえがウェットでないなら、【MP】を3D+総合レベル点回復すること。", - "おまえの個人情報がタレ流しになっていることに気付く。どこかのバカのいやがらせだ。だが、うまく処理できれば名が上がる。【理知】難易度12の判定を行ない、成功すれば威信点+1。失敗なら-1。", - "どうやら目当ての情報は、まだ誰も破ったことのないデータストアに保管されているようだ。それを破ったとなれば、間違いなくおまえのハッカーとしての名は上がる。次の情報収集判定に成功した場合、威信点+1D。", - ] - ), - "RST" => TGTable.new( - "情報収集チャート:ストリート", - [ - "特筆すべき出来事はない。降り止まない酸性雨、うつむきがちの人々、けばけばしいネオンに広告飛行船。今日はいつも通りの日常だ。", - "「てめえを殺りゃあ、幹部なんだよ!」密造拳銃を手にしたチンピラの襲撃。情報源のお出ましだ。【反射】難易度12の判定に成功すれば、情報収集の達成値+2。失敗なら、〈殴〉3D+総合レベル点のダメージを受ける。", - "「よぉ。あのネタ探してんだってな?」にやにや顏の悪徳警官のお出ましだ。威信点を1点消費するなら、通常の効果に加えて達成値+2(合計+4)。", - "「あんたとは終わったはずよ」昔の恋人と出会う(心当たりがない。とおまえが言うなら、このイベントはスキップ。ダイス目11として扱う)。威信点を1点消費するなら、通常の効果に加えてクリティカル値-2(下限値8)。", - "とにかく足で稼ぐしかなさそうだ。結局、この時代でも最後に頼れるのはそれだけだ。【体力】難易度12の判定を行ない、成功すると情報収集の達成値+2。", - "なじみの店でコネクションと出会う。敵対的な関係でないなら、快く情報を伝えてくれる。情報収集の達成値+2。敵対的な関係の場合は、ダイス目21と同様の処理。", - "「最近名前が売れてるらしいじゃねえか。相棒(チューマ)」知らないやつになれなれしく話しかけられた。【理知】難易度12でうまくあしらえ。成功すれば、威信点+2。", - "情報収集の過程で、まったく無関係な賞金首に襲われて返り討ちに。1D×500$を得るが、時間を取られたので、情報収集の達成値-1。", - "屋台から漂ってくる聞いたこともない料理の香り。実に旨そうだ。5$払って食べてもいい。その場合、【幸運】難易度12の判定を行ない、成功すると【HP】と【MP】が全回復する。失敗すると、あまりのまずさに【MP】を2D点失う。", - "抗争に巻き込まれて大ケガを負った子供と知り合う。何らかの【HP】回復を施してやる(アイテムを渡すのでもいい)のなら、威信点1点を得る。", - "「あんたの名前に見合った金をはずんでくれよ。チューマ」情報屋だ。総合レベルの二乗×$100を支払えば、情報収集判定の達成値に+4。", - "なんてこった、ゾンビの襲撃だ! 「種別:ゾンビ」で、おまえともっともレベルの近いエネミー1D体がおまえを襲撃する。登場難易度12のシーンで戦闘を行なうこと。距離は2マス。", - ] - ), - "RUP" => TGTable.new( - "情報収集チャート:上流", - [ - "実を伴わない会話、豪勢な食事、最新鋭の何だか分からないファッション、そしてパーティ! 世はすべて事もなし。", - "きらびやかな夜会と社交界の世界では、現金の量になど価値はない。金はあって当然だからだ。問題になるのは、おまえがどれだけのセレブかだ。1Dし、その数値がおまえの現在の威信点以下なら、次の情報収集に+2。", - "ポストヒューマンと呼べなくても、トランスヒューマンであるかどうか。それが上流社会に受け入れられるための最低条件だ。おまえがウェットの場合、次の情報収集に-4。", - "おまえを値踏みするセレブたちの冷たい視線。おまえの生活費が$1,500未満なら、次の情報収集に-2。おまえの生活費が$4000以上なら、+2。", - "「あなたの噂は聞いていますわ、ご活躍だそうね」相手はどうもおまえを知っていて、しかも好意的らしい。ありがたく話を聞く。威信点に+1。", - "事件とは無関係にインサイダー情報を嗅ぎつける。手を出すなら【幸運】で難易度14。成功すれば1D×$1000(クリティカルなら$10000)を得て、失敗すれば同額(ファンブルなら$10,000)を失う。", - "上流階級独特のイヤミと皮肉に満ちた会話でおまえの精神は疲弊する。現在の【MP】を半分(端数切り捨て)にせよ。こんなところ、人間の住むところじゃない。", - "おまえが上流社会で一番重要なのが知り合いの数だと思い知らされる。おまえが常備化しているコネクションに「種別:上流」のキャラクターがいれば、次の情報収集に+2。", - "慈善活動の募金に巻き込まれる。こういうのが大事なんだ、ヤツらの社会じゃな。おまえが[現在の威信点×$500]を支払うなら、次の情報収集に+2。", - "知らないうちに流行が変わっていた。最新モードの服を急いで仕立てるなら、1D×$1,000。仕立てないなら、【幸運】難易度12の判定を行ない、失敗すればおまえの威信点を-1Dすること。", - "最新の社会問題についてのウィットに富んだ会話を求められる。【理知】難易度12の判定を行なえ。成功すれば、次の情報収集に+2。失敗すれば威信点を1を失う。", - "テロリストの襲撃だ! 「種別:人間」のエネミー1D体がおまえを襲撃する。登場難易度14のシーンで戦闘を行なうこと。距離は4マス。", - ] - ), - "DCP" => Table.new( - "ドロップチャート:コーポレイト", - "2D6", - [ - "特になし", - "特になし", - "特になし", - "特になし", - "特になし", - "9㎜ピストル", - "9㎜ピストル", - "装飾品($200)", - "装飾品($200)", - "スティムパック", - "スティムパック", - ] - ), - "DBD" => Table.new( - "ドロップチャート:バンデッド", - "2D6", - [ - "特になし", - "特になし", - "特になし", - "特になし", - "特になし", - ".45口径SMG", - ".45口径SMG", - "戦前の缶詰($60)×4", - "戦前の缶詰($60)×4", - "アッパードラッグ", - "アッパードラッグ", - ] - ), - "DCR" => Table.new( - "ドロップチャート:クリミナル", - "2D6", - [ - "特になし", - "特になし", - "特になし", - "特になし", - "特になし", - "現金$1D×50", - "現金$1D×50", - "アルコール", - "アルコール", - "派手なスーツ($700)", - "派手なスーツ($700)", - ] - ), - "DNJ" => Table.new( - "ドロップチャート:ニンジャ", - "2D6", - [ - "特になし", - "特になし", - "特になし", - "特になし", - "特になし", - "シュリケン", - "シュリケン", - "スティムパック", - "スティムパック", - "スティムパック", - "カタナ", - ] - ), - "DRB" => Table.new( - "ドロップチャート:ロボ", - "2D6", - [ - "特になし", - "特になし", - "特になし", - "特になし", - "特になし", - "Eセル×2セット", - "Eセル×2セット", - "廃棄部品($30)×5", - "廃棄部品($30)×5", - "ヴォルトコーラ", - "ヴォルトコーラ", - ] - ), - "DBS" => Table.new( - "ドロップチャート:武装車輛", - "2D6", - [ - "特になし", - "特になし", - "特になし", - "特になし", - "特になし", - "現金$1D×30", - "現金$1D×30", - "スティムパック", - "スティムパック", - "5.56㎜アサルトライフル", - "5.56㎜アサルトライフル", - ] - ), - "DTR" => Table.new( - "ドロップチャート:ターレット", - "2D6", - [ - "特になし", - "特になし", - "特になし", - "特になし", - "特になし", - "7.62㎜弾×3", - "7.62㎜弾×3", - "廃棄部品($30)×2", - "廃棄部品($30)×2", - "廃棄部品($30)×2", - "7.62㎜マシンガン", - ] - ), - "DMK" => Table.new( - "ドロップチャート:メルカバ", - "2D6", - [ - "特になし", - "特になし", - "特になし", - "特になし", - "特になし", - "廃棄部品($30)×10", - "廃棄部品($30)×10", - "スティムパック", - "スティムパック", - "アッパードラッグ", - "アッパードラッグ", - ] - ), - "DHL" => Table.new( - "ドロップチャート:ヘリ", - "2D6", - [ - "特になし", - "特になし", - "特になし", - "特になし", - "特になし", - "レアメタル($100)×1D", - "レアメタル($100)×1D", - "スーパースティムパック", - "スーパースティムパック", - "アッパードラッグ×2", - "アッパードラッグ×2", - ] - ), - "DML" => Table.new( - "ドロップチャート:マシンライフ", - "2D6", - [ - "特になし", - "特になし", - "特になし", - "特になし", - "特になし", - "レアメタル($100)×1D", - "レアメタル($100)×1D", - "未知の金属($1,000)", - "未知の金属($1,000)", - "未知の金属($1,000)", - "マシンライフコア($10,000)", - ] - ), - "DZB" => Table.new( - "ドロップチャート:ゾンビ", - "2D6", - [ - "特になし", - "特になし", - "特になし", - "特になし", - "特になし", - "特になし", - "ぬいぐるみ($10)", - "スティムパック", - "スティムパック", - "装飾品($500)", - "装飾品($500)", - ] - ), - "DMT" => Table.new( - "ドロップチャート:ミュータント", - "2D6", - [ - "特になし", - "特になし", - "特になし", - "特になし", - "特になし", - "アルコール", - "アルコール", - "スティムパック", - "スティムパック", - "戦前の酒($1,500)", - "戦前の酒($1,500)", - ] - ), - "DHR" => Table.new( - "ドロップチャート:BM/飛竜科", - "2D6", - [ - "特になし", - "特になし", - "特になし", - "特になし", - "特になし", - "飛竜の鱗($500)", - "飛竜の鱗($500)", - "飛竜の羽根($2,000)", - "飛竜の羽根($2,000)", - "飛竜の羽根($2,000)", - "飛竜の角($10,000)", - ] - ), - "DKS" => Table.new( - "ドロップチャート:BM/巨爪科", - "2D6", - [ - "特になし", - "特になし", - "特になし", - "特になし", - "特になし", - "現金$200×1D", - "現金$200×1D", - "分厚い毛皮($3,500)", - "分厚い毛皮($3,500)", - "巨大な爪($7,000)", - "巨大な爪($7,000)", - ] - ), - "DFD" => Table.new( - "ドロップチャート:フィーンド", - "2D6", - [ - "特になし", - "特になし", - "特になし", - "特になし", - "アッパードラッグ×2", - "アッパードラッグ×2", - "アッパードラッグ×2", - "アッパードラッグD", - "アッパードラッグD", - "異次元の結晶($12,000)", - "異次元の結晶($12,000)", - ] - ) - }.freeze - - setPrefixes(['2D6.*'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/Utakaze.rb b/src/src_bcdice/diceBot/Utakaze.rb deleted file mode 100644 index 8402b2ed4..000000000 --- a/src/src_bcdice/diceBot/Utakaze.rb +++ /dev/null @@ -1,158 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Utakaze < DiceBot - # ゲームシステムの識別子 - ID = 'Utakaze' - - # ゲームシステム名 - NAME = 'ウタカゼ' - - # ゲームシステム名の読みがな - SORT_KEY = 'うたかせ' - - # ダイスボットの使い方 - HELP_MESSAGE = <=(\d+))?/i - base = (Regexp.last_match(1) || 2).to_i - crit = Regexp.last_match(3).to_i - diff = Regexp.last_match(5).to_i - result = checkRoll(base, crit, diff) - end - - return nil if result.empty? - - return "#{command} > #{result}" - end - - def checkRoll(base, crit, diff = 0) - result = "" - - base = getValue(base) - crit = getValue(crit) - - return result if base < 1 - - crit = 6 if crit > 6 - - result += "(#{base}d6)" - - _, diceText = roll(base, 6) - - diceList = diceText.split(/,/).collect { |i| i.to_i }.sort - - result += " > [#{diceList.join(',')}] > " - result += getRollResultString(diceList, crit, diff) - - return result - end - - def getRollResultString(diceList, crit, diff) - success, maxnum, setCount = getSuccessInfo(diceList, crit, diff) - - result = "" - - if isDragonDice(crit) - result += "龍のダイス「#{@arrayDragonDiceName[crit]}」(#{crit})を使用 > " - end - - if success - result += "成功レベル:#{maxnum} (#{setCount}セット)" - if diff != 0 - diffSuccess = (maxnum >= diff) - if diffSuccess - result += " > 成功" - else - result += " > 失敗" - end - end - - else - result += "失敗" - end - - return result - end - - def getSuccessInfo(diceList, crit, _diff) - debug("checkSuccess diceList, crit", diceList, crit) - - diceCountHash = getDiceCountHash(diceList, crit) - debug("diceCountHash", diceCountHash) - - maxnum = 0 - successDiceList = [] - countThreshold = (isDragonDice(crit) ? 1 : 2) - - diceCountHash.each do |dice, count| - maxnum = count if count > maxnum - successDiceList << dice if count >= countThreshold - end - - debug("successDiceList", successDiceList) - - if successDiceList.size <= 0 - # 失敗:ゾロ目無し(全部違う) - return false, 0, 0 - end - - # 竜のダイスの場合 - maxnum *= 2 if isDragonDice(crit) - - # 成功:ゾロ目あり - return true, maxnum, successDiceList.size - end - - def getDiceCountHash(diceList, crit) - diceCountHash = diceList.inject(Hash.new(0)) do |hash, dice| - if isNomalDice(crit) || (dice == crit) - hash[dice] += 1 - end - hash - end - - return diceCountHash - end - - def isNomalDice(crit) - !isDragonDice(crit) - end - - def isDragonDice(crit) - (crit != 0) - end - - def getValue(number) - return 0 if number > 100 - - return number - end -end diff --git a/src/src_bcdice/diceBot/VampireTheMasquerade5th.rb b/src/src_bcdice/diceBot/VampireTheMasquerade5th.rb deleted file mode 100644 index c8340b2a7..000000000 --- a/src/src_bcdice/diceBot/VampireTheMasquerade5th.rb +++ /dev/null @@ -1,138 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class VampireTheMasquerade5th < DiceBot - # ゲームシステムの識別子 - ID = 'VampireTheMasquerade5th' - - # ゲームシステム名 - NAME = 'Vampire: The Masquerade 5th Edition' - - # ゲームシステム名の読みがな - SORT_KEY = 'うあんはいあさますかれえと5' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 - if success_dice >= difficulty - judgment_result = get_success_result(ten_dice >= 2, hunger_ten_dice) - else - judgment_result = get_fail_result(hunger_botch_dice) - end - result_text = "#{result_text} 難易度=#{difficulty}#{judgment_result}" - elsif difficulty < 0 - if success_dice == 0 - judgment_result = get_fail_result(hunger_botch_dice) - else - judgment_result = "" - end - result_text = "#{result_text}#{judgment_result}" - end - - return result_text - end - - def get_critical_success(ten_dice) - # 10の目が2個毎に追加2成功 - return ((ten_dice / 2).floor * 2) # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - end - - def make_dice_roll(dice_pool) - _, dice_text, = roll(dice_pool, 10) - success_dice = 0 - ten_dice = 0 - botch_dice = 0 - - dice_text.split(',').each do |take_dice| - if take_dice.to_i >= 6 - success_dice += 1 - if take_dice == "10" - ten_dice += 1 - end - elsif take_dice == "1" - botch_dice += 1 - end - end - - return dice_text, success_dice, ten_dice, botch_dice - end - - def get_success_result(is_critical, hunger_ten_dice) - judgment_result = ":判定成功!" - if hunger_ten_dice > 0 && is_critical - return "#{judgment_result} [Messy Critical]" - elsif is_critical - return "#{judgment_result} [Critical Win]" - end - - return judgment_result - end - - def get_fail_result(hunger_botch_dice) - judgment_result = ":判定失敗!" - if hunger_botch_dice > 0 - return "#{judgment_result} [Bestial Failure]" - end - - return judgment_result - end -end diff --git a/src/src_bcdice/diceBot/Villaciel.rb b/src/src_bcdice/diceBot/Villaciel.rb deleted file mode 100644 index 9be9a0d98..000000000 --- a/src/src_bcdice/diceBot/Villaciel.rb +++ /dev/null @@ -1,554 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Villaciel < DiceBot - # ゲームシステムの識別子 - ID = 'Villaciel' - - # ゲームシステム名 - NAME = '蒼天のヴィラシエル' - - # ゲームシステム名の読みがな - SORT_KEY = 'そうてんのういらしえる' - - # ダイスボットの使い方 - HELP_MESSAGE = <=d] - []内省略時は達成数の計算のみ。トライアンフあり。 - n: ダイス数、d: 難易度 -・フロンティア判定  nVF - n: ダイス数 - nVBSを行い、うでまえ表を参照した結果を表示します。 -・採掘スキル判定   nVM - n: ダイス数 - 判定に成功した場合、自動的に獲得できるアイテム数も表示されます。 -・宝石加工スキル判定 nVG - n: ダイス数 -・前職表       PJ[x] x=V,A - []内は省略可能。 - PJ, PJV: 「蒼天のヴィラシエル」掲載の前職表 PJA: 「白雲のアルメサール」掲載の前職表 -・ぷちクエスト表   PQ[x] x=V,A - []内は省略可能。 - PQ, PQV: 「蒼天のヴィラシエル」掲載のぷちクエスト表 PQA: 「白雲のアルメサール」掲載のぷちクエスト表 -・アクシデント表   AC -・もふもふ表     MMx x=I,A,V,VV,VA,D - MMI: 昆虫 MMA: 動物 MMV, MMVV: ヴィラシエル種(「蒼天のヴィラシエル」掲載) MMVA: ヴィラシエル種(「白雲のアルメサール」掲載) MMD: 鋼龍種 -・釣り表       Fx x=L,R,W,G,B,C,S - FL: 湖 FR: 河 FW: 白雲 FG: 灰雲 FB: 黒雲 FC: 共通 FS: 塩湖 -・不食植物表     IP[x] x=V,A - IP, IPV: 「蒼天のヴィラシエル」掲載の不食植物表 IPA: 「白雲のアルメサール」掲載の不食植物表 -・可食植物表     EP[x][n] x=V,A - []内は省略可能。 - n: 可食植物表番号 - EP[n], EPV[n]: 「蒼天のヴィラシエル」掲載の可食植物表。[]内省略時はnを1D6で決定し、EPVnを実行。ただし、1D6の出目が6ならば、「好きな表を選んでおっけー!」と表示。 - EPA[n]: 「白雲のアルメサール」掲載の可食植物表。[]内省略時は1D6を振り、出目が偶数ならばEPA1、奇数ならばEPA2を実行。 -・変異植物表     MP -・改良種表      IS -MESSAGETEXT - - setPrefixes(%w(\d+VBS(>=\d+)? \d+VF \d+VM \d+VG PJ[VA]? PQ[VA]? AC MM([IAD]|V[VA]?) F[LRWGBCS] IP[VA]? EP[VA]?\d? MP IS)) - - def initialize - super - - @sortType = 0 # 足し算ダイス、バラバラロール、どちらもソートしない - @d66Type = 1 # D66あり。ただし、現行ルールにある6x6の表については別のコマンドを用意 - @fractionType = 'roundUp' # 端数は切り上げ - end - - def rollDiceCommand(command) - case command - when /\d+VBS/ - resolute_action(command) - when /\d+VF/ - resolute_frontier_action(command) - when /\d+VM/ - resolute_mining_action(command) - when /\d+VG/ - resolute_cutting_gem_action(command) - when /PJ[VA]?/ - use_previous_job_chart(command) - when /PQ[VA]?/ - use_petit_quest_chart(command) - when 'AC' - use_accident_chart(command) - when /MM([IAD]|V[VA]?)/ - use_mohumohu_chart(command) - when /F[LRWGBCS]/ - use_fishing_chart(command) - when /IP[VA]?/ - use_inedible_plant_chart(command) - when /EP[VA]?\d?/ - use_edible_plant_chart(command) - when 'MP' - use_mutant_plant_chart(command) - when 'IS' - use_improved_species_chart(command) - end - end - - private - - D6 = 6 - LEAST_SUCCESS_ROLL = 4 - SUCCESS_STR = ' > 成功' - FAILURE_STR = ' > 失敗' - - def derive_achievement(num_dices, command) - # rollメソッドの引数は、順に「ダイス数」「ダイス1個の出目最大値」「結果のソート」「出目振り足しの基準値(0や1にしておけば処理は行われない)」「成功数を数えるときの比較条件」「成功数の基準値」「振り直しをする出目の基準値」 - # 戻り値は、順に「合計した出目」「ロール結果出力用文字列」「出目が1だったダイスの数」「出目が最大値だったダイスの数」「出目の最大値」「成功数」「振り直しすべきダイスの数」 - # 達成数計算の際にはトライアンフ「出目が6だったダイスは達成数2としてカウントする」を考慮する必要があるが、要は「達成数=成功数+出目が最大値だったダイスの数」になる - roll_results = roll(num_dices, D6, @sortType, 0, '>=', LEAST_SUCCESS_ROLL) - dice_str = roll_results[1] - num_triumph_dices = roll_results[3] - num_successes = roll_results[5] - achievement = num_successes + num_triumph_dices - - output = "(#{command}) > [#{dice_str}] > 達成数: #{achievement}" - return achievement, output - end - - def resolute_action(command) - match_data = command.match(/(\d+)VBS(>=(\d+))?/) - - num_dices = match_data[1].to_i - achievement, output = derive_achievement(num_dices, command) - return output unless match_data[2] - - difficulty = match_data[3].to_i - output += achievement >= difficulty ? SUCCESS_STR : FAILURE_STR - end - - SKILL_CHART = %w(左に3マス、上に3マス動かす - 左に2マス、上に2マス動かす - 右か下に1マス動かしてもよい - 右に1マス、下に1マス動かす - 好きな方向に最大で3マス動かしてもよい(1マスでも良い) - 好きな方向に最大で5マス動かしてもよい(1〜3マスでもよい)).freeze - - def resolute_frontier_action(command) - num_dices = command.match(/(\d+)VF/)[1].to_i - achievement, output = derive_achievement(num_dices, command) - - output += ' > ' - output += case achievement - when 0 then SKILL_CHART[0] - when 1 then SKILL_CHART[1] - when 2 then SKILL_CHART[2] - when 3, 4 then SKILL_CHART[3] - when 5..8 then SKILL_CHART[4] - else SKILL_CHART[5] - end - end - - def resolute_difficult_action(num_dices, least_success_roll, command) - # 1個でもleast_success_roll以上の出目が出たら成功となる判定 - - # rollメソッドの引数は、順に「ダイス数」「ダイス1個の出目最大値」「結果のソート」「出目振り足しの基準値(0や1にしておけば処理は行われない)」「成功数を数えるときの比較条件」「成功数の基準値」「振り直しをする出目の基準値」 - # 戻り値は、順に「合計した出目」「ロール結果出力用文字列」「出目が1だったダイスの数」「出目が最大値だったダイスの数」「出目の最大値」「成功数」「振り直しすべきダイスの数」 - # 出目の最大値がnならば「1個でもn以上の出目が出た」ことになる - roll_results = roll(num_dices, D6, @sortType) - dice_str = roll_results[1] - largest_roll = roll_results[4] - is_successful = largest_roll >= least_success_roll - - output = "(#{command}) > [#{dice_str}]" - output += is_successful ? SUCCESS_STR : FAILURE_STR - - return output, is_successful - end - - LEAST_MINING_SUCCESS_ROLL = 5 - LEAST_GEM_SUCCESS_ROLL = 6 - - def resolute_mining_action(command) - num_dices = command.match(/(\d+)VM/)[1].to_i - output, is_successful = resolute_difficult_action(num_dices, LEAST_MINING_SUCCESS_ROLL, command) - return output unless is_successful - - roll_result, = roll(1, D6) - output += " > (1D6) > [#{roll_result}] > アイテムを#{roll_result}個獲得" - end - - def resolute_cutting_gem_action(command) - num_dices = command.match(/(\d+)VG/)[1].to_i - resolute_difficult_action(num_dices, LEAST_GEM_SUCCESS_ROLL, command)[0] - end - - VILLACIEL_PREVIOUS_JOB_CHART = [['農家: 知力+1 器用さ+1 開拓/1Lv', - '漁師: 知力+1 ひらめき+1 釣り/1Lv', - '狩人: 武力+1 ひらめき+1 穴掘り/1Lv', - '鍛冶職人: 武力+1 器用さ+1 採掘/1Lv', - '牧場主: 仲良し+2 開拓/1Lv', - '採掘師: 器用さ+1 ひらめき+1 採掘/1Lv'].freeze, - ['家事手伝い: 器用さ+1 仲良し+1 調理/1Lv', - '調理師: 知力+1 ひらめき+1 調理/1Lv', - '細工師: 器用さ+2 採掘/1Lv', - '大工: 武力+1 器用さ+1 木こり/1Lv', - '荒くれ者: 武力+2 穴掘り/1Lv', - '王国騎士: 武力+1 知力+1 木こり/1Lv'].freeze].freeze - ARMESEAR_PREVIOUS_JOB_CHART = [['農家: 知力+1 器用さ+1 開拓/1Lv', - '漁師: 知力+1 ひらめき+1 釣り/1Lv', - '狩人: 武力+1 ひらめき+1 穴掘り/1Lv', - '鍛冶職人: 武力+1 器用さ+1 採掘/1Lv', - '牧場主: 仲良し+2 開拓/1Lv', - '採掘師: 器用さ+1 ひらめき+1 採掘/1Lv'].freeze, - ['羊飼い: 仲良し+2 もふもふ/1Lv', - '芽拾い: 知力+1 武力+1 採集/1Lv', - '服屋見習い: 器用さ+2 裁縫/1Lv', - '革細工見習い: 知力+2 裁縫/1Lv', - '商人: 知力+1 仲良し+1 基礎になるスキル/1Lv', - '旅人: 武力+1 知力+1 基礎になるスキル/1Lv'].freeze, - ['家事手伝い: 器用さ+1 仲良し+1 調理/1Lv', - '調理師: 知力+1 ひらめき+1 調理/1Lv', - '細工師: 器用さ+2 採掘/1Lv or 調合・細工/1Lv', - '大工: 武力+1 器用さ+1 木こり/1Lv', - '荒くれ者: 武力+2 穴掘り/1Lv', - '王国騎士: 武力+1 知力+1 木こり/1Lv'].freeze].freeze - - def use_previous_job_chart(command) - match_data = command.match(/PJ([VA]?)/) - chart_symbol = match_data[1] == '' ? 'V' : match_data[1] - - roll_result1, = roll(1, D6) - chart_text, roll_result2 = case chart_symbol - when 'V' then get_table_by_1d6(VILLACIEL_PREVIOUS_JOB_CHART[(roll_result1 - 1) / 3]) - when 'A' then get_table_by_1d6(ARMESEAR_PREVIOUS_JOB_CHART[(roll_result1 - 1) / 2]) - end - - chart_title = case chart_symbol - when 'V' then '前職表(ヴィラシエル)' - when 'A' then '前職表(アルメサール)' - end - "#{chart_title} > [#{roll_result1},#{roll_result2}] > #{chart_text}" - end - - VILLACIEL_PETIT_QUEST_CHART = [['家の補強のために: 【目的:木を1個納品】【報酬:各自2プサイ】見えを張っていい木材で家を作ったら木材が枯渇しちまった。頼む、原木を分けてくれないか?', - '孫のために: 【目的:花を1個納品】【報酬:各自2プサイ】綺麗な花があればいい色に染められるだろうと思うてな。孫のために必要なの。', - '人間界の草: 【目的:草を2個納品】【報酬:各自3プサイ】魔界にはない草が生えていると噂で聞いたことがある。その草がほしい。', - '種の生存のために: 【目的:可食植物(改良種を除く)を1個納品】【報酬:各自1プサイ】育ちが悪い同種の植物と掛け合わせてみたいのでサンプルがほしい。', - 'にんげんのたべもの!: 【目的:可食植物(改良種を除く)を1個納品】【報酬:各自2プサイ】ひゅーいあはなにをたべるの! たべたい!', - 'まかいのたべものって?: 【目的:可食植物の改良種を2個納品】【報酬:各自3プサイ】まぞくさんはなにたべるですか! おしえてください。'].freeze, - ['おうちなおしたいの!: 【目的:石材を1個納品】【報酬:各自1プサイ】おうちがぼろぼろだから、ママのかわりになおしたいの。', - '娘の結婚式に必要なんだ!: 【目的:宝石を2個納品】【報酬:各自3プサイ】ちょっとさきなんですが、娘が結婚するので結婚式用の宝石を集めています。', - '金属がたりない!: 【目的:金属を1個納品】【報酬:各自2プサイ】いい武器にはいい金属を。今回必要なのは……。', - '村の聖堂を直したいんだ!: 【目的:石材を1個納品】【報酬:各自2プサイ】聖堂を直していたが石材がたりない!', - '弟の甲冑に使うんだ!: 【目的:金属を2個納品】【報酬:各自3プサイ】最近、近くの鉱山から「ある金属」が姿を消した。', - 'おねえちゃんのたんじょうびに: 【目的:宝石を1個納品】【報酬:各自2プサイ】たんじょうびぷれぜんとにほうせきあげたらおねえちゃんよろこぶかな?'].freeze, - ['パパのために: 【目的:木材の家具を1個納品】【報酬:各自2プサイ】はたらいてばっかりのパパにプレゼントしたいの。おねがいします!', - '癒やされたい……: 【目的:石材の家具を1個納品】【報酬:各自2プサイ】仕事時間は短いとはいえ、激務。めちゃつらい。癒しになる家具がほしい。', - 'いい家具に囲まれてみたい: 【目的:金属の家具を1個納品】【報酬:各自2プサイ】開拓も最高だけど、他の島の人とも交流したい。人を呼べるような家を作るためには最高の家具が必要!', - '家具の在庫不足: 【目的:木材の装飾品を1個納品】【報酬:各自3プサイ】困ったことに職人に逃げられた! このままじゃ、お店開けない!!', - 'と、ともだちにあげるの!: 【目的:石材の装飾品を1個納品】【報酬:各自3プサイ】えっと、お、おきにいりのともだちがいるんだ。そ、そのこのたんじょうびだから、プレゼントしたくって。', - '親の木に飾りを: 【目的:金属の装飾品を1個納品】【報酬:各自3プサイ】元気のない親の木を心配してペッコ達が大騒ぎしているんだ。君はいつまでも美しいよと伝えたくてね。一つ助力をお願いするよ。'].freeze, - ['そちらの河魚を食してみたい: 【目的:河魚を2個納品】【報酬:各自3プサイ】おいしい河魚がいるときいたことがあるのです。さぁ、はやく、釣ってきてくださいまし。', - '研究に使用したい: 【目的:湖魚を1個納品】【報酬:各自1プサイ】そちらの世界にある同名の魚が本当にこちらの世界にいるものと一緒か確かめたいのです。', - 'しろいくもにすむおさかながみたい!: 【目的:白雲の雲魚を1個納品】【報酬:各自2プサイ】こっちにはしろいくもってなかなかないの! しろいくものおさかな、たべてみたいな。', - '釣り師がいないのでお魚がほしい: 【目的:灰雲の雲魚を2個納品】【報酬:各自3プサイ】野菜や肉もいいが魚も食べたい……。頼む、魚を釣ってきてくれないか?', - 'まっくろなくもにすむおさかな!: 【目的:黒雲の雲魚を1個納品】【報酬:各自2プサイ】まっくろなくもにはどんなさかながすんでるの? みせて、みせて!', - '人間界では見られない魚が見たい!: 【目的:共通の雲魚を1個納品】【報酬:各自2プサイ】他の魚の雲を利用して泳ぎ回る魚がいると聞いたよ。ぜひ見せてほしいな。'].freeze].freeze - ARMESEAR_PETIT_QUEST_CHART = [['お祭り用の布が足りないの!: 【目的:布を2個納品】【報酬:各自4プサイ】お祭り前なのに、布職人が腰を痛めちゃったの!', - 'お洋服がぼろぼろになっちゃったの: 【目的:布を1個納品】【報酬:各自2プサイ】おばあちゃんに作ってもらった服がボロボロになっちゃったから、なおしたいの。', - 'ぎっくり腰からのヘルプ: 【目的:薪を3個納品】【報酬:各自3プサイ】仕事してたらぎっくり腰になっちゃったのだ。頼むのだ。', - '不調には栄養たっぷりのミルクを: 【目的:ミルクを1個納品】【報酬:各自3プサイ】体調を崩しちゃったの。栄養満点のミルクを頂戴。', - '材料がたりない!: 【目的:???の粗皮を1個納品】【報酬:各自3プサイ】革細工師を目指してるんだけど、皮が足りないんだ。種類は問わないから、早めに頼むよ。', - '愛しのガードナーのために: 【目的:???の肉を1個納品】【報酬:各自3プサイ】ガードナーの調子が悪いから、栄養をつけさせたいんだ。肉はなんだっていい、とびっきりのを頼むよ。'].freeze, - ['灯火をひとつ: 【目的:キャンドルを1個納品】【報酬:各自3プサイ】家の裏に知らない建物があるんだ。まっくらだから明かりが必要で……。', - '布の色を頂戴: 【目的:染料を1個納品】【報酬:各自2プサイ】んー、コンテストのために布を織ったのだけど、色が決められないんだ。お願いするよ。', - 'きれいなのお花を: 【目的:花を1個納品】【報酬:各自2プサイ】パパの誕生日プレゼントを妹と作りたいんだ。お願いできる?', - '旅立ちのために: 【目的:衣類を1個納品】【報酬:各自15プサイ】旅立つ弟に服をプレゼントしたいんだ。', - '納品物が足りない!: 【目的:革を1個納品】【報酬:各自4プサイ】どうしても納品する皮がたりない……頼む、なんとか用意できないか?', - '求)照明: 【目的:照明を1個納品】【報酬:各自10プサイ】引っ越しする最中に照明を壊してしまった! 明日から明かりがないのはつらい……。作ってくれないか?'].freeze, - ['装備の修復のため: 【目的:革を2個納品】【報酬:各自5プサイ】大事な装備が壊れちゃったんだ! 直すのに必要なんだけど、革を持っているかい?', - '主に祝いの品を: 【目的:敷物を1個納品】【報酬:各自15プサイ】誕生日を迎える主にささやかなながらわたしからも祝いの品を送りたいのです。', - '手料理を求めて: 【目的:出来栄え5の料理を1個納品】【報酬:各自5プサイ】たまには誰かの料理が食べたいんだ。', - '釣り竿が折れちゃって……: 【目的:塩魚を2個納品】【報酬:各自3プサイ】釣り竿が折れちゃったから釣りができないんだ。一匹頼める?', - '蝋がほしいの: 【目的:蝋を1個納品】【報酬:各自2プサイ】お兄ちゃんとパパの誕生日プレゼントを作るの。見つからないからお願いできる?', - '美しさを求めて: 【目的:アルメサール産の花を1個納品】【報酬:各自3プサイ】美しいお花を摘んで来てくださらない? 美のために必要でしてよ。'].freeze].freeze - - def use_petit_quest_chart(command) - match_data = command.match(/PQ([VA]?)/) - chart_symbol = match_data[1] == '' ? 'V' : match_data[1] - - roll_result1, = roll(1, D6) - chart_text, roll_result2 = case chart_symbol - when 'V' - chart_index = case roll_result1 - when 1, 2 then 0 - when 3, 4 then 1 - when 5 then 2 - when 6 then 3 - end - get_table_by_1d6(VILLACIEL_PETIT_QUEST_CHART[chart_index]) - when 'A' then get_table_by_1d6(ARMESEAR_PETIT_QUEST_CHART[(roll_result1 - 1) / 2]) - end - - chart_title = case chart_symbol - when 'V' then 'ぷちクエスト表(ヴィラシエル)' - when 'A' then 'ぷちクエスト表(アルメサール)' - end - "#{chart_title} > [#{roll_result1},#{roll_result2}] > #{chart_text}" - end - - ACCIDENT_CHART = ['飛び猪襲来!: 空飛ぶ猪が浮遊島めがけて突撃してきた! 建物が粉砕される前に迎撃だ!(「蒼天のヴィラシエル」P.46)', - '嵐がくるぞ!: 嵐が来るらしいぞ! どれだけ対策できるかが鍵だ!(「蒼天のヴィラシエル」P.47)', - '雨が降らないぞ!: おかしいなぁ、雨が降らないぞぉ……? こうなったら雨乞いの踊りだ!(「蒼天のヴィラシエル」P.48)', - 'トビウオ流星群: きらきら光る流れ星……いや待て! あれはトビウオの群れだー!?(「蒼天のヴィラシエル」P.49)', - 'すごい雷雨: すごい。ごろごろばりばり聞こえてくる。これは早々に対策しないと直撃するぞ!(「蒼天のヴィラシエル」P.50)', - '野菜泥棒出現!: 畑の野菜が盗まれているぞ……? これは犯人を捕まえないと!(「蒼天のヴィラシエル」P.51)'].freeze - - def use_accident_chart(_command) - chart_text, roll_result = get_table_by_1d6(ACCIDENT_CHART) - "アクシデント表 > [#{roll_result}] > #{chart_text}" - end - - def use_6x6_chart(chart, chart_name) - # 6x6の表からランダムに参照する - # chartは文字列の配列の配列であることを仮定 - # D66ロールによる表参照と近いが、D66の方は13, 42などの数値に対応した表なのに対し、こちらは「下3マス、右2マス」という風にセルを参照する - y_roll, = roll(1, D6) - cell_text, x_roll = get_table_by_1d6(chart[y_roll - 1]) - "#{chart_name} > [#{y_roll},#{x_roll}] > 下#{y_roll}マス、右#{x_roll}マス > #{cell_text}" - end - - MOHUMOHU_INSECT_CHART = [['小さな虫', '小さな虫', 'カマキリ', 'カマキリ', 'バッタ', 'クワガタ'].freeze, - ['小さな虫', 'カラスアゲハ', 'カマキリ', 'バッタ', 'オオスカシバ', 'カイコ'].freeze, - ['ハンミョウ', 'カラスアゲハ', 'カマキリ', 'バッタ', 'カイコ', 'トンボ'].freeze, - ['ハンミョウ', 'カラスアゲハ', 'カラスアゲハ', 'チッチハチ', 'トンボ', 'トンボ'].freeze, - ['クワガタ', 'カラスアゲハ', 'チッチハチ', 'チッチハチ', 'アリ', 'アリ'].freeze, - ['クワガタ', 'チッチハチ', 'チッチハチ', 'チッチハチ', 'アリ', 'アリ'].freeze].freeze - - MOHUMOHU_ANIMAL_CHART = [['トリサン', 'トリサン', 'ブタ', 'ヒツジ', 'タヌキ', 'タヌキ'].freeze, - ['トリサン', 'ブタ', 'ヒツジ', 'ウッシ', 'キツネ', 'タヌキ'].freeze, - ['ブタ', 'オグマ', 'ヒツジ', 'キツネ', 'キツネ', 'アタウサギ'].freeze, - ['ブタ', 'ヒツジ', 'ヒツジ', 'リス', 'シシ', 'ヴィラシエル種(MMV)'].freeze, - ['ウッシ', 'ウサギ', 'ウサギ', 'シシ', 'アタウサギ', 'オオカミ'].freeze, - ['ウッシ', 'オグマ', 'クーマ', 'シシ', 'オオカミ', 'ヴィラシエル種(MMV)'].freeze].freeze - - MOHUMOHU_VILLACIEL_CHART = [['ウドン', 'ウドン', 'オボン', 'オボン', 'オボン', 'オワン'].freeze, - ['ウドン', 'ウドン', 'オボン', 'オワン', 'オワン', 'オワン'].freeze].freeze - - MOHUMOHU_VILLACIEL2_CHART = [['すねーくあし', 'すねーくあし', 'すねーくあし', 'ウタヒ', 'オオトリサン', 'オオトリサン'].freeze, - ['すねーくあし', 'すねーくあし', 'ホネホネ', 'オオトリサン', 'アマアマガニ', 'ホワホワ'].freeze, - ['すねーくあし', 'ホネホネ', 'オオトリサン', 'ウタヒ', 'アマアマガニ', 'ペロリ'].freeze, - ['オオトリサン', 'オオトリサン', 'ホネホネ', 'ホネホネ', 'ホワホワ', 'アマアマガニ'].freeze, - ['ホネホネ', 'ウタヒ', 'アマアマガニ', 'ペロリ', 'ペロリ', 'ペロリ'].freeze, - ['オオトリサン', 'ホワホワ', 'ホワホワ', 'アマアマガニ', 'ペロリ', 'ペロリ'].freeze].freeze - - MOHUMOHU_DRAGON_CHART = [['モドモドリス', 'テロメ', 'モドモドリス', 'オジサン', 'オジサン', 'グロッチ'].freeze, - ['テロメ', 'モドモドリス', 'オジサン', 'テロメ', 'ニホンツノ', 'グロッチ'].freeze, - ['テロメ', 'グロッチ', 'グロッチ', 'グロッチ', 'オジサン', 'コディ'].freeze, - ['モドモドリス', 'グロッチ', 'ニホンツノ', 'テロメ', 'テーリー', 'ケラプス'].freeze, - ['オジサン', 'テロメ', 'テロメ', 'コディ', 'コディ', 'ケラプス'].freeze, - ['コディ', 'テーリー', 'テーリー', 'コディ', 'ケラプス', 'アサール・ゴッツ'].freeze].freeze - - def use_mohumohu_chart(command) - case command - when 'MMI' then use_6x6_chart(MOHUMOHU_INSECT_CHART, 'もふもふ表・昆虫') - when 'MMA' then use_6x6_chart(MOHUMOHU_ANIMAL_CHART, 'もふもふ表・動物') - when /MMV[VA]?/ - match_data = command.match(/MMV([VA]?)/) - chart_symbol = match_data[1] == '' ? 'V' : match_data[1] - - case chart_symbol - when 'V' - y_roll, = roll(1, D6) - cell_text, x_roll = get_table_by_1d6(MOHUMOHU_VILLACIEL_CHART[1 - y_roll % 2]) - "もふもふ表・ヴィラシエル種(ヴィラシエル) > [#{y_roll},#{x_roll}] > 下#{y_roll.even? ? '偶数' : '奇数'}、右#{x_roll}マス > #{cell_text}" - when 'A' then use_6x6_chart(MOHUMOHU_VILLACIEL2_CHART, 'もふもふ表・ヴィラシエル種(アルメサール)') - end - when 'MMD' then use_6x6_chart(MOHUMOHU_DRAGON_CHART, 'もふもふ表・鋼龍種') - end - end - - FISHING_LAKE_CHART = [['ヤマアイズリ', 'ヤマアイズリ', 'ヤマアイズリ', 'シコウチャ', 'シコウチャ', 'ハナロクショウ'].freeze, - ['ヤマアイズリ', 'ヤマアイズリ', 'ヤマアイズリ', 'シコウチャ', 'ハナロクショウ', 'ハナロクショウ'].freeze, - ['ヤマアイズリ', 'ヤマアイズリ', 'シコウチャ', 'シコウチャ', 'ハナモエギ', 'トノチャ'].freeze, - ['ヤマアイズリ', 'カラスアゲハ', 'シコウチャ', 'ハナロクショウ', 'トノチャ', 'ハナモエギ'].freeze, - ['シコウチャ', 'シコウチャ', 'ハナロクショウ', 'ハナロクショウ', 'トノチャ', 'ハナモエギ'].freeze, - ['シコウチャ', 'ハナロクショウ', 'トノチャ', 'トノチャ', 'ハナモエギ', 'シンペキ'].freeze].freeze - - FISHING_RIVER_CHART = [['ケイカンセキ', 'ケイカンセキ', 'ケイカンセキ', 'ケイカンセキ', 'カナリア', 'イワヌ'].freeze, - ['ケイカンセキ', 'ケイカンセキ', 'カナリア', 'カナリア', 'カナリア', 'イワヌ'].freeze, - ['ケイカンセキ', 'ケイカンセキ', 'カナリア', 'イワヌ', 'イワヌ', 'ヤマブキ'].freeze, - ['ケイカンセキ', 'カナリア', 'イワヌ', 'アメイロ', 'アメイロ', 'ヤマブキ'].freeze, - ['カナリア', 'カナリア', 'イワヌ', 'アメイロ', 'ヤマブキ', 'ヤマブキ'].freeze, - ['カナリア', 'イワヌ', 'アメイロ', 'アメイロ', 'ヤマブキ', 'コハク'].freeze].freeze - - FISHING_WHITE_CHART = [['ウメガサネ', 'ウメガサネ', 'ウメガサネ', 'ウメガサネ', 'ハネズ', 'ユルシ'].freeze, - ['ウメガサネ', 'ウメガサネ', 'ウメガサネ', 'ハネズ', 'ソホ', 'シンク'].freeze, - ['ウメガサネ', 'ウメガサネ', 'ハネズ', 'ソホ', 'ユルシ', 'ユルシ'].freeze, - ['ウメガサネ', 'ハネズ', 'ソホ', 'ユルシ', 'シンク', 'シンク'].freeze, - ['ハネズ', 'ソホ', 'ソホ', 'ユルシ', 'シンク', '共通(FC)'].freeze, - ['ハネズ', 'ソホ', 'ユルシ', 'シンク', '共通(FC)', 'シュアン'].freeze].freeze - - FISHING_GRAY_CHART = [['ウメガサネ', 'ウメガサネ', 'セイラン', 'セイラン', 'ミハナダ', 'ミハナダ'].freeze, - ['ウメガサネ', 'セイラン', 'セイラン', 'ミハナダ', 'ミハナダ', 'ミハナダ'].freeze, - ['ウメガサネ', 'ユルシ', 'ミハナダ', 'ミハナダ', 'ミハナダ', 'リンドウ'].freeze, - ['ユルシ', 'ユルシ', 'セイラン', 'リンドウ', 'リンドウ', 'スミレ'].freeze, - ['ユルシ', 'ユルシ', 'リンドウ', 'スミレ', 'スミレ', '共通(FC)'].freeze, - ['ユルシ', 'リンドウ', 'スミレ', 'スミレ', '共通(FC)', 'シゴク'].freeze].freeze - - FISHING_BLACK_CHART = [['セイラン', 'セイラン', 'テツコン', 'テツコン', 'ウスハナ', 'ウスハナ'].freeze, - ['セイラン', 'セイラン', 'テツコン', 'ウスハナ', 'ウスハナ', 'フカガワネズミ'].freeze, - ['セイラン', 'テツコン', 'ウスハナ', 'ウスハナ', 'ミハナダ', 'フカガワネズミ'].freeze, - ['セイラン', 'テツコン', 'ミハナダ', 'ウスハナ', 'フカガワネズミ', 'フカガワネズミ'].freeze, - ['セイラン', 'ウスハナ', 'ミハナダ', 'ミハナダ', 'ミハナダ', '共通(FC)'].freeze, - ['テツコン', 'ウスハナ', 'ミハナダ', 'フカガワネズミ', '共通(FC)', 'ルリ'].freeze].freeze - - FISHING_COMMON_CHART = [['トビウオ', 'トビウオ', 'トビウオ', 'オオガメ', 'ロブスター', 'オオサンショウウオ'].freeze, - ['トビウオ', 'トビウオ', 'エイ', 'オオガメ', 'クジラ', 'ロブスター'].freeze, - ['トビウオ', 'エイ', 'マグロ', 'マグロ', 'カジキ', 'イタチザメ'].freeze, - ['トビウオ', 'ミズダコ', 'クラゲ', 'マグロ', 'オオクラゲ', 'ハンマーヘッド・シャーク'].freeze, - ['トビウオ', 'エイ', 'オオガメ', 'オオガメ', 'イタチザメ', 'ミズダコ'].freeze, - ['トビウオ', 'クラゲ', 'ロブスター', 'ハンマーヘッド・シャーク', 'ミズダコ', 'ダイオウイカ'].freeze].freeze - - FISHING_SALT_LAKE_CHART = [['シラユリ', 'シラユリ', 'シラユリ', 'ゲッパク', 'ゲッパク', 'ゲッパク'].freeze, - ['シラユリ', 'シラユリ', 'シラユリ', 'ゲッパク', 'スズ', 'ナマリ'].freeze, - ['シラユリ', 'ゲッパク', 'ゲッパク', 'スズ', 'ナマリ', 'ナマリ'].freeze, - ['シラユリ', 'シラユリ', 'ナマリ', 'ナマリ', 'ナマリ', 'ナマリ'].freeze, - ['ゲッパク', 'ゲッパク', 'スズ', 'スズ', 'ロイロ', 'ロイロ'].freeze, - ['ナマリ', 'スズ', 'スズ', 'スズ', 'ロイロ', 'クロツルバミ'].freeze].freeze - - def use_fishing_chart(command) - case command - when 'FL' then use_6x6_chart(FISHING_LAKE_CHART, '釣り・湖表') - when 'FR' then use_6x6_chart(FISHING_RIVER_CHART, '釣り・河表') - when 'FW' then use_6x6_chart(FISHING_WHITE_CHART, '釣り・白雲表') - when 'FG' then use_6x6_chart(FISHING_GRAY_CHART, '釣り・灰雲表') - when 'FB' then use_6x6_chart(FISHING_BLACK_CHART, '釣り・黒雲表') - when 'FC' then use_6x6_chart(FISHING_COMMON_CHART, '釣り・共通表') - when 'FS' then use_6x6_chart(FISHING_SALT_LAKE_CHART, '釣り・塩湖表') - end - end - - INEDIBLE_PLANT_CHART = [['シュイの花', 'ダデオの花', 'ロキの花', 'シェラの花', 'トトイト', 'ポロネイマ'].freeze, - ['シュイの花', 'ロキの花', 'アウディの花', 'イディウの花', 'トトイト', 'ポロネイマ'].freeze, - ['ダデオの花', 'アウディの花', 'イディウの花', 'マトイト', 'ポポトマ', 'ルタタ'].freeze, - ['シュイの花', 'ミカギの花', 'ロトイト', 'ロトイト', 'ツルイド', 'ルタタ'].freeze, - ['ミカギの花', 'ロトイト', 'ロトイト', 'ツルイド', 'ルタタ', '変異植物(MP)'].freeze, - ['トトイト', 'マトイト', 'ポポトマ', 'ツルイド', '変異植物(MP)', 'サボサボ'].freeze].freeze - - INEDIBLE_PLANT2_CHART = [['マトラの花', 'マトラの花', '蜜蝋', 'ポルラの花', 'ウェスドの花', 'ポルラの花'].freeze, - ['マトラの花', 'ホイの花', 'マトラの花', 'ウェスドの花', '蜜蝋', 'ロロの花'].freeze, - ['ホイの花', 'ポルラの花', 'ウェスドの花', 'ホイの花', 'ポルラの花', 'ポルラの花'].freeze, - ['ポルラの花', 'ホイの花', 'ロロの花', 'ウェスドの花', 'ポルラの花', 'ドダの実'].freeze, - ['ポルラの花', 'ウェスドの花', 'ロロの花', 'ロロの花', 'ロロの花', 'ロロの花'].freeze, - ['ウェスドの花', 'ロロの花', 'ポルラの花', 'ロロの花', 'ドダの実', 'ロロの花'].freeze].freeze - - def use_inedible_plant_chart(command) - match_data = command.match(/IP([VA]?)/) - chart_symbol = match_data[1] == '' ? 'V' : match_data[1] - - case chart_symbol - when 'V' then use_6x6_chart(INEDIBLE_PLANT_CHART, '不食植物表(ヴィラシエル)') - when 'A' then use_6x6_chart(INEDIBLE_PLANT2_CHART, '不食植物表(アルメサール)') - end - end - - EDIBLE_PLANT_CHARTS = [[['小麦', '小麦', 'さつまいも', 'ねぎ', '白菜', 'きゅうり'].freeze, - ['小麦', 'さつまいも', 'さといも', '白菜', '白菜', 'とうもろこし'].freeze, - ['さといも', 'さといも', 'ねぎ', '白菜', 'とうもろこし', '枝豆'].freeze, - ['シソ', 'ひらたけ', 'エリンギ', '枝豆', '枝豆', 'ラズベリー'].freeze, - ['シソ', 'ひらたけ', 'ひらたけ', 'エリンギ', 'ラズベリー', 'さといも'].freeze, - ['ナシ', 'ナシ', 'ナシ', 'ラズベリー', 'ラズベリー', 'さといも'].freeze].freeze, - [['米', '米', 'にんじん', 'じゃがいも', 'ふき', 'まいたけ'].freeze, - ['米', 'じゃがいも', 'じゃがいも', 'にら', 'ふき', 'きくらげ'].freeze, - ['冬瓜', 'しょうが', '冬瓜', 'ふき', 'ふき', 'きくらげ'].freeze, - ['しょうが', '冬瓜', 'ビワ', 'にら', 'まいたけ', 'まいたけ'].freeze, - ['ビワ', 'ビワ', 'もも', 'かぼちゃ', 'グリーンピース', 'まいたけ'].freeze, - ['ビワ', 'もも', 'もも', 'かぼちゃ', 'かぼちゃ', 'かぼちゃ'].freeze].freeze, - [['もち米', 'トマト', 'オクラ', 'とうがらし', '大根', 'グミ'].freeze, - ['もち米', 'オクラ', 'オクラ', '大根', '大根', 'とうがらし'].freeze, - ['しいたけ', 'マッシュルーム', 'オクラ', 'グミ', '玉ねぎ', '小松菜'].freeze, - ['ブロッコリー', 'しいたけ', 'トマト', '玉ねぎ', 'さやえんどう', '玉ねぎ'].freeze, - ['しいたけ', 'マッシュルーム', 'ブロッコリー', '小松菜', 'さやえんどう', '改良種(IS)'].freeze, - ['マッシュルーム', 'ブロッコリー', 'マッシュルーム', '小松菜', '改良種(IS)', 'グミ'].freeze].freeze, - [['大豆', '大豆', 'にんにく', 'そらまめ', 'しめじ', 'みかん'].freeze, - ['かぶ', '大豆', 'かぶ', 'キャベツ', 'そらまめ', 'みかん'].freeze, - ['にんにく', 'かぶ', 'にんにく', 'しめじ', 'クランベリー', 'ピーマン'].freeze, - ['キャベツ', 'キャベツ', 'ほうれん草', 'しめじ', 'レタス', 'ピーマン'].freeze, - ['ほうれん草', 'ほうれん草', 'クランベリー', 'レタス', 'ピーマン', '改良種(IS)'].freeze, - ['松茸', 'ほうれん草', '松茸', 'レタス', 'クランベリー', '改良種(IS)'].freeze].freeze, - [['小豆', 'れんこん', 'みつば', 'やまのいも', 'デコポン', 'イチゴ'].freeze, - ['れんこん', 'れんこん', '小豆', 'なめこ', 'かいわれ大根', 'なめこ'].freeze, - ['やまのいも', 'アスパラガス', 'なす', 'なめこ', 'やまのいも', 'デコポン'].freeze, - ['なす', 'やまのいも', 'みつば', 'えのきたけ', 'かいわれ大根', 'デコポン'].freeze, - ['アスパラガス', 'アスパラガス', 'やまのいも', 'みつば', 'なめこ', '改良種(IS)'].freeze, - ['なす', 'もやし', 'えのきたけ', 'えのきたけ', '改良種(IS)', 'イチゴ'].freeze].freeze].freeze - - EDIBLE_PLANT2_CHARTS = [[['テンサイ', 'バノ', 'テンサイ', 'サトウモロ', 'サトウモロ', 'パンノミ'].freeze, - ['テンサイ', 'バノ', 'サトウモロ', 'バノ', 'ミソレグア', 'パンノミ'].freeze, - ['テンサイ', 'サトウモロ', 'バノ', 'ニクニク', 'パンノミ', 'メーズム'].freeze, - ['バノ', 'バノ', 'バノ', 'パンノミ', 'ミソレグア', 'メーズム'].freeze, - ['テンサイ', 'パンノミ', 'ニクニク', 'ニクニク', 'メーズム', 'ミソレグア'].freeze, - ['サトウモロ', 'ニクニク', 'メーズム', 'ミソレグア', 'メーズム', 'メーズム'].freeze].freeze, - [['アロアベリー', 'パンノミ', 'ミソレグア', 'サイングア', 'パンノミ', 'アロアベリー'].freeze, - ['パンノミ', 'サイングア', 'パンノミ', 'ミソレグア', 'アロアベリー', 'ミソレグア'].freeze, - ['パンノミ', 'アロアベリー', 'サイングア', 'パンノミ', 'パンノミ', 'トロアベリア'].freeze, - ['パンノミ', 'アロアベリー', 'パンノミ', 'ミソレグア', 'ミソレグア', 'トロアベリア'].freeze, - ['サイングア', 'パンノミ', 'トロアベリア', 'ミソレグア', 'アロアベリー', 'サイングア'].freeze, - ['ミソレグア', 'トロアベリア', 'サイングア', 'アロアベリー', 'トロアベリア', 'トロアベリア'].freeze].freeze].freeze - - def use_villaciel_edible_plant_chart(chart_id, output) - output += use_6x6_chart(EDIBLE_PLANT_CHARTS[chart_id - 1], "可食植物表#{chart_id}(ヴィラシエル)") - end - - def use_armesear_edible_plant_chart(chart_id, output) - output += use_6x6_chart(EDIBLE_PLANT2_CHARTS[chart_id - 1], "可食植物表#{chart_id}(アルメサール)") - end - - def use_edible_plant_chart(command) - match_data = command.match(/EP([VA]?)(\d?)/) - chart_symbol = match_data[1] == '' ? 'V' : match_data[1] - - case chart_symbol - when 'V' - case match_data[2] - when '' - roll_result, = roll(1, D6) - return '(1D6) > [6] > 好きな表を選んでおっけー!' if roll_result == D6 - - use_villaciel_edible_plant_chart(roll_result, "(1D6) > [#{roll_result}] > ") - else - chart_id = match_data[2].to_i - return '' unless chart_id >= 1 && chart_id <= 5 - - use_villaciel_edible_plant_chart(chart_id, '') - end - when 'A' - case match_data[2] - when '' - roll_result, = roll(1, D6) - use_armesear_edible_plant_chart(roll_result.even? ? 1 : 2, "(1D6) > [#{roll_result}] > ") - else - chart_id = match_data[2].to_i - return '' unless [1, 2].include?(chart_id) - - use_armesear_edible_plant_chart(chart_id, '') - end - end - end - - MUTANT_PLANT_CHART = [['ガドゴン', 'ガドゴン', 'レディダン', 'ボディア', 'ブタマル', 'ブタマル'].freeze, - ['レディダン', 'レディダン', 'ボディア', 'トロコッコ', 'ブタマル', 'ツァイド'].freeze, - ['ボディア', 'ボディア', 'マメノキ', 'ナッキュ', 'ツァイド', 'ボディア'].freeze, - ['ナッキュ', 'マメノキ', 'ナッキュ', 'ガドゴン', 'レディダン', 'レディダン'].freeze, - ['ポメラマ', 'ポメラマ', 'ナッキュ', 'ツァイド', 'ガドゴン', 'ボディア'].freeze, - ['ナッキュ', 'ツァイド', 'ツァイド', 'ツァイド', 'ボディア', 'グラディエゴ'].freeze].freeze - - def use_mutant_plant_chart(_command) - use_6x6_chart(MUTANT_PLANT_CHART, '変異植物表') - end - - IMPROVED_SPECIES_CHART = [['ワワ', 'ワワ', 'ブラックカロット', 'ビーズ', 'レモン', 'ブラッドオレンジ'].freeze, - ['ポポ', 'ポポ', 'グランツェ', 'オオカサゲ', 'ブラッドオレンジ', 'レモン'].freeze, - ['ヒットト', 'グランツェ', 'ブラックベリー', 'ピマット', 'ブラッドオレンジ', 'レモン'].freeze, - ['ブルーベリー', 'ヒットト', 'グランツェ', 'ブラッドオレンジ', 'ユズ', 'ブラックベリー'].freeze, - ['ビーズ', 'ピマット', 'オオカサゲ', 'ライム', 'ブルーベリー', 'ユズ'].freeze, - ['ビーズ', 'レッドキャベツ', 'ライム', 'オオカサゲ', 'ライム', 'リンゴ'].freeze].freeze - - def use_improved_species_chart(_command) - use_6x6_chart(IMPROVED_SPECIES_CHART, '改良種表') - end -end diff --git a/src/src_bcdice/diceBot/WARPS.rb b/src/src_bcdice/diceBot/WARPS.rb deleted file mode 100644 index 6188f05ef..000000000 --- a/src/src_bcdice/diceBot/WARPS.rb +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class WARPS < DiceBot - # ゲームシステムの識別子 - ID = 'WARPS' - - # ゲームシステム名 - NAME = 'ワープス' - - # ゲームシステム名の読みがな - SORT_KEY = 'わあふす' - - # ダイスボットの使い方 - HELP_MESSAGE = "失敗、成功度の自動判定を行います。\n" - - def check_2D6(total, dice_total, _dice_list, cmp_op, target) - if dice_total <= 2 - " > クリティカル" - elsif dice_total >= 12 - " > ファンブル" - elsif cmp_op == :<= && target != "?" - if total <= target - " > #{target - total}成功" - else - " > 失敗" - end - end - end -end diff --git a/src/src_bcdice/diceBot/WaresBlade.rb b/src/src_bcdice/diceBot/WaresBlade.rb deleted file mode 100644 index d9dbaf439..000000000 --- a/src/src_bcdice/diceBot/WaresBlade.rb +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class WaresBlade < DiceBot - # ゲームシステムの識別子 - ID = 'WaresBlade' - - # ゲームシステム名 - NAME = 'ワースブレイド' - - # ゲームシステム名の読みがな - SORT_KEY = 'わあすふれいと' - - # ダイスボットの使い方 - HELP_MESSAGE = "nD10>=m 方式の判定で成否、完全成功、完全失敗を自動判定します。\n" - - def check_nD10(total, _dice_total, dice_list, cmp_op, target) - return '' if target == '?' - return '' unless cmp_op == :>= - - if dice_list.count(10) == dice_list.size - ' > 完全成功' - elsif dice_list.count(1) == dice_list.size - ' > 絶対失敗' - elsif total >= target - ' > 成功' - else - ' > 失敗' - end - end -end diff --git a/src/src_bcdice/diceBot/Warhammer.rb b/src/src_bcdice/diceBot/Warhammer.rb deleted file mode 100644 index 15564d03e..000000000 --- a/src/src_bcdice/diceBot/Warhammer.rb +++ /dev/null @@ -1,335 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Warhammer < DiceBot - # ゲームシステムの識別子 - ID = 'Warhammer' - - # ゲームシステム名 - NAME = 'ウォーハンマー' - - # ゲームシステム名の読みがな - SORT_KEY = 'うおおはんまあ' - - # ダイスボットの使い方 - HELP_MESSAGE = < 10 - criticalValue = 1 if criticalValue < 1 - - whpp = '' - whppp = '' - - case partsWord - when /H/i - whpp = '頭部' - whppp = whh - when /A/i - whpp = '腕部' - whppp = wha - when /[TB]/i - whpp = '胴体' - whppp = whb - when /L/i - whpp = '脚部' - whppp = whl - when /W/i - whpp = '翼部' - whppp = whw - end - - dice_now, = roll(1, 100) - - crit_no = ((dice_now - 1) / 10).to_i * 10 - crit_num = criticalTable[crit_no + criticalValue - 1] - - resultText = whppp[crit_num - 1] - if crit_num >= 5 - resultText += 'サドンデス×' - else - resultText += 'サドンデス○' - end - - output = "#{whpp}CT表(#{dice_now}+#{criticalValue}) > #{resultText}" - - return output - end - - def wh_atpos(pos_num, pos_type) # WHFRP2命中部位表 - debug("wh_atpos begin pos_type", pos_type) - pos_2l = [ - '二足', - 15, '頭部', - 35, '右腕', - 55, '左腕', - 80, '胴体', - 90, '右脚', - 100, '左脚', - ] - pos_2lw = [ - '有翼二足', - 15, '頭部', - 25, '右腕', - 35, '左腕', - 45, '右翼', - 55, '左翼', - 80, '胴体', - 90, '右脚', - 100, '左脚', - ] - pos_4l = [ - '四足', - 15, '頭部', - 60, '胴体', - 70, '右前脚', - 80, '左前脚', - 90, '右後脚', - 100, '左後脚', - ] - pos_4la = [ - '半人四足', - 10, '頭部', - 20, '右腕', - 30, '左腕', - 60, '胴体', - 70, '右前脚', - 80, '左前脚', - 90, '右後脚', - 100, '左後脚', - ] - pos_4lw = [ - '有翼四足', - 10, '頭部', - 20, '右翼', - 30, '左翼', - 60, '胴体', - 70, '右前脚', - 80, '左前脚', - 90, '右後脚', - 100, '左後脚', - ] - pos_b = [ - '鳥', - 15, '頭部', - 35, '右翼', - 55, '左翼', - 80, '胴体', - 90, '右脚', - 100, '左脚', - ] - - wh_pos = [pos_2l, pos_2lw, pos_4l, pos_4la, pos_4lw, pos_b] - - pos_t = 0 - debug("pos_type", pos_type) - if pos_type != "" - case pos_type - when /\@(2W|W2)/i - pos_t = 1 - when /\@(4W|W4)/i - pos_t = 4 - when /\@(4H|H4)/i - pos_t = 3 - when /\@4/i - pos_t = 2 - when /\@W/i - pos_t = 5 - else - unless /\@(2H|H2|2)/i =~ pos_type - pos_t = -1 - end - end - end - - output = "" - - debug("pos_t", pos_t) - if pos_t < 0 - wh_pos.each do |pos_i| - output += get_wh_atpos_message(pos_i, pos_num) - end - else - pos_i = wh_pos[pos_t] - output += get_wh_atpos_message(pos_i, pos_num) - end - - return output - end - - def get_wh_atpos_message(pos_i, pos_num) - output = "" - - output += ' ' + pos_i[0] + ":" - - 1.step(pos_i.length + 1, 2) do |i| - if pos_num <= pos_i[i] - output += pos_i[i + 1] - break - end - end - - return output - end - - def getAttackResult(string) - debug("getAttackResult begin string", string) - - pos_type = "" - - if /(.+)(@.*)/ =~ string - string = Regexp.last_match(1) - pos_type = Regexp.last_match(2) - debug("pos_type", pos_type) - end - - unless /WH(\d+)/i =~ string - return '1' - end - - diff = Regexp.last_match(1).to_i - - total_n, = roll(1, 100) - - output = "(#{string}) > #{total_n}" - output += check_1D100(total_n, total_n, :<=, diff) - - pos_num = (total_n % 10) * 10 + (total_n / 10).to_i - pos_num = 100 if total_n >= 100 - - output += wh_atpos(pos_num, pos_type) if total_n <= diff - - return output - end -end diff --git a/src/src_bcdice/diceBot/WitchQuest.rb b/src/src_bcdice/diceBot/WitchQuest.rb deleted file mode 100644 index 008c6035a..000000000 --- a/src/src_bcdice/diceBot/WitchQuest.rb +++ /dev/null @@ -1,273 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class WitchQuest < DiceBot - # ゲームシステムの識別子 - ID = 'WitchQuest' - - # ゲームシステム名 - NAME = 'ウィッチクエスト' - - # ゲームシステム名の読みがな - SORT_KEY = 'ういつちくえすと' - - # ダイスボットの使い方 - HELP_MESSAGE = <= table.last.first - return table.last.last - end - - return get_table_by_number(success, table) - end - - def getStructureEncounter(number) - debug("getStructureEncounter number", number) - - tables = [[1, %w{船から降りてきた 魚を売っている 仕事で忙しそうな 異国から来た おもしろおかしい 汗水流している}], - [2, %w{おかしな格好をした 歌を歌っている ステキな笑顔をした 日なたぼっこをしている 悩んでいる 旅をしている}], - [3, %w{待ちぼうけをしている 壁に登っている タバコを吸っている 踊りを踊っている 幸せそうな 向こうから走ってくる}], - [4, %w{見張りをしている しゃべれない 見張りをしている 一輪車に乗った 元気いっぱいの 真面目な}], - [5, %w{ウソつきな 買い物をしている ギターを弾いている あなたのほうをじっと見ている ポップコーンを売っている 屋台を出している}], - [6, %w{子供を探している 時計を直している 物乞いをしている 気象実験をしている 飛び降りようとしている 時間をきにしている}], - [7, %w{目の見えない 金持ちそうな 一人歩きをしたことがない ふられてしまった 待ち合わせをしている 道に迷った}], - [8, %w{お祈りをしている スケッチをしている 勉強熱心な 記念碑を壊そうとしている 大きな声で文句をいっている 記念撮影している}], - [9, %w{隠れている はしごに登っている 鐘を鳴らしている 共通語の通じない 記憶を失った あなたのほうにバタッと倒れた}], - [10, %w{暇そうな 笑ったことがない ぶくぶくと太った 後継者を探している 王様におつかえしている 愛国心旺盛な}], - [11, %w{閉じ込められた 悲しそうな 怒っている 降りれなくなっている もの憂げな 飛ぼうとしている}], - [12, %w{釣りをしている 泳いでいる 川に物を落としてしまった 砂金を掘っている 川にゴミを捨てている カエルに化かされてしまった}], - [13, %w{世間話をしている 結婚を薦めたがる いやらしい話の好きな 選択をしている 水を汲んでいる 井戸に落ちてしまった}], - [14, %w{人におごりたがる 踊り子をしている 賭けをしている 泣き上戸な 飲み比べをしている 自慢話をしている}], - [15, %w{素朴そうな 田舎者の あなたをだまそうとしている ケンカをしている 泊まるお金のない あなたに依頼をしにきた}], - [16, %w{悪い占いの結果しか言わない あなたに嫉妬している 魅惑的な おしつけがましい いいかげんな占いしかしない 変わった占いをしている}], - [17, %w{かくれんぼをしている あまやどりをしている (ここにはだれもいません) 家の掃除をしている 取り壊しをしようとしている 昔ここに住んでいた}], - [18, %w{畑を耕している 畑を荒らしている 畑泥棒の 収穫している 日焼けして真っ黒な 嫁いできた(婿にきた)}], - [19, %w{粉をひいている 馬に乗って風車に突進している 風が吹かなくて困っている 寝ている 筋骨りゅうりゅうな 遊んでいる}], - [20, %w{パーティーをしている 酔っ払っている 酒を仕込んでいる 即売会をしている 笑っている 太った}], - [21, %w{ひとりたたずむ 花から生まれた 花が大好きな 花粉症の 花を買いにきた ラグビーをやって花をあらしてる}], - [22, %w{几帳面な 眼鏡をかけた なまいきな なわとびをしている 困っている ませている}], - [23, %w{本を読んでいる 世間話をしたがる 派手な格好をした 勉強熱心な うるさい 魔女のことについて調べている}], - [24, %w{神父さんに相談をしている 結婚式を挙げている 物静かな 片足の無い 熱い視線を送ってくる 挑発してくる}], - [25, %w{頑固な 刀の切れ味をためしたがる いいかげんな性格の スグに弟子にしたがる 見せの前でウロウロしている 道を尋ねている}], - [26, %w{不機嫌な 客の意見を聞かない 物を売らない 不幸な気前のいい 発明家の}], - [27, %w{恋人にプレゼントを探している 香り中毒になった 客に手伝わせる おまじないの好きな 人好きのする いじめっこな}], - [28, %w{騒がしい お菓子を食べて涙を流している 笑いの止まらない 甘い物に目がない 別れ話をしている あなたをお茶に誘う}], - [29, %w{フランスパンを盗んで走る しらけた顔をした 店番をする あなたをバイトで使いたがる 変なパンしか作らない 朝が苦手な}], - [30, %w{偏屈な 威勢のいい ケンカっぱやい 野次馬根性の強い 肉が食べれない 心優しく気前がいい}], - [31, %w{夫婦ケンカをしている 猫に魚を盗られた 助けを求めている 魚の種類がわからない 『おいしい』としかいわない あやしい}], - [32, %w{ヤンキー風の 自分がかっこいいと思っている 力自慢の 元は王様だといいはる 魔女のファンだという 子沢山の}], - [33, %w{わがままな かっこいい 独り言を言っている 変わった料理しかださない 目茶苦茶辛い料理を食べている デートをしている}], - [34, %w{仮病を使っている 不治の病を持った ”おめでた”の フケた顔した 髪の毛を染めた (健康でも)病名をいいたがる}], - [35, %w{実験をしたがる 精力をつけたがっている 惚れ薬を探している 薬づけになっている この町まで薬を売りに来た 睡眠薬で自殺をしようとしている}], - [36, %w{服まで質に入れた 値段にケチをつけている 疲れている 子供を質に入れようとしている 涙もろい 人間不信な}], - [37, %w{着飾った おねだりしている 退屈そうな 見栄っぱりな 高いものを薦める 宝石など買うつもりのない}], - [38, %w{だだをこねている ぬいぐるみを抱いている あなたを侵略者と考えている あなたの”おしり”にさわる 幸せのおもちゃを売っている あなたを自分の子と間違えている}], - [39, %w{人の話を聞かない 気分屋な カリアゲしかできない うわさ話の好きな 自動販売機を開発したという おせっかいな}], - [40, %w{お風呂あがりの こきつかわれている シェイプアップしている 人から追われている 人の体をじろじろと見る この町を案内してほしいという}], - [41, %w{サングラスをかけた みんな自分のファンと思っている あなたを役者と勘違いしている あなたはスターになれるという 手品をしている 『いそがしい』をいい続けている}], - [42, %w{ギャンブルをしている 競技に出場している 全財産を賭けている 勇敢な 参加者を募っている 情けない競技(闘技)をしてる}], - [43, %w{ダンスを踊っている ブレイクダンスをして場違いな 子供を背中におんぶしている あなたと踊りたがる 踊ったことのない 食べることに夢中な}], - [44, %w{2階からお金をばらまいている 窓の奥で涙をながしている 窓から忍びこもう ピアノを弾いている ここに住んでいる 家に招待したがる}], - [45, %w{馬にブラシをかけている 気性の激しい 騎手を探している 馬と話ができる 馬の生まれ変わりという 馬を安楽死させようか迷っている}], - [46, %w{いたずら好きな ライバル意識の強い 魔法の下手な 魔法を信じない 自分を神と思っている 魔法を使って人を化かしたがる}], - [47, %w{傷だらけな 両手に宝物を持った かわいい 地図を見ながら出てきている 剣を持った ダンジョンの主といわれる}], - [48, %w{墓参りをしている 耳の遠い 死んでしまった 葬式をしている きもだめしをしている 墓守をしている}],] - - table = get_table_by_number(number, tables, nil) - return nil if table.nil? - - text, index = get_table_by_1d6(table) - - person = getPersonTable1() - - return "SET#{number} > #{index}:#{text}#{person}" - end - - def getPersonTable1() - gotoNextTable = lambda { "表2へ" + getPersonTable2() } - - table = [[11, "おじさん"], - [12, "おばさん"], - [13, "おじいさん"], - [14, "おばあさん"], - [15, "男の子"], - [16, "女の子"], - - [22, "美少女"], - [23, "美少年"], - [24, "青年"], - [25, "少年"], - [26, "男女(カップル)"], - - [33, "新婚さん"], - [34, "お兄さん"], - [35, "お姉さん"], - [36, "店主(お店の人)"], - - [44, "王様"], - [45, "衛兵"], - [46, "魔女"], - - [55, "お姫様"], - [56, gotoNextTable], - - [66, gotoNextTable],] - - getPersonTable(table) - end - - def getPersonTable2() - gotoNextTable = lambda { "表3へ" + getPersonTable3() } - - table = [[11, "魔法使い"], - [12, "観光客"], - [13, "先生"], - [14, "探偵"], - [15, "刷"], - [16, "お嬢様"], - - [22, "お嬢様"], - [23, "紳士"], - [24, "ご婦人"], - [25, "女王様"], - [26, "職人さん"], - - [33, "女子高生"], - [34, "学生"], - [35, "剣闘士"], - [36, "鳥"], - - [44, "猫"], - [45, "犬"], - [46, "カエル"], - - [55, "蛇"], - [56, gotoNextTable], - - [66, gotoNextTable],] - - getPersonTable(table) - end - - def getPersonTable3() - gotoNextTable = lambda { "表4へ" + getPersonTable4() } - - table = [[11, "貴族"], - [12, "いるか"], - [13, "だいこん"], - [14, "じゃがいも"], - [15, "にんじん"], - [16, "ドラゴン"], - - [22, "ゾンビ"], - [23, "幽霊"], - [24, "うさぎ"], - [25, "天使"], - [26, "悪魔"], - - [33, "赤ちゃん"], - [34, "馬"], - [35, "石"], - [36, "お母さん"], - - [44, "妖精"], - [45, "守護霊"], - [46, "猫神様"], - - [55, "ロボット"], - [56, "恐ろしい人"], - - [66, gotoNextTable],] - - getPersonTable(table) - end - - def getPersonTable4() - table = [[11, "魔女エディス"], - [12, "魔女レーデルラン"], - [13, "魔女キリル"], - [14, "大魔女”ロロ”様"], - [15, "エディスのお母さん”エリー”"], - [16, "猫トンガリ"], - - [22, "猫ヒューベ"], - [23, "猫ゆうのす"], - [24, "猫集会の集団の一団"], - [25, "岩"], - [26, "PCの母"], - - [33, "PCの父"], - [34, "PCの兄"], - [35, "PCの姉"], - [36, "PCの弟"], - - [44, "PCの妹"], - [45, "PCの遠い親戚"], - [46, "PCの死んだはずの両親"], - - [55, "初恋の人"], - [56, "分かれた女(男)、不倫中の相手、または独身PCの場合、二股をかけている二人の両方"], - - [66, "宇宙人"],] - - getPersonTable(table) - end - - def getPersonTable(table) - isSwap = true - number = bcdice.getD66(isSwap) - debug("getPersonTable number", number) - - " > #{number}:" + get_table_by_number(number, table) - end -end diff --git a/src/src_bcdice/diceBot/WorldOfDarkness.rb b/src/src_bcdice/diceBot/WorldOfDarkness.rb deleted file mode 100644 index d17fb4b00..000000000 --- a/src/src_bcdice/diceBot/WorldOfDarkness.rb +++ /dev/null @@ -1,134 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class WorldOfDarkness < DiceBot - # ゲームシステムの識別子 - ID = 'WorldOfDarkness' - - # ゲームシステム名 - NAME = 'ワールド・オブ・ダークネス' - - # ゲームシステム名の読みがな - SORT_KEY = 'わあるとおふたあくねす' - - # ダイスボットの使い方 - HELP_MESSAGE = < 10 - - total_success = auto_success - total_botch = 0 - - dice, success, botch, auto_success = roll_wod(dice_pool, diff, true, enable_20th ? 2 : 1) - sequence.push dice.join(',') - total_success += success - total_botch += botch - - if enable_reroll - # 振り足し - while auto_success > 0 - dice_pool = auto_success - # 振り足しの出目1は大失敗ではない - dice, success, botch, auto_success = roll_wod(dice_pool, diff, false) - sequence.push dice.join(',') - total_success += success - total_botch += botch - end - end - - if total_success > 0 - sequence.push "成功数#{total_success}" - elsif total_botch > 0 - sequence.push "大失敗" - else - sequence.push "失敗" - end - - output = sequence.join(' > ') - secret = false - return output, secret - end - - # Revised Edition - # 出目10は1自動成功 振り足し - # 出目1は大失敗: 成功を1つ相殺 - def roll_wod(dice_pool, diff, enable_botch = true, auto_success_value = 1) - # FIXME: まとめて振る - dice = Array.new(dice_pool) do - dice_now, = roll(1, 10) - dice_now - end - - dice.sort! - - success = 0 - botch = 0 - auto_success = 0 - - dice.each do |d| - case d - when 10 - auto_success += auto_success_value - when diff..10 - success += 1 - when 1 - botch += 1 if enable_botch - end - end - - # 自動成功を成功に加算する - success += auto_success - - if enable_botch - # 成功と大失敗を相殺する - c = [ success, botch ].min - success -= c - botch -= c - end - - return dice, success, botch, auto_success - end -end diff --git a/src/src_bcdice/diceBot/YankeeYogSothoth.rb b/src/src_bcdice/diceBot/YankeeYogSothoth.rb deleted file mode 100644 index 5c0e2060b..000000000 --- a/src/src_bcdice/diceBot/YankeeYogSothoth.rb +++ /dev/null @@ -1,479 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -require "utils/table" -require "utils/d66_table" - -class YankeeYogSothoth < DiceBot - # ゲームシステムの識別子 - ID = 'YankeeYogSothoth' - - # ゲームシステム名 - NAME = 'ヤンキー&ヨグ=ソトース' - - # ゲームシステム名の読みがな - SORT_KEY = 'やんきいあんとよくそとおす' - - # ダイスボットの使い方 - HELP_MESSAGE = <= - - if dice_total <= 2 - " > ファンブル(判定失敗。ファンブル表(FT)を振ること)" - elsif dice_total >= 12 - " > スペシャル(判定成功。【テンション】が1段階上昇)" - elsif total >= target - " > 成功" - else - " > 失敗" - end - end - - def rollDiceCommand(command) - string = command.upcase - - case string - when 'RTT' # ランダム特技決定表 - return getRandomSkillTableResult(command) - when 'FTNT' # 二つ名決定表 - return get_nickname_table(command) - end - - return roll_tables(string, TABLES) - end - - # 指定特技ランダム決定表 - def getRandomSkillTableResult(_command) - name = 'ランダム' - - skillTableFull = [ - ['苦手', ['大人', '勉強', '敗北', '昆虫', '親', '異性', '孤独', '高所', '暗がり', 'ホラー', '子供']], - ['部活', ['柔道', 'プロレス', 'テコンドー', '空手', 'ボクシング', '帰宅', '剣道', '野球', '応援団', '科学', '文系']], - ['中学時代', ['悪ガキ', '統一', 'バイト', '習い事', '喧嘩', 'サボり', 'マジメくん', '遊び歩き', '真似ごと', '部活', '何もしない']], - ['趣味', ['すけべ', '車・バイク', '家事', '料理', '運動', '修行', 'ファッション', 'つるむ', '寝る', 'ゲーム', '読書']], - ['スタイル', ['テキトー', 'ばか', 'オラオラ', '熱血', '硬派', '自然体', '軟派', '自分大好き', '腹黒', 'クール', 'インテリ']], - ['好み', ['だらだら', '食事', '逆転', '家族', '支配', '褒められる', '恋愛', '友情', '勝利', '金', '静寂']], - ] - - skillTable, total_n = get_table_by_1d6(skillTableFull) - tableName, skillTable = skillTable - skill, total_n2 = get_table_by_2d6(skillTable) - - output = "#{name}指定特技表(#{total_n},#{total_n2}) > 『#{tableName}』#{skill}" - - return output - end - - # 二つ名決定表 - def get_nickname_table(_command) - result1, = roll(1, 6) - - case result1 - when 1, 2 - nicknameTableName = "二つ名表1" - when 3, 4 - nicknameTableName = "二つ名表2" - when 5 - nicknameTableName = "二つ名表3" - when 6 - nicknameTableName = "二つ名表4" - end - - nicknameTableFull = { - '二つ名表1' => %w{ - 11:愛死天流(あいしてる) - 12:喧嘩上等(けんかじょうとう) - 13:正々堂々(せいせいどうどう) - 14:天下無敵(てんかむてき) - 15:一騎当千(いっきとうせん) - 16:威風堂々(いふうどうどう) - 22:焼肉定食(やきにくていしょく) - 23:完全無欠(かんぜんむけつ) - 24:獅子奮迅(ししふんじん) - 25:臥薪嘗胆(がしんしょうたん) - 26:疾風迅雷(しっぷうじんらい) - 33:夜露死苦(よろしく) - 34:天上天下(てんじょうてんげ) - 35:唯我独尊(ゆいがどくそん) - 36:電光石火(でんこうせっか) - 44:仏恥義理(ぶっちぎり) - 45:百戦百勝(ひゃくせんひゃくしょう) - 46:百戦錬磨(ひゃくせんれんま) - 55:残酷非道(ざんこくひどう) - 56:一意専心(いちいせんしん) - 66:時給千円(じきゅうせんえん) - }, - '二つ名表2' => %w{ - 11:みんなの - 12:スルー推奨 - 13:暴れん坊 - 14:仲間思い - 15:サボり魔 - 16:熱血番長の - 22:今日がダメでも明日がある - 23:すぐカッとなる - 24:夢を応援する - 25:地元じゃ有名な - 26:喧嘩慣れている - 33:いつかビックになる - 34:いいやつの - 35:意外とまじめな - 36:イイ感じの - 44:家族想いの - 45:とにかくモテる - 46:学校を代表するワル - 55:邪神ハンター - 56:男前/イイ女 - 66:悪そうなやつはだいたい友達 - }, - '二つ名表3' => %w{ - 11:ファッションヤンキー - 12:誰もが知っている - 13:チャラい - 14:ツヨメ - 15:中学時代はすごかった - 16:イカれたやつ - 22:道徳の授業で泣いた - 23:マジか - 24:イケイケ - 25:鬼語り - 26:とりま - 33:ちょっと眠たい - 34:パネエ - 35:エモい - 36:やべーぞ! - 44:お腹が減っている - 45:むっつりスケベの - 46:いじわるな - 55:全国区に報道された - 56:毎日が楽しい - 66:おやじ狩り狩り - }, - '二つ名表4' => %w{ - 11:国産 - 12:ブレブレ - 13:ロボ - 14:大銀河 - 15:超獣 - 16:ミステリー - 22:超電磁 - 23:危険な - 24:湯上がり - 25:すごい - 26:エロ - 33:福岡 - 34:エリート - 35:どんまい - 36:がり勉 - 44:東京 - 45:スペース - 46:永遠の - 55:大阪 - 56:輝け! - 66:名古屋 - }, - } - - nicknameTable = getD66Table(nicknameTableFull[nicknameTableName]) - nickName, result2 = get_table_by_d66_swap(nicknameTable) - - return "二つ名決定表(#{result1},#{result2}) > 「#{nickName}」" - end - - def getD66Table(table) - table.map do |item| - if item.is_a?(String) && (/^(\d+):(.*)/ === item) - [Regexp.last_match(1).to_i, Regexp.last_match(2)] - else - item - end - end - end - - TABLES = { - "FT" => Table.new( - "ファンブル表", - "1D6", - %w{ - やっちまった……。テンションが1段階減少する。 - ひょうなことから嫌な状況になる。ランダムに変調(WT)を1つ受ける。 - あまりにもカッコ悪いところが伝わってしまう。自分に対して【友情度】を持つPC全員は、リスペクトにチェックを入れる。 - 自分の絶望を観測し、邪神が活性化する。バッドヤンキーの「ケツモチ邪神の加護」が1点上昇する。 - つまらないことで怪我をする。自分の【HP】が1D6点減少する。 - 逆境に燃える。テンションが1段階上昇する。 - } - ), - "WT" => Table.new( - "変調表", - "1D6", - %w{ - 毒:サイクル終了時もしくはラウンド終了時に、2D6点のダメージを受ける。 - 呪い:熱血蘇生の達成値が2点減少する。NPCが受けた場合、受けるダメージが2点上昇する。 - 火傷:テンションの効果によって、【攻撃力】が上昇しない。NPCは【攻撃力】が2点低いものとして扱う(最低0点)。 - 骨折:判定に失敗するたびに、5点のダメージを受ける。 - 出血:サイクル終了時もしくはラウンド終了時に、2点のダメージを受ける。また、施設やアイテムの効果で【HP】が上昇しない。 - 目つぶし:判定の達成値が2点減少する。 - } - ), - "KKT" => Table.new( - "関係表", - "1D6", - %w{ - 「家族/気に食わない」 - 「親友/近寄るな」 - 「悪友/こざかしい」 - 「ライバル/チンピラ」 - 「いい奴/悪い奴」 - 「利用できる/ヘタレ」 - } - ), - "DBRT" => D66Table.new( - "他愛のない会話表", - :asc, - { - 11 => "「政治の話」", - 12 => "「勉強の話」", - 13 => "「友達の話」", - 14 => "「兄弟姉妹の話」", - 15 => "「好きなものの話」", - 16 => "「嫌いなものの話」", - 22 => "「ラーメンの話」", - 23 => "「コンビニの話」", - 24 => "「学校生活の話」", - 25 => "「先輩後輩の話」", - 26 => "「趣味の話」", - 33 => "「肉の話」", - 34 => "「中学時代の話」", - 35 => "「喧嘩の話」", - 36 => "「ファッションの話」", - 44 => "「家の話」", - 45 => "「好みの異性の話」", - 46 => "「テレビ番組の話」", - 55 => "「野菜の話」", - 56 => "「部活の話」", - 66 => "「ダブりの話」", - } - ), - "TKT" => D66Table.new( - "戦う理由表", - :asc, - { - 11 => "「なんとなく」", - 12 => "「好みのエルフがいた」", - 13 => "「エルフに世話になった」", - 14 => "「ドワーフの飯がうまかった」", - 15 => "「ドワーフにファッション特徴を作ってもらった」", - 16 => "「妖精たちのいたずらがほほえましかった」", - 22 => "「バッドヤンキーと昔からの因縁があるから」", - 23 => "「バッドヤンキーが気に入らなかった」", - 24 => "「強いやつと戦いたい」", - 25 => "「異世界にワクワクしているから」", - 26 => "「バッドヤンキー集団に迷惑を受けたから」", - 33 => "「夢見るNPCが好みだったから」", - 34 => "「夢見るNPCの夢に共感したから」", - 35 => "「夢見るNPCの夢を応援したいと思ったから」", - 36 => "「夢見るNPCを放っておけないから」", - 44 => "「家に帰りたいから」", - 45 => "「夢見るNPCは友達だから」", - 46 => "「他のPCと気が合ったから」", - 55 => "「マーメイドと仲良くなった」", - 56 => "「退屈を紛らわせられそうだから」", - 66 => "「ただ暴れたかった」", - } - ), - "BUDT" => D66Table.new( - "武勇伝表", - :asc, - { - 11 => "バッドヤンキーのチームに自分が所属する学校を破壊されたが、最後まで戦った。/テンションが1段階上昇", - 12 => "バッドヤンキーチームの兵隊が襲い掛かってきたが、撃退した。/【HP】+3", - 13 => "バッドヤンキーと何度も戦い、ライバルとして認識されていた。/【打たれ強さ】+1", - 14 => "バッドヤンキー配下の集団をいくつか潰してまわっていた。/【攻撃力】+1", - 15 => "バッドヤンキーのチームに入りそうになった後輩を説得した。/【HP】+3", - 16 => "バッドヤンキーに支配されていた店を救った。/【攻撃力】+1", - 22 => "アメリカで暴れた。/テンションが1段階上昇", - 23 => "学校をサボって、日本全国を旅をしてまわった。/【HP】+3", - 24 => "好きなアーティストのライブに行き、マナーの悪いファンを黙らせた。/【打たれ強さ】+1", - 25 => "抗争中の学校に一人で乗り込んで、戦いを終わらせた。/【攻撃力】+1", - 26 => "へまをした仲間を助けるため、頭を下げた。/【HP】+3", - 33 => "大規模な運動会で活躍し、最優秀賞を獲得した。/【攻撃力】+1", - 34 => "家族や仲間に迷惑をかけたチームを潰した。/【打たれ強さ】+1", - 35 => "暴走族を一人で潰した。/【攻撃力】+1", - 36 => "本職(ヤクザ)と戦って謝らせた。/【打たれ強さ】+1", - 44 => "ドッジボール大会に出場し、優勝をして賞品を手に入れた。/「絆創膏」「テンアゲアイテム」「ポーション」「お守り」のうち1つを選んで獲得する", - 45 => "仲間たちと一緒に学校行事を盛り上げた。/【打たれ強さ】+1", - 46 => "仲間と一緒にディスカウントストアで買い物をし、キャンプをした。/「絆創膏」「テンアゲアイテム」「ポーション」「お守り」のうち1つを選んで獲得する", - 55 => "隣のプレイヤーのPCが所属する高校と大きな抗争をした。/右隣のプレイヤーのPCに対する【友情度】が1点上昇", - 56 => "修学旅行先で喧嘩し、その後友情を深めた。/【攻撃力】+1", - 66 => "隣のプレイヤーのPCと一緒に、大きな悪の組織を潰した。/右隣のプレイヤーのPCに対する【友情度】が1点上昇", - } - ), - "GUDT" => D66Table.new( - "ガイヤンキー武勇伝表", - :asc, - { - 11 => "アザトースが突然接触してきたので、殴って追い返した。/テンションが1段階上昇", - 12 => "シュブ=ニグラスのサバトに乗り込んで潰した。/【HP】+3", - 13 => "クトゥルフの落とし子を殴り倒して追い返した。/【打たれ強さ】+1", - 14 => "ヨグ=ソトースの勧誘を受けたが、断ってやった。/【攻撃力】+1", - 15 => "深きものどもが住む漁村を訪ね、罠にはめられたが脱出した。/【HP】+3", - 16 => "一晩飲み明かした相手がナイアーラトテップだった。/【攻撃力】+1", - 22 => "生きてる恐竜と出会った。/テンションが1段階上昇", - 23 => "ファンタジー世界を冒険者として旅してまわった。/【HP】+3", - 24 => "町で起こった少女たちの失踪事件を解決した。/【打たれ強さ】+1", - 25 => "バッドヤンキーに潰された騎士団を鼓舞して、立て直しに協力した。/【攻撃力】+1", - 26 => "大きな城下町に起こった殺人事件や傷害事件を幾つも解決した。/【HP】+3", - 33 => "大きな城下町で、テンションが上がっていろいろ買い込んでしまった。/「絆創膏」「テンアゲアイテム」「ポーション」「お守り」のうち1つを選んで獲得する", - 34 => "エルフの森を燃やしつくそうとする拝火暴走族をこらしめた。/【打たれ強さ】+1", - 35 => "ドワーフの洞窟に現われた巨大ワームを投げ飛ばした。/【攻撃力】+1", - 36 => "妖精たちの村に迷い込んで、村を荒らそうとするゴブリンをブッ飛ばした。/【打たれ強さ】+1", - 44 => "巨大な王国が主催している武術大会で優勝し、名誉とアイテムを手に入れた。/「絆創膏」「テンアゲアイテム」「ポーション」「お守り」のうち1つを選んで獲得する", - 45 => "ゴブリンの襲撃から町を守り切った。/【打たれ強さ】+1", - 46 => "悪いチームにさらわれた姫や王子様を助けたら、惚れられた。/【攻撃力】+1", - 55 => "次に会うヤンキーのために、この世界の土産話を作ってきた。/右隣のプレイヤーのPCに対する【友情度】が1点上昇", - 56 => "悪い魔法使いの儀式を突き止めて、潰した。/【攻撃力】+1", - 66 => "次に会うヤンキーのために、うまいものを用意した。/右隣のプレイヤーのPCに対する【友情度】が1点上昇", - } - ), - "DAIT" => Table.new( - "第一印象表", - "1D6", - %w{ - 「ヤベエ」 - 「パネエ」 - 「スゲエ」 - 「びっくり」 - 「たばい」 - 「アウトオブ眼中」 - } - ), - "TKKT" => Table.new( - "ツレ関係表", - "1D6", - %w{ - 「すごそう」 - 「勇者様」 - 「つよい」 - 「いい人」 - 「かっこいい」 - 「利用できる」 - } - ), - "GSST" => D66Table.new( - "現実世界生活表", - :asc, - { - 11 => "喧嘩に明け暮れた", - 12 => "真面目に授業を受けた", - 13 => "今回の仲間と食事をしに行った", - 14 => "チーム同士の抗争を沈めた", - 15 => "ぼーっとしていた", - 16 => "バイトに専念した", - 22 => "仲間とバーベキューをした", - 23 => "自分の体を鍛えることにした", - 24 => "仲間との毎日をより大切にした", - 25 => "家族とゆっくりすごした", - 26 => "喧嘩の技術を磨いた", - 33 => "本職(ヤクザ)と喧嘩をした", - 34 => "好きなだけ寝た", - 35 => "ツレができた", - 36 => "今回の仲間と旅に出た", - 44 => "異性と遊園地に行くことになった", - 45 => "あの戦いの日々を思い返していた", - 46 => "次の戦いに備えた", - 55 => "運動部の助っ人として、大会に出た", - 56 => "好きなだけ好物を食べた", - 66 => "汚い大人の罠にはめられたが、なんとかした", - } - ), - "GYST" => D66Table.new( - "ガイヤンキー生活表", - :asc, - { - 11 => "ツレと生活をした", - 12 => "異世界について学んだ", - 13 => "エルフの美形(平均年齢200歳)に接待を受けた", - 14 => "ドワーフから地元の酒をもらった", - 15 => "妖精の村に迷い込んでしまった", - 16 => "この世界の遺跡を回った", - 22 => "この世界に野球などのスポーツを広めた", - 23 => "広大な森の中で迷ってしまい、数か月ほどサバイバルした", - 24 => "不思議な力が溢れる泉の水を飲み干した", - 25 => "魔法使いの研究に協力したが、さっぱりだった", - 26 => "ハーピィに誘われて空の旅を満喫した", - 33 => "この世界にヤンキー文化を伝えた", - 34 => "バッドヤンキーに荒らされた小さな村を復興した", - 35 => "悪徳領主にさらわれた少女を助けた", - 36 => "わるい商人を殴り飛ばした", - 44 => "エルフの漫画家が誕生するのを見届けた", - 45 => "巨大なドラゴンと殴りあって勝利した", - 46 => "海中に住むマーメイドを脅かす悪人を退治した", - 55 => "邪神を信奉している神殿に殴り込みをして、企みを阻止した", - 56 => "天使っぽいのが悪いことをしていたので蹴り飛ばした", - 66 => "農作業をした", - } - ), - "HPST" => D66Table.new( - "病院生活表", - :asc, - { - 11 => "治療に専念した", - 12 => "見舞いでもらった漫画を読み倒した", - 13 => "ゲームをひたすらやった", - 14 => "悪化した病と闘った", - 15 => "入院している子供と約束をした", - 16 => "看護師と仲良くなった", - 22 => "現代の医術では治療できなかったので、異世界の魔法に賭けた", - 23 => "院内パーティを盛り上げた", - 24 => "飯がまずくて苦労した", - 25 => "飯がうまくて感動をした", - 26 => "やることがなくて暇だった", - 33 => "スーパードクターが現われて、自分の怪我を見事に治してくれた", - 34 => "とにかくテレビを見続けて、知識がついた", - 35 => "勉強をしてみたら、いつも以上にはかどった", - 36 => "たくさんの人たちが見舞いに来て、感動した", - 44 => "入院をしている爺さんから色々教えてもらった", - 45 => "リハビリに思ったより時間がかかった", - 46 => "次に喧嘩するときのイメージトレーニングをした", - 55 => "ヤンキー漫画に感動をした", - 56 => "院内で喧嘩をした", - 66 => "売店で売っているお菓子をコンプリートした", - } - ), - }.freeze - - setPrefixes(['RTT', 'FTNT'] + TABLES.keys) -end diff --git a/src/src_bcdice/diceBot/YearZeroEngine.rb b/src/src_bcdice/diceBot/YearZeroEngine.rb deleted file mode 100644 index fae979420..000000000 --- a/src/src_bcdice/diceBot/YearZeroEngine.rb +++ /dev/null @@ -1,139 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class YearZeroEngine < DiceBot - # ゲームシステムの識別子 - ID = 'YearZeroEngine' - - # ゲームシステム名 - NAME = 'YearZeroEngine' - - # ゲームシステム名の読みがな - SORT_KEY = 'いやあせろえんしん' - - # ダイスボットの使い方 - HELP_MESSAGE = < 0 - if @total_success_dice >= @difficulty - result_text = "#{result_text} 難易度=#{@difficulty}:判定成功!" - else - result_text = "#{result_text} 難易度=#{@difficulty}:判定失敗!" - end - end - return result_text - end - - def make_result_with_myz(dice_count_text, dice_text) - result_text = make_result_with_yze(dice_count_text, dice_text) - - return "#{result_text}\n出目1:[能力:#{@base_botch_dice},技能:#{@skill_botch_dice},アイテム:#{@gear_botch_dice}) プッシュ可能=#{@push_dice}ダイス" - end - - def make_dice_roll(dice_pool) - botch_dice = 0 - success_dice = 0 - - _, dice_text, = roll(dice_pool, 6) - - dice_text.split(',').each do |take_dice| - if take_dice == "6" - success_dice += 1 - elsif take_dice == "1" - botch_dice += 1 - end - end - return "[#{dice_text}]", success_dice, botch_dice - end -end diff --git a/src/src_bcdice/diceBot/ZettaiReido.rb b/src/src_bcdice/diceBot/ZettaiReido.rb deleted file mode 100644 index 532b27ebe..000000000 --- a/src/src_bcdice/diceBot/ZettaiReido.rb +++ /dev/null @@ -1,139 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class ZettaiReido < DiceBot - # ゲームシステムの識別子 - ID = 'ZettaiReido' - - # ゲームシステム名 - NAME = '絶対隷奴' - - # ゲームシステム名の読みがな - SORT_KEY = 'せつたいれいと' - - # ダイスボットの使い方 - HELP_MESSAGE = <=x -m(基本能力),n(修正値),x(目標値) -DPの取得の有無も表示されます。 -INFO_MESSAGE_TEXT - - setPrefixes(['\d+\-2DR.*']) - - def rollDiceCommand(command) - return nil unless /^(\d+)-2DR([\+\-\d]*)(>=(\d+))?$/i === command - - baseAvility = Regexp.last_match(1).to_i - modText = Regexp.last_match(2) - diffValue = Regexp.last_match(4) - - return roll2DR(baseAvility, modText, diffValue) - end - - def roll2DR(baseAvility, modText, diffValue) - diceTotal, diceText, darkPoint = roll2DarkDice() - - mod, modText = getModInfo(modText) - diff, diffText = getDiffInfo(diffValue) - - output = "" - output += "(#{baseAvility}-2DR#{modText}#{diffText})" - output += " > #{baseAvility}-#{diceTotal}[#{diceText}]#{modText}" - - total = baseAvility - diceTotal + mod - output += " > #{total}" - - successText = getSuccessText(diceTotal, total, diff) - output += successText - - darkPointText = getDarkPointResult(total, diff, darkPoint) - output += darkPointText - - return output - end - - def roll2DarkDice() - _, dice_str = roll(2, 6) - dice1, dice2 = dice_str.split(',').collect { |i| i.to_i } - - darkDice1, darkPoint1 = changeDiceToDarkDice(dice1) - darkDice2, darkPoint2 = changeDiceToDarkDice(dice2) - - darkPoint = darkPoint1 + darkPoint2 - if darkPoint == 2 - darkPoint = 4 - end - - darkTotal = darkDice1 + darkDice2 - darkDiceText = "#{darkDice1},#{darkDice2}" - - return darkTotal, darkDiceText, darkPoint - end - - def changeDiceToDarkDice(dice) - darkPoint = 0 - darkDice = dice - if dice == 6 - darkDice = 0 - darkPoint = 1 - end - - return darkDice, darkPoint - end - - def getModInfo(modText) - value = parren_killer("(0#{modText})").to_i - - text = "" - if value < 0 - text = value.to_s - elsif value > 0 - text = "+" + value.to_s - end - - return value, text - end - - def getDiffInfo(diffValue) - diffText = "" - - unless diffValue.nil? - diffValue = diffValue.to_i - diffText = ">=#{diffValue.to_i}" - end - - return diffValue, diffText - end - - def getDarkPointResult(_total, _diff, darkPoint) - text = '' - - if darkPoint > 0 - text = " > #{darkPoint}DP" - end - - return text - end - - def getSuccessText(diceTotal, total, diff) - if diceTotal == 0 - return " > クリティカル" - end - - if diceTotal == 10 - return " > ファンブル" - end - - if diff.nil? - diff = 0 - end - - successLevel = (total - diff) - if successLevel >= 0 - return " > #{successLevel} 成功" - end - - return ' > 失敗' - end -end diff --git a/src/src_bcdice/diceBot/_Template.rb b/src/src_bcdice/diceBot/_Template.rb deleted file mode 100644 index 1b79fee0c..000000000 --- a/src/src_bcdice/diceBot/_Template.rb +++ /dev/null @@ -1,84 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -class Template < DiceBot - # ゲームシステムの識別子 - ID = 'SystemID' - - # ゲームシステム名 - NAME = 'ゲームシステム名' - - # ゲームシステム名の読みがな - # - # 「ゲームシステム名の読みがなの設定方法」(docs/dicebot_sort_key.md)を参考にして - # 設定してください - SORT_KEY = 'けえむしすてむめい' - - # ダイスボットの使い方 - HELP_MESSAGE = < file.match(/\.js$/)); -const files = fs.readdirSync(DataDir).filter(file => file.match(/\.txt$/)); - -require('./lib/cgiDiceBot.js'); - -const errorLog = []; - -Opal.gvars.isDebug = false; -const cgiDiceBot = Opal.CgiDiceBot.$new(); - -files.forEach(file => { - const gameType = file.replace(/\.txt$/, ''); - const existJs = diceBots.includes(gameType + '.js'); - if (!existJs && gameType != 'None') return; - - process.stdout.write(`\n${gameType} `); - - if (existJs) require(DiceBotDir + gameType); - fs.readFileSync(path.join(DataDir, file)).toString() - .replace(/\r/g, '') - .split(/=+\n/g) - .filter(a => a) - .forEach((test, index) => { - const testData = test.match(/input:((.|\n)*)?output:((.|\n)*)rand:((.|\n)*)/); - - const input = testData[1].trim(); - const output = testData[3].trim(); - const rands = testData[5].trim(); - const dir = []; - - let resultMsg = ''; - - try { - cgiDiceBot.$setRandomValues(rands.split(/,/g).map(a => a.split(/\//g))); - cgiDiceBot.$setTest(true); - - const result = cgiDiceBot.$roll(input, gameType, dir); - resultMsg = result[0].trim(); - - const surplusRands = getSurplusRands(cgiDiceBot.rands); - if (0 < surplusRands.length) resultMsg += 'ダイス残り:' + surplusRands; - - } catch (e) { - resultMsg = logTextForException(e); - } - - if (resultMsg == output) { - process.stdout.write('.'); - } else { - process.stdout.write('x'); - const log = logTextForUnexpected(gameType, index, input, output, resultMsg, rands); - errorLog.push(log); - } - }); -}); - -process.stdout.write('\n'); -if (errorLog.length < 1) console.log('OK.'); -errorLog.forEach(log => console.log(log)); - -function logTextForUnexpected(gameType, index, input, output, result, rands) { - return `Game type: ${gameType} Index: ${index} -Input: ${input} -Expected: ${output} -Result: ${result} -Rands: ${rands}`; -} - -function logTextForException(e) { - return ` ----JS--- -${e.message} -${e.fileName} (${e.lineNumber}) -${e.stack} ----Opal--- -$@ -> ${Opal.gvars['@']} -$! -> ${Opal.gvars['!']}`; -} - -function getSurplusRands(rands) { - return rands.map(r => r.join('/')).join(', '); -} diff --git a/src/src_bcdice/test.rb b/src/src_bcdice/test.rb deleted file mode 100644 index 9924c28a0..000000000 --- a/src/src_bcdice/test.rb +++ /dev/null @@ -1,60 +0,0 @@ -# -*- coding: utf-8 -*- - -# ダイスボットのテストを起動するプログラム -# -# 引数の数によって処理が変わる -# -# [0個] すべてのテストデータを使用してテストを行う -# [1個] 指定したテストデータを使用してテストを行う。 -# 「.txt」で終わっていればテストデータのパスと見なす。 -# [2個] 最初の引数でテストデータを指定し、2番目の引数で番号を指定する - -if RUBY_VERSION < '1.9' - $KCODE = 'u' -end - -rootDir = File.expand_path(File.dirname(__FILE__)) -libPaths = [ - "#{rootDir}/test", - rootDir, -] -libPaths.each do |libPath| - $:.push(libPath) -end - -require 'test/setup' -require 'DiceBotTest' - -# 引数を解析してテストデータファイルのパスを返す -getTestDataPath = lambda do |arg| - arg.end_with?('.txt') ? arg : "#{rootDir}/test/data/#{arg}.txt" -end - -# テストデータファイルのパス -testDataPath = nil -# テストデータ番号 -dataIndex = nil - -HELP_MESSAGE = "Usage: #{File.basename($0)} [TEST_DATA_PATH] [DATA_INDEX]".freeze - -if ARGV.include?('-h') || ARGV.include?('--help') - $stdout.puts(HELP_MESSAGE) - exit -end - -case ARGV.length -when 0 -when 1 - # テストデータを指定する - testDataPath = getTestDataPath[ARGV[0]] -when 2 - # テストデータおよびテストデータ番号を指定する - testDataPath = getTestDataPath[ARGV[0]] - dataIndex = ARGV[1].to_i -else - warn(HELP_MESSAGE) - abort -end - -success = DiceBotTest.new(testDataPath, dataIndex).execute -abort unless success diff --git a/src/src_bcdice/test/.gitignore b/src/src_bcdice/test/.gitignore deleted file mode 100644 index 331d78e8b..000000000 --- a/src/src_bcdice/test/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ - -*.txt~ \ No newline at end of file diff --git a/src/src_bcdice/test/DiceBotTest.rb b/src/src_bcdice/test/DiceBotTest.rb deleted file mode 100644 index 6eb2d19cf..000000000 --- a/src/src_bcdice/test/DiceBotTest.rb +++ /dev/null @@ -1,205 +0,0 @@ -# -*- coding: utf-8 -*- - -require 'bcdiceCore' -require 'diceBot/DiceBotLoader' -require 'cgiDiceBot' -require 'DiceBotTestData' - -class DiceBotTest - def initialize(testDataPath = nil, dataIndex = nil) - testBaseDir = File.expand_path(File.dirname(__FILE__)) - - @testDataPath = testDataPath - @dataIndex = dataIndex - - @dataDir = "#{testBaseDir}/data" - @tableDir = "#{testBaseDir}/../../extratables" - - @bot = CgiDiceBot.new - - @testDataSet = [] - @errorLog = [] - - $isDebug = !@dataIndex.nil? - end - - # テストを実行する - # @return [true] テストを実行できたとき - # @return [false] テストに失敗した、あるいは実行できなかったとき - def execute - readTestDataSet - - if @testDataSet.empty? - warn('No matched test data!') - return false - end - - doTests - - if @errorLog.empty? - # テスト成功 - puts('OK.') - - true - else - errorLog = $RUBY18_WIN ? @errorLog.map(&:tosjis) : @errorLog - - puts('[Failures]') - puts(errorLog.join("\n===========================\n")) - - false - end - end - - # テストデータを読み込む - def readTestDataSet - if @testDataPath - # 指定されたファイルが存在しない場合、中断する - return unless File.exist?(@testDataPath) - - targetFiles = [@testDataPath] - else - # すべてのテストデータを読み込む - targetFiles = Dir.glob("#{@dataDir}/*.txt") - end - - targetFiles.each do |filename| - next if /^_/ === File.basename(filename) - - source = - if RUBY_VERSION < '1.9' - File.read(filename) - else - File.read(filename, :encoding => 'UTF-8') - end - - dataSetSources = source. - gsub("\r\n", "\n"). - tr("\r", "\n"). - split("============================\n"). - map(&:chomp) - - # ゲームシステムをファイル名から判断する - gameType = File.basename(filename, '.txt') - - dataSet = - if RUBY_VERSION < '1.9' - dataSetSources.each_with_index.map do |dataSetSource, i| - DiceBotTestData.parse(dataSetSource, gameType, i + 1) - end - else - dataSetSources.map.with_index(1) do |dataSetSource, i| - DiceBotTestData.parse(dataSetSource, gameType, i) - end - end - - @testDataSet += - if @dataIndex.nil? - dataSet - else - dataSet.select { |data| data.index == @dataIndex } - end - end - end - - private :readTestDataSet - - # 各テストを実行する - def doTests - @testDataSet.each do |testData| - begin - result = executeCommand(testData).lstrip - - unless result == testData.output - @errorLog << logTextForUnexpected(result, testData) - print('X') - - # テスト失敗、次へ - next - end - rescue StandardError => e - @errorLog << logTextForException(e, testData) - print('E') - - # テスト失敗、次へ - next - end - - # テスト成功 - print('.') - end - - puts - end - - # ダイスコマンドを実行する - def executeCommand(testData) - rands = testData.rands - @bot.setRandomValues(rands) - @bot.setTest - - result = '' - testData.input.each do |message| - result += @bot.roll(message, testData.gameType, @tableDir).first - end - - unless rands.empty? - result += "\nダイス残り:" - result += rands.map { |r| r.join('/') }.join(', ') - end - - result - end - - # 期待された出力と異なる場合のログ文字列を返す - def logTextForUnexpected(result, data) - logText = <) - def test_parse_target_value_not_eq - test_parse('2D6<>7', '(Command (!= (DiceRoll 2 6) 7))') - end - - # 目標値あり(>=) - def test_parse_target_value_geq_1 - test_parse('2D6>=7', '(Command (>= (DiceRoll 2 6) 7))') - end - - # 目標値あり(=>) - def test_parse_target_value_geq_2 - test_parse('2D6=>7', '(Command (>= (DiceRoll 2 6) 7))') - end - - # 目標値あり、目標値の定数畳み込み - def test_parse_target_value_constant_fonding - test_parse( - '1D6+1-2>=1+2', - '(Command (>= (- (+ (DiceRoll 1 6) 1) 2) 3))' - ) - end - - # 大きな出目から複数個取る - def test_parse_keep_high - test_parse( - '5D10KH3', - '(Command (DiceRollWithFilter 5 10 :KH 3))' - ) - end - - # 小さな出目から複数個取る - def test_parse_keep_low - test_parse( - '5D10KL3', - '(Command (DiceRollWithFilter 5 10 :KL 3))' - ) - end - - # 大きな出目から複数個除く - def test_parse_drop_high - test_parse( - '5D10DH3', - '(Command (DiceRollWithFilter 5 10 :DH 3))' - ) - end - - # 小さな出目から複数個除く - def test_parse_drop_low - test_parse( - '5D10DL3', - '(Command (DiceRollWithFilter 5 10 :DL 3))' - ) - end - - # 大きな値キープ機能、修正値付き - def test_parse_keep_high_with_modifier - test_parse( - '5D10KH3+1', - '(Command (+ (DiceRollWithFilter 5 10 :KH 3) 1))' - ) - end - - # 小さな値キープ機能、修正値付き - def test_parse_keep_low_with_modifier - test_parse( - '5D10KL3+1', - '(Command (+ (DiceRollWithFilter 5 10 :KL 3) 1))' - ) - end - - # 大きな値ドロップ機能、修正値付き - def test_parse_drop_high_with_modifier - test_parse( - '5D10DH3+1', - '(Command (+ (DiceRollWithFilter 5 10 :DH 3) 1))' - ) - end - - # 小さな値ドロップ機能、修正値付き - def test_parse_drop_low_with_modifier - test_parse( - '5D10DL3+1', - '(Command (+ (DiceRollWithFilter 5 10 :DL 3) 1))' - ) - end - - private - - # 構文解析をテストする - # @param [String] command テストするコマンド - # @param [String] expected_s_exp 期待されるS式 - # @return [void] - def test_parse(command, expected_s_exp) - parser = AddDice::Parser.new(command) - node = parser.parse - - assert(!parser.error?, '構文解析に成功する') - assert_equal(expected_s_exp, node.s_exp, '結果の抽象構文木が正しい') - end -end diff --git a/src/src_bcdice/test/data/AFF2e.txt b/src/src_bcdice/test/data/AFF2e.txt deleted file mode 100644 index 4671edab9..000000000 --- a/src/src_bcdice/test/data/AFF2e.txt +++ /dev/null @@ -1,113 +0,0 @@ -input: -FF8 ▼ -output: -AFF2e : (2D6<=8) > 5[4,1] > 成功 -rand:4/6,1/6 -============================ -input: -FF8 ▼ -output: -AFF2e : (2D6<=8) > 10[4,6] > 失敗 -rand:4/6,6/6 -============================ -input: -FF10-2 ▼ -output: -AFF2e : (2D6<=8) > 5[4,1] > 成功 -rand:4/6,1/6 -============================ -input: -FF10-2 ▼ -output: -AFF2e : (2D6<=8) > 10[4,6] > 失敗 -rand:4/6,6/6 -============================ -input: -FF10-2 -output: -AFF2e : (2D6<=8) > 2[1,1] > 大成功! -rand:1/6,1/6 -============================ -input: -FF10-2 -output: -AFF2e : (2D6<=8) > 12[6,6] > 大失敗! -rand:6/6,6/6 -============================ -input: -FF1 -output: -AFF2e : (2D6<=1) > 2[1,1] > 成功(大成功ではない) -rand:1/6,1/6 -============================ -input: -FF12 -output: -AFF2e : (2D6<=12) > 12[6,6] > 失敗(大失敗ではない) -rand:6/6,6/6 -============================ -input: -FR8 ▼ -output: -AFF2e : (2D6+8) > 5[4,1]+8 > 13 -rand:4/6,1/6 -============================ -input: -FR10-2 ▼ -output: -AFF2e : (2D6+8) > 5[4,1]+8 > 13 -rand:4/6,1/6 -============================ -input: -FR8 ▼ -output: -AFF2e : (2D6+8) > 12[6,6]+8 > 強打! > 20 -rand:6/6,6/6 -============================ -input: -FR8 ▼ -output: -AFF2e : (2D6+8) > 2[1,1]+8 > ファンブル! > 10 -rand:1/6,1/6 -============================ -input: -FD8 ▼ -output: -AFF2e : ダメージスロットは必須です。 -rand: -============================ -input: -FD[0] ▼ -output: -AFF2e : ダメージスロットの長さに誤りがあります。 -rand: -============================ -input: -FD[0,0,0,0,1,1,2] ▼ -output: -AFF2e : (1D6+0) > 6+0 > 6 > 1ダメージ -rand:6/6 -============================ -input: -FD[0,0,0,0,1,1,2]+0 ▼ -output: -AFF2e : (1D6+0) > 6+0 > 6 > 1ダメージ -rand:6/6 -============================ -input: -FD[0,0,0,0,1,1,2]+2 ▼ -output: -AFF2e : (1D6+2) > 6+2 > 8 > 2ダメージ -rand:6/6 -============================ -input: -FD[0,0,0,0,1+1,1+1,2+2]+0 ▼ -output: -AFF2e : (1D6+0) > 6+0 > 6 > 2ダメージ -rand:6/6 -============================ -input: -FD[0,0,0,0,1+1,1+1,2+2]+2 ▼ -output: -AFF2e : (1D6+2) > 6+2 > 8 > 4ダメージ -rand:6/6 diff --git a/src/src_bcdice/test/data/AceKillerGene.txt b/src/src_bcdice/test/data/AceKillerGene.txt deleted file mode 100644 index 58afa86b4..000000000 --- a/src/src_bcdice/test/data/AceKillerGene.txt +++ /dev/null @@ -1,216 +0,0 @@ -input: -AK50 -output: -AceKillerGene : D100<=50@10 > 50 > 成功 -rand:50/100 -============================ -input: -AK50 -output: -AceKillerGene : D100<=50@10 > 51 > 失敗 -rand:51/100 -============================ -input: -AK50 -output: -AceKillerGene : D100<=50@10 > 95 > 失敗 -rand:95/100 -============================ -input: -AK50 -output: -AceKillerGene : D100<=50@10 > 96 > ファンブル -rand:96/100 -============================ -input: -AK96 -output: -AceKillerGene : D100<=96@19 > 96 > ファンブル -rand:96/100 -============================ -input: -AK99 -output: -AceKillerGene : D100<=99@19 > 96 > ファンブル -rand:96/100 -============================ -input: -AK100 -output: -AceKillerGene : D100<=100@20 > 96 > 成功 -rand:96/100 -============================ -input: -AK100 -output: -AceKillerGene : D100<=100@20 > 98 > 成功 -rand:98/100 -============================ -input: -AK100 -output: -AceKillerGene : D100<=100@20 > 99 > ファンブル -rand:99/100 -============================ -input: -AK50 -output: -AceKillerGene : D100<=50@10 > 11 > 成功 -rand:11/100 -============================ -input: -AK50 -output: -AceKillerGene : D100<=50@10 > 10 > クリティカル -rand:10/100 -============================ -input: -AK500 -output: -AceKillerGene : D100<=500@100 > 100 > クリティカル -rand:100/100 -============================ -input: -AK0 -output: -AceKillerGene : D100<=0@1 > 2 > 失敗 -rand:2/100 -============================ -input: -AK0 -output: -AceKillerGene : D100<=0@1 > 1 > クリティカル -rand:1/100 -============================ -input: -AK50 -output: -AceKillerGene : D100<=50@10 > 11 > 成功 -rand:11/100 -============================ -input: -AK50@11 -output: -AceKillerGene : D100<=50@11 > 11 > クリティカル -rand:11/100 -============================ -input: -AK50@11 -output: -AceKillerGene : D100<=50@11 > 12 > 成功 -rand:12/100 -============================ -input: -AK100/2 -output: -AceKillerGene : D100<=50@20 > 50 > 成功 -rand:50/100 -============================ -input: -AK100/2 -output: -AceKillerGene : D100<=50@20 > 51 > 失敗 -rand:51/100 -============================ -input: -AK100/2 -output: -AceKillerGene : D100<=50@20 > 96 > ファンブル -rand:96/100 -============================ -input: -AK100/2 -output: -AceKillerGene : D100<=50@20 > 21 > 成功 -rand:21/100 -============================ -input: -AK100/2 -output: -AceKillerGene : D100<=50@20 > 20 > クリティカル -rand:20/100 -============================ -input: -AK150/2 -output: -AceKillerGene : D100<=75@30 > 51 > 成功 -rand:51/100 -============================ -input: -AK150/2 -output: -AceKillerGene : D100<=75@30 > 30 > クリティカル -rand:30/100 -============================ -input: -AK150/3 -output: -AceKillerGene : D100<=50@30 > 51 > 失敗 -rand:51/100 -============================ -input: -dcSL1 -output: -AceKillerGene : 負傷表:切断[1] > 軽傷1 | 切り傷 … 皮膚が切り裂かれる。 -rand: -============================ -input: -dcSL2 -output: -AceKillerGene : 負傷表:切断[2] > 軽傷1 | 切り傷 … 皮膚が切り裂かれる。 -rand: -============================ -input: -dcSL5 -output: -AceKillerGene : 負傷表:切断[5] > 軽傷1 | 切り傷 … 皮膚が切り裂かれる。 -rand: -============================ -input: -dcSL6 -output: -AceKillerGene : 負傷表:切断[6] > 軽傷2/マヒ | 脚部負傷 … 足が切り裂かれ、思わずひざまずく。 -rand: -============================ -input: -dcBL1 -output: -AceKillerGene : 負傷表:銃弾[1] > 軽傷2 | 腕部損傷 … 銃弾が腕をかすめた。 -rand: -============================ -input: -dcIM1 -output: -AceKillerGene : 負傷表:衝撃[1] > 軽傷1 | 打撲 … 攻撃を受けた箇所がどす黒く腫れ上がる。 -rand: -============================ -input: -dcBR1 -output: -AceKillerGene : 負傷表:灼熱[1] > 軽傷1 | 火傷 … 皮膚に小さな火傷を負う。 -rand: -============================ -input: -dcRF1 -output: -AceKillerGene : 負傷表:冷却[1] > 軽傷1 | 冷気 … 軽い凍傷を受ける。 -rand: -============================ -input: -dcEL1 -output: -AceKillerGene : 負傷表:電撃[1] > 疲労3 | 静電気 … 全身の毛が逆立つ。 -rand: -============================ -input: -AK(20-20) -output: -AceKillerGene : D100<=0@1 > 1 > クリティカル -rand:1/100 -============================ -input: -AK(20-50) -output: -AceKillerGene : D100<=0@1 > 1 > クリティカル -rand:1/100 -============================ diff --git a/src/src_bcdice/test/data/Airgetlamh.txt b/src/src_bcdice/test/data/Airgetlamh.txt deleted file mode 100644 index 3c48a2d20..000000000 --- a/src/src_bcdice/test/data/Airgetlamh.txt +++ /dev/null @@ -1,174 +0,0 @@ -input: -AL -output: -Airgetlamh : (2D10<=6) > 0[10,10] > 成功数:0 -rand:10/10,10/10 -============================ -input: -AL -output: -Airgetlamh : (2D10<=6) > 2[1,1] > 成功数:2 -rand:1/10,1/10 -============================ -input: -3AL7*5 -output: -Airgetlamh : (3D10<=7) > 0[10,10,10] > Hits:0*5 > 0ダメージ -rand:10/10,10/10,10/10 -============================ -input: -3AL7*5 -output: -Airgetlamh : (3D10<=7) > 3[1,1,1] > Hits:3*5 > 15ダメージ -rand:1/10,1/10,1/10 -============================ -input: -3AL7*5 -output: -Airgetlamh : (3D10<=7) > 2[4,6,9] > Hits:2*5 > 10ダメージ -rand:4/10,6/10,9/10 -============================ -input: -3AL7*5 -output: -Airgetlamh : (3D10<=7) > 2[1,3,10] > Hits:2*5 > 10ダメージ -rand:10/10,1/10,3/10 -============================ -input: -10AL10x10 -output: -Airgetlamh : (10D10<=10) > 10[1,3,3,3,3,3,3,3,10,10] > Hits:10*10 > 100ダメージ -rand:10/10,1/10,10/10,3/10,3/10,3/10,3/10,3/10,3/10,3/10 -============================ -input: -AA -output: -Airgetlamh : (2D10<=6) > 0[10,10] > 成功数:0 -rand:10/10,10/10 -============================ -input: -AA -output: -Airgetlamh : (2D10<=6) > 2[1,1]+1[6,10] > 成功数:3 / 2クリティカル -rand:1/10,1/10,6/10,10/10 -============================ -input: -6AA3 -output: -Airgetlamh : (6D10<=3) > 0[10,10,10,10,10,10] > 成功数:0 -rand:10/10,10/10,10/10,10/10,10/10,10/10 -============================ -input: -6AA3 -output: -Airgetlamh : (6D10<=3) > 2[2,3,4,5,6,6] > 成功数:2 -rand:2/10,3/10,4/10,5/10,6/10,6/10 -============================ -input: -6AA3 -output: -Airgetlamh : (6D10<=3) > 3[1,2,3,4,5,6]+0[6] > 成功数:3 / 1クリティカル -rand:1/10,2/10,3/10,4/10,5/10,6/10,6/10 -============================ -input: -6AA3 -output: -Airgetlamh : (6D10<=3) > 3[1,1,3,4,5,6]+1[3,6] > 成功数:4 / 2クリティカル -rand:1/10,1/10,3/10,4/10,5/10,6/10,3/10,6/10 -============================ -input: -6AA3 -output: -Airgetlamh : (6D10<=3) > 3[1,1,3,4,5,6]+1[1,6]+1[3] > 成功数:5 / 3クリティカル -rand:1/10,1/10,3/10,4/10,5/10,6/10,1/10,6/10,3/10 -============================ -input: -6AA4C0 -output: -Airgetlamh : (6D10<=4) > 4[1,2,3,4,5,6] > 成功数:4 -rand:1/10,2/10,3/10,4/10,5/10,6/10 -============================ -input: -6AA4c2 -output: -Airgetlamh : (6D10<=4) > 4[1,2,3,4,5,6]+1[3,6] > 成功数:5 / 2クリティカル -rand:1/10,2/10,3/10,4/10,5/10,6/10,3/10,6/10 -============================ -input: -4AA3*5 -output: -Airgetlamh : (4D10<=3) > 0[6,6,6,6] > Hits:0*5 > 0ダメージ -rand:6/10,6/10,6/10,6/10 -============================ -input: -4AA3x5 -output: -Airgetlamh : (4D10<=3) > 0[6,6,6,6] > Hits:0*5 > 0ダメージ -rand:6/10,6/10,6/10,6/10 -============================ -input: -4AA3X5 -output: -Airgetlamh : (4D10<=3) > 0[6,6,6,6] > Hits:0*5 > 0ダメージ -rand:6/10,6/10,6/10,6/10 -============================ -input: -4aa3*5 -output: -Airgetlamh : (4D10<=3) > 2[2,3,4,5] > Hits:2*5 > 10ダメージ -rand:2/10,3/10,4/10,5/10 -============================ -input: -4Aa3*5 -output: -Airgetlamh : (4D10<=3) > 2[1,1,6,6]+1[3,6] > Hits:3*5 > 15ダメージ / 2クリティカル -rand:1/10,1/10,6/10,6/10,3/10,6/10 -============================ -input: -5aA4*10 -output: -Airgetlamh : (5D10<=4) > 0[6,6,6,6,6] > Hits:0*10 > 0ダメージ -rand:6/10,6/10,6/10,6/10,6/10 -============================ -input: -5AA4x10 -output: -Airgetlamh : (5D10<=4) > 3[2,3,4,5,6] > Hits:3*10 > 30ダメージ -rand:2/10,3/10,4/10,5/10,6/10 -============================ -input: -5AA4X10 -output: -Airgetlamh : (5D10<=4) > 4[1,2,3,4,5]+0[6] > Hits:4*10 > 40ダメージ / 1クリティカル -rand:1/10,2/10,3/10,4/10,5/10,6/10 -============================ -input: -5AA4*10 -output: -Airgetlamh : (5D10<=4) > 3[1,1,1,6,6]+2[1,1,6]+1[4,6] > Hits:6*10 > 60ダメージ / 5クリティカル -rand:1/10,1/10,1/10,6/10,6/10,1/10,1/10,6/10,4/10,6/10 -============================ -input: -5aa3*5+10 -output: -Airgetlamh : (5D10<=3) > 0[6,6,6,6,6] > Hits:0*5 + Trigger:0*10 > 0ダメージ -rand:6/10,6/10,6/10,6/10,6/10 -============================ -input: -5aa3*5+10 -output: -Airgetlamh : (5D10<=3) > 2[2,3,4,5,6] > Hits:2*5 + Trigger:0*10 > 10ダメージ -rand:2/10,3/10,4/10,5/10,6/10 -============================ -input: -5aa3*5+10 -output: -Airgetlamh : (5D10<=3) > 3[1,2,3,4,5]+1[3] > Hits:4*5 + Trigger:1*10 > 30ダメージ / 1クリティカル -rand:1/10,2/10,3/10,4/10,5/10,3/10 -============================ -input: -5aa3*5+10c0 -output: -Airgetlamh : (5D10<=3) > 3[1,2,3,4,5] > Hits:3*5 + Trigger:0*10 > 15ダメージ -rand:1/10,2/10,3/10,4/10,5/10 -============================ diff --git a/src/src_bcdice/test/data/Alsetto.txt b/src/src_bcdice/test/data/Alsetto.txt deleted file mode 100644 index ad12e0eed..000000000 --- a/src/src_bcdice/test/data/Alsetto.txt +++ /dev/null @@ -1,150 +0,0 @@ -input: -6AL -output: -Alsetto : (6D6<=3) > 0[6,6,6,6,6,6] > 成功数:0 / 0トライアンフ -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -6AL -output: -Alsetto : (6D6<=3) > 2[2,3,4,5,6,6] > 成功数:2 / 0トライアンフ -rand:2/6,3/6,4/6,5/6,6/6,6/6 -============================ -input: -6AL -output: -Alsetto : (6D6<=3) > 3[1,2,3,4,5,6]+0[6] > 成功数:3 / 1トライアンフ -rand:1/6,2/6,3/6,4/6,5/6,6/6,6/6 -============================ -input: -6AL -output: -Alsetto : (6D6<=3) > 3[1,1,3,4,5,6]+1[3,6] > 成功数:4 / 1トライアンフ -rand:1/6,1/6,3/6,4/6,5/6,6/6,3/6,6/6 -============================ -input: -6AL -output: -Alsetto : (6D6<=3) > 3[1,1,3,4,5,6]+1[1,6]+1[3] > 成功数:5 / 2トライアンフ -rand:1/6,1/6,3/6,4/6,5/6,6/6,1/6,6/6,3/6 -============================ -input: -6AL4 -output: -Alsetto : (6D6<=4) > 0[6,6,6,6,6,6] > 成功数:0 / 0トライアンフ -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -6AL4 -output: -Alsetto : (6D6<=4) > 3[2,3,4,5,6,6] > 成功数:3 / 0トライアンフ -rand:2/6,3/6,4/6,5/6,6/6,6/6 -============================ -input: -6AL4 -output: -Alsetto : (6D6<=4) > 4[1,2,3,4,5,6]+0[6] > 成功数:4 / 1トライアンフ -rand:1/6,2/6,3/6,4/6,5/6,6/6,6/6 -============================ -input: -6AL4 -output: -Alsetto : (6D6<=4) > 4[1,1,3,4,5,6]+1[4,6] > 成功数:5 / 1トライアンフ -rand:1/6,1/6,3/6,4/6,5/6,6/6,4/6,6/6 -============================ -input: -4AL*5 -output: -Alsetto : (4D6<=3) > 0[6,6,6,6] > Hits:0*5 > 0ダメージ / 0トライアンフ -rand:6/6,6/6,6/6,6/6 -============================ -input: -4ALx5 -output: -Alsetto : (4D6<=3) > 0[6,6,6,6] > Hits:0*5 > 0ダメージ / 0トライアンフ -rand:6/6,6/6,6/6,6/6 -============================ -input: -4ALX5 -output: -Alsetto : (4D6<=3) > 0[6,6,6,6] > Hits:0*5 > 0ダメージ / 0トライアンフ -rand:6/6,6/6,6/6,6/6 -============================ -input: -4AL*5 -output: -Alsetto : (4D6<=3) > 2[2,3,4,5] > Hits:2*5 > 10ダメージ / 0トライアンフ -rand:2/6,3/6,4/6,5/6 -============================ -input: -4AL*5 -output: -Alsetto : (4D6<=3) > 2[1,1,6,6]+1[3,6] > Hits:3*5 > 15ダメージ / 1トライアンフ -rand:1/6,1/6,6/6,6/6,3/6,6/6 -============================ -input: -5AL4*10 -output: -Alsetto : (5D6<=4) > 0[6,6,6,6,6] > Hits:0*10 > 0ダメージ / 0トライアンフ -rand:6/6,6/6,6/6,6/6,6/6 -============================ -input: -5AL4x10 -output: -Alsetto : (5D6<=4) > 3[2,3,4,5,6] > Hits:3*10 > 30ダメージ / 0トライアンフ -rand:2/6,3/6,4/6,5/6,6/6 -============================ -input: -5AL4X10 -output: -Alsetto : (5D6<=4) > 4[1,2,3,4,5]+0[6] > Hits:4*10 > 40ダメージ / 1トライアンフ -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -5AL4*10 -output: -Alsetto : (5D6<=4) > 3[1,1,1,6,6]+2[1,1,6]+1[4,6] > Hits:6*10 > 60ダメージ / 2トライアンフ -rand:1/6,1/6,1/6,6/6,6/6,1/6,1/6,6/6,4/6,6/6 -============================ -input: -6ALC -output: -Alsetto : (6D6<=3) > 3[1,2,3,4,5,6] > 成功数:3 -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -6ALC4 -output: -Alsetto : (6D6<=4) > 4[1,2,3,4,5,6] > 成功数:4 -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -6ALC*5 -output: -Alsetto : (6D6<=3) > 3[1,2,3,4,5,6] > Hits:3*5 > 15ダメージ -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -6ALC4X5 -output: -Alsetto : (6D6<=4) > 4[1,2,3,4,5,6] > Hits:4*5 > 20ダメージ -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -6ALG*5 -output: -Alsetto : (6D6<=3) > 0[6,6,6,6,6,6] > Hits:0*5 > 0ダメージ / 0トライアンフ -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -6ALG*5 -output: -Alsetto : (6D6<=3) > 3[3,3,3,6,6,6] > Hits:3*5 > 15ダメージ / 0トライアンフ -rand:3/6,3/6,3/6,6/6,6/6,6/6 -============================ -input: -6ALG*5 -output: -Alsetto : (6D6<=3) > 3[1,2,3,6,6,6]+1[2,6]+1[3] > Hits:5*5 > 25ダメージ / 2トライアンフ -rand:1/6,2/6,3/6,6/6,6/6,6/6,2/6,6/6,3/6 -============================ diff --git a/src/src_bcdice/test/data/Alshard.txt b/src/src_bcdice/test/data/Alshard.txt deleted file mode 100644 index 014bd8dff..000000000 --- a/src/src_bcdice/test/data/Alshard.txt +++ /dev/null @@ -1,89 +0,0 @@ -input: -AL>=7 -output: -Alshard : (2D6>=7[12,2]) > 7[2,5] > 7 > 成功 -rand:5/6,2/6 -============================ -input: -AL-2>=10 -output: -Alshard : (2D6-2>=10[12,2]) > 11[5,6]-2 > 9 > 失敗 -rand:5/6,6/6 -============================ -input: -SAL+1>=5[11,3] -output: -Alshard : (2D6+1>=5[11,3]) > 11[5,6]+1 > 12 > 自動成功###secret dice### -rand:5/6,6/6 -============================ -input: -AL1>=7 -output: - -rand: -============================ -input: -ALA>=7 -output: - -rand: -============================ -input: -D66 -output: -Alshard : (D66) > 64 -rand:6/6,4/6 -============================ -input: -AL -output: -Alshard : (2D6[12,2]) > 12[6,6] > 12 > 自動成功 -rand:6/6,6/6 -============================ -input: -AL -output: -Alshard : (2D6[12,2]) > 2[1,1] > 2 > 自動失敗 -rand:1/6,1/6 -============================ -input: -AL1 -output: - -rand: -============================ -input: -ALA -output: - -rand: -============================ -input: -AL+1 -output: -Alshard : (2D6+1[12,2]) > 11[5,6]+1 > 12 -rand:5/6,6/6 -============================ -input: -AL-1 -output: -Alshard : (2D6-1[12,2]) > 3[1,2]-1 > 2 -rand:2/6,1/6 -============================ -input: -AL+1[11,3] -output: -Alshard : (2D6+1[11,3]) > 6[2,4]+1 > 7 -rand:4/6,2/6 -============================ -input: -AL+1[11,3] -output: -Alshard : (2D6+1[11,3]) > 11[5,6]+1 > 12 > 自動成功 -rand:6/6,5/6 -============================ -input: -AL+1[11,3] -output: -Alshard : (2D6+1[11,3]) > 3[1,2]+1 > 4 > 自動失敗 -rand:2/6,1/6 diff --git a/src/src_bcdice/test/data/AlterRaise.txt b/src/src_bcdice/test/data/AlterRaise.txt deleted file mode 100644 index 95c8f4e46..000000000 --- a/src/src_bcdice/test/data/AlterRaise.txt +++ /dev/null @@ -1,141 +0,0 @@ -input: -EMA -output: -AlterRaise : 解放判定表 > 2(1,1):激闘。今回の端末は想定をはるかに上回る脅威だった。幾本もの太刀筋と永遠のような時間の果てに、君たちは勝利した。深手を負ったが、ギリギリ致命傷ではない。 -rand:1/6,1/6 -============================ -input: -ema1 -output: -AlterRaise : 解放判定表 > 12(6,6):刹那。端末をその切っ先に捉えた刹那、君たちの前で粒子の光が舞う。それ以上何も起こることはなく、世界は色を取り戻した。 -【達成値7以上】GM:攻撃ルーチン1つを開示(番号はペアPLが指定) PL:戦闘開始時のアクセルレベル+1 -rand:6/6,6/6 -============================ -input: -EMA6 -output: -AlterRaise : 解放判定表 > 6:勝利。今回の端末は、おおむね想定される程度の個体であった。多少の傷は負ったが、君たちは問題なく勝利できた。 -rand: -============================ -input: -EMA7 -output: -AlterRaise : 解放判定表 > 7:快勝。今回の端末には、危うげも無く勝利できた。君とペアのコンビネーションの賜物だろう。かすり傷を負ったが、勲章のようなものだ。 -【達成値7以上】GM:攻撃ルーチン1つを開示(番号はペアPLが指定) PL:戦闘開始時のアクセルレベル+1 -rand: -============================ -input: -ema13 -output: -AlterRaise : 解放判定表 > 12:刹那。端末をその切っ先に捉えた刹那、君たちの前で粒子の光が舞う。それ以上何も起こることはなく、世界は色を取り戻した。 -【達成値7以上】GM:攻撃ルーチン1つを開示(番号はペアPLが指定) PL:戦闘開始時のアクセルレベル+1 -rand: -============================ -input: -PER -output: -AlterRaise : 性格傾向表 > 1:挑戦 -rand:1/6 -============================ -input: -PER1 -output: -AlterRaise : 性格傾向表 > 1:挑戦 -rand: -============================ -input: -sce -output: -AlterRaise : シーン演出表 > 2:遊び。君は相手と遊びたかった。 -rand:2/6 -============================ -input: -sce7 -output: -AlterRaise : シーン演出表 > 6:扉を開く前に。アクセルダイブ・ゲートをくぐる前に、君は相手に話したいことがあった。(*ダイブした後のシーンも演出すること) -rand: -============================ -input: -STA -output: -AlterRaise : スタンス表 > 3:師事 -rand:3/6 -============================ -input: -STA0 -output: -AlterRaise : スタンス表 > 4:ライバル -rand:4/6 -============================ -input: -LOC -output: -AlterRaise : 場所表 > 1,1:教室 -rand:1/6,1/6 -============================ -input: -loc -output: -AlterRaise : 場所表 > 1,3:教室 -rand:1/6,3/6 -============================ -input: -LOC14 -output: -AlterRaise : 場所表 > 1,4:部室 -rand: -============================ -input: -loc1 -output: -AlterRaise : 場所表 > 1,6:部室 -rand:6/6 -============================ -input: -QUI -output: -AlterRaise : 平穏・経験表 > 2,1:両親 -rand:2/6,1/6 -============================ -input: -qui0 -output: -AlterRaise : 平穏・経験表 > 2,6:兄弟 -rand:2/6,6/6 -============================ -input: -DEL -output: -AlterRaise : 喜び・経験表 > 3,1:幸運 -rand:3/6,1/6 -============================ -input: -del707 -output: -AlterRaise : 喜び・経験表 > 6,1:証明 -rand: -============================ -input: -TRA -output: -AlterRaise : 心の傷・経験表 > 4,1:別離 -rand:4/6,1/6 -============================ -input: -tra0004 -output: -AlterRaise : 心の傷・経験表 > 4,4:死別 -rand:4/6 -============================ -input: -EMO -output: -AlterRaise : 感情表 > 6,1:信頼 -rand:6/6,1/6 -============================ -input: -emo67 -output: -AlterRaise : 感情表 > 6,6:好意 -rand: -============================ diff --git a/src/src_bcdice/test/data/Amadeus.txt b/src/src_bcdice/test/data/Amadeus.txt deleted file mode 100644 index 272fd718c..000000000 --- a/src/src_bcdice/test/data/Amadeus.txt +++ /dev/null @@ -1,516 +0,0 @@ -input: -RC>=5 -output: -Amadeus : (RC>=5) > [5] > 5_成功[5] -rand:5/6 -============================ -input: -RC -output: -Amadeus : (RC>=4) > [5] > 5_成功[5] -rand:5/6 -============================ -input: -RC -output: -Amadeus : (RC>=4) > [2] > 2_失敗[2] -rand:2/6 -============================ -input: -RC+2 -output: -Amadeus : (RC+2>=4) > [2]+2 > 4_成功[2] -rand:2/6 -============================ -input: -RC-3 -output: -Amadeus : (RC-3>=4) > [2]-3 > -1_失敗[2] -rand:2/6 -============================ -input: -RC-3+2 -output: -Amadeus : (RC-3+2>=4) > [2]-3+2 > 1_失敗[2] -rand:2/6 -============================ -input: -RC>=5-1 -output: -Amadeus : (RC>=5-1) > [5] > 5_成功[5] -rand:5/6 -============================ -input: -RC>=5-2 hogehoge -output: -Amadeus : (RC>=5-2) > [5] > 5_成功[5] -rand:5/6 -============================ -input: -RB+1>=5 -output: -Amadeus : (RB+1>=5) > [2,4]+1 > 3_失敗[2赤] / 5_成功[4緑] -rand:2/6,4/6 -============================ -input: -RA-1 -output: -Amadeus : (RA-1>=4) > [1,5,6]-1 > 0_ファンブル![1黒] / 4_成功[5白] / 5_スペシャル![6任意] -rand:1/6,5/6,6/6 -============================ -input: -RS -output: -Amadeus : (RS>=4) > [2,1,5,6] > 2_失敗[2赤] / 1_ファンブル![1黒] / 5_成功[5白] / 6_スペシャル![6任意] -rand:2/6,1/6,5/6,6/6 -============================ -input: -RD+1>=5 -output: -Amadeus : (RD+1>=5) > [2,4]+1 > 3_失敗[2] -rand:2/6,4/6 -============================ -input: -RB@5 -output: -Amadeus : (RB@5>=4) > [2,5] > 2_失敗[2赤] / 5_スペシャル![5白] -rand: 2/6,5/6 -============================ -input: -RB+2@5 -output: -Amadeus : (RB+2@5>=4) > [2,5]+2 > 4_成功[2赤] / 7_スペシャル![5白] -rand: 2/6,5/6 -============================ -input: -RB+2@5>=5 -output: -Amadeus : (RB+2@5>=5) > [2,5]+2 > 4_失敗[2赤] / 7_スペシャル![5白] -rand: 2/6,5/6 -============================ -input: -RB+2>=5@5 -output: -Amadeus : (RB+2@5>=5) > [2,5]+2 > 4_失敗[2赤] / 7_スペシャル![5白] -rand: 2/6,5/6 -============================ -input: -ECT -output: -Amadeus : 境遇表(1) > 告白。あなたは、神と人間(獣の子の場合は何らかの動物)が愛し合って生まれた神子です。最近になって、その事実と予言について、自分の親から知らされました。あなたに両親がいる場合、どちらかの親は義理の親となります。 -rand:1/6 -============================ -input: -ECT -output: -Amadeus : 境遇表(6) > 帰依。あなたは、怪物によって命の危機にさらされました。しかし、神の血を授かることによって、死の淵からよみがえりました。以来、あなたは自らを助けてくれた神に帰依し、その人生を捧げることにしました。 -rand:6/6 -============================ -input: -RT -output: -Amadeus : 関係表(2) > 同情(プラス)/侮蔑(マイナス) -rand:2/6 -============================ -input: -RT -output: -Amadeus : 関係表(6) > 大切(プラス)/面倒(マイナス) -rand:6/6 -============================ -input: -PRT -output: -Amadeus : 親心表(1) > かわいい(プラス)/生意気(マイナス) -rand:1/6 -============================ -input: -PRT -output: -Amadeus : 親心表(6) > 過保護(プラス)/執着(マイナス) -rand:6/6 -============================ -input: -BST -output: -Amadeus : 戦場表(1) > 墓場。ラウンドの終了時、PCと怪物の本体は、【生命力】が1D6点減少します。また、この戦場にいる場合、PCがギフトを使用するとき、黒の領域にインガが追加で2つあるものとして扱います。 -rand:1/6 -============================ -input: -BST -output: -Amadeus : 戦場表(6) > 平地。特に変わった効果はありません。 -rand:6/6 -============================ -input: -BT -output: -Amadeus : 休憩表(11) > 土着の怪物が襲いかかってきた! なんとか撃退するが、傷を負ってしまった。1D6点のダメージを受ける。 -rand:1/6,1/6, -============================ -input: -BT -output: -Amadeus : 休憩表(16) > 突然の空腹に襲われる。このシーン中に食事を行わなかったPCは「重傷2」の変調を受ける。この変調は、食事を行うと回復できる(ほかの方法でも回復可能)。 -rand:6/6,1/6 -============================ -input: -BT -output: -Amadeus : 休憩表(45) > チンピラにからまれている異性の子を見つける。この出目を振ったプレイヤーのPCは、【武勇】で判定を行うことができる。成功すると、その子は、そのPCに対して【想い】を1点獲得する。この子を協力者にするなら、そのプレイヤーはその子の名前と関係を自由に決めること。 -rand:5/6,4/6 -============================ -input: -BT -output: -Amadeus : 休憩表(66) > 親神が、あなたに話しかけてくる。親子の会話だ。この出目を振ったプレイヤーのPCは、【日常】で判定を行うことができる。成功すると、自分の親神に対する【想い】か、親神の自分に対する【想い】のいずれかを1点上昇する。 -rand:6/6,6/6 -============================ -input: -FT -output: -Amadeus : ファンブル表(1) > 運命の輪が回転する。運命の輪の上にある赤の領域のインガを青の領域に、青の領域のインガを緑の領域に、緑の領域のインガを白の領域に、白の領域のインガを赤の領域に、それぞれ同時に移動させる。 -rand:1/6 -============================ -input: -FT -output: -Amadeus : ファンブル表(6) > 周囲から活気が失われる。運命の輪のなかから、黒以外の領域のインガがすべて1つずつ減少する。 -rand:6/6 -============================ -input: -FWT -output: -Amadeus : 致命傷表(1) > 絶望的な攻撃を受ける。そのキャラクターは死亡する。 -rand:1/6 -============================ -input: -FWT -output: -Amadeus : 致命傷表(6) > 奇跡的に持ちこたえる。【生命力】1点で踏みとどまる。 -rand:6/6 -============================ -input: -BRT -output: -Amadeus : 戦果表(1) > 1神貨を獲得する。 -rand:1/6 -============================ -input: -BRT -output: -Amadeus : 戦果表(6) > PC全員、自分の人物欄の中から、パトスのチェックを1つ消すことができる。 -rand:6/6 -============================ -input: -RIT -output: -Amadeus : ランダムアイテム表(2) > 「鎧」を1個獲得する。 -rand:1/6,1/6 -============================ -input: -RIT -output: -Amadeus : ランダムアイテム表(12) > 「爆弾」を1個獲得する。 -rand:6/6,6/6 -============================ -input: -WT -output: -Amadeus : 損傷表(1) > 自分の【生命力】を1D6点減少する。 -rand:1/6 -============================ -input: -WT -output: -Amadeus : 損傷表(6) > 自分の人物欄のもっとも高い【想い】1つを選び、それを1点減少する。 -rand:6/6 -============================ -input: -NMT -output: -Amadeus : 悪夢表(1) > 絶望の闇に視界を遮断される。背後に怪物の気配を感じたと思ったときは遅かった。卑劣な攻撃があなたを襲う。好きな能力値で判定を行う。失敗すると死亡する。 -rand:1/6 -============================ -input: -NMT -output: -Amadeus : 悪夢表(6) > 絶望の闇の中を必死で逃げ出した。背後から仲間の声が聞こえた気がする。しかし、あなたは振り返ることができなかった。【日常】で判定を行う。失敗すると、「恥辱」の呪いを受ける。 -rand:6/6 -============================ -input: -TGT -output: -Amadeus : 目標表(1) > 悪意。PCの中でもっとも【生命力】の低いもの一人を目標に選ぶ。もっとも低い【生命力】の持ち主が複数いる場合、その中から、GMが自由に一人目標を選ぶ。 -rand:1/6 -============================ -input: -TGT -output: -Amadeus : 目標表(4) > 堅実。PCの中でもっとも低いランクの【技術】の持ち主一人を目標に選ぶ。もっとも低いランクの持ち主が複数いる場合、その中から、もっとも低いモッドの持ち主一人を目標に選ぶ。モッドも同じ値だった場合、GMがその中から自由に一人目標を選ぶ。 -rand:4/6 -============================ -input: -TGT -output: -Amadeus : 目標表(6) > 単純。もっとも数値が低いパラグラフにいるPC一人を目標に選ぶ。全員が欄外にいる場合、欄外にいるPC全員を目標に選ぶ。 -rand:6/6 -============================ -input: -CST -output: -Amadeus : 制約表(1) > 短命 -rand:1/6 -============================ -input: -CST -output: -Amadeus : 制約表(5) > 喧嘩 -rand:5/6 -============================ -input: -GCVT -output: -Amadeus : ギリシャ神群試練表(2) > 水音に目を向けると、アルテミスが泉で水浴びをしていた。美しい……あ、気づかれた?自分が男性なら、「重傷2」の変調を受ける。自分が女性なら、「恥辱」の変調を受ける。 -rand:2/6 -============================ -input: -GCVT -output: -Amadeus : ギリシャ神群試練表(6) > 「あなた最近、調子に乗ってない?」アフロディーテに難癖をつけられた。「自分のことだけ見てればいいんじゃない?」鏡に映る自分が、とても美しく思えてきた。自分への【想い】が2点上昇し、それ以外の人物欄のパトスすべてにチェックを入れる。 -rand:6/6 -============================ -input: -YCVT -output: -Amadeus : ヤマト神群試練表(1) > 空が急に暗くなる。太陽がどこにも見えない。もしかして、アマテラスが隠れてしまったのか?黒の領域にインガを一つ配置する。 -rand:1/6 -============================ -input: -YCVT -output: -Amadeus : ヤマト神群試練表(6) > 海岸でいじめられている亀を助けたら、海の中の宮殿につれてきてくれた。トヨタマヒメが現れ、盛大にもてなしてくれる。あっという間に、夢のような時間が過ぎていく。でも、そろそろ行かなくては。【日常】で判定する。失敗すると、自分の年齢を6D6歳増やし、「絶望」の変調を受ける。 -rand:6/6 -============================ -input: -ECVT -output: -Amadeus : エジプト神群試練表(1) > 大蛇アペプが今にも目の前の空で輝く太陽を、飲み込もうとしている!止めなくては!【武勇】で判定する。失敗すると、黒の領域にインガを二つ配置する。 -rand:1/6 -============================ -input: -ECVT -output: -Amadeus : エジプト神群試練表(6) > 獅子頭の神、シェセムが、悪人の頭を砕いて、死者のためのワインにしている。悪人と見なされれば、頭をもがれてしまうだろう。【日常】で判定を行う。失敗すると、「重傷2」の変調を受ける。 -rand:6/6 -============================ -input: -CCVT -output: -Amadeus : クトゥルフ神群試練表(1) > 新聞記者たちが忙しく行き来しているオフィスにいる。ここは、新聞社アーカムアドバタイザーの編集部だ。「君が大きなニュースを持っていると聞いたんだけれど」記者の一人が尋ねてくる。自分の【真実】が公開されていなければ、「臆病1」の変調を受ける。 -rand:1/6 -============================ -input: -CCVT -output: -Amadeus : クトゥルフ神群試練表(6) > なんの変哲も無い民家にいる。アーカムの静かな風景が……ああ、窓に!窓に!黒の領域にインガを一つ配置する。 -rand:6/6 -============================ -input: -NCVT -output: -Amadeus : 北欧神群試練表(1) > 美しい乙女が告げる。「あなたはエインヘリアルたる資格がある」どうやら、戦乙女ヴァルキュリャに見初められたらしい。彼女たちは、戦死した者の魂を連れていくのだが。自分は、戦乙女から【想い】を2点獲得する。この【想い】の関係はマイナスの「殺意」となる。 -rand:1/6 -============================ -input: -NCVT -output: -Amadeus : 北欧神群試練表(6) > 巨人が話し掛けてくる。「お前に力をやってもいい。代わりに、片目か、片腕をよこせ」オーディンは片目を差し出して、知恵を手に入れた。嘘ではないだろうが……。【生命力】を3D6点減少することで、好きな領域にインガを二つ配置できる。減少しなかった場合、「臆病1」の変調を受ける。 -rand:6/6 -============================ -input: -DGVT -output: -Amadeus : ダンジョン試練表(1) > 照明が切れてしまい、暗闇の中に放り出される。前が見えない。白の領域からインガを一つ取り除く。 -rand:1/6 -============================ -input: -DGVT -output: -Amadeus : ダンジョン試練表(6) > 怪物たちのすみかに迷い込んでしまったようだ。怪物が一斉に襲ってくる!【武勇】で判定を行う。失敗すると、2D6点のダメージを受ける。 -rand:6/6 -============================ -input: -DAVT -output: -Amadeus : 日常試練表(1) > 仲間と移動していると、一般人の友達と偶然出会ってしまう。今何をしているかを聞かれたので、なんとかごまかす。自分に対して【想い】の値を持っているPC全員の属性が反転する。 -rand:1/6 -============================ -input: -DAVT -output: -Amadeus : 日常試練表(6) > 乗りたかった電車やバスに乗り遅れる。仕方ないから、走るか。移動判定を行う。失敗すると、「堕落」の変調を受け、もう一度「試練表」を使用する。 -rand:6/6 -============================ -input: -PRCT -output: -Amadeus : 挑戦テーマ表【武勇】(1) > 腕相撲 -rand:1/6 -============================ -input: -PRCT -output: -Amadeus : 挑戦テーマ表【武勇】(6) > 武勇伝自慢 -rand:6/6 -============================ -input: -TCCT -output: -Amadeus : 挑戦テーマ表【技術】(1) > 織物 -rand:1/6 -============================ -input: -TCCT -output: -Amadeus : 挑戦テーマ表【技術】(6) > 資格自慢 -rand:6/6 -============================ -input: -INCT -output: -Amadeus : 挑戦テーマ表【頭脳】(1) > パズル -rand:1/6 -============================ -input: -INCT -output: -Amadeus : 挑戦テーマ表【頭脳】(6) > 学歴自慢 -rand:6/6 -============================ -input: -PSCT -output: -Amadeus : 挑戦テーマ表【霊力】(1) > 詩作 -rand:1/6 -============================ -input: -PSCT -output: -Amadeus : 挑戦テーマ表【霊力】(6) > のど自慢 -rand:6/6 -============================ -input: -LVCT -output: -Amadeus : 挑戦テーマ表【愛】(1) > ナンパ勝負 -rand:1/6 -============================ -input: -LVCT -output: -Amadeus : 挑戦テーマ表【愛】(6) > 恋愛自慢 -rand:6/6 -============================ -input: -DACT -output: -Amadeus : 挑戦テーマ表【日常】(1) > 料理 -rand:1/6 -============================ -input: -DACT -output: -Amadeus : 挑戦テーマ表【日常】(6) > リア充自慢 -rand:6/6 -============================ -input: -RGT -output: -Amadeus : ランダムギフト表(1) > ランダムに選んだPCと同じ親神の親神ギフトの中から選ぶ。 -rand:1/6 -============================ -input: -RGT -output: -Amadeus : ランダムギフト表(6) > 好きな汎用ギフトの中から選ぶ。 -rand:6/6 -============================ -input: -FBT -output: -Amadeus : 決戦戦果表(1) > 1D6枚の神貨を獲得する。 -rand:1/6 -============================ -input: -FBT -output: -Amadeus : 決戦戦果表(6) > 「ランダムアイテム表」で、アイテムを入手できる。 -rand:6/6 -============================ -input: -CHVT -output: -Amadeus : 中華神群試練表(1) > たどりついた場所は、桃源郷であった。すべてを忘れて、しばらく楽しんでしまう。年齢が2D6点上昇し、「堕落」の変調を受ける。 -rand:1/6 -============================ -input: -CHVT -output: -Amadeus : 中華神群試練表(6) > 麒麟の死骸を発見してしまう。これは、不吉の前触れだ。黒の領域にインガを一つ配置する。 -rand:6/6 -============================ -input: -LCVT -output: -Amadeus : ラストクロニクル神群試練表(1) > レ・ムゥの五色の太陽がすべて輝きを失う「千年夜」の到来を幻視する。これは起こりうる未来なのだろうか……。黒の領域にインガを1つ配置する。 -rand:1/6 -============================ -input: -LCVT -output: -Amadeus : ラストクロニクル神群試練表(6) > 放浪の勇者・アルマイルから挨拶代わりの一撃を受ける。1D6点ダメージを受け、アルマイルからの【想い】が1点上昇する。 -rand:6/6 -============================ -input: -KCVT -output: -Amadeus : ケルト神群試練表(1) > 怪物が奏でる銀の竪琴の音色が聞こえてきて、しばらくの間、眠ってしまう。眠っている間に、妖精たちに悪戯された。「恥辱」の変調を受け、アイテムを一つ選んで失う。 -rand:1/6 -============================ -input: -KCVT -output: -Amadeus : ケルト神群試練表(6) > 道案内をしてくれた美女にそそのかされて、女人の国にたどりついてしまう。誘惑に耐えながら、なんとか脱出する。「堕落」と「臆病2」の変調を受ける。 -rand:6/6 -============================ -input: -RB+1>3 不要な機能だけど一応実装してみる。 -output: -Amadeus : (RB+1>3) > [2,4]+1 > 3_失敗[2赤] / 5_成功[4緑] -rand:2/6,4/6 -============================ -input: -SAT -output: -Amadeus : 店内雰囲気表(12) > 煙草の煙がたゆたうセルフ式コーヒーチェーン店 -rand:2/6,1/6 -============================ -input: -SAT -output: -Amadeus : 店内雰囲気表(55) > ショッピングモールのフードコート内にある出店 -rand:5/6,5/6 -============================ -input: -SMT -output: -Amadeus : 特殊メニュー表(11) > アド・パトレス(ケルト) -rand:1/6,1/6 -============================ -input: -SMT -output: -Amadeus : 特殊メニュー表(46) > ジヴァヤ・ヴォジャ(スラブ) -rand:4/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/Amadeus_Korean.txt b/src/src_bcdice/test/data/Amadeus_Korean.txt deleted file mode 100644 index 2456382bd..000000000 --- a/src/src_bcdice/test/data/Amadeus_Korean.txt +++ /dev/null @@ -1,264 +0,0 @@ -input: -RC>=5 -output: -Amadeus : (RC>=5) > [5] > 5_성공[5] -rand:5/6 -============================ -input: -RC -output: -Amadeus : (RC>=4) > [5] > 5_성공[5] -rand:5/6 -============================ -input: -RC -output: -Amadeus : (RC>=4) > [2] > 2_실패[2] -rand:2/6 -============================ -input: -RC+2 -output: -Amadeus : (RC+2>=4) > [2]+2 > 4_성공[2] -rand:2/6 -============================ -input: -RC-3 -output: -Amadeus : (RC-3>=4) > [2]-3 > -1_실패[2] -rand:2/6 -============================ -input: -RC-3+2 -output: -Amadeus : (RC-3+2>=4) > [2]-3+2 > 1_실패[2] -rand:2/6 -============================ -input: -RC>=5-1 -output: -Amadeus : (RC>=5-1) > [5] > 5_성공[5] -rand:5/6 -============================ -input: -RC>=5-2 hogehoge -output: -Amadeus : (RC>=5-2) > [5] > 5_성공[5] -rand:5/6 -============================ -input: -RB+1>=5 -output: -Amadeus : (RB+1>=5) > [2,4]+1 > 3_실패[2적] / 5_성공[4녹] -rand:2/6,4/6 -============================ -input: -RA-1 -output: -Amadeus : (RA-1>=4) > [1,5,6]-1 > 0_펌블![1흑] / 4_성공[5백] / 5_스페셜![6임의] -rand:1/6,5/6,6/6 -============================ -input: -RS -output: -Amadeus : (RS>=4) > [2,1,5,6] > 2_실패[2적] / 1_펌블![1흑] / 5_성공[5백] / 6_스페셜![6임의] -rand:2/6,1/6,5/6,6/6 -============================ -input: -RD+1>=5 -output: -Amadeus : (RD+1>=5) > [2,4]+1 > 3_실패[2] -rand:2/6,4/6 -============================ -input: -RB@5 -output: -Amadeus : (RB@5>=4) > [2,5] > 2_실패[2적] / 5_스페셜![5백] -rand: 2/6,5/6 -============================ -input: -RB+2@5 -output: -Amadeus : (RB+2@5>=4) > [2,5]+2 > 4_성공[2적] / 7_스페셜![5백] -rand: 2/6,5/6 -============================ -input: -RB+2@5>=5 -output: -Amadeus : (RB+2@5>=5) > [2,5]+2 > 4_실패[2적] / 7_스페셜![5백] -rand: 2/6,5/6 -============================ -input: -RB+2>=5@5 -output: -Amadeus : (RB+2@5>=5) > [2,5]+2 > 4_실패[2적] / 7_스페셜![5백] -rand: 2/6,5/6 -============================ -input: -ECT -output: -Amadeus : 조우표(1) > 고백. 당신은 신과 인간(짐승의 아이의 경우는 무언가의 동물)이 서로 사랑해 태어난 신의 아이입니다. 최근이 되어 그 사실과 예언에 관해 자신의 부모로부터 전해듣게 되었습니다. 당신은 양친이 있는 경우 어느 한쪽은 의붓부모가 됩니다. -rand:1/6 -============================ -input: -ECT -output: -Amadeus : 조우표(6) > 귀의. 당신은 괴물에 의해 생명의 위협을 받았습니다. 하지만, 신의 피를 받은 것으로 죽음의 문턱에서 되돌아 왔습니다. 그 이후로, 당신은 당신을 구해준 신에게 귀의하여 인생을 바치기로 했습니다. -rand:6/6 -============================ -input: -RT -output: -Amadeus : 관계표(2) > 동정(플러스) / 모멸(마이너스) -rand:2/6 -============================ -input: -RT -output: -Amadeus : 관계표(6) > 소중(플러스) / 귀찮(마이너스) -rand:6/6 -============================ -input: -PRT -output: -Amadeus : 부모마음표(1) > 귀엽다(플러스) / 건방지다(마이너스) -rand:1/6 -============================ -input: -PRT -output: -Amadeus : 부모마음표(6) > 과보호(플러스) / 집착(마이너스) -rand:6/6 -============================ -input: -BST -output: -Amadeus : 전장표(1) > 묘지. 라운드 종료 시 PC와 괴물의 본체는 【생명력】이 1D6점 감소한다. PC가 기프트를 사용할 때 흑의 영역의 인과가 추가로 2개 있는것으로 취급한다. -rand:1/6 -============================ -input: -BST -output: -Amadeus : 전장표(6) > 평지. 아무런 효과도 없다. -rand:6/6 -============================ -input: -BT -output: -Amadeus : 휴식표(11) > 토착 괴물이 습격해왔다! 어떻게든 격퇴했지만 부상을 입었다. 자신은 1D6점 데미지를 입는다. -rand:1/6,1/6, -============================ -input: -BT -output: -Amadeus : 휴식표(16) > 당신은 무심코 노래를 부른다. 어느샌가 모두가 그 노래에 집중하고 있었다. 흑의 영역 이외의 원하는 인과 1개를 다른 영역으로 옮긴다. -rand:6/6,1/6 -============================ -input: -BT -output: -Amadeus : 휴식표(45) > 양아치들에게 얽힌 이성을 발견한다. 이 표를 굴린 PC가 【무용】의 판정에 성공하면 그 NPC는 이 표를 굴린 PC에 대한 【마음】을 1점 획득한다. 이 NPC를 협력자로 한다면 이 표를 굴린 PC가 이름과 관계를 자유롭게 정한다. -rand:5/6,4/6 -============================ -input: -BT -output: -Amadeus : 휴식표(66) > 부모신이 당신에게 이야기하고 있다. 부모자식간의 대화다. 이 표를 굴린 PC는 【일상】의 판정에 성공하면 자신의 부모신에 대한 【마음】이나 부모신의 자신에 대한 【마음】중 하나를 1점 상승시킨다. -rand:6/6,6/6 -============================ -input: -FT -output: -Amadeus : 펌블표(1) > 운명의 수레바퀴가 회전한다. 각각의 영역의 인과를 적->청->녹->백->적으로 옮긴다. -rand:1/6 -============================ -input: -FT -output: -Amadeus : 펌블표(6) > 주변에 활기가 사라진다. 운명의 수레바퀴에서 흑의 영역 이외의 인과를 모두 1개씩 제거한다. -rand:6/6 -============================ -input: -FWT -output: -Amadeus : 치명상표(1) > 절망적인 공격을 받는다. 이 캐릭터는 사망한다. -rand:1/6 -============================ -input: -FWT -output: -Amadeus : 치명상표(6) > 기적적으로 버틴다. 【생명력】이 1점으로 회복된다. -rand:6/6 -============================ -input: -BRT -output: -Amadeus : 전과표(1) > 코인을 1개 획득한다. -rand:1/6 -============================ -input: -BRT -output: -Amadeus : 전과표(6) > PC 전원은 인물란의 체크를 1개 해제한다. -rand:6/6 -============================ -input: -RIT -output: -Amadeus : 랜덤아이템표(2) > 「갑옷」을 1개 획득한다. -rand:1/6,1/6 -============================ -input: -RIT -output: -Amadeus : 랜덤아이템표(12) > 「폭탄」을 1개 획득한다. -rand:6/6,6/6 -============================ -input: -WT -output: -Amadeus : 부상표(1) > 자신의 【생명력】이 1D6점 감소한다. -rand:1/6 -============================ -input: -WT -output: -Amadeus : 부상표(6) > 자신의 인물란의 가장 높은【마음】1개가 1점 감소한다. -rand:6/6 -============================ -input: -NMT -output: -Amadeus : 악몽표(1) > 절망의 어둠에 시야를 차단당한다. 등뒤에 괴물의 기척이 느껴진다고 생각했을때는 늦었다. 비열한 공격이 당신을 덮친다. 원하는 능력치로 판정해 실패하면 사망한다. -rand:1/6 -============================ -input: -NMT -output: -Amadeus : 악몽표(6) > 절망의 어둠 속에서 필사적으로 도망쳤다. 등뒤에서 동료의 목소리가 들린듯한 기분이 든다. 하지만, 당신은 돌아볼 수 없었다. 【일상】의 판정에 실패하면 「수치」의 저주를 받는다. -rand:6/6 -============================ -input: -TGT -output: -Amadeus : 목표표(1) > 악의. PC 중에서 가장 【생명력】이 낮은 PC 1명을 선택한다. 가장 낮은 【생명력】인 사람이 여럿 있을 경우, 그 중에서 GM이 자유롭게 선택한다. -rand:1/6 -============================ -input: -TGT -output: -Amadeus : 목표표(4) > 견실. PC 중에서 가장 【기술】랭크가 낮은 PC 1명을 선택한다. 가장 낮은 랭크를 가진 사람이 여럿 있을 경우, 그 중에서 가장 낮은 모드를 가진 사람을 1명 선택한다. 모드도 같을 경우, 그 중에서 GM이 자유롭게 선택한다. -rand:4/6 -============================ -input: -TGT -output: -Amadeus : 목표표(6) > 교활. 가장 숫자가 낮은 패러그래프에 있는 PC 1명을 선택한다. 전원이 장외에 있을 경우, 장외에 있는 PC 전원을 목표로 선택한다. -rand:6/6 -============================ -input: -RB+1>3 不要な機能だけど一応実装してみる。 -output: -Amadeus : (RB+1>3) > [2,4]+1 > 3_실패[2적] / 5_성공[4녹] -rand:2/6,4/6 -============================ diff --git a/src/src_bcdice/test/data/AnimaAnimus.txt b/src/src_bcdice/test/data/AnimaAnimus.txt deleted file mode 100644 index a9ae1a4b3..000000000 --- a/src/src_bcdice/test/data/AnimaAnimus.txt +++ /dev/null @@ -1,139 +0,0 @@ -input: -3AN<=3 -output: -AnimaAnimus : (3B10<=3) > 2,3,4 > 成功(達成値:2) -rand:2/10,3/10,4/10 -============================ -input: -3AN<=3+1 -output: -AnimaAnimus : (3B10<=4) > 2,3,4 > 成功(達成値:3) -rand:2/10,3/10,4/10 -============================ -input: -3AN<=1-2 -output: -AnimaAnimus : (3B10<=-1) > 2,3,4 > 失敗(達成値:0) -rand:2/10,3/10,4/10 -============================ -input: -3AN<=1-2 -output: -AnimaAnimus : (3B10<=-1) > 2,3,1 > 成功(達成値:2) (クリティカル発生) -rand:2/10,3/10,1/10 -============================ -input: -(3+1)AN<=3-1 -output: -AnimaAnimus : (4B10<=2) > 2,3,4,4 > 成功(達成値:1) -rand:2/10,3/10,4/10,4/10 -============================ -input: -3AN<=3 -output: -AnimaAnimus : (3B10<=3) > 1,2,5 > 成功(達成値:4) (クリティカル発生) -rand:1/10,2/10,5/10 -============================ -input: -3AN<=3 -output: -AnimaAnimus : (3B10<=3) > 9,1,1 > 成功(達成値:4) (クリティカル発生) -rand:9/10,1/10,1/10 -============================ -input: -3AN<=3 -output: -AnimaAnimus : (3B10<=3) > 7,6,5 > 失敗(達成値:0) -rand:7/10,6/10,5/10 -============================ -input: -5AN<=7 -output: -AnimaAnimus : (5B10<=7) > 4,4,9,6,7 > 成功(達成値:4) -rand:4/10,4/10,9/10,6/10,7/10 -============================ -input: -5AN<=7 -output: -AnimaAnimus : (5B10<=7) > 4,4,9,1,7 > 成功(達成値:6) (クリティカル発生) -rand:4/10,4/10,9/10,1/10,7/10 -============================ -input: -5AN<=7 -output: -AnimaAnimus : (5B10<=7) > 4,1,9,1,7 > 成功(達成値:6) (クリティカル発生) -rand:4/10,1/10,9/10,1/10,7/10 -============================ -input: -5AN<=7 -output: -AnimaAnimus : (5B10<=7) > 10,8,9,9,8 > 失敗(達成値:0) -rand:10/10,8/10,9/10,9/10,8/10 -============================ -input: -(5+1)AN<=7 -output: -AnimaAnimus : (6B10<=7) > 7,3,10,9,10,3 > 成功(達成値:3) -rand:7/10,3/10,10/10,9/10,10/10,3/10 -============================ -input: -(5+1)AN<=7 -output: -AnimaAnimus : (6B10<=7) > 9,2,1,7,8,2 > 成功(達成値:6) (クリティカル発生) -rand:9/10,2/10,1/10,7/10,8/10,2/10 -============================ -input: -3an<=3 -output: -AnimaAnimus : (3B10<=3) > 2,3,4 > 成功(達成値:2) -rand:2/10,3/10,4/10 -============================ -input: -3An<=3 -output: -AnimaAnimus : (3B10<=3) > 2,3,4 > 成功(達成値:2) -rand:2/10,3/10,4/10 -============================ -input: -3aN<=3 -output: -AnimaAnimus : (3B10<=3) > 2,3,4 > 成功(達成値:2) -rand:2/10,3/10,4/10 -============================ -input: -S3AN<=3 -output: -AnimaAnimus : (3B10<=3) > 2,3,4 > 成功(達成値:2)###secret dice### -rand:2/10,3/10,4/10 -============================ -input: -S(5+1)AN<=7 -output: -AnimaAnimus : (6B10<=7) > 9,2,1,7,8,2 > 成功(達成値:6) (クリティカル発生)###secret dice### -rand:9/10,2/10,1/10,7/10,8/10,2/10 -============================ -input: -IGT -output: -AnimaAnimus : 情報収集表(3) > 脅し/<威圧>/ならず者たちが集まるバーにやってきた。裏社会に生きる彼らを脅せば有益な情報が手に入るはずだ。 -rand:3/10 -============================ -input: -SIGT -output: -AnimaAnimus : 情報収集表(8) > 魔宴の情報屋/<調達>/魔宴の情報屋に接触して情報を聞き出すことにした。一筋縄ではいかない相手らしいが、はたして……?###secret dice### -rand:8/10 -============================ -input: -LT -output: -AnimaAnimus : 喪失表(6) > 容姿/だんだんと以前とはかけ離れた姿に変わっていく。いずれ誰も自分のことを自分だと気づかなくなるのだろう。 -あなたの特徴的な外見を失なう。内容をふさわしいものに書き換えること(特徴的な外見が美しい髪であれば醜い髪など)。 -rand:6/10 -============================ -input: -SLT -output: -AnimaAnimus : 喪失表(10) > 五感/少しずつ五感が鈍くなる。今までできていたはずのことができなくなってしまう。 -あなたの特技をひとつ選択する。選択した特技に×をつけること。×が付いた技能で判定を行なうことはできず、判定を求められた場合は自動的に失敗となる。###secret dice### -rand:10/10 \ No newline at end of file diff --git a/src/src_bcdice/test/data/Arianrhod.txt b/src/src_bcdice/test/data/Arianrhod.txt deleted file mode 100644 index d80234321..000000000 --- a/src/src_bcdice/test/data/Arianrhod.txt +++ /dev/null @@ -1,161 +0,0 @@ -input: -1D6>=3 -output: -Arianrhod : (1D6>=3) > 2 > 失敗 -rand:2/6 -============================ -input: -1D6>=3 -output: -Arianrhod : (1D6>=3) > 5 > 成功 -rand:5/6 -============================ -input: -1D6>=3 -output: -Arianrhod : (1D6>=3) > 1 > ファンブル -rand:1/6 -============================ -input: -1D6>=3 -output: -Arianrhod : (1D6>=3) > 6 > 成功 -rand:6/6 -============================ -input: -2D6>=7 -output: -Arianrhod : (2D6>=7) > 5[2,3] > 5 > 失敗 -rand:2/6,3/6 -============================ -input: -2D6>=7 -output: -Arianrhod : (2D6>=7) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2D6>=7 -output: -Arianrhod : (2D6>=7) > 2[1,1] > 2 > ファンブル -rand:1/6,1/6 -============================ -input: -2D6>=7 -output: -Arianrhod : (2D6>=7) > 12[6,6] > 12 > クリティカル(+2D6) -rand:6/6,6/6 -============================ -input: -3D6>=10 -output: -Arianrhod : (3D6>=10) > 4[1,1,2] > 4 > 失敗 -rand:2/6,1/6,1/6 -============================ -input: -3D6>=10 -output: -Arianrhod : (3D6>=10) > 12[3,3,6] > 12 > 成功 -rand:3/6,3/6,6/6 -============================ -input: -3D6>=10 -output: -Arianrhod : (3D6>=10) > 3[1,1,1] > 3 > ファンブル -rand:1/6,1/6,1/6 -============================ -input: -3D6>=10 -output: -Arianrhod : (3D6>=10) > 15[3,6,6] > 15 > クリティカル(+2D6) -rand:6/6,3/6,6/6 -============================ -input: -3D6>=10 -output: -Arianrhod : (3D6>=10) > 18[6,6,6] > 18 > クリティカル(+3D6) -rand:6/6,6/6,6/6 -============================ -input: -10D6>=35 -output: -Arianrhod : (10D6>=35) > 44[2,2,3,5,5,5,5,5,6,6] > 44 > クリティカル(+2D6) -rand:5/6,5/6,6/6,3/6,5/6,5/6,6/6,5/6,2/6,2/6 -============================ -input: -10D6>=35 -output: -Arianrhod : (10D6>=35) > 46[2,2,3,5,5,5,6,6,6,6] > 46 > クリティカル(+4D6) -rand:6/6,6/6,6/6,3/6,5/6,5/6,6/6,5/6,2/6,2/6 -============================ -input: -10D6>=35 -output: -Arianrhod : (10D6>=35) > 10[1,1,1,1,1,1,1,1,1,1] > 10 > ファンブル -rand:1/6,1/6,1/6,1/6,1/6,1/6,1/6,1/6,1/6,1/6 -============================ -input: -10D6>=35 -output: -Arianrhod : (10D6>=35) > 11[1,1,1,1,1,1,1,1,1,2] > 11 > 失敗 -rand:1/6,2/6,1/6,1/6,1/6,1/6,1/6,1/6,1/6,1/6 -============================ -input: -D66 -output: -Arianrhod : (D66) > 35 -rand:3/6,5/6 -============================ -input: -d66 -output: -Arianrhod : (D66) > 51 -rand:5/6,1/6 -============================ -input: -D66 -output: -Arianrhod : (D66) > 15 -rand:1/6,5/6 -============================ -input: -D66 -output: -Arianrhod : (D66) > 53 -rand:5/6,3/6 -============================ -input: -D66 -output: -Arianrhod : (D66) > 53 -rand:5/6,3/6 -============================ -input: -D66 -output: -Arianrhod : (D66) > 31 -rand:3/6,1/6 -============================ -input: -D66 -output: -Arianrhod : (D66) > 63 -rand:6/6,3/6 -============================ -input: -D66 -output: -Arianrhod : (D66) > 42 -rand:4/6,2/6 -============================ -input: -D66 -output: -Arianrhod : (D66) > 55 -rand:5/6,5/6 -============================ -input: -3D6>=? 目標値?でバグらない -output: -Arianrhod : (3D6>=?) > 9[3,3,3] > 9 > 失敗 -rand:3/6,3/6,3/6 diff --git a/src/src_bcdice/test/data/ArsMagica.txt b/src/src_bcdice/test/data/ArsMagica.txt deleted file mode 100644 index 81fcede75..000000000 --- a/src/src_bcdice/test/data/ArsMagica.txt +++ /dev/null @@ -1,227 +0,0 @@ -input: -Ars3+1 -output: -ArsMagica : (1R10+1[3]) > 9+1 > 10 -rand:10/10 -============================ -input: -Ars+1 -output: -ArsMagica : (1R10+1) > 9+1 > 10 -rand:10/10 -============================ -input: -Ars1 -output: -ArsMagica : (1R10[1]) > 9 -rand:10/10 -============================ -input: -Ars1 -output: -ArsMagica : (1R10[1]) > 8 -rand:9/10 -============================ -input: -Ars1 -output: -ArsMagica : (1R10[1]) > 6 -rand:7/10 -============================ -input: -Ars1 -output: -ArsMagica : (1R10[1]) > 7 -rand:8/10 -============================ -input: -Ars1 -output: -ArsMagica : (1R10[1]) > 5 -rand:6/10 -============================ -input: -Ars1 -output: -ArsMagica : (1R10[1]) > 3 -rand:4/10 -============================ -input: -Ars1 -output: -ArsMagica : (1R10[1]) > 0[0,7] > 0 -rand:1/10,8/10 -============================ -input: -Ars3 -output: -ArsMagica : (1R10[3]) > 4 -rand:5/10 -============================ -input: -Ars3 -output: -ArsMagica : (1R10[3]) > 3 -rand:4/10 -============================ -input: -Ars3 -output: -ArsMagica : (1R10[3]) > 9 -rand:10/10 -============================ -input: -Ars3 -output: -ArsMagica : (1R10[3]) > 7 -rand:8/10 -============================ -input: -Ars3 -output: -ArsMagica : (1R10[3]) > 6 -rand:7/10 -============================ -input: -Ars5 -output: -ArsMagica : (1R10[5]) > 0[0,1,3,5,4,5] > 0 -rand:1/10,2/10,4/10,6/10,5/10,6/10 -============================ -input: -Ars5 -output: -ArsMagica : (1R10[5]) > 8 -rand:9/10 -============================ -input: -Ars5 -output: -ArsMagica : (1R10[5]) > 6 -rand:7/10 -============================ -input: -Ars5 -output: -ArsMagica : (1R10[5]) > 7 -rand:8/10 -============================ -input: -Ars5 -output: -ArsMagica : (1R10[5]) > 3 -rand:4/10 -============================ -input: -Ars5 -output: -ArsMagica : (1R10[5]) > 4 -rand:5/10 -============================ -input: -Ars5 -output: -ArsMagica : (1R10[5]) > 5 -rand:6/10 -============================ -input: -Ars7 -output: -ArsMagica : (1R10[7]) > 9 -rand:10/10 -============================ -input: -Ars7 -output: -ArsMagica : (1R10[7]) > 3 -rand:4/10 -============================ -input: -Ars7 -output: -ArsMagica : (1R10[7]) > 4 -rand:5/10 -============================ -input: -Ars7 -output: -ArsMagica : (1R10[7]) > 0[0,9,5,9,5,7,1,5] > 0 -rand:1/10,10/10,6/10,10/10,6/10,8/10,2/10,6/10 -============================ -input: -Ars7 -output: -ArsMagica : (1R10[7]) > 10[1,5] -rand:2/10,5/10 -============================ -input: -Ars7 -output: -ArsMagica : (1R10[7]) > 5 -rand:6/10 -============================ -input: -Ars7 -output: -ArsMagica : (1R10[7]) > 7 -rand:8/10 -============================ -input: -Ars9 -output: -ArsMagica : (1R10[9]) > 20[1,1,5] -rand:2/10,1/10,5/10 -============================ -input: -Ars9 -output: -ArsMagica : (1R10[9]) > 8[1,4] -rand:2/10,4/10 -============================ -input: -Ars10 -output: -ArsMagica : (1R10[10]) > 14[1,7] -rand:2/10,7/10 -============================ -input: -Ars10 -output: -ArsMagica : (1R10[10]) > 0[0,2,4,7,9,4,5,5,7,4,2] > 0 -rand:1/10,3/10,5/10,8/10,10/10,5/10,6/10,6/10,8/10,5/10,3/10 -============================ -input: -Ars-3 -output: -ArsMagica : (1R10-3) > 8-3 > 5 -rand:9/10 -============================ -input: -Ars+3 -output: -ArsMagica : (1R10+3) > 8+3 > 11 -rand:9/10 -============================ -input: -Ars10>=7 -output: -ArsMagica : (1R10[10]>=7) > 2 > 失敗 -rand:3/10 -============================ -input: -Ars10>=7 -output: -ArsMagica : (1R10[10]>=7) > 9 > 成功 -rand:10/10 -============================ -input: -Ars10>=7 -output: -ArsMagica : (1R10[10]>=7) > 7 > 成功 -rand:8/10 -============================ -input: -Ars2>=7 Botchの時には目標値を使った判定はされない -output: -ArsMagica : (1R10[2]>=7) > 0[0,0,0] > 2Botch! -rand:1/10,1/10,1/10 diff --git a/src/src_bcdice/test/data/Avandner.txt b/src/src_bcdice/test/data/Avandner.txt deleted file mode 100644 index 233d86ac4..000000000 --- a/src/src_bcdice/test/data/Avandner.txt +++ /dev/null @@ -1,120 +0,0 @@ -input: -6AV3 -output: -Avandner : (6D10<=3) > 0[10,10,10,10,10,10] > 成功数:0 -rand:10/10,10/10,10/10,10/10,10/10,10/10 -============================ -input: -6AV3 -output: -Avandner : (6D10<=3) > 2[2,3,4,5,6,6] > 成功数:2 -rand:2/10,3/10,4/10,5/10,6/10,6/10 -============================ -input: -6AV3 -output: -Avandner : (6D10<=3) > 3[1,2,3,4,5,6]+0[6] > 成功数:3 / 1クリティカル -rand:1/10,2/10,3/10,4/10,5/10,6/10,6/10 -============================ -input: -6AV3 -output: -Avandner : (6D10<=3) > 3[1,1,3,4,5,6]+1[3,6] > 成功数:4 / 2クリティカル -rand:1/10,1/10,3/10,4/10,5/10,6/10,3/10,6/10 -============================ -input: -6AV3 -output: -Avandner : (6D10<=3) > 3[1,1,3,4,5,6]+1[1,6]+1[3] > 成功数:5 / 3クリティカル -rand:1/10,1/10,3/10,4/10,5/10,6/10,1/10,6/10,3/10 -============================ -input: -6AV4C0 -output: -Avandner : (6D10<=4) > 4[1,2,3,4,5,6] > 成功数:4 -rand:1/10,2/10,3/10,4/10,5/10,6/10 -============================ -input: -6AV4c2 -output: -Avandner : (6D10<=4) > 4[1,2,3,4,5,6]+1[3,6] > 成功数:5 / 2クリティカル -rand:1/10,2/10,3/10,4/10,5/10,6/10,3/10,6/10 -============================ -input: -4AV3*5 -output: -Avandner : (4D10<=3) > 0[6,6,6,6] > Hits:0*5 > 0ダメージ -rand:6/10,6/10,6/10,6/10 -============================ -input: -4AV3x5 -output: -Avandner : (4D10<=3) > 0[6,6,6,6] > Hits:0*5 > 0ダメージ -rand:6/10,6/10,6/10,6/10 -============================ -input: -4AV3X5 -output: -Avandner : (4D10<=3) > 0[6,6,6,6] > Hits:0*5 > 0ダメージ -rand:6/10,6/10,6/10,6/10 -============================ -input: -4av3*5 -output: -Avandner : (4D10<=3) > 2[2,3,4,5] > Hits:2*5 > 10ダメージ -rand:2/10,3/10,4/10,5/10 -============================ -input: -4Av3*5 -output: -Avandner : (4D10<=3) > 2[1,1,6,6]+1[3,6] > Hits:3*5 > 15ダメージ / 2クリティカル -rand:1/10,1/10,6/10,6/10,3/10,6/10 -============================ -input: -5aV4*10 -output: -Avandner : (5D10<=4) > 0[6,6,6,6,6] > Hits:0*10 > 0ダメージ -rand:6/10,6/10,6/10,6/10,6/10 -============================ -input: -5AV4x10 -output: -Avandner : (5D10<=4) > 3[2,3,4,5,6] > Hits:3*10 > 30ダメージ -rand:2/10,3/10,4/10,5/10,6/10 -============================ -input: -5AV4X10 -output: -Avandner : (5D10<=4) > 4[1,2,3,4,5]+0[6] > Hits:4*10 > 40ダメージ / 1クリティカル -rand:1/10,2/10,3/10,4/10,5/10,6/10 -============================ -input: -5AV4*10 -output: -Avandner : (5D10<=4) > 3[1,1,1,6,6]+2[1,1,6]+1[4,6] > Hits:6*10 > 60ダメージ / 5クリティカル -rand:1/10,1/10,1/10,6/10,6/10,1/10,1/10,6/10,4/10,6/10 -============================ -input: -5av3*5+10 -output: -Avandner : (5D10<=3) > 0[6,6,6,6,6] > Hits:0*5 + Trigger:0*10 > 0ダメージ -rand:6/10,6/10,6/10,6/10,6/10 -============================ -input: -5av3*5+10 -output: -Avandner : (5D10<=3) > 2[2,3,4,5,6] > Hits:2*5 + Trigger:0*10 > 10ダメージ -rand:2/10,3/10,4/10,5/10,6/10 -============================ -input: -5av3*5+10 -output: -Avandner : (5D10<=3) > 3[1,2,3,4,5]+1[3] > Hits:4*5 + Trigger:1*10 > 30ダメージ / 1クリティカル -rand:1/10,2/10,3/10,4/10,5/10,3/10 -============================ -input: -5av3*5+10c0 -output: -Avandner : (5D10<=3) > 3[1,2,3,4,5] > Hits:3*5 + Trigger:0*10 > 15ダメージ -rand:1/10,2/10,3/10,4/10,5/10 -============================ diff --git a/src/src_bcdice/test/data/BBN.txt b/src/src_bcdice/test/data/BBN.txt deleted file mode 100644 index b95620a18..000000000 --- a/src/src_bcdice/test/data/BBN.txt +++ /dev/null @@ -1,174 +0,0 @@ -input: -1BN クリティカル -output: -BBN : (1BN) > 6[6] > 6 > クリティカル! > 6+4[4] > 10 -rand:6/6,4/6 -============================ -input: -1BN ファンブル -output: -BBN : (1BN) > 1[1] > 1 > ファンブル! -rand:1/6 -============================ -input: -1BN -output: -BBN : (1BN) > 5[5] > 5 -rand:5/6 -============================ -input: -2BN クリティカル -output: -BBN : (2BN) > 12[6,6] > 12 > クリティカル! > 12+2[1,1] > 14 -rand:6/6,6/6,1/6,1/6 -============================ -input: -2BN 2Dの時は6ゾロのみクリティカル -output: -BBN : (2BN) > 8[6,2] > 8 -rand:6/6,2/6 -============================ -input: -2BN ファンブル -output: -BBN : (2BN) > 2[1,1] > 2 > ファンブル! -rand:1/6,1/6 -============================ -input: -2BN 2Dの時はピンゾロのみクリティカル -output: -BBN : (2BN) > 3[1,2] > 3 -rand:1/6,2/6 -============================ -input: -3BN クリティカル -output: -BBN : (3BN) > 13[6,6,1] > 13 > クリティカル! > 13+2[1,1] > 15 -rand:6/6,6/6,1/6,1/6,1/6 -============================ -input: -3BN ファンブル -output: -BBN : (3BN) > 8[6,1,1] > 8 > ファンブル! -rand:6/6,1/6,1/6 -============================ -input: -3BN クリティカルでもファンブルでもない -output: -BBN : (3BN) > 10[6,1,3] > 10 -rand:6/6,1/6,3/6 -============================ -input: -4BN クリティカル -output: -BBN : (4BN) > 21[6,6,4,5] > 21 > クリティカル! > 21+5[2,3] > 26 -rand:6/6,6/6,4/6,5/6,2/6,3/6 -============================ -input: -4BN ファンブル -output: -BBN : (4BN) > 11[1,1,4,5] > 11 > ファンブル! -rand:1/6,1/6,4/6,5/6 -============================ -input: -4BN クリティカルでもファンブルでもない -output: -BBN : (4BN) > 16[1,6,4,5] > 16 -rand:1/6,6/6,4/6,5/6 -============================ -input: -4BN クリティカルとファンブルはクリティカルが優先 -output: -BBN : (4BN) > 14[6,6,1,1] > 14 > クリティカル! > 14+6[2,4] > 20 -rand:6/6,6/6,1/6,1/6,2/6,4/6 -============================ -input: -2BN 追加クリティカル1回 -output: -BBN : (2BN) > 12[6,6] > 12 > クリティカル! > 12+7[6,1] > 追加クリティカル! > 19+1[1] > 20 -rand:6/6,6/6,6/6,1/6,1/6 -============================ -input: -2BN 追加クリティカル1回 -output: -BBN : (2BN) > 12[6,6] > 12 > クリティカル! > 12+12[6,6] > 追加クリティカル! > 24+2[1,1] > 26 -rand:6/6,6/6,6/6,6/6,1/6,1/6 -============================ -input: -2BN 追加クリティカル3回 -output: -BBN : (2BN) > 12[6,6] > 12 > クリティカル! > 12+7[6,1] > 追加クリティカル! > 19+6[6] > 追加クリティカル! > 25+6[6] > 追加クリティカル! > 31+1[1] > 32 -rand:6/6,6/6,6/6,1/6,6/6,6/6,1/6 -============================ -input: -2BN[-1] -output: -BBN : (2BN[-1]) > 8[6,2] > 8 > クリティカル! > 8+2[2] > 10 -rand:6/6,2/6,2/6 -============================ -input: -2BN[1,-1] -output: -BBN : (2BN[1,-1]) > 6[5,1] > 6 > ファンブル! -rand:5/6,1/6 -============================ -input: -2BN[,-1] -output: -BBN : (2BN[,-1]) > 6[5,1] > 6 > ファンブル! -rand:5/6,1/6 -============================ -input: -4BN[1,1] クリティカルとファンブル引き上げ -output: -BBN : (4BN[1,1]) > 14[6,6,1,1] > 14 -rand:6/6,6/6,1/6,1/6 -============================ -input: -4BN[1,1] クリティカル -output: -BBN : (4BN[1,1]) > 19[6,6,6,1] > 19 > クリティカル! > 19+6[4,1,1] > 25 -rand:6/6,6/6,6/6,1/6,4/6,1/6,1/6 -============================ -input: -4BN[1,2] ファンブル -output: -BBN : (4BN[1,2]) > 4[1,1,1,1] > 4 > ファンブル! -rand:1/6,1/6,1/6,1/6 -============================ -input: -1BN 無限ループ防止のため追加クリティカルは10回まで -output: -BBN : (1BN) > 6[6] > 6 > クリティカル! > 6+6[6] > 追加クリティカル! > 12+6[6] > 追加クリティカル! > 18+6[6] > 追加クリティカル! > 24+6[6] > 追加クリティカル! > 30+6[6] > 追加クリティカル! > 36+6[6] > 追加クリティカル! > 42+6[6] > 追加クリティカル! > 48+6[6] > 追加クリティカル! > 54+6[6] > 追加クリティカル! > 60+6[6] > 追加クリティカル! > 無限ループ防止のため中断 > 66 -rand:6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -3BN+3>=10[-1,-1] -output: -BBN : (3BN+3>=10[-1,-1]) > 7[2,3,2]+3 > 10 > 成功 -rand:2/6,3/6,2/6 -============================ -input: -3BN+3>=10[-1,-1] -output: -BBN : (3BN+3>=10[-1,-1]) > 6[2,2,2]+3 > 9 > 失敗 -rand:2/6,2/6,2/6 -============================ -input: -3BN-2>=10[-1,-1] クリティカルによって成功 -output: -BBN : (3BN-2>=10[-1,-1]) > 8[6,1,1]-2 > 6 > クリティカル! > 6+5[5] > 11 > 成功 -rand:6/6,1/6,1/6,5/6 -============================ -input: -3BN-2>=10[-1,-1] クリティカルしたけど失敗 -output: -BBN : (3BN-2>=10[-1,-1]) > 8[6,1,1]-2 > 6 > クリティカル! > 6+2[2] > 8 > 失敗 -rand:6/6,1/6,1/6,2/6 -============================ -input: -3BN+3>=10[-1,-1] 目標値は超えてるけどファンブル -output: -BBN : (3BN+3>=10[-1,-1]) > 11[1,5,5]+3 > 14 > ファンブル! -rand:1/6,5/6,5/6 -============================ diff --git a/src/src_bcdice/test/data/BadLife.txt b/src/src_bcdice/test/data/BadLife.txt deleted file mode 100644 index 8a5ab21de..000000000 --- a/src/src_bcdice/test/data/BadLife.txt +++ /dev/null @@ -1,468 +0,0 @@ -input: -BAD -output: -BadLife : 1D20(C:20,F:1) > 10[10] > 達成値:10 -rand:10/20 -============================ -input: -BAD -output: -BadLife : 1D20(C:20,F:1) > 1[1] > 達成値:0 ファンブル -rand:1/20 -============================ -input: -BAD -output: -BadLife : 1D20(C:20,F:1) > 20[20] > 達成値:20 クリティカル -rand:20/20 -============================ -input: -BAD10 -output: -BadLife : 1D20(C:20,F:1) > 10[10]+10 > 達成値:20 -rand:10/20 -============================ -input: -BAD10 -output: -BadLife : 1D20(C:20,F:1) > 1[1]+10 > 達成値:0 ファンブル -rand:1/20 -============================ -input: -BAD10 -output: -BadLife : 1D20(C:20,F:1) > 20[20]+10 > 達成値:30 クリティカル -rand:20/20 -============================ -input: -BAD10+1 -output: -BadLife : 1D20(C:20,F:1) > 10[10]+11 > 達成値:21 -rand:10/20 -============================ -input: -BAD10+1-2 -output: -BadLife : 1D20(C:20,F:1) > 10[10]+9 > 達成値:19 -rand:10/20 -============================ -input: -BAD+1-2+3-4 -output: -BadLife : 1D20(C:20,F:1) > 10[10]-2 > 達成値:8 -rand:10/20 -============================ -input: -2BAD -output: -BadLife : 2D20(C:20,F:1) > 10[10,10] > 達成値:10 -rand:10/20,10/20 -============================ -input: -2BAD -output: -BadLife : 2D20(C:20,F:1) > 11[9,11] > 達成値:11 -rand:9/20,11/20 -============================ -input: -2BAD -output: -BadLife : 2D20(C:20,F:1) > 1[1,1] > 達成値:0 ファンブル -rand:1/20,1/20 -============================ -input: -2BAD -output: -BadLife : 2D20(C:20,F:1) > 10[1,10] > 達成値:10 -rand:1/20,10/20 -============================ -input: -2BAD -output: -BadLife : 2D20(C:20,F:1) > 20[10,20] > 達成値:20 クリティカル -rand:10/20,20/20 -============================ -input: -2BAD -output: -BadLife : 2D20(C:20,F:1) > 20[20,1] > 達成値:20 クリティカル -rand:20/20,1/20 -============================ -input: -3BAD10 -output: -BadLife : 3D20(C:20,F:1) > 15[5,10,15]+10 > 達成値:25 -rand:5/20,10/20,15/20 -============================ -input: -BADC-1 -output: -BadLife : 1D20(C:19,F:1) > 18[18] > 達成値:18 -rand:18/20 -============================ -input: -BADC-1 -output: -BadLife : 1D20(C:19,F:1) > 20[19] > 達成値:20 クリティカル -rand:19/20 -============================ -input: -BADC-1 -output: -BadLife : 1D20(C:19,F:1) > 20[20] > 達成値:20 クリティカル -rand:20/20 -============================ -input: -BADC1 -output: -BadLife : 1D20(C:21,F:1) > 20[20] > 達成値:20 -rand:20/20 -============================ -input: -BADC+1 -output: -BadLife : 1D20(C:21,F:1) > 20[20] > 達成値:20 -rand:20/20 -============================ -input: -BADC1-1-1 -output: -BadLife : 1D20(C:19,F:1) > 20[20] > 達成値:20 クリティカル -rand:20/20 -============================ -input: -BADF1 -output: -BadLife : 1D20(C:20,F:2) > 1[1] > 達成値:0 ファンブル -rand:1/20 -============================ -input: -BADF1 -output: -BadLife : 1D20(C:20,F:2) > 2[2] > 達成値:0 ファンブル -rand:2/20 -============================ -input: -BADF1 -output: -BadLife : 1D20(C:20,F:2) > 3[3] > 達成値:3 -rand:3/20 -============================ -input: -BADF+1 -output: -BadLife : 1D20(C:20,F:2) > 1[1] > 達成値:0 ファンブル -rand:1/20 -============================ -input: -BADF-1 -output: -BadLife : 1D20(C:20,F:0) > 1[1] > 達成値:1 -rand:1/20 -============================ -input: -2BAD8C-1F1 -output: -BadLife : 2D20(C:19,F:2) > 2[1,2]+8 > 達成値:0 ファンブル -rand:1/20,2/20 -============================ -input: -2BAD8C-1F1 -output: -BadLife : 2D20(C:19,F:2) > 3[3,1]+8 > 達成値:11 -rand:3/20,1/20 -============================ -input: -2BAD8C-1F1 -output: -BadLife : 2D20(C:19,F:2) > 15[5,15]+8 > 達成値:23 -rand:5/20,15/20 -============================ -input: -2BAD8C-1F1 -output: -BadLife : 2D20(C:19,F:2) > 20[10,19]+8 > 達成値:28 クリティカル -rand:10/20,19/20 -============================ -input: -2BAD8C-1F1 -output: -BadLife : 2D20(C:19,F:2) > 20[2,19]+8 > 達成値:28 クリティカル -rand:2/20,19/20 -============================ -input: -BAD6@15 -output: -BadLife : 1D20(C:20,F:1) > 10[10]+6 > 達成値:16>=15 成功度:1 > 成功 -rand:10/20 -============================ -input: -BAD6@20 -output: -BadLife : 1D20(C:20,F:1) > 10[10]+6 > 達成値:16>=20 成功度:-4 > 失敗 -rand:10/20 -============================ -input: -BAD6@15 -output: -BadLife : 1D20(C:20,F:1) > 1[1]+6 > 達成値:0>=15 成功度:-15 > 失敗(ファンブル) -rand:1/20 -============================ -input: -BAD6@15 -output: -BadLife : 1D20(C:20,F:1) > 20[20]+6 > 達成値:26>=15 成功度:11 > 成功(クリティカル) -rand:20/20 -============================ -input: -BAD6@30 -output: -BadLife : 1D20(C:20,F:1) > 20[20]+6 > 達成値:26>=30 成功度:-4 > 成功(クリティカル) -rand:20/20 -============================ -input: -3BAD6+2C-2F+2@15+5 -output: -BadLife : 3D20(C:18,F:3) > 15[5,10,15]+8 > 達成値:23>=20 成功度:3 > 成功 -rand:5/20,10/20,15/20 -============================ -input: -BAD!A -output: -BadLife : 1D20(C:20,F:1) > 10[10] > 達成値:10 〈先見の明〉 -rand:10/20 -============================ -input: -BAD!A -output: -BadLife : 1D20(C:20,F:1) > 7[7]+5 > 達成値:12 〈先見の明〉 -rand:7/20 -============================ -input: -BAD5!A -output: -BadLife : 1D20(C:20,F:1) > 7[7]+5+5 > 達成値:17 〈先見の明〉 -rand:7/20 -============================ -input: -BAD5!A -output: -BadLife : 1D20(C:20,F:1) > 1[1]+5+5 > 達成値:0 ファンブル 〈先見の明〉 -rand:1/20 -============================ -input: -BAD!H -output: -BadLife : 1D20(C:20,F:1) > 10[10] > 達成値:10 [重撃] -rand:10/20 -============================ -input: -BAD!H -output: -BadLife : 1D20(C:20,F:1) > 5[3] > 達成値:5 [重撃] -rand:3/20 -============================ -input: -BAD!H -output: -BadLife : 1D20(C:20,F:1) > 5[1] > 達成値:5 [重撃] -rand:1/20 -============================ -input: -BAD10!AH -output: -BadLife : 1D20(C:20,F:1) > 7[7]+10+5 > 達成値:22 〈先見の明〉[重撃] -rand:7/20 -============================ -input: -BAD10!AH -output: -BadLife : 1D20(C:20,F:1) > 5[3]+10+5 > 達成値:20 〈先見の明〉[重撃] -rand:3/20 -============================ -input: -BAD10!AH -output: -BadLife : 1D20(C:20,F:1) > 5[1]+10+5 > 達成値:20 〈先見の明〉[重撃] -rand:1/20 -============================ -input: -BAD10@15!A -output: -BadLife : 1D20(C:20,F:1) > 10[10]+10 > 達成値:20>=15 成功度:5 > 成功 〈先見の明〉 -rand:10/20 -============================ -input: -BAD10@15!A -output: -BadLife : 1D20(C:20,F:1) > 7[7]+10+5 > 達成値:22>=15 成功度:7 > 成功 〈先見の明〉 -rand:7/20 -============================ -input: -BAD10@25!A -output: -BadLife : 1D20(C:20,F:1) > 7[7]+10+5 > 達成値:22>=25 成功度:-3 > 失敗 〈先見の明〉 -rand:7/20 -============================ -input: -BL -output: -BadLife : 1D20(C:20,F:1) > 10[10] > 達成値:10 -rand:10/20 -============================ -input: -BL -output: -BadLife : 1D20(C:20,F:1) > 1[1] > 達成値:0 ファンブル -rand:1/20 -============================ -input: -BL -output: -BadLife : 1D20(C:20,F:1) > 20[20] > 達成値:20 クリティカル -rand:20/20 -============================ -input: -3BL10F-1C1@20!H -output: -BadLife : 3D20(C:21,F:0) > 20[1,10,20]+10 > 達成値:30>=20 成功度:10 > 成功 [重撃] -rand:1/20,10/20,20/20 -============================ -input: -3BL10F-1C1@20!H -output: -BadLife : 3D20(C:21,F:0) > 5[2,3,4]+10 > 達成値:15>=20 成功度:-5 > 失敗 [重撃] -rand:2/20,3/20,4/20 -============================ -input: -GL8 -output: -BadLife : 1D20(C:17,F:2) > 10[10]+8 > 達成値:18 〈波乱万丈〉 -rand:10/20 -============================ -input: -GL8 -output: -BadLife : 1D20(C:17,F:2) > 20[17]+8 > 達成値:28 クリティカル 〈波乱万丈〉 -rand:17/20 -============================ -input: -GL8 -output: -BadLife : 1D20(C:17,F:2) > 2[2]+8 > 達成値:0 ファンブル 〈波乱万丈〉 -rand:2/20 -============================ -input: -GL8C-1F+1 -output: -BadLife : 1D20(C:16,F:3) > 10[10]+8 > 達成値:18 〈波乱万丈〉 -rand:10/20 -============================ -input: -GL8C-1F+1 -output: -BadLife : 1D20(C:16,F:3) > 20[16]+8 > 達成値:28 クリティカル 〈波乱万丈〉 -rand:16/20 -============================ -input: -GL8C-1F+1 -output: -BadLife : 1D20(C:16,F:3) > 3[3]+8 > 達成値:0 ファンブル 〈波乱万丈〉 -rand:3/20 -============================ -input: -GL8C-1F+1!HA -output: -BadLife : 1D20(C:16,F:3) > 10[10]+8 > 達成値:18 〈波乱万丈〉〈先見の明〉[重撃] -rand:10/20 -============================ -input: -TRN -output: -BadLife : 怪盗コードネーム表(1) > フォックス -rand:1/20 -============================ -input: -TRN -output: -BadLife : 怪盗コードネーム表(20) > ジャガー -rand:20/20 -============================ -input: -DRN -output: -BadLife : 闇医者コードネーム表(3) > ヘッドエイク -rand:3/20 -============================ -input: -DRN -output: -BadLife : 闇医者コードネーム表(18) > デス -rand:18/20 -============================ -input: -GRN -output: -BadLife : 博徒コードネーム表(5) > プレジデント -rand:5/20 -============================ -input: -GRN -output: -BadLife : 博徒コードネーム表(16) > ミラクル -rand:16/20 -============================ -input: -KRN -output: -BadLife : 殺シ屋コードネーム表(7) > キャノン -rand:7/20 -============================ -input: -KRN -output: -BadLife : 殺シ屋コードネーム表(14) > ガロット -rand:14/20 -============================ -input: -SRN -output: -BadLife : 業師コードネーム表(9) > フリージア -rand:9/20 -============================ -input: -SRN -output: -BadLife : 業師コードネーム表(12) > カクタス -rand:12/20 -============================ -input: -BRN -output: -BadLife : 遊ビ人コードネーム表(11) > トランプ -rand:11/20 -============================ -input: -BRN -output: -BadLife : 遊ビ人コードネーム表(19) > キャベツカンテイ -rand:19/20 -============================ -input: -SKL -output: -BadLife : スキル表(1) > 一撃離脱 -rand:1/100 -============================ -input: -SKL -output: -BadLife : スキル表(50) > 破釜沈船 -rand:50/100 -============================ -input: -SKL -output: -BadLife : スキル表(100) > この表を2回振る -rand:100/100 -============================ diff --git a/src/src_bcdice/test/data/BarnaKronika.txt b/src/src_bcdice/test/data/BarnaKronika.txt deleted file mode 100644 index c0d968b8f..000000000 --- a/src/src_bcdice/test/data/BarnaKronika.txt +++ /dev/null @@ -1,719 +0,0 @@ -input: -1BK -output: -BarnaKronika : (1R6[0,0]) > [5] > 失敗 -rand:5/6 -============================ -input: -1BK -output: -BarnaKronika : (1R6[0,0]) > [6] > 失敗 -rand:6/6 -============================ -input: -1BK -output: -BarnaKronika : (1R6[0,0]) > [3] > 失敗 -rand:3/6 -============================ -input: -1BK -output: -BarnaKronika : (1R6[0,0]) > [3] > 失敗 -rand:3/6 -============================ -input: -1BK -output: -BarnaKronika : (1R6[0,0]) > [1] > 失敗 -rand:1/6 -============================ -input: -1BK -output: -BarnaKronika : (1R6[0,0]) > [5] > 失敗 -rand:5/6 -============================ -input: -1BK -output: -BarnaKronika : (1R6[0,0]) > [5] > 失敗 -rand:5/6 -============================ -input: -1BK -output: -BarnaKronika : (1R6[0,0]) > [4] > 失敗 -rand:4/6 -============================ -input: -1BK -output: -BarnaKronika : (1R6[0,0]) > [6] > 失敗 -rand:6/6 -============================ -input: -1BK -output: -BarnaKronika : (1R6[0,0]) > [5] > 失敗 -rand:5/6 -============================ -input: -5BK -output: -BarnaKronika : (5R6[0,0]) > [1,5,6,6,6] > 成功数3,セット1 -rand:6/6,5/6,1/6,6/6,6/6 -============================ -input: -5BK -output: -BarnaKronika : (5R6[0,0]) > [3,3,4,5,6] > 成功数2,セット1 -rand:3/6,5/6,4/6,3/6,6/6 -============================ -input: -5BK -output: -BarnaKronika : (5R6[0,0]) > [3,3,5,5,6] > 成功数2,セット2 -rand:5/6,3/6,6/6,5/6,3/6 -============================ -input: -5BK -output: -BarnaKronika : (5R6[0,0]) > [2,3,4,5,6] > 失敗 -rand:2/6,6/6,4/6,5/6,3/6 -============================ -input: -5BK -output: -BarnaKronika : (5R6[0,0]) > [1,2,4,4,4] > 成功数3,セット1 -rand:4/6,1/6,2/6,4/6,4/6 -============================ -input: -5BK -output: -BarnaKronika : (5R6[0,0]) > [1,2,2,3,4] > 成功数2,セット1 -rand:3/6,2/6,1/6,2/6,4/6 -============================ -input: -5BK -output: -BarnaKronika : (5R6[0,0]) > [2,3,5,5,6] > 成功数2,セット1 -rand:6/6,5/6,2/6,3/6,5/6 -============================ -input: -5BK -output: -BarnaKronika : (5R6[0,0]) > [4,4,4,6,6] > 成功数3,セット2 -rand:4/6,4/6,6/6,6/6,4/6 -============================ -input: -5BK -output: -BarnaKronika : (5R6[0,0]) > [2,3,6,6,6] > 成功数3,セット1 -rand:6/6,6/6,6/6,2/6,3/6 -============================ -input: -5BK -output: -BarnaKronika : (5R6[0,0]) > [1,2,3,4,5] > 失敗 -rand:3/6,5/6,2/6,4/6,1/6 -============================ -input: -[1...10]BK -output: -BarnaKronika : (3R6[0,0]) > [4,5,6] > 失敗 -rand:3/10,5/6,4/6,6/6 -============================ -input: -[1...10]BK -output: -BarnaKronika : (7R6[0,0]) > [1,1,1,2,3,4,5] > 成功数3,セット1 -rand:7/10,3/6,1/6,4/6,5/6,1/6,1/6,2/6 -============================ -input: -[1...10]BK -output: -BarnaKronika : (1R6[0,0]) > [3] > 失敗 -rand:1/10,3/6 -============================ -input: -[1...10]BK -output: -BarnaKronika : (6R6[0,0]) > [1,2,5,5,5,6] > 成功数3,セット1 -rand:6/10,5/6,5/6,2/6,5/6,1/6,6/6 -============================ -input: -[1...10]BK -output: -BarnaKronika : (8R6[0,0]) > [1,1,1,2,4,5,5,6] > 成功数3,セット2 -rand:8/10,5/6,1/6,1/6,4/6,2/6,6/6,5/6,1/6 -============================ -input: -[1...10]BK -output: -BarnaKronika : (5R6[0,0]) > [1,1,3,3,6] > 成功数2,セット2 -rand:5/10,1/6,3/6,3/6,6/6,1/6 -============================ -input: -[1...10]BK -output: -BarnaKronika : (6R6[0,0]) > [2,3,3,4,4,6] > 成功数2,セット2 -rand:6/10,6/6,4/6,3/6,2/6,3/6,4/6 -============================ -input: -[1...10]BK -output: -BarnaKronika : (2R6[0,0]) > [3,6] > 失敗 -rand:2/10,3/6,6/6 -============================ -input: -[1...10]BK -output: -BarnaKronika : (2R6[0,0]) > [5,6] > 失敗 -rand:2/10,6/6,5/6 -============================ -input: -[1...10]BK -output: -BarnaKronika : (7R6[0,0]) > [1,1,2,2,4,6,6] > 成功数2,セット3 -rand:7/10,6/6,6/6,2/6,1/6,4/6,2/6,1/6 -============================ -input: -1BA -output: -BarnaKronika : (1R6[1,0]) > [5] > 失敗 -rand:5/6 -============================ -input: -1BA -output: -BarnaKronika : (1R6[1,0]) > [3] > 失敗 -rand:3/6 -============================ -input: -1BA -output: -BarnaKronika : (1R6[1,0]) > [6] > 失敗 -rand:6/6 -============================ -input: -1BA -output: -BarnaKronika : (1R6[1,0]) > [5] > 失敗 -rand:5/6 -============================ -input: -1BA -output: -BarnaKronika : (1R6[1,0]) > [2] > 失敗 -rand:2/6 -============================ -input: -1BA -output: -BarnaKronika : (1R6[1,0]) > [1] > 失敗 -rand:1/6 -============================ -input: -1BA -output: -BarnaKronika : (1R6[1,0]) > [2] > 失敗 -rand:2/6 -============================ -input: -1BA -output: -BarnaKronika : (1R6[1,0]) > [6] > 失敗 -rand:6/6 -============================ -input: -1BA -output: -BarnaKronika : (1R6[1,0]) > [5] > 失敗 -rand:5/6 -============================ -input: -1BA -output: -BarnaKronika : (1R6[1,0]) > [2] > 失敗 -rand:2/6 -============================ -input: -5BA -output: -BarnaKronika : (5R6[1,0]) > [1,1,3,3,6] > 頭部:攻撃値2,左腕:攻撃値2 -rand:3/6,3/6,1/6,6/6,1/6 -============================ -input: -5BA -output: -BarnaKronika : (5R6[1,0]) > [3,4,4,4,6] > 右脚:攻撃値3 -rand:4/6,4/6,4/6,3/6,6/6 -============================ -input: -5BA -output: -BarnaKronika : (5R6[1,0]) > [1,2,2,5,6] > 右腕:攻撃値2 -rand:2/6,2/6,6/6,5/6,1/6 -============================ -input: -5BA -output: -BarnaKronika : (5R6[1,0]) > [3,4,5,5,6] > 左脚:攻撃値2 -rand:5/6,6/6,5/6,4/6,3/6 -============================ -input: -5BA -output: -BarnaKronika : (5R6[1,0]) > [3,6,6,6,6] > 胴体:攻撃値4 -rand:3/6,6/6,6/6,6/6,6/6 -============================ -input: -5BA -output: -BarnaKronika : (5R6[1,0]) > [1,1,2,4,4] > 頭部:攻撃値2,右脚:攻撃値2 -rand:4/6,1/6,4/6,2/6,1/6 -============================ -input: -5BA -output: -BarnaKronika : (5R6[1,0]) > [1,2,3,5,6] > 失敗 -rand:6/6,2/6,1/6,3/6,5/6 -============================ -input: -5BA -output: -BarnaKronika : (5R6[1,0]) > [1,2,3,3,3] > 左腕:攻撃値3 -rand:3/6,3/6,3/6,1/6,2/6 -============================ -input: -5BA -output: -BarnaKronika : (5R6[1,0]) > [2,2,4,4,6] > 右腕:攻撃値2,右脚:攻撃値2 -rand:2/6,4/6,2/6,4/6,6/6 -============================ -input: -5BA -output: -BarnaKronika : (5R6[1,0]) > [1,1,1,5,6] > 頭部:攻撃値3 -rand:1/6,6/6,5/6,1/6,1/6 -============================ -input: -[1...10]BA -output: -BarnaKronika : (4R6[1,0]) > [2,4,5,6] > 失敗 -rand:4/10,6/6,5/6,4/6,2/6 -============================ -input: -[1...10]BA -output: -BarnaKronika : (5R6[1,0]) > [2,2,6,6,6] > 右腕:攻撃値2,胴体:攻撃値3 -rand:5/10,2/6,6/6,6/6,2/6,6/6 -============================ -input: -[1...10]BA -output: -BarnaKronika : (7R6[1,0]) > [1,2,3,4,6,6,6] > 胴体:攻撃値3 -rand:7/10,2/6,6/6,3/6,6/6,1/6,4/6,6/6 -============================ -input: -[1...10]BA -output: -BarnaKronika : (7R6[1,0]) > [2,3,3,4,5,6,6] > 左腕:攻撃値2,胴体:攻撃値2 -rand:7/10,6/6,4/6,5/6,6/6,3/6,2/6,3/6 -============================ -input: -[1...10]BA -output: -BarnaKronika : (1R6[1,0]) > [4] > 失敗 -rand:1/10,4/6 -============================ -input: -[1...10]BA -output: -BarnaKronika : (9R6[1,0]) > [2,2,2,3,3,3,4,4,5] > 右腕:攻撃値3,左腕:攻撃値3,右脚:攻撃値2 -rand:9/10,2/6,2/6,2/6,3/6,4/6,3/6,4/6,3/6,5/6 -============================ -input: -[1...10]BA -output: -BarnaKronika : (3R6[1,0]) > [1,5,6] > 失敗 -rand:3/10,1/6,5/6,6/6 -============================ -input: -[1...10]BA -output: -BarnaKronika : (2R6[1,0]) > [2,3] > 失敗 -rand:2/10,2/6,3/6 -============================ -input: -[1...10]BA -output: -BarnaKronika : (7R6[1,0]) > [1,2,4,4,5,5,6] > 右脚:攻撃値2,左脚:攻撃値2 -rand:7/10,6/6,4/6,2/6,5/6,1/6,5/6,4/6 -============================ -input: -[1...10]BA -output: -BarnaKronika : (5R6[1,0]) > [1,1,2,5,5] > 頭部:攻撃値2,左脚:攻撃値2 -rand:5/10,1/6,5/6,2/6,5/6,1/6 -============================ -input: -1BKC1 -output: -BarnaKronika : (1R6[0,1]) > [2] > 失敗 -rand:2/6 -============================ -input: -1BKC1 -output: -BarnaKronika : (1R6[0,1]) > [2] > 失敗 -rand:2/6 -============================ -input: -1BKC1 -output: -BarnaKronika : (1R6[0,1]) > [1] > 成功数2,セット1 -rand:1/6 -============================ -input: -1BKC1 -output: -BarnaKronika : (1R6[0,1]) > [6] > 失敗 -rand:6/6 -============================ -input: -1BKC1 -output: -BarnaKronika : (1R6[0,1]) > [6] > 失敗 -rand:6/6 -============================ -input: -1BKC1 -output: -BarnaKronika : (1R6[0,1]) > [1] > 成功数2,セット1 -rand:1/6 -============================ -input: -1BKC1 -output: -BarnaKronika : (1R6[0,1]) > [2] > 失敗 -rand:2/6 -============================ -input: -1BKC1 -output: -BarnaKronika : (1R6[0,1]) > [2] > 失敗 -rand:2/6 -============================ -input: -1BKC1 -output: -BarnaKronika : (1R6[0,1]) > [6] > 失敗 -rand:6/6 -============================ -input: -1BKC1 -output: -BarnaKronika : (1R6[0,1]) > [1] > 成功数2,セット1 -rand:1/6 -============================ -input: -5BKC2 -output: -BarnaKronika : (5R6[0,2]) > [3,3,5,5,6] > 失敗 -rand:5/6,3/6,3/6,5/6,6/6 -============================ -input: -5BKC2 -output: -BarnaKronika : (5R6[0,2]) > [1,2,3,4,4] > 成功数2,セット1 -rand:1/6,2/6,4/6,4/6,3/6 -============================ -input: -5BKC2 -output: -BarnaKronika : (5R6[0,2]) > [2,3,3,4,6] > 成功数2,セット1 -rand:2/6,3/6,4/6,6/6,3/6 -============================ -input: -5BKC2 -output: -BarnaKronika : (5R6[0,2]) > [1,5,6,6,6] > 失敗 -rand:6/6,6/6,6/6,5/6,1/6 -============================ -input: -5BKC2 -output: -BarnaKronika : (5R6[0,2]) > [2,4,4,6,6] > 成功数2,セット1 -rand:6/6,4/6,6/6,2/6,4/6 -============================ -input: -5BKC2 -output: -BarnaKronika : (5R6[0,2]) > [2,3,3,6,6] > 成功数2,セット1 -rand:6/6,2/6,6/6,3/6,3/6 -============================ -input: -5BKC2 -output: -BarnaKronika : (5R6[0,2]) > [1,2,2,3,4] > 成功数4,セット1 -rand:2/6,3/6,4/6,1/6,2/6 -============================ -input: -5BKC2 -output: -BarnaKronika : (5R6[0,2]) > [1,3,4,4,5] > 失敗 -rand:5/6,4/6,3/6,4/6,1/6 -============================ -input: -5BKC2 -output: -BarnaKronika : (5R6[0,2]) > [2,4,5,6,6] > 成功数2,セット1 -rand:4/6,6/6,5/6,2/6,6/6 -============================ -input: -5BKC2 -output: -BarnaKronika : (5R6[0,2]) > [1,1,3,5,6] > 失敗 -rand:3/6,1/6,5/6,6/6,1/6 -============================ -input: -[1...10]BKC[1...5] -output: -BarnaKronika : (9R6[0,4]) > [2,4,4,4,4,5,5,6,6] > 成功数8,セット1 -rand:9/10,4/5,5/6,6/6,4/6,5/6,4/6,2/6,4/6,4/6,6/6 -============================ -input: -[1...10]BKC[1...5] -output: -BarnaKronika : (9R6[0,1]) > [1,1,2,2,2,3,3,4,6] > 成功数4,セット1 -rand:9/10,1/5,2/6,2/6,2/6,3/6,6/6,1/6,3/6,4/6,1/6 -============================ -input: -[1...10]BKC[1...5] -output: -BarnaKronika : (8R6[0,4]) > [1,2,3,3,4,5,5,6] > 成功数2,セット1 -rand:8/10,4/5,3/6,5/6,6/6,1/6,3/6,4/6,2/6,5/6 -============================ -input: -[1...10]BKC[1...5] -output: -BarnaKronika : (4R6[0,2]) > [2,3,5,6] > 成功数2,セット1 -rand:4/10,2/5,6/6,3/6,2/6,5/6 -============================ -input: -[1...10]BKC[1...5] -output: -BarnaKronika : (4R6[0,4]) > [1,4,4,6] > 成功数4,セット1 -rand:4/10,4/5,4/6,6/6,4/6,1/6 -============================ -input: -[1...10]BKC[1...5] -output: -BarnaKronika : (3R6[0,2]) > [3,5,6] > 失敗 -rand:3/10,2/5,6/6,3/6,5/6 -============================ -input: -[1...10]BKC[1...5] -output: -BarnaKronika : (10R6[0,2]) > [1,2,3,3,4,4,5,5,6,6] > 成功数2,セット1 -rand:10/10,2/5,1/6,3/6,6/6,6/6,3/6,5/6,5/6,2/6,4/6,4/6 -============================ -input: -[1...10]BKC[1...5] -output: -BarnaKronika : (2R6[0,2]) > [1,5] > 失敗 -rand:2/10,2/5,1/6,5/6 -============================ -input: -[1...10]BKC[1...5] -output: -BarnaKronika : (10R6[0,1]) > [1,2,3,3,4,4,4,5,6,6] > 成功数2,セット1 -rand:10/10,1/5,6/6,5/6,3/6,2/6,3/6,4/6,4/6,4/6,1/6,6/6 -============================ -input: -[1...10]BKC[1...5] -output: -BarnaKronika : (10R6[0,5]) > [1,1,2,2,3,3,4,5,6,6] > 成功数2,セット1 -rand:10/10,5/5,3/6,6/6,1/6,3/6,6/6,5/6,2/6,4/6,1/6,2/6 -============================ -input: -1BAC1 -output: -BarnaKronika : (1R6[1,1]) > [1] > 頭部:攻撃値2 -rand:1/6 -============================ -input: -1BAC1 -output: -BarnaKronika : (1R6[1,1]) > [4] > 失敗 -rand:4/6 -============================ -input: -1BAC1 -output: -BarnaKronika : (1R6[1,1]) > [1] > 頭部:攻撃値2 -rand:1/6 -============================ -input: -1BAC1 -output: -BarnaKronika : (1R6[1,1]) > [1] > 頭部:攻撃値2 -rand:1/6 -============================ -input: -1BAC1 -output: -BarnaKronika : (1R6[1,1]) > [2] > 失敗 -rand:2/6 -============================ -input: -1BAC1 -output: -BarnaKronika : (1R6[1,1]) > [5] > 失敗 -rand:5/6 -============================ -input: -1BAC1 -output: -BarnaKronika : (1R6[1,1]) > [4] > 失敗 -rand:4/6 -============================ -input: -1BAC1 -output: -BarnaKronika : (1R6[1,1]) > [1] > 頭部:攻撃値2 -rand:1/6 -============================ -input: -1BAC1 -output: -BarnaKronika : (1R6[1,1]) > [3] > 失敗 -rand:3/6 -============================ -input: -1BAC1 -output: -BarnaKronika : (1R6[1,1]) > [2] > 失敗 -rand:2/6 -============================ -input: -5BAC2 -output: -BarnaKronika : (5R6[1,2]) > [1,3,4,4,6] > 失敗 -rand:3/6,4/6,4/6,6/6,1/6 -============================ -input: -5BAC2 -output: -BarnaKronika : (5R6[1,2]) > [1,2,3,3,6] > 右腕:攻撃値2 -rand:6/6,3/6,2/6,3/6,1/6 -============================ -input: -5BAC2 -output: -BarnaKronika : (5R6[1,2]) > [1,3,3,4,5] > 失敗 -rand:1/6,5/6,3/6,4/6,3/6 -============================ -input: -5BAC2 -output: -BarnaKronika : (5R6[1,2]) > [1,1,2,5,5] > 右腕:攻撃値2 -rand:1/6,1/6,5/6,2/6,5/6 -============================ -input: -5BAC2 -output: -BarnaKronika : (5R6[1,2]) > [3,4,5,6,6] > 失敗 -rand:6/6,6/6,5/6,4/6,3/6 -============================ -input: -5BAC2 -output: -BarnaKronika : (5R6[1,2]) > [4,4,4,5,5] > 失敗 -rand:5/6,5/6,4/6,4/6,4/6 -============================ -input: -5BAC2 -output: -BarnaKronika : (5R6[1,2]) > [5,5,6,6,6] > 失敗 -rand:5/6,6/6,6/6,5/6,6/6 -============================ -input: -5BAC2 -output: -BarnaKronika : (5R6[1,2]) > [1,4,5,5,5] > 失敗 -rand:5/6,1/6,5/6,4/6,5/6 -============================ -input: -5BAC2 -output: -BarnaKronika : (5R6[1,2]) > [1,2,4,6,6] > 右腕:攻撃値2 -rand:6/6,4/6,6/6,2/6,1/6 -============================ -input: -5BAC2 -output: -BarnaKronika : (5R6[1,2]) > [2,3,4,5,6] > 右腕:攻撃値2 -rand:4/6,3/6,5/6,6/6,2/6 -============================ -input: -[1...10]BAC[1...5] -output: -BarnaKronika : (2R6[1,2]) > [1,4] > 失敗 -rand:2/10,2/5,4/6,1/6 -============================ -input: -[1...10]BAC[1...5] -output: -BarnaKronika : (1R6[1,2]) > [1] > 失敗 -rand:1/10,2/5,1/6 -============================ -input: -[1...10]BAC[1...5] -output: -BarnaKronika : (10R6[1,3]) > [1,2,3,3,4,4,5,5,6,6] > 左腕:攻撃値4 -rand:10/10,3/5,5/6,3/6,2/6,6/6,6/6,4/6,3/6,4/6,5/6,1/6 -============================ -input: -[1...10]BAC[1...5] -output: -BarnaKronika : (4R6[1,2]) > [2,2,6,6] > 右腕:攻撃値4 -rand:4/10,2/5,6/6,2/6,2/6,6/6 -============================ -input: -[1...10]BAC[1...5] -output: -BarnaKronika : (5R6[1,2]) > [1,1,1,2,4] > 右腕:攻撃値2 -rand:5/10,2/5,1/6,2/6,1/6,4/6,1/6 -============================ -input: -[1...10]BAC[1...5] -output: -BarnaKronika : (2R6[1,2]) > [4,6] > 失敗 -rand:2/10,2/5,4/6,6/6 -============================ -input: -[1...10]BAC[1...5] -output: -BarnaKronika : (4R6[1,5]) > [3,3,4,6] > 失敗 -rand:4/10,5/5,4/6,3/6,6/6,3/6 -============================ -input: -[1...10]BAC[1...5] -output: -BarnaKronika : (8R6[1,5]) > [1,3,3,3,3,4,5,6] > 左脚:攻撃値2 -rand:8/10,5/5,3/6,5/6,3/6,3/6,1/6,6/6,4/6,3/6 -============================ -input: -[1...10]BAC[1...5] -output: -BarnaKronika : (7R6[1,2]) > [1,3,4,5,5,5,6] > 失敗 -rand:7/10,2/5,5/6,4/6,5/6,6/6,1/6,3/6,5/6 -============================ -input: -[1...10]BAC[1...5] -output: -BarnaKronika : (1R6[1,5]) > [4] > 失敗 -rand:1/10,5/5,4/6 diff --git a/src/src_bcdice/test/data/BattleTech.txt b/src/src_bcdice/test/data/BattleTech.txt deleted file mode 100644 index 31bfc7afd..000000000 --- a/src/src_bcdice/test/data/BattleTech.txt +++ /dev/null @@ -1,196 +0,0 @@ -input: -4BT3C+5>=11 -output: -BattleTech : 16[5,6+5]>=11 > 命中 > [12] 頭 3点 -17[6,6+5]>=11 > 命中 > [2] 胴中央(致命的命中) 3点 > [9] 1箇所の致命的命中 -7[1,1+5]>=11 > 外れ -17[6,6+5]>=11 > 命中 > [12] 頭 3点 - > 3回命中 命中箇所:頭(2回) 6点 / 胴中央(1回) 3点 1箇所の致命的命中 > 合計ダメージ 9点 -rand:5/6,6/6,6/6,6/6,6/6,6/6,1/6,1/6,3/6,6/6,1/6,1/6,6/6,6/6,6/6,6/6 -============================ -input: -3BT1>=2 -output: -BattleTech : 11[5,6]>=2 > 命中 > [2] 胴中央(致命的命中) 1点 > [9] 1箇所の致命的命中 -11[5,6]>=2 > 命中 > [2] 胴中央(致命的命中) 1点 > [9] 1箇所の致命的命中 -11[5,6]>=2 > 命中 > [2] 胴中央(致命的命中) 1点 > [9] 1箇所の致命的命中 - > 3回命中 命中箇所:胴中央(3回) 3点 1箇所の致命的命中 1箇所の致命的命中 1箇所の致命的命中 > 合計ダメージ 3点 -rand:5/6,6/6,1/6,1/6,5/6,4/6,5/6,6/6,1/6,1/6,5/6,4/6,5/6,6/6,1/6,1/6,5/6,4/6 -============================ -input: -BT3R>=7 -output: -BattleTech : 7[3,4]>=7 > 命中 > [2] 右胴(致命的命中) 3点 > [7] 致命的命中はなかった - > 1回命中 命中箇所:右胴(1回) 3点 > 合計ダメージ 3点 -rand:3/6,4/6,1/6,1/6,3/6,4/6 -============================ -input: -1BT3C+5>=11 -output: -BattleTech : 17[6,6+5]>=11 > 命中 > [11] 左腕 3点 - > 1回命中 命中箇所:左腕(1回) 3点 > 合計ダメージ 3点 -rand:6/6,6/6,5/6,6/6 -============================ -input: -1BT3+5>=11 -output: -BattleTech : 17[6,6+5]>=11 > 命中 > [11] 左腕 3点 - > 1回命中 命中箇所:左腕(1回) 3点 > 合計ダメージ 3点 -rand:6/6,6/6,5/6,6/6 -============================ -input: -1BT3C>=11 -output: -BattleTech : 12[6,6]>=11 > 命中 > [11] 左腕 3点 - > 1回命中 命中箇所:左腕(1回) 3点 > 合計ダメージ 3点 -rand:6/6,6/6,5/6,6/6 -============================ -input: -1BT3>=11 -output: -BattleTech : 12[6,6]>=11 > 命中 > [11] 左腕 3点 - > 1回命中 命中箇所:左腕(1回) 3点 > 合計ダメージ 3点 -rand:6/6,6/6,5/6,6/6 -============================ -input: -BT3>=11 -output: -BattleTech : 12[6,6]>=11 > 命中 > [11] 左腕 3点 - > 1回命中 命中箇所:左腕(1回) 3点 > 合計ダメージ 3点 -rand:6/6,6/6,5/6,6/6 -============================ -input: -BT3C>=11 -output: -BattleTech : 12[6,6]>=11 > 命中 > [11] 左腕 3点 - > 1回命中 命中箇所:左腕(1回) 3点 > 合計ダメージ 3点 -rand:6/6,6/6,5/6,6/6 -============================ -input: -BT3X>=11 -output: -rand: -============================ -input: -SRM2>=11 -output: -BattleTech : 12[6,6]>=11 > 命中 > [11] 左腕 [2] 2点 - > 1回命中 命中箇所:左腕(1回) 2点 > 合計ダメージ 2点 -rand:6/6,6/6,1/6,1/6,5/6,6/6 -============================ -input: -SRM4>=11 -output: -BattleTech : 12[6,6]>=11 > 命中 > [4] 右腕 [10] 6点 - > 1回命中 命中箇所:右腕(1回) 6点 > 合計ダメージ 6点 -rand:6/6,6/6,5/6,5/6,2/6,2/6 -============================ -input: -SRM6>=11 -output: -BattleTech : 12[6,6]>=11 > 命中 > [12] 頭 [11] 12点 - > 1回命中 命中箇所:頭(1回) 12点 > 合計ダメージ 12点 -rand:6/6,6/6,5/6,6/6,6/6,6/6 -============================ -input: -LRM20>=11 -output: -BattleTech : 11[6,5]>=11 > 命中 > [2] 6点 [12] 頭 5点 [12] 頭 1点 - > 1回命中 命中箇所:頭(2回) 6点 > 合計ダメージ 6点 -rand:6/6,5/6,1/6,1/6,6/6,6/6,6/6,6/6 -============================ -input: -LRM20>=11 -output: -BattleTech : 11[6,5]>=11 > 命中 > [10] 16点 [2] 胴中央(致命的命中) 5点 > [12] その部位が吹き飛ぶ(腕、脚、頭)または3箇所の致命的命中(胴) [2] 胴中央(致命的命中) 5点 > [9] 1箇所の致命的命中 [11] 左腕 5点 [3] 右腕 1点 - > 1回命中 命中箇所:胴中央(2回) 10点 その部位が吹き飛ぶ(腕、脚、頭)または3箇所の致命的命中(胴) 1箇所の致命的命中 / 右腕(1回) 1点 / 左腕(1回) 5点 > 合計ダメージ 16点 -rand:6/6,5/6,5/6,5/6,1/6,1/6,6/6,6/6,1/6,1/6,5/6,4/6,5/6,6/6,1/6,2/6 -============================ -input: -LRM6>=11 -output: -rand:6/6,5/6 -============================ -input: -LRM5LU>=11 -output: -BattleTech : 11[6,5]>=11 > 命中 > [8] 3点 [4] 左腕 3点 - > 1回命中 命中箇所:左腕(1回) 3点 > 合計ダメージ 3点 -rand:6/6,5/6,5/6,3/6,4/6 -============================ -input: -LRM5cu>=11 -output: -BattleTech : 11[6,5]>=11 > 命中 > [7] 3点 [4] 右胴 3点 - > 1回命中 命中箇所:右胴(1回) 3点 > 合計ダメージ 3点 -rand:6/6,5/6,4/6,3/6,4/6 -============================ -input: -LRM5rU>=11 -output: -BattleTech : 11[6,5]>=11 > 命中 > [8] 3点 [4] 右腕 3点 - > 1回命中 命中箇所:右腕(1回) 3点 > 合計ダメージ 3点 -rand:6/6,5/6,5/6,3/6,4/6 -============================ -input: -LRM5Cl>=11 -output: -BattleTech : 11[6,5]>=11 > 命中 > [7] 3点 [4] 左脚 3点 - > 1回命中 命中箇所:左脚(1回) 3点 > 合計ダメージ 3点 -rand:6/6,5/6,4/6,3/6,4/6 -============================ -input: -LRM5rl>=11 -output: -BattleTech : 11[6,5]>=11 > 命中 > [5] 3点 [4] 右脚 3点 - > 1回命中 命中箇所:右脚(1回) 3点 > 合計ダメージ 3点 -rand:6/6,5/6,2/6,3/6,4/6 -============================ -input: -BT9>=99 -output: -BattleTech : 11[6,5]>=99 > 外れ - > 0回命中 -rand:6/6,5/6 -============================ -input: -CT -output: -BattleTech : 致命的命中表(5) > 致命的命中はなかった -rand:4/6,1/6 -============================ -input: -CT -output: -BattleTech : 致命的命中表(8) > 1箇所の致命的命中 -rand:6/6,2/6 -============================ -input: -CT -output: -BattleTech : 致命的命中表(10) > 2箇所の致命的命中 -rand:6/6,4/6 -============================ -input: -CT -output: -BattleTech : 致命的命中表(12) > その部位が吹き飛ぶ(腕、脚、頭)または3箇所の致命的命中(胴) -rand:6/6,6/6 -============================ -input: -DW -output: -BattleTech : 転倒後の向き表(6) > 1ヘクスサイド左(側面から転倒) 左側面 -rand:6/6 -============================ -input: -CD6 -output: -BattleTech : 死亡 -rand: -============================ -input: -CD3 -output: -BattleTech : 7[5,2]>=7 > 成功 -rand:5/6,2/6 diff --git a/src/src_bcdice/test/data/BeastBindTrinity.txt b/src/src_bcdice/test/data/BeastBindTrinity.txt deleted file mode 100644 index 8e43b3e40..000000000 --- a/src/src_bcdice/test/data/BeastBindTrinity.txt +++ /dev/null @@ -1,270 +0,0 @@ -input: -2BB+5 -output: -BeastBindTrinity : (2BB+5@12#2) > 11[5,6]+5 > 16 -rand:6/6,5/6 -============================ -input: -2BB+5>=16 -output: -BeastBindTrinity : (2BB+5@12#2>=16) > 11[5,6]+5 > 16 > 成功 -rand:5/6,6/6 -============================ -input: -2BB+5>=17 -output: -BeastBindTrinity : (2BB+5@12#2>=17) > 11[5,6]+5 > 16 > 失敗 -rand:5/6,6/6 -============================ -input: -2BB+5@11#5 -output: -BeastBindTrinity : (2BB+5@11#5) > 11[5,6]+5+20 > クリティカル > 36 -rand:5/6,6/6 -============================ -input: -2BB+5@11#5>=36 -output: -BeastBindTrinity : (2BB+5@11#5>=36) > 11[5,6]+5+20 > クリティカル > 36 > 成功 -rand:5/6,6/6 -============================ -input: -2BB+5@11#5>=37 -output: -BeastBindTrinity : (2BB+5@11#5>=37) > 11[5,6]+5+20 > クリティカル > 36 > 失敗 -rand:5/6,6/6 -============================ -input: -2BB+5@11#6 -output: -BeastBindTrinity : (2BB+5@11#6) > 6[1,5]+5 > ファンブル > 0 -rand:5/6,1/6 -============================ -input: -2BB+5@11#6>=1 -output: -BeastBindTrinity : (2BB+5@11#6>=1) > 6[1,5]+5 > ファンブル > 0 > 失敗 -rand:5/6,1/6 -============================ -input: -2BB+5%41 -output: -BeastBindTrinity : (2BB+5@12#2) > 6[1,5]+5 > 11 -rand:5/6,1/6 -============================ -input: -2BB+5%41>=30 -output: -BeastBindTrinity : (2BB+5@12#2>=30) > 11[5,6]+5 > 16 > 失敗 -rand:5/6,6/6 -============================ -input: -2BB+5%41>=30 -output: -BeastBindTrinity : (2BB+5@12#2>=30) > 12[6,6]+5+20 > クリティカル > 37 > 成功 -rand:6/6,6/6 -============================ -input: -2BB+5%21>=30 -output: -BeastBindTrinity : (2BB+5@11#2>=30) > 12[6,6]+5+20 > クリティカル > 37 > 成功 -rand:6/6,6/6 -============================ -input: -2BB+5%21>=30 -output: -BeastBindTrinity : (2BB+5@11#2>=30) > 11[5,6]+5+20 > クリティカル > 36 > 成功 -rand:5/6,6/6 -============================ -input: -2BB+5%21>=30 -output: -BeastBindTrinity : (2BB+5@11#2>=30) > 10[4,6]+5 > 15 > 失敗 -rand:4/6,6/6 -============================ -input: -2BB+5%1>=30 -output: -BeastBindTrinity : (2BB+5@10#2>=30) > 11[5,6]+5+20 > クリティカル > 36 > 成功 -rand:5/6,6/6 -============================ -input: -2BB+5%1>=30 -output: -BeastBindTrinity : (2BB+5@10#2>=30) > 10[4,6]+5+20 > クリティカル > 35 > 成功 -rand:4/6,6/6 -============================ -input: -2BB+5%1>=30 -output: -BeastBindTrinity : (2BB+5@10#2>=30) > 9[4,5]+5 > 14 > 失敗 -rand:4/6,5/6 -============================ -input: -2BB+5%-1>=30 -output: -BeastBindTrinity : (2BB+5@9#2>=30) > 10[4,6]+5+20 > クリティカル > 35 > 成功 -rand:4/6,6/6 -============================ -input: -2BB+5%-1>=30 -output: -BeastBindTrinity : (2BB+5@9#2>=30) > 9[4,5]+5+20 > クリティカル > 34 > 成功 -rand:4/6,5/6 -============================ -input: -2BB+5%1@9>=30 -output: -BeastBindTrinity : (2BB+5@9#2>=30) > 9[4,5]+5+20 > クリティカル > 34 > 成功 -rand:4/6,5/6 -============================ -input: -2BB+5%12$56 -output: -BeastBindTrinity : (2BB+5@10#2) > 11[5,6]+5+20 > クリティカル > 36 -rand: -============================ -input: -2BB+5$2 -output: -BeastBindTrinity : (2BB+5@12#2) > 7[2,5]+5 > 12 -rand:5/6 -============================ -input: -EMO -output: -BeastBindTrinity : 邂逅表(11) > 家族 -rand:1/6,1/6 -============================ -input: -2BB+5@-1 -output: -BeastBindTrinity : (2BB+5@11#2) > 10[4,6]+5 > 15 -rand:4/6,6/6 -============================ -input: -2BB+5%20@-1 -output: -BeastBindTrinity : (2BB+5@9#2) > 10[4,6]+5+20 > クリティカル > 35 -rand:4/6,6/6 -============================ -input: -2BB+5%20@-1>=30 -output: -BeastBindTrinity : (2BB+5@9#2>=30) > 10[4,6]+5+20 > クリティカル > 35 > 成功 -rand:4/6,6/6 -============================ -input: -2BB+5@-1-2 -output: -BeastBindTrinity : (2BB+5@9#2) > 10[4,6]+5+20 > クリティカル > 35 -rand:4/6,6/6 -============================ -input: -2BB+5%-5@+2#+2 -output: -BeastBindTrinity : (2BB+5@11#4) > 10[4,6]+5 > 15 -rand:4/6,6/6 -============================ -input: -2BB+5#A6 -output: -BeastBindTrinity : (2BB+5@12#6) > 6[1,5]+5 > ファンブル > 11 -rand:5/6,1/6 -============================ -input: -2BB+5#A+6 -output: -BeastBindTrinity : (2BB+5@12#8) > 6[1,5]+5 > ファンブル > 11 -rand:5/6,1/6 -============================ -input: -2BB+5&3 -output: -BeastBindTrinity : (2BB+5@12#2) > [1,1] > 6[3,3]+5 > 11 -rand:1/6,1/6 -============================ -input: -1BB -output: -BeastBindTrinity : (1BB@12#2) > 3[3] > 3 -rand:3/6 -============================ -input: -1BB+3 -output: -BeastBindTrinity : (1BB+3@12#2) > 3[3]+3 > 6 -rand:3/6 -============================ -input: -1BB&3 -output: -BeastBindTrinity : (1BB@12#2) > [1] > 3[3] > 3 -rand:1/6 -============================ -input: -2BB+5%20@+3 -output: -BeastBindTrinity : (2BB+5@12#2) > 11[5,6]+5 > 16 -rand:5/6,6/6 -============================ -input: -2BB+5%20@13 -output: -BeastBindTrinity : (2BB+5@13#2) > 12[6,6]+5 > 17 -rand:6/6,6/6 -============================ -input: -2BB6+5@11#5 -output: -BeastBindTrinity : (2BB+5@11#5) > 11[5,6]+5+20 > クリティカル > 36 -rand:5/6,6/6 -============================ -input: -2R6+5@11#5 -output: -BeastBindTrinity : (2BB+5@11#5) > 11[5,6]+5+20 > クリティカル > 36 -rand:5/6,6/6 -============================ -input: -EXPO_A -output: -BeastBindTrinity : 暴露表(1) > 噂になるがすぐ忘れられる -rand:1/6 -============================ -input: -EXPO_B -output: -BeastBindTrinity : 魔獣化暴露表(2) > シナリオ中[迫害状態]になる -rand:2/6 -============================ -input: -EXPO_I -output: -BeastBindTrinity : アイドル専用暴露表(4) > 所属事務所に2D6時間説教される -rand:4/6 -============================ -input: -EXPO_J -output: -BeastBindTrinity : アイドル専用魔獣化暴露表(6) > 1D6本のレギュラー番組を失う -rand:6/6 -============================ -input: -FACE_A -output: -BeastBindTrinity : 正体判明チャートA(1) > あなたを受け入れてくれる -rand:1/6 -============================ -input: -FACE_B -output: -BeastBindTrinity : 正体判明チャートB(2) > 狂乱し攻撃してくる -rand:2/6 -============================ -input: -FACE_C -output: -BeastBindTrinity : 正体判明チャートC(4) > 絆がエゴに書き換わる -rand:4/6 -============================ diff --git a/src/src_bcdice/test/data/BeginningIdol.txt b/src/src_bcdice/test/data/BeginningIdol.txt deleted file mode 100644 index 02c85dcbc..000000000 --- a/src/src_bcdice/test/data/BeginningIdol.txt +++ /dev/null @@ -1,1296 +0,0 @@ -input: -2d6>=4 -output: -BeginningIdol : (2D6>=4) > 6[2,4] > 6 > 成功 -rand:2/6,4/6 -============================ -input: -2d6>=9 -output: -BeginningIdol : (2D6>=9) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2d6>=9 -output: -BeginningIdol : (2D6>=9) > 2[1,1] > 2 > ファンブル(変調がランダムに1つ発生し、PCは【思い出】を1つ獲得する) -rand:1/6,1/6 -============================ -input: -2d6>=9 -output: -BeginningIdol : (2D6>=9) > 12[6,6] > 12 > スペシャル!(PCは【思い出】を1つ獲得する) -rand:6/6,6/6 -============================ -input: -WT -output: -BeginningIdol : 仕事表 > [15] > パートナープレイヤーの「ファッション特徴」を活かす仕事がやって来た。 -特技 : パートナープレイヤーが修得している属性分野の特技 -rand:5/6,1/6 -============================ -input: -WT -output: -BeginningIdol : 仕事表 > [44] > オフ -rand:4/6,4/6 -============================ -input: -WT -output: -BeginningIdol : 仕事表 > [26] > 趣味の番組に出演。こんな世界があるのか……。 -特技 : 趣味分野からランダム -rand:2/6,6/6 -============================ -input: -BWT -output: -BeginningIdol : 大手芸能プロダクション仕事表 > [12] > 先輩アイドルが司会を務めるバラエティ番組に出演! どんなコーナーを任されるんだろう? -特技 : 趣味分野からランダム -rand:1/6,2/6 -============================ -input: -BWT -output: -BeginningIdol : 大手芸能プロダクション仕事表 > [66] > プロダクション内で総選挙が開始! 今回のテーマは……? -特技 : ランダム -rand:6/6,6/6 -============================ -input: -LWT -output: -BeginningIdol : 弱小芸能プロダクション仕事表 > [36] > コーラスに欠員が出たアイドルライブの穴埋めとして選ばれる。主役のキャラに合わせないと。 -特技 : 属性分野からランダム -rand:3/6,6/6 -============================ -input: -LWT -output: -BeginningIdol : 弱小芸能プロダクション仕事表 > [45] > PCたちの事務所にレポートのカメラが入る。小さいけどがんばってます! -特技 : ランダム -rand:4/6,5/6 -============================ -input: -TWT -output: -BeginningIdol : ライブシアター仕事表 > [56] > シアターの外で行う仕事をこなす。 -特技 : ランダム -rand:5/6,6/6 -============================ -input: -TWT -output: -BeginningIdol : ライブシアター仕事表 > [23] > 今回の劇、シーンプレイヤーの【背景】を元にしたノンフィクションドラマ! -特技 : 趣味分野からランダム -rand:3/6,2/6 -============================ -input: -CWT -output: -BeginningIdol : アイドル部仕事表 > [24] > メイド喫茶をすることになった。パートナープレイヤーの「好きなもの」が主なメニューだ。 -特技 : パートナープレイヤーが修得している趣味分野の特技 -rand:4/6,2/6 -============================ -input: -CWT -output: -BeginningIdol : アイドル部仕事表 > [13] > 校内イベントの司会進行をすることになった。うまく盛り上げられるかな? -特技 : 《ポップ/属性9》 -rand:1/6,3/6 -============================ -input: -PD2 -output: -BeginningIdol : パフォーマンス > [1,4] > 5 -rand:1/6,4/6 -============================ -input: -PD2 -output: -BeginningIdol : パフォーマンス > [3,3] > 【ミラクル】10 -rand:3/6,3/6 -============================ -input: -PD3 -output: -BeginningIdol : パフォーマンス > [3,3,4] > [4] > 4 -rand:3/6,3/6,4/6 -============================ -input: -PD4 -output: -BeginningIdol : パフォーマンス > [2,4,5,5] > [2,4] > 6 -rand:4/6,2/6,5/6,5/6 -============================ -input: -PD4 -output: -BeginningIdol : パフォーマンス > [2,2,2,5] > [5] > 5 -rand:2/6,2/6,5/6,2/6 -============================ -input: -PD6 -output: -BeginningIdol : パフォーマンス > [1,1,3,3,5,6] > [5,6] > 11 -rand:3/6,3/6,1/6,1/6,5/6,6/6 -============================ -input: -PD6 -output: -BeginningIdol : パフォーマンス > [1,2,3,4,5,6] > 【パーフェクトミラクル】30 -rand:2/6,1/6,5/6,3/6,6/6,4/6 -============================ -input: -AT -output: -BeginningIdol : 特技リスト > [2,7] > 《プレーン/属性7》 -rand:2/6,2/6,5/6 -============================ -input: -AT -output: -BeginningIdol : 特技リスト > [6,11] > 《北海道/出身11》 -rand:6/6,6/6,5/6 -============================ -input: -AT5 -output: -BeginningIdol : 特技リスト(趣味分野) > [8] > 《ショッピング/趣味8》 -rand:3/6,5/6 -============================ -input: -DT -output: -BeginningIdol : 衣装(チャレンジガールズ) > [34] > Travel Bag -幕間に自分の【理解度】チェック1つを外すことができる。 -rand:3/6,4/6 -============================ -input: -DT -output: -BeginningIdol : 衣装(チャレンジガールズ) > [13] > しずく -ライブフェイズ開始時に、【メンタル】が5点上昇する。 -rand:3/6,1/6 -============================ -input: -BT -output: -BeginningIdol : 変調 > [2] > 「微妙な距離感」 【理解度】が上昇しなくなる -rand:2/6 -============================ -input: -SGT -output: -BeginningIdol : アイドルスキル修得表(チャレンジガールズ) > [4] > ランダムに決定した特技が指定特技のアイドルスキル(身長分野、属性分野、出身分野が出たら振り直し) -特技リスト > [1,2] > 《~125/身長2》 > 振り直し -特技リスト > [2,2] > 《エスニック/属性2》 > 振り直し -特技リスト > [6,2] > 《沖縄/出身2》 > 振り直し -特技リスト > [4,2] > 《中二病/キャラ2》 -rand:4/6,1/6,1/6,1/6,2/6,1/6,1/6,6/6,1/6,1/6,4/6,1/6,1/6 -============================ -input: -BST -output: -BeginningIdol : 大手芸能プロダクション場所表 > [3] > 社内プール -rand:3/6 -============================ -input: -LVT -output: -BeginningIdol : 弱小芸能プロダクション会場表 > [1] > 地方のお祭り -rand:1/6 -============================ -input: -TPT -output: -BeginningIdol : ライブシアタープレッシャー種別決定表 > [2] > ライブシアターで働くスタッフ -rand:2/6 -============================ -input: -CIT -output: -BeginningIdol : アイドル部道具表 > [4] > ハンディカメラ -rand:4/6 -============================ -input: -CBT -output: -BeginningIdol : キャラ空白表(チャレンジガールズ) > [15] > お調子者 -rand:1/6,5/6 -============================ -input: -HBT -output: -BeginningIdol : 趣味空白表(チャレンジガールズ) > [24] > メール -rand:4/6,2/6 -============================ -input: -3d6>=4 -output: -BeginningIdol : (3D6>=4) > 11[1,4,6] > 11 > 成功 -rand:1/6,4/6,6/6 -============================ -input: -3d6>=9 -output: -BeginningIdol : (3D6>=9) > 5[1,2,2] > 5 > 失敗 -rand:1/6,2/6,2/6 -============================ -input: -3d6>=9 -output: -BeginningIdol : (3D6>=9) > 12[3,4,5] > 12 > スペシャル!(PCは【思い出】を1つ獲得する) -rand:4/6,5/6,3/6 -============================ -input: -3d6>=9 -output: -BeginningIdol : (3D6>=9) > 13[4,4,5] > 13 > スペシャル!(PCは【思い出】を1つ獲得する) -rand:4/6,5/6,4/6 -============================ -input: -PD3+2 -output: -BeginningIdol : パフォーマンス > [5,5,5]+2 > 【ミラクル】12 -rand:5/6,5/6,5/6 -============================ -input: -PD3+0 -output: -BeginningIdol : パフォーマンス > [3,3,4] > [4] > 4 -rand:3/6,3/6,4/6 -============================ -input: -PD4-6 -output: -BeginningIdol : パフォーマンス > [2,2,2,5]-6 > [5]-6 > -1 -rand:2/6,2/6,5/6,2/6 -============================ -input: -PD6+3 -output: -BeginningIdol : パフォーマンス > [1,2,3,4,5,6]+3 > 【パーフェクトミラクル】33 -rand:2/6,1/6,5/6,3/6,6/6,4/6 -============================ -input: -246PD2 -output: -BeginningIdol : シンフォニー > [1,5],[2,4,6] > [1,2,4,5,6] > 18 -rand:5/6,1/6 -============================ -input: -15PD3 -output: -BeginningIdol : シンフォニー > [1,5,5],[1,5] > 【ミラクルシンクロ】15+シンフォニーを行った人数 -rand:5/6,5/6,1/6 -============================ -input: -145PD3-4 -output: -BeginningIdol : シンフォニー > [1,4,5],[1,4,5]-4 > 【ミラクルシンクロ】11+シンフォニーを行った人数 -rand:4/6,5/6,1/6 -============================ -input: -67PD6 -output: -BeginningIdol : シンフォニー > [2,2,3,4,4,5],[6,7] > [3,5,6,7] > 21 -rand:4/6,4/6,2/6,3/6,5/6,2/6 -============================ -input: -75127PD3 -output: -BeginningIdol : シンフォニー > [3,4,6],[1,2,5,7,7] > [1,2,3,4,5,6] > 【パーフェクトミラクル】30 -rand:4/6,3/6,6/6 -============================ -input: -5213PD2+1 -output: -BeginningIdol : シンフォニー > [4,6],[1,2,3,5]+1 > [1,2,3,4,5,6]+1 > 【パーフェクトミラクル】31 -rand:4/6,6/6 -============================ -input: -75127PD3-0 -output: -BeginningIdol : シンフォニー > [3,4,6],[1,2,5,7,7] > [1,2,3,4,5,6] > 【パーフェクトミラクル】30 -rand:4/6,3/6,6/6 -============================ -input: -HW -output: -BeginningIdol : 向かい風シーン表 > [1] > 誰もいない屋内。静寂が世界を包んでいる。嵐の前の静けさだ。 -rand:1/6 -============================ -input: -LO -output: -BeginningIdol : 地方アイドル仕事表 > [13] > 握手会をすることになった。遠方から自分たち目当てにやって来るお客さんも多数見える。チャンスが5以下ならオフ。 -特技 : 《アイドル/趣味12》 -rand:1/6,3/6 -============================ -input: -LO3 -output: -BeginningIdol : 地方アイドル仕事表 > [15] > オフ -rand:5/6,1/6 -============================ -input: -LO5 -output: -BeginningIdol : 地方アイドル仕事表 > [14] > ミニコンサートが全国放送で小さく紹介される。ちょっとだけ、外見が注目されたみたいだ。 -特技 : 《スタイル/才能3》 -rand:4/6,1/6 -============================ -input: -SU -output: -BeginningIdol : 情熱の夏仕事表 > [46] > 夏の旅行番組。夏ならではの、地元の強みを伝えることに。 -特技 : シーンプレイヤーが修得している出身分野の特技 -rand:6/6,4/6 -============================ -input: -SU -output: -BeginningIdol : 情熱の夏仕事表 > [33] > オフ -rand:3/6,3/6 -============================ -input: -WI -output: -BeginningIdol : ぬくもりの冬仕事表 > [45] > 冬のグルメ特集。鍋の作り方を教えます。 -特技 : 《料理/趣味6》 -rand:4/6,5/6 -============================ -input: -WI -output: -BeginningIdol : ぬくもりの冬仕事表 > [14] > 苦い失恋をテーマにしたコマーシャルムービーを撮ることになった。クールに決めよう。 -特技 : 《クール/属性11》 -rand:1/6,4/6 -============================ -input: -NA -output: -BeginningIdol : 大自然仕事表 > [24] > 森で鬼ごっこをすることになった。相手の動きを読めば勝てる! -特技 : パートナープレイヤーが修得している身長分野の特技 -rand:4/6,2/6 -============================ -input: -NA -output: -BeginningIdol : 大自然仕事表 > [56] > ドラム缶風呂を用意することに。……熱いんだけど! -特技 : 《バーニング/属性10》 -rand:5/6,6/6 -============================ -input: -VA -output: -BeginningIdol : バラエティ仕事表 > [24] > 釣り番組に出ることになったが、大物を釣るまで帰れないという。さて、動きの少ない釣りでどうやって目立つか……。 -特技 : 《キャラ分野の空白/キャラ7》 -rand:2/6,4/6 -============================ -input: -VA -output: -BeginningIdol : バラエティ仕事表 > [46] > シチュエーションコントに出演。大げさな演技が求められる。 -特技 : 《演技力/才能12》 -rand:6/6,4/6 -============================ -input: -MU -output: -BeginningIdol : 音楽関係仕事表 > [11] > オフ -rand:1/6,1/6 -============================ -input: -MU -output: -BeginningIdol : 音楽関係仕事表 > [34] > 子供向けの歌を作ることになった。視線を子供に近づけないと。 -特技 : 《~125/身長2》 -rand:4/6,3/6 -============================ -input: -DR -output: -BeginningIdol : ドラマ関係仕事表 > [24] > 学園ドラマに悩める生徒役で出演。青春らしさをどこまで見せようか。 -特技 : 《中二病/キャラ2》 -rand:4/6,2/6 -============================ -input: -DR -output: -BeginningIdol : ドラマ関係仕事表 > [36] > パートナープレイヤーの【背景】を再現したミニドラマを撮るようだ。彼の過去をどう表現したものか。 -特技 : パートナープレイヤーの修得している属性分野の特技 -rand:6/6,3/6 -============================ -input: -VI -output: -BeginningIdol : ビジュアル関係仕事表 > [56] > パートナープレイヤーを宣材用の撮影向けにコーディネートすることになった。さて、どうしてやろうか。 -特技 : パートナープレイヤーが修得している身長分野の特技 -rand:5/6,6/6 -============================ -input: -VI -output: -BeginningIdol : ビジュアル関係仕事表 > [14] > 地方ごとのファッションを取り入れるファッションショーが開幕。出演することに。 -特技 : 出身分野からランダム -rand:1/6,4/6 -============================ -input: -SP -output: -BeginningIdol : スポーツ仕事表 > [16] > オフ -rand:6/6,1/6 -============================ -input: -SP -output: -BeginningIdol : スポーツ仕事表 > [55] > 近々開催される大会の応援団長を任された。出場する選手たちにエールを送ろう! -特技 : 《元気/キャラ8》 -rand:5/6,5/6 -============================ -input: -CHR -output: -BeginningIdol : クリスマス仕事表 > [34] > トークバラエティのクリスマス特番に呼ばれて収録を始める。本日のテーマは、「恋」について。 -特技 : 《軟派/キャラ5》 -rand:3/6,4/6 -============================ -input: -CHR -output: -BeginningIdol : クリスマス仕事表 > [46] > サンタクロースの格好をして、街でイベントをすることに。異国っぽさをうまく出せるかな? -特技 : 《海外/出身12》 -rand:6/6,4/6 -============================ -input: -PAR -output: -BeginningIdol : パートナー関係仕事表 > [33] > パートナープレイヤーの個性特技に関する仕事がやって来る。合わせてみよう。 -特技 : パートナープレイヤーの個性特技 -rand:3/6,3/6 -============================ -input: -PAR -output: -BeginningIdol : パートナー関係仕事表 > [45] > パートナープレイヤーが修得している趣味分野の特技に関する仕事がやって来る。 -特技 : パートナープレイヤーが修得している趣味分野の特技 -rand:4/6,5/6 -============================ -input: -LUR -output: -BeginningIdol : 地方アイドル無茶ぶり表 > [2,4] > マスコットキャラクターと水着で宣伝 -rand:2/6,4/6 -============================ -input: -LUR -output: -BeginningIdol : 地方アイドル無茶ぶり表 > [1,1] > 地元の商店街で愛について叫ぶ -rand:1/6,1/6 -============================ -input: -SUR -output: -BeginningIdol : 情熱の夏無茶ぶり表 > [3,2] > あの有名アイドルの前でナンパ -rand:3/6,2/6 -============================ -input: -SUR -output: -BeginningIdol : 情熱の夏無茶ぶり表 > [6,1] > 一般客の前でかき氷いっき食い -rand:6/6,1/6 -============================ -input: -WUR -output: -BeginningIdol : ぬくもりの冬無茶ぶり表 > [2,5] > 子供たちの前でサンタのコスプレ -rand:2/6,5/6 -============================ -input: -WUR -output: -BeginningIdol : ぬくもりの冬無茶ぶり表 > [4,1] > 雪が降り始めた街で雪かき -rand:4/6,1/6 -============================ -input: -NUR -output: -BeginningIdol : 大自然無茶ぶり表 > [2,4] > クワを持って大物を釣る -rand:2/6,4/6 -============================ -input: -NUR -output: -BeginningIdol : 大自然無茶ぶり表 > [6,6] > 命綱をつけて崖を登る -rand:6/6,6/6 -============================ -input: -BT3 -output: -BeginningIdol : 変調 > [3,3,3] > 「ガラスの心」 PCのファンブル値が1点上昇する -rand:3/6,3/6,3/6 -============================ -input: -BT5 -output: -BeginningIdol : 変調 > [1,1,4,4,5] > 以下の3つが発生する。 -「不穏な空気」 PCの【メンタル】が減少するとき、減少する数値が1点上昇する -「怪我」 幕間のとき、プロデューサーは「回想」しか行えない -「信じきれない」 PC全員の【理解度】を1点低いものとして扱う -rand:5/6,1/6,4/6,4/6,1/6 -============================ -input: -SGT -output: -BeginningIdol : アイドルスキル修得表(チャレンジガールズ) > [1] > シーンプレイヤーが修得している才能分野の特技が指定特技のアイドルスキル -rand:1/6 -============================ -input: -RS -output: -BeginningIdol : アイドルスキル修得表(ロードトゥプリンス) > [5] > 《メンタルディフェンス》《判定アップ》《個性アップ》のうちいずれか1つ -rand:5/6 -============================ -input: -RS -output: -BeginningIdol : アイドルスキル修得表(ロードトゥプリンス) > [4] > ランダムに決定した特技が指定特技のアイドルスキル(身長分野、才能分野、出身分野が出たら振り直し) -特技リスト > [6,2] > 《沖縄/出身2》 > 振り直し -特技リスト > [3,2] > 《異国文化/才能2》 > 振り直し -特技リスト > [1,2] > 《~125/身長2》 > 振り直し -特技リスト > [2,2] > 《エスニック/属性2》 -rand:4/6,6/6,1/6,1/6,3/6,1/6,1/6,1/6,1/6,1/6,2/6,1/6,1/6 -============================ -input: -SH -output: -BeginningIdol : ショッピングモール散策表 > [55] > CDコーナーを探しているうちに、迷ってしまった。さて、ここはどこだろう? -変調 > [6] > 「すれ違い」 PCはアイテムの使用と、リザルトフェイズに「おねがい」をすることができなくなる -rand:5/6,5/6,6/6 -============================ -input: -SH -output: -BeginningIdol : ショッピングモール散策表 > [22] > 特売品を買い漁る。さて、使えるものかな? -シーンプレイヤーとパートナープレイヤーは、アイテムをランダムに二つ獲得する。 -rand:2/6,2/6 -============================ -input: -MO -output: -BeginningIdol : 山散策表 > [26] > 山奥にある神社まで登って、お祈りをする。無事にライブが成功しますように。 -シーンプレイヤーとパートナープレイヤーの【合宿ポイント】が5点上昇する。 -rand:2/6,6/6 -============================ -input: -MO -output: -BeginningIdol : 山散策表 > [22] > 山で迷った。 -変調 > [2,2] > 「微妙な距離感」 【理解度】が上昇しなくなる -rand:2/6,2/6,2/6,2/6 -============================ -input: -SEA -output: -BeginningIdol : 海散策表 > [46] > 水族館のイルカショーから、新しい技のヒントをもらう。 -シーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。 -rand:4/6,6/6 -============================ -input: -SEA -output: -BeginningIdol : 海散策表 > [55] > 海で遊んでいたら、溺れかける。 -変調 > [1,3,4] > 以下の3つが発生する。 -「不穏な空気」 PCの【メンタル】が減少するとき、減少する数値が1点上昇する -「ガラスの心」 PCのファンブル値が1点上昇する -「怪我」 幕間のとき、プロデューサーは「回想」しか行えない -rand:5/6,5/6,1/6,4/6,3/6 -============================ -input: -SPA -output: -BeginningIdol : 温泉街散策表 > [36] > お風呂の後の牛乳もうまい! -シーンプレイヤーとパートナープレイヤーは、アイテム「スナミナドリンク」を一つ獲得する。 -rand:3/6,6/6 -============================ -input: -SPA -output: -BeginningIdol : 温泉街散策表 > [13] > お土産屋さんで、色々なものを買い込む。しかし、これは役に立つのだろうか。 -シーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。 -rand:1/6,3/6 -============================ -input: -TN -output: -BeginningIdol : 夜語りシチュエーション表 > [4] > 「嫌いなもの」から逃げてきて、二人きりになってしまった。 -特技リスト > [6,8] > 《関東地方/出身8》 -rand:4/6,6/6,4/6,4/6 -============================ -input: -TN -output: -BeginningIdol : 夜語りシチュエーション表 > [1] > みんなが寝静まった寝室。二人だけのお話。 -特技 : 好きな特技 -rand:1/6 -============================ -input: -CG -output: -BeginningIdol : コモン成長表 > [6] > 【獲得ファン人数】が3点上昇する。 -rand:6/6 -============================ -input: -CG -output: -BeginningIdol : コモン成長表 > [5] > アイテムをランダムに一つ獲得する。 -アイテム > [3] > ドリーミングシューズ -rand:5/6,3/6 -============================ -input: -GG -output: -BeginningIdol : ゴールド成長表 > [25] > レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。 -レアアイドルスキル修得表 > [4] > 【最強の負けず嫌い】を修得する。 -rand:5/6,2/6,4/6 -============================ -input: -GG -output: -BeginningIdol : ゴールド成長表 > [56] > アイテムをランダムに一つ獲得する。 -アイテム > [4] > キャラアイテム -rand:5/6,6/6,4/6 -============================ -input: -FL -output: -BeginningIdol : 駆け出しシーン表 > [2] > いつものたまり場。なのに、今日に限って、騒がしさがどこかに行ってしまったようだ。 -rand:2/6 -============================ -input: -LN -output: -BeginningIdol : 孤独表 > [2] > 事件がきっかけで、事務所の空気が悪くなった。嫌な雰囲気。 -変調 > [4,4,6] > 以下の2つが発生する。 -「怪我」 幕間のとき、プロデューサーは「回想」しか行えない -「すれ違い」 PCはアイテムの使用と、リザルトフェイズに「おねがい」をすることができなくなる -rand:2/6,6/6,4/6,4/6 -============================ -input: -LN -output: -BeginningIdol : 孤独表 > [5] > 誰も、話をしない。気まずさと静寂が場を包んだ。このままでは、会場の空気も悪くなる。 -【目標動員数】が二倍になる。 -rand:5/6 -============================ -input: -MS -output: -BeginningIdol : マイスキル名決定表 > [1,形容表25,情景表36,マテリアル表55] > ドキドキ+ヒート+キャンディ -rand:1/6,2/6,5/6,6/6,3/6,5/6,5/6 -============================ -input: -MS -output: -BeginningIdol : マイスキル名決定表 > [5,形容表23,情景表45,称号表1] > 1000%もしくはぴかぴか+アイドル+PCの名前 -rand:5/6,1/6,2/6,3/6,4/6,5/6 -============================ -input: -MSE -output: -BeginningIdol : マイスキル効果表 > [6] > パフォーマンスのサイコロを振った後に使用する。サイコロ1つの出目を6にすることができる。この効果は、1回のセッションに1度まで使用できる。 -rand:6/6 -============================ -input: -ST -output: -BeginningIdol : 演出表 > [1] > 見事なパフォーマンスに、人々が感動する。 -rand:1/6 -============================ -input: -FST -output: -BeginningIdol : ファンタジー演出表 > [3] > 炎の旋風が観客を燃え上がらせる。 -rand:3/6 -============================ -input: -CHO -output: -BeginningIdol : サビ表 > [23] > マジで好き/MAX -PC全員の【メンタル】が1D6点上昇。 -rand:3/6,2/6 -============================ -input: -CHO -output: -BeginningIdol : サビ表 > [45] > パーティだ/お金でも -PC全員は、アイテムを1つランダムに獲得する。 -rand:4/6,5/6 -============================ -input: -SCH -output: -BeginningIdol : 情熱の夏サビ表 > [2] > 熱いぜ! -この演目の間、PC全員のスペシャル値が1点減少。 -rand:2/6 -============================ -input: -WCH -output: -BeginningIdol : ぬくもりの冬サビ表 > [5] > 吹雪が -この演目の間、ミラクルの【パフォーマンス値】が10点上昇。 -rand:5/6 -============================ -input: -NCH -output: -BeginningIdol : 大自然サビ表 > [1] > 野生の -PC全員の【メンタル】が1D6点上昇。 -rand:1/6 -============================ -input: -IT -output: -BeginningIdol : アイテム > [5] > お菓子 -rand:5/6 -============================ -input: -IT3 -output: -BeginningIdol : アイテム > [1,1,1] > スタミナドリンク3つ -rand:1/6,1/6,1/6 -============================ -input: -IT3 -output: -BeginningIdol : アイテム > [2,3,5] > 「トレーニングウェア」と「ドリーミングシューズ」と「お菓子」 -rand:2/6,5/6,3/6 -============================ -input: -IT7 -output: -BeginningIdol : アイテム > [1,3,3,4,5,5,6] > 「スタミナドリンク」1つと「ドリーミングシューズ」2つと「キャラアイテム」1つと「お菓子」2つと「差し入れ」1つ -rand:5/6,3/6,4/6,6/6,3/6,5/6,1/6 -============================ -input: -RC -output: -BeginningIdol : 衣装(ロードトゥプリンス) > [23] > Chime -ミラクル、ミラクルシンクロ、パーフェクトミラクルが発生したとき、そのキャラクターはランダムにアイテムを1つ獲得する。 -rand:3/6,2/6 -============================ -input: -RC -output: -BeginningIdol : 衣装(ロードトゥプリンス) > [55] > Halloween Magic -後半PPによって【メンタル】が減少するとき、その値を4点減少する(最低0)。 -rand:5/6,5/6 -============================ -input: -RCB -output: -BeginningIdol : キャラ空白表(ロードトゥプリンス) > [12] > 俺様 -rand:2/6,1/6 -============================ -input: -RHB -output: -BeginningIdol : 趣味空白表(ロードトゥプリンス) > [55] > 昆虫採集 -rand:5/6,5/6 -============================ -input: -RU -output: -BeginningIdol : マスコット暴走表 > [3] > マスコットキャラクターが行方不明! プロデューサーが代わりに着ぐるみを着たけれども、負担が大きかった。 -変調「怪我」が発生する。 -rand:3/6 -============================ -input: -55C -output: -BeginningIdol : バーストタイム > 55+[1,3,3,5,5,6] > 78 > 大成功 -【獲得ファン人数】が2D6点上昇する。 -PC全員が挑戦者ではない場合、自分以外のPCを一人指名する。指名されたPCは、新たな挑戦者として、【メンタル】を減少させずに「バーストタイム」を行う。 -rand:3/6,3/6,1/6,5/6,6/6,5/6 -============================ -input: -54C -output: -BeginningIdol : バーストタイム > 54+[4,4,6,6,6] > 80 > Burst! -「バースト表」を使用する。 -rand:4/6,6/6,6/6,4/6,6/6 -============================ -input: -48C -output: -BeginningIdol : バーストタイム > 48+[5,6,6] > 65 > 成功 -【獲得ファン人数】が2D6点上昇する。 -rand:6/6,5/6,6/6 -============================ -input: -50C -output: -BeginningIdol : バーストタイム > 50+[1,4,4,5] > 64 > 失敗 -rand:5/6,4/6,4/6,1/6 -============================ -input: -BU -output: -BeginningIdol : バースト表 > [2] > 慌てて浴槽から出ようとしたが、足を滑らせて浴槽に落ちる。ウケたはいいが、とても熱い。 -【メンタル】が1D6点減少し、【獲得ファン人数】が3D6点上昇する。 -rand:2/6 -============================ -input: -BVT -output: -BeginningIdol : 大手芸能プロダクション会場表 > [5] > ショッピングセンター -rand:5/6 -============================ -input: -TVT -output: -BeginningIdol : ライブシアター会場表 > [4] > ライブシアター -rand:4/6 -============================ -input: -CVT -output: -BeginningIdol : アイドル部会場表 > [6] > 学園アイドル大会 -rand:6/6 -============================ -input: -LST -output: -BeginningIdol : 弱小芸能プロダクション場所表 > [1] > 給湯室 -rand:1/6 -============================ -input: -TST -output: -BeginningIdol : ライブシアター場所表 > [3] > 売店 -rand:3/6 -============================ -input: -CST -output: -BeginningIdol : アイドル部場所表 > [2] > 音楽室 -rand:2/6 -============================ -input: -BPT -output: -BeginningIdol : 大手芸能プロダクションプレッシャー種別決定表 > [1] > 先輩アイドルたちの期待 -rand:1/6 -============================ -input: -LPT -output: -BeginningIdol : 弱小芸能プロダクションプレッシャー種別決定表 > [5] > 新曲を提供したミュージシャン -rand:5/6 -============================ -input: -CPT -output: -BeginningIdol : アイドル部プレッシャー種別決定表 > [4] > PCの親 -rand:4/6 -============================ -input: -BIT -output: -BeginningIdol : 大手芸能プロダクション道具表 > [6] > 台本 -rand:6/6 -============================ -input: -LIT -output: -BeginningIdol : 弱小芸能プロダクション道具表 > [2] > 冷蔵庫 -rand:2/6 -============================ -input: -TIT -output: -BeginningIdol : ライブシアター道具表 > [1] > 舞台の照明 -rand:1/6 -============================ -input: -BWt -output: -BeginningIdol : 大手芸能プロダクション仕事表 > [26] > プロダクションの超大御所が出演する番組に呼ばれる。 -特技 : 《胆力/才能5》 -rand:2/6,6/6 -============================ -input: -lO -output: -BeginningIdol : 地方アイドル仕事表 > [13] > 握手会をすることになった。遠方から自分たち目当てにやって来るお客さんも多数見える。チャンスが5以下ならオフ。 -特技 : 《アイドル/趣味12》 -rand:1/6,3/6 -============================ -input: -dr -output: -BeginningIdol : ドラマ関係仕事表 > [24] > 学園ドラマに悩める生徒役で出演。青春らしさをどこまで見せようか。 -特技 : 《中二病/キャラ2》 -rand:4/6,2/6 -============================ -input: -PD -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -PD0 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -1PD -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -PD3+ -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -PD4- -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -1PD1+ -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -12PD2- -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -8PD6 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -8PD6+1 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -8PD6-1 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -PD6+- -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -34PD5+- -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -LO100 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -AT0 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -AT7 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -BT0 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -IT0 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -44C -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -56C -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -SPA1 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -9GG -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -WURR -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -TRS -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -GA -output: -BeginningIdol : 聖デトワール女学園仕事表 > [66] > 裏山を使った簡単なPV撮影! 山での撮影は体力が要求される。 -特技 : 《体力/才能6》 -rand:6/6,6/6 -============================ -input: -BA -output: -BeginningIdol : アカデミー仕事表 > [24] > アカデミーが製作しているドラマに出演。脇役だけど、しっかりと存在感を出していこう。 -特技 : 《演技力/才能12》 -rand:4/6,2/6 -============================ -input: -SW -output: -BeginningIdol : お菓子仕事表 > [45] > 料理番組で、市販のお菓子を使った新しいおやつの開発を任される。 -特技 : 《料理/趣味6》 -rand:5/6,4/6 -============================ -input: -AN -output: -BeginningIdol : 動物仕事表 > [15] > オフ -rand:5/6,1/6 -============================ -input: -MOV -output: -BeginningIdol : 映画仕事表 > [23] > 時代劇映画にサムライ役で出演。厚い忠義を見せよう。 -特技 : 《硬派/キャラ9》 -rand:2/6,3/6 -============================ -input: -FA -output: -BeginningIdol : ファンタジー仕事表 > [12] > オフ -rand:1/6,2/6 -============================ -input: -HA -output: -BeginningIdol : ハプニング表 > [22] > パートナープレイヤーに、地方からオファーが来た。その土地独特の文化を学んで、パートナープレイヤーに伝えよう。 -特技リスト(出身分野) > [10] > 《東北地方/出身10》 -rand:2/6,2/6,6/6,4/6 -============================ -input: -ACT -output: -BeginningIdol : アクセサリー種別決定表 > [1] > 頭アクセサリー表を使用する。 -頭アクセサリー表 > [34] > イヤリング -rand:1/6,3/6,4/6 -============================ -input: -ACT -output: -BeginningIdol : アクセサリー種別決定表 > [2] > 帽子アクセサリー表を使用する。 -帽子アクセサリー表 > [36] > キャップ -rand:2/6,6/6,3/6 -============================ -input: -ACT -output: -BeginningIdol : アクセサリー種別決定表 > [3] > 胴アクセサリー表を使用する。 -胴アクセサリー表 > [12] > カウベル -rand:3/6,2/6,1/6 -============================ -input: -ACT -output: -BeginningIdol : アクセサリー種別決定表 > [4] > 腕アクセサリー表を使用する。 -腕アクセサリー表 > [46] > ゴールドアクセサリー -rand:4/6,4/6,6/6 -============================ -input: -ACT -output: -BeginningIdol : アクセサリー種別決定表 > [5] > 足アクセサリー表を使用する。 -足アクセサリー表 > [15] > アンクル -rand:5/6,1/6,5/6 -============================ -input: -ACT -output: -BeginningIdol : アクセサリー種別決定表 > [6] > その他アクセサリー表を使用する。 -その他アクセサリー表 > [35] > 大きなリボン -rand:6/6,3/6,5/6 -============================ -input: -ACB -output: -BeginningIdol : アクセサリーブランド決定表 > [2] > 『チャレンジガールズ』の衣装ブランドからランダムに決定する。 -衣装(チャレンジガールズ) > [36] > Sweet Girl -rand:2/6,6/6,3/6 -============================ -input: -ACB -output: -BeginningIdol : アクセサリーブランド決定表 > [4] > 『ロードトゥプリンス』の衣装ブランドからランダムに決定する。 -衣装(ロードトゥプリンス) > [15] > Starlight TourS -rand:4/6,1/6,5/6 -============================ -input: -ACB -output: -BeginningIdol : アクセサリーブランド決定表 > [5] > 『フォーチュンスターズ』の衣装ブランドからランダムに決定する。 -衣装(フォーチュンスターズ) > [34] > ネイキッドチャレンジ -rand:5/6,4/6,3/6 -============================ -input: -ACE -output: -BeginningIdol : アクセサリー効果表 > [15] > このアクセサリーを装備したとき、【メンタル】が5点上昇する。この効果は、1回のセッションに1度まで使用できる。 -rand:5/6,1/6 -============================ -input: -FC -output: -BeginningIdol : 衣装(フォーチュンスターズ) > [44] > Rescue Power -演目の判定でファンブルが発生した場合、好きな能力値でパフォーマンスを行うことができる。 -rand:4/6,4/6 -============================ -input: -GUR -output: -BeginningIdol : 聖デトワール女学園無茶ぶり表 > [2,3] > 食堂でテニス -rand:2/6,3/6 -============================ -input: -BUR -output: -BeginningIdol : アカデミー無茶ぶり表 > [6,2] > 初等部でゲリラライブ -rand:6/6,2/6 -============================ -input: -1A+2 -output: -BeginningIdol : 攻撃 > [3]+2 > 5ダメージ -rand:3/6 -============================ -input: -2SA -output: -BeginningIdol : 攻撃 > [1,1] > 2ダメージ -rand:1/6,1/6 -============================ -input: -2A1-3 -output: -BeginningIdol : 攻撃 > [1,1]-3 > 0ダメージ -rand:1/6,1/6 -============================ -input: -3A2 -output: -BeginningIdol : 攻撃 > [2,2,2] > 0ダメージ -rand:2/6,2/6,2/6 -============================ -input: -4A34 -output: -BeginningIdol : 攻撃 > [2,2,3,4] > [2,2] > 失敗 -rand:4/6,3/6,2/6,2/6 -============================ -input: -4A61 -output: -BeginningIdol : 攻撃 > [1,2,3,6] > [2,3] > 5ダメージ -rand:6/6,3/6,1/6,2/6 -============================ -input: -5A5 -output: -BeginningIdol : 攻撃 > [1,2,3,4,6] > 16ダメージ -rand:6/6,1/6,3/6,4/6,2/6 -============================ -input: -8A -output: -BeginningIdol : 攻撃 > [1,2,3,3,3,4,5,6] > 失敗 -rand:5/6,3/6,3/6,2/6,3/6,4/6,1/6,6/6 -============================ -input: -SIP -output: -BeginningIdol : かんたんパーソン表 > [1] > テレビ番組に出て、ライブの宣伝をする。 -rand:1/6 -============================ -input: -RE -output: -BeginningIdol : ランダムイベント > (1D6) > 6 -オンイベント表 > [42] > ソロライブ!(『ビギニングロード』116ページ) -rand:6/6,4/6,2/6 -============================ -input: -RE -output: -BeginningIdol : ランダムイベント > (1D6) > 5 -オフイベント表 > [61] > 郊外ショッピング施設(『ビギニングロード』179ページ) -rand:5/6,6/6,1/6 -============================ -input: -GCH -output: -BeginningIdol : 女性向けサビ表 > [16] > ファッションで/おしゃれして -衣装の効果が1点上昇する。 -rand:6/6,1/6 -============================ -input: -PCH -output: -BeginningIdol : 力強いサビ表 > [46] > Let's/try -この演目の間、判定の達成値が1点上昇する。 -rand:6/6,4/6 -============================ -input: -3D6>=? 目標値?でバグらない -output: -BeginningIdol : (3D6>=?) > 9[3,3,3] > 9 > 失敗 -rand:3/6,3/6,3/6 diff --git a/src/src_bcdice/test/data/BeginningIdol_Korean.txt b/src/src_bcdice/test/data/BeginningIdol_Korean.txt deleted file mode 100644 index 0c7d76651..000000000 --- a/src/src_bcdice/test/data/BeginningIdol_Korean.txt +++ /dev/null @@ -1,1268 +0,0 @@ -input: -2d6>=4 -output: -BeginningIdol : (2D6>=4) > 6[2,4] > 6 > 성공 -rand:2/6,4/6 -============================ -input: -2d6>=9 -output: -BeginningIdol : (2D6>=9) > 3[1,2] > 3 > 실패 -rand:1/6,2/6 -============================ -input: -2d6>=9 -output: -BeginningIdol : (2D6>=9) > 2[1,1] > 2 > ファンブル(変調がランダムに1つ発生し、PCは【思い出】を1つ獲得する) -rand:1/6,1/6 -============================ -input: -2d6>=9 -output: -BeginningIdol : (2D6>=9) > 12[6,6] > 12 > 스페셜!(PC는 【추억】 1개 획득) -rand:6/6,6/6 -============================ -input: -WT -output: -BeginningIdol : 업무표 > [15] > 파트너 플레이어의 「패션 특징」을 살리는 일이 왔다. 파트너. -特技 : 파트너 플레이어가 보유한 속성분야의특기 -rand:5/6,1/6 -============================ -input: -WT -output: -BeginningIdol : 업무표 > [44] > 오프 -rand:4/6,4/6 -============================ -input: -WT -output: -BeginningIdol : 업무표 > [26] > 취미 프로그램에 출연. 이런 세계가 있는 것인가……. -特技 : 趣味分野からランダム -rand:2/6,6/6 -============================ -input: -BWT -output: -BeginningIdol : 대형 예능 프로덕션 업무표 > [12] > 선배 아이돌이 사회를 맡는 버라이어티 프로그램에 출연! 어떤 코너를 맡는지? -特技 : 趣味分野からランダム -rand:1/6,2/6 -============================ -input: -BWT -output: -BeginningIdol : 대형 예능 프로덕션 업무표 > [66] > プロダクション内で総選挙が開始! 今回のテーマは……? -特技 : ランダム -rand:6/6,6/6 -============================ -input: -LWT -output: -BeginningIdol : 약소 예능 프로덕션 업무표 > [36] > 코러스에서 결원이 나온 아이돌 라이브의 보충으로서 선택된다. 주역에게 맞추지 않으면. -特技 : 属性分野からランダム -rand:3/6,6/6 -============================ -input: -LWT -output: -BeginningIdol : 약소 예능 프로덕션 업무표 > [45] > PC들의 사무소에 리포트 카메라가 들어간다. 작은 곳이지만 힘내고 있습니다! -特技 : ランダム -rand:4/6,5/6 -============================ -input: -TWT -output: -BeginningIdol : 라이브 시어터 업무표 > [56] > 극장 밖에서 실시하는 일을 해낸다. -特技 : ランダム -rand:5/6,6/6 -============================ -input: -TWT -output: -BeginningIdol : 라이브 시어터 업무표 > [23] > 이번 극은 씬 플레이어의 【배경】을 바탕으로 한 논픽션 드라마! -特技 : 趣味分野からランダム -rand:3/6,2/6 -============================ -input: -CWT -output: -BeginningIdol : 아이돌 부 업무표 > [24] > 메이드 카페를 하게 되었다. 파트너 플레이어의 「좋아하는 것」이 주된 메뉴다. -特技 : 파트너 플레이어가 보유한 취미분야의특기 -rand:4/6,2/6 -============================ -input: -CWT -output: -BeginningIdol : 아이돌 부 업무표 > [13] > 교내 이벤트의 사회 진행을 하게 되었다. 잘 분위기를 북돋울 수 있을까? -特技 : 《팝/속성9》 -rand:1/6,3/6 -============================ -input: -PD2 -output: -BeginningIdol : パフォーマンス > [1,4] > 5 -rand:1/6,4/6 -============================ -input: -PD2 -output: -BeginningIdol : パフォーマンス > [3,3] > 【ミラクル】10 -rand:3/6,3/6 -============================ -input: -PD3 -output: -BeginningIdol : パフォーマンス > [3,3,4] > [4] > 4 -rand:3/6,3/6,4/6 -============================ -input: -PD4 -output: -BeginningIdol : パフォーマンス > [2,4,5,5] > [2,4] > 6 -rand:4/6,2/6,5/6,5/6 -============================ -input: -PD4 -output: -BeginningIdol : パフォーマンス > [2,2,2,5] > [5] > 5 -rand:2/6,2/6,5/6,2/6 -============================ -input: -PD6 -output: -BeginningIdol : パフォーマンス > [1,1,3,3,5,6] > [5,6] > 11 -rand:3/6,3/6,1/6,1/6,5/6,6/6 -============================ -input: -PD6 -output: -BeginningIdol : パフォーマンス > [1,2,3,4,5,6] > 【パーフェクトミラクル】30 -rand:2/6,1/6,5/6,3/6,6/6,4/6 -============================ -input: -AT -output: -BeginningIdol : 特技リスト > [2,7] > 《플레인/속성7》 -rand:2/6,2/6,5/6 -============================ -input: -AT -output: -BeginningIdol : 特技リスト > [6,11] > 《훗카이도/출신11》 -rand:6/6,6/6,5/6 -============================ -input: -AT5 -output: -BeginningIdol : 特技リスト(취미분야) > [8] > 《쇼핑/취미8》 -rand:3/6,5/6 -============================ -input: -DT -output: -BeginningIdol : 의상(챌린지 걸즈) > [34] > Travel Bag -막간에 자신의 【이해도】 체크 1개를 해제할 수 있다. -rand:3/6,4/6 -============================ -input: -DT -output: -BeginningIdol : 의상(챌린지 걸즈) > [13] > 시즈쿠 -라이브페이즈 개시 시 【멘탈】이 5점 상승한다. -rand:3/6,1/6 -============================ -input: -BT -output: -BeginningIdol : 변조 > [2] > 「미묘한 거리감」 【이해도】가 상승하지 않게 된다. -rand:2/6 -============================ -input: -SGT -output: -BeginningIdol : 아이돌 스킬 습득표(챌린지 걸즈) > [4] > 랜덤으로 지정한 특기가 지정 특기인 아이돌 스킬(신장분야、속성분야、출신분야가 나올경우 재굴림) -特技リスト > [1,2] > 《~125/신장2》 > 振り直し -特技リスト > [2,2] > 《에스닉/속성2》 > 振り直し -特技リスト > [6,2] > 《오키나와/출신2》 > 振り直し -特技リスト > [4,2] > 《중2병/캐릭터2》 -rand:4/6,1/6,1/6,1/6,2/6,1/6,1/6,6/6,1/6,1/6,4/6,1/6,1/6 -============================ -input: -BST -output: -BeginningIdol : 대형 예능 프로덕션 장소표 > [3] > 사내 풀 -rand:3/6 -============================ -input: -LVT -output: -BeginningIdol : 약소 예능 프로덕션 회장표 > [1] > 지방 축제 -rand:1/6 -============================ -input: -TPT -output: -BeginningIdol : 라이브 시어터 프레셔 종류 결정표 > [2] > 라이브 시어터에서 일하는 스텝 -rand:2/6 -============================ -input: -CIT -output: -BeginningIdol : 아이돌 부 도구표 > [4] > 핸드 카메라 -rand:4/6 -============================ -input: -CBT -output: -BeginningIdol : 캐릭터공백표(챌린지 걸즈) > [15] > 경박함 -rand:1/6,5/6 -============================ -input: -HBT -output: -BeginningIdol : 취미공백표(챌린지 걸즈) > [24] > 산책 -rand:4/6,2/6 -============================ -input: -3d6>=4 -output: -BeginningIdol : (3D6>=4) > 11[1,4,6] > 11 > 성공 -rand:1/6,4/6,6/6 -============================ -input: -3d6>=9 -output: -BeginningIdol : (3D6>=9) > 5[1,2,2] > 5 > 실패 -rand:1/6,2/6,2/6 -============================ -input: -3d6>=9 -output: -BeginningIdol : (3D6>=9) > 12[3,4,5] > 12 > 스페셜!(PC는 【추억】 1개 획득) -rand:4/6,5/6,3/6 -============================ -input: -3d6>=9 -output: -BeginningIdol : (3D6>=9) > 13[4,4,5] > 13 > 스페셜!(PC는 【추억】 1개 획득) -rand:4/6,5/6,4/6 -============================ -input: -PD3+2 -output: -BeginningIdol : パフォーマンス > [5,5,5]+2 > 【ミラクル】12 -rand:5/6,5/6,5/6 -============================ -input: -PD3+0 -output: -BeginningIdol : パフォーマンス > [3,3,4] > [4] > 4 -rand:3/6,3/6,4/6 -============================ -input: -PD4-6 -output: -BeginningIdol : パフォーマンス > [2,2,2,5]-6 > [5]-6 > -1 -rand:2/6,2/6,5/6,2/6 -============================ -input: -PD6+3 -output: -BeginningIdol : パフォーマンス > [1,2,3,4,5,6]+3 > 【パーフェクトミラクル】33 -rand:2/6,1/6,5/6,3/6,6/6,4/6 -============================ -input: -246PD2 -output: -BeginningIdol : シンフォニー > [1,5],[2,4,6] > [1,2,4,5,6] > 18 -rand:5/6,1/6 -============================ -input: -15PD3 -output: -BeginningIdol : シンフォニー > [1,5,5],[1,5] > 【ミラクルシンクロ】15+シンフォニーを行った人数 -rand:5/6,5/6,1/6 -============================ -input: -145PD3-4 -output: -BeginningIdol : シンフォニー > [1,4,5],[1,4,5]-4 > 【ミラクルシンクロ】11+シンフォニーを行った人数 -rand:4/6,5/6,1/6 -============================ -input: -67PD6 -output: -BeginningIdol : シンフォニー > [2,2,3,4,4,5],[6,7] > [3,5,6,7] > 21 -rand:4/6,4/6,2/6,3/6,5/6,2/6 -============================ -input: -75127PD3 -output: -BeginningIdol : シンフォニー > [3,4,6],[1,2,5,7,7] > [1,2,3,4,5,6] > 【パーフェクトミラクル】30 -rand:4/6,3/6,6/6 -============================ -input: -5213PD2+1 -output: -BeginningIdol : シンフォニー > [4,6],[1,2,3,5]+1 > [1,2,3,4,5,6]+1 > 【パーフェクトミラクル】31 -rand:4/6,6/6 -============================ -input: -75127PD3-0 -output: -BeginningIdol : シンフォニー > [3,4,6],[1,2,5,7,7] > [1,2,3,4,5,6] > 【パーフェクトミラクル】30 -rand:4/6,3/6,6/6 -============================ -input: -HW -output: -BeginningIdol : 向かい風シーン表 > [1] > 誰もいない屋内。静寂が世界を包んでいる。嵐の前の静けさだ。 -rand:1/6 -============================ -input: -LO -output: -BeginningIdol : 로컬 아이돌 업무표 > [13] > 握手会をすることになった。遠方から自分たち目当てにやって来るお客さんも多数見える。チャンスが5以下なら오프。 -特技 : 《아이돌/취미12》 -rand:1/6,3/6 -============================ -input: -LO3 -output: -BeginningIdol : 로컬 아이돌 업무표 > [15] > 오프 -rand:5/6,1/6 -============================ -input: -LO5 -output: -BeginningIdol : 로컬 아이돌 업무표 > [14] > ミニコンサートが全国放送で小さく紹介される。ちょっとだけ、外見が注目されたみたいだ。 -特技 : 《스타일/재능3》 -rand:4/6,1/6 -============================ -input: -SU -output: -BeginningIdol : 정열의 여름 업무표 > [46] > 여름의 여행 프로그램. 여름에만 가능한 현지의 강점을 몇 가지 있을 것이다. -特技 : 씬 플레이어가 보유한 출신분야의특기 -rand:6/6,4/6 -============================ -input: -SU -output: -BeginningIdol : 정열의 여름 업무표 > [33] > 오프 -rand:3/6,3/6 -============================ -input: -WI -output: -BeginningIdol : 온기의 겨울 업무표 > [45] > 겨울의 음식 특집. 냄비요리를 만드는 방법을 가르칩니다. -特技 : 《요리/취미6》 -rand:4/6,5/6 -============================ -input: -WI -output: -BeginningIdol : 온기의 겨울 업무표 > [14] > 씁쓸한 실연을 테마로 한 커머셜 무비를 찍게 되었다. 쿨하게 가자. -特技 : 《쿨/속성11》 -rand:1/6,4/6 -============================ -input: -NA -output: -BeginningIdol : 대자연 업무표 > [24] > 숲에서 술래잡기를 하게 되었다. 상대의 움직임을 읽으면 이길 수 있다! -特技 : 파트너 플레이어가 보유한 신장분야의특기 -rand:4/6,2/6 -============================ -input: -NA -output: -BeginningIdol : 대자연 업무표 > [56] > 드럼통 욕조를 준비하자. ……뜨겁지만! -特技 : 《버닝/속성10》 -rand:5/6,6/6 -============================ -input: -VA -output: -BeginningIdol : 버라이어티 업무표 > [24] > 낚시 프로그램에 나오게 되었지만, 거물을 낚을 때까지는 돌아갈 수 없다고 한다. 그런데 움직임의 적은 낚시로 어떻게 눈에 띌까? -特技 : 《캐릭터분야의 공백/캐릭터7》 -rand:2/6,4/6 -============================ -input: -VA -output: -BeginningIdol : 버라이어티 업무표 > [46] > 시츄에이션 코너에 출현. 거창한 연기가 요구 된다. -特技 : 《연기력/재능12》 -rand:6/6,4/6 -============================ -input: -MU -output: -BeginningIdol : 음악 관련 업무표 > [11] > 오프 -rand:1/6,1/6 -============================ -input: -MU -output: -BeginningIdol : 음악 관련 업무표 > [34] > 어린이용의 노래를 만들게 되었다. 시선을 아이에게 맞추지 않으면. -特技 : 《~125/신장2》 -rand:4/6,3/6 -============================ -input: -DR -output: -BeginningIdol : 드라마 관련 업무표 > [24] > 학원 드라마에 고뇌하는 학생 역으로 출연. 청춘인 것 같음을 어디까지 보여야? -特技 : 《중2병/캐릭터2》 -rand:4/6,2/6 -============================ -input: -DR -output: -BeginningIdol : 드라마 관련 업무표 > [36] > 파트너 플레이어의 [배경]을 재현한 미니 드라마를 찍는 것 같다. 그의 과거를 어떻게 표현할 것 인가. -特技 : 파트너 플레이어가 보유한속성분야의특기 -rand:6/6,3/6 -============================ -input: -VI -output: -BeginningIdol : 비주얼 관련 업무표 > [56] > 파트너 플레이어의 선전용 촬영의 코디를 하게 되었다. 그런데 어떻게 해야? -特技 : 파트너 플레이어가 보유한 신장분야의특기 -rand:5/6,6/6 -============================ -input: -VI -output: -BeginningIdol : 비주얼 관련 업무표 > [14] > 지방마다의 패션을 도입하는 패션 쇼가 개막. 출연하게 되었다. -特技 : 出身分野からランダム -rand:1/6,4/6 -============================ -input: -SP -output: -BeginningIdol : 스포츠 업무표 > [16] > 오프 -rand:6/6,1/6 -============================ -input: -SP -output: -BeginningIdol : 스포츠 업무표 > [55] > 近々開催される大会の応援団長を任された。出場する選手たちにエールを送ろう! -特技 : 《건강/캐릭터8》 -rand:5/6,5/6 -============================ -input: -CHR -output: -BeginningIdol : クリスマス 업무표 > [34] > トークバラエティのクリスマス特番に呼ばれて収録を始める。本日のテーマは、「恋」について。 -特技 : 《유순/캐릭터5》 -rand:3/6,4/6 -============================ -input: -CHR -output: -BeginningIdol : クリスマス 업무표 > [46] > サンタクロースの格好をして、街でイベントをすることに。異国っぽさをうまく出せるかな? -特技 : 《해외/출신12》 -rand:6/6,4/6 -============================ -input: -PAR -output: -BeginningIdol : パートナー関係 업무표 > [33] > 파트너 플레이어의 개성특기に関する仕事がやって来る。合わせてみよう。 -特技 : 파트너 플레이어의 개성특기 -rand:3/6,3/6 -============================ -input: -PAR -output: -BeginningIdol : パートナー関係 업무표 > [45] > 파트너 플레이어가 보유한 취미분야의특기に関する仕事がやって来る。 -特技 : 파트너 플레이어가 보유한 취미분야의특기 -rand:4/6,5/6 -============================ -input: -LUR -output: -BeginningIdol : 로컬 아이돌 엉망진창표 > [2,4] > マスコット캐릭터クターと水着で宣伝 -rand:2/6,4/6 -============================ -input: -LUR -output: -BeginningIdol : 로컬 아이돌 엉망진창표 > [1,1] > 地元の商店街で愛について叫ぶ -rand:1/6,1/6 -============================ -input: -SUR -output: -BeginningIdol : 정열의 여름 엉망진창표 > [3,2] > 그 유명 아이돌의 앞에서헌팅 -rand:3/6,2/6 -============================ -input: -SUR -output: -BeginningIdol : 정열의 여름 엉망진창표 > [6,1] > 일반관객 앞에서빙수를 단번에 먹는다 -rand:6/6,1/6 -============================ -input: -WUR -output: -BeginningIdol : 온기의 겨울 엉망진창표 > [2,5] > 아이들 앞에서산타 코스프레 -rand:2/6,5/6 -============================ -input: -WUR -output: -BeginningIdol : 온기의 겨울 엉망진창표 > [4,1] > 눈 내리기 시작한 거리에서눈 치우기 -rand:4/6,1/6 -============================ -input: -NUR -output: -BeginningIdol : 대자연 엉망진창표 > [2,4] > 괭이를 가지고거물을 낚시한다. -rand:2/6,4/6 -============================ -input: -NUR -output: -BeginningIdol : 대자연 엉망진창표 > [6,6] > 생명 줄을 달고서벼랑을 오른다. -rand:6/6,6/6 -============================ -input: -BT3 -output: -BeginningIdol : 변조 > [3,3,3] > 「유리의 마음」 PC의 펌블치가 1점 상승한다. -rand:3/6,3/6,3/6 -============================ -input: -BT5 -output: -BeginningIdol : 변조 > [1,1,4,4,5] > 以下の3つが発生する。 -「불온한 공기」 PC의 【멘탈】이 감소할 때, 감소하는 수치가 1점 상승한다. -「부상」 막간 때, 프로듀서는 「회상」만 실시할 수 있다. -「믿지 못하는」 PC전원의 【이해도】를 1점 낮은 것으로 취급한다. -rand:5/6,1/6,4/6,4/6,1/6 -============================ -input: -SGT -output: -BeginningIdol : 아이돌 스킬 습득표(챌린지 걸즈) > [1] > 씬 플레이어가 보유한 재능분야의특기가 지정 특기인 아이돌 스킬 -rand:1/6 -============================ -input: -RS -output: -BeginningIdol : 아이돌 스킬 습득표(로드 투 프린스) > [5] > 《멘탈 디펜스》《판정 업》《개성 업》중 어느 쪽이든 1개 -rand:5/6 -============================ -input: -RS -output: -BeginningIdol : 아이돌 스킬 습득표(로드 투 프린스) > [4] > 랜덤으로 지정한 특기가 지정 특기인 아이돌 스킬(신장분야、재능분야、출신분야가 나올경우 재굴림) -特技リスト > [1,3] > 《131/신장3》 > 振り直し -特技リスト > [3,5] > 《담력/재능5》 > 振り直し -特技リスト > [1,5] > 《141/신장5》 > 振り直し -特技リスト > [4,2] > 《중2병/캐릭터2》 -rand:4/6,1/6,1/6,2/6,3/6,4/6,1/6,1/6,2/6,3/6,4/6,1/6,1/6 -============================ -input: -SH -output: -BeginningIdol : ショッピングモール散策表 > [55] > CDコーナーを探しているうちに、迷ってしまった。さて、ここはどこだろう? -변조 > [6] > 「엇갈림」 PC는 아이템 사용과 리절트 페이즈에 「부탁」을 할 수 없게 된다. -rand:5/6,5/6,6/6 -============================ -input: -SH -output: -BeginningIdol : ショッピングモール散策表 > [22] > 特売品を買い漁る。さて、使えるものかな? -シーンプレイヤーとパートナープレイヤーは、アイテムをランダムに二つ獲得する。 -rand:2/6,2/6 -============================ -input: -MO -output: -BeginningIdol : 山散策表 > [26] > 山奥にある神社まで登って、お祈りをする。無事にライブが成功しますように。 -シーンプレイヤーとパートナープレイヤーの【合宿ポイント】が5点上昇する。 -rand:2/6,6/6 -============================ -input: -MO -output: -BeginningIdol : 山散策表 > [22] > 山で迷った。 -변조 > [2,2] > 「미묘한 거리감」 【이해도】가 상승하지 않게 된다. -rand:2/6,2/6,2/6,2/6 -============================ -input: -SEA -output: -BeginningIdol : 海散策表 > [46] > 水族館のイルカショーから、新しい技のヒントをもらう。 -シーンプレイヤーとパートナープレイヤーは、アイドルスキル修得表を使ってアイドルスキルを一つ修得する。 -rand:4/6,6/6 -============================ -input: -SEA -output: -BeginningIdol : 海散策表 > [55] > 海で遊んでいたら、溺れかける。 -변조 > [1,3,4] > 以下の3つが発生する。 -「불온한 공기」 PC의 【멘탈】이 감소할 때, 감소하는 수치가 1점 상승한다. -「유리의 마음」 PC의 펌블치가 1점 상승한다. -「부상」 막간 때, 프로듀서는 「회상」만 실시할 수 있다. -rand:5/6,5/6,1/6,4/6,3/6 -============================ -input: -SPA -output: -BeginningIdol : 温泉街散策表 > [36] > お風呂の後の牛乳もうまい! -シーンプレイヤーとパートナープレイヤーは、アイテム「スナミナドリンク」を一つ獲得する。 -rand:3/6,6/6 -============================ -input: -SPA -output: -BeginningIdol : 温泉街散策表 > [13] > お土産屋さんで、色々なものを買い込む。しかし、これは役に立つのだろうか。 -シーンプレイヤーとパートナープレイヤーは、アイテムをランダムに一つ獲得する。 -rand:1/6,3/6 -============================ -input: -TN -output: -BeginningIdol : 夜語りシチュエーション表 > [4] > 「嫌いなもの」から逃げてきて、二人きりになってしまった。 -特技リスト > [6,8] > 《간토/출신8》 -rand:4/6,6/6,4/6,4/6 -============================ -input: -TN -output: -BeginningIdol : 夜語りシチュエーション表 > [1] > みんなが寝静まった寝室。二人だけのお話。 -特技 : 好きな特技 -rand:1/6 -============================ -input: -CG -output: -BeginningIdol : コモン成長表 > [6] > 【獲得ファン人数】が3点上昇する。 -rand:6/6 -============================ -input: -CG -output: -BeginningIdol : コモン成長表 > [5] > アイテムをランダムに一つ獲得する。 -アイテム > [3] > ドリーミングシューズ -rand:5/6,3/6 -============================ -input: -GG -output: -BeginningIdol : ゴールド成長表 > [25] > レアアイドルスキル修得表を使ってアイドルスキルを一つ修得する。 -レアアイドルスキル修得表 > [4] > 【最強の負けず嫌い】を修得する。 -rand:5/6,2/6,4/6 -============================ -input: -GG -output: -BeginningIdol : ゴールド成長表 > [56] > アイテムをランダムに一つ獲得する。 -アイテム > [4] > 캐릭터アイテム -rand:5/6,6/6,4/6 -============================ -input: -FL -output: -BeginningIdol : 駆け出しシーン表 > [2] > いつものたまり場。なのに、今日に限って、騒がしさがどこかに行ってしまったようだ。 -rand:2/6 -============================ -input: -LN -output: -BeginningIdol : 孤独表 > [2] > 事件がきっかけで、事務所の空気が悪くなった。嫌な雰囲気。 -변조 > [4,4,6] > 以下の2つが発生する。 -「부상」 막간 때, 프로듀서는 「회상」만 실시할 수 있다. -「엇갈림」 PC는 아이템 사용과 리절트 페이즈에 「부탁」을 할 수 없게 된다. -rand:2/6,6/6,4/6,4/6 -============================ -input: -LN -output: -BeginningIdol : 孤独表 > [5] > 誰も、話をしない。気まずさと静寂が場を包んだ。このままでは、会場の空気も悪くなる。 -【目標動員数】が二倍になる。 -rand:5/6 -============================ -input: -MS -output: -BeginningIdol : マイスキル名決定表 > [1,形容表25,情景表36,マテリアル表55] > ドキドキ+ヒート+キャンディ -rand:1/6,2/6,5/6,6/6,3/6,5/6,5/6 -============================ -input: -MS -output: -BeginningIdol : マイスキル名決定表 > [5,形容表23,情景表45,称号表1] > 1000%もしくはぴかぴか+アイドル+PCの名前 -rand:5/6,1/6,2/6,3/6,4/6,5/6 -============================ -input: -MSE -output: -BeginningIdol : マイスキル効果表 > [6] > パフォーマンスのサイコロを振った後に使用する。サイコロ1つの出目を6にすることができる。この効果は、1回のセッションに1度まで使用できる。 -rand:6/6 -============================ -input: -ST -output: -BeginningIdol : 演出表 > [1] > 見事なパフォーマンスに、人々が感動する。 -rand:1/6 -============================ -input: -FST -output: -BeginningIdol : ファンタジー演出表 > [3] > 炎の旋風が観客を燃え上がらせる。 -rand:3/6 -============================ -input: -CHO -output: -BeginningIdol : 하이라이트 표 > [23] > 정말로 좋아해 / MAX -PC 전원의 【멘탈】이 1D6점 상승.。 -rand:3/6,2/6 -============================ -input: -CHO -output: -BeginningIdol : 하이라이트 표 > [45] > 파티다 / 돈으로도 -PC전원은, 아이템을 1개 랜덤에 획득한다. -rand:4/6,5/6 -============================ -input: -SCH -output: -BeginningIdol : 정열의 여름 하이라이트 표 > [2] > 뜨거운 거야! -이 공연간에 PC전원의 스페셜치가 1점 감소. -rand:2/6 -============================ -input: -WCH -output: -BeginningIdol : 온기의 겨울 하이라이트 표 > [5] > 눈보라가 -이 공연 간, 미라클의 【퍼포먼스치】가 10점 상승. -rand:5/6 -============================ -input: -NCH -output: -BeginningIdol : 대자연 하이라이트 표 > [1] > 야생의 -전원 【멘탈】이 1D6점 상승. -rand:1/6 -============================ -input: -IT -output: -BeginningIdol : アイテム > [5] > お菓子 -rand:5/6 -============================ -input: -IT3 -output: -BeginningIdol : アイテム > [1,1,1] > スタミナドリンク3つ -rand:1/6,1/6,1/6 -============================ -input: -IT3 -output: -BeginningIdol : アイテム > [2,3,5] > 「トレーニングウェア」と「ドリーミングシューズ」と「お菓子」 -rand:2/6,5/6,3/6 -============================ -input: -IT7 -output: -BeginningIdol : アイテム > [1,3,3,4,5,5,6] > 「スタミナドリンク」1つと「ドリーミングシューズ」2つと「캐릭터アイテム」1つと「お菓子」2つと「差し入れ」1つ -rand:5/6,3/6,4/6,6/6,3/6,5/6,1/6 -============================ -input: -RC -output: -BeginningIdol : 의상(로드 투 프린스) > [23] > Chime -미러클 ・ 미라클 싱크로 ・ 퍼펙트 미라클・ 퍼펙트 미라클 싱크로가 발생했을 때, 그 캐릭터는 랜덤으로 아이템 1개를 얻는다. -rand:3/6,2/6 -============================ -input: -RC -output: -BeginningIdol : 의상(로드 투 프린스) > [55] > Halloween Magic -후반PP로 【멘탈】이 감소할 때, 그 값을 4점 감소시킨다. (최저 0) -rand:5/6,5/6 -============================ -input: -RCB -output: -BeginningIdol : 캐릭터공백표(로드 투 프린스) > [12] > 본좌 (어르신) -rand:2/6,1/6 -============================ -input: -RHB -output: -BeginningIdol : 취미공백표(로드 투 프린스) > [55] > 곤충채집 -rand:5/6,5/6 -============================ -input: -RU -output: -BeginningIdol : マスコット暴走表 > [3] > マスコット캐릭터クターが行方不明! 프로듀서가 代わりに着ぐるみを着たけれども、負担が大きかった。 -変調「怪我」が発生する。 -rand:3/6 -============================ -input: -55C -output: -BeginningIdol : バーストタイム > 55+[1,3,3,5,5,6] > 78 > 大成功 -【獲得ファン人数】が2D6点上昇する。 -PC全員が挑戦者ではない場合、自分以外のPCを一人指名する。指名されたPCは、新たな挑戦者として、【メンタル】を減少させずに「バーストタイム」を行う。 -rand:3/6,3/6,1/6,5/6,6/6,5/6 -============================ -input: -54C -output: -BeginningIdol : バーストタイム > 54+[4,4,6,6,6] > 80 > Burst! -「バースト表」を使用する。 -rand:4/6,6/6,6/6,4/6,6/6 -============================ -input: -48C -output: -BeginningIdol : バーストタイム > 48+[5,6,6] > 65 > 成功 -【獲得ファン人数】が2D6点上昇する。 -rand:6/6,5/6,6/6 -============================ -input: -50C -output: -BeginningIdol : バーストタイム > 50+[1,4,4,5] > 64 > 失敗 -rand:5/6,4/6,4/6,1/6 -============================ -input: -BU -output: -BeginningIdol : バースト表 > [2] > 慌てて浴槽から出ようとしたが、足を滑らせて浴槽に落ちる。ウケたはいいが、とても熱い。 -【メンタル】が1D6点減少し、【獲得ファン人数】が3D6点上昇する。 -rand:2/6 -============================ -input: -BVT -output: -BeginningIdol : 대형 예능 프로덕션 회장표 > [5] > 쇼핑센터 -rand:5/6 -============================ -input: -TVT -output: -BeginningIdol : 라이브 시어터 회장표 > [4] > 라이브 시어터 -rand:4/6 -============================ -input: -CVT -output: -BeginningIdol : 아이돌 부 회장표 > [6] > 学園アイドル大会 -rand:6/6 -============================ -input: -LST -output: -BeginningIdol : 약소 예능 프로덕션 장소표 > [1] > 급탕실 -rand:1/6 -============================ -input: -TST -output: -BeginningIdol : 라이브 시어터 장소표 > [3] > 매점 -rand:3/6 -============================ -input: -CST -output: -BeginningIdol : 아이돌 부 장소표 > [2] > 음악실 -rand:2/6 -============================ -input: -BPT -output: -BeginningIdol : 대형 예능 프로덕션 프레셔 종류 결정표 > [1] > 선배 아이돌의 기대 -rand:1/6 -============================ -input: -LPT -output: -BeginningIdol : 약소 예능 프로덕션 프레셔 종류 결정표 > [5] > 신곡을 제공한 뮤지션 -rand:5/6 -============================ -input: -CPT -output: -BeginningIdol : 아이돌 부 프레셔 종류 결정표 > [4] > PC의 부모 -rand:4/6 -============================ -input: -BIT -output: -BeginningIdol : 대형 예능 프로덕션 도구표 > [6] > 대본 -rand:6/6 -============================ -input: -LIT -output: -BeginningIdol : 약소 예능 프로덕션 도구표 > [2] > 냉장고 -rand:2/6 -============================ -input: -TIT -output: -BeginningIdol : 라이브 시어터 도구표 > [1] > 무대의 조명 -rand:1/6 -============================ -input: -BWt -output: -BeginningIdol : 대형 예능 프로덕션 업무표 > [26] > 프로덕션의 초대형 중진이 출연하는 프로그램에 불린다. -特技 : 《담력/재능5》 -rand:2/6,6/6 -============================ -input: -lO -output: -BeginningIdol : 로컬 아이돌 업무표 > [13] > 握手会をすることになった。遠方から自分たち目当てにやって来るお客さんも多数見える。チャンスが5以下なら오프。 -特技 : 《아이돌/취미12》 -rand:1/6,3/6 -============================ -input: -dr -output: -BeginningIdol : 드라마 관련 업무표 > [24] > 학원 드라마에 고뇌하는 학생 역으로 출연. 청춘인 것 같음을 어디까지 보여야? -特技 : 《중2병/캐릭터2》 -rand:4/6,2/6 -============================ -input: -PD -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -PD0 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -1PD -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -PD3+ -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -PD4- -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -1PD1+ -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -12PD2- -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -8PD6 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -8PD6+1 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -8PD6-1 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -PD6+- -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -34PD5+- -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -LO100 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -AT0 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -AT7 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -BT0 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -IT0 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -44C -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -56C -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -SPA1 -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -9GG -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -WURR -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -TRS -output: -ダイス残り:3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6, 3/6, 3/6, 1/6, 5/6, 6/6, 5/6, 6/6, 5/6 -rand:3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6,3/6,3/6,1/6,5/6,6/6,5/6,6/6,5/6 -============================ -input: -GA -output: -BeginningIdol : 聖デトワール女学園仕事表 > [66] > 裏山を使った簡単なPV撮影! 山での撮影は体力が要求される。 -特技 : 《体力/才能6》 -rand:6/6,6/6 -============================ -input: -BA -output: -BeginningIdol : アカデミー仕事表 > [24] > アカデミーが製作しているドラマに出演。脇役だけど、しっかりと存在感を出していこう。 -特技 : 《演技力/才能12》 -rand:4/6,2/6 -============================ -input: -SW -output: -BeginningIdol : お菓子仕事表 > [45] > 料理番組で、市販のお菓子を使った新しいおやつの開発を任される。 -特技 : 《料理/趣味6》 -rand:5/6,4/6 -============================ -input: -AN -output: -BeginningIdol : 動物仕事表 > [15] > オフ -rand:5/6,1/6 -============================ -input: -MOV -output: -BeginningIdol : 映画仕事表 > [23] > 時代劇映画にサムライ役で出演。厚い忠義を見せよう。 -特技 : 《硬派/キャラ9》 -rand:2/6,3/6 -============================ -input: -FA -output: -BeginningIdol : ファンタジー仕事表 > [12] > オフ -rand:1/6,2/6 -============================ -input: -HA -output: -BeginningIdol : ハプニング表 > [22] > パートナープレイヤーに、地方からオファーが来た。その土地独特の文化を学んで、パートナープレイヤーに伝えよう。 -特技リスト(출신분야) > [10] > 《도호쿠/출신10》 -rand:2/6,2/6,6/6,4/6 -============================ -input: -ACT -output: -BeginningIdol : アクセサリー種別決定表 > [1] > 頭アクセサリー表を使用する。 -頭アクセサリー表 > [34] > イヤリング -rand:1/6,3/6,4/6 -============================ -input: -ACT -output: -BeginningIdol : アクセサリー種別決定表 > [2] > 帽子アクセサリー表を使用する。 -帽子アクセサリー表 > [36] > キャップ -rand:2/6,6/6,3/6 -============================ -input: -ACT -output: -BeginningIdol : アクセサリー種別決定表 > [3] > 胴アクセサリー表を使用する。 -胴アクセサリー表 > [12] > カウベル -rand:3/6,2/6,1/6 -============================ -input: -ACT -output: -BeginningIdol : アクセサリー種別決定表 > [4] > 腕アクセサリー表を使用する。 -腕アクセサリー表 > [46] > ゴールドアクセサリー -rand:4/6,4/6,6/6 -============================ -input: -ACT -output: -BeginningIdol : アクセサリー種別決定表 > [5] > 足アクセサリー表を使用する。 -足アクセサリー表 > [15] > アンクル -rand:5/6,1/6,5/6 -============================ -input: -ACT -output: -BeginningIdol : アクセサリー種別決定表 > [6] > その他アクセサリー表を使用する。 -その他アクセサリー表 > [35] > 大きなリボン -rand:6/6,3/6,5/6 -============================ -input: -ACB -output: -BeginningIdol : アクセサリーブランド決定表 > [2] > 『챌린지 걸즈』の衣装ブランドからランダムに決定する。 -의상(챌린지 걸즈) > [36] > Sweet Girl -rand:2/6,6/6,3/6 -============================ -input: -ACB -output: -BeginningIdol : アクセサリーブランド決定表 > [4] > 『로드 투 프린스』の衣装ブランドからランダムに決定する。 -의상(로드 투 프린스) > [15] > Starlight TourS -rand:4/6,1/6,5/6 -============================ -input: -ACB -output: -BeginningIdol : アクセサリーブランド決定表 > [5] > 『フォーチュンスターズ』の衣装ブランドからランダムに決定する。 -의상(フォーチュンスターズ) > [34] > ネイキッドチャレンジ -rand:5/6,4/6,3/6 -============================ -input: -ACE -output: -BeginningIdol : アクセサリー効果表 > [15] > このアクセサリーを装備したとき、【メンタル】が5点上昇する。この効果は、1回のセッションに1度まで使用できる。 -rand:5/6,1/6 -============================ -input: -FC -output: -BeginningIdol : 의상(フォーチュンスターズ) > [44] > Rescue Power -演目の判定でファンブルが発生した場合、好きな能力値でパフォーマンスを行うことができる。 -rand:4/6,4/6 -============================ -input: -GUR -output: -BeginningIdol : 聖デトワール女学園無茶ぶり表 > [2,3] > 食堂でテニス -rand:2/6,3/6 -============================ -input: -BUR -output: -BeginningIdol : アカデミー無茶ぶり表 > [6,2] > 初等部でゲリラライブ -rand:6/6,2/6 -============================ -input: -1A+2 -output: -BeginningIdol : 攻撃 > [3]+2 > 5ダメージ -rand:3/6 -============================ -input: -2SA -output: -BeginningIdol : 攻撃 > [1,1] > 2ダメージ -rand:1/6,1/6 -============================ -input: -2A1-3 -output: -BeginningIdol : 攻撃 > [1,1]-3 > 0ダメージ -rand:1/6,1/6 -============================ -input: -3A2 -output: -BeginningIdol : 攻撃 > [2,2,2] > 0ダメージ -rand:2/6,2/6,2/6 -============================ -input: -4A34 -output: -BeginningIdol : 攻撃 > [2,2,3,4] > [2,2] > 失敗 -rand:4/6,3/6,2/6,2/6 -============================ -input: -4A61 -output: -BeginningIdol : 攻撃 > [1,2,3,6] > [2,3] > 5ダメージ -rand:6/6,3/6,1/6,2/6 -============================ -input: -5A5 -output: -BeginningIdol : 攻撃 > [1,2,3,4,6] > 16ダメージ -rand:6/6,1/6,3/6,4/6,2/6 -============================ -input: -8A -output: -BeginningIdol : 攻撃 > [1,2,3,3,3,4,5,6] > 失敗 -rand:5/6,3/6,3/6,2/6,3/6,4/6,1/6,6/6 -============================ -input: -SIP -output: -BeginningIdol : かんたんパーソン表 > [1] > テレビ番組に出て、ライブの宣伝をする。 -rand:1/6 -============================ -input: -3D6>=? 目標値?でバグらない -output: -BeginningIdol : (3D6>=?) > 9[3,3,3] > 9 > 失敗 -rand:3/6,3/6,3/6 diff --git a/src/src_bcdice/test/data/BladeOfArcana.txt b/src/src_bcdice/test/data/BladeOfArcana.txt deleted file mode 100644 index 36c54866f..000000000 --- a/src/src_bcdice/test/data/BladeOfArcana.txt +++ /dev/null @@ -1,209 +0,0 @@ -input: -1A -output: -BladeOfArcana : (1A1C1F20) > 2 > 失敗 -rand:2/20 -============================ -input: -1A12 -output: -BladeOfArcana : (1A12C1F20) > 8 > 成功 -rand:8/20 -============================ -input: -2A8C11 -output: -BladeOfArcana : (2A8C8F20) > 9,10 > 9 > 失敗 -rand:10/20,9/20 -============================ -input: -3A12C2F18 -output: -BladeOfArcana : (3A12C2F18) > 3,7,18 > 3 > 成功 -rand:18/20,7/20,3/20 -============================ -input: -3A12C4F18 -output: -BladeOfArcana : (3A12C4F18) > 4,8,19 > 4 > クリティカル -rand:4/20,19/20,8/20 -============================ -input: -4A13F18 -output: -BladeOfArcana : (4A13C1F18) > 18,18,19,19 > 18 > ファンブル -rand:18/20,19/20,19/20,18/20 -============================ -input: -0A12F16C11 -output: -BladeOfArcana : (1A12C11F11) > 11 > ファンブル -rand:11/20 -============================ -input: -3AC4 -output: -BladeOfArcana : (3A4C4F20) > 5,8,19 > 5 > 失敗 -rand:5/20,19/20,8/20 -============================ -input: -4AF18 -output: -BladeOfArcana : (4A1C1F18) > 2,18,18,19 > 2 > 失敗 -rand:18/20,19/20,2/20,18/20 -============================ -input: -1a12 -output: -BladeOfArcana : (1A12C1F20) > 8 > 成功 -rand:8/20 -============================ -input: -2A8c11 -output: -BladeOfArcana : (2A8C8F20) > 9,10 > 9 > 失敗 -rand:10/20,9/20 -============================ -input: -3A12C2f18 -output: -BladeOfArcana : (3A12C2F18) > 3,7,18 > 3 > 成功 -rand:18/20,7/20,3/20 -============================ -input: -CT3 -output: -BladeOfArcana : 因縁表(The 3rd) 『BoA3』P292 > 17 > 【取引】 -rand:17/20 -============================ -input: -CT3+ -output: -BladeOfArcana : 因縁表(The 3rd) 『BoA3』P292 > 20[19+1] > 【不審】 -rand:19/20 -============================ -input: -CT3- -output: -BladeOfArcana : 因縁表(The 3rd) 『BoA3』P292 > 12[13-1] > 【仇敵】 -rand:13/20 -============================ -input: -CTR -output: -BladeOfArcana : 因縁表(リインカーネイション) 『BAR』P51、299 > 14 > 【借り】 -rand:14/20 -============================ -input: -CTR+ -output: -BladeOfArcana : 因縁表(リインカーネイション) 『BAR』P51、299 > 21[20+1] > 【自身】 -rand:20/20 -============================ -input: -CTR- -output: -BladeOfArcana : 因縁表(リインカーネイション) 『BAR』P51、299 > 0[1-1] > 【他生】 -rand:1/20 -============================ -input: -DJV -output: -BladeOfArcana : 前世邂逅表(デジャブ) 『BAR』P235 > 13 > 【光る刃】 -鋭く光る刃のような、鋭いまなざし。 -rand:13/20 -============================ -input: -DJV- -output: -BladeOfArcana : 前世邂逅表(デジャブ) 『BAR』P235 > 5[6-1] > 【鋭いナイフ】 -鋭いナイフのような視線を感じる。これは……。 -rand:6/20 -============================ -input: -AKST -output: -BladeOfArcana : 悪徳シーン表 『GoV』P16、164 > 1 > ▼エフェクトス/原初の力 -【行動】殺戮者の配下が無法を働く。店先で金品を要求したり、暴力を振るったりしている。 -rand:1/20 -============================ -input: -AKST+ -output: -BladeOfArcana : 悪徳シーン表 『GoV』P16、164 > 8[7+1] > ▼アルドール/終わりなき戦い -【行動】ならず者の集団が人々を襲っている。力を示さなければ切り捨てられるのは彼らなのだ。 -rand:7/20 -============================ -input: -AKST- -output: -BladeOfArcana : 悪徳シーン表 『GoV』P16、164 > 14[15-1] > ▼アングルス/純白の恐怖 -【行動】遊びとして人間狩りが行なわれている。人々は逃げ惑い、殺戮者は愉悦に笑う。 -rand:15/20 -============================ -input: -A -output: -ダイス残り:1/20 -rand:1/20 -============================ -input: -A12 -output: -ダイス残り:1/20 -rand:1/20 -============================ -input: -1As -output: -ダイス残り:1/20 -rand:1/20 -============================ -input: -d1A -output: -ダイス残り:1/20 -rand:1/20 -============================ -input: -1A12C -output: -ダイス残り:1/20 -rand:1/20 -============================ -input: -1A12F -output: -ダイス残り:1/20 -rand:1/20 -============================ -input: -1A12C2F -output: -ダイス残り:1/20 -rand:1/20 -============================ -input: -1A12F19C -output: -ダイス残り:1/20 -rand:1/20 -============================ -input: -1A12CF -output: -ダイス残り:1/20 -rand:1/20 -============================ -input: -1A12C1C2 -output: -ダイス残り:1/20 -rand:1/20 -============================ -input: -1A12F19F16 -output: -ダイス残り:1/20 -rand:1/20 -============================ diff --git a/src/src_bcdice/test/data/BlindMythos.txt b/src/src_bcdice/test/data/BlindMythos.txt deleted file mode 100644 index fb8d5e6d3..000000000 --- a/src/src_bcdice/test/data/BlindMythos.txt +++ /dev/null @@ -1,274 +0,0 @@ -input: -BM>=1 -output: -BlindMythos : (BM0>=1) > 2D6[1,1] > 成功数:0 > 失敗。汚染ポイント+2 -rand:1/6,1/6 -============================ -input: -BM>=1 -output: -BlindMythos : (BM0>=1) > 2D6[1,2] > 成功数:0 > 失敗。汚染ポイント+1 -rand:2/6,1/6 -============================ -input: -BM>=1 -output: -BlindMythos : (BM0>=1) > 2D6[2,3] > 成功数:0 > 失敗 -rand:2/6,3/6 -============================ -input: -BM>=1 -output: -BlindMythos : (BM0>=1) > 2D6[4,6] > 成功数:2 > 成功、禁書ビット発生[4,6] -rand:4/6,6/6 -============================ -input: -BM>=1 -output: -BlindMythos : (BM0>=1) > 2D6[6,6] > 成功数:2、リロール[66] - > (ReRoll2>=1) > 2D6[1,2] > 成功数:0 - > 最終成功数:2 > 成功、禁書ビット発生[6,6] -rand:6/6,6/6,1/6,2/6 -============================ -input: -BM2>=1 -output: -BlindMythos : (BM2>=1) > 4D6[4,4,5,5] > 成功数:4、リロール[44,55] - > (ReRoll2>=1) > 2D6[3,4] > 成功数:1 - > (ReRoll2>=1) > 2D6[2,5] > 成功数:1 - > 最終成功数:6 > 成功、禁書ビット発生[4,4,5,5] -rand:4/6,4/6,5/6,5/6,4/6,3/6,5/6,2/6 -============================ -input: -BM2>=1 -output: -BlindMythos : (BM2>=1) > 4D6[2,2,2,4] > 成功数:1、リロール[222] - > (ReRoll3>=1) > 3D6[1,2,3] > 成功数:0 - > 最終成功数:1 > 成功、禁書ビット発生[4] -rand:2/6,2/6,2/6,4/6,1/6,2/6,3/6 -============================ -input: -BM5>=1 -output: -BlindMythos : (BM5>=1) > 7D6[1,4,4,5,5,5,5] > 成功数:6、リロール[44,5555] - > (ReRoll2>=1) > 2D6[1,4] > 成功数:1 - > (ReRoll4>=1) > 4D6[1,2,3,4] > 成功数:1 - > 最終成功数:8 > 成功、禁書ビット発生[4,4,5,5,5,5] -rand:1/6,4/6,4/6,5/6,5/6,5/6,5/6,1/6,4/6,1/6,2/6,3/6,4/6 -============================ -input: -ReRoll2,4>=1 -output: -BlindMythos : (ReRoll2>=1,ReRoll4>=1) - > (ReRoll2>=1) > 2D6[2,4] > 成功数:1 - > (ReRoll4>=1) > 4D6[1,4,4,5] > 成功数:3、リロール[44] - > コマンド:ReRoll2>=1 -rand:2/6,4/6,1/6,4/6,4/6,5/6 -============================ -input: -ReRoll5,2>=1 -output: -BlindMythos : (ReRoll5>=1,ReRoll2>=1) - > (ReRoll5>=1) > 5D6[1,2,5,5,5] > 成功数:3、リロール[555] - > (ReRoll2>=1) > 2D6[4,4] > 成功数:2、リロール[44] - > コマンド:ReRoll3,2>=1 -rand:1/6,2/6,5/6,5/6,5/6,4/6,4/6 -============================ -input: -ReRoll3,2>=1 -output: -BlindMythos : (ReRoll3>=1,ReRoll2>=1) - > (ReRoll3>=1) > 3D6[1,1,4] > 成功数:1 - > (ReRoll2>=1) > 2D6[6,6] > 成功数:2、リロール[66] - > コマンド:ReRoll2>=1 -rand:1/6,1/6,4/6,6/6,6/6 -============================ -input: -BM@3>=1 -output: -BlindMythos : (BM0@3>=1) > 2D6[2,3] > 成功数:1 > 成功 -rand:2/6,3/6 -============================ -input: -BM3@3>=1 -output: - BlindMythos : (BM3@3>=1) > 5D6[1,3,3,3,4] > 成功数:4、リロール[333] - > (ReRoll3@3>=1) > 3D6[1,3,3] > 成功数:2、リロール[33] - > (ReRoll2@3>=1) > 2D6[1,3] > 成功数:1 - > 最終成功数:7 > 成功、禁書ビット発生[4] -rand:4/6,3/6,3/6,3/6,1/6,3/6,3/6,1/6,3/6,1/6 -============================ -input: -BMS>=1 -output: -BlindMythos : (BMS0>=1) > 2D6[6,6] > 成功数:2、リロール[66] - > コマンド:ReRoll2>=1 - > 現状で成功。コマンド実行で追加リロールも可能 -rand:6/6,6/6 -============================ -input: -BMS2>=1 -output: -BlindMythos : (BMS2>=1) > 4D6[4,4,5,5] > 成功数:4、リロール[44,55] - > コマンド:ReRoll2,2>=1 - > 現状で成功。コマンド実行で追加リロールも可能 -rand:4/6,4/6,5/6,5/6 -============================ -input: -BMS2>=1 -output: -BlindMythos : (BMS2>=1) > 4D6[2,2,2,4] > 成功数:1、リロール[222] - > コマンド:ReRoll3>=1 - > 現状で成功。コマンド実行で追加リロールも可能 -rand:2/6,2/6,2/6,4/6 -============================ -input: -BMS5>=1 -output: -BlindMythos : (BMS5>=1) > 7D6[1,4,4,5,5,5,5] > 成功数:6、リロール[44,5555] - > コマンド:ReRoll2,4>=1 - > 現状で成功。コマンド実行で追加リロールも可能 -rand:1/6,4/6,4/6,5/6,5/6,5/6,5/6 -============================ -input: -BMS>=1 -output: -BlindMythos : (BMS0>=1) > 2D6[6,6] > 成功数:2、リロール[66] - > コマンド:ReRoll2>=1 - > 現状で成功。コマンド実行で追加リロールも可能 -rand:6/6,6/6 -============================ -input: -BMS2>=1 -output: -BlindMythos : (BMS2>=1) > 4D6[4,4,5,5] > 成功数:4、リロール[44,55] - > コマンド:ReRoll2,2>=1 - > 現状で成功。コマンド実行で追加リロールも可能 -rand:4/6,4/6,5/6,5/6 -============================ -input: -BMS2>=1 -output: -BlindMythos : (BMS2>=1) > 4D6[2,2,2,4] > 成功数:1、リロール[222] - > コマンド:ReRoll3>=1 - > 現状で成功。コマンド実行で追加リロールも可能 -rand:2/6,2/6,2/6,4/6 -============================ -input: -BMS5>=1 -output: -BlindMythos : (BMS5>=1) > 7D6[1,4,4,5,5,5,5] > 成功数:6、リロール[44,5555] - > コマンド:ReRoll2,4>=1 - > 現状で成功。コマンド実行で追加リロールも可能 -rand:1/6,4/6,4/6,5/6,5/6,5/6,5/6 -============================ -input: -BMS5>=1 -output: -BlindMythos : (BMS5>=1) > 7D6[1,1,1,3,3,3,3] > 成功数:0、リロール[3333] - > コマンド:ReRoll4>=1 - > 現状のままでは失敗。汚染ポイント+3 -rand:1/6,1/6,1/6,3/6,3/6,3/6,3/6 -============================ -input: -LE -output: -BlindMythos : 失う感情表(6[6]) > 感:なにを見ても、感動はない。心は凍てついている。 -rand:6/6 -============================ -input: -RP123 -output: -BlindMythos : 守護星表チェック(1,2,3) > 2D10[1,0] > 発動 -rand:1/10,10/10 -============================ -input: -RP258 -output: -BlindMythos : 守護星表チェック(2,5,8) > 2D10[1,4] > 失敗 -rand:1/10,4/10 -============================ -input: -RP890 -output: -BlindMythos : 守護星表チェック(8,9,0) > 2D10[3,0] > 発動 -rand:3/10,3/10,3/10,10/10 -============================ -input: -DT -output: -BlindMythos : 汚染チャート(1,2) > 汚染チャートを2回振り、その効果を適用する(1・2-2,5・6-12 なら振り直す) -rand:1/6,1/6,1/6 -============================ -input: -DT -output: -BlindMythos : 汚染チャート(2,3) > PC全員の「トラウマ」すべてに2ダメージ。その後さらに汚染が2増える -rand:2/6,1/6,2/6 -============================ -input: -DT -output: -BlindMythos : 汚染チャート(5,3) > PC全員の「喪失」1つに4ダメージ。このときアクロバットダイス獲得不可 -rand:5/6,1/6,2/6 -============================ -input: -DT -output: -BlindMythos : 汚染チャート(5,11) > PC全員の「喪失」すべてに2ダメージ。その後さらに汚染が2増える -rand:5/6,6/6,5/6 -============================ -input: -DT -output: -BlindMythos : 汚染チャート(4,12) > PC全員の「トラウマ」「喪失」すべてに2ダメージ -rand:4/6,6/6,6/6 -============================ -input: -DT -output: -BlindMythos : 汚染チャート(5,12) > 汚染チャートを2回振り、その効果を適用する(1・2-2,5・6-12 なら振り直す) -rand:5/6,6/6,6/6 -============================ -input: -DT -output: -BlindMythos : 汚染チャート(6,12) > 汚染チャートを2回振り、その効果を適用する(1・2-2,5・6-12 なら振り直す) -rand:6/6,6/6,6/6 -============================ -input: -ESH -output: -BlindMythos : 「喜」の感情後遺症表(12[6,6]) > 「喜」の後遺症をひとつ消してもよい。 -rand:6/6,6/6 -============================ -input: -ESA -output: -BlindMythos : 「怒」の感情後遺症表(12[6,6]) > 「怒」の後遺症をひとつ消してもよい。 -rand:6/6,6/6 -============================ -input: -ESS -output: -BlindMythos : 「哀」の感情後遺症表(12[6,6]) > 「哀」の後遺症をひとつ消してもよい。 -rand:6/6,6/6 -============================ -input: -ESP -output: -BlindMythos : 「楽」の感情後遺症表(12[6,6]) > 「楽」の後遺症をひとつ消してもよい。 -rand:6/6,6/6 -============================ -input: -ESL -output: -BlindMythos : 「愛」の感情後遺症表(12[6,6]) > 「愛」の後遺症をひとつ消してもよい。 -rand:6/6,6/6 -============================ -input: -ESE -output: -BlindMythos : 「感」の感情後遺症表(12[6,6]) > 「感」の後遺症をひとつ消してもよい。 -rand:6/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/BloodCrusade.txt b/src/src_bcdice/test/data/BloodCrusade.txt deleted file mode 100644 index c9a0f6e05..000000000 --- a/src/src_bcdice/test/data/BloodCrusade.txt +++ /dev/null @@ -1,261 +0,0 @@ -input: -2d6>=4 -output: -BloodCrusade : (2D6>=4) > 9[3,6] > 9 > 成功 -rand:3/6,6/6 -============================ -input: -2d6>=10 -output: -BloodCrusade : (2D6>=10) > 9[3,6] > 9 > 失敗 -rand:3/6,6/6 -============================ -input: -2d6>=4 -output: -BloodCrusade : (2D6>=4) > 2[1,1] > 2 > ファンブル(【モラル】-3。追跡フェイズなら吸血シーンを追加。戦闘フェイズなら吸血鬼は追加行動を一回得る) -rand:1/6,1/6 -============================ -input: -2d6>=4 -output: -BloodCrusade : (2D6>=4) > 12[6,6] > 12 > スペシャル(【モラル】+3。追跡フェイズならあなたに関係を持つPCの【モラル】+2。攻撃判定ならダメージ+1D6) -rand:6/6,6/6 -============================ -input: -RT -output: -BloodCrusade : 関係属性表(1) > 共感/不信 -rand:1/6 -============================ -input: -RT -output: -BloodCrusade : 関係属性表(6) > 保護欲/殺意 -rand:6/6 -============================ -input: -ST -output: -BloodCrusade : シーン表(2) > どこまでも広がる荒野。風が吹き抜けていく。 -rand:1/6,1/6 -============================ -input: -ST -output: -BloodCrusade : シーン表(12) > 高い塔の上。都市を一望できる。 -rand:6/6,6/6 -============================ -input: -IST -output: -BloodCrusade : 先制判定指定特技表(1) > 《自信/社会5》 -rand:1/6 -============================ -input: -IST -output: -BloodCrusade : 先制判定指定特技表(6) > 《心臓/胴部7》 -rand:6/6 -============================ -input: -BRT -output: -BloodCrusade : 身体部位決定表(2) > 《脳》 -rand:1/6,1/6 -============================ -input: -BRT -output: -BloodCrusade : 身体部位決定表(12) > 《心臓》 -rand:6/6,6/6 -============================ -input: -CHT -output: -BloodCrusade : 自信幸福表(1) > 【戦闘能力】あなたは吸血鬼狩人としての自分の戦闘能力に自信を持っています。たとえ負けようとも、それは運か相手か仲間が悪かったので、あなたの戦闘能力が低いわけではありません。 -rand:1/6 -============================ -input: -CHT -output: -BloodCrusade : 自信幸福表(6) > 【長生き】あなたは吸血鬼狩人としてかなりの年月を過ごしてきたが、まだ死んでいません。これは誇るべきことです。そこらの若造には、まだまだ負けていません。 -rand:6/6 -============================ -input: -SHT -output: -BloodCrusade : 地位幸福表(1) > 【役職】あなたは職場、あるいは吸血鬼狩人の組織のなかで高い階級についています。そのため、下にいるものには命令でき、相応の敬意を払われます。 -rand:1/6 -============================ -input: -SHT -output: -BloodCrusade : 地位幸福表(6) > 【リーダー】あなたは所属している何らかの組織を率いる立場にあります。会社の社長や、部活動の部長などです。あなたは求められてその地位にあります -rand:6/6 -============================ -input: -DHT -output: -BloodCrusade : 日常幸福表(1) > 【家】あなたの家はとても快適な空間です。コストと時間をかけて作り上げられた、あなたが居住するための空間。それはあなたの幸せの源なのです。 -rand:1/6 -============================ -input: -DHT -output: -BloodCrusade : 日常幸福表(6) > 【思い出】あなたは昔の思い出を心の支えにしています。何らかの幸せな記憶……それがあれば、この先にどんなつらいことが待っていても大丈夫でしょう。 -rand:6/6 -============================ -input: -LHT -output: -BloodCrusade : 人脈幸福表(1) > 【理解ある家族】あなたの家族は、あなたが吸血鬼狩人であることを知ったうえで協力してくれます。これがどれほど稀なことかは、仲間に聞けば分かるでしょう。 -rand:1/6 -============================ -input: -LHT -output: -BloodCrusade : 人脈幸福表(6) > 【可愛い子供】あなたには子供がいます。聡明で魅力的、しかも健康な……将来を嘱望される子供です。子供が掴む幸せな未来を思う時、あなたの顔には笑みが広がります。 -rand:6/6 -============================ -input: -EHT -output: -BloodCrusade : 退路幸福表(1) > 【故郷の町】あなたは生まれ育った街を離れて吸血鬼狩人として活動しています。いつの日かあの町へ帰る……その思いがあなたを戦いのなかで支えています。 -rand:1/6 -============================ -input: -EHT -output: -BloodCrusade : 退路幸福表(6) > 【空想の王国】あなたには辛いことがあると白昼夢にふける、あるいは物語に没入する癖があり、そのときには非常に幸せな気分になることができます。 -rand:6/6 -============================ -input: -AST -output: -BloodCrusade : ランダム全特技表(1,2) > 社会2:怯える -rand:1/6,1/6,1/6 -============================ -input: -AST -output: -BloodCrusade : ランダム全特技表(6,12) > 環境12:休まない -rand:6/6,6/6,6/6 -============================ -input: -MIT -output: -BloodCrusade : 軽度狂気表(1) > 【誇大妄想】(判定に失敗するたびに【感情】が1増加する。) -rand:1/6 -============================ -input: -MIT -output: -BloodCrusade : 軽度狂気表(6) > 【血の飢え】(戦闘中に最低1体でも死亡させないと、戦闘終了時に【感情】10増加。【激情】は獲得できない。) -rand:6/6 -============================ -input: -SIT -output: -BloodCrusade : 重度狂気表(1) > 【幸福依存】(【幸福】を一つ選択し、その【幸福】が結果フェイズに失われたとき、死亡する。) -rand:1/6 -============================ -input: -SIT -output: -BloodCrusade : 重度狂気表(6) > 【猜疑心】(自分が「連携攻撃」を行うとき、関係の【深度】をダメージに加えられない。) -rand:6/6 -============================ -input: -TD1T -output: -BloodCrusade : 時間経過表十代(6[6]) > ちょっと見ないうちに協力者が成長する。 -協力者を獲得している場合、その中から一人を選ぶ。 -その協力者のレベルが1上昇する。 -協力者を獲得していない場合、効果はない。 -rand:6/6 -============================ -input: -TD2T -output: -BloodCrusade : 時間経過表二十代(6[6]) > 協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。 -「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。 -協力者を獲得していない場合、狩人のイベントとなり効果はない。 -rand:6/6 -============================ -input: -TD3T -output: -BloodCrusade : 時間経過表三十代(6[6]) > 協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。 -「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。 -協力者を獲得していない場合、狩人のイベントとなり効果はない。 -rand:6/6 -============================ -input: -TD4T -output: -BloodCrusade : 時間経過表四十代(6[6]) > 協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。 -「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。 -協力者を獲得していない場合、狩人のイベントとなり効果はない。 -rand:6/6 -============================ -input: -TD5T -output: -BloodCrusade : 時間経過表五十代(6[6]) > 協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。 -「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。 -協力者を獲得していない場合、狩人のイベントとなり効果はない。 -rand:6/6 -============================ -input: -TD6T -output: -BloodCrusade : 時間経過表六十代(6[6]) > 協力者を獲得している場合、その指導に一年をかける。 -協力者のなかから一人を選び、その協力者のレベルを2上げる。 -協力者を獲得していない場合、のんびりした一年だった。 -rand:6/6 -============================ -input: -TDHT -output: -BloodCrusade : 時間経過表半吸血鬼(6[6]) > 新しい友達が出来る。 -任意の年齢の協力者を、狩人のプレイヤーが作成する。 -レベルは1とすること。 -この協力者はセッションに登場し、獲得すれば使用できる。 -rand:6/6 -============================ -input: -BDST -output: -BloodCrusade : 戦場シーン表(12[6,6]) > 司令室。壁の巨大スクリーンでは、何かのカウントダウンが進行中。 -rand:6/6,6/6 -============================ -input: -CYST -output: -BloodCrusade : 田舎シーン表(12[6,6]) > 駅。ホームには屋根がなく、周りには山と森が広がっている。 -rand:6/6,6/6 -============================ -input: -DMST -output: -BloodCrusade : 夢シーン表(12[6,6]) > みんな死んでしまった。墓の前で座っていると、近づいてくる人影がある。 -rand:6/6,6/6 -============================ -input: -MNST -output: -BloodCrusade : 館シーン表(12[6,6]) > 領主の部屋。重厚なデスクと背後の本棚が威圧的だ。 -rand:6/6,6/6 -============================ -input: -SLST -output: -BloodCrusade : 学校シーン表(12[6,6]) > 開かずの教室。ここは真っ暗だ……出口も入り口もない。 -rand:6/6,6/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -BloodCrusade : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/BloodMoon.txt b/src/src_bcdice/test/data/BloodMoon.txt deleted file mode 100644 index 13ddae519..000000000 --- a/src/src_bcdice/test/data/BloodMoon.txt +++ /dev/null @@ -1,221 +0,0 @@ -input: -2D6>=7 -output: -BloodMoon : (2D6>=7) > 7[1,6] > 7 > 成功 -rand:6/6,1/6 -============================ -input: -2D6>=7 -output: -BloodMoon : (2D6>=7) > 6[1,5] > 6 > 失敗 -rand:5/6,1/6 -============================ -input: -2D6>=7 -output: -BloodMoon : (2D6>=7) > 2[1,1] > 2 > ファンブル(【余裕】が 0 に) -rand:1/6,1/6 -============================ -input: -2D6>=7 -output: -BloodMoon : (2D6>=7) > 12[6,6] > 12 > スペシャル(【余裕】+3) -rand:6/6,6/6 -============================ -input: -RAT -output: -BloodMoon : 関係属性表(11[1,1]) > 愛情 -rand:1/6,1/6 -============================ -input: -RAT -output: -BloodMoon : 関係属性表(66[6,6]) > 喜び -rand:6/6,6/6 -============================ -input: -IDT -output: -BloodMoon : 導入タイプ決定表(ノーマル)(1[1]) > 依頼 -《概要》 ハンターは任意のキャラクターに他のハンターの【幸福】を守るように依頼され、その依頼を受ける。 -《目的》 他のハンターの【幸福】のうち一つを結果フェイズまで破壊されないこと。この【幸福】は、ゲームマスターが指定する。 -《報酬》 経験値2 -rand:1/6 -============================ -input: -IDT -output: -BloodMoon : 導入タイプ決定表(ノーマル)(6[6]) > 救済 -《概要》 ハンターは今回の敵となるフォロワーのうち一人を救うために戦う。 -《目的》 結果フェイズまでに対象のフォロワーを「説得」で無力化する。このフォロワーはシーンプレイヤーが決定する。 -《報酬》 経験値2 -rand:6/6 -============================ -input: -ID2T -output: -BloodMoon : 導入タイプ決定表(ハード込み)(11[1,1]) > 依頼 -《概要》 ハンターは任意のキャラクターに他のハンターの【幸福】を守るように依頼され、その依頼を受ける。 -《目的》 他のハンターの【幸福】のうち一つを結果フェイズまで破壊されないこと。この【幸福】は、ゲームマスターが指定する。 -《報酬》 経験値2 -rand:1/6,1/6 -============================ -input: -ID2T -output: -BloodMoon : 導入タイプ決定表(ハード込み)(66[6,6]) > 振り直し -rand:6/6,6/6 -============================ -input: -ID2T -output: -BloodMoon : 導入タイプ決定表(ハード込み)(16[1,6]) > 救済 -《概要》 ハンターは今回の敵となるフォロワーのうち一人を救うために戦う。 -《目的》 結果フェイズまでに対象のフォロワーを「説得」で無力化する。このフォロワーはシーンプレイヤーが決定する。 -《報酬》 経験値2 -rand:6/6,1/6 -============================ -input: -ST -output: -BloodMoon : シーン表(2) > どこまでも広がる荒野。風が吹き抜けていく。 -rand:1/6,1/6 -============================ -input: -ST -output: -BloodMoon : シーン表(12) > 高い塔の上。都市を一望できる。 -rand:6/6,6/6 -============================ -input: -IST -output: -BloodMoon : 先制判定指定特技表(1) > 《自信/社会5》 -rand:1/6 -============================ -input: -IST -output: -BloodMoon : 先制判定指定特技表(6) > 《心臓/胴部7》 -rand:6/6 -============================ -input: -BRT -output: -BloodMoon : 身体部位決定表(2) > 《脳》 -rand:1/6,1/6 -============================ -input: -BRT -output: -BloodMoon : 身体部位決定表(12) > 《心臓》 -rand:6/6,6/6 -============================ -input: -CHT -output: -BloodMoon : 自信幸福表(1) > 【戦闘能力】あなたはハンターとしての自分の戦闘能力に自信を持っています。たとえ負けようとも、それは運か相手か仲間が悪かったので、あなたの戦闘能力が低いわけではありません。 -rand:1/6 -============================ -input: -CHT -output: -BloodMoon : 自信幸福表(6) > 【長生き】あなたはハンターとしてかなりの年月を過ごしてきたが、まだ死んでいません。これは誇るべきことです。そこらの若造には、まだまだ負けていません。 -rand:6/6 -============================ -input: -SHT -output: -BloodMoon : 地位幸福表(1) > 【役職】あなたは職場、あるいはハンターの組織のなかで高い階級についています。そのため、下にいるものには命令でき、相応の敬意を払われます。 -rand:1/6 -============================ -input: -SHT -output: -BloodMoon : 地位幸福表(6) > 【リーダー】あなたは所属している何らかの組織を率いる立場にあります。会社の社長や、部活動の部長などです。あなたは求められてその地位にあります -rand:6/6 -============================ -input: -DHT -output: -BloodMoon : 日常幸福表(1) > 【家】あなたの家はとても快適な空間です。コストと時間をかけて作り上げられた、あなたが居住するための空間。それはあなたの幸せの源なのです。 -rand:1/6 -============================ -input: -DHT -output: -BloodMoon : 日常幸福表(6) > 【思い出】あなたは昔の思い出を心の支えにしています。何らかの幸せな記憶……それがあれば、この先にどんなつらいことが待っていても大丈夫でしょう。 -rand:6/6 -============================ -input: -LHT -output: -BloodMoon : 人脈幸福表(1) > 【理解ある家族】あなたの家族は、あなたがハンターであることを知ったうえで協力してくれます。これがどれほど稀なことかは、仲間に聞けば分かるでしょう。 -rand:1/6 -============================ -input: -LHT -output: -BloodMoon : 人脈幸福表(6) > 【可愛い子供】あなたには子供がいます。聡明で魅力的、しかも健康な……将来を嘱望される子供です。子供が掴む幸せな未来を思う時、あなたの顔には笑みが広がります。 -rand:6/6 -============================ -input: -EHT -output: -BloodMoon : 退路幸福表(1) > 【故郷の町】あなたは生まれ育った街を離れてハンターとして活動しています。いつの日かあの町へ帰る……その思いがあなたを戦いのなかで支えています。 -rand:1/6 -============================ -input: -EHT -output: -BloodMoon : 退路幸福表(6) > 【空想の王国】あなたには辛いことがあると白昼夢にふける、あるいは物語に没入する癖があり、そのときには非常に幸せな気分になることができます。 -rand:6/6 -============================ -input: -AST -output: -BloodMoon : ランダム全特技表(1,2) > 社会2:怯える -rand:1/6,1/6,1/6 -============================ -input: -AST -output: -BloodMoon : ランダム全特技表(6,12) > 環境12:休まない -rand:6/6,6/6,6/6 -============================ -input: -MIT -output: -BloodMoon : 軽度狂気表(1) > 【誇大妄想】(判定に失敗するたびに【感情】が1増加する。) -rand:1/6 -============================ -input: -MIT -output: -BloodMoon : 軽度狂気表(6) > 【血の飢え】(戦闘中に最低1体でも死亡させないと、戦闘終了時に【感情】10増加。【激情】は獲得できない。) -rand:6/6 -============================ -input: -SIT -output: -BloodMoon : 重度狂気表(1) > 【幸福依存】(【幸福】を一つ選択し、その【幸福】が結果フェイズに失われたとき、死亡する。) -rand:1/6 -============================ -input: -SIT -output: -BloodMoon : 重度狂気表(6) > 【猜疑心】(自分が「連携攻撃」を行うとき、関係の【深度】をダメージに加えられない。) -rand:6/6 -============================ -input: -C(1/2) 切り上げ -output: -BloodMoon : 計算結果 > 1 -rand: -============================ -input: -2D6>=? 目標値?でバグらない -output: -BloodMoon : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/CardRanker.txt b/src/src_bcdice/test/data/CardRanker.txt deleted file mode 100644 index c85a0427e..000000000 --- a/src/src_bcdice/test/data/CardRanker.txt +++ /dev/null @@ -1,242 +0,0 @@ -input: -RM -output: -CardRanker : ランダムモンスター選択(1,12) > 白の12:軍神 -rand:1/6,6/6,6/6 -============================ -input: -RM -output: -CardRanker : ランダムモンスター選択(2,12) > 青の12:水精霊 -rand:2/6,6/6,6/6 -============================ -input: -RM -output: -CardRanker : ランダムモンスター選択(3,12) > 緑の12:森精霊 -rand:3/6,6/6,6/6 -============================ -input: -RM -output: -CardRanker : ランダムモンスター選択(4,12) > 金の12:土精霊 -rand:4/6,6/6,6/6 -============================ -input: -RM -output: -CardRanker : ランダムモンスター選択(5,12) > 赤の12:火精霊 -rand:5/6,6/6,6/6 -============================ -input: -RM -output: -CardRanker : ランダムモンスター選択(6,12) > 黒の12:邪神 -rand:6/6,6/6,6/6 -============================ -input: -RM -output: -CardRanker : ランダムモンスター選択(1,2) > 白の2:白竜 -rand:1/6,1/6,1/6 -============================ -input: -RM -output: -CardRanker : ランダムモンスター選択(5,8) > 赤の8:大鬼 -rand:5/6,4/6,4/6 -============================ -input: -CMW12 -output: -CardRanker : モンスター選択 > 白の12:軍神 -rand: -============================ -input: -cMb2 -output: -CardRanker : モンスター選択 > 黒の2:黒竜 -rand: -============================ -input: -CmU7 -output: -CardRanker : モンスター選択 > 青の7:探偵 -rand: -============================ -input: -CmV3 -output: -CardRanker : モンスター選択 > 緑の3:ワーム -rand: -============================ -input: -CmG10 -output: -CardRanker : モンスター選択 > 金の10:運命 -rand: -============================ -input: -CmR11 -output: -CardRanker : モンスター選択 > 赤の11:炎 -rand: -============================ -input: -CMX1 -output: -rand: -============================ -input: -CMW1 -output: -rand: -============================ -input: -CMW99 -output: -rand: -============================ -input: -2d6>=7 -output: -CardRanker : (2D6>=7) > 2[1,1] > 2 > ファンブル -rand:1/6,1/6 -============================ -input: -2d6>=7 -output: -CardRanker : (2D6>=7) > 5[2,3] > 5 > 失敗 -rand:3/6,2/6 -============================ -input: -2d6>=7 -output: -CardRanker : (2D6>=7) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2d6>=7 -output: -CardRanker : (2D6>=7) > 12[6,6] > 12 > スペシャル > ランダムモンスター選択(2,7) > 青の7:探偵 -rand:6/6,6/6,2/6,3/6,4/6 -============================ -input: -BFT -output: -CardRanker : バトルフィールド表(6[6]) > デスルール/戦闘フェイズでも死亡判定が発声する。また、戦闘不能になったキャラクターは即座に死亡判定を行う。ただし、攻撃を行った側がデスルールを使用しないことを選択すれば、死亡判定は発生しない。//モンスターによって実際のダメージを与える、死の危険性があるルール。 -rand:6/6 -============================ -input: -CDT -output: -CardRanker : 崩壊運命表(6[6]) > 崩壊していく大地。泣き叫ぶ人々の声。あなたはこの状況を作ったのが、あなたの身内であると知る。ダークカードの手から身内を救うためにも、あなたはカードを手にとった。 -rand:6/6 -============================ -input: -CST -output: -CardRanker : 街中場所表(6[6]) > プール/都会にあるプール。都会の生活に疲れた人々が集まる場所。時おり、ソウルカードの戦いも見られる。 -rand:6/6 -============================ -input: -DT -output: -CardRanker : 運命表(6[6]) > ダークランカーとあなたは偶然にも出会ってしまった。ダークランカーは危険な存在だ。見てしまった以上、放っておくわけにはいかない。 -rand:6/6 -============================ -input: -GDT -output: -CardRanker : 学園運命表(6[6]) > ダークランカーの影響を受け、授業や部活動はまともにできなくなってしまった。あなたは元の学校生活を再開させるためにも、調査を始めた。 -rand:6/6 -============================ -input: -OST -output: -CardRanker : 郊外場所表(6[6]) > 海川/海や川。山と同じくカードの精霊たちが住んでいる場所だ。安らげる場所でもあり、休憩している人がソウルカードをしている。 -rand:6/6 -============================ -input: -GST -output: -CardRanker : 学園場所表(6[6]) > 部活棟/部活をやる者のために用意された場所。しかし、サボってソウルカードをやっているところも。 -rand:6/6 -============================ -input: -ST -output: -CardRanker : 場所表(6[6]) > 水辺/プールや海岸など、水が近くに存在する場所。ひとまず、ここでひと息つけそうだ。 -rand:6/6 -============================ -input: -TDT -output: -CardRanker : 大会運命表(6[6]) > あなたは大会に出場し、優勝候補と言われているカードランカーだ。だが、そんなキミをダークランカーは襲った。 -rand:6/6 -============================ -input: -WT -output: -CardRanker : 変調表(6[6]) > 暗闇/「タイプ:支援」のモンスターカードを使用できない。 -rand:6/6 -============================ -input: -SRM -output: -CardRanker : ランダムモンスター選択(1,12) > 白の12:軍神###secret dice### -rand:1/6,6/6,6/6 -============================ -input: -SST -output: -CardRanker : 場所表(6[6]) > 水辺/プールや海岸など、水が近くに存在する場所。ひとまず、ここでひと息つけそうだ。###secret dice### -rand:6/6 -============================ -input: -SCST -output: -CardRanker : 街中場所表(6[6]) > プール/都会にあるプール。都会の生活に疲れた人々が集まる場所。時おり、ソウルカードの戦いも見られる。###secret dice### -rand:6/6 -============================ -input: -SOST -output: -CardRanker : 郊外場所表(6[6]) > 海川/海や川。山と同じくカードの精霊たちが住んでいる場所だ。安らげる場所でもあり、休憩している人がソウルカードをしている。###secret dice### -rand:6/6 -============================ -input: -SGST -output: -CardRanker : 学園場所表(6[6]) > 部活棟/部活をやる者のために用意された場所。しかし、サボってソウルカードをやっているところも。###secret dice### -rand:6/6 -============================ -input: -SDT -output: -CardRanker : 運命表(6[6]) > ダークランカーとあなたは偶然にも出会ってしまった。ダークランカーは危険な存在だ。見てしまった以上、放っておくわけにはいかない。###secret dice### -rand:6/6 -============================ -input: -STDT -output: -CardRanker : 大会運命表(6[6]) > あなたは大会に出場し、優勝候補と言われているカードランカーだ。だが、そんなキミをダークランカーは襲った。###secret dice### -rand:6/6 -============================ -input: -SGDT -output: -CardRanker : 学園運命表(6[6]) > ダークランカーの影響を受け、授業や部活動はまともにできなくなってしまった。あなたは元の学校生活を再開させるためにも、調査を始めた。###secret dice### -rand:6/6 -============================ -input: -SCDT -output: -CardRanker : 崩壊運命表(6[6]) > 崩壊していく大地。泣き叫ぶ人々の声。あなたはこの状況を作ったのが、あなたの身内であると知る。ダークカードの手から身内を救うためにも、あなたはカードを手にとった。###secret dice### -rand:6/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -CardRanker : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/ChaosFlare.txt b/src/src_bcdice/test/data/ChaosFlare.txt deleted file mode 100644 index afc37a8fa..000000000 --- a/src/src_bcdice/test/data/ChaosFlare.txt +++ /dev/null @@ -1,336 +0,0 @@ -input: -2d6 -output: -ChaosFlare : (2D6) > 7[1,6] > 7 -rand:1/6,6/6 -============================ -input: -2d6 -output: -ChaosFlare : (2D6) > 4[2,2] > 4 -rand:2/6,2/6 -============================ -input: -2d6 -output: -ChaosFlare : (2D6) > 11[6,5] > 11 -rand:6/6,5/6 -============================ -input: -2d6 -output: -ChaosFlare : (2D6) > 2[1,1] > 2 -rand:1/6,1/6 -============================ -input: -2d6 -output: -ChaosFlare : (2D6) > 9[6,3] > 9 -rand:6/6,3/6 -============================ -input: -2d6 -output: -ChaosFlare : (2D6) > 12[6,6] > 12 -rand:6/6,6/6 -============================ -input: -2d6 -output: -ChaosFlare : (2D6) > 8[4,4] > 8 -rand:4/6,4/6 -============================ -input: -2d6 -output: -ChaosFlare : (2D6) > 9[6,3] > 9 -rand:6/6,3/6 -============================ -input: -2d6 -output: -ChaosFlare : (2D6) > 10[4,6] > 10 -rand:4/6,6/6 -============================ -input: -2d6 -output: -ChaosFlare : (2D6) > 7[4,3] > 7 -rand:4/6,3/6 -============================ -input: -2d6>=3 -output: -ChaosFlare : (2D6>=3) > 11[5,6] > 11 > 成功 > 差分値8 -rand:5/6,6/6 -============================ -input: -2d6>=3 -output: -ChaosFlare : (2D6>=3) > 9[6,3] > 9 > 成功 > 差分値6 -rand:6/6,3/6 -============================ -input: -2d6>=3 -output: -ChaosFlare : (2D6>=3) > 3[2,1] > 3 > 成功 -rand:2/6,1/6 -============================ -input: -2d6>=3 -output: -ChaosFlare : (2D6>=3) > 7[5,2] > 7 > 成功 > 差分値4 -rand:5/6,2/6 -============================ -input: -2d6>=3 -output: -ChaosFlare : (2D6>=3) > 7[5,2] > 7 > 成功 > 差分値4 -rand:5/6,2/6 -============================ -input: -2d6>=3 -output: -ChaosFlare : (2D6>=3) > 5[1,4] > 5 > 成功 > 差分値2 -rand:1/6,4/6 -============================ -input: -2d6>=3 -output: -ChaosFlare : (2D6>=3) > 11[5,6] > 11 > 成功 > 差分値8 -rand:5/6,6/6 -============================ -input: -2d6>=3 -output: -ChaosFlare : (2D6>=3) > 7[6,1] > 7 > 成功 > 差分値4 -rand:6/6,1/6 -============================ -input: -2d6>=3 -output: -ChaosFlare : (2D6>=3) > 7[5,2] > 7 > 成功 > 差分値4 -rand:5/6,2/6 -============================ -input: -2d6>=3 -output: -ChaosFlare : (2D6>=3) > 4[1,3] > 4 > 成功 > 差分値1 -rand:1/6,3/6 -============================ -input: -2d6>=10 -output: -ChaosFlare : (2D6>=10) > 7[3,4] > 7 > 失敗 > 差分値-3 -rand:3/6,4/6 -============================ -input: -2d6>=10 -output: -ChaosFlare : (2D6>=10) > 6[2,4] > 6 > 失敗 > 差分値-4 -rand:2/6,4/6 -============================ -input: -2d6>=10 -output: -ChaosFlare : (2D6>=10) > 12[6,6] > 12 > 成功 > 差分値2 -rand:6/6,6/6 -============================ -input: -2d6>=10 -output: -ChaosFlare : (2D6>=10) > 7[5,2] > 7 > 失敗 > 差分値-3 -rand:5/6,2/6 -============================ -input: -2d6>=10 -output: -ChaosFlare : (2D6>=10) > 6[4,2] > 6 > 失敗 > 差分値-4 -rand:4/6,2/6 -============================ -input: -2d6>=10 -output: -ChaosFlare : (2D6>=10) > 12[6,6] > 12 > 成功 > 差分値2 -rand:6/6,6/6 -============================ -input: -2d6>=10 -output: -ChaosFlare : (2D6>=10) > 4[3,1] > 4 > 失敗 > 差分値-6 -rand:3/6,1/6 -============================ -input: -2d6>=10 -output: -ChaosFlare : (2D6>=10) > 11[5,6] > 11 > 成功 > 差分値1 -rand:5/6,6/6 -============================ -input: -2d6>=10 -output: -ChaosFlare : (2D6>=10) > 9[6,3] > 9 > 失敗 > 差分値-1 -rand:6/6,3/6 -============================ -input: -2d6>=10 -output: -ChaosFlare : (2D6>=10) > 5[4,1] > 5 > 失敗 > 差分値-5 -rand:4/6,1/6 -============================ -input: -2d6>=7 -output: -ChaosFlare : (2D6>=7) > 6[2,4] > 6 > 失敗 > 差分値-1 -rand:2/6,4/6 -============================ -input: -2d6>=7 -output: -ChaosFlare : (2D6>=7) > 5[3,2] > 5 > 失敗 > 差分値-2 -rand:3/6,2/6 -============================ -input: -2d6>=7 -output: -ChaosFlare : (2D6>=7) > 6[1,5] > 6 > 失敗 > 差分値-1 -rand:1/6,5/6 -============================ -input: -2d6>=7 -output: -ChaosFlare : (2D6>=7) > 6[5,1] > 6 > 失敗 > 差分値-1 -rand:5/6,1/6 -============================ -input: -2d6>=7 -output: -ChaosFlare : (2D6>=7) > 4[2,2] > 4 > 失敗 > 差分値-3 -rand:2/6,2/6 -============================ -input: -2d6>=7 -output: -ChaosFlare : (2D6>=7) > 8[5,3] > 8 > 成功 > 差分値1 -rand:5/6,3/6 -============================ -input: -2d6>=7 -output: -ChaosFlare : (2D6>=7) > 6[1,5] > 6 > 失敗 > 差分値-1 -rand:1/6,5/6 -============================ -input: -2d6>=7 -output: -ChaosFlare : (2D6>=7) > 3[1,2] > 3 > 失敗 > 差分値-4 -rand:1/6,2/6 -============================ -input: -2d6>=7 -output: -ChaosFlare : (2D6>=7) > 8[6,2] > 8 > 成功 > 差分値1 -rand:6/6,2/6 -============================ -input: -2d6>=7 -output: -ChaosFlare : (2D6>=7) > 9[4,5] > 9 > 成功 > 差分値2 -rand:4/6,5/6 -============================ -input: -FT -output: -ChaosFlare : 因果表(45) > 期待 -rand:4/6,5/6 -============================ -input: -FT45 -output: -ChaosFlare : 因果表(45) > 期待 -rand: -============================ -input: -SFT -output: -ChaosFlare : 因果表(45) > 期待###secret dice### -rand:4/6,5/6 -============================ -input: -FT0 -output: -ChaosFlare : 因果表(0) > 腐れ縁 -rand: -============================ -input: -FT7 -output: -ChaosFlare : 因果表(7) > 任意 -rand: -============================ -input: -3CF+10+5-10@10#3>=10 -output: -ChaosFlare : (3CF+5@10#3>=10) > 10[4,5,1] > 35 > クリティカル > 差分値 25 -rand:4/6,5/6,1/6 -============================ -input: -3CF@10#3+10+5-10>=10 -output: -ChaosFlare : (3CF+5@10#3>=10) > 10[4,5,1] > 35 > クリティカル > 差分値 25 -rand:4/6,5/6,1/6 -============================ -input: -S3CF+10+5-10@10#3>=10 -output: -ChaosFlare : (3CF+5@10#3>=10) > 10[4,5,1] > 35 > クリティカル > 差分値 25###secret dice### -rand:4/6,5/6,1/6 -============================ -input: -CF -output: -ChaosFlare : (CF) > 9[4,5] > 9 -rand:4/6,5/6 -============================ -input: -SCF -output: -ChaosFlare : (CF) > 9[4,5] > 9###secret dice### -rand:4/6,5/6 -============================ -input: -3CF -output: -ChaosFlare : (3CF) > 10[4,5,1] > 10 -rand:4/6,5/6,1/6 -============================ -input: -CF@9 -output: -ChaosFlare : (CF@9) > 9[4,5] > 30 > クリティカル -rand:4/6,5/6 -============================ -input: -CF#5 -output: -ChaosFlare : (CF#5) > 4[1,3] > -20 > 0 > ファンブル -rand:1/6,3/6 -============================ -input: -CF+10@10>=10 -output: -ChaosFlare : (CF+10@10>=10) > 9[4,5] > 19 > 差分値 9 -rand:4/6,5/6 -============================ -input: -CF-10@10>=10 -output: -ChaosFlare : (CF-10@10>=10) > 9[4,5] > -1 > 0 > 差分値 -10 -rand:4/6,5/6 - -============================ -input: -2D6>=? 目標値?でバグらない -output: -ChaosFlare : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/Chill.txt b/src/src_bcdice/test/data/Chill.txt deleted file mode 100644 index 8fd21e8ec..000000000 --- a/src/src_bcdice/test/data/Chill.txt +++ /dev/null @@ -1,1373 +0,0 @@ -input: -1D100<=10 -output: -Chill : (1D100<=10) > 40 > 失敗 -rand:40/100 -============================ -input: -1D100<=10 -output: -Chill : (1D100<=10) > 55 > 失敗 -rand:55/100 -============================ -input: -1D100<=10 -output: -Chill : (1D100<=10) > 32 > 失敗 -rand:32/100 -============================ -input: -1D100<=10 -output: -Chill : (1D100<=10) > 42 > 失敗 -rand:42/100 -============================ -input: -1D100<=10 -output: -Chill : (1D100<=10) > 34 > 失敗 -rand:34/100 -============================ -input: -1D100<=10 -output: -Chill : (1D100<=10) > 6 > M成功 -rand:6/100 -============================ -input: -1D100<=10 -output: -Chill : (1D100<=10) > 41 > 失敗 -rand:41/100 -============================ -input: -1D100<=10 -output: -Chill : (1D100<=10) > 55 > 失敗 -rand:55/100 -============================ -input: -1D100<=10 -output: -Chill : (1D100<=10) > 97 > 失敗 -rand:97/100 -============================ -input: -1D100<=10 -output: -Chill : (1D100<=10) > 51 > 失敗 -rand:51/100 -============================ -input: -1D100<=90 -output: -Chill : (1D100<=90) > 5 > C成功 -rand:5/100 -============================ -input: -1D100<=90 -output: -Chill : (1D100<=90) > 68 > M成功 -rand:68/100 -============================ -input: -1D100<=90 -output: -Chill : (1D100<=90) > 29 > H成功 -rand:29/100 -============================ -input: -1D100<=90 -output: -Chill : (1D100<=90) > 80 > M成功 -rand:80/100 -============================ -input: -1D100<=90 -output: -Chill : (1D100<=90) > 38 > H成功 -rand:38/100 -============================ -input: -1D100<=90 -output: -Chill : (1D100<=90) > 51 > M成功 -rand:51/100 -============================ -input: -1D100<=90 -output: -Chill : (1D100<=90) > 45 > M成功 -rand:45/100 -============================ -input: -1D100<=90 -output: -Chill : (1D100<=90) > 25 > H成功 -rand:25/100 -============================ -input: -1D100<=90 -output: -Chill : (1D100<=90) > 42 > H成功 -rand:42/100 -============================ -input: -1D100<=90 -output: -Chill : (1D100<=90) > 24 > H成功 -rand:24/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 39 > M成功 -rand:39/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 98 > 失敗 -rand:98/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 84 > 失敗 -rand:84/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 55 > 失敗 -rand:55/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 57 > 失敗 -rand:57/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 58 > 失敗 -rand:58/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 1 > C成功 -rand:1/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 4 > C成功 -rand:4/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 5 > H成功 -rand:5/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 24 > H成功 -rand:24/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 25 > M成功 -rand:25/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 44 > M成功 -rand:44/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 45 > L成功 -rand:45/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 49 > L成功 -rand:49/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 50 > L成功 -rand:50/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 51 > 失敗 -rand:51/100 -============================ -input: -1D100<=50 -output: -Chill : (1D100<=50) > 76 > 失敗 -rand:76/100 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 3,10,1,8, 3 > 22, 3 > スタミナ損失22, 負傷3 -rand:3/10,10/10,1/10,8/10,3/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 10,9,9,3, 4 > 31, 4 > スタミナ損失31, 負傷4 -rand:10/10,9/10,9/10,3/10,4/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 3,1,1,3, 9 > 8, 9 > スタミナ損失8, 負傷9 -rand:3/10,1/10,1/10,3/10,9/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 1,6,3,1, 3 > 11, 3 > スタミナ損失11, 負傷3 -rand:1/10,6/10,3/10,1/10,3/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 10,4,4,2, 3 > 20, 3 > スタミナ損失20, 負傷3 -rand:10/10,4/10,4/10,2/10,3/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 3,1,6,2, 8 > 12, 8 > スタミナ損失12, 負傷8 -rand:3/10,1/10,6/10,2/10,8/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 1,5,9,10, 3 > 25, 3 > スタミナ損失25, 負傷3 -rand:1/10,5/10,9/10,10/10,3/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 3,5,3,1, 7 > 12, 7 > スタミナ損失12, 負傷7 -rand:3/10,5/10,3/10,1/10,7/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 2,2,10,9, 6 > 23, 6 > スタミナ損失23, 負傷6 -rand:2/10,2/10,10/10,9/10,6/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 4,10,2,8, 1 > 24, 1 > スタミナ損失24, 負傷1 -rand:4/10,10/10,2/10,8/10,1/10 -============================ -input: -sr13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (4,3,1,4,1)*3, (3,7,1,10)*2 > 13*3, 21*2 > スタミナ損失39, 負傷42 -rand:4/10,3/10,1/10,4/10,1/10,3/10,7/10,1/10,10/10 -============================ -input: -sr13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (7,4,6,9,3)*3, (1,3,4,4)*2 > 29*3, 12*2 > スタミナ損失87, 負傷24 -rand:7/10,4/10,6/10,9/10,3/10,1/10,3/10,4/10,4/10 -============================ -input: -sr13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (1,7,3,7,6)*3, (9,5,10,10)*2 > 24*3, 34*2 > スタミナ損失72, 負傷68 -rand:1/10,7/10,3/10,7/10,6/10,9/10,5/10,10/10,10/10 -============================ -input: -sr13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (7,3,5,10,2)*3, (3,10,1,1)*2 > 27*3, 15*2 > スタミナ損失81, 負傷30 -rand:7/10,3/10,5/10,10/10,2/10,3/10,10/10,1/10,1/10 -============================ -input: -sr13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (7,1,10,5,9)*3, (8,1,10,8)*2 > 32*3, 27*2 > スタミナ損失96, 負傷54 -rand:7/10,1/10,10/10,5/10,9/10,8/10,1/10,10/10,8/10 -============================ -input: -sr13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (6,9,2,7,2)*3, (2,2,4,4)*2 > 26*3, 12*2 > スタミナ損失78, 負傷24 -rand:6/10,9/10,2/10,7/10,2/10,2/10,2/10,4/10,4/10 -============================ -input: -sr13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (7,6,4,8,1)*3, (10,1,4,1)*2 > 26*3, 16*2 > スタミナ損失78, 負傷32 -rand:7/10,6/10,4/10,8/10,1/10,10/10,1/10,4/10,1/10 -============================ -input: -sr13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (9,7,7,4,9)*3, (10,4,10,5)*2 > 36*3, 29*2 > スタミナ損失108, 負傷58 -rand:9/10,7/10,7/10,4/10,9/10,10/10,4/10,10/10,5/10 -============================ -input: -sr13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (5,10,9,5,4)*3, (9,3,1,9)*2 > 33*3, 22*2 > スタミナ損失99, 負傷44 -rand:5/10,10/10,9/10,5/10,4/10,9/10,3/10,1/10,9/10 -============================ -input: -sr13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (2,9,8,2,9)*3, (9,8,5,3)*2 > 30*3, 25*2 > スタミナ損失90, 負傷50 -rand:2/10,9/10,8/10,2/10,9/10,9/10,8/10,5/10,3/10 -============================ -input: -SR(7+4) -output: -Chill : (SR11:5d10*2, 5d10) > (3,6,3,4,1)*2, 9,8,1,1,2 > 17*2, 21 > スタミナ損失34, 負傷21 -rand:3/10,6/10,3/10,4/10,1/10,9/10,8/10,1/10,1/10,2/10 -============================ -input: -SR(7+4) -output: -Chill : (SR11:5d10*2, 5d10) > (4,10,3,2,6)*2, 2,8,3,10,6 > 25*2, 29 > スタミナ損失50, 負傷29 -rand:4/10,10/10,3/10,2/10,6/10,2/10,8/10,3/10,10/10,6/10 -============================ -input: -SR(7+4) -output: -Chill : (SR11:5d10*2, 5d10) > (9,9,7,3,2)*2, 1,8,7,3,5 > 30*2, 24 > スタミナ損失60, 負傷24 -rand:9/10,9/10,7/10,3/10,2/10,1/10,8/10,7/10,3/10,5/10 -============================ -input: -SR(7+4) -output: -Chill : (SR11:5d10*2, 5d10) > (8,1,2,9,5)*2, 10,6,2,9,5 > 25*2, 32 > スタミナ損失50, 負傷32 -rand:8/10,1/10,2/10,9/10,5/10,10/10,6/10,2/10,9/10,5/10 -============================ -input: -SR(7+4) -output: -Chill : (SR11:5d10*2, 5d10) > (5,8,2,8,7)*2, 10,2,5,1,7 > 30*2, 25 > スタミナ損失60, 負傷25 -rand:5/10,8/10,2/10,8/10,7/10,10/10,2/10,5/10,1/10,7/10 -============================ -input: -SR(7+4) -output: -Chill : (SR11:5d10*2, 5d10) > (5,4,7,8,10)*2, 1,7,6,4,2 > 34*2, 20 > スタミナ損失68, 負傷20 -rand:5/10,4/10,7/10,8/10,10/10,1/10,7/10,6/10,4/10,2/10 -============================ -input: -SR(7+4) -output: -Chill : (SR11:5d10*2, 5d10) > (9,5,1,2,9)*2, 7,9,7,4,2 > 26*2, 29 > スタミナ損失52, 負傷29 -rand:9/10,5/10,1/10,2/10,9/10,7/10,9/10,7/10,4/10,2/10 -============================ -input: -SR(7+4) -output: -Chill : (SR11:5d10*2, 5d10) > (6,7,6,8,1)*2, 7,5,6,4,9 > 28*2, 31 > スタミナ損失56, 負傷31 -rand:6/10,7/10,6/10,8/10,1/10,7/10,5/10,6/10,4/10,9/10 -============================ -input: -SR(7+4) -output: -Chill : (SR11:5d10*2, 5d10) > (7,4,5,6,10)*2, 1,8,7,6,4 > 32*2, 26 > スタミナ損失64, 負傷26 -rand:7/10,4/10,5/10,6/10,10/10,1/10,8/10,7/10,6/10,4/10 -============================ -input: -SR(7+4) -output: -Chill : (SR11:5d10*2, 5d10) > (4,8,8,3,9)*2, 1,8,10,5,1 > 32*2, 25 > スタミナ損失64, 負傷25 -rand:4/10,8/10,8/10,3/10,9/10,1/10,8/10,10/10,5/10,1/10 -============================ -input: -Ssr10 -output: -Chill : (SR10:4d10*2, 4d10) > (9,2,4,10)*2, 5,6,5,8 > 25*2, 24 > スタミナ損失50, 負傷24###secret dice### -rand:9/10,2/10,4/10,10/10,5/10,6/10,5/10,8/10 -============================ -input: -Ssr10 -output: -Chill : (SR10:4d10*2, 4d10) > (3,10,5,6)*2, 7,3,2,9 > 24*2, 21 > スタミナ損失48, 負傷21###secret dice### -rand:3/10,10/10,5/10,6/10,7/10,3/10,2/10,9/10 -============================ -input: -Ssr10 -output: -Chill : (SR10:4d10*2, 4d10) > (6,5,5,6)*2, 1,5,1,9 > 22*2, 16 > スタミナ損失44, 負傷16###secret dice### -rand:6/10,5/10,5/10,6/10,1/10,5/10,1/10,9/10 -============================ -input: -Ssr10 -output: -Chill : (SR10:4d10*2, 4d10) > (7,5,4,1)*2, 9,2,7,7 > 17*2, 25 > スタミナ損失34, 負傷25###secret dice### -rand:7/10,5/10,4/10,1/10,9/10,2/10,7/10,7/10 -============================ -input: -Ssr10 -output: -Chill : (SR10:4d10*2, 4d10) > (7,1,1,3)*2, 8,7,5,8 > 12*2, 28 > スタミナ損失24, 負傷28###secret dice### -rand:7/10,1/10,1/10,3/10,8/10,7/10,5/10,8/10 -============================ -input: -Ssr10 -output: -Chill : (SR10:4d10*2, 4d10) > (4,4,10,6)*2, 7,7,5,10 > 24*2, 29 > スタミナ損失48, 負傷29###secret dice### -rand:4/10,4/10,10/10,6/10,7/10,7/10,5/10,10/10 -============================ -input: -Ssr10 -output: -Chill : (SR10:4d10*2, 4d10) > (7,9,3,1)*2, 1,7,5,1 > 20*2, 14 > スタミナ損失40, 負傷14###secret dice### -rand:7/10,9/10,3/10,1/10,1/10,7/10,5/10,1/10 -============================ -input: -Ssr10 -output: -Chill : (SR10:4d10*2, 4d10) > (6,10,2,7)*2, 5,8,8,2 > 25*2, 23 > スタミナ損失50, 負傷23###secret dice### -rand:6/10,10/10,2/10,7/10,5/10,8/10,8/10,2/10 -============================ -input: -Ssr10 -output: -Chill : (SR10:4d10*2, 4d10) > (2,1,8,1)*2, 6,1,8,9 > 12*2, 24 > スタミナ損失24, 負傷24###secret dice### -rand:2/10,1/10,8/10,1/10,6/10,1/10,8/10,9/10 -============================ -input: -Ssr10 -output: -Chill : (SR10:4d10*2, 4d10) > (9,4,5,3)*2, 7,8,9,4 > 21*2, 28 > スタミナ損失42, 負傷28###secret dice### -rand:9/10,4/10,5/10,3/10,7/10,8/10,9/10,4/10 -============================ -input: -SR1 -output: -Chill : (SR1:0or1, -) > 2, - > 1, - > スタミナ損失1, 負傷0 -rand:2/2 -============================ -input: -SR1 -output: -Chill : (SR1:0or1, -) > 2, - > 1, - > スタミナ損失1, 負傷0 -rand:2/2 -============================ -input: -SR1 -output: -Chill : (SR1:0or1, -) > 2, - > 1, - > スタミナ損失1, 負傷0 -rand:2/2 -============================ -input: -SR1 -output: -Chill : (SR1:0or1, -) > 2, - > 1, - > スタミナ損失1, 負傷0 -rand:2/2 -============================ -input: -SR1 -output: -Chill : (SR1:0or1, -) > 2, - > 1, - > スタミナ損失1, 負傷0 -rand:2/2 -============================ -input: -SR1 -output: -Chill : (SR1:0or1, -) > 2, - > 1, - > スタミナ損失1, 負傷0 -rand:2/2 -============================ -input: -SR1 -output: -Chill : (SR1:0or1, -) > 1, - > 0, - > スタミナ損失0, 負傷0 -rand:1/2 -============================ -input: -SR1 -output: -Chill : (SR1:0or1, -) > 2, - > 1, - > スタミナ損失1, 負傷0 -rand:2/2 -============================ -input: -SR1 -output: -Chill : (SR1:0or1, -) > 2, - > 1, - > スタミナ損失1, 負傷0 -rand:2/2 -============================ -input: -SR1 -output: -Chill : (SR1:0or1, -) > 2, - > 1, - > スタミナ損失1, 負傷0 -rand:2/2 -============================ -input: -SR2 -output: -Chill : (SR2:1or2, -) > 2, - > 2, - > スタミナ損失2, 負傷0 -rand:2/2 -============================ -input: -SR2 -output: -Chill : (SR2:1or2, -) > 1, - > 1, - > スタミナ損失1, 負傷0 -rand:1/2 -============================ -input: -SR2 -output: -Chill : (SR2:1or2, -) > 1, - > 1, - > スタミナ損失1, 負傷0 -rand:1/2 -============================ -input: -SR2 -output: -Chill : (SR2:1or2, -) > 2, - > 2, - > スタミナ損失2, 負傷0 -rand:2/2 -============================ -input: -SR2 -output: -Chill : (SR2:1or2, -) > 2, - > 2, - > スタミナ損失2, 負傷0 -rand:2/2 -============================ -input: -SR2 -output: -Chill : (SR2:1or2, -) > 1, - > 1, - > スタミナ損失1, 負傷0 -rand:1/2 -============================ -input: -SR2 -output: -Chill : (SR2:1or2, -) > 2, - > 2, - > スタミナ損失2, 負傷0 -rand:2/2 -============================ -input: -SR2 -output: -Chill : (SR2:1or2, -) > 1, - > 1, - > スタミナ損失1, 負傷0 -rand:1/2 -============================ -input: -SR2 -output: -Chill : (SR2:1or2, -) > 1, - > 1, - > スタミナ損失1, 負傷0 -rand:1/2 -============================ -input: -SR2 -output: -Chill : (SR2:1or2, -) > 1, - > 1, - > スタミナ損失1, 負傷0 -rand:1/2 -============================ -input: -SR3 -output: -Chill : (SR3:1d5, -) > 1, - > 1, - > スタミナ損失1, 負傷0 -rand:1/5 -============================ -input: -SR3 -output: -Chill : (SR3:1d5, -) > 5, - > 5, - > スタミナ損失5, 負傷0 -rand:5/5 -============================ -input: -SR3 -output: -Chill : (SR3:1d5, -) > 5, - > 5, - > スタミナ損失5, 負傷0 -rand:5/5 -============================ -input: -SR3 -output: -Chill : (SR3:1d5, -) > 1, - > 1, - > スタミナ損失1, 負傷0 -rand:1/5 -============================ -input: -SR3 -output: -Chill : (SR3:1d5, -) > 1, - > 1, - > スタミナ損失1, 負傷0 -rand:1/5 -============================ -input: -SR3 -output: -Chill : (SR3:1d5, -) > 5, - > 5, - > スタミナ損失5, 負傷0 -rand:5/5 -============================ -input: -SR3 -output: -Chill : (SR3:1d5, -) > 4, - > 4, - > スタミナ損失4, 負傷0 -rand:4/5 -============================ -input: -SR3 -output: -Chill : (SR3:1d5, -) > 3, - > 3, - > スタミナ損失3, 負傷0 -rand:3/5 -============================ -input: -SR3 -output: -Chill : (SR3:1d5, -) > 1, - > 1, - > スタミナ損失1, 負傷0 -rand:1/5 -============================ -input: -SR3 -output: -Chill : (SR3:1d5, -) > 4, - > 4, - > スタミナ損失4, 負傷0 -rand:4/5 -============================ -input: -SR4 -output: -Chill : (SR4:1d10, 0or1) > 6, 2 > 6, 1 > スタミナ損失6, 負傷1 -rand:6/10,2/2 -============================ -input: -SR4 -output: -Chill : (SR4:1d10, 0or1) > 1, 1 > 1, 0 > スタミナ損失1, 負傷0 -rand:1/10,1/2 -============================ -input: -SR4 -output: -Chill : (SR4:1d10, 0or1) > 5, 2 > 5, 1 > スタミナ損失5, 負傷1 -rand:5/10,2/2 -============================ -input: -SR4 -output: -Chill : (SR4:1d10, 0or1) > 1, 2 > 1, 1 > スタミナ損失1, 負傷1 -rand:1/10,2/2 -============================ -input: -SR4 -output: -Chill : (SR4:1d10, 0or1) > 1, 2 > 1, 1 > スタミナ損失1, 負傷1 -rand:1/10,2/2 -============================ -input: -SR4 -output: -Chill : (SR4:1d10, 0or1) > 6, 2 > 6, 1 > スタミナ損失6, 負傷1 -rand:6/10,2/2 -============================ -input: -SR4 -output: -Chill : (SR4:1d10, 0or1) > 7, 1 > 7, 0 > スタミナ損失7, 負傷0 -rand:7/10,1/2 -============================ -input: -SR4 -output: -Chill : (SR4:1d10, 0or1) > 3, 1 > 3, 0 > スタミナ損失3, 負傷0 -rand:3/10,1/2 -============================ -input: -SR4 -output: -Chill : (SR4:1d10, 0or1) > 9, 2 > 9, 1 > スタミナ損失9, 負傷1 -rand:9/10,2/2 -============================ -input: -SR4 -output: -Chill : (SR4:1d10, 0or1) > 3, 2 > 3, 1 > スタミナ損失3, 負傷1 -rand:3/10,2/2 -============================ -input: -SR5 -output: -Chill : (SR5:2d10, 1or2) > 2,2, 2 > 4, 2 > スタミナ損失4, 負傷2 -rand:2/10,2/10,2/2 -============================ -input: -SR5 -output: -Chill : (SR5:2d10, 1or2) > 10,8, 1 > 18, 1 > スタミナ損失18, 負傷1 -rand:10/10,8/10,1/2 -============================ -input: -SR5 -output: -Chill : (SR5:2d10, 1or2) > 9,9, 2 > 18, 2 > スタミナ損失18, 負傷2 -rand:9/10,9/10,2/2 -============================ -input: -SR5 -output: -Chill : (SR5:2d10, 1or2) > 10,9, 1 > 19, 1 > スタミナ損失19, 負傷1 -rand:10/10,9/10,1/2 -============================ -input: -SR5 -output: -Chill : (SR5:2d10, 1or2) > 4,8, 2 > 12, 2 > スタミナ損失12, 負傷2 -rand:4/10,8/10,2/2 -============================ -input: -SR5 -output: -Chill : (SR5:2d10, 1or2) > 6,5, 1 > 11, 1 > スタミナ損失11, 負傷1 -rand:6/10,5/10,1/2 -============================ -input: -SR5 -output: -Chill : (SR5:2d10, 1or2) > 7,6, 1 > 13, 1 > スタミナ損失13, 負傷1 -rand:7/10,6/10,1/2 -============================ -input: -SR5 -output: -Chill : (SR5:2d10, 1or2) > 2,9, 1 > 11, 1 > スタミナ損失11, 負傷1 -rand:2/10,9/10,1/2 -============================ -input: -SR5 -output: -Chill : (SR5:2d10, 1or2) > 1,8, 1 > 9, 1 > スタミナ損失9, 負傷1 -rand:1/10,8/10,1/2 -============================ -input: -SR5 -output: -Chill : (SR5:2d10, 1or2) > 4,5, 2 > 9, 2 > スタミナ損失9, 負傷2 -rand:4/10,5/10,2/2 -============================ -input: -SR6 -output: -Chill : (SR6:3d10, 1d5) > 1,4,8, 5 > 13, 5 > スタミナ損失13, 負傷5 -rand:1/10,4/10,8/10,5/5 -============================ -input: -SR6 -output: -Chill : (SR6:3d10, 1d5) > 9,5,3, 1 > 17, 1 > スタミナ損失17, 負傷1 -rand:9/10,5/10,3/10,1/5 -============================ -input: -SR6 -output: -Chill : (SR6:3d10, 1d5) > 4,8,3, 3 > 15, 3 > スタミナ損失15, 負傷3 -rand:4/10,8/10,3/10,3/5 -============================ -input: -SR6 -output: -Chill : (SR6:3d10, 1d5) > 1,10,9, 2 > 20, 2 > スタミナ損失20, 負傷2 -rand:1/10,10/10,9/10,2/5 -============================ -input: -SR6 -output: -Chill : (SR6:3d10, 1d5) > 7,5,6, 5 > 18, 5 > スタミナ損失18, 負傷5 -rand:7/10,5/10,6/10,5/5 -============================ -input: -SR6 -output: -Chill : (SR6:3d10, 1d5) > 1,7,8, 1 > 16, 1 > スタミナ損失16, 負傷1 -rand:1/10,7/10,8/10,1/5 -============================ -input: -SR6 -output: -Chill : (SR6:3d10, 1d5) > 2,8,6, 1 > 16, 1 > スタミナ損失16, 負傷1 -rand:2/10,8/10,6/10,1/5 -============================ -input: -SR6 -output: -Chill : (SR6:3d10, 1d5) > 8,3,4, 4 > 15, 4 > スタミナ損失15, 負傷4 -rand:8/10,3/10,4/10,4/5 -============================ -input: -SR6 -output: -Chill : (SR6:3d10, 1d5) > 2,1,6, 1 > 9, 1 > スタミナ損失9, 負傷1 -rand:2/10,1/10,6/10,1/5 -============================ -input: -SR6 -output: -Chill : (SR6:3d10, 1d5) > 9,10,7, 1 > 26, 1 > スタミナ損失26, 負傷1 -rand:9/10,10/10,7/10,1/5 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 3,3,10,7, 4 > 23, 4 > スタミナ損失23, 負傷4 -rand:3/10,3/10,10/10,7/10,4/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 3,2,1,10, 6 > 16, 6 > スタミナ損失16, 負傷6 -rand:3/10,2/10,1/10,10/10,6/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 2,8,3,6, 2 > 19, 2 > スタミナ損失19, 負傷2 -rand:2/10,8/10,3/10,6/10,2/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 10,9,1,3, 3 > 23, 3 > スタミナ損失23, 負傷3 -rand:10/10,9/10,1/10,3/10,3/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 5,9,10,2, 4 > 26, 4 > スタミナ損失26, 負傷4 -rand:5/10,9/10,10/10,2/10,4/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 6,3,8,6, 5 > 23, 5 > スタミナ損失23, 負傷5 -rand:6/10,3/10,8/10,6/10,5/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 10,6,6,3, 1 > 25, 1 > スタミナ損失25, 負傷1 -rand:10/10,6/10,6/10,3/10,1/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 5,8,2,2, 8 > 17, 8 > スタミナ損失17, 負傷8 -rand:5/10,8/10,2/10,2/10,8/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 6,3,3,2, 5 > 14, 5 > スタミナ損失14, 負傷5 -rand:6/10,3/10,3/10,2/10,5/10 -============================ -input: -SR7 -output: -Chill : (SR7:4d10, 1d10) > 6,6,4,3, 1 > 19, 1 > スタミナ損失19, 負傷1 -rand:6/10,6/10,4/10,3/10,1/10 -============================ -input: -SR8 -output: -Chill : (SR8:5d10, 2d10) > 8,2,10,3,6, 9,7 > 29, 16 > スタミナ損失29, 負傷16 -rand:8/10,2/10,10/10,3/10,6/10,9/10,7/10 -============================ -input: -SR8 -output: -Chill : (SR8:5d10, 2d10) > 6,9,4,4,8, 9,9 > 31, 18 > スタミナ損失31, 負傷18 -rand:6/10,9/10,4/10,4/10,8/10,9/10,9/10 -============================ -input: -SR8 -output: -Chill : (SR8:5d10, 2d10) > 7,1,2,7,9, 8,3 > 26, 11 > スタミナ損失26, 負傷11 -rand:7/10,1/10,2/10,7/10,9/10,8/10,3/10 -============================ -input: -SR8 -output: -Chill : (SR8:5d10, 2d10) > 4,1,8,5,10, 4,10 > 28, 14 > スタミナ損失28, 負傷14 -rand:4/10,1/10,8/10,5/10,10/10,4/10,10/10 -============================ -input: -SR8 -output: -Chill : (SR8:5d10, 2d10) > 4,2,3,6,7, 2,5 > 22, 7 > スタミナ損失22, 負傷7 -rand:4/10,2/10,3/10,6/10,7/10,2/10,5/10 -============================ -input: -SR8 -output: -Chill : (SR8:5d10, 2d10) > 4,9,7,6,2, 4,2 > 28, 6 > スタミナ損失28, 負傷6 -rand:4/10,9/10,7/10,6/10,2/10,4/10,2/10 -============================ -input: -SR8 -output: -Chill : (SR8:5d10, 2d10) > 3,6,8,1,4, 2,9 > 22, 11 > スタミナ損失22, 負傷11 -rand:3/10,6/10,8/10,1/10,4/10,2/10,9/10 -============================ -input: -SR8 -output: -Chill : (SR8:5d10, 2d10) > 4,3,6,7,6, 4,1 > 26, 5 > スタミナ損失26, 負傷5 -rand:4/10,3/10,6/10,7/10,6/10,4/10,1/10 -============================ -input: -SR8 -output: -Chill : (SR8:5d10, 2d10) > 5,6,10,9,8, 1,2 > 38, 3 > スタミナ損失38, 負傷3 -rand:5/10,6/10,10/10,9/10,8/10,1/10,2/10 -============================ -input: -SR8 -output: -Chill : (SR8:5d10, 2d10) > 7,8,1,4,6, 5,5 > 26, 10 > スタミナ損失26, 負傷10 -rand:7/10,8/10,1/10,4/10,6/10,5/10,5/10 -============================ -input: -SR9 -output: -Chill : (SR9:6d10, 3d10) > 10,8,10,8,4,2, 7,6,10 > 42, 23 > スタミナ損失42, 負傷23 -rand:10/10,8/10,10/10,8/10,4/10,2/10,7/10,6/10,10/10 -============================ -input: -SR9 -output: -Chill : (SR9:6d10, 3d10) > 5,1,1,5,3,1, 4,8,8 > 16, 20 > スタミナ損失16, 負傷20 -rand:5/10,1/10,1/10,5/10,3/10,1/10,4/10,8/10,8/10 -============================ -input: -SR9 -output: -Chill : (SR9:6d10, 3d10) > 10,9,8,10,7,9, 7,10,1 > 53, 18 > スタミナ損失53, 負傷18 -rand:10/10,9/10,8/10,10/10,7/10,9/10,7/10,10/10,1/10 -============================ -input: -SR9 -output: -Chill : (SR9:6d10, 3d10) > 5,9,4,3,2,2, 10,10,4 > 25, 24 > スタミナ損失25, 負傷24 -rand:5/10,9/10,4/10,3/10,2/10,2/10,10/10,10/10,4/10 -============================ -input: -SR9 -output: -Chill : (SR9:6d10, 3d10) > 6,9,2,5,1,8, 8,2,10 > 31, 20 > スタミナ損失31, 負傷20 -rand:6/10,9/10,2/10,5/10,1/10,8/10,8/10,2/10,10/10 -============================ -input: -SR9 -output: -Chill : (SR9:6d10, 3d10) > 10,9,7,1,6,9, 4,7,10 > 42, 21 > スタミナ損失42, 負傷21 -rand:10/10,9/10,7/10,1/10,6/10,9/10,4/10,7/10,10/10 -============================ -input: -SR9 -output: -Chill : (SR9:6d10, 3d10) > 6,3,8,10,5,2, 1,10,2 > 34, 13 > スタミナ損失34, 負傷13 -rand:6/10,3/10,8/10,10/10,5/10,2/10,1/10,10/10,2/10 -============================ -input: -SR9 -output: -Chill : (SR9:6d10, 3d10) > 8,7,7,10,7,8, 7,6,3 > 47, 16 > スタミナ損失47, 負傷16 -rand:8/10,7/10,7/10,10/10,7/10,8/10,7/10,6/10,3/10 -============================ -input: -SR9 -output: -Chill : (SR9:6d10, 3d10) > 8,7,2,4,9,9, 4,4,4 > 39, 12 > スタミナ損失39, 負傷12 -rand:8/10,7/10,2/10,4/10,9/10,9/10,4/10,4/10,4/10 -============================ -input: -SR9 -output: -Chill : (SR9:6d10, 3d10) > 6,3,1,10,3,5, 2,1,9 > 28, 12 > スタミナ損失28, 負傷12 -rand:6/10,3/10,1/10,10/10,3/10,5/10,2/10,1/10,9/10 -============================ -input: -SR10 -output: -Chill : (SR10:4d10*2, 4d10) > (4,7,10,3)*2, 6,1,9,1 > 24*2, 17 > スタミナ損失48, 負傷17 -rand:4/10,7/10,10/10,3/10,6/10,1/10,9/10,1/10 -============================ -input: -SR10 -output: -Chill : (SR10:4d10*2, 4d10) > (6,10,6,4)*2, 10,2,4,8 > 26*2, 24 > スタミナ損失52, 負傷24 -rand:6/10,10/10,6/10,4/10,10/10,2/10,4/10,8/10 -============================ -input: -SR10 -output: -Chill : (SR10:4d10*2, 4d10) > (7,8,6,7)*2, 2,5,3,2 > 28*2, 12 > スタミナ損失56, 負傷12 -rand:7/10,8/10,6/10,7/10,2/10,5/10,3/10,2/10 -============================ -input: -SR10 -output: -Chill : (SR10:4d10*2, 4d10) > (5,4,4,9)*2, 3,5,4,8 > 22*2, 20 > スタミナ損失44, 負傷20 -rand:5/10,4/10,4/10,9/10,3/10,5/10,4/10,8/10 -============================ -input: -SR10 -output: -Chill : (SR10:4d10*2, 4d10) > (2,2,6,10)*2, 5,2,1,6 > 20*2, 14 > スタミナ損失40, 負傷14 -rand:2/10,2/10,6/10,10/10,5/10,2/10,1/10,6/10 -============================ -input: -SR10 -output: -Chill : (SR10:4d10*2, 4d10) > (7,10,8,4)*2, 8,7,10,10 > 29*2, 35 > スタミナ損失58, 負傷35 -rand:7/10,10/10,8/10,4/10,8/10,7/10,10/10,10/10 -============================ -input: -SR10 -output: -Chill : (SR10:4d10*2, 4d10) > (6,3,2,10)*2, 7,1,8,9 > 21*2, 25 > スタミナ損失42, 負傷25 -rand:6/10,3/10,2/10,10/10,7/10,1/10,8/10,9/10 -============================ -input: -SR10 -output: -Chill : (SR10:4d10*2, 4d10) > (9,4,1,8)*2, 5,10,3,4 > 22*2, 22 > スタミナ損失44, 負傷22 -rand:9/10,4/10,1/10,8/10,5/10,10/10,3/10,4/10 -============================ -input: -SR10 -output: -Chill : (SR10:4d10*2, 4d10) > (5,1,6,5)*2, 9,2,4,1 > 17*2, 16 > スタミナ損失34, 負傷16 -rand:5/10,1/10,6/10,5/10,9/10,2/10,4/10,1/10 -============================ -input: -SR10 -output: -Chill : (SR10:4d10*2, 4d10) > (1,2,9,10)*2, 5,2,6,4 > 22*2, 17 > スタミナ損失44, 負傷17 -rand:1/10,2/10,9/10,10/10,5/10,2/10,6/10,4/10 -============================ -input: -SR11 -output: -Chill : (SR11:5d10*2, 5d10) > (8,3,8,4,1)*2, 1,10,6,9,8 > 24*2, 34 > スタミナ損失48, 負傷34 -rand:8/10,3/10,8/10,4/10,1/10,1/10,10/10,6/10,9/10,8/10 -============================ -input: -SR11 -output: -Chill : (SR11:5d10*2, 5d10) > (4,7,1,7,1)*2, 6,9,5,9,3 > 20*2, 32 > スタミナ損失40, 負傷32 -rand:4/10,7/10,1/10,7/10,1/10,6/10,9/10,5/10,9/10,3/10 -============================ -input: -SR11 -output: -Chill : (SR11:5d10*2, 5d10) > (9,10,8,5,2)*2, 2,4,5,9,10 > 34*2, 30 > スタミナ損失68, 負傷30 -rand:9/10,10/10,8/10,5/10,2/10,2/10,4/10,5/10,9/10,10/10 -============================ -input: -SR11 -output: -Chill : (SR11:5d10*2, 5d10) > (2,6,9,5,1)*2, 8,10,7,1,5 > 23*2, 31 > スタミナ損失46, 負傷31 -rand:2/10,6/10,9/10,5/10,1/10,8/10,10/10,7/10,1/10,5/10 -============================ -input: -SR11 -output: -Chill : (SR11:5d10*2, 5d10) > (4,5,4,1,9)*2, 5,3,3,4,1 > 23*2, 16 > スタミナ損失46, 負傷16 -rand:4/10,5/10,4/10,1/10,9/10,5/10,3/10,3/10,4/10,1/10 -============================ -input: -SR11 -output: -Chill : (SR11:5d10*2, 5d10) > (10,4,7,8,5)*2, 3,1,5,6,7 > 34*2, 22 > スタミナ損失68, 負傷22 -rand:10/10,4/10,7/10,8/10,5/10,3/10,1/10,5/10,6/10,7/10 -============================ -input: -SR11 -output: -Chill : (SR11:5d10*2, 5d10) > (6,8,5,4,9)*2, 4,3,3,8,10 > 32*2, 28 > スタミナ損失64, 負傷28 -rand:6/10,8/10,5/10,4/10,9/10,4/10,3/10,3/10,8/10,10/10 -============================ -input: -SR11 -output: -Chill : (SR11:5d10*2, 5d10) > (9,2,3,3,3)*2, 4,3,4,1,10 > 20*2, 22 > スタミナ損失40, 負傷22 -rand:9/10,2/10,3/10,3/10,3/10,4/10,3/10,4/10,1/10,10/10 -============================ -input: -SR11 -output: -Chill : (SR11:5d10*2, 5d10) > (9,9,6,5,10)*2, 7,1,9,2,10 > 39*2, 29 > スタミナ損失78, 負傷29 -rand:9/10,9/10,6/10,5/10,10/10,7/10,1/10,9/10,2/10,10/10 -============================ -input: -SR11 -output: -Chill : (SR11:5d10*2, 5d10) > (9,2,9,9,3)*2, 8,9,8,8,7 > 32*2, 40 > スタミナ損失64, 負傷40 -rand:9/10,2/10,9/10,9/10,3/10,8/10,9/10,8/10,8/10,7/10 -============================ -input: -SR12 -output: -Chill : (SR12:6d10*2, 6d10) > (6,10,3,2,4,3)*2, 9,5,4,5,7,5 > 28*2, 35 > スタミナ損失56, 負傷35 -rand:6/10,10/10,3/10,2/10,4/10,3/10,9/10,5/10,4/10,5/10,7/10,5/10 -============================ -input: -SR12 -output: -Chill : (SR12:6d10*2, 6d10) > (7,7,9,4,2,9)*2, 6,3,3,2,3,5 > 38*2, 22 > スタミナ損失76, 負傷22 -rand:7/10,7/10,9/10,4/10,2/10,9/10,6/10,3/10,3/10,2/10,3/10,5/10 -============================ -input: -SR12 -output: -Chill : (SR12:6d10*2, 6d10) > (7,9,3,10,2,3)*2, 6,4,1,10,10,7 > 34*2, 38 > スタミナ損失68, 負傷38 -rand:7/10,9/10,3/10,10/10,2/10,3/10,6/10,4/10,1/10,10/10,10/10,7/10 -============================ -input: -SR12 -output: -Chill : (SR12:6d10*2, 6d10) > (10,3,3,2,10,8)*2, 3,7,1,8,6,4 > 36*2, 29 > スタミナ損失72, 負傷29 -rand:10/10,3/10,3/10,2/10,10/10,8/10,3/10,7/10,1/10,8/10,6/10,4/10 -============================ -input: -SR12 -output: -Chill : (SR12:6d10*2, 6d10) > (2,5,6,7,1,9)*2, 1,8,6,4,9,8 > 30*2, 36 > スタミナ損失60, 負傷36 -rand:2/10,5/10,6/10,7/10,1/10,9/10,1/10,8/10,6/10,4/10,9/10,8/10 -============================ -input: -SR12 -output: -Chill : (SR12:6d10*2, 6d10) > (3,7,9,8,5,2)*2, 7,10,6,4,1,3 > 34*2, 31 > スタミナ損失68, 負傷31 -rand:3/10,7/10,9/10,8/10,5/10,2/10,7/10,10/10,6/10,4/10,1/10,3/10 -============================ -input: -SR12 -output: -Chill : (SR12:6d10*2, 6d10) > (3,4,8,7,6,7)*2, 7,8,8,7,7,4 > 35*2, 41 > スタミナ損失70, 負傷41 -rand:3/10,4/10,8/10,7/10,6/10,7/10,7/10,8/10,8/10,7/10,7/10,4/10 -============================ -input: -SR12 -output: -Chill : (SR12:6d10*2, 6d10) > (4,8,10,2,7,10)*2, 6,10,6,7,6,8 > 41*2, 43 > スタミナ損失82, 負傷43 -rand:4/10,8/10,10/10,2/10,7/10,10/10,6/10,10/10,6/10,7/10,6/10,8/10 -============================ -input: -SR12 -output: -Chill : (SR12:6d10*2, 6d10) > (10,7,8,5,4,4)*2, 3,1,6,4,1,3 > 38*2, 18 > スタミナ損失76, 負傷18 -rand:10/10,7/10,8/10,5/10,4/10,4/10,3/10,1/10,6/10,4/10,1/10,3/10 -============================ -input: -SR12 -output: -Chill : (SR12:6d10*2, 6d10) > (9,9,6,5,2,8)*2, 5,2,4,8,3,4 > 39*2, 26 > スタミナ損失78, 負傷26 -rand:9/10,9/10,6/10,5/10,2/10,8/10,5/10,2/10,4/10,8/10,3/10,4/10 -============================ -input: -SR13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (9,3,9,8,10)*3, (2,6,5,1)*2 > 39*3, 14*2 > スタミナ損失117, 負傷28 -rand:9/10,3/10,9/10,8/10,10/10,2/10,6/10,5/10,1/10 -============================ -input: -SR13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (10,10,3,2,7)*3, (1,8,4,9)*2 > 32*3, 22*2 > スタミナ損失96, 負傷44 -rand:10/10,10/10,3/10,2/10,7/10,1/10,8/10,4/10,9/10 -============================ -input: -SR13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (10,1,8,10,1)*3, (3,6,1,3)*2 > 30*3, 13*2 > スタミナ損失90, 負傷26 -rand:10/10,1/10,8/10,10/10,1/10,3/10,6/10,1/10,3/10 -============================ -input: -SR13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (2,2,5,5,10)*3, (8,10,9,6)*2 > 24*3, 33*2 > スタミナ損失72, 負傷66 -rand:2/10,2/10,5/10,5/10,10/10,8/10,10/10,9/10,6/10 -============================ -input: -SR13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (4,8,6,4,3)*3, (1,5,4,9)*2 > 25*3, 19*2 > スタミナ損失75, 負傷38 -rand:4/10,8/10,6/10,4/10,3/10,1/10,5/10,4/10,9/10 -============================ -input: -SR13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (10,3,4,1,1)*3, (4,3,3,5)*2 > 19*3, 15*2 > スタミナ損失57, 負傷30 -rand:10/10,3/10,4/10,1/10,1/10,4/10,3/10,3/10,5/10 -============================ -input: -SR13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (6,6,4,10,5)*3, (5,3,10,5)*2 > 31*3, 23*2 > スタミナ損失93, 負傷46 -rand:6/10,6/10,4/10,10/10,5/10,5/10,3/10,10/10,5/10 -============================ -input: -SR13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (4,5,8,9,2)*3, (6,6,5,10)*2 > 28*3, 27*2 > スタミナ損失84, 負傷54 -rand:4/10,5/10,8/10,9/10,2/10,6/10,6/10,5/10,10/10 -============================ -input: -SR13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (4,6,6,3,3)*3, (8,1,5,8)*2 > 22*3, 22*2 > スタミナ損失66, 負傷44 -rand:4/10,6/10,6/10,3/10,3/10,8/10,1/10,5/10,8/10 -============================ -input: -SR13 -output: -Chill : (SR13:5d10*3, 4d10*2) > (3,7,2,4,3)*3, (5,9,1,6)*2 > 19*3, 21*2 > スタミナ損失57, 負傷42 -rand:3/10,7/10,2/10,4/10,3/10,5/10,9/10,1/10,6/10 -============================ -input: -SR14 -output: -Chill : (SR14:5d10*3, 4d10+2d10) > (3,9,2,9,8)*3, 7,10,4,8+5,1 > 31*3, 29+6 > スタミナ損失93, 負傷35 -rand:3/10,9/10,2/10,9/10,8/10,7/10,10/10,4/10,8/10,5/10,1/10 -============================ -input: -SR14 -output: -Chill : (SR14:5d10*3, 4d10+2d10) > (3,7,4,1,7)*3, 5,7,6,9+1,8 > 22*3, 27+9 > スタミナ損失66, 負傷36 -rand:3/10,7/10,4/10,1/10,7/10,5/10,7/10,6/10,9/10,1/10,8/10 -============================ -input: -SR14 -output: -Chill : (SR14:5d10*3, 4d10+2d10) > (10,6,5,5,5)*3, 6,10,1,6+4,8 > 31*3, 23+12 > スタミナ損失93, 負傷35 -rand:10/10,6/10,5/10,5/10,5/10,6/10,10/10,1/10,6/10,4/10,8/10 -============================ -input: -SR14 -output: -Chill : (SR14:5d10*3, 4d10+2d10) > (10,7,4,10,8)*3, 6,5,8,10+1,10 > 39*3, 29+11 > スタミナ損失117, 負傷40 -rand:10/10,7/10,4/10,10/10,8/10,6/10,5/10,8/10,10/10,1/10,10/10 -============================ -input: -SR14 -output: -Chill : (SR14:5d10*3, 4d10+2d10) > (9,7,7,8,3)*3, 6,10,7,3+6,2 > 34*3, 26+8 > スタミナ損失102, 負傷34 -rand:9/10,7/10,7/10,8/10,3/10,6/10,10/10,7/10,3/10,6/10,2/10 -============================ -input: -SR14 -output: -Chill : (SR14:5d10*3, 4d10+2d10) > (4,3,2,10,5)*3, 5,3,5,9+1,1 > 24*3, 22+2 > スタミナ損失72, 負傷24 -rand:4/10,3/10,2/10,10/10,5/10,5/10,3/10,5/10,9/10,1/10,1/10 -============================ -input: -SR14 -output: -Chill : (SR14:5d10*3, 4d10+2d10) > (4,2,4,3,6)*3, 9,7,1,2+4,2 > 19*3, 19+6 > スタミナ損失57, 負傷25 -rand:4/10,2/10,4/10,3/10,6/10,9/10,7/10,1/10,2/10,4/10,2/10 -============================ -input: -SR14 -output: -Chill : (SR14:5d10*3, 4d10+2d10) > (6,1,3,10,2)*3, 1,1,10,8+4,9 > 22*3, 20+13 > スタミナ損失66, 負傷33 -rand:6/10,1/10,3/10,10/10,2/10,1/10,1/10,10/10,8/10,4/10,9/10 -============================ -input: -SR14 -output: -Chill : (SR14:5d10*3, 4d10+2d10) > (3,4,5,4,10)*3, 10,10,3,1+6,6 > 26*3, 24+12 > スタミナ損失78, 負傷36 -rand:3/10,4/10,5/10,4/10,10/10,10/10,10/10,3/10,1/10,6/10,6/10 -============================ -input: -SR14 -output: -Chill : (SR14:5d10*3, 4d10+2d10) > (4,6,9,7,5)*3, 2,7,1,7+2,6 > 31*3, 17+8 > スタミナ損失93, 負傷25 -rand:4/10,6/10,9/10,7/10,5/10,2/10,7/10,1/10,7/10,2/10,6/10 -============================ -input: -SR15 -output: -Chill : (SR15:5d10*3, 4d10+4d10) > (9,8,5,2,3)*3, 8,1,5,1+5,10,6,8 > 27*3, 15+29 > スタミナ損失81, 負傷44 -rand:9/10,8/10,5/10,2/10,3/10,8/10,1/10,5/10,1/10,5/10,10/10,6/10,8/10 -============================ -input: -SR15 -output: -Chill : (SR15:5d10*3, 4d10+4d10) > (3,6,7,1,3)*3, 6,1,3,9+5,8,5,1 > 20*3, 19+19 > スタミナ損失60, 負傷38 -rand:3/10,6/10,7/10,1/10,3/10,6/10,1/10,3/10,9/10,5/10,8/10,5/10,1/10 -============================ -input: -SR15 -output: -Chill : (SR15:5d10*3, 4d10+4d10) > (1,10,4,8,10)*3, 2,5,6,5+2,4,7,7 > 33*3, 18+20 > スタミナ損失99, 負傷38 -rand:1/10,10/10,4/10,8/10,10/10,2/10,5/10,6/10,5/10,2/10,4/10,7/10,7/10 -============================ -input: -SR15 -output: -Chill : (SR15:5d10*3, 4d10+4d10) > (2,6,5,3,7)*3, 7,8,10,6+5,3,5,7 > 23*3, 31+20 > スタミナ損失69, 負傷51 -rand:2/10,6/10,5/10,3/10,7/10,7/10,8/10,10/10,6/10,5/10,3/10,5/10,7/10 -============================ -input: -SR15 -output: -Chill : (SR15:5d10*3, 4d10+4d10) > (8,9,6,9,10)*3, 6,1,3,4+8,8,4,6 > 42*3, 14+26 > スタミナ損失126, 負傷40 -rand:8/10,9/10,6/10,9/10,10/10,6/10,1/10,3/10,4/10,8/10,8/10,4/10,6/10 -============================ -input: -SR15 -output: -Chill : (SR15:5d10*3, 4d10+4d10) > (3,8,5,4,3)*3, 4,4,9,4+4,7,4,8 > 23*3, 21+23 > スタミナ損失69, 負傷44 -rand:3/10,8/10,5/10,4/10,3/10,4/10,4/10,9/10,4/10,4/10,7/10,4/10,8/10 -============================ -input: -SR15 -output: -Chill : (SR15:5d10*3, 4d10+4d10) > (4,7,2,8,4)*3, 5,7,3,7+1,10,8,5 > 25*3, 22+24 > スタミナ損失75, 負傷46 -rand:4/10,7/10,2/10,8/10,4/10,5/10,7/10,3/10,7/10,1/10,10/10,8/10,5/10 -============================ -input: -SR15 -output: -Chill : (SR15:5d10*3, 4d10+4d10) > (5,10,7,5,10)*3, 9,5,1,5+3,7,3,2 > 37*3, 20+15 > スタミナ損失111, 負傷35 -rand:5/10,10/10,7/10,5/10,10/10,9/10,5/10,1/10,5/10,3/10,7/10,3/10,2/10 -============================ -input: -SR15 -output: -Chill : (SR15:5d10*3, 4d10+4d10) > (7,5,2,9,10)*3, 10,1,8,3+4,8,2,5 > 33*3, 22+19 > スタミナ損失99, 負傷41 -rand:7/10,5/10,2/10,9/10,10/10,10/10,1/10,8/10,3/10,4/10,8/10,2/10,5/10 -============================ -input: -SR15 -output: -Chill : (SR15:5d10*3, 4d10+4d10) > (3,9,1,10,8)*3, 9,3,7,7+2,9,6,6 > 31*3, 26+23 > スタミナ損失93, 負傷49 -rand:3/10,9/10,1/10,10/10,8/10,9/10,3/10,7/10,7/10,2/10,9/10,6/10,6/10 -============================ -input: -SR(7+4) -output: -Chill : (SR11:5d10*2, 5d10) > (9,2,9,9,3)*2, 8,9,8,8,7 > 32*2, 40 > スタミナ損失64, 負傷40 -rand:9/10,2/10,9/10,9/10,3/10,8/10,9/10,8/10,8/10,7/10 -============================ -input: -1D100>=? 目標値?でバグらない -output: -Chill : (1D100>=?) > 42 > 失敗 -rand:42/100 diff --git a/src/src_bcdice/test/data/Chill3.txt b/src/src_bcdice/test/data/Chill3.txt deleted file mode 100644 index a4d5fed95..000000000 --- a/src/src_bcdice/test/data/Chill3.txt +++ /dev/null @@ -1,101 +0,0 @@ -input: -1D100<=50 -output: -Chill3 : (1D100<=50) > 51 > 失敗 -rand:51/100 -============================ -input: -1D100<=50 -output: -Chill3 : (1D100<=50) > 50 > L成功 -rand:50/100 -============================ -input: -1D100<=50 -output: -Chill3 : (1D100<=50) > 26 > L成功 -rand:26/100 -============================ -input: -1D100<=50 -output: -Chill3 : (1D100<=50) > 25 > H成功 -rand:25/100 -============================ -input: -1D100<=50 -output: -Chill3 : (1D100<=50) > 100 > Botch -rand:100/100 -============================ -input: -1D100<=100 -output: -Chill3 : (1D100<=100) > 100 > Botch -rand:100/100 -============================ -input: -1D100<=101 -output: -Chill3 : (1D100<=101) > 100 > 失敗 -rand:100/100 -============================ -input: -1D100<=50 -output: -Chill3 : (1D100<=50) > 99 > Botch -rand:99/100 -============================ -input: -1D100<=50 -output: -Chill3 : (1D100<=50) > 98 > 失敗 -rand:98/100 -============================ -input: -1D100<=50 -output: -Chill3 : (1D100<=50) > 55 > Botch -rand:55/100 -============================ -input: -1D100<=50 -output: -Chill3 : (1D100<=50) > 54 > 失敗 -rand:54/100 -============================ -input: -1D100<=50 -output: -Chill3 : (1D100<=50) > 45 > L成功 -rand:45/100 -============================ -input: -1D100<=50 -output: -Chill3 : (1D100<=50) > 44 > C成功 -rand:44/100 -============================ -input: -1D100<=0 -output: -Chill3 : (1D100<=0) > 1 > L成功 -rand:01/100 -============================ -input: -1D100<=1 -output: -Chill3 : (1D100<=1) > 1 > L成功 -rand:01/100 -============================ -input: -1D100<=2 -output: -Chill3 : (1D100<=2) > 1 > H成功 -rand:01/100 -============================ -input: -1D100>=? 目標値?でバグらない -output: -Chill3 : (1D100>=?) > 42 > 失敗 -rand:42/100 diff --git a/src/src_bcdice/test/data/CodeLayerd.txt b/src/src_bcdice/test/data/CodeLayerd.txt deleted file mode 100644 index 7e4a6422d..000000000 --- a/src/src_bcdice/test/data/CodeLayerd.txt +++ /dev/null @@ -1,125 +0,0 @@ -input: -7CL>=6 CodeLayerd -output: -CodeLayerd : 7CL>=6 > (7d10) > [2,2,3,4,5,6,7] > 達成値[6] > 成功 -rand:2/10,2/10,3/10,4/10,5/10,6/10,7/10 -============================ -input: -7CL CodeLayerd -output: -CodeLayerd : 7CL > (7d10) > [2,2,3,4,5,6,7] > 達成値[6] > 6 -rand:2/10,2/10,3/10,4/10,5/10,6/10,7/10 -============================ -input: -7CL@5>=6 CodeLayerd -output: -CodeLayerd : 7CL@5>=6 > (7d10) > [2,2,3,4,5,6,7] > 判定値[5] 達成値[5] > 失敗 -rand:2/10,2/10,3/10,4/10,5/10,6/10,7/10 -============================ -input: -(3+4)CL>=(3+3) CodeLayerd -output: -CodeLayerd : 7CL>=6 > (7d10) > [2,2,3,4,5,6,7] > 達成値[6] > 成功 -rand:2/10,2/10,3/10,4/10,5/10,6/10,7/10 -============================ -input: -4CL>=5 クリティカル CodeLayerd -output: -CodeLayerd : 4CL>=5 > (4d10) > [1,2,3,4] > 達成値[4]+クリティカル[1]=[5] > 成功 -rand:1/10,2/10,3/10,4/10 -============================ -input: -4CL>=5 ファンブル CodeLayerd -output: -CodeLayerd : 4CL>=5 > (4d10) > [7,8,9,10] > 達成値[0] > ファンブル! -rand:7/10,8/10,9/10,10/10 -============================ -input: -4CL>=5 CodeLayerd -output: -CodeLayerd : 4CL>=5 > (4d10) > [7,8,9,10] > 達成値[0] > ファンブル! -rand:7/10,8/10,9/10,10/10 -============================ -input: -7CL+5>=6 CodeLayerd -output: -CodeLayerd : 7CL+5>=6 > (7d10+5) > [2,2,3,4,5,6,7]+5 > 達成値[6]+5=[11] > 成功 -rand:2/10,2/10,3/10,4/10,5/10,6/10,7/10 -============================ -input: -7CL-2 CodeLayerd -output: -CodeLayerd : 7CL-2 > (7d10-2) > [2,2,3,4,5,6,7]-2 > 達成値[6]-2=[4] > 4 -rand:2/10,2/10,3/10,4/10,5/10,6/10,7/10 -============================ -input: -7CL+(1+2*3)@5>=6 CodeLayerd -output: -CodeLayerd : 7CL+7@5>=6 > (7d10+7) > [2,2,3,4,5,6,7]+7 > 判定値[5] 達成値[5]+7=[12] > 成功 -rand:2/10,2/10,3/10,4/10,5/10,6/10,7/10 -============================ -input: -7CL@5-(-1+3) CodeLayerd -output: -CodeLayerd : 7CL@5-2 > (7d10-2) > [2,2,3,4,5,6,7]-2 > 判定値[5] 達成値[5]-2=[3] > 3 -rand:2/10,2/10,3/10,4/10,5/10,6/10,7/10 -============================ -input: -7CL+1@5-(3+1)>=9 CodeLayerd -output: -CodeLayerd : 7CL+1@5-4>=9 > (7d10-3) > [2,2,3,4,5,6,7]-3 > 判定値[5] 達成値[5]-3=[2] > 失敗 -rand:2/10,2/10,3/10,4/10,5/10,6/10,7/10 -============================ -input: -4CL+5>=5 クリティカル CodeLayerd -output: -CodeLayerd : 4CL+5>=5 > (4d10+5) > [1,2,3,4]+5 > 達成値[4]+クリティカル[1]+5=[10] > 成功 -rand:1/10,2/10,3/10,4/10 -============================ -input: -4CL-5@6+5>=5 CodeLayerd ファンブル -output: -CodeLayerd : 4CL-5@6+5>=5 > (4d10) > [7,8,9,10] > 達成値[0] > ファンブル! -rand:7/10,8/10,9/10,10/10 -============================ -input: -7CL+2@6-8 CodeLayerd 達成値が0でもファンブルではない -output: -CodeLayerd : 7CL+2@6-8 > (7d10-6) > [2,2,3,4,5,6,7]-6 > 達成値[6]-6=[0] > 0 -rand:2/10,2/10,3/10,4/10,5/10,6/10,7/10 -============================ -input: -7CL-(6+1) CodeLayerd 達成値がマイナスでもファンブルではない -output: -CodeLayerd : 7CL-7 > (7d10-7) > [2,2,3,4,5,6,7]-7 > 達成値[6]-7=[-1] > -1 -rand:2/10,2/10,3/10,4/10,5/10,6/10,7/10 -============================ -input: -4CL+10 CodeLayerd 固定値があっても成功ダイスが無いならファンブル -output: -CodeLayerd : 4CL+10 > (4d10+10) > [7,8,9,10]+10 > 達成値[0] > ファンブル! -rand:7/10,8/10,9/10,10/10 -============================ -input: -4CL[3]>=5 クリティカル CodeLayerd -output: -CodeLayerd : 4CL[3]>=5 > (4d10) > [1,2,3,4] > クリティカル値[3] 達成値[4]+クリティカル[3]=[7] > 成功 -rand:1/10,2/10,3/10,4/10 -============================ -input: -7CL+2@6[2]-8 CodeLayerd -output: -CodeLayerd : 7CL+2@6[2]-8 > (7d10-6) > [1,2,3,4,5,6,7]-6 > クリティカル値[2] 達成値[6]+クリティカル[2]-6=[2] > 2 -rand:1/10,2/10,3/10,4/10,5/10,6/10,7/10 -============================ -input: -0CL ダイス数が0以下になると1CL[0]相当 -output: -CodeLayerd : 0CL > (1d10) > [1] > クリティカル値[0] 達成値[1] > 1 -rand:1/10 -============================ -input: -(10-15)CL+5 ダイス数が0以下になると1CL[0]相当 -output: -CodeLayerd : -5CL+5 > (1d10+5) > [8]+5 > クリティカル値[0] 達成値[0] > ファンブル! -rand:8/10 diff --git a/src/src_bcdice/test/data/ColossalHunter.txt b/src/src_bcdice/test/data/ColossalHunter.txt deleted file mode 100644 index 67a953164..000000000 --- a/src/src_bcdice/test/data/ColossalHunter.txt +++ /dev/null @@ -1,426 +0,0 @@ -input: -CH -output: -ColossalHunter : (3CH) > 15[6,4,5] > 15 -rand:6/6,4/6,5/6 -============================ -input: -CH -output: -ColossalHunter : (3CH) > 16[6,5,5] > 16 > クリティカル -rand:6/6,5/6,5/6 -============================ -input: -CH+1 -output: -ColossalHunter : (3CH+1) > 15[6,4,5]+1 > 16 > クリティカル -rand:6/6,4/6,5/6 -============================ -input: -CH -output: -ColossalHunter : (3CH) > 6[1,2,3] > 6 -rand:1/6,2/6,3/6 -============================ -input: -CH -output: -ColossalHunter : (3CH) > 5[1,2,2] > 5 > ファンブル -rand:1/6,2/6,2/6 -============================ -input: -CH+1 -output: -ColossalHunter : (3CH+1) > 5[1,2,2]+1 > 6 > ファンブル -rand:1/6,2/6,2/6 -============================ -input: -CH>=18 -output: -ColossalHunter : (3CH>=18) > 15[6,4,5] > 15 > 失敗 -rand:6/6,4/6,5/6 -============================ -input: -CH>=18 -output: -ColossalHunter : (3CH>=18) > 16[6,5,5] > 16 > クリティカル -rand:6/6,5/6,5/6 -============================ -input: -CH+1>=18 -output: -ColossalHunter : (3CH+1>=18) > 15[6,4,5]+1 > 16 > クリティカル -rand:6/6,4/6,5/6 -============================ -input: -CH>=3 -output: -ColossalHunter : (3CH>=3) > 6[1,2,3] > 6 > 成功 -rand:1/6,2/6,3/6 -============================ -input: -CH>=3 -output: -ColossalHunter : (3CH>=3) > 5[1,2,2] > 5 > ファンブル -rand:1/6,2/6,2/6 -============================ -input: -CH+1>=3 -output: -ColossalHunter : (3CH+1>=3) > 5[1,2,2]+1 > 6 > ファンブル -rand:1/6,2/6,2/6 -============================ -input: -CH+11>=3 -output: -ColossalHunter : (3CH+11>=3) > 5[1,2,2]+11 > 16 > ファンブル -rand:1/6,2/6,2/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(11) > この世の地獄:あれはまさに地獄。屍の山。嘆く者。呆然とする者。目の前で潰される者。あの日、人類は霊長ではなく……弱き獣の一種となった。 > 年齢:15+2D6 > (15+2) > 年齢:17歳 -rand:1/6,1/6,1/6,1/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(12) > 悪の時代:全ての崩壊、呆然の時。救援が望めぬとわかったなら、少なからぬ者が悪に走った。あの頃は、あなたもまた下劣なる略奪者だった。 > 年齢:18+2D6 > (18+12) > 年齢:30歳 -rand:1/6,2/6,6/6,6/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(13) > 消えざる罪:混乱の中、あなたは……私怨を晴らした。許せない人間を、その手で始末した。罪に問う者はいない……他ならぬあなた自身以外は。 > 年齢:18+2D6 > (18+9) > 年齢:27歳 -rand:1/6,3/6,6/6,3/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(14) > 言葉にできない:ただ呆然と。廃人のようにあの期間を過ごした。目の前で何が起きていたかは覚えているけれど。思い出したくは……ない。 > 年齢:任意(最低14)歳 -rand:1/6,4/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(15) > 望む時代:あの平和で膿んだ世界が嫌いだった。全てが壊れて、訪れた無法の時代。あなたは、あの日常が壊れた今を歓迎している。 > 年齢:18+2D6 > (18+3) > 年齢:21歳 -rand:1/6,5/6,1/6,2/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(16) > あなたの呪い:世界を怨み、自殺しようとした時、世界は変わった。あなたの呪詛が形になったように……コロッサルが全てを破壊し始めたのだ。 > 年齢:任意(最低20)歳 -rand:1/6,6/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(21) > 肉親の命日:家族は、あなたの全てだった。だからあの日は、全てが失われた日だ。注ぐ愛も注がれる愛も、きっとあの日に枯れたのだ。 > 年齢:任意(最低14)歳 -rand:2/6,1/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(22) > 戦友の命日:あなたとその仲間は無抵抗をよしとせず、コロッサルに立ち向かった。そして……あなた以外は全員が死んだ。彼らの分も生きなければ。 > 年齢:30+3D6 > (30+9) > 年齢:39歳 -rand:2/6,2/6,5/6,2/6,2/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(23) > トラウマ:あの日を思い出すだけで、震えが止まらず汗と涙が溢れ出す。忘れるためには、コロッサルと戦い続けるしかないだろう、きっと。 > 年齢:任意(最低14)歳 -rand:2/6,3/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(24) > 死を逃した時:意識を失い、目覚めれば全ては壊れた後。生き延びたのは幸運なのか。不幸なのか。あるいはそれとも、呪いなのか。 > 年齢:10+3D6 > (10+9) > 年齢:19歳 -rand:2/6,4/6,5/6,2/6,2/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(25) > 呪縛:あの時、無数の死を見た。その中で、ある一人が言った言葉が忘れられない。それは今も、あなたを縛る呪いとなっている。 > 年齢:18+2D6 > (18+7) > 年齢:25歳 -rand:2/6,5/6,5/6,2/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(26) > ひっかかり:あの日、配偶者あるいは恋人と別れた。恋の終わりと、世界の終わり。あれ以来、相手が生きているかもわからない……。 > 年齢:25+3D6 > (25+12) > 年齢:37歳 -rand:2/6,6/6,5/6,2/6,5/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(31) > 重症:昏睡BIG-6で重い疵を負ったあなたは、長く昏睡状態だった。幸いにも人工冬眠装置によって、あなたは年を経ずに目を覚ましたが……。 > 年齢:任意歳 -rand:3/6,1/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(32) > 些末事:あなたにはコロッサルの出現などよりも重要な目的がある。BIG-6など、どうでもよい。あなたは決して揺らぎはしないのだ。 > 年齢:任意歳 -rand:3/6,2/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(33) > 財産の消滅:築き上げていた全てが失われた日。あなたにとって全てだった財貨も、権力も、消滅したあの日を、どうして忘れられようか。 > 年齢:35+3D6 > (35+12) > 年齢:47歳 -rand:3/6,3/6,1/6,6/6,5/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(34) > 告白未遂:告白しようとしていたその日、コロッサルが現れた。崩れる日常。あの人が生きているのか、どうなったのか、何もわからない。 > 年齢:18+2D6 > (18+7) > 年齢:25歳 -rand:3/6,4/6,5/6,2/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(35) > 記憶喪失:あの時、何があったのか、どうしても思い出せない。何か重大なことがあったはずなのに……思い出そうとすると頭痛が襲うのだ。 > 年齢:任意(最低14)歳 -rand:3/6,5/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(36) > 誕生の時:BIG-6と同年、コロッサル襲撃の最中に生まれ、赤ん坊の状態で生存者らに保護された。親はわからない。あなたの生存は奇跡である。 > 年齢:10歳 -rand:3/6,6/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(41) > ルーツ:コロッサルによって破壊された瓦礫の合間に残されていた子……それがあなただ。親という概念すらなく、あなたは育ってきた。 > 年齢:8+1D6 > (8+5) > 年齢:13歳 -rand:4/6,1/6,5/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(42) > 伝え聞くのみ:物心ついた時には周囲はコロッサルの脅威にさらされていた。BIG-6以前については何も知らない。遥か過去のようにすら思えている。 > 年齢:8+1D6 > (8+5) > 年齢:13歳 -rand:4/6,2/6,5/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(43) > 語られざること:ZOSで育ったあなたには誰もBIG-6について教えてくれなかった。大人の会話の合間から、なんとなく想像するだけだ。 > 年齢:8+1D6 > (8+5) > 年齢:13歳 -rand:4/6,3/6,5/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(44) > 絵物語:瓦礫でない建物。人が街にあふれかえる。なんという子供だましのおとぎ話だろう。あなたはBIG-6以前の存在を信じていない。 > 年齢:8+1D6 > (8+5) > 年齢:13歳 -rand:4/6,4/6,5/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(45) > 何それ:隊商に見つけられるまで、獣同然に生きていた。BIG-6などあったことも知らない。物心ついた時には、餌を求め走っていたのだ。 > 年齢:9+1D6 > (9+5) > 年齢:14歳 -rand:4/6,5/6,5/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(46) > 嫉妬:BIG-6時をあなたは覚えていない。そして、BIG-6以前の豊かさと平和に激しい嫉妬を抱き、守れなかった大人たちを恨む。 > 年齢:9+1D6 > (9+5) > 年齢:14歳 -rand:4/6,6/6,5/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(51) > 忘れたい記憶:あなたはあの日を忘れようと努めた。今ではほとんど忘れたと言っていい。けれど、ふとした時にあの地獄の光景は現れて……。 > 年齢:任意(最低14)歳 -rand:5/6,1/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(52) > 始まりの時:あなたにとってあれは終わりではなく、始まり。停滞して行き詰まった世界が動き出し、どうでもよかった己の命を感じさせてくれた瞬間。 > 年齢:15+3D6 > (15+10) > 年齢:25歳 -rand:5/6,2/6,5/6,2/6,3/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(53) > かすかな記憶:当時のあなたは幼かった。それでもうっすらと、あの平和で豊かだった時代を覚えている。いっそ知らなければ……と思うのだけれど。 > 年齢:10+1D6 > (10+5) > 年齢:15歳 -rand:5/6,3/6,5/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(54) > 崩壊と再生:あなたの人生は、BIG-6による社会崩壊と……その後の再生をなぞるものだ。あなたはBIG-6以後を何より間近で見て来た。 > 年齢:10+1D6 > (10+5) > 年齢:15歳 -rand:5/6,4/6,5/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(55) > 他人事:とても辺鄙な地方にいたせいか、コロッサルは出現しなかった。無論、影響はあったが……ゆっくりとしたもので。大災害の印象は薄い。 > 年齢:6+3D6 > (6+9) > 年齢:15歳 -rand:5/6,5/6,5/6,2/6,2/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(56) > 新たな時代:まだマテリアルの価値が定かでなかった頃から、あなたはその価値に目を付けていた。応用法も含め……社会崩壊後に備えたのだ。 > 年齢:任意(最低17)歳 -rand:5/6,6/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(61) > 動乱:当時は現役かつ、責任ある立場だった。守るために、あなたは全力で戦い、逃げ……そして時には同じ人間からも奪った。 > 年齢:40+4D6 > (40+14) > 年齢:54歳 -rand:6/6,1/6,5/6,2/6,3/6,4/6, -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(62) > 自信の元:あなたは一家の長として家族を守り、導いた。全てが破壊される中、家族は確かに生き延びて、あなた自身も未だ生き残れたのだ。 > 年齢:35+3D6 > (35+10) > 年齢:45歳 -rand:6/6,2/6,5/6,2/6,3/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(63) > 本能的記憶:気が付けばゾーンに“いた”。コロッサルはさまざまな生物をクラフトする。中には小型のコロッサルとして独立して活動を開始するものもいるという。あなたもまた、気づいてほどなくハンターとして目覚めた。そう……あなたはクラフトされた存在。人よりもコロッサルに近い存在。記憶も感情も、どこまでが己のものなのか……。これは、およそ知られていい秘密ではない。(注意:外見年齢は任意) > 年齢:2D6-2 > (7-2) > 年齢:5歳 -rand:6/6,3/6,5/6,2/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(64) > 体験無き事象:あなたは母から生まれた人間ではなく、人工的なハンター作成の副産物たるクローニング技術の結晶だ。親は知らないが“作者”は知っている。肌にはバーコードが刻まれ、その体が通常の人間ではないと思い知らされるだろう。丁寧に記憶まで、一定量が流し込まれており、日常生活には支障がない。この出生は隠さねばならない。(注意:外見年齢は任意。覚醒表の内容は作られた記憶である) > 年齢:2D6-2 > (2-2) > 年齢:0歳 -rand:6/6,4/6,1/6,1/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(65) > 特異点:あのBIG-6の中では奇妙な時空のねじれが発生した。そして、あなたのようにありえざる時代や世界から、迷い込む者も現れたのだ。この事実は隠さねばならない……が、教えても誰も本気にはしないだろう。なお、あなたがどれほど特殊な能力や知識を持っていたとしても、データ上において他のPCと何ら変わらない。演出において、他の時代や異世界の知識や技術をいくらか使える程度である。 > 年齢:任意(最低10)歳 -rand:6/6,5/6 -============================ -input: -B6T -output: -ColossalHunter : BIG-6表(66) > 覚醒の時:BIG-6時に絶望の中でコロッサルに抗い、生まれた第一世代のハンター。平和の時代を知る存在。そして平和を壊され、平和を取り戻さんと渇望する存在だ。ハンターの中でも、最初期であり最も経験豊富であり、同じハンターらからは敬意を捧げられる。もちろん、相応の振る舞いも求められるだろうが……。(注意:覚醒表における「ZOS」は、「故郷」か「組織」に変わる) > 年齢:任意(最低17)歳 -rand:6/6,6/6 -============================ -input: -AWT -output: -ColossalHunter : 覚醒表(11) > 実験体:当時ハンターを人工的に作り出すべく、倫理を無視した研究が多数行われていた。あなたこそ、無数の犠牲の上に生まれた……数少ない成功作なのだ。 -rand:1/6,1/6 -============================ -input: -AWT -output: -ColossalHunter : 覚醒表(66) > ありえぬ存在:BIG-6以前から、あるいはものごころつく以前から、ハンターの能力が開花していた。周囲の目は期待と不安、そして打算にまみれている。 -rand:6/6,6/6 -============================ -input: -CST -output: -ColossalHunter : 現状表(11) > 逃れえぬ恐怖:かつての悪夢は心を握りしめ、離してはくれない。平時は暗がりの隅で一人震え、ぶつぶつと呟くばかり。友らは、立ち直らせようとしてくれているが……。 リーダー度:2 -rand:1/6,1/6 -============================ -input: -CST -output: -ColossalHunter : 現状表(66) > 指導者:あなたはZOSの顔役だ。多くの人望を集め、ハンターの地位を向上させている。一挙一動が注目を受ける。気をひきしめて日々を過ごさねば。 リーダー度:12 -rand:6/6,6/6 -============================ -input: -HMT -output: -ColossalHunter : ハンターマーク表(11) > 顔 -rand:1/6,1/6 -============================ -input: -HMT -output: -ColossalHunter : ハンターマーク表(31) > 顔 -rand:3/6,1/6 -============================ -input: -HMT -output: -ColossalHunter : ハンターマーク表(12) > 胸 -rand:1/6,2/6 -============================ -input: -HMT -output: -ColossalHunter : ハンターマーク表(32) > 胸 -rand:3/6,2/6 -============================ -input: -HMT -output: -ColossalHunter : ハンターマーク表(41) > 掌 -rand:4/6,1/6 -============================ -input: -HMT -output: -ColossalHunter : ハンターマーク表(61) > 掌 -rand:6/6,1/6 -============================ -input: -HMT -output: -ColossalHunter : ハンターマーク表(46) > 片眼 -rand:4/6,6/6 -============================ -input: -HMT -output: -ColossalHunter : ハンターマーク表(66) > 片眼 -rand:6/6,6/6 -============================ -input: -SPT -output: -ColossalHunter : 特徴表(11) > 死んだ魚の目 -rand:1/6,1/6 -============================ -input: -SPT -output: -ColossalHunter : 特徴表(66) > 整った容貌 -rand:6/6,6/6 -============================ -input: -PRT -output: -ColossalHunter : プレシャス表(11) > 壊れたスマートフォン -rand:1/6,1/6 -============================ -input: -PRT -output: -ColossalHunter : プレシャス表(66) > 一組のダイス -rand:6/6,6/6 -============================ -input: -EXT -output: -ColossalHunter : 専門能力表(11) > メンタル 分類:準備 -rand:1/6,1/6 -============================ -input: -EXT -output: -ColossalHunter : 専門能力表(66) > 商売 分類:日常 -rand:6/6,6/6 -============================ -input: -CAT -output: -ColossalHunter : コロッサル行動表(1) > ZOWが急速に拡大してゆく!左右いずれかのエリアをZOWにする。対象エリアはZOWとなり、既存のイベントは消滅する。対象エリアは相談して選択し、そのエリアのイベントは消滅する。 -rand:1/6 -============================ -input: -CAT -output: -ColossalHunter : コロッサル行動表(6) > 何もしない。 -rand:6/6 -============================ -input: -CNP -output: -ColossalHunter : NPC作成表(11, 11, 11) > 性質:ハンター嫌いの/タイプ:ごろつき/心の秘密:全てへの絶望 -rand:1/6,1/6,1/6,1/6,1/6,1/6, -============================ -input: -CNP -output: -ColossalHunter : NPC作成表(66, 66, 66) > 性質:あなたに恋をしている/タイプ:ハンター/心の秘密:あなたへの執着 -rand:6/6,6/6,6/6,6/6,6/6,6/6, -============================ diff --git a/src/src_bcdice/test/data/CrashWorld.txt b/src/src_bcdice/test/data/CrashWorld.txt deleted file mode 100644 index c0dfc25d9..000000000 --- a/src/src_bcdice/test/data/CrashWorld.txt +++ /dev/null @@ -1,65 +0,0 @@ -input: -CW0 -output: -CrashWorld : (1) 成功度 : 0 -rand:1/12 -============================ -input: -CW8 -output: -CrashWorld : (8, 8, 8, 8, 9) 成功度 : 4 -rand:8/12,8/12,8/12,8/12,9/12 -============================ -input: -CW0 -output: -CrashWorld : (2) 成功度 : 0 -rand:2/12 -============================ -input: -CW0 -output: -CrashWorld : (7) 成功度 : 0 -rand:7/12 -============================ -input: -CW0 -output: -CrashWorld : (8) 成功度 : 0 -rand:8/12 -============================ -input: -CW0 -output: -CrashWorld : (11, 1, 7) 成功度 : 2 -rand:11/12,1/12,7/12 -============================ -input: -CW0 -output: -CrashWorld : (11, 11, 11, 11, 11, 11, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 12) 成功度 : 0 ファンブル -rand:11/12,11/12,11/12,11/12,11/12,11/12,11/12,10/12,9/12,8/12,7/12,6/12,5/12,4/12,3/12,2/12,1/12,12/12 -============================ -input: -CW0 -output: -CrashWorld : (11, 11, 11, 11, 11, 11, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 2) 成功度 : 17 -rand:11/12,11/12,11/12,11/12,11/12,11/12,11/12,10/12,9/12,8/12,7/12,6/12,5/12,4/12,3/12,2/12,1/12,2/12 -============================ -input: -CW0 -output: -CrashWorld : (10) 成功度 : 0 -rand:10/12 -============================ -input: -CW0 -output: -CrashWorld : (11, 2, 3) 成功度 : 2 -rand:11/12,2/12,3/12 -============================ -input: -CW0 -output: -CrashWorld : (12) 成功度 : 0 ファンブル -rand:12/12 diff --git a/src/src_bcdice/test/data/Cthulhu.txt b/src/src_bcdice/test/data/Cthulhu.txt deleted file mode 100644 index e284143c5..000000000 --- a/src/src_bcdice/test/data/Cthulhu.txt +++ /dev/null @@ -1,1176 +0,0 @@ -input: -1D100<=10 ############################# -output: -Cthulhu : (1D100<=10) > 98 > 失敗 -rand:98/100 -============================ -input: -1D100<=10 (99) -output: -Cthulhu : (1D100<=10) > 99 > 失敗 -rand:99/100 -============================ -input: -1D100<=10 (100) -output: -Cthulhu : (1D100<=10) > 100 > 失敗 -rand:100/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 45 > 失敗 -rand:45/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 56 > 失敗 -rand:56/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 62 > 失敗 -rand:62/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 70 > 失敗 -rand:70/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 78 > 失敗 -rand:78/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 84 > 失敗 -rand:84/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 51 > 失敗 -rand:51/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 20 > 失敗 -rand:20/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 76 > 失敗 -rand:76/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 43 > 成功 -rand:43/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 24 > 成功 -rand:24/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 25 > 成功 -rand:25/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 75 > 成功 -rand:75/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 71 > 成功 -rand:71/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 78 > 成功 -rand:78/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 14 > 成功 -rand:14/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 61 > 成功 -rand:61/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 27 > 成功 -rand:27/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 37 > 成功 -rand:37/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 65 > 失敗 -rand:65/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 6 > 成功 -rand:6/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 42 > 成功 -rand:42/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 7 > 成功 -rand:7/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 2 > 成功 -rand:2/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 1 > 成功 -rand:1/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 73 > 失敗 -rand:73/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 72 > 失敗 -rand:72/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 46 > 成功 -rand:46/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 37 > 成功 -rand:37/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 6 > 成功 -rand:6/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 83 > 失敗 -rand:83/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 1 > 決定的成功/スペシャル -rand:1/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 29 > 成功 -rand:29/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 72 > 失敗 -rand:72/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 98 > 失敗 -rand:98/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 97 > 失敗 -rand:97/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 87 > 失敗 -rand:87/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 63 > 失敗 -rand:63/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 39 > 成功 -rand:39/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 11 > スペシャル -rand:11/100 -============================ -input: -RES(10-15) 1% -output: -Cthulhu : (1d100<=25) > 90 > 失敗 -rand:90/100 -============================ -input: -RES(10-15) 1% -output: -Cthulhu : (1d100<=25) > 38 > 失敗 -rand:38/100 -============================ -input: -RES(10-15) 1% -output: -Cthulhu : (1d100<=25) > 78 > 失敗 -rand:78/100 -============================ -input: -RES(10-15) 1% -output: -Cthulhu : (1d100<=25) > 39 > 失敗 -rand:39/100 -============================ -input: -RES(10-15) 1% -output: -Cthulhu : (1d100<=25) > 71 > 失敗 -rand:71/100 -============================ -input: -RES(10-15) 1% -output: -Cthulhu : (1d100<=25) > 4 > スペシャル -rand:4/100 -============================ -input: -RES(10-15) 1% -output: -Cthulhu : (1d100<=25) > 45 > 失敗 -rand:45/100 -============================ -input: -RES(10-15) 1% 80 -output: -Cthulhu : (1d100<=25) > 80 > 失敗 -rand:80/100 -============================ -input: -RES(10-15) 1% 13 -output: -Cthulhu : (1d100<=25) > 13 > 成功 -rand:13/100 -============================ -input: -RES(10-15) 1% 16 -output: -Cthulhu : (1d100<=25) > 16 > 成功 -rand:16/100 -============================ -input: -CBR(70,30) 1% 30 -output: -Cthulhu : (1d100<=70,30) > 30[成功,成功] > 成功 -rand:30/100 -============================ -input: -CBR(70,30) 1% 50 -output: -Cthulhu : (1d100<=70,30) > 50[成功,失敗] > 部分的成功 -rand:50/100 -============================ -input: -CBR(10,90) 1% 30 -output: -Cthulhu : (1d100<=10,90) > 30[失敗,成功] > 部分的成功 -rand:30/100 -============================ -input: -CBR(70,30) 1% 71 -output: -Cthulhu : (1d100<=70,30) > 71[失敗,失敗] > 失敗 -rand:71/100 -============================ -input: -CBR(70,30) 1% -output: -Cthulhu : (1d100<=70,30) > 5[スペシャル,スペシャル] > 成功 -rand:5/100 -============================ -input: -CBR(25,20) 1% -output: -Cthulhu : (1d100<=25,20) > 5[スペシャル,成功] > 成功 -rand:5/100 -============================ -input: -CBR(70,30) 1% -output: -Cthulhu : (1d100<=70,30) > 1[決定的成功/スペシャル,決定的成功/スペシャル] > 成功 -rand:1/100 -============================ -input: -CBR(25,20) 1% -output: -Cthulhu : (1d100<=25,20) > 1[決定的成功/スペシャル,決定的成功/スペシャル] > 成功 -rand:1/100 -============================ -input: -CBR(25,1) 1% -output: -Cthulhu : (1d100<=25,1) > 5[スペシャル,失敗] > 部分的成功 -rand:5/100 -============================ -input: -CBR(90,99) 1% -output: -Cthulhu : (1d100<=90,99) > 96[失敗,成功] > 部分的成功 -rand:96/100 -============================ -input: -CBR(90,95) 1% -output: -Cthulhu : (1d100<=90,95) > 96[失敗,失敗] > 失敗 -rand:96/100 -============================ -input: -CBR(90,99) 1% -output: -Cthulhu : (1d100<=90,99) > 100[致命的失敗,致命的失敗] > 失敗 -rand:100/100 -============================ -input: -CBR(90,95) 1% -output: -Cthulhu : (1d100<=90,95) > 100[致命的失敗,致命的失敗] > 失敗 -rand:100/100 -============================ -input: -1D100>=(68+12) -output: -Cthulhu : (1D100>=80) > 11 > 失敗 -rand:11/100 -============================ -input: -CC<=10 (1%) ################## -output: -Cthulhu : (1D100<=10) > 98 > 失敗 -rand:98/100 -============================ -input: -CC<=10 (99) (1%) -output: -Cthulhu : (1D100<=10) > 99 > 失敗 -rand:99/100 -============================ -input: -CC<=10 (100) (1%) -output: -Cthulhu : (1D100<=10) > 100 > 致命的失敗 -rand:100/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 45 > 失敗 -rand:45/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 56 > 失敗 -rand:56/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 62 > 失敗 -rand:62/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 70 > 失敗 -rand:70/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 78 > 失敗 -rand:78/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 84 > 失敗 -rand:84/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 51 > 失敗 -rand:51/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 20 > 失敗 -rand:20/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 76 > 失敗 -rand:76/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 43 > 成功 -rand:43/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 24 > 成功 -rand:24/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 25 > 成功 -rand:25/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 75 > 成功 -rand:75/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 71 > 成功 -rand:71/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 78 > 成功 -rand:78/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 14 > スペシャル -rand:14/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 61 > 成功 -rand:61/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 27 > 成功 -rand:27/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 37 > 成功 -rand:37/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 65 > 失敗 -rand:65/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 6 > スペシャル -rand:6/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 42 > 成功 -rand:42/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 7 > スペシャル -rand:7/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 2 > スペシャル -rand:2/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 1 > 決定的成功/スペシャル -rand:1/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 73 > 失敗 -rand:73/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 72 > 失敗 -rand:72/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 46 > 成功 -rand:46/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 37 > 成功 -rand:37/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 6 > スペシャル -rand:6/100 -============================ -input: -CC<=-10+60/2+15*2 -output: -Cthulhu : (1D100<=50) > 37 > 成功 -rand:37/100 -============================ -input: -CCB<=10 (5%) ################## -output: -Cthulhu : (1D100<=10) > 98 > 致命的失敗 -rand:98/100 -============================ -input: -CCB<=10 (99) (5%) -output: -Cthulhu : (1D100<=10) > 99 > 致命的失敗 -rand:99/100 -============================ -input: -CCB<=10 (100) (5%) -output: -Cthulhu : (1D100<=10) > 100 > 致命的失敗 -rand:100/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 45 > 失敗 -rand:45/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 56 > 失敗 -rand:56/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 62 > 失敗 -rand:62/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 70 > 失敗 -rand:70/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 78 > 失敗 -rand:78/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 84 > 失敗 -rand:84/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 51 > 失敗 -rand:51/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 20 > 失敗 -rand:20/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 76 > 失敗 -rand:76/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 43 > 成功 -rand:43/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 24 > 成功 -rand:24/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 25 > 成功 -rand:25/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 75 > 成功 -rand:75/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 71 > 成功 -rand:71/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 78 > 成功 -rand:78/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 14 > スペシャル -rand:14/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 61 > 成功 -rand:61/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 27 > 成功 -rand:27/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 37 > 成功 -rand:37/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 65 > 失敗 -rand:65/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 6 > スペシャル -rand:6/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 42 > 成功 -rand:42/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 7 > スペシャル -rand:7/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 2 > 決定的成功/スペシャル -rand:2/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 1 > 決定的成功/スペシャル -rand:1/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 73 > 失敗 -rand:73/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 72 > 失敗 -rand:72/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 46 > 成功 -rand:46/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 37 > 成功 -rand:37/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 6 > スペシャル -rand:6/100 -============================ -input: -CCB<=-10+60/2+15*2 -output: -Cthulhu : (1D100<=50) > 37 > 成功 -rand:37/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 83 > 失敗 -rand:83/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 1 > 決定的成功/スペシャル -rand:1/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 29 > 成功 -rand:29/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 72 > 失敗 -rand:72/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 98 > 致命的失敗 -rand:98/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 97 > 致命的失敗 -rand:97/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 87 > 失敗 -rand:87/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 63 > 失敗 -rand:63/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 39 > 成功 -rand:39/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 11 > スペシャル -rand:11/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 90 > 失敗 -rand:90/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 38 > 失敗 -rand:38/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 78 > 失敗 -rand:78/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 39 > 失敗 -rand:39/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 71 > 失敗 -rand:71/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 4 > 決定的成功/スペシャル -rand:4/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 45 > 失敗 -rand:45/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 80 > 失敗 -rand:80/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 13 > 成功 -rand:13/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 16 > 成功 -rand:16/100 -============================ -input: -CBRB(70,30) (5%) -output: -Cthulhu : (1d100<=70,30) > 30[成功,成功] > 成功 -rand:30/100 -============================ -input: -CBRB(70,30) (5%) -output: -Cthulhu : (1d100<=70,30) > 50[成功,失敗] > 部分的成功 -rand:50/100 -============================ -input: -CBRB(10,90) (5%) -output: -Cthulhu : (1d100<=10,90) > 30[失敗,成功] > 部分的成功 -rand:30/100 -============================ -input: -CBRB(70,30) (5%) -output: -Cthulhu : (1d100<=70,30) > 71[失敗,失敗] > 失敗 -rand:71/100 -============================ -input: -CBRB(70,30) (5%) -output: -Cthulhu : (1d100<=70,30) > 5[決定的成功/スペシャル,決定的成功/スペシャル] > 成功 -rand:5/100 -============================ -input: -CBRB(25,20) (5%) -output: -Cthulhu : (1d100<=25,20) > 5[決定的成功/スペシャル,決定的成功] > 成功 -rand:5/100 -============================ -input: -CBRB(25,1) (5%) -output: -Cthulhu : (1d100<=25,1) > 5[決定的成功/スペシャル,失敗] > 部分的成功 -rand:5/100 -============================ -input: -CBRB(90,99) (5%) -output: -Cthulhu : (1d100<=90,99) > 96[致命的失敗,成功] > 部分的成功 -rand:96/100 -============================ -input: -CBRB(90,95) (5%) -output: -Cthulhu : (1d100<=90,95) > 96[致命的失敗,致命的失敗] > 失敗 -rand:96/100 -============================ -input: -CC<=(68+30) (1%) 計算込み -output: -Cthulhu : (1D100<=98) > 99 > 失敗 -rand:99/100 -============================ -input: -CCB<=(68+30) (5%) 計算込み -output: -Cthulhu : (1D100<=98) > 99 > 致命的失敗 -rand:99/100 -============================ -input: -CCB>=(68+12) (5%) 1D100代替(不等号違いにより判定なし) -output: -Cthulhu : (1D100) > 11 -rand:11/100 -============================ -input: -CC (1%) 1d100単純置換 -output: -Cthulhu : (1D100) > 60 -rand:60/100 -============================ -input: -CCB (5%) 1d100単純置換 -output: -Cthulhu : (1D100) > 61 -rand:61/100 -============================ -input: -SCC<=25 (1%) シークレット -output: -Cthulhu : (1D100<=25) > 5 > スペシャル###secret dice### -rand:5/100 -============================ -input: -SCCB<=25 (5%) シークレット -output: -Cthulhu : (1D100<=25) > 5 > 決定的成功/スペシャル###secret dice### -rand:5/100 -============================ -input: -CC(94)<=98 (1%) 故障ナンバー:故障1 -output: -Cthulhu : (1D100<=98) 故障ナンバー[94] > 97 > 故障 -rand:97/100 -============================ -input: -CC(94)<=98 (1%) 故障ナンバー:故障2 -output: -Cthulhu : (1D100<=98) 故障ナンバー[94] > 99 > 故障 -rand:99/100 -============================ -input: -CC(94)<=98 (1%) 故障ナンバー:致命的失敗 -output: -Cthulhu : (1D100<=98) 故障ナンバー[94] > 100 > 致命的失敗/故障 -rand:100/100 -============================ -input: -CC(94)<=100-2 (1%) 故障ナンバー:致命的失敗 -output: -Cthulhu : (1D100<=98) 故障ナンバー[94] > 100 > 致命的失敗/故障 -rand:100/100 -============================ -input: -CCB(98)<=80 (5%) 故障ナンバー:成功 -output: -Cthulhu : (1D100<=80) 故障ナンバー[98] > 80 > 成功 -rand:80/100 -============================ -input: -CCB(98)<=80 (5%) 故障ナンバー:故障1 -output: -Cthulhu : (1D100<=80) 故障ナンバー[98] > 96 > 致命的失敗 -rand:96/100 -============================ -input: -CCB(98)<=80 (5%) 故障ナンバー:故障2 -output: -Cthulhu : (1D100<=80) 故障ナンバー[98] > 99 > 致命的失敗/故障 -rand:99/100 -============================ -input: -CCB(98)<=80 (5%) 故障ナンバー:致命的失敗 -output: -Cthulhu : (1D100<=80) 故障ナンバー[98] > 100 > 致命的失敗/故障 -rand:100/100 -============================ -input: -CCB(98)<=100-20 (5%) 故障ナンバー:致命的失敗 -output: -Cthulhu : (1D100<=80) 故障ナンバー[98] > 100 > 致命的失敗/故障 -rand:100/100 -============================ -input: -CBR(50,80) (1%) -output: -Cthulhu : (1d100<=50,80) > 20[成功,成功] > 成功 -rand:20/100 -============================ -input: -CBR(10,80) (1%) -output: -Cthulhu : (1d100<=10,80) > 10[成功,スペシャル] > 成功 -rand:10/100 -============================ -input: -CBR(10,80) (1%) -output: -Cthulhu : (1d100<=10,80) > 1[決定的成功/スペシャル,決定的成功/スペシャル] > 成功 -rand:1/100 -============================ -input: -CBR(10,80) (1%) -output: -Cthulhu : (1d100<=10,80) > 50[失敗,成功] > 部分的成功 -rand:50/100 -============================ -input: -CBR(10,80) (1%) -output: -Cthulhu : (1d100<=10,80) > 90[失敗,失敗] > 失敗 -rand:90/100 -============================ -input: -CBR(10,80) (1%) -output: -Cthulhu : (1d100<=10,80) > 100[致命的失敗,致命的失敗] > 失敗 -rand:100/100 -============================ -input: -CBRB(10,80) (5%) -output: -Cthulhu : (1d100<=10,80) > 5[決定的成功,決定的成功/スペシャル] > 成功 -rand:5/100 -============================ -input: -CBRB(10,80) (5%) -output: -Cthulhu : (1d100<=10,80) > 99[致命的失敗,致命的失敗] > 失敗 -rand:99/100 -============================ -input: -CC(94)<=(60+38) (1%) 故障ナンバー:計算込み -output: -Cthulhu : (1D100<=98) 故障ナンバー[94] > 99 > 故障 -rand:99/100 -============================ -input: -CCB(94)<=(60+38) (5%) 故障ナンバー:計算込み -output: -Cthulhu : (1D100<=98) 故障ナンバー[94] > 99 > 致命的失敗/故障 -rand:99/100 -============================ -input: -RES(12-12) 0+50 -output: -Cthulhu : (1d100<=50) > 75 > 失敗 -rand:75/100 -============================ -input: -RES(12-7) 25+50 -output: -Cthulhu : (1d100<=75) > 75 > 成功 -rand:75/100 -============================ -input: -RES(12-2) 50+50 自動成功 -output: -Cthulhu : (1d100<=100) > 自動成功 -rand: -============================ -input: -RES(12-15) -15+50 -output: -Cthulhu : (1d100<=35) > 75 > 失敗 -rand:75/100 -============================ -input: -RES(12-21) -45+50 -output: -Cthulhu : (1d100<=5) > 75 > 失敗 -rand:75/100 -============================ -input: -RES(12-22) -50+50 自動失敗 -output: -Cthulhu : (1d100<=0) > 自動失敗 -rand: -============================ diff --git a/src/src_bcdice/test/data/Cthulhu7th.txt b/src/src_bcdice/test/data/Cthulhu7th.txt deleted file mode 100644 index e50709b33..000000000 --- a/src/src_bcdice/test/data/Cthulhu7th.txt +++ /dev/null @@ -1,1055 +0,0 @@ -input: -CBR(70,30) -output: -Cthulhu7th : (1d100<=70,30) > 30[ハード成功,レギュラー成功] > 成功 -rand:30/100 -============================ -input: -CBR(70,30) -output: -Cthulhu7th : (1d100<=70,30) > 50[レギュラー成功,失敗] > 部分的成功 -rand:50/100 -============================ -input: -CBR(30,70) -output: -Cthulhu7th : (1d100<=30,70) > 60[失敗,レギュラー成功] > 部分的成功 -rand:60/100 -============================ -input: -CBR(70,69) -output: -Cthulhu7th : (1d100<=70,69) > 14[イクストリーム成功,ハード成功] > 成功 -rand:14/100 -============================ -input: -CBR(70,30) -output: -Cthulhu7th : (1d100<=70,30) > 100[ファンブル,ファンブル] > 失敗 -rand:100/100 -============================ -input: -CBR(70,30) -output: -Cthulhu7th : (1d100<=70,30) > 1[クリティカル,クリティカル] > 成功 -rand:1/100 -============================ -input: -CBR(25,20) -output: -Cthulhu7th : (1d100<=25,20) > 1[クリティカル,クリティカル] > 成功 -rand:1/100 -============================ -input: -CBR(25,1) -output: -Cthulhu7th : (1d100<=25,1) > 5[イクストリーム成功,失敗] > 部分的成功 -rand:5/100 -============================ -input: -CBR(90,40) -output: -Cthulhu7th : (1d100<=90,40) > 97[失敗,ファンブル] > 失敗 -rand:97/100 -============================ -input: -CBR(10,90) -output: -Cthulhu7th : (1d100<=10,90) > 30[失敗,ハード成功] > 部分的成功 -rand:30/100 -============================ -input: -CBR(xxx,xxx) 失敗パターン -output: -rand: -============================ -input: -CC(-1)<=93 -output: -Cthulhu7th : (1D100<=93) ボーナス・ペナルティダイス[-1] > 92, 72 > 92 > レギュラー成功 -rand:9/10,7/10,2/10 -============================ -input: -CC(1)<=53 -output: -Cthulhu7th : (1D100<=53) ボーナス・ペナルティダイス[1] > 92, 52 > 52 > レギュラー成功 -rand:9/10,5/10,2/10 -============================ -input: -CC(+1)<=53 -output: -Cthulhu7th : (1D100<=53) ボーナス・ペナルティダイス[1] > 92, 52 > 52 > レギュラー成功 -rand:9/10,5/10,2/10 -============================ -input: -CC(1)<=46 -output: -Cthulhu7th : (1D100<=46) ボーナス・ペナルティダイス[1] > 47, 37 > 37 > レギュラー成功 -rand:4/10,3/10,7/10 -============================ -input: -CC(-1)<=46 -output: -Cthulhu7th : (1D100<=46) ボーナス・ペナルティダイス[-1] > 47, 37 > 47 > 失敗 -rand:4/10,3/10,7/10 -============================ -input: -CC(1)<=63 -output: -Cthulhu7th : (1D100<=63) ボーナス・ペナルティダイス[1] > 100, 100 > 100 > ファンブル -rand:10/10,10/10,10/10 -============================ -input: -CC(-1)<=63 -output: -Cthulhu7th : (1D100<=63) ボーナス・ペナルティダイス[-1] > 100, 100 > 100 > ファンブル -rand:10/10,10/10,10/10 -============================ -input: -CC(1)<=63 -output: -Cthulhu7th : (1D100<=63) ボーナス・ペナルティダイス[1] > 1, 1 > 1 > クリティカル -rand:10/10,10/10,1/10 -============================ -input: -CC(-1)<=63 -output: -Cthulhu7th : (1D100<=63) ボーナス・ペナルティダイス[-1] > 1, 1 > 1 > クリティカル -rand:10/10,10/10,1/10 -============================ -input: -CC(0)<=53 -output: -Cthulhu7th : (1D100<=53) ボーナス・ペナルティダイス[0] > 52 > 52 > レギュラー成功 -rand:5/10,2/10 -============================ -input: -CC<=53 -output: -Cthulhu7th : (1D100<=53) ボーナス・ペナルティダイス[0] > 52 > 52 > レギュラー成功 -rand:5/10,2/10 -============================ -input: -CC<=5 -output: -Cthulhu7th : (1D100<=5) ボーナス・ペナルティダイス[0] > 2 > 2 > ハード成功 -rand:10/10,2/10 -============================ -input: -CC(2)<=73 -output: -Cthulhu7th : (1D100<=73) ボーナス・ペナルティダイス[2] > 24, 14, 54 > 14 > イクストリーム成功 -rand:2/10,1/10,5/10,4/10 -============================ -input: -CC(2)<=73 -output: -Cthulhu7th : (1D100<=73) ボーナス・ペナルティダイス[2] > 20, 100, 50 > 20 > ハード成功 -rand:2/10,10/10,5/10,10/10 -============================ -input: -CC(-2)<=43 -output: -Cthulhu7th : (1D100<=43) ボーナス・ペナルティダイス[-2] > 97, 67, 37 > 97 > ファンブル -rand:9/10,6/10,3/10,7/10 -============================ -input: -CC(-2)<=80 -output: -Cthulhu7th : (1D100<=80) ボーナス・ペナルティダイス[-2] > 100, 60, 50 > 100 > ファンブル -rand:10/10,6/10,5/10,10/10 -============================ -input: -CC(-1)<=53 -output: -Cthulhu7th : (1D100<=53) ボーナス・ペナルティダイス[-1] > 97, 67 > 97 > 失敗 -rand:9/10,6/10,7/10 -============================ -input: -CC<=49 -output: -Cthulhu7th : (1D100<=49) ボーナス・ペナルティダイス[0] > 95 > 95 > 失敗 -rand:9/10,5/10 -============================ -input: -CC<=49 -output: -Cthulhu7th : (1D100<=49) ボーナス・ペナルティダイス[0] > 96 > 96 > ファンブル -rand:9/10,6/10 -============================ -input: -CC<=50 -output: -Cthulhu7th : (1D100<=50) ボーナス・ペナルティダイス[0] > 99 > 99 > 失敗 -rand:9/10,9/10 -============================ -input: -CC<=50 -output: -Cthulhu7th : (1D100<=50) ボーナス・ペナルティダイス[0] > 100 > 100 > ファンブル -rand:10/10,10/10 -============================ -input: -CC(-3)<=80 -output: -Cthulhu7th : エラー。ボーナス・ペナルティダイスの値は-2~2です。 -rand: -============================ -input: -CC(3)<=80 -output: -Cthulhu7th : エラー。ボーナス・ペナルティダイスの値は-2~2です。 -rand: -============================ -input: -CC<=0 -output: -Cthulhu7th : 1D100 > 33 -rand:33/100 -============================ -input: -CC(2) -output: -Cthulhu7th : (1D100) ボーナス・ペナルティダイス[2] > 20, 100, 50 > 20 -rand:2/10,10/10,5/10,10/10 -============================ -input: -CC(2)<=0 -output: -Cthulhu7th : (1D100) ボーナス・ペナルティダイス[2] > 20, 100, 50 > 20 -rand:2/10,10/10,5/10,10/10 -============================ -input: -CC(-2) -output: -Cthulhu7th : (1D100) ボーナス・ペナルティダイス[-2] > 97, 67, 37 > 97 -rand:9/10,6/10,3/10,7/10 -============================ -input: -CC-1<=93 ペナルティダイス指定カッコなし -output: -Cthulhu7th : (1D100<=93) ボーナス・ペナルティダイス[-1] > 92, 72 > 92 > レギュラー成功 -rand:9/10,7/10,2/10 -============================ -input: -CC1<=53 ボーナスダイス指定カッコなし -output: -Cthulhu7th : (1D100<=53) ボーナス・ペナルティダイス[1] > 92, 52 > 52 > レギュラー成功 -rand:9/10,5/10,2/10 -============================ -input: -CC+1<=53 ボーナスダイス指定カッコなし -output: -Cthulhu7th : (1D100<=53) ボーナス・ペナルティダイス[1] > 92, 52 > 52 > レギュラー成功 -rand:9/10,5/10,2/10 -============================ -input: -FAR(30,62,98) -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 52 > レギュラー成功 (3発が命中、0発が貫通) -2回目: > 11, 81 > 失敗 (0発が命中、0発が貫通) -3回目: > 2, 2, 2 > イクストリーム成功 (3発が命中、3発が貫通) -【難易度がハードに変更】 -4回目: > 98, 88, 78 > ファンブル ジャム -> 6発が通常命中、3発が貫通、残弾12発 -rand:5/10,2/10,1/10,8/10,1/10,10/10,10/10,10/10,2/10,9/10,8/10,7/10,8/10 -============================ -input: -FAR(30,62,98,) -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 52 > レギュラー成功 (3発が命中、0発が貫通) -2回目: > 11, 81 > 失敗 (0発が命中、0発が貫通) -3回目: > 2, 2, 2 > イクストリーム成功 (3発が命中、3発が貫通) -【難易度がハードに変更】 -4回目: > 98, 88, 78 > ファンブル ジャム -> 6発が通常命中、3発が貫通、残弾12発 -rand:5/10,2/10,1/10,8/10,1/10,10/10,10/10,10/10,2/10,9/10,8/10,7/10,8/10 -============================ -input: -FAR(30,62,98,,) -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 52 > レギュラー成功 (3発が命中、0発が貫通) -2回目: > 11, 81 > 失敗 (0発が命中、0発が貫通) -3回目: > 2, 2, 2 > イクストリーム成功 (3発が命中、3発が貫通) -【難易度がハードに変更】 -4回目: > 98, 88, 78 > ファンブル ジャム -> 6発が通常命中、3発が貫通、残弾12発 -rand:5/10,2/10,1/10,8/10,1/10,10/10,10/10,10/10,2/10,9/10,8/10,7/10,8/10 -============================ -input: -FAR(30,62,98,-1) -output: -Cthulhu7th : ボーナス・ペナルティダイス[-1] -1回目: > 11, 81 > 失敗 (0発が命中、0発が貫通) -2回目: > 2, 2, 2 > イクストリーム成功 (3発が命中、3発が貫通) -【難易度がハードに変更】 -3回目: > 98, 88, 78 > ファンブル ジャム -> 3発が通常命中、3発が貫通、残弾18発 -rand:1/10,8/10,1/10,10/10,10/10,10/10,2/10,9/10,8/10,7/10,8/10 -============================ -input: -FAR(30,62,98,-1,) -output: -Cthulhu7th : ボーナス・ペナルティダイス[-1] -1回目: > 11, 81 > 失敗 (0発が命中、0発が貫通) -2回目: > 2, 2, 2 > イクストリーム成功 (3発が命中、3発が貫通) -【難易度がハードに変更】 -3回目: > 98, 88, 78 > ファンブル ジャム -> 3発が通常命中、3発が貫通、残弾18発 -rand:1/10,8/10,1/10,10/10,10/10,10/10,2/10,9/10,8/10,7/10,8/10 -============================ -input: -FAR(30,62,98,-2) -output: -Cthulhu7th : ボーナス・ペナルティダイス[-2] -1回目: > 2, 2, 2 > イクストリーム成功 (3発が命中、3発が貫通) -【難易度がハードに変更】 -2回目: > 98, 88, 78 > ファンブル ジャム -> 3発が通常命中、3発が貫通、残弾24発 -rand:10/10,10/10,10/10,2/10,9/10,8/10,7/10,8/10 -============================ -input: -FAR(30,1,98) -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 1 > クリティカル (2発が命中、1発が貫通) -2回目: > 98, 88 > ファンブル ジャム -> 2発が通常命中、1発が貫通、残弾27発 -rand:10/10,1/10,9/10,8/10,8/10 -============================ -input: -FAR(30,14,98) -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 2 > イクストリーム成功 (2発が命中、1発が貫通) -2回目: > 98, 88 > ファンブル ジャム -> 2発が通常命中、1発が貫通、残弾27発 -rand:10/10,2/10,9/10,8/10,8/10 -============================ -input: -FAR(30,8,98) -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 2 > ハード成功 (1発が命中、0発が貫通) -2回目: > 98, 88 > ファンブル ジャム -> 1発が通常命中、0発が貫通、残弾27発 -rand:10/10,2/10,9/10,8/10,8/10 -============================ -input: -FAR(7,80,98) 貫通する弾丸の数=そのロールで判定する弾丸の数/2(※ボレー/2ではない) -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 10 > イクストリーム成功 (4発が命中、3発が貫通) -> 4発が通常命中、3発が貫通、残弾0発 -rand:1/10,10/10 -============================ -input: -FAR(7,80,98) -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 50 > レギュラー成功 (3発が命中、0発が貫通) -> 3発が通常命中、0発が貫通、残弾0発 -rand:5/10,10/10 -============================ -input: -FAR(7,99,98) -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 98 > レギュラー成功 ジャム -> 0発が通常命中、0発が貫通、残弾7発 -rand:9/10,8/10 -============================ -input: -FAR(1,80,98) -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 50 > レギュラー成功 (1発が命中、0発が貫通) -> 1発が通常命中、0発が貫通、残弾0発 -rand:5/10,10/10 -============================ -input: -FAR(1,80,98) -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 5 > イクストリーム成功 (0発が命中、1発が貫通) -> 0発が通常命中、1発が貫通、残弾0発 -rand:10/10,5/10 -============================ -input: -FAR(1,99,98) -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 97 > レギュラー成功 (1発が命中、0発が貫通) -> 1発が通常命中、0発が貫通、残弾0発 -rand:9/10,7/10 -============================ -input: -FAR(1,99,98) -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 98 > レギュラー成功 ジャム -> 0発が通常命中、0発が貫通、残弾1発 -rand:9/10,8/10 -============================ -input: -FAR(30,42,98,-2) -output: -Cthulhu7th : ボーナス・ペナルティダイス[-2] -1回目: > 98, 88, 78 > ファンブル ジャム -> 0発が通常命中、0発が貫通、残弾30発 -rand:9/10,8/10,7/10,8/10, -============================ -input: -FAR(30,42,98,-1) -output: -Cthulhu7th : ボーナス・ペナルティダイス[-1] -1回目: > 98, 88 > ファンブル ジャム -> 0発が通常命中、0発が貫通、残弾30発 -rand:9/10,8/10,8/10, -============================ -input: -FAR(40,82,97,1) -output: -Cthulhu7th : ボーナス・ペナルティダイス[1] -1回目: > 52, 22 > ハード成功 (4発が命中、0発が貫通) -2回目: > 1 > クリティカル (4発が命中、4発が貫通) -3回目: > 15, 85 > 失敗 (0発が命中、0発が貫通) -4回目: > 3, 13, 3 > イクストリーム成功 (4発が命中、4発が貫通) -【難易度がハードに変更】 -5回目: > 98, 88, 78 > ファンブル ジャム -> 12発が通常命中、8発が貫通、残弾8発 -rand:5/10,2/10,2/10,10/10,1/10,1/10,8/10,5/10,10/10,1/10,10/10,3/10,9/10,8/10,7/10,8/10 -============================ -input: -FAR(40,82,97,2) -output: -Cthulhu7th : ボーナス・ペナルティダイス[2] -1回目: > 61, 71, 21 > ハード成功 (4発が命中、0発が貫通) -2回目: > 80, 70 > レギュラー成功 (4発が命中、0発が貫通) -3回目: > 65 > レギュラー成功 (4発が命中、0発が貫通) -4回目: > 15, 85 > 失敗 (0発が命中、0発が貫通) -5回目: > 44, 14, 74 > レギュラー成功 (4発が命中、0発が貫通) -> 16発が通常命中、0発が貫通、残弾0発 -rand:6/10,7/10,2/10,1/10,8/10,7/10,10/10,6/10,5/10,1/10,8/10,5/10,4/10,1/10,7/10,4/10 -============================ -input: -FAR(38,82,97,2) -output: -Cthulhu7th : ボーナス・ペナルティダイス[2] -1回目: > 61, 71, 21 > ハード成功 (4発が命中、0発が貫通) -2回目: > 80, 70 > レギュラー成功 (4発が命中、0発が貫通) -3回目: > 65 > レギュラー成功 (4発が命中、0発が貫通) -4回目: > 15, 85 > 失敗 (0発が命中、0発が貫通) -5回目: > 44, 14, 74 > レギュラー成功 (3発が命中、0発が貫通) -> 15発が通常命中、0発が貫通、残弾0発 -rand:6/10,7/10,2/10,1/10,8/10,7/10,10/10,6/10,5/10,1/10,8/10,5/10,4/10,1/10,7/10,4/10 -============================ -input: -FAR(72,82,97,2) -output: -Cthulhu7th : ボーナス・ペナルティダイス[2] -1回目: > 61, 71, 21 > ハード成功 (4発が命中、0発が貫通) -2回目: > 80, 70 > レギュラー成功 (4発が命中、0発が貫通) -3回目: > 65 > レギュラー成功 (4発が命中、0発が貫通) -4回目: > 15, 85 > 失敗 (0発が命中、0発が貫通) -5回目: > 44, 14, 74 > レギュラー成功 (4発が命中、0発が貫通) -【難易度がハードに変更】 -6回目: > 28, 88, 78 > 失敗 (0発が命中、0発が貫通) -【難易度がイクストリームに変更】 -7回目: > 83, 33, 33 > 失敗 (0発が命中、0発が貫通) -【難易度がクリティカルに変更】 -8回目: > 68, 48, 68 > レギュラー成功 (0発が命中、0発が貫通) -> 16発が通常命中、0発が貫通、残弾8発 -rand:6/10,7/10,2/10,1/10,8/10,7/10,10/10,6/10,5/10,1/10,8/10,5/10,4/10,1/10,7/10,4/10,2/10,8/10,7/10,8/10,8/10,3/10,3/10,3/10,6/10,4/10,6/10,8/10 -============================ -input: -FAR(72,82,97,2) -output: -Cthulhu7th : ボーナス・ペナルティダイス[2] -1回目: > 61, 71, 21 > ハード成功 (4発が命中、0発が貫通) -2回目: > 90, 70 > レギュラー成功 (4発が命中、0発が貫通) -3回目: > 65 > レギュラー成功 (4発が命中、0発が貫通) -4回目: > 15, 95 > 失敗 (0発が命中、0発が貫通) -5回目: > 44, 14, 74 > レギュラー成功 (4発が命中、0発が貫通) -【難易度がハードに変更】 -6回目: > 58, 68, 78 > レギュラー成功 (0発が命中、0発が貫通) -【難易度がイクストリームに変更】 -7回目: > 23, 33, 23 > ハード成功 (0発が命中、0発が貫通) -【難易度がクリティカルに変更】 -8回目: > 16, 6, 16 > イクストリーム成功 (0発が命中、0発が貫通) -> 16発が通常命中、0発が貫通、残弾8発 -rand:6/10,7/10,2/10,1/10,9/10,7/10,10/10,6/10,5/10,1/10,9/10,5/10,4/10,1/10,7/10,4/10,5/10,6/10,7/10,8/10,2/10,3/10,2/10,3/10,1/10,10/10,1/10,6/10 -============================ -input: -FAR(72,82,97,2) -output: -Cthulhu7th : ボーナス・ペナルティダイス[2] -1回目: > 61, 71, 21 > ハード成功 (4発が命中、0発が貫通) -2回目: > 90, 70 > レギュラー成功 (4発が命中、0発が貫通) -3回目: > 65 > レギュラー成功 (4発が命中、0発が貫通) -4回目: > 15, 95 > 失敗 (0発が命中、0発が貫通) -5回目: > 44, 14, 74 > レギュラー成功 (4発が命中、0発が貫通) -【難易度がハードに変更】 -6回目: > 28, 38, 18 > ハード成功 (4発が命中、0発が貫通) -【難易度がイクストリームに変更】 -7回目: > 13, 3, 13 > イクストリーム成功 (4発が命中、4発が貫通) -【難易度がクリティカルに変更】 -8回目: > 1, 1, 1 > クリティカル (4発が命中、0発が貫通) -> 28発が通常命中、4発が貫通、残弾8発 -rand:6/10,7/10,2/10,1/10,9/10,7/10,10/10,6/10,5/10,1/10,9/10,5/10,4/10,1/10,7/10,4/10,2/10,3/10,1/10,8/10,1/10,10/10,1/10,3/10,10/10,10/10,10/10,1/10 -============================ -input: -FAR(120,82,97,-2) -output: -Cthulhu7th : 弾薬が多すぎます。装填された弾薬を100発に変更します。 -ボーナス・ペナルティダイス[-2] -1回目: > 60, 100, 20 > ファンブル ジャム -> 0発が通常命中、0発が貫通、残弾100発 -rand:6/10,10/10,2/10,10/10 -============================ -input: -FAR(120,82,97,3) -output: -Cthulhu7th : エラー。ボーナス・ペナルティダイスの値は-2~2です。 -rand: -============================ -input: -FAR(38,99,97,-1) -output: -Cthulhu7th : ボーナス・ペナルティダイス[-1] -1回目: > 78, 98 > レギュラー成功 ジャム -> 0発が通常命中、0発が貫通、残弾38発 -rand:7/10,9/10,8/10 -============================ -input: -FAR(0,0,98) -output: -Cthulhu7th : 弾薬は正の数です。 -rand: -============================ -input: -FAR(1,98,5) 故障ナンバーが極端に低いありえない場合の処理 -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 8 > イクストリーム成功 ジャム -> 0発が通常命中、0発が貫通、残弾1発 -rand:10/10,8/10 -============================ -input: -FAR(3,98,5) 故障ナンバーが極端に低いありえない場合の処理 -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 8 > イクストリーム成功 ジャム -> 0発が通常命中、0発が貫通、残弾3発 -rand:10/10,8/10 -============================ -input: -FAR(1,98,5) 故障ナンバーが極端に低いありえない場合の処理 -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 58 > レギュラー成功 ジャム -> 0発が通常命中、0発が貫通、残弾1発 -rand:5/10,8/10 -============================ -input: -FAR(3,98,5) 故障ナンバーが極端に低いありえない場合の処理 -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 58 > レギュラー成功 ジャム -> 0発が通常命中、0発が貫通、残弾3発 -rand:5/10,8/10 -============================ -input: -FAR(3,18,5) 故障ナンバーが極端に低いありえない場合の処理 -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 18 > レギュラー成功 ジャム -> 0発が通常命中、0発が貫通、残弾3発 -rand:1/10,8/10 -============================ -input: -FAR(3,8,5) 故障ナンバーが極端に低いありえない場合の処理 -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 8 > レギュラー成功 ジャム -> 0発が通常命中、0発が貫通、残弾3発 -rand:10/10,8/10 -============================ -input: -FAR(1,99,-98) 故障ナンバーにマイナスがついている場合、絶対値を付ける処理の確認 -output: -Cthulhu7th : 故障ナンバーは正の数です。マイナス記号を外します。 -ボーナス・ペナルティダイス[0] -1回目: > 8 > イクストリーム成功 (0発が命中、1発が貫通) -> 0発が通常命中、1発が貫通、残弾0発 -rand:10/10,8/10 -============================ -input: -FAR(-1,99,98) 弾数がマイナスの異常パターン。 -output: -Cthulhu7th : 弾薬は正の数です。 -rand: -============================ -input: -FAR(1,-99,-98) 目標値がマイナスの異常パターン。 -output: -Cthulhu7th : 目標値は正の数です。 -rand: -============================ -input: -FAR(1,99,98,3) ボーナスダイス異常パターン -output: -Cthulhu7th : エラー。ボーナス・ペナルティダイスの値は-2~2です。 -rand: -============================ -input: -FAR(60,50,99,1,r) 通常難易度のみで連射を終える。ボーナスダイス1。 -output: -Cthulhu7th : ボーナス・ペナルティダイス[1] -1回目: > 94, 74 > 失敗 (0発が命中、0発が貫通) -2回目: > 19 > ハード成功 (2発が命中、0発が貫通) -3回目: > 84, 44 > 失敗 (0発が命中、0発が貫通) -4回目: > 47, 97, 37 > 失敗 (0発が命中、0発が貫通) -【指定の難易度となったので、処理を終了します。】 -> 2発が通常命中、0発が貫通、残弾40発 -rand:9/10,7/10,4/10,1/10,9/10,8/10,4/10,4/10,4/10,9/10,3/10,7/10 -============================ -input: -FAR(60,50,99,,r) 通常難易度のみで連射を終える。ボーナスダイス0。 -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 19 > ハード成功 (2発が命中、0発が貫通) -2回目: > 84, 44 > 失敗 (0発が命中、0発が貫通) -3回目: > 47, 97, 37 > 失敗 (0発が命中、0発が貫通) -【指定の難易度となったので、処理を終了します。】 -> 2発が通常命中、0発が貫通、残弾45発 -rand:1/10,9/10,8/10,4/10,4/10,4/10,9/10,3/10,7/10 -============================ -input: -FAR(45,70,98,,h) 困難難易度のみで連射を終える。ボーナスダイス0。ジャムで終了。 -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 40 > レギュラー成功 (3発が命中、0発が貫通) -2回目: > 48, 78 > 失敗 (0発が命中、0発が貫通) -3回目: > 39, 99, 79 > 失敗 ジャム -> 3発が通常命中、0発が貫通、残弾31発 -rand:4/10,10/10,4/10,7/10,8/10,3/10,9/10,7/10,9/10 -============================ -input: -FAR(45,70,98,,h) 困難難易度のみで連射を終える。ボーナスダイス0。 -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 28 > ハード成功 (3発が命中、0発が貫通) -2回目: > 25, 65 > レギュラー成功 (3発が命中、0発が貫通) -3回目: > 33, 63, 73 > 失敗 (0発が命中、0発が貫通) -【難易度がハードに変更】 -4回目: > 18, 58, 38 > レギュラー成功 (0発が命中、0発が貫通) -【指定の難易度となったので、処理を終了します。】 -> 6発が通常命中、0発が貫通、残弾17発 -rand:2/10,8/10,2/10,6/10,5/10,3/10,6/10,7/10,3/10,1/10,5/10,3/10,8/10 -============================ -input: -FAR(45,70,98,-2,e) 極限難易度のみで連射を終える。ボーナスダイス-2。 -output: -Cthulhu7th : ボーナス・ペナルティダイス[-2] -1回目: > 55, 95, 5 > 失敗 (0発が命中、0発が貫通) -【難易度がハードに変更】 -2回目: > 76, 86, 46 > 失敗 (0発が命中、0発が貫通) -【難易度がイクストリームに変更】 -3回目: > 43, 53, 33 > レギュラー成功 (0発が命中、0発が貫通) -【指定の難易度となったので、処理を終了します。】 -> 0発が通常命中、0発が貫通、残弾24発 -rand:5/10,9/10,10/10,5/10,7/10,8/10,4/10,6/10,4/10,5/10,3/10,3/10 -============================ -input: -FAR(45,70,100,-2,e) 極限難易度のみで連射を終える。ボーナスダイス-2。ファンブル。 -output: -Cthulhu7th : ボーナス・ペナルティダイス[-2] -1回目: > 20, 100, 40 > ファンブル ジャム -> 0発が通常命中、0発が貫通、残弾45発 -rand:2/10,10/10,4/10,10/10 -============================ -input: -FAR(45,70,96,-2,e) 極限難易度のみで連射を終える。ボーナスダイス-2。ファンブル ジャム。 -output: -Cthulhu7th : ボーナス・ペナルティダイス[-2] -1回目: > 12, 72, 22 > 失敗 (0発が命中、0発が貫通) -【難易度がハードに変更】 -2回目: > 60, 30, 30 > レギュラー成功 (0発が命中、0発が貫通) -【難易度がイクストリームに変更】 -3回目: > 18, 98, 28 > ファンブル ジャム -> 0発が通常命中、0発が貫通、残弾31発 -rand:1/10,7/10,2/10,2/10,6/10,3/10,3/10,10/10,1/10,9/10,2/10,8/10 -============================ -input: -BMS -output: -Cthulhu7th : 狂気の発作(サマリー)(7) > 収容:探索者は精神療養施設あるいは警察の留置所で意識を取り戻す。探索者は徐々にそこにいたった出来事を思い出すかもしれない。(1D10>7時間) -rand:7/10,7/10 -============================ -input: -BMR -output: -Cthulhu7th : 狂気の発作(リアルタイム)(5) > 重要な人々:探索者のバックストーリーの重要な人々を見直す。探索者はその場にいた人物を、自分にとっての重要な人々だと思い込む。人間関係の性質を考慮した上で、探索者はそれに従って行動する。1D10ラウンド続く。(1D10>3ラウンド) -rand:5/10,3/10 -============================ -input: -PH -output: -Cthulhu7th : 恐怖症表(1) > 入浴恐怖症:体、手、顔を洗うのが怖い。 -rand:1/100 -============================ -input: -PH -output: -Cthulhu7th : 恐怖症表(36) > ピン恐怖症:針やピンが怖い。 -rand:36/100 -============================ -input: -PH -output: -Cthulhu7th : 恐怖症表(100) > 動物恐怖症:動物が怖い。 -rand:100/100 -============================ -input: -MA -output: -Cthulhu7th : マニア表(1) > 洗浄マニア:自分の体を洗わずにはいられない。 -rand:1/100 -============================ -input: -MA -output: -Cthulhu7th : マニア表(30) > ピエロマニア:ピエロへの執着。 -rand:30/100 -============================ -input: -MA -output: -Cthulhu7th : マニア表(100) > 動物マニア:動物への正気でない溺愛。 -rand:100/100 -============================ -input: -FCL -output: -Cthulhu7th : キャスティング・ロール失敗(小)表(1) > 視界がぼんやりするか、あるいは一時的な失明。 -rand:1/8 -============================ -input: -FCL -output: -Cthulhu7th : キャスティング・ロール失敗(小)表(5) > 奇妙な幻視と幻覚。 -rand:5/8 -============================ -input: -FCL -output: -Cthulhu7th : キャスティング・ロール失敗(小)表(8) > クトゥルフ神話の怪物が偶然召喚される。 -rand:8/8 -============================ -input: -FCM -output: -Cthulhu7th : キャスティング・ロール失敗(大)表(1) > 大地が震え、壁に亀裂が入って崩れる。 -rand:1/8 -============================ -input: -FCM -output: -Cthulhu7th : キャスティング・ロール失敗(大)表(3) > 血が空から降る。 -rand:3/8 -============================ -input: -FCM -output: -Cthulhu7th : キャスティング・ロール失敗(大)表(8) > クトゥルフ神話の神格が偶然招来される。 -rand:8/8 -============================ -input: -cc ccのみで可能に -output: -Cthulhu7th : 1D100 > 19 -rand:19/100 -============================ -input: -FAR(60,50,99,1,r) 貫通時の処理のテストデータ抜けがあったので追加。 -output: -Cthulhu7th : ボーナス・ペナルティダイス[1] -1回目: > 94, 4 > イクストリーム成功 (3発が命中、2発が貫通) -2回目: > 19 > ハード成功 (2発が命中、0発が貫通) -3回目: > 84, 44 > 失敗 (0発が命中、0発が貫通) -4回目: > 47, 97, 37 > 失敗 (0発が命中、0発が貫通) -【指定の難易度となったので、処理を終了します。】 -> 5発が通常命中、2発が貫通、残弾40発 -rand:9/10,10/10,4/10,1/10,9/10,8/10,4/10,4/10,4/10,9/10,3/10,7/10 -============================ -input: -FAR(60,20,99,1,r) 最低のボレー数が3との記述を見逃してたので追加。 -output: -Cthulhu7th : ボーナス・ペナルティダイス[1] -1回目: > 94, 4 > イクストリーム成功 (2発が命中、1発が貫通) -2回目: > 19 > レギュラー成功 (1発が命中、0発が貫通) -3回目: > 84, 44 > 失敗 (0発が命中、0発が貫通) -4回目: > 47, 97, 37 > ファンブル (0発が命中、0発が貫通) -【指定の難易度となったので、処理を終了します。】 -> 3発が通常命中、1発が貫通、残弾48発 -rand:9/10,10/10,4/10,1/10,9/10,8/10,4/10,4/10,4/10,9/10,3/10,7/10 -============================ -input: -FAR(7,80,98) 通常命中する弾丸の数=そのロールで判定する弾丸の数/2(※ボレー/2ではない) -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 19 > ハード成功 (3発が命中、0発が貫通) -> 3発が通常命中、0発が貫通、残弾0発 -rand:1/10,9/10 -============================ -input: -FAR(21,90,99,1,r) 2020/04/02修正内容の総合テスト1 -output: -Cthulhu7th : ボーナス・ペナルティダイス[1] -1回目: > 94, 4 > イクストリーム成功 (5発が命中、4発が貫通) -2回目: > 19 > ハード成功 (4発が命中、0発が貫通) -3回目: > 84, 44 > レギュラー成功 (1発が命中、0発が貫通) -> 10発が通常命中、4発が貫通、残弾0発 -rand:9/10,10/10,4/10,1/10,9/10,8/10,4/10,4/10 -============================ -input: -FAR(7,10,99,1,r) 2020/04/02修正内容の総合テスト2 -output: -Cthulhu7th : ボーナス・ペナルティダイス[1] -1回目: > 92, 2 > イクストリーム成功 (2発が命中、1発が貫通) -2回目: > 5 > ハード成功 (1発が命中、0発が貫通) -3回目: > 1, 1 > クリティカル (0発が命中、1発が貫通) -> 3発が通常命中、2発が貫通、残弾0発 -rand:9/10,10/10,2/10,10/10,5/10,10/10,10/10,1/10 -============================ -input: -FAR(8,10,99,1,r) 2020/04/02修正内容の総合テスト3 -output: -Cthulhu7th : ボーナス・ペナルティダイス[1] -1回目: > 92, 2 > イクストリーム成功 (2発が命中、1発が貫通) -2回目: > 5 > ハード成功 (1発が命中、0発が貫通) -3回目: > 1, 1 > クリティカル (1発が命中、1発が貫通) -> 4発が通常命中、2発が貫通、残弾0発 -rand:9/10,10/10,2/10,10/10,5/10,10/10,10/10,1/10 -============================ -input: -FAR(8,10,99,-2,r) 2020/07/11追加機能テスト1 -output: -Cthulhu7th : ボーナス・ペナルティダイス[-2] -1回目: > 100, 100, 100 > ファンブル ジャム -> 0発が通常命中、0発が貫通、残弾8発 -rand:10/10,10/10,10/10,10/10 -============================ -input: -FAR(8,10,99,-2,r,) 2020/07/11追加機能テスト2 -output: -Cthulhu7th : ボーナス・ペナルティダイス[-2] -1回目: > 100, 100, 100 > ファンブル ジャム -> 0発が通常命中、0発が貫通、残弾8発 -rand:10/10,10/10,10/10,10/10 -============================ -input: -FAR(20,50,99,-2,r,5) 2020/07/11追加機能テスト3 -output: -Cthulhu7th : ボーナス・ペナルティダイス[-2] -1回目: > 67, 87, 87 > 失敗 (0発が命中、0発が貫通) -【指定の難易度となったので、処理を終了します。】 -> 0発が通常命中、0発が貫通、残弾15発 -rand:6/10,8/10,8/10,7/10 -============================ -input: -FAR(20,50,99,-2,r,6) 2020/07/11追加機能テスト4 -output: -Cthulhu7th : ボレーの弾丸の数の上限は[技能値÷10(切り捨て)]発なので、それより高い数を指定できません。ボレーの弾丸の数を5発に変更します。 -ボーナス・ペナルティダイス[-2] -1回目: > 67, 87, 87 > 失敗 (0発が命中、0発が貫通) -【指定の難易度となったので、処理を終了します。】 -> 0発が通常命中、0発が貫通、残弾15発 -rand:6/10,8/10,8/10,7/10 -============================ -input: -FAR(20,50,99,-2,r,4) 2020/07/11追加機能テスト5 -output: -Cthulhu7th : ボーナス・ペナルティダイス[-2] -1回目: > 67, 87, 87 > 失敗 (0発が命中、0発が貫通) -【指定の難易度となったので、処理を終了します。】 -> 0発が通常命中、0発が貫通、残弾16発 -rand:6/10,8/10,8/10,7/10 -============================ -input: -FAR(20,50,99,-2,r,5) 2020/07/11追加機能テスト6 -output: -Cthulhu7th : ボーナス・ペナルティダイス[-2] -1回目: > 7, 7, 7 > イクストリーム成功 (3発が命中、2発が貫通) -【指定の難易度となったので、処理を終了します。】 -> 3発が通常命中、2発が貫通、残弾15発 -rand:10/10,10/10,10/10,7/10 -============================ -input: -FAR(20,50,99,-2,r,4) 2020/07/11追加機能テスト7 -output: -Cthulhu7th : ボーナス・ペナルティダイス[-2] -1回目: > 7, 7, 7 > イクストリーム成功 (2発が命中、2発が貫通) -【指定の難易度となったので、処理を終了します。】 -> 2発が通常命中、2発が貫通、残弾16発 -rand:10/10,10/10,10/10,7/10 -============================ -input: -FAR(20,50,99,-2,r,3) 2020/07/11追加機能テスト8 -output: -Cthulhu7th : ボーナス・ペナルティダイス[-2] -1回目: > 7, 7, 7 > イクストリーム成功 (2発が命中、1発が貫通) -【指定の難易度となったので、処理を終了します。】 -> 2発が通常命中、1発が貫通、残弾17発 -rand:10/10,10/10,10/10,7/10 -============================ -input: -FAR(20,50,99,-2,r,2) 2020/07/11追加機能テスト9 -output: -Cthulhu7th : ボレーの弾丸の数の下限は3発です。ボレーの弾丸の数を3発に変更します。 -ボーナス・ペナルティダイス[-2] -1回目: > 7, 7, 7 > イクストリーム成功 (2発が命中、1発が貫通) -【指定の難易度となったので、処理を終了します。】 -> 2発が通常命中、1発が貫通、残弾17発 -rand:10/10,10/10,10/10,7/10 -============================ -input: -FAR(20,50,99,-2,r,1) 2020/07/11追加機能テスト10 -output: -Cthulhu7th : ボレーの弾丸の数の下限は3発です。ボレーの弾丸の数を3発に変更します。 -ボーナス・ペナルティダイス[-2] -1回目: > 7, 7, 7 > イクストリーム成功 (2発が命中、1発が貫通) -【指定の難易度となったので、処理を終了します。】 -> 2発が通常命中、1発が貫通、残弾17発 -rand:10/10,10/10,10/10,7/10 -============================ -input: -FAR(20,50,99,-2,r,0) 2020/07/11追加機能テスト11 -output: -Cthulhu7th : ボレーの弾丸の数は正の数です。 -rand: -============================ -input: -FAR(20,50,99,-2,r,-1) 2020/07/11追加機能テスト12 -output: -Cthulhu7th : ボレーの弾丸の数は正の数です。 -rand: -============================ -input: -FAR(6,50,99,,,1) 2020/07/11追加機能テスト13 -output: -Cthulhu7th : ボレーの弾丸の数の下限は3発です。ボレーの弾丸の数を3発に変更します。 -ボーナス・ペナルティダイス[0] -1回目: > 7 > イクストリーム成功 (2発が命中、1発が貫通) -2回目: > 11, 1 > ハード成功 (1発が命中、0発が貫通) -> 3発が通常命中、1発が貫通、残弾0発 -rand:10/10,7/10,1/10,10/10,1/10 -============================ -input: -FAR(6,12,99,,,4) 2020/07/11追加機能テスト14 -output: -Cthulhu7th : 技能値が39以下ではボレーの弾丸の数の上限および下限は3発です。ボレーの弾丸の数を3発に変更します。 -ボーナス・ペナルティダイス[0] -1回目: > 1 > クリティカル (2発が命中、1発が貫通) -2回目: > 11, 1 > レギュラー成功 (1発が命中、0発が貫通) -> 3発が通常命中、1発が貫通、残弾0発 -rand:10/10,1/10,1/10,10/10,1/10 -============================ -input: -FAR(6,12,99,,,3) 2020/07/11追加機能テスト15 -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 1 > クリティカル (2発が命中、1発が貫通) -2回目: > 11, 1 > レギュラー成功 (1発が命中、0発が貫通) -> 3発が通常命中、1発が貫通、残弾0発 -rand:10/10,1/10,1/10,10/10,1/10 -============================ -input: -FAR(6,12,99,,,2) 2020/07/11追加機能テスト16 -output: -Cthulhu7th : ボレーの弾丸の数の下限は3発です。ボレーの弾丸の数を3発に変更します。 -ボーナス・ペナルティダイス[0] -1回目: > 1 > クリティカル (2発が命中、1発が貫通) -2回目: > 11, 1 > レギュラー成功 (1発が命中、0発が貫通) -> 3発が通常命中、1発が貫通、残弾0発 -rand:10/10,1/10,1/10,10/10,1/10 -============================ -input: -FAR(6,12,99,,,) 2020/07/11追加機能テスト17 -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 1 > クリティカル (2発が命中、1発が貫通) -2回目: > 11, 1 > レギュラー成功 (1発が命中、0発が貫通) -> 3発が通常命中、1発が貫通、残弾0発 -rand:10/10,1/10,1/10,10/10,1/10 -============================ -input: -FAR(6,39,99,,,1) 2020/07/11追加機能テスト18 -output: -Cthulhu7th : ボレーの弾丸の数の下限は3発です。ボレーの弾丸の数を3発に変更します。 -ボーナス・ペナルティダイス[0] -1回目: > 7 > イクストリーム成功 (2発が命中、1発が貫通) -2回目: > 11, 1 > ハード成功 (1発が命中、0発が貫通) -> 3発が通常命中、1発が貫通、残弾0発 -rand:10/10,7/10,1/10,10/10,1/10 -============================ -input: -FAR(6,39,99,,,3) 2020/07/11追加機能テスト19 -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 7 > イクストリーム成功 (2発が命中、1発が貫通) -2回目: > 11, 1 > ハード成功 (1発が命中、0発が貫通) -> 3発が通常命中、1発が貫通、残弾0発 -rand:10/10,7/10,1/10,10/10,1/10 -============================ -input: -FAR(6,39,99,,,4) 2020/07/11追加機能テスト20 -output: -Cthulhu7th : 技能値が39以下ではボレーの弾丸の数の上限および下限は3発です。ボレーの弾丸の数を3発に変更します。 -ボーナス・ペナルティダイス[0] -1回目: > 7 > イクストリーム成功 (2発が命中、1発が貫通) -2回目: > 11, 1 > ハード成功 (1発が命中、0発が貫通) -> 3発が通常命中、1発が貫通、残弾0発 -rand:10/10,7/10,1/10,10/10,1/10 -============================ -input: -FAR(6,40,99,,,4) 2020/07/11追加機能テスト21 -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 7 > イクストリーム成功 (2発が命中、2発が貫通) -2回目: > 11, 1 > ハード成功 (1発が命中、0発が貫通) -> 3発が通常命中、2発が貫通、残弾0発 -rand:10/10,7/10,1/10,10/10,1/10 -============================ -input: -FAR(6,40,99,,,5) 2020/07/11追加機能テスト22 -output: -Cthulhu7th : ボレーの弾丸の数の上限は[技能値÷10(切り捨て)]発なので、それより高い数を指定できません。ボレーの弾丸の数を4発に変更します。 -ボーナス・ペナルティダイス[0] -1回目: > 7 > イクストリーム成功 (2発が命中、2発が貫通) -2回目: > 11, 1 > ハード成功 (1発が命中、0発が貫通) -> 3発が通常命中、2発が貫通、残弾0発 -rand:10/10,7/10,1/10,10/10,1/10 -============================ -input: -FAR(6,40,99,,,3) 2020/07/11追加機能テスト23 -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 7 > イクストリーム成功 (2発が命中、1発が貫通) -2回目: > 11, 1 > ハード成功 (1発が命中、0発が貫通) -> 3発が通常命中、1発が貫通、残弾0発 -rand:10/10,7/10,1/10,10/10,1/10 -============================ -input: -FAR(6,40,99) 2020/07/11追加機能テスト24 -output: -Cthulhu7th : ボーナス・ペナルティダイス[0] -1回目: > 7 > イクストリーム成功 (2発が命中、2発が貫通) -2回目: > 11, 1 > ハード成功 (1発が命中、0発が貫通) -> 3発が通常命中、2発が貫通、残弾0発 -rand:10/10,7/10,1/10,10/10,1/10 -============================ \ No newline at end of file diff --git a/src/src_bcdice/test/data/Cthulhu7th_Korean.txt b/src/src_bcdice/test/data/Cthulhu7th_Korean.txt deleted file mode 100644 index 3b2f4e427..000000000 --- a/src/src_bcdice/test/data/Cthulhu7th_Korean.txt +++ /dev/null @@ -1,535 +0,0 @@ -input: -CBR(70,30) -output: -Cthulhu7th : (1d100<=70,30) > 30[어려운 성공,보통 성공] > 부분적 성공 -rand:30/100 -============================ -input: -CBR(70,30) -output: -Cthulhu7th : (1d100<=70,30) > 50[보통 성공,실패] > 실패 -rand:50/100 -============================ -input: -CBR(30,70) -output: -Cthulhu7th : (1d100<=30,70) > 60[실패,보통 성공] > 실패 -rand:60/100 -============================ -input: -CBR(70,69) -output: -Cthulhu7th : (1d100<=70,69) > 14[대단한 성공,어려운 성공] > 성공 -rand:14/100 -============================ -input: -CBR(70,30) -output: -Cthulhu7th : (1d100<=70,30) > 100[대실패,대실패] > 실패 -rand:100/100 -============================ -input: -CBR(70,30) -output: -Cthulhu7th : (1d100<=70,30) > 1[대성공,대성공] > 성공 -rand:1/100 -============================ -input: -CBR(25,20) -output: -Cthulhu7th : (1d100<=25,20) > 1[대성공,대성공] > 성공 -rand:1/100 -============================ -input: -CBR(25,1) -output: -Cthulhu7th : (1d100<=25,1) > 5[대단한 성공,실패] > 부분적 성공 -rand:5/100 -============================ -input: -CBR(90,40) -output: -Cthulhu7th : (1d100<=90,40) > 97[실패,대실패] > 실패 -rand:97/100 -============================ -input: -CBR(10,90) -output: -Cthulhu7th : (1d100<=10,90) > 30[실패,어려운 성공] > 부분적 성공 -rand:30/100 -============================ -input: -CBR(xxx,xxx) 失敗パターン -output: - -rand: -============================ -input: -CC(-1)<=93 -output: -Cthulhu7th : (1D100<=93) 보너스, 패널티 주사위[-1] > 92, 72 > 92 > 보통 성공 -rand:2/10,9/10,7/10 -============================ -input: -CC(1)<=53 -output: -Cthulhu7th : (1D100<=53) 보너스, 패널티 주사위[1] > 92, 52 > 52 > 보통 성공 -rand:2/10,9/10,5/10 -============================ -input: -CC(1)<=46 -output: -Cthulhu7th : (1D100<=46) 보너스, 패널티 주사위[1] > 47, 37 > 37 > 보통 성공 -rand:7/10,4/10,3/10 -============================ -input: -CC(-1)<=46 -output: -Cthulhu7th : (1D100<=46) 보너스, 패널티 주사위[-1] > 47, 37 > 47 > 실패 -rand:7/10,4/10,3/10 -============================ -input: -CC(1)<=63 -output: -Cthulhu7th : (1D100<=63) 보너스, 패널티 주사위[1] > 100, 100 > 100 > 대실패 -rand:10/10,10/10,10/10 -============================ -input: -CC(-1)<=63 -output: -Cthulhu7th : (1D100<=63) 보너스, 패널티 주사위[-1] > 100, 100 > 100 > 대실패 -rand:10/10,10/10,10/10 -============================ -input: -CC(1)<=63 -output: -Cthulhu7th : (1D100<=63) 보너스, 패널티 주사위[1] > 1, 1 > 1 > 대성공 -rand:1/10,10/10,10/10 -============================ -input: -CC(-1)<=63 -output: -Cthulhu7th : (1D100<=63) 보너스, 패널티 주사위[-1] > 1, 1 > 1 > 대성공 -rand:1/10,10/10,10/10 -============================ -input: -CC(0)<=53 -output: -Cthulhu7th : (1D100<=53) 보너스, 패널티 주사위[0] > 52 > 52 > 보통 성공 -rand:2/10,5/10 -============================ -input: -CC<=53 -output: -Cthulhu7th : (1D100<=53) 보너스, 패널티 주사위[0] > 52 > 52 > 보통 성공 -rand:2/10,5/10 -============================ -input: -CC<=5 -output: -Cthulhu7th : (1D100<=5) 보너스, 패널티 주사위[0] > 2 > 2 > 어려운 성공 -rand:2/10,10/10 -============================ -input: -CC(2)<=73 -output: -Cthulhu7th : (1D100<=73) 보너스, 패널티 주사위[2] > 24, 14, 54 > 14 > 대단한 성공 -rand:4/10,2/10,1/10,5/10 -============================ -input: -CC(2)<=73 -output: -Cthulhu7th : (1D100<=73) 보너스, 패널티 주사위[2] > 20, 100, 50 > 20 > 어려운 성공 -rand:10/10,2/10,10/10,5/10 -============================ -input: -CC(-2)<=43 -output: -Cthulhu7th : (1D100<=43) 보너스, 패널티 주사위[-2] > 97, 67, 37 > 97 > 대실패 -rand:7/10,9/10,6/10,3/10 -============================ -input: -CC(-2)<=80 -output: -Cthulhu7th : (1D100<=80) 보너스, 패널티 주사위[-2] > 100, 60, 50 > 100 > 대실패 -rand:10/10,10/10,6/10,5/10 -============================ -input: -CC(-1)<=53 -output: -Cthulhu7th : (1D100<=53) 보너스, 패널티 주사위[-1] > 97, 67 > 97 > 실패 -rand:7/10,9/10,6/10 -============================ -input: -CC<=49 -output: -Cthulhu7th : (1D100<=49) 보너스, 패널티 주사위[0] > 95 > 95 > 실패 -rand:5/10,9/10 -============================ -input: -CC<=49 -output: -Cthulhu7th : (1D100<=49) 보너스, 패널티 주사위[0] > 96 > 96 > 대실패 -rand:6/10,9/10 -============================ -input: -CC<=50 -output: -Cthulhu7th : (1D100<=50) 보너스, 패널티 주사위[0] > 99 > 99 > 실패 -rand:9/10,9/10 -============================ -input: -CC<=50 -output: -Cthulhu7th : (1D100<=50) 보너스, 패널티 주사위[0] > 100 > 100 > 대실패 -rand:10/10,10/10 -============================ -input: -CC(-3)<=80 -output: -Cthulhu7th : 에러. 보너스, 패널티 주사위의 수치는 -2~2입니다. -rand: -============================ -input: -CC(3)<=80 -output: -Cthulhu7th : 에러. 보너스, 패널티 주사위의 수치는 -2~2입니다. -rand: -============================ -input: -CC<=0 -output: -Cthulhu7th : 에러. 목표치는 1 이상입니다. -rand: -============================ -input: -FAR(30,62,98) -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 52 > 보통 성공 -2번째: > 11, 81 > 실패 -3번째: > 2, 2, 2 > 대단한 성공 - 난이도가 어려운 성공으로 변경 -4번째: > 98, 88, 78 > 대실패 총알 걸림 -> 6발이 명중, 3발이 관통, 잔탄 12발 -rand:2/10,5/10,1/10,1/10,8/10,2/10,10/10,10/10,10/10,8/10,9/10,8/10,7/10 -============================ -input: -FAR(30,62,98,-1) -output: -Cthulhu7th : 보너스, 패널티 주사위 [-1] -1번째: > 11, 81 > 실패 -2번째: > 2, 2, 2 > 대단한 성공 - 난이도가 어려운 성공으로 변경 -3번째: > 98, 88, 78 > 대실패 총알 걸림 -> 3발이 명중, 3발이 관통, 잔탄 18발 -rand:1/10,1/10,8/10,2/10,10/10,10/10,10/10,8/10,9/10,8/10,7/10 -============================ -input: -FAR(30,62,98,-2) -output: -Cthulhu7th : 보너스, 패널티 주사위 [-2] -1번째: > 2, 2, 2 > 대단한 성공 - 난이도가 어려운 성공으로 변경 -2번째: > 98, 88, 78 > 대실패 총알 걸림 -> 3발이 명중, 3발이 관통, 잔탄 24발 -rand:2/10,10/10,10/10,10/10,8/10,9/10,8/10,7/10 -============================ -input: -FAR(30,1,98) -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 1 > 대성공 -2번째: > 98, 88 > 대실패 총알 걸림 -> 0발이 명중, 1발이 관통, 잔탄 29발 -rand:1/10,10/10,8/10,9/10,8/10 -============================ -input: -FAR(30,14,98) -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 2 > 대단한 성공 -2번째: > 98, 88 > 대실패 총알 걸림 -> 0발이 명중, 1발이 관통, 잔탄 29발 -rand:2/10,10/10,8/10,9/10,8/10 -============================ -input: -FAR(30,8,98) -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 2 > 어려운 성공 -2번째: > 98, 88 > 대실패 총알 걸림 -> 1발이 명중, 0발이 관통, 잔탄 29발 -rand:2/10,10/10,8/10,9/10,8/10 -============================ -input: -FAR(7,80,98) -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 10 > 대단한 성공 -> 3발이 명중, 4발이 관통, 잔탄 0발 -rand:10/10,1/10 -============================ -input: -FAR(7,80,98) -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 50 > 보통 성공 -> 3발이 명중, 0발이 관통, 잔탄 0발 -rand:10/10,5/10 -============================ -input: -FAR(7,99,98) -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 98 > 보통 성공 총알 걸림 -> 0발이 명중, 0발이 관통, 잔탄 7발 -rand:8/10,9/10 -============================ -input: -FAR(1,80,98) -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 50 > 보통 성공 -> 1발이 명중, 0발이 관통, 잔탄 0발 -rand:10/10,5/10 -============================ -input: -FAR(1,80,98) -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 5 > 대단한 성공 -> 0발이 명중, 1발이 관통, 잔탄 0발 -rand:5/10,10/10 -============================ -input: -FAR(1,99,98) -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 97 > 보통 성공 -> 1발이 명중, 0발이 관통, 잔탄 0발 -rand:7/10,9/10 -============================ -input: -FAR(1,99,98) -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 98 > 보통 성공 총알 걸림 -> 0발이 명중, 0발이 관통, 잔탄 1발 -rand:8/10,9/10 -============================ -input: -FAR(30,42,98,-2) -output: -Cthulhu7th : 보너스, 패널티 주사위 [-2] -1번째: > 98, 88, 78 > 대실패 총알 걸림 -> 0발이 명중, 0발이 관통, 잔탄 30발 -rand:8/10,9/10,8/10,7/10 -============================ -input: -FAR(30,42,98,-1) -output: -Cthulhu7th : 보너스, 패널티 주사위 [-1] -1번째: > 98, 88 > 대실패 총알 걸림 -> 0발이 명중, 0발이 관통, 잔탄 30발 -rand:8/10,9/10,8/10 -============================ -input: -FAR(40,82,97,1) -output: -Cthulhu7th : 보너스, 패널티 주사위 [1] -1번째: > 52, 22 > 어려운 성공 -2번째: > 1 > 대성공 -3번째: > 15, 85 > 실패 -4번째: > 3, 13, 3 > 대단한 성공 - 난이도가 어려운 성공으로 변경 -5번째: > 98, 88, 78 > 대실패 총알 걸림 -> 12발이 명중, 8발이 관통, 잔탄 8발 -rand:2/10,5/10,2/10,1/10,10/10,5/10,1/10,8/10,3/10,10/10,1/10,10/10,8/10,9/10,8/10,7/10 -============================ -input: -FAR(40,82,97,2) -output: -Cthulhu7th : 보너스, 패널티 주사위 [2] -1번째: > 61, 71, 21 > 어려운 성공 -2번째: > 80, 70 > 보통 성공 -3번째: > 65 > 보통 성공 -4번째: > 15, 85 > 실패 -5번째: > 44, 14, 74 > 보통 성공 -> 16발이 명중, 0발이 관통, 잔탄 0발 -rand:1/10,6/10,7/10,2/10,10/10,8/10,7/10,5/10,6/10,5/10,1/10,8/10,4/10,4/10,1/10,7/10 -============================ -input: -FAR(38,82,97,2) -output: -Cthulhu7th : 보너스, 패널티 주사위 [2] -1번째: > 61, 71, 21 > 어려운 성공 -2번째: > 80, 70 > 보통 성공 -3번째: > 65 > 보통 성공 -4번째: > 15, 85 > 실패 -5번째: > 44, 14, 74 > 보통 성공 -> 15발이 명중, 0발이 관통, 잔탄 0발 -rand:1/10,6/10,7/10,2/10,10/10,8/10,7/10,5/10,6/10,5/10,1/10,8/10,4/10,4/10,1/10,7/10 -============================ -input: -FAR(72,82,97,2) -output: -Cthulhu7th : 보너스, 패널티 주사위 [2] -1번째: > 61, 71, 21 > 어려운 성공 -2번째: > 80, 70 > 보통 성공 -3번째: > 65 > 보통 성공 -4번째: > 15, 85 > 실패 -5번째: > 44, 14, 74 > 보통 성공 - 난이도가 어려운 성공으로 변경 -6번째: > 28, 88, 78 > 실패 - 난이도가 대단한 성공으로 변경 -7번째: > 83, 33, 33 > 실패 - 난이도가 대성공으로 변경 -8번째: > 68, 48, 68 > 보통 성공 -> 16발이 명중, 0발이 관통, 잔탄 8발 -rand:1/10,6/10,7/10,2/10,10/10,8/10,7/10,5/10,6/10,5/10,1/10,8/10,4/10,4/10,1/10,7/10,8/10,2/10,8/10,7/10,3/10,8/10,3/10,3/10,8/10,6/10,4/10,6/10 -============================ -input: -FAR(72,82,97,2) -output: -Cthulhu7th : 보너스, 패널티 주사위 [2] -1번째: > 61, 71, 21 > 어려운 성공 -2번째: > 90, 70 > 보통 성공 -3번째: > 65 > 보통 성공 -4번째: > 15, 95 > 실패 -5번째: > 44, 14, 74 > 보통 성공 - 난이도가 어려운 성공으로 변경 -6번째: > 58, 68, 78 > 보통 성공 - 난이도가 대단한 성공으로 변경 -7번째: > 23, 33, 23 > 어려운 성공 - 난이도가 대성공으로 변경 -8번째: > 16, 6, 16 > 대단한 성공 -> 16발이 명중, 0발이 관통, 잔탄 8발 -rand:1/10,6/10,7/10,2/10,10/10,9/10,7/10,5/10,6/10,5/10,1/10,9/10,4/10,4/10,1/10,7/10,8/10,5/10,6/10,7/10,3/10,2/10,3/10,2/10,6/10,1/10,10/10,1/10 -============================ -input: -FAR(72,82,97,2) -output: -Cthulhu7th : 보너스, 패널티 주사위 [2] -1번째: > 61, 71, 21 > 어려운 성공 -2번째: > 90, 70 > 보통 성공 -3번째: > 65 > 보통 성공 -4번째: > 15, 95 > 실패 -5번째: > 44, 14, 74 > 보통 성공 - 난이도가 어려운 성공으로 변경 -6번째: > 28, 38, 18 > 어려운 성공 - 난이도가 대단한 성공으로 변경 -7번째: > 13, 3, 13 > 대단한 성공 - 난이도가 대성공으로 변경 -8번째: > 1, 1, 1 > 대성공 -> 28발이 명중, 4발이 관통, 잔탄 8발 -rand:1/10,6/10,7/10,2/10,10/10,9/10,7/10,5/10,6/10,5/10,1/10,9/10,4/10,4/10,1/10,7/10,8/10,2/10,3/10,1/10,3/10,1/10,10/10,1/10,1/10,10/10,10/10,10/10 -============================ -input: -FAR(120,82,97,-2) -output: -Cthulhu7th : -탄약이 너무 많습니다. 장전된 탄약을 100개로 변경합니다. -보너스, 패널티 주사위 [-2] -1번째: > 60, 100, 20 > 대실패 총알 걸림 -> 0발이 명중, 0발이 관통, 잔탄 100발 -rand:10/10,6/10,10/10,2/10 -============================ -input: -FAR(120,82,97,3) -output: -Cthulhu7th : -에러. 보너스, 패널티 주사위의 수치는 -2~2입니다. -rand: -============================ -input: -FAR(38,99,97,-1) -output: -Cthulhu7th : 보너스, 패널티 주사위 [-1] -1번째: > 78, 98 > 보통 성공 총알 걸림 -> 0발이 명중, 0발이 관통, 잔탄 38발 -rand:8/10,7/10,9/10 -============================ -input: -FAR(0,0,98) -output: -Cthulhu7th : 탄약은 1 이상입니다. -rand: -============================ -input: -FAR(1,98,5) 故障ナンバーが極端に低いありえない場合の処理 -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 8 > 대단한 성공 총알 걸림 -> 0발이 명중, 0발이 관통, 잔탄 1발 -rand:8/10,10/10 -============================ -input: -FAR(3,98,5) 故障ナンバーが極端に低いありえない場合の処理 -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 8 > 대단한 성공 총알 걸림 -> 0발이 명중, 0발이 관통, 잔탄 3발 -rand:8/10,10/10 -============================ -input: -FAR(1,98,5) 故障ナンバーが極端に低いありえない場合の処理 -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 58 > 보통 성공 총알 걸림 -> 0발이 명중, 0발이 관통, 잔탄 1발 -rand:8/10,5/10 -============================ -input: -FAR(3,98,5) 故障ナンバーが極端に低いありえない場合の処理 -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 58 > 보통 성공 총알 걸림 -> 0발이 명중, 0발이 관통, 잔탄 3발 -rand:8/10,5/10 -============================ -input: -FAR(3,18,5) 故障ナンバーが極端に低いありえない場合の処理 -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 18 > 보통 성공 총알 걸림 -> 0발이 명중, 0발이 관통, 잔탄 3발 -rand:8/10,1/10 -============================ -input: -FAR(3,8,5) 故障ナンバーが極端に低いありえない場合の処理 -output: -Cthulhu7th : 보너스, 패널티 주사위 [0] -1번째: > 8 > 보통 성공 총알 걸림 -> 0발이 명중, 0발이 관통, 잔탄 3발 -rand:8/10,10/10 -============================ -input: -FAR(1,99,-98) 故障ナンバーにマイナスがついている場合、絶対値を付ける処理の確認 -output: -Cthulhu7th : -고장 넘버는 1 이상입니다. 마이너스 기호를 제거합니다. -보너스, 패널티 주사위 [0] -1번째: > 8 > 대단한 성공 -> 0발이 명중, 1발이 관통, 잔탄 0발 -rand:8/10,10/10 -============================ -input: -FAR(-1,99,98) 弾数がマイナスの異常パターン。 -output: -Cthulhu7th : 탄약은 1 이상입니다. -rand: -============================ -input: -FAR(1,-99,-98) 目標値がマイナスの異常パターン。 -output: -Cthulhu7th : 목표치는 1 이상입니다. -rand: -============================ -input: -FAR(1,99,98,3) ボーナスダイス異常パターン -output: -Cthulhu7th : -에러. 보너스, 패널티 주사위의 수치는 -2~2입니다. -rand: -============================ diff --git a/src/src_bcdice/test/data/CthulhuTech.txt b/src/src_bcdice/test/data/CthulhuTech.txt deleted file mode 100644 index c7550026c..000000000 --- a/src/src_bcdice/test/data/CthulhuTech.txt +++ /dev/null @@ -1,407 +0,0 @@ -input: -10D10>=10 -output: -CthulhuTech : (10D10>=10) > 16[1,1,3,4,4,4,4,7,7,10] > 16 > 成功 -rand:4/10,4/10,4/10,7/10,7/10,3/10,1/10,1/10,4/10,10/10 -============================ -input: -10d10>=10 -output: -CthulhuTech : (10D10>=10) > 16[1,1,3,4,4,4,4,7,7,10] > 16 > 成功 -rand:4/10,4/10,4/10,7/10,7/10,3/10,1/10,1/10,4/10,10/10 -============================ -input: -S10D10>=10 -output: -CthulhuTech : (10D10>=10) > 16[1,1,3,4,4,4,4,7,7,10] > 16 > 成功###secret dice### -rand:4/10,4/10,4/10,7/10,7/10,3/10,1/10,1/10,4/10,10/10 -============================ -input: -10D10+5>=10 -output: -CthulhuTech : (10D10+5>=10) > 16[1,1,3,4,4,4,4,7,7,10]+5 > 21 > クリティカル -rand:4/10,4/10,4/10,7/10,7/10,3/10,1/10,1/10,4/10,10/10 -============================ -input: -10D10-5+10>=10 -output: -CthulhuTech : (10D10+5>=10) > 16[1,1,3,4,4,4,4,7,7,10]+5 > 21 > クリティカル -rand:4/10,4/10,4/10,7/10,7/10,3/10,1/10,1/10,4/10,10/10 -============================ -input: -10D10-10>=10 -output: -CthulhuTech : (10D10-10>=10) > 16[1,1,3,4,4,4,4,7,7,10]-10 > 6 > 失敗 -rand:4/10,4/10,4/10,7/10,7/10,3/10,1/10,1/10,4/10,10/10 -============================ -input: -9D10>=10 -output: -CthulhuTech : (9D10>=10) > 16[1,1,1,1,1,4,4,4,4] > 16 > ファンブル -rand:4/10,4/10,4/10,1/10,1/10,1/10,1/10,1/10,4/10 -============================ -input: -10D10>=10 -output: -CthulhuTech : (10D10>=10) > 16[1,1,1,1,1,4,4,4,4,10] > 16 > ファンブル -rand:4/10,4/10,4/10,1/10,1/10,1/10,1/10,1/10,4/10,10/10 -============================ -input: -10D10+5>=10 -output: -CthulhuTech : (10D10+5>=10) > 16[1,1,1,1,1,4,4,4,4,10]+5 > 21 > ファンブル -rand:4/10,4/10,4/10,1/10,1/10,1/10,1/10,1/10,4/10,10/10 -============================ -input: -10D10>=10 -output: -CthulhuTech : (10D10>=10) > 21[1,1,3,4,4,6,7,7,7,8] > 21 > クリティカル -rand:7/10,3/10,7/10,4/10,1/10,8/10,7/10,4/10,6/10,1/10 -============================ -input: -10D10>=10 -output: -CthulhuTech : (10D10>=10) > 22[1,4,5,5,5,6,7,7,9,10] > 22 > クリティカル -rand:5/10,7/10,10/10,5/10,5/10,1/10,9/10,6/10,4/10,7/10 -============================ -input: -10D10>=10 -output: -CthulhuTech : (10D10>=10) > 27[3,3,3,3,4,4,5,8,9,10] > 27 > クリティカル -rand:3/10,4/10,3/10,5/10,8/10,3/10,9/10,4/10,3/10,10/10 -============================ -input: -10D10>=10 -output: -CthulhuTech : (10D10>=10) > 20[2,4,5,5,5,5,6,8,8,10] > 20 > クリティカル -rand:5/10,5/10,5/10,8/10,8/10,5/10,2/10,10/10,4/10,6/10 -============================ -input: -10D10>=10 -output: -CthulhuTech : (10D10>=10) > 30[1,3,3,7,7,8,8,10,10,10] > 30 > クリティカル -rand:8/10,10/10,3/10,8/10,7/10,3/10,1/10,10/10,7/10,10/10 -============================ -input: -10D10>=10 -output: -CthulhuTech : (10D10>=10) > 20[1,3,3,3,4,4,7,8,10,10] > 20 > クリティカル -rand:1/10,10/10,4/10,8/10,4/10,3/10,7/10,3/10,10/10,3/10 -============================ -input: -10D10>=10 -output: -CthulhuTech : (10D10>=10) > 18[2,3,3,4,4,6,6,6,9,9] > 18 > 成功 -rand:4/10,6/10,4/10,3/10,2/10,9/10,3/10,9/10,6/10,6/10 -============================ -input: -10D10>=10 -output: -CthulhuTech : (10D10>=10) > 21[1,3,5,5,6,7,7,7,9,10] > 21 > クリティカル -rand:7/10,10/10,3/10,7/10,7/10,6/10,9/10,5/10,5/10,1/10 -============================ -input: -10D10>=10 -output: -CthulhuTech : (10D10>=10) > 34[1,3,5,7,8,8,9,9,9,10] > 34 > クリティカル -rand:5/10,9/10,7/10,10/10,1/10,8/10,9/10,8/10,3/10,9/10 -============================ -input: -10D10>=90 -output: -CthulhuTech : (10D10>=90) > 16[1,1,1,2,3,3,4,5,8,8] > 16 > 失敗 -rand:1/10,4/10,3/10,2/10,1/10,5/10,8/10,8/10,3/10,1/10 -============================ -input: -10D10>=90 -output: -CthulhuTech : (10D10>=90) > 20[1,1,2,4,4,6,7,7,10,10] > 20 > 失敗 -rand:7/10,2/10,4/10,7/10,1/10,4/10,10/10,10/10,1/10,6/10 -============================ -input: -10D10>=90 -output: -CthulhuTech : (10D10>=90) > 10[1,1,1,2,2,3,4,6,8,9] > 10 > 失敗 -rand:1/10,6/10,4/10,9/10,3/10,2/10,1/10,2/10,8/10,1/10 -============================ -input: -10D10>=90 -output: -CthulhuTech : (10D10>=90) > 20[1,1,1,3,4,4,5,7,10,10] > 20 > 失敗 -rand:3/10,4/10,1/10,1/10,1/10,7/10,4/10,10/10,5/10,10/10 -============================ -input: -10D10>=90 -output: -CthulhuTech : (10D10>=90) > 18[2,2,4,4,6,6,6,8,8,9] > 18 > 失敗 -rand:6/10,4/10,8/10,6/10,6/10,2/10,4/10,9/10,2/10,8/10 -============================ -input: -10D10>=90 -output: -CthulhuTech : (10D10>=90) > 21[1,2,3,4,6,6,7,7,8,10] > 21 > 失敗 -rand:6/10,3/10,2/10,8/10,7/10,4/10,10/10,7/10,1/10,6/10 -============================ -input: -10D10>=90 -output: -CthulhuTech : (10D10>=90) > 30[1,4,4,4,7,8,8,10,10,10] > 30 > 失敗 -rand:10/10,8/10,4/10,10/10,8/10,4/10,10/10,4/10,1/10,7/10 -============================ -input: -10D10>=90 -output: -CthulhuTech : (10D10>=90) > 22[1,1,1,4,5,6,7,7,7,10] > 22 > 失敗 -rand:7/10,5/10,1/10,1/10,7/10,7/10,1/10,10/10,4/10,6/10 -============================ -input: -10D10>=90 -output: -CthulhuTech : (10D10>=90) > 28[1,1,2,2,3,4,5,6,7,9] > 28 > 失敗 -rand:5/10,4/10,1/10,3/10,1/10,2/10,9/10,2/10,7/10,6/10 -============================ -input: -10D10>=90 -output: -CthulhuTech : (10D10>=90) > 45[1,2,2,3,4,5,6,7,8,9] > 45 > 失敗 -rand:2/10,9/10,3/10,6/10,4/10,2/10,8/10,1/10,7/10,5/10 -============================ -input: -10D10>=50 -output: -CthulhuTech : (10D10>=50) > 27[1,2,4,8,8,8,9,9,9,10] > 27 > 失敗 -rand:9/10,8/10,10/10,9/10,4/10,9/10,8/10,2/10,8/10,1/10 -============================ -input: -10D10>=50 -output: -CthulhuTech : (10D10>=50) > 21[1,2,2,3,6,7,7,7,8,8] > 21 > 失敗 -rand:7/10,3/10,7/10,1/10,2/10,2/10,8/10,7/10,6/10,8/10 -============================ -input: -10D10>=50 -output: -CthulhuTech : (10D10>=50) > 34[1,2,4,4,5,7,8,9,10,10] > 34 > 失敗 -rand:4/10,8/10,1/10,10/10,4/10,7/10,5/10,2/10,10/10,9/10 -============================ -input: -10D10>=50 -output: -CthulhuTech : (10D10>=50) > 20[2,2,2,3,5,5,7,8,10,10] > 20 > 失敗 -rand:5/10,2/10,2/10,8/10,10/10,5/10,2/10,7/10,3/10,10/10 -============================ -input: -10D10>=50 -output: -CthulhuTech : (10D10>=50) > 27[1,3,4,5,6,6,7,9,9,9] > 27 > 失敗 -rand:3/10,7/10,9/10,5/10,6/10,9/10,1/10,9/10,4/10,6/10 -============================ -input: -10D10>=50 -output: -CthulhuTech : (10D10>=50) > 40[3,4,6,7,7,8,8,8,9,10] > 40 > 失敗 -rand:6/10,9/10,8/10,8/10,3/10,7/10,10/10,4/10,8/10,7/10 -============================ -input: -10D10>=50 -output: -CthulhuTech : (10D10>=50) > 28[2,3,5,6,7,7,7,7,8,10] > 28 > 失敗 -rand:6/10,2/10,3/10,7/10,7/10,5/10,7/10,7/10,8/10,10/10 -============================ -input: -10D10>=50 -output: -CthulhuTech : (10D10>=50) > 40[1,3,5,5,6,9,10,10,10,10] > 40 > 失敗 -rand:9/10,10/10,1/10,3/10,6/10,10/10,10/10,5/10,5/10,10/10 -============================ -input: -10D10>=50 -output: -CthulhuTech : (10D10>=50) > 34[1,1,3,7,7,8,9,10,10,10] > 34 > 失敗 -rand:8/10,1/10,9/10,1/10,7/10,10/10,10/10,10/10,7/10,3/10 -============================ -input: -10D10>=50 -output: -CthulhuTech : (10D10>=50) > 34[1,2,3,3,7,7,8,9,10,10] > 34 > 失敗 -rand:7/10,8/10,3/10,2/10,9/10,3/10,7/10,10/10,1/10,10/10 -============================ -input: -10D10>10 -output: -CthulhuTech : (10D10>10) > 27[2,2,3,5,6,6,8,9,9,9] > 27 > クリティカル(ダメージ:4D10) -rand:9/10,9/10,2/10,2/10,8/10,6/10,9/10,3/10,5/10,6/10 -============================ -input: -10D10>10 -output: -CthulhuTech : (10D10>10) > 30[1,1,2,4,6,6,6,7,8,9] > 30 > クリティカル(ダメージ:4D10) -rand:1/10,4/10,9/10,1/10,6/10,2/10,7/10,6/10,8/10,6/10 -============================ -input: -10D10>10 -output: -CthulhuTech : (10D10>10) > 20[2,2,3,4,5,6,6,6,8,10] > 20 > クリティカル(ダメージ:2D10) -rand:8/10,3/10,6/10,2/10,2/10,10/10,6/10,4/10,5/10,6/10 -============================ -input: -10D10>10 -output: -CthulhuTech : (10D10>10) > 24[2,3,3,3,5,6,8,8,8,9] > 24 > クリティカル(ダメージ:3D10) -rand:3/10,8/10,5/10,6/10,2/10,3/10,8/10,8/10,9/10,3/10 -============================ -input: -10D10>10 -output: -CthulhuTech : (10D10>10) > 24[3,4,5,5,6,6,8,8,8,9] > 24 > クリティカル(ダメージ:3D10) -rand:6/10,6/10,8/10,9/10,4/10,5/10,8/10,8/10,3/10,5/10 -============================ -input: -10D10>10 -output: -CthulhuTech : (10D10>10) > 21[1,2,2,3,3,3,7,7,7,8] > 21 > クリティカル(ダメージ:3D10) -rand:3/10,7/10,7/10,7/10,3/10,2/10,8/10,1/10,3/10,2/10 -============================ -input: -10D10>10 -output: -CthulhuTech : (10D10>10) > 21[1,1,2,4,4,6,6,6,7,8] > 21 > クリティカル(ダメージ:3D10) -rand:4/10,1/10,6/10,7/10,2/10,8/10,6/10,6/10,4/10,1/10 -============================ -input: -10D10>10 -output: -CthulhuTech : (10D10>10) > 30[4,5,5,7,7,7,9,10,10,10] > 30 > クリティカル(ダメージ:4D10) -rand:7/10,7/10,9/10,5/10,5/10,4/10,10/10,7/10,10/10,10/10 -============================ -input: -10D10>10 -output: -CthulhuTech : (10D10>10) > 18[3,3,4,5,6,6,6,8,8,10] > 18 > 成功(ダメージ:2D10) -rand:8/10,5/10,4/10,3/10,6/10,8/10,6/10,6/10,10/10,3/10 -============================ -input: -10D10>10 -output: -CthulhuTech : (10D10>10) > 30[2,3,3,3,3,6,6,7,8,9] > 30 > クリティカル(ダメージ:4D10) -rand:6/10,3/10,3/10,3/10,6/10,2/10,7/10,3/10,9/10,8/10 -============================ -input: -10D10>90 -output: -CthulhuTech : (10D10>90) > 16[1,2,2,4,4,5,7,7,8,8] > 16 > 失敗 -rand:7/10,2/10,8/10,4/10,5/10,4/10,7/10,8/10,2/10,1/10 -============================ -input: -10D10>90 -output: -CthulhuTech : (10D10>90) > 24[1,2,2,4,5,7,8,8,8,9] > 24 > 失敗 -rand:8/10,2/10,8/10,9/10,1/10,2/10,8/10,5/10,4/10,7/10 -============================ -input: -10D10>90 -output: -CthulhuTech : (10D10>90) > 24[1,3,3,4,4,8,8,8,9,9] > 24 > 失敗 -rand:1/10,8/10,9/10,9/10,4/10,3/10,8/10,8/10,4/10,3/10 -============================ -input: -10D10>90 -output: -CthulhuTech : (10D10>90) > 60[2,2,5,8,10,10,10,10,10,10] > 60 > 失敗 -rand:2/10,2/10,10/10,10/10,8/10,10/10,10/10,10/10,5/10,10/10 -============================ -input: -10D10>90 -output: -CthulhuTech : (10D10>90) > 30[2,3,4,6,6,6,6,7,8,9] > 30 > 失敗 -rand:6/10,6/10,9/10,6/10,3/10,2/10,6/10,7/10,4/10,8/10 -============================ -input: -10D10>90 -output: -CthulhuTech : (10D10>90) > 45[2,3,3,5,6,7,8,8,9,10] > 45 > 失敗 -rand:9/10,3/10,8/10,7/10,10/10,6/10,5/10,8/10,2/10,3/10 -============================ -input: -10D10>90 -output: -CthulhuTech : (10D10>90) > 30[1,1,2,2,3,6,6,7,8,9] > 30 > 失敗 -rand:9/10,1/10,1/10,8/10,2/10,6/10,3/10,7/10,2/10,6/10 -============================ -input: -10D10>90 -output: -CthulhuTech : (10D10>90) > 40[2,4,4,4,6,7,7,8,9,10] > 40 > 失敗 -rand:6/10,9/10,4/10,4/10,2/10,7/10,7/10,4/10,10/10,8/10 -============================ -input: -10D10>90 -output: -CthulhuTech : (10D10>90) > 25[1,3,4,5,5,6,7,9,9,10] > 25 > 失敗 -rand:1/10,10/10,4/10,9/10,3/10,9/10,6/10,7/10,5/10,5/10 -============================ -input: -10D10>90 -output: -CthulhuTech : (10D10>90) > 30[2,3,5,5,5,6,6,10,10,10] > 30 > 失敗 -rand:5/10,10/10,5/10,6/10,10/10,6/10,2/10,5/10,3/10,10/10 -============================ -input: -10D10>50 -output: -CthulhuTech : (10D10>50) > 28[3,4,5,6,7,7,7,7,9,10] > 28 > 失敗 -rand:5/10,7/10,4/10,6/10,10/10,9/10,7/10,7/10,7/10,3/10 -============================ -input: -10D10>50 -output: -CthulhuTech : (10D10>50) > 18[1,1,1,2,3,6,7,9,9,10] > 18 > 失敗 -rand:10/10,6/10,1/10,7/10,3/10,2/10,1/10,1/10,9/10,9/10 -============================ -input: -10D10>50 -output: -CthulhuTech : (10D10>50) > 20[1,1,2,3,4,5,5,8,10,10] > 20 > 失敗 -rand:2/10,3/10,1/10,10/10,4/10,5/10,1/10,8/10,10/10,5/10 -============================ -input: -10D10>50 -output: -CthulhuTech : (10D10>50) > 28[1,1,2,3,4,5,5,6,7,7] > 28 > 失敗 -rand:7/10,2/10,6/10,3/10,1/10,1/10,5/10,7/10,5/10,4/10 -============================ -input: -10D10>50 -output: -CthulhuTech : (10D10>50) > 27[2,3,6,6,7,9,9,9,10,10] > 27 > 失敗 -rand:6/10,6/10,9/10,3/10,10/10,9/10,2/10,9/10,10/10,7/10 -============================ -input: -10D10>50 -output: -CthulhuTech : (10D10>50) > 40[1,4,6,6,7,7,8,8,9,10] > 40 > 失敗 -rand:8/10,6/10,1/10,7/10,10/10,6/10,8/10,4/10,9/10,7/10 -============================ -input: -10D10>50 -output: -CthulhuTech : (10D10>50) > 24[1,2,2,3,4,5,7,7,8,9] > 24 > 失敗 -rand:2/10,5/10,8/10,9/10,7/10,2/10,3/10,4/10,1/10,7/10 -============================ -input: -10D10>50 -output: -CthulhuTech : (10D10>50) > 40[1,6,6,7,7,8,9,9,9,10] > 40 > 失敗 -rand:1/10,8/10,9/10,7/10,9/10,10/10,6/10,6/10,9/10,7/10 -============================ -input: -10D10>50 -output: -CthulhuTech : (10D10>50) > 27[2,4,5,6,8,8,8,9,9,10] > 27 > 失敗 -rand:5/10,10/10,9/10,4/10,8/10,2/10,8/10,8/10,9/10,6/10 -============================ -input: -10D10>50 -output: -CthulhuTech : (10D10>50) > 27[2,3,4,5,5,6,8,9,9,10] > 27 > 失敗 -rand:9/10,3/10,5/10,9/10,8/10,5/10,2/10,10/10,4/10,6/10 diff --git a/src/src_bcdice/test/data/Cthulhu_Korean.txt b/src/src_bcdice/test/data/Cthulhu_Korean.txt deleted file mode 100644 index 603feba34..000000000 --- a/src/src_bcdice/test/data/Cthulhu_Korean.txt +++ /dev/null @@ -1,1152 +0,0 @@ -input: -1D100<=10 ############################# -output: -Cthulhu : (1D100<=10) > 98 > 失敗 -rand:98/100 -============================ -input: -1D100<=10 (99) -output: -Cthulhu : (1D100<=10) > 99 > 失敗 -rand:99/100 -============================ -input: -1D100<=10 (100) -output: -Cthulhu : (1D100<=10) > 100 > 失敗 -rand:100/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 45 > 失敗 -rand:45/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 56 > 失敗 -rand:56/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 62 > 失敗 -rand:62/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 70 > 失敗 -rand:70/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 78 > 失敗 -rand:78/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 84 > 失敗 -rand:84/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 51 > 失敗 -rand:51/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 20 > 失敗 -rand:20/100 -============================ -input: -1D100<=10 -output: -Cthulhu : (1D100<=10) > 76 > 失敗 -rand:76/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 43 > 成功 -rand:43/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 24 > 成功 -rand:24/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 25 > 成功 -rand:25/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 75 > 成功 -rand:75/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 71 > 成功 -rand:71/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 78 > 成功 -rand:78/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 14 > 成功 -rand:14/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 61 > 成功 -rand:61/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 27 > 成功 -rand:27/100 -============================ -input: -1D100<=90 -output: -Cthulhu : (1D100<=90) > 37 > 成功 -rand:37/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 65 > 失敗 -rand:65/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 6 > 成功 -rand:6/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 42 > 成功 -rand:42/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 7 > 成功 -rand:7/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 2 > 成功 -rand:2/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 1 > 成功 -rand:1/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 73 > 失敗 -rand:73/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 72 > 失敗 -rand:72/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 46 > 成功 -rand:46/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 37 > 成功 -rand:37/100 -============================ -input: -1D100<=50 -output: -Cthulhu : (1D100<=50) > 6 > 成功 -rand:6/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 83 > 실패 -rand:83/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 1 > 크리티컬/스페셜 -rand:1/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 29 > 성공 -rand:29/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 72 > 실패 -rand:72/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 98 > 실패 -rand:98/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 97 > 실패 -rand:97/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 87 > 실패 -rand:87/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 63 > 실패 -rand:63/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 39 > 성공 -rand:39/100 -============================ -input: -RES(12-10) 1% -output: -Cthulhu : (1d100<=60) > 11 > 스페셜 -rand:11/100 -============================ -input: -RES(10-15) 1% -output: -Cthulhu : (1d100<=25) > 90 > 실패 -rand:90/100 -============================ -input: -RES(10-15) 1% -output: -Cthulhu : (1d100<=25) > 38 > 실패 -rand:38/100 -============================ -input: -RES(10-15) 1% -output: -Cthulhu : (1d100<=25) > 78 > 실패 -rand:78/100 -============================ -input: -RES(10-15) 1% -output: -Cthulhu : (1d100<=25) > 39 > 실패 -rand:39/100 -============================ -input: -RES(10-15) 1% -output: -Cthulhu : (1d100<=25) > 71 > 실패 -rand:71/100 -============================ -input: -RES(10-15) 1% -output: -Cthulhu : (1d100<=25) > 4 > 스페셜 -rand:4/100 -============================ -input: -RES(10-15) 1% -output: -Cthulhu : (1d100<=25) > 45 > 실패 -rand:45/100 -============================ -input: -RES(10-15) 1% 80 -output: -Cthulhu : (1d100<=25) > 80 > 실패 -rand:80/100 -============================ -input: -RES(10-15) 1% 13 -output: -Cthulhu : (1d100<=25) > 13 > 성공 -rand:13/100 -============================ -input: -RES(10-15) 1% 16 -output: -Cthulhu : (1d100<=25) > 16 > 성공 -rand:16/100 -============================ -input: -CBR(70,30) 1% 30 -output: -Cthulhu : (1d100<=70,30) > 30[성공,성공] > 성공 -rand:30/100 -============================ -input: -CBR(70,30) 1% 50 -output: -Cthulhu : (1d100<=70,30) > 50[성공,실패] > 부분적 성공 -rand:50/100 -============================ -input: -CBR(10,90) 1% 30 -output: -Cthulhu : (1d100<=10,90) > 30[실패,성공] > 부분적 성공 -rand:30/100 -============================ -input: -CBR(70,30) 1% 71 -output: -Cthulhu : (1d100<=70,30) > 71[실패,실패] > 실패 -rand:71/100 -============================ -input: -CBR(70,30) 1% -output: -Cthulhu : (1d100<=70,30) > 5[스페셜,스페셜] > 성공 -rand:5/100 -============================ -input: -CBR(25,20) 1% -output: -Cthulhu : (1d100<=25,20) > 5[스페셜,성공] > 성공 -rand:5/100 -============================ -input: -CBR(70,30) 1% -output: -Cthulhu : (1d100<=70,30) > 1[크리티컬/스페셜,크리티컬/스페셜] > 성공 -rand:1/100 -============================ -input: -CBR(25,20) 1% -output: -Cthulhu : (1d100<=25,20) > 1[크리티컬/스페셜,크리티컬/스페셜] > 성공 -rand:1/100 -============================ -input: -CBR(25,1) 1% -output: -Cthulhu : (1d100<=25,1) > 5[스페셜,실패] > 부분적 성공 -rand:5/100 -============================ -input: -CBR(90,99) 1% -output: -Cthulhu : (1d100<=90,99) > 96[실패,성공] > 부분적 성공 -rand:96/100 -============================ -input: -CBR(90,95) 1% -output: -Cthulhu : (1d100<=90,95) > 96[실패,실패] > 실패 -rand:96/100 -============================ -input: -CBR(90,99) 1% -output: -Cthulhu : (1d100<=90,99) > 100[펌블,펌블] > 실패 -rand:100/100 -============================ -input: -CBR(90,95) 1% -output: -Cthulhu : (1d100<=90,95) > 100[펌블,펌블] > 실패 -rand:100/100 -============================ -input: -1D100>=(68+12) -output: -Cthulhu : (1D100>=80) > 11 > 失敗 -rand:11/100 -============================ -input: -CC<=10 (1%) ################## -output: -Cthulhu : (1D100<=10) > 98 > 실패 -rand:98/100 -============================ -input: -CC<=10 (99) (1%) -output: -Cthulhu : (1D100<=10) > 99 > 실패 -rand:99/100 -============================ -input: -CC<=10 (100) (1%) -output: -Cthulhu : (1D100<=10) > 100 > 펌블 -rand:100/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 45 > 실패 -rand:45/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 56 > 실패 -rand:56/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 62 > 실패 -rand:62/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 70 > 실패 -rand:70/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 78 > 실패 -rand:78/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 84 > 실패 -rand:84/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 51 > 실패 -rand:51/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 20 > 실패 -rand:20/100 -============================ -input: -CC<=10 (1%) -output: -Cthulhu : (1D100<=10) > 76 > 실패 -rand:76/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 43 > 성공 -rand:43/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 24 > 성공 -rand:24/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 25 > 성공 -rand:25/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 75 > 성공 -rand:75/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 71 > 성공 -rand:71/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 78 > 성공 -rand:78/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 14 > 스페셜 -rand:14/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 61 > 성공 -rand:61/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 27 > 성공 -rand:27/100 -============================ -input: -CC<=90 (1%) -output: -Cthulhu : (1D100<=90) > 37 > 성공 -rand:37/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 65 > 실패 -rand:65/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 6 > 스페셜 -rand:6/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 42 > 성공 -rand:42/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 7 > 스페셜 -rand:7/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 2 > 스페셜 -rand:2/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 1 > 크리티컬/스페셜 -rand:1/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 73 > 실패 -rand:73/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 72 > 실패 -rand:72/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 46 > 성공 -rand:46/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 37 > 성공 -rand:37/100 -============================ -input: -CC<=50 (1%) -output: -Cthulhu : (1D100<=50) > 6 > 스페셜 -rand:6/100 -============================ -input: -CCB<=10 (5%) ################## -output: -Cthulhu : (1D100<=10) > 98 > 펌블 -rand:98/100 -============================ -input: -CCB<=10 (99) (5%) -output: -Cthulhu : (1D100<=10) > 99 > 펌블 -rand:99/100 -============================ -input: -CCB<=10 (100) (5%) -output: -Cthulhu : (1D100<=10) > 100 > 펌블 -rand:100/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 45 > 실패 -rand:45/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 56 > 실패 -rand:56/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 62 > 실패 -rand:62/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 70 > 실패 -rand:70/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 78 > 실패 -rand:78/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 84 > 실패 -rand:84/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 51 > 실패 -rand:51/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 20 > 실패 -rand:20/100 -============================ -input: -CCB<=10 (5%) -output: -Cthulhu : (1D100<=10) > 76 > 실패 -rand:76/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 43 > 성공 -rand:43/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 24 > 성공 -rand:24/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 25 > 성공 -rand:25/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 75 > 성공 -rand:75/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 71 > 성공 -rand:71/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 78 > 성공 -rand:78/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 14 > 스페셜 -rand:14/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 61 > 성공 -rand:61/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 27 > 성공 -rand:27/100 -============================ -input: -CCB<=90 (5%) -output: -Cthulhu : (1D100<=90) > 37 > 성공 -rand:37/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 65 > 실패 -rand:65/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 6 > 스페셜 -rand:6/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 42 > 성공 -rand:42/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 7 > 스페셜 -rand:7/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 2 > 크리티컬/스페셜 -rand:2/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 1 > 크리티컬/스페셜 -rand:1/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 73 > 실패 -rand:73/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 72 > 실패 -rand:72/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 46 > 성공 -rand:46/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 37 > 성공 -rand:37/100 -============================ -input: -CCB<=50 (5%) -output: -Cthulhu : (1D100<=50) > 6 > 스페셜 -rand:6/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 83 > 실패 -rand:83/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 1 > 크리티컬/스페셜 -rand:1/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 29 > 성공 -rand:29/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 72 > 실패 -rand:72/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 98 > 펌블 -rand:98/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 97 > 펌블 -rand:97/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 87 > 실패 -rand:87/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 63 > 실패 -rand:63/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 39 > 성공 -rand:39/100 -============================ -input: -RESB(12-10) (5%) -output: -Cthulhu : (1d100<=60) > 11 > 스페셜 -rand:11/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 90 > 실패 -rand:90/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 38 > 실패 -rand:38/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 78 > 실패 -rand:78/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 39 > 실패 -rand:39/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 71 > 실패 -rand:71/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 4 > 크리티컬/스페셜 -rand:4/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 45 > 실패 -rand:45/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 80 > 실패 -rand:80/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 13 > 성공 -rand:13/100 -============================ -input: -RESB(10-15) (5%) -output: -Cthulhu : (1d100<=25) > 16 > 성공 -rand:16/100 -============================ -input: -CBRB(70,30) (5%) -output: -Cthulhu : (1d100<=70,30) > 30[성공,성공] > 성공 -rand:30/100 -============================ -input: -CBRB(70,30) (5%) -output: -Cthulhu : (1d100<=70,30) > 50[성공,실패] > 부분적 성공 -rand:50/100 -============================ -input: -CBRB(10,90) (5%) -output: -Cthulhu : (1d100<=10,90) > 30[실패,성공] > 부분적 성공 -rand:30/100 -============================ -input: -CBRB(70,30) (5%) -output: -Cthulhu : (1d100<=70,30) > 71[실패,실패] > 실패 -rand:71/100 -============================ -input: -CBRB(70,30) (5%) -output: -Cthulhu : (1d100<=70,30) > 5[크리티컬/스페셜,크리티컬/스페셜] > 성공 -rand:5/100 -============================ -input: -CBRB(25,20) (5%) -output: -Cthulhu : (1d100<=25,20) > 5[크리티컬/스페셜,크리티컬] > 성공 -rand:5/100 -============================ -input: -CBRB(25,1) (5%) -output: -Cthulhu : (1d100<=25,1) > 5[크리티컬/스페셜,실패] > 부분적 성공 -rand:5/100 -============================ -input: -CBRB(90,99) (5%) -output: -Cthulhu : (1d100<=90,99) > 96[펌블,성공] > 부분적 성공 -rand:96/100 -============================ -input: -CBRB(90,95) (5%) -output: -Cthulhu : (1d100<=90,95) > 96[펌블,펌블] > 실패 -rand:96/100 -============================ -input: -CC<=(68+30) (1%) 計算込み -output: -Cthulhu : (1D100<=98) > 99 > 실패 -rand:99/100 -============================ -input: -CCB<=(68+30) (5%) 計算込み -output: -Cthulhu : (1D100<=98) > 99 > 펌블 -rand:99/100 -============================ -input: -CCB>=(68+12) (5%) 1D100代替(不等号違いにより判定なし) -output: -Cthulhu : (1D100) > 11 -rand:11/100 -============================ -input: -CC (1%) 1d100単純置換 -output: -Cthulhu : (1D100) > 60 -rand:60/100 -============================ -input: -CCB (5%) 1d100単純置換 -output: -Cthulhu : (1D100) > 61 -rand:61/100 -============================ -input: -SCC<=25 (1%) シークレット -output: -Cthulhu : (1D100<=25) > 5 > 스페셜###secret dice### -rand:5/100 -============================ -input: -SCCB<=25 (5%) シークレット -output: -Cthulhu : (1D100<=25) > 5 > 크리티컬/스페셜###secret dice### -rand:5/100 -============================ -input: -CC(94)<=98 (1%) 故障ナンバー:故障1 -output: -Cthulhu : (1D100<=98) 고장넘버[94] > 97 > 고장 -rand:97/100 -============================ -input: -CC(94)<=98 (1%) 故障ナンバー:故障2 -output: -Cthulhu : (1D100<=98) 고장넘버[94] > 99 > 고장 -rand:99/100 -============================ -input: -CC(94)<=98 (1%) 故障ナンバー:致命的失敗 -output: -Cthulhu : (1D100<=98) 고장넘버[94] > 100 > 펌블/고장 -rand:100/100 -============================ -input: -CCB(98)<=80 (5%) 故障ナンバー:成功 -output: -Cthulhu : (1D100<=80) 고장넘버[98] > 80 > 성공 -rand:80/100 -============================ -input: -CCB(98)<=80 (5%) 故障ナンバー:故障1 -output: -Cthulhu : (1D100<=80) 고장넘버[98] > 96 > 펌블 -rand:96/100 -============================ -input: -CCB(98)<=80 (5%) 故障ナンバー:故障2 -output: -Cthulhu : (1D100<=80) 고장넘버[98] > 99 > 펌블/고장 -rand:99/100 -============================ -input: -CCB(98)<=80 (5%) 故障ナンバー:致命的失敗 -output: -Cthulhu : (1D100<=80) 고장넘버[98] > 100 > 펌블/고장 -rand:100/100 -============================ -input: -CBR(50,80) (1%) -output: -Cthulhu : (1d100<=50,80) > 20[성공,성공] > 성공 -rand:20/100 -============================ -input: -CBR(10,80) (1%) -output: -Cthulhu : (1d100<=10,80) > 10[성공,스페셜] > 성공 -rand:10/100 -============================ -input: -CBR(10,80) (1%) -output: -Cthulhu : (1d100<=10,80) > 1[크리티컬/스페셜,크리티컬/스페셜] > 성공 -rand:1/100 -============================ -input: -CBR(10,80) (1%) -output: -Cthulhu : (1d100<=10,80) > 50[실패,성공] > 부분적 성공 -rand:50/100 -============================ -input: -CBR(10,80) (1%) -output: -Cthulhu : (1d100<=10,80) > 90[실패,실패] > 실패 -rand:90/100 -============================ -input: -CBR(10,80) (1%) -output: -Cthulhu : (1d100<=10,80) > 100[펌블,펌블] > 실패 -rand:100/100 -============================ -input: -CBRB(10,80) (5%) -output: -Cthulhu : (1d100<=10,80) > 5[크리티컬,크리티컬/스페셜] > 성공 -rand:5/100 -============================ -input: -CBRB(10,80) (5%) -output: -Cthulhu : (1d100<=10,80) > 99[펌블,펌블] > 실패 -rand:99/100 -============================ -input: -CC(94)<=(60+38) (1%) 故障ナンバー:計算込み -output: -Cthulhu : (1D100<=98) 고장넘버[94] > 99 > 고장 -rand:99/100 -============================ -input: -CCB(94)<=(60+38) (5%) 故障ナンバー:計算込み -output: -Cthulhu : (1D100<=98) 고장넘버[94] > 99 > 펌블/고장 -rand:99/100 -============================ -input: -RES(12-12) 0+50 -output: -Cthulhu : (1d100<=50) > 75 > 실패 -rand:75/100 -============================ -input: -RES(12-7) 25+50 -output: -Cthulhu : (1d100<=75) > 75 > 성공 -rand:75/100 -============================ -input: -RES(12-2) 50+50 自動成功 -output: -Cthulhu : (1d100<=100) > 자동성공 -rand: -============================ -input: -RES(12-15) -15+50 -output: -Cthulhu : (1d100<=35) > 75 > 실패 -rand:75/100 -============================ -input: -RES(12-21) -45+50 -output: -Cthulhu : (1d100<=5) > 75 > 실패 -rand:75/100 -============================ -input: -RES(12-22) -50+50 自動失敗 -output: -Cthulhu : (1d100<=0) > 자동실패 -rand: -============================ diff --git a/src/src_bcdice/test/data/DarkBlaze.txt b/src/src_bcdice/test/data/DarkBlaze.txt deleted file mode 100644 index d9d20d633..000000000 --- a/src/src_bcdice/test/data/DarkBlaze.txt +++ /dev/null @@ -1,605 +0,0 @@ -input: -DB33 -output: -DarkBlaze : (3R6[3,3]) > 4[3,3,4] -rand:3/6,4/6,3/6 -============================ -input: -DB33 -output: -DarkBlaze : (3R6[3,3]) > 6[2,2,3] -rand:2/6,3/6,2/6 -============================ -input: -DB33 -output: -DarkBlaze : (3R6[3,3]) > 0[6,6,6] > ファンブル -rand:6/6,6/6,6/6 -============================ -input: -DB33 -output: -DarkBlaze : (3R6[3,3]) > 0[4,6,6] -rand:4/6,6/6,6/6 -============================ -input: -DB33 -output: -DarkBlaze : (3R6[3,3]) > 4[2,2,6] -rand:6/6,2/6,2/6 -============================ -input: -DB33 -output: -DarkBlaze : (3R6[3,3]) > 2[1,4,6] -rand:6/6,4/6,1/6 -============================ -input: -DB33 -output: -DarkBlaze : (3R6[3,3]) > 0[4,4,6] -rand:6/6,4/6,4/6 -============================ -input: -DB33 -output: -DarkBlaze : (3R6[3,3]) > 6[1,1,3] -rand:1/6,3/6,1/6 -============================ -input: -DB33 -output: -DarkBlaze : (3R6[3,3]) > 4[2,3,6] -rand:2/6,3/6,6/6 -============================ -input: -DB33 -output: -DarkBlaze : (3R6[3,3]) > 2[2,4,5] -rand:2/6,4/6,5/6 -============================ -input: -DB32#-1 -output: -DarkBlaze : (3R6-1[3,2]) > 0[4,4,6,6] -rand:4/6,4/6,6/6,6/6 -============================ -input: -DB32#-1 -output: -DarkBlaze : (3R6-1[3,2]) > 1[2,3,5,5] -rand:3/6,5/6,2/6,5/6 -============================ -input: -DB32#-1 -output: -DarkBlaze : (3R6-1[3,2]) > 0[1,4,5,5] -rand:1/6,4/6,5/6,5/6 -============================ -input: -DB32#-1 -output: -DarkBlaze : (3R6-1[3,2]) > 0[2,4,5,6] -rand:4/6,5/6,6/6,2/6 -============================ -input: -DB32#-1 -output: -DarkBlaze : (3R6-1[3,2]) > 0[4,4,4,6] -rand:4/6,6/6,4/6,4/6 -============================ -input: -DB32#-1 -output: -DarkBlaze : (3R6-1[3,2]) > 0[2,4,5,6] -rand:4/6,5/6,2/6,6/6 -============================ -input: -DB32#-1 -output: -DarkBlaze : (3R6-1[3,2]) > 2[1,2,5,6] -rand:2/6,6/6,5/6,1/6 -============================ -input: -DB32#-1 -output: -DarkBlaze : (3R6-1[3,2]) > 3[2,3,3,3] -rand:3/6,3/6,3/6,2/6 -============================ -input: -DB32#-1 -output: -DarkBlaze : (3R6-1[3,2]) > 4[1,1,2,5] -rand:2/6,5/6,1/6,1/6 -============================ -input: -DB32#-1 -output: -DarkBlaze : (3R6-1[3,2]) > 2[2,3,3,5] -rand:5/6,3/6,3/6,2/6 -============================ -input: -DB@3@1#1 -output: -DarkBlaze : (3R6+1[3,1]) > 4[1,3,3,6] -rand:6/6,1/6,3/6,3/6 -============================ -input: -DB@3@1#1 -output: -DarkBlaze : (3R6+1[3,1]) > 7[1,2,2,3] > クリティカル -rand:1/6,2/6,3/6,2/6 -============================ -input: -DB@3@1#1 -output: -DarkBlaze : (3R6+1[3,1]) > 2[2,3,4,4] -rand:2/6,4/6,3/6,4/6 -============================ -input: -DB@3@1#1 -output: -DarkBlaze : (3R6+1[3,1]) > 1[3,4,5,6] -rand:3/6,6/6,4/6,5/6 -============================ -input: -DB@3@1#1 -output: -DarkBlaze : (3R6+1[3,1]) > 3[1,2,6,6] -rand:1/6,2/6,6/6,6/6 -============================ -input: -DB@3@1#1 -output: -DarkBlaze : (3R6+1[3,1]) > 2[2,3,4,5] -rand:3/6,2/6,5/6,4/6 -============================ -input: -DB@3@1#1 -output: -DarkBlaze : (3R6+1[3,1]) > 3[1,3,5,6] -rand:3/6,5/6,6/6,1/6 -============================ -input: -DB@3@1#1 -output: -DarkBlaze : (3R6+1[3,1]) > 1[3,4,4,6] -rand:3/6,4/6,4/6,6/6 -============================ -input: -DB@3@1#1 -output: -DarkBlaze : (3R6+1[3,1]) > 3[1,2,4,5] -rand:2/6,1/6,4/6,5/6 -============================ -input: -DB@3@1#1 -output: -DarkBlaze : (3R6+1[3,1]) > 5[1,1,3,5] -rand:1/6,1/6,3/6,5/6 -============================ -input: -DB3,2 -output: -DarkBlaze : (3R6[3,2]) > 3[1,3,4] -rand:3/6,4/6,1/6 -============================ -input: -DB3,2 -output: -DarkBlaze : (3R6[3,2]) > 4[1,2,6] -rand:2/6,1/6,6/6 -============================ -input: -DB3,2 -output: -DarkBlaze : (3R6[3,2]) > 2[2,6,6] -rand:2/6,6/6,6/6 -============================ -input: -DB3,2 -output: -DarkBlaze : (3R6[3,2]) > 2[1,5,6] -rand:1/6,5/6,6/6 -============================ -input: -DB3,2 -output: -DarkBlaze : (3R6[3,2]) > 3[2,3,6] -rand:6/6,3/6,2/6 -============================ -input: -DB3,2 -output: -DarkBlaze : (3R6[3,2]) > 1[3,5,6] -rand:3/6,5/6,6/6 -============================ -input: -DB3,2 -output: -DarkBlaze : (3R6[3,2]) > 1[3,6,6] -rand:6/6,3/6,6/6 -============================ -input: -DB3,2 -output: -DarkBlaze : (3R6[3,2]) > 2[2,4,6] -rand:6/6,2/6,4/6 -============================ -input: -DB3,2 -output: -DarkBlaze : (3R6[3,2]) > 4[2,2,6] -rand:6/6,2/6,2/6 -============================ -input: -DB3,2 -output: -DarkBlaze : (3R6[3,2]) > 0[4,5,5] -rand:5/6,4/6,5/6 -============================ -input: -DB23#1>=4 -output: -DarkBlaze : (3R6+1[2,3]>=4) > 9[1,2,2,5] > クリティカル > 成功 -rand:2/6,1/6,5/6,2/6 -============================ -input: -DB23#1>=4 -output: -DarkBlaze : (3R6+1[2,3]>=4) > 3[1,3,4,5] > 失敗 -rand:3/6,1/6,5/6,4/6 -============================ -input: -DB23#1>=4 -output: -DarkBlaze : (3R6+1[2,3]>=4) > 4[2,3,3,4] > 成功 -rand:2/6,4/6,3/6,3/6 -============================ -input: -DB23#1>=4 -output: -DarkBlaze : (3R6+1[2,3]>=4) > 3[2,3,4,5] > 失敗 -rand:3/6,2/6,4/6,5/6 -============================ -input: -DB23#1>=4 -output: -DarkBlaze : (3R6+1[2,3]>=4) > 2[2,4,5,6] > 失敗 -rand:5/6,2/6,6/6,4/6 -============================ -input: -DB23#1>=4 -output: -DarkBlaze : (3R6+1[2,3]>=4) > 4[1,2,5,5] > 成功 -rand:1/6,2/6,5/6,5/6 -============================ -input: -DB23#1>=4 -output: -DarkBlaze : (3R6+1[2,3]>=4) > 3[2,3,5,6] > 失敗 -rand:6/6,3/6,2/6,5/6 -============================ -input: -DB23#1>=4 -output: -DarkBlaze : (3R6+1[2,3]>=4) > 1[3,4,6,6] > 失敗 -rand:6/6,4/6,3/6,6/6 -============================ -input: -DB23#1>=4 -output: -DarkBlaze : (3R6+1[2,3]>=4) > 1[3,5,5,6] > 失敗 -rand:5/6,5/6,6/6,3/6 -============================ -input: -DB23#1>=4 -output: -DarkBlaze : (3R6+1[2,3]>=4) > 4[2,2,5,6] > 成功 -rand:2/6,6/6,5/6,2/6 -============================ -input: -3R6+1[3,3]>=4 -output: -DarkBlaze : (3R6+1[3,3]>=4) > 4[2,3,5,5] > 成功 -rand:2/6,5/6,5/6,3/6 -============================ -input: -3R6+1[3,3]>=4 -output: -DarkBlaze : (3R6+1[3,3]>=4) > 6[1,2,3,5] > 成功 -rand:3/6,5/6,2/6,1/6 -============================ -input: -3R6+1[3,3]>=4 -output: -DarkBlaze : (3R6+1[3,3]>=4) > 4[2,3,4,5] > 成功 -rand:2/6,5/6,4/6,3/6 -============================ -input: -3R6+1[3,3]>=4 -output: -DarkBlaze : (3R6+1[3,3]>=4) > 6[1,2,3,4] > 成功 -rand:3/6,4/6,2/6,1/6 -============================ -input: -3R6+1[3,3]>=4 -output: -DarkBlaze : (3R6+1[3,3]>=4) > 6[1,3,3,4] > 成功 -rand:3/6,4/6,1/6,3/6 -============================ -input: -3R6+1[3,3]>=4 -output: -DarkBlaze : (3R6+1[3,3]>=4) > 6[2,2,3,4] > 成功 -rand:3/6,2/6,2/6,4/6 -============================ -input: -3R6+1[3,3]>=4 -output: -DarkBlaze : (3R6+1[3,3]>=4) > 6[1,2,3,4] > 成功 -rand:3/6,4/6,2/6,1/6 -============================ -input: -3R6+1[3,3]>=4 -output: -DarkBlaze : (3R6+1[3,3]>=4) > 6[2,3,3,5] > 成功 -rand:3/6,2/6,5/6,3/6 -============================ -input: -3R6+1[3,3]>=4 -output: -DarkBlaze : (3R6+1[3,3]>=4) > 4[2,3,4,5] > 成功 -rand:4/6,2/6,3/6,5/6 -============================ -input: -3R6+1[3,3]>=4 -output: -DarkBlaze : (3R6+1[3,3]>=4) > 2[2,5,6,6] > 失敗 -rand:6/6,5/6,6/6,2/6 -============================ -input: -DB53#2 -output: -DarkBlaze : (3R6+2[5,3]) > 4[3,4,5,5,6] -rand:5/6,3/6,5/6,6/6,4/6 -============================ -input: -DB53#2 -output: -DarkBlaze : (3R6+2[5,3]) > 6[2,2,3,4,5] -rand:3/6,2/6,5/6,4/6,2/6 -============================ -input: -DB53#2 -output: -DarkBlaze : (3R6+2[5,3]) > 4[3,4,4,5,5] -rand:5/6,4/6,4/6,3/6,5/6 -============================ -input: -DB53#2 -output: -DarkBlaze : (3R6+2[5,3]) > 9[1,1,1,6,6] > クリティカル -rand:1/6,1/6,1/6,6/6,6/6 -============================ -input: -DB53#2 -output: -DarkBlaze : (3R6+2[5,3]) > 5[2,3,4,5,5] -rand:5/6,2/6,4/6,3/6,5/6 -============================ -input: -DB53#2 -output: -DarkBlaze : (3R6+2[5,3]) > 9[1,1,2,2,4] > クリティカル -rand:1/6,1/6,4/6,2/6,2/6 -============================ -input: -DB53#2 -output: -DarkBlaze : (3R6+2[5,3]) > 5[1,1,4,6,6] -rand:6/6,4/6,1/6,1/6,6/6 -============================ -input: -DB53#2 -output: -DarkBlaze : (3R6+2[5,3]) > 3[2,5,6,6,6] -rand:2/6,5/6,6/6,6/6,6/6 -============================ -input: -DB53#2 -output: -DarkBlaze : (3R6+2[5,3]) > 4[2,4,4,5,6] -rand:6/6,4/6,5/6,4/6,2/6 -============================ -input: -DB53#2 -output: -DarkBlaze : (3R6+2[5,3]) > 9[1,1,2,3,6] > クリティカル -rand:6/6,1/6,2/6,3/6,1/6 -============================ -input: -BT1 -output: -DarkBlaze : 掘り出し袋表[10,4] > 《竜鱗 I》を2個獲得 -rand:6/6,4/6,4/6 -============================ -input: -BT1 -output: -DarkBlaze : 掘り出し袋表[8,6] > 《植物 I》を3個獲得 -rand:5/6,3/6,6/6 -============================ -input: -BT1 -output: -DarkBlaze : 掘り出し袋表[7,6] > 《金貨》を6枚獲得 -rand:2/6,5/6,6/6 -============================ -input: -BT1 -output: -DarkBlaze : 掘り出し袋表[5,6] > 《蟲甲 I》を3個獲得 -rand:1/6,4/6,6/6 -============================ -input: -BT1 -output: -DarkBlaze : 掘り出し袋表[4,4] > 《雷撃石》を1個獲得 -rand:1/6,3/6,3/6,4/6 -============================ -input: -BT1 -output: -DarkBlaze : 掘り出し袋表[4,3] > 《火炎石》を1個獲得 -rand:3/6,1/6,5/6,3/6 -============================ -input: -BT1 -output: -DarkBlaze : 掘り出し袋表[7,2] > 《金貨》を2枚獲得 -rand:2/6,5/6,2/6 -============================ -input: -BT1 -output: -DarkBlaze : 掘り出し袋表[5,1] > 《蟲甲 I》を1個獲得 -rand:3/6,2/6,1/6 -============================ -input: -BT1 -output: -DarkBlaze : 掘り出し袋表[6,2] > 《金属 I》を1個獲得 -rand:2/6,4/6,2/6 -============================ -input: -BT1 -output: -DarkBlaze : 掘り出し袋表[9,3] > 《獣皮 I》を1個獲得 -rand:6/6,3/6,3/6 -============================ -input: -BT2 -output: -DarkBlaze : 掘り出し袋表[11,8] > 《レアモノ II》を1個獲得 -rand:6/6,5/6,4/6,4/6 -============================ -input: -BT2 -output: -DarkBlaze : 掘り出し袋表[10,7] > 《竜鱗 I》を3個獲得 -rand:5/6,5/6,5/6,2/6 -============================ -input: -BT2 -output: -DarkBlaze : 掘り出し袋表[6,7] > 《金属 I》を3個獲得 -rand:1/6,5/6,4/6,3/6 -============================ -input: -BT2 -output: -DarkBlaze : 掘り出し袋表[2,2] > 《火炎石》を2個獲得 -rand:1/6,1/6,4/6,4/6,2/6 -============================ -input: -BT2 -output: -DarkBlaze : 掘り出し袋表[10,3] > 《竜鱗 I》を1個獲得 -rand:5/6,5/6,1/6,2/6 -============================ -input: -BT2 -output: -DarkBlaze : 掘り出し袋表[8,5] > 《植物 I》を2個獲得 -rand:4/6,4/6,4/6,1/6 -============================ -input: -BT2 -output: -DarkBlaze : 掘り出し袋表[7,10] > 《金貨》を10枚獲得 -rand:4/6,3/6,4/6,6/6 -============================ -input: -BT2 -output: -DarkBlaze : 掘り出し袋表[7,5] > 《金貨》を5枚獲得 -rand:3/6,4/6,1/6,4/6 -============================ -input: -BT2 -output: -DarkBlaze : 掘り出し袋表[10,5] > 《竜鱗 I》を2個獲得 -rand:4/6,6/6,1/6,4/6 -============================ -input: -BT2 -output: -DarkBlaze : 掘り出し袋表[9,7] > 《獣皮 I》を3個獲得 -rand:6/6,3/6,6/6,1/6 -============================ -input: -BT[1...3] -output: -DarkBlaze : 掘り出し袋表[4,4] > 《雷撃石》を3個獲得 -rand:3/3,3/6,1/6,2/6,3/6,6/6,4/6 -============================ -input: -BT[1...3] -output: -DarkBlaze : 掘り出し袋表[7,5] > 《金貨》を5枚獲得 -rand:2/3,3/6,4/6,1/6,4/6 -============================ -input: -BT[1...3] -output: -DarkBlaze : 掘り出し袋表[9,1] > 《獣皮 I》を1個獲得 -rand:1/3,3/6,6/6,1/6 -============================ -input: -BT[1...3] -output: -DarkBlaze : 掘り出し袋表[10,6] > 《竜鱗 I》を3個獲得 -rand:1/3,5/6,5/6,6/6 -============================ -input: -BT[1...3] -output: -DarkBlaze : 掘り出し袋表[12,8] > 《レアモノ II》を1個獲得 -rand:2/3,6/6,6/6,6/6,2/6 -============================ -input: -BT[1...3] -output: -DarkBlaze : 掘り出し袋表[6,7] > 《金属 I》を3個獲得 -rand:2/3,2/6,4/6,5/6,2/6 -============================ -input: -BT[1...3] -output: -DarkBlaze : 掘り出し袋表[9,5] > 《獣皮 I》を2個獲得 -rand:1/3,6/6,3/6,5/6 -============================ -input: -BT[1...3] -output: -DarkBlaze : 掘り出し袋表[2,6] > 《氷結石》を3個獲得 -rand:3/3,1/6,1/6,2/6,6/6,4/6,6/6 -============================ -input: -BT[1...3] -output: -DarkBlaze : 掘り出し袋表[7,7] > 《金貨》を7枚獲得 -rand:2/3,3/6,4/6,1/6,6/6 -============================ -input: -BT[1...3] -output: -DarkBlaze : 掘り出し袋表[10,2] > 《竜鱗 I》を1個獲得 -rand:1/3,5/6,5/6,2/6 -============================ -input: -3D6>=? 目標値?でバグらない -output: -DarkBlaze : (3D6>=?) > 9[3,3,3] > 9 > 失敗 -rand:3/6,3/6,3/6 diff --git a/src/src_bcdice/test/data/DarkDaysDrive.txt b/src/src_bcdice/test/data/DarkDaysDrive.txt deleted file mode 100644 index cff933c96..000000000 --- a/src/src_bcdice/test/data/DarkDaysDrive.txt +++ /dev/null @@ -1,299 +0,0 @@ -input: -2D6>=7 -output: -DarkDaysDrive : (2D6>=7) > 2[1,1] > 2 > ファンブル(判定失敗。失敗表(FT)を追加で1回振る) -rand:1/6,1/6 -============================ -input: -2D6>=7 -output: -DarkDaysDrive : (2D6>=7) > 12[6,6] > 12 > スペシャル(判定成功。大成功表(GJT)を1回使用可能) -rand:6/6,6/6 -============================ -input: -2D6>=7 -output: -DarkDaysDrive : (2D6>=7) > 7[1,6] > 7 > 成功 -rand:1/6,6/6 -============================ -input: -2D6>=7 -output: -DarkDaysDrive : (2D6>=7) > 6[1,5] > 6 > 失敗 -rand:1/6,5/6 -============================ -input: -RTT -output: -DarkDaysDrive : ランダム指定特技表(1,2) > 『背景』呪い -rand:1/6,1/6,1/6 -============================ -input: -RTT -output: -DarkDaysDrive : ランダム指定特技表(6,12) > 『戦闘法』弓術 -rand:6/6,6/6,6/6 -============================ -input: -ABRT -output: -DarkDaysDrive : アビリティ決定表(11) > インストラクター(P155) -rand:1/6,1/6 -============================ -input: -ABRT -output: -DarkDaysDrive : アビリティ決定表(16) > ショップ店員(P155) -rand:6/6,1/6 -============================ -input: -ABRT -output: - DarkDaysDrive : アビリティ決定表(66) > 料理人(P158) -rand:6/6,6/6 -============================ -input: -DT -output: -DarkDaysDrive : ダメージ表(1) > 疲れ -rand:1/6 -============================ -input: -DT -output: -DarkDaysDrive : ダメージ表(6) > ケガ -rand:6/6 -============================ -input: -FT -output: -DarkDaysDrive : 失敗表(1) > 任意のアイテムを一つ失う -rand:1/6 -============================ -input: -FT -output: -DarkDaysDrive : 失敗表(6) > 標的レベルが1増加する -rand:6/6 -============================ -input: -GJT -output: -DarkDaysDrive : 大成功表(1) > 主人からお褒めの言葉をいただく -rand:1/6 -============================ -input: -GJT -output: -DarkDaysDrive : 大成功表(6) > 【所持金ランク】が1増加する -rand:6/6 -============================ -input: -ITT -output: -DarkDaysDrive : 移動トラブル表(1) > 検問(P220) -rand:1/6 -============================ -input: -ITT -output: -DarkDaysDrive : 移動トラブル表(6) > 空腹(P222) -rand:6/6 -============================ -input: -NTT -output: -DarkDaysDrive : 任務トラブル表(1) > 通報(P223) -rand:1/6 -============================ -input: -NTT -output: -DarkDaysDrive : 任務トラブル表(6) > 狩人の噂(P225) -rand:6/6 -============================ -input: -STT -output: -DarkDaysDrive : 襲撃トラブル表(1) > 孤独な追跡者(P226) -rand:1/6 -============================ -input: -STT -output: -DarkDaysDrive : 襲撃トラブル表(6) > 狩人の群れ(P228) -rand:6/6 -============================ -input: -HTT -output: -DarkDaysDrive : 変身トラブル表(11) > あれを食べたい(P214) -rand:1/6,1/6 -============================ -input: -HTT -output: -DarkDaysDrive : 変身トラブル表(31) > あれを食べたい(P214) -rand:3/6,1/6 -============================ -input: -HTT -output: -DarkDaysDrive : 変身トラブル表(51) > あれを食べたい(P214) -rand:5/6,1/6 -============================ -input: -HTT -output: -DarkDaysDrive : 変身トラブル表(21) > 強奪(P217) -rand:2/6,1/6 -============================ -input: -HTT -output: -DarkDaysDrive : 変身トラブル表(61) > 強奪(P217) -rand:6/6,1/6 -============================ -input: -HTT -output: -DarkDaysDrive : 変身トラブル表(66) > 失踪(P219) -rand:6/6,6/6 -============================ -input: -DET -output: -DarkDaysDrive : ドライブイベント表(1) > 身の上話をする。目標が背景分野で選択している特技がドライブ判定の指定特技になる。 -rand:1/6 -============================ -input: -DET -output: -DarkDaysDrive : ドライブイベント表(6) > 物騒な話をする。目標が戦闘法分野で選択している特技がドライブ判定の指定特技になる。 -rand:6/6 -============================ -input: -BET -output: -DarkDaysDrive : ブレイクイベント表(1) > イケメンの車は風光明美な場所に到着する。197ページの「観光地」を参照。 -rand:1/6 -============================ -input: -BET -output: -DarkDaysDrive : ブレイクイベント表(6) > イケメンの車は闇の底に隠された秘密の場所に到着する。199ページの「友愛会支部」を参照。 -rand:6/6 -============================ -input: -CT -output: -DarkDaysDrive : キャンプ表(1) > 無料仮眠所・いい感じの空き地:定員無制限/居住性-2/価格0/発見率2 -rand:1/6 -============================ -input: -CT -output: -DarkDaysDrive : キャンプ表(6) > 高級ホテル:定員4/居住性2/価格6/発見率0 -rand:6/6 -============================ -input: -KZT -output: -DarkDaysDrive : 関係属性表(1) > 軽蔑 -rand:1/6 -============================ -input: -KZT -output: -DarkDaysDrive : 関係属性表(6) > 憧れ -rand:6/6 -============================ -input: -IA -output: -DarkDaysDrive : イケメンアクション決定表(11) > 遠距離 -rand:1/6,1/6 -============================ -input: -IA -output: -DarkDaysDrive : イケメンアクション決定表(25) > 悪人 -rand:2/6,5/6 -============================ -input: -IA -output: -DarkDaysDrive : イケメンアクション決定表(56) > 超自然 -rand:5/6,6/6 -============================ -input: -IA -output: -DarkDaysDrive : イケメンアクション決定表(66) > 振り直しor自由選択 -rand:6/6,6/6 -============================ -input: -IAA -output: -DarkDaysDrive : イケメンアクション(遠距離)表(1) > 目を合わせて微笑む(かっこよさ:4) -rand:1/6 -============================ -input: -IAB -output: -DarkDaysDrive : イケメンアクション(移動)表(1) > 車道側を歩く(かっこよさ:4) -rand:1/6 -============================ -input: -IAC -output: -DarkDaysDrive : イケメンアクション(近距離)表(1) > 黙って見つめる(かっこよさ:3) -rand:1/6 -============================ -input: -IAD -output: -DarkDaysDrive : イケメンアクション(善人)表(6) > 悪堕ち(かっこよさ:6) -rand:6/6 -============================ -input: -IAE -output: -DarkDaysDrive : イケメンアクション(悪人)表(5) > 罠にかける(かっこよさ:6) -rand:5/6 -============================ -input: -IAF -output: -DarkDaysDrive : イケメンアクション(幼い)表(2) > 疲れる(かっこよさ:3) -rand:2/6 -============================ -input: -IAG -output: -DarkDaysDrive : イケメンアクション(バカ)表(3) > 転ぶ(かっこよさ:4) -rand:3/6 -============================ -input: -IAH -output: -DarkDaysDrive : イケメンアクション(渋い)表(4) > 残心(かっこよさ:5) -rand:4/6 -============================ -input: -IAI -output: -DarkDaysDrive : イケメンアクション(賢い)表(6) > 大丈夫だと言う(かっこよさ:7) -rand:6/6 -============================ -input: -IAJ -output: -DarkDaysDrive : イケメンアクション(超自然)表(5) > 闇を生み出す(かっこよさ:6) -rand:5/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -DarkDaysDrive : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/DarkSouls.txt b/src/src_bcdice/test/data/DarkSouls.txt deleted file mode 100644 index dc41b682f..000000000 --- a/src/src_bcdice/test/data/DarkSouls.txt +++ /dev/null @@ -1,120 +0,0 @@ -input: -DS -output: -DarkSouls : (2D6) > 2(1,1) > 2 -rand:1/6,1/6 -============================ -input: -DS -output: -DarkSouls : (2D6) > 12(6,6) > 12 -rand:6/6,6/6 -============================ -input: -ADS -output: -DarkSouls : (2D6) > 2(1,1) > 2(FP■■消費) -rand:1/6,1/6 -============================ -input: -ADS -output: -DarkSouls : (2D6) > 12(6,6) > 12 -rand:6/6,6/6 -============================ -input: -1DS -output: -DarkSouls : (1D6) > 1(1) > 1 -rand:1/6 -============================ -input: -1DS -output: -DarkSouls : (1D6) > 6(6) > 6 -rand:6/6 -============================ -input: -1ADS -output: -DarkSouls : (1D6) > 1(1) > 1(FP■消費) -rand:1/6 -============================ -input: -1ADS -output: -DarkSouls : (1D6) > 6(6) > 6 -rand:6/6 -============================ -input: -3ADS -output: -DarkSouls : (3D6) > 6(1,2,3) > 6(FP■消費) -rand:1/6,2/6,3/6 -============================ -input: -DS2 -output: -DarkSouls : (2D6+2) > 7(3,4)+2 > 9 -rand:3/6,4/6 -============================ -input: -DS+2 -output: -DarkSouls : (2D6+2) > 7(3,4)+2 > 9 -rand:3/6,4/6 -============================ -input: -DS-2 -output: -DarkSouls : (2D6-2) > 7(3,4)-2 > 5 -rand:3/6,4/6 -============================ -input: -DS1+1-1 -output: -DarkSouls : (2D6+1) > 7(3,4)+1 > 8 -rand:3/6,4/6 -============================ -input: -DS@7 -output: -DarkSouls : (2D6>=7) > 2(1,1) > 2>=7 > 【失敗】 -rand:1/6,1/6 -============================ -input: -DS@7 -output: -DarkSouls : (2D6>=7) > 12(6,6) > 12>=7 > 【成功】 -rand:6/6,6/6 -============================ -input: -ADS@7 -output: -DarkSouls : (2D6>=7) > 2(1,1) > 2>=7 > 【失敗】(FP■■消費) -rand:1/6,1/6 -============================ -input: -ADS@7 -output: -DarkSouls : (2D6>=7) > 7(1,6) > 7>=7 > 【成功】(FP■消費) -rand:1/6,6/6 -============================ -input: -ADS@7 -output: -DarkSouls : (2D6>=7) > 7(3,4) > 7>=7 > 【成功】 -rand:3/6,4/6 -============================ -input: -ADS@7 -output: -DarkSouls : (2D6>=7) > 12(6,6) > 12>=7 > 【成功】 -rand:6/6,6/6 -============================ -input: -DS1+1-1@7 -output: -DarkSouls : (2D6+1>=7) > 7(3,4)+1 > 8>=7 > 【成功】 -rand:3/6,4/6 -============================ diff --git a/src/src_bcdice/test/data/DeadlineHeroes.txt b/src/src_bcdice/test/data/DeadlineHeroes.txt deleted file mode 100644 index f8115215d..000000000 --- a/src/src_bcdice/test/data/DeadlineHeroes.txt +++ /dev/null @@ -1,756 +0,0 @@ -input: -1D6 -output: -DeadlineHeroes : (1D6) > 2 -rand:2/6 -============================ -input: -dlh38 -output: -DeadlineHeroes : 行為判定(成功率:38%) > 1D100[3,9]=39 > 39 > 失敗 -rand:3/10,9/10 -============================ -input: -dlh38 -output: -DeadlineHeroes : 行為判定(成功率:38%) > 1D100[4,4]=44 > 44 > 失敗 > ファンブル! パワーの代償2倍&振り直し不可 -rand:4/10,4/10 -============================ -input: -dlh38 -output: -DeadlineHeroes : 行為判定(成功率:38%) > 1D100[3,8]=38 > 38 > 成功 -rand:3/10,8/10 -============================ -input: -dlh38 -output: -DeadlineHeroes : 行為判定(成功率:38%) > 1D100[3,7]=37 > 37 > 成功 -rand:3/10,7/10 -============================ -input: -dlh38 -output: -DeadlineHeroes : 行為判定(成功率:38%) > 1D100[3,4]=34 > 34 > 成功 -rand:3/10,4/10 -============================ -input: -dlh38 -output: -DeadlineHeroes : 行為判定(成功率:38%) > 1D100[3,3]=33 > 33 > 成功 > クリティカル! パワーの代償1/2 -rand:3/10,3/10 -============================ -input: -dlh38 -output: -DeadlineHeroes : 行為判定(成功率:38%) > 1D100[3,2]=32 > 32 > 成功 -rand:3/10,2/10 -============================ -input: -dlh38+1 -output: -DeadlineHeroes : 行為判定(成功率:39%) > 1D100[3,9]=39 > 39 > 成功 -rand:3/10,9/10 -============================ -input: -dlh38-2 -output: -DeadlineHeroes : 行為判定(成功率:36%) > 1D100[3,7]=37 > 37 > 失敗 -rand:3/10,7/10 -============================ -input: -dlh40+20-13 -output: -DeadlineHeroes : 行為判定(成功率:47%) > 1D100[4,8]=48 > 48 > 失敗 -rand:4/10,8/10 -============================ -input: -dlh40+20-13 -output: -DeadlineHeroes : 行為判定(成功率:47%) > 1D100[6,6]=66 > 66 > 失敗 > ファンブル! パワーの代償2倍&振り直し不可 -rand:6/10,6/10 -============================ -input: -dlh40+20-13 -output: -DeadlineHeroes : 行為判定(成功率:47%) > 1D100[4,7]=47 > 47 > 成功 -rand:4/10,7/10 -============================ -input: -dlh40+20-13 -output: -DeadlineHeroes : 行為判定(成功率:47%) > 1D100[4,5]=45 > 45 > 成功 -rand:4/10,5/10 -============================ -input: -dlh40+20-13 -output: -DeadlineHeroes : 行為判定(成功率:47%) > 1D100[4,4]=44 > 44 > 成功 > クリティカル! パワーの代償1/2 -rand:4/10,4/10 -============================ -input: -dlh40+20-13 -output: -DeadlineHeroes : 行為判定(成功率:47%) > 1D100[4,3]=43 > 43 > 成功 -rand:4/10,3/10 -============================ -input: -dlh7 -output: -DeadlineHeroes : 行為判定(成功率:7%) > 1D100[0,7]=07 > 07 > 成功 -rand:10/10,7/10 -============================ -input: -dlh7 -output: -DeadlineHeroes : 行為判定(成功率:7%) > 1D100[0,8]=08 > 08 > 失敗 -rand:10/10,8/10 -============================ -input: -dlh1 -output: -DeadlineHeroes : 行為判定(成功率:1%) > 1D100[0,1]=01 > 01 > 成功 -rand:10/10,1/10 -============================ -input: -dlh1 -output: -DeadlineHeroes : 行為判定(成功率:1%) > 1D100[0,0]=100 > 100 > 失敗 > ファンブル! パワーの代償2倍&振り直し不可 -rand:10/10,10/10 -============================ -input: -dlh0 -output: -DeadlineHeroes : 行為判定(成功率:0%) > 1D100[0,1]=01 > 01 > 失敗 > ファンブル! パワーの代償2倍&振り直し不可 -rand:10/10,1/10 -============================ -input: -dlh0 -output: -DeadlineHeroes : 行為判定(成功率:0%) > 1D100[0,0]=100 > 100 > 失敗 > ファンブル! パワーの代償2倍&振り直し不可 -rand:10/10,10/10 -============================ -input: -dlh0+5-7 -output: -DeadlineHeroes : 行為判定(成功率:-2%) > 1D100[0,0]=100 > 100 > 失敗 > ファンブル! パワーの代償2倍&振り直し不可 -rand:10/10,10/10 -============================ -input: -dlh99 -output: -DeadlineHeroes : 行為判定(成功率:99%) > 1D100[9,9]=99 > 99 > 成功 > クリティカル! パワーの代償1/2 -rand:9/10,9/10 -============================ -input: -dlh99 -output: -DeadlineHeroes : 行為判定(成功率:99%) > 1D100[9,0]=90 > 90 > 成功 -rand:9/10,0/10 -============================ -input: -dlh99 -output: -DeadlineHeroes : 行為判定(成功率:99%) > 1D100[0,9]=09 > 09 > 成功 -rand:0/10,9/10 -============================ -input: -dlh99 -output: -DeadlineHeroes : 行為判定(成功率:99%) > 1D100[0,0]=100 > 100 > 失敗 > ファンブル! パワーの代償2倍&振り直し不可 -rand:0/10,0/10 -============================ -input: -dlh100 -output: -DeadlineHeroes : 行為判定(成功率:100%) > 1D100[9,8]=98 > 98 > 成功 -rand:9/10,8/10 -============================ -input: -dlh100 -output: -DeadlineHeroes : 行為判定(成功率:100%) > 1D100[9,9]=99 > 99 > 成功 > クリティカル! パワーの代償1/2 -rand:9/10,9/10 -============================ -input: -dlh100 -output: -DeadlineHeroes : 行為判定(成功率:100%) > 1D100[0,0]=100 > 100 > 失敗 > ファンブル! パワーの代償2倍&振り直し不可 -rand:0/10,0/10 -============================ -input: -dlh101 -output: -DeadlineHeroes : 行為判定(成功率:101%) > 1D100[8,9]=89 > 89 > 成功 -rand:8/10,9/10 -============================ -input: -dlh101 -output: -DeadlineHeroes : 行為判定(成功率:101%) > 1D100[9,9]=99 > 99 > 成功 > クリティカル! パワーの代償1/2 -rand:9/10,9/10 -============================ -input: -dlh101 -output: -DeadlineHeroes : 行為判定(成功率:101%) > 1D100[0,0]=100 > 100 > 失敗 > ファンブル! パワーの代償2倍&振り直し不可 -rand:10/10,10/10 -============================ -input: -dlh101 -output: -DeadlineHeroes : 行為判定(成功率:101%) > 1D100[0,1]=01 > 01 > 成功 > クリティカル! パワーの代償1/2 -rand:10/10,1/10 -============================ -input: -dlh100-5+10 -output: -DeadlineHeroes : 行為判定(成功率:105%) > 1D100[9,8]=98 > 98 > 成功 -rand:9/10,8/10 -============================ -input: -dlh100-5+10 -output: -DeadlineHeroes : 行為判定(成功率:105%) > 1D100[9,9]=99 > 99 > 成功 > クリティカル! パワーの代償1/2 -rand:9/10,9/10 -============================ -input: -dlh100-5+10 -output: -DeadlineHeroes : 行為判定(成功率:105%) > 1D100[0,0]=100 > 100 > 失敗 > ファンブル! パワーの代償2倍&振り直し不可 -rand:10/10,10/10 -============================ -input: -dlh100-5+10 -output: -DeadlineHeroes : 行為判定(成功率:105%) > 1D100[0,5]=05 > 05 > 成功 > クリティカル! パワーの代償1/2 -rand:10/10,5/10 -============================ -input: -DCL1 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:1 + 1D10(->1) = 2] > 10以下 : 何も無し。キミは奇跡的に一命を取り留めた。闘いは続く。 -rand:1/10 -============================ -input: -DCL8 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:8 + 1D10(->1) = 9] > 10以下 : 何も無し。キミは奇跡的に一命を取り留めた。闘いは続く。 -rand:1/10 -============================ -input: -DCL9 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:9 + 1D10(->1) = 10] > 10 : 何も無し。キミは奇跡的に一命を取り留めた。闘いは続く。 -rand:1/10 -============================ -input: -DCL8 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:8 + 1D10(->2) = 10] > 10 : 何も無し。キミは奇跡的に一命を取り留めた。闘いは続く。 -rand:2/10 -============================ -input: -DCL8 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:8 + 1D10(->3) = 11] > 11 : 激痛が走る。以後、イベント終了時まで、全ての判定の成功率-10%。 -rand:3/10 -============================ -input: -DCL8 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:8 + 1D10(->4) = 12] > 12 : キミは[硬直]ポイント2点を得る。[硬直]ポイントを所持している間、キミは「属性:妨害」のパワーを使用することができない。各ラウンド終了時、キミは所持している[硬直]ポイントを1点減らしてもよい。 -rand:4/10 -============================ -input: -DCL8 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:8 + 1D10(->5) = 13] > 13 : 渾身の一撃!! キミは〈生存〉判定を行なう。失敗した場合、[死亡]する。 -rand:5/10 -============================ -input: -DCL8 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:8 + 1D10(->6) = 14] > 14 : キミは[気絶]ポイント2点を得る。[気絶]ポイントを所持している間、キミはあらゆるパワーを使用できず、自身のターンを得ることもできない。各ラウンド終了時、キミは所持している[気絶]ポイントを1点減らしてもよい。 -rand:6/10 -============================ -input: -DCL8 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:8 + 1D10(->7) = 15] > 15 : 以後、イベント終了時まで、全ての判定の成功率-20%。 -rand:7/10 -============================ -input: -DCL8 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:8 + 1D10(->8) = 16] > 16 : 記録的一撃!! キミは〈生存〉-20%の判定を行なう。失敗した場合、[死亡]する。 -rand:8/10 -============================ -input: -DCL8 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:8 + 1D10(->9) = 17] > 17 : キミは[瀕死]ポイント2点を得る。[瀕死]ポイントを所持している間、キミはあらゆるパワーを使用できず、自身のターンを得ることもできない。各ラウンド終了時、キミは所持している[瀕死]ポイントを1点を失う。全ての[瀕死]ポイントを失う前に戦闘が終了しなかった場合、キミは[死亡]する。 -rand:9/10 -============================ -input: -DCL8 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:8 + 1D10(->10) = 18] > 18 : 叙事詩的一撃!! キミは〈生存〉-30%の判定を行なう。失敗した場合、[死亡]する。 -rand:10/10 -============================ -input: -DCL9 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:9 + 1D10(->10) = 19] > 19 : 以後、イベント終了時まで、全ての判定の成功率-30%。 -rand:10/10 -============================ -input: -DCL10 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:10 + 1D10(->10) = 20] > 20 : 神話的一撃!! キミは宙を舞って三回転ほどした後、地面に叩きつけられる。見るも無惨な姿。肉体は原型を留めていない(キミは[死亡]した)。 -rand:10/10 -============================ -input: -DCL11 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:11 + 1D10(->10) = 21] > 20以上 : 神話的一撃!! キミは宙を舞って三回転ほどした後、地面に叩きつけられる。見るも無惨な姿。肉体は原型を留めていない(キミは[死亡]した)。 -rand:10/10 -============================ -input: -DCS8 -output: -DeadlineHeroes : デスチャート(精神)[マイナス値:8 + 1D10(->1) = 9] > 10以下 : 何も無し。キミは歯を食いしばってストレスに耐えた。 -rand:1/10 -============================ -input: -DCS8 -output: -DeadlineHeroes : デスチャート(精神)[マイナス値:8 + 1D10(->2) = 10] > 10 : 何も無し。キミは歯を食いしばってストレスに耐えた。 -rand:2/10 -============================ -input: -DCS8 -output: -DeadlineHeroes : デスチャート(精神)[マイナス値:8 + 1D10(->3) = 11] > 11 : 以後、イベント終了時まで、全ての判定の成功率-10%。 -rand:3/10 -============================ -input: -DCS8 -output: -DeadlineHeroes : デスチャート(精神)[マイナス値:8 + 1D10(->4) = 12] > 12 : キミは[恐怖]ポイント2点を得る。[恐怖]ポイントを所持している間、キミは「属性:攻撃」のパワーを使用できない。各ラウンド終了時、キミは所持している[恐怖]ポイントを1点減らしてもよい。 -rand:4/10 -============================ -input: -DCS8 -output: -DeadlineHeroes : デスチャート(精神)[マイナス値:8 + 1D10(->5) = 13] > 13 : とても傷ついた。キミは〈意志〉判定を行なう。失敗した場合、[絶望]してNPCとなる。 -rand:5/10 -============================ -input: -DCS8 -output: -DeadlineHeroes : デスチャート(精神)[マイナス値:8 + 1D10(->6) = 14] > 14 : キミは[気絶]ポイント2点を得る。[気絶]ポイントを所持している間、キミはあらゆるパワーを使用できず、自身のターンを得ることもできない。各ラウンド終了時、キミは所持している[気絶]ポイントを1点減らしてもよい。 -rand:6/10 -============================ -input: -DCS8 -output: -DeadlineHeroes : デスチャート(精神)[マイナス値:8 + 1D10(->7) = 15] > 15 : 以後、イベント終了時まで、全ての判定の成功率-20%。 -rand:7/10 -============================ -input: -DCS8 -output: -DeadlineHeroes : デスチャート(精神)[マイナス値:8 + 1D10(->8) = 16] > 16 : 信じるものに裏切られたような痛み。キミは〈意志〉-20%の判定を行なう。失敗した場合、[絶望]してNPCとなる。 -rand:8/10 -============================ -input: -DCS8 -output: -DeadlineHeroes : デスチャート(精神)[マイナス値:8 + 1D10(->9) = 17] > 17 : キミは[混乱]ポイント2点を得る。[混乱]ポイントを所持している間、キミは本来味方であったキャラクターに対して、可能な限り最大の被害を与える様、行動し続ける。各ラウンド終了時、キミは所持している[混乱]ポイントを1点減らしてもよい。 -rand:9/10 -============================ -input: -DCS8 -output: -DeadlineHeroes : デスチャート(精神)[マイナス値:8 + 1D10(->10) = 18] > 18 : あまりに残酷な現実。キミは〈意志〉-30%の判定を行なう。失敗した場合、[絶望]してNPCとなる。 -rand:10/10 -============================ -input: -DCS9 -output: -DeadlineHeroes : デスチャート(精神)[マイナス値:9 + 1D10(->10) = 19] > 19 : 以後、イベント終了時まで、全ての判定の成功率-30%。 -rand:10/10 -============================ -input: -DCS10 -output: -DeadlineHeroes : デスチャート(精神)[マイナス値:10 + 1D10(->10) = 20] > 20 : 宇宙開闢の理に触れるも、それは人類の認識限界を超える何かであった。キミは[絶望]し、以後NPCとなる。 -rand:10/10 -============================ -input: -DCS11 -output: -DeadlineHeroes : デスチャート(精神)[マイナス値:11 + 1D10(->10) = 21] > 20以上 : 宇宙開闢の理に触れるも、それは人類の認識限界を超える何かであった。キミは[絶望]し、以後NPCとなる。 -rand:10/10 -============================ -input: -DCC8 -output: -DeadlineHeroes : デスチャート(環境)[マイナス値:8 + 1D10(->1) = 9] > 10以下 : 何も無し。キミは黒い噂を握りつぶした。 -rand:1/10 -============================ -input: -DCC8 -output: -DeadlineHeroes : デスチャート(環境)[マイナス値:8 + 1D10(->2) = 10] > 10 : 何も無し。キミは黒い噂を握りつぶした。 -rand:2/10 -============================ -input: -DCC8 -output: -DeadlineHeroes : デスチャート(環境)[マイナス値:8 + 1D10(->3) = 11] > 11 : 以後、イベント終了時まで、全ての判定の成功率-10%。 -rand:3/10 -============================ -input: -DCC8 -output: -DeadlineHeroes : デスチャート(環境)[マイナス値:8 + 1D10(->4) = 12] > 12 : ピンチ! 以後、イベント終了時まで、キミは《支援》を使用できない。 -rand:4/10 -============================ -input: -DCC8 -output: -DeadlineHeroes : デスチャート(環境)[マイナス値:8 + 1D10(->5) = 13] > 13 : 裏切り!! キミは〈経済〉判定を行なう。失敗した場合、キミはヒーローとしての名声を失い、[汚名]を受ける。 -rand:5/10 -============================ -input: -DCC8 -output: -DeadlineHeroes : デスチャート(環境)[マイナス値:8 + 1D10(->6) = 14] > 14 : 以後、シナリオ終了時まで、代償にクレジットを消費するパワーを使用できない。 -rand:6/10 -============================ -input: -DCC8 -output: -DeadlineHeroes : デスチャート(環境)[マイナス値:8 + 1D10(->7) = 15] > 15 : キミの悪評は大変なもののようだ。協力者からの支援が打ち切られる。以後、シナリオ終了時まで、全ての判定の成功率-20%。 -rand:7/10 -============================ -input: -DCC8 -output: -DeadlineHeroes : デスチャート(環境)[マイナス値:8 + 1D10(->8) = 16] > 16 : 信頼の失墜!! キミは〈経済〉-20%の判定を行なう。失敗した場合、キミはヒーローとしての名声を失い、[汚名]を受ける。 -rand:8/10 -============================ -input: -DCC8 -output: -DeadlineHeroes : デスチャート(環境)[マイナス値:8 + 1D10(->9) = 17] > 17 : 以後、シナリオ終了時まで、【環境】系の技能のレベルがすべて0となる。 -rand:9/10 -============================ -input: -DCC8 -output: -DeadlineHeroes : デスチャート(環境)[マイナス値:8 + 1D10(->10) = 18] > 18 : 捏造報道!! 身の覚えのない犯罪への荷担が、スクープとして報道される。キミは〈経済〉-30%の判定を行なう。失敗した場合、キミはヒーローとしての名声を失い、[汚名]を受ける。 -rand:10/10 -============================ -input: -DCC9 -output: -DeadlineHeroes : デスチャート(環境)[マイナス値:9 + 1D10(->10) = 19] > 19 : 以後、イベント終了時まで、全ての判定の成功率-30%。 -rand:10/10 -============================ -input: -DCC10 -output: -DeadlineHeroes : デスチャート(環境)[マイナス値:10 + 1D10(->10) = 20] > 20 : キミの名は史上最悪の汚点として永遠に歴史に刻まれる。もはやキミを信じる仲間はなく、キミを助ける社会もない。キミは[汚名]を受けた。 -rand:10/10 -============================ -input: -DCC11 -output: -DeadlineHeroes : デスチャート(環境)[マイナス値:11 + 1D10(->10) = 21] > 20以上 : キミの名は史上最悪の汚点として永遠に歴史に刻まれる。もはやキミを信じる仲間はなく、キミを助ける社会もない。キミは[汚名]を受けた。 -rand:10/10 -============================ -input: -DCL8 -output: -DeadlineHeroes : デスチャート(肉体)[マイナス値:8 + 1D10(->3) = 11] > 11 : 激痛が走る。以後、イベント終了時まで、全ての判定の成功率-10%。 -rand:3/10 -============================ -input: -DCS8 -output: -DeadlineHeroes : デスチャート(精神)[マイナス値:8 + 1D10(->3) = 11] > 11 : 以後、イベント終了時まで、全ての判定の成功率-10%。 -rand:3/10 -============================ -input: -DCC8 -output: -DeadlineHeroes : デスチャート(環境)[マイナス値:8 + 1D10(->3) = 11] > 11 : 以後、イベント終了時まで、全ての判定の成功率-10%。 -rand:3/10 -============================ -input: -RNCJ -output: -DeadlineHeroes : リアルネームチャート(日本)(1) > -姓: アイカワ/相川、愛川 -名(男): アキラ/晶、章 -名(女): アン/杏 -rand:1/100 -============================ -input: -RNCJ -output: -DeadlineHeroes : リアルネームチャート(日本)(6) > -姓: アイカワ/相川、愛川 -名(男): アキラ/晶、章 -名(女): アン/杏 -rand:6/100 -============================ -input: -RNCJ -output: -DeadlineHeroes : リアルネームチャート(日本)(7) > -姓: アマミヤ/雨宮 -名(男): エイジ/映司、英治 -名(女): イノリ/祈鈴、祈 -rand:7/100 -============================ -input: -RNCJ -output: -DeadlineHeroes : リアルネームチャート(日本)(90) > -姓: ヤシダ/矢志田 -名(男): レツ/烈、裂 -名(女): ルイ/瑠衣、涙 -rand:90/100 -============================ -input: -RNCJ -output: -DeadlineHeroes : リアルネームチャート(日本)(91) > -姓: ユウキ/結城 -名(男): レン/連、錬 -名(女): レナ/玲奈 -rand:91/100 -============================ -input: -RNCJ -output: -DeadlineHeroes : リアルネームチャート(日本)(96) > -姓: ユウキ/結城 -名(男): レン/連、錬 -名(女): レナ/玲奈 -rand:96/100 -============================ -input: -RNCJ -output: -DeadlineHeroes : リアルネームチャート(日本)(97) > 名無し(何らかの理由で名前を持たない、もしくは失った) -rand:97/100 -============================ -input: -RNCJ -output: -DeadlineHeroes : リアルネームチャート(日本)(100) > 名無し(何らかの理由で名前を持たない、もしくは失った) -rand:100/100 -============================ -input: -RNCO -output: -DeadlineHeroes : リアルネームチャート(海外)(1) > -名(男): アルバス -名(女): アイリス -姓: アレン -rand:1/100 -============================ -input: -RNCO -output: -DeadlineHeroes : リアルネームチャート(海外)(6) > -名(男): アルバス -名(女): アイリス -姓: アレン -rand:6/100 -============================ -input: -RNCO -output: -DeadlineHeroes : リアルネームチャート(海外)(7) > -名(男): クリス -名(女): オリーブ -姓: ウォーケン -rand:7/100 -============================ -input: -RNCO -output: -DeadlineHeroes : リアルネームチャート(海外)(90) > -名(男): マーヴ -名(女): ロザリー -姓: レイノルズ -rand:90/100 -============================ -input: -RNCO -output: -DeadlineHeroes : リアルネームチャート(海外)(91) > -名(男): ライアン -名(女): ワンダ -姓: ワード -rand:91/100 -============================ -input: -RNCO -output: -DeadlineHeroes : リアルネームチャート(海外)(96) > -名(男): ライアン -名(女): ワンダ -姓: ワード -rand:96/100 -============================ -input: -RNCO -output: -DeadlineHeroes : リアルネームチャート(海外)(99) > 名無し(何らかの理由で名前を持たない、もしくは失った) -rand:99/100 -============================ -input: -RNCO -output: -DeadlineHeroes : リアルネームチャート(海外)(100) > 名無し(何らかの理由で名前を持たない、もしくは失った) -rand:100/100 -============================ -input: -HNC -output: -DeadlineHeroes : ヒーローネームチャート(1) > ベースA+ベースA -ベースA(2) > キャプテン・ -ベースB(3) > [動物] > 動物(6) > ドッグ (意味:犬) -ヒーローネーム > キャプテン・ドッグ -rand:1/10,2/10,3/10,6/10 -============================ -input: -HNC -output: -DeadlineHeroes : ヒーローネームチャート(1) > ベースA+ベースA -ベースA(2) > キャプテン・ -ベースB(10) > 数字(1~10)・ -ヒーローネーム > キャプテン・数字(1~10) -rand:1/10,2/10,10/10 -============================ -input: -HNC -output: -DeadlineHeroes : ヒーローネームチャート(1) > ベースA+ベースA -ベースA(8) > [色] > 色(7) > シルバー (意味:銀) -ベースB(3) > [動物] > 動物(6) > ドッグ (意味:犬) -ヒーローネーム > シルバードッグ -rand:1/10,8/10,7/10,3/10,6/10 -============================ -input: -HNC -output: -DeadlineHeroes : ヒーローネームチャート(1) > ベースA+ベースA -ベースA(8) > [色] > 色(7) > シルバー (意味:銀) -ベースB(10) > 数字(1~10)・ -ヒーローネーム > シルバー数字(1~10) -rand:1/10,8/10,7/10,10/10 -============================ -input: -HNC -output: -DeadlineHeroes : ヒーローネームチャート(2) > ベースB -ベースB(3) > [動物] > 動物(6) > ドッグ (意味:犬) -ヒーローネーム > ドッグ -rand:2/10,3/10,6/10 -============================ -input: -HNC -output: -DeadlineHeroes : ヒーローネームチャート(2) > ベースB -ベースB(10) > 数字(1~10)・ -ヒーローネーム > 数字(1~10) -rand:2/10,10/10 -============================ -input: -HNC -output: -DeadlineHeroes : ヒーローネームチャート(3) > ベースB×2回 -ベースB(3) > [動物] > 動物(6) > ドッグ (意味:犬) -ベースB(2) > [武器] > 武器(8) > アロー (意味:矢) -ヒーローネーム > ドッグアロー -rand:3/10,3/10,6/10,2/10,8/10 -============================ -input: -HNC -output: -DeadlineHeroes : ヒーローネームチャート(4) > ベースB+ベースC -ベースB(3) > [動物] > 動物(6) > ドッグ (意味:犬) -ベースC(2) > ボーイ/ガール -ヒーローネーム > ドッグボーイ/ガール -rand:4/10,3/10,6/10,2/10 -============================ -input: -HNC -output: -DeadlineHeroes : ヒーローネームチャート(4) > ベースB+ベースC -ベースB(3) > [動物] > 動物(6) > ドッグ (意味:犬) -ベースC(8) > [色] > 色(1) > ブラック (意味:黒) -ヒーローネーム > ドッグブラック -rand:4/10,3/10,6/10,8/10,1/10 -============================ -input: -HNC -output: -DeadlineHeroes : ヒーローネームチャート(5) > ベースA+ベースB+ベースC -ベースA(7) > [強さ] > 強さ(9) > グレイテスト (意味:至高の) -ベースB(3) > [動物] > 動物(6) > ドッグ (意味:犬) -ベースC(8) > [色] > 色(1) > ブラック (意味:黒) -ヒーローネーム > グレイテストドッグブラック -rand:5/10,7/10,9/10,3/10,6/10,8/10,1/10 -============================ -input: -HNC -output: -DeadlineHeroes : ヒーローネームチャート(6) > ベースA+ベースB×2回 -ベースA(7) > [強さ] > 強さ(1) > スーパー/ウルトラ (意味:超) -ベースB(3) > [動物] > 動物(6) > ドッグ (意味:犬) -ベースB(7) > [光] > 光(10) > サン (意味:太陽) -ヒーローネーム > スーパー/ウルトラドッグサン -rand:6/10,7/10,1/10,3/10,6/10,7/10,10/10 -============================ -input: -HNC -output: -DeadlineHeroes : ヒーローネームチャート(8) > (ベースB)・オブ・(ベースB) -ベースB(2) > [武器] > 武器(3) > ハンマー (意味:鎚) -ベースB(8) > [攻撃] > 攻撃(10) > キル (意味:殺す) -ヒーローネーム > ハンマー・オブ・キル -rand:8/10,2/10,3/10,8/10,10/10 -============================ -input: -HNC -output: -DeadlineHeroes : ヒーローネームチャート(8) > (ベースB)・オブ・(ベースB) -ベースB(10) > 数字(1~10)・ -ベースB(8) > [攻撃] > 攻撃(10) > キル (意味:殺す) -ヒーローネーム > 数字(1~10)・オブ・キル -rand:8/10,10/10,8/10,10/10 -============================ -input: -HNC -output: -DeadlineHeroes : ヒーローネームチャート(9) > (ベースB)・ザ・(ベースB) -ベースB(1) > [神話/夢] > 神話/夢(4) > エンジェル (意味:天使) -ベースB(9) > [その他] > その他(4) > アイアン (意味:鉄) -ヒーローネーム > エンジェル・ザ・アイアン -rand:9/10,1/10,4/10,9/10,4/10 -============================ -input: -HNC -output: -DeadlineHeroes : ヒーローネームチャート(10) > 任意 -rand:10/10 -============================ diff --git a/src/src_bcdice/test/data/DemonParasite.txt b/src/src_bcdice/test/data/DemonParasite.txt deleted file mode 100644 index d6665808b..000000000 --- a/src/src_bcdice/test/data/DemonParasite.txt +++ /dev/null @@ -1,857 +0,0 @@ -input: -1D6 -output: -DemonParasite : (1D6) > 5 -rand:5/6 -============================ -input: -1D6 -output: -DemonParasite : (1D6) > 5 -rand:5/6 -============================ -input: -1D6 -output: -DemonParasite : (1D6) > 1 -rand:1/6 -============================ -input: -1D6 -output: -DemonParasite : (1D6) > 3 -rand:3/6 -============================ -input: -1D6 -output: -DemonParasite : (1D6) > 5 -rand:5/6 -============================ -input: -1D6 -output: -DemonParasite : (1D6) > 5 -rand:5/6 -============================ -input: -1D6 -output: -DemonParasite : (1D6) > 1 -rand:1/6 -============================ -input: -1D6 -output: -DemonParasite : (1D6) > 2 -rand:2/6 -============================ -input: -1D6 -output: -DemonParasite : (1D6) > 4 -rand:4/6 -============================ -input: -1D6 -output: -DemonParasite : (1D6) > 6 -rand:6/6 -============================ -input: -2D6 -output: -DemonParasite : (2D6) > 9[3,6] > 9 -rand:6/6,3/6 -============================ -input: -2D6 -output: -DemonParasite : (2D6) > 4[1,3] > 4 -rand:1/6,3/6 -============================ -input: -2D6 -output: -DemonParasite : (2D6) > 6[2,4] > 6 -rand:2/6,4/6 -============================ -input: -2D6 -output: -DemonParasite : (2D6) > 6[2,4] > 6 -rand:2/6,4/6 -============================ -input: -2D6 -output: -DemonParasite : (2D6) > 7[1,6] > 7 -rand:1/6,6/6 -============================ -input: -2D6 -output: -DemonParasite : (2D6) > 7[1,6] > 7 -rand:6/6,1/6 -============================ -input: -2D6 -output: -DemonParasite : (2D6) > 10[4,6] > 10 -rand:6/6,4/6 -============================ -input: -2D6 -output: -DemonParasite : (2D6) > 5[2,3] > 5 -rand:3/6,2/6 -============================ -input: -2D6 -output: -DemonParasite : (2D6) > 10[5,5] > 10 -rand:5/6,5/6 -============================ -input: -2D6 -output: -DemonParasite : (2D6) > 7[3,4] > 7 -rand:4/6,3/6 -============================ -input: -3D6 -output: -DemonParasite : (3D6) > 8[2,3,3] > 8 -rand:3/6,3/6,2/6 -============================ -input: -3D6 -output: -DemonParasite : (3D6) > 13[3,4,6] > 13 -rand:3/6,4/6,6/6 -============================ -input: -3D6 -output: -DemonParasite : (3D6) > 10[1,4,5] > 10 -rand:4/6,5/6,1/6 -============================ -input: -3D6 -output: -DemonParasite : (3D6) > 10[2,3,5] > 10 -rand:2/6,3/6,5/6 -============================ -input: -3D6 -output: -DemonParasite : (3D6) > 16[5,5,6] > 16 -rand:5/6,6/6,5/6 -============================ -input: -3D6 -output: -DemonParasite : (3D6) > 5[1,2,2] > 5 -rand:1/6,2/6,2/6 -============================ -input: -3D6 -output: -DemonParasite : (3D6) > 7[1,2,4] > 7 -rand:1/6,4/6,2/6 -============================ -input: -3D6 -output: -DemonParasite : (3D6) > 12[3,3,6] > 12 -rand:3/6,6/6,3/6 -============================ -input: -3D6 -output: -DemonParasite : (3D6) > 15[4,5,6] > 15 -rand:5/6,6/6,4/6 -============================ -input: -3D6 -output: -DemonParasite : (3D6) > 13[2,5,6] > 13 -rand:5/6,6/6,2/6 -============================ -input: -5D6 -output: -DemonParasite : (5D6) > 21[2,3,5,5,6] > 21 -rand:5/6,5/6,2/6,3/6,6/6 -============================ -input: -5D6 -output: -DemonParasite : (5D6) > 21[1,4,4,6,6] > 21 -rand:4/6,6/6,4/6,1/6,6/6 -============================ -input: -5D6>=10 -output: -DemonParasite : (5D6>=10) > 11[1,1,2,3,4] > 11 > 致命的失敗 -rand:2/6,1/6,3/6,4/6,1/6 -============================ -input: -5D6>=20 -output: -DemonParasite : (5D6>=20) > 19[2,3,4,5,5] > 19 > 失敗 -rand:3/6,5/6,4/6,2/6,5/6 -============================ -input: -5D6>=19 -output: -DemonParasite : (5D6>=19) > 19[2,3,4,5,5] > 19 > 成功 -rand:3/6,5/6,4/6,2/6,5/6 -============================ -input: -5D6>=25 -output: -DemonParasite : (5D6>=25) > 21[1,3,5,6,6] > 21 > 効果的成功 -rand:5/6,6/6,3/6,6/6,1/6 -============================ -input: -5D6 -output: -DemonParasite : (5D6) > 15[1,1,3,4,6] > 15 -rand:1/6,6/6,1/6,3/6,4/6 -============================ -input: -5D6 -output: -DemonParasite : (5D6) > 13[1,1,1,5,5] > 13 -rand:5/6,1/6,5/6,1/6,1/6 -============================ -input: -5D6 -output: -DemonParasite : (5D6) > 13[1,1,2,4,5] > 13 -rand:2/6,1/6,5/6,1/6,4/6 -============================ -input: -5D6 -output: -DemonParasite : (5D6) > 21[1,2,6,6,6] > 21 -rand:6/6,2/6,6/6,1/6,6/6 -============================ -input: -5D6 -output: -DemonParasite : (5D6) > 20[2,2,5,5,6] > 20 -rand:5/6,6/6,5/6,2/6,2/6 -============================ -input: -10D6 -output: -DemonParasite : (10D6) > 37[1,1,2,3,4,4,5,5,6,6] > 37 -rand:5/6,6/6,2/6,6/6,4/6,5/6,3/6,4/6,1/6,1/6 -============================ -input: -10D6 -output: -DemonParasite : (10D6) > 50[1,4,5,5,5,6,6,6,6,6] > 50 -rand:6/6,1/6,4/6,6/6,5/6,6/6,5/6,6/6,6/6,5/6 -============================ -input: -10D6 -output: -DemonParasite : (10D6) > 33[1,1,1,2,2,4,5,5,6,6] > 33 -rand:4/6,6/6,6/6,2/6,5/6,1/6,5/6,1/6,1/6,2/6 -============================ -input: -10D6 -output: -DemonParasite : (10D6) > 34[1,1,2,3,4,4,4,5,5,5] > 34 -rand:4/6,3/6,5/6,4/6,5/6,5/6,2/6,1/6,1/6,4/6 -============================ -input: -10D6 -output: -DemonParasite : (10D6) > 34[1,1,2,2,3,4,4,5,6,6] > 34 -rand:3/6,1/6,6/6,2/6,1/6,4/6,6/6,2/6,4/6,5/6 -============================ -input: -10D6 -output: -DemonParasite : (10D6) > 39[1,3,3,4,4,4,5,5,5,5] > 39 -rand:3/6,5/6,5/6,4/6,5/6,4/6,4/6,3/6,1/6,5/6 -============================ -input: -10D6 -output: -DemonParasite : (10D6) > 30[1,1,1,2,3,3,4,5,5,5] > 30 -rand:5/6,4/6,5/6,5/6,3/6,1/6,2/6,3/6,1/6,1/6 -============================ -input: -10D6 -output: -DemonParasite : (10D6) > 36[1,1,2,2,4,5,5,5,5,6] > 36 -rand:5/6,2/6,1/6,6/6,4/6,2/6,5/6,5/6,5/6,1/6 -============================ -input: -10D6 -output: -DemonParasite : (10D6) > 33[1,1,2,2,3,3,4,5,6,6] > 33 -rand:1/6,5/6,3/6,1/6,3/6,4/6,2/6,6/6,2/6,6/6 -============================ -input: -10D6 -output: -DemonParasite : (10D6) > 41[2,2,3,3,4,5,5,5,6,6] > 41 -rand:3/6,5/6,2/6,6/6,2/6,3/6,6/6,5/6,4/6,5/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-6:『鈍感』衝動に気が付かなかった。何も起こらない。[経験値0点] -rand:4/6,2/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-9:『前兆』悪魔的特徴が一瞬目立つ。1ターン(10秒)持続。変身中なら影響なし。[経験値10点] -rand:3/6,6/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-2:『怒り』突然強い怒りに駆られる。近くの対象に(非暴力の)怒りを全力でぶつける。このターンの終了まで「行動不能」となる。[経験値20点] -rand:1/6,1/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-7:『抑制』衝動を抑え込んだ。何も起こらない。[経験値0点] -rand:3/6,4/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-9:『前兆』悪魔的特徴が一瞬目立つ。1ターン(10秒)持続。変身中なら影響なし。[経験値10点] -rand:6/6,3/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-8:『我慢』衝動を我慢した。何も起こらない。[経験値0点] -rand:3/6,5/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-6:『鈍感』衝動に気が付かなかった。何も起こらない。[経験値0点] -rand:1/6,5/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-9:『前兆』悪魔的特徴が一瞬目立つ。1ターン(10秒)持続。変身中なら影響なし。[経験値10点] -rand:6/6,3/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-3:『絶叫』寄生生物が体内で蠢く。その恐怖に絶叫。このターンの終了まで「行動不能」となる。[経験値10点] -rand:1/6,2/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-10:『発現』悪魔的特徴が急に目立つ。60ターン(10分)持続。変身中なら影響なし。[経験値10点] -rand:4/6,6/6 -============================ -input: -urge5 -output: -DemonParasite : 衝動表5-8:『嫉妬』仲間に猛烈な嫉妬を覚える。即座に一番近くの味方を攻撃。判定は自動的に効果的成功となる。いなければ影響なし。[経験値20点] -rand:6/6,2/6 -============================ -input: -urge5 -output: -DemonParasite : 衝動表5-11:『定着』変身していなければ、即座に変身。肉体が変身に馴染んでしまう。24時間、変身が解除されなくなる。[経験値30点] -rand:5/6,6/6 -============================ -input: -urge5 -output: -DemonParasite : 衝動表5-5:『飢餓』近くの無防備な対象を喰らおうとする。邪魔する物は敵として攻撃する。次ターンの終了時に我に返る。[経験値20点] -rand:2/6,3/6 -============================ -input: -urge5 -output: -DemonParasite : 衝動表5-7:『混乱』意味のある言葉を話せなくなる。1時間持続する。[経験値20点] -rand:4/6,3/6 -============================ -input: -urge5 -output: -DemonParasite : 衝動表5-10:『無双』全力だが無防備。60ターン(10分)、全てのダメージに+10、防御点0、【行動値】0。[経験値20点] -rand:4/6,6/6 -============================ -input: -urge5 -output: -DemonParasite : 衝動表5-7:『混乱』意味のある言葉を話せなくなる。1時間持続する。[経験値20点] -rand:5/6,2/6 -============================ -input: -urge5 -output: -DemonParasite : 衝動表5-11:『定着』変身していなければ、即座に変身。肉体が変身に馴染んでしまう。24時間、変身が解除されなくなる。[経験値30点] -rand:5/6,6/6 -============================ -input: -urge5 -output: -DemonParasite : 衝動表5-6:『暗闇』視神経に影響が出る。以後1日「暗闇」になる。[経験値20点] -rand:5/6,1/6 -============================ -input: -urge5 -output: -DemonParasite : 衝動表5-7:『混乱』意味のある言葉を話せなくなる。1時間持続する。[経験値20点] -rand:2/6,5/6 -============================ -input: -urge5 -output: -DemonParasite : 衝動表5-7:『混乱』意味のある言葉を話せなくなる。1時間持続する。[経験値20点] -rand:2/6,5/6 -============================ -input: -Surge2 -output: -DemonParasite : 衝動表2-8:『忍耐』肉体を傷つけて衝動に耐えた。5ダメージ。[経験値10点]###secret dice### -rand:6/6,2/6 -============================ -input: -Surge2 -output: -DemonParasite : 衝動表2-4:『残忍』殺意、破壊衝動が一瞬増す。戦闘中ならば次のターンに行われる「攻撃」行動の達成値に+5。[経験値20点]###secret dice### -rand:2/6,2/6 -============================ -input: -Surge2 -output: -DemonParasite : 衝動表2-8:『忍耐』肉体を傷つけて衝動に耐えた。5ダメージ。[経験値10点]###secret dice### -rand:5/6,3/6 -============================ -input: -Surge2 -output: -DemonParasite : 衝動表2-8:『忍耐』肉体を傷つけて衝動に耐えた。5ダメージ。[経験値10点]###secret dice### -rand:4/6,4/6 -============================ -input: -Surge2 -output: -DemonParasite : 衝動表2-4:『残忍』殺意、破壊衝動が一瞬増す。戦闘中ならば次のターンに行われる「攻撃」行動の達成値に+5。[経験値20点]###secret dice### -rand:2/6,2/6 -============================ -input: -Surge2 -output: -DemonParasite : 衝動表2-7:『我慢』衝動を我慢した。何も起こらない。[経験値0点]###secret dice### -rand:3/6,4/6 -============================ -input: -Surge2 -output: -DemonParasite : 衝動表2-2:『茫然』思考が止まり、このターンの終了まで「攻撃」行動を行えない。回避行動に影響はない。[経験値20点]###secret dice### -rand:1/6,1/6 -============================ -input: -Surge2 -output: -DemonParasite : 衝動表2-4:『残忍』殺意、破壊衝動が一瞬増す。戦闘中ならば次のターンに行われる「攻撃」行動の達成値に+5。[経験値20点]###secret dice### -rand:2/6,2/6 -============================ -input: -Surge2 -output: -DemonParasite : 衝動表2-3:『激怒』側にいるもの(生物、物体問わず)が憎く、殴る。変身後ならば次のターンの終了まで、すべての命中判定+5、回避判定-5。[経験値20点]###secret dice### -rand:1/6,2/6 -============================ -input: -Surge2 -output: -DemonParasite : 衝動表2-6:『抑制』衝動を抑え込んだ。何も起こらない。[経験値0点]###secret dice### -rand:1/6,5/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-7:『抑制』衝動を抑え込んだ。何も起こらない。[経験値0点] -rand:2/6,5/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-4:『悲哀』急に悲しいことを思い出して動きが止まる。このターンの終了まで「行動不能」となる。[経験値10点] -rand:3/6,1/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-6:『鈍感』衝動に気が付かなかった。何も起こらない。[経験値0点] -rand:4/6,2/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-8:『我慢』衝動を我慢した。何も起こらない。[経験値0点] -rand:3/6,5/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-11:『変化』利き腕/前脚が2ターン(20秒)かけて悪魔化する。18ターン(3分)持続。変身中なら影響なし。[経験値20点] -rand:5/6,6/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-5:『微笑』可笑しくてしょうがない。くすくす笑いが止まらず、このターンの終了まで「行動不能」となる。[経験値10点] -rand:4/6,1/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-7:『抑制』衝動を抑え込んだ。何も起こらない。[経験値0点] -rand:5/6,2/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-8:『我慢』衝動を我慢した。何も起こらない。[経験値0点] -rand:2/6,6/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-6:『鈍感』衝動に気が付かなかった。何も起こらない。[経験値0点] -rand:2/6,4/6 -============================ -input: -URGE1 -output: -DemonParasite : 衝動表1-8:『我慢』衝動を我慢した。何も起こらない。[経験値0点] -rand:2/6,6/6 -============================ -input: -NURGE1 -output: -DemonParasite : 新衝動表1-4:『迅速』運動神経が上昇する。20分間、戦闘以外の【機敏】判定に+5。 -rand:3/6,1/6 -============================ -input: -nurge1 -output: -DemonParasite : 新衝動表1-4:『迅速』運動神経が上昇する。20分間、戦闘以外の【機敏】判定に+5。 -rand:3/6,1/6 -============================ -input: -NURGE1 -output: -DemonParasite : 新衝動表1-7:『抑制』衝動を抑え込む。何も起こらない。 -rand:6/6,1/6 -============================ -input: -NURGE1 -output: -DemonParasite : 新衝動表1-6:『鈍感』衝動に気が付かない。何も起こらない。 -rand:5/6,1/6 -============================ -input: -NURGE1 -output: -DemonParasite : 新衝動表1-5:『怪力』怪力を発揮する。20分間、戦闘以外の【肉体】判定に+5。 -rand:2/6,3/6 -============================ -input: -NURGE1 -output: -DemonParasite : 新衝動表1-7:『抑制』衝動を抑え込む。何も起こらない。 -rand:5/6,2/6 -============================ -input: -NURGE1 -output: -DemonParasite : 新衝動表1-8:『我慢』衝動を我慢する。何も起こらない。 -rand:2/6,6/6 -============================ -input: -NURGE1 -output: -DemonParasite : 新衝動表1-8:『我慢』衝動を我慢する。何も起こらない。 -rand:2/6,6/6 -============================ -input: -NURGE1 -output: -DemonParasite : 新衝動表1-6:『鈍感』衝動に気が付かない。何も起こらない。 -rand:2/6,4/6 -============================ -input: -NURGE1 -output: -DemonParasite : 新衝動表1-4:『迅速』運動神経が上昇する。20分間、戦闘以外の【機敏】判定に+5。 -rand:3/6,1/6 -============================ -input: -NURGE1 -output: -DemonParasite : 新衝動表1-11:『攻撃』攻撃の姿勢を取る。次のターンの終了まで、すべてのダメージが+5。 -rand:5/6,6/6 -============================ -input: -AURGE1 -output: -DemonParasite : 誤作動表1-11:『排熱暴走』排熱機能に異常発生。次のターン終了時まで「着火」状態となる。[30点] -rand:5/6,6/6 -============================ -input: -AURGE1 -output: -DemonParasite : 誤作動表1-10:『離脱機能』機能の異常発生。行動を消費することなく、即座に敵から「移動(全力)」で離れる。[20点] -rand:6/6,4/6 -============================ -input: -AURGE1 -output: -DemonParasite : 誤作動表1-4:『腕部停止』腕部機構に異常発生。このターンの終了時まで、「タイミング:攻撃」が行えない。[20点] -rand:2/6,2/6 -============================ -input: -AURGE1 -output: -DemonParasite : 誤作動表1-8:『機能安定』機能が安定した。影響なし。[10点] -rand:3/6,5/6 -============================ -input: -AURGE1 -output: -DemonParasite : 誤作動表1-7:『不良調整』機能に違和感。影響なし。[10点] -rand:4/6,3/6 -============================ -input: -AURGE1 -output: -DemonParasite : 誤作動表1-8:『機能安定』機能が安定した。影響なし。[10点] -rand:3/6,5/6 -============================ -input: -AURGE1 -output: -DemonParasite : 誤作動表1-7:『不良調整』機能に違和感。影響なし。[10点] -rand:3/6,4/6 -============================ -input: -AURGE1 -output: -DemonParasite : 誤作動表1-6:『機能制動』機能が一瞬停止するが、影響なし。[10点] -rand:4/6,2/6 -============================ -input: -AURGE1 -output: -DemonParasite : 誤作動表1-7:『不良調整』機能に違和感。影響なし。[10点] -rand:5/6,2/6 -============================ -input: -AURGE1 -output: -DemonParasite : 誤作動表1-5:『脚部停止』脚部機構に異常発生。このターンの終了時まで、あらゆる「移動」を行えない。[20点] -rand:2/6,3/6 -============================ -input: -MURGE1 -output: -DemonParasite : ミュータント衝動表1-3:『絶叫』悪魔寄生体が蠢きだす。その恐怖に絶叫。このターンの終了まで「行動不能」となる。[10点] -rand:2/6,1/6 -============================ -input: -MURGE1 -output: -DemonParasite : ミュータント衝動表1-8:『我慢』衝動を我慢した。何も起こらない。[0点] -rand:6/6,2/6 -============================ -input: -MURGE1 -output: -DemonParasite : ミュータント衝動表1-8:『我慢』衝動を我慢した。何も起こらない。[0点] -rand:5/6,3/6 -============================ -input: -MURGE1 -output: -DemonParasite : ミュータント衝動表1-8:『我慢』衝動を我慢した。何も起こらない。[0点] -rand:5/6,3/6 -============================ -input: -MURGE1 -output: -DemonParasite : ミュータント衝動表1-6:『鈍感』衝動に気が付かなかった。何も起こらない。[0点] -rand:4/6,2/6 -============================ -input: -MURGE1 -output: -DemonParasite : ミュータント衝動表1-5:『微笑』可笑しくてしょうがない。くすくす笑いが止まらず、このターンの終了まで「行動不能」となる。[10点] -rand:3/6,2/6 -============================ -input: -MURGE1 -output: -DemonParasite : ミュータント衝動表1-7:『抑制』衝動を抑え込んだ。何も起こらない。[0点] -rand:5/6,2/6 -============================ -input: -MURGE1 -output: -DemonParasite : ミュータント衝動表1-7:『抑制』衝動を抑え込んだ。何も起こらない。[0点] -rand:5/6,2/6 -============================ -input: -MURGE1 -output: -DemonParasite : ミュータント衝動表1-4:『悲哀』急に悲しいことを思い出す。このターンの終了まで「行動不能」となる。[10点] -rand:2/6,2/6 -============================ -input: -MURGE1 -output: -DemonParasite : ミュータント衝動表1-9:『前兆』悪魔的特徴が一瞬目立つ。1ターン(10秒)持続。《擬態変化》を解いているなら影響なし。[10点] -rand:5/6,4/6 -============================ -input: -UURGE1 -output: -DemonParasite : 鬼御魂(戦闘外)衝動表1-5:『咆哮』<和魂>によって怒りが増し、突如として雄たけびを上げる。[10点] -rand:1/6,4/6 -============================ -input: -UURGE1 -output: -DemonParasite : 鬼御魂(戦闘外)衝動表1-10:『喪失』一瞬、〈和魂〉の神通力が失われる。[10点] -rand:4/6,6/6 -============================ -input: -UURGE1 -output: -DemonParasite : 鬼御魂(戦闘外)衝動表1-5:『咆哮』<和魂>によって怒りが増し、突如として雄たけびを上げる。[10点] -rand:2/6,3/6 -============================ -input: -UURGE1 -output: -DemonParasite : 鬼御魂(戦闘外)衝動表1-4:『哄笑』突如として精神が高揚し、狂ったように笑う。[10点] -rand:1/6,3/6 -============================ -input: -UURGE1 -output: -DemonParasite : 鬼御魂(戦闘外)衝動表1-6:『抑制』衝動を完全に律する。何も起こらない。[0点] -rand:5/6,1/6 -============================ -input: -UURGE1 -output: -DemonParasite : 鬼御魂(戦闘外)衝動表1-7:『沈静』穏やかな気分になる。[0点] -rand:3/6,4/6 -============================ -input: -UURGE1 -output: -DemonParasite : 鬼御魂(戦闘外)衝動表1-6:『抑制』衝動を完全に律する。何も起こらない。[0点] -rand:2/6,4/6 -============================ -input: -UURGE1 -output: -DemonParasite : 鬼御魂(戦闘外)衝動表1-9:『破裂』衝動を押さえ込もうとして体内の欠陥が破裂、喀血する。[10点] -rand:4/6,5/6 -============================ -input: -UURGE1 -output: -DemonParasite : 鬼御魂(戦闘外)衝動表1-5:『咆哮』<和魂>によって怒りが増し、突如として雄たけびを上げる。[10点] -rand:4/6,1/6 -============================ -input: -UURGE1 -output: -DemonParasite : 鬼御魂(戦闘外)衝動表1-5:『咆哮』<和魂>によって怒りが増し、突如として雄たけびを上げる。[10点] -rand:2/6,3/6 -============================ -input: -CURGE1 -output: -DemonParasite : 鬼御魂(戦闘中)衝動表1-8:『理性』影響なし。 -rand:3/6,5/6 -============================ -input: -CURGE1 -output: -DemonParasite : 鬼御魂(戦闘中)衝動表1-8:『理性』影響なし。 -rand:5/6,3/6 -============================ -input: -CURGE1 -output: -DemonParasite : 鬼御魂(戦闘中)衝動表1-7:『沈静』【エナジー】を3点回復する。 -rand:1/6,6/6 -============================ -input: -CURGE1 -output: -DemonParasite : 鬼御魂(戦闘中)衝動表1-4:『哄笑』効果が発生したターンの終了時まで「行動不能」となる。 -rand:1/6,3/6 -============================ -input: -CURGE1 -output: -DemonParasite : 鬼御魂(戦闘中)衝動表1-2:『恐怖』効果が発生したターンの終了時まで「行動不能」状態となる。 -rand:1/6,1/6 -============================ -input: -CURGE1 -output: -DemonParasite : 鬼御魂(戦闘中)衝動表1-10:『喪失』次ターンの【行動値】が半減(端数切捨て)。 -rand:6/6,4/6 -============================ -input: -CURGE1 -output: -DemonParasite : 鬼御魂(戦闘中)衝動表1-7:『沈静』【エナジー】を3点回復する。 -rand:6/6,1/6 -============================ -input: -CURGE1 -output: -DemonParasite : 鬼御魂(戦闘中)衝動表1-6:『抑制』影響なし。 -rand:2/6,4/6 -============================ -input: -CURGE1 -output: -DemonParasite : 鬼御魂(戦闘中)衝動表1-8:『理性』影響なし。 -rand:5/6,3/6 -============================ -input: -CURGE1 -output: -DemonParasite : 鬼御魂(戦闘中)衝動表1-4:『哄笑』効果が発生したターンの終了時まで「行動不能」となる。 -rand:1/6,3/6 -============================ -input: -3D6>=? 目標値?でバグらない -output: -DemonParasite : (3D6>=?) > 9[3,3,3] > 9 > 失敗 -rand:3/6,3/6,3/6 diff --git a/src/src_bcdice/test/data/DetatokoSaga.txt b/src/src_bcdice/test/data/DetatokoSaga.txt deleted file mode 100644 index 37901f47a..000000000 --- a/src/src_bcdice/test/data/DetatokoSaga.txt +++ /dev/null @@ -1,203 +0,0 @@ -input: -3JD -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:0 > 7[1,3,2,4] > 判定値:7 -rand:1/6,3/6,2/6,4/6 -============================ -input: -1JD -output: -DetatokoSaga : 判定! スキルレベル:1 フラグ:0 > 7[4,3] > 判定値:7 -rand:4/6,3/6 -============================ -input: -0JD -output: -DetatokoSaga : 判定! スキルレベル:0 フラグ:0 > 7[6,3,4] > 判定値:7 -rand:6/6,3/6,4/6 -============================ -input: -3JD -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:0 > 8[1,3,2,5] > 判定値:8 -rand:1/6,3/6,2/6,5/6 -============================ -input: -2JD5 -output: -DetatokoSaga : 判定! スキルレベル:2 フラグ:5 > 7[5,2,1] > 判定値:7 -rand:5/6,2/6,1/6 -============================ -input: -3JD7 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:7 > 7[5,2,1,1] > 判定値:7、フラグ以下!【気力1D6->3点減少】【判定値変更不可】 -rand:5/6,2/6,1/6,1/6,3/6 -============================ -input: -3JD7+1 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:7 修正値:+1 > 7[5,2,1,1]+1 > 7+1 > 判定値:8、フラグ以下!【気力1D6->3点減少】【判定値変更不可】 -rand:5/6,2/6,1/6,1/6,3/6 -============================ -input: -3JD7-1 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:7 修正値:-1 > 7[5,2,1,1]-1 > 7-1 > 判定値:6、フラグ以下!【気力1D6->3点減少】【判定値変更不可】 -rand:5/6,2/6,1/6,1/6,3/6 -============================ -input: -3JD7/3 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:7 修正値:÷3 > 8[5,3,1,2]÷3 > 8÷3 > 判定値:3 -rand:5/6,3/6,1/6,2/6 -============================ -input: -3JD7/3 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:7 修正値:÷3 > 9[6,3,1,2]÷3 > 9÷3 > 判定値:3 -rand:6/6,3/6,1/6,2/6 -============================ -input: -3JD7/3 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:7 修正値:÷3 > 10[6,4,1,2]÷3 > 10÷3 > 判定値:4 -rand:6/6,4/6,1/6,2/6 -============================ -input: -3JD7/3 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:7 修正値:÷3 > 11[6,5,1,2]÷3 > 11÷3 > 判定値:4 -rand:6/6,5/6,1/6,2/6 -============================ -input: -3JD7/3 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:7 修正値:÷3 > 12[6,6,1,2]÷3 > 12÷3 > 判定値:4 -rand:6/6,6/6,1/6,2/6 -============================ -input: -3JD7/1 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:7 修正値:÷1 > 12[6,6,1,2]÷1 > 12÷1 > 判定値:12 -rand:6/6,6/6,1/6,2/6 -============================ -input: -3JD9 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:9 > 8[1,3,2,5] > 判定値:8、フラグ以下!【気力1D6->3点減少】【判定値変更不可】 -rand:1/6,3/6,2/6,5/6,3/6 -============================ -input: -3JD10 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:10 > 8[1,3,2,5] > 判定値:8、フラグ以下!【気力6点減少】【判定値変更不可】 -rand:1/6,3/6,2/6,5/6 -============================ -input: -3DS -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:0 目標値:8 > 7[1,3,2,4] > 判定値:7 > 目標値未満…【失敗】 -rand:1/6,3/6,2/6,4/6 -============================ -input: -1DS -output: -DetatokoSaga : 判定! スキルレベル:1 フラグ:0 目標値:8 > 7[4,3] > 判定値:7 > 目標値未満…【失敗】 -rand:4/6,3/6 -============================ -input: -0DS -output: -DetatokoSaga : 判定! スキルレベル:0 フラグ:0 目標値:8 > 7[6,3,4] > 判定値:7 > 目標値未満…【失敗】 -rand:6/6,3/6,4/6 -============================ -input: -3DS -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:0 目標値:8 > 8[1,3,2,5] > 判定値:8 > 目標値以上!【成功】 -rand:1/6,3/6,2/6,5/6 -============================ -input: -3DS7 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:7 目標値:8 > 7[5,2,1,1] > 判定値:7 > 目標値未満…【失敗】、フラグ以下!【気力1D6->3点減少】【判定値変更不可】 -rand:5/6,2/6,1/6,1/6,3/6 -============================ -input: -3DS9 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:9 目標値:8 > 8[1,3,2,5] > 判定値:8 > 目標値以上!【成功】、フラグ以下!【気力1D6->3点減少】【判定値変更不可】 -rand:1/6,3/6,2/6,5/6,3/6 -============================ -input: -3DS10 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:10 目標値:8 > 8[1,3,2,5] > 判定値:8 > 目標値以上!【成功】、フラグ以下!【気力6点減少】【判定値変更不可】 -rand:1/6,3/6,2/6,5/6 -============================ -input: -3DS>=10 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:0 目標値:10 > 9[5,2,4,1] > 判定値:9 > 目標値未満…【失敗】 -rand:5/6,2/6,4/6,1/6 -============================ -input: -3DS>=10 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:0 目標値:10 > 10[4,2,4,6] > 判定値:10 > 目標値以上!【成功】 -rand:4/6,2/6,4/6,6/6 -============================ -input: -3DS9>=10 -output: -DetatokoSaga : 判定! スキルレベル:3 フラグ:9 目標値:10 > 9[5,2,4,1] > 判定値:9 > 目標値未満…【失敗】、フラグ以下!【気力1D6->3点減少】【判定値変更不可】 -rand:5/6,2/6,4/6,1/6,3/6 -============================ -input: -SST -output: -DetatokoSaga : 体力烙印表(2) > あなたは【烙印】を2つ受ける。この表をさらに2回振って受ける【烙印】を決める(その結果、再びこの出目が出ても【烙印】は増えない)。 -rand:1/6,1/6 -============================ -input: -SST -output: -DetatokoSaga : 体力烙印表(12) > 奇跡的にあなたは【烙印】を受けなかった。 -rand:6/6,6/6 -============================ -input: -WST -output: -DetatokoSaga : 気力烙印表(2) > あなたは【烙印】を2つ受ける。この表をさらに2回振って受ける【烙印】を決める(その結果、再びこの出目が出ても【烙印】は増えない)。 -rand:1/6,1/6 -============================ -input: -WST -output: -DetatokoSaga : 気力烙印表(12) > 奇跡的にあなたは【烙印】を受けなかった。 -rand:6/6,6/6 -============================ -input: -SBET -output: -DetatokoSaga : 体力バッドエンド表(2) > 【死亡】あなたは死んだ。次のセッションに参加するには、クラス1つを『モンスター』か『暗黒』にクラスチェンジしなくてはいけない。 -rand:1/6,1/6 -============================ -input: -SBET -output: -DetatokoSaga : 体力バッドエンド表(12) > それでもまだ立ち上がる!あなたはバッドエンドを迎えなかった。体力の【烙印】を1つ打ち消してよい。 -rand:6/6,6/6 -============================ -input: -WBET -output: -DetatokoSaga : 気力バッドエンド表(2) > 【自害】あなたは自ら死を選んだ。次のセッションに参加するには、クラス1つを『暗黒』にクラスチェンジしなくてはいけない。 -rand:1/6,1/6 -============================ -input: -WBET -output: -DetatokoSaga : 気力バッドエンド表(12) > それでもまだ諦めない!あなたはバッドエンドを迎えなかった。あなたは気力の【烙印】を1つ打ち消してよい。 -rand:6/6,6/6 diff --git a/src/src_bcdice/test/data/DetatokoSaga_Korean.txt b/src/src_bcdice/test/data/DetatokoSaga_Korean.txt deleted file mode 100644 index 18a210fb4..000000000 --- a/src/src_bcdice/test/data/DetatokoSaga_Korean.txt +++ /dev/null @@ -1,203 +0,0 @@ -input: -3JD -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:0 > 7[1,3,2,4] > 판정치:7 -rand:1/6,3/6,2/6,4/6 -============================ -input: -1JD -output: -DetatokoSaga : 판정! 스킬레벨:1 플래그:0 > 7[4,3] > 판정치:7 -rand:4/6,3/6 -============================ -input: -0JD -output: -DetatokoSaga : 판정! 스킬레벨:0 플래그:0 > 7[6,3,4] > 판정치:7 -rand:6/6,3/6,4/6 -============================ -input: -3JD -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:0 > 8[1,3,2,5] > 판정치:8 -rand:1/6,3/6,2/6,5/6 -============================ -input: -2JD5 -output: -DetatokoSaga : 판정! 스킬레벨:2 플래그:5 > 7[5,2,1] > 판정치:7 -rand:5/6,2/6,1/6 -============================ -input: -3JD7 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:7 > 7[5,2,1,1] > 판정치:7, 플래그 이하! 【기력1D6->3점 감소】 【판정치 변경 불가】 -rand:5/6,2/6,1/6,1/6,3/6 -============================ -input: -3JD7+1 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:7 수정치:+1 > 7[5,2,1,1]+1 > 7+1 > 판정치:8, 플래그 이하! 【기력1D6->3점 감소】 【판정치 변경 불가】 -rand:5/6,2/6,1/6,1/6,3/6 -============================ -input: -3JD7-1 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:7 수정치:-1 > 7[5,2,1,1]-1 > 7-1 > 판정치:6, 플래그 이하! 【기력1D6->3점 감소】 【판정치 변경 불가】 -rand:5/6,2/6,1/6,1/6,3/6 -============================ -input: -3JD7/3 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:7 수정치:÷3 > 8[5,3,1,2]÷3 > 8÷3 > 판정치:3 -rand:5/6,3/6,1/6,2/6 -============================ -input: -3JD7/3 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:7 수정치:÷3 > 9[6,3,1,2]÷3 > 9÷3 > 판정치:3 -rand:6/6,3/6,1/6,2/6 -============================ -input: -3JD7/3 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:7 수정치:÷3 > 10[6,4,1,2]÷3 > 10÷3 > 판정치:4 -rand:6/6,4/6,1/6,2/6 -============================ -input: -3JD7/3 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:7 수정치:÷3 > 11[6,5,1,2]÷3 > 11÷3 > 판정치:4 -rand:6/6,5/6,1/6,2/6 -============================ -input: -3JD7/3 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:7 수정치:÷3 > 12[6,6,1,2]÷3 > 12÷3 > 판정치:4 -rand:6/6,6/6,1/6,2/6 -============================ -input: -3JD7/1 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:7 수정치:÷1 > 12[6,6,1,2]÷1 > 12÷1 > 판정치:12 -rand:6/6,6/6,1/6,2/6 -============================ -input: -3JD9 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:9 > 8[1,3,2,5] > 판정치:8, 플래그 이하! 【기력1D6->3점 감소】 【판정치 변경 불가】 -rand:1/6,3/6,2/6,5/6,3/6 -============================ -input: -3JD10 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:10 > 8[1,3,2,5] > 판정치:8, 플래그 이하! 【기력6점 감소】 【판정치 변경 불가】 -rand:1/6,3/6,2/6,5/6 -============================ -input: -3DS -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:0 목표치:8 > 7[1,3,2,4] > 판정치:7 > 목표치 미달… 【실패】 -rand:1/6,3/6,2/6,4/6 -============================ -input: -1DS -output: -DetatokoSaga : 판정! 스킬레벨:1 플래그:0 목표치:8 > 7[4,3] > 판정치:7 > 목표치 미달… 【실패】 -rand:4/6,3/6 -============================ -input: -0DS -output: -DetatokoSaga : 판정! 스킬레벨:0 플래그:0 목표치:8 > 7[6,3,4] > 판정치:7 > 목표치 미달… 【실패】 -rand:6/6,3/6,4/6 -============================ -input: -3DS -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:0 목표치:8 > 8[1,3,2,5] > 판정치:8 > 목표치 이상!【성공】 -rand:1/6,3/6,2/6,5/6 -============================ -input: -3DS7 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:7 목표치:8 > 7[5,2,1,1] > 판정치:7 > 목표치 미달… 【실패】, 플래그 이하! 【기력1D6->3점 감소】 【판정치 변경 불가】 -rand:5/6,2/6,1/6,1/6,3/6 -============================ -input: -3DS9 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:9 목표치:8 > 8[1,3,2,5] > 판정치:8 > 목표치 이상!【성공】, 플래그 이하! 【기력1D6->3점 감소】 【판정치 변경 불가】 -rand:1/6,3/6,2/6,5/6,3/6 -============================ -input: -3DS10 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:10 목표치:8 > 8[1,3,2,5] > 판정치:8 > 목표치 이상!【성공】, 플래그 이하! 【기력6점 감소】 【판정치 변경 불가】 -rand:1/6,3/6,2/6,5/6 -============================ -input: -3DS>=10 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:0 목표치:10 > 9[5,2,4,1] > 판정치:9 > 목표치 미달… 【실패】 -rand:5/6,2/6,4/6,1/6 -============================ -input: -3DS>=10 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:0 목표치:10 > 10[4,2,4,6] > 판정치:10 > 목표치 이상!【성공】 -rand:4/6,2/6,4/6,6/6 -============================ -input: -3DS9>=10 -output: -DetatokoSaga : 판정! 스킬레벨:3 플래그:9 목표치:10 > 9[5,2,4,1] > 판정치:9 > 목표치 미달… 【실패】, 플래그 이하! 【기력1D6->3점 감소】 【판정치 변경 불가】 -rand:5/6,2/6,4/6,1/6,3/6 -============================ -input: -SST -output: -DetatokoSaga : 체력 낙인표(2) > 당신은 【낙인】을 2개 받는다. 이 표를 다시 2번 굴려 받을 【낙인】을 정한다(그 경우, 다시 이 눈이 나와도 【낙인】은 늘어나지 않는다). -rand:1/6,1/6 -============================ -input: -SST -output: -DetatokoSaga : 체력 낙인표(12) > 기적적으로 당신은 【낙인】을 받지 않았다. -rand:6/6,6/6 -============================ -input: -WST -output: -DetatokoSaga : 기력 낙인표(2) > 당신은 【낙인】을 2개 받는다. 이 표를 다시 2번 굴려 받을 【낙인】을 정한다(그 경우, 다시 이 눈이 나와도 【낙인】은 늘어나지 않는다). -rand:1/6,1/6 -============================ -input: -WST -output: -DetatokoSaga : 기력 낙인표(12) > 기적적으로 당신은 【낙인】을 받지 않았다. -rand:6/6,6/6 -============================ -input: -SBET -output: -DetatokoSaga : 체력 배드엔딩표(2) > 【사망】 당신은 죽었다. 다음 세션에 참가하기 위해서는, 클래스 1개를 『몬스터』나 『암흑』으로 클래스 체인지해야만 한다. -rand:1/6,1/6 -============================ -input: -SBET -output: -DetatokoSaga : 체력 배드엔딩표(12) > 그래도 아직 일어선다! 당신은 배드엔드를 맞이하지 않았다. 체력의 【낙인】을 1개 지워도 좋다. -rand:6/6,6/6 -============================ -input: -WBET -output: -DetatokoSaga : 기력 배드엔딩표(2) > 【자해】 당신은 스스로 죽음을 골랐다. 다음 세션에 참가하기 위해서는 클래스 1개를 『암흑』으로 클래스 체인지해야만 한다. -rand:1/6,1/6 -============================ -input: -WBET -output: -DetatokoSaga : 기력 배드엔딩표(12) > 그래도 아직 포기하지 않아! 당신은 배드엔드를 맞이하지 않았다. 기력의 【낙인】을 1개 지워도 좋다. -rand:6/6,6/6 diff --git a/src/src_bcdice/test/data/DiceOfTheDead.txt b/src/src_bcdice/test/data/DiceOfTheDead.txt deleted file mode 100644 index 127f7260f..000000000 --- a/src/src_bcdice/test/data/DiceOfTheDead.txt +++ /dev/null @@ -1,71 +0,0 @@ -input: -ZMB -output: -DiceOfTheDead : ゾンビ化表 > 出目:1+5 感染度:0 合計値:6 > 6:任意の部位を1点回復###secret dice### -rand:1/6,5/6 -============================ -input: -ZMB -output: -DiceOfTheDead : ゾンビ化表 > 出目:1+1 感染度:0 合計値:2 > 5以下:影響なし###secret dice### -rand:1/6,1/6 -============================ -input: -ZMB -output: -DiceOfTheDead : ゾンビ化表 > 出目:1+4 感染度:0 合計値:5 > 5以下:影響なし###secret dice### -rand:1/6,4/6 -============================ -input: -ZMB+1 -output: -DiceOfTheDead : ゾンビ化表 > 出目:4+1 感染度:1 合計値:6 > 6:任意の部位を1点回復###secret dice### -rand:4/6,1/6 -============================ -input: -ZMB -output: -DiceOfTheDead : ゾンビ化表 > 出目:6+6 感染度:0 合計値:12 > 12:頭の傷が広がる。「部位:【頭】」1点ダメージ###secret dice### -rand:6/6,6/6 -============================ -input: -ZMB+6 -output: -DiceOfTheDead : ゾンビ化表 > 出目:1+1 感染度:6 合計値:8 > 8:〈アイテム〉便利道具1つをその場に落とす###secret dice### -rand:1/6,1/6 -============================ -input: -ZMB+5 -output: -DiceOfTheDead : ゾンビ化表 > 出目:6+6 感染度:5 合計値:17 > 17:次のターンのみ、すべての【能力値】を2倍にする###secret dice### -rand:6/6,6/6 -============================ -input: -ZMB+6 -output: -DiceOfTheDead : ゾンビ化表 > 出目:6+6 感染度:6 合計値:18 > 18以上:自分以外の味方1人にできる限り全力で攻撃を行う。〈アイテム〉も可能な限り使用する###secret dice### -rand:6/6,6/6 -============================ -input: -ZMB+7 -output: -DiceOfTheDead : ゾンビ化表 > 出目:6+6 感染度:7 合計値:19 > 18以上:自分以外の味方1人にできる限り全力で攻撃を行う。〈アイテム〉も可能な限り使用する###secret dice### -rand:6/6,6/6 -============================ -input: -BIO -output: -DiceOfTheDead : 感染度表 > 出目:1、1 「右下(【足】+1)」###secret dice### -rand:1/6,1/6 -============================ -input: -BIO8 -output: -DiceOfTheDead : 感染度表 > 出目:2、3 「右中(【足】+1)」 > 出目:1、5 「右上(【足】+1)」 > 出目:3、1 「中下(【腕】+1)」 > 出目:4、4 「真中(【腕】+1)」 > 出目:3、6 「中上(【腕】+1)」 > 出目:5、2 「左下(【頭】+1)」 > 出目:6、3 「左中(【頭】+1)」 > 出目:5、5 「左上(【頭】+1)」###secret dice### -rand:2/6,3/6,1/6,5/6,3/6,1/6,4/6,4/6,3/6,6/6,5/6,2/6,6/6,3/6,5/6,5/6 -============================ -input: -BIOX -output: -rand: -============================ diff --git a/src/src_bcdice/test/data/DoubleCross.txt b/src/src_bcdice/test/data/DoubleCross.txt deleted file mode 100644 index 22c8f8c98..000000000 --- a/src/src_bcdice/test/data/DoubleCross.txt +++ /dev/null @@ -1,700 +0,0 @@ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 9 > 成功 -rand:9/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 6 > 成功 -rand:6/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 5 > 成功 -rand:5/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 2 > 失敗 -rand:2/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 9 > 成功 -rand:9/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 3 > 失敗 -rand:3/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 7 > 成功 -rand:7/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 9 > 成功 -rand:9/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 9 > 成功 -rand:9/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 6 > 成功 -rand:6/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 13[1,6,6] > 13 > 失敗 -rand:1/10,6/10,6/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 17[5,3,9] > 17 > 成功 -rand:5/10,3/10,9/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 15[6,2,7] > 15 > 成功 -rand:6/10,2/10,7/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 11[1,7,3] > 11 > 失敗 -rand:1/10,7/10,3/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 11[3,7,1] > 11 > 失敗 -rand:3/10,7/10,1/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 9[3,4,2] > 9 > 失敗 -rand:3/10,4/10,2/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 12[6,5,1] > 12 > 失敗 -rand:6/10,5/10,1/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 14[3,5,6] > 14 > 失敗 -rand:3/10,5/10,6/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 9[3,5,1] > 9 > 失敗 -rand:3/10,5/10,1/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 22[7,9,6] > 22 > 成功 -rand:7/10,9/10,6/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 45[5,9,5,6,10,2,2,1,3,2] > 45 > 失敗 -rand:5/10,9/10,5/10,6/10,10/10,2/10,2/10,1/10,3/10,2/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 70[1,10,4,10,10,6,9,4,9,7] > 70 > 成功 -rand:1/10,10/10,4/10,10/10,10/10,6/10,9/10,4/10,9/10,7/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 40[4,1,5,3,6,9,5,1,4,2] > 40 > 失敗 -rand:4/10,1/10,5/10,3/10,6/10,9/10,5/10,1/10,4/10,2/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 62[9,9,2,3,9,9,8,4,3,6] > 62 > 成功 -rand:9/10,9/10,2/10,3/10,9/10,9/10,8/10,4/10,3/10,6/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 45[8,3,2,3,6,2,2,6,9,4] > 45 > 失敗 -rand:8/10,3/10,2/10,3/10,6/10,2/10,2/10,6/10,9/10,4/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 58[2,4,10,6,4,7,6,5,6,8] > 58 > 成功 -rand:2/10,4/10,10/10,6/10,4/10,7/10,6/10,5/10,6/10,8/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 60[2,4,5,7,10,10,10,2,8,2] > 60 > 成功 -rand:2/10,4/10,5/10,7/10,10/10,10/10,10/10,2/10,8/10,2/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 50[4,8,4,7,7,2,4,8,4,2] > 50 > 成功 -rand:4/10,8/10,4/10,7/10,7/10,2/10,4/10,8/10,4/10,2/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 51[4,9,5,1,9,2,7,4,1,9] > 51 > 成功 -rand:4/10,9/10,5/10,1/10,9/10,2/10,7/10,4/10,1/10,9/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 37[6,1,4,9,2,3,3,2,6,1] > 37 > 失敗 -rand:6/10,1/10,4/10,9/10,2/10,3/10,3/10,2/10,6/10,1/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[1,1,4,5,5,8,9,10,10,10]+6[4,5,6] > 16 -rand:10/10,8/10,4/10,10/10,1/10,1/10,9/10,5/10,5/10,10/10,4/10,5/10,6/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[1,1,3,4,4,7,9,10,10,10]+10[2,5,10]+5[5] > 25 -rand:3/10,4/10,1/10,10/10,1/10,10/10,4/10,10/10,9/10,7/10,10/10,5/10,2/10,5/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[3,4,4,4,5,5,8,9,10,10]+8[1,8] > 18 -rand:5/10,4/10,10/10,10/10,8/10,5/10,4/10,9/10,4/10,3/10,8/10,1/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[1,1,4,4,7,7,8,8,10,10]+10[4,10]+2[2] > 22 -rand:8/10,4/10,8/10,4/10,7/10,10/10,1/10,10/10,7/10,1/10,4/10,10/10,2/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[1,1,1,7,8,8,9,10,10,10]+10[4,4,10]+2[2] > 22 -rand:1/10,1/10,8/10,7/10,8/10,10/10,1/10,10/10,10/10,9/10,10/10,4/10,4/10,2/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[2,3,3,4,5,5,5,5,6,10]+3[3] > 13 -rand:4/10,6/10,5/10,5/10,5/10,5/10,10/10,3/10,3/10,2/10,3/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[1,5,5,5,5,6,6,7,8,10]+9[9] > 19 -rand:7/10,6/10,8/10,5/10,5/10,1/10,6/10,5/10,5/10,10/10,9/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[1,1,4,5,7,7,8,8,9,10]+5[5] > 15 -rand:1/10,7/10,1/10,10/10,8/10,9/10,7/10,8/10,4/10,5/10,5/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[3,3,4,4,4,6,8,9,10,10]+9[1,9] > 19 -rand:4/10,3/10,4/10,3/10,9/10,10/10,6/10,8/10,10/10,4/10,9/10,1/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 9[1,2,3,4,6,6,7,8,8,9] > 9 -rand:2/10,1/10,6/10,8/10,6/10,4/10,7/10,8/10,3/10,9/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[2,3,6,6,6,6,7,8,10,10]+6[1,5,6]+5 > 21 -rand:2/10,10/10,10/10,6/10,6/10,6/10,7/10,8/10,6/10,3/10,1/10,5/10,6/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[1,1,1,2,3,3,7,7,8,9]+10[7,9]+4[4]+5 > 29 -rand:3/10,7/10,9/10,1/10,7/10,1/10,2/10,1/10,8/10,3/10,7/10,9/10,4/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[1,1,2,2,4,5,6,7,7,8]+10[10]+7[7]+5 > 32 -rand:4/10,2/10,8/10,2/10,1/10,5/10,1/10,7/10,7/10,6/10,10/10,7/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[2,2,3,4,5,6,7,8,9,9]+10[6,7,9]+10[8]+10[10]+3[3]+5 > 48 -rand:4/10,5/10,8/10,3/10,9/10,2/10,2/10,7/10,9/10,6/10,7/10,6/10,9/10,8/10,10/10,3/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[3,4,4,5,6,6,7,7,10,10]+10[5,10]+2[2]+5 > 27 -rand:6/10,4/10,10/10,10/10,7/10,4/10,3/10,6/10,5/10,7/10,10/10,5/10,2/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[2,2,2,2,4,5,7,7,8,9]+10[10,10]+10[8,9]+10[1,10]+5[5]+5 > 50 -rand:8/10,9/10,2/10,2/10,2/10,5/10,7/10,7/10,4/10,2/10,10/10,10/10,8/10,9/10,10/10,1/10,5/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[1,1,1,2,4,6,6,8,8,10]+10[4,9,9]+7[4,7]+5 > 32 -rand:1/10,6/10,1/10,4/10,1/10,10/10,2/10,8/10,6/10,8/10,4/10,9/10,9/10,4/10,7/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[1,1,2,4,4,5,5,8,10,10]+10[1,2,8]+10[8]+4[4]+5 > 39 -rand:8/10,5/10,1/10,1/10,2/10,10/10,4/10,5/10,4/10,10/10,2/10,1/10,8/10,8/10,4/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[1,2,2,2,2,4,5,6,7,8]+2[2]+5 > 17 -rand:5/10,8/10,4/10,2/10,7/10,1/10,6/10,2/10,2/10,2/10,2/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[1,3,4,4,4,5,7,8,9,10]+10[4,5,8]+4[4]+5 > 29 -rand:9/10,5/10,4/10,4/10,1/10,8/10,10/10,3/10,4/10,7/10,4/10,8/10,5/10,4/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[5,6,6,7,8]+10[1,9]+5[5]+4 > 29 -rand:6/10,6/10,8/10,5/10,7/10,9/10,1/10,5/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[2,2,9,10,10]+10[6,9,9]+6[3,6]+4 > 30 -rand:2/10,2/10,10/10,10/10,9/10,9/10,6/10,9/10,6/10,3/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[3,4,5,5,9]+4[4]+4 > 18 -rand:5/10,3/10,9/10,4/10,5/10,4/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[5,6,6,8,10]+10[3,9]+1[1]+4 > 25 -rand:10/10,6/10,6/10,8/10,5/10,3/10,9/10,1/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[4,4,6,9,10]+3[3,3]+4 > 17 -rand:6/10,4/10,4/10,10/10,9/10,3/10,3/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 6[2,4,5,5,6]+4 > 10 -rand:4/10,5/10,6/10,2/10,5/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[1,1,2,6,7]+10[8]+10[7]+1[1]+4 > 35 -rand:7/10,6/10,1/10,2/10,1/10,8/10,7/10,1/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[3,6,8,8,10]+10[2,5,9]+6[6]+4 > 30 -rand:10/10,8/10,3/10,6/10,8/10,2/10,9/10,5/10,6/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[2,4,4,5,10]+4[4]+4 > 18 -rand:10/10,4/10,4/10,2/10,5/10,4/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[2,3,3,4,10]+6[6]+4 > 20 -rand:3/10,10/10,4/10,3/10,2/10,6/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[1,2,5,5,5,10,10]+10[2,3,7,7,8,9]+10[1,2,2,3,4,8]+10[3,4,4,7,7]+10[2,5,7,7,8]+10[1,6,7,8,9]+10[1,2,3,8]+10[2,3,5]+10[5,6,8]+10[6,8,10]+10[1,5,9]+10[3,4]+10[1,5]+10[5]+10[9]+10[3]+10[10]+10[5]+10[7]+10[7]+10[6]+10[5]+10[7]+10[3]+1[1] > 241 -rand:1/10,5/10,5/10,10/10,2/10,5/10,10/10,2/10,8/10,7/10,9/10,7/10,3/10,2/10,8/10,2/10,3/10,4/10,1/10,7/10,4/10,7/10,4/10,3/10,5/10,2/10,7/10,7/10,8/10,1/10,7/10,6/10,8/10,9/10,8/10,2/10,1/10,3/10,5/10,2/10,3/10,6/10,5/10,8/10,10/10,6/10,8/10,5/10,9/10,1/10,4/10,3/10,1/10,5/10,5/10,9/10,3/10,10/10,5/10,7/10,7/10,6/10,5/10,7/10,3/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[1,3,3,4,6,8,9]+10[4,5,5,7,7,9]+10[2,2,6,8,9,10]+10[1,2,2,4,6,8]+10[1,3,3,7,8]+10[2,6,7,8]+10[2,2,8,9]+10[3,5,6,7]+10[1,5,5,9]+10[1,1,5]+10[9]+10[6]+10[2]+10[10]+10[6]+10[6]+10[4]+10[2]+10[4]+10[2]+10[3]+10[4]+10[8]+10[4]+10[4]+1[1] > 251 -rand:4/10,1/10,9/10,3/10,3/10,8/10,6/10,4/10,5/10,7/10,7/10,9/10,5/10,9/10,2/10,2/10,10/10,8/10,6/10,2/10,4/10,2/10,6/10,1/10,8/10,3/10,7/10,8/10,1/10,3/10,6/10,8/10,7/10,2/10,2/10,8/10,2/10,9/10,5/10,7/10,3/10,6/10,5/10,5/10,1/10,9/10,1/10,1/10,5/10,9/10,6/10,2/10,10/10,6/10,6/10,4/10,2/10,4/10,2/10,3/10,4/10,8/10,4/10,4/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[2,3,3,4,6,7,8]+10[1,1,2,3,3,6,10]+10[1,2,6,10,10]+10[1,7,7,9]+10[3,5,7]+10[1,6,10]+10[6,9]+10[8,8]+10[8,9]+10[1,10]+10[3]+10[7]+10[8]+10[9]+10[2]+10[4]+10[8]+10[3]+10[10]+10[2]+10[8]+10[9]+10[4]+10[7]+10[8]+1[1] > 251 -rand:8/10,6/10,2/10,3/10,3/10,4/10,7/10,1/10,2/10,3/10,6/10,3/10,1/10,10/10,10/10,1/10,2/10,6/10,10/10,7/10,7/10,9/10,1/10,3/10,5/10,7/10,10/10,6/10,1/10,9/10,6/10,8/10,8/10,9/10,8/10,10/10,1/10,3/10,7/10,8/10,9/10,2/10,4/10,8/10,3/10,10/10,2/10,8/10,9/10,4/10,7/10,8/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[2,3,5,7,9,9,10]+10[5,6,6,6,8,9,9]+10[2,2,6,7,7,7,10]+10[3,4,4,6,8,8,9]+10[3,6,6,7,7,8,9]+10[2,3,4,6,6,9,9]+10[2,3,3,5,5,5,5]+10[4,4,5,6,7,8,10]+10[1,1,3,3,4,5,6]+10[3,4,4,9,10]+10[2,4,4,7,10]+10[2,3,3,6,8]+10[3,4,7,8,8]+10[1,2,4,7,7]+10[1,2,3,10]+10[4,7,7]+10[2,3,7]+10[2,6,10]+10[1,2,10]+10[2,5]+10[4,8]+10[1,8]+10[3]+10[5]+1[1] > 241 -rand:7/10,9/10,5/10,10/10,9/10,3/10,2/10,9/10,8/10,5/10,6/10,6/10,6/10,9/10,10/10,7/10,7/10,6/10,2/10,7/10,2/10,9/10,8/10,4/10,4/10,6/10,3/10,8/10,7/10,6/10,3/10,6/10,8/10,7/10,9/10,6/10,3/10,9/10,9/10,2/10,4/10,6/10,3/10,5/10,5/10,5/10,2/10,3/10,5/10,6/10,8/10,4/10,5/10,10/10,7/10,4/10,3/10,3/10,4/10,5/10,1/10,6/10,1/10,3/10,4/10,10/10,4/10,9/10,4/10,10/10,7/10,2/10,4/10,8/10,2/10,3/10,3/10,6/10,8/10,7/10,3/10,4/10,8/10,4/10,2/10,7/10,1/10,7/10,2/10,10/10,3/10,1/10,4/10,7/10,7/10,2/10,3/10,7/10,6/10,2/10,10/10,1/10,10/10,2/10,2/10,5/10,8/10,4/10,8/10,1/10,3/10,5/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[3,4,5,6,6,9,10]+10[2,2,4,5,8,8,9]+10[1,2,3,8,8,9,10]+10[4,4,5,8,9,10]+10[5,6,6,9,9,10]+10[3,3,5,5,6,8]+10[1,2,7,9,10,10]+10[1,1,2,4,7]+10[4,6,7]+10[4,7,8]+10[5,7,9]+10[3,5,8]+10[1,9,10]+10[2,4]+10[1,9]+10[2]+10[4]+10[4]+10[6]+10[4]+10[9]+10[3]+1[1] > 221 -rand:10/10,4/10,6/10,3/10,6/10,9/10,5/10,2/10,8/10,2/10,4/10,5/10,9/10,8/10,8/10,9/10,10/10,1/10,3/10,8/10,2/10,4/10,8/10,5/10,4/10,9/10,10/10,9/10,10/10,5/10,6/10,6/10,9/10,3/10,8/10,3/10,5/10,5/10,6/10,9/10,1/10,10/10,10/10,2/10,7/10,2/10,4/10,1/10,7/10,1/10,6/10,4/10,7/10,7/10,4/10,8/10,7/10,5/10,9/10,3/10,8/10,5/10,1/10,9/10,10/10,2/10,4/10,1/10,9/10,2/10,4/10,4/10,6/10,4/10,9/10,3/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[1,1,5,5,6,7,7]+10[1,4,8,9,9]+10[1,2,6,10]+10[2,6,7]+10[2,6,6]+10[2,4,10]+10[3,8,10]+10[7,9,9]+10[1,4,5]+10[6,9]+10[4,6]+10[1,3]+10[10]+10[3]+10[2]+10[9]+10[10]+10[2]+10[8]+10[8]+10[6]+1[1] > 211 -rand:1/10,7/10,1/10,7/10,6/10,5/10,5/10,4/10,1/10,9/10,9/10,8/10,1/10,6/10,10/10,2/10,7/10,2/10,6/10,6/10,6/10,2/10,2/10,4/10,10/10,10/10,3/10,8/10,9/10,9/10,7/10,4/10,1/10,5/10,9/10,6/10,4/10,6/10,1/10,3/10,10/10,3/10,2/10,9/10,10/10,2/10,8/10,8/10,6/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[2,3,7,8,9,9,9]+10[2,3,3,4,4,8,10]+10[1,1,3,5,7,7,9]+10[1,2,4,6,8]+10[5,5,7,10]+10[2,2,5,6]+10[2,4,8,10]+10[1,3,6,10]+10[1,1,7]+1[1] > 91 -rand:9/10,3/10,7/10,9/10,8/10,2/10,9/10,4/10,10/10,2/10,8/10,4/10,3/10,3/10,9/10,7/10,1/10,3/10,1/10,5/10,7/10,4/10,2/10,6/10,8/10,1/10,5/10,5/10,7/10,10/10,2/10,5/10,6/10,2/10,4/10,10/10,2/10,8/10,3/10,6/10,1/10,10/10,1/10,7/10,1/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[1,3,4,4,5,5,10]+10[1,2,2,4,6,6]+10[2,6,7,8,9]+10[3,4,7,8,8]+10[1,2,5,8,9]+10[1,1,3,7]+10[4,7]+10[5,7]+10[5,9]+10[5,9]+10[1,5]+10[2]+10[8]+10[8]+10[3]+10[5]+10[6]+10[6]+10[2]+10[4]+10[10]+10[4]+10[4]+10[8]+10[7]+10[2]+10[4]+1[1] > 271 -rand:5/10,3/10,5/10,10/10,1/10,4/10,4/10,2/10,6/10,1/10,2/10,4/10,6/10,8/10,6/10,2/10,7/10,9/10,8/10,8/10,4/10,3/10,7/10,2/10,8/10,1/10,9/10,5/10,7/10,3/10,1/10,1/10,4/10,7/10,7/10,5/10,5/10,9/10,9/10,5/10,5/10,1/10,2/10,8/10,8/10,3/10,5/10,6/10,6/10,2/10,4/10,10/10,4/10,4/10,8/10,7/10,2/10,4/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[1,1,2,2,6,6,8]+10[1,3,6,7,8]+10[3,5,6,8]+10[5,7,8,10]+10[3,5,5,7]+10[2,6,7,9]+10[1,2,9,10]+10[2,7,8]+10[5,6,6]+10[2,4,4]+10[1,6,10]+10[5,7]+10[4,5]+10[7,9]+10[5,7]+10[5,6]+10[5,7]+10[1,10]+10[10]+10[3]+10[7]+10[3]+10[7]+10[7]+10[5]+10[10]+10[3]+10[2]+10[2]+10[9]+10[9]+10[2]+10[4]+10[6]+10[7]+10[5]+10[4]+10[5]+10[3]+10[2]+10[9]+10[7]+10[6]+10[10]+10[2]+10[2]+10[3]+10[3]+10[6]+10[9]+10[10]+10[6]+10[10]+10[2]+10[6]+10[4]+10[10]+10[5]+10[3]+10[3]+10[3]+10[5]+10[8]+10[3]+10[9]+10[8]+10[2]+10[7]+10[3]+10[9]+10[10]+10[2]+10[9]+10[6]+10[8]+10[7]+10[2]+10[9]+10[6]+10[8]+10[5]+10[6]+10[10]+10[3]+10[7]+10[6]+10[7]+10[10]+10[7]+10[2]+10[4]+10[8]+10[8]+10[3]+10[9]+10[8]+10[8]+10[10]+10[2]+10[5]+10[6]+10[5]+10[6]+10[10]+1[1] > 1041 -rand:6/10,1/10,8/10,2/10,6/10,1/10,2/10,7/10,8/10,3/10,6/10,1/10,8/10,5/10,3/10,6/10,10/10,7/10,8/10,5/10,3/10,5/10,5/10,7/10,2/10,6/10,7/10,9/10,2/10,9/10,10/10,1/10,7/10,8/10,2/10,6/10,6/10,5/10,4/10,2/10,4/10,1/10,6/10,10/10,7/10,5/10,5/10,4/10,9/10,7/10,5/10,7/10,5/10,6/10,7/10,5/10,10/10,1/10,10/10,3/10,7/10,3/10,7/10,7/10,5/10,10/10,3/10,2/10,2/10,9/10,9/10,2/10,4/10,6/10,7/10,5/10,4/10,5/10,3/10,2/10,9/10,7/10,6/10,10/10,2/10,2/10,3/10,3/10,6/10,9/10,10/10,6/10,10/10,2/10,6/10,4/10,10/10,5/10,3/10,3/10,3/10,5/10,8/10,3/10,9/10,8/10,2/10,7/10,3/10,9/10,10/10,2/10,9/10,6/10,8/10,7/10,2/10,9/10,6/10,8/10,5/10,6/10,10/10,3/10,7/10,6/10,7/10,10/10,7/10,2/10,4/10,8/10,8/10,3/10,9/10,8/10,8/10,10/10,2/10,5/10,6/10,5/10,6/10,10/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[1,2,3,4,5,6,9]+10[6,7,7,7,8,9]+10[1,2,4,5,6,10]+10[2,2,3,3,5]+10[2,3,5,9,10]+10[5,5,5,8,10]+10[1,1,2,6,8]+10[3,3,8]+10[3,5,10]+10[3,9,10]+10[2,3,7]+10[6,6,9]+10[2,2,6]+10[2,4,5]+10[3,3,5]+10[6,7,10]+10[3,5,6]+10[3,4,9]+10[2,5,6]+10[1,5,10]+10[5,6]+10[2,10]+10[2,6]+10[7,9]+10[9,10]+10[1,3]+10[4]+10[9]+10[2]+10[5]+10[2]+10[5]+10[7]+10[4]+10[5]+10[5]+1[1] > 361 -rand:1/10,4/10,9/10,2/10,5/10,3/10,6/10,6/10,7/10,7/10,9/10,7/10,8/10,4/10,10/10,6/10,5/10,2/10,1/10,3/10,2/10,5/10,3/10,2/10,9/10,5/10,10/10,3/10,2/10,5/10,8/10,10/10,5/10,5/10,8/10,1/10,2/10,1/10,6/10,3/10,3/10,8/10,10/10,3/10,5/10,9/10,3/10,10/10,7/10,2/10,3/10,6/10,6/10,9/10,2/10,6/10,2/10,5/10,2/10,4/10,3/10,3/10,5/10,6/10,10/10,7/10,6/10,3/10,5/10,9/10,4/10,3/10,5/10,6/10,2/10,1/10,5/10,10/10,6/10,5/10,10/10,2/10,6/10,2/10,9/10,7/10,10/10,9/10,3/10,1/10,4/10,9/10,2/10,5/10,2/10,5/10,7/10,4/10,5/10,5/10,1/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[8,9,9]+10[2,8,10]+10[4,10]+3[3] > 33 -rand:9/10,9/10,8/10,2/10,8/10,10/10,4/10,10/10,3/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[2,4,7]+10[10]+4[4] > 24 -rand:7/10,4/10,2/10,10/10,4/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[1,3,5]+2[2] > 12 -rand:5/10,1/10,3/10,2/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[2,3,6]+10[5]+10[6]+10[9]+1[1] > 41 -rand:6/10,3/10,2/10,5/10,6/10,9/10,1/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[2,4,8]+10[6]+10[8]+10[10]+10[9]+1[1] > 51 -rand:8/10,4/10,2/10,6/10,8/10,10/10,9/10,1/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[3,7,7]+10[2,10]+10[5]+10[5]+10[8]+3[3] > 53 -rand:7/10,3/10,7/10,10/10,2/10,5/10,5/10,8/10,3/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[1,8,9]+10[8,9]+10[4,8]+10[6]+4[4] > 44 -rand:1/10,9/10,8/10,8/10,9/10,4/10,8/10,6/10,4/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[2,9,10]+3[1,3] > 13 -rand:2/10,10/10,9/10,1/10,3/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[6,6,9]+10[2,8,8]+4[1,4] > 24 -rand:9/10,6/10,6/10,2/10,8/10,8/10,1/10,4/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[2,8,9]+10[3,6]+10[5]+10[6]+10[7]+10[5]+10[5]+10[6]+10[6]+10[8]+2[2] > 102 -rand:2/10,9/10,8/10,6/10,3/10,5/10,6/10,7/10,5/10,5/10,6/10,6/10,8/10,2/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 1[1,1,1] > 0 (ファンブル) -rand:1/10,1/10,1/10 -============================ -input: -3DX+1@5 -output: -DoubleCross : (3DX5+1) > 1[1,1,1]+1 > 0 (ファンブル) -rand:1/10,1/10,1/10 -============================ -input: -3DX@5>=12 -output: -DoubleCross : (3DX5>=12) > 10[2,9,10]+3[1,3] > 13 > 成功 -rand:2/10,10/10,9/10,1/10,3/10 -============================ -input: -3DX@5>=13 -output: -DoubleCross : (3DX5>=13) > 10[2,9,10]+3[1,3] > 13 > 成功 -rand:2/10,10/10,9/10,1/10,3/10 -============================ -input: -3DX@5>=14 -output: -DoubleCross : (3DX5>=14) > 10[2,9,10]+3[1,3] > 13 > 失敗 -rand:2/10,10/10,9/10,1/10,3/10 -============================ -input: -3DX@5>=14 -output: -DoubleCross : (3DX5>=14) > 1[1,1,1] > 0 (ファンブル) > 失敗 -rand:1/10,1/10,1/10 -============================ -input: -3DX+1@5>=14 -output: -DoubleCross : (3DX5+1>=14) > 1[1,1,1]+1 > 0 (ファンブル) > 失敗 -rand:1/10,1/10,1/10 -============================ -input: -3DX@5>=0 -output: -DoubleCross : (3DX5>=0) > 1[1,1,1] > 0 (ファンブル) > 失敗 -rand:1/10,1/10,1/10 -============================ -input: -0DX@2 -output: -DoubleCross : (0DX2) > 自動失敗 -rand: -============================ -input: -1DX@1 -output: -DoubleCross : (1DX1) > クリティカル値が低すぎます。2以上を指定してください。 -rand: -============================ -input: -1DX@2 -output: -DoubleCross : (1DX2) > 10[2]+1[1] > 11 -rand:2/10,1/10 -============================ -input: -1DX@9 -output: -DoubleCross : (1DX9) > 10[10]+10[9]+8[8] > 28 -rand:10/10,9/10,8/10 -============================ -input: -1DX@10 -output: -DoubleCross : (1DX10) > 10[10]+9[9] > 19 -rand:10/10,9/10 -============================ -input: -1DX -output: -DoubleCross : (1DX10) > 10[10]+9[9] > 19 -rand:10/10,9/10 -============================ -input: -10DX@1XXX -output: -rand: -============================ -input: -ET -output: -DoubleCross : 感情表(69-7) > 信頼(しんらい) - ○脅威(きょうい) -rand:69/100,7/100,2/2 -============================ -input: -ET -output: -DoubleCross : 感情表(51-33) > 遺志(いし) - ○劣等感(れっとうかん) -rand:51/100,33/100,2/2 -============================ -input: -ET -output: -DoubleCross : 感情表(54-70) > ○遺志(いし) - 嫌悪(けんお) -rand:54/100,70/100,1/2 -============================ -input: -ET -output: -DoubleCross : 感情表(89-10) > ○好意(こうい) - 脅威(きょうい) -rand:89/100,10/100,1/2 -============================ -input: -ET -output: -DoubleCross : 感情表(70-79) > ○信頼(しんらい) - 厭気(いやけ) -rand:70/100,79/100,1/2 -============================ -input: -ET -output: -DoubleCross : 感情表(91-9) > 有為(ゆうい) - ○脅威(きょうい) -rand:91/100,9/100,2/2 -============================ -input: -ET -output: -DoubleCross : 感情表(39-15) > 友情(ゆうじょう) - ○嫉妬(しっと) -rand:39/100,15/100,2/2 -============================ -input: -ET -output: -DoubleCross : 感情表(91-72) > 有為(ゆうい) - ○猜疑心(さいぎしん) -rand:91/100,72/100,2/2 -============================ -input: -ET -output: -DoubleCross : 感情表(66-57) > ○信頼(しんらい) - 憎悪(ぞうお) -rand:66/100,57/100,1/2 -============================ -input: -ET -output: -DoubleCross : 感情表(82-21) > ○誠意(せいい) - 恐怖(きょうふ) -rand:82/100,21/100,1/2 -============================ -input: -10dx+5*2@8 -output: -DoubleCross : (10DX8+10) > 10[2,3,6,6,6,6,7,8,10,10]+6[1,5,6]+10 > 26 -rand:2/10,10/10,10/10,6/10,6/10,6/10,7/10,8/10,6/10,3/10,1/10,5/10,6/10 -============================ -input: -10dx+(5*2)@8 -output: -DoubleCross : (10DX8+10) > 10[2,3,6,6,6,6,7,8,10,10]+6[1,5,6]+10 > 26 -rand:2/10,10/10,10/10,6/10,6/10,6/10,7/10,8/10,6/10,3/10,1/10,5/10,6/10 -============================ -input: -10dx+3+(5*2)@8 -output: -DoubleCross : (10DX8+13) > 10[2,3,6,6,6,6,7,8,10,10]+6[1,5,6]+13 > 29 -rand:2/10,10/10,10/10,6/10,6/10,6/10,7/10,8/10,6/10,3/10,1/10,5/10,6/10 -============================ -input: -10dx+(5*2)+4@8 -output: -DoubleCross : (10DX8+14) > 10[2,3,6,6,6,6,7,8,10,10]+6[1,5,6]+14 > 30 -rand:2/10,10/10,10/10,6/10,6/10,6/10,7/10,8/10,6/10,3/10,1/10,5/10,6/10 -============================ -input: -10dx+3+(5*2)+4@8 -output: -DoubleCross : (10DX8+17) > 10[2,3,6,6,6,6,7,8,10,10]+6[1,5,6]+17 > 33 -rand:2/10,10/10,10/10,6/10,6/10,6/10,7/10,8/10,6/10,3/10,1/10,5/10,6/10 -============================ -input: -10dx+3+(5*2+1)+4@8 -output: -DoubleCross : (10DX8+18) > 10[2,3,6,6,6,6,7,8,10,10]+6[1,5,6]+18 > 34 -rand:2/10,10/10,10/10,6/10,6/10,6/10,7/10,8/10,6/10,3/10,1/10,5/10,6/10 -============================ -input: -5DX7+7-3*2 -output: -DoubleCross : (5DX7+1) > 10[5,6,6,7,8]+10[1,9]+5[5]+1 > 26 -rand:6/10,6/10,8/10,5/10,7/10,9/10,1/10,5/10 -============================ -input: -5DX7+7-3*2+4 -output: -DoubleCross : (5DX7+5) > 10[5,6,6,7,8]+10[1,9]+5[5]+5 > 30 -rand:6/10,6/10,8/10,5/10,7/10,9/10,1/10,5/10 -============================ -input: -5DX7+7-3*(2+1) -output: -DoubleCross : (5DX7-2) > 10[5,6,6,7,8]+10[1,9]+5[5]-2 > 23 -rand:6/10,6/10,8/10,5/10,7/10,9/10,1/10,5/10 -============================ -input: -5DX7+7-3*(2+1)+7 -output: -DoubleCross : (5DX7+5) > 10[5,6,6,7,8]+10[1,9]+5[5]+5 > 30 -rand:6/10,6/10,8/10,5/10,7/10,9/10,1/10,5/10 -============================ -input: -5DX7+7-2*(2+5-3) -output: -DoubleCross : (5DX7-1) > 10[5,6,6,7,8]+10[1,9]+5[5]-1 > 24 -rand:6/10,6/10,8/10,5/10,7/10,9/10,1/10,5/10 -============================ -input: -2D10>=? 目標値?でバグらない -output: -DoubleCross : (2D10>=?) > 10[5,5] > 10 > 失敗 -rand:5/10,5/10 diff --git a/src/src_bcdice/test/data/DoubleCross_Korean.txt b/src/src_bcdice/test/data/DoubleCross_Korean.txt deleted file mode 100644 index ce04ddca4..000000000 --- a/src/src_bcdice/test/data/DoubleCross_Korean.txt +++ /dev/null @@ -1,700 +0,0 @@ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 9 > 성공 -rand:9/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 6 > 성공 -rand:6/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 5 > 성공 -rand:5/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 2 > 실패 -rand:2/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 9 > 성공 -rand:9/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 3 > 실패 -rand:3/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 7 > 성공 -rand:7/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 9 > 성공 -rand:9/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 9 > 성공 -rand:9/10 -============================ -input: -1D10>=5 -output: -DoubleCross : (1D10>=5) > 6 > 성공 -rand:6/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 13[1,6,6] > 13 > 실패 -rand:1/10,6/10,6/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 17[5,3,9] > 17 > 성공 -rand:5/10,3/10,9/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 15[6,2,7] > 15 > 성공 -rand:6/10,2/10,7/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 11[1,7,3] > 11 > 실패 -rand:1/10,7/10,3/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 11[3,7,1] > 11 > 실패 -rand:3/10,7/10,1/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 9[3,4,2] > 9 > 실패 -rand:3/10,4/10,2/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 12[6,5,1] > 12 > 실패 -rand:6/10,5/10,1/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 14[3,5,6] > 14 > 실패 -rand:3/10,5/10,6/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 9[3,5,1] > 9 > 실패 -rand:3/10,5/10,1/10 -============================ -input: -3D10>=15 -output: -DoubleCross : (3D10>=15) > 22[7,9,6] > 22 > 성공 -rand:7/10,9/10,6/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 45[5,9,5,6,10,2,2,1,3,2] > 45 > 실패 -rand:5/10,9/10,5/10,6/10,10/10,2/10,2/10,1/10,3/10,2/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 70[1,10,4,10,10,6,9,4,9,7] > 70 > 성공 -rand:1/10,10/10,4/10,10/10,10/10,6/10,9/10,4/10,9/10,7/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 40[4,1,5,3,6,9,5,1,4,2] > 40 > 실패 -rand:4/10,1/10,5/10,3/10,6/10,9/10,5/10,1/10,4/10,2/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 62[9,9,2,3,9,9,8,4,3,6] > 62 > 성공 -rand:9/10,9/10,2/10,3/10,9/10,9/10,8/10,4/10,3/10,6/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 45[8,3,2,3,6,2,2,6,9,4] > 45 > 실패 -rand:8/10,3/10,2/10,3/10,6/10,2/10,2/10,6/10,9/10,4/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 58[2,4,10,6,4,7,6,5,6,8] > 58 > 성공 -rand:2/10,4/10,10/10,6/10,4/10,7/10,6/10,5/10,6/10,8/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 60[2,4,5,7,10,10,10,2,8,2] > 60 > 성공 -rand:2/10,4/10,5/10,7/10,10/10,10/10,10/10,2/10,8/10,2/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 50[4,8,4,7,7,2,4,8,4,2] > 50 > 성공 -rand:4/10,8/10,4/10,7/10,7/10,2/10,4/10,8/10,4/10,2/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 51[4,9,5,1,9,2,7,4,1,9] > 51 > 성공 -rand:4/10,9/10,5/10,1/10,9/10,2/10,7/10,4/10,1/10,9/10 -============================ -input: -10D10>=50 -output: -DoubleCross : (10D10>=50) > 37[6,1,4,9,2,3,3,2,6,1] > 37 > 실패 -rand:6/10,1/10,4/10,9/10,2/10,3/10,3/10,2/10,6/10,1/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[1,1,4,5,5,8,9,10,10,10]+6[4,5,6] > 16 -rand:10/10,8/10,4/10,10/10,1/10,1/10,9/10,5/10,5/10,10/10,4/10,5/10,6/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[1,1,3,4,4,7,9,10,10,10]+10[2,5,10]+5[5] > 25 -rand:3/10,4/10,1/10,10/10,1/10,10/10,4/10,10/10,9/10,7/10,10/10,5/10,2/10,5/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[3,4,4,4,5,5,8,9,10,10]+8[1,8] > 18 -rand:5/10,4/10,10/10,10/10,8/10,5/10,4/10,9/10,4/10,3/10,8/10,1/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[1,1,4,4,7,7,8,8,10,10]+10[4,10]+2[2] > 22 -rand:8/10,4/10,8/10,4/10,7/10,10/10,1/10,10/10,7/10,1/10,4/10,10/10,2/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[1,1,1,7,8,8,9,10,10,10]+10[4,4,10]+2[2] > 22 -rand:1/10,1/10,8/10,7/10,8/10,10/10,1/10,10/10,10/10,9/10,10/10,4/10,4/10,2/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[2,3,3,4,5,5,5,5,6,10]+3[3] > 13 -rand:4/10,6/10,5/10,5/10,5/10,5/10,10/10,3/10,3/10,2/10,3/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[1,5,5,5,5,6,6,7,8,10]+9[9] > 19 -rand:7/10,6/10,8/10,5/10,5/10,1/10,6/10,5/10,5/10,10/10,9/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[1,1,4,5,7,7,8,8,9,10]+5[5] > 15 -rand:1/10,7/10,1/10,10/10,8/10,9/10,7/10,8/10,4/10,5/10,5/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 10[3,3,4,4,4,6,8,9,10,10]+9[1,9] > 19 -rand:4/10,3/10,4/10,3/10,9/10,10/10,6/10,8/10,10/10,4/10,9/10,1/10 -============================ -input: -10dx -output: -DoubleCross : (10DX10) > 9[1,2,3,4,6,6,7,8,8,9] > 9 -rand:2/10,1/10,6/10,8/10,6/10,4/10,7/10,8/10,3/10,9/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[2,3,6,6,6,6,7,8,10,10]+6[1,5,6]+5 > 21 -rand:2/10,10/10,10/10,6/10,6/10,6/10,7/10,8/10,6/10,3/10,1/10,5/10,6/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[1,1,1,2,3,3,7,7,8,9]+10[7,9]+4[4]+5 > 29 -rand:3/10,7/10,9/10,1/10,7/10,1/10,2/10,1/10,8/10,3/10,7/10,9/10,4/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[1,1,2,2,4,5,6,7,7,8]+10[10]+7[7]+5 > 32 -rand:4/10,2/10,8/10,2/10,1/10,5/10,1/10,7/10,7/10,6/10,10/10,7/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[2,2,3,4,5,6,7,8,9,9]+10[6,7,9]+10[8]+10[10]+3[3]+5 > 48 -rand:4/10,5/10,8/10,3/10,9/10,2/10,2/10,7/10,9/10,6/10,7/10,6/10,9/10,8/10,10/10,3/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[3,4,4,5,6,6,7,7,10,10]+10[5,10]+2[2]+5 > 27 -rand:6/10,4/10,10/10,10/10,7/10,4/10,3/10,6/10,5/10,7/10,10/10,5/10,2/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[2,2,2,2,4,5,7,7,8,9]+10[10,10]+10[8,9]+10[1,10]+5[5]+5 > 50 -rand:8/10,9/10,2/10,2/10,2/10,5/10,7/10,7/10,4/10,2/10,10/10,10/10,8/10,9/10,10/10,1/10,5/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[1,1,1,2,4,6,6,8,8,10]+10[4,9,9]+7[4,7]+5 > 32 -rand:1/10,6/10,1/10,4/10,1/10,10/10,2/10,8/10,6/10,8/10,4/10,9/10,9/10,4/10,7/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[1,1,2,4,4,5,5,8,10,10]+10[1,2,8]+10[8]+4[4]+5 > 39 -rand:8/10,5/10,1/10,1/10,2/10,10/10,4/10,5/10,4/10,10/10,2/10,1/10,8/10,8/10,4/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[1,2,2,2,2,4,5,6,7,8]+2[2]+5 > 17 -rand:5/10,8/10,4/10,2/10,7/10,1/10,6/10,2/10,2/10,2/10,2/10 -============================ -input: -10dx+5@8 -output: -DoubleCross : (10DX8+5) > 10[1,3,4,4,4,5,7,8,9,10]+10[4,5,8]+4[4]+5 > 29 -rand:9/10,5/10,4/10,4/10,1/10,8/10,10/10,3/10,4/10,7/10,4/10,8/10,5/10,4/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[5,6,6,7,8]+10[1,9]+5[5]+4 > 29 -rand:6/10,6/10,8/10,5/10,7/10,9/10,1/10,5/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[2,2,9,10,10]+10[6,9,9]+6[3,6]+4 > 30 -rand:2/10,2/10,10/10,10/10,9/10,9/10,6/10,9/10,6/10,3/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[3,4,5,5,9]+4[4]+4 > 18 -rand:5/10,3/10,9/10,4/10,5/10,4/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[5,6,6,8,10]+10[3,9]+1[1]+4 > 25 -rand:10/10,6/10,6/10,8/10,5/10,3/10,9/10,1/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[4,4,6,9,10]+3[3,3]+4 > 17 -rand:6/10,4/10,4/10,10/10,9/10,3/10,3/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 6[2,4,5,5,6]+4 > 10 -rand:4/10,5/10,6/10,2/10,5/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[1,1,2,6,7]+10[8]+10[7]+1[1]+4 > 35 -rand:7/10,6/10,1/10,2/10,1/10,8/10,7/10,1/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[3,6,8,8,10]+10[2,5,9]+6[6]+4 > 30 -rand:10/10,8/10,3/10,6/10,8/10,2/10,9/10,5/10,6/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[2,4,4,5,10]+4[4]+4 > 18 -rand:10/10,4/10,4/10,2/10,5/10,4/10 -============================ -input: -5DX7+7-3 -output: -DoubleCross : (5DX7+4) > 10[2,3,3,4,10]+6[6]+4 > 20 -rand:3/10,10/10,4/10,3/10,2/10,6/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[1,2,5,5,5,10,10]+10[2,3,7,7,8,9]+10[1,2,2,3,4,8]+10[3,4,4,7,7]+10[2,5,7,7,8]+10[1,6,7,8,9]+10[1,2,3,8]+10[2,3,5]+10[5,6,8]+10[6,8,10]+10[1,5,9]+10[3,4]+10[1,5]+10[5]+10[9]+10[3]+10[10]+10[5]+10[7]+10[7]+10[6]+10[5]+10[7]+10[3]+1[1] > 241 -rand:1/10,5/10,5/10,10/10,2/10,5/10,10/10,2/10,8/10,7/10,9/10,7/10,3/10,2/10,8/10,2/10,3/10,4/10,1/10,7/10,4/10,7/10,4/10,3/10,5/10,2/10,7/10,7/10,8/10,1/10,7/10,6/10,8/10,9/10,8/10,2/10,1/10,3/10,5/10,2/10,3/10,6/10,5/10,8/10,10/10,6/10,8/10,5/10,9/10,1/10,4/10,3/10,1/10,5/10,5/10,9/10,3/10,10/10,5/10,7/10,7/10,6/10,5/10,7/10,3/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[1,3,3,4,6,8,9]+10[4,5,5,7,7,9]+10[2,2,6,8,9,10]+10[1,2,2,4,6,8]+10[1,3,3,7,8]+10[2,6,7,8]+10[2,2,8,9]+10[3,5,6,7]+10[1,5,5,9]+10[1,1,5]+10[9]+10[6]+10[2]+10[10]+10[6]+10[6]+10[4]+10[2]+10[4]+10[2]+10[3]+10[4]+10[8]+10[4]+10[4]+1[1] > 251 -rand:4/10,1/10,9/10,3/10,3/10,8/10,6/10,4/10,5/10,7/10,7/10,9/10,5/10,9/10,2/10,2/10,10/10,8/10,6/10,2/10,4/10,2/10,6/10,1/10,8/10,3/10,7/10,8/10,1/10,3/10,6/10,8/10,7/10,2/10,2/10,8/10,2/10,9/10,5/10,7/10,3/10,6/10,5/10,5/10,1/10,9/10,1/10,1/10,5/10,9/10,6/10,2/10,10/10,6/10,6/10,4/10,2/10,4/10,2/10,3/10,4/10,8/10,4/10,4/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[2,3,3,4,6,7,8]+10[1,1,2,3,3,6,10]+10[1,2,6,10,10]+10[1,7,7,9]+10[3,5,7]+10[1,6,10]+10[6,9]+10[8,8]+10[8,9]+10[1,10]+10[3]+10[7]+10[8]+10[9]+10[2]+10[4]+10[8]+10[3]+10[10]+10[2]+10[8]+10[9]+10[4]+10[7]+10[8]+1[1] > 251 -rand:8/10,6/10,2/10,3/10,3/10,4/10,7/10,1/10,2/10,3/10,6/10,3/10,1/10,10/10,10/10,1/10,2/10,6/10,10/10,7/10,7/10,9/10,1/10,3/10,5/10,7/10,10/10,6/10,1/10,9/10,6/10,8/10,8/10,9/10,8/10,10/10,1/10,3/10,7/10,8/10,9/10,2/10,4/10,8/10,3/10,10/10,2/10,8/10,9/10,4/10,7/10,8/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[2,3,5,7,9,9,10]+10[5,6,6,6,8,9,9]+10[2,2,6,7,7,7,10]+10[3,4,4,6,8,8,9]+10[3,6,6,7,7,8,9]+10[2,3,4,6,6,9,9]+10[2,3,3,5,5,5,5]+10[4,4,5,6,7,8,10]+10[1,1,3,3,4,5,6]+10[3,4,4,9,10]+10[2,4,4,7,10]+10[2,3,3,6,8]+10[3,4,7,8,8]+10[1,2,4,7,7]+10[1,2,3,10]+10[4,7,7]+10[2,3,7]+10[2,6,10]+10[1,2,10]+10[2,5]+10[4,8]+10[1,8]+10[3]+10[5]+1[1] > 241 -rand:7/10,9/10,5/10,10/10,9/10,3/10,2/10,9/10,8/10,5/10,6/10,6/10,6/10,9/10,10/10,7/10,7/10,6/10,2/10,7/10,2/10,9/10,8/10,4/10,4/10,6/10,3/10,8/10,7/10,6/10,3/10,6/10,8/10,7/10,9/10,6/10,3/10,9/10,9/10,2/10,4/10,6/10,3/10,5/10,5/10,5/10,2/10,3/10,5/10,6/10,8/10,4/10,5/10,10/10,7/10,4/10,3/10,3/10,4/10,5/10,1/10,6/10,1/10,3/10,4/10,10/10,4/10,9/10,4/10,10/10,7/10,2/10,4/10,8/10,2/10,3/10,3/10,6/10,8/10,7/10,3/10,4/10,8/10,4/10,2/10,7/10,1/10,7/10,2/10,10/10,3/10,1/10,4/10,7/10,7/10,2/10,3/10,7/10,6/10,2/10,10/10,1/10,10/10,2/10,2/10,5/10,8/10,4/10,8/10,1/10,3/10,5/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[3,4,5,6,6,9,10]+10[2,2,4,5,8,8,9]+10[1,2,3,8,8,9,10]+10[4,4,5,8,9,10]+10[5,6,6,9,9,10]+10[3,3,5,5,6,8]+10[1,2,7,9,10,10]+10[1,1,2,4,7]+10[4,6,7]+10[4,7,8]+10[5,7,9]+10[3,5,8]+10[1,9,10]+10[2,4]+10[1,9]+10[2]+10[4]+10[4]+10[6]+10[4]+10[9]+10[3]+1[1] > 221 -rand:10/10,4/10,6/10,3/10,6/10,9/10,5/10,2/10,8/10,2/10,4/10,5/10,9/10,8/10,8/10,9/10,10/10,1/10,3/10,8/10,2/10,4/10,8/10,5/10,4/10,9/10,10/10,9/10,10/10,5/10,6/10,6/10,9/10,3/10,8/10,3/10,5/10,5/10,6/10,9/10,1/10,10/10,10/10,2/10,7/10,2/10,4/10,1/10,7/10,1/10,6/10,4/10,7/10,7/10,4/10,8/10,7/10,5/10,9/10,3/10,8/10,5/10,1/10,9/10,10/10,2/10,4/10,1/10,9/10,2/10,4/10,4/10,6/10,4/10,9/10,3/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[1,1,5,5,6,7,7]+10[1,4,8,9,9]+10[1,2,6,10]+10[2,6,7]+10[2,6,6]+10[2,4,10]+10[3,8,10]+10[7,9,9]+10[1,4,5]+10[6,9]+10[4,6]+10[1,3]+10[10]+10[3]+10[2]+10[9]+10[10]+10[2]+10[8]+10[8]+10[6]+1[1] > 211 -rand:1/10,7/10,1/10,7/10,6/10,5/10,5/10,4/10,1/10,9/10,9/10,8/10,1/10,6/10,10/10,2/10,7/10,2/10,6/10,6/10,6/10,2/10,2/10,4/10,10/10,10/10,3/10,8/10,9/10,9/10,7/10,4/10,1/10,5/10,9/10,6/10,4/10,6/10,1/10,3/10,10/10,3/10,2/10,9/10,10/10,2/10,8/10,8/10,6/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[2,3,7,8,9,9,9]+10[2,3,3,4,4,8,10]+10[1,1,3,5,7,7,9]+10[1,2,4,6,8]+10[5,5,7,10]+10[2,2,5,6]+10[2,4,8,10]+10[1,3,6,10]+10[1,1,7]+1[1] > 91 -rand:9/10,3/10,7/10,9/10,8/10,2/10,9/10,4/10,10/10,2/10,8/10,4/10,3/10,3/10,9/10,7/10,1/10,3/10,1/10,5/10,7/10,4/10,2/10,6/10,8/10,1/10,5/10,5/10,7/10,10/10,2/10,5/10,6/10,2/10,4/10,10/10,2/10,8/10,3/10,6/10,1/10,10/10,1/10,7/10,1/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[1,3,4,4,5,5,10]+10[1,2,2,4,6,6]+10[2,6,7,8,9]+10[3,4,7,8,8]+10[1,2,5,8,9]+10[1,1,3,7]+10[4,7]+10[5,7]+10[5,9]+10[5,9]+10[1,5]+10[2]+10[8]+10[8]+10[3]+10[5]+10[6]+10[6]+10[2]+10[4]+10[10]+10[4]+10[4]+10[8]+10[7]+10[2]+10[4]+1[1] > 271 -rand:5/10,3/10,5/10,10/10,1/10,4/10,4/10,2/10,6/10,1/10,2/10,4/10,6/10,8/10,6/10,2/10,7/10,9/10,8/10,8/10,4/10,3/10,7/10,2/10,8/10,1/10,9/10,5/10,7/10,3/10,1/10,1/10,4/10,7/10,7/10,5/10,5/10,9/10,9/10,5/10,5/10,1/10,2/10,8/10,8/10,3/10,5/10,6/10,6/10,2/10,4/10,10/10,4/10,4/10,8/10,7/10,2/10,4/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[1,1,2,2,6,6,8]+10[1,3,6,7,8]+10[3,5,6,8]+10[5,7,8,10]+10[3,5,5,7]+10[2,6,7,9]+10[1,2,9,10]+10[2,7,8]+10[5,6,6]+10[2,4,4]+10[1,6,10]+10[5,7]+10[4,5]+10[7,9]+10[5,7]+10[5,6]+10[5,7]+10[1,10]+10[10]+10[3]+10[7]+10[3]+10[7]+10[7]+10[5]+10[10]+10[3]+10[2]+10[2]+10[9]+10[9]+10[2]+10[4]+10[6]+10[7]+10[5]+10[4]+10[5]+10[3]+10[2]+10[9]+10[7]+10[6]+10[10]+10[2]+10[2]+10[3]+10[3]+10[6]+10[9]+10[10]+10[6]+10[10]+10[2]+10[6]+10[4]+10[10]+10[5]+10[3]+10[3]+10[3]+10[5]+10[8]+10[3]+10[9]+10[8]+10[2]+10[7]+10[3]+10[9]+10[10]+10[2]+10[9]+10[6]+10[8]+10[7]+10[2]+10[9]+10[6]+10[8]+10[5]+10[6]+10[10]+10[3]+10[7]+10[6]+10[7]+10[10]+10[7]+10[2]+10[4]+10[8]+10[8]+10[3]+10[9]+10[8]+10[8]+10[10]+10[2]+10[5]+10[6]+10[5]+10[6]+10[10]+1[1] > 1041 -rand:6/10,1/10,8/10,2/10,6/10,1/10,2/10,7/10,8/10,3/10,6/10,1/10,8/10,5/10,3/10,6/10,10/10,7/10,8/10,5/10,3/10,5/10,5/10,7/10,2/10,6/10,7/10,9/10,2/10,9/10,10/10,1/10,7/10,8/10,2/10,6/10,6/10,5/10,4/10,2/10,4/10,1/10,6/10,10/10,7/10,5/10,5/10,4/10,9/10,7/10,5/10,7/10,5/10,6/10,7/10,5/10,10/10,1/10,10/10,3/10,7/10,3/10,7/10,7/10,5/10,10/10,3/10,2/10,2/10,9/10,9/10,2/10,4/10,6/10,7/10,5/10,4/10,5/10,3/10,2/10,9/10,7/10,6/10,10/10,2/10,2/10,3/10,3/10,6/10,9/10,10/10,6/10,10/10,2/10,6/10,4/10,10/10,5/10,3/10,3/10,3/10,5/10,8/10,3/10,9/10,8/10,2/10,7/10,3/10,9/10,10/10,2/10,9/10,6/10,8/10,7/10,2/10,9/10,6/10,8/10,5/10,6/10,10/10,3/10,7/10,6/10,7/10,10/10,7/10,2/10,4/10,8/10,8/10,3/10,9/10,8/10,8/10,10/10,2/10,5/10,6/10,5/10,6/10,10/10,1/10 -============================ -input: -7DX@2 -output: -DoubleCross : (7DX2) > 10[1,2,3,4,5,6,9]+10[6,7,7,7,8,9]+10[1,2,4,5,6,10]+10[2,2,3,3,5]+10[2,3,5,9,10]+10[5,5,5,8,10]+10[1,1,2,6,8]+10[3,3,8]+10[3,5,10]+10[3,9,10]+10[2,3,7]+10[6,6,9]+10[2,2,6]+10[2,4,5]+10[3,3,5]+10[6,7,10]+10[3,5,6]+10[3,4,9]+10[2,5,6]+10[1,5,10]+10[5,6]+10[2,10]+10[2,6]+10[7,9]+10[9,10]+10[1,3]+10[4]+10[9]+10[2]+10[5]+10[2]+10[5]+10[7]+10[4]+10[5]+10[5]+1[1] > 361 -rand:1/10,4/10,9/10,2/10,5/10,3/10,6/10,6/10,7/10,7/10,9/10,7/10,8/10,4/10,10/10,6/10,5/10,2/10,1/10,3/10,2/10,5/10,3/10,2/10,9/10,5/10,10/10,3/10,2/10,5/10,8/10,10/10,5/10,5/10,8/10,1/10,2/10,1/10,6/10,3/10,3/10,8/10,10/10,3/10,5/10,9/10,3/10,10/10,7/10,2/10,3/10,6/10,6/10,9/10,2/10,6/10,2/10,5/10,2/10,4/10,3/10,3/10,5/10,6/10,10/10,7/10,6/10,3/10,5/10,9/10,4/10,3/10,5/10,6/10,2/10,1/10,5/10,10/10,6/10,5/10,10/10,2/10,6/10,2/10,9/10,7/10,10/10,9/10,3/10,1/10,4/10,9/10,2/10,5/10,2/10,5/10,7/10,4/10,5/10,5/10,1/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[8,9,9]+10[2,8,10]+10[4,10]+3[3] > 33 -rand:9/10,9/10,8/10,2/10,8/10,10/10,4/10,10/10,3/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[2,4,7]+10[10]+4[4] > 24 -rand:7/10,4/10,2/10,10/10,4/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[1,3,5]+2[2] > 12 -rand:5/10,1/10,3/10,2/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[2,3,6]+10[5]+10[6]+10[9]+1[1] > 41 -rand:6/10,3/10,2/10,5/10,6/10,9/10,1/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[2,4,8]+10[6]+10[8]+10[10]+10[9]+1[1] > 51 -rand:8/10,4/10,2/10,6/10,8/10,10/10,9/10,1/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[3,7,7]+10[2,10]+10[5]+10[5]+10[8]+3[3] > 53 -rand:7/10,3/10,7/10,10/10,2/10,5/10,5/10,8/10,3/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[1,8,9]+10[8,9]+10[4,8]+10[6]+4[4] > 44 -rand:1/10,9/10,8/10,8/10,9/10,4/10,8/10,6/10,4/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[2,9,10]+3[1,3] > 13 -rand:2/10,10/10,9/10,1/10,3/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[6,6,9]+10[2,8,8]+4[1,4] > 24 -rand:9/10,6/10,6/10,2/10,8/10,8/10,1/10,4/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 10[2,8,9]+10[3,6]+10[5]+10[6]+10[7]+10[5]+10[5]+10[6]+10[6]+10[8]+2[2] > 102 -rand:2/10,9/10,8/10,6/10,3/10,5/10,6/10,7/10,5/10,5/10,6/10,6/10,8/10,2/10 -============================ -input: -3DX@5 -output: -DoubleCross : (3DX5) > 1[1,1,1] > 0 (펌블) -rand:1/10,1/10,1/10 -============================ -input: -3DX+1@5 -output: -DoubleCross : (3DX5+1) > 1[1,1,1]+1 > 0 (펌블) -rand:1/10,1/10,1/10 -============================ -input: -3DX@5>=12 -output: -DoubleCross : (3DX5>=12) > 10[2,9,10]+3[1,3] > 13 > 성공 -rand:2/10,10/10,9/10,1/10,3/10 -============================ -input: -3DX@5>=13 -output: -DoubleCross : (3DX5>=13) > 10[2,9,10]+3[1,3] > 13 > 성공 -rand:2/10,10/10,9/10,1/10,3/10 -============================ -input: -3DX@5>=14 -output: -DoubleCross : (3DX5>=14) > 10[2,9,10]+3[1,3] > 13 > 실패 -rand:2/10,10/10,9/10,1/10,3/10 -============================ -input: -3DX@5>=14 -output: -DoubleCross : (3DX5>=14) > 1[1,1,1] > 0 (펌블) > 실패 -rand:1/10,1/10,1/10 -============================ -input: -3DX+1@5>=14 -output: -DoubleCross : (3DX5+1>=14) > 1[1,1,1]+1 > 0 (펌블) > 실패 -rand:1/10,1/10,1/10 -============================ -input: -3DX@5>=0 -output: -DoubleCross : (3DX5>=0) > 1[1,1,1] > 0 (펌블) > 실패 -rand:1/10,1/10,1/10 -============================ -input: -0DX@2 -output: -DoubleCross : (0DX2) > 자동실패 -rand: -============================ -input: -1DX@1 -output: -DoubleCross : (1DX1) > 크리티컬치가 너무 낮습니다. 2 이상을 지정해주세요. -rand: -============================ -input: -1DX@2 -output: -DoubleCross : (1DX2) > 10[2]+1[1] > 11 -rand:2/10,1/10 -============================ -input: -1DX@9 -output: -DoubleCross : (1DX9) > 10[10]+10[9]+8[8] > 28 -rand:10/10,9/10,8/10 -============================ -input: -1DX@10 -output: -DoubleCross : (1DX10) > 10[10]+9[9] > 19 -rand:10/10,9/10 -============================ -input: -1DX -output: -DoubleCross : (1DX10) > 10[10]+9[9] > 19 -rand:10/10,9/10 -============================ -input: -10DX@1XXX -output: -rand: -============================ -input: -ET -output: -DoubleCross : 감정표(69-7) > 신뢰 - ○위협 -rand:69/100,7/100,2/2 -============================ -input: -ET -output: -DoubleCross : 감정표(51-33) > 유지(遺志) - ○열등감 -rand:51/100,33/100,2/2 -============================ -input: -ET -output: -DoubleCross : 감정표(54-70) > ○유지(遺志) - 혐오 -rand:54/100,70/100,1/2 -============================ -input: -ET -output: -DoubleCross : 감정표(89-10) > ○호의 - 위협 -rand:89/100,10/100,1/2 -============================ -input: -ET -output: -DoubleCross : 감정표(70-79) > ○신뢰 - 싫음 -rand:70/100,79/100,1/2 -============================ -input: -ET -output: -DoubleCross : 감정표(91-9) > 유위(有為) - ○위협 -rand:91/100,9/100,2/2 -============================ -input: -ET -output: -DoubleCross : 감정표(39-15) > 우정 - ○질투 -rand:39/100,15/100,2/2 -============================ -input: -ET -output: -DoubleCross : 감정표(91-72) > 유위(有為) - ○시의심 -rand:91/100,72/100,2/2 -============================ -input: -ET -output: -DoubleCross : 감정표(66-57) > ○신뢰 - 증오 -rand:66/100,57/100,1/2 -============================ -input: -ET -output: -DoubleCross : 감정표(82-21) > ○성의 - 공포 -rand:82/100,21/100,1/2 -============================ -input: -10dx+5*2@8 -output: -DoubleCross : (10DX8+10) > 10[2,3,6,6,6,6,7,8,10,10]+6[1,5,6]+10 > 26 -rand:2/10,10/10,10/10,6/10,6/10,6/10,7/10,8/10,6/10,3/10,1/10,5/10,6/10 -============================ -input: -10dx+(5*2)@8 -output: -DoubleCross : (10DX8+10) > 10[2,3,6,6,6,6,7,8,10,10]+6[1,5,6]+10 > 26 -rand:2/10,10/10,10/10,6/10,6/10,6/10,7/10,8/10,6/10,3/10,1/10,5/10,6/10 -============================ -input: -10dx+3+(5*2)@8 -output: -DoubleCross : (10DX8+13) > 10[2,3,6,6,6,6,7,8,10,10]+6[1,5,6]+13 > 29 -rand:2/10,10/10,10/10,6/10,6/10,6/10,7/10,8/10,6/10,3/10,1/10,5/10,6/10 -============================ -input: -10dx+(5*2)+4@8 -output: -DoubleCross : (10DX8+14) > 10[2,3,6,6,6,6,7,8,10,10]+6[1,5,6]+14 > 30 -rand:2/10,10/10,10/10,6/10,6/10,6/10,7/10,8/10,6/10,3/10,1/10,5/10,6/10 -============================ -input: -10dx+3+(5*2)+4@8 -output: -DoubleCross : (10DX8+17) > 10[2,3,6,6,6,6,7,8,10,10]+6[1,5,6]+17 > 33 -rand:2/10,10/10,10/10,6/10,6/10,6/10,7/10,8/10,6/10,3/10,1/10,5/10,6/10 -============================ -input: -10dx+3+(5*2+1)+4@8 -output: -DoubleCross : (10DX8+18) > 10[2,3,6,6,6,6,7,8,10,10]+6[1,5,6]+18 > 34 -rand:2/10,10/10,10/10,6/10,6/10,6/10,7/10,8/10,6/10,3/10,1/10,5/10,6/10 -============================ -input: -5DX7+7-3*2 -output: -DoubleCross : (5DX7+1) > 10[5,6,6,7,8]+10[1,9]+5[5]+1 > 26 -rand:6/10,6/10,8/10,5/10,7/10,9/10,1/10,5/10 -============================ -input: -5DX7+7-3*2+4 -output: -DoubleCross : (5DX7+5) > 10[5,6,6,7,8]+10[1,9]+5[5]+5 > 30 -rand:6/10,6/10,8/10,5/10,7/10,9/10,1/10,5/10 -============================ -input: -5DX7+7-3*(2+1) -output: -DoubleCross : (5DX7-2) > 10[5,6,6,7,8]+10[1,9]+5[5]-2 > 23 -rand:6/10,6/10,8/10,5/10,7/10,9/10,1/10,5/10 -============================ -input: -5DX7+7-3*(2+1)+7 -output: -DoubleCross : (5DX7+5) > 10[5,6,6,7,8]+10[1,9]+5[5]+5 > 30 -rand:6/10,6/10,8/10,5/10,7/10,9/10,1/10,5/10 -============================ -input: -5DX7+7-2*(2+5-3) -output: -DoubleCross : (5DX7-1) > 10[5,6,6,7,8]+10[1,9]+5[5]-1 > 24 -rand:6/10,6/10,8/10,5/10,7/10,9/10,1/10,5/10 -============================ -input: -2D10>=? 목표치?로 오작동하지 않는다 -output: -DoubleCross : (2D10>=?) > 10[5,5] > 10 > 失敗 -rand:5/10,5/10 \ No newline at end of file diff --git a/src/src_bcdice/test/data/Dracurouge.txt b/src/src_bcdice/test/data/Dracurouge.txt deleted file mode 100644 index 1d3d2a4d9..000000000 --- a/src/src_bcdice/test/data/Dracurouge.txt +++ /dev/null @@ -1,1469 +0,0 @@ -input: -DR -output: -Dracurouge : (DR) > 4D6 > [ 3, 4, 5, 6 ] -rand:6/6,3/6,5/6,4/6 -============================ -input: -DR -output: -Dracurouge : (DR) > 4D6 > [ 3, 4, 6, 6, 10 ] -rand:6/6,3/6,6/6,4/6 -============================ -input: -DR -output: -Dracurouge : (DR) > 4D6 > [ 3, 6, 6, 6, 10 ] -rand:6/6,3/6,6/6,6/6 -============================ -input: -DR -output: -Dracurouge : (DR) > 4D6 > [ 1, 1, 3, 4, 10 ] -rand:1/6,3/6,1/6,4/6 -============================ -input: -DR -output: -Dracurouge : (DR) > 4D6 > [ 1, 1, 1, 3, 10 ] -rand:1/6,3/6,1/6,1/6 -============================ -input: -DR6 -output: -Dracurouge : (DR6) > 6D6 > [ 1, 2, 3, 5, 5, 6 ] -rand:1/6,3/6,2/6,5/6,5/6,6/6 -============================ -input: -DR6 -output: -Dracurouge : (DR6) > 6D6 > [ 5, 5, 6, 6, 6, 6, 10, 10 ] -rand:6/6,6/6,6/6,5/6,5/6,6/6 -============================ -input: -DR6 -output: -Dracurouge : (DR6) > 6D6 > [ 5, 6, 6, 6, 6, 6, 10, 10 ] -rand:6/6,6/6,6/6,5/6,6/6,6/6 -============================ -input: -DR6 -output: -Dracurouge : (DR6) > 6D6 > [ 1, 1, 5, 6, 6, 6, 10, 10 ] -rand:6/6,1/6,6/6,5/6,1/6,6/6 -============================ -input: -DR6 -output: -Dracurouge : (DR6) > 6D6 > [ 1, 1, 1, 5, 6, 6, 10, 10 ] -rand:6/6,1/6,6/6,5/6,1/6,1/6 -============================ -input: -DR6 -output: -Dracurouge : (DR6) > 6D6 > [ 1, 1, 1, 1, 6, 6, 10, 10, 10 ] -rand:6/6,1/6,6/6,1/6,1/6,1/6 -============================ -input: -DR+1 -output: -Dracurouge : (DR+1) > 4D6+1 > [ 3, 4, 5, 6+1 ] > [ 3, 4, 5, 7 ] -rand:6/6,3/6,5/6,4/6 -============================ -input: -DR+2 -output: -Dracurouge : (DR+2) > 4D6+2 > [ 3, 4, 6, 6+2, 10 ] > [ 3, 4, 6, 8, 10 ] -rand:6/6,3/6,6/6,4/6 -============================ -input: -DR6+2 -output: -Dracurouge : (DR6+2) > 6D6+2 > [ 1, 1, 3, 4, 6, 6+2, 10, 10 ] > [ 1, 1, 3, 4, 6, 8, 10, 10 ] -rand:6/6,3/6,6/6,4/6,1/6,1/6 -============================ -input: -DR+0 -output: -Dracurouge : (DR+0) > 4D6 > [ 3, 4, 5, 6 ] -rand:6/6,3/6,5/6,4/6 -============================ -input: -DRR4 -output: -Dracurouge : (DRR4) > 4D6 > [ 3, 4, 5, 6 ] -rand:6/6,3/6,5/6,4/6 -============================ -input: -DRR4 -output: -Dracurouge : (DRR4) > 4D6 > [ 3, 4, 6, 6 ] -rand:6/6,3/6,6/6,4/6 -============================ -input: -DRR6 -output: -Dracurouge : (DRR6) > 6D6 > [ 1, 1, 5, 6, 6, 6 ] -rand:6/6,1/6,6/6,5/6,1/6,6/6 -============================ -input: -RT -output: -Dracurouge : 反応表(11) > ドラク:空に輝く紅い月を仰ぐ/ローゼンブルク:鼻で笑う/ヘルズガルド:自粛を呼びかける咳払いをする/ダストハイム:眉を寄せて考え込む/アヴァローム:欠伸を噛み殺す/ノスフェラス:冥王領の方角を睨む/ゲイズヴァルト:相手を見下すように見る/カインシルト:両手で顔を覆う -rand:1/6,1/6 -============================ -input: -RT -output: -Dracurouge : 反応表(36) > ドラク:己の紋章をじっと見つめる/ローゼンブルク:マントから無数の蝶が飛び立つ/ヘルズガルド:冷たい視線で相手を一瞥する/ダストハイム:一瞬、姿が霧に包まれぼやける/アヴァローム:思わせぶりな言葉や仕草をする/ノスフェラス:何か決心したように顔を上げる/ゲイズヴァルト:目から光が炎のように噴き上がる/カインシルト:血統を捨てた理由について語る -rand:3/6,6/6 -============================ -input: -RT -output: -Dracurouge : 反応表(56) > 領主:手の中にチェスの駒を具現化する/近衛:緊張した視線を周囲に巡らす/遍歴:相手を褒めそやし口づけを求める/賢者:深い知識で詳しい説明をする/狩人:突然振り向いて背後に警戒する/夜獣:獰猛な笑みを浮かべる/将軍:他者をいさめる/僧正:他者の言葉に大いに感動する/空駆:己の乗騎と、食事を分け合う/船長:情熱的に、誰かをかき口説く/寵童:主以外の騎士を、じっと見つめてしまう/仲立:笑顔で会話しつつ、相手の真意を探る/技師:思いついた人形の部位を具現化してみる/博士:誰かのあまりに低い知的水準を嘆く/星読:誰かに、興味深い星が宿っていることに気づく/後見:他の者らを紹介させ合い、縁を取り持つ -rand:5/6,6/6 -============================ -input: -RT -output: -Dracurouge : 反応表(65) > 領主:重々しく名乗りを上げる/近衛:主の袖を握りしめる/遍歴:格上の前に跪いて礼を尽くす/賢者:月を見上げドラクルを褒め讃える/狩人:ぼそりと名乗りをあげる/夜獣:獲物を狙う目で、他の騎士を見る/将軍:他者を激励する/僧正:真祖の印を強く握りしめる/空駆:乗騎を抱きしめて撫でながら褒める/船長:異郷の様々な情景を具現化して見せる/寵童:切なげな溜息をつく/仲立:誰かについて、惜しみない賞賛を語る/技師:誰かの美しさに目を奪われる/博士:誰かに研究への協力を頼みこむ/星読:空に手を軽く振り、雲で特定の星を隠す/後見:庇護対象に、控えめな助言を与える -rand:6/6,5/6 -============================ -input: -RT -output: -Dracurouge : 反応表(66) > 領主:口元を隠しつつ上品に笑う/近衛:主に対する、周囲の態度を咎める/遍歴:格下や人間に微笑みかける/賢者:他の騎士の感情をいさめる/狩人:格下を見下した目で見る/夜獣:自虐的な言葉をつぶやく/将軍:部下や民からの報告を聞く/僧正:天の紅き月へ感謝を捧げる/空駆:己の乗騎を得た次第について語る/船長:遥か遠い奇妙な島や海域について語る/寵童:主の手を取り、その指を舐める/仲立:誰かを嫌味でない程度に褒めそやす/技師:誰かの仕草に、嘆息して感動を覚える/博士:己なりに知的な言葉で誰かを賛辞する/星読:空に手を差し出し、紅月をさらに輝かせる/後見:庇護対象に微笑みかけ、わずかに褒める -rand:6/6,6/6 -============================ -input: -RTDF -output: -Dracurouge : 反応表(11) > ドラク:空に輝く紅い月を仰ぐ -rand:1/6,1/6 -============================ -input: -RTNF -output: -Dracurouge : 反応表(36) > ノスフェラス:何か決心したように顔を上げる -rand:3/6,6/6 -============================ -input: -RTDF -output: -Dracurouge : 反応表(66) > 領主:口元を隠しつつ上品に笑う -rand:6/6,6/6 -============================ -input: -RTAN -output: -Dracurouge : 反応表(66) > 夜獣:自虐的な言葉をつぶやく -rand:6/6,6/6 -============================ -input: -RTMN -output: -Dracurouge : 反応表(16) > ダストハイム:目を閉じ、過去に想いを馳せる -rand:1/6,6/6 -============================ -input: -RTGE -output: -Dracurouge : 反応表(11) > ゲイズヴァルト:相手を見下すように見る -rand:1/6,1/6 -============================ -input: -RTGE -output: -Dracurouge : 反応表(36) > ゲイズヴァルト:目から光が炎のように噴き上がる -rand:3/6,6/6 -============================ -input: -RTGE -output: -Dracurouge : 反応表(41) > 将軍:机や壁を叩きつつ、激昂する -rand:4/6,1/6 -============================ -input: -RTGE -output: -Dracurouge : 反応表(66) > 将軍:部下や民からの報告を聞く -rand:6/6,6/6 -============================ -input: -RTKB -output: -Dracurouge : 反応表(11) > カインシルト:両手で顔を覆う -rand:1/6,1/6 -============================ -input: -RTKB -output: -Dracurouge : 反応表(36) > カインシルト:血統を捨てた理由について語る -rand:3/6,6/6 -============================ -input: -RTKB -output: -Dracurouge : 反応表(41) > 僧正:深々とため息をつく -rand:4/6,1/6 -============================ -input: -RTKB -output: -Dracurouge : 反応表(66) > 僧正:天の紅き月へ感謝を捧げる -rand:6/6,6/6 -============================ -input: -RTDH -output: -Dracurouge : 反応表(41) > 空駆:乗騎が他を退け、過剰に守ろうとする -rand:4/6,1/6 -============================ -input: -RTDH -output: -Dracurouge : 反応表(66) > 空駆:己の乗騎を得た次第について語る -rand:6/6,6/6 -============================ -input: -RTDK -output: -Dracurouge : 反応表(41) > 船長:少しばかり下世話な冗句を言う -rand:4/6,1/6 -============================ -input: -RTDK -output: -Dracurouge : 反応表(66) > 船長:遥か遠い奇妙な島や海域について語る -rand:6/6,6/6 -============================ -input: -RTDL -output: -Dracurouge : 反応表(41) > 寵童:主の影にそっと隠れる -rand:4/6,1/6 -============================ -input: -RTDL -output: -Dracurouge : 反応表(66) > 寵童:主の手を取り、その指を舐める -rand:6/6,6/6 -============================ -input: -RTDV -output: -Dracurouge : 反応表(41) > 仲立:他者を冷たい目で品定めする -rand:4/6,1/6 -============================ -input: -RTDV -output: -Dracurouge : 反応表(66) > 仲立:誰かを嫌味でない程度に褒めそやす -rand:6/6,6/6 -============================ -input: -RTDU -output: -Dracurouge : 反応表(41) > 技師:持ち歩いていた人形の部位を弄ぶ -rand:4/6,1/6 -============================ -input: -RTDU -output: -Dracurouge : 反応表(66) > 技師:誰かの仕草に、嘆息して感動を覚える -rand:6/6,6/6 -============================ -input: -RTDD -output: -Dracurouge : 反応表(41) > 博士:素晴らしい着想を得て、奇声をあげる -rand:4/6,1/6 -============================ -input: -RTDD -output: -Dracurouge : 反応表(66) > 博士:己なりに知的な言葉で誰かを賛辞する -rand:6/6,6/6 -============================ -input: -RTDS -output: -Dracurouge : 反応表(41) > 星読:空に同調しすぎて、一瞬だけ具現化が解ける -rand:4/6,1/6 -============================ -input: -RTDS -output: -Dracurouge : 反応表(66) > 星読:空に手を差し出し、紅月をさらに輝かせる -rand:6/6,6/6 -============================ -input: -RTDS -output: -Dracurouge : 反応表(41) > 星読:空に同調しすぎて、一瞬だけ具現化が解ける -rand:4/6,1/6 -============================ -input: -RTDS -output: -Dracurouge : 反応表(66) > 星読:空に手を差し出し、紅月をさらに輝かせる -rand:6/6,6/6 -============================ -input: -RTDG2 -output: -Dracurouge : 反応表(41) > 後見:己の過去に搦めて、誰かを説教してしまう -rand:4/6,1/6 -============================ -input: -RTDG2 -output: -Dracurouge : 反応表(66) > 後見:庇護対象に微笑みかけ、わずかに褒める -rand:6/6,6/6 -============================ -input: -RTZZ -output: -rand: -============================ -input: -HRT -output: -Dracurouge : 異端の反応表(11) > 異端卿:床を睨み意識を何とか保つ/ヴルコラク:己の頭をかきむしる/ナハツェーラ:生きたものをじっと見つめる/カルンシュタイン:姿が霧に包まれぼやける/グリマルキン:その場で居眠りする/ストリガ:翼をきつく閉じて怯える/メリュジーヌ:ぼんやりと遠くを眺める/フォーン:より退廃的な衣装をまとう/ホムンクルス:苦しそうに咳き込みながら膝をつく/エナメルム:人形の虚ろな表情からは何もわからない/サングィナリエ:怒りや欲望で、顔が怪物のように醜くゆがむ/アールヴ:平然と場の空気を無視した発言をする/ヴィーヴル:周囲の者は、圧迫感と居心地の悪さを感じる/ルーガルー:巨大な狼の姿となって、警戒も露にうなる/アルラウネ:不満を漏らしたり、軽い我儘を言ったりする/フリッガ:その影が巨大な蜘蛛となって、蠢く -rand:1/6,1/6 -============================ -input: -HRT -output: -Dracurouge : 異端の反応表(36) > 異端卿:恐ろしい目で他者を見る/ヴルコラク:決意した顔で、正面を見る/ナハツェーラ:手の中に髑髏を具現化する/カルンシュタイン:豪奢な衣装を具現化してまとう/グリマルキン:他者にじゃれつく/ストリガ:周囲に無数の小鳥が集まる/メリュジーヌ:他者に下半身を絡め抱きしめる/フォーン:他者を口説き始める/ホムンクルス:ほんのかすかな笑顔が浮かぶ/エナメルム:断片的に、かつての魂の記憶が蘇る/サングィナリエ:余裕のある不敵な笑みを浮かべる/アールヴ:誰かの振る舞いに嘆息し、大いに感動を覚える/ヴィーヴル:その姿が一瞬、巨大な龍に見える/ルーガルー:目を閉じて、故郷たる自然に思いを馳せる/アルラウネ:己に咲く花を摘み、誰かに手渡す(瞬時に再生)/フリッガ:誰かに、狂気の如き恋心を抱き始める -rand:3/6,6/6 -============================ -input: -HRT -output: -Dracurouge : 異端の反応表(41) > 野伏:露骨に、騎士から距離をとる/流浪:呆れた様子でため息をつく/密使:周りを値踏みする目で見る/魔女:誰もいないところに話しかける/剣士:騎士の礼儀作法を嘲笑い、茶化す/検体:肉体が異形化しようとするように、波打つ -rand:4/6,1/6 -============================ -input: -HRT -output: -Dracurouge : 異端の反応表(66) > 野伏:己の土地について語る/流浪:他者に異郷の珍しい品を渡す/密使:他者に積極的に話しかける/魔女:手の中に青白い炎を具現化する/剣士:かつての戦いや冒険について語る/検体:誰かに、己の苦しみからの助けを求める -rand:6/6,6/6 -============================ -input: -HRTLS -output: -Dracurouge : 異端の反応表(11) > 異端卿:床を睨み意識を何とか保つ -rand:1/6,1/6 -============================ -input: -HRTLS -output: -Dracurouge : 異端の反応表(36) > 異端卿:恐ろしい目で他者を見る -rand:3/6,6/6 -============================ -input: -HRTLS -output: -Dracurouge : 異端の反応表(41) > 密使:周りを値踏みする目で見る -rand:4/6,1/6 -============================ -input: -HRTLS -output: -Dracurouge : 異端の反応表(66) > 密使:他者に積極的に話しかける -rand:6/6,6/6 -============================ -input: -HRTVW -output: -Dracurouge : 異端の反応表(11) > ヴルコラク:己の頭をかきむしる -rand:1/6,1/6 -============================ -input: -HRTVW -output: -Dracurouge : 異端の反応表(36) > ヴルコラク:決意した顔で、正面を見る -rand:3/6,6/6 -============================ -input: -HRTVW -output: -Dracurouge : 異端の反応表(41) > 野伏:露骨に、騎士から距離をとる -rand:4/6,1/6 -============================ -input: -HRTVW -output: -Dracurouge : 異端の反応表(66) > 野伏:己の土地について語る -rand:6/6,6/6 -============================ -input: -HRTNN -output: -Dracurouge : 異端の反応表(11) > ナハツェーラ:生きたものをじっと見つめる -rand:1/6,1/6 -============================ -input: -HRTNN -output: -Dracurouge : 異端の反応表(36) > ナハツェーラ:手の中に髑髏を具現化する -rand:3/6,6/6 -============================ -input: -HRTNN -output: -Dracurouge : 異端の反応表(41) > 流浪:呆れた様子でため息をつく -rand:4/6,1/6 -============================ -input: -HRTNN -output: -Dracurouge : 異端の反応表(66) > 流浪:他者に異郷の珍しい品を渡す -rand:6/6,6/6 -============================ -input: -HRTKS -output: -Dracurouge : 異端の反応表(11) > カルンシュタイン:姿が霧に包まれぼやける -rand:1/6,1/6 -============================ -input: -HRTKS -output: -Dracurouge : 異端の反応表(36) > カルンシュタイン:豪奢な衣装を具現化してまとう -rand:3/6,6/6 -============================ -input: -HRTKS -output: -Dracurouge : 異端の反応表(41) > 密使:周りを値踏みする目で見る -rand:4/6,1/6 -============================ -input: -HRTKS -output: -Dracurouge : 異端の反応表(66) > 密使:他者に積極的に話しかける -rand:6/6,6/6 -============================ -input: -HRTGH -output: -Dracurouge : 異端の反応表(11) > グリマルキン:その場で居眠りする -rand:1/6,1/6 -============================ -input: -HRTGH -output: -Dracurouge : 異端の反応表(41) > 魔女:誰もいないところに話しかける -rand:4/6,1/6 -============================ -input: -HRTGH -output: -Dracurouge : 異端の反応表(66) > 魔女:手の中に青白い炎を具現化する -rand:6/6,6/6 -============================ -input: -HRTSN -output: -Dracurouge : 異端の反応表(11) > ストリガ:翼をきつく閉じて怯える -rand:1/6,1/6 -============================ -input: -HRTSN -output: -Dracurouge : 異端の反応表(36) > ストリガ:周囲に無数の小鳥が集まる -rand:3/6,6/6 -============================ -input: -HRTSN -output: -Dracurouge : 異端の反応表(41) > 流浪:呆れた様子でため息をつく -rand:4/6,1/6 -============================ -input: -HRTSN -output: -Dracurouge : 異端の反応表(66) > 流浪:他者に異郷の珍しい品を渡す -rand:6/6,6/6 -============================ -input: -HRTMH -output: -Dracurouge : 異端の反応表(11) > メリュジーヌ:ぼんやりと遠くを眺める -rand:1/6,1/6 -============================ -input: -HRTMH -output: -Dracurouge : 異端の反応表(36) > メリュジーヌ:他者に下半身を絡め抱きしめる -rand:3/6,6/6 -============================ -input: -HRTMH -output: -Dracurouge : 異端の反応表(41) > 魔女:誰もいないところに話しかける -rand:4/6,1/6 -============================ -input: -HRTMH -output: -Dracurouge : 異端の反応表(66) > 魔女:手の中に青白い炎を具現化する -rand:6/6,6/6 -============================ -input: -HRTFW -output: -Dracurouge : 異端の反応表(11) > フォーン:より退廃的な衣装をまとう -rand:1/6,1/6 -============================ -input: -HRTFW -output: -Dracurouge : 異端の反応表(36) > フォーン:他者を口説き始める -rand:3/6,6/6 -============================ -input: -HRTFW -output: -Dracurouge : 異端の反応表(41) > 野伏:露骨に、騎士から距離をとる -rand:4/6,1/6 -============================ -input: -HRTFW -output: -Dracurouge : 異端の反応表(66) > 野伏:己の土地について語る -rand:6/6,6/6 -============================ -input: -HRTEF -output: -Dracurouge : 異端の反応表(11) > エナメルム:人形の虚ろな表情からは何もわからない -rand:1/6,1/6 -============================ -input: -HRTEF -output: -Dracurouge : 異端の反応表(36) > エナメルム:断片的に、かつての魂の記憶が蘇る -rand:3/6,6/6 -============================ -input: -HRTEF -output: -Dracurouge : 異端の反応表(41) > 剣士:騎士の礼儀作法を嘲笑い、茶化す -rand:4/6,1/6 -============================ -input: -HRTEF -output: -Dracurouge : 異端の反応表(66) > 剣士:かつての戦いや冒険について語る -rand:6/6,6/6 -============================ -input: -HRTHX -output: -Dracurouge : 異端の反応表(11) > ホムンクルス:苦しそうに咳き込みながら膝をつく -rand:1/6,1/6 -============================ -input: -HRTHX -output: -Dracurouge : 異端の反応表(36) > ホムンクルス:ほんのかすかな笑顔が浮かぶ -rand:3/6,6/6 -============================ -input: -HRTHX -output: -Dracurouge : 異端の反応表(41) > 検体:肉体が異形化しようとするように、波打つ -rand:4/6,1/6 -============================ -input: -HRTHX -output: -Dracurouge : 異端の反応表(66) > 検体:誰かに、己の苦しみからの助けを求める -rand:6/6,6/6 -============================ -input: -HRTS2X -output: -Dracurouge : 異端の反応表(11) > サングィナリエ:怒りや欲望で、顔が怪物のように醜くゆがむ -rand:1/6,1/6 -============================ -input: -HRTS2X -output: -Dracurouge : 異端の反応表(36) > サングィナリエ:余裕のある不敵な笑みを浮かべる -rand:3/6,6/6 -============================ -input: -HRTAX -output: -Dracurouge : 異端の反応表(11) > アールヴ:平然と場の空気を無視した発言をする -rand:1/6,1/6 -============================ -input: -HRTAX -output: -Dracurouge : 異端の反応表(36) > アールヴ:誰かの振る舞いに嘆息し、大いに感動を覚える -rand:3/6,6/6 -============================ -input: -HRTV2X -output: -Dracurouge : 異端の反応表(11) > ヴィーヴル:周囲の者は、圧迫感と居心地の悪さを感じる -rand:1/6,1/6 -============================ -input: -HRTV2X -output: -Dracurouge : 異端の反応表(36) > ヴィーヴル:その姿が一瞬、巨大な龍に見える -rand:3/6,6/6 -============================ -input: -HRTL2X -output: -Dracurouge : 異端の反応表(11) > ルーガルー:巨大な狼の姿となって、警戒も露にうなる -rand:1/6,1/6 -============================ -input: -HRTL2X -output: -Dracurouge : 異端の反応表(36) > ルーガルー:目を閉じて、故郷たる自然に思いを馳せる -rand:3/6,6/6 -============================ -input: -HRTA2X -output: -Dracurouge : 異端の反応表(11) > アルラウネ:不満を漏らしたり、軽い我儘を言ったりする -rand:1/6,1/6 -============================ -input: -HRTA2X -output: -Dracurouge : 異端の反応表(36) > アルラウネ:己に咲く花を摘み、誰かに手渡す(瞬時に再生) -rand:3/6,6/6 -============================ -input: -HRTF2X -output: -Dracurouge : 異端の反応表(11) > フリッガ:その影が巨大な蜘蛛となって、蠢く -rand:1/6,1/6 -============================ -input: -HRTF2X -output: -Dracurouge : 異端の反応表(36) > フリッガ:誰かに、狂気の如き恋心を抱き始める -rand:3/6,6/6 -============================ -input: -CT3 -output: -Dracurouge : 2D6[1,1]-3 > 堕落表(-1) > あなたは完全に堕落した。この時点であなたは[壁の華]となり、人狼、黒山羊、夜獣卿のいずれかとなる。その[幕]の終了後にセッションから退場する。247ページの「消滅・完全なる堕落」も参照すること。 -rand:1/6,1/6 -============================ -input: -CT3 -output: -Dracurouge : 2D6[1,2]-3 > 堕落表(0) > あなたは完全に堕落した。この時点であなたは[壁の華]となり、人狼、黒山羊、夜獣卿のいずれかとなる。その[幕]の終了後にセッションから退場する。247ページの「消滅・完全なる堕落」も参照すること。 -rand:1/6,2/6 -============================ -input: -CT3 -output: -Dracurouge : 2D6[3,1]-3 > 堕落表(1) > あなたの肉体は精神にふさわしい変異を起こす……。「堕落の兆し表」を2回振って特徴を得る。このセッション終了後、【道】を「夜獣」にすること。(既に「夜獣」なら【道】は変わらない) -rand:3/6,1/6 -============================ -input: -CT3 -output: -Dracurouge : 2D6[2,3]-3 > 堕落表(2) > あなたの肉体は精神にふさわしい変異を起こす……。「堕落の兆し表」を1回振って特徴を得る。このセッション終了後、【道】を「夜獣」にすること。(既に「夜獣」なら【道】は変わらない) -rand:2/6,3/6 -============================ -input: -CT3 -output: -Dracurouge : 2D6[6,5]-3 > 堕落表(8) > 荒ぶる心を鎮める……幸いにも何も起きなかった。 -rand:6/6,5/6 -============================ -input: -CT3 -output: -Dracurouge : 2D6[6,6]-3 > 堕落表(9) > あなたは荒れ狂う感情を抑え、己を律した! 【渇き】が1減少する! -rand:6/6,6/6 -============================ -input: -CT1 -output: -Dracurouge : 2D6[6,6]-1 > 堕落表(11) > あなたは荒れ狂う感情を抑え、己を律した! 【渇き】が1減少する! -rand:6/6,6/6 -============================ -input: -CS -output: -Dracurouge : 堕落の兆し表(2) > あなたは完全に堕落した。この時点であなたは[壁の華]となり、人狼、黒山羊、夜獣卿のいずれかとなる。その[幕]の終了後にセッションから退場する。247ページの「消滅・完全なる堕落」も参照すること。 -rand:1/6,1/6 -============================ -input: -CS -output: -Dracurouge : 堕落の兆し表(11) > 突き出した犬歯 -rand:6/6,5/6 -============================ -input: -CS -output: -Dracurouge : 堕落の兆し表(12) > 目に見える変化はない…… -rand:6/6,6/6 -============================ -input: -ECS -output: -Dracurouge : 拡張・堕落の兆し表(11) > 完全なる堕落:あなたは〔壁の華〕となり、いずれかの堕落者となる。その〔幕〕の終了後にセッションから退場する。(基本247ページ参照) -rand:1/6,1/6 -============================ -input: -ECS -output: -Dracurouge : 拡張・堕落の兆し表(65) > 月光欲:屋根があると不快感を感じる。なるべく月光を浴びられる場所でいたい。宮廷でも庭園やバルコニーを好むだろう。 -rand:6/6,5/6 -============================ -input: -ECS -output: -Dracurouge : 拡張・堕落の兆し表(66) > 幸運:自覚するような兆しはないようだが……己を戒めねばなるまい。貴卿は今や堕落の瀬戸際にいると自覚せよ。 -rand:6/6,6/6 -============================ -input: -D66 -output: -Dracurouge : (D66) > 61 -rand:6/6,1/6 -============================ -input: -BT -output: -Dracurouge : 絆内容決定表:ルージュ/ノワール(6) > 主(Obey) 相手を主と仰ぎ、忠誠を誓う。/仇(Vendetta) 相手を怨み、仇と狙う。 -rand:6/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(11) > 古き罪人:地獄が生まれるより前。誰もが忘れた牢に閉じ込められていた罪人……それが貴卿だ。幾百年を経て、ついに牢は破られた。 > 騎士歴:1D66+1300 > (66+1300) > 騎士歴:1366年 -rand:1/6,1/6,6/6,6/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(12) > 地獄漏れ:貴卿は不徳と堕落を重ね、地獄へと幽閉された……はずだ。しかし、気づけば外におり、数百年が過ぎていた……。 > 騎士歴:1D666 > (666) > 騎士歴:666年 -rand:1/6,2/6,6/6,6/6,6/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(13) > 禁忌の探求:とうに死した一人の民……あるいは騎士を、貴卿は蘇らさんとしている。外法の類だ。わかっていても……諦められぬのだ。 > 騎士歴:1D666 > (631) > 騎士歴:631年 -rand:1/6,3/6,6/6,3/6,1/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(14) > 堕落せし身:一度は堕落し、恥と穢れにまみれた。心ある友らが救い出してくれたが、汚名は今も付きまとう。堕落の兆しが全て消えようとも。 > 騎士歴:1D666 > (165) > 騎士歴:165年 -rand:1/6,4/6,1/6,6/6,5/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(15) > 臆病の失態:太陽竜の現れた時、貴卿は恐怖から討伐の招集より逃げ出した。この恥は、長き時を経た今も貴卿の心を苛んでいる。 > 騎士歴:1D66+1250 > (12+1250) > 騎士歴:1262年 -rand:1/6,5/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(16) > 無限の復讐:貴卿はこの世の理不尽に泣かされた。ゆえに終わらぬ復讐を始めたのだ。この世界全てを、変えてしまうために……。 > 騎士歴:1D666 > (123) > 騎士歴:123年 -rand:1/6,6/6,1/6,2/6,3/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(21) > 悪しき発端:かつて貴卿は、よからぬ考えに取りつかれていた。かつての活動は、今も悪しき後継者を生んでいる。止めねばなるまい。 > 騎士歴:3D6×100 > (6×100) > 騎士歴:600年 -rand:2/6,1/6,1/6,2/6,3/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(22) > 妖精の輪:妖精に誘われ、一夜の宴を楽しんだ。そして今……かつてより、幾百年が過ぎている。貴卿を知る騎士は、まずいない。 > 騎士歴:2D6×100 > (3×100) > 騎士歴:300年 -rand:2/6,2/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(23) > 破滅の疫病:あの頃、疫病はノスフェラス以外も侵した。貴卿の故郷もまた……民を見殺しにした貴卿に、彼の冥王を責められようか。 > 騎士歴:1D66+1210 > (12+1210) > 騎士歴:1222年 -rand:2/6,3/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(24) > 主の堕落:貴卿を叙勲した主が堕落した。主を誇って来た貴卿は、己の中から何か大切なものが……すっぽりと抜けたように思えた。 > 騎士歴:1D666 > (123) > 騎士歴:123年 -rand:2/6,4/6,1/6,2/6,3/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(25) > 異端の友:かつて、異端と騎士の距離は近かった。貴卿には異端の友がおり、距離を取りつつもお互いに助け合って来たのだが……。 > 騎士歴:2D6×100 > (3×100) > 騎士歴:300年 -rand:2/6,5/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(26) > 時を超えて:何があったのかわからない。しかし、気づけば遥か未来の大地に立っていた。幾百年もの空白が、今も貴卿を苛んでいる。 > 騎士歴:3D6×100 > (6×100) > 騎士歴:600年 -rand:2/6,6/6,1/6,2/6,3/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(31) > 太陽竜襲撃:彼の太陽竜による襲撃を、貴卿はまともに受けた。守るべき領地は失われ、討つべき太陽竜も、己の手では討てなかったのだ。 > 騎士歴:1D66+1300 > (12+1300) > 騎士歴:1312年 -rand:3/6,1/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(32) > 数多の堕落:知る者の多くが堕落していった。かつての友で今も残るはわずか。決して堕落すまいと、固い決意をしているが……。 > 騎士歴:2D6×100 > (3×100) > 騎士歴:300年 -rand:3/6,2/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(33) > 最後の命令:太陽竜討伐の折、ある将軍が貴卿を庇い、帰らぬ人となった。最後の命令は「生きろ」――以来、貴卿は命令を守り続けている。 > 騎士歴:1D6+1250 > (1+1250) > 騎士歴:1251年 -rand:3/6,3/6,1/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(34) > 今は後日談:貴卿は復讐を成し遂げた。そして、為すべきことを失った。かろうじて堕落は避けているが、新たな生きる甲斐を見つけねば。 > 騎士歴:1D666 > (123) > 騎士歴:123年 -rand:3/6,4/6,1/6,2/6,3/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(35) > 守るべき地:ある領主が、堕落した。惨劇の後、もはやそこには誰も住まない。だが、貴卿が彼の人と過ごした思い出はある。守らねば。 > 騎士歴:1D666 > (123) > 騎士歴:123年 -rand:3/6,5/6,1/6,2/6,3/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(36) > 開拓者:民の心を知りたくて。貴卿は一人荒野を拓き耕した。やがて村ができ、貴卿は領主となった。彼の地は貴卿の第二の故郷だ。 > 騎士歴:1D666 > (123) > 騎士歴:123年 -rand:3/6,6/6,1/6,2/6,3/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(41) > 己だけが:太陽竜討伐の折、目の前でゲイズヴァルト家が滅んだ。貴卿にわずかでも勇気があれば、彼の家は残っていたのでは……。 > 騎士歴:1D66+1250 > (12+1250) > 騎士歴:1262年 -rand:4/6,1/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(42) > 信仰の日々:僧正として拝殿にこもり、大いなるドラクルへの感謝を捧げてきた。今も、紅き月を見上げる時、貴卿の内には感謝が満ちる。 > 騎士歴:2D6×100 > (3×100) > 騎士歴:300年 -rand:4/6,2/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(43) > 寵童の日々:叙勲の主によって、屋敷の中で大事に大事に扱われてきた。騎士として不本意でもあったが、人として彼の方を愛している。 > 騎士歴:1D666 > (123) > 騎士歴:123年 -rand:4/6,3/6,1/6,2/6,3/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(44) > 傍観の日々:民の移り変わる様をじっと眺めている。貴卿は目まぐるしく彼らを、隠者として眺めているのが好きだった。 > 騎士歴:3D6×100 > (6×100) > 騎士歴:600年 -rand:4/6,4/6,1/6,2/6,3/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(45) > 遍歴の日々:遍歴の騎士として諸領を巡り、数多の騎士、数多の冒険、数多の恋の中で過ごしてきた。今も色あせぬ美しき思い出だ。 > 騎士歴:2D6×100 > (3×100) > 騎士歴:300年 -rand:4/6,5/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(46) > 忠義の日々:仕えるべき御方を見つけ、貴卿は全てを捧げて彼の人を守ってきた。その忠誠は未だ損なわれてはいない……。 > 騎士歴:2D6×100 > (3×100) > 騎士歴:300年 -rand:4/6,6/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(51) > 民の血統:叙勲され、騎士になったが……民の頃を捨てられなかった。貴卿はずっと、ずっと、己の血縁や友の子孫を見守っている。 > 騎士歴:1D6×150 > (1×150) > 騎士歴:150年 -rand:5/6,1/6,1/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(52) > 長い眠り:生き疲れてか、傷を負ってか。貴卿は長い長い眠りについた。そうして近年ようやく目を覚ましたばかりである。 > 騎士歴:2D6×100 > (3×100) > 騎士歴:300年 -rand:5/6,2/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(53) > 冥王と後悔:かつてノスフェラスにて地位を得ていた。しかしあの災禍の中で貴卿は逃げたのだ。冥王と化す彼女を見捨てて……。 > 騎士歴:1D66+1250 > (12+1250) > 騎士歴:1262年 -rand:5/6,3/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(54) > 勃興の協力者:貴卿はローゼンブルク勃興のため、グランツ公へと協力してきた。彼の裏も表もよく知っているし、彼の地で勢力も築いている。 > 騎士歴:1D66+400 > (12+400) > 騎士歴:412年 -rand:5/6,4/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(55) > ノスフェラス:貴卿はノスフェラス末期、疫病の中で叙勲を受けて救われたる騎士。冥王とその一党の風評を何より苦々しく見てきた者だ。 > 騎士歴:1212 > (1212) > 騎士歴:1212年 -rand:5/6,5/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(56) > 財産:長い年月の中、貴卿は多くの品や建物を具現化し、永続化した。貴卿の周囲は己の生み出したもので溢れている。 > 騎士歴:2D6×100 > (3×100) > 騎士歴:300年 -rand:5/6,6/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(61) > 妖精の国:騎士を引退し、歴代アヴァローム公の如く、妖精らの国で楽しく暮らしていた。今宵、騎士として世に出たは、気まぐれに過ぎぬ。 > 騎士歴:2D6×100 > (3×100) > 騎士歴:300年 -rand:6/6,1/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(62) > 数多の叙勲:数多の戦いを経て来た貴卿は、数え切れぬ武勲を立てて来た。一つ一つを数えるのも、もはや馬鹿らしいほどだ。 > 騎士歴:1D66×10 > (12×10) > 騎士歴:120年 -rand:6/6,2/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(63) > 血統の重鎮:血統とは、騎士の最も大きな枠組みであり派閥だ。そして貴卿は、血統内において大きな発言力を持つ重鎮なのだ。 > 騎士歴:3D6×100 > (6×100) > 騎士歴:600年 -rand:6/6,3/6,1/6,2/6,3/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(64) > 始祖の懇意:始祖とて心寂しい時はある。貴卿はある始祖と懇意にしていた。彼女にとって、あなたは数少ない心許せる存在なのだ。 > 騎士歴:3D6×100 > (6×100) > 騎士歴:600年 -rand:6/6,4/6,1/6,2/6,3/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(65) > 太陽竜討伐:彼の恐るべき太陽竜討伐に参加し、華々しき活躍を飾った。その一方で貴卿は、多くの犠牲者らも目にしている。 > 騎士歴:1D66+1300 > (12+1300) > 騎士歴:1312年 -rand:6/6,5/6,1/6,2/6 -============================ -input: -EP -output: -Dracurouge : 遥か過去表(66) > 最初の騎士:貴卿こそは、真祖百年の喪が明けし時、始祖その人より最初期に叙勲されたる騎士。常夜全ての歴史の生き証人だ。 > 騎士歴:1D66+1833 > (11+1833) > 騎士歴:1844年 -rand:6/6,6/6,1/6,1/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(11) > 堕落の血:貴卿は堕落者に襲われ、その結果……騎士となった。貴卿に流れるは堕落した血なのだ。 > 叙勲年齢:7+1D6×1D6 > (7+6×6) > 叙勲年齢:43年 -rand:1/6,1/6,6/6,6/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(12) > 忌まわしの血:乱心した主は堕落の間際、公爵の許しも得ず貴卿を叙勲した。残された貴卿には……疑いの目が向けられた。 > 叙勲年齢:7+1D6×1D6 > (7+6×6) > 叙勲年齢:43年 -rand:1/6,2/6,6/6,6/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(13) > 悪しき取引:貴卿は主と悪しき取引の後、叙勲を受けた。主は不徳の身、今や貴卿の立場は主の奴隷も同然である。 > 叙勲年齢:7+1D6×1D6 > (7+6×3) > 叙勲年齢:25年 -rand:1/6,3/6,6/6,3/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(14) > 裏切の予言:叙勲の折、賢者は貴卿に予言をした……いずれ信じた者に裏切られる日が来るであろうと。 > 叙勲年齢:7+1D6×1D6 > (7+1×6) > 叙勲年齢:13年 -rand:1/6,4/6,1/6,6/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(15) > 謀略:貴卿は騎士にあるまじき行いによって他を蹴落とし、叙勲を得た。その秘密を知る者はいない。今のところは。 > 叙勲年齢:7+1D6×1D6 > (7+1×2) > 叙勲年齢:9年 -rand:1/6,5/6,1/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(16) > 不吉な予言:叙勲の折、賢者は貴卿に予言をした……大切な人を自らの手で殺めるだろうと。 > 叙勲年齢:7+1D6×1D6 > (7+5×2) > 叙勲年齢:17年 -rand:1/6,6/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(21) > 堕落の誘い:その叙勲の折、貴卿の脳裏に堕落した己が現れた。そして、堕落すべしと囁きかけて来た。今も、時折。 > 叙勲年齢:7+1D6×1D6 > (7+1×2) > 叙勲年齢:9年 -rand:2/6,1/6,1/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(22) > 不相応:他の従者はみんな優れた才能を持っていた。貴卿には何もない……なのに主は、なぜか貴卿を選んだ。 > 叙勲年齢:10+2D6 > (10+7) > 叙勲年齢:17年 -rand:2/6,2/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(23) > 矮小なる主:叙勲と共にものの見方は変わる。叙勲後、主がくだらない存在と見えた。貴卿は主のもとを離れた。 > 叙勲年齢:7+1D6×1D6 > (7+5×2) > 叙勲年齢:17年 -rand:2/6,3/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(24) > 家庭あれど:貴卿は人として家庭を築いていた。しかし、主より叙勲を受けられるならばと……貴卿は家庭を捨てたのだ。 > 叙勲年齢:14+1D6×1D6 > (14+5×2) > 叙勲年齢:24年 -rand:2/6,4/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(25) > かき口説き:貴卿は主を甘き言葉で口説き、心蕩かして叙勲を与えさせた。精神面において主はむしろ……貴卿なのだ。 > 叙勲年齢:7+1D6×1D6 > (7+5×2) > 叙勲年齢:17年 -rand:2/6,5/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(26) > 不安:騎士とは何か。叙勲とは何か。騎士そのものとなった今も、貴卿は言い知れぬ不安を感じている……。 > 叙勲年齢:10+1D6×1D6 > (10+5×2) > 叙勲年齢:20年 -rand:2/6,6/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(31) > 忘却:誰が貴卿を騎士にしたのか。正直わからない……気が付いたら騎士になっていたのだ。 > 叙勲年齢:7+1D6×1D6 > (7+5×2) > 叙勲年齢:17年 -rand:3/6,1/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(32) > ある夜の寝室:それは衝動的な行いだったのだろう。主はある夜、突如訪れ……あなたに口づけをし、叙勲を施したのだ。 > 叙勲年齢:10+2D6 > (10+7) > 叙勲年齢:17年 -rand:3/6,2/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(33) > 生存者:堕落者、あるいは太陽の欠片の襲撃を受け、主の従者は全滅。貴卿のみが生き延び……叙勲を受けた。 > 叙勲年齢:7+1D6×1D6 > (7+1×6) > 叙勲年齢:13年 -rand:3/6,3/6,1/6,6/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(34) > 献身の誓い:叙勲の折、貴卿は民を守り続けると誓った。貴卿は民の盾にして、数多の敵を退ける矛である。 > 叙勲年齢:14+1D6×1D6 > (14+5×2) > 叙勲年齢:24年 -rand:3/6,4/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(35) > 罪許されて:貴卿は罪を犯した。罪人として処罰を受ける中、主は貴卿を認め叙勲すら与えてくれた。報わねばなるまい。 > 叙勲年齢:10+2D6 > (10+7) > 叙勲年齢:17年 -rand:3/6,5/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(36) > 守秘の誓い:叙勲の折、貴卿は主から秘密を知らされた。そしてそれを決して他に漏らさぬ誓いを立てたのだ。 > 叙勲年齢:7+1D6×1D6 > (7+5×2) > 叙勲年齢:17年 -rand:3/6,6/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(41) > 勝者は一人:その日、主の従者数多において武術の試合が行われた。貴卿は最後に勝ち残り、ついに叙勲を得たのだ。 > 叙勲年齢:14+1D6×1D6 > (14+5×2) > 叙勲年齢:24年 -rand:4/6,1/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(42) > 磨かれし技:今まで一つの技を磨き、極め続けた。その愚直に磨かれた技が評価され、貴卿は叙勲を受けたのだ。 > 叙勲年齢:18+1D6×1D6 > (18+5×2) > 叙勲年齢:28年 -rand:4/6,2/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(43) > 武勲の予言:叙勲の折、賢者は貴卿に予言をした……いずれ大乱が起こる中にて目覚ましき武勲を上げんと。 > 叙勲年齢:10+2D6 > (10+7) > 叙勲年齢:17年 -rand:4/6,3/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(44) > 癒えぬ傷痕:貴卿の体には消えぬ傷痕が刻まれている。しかし、傷を受けてまで主を守った功こそ、貴卿を騎士にした。 > 叙勲年齢:7+1D6×1D6 > (7+5×2) > 叙勲年齢:17年 -rand:4/6,4/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(45) > 隆盛の予言:叙勲の折、賢者は貴卿に予言をした……その名は財と誉れに包まれ安らかにあらんと。 > 叙勲年齢:7+1D6×1D6 > (7+5×2) > 叙勲年齢:17年 -rand:4/6,5/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(46) > 胆力:貴卿は主と共に堕落者に襲われ……一歩も退かずあれば、その胆力を認められ叙勲を受けた。 > 叙勲年齢:7+1D6×1D6 > (7+5×2) > 叙勲年齢:17年 -rand:4/6,6/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(51) > 友情の予言:叙勲の折、賢者は貴卿に予言をした……いずれ素晴らしき友を得んと。 > 叙勲年齢:7+1D6×1D6 > (7+5×2) > 叙勲年齢:17年 -rand:5/6,1/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(52) > 惜しまれり:長く従者として生きる中、貴卿は老いた。しかし、老いてなお、主は貴卿を必要とした。それゆえの叙勲である。 > 叙勲年齢:30+1D6×1D6 > (30+5×2) > 叙勲年齢:40年 -rand:5/6,2/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(53) > 守護の誓い:叙勲の折、ある人を、町を、国を守ると誓った。それを背に敵に立ち向かう限り、あなたは逃げ出したりしない。 > 叙勲年齢:14+1D6×1D6 > (14+5×2) > 叙勲年齢:24年 -rand:5/6,3/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(54) > 返しきれぬ恩:あの日、貴卿は死んだ……。しかし貴卿は、主の叙勲により蘇った。主は罰を受けたが、それでも笑っていた。 > 叙勲年齢:7+1D6×1D6 > (7+5×2) > 叙勲年齢:17年 -rand:5/6,4/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(55) > 信仰の誓い:叙勲の折、貴卿はドラクルへの篤き信仰を誓った。紅き月の下、貴卿の勝利はドラクルに捧げられよう。 > 叙勲年齢:14+1D6×1D6 > (14+5×2) > 叙勲年齢:24年 -rand:5/6,5/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(56) > 終わらじの恋:騎士と互いに恋に落ちた。甘く狂おしい時間、移ろいゆく時。貴卿は恋人の手で叙勲を受け、騎士となった。 > 叙勲年齢:10+2D6 > (10+7) > 叙勲年齢:17年 -rand:5/6,6/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(61) > 英雄の予言:叙勲の折、賢者は貴卿に予言をした……恐るべき敵を打ち倒し、その名は諸国に響くであろうと。 > 叙勲年齢:14+1D6×1D6 > (14+5×2) > 叙勲年齢:24年 -rand:6/6,1/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(62) > 忠義の誓い:叙勲の折、ある人に深き忠誠を誓った。たとえ世界を敵に回そうと、貴卿が裏切ることなどありはしない。 > 叙勲年齢:14+1D6×1D6 > (14+5×2) > 叙勲年齢:24年 -rand:6/6,2/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(63) > 生ける芸術:叙勲により、貴卿の美貌はさらなる高みに上った。もはや貴卿を見て心奪われぬ者などいない。 > 叙勲年齢:7+4D6 > (7+14) > 叙勲年齢:21年 -rand:6/6,3/6,5/6,2/6,3/6,4/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(64) > 思わぬ武勲:貴卿は従者の身ながら、思わぬ武勲を立てた。その功は叙勲を受けるに十分のものである。 > 叙勲年齢:14+1D6×1D6 > (14+5×2) > 叙勲年齢:24年 -rand:6/6,4/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(65) > 当主の寵愛:貴卿は、公爵家当主その人の寵愛を得た。宮廷において、重き地位を得られるであろう。 > 叙勲年齢:7+1D6×1D6 > (7+5×2) > 叙勲年齢:17年 -rand:6/6,5/6,5/6,2/6 -============================ -input: -CO -output: -Dracurouge : 叙勲表(66) > 始祖の寵愛:貴卿は、始祖その人の寵愛を得た。真祖ドラクルに最も近しい、誇るべき身の一人となったのだ。 > 叙勲年齢:7+1D6×1D6 > (7+1×1) > 叙勲年齢:8年 -rand:6/6,6/6,1/6,1/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(11) > 滅亡:貴卿の領地は敵に滅ぼされた。守るべき民は絶え、名誉は失われた。彼の者らを許すわけにはいかない。 > 騎士歴:2D6×10 > (12×10) > 騎士歴:120年 -rand:1/6,1/6,6/6,6/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(12) > 冤罪:貴卿は身に覚えのない罪を背負っている。何者かの陰謀が貴卿を絡めとり、罪を負わせたのだ。 > 騎士歴:1D6×1D6 > (6×6) > 騎士歴:36年 -rand:1/6,2/6,6/6,6/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(13) > 呪い:かつて貴卿は、妖精から呪いを受けた。呪いはゆっくりと貴卿を蝕み、その身に災いを招いている。 > 騎士歴:1D6×1D6 > (6×3) > 騎士歴:18年 -rand:1/6,3/6,6/6,3/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(14) > 血の昂ぶり:戦った後は体が火照り昂ぶり、どうしようもなく疼く。堕落の日は遠くない……貴卿の中には確信がある。 > 騎士歴:2D6×5 > (7×5) > 騎士歴:35年 -rand:1/6,4/6,1/6,6/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(15) > 報復の序章:かつて貴卿の名誉は友に裏切られ、奪われた。今や新たな道を歩んでいるが、復讐は今も忘れていない。 > 騎士歴:2D6×10 > (3×10) > 騎士歴:30年 -rand:1/6,5/6,1/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(16) > 仇敵:忘れてはならぬ敵がいる。やつの胸を貫き、首を落とすまで、貴卿に安息の日は来ない。来ないのだ。 > 騎士歴:1D6×1D6 > (5×2) > 騎士歴:10年 -rand:1/6,6/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(21) > 堕落の共鳴:貴卿の魂は堕ちかけているのだろうか。堕落した者たちがどうしようもなく近しく思えてしまうのだ。 > 騎士歴:2D6×10 > (3×10) > 騎士歴:30年 -rand:2/6,1/6,1/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(22) > 不徳の日々:かつての貴卿は品行方正とは言い難い人物だった。心入れかえた貴卿だが、まだまだ世間の目は厳しい。 > 騎士歴:1D6×5 > (5×5) > 騎士歴:25年 -rand:2/6,2/6,5/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(23) > 主の堕落:貴卿を叙勲した主が堕落した。主を誇って来た貴卿は、心ない他の騎士から、侮蔑や疑惑を受けがちだ。 > 騎士歴:2D6×10 > (7×10) > 騎士歴:70年 -rand:2/6,3/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(24) > 冥王の虜囚:冥王の侵攻の中。貴卿は敗れ、一時なれど虜囚の辱めを受けた。奴らを許すわけにはいかない。 > 騎士歴:2D6×3 > (7×3) > 騎士歴:21年 -rand:2/6,4/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(25) > 近しき堕落:貴卿の友や恋人が堕落した。それは決して拭えず、忘れられない。常に心に幽鬼の如く頭をもたげるのだ。 > 騎士歴:1D6×1D6 > (5×2) > 騎士歴:10年 -rand:2/6,5/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(26) > 修羅:貴卿は戦い続けて来た。功を他に譲ってでも戦い、戦い、戦い続けて。戦うだけの存在となりつつある。 > 騎士歴:1D6×1D6 > (5×2) > 騎士歴:10年 -rand:2/6,6/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(31) > 空白:騎士となってから、思い出せない時期がある。その間に何があったのか、貴卿には何もわからない。 > 騎士歴:2D6×10 > (7×10) > 騎士歴:70年 -rand:3/6,1/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(32) > 追跡:堕落した友を捜している。彼の者が大切だからこそ、貴卿がケリをつけねばならないのだ。 > 騎士歴:2D6×10 > (7×10) > 騎士歴:70年 -rand:3/6,2/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(33) > 退屈:変わらぬ日常。甲斐なき日々。仲間の武勲を聞き、貴卿は自らも勲を立てんと立ち上がった。 > 騎士歴:2D6×20 > (7×20) > 騎士歴:140年 -rand:3/6,3/6,1/6,6/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(34) > 失恋:愛深きゆえに貴卿は愛を捨てた。……捨てきってはいないかもしれないが、捨てたと信じた。 > 騎士歴:2D6×10 > (7×10) > 騎士歴:70年 -rand:3/6,4/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(35) > 隠遁:戦いに虚しさを感じたのはいつからか。勇猛な騎士だったあなただが、今は静かに隠者として暮らしている。 > 騎士歴:2D6×20 > (7×20) > 騎士歴:140年 -rand:3/6,5/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(36) > 謎の失踪:貴卿の大切な人が突然、姿を消してしまった。攫われたのか、逃げたのか、それともまさか……。 > 騎士歴:1D6×1D6 > (5×2) > 騎士歴:10年 -rand:3/6,6/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(41) > 井の中の蛙:己こそ最高の騎士と思っていた貴卿だが……彼の騎士を見て全ては崩れた。まだまだ修練が足りぬ。 > 騎士歴:1D6×3 > (5×3) > 騎士歴:15年 -rand:4/6,1/6,5/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(42) > 賢者の予言:貴卿は予言に導かれている。貴卿は誰かと出会わねばならぬ。それは主君か友か恋人……あるいは敵か。 > 騎士歴:1D6×1D6 > (5×2) > 騎士歴:10年 -rand:4/6,2/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(43) > 浮名:多くの恋を振りまく貴卿の名は宮廷では有名だ。敵も味方も、きっと抱えきれぬほどにいることだろう。 > 騎士歴:1D6×5 > (5×5) > 騎士歴:25年 -rand:4/6,3/6,5/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(44) > 見届け人:民の移り変わる様をじっと眺めている。貴卿は目まぐるしく変わる彼らを眺めるのが好きなのだ。 > 騎士歴:2D6×10 > (7×10) > 騎士歴:70年 -rand:4/6,4/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(45) > 人捜し:貴卿はその心を動かした人を捜している。人間だ。人は脆く移ろいやすい……早く見つけねば。 > 騎士歴:1D6×1D6 > (5×2) > 騎士歴:10年 -rand:4/6,5/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(46) > 深い寵愛:貴卿は主より深い愛情を注がれ続けた。そのため叙勲は随分以前だが、騎士の活動は始めたばかりだ。 > 騎士歴:2D6×10 > (7×10) > 騎士歴:70年 -rand:4/6,6/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(51) > 血気盛ん:貴卿は多くの騎士と立ち合い、自らの技と力を磨きたい。腕のある騎士を見れば、挑まずにいられぬ。 > 騎士歴:2D6 > (7) > 騎士歴:7年 -rand:5/6,1/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(52) > 啓蒙:至高なる騎士と違い、世界は愚かで哀れな民で溢れている。騎士として彼らを導いてやらねばなるまい……。 > 騎士歴:1D6×1D6 > (5×2) > 騎士歴:10年 -rand:5/6,2/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(53) > 叙勲すべし:必要な人がいる。彼の人を叙勲せねばならぬ。貴卿はそのため、功に焦り始めている。 > 騎士歴:2D6 > (7) > 騎士歴:7年 -rand:5/6,3/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(54) > 憂国の士:貴卿は己が国の現状を憂う。宮廷の問題を正さねばならぬと、心に深く誓っている。 > 騎士歴:1D6×1D6 > (5×2) > 騎士歴:10年 -rand:5/6,4/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(55) > 叙勲与えり:功少なくともそれなりの古株として、貴卿は己の従者を叙勲し、騎士に取り立てた経験がある。 > 騎士歴:2D6×20 > (7×20) > 騎士歴:140年 -rand:5/6,5/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(56) > 堕落の虜囚:貴卿は一時、堕落者の虜囚となり、慰み者として日々を過ごしたことがある。屈辱であり汚名だ……。 > 騎士歴:2D6×10 > (7×10) > 騎士歴:70年 -rand:5/6,6/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(61) > 名勝負:貴卿は己の意志を貫くため決闘し、勝利した。その決闘は、近隣でも噂の名勝負とされている。 > 騎士歴:1D6×1D6 > (5×2) > 騎士歴:10年 -rand:6/6,1/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(62) > 長き眠り:貴卿はかつて太陽の欠片と戦い、体の多くを喪失して眠りについた……随分と長く寝ていたようだ。 > 騎士歴:2D6×50 > (7×50) > 騎士歴:350年 -rand:6/6,2/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(63) > 世界は広く:騎士となって世界の広さを知った。可能な限り世界を知りたい……貴卿は広き世界を見聞せんとしている。 > 騎士歴:2D6×10 > (7×10) > 騎士歴:70年 -rand:6/6,3/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(64) > 王器:叙勲以来、人をひれ伏させる圧倒的な魅力を得た。それはまさしく、支配者となるべく与えられた資質だ。 > 騎士歴:1D6×1D6 > (5×2) > 騎士歴:10年 -rand:6/6,4/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(65) > 高名:数多の決闘や馬上試合で実力を示してきた。あなたは実力ある騎士として名を馳せている。 > 騎士歴:2D6×5 > (7×5) > 騎士歴:35年 -rand:6/6,5/6,5/6,2/6 -============================ -input: -CA -output: -Dracurouge : 叙勲後表(66) > 伝説:貴卿は未だ偉業わずかなれど、その逸話は伝説の域。すでに吟遊詩人らの歌にさえ歌われている。 > 騎士歴:1D6×1D6 > (1×1) > 騎士歴:1年 -rand:6/6,6/6,1/6,1/6 -============================ -input: -ST -output: -Dracurouge : 原風景表(11) > 虐待:あの地獄のような日々で、貴卿がされてきたことを思えば……騎士となっても、人を見る目は暗い。 -rand:1/6,1/6 -============================ -input: -ST -output: -Dracurouge : 原風景表(66) > 運命の子:貴卿の生まれた折、旅の賢者が訪れた。貴卿はきっと伝説に残る騎士となるだろう。そう約束されているのだ。 -rand:6/6,6/6 -============================ -input: -PN -output: -Dracurouge : 受難表(11) > 地獄:騎士らによって、御身は一度は地獄に封じられた。何とか脱出できたのは、幸運以外のなにものでもあるまい。 -rand:1/6,1/6 -============================ -input: -PN -output: -Dracurouge : 受難表(66) > 井の中の蛙:己こそ最強と思っていた御身だが……一人の騎士を見て、全ては崩れた。まだまだ、世界は広い。 -rand:6/6,6/6 -============================ -input: -OS -output: -Dracurouge : 原罪表(11) > 虐待:あの地獄のような日々で、御身がされてきたことを思えば……誰も彼も、常夜国すべて等しく呪うしかない。 > 外見年齢:7+1D6×1D6 > (7+1×1) > 外見年齢:8年 -rand:1/6,1/6,1/6,1/6 -============================ -input: -OS -output: -Dracurouge : 原罪表(66) > 神童:御身は有り余る才を持って生まれた。騎士になるかと思われていたのだが……。 > 外見年齢:7+1D6×1D6 > (7+6×6) > 外見年齢:43年 -rand:6/6,6/6,6/6,6/6 -============================ -input: -RS -output: -Dracurouge : 近況表(11) > 悪夢:眠りにつくたび、受難の記憶が蘇る。御身の心は晴れず、忌まわしい悪夢がつきまとい続けているのだ。 > 活動年数:2D6×10 > (2×10) > 活動年数:20年 -rand:1/6,1/6,1/6,1/6 -============================ -input: -RS -output: -Dracurouge : 近況表(33) > 新米:御身は未だ、異端となったばかり。得た力に振り回され、受難にも懲りず(古き異端は選択できない)。 > 活動年数:1 > (1) > 活動年数:1年 -rand:3/6,3/6 -============================ -input: -RS -output: -Dracurouge : 近況表(66) > 伝説:御身は異端なれど、常夜国の歴史に少なからず関わってきた。吟遊詩人にも歌われる伝説の存在だ。 > 活動年数:3D6×50 > (18×50) > 活動年数:900年 -rand:6/6,6/6,6/6,6/6,6/6 -============================ -input: -PP -output: -Dracurouge : 平和な過去表(11) > 乱暴者:短気で、気性が荒く、ついつい手が出て乱暴を働いてしまう。故郷での評判はあまりよくない。今はどうだろう? > 外見年齢:8+2D6 > (8+2) > 外見年齢:10年 -rand:1/6,1/6,1/6,1/6 -============================ -input: -PP -output: -Dracurouge : 平和な過去表(33) > 好奇心:気を引くものがあれば、目を向ける。秘密とあれば暴かずにいられない。知らぬままでは、済ませられぬのだ。 > 外見年齢:9+2D6 > (9+6) > 外見年齢:15年 -rand:3/6,3/6,3/6,3/6 -============================ -input: -PP -output: -Dracurouge : 平和な過去表(66) > 血統を遺す身:伴侶を得て、子を為し、家庭を築いた。その血は、御身が民ならざる身となった今も脈絡と続いている。 > 外見年齢:12+4D6 > (12+24) > 外見年齢:36年 -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/Dracurouge_Korean.txt b/src/src_bcdice/test/data/Dracurouge_Korean.txt deleted file mode 100644 index c54713a4f..000000000 --- a/src/src_bcdice/test/data/Dracurouge_Korean.txt +++ /dev/null @@ -1,222 +0,0 @@ -input: -DR -output: -Dracurouge : (DR) > 4D6 > [ 3, 4, 5, 6 ] -rand:6/6,3/6,5/6,4/6 -============================ -input: -DR -output: -Dracurouge : (DR) > 4D6 > [ 3, 4, 6, 6, 10 ] -rand:6/6,3/6,6/6,4/6 -============================ -input: -DR -output: -Dracurouge : (DR) > 4D6 > [ 3, 6, 6, 6, 10 ] -rand:6/6,3/6,6/6,6/6 -============================ -input: -DR -output: -Dracurouge : (DR) > 4D6 > [ 1, 1, 3, 4, 10 ] -rand:1/6,3/6,1/6,4/6 -============================ -input: -DR -output: -Dracurouge : (DR) > 4D6 > [ 1, 1, 1, 3, 10 ] -rand:1/6,3/6,1/6,1/6 -============================ -input: -DR6 -output: -Dracurouge : (DR6) > 6D6 > [ 1, 2, 3, 5, 5, 6 ] -rand:1/6,3/6,2/6,5/6,5/6,6/6 -============================ -input: -DR6 -output: -Dracurouge : (DR6) > 6D6 > [ 5, 5, 6, 6, 6, 6, 10, 10 ] -rand:6/6,6/6,6/6,5/6,5/6,6/6 -============================ -input: -DR6 -output: -Dracurouge : (DR6) > 6D6 > [ 5, 6, 6, 6, 6, 6, 10, 10 ] -rand:6/6,6/6,6/6,5/6,6/6,6/6 -============================ -input: -DR6 -output: -Dracurouge : (DR6) > 6D6 > [ 1, 1, 5, 6, 6, 6, 10, 10 ] -rand:6/6,1/6,6/6,5/6,1/6,6/6 -============================ -input: -DR6 -output: -Dracurouge : (DR6) > 6D6 > [ 1, 1, 1, 5, 6, 6, 10, 10 ] -rand:6/6,1/6,6/6,5/6,1/6,1/6 -============================ -input: -DR6 -output: -Dracurouge : (DR6) > 6D6 > [ 1, 1, 1, 1, 6, 6, 10, 10, 10 ] -rand:6/6,1/6,6/6,1/6,1/6,1/6 -============================ -input: -DR+1 -output: -Dracurouge : (DR+1) > 4D6+1 > [ 3, 4, 5, 6+1 ] > [ 3, 4, 5, 7 ] -rand:6/6,3/6,5/6,4/6 -============================ -input: -DR+2 -output: -Dracurouge : (DR+2) > 4D6+2 > [ 3, 4, 6, 6+2, 10 ] > [ 3, 4, 6, 8, 10 ] -rand:6/6,3/6,6/6,4/6 -============================ -input: -DR6+2 -output: -Dracurouge : (DR6+2) > 6D6+2 > [ 1, 1, 3, 4, 6, 6+2, 10, 10 ] > [ 1, 1, 3, 4, 6, 8, 10, 10 ] -rand:6/6,3/6,6/6,4/6,1/6,1/6 -============================ -input: -DR+0 -output: -Dracurouge : (DR+0) > 4D6 > [ 3, 4, 5, 6 ] -rand:6/6,3/6,5/6,4/6 -============================ -input: -DRR4 -output: -Dracurouge : (DRR4) > 4D6 > [ 3, 4, 5, 6 ] -rand:6/6,3/6,5/6,4/6 -============================ -input: -DRR4 -output: -Dracurouge : (DRR4) > 4D6 > [ 3, 4, 6, 6 ] -rand:6/6,3/6,6/6,4/6 -============================ -input: -DRR6 -output: -Dracurouge : (DRR6) > 6D6 > [ 1, 1, 5, 6, 6, 6 ] -rand:6/6,1/6,6/6,5/6,1/6,6/6 -============================ -input: -RT -output: -Dracurouge : 반응표(11) > 드라크:하늘에 빛나는 붉은 달을 올려본다/로젠부르크:콧방귀를 뀐다/헬스가르드:헛기침을 한다/더스트하임:미간을 찌푸리고 생각에 잠긴다/아발롬:하품을 참는다/노스페라스:명왕령의 방향을 노려본다 -rand:1/6,1/6 -============================ -input: -RT -output: -Dracurouge : 반응표(61) > 영주:가슴을 펴고 자신있게 발언한다/근위:마음 속에서 다른 기사와 시합을 한다/방랑:자신의 고향을 떠올린다/현자:미래에 대해 점쳐본다/사냥꾼:과거의 원통함에 피눈물을 흘린다/야수:자신의 피부를 손톱등으로 상처입힌다 -rand:6/6,1/6 -============================ -input: -RT -output: -Dracurouge : 반응표(66) > 영주:입가를 가리며 기품있게 웃는다/근위:주군에 대한 주변의 태도를 비난한다/방랑:아랫사람에게 미소짓는다/현자:다른 기사의 감정에 충고한다/사냥꾼:아랫사람을 내려다보는 눈으로 본다/야수:자학적인 말을 한다 -rand:6/6,6/6 -============================ -input: -RTDF -output: -Dracurouge : 반응표(11) > 드라크:하늘에 빛나는 붉은 달을 올려본다 -rand:1/6,1/6 -============================ -input: -RTDF -output: -Dracurouge : 반응표(66) > 영주:입가를 가리며 기품있게 웃는다 -rand:6/6,6/6 -============================ -input: -RTAN -output: -Dracurouge : 반응표(66) > 야수:자학적인 말을 한다 -rand:6/6,6/6 -============================ -input: -RTMN -output: -Dracurouge : 반응표(16) > 더스트하임:눈을 감고 과거를 생각한다 -rand:1/6,6/6 -============================ -input: -CT3 -output: -Dracurouge : 2D6[1,1]-3 > 타락표(-1) > 당신은 완전히 타락했다. 이 시점에서 당신은 [월 플라워]가 되어 늑대인간, 검은 산양, 야수 중 하나가 된다. 그 [막]의 종료 후에 세션에서 퇴장한다. 247페이지의 「소멸・완전한 타락」을 참조한다. -rand:1/6,1/6 -============================ -input: -CT3 -output: -Dracurouge : 2D6[1,2]-3 > 타락표(0) > 당신은 완전히 타락했다. 이 시점에서 당신은 [월 플라워]가 되어 늑대인간, 검은 산양, 야수 중 하나가 된다. 그 [막]의 종료 후에 세션에서 퇴장한다. 247페이지의 「소멸・완전한 타락」을 참조한다. -rand:1/6,2/6 -============================ -input: -CT3 -output: -Dracurouge : 2D6[3,1]-3 > 타락표(1) > 당신의 육체는 정신에 걸맞는 변화를 일으킨다……. 「타락의 전조표」를 2번 굴리고 특징을 얻는다. 이 세션 종료 후, 【길】을 「야수」로 변경한다.(이미「야수」라면 【길】은 변하지 않는다) -rand:3/6,1/6 -============================ -input: -CT3 -output: -Dracurouge : 2D6[2,3]-3 > 타락표(2) > 당신의 육체는 정신에 걸맞는 변화를 일으킨다……. 「타락의 전조표」를 1번 굴리고 특징을 얻는다. 이 세션 종료 후, 【길】을 「야수」로 변경한다.(이미「야수」라면 【길】은 변하지 않는다) -rand:2/6,3/6 -============================ -input: -CT3 -output: -Dracurouge : 2D6[6,5]-3 > 타락표(8) > 날뛰는 마음을 가라앉힌다……다행히 아무 일도 없었다. -rand:6/6,5/6 -============================ -input: -CT3 -output: -Dracurouge : 2D6[6,6]-3 > 타락표(9) > 당신은 미쳐 날뛰는 감정을 억누르고 이성을 되찾았다! 【갈증】이 1 감소한다! -rand:6/6,6/6 -============================ -input: -CT1 -output: -Dracurouge : 2D6[6,6]-1 > 타락표(11) > 당신은 미쳐 날뛰는 감정을 억누르고 이성을 되찾았다! 【갈증】이 1 감소한다! -rand:6/6,6/6 -============================ -input: -CS -output: -Dracurouge : 타락의 전조표(2) > 당신은 완전히 타락했다. 이 시점에서 당신은 [월 플라워]가 되어 늑대인간, 검은 산양, 야수 중 하나가 된다. 그 [막]의 종료 후에 세션에서 퇴장한다. 247페이지의 「소멸・완전한 타락」을 참조한다. -rand:1/6,1/6 -============================ -input: -CS -output: -Dracurouge : 타락의 전조표(11) > 튀어나온 송곳니 -rand:6/6,5/6 -============================ -input: -CS -output: -Dracurouge : 타락의 전조표(12) > 눈에 보이는 변화는 없다…… -rand:6/6,6/6 -============================ -input: -D66 -output: -Dracurouge : (D66) > 61 -rand:6/6,1/6 -============================ -input: -BT -output: -Dracurouge : 인연 내용 결정표:루주/누아르(6) > 복종(Obey) 상대를 주군으로서 받들고 충의를 맹세한다. /복수(Vendetta) 상대를 원망하고 원수로 여긴다. -rand:6/6 -============================ diff --git a/src/src_bcdice/test/data/DungeonsAndDragons.txt b/src/src_bcdice/test/data/DungeonsAndDragons.txt deleted file mode 100644 index add0dcf46..000000000 --- a/src/src_bcdice/test/data/DungeonsAndDragons.txt +++ /dev/null @@ -1,47 +0,0 @@ -input: -1D4>=3 -output: -DungeonsAndDragons : (1D4>=3) > 3 > 成功 -rand:3/4 -============================ -input: -1D6>=5 -output: -DungeonsAndDragons : (1D6>=5) > 5 > 成功 -rand:5/6 -============================ -input: -1D8>=7 -output: -DungeonsAndDragons : (1D8>=7) > 7 > 成功 -rand:7/8 -============================ -input: -1D10>=9 -output: -DungeonsAndDragons : (1D10>=9) > 9 > 成功 -rand:9/10 -============================ -input: -1D12>=11 -output: -DungeonsAndDragons : (1D12>=11) > 11 > 成功 -rand:11/12 -============================ -input: -1D20>=19 -output: -DungeonsAndDragons : (1D20>=19) > 19 > 成功 -rand:19/20 -============================ -input: -(1+2)D10+3>=12 -output: -DungeonsAndDragons : (3D10+3>=12) > 12[3,4,5]+3 > 15 > 成功 -rand:3/10,4/10,5/10 -============================ -input: -S1D10>=10 -output: -DungeonsAndDragons : (1D10>=10) > 9 > 失敗###secret dice### -rand:9/10 diff --git a/src/src_bcdice/test/data/EarthDawn.txt b/src/src_bcdice/test/data/EarthDawn.txt deleted file mode 100644 index 4fa42d80c..000000000 --- a/src/src_bcdice/test/data/EarthDawn.txt +++ /dev/null @@ -1,431 +0,0 @@ -input: -[1...40]E20 -output: -EarthDawn : ステップ38>=20 > 2d20[75,10]+2d10[7,3]+1d8[2] > 97 > 最良成功 -rand:38/40,20/20,20/20,20/20,15/20,10/20,7/10,3/10,2/8 -============================ -input: -[1...40]E20 -output: -EarthDawn : ステップ34>=20 > 1d20[9]+1d12[21]+2d10[9,8]+1d8[4] > 51 > 最良成功 -rand:34/40,9/20,12/12,9/12,9/10,8/10,4/8 -============================ -input: -[1...40]E20 -output: -EarthDawn : ステップ18>=20 > 1d20[17]+1d12[3] > 20 > 成功 -rand:18/40,17/20,3/12 -============================ -input: -[1...40]E20 -output: -EarthDawn : ステップ24>=20 > 1d20[4]+1d12[8]+1d10[2] > 14 > 失敗 -rand:24/40,4/20,8/12,2/10 -============================ -input: -[1...40]E20 -output: -EarthDawn : ステップ23>=20 > 1d20[3]+2d10[4,7] > 14 > 失敗 -rand:23/40,3/20,4/10,7/10 -============================ -input: -[1...40]E20 -output: -EarthDawn : ステップ37>=20 > 2d20[25,19]+1d10[1]+2d8[4,7] > 56 > 最良成功 -rand:37/40,20/20,5/20,19/20,1/10,4/8,7/8 -============================ -input: -[1...40]E20 -output: -EarthDawn : ステップ9>=20 > 1d8[3]+1d6[8] > 11 > 大失敗 -rand:9/40,3/8,6/6,2/6 -============================ -input: -[1...40]E20 -output: -EarthDawn : ステップ32>=20 > 1d20[9]+2d10[5,2]+2d8[6,9] > 31 > 良成功 -rand:32/40,9/20,5/10,2/10,6/8,8/8,1/8 -============================ -input: -[1...40]E20 -output: -EarthDawn : ステップ19>=20 > 1d20[2]+2d6[1,17] > 20 > 成功 -rand:19/40,2/20,1/6,6/6,6/6,5/6 -============================ -input: -[1...40]E20 -output: -EarthDawn : ステップ14>=20 > 1d20[17]+1d4[19] > 36 > 優成功 -rand:14/40,17/20,4/4,4/4,4/4,4/4,3/4 -============================ -input: -[1...40]E20+4 -output: -EarthDawn : ステップ40>=20 > 2d20[7,9]+1d10[7]+1d8[4]+2d6[2,19]+4 > 52 > 最良成功 -rand:40/40,7/20,9/20,7/10,4/8,2/6,6/6,6/6,6/6,1/6 -============================ -input: -[1...40]E20+4 -output: -EarthDawn : ステップ30>=20 > 1d20[14]+1d10[16]+1d8[2]+2d6[3,3]+4 > 42 > 最良成功 -rand:30/40,14/20,10/10,6/10,2/8,3/6,3/6 -============================ -input: -[1...40]E20+4 -output: -EarthDawn : ステップ37>=20 > 2d20[18,2]+1d10[5]+2d8[6,7]+4 > 42 > 最良成功 -rand:37/40,18/20,2/20,5/10,6/8,7/8 -============================ -input: -[1...40]E20+4 -output: -EarthDawn : ステップ17>=20 > 1d20[14]+1d10[7]+4 > 25 > 成功 -rand:17/40,14/20,7/10 -============================ -input: -[1...40]E20+4 -output: -EarthDawn : ステップ26>=20 > 1d20[9]+1d10[4]+1d8[1]+1d6[2]+4 > 20 > 成功 -rand:26/40,9/20,4/10,1/8,2/6 -============================ -input: -[1...40]E20+4 -output: -EarthDawn : ステップ34>=20 > 1d20[7]+1d12[1]+2d10[6,7]+1d8[15]+4 > 40 > 優成功 -rand:34/40,7/20,1/12,6/10,7/10,8/8,7/8 -============================ -input: -[1...40]E20+4 -output: -EarthDawn : ステップ40>=20 > 2d20[19,12]+1d10[9]+1d8[5]+2d6[1,5]+4 > 55 > 最良成功 -rand:40/40,19/20,12/20,9/10,5/8,1/6,5/6 -============================ -input: -[1...40]E20+4 -output: -EarthDawn : ステップ37>=20 > 2d20[13,14]+1d10[8]+2d8[7,4]+4 > 50 > 最良成功 -rand:37/40,13/20,14/20,8/10,7/8,4/8 -============================ -input: -[1...40]E20+4 -output: -EarthDawn : ステップ29>=20 > 1d20[12]+1d12[10]+1d10[3]+1d8[2]+4 > 31 > 良成功 -rand:29/40,12/20,10/12,3/10,2/8 -============================ -input: -[1...40]E20+4 -output: -EarthDawn : ステップ30>=20 > 1d20[3]+1d10[3]+1d8[12]+2d6[4,2]+4 > 28 > 良成功 -rand:30/40,3/20,3/10,8/8,4/8,4/6,2/6 -============================ -input: -[1...40]E20+6 -output: -EarthDawn : ステップ6>=20 > 1d10[7]+6 > 13 > 失敗 -rand:6/40,7/10 -============================ -input: -[1...40]E20+6 -output: -EarthDawn : ステップ9>=20 > 1d8[6]+1d6[3]+6 > 15 > 失敗 -rand:9/40,6/8,3/6 -============================ -input: -[1...40]E20+6 -output: -EarthDawn : ステップ19>=20 > 1d20[2]+2d6[2,10]+6 > 20 > 成功 -rand:19/40,2/20,2/6,6/6,4/6 -============================ -input: -[1...40]E20+6 -output: -EarthDawn : ステップ38>=20 > 2d20[14,4]+2d10[2,19]+1d8[4]+6 > 49 > 最良成功 -rand:38/40,14/20,4/20,2/10,10/10,9/10,4/8 -============================ -input: -[1...40]E20+6 -output: -EarthDawn : ステップ24>=20 > 1d20[5]+1d12[1]+1d10[5]+6 > 17 > 失敗 -rand:24/40,5/20,1/12,5/10 -============================ -input: -[1...40]E20+6 -output: -EarthDawn : ステップ26>=20 > 1d20[6]+1d10[9]+1d8[2]+1d6[4]+6 > 27 > 成功 -rand:26/40,6/20,9/10,2/8,4/6 -============================ -input: -[1...40]E20+6 -output: -EarthDawn : ステップ32>=20 > 1d20[12]+2d10[5,1]+2d8[1,7]+6 > 32 > 良成功 -rand:32/40,12/20,5/10,1/10,1/8,7/8 -============================ -input: -[1...40]E20+6 -output: -EarthDawn : ステップ23>=20 > 1d20[13]+2d10[15,9]+6 > 43 > 最良成功 -rand:23/40,13/20,10/10,5/10,9/10 -============================ -input: -[1...40]E20+6 -output: -EarthDawn : ステップ9>=20 > 1d8[4]+1d6[5]+6 > 15 > 失敗 -rand:9/40,4/8,5/6 -============================ -input: -[1...40]E20+6 -output: -EarthDawn : ステップ40>=20 > 2d20[27,6]+1d10[1]+1d8[3]+2d6[2,2]+6 > 47 > 最良成功 -rand:40/40,20/20,7/20,6/20,1/10,3/8,2/6,2/6 -============================ -input: -[1...40]E20+8 -output: -EarthDawn : ステップ23>=20 > 1d20[13]+2d10[6,4]+8 > 31 > 良成功 -rand:23/40,13/20,6/10,4/10 -============================ -input: -[1...40]E20+8 -output: -EarthDawn : ステップ12>=20 > 2d10[2,2]+8 > 12 > 失敗 -rand:12/40,2/10,2/10 -============================ -input: -[1...40]E20+8 -output: -EarthDawn : ステップ35>=20 > 2d20[7,19]+1d10[6]+1d8[3]+1d4[3]+8 > 46 > 最良成功 -rand:35/40,7/20,19/20,6/10,3/8,3/4 -============================ -input: -[1...40]E20+8 -output: -EarthDawn : ステップ35>=20 > 2d20[19,17]+1d10[7]+1d8[14]+1d4[1]+8 > 66 > 最良成功 -rand:35/40,19/20,17/20,7/10,8/8,6/8,1/4 -============================ -input: -[1...40]E20+8 -output: -EarthDawn : ステップ36>=20 > 2d20[15,12]+1d10[7]+1d8[2]+1d6[4]+8 > 48 > 最良成功 -rand:36/40,15/20,12/20,7/10,2/8,4/6 -============================ -input: -[1...40]E20+8 -output: -EarthDawn : ステップ28>=20 > 1d20[17]+2d10[1,8]+1d8[6]+8 > 40 > 優成功 -rand:28/40,17/20,1/10,8/10,6/8 -============================ -input: -[1...40]E20+8 -output: -EarthDawn : ステップ34>=20 > 1d20[7]+1d12[3]+2d10[6,7]+1d8[13]+8 > 44 > 最良成功 -rand:34/40,7/20,3/12,6/10,7/10,8/8,5/8 -============================ -input: -[1...40]E20+8 -output: -EarthDawn : ステップ24>=20 > 1d20[2]+1d12[5]+1d10[9]+8 > 24 > 成功 -rand:24/40,2/20,5/12,9/10 -============================ -input: -[1...40]E20+8 -output: -EarthDawn : ステップ31>=20 > 1d20[8]+1d10[6]+2d8[1,2]+1d6[2]+8 > 27 > 成功 -rand:31/40,8/20,6/10,1/8,2/8,2/6 -============================ -input: -[1...40]E20+8 -output: -EarthDawn : ステップ18>=20 > 1d20[18]+1d12[10]+8 > 36 > 優成功 -rand:18/40,18/20,10/12 -============================ -input: -[1...40]E20+10 -output: -EarthDawn : ステップ6>=20 > 1d10[4]+10 > 14 > 失敗 -rand:6/40,4/10 -============================ -input: -[1...40]E20+10 -output: -EarthDawn : ステップ37>=20 > 2d20[2,7]+1d10[7]+2d8[2,3]+10 > 31 > 良成功 -rand:37/40,2/20,7/20,7/10,2/8,3/8 -============================ -input: -[1...40]E20+10 -output: -EarthDawn : ステップ22>=20 > 1d20[9]+1d10[3]+1d8[10]+10 > 32 > 良成功 -rand:22/40,9/20,3/10,8/8,2/8 -============================ -input: -[1...40]E20+10 -output: -EarthDawn : ステップ16>=20 > 1d20[15]+1d8[7]+10 > 32 > 良成功 -rand:16/40,15/20,7/8 -============================ -input: -[1...40]E20+10 -output: -EarthDawn : ステップ21>=20 > 1d20[8]+1d10[2]+1d6[11]+10 > 31 > 良成功 -rand:21/40,8/20,2/10,6/6,5/6 -============================ -input: -[1...40]E20+10 -output: -EarthDawn : ステップ34>=20 > 1d20[8]+1d12[8]+2d10[6,4]+1d8[2]+10 > 38 > 優成功 -rand:34/40,8/20,8/12,6/10,4/10,2/8 -============================ -input: -[1...40]E20+10 -output: -EarthDawn : ステップ29>=20 > 1d20[8]+1d12[3]+1d10[6]+1d8[1]+10 > 28 > 良成功 -rand:29/40,8/20,3/12,6/10,1/8 -============================ -input: -[1...40]E20+10 -output: -EarthDawn : ステップ7>=20 > 1d12[22]+10 > 32 > 良成功 -rand:7/40,12/12,10/12 -============================ -input: -[1...40]E20+10 -output: -EarthDawn : ステップ39>=20 > 2d20[3,23]+1d12[2]+1d10[11]+1d8[11]+10 > 60 > 最良成功 -rand:39/40,3/20,20/20,3/20,2/12,10/10,1/10,8/8,3/8 -============================ -input: -[1...40]E20+10 -output: -EarthDawn : ステップ8>=20 > 2d6[17,3]+10 > 30 > 良成功 -rand:8/40,6/6,6/6,5/6,3/6 -============================ -input: -[1...40]E20+12 -output: -EarthDawn : ステップ3>=20 > 1d4[7]+12 > 19 > 失敗 -rand:3/40,4/4,3/4 -============================ -input: -[1...40]E20+12 -output: -EarthDawn : ステップ25>=20 > 1d20[9]+1d10[5]+1d8[23]+1d4[3]+12 > 52 > 最良成功 -rand:25/40,9/20,5/10,8/8,8/8,7/8,3/4 -============================ -input: -[1...40]E20+12 -output: -EarthDawn : ステップ31>=20 > 1d20[19]+1d10[9]+2d8[7,3]+1d6[4]+12 > 54 > 最良成功 -rand:31/40,19/20,9/10,7/8,3/8,4/6 -============================ -input: -[1...40]E20+12 -output: -EarthDawn : ステップ14>=20 > 1d20[18]+1d4[2]+12 > 32 > 良成功 -rand:14/40,18/20,2/4 -============================ -input: -[1...40]E20+12 -output: -EarthDawn : ステップ7>=20 > 1d12[2]+12 > 14 > 失敗 -rand:7/40,2/12 -============================ -input: -[1...40]E20+12 -output: -EarthDawn : ステップ26>=20 > 1d20[15]+1d10[4]+1d8[1]+1d6[1]+12 > 33 > 良成功 -rand:26/40,15/20,4/10,1/8,1/6 -============================ -input: -[1...40]E20+12 -output: -EarthDawn : ステップ32>=20 > 1d20[12]+2d10[2,9]+2d8[2,1]+12 > 38 > 優成功 -rand:32/40,12/20,2/10,9/10,2/8,1/8 -============================ -input: -[1...40]E20+12 -output: -EarthDawn : ステップ27>=20 > 1d20[13]+1d10[2]+2d8[2,4]+12 > 33 > 良成功 -rand:27/40,13/20,2/10,2/8,4/8 -============================ -input: -[1...40]E20+12 -output: -EarthDawn : ステップ22>=20 > 1d20[3]+1d10[3]+1d8[3]+12 > 21 > 成功 -rand:22/40,3/20,3/10,3/8 -============================ -input: -[1...40]E20+12 -output: -EarthDawn : ステップ30>=20 > 1d20[12]+1d10[4]+1d8[5]+2d6[3,3]+12 > 39 > 優成功 -rand:30/40,12/20,4/10,5/8,3/6,3/6 -============================ -input: -[1...40]E20+20 -output: -EarthDawn : ステップ9>=20 > 1d8[15]+1d6[1]+20 > 36 > 優成功 -rand:9/40,8/8,7/8,1/6 -============================ -input: -[1...40]E20+20 -output: -EarthDawn : ステップ3>=20 > 1d4[3]+20 > 23 > 成功 -rand:3/40,3/4 -============================ -input: -[1...40]E20+20 -output: -EarthDawn : ステップ28>=20 > 1d20[9]+2d10[4,4]+1d8[3]+20 > 40 > 優成功 -rand:28/40,9/20,4/10,4/10,3/8 -============================ -input: -[1...40]E20+20 -output: -EarthDawn : ステップ38>=20 > 2d20[10,5]+2d10[16,17]+1d8[14]+20 > 82 > 最良成功 -rand:38/40,10/20,5/20,10/10,6/10,10/10,7/10,8/8,6/8 -============================ -input: -[1...40]E20+20 -output: -EarthDawn : ステップ6>=20 > 1d10[6]+20 > 26 > 成功 -rand:6/40,6/10 -============================ -input: -[1...40]E20+20 -output: -EarthDawn : ステップ6>=20 > 1d10[3]+20 > 23 > 成功 -rand:6/40,3/10 -============================ -input: -[1...40]E20+20 -output: -EarthDawn : ステップ27>=20 > 1d20[2]+1d10[6]+2d8[5,5]+20 > 38 > 優成功 -rand:27/40,2/20,6/10,5/8,5/8 -============================ -input: -[1...40]E20+20 -output: -EarthDawn : ステップ33>=20 > 1d20[16]+3d10[6,5,4]+1d8[4]+20 > 55 > 最良成功 -rand:33/40,16/20,6/10,5/10,4/10,4/8 -============================ -input: -[1...40]E20+20 -output: -EarthDawn : ステップ2>=20 > 1d4[5]+19 > 24 > 成功 -rand:2/40,4/4,1/4 -============================ -input: -[1...40]E20+20 -output: -EarthDawn : ステップ4>=20 > 1d6[1]+20 > 21 > 自動失敗 -rand:4/40,1/6 -============================ -input: -4E0 -output: -EarthDawn : ステップ4 > 1d6[8] > 8 -rand:6/6,2/6 -============================ -input: -4E -output: -EarthDawn : ステップ4 > 1d6[8] > 8 -rand:6/6,2/6 diff --git a/src/src_bcdice/test/data/EarthDawn3.txt b/src/src_bcdice/test/data/EarthDawn3.txt deleted file mode 100644 index e3bc6b6e3..000000000 --- a/src/src_bcdice/test/data/EarthDawn3.txt +++ /dev/null @@ -1,209 +0,0 @@ -input: -4E -output: -EarthDawn3 : ステップ4 > 1d6[8] > 8 -rand:6/6,2/6 -============================ -input: -4E2 -output: -EarthDawn3 : ステップ4>=2 > 1d6[5] > 5 > Good(上出来) -rand:5/6 -============================ -input: -6E2 -output: -EarthDawn3 : ステップ6>=2 > 1d10[5] > 5 > Good(上出来) -rand:5/10 -============================ -input: -7E2 -output: -EarthDawn3 : ステップ7>=2 > 1d12[5] > 5 > Good(上出来) -rand:5/12 -============================ -input: -8E2 -output: -EarthDawn3 : ステップ8>=2 > 2d6[5,5] > 10 > Extraordinary(極上) -rand:5/6,5/6 -============================ -input: -9E2 -output: -EarthDawn3 : ステップ9>=2 > 1d8[5]+1d6[5] > 10 > Extraordinary(極上) -rand:5/8,5/6 -============================ -input: -10E2 -output: -EarthDawn3 : ステップ10>=2 > 2d8[5,5] > 10 > Extraordinary(極上) -rand:5/8,5/8 -============================ -input: -11E2 -output: -EarthDawn3 : ステップ11>=2 > 1d10[5]+1d8[5] > 10 > Extraordinary(極上) -rand:5/10,5/8 -============================ -input: -12E2 -output: -EarthDawn3 : ステップ12>=2 > 2d10[5,5] > 10 > Extraordinary(極上) -rand:5/10,5/10 -============================ -input: -13E2 -output: -EarthDawn3 : ステップ13>=2 > 1d12[5]+1d10[5] > 10 > Extraordinary(極上) -rand:5/12,5/10 -============================ -input: -14E2 -output: -EarthDawn3 : ステップ14>=2 > 2d12[5,5] > 10 > Extraordinary(極上) -rand:5/12,5/12 -============================ -input: -15E2 -output: -EarthDawn3 : ステップ15>=2 > 1d12[5]+2d6[5,5] > 15 > Extraordinary(極上) -rand:5/12,5/6,5/6 -============================ -input: -40E2 -output: -EarthDawn3 : ステップ40>=2 > 4d12[5,5,5,5]+2d10[5,5] > 30 > Extraordinary(極上) -rand:5/12,5/12,5/12,5/12,5/10,5/10 -============================ -input: -40E2 -output: -EarthDawn3 : ステップ40>=2 > 4d12[1,1,1,1]+2d10[1,1] > 6 > 自動失敗 -rand:1/12,1/12,1/12,1/12,1/10,1/10 -============================ -input: -40E2 -output: -EarthDawn3 : ステップ40>=2 > 4d12[2,1,1,1]+2d10[1,1] > 7 > Excelent(最高) -rand:2/12,1/12,1/12,1/12,1/10,1/10 -============================ -input: -14E10 -output: -EarthDawn3 : ステップ14>=10 > 2d12[1,1] > 2 > 自動失敗 -rand:1/12,1/12 -============================ -input: -14E10 -output: -EarthDawn3 : ステップ14>=10 > 2d12[1,1] > 2 > 自動失敗 -rand:1/12,1/12 -============================ -input: -14E10 -output: -EarthDawn3 : ステップ14>=10 > 2d12[1,2] > 3 > Pathetic(惨め) -rand:1/12,2/12 -============================ -input: -14E10 -output: -EarthDawn3 : ステップ14>=10 > 2d12[1,4] > 5 > Pathetic(惨め) -rand:1/12,4/12 -============================ -input: -14E10 -output: -EarthDawn3 : ステップ14>=10 > 2d12[1,5] > 6 > Poor(お粗末) -rand:1/12,5/12 -============================ -input: -14E10 -output: -EarthDawn3 : ステップ14>=10 > 2d12[1,8] > 9 > Poor(お粗末) -rand:1/12,8/12 -============================ -input: -14E10 -output: -EarthDawn3 : ステップ14>=10 > 2d12[1,9] > 10 > Average(そこそこ) -rand:1/12,9/12 -============================ -input: -14E10 -output: -EarthDawn3 : ステップ14>=10 > 2d12[8,7] > 15 > Average(そこそこ) -rand:8/12,7/12 -============================ -input: -14E10 -output: -EarthDawn3 : ステップ14>=10 > 2d12[9,7] > 16 > Good(上出来) -rand:9/12,7/12 -============================ -input: -14E10 -output: -EarthDawn3 : ステップ14>=10 > 2d12[9,10] > 19 > Good(上出来) -rand:9/12,10/12 -============================ -input: -14E10 -output: -EarthDawn3 : ステップ14>=10 > 2d12[10,10] > 20 > Excelent(最高) -rand:10/12,10/12 -============================ -input: -14E10 -output: -EarthDawn3 : ステップ14>=10 > 2d12[11,11] > 22 > Excelent(最高) -rand:11/12,11/12 -============================ -input: -14E10 -output: -EarthDawn3 : ステップ14>=10 > 2d12[10,14] > 24 > Extraordinary(極上) -rand:10/12,12/12,2/12 -============================ -input: -10E -output: -EarthDawn3 : ステップ10 > 2d8[2,2] > 4 -rand:2/8,2/8 -============================ -input: -10E8 -output: -EarthDawn3 : ステップ10>=8 > 2d8[2,2] > 4 > Poor(お粗末) -rand:2/8,2/8 -============================ -input: -10E8+1D6 -output: -EarthDawn3 : ステップ10>=8 > 2d8[2,2]+1d6[1] > 5 > Poor(お粗末) -rand:2/8,2/8,1/6 -============================ -input: -10E8+D6 -output: -EarthDawn3 : ステップ10>=8 > 2d8[2,2]+1d6[1] > 5 > Poor(お粗末) -rand:2/8,2/8,1/6 -============================ -input: -10E8+1 -output: -EarthDawn3 : ステップ10>=8 > 2d8[2,2]+1 > 5 > Poor(お粗末) -rand:2/8,2/8 -============================ -input: -10E8+D4+1 -output: -EarthDawn3 : ステップ10>=8 > 2d8[2,2]+1d4[2]+1 > 7 > Poor(お粗末) -rand:2/8,2/8,2/4 -============================ -input: -10E8+1D12 -output: -EarthDawn3 : ステップ10>=8 > 2d8[2,2]+1d12[2] > 6 > Poor(お粗末) -rand:2/8,2/8,2/12 diff --git a/src/src_bcdice/test/data/EarthDawn4.txt b/src/src_bcdice/test/data/EarthDawn4.txt deleted file mode 100644 index 536ac44f7..000000000 --- a/src/src_bcdice/test/data/EarthDawn4.txt +++ /dev/null @@ -1,210 +0,0 @@ -input: -4E -output: -EarthDawn4 : ステップ4 > 1d6[8] > 8 -rand:6/6,2/6 -============================ -input: -4E6 -output: -EarthDawn4 : ステップ4>=6 > 1d6[5] > 5 > 失敗 -rand:5/6 -============================ -input: -4E2 -output: -EarthDawn4 : ステップ4>=2 > 1d6[5] > 5 > 成功 レベル:1 -rand:5/6 -============================ -input: -4E2 -output: -EarthDawn4 : ステップ4>=2 > 1d6[7] > 7 > 成功 レベル:2 -rand:6/6,1/6 -============================ -input: -6E2 -output: -EarthDawn4 : ステップ6>=2 > 1d10[7] > 7 > 成功 レベル:2 -rand:7/10 -============================ -input: -7E1 -output: -EarthDawn4 : ステップ7>=1 > 1d12[10] > 10 > 成功 レベル:2 -rand:10/12 -============================ -input: -7E1 -output: -EarthDawn4 : ステップ7>=1 > 1d12[11] > 11 > 成功 レベル:3 -rand:11/12 -============================ -input: -8E2 -output: -EarthDawn4 : ステップ8>=2 > 2d6[5,11] > 16 > 成功 レベル:3 -rand:5/6,6/6,5/6 -============================ -input: -9E2 -output: -EarthDawn4 : ステップ9>=2 > 1d8[7]+1d6[10] > 17 > 成功 レベル:4 -rand:7/8,6/6,4/6 -============================ -input: -10E2 -output: -EarthDawn4 : ステップ10>=2 > 2d8[5,5] > 10 > 成功 レベル:2 -rand:5/8,5/8 -============================ -input: -11E2 -output: -EarthDawn4 : ステップ11>=2 > 1d10[5]+1d8[5] > 10 > 成功 レベル:2 -rand:5/10,5/8 -============================ -input: -12E2 -output: -EarthDawn4 : ステップ12>=2 > 2d10[5,5] > 10 > 成功 レベル:2 -rand:5/10,5/10 -============================ -input: -13E2 -output: -EarthDawn4 : ステップ13>=2 > 1d12[5]+1d10[5] > 10 > 成功 レベル:2 -rand:5/12,5/10 -============================ -input: -14E2 -output: -EarthDawn4 : ステップ14>=2 > 2d12[5,5] > 10 > 成功 レベル:2 -rand:5/12,5/12 -============================ -input: -15E2 -output: -EarthDawn4 : ステップ15>=2 > 1d12[5]+2d6[5,5] > 15 > 成功 レベル:3 -rand:5/12,5/6,5/6 -============================ -input: -16E2 -output: -EarthDawn4 : ステップ16>=2 > 1d12[5]+1d8[2]+1d6[5] > 12 > 成功 レベル:3 -rand:5/12,2/8,5/6 -============================ -input: -17E2 -output: -EarthDawn4 : ステップ17>=2 > 1d12[5]+2d8[5,5] > 15 > 成功 レベル:3 -rand:5/12,5/8,5/8 -============================ -input: -18E2 -output: -EarthDawn4 : ステップ18>=2 > 1d12[11]+1d10[9]+1d8[7] > 27 > 成功 レベル:6 -rand:11/12,9/10,7/8 -============================ -input: -19E2 -output: -EarthDawn4 : ステップ19>=2 > 1d20[2]+2d6[2,2] > 6 > 成功 レベル:1 -rand:2/20,2/6,2/6 -============================ -input: -20E2 -output: -EarthDawn4 : ステップ20>=2 > 1d20[2]+1d8[2]+1d6[2] > 6 > 成功 レベル:1 -rand:2/20,2/8,2/6 -============================ -input: -30E2 -output: -EarthDawn4 : ステップ30>=2 > 2d20[2,2]+2d6[2,2] > 8 > 成功 レベル:2 -rand:2/20,2/20,2/6,2/6 -============================ -input: -40E2 -output: -EarthDawn4 : ステップ40>=2 > 2d20[2,2]+1d12[2]+1d10[2]+1d8[2] > 10 > 成功 レベル:2 -rand:2/20,2/20,2/12,2/10,2/8 -============================ -input: -40E3 -output: -EarthDawn4 : ステップ40>=3 > 2d20[1,1]+1d12[1]+1d10[1]+1d8[1] > 5 > 自動失敗 -rand:1/20,1/20,1/12,1/10,1/8 -============================ -input: -40E4 -output: -EarthDawn4 : ステップ40>=4 > 2d20[2,1]+1d12[1]+1d10[1]+1d8[1] > 6 > 成功 レベル:1 -rand:2/20,1/20,1/12,1/10,1/8 -============================ -input: -14E10 -output: -EarthDawn4 : ステップ14>=10 > 2d12[1,1] > 2 > 自動失敗 -rand:1/12,1/12 -============================ -input: -14E10 -output: -EarthDawn4 : ステップ14>=10 > 2d12[1,1] > 2 > 自動失敗 -rand:1/12,1/12 -============================ -input: -10E -output: -EarthDawn4 : ステップ10 > 2d8[2,2] > 4 -rand:2/8,2/8 -============================ -input: -10E8 -output: -EarthDawn4 : ステップ10>=8 > 2d8[2,2] > 4 > 失敗 -rand:2/8,2/8 -============================ -input: -10E8+1 -output: -EarthDawn4 : ステップ10>=8 > 2d8[2,2]+1 > 5 > 失敗 -rand:2/8,2/8 -============================ -input: -10E8K -output: -EarthDawn4 : ステップ10>=8 > 2d8[2,3]+1d6[3] > 8 > 成功 レベル:1 -rand:2/8,3/8,3/6 -============================ -input: -10E8k+1 -output: -EarthDawn4 : ステップ10>=8 > 2d8[2,3]+1d6[3]+1 > 9 > 成功 レベル:1 -rand:2/8,3/8,3/6 -============================ -input: -10Ek -output: -EarthDawn4 : ステップ10 > 2d8[2,3]+1d6[3] > 8 -rand:2/8,3/8,3/6 -============================ -input: -10Ek+1 -output: -EarthDawn4 : ステップ10 > 2d8[2,3]+1d6[3]+1 > 9 -rand:2/8,3/8,3/6 -============================ -input: -10Ek+4E -output: -EarthDawn4 : ステップ10+ステップ4 > (2d8[2,3]+1d6[3])+(1d6[8]) > (8+8) > 16 -rand:2/8,3/8,3/6,6/6,2/6 -============================ -input: -10E16k+4E -output: -EarthDawn4 : ステップ10+ステップ4>=16 > (2d8[2,3]+1d6[3])+(1d6[8]) > (8+8) > 16 > 成功 レベル:1 -rand:2/8,3/8,3/6,6/6,2/6 -============================ diff --git a/src/src_bcdice/test/data/EclipsePhase.txt b/src/src_bcdice/test/data/EclipsePhase.txt deleted file mode 100644 index d39c23884..000000000 --- a/src/src_bcdice/test/data/EclipsePhase.txt +++ /dev/null @@ -1,83 +0,0 @@ -input: -1D100<=50 -output: -EclipsePhase : (1D100<=50) > 50 > エクセレント -rand:50/100 -============================ -input: -1D100<=50 -output: -EclipsePhase : (1D100<=50) > 30 > エクセレント -rand:30/100 -============================ -input: -1D100<=50 -output: -EclipsePhase : (1D100<=50) > 29 > 成功 -rand:29/100 -============================ -input: -1D100<=50 -output: -EclipsePhase : (1D100<=50) > 51 > 失敗 -rand:51/100 -============================ -input: -1D100<=50 -output: -EclipsePhase : (1D100<=50) > 79 > 失敗 -rand:79/100 -============================ -input: -1D100<=50 -output: -EclipsePhase : (1D100<=50) > 80 > シビア -rand:80/100 -============================ -input: -1D100<=50 -output: -EclipsePhase : (1D100<=50) > 100 > 00 > 決定的成功 -rand:100/100 -============================ -input: -1D100<=50 -output: -EclipsePhase : (1D100<=50) > 44 > 決定的成功 -rand:44/100 -============================ -input: -1D100<=50 -output: -EclipsePhase : (1D100<=50) > 49 > エクセレント -rand:49/100 -============================ -input: -1D100<=50 -output: -EclipsePhase : (1D100<=50) > 55 > 決定的失敗 -rand:55/100 -============================ -input: -1D100<=50 -output: -EclipsePhase : (1D100<=50) > 99 > 決定的失敗 -rand:99/100 -============================ -input: -1D100<=0 -output: -EclipsePhase : (1D100<=0) > 100 > 00 > 決定的成功 -rand:100/100 -============================ -input: -1D100<=120 -output: -EclipsePhase : (1D100<=120) > 99 > 決定的失敗 -rand:99/100 -============================ -input: -1D100>=? 目標値?でバグらない -output: -EclipsePhase : (1D100>=?) > 42 > 失敗 -rand:42/100 diff --git a/src/src_bcdice/test/data/Elric.txt b/src/src_bcdice/test/data/Elric.txt deleted file mode 100644 index 48d755097..000000000 --- a/src/src_bcdice/test/data/Elric.txt +++ /dev/null @@ -1,185 +0,0 @@ -input: -1D100<=10 -output: -Elric : (1D100<=10) > 70 > 失敗 -rand:70/100 -============================ -input: -1D100<=10 -output: -Elric : (1D100<=10) > 34 > 失敗 -rand:34/100 -============================ -input: -1D100<=10 -output: -Elric : (1D100<=10) > 90 > 失敗 -rand:90/100 -============================ -input: -1D100<=10 -output: -Elric : (1D100<=10) > 82 > 失敗 -rand:82/100 -============================ -input: -1D100<=10 -output: -Elric : (1D100<=10) > 78 > 失敗 -rand:78/100 -============================ -input: -1D100<=10 -output: -Elric : (1D100<=10) > 65 > 失敗 -rand:65/100 -============================ -input: -1D100<=10 -output: -Elric : (1D100<=10) > 51 > 失敗 -rand:51/100 -============================ -input: -1D100<=10 -output: -Elric : (1D100<=10) > 100 > 致命的失敗 -rand:100/100 -============================ -input: -1D100<=10 -output: -Elric : (1D100<=10) > 34 > 失敗 -rand:34/100 -============================ -input: -1D100<=10 -output: -Elric : (1D100<=10) > 22 > 失敗 -rand:22/100 -============================ -input: -1D100<=100 -output: -Elric : (1D100<=100) > 30 > 成功 -rand:30/100 -============================ -input: -1D100<=100 -output: -Elric : (1D100<=100) > 25 > 成功 -rand:25/100 -============================ -input: -1D100<=100 -output: -Elric : (1D100<=100) > 26 > 成功 -rand:26/100 -============================ -input: -1D100<=100 -output: -Elric : (1D100<=100) > 84 > 成功 -rand:84/100 -============================ -input: -1D100<=100 -output: -Elric : (1D100<=100) > 29 > 成功 -rand:29/100 -============================ -input: -1D100<=100 -output: -Elric : (1D100<=100) > 94 > 成功 -rand:94/100 -============================ -input: -1D100<=100 -output: -Elric : (1D100<=100) > 68 > 成功 -rand:68/100 -============================ -input: -1D100<=100 -output: -Elric : (1D100<=100) > 76 > 成功 -rand:76/100 -============================ -input: -1D100<=100 -output: -Elric : (1D100<=100) > 100 > 致命的失敗 -rand:100/100 -============================ -input: -1D100<=100 -output: -Elric : (1D100<=100) > 8 > 決定的成功 -rand:8/100 -============================ -input: -1D100<=50 -output: -Elric : (1D100<=50) > 32 > 成功 -rand:32/100 -============================ -input: -1D100<=50 -output: -Elric : (1D100<=50) > 10 > 決定的成功 -rand:10/100 -============================ -input: -1D100<=50 -output: -Elric : (1D100<=50) > 97 > 失敗 -rand:97/100 -============================ -input: -1D100<=50 -output: -Elric : (1D100<=50) > 92 > 失敗 -rand:92/100 -============================ -input: -1D100<=50 -output: -Elric : (1D100<=50) > 32 > 成功 -rand:32/100 -============================ -input: -1D100<=50 -output: -Elric : (1D100<=50) > 20 > 成功 -rand:20/100 -============================ -input: -1D100<=50 -output: -Elric : (1D100<=50) > 27 > 成功 -rand:27/100 -============================ -input: -1D100<=50 -output: -Elric : (1D100<=50) > 52 > 失敗 -rand:52/100 -============================ -input: -1D100<=50 -output: -Elric : (1D100<=50) > 18 > 成功 -rand:18/100 -============================ -input: -1D100<=50 -output: -Elric : (1D100<=50) > 13 > 成功 -rand:13/100 -============================ -input: -1D100>=? 目標値?でバグらない -output: -Elric : (1D100>=?) > 42 > 失敗 -rand:42/100 diff --git a/src/src_bcdice/test/data/Elysion.txt b/src/src_bcdice/test/data/Elysion.txt deleted file mode 100644 index 073625f14..000000000 --- a/src/src_bcdice/test/data/Elysion.txt +++ /dev/null @@ -1,548 +0,0 @@ -input: -date -output: -Elysion : date > 5 -rand:5/6 -============================ -input: -date56[PC1,PC2] -output: -Elysion : date56[PC1,PC2] > デート表(56) > 「え?え?えぇぇぇぇッ?!」ふとした拍子に唇がふれあう。受け身キャラ(PC1)の攻め気キャラ(PC2)以外に対する《感情値》が全て0になり、その値の分だけ攻め気キャラ(PC2)に対する《感情値》が上昇し、その属性が《好意》になる。 -rand: -============================ -input: -date11[PC1,PC2] -output: -Elysion : date11[PC1,PC2] > デート表(11) > 「こんなはずじゃなかったのにッ!」仲良くするつもりが、ひどい喧嘩になってしまう。この表の使用者のお互いに対する《感情値》が1点上昇し、属性が《敵意》になる。 -rand: -============================ -input: -date66[PC1,PC2] -output: -Elysion : date66[PC1,PC2] > デート表(66) > 「…………」気がつくとお互い、目をそらせなくなってしまう。そのまま顔を寄せ合い…。この表の使用者のお互いに対する《感情値》が3点上昇する。 -rand: -============================ -input: -date16[PC1,PC2] -output: -Elysion : date16[PC1,PC2] > デート表(16) > 「あなたのこと心配してるわけじゃないんだからね!」少し前の失敗について色々と言われてしまう。ありがたいんだけど、少しムカつく。受け身キャラ(PC1)は、攻め気キャラ(PC2)に対する《感情値》が2点上昇する。 -rand: -============================ -input: -date16[PC1,] -output: -Elysion : date16[PC1,] > デート表(16) > 「あなたのこと心配してるわけじゃないんだからね!」少し前の失敗について色々と言われてしまう。ありがたいんだけど、少しムカつく。受け身キャラ(PC1)は、攻め気キャラに対する《感情値》が2点上昇する。 -rand: -============================ -input: -date16[,PC2] -output: -Elysion : date16[,PC2] > デート表(16) > 「あなたのこと心配してるわけじゃないんだからね!」少し前の失敗について色々と言われてしまう。ありがたいんだけど、少しムカつく。受け身キャラは、攻め気キャラ(PC2)に対する《感情値》が2点上昇する。 -rand: -============================ -input: -EL3 -output: -Elysion : EL3 > (2D6+3) > 6[4,2]+3 > 9 > 失敗 -rand:4/6,2/6 -============================ -input: -EL3 -output: -Elysion : EL3 > (2D6+3) > 7[3,4]+3 > 10 > 成功度1 -rand:3/6,4/6 -============================ -input: -EL3+5 -output: -Elysion : EL3+5 > (2D6+3+5) > 6[2,4]+8 > 14 > 成功度1 -rand:2/6,4/6 -============================ -input: -EL10+1 -output: -Elysion : EL10+1 > (2D6+10+1) > 4[1,3]+11 > 15 > 成功度2 -rand:1/6,3/6 -============================ -input: -EL5+20 -output: -Elysion : EL5+20 > (2D6+5+20) > 5[2,3]+25 > 30 > 成功度5 > 大成功 《アウル》2点獲得 -rand:2/6,3/6 -============================ -input: -EL -output: -Elysion : EL > (2D6) > 10[4,6] > 10 > 成功度1 -rand:4/6,6/6 -============================ -input: -EL+9 -output: -Elysion : EL+9 > (2D6+9) > 10[4,6]+9 > 19 > 成功度2 -rand:4/6,6/6 -============================ -input: -EL3 -output: -Elysion : EL3 > (2D6+3) > 2[1,1]+3 > 5 > 大失敗 -rand:1/6,1/6 -============================ -input: -EL3 -output: -Elysion : EL3 > (2D6+3) > 4[2,2]+3 > 7 > 失敗 / (1回目のアシストなら)大失敗 -rand:2/6,2/6 -============================ -input: -EL3 -output: -Elysion : EL3 > (2D6+3) > 10[5,5]+3 > 13 > 成功度1 / (4回目のアシストなら)大失敗 -rand:5/6,5/6 -============================ -input: -EL5 -output: -Elysion : EL5 > (2D6+5) > 10[5,5]+5 > 15 > 成功度2 / (4回目のアシストなら)大失敗 -rand:5/6,5/6 -============================ -input: -EL3 -output: -Elysion : EL3 > (2D6+3) > 12[6,6]+3 > 15 > 成功度5 > 大成功 《アウル》2点獲得 -rand:6/6,6/6 -============================ -input: -date -output: -Elysion : date > 1 -rand:1/6 -============================ -input: -date(66)[PC1,PC2] -output: -Elysion : date66[PC1,PC2] > デート表(66) > 「…………」気がつくとお互い、目をそらせなくなってしまう。そのまま顔を寄せ合い…。この表の使用者のお互いに対する《感情値》が3点上昇する。 -rand: -============================ -input: -date[PC1,PC2] -output: -Elysion : date[PC1,PC2] > PC1[1],PC2[1] > デート表(11) > 「こんなはずじゃなかったのにッ!」仲良くするつもりが、ひどい喧嘩になってしまう。この表の使用者のお互いに対する《感情値》が1点上昇し、属性が《敵意》になる。 -rand:1/6,1/6 -============================ -input: -DATE[PC1,PC2] -output: -Elysion : DATE[PC1,PC2] > PC1[1],PC2[6] > デート表(16) > 「あなたのこと心配してるわけじゃないんだからね!」少し前の失敗について色々と言われてしまう。ありがたいんだけど、少しムカつく。受け身キャラ(PC1)は、攻め気キャラ(PC2)に対する《感情値》が2点上昇する。 -rand:1/6,6/6 -============================ -input: -date[PC1,PC2] -output: -Elysion : date[PC1,PC2] > PC1[6],PC2[1] > デート表(16) > 「あなたのこと心配してるわけじゃないんだからね!」少し前の失敗について色々と言われてしまう。ありがたいんだけど、少しムカつく。受け身キャラ(PC2)は、攻め気キャラ(PC1)に対する《感情値》が2点上昇する。 -rand:6/6,1/6 -============================ -input: -date[abc,DEF] -output: -Elysion : date[abc,DEF] > abc[6],DEF[6] > デート表(66) > 「…………」気がつくとお互い、目をそらせなくなってしまう。そのまま顔を寄せ合い…。この表の使用者のお互いに対する《感情値》が3点上昇する。 -rand:6/6,6/6 -============================ -input: -fdate -output: -Elysion : fdate > 6 -rand:6/6 -============================ -input: -fdate(66)[PC1,PC2] -output: -Elysion : fdate66[PC1,PC2] > 友達デート表(66) > 「実はコイツ……。」 -思っていたよりずっと近かった二人の距離に気付く。この表の使用者のお互いに対する《感情値》が3点上昇し、属性は《好意》になる。 -rand: -============================ -input: -FDATE[PC1,PC2] -output: -Elysion : FDATE[PC1,PC2] > PC1[1],PC2[1] > 友達デート表(11) > 「こんなはずじゃなかったのにッ!」 -仲良くするつもりが、ひどい喧嘩になってしまう。この表の使用者のお互いに対する《感情値》が1点上昇し、属性が《敵意》になる。 -rand:1/6,1/6 -============================ -input: -fdate[PC1,pc2] -output: -Elysion : fdate[PC1,pc2] > PC1[1],pc2[6] > 友達デート表(16) > 「え、そうだったの!?」 -お互いに意外なところを発見してしまう。この表の使用者のお互いに対する《感情値》が1点上昇し、属性を反転する。 -rand:1/6,6/6 -============================ -input: -FDATE[PC1,PC2] -output: -Elysion : FDATE[PC1,PC2] > PC1[6],PC2[6] > 友達デート表(66) > 「実はコイツ……。」 -思っていたよりずっと近かった二人の距離に気付く。この表の使用者のお互いに対する《感情値》が3点上昇し、属性は《好意》になる。 -rand:6/6,6/6 -============================ -input: -odate -output: -Elysion : odate > 6 -rand:6/6 -============================ -input: -odate(66)[PC1,PC2] -output: -Elysion : odate66[PC1,PC2] > 片思いデート表(66) > 「そっか、私……。」 -思いが届かないうちに、片思いの相手が他の人と仲良くしているところをみせつけられる。受け身キャラ(PC1)は攻め気キャラ(PC2)以外のキャラクターを一人選んで《感情値》を3点上昇し、属性を《好意》にする。この表の使用者のお互いに対するフラグがあった場合、フラグを折る。 -rand: -============================ -input: -ODATE[PC1,PC2] -output: -Elysion : ODATE[PC1,PC2] > PC1[1],PC2[1] > 片思いデート表(11) > 「気付いてくれないあなたが悪いんだから……!」 -突然の告白と、刃物沙汰。撃退士じゃなかったら死んでいた。受け身キャラ(PC1)は《生命力》が3D6点減少する。攻め気キャラ(PC2)の受け身キャラ(PC1)に対する《感情値》が3点上昇し、属性が《敵意》にあんる。受け身キャラ(PC1)は攻め気キャラ(PC2)に対するフラグがあった場合、フラグを折る。 -rand:1/6,1/6 -============================ -input: -Odate[PC1,pc2] -output: -Elysion : Odate[PC1,pc2] > PC1[1],pc2[6] > 片思いデート表(16) > 「贈り物…だよ……。」 -愛情がたくさん入ったアイテム……だけど呪術的なものも入っている気がする。攻め気キャラ(pc2)は好きなアイテムを一つ選び、調達判定を行う。成功した場合、手に入れたアイテムを受け身キャラ(PC1)に渡す。受け身キャラ(PC1)は、渡したアイテムの価格と同じだけ《アウル》が減少する。攻め気キャラ(pc2)は受け身キャラ(PC1)に対する《感情値》が2点上昇する。 -rand:1/6,6/6 -============================ -input: -ODATE[PC1,PC2] -output: -Elysion : ODATE[PC1,PC2] > PC1[6],PC2[6] > 片思いデート表(66) > 「そっか、私……。」 -思いが届かないうちに、片思いの相手が他の人と仲良くしているところをみせつけられる。受け身キャラ(PC1)は攻め気キャラ(PC2)以外のキャラクターを一人選んで《感情値》を3点上昇し、属性を《好意》にする。この表の使用者のお互いに対するフラグがあった場合、フラグを折る。 -rand:6/6,6/6 -============================ -input: -mdate -output: -Elysion : mdate > 6 -rand:6/6 -============================ -input: -mdate(66)[PC1,PC2] -output: -Elysion : mdate66[PC1,PC2] > 真夜中デート表(66) > 「帰りの電車がなくなったの……。」 -二人で一夜を過ごす。この表の使用者はお互いに対する《感情値》が5点上昇するが、お互いに「バカ」の変調を受ける。 -rand: -============================ -input: -MDATE[PC1,PC2] -output: -Elysion : MDATE[PC1,PC2] > PC1[1],PC2[1] > 真夜中デート表(11) > 「こんなはずじゃなかったのにッ!」 -仲良くするつもりが、ひどい喧嘩になってしまう。この表の使用者のお互いに対する《感情値》が1点上昇し、属性が《敵意》になる。 -rand:1/6,1/6 -============================ -input: -mdate[PC1,pc2] -output: -Elysion : mdate[PC1,pc2] > PC1[1],pc2[6] > 真夜中デート表(16) > 「ね、ねむい。」 -眠くてデートどころではなかったが、寝顔は見られた。受け身キャラ(PC1)は行動の「睡眠」を行い、攻め気キャラ(pc2)は受け身キャラ(PC1)に対する《感情値》が2点上昇し、属性は《好意》になる。 -rand:1/6,6/6 -============================ -input: -MDATE[PC1,PC2] -output: -Elysion : MDATE[PC1,PC2] > PC1[6],PC2[6] > 真夜中デート表(66) > 「帰りの電車がなくなったの……。」 -二人で一夜を過ごす。この表の使用者はお互いに対する《感情値》が5点上昇するが、お互いに「バカ」の変調を受ける。 -rand:6/6,6/6 -============================ -input: -RBT -output: -Elysion : RBT > 教室休憩表(12) 笑い声 -「あはははははは」にぎやかな笑い声が響く。〔青春力〕で判定を行う。成功したら輪の中に溶け込み、《アウル》が1点回復する。失敗すると「孤独」の変調を受ける。 -rand:6/6,6/6 -============================ -input: -SBT -output: -Elysion : SBT > 購買休憩表(12) サイフ紛失 -「あれ? あれれれッ!?」サイフを落としてしまった。【お金】を持っていたら、それを全て失う。 -rand:6/6,6/6 -============================ -input: -BBT -output: -Elysion : BBT > 部室休憩表(12) 門外不出品? -「なんだこれ……?」部室の奥から、いわれのありそうな古書が出てくる。外国の言葉で書かれているみたいだけど……?〔学力〕で判定を行う。必要な成功度は、自分のカオスレートの絶対値となる(1未満にはならない)。成功すると、そのセッションの間、自分のカオスレートを1点上昇するか、1点減少する。 -rand:6/6,6/6 -============================ -input: -CBT -output: -Elysion : CBT > 生徒会室休憩表(12) 謎の警告 -「深追いはするな。これは警告だ」携帯電話に謎の脅迫メールが届く。何者かに目をつけられたようだ。〔政治力〕で判定を行う。失敗すると「恐怖」の変調を受ける。 -rand:6/6,6/6 -============================ -input: -DBT -output: -Elysion : DBT > 学生寮休憩表(12) ささいなケンカ -「なんだとーッ!」「なにをーッ!」ささいな行き違いから、他の住人とケンカになってしまう。〔青春力〕か〔政治力〕で判定を行う。〔青春力〕の判定に失敗すると《生命力》が2D6点減少する。〔政治力〕の判定に失敗すると「孤独」の変調を受ける。 -rand:6/6,6/6 -============================ -input: -IBT -output: -Elysion : IBT > 図書館休憩表(12) 残念! -目当ての本はすでに借りられていた。残念!《アウル》が1点減少する。 -rand:6/6,6/6 -============================ -input: -FBT -output: -Elysion : FBT > 屋上休憩表(12) サビシガリヤ -「……あなたも一人?」もしも「孤独」の変調を受けていたら、寂しそうな異性に声をかけられる。好きな異性のキャラクター一人を選ぶ。自分とそのキャラクターは、お互いに対する《感情値》が2点上昇する。そして好きな変調一つが回復する。 -rand:6/6,6/6 -============================ -input: -LBT -output: -Elysion : LBT > 研究室休憩表(12) 失敗作 -「そいつは失敗作だよ。欲しければ持っていって構わない」価格が3以下の好きなアイテム一つを選ぶ。それを一個獲得する。このアイテムは、持ち主がファンブルすると、破壊される。 -rand:6/6,6/6 -============================ -input: -PBT -output: -Elysion : PBT > プール休憩表(12) 地獄の特訓 -様々な地獄プールで特訓!みっちり自分の体をおいじめて、鍛えたぞ。〔青春力〕の判定を行う。成功すると、《生命力》が2D6点減少し、そのセッションの間、《生命力》の限界値が減少した《生命力》と同じ値だけ上昇する。 -rand:6/6,6/6 -============================ -input: -NBT -output: -Elysion : NBT > 中庭休憩表(12) ちょっぴり贅沢 -今日は自分にご褒美。学食で贅沢しちゃおっかなー〔政治力〕で判定を行う。成功すると《生命力》が2D6点と《アウル》1点が回復する。 -rand:6/6,6/6 -============================ -input: -ABT -output: -Elysion : ABT > 商店街休憩表(12) 家庭教師 -「ねぇねぇ、教えて酔う」近所の子供に勉強を教えてくれと頼まれる。〔学力で〕判定を行う。成功すると、彼らは尊敬の目できみを見つめる。アイテムの【後輩】を一つ獲得する。失敗すると「バカ」の変調を受ける。 -rand:6/6,6/6 -============================ -input: -VBT -output: -Elysion : VBT > 廃墟休憩表(12) 不良撃退士 -「ほう。いいもの持ってるじゃないか。そいつを寄こしたら見逃してやるよ」自分の携行品の中で一番価格の高いものを一つ選ぶ。それを渡せば特に何も起こらない。もし渡すのを断るのなら、〔青春力〕で判定を行う。成功度が2以下だった場合、3D6点のダメージを受ける。 -rand:6/6,6/6 -============================ -input: -GBT -output: -Elysion : GBT > ゲート休憩表(12) 魔剣 -敵と戦う内に、武器の切れ味が鋭くなっている。〔学力〕で判定を行う。成功すると好きな武器一つを選ぶ。このセッションの間、威力が1点上昇する。失敗すると、1D6点のダメージを受ける。 -rand:6/6,6/6 -============================ -input: -HBT -output: -Elysion : 温泉休憩表(12[6,6]) > 混浴ッッ!? -湯船に入ってみると、そこには異性の姿が……ええッ!?男湯と女湯間違えたッ!?好きな異性のキャラクターを1人選ぶ。そのキャラクターの自分に対する《達成値》が2点上昇する。その後、[青春力]で判定を行う。失敗すると「バカ」の変調を受ける。 -rand:6/6,6/6 -============================ -input: -BFT -output: -Elysion : BFT > 戦場表(6) 修羅場 -自分たちとは別の撃退士や天魔たちが戦闘を行っていたり、悪意に満ちた第三勢力に囲まれていたりする戦場。この戦場にいるキャラクターは、ラウンドの終了時に速度0にいると、〔政治力〕の判定を行う。失敗すると、《生命力》が1D6点減少する。 -rand:6/6 -============================ -input: -FWT -output: -Elysion : FWT > 致命傷表(6) 凄まじい幸運。 -そのシーンに自分に《好意》を持っているキャラクターがいたら、代わりにそのキャラクターがダメージを受けることができる(ダメージを代わりに受けるかどうかは、そのキャラクターを操るプレイヤー、もしくはGMが決定する)。誰もダメージを代わりに受けなかった場合、行動不能になる。 -rand:6/6 -============================ -input: -FT -output: -Elysion : FT > ファンブル表(6) アウルが暴走して、大惨事に。自分の《生命力》を2D6点減少する。 -rand:6/6 -============================ -input: -D66 -output: -Elysion : (D66) > 16 -rand:1/6,6/6 -============================ -input: -D66 -output: -Elysion : (D66) > 16 -rand:6/6,1/6 -============================ -input: -SRT -output: -Elysion : SRT > 学生生活関連NPC表(66) 振り直し/任意 -rand:6/6,6/6 -============================ -input: -SRT -output: -Elysion : SRT > 学生生活関連NPC表(16) レミエル・N・V:大学部2年0組:P83 -rand:6/6,1/6 -============================ -input: -ORT -output: -Elysion : ORT > 教師・その他NPC表(66) 振り直し/任意 -rand:6/6,6/6 -============================ -input: -ORT -output: -Elysion : ORT > 教師・その他NPC表(16) アリス・ペンデルトン:教師:P85 -rand:6/6,1/6 -============================ -input: -DRT -output: -Elysion : DRT > 学生図鑑 下級学年表(66) 振り直し/任意 -rand:6/6,6/6 -============================ -input: -DRT -output: -Elysion : DRT > 学生図鑑 下級学年表(16) カイン大澤(−・おおさわ):初等部5年2組:P12 -rand:6/6,1/6 -============================ -input: -URT -output: -Elysion : URT > 学生図鑑 上級学年表(66) 振り直し/任意 -rand:6/6,6/6 -============================ -input: -URT -output: -Elysion : URT > 学生図鑑 上級学年表(16) 大炊御門菫(おおいのみかど・すみれ):高等部3年6組:P112 -rand:6/6,1/6 -============================ -input: -GIT -output: -Elysion : 陰謀表(7[6,1]) > 「ねぇねぇ、ボクともっと遊んでよ。」 -世界征服同好会が、様々な妨害工作を行っている。このパートに行う判定は、ファンブル率が1上昇する。 -rand:6/6,1/6 -============================ -input: -NA -output: -Elysion : 新初期アイテム決定表(7[6,1]) > 牛 乳 p88 -rand:6/6,1/6 -============================ -input: -JH -output: -Elysion : 授業ハプニング表(7[6,1]) > 授業中に生徒同士で口論になる。この授業判定を行ったキャラクターの中に、この表を使用したキャラクターに対して《好意》を持っていたキャラクターがいたら、その属性を《敵意》にする。 -rand:6/6,1/6 -============================ -input: -NJ1 -output: -Elysion : NJ1 > 日常遭遇表(2) ブラックシープ(基本p129)×2 -rand:1/6 -============================ -input: -NJ11 -output: -Elysion : NJ11 > 日常遭遇表(17) 風紀委員(p107)、保安委員(p107)×2 -rand:6/6 -============================ -input: -BS11 -output: -Elysion : BS11 > ボスキャラクター遭遇表(17) 悪魔貴族(基本p131)、ブラッドウォーリア(p103)×PCと同じ数 -rand:6/6 -============================ -input: -UT1 -output: -Elysion : ユニット名決定表1A(16[1,6]) > はじめての -rand:6/6,1/6 -============================ -input: -UT2 -output: -Elysion : ユニット名決定表1B(16[1,6]) > 予知夢 -rand:6/6,1/6 -============================ -input: -UT3 -output: -Elysion : ユニット名決定表2A(16[1,6]) > ファースト -rand:6/6,1/6 -============================ -input: -UT4 -output: -Elysion : ユニット名決定表2B(16[1,6]) > ティアラ -rand:6/6,1/6 -============================ -input: -OJ1 -output: -Elysion : 音楽ジャンル決定表A(6[6]) > カオス全開☆ -rand:6/6 -============================ -input: -OJ2 -output: -Elysion : 音楽ジャンル決定表B(6[6]) > 電波ソング -rand:6/6 -============================ -input: -NT -output: -Elysion : ニュートラル表(6[6]) > 人に影響される。すべてのPCのカオスレートを合計し、+1以上だった場合、あなたのカオスレートを+2する。-1以下だった場合、あなたのカオスレートを-2する。0だった場合、特に何も起こらない。 -rand:6/6 -============================ -input: -IT -output: -Elysion : 釣り人表(6[6]) > ついサメを釣ってしまった。【キラー】(基本p126)と戦闘を行う。この戦闘はイベントシーン扱いとし、撤退できない。 -rand:6/6 -============================ -input: -HT -output: -Elysion : ロウ表(7[6,1]) > 身近にいるカオスなやつがむかついてしょうがない。理由もなく殴ってすべてのカオスレートが-2以下のPCに2D6点のダメージを与える。成功度を1として扱い好きな能力値でガードが可能。 -rand:6/6,1/6 -============================ -input: -KT -output: -Elysion : カオス表(7[6,1]) > 身近にいるロウなやつがムカついてしょうがない。理由もなく殴ってすべてのカオスレートが+2以上のPCに2D6点のダメージを与える。この攻撃は成功度を1として扱い、好きな能力値でガード可能。 -rand:6/6,1/6 -============================ -input: -EBT -output: -Elysion : お祭り室休憩表(12[6,6]) > キャンプファイヤーの下で…… -キャンプファイヤーを囲みながら、みんなで踊る。PC全員は、好きなPCを一人選ぶ。PC全員は、選んだPCに対する《感情値》が1点上昇し、属性は《好意》となる。 -rand:6/6,6/6 -============================ -input: -TBT -output: -Elysion : 修学旅行休憩表(12[6,6]) > 好きな人語り! -「ねえねえ、この際だからハッキリ言っちゃおうよ。」修学旅行での楽しみ、それがこの好きな人を語り合う時間だ。真夜中パートならば、PC全員はそれぞれ《好意》が最も高いPCを一人発表する。発表したPCは、発表されたPCに対する《感情値》が2点上昇する。真夜中パート以外であれば、よく眠ってリフレッシュ。《アウル》が1点回復する。 -rand:6/6,6/6 -============================ -input: -UBT -output: -Elysion : 潜入調査休憩表(12[6,6]) > 疑い -「キミって、ひょっとすると……。」勘のいい生徒から、本格的に疑われてしまう。[政治力]で判定を行う。成功すると、疑いを晴らすことができた上に、重要な情報をくれる。GMが選択した手がかり一つの情報を公開する。失敗すると、疑いの視線が学校中から向けられてしまう。《アウル》を2点減少する。 -rand:6/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/EmbryoMachine.txt b/src/src_bcdice/test/data/EmbryoMachine.txt deleted file mode 100644 index 75482d9b2..000000000 --- a/src/src_bcdice/test/data/EmbryoMachine.txt +++ /dev/null @@ -1,1265 +0,0 @@ -input: -1D10>=2 -output: -EmbryoMachine : (1D10>=2) > 4 > 成功 -rand:4/10 -============================ -input: -1D10>=2 -output: -EmbryoMachine : (1D10>=2) > 5 > 成功 -rand:5/10 -============================ -input: -1D10>=2 -output: -EmbryoMachine : (1D10>=2) > 6 > 成功 -rand:6/10 -============================ -input: -1D10>=2 -output: -EmbryoMachine : (1D10>=2) > 2 > ファンブル -rand:2/10 -============================ -input: -1D10>=2 -output: -EmbryoMachine : (1D10>=2) > 5 > 成功 -rand:5/10 -============================ -input: -1D10>=2 -output: -EmbryoMachine : (1D10>=2) > 4 > 成功 -rand:4/10 -============================ -input: -1D10>=2 -output: -EmbryoMachine : (1D10>=2) > 6 > 成功 -rand:6/10 -============================ -input: -1D10>=2 -output: -EmbryoMachine : (1D10>=2) > 3 > 成功 -rand:3/10 -============================ -input: -1D10>=2 -output: -EmbryoMachine : (1D10>=2) > 7 > 成功 -rand:7/10 -============================ -input: -1D10>=2 -output: -EmbryoMachine : (1D10>=2) > 4 > 成功 -rand:4/10 -============================ -input: -1D10>=8 -output: -EmbryoMachine : (1D10>=8) > 10 > 成功 -rand:10/10 -============================ -input: -1D10>=8 -output: -EmbryoMachine : (1D10>=8) > 9 > 成功 -rand:9/10 -============================ -input: -1D10>=8 -output: -EmbryoMachine : (1D10>=8) > 1 > ファンブル -rand:1/10 -============================ -input: -1D10>=8 -output: -EmbryoMachine : (1D10>=8) > 7 > 失敗 -rand:7/10 -============================ -input: -1D10>=8 -output: -EmbryoMachine : (1D10>=8) > 4 > 失敗 -rand:4/10 -============================ -input: -1D10>=8 -output: -EmbryoMachine : (1D10>=8) > 1 > ファンブル -rand:1/10 -============================ -input: -1D10>=8 -output: -EmbryoMachine : (1D10>=8) > 1 > ファンブル -rand:1/10 -============================ -input: -1D10>=8 -output: -EmbryoMachine : (1D10>=8) > 5 > 失敗 -rand:5/10 -============================ -input: -1D10>=8 -output: -EmbryoMachine : (1D10>=8) > 8 > 成功 -rand:8/10 -============================ -input: -1D10>=8 -output: -EmbryoMachine : (1D10>=8) > 5 > 失敗 -rand:5/10 -============================ -input: -1D10>=5 -output: -EmbryoMachine : (1D10>=5) > 9 > 成功 -rand:9/10 -============================ -input: -1D10>=5 -output: -EmbryoMachine : (1D10>=5) > 7 > 成功 -rand:7/10 -============================ -input: -1D10>=5 -output: -EmbryoMachine : (1D10>=5) > 2 > ファンブル -rand:2/10 -============================ -input: -1D10>=5 -output: -EmbryoMachine : (1D10>=5) > 2 > ファンブル -rand:2/10 -============================ -input: -1D10>=5 -output: -EmbryoMachine : (1D10>=5) > 10 > 成功 -rand:10/10 -============================ -input: -1D10>=5 -output: -EmbryoMachine : (1D10>=5) > 7 > 成功 -rand:7/10 -============================ -input: -1D10>=5 -output: -EmbryoMachine : (1D10>=5) > 2 > ファンブル -rand:2/10 -============================ -input: -1D10>=5 -output: -EmbryoMachine : (1D10>=5) > 5 > 成功 -rand:5/10 -============================ -input: -1D10>=5 -output: -EmbryoMachine : (1D10>=5) > 6 > 成功 -rand:6/10 -============================ -input: -1D10>=5 -output: -EmbryoMachine : (1D10>=5) > 1 > ファンブル -rand:1/10 -============================ -input: -5D10>=5 -output: -EmbryoMachine : (5D10>=5) > 31[4,4,4,9,10] > 31 > クリティカル -rand:4/10,4/10,9/10,4/10,10/10 -============================ -input: -5D10>=5 -output: -EmbryoMachine : (5D10>=5) > 33[3,3,8,9,10] > 33 > クリティカル -rand:3/10,8/10,3/10,9/10,10/10 -============================ -input: -5D10>=5 -output: -EmbryoMachine : (5D10>=5) > 29[1,2,8,9,9] > 29 > クリティカル -rand:9/10,1/10,2/10,9/10,8/10 -============================ -input: -5D10>=5 -output: -EmbryoMachine : (5D10>=5) > 19[1,2,3,6,7] > 19 > 成功 -rand:2/10,3/10,1/10,6/10,7/10 -============================ -input: -5D10>=5 -output: -EmbryoMachine : (5D10>=5) > 26[1,3,5,7,10] > 26 > クリティカル -rand:1/10,10/10,3/10,7/10,5/10 -============================ -input: -5D10>=5 -output: -EmbryoMachine : (5D10>=5) > 19[1,4,4,5,5] > 19 > 成功 -rand:4/10,5/10,4/10,5/10,1/10 -============================ -input: -5D10>=5 -output: -EmbryoMachine : (5D10>=5) > 39[5,5,9,10,10] > 39 > クリティカル -rand:10/10,10/10,9/10,5/10,5/10 -============================ -input: -5D10>=5 -output: -EmbryoMachine : (5D10>=5) > 10[1,1,1,2,5] > 10 > 成功 -rand:5/10,1/10,1/10,1/10,2/10 -============================ -input: -5D10>=5 -output: -EmbryoMachine : (5D10>=5) > 17[1,2,3,4,7] > 17 > 成功 -rand:7/10,4/10,3/10,1/10,2/10 -============================ -input: -5D10>=5 -output: -EmbryoMachine : (5D10>=5) > 25[1,2,4,9,9] > 25 > クリティカル -rand:9/10,9/10,1/10,4/10,2/10 -============================ -input: -5D10>=22 -output: -EmbryoMachine : (5D10>=22) > 27[2,3,6,6,10] > 27 > クリティカル -rand:2/10,6/10,6/10,10/10,3/10 -============================ -input: -5D10>=22 -output: -EmbryoMachine : (5D10>=22) > 24[2,4,4,7,7] > 24 > クリティカル -rand:4/10,7/10,2/10,7/10,4/10 -============================ -input: -5D10>=22 -output: -EmbryoMachine : (5D10>=22) > 26[1,1,7,8,9] > 26 > クリティカル -rand:1/10,7/10,1/10,9/10,8/10 -============================ -input: -5D10>=22 -output: -EmbryoMachine : (5D10>=22) > 26[2,4,5,7,8] > 26 > クリティカル -rand:2/10,8/10,4/10,7/10,5/10 -============================ -input: -5D10>=22 -output: -EmbryoMachine : (5D10>=22) > 31[4,5,7,7,8] > 31 > クリティカル -rand:7/10,4/10,8/10,5/10,7/10 -============================ -input: -5D10>=22 -output: -EmbryoMachine : (5D10>=22) > 28[2,5,6,6,9] > 28 > クリティカル -rand:5/10,9/10,6/10,2/10,6/10 -============================ -input: -5D10>=22 -output: -EmbryoMachine : (5D10>=22) > 26[2,2,4,8,10] > 26 > クリティカル -rand:4/10,2/10,10/10,2/10,8/10 -============================ -input: -5D10>=22 -output: -EmbryoMachine : (5D10>=22) > 29[3,3,6,8,9] > 29 > クリティカル -rand:6/10,8/10,3/10,3/10,9/10 -============================ -input: -5D10>=22 -output: -EmbryoMachine : (5D10>=22) > 19[1,1,3,4,10] > 19 > 失敗 -rand:3/10,10/10,1/10,4/10,1/10 -============================ -input: -5D10>=22 -output: -EmbryoMachine : (5D10>=22) > 21[2,3,3,4,9] > 21 > クリティカル -rand:3/10,9/10,2/10,3/10,4/10 -============================ -input: -5D10>=45 -output: -EmbryoMachine : (5D10>=45) > 32[3,6,6,8,9] > 32 > クリティカル -rand:6/10,8/10,3/10,9/10,6/10 -============================ -input: -5D10>=45 -output: -EmbryoMachine : (5D10>=45) > 20[2,2,3,6,7] > 20 > クリティカル -rand:3/10,7/10,2/10,6/10,2/10 -============================ -input: -5D10>=45 -output: -EmbryoMachine : (5D10>=45) > 17[1,3,4,4,5] > 17 > 失敗 -rand:4/10,3/10,5/10,4/10,1/10 -============================ -input: -5D10>=45 -output: -EmbryoMachine : (5D10>=45) > 30[3,4,5,8,10] > 30 > クリティカル -rand:4/10,3/10,10/10,5/10,8/10 -============================ -input: -5D10>=45 -output: -EmbryoMachine : (5D10>=45) > 35[1,6,8,10,10] > 35 > クリティカル -rand:6/10,8/10,1/10,10/10,10/10 -============================ -input: -5D10>=45 -output: -EmbryoMachine : (5D10>=45) > 35[2,6,7,10,10] > 35 > クリティカル -rand:2/10,7/10,10/10,10/10,6/10 -============================ -input: -5D10>=45 -output: -EmbryoMachine : (5D10>=45) > 24[2,2,3,8,9] > 24 > クリティカル -rand:8/10,9/10,3/10,2/10,2/10 -============================ -input: -5D10>=45 -output: -EmbryoMachine : (5D10>=45) > 10[1,1,1,3,4] > 10 > 失敗 -rand:1/10,4/10,3/10,1/10,1/10 -============================ -input: -5D10>=45 -output: -EmbryoMachine : (5D10>=45) > 30[3,5,7,7,8] > 30 > クリティカル -rand:7/10,7/10,5/10,3/10,8/10 -============================ -input: -5D10>=45 -output: -EmbryoMachine : (5D10>=45) > 35[1,7,8,9,10] > 35 > クリティカル -rand:9/10,8/10,10/10,1/10,7/10 -============================ -input: -10D10>=20 -output: -EmbryoMachine : (10D10>=20) > 44[1,3,3,3,3,3,5,7,8,8] > 44 > クリティカル -rand:3/10,1/10,8/10,7/10,8/10,3/10,3/10,5/10,3/10,3/10 -============================ -input: -10D10>=20 -output: -EmbryoMachine : (10D10>=20) > 42[2,2,2,3,4,4,4,4,8,9] > 42 > クリティカル -rand:4/10,4/10,9/10,2/10,4/10,2/10,3/10,8/10,2/10,4/10 -============================ -input: -10D10>=20 -output: -EmbryoMachine : (10D10>=20) > 45[1,1,2,2,2,4,6,8,9,10] > 45 > クリティカル -rand:8/10,2/10,1/10,9/10,1/10,10/10,2/10,4/10,2/10,6/10 -============================ -input: -10D10>=20 -output: -EmbryoMachine : (10D10>=20) > 57[1,2,3,3,5,7,8,8,10,10] > 57 > クリティカル -rand:3/10,2/10,10/10,5/10,8/10,1/10,3/10,7/10,10/10,8/10 -============================ -input: -10D10>=20 -output: -EmbryoMachine : (10D10>=20) > 66[2,3,5,5,7,8,9,9,9,9] > 66 > クリティカル -rand:8/10,9/10,5/10,9/10,3/10,2/10,7/10,5/10,9/10,9/10 -============================ -input: -10D10>=20 -output: -EmbryoMachine : (10D10>=20) > 59[2,3,3,3,5,7,8,9,9,10] > 59 > クリティカル -rand:9/10,7/10,5/10,10/10,8/10,9/10,3/10,3/10,3/10,2/10 -============================ -input: -10D10>=20 -output: -EmbryoMachine : (10D10>=20) > 62[1,4,5,5,5,6,8,8,10,10] > 62 > クリティカル -rand:5/10,8/10,6/10,1/10,5/10,10/10,4/10,10/10,5/10,8/10 -============================ -input: -10D10>=20 -output: -EmbryoMachine : (10D10>=20) > 49[1,2,3,3,4,6,7,7,8,8] > 49 > クリティカル -rand:2/10,7/10,6/10,7/10,3/10,4/10,8/10,1/10,3/10,8/10 -============================ -input: -10D10>=20 -output: -EmbryoMachine : (10D10>=20) > 56[2,2,3,3,5,6,7,8,10,10] > 56 > クリティカル -rand:10/10,2/10,10/10,5/10,3/10,3/10,2/10,7/10,8/10,6/10 -============================ -input: -10D10>=20 -output: -EmbryoMachine : (10D10>=20) > 58[1,3,4,4,5,7,7,7,10,10] > 58 > クリティカル -rand:4/10,3/10,10/10,1/10,7/10,5/10,7/10,7/10,10/10,4/10 -============================ -input: -10D10>=80 -output: -EmbryoMachine : (10D10>=80) > 50[1,2,3,4,5,6,6,7,8,8] > 50 > クリティカル -rand:2/10,3/10,6/10,8/10,5/10,4/10,6/10,7/10,1/10,8/10 -============================ -input: -10D10>=80 -output: -EmbryoMachine : (10D10>=80) > 74[1,5,6,8,8,9,9,9,9,10] > 74 > クリティカル -rand:8/10,1/10,10/10,5/10,8/10,9/10,9/10,6/10,9/10,9/10 -============================ -input: -10D10>=80 -output: -EmbryoMachine : (10D10>=80) > 60[1,4,4,4,6,7,8,8,9,9] > 60 > クリティカル -rand:8/10,4/10,9/10,4/10,9/10,8/10,7/10,1/10,6/10,4/10 -============================ -input: -10D10>=80 -output: -EmbryoMachine : (10D10>=80) > 57[1,3,3,4,5,7,8,8,9,9] > 57 > クリティカル -rand:9/10,5/10,4/10,7/10,8/10,3/10,1/10,8/10,9/10,3/10 -============================ -input: -10D10>=80 -output: -EmbryoMachine : (10D10>=80) > 54[1,2,3,3,4,7,8,8,8,10] > 54 > クリティカル -rand:10/10,1/10,8/10,4/10,8/10,3/10,7/10,8/10,2/10,3/10 -============================ -input: -10D10>=80 -output: -EmbryoMachine : (10D10>=80) > 74[4,4,6,7,8,9,9,9,9,9] > 74 > クリティカル -rand:9/10,9/10,9/10,9/10,6/10,8/10,7/10,4/10,9/10,4/10 -============================ -input: -10D10>=80 -output: -EmbryoMachine : (10D10>=80) > 36[1,1,1,1,2,2,3,6,9,10] > 36 > クリティカル -rand:1/10,1/10,1/10,6/10,9/10,2/10,10/10,1/10,3/10,2/10 -============================ -input: -10D10>=80 -output: -EmbryoMachine : (10D10>=80) > 47[1,2,3,3,4,4,5,7,9,9] > 47 > クリティカル -rand:7/10,4/10,3/10,9/10,3/10,1/10,9/10,2/10,4/10,5/10 -============================ -input: -10D10>=80 -output: -EmbryoMachine : (10D10>=80) > 49[2,3,4,4,4,5,5,6,7,9] > 49 > クリティカル -rand:4/10,7/10,2/10,3/10,5/10,5/10,4/10,4/10,6/10,9/10 -============================ -input: -10D10>=80 -output: -EmbryoMachine : (10D10>=80) > 51[3,3,3,4,4,5,5,5,9,10] > 51 > クリティカル -rand:10/10,5/10,3/10,3/10,5/10,4/10,9/10,4/10,3/10,5/10 -============================ -input: -10D10>=50 -output: -EmbryoMachine : (10D10>=50) > 54[1,3,4,5,5,6,6,7,7,10] > 54 > クリティカル -rand:7/10,3/10,1/10,6/10,10/10,6/10,7/10,5/10,4/10,5/10 -============================ -input: -10D10>=50 -output: -EmbryoMachine : (10D10>=50) > 51[1,2,3,3,3,5,8,8,8,10] > 51 > クリティカル -rand:8/10,1/10,3/10,3/10,5/10,10/10,3/10,2/10,8/10,8/10 -============================ -input: -10D10>=50 -output: -EmbryoMachine : (10D10>=50) > 58[1,2,3,3,5,7,8,9,10,10] > 58 > クリティカル -rand:10/10,5/10,9/10,10/10,1/10,8/10,7/10,3/10,2/10,3/10 -============================ -input: -10D10>=50 -output: -EmbryoMachine : (10D10>=50) > 60[1,2,2,4,6,6,9,10,10,10] > 60 > クリティカル -rand:6/10,10/10,2/10,2/10,10/10,6/10,9/10,10/10,4/10,1/10 -============================ -input: -10D10>=50 -output: -EmbryoMachine : (10D10>=50) > 56[1,3,3,4,4,6,7,8,10,10] > 56 > クリティカル -rand:7/10,8/10,3/10,4/10,1/10,10/10,4/10,10/10,6/10,3/10 -============================ -input: -10D10>=50 -output: -EmbryoMachine : (10D10>=50) > 52[1,2,3,3,4,4,7,8,10,10] > 52 > クリティカル -rand:1/10,4/10,3/10,2/10,8/10,4/10,7/10,10/10,10/10,3/10 -============================ -input: -10D10>=50 -output: -EmbryoMachine : (10D10>=50) > 63[1,3,3,5,5,6,10,10,10,10] > 63 > クリティカル -rand:10/10,10/10,6/10,10/10,5/10,3/10,1/10,3/10,10/10,5/10 -============================ -input: -10D10>=50 -output: -EmbryoMachine : (10D10>=50) > 61[1,2,3,4,6,8,8,9,10,10] > 61 > クリティカル -rand:3/10,8/10,1/10,10/10,2/10,8/10,6/10,10/10,9/10,4/10 -============================ -input: -10D10>=50 -output: -EmbryoMachine : (10D10>=50) > 49[1,2,2,4,4,5,5,7,9,10] > 49 > クリティカル -rand:4/10,5/10,4/10,1/10,10/10,9/10,2/10,7/10,2/10,5/10 -============================ -input: -10D10>=50 -output: -EmbryoMachine : (10D10>=50) > 56[2,3,3,5,5,7,7,7,7,10] > 56 > クリティカル -rand:7/10,2/10,3/10,7/10,5/10,3/10,7/10,7/10,10/10,5/10 -============================ -input: -EM[1...10] -output: -EmbryoMachine : (2R10>=2[20,2]) > 10[4,6] > 10 > 成功 > 命中レベルC > [5]左脚 -rand:2/10,4/10,6/10,4/10,1/10 -============================ -input: -EM[1...10] -output: -EmbryoMachine : (2R10>=5[20,2]) > 9[3,6] > 9 > 成功 > 命中レベルC > [3]頭 -rand:5/10,6/10,3/10,1/10,2/10 -============================ -input: -EM[1...10] -output: -EmbryoMachine : (2R10>=5[20,2]) > 14[5,9] > 14 > 成功 > 命中レベルB > [15]右脚 -rand:5/10,5/10,9/10,9/10,6/10 -============================ -input: -EM[1...10] -output: -EmbryoMachine : (2R10>=5[20,2]) > 11[5,6] > 11 > 成功 > 命中レベルC > [17]右脚 -rand:5/10,6/10,5/10,9/10,8/10 -============================ -input: -EM[1...10] -output: -EmbryoMachine : (2R10>=7[20,2]) > 11[4,7] > 11 > 成功 > 命中レベルB > [7]左脚 -rand:7/10,4/10,7/10,4/10,3/10 -============================ -input: -EM[1...10] -output: -EmbryoMachine : (2R10>=2[20,2]) > 16[7,9] > 16 > 成功 > 命中レベルB > [11]胴 -rand:2/10,9/10,7/10,4/10,7/10 -============================ -input: -EM[1...10] -output: -EmbryoMachine : (2R10>=8[20,2]) > 12[4,8] > 12 > 成功 > 命中レベルB > [16]右脚 -rand:8/10,8/10,4/10,10/10,6/10 -============================ -input: -EM[1...10] -output: -EmbryoMachine : (2R10>=9[20,2]) > 11[2,9] > 11 > 成功 > 命中レベルB > [9]左腕 -rand:9/10,9/10,2/10,3/10,6/10 -============================ -input: -EM[1...10] -output: -EmbryoMachine : (2R10>=7[20,2]) > 13[6,7] > 13 > 成功 > 命中レベルB > [17]右脚 -rand:7/10,6/10,7/10,7/10,10/10 -============================ -input: -EM[1...10] -output: -EmbryoMachine : (2R10>=10[20,2]) > 11[3,8] > 11 > 成功 > 命中レベルB > [12]胴 -rand:10/10,3/10,8/10,5/10,7/10 -============================ -input: -EM[1...10]+1 -output: -EmbryoMachine : (2R10+1>=9[20,2]) > 10[3,7]+1 > 11 > 成功 > 命中レベルB > [11]胴 -rand:9/10,7/10,3/10,3/10,8/10 -============================ -input: -EM[1...10]+1 -output: -EmbryoMachine : (2R10+1>=9[20,2]) > 13[3,10]+1 > 14 > 成功 > 命中レベルA > [7]左脚 -rand:9/10,10/10,3/10,4/10,3/10 -============================ -input: -EM[1...10]+1 -output: -EmbryoMachine : (2R10+1>=8[20,2]) > 17[8,9]+1 > 18 > 成功 > 命中レベルB > [18]頭 -rand:8/10,9/10,8/10,10/10,8/10 -============================ -input: -EM[1...10]+1 -output: -EmbryoMachine : (2R10+1>=6[20,2]) > 5[1,4]+1 > 6 > 成功 > 命中レベルC > [3]頭 -rand:6/10,1/10,4/10,1/10,2/10 -============================ -input: -EM[1...10]+1 -output: -EmbryoMachine : (2R10+1>=10[20,2]) > 6[1,5]+1 > 7 > 失敗 -rand:10/10,1/10,5/10,9/10,4/10 -============================ -input: -EM[1...10]+1 -output: -EmbryoMachine : (2R10+1>=6[20,2]) > 11[3,8]+1 > 12 > 成功 > 命中レベルB > [10]胴 -rand:6/10,3/10,8/10,1/10,9/10 -============================ -input: -EM[1...10]+1 -output: -EmbryoMachine : (2R10+1>=3[20,2]) > 6[1,5]+1 > 7 > 成功 > 命中レベルC > [10]胴 -rand:3/10,1/10,5/10,7/10,3/10 -============================ -input: -EM[1...10]+1 -output: -EmbryoMachine : (2R10+1>=10[20,2]) > 8[4,4]+1 > 9 > 失敗 -rand:10/10,4/10,4/10,6/10,9/10 -============================ -input: -EM[1...10]+1 -output: -EmbryoMachine : (2R10+1>=10[20,2]) > 8[2,6]+1 > 9 > 失敗 -rand:10/10,2/10,6/10,6/10,7/10 -============================ -input: -EM[1...10]+1 -output: -EmbryoMachine : (2R10+1>=1[20,2]) > 5[2,3]+1 > 6 > 成功 > 命中レベルC > [14]右腕 -rand:1/10,3/10,2/10,9/10,5/10 -============================ -input: -EM[1...10]+10 -output: -EmbryoMachine : (2R10+10>=9[20,2]) > 2[1,1]+10 > 12 > ファンブル -rand:9/10,1/10,1/10,9/10,7/10 -============================ -input: -EM[1...10]+10 -output: -EmbryoMachine : (2R10+10>=8[20,2]) > 9[1,8]+10 > 19 > 成功 > 命中レベルB > [13]右腕 -rand:8/10,8/10,1/10,6/10,7/10 -============================ -input: -EM[1...10]+10 -output: -EmbryoMachine : (2R10+10>=1[20,2]) > 9[4,5]+10 > 19 > 成功 > 命中レベルC > [6]左脚 -rand:1/10,4/10,5/10,3/10,3/10 -============================ -input: -EM[1...10]+10 -output: -EmbryoMachine : (2R10+10>=3[20,2]) > 18[9,9]+10 > 28 > 成功 > 命中レベルB > [11]胴 -rand:3/10,9/10,9/10,9/10,2/10 -============================ -input: -EM[1...10]+10 -output: -EmbryoMachine : (2R10+10>=4[20,2]) > 6[1,5]+10 > 16 > 成功 > 命中レベルC > [19]頭 -rand:4/10,5/10,1/10,9/10,10/10 -============================ -input: -EM[1...10]+10 -output: -EmbryoMachine : (2R10+10>=2[20,2]) > 13[3,10]+10 > 23 > 成功 > 命中レベルA > [9]左腕 -rand:2/10,10/10,3/10,1/10,8/10 -============================ -input: -EM[1...10]+10 -output: -EmbryoMachine : (2R10+10>=4[20,2]) > 7[2,5]+10 > 17 > 成功 > 命中レベルC > [8]左腕 -rand:4/10,5/10,2/10,1/10,7/10 -============================ -input: -EM[1...10]+10 -output: -EmbryoMachine : (2R10+10>=5[20,2]) > 15[5,10]+10 > 25 > 成功 > 命中レベルA > [13]右腕 -rand:5/10,5/10,10/10,3/10,10/10 -============================ -input: -EM[1...10]+10 -output: -EmbryoMachine : (2R10+10>=5[20,2]) > 7[3,4]+10 > 17 > 成功 > 命中レベルC > [14]右腕 -rand:5/10,3/10,4/10,6/10,8/10 -============================ -input: -EM[1...10]+10 -output: -EmbryoMachine : (2R10+10>=7[20,2]) > 4[1,3]+10 > 14 > 成功 > 命中レベルC > [10]胴 -rand:7/10,3/10,1/10,3/10,7/10 -============================ -input: -EM[1...10]+1@19 -output: -EmbryoMachine : (2R10+1>=3[19,2]) > 9[4,5]+1 > 10 > 成功 > 命中レベルC > [10]胴 -rand:3/10,4/10,5/10,7/10,3/10 -============================ -input: -EM[1...10]+1@19 -output: -EmbryoMachine : (2R10+1>=7[19,2]) > 16[7,9]+1 > 17 > 成功 > 命中レベルB > [11]胴 -rand:7/10,9/10,7/10,4/10,7/10 -============================ -input: -EM[1...10]+1@19 -output: -EmbryoMachine : (2R10+1>=3[19,2]) > 4[1,3]+1 > 5 > 成功 > 命中レベルC > [2]頭 -rand:3/10,3/10,1/10,1/10,1/10 -============================ -input: -EM[1...10]+1@19 -output: -EmbryoMachine : (2R10+1>=4[19,2]) > 12[4,8]+1 > 13 > 成功 > 命中レベルB > [11]胴 -rand:4/10,8/10,4/10,2/10,9/10 -============================ -input: -EM[1...10]+1@19 -output: -EmbryoMachine : (2R10+1>=5[19,2]) > 14[4,10]+1 > 15 > 成功 > 命中レベルA > [16]右脚 -rand:5/10,4/10,10/10,8/10,8/10 -============================ -input: -EM[1...10]+1@19 -output: -EmbryoMachine : (2R10+1>=2[19,2]) > 15[7,8]+1 > 16 > 成功 > 命中レベルB > [13]右腕 -rand:2/10,8/10,7/10,6/10,7/10 -============================ -input: -EM[1...10]+1@19 -output: -EmbryoMachine : (2R10+1>=8[19,2]) > 10[5,5]+1 > 11 > 成功 > 命中レベルC > [8]左腕 -rand:8/10,5/10,5/10,6/10,2/10 -============================ -input: -EM[1...10]+1@19 -output: -EmbryoMachine : (2R10+1>=1[19,2]) > 8[4,4]+1 > 9 > 成功 > 命中レベルC > [9]左腕 -rand:1/10,4/10,4/10,4/10,5/10 -============================ -input: -EM[1...10]+1@19 -output: -EmbryoMachine : (2R10+1>=8[19,2]) > 10[1,9]+1 > 11 > 成功 > 命中レベルB > [13]右腕 -rand:8/10,1/10,9/10,5/10,8/10 -============================ -input: -EM[1...10]+1@19 -output: -EmbryoMachine : (2R10+1>=2[19,2]) > 15[5,10]+1 > 16 > 成功 > 命中レベルA > [6]左脚 -rand:2/10,5/10,10/10,2/10,4/10 -============================ -input: -EM[1...10]+1#3 -output: -EmbryoMachine : (2R10+1>=1[20,3]) > 15[6,9]+1 > 16 > 成功 > 命中レベルB > [12]胴 -rand:1/10,9/10,6/10,5/10,7/10 -============================ -input: -EM[1...10]+1#3 -output: -EmbryoMachine : (2R10+1>=7[20,3]) > 15[7,8]+1 > 16 > 成功 > 命中レベルB > [7]左脚 -rand:7/10,7/10,8/10,1/10,6/10 -============================ -input: -EM[1...10]+1#3 -output: -EmbryoMachine : (2R10+1>=6[20,3]) > 10[1,9]+1 > 11 > 成功 > 命中レベルB > [10]胴 -rand:6/10,1/10,9/10,8/10,2/10 -============================ -input: -EM[1...10]+1#3 -output: -EmbryoMachine : (2R10+1>=2[20,3]) > 17[8,9]+1 > 18 > 成功 > 命中レベルB > [12]胴 -rand:2/10,9/10,8/10,5/10,7/10 -============================ -input: -EM[1...10]+1#3 -output: -EmbryoMachine : (2R10+1>=4[20,3]) > 7[3,4]+1 > 8 > 成功 > 命中レベルC > [10]胴 -rand:4/10,4/10,3/10,7/10,3/10 -============================ -input: -EM[1...10]+1#3 -output: -EmbryoMachine : (2R10+1>=3[20,3]) > 11[5,6]+1 > 12 > 成功 > 命中レベルC > [17]右脚 -rand:3/10,5/10,6/10,7/10,10/10 -============================ -input: -EM[1...10]+1#3 -output: -EmbryoMachine : (2R10+1>=5[20,3]) > 8[4,4]+1 > 9 > 成功 > 命中レベルC > [12]胴 -rand:5/10,4/10,4/10,3/10,9/10 -============================ -input: -EM[1...10]+1#3 -output: -EmbryoMachine : (2R10+1>=7[20,3]) > 7[1,6]+1 > 8 > 成功 > 命中レベルC > [12]胴 -rand:7/10,6/10,1/10,7/10,5/10 -============================ -input: -EM[1...10]+1#3 -output: -EmbryoMachine : (2R10+1>=5[20,3]) > 6[1,5]+1 > 7 > 成功 > 命中レベルC > [11]胴 -rand:5/10,5/10,1/10,4/10,7/10 -============================ -input: -EM[1...10]+1#3 -output: -EmbryoMachine : (2R10+1>=6[20,3]) > 17[7,10]+1 > 18 > 成功 > 命中レベルA > [10]胴 -rand:6/10,7/10,10/10,8/10,2/10 -============================ -input: -EM[1...10]+1@19#3 -output: -EmbryoMachine : (2R10+1>=2[19,3]) > 10[4,6]+1 > 11 > 成功 > 命中レベルC > [10]胴 -rand:2/10,6/10,4/10,4/10,6/10 -============================ -input: -EM[1...10]+1@19#3 -output: -EmbryoMachine : (2R10+1>=6[19,3]) > 16[6,10]+1 > 17 > 成功 > 命中レベルA > [14]右腕 -rand:6/10,6/10,10/10,8/10,6/10 -============================ -input: -EM[1...10]+1@19#3 -output: -EmbryoMachine : (2R10+1>=6[19,3]) > 9[1,8]+1 > 10 > 成功 > 命中レベルB > [9]左腕 -rand:6/10,1/10,8/10,5/10,4/10 -============================ -input: -EM[1...10]+1@19#3 -output: -EmbryoMachine : (2R10+1>=5[19,3]) > 14[6,8]+1 > 15 > 成功 > 命中レベルB > [9]左腕 -rand:5/10,8/10,6/10,5/10,4/10 -============================ -input: -EM[1...10]+1@19#3 -output: -EmbryoMachine : (2R10+1>=7[19,3]) > 10[4,6]+1 > 11 > 成功 > 命中レベルC > [7]左脚 -rand:7/10,4/10,6/10,5/10,2/10 -============================ -input: -EM[1...10]+1@19#3 -output: -EmbryoMachine : (2R10+1>=6[19,3]) > 11[3,8]+1 > 12 > 成功 > 命中レベルB > [12]胴 -rand:6/10,8/10,3/10,4/10,8/10 -============================ -input: -EM[1...10]+1@19#3 -output: -EmbryoMachine : (2R10+1>=4[19,3]) > 16[6,10]+1 > 17 > 成功 > 命中レベルA > [4]頭 -rand:4/10,6/10,10/10,3/10,1/10 -============================ -input: -EM[1...10]+1@19#3 -output: -EmbryoMachine : (2R10+1>=2[19,3]) > 7[3,4]+1 > 8 > 成功 > 命中レベルC > [13]右腕 -rand:2/10,3/10,4/10,9/10,4/10 -============================ -input: -EM[1...10]+1@19#3 -output: -EmbryoMachine : (2R10+1>=1[19,3]) > 10[4,6]+1 > 11 > 成功 > 命中レベルC > [9]左腕 -rand:1/10,4/10,6/10,5/10,4/10 -============================ -input: -EM[1...10]+1@19#3 -output: -EmbryoMachine : (2R10+1>=8[19,3]) > 12[5,7]+1 > 13 > 成功 > 命中レベルB > [11]胴 -rand:8/10,7/10,5/10,3/10,8/10 -============================ -input: -EM[1...10]+2@20#2 -output: -EmbryoMachine : (2R10+2>=4[20,2]) > 10[2,8]+2 > 12 > 成功 > 命中レベルB > [10]胴 -rand:4/10,2/10,8/10,7/10,3/10 -============================ -input: -EM[1...10]+2@20#2 -output: -EmbryoMachine : (2R10+2>=6[20,2]) > 13[3,10]+2 > 15 > 成功 > 命中レベルA > [10]胴 -rand:6/10,10/10,3/10,4/10,6/10 -============================ -input: -EM[1...10]+2@20#2 -output: -EmbryoMachine : (2R10+2>=1[20,2]) > 18[9,9]+2 > 20 > 成功 > 命中レベルB > [10]胴 -rand:1/10,9/10,9/10,9/10,1/10 -============================ -input: -EM[1...10]+2@20#2 -output: -EmbryoMachine : (2R10+2>=10[20,2]) > 18[8,10]+2 > 20 > 成功 > 命中レベルA > [12]胴 -rand:10/10,10/10,8/10,7/10,5/10 -============================ -input: -EM[1...10]+2@20#2 -output: -EmbryoMachine : (2R10+2>=7[20,2]) > 14[5,9]+2 > 16 > 成功 > 命中レベルB > [11]胴 -rand:7/10,9/10,5/10,5/10,6/10 -============================ -input: -EM[1...10]+2@20#2 -output: -EmbryoMachine : (2R10+2>=4[20,2]) > 8[1,7]+2 > 10 > 成功 > 命中レベルB > [8]左腕 -rand:4/10,1/10,7/10,5/10,3/10 -============================ -input: -EM[1...10]+2@20#2 -output: -EmbryoMachine : (2R10+2>=4[20,2]) > 12[2,10]+2 > 14 > 成功 > 命中レベルA > [14]右腕 -rand:4/10,2/10,10/10,8/10,6/10 -============================ -input: -EM[1...10]+2@20#2 -output: -EmbryoMachine : (2R10+2>=8[20,2]) > 9[2,7]+2 > 11 > 成功 > 命中レベルB > [10]胴 -rand:8/10,2/10,7/10,2/10,8/10 -============================ -input: -EM[1...10]+2@20#2 -output: -EmbryoMachine : (2R10+2>=1[20,2]) > 12[6,6]+2 > 14 > 成功 > 命中レベルC > [9]左腕 -rand:1/10,6/10,6/10,1/10,8/10 -============================ -input: -EM[1...10]+2@20#2 -output: -EmbryoMachine : (2R10+2>=2[20,2]) > 7[1,6]+2 > 9 > 成功 > 命中レベルC > [5]左脚 -rand:2/10,6/10,1/10,1/10,4/10 -============================ -input: -EM[1...10]-1@20#2 -output: -EmbryoMachine : (2R10-1>=8[20,2]) > 11[2,9]-1 > 10 > 成功 > 命中レベルB > [8]左腕 -rand:8/10,9/10,2/10,7/10,1/10 -============================ -input: -EM[1...10]-1@20#2 -output: -EmbryoMachine : (2R10-1>=4[20,2]) > 9[1,8]-1 > 8 > 成功 > 命中レベルB > [14]右腕 -rand:4/10,1/10,8/10,6/10,8/10 -============================ -input: -EM[1...10]-1@20#2 -output: -EmbryoMachine : (2R10-1>=4[20,2]) > 16[6,10]-1 > 15 > 成功 > 命中レベルA > [14]右腕 -rand:4/10,10/10,6/10,8/10,6/10 -============================ -input: -EM[1...10]-1@20#2 -output: -EmbryoMachine : (2R10-1>=7[20,2]) > 10[4,6]-1 > 9 > 成功 > 命中レベルC > [8]左腕 -rand:7/10,6/10,4/10,3/10,5/10 -============================ -input: -EM[1...10]-1@20#2 -output: -EmbryoMachine : (2R10-1>=6[20,2]) > 12[3,9]-1 > 11 > 成功 > 命中レベルB > [15]右脚 -rand:6/10,9/10,3/10,9/10,6/10 -============================ -input: -EM[1...10]-1@20#2 -output: -EmbryoMachine : (2R10-1>=1[20,2]) > 10[4,6]-1 > 9 > 成功 > 命中レベルC > [3]頭 -rand:1/10,6/10,4/10,1/10,2/10 -============================ -input: -EM[1...10]-1@20#2 -output: -EmbryoMachine : (2R10-1>=8[20,2]) > 6[1,5]-1 > 5 > 失敗 -rand:8/10,1/10,5/10,2/10,8/10 -============================ -input: -EM[1...10]-1@20#2 -output: -EmbryoMachine : (2R10-1>=2[20,2]) > 15[6,9]-1 > 14 > 成功 > 命中レベルB > [11]胴 -rand:2/10,6/10,9/10,1/10,10/10 -============================ -input: -EM[1...10]-1@20#2 -output: -EmbryoMachine : (2R10-1>=3[20,2]) > 14[7,7]-1 > 13 > 成功 > 命中レベルB > [9]左腕 -rand:3/10,7/10,7/10,3/10,6/10 -============================ -input: -EM[1...10]-1@20#2 -output: -EmbryoMachine : (2R10-1>=8[20,2]) > 19[9,10]-1 > 18 > 成功 > 命中レベルA > [10]胴 -rand:8/10,9/10,10/10,1/10,9/10 -============================ -input: -EM[1...10]+[1...5]@[18...20]#[1...3] -output: -EmbryoMachine : (2R10+4>=4[19,2]) > 12[6,6]+4 > 16 > 成功 > 命中レベルC > [3]頭 -rand:4/10,4/5,2/3,2/3,6/10,6/10,2/10,1/10 -============================ -input: -EM[1...10]+[1...5]@[18...20]#[1...3] -output: -EmbryoMachine : (2R10+1>=8[19,1]) > 10[2,8]+1 > 11 > 成功 > 命中レベルB > [10]胴 -rand:8/10,1/5,2/3,1/3,2/10,8/10,4/10,6/10 -============================ -input: -EM[1...10]+[1...5]@[18...20]#[1...3] -output: -EmbryoMachine : (2R10+3>=7[19,3]) > 7[1,6]+3 > 10 > 成功 > 命中レベルC > [6]左脚 -rand:7/10,3/5,2/3,3/3,1/10,6/10,4/10,2/10 -============================ -input: -EM[1...10]+[1...5]@[18...20]#[1...3] -output: -EmbryoMachine : (2R10+1>=10[19,2]) > 3[1,2]+1 > 4 > 失敗 -rand:10/10,1/5,2/3,2/3,2/10,1/10,1/10,5/10 -============================ -input: -EM[1...10]+[1...5]@[18...20]#[1...3] -output: -EmbryoMachine : (2R10+2>=2[20,2]) > 13[4,9]+2 > 15 > 成功 > 命中レベルB > [17]右脚 -rand:2/10,2/5,3/3,2/3,4/10,9/10,7/10,10/10 -============================ -input: -EM[1...10]+[1...5]@[18...20]#[1...3] -output: -EmbryoMachine : (2R10+3>=8[20,2]) > 11[3,8]+3 > 14 > 成功 > 命中レベルB > [4]頭 -rand:8/10,3/5,3/3,2/3,8/10,3/10,1/10,3/10 -============================ -input: -EM[1...10]+[1...5]@[18...20]#[1...3] -output: -EmbryoMachine : (2R10+3>=5[18,2]) > 9[1,8]+3 > 12 > 成功 > 命中レベルB > [13]右腕 -rand:5/10,3/5,1/3,2/3,1/10,8/10,9/10,4/10 -============================ -input: -EM[1...10]+[1...5]@[18...20]#[1...3] -output: -EmbryoMachine : (2R10+5>=7[18,1]) > 10[3,7]+5 > 15 > 成功 > 命中レベルB > [15]右脚 -rand:7/10,5/5,1/3,1/3,3/10,7/10,5/10,10/10 -============================ -input: -EM[1...10]+[1...5]@[18...20]#[1...3] -output: -EmbryoMachine : (2R10+2>=9[18,3]) > 11[5,6]+2 > 13 > 成功 > 命中レベルC > [14]右腕 -rand:9/10,2/5,1/3,3/3,5/10,6/10,9/10,5/10 -============================ -input: -EM[1...10]+[1...5]@[18...20]#[1...3] -output: -EmbryoMachine : (2R10+4>=2[19,3]) > 13[6,7]+4 > 17 > 成功 > 命中レベルB > [13]右腕 -rand:2/10,4/5,2/3,3/3,7/10,6/10,7/10,6/10 -============================ -input: -HLT -output: -EmbryoMachine : 命中部位表(11) > 胴 -rand:5/10,6/10 -============================ -input: -HLT -output: -EmbryoMachine : 命中部位表(16) > 右脚 -rand:7/10,9/10 -============================ -input: -HLT -output: -EmbryoMachine : 命中部位表(16) > 右脚 -rand:7/10,9/10 -============================ -input: -HLT -output: -EmbryoMachine : 命中部位表(10) > 胴 -rand:6/10,4/10 -============================ -input: -HLT -output: -EmbryoMachine : 命中部位表(9) > 左腕 -rand:6/10,3/10 -============================ -input: -HLT -output: -EmbryoMachine : 命中部位表(15) > 右脚 -rand:5/10,10/10 -============================ -input: -HLT -output: -EmbryoMachine : 命中部位表(6) > 左脚 -rand:5/10,1/10 -============================ -input: -HLT -output: -EmbryoMachine : 命中部位表(14) > 右腕 -rand:7/10,7/10 -============================ -input: -HLT -output: -EmbryoMachine : 命中部位表(7) > 左脚 -rand:3/10,4/10 -============================ -input: -HLT -output: -EmbryoMachine : 命中部位表(9) > 左腕 -rand:7/10,2/10 -============================ -input: -MFT -output: -EmbryoMachine : 白兵ファンブル表(3) > 激しく頭を打った。パイロットの肉体的負傷が2段階上昇する。 -rand:2/10,1/10 -============================ -input: -MFT -output: -EmbryoMachine : 白兵ファンブル表(12) > 大振りしすぎた。使用した白兵武器が搭載されている部位の反対の部位(右腕に搭載されているなら左側)に命中レベルCで命中する。 -rand:5/10,7/10 -============================ -input: -MFT -output: -EmbryoMachine : 白兵ファンブル表(9) > 激しい刃こぼれを起こした。使用した白兵武器の全てのダメージが戦闘終了まで-3される。 -rand:5/10,4/10 -============================ -input: -MFT -output: -EmbryoMachine : 白兵ファンブル表(6) > 武装が爆発した。使用した白兵武器が破損する。ダメージは発生しない。 -rand:5/10,1/10 -============================ -input: -MFT -output: -EmbryoMachine : 白兵ファンブル表(14) > 駆動系が損傷した。移動力が戦闘終了まで-2される(最低1)。 -rand:4/10,10/10 -============================ -input: -MFT -output: -EmbryoMachine : 白兵ファンブル表(12) > 大振りしすぎた。使用した白兵武器が搭載されている部位の反対の部位(右腕に搭載されているなら左側)に命中レベルCで命中する。 -rand:2/10,10/10 -============================ -input: -MFT -output: -EmbryoMachine : 白兵ファンブル表(4) > 過負荷で部位が爆発した。使用した白兵武器が搭載されている部位が全壊する。ダメージは発生せず、搭載されている武装も破損しない。 -rand:1/10,3/10 -============================ -input: -MFT -output: -EmbryoMachine : 白兵ファンブル表(12) > 大振りしすぎた。使用した白兵武器が搭載されている部位の反対の部位(右腕に搭載されているなら左側)に命中レベルCで命中する。 -rand:8/10,4/10 -============================ -input: -MFT -output: -EmbryoMachine : 白兵ファンブル表(10) > 地面の凹凸にはまった。次の2セグメントは移動を行うことができない。 -rand:1/10,9/10 -============================ -input: -MFT -output: -EmbryoMachine : 白兵ファンブル表(7) > 部分的に機能停止した。使用した白兵武器は戦闘終了まで使用できなくなる。 -rand:2/10,5/10 -============================ -input: -SFT -output: -EmbryoMachine : 射撃ファンブル表(10) > 熱量が激しく増大した。使用した射撃武器の消費弾薬が戦闘終了まで+3される。 -rand:1/10,9/10 -============================ -input: -SFT -output: -EmbryoMachine : 射撃ファンブル表(5) > 誤射をした。対象に最も近い味方機体に命中レベルAで命中する。 -rand:2/10,3/10 -============================ -input: -SFT -output: -EmbryoMachine : 射撃ファンブル表(17) > 熱量が増大した。使用した射撃武器の消費弾薬が戦闘終了まで+2される。 -rand:8/10,9/10 -============================ -input: -SFT -output: -EmbryoMachine : 射撃ファンブル表(12) > 弾薬が劣化した。使用した射撃武器の全てのダメージが戦闘終了まで-2される。 -rand:3/10,9/10 -============================ -input: -SFT -output: -EmbryoMachine : 射撃ファンブル表(11) > 暴発した。使用した射撃武器が搭載されている部位に命中レベルBで命中する。 -rand:3/10,8/10 -============================ -input: -SFT -output: -EmbryoMachine : 射撃ファンブル表(18) > 砲身がわずかに歪んだ。使用した射撃武器による射撃攻撃の命中値が戦闘終了まで-1される。 -rand:10/10,8/10 -============================ -input: -SFT -output: -EmbryoMachine : 射撃ファンブル表(11) > 暴発した。使用した射撃武器が搭載されている部位に命中レベルBで命中する。 -rand:4/10,7/10 -============================ -input: -SFT -output: -EmbryoMachine : 射撃ファンブル表(15) > 誤射をした。自機に最も近い味方機体に命中レベルBで命中する。 -rand:10/10,5/10 -============================ -input: -SFT -output: -EmbryoMachine : 射撃ファンブル表(7) > 転倒した。次のセグメントのアクションが待機に変更される。 -rand:5/10,2/10 -============================ -input: -SFT -output: -EmbryoMachine : 射撃ファンブル表(9) > 砲身が大きく歪んだ。使用した射撃武器による射撃攻撃の命中値が戦闘終了まで-3される。 -rand:3/10,6/10 -============================ -input: -2D10>=? 目標値?でバグらない -output: -EmbryoMachine : (2D10>=?) > 10[5,5] > 10 > 失敗 -rand:5/10,5/10 diff --git a/src/src_bcdice/test/data/EndBreaker.txt b/src/src_bcdice/test/data/EndBreaker.txt deleted file mode 100644 index a4fcc5fff..000000000 --- a/src/src_bcdice/test/data/EndBreaker.txt +++ /dev/null @@ -1,47 +0,0 @@ -input: -2EB -output: -EndBreaker : [26] > [2:1個] [6:1個] -rand:6/6,2/6 -============================ -input: -2EB -output: -EndBreaker : [11] ダブルトリガー! [1336] ダブルトリガー! [25] > [2:1個] [3:2個] [5:1個] [6:1個] -rand:1/6,1/6,3/6,1/6,3/6,6/6,2/6,5/6 -============================ -input: -2EB -output: -EndBreaker : [15] ダブルトリガー! [22] > [2:2個] [5:1個] -rand:5/6,1/6,2/6,2/6 -============================ -input: -2EB -output: -EndBreaker : [15] ダブルトリガー! [12] ダブルトリガー! [24] > [2:2個] [4:1個] [5:1個] -rand:1/6,5/6,2/6,1/6,4/6,2/6 -============================ -input: -3EB -output: -EndBreaker : [146] ダブルトリガー! [36] > [3:1個] [4:1個] [6:2個] -rand:1/6,4/6,6/6,6/6,3/6 -============================ -input: -LDUT -output: -EndBreaker : 生死不明表(33):12日強力なマスカレイドにとらわれ、実験台にされた。 -rand:3/6,3/6 -============================ -input: -LDUT -output: -EndBreaker : 生死不明表(31): 1日:生還! -rand:3/6,1/6 -============================ -input: -LDUT -output: -EndBreaker : 生死不明表(66): - :「五分五分」の一般判定。失敗すると死亡。 -rand:6/6,6/6 diff --git a/src/src_bcdice/test/data/EtrianOdysseySRS.txt b/src/src_bcdice/test/data/EtrianOdysseySRS.txt deleted file mode 100644 index f31a00bba..000000000 --- a/src/src_bcdice/test/data/EtrianOdysseySRS.txt +++ /dev/null @@ -1,155 +0,0 @@ -input: -SQ>=7 -output: -EtrianOdysseySRS : (2D6>=7[12,2]) > 7[2,5] > 7 > 成功 -rand:5/6,2/6 -============================ -input: -SQ-1>=10 -output: -EtrianOdysseySRS : (2D6-1>=10[12,2]) > 11[5,6]-1 > 10 > 成功 -rand:5/6,6/6 -============================ -input: -SEO+1>=5[11,3] -output: -EtrianOdysseySRS : (2D6+1>=5[11,3]) > 11[5,6]+1 > 12 > 自動成功###secret dice### -rand:5/6,6/6 -============================ -input: -SQ1>=7 -output: - -rand: -============================ -input: -SQA>=7 -output: - -rand: -============================ -input: -EO1>=7 -output: - -rand: -============================ -input: -EOA>=7 -output: - -rand: -============================ -input: -D66 -output: -EtrianOdysseySRS : (D66) > 65 -rand:6/6,5/6 -============================ -input: -SQ -output: -EtrianOdysseySRS : (2D6[12,2]) > 12[6,6] > 12 > 自動成功 -rand:6/6,6/6 -============================ -input: -SQ -output: -EtrianOdysseySRS : (2D6[12,2]) > 2[1,1] > 2 > 自動失敗 -rand:1/6,1/6 -============================ -input: -SQ1 -output: - -rand: -============================ -input: -SQA -output: - -rand: -============================ -input: -SQ+1 -output: -EtrianOdysseySRS : (2D6+1[12,2]) > 11[5,6]+1 > 12 -rand:5/6,6/6 -============================ -input: -SQ-1 -output: -EtrianOdysseySRS : (2D6-1[12,2]) > 3[1,2]-1 > 2 -rand:2/6,1/6 -============================ -input: -SQ+1[11,3] -output: -EtrianOdysseySRS : (2D6+1[11,3]) > 6[2,4]+1 > 7 -rand:4/6,2/6 -============================ -input: -SQ+1[11,3] -output: -EtrianOdysseySRS : (2D6+1[11,3]) > 11[5,6]+1 > 12 > 自動成功 -rand:6/6,5/6 -============================ -input: -SQ+1[11,3] -output: -EtrianOdysseySRS : (2D6+1[11,3]) > 3[1,2]+1 > 4 > 自動失敗 -rand:2/6,1/6 -============================ -input: -EO -output: -EtrianOdysseySRS : (2D6[12,2]) > 12[6,6] > 12 > 自動成功 -rand:6/6,6/6 -============================ -input: -EO -output: -EtrianOdysseySRS : (2D6[12,2]) > 2[1,1] > 2 > 自動失敗 -rand:1/6,1/6 -============================ -input: -EO1 -output: - -rand: -============================ -input: -EOA -output: - -rand: -============================ -input: -EO+1 -output: -EtrianOdysseySRS : (2D6+1[12,2]) > 11[5,6]+1 > 12 -rand:5/6,6/6 -============================ -input: -EO-1 -output: -EtrianOdysseySRS : (2D6-1[12,2]) > 3[1,2]-1 > 2 -rand:2/6,1/6 -============================ -input: -EO+1[11,3] -output: -EtrianOdysseySRS : (2D6+1[11,3]) > 6[2,4]+1 > 7 -rand:4/6,2/6 -============================ -input: -EO+1[11,3] -output: -EtrianOdysseySRS : (2D6+1[11,3]) > 11[5,6]+1 > 12 > 自動成功 -rand:6/6,5/6 -============================ -input: -EO+1[11,3] -output: -EtrianOdysseySRS : (2D6+1[11,3]) > 3[1,2]+1 > 4 > 自動失敗 -rand:2/6,1/6 diff --git a/src/src_bcdice/test/data/Fiasco.txt b/src/src_bcdice/test/data/Fiasco.txt deleted file mode 100644 index 67599f2a7..000000000 --- a/src/src_bcdice/test/data/Fiasco.txt +++ /dev/null @@ -1,119 +0,0 @@ -input: -FS12 -output: -Fiasco : 1 => 3個 2 => 2個 3 => 1個 4 => 3個 5 => 1個 6 => 2個 -rand:1/6,2/6,1/6,3/6,4/6,6/6,4/6,5/6,6/6,4/6,2/6,1/6 -============================ -input: -W3B3 -output: -Fiasco : 白6[1,2,3] 黒15[4,5,6] > 黒9 -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -W3B3 -output: -Fiasco : 白12[4,5,3] 黒8[1,5,2] > 白4 -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -W6 -output: -Fiasco : 白20[4,5,3,1,5,2] > 白20 -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -B6 -output: -Fiasco : 黒20[4,5,3,1,5,2] > 黒20 -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -W6B0 -output: -Fiasco : 白20[4,5,3,1,5,2] 黒0[0] > 白20 -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -B6W0 -output: -Fiasco : 黒20[4,5,3,1,5,2] 白0[0] > 黒20 -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -B3W3 -output: -Fiasco : 黒8[1,5,2] 白8[1,5,2] > 0 -rand:1/6,5/6,2/6,1/6,5/6,2/6 -============================ -input: -W3W3 -output: -Fiasco : W3W3:白指定(W)は重複できません。 -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -B3B3 -output: -Fiasco : B3B3:黒指定(B)は重複できません。 -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -SFS12 -output: -Fiasco : 1 => 3個 2 => 2個 3 => 1個 4 => 3個 5 => 1個 6 => 2個###secret dice### -rand:1/6,2/6,1/6,3/6,4/6,6/6,4/6,5/6,6/6,4/6,2/6,1/6 -============================ -input: -SW3B3 -output: -Fiasco : 白6[1,2,3] 黒15[4,5,6] > 黒9###secret dice### -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -SW3B3 -output: -Fiasco : 白12[4,5,3] 黒8[1,5,2] > 白4###secret dice### -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -SW6 -output: -Fiasco : 白20[4,5,3,1,5,2] > 白20###secret dice### -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -SB6 -output: -Fiasco : 黒20[4,5,3,1,5,2] > 黒20###secret dice### -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -SW6B0 -output: -Fiasco : 白20[4,5,3,1,5,2] 黒0[0] > 白20###secret dice### -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -SB6W0 -output: -Fiasco : 黒20[4,5,3,1,5,2] 白0[0] > 黒20###secret dice### -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -SB3W3 -output: -Fiasco : 黒8[1,5,2] 白8[1,5,2] > 0###secret dice### -rand:1/6,5/6,2/6,1/6,5/6,2/6 -============================ -input: -SW3W3 -output: -Fiasco : W3W3:白指定(W)は重複できません。###secret dice### -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -SB3B3 -output: -Fiasco : B3B3:黒指定(B)は重複できません。###secret dice### -rand:4/6,5/6,3/6,1/6,5/6,2/6 diff --git a/src/src_bcdice/test/data/Fiasco_Korean.txt b/src/src_bcdice/test/data/Fiasco_Korean.txt deleted file mode 100644 index e4a6ae68a..000000000 --- a/src/src_bcdice/test/data/Fiasco_Korean.txt +++ /dev/null @@ -1,119 +0,0 @@ -input: -FS12 -output: -Fiasco : 1 => 3개 2 => 2개 3 => 1개 4 => 3개 5 => 1개 6 => 2개 -rand:1/6,2/6,1/6,3/6,4/6,6/6,4/6,5/6,6/6,4/6,2/6,1/6 -============================ -input: -W3B3 -output: -Fiasco : 흰색6[1,2,3] 검은색15[4,5,6] > 검은색9 -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -W3B3 -output: -Fiasco : 흰색12[4,5,3] 검은색8[1,5,2] > 흰색4 -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -W6 -output: -Fiasco : 흰색20[4,5,3,1,5,2] > 흰색20 -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -B6 -output: -Fiasco : 검은색20[4,5,3,1,5,2] > 검은색20 -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -W6B0 -output: -Fiasco : 흰색20[4,5,3,1,5,2] 검은색0[0] > 흰색20 -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -B6W0 -output: -Fiasco : 검은색20[4,5,3,1,5,2] 흰색0[0] > 검은색20 -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -B3W3 -output: -Fiasco : 검은색8[1,5,2] 흰색8[1,5,2] > 0 -rand:1/6,5/6,2/6,1/6,5/6,2/6 -============================ -input: -W3W3 -output: -Fiasco : W3W3:흰색 지정(W)은 중복될 수 없습니다. -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -B3B3 -output: -Fiasco : B3B3:검은색 지정(B)은 중복될 수 없습니다. -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -SFS12 -output: -Fiasco : 1 => 3개 2 => 2개 3 => 1개 4 => 3개 5 => 1개 6 => 2개###secret dice### -rand:1/6,2/6,1/6,3/6,4/6,6/6,4/6,5/6,6/6,4/6,2/6,1/6 -============================ -input: -SW3B3 -output: -Fiasco : 흰색6[1,2,3] 검은색15[4,5,6] > 검은색9###secret dice### -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -SW3B3 -output: -Fiasco : 흰색12[4,5,3] 검은색8[1,5,2] > 흰색4###secret dice### -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -SW6 -output: -Fiasco : 흰색20[4,5,3,1,5,2] > 흰색20###secret dice### -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -SB6 -output: -Fiasco : 검은색20[4,5,3,1,5,2] > 검은색20###secret dice### -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -SW6B0 -output: -Fiasco : 흰색20[4,5,3,1,5,2] 검은색0[0] > 흰색20###secret dice### -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -SB6W0 -output: -Fiasco : 검은색20[4,5,3,1,5,2] 흰색0[0] > 검은색20###secret dice### -rand:4/6,5/6,3/6,1/6,5/6,2/6 -============================ -input: -SB3W3 -output: -Fiasco : 검은색8[1,5,2] 흰색8[1,5,2] > 0###secret dice### -rand:1/6,5/6,2/6,1/6,5/6,2/6 -============================ -input: -SW3W3 -output: -Fiasco : W3W3:흰색 지정(W)은 중복될 수 없습니다.###secret dice### -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -SB3B3 -output: -Fiasco : B3B3:검은색 지정(B)은 중복될 수 없습니다.###secret dice### -rand:4/6,5/6,3/6,1/6,5/6,2/6 \ No newline at end of file diff --git a/src/src_bcdice/test/data/FilledWith.txt b/src/src_bcdice/test/data/FilledWith.txt deleted file mode 100644 index 146d1ed6c..000000000 --- a/src/src_bcdice/test/data/FilledWith.txt +++ /dev/null @@ -1,156 +0,0 @@ -input: -3FW -output: -FilledWith : (3FW) > 10[3,4,3] -rand:3/6,4/6,3/6 -============================ -input: -3FW -output: -FilledWith : (3FW) > 3[1,1,1] > クリティカル! -rand:1/6,1/6,1/6 -============================ -input: -3FW -output: -FilledWith : (3FW) > 18[6,6,6] > ファンブル! -rand:6/6,6/6,6/6 -============================ -input: -3FW#15 -output: -FilledWith : (3FW#15) > 15[6,4,5] > ファンブル! -rand:6/6,4/6,5/6 -============================ -input: -3FW<=15 -output: -FilledWith : (3FW<=15) > 12[1,6,5] > 成功(成功度:3) -rand:1/6,6/6,5/6 -============================ -input: -3FW<=13-4 -output: -FilledWith : (3FW<=9) > 11[3,3,5] > 失敗(失敗度:-2) -rand:3/6,3/6,5/6 -============================ -input: -3FW@6<=12+3 -output: -FilledWith : (3FW@6<=15) > 6[4,1,1] > クリティカル! -rand:4/6,1/6,1/6 -============================ -input: -10-3FW -output: -FilledWith : (3FW<=10) > 9[2,4,3] > 成功(成功度:1) -rand:2/6,4/6,3/6 -============================ -input: -10+2-3FW -output: -FilledWith : (3FW<=12) > 9[1,4,4] > 成功(成功度:3) -rand:1/6,4/6,4/6 -============================ -input: -10+2-3FW@8#8 -output: -FilledWith : (3FW@8#8<=12) > 8[1,4,3] > クリティカル! -rand:1/6,4/6,3/6 -============================ -input: -HST -output: -FilledWith : 【必殺技!】(2):[命中]判定と致傷力に「SLv×10」のボーナスを得る。 -rand:2/6 -============================ -input: -COOK1 -output: -FilledWith : マジカルクッキング(2):パリパリ小魚 -rand:2/6 -============================ -input: -COOK5 -output: -FilledWith : マジカルクッキング(6554):ヘブンズランチ -rand:6/6,5/6,5/6,4/6 -============================ -input: -LOTN -output: -FilledWith : ナンバーワンノーマルくじ(43):ヤコ仮面or梟の文鎮(選択可) -rand:4/6,3/6 -============================ -input: -LOTP -output: -FilledWith : ナンバーワンプレミアムくじ(46662):天使の望遠鏡orデスの目覚まし時計(選択可) -rand:4/6,6/6,6/6,6/6,2/6 -============================ -input: -TRAPE -output: -FilledWith : トラップ表<初級>(7):スロット:解除に失敗しても害はないが、スロットが揃うまで開かない宝箱。スロットを1回まわすには100GPが必要。行動を消費して[感覚-4]判定に成功すればスロットは揃う。有利な特異点「ビビット反射」があれば判定に+4のボーナス。 -rand:4/6,1/6,2/6 -============================ -input: -TRS1 -output: -FilledWith : 財宝表(1):高級HPポーション(消耗品) -rand:1/6 -============================ -input: -TRS2+2 -output: -FilledWith : 財宝表(3):ミスリルメイル(鎧) -rand:3/6 -============================ -input: -ROPN -output: -FilledWith : 迷宮追加オプション表<中級>(25):ミミック狂暴化:「全地形2-5」のミミックの致傷力に+30のボーナス。ミミックを見破った場合に得られるGPが1000GP増加する。 -rand:2/6,5/6 -============================ -input: -RANDH -output: -FilledWith : ランダムイベント表(633):墓場<上級>:道が途切れ、草が伸び放題の荒れ地に出る。方向もわからず、進むには骨が折れそうだ…[体力-6]判定を行い、成功すればクリア時の財宝ランク+1。失敗するとクリア時の財宝ランク-1。 -rand:6/6,3/6,3/6 -============================ -input: -RANDL5 -output: -FilledWith : ランダムイベント表(561):森林<悪夢>:魔族の狩りで傷ついた狼を発見する。ラウンド終了までに[HP]を1点でも回復してやればふらふらと歩きだし、木の根元でここを掘れというように吠える。埋まっていたものは1Dを振って決定する。 ----------- -1:犬の糞(ゴミ) -2:10GP -3:財宝ランク6のアイテム -4:財宝ランク7のアイテム -5:財宝ランク8のアイテム -6:うぃっしゅすたー(大事なもの) -rand:6/6,1/6 -============================ -input: -RENCE -output: -FilledWith : ランダムイベント表(142):洞窟<初級>:獣の皮をかぶった魔族が狩った獲物の取り分でもめているようだ。彼らは興奮して争っているが、PCたちを見つけると向きを変えて襲い掛かってくる!エネミーとエンカウント。「マジカルクッキング」で持ち歩くタイプのものを作っていた場合、それを渡すことで戦闘を回避することもできる。 -rand:1/6,2/6 -============================ -input: -RENCN2 -output: -FilledWith : ランダムイベント表(243):遺跡<中級>:魔族が障害物に身を隠しながら狙撃してきた!エネミーとエンカウント。障害物のため、エネミーは近接攻撃に対する防護点に+30のボーナス。 -rand:3/6 -============================ -input: -REDH343 -output: -FilledWith : エネミーデータ表(343):山岳<上級>:サーバントマスター(CL35)1匹、デュラハン(CL22)2匹 -rand: -============================ -input: -REDL465 -output: -FilledWith : エネミーデータ表(465):水辺<悪夢>:リッチ(CL44)3匹 -rand: diff --git a/src/src_bcdice/test/data/FullMetalPanic.txt b/src/src_bcdice/test/data/FullMetalPanic.txt deleted file mode 100644 index f8605b114..000000000 --- a/src/src_bcdice/test/data/FullMetalPanic.txt +++ /dev/null @@ -1,173 +0,0 @@ -input: -MG>=7 -output: -FullMetalPanic : (2D6>=7[12,2]) > 7[2,5] > 7 > 成功 -rand:5/6,2/6 -============================ -input: -MG-3>=8 -output: -FullMetalPanic : (2D6-3>=8[12,2]) > 11[5,6]-3 > 8 > 成功 -rand:5/6,6/6 -============================ -input: -SMG+1>=5[11,3] -output: -FullMetalPanic : (2D6+1>=5[11,3]) > 11[5,6]+1 > 12 > 自動成功###secret dice### -rand:5/6,6/6 -============================ -input: -MG1>=7 -output: - -rand: -============================ -input: -MGA>=7 -output: - -rand: -============================ -input: -FP>=7 -output: -FullMetalPanic : (2D6>=7[12,2]) > 7[2,5] > 7 > 成功 -rand:5/6,2/6 -============================ -input: -FP-3>=8 -output: -FullMetalPanic : (2D6-3>=8[12,2]) > 11[5,6]-3 > 8 > 成功 -rand:5/6,6/6 -============================ -input: -SFP+1>=5[11,3] -output: -FullMetalPanic : (2D6+1>=5[11,3]) > 11[5,6]+1 > 12 > 自動成功###secret dice### -rand:5/6,6/6 -============================ -input: -FP1>=7 -output: - -rand: -============================ -input: -FPA>=7 -output: - -rand: -============================ -input: -D66 -output: -FullMetalPanic : (D66) > 65 -rand:6/6,5/6 -============================ -input: -MG -output: -FullMetalPanic : (2D6[12,2]) > 12[6,6] > 12 > 自動成功 -rand:6/6,6/6 -============================ -input: -MG -output: -FullMetalPanic : (2D6[12,2]) > 2[1,1] > 2 > 自動失敗 -rand:1/6,1/6 -============================ -input: -MG1 -output: - -rand: -============================ -input: -MGA -output: - -rand: -============================ -input: -FP -output: -FullMetalPanic : (2D6[12,2]) > 12[6,6] > 12 > 自動成功 -rand:6/6,6/6 -============================ -input: -FP -output: -FullMetalPanic : (2D6[12,2]) > 2[1,1] > 2 > 自動失敗 -rand:1/6,1/6 -============================ -input: -FP1 -output: - -rand: -============================ -input: -FPA -output: - -rand: -============================ -input: -MG+1 -output: -FullMetalPanic : (2D6+1[12,2]) > 11[5,6]+1 > 12 -rand:5/6,6/6 -============================ -input: -MG-1 -output: -FullMetalPanic : (2D6-1[12,2]) > 3[1,2]-1 > 2 -rand:2/6,1/6 -============================ -input: -MG+1[11,3] -output: -FullMetalPanic : (2D6+1[11,3]) > 6[2,4]+1 > 7 -rand:4/6,2/6 -============================ -input: -MG+1[11,3] -output: -FullMetalPanic : (2D6+1[11,3]) > 11[5,6]+1 > 12 > 自動成功 -rand:6/6,5/6 -============================ -input: -MG+1[11,3] -output: -FullMetalPanic : (2D6+1[11,3]) > 3[1,2]+1 > 4 > 自動失敗 -rand:2/6,1/6 -============================ -input: -FP+1 -output: -FullMetalPanic : (2D6+1[12,2]) > 11[5,6]+1 > 12 -rand:5/6,6/6 -============================ -input: -FP-1 -output: -FullMetalPanic : (2D6-1[12,2]) > 3[1,2]-1 > 2 -rand:2/6,1/6 -============================ -input: -FP+1[11,3] -output: -FullMetalPanic : (2D6+1[11,3]) > 6[2,4]+1 > 7 -rand:4/6,2/6 -============================ -input: -FP+1[11,3] -output: -FullMetalPanic : (2D6+1[11,3]) > 11[5,6]+1 > 12 > 自動成功 -rand:6/6,5/6 -============================ -input: -FP+1[11,3] -output: -FullMetalPanic : (2D6+1[11,3]) > 3[1,2]+1 > 4 > 自動失敗 -rand:2/6,1/6 diff --git a/src/src_bcdice/test/data/FutariSousa.txt b/src/src_bcdice/test/data/FutariSousa.txt deleted file mode 100644 index a9735551a..000000000 --- a/src/src_bcdice/test/data/FutariSousa.txt +++ /dev/null @@ -1,369 +0,0 @@ -input: -DT -output: -FutariSousa : DT(4,3) > 成功 -rand:4/10,3/10 -============================ -input: -DT -output: -FutariSousa : DT(2,3) > 失敗 -rand:2/10,3/10 -============================ -input: -DT -output: -FutariSousa : DT(2,6) > スペシャル(助手の余裕を1点獲得) -rand:2/10,6/10 -============================ -input: -DT -output: -FutariSousa : DT(6,6) > スペシャル(助手の余裕を1点獲得) -rand:6/10,6/10 -============================ -input: -1DT -output: -FutariSousa : 1DT(3) > 失敗 -rand:3/10 -============================ -input: -1DT -output: -FutariSousa : 1DT(4) > 成功 -rand:4/10 -============================ -input: -1DT -output: -FutariSousa : 1DT(6) > スペシャル(助手の余裕を1点獲得) -rand:6/10 -============================ -input: -1DT -output: -FutariSousa : 1DT(7) > 成功 -rand:7/10 -============================ -input: -1DT -output: -FutariSousa : 1DT(10) > 成功 -rand:10/10 -============================ -input: -3DT -output: -FutariSousa : 3DT(3,4,1) > 成功 -rand:3/10,4/10,1/10 -============================ -input: -3DT -output: -FutariSousa : 3DT(3,2,1) > 失敗 -rand:3/10,2/10,1/10 -============================ -input: -AS -output: -FutariSousa : AS(4,3) > 成功(余裕1点と、探偵から助手への感情を獲得) -rand:4/6,3/6 -============================ -input: -AS -output: -FutariSousa : AS(2,3) > 失敗 -rand:2/6,3/6 -============================ -input: -AS -output: -FutariSousa : AS(2,6) > スペシャル(余裕2点と、探偵から助手への感情を獲得) -rand:2/6,6/6 -============================ -input: -AS -output: -FutariSousa : AS(6,6) > スペシャル(余裕2点と、探偵から助手への感情を獲得) -rand:6/6,6/6 -============================ -input: -1AS -output: -FutariSousa : 1AS(3) > 失敗 -rand:3/6 -============================ -input: -1AS -output: -FutariSousa : 1AS(4) > 成功(余裕1点と、探偵から助手への感情を獲得) -rand:4/6 -============================ -input: -1AS -output: -FutariSousa : 1AS(6) > スペシャル(余裕2点と、探偵から助手への感情を獲得) -rand:6/6 -============================ -input: -3AS -output: -FutariSousa : 3AS(3,4,1) > 成功(余裕1点と、探偵から助手への感情を獲得) -rand:3/6,4/6,1/6 -============================ -input: -3AS -output: -FutariSousa : 3AS(3,2,1) > 失敗 -rand:3/6,2/6,1/6 -============================ -input: -SHRD -output: -FutariSousa : 異常な癖決定表(10) > 好きな「異常な癖」の表を使用する。 -rand:10/10 -============================ -input: -SHFM -output: -FutariSousa : 異常な癖・口から出る表(10) > 「黙っていろ」 -rand:10/10 -============================ -input: -SHBT -output: -FutariSousa : 異常な癖・強引な捜査表(10) > 勝手に鑑識を始める -rand:10/10 -============================ -input: -SHPI -output: -FutariSousa : 異常な癖・すっとぼけ表(10) > 関係者に誘導尋問を仕掛ける -rand:10/10 -============================ -input: -SHEG -output: -FutariSousa : 異常な癖・事件に夢中表(10) > 食事中でも、かまわずに事件の話をする -rand:10/10 -============================ -input: -SHWP -output: -FutariSousa : 異常な癖・パートナーと……表(10) > パートナーの耳元でいきなり喋り始める -rand:10/10 -============================ -input: -SHDS -output: -FutariSousa : 異常な癖・何かしている表(10) > しばらく何もしていない -rand:10/10 -============================ -input: -SHFT -output: -FutariSousa : 異常な癖・奇想天外表(10) > 事件とは関係なさそうな新聞の記事を読んでいる -rand:10/10 -============================ -input: -SHIN -output: -FutariSousa : 異常な癖・急なひらめき表(10) > 関係者と会話をしている最中にひらめく -rand:10/10 -============================ -input: -SHEM -output: -FutariSousa : 異常な癖・喜怒哀楽表(10) > ロボットのように決められたことだけをやる -rand:10/10 -============================ -input: -EVS -output: -FutariSousa : 現場にて/イベント表(6) > 逃げた人物(P.170) - 脱兎のごとく、誰かが現場から逃げている。 - その人物の走り方、焦り方は普通ではなかった。 - これは、何かを知っている。あるいは、何かを持ち去った可能性がある。 - PCたちは、追いかけ始めた。 -rand:6/6 -============================ -input: -EVW -output: -FutariSousa : なぜ?/イベント表(6) > 被害者の視点(P.176) - 被害者の身に何が起こったのか。 - 被害者は何を見たのか。 - そのヒントは、被害者自身が知っているはずだ。 -rand:6/6 -============================ -input: -EVN -output: -FutariSousa : 協力者と共に/イベント表(6) > 素人推理(P.182) - 事件関係者の前で、ゲストNPCが推理を披露している。 - だけど、その推理は穴だらけで……。 -rand:6/6 -============================ -input: -EVC -output: -FutariSousa : 向こうから/イベント表(6) > 探偵たちのピンチ(P.188) - 捜査は突然ストップした。 - その原因はわかっている。 - 原因を取り除かなければ、事件の調査どころではない。 -rand:6/6 -============================ -input: -EVV -output: -FutariSousa : VS容疑者/イベント表(6) > 鬼の居ぬ間に(P.194) - その容疑者の元を訪ねたとき、偶然にも席をはずしていた。 - これはチャンス。 - そう思ってしまうのが、探偵の悲しい性だ。 -rand:6/6 -============================ -input: -OBT -output: -FutariSousa : 調査の障害表(66) > 偶然が積み重なってうまくいかない -rand:6/6,6/6 -============================ -input: -ACT -output: -FutariSousa : 変調表(6) > 注目の的 -rand:6/6 -============================ -input: -EWT -output: -FutariSousa : 目撃者表(6) > 反社会主義者。判定技能:≪突破≫ -rand:6/6 -============================ -input: -WMT -output: -FutariSousa : 迷宮入り表(10) > 探偵は直感によって、真犯人を突き止めた。だが、真犯人を捕まえるための証拠がない。犯人を告発することができず、歯噛みをした。 -rand:10/10 -============================ -input: -BGDD -output: -FutariSousa : 探偵・運命の血統 背景表(10) > 『クローン』自分は有名な名探偵のDNAから生まれた存在だ。そのためか、名探偵の力は生まれながらに備わっていた。 -rand:10/10 -============================ -input: -BGDG -output: -FutariSousa : 探偵・天性の才能 背景表(10) > 『人工名探偵』自分は何者かによって軟禁されて探偵知識を詰め込まれた、「人口名探偵」だ。名探偵になるべくして育てられた自分は、その能力を期待通りに発揮することができる。 -rand:10/10 -============================ -input: -BGDM -output: -FutariSousa : 探偵・マニア 背景表(10) > 『正義のマニア』自分が信奉している何か(書物や科学など)が、事件に関わっているとなると、居ても立っても居られない。マニアとして、その謎を解明しなければならない。 -rand:10/10 -============================ -input: -BGAJ -output: -FutariSousa : 助手・正義の人 背景表(6) > 『正義の同志』パートナーも、一緒に正義のために事件解決をしてくれている。自分はそう感じている。思い込んでいるだけかもしれないが、その思い込みは止められない。ひょっとしたら自分の方がパートナーを振り回しているのかも。 -rand:6/6 -============================ -input: -BGAP -output: -FutariSousa : 助手・情熱の人 背景表(6) > 『放っておけない』パートナーのことを放っておくと何をしでかすかわからない。だから、自分が見張っていないといけない。そう感じた。 -rand:6/6 -============================ -input: -BGAI -output: -FutariSousa : 助手・巻き込まれの人 背景表(6) > 『偶然の積み重ね』パートナーが事件に直面するたびに居合わせる。それが繰り返されるうちに、いつの間にか親しくなっていた。今では、一緒にいることも多い。 -rand:6/6 -============================ -input: -HT -output: -FutariSousa : 身長表(6) > パートナーより少し高い/少し低い -rand:6/6 -============================ -input: -BT -output: -FutariSousa : たまり場表(10) > 二人だけが知っている秘密の場所 -rand:10/10 -============================ -input: -GRT -output: -FutariSousa : 関係表(66) > 一方的に知られている -rand:6/6,6/6 -============================ -input: -MIT -output: -FutariSousa : 思い出の品決定表(66) > 二人だけの秘密の交換日記 -rand:6/6,6/6 -============================ -input: -JBT66 -output: -FutariSousa : 職業表A(66) > パートナーと同じ -rand:6/6,6/6 -============================ -input: -JBT10 -output: -FutariSousa : 職業表B(10) > 学生 -rand:10/10 -============================ -input: -FST66 -output: -FutariSousa : ファッション特徴表A(66) > ファッションにこだわりがない -rand:6/6,6/6 -============================ -input: -FST10 -output: -FutariSousa : ファッション特徴表B(10) > ファッションにこだわりがない -rand:10/10 -============================ -input: -FLT66 -output: -FutariSousa : 感情表A(66) > 生活習慣 -rand:6/6,6/6 -============================ -input: -FLT10 -output: -FutariSousa : 感情表B(10) > 自分との関係 -rand:10/10 -============================ -input: -LDT66 -output: -FutariSousa : 好きなもの/嫌いなもの表A(66) > 銃 -rand:6/6,6/6 -============================ -input: -LDT10 -output: -FutariSousa : 好きなもの/嫌いなもの表B(10) > 知らないこと -rand:10/10 -============================ -input: -NCT66 -output: -FutariSousa : 呼び名表A(66) > 毎回呼び方が変わる -rand:6/6,6/6 -============================ -input: -NCT10 -output: -FutariSousa : 呼び名表B(10) > あだ名 -rand:10/10 -============================ diff --git a/src/src_bcdice/test/data/FutariSousa_Korean.txt b/src/src_bcdice/test/data/FutariSousa_Korean.txt deleted file mode 100644 index 845842222..000000000 --- a/src/src_bcdice/test/data/FutariSousa_Korean.txt +++ /dev/null @@ -1,369 +0,0 @@ -input: -DT -output: -FutariSousa : DT(4,3) > 성공 -rand:4/10,3/10 -============================ -input: -DT -output: -FutariSousa : DT(2,3) > 실패 -rand:2/10,3/10 -============================ -input: -DT -output: -FutariSousa : DT(2,6) > 스페셜(조수의 여유를 1점 획득) -rand:2/10,6/10 -============================ -input: -DT -output: -FutariSousa : DT(6,6) > 스페셜(조수의 여유를 1점 획득) -rand:6/10,6/10 -============================ -input: -1DT -output: -FutariSousa : 1DT(3) > 실패 -rand:3/10 -============================ -input: -1DT -output: -FutariSousa : 1DT(4) > 성공 -rand:4/10 -============================ -input: -1DT -output: -FutariSousa : 1DT(6) > 스페셜(조수의 여유를 1점 획득) -rand:6/10 -============================ -input: -1DT -output: -FutariSousa : 1DT(7) > 성공 -rand:7/10 -============================ -input: -1DT -output: -FutariSousa : 1DT(10) > 성공 -rand:10/10 -============================ -input: -3DT -output: -FutariSousa : 3DT(3,4,1) > 성공 -rand:3/10,4/10,1/10 -============================ -input: -3DT -output: -FutariSousa : 3DT(3,2,1) > 실패 -rand:3/10,2/10,1/10 -============================ -input: -AS -output: -FutariSousa : AS(4,3) > 성공(여유 1점과, 탐정의 조수를 향한 감정을 획득) -rand:4/6,3/6 -============================ -input: -AS -output: -FutariSousa : AS(2,3) > 실패 -rand:2/6,3/6 -============================ -input: -AS -output: -FutariSousa : AS(2,6) > 스페셜(여유 2점과, 탐정의 조수를 향한 감정을 획득) -rand:2/6,6/6 -============================ -input: -AS -output: -FutariSousa : AS(6,6) > 스페셜(여유 2점과, 탐정의 조수를 향한 감정을 획득) -rand:6/6,6/6 -============================ -input: -1AS -output: -FutariSousa : 1AS(3) > 실패 -rand:3/6 -============================ -input: -1AS -output: -FutariSousa : 1AS(4) > 성공(여유 1점과, 탐정의 조수를 향한 감정을 획득) -rand:4/6 -============================ -input: -1AS -output: -FutariSousa : 1AS(6) > 스페셜(여유 2점과, 탐정의 조수를 향한 감정을 획득) -rand:6/6 -============================ -input: -3AS -output: -FutariSousa : 3AS(3,4,1) > 성공(여유 1점과, 탐정의 조수를 향한 감정을 획득) -rand:3/6,4/6,1/6 -============================ -input: -3AS -output: -FutariSousa : 3AS(3,2,1) > 실패 -rand:3/6,2/6,1/6 -============================ -input: -SHRD -output: -FutariSousa : 이상한 버릇 결정표(10) > 원하는「이상한 버릇표」를 사용한다. -rand:10/10 -============================ -input: -SHFM -output: -FutariSousa : 이상한 버릇・지껄이다표(10) > 「잠자코 있어.」 -rand:10/10 -============================ -input: -SHBT -output: -FutariSousa : 이상한 버릇・강압적인 수사표(10) > 마음대로 감식을 시작한다. -rand:10/10 -============================ -input: -SHPI -output: -FutariSousa : 이상한 버릇・시치미 떼기표(10) > 관계자에게 유도 신문을 한다. -rand:10/10 -============================ -input: -SHEG -output: -FutariSousa : 이상한 버릇・사건에 몰두표(10) > 식사중이라도, 상관 없이 사건 이야기를 한다. -rand:10/10 -============================ -input: -SHWP -output: -FutariSousa : 이상한 버릇・파트너와……표(10) > 파트너의 귓가에 갑자기 말하기 시작한다. -rand:10/10 -============================ -input: -SHDS -output: -FutariSousa : 이상한 버릇・무언가 하고 있다표(10) > 잠시 아무 것도 하지 않는다. -rand:10/10 -============================ -input: -SHFT -output: -FutariSousa : 이상한 버릇・기상천외표(10) > 사건과는 관계 없을 것 같은 신문의 기사를 읽고 있다. -rand:10/10 -============================ -input: -SHIN -output: -FutariSousa : 이상한 버릇・갑작스런 번뜩임표(10) > 관계자와 대화를 나누는 중에 번뜩이다. -rand:10/10 -============================ -input: -SHEM -output: -FutariSousa : 이상한 버릇・희노애락표(10) > 로봇처럼 정해진 것만 한다. -rand:10/10 -============================ -input: -EVS -output: -FutariSousa : 현장에서/이벤트표(6) > 도망친 인물(P.170) - 매우 빠르게 누군가가 현장에서 도망치고 있다. - 그 인물의 달리는 모습이나 초조해하는 모습은 평범하지 않았다. - 이건, 무언가를 알고 있다. 혹은 무언가를 가지고 떠났을 가능성이 있다. - PC들은 쫓기 시작했다. -rand:6/6 -============================ -input: -EVW -output: -FutariSousa : 어째서?/이벤트표(6) > 피해자의 시점(P.176) - 피해자의 몸에 무슨 일이 일어났는가. - 피해자는 무엇을 보았는가. - 그 힌트는 피해자 자신이 알 것이다. -rand:6/6 -============================ -input: -EVN -output: -FutariSousa : 협력자와 함께/이벤트표(6) > 아마추어 추리(P.182) - 사건관계자 앞에서, 게스트 NPC가 추리를 선보이고 있다. - 하지만 그 추리는 구멍투성이고……. -rand:6/6 -============================ -input: -EVC -output: -FutariSousa : 상대쪽에서/이벤트표(6) > PC들의 위기(P.188) - 수사는 갑자기 멈췄다. - 그 원인은 알고 있다. - 원인을 제거하지 않으면 사건 조사는 할 수 없다. -rand:6/6 -============================ -input: -EVV -output: -FutariSousa : VS용의자/이벤트표(6) > 술래가 없는 사이에(P.194) - 그 용의자를 찾아갔을 때 우연히 자리를 비우고 있었다. - 이건 기회다. - 그렇게 생각하는 것이 바로 탐정의 슬픈 천성이다. -rand:6/6 -============================ -input: -OBT -output: -FutariSousa : 조사의 장애표(66) > 우연이 겹쳐서 잘 안 된다. -rand:6/6,6/6 -============================ -input: -ACT -output: -FutariSousa : 변조표(6) > 주목의 대상 -rand:6/6 -============================ -input: -EWT -output: -FutariSousa : 목격자표(6) > 반사회주의자. 판정기능:≪돌파≫ -rand:6/6 -============================ -input: -WMT -output: -FutariSousa : 미제사건표(10) > 탐정은 직감으로 진범을 밝혀냈다. 하지만 진범을 잡기 위한 증거가 없다. 범인을 고발하지 못해 이를 갈았다. -rand:10/10 -============================ -input: -BGDD -output: -FutariSousa : 탐정・운명의 혈통 배경표(10) > 『클론』자신은 유명한 명탐정의 DNA에서 태어난 존재다. 그래서인지 명탐정의 힘은 타고난 것이었다. -rand:10/10 -============================ -input: -BGDG -output: -FutariSousa : 탐정・천성의 재능 배경표(10) > 『인공 명탐정』자신은 누군가에게 연금되어 탐정 지식을 주입당한 「인공 명탐정」이다. 명탐정이 되도록 길러진 자신은 그 능력을 기대한 대로 발휘할 수 있다. -rand:10/10 -============================ -input: -BGDM -output: -FutariSousa : 탐정・마니아 배경표(10) > 『정의의 마니아』자신이 신봉하고 있는 무언가(서적, 과학 등)가 사건에 연루되면 좌불안석이다. 마니아로서 그 수수께끼를 풀어야 한다. -rand:10/10 -============================ -input: -BGAJ -output: -FutariSousa : 조수・정의로운 사람 배경표(6) > 『정의의 동지』파트너도 함께 정의를 위해 사건 해결을 해주고 있다. 자신은 그렇게 느끼고 있다. 그렇게 믿고 있을 뿐일지도 모르지만, 그 믿음은 멈출 수 없다. 어쩌면 자신이 파트너를 휘두르고 있는지도 모르겠다. -rand:6/6 -============================ -input: -BGAP -output: -FutariSousa : 조수・정렬적인 사람 배경표(6) > 『내버려둘 수 없다』파트너를 내버려두면 무슨 짓을 할지 모른다. 그러니까 자신이 지켜보고 있어야 돼. 그렇게 느꼈다. -rand:6/6 -============================ -input: -BGAI -output: -FutariSousa : 조수・말려든 사람 배경표(6) > 『우연의 연속』파트너가 사건에 직면할 때마다 마침 그 자리에 있다. 그러다 보니 어느새 친해져 있었다. 지금은 함께 있는 일도 많다. -rand:6/6 -============================ -input: -HT -output: -FutariSousa : 신장표(6) > 파트너보다 조금 크다/조금 작다 -rand:6/6 -============================ -input: -BT -output: -FutariSousa : 아지트표(10) > 둘만 알고 있는 비밀장소 -rand:10/10 -============================ -input: -GRT -output: -FutariSousa : 관계표(66) > 일방적으로 알려져 있다 -rand:6/6,6/6 -============================ -input: -MIT -output: -FutariSousa : 추억의 물건 결정표(66) > 둘만의 비밀교환일기 -rand:6/6,6/6 -============================ -input: -JBT66 -output: -FutariSousa : 직업표A(66) > 파트너와 같음 -rand:6/6,6/6 -============================ -input: -JBT10 -output: -FutariSousa : 직업표B(10) > 학생 -rand:10/10 -============================ -input: -FST66 -output: -FutariSousa : 패션 특징표A(66) > 패션에 구애받지 않는다 -rand:6/6,6/6 -============================ -input: -FST10 -output: -FutariSousa : 패션 특징표B(10) > 패션에 구애받지 않는다 -rand:10/10 -============================ -input: -FLT66 -output: -FutariSousa : 감정표A(66) > 생활습관 -rand:6/6,6/6 -============================ -input: -FLT10 -output: -FutariSousa : 감정표B(10) > 자신과의 관계 -rand:10/10 -============================ -input: -LDT66 -output: -FutariSousa : 좋아하는 것/싫어하는 것표A(66) > 총 -rand:6/6,6/6 -============================ -input: -LDT10 -output: -FutariSousa : 좋아하는 것/싫어하는 것표B(10) > 모르는 것 -rand:10/10 -============================ -input: -NCT66 -output: -FutariSousa : 호칭표A(66) > 매번 호칭이 바뀐다. -rand:6/6,6/6 -============================ -input: -NCT10 -output: -FutariSousa : 호칭표B(10) > 별명 -rand:10/10 -============================ \ No newline at end of file diff --git a/src/src_bcdice/test/data/Garako.txt b/src/src_bcdice/test/data/Garako.txt deleted file mode 100644 index c5c25206d..000000000 --- a/src/src_bcdice/test/data/Garako.txt +++ /dev/null @@ -1,226 +0,0 @@ -input: -PNM -output: -Garako : 名前表:ピグマー族(男)(1) > バビロン -rand:1/10 -============================ -input: -PNM -output: -Garako : 名前表:ピグマー族(男)(10) > サマルトリア -rand:10/10 -============================ -input: -ENM -output: -Garako : 名前表:エレメント族(男)(1) > アポロン -rand:1/10 -============================ -input: -ENF -output: -Garako : 名前表:エレメント族(女)(1) > クシナダ -rand:1/10 -============================ -input: -NNM -output: -Garako : 名前表:ノーマッド族(男)(1) > ドラム -rand:1/10 -============================ -input: -NNM -output: -Garako : 名前表:ノーマッド族(男)(1) > ドラム -rand:1/10 -============================ -input: -RNM -output: -Garako : 名前表:ラット族(男)(1) > ポチ -rand:1/10 -============================ -input: -RNF -output: -Garako : 名前表:ラット族(女)(1) > タマ -rand:1/10 -============================ -input: -BN1 -output: -Garako : 名前表:ブレイン族(その1)(1) > マリファナ -rand:1/10 -============================ -input: -BN2 -output: -Garako : 名前表:ブレイン族(その2)(1) > ニトロ -rand:1/10 -============================ -input: -TN1 -output: -Garako : 名前表:テンタクル族(その1)(1) > アップル -rand:1/10 -============================ -input: -TN2 -output: -Garako : 名前表:テンタクル族(その2)(1) > キノコ -rand:1/10 -============================ -input: -GR+1>=10 -output: -Garako : (1D10+1>=10) > 10[10]+1 > 11 > クリティカル -rand:10/10 -============================ -input: -GR+1>=10 -output: -Garako : (1D10+1>=10) > 9[9]+1 > 10 > 成功 -rand:9/10 -============================ -input: -GR+1>=10 -output: -Garako : (1D10+1>=10) > 8[8]+1 > 9 > 失敗 -rand:8/10 -============================ -input: -GR+1>=10 -output: -Garako : (1D10+1>=10) > 1[1]+1 > 2 > ファンブル -rand:1/10 -============================ -input: -GR+(1+2)>=10 -output: -Garako : (1D10+3>=10) > 8[8]+3 > 11 > 成功 -rand:8/10 -============================ -input: -GR+(1-1)>=10 -output: -Garako : (1D10>=10) > 8[8] > 8 > 失敗 -rand:8/10 -============================ -input: -IDI -output: -Garako : 個性表(1) > 〈近接武器熟練〉 近接攻撃の火力+1。 -rand:1/100 -============================ -input: -IDI -output: -Garako : 個性表(100) > 〈リザレクション〉 死んだ目標を生き返らせる。生き返った目標のHPは10になる。このシーンの間に死亡したキャラクターのみ目標にできる。(超能力) -rand:100/100 -============================ -input: -MTV -output: -Garako : 動機決定表(10) > 特に動機らしい動機はない。 -rand:10/10 -============================ -input: -HIT -output: -Garako : 部位決定チャート(1) > コックピット -rand:1/10 -============================ -input: -HIT -output: -Garako : 部位決定チャート(10) > レフトレッグ -rand:10/10 -============================ -input: -CDC0 -output: -Garako : 部位ダメージチャート:コックピット(1) > 小破(アーマー損傷):以後、この部位の【部位装甲】-1。 -rand: -============================ -input: -CDC1 -output: -Garako : 部位ダメージチャート:コックピット(1) > 小破(アーマー損傷):以後、この部位の【部位装甲】-1。 -rand: -============================ -input: -CDC10 -output: -Garako : 部位ダメージチャート:コックピット(10) > 修復不能(破壊):コックピットが[修復不能]となる。キミは2d10-【身体】点のHPダメージを受ける。ガラコはすべての機能を停止する。コックピットのハッチが自動的に開く。 -rand: -============================ -input: -CDC11 -output: -Garako : 部位ダメージチャート:コックピット(10) > 修復不能(破壊):コックピットが[修復不能]となる。キミは2d10-【身体】点のHPダメージを受ける。ガラコはすべての機能を停止する。コックピットのハッチが自動的に開く。 -rand: -============================ -input: -CDC -output: -rand: -============================ -input: -EDC10 -output: -Garako : 部位ダメージチャート:エンジン(10) > 修復不能(エンジン停止):エンジンが停止する。ガラコはすべての機能を停止する。コックピットのハッチが自動的に開く。【操作性】10の判定を行うこと。失敗するとエンジンが爆発する。その場合、すべての部位が[修復不能]となり、キミは2d10-【身体】点のダメージを受ける。 -rand: -============================ -input: -FDC9 -output: -Garako : 部位ダメージチャート:フレーム(9) > 大破(アーマー損傷):フレームに甚大なダメージを受ける。以後、この部位の【部位装甲】に-3。[弱体1]を受ける。 -rand: -============================ -input: -FDC10 -output: -Garako : 部位ダメージチャート:フレーム(10) > 修復不能(フレーム崩壊):フレームが[修復不能]となる。フレームの大部分が剥がれ落ち、ガラコの内部が晒される。以後、キミに対して部位狙いが行われる場合、その命中判定に対する修正(p21)は発生しなくなる。[弱体2]を受ける。 -rand: -============================ -input: -ADC10 -output: -Garako : 部位ダメージチャート:アーム(10) > 修復不能(破壊):ダメージを受けた側のアームが[修復不能]となる。[弱体2]を受ける。 -rand: -============================ -input: -LDC10 -output: -Garako : 部位ダメージチャート:レッグ(10) > 修復不能(破壊):ダメージを受けた側のレッグが[修復不能]となる。【移動力】-2。[弱体2]を受ける。 -rand: -============================ -input: -GCC -output: -Garako : ガラコ改造チャート表(10) > 【弱体無効】価格+500。このパーツへの部位ダメージによる[弱体]の効果を無視する。 -rand:10/10 -============================ -input: -WCC -output: -Garako : 武器改造チャート表(10) > 【回数無限】価格+500。武器の使用回数制限がなくなる。 -rand:10/10 -============================ -input: -EVC -output: -Garako : イベントチャート表(10) > 【最悪の敵】ズルワーン(『GTD』p29)が1体現れる。戦闘開始。 -rand:10/10 -============================ -input: -BSD -output: -Garako : 戦闘開始距離(10) > 15マス -rand:10/10 -============================ -input: -bsd -output: -Garako : 戦闘開始距離(1) > 3マス -rand:1/10 diff --git a/src/src_bcdice/test/data/GardenOrder.txt b/src/src_bcdice/test/data/GardenOrder.txt deleted file mode 100644 index 000170c4a..000000000 --- a/src/src_bcdice/test/data/GardenOrder.txt +++ /dev/null @@ -1,216 +0,0 @@ -input: -GO50 -output: -GardenOrder : D100<=50@10 > 50 > 成功 -rand:50/100 -============================ -input: -GO50 -output: -GardenOrder : D100<=50@10 > 51 > 失敗 -rand:51/100 -============================ -input: -GO50 -output: -GardenOrder : D100<=50@10 > 95 > 失敗 -rand:95/100 -============================ -input: -GO50 -output: -GardenOrder : D100<=50@10 > 96 > ファンブル -rand:96/100 -============================ -input: -GO96 -output: -GardenOrder : D100<=96@19 > 96 > ファンブル -rand:96/100 -============================ -input: -GO99 -output: -GardenOrder : D100<=99@19 > 96 > ファンブル -rand:96/100 -============================ -input: -GO100 -output: -GardenOrder : D100<=100@20 > 96 > 成功 -rand:96/100 -============================ -input: -GO100 -output: -GardenOrder : D100<=100@20 > 98 > 成功 -rand:98/100 -============================ -input: -GO100 -output: -GardenOrder : D100<=100@20 > 99 > ファンブル -rand:99/100 -============================ -input: -GO50 -output: -GardenOrder : D100<=50@10 > 11 > 成功 -rand:11/100 -============================ -input: -GO50 -output: -GardenOrder : D100<=50@10 > 10 > クリティカル -rand:10/100 -============================ -input: -GO500 -output: -GardenOrder : D100<=500@100 > 100 > クリティカル -rand:100/100 -============================ -input: -GO0 -output: -GardenOrder : D100<=0@1 > 2 > 失敗 -rand:2/100 -============================ -input: -GO0 -output: -GardenOrder : D100<=0@1 > 1 > クリティカル -rand:1/100 -============================ -input: -GO50 -output: -GardenOrder : D100<=50@10 > 11 > 成功 -rand:11/100 -============================ -input: -GO50@11 -output: -GardenOrder : D100<=50@11 > 11 > クリティカル -rand:11/100 -============================ -input: -GO50@11 -output: -GardenOrder : D100<=50@11 > 12 > 成功 -rand:12/100 -============================ -input: -GO100/2 -output: -GardenOrder : D100<=50@20 > 50 > 成功 -rand:50/100 -============================ -input: -GO100/2 -output: -GardenOrder : D100<=50@20 > 51 > 失敗 -rand:51/100 -============================ -input: -GO100/2 -output: -GardenOrder : D100<=50@20 > 96 > ファンブル -rand:96/100 -============================ -input: -GO100/2 -output: -GardenOrder : D100<=50@20 > 21 > 成功 -rand:21/100 -============================ -input: -GO100/2 -output: -GardenOrder : D100<=50@20 > 20 > クリティカル -rand:20/100 -============================ -input: -GO150/2 -output: -GardenOrder : D100<=75@30 > 51 > 成功 -rand:51/100 -============================ -input: -GO150/2 -output: -GardenOrder : D100<=75@30 > 30 > クリティカル -rand:30/100 -============================ -input: -GO150/3 -output: -GardenOrder : D100<=50@30 > 51 > 失敗 -rand:51/100 -============================ -input: -dcSL1 -output: -GardenOrder : 負傷表:切断[1] > 軽傷1 | 切り傷 … 皮膚が切り裂かれる。 -rand: -============================ -input: -dcSL2 -output: -GardenOrder : 負傷表:切断[2] > 軽傷1 | 切り傷 … 皮膚が切り裂かれる。 -rand: -============================ -input: -dcSL5 -output: -GardenOrder : 負傷表:切断[5] > 軽傷1 | 切り傷 … 皮膚が切り裂かれる。 -rand: -============================ -input: -dcSL6 -output: -GardenOrder : 負傷表:切断[6] > 軽傷2/マヒ | 脚部負傷 … 足が切り裂かれ、思わずひざまずく。 -rand: -============================ -input: -dcBL1 -output: -GardenOrder : 負傷表:銃弾[1] > 軽傷2 | 腕部損傷 … 銃弾が腕をかすめた。 -rand: -============================ -input: -dcIM1 -output: -GardenOrder : 負傷表:衝撃[1] > 軽傷1 | 打撲 … 攻撃を受けた箇所がどす黒く腫れ上がる。 -rand: -============================ -input: -dcBR1 -output: -GardenOrder : 負傷表:灼熱[1] > 軽傷1 | 火傷 … 皮膚に小さな火傷を負う。 -rand: -============================ -input: -dcRF1 -output: -GardenOrder : 負傷表:冷却[1] > 軽傷1 | 冷気 … 軽い凍傷を受ける。 -rand: -============================ -input: -dcEL1 -output: -GardenOrder : 負傷表:電撃[1] > 疲労3 | 静電気 … 全身の毛が逆立つ。 -rand: -============================ -input: -GO(20-20) -output: -GardenOrder : D100<=0@1 > 1 > クリティカル -rand:1/100 -============================ -input: -GO(20-50) -output: -GardenOrder : D100<=0@1 > 1 > クリティカル -rand:1/100 -============================ diff --git a/src/src_bcdice/test/data/GehennaAn.txt b/src/src_bcdice/test/data/GehennaAn.txt deleted file mode 100644 index e16c8fbff..000000000 --- a/src/src_bcdice/test/data/GehennaAn.txt +++ /dev/null @@ -1,113 +0,0 @@ -input: -5G2 -output: -GehennaAn : (5R6>=2[0]) > 5[2,3,3,3,6] > 成功5、失敗0 -rand:2/6,3/6,3/6,3/6,6/6 -============================ -input: -5G10 -output: -GehennaAn : (5R6>=10[0]) > 0[2,3,3,3,6] > 成功0、失敗5 -rand:2/6,3/6,3/6,3/6,6/6 -============================ -input: -5GA3 -output: -GehennaAn : (5R6>=3[1]) > 4[2,3,3,3,6] > 成功4、失敗1 > 連撃[+1]/闘技[1] -rand:2/6,3/6,3/6,3/6,6/6 -============================ -input: -5GA10 -output: -GehennaAn : (5R6>=10[1]) > 0[2,3,3,3,6] > 成功0、失敗5 > 闘技[1] -rand:2/6,3/6,3/6,3/6,6/6 -============================ -input: -5GA3+1 -output: -GehennaAn : (5R6+1>=3[1]) > 3[1,2,3,4,6]+1 > 成功4、失敗2 > 連撃[+1]/闘技[1] -rand:6/6,1/6,3/6,4/6,2/6 -============================ -input: -5GA10+1 -output: -GehennaAn : (5R6+1>=10[1]) > 0[2,2,4,4,5]+1 > 成功1、失敗5 > 闘技[1] -rand:4/6,4/6,2/6,2/6,5/6 -============================ -input: -5GA3-1 -output: -GehennaAn : (5R6-1>=3[1]) > 3[2,2,3,3,6]-1 > 成功2、失敗2 > 闘技[1] -rand:6/6,2/6,3/6,3/6,2/6 -============================ -input: -5GA10-1 -output: -GehennaAn : (5R6-1>=10[1]) > 0[1,2,3,5,5]-1 > 成功0、失敗5 > 闘技[1] -rand:1/6,5/6,2/6,3/6,5/6 -============================ -input: -5GA3+10 -output: -GehennaAn : (5R6+10>=3[1]) > 2[1,1,2,5,5]+10 > 成功12、失敗3 > 連撃[+5]/闘技[2] -rand:5/6,1/6,2/6,1/6,5/6 -============================ -input: -5GA4+3 -output: -GehennaAn : (5R6+3>=4[1]) > 2[1,2,2,4,4]+3 > 成功5、失敗3 > 連撃[+2]/闘技[1] -rand:2/6,1/6,4/6,2/6,4/6 -============================ -input: -5GA10-10 -output: -GehennaAn : (5R6-10>=10[1]) > 0[2,5,5,5,6]-10 > 成功0、失敗5 > 闘技[1] -rand:5/6,5/6,2/6,5/6,6/6 -============================ -input: -5GA4-1 -output: -GehennaAn : (5R6-1>=4[1]) > 3[1,1,4,4,5]-1 > 成功2、失敗2 > 闘技[1] -rand:4/6,1/6,4/6,1/6,5/6 -============================ -input: -10GA8+1 -output: -GehennaAn : (10R6+1>=8[1]) > 0[1,1,2,3,3,3,4,5,5,6]+1 > 成功1、失敗10 > 闘技[1] -rand:1/6,3/6,1/6,6/6,2/6,5/6,3/6,3/6,4/6,5/6 -============================ -input: -10GA30-1 -output: -GehennaAn : (10R6-1>=30[1]) > 0[1,1,1,1,1,2,3,5,5,6]-1 > 成功0、失敗10 > 闘技[1] -rand:2/6,5/6,1/6,5/6,6/6,1/6,1/6,1/6,3/6,1/6 -============================ -input: -[1...20]GA[1...20]+[1...10] -output: -GehennaAn : (14R6+2>=1[1]) > 14[1,2,3,4,4,4,4,4,6,6,6,6,6,6]+2 > 成功16、失敗0 > 連撃[+7]/闘技[3] -rand:14/20,1/20,2/10,6/6,4/6,4/6,3/6,6/6,6/6,6/6,6/6,4/6,4/6,4/6,6/6,1/6,2/6 -============================ -input: -[1...20]GA[1...20]-[1...10] -output: -GehennaAn : (20R6-4>=4[1]) > 11[1,1,1,2,2,2,3,3,3,4,4,4,4,4,5,5,5,6,6,6]-4 > 成功7、失敗9 > 連撃[+3]/闘技[2] -rand:20/20,4/20,4/10,4/6,6/6,5/6,4/6,2/6,3/6,5/6,2/6,1/6,1/6,4/6,6/6,6/6,4/6,3/6,4/6,2/6,1/6,3/6,5/6 -============================ -input: -9GA5+3 -output: -GehennaAn : (9R6+3>=5[1]) > 0[1,1,1,2,3,3,4,4,4]+3 > 成功3、失敗9 > 連撃[+1]/闘技[1] -rand:1/6,1/6,1/6,2/6,3/6,3/6,4/6,4/6,4/6 -============================ -input: -6GA4 -output: -GehennaAn : (6R6>=4[1]) > 2[1,1,3,3,4,6] > 成功2、失敗4 > 闘技[1] -rand:1/6,1/6,3/6,3/6,4/6,6/6 -============================ -input: -6GA4+3 -output: -GehennaAn : (6R6+3>=4[1]) > 2[1,1,3,3,4,6]+3 > 成功5、失敗4 > 連撃[+2]/闘技[1] -rand:1/6,1/6,3/6,3/6,4/6,6/6 diff --git a/src/src_bcdice/test/data/GeishaGirlwithKatana.txt b/src/src_bcdice/test/data/GeishaGirlwithKatana.txt deleted file mode 100644 index 29fc7a2e4..000000000 --- a/src/src_bcdice/test/data/GeishaGirlwithKatana.txt +++ /dev/null @@ -1,131 +0,0 @@ -input: -GL -output: -GeishaGirlwithKatana : (3B6) > チョムバ!! -rand: -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > チョムバ!! -rand:5/100 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 2,5,6 > 失敗 -rand:6/100,2/6,5/6,6/6 -============================ -input: -GK#6 -output: -GeishaGirlwithKatana : (3B6) > チョムバ!! -rand:6/100 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 2,5,6 > 失敗 -rand:99/100,2/6,5/6,6/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 5,5,6 > 達成値6 -rand:99/100,5/6,5/6,6/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 4,5,5 > 達成値4 -rand:99/100,5/6,5/6,4/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 3,3,5 > 達成値5 -rand:99/100,3/6,3/6,5/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 1,2,3 > 【役】自動失敗/自分の装甲効果無しでダメージを受けてしまう -rand:99/100,1/6,2/6,3/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 4,5,6 > 【役】自動成功/敵の装甲を無視してダメージを与える -rand:99/100,4/6,5/6,6/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 1,1,1 > 【役】10倍成功 YPが10増加/10倍ダメージ YPが10増加 -rand:99/100,1/6,1/6,1/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 2,2,2 > 【役】2倍成功/2倍ダメージ -rand:99/100,2/6,2/6,2/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 3,3,3 > 【役】3倍成功/3倍ダメージ -rand:99/100,3/6,3/6,3/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 4,4,4 > 【役】4倍成功/4倍ダメージ -rand:99/100,4/6,4/6,4/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 5,5,5 > 【役】5倍成功/5倍ダメージ -rand:99/100,5/6,5/6,5/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 6,6,6 > 【役】6倍成功/6倍ダメージ -rand:99/100,6/6,6/6,6/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 1,1,2 > 達成値2 YPが1増加 -rand:99/100,1/6,1/6,2/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 1,1,3 > 達成値3 YPが1増加 -rand:99/100,1/6,3/6,1/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 1,1,4 > 達成値4 YPが1増加 -rand:99/100,4/6,1/6,1/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 2,6,6 > 達成値2 -rand:99/100,6/6,6/6,2/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 3,6,6 > 達成値3 -rand:99/100,6/6,3/6,6/6 -============================ -input: -GK -output: -GeishaGirlwithKatana : (3B6) > 4,6,6 > 達成値4 -rand:99/100,4/6,6/6,6/6 diff --git a/src/src_bcdice/test/data/GoblinSlayer.txt b/src/src_bcdice/test/data/GoblinSlayer.txt deleted file mode 100644 index a7d371de1..000000000 --- a/src/src_bcdice/test/data/GoblinSlayer.txt +++ /dev/null @@ -1,293 +0,0 @@ -input: -GS+-1 -output: - -rand: -============================ -input: -GS -output: -GoblinSlayer : (GS) > 4[1,3] > 4 -rand:1/6,3/6 -============================ -input: -GS -output: -GoblinSlayer : (GS) > 12[6,6] > 12 > 大成功 -rand:6/6,6/6 -============================ -input: -GS -output: -GoblinSlayer : (GS) > 2[1,1] > 2 > 大失敗 -rand:1/6,1/6 -============================ -input: -GS10 -output: -GoblinSlayer : (GS10) > 10 + 4[1,3] > 14 -rand:1/6,3/6 -============================ -input: -GS10 -output: -GoblinSlayer : (GS10) > 10 + 12[6,6] > 22 > 大成功 -rand:6/6,6/6 -============================ -input: -GS10 -output: -GoblinSlayer : (GS10) > 10 + 2[1,1] > 12 > 大失敗 -rand:1/6,1/6 -============================ -input: -GS>=5 -output: -GoblinSlayer : (GS>=5) > 5[2,3] > 5 > 成功 -rand:2/6,3/6 -============================ -input: -GS>=5 -output: -GoblinSlayer : (GS>=5) > 4[1,3] > 4 > 失敗 -rand:1/6,3/6 -============================ -input: -GS>=5 -output: -GoblinSlayer : (GS>=5) > 12[6,6] > 12 > 大成功 -rand:6/6,6/6 -============================ -input: -GS>=5 -output: -GoblinSlayer : (GS>=5) > 2[1,1] > 2 > 大失敗 -rand:1/6,1/6 -============================ -input: -GS10>=15 -output: -GoblinSlayer : (GS10>=15) > 10 + 5[2,3] > 15 > 成功 -rand:2/6,3/6 -============================ -input: -GS10>=15 -output: -GoblinSlayer : (GS10>=15) > 10 + 4[1,3] > 14 > 失敗 -rand:1/6,3/6 -============================ -input: -GS10>=15 -output: -GoblinSlayer : (GS10>=15) > 10 + 12[6,6] > 22 > 大成功 -rand:6/6,6/6 -============================ -input: -GS10>=15 -output: -GoblinSlayer : (GS10>=15) > 10 + 2[1,1] > 12 > 大失敗 -rand:1/6,1/6 -============================ -input: -GS>5 -output: -GoblinSlayer : (GS>5) > 5[2,3] > 5 > 失敗 -rand:2/6,3/6 -============================ -input: -GS>5 -output: -GoblinSlayer : (GS>5) > 6[3,3] > 6 > 成功 -rand:3/6,3/6 -============================ -input: -GS10>15 -output: -GoblinSlayer : (GS10>15) > 10 + 5[2,3] > 15 > 失敗 -rand:2/6,3/6 -============================ -input: -GS10>15 -output: -GoblinSlayer : (GS10>15) > 10 + 6[3,3] > 16 > 成功 -rand:3/6,3/6 -============================ -input: -GS+2>5 -output: -GoblinSlayer : (GS+2>5) > 2 + 5[2,3] > 7 > 成功 -rand:2/6,3/6 -============================ -input: -GS+2>5 -output: -GoblinSlayer : (GS+2>5) > 2 + 6[3,3] > 8 > 成功 -rand:3/6,3/6 -============================ -input: -GS+2>5+5 -output: - -rand: -============================ -input: -MCPI -output: - -rand: -============================ -input: -MCPI$3 -output: -GoblinSlayer : 祈念(2d6) > 2[1,1] > 2 > 失敗, 因果点:3点 → 4点 -rand:1/6,1/6 -============================ -input: -MCPI$4 -output: -GoblinSlayer : 祈念(2d6) > 3[1,2] > 3 > 失敗, 因果点:4点 → 5点 -rand:1/6,2/6 -============================ -input: -MCPI$5 -output: -GoblinSlayer : 祈念(2d6) > 5[2,3] > 5 > 成功, 因果点:5点 → 6点 -rand:2/6,3/6 -============================ -input: -MCPI$6 -output: -GoblinSlayer : 祈念(2d6) > 12[6,6] > 12 > 成功, 因果点:6点 → 7点 -rand:6/6,6/6 -============================ -input: -MCPI1$7 -output: -GoblinSlayer : 祈念(2d6+1) > 6[3,3]+1 > 7 > 成功, 因果点:7点 → 8点 -rand:3/6,3/6 -============================ -input: -MCPI+1$7 -output: -GoblinSlayer : 祈念(2d6+1) > 6[3,3]+1 > 7 > 成功, 因果点:7点 → 8点 -rand:3/6,3/6 -============================ -input: -MCPI(1)$8 -output: -GoblinSlayer : 祈念(2d6+1) > 2[1,1]+1 > 3 > 失敗, 因果点:8点 → 9点 -rand:1/6,1/6 -============================ -input: -MCPI(2)$9 -output: -GoblinSlayer : 祈念(2d6+2) > 4[2,2]+2 > 6 > 失敗, 因果点:9点 → 10点 -rand:2/6,2/6 -============================ -input: -MCPI(2)$10 -output: -GoblinSlayer : 祈念(2d6+2) > 8[4,4]+2 > 10 > 成功, 因果点:10点 → 11点 -rand:4/6,4/6 -============================ -input: -MCPI(3)$11 -output: -GoblinSlayer : 祈念(2d6+3) > 12[6,6]+3 > 15 > 成功, 因果点:11点 → 12点 -rand:6/6,6/6 -============================ -input: -MCPI$12 -output: -GoblinSlayer : 因果点が12点以上の場合、因果点は使用できません。 -rand: -============================ -input: -MCPI2$12 -output: -GoblinSlayer : 因果点が12点以上の場合、因果点は使用できません。 -rand: -============================ -input: -MCPI+2$12 -output: -GoblinSlayer : 因果点が12点以上の場合、因果点は使用できません。 -rand: -============================ -input: -DB14 -output: -GoblinSlayer : 命中判定の効力値によるボーナス > なし -rand: -============================ -input: -DB15 -output: -GoblinSlayer : 命中判定の効力値によるボーナス > 1[1] > 1 -rand:1/6 -============================ -input: -DB19 -output: -GoblinSlayer : 命中判定の効力値によるボーナス > 1[1] > 1 -rand:1/6 -============================ -input: -DB20 -output: -GoblinSlayer : 命中判定の効力値によるボーナス > 2[1,1] > 2 -rand:1/6,1/6 -============================ -input: -DB24 -output: -GoblinSlayer : 命中判定の効力値によるボーナス > 2[1,1] > 2 -rand:1/6,1/6 -============================ -input: -DB25 -output: -GoblinSlayer : 命中判定の効力値によるボーナス > 3[1,1,1] > 3 -rand:1/6,1/6,1/6 -============================ -input: -DB29 -output: -GoblinSlayer : 命中判定の効力値によるボーナス > 3[1,1,1] > 3 -rand:1/6,1/6,1/6 -============================ -input: -DB30 -output: -GoblinSlayer : 命中判定の効力値によるボーナス > 4[1,1,1,1] > 4 -rand:1/6,1/6,1/6,1/6 -============================ -input: -DB39 -output: -GoblinSlayer : 命中判定の効力値によるボーナス > 4[1,1,1,1] > 4 -rand:1/6,1/6,1/6,1/6 -============================ -input: -DB40 -output: -GoblinSlayer : 命中判定の効力値によるボーナス > 5[1,1,1,1,1] > 5 -rand:1/6,1/6,1/6,1/6,1/6 -============================ -input: -SGS -output: -GoblinSlayer : (GS) > 12[6,6] > 12 > 大成功###secret dice### -rand:6/6,6/6 -============================ -input: -SMCPI$3 -output: - -rand: -============================ -input: -SDB40 -output: -GoblinSlayer : 命中判定の効力値によるボーナス > 5[1,1,1,1,1] > 5###secret dice### -rand:1/6,1/6,1/6,1/6,1/6 diff --git a/src/src_bcdice/test/data/GoldenSkyStories.txt b/src/src_bcdice/test/data/GoldenSkyStories.txt deleted file mode 100644 index f7307d2b4..000000000 --- a/src/src_bcdice/test/data/GoldenSkyStories.txt +++ /dev/null @@ -1,35 +0,0 @@ -input: -1d6 -output: -GoldenSkyStories : (1D6) > 2 -rand:2/6 -============================ -input: -2d6 -output: -GoldenSkyStories : (2D6) > 2[1,1] > 2 -rand:1/6,1/6 -============================ -input: -geta [1] -output: -GoldenSkyStories : geta > 下駄占い > 裏:あめ -rand:1/7 -============================ -input: -geta [3] -output: -GoldenSkyStories : geta > 下駄占い > 裏:あめ -rand:3/7 -============================ -input: -geta [6] -output: -GoldenSkyStories : geta > 下駄占い > 表:はれ -rand:6/7 -============================ -input: -geta [7] -output: -GoldenSkyStories : geta > 下駄占い > 横:くもり -rand:7/7 diff --git a/src/src_bcdice/test/data/Gorilla.txt b/src/src_bcdice/test/data/Gorilla.txt deleted file mode 100644 index a552120d2..000000000 --- a/src/src_bcdice/test/data/Gorilla.txt +++ /dev/null @@ -1,107 +0,0 @@ -input: -2d6 -output: -Gorilla : (2D6) > 2[1,1] > 2 -rand:1/6,1/6 -============================ -input: -2d6 -output: -Gorilla : (2D6) > 10[5,5] > 10 -rand:5/6,5/6 -============================ -input: -2d6 -output: -Gorilla : (2D6) > 12[6,6] > 12 -rand:6/6,6/6 -============================ -input: -2d6>=7 判定:成功 -output: -Gorilla : (2D6>=7) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2d6>=7 判定:失敗 -output: -Gorilla : (2D6>=7) > 5[2,3] > 5 > 失敗 -rand:2/6,3/6 -============================ -input: -2d6>=7 判定:ゴリティカル1 -output: -Gorilla : (2D6>=7) > 10[5,5] > 10 > ゴリティカル(自動的成功) -rand:5/6,5/6 -============================ -input: -2d6>=11 判定:ゴリティカル2 -output: -Gorilla : (2D6>=11) > 10[5,5] > 10 > ゴリティカル(自動的成功) -rand:5/6,5/6 -============================ -input: -2d6>=11 判定:10だけどゴリティカルじゃない -output: -Gorilla : (2D6>=11) > 10[4,6] > 10 > 失敗 -rand:4/6,6/6 -============================ -input: -g ショートカット -output: -Gorilla : (2D6) > 2[1,1] > 2 -rand:1/6,1/6 -============================ -input: -G ショートカット -output: -Gorilla : (2D6) > 4[2,2] > 4 -rand:2/6,2/6 -============================ -input: -G>=7 判定:成功 -output: -Gorilla : (2D6>=7) > 7[2,5] > 7 > 成功 -rand:2/6,5/6 -============================ -input: -SG>=7 判定:成功 -output: -Gorilla : (2D6>=7) > 7[2,5] > 7 > 成功###secret dice### -rand:2/6,5/6 -============================ -input: -G>=7 判定:失敗 -output: -Gorilla : (2D6>=7) > 6[2,4] > 6 > 失敗 -rand:2/6,4/6 -============================ -input: -G>=7 判定:ゴリティカル -output: -Gorilla : (2D6>=7) > 10[5,5] > 10 > ゴリティカル(自動的成功) -rand:5/6,5/6 -============================ -input: -G+2>=7 判定:修正+2 -output: -Gorilla : (2D6+2>=7) > 7[4,3]+2 > 9 > 成功 -rand:4/6,3/6 -============================ -input: -G-2>=7 判定:修正-2 -output: -Gorilla : (2D6-2>=7) > 7[4,3]-2 > 5 > 失敗 -rand:4/6,3/6 -============================ -input: -G-2>=7 判定:ゴリティカル -output: -Gorilla : (2D6-2>=7) > 10[5,5]-2 > 8 > ゴリティカル(自動的成功) -rand:5/6,5/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -Gorilla : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/GranCrest.txt b/src/src_bcdice/test/data/GranCrest.txt deleted file mode 100644 index 1fe9b94b2..000000000 --- a/src/src_bcdice/test/data/GranCrest.txt +++ /dev/null @@ -1,199 +0,0 @@ -input: -2d6>=10 -output: -GranCrest : (2D6>=10) > 9[3,6] > 9 > 失敗 -rand:6/6,3/6 -============================ -input: -2d6>=10 -output: -GranCrest : (2D6>=10) > 12[6,6] > 12(クリティカル) > 22 > 成功 -rand:6/6,6/6 -============================ -input: -2d6>=10 -output: -GranCrest : (2D6>=10) > 2[1,1] > 2 > 失敗 -rand:1/6,1/6 -============================ -input: -3d6>=19 -output: -GranCrest : (3D6>=19) > 15[3,6,6] > 15(クリティカル) > 25 > 成功 -rand:3/6,6/6,6/6 -============================ -input: -3d6+5>=24 -output: -GranCrest : (3D6+5>=24) > 18[6,6,6]+5 > 23(クリティカル) > 33 > 成功 -rand:6/6,6/6,6/6 -============================ -input: -3d6>=? -output: -GranCrest : (3D6>=?) > 14[2,6,6] > 14(クリティカル) > 24 -rand:2/6,6/6,6/6 -============================ -input: -3d6+7>=? -output: -GranCrest : (3D6+7>=?) > 13[1,6,6]+7 > 20(クリティカル) > 30 -rand:1/6,6/6,6/6 -============================ -input: -MT -output: -GranCrest : 邂逅表(16) > 興味 -あなたは彼(彼女)に興味がある。善悪の問題ではない。どこかで、彼(彼女)を面白いと感じるのだ。 -rand:1/6,6/6 -============================ -input: -MT -output: -GranCrest : 邂逅表(12) > 保護者 -あなたは彼(彼女)を兄や姉、あるいは父親のように慕っている。もちろん本当に血縁関係があってもよい。 -rand:1/6,2/6 -============================ -input: -PFT -output: -GranCrest : ポジティブ感情表(22) > 憧憬 -あなたは彼(彼女)にあこがれを感じた。彼(彼女)のようになりたいと思った。その思いは今でも続いている。 -rand:2/6,2/6 -============================ -input: -PFT -output: -GranCrest : ポジティブ感情表(11) > 好奇心 -あなたは彼(彼女)に好奇心を感じた。彼(彼女)はとても面白い。もっと知ってみたいと感じた。 -rand:1/6,1/6 -============================ -input: -NFT -output: -GranCrest : ネガティブ感情表(32) > 嫌悪 -あなたは彼(彼女)のことを嫌っている。考え方なのか、癖なのか、どうしても拒否感を覚えずにはいられない。 -rand:3/6,2/6 -============================ -input: -NFT -output: -GranCrest : ネガティブ感情表(12) > 悲哀 -あなたは彼(彼女)に悲哀を感じている。その過去か、それとも別のものか、あなたは彼(彼女)をかわいそうだと感じている。 -rand:1/6,2/6 -============================ -input: -CT -output: -GranCrest : 国特徴・カテゴリー表(2) > 産業(ICT) -農耕が盛ん、鍛冶技術に優れるなど、その国の産業を表す。 -rand:2/6 -============================ -input: -CT -output: -GranCrest : 国特徴・カテゴリー表(4) > 組織(OCT) -狩人の組合がある、キャラバンがいるなど、その国にある組織を表す。 -rand:4/6 -============================ -input: -TCT -output: -GranCrest : 国特徴・地形表(66) > 秘境 -あなたの国は、混沌の影響によってこの世ならぬ光景を持っている。空を飛ぶ島や形を取った虹などだ。商才はGMと相談せよ。 -国資源ひとつを+3 -rand:6/6,6/6 -============================ -input: -TCT -output: -GranCrest : 国特徴・地形表(32) > 森林 -あなたの国には大きな森がいくつもある。ただ風光明媚なだけでなく、木材資源にも恵まれている。 -森林+3 -rand:3/6,2/6 -============================ -input: -ICT -output: -GranCrest : 国特徴・産業表(12) > 手工業 -あなたの国は織物や細工物といった人間の手作業から生み出される道具作りに秀でている。 -技術+3 -rand:1/6,2/6 -============================ -input: -ICT -output: -GranCrest : 国特徴・産業表(46) > サービス業 -あなたの国は演劇や酒場、レストランといった文化的な産業で名を馳せている。 -技術+1、資金+2 -rand:4/6,6/6 -============================ -input: -PCT -output: -GranCrest : 国特徴・人物表(35) > 大商人 -あなたの国に居を構えている大商人の富は、一国にも匹敵する。その税収はばかにならない。 -資金+3 -rand:3/6,5/6 -============================ -input: -PCT -output: -GranCrest : 国特徴・人物表(51) > 森林官 -あなたの国には森林資源を管理する森林官がおり、その技術を弟子たちに分け与えている。 -森林+3 -rand:5/6,1/6 -============================ -input: -OCT -output: -GranCrest : 国特徴・組織表(36) > 飛脚 -あなたの国は飛脚や早馬といった高速通信網が発達している。 -馬+3 -rand:3/6,6/6 -============================ -input: -OCT -output: -GranCrest : 国特徴・組織表(32) > 職人学校 -あなたの国は技術を伝授し発展させる学校を有している。 -技術+3 -rand:3/6,2/6 -============================ -input: -BCT -output: -GranCrest : 国特徴・拠点表(11) > 城塞 -あなたの首都はその難攻不落の防壁で知られている。 -技術+3 -rand:1/6,1/6 -============================ -input: -BCT -output: -GranCrest : 国特徴・拠点表(46) > 歓楽街 -あなたの国は楽しく過ごせる酒場や劇場といったもので評判だ。人々の笑顔がさらなる富をもたらすのだ。 -食料+1、資金+2 -rand:4/6,6/6 -============================ -input: -CCT -output: -GranCrest : 国特徴・文化表(13) > 禁欲的 -あなたの国民は、道徳を重んじ、常に自分の欲望を制限することが理想的だと考えている。 -食料+4、資金-1 -rand:1/6,3/6 -============================ -input: -CCT -output: -GranCrest : 国特徴・文化表(53) > 拝金主義 -あなたの国民にとって、もっとも重要なのは金である。金がなくてどうして生きて行けよう。 -森林-1、資金+4 -rand:5/6,3/6 -============================ -input: -3D6>=? 目標値?でバグらない -output: -GranCrest : (3D6>=?) > 9[3,3,3] > 9 > 失敗 -rand:3/6,3/6,3/6 diff --git a/src/src_bcdice/test/data/Gundog.txt b/src/src_bcdice/test/data/Gundog.txt deleted file mode 100644 index af10d72a6..000000000 --- a/src/src_bcdice/test/data/Gundog.txt +++ /dev/null @@ -1,185 +0,0 @@ -input: -1D100<=10 -output: -Gundog : (1D100<=10) > 29 > 失敗 -rand:29/100 -============================ -input: -1D100<=10 -output: -Gundog : (1D100<=10) > 36 > 失敗 -rand:36/100 -============================ -input: -1D100<=10 -output: -Gundog : (1D100<=10) > 92 > 失敗 -rand:92/100 -============================ -input: -1D100<=10 -output: -Gundog : (1D100<=10) > 22 > 失敗 -rand:22/100 -============================ -input: -1D100<=10 -output: -Gundog : (1D100<=10) > 14 > 失敗 -rand:14/100 -============================ -input: -1D100<=10 -output: -Gundog : (1D100<=10) > 9 > 成功(達成値9+SL) -rand:9/100 -============================ -input: -1D100<=10 -output: -Gundog : (1D100<=10) > 99 > 失敗 -rand:99/100 -============================ -input: -1D100<=10 -output: -Gundog : (1D100<=10) > 80 > 失敗 -rand:80/100 -============================ -input: -1D100<=10 -output: -Gundog : (1D100<=10) > 19 > 失敗 -rand:19/100 -============================ -input: -1D100<=10 -output: -Gundog : (1D100<=10) > 21 > 失敗 -rand:21/100 -============================ -input: -1D100<=90 -output: -Gundog : (1D100<=90) > 20 > クリティカル(達成値20+SL) -rand:20/100 -============================ -input: -1D100<=90 -output: -Gundog : (1D100<=90) > 69 > 成功(達成値15+SL) -rand:69/100 -============================ -input: -1D100<=90 -output: -Gundog : (1D100<=90) > 50 > クリティカル(達成値20+SL) -rand:50/100 -============================ -input: -1D100<=90 -output: -Gundog : (1D100<=90) > 60 > クリティカル(達成値20+SL) -rand:60/100 -============================ -input: -1D100<=90 -output: -Gundog : (1D100<=90) > 94 > 失敗 -rand:94/100 -============================ -input: -1D100<=90 -output: -Gundog : (1D100<=90) > 86 > 成功(達成値14+SL) -rand:86/100 -============================ -input: -1D100<=90 -output: -Gundog : (1D100<=90) > 23 > 成功(達成値5+SL) -rand:23/100 -============================ -input: -1D100<=90 -output: -Gundog : (1D100<=90) > 33 > 成功(達成値6+SL) -rand:33/100 -============================ -input: -1D100<=90 -output: -Gundog : (1D100<=90) > 13 > 成功(達成値4+SL) -rand:13/100 -============================ -input: -1D100<=90 -output: -Gundog : (1D100<=90) > 93 > 失敗 -rand:93/100 -============================ -input: -1D100<=50 -output: -Gundog : (1D100<=50) > 2 > 成功(達成値2+SL) -rand:2/100 -============================ -input: -1D100<=50 -output: -Gundog : (1D100<=50) > 39 > 成功(達成値12+SL) -rand:39/100 -============================ -input: -1D100<=50 -output: -Gundog : (1D100<=50) > 36 > 成功(達成値9+SL) -rand:36/100 -============================ -input: -1D100<=50 -output: -Gundog : (1D100<=50) > 69 > 失敗 -rand:69/100 -============================ -input: -1D100<=50 -output: -Gundog : (1D100<=50) > 14 > 成功(達成値5+SL) -rand:14/100 -============================ -input: -1D100<=50 -output: -Gundog : (1D100<=50) > 56 > 失敗 -rand:56/100 -============================ -input: -1D100<=50 -output: -Gundog : (1D100<=50) > 16 > 成功(達成値7+SL) -rand:16/100 -============================ -input: -1D100<=50 -output: -Gundog : (1D100<=50) > 63 > 失敗 -rand:63/100 -============================ -input: -1D100<=50 -output: -Gundog : (1D100<=50) > 52 > 失敗 -rand:52/100 -============================ -input: -1D100<=50 -output: -Gundog : (1D100<=50) > 35 > 成功(達成値8+SL) -rand:35/100 -============================ -input: -1D100>=? 目標値?でバグらない -output: -Gundog : (1D100>=?) > 42 > 失敗 -rand:42/100 diff --git a/src/src_bcdice/test/data/GundogRevised.txt b/src/src_bcdice/test/data/GundogRevised.txt deleted file mode 100644 index 373e37d8d..000000000 --- a/src/src_bcdice/test/data/GundogRevised.txt +++ /dev/null @@ -1,191 +0,0 @@ -input: -1D100<=10 -output: -GundogRevised : (1D100<=10) > 9 > 成功(達成値9+SL) -rand:9/100 -============================ -input: -1D100<=10 -output: -GundogRevised : (1D100<=10) > 1 > ベアリー(達成値1+SL) -rand:1/100 -============================ -input: -1D100<=10 -output: -GundogRevised : (1D100<=10) > 10 > クリティカル(達成値20+SL) -rand:10/100 -============================ -input: -1D100<=10 -output: -GundogRevised : (1D100<=10) > 11 > 失敗 -rand:11/100 -============================ -input: -1D100<=10 -output: -GundogRevised : (1D100<=10) > 100 > ファンブル -rand:100/100 -============================ -input: -1D100<=19 -output: -GundogRevised : (1D100<=19) > 19 > 成功(達成値10+SL) -rand:19/100 -============================ -input: -1D100<=19 -output: -GundogRevised : (1D100<=19) > 20 > 失敗 -rand:20/100 -============================ -input: -SDPT -output: -GundogRevised : 射撃ダメージペナルティー表[0] > 対象は[死亡] -rand:10/10,10/10 -============================ -input: -SDPT -output: -GundogRevised : 射撃ダメージペナルティー表[11] > [追加D]2D6/[軽傷]-20% -rand:2/10,9/10 -============================ -input: -SDPT+3 -output: -GundogRevised : 射撃ダメージペナルティー表[14] > [ショック]-20% -rand:2/10,9/10 -============================ -input: -SDPT+3 -output: -GundogRevised : 射撃ダメージペナルティー表[21] > ペナルティー無し -rand:9/10,9/10 -============================ -input: -SDPT-3 -output: -GundogRevised : 射撃ダメージペナルティー表[8] > [追加D]2D6/[軽傷]-20%/[朦朧判定]8 -rand:2/10,9/10 -============================ -input: -SDPT-3 -output: -GundogRevised : 射撃ダメージペナルティー表[-1] > 対象は[死亡] -rand:1/10,1/10 -============================ -input: -MDPT -output: -GundogRevised : 格闘ダメージペナルティー表[0] > 対象は[死亡] -rand:10/10,10/10 -============================ -input: -MDPT -output: -GundogRevised : 格闘ダメージペナルティー表[11] > [追加D]1D6/[軽傷]-10%/[朦朧判定]6 -rand:2/10,9/10 -============================ -input: -MDPT -output: -GundogRevised : 格闘ダメージペナルティー表[18] > ペナルティー無し -rand:9/10,9/10 -============================ -input: -VDPT -output: -GundogRevised : 車両ダメージペナルティー表[1] > [車両D]4D6/[乗員D]3D6/[操作性]-40%/[スピン判定] -rand:1/10,10/10 -============================ -input: -VDPT -output: -GundogRevised : 車両ダメージペナルティー表[10] > [乗員D]2D6/[操縦判定]-20%/[スピン判定] -rand:5/10,5/10 -============================ -input: -VDPT -output: -GundogRevised : 車両ダメージペナルティー表[17] > 車両が蛇行。乗員全員は〈運動〉判定。失敗で[不安定] -rand:8/10,9/10 -============================ -input: -GDPT -output: -GundogRevised : 汎用ダメージペナルティー表[2] > [追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]14 -rand:1/10,1/10 -============================ -input: -GDPT -output: -GundogRevised : 汎用ダメージペナルティー表[12] > [軽傷]-20%/[不安定] -rand:4/10,8/10 -============================ -input: -GDPT -output: -GundogRevised : 汎用ダメージペナルティー表[14] > [軽傷]-10% -rand:9/10,5/10 -============================ -input: -SFT -output: -GundogRevised : 射撃ファンブル表[11] > 無理な射撃姿勢で腕を痛める。[軽傷]-20% -rand:5/10,6/10 -============================ -input: -SFT+3 -output: -GundogRevised : 射撃ファンブル表[14] > 武装を落とす。スリング(肩ひも)があれば落とさない -rand:5/10,6/10 -============================ -input: -SFT-3 -output: -GundogRevised : 射撃ファンブル表[8] > 作動不良。[アイテム使用]を2回行って修理するまで射撃不可 -rand:5/10,6/10 -============================ -input: -MFT -output: -GundogRevised : 格闘ファンブル表[2] > 最も近い味方(射程内にいなければ自分)に[貫通D] -rand:1/10,1/10 -============================ -input: -MFT+5 -output: -GundogRevised : 格闘ファンブル表[7] > 武装が損傷。30分かけて〈手先〉判定に成功するまで使用不可。[格闘タイプ]なら[重傷]-10% -rand:1/10,1/10 -============================ -input: -MFT-5 -output: -GundogRevised : 格闘ファンブル表[-3] > 自分に命中。[貫通D] -rand:1/10,1/10 -============================ -input: -TFT -output: -GundogRevised : 投擲ファンブル表[12] > 足がつる。2[ラウンド]の間、移動距離1/2 -rand:6/10,6/10 -============================ -input: -TFT+7 -output: -GundogRevised : 投擲ファンブル表[19] > ペナルティー無し -rand:6/10,6/10 -============================ -input: -TFT-7 -output: -GundogRevised : 投擲ファンブル表[5] > 頭を強く打ちつける。[朦朧] -rand:6/10,6/10 -============================ -input: -1D100>=? 目標値?でバグらない -output: -GundogRevised : (1D100>=?) > 42 > 失敗 -rand:42/100 diff --git a/src/src_bcdice/test/data/GundogZero.txt b/src/src_bcdice/test/data/GundogZero.txt deleted file mode 100644 index dccb20bce..000000000 --- a/src/src_bcdice/test/data/GundogZero.txt +++ /dev/null @@ -1,1679 +0,0 @@ -input: -1D100<=10 -output: -GundogZero : (1D100<=10) > 66 > 失敗 -rand:66/100 -============================ -input: -1D100<=10 -output: -GundogZero : (1D100<=10) > 88 > 失敗 -rand:88/100 -============================ -input: -1D100<=10 -output: -GundogZero : (1D100<=10) > 52 > 失敗 -rand:52/100 -============================ -input: -1D100<=10 -output: -GundogZero : (1D100<=10) > 75 > 失敗 -rand:75/100 -============================ -input: -1D100<=10 -output: -GundogZero : (1D100<=10) > 93 > 失敗 -rand:93/100 -============================ -input: -1D100<=10 -output: -GundogZero : (1D100<=10) > 52 > 失敗 -rand:52/100 -============================ -input: -1D100<=10 -output: -GundogZero : (1D100<=10) > 77 > 失敗 -rand:77/100 -============================ -input: -1D100<=10 -output: -GundogZero : (1D100<=10) > 4 > 成功(達成値4+SL) -rand:4/100 -============================ -input: -1D100<=10 -output: -GundogZero : (1D100<=10) > 30 > 失敗 -rand:30/100 -============================ -input: -1D100<=10 -output: -GundogZero : (1D100<=10) > 54 > 失敗 -rand:54/100 -============================ -input: -1D100<=90 -output: -GundogZero : (1D100<=90) > 71 > 成功(達成値8+SL) -rand:71/100 -============================ -input: -1D100<=90 -output: -GundogZero : (1D100<=90) > 13 > 成功(達成値4+SL) -rand:13/100 -============================ -input: -1D100<=90 -output: -GundogZero : (1D100<=90) > 90 > クリティカル(達成値20+SL) -rand:90/100 -============================ -input: -1D100<=90 -output: -GundogZero : (1D100<=90) > 52 > 成功(達成値7+SL) -rand:52/100 -============================ -input: -1D100<=90 -output: -GundogZero : (1D100<=90) > 22 > 成功(達成値4+SL) -rand:22/100 -============================ -input: -1D100<=90 -output: -GundogZero : (1D100<=90) > 74 > 成功(達成値11+SL) -rand:74/100 -============================ -input: -1D100<=90 -output: -GundogZero : (1D100<=90) > 74 > 成功(達成値11+SL) -rand:74/100 -============================ -input: -1D100<=90 -output: -GundogZero : (1D100<=90) > 37 > 成功(達成値10+SL) -rand:37/100 -============================ -input: -1D100<=90 -output: -GundogZero : (1D100<=90) > 22 > 成功(達成値4+SL) -rand:22/100 -============================ -input: -1D100<=90 -output: -GundogZero : (1D100<=90) > 99 > 失敗 -rand:99/100 -============================ -input: -1D100<=50 -output: -GundogZero : (1D100<=50) > 60 > 失敗 -rand:60/100 -============================ -input: -1D100<=50 -output: -GundogZero : (1D100<=50) > 94 > 失敗 -rand:94/100 -============================ -input: -1D100<=50 -output: -GundogZero : (1D100<=50) > 22 > 成功(達成値4+SL) -rand:22/100 -============================ -input: -1D100<=50 -output: -GundogZero : (1D100<=50) > 60 > 失敗 -rand:60/100 -============================ -input: -1D100<=50 -output: -GundogZero : (1D100<=50) > 100 > ファンブル -rand:100/100 -============================ -input: -1D100<=50 -output: -GundogZero : (1D100<=50) > 6 > 成功(達成値6+SL) -rand:6/100 -============================ -input: -1D100<=50 -output: -GundogZero : (1D100<=50) > 91 > 失敗 -rand:91/100 -============================ -input: -1D100<=50 -output: -GundogZero : (1D100<=50) > 33 > 成功(達成値6+SL) -rand:33/100 -============================ -input: -1D100<=50 -output: -GundogZero : (1D100<=50) > 53 > 失敗 -rand:53/100 -============================ -input: -1D100<=50 -output: -GundogZero : (1D100<=50) > 83 > 失敗 -rand:83/100 -============================ -input: -SDPT -output: -GundogZero : 射撃ダメージペナルティー表[17] > 手に持った武器を落とす -rand:10/10,9/10 -============================ -input: -SDPT -output: -GundogZero : 射撃ダメージペナルティー表[14] > [軽傷]-20% -rand:9/10,7/10 -============================ -input: -SDPT -output: -GundogZero : 射撃ダメージペナルティー表[13] > [追加D]1D6/[軽傷]-10% -rand:7/10,8/10 -============================ -input: -SDPT -output: -GundogZero : 射撃ダメージペナルティー表[11] > [追加D]1D6/[軽傷]-20% -rand:7/10,6/10 -============================ -input: -SDPT -output: -GundogZero : 射撃ダメージペナルティー表[12] > [追加D]1D6/[軽傷]-20% -rand:10/10,4/10 -============================ -input: -SDPT -output: -GundogZero : 射撃ダメージペナルティー表[6] > [追加D]2D6/[軽傷]-20%/[朦朧判定]10 -rand:7/10,1/10 -============================ -input: -SDPT -output: -GundogZero : 射撃ダメージペナルティー表[6] > [追加D]2D6/[軽傷]-20%/[朦朧判定]10 -rand:6/10,2/10 -============================ -input: -SDPT -output: -GundogZero : 射撃ダメージペナルティー表[6] > [追加D]2D6/[軽傷]-20%/[朦朧判定]10 -rand:5/10,3/10 -============================ -input: -SDPT -output: -GundogZero : 射撃ダメージペナルティー表[10] > [追加D]2D6/[軽傷]-10%/[朦朧判定]4 -rand:4/10,8/10 -============================ -input: -SDPT -output: -GundogZero : 射撃ダメージペナルティー表[13] > [追加D]1D6/[軽傷]-10% -rand:7/10,8/10 -============================ -input: -MDPT -output: -GundogZero : 格闘ダメージペナルティー表[7] > [追加D]2D6/[軽傷]-10%/[朦朧判定]10 -rand:4/10,5/10 -============================ -input: -MDPT -output: -GundogZero : 格闘ダメージペナルティー表[13] > [軽傷]-10%/[朦朧判定]4 -rand:8/10,7/10 -============================ -input: -MDPT -output: -GundogZero : 格闘ダメージペナルティー表[11] > [軽傷]-20%/[朦朧判定]6 -rand:5/10,8/10 -============================ -input: -MDPT -output: -GundogZero : 格闘ダメージペナルティー表[12] > [軽傷]-10%/[朦朧判定]6 -rand:5/10,9/10 -============================ -input: -MDPT -output: -GundogZero : 格闘ダメージペナルティー表[13] > [軽傷]-10%/[朦朧判定]4 -rand:6/10,9/10 -============================ -input: -MDPT -output: -GundogZero : 格闘ダメージペナルティー表[5] > [追加D]2D6/[軽傷]-20%/[朦朧判定]12 -rand:4/10,3/10 -============================ -input: -MDPT -output: -GundogZero : 格闘ダメージペナルティー表[5] > [追加D]2D6/[軽傷]-20%/[朦朧判定]12 -rand:5/10,2/10 -============================ -input: -MDPT -output: -GundogZero : 格闘ダメージペナルティー表[6] > [追加D]2D6/[軽傷]-10%/[朦朧判定]12 -rand:2/10,6/10 -============================ -input: -MDPT -output: -GundogZero : 格闘ダメージペナルティー表[8] > [追加D]1D6/[軽傷]-20%/[朦朧判定]8 -rand:7/10,3/10 -============================ -input: -MDPT -output: -GundogZero : 格闘ダメージペナルティー表[7] > [追加D]2D6/[軽傷]-10%/[朦朧判定]10 -rand:4/10,5/10 -============================ -input: -VDPT -output: -GundogZero : 車両ダメージペナルティー表[5] > [乗員D]3D6/[スピード]-2/[スピン判定] -rand:3/10,4/10 -============================ -input: -VDPT -output: -GundogZero : 車両ダメージペナルティー表[4] > [乗員D]2D6/[操縦性]-10%/[スピン判定] -rand:1/10,5/10 -============================ -input: -VDPT -output: -GundogZero : 車両ダメージペナルティー表[10] > [乗員D]2D6/[操縦判定]-20% -rand:6/10,6/10 -============================ -input: -VDPT -output: -GundogZero : 車両ダメージペナルティー表[12] > [乗員D]1D6/[操縦判定]-10% -rand:6/10,8/10 -============================ -input: -VDPT -output: -GundogZero : 車両ダメージペナルティー表[10] > [乗員D]2D6/[操縦判定]-20% -rand:2/10,10/10 -============================ -input: -VDPT -output: -GundogZero : 車両ダメージペナルティー表[9] > [乗員D]2D6/[操縦判定]-20% -rand:4/10,7/10 -============================ -input: -VDPT -output: -GundogZero : 車両ダメージペナルティー表[5] > [乗員D]3D6/[スピード]-2/[スピン判定] -rand:4/10,3/10 -============================ -input: -VDPT -output: -GundogZero : 車両ダメージペナルティー表[2] > [乗員D]3D6/[操縦性]-20%/[スピン判定] -rand:2/10,2/10 -============================ -input: -VDPT -output: -GundogZero : 車両ダメージペナルティー表[1] > [乗員D]3D6/[操縦性]-20%/[スピン判定] -rand:1/10,2/10 -============================ -input: -VDPT -output: -GundogZero : 車両ダメージペナルティー表[4] > [乗員D]2D6/[操縦性]-10%/[スピン判定] -rand:2/10,4/10 -============================ -input: -GDPT -output: -GundogZero : 汎用ダメージペナルティー表[11] > [追加D]2D6/[軽傷]-20%/[朦朧判定]6 -rand:7/10,6/10 -============================ -input: -GDPT -output: -GundogZero : 汎用ダメージペナルティー表[18] > ペナルティー無し -rand:10/10,10/10 -============================ -input: -GDPT -output: -GundogZero : 汎用ダメージペナルティー表[15] > [追加D]1D6/[軽傷]-10% -rand:7/10,10/10 -============================ -input: -GDPT -output: -GundogZero : 汎用ダメージペナルティー表[16] > [軽傷]-20% -rand:10/10,8/10 -============================ -input: -GDPT -output: -GundogZero : 汎用ダメージペナルティー表[11] > [追加D]2D6/[軽傷]-20%/[朦朧判定]6 -rand:8/10,5/10 -============================ -input: -GDPT -output: -GundogZero : 汎用ダメージペナルティー表[6] > [追加D]2D6/[出血]1D6/[重傷]-10%/[朦朧判定]12 -rand:7/10,1/10 -============================ -input: -GDPT -output: -GundogZero : 汎用ダメージペナルティー表[10] > [追加D]2D6/[軽傷]-20%/[朦朧判定]8 -rand:8/10,4/10 -============================ -input: -GDPT -output: -GundogZero : 汎用ダメージペナルティー表[10] > [追加D]2D6/[軽傷]-20%/[朦朧判定]8 -rand:2/10,10/10 -============================ -input: -GDPT -output: -GundogZero : 汎用ダメージペナルティー表[7] > [追加D]2D6/[軽傷]-30%/[朦朧判定]12 -rand:2/10,7/10 -============================ -input: -GDPT -output: -GundogZero : 汎用ダメージペナルティー表[7] > [追加D]2D6/[軽傷]-30%/[朦朧判定]12 -rand:2/10,7/10 -============================ -input: -SDPT1 -output: -GundogZero : 射撃ダメージペナルティー表[7] > [追加D]2D6/[軽傷]-10%/[朦朧判定]10 -rand:5/10,3/10 -============================ -input: -SDPT1 -output: -GundogZero : 射撃ダメージペナルティー表[16] > [軽傷]-10% -rand:10/10,7/10 -============================ -input: -SDPT1 -output: -GundogZero : 射撃ダメージペナルティー表[7] > [追加D]2D6/[軽傷]-10%/[朦朧判定]10 -rand:4/10,4/10 -============================ -input: -SDPT1 -output: -GundogZero : 射撃ダメージペナルティー表[10] > [追加D]2D6/[軽傷]-10%/[朦朧判定]4 -rand:2/10,9/10 -============================ -input: -SDPT1 -output: -GundogZero : 射撃ダメージペナルティー表[17] > 手に持った武器を落とす -rand:8/10,10/10 -============================ -input: -SDPT1 -output: -GundogZero : 射撃ダメージペナルティー表[16] > [軽傷]-10% -rand:10/10,7/10 -============================ -input: -SDPT1 -output: -GundogZero : 射撃ダメージペナルティー表[18] > ペナルティー無し -rand:9/10,10/10 -============================ -input: -SDPT1 -output: -GundogZero : 射撃ダメージペナルティー表[17] > 手に持った武器を落とす -rand:8/10,10/10 -============================ -input: -SDPT1 -output: -GundogZero : 射撃ダメージペナルティー表[10] > [追加D]2D6/[軽傷]-10%/[朦朧判定]4 -rand:6/10,5/10 -============================ -input: -SDPT1 -output: -GundogZero : 射撃ダメージペナルティー表[5] > [追加D]2D6/[出血]1D6/[重傷]-10%/[朦朧判定]12 -rand:3/10,3/10 -============================ -input: -MDPT1 -output: -GundogZero : 格闘ダメージペナルティー表[8] > [追加D]1D6/[軽傷]-20%/[朦朧判定]8 -rand:7/10,2/10 -============================ -input: -MDPT1 -output: -GundogZero : 格闘ダメージペナルティー表[7] > [追加D]2D6/[軽傷]-10%/[朦朧判定]10 -rand:1/10,7/10 -============================ -input: -MDPT1 -output: -GundogZero : 格闘ダメージペナルティー表[12] > [軽傷]-10%/[朦朧判定]6 -rand:10/10,3/10 -============================ -input: -MDPT1 -output: -GundogZero : 格闘ダメージペナルティー表[11] > [軽傷]-20%/[朦朧判定]6 -rand:3/10,9/10 -============================ -input: -MDPT1 -output: -GundogZero : 格闘ダメージペナルティー表[2] > [追加D]2D6/[出血]2D6/[重傷]-30%/[朦朧判定]14 -rand:1/10,2/10 -============================ -input: -MDPT1 -output: -GundogZero : 格闘ダメージペナルティー表[12] > [軽傷]-10%/[朦朧判定]6 -rand:4/10,9/10 -============================ -input: -MDPT1 -output: -GundogZero : 格闘ダメージペナルティー表[9] > [追加D]1D6/[軽傷]-10%/[朦朧判定]8 -rand:4/10,6/10 -============================ -input: -MDPT1 -output: -GundogZero : 格闘ダメージペナルティー表[6] > [追加D]2D6/[軽傷]-10%/[朦朧判定]12 -rand:4/10,3/10 -============================ -input: -MDPT1 -output: -GundogZero : 格闘ダメージペナルティー表[9] > [追加D]1D6/[軽傷]-10%/[朦朧判定]8 -rand:1/10,9/10 -============================ -input: -MDPT1 -output: -GundogZero : 格闘ダメージペナルティー表[15] > [軽傷]-10% -rand:7/10,9/10 -============================ -input: -VDPT1 -output: -GundogZero : 車両ダメージペナルティー表[15] > 乗員に[ショック]-20% -rand:7/10,9/10 -============================ -input: -VDPT1 -output: -GundogZero : 車両ダメージペナルティー表[8] > [乗員D]2D6/[スピード]-1/[スピン判定] -rand:7/10,2/10 -============================ -input: -VDPT1 -output: -GundogZero : 車両ダメージペナルティー表[15] > 乗員に[ショック]-20% -rand:7/10,9/10 -============================ -input: -VDPT1 -output: -GundogZero : 車両ダメージペナルティー表[9] > [乗員D]2D6/[操縦判定]-20% -rand:6/10,4/10 -============================ -input: -VDPT1 -output: -GundogZero : 車両ダメージペナルティー表[4] > [乗員D]2D6/[操縦性]-10%/[スピン判定] -rand:4/10,1/10 -============================ -input: -VDPT1 -output: -GundogZero : 車両ダメージペナルティー表[12] > [乗員D]1D6/[操縦判定]-10% -rand:9/10,4/10 -============================ -input: -VDPT1 -output: -GundogZero : 車両ダメージペナルティー表[11] > [乗員D]1D6/[操縦判定]-10% -rand:3/10,9/10 -============================ -input: -VDPT1 -output: -GundogZero : 車両ダメージペナルティー表[14] > [スピン判定] -rand:6/10,9/10 -============================ -input: -VDPT1 -output: -GundogZero : 車両ダメージペナルティー表[13] > [スピン判定] -rand:5/10,9/10 -============================ -input: -VDPT1 -output: -GundogZero : 車両ダメージペナルティー表[9] > [乗員D]2D6/[操縦判定]-20% -rand:5/10,5/10 -============================ -input: -GDPT1 -output: -GundogZero : 汎用ダメージペナルティー表[7] > [追加D]2D6/[軽傷]-30%/[朦朧判定]12 -rand:5/10,3/10 -============================ -input: -GDPT1 -output: -GundogZero : 汎用ダメージペナルティー表[3] > [追加D]3D6/[出血]2D6/[重傷]-20%/[朦朧判定]14 -rand:3/10,1/10 -============================ -input: -GDPT1 -output: -GundogZero : 汎用ダメージペナルティー表[7] > [追加D]2D6/[軽傷]-30%/[朦朧判定]12 -rand:4/10,4/10 -============================ -input: -GDPT1 -output: -GundogZero : 汎用ダメージペナルティー表[4] > [追加D]3D6/[出血]2D6/[重傷]-20%/[朦朧判定]14 -rand:2/10,3/10 -============================ -input: -GDPT1 -output: -GundogZero : 汎用ダメージペナルティー表[7] > [追加D]2D6/[軽傷]-30%/[朦朧判定]12 -rand:5/10,3/10 -============================ -input: -GDPT1 -output: -GundogZero : 汎用ダメージペナルティー表[13] > [追加D]1D6/[軽傷]-20%/[朦朧判定]4 -rand:6/10,8/10 -============================ -input: -GDPT1 -output: -GundogZero : 汎用ダメージペナルティー表[10] > [追加D]2D6/[軽傷]-20%/[朦朧判定]8 -rand:4/10,7/10 -============================ -input: -GDPT1 -output: -GundogZero : 汎用ダメージペナルティー表[5] > [追加D]3D6/[出血]1D6/[重傷]-10%/[朦朧判定]12 -rand:5/10,1/10 -============================ -input: -GDPT1 -output: -GundogZero : 汎用ダメージペナルティー表[8] > [追加D]2D6/[軽傷]-30%/[朦朧判定]10 -rand:3/10,6/10 -============================ -input: -GDPT1 -output: -GundogZero : 汎用ダメージペナルティー表[10] > [追加D]2D6/[軽傷]-20%/[朦朧判定]8 -rand:10/10,1/10 -============================ -input: -SDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[23] > ペナルティー無し -rand:9/10,6/10 -============================ -input: -SDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[20] > ペナルティー無し -rand:10/10,2/10 -============================ -input: -SDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[20] > ペナルティー無し -rand:3/10,9/10 -============================ -input: -SDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[12] > [追加D]1D6/[軽傷]-20% -rand:1/10,3/10 -============================ -input: -SDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[22] > ペナルティー無し -rand:7/10,7/10 -============================ -input: -SDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[22] > ペナルティー無し -rand:4/10,10/10 -============================ -input: -SDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[26] > ペナルティー無し -rand:8/10,10/10 -============================ -input: -SDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[17] > 手に持った武器を落とす -rand:5/10,4/10 -============================ -input: -SDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[16] > [軽傷]-10% -rand:7/10,1/10 -============================ -input: -SDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[17] > 手に持った武器を落とす -rand:5/10,4/10 -============================ -input: -MDPT10 -output: -GundogZero : 格闘ダメージペナルティー表[21] > ペナルティー無し -rand:9/10,4/10 -============================ -input: -MDPT10 -output: -GundogZero : 格闘ダメージペナルティー表[23] > ペナルティー無し -rand:9/10,6/10 -============================ -input: -MDPT10 -output: -GundogZero : 格闘ダメージペナルティー表[24] > ペナルティー無し -rand:8/10,8/10 -============================ -input: -MDPT10 -output: -GundogZero : 格闘ダメージペナルティー表[21] > ペナルティー無し -rand:5/10,8/10 -============================ -input: -MDPT10 -output: -GundogZero : 格闘ダメージペナルティー表[12] > [軽傷]-10%/[朦朧判定]6 -rand:1/10,3/10 -============================ -input: -MDPT10 -output: -GundogZero : 格闘ダメージペナルティー表[14] > [軽傷]-20% -rand:2/10,4/10 -============================ -input: -MDPT10 -output: -GundogZero : 格闘ダメージペナルティー表[20] > ペナルティー無し -rand:3/10,9/10 -============================ -input: -MDPT10 -output: -GundogZero : 格闘ダメージペナルティー表[25] > ペナルティー無し -rand:8/10,9/10 -============================ -input: -MDPT10 -output: -GundogZero : 格闘ダメージペナルティー表[16] > [軽傷]-10% -rand:4/10,4/10 -============================ -input: -MDPT10 -output: -GundogZero : 格闘ダメージペナルティー表[20] > ペナルティー無し -rand:6/10,6/10 -============================ -input: -VDPT10 -output: -GundogZero : 車両ダメージペナルティー表[21] > ペナルティー無し -rand:3/10,10/10 -============================ -input: -VDPT10 -output: -GundogZero : 車両ダメージペナルティー表[20] > ペナルティー無し -rand:3/10,9/10 -============================ -input: -VDPT10 -output: -GundogZero : 車両ダメージペナルティー表[13] > [スピン判定] -rand:3/10,2/10 -============================ -input: -VDPT10 -output: -GundogZero : 車両ダメージペナルティー表[14] > [スピン判定] -rand:4/10,2/10 -============================ -input: -VDPT10 -output: -GundogZero : 車両ダメージペナルティー表[19] > ペナルティー無し -rand:4/10,7/10 -============================ -input: -VDPT10 -output: -GundogZero : 車両ダメージペナルティー表[11] > [乗員D]1D6/[操縦判定]-10% -rand:1/10,2/10 -============================ -input: -VDPT10 -output: -GundogZero : 車両ダメージペナルティー表[13] > [スピン判定] -rand:4/10,1/10 -============================ -input: -VDPT10 -output: -GundogZero : 車両ダメージペナルティー表[25] > ペナルティー無し -rand:7/10,10/10 -============================ -input: -VDPT10 -output: -GundogZero : 車両ダメージペナルティー表[13] > [スピン判定] -rand:2/10,3/10 -============================ -input: -VDPT10 -output: -GundogZero : 車両ダメージペナルティー表[17] > 乗員に[ショック]-10% -rand:3/10,6/10 -============================ -input: -GDPT10 -output: -GundogZero : 汎用ダメージペナルティー表[20] > ペナルティー無し -rand:2/10,10/10 -============================ -input: -GDPT10 -output: -GundogZero : 汎用ダメージペナルティー表[13] > [追加D]1D6/[軽傷]-20%/[朦朧判定]4 -rand:2/10,3/10 -============================ -input: -GDPT10 -output: -GundogZero : 汎用ダメージペナルティー表[14] > [追加D]1D6/[軽傷]-20% -rand:2/10,4/10 -============================ -input: -GDPT10 -output: -GundogZero : 汎用ダメージペナルティー表[25] > ペナルティー無し -rand:9/10,8/10 -============================ -input: -GDPT10 -output: -GundogZero : 汎用ダメージペナルティー表[21] > ペナルティー無し -rand:10/10,3/10 -============================ -input: -GDPT10 -output: -GundogZero : 汎用ダメージペナルティー表[17] > [軽傷]-10% -rand:6/10,3/10 -============================ -input: -GDPT10 -output: -GundogZero : 汎用ダメージペナルティー表[19] > ペナルティー無し -rand:2/10,9/10 -============================ -input: -GDPT10 -output: -GundogZero : 汎用ダメージペナルティー表[14] > [追加D]1D6/[軽傷]-20% -rand:2/10,4/10 -============================ -input: -GDPT10 -output: -GundogZero : 汎用ダメージペナルティー表[23] > ペナルティー無し -rand:10/10,5/10 -============================ -input: -GDPT10 -output: -GundogZero : 汎用ダメージペナルティー表[24] > ペナルティー無し -rand:7/10,9/10 -============================ -input: -SFT -output: -GundogZero : 射撃ファンブル表[5] > 銃器が完全に故障 -rand:4/10,3/10 -============================ -input: -SFT -output: -GundogZero : 射撃ファンブル表[10] > 作動不良。[アイテム使用]を行って修理するまで射撃不可 -rand:6/10,6/10 -============================ -input: -SFT -output: -GundogZero : 射撃ファンブル表[15] > 姿勢を崩す。[ショック]-20% -rand:10/10,7/10 -============================ -input: -SFT -output: -GundogZero : 射撃ファンブル表[5] > 銃器が完全に故障 -rand:6/10,1/10 -============================ -input: -SFT -output: -GundogZero : 射撃ファンブル表[5] > 銃器が完全に故障 -rand:4/10,3/10 -============================ -input: -SFT -output: -GundogZero : 射撃ファンブル表[9] > 作動不良。[アイテム使用]を2回行って修理するまで射撃不可 -rand:1/10,10/10 -============================ -input: -SFT -output: -GundogZero : 射撃ファンブル表[10] > 作動不良。[アイテム使用]を行って修理するまで射撃不可 -rand:8/10,4/10 -============================ -input: -SFT -output: -GundogZero : 射撃ファンブル表[1] > 銃器が暴発、自分に命中。[非貫通D] -rand:2/10,1/10 -============================ -input: -SFT -output: -GundogZero : 射撃ファンブル表[8] > 作動不良。[アイテム使用]を2回行って修理するまで射撃不可 -rand:6/10,4/10 -============================ -input: -SFT -output: -GundogZero : 射撃ファンブル表[4] > 銃器が完全に故障 -rand:5/10,1/10 -============================ -input: -MFT -output: -GundogZero : 格闘ファンブル表[7] > 無理な姿勢で筋を伸ばす。[軽傷]-30% -rand:6/10,3/10 -============================ -input: -MFT -output: -GundogZero : 格闘ファンブル表[4] > 武器がガタつく。〈手先〉判定に成功するまで使用不可 -rand:3/10,3/10 -============================ -input: -MFT -output: -GundogZero : 格闘ファンブル表[11] > 無理な姿勢で筋を伸ばす。[軽傷]-10% -rand:9/10,4/10 -============================ -input: -MFT -output: -GundogZero : 格闘ファンブル表[5] > 武器がガタつく。〈手先〉判定に成功するまで使用不可 -rand:6/10,1/10 -============================ -input: -MFT -output: -GundogZero : 格闘ファンブル表[0] > 避けられて[転倒]、[朦朧]状態 -rand:1/10,1/10 -============================ -input: -MFT -output: -GundogZero : 格闘ファンブル表[2] > ランダムに[至近距離]の味方(居なければ自分)に命中。[貫通D] -rand:3/10,1/10 -============================ -input: -MFT -output: -GundogZero : 格闘ファンブル表[12] > 姿勢を崩す。[不安定] -rand:9/10,5/10 -============================ -input: -MFT -output: -GundogZero : 格闘ファンブル表[2] > ランダムに[至近距離]の味方(居なければ自分)に命中。[貫通D] -rand:1/10,3/10 -============================ -input: -MFT -output: -GundogZero : 格闘ファンブル表[11] > 無理な姿勢で筋を伸ばす。[軽傷]-10% -rand:4/10,9/10 -============================ -input: -MFT -output: -GundogZero : 格闘ファンブル表[14] > 姿勢を崩す。[ショック]-20% -rand:9/10,7/10 -============================ -input: -TFT -output: -GundogZero : 投擲ファンブル表[9] > 肩を痛める。[軽傷]-20% -rand:6/10,5/10 -============================ -input: -TFT -output: -GundogZero : 投擲ファンブル表[9] > 肩を痛める。[軽傷]-20% -rand:9/10,2/10 -============================ -input: -TFT -output: -GundogZero : 投擲ファンブル表[15] > 姿勢を崩す。[ショック]-20% -rand:7/10,10/10 -============================ -input: -TFT -output: -GundogZero : 投擲ファンブル表[15] > 姿勢を崩す。[ショック]-20% -rand:8/10,9/10 -============================ -input: -TFT -output: -GundogZero : 投擲ファンブル表[7] > 腰を痛める。[軽傷]-30% -rand:8/10,1/10 -============================ -input: -TFT -output: -GundogZero : 投擲ファンブル表[7] > 腰を痛める。[軽傷]-30% -rand:8/10,1/10 -============================ -input: -TFT -output: -GundogZero : 投擲ファンブル表[10] > 肘に違和感。[軽傷]-10% -rand:5/10,7/10 -============================ -input: -TFT -output: -GundogZero : 投擲ファンブル表[14] > 姿勢を崩す。[ショック]-20% -rand:6/10,10/10 -============================ -input: -TFT -output: -GundogZero : 投擲ファンブル表[10] > 肘に違和感。[軽傷]-10% -rand:3/10,9/10 -============================ -input: -TFT -output: -GundogZero : 投擲ファンブル表[9] > 肩を痛める。[軽傷]-20% -rand:9/10,2/10 -============================ -input: -SFT1 -output: -GundogZero : 射撃ファンブル表[7] > 故障。〈メカニック〉判定に成功するまで射撃不可 -rand:4/10,4/10 -============================ -input: -SFT1 -output: -GundogZero : 射撃ファンブル表[2] > 誤射。ランダムに味方に命中。[貫通D] -rand:2/10,1/10 -============================ -input: -SFT1 -output: -GundogZero : 射撃ファンブル表[12] > 姿勢を崩す。[不安定] -rand:5/10,8/10 -============================ -input: -SFT1 -output: -GundogZero : 射撃ファンブル表[4] > 銃器が完全に故障 -rand:4/10,1/10 -============================ -input: -SFT1 -output: -GundogZero : 射撃ファンブル表[9] > 作動不良。[アイテム使用]を2回行って修理するまで射撃不可 -rand:6/10,4/10 -============================ -input: -SFT1 -output: -GundogZero : 射撃ファンブル表[12] > 姿勢を崩す。[不安定] -rand:4/10,9/10 -============================ -input: -SFT1 -output: -GundogZero : 射撃ファンブル表[7] > 故障。〈メカニック〉判定に成功するまで射撃不可 -rand:3/10,5/10 -============================ -input: -SFT1 -output: -GundogZero : 射撃ファンブル表[10] > 作動不良。[アイテム使用]を行って修理するまで射撃不可 -rand:3/10,8/10 -============================ -input: -SFT1 -output: -GundogZero : 射撃ファンブル表[2] > 誤射。ランダムに味方に命中。[貫通D] -rand:1/10,2/10 -============================ -input: -SFT1 -output: -GundogZero : 射撃ファンブル表[5] > 銃器が完全に故障 -rand:5/10,1/10 -============================ -input: -MFT1 -output: -GundogZero : 格闘ファンブル表[8] > 無理な姿勢で筋を伸ばす。[軽傷]-20% -rand:7/10,2/10 -============================ -input: -MFT1 -output: -GundogZero : 格闘ファンブル表[3] > 武器が完全に壊れる -rand:3/10,1/10 -============================ -input: -MFT1 -output: -GundogZero : 格闘ファンブル表[1] > ランダムに[至近距離]の味方(居なければ自分)に命中。[貫通D] -rand:1/10,1/10 -============================ -input: -MFT1 -output: -GundogZero : 格闘ファンブル表[12] > 姿勢を崩す。[不安定] -rand:9/10,4/10 -============================ -input: -MFT1 -output: -GundogZero : 格闘ファンブル表[7] > 無理な姿勢で筋を伸ばす。[軽傷]-30% -rand:7/10,1/10 -============================ -input: -MFT1 -output: -GundogZero : 格闘ファンブル表[13] > 姿勢を崩す。[不安定] -rand:10/10,4/10 -============================ -input: -MFT1 -output: -GundogZero : 格闘ファンブル表[10] > 無理な姿勢で筋を伸ばす。[軽傷]-10% -rand:9/10,2/10 -============================ -input: -MFT1 -output: -GundogZero : 格闘ファンブル表[9] > 無理な姿勢で筋を伸ばす。[軽傷]-20% -rand:5/10,5/10 -============================ -input: -MFT1 -output: -GundogZero : 格闘ファンブル表[5] > 武器がガタつく。〈手先〉判定に成功するまで使用不可 -rand:1/10,5/10 -============================ -input: -MFT1 -output: -GundogZero : 格闘ファンブル表[10] > 無理な姿勢で筋を伸ばす。[軽傷]-10% -rand:1/10,10/10 -============================ -input: -TFT1 -output: -GundogZero : 投擲ファンブル表[6] > 武器が完全に壊れる -rand:3/10,4/10 -============================ -input: -TFT1 -output: -GundogZero : 投擲ファンブル表[13] > 姿勢を崩す。[不安定] -rand:8/10,6/10 -============================ -input: -TFT1 -output: -GundogZero : 投擲ファンブル表[10] > 肘に違和感。[軽傷]-10% -rand:5/10,6/10 -============================ -input: -TFT1 -output: -GundogZero : 投擲ファンブル表[8] > 肩を痛める。[軽傷]-20% -rand:6/10,3/10 -============================ -input: -TFT1 -output: -GundogZero : 投擲ファンブル表[14] > 姿勢を崩す。[ショック]-20% -rand:5/10,10/10 -============================ -input: -TFT1 -output: -GundogZero : 投擲ファンブル表[16] > 姿勢を崩す。[ショック]-10% -rand:10/10,7/10 -============================ -input: -TFT1 -output: -GundogZero : 投擲ファンブル表[8] > 肩を痛める。[軽傷]-20% -rand:3/10,6/10 -============================ -input: -TFT1 -output: -GundogZero : 投擲ファンブル表[8] > 肩を痛める。[軽傷]-20% -rand:3/10,6/10 -============================ -input: -TFT1 -output: -GundogZero : 投擲ファンブル表[4] > ランダムに味方(居なければ自分)に命中。[非貫通D] -rand:4/10,1/10 -============================ -input: -TFT1 -output: -GundogZero : 投擲ファンブル表[4] > ランダムに味方(居なければ自分)に命中。[非貫通D] -rand:4/10,1/10 -============================ -input: -SFT10 -output: -GundogZero : 射撃ファンブル表[17] > 姿勢を崩す。[ショック]-10% -rand:8/10,1/10 -============================ -input: -SFT10 -output: -GundogZero : 射撃ファンブル表[22] > ペナルティー無し -rand:4/10,10/10 -============================ -input: -SFT10 -output: -GundogZero : 射撃ファンブル表[14] > 姿勢を崩す。[ショック]-20% -rand:2/10,4/10 -============================ -input: -SFT10 -output: -GundogZero : 射撃ファンブル表[20] > ペナルティー無し -rand:6/10,6/10 -============================ -input: -SFT10 -output: -GundogZero : 射撃ファンブル表[15] > 姿勢を崩す。[ショック]-20% -rand:2/10,5/10 -============================ -input: -SFT10 -output: -GundogZero : 射撃ファンブル表[16] > 姿勢を崩す。[ショック]-10% -rand:1/10,7/10 -============================ -input: -SFT10 -output: -GundogZero : 射撃ファンブル表[21] > ペナルティー無し -rand:9/10,4/10 -============================ -input: -SFT10 -output: -GundogZero : 射撃ファンブル表[21] > ペナルティー無し -rand:3/10,10/10 -============================ -input: -SFT10 -output: -GundogZero : 射撃ファンブル表[22] > ペナルティー無し -rand:5/10,9/10 -============================ -input: -SFT10 -output: -GundogZero : 射撃ファンブル表[16] > 姿勢を崩す。[ショック]-10% -rand:6/10,2/10 -============================ -input: -MFT10 -output: -GundogZero : 格闘ファンブル表[19] > ペナルティー無し -rand:8/10,3/10 -============================ -input: -MFT10 -output: -GundogZero : 格闘ファンブル表[13] > 姿勢を崩す。[不安定] -rand:2/10,3/10 -============================ -input: -MFT10 -output: -GundogZero : 格闘ファンブル表[18] > ペナルティー無し -rand:5/10,5/10 -============================ -input: -MFT10 -output: -GundogZero : 格闘ファンブル表[25] > ペナルティー無し -rand:8/10,9/10 -============================ -input: -MFT10 -output: -GundogZero : 格闘ファンブル表[22] > ペナルティー無し -rand:5/10,9/10 -============================ -input: -MFT10 -output: -GundogZero : 格闘ファンブル表[10] > 無理な姿勢で筋を伸ばす。[軽傷]-10% -rand:1/10,1/10 -============================ -input: -MFT10 -output: -GundogZero : 格闘ファンブル表[22] > ペナルティー無し -rand:5/10,9/10 -============================ -input: -MFT10 -output: -GundogZero : 格闘ファンブル表[18] > ペナルティー無し -rand:4/10,6/10 -============================ -input: -MFT10 -output: -GundogZero : 格闘ファンブル表[20] > ペナルティー無し -rand:10/10,2/10 -============================ -input: -MFT10 -output: -GundogZero : 格闘ファンブル表[21] > ペナルティー無し -rand:10/10,3/10 -============================ -input: -TFT10 -output: -GundogZero : 投擲ファンブル表[21] > ペナルティー無し -rand:5/10,8/10 -============================ -input: -TFT10 -output: -GundogZero : 投擲ファンブル表[13] > 姿勢を崩す。[不安定] -rand:4/10,1/10 -============================ -input: -TFT10 -output: -GundogZero : 投擲ファンブル表[20] > ペナルティー無し -rand:2/10,10/10 -============================ -input: -TFT10 -output: -GundogZero : 投擲ファンブル表[26] > ペナルティー無し -rand:8/10,10/10 -============================ -input: -TFT10 -output: -GundogZero : 投擲ファンブル表[15] > 姿勢を崩す。[ショック]-20% -rand:3/10,4/10 -============================ -input: -TFT10 -output: -GundogZero : 投擲ファンブル表[27] > ペナルティー無し -rand:10/10,9/10 -============================ -input: -TFT10 -output: -GundogZero : 投擲ファンブル表[20] > ペナルティー無し -rand:5/10,7/10 -============================ -input: -TFT10 -output: -GundogZero : 投擲ファンブル表[21] > ペナルティー無し -rand:3/10,10/10 -============================ -input: -TFT10 -output: -GundogZero : 投擲ファンブル表[21] > ペナルティー無し -rand:10/10,3/10 -============================ -input: -TFT10 -output: -GundogZero : 投擲ファンブル表[16] > 姿勢を崩す。[ショック]-10% -rand:3/10,5/10 -============================ -input: -XDPT -output: -GundogZero : 射撃ダメージペナルティー表[9] > [追加D]2D6/[軽傷]-20%/[朦朧判定]6 -rand:4/10,7/10 -============================ -input: -XDPT -output: -GundogZero : 射撃ダメージペナルティー表[9] > [追加D]2D6/[軽傷]-20%/[朦朧判定]6 -rand:1/10,10/10 -============================ -input: -XDPT -output: -GundogZero : 射撃ダメージペナルティー表[7] > [追加D]2D6/[軽傷]-10%/[朦朧判定]10 -rand:5/10,4/10 -============================ -input: -XDPT -output: -GundogZero : 射撃ダメージペナルティー表[16] > [軽傷]-10% -rand:9/10,9/10 -============================ -input: -XDPT -output: -GundogZero : 射撃ダメージペナルティー表[10] > [追加D]2D6/[軽傷]-10%/[朦朧判定]4 -rand:10/10,2/10 -============================ -input: -XDPT -output: -GundogZero : 射撃ダメージペナルティー表[10] > [追加D]2D6/[軽傷]-10%/[朦朧判定]4 -rand:2/10,10/10 -============================ -input: -XDPT -output: -GundogZero : 射撃ダメージペナルティー表[10] > [追加D]2D6/[軽傷]-10%/[朦朧判定]4 -rand:3/10,9/10 -============================ -input: -XDPT -output: -GundogZero : 射撃ダメージペナルティー表[4] > [追加D]3D6/[出血]1D6/[重傷]-20%/[朦朧判定]12 -rand:3/10,3/10 -============================ -input: -XDPT -output: -GundogZero : 射撃ダメージペナルティー表[4] > [追加D]3D6/[出血]1D6/[重傷]-20%/[朦朧判定]12 -rand:4/10,2/10 -============================ -input: -XDPT -output: -GundogZero : 射撃ダメージペナルティー表[15] > [軽傷]-10% -rand:8/10,9/10 -============================ -input: -XDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[22] > ペナルティー無し -rand:8/10,6/10 -============================ -input: -XDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[19] > ペナルティー無し -rand:9/10,2/10 -============================ -input: -XDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[17] > 手に持った武器を落とす -rand:2/10,7/10 -============================ -input: -XDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[15] > [軽傷]-10% -rand:4/10,3/10 -============================ -input: -XDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[21] > ペナルティー無し -rand:5/10,8/10 -============================ -input: -XDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[17] > 手に持った武器を落とす -rand:2/10,7/10 -============================ -input: -XDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[21] > ペナルティー無し -rand:10/10,3/10 -============================ -input: -XDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[26] > ペナルティー無し -rand:8/10,10/10 -============================ -input: -XDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[23] > ペナルティー無し -rand:5/10,10/10 -============================ -input: -XDPT10 -output: -GundogZero : 射撃ダメージペナルティー表[15] > [軽傷]-10% -rand:4/10,3/10 -============================ -input: -XFT -output: -GundogZero : 射撃ファンブル表[5] > 銃器が完全に故障 -rand:5/10,2/10 -============================ -input: -XFT -output: -GundogZero : 射撃ファンブル表[4] > 銃器が完全に故障 -rand:2/10,4/10 -============================ -input: -XFT -output: -GundogZero : 射撃ファンブル表[4] > 銃器が完全に故障 -rand:3/10,3/10 -============================ -input: -XFT -output: -GundogZero : 射撃ファンブル表[9] > 作動不良。[アイテム使用]を2回行って修理するまで射撃不可 -rand:9/10,2/10 -============================ -input: -XFT -output: -GundogZero : 射撃ファンブル表[11] > 作動不良。[アイテム使用]を行って修理するまで射撃不可 -rand:9/10,4/10 -============================ -input: -XFT -output: -GundogZero : 射撃ファンブル表[10] > 作動不良。[アイテム使用]を行って修理するまで射撃不可 -rand:7/10,5/10 -============================ -input: -XFT -output: -GundogZero : 射撃ファンブル表[8] > 作動不良。[アイテム使用]を2回行って修理するまで射撃不可 -rand:9/10,1/10 -============================ -input: -XFT -output: -GundogZero : 射撃ファンブル表[7] > 故障。〈メカニック〉判定に成功するまで射撃不可 -rand:3/10,6/10 -============================ -input: -XFT -output: -GundogZero : 射撃ファンブル表[7] > 故障。〈メカニック〉判定に成功するまで射撃不可 -rand:4/10,5/10 -============================ -input: -XFT -output: -GundogZero : 射撃ファンブル表[11] > 作動不良。[アイテム使用]を行って修理するまで射撃不可 -rand:9/10,4/10 -============================ -input: -XFT10 -output: -GundogZero : 射撃ファンブル表[23] > ペナルティー無し -rand:6/10,9/10 -============================ -input: -XFT10 -output: -GundogZero : 射撃ファンブル表[13] > 姿勢を崩す。[不安定] -rand:4/10,1/10 -============================ -input: -XFT10 -output: -GundogZero : 射撃ファンブル表[24] > ペナルティー無し -rand:10/10,6/10 -============================ -input: -XFT10 -output: -GundogZero : 射撃ファンブル表[22] > ペナルティー無し -rand:8/10,6/10 -============================ -input: -XFT10 -output: -GundogZero : 射撃ファンブル表[19] > ペナルティー無し -rand:10/10,1/10 -============================ -input: -XFT10 -output: -GundogZero : 射撃ファンブル表[14] > 姿勢を崩す。[ショック]-20% -rand:2/10,4/10 -============================ -input: -XFT10 -output: -GundogZero : 射撃ファンブル表[22] > ペナルティー無し -rand:10/10,4/10 -============================ -input: -XFT10 -output: -GundogZero : 射撃ファンブル表[16] > 姿勢を崩す。[ショック]-10% -rand:7/10,1/10 -============================ -input: -XFT10 -output: -GundogZero : 射撃ファンブル表[22] > ペナルティー無し -rand:4/10,10/10 -============================ -input: -XFT10 -output: -GundogZero : 射撃ファンブル表[25] > ペナルティー無し -rand:10/10,7/10 diff --git a/src/src_bcdice/test/data/Gurps.txt b/src/src_bcdice/test/data/Gurps.txt deleted file mode 100644 index 20d3305cb..000000000 --- a/src/src_bcdice/test/data/Gurps.txt +++ /dev/null @@ -1,191 +0,0 @@ -input: -3d6<=11 -output: -GURPS : (3D6<=11) > 3[1,1,1] > 3 > クリティカル(成功度:8) -rand:1/6,1/6,1/6 -============================ -input: -3d6<=11 -output: -GURPS : (3D6<=11) > 4[2,1,1] > 4 > クリティカル(成功度:7) -rand:2/6,1/6,1/6 -============================ -input: -3d6<=11 -output: -GURPS : (3D6<=11) > 5[2,1,2] > 5 > 成功(成功度:6) -rand:2/6,1/6,2/6 -============================ -input: -3d6<=15 -output: -GURPS : (3D6<=15) > 5[2,1,2] > 5 > クリティカル(成功度:10) -rand:2/6,1/6,2/6 -============================ -input: -3d6<=15 -output: -GURPS : (3D6<=15) > 6[4,1,1] > 6 > 成功(成功度:9) -rand:4/6,1/6,1/6 -============================ -input: -3d6<=16 -output: -GURPS : (3D6<=16) > 6[4,1,1] > 6 > クリティカル(成功度:10) -rand:4/6,1/6,1/6 -============================ -input: -3d6<=17 -output: -GURPS : (3D6<=17) > 7[4,2,1] > 7 > 成功(成功度:10) -rand:4/6,2/6,1/6 -============================ -input: -3d6<=17 -output: -GURPS : (3D6<=17) > 17[6,6,5] > 17 > 自動失敗(失敗度:0) -rand:6/6,6/6,5/6 -============================ -input: -3d6<=11 -output: -GURPS : (3D6<=11) > 18[6,6,6] > 18 > ファンブル(失敗度:-7) -rand:6/6,6/6,6/6 -============================ -input: -3d6<=11 -output: -GURPS : (3D6<=11) > 17[6,6,5] > 17 > ファンブル(失敗度:-6) -rand:6/6,6/6,5/6 -============================ -input: -3d6<=15 -output: -GURPS : (3D6<=15) > 16[5,6,5] > 16 > 失敗(失敗度:-1) -rand:5/6,6/6,5/6 -============================ -input: -3d6<=16 -output: -GURPS : (3D6<=16) > 17[6,6,5] > 17 > 自動失敗(失敗度:-1) -rand:6/6,6/6,5/6 -============================ -input: -3d6<=11 -output: -GURPS : (3D6<=11) > 12[3,3,6] > 12 > 失敗(失敗度:-1) -rand:3/6,3/6,6/6 -============================ -input: -3d6<=5 -output: -GURPS : (3D6<=5) > 15[6,6,3] > 15 > ファンブル(失敗度:-10) -rand:6/6,6/6,3/6 -============================ -input: -3d6<=5 -output: -GURPS : (3D6<=5) > 14[6,6,2] > 14 > 失敗(失敗度:-9) -rand:6/6,6/6,2/6 -============================ -input: -16-3d6 -output: -GURPS : (3D6<=16) > 6[4,1,1] > 6 > クリティカル(成功度:10) -rand:4/6,1/6,1/6 -============================ -input: -17-3d6 -output: -GURPS : (3D6<=17) > 7[4,2,1] > 7 > 成功(成功度:10) -rand:4/6,2/6,1/6 -============================ -input: -17-3d6 -output: -GURPS : (3D6<=17) > 17[6,6,5] > 17 > 自動失敗(失敗度:0) -rand:6/6,6/6,5/6 -============================ -input: -11-3d6 -output: -GURPS : (3D6<=11) > 18[6,6,6] > 18 > ファンブル(失敗度:-7) -rand:6/6,6/6,6/6 -============================ -input: -CRT -output: -GURPS : クリティカル表(18):体を狙っていたら、相手は気絶(回復は30分後に生命力判定)。他はダメージ3倍。 -rand:6/6,6/6,6/6 -============================ -input: -FMB -output: -GURPS : ファンブル表(18):武器が壊れる。ただし、金属バットなど固い"叩き"武器は壊れない(ふりなおし)。 -rand:6/6,6/6,6/6 -============================ -input: -MFMB -output: -GURPS : 呪文ファンブル表(18):呪文が完全に失敗する。GMから見て、術者や呪文が純粋で善良なものでなければ、悪魔(第3版文庫版P.384参照)があらわれ、術者を攻撃する。 -rand:6/6,6/6,6/6 -============================ -input: -HCRT -output: -GURPS : 頭部打撃クリティカル表(3):敵は即死する。 -rand:1/6,1/6,1/6 -============================ -input: -YSCRT -output: -GURPS : 妖魔夜行スペシャルクリティカル表(3):目(あるいは急所)に当たった!目(あるいは急所)が無ければ3倍ダメージ。 -rand:1/6,1/6,1/6 -============================ -input: -YSFMB -output: -GURPS : 妖魔夜行スペシャルファンブル表(3):この表を2回振って、両方の結果を適用する。 -rand:1/6,1/6,1/6 -============================ -input: -YFMB -output: -GURPS : 妖術ファンブル表(3):妖術が完全に失敗する。術者は3D点のダメージを受ける。 -rand:1/6,1/6,1/6 -============================ -input: -FEAR -output: -GURPS : 恐怖表(18):生命力判定を行い、失敗すると1点の負傷を受ける。さらに1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。 -rand:6/6,6/6,6/6 -============================ -input: -FEAR+1 -output: -GURPS : 恐怖表(19):1点負傷。2D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。 -rand:6/6,6/6,6/6 -============================ -input: -REACT -output: -GURPS : 反応表(18):とても良い -rand:6/6,6/6,6/6 -============================ -input: -REACT+1 -output: -GURPS : 反応表(19):最高 -rand:6/6,6/6,6/6 -============================ -input: -REACT-1 -output: -GURPS : 反応表(17):とても良い -rand:6/6,6/6,6/6 -============================ -input: -3D6>=? 目標値?でバグらない -output: -GURPS : (3D6>=?) > 9[3,3,3] > 9 > 失敗 -rand:3/6,3/6,3/6 diff --git a/src/src_bcdice/test/data/GurpsFW.txt b/src/src_bcdice/test/data/GurpsFW.txt deleted file mode 100644 index 835a33098..000000000 --- a/src/src_bcdice/test/data/GurpsFW.txt +++ /dev/null @@ -1,223 +0,0 @@ -input: -3d6<=11 -output: -GurpsFW : (3D6<=11) > 3[1,1,1] > 3 > クリティカル(成功度:8) -rand:1/6,1/6,1/6 -============================ -input: -3d6<=11 -output: -GurpsFW : (3D6<=11) > 4[2,1,1] > 4 > クリティカル(成功度:7) -rand:2/6,1/6,1/6 -============================ -input: -3d6<=11 -output: -GurpsFW : (3D6<=11) > 5[2,1,2] > 5 > 成功(成功度:6) -rand:2/6,1/6,2/6 -============================ -input: -3d6<=15 -output: -GurpsFW : (3D6<=15) > 5[2,1,2] > 5 > クリティカル(成功度:10) -rand:2/6,1/6,2/6 -============================ -input: -3d6<=15 -output: -GurpsFW : (3D6<=15) > 6[4,1,1] > 6 > 成功(成功度:9) -rand:4/6,1/6,1/6 -============================ -input: -3d6<=16 -output: -GurpsFW : (3D6<=16) > 6[4,1,1] > 6 > クリティカル(成功度:10) -rand:4/6,1/6,1/6 -============================ -input: -3d6<=17 -output: -GurpsFW : (3D6<=17) > 7[4,2,1] > 7 > 成功(成功度:10) -rand:4/6,2/6,1/6 -============================ -input: -3d6<=17 -output: -GurpsFW : (3D6<=17) > 17[6,6,5] > 17 > 自動失敗(失敗度:0) -rand:6/6,6/6,5/6 -============================ -input: -3d6<=11 -output: -GurpsFW : (3D6<=11) > 18[6,6,6] > 18 > ファンブル(失敗度:-7) -rand:6/6,6/6,6/6 -============================ -input: -3d6<=11 -output: -GurpsFW : (3D6<=11) > 17[6,6,5] > 17 > ファンブル(失敗度:-6) -rand:6/6,6/6,5/6 -============================ -input: -3d6<=15 -output: -GurpsFW : (3D6<=15) > 16[5,6,5] > 16 > 失敗(失敗度:-1) -rand:5/6,6/6,5/6 -============================ -input: -3d6<=16 -output: -GurpsFW : (3D6<=16) > 17[6,6,5] > 17 > 自動失敗(失敗度:-1) -rand:6/6,6/6,5/6 -============================ -input: -3d6<=11 -output: -GurpsFW : (3D6<=11) > 12[3,3,6] > 12 > 失敗(失敗度:-1) -rand:3/6,3/6,6/6 -============================ -input: -3d6<=5 -output: -GurpsFW : (3D6<=5) > 15[6,6,3] > 15 > ファンブル(失敗度:-10) -rand:6/6,6/6,3/6 -============================ -input: -3d6<=5 -output: -GurpsFW : (3D6<=5) > 14[6,6,2] > 14 > 失敗(失敗度:-9) -rand:6/6,6/6,2/6 -============================ -input: -CRT -output: -GurpsFW : クリティカル表(18):体を狙っていたら、相手は気絶(回復は30分後に生命力判定)。他はダメージ3倍。 -rand:6/6,6/6,6/6 -============================ -input: -FMB -output: -GurpsFW : ファンブル表(18):武器が壊れる。ただし、金属バットなど固い"叩き"武器は壊れない(ふりなおし)。 -rand:6/6,6/6,6/6 -============================ -input: -MFMB -output: -GurpsFW : 呪文ファンブル表(18):呪文が完全に失敗する。GMから見て、術者や呪文が純粋で善良なものでなければ、悪魔(第3版文庫版P.384参照)があらわれ、術者を攻撃する。 -rand:6/6,6/6,6/6 -============================ -input: -FEAR -output: -GurpsFW : 恐怖表(18):生命力判定を行い、失敗すると1点の負傷を受ける。さらに1D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。 -rand:6/6,6/6,6/6 -============================ -input: -FEAR+1 -output: -GurpsFW : 恐怖表(19):1点負傷。2D分間意識を失う。以後、1分ごとに生命力判定を行い、成功すると回復。 -rand:6/6,6/6,6/6 -============================ -input: -REACT -output: -GurpsFW : 反応表(18):とても良い -rand:6/6,6/6,6/6 -============================ -input: -REACT+1 -output: -GurpsFW : 反応表(19):最高 -rand:6/6,6/6,6/6 -============================ -input: -REACT-1 -output: -GurpsFW : 反応表(17):とても良い -rand:6/6,6/6,6/6 -============================ -input: -RANDE -output: -GurpsFW : ランダムイベント表(312):断崖(初級):休憩に丁度いい広場を見つけた。FPが2D回復するが、「意志」判定を行うこと。PCの半数以上が失敗すると居心地が良すぎて離れづらくなり次の深度判定と地形変化が起きなくなる。その場合次もこのイベントを行うこと。 -rand:3/6,1/6,2/6 -============================ -input: -TRAPE -output: -GurpsFW : トラップリスト(7):初級:スロット:スロットが揃うまで開かない宝箱。スロットを1回まわすには100GPが必要。行動を消費して「視覚-5」判定に成功すればスロットはそろう。「反射神経」があれば「視覚」そのままで判定可能。 -rand:3/6,3/6,1/6 -============================ -input: -TRSN28 -output: -GurpsFW : 財宝テーブル(2):最高級能力増加ポーション(消耗品) -rand:2/6 -============================ -input: -RENCH -output: -GurpsFW : ランダムエンカウント表(144):洞窟(上級):デビルホイール(CL26)とエンカウント、防護点+4、HP+24。トロッコに乗って逃げつつの戦闘になり、2ラウンド以内に倒せなければ轢かれてPC全員が8Dの防護点無視ダメージを受ける。また、1ラウンドに1人誰かが体力判定を行ってトロッコを運転する必要があり、これに失敗すると即座に轢かれてしまう。轢かれると戦闘は終了する。パーテイー内にケイヴウォーカーがいればこの判定は不要。 -rand:1/6,4/6 -============================ -input: -AREA -output: -GurpsFW : 地形決定表(6):墓地 -「客人とは珍しい・・・『死者の王』に出会わぬよう、ゆめゆめご注意を・・・」 -死者どもの彷徨う、暗く冷たい墓地。 -ローブをかぶった得体の知れない墓守を<追跡>して脱出せよ。 -☆深度判定:<追跡> -☆屋外 -☆薄暗い(ストームコーザー「鳥目」を適用) -rand:6/6 -============================ -input: -DROP -output: -GurpsFW : ドロップ判定(12):CL×10GP -rand:5/6,2/6,5/6 -============================ -input: -DROPN -output: -GurpsFW : ドロップ判定(3):レアアイテム1 -rand:1/6,1/6,1/6 -============================ -input: -HST -output: -GurpsFW : 必殺技表(1):命中判定に[1,1,1]でクリティカル(クリティカル表も参照)。 -rand:1/6 -============================ -input: -KHST -output: -GurpsFW : 驚異的必殺技表(14):1点でもダメージを与えた場合、-6のペナルティで気絶判定。 -rand:5/6,6/6,3/6 -============================ -input: -RANDOP -output: -GurpsFW : 迷宮追加オプション表(31):「暗闇の迷宮」 初期深度+5 -「暗視」がなければ視覚判定に-5のペナルティを受ける。 -ストームコーザーはペナルティが2倍。 -rand:3/6,1/6 -============================ -input: -LOTN -output: -GurpsFW : ナンバーワンノーマルくじ:ヤコ仮面or梟の文鎮(選択可) -rand:4/6,3/6 -============================ -input: -LOTP -output: -GurpsFW : ナンバーワンプレミアムくじ:天使の望遠鏡orデスの目覚まし時計(選択可) -rand:4/6,6/6,6/6,6/6,2/6 -============================ -input: -3D6>=? 目標値?でバグらない -output: -GurpsFW : (3D6>=?) > 9[3,3,3] > 9 > 失敗 -rand:3/6,3/6,3/6 diff --git a/src/src_bcdice/test/data/HarnMaster.txt b/src/src_bcdice/test/data/HarnMaster.txt deleted file mode 100644 index a65950b47..000000000 --- a/src/src_bcdice/test/data/HarnMaster.txt +++ /dev/null @@ -1,107 +0,0 @@ -input: -1D100<=50 -output: -HarnMaster : (1D100<=50) > 49> 成功 -rand:49/100 -============================ -input: -1D100<=50 -output: -HarnMaster : (1D100<=50) > 51> 失敗 -rand:51/100 -============================ -input: -1D100<=50 -output: -HarnMaster : (1D100<=50) > 50> 決定的成功 -rand:50/100 -============================ -input: -1D100<=50 -output: -HarnMaster : (1D100<=50) > 55> 致命的失敗 -rand:55/100 -============================ -input: -SLH -output: -HarnMaster : 命中部位(人型 中段) > (1)頭部 -rand:1/100 -============================ -input: -SLH -output: -HarnMaster : 命中部位(人型 中段) > (5)頭部 -rand:5/100 -============================ -input: -SLH -output: -HarnMaster : 命中部位(人型 中段) > (6)顔 > (81)左耳 -rand:6/100,81/100 -============================ -input: -SLH -output: -HarnMaster : 命中部位(人型 中段) > (6)顔 > (82)右耳 -rand:6/100,82/100 -============================ -input: -SLH -output: -HarnMaster : 命中部位(人型 中段) > (7)顔 > (82)右耳 -rand:7/100,82/100 -============================ -input: -SLH -output: -HarnMaster : 命中部位(人型 中段) > (100)右足 -rand:100/100 -============================ -input: -SLHU -output: -HarnMaster : 命中部位(人型 上段) > (15)頭部 -rand:15/100 -============================ -input: -SLHU -output: -HarnMaster : 命中部位(人型 上段) > (16)顔 > (65)鼻 -rand:16/100,65/100 -============================ -input: -SLHD -output: -HarnMaster : 命中部位(人型 下段) > (30)股間 -rand:30/100 -============================ -input: -SLHD -output: -HarnMaster : 命中部位(人型 下段) > (36)右臀部 -rand:36/100 -============================ -input: -SHK12,3 -output: -HarnMaster : ショック判定(ダメージ:3, 耐久力:12) > (11[3,4,4]) > 成功 -rand:3/6,4/6,4/6 -============================ -input: -SHK12,3 -output: -HarnMaster : ショック判定(ダメージ:3, 耐久力:12) > (12[4,4,4]) > 成功 -rand:4/6,4/6,4/6 -============================ -input: -SHK12,3 -output: -HarnMaster : ショック判定(ダメージ:3, 耐久力:12) > (13[5,4,4]) > 失敗 -rand:5/6,4/6,4/6 -============================ -input: -1D100>=? 目標値?でバグらない -output: -HarnMaster : (1D100>=?) > 42 > 失敗 -rand:42/100 diff --git a/src/src_bcdice/test/data/HatsuneMiku.txt b/src/src_bcdice/test/data/HatsuneMiku.txt deleted file mode 100644 index dccda266c..000000000 --- a/src/src_bcdice/test/data/HatsuneMiku.txt +++ /dev/null @@ -1,354 +0,0 @@ -input: -RC>=5 -output: -HatsuneMiku : (RC>=5) > [5] > 5:成功 -rand:5/6 -============================ -input: -RB -output: -HatsuneMiku : (RB>=4) > [3,5] > - ネイロに3(青)を取得した場合 5:成功 - ネイロに5(白)を取得した場合 3:失敗 -rand:5/6,3/6 -============================ -input: -R1>=5 -output: -HatsuneMiku : (R1>=5) > [5] > 5:成功 -rand:5/6 -============================ -input: -R6 -output: -HatsuneMiku : (R6>=4) > [2,2,3,3,5,5] > - ネイロに2(赤)を取得した場合 5:成功 - ネイロに3(青)を取得した場合 5:成功 - ネイロに5(白)を取得した場合 5:成功 -rand:2/6,5/6,3/6,2/6,5/6,3/6 -============================ -input: -RD -output: -HatsuneMiku : (RD>=4) > [3,4] > 3:失敗 -rand:3/6,4/6 -============================ -input: -RD -output: -HatsuneMiku : (RD>=4) > [4,5] > 4:成功 -rand:5/6,4/6 -============================ -input: -RC -output: -HatsuneMiku : (RC>=4) > [3] > 3:失敗 -rand:3/6 -============================ -input: -RC -output: -HatsuneMiku : (RC>=4) > [4] > 4:成功 -rand:4/6 -============================ -input: -RC++ -output: -HatsuneMiku : (RC+2>=4) > [2]+2 > 4:成功 -rand:2/6 -============================ -input: -RB+,+1 -output: -HatsuneMiku : (RB+1+1>=4) > [2,5]+1+1 > - ネイロに2(赤)を取得した場合 7:成功 - ネイロに5(白)を取得した場合 4:成功 -rand:5/6,2/6 -============================ -input: -RC++,+1 -output: -HatsuneMiku : (RC+2+1>=4) > [2]+2+1 > 5:成功 -rand:2/6 -============================ -input: -RC -output: -HatsuneMiku : (RC>=4) > [5] > 5:成功 -rand:5/6 -============================ -input: -RC -output: -HatsuneMiku : (RC>=4) > [2] > 2:失敗 -rand:2/6 -============================ -input: -RC+2 -output: -HatsuneMiku : (RC+2>=4) > [2]+2 > 4:成功 -rand:2/6 -============================ -input: -RC-3 -output: -HatsuneMiku : (RC-3>=4) > [2]-3 > -1:失敗 -rand:2/6 -============================ -input: -RC-3+2 -output: -HatsuneMiku : (RC-3+2>=4) > [2]-3+2 > 1:失敗 -rand:2/6 -============================ -input: -RC>=5-1 -output: -HatsuneMiku : (RC>=5-1) > [5] > 5:成功 -rand:5/6 -============================ -input: -RC>=5-2 hogehoge -output: -HatsuneMiku : (RC>=5-2) > [5] > 5:成功 -rand:5/6 -============================ -input: -RB+1>=5 -output: -HatsuneMiku : (RB+1>=5) > [2,4]+1 > - ネイロに2(赤)を取得した場合 5:成功 - ネイロに4(緑)を取得した場合 3:失敗 -rand:2/6,4/6 -============================ -input: -RA-1 -output: -HatsuneMiku : (RA-1>=4) > [1,5,6]-1 > - ネイロに1(黒)を取得した場合 5:スペシャル - ネイロに5(白)を取得した場合 5:スペシャル - ネイロに6(任意)を取得した場合 4:成功 -rand:1/6,5/6,6/6 -============================ -input: -RS -output: -HatsuneMiku : (RS>=4) > [1,2,5,6] > - ネイロに1(黒)を取得した場合 6:スペシャル - ネイロに2(赤)を取得した場合 6:スペシャル - ネイロに5(白)を取得した場合 6:スペシャル - ネイロに6(任意)を取得した場合 5:成功 -rand:2/6,1/6,5/6,6/6 -============================ -input: -RD+1>=5 -output: -HatsuneMiku : (RD+1>=5) > [2,4]+1 > 3:失敗 -rand:2/6,4/6 -============================ -input: -RB@5 -output: -HatsuneMiku : (RB@5>=4) > [2,5] > - ネイロに2(赤)を取得した場合 5:スペシャル - ネイロに5(白)を取得した場合 2:失敗 -rand: 2/6,5/6 -============================ -input: -RB+2@5 -output: -HatsuneMiku : (RB+2@5>=4) > [2,5]+2 > - ネイロに2(赤)を取得した場合 7:スペシャル - ネイロに5(白)を取得した場合 4:成功 -rand: 2/6,5/6 -============================ -input: -RB+2@5>=5 -output: -HatsuneMiku : (RB+2@5>=5) > [2,5]+2 > - ネイロに2(赤)を取得した場合 7:スペシャル - ネイロに5(白)を取得した場合 4:失敗 -rand: 2/6,5/6 -============================ -input: -RB+2>=5@5 -output: -HatsuneMiku : (RB+2@5>=5) > [2,5]+2 > - ネイロに2(赤)を取得した場合 7:スペシャル - ネイロに5(白)を取得した場合 4:失敗 -rand: 2/6,5/6 -============================ -input: -RS -output: -HatsuneMiku : (RS>=4) > [2,3,3,6] > - ネイロに2(赤)を取得した場合 6:スペシャル - ネイロに3(青)を取得した場合 6:スペシャル - ネイロに6(任意)を取得した場合 3:失敗 -rand:2/6,3/6,3/6,6/6 -============================ -input: -RS -output: -HatsuneMiku : (RS>=4) > [2,3,5,5] > - ネイロに2(赤)を取得した場合 5:成功 - ネイロに3(青)を取得した場合 5:成功 - ネイロに5(白)を取得した場合 5:成功 -rand:2/6,5/6,3/6,5/6 -============================ -input: -FT -output: -HatsuneMiku : ファンブル表(6) > ラッキー!特に何も起こらない -rand:6/6 -============================ -input: -CWT -output: -HatsuneMiku : 致命傷表(6) > 奇跡的に踏みとどまり、持ちこたえる。【生命力】が1点になる。 -rand:6/6 -============================ -input: -BT -output: -HatsuneMiku : 休憩表(6) > ノイズストアに接続できた。各PCは、自分の【頭脳】のダイスの数と同じ個数まで、アプリを購入できる。 -rand:6/6 -============================ -input: -TT -output: -HatsuneMiku : 目標表(6) > 乱戦。その脅威のいるパラグラフの数値と数値が1離れたパラグラフにいるPC全員を目標に選ぶ。そのパラグラフにPCがいなかった場合、GMが自由に一人目標を選ぶ。 -rand:6/6 -============================ -input: -RT -output: -HatsuneMiku : 関係表(6) > 大切(プラス)/面倒(マイナス) -rand:6/6 -============================ -input: -OT -output: -HatsuneMiku : 障害表(6) > 場にイヤな気配が満ちていく。黒のネイロが一つ増える。 -rand:6/6 -============================ -input: -RQT -output: -HatsuneMiku : リクエスト表(12) > あなたの目の前に、あなたの死体が横たわっている。「お前を殺すものは何だ?お前は誰に殺される?」 -rand:6/6,6/6 -============================ -input: -ST -output: -HatsuneMiku : 情景表(66) > 誰もいない体育館 -rand:6/6,6/6 -============================ -input: -DKT -output: -HatsuneMiku : ダーク・キーワード表(66) > デスゲーム -rand:6/6,6/6 -============================ -input: -DNT -output: -HatsuneMiku : ダーク・名前表(66) > イミ/忌、逝美 ムイミ/無意味、無為巳 -rand:6/6,6/6 -============================ -input: -HKT -output: -HatsuneMiku : ホット・キーワード表(66) > オーバードライブ -rand:6/6,6/6 -============================ -input: -HNT -output: -HatsuneMiku : ホット・名前表(66) > レオ/伶央、獅王 マツリ/祭、茉莉 -rand:6/6,6/6 -============================ -input: -LKT -output: -HatsuneMiku : ラブ・キーワード表(66) > ビューティフルワールド -rand:6/6,6/6 -============================ -input: -LNT -output: -HatsuneMiku : ラブ・名前表(66) > ロミオ/路美雄、露澪 ロマン/浪漫、絽萬 -rand:6/6,6/6 -============================ -input: -EKT -output: -HatsuneMiku : エキセントリック・キーワード表(66) > 秒速1ポロンクセマ -rand:6/6,6/6 -============================ -input: -ENT -output: -HatsuneMiku : エキセントリック・名前表(66) > ビックリ/吃驚、! ハテナ/果菜、? -rand:6/6,6/6 -============================ -input: -MKT -output: -HatsuneMiku : メランコリー・キーワード表(66) > ナルシズム -rand:6/6,6/6 -============================ -input: -MNT -output: -HatsuneMiku : メランコリー・名前表(66) > ヘヴン/戸聞、天国 ガラス/硝子、枯州 -rand:6/6,6/6 -============================ -input: -OPA -output: -HatsuneMiku : オトダマ性格表A(66) > 好戦的 -rand:6/6,6/6 -============================ -input: -OPB -output: -HatsuneMiku : オトダマ性格表B(66) > 嘘つき -rand:6/6,6/6 -============================ -input: -OHT -output: -HatsuneMiku : オトダマ趣味表(66) > 動画配信 -rand:6/6,6/6 -============================ -input: -OLT -output: -HatsuneMiku : オトダマ外見表(66) > 戦隊コス -rand:6/6,6/6 -============================ -input: -OIT -output: -HatsuneMiku : オトダマ一人称表(12) > ミー -rand:6/6,6/6 -============================ -input: -OYT -output: -HatsuneMiku : オトダマ呼び名表(12) > (PCの名前)殿 -rand:6/6,6/6 -============================ -input: -ORT -output: -HatsuneMiku : リアクション表(6) > 攻撃を行うときのセリフ -rand:6/6 -============================ -input: -OMT -output: -HatsuneMiku : 出会い表(12) > 一目惚れ。以前、あなたは様々な楽曲を発表していました。すると、その楽曲に一目惚れしたと言って、あなたの元にオトダマが押しかけてきました。以来、そのオトダマに付きまとわれる毎日です。 -rand:6/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/Hieizan.txt b/src/src_bcdice/test/data/Hieizan.txt deleted file mode 100644 index a2c255eb1..000000000 --- a/src/src_bcdice/test/data/Hieizan.txt +++ /dev/null @@ -1,185 +0,0 @@ -input: -1D100<=10 -output: -Hieizan : (1D100<=10) > 55 > 失敗 -rand:55/100 -============================ -input: -1D100<=10 -output: -Hieizan : (1D100<=10) > 76 > 失敗 -rand:76/100 -============================ -input: -1D100<=10 -output: -Hieizan : (1D100<=10) > 29 > 失敗 -rand:29/100 -============================ -input: -1D100<=10 -output: -Hieizan : (1D100<=10) > 7 > 成功 -rand:7/100 -============================ -input: -1D100<=10 -output: -Hieizan : (1D100<=10) > 63 > 失敗 -rand:63/100 -============================ -input: -1D100<=10 -output: -Hieizan : (1D100<=10) > 67 > 失敗 -rand:67/100 -============================ -input: -1D100<=10 -output: -Hieizan : (1D100<=10) > 59 > 失敗 -rand:59/100 -============================ -input: -1D100<=10 -output: -Hieizan : (1D100<=10) > 60 > 失敗 -rand:60/100 -============================ -input: -1D100<=10 -output: -Hieizan : (1D100<=10) > 17 > 失敗 -rand:17/100 -============================ -input: -1D100<=10 -output: -Hieizan : (1D100<=10) > 54 > 失敗 -rand:54/100 -============================ -input: -1D100<=100 -output: -Hieizan : (1D100<=100) > 91 > 成功 -rand:91/100 -============================ -input: -1D100<=100 -output: -Hieizan : (1D100<=100) > 65 > 成功 -rand:65/100 -============================ -input: -1D100<=100 -output: -Hieizan : (1D100<=100) > 49 > 成功 -rand:49/100 -============================ -input: -1D100<=100 -output: -Hieizan : (1D100<=100) > 60 > 成功 -rand:60/100 -============================ -input: -1D100<=100 -output: -Hieizan : (1D100<=100) > 50 > 成功 -rand:50/100 -============================ -input: -1D100<=100 -output: -Hieizan : (1D100<=100) > 22 > 成功 -rand:22/100 -============================ -input: -1D100<=100 -output: -Hieizan : (1D100<=100) > 1 > 大成功 -rand:1/100 -============================ -input: -1D100<=100 -output: -Hieizan : (1D100<=100) > 81 > 成功 -rand:81/100 -============================ -input: -1D100<=100 -output: -Hieizan : (1D100<=100) > 28 > 成功 -rand:28/100 -============================ -input: -1D100<=100 -output: -Hieizan : (1D100<=100) > 54 > 成功 -rand:54/100 -============================ -input: -1D100<=50 -output: -Hieizan : (1D100<=50) > 39 > 成功 -rand:39/100 -============================ -input: -1D100<=50 -output: -Hieizan : (1D100<=50) > 58 > 失敗 -rand:58/100 -============================ -input: -1D100<=50 -output: -Hieizan : (1D100<=50) > 35 > 成功 -rand:35/100 -============================ -input: -1D100<=50 -output: -Hieizan : (1D100<=50) > 85 > 失敗 -rand:85/100 -============================ -input: -1D100<=50 -output: -Hieizan : (1D100<=50) > 87 > 失敗 -rand:87/100 -============================ -input: -1D100<=50 -output: -Hieizan : (1D100<=50) > 85 > 失敗 -rand:85/100 -============================ -input: -1D100<=50 -output: -Hieizan : (1D100<=50) > 34 > 成功 -rand:34/100 -============================ -input: -1D100<=50 -output: -Hieizan : (1D100<=50) > 39 > 成功 -rand:39/100 -============================ -input: -1D100<=50 -output: -Hieizan : (1D100<=50) > 89 > 失敗 -rand:89/100 -============================ -input: -1D100<=50 -output: -Hieizan : (1D100<=50) > 46 > 成功 -rand:46/100 -============================ -input: -1D100>=? 目標値?でバグらない -output: -Hieizan : (1D100>=?) > 42 > 失敗 -rand:42/100 diff --git a/src/src_bcdice/test/data/HouraiGakuen.txt b/src/src_bcdice/test/data/HouraiGakuen.txt deleted file mode 100644 index 8ce16c91e..000000000 --- a/src/src_bcdice/test/data/HouraiGakuen.txt +++ /dev/null @@ -1,314 +0,0 @@ -input: -ROL(1+1) -output: -HouraiGakuen : (3d6<=2) > 出目1,2,3=合計6 > 大成功 -rand:1/6,2/6,3/6 -============================ -input: -ROL(1+1) -output: -HouraiGakuen : (3d6<=2) > 出目1,3,2=合計6 > 大成功 -rand:1/6,3/6,2/6 -============================ -input: -ROL(1+1) -output: -HouraiGakuen : (3d6<=2) > 出目2,1,3=合計6 > 大成功 -rand:2/6,1/6,3/6 -============================ -input: -ROL(1+1) -output: -HouraiGakuen : (3d6<=2) > 出目2,3,1=合計6 > 大成功 -rand:2/6,3/6,1/6 -============================ -input: -ROL(1+1) -output: -HouraiGakuen : (3d6<=2) > 出目3,1,2=合計6 > 大成功 -rand:3/6,1/6,2/6 -============================ -input: -ROL(1+1) -output: -HouraiGakuen : (3d6<=2) > 出目3,2,1=合計6 > 大成功 -rand:3/6,2/6,1/6 -============================ -input: -ROL(1+1) -output: -HouraiGakuen : (3d6<=2) > 出目6,6,6=合計18 > 大失敗 -rand:6/6,6/6,6/6 -============================ -input: -ROL(2+8) -output: -HouraiGakuen : (3d6<=10) > 出目3,3,4=合計10 > 成功 -rand:3/6,3/6,4/6 -============================ -input: -ROL(4+3) -output: -HouraiGakuen : (3d6<=7) > 出目5,3,6=合計14 > 失敗 -rand:5/6,3/6,6/6 -============================ -input: -MED(1,1) -output: -HouraiGakuen : (あなたの値1、相手の値1、3d6<=10) > 出目1,2,3=合計6 > 大成功 -rand:1/6,2/6,3/6 -============================ -input: -MED(1,1) -output: -HouraiGakuen : (あなたの値1、相手の値1、3d6<=10) > 出目1,3,2=合計6 > 大成功 -rand:1/6,3/6,2/6 -============================ -input: -MED(1,1) -output: -HouraiGakuen : (あなたの値1、相手の値1、3d6<=10) > 出目2,1,3=合計6 > 大成功 -rand:2/6,1/6,3/6 -============================ -input: -MED(1,1) -output: -HouraiGakuen : (あなたの値1、相手の値1、3d6<=10) > 出目2,3,1=合計6 > 大成功 -rand:2/6,3/6,1/6 -============================ -input: -MED(1,1) -output: -HouraiGakuen : (あなたの値1、相手の値1、3d6<=10) > 出目3,1,2=合計6 > 大成功 -rand:3/6,1/6,2/6 -============================ -input: -MED(1,1) -output: -HouraiGakuen : (あなたの値1、相手の値1、3d6<=10) > 出目3,2,1=合計6 > 大成功 -rand:3/6,2/6,1/6 -============================ -input: -MED(1,1) -output: -HouraiGakuen : (あなたの値1、相手の値1、3d6<=10) > 出目6,6,6=合計18 > 大失敗 -rand:6/6,6/6,6/6 -============================ -input: -MED(3,3) -output: -HouraiGakuen : (あなたの値3、相手の値3、3d6<=10) > 出目3,2,5=合計10 > 成功 -rand:3/6,2/6,5/6 -============================ -input: -MED(2,8) -output: -HouraiGakuen : (あなたの値2、相手の値8、3d6<=4) > 出目1,3,3=合計7 > 失敗 -rand:1/6,3/6,3/6 -============================ -input: -RES(1,1) -output: -HouraiGakuen : あなたの値1、相手の値1 -(あなたのロール 3d6<=10) > 1,2,3=6 > 大成功 -(相手のロール 3d6<=10) > 2,3,4=9 > 成功 ->あなたが勝利 -rand:1/6,2/6,3/6,2/6,3/6,4/6 -============================ -input: -RES(1,1) -output: -HouraiGakuen : あなたの値1、相手の値1 -(あなたのロール 3d6<=10) > 1,3,2=6 > 大成功 -(相手のロール 3d6<=10) > 2,3,4=9 > 成功 ->あなたが勝利 -rand:1/6,3/6,2/6,2/6,3/6,4/6 -============================ -input: -RES(1,1) -output: -HouraiGakuen : あなたの値1、相手の値1 -(あなたのロール 3d6<=10) > 2,1,3=6 > 大成功 -(相手のロール 3d6<=10) > 2,3,4=9 > 成功 ->あなたが勝利 -rand:2/6,1/6,3/6,2/6,3/6,4/6 -============================ -input: -RES(1,1) -output: -HouraiGakuen : あなたの値1、相手の値1 -(あなたのロール 3d6<=10) > 2,3,1=6 > 大成功 -(相手のロール 3d6<=10) > 2,3,4=9 > 成功 ->あなたが勝利 -rand:2/6,3/6,1/6,2/6,3/6,4/6 -============================ -input: -RES(1,1) -output: -HouraiGakuen : あなたの値1、相手の値1 -(あなたのロール 3d6<=10) > 3,1,2=6 > 大成功 -(相手のロール 3d6<=10) > 2,3,4=9 > 成功 ->あなたが勝利 -rand:3/6,1/6,2/6,2/6,3/6,4/6 -============================ -input: -RES(1,1) -output: -HouraiGakuen : あなたの値1、相手の値1 -(あなたのロール 3d6<=10) > 3,2,1=6 > 大成功 -(相手のロール 3d6<=10) > 2,3,4=9 > 成功 ->あなたが勝利 -rand:3/6,2/6,1/6,2/6,3/6,4/6 -============================ -input: -RES(1,1) -output: -HouraiGakuen : あなたの値1、相手の値1 -(あなたのロール 3d6<=10) > 6,6,6=18 > 大失敗 -(相手のロール 3d6<=10) > 2,3,4=9 > 成功 ->相手が勝利 -rand:6/6,6/6,6/6,2/6,3/6,4/6 -============================ -input: -RES(4,2) -output: -HouraiGakuen : あなたの値4、相手の値2 -(あなたのロール 3d6<=12) > 6,3,1=10 > 成功 -(相手のロール 3d6<=8) > 2,5,2=9 > 失敗 ->あなたが勝利 -rand:6/6,3/6,1/6,2/6,5/6,2/6 -============================ -input: -RES(3,9) -output: -HouraiGakuen : あなたの値3、相手の値9 -(あなたのロール 3d6<=4) > 3,5,3=11 > 失敗 -(相手のロール 3d6<=16) > 5,5,5=15 > 成功 ->相手が勝利 -rand:3/6,5/6,3/6,5/6,5/6,5/6 -============================ -input: -RES(7,5) -output: -HouraiGakuen : あなたの値7、相手の値5 -(あなたのロール 3d6<=12) > 2,5,1=8 > 成功 -(相手のロール 3d6<=8) > 3,2,3=8 > 成功 ->引き分け -rand:2/6,5/6,1/6,3/6,2/6,3/6 -============================ -input: -RES(9,9) -output: -HouraiGakuen : あなたの値9、相手の値9 -(あなたのロール 3d6<=10) > 5,1,5=11 > 失敗 -(相手のロール 3d6<=10) > 1,5,5=11 > 失敗 ->引き分け -rand:5/6,1/6,5/6,1/6,5/6,5/6 -============================ -input: -INY -output: -HouraiGakuen : 陽(奇数の方が多い) -rand:5/6,1/6,2/6 -============================ -input: -INY -output: -HouraiGakuen : 陽(奇数の方が多い) -rand:5/6,1/6,1/6 -============================ -input: -INY -output: -HouraiGakuen : 陰(偶数の方が多い) -rand:4/6,1/6,2/6 -============================ -input: -INY -output: -HouraiGakuen : 陰(偶数の方が多い) -rand:4/6,6/6,2/6 -============================ -input: -HTK -output: -HouraiGakuen : 仁義八徳は、【仁】(奇数、奇数、奇数) -rand:3/6,5/6,1/6 -============================ -input: -HTK -output: -HouraiGakuen : 仁義八徳は、【義】(奇数、奇数、偶数) -rand:1/6,1/6,2/6 -============================ -input: -HTK -output: -HouraiGakuen : 仁義八徳は、【礼】(奇数、偶数、奇数) -rand:3/6,6/6,3/6 -============================ -input: -HTK -output: -HouraiGakuen : 仁義八徳は、【智】(奇数、偶数、偶数) -rand:1/6,4/6,4/6 -============================ -input: -HTK -output: -HouraiGakuen : 仁義八徳は、【忠】(偶数、奇数、奇数) -rand:6/6,1/6,5/6 -============================ -input: -HTK -output: -HouraiGakuen : 仁義八徳は、【信】(偶数、奇数、偶数) -rand:4/6,1/6,2/6 -============================ -input: -HTK -output: -HouraiGakuen : 仁義八徳は、【孝】(偶数、偶数、奇数) -rand:4/6,4/6,1/6 -============================ -input: -HTK -output: -HouraiGakuen : 仁義八徳は、【悌】(偶数、偶数、偶数) -rand:4/6,6/6,2/6 -============================ -input: -GOG -output: -HouraiGakuen : 五行表(1) > 五行【木】 -rand:1/6 -============================ -input: -GOG -output: -HouraiGakuen : 五行表(2) > 五行【火】 -rand:2/6 -============================ -input: -GOG -output: -HouraiGakuen : 五行表(3) > 五行【土】 -rand:3/6 -============================ -input: -GOG -output: -HouraiGakuen : 五行表(4) > 五行【金】 -rand:4/6 -============================ -input: -GOG -output: -HouraiGakuen : 五行表(5) > 五行【水】 -rand:5/6 -============================ -input: -GOG -output: -HouraiGakuen : 五行表(6) > 五行は【任意選択】 -rand:6/6 diff --git a/src/src_bcdice/test/data/HuntersMoon.txt b/src/src_bcdice/test/data/HuntersMoon.txt deleted file mode 100644 index db8cbf23d..000000000 --- a/src/src_bcdice/test/data/HuntersMoon.txt +++ /dev/null @@ -1,1317 +0,0 @@ -input: -2d6>=4 -output: -HuntersMoon : (2D6>=4) > 9[3,6] > 9 > 成功 -rand:3/6,6/6 -============================ -input: -2d6>=4 -output: -HuntersMoon : (2D6>=4) > 6[3,3] > 6 > 成功 -rand:3/6,3/6 -============================ -input: -2d6>=4 -output: -HuntersMoon : (2D6>=4) > 8[2,6] > 8 > 成功 -rand:2/6,6/6 -============================ -input: -2d6>=4 -output: -HuntersMoon : (2D6>=4) > 4[2,2] > 4 > 成功 -rand:2/6,2/6 -============================ -input: -2d6>=4 -output: -HuntersMoon : (2D6>=4) > 10[4,6] > 10 > 成功 -rand:4/6,6/6 -============================ -input: -2d6>=4 -output: -HuntersMoon : (2D6>=4) > 8[3,5] > 8 > 成功 -rand:5/6,3/6 -============================ -input: -2d6>=4 -output: -HuntersMoon : (2D6>=4) > 11[5,6] > 11 > 成功 -rand:6/6,5/6 -============================ -input: -2d6>=4 -output: -HuntersMoon : (2D6>=4) > 8[2,6] > 8 > 成功 -rand:6/6,2/6 -============================ -input: -2d6>=4 -output: -HuntersMoon : (2D6>=4) > 10[5,5] > 10 > 成功 -rand:5/6,5/6 -============================ -input: -2d6>=4 -output: -HuntersMoon : (2D6>=4) > 9[3,6] > 9 > 成功 -rand:6/6,3/6 -============================ -input: -2d6>=9 -output: -HuntersMoon : (2D6>=9) > 4[2,2] > 4 > 失敗 -rand:2/6,2/6 -============================ -input: -2d6>=9 -output: -HuntersMoon : (2D6>=9) > 10[4,6] > 10 > 成功 -rand:4/6,6/6 -============================ -input: -2d6>=9 -output: -HuntersMoon : (2D6>=9) > 5[2,3] > 5 > 失敗 -rand:3/6,2/6 -============================ -input: -2d6>=9 -output: -HuntersMoon : (2D6>=9) > 8[4,4] > 8 > 失敗 -rand:4/6,4/6 -============================ -input: -2d6>=9 -output: -HuntersMoon : (2D6>=9) > 9[4,5] > 9 > 成功 -rand:4/6,5/6 -============================ -input: -2d6>=9 -output: -HuntersMoon : (2D6>=9) > 11[5,6] > 11 > 成功 -rand:6/6,5/6 -============================ -input: -2d6>=9 -output: -HuntersMoon : (2D6>=9) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2d6>=9 -output: -HuntersMoon : (2D6>=9) > 8[4,4] > 8 > 失敗 -rand:4/6,4/6 -============================ -input: -2d6>=9 -output: -HuntersMoon : (2D6>=9) > 10[4,6] > 10 > 成功 -rand:4/6,6/6 -============================ -input: -2d6>=9 -output: -HuntersMoon : (2D6>=9) > 3[1,2] > 3 > 失敗 -rand:2/6,1/6 -============================ -input: -2d6>=7 -output: -HuntersMoon : (2D6>=7) > 8[4,4] > 8 > 成功 -rand:4/6,4/6 -============================ -input: -2d6>=7 -output: -HuntersMoon : (2D6>=7) > 7[2,5] > 7 > 成功 -rand:2/6,5/6 -============================ -input: -2d6>=7 -output: -HuntersMoon : (2D6>=7) > 10[5,5] > 10 > 成功 -rand:5/6,5/6 -============================ -input: -2d6>=7 -output: -HuntersMoon : (2D6>=7) > 6[1,5] > 6 > 失敗 -rand:5/6,1/6 -============================ -input: -2d6>=7 -output: -HuntersMoon : (2D6>=7) > 6[2,4] > 6 > 失敗 -rand:2/6,4/6 -============================ -input: -2d6>=7 -output: -HuntersMoon : (2D6>=7) > 2[1,1] > 2 > ファンブル(モノビースト追加行動+1) -rand:1/6,1/6 -============================ -input: -2d6>=7 -output: -HuntersMoon : (2D6>=7) > 9[3,6] > 9 > 成功 -rand:3/6,6/6 -============================ -input: -2d6>=7 -output: -HuntersMoon : (2D6>=7) > 7[3,4] > 7 > 成功 -rand:4/6,3/6 -============================ -input: -2d6>=7 -output: -HuntersMoon : (2D6>=7) > 9[4,5] > 9 > 成功 -rand:5/6,4/6 -============================ -input: -2d6>=7 -output: -HuntersMoon : (2D6>=7) > 7[2,5] > 7 > 成功 -rand:5/6,2/6 -============================ -input: -ET -output: -HuntersMoon : 遭遇表(2) > 暗闇/恐怖/あの獣は暗闇の中から現れ、暗闇の中へ消えていった。どんなに振り払おうとしても、あの恐ろしい姿の記憶から逃れられない。 -rand:2/6 -============================ -input: -ET -output: -HuntersMoon : 遭遇表(1) > 獲物/恐怖/あなたはモノビーストの獲物として追い回される。満月の夜でないと傷を負わせることができない怪物相手に、あなたは逃げ回るしかない。 -rand:1/6 -============================ -input: -ET -output: -HuntersMoon : 遭遇表(6) > 賭博/怒り/あなたの今回の獲物は、最近ハンターの間で話題になっているモノビーストだ。次の満月の夜にあいつを倒せるか、あなたは他のハンターと賭けをした。 -rand:6/6 -============================ -input: -ET -output: -HuntersMoon : 遭遇表(1) > 獲物/恐怖/あなたはモノビーストの獲物として追い回される。満月の夜でないと傷を負わせることができない怪物相手に、あなたは逃げ回るしかない。 -rand:1/6 -============================ -input: -ET -output: -HuntersMoon : 遭遇表(5) > 現場/怒り/あなたはモノビーストが獲物を捕食した現場を発見した。派手な血の跡が目に焼きつく。こんなことをする奴を生かしてはおけない。 -rand:5/6 -============================ -input: -ET -output: -HuntersMoon : 遭遇表(4) > 気配/恐怖/街の気配がどこかおかしい。視線を感じたり、物音が聞こえたり・・・だが、獣の姿を捉えることはできない。漠然とした恐怖があなたの心をむしばむ。 -rand:4/6 -============================ -input: -ET -output: -HuntersMoon : 遭遇表(2) > 暗闇/恐怖/あの獣は暗闇の中から現れ、暗闇の中へ消えていった。どんなに振り払おうとしても、あの恐ろしい姿の記憶から逃れられない。 -rand:2/6 -============================ -input: -ET -output: -HuntersMoon : 遭遇表(3) > 依頼/怒り/あなたはモノビーストの被害者の関係者、あるいはハンターや魔術師の組織から、モノビーストを倒す依頼を受けた。 -rand:3/6 -============================ -input: -ET -output: -HuntersMoon : 遭遇表(3) > 依頼/怒り/あなたはモノビーストの被害者の関係者、あるいはハンターや魔術師の組織から、モノビーストを倒す依頼を受けた。 -rand:3/6 -============================ -input: -ET -output: -HuntersMoon : 遭遇表(2) > 暗闇/恐怖/あの獣は暗闇の中から現れ、暗闇の中へ消えていった。どんなに振り払おうとしても、あの恐ろしい姿の記憶から逃れられない。 -rand:2/6 -============================ -input: -CLT -output: -HuntersMoon : 都市ロケーション表(5) > ビル屋上/高いビルの屋上。ハンターはファンブル時に屋上から落下して強制的に撤退する。命に別状はない -rand:5/6 -============================ -input: -CLT -output: -HuntersMoon : 都市ロケーション表(5) > ビル屋上/高いビルの屋上。ハンターはファンブル時に屋上から落下して強制的に撤退する。命に別状はない -rand:5/6 -============================ -input: -CLT -output: -HuntersMoon : 都市ロケーション表(3) > 駅/人のいない駅。全てのキャラクターがファンブル時に砂利に突っ込んだり伝染に接触しかけることで1D6のダメージを受ける。 -rand:3/6 -============================ -input: -CLT -output: -HuntersMoon : 都市ロケーション表(5) > ビル屋上/高いビルの屋上。ハンターはファンブル時に屋上から落下して強制的に撤退する。命に別状はない -rand:5/6 -============================ -input: -CLT -output: -HuntersMoon : 都市ロケーション表(5) > ビル屋上/高いビルの屋上。ハンターはファンブル時に屋上から落下して強制的に撤退する。命に別状はない -rand:5/6 -============================ -input: -CLT -output: -HuntersMoon : 都市ロケーション表(6) > 繁華街/にぎやかな繁華街の裏路地。大量の人の気配が近くにあるため、モノビーストが撤退するラウンドが1ラウンド早くなる。決戦フェイズでは特に効果なし。 -rand:6/6 -============================ -input: -CLT -output: -HuntersMoon : 都市ロケーション表(4) > 高速道路/高速道路の路上。全てのキャラクターが、ファンブル時には走ってきた車に跳ねられて1D6のダメージを受ける。 -rand:4/6 -============================ -input: -CLT -output: -HuntersMoon : 都市ロケーション表(3) > 駅/人のいない駅。全てのキャラクターがファンブル時に砂利に突っ込んだり伝染に接触しかけることで1D6のダメージを受ける。 -rand:3/6 -============================ -input: -CLT -output: -HuntersMoon : 都市ロケーション表(1) > 住宅街/閑静な住宅街。不意打ちに適しているため、ハンターの攻撃判定に+1の修正をつけてもよい。 -rand:1/6 -============================ -input: -CLT -output: -HuntersMoon : 都市ロケーション表(3) > 駅/人のいない駅。全てのキャラクターがファンブル時に砂利に突っ込んだり伝染に接触しかけることで1D6のダメージを受ける。 -rand:3/6 -============================ -input: -SLT -output: -HuntersMoon : 閉所ロケーション表(3) > 地下道/暗いトンネル。車道や照明の落ちた地下街。ハンターは、ファンブル時にアイテムを一つランダムに失くしてしまう。 -rand:3/6 -============================ -input: -SLT -output: -HuntersMoon : 閉所ロケーション表(1) > 地下倉庫/広々とした倉庫。探してみれば色々なものが転がっている。ハンターは戦闘開始時に好きなアイテムを一つ入手してもよい。 -rand:1/6 -============================ -input: -SLT -output: -HuntersMoon : 閉所ロケーション表(6) > 都市の底/都市の全てのゴミが流れ着く場所。広い空洞にゴミが敷き詰められている。この敵対的な環境では、ハンターの攻撃判定に-1の修正がつく。さらにハンターは攻撃失敗時に2ダメージを受ける。 -rand:6/6 -============================ -input: -SLT -output: -HuntersMoon : 閉所ロケーション表(5) > 下水道/人が2人並べるくらいの幅の下水道。メンテナンス用の明かりしかなく、非常に視界が悪いため、ハンターの攻撃判定に-1の修正がつく。 -rand:5/6 -============================ -input: -SLT -output: -HuntersMoon : 閉所ロケーション表(5) > 下水道/人が2人並べるくらいの幅の下水道。メンテナンス用の明かりしかなく、非常に視界が悪いため、ハンターの攻撃判定に-1の修正がつく。 -rand:5/6 -============================ -input: -SLT -output: -HuntersMoon : 閉所ロケーション表(6) > 都市の底/都市の全てのゴミが流れ着く場所。広い空洞にゴミが敷き詰められている。この敵対的な環境では、ハンターの攻撃判定に-1の修正がつく。さらにハンターは攻撃失敗時に2ダメージを受ける。 -rand:6/6 -============================ -input: -SLT -output: -HuntersMoon : 閉所ロケーション表(3) > 地下道/暗いトンネル。車道や照明の落ちた地下街。ハンターは、ファンブル時にアイテムを一つランダムに失くしてしまう。 -rand:3/6 -============================ -input: -SLT -output: -HuntersMoon : 閉所ロケーション表(2) > 地下鉄/地下鉄の線路上。全てのキャラクターが、ファンブル時にはなぜか走ってくる列車に撥ねられて1D6ダメージを受ける。 -rand:2/6 -============================ -input: -SLT -output: -HuntersMoon : 閉所ロケーション表(6) > 都市の底/都市の全てのゴミが流れ着く場所。広い空洞にゴミが敷き詰められている。この敵対的な環境では、ハンターの攻撃判定に-1の修正がつく。さらにハンターは攻撃失敗時に2ダメージを受ける。 -rand:6/6 -============================ -input: -SLT -output: -HuntersMoon : 閉所ロケーション表(4) > 廃病院/危険な廃物がたくさん落ちているため、誰もここで戦うのは好きではない。キャラクター全員の【モラル】を3点減少してから戦闘を開始する。 -rand:4/6 -============================ -input: -HLT -output: -HuntersMoon : 炎熱ロケーション表(4) > 機関室/何らかの工場。入り組みすぎて周りを見通せないうえ、配置がわからず出たとこ勝負を強いられる。キャラクター全員が戦闘開始時に「妨害」の変調を発動する。 -rand:4/6 -============================ -input: -HLT -output: -HuntersMoon : 炎熱ロケーション表(5) > 火事場/事故現場なのかモノビーストの仕業か、あたりは激しく燃え盛っている。ハンターはファンブル時に「炎上」の変調を発動する。 -rand:5/6 -============================ -input: -HLT -output: -HuntersMoon : 炎熱ロケーション表(5) > 火事場/事故現場なのかモノビーストの仕業か、あたりは激しく燃え盛っている。ハンターはファンブル時に「炎上」の変調を発動する。 -rand:5/6 -============================ -input: -HLT -output: -HuntersMoon : 炎熱ロケーション表(6) > 製鉄所/無人ながら稼働中の製鉄所。安全対策が不十分で、溶けた金属の周囲まで近づくことが可能だ。ハンターは毎ラウンド終了時に《耐熱》で行為判定をし、これに失敗すると「炎上」の変調を発動する。 -rand:6/6 -============================ -input: -HLT -output: -HuntersMoon : 炎熱ロケーション表(4) > 機関室/何らかの工場。入り組みすぎて周りを見通せないうえ、配置がわからず出たとこ勝負を強いられる。キャラクター全員が戦闘開始時に「妨害」の変調を発動する。 -rand:4/6 -============================ -input: -HLT -output: -HuntersMoon : 炎熱ロケーション表(5) > 火事場/事故現場なのかモノビーストの仕業か、あたりは激しく燃え盛っている。ハンターはファンブル時に「炎上」の変調を発動する。 -rand:5/6 -============================ -input: -HLT -output: -HuntersMoon : 炎熱ロケーション表(1) > 温室/植物が栽培されている熱く湿った場所。生命に満ち溢れた様子は、戦闘開始時にハンターの【モラル】を1点増加する。 -rand:1/6 -============================ -input: -HLT -output: -HuntersMoon : 炎熱ロケーション表(6) > 製鉄所/無人ながら稼働中の製鉄所。安全対策が不十分で、溶けた金属の周囲まで近づくことが可能だ。ハンターは毎ラウンド終了時に《耐熱》で行為判定をし、これに失敗すると「炎上」の変調を発動する。 -rand:6/6 -============================ -input: -HLT -output: -HuntersMoon : 炎熱ロケーション表(6) > 製鉄所/無人ながら稼働中の製鉄所。安全対策が不十分で、溶けた金属の周囲まで近づくことが可能だ。ハンターは毎ラウンド終了時に《耐熱》で行為判定をし、これに失敗すると「炎上」の変調を発動する。 -rand:6/6 -============================ -input: -HLT -output: -HuntersMoon : 炎熱ロケーション表(2) > 調理場/調理器具があちこちに放置された、アクションには多大なリスクをともなう場所。全てのキャラクターは、ファンブル時に良くない場所に手をついたり刃物のラックをひっくり返して1D6ダメージを受ける。 -rand:2/6 -============================ -input: -FLT -output: -HuntersMoon : 冷暗ロケーション表(2) > 墓地/死んだ人々が眠る場所。ここで激しいアクションを行うことは冒涜的だ。全てのキャラクターは感情属性が恐怖の場合、全てのアビリティの反動が1増加する。 -rand:2/6 -============================ -input: -FLT -output: -HuntersMoon : 冷暗ロケーション表(6) > 氷室/氷で満たされた洞窟。こんな場所が都市にあったとは信じがたいが、とにかくひどく寒い。ハンターは毎ラウンド終了時に《耐寒》で判定し、失敗すると「重傷」の変調を発動する。 -rand:6/6 -============================ -input: -FLT -output: -HuntersMoon : 冷暗ロケーション表(1) > 冷凍保管室/食品が氷漬けにされている場所。ここではモノビーストは氷に覆われてしまう。モノビーストは戦闘開始時に「捕縛」の変調を発動する。 -rand:1/6 -============================ -input: -FLT -output: -HuntersMoon : 冷暗ロケーション表(5) > 空き地/寒風吹きすさぶ空き地。長くいると凍えてしまいそうだ。ハンターはファンブル時に身体がかじかみ、「重傷」の変調を発動する。 -rand:5/6 -============================ -input: -FLT -output: -HuntersMoon : 冷暗ロケーション表(5) > 空き地/寒風吹きすさぶ空き地。長くいると凍えてしまいそうだ。ハンターはファンブル時に身体がかじかみ、「重傷」の変調を発動する。 -rand:5/6 -============================ -input: -FLT -output: -HuntersMoon : 冷暗ロケーション表(1) > 冷凍保管室/食品が氷漬けにされている場所。ここではモノビーストは氷に覆われてしまう。モノビーストは戦闘開始時に「捕縛」の変調を発動する。 -rand:1/6 -============================ -input: -FLT -output: -HuntersMoon : 冷暗ロケーション表(6) > 氷室/氷で満たされた洞窟。こんな場所が都市にあったとは信じがたいが、とにかくひどく寒い。ハンターは毎ラウンド終了時に《耐寒》で判定し、失敗すると「重傷」の変調を発動する。 -rand:6/6 -============================ -input: -FLT -output: -HuntersMoon : 冷暗ロケーション表(3) > 魚市場/発泡スチロールの箱に鮮魚と氷が詰まり、コンクリートの床は濡れていて滑りやすい。ハンターはファンブル時に転んで1D6ダメージを受ける。 -rand:3/6 -============================ -input: -FLT -output: -HuntersMoon : 冷暗ロケーション表(2) > 墓地/死んだ人々が眠る場所。ここで激しいアクションを行うことは冒涜的だ。全てのキャラクターは感情属性が恐怖の場合、全てのアビリティの反動が1増加する。 -rand:2/6 -============================ -input: -FLT -output: -HuntersMoon : 冷暗ロケーション表(2) > 墓地/死んだ人々が眠る場所。ここで激しいアクションを行うことは冒涜的だ。全てのキャラクターは感情属性が恐怖の場合、全てのアビリティの反動が1増加する。 -rand:2/6 -============================ -input: -DLT -output: -HuntersMoon : 部位ダメージ決定表(3) > 利き腕 -rand:2/6,1/6 -============================ -input: -DLT -output: -HuntersMoon : 部位ダメージ決定表(4) > 利き脚 -rand:3/6,1/6 -============================ -input: -DLT -output: -HuntersMoon : 部位ダメージ決定表(8) > 口 -rand:2/6,6/6 -============================ -input: -DLT -output: -HuntersMoon : 部位ダメージ決定表(9) > 呼吸器 -rand:3/6,6/6 -============================ -input: -DLT -output: -HuntersMoon : 部位ダメージ決定表(8) > 口 -rand:2/6,6/6 -============================ -input: -DLT -output: -HuntersMoon : 部位ダメージ決定表(10) > 逆脚 -rand:5/6,5/6 -============================ -input: -DLT -output: -HuntersMoon : 部位ダメージ決定表(5) > 消化器 -rand:1/6,4/6 -============================ -input: -DLT -output: -HuntersMoon : 部位ダメージ決定表(9) > 呼吸器 -rand:4/6,5/6 -============================ -input: -DLT -output: -HuntersMoon : 部位ダメージ決定表(8) > 口 -rand:5/6,3/6 -============================ -input: -DLT -output: -HuntersMoon : 部位ダメージ決定表(12) > 心臓 -rand:6/6,6/6 -============================ -input: -MAT -output: -HuntersMoon : モノビースト行動表(4) > 胴部/モノビーストは別のハンターと遭遇し、それを食べて新しいアビリティを手に入れる! ランダムに異形アビリティを一つ決定し、修得する。 -rand:4/6 -============================ -input: -MAT -output: -HuntersMoon : モノビースト行動表(6) > 環境/モノビーストは移動中に人間の団体と遭遇し、食い散らかす。たらふく食ったモノビーストは【モラル】を3D6点増加させる -rand:6/6 -============================ -input: -MAT -output: -HuntersMoon : モノビースト行動表(6) > 環境/モノビーストは移動中に人間の団体と遭遇し、食い散らかす。たらふく食ったモノビーストは【モラル】を3D6点増加させる -rand:6/6 -============================ -input: -MAT -output: -HuntersMoon : モノビースト行動表(4) > 胴部/モノビーストは別のハンターと遭遇し、それを食べて新しいアビリティを手に入れる! ランダムに異形アビリティを一つ決定し、修得する。 -rand:4/6 -============================ -input: -MAT -output: -HuntersMoon : モノビースト行動表(1) > 社会/モノビーストは時間をかけて逃げ続けることで、ダメージを回復しようとしているようだ。部位ダメージを自由に一つ回復する。部位ダメージを受けていない場合、【モラル】が1D6回復する。 -rand:1/6 -============================ -input: -MAT -output: -HuntersMoon : モノビースト行動表(5) > 脚部/モノビーストはハンターを特定の場所に誘導しているようだ。ロケーション表を振り、次の戦闘のロケーションを変更する。そのロケーションで次の戦闘が始まった場合、モノビーストは最初のラウンドに追加行動を1回得る。 -rand:5/6 -============================ -input: -MAT -output: -HuntersMoon : モノビースト行動表(3) > 腕部/モノビーストは若い犠牲者を選んで捕食しようとしている。どうやら力を増そうとしているらしい。セッション終了までモノビーストの攻撃によるダメージは+1の修正がつく。 -rand:3/6 -============================ -input: -MAT -output: -HuntersMoon : モノビースト行動表(1) > 社会/モノビーストは時間をかけて逃げ続けることで、ダメージを回復しようとしているようだ。部位ダメージを自由に一つ回復する。部位ダメージを受けていない場合、【モラル】が1D6回復する。 -rand:1/6 -============================ -input: -MAT -output: -HuntersMoon : モノビースト行動表(1) > 社会/モノビーストは時間をかけて逃げ続けることで、ダメージを回復しようとしているようだ。部位ダメージを自由に一つ回復する。部位ダメージを受けていない場合、【モラル】が1D6回復する。 -rand:1/6 -============================ -input: -MAT -output: -HuntersMoon : モノビースト行動表(2) > 頭部/モノビーストはハンターを撒こうとしている。次の戦闘が日暮れ、もしくは真夜中である場合、モノビーストは1ラウンド少ないラウンドで撤退する。次の戦闘が夜明けである場合、【モラル】が2D6増加する。 -rand:2/6 -============================ -input: -SAT -output: -HuntersMoon : 異形アビリティー表(63) > 融合 -rand:6/6,3/6 -============================ -input: -SAT -output: -HuntersMoon : 異形アビリティー表(32) > 皮膚装甲 -rand:3/6,2/6 -============================ -input: -SAT -output: -HuntersMoon : 異形アビリティー表(21) > 瘴気 -rand:2/6,1/6 -============================ -input: -SAT -output: -HuntersMoon : 異形アビリティー表(61) > 結晶化 -rand:6/6,1/6 -============================ -input: -SAT -output: -HuntersMoon : 異形アビリティー表(12) > 大鎌 -rand:1/6,2/6 -============================ -input: -SAT -output: -HuntersMoon : 異形アビリティー表(36) > 分解 -rand:3/6,6/6 -============================ -input: -SAT -output: -HuntersMoon : 異形アビリティー表(43) > 冷気 -rand:4/6,3/6 -============================ -input: -SAT -output: -HuntersMoon : 異形アビリティー表(36) > 分解 -rand:3/6,6/6 -============================ -input: -SAT -output: -HuntersMoon : 異形アビリティー表(25) > 絶叫 -rand:2/6,5/6 -============================ -input: -SAT -output: -HuntersMoon : 異形アビリティー表(54) > 邪視 -rand:5/6,4/6 -============================ -input: -SAT3 -output: -HuntersMoon : 異形アビリティー表(26,66,66) > 粘液噴射/変色/変色 -rand:2/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -SAT3 -output: -HuntersMoon : 異形アビリティー表(63,64,66) > 融合/嘔吐/変色 -rand:6/6,3/6,6/6,4/6,6/6,6/6 -============================ -input: -SAT3 -output: -HuntersMoon : 異形アビリティー表(14,21,31) > 大鋏/瘴気/潤滑液 -rand:1/6,4/6,2/6,1/6,3/6,1/6 -============================ -input: -SAT3 -output: -HuntersMoon : 異形アビリティー表(65,55,21) > 腐敗/超振動/瘴気 -rand:6/6,5/6,5/6,5/6,2/6,1/6 -============================ -input: -SAT3 -output: -HuntersMoon : 異形アビリティー表(63,34,12) > 融合/翼/大鎌 -rand:6/6,3/6,3/6,4/6,1/6,2/6 -============================ -input: -SAT3 -output: -HuntersMoon : 異形アビリティー表(46,35,35) > 気嚢/四肢複製/四肢複製 -rand:4/6,6/6,3/6,5/6,3/6,5/6 -============================ -input: -SAT3 -output: -HuntersMoon : 異形アビリティー表(25,52,15) > 絶叫/肉瘤/吸血根 -rand:2/6,5/6,5/6,2/6,1/6,5/6 -============================ -input: -SAT3 -output: -HuntersMoon : 異形アビリティー表(66,13,56) > 変色/針山/酸分泌 -rand:6/6,6/6,1/6,3/6,5/6,6/6 -============================ -input: -SAT3 -output: -HuntersMoon : 異形アビリティー表(56,23,22) > 酸分泌/鑢/火炎放射 -rand:5/6,6/6,2/6,3/6,2/6,2/6 -============================ -input: -SAT3 -output: -HuntersMoon : 異形アビリティー表(16,53,35) > 巨大化/暗視/四肢複製 -rand:1/6,6/6,5/6,3/6,3/6,5/6 -============================ -input: -SAT10 -output: -HuntersMoon : 異形アビリティー表(31,34,26,23,11,43,14,54,25,35) > 潤滑液/翼/粘液噴射/鑢/大牙/冷気/大鋏/邪視/絶叫/四肢複製 -rand:3/6,1/6,3/6,4/6,2/6,6/6,2/6,3/6,1/6,1/6,4/6,3/6,1/6,4/6,5/6,4/6,2/6,5/6,3/6,5/6 -============================ -input: -SAT10 -output: -HuntersMoon : 異形アビリティー表(21,62,16,32,62,23,41,11,36,24) > 瘴気/裏腹/巨大化/皮膚装甲/裏腹/鑢/異言/大牙/分解/ドリル -rand:2/6,1/6,6/6,2/6,1/6,6/6,3/6,2/6,6/6,2/6,2/6,3/6,4/6,1/6,1/6,1/6,3/6,6/6,2/6,4/6 -============================ -input: -SAT10 -output: -HuntersMoon : 異形アビリティー表(35,42,42,65,45,54,14,53,65,42) > 四肢複製/閃光/閃光/腐敗/化膿歯/邪視/大鋏/暗視/腐敗/閃光 -rand:3/6,5/6,4/6,2/6,4/6,2/6,6/6,5/6,4/6,5/6,5/6,4/6,1/6,4/6,5/6,3/6,6/6,5/6,4/6,2/6 -============================ -input: -SAT10 -output: -HuntersMoon : 異形アビリティー表(62,31,45,23,23,51,33,15,23,35) > 裏腹/潤滑液/化膿歯/鑢/鑢/触手/器官生成/吸血根/鑢/四肢複製 -rand:6/6,2/6,3/6,1/6,4/6,5/6,2/6,3/6,2/6,3/6,5/6,1/6,3/6,3/6,1/6,5/6,2/6,3/6,3/6,5/6 -============================ -input: -SAT10 -output: -HuntersMoon : 異形アビリティー表(63,23,66,62,62,14,24,54,45,55) > 融合/鑢/変色/裏腹/裏腹/大鋏/ドリル/邪視/化膿歯/超振動 -rand:6/6,3/6,2/6,3/6,6/6,6/6,6/6,2/6,6/6,2/6,1/6,4/6,2/6,4/6,5/6,4/6,4/6,5/6,5/6,5/6 -============================ -input: -SAT10 -output: -HuntersMoon : 異形アビリティー表(11,32,51,12,23,35,32,25,56,43) > 大牙/皮膚装甲/触手/大鎌/鑢/四肢複製/皮膚装甲/絶叫/酸分泌/冷気 -rand:1/6,1/6,3/6,2/6,5/6,1/6,1/6,2/6,2/6,3/6,3/6,5/6,3/6,2/6,2/6,5/6,5/6,6/6,4/6,3/6 -============================ -input: -SAT10 -output: -HuntersMoon : 異形アビリティー表(16,32,25,53,11,26,11,54,34,14) > 巨大化/皮膚装甲/絶叫/暗視/大牙/粘液噴射/大牙/邪視/翼/大鋏 -rand:1/6,6/6,3/6,2/6,2/6,5/6,5/6,3/6,1/6,1/6,2/6,6/6,1/6,1/6,5/6,4/6,3/6,4/6,1/6,4/6 -============================ -input: -SAT10 -output: -HuntersMoon : 異形アビリティー表(43,21,14,24,42,56,12,14,52,42) > 冷気/瘴気/大鋏/ドリル/閃光/酸分泌/大鎌/大鋏/肉瘤/閃光 -rand:4/6,3/6,2/6,1/6,1/6,4/6,2/6,4/6,4/6,2/6,5/6,6/6,1/6,2/6,1/6,4/6,5/6,2/6,4/6,2/6 -============================ -input: -SAT10 -output: -HuntersMoon : 異形アビリティー表(66,42,43,43,35,24,35,21,32,62) > 変色/閃光/冷気/冷気/四肢複製/ドリル/四肢複製/瘴気/皮膚装甲/裏腹 -rand:6/6,6/6,4/6,2/6,4/6,3/6,4/6,3/6,3/6,5/6,2/6,4/6,3/6,5/6,2/6,1/6,3/6,2/6,6/6,2/6 -============================ -input: -SAT10 -output: -HuntersMoon : 異形アビリティー表(65,55,52,54,41,34,52,36,54,22) > 腐敗/超振動/肉瘤/邪視/異言/翼/肉瘤/分解/邪視/火炎放射 -rand:6/6,5/6,5/6,5/6,5/6,2/6,5/6,4/6,4/6,1/6,3/6,4/6,5/6,2/6,3/6,6/6,5/6,4/6,2/6,2/6 -============================ -input: -SA2T -output: -HuntersMoon : 異形アビリティー表(1-54) > [表1]邪視 -rand:1/6,5/6,4/6 -============================ -input: -SA2T -output: -HuntersMoon : 異形アビリティー表(2-54) > [表2]怒髪 -rand:2/6,5/6,4/6 -============================ -input: -SA2T -output: -HuntersMoon : 異形アビリティー表(4-11) > [表2]電撃 -rand:4/6,1/6,1/6 -============================ -input: -SA2T -output: -HuntersMoon : 異形アビリティー表(1-11) > [表1]大牙 -rand:1/6,1/6,1/6 -============================ -input: -SA2T -output: -HuntersMoon : 異形アビリティー表(6-66) > [表2]巨砲 -rand:6/6,6/6,6/6 -============================ -input: -SA2T3 -output: -HuntersMoon : 異形アビリティー表(1-23,4-56,2-46) > [表1]鑢/[表2]脂肪層/[表2]プロペラ -rand:1/6,2/6,3/6,4/6,5/6,6/6,2/6,4/6,6/6 -============================ -input: -TST -output: -HuntersMoon : 指定特技(社会)表(4) > 話す -rand:2/6,2/6 -============================ -input: -TST -output: -HuntersMoon : 指定特技(社会)表(2) > 怯える -rand:1/6,1/6 -============================ -input: -TST -output: -HuntersMoon : 指定特技(社会)表(7) > 伝える -rand:6/6,1/6 -============================ -input: -TST -output: -HuntersMoon : 指定特技(社会)表(5) > 黙る -rand:3/6,2/6 -============================ -input: -TST -output: -HuntersMoon : 指定特技(社会)表(10) > 脅す -rand:4/6,6/6 -============================ -input: -TST -output: -HuntersMoon : 指定特技(社会)表(9) > 憶える -rand:6/6,3/6 -============================ -input: -TST -output: -HuntersMoon : 指定特技(社会)表(9) > 憶える -rand:3/6,6/6 -============================ -input: -TST -output: -HuntersMoon : 指定特技(社会)表(6) > 売る -rand:3/6,3/6 -============================ -input: -TST -output: -HuntersMoon : 指定特技(社会)表(6) > 売る -rand:1/6,5/6 -============================ -input: -TST -output: -HuntersMoon : 指定特技(社会)表(8) > 作る -rand:6/6,2/6 -============================ -input: -THT -output: -HuntersMoon : 指定特技(頭部)表(5) > 反応 -rand:1/6,4/6 -============================ -input: -THT -output: -HuntersMoon : 指定特技(頭部)表(7) > 脳 -rand:4/6,3/6 -============================ -input: -THT -output: -HuntersMoon : 指定特技(頭部)表(7) > 脳 -rand:2/6,5/6 -============================ -input: -THT -output: -HuntersMoon : 指定特技(頭部)表(7) > 脳 -rand:5/6,2/6 -============================ -input: -THT -output: -HuntersMoon : 指定特技(頭部)表(7) > 脳 -rand:3/6,4/6 -============================ -input: -THT -output: -HuntersMoon : 指定特技(頭部)表(11) > 口 -rand:5/6,6/6 -============================ -input: -THT -output: -HuntersMoon : 指定特技(頭部)表(7) > 脳 -rand:5/6,2/6 -============================ -input: -THT -output: -HuntersMoon : 指定特技(頭部)表(10) > 叫ぶ -rand:4/6,6/6 -============================ -input: -THT -output: -HuntersMoon : 指定特技(頭部)表(8) > 考える -rand:6/6,2/6 -============================ -input: -THT -output: -HuntersMoon : 指定特技(頭部)表(8) > 考える -rand:3/6,5/6 -============================ -input: -TAT -output: -HuntersMoon : 指定特技(腕部)表(6) > 撃つ -rand:2/6,4/6 -============================ -input: -TAT -output: -HuntersMoon : 指定特技(腕部)表(8) > 投げる -rand:4/6,4/6 -============================ -input: -TAT -output: -HuntersMoon : 指定特技(腕部)表(5) > 利き腕 -rand:1/6,4/6 -============================ -input: -TAT -output: -HuntersMoon : 指定特技(腕部)表(6) > 撃つ -rand:2/6,4/6 -============================ -input: -TAT -output: -HuntersMoon : 指定特技(腕部)表(9) > 逆腕 -rand:3/6,6/6 -============================ -input: -TAT -output: -HuntersMoon : 指定特技(腕部)表(4) > 斬る -rand:1/6,3/6 -============================ -input: -TAT -output: -HuntersMoon : 指定特技(腕部)表(8) > 投げる -rand:5/6,3/6 -============================ -input: -TAT -output: -HuntersMoon : 指定特技(腕部)表(5) > 利き腕 -rand:3/6,2/6 -============================ -input: -TAT -output: -HuntersMoon : 指定特技(腕部)表(8) > 投げる -rand:4/6,4/6 -============================ -input: -TAT -output: -HuntersMoon : 指定特技(腕部)表(6) > 撃つ -rand:3/6,3/6 -============================ -input: -TBT -output: -HuntersMoon : 指定特技(胴部)表(4) > 止める -rand:1/6,3/6 -============================ -input: -TBT -output: -HuntersMoon : 指定特技(胴部)表(10) > 落ちる -rand:5/6,5/6 -============================ -input: -TBT -output: -HuntersMoon : 指定特技(胴部)表(11) > 消化器 -rand:6/6,5/6 -============================ -input: -TBT -output: -HuntersMoon : 指定特技(胴部)表(6) > 受ける -rand:3/6,3/6 -============================ -input: -TBT -output: -HuntersMoon : 指定特技(胴部)表(10) > 落ちる -rand:4/6,6/6 -============================ -input: -TBT -output: -HuntersMoon : 指定特技(胴部)表(4) > 止める -rand:3/6,1/6 -============================ -input: -TBT -output: -HuntersMoon : 指定特技(胴部)表(9) > かわす -rand:6/6,3/6 -============================ -input: -TBT -output: -HuntersMoon : 指定特技(胴部)表(11) > 消化器 -rand:5/6,6/6 -============================ -input: -TBT -output: -HuntersMoon : 指定特技(胴部)表(6) > 受ける -rand:2/6,4/6 -============================ -input: -TBT -output: -HuntersMoon : 指定特技(胴部)表(9) > かわす -rand:3/6,6/6 -============================ -input: -TLT -output: -HuntersMoon : 指定特技(脚部)表(5) > 利き脚 -rand:4/6,1/6 -============================ -input: -TLT -output: -HuntersMoon : 指定特技(脚部)表(2) > 迫る -rand:1/6,1/6 -============================ -input: -TLT -output: -HuntersMoon : 指定特技(脚部)表(8) > しゃがむ -rand:5/6,3/6 -============================ -input: -TLT -output: -HuntersMoon : 指定特技(脚部)表(5) > 利き脚 -rand:4/6,1/6 -============================ -input: -TLT -output: -HuntersMoon : 指定特技(脚部)表(6) > 跳ぶ -rand:1/6,5/6 -============================ -input: -TLT -output: -HuntersMoon : 指定特技(脚部)表(4) > 蹴る -rand:2/6,2/6 -============================ -input: -TLT -output: -HuntersMoon : 指定特技(脚部)表(8) > しゃがむ -rand:3/6,5/6 -============================ -input: -TLT -output: -HuntersMoon : 指定特技(脚部)表(10) > 滑る -rand:6/6,4/6 -============================ -input: -TLT -output: -HuntersMoon : 指定特技(脚部)表(9) > 逆脚 -rand:6/6,3/6 -============================ -input: -TLT -output: -HuntersMoon : 指定特技(脚部)表(8) > しゃがむ -rand:5/6,3/6 -============================ -input: -TET -output: -HuntersMoon : 指定特技(環境)表(8) > バランス -rand:5/6,3/6 -============================ -input: -TET -output: -HuntersMoon : 指定特技(環境)表(11) > 休まない -rand:5/6,6/6 -============================ -input: -TET -output: -HuntersMoon : 指定特技(環境)表(9) > 現れる -rand:5/6,4/6 -============================ -input: -TET -output: -HuntersMoon : 指定特技(環境)表(6) > 隠れる -rand:1/6,5/6 -============================ -input: -TET -output: -HuntersMoon : 指定特技(環境)表(9) > 現れる -rand:3/6,6/6 -============================ -input: -TET -output: -HuntersMoon : 指定特技(環境)表(6) > 隠れる -rand:2/6,4/6 -============================ -input: -TET -output: -HuntersMoon : 指定特技(環境)表(6) > 隠れる -rand:2/6,4/6 -============================ -input: -TET -output: -HuntersMoon : 指定特技(環境)表(9) > 現れる -rand:4/6,5/6 -============================ -input: -TET -output: -HuntersMoon : 指定特技(環境)表(7) > 追う -rand:5/6,2/6 -============================ -input: -TET -output: -HuntersMoon : 指定特技(環境)表(7) > 追う -rand:1/6,6/6 -============================ -input: -DS1ET -output: -HuntersMoon : ディフェンス遭遇表1st(1[1]) > 状況 あなたはモノビーストに追い詰められるまま建物に閉じこもる。とりあえず、夜は建物の中を威勢よく動き回り、相手を威嚇しなければ。 -指定特技 《脅す/社会10》 -成功 建物の外から隙を窺うモノビーストをきつく睨みつける。感情属性を「怒り」に設定。 -失敗 ヤツはあなたを嘲笑うかのように建物の中に出現を繰り返す。感情属性を「恐怖」に設定。 -rand:1/6 -============================ -input: -DS2ET -output: -HuntersMoon : ディフェンス遭遇表2nd(1[1]) > 状況 建物の構造を把握し、憶えこむことで、満月の晩までの生存率は大きく向上するだろう。あなたは眠い目を擦りつつ、昼間も探索を続ける。 -指定特技 《覚える/社会9》 -成功 やつを迎え撃つ自信が湧いてきた。【モラル】が2点増加する。 -失敗 眠くて全然覚えられない。体力を消耗してしまう。「重傷」の変調を発動する。 -rand:1/6 -============================ -input: -DS3ET -output: -HuntersMoon : ディフェンス遭遇表3rd(1[1]) > 状況 時は来た。問題は立て篭もっていた建物から出て行くタイミングだが、囮を使うことでモノビーストを騙し、安全に出ていけるかもしれない。 -指定特技 《騙す/社会11》 -成功 相手の不意を打った!次に行う行為判定にプラス2の修正がつく。 -失敗 逆に騙され、日が沈みきっていない早い時間に飛び出してしまう。モノビーストは夕暮れの戦闘で変調を発動しない。 -rand:1/6 -============================ -input: -EE1ET -output: -HuntersMoon : エスケープ遭遇表1st(1[1]) > 状況 あなたは見た。夜の街を闊歩し、気ままに人を食い散らかす怪物を。すぐ近くまで追っている危険を、大事な人に伝えなければならない。 -指定特技 《伝える/社会7》 -成功 最近疲れてるんじゃない?と返され絶望する。感情属性を「恐怖」に設定。 -失敗 病院に連れて行かれた。感情属性を「怒り」に設定。 -rand:1/6 -============================ -input: -EE2ET -output: -HuntersMoon : エスケープ遭遇表2nd(1[1]) > 状況 モノビーストから逃げるあなたの目の前に、パトロール中の警察官が!夜中に必死な顔で走っている理由をひねり出せ。 -指定特技 《騙す/社会11》 -成功 うまく言い抜けた。【モラル】が1点増加する。 -失敗 質問されているうちにモノビーストが追いつき、警察官を食い殺す。感情属性が反転する。 -rand:1/6 -============================ -input: -EE3ET -output: -HuntersMoon : エスケープ遭遇表3rd(1[1]) > 状況 考え付く限りのルートと手段を使って逃げ続けたあなたがたどりついた袋小路には、モノビーストが待っていた。もう何も考えず、必死に戦うしかないようだ。 -指定特技 《考えない/社会3》 -成功 思考停止成功!感情属性を好きに変更できる。 -失敗 別のハンターが倒してくれるかもしれないと考えて気後れする。夕暮れの戦闘フェイズでは自分が行う全ての攻撃判定にマイナス1の修正がつく。 -rand:1/6 -============================ -input: -ET1ET -output: -HuntersMoon : エスコート遭遇表1st(1[1]) > 状況 追われる彼/彼女があなたの前に現れたのは満月の夜。獲物に集中しているモノビーストを攻撃するのは容易いことだったが……。 -指定特技 《怯える/社会2》 -成功 今戦えば彼/彼女は死ぬと思いとどまって一緒に逃げる。感情属性を「恐怖」に設定。 -失敗 モノビーストを倒しきれず、彼/彼女は一生残る傷を負う。感情属性を「怒り」に設定。 -rand:1/6 -============================ -input: -ET2ET -output: -HuntersMoon : エスコート遭遇表2nd(1[1]) > 状況 彼/彼女は怪物に狙われる日々に憔悴している。モノビーストは狙いを変えたとか、もう死んだとか、元気付けるようなことを言わなくては。 -指定特技 《騙す/社会11》 -成功 一時しのぎの嘘だが元気な笑顔が見られる。【勝利のお守り】として記憶に刻んでおいてもよい。 -失敗 あなたの下手な嘘は彼/彼女を「動転」させる。あなたも影響を受けて同じ変調を発動する。 -rand:1/6 -============================ -input: -ET3ET -output: -HuntersMoon : エスコート遭遇表3rd(1[1]) > 状況 もうすぐ満月が昇る。あなたと彼/彼女は、モノビーストを倒した後に何をするか話しあう。希望の持てる未来のヴィジョンを作れただろうか? -指定特技 《作る/社会8》 -成功 待ち受ける未来に対して任意に感情属性を変更することができる。 -失敗 特にすることがないような……やけになって【感情】が2点増加する。 -rand:1/6 -============================ -input: -TK1ET -output: -HuntersMoon : トラッキング遭遇表1st(1[1]) > 状況 あなたは隠れ場所に潜みながらモノビーストが獲物…あなたの大切な誰かを貪るのを見ている。満月の夜は遠く、まだ奴を仕留める事は出来ない。 -指定特技 《黙る/社会5》 -成功 押さえ込んだ怒りが膨れ上がる。感情属性を「怒り」に設定。 -失敗 思わず声を上げてしまい、無敵のモノビーストに手酷い傷を負わされる。感情属性を「恐怖」に設定。 -rand:1/6 -============================ -input: -TK2ET -output: -HuntersMoon : トラッキング遭遇表2nd(1[1]) > 状況 あなたはモノビーストの眼前に立ちふさがり、相手になってやると宣言する。言葉が通じなくとも、喧嘩を売ったことは伝わるはずだ。 -指定特技 《売る/社会6》 -成功 このセッション中、【基本攻撃】の攻撃判定にプラス1の修正が付く。 -失敗 まるで相手にされない。【感情】が2点増加する。 -rand:1/6 -============================ -input: -TK3ET -output: -HuntersMoon : トラッキング遭遇表3rd(1[1]) > 状況 舞台は整った。やつを追い詰めながら作り上げてきた包囲網は、確実にヤツをあの場所に追い詰めている。急ぐ必要はない。ゆっくりと行こう。 -指定特技 《作る/社会8》 -成功 準備に時間をかけたので、アイテムを一つ入手できる。 -失敗 ゆっくりした結果、モノビーストは何人か犠牲者を増やし、【モラル】を3点増加させている。 -rand:1/6 -============================ -input: -MST -output: -HuntersMoon : 異形化表(1[1]) > 【感情】が2増加する。 -rand:1/6 -============================ -input: -MST -output: -HuntersMoon : 異形化表(6[6]) > 【感情】が6増加する。部位ダメージを2回受ける。 -rand:6/6 -============================ -input: -ERT -output: -HuntersMoon : 代償表(1[1]) > 評判の失墜 - 次のセッションで登場するハンターキラーの合計レベルが1上昇します。 -この代償を持つハンターがセッションに複数参加している場合、効果の累積はしません。 -rand:1/6 -============================ -input: -ERT -output: -HuntersMoon : 代償表(6[6]) > 引退の決意 - 異形アビリティを全て失います。この代償で失った異形アビリティを回復することはできません。 -この代償を続けて2回得た段階でハンターはモノビーストとの接触を失い、視認できなくなります。つまり強制的に引退です。 -rand:6/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -HuntersMoon : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/Illusio.txt b/src/src_bcdice/test/data/Illusio.txt deleted file mode 100644 index dd0da76ef..000000000 --- a/src/src_bcdice/test/data/Illusio.txt +++ /dev/null @@ -1,54 +0,0 @@ -input: -IL1 -output: -Illusio : 1D6(Block:1) > 1 > × > 成功数:0 -rand:1/6 -============================ -input: -IL1 -output: -Illusio : 1D6(Block:1) > 6 > 6 > 成功数:1 -rand:6/6 -============================ -input: -3IL1 -output: -Illusio : 3D6(Block:1) > 1,1,1 > ×,×,× > 成功数:0 -rand:1/6,1/6,1/6 -============================ -input: -3IL1 -output: -Illusio : 3D6(Block:1) > 1,2,3 > ×,2,3 > 成功数:2 -rand:1/6,2/6,3/6 -============================ -input: -3IL123 -output: -Illusio : 3D6(Block:1,2,3) > 1,2,3 > ×,×,× > 成功数:0 -rand:1/6,2/6,3/6 -============================ -input: -3il231 -output: -Illusio : 3D6(Block:1,2,3) > 2,3,4 > ×,×,4 > 成功数:1 -rand:2/6,3/6,4/6 -============================ -input: -6IL156 -output: -Illusio : 6D6(Block:1,5,6) > 1,2,3,4,5,6 > ×,2,3,4,×,× > 成功数:3 -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -5IL3P -output: -Illusio : 5D6(Parry:3) > 1,1,1,1,1 > 1,1,1,1,1 > 成功数:5 パリィ失敗 -rand:1/6,1/6,1/6,1/6,1/6 -============================ -input: -5IL3P -output: -Illusio : 5D6(Parry:3) > 1,2,3,4,5 > 1,2,×,4,5 > パリィ成立! 次の非ダメージ2倍。 -rand:1/6,2/6,3/6,4/6,5/6 -============================ diff --git a/src/src_bcdice/test/data/InfiniteFantasia.txt b/src/src_bcdice/test/data/InfiniteFantasia.txt deleted file mode 100644 index 89d470ff3..000000000 --- a/src/src_bcdice/test/data/InfiniteFantasia.txt +++ /dev/null @@ -1,185 +0,0 @@ -input: -1D20<=2 -output: -InfiniteFantasia : (1D20<=2) > 20 > 失敗 -rand:20/20 -============================ -input: -1D20<=2 -output: -InfiniteFantasia : (1D20<=2) > 17 > 失敗 -rand:17/20 -============================ -input: -1D20<=2 -output: -InfiniteFantasia : (1D20<=2) > 8 > 失敗 -rand:8/20 -============================ -input: -1D20<=2 -output: -InfiniteFantasia : (1D20<=2) > 3 > 失敗 -rand:3/20 -============================ -input: -1D20<=2 -output: -InfiniteFantasia : (1D20<=2) > 13 > 失敗 -rand:13/20 -============================ -input: -1D20<=2 -output: -InfiniteFantasia : (1D20<=2) > 14 > 失敗 -rand:14/20 -============================ -input: -1D20<=2 -output: -InfiniteFantasia : (1D20<=2) > 2 > 1レベル成功 -rand:2/20 -============================ -input: -1D20<=2 -output: -InfiniteFantasia : (1D20<=2) > 4 > 失敗 -rand:4/20 -============================ -input: -1D20<=2 -output: -InfiniteFantasia : (1D20<=2) > 4 > 失敗 -rand:4/20 -============================ -input: -1D20<=2 -output: -InfiniteFantasia : (1D20<=2) > 5 > 失敗 -rand:5/20 -============================ -input: -1D20<=19 -output: -InfiniteFantasia : (1D20<=19) > 17 > 1レベル成功 -rand:17/20 -============================ -input: -1D20<=19 -output: -InfiniteFantasia : (1D20<=19) > 18 > 1レベル成功 -rand:18/20 -============================ -input: -1D20<=19 -output: -InfiniteFantasia : (1D20<=19) > 13 > 1レベル成功 -rand:13/20 -============================ -input: -1D20<=19 -output: -InfiniteFantasia : (1D20<=19) > 17 > 1レベル成功 -rand:17/20 -============================ -input: -1D20<=19 -output: -InfiniteFantasia : (1D20<=19) > 14 > 1レベル成功 -rand:14/20 -============================ -input: -1D20<=19 -output: -InfiniteFantasia : (1D20<=19) > 6 > 2レベル成功 -rand:6/20 -============================ -input: -1D20<=19 -output: -InfiniteFantasia : (1D20<=19) > 15 > 1レベル成功 -rand:15/20 -============================ -input: -1D20<=19 -output: -InfiniteFantasia : (1D20<=19) > 13 > 1レベル成功 -rand:13/20 -============================ -input: -1D20<=19 -output: -InfiniteFantasia : (1D20<=19) > 11 > 1レベル成功 -rand:11/20 -============================ -input: -1D20<=19 -output: -InfiniteFantasia : (1D20<=19) > 14 > 1レベル成功 -rand:14/20 -============================ -input: -1D20<=10 -output: -InfiniteFantasia : (1D20<=10) > 16 > 失敗 -rand:16/20 -============================ -input: -1D20<=10 -output: -InfiniteFantasia : (1D20<=10) > 20 > 失敗 -rand:20/20 -============================ -input: -1D20<=10 -output: -InfiniteFantasia : (1D20<=10) > 17 > 失敗 -rand:17/20 -============================ -input: -1D20<=10 -output: -InfiniteFantasia : (1D20<=10) > 17 > 失敗 -rand:17/20 -============================ -input: -1D20<=10 -output: -InfiniteFantasia : (1D20<=10) > 10 > 1レベル成功 -rand:10/20 -============================ -input: -1D20<=10 -output: -InfiniteFantasia : (1D20<=10) > 9 > 1レベル成功 -rand:9/20 -============================ -input: -1D20<=10 -output: -InfiniteFantasia : (1D20<=10) > 18 > 失敗 -rand:18/20 -============================ -input: -1D20<=10 -output: -InfiniteFantasia : (1D20<=10) > 8 > 1レベル成功 -rand:8/20 -============================ -input: -1D20<=10 -output: -InfiniteFantasia : (1D20<=10) > 17 > 失敗 -rand:17/20 -============================ -input: -1D20<=10 -output: -InfiniteFantasia : (1D20<=10) > 11 > 失敗 -rand:11/20 -============================ -input: -1D20>=? 目標値?でバグらない -output: -InfiniteFantasia : (1D20>=?) > 10 > 失敗 -rand:10/20 diff --git a/src/src_bcdice/test/data/Insane.txt b/src/src_bcdice/test/data/Insane.txt deleted file mode 100644 index 3e1201e0e..000000000 --- a/src/src_bcdice/test/data/Insane.txt +++ /dev/null @@ -1,371 +0,0 @@ -input: -ST -output: -Insane : シーン表(2) > 血の匂いがあたりに充満している。事件か? 事故か? もしや、それは今も続いているのだろうか? -rand:1/6,1/6 -============================ -input: -ST -output: -Insane : シーン表(12) > 明るい光りに照らされて、ほっと一息。だが光が強いほどに、影もまた濃くなる……。 -rand:6/6,6/6 -============================ -input: -HJST -output: -Insane : 本当は怖い現代日本シーン表(2) > 不意に辺りが暗くなる。停電か? 闇の中から、誰かがあなたを呼ぶ声が聞こえてくる。 -rand:1/6,1/6 -============================ -input: -HJST -output: -Insane : 本当は怖い現代日本シーン表(12) > 寝苦しくて目を覚ます。何か悪夢を見ていたようだが……。あれ、意識はあるのに身体が動かない! -rand:6/6,6/6 -============================ -input: -MTST -output: -Insane : 狂騒の二〇年代シーン表(2) > 苔のこびりつく巨大な岩が並ぶ、川に浮かぶ島。何を祀っているのかも分からない祭壇があり、いわく言いがたい雰囲気を漂わせる。 -rand:1/6,1/6 -============================ -input: -MTST -output: -Insane : 狂騒の二〇年代シーン表(12) > 静かな室内。なにか、不穏な気配を感じるが……あれはなんだ? 窓に、窓に! -rand:6/6,6/6 -============================ -input: -DVST -output: -Insane : 暗黒のヴィクトリアシーン表(2) > 霊媒師を中心に円卓を取り囲む人々が、降霊会を行っている。薄暗い部屋の中に怪しげなエクトプラズムが漂い始める。 -rand:1/6,1/6 -============================ -input: -DVST -output: -Insane : 暗黒のヴィクトリアシーン表(12) > 静かな湖のほとり。草むらでは野生の兎が飛びはねている。 -rand:6/6,6/6 -============================ -input: -DT -output: -Insane : 形容表(11) > 青ざめた -rand:1/6,1/6 -============================ -input: -DT -output: -Insane : 形容表(16) > 無限に増殖する -rand:6/6,1/6 -============================ -input: -DT -output: -Insane : 形容表(66) > 虹色に輝く -rand:6/6,6/6 -============================ -input: -BT -output: -Insane : 本体表(11) > 人間 -rand:1/6,1/6 -============================ -input: -BT -output: -Insane : 本体表(14) > 幽鬼 -rand:4/6,1/6 -============================ -input: -BT -output: -Insane : 本体表(66) > 小人 -rand:6/6,6/6 -============================ -input: -PT -output: -Insane : 部位表(11) > 胴体 -rand:1/6,1/6 -============================ -input: -PT -output: -Insane : 部位表(25) > 尾 -rand:5/6,2/6 -============================ -input: -PT -output: -Insane : 部位表(66) > 内臓 -rand:6/6,6/6 -============================ -input: -FT -output: -Insane : 感情表(1) > 共感(プラス)/不信(マイナス) -rand:1/6 -============================ -input: -FT -output: -Insane : 感情表(6) > 狂信(プラス)/殺意(マイナス) -rand:6/6 -============================ -input: -JT -output: -Insane : 職業表(11) > 考古学者≪情景≫≪考古学≫ -rand:1/6,1/6 -============================ -input: -JT -output: -Insane : 職業表(15) > 好事家≪芸術≫≪人類学≫ -rand:5/6,1/6 -============================ -input: -JT -output: -Insane : 職業表(25) > 学生 知識分野と情動分野から好きなものを一つずつ -rand:2/6,5/6 -============================ -input: -JT -output: -Insane : 職業表(66) > 用心棒 好きな暴力×2 -rand:6/6,6/6 -============================ -input: -BET -output: -Insane : バッドエンド表(2) > あなたの周りに漆黒の闇が、異形の前肢が、無数の触手が集まってくる。彼らは、新たな仲間の誕生を祝福しているのだ。あなたは、もう怪異に怖がることはない。なぜなら、あなた自身が怪異となったからだ。以降、あなたは怪異のNPCとなって登場する。 -rand:1/6,1/6 -============================ -input: -BET -output: -Insane : バッドエンド表(12) > 振り返ると、そこには圧倒的な「それ」が待ち構えていた。無慈悲な一撃が、あなたを襲い、あなたは死亡する。 -rand:6/6,6/6 -============================ -input: -RTT -output: -Insane : ランダム特技決定表(1,2) > 「暴力」≪焼却≫ -rand:1/6,1/6,1/6 -============================ -input: -RTT -output: -Insane : ランダム特技決定表(6,12) > 「怪異」≪宇宙≫ -rand:6/6,6/6,6/6 -============================ -input: -TVT -output: -Insane : 指定特技(暴力)表(2) > 焼却 -rand:1/6,1/6 -============================ -input: -TVT -output: -Insane : 指定特技(暴力)表(12) > 埋葬 -rand:6/6,6/6 -============================ -input: -TET -output: -Insane : 指定特技(情動)表(2) > 恋 -rand:1/6,1/6 -============================ -input: -TET -output: -Insane : 指定特技(情動)表(12) > 愛 -rand:6/6,6/6 -============================ -input: -TPT -output: -Insane : 指定特技(知覚)表(2) > 痛み -rand:1/6,1/6 -============================ -input: -TPT -output: -Insane : 指定特技(知覚)表(12) > 物陰 -rand:6/6,6/6 -============================ -input: -TST -output: -Insane : 指定特技(技術)表(2) > 分解 -rand:1/6,1/6 -============================ -input: -TST -output: -Insane : 指定特技(技術)表(12) > 兵器 -rand:6/6,6/6 -============================ -input: -TKT -output: -Insane : 指定特技(知識)表(2) > 物理学 -rand:1/6,1/6 -============================ -input: -TKT -output: -Insane : 指定特技(知識)表(12) > 天文学 -rand:6/6,6/6 -============================ -input: -TMT -output: -Insane : 指定特技(怪異)表(2) > 時間 -rand:1/6,1/6 -============================ -input: -TMT -output: -Insane : 指定特技(怪異)表(12) > 宇宙 -rand:6/6,6/6 -============================ -input: -CHT -output: -Insane : 会話ホラースケープ表(1) > 指定特技:死 -会話の最中、あなたはふと、相手の肩越しに目を向ける。なんの前触れもなく、遠くの建物の屋上から女が飛び降りた。声を上げる暇もなく、彼女は吸い込まれるように地面に叩きつけられる。距離があるにもかかわらず、女と目が合ってしまった。―それ以降、女の顔が脳裏にこびりついて、離れようとしない……。 -rand:1/6 -============================ -input: -CHT -output: -Insane : 会話ホラースケープ表(6) > 指定特技:人類学 -会話の最中、視界に違和感を覚えて、あなたは瞬きする。相手の顔が、変になっていた。引き延ばして、かき回したように、グロテスクに歪んでいる。えっ?と思ってよく見るが、歪みは変わらない。相手はまったく気付いていないようだ。きつく目を瞑ってから見直すと、ようやく歪みは消えた。君の心に一つの疑いが生まれる。目の前の相手は、本当に人間なのだろうか? -rand:6/6 -============================ -input: -VHT -output: -Insane : 街中ホラースケープ表(1) > 指定特技:乗物 -キキィーッ!激しいブレーキ音、そして鈍い音。はっとして振り返ると、止まった車と、その前に倒れている人が目に入った。交通事故だ!慌てて駆け寄り、被害者の顔を見た途端、あなたは凍り付いた。倒れているのは、あなただった。――えっ!?驚いて瞬きすると、路上のあなたも、車も消えていた。 -rand:1/6 -============================ -input: -VHT -output: -Insane : 街中ホラースケープ表(6) > 指定特技:笑い -駅に着くと、やけに混雑している。人身事故で電車が止まっているようだ。ツイてないな。そう思っていると、改札付近の人ごみの中から、和服の女性が急ぎ足であなたのほうへ近づいてきた。女性は満面の笑みを浮かべていた。独りごとを言っているのか、口が動いている。すれ違いざまに、女性の声が耳に入った。「やってやった。やってやった。やってやった。ざまあみろ」えっ、と思って振り返るあなたを残して、女性は人ごみの中へ消えていった。 -rand:6/6 -============================ -input: -IHT -output: -Insane : 不意訪問ホラースケープ表(1) > 指定特技:驚き -バタバタバタッ!突然の物音に、あなたはぎょっとして振り仰ぐ。天井裏を何かが動き回っているようだ。動物が入り込んだのだろうか?それにしては大きい音だ。――まるで子供がめちゃめちゃに走り回っているような。物音は一瞬止まり、すぐに再開した。ドン!ドン!ドン!ドン!飛び跳ねるような音がするのは、ちょうどあなたの真上だ……。 -rand:1/6 -============================ -input: -IHT -output: -Insane : 不意訪問ホラースケープ表(6) > 指定特技:地底 -見慣れたはずの場所に、見慣れない扉を見つけた。開けてみると、長い下り階段が闇の中に伸びている。不審に思って下りてみると……そこは地下室だった。こんな場所があったなんて。明かりを片手に進んでいくと、何かが近づいてくる気配がする。闇の中から、何者かが、あなたの名を呼んだ。 -rand:6/6 -============================ -input: -RHT -output: -Insane : 廃墟遭遇ホラースケープ表(1) > 指定特技:暗黒 -重く頑丈そうな扉を開ける。部屋の中は真っ暗だった。灯りで照らしてみると、別の部屋へと続く道が何本か見つかった。目ぼしいものはなさそうだ。一旦、入り口に戻ろうと、入ってきた扉のほうを振り返る。そこには壁しかなかった。あの重厚な扉がなくなっている。そんな馬鹿な。しかし、何度探してもどの壁にも扉らしきものは見当たらない。仕方なく、通路を進むことにしたが、じわじわと不吉な気分が込み上げてくる。……あの扉は、開けてはいけなかったのではないだろうか? -rand:1/6 -============================ -input: -RHT -output: -Insane : 廃墟遭遇ホラースケープ表(6) > 指定特技:薬品 -不意に、シンナーの匂いが鼻を刺した。廃墟の壁にべったりと、赤いペンキの文字が書かれている。何が書いてあるのかは判然としないが、ひたすら悪意と憎しみを塗り込めたようなタッチにおぞけが走る。そのうちあることに気付いて、あなたは総毛立った。ペンキがまだ新しい。……塗り立てのように新しいのだ。 -rand:6/6 -============================ -input: -MHT -output: -Insane : 野外遭遇ホラースケープ表(1) > 指定特技:痛み -ブ―――――――ン耳元で甲高い羽音が響いてくる。見たことのない真っ赤な羽虫の群れが飛んでいた。ブ―――――――ン。羽虫を追い払うように、腕を振るう。痛いっ。腕に刺すような痛みが走った。ブ―――――――ン虫たちは、どこかへ去っていく。みるみる腕の表面に不気味な水疱がぽつぽつと浮かび上がってきた。 -rand:1/6 -============================ -input: -MHT -output: -Insane : 野外遭遇ホラースケープ表(6) > 指定特技:焼却 -パチ……パチ……。火の燃える音がする。空き地で焚火が炎を上げていた。そばには誰もいない。心温まる思いで立ち止まり、木の枝で焚火をかき回していると、炎の中から軽やかな笑い声が聞こえた。ぎょっとするあなたの足許を、猫のような大きさの何かがするりと抜けていった。焚火に目を戻すと、そこにはただ、くすぶる骨の塊が残されているだけだった。 -rand:6/6 -============================ -input: -LHT -output: -Insane : 情報潜在ホラースケープ表 (1) > 指定特技:味 -のどの渇きを覚えた。調べ物を開始した時間から、時計の針は大分進んでいる。どうやら根をつめ過ぎたようだ。画面に目を戻しつつ、ペットボットルの水を口に含む。すると、口内に違和感が広がった。たまらず水を吐き出す。すると、真っ黒い液体が机の上の資料を汚した。口の中には、ドブ川のような臭いがこびりついている。確認したペットボトルの水は、透明なのだが……? -rand:1/6 -============================ -input: -LHT -output: -Insane : 情報潜在ホラースケープ表 (6) > 指定特技:歴史 -表紙のないレポートが見つかった。パラパラめくってみると、まさにあなたが今調べている件についての調査報告だった。もどかしいことに、あちこち墨塗りされていて、肝心のところがわからない。察するに、どうも、軍による調査のようだ。軍?なぜ軍隊がこの件を調べていたのだろう……? -rand:6/6 -============================ -input: -2d6>=5 -output: -Insane : (2D6>=5) > 2[1,1] > 2 > ファンブル(判定失敗。山札から【狂気】を1枚獲得) -rand:1/6,1/6 -============================ -input: -2d6>=5 -output: -Insane : (2D6>=5) > 12[6,6] > 12 > スペシャル(判定成功。【生命力】1点か【正気度】1点回復) -rand:6/6,6/6 -============================ -input: -2d6>=5 -output: -Insane : (2D6>=5) > 4[1,3] > 4 > 失敗 -rand:1/6,3/6 -============================ -input: -2d6>=5 -output: -Insane : (2D6>=5) > 5[1,4] > 5 > 成功 -rand:4/6,1/6 -============================ -input: -IRN -output: -Insane : 暫定整理番号作成(5,15,36,25,46) > 5TKX -rand:5/6,5/6,1/6,6/6,3/6,5/6,2/6,6/6,4/6 -============================ -input: -IRN -output: -Insane : 暫定整理番号作成(4,15,36,25,56,13,23,46,45,34) > 5TKZ3IXVQ -rand:4/6,5/6,1/6,6/6,3/6,5/6,2/6,6/6,5/6,3/6,1/6,3/6,2/6,4/6,6/6,5/6,4/6,3/6,4/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -Insane : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 -============================ -input: -2d6>=? -output: -Insane : (2D6>=?) > 2[1,1] > 2 > ファンブル(判定失敗。山札から【狂気】を1枚獲得) -rand:1/6,1/6 -============================ -input: -2d6>=? -output: -Insane : (2D6>=?) > 12[6,6] > 12 > スペシャル(判定成功。【生命力】1点か【正気度】1点回復) -rand:6/6,6/6 diff --git a/src/src_bcdice/test/data/Insane_Korean.txt b/src/src_bcdice/test/data/Insane_Korean.txt deleted file mode 100644 index be7191688..000000000 --- a/src/src_bcdice/test/data/Insane_Korean.txt +++ /dev/null @@ -1,348 +0,0 @@ -input: -ST -output: -Insane : 씬표(2) > 피 냄새가 지독히 풍긴다. 사건인가? 사고인가? 혹시, 아직 끝나지 않은 걸까? -rand:1/6,1/6 -============================ -input: -ST -output: -Insane : 씬표(12) > 밝은 빛에 비춰져, 안심하며 한숨. 하지만 빛이 강해지는 만큼, 그림자도 짙어진다. -rand:6/6,6/6 -============================ -input: -HJST -output: -Insane : 사실은 무서운 현대 일본 씬표(2) > 갑자기 주변이 어두워진다. 정전인가? 어둠 속에서, 누군가가 당신을 부르는 목소리가 들려온다. -rand:1/6,1/6 -============================ -input: -HJST -output: -Insane : 사실은 무서운 현대 일본 씬표(12) > 잠을 이루지 못하고 눈을 뜬다. 뭔가 악몽을 꾼 것 같은데……. 어라, 의식은 있는데 몸이 움직이지 않아! -rand:6/6,6/6 -============================ -input: -MTST -output: -Insane : 광조의 20년대 씬표(2) > 이끼가 달라붙은 거대한 바위가 늘어선, 강에 떠오른 섬. 무엇을 모시고 있는지도 알 수 없는 제단이 있고, 이루 말하기 힘든 분위기가 떠오른다. -rand:1/6,1/6 -============================ -input: -MTST -output: -Insane : 광조의 20년대 씬표(12) > 조용한 실내. 무언가 불온한 기색이 느껴지지만……저건 뭐지? 창문에, 창문에! -rand:6/6,6/6 -============================ -input: -DVST -output: -Insane : 암흑의 빅토리아 씬표(2) > 영매사를 중심으로 원탁을 에워싼 사람들이, 강령회를 하고 있다. 어둑한 방 안에 수상쩍은 엑토플라즘이 흐르기 시작한다. -rand:1/6,1/6 -============================ -input: -DVST -output: -Insane : 암흑의 빅토리아 씬표(12) > 조용한 호수 부근 풀숲에서는 야생의 토끼가 뛰어다니고 있다. -rand:6/6,6/6 -============================ -input: -DT -output: -Insane : 수식표(11) > 핼쑥한 -rand:1/6,1/6 -============================ -input: -DT -output: -Insane : 수식표(16) > 비정상적으로 증식하는 -rand:6/6,1/6 -============================ -input: -DT -output: -Insane : 수식표(66) > 무지개 빛으로 빛나는 -rand:6/6,6/6 -============================ -input: -BT -output: -Insane : 본체표(11) > 인간 -rand:1/6,1/6 -============================ -input: -BT -output: -Insane : 본체표(14) > 망령 -rand:4/6,1/6 -============================ -input: -BT -output: -Insane : 본체표(66) > 소인 -rand:6/6,6/6 -============================ -input: -PT -output: -Insane : 부위표(11) > 몸통 -rand:1/6,1/6 -============================ -input: -PT -output: -Insane : 부위표(25) > 꼬리 -rand:5/6,2/6 -============================ -input: -PT -output: -Insane : 부위표(66) > 내장 -rand:6/6,6/6 -============================ -input: -FT -output: -Insane : 감정표(1) > 공감(플러스)/불신(마이너스) -rand:1/6 -============================ -input: -FT -output: -Insane : 감정표(6) > 광신(플러스)/살의(마이너스) -rand:6/6 -============================ -input: -JT -output: -Insane : 직업표(11) > 고고학자≪정경≫≪고고학≫ -rand:1/6,1/6 -============================ -input: -JT -output: -Insane : 직업표(15) > 호사가≪예술≫≪인류학≫ -rand:5/6,1/6 -============================ -input: -JT -output: -Insane : 직업표(25) > 학생 지식분야와 감정분야에서 원하는 것을 하나씩 -rand:2/6,5/6 -============================ -input: -JT -output: -Insane : 직업표(66) > 경호원 폭략분야에서 원하는 것을 2개 -rand:6/6,6/6 -============================ -input: -BET -output: -Insane : 배드엔딩표(2) > 당신 주위에 칠흑의 어둠이, 이형의 앞다리가, 무수한 촉수가 모여든다. 새로운 동료를 축복하고 있는 것이다. 당신은 이제 괴이를 무서워하지 않는다. 왜냐하면, 당신 자신이 괴이가 되었기 떄문이다. 이후, 당신은 괴이 NPC로서 등장한다 -rand:1/6,1/6 -============================ -input: -BET -output: -Insane : 배드엔딩표(12) > 뒤를 돌아보자, 거기에는 압도적인 「그것」이 기다리고 있었다. 무자비한 일격이 당신을 덮치고, 당신은 사망한다. -rand:6/6,6/6 -============================ -input: -RTT -output: -Insane : 랜덤 특기 결정표(1,2) > 「폭력」≪소각≫ -rand:1/6,1/6,1/6 -============================ -input: -RTT -output: -Insane : 랜덤 특기 결정표(6,12) > 「괴이」≪우주≫ -rand:6/6,6/6,6/6 -============================ -input: -TVT -output: -Insane : 지정특기(폭력)표(2) > 소각 -rand:1/6,1/6 -============================ -input: -TVT -output: -Insane : 지정특기(폭력)표(12) > 매장 -rand:6/6,6/6 -============================ -input: -TET -output: -Insane : 지정특기(감정)표(2) > 연정 -rand:1/6,1/6 -============================ -input: -TET -output: -Insane : 지정특기(감정)표(12) > 사랑 -rand:6/6,6/6 -============================ -input: -TPT -output: -Insane : 지정특기(지각)표(2) > 아픔 -rand:1/6,1/6 -============================ -input: -TPT -output: -Insane : 지정특기(지각)표(12) > 그늘 -rand:6/6,6/6 -============================ -input: -TST -output: -Insane : 지정특기(기술)표(2) > 분해 -rand:1/6,1/6 -============================ -input: -TST -output: -Insane : 지정특기(기술)표(12) > 병기 -rand:6/6,6/6 -============================ -input: -TKT -output: -Insane : 지정특기(지식)표(2) > 물리학 -rand:1/6,1/6 -============================ -input: -TKT -output: -Insane : 지정특기(지식)표(12) > 천문학 -rand:6/6,6/6 -============================ -input: -TMT -output: -Insane : 지정특기(괴이)표(2) > 시간 -rand:1/6,1/6 -============================ -input: -TMT -output: -Insane : 지정특기(괴이)표(12) > 우주 -rand:6/6,6/6 -============================ -input: -CHT -output: -Insane : 회화 중에 발생하는 공포표(1) > 지정특기:죽음 -한창 대화중에, 당신은 문득, 상대의 어깨 너머로 시선을 향한다. 갑자기, 먼 건물의 옥상에서 여자가 뛰어내렸다. 소리 지를 틈도 없이, 그녀는 빨려 들어가듯 지면으로 내동댕이쳐진다. 거리가 있음에도 불구하고, 그녀와 눈이 마주치고 말았다. –-그 이후, 그녀의 얼굴이 뇌리에 박혀, 사라지지 않는다……. -rand:1/6 -============================ -input: -CHT -output: -Insane : 회화 중에 발생하는 공포표(6) > 지정특기:인류학 -대화 도중, 시야에 위화감을 느낀 당신은 눈을 깜빡였다. 상대의 얼굴이, 이상하게 되어 있었다. 잡아 늘여서, 휘저은 것처럼, 그로테스크하게 일그러져 있다. 엣? 하고 자세히 보지만 일그러짐은 변함없다. 상대는 전혀 눈치채지 못한 듯하다. 눈을 질끈 감았다가 다시 보자, 겨우 일그러짐이 사라졌다. 당신은 마음에 한가지 의심이 생겨난다. 눈 앞에 있는 상대는, 정말로 인간인걸까? -rand:6/6 -============================ -input: -VHT -output: -Insane : 거리에서 조우하는 공포표(1) > 지정특기:탈것 -끼이익--!! 거친 브레이크 소리, 그리고 둔탁한 소리. 깜짝 놀라 뒤를 돌아보자, 멈춰진 차와, 그 앞에 쓰러져있는 사람이 눈에 들어왔다. 교통사고다! 황급히 뛰어가서, 피해자의 얼굴을 본 순간, 당신은 그대로 얼어붙었다. 쓰러져 있는 사람은, 당신이었다. --엣?! 깜짝 놀라 눈을 깜빡이면, 길 위의 당신도, 차도, 사라졌다. -rand:1/6 -============================ -input: -VHT -output: -Insane : 거리에서 조우하는 공포표(6) > 지정특기:웃음 -역에 도착하니, 몹시 혼잡했다. 인신사고로 전차가 멈춰있는 듯하다. 재수 없으려니. 그렇게 생각하고 있으면, 개찰구 근처의 인파 속에서, 일본 옷을 입은 여성이 빠른 걸음으로 당신 쪽으로 다가왔다. 여성은 만면에 미소를 짓고 있었다. 혼잣말을 중얼거리는지, 입이 움직이고 있다. 스쳐지나갈 때에, 여성의 목소리가 귀에 들렸다. 「해버렸다. 해버렸다. 해버렸다. 꼴좋네。」 - 엣, 하며 돌아보는 당신을 남겨두고, 여성은 인파 속으로 사라져버렸다. -rand:6/6 -============================ -input: -IHT -output: -Insane : 갑자기 찾아오는 공포표(1) > 지정특기:놀람 -쿵쾅쿵쾅쿵쾅! 갑작스런 소리에, 당신은 깜짝 놀라 고개를 들고 올려다본다. 지붕 밑에 무언가가 돌아다니고 있는 것 같다. 동물이 들어온 걸까? 그렇다고 쳐도 커다란 소리다. --마치, 어린아이가 이리저리 뛰어 돌아다니는 듯한. 한 순간 소리가 멈췄다가, 이내 다시 들린다. 쿵! 쿵! 쿵! 쿵! 펄떡펄떡 뛰어오르는 듯한 소리가 나는 곳은, 정확히 당신의 바로 위였다……. -rand:1/6 -============================ -input: -IHT -output: -Insane : 갑자기 찾아오는 공포표(6) > 지정특기:지저 -낯익은 장소에서, 낯선 문을 발견했다. 열어보면, 긴 내리막계단이 어둠 속으로 뻗어 있다. 수상쩍게 생각해서 아래로 내려가보니…… 그 곳은 지하실이었다. 이런 장소가 있었던가. 한 손에 불빛을 들고 나아가보면 무언가 다가오는 기분이 든다. 어둠 속에서, 누군가가, 당신의 이름을 불렀다. -rand:6/6 -============================ -input: -RHT -output: -Insane : 폐허에서 조우하는 공포표(1) > 지정특기:암흑 -무겁고 튼튼해 보이는 문을 연다. 방 안은 새까맸다. 등불로 비춰보니, 다른 방으로 이어지는 길이 몇 갈래 발견되었다. 달리 눈에 띄는 것은 없는 듯 하다. 일단, 입구로 되돌아가려고, 들어왔던 문 쪽으로 돌아선다. 그 곳에는 벽 밖에 없었다. 그 중후한 문이 사라져있다. 그런 말도 안 되는 일이. 그러나, 몇 번이고 찾아봐도 어떤 벽에도 문 같은 것은 보이지 않는다. 할 수 없이, 통로를 나아가기로 했지만, 조금씩 불길한 기분이 엄습해 온다. ……그 문은, 열어서는 안됐던 것 아닐까? -rand:1/6 -============================ -input: -RHT -output: -Insane : 폐허에서 조우하는 공포표(6) > 지정특기:약품 -갑자기, 신나 냄새가 코를 찔렀다. 폐허의 벽에 끈적끈적하게, 붉은 페인트로 문자가 쓰여있다. 무엇이 쓰여있는지는 분명하지 않지만, 오로지 악의와 증오만을 칠해 넣은 듯한 터치에 두려움이 생긴다. 그러던 도중 어떤 사실을 눈치채고, 당신은 바짝 소름이 돋았다. 페인트가 아직 마르지 않았다. ……갓 칠한 것처럼 새로운 것이다. -rand:6/6 -============================ -input: -MHT -output: -Insane : 야외에서 조우하는 공포표(1) > 지정특기:아픔 -부우우우우우웅. 귓가에 새된 날개소리가 울려 퍼진다. 본 적 없는 새빨간 날벌레 무리가 날고 있었다. 부우우우우우웅. 날벌레를 쫓아내려고, 팔을 휘두른다. 아얏. 팔에 찌르는 듯한 통증이 일었다. 부우우우우우웅. 벌레들은, 어디론가로 가버린다. 순간 팔의 표면에 이상한 수포가 돋아나기 시작했다. -rand:1/6 -============================ -input: -MHT -output: -Insane : 야외에서 조우하는 공포표(6) > 지정특기:소각 -타닥……타닥……. 불이 타오르는 소리가 들린다. 공터에 모닥불이 불꽃을 튀기고 있었다. 곁에는 아무도 없다 따듯해진 기분으로 멈춰 서서, 나뭇가지로 모닥불을 휘젓고 있으니, 불 속에서 가벼운 웃음소리가 들렸다. 흠칫 놀란 당신의 발 밑을, 고양이처럼 커다란 무언가가 스르륵 빠져나갔다. 모닥불로 눈을 돌리면, 그 곳에는 단지 그을은 뼛조각만 남아있었다. -rand:6/6 -============================ -input: -LHT -output: -Insane : 정보 속에 숨어 있는 공포표(1) > 지정특기:맛 -목이 마른 것을 깨달았다. 조사를 시작하고 나서, 시간이 상당히 많이 흘렀다. 아무래도 너무 깊이 몰두하고 있었던 듯하다. 화면에 눈을 돌리면서, 페트병의 물을 입에 머금는다. 그러자, 입 속에 위화감이 퍼졌다. 참지 못하고 물을 토해낸다. 그러자, 새까만 액체가 책상 위의 자료를 더럽혔다. 입 속에는, 구정물 같은 냄새가 떠나지 않는다. 확인해본 페트병의 물은 투명했는데……? -rand:1/6 -============================ -input: -LHT -output: -Insane : 정보 속에 숨어 있는 공포표(6) > 지정특기:역사 -표지가 없는 보고서를 발견했다. 팔락팔락 넘겨보면, 지금 막 당신이 조사하고 있는 사건에 대한 조사보고서였다. 안타깝게도, 여기저기 먹칠이 되어있어, 가장 중요한 부분은 알 수 없다. 보아하니, 아무래도, 군에 의한 조사인 듯하다. 군? 어째서 군대가 이 사건을 조사하고 있었던 거지? -rand:6/6 -============================ -input: -2d6>=5 -output: -Insane : (2D6>=5) > 2[1,1] > 2 > 펌블(판정실패。 덱에서 【광기】를 1장 획득) -rand:1/6,1/6 -============================ -input: -2d6>=5 -output: -Insane : (2D6>=5) > 12[6,6] > 12 > 스페셜(판정성공。 【생명력】 1점이나 【정신력】 1점 회복) -rand:6/6,6/6 -============================ -input: -2d6>=5 -output: -Insane : (2D6>=5) > 4[1,3] > 4 > 실패 -rand:1/6,3/6 -============================ -input: -2d6>=5 -output: -Insane : (2D6>=5) > 5[1,4] > 5 > 성공 -rand:4/6,1/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -Insane : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/IthaWenUa.txt b/src/src_bcdice/test/data/IthaWenUa.txt deleted file mode 100644 index 7b69853b7..000000000 --- a/src/src_bcdice/test/data/IthaWenUa.txt +++ /dev/null @@ -1,41 +0,0 @@ -input: -1D100<=50 成功 -output: -IthaWenUa : (1D100<=50) > 50 > 成功 -rand:50/100 -============================ -input: -1D100<=50 失敗 -output: -IthaWenUa : (1D100<=50) > 51 > 失敗 -rand:51/100 -============================ -input: -1D100<=99 成功 -output: -IthaWenUa : (1D100<=99) > 99 > 成功 -rand:99/100 -============================ -input: -1D100<=1 クリティカル -output: -IthaWenUa : (1D100<=1) > 1 > 01 > クリティカル -rand:1/100 -============================ -input: -1D100<=100 ファンブル -output: -IthaWenUa : (1D100<=100) > 100 > 00 > ファンブル -rand:100/100 -============================ -input: -S1D100<=70 -output: -IthaWenUa : (1D100<=70) > 1 > 01 > クリティカル###secret dice### -rand:1/100 -============================ -input: -1D100>=? 目標値?でバグらない -output: -IthaWenUa : (1D100>=?) > 42 > 失敗 -rand:42/100 diff --git a/src/src_bcdice/test/data/JamesBond.txt b/src/src_bcdice/test/data/JamesBond.txt deleted file mode 100644 index ba6be5963..000000000 --- a/src/src_bcdice/test/data/JamesBond.txt +++ /dev/null @@ -1,101 +0,0 @@ -input: -1D100<=50 -output: -JamesBond : (1D100<=50) > 51 > 失敗 -rand:51/100 -============================ -input: -1D100<=50 -output: -JamesBond : (1D100<=50) > 50 > 効果4(まあまあ) -rand:50/100 -============================ -input: -1D100<=50 -output: -JamesBond : (1D100<=50) > 26 > 効果4(まあまあ) -rand:26/100 -============================ -input: -1D100<=50 -output: -JamesBond : (1D100<=50) > 25 > 効果3(良) -rand:25/100 -============================ -input: -1D100<=50 -output: -JamesBond : (1D100<=50) > 11 > 効果3(良) -rand:11/100 -============================ -input: -1D100<=50 -output: -JamesBond : (1D100<=50) > 10 > 効果2(かなり良い) -rand:10/100 -============================ -input: -1D100<=50 -output: -JamesBond : (1D100<=50) > 6 > 効果2(かなり良い) -rand:6/100 -============================ -input: -1D100<=50 -output: -JamesBond : (1D100<=50) > 5 > 効果1(完璧) -rand:5/100 -============================ -input: -1D100<=50 -output: -JamesBond : (1D100<=50) > 1 > 効果1(完璧) -rand:1/100 -============================ -input: -1D100<=101 -output: -JamesBond : (1D100<=101) > 99 > 効果4(まあまあ) -rand:99/100 -============================ -input: -1D100<=101 -output: -JamesBond : (1D100<=101) > 100 > 失敗 -rand:100/100 -============================ -input: -1D100<=30 -output: -JamesBond : (1D100<=30) > 3 > 効果1(完璧) -rand:3/100 -============================ -input: -1D100<=30 -output: -JamesBond : (1D100<=30) > 4 > 効果2(かなり良い) -rand:4/100 -============================ -input: -1D100<=31 -output: -JamesBond : (1D100<=31) > 3 > 効果1(完璧) -rand:3/100 -============================ -input: -1D100<=31 -output: -JamesBond : (1D100<=31) > 4 > 効果1(完璧) -rand:4/100 -============================ -input: -1D100<=31 -output: -JamesBond : (1D100<=31) > 5 > 効果2(かなり良い) -rand:5/100 -============================ -input: -1D100>=? 目標値?でバグらない -output: -JamesBond : (1D100>=?) > 42 > 失敗 -rand:42/100 diff --git a/src/src_bcdice/test/data/Kamigakari.txt b/src/src_bcdice/test/data/Kamigakari.txt deleted file mode 100644 index 307e5b924..000000000 --- a/src/src_bcdice/test/data/Kamigakari.txt +++ /dev/null @@ -1,139 +0,0 @@ -input: -RT -output: -Kamigakari : 霊紋消費の代償表(1):邪神化:物理法則を超過しすぎた代償として、霊魂そのものが歪み、PCは即座にアラミタマへと変貌する。アラミタマ化したPCは、いずこかへと消え去る。 -rand:1/6 -============================ -input: -RT -output: -Kamigakari : 霊紋消費の代償表(6):影響なし:奇跡的に、霊魂の摩耗による悪影響を完全に退け、さらに霊紋の回復も早期を見込める。肉体や精神にも、特に影響はない。 -rand:6/6 -============================ -input: -MT -output: -Kamigakari : 獲得素材チャート(11,1,11,1):真紅の断片。よく見つかる素材:体力+1:500G(効果値:1) -rand:1/6,1/6,1/6,1/6,1/6,1/6 -============================ -input: -MT -output: -Kamigakari : 獲得素材チャート(66,6,6):羽根状の断片。珍しい素材:※GMの任意 -rand:6/6,6/6,6/6,6/6 -============================ -input: -MT -output: -Kamigakari : 獲得素材チャート(53,2,12,1):土の断片。よく見つかる素材:体力+1:500G(効果値:1) -rand:5/6,3/6,2/6,1/6,2/6,1/6 -============================ -input: -MT -output: -Kamigakari : 獲得素材チャート(56,3,35,5):刻印の断片。よく見つかる素材:物D+2:1000G(効果値:2) -rand:5/6,6/6,3/6,3/6,5/6,5/6 -============================ -input: -MT -output: -Kamigakari : 獲得素材チャート(63,5,64):石状の断片。よく見つかる素材:※PCの任意 -rand:6/6,3/6,5/6,6/6,4/6 -============================ -input: -MT -output: -Kamigakari : 獲得素材チャート(63,1,13,5):石状の断片。よく見つかる素材:体力+2:1000G(効果値:2) -rand:6/6,3/6,1/6,1/6,3/6,5/6 -============================ -input: -MT1 -output: -Kamigakari : 獲得素材チャート(63,1,13,5):石状の断片。よく見つかる素材:体力+2:1000G(効果値:2) -rand:6/6,3/6,1/6,1/6,3/6,5/6 -============================ -input: -MT4 -output: -Kamigakari : 獲得素材チャート(63,1,13,5):石状の断片。よく見つかる素材:体力+2:1000G(効果値:2) -rand:6/6,3/6,1/6,1/6,3/6,5/6 -============================ -input: -MT5 -output: -Kamigakari : 獲得素材チャート(63,1,13,5):石状の断片。よく見つかる素材:体力+3:1500G(効果値:3) -rand:6/6,3/6,1/6,1/6,3/6,5/6 -============================ -input: -MT8 -output: -Kamigakari : 獲得素材チャート(63,1,13,5):石状の断片。よく見つかる素材:体力+3:1500G(効果値:3) -rand:6/6,3/6,1/6,1/6,3/6,5/6 -============================ -input: -MT9 -output: -Kamigakari : 獲得素材チャート(63,1,13,5):石状の断片。よく見つかる素材:体力+4:2000G(効果値:4) -rand:6/6,3/6,1/6,1/6,3/6,5/6 -============================ -input: -MT100 -output: -Kamigakari : 獲得素材チャート(63,1,13,5):石状の断片。よく見つかる素材:体力+4:2000G(効果値:4) -rand:6/6,3/6,1/6,1/6,3/6,5/6 -============================ -input: -MT -output: -Kamigakari : 獲得素材チャート(63,6,1,16):石状の断片。珍しい素材:[火炎]付与:1500G(効果値:3) -rand:6/6,3/6,6/6,1/6,1/6,6/6 -============================ -input: -MT -output: -Kamigakari : 獲得素材チャート(63,6,3,21):石状の断片。珍しい素材:[火炎]付与:1500G(効果値:3) -rand:6/6,3/6,6/6,3/6,2/6,1/6 -============================ -input: -MT -output: -Kamigakari : 獲得素材チャート(63,6,4,22):石状の断片。珍しい素材:[冷気]半減:2000G(効果値:4) -rand:6/6,3/6,6/6,4/6,2/6,2/6 -============================ -input: -MT9 -output: -Kamigakari : 獲得素材チャート(63,6,4,22):石状の断片。珍しい素材:[冷気]半減:2000G(効果値:4) -rand:6/6,3/6,6/6,4/6,2/6,2/6 -============================ -input: -MT1000 -output: -Kamigakari : 獲得素材チャート(14,2,16,4):鋭い断片。よく見つかる素材:敏捷+3:1500G(効果値:3) -rand:1/6,4/6,2/6,1/6,6/6,4/6 -============================ -input: -KT -output: -Kamigakari : 魔境臨界表(14[1,4]) > 強敵登場 -突如、<崇り神>化した[モノノケ]が出撃する。GMは、PCの[世界干渉LV]の平均+3の[LV]を持つ任意の[モノノケ]を1体選び任意の[探索エリア]に配置。そこでは[迂回]不可で[戦闘]が発生する。 -rand:1/6,4/6 -============================ -input: -NT -output: -Kamigakari : 伝奇名字・名前決定表(14[1,4]) > 竹内(たけのうち) 真/遥 -rand:1/6,4/6 -============================ -input: -ET -output: -Kamigakari : 感情表(14[1,4]) > 家族/そのキャラクターに、家族のような親近感をいだいている。 -rand:1/6,4/6 -============================ -input: -ET -output: -Kamigakari : 感情表(66[6,6]) > *PCの任意/プレイヤー、またはGMが設定した任意の感情をいだいている。 -rand:6/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/Kamigakari_Korean.txt b/src/src_bcdice/test/data/Kamigakari_Korean.txt deleted file mode 100644 index 2ff834001..000000000 --- a/src/src_bcdice/test/data/Kamigakari_Korean.txt +++ /dev/null @@ -1,139 +0,0 @@ -input: -RT -output: -Kamigakari : 영문소비의 댓가표(1):사신화:물리법칙을 너무 초월한 대가로, 영혼이 왜곡되어, PC는 즉시 아라미타마로 변모한다. 아라미타마화한 PC는, 어딘가로 떠나간다. -rand:1/6 -============================ -input: -RT -output: -Kamigakari : 영문소비의 댓가표(6):영향없음:기적적으로, 영혼의 마모에 의한 악영향을 완전히 피하고, 또한 영문의 회복도 빠를 것으로 보인다. 육체나 정신 모두, 딱히 영향은 없다. -rand:6/6 -============================ -input: -MT -output: -Kamigakari : 획득 소재 차트(11,1,11,1):진홍의 단편.자주 발견되는 소재:체력+1:500G(효과치:1) -rand:1/6,1/6,1/6,1/6,1/6,1/6 -============================ -input: -MT -output: -Kamigakari : 획득 소재 차트(66,6,6):깃털형태의 단편.드문 소재:※GM의 임의 -rand:6/6,6/6,6/6,6/6 -============================ -input: -MT -output: -Kamigakari : 획득 소재 차트(53,2,12,1):흙의 단편.자주 발견되는 소재:체력+1:500G(효과치:1) -rand:5/6,3/6,2/6,1/6,2/6,1/6 -============================ -input: -MT -output: -Kamigakari : 획득 소재 차트(56,3,35,5):봉인의 단편.자주 발견되는 소재:물D+2:1000G(효과치:2) -rand:5/6,6/6,3/6,3/6,5/6,5/6 -============================ -input: -MT -output: -Kamigakari : 획득 소재 차트(63,5,64):돌형태의 단편.자주 발견되는 소재:※PC의 임의 -rand:6/6,3/6,5/6,6/6,4/6 -============================ -input: -MT -output: -Kamigakari : 획득 소재 차트(63,1,13,5):돌형태의 단편.자주 발견되는 소재:체력+2:1000G(효과치:2) -rand:6/6,3/6,1/6,1/6,3/6,5/6 -============================ -input: -MT1 -output: -Kamigakari : 획득 소재 차트(63,1,13,5):돌형태의 단편.자주 발견되는 소재:체력+2:1000G(효과치:2) -rand:6/6,3/6,1/6,1/6,3/6,5/6 -============================ -input: -MT4 -output: -Kamigakari : 획득 소재 차트(63,1,13,5):돌형태의 단편.자주 발견되는 소재:체력+2:1000G(효과치:2) -rand:6/6,3/6,1/6,1/6,3/6,5/6 -============================ -input: -MT5 -output: -Kamigakari : 획득 소재 차트(63,1,13,5):돌형태의 단편.자주 발견되는 소재:체력+3:1500G(효과치:3) -rand:6/6,3/6,1/6,1/6,3/6,5/6 -============================ -input: -MT8 -output: -Kamigakari : 획득 소재 차트(63,1,13,5):돌형태의 단편.자주 발견되는 소재:체력+3:1500G(효과치:3) -rand:6/6,3/6,1/6,1/6,3/6,5/6 -============================ -input: -MT9 -output: -Kamigakari : 획득 소재 차트(63,1,13,5):돌형태의 단편.자주 발견되는 소재:체력+4:2000G(효과치:4) -rand:6/6,3/6,1/6,1/6,3/6,5/6 -============================ -input: -MT100 -output: -Kamigakari : 획득 소재 차트(63,1,13,5):돌형태의 단편.자주 발견되는 소재:체력+4:2000G(효과치:4) -rand:6/6,3/6,1/6,1/6,3/6,5/6 -============================ -input: -MT -output: -Kamigakari : 획득 소재 차트(63,6,1,16):돌형태의 단편.드문 소재:[화염]부여:1500G(효과치:3) -rand:6/6,3/6,6/6,1/6,1/6,6/6 -============================ -input: -MT -output: -Kamigakari : 획득 소재 차트(63,6,3,21):돌형태의 단편.드문 소재:[화염]부여:1500G(효과치:3) -rand:6/6,3/6,6/6,3/6,2/6,1/6 -============================ -input: -MT -output: -Kamigakari : 획득 소재 차트(63,6,4,22):돌형태의 단편.드문 소재:[냉기]반감:2000G(효과치:4) -rand:6/6,3/6,6/6,4/6,2/6,2/6 -============================ -input: -MT9 -output: -Kamigakari : 획득 소재 차트(63,6,4,22):돌형태의 단편.드문 소재:[냉기]반감:2000G(효과치:4) -rand:6/6,3/6,6/6,4/6,2/6,2/6 -============================ -input: -MT1000 -output: -Kamigakari : 획득 소재 차트(14,2,16,4):예리한 단편.자주 발견되는 소재:민첩+3:1500G(효과치:3) -rand:1/6,4/6,2/6,1/6,6/6,4/6 -============================ -input: -KT -output: -Kamigakari : 마경임계표(14):강적등장 -갑자기, 〈재앙신〉화한 [모노노케]가 출현한다. GM은 PC의 [세계간섭LV]의 평균+3의 [LV]을 가진 임의의 [모노노케]를 1체 골라, 임의의 [탐색 에리어]에 배치. 거기서는 [우회]불가로 [전투]가 발생한다. -rand:1/6,4/6 -============================ -input: -NT -output: -Kamigakari : 전기 성씨・이름 결정표(14):타케노우치(竹内) 마코토/하루카 -rand:1/6,4/6 -============================ -input: -ET -output: -Kamigakari : 감정표(14):가족/그 캐릭터에게, 가족같은 친근감을 품고 있다. -rand:1/6,4/6 -============================ -input: -ET -output: -Kamigakari : 감정표(66):*PC의 임의/플레이어, 또는 GM이 설정한 임의의 감정을 품고 있다. -rand:6/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/KanColle.txt b/src/src_bcdice/test/data/KanColle.txt deleted file mode 100644 index afc953067..000000000 --- a/src/src_bcdice/test/data/KanColle.txt +++ /dev/null @@ -1,432 +0,0 @@ -input: -2d6 -output: -KanColle : (2D6) > 2[1,1] > 2 -rand:1/6,1/6 -============================ -input: -2d6 -output: -KanColle : (2D6) > 10[5,5] > 10 -rand:5/6,5/6 -============================ -input: -2d6 -output: -KanColle : (2D6) > 12[6,6] > 12 -rand:6/6,6/6 -============================ -input: -2d6>=7 判定:成功 -output: -KanColle : (2D6>=7) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2d6>=7 判定:失敗 -output: -KanColle : (2D6>=7) > 5[2,3] > 5 > 失敗 -rand:2/6,3/6 -============================ -input: -2d6>=7 判定:スペシャル -output: -KanColle : (2D6>=7) > 12[6,6] > 12 > スペシャル(判定成功。【行動力】が1D6点回復) -rand:6/6,6/6 -============================ -input: -2d6>=7 判定:ファンブル -output: -KanColle : (2D6>=7) > 2[1,1] > 2 > ファンブル(判定失敗。アクシデント表を自分のPCに適用) -rand:1/6,1/6 -============================ -input: -2d6+2>=7 修正付判定:成功 -output: -KanColle : (2D6+2>=7) > 5[2,3]+2 > 7 > 成功 -rand:2/6,3/6 -============================ -input: -2d6+2>=7 修正付判定:失敗 -output: -KanColle : (2D6+2>=7) > 4[2,2]+2 > 6 > 失敗 -rand:2/6,2/6 -============================ -input: -2d6+2>=7 修正付判定:スペシャル -output: -KanColle : (2D6+2>=7) > 12[6,6]+2 > 14 > スペシャル(判定成功。【行動力】が1D6点回復) -rand:6/6,6/6 -============================ -input: -2d6+2>=7 修正付判定:ファンブル -output: -KanColle : (2D6+2>=7) > 2[1,1]+2 > 4 > ファンブル(判定失敗。アクシデント表を自分のPCに適用) -rand:1/6,1/6 -============================ -input: -2d6+2>=7 修正付判定:天龍ちゃんスペシャル(手動) -output: -KanColle : (2D6+2>=7) > 10[5,5]+2 > 12 > 成功 -rand:5/6,5/6 -============================ -input: -2D6-10>=5 -output: -KanColle : (2D6-10>=5) > 3[1,2]-10 > -7 > 失敗 -rand:1/6,2/6 -============================ -input: -d66 -output: -KanColle : (D66) > 16 -rand:1/6,6/6 -============================ -input: -d66 -output: -KanColle : (D66) > 16 -rand:6/6,1/6 -============================ -input: -WPFA -output: -KanColle : 艦載機開発表(燃料3/弾薬6/鋼材3/ボーキ6)(4) > 開発失敗!(資材だけ失う) -rand:1/6,1/6,1/6,1/6 -============================ -input: -WPFA -output: -KanColle : 艦載機開発表(燃料3/弾薬6/鋼材3/ボーキ6)(24) > 零式水上観測機(建造壱p168) -rand:6/6,6/6,6/6,6/6 -============================ -input: -WPMC -output: -KanColle : 特殊開発表(燃料6/弾薬3/鋼材6/ボーキ3)(2) > 開発失敗!(資材だけ失う) -rand:1/6,1/6 -============================ -input: -WPMC -output: -KanColle : 特殊開発表(燃料6/弾薬3/鋼材6/ボーキ3)(12) > 増設バルジ(中型艦)(建造壱p169) -rand:6/6,6/6 -============================ -input: -WPCN -output: -KanColle : 砲開発表(燃料3/弾薬6/鋼材6/ボーキ3)(4) > 開発失敗!(資材だけ失う) -rand:1/6,1/6,1/6,1/6 -============================ -input: -WPCN -output: -KanColle : 砲開発表(燃料3/弾薬6/鋼材6/ボーキ3)(24) > 九一式徹甲弾(建造壱p169) -rand:6/6,6/6,6/6,6/6 -============================ -input: -BT2 -output: -KanColle : 指定個性②(6) > 6-2 《電子戦》 -rand:6/6 -============================ -input: -BT9 -output: -KanColle : 指定個性⑨(6) > 6-9 《支援》 -rand:6/6 -============================ -input: -BT10 -output: -KanColle : 指定個性⑩(6) > 6-10 《魚雷》 -rand:6/6 -============================ -input: -BT11 -output: -KanColle : 指定個性⑪(6) > 6-11 《対潜戦闘》 -rand:6/6 -============================ -input: -BT12 -output: -KanColle : 指定個性⑫(6) > 6-12 《夜戦》 -rand:6/6 -============================ -input: -BT3 -output: -KanColle : 指定個性③(6) > 6-3 《航空打撃戦》 -rand:6/6 -============================ -input: -BT4 -output: -KanColle : 指定個性④(6) > 6-4 《航空戦》 -rand:6/6 -============================ -input: -BT5 -output: -KanColle : 指定個性⑤(6) > 6-5 《対空戦闘》 -rand:6/6 -============================ -input: -BT6 -output: -KanColle : 指定個性⑥(6) > 6-6 《突撃》 -rand:6/6 -============================ -input: -BT7 -output: -KanColle : 指定個性⑦(6) > 6-7 《砲撃》 -rand:6/6 -============================ -input: -BT8 -output: -KanColle : 指定個性⑧(6) > 6-8 《退却》 -rand:6/6 -============================ -input: -ETIT -output: -KanColle : 侵攻効果表(12) > 基地建設 -深海棲艦は自分たちの基地を建造した。そのセッションの決戦フェイズで、深海棲艦の旗艦は、開幕雷撃戦と雷撃戦でダメージを受けなくなる。 -rand:6/6,6/6 -============================ -input: -LFDT -output: -KanColle : 艦隊敗北表(6) > 盟友艦轟沈。盟友艦は失われ「暴走表」を一回振り、暴走する。 -rand:6/6 -============================ -input: -LFVT -output: -KanColle : 艦隊勝利表(6) > 絆が深まる。その盟友艦からのPCへの【感情値】が1点上昇する。 -rand:6/6 -============================ -input: -LSFT -output: -KanColle : 大規模部隊表(6) > 主力部隊 「脅威力:12」 -rand:6/6 -============================ -input: -WPMCN -output: -KanColle : 新特殊開発表(燃料6/弾薬3/鋼材6/ボーキ3)(12) > 増設バルジ(中型艦)(建造壱p169) -rand:6/6,6/6 -============================ -input: -EVNT -output: -KanColle : 日常イベント表(12) > マイブーム:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《口ぐせ/背景6》で判定。(着任p220) -rand:6/6,6/6 -============================ -input: -EVKT -output: -KanColle : 交流イベント表(12) > 昔語り:自分以外の好きなPC1人を選んで、提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《暗い過去/背景4》で判定。(着任p221) -rand:6/6,6/6 -============================ -input: -EVAT -output: -KanColle : 遊びイベント表(12) > ちゃんと面倒みるから!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《生き物/趣味4》で判定。(着任p222) -rand:6/6,6/6 -============================ -input: -EVET -output: -KanColle : 演習イベント表(12) > 防空射撃演習:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《対空戦闘/戦闘5》で判定。(着任p223) -rand:6/6,6/6 -============================ -input: -EVENT -output: -KanColle : 遠征イベント表(12) > 大規模遠征作戦、発令!:提督の選んだ(キーワード)に対応した指定能力値で判定。思いつかな場合は《指揮/航海10》で判定。(着任p224) -rand:6/6,6/6 -============================ -input: -EVST -output: -KanColle : 作戦イベント表(12) > 知彼知己者、百戦不殆:《読書/趣味5》で判定。(着任p225) -rand:6/6,6/6 -============================ -input: -ETHT -output: -KanColle : ほのぼのイベント表(12) > 思い立ったが吉日:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《恋愛/趣味12》で判定。(建造弐p134) -rand:6/6,6/6 -============================ -input: -ETVT -output: -KanColle : 航海イベント表(12) > 味の探求:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《読書/趣味5》で判定。(建造弐p135) -rand:6/6,6/6 -============================ -input: -ETGT -output: -KanColle : 外出イベント表(12) > 映画撮影:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《芸能/趣味9》で判定。(建造弐p136) -rand:6/6,6/6 -============================ -input: -ETBT -output: -KanColle : 激戦イベント表(12) > 極限の集中:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《ばか/魅力8》で判定。(建造弐p137) -rand:6/6,6/6 -============================ -input: -ETMT -output: -KanColle : 任務イベント表(12) > ストライキ:《おおらか/性格3》で判定。(建造弐p138) -rand:6/6,6/6 -============================ -input: -ETFT -output: -KanColle : 恐怖イベント表(12) > 死者の声:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《けなげ/魅力6》で判定。(建造弐p139) -rand:6/6,6/6 -============================ -input: -DVT -output: -KanColle : 開発表(6) > 装備4種表(WP4T) -rand:6/6 -============================ -input: -DVTM -output: -KanColle : 開発表(一括)(6,6) > 装備4種表:改良型艦本式タービン(P252) -rand:6/6,6/6 -============================ -input: -WP1T -output: -KanColle : 装備1種表(6) > 魚雷(P252) -rand:6/6 -============================ -input: -WP2T -output: -KanColle : 装備2種表(6) > 機銃(P252) -rand:6/6 -============================ -input: -WP3T -output: -KanColle : 装備3種表(6) > 25mm連装機銃(P252) -rand:6/6 -============================ -input: -WP4T -output: -KanColle : 装備4種表(6) > 改良型艦本式タービン(P252) -rand:6/6 -============================ -input: -ITT -output: -KanColle : アイテム表(6) > 思い出の品(P241) -rand:6/6 -============================ -input: -MHT -output: -KanColle : 目標表(6) > 敵艦の中から完全にランダムに決定 -rand:6/6 -============================ -input: -SNT -output: -KanColle : 戦果表(6) > 感情値/各自好きなキャラクターへの【感情値】+1 -rand:6/6 -============================ -input: -SPSNT -output: -KanColle : 特殊戦果表(6) > 新特殊開発表を使用する(資材は消費しない) -rand:6/6 -============================ -input: -KTM -output: -KanColle : 個性:一括(6,12) > 《夜戦/戦闘12》 -rand:6/6,6/6,6/6 -============================ -input: -BT -output: -KanColle : 個性:分野表(6) > 戦闘 -rand:6/6, -============================ -input: -KHT -output: -KanColle : 個性:背景表(12) > 外国暮らし -rand:6/6,6/6 -============================ -input: -KMT -output: -KanColle : 個性:魅力表(12) > 派手 -rand:6/6,6/6 -============================ -input: -KST -output: -KanColle : 個性:性格表(12) > 大胆 -rand:6/6,6/6 -============================ -input: -KSYT -output: -KanColle : 個性:趣味表(12) > 恋愛 -rand:6/6,6/6 -============================ -input: -KKT -output: -KanColle : 個性:航海表(12) > 整備 -rand:6/6,6/6 -============================ -input: -KSNT -output: -KanColle : 個性:戦闘表(12) > 夜戦 -rand:6/6,6/6 -============================ -input: -SNZ -output: -KanColle : 戦場表(6) > 悪海象(あくかいしょう)(P231) -rand:6/6 -============================ -input: -RNT -output: -KanColle : 暴走表(6) > 絶望(建造弐p164) -rand:6/6 -============================ -input: -WPFA -output: -KanColle : 艦載機開発表(燃料3/弾薬6/鋼材3/ボーキ6)(24) > 零式水上観測機(建造壱p168) -rand:6/6,6/6,6/6,6/6 -============================ -input: -WPCN -output: -KanColle : 砲開発表(燃料3/弾薬6/鋼材6/ボーキ3)(24) > 九一式徹甲弾(建造壱p169) -rand:6/6,6/6,6/6,6/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -KanColle : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/KemonoNoMori.txt b/src/src_bcdice/test/data/KemonoNoMori.txt deleted file mode 100644 index 982465174..000000000 --- a/src/src_bcdice/test/data/KemonoNoMori.txt +++ /dev/null @@ -1,372 +0,0 @@ -input: -KA9 -output: -KemonoNoMori : (1D12<=9) > 1 > 成功(成功度+1) -rand:1/12 -============================ -input: -KA8+1 -output: -KemonoNoMori : (1D12<=9) > 9 > 成功(成功度+1) -rand:9/12 -============================ -input: -ka10 -output: -KemonoNoMori : (1D12<=10) > 9 > 成功(成功度+2) -rand:9/12 -============================ -input: -KA18+2-1 -output: -KemonoNoMori : (1D12<=19) > 9 > 成功(成功度+2) -rand:9/12 -============================ -input: -KA20 -output: -KemonoNoMori : (1D12<=20) > 9 > 成功(成功度+3) -rand:9/12 -============================ -input: -KA9 -output: -KemonoNoMori : (1D12<=9) > 10 > 失敗 -rand:10/12 -============================ -input: -kA9 -output: -KemonoNoMori : (1D12<=9) > 11 > 大成功(成功度+1, 次の継続判定の目標値を10に変更) -rand:11/12 -============================ -input: -ka10 -output: -KemonoNoMori : (1D12<=10) > 11 > 大成功(成功度+2, 次の継続判定の目標値を10に変更) -rand:11/12 -============================ -input: -KA19 -output: -KemonoNoMori : (1D12<=19) > 11 > 大成功(成功度+2, 次の継続判定の目標値を10に変更) -rand:11/12 -============================ -input: -SKa20 -output: -KemonoNoMori : (1D12<=20) > 11 > 大成功(成功度+3, 次の継続判定の目標値を10に変更)###secret dice### -rand:11/12 -============================ -input: -KA12 -output: -KemonoNoMori : (1D12<=12) > 12 > 大失敗 -rand:12/12 -============================ -input: -KC9 -output: -KemonoNoMori : (1D12<=9) > 1 > 成功(成功度+1) -rand:1/12 -============================ -input: -SKC8+1 -output: -KemonoNoMori : (1D12<=9) > 9 > 成功(成功度+1)###secret dice### -rand:9/12 -============================ -input: -kc10 -output: -KemonoNoMori : (1D12<=10) > 9 > 成功(成功度+1) -rand:9/12 -============================ -input: -KC18-1+2 -output: -KemonoNoMori : (1D12<=19) > 9 > 成功(成功度+1) -rand:9/12 -============================ -input: -skc17+1+1+1 -output: -KemonoNoMori : (1D12<=20) > 9 > 成功(成功度+1)###secret dice### -rand:9/12 -============================ -input: -kC9 -output: -KemonoNoMori : (1D12<=9) > 10 > 失敗 -rand:10/12 -============================ -input: -KC10 -output: -KemonoNoMori : (1D12<=10) > 11 > 大成功(成功度+1, 次の継続判定の目標値を10に変更) -rand:11/12 -============================ -input: -Kc20 -output: -KemonoNoMori : (1D12<=20) > 11 > 大成功(成功度+1, 次の継続判定の目標値を10に変更) -rand:11/12 -============================ -input: -Skc12 -output: -KemonoNoMori : (1D12<=12) > 12 > 大失敗###secret dice### -rand:12/12 -============================ -input: -CTR -output: -KemonoNoMori : 罠動作チェック(1D12) > 1 > 罠は動作していなかった -rand:1/12 -============================ -input: -ctr -output: -KemonoNoMori : 罠動作チェック(1D12) > 11 > 罠は動作していなかった -rand:11/12 -============================ -input: -SCTR -output: -KemonoNoMori : 罠動作チェック(1D12) > 5 > 罠は動作していなかった###secret dice### -rand:5/12 -============================ -input: -CTR -output: -KemonoNoMori : 罠動作チェック(1D12) > 12 > 罠が動作していた! > 獲物表(1) > 小型動物が罠にかかっていた -rand:12/12,1/12 -============================ -input: -ctr -output: -KemonoNoMori : 罠動作チェック(1D12) > 12 > 罠が動作していた! > 獲物表(12) > 人間の放浪者が罠にかかっていた -rand:12/12,12/12 -============================ -input: -sctr -output: -KemonoNoMori : 罠動作チェック(1D12) > 12 > 罠が動作していた! > 獲物表(5) > 大型動物が罠にかかっていた###secret dice### -rand:12/12,5/12 -============================ -input: -FT -output: -KemonoNoMori : 大失敗表(9) > ランダム天気表を使用し、結果をターンの終了まで適用する -rand:9/12 -============================ -input: -ft -output: -KemonoNoMori : 大失敗表(12) > 準備している武器が破壊される -rand:12/12 -============================ -input: -sFT -output: -KemonoNoMori : 大失敗表(6) > ランダムな荷物1個が破壊される###secret dice### -rand:6/12 -============================ -input: -RST -output: -KemonoNoMori : 能力値ランダム決定表(1) > 【移動】 -rand:1/12 -============================ -input: -rst -output: -KemonoNoMori : 能力値ランダム決定表(10) > 【察知】 -rand:10/12 -============================ -input: -SRST -output: -KemonoNoMori : 能力値ランダム決定表(12) > 【自制】###secret dice### -rand:12/12 -============================ -input: -RTT -output: -KemonoNoMori : ランダム所要時間表(1) > 2 -rand:1/12 -============================ -input: -rtt -output: -KemonoNoMori : ランダム所要時間表(12) > 5 -rand:12/12 -============================ -input: -SrTt -output: -KemonoNoMori : ランダム所要時間表(4) > 3###secret dice### -rand:4/12 -============================ -input: -RET -output: -KemonoNoMori : ランダム消耗表(1) > 0 -rand:1/12 -============================ -input: -ret -output: -KemonoNoMori : ランダム消耗表(12) > 4 -rand:12/12 -============================ -input: -SRET -output: -KemonoNoMori : ランダム消耗表(9) > 2###secret dice### -rand:9/12 -============================ -input: -RWT -output: -KemonoNoMori : ランダム天気表(1) > 濃霧 -rand:1/12 -============================ -input: -rwt -output: -KemonoNoMori : ランダム天気表(12) > 極寒 -rand:12/12 -============================ -input: -srwt -output: -KemonoNoMori : ランダム天気表(3) > 大雨###secret dice### -rand:3/12 -============================ -input: -RWDT -output: -KemonoNoMori : ランダム天気持続表(1) > 1ターン -rand:1/12 -============================ -input: -rwdt -output: -KemonoNoMori : ランダム天気持続表(12) > 156ターン -rand:12/12 -============================ -input: -SRWDT -output: -KemonoNoMori : ランダム天気持続表(5) > 6ターン###secret dice### -rand:5/12 -============================ -input: -ROMT -output: -KemonoNoMori : ランダム遮蔽物表(屋外)(5) > 【木】耐久度5,軽減値2,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-1の修正を付加 -rand:5/12 -============================ -input: -romt -output: -KemonoNoMori : ランダム遮蔽物表(屋外)(12) > 【岩壁】耐久度8,軽減値4,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-2の修正を付加/コンタクト内で行われる格闘攻撃のダメージ+2 -rand:12/12 -============================ -input: -sromt -output: -KemonoNoMori : ランダム遮蔽物表(屋外)(8) > 【大木】耐久度7,軽減値3,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-2の修正を付加###secret dice### -rand:8/12 -============================ -input: -RIMT -output: -KemonoNoMori : ランダム遮蔽物表(屋内)(1) > 【木材の壁】耐久度4,軽減値2,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-1の修正を付加 -rand:1/12 -============================ -input: -rimt -output: -KemonoNoMori : ランダム遮蔽物表(屋内)(12) > 【木製家具】耐久度3,軽減値2,特殊効果:コンタクト内で行われる格闘攻撃のダメージ+1 -rand:12/12 -============================ -input: -SRIMT -output: -KemonoNoMori : ランダム遮蔽物表(屋内)(5) > 【木材の扉】耐久度4,軽減値2,特殊効果:コンタクト内のキャラクターに対する射撃攻撃判定に-1、接触判定と突撃判定に-2の修正を付加###secret dice### -rand:5/12 -============================ -input: -EET -output: -KemonoNoMori : 逃走体験表(5) > 任意の【絆】を合計2点減少する (再登場: 12時間後) -rand:5/12,12/12 -============================ -input: -eet -output: -KemonoNoMori : 逃走体験表(12) > 全ての武器と防具と小道具と荷物を失う(逃走したエリアに配置され、調査で発見可能) (再登場: 1時間後) -rand:12/12,1/12 -============================ -input: -sEET -output: -KemonoNoMori : 逃走体験表(2) > 【余裕】が0になる (再登場: 11時間後)###secret dice### -rand:2/12,11/12 -============================ -input: -GFT -output: -KemonoNoMori : 食材採集表(1) > 食べられる根(栄養価:2) -rand:1/12 -============================ -input: -gft -output: -KemonoNoMori : 食材採集表(12) > 気持ち悪い虫(栄養価:1) -rand:12/12 -============================ -input: -sgft -output: -KemonoNoMori : 食材採集表(3) > 食べられる草(栄養価:3)###secret dice### -rand:3/12 -============================ -input: -GWT -output: -KemonoNoMori : 水採集表(1) > 汚水 -rand:1/12 -============================ -input: -gwt -output: -KemonoNoMori : 水採集表(12) > 毒水 -rand:12/12 -============================ -input: -SGWT -output: -KemonoNoMori : 水採集表(7) > 飲料水###secret dice### -rand:7/12 -============================ -input: -WST -output: -KemonoNoMori : 白の魔石効果表(1) > 役に立たないものの色を変える -rand:1/12 -============================ -input: -wst -output: -KemonoNoMori : 白の魔石効果表(12) > 大型動物を召喚する -rand:12/12 -============================ -input: -SwsT -output: -KemonoNoMori : 白の魔石効果表(5) > 役に立たないものを復元する###secret dice### -rand:5/12 -============================ diff --git a/src/src_bcdice/test/data/KillDeathBusiness.txt b/src/src_bcdice/test/data/KillDeathBusiness.txt deleted file mode 100644 index 0b5ffce8a..000000000 --- a/src/src_bcdice/test/data/KillDeathBusiness.txt +++ /dev/null @@ -1,809 +0,0 @@ -input: -HST -output: -KillDeathBusiness : 履歴表(1):魔術 -あなたは悪魔との接触を目指して研磨を積んでいたオカルティスト、または恐怖の探索者である。たいへんな苦労の末、ようやく現れた悪魔は、願いと引き替えに番組に出ろ、などと言い出した。あなたは少々あっけにとられながらも、そもそも悪魔を探していた理由である願い事を叶えるため、彼らの主催する番組に出演する事を承諾した。 -rand:1/6 -============================ -input: -HST -output: -KillDeathBusiness : 履歴表(6):友人 -あなたは平穏な人生を送っていたが、あるとき目の前に悪魔が現れる。そいつは番組出演のエントリーシートを持っていて、そこにはあなたの名前が書かれていた。友人が勝手にあなたの名前で番組にエントリーシートを送っていたのだ! あなたはそのまま拉致され、むりやり願い事を決めさせられ、悪趣味な番組で暴力を撒き散らす事になってしまった。 -rand:6/6 -============================ -input: -ST -output: -KillDeathBusiness : シーン表(11,11):あなたが根城にしていたオフィス -rand:1/6,1/6,1/6,1/6 -============================ -input: -ST -output: -KillDeathBusiness : シーン表(66,66):略奪を受けて空っぽになった野原 -rand:6/6,6/6,6/6,6/6 -============================ -input: -ST1 -output: -KillDeathBusiness : シーン表(11):あなたが根城にしていた -rand:1/6,1/6 -============================ -input: -ST1 -output: -KillDeathBusiness : シーン表(66):略奪を受けて空っぽになった -rand:6/6,6/6 -============================ -input: -ST2 -output: -KillDeathBusiness : シーン表(11):オフィス -rand:1/6,1/6 -============================ -input: -ST2 -output: -KillDeathBusiness : シーン表(66):野原 -rand:6/6,6/6 -============================ -input: -DeathWT -output: -KillDeathBusiness : 願い事表「死」(1):今の美しさを保ったまま死にたい。 -rand:1/6 -============================ -input: -DeathWT -output: -KillDeathBusiness : 願い事表「死」(6):不老不死に飽きたので死にたい。 -rand:6/6 -============================ -input: -DWT -output: -KillDeathBusiness : 願い事表「死」(1):今の美しさを保ったまま死にたい。 -rand:1/6 -============================ -input: -RevengeWT -output: -KillDeathBusiness : 願い事表「復讐」(1):家族を殺した犯人に復讐したい。 -rand:1/6 -============================ -input: -RevengeWT -output: -KillDeathBusiness : 願い事表「復讐」(6):手ひどく負けたライバルに復讐したい。 -rand:6/6 -============================ -input: -RWT -output: -KillDeathBusiness : 願い事表「復讐」(1):家族を殺した犯人に復讐したい。 -rand:1/6 -============================ -input: -VictoryWT -output: -KillDeathBusiness : 願い事表「勝利」(1):かつて負けたライバルに勝利したい。 -rand:1/6 -============================ -input: -VictoryWT -output: -KillDeathBusiness : 願い事表「勝利」(6):特定のテストで一位になりたい。 -rand:6/6 -============================ -input: -VWT -output: -KillDeathBusiness : 願い事表「勝利」(1):かつて負けたライバルに勝利したい。 -rand:1/6 -============================ -input: -PossesionWT -output: -KillDeathBusiness : 願い事表「獲得」(1):欲しいアイテムがある。 -rand:1/6 -============================ -input: -PossesionWT -output: -KillDeathBusiness : 願い事表「獲得」(6):欲しい不動産がある。 -rand:6/6 -============================ -input: -PWT -output: -KillDeathBusiness : 願い事表「獲得」(1):欲しいアイテムがある。 -rand:1/6 -============================ -input: -ControlWT -output: -KillDeathBusiness : 願い事表「支配」(1):支配したい人物集団がいる。 -rand:1/6 -============================ -input: -ControlWT -output: -KillDeathBusiness : 願い事表「支配」(6):わがままな縁者を思い通りにしたい。 -rand:6/6 -============================ -input: -CWT -output: -KillDeathBusiness : 願い事表「支配」(1):支配したい人物集団がいる。 -rand:1/6 -============================ -input: -FlourishWT -output: -KillDeathBusiness : 願い事表「繁栄」(1):落ちぶれた一族を復権させたい。 -rand:1/6 -============================ -input: -FlourishWT -output: -KillDeathBusiness : 願い事表「繁栄」(6):とにかくたくさんお金が欲しい。 -rand:6/6 -============================ -input: -FWT -output: -KillDeathBusiness : 願い事表「繁栄」(1):落ちぶれた一族を復権させたい。 -rand:1/6 -============================ -input: -IntensifyWT -output: -KillDeathBusiness : 願い事表「強化」(1):世界最強になりたい。 -rand:1/6 -============================ -input: -IntensifyWT -output: -KillDeathBusiness : 願い事表「強化」(6):世界で最も速くなりたい。 -rand:6/6 -============================ -input: -IWT -output: -KillDeathBusiness : 願い事表「強化」(1):世界最強になりたい。 -rand:1/6 -============================ -input: -HealthWT -output: -KillDeathBusiness : 願い事表「健康」(1):完成させたい薬物がある。 -rand:1/6 -============================ -input: -HealthWT -output: -KillDeathBusiness : 願い事表「健康」(6):病気にならない体が欲しい。 -rand:6/6 -============================ -input: -HWT -output: -KillDeathBusiness : 願い事表「健康」(1):完成させたい薬物がある。 -rand:1/6 -============================ -input: -SafetyWT -output: -KillDeathBusiness : 願い事表「安全」(1):穏やかな生活を送りたい。 -rand:1/6 -============================ -input: -SafetyWT -output: -KillDeathBusiness : 願い事表「安全」(6):迫り来る世界の危機を回避したい。 -rand:6/6 -============================ -input: -SaWT -output: -KillDeathBusiness : 願い事表「安全」(1):穏やかな生活を送りたい。 -rand:1/6 -============================ -input: -LongevityWT -output: -KillDeathBusiness : 願い事表「長寿」(1):今の美しさを保ちたい。 -rand:1/6 -============================ -input: -LongevityWT -output: -KillDeathBusiness : 願い事表「長寿」(6):孫の顔を見てみたい。 -rand:6/6 -============================ -input: -LWT -output: -KillDeathBusiness : 願い事表「長寿」(1):今の美しさを保ちたい。 -rand:1/6 -============================ -input: -ExistWT -output: -KillDeathBusiness : 願い事表「生」(1):生きている実感が欲しい。 -rand:1/6 -============================ -input: -ExistWT -output: -KillDeathBusiness : 願い事表「生」(6):理想の人生を手に入れたい。 -rand:6/6 -============================ -input: -EWT -output: -KillDeathBusiness : 願い事表「生」(1):生きている実感が欲しい。 -rand:1/6 -============================ -input: -XWT -output: -rand: -============================ -input: -NAME -output: -KillDeathBusiness : 万能命名表(11,11,11):アナログXアーム -rand:1/6,1/6,1/6,1/6,1/6,1/6 -============================ -input: -NAME -output: -KillDeathBusiness : 万能命名表(66,66,66):レッドロボレッグ -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -NAME1 -output: -KillDeathBusiness : 万能命名表(11):アナログ -rand:1/6,1/6 -============================ -input: -NAME1 -output: -KillDeathBusiness : 万能命名表(66):レッド -rand:6/6,6/6 -============================ -input: -NAME2 -output: -KillDeathBusiness : 万能命名表(11):X -rand:1/6,1/6 -============================ -input: -NAME2 -output: -KillDeathBusiness : 万能命名表(66):ロボ -rand:6/6,6/6 -============================ -input: -NAME3 -output: -KillDeathBusiness : 万能命名表(11):アーム -rand:1/6,1/6 -============================ -input: -NAME3 -output: -KillDeathBusiness : 万能命名表(66):レッグ -rand:6/6,6/6 -============================ -input: -OccultSPT -output: -KillDeathBusiness : サブプロット表「オカルト」(1):『死の探求』 -回収人から一人を選び、相手が「職業」で修得している特技を指定特技として判定を行う。判定に成功すると、番組による頻繁な死が相手をどう変えていくのか観察したくなる。相手への関係を属性「研究対象」で獲得する。【深度】は1になる。 -クリア条件:相手が、あなたの登場しているシーンで二回死亡する。死亡によって相手がどう変わったのか、勝手なことをつらつらと語ってもいいし、なにも語らずにわかったような顔をしていても構わない。 -報酬:【視聴率】10%増加、400【ソウル】 -rand:1/6 -============================ -input: -OccultSPT -output: -KillDeathBusiness : サブプロット表「オカルト」(6):『魔法使い』 -キャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手はもともと本当に魔法が使える人間であり、持っている道具は高名なマジックアイテムだと確信する。相手への関係を、属性「魔法使い」で獲得する。【深度】は1となる。 -クリア条件:相手への関係の【深度】を2以上にし、かつ相手からあなたへの関係の【深度】を1以上にする。根負けした相手は魔法を教えてくれて、あなたは満足する。ちなみに、この魔法は効果があいまいでハッキリしないものを適当に設定する。 -報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】 -rand:6/6 -============================ -input: -OSPT -output: -KillDeathBusiness : サブプロット表「オカルト」(6):『魔法使い』 -キャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手はもともと本当に魔法が使える人間であり、持っている道具は高名なマジックアイテムだと確信する。相手への関係を、属性「魔法使い」で獲得する。【深度】は1となる。 -クリア条件:相手への関係の【深度】を2以上にし、かつ相手からあなたへの関係の【深度】を1以上にする。根負けした相手は魔法を教えてくれて、あなたは満足する。ちなみに、この魔法は効果があいまいでハッキリしないものを適当に設定する。 -報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】 -rand:6/6 -============================ -input: -FamilySPT -output: -KillDeathBusiness : サブプロット表「家族」(1):『説得』 -キャラクターから一人選び、相手が「小道具」で習得している特技を指定特技として判定を行う。判定に成功すると、相手が持っているのはあなたの贈りものであり、旧友が悪趣味なショーに出ているのだとわかる。降りるように説得しなければ。相手への関係を、属性「旧友」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を3にする。すると、説得をやるだけやったあなたは満足する。相手は多分諦めない。または、選択された「旧友」が死亡するか(回収人なら)地獄に墜ちる。すると、なんだかあきらめがつく。 -報酬:【視聴率】10%増加、400【ソウル】 -rand:1/6 -============================ -input: -FamilySPT -output: -KillDeathBusiness : サブプロット表「家族」(6):『孤独な人』 -キャラクターから一人選び、相手が「願望」で修得している特技を指定特技として判定を行う。判定に成功すると、相手が孤独に耐えている寂しい人物であることを確信する。あなたが相手を救うのだ。相手への関係を、属性「孤独な人」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にする。すると、相手は打ち解ける……かもしれないし、なにも変わないかもしれない。ただ、あなたには、相手の孤独が少し癒やされたことがわかる。 -報酬:【視聴率】10%増加、200【ソウル】 -rand:6/6 -============================ -input: -FSPT -output: -KillDeathBusiness : サブプロット表「家族」(1):『説得』 -キャラクターから一人選び、相手が「小道具」で習得している特技を指定特技として判定を行う。判定に成功すると、相手が持っているのはあなたの贈りものであり、旧友が悪趣味なショーに出ているのだとわかる。降りるように説得しなければ。相手への関係を、属性「旧友」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を3にする。すると、説得をやるだけやったあなたは満足する。相手は多分諦めない。または、選択された「旧友」が死亡するか(回収人なら)地獄に墜ちる。すると、なんだかあきらめがつく。 -報酬:【視聴率】10%増加、400【ソウル】 -rand:1/6 -============================ -input: -LoveSPT -output: -KillDeathBusiness : サブプロット表「恋愛」(1):『禁断の恋』 -標的が「衣装」で修得している特技を指定特技として判定を行う。標的がすでに死亡している場合、サブプロット表を振りなおす。判定に成功すると、標的に一目惚れするか、標的が前から好きだった人であったことが判明する。急がないと殺されてしまう。相手への関係を、属性「好きな人」で獲得する。【深度】は1となる。 -クリア条件:相手への関係の【深度】を3にする。すると、標的はあなたの思いに対してなんらかの答えを返す。結果がどうあれ、いい経験になるだろう。または、相手への関係の【深度】が2以上の状態で、相手が死亡してもいい。嘆こう。 -報酬:【視聴率】10%増加、400【ソウル】 -rand:1/6 -============================ -input: -LoveSPT -output: -KillDeathBusiness : サブプロット表「恋愛」(6):『手料理』 -キャラクターから一人を選び相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、相手の持っているものがヒントになって、すごい料理を思いつく。もしかしたら材料にするのかもしれない。相手への関係を属性「毒見役」で獲得する。【深度】は1になる。 -クリア条件:相手に戦闘を挑み、キラートリックで倒す。このとき、キラートリックの名前は思いついた料理の名前に変更される。困ったら万能命名表を使うこと。 -報酬:【視聴率】10%増加、500【ソウル】 -rand:6/6 -============================ -input: -LoSPT -output: -KillDeathBusiness : サブプロット表「恋愛」(1):『禁断の恋』 -標的が「衣装」で修得している特技を指定特技として判定を行う。標的がすでに死亡している場合、サブプロット表を振りなおす。判定に成功すると、標的に一目惚れするか、標的が前から好きだった人であったことが判明する。急がないと殺されてしまう。相手への関係を、属性「好きな人」で獲得する。【深度】は1となる。 -クリア条件:相手への関係の【深度】を3にする。すると、標的はあなたの思いに対してなんらかの答えを返す。結果がどうあれ、いい経験になるだろう。または、相手への関係の【深度】が2以上の状態で、相手が死亡してもいい。嘆こう。 -報酬:【視聴率】10%増加、400【ソウル】 -rand:1/6 -============================ -input: -JusticeSPT -output: -KillDeathBusiness : サブプロット表「正義」(1):『殺せない標的』 -標的が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手があなたの正義に照らし合わせて申し分のない人物である事が分かる(もしくは、実は非常に善良な人物であったことがわかる)。これを殺させるわけにはいかない。相手への関係を、属性「護衛対象」で獲得する。【深度】は1になる。 -クリア条件:結果フェイズまで相手を生き残らせる。なぜ味方をしたのか、なぜ味方をするのか、相手に語ってあげると喜ぶかもしれない。 -報酬:【視聴率】10%増加、700【ソウル】 -rand:1/6 -============================ -input: -JusticeSPT -output: -KillDeathBusiness : サブプロット表「正義」(6):『サイドキック』 -回収人から一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、相手は自分の相棒として悪を倒すのに最適な人物であると確信する。サイドキックだ。相手への関係を、属性「仲間」で獲得する。【深度】は1になる。 -クリア条件:自分が登場しているシーンで、相手が誰かを倒し、そのあと自分が殺されずに戦闘が終了する。相手を褒めて、仲間にふさわしい人物だと宣言してあげよう。 -報酬:【視聴率】10%増加、300【ソウル】 -rand:6/6 -============================ -input: -JSPT -output: -KillDeathBusiness : サブプロット表「正義」(1):『殺せない標的』 -標的が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手があなたの正義に照らし合わせて申し分のない人物である事が分かる(もしくは、実は非常に善良な人物であったことがわかる)。これを殺させるわけにはいかない。相手への関係を、属性「護衛対象」で獲得する。【深度】は1になる。 -クリア条件:結果フェイズまで相手を生き残らせる。なぜ味方をしたのか、なぜ味方をするのか、相手に語ってあげると喜ぶかもしれない。 -報酬:【視聴率】10%増加、700【ソウル】 -rand:1/6 -============================ -input: -TrainingSPT -output: -KillDeathBusiness : サブプロット表「修行」(1):『戦闘狂』 -回収人から一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、周りにいる強そうな人に対して対抗心が沸いてくる。結局、勝つのは一人なんだから、今から叩いておいたほうがいい。相手への関係を、属性「敵」で獲得する。【深度】は1になる。 -クリア条件:相手を含む三人のキャラクターを一回以上死亡させる。すると、あなたの戦闘熱はおさまる。そこから仲良くできるかどうかは微妙なところかもしれない。 -報酬:【視聴率】10%増加、600【ソウル】 -rand:1/6 -============================ -input: -TrainingSPT -output: -KillDeathBusiness : サブプロット表「修行」(6):『特訓』 -回収人から一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると相手は自分と同じく修行不足を痛感しているのだと確信する。一緒にトレーニングだ。相手への関係を、属性「特訓仲間」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にする。すると、あなたと相手はなんらかの手応えを感じて、特訓は終わる。このタイミングでキラートリックの名前を変えたりしてもかまわない。 -報酬:【視聴率】10%増加、200【ソウル】 -rand:6/6 -============================ -input: -TSPT -output: -KillDeathBusiness : サブプロット表「修行」(1):『戦闘狂』 -回収人から一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、周りにいる強そうな人に対して対抗心が沸いてくる。結局、勝つのは一人なんだから、今から叩いておいたほうがいい。相手への関係を、属性「敵」で獲得する。【深度】は1になる。 -クリア条件:相手を含む三人のキャラクターを一回以上死亡させる。すると、あなたの戦闘熱はおさまる。そこから仲良くできるかどうかは微妙なところかもしれない。 -報酬:【視聴率】10%増加、600【ソウル】 -rand:1/6 -============================ -input: -BeamSPT -output: -KillDeathBusiness : サブプロット表「笑い」(1):『大サービス』 -キャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、この殺伐とした番組を和やかにできるのは、自分と相手しかいないと確信する。相手への関係を、属性「相棒」で獲得する。【深度】は1になる。 -クリア条件:相手と一緒に。「サービス」シーンの判定に2回成功する。すると、なんだか番組が楽しくなったような気もするが……変わってない気もする。あなたの戦いはまだ続く。 -報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】 -rand:1/6 -============================ -input: -BeamSPT -output: -KillDeathBusiness : サブプロット表「笑い」(6):『親友』 -キャラクターから一人を選び、相手が「小道具」で修得している特技を指定特技として判定を行う。判定に成功すると、その小道具についての会話をきっかけに、相手への興味が芽生える。もしかしたら友達になれるかもしれない。相手への関係を、属性「友人」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にする。すると、あなたと相手は友情のようなもので結ばれるかもしれないし、やはり無理だったのだと、あなたが諦めるかもしれない。 -報酬:【視聴率】10%増加、200【ソウル】 -rand:6/6 -============================ -input: -BSPT -output: -KillDeathBusiness : サブプロット表「笑い」(1):『大サービス』 -キャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、この殺伐とした番組を和やかにできるのは、自分と相手しかいないと確信する。相手への関係を、属性「相棒」で獲得する。【深度】は1になる。 -クリア条件:相手と一緒に。「サービス」シーンの判定に2回成功する。すると、なんだか番組が楽しくなったような気もするが……変わってない気もする。あなたの戦いはまだ続く。 -報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】 -rand:1/6 -============================ -input: -CMT -output: -KillDeathBusiness : CM表(11):あなたのTシャツ/決めポーズの姿が背中にプリントされたTシャツです。そして、フロントにはあの名台詞が! -rand:1/6,1/6 -============================ -input: -CMT -output: -KillDeathBusiness : CM表(66):ヘル入浴剤/体が溶ける!新感覚で話題を呼んだヘル入浴剤がついに登場!死体の処理には使わないでください。 -rand:6/6,6/6 -============================ -input: -sErviceST -output: -KillDeathBusiness : サービスシーン表(11):脱衣系サービスシーン表「衣装の不調」を行う。 -rand:1/6,1/6 -============================ -input: -SERVICEST -output: -KillDeathBusiness : サービスシーン表(66):別ジャンルサービスシーン表「ロボ」を行う。 -rand:6/6,6/6 -============================ -input: -EST -output: -KillDeathBusiness : サービスシーン表(11):脱衣系サービスシーン表「衣装の不調」を行う。 -rand:1/6,1/6 -============================ -input: -SOUL -output: -KillDeathBusiness : ソウル放出表(1):100 -rand:1/6 -============================ -input: -SOUL -output: -KillDeathBusiness : ソウル放出表(6):300 -rand:6/6 -============================ -input: -STGT -output: -KillDeathBusiness : 汎用演出表(1):大きくて分かりやすい文字でテロップが出る -rand:1/6 -============================ -input: -STGT -output: -KillDeathBusiness : 汎用演出表(6):ヘルバンドの新曲がBGMとして流れる -rand:6/6 -============================ -input: -HSAT -output: -KillDeathBusiness : ヘルスタイリスト罵倒表(11,11):「まるで『 汁まみれになった アルマジロ』みたいよ!」 -rand:1/6,1/6,1/6,1/6,1/6,1/6 -============================ -input: -HSAT -output: -KillDeathBusiness : ヘルスタイリスト罵倒表(66,66):「あなたは『 猟奇殺人を趣味にしている 野良犬』そっくりよ!」 -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -HSAT1 -output: -KillDeathBusiness : ヘルスタイリスト罵倒表(11): 汁まみれになった -rand:1/6,1/6 -============================ -input: -HSAT1 -output: -KillDeathBusiness : ヘルスタイリスト罵倒表(66): 猟奇殺人を趣味にしている -rand:6/6,6/6 -============================ -input: -HSAT2 -output: -KillDeathBusiness : ヘルスタイリスト罵倒表(11): アルマジロ -rand:1/6,1/6 -============================ -input: -HSAT2 -output: -KillDeathBusiness : ヘルスタイリスト罵倒表(66): 野良犬 -rand:6/6,6/6 -============================ -input: -SKLT -output: -KillDeathBusiness : 指定特技ランダム決定表(1,2):「職業」《無職》 -rand:1/6,1/6,1/6 -============================ -input: -SKLT -output: -KillDeathBusiness : 指定特技ランダム決定表(6,12):「願望」《生》 -rand:6/6,6/6,6/6 -============================ -input: -2d6>=5 -output: -KillDeathBusiness : (2D6>=5) > 2[1,1] > 2 > ファンブル(判定失敗。【視聴率】が20%減少) -rand:1/6,1/6 -============================ -input: -2d6>=5 -output: -KillDeathBusiness : (2D6>=5) > 12[6,6] > 12 > スペシャル(判定成功。【視聴率】が10%増加) -rand:6/6,6/6 -============================ -input: -2d6>=5 -output: -KillDeathBusiness : (2D6>=5) > 4[1,3] > 4 > 失敗 -rand:1/6,3/6 -============================ -input: -2d6>=5 -output: -KillDeathBusiness : (2D6>=5) > 5[1,4] > 5 > 成功 -rand:4/6,1/6 -============================ -input: -SKLJ -output: -KillDeathBusiness : 指定特技分野ランダム決定表(1):職業 -rand:1/6 -============================ -input: -SKLJ -output: -KillDeathBusiness : 指定特技分野ランダム決定表(6):願望 -rand:6/6 -============================ -input: -JD5 -output: -KillDeathBusiness : 判定【難易度5、補正0、ファンブル率2】 > 出目(3,1) > 達成値4、難易度未満なので判定失敗! -rand:3/6,1/6 -============================ -input: -JD5 -output: -KillDeathBusiness : 判定【難易度5、補正0、ファンブル率2】 > 出目(4,1) > 達成値5、難易度以上なので判定成功! -rand:4/6,1/6 -============================ -input: -JD6+1 -output: -KillDeathBusiness : 判定【難易度6、補正1、ファンブル率2】 > 出目(3,1) > 達成値5、難易度未満なので判定失敗! -rand:3/6,1/6 -============================ -input: -JD6+1 -output: -KillDeathBusiness : 判定【難易度6、補正1、ファンブル率2】 > 出目(4,1) > 達成値6、難易度以上なので判定成功! -rand:4/6,1/6 -============================ -input: -JD6-1 -output: -KillDeathBusiness : 判定【難易度6、補正-1、ファンブル率2】 > 出目(5,1) > 達成値5、難易度未満なので判定失敗! -rand:5/6,1/6 -============================ -input: -JD6-1 -output: -KillDeathBusiness : 判定【難易度6、補正-1、ファンブル率2】 > 出目(6,1) > 達成値6、難易度以上なので判定成功! -rand:6/6,1/6 -============================ -input: -JD5,4 -output: -KillDeathBusiness : 判定【難易度5、補正0、ファンブル率4】 > 出目(4,1) > 達成値5、難易度以上なので判定成功! -rand:4/6,1/6 -============================ -input: -JD6,5 -output: -KillDeathBusiness : 判定【難易度6、補正0、ファンブル率5】 > 出目(4,1) > 出目がファンブル率以下なのでファンブル!(判定失敗。【視聴率】が20%減少) -rand:4/6,1/6 -============================ -input: -JD5,5 -output: -KillDeathBusiness : 判定【難易度5、補正0、ファンブル率5】 > 出目(4,1) > 出目がファンブル率以下なのでファンブル!(判定失敗。【視聴率】が20%減少) -rand:4/6,1/6 -============================ -input: -JD6,5 -output: -KillDeathBusiness : 判定【難易度6、補正0、ファンブル率5】 > 出目(4,1) > 出目がファンブル率以下なのでファンブル!(判定失敗。【視聴率】が20%減少) -rand:4/6,1/6 -============================ -input: -JD5-1,4 -output: -KillDeathBusiness : 判定【難易度5、補正-1、ファンブル率4】 > 出目(4,1) > 達成値4、難易度未満なので判定失敗! -rand:4/6,1/6 -============================ -input: -JD5-1,5 -output: -KillDeathBusiness : 判定【難易度5、補正-1、ファンブル率5】 > 出目(4,1) > 出目がファンブル率以下なのでファンブル!(判定失敗。【視聴率】が20%減少) -rand:4/6,1/6 -============================ -input: -JD5+1,3 -output: -KillDeathBusiness : 判定【難易度5、補正1、ファンブル率3】 > 出目(3,1) > 達成値5、難易度以上なので判定成功! -rand:3/6,1/6 -============================ -input: -JD5+1,4 -output: -KillDeathBusiness : 判定【難易度5、補正1、ファンブル率4】 > 出目(3,1) > 出目がファンブル率以下なのでファンブル!(判定失敗。【視聴率】が20%減少) -rand:3/6,1/6 -============================ -input: -JD12,4 -output: -KillDeathBusiness : 判定【難易度12、補正0、ファンブル率4】 > 出目(3,1) > 出目がファンブル率以下なのでファンブル!(判定失敗。【視聴率】が20%減少) -rand:3/6,1/6 -============================ -input: -JD12,4 -output: -KillDeathBusiness : 判定【難易度12、補正0、ファンブル率4】 > 出目(6,6) > 出目が12なのでスペシャル!(判定成功。【視聴率】が10%増加) -rand:6/6,6/6 -============================ -input: -JD13,2 -output: -KillDeathBusiness : 判定【JD13,2】 > 難易度が12以上はスペシャルのみ成功。 -【難易度12、補正0、ファンブル率2】 > 出目(6,1) > 達成値7、難易度未満なので判定失敗! -rand:6/6,1/6 -============================ -input: -JD4,2 -output: -KillDeathBusiness : 判定【JD4,2】 > 難易度の最低は5。 -【難易度5、補正0、ファンブル率2】 > 出目(6,1) > 達成値7、難易度以上なので判定成功! -rand:6/6,1/6 -============================ -input: -JD12,12 -output: -KillDeathBusiness : 判定【JD12,12】 > スペシャルを出すと必ず成功なので、ファンブル率は11とする。 -【難易度12、補正0、ファンブル率11】 > 出目(7,1) > 出目がファンブル率以下なのでファンブル!(判定失敗。【視聴率】が20%減少) -rand:7/6,1/6 -============================ -input: -JD13,13 -output: -KillDeathBusiness : 判定【JD13,13】 > 難易度が12以上はスペシャルのみ成功。 -【JD13,13】 > スペシャルを出すと必ず成功なので、ファンブル率は11とする。 -【難易度12、補正0、ファンブル率11】 > 出目(7,1) > 出目がファンブル率以下なのでファンブル!(判定失敗。【視聴率】が20%減少) -rand:7/6,1/6 -============================ -input: -ERT -output: -KillDeathBusiness : 蘇生副作用表(11):おいそそうな匂いがするようになった -rand:1/6,1/6 -============================ -input: -ERT -output: -KillDeathBusiness : 蘇生副作用表(66):立派な角が額に生えた -rand:6/6,6/6 -============================ -input: -WKT -output: -KillDeathBusiness : 一週間表(11):家を追い出されたヘルPが泊まりに来た -rand:1/6,1/6 -============================ -input: -WKT -output: -KillDeathBusiness : 一週間表(66):妙に寄付を募る営業電話がかかってくる週だった -rand:6/6,6/6 -============================ -input: -ANSPT -output: -KillDeathBusiness : サブプロット表「対悪魔」(6[6]) > 『仲間』 -キャラクターから一人を選び、相手が「動作」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手が悪魔と戦う際に力になってくれる人物だと確信する。愚かな番組への協力をやめさせれば、きっと大丈夫だ。相手への関係を、属性「同士」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を3にする。結局断られるかもしれないが、あなたは言うだけ言ったことで満足した。 -報酬:【視聴率】10%増加、相手が回収人なら400【ソウル】 相手がNPCなら600【ソウル】 -rand:6/6 -============================ -input: -MASPT -output: -KillDeathBusiness : サブプロット「意地悪」(6[6]) > 『泣かせたい』 -キャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、あなたは相手の泣き顔がヘル視聴者(と、あなた)に非常な満足感を与えてくれるであろうと確信する。相手への関係を、属性「泣かせたい人」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にする。相手は泣き出すか、そっと涙を流す……が、理由は相手が決定する。血が目に入っただけかもしれない。 -報酬:【視聴率】10%増加、200【ソウル】 -rand:6/6 -============================ -input: -MOSPT -output: -KillDeathBusiness : サブプロット表「金儲け」(6[6]) > 『ゆるキャラ』 -キャラクターから一人を選び、相手が「情動」で修得している特技を指定特技として判定を行う。判定に成功すると、相手のムードにぴったりのキャラを思いつく。あなたの考えた変な語尾をつけさせることができれば、大ヒット間違いなしだ……!相手への関係を、属性「中身」で獲得する。【深度】は1になる。 -クリア条件:語尾を一つ指定する。相手が登場するメインフェイズのうち三つで、プレイヤーのものを含む発言すべてにその語尾をつけて喋るとクリア。他のプレイヤーやゲームマスターに語尾の欠落を指摘されるとNG。 -報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】 -rand:6/6 -============================ -input: -PASPT -output: -KillDeathBusiness : サブプロット表「仕切り」(6[6]) > 『テコ入れ回避』 -キャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、こんな人がいるんじゃあ番組の視聴率も期待できないと確信してしまう。頑張らなければ。誰が?あなたが!相手への関係を、属性「売れなさそう」で獲得する。【深度】は1になる。 -クリア条件:結果フェイズ開始時に【視聴率】が40%以上になっている。危ない場面もあったかもしれないが、とりあえずOKだ。 -報酬:【視聴率】10%増加、300【ソウル】 クリア時にフィーバーが発生していれば、さらに300【ソウル】 -rand:6/6 -============================ -input: -POSPT -output: -KillDeathBusiness : サブプロット表「人気」(6[6]) > 『着こなし』 -キャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、相手のヘルドレスの着こなしはあなたを完全に凌駕していると確信してしまう。他の面では勝っているのに。相手への関係を、属性「ファッショナブル」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にする。すると相手は着こなしについて丁寧な、あるいは短いが核心を突いていると思われる助言をあなたにしてくれる。役に立ったり立たなかったりするだろう。 -報酬:【視聴率】10%増加、200【ソウル】 -rand:6/6 -============================ -input: -UMSPT -output: -KillDeathBusiness : サブプロット表「恨み」(6[6]) > 『服よこせ』 -キャラクターから一人を選び、相手が「衣装」で修得している特技を指定特技として判定を行う。判定に成功すると、その衣装は本当はあなたが着たかったものだと判明する。ヘルスタイリストへの抗議がひどい罵倒とともに却下されるシーンが脳裏にフラッシュバックする。相手への関係を、属性「服よこせ」で獲得する。【深度】は1になる。 -クリア条件:相手への関係の【深度】を2以上にし、かつ相手からあなたへの関係の【深度】を1以上にする。根負けした相手はちょっとヘルドレスを貸してくれて、あなたは満足する。ちなみに、本当に似合っているかどうかは関係ない。 -報酬:【視聴率】10%増加、あなたと相手の両方に300【ソウル】 -rand:6/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -KillDeathBusiness : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/KillDeathBusiness_Korean.txt b/src/src_bcdice/test/data/KillDeathBusiness_Korean.txt deleted file mode 100644 index 4996da00c..000000000 --- a/src/src_bcdice/test/data/KillDeathBusiness_Korean.txt +++ /dev/null @@ -1,799 +0,0 @@ -input: -HST -output: -KillDeathBusiness : 이력표(1):마술 -당신은 악마와의 접촉을 위해 연구를 쌓아온 오컬티스트, 또는 공포의 탐색자다. 굉장한 고난과 노력을 통해,드디어 나타난 악마는, 소원을 들어주는 대신 방송에나가라, 다고 말했다. 당신은 조금 어이없어 하면서도,애당초 악마를 찾던 이유인 소원을 이루기 위해, 그들이 주최하는 방송에 출연할 것을 승낙했다. -rand:1/6 -============================ -input: -HST -output: -KillDeathBusiness : 이력표(6):친구 -당신은 평온한 인생을 보내고 있었으나, 어느 날 눈앞에 악마가 나타났다. 그 녀석은 방송 출연의 엔트리 시트를 가지고 있어서, 거기에는 당신의 이름이 적혀 있었다. 친구가 멋대로 당신의 이름으로 방송에 엔트리시트를 보낸 것이다! 당신은 그대로 납치되어, 억지로소원을 정하게 되어, 악취미인 방송에서 폭력을 휘두르게 됐다. -rand:6/6 -============================ -input: -ST -output: -KillDeathBusiness : 씬표(11,11):당신이 근거로 삼고 있는 오피스 -rand:1/6,1/6,1/6,1/6 -============================ -input: -ST -output: -KillDeathBusiness : 씬표(66,66):약탈을 당해 텅 빈 들판 -rand:6/6,6/6,6/6,6/6 -============================ -input: -ST1 -output: -KillDeathBusiness : 씬표(11):당신이 근거로 삼고 있는 -rand:1/6,1/6 -============================ -input: -ST1 -output: -KillDeathBusiness : 씬표(66):약탈을 당해 텅 빈 -rand:6/6,6/6 -============================ -input: -ST2 -output: -KillDeathBusiness : 씬표(11):오피스 -rand:1/6,1/6 -============================ -input: -ST2 -output: -KillDeathBusiness : 씬표(66):들판 -rand:6/6,6/6 -============================ -input: -DeathWT -output: -KillDeathBusiness : 소원표「죽음」(1):지금의 아름다움을 유지한 채 죽고 싶다. -rand:1/6 -============================ -input: -DeathWT -output: -KillDeathBusiness : 소원표「죽음」(6):불로불사가 질려서 죽고 싶다. -rand:6/6 -============================ -input: -DWT -output: -KillDeathBusiness : 소원표「죽음」(1):지금의 아름다움을 유지한 채 죽고 싶다. -rand:1/6 -============================ -input: -RevengeWT -output: -KillDeathBusiness : 소원표「복수」(1):가족을 죽인 범인에게 복수하고 싶다. -rand:1/6 -============================ -input: -RevengeWT -output: -KillDeathBusiness : 소원표「복수」(6):처참한 패배를 안겨준 라이벌에게 복수하고 싶다. -rand:6/6 -============================ -input: -RWT -output: -KillDeathBusiness : 소원표「복수」(1):가족을 죽인 범인에게 복수하고 싶다. -rand:1/6 -============================ -input: -VictoryWT -output: -KillDeathBusiness : 소원표「승리」(1):이전에 졌던 라이벌에게 이기고 싶다. -rand:1/6 -============================ -input: -VictoryWT -output: -KillDeathBusiness : 소원표「승리」(6):특정 테스트에서 1위를 하고 싶다. -rand:6/6 -============================ -input: -VWT -output: -KillDeathBusiness : 소원표「승리」(1):이전에 졌던 라이벌에게 이기고 싶다. -rand:1/6 -============================ -input: -PossesionWT -output: -KillDeathBusiness : 소원표「획득」(1):원하는 아이템이 있다. -rand:1/6 -============================ -input: -PossesionWT -output: -KillDeathBusiness : 소원표「획득」(6):원하는 부동산이 있다. -rand:6/6 -============================ -input: -PWT -output: -KillDeathBusiness : 소원표「획득」(1):원하는 아이템이 있다. -rand:1/6 -============================ -input: -ControlWT -output: -KillDeathBusiness : 소원표「지배」(1):지배하고 싶은 인물집단이 있다. -rand:1/6 -============================ -input: -ControlWT -output: -KillDeathBusiness : 소원표「지배」(6):어리광쟁이인 친척을 마음대로 하고 싶다. -rand:6/6 -============================ -input: -CWT -output: -KillDeathBusiness : 소원표「지배」(1):지배하고 싶은 인물집단이 있다. -rand:1/6 -============================ -input: -FlourishWT -output: -KillDeathBusiness : 소원표「번영」(1):몰락한 일족을 부흥시키고 싶다. -rand:1/6 -============================ -input: -FlourishWT -output: -KillDeathBusiness : 소원표「번영」(6):아무튼 많은 돈을 원한다. -rand:6/6 -============================ -input: -FWT -output: -KillDeathBusiness : 소원표「번영」(1):몰락한 일족을 부흥시키고 싶다. -rand:1/6 -============================ -input: -IntensifyWT -output: -KillDeathBusiness : 소원표「강화」(1):세계최강이 되고 싶다. -rand:1/6 -============================ -input: -IntensifyWT -output: -KillDeathBusiness : 소원표「강화」(6):세계에서 가장 빨라지고 싶다. -rand:6/6 -============================ -input: -IWT -output: -KillDeathBusiness : 소원표「강화」(1):세계최강이 되고 싶다. -rand:1/6 -============================ -input: -HealthWT -output: -KillDeathBusiness : 소원표「건강」(1):완성시키고 싶은 약물이 있다. -rand:1/6 -============================ -input: -HealthWT -output: -KillDeathBusiness : 소원표「건강」(6):병에 걸리지 않는 몸을 원한다. -rand:6/6 -============================ -input: -HWT -output: -KillDeathBusiness : 소원표「건강」(1):완성시키고 싶은 약물이 있다. -rand:1/6 -============================ -input: -SafetyWT -output: -KillDeathBusiness : 소원표「안전」(1):평온한 생활을 보내고 싶다. -rand:1/6 -============================ -input: -SafetyWT -output: -KillDeathBusiness : 소원표「안전」(6):다가오는 세계의 위기를 회피하고 싶다. -rand:6/6 -============================ -input: -SaWT -output: -KillDeathBusiness : 소원표「안전」(1):평온한 생활을 보내고 싶다. -rand:1/6 -============================ -input: -LongevityWT -output: -KillDeathBusiness : 소원표「장수」(1):지금의 아름다움을 유지하고 싶다. -rand:1/6 -============================ -input: -LongevityWT -output: -KillDeathBusiness : 소원표「장수」(6):손자의 얼굴을 보고 싶다. -rand:6/6 -============================ -input: -LWT -output: -KillDeathBusiness : 소원표「장수」(1):지금의 아름다움을 유지하고 싶다. -rand:1/6 -============================ -input: -ExistWT -output: -KillDeathBusiness : 소원표「삶」(1):살아 있다는 실감을 원한다. -rand:1/6 -============================ -input: -ExistWT -output: -KillDeathBusiness : 소원표「삶」(6):이상의 인생을 손에 넣고 싶다. -rand:6/6 -============================ -input: -EWT -output: -KillDeathBusiness : 소원표「삶」(1):살아 있다는 실감을 원한다. -rand:1/6 -============================ -input: -NAME -output: -KillDeathBusiness : 만능이름표(11,11,11):아날로그X암 -rand:1/6,1/6,1/6,1/6,1/6,1/6 -============================ -input: -NAME -output: -KillDeathBusiness : 만능이름표(66,66,66):레드로보레그 -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -NAME1 -output: -KillDeathBusiness : 만능이름표(11):아날로그 -rand:1/6,1/6 -============================ -input: -NAME1 -output: -KillDeathBusiness : 만능이름표(66):레드 -rand:6/6,6/6 -============================ -input: -NAME2 -output: -KillDeathBusiness : 만능이름표(11):X -rand:1/6,1/6 -============================ -input: -NAME2 -output: -KillDeathBusiness : 만능이름표(66):로보 -rand:6/6,6/6 -============================ -input: -NAME3 -output: -KillDeathBusiness : 만능이름표(11):암 -rand:1/6,1/6 -============================ -input: -NAME3 -output: -KillDeathBusiness : 만능이름표(66):레그 -rand:6/6,6/6 -============================ -input: -OccultSPT -output: -KillDeathBusiness : 서브플롯표「오컬트」(1):『죽음의 탐구』 -회수인으로부터 한 명을 골라, 상대가 「직업」으로 습득하고 있는 특기를 지정특기로판정한다. 판정에 성공하면, 방송에 의한 빈번한 죽음이 상대를 어떻게 변화시키는지 관찰하고싶어진다. 상대에 대한 관계를, 속성 「연구대상」으로 획득한다. 【심도】는 1이 된다. -클리어조건 : 상대가, 당신이 등장하고 있는 신에서 2번사망한다. 사망에 따라 상대가 어떻게 변하는지, 제멋대로 이러쿵저러쿵 말해도 되고, 아무것도 말하지 않고 다 안 것 같은 표정을 해도 된다. -보수:【시청률】10%증가、400【소울】 -rand:1/6 -============================ -input: -OccultSPT -output: -KillDeathBusiness : 서브플롯표「오컬트」(6):『마법사』 -캐릭터로부터 한 명을 골라, 상대가 「소도구」으로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 상대는 애초에 진짜로 마법을 사용할 수 있는 인간이며, 가지고 있는 도구는 고명한 매직 아이템이라고 확신한다. 상대에 대한 관계를, 속성 「마법사」으로획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 -하고, 또한 상대의 당신에 대한 관계의 -【심도】를 1이상으로 한다. 정체가 드러난 상대는 마법을 가르쳐주고, 당신은 만족한다. 덧붙여, 이 마법은 효과가 애매하고 확실하지 앟은 것을 적당히 설정한다. -보수:【시청률】10%증가、당신과 상대 모두 300【소울】 -rand:6/6 -============================ -input: -OSPT -output: -KillDeathBusiness : 서브플롯표「오컬트」(6):『마법사』 -캐릭터로부터 한 명을 골라, 상대가 「소도구」으로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 상대는 애초에 진짜로 마법을 사용할 수 있는 인간이며, 가지고 있는 도구는 고명한 매직 아이템이라고 확신한다. 상대에 대한 관계를, 속성 「마법사」으로획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 -하고, 또한 상대의 당신에 대한 관계의 -【심도】를 1이상으로 한다. 정체가 드러난 상대는 마법을 가르쳐주고, 당신은 만족한다. 덧붙여, 이 마법은 효과가 애매하고 확실하지 앟은 것을 적당히 설정한다. -보수:【시청률】10%증가、당신과 상대 모두 300【소울】 -rand:6/6 -============================ -input: -FamilySPT -output: -KillDeathBusiness : 서브플롯표「가족」(1):『설득』 -캐릭터로부터 한 명을 골라, 상대가 「소도구」로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 상대가 가지고 있는 것은 당신이 선물한 것이며, 옛 친구가 악취미인 쇼에 나왔단 것을 알 수 있다. 그만두도록 설득하지 않으면 상대에 대한 관계를, 속성 「옛 친구」로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 3으로 한다. 그러면, 설득을 할 만큼 한 당신은 만족한다. 상대는 분명 그만두지 않는다. 또는, 선택한 「옛 친구」가 사망하거나(회수인이라면)지옥에 떨어진다. 그러면, 아무래도 포기하게 된다. -보수:【시청률】10%증가、400【소울】 -rand:1/6 -============================ -input: -FamilySPT -output: -KillDeathBusiness : 서브플롯표「가족」(6):『고독한 사람』 -캐릭터로부터 한 명을 골라, 상대가 「소원」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대가 고독을 견디고 있는 외로운 인물이란 것을 확신한다. 당신이 상대를 구하는 것이다. -상대에 대한 관계를, 속성 「고독한 사람」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다. -그러면, 상대는 변할……지도 모르고, 아무것도 변하지 않을지도 모른다. 그저, 당신은, 상대의 고독이 조금 치유된 것을 알 수 있다. -보수:【시청률】10%증가、200【소울】 -rand:6/6 -============================ -input: -FSPT -output: -KillDeathBusiness : 서브플롯표「가족」(1):『설득』 -캐릭터로부터 한 명을 골라, 상대가 「소도구」로 습득하고 있는 특기를 지정특기로 판정한다. 판정에 성공하면, 상대가 가지고 있는 것은 당신이 선물한 것이며, 옛 친구가 악취미인 쇼에 나왔단 것을 알 수 있다. 그만두도록 설득하지 않으면 상대에 대한 관계를, 속성 「옛 친구」로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 3으로 한다. 그러면, 설득을 할 만큼 한 당신은 만족한다. 상대는 분명 그만두지 않는다. 또는, 선택한 「옛 친구」가 사망하거나(회수인이라면)지옥에 떨어진다. 그러면, 아무래도 포기하게 된다. -보수:【시청률】10%증가、400【소울】 -rand:1/6 -============================ -input: -LoveSPT -output: -KillDeathBusiness : 서브플롯표「연애」(1):『금단의 사랑』 -표적이 「의장」으로 습득하고 있는 특기를 지정특기로 판정한다. 표적이 이미 사망한 경우, 서브플롯표를 다시 굴린다. -판정에 성공하면, 표적에게 첫눈에 반하거나, 표적이 전부터 좋아했던 사람이란 것이 판명된다. 서두르지 않으면 죽어버린다. -상대에 대한 관계를, 속성 「좋아하는 사람」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 3으로 한다. -그러면, 표적은 당신의 마음에 대해 어떠한 대답을 돌려준다. 결과는 아무튼, 좋은 경험이 될 것이다. -또는, 상대에 대한 관계의 【심도】가 2이상인 상태에서, 상대가 사망해도 좋다. 통곡하자. -보수:【시청률】10%증가、400【소울】 -rand:1/6 -============================ -input: -LoveSPT -output: -KillDeathBusiness : 서브플롯표「연애」(6):『수제요리』 -캐릭터로부터 한 명을 골라, 상대가 「소도구」로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대가 가지고 있는 것이 힌트가 돼서, 엄청난 요리를 떠올린다. 어쩌면 재료로 할 수 있을지도 모른다. -상대에 대한 관계를, 속성 「시식역」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에게 전투를 걸어, 킬러트릭으로 쓰러트린다. -이때, 킬러트릭의 이름은 생각한 요리의 이름으로 변경된다. -고민되면 만능 명명표를 사용할 것. -보수:【시청률】10%증가、500【소울】 -rand:6/6 -============================ -input: -LoSPT -output: -KillDeathBusiness : 서브플롯표「연애」(1):『금단의 사랑』 -표적이 「의장」으로 습득하고 있는 특기를 지정특기로 판정한다. 표적이 이미 사망한 경우, 서브플롯표를 다시 굴린다. -판정에 성공하면, 표적에게 첫눈에 반하거나, 표적이 전부터 좋아했던 사람이란 것이 판명된다. 서두르지 않으면 죽어버린다. -상대에 대한 관계를, 속성 「좋아하는 사람」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 3으로 한다. -그러면, 표적은 당신의 마음에 대해 어떠한 대답을 돌려준다. 결과는 아무튼, 좋은 경험이 될 것이다. -또는, 상대에 대한 관계의 【심도】가 2이상인 상태에서, 상대가 사망해도 좋다. 통곡하자. -보수:【시청률】10%증가、400【소울】 -rand:1/6 -============================ -input: -JusticeSPT -output: -KillDeathBusiness : 서브플롯표「정의」(1):『죽일 수 없는 표적』 -표적이 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대가 당신의 정의에 비추어 볼 때 허물없는 인물이란 것을 알 수 있다(어쩌면, 실은 대단히 선량한 인물이었단 것을 안다). 이 사람을 죽일 수는 없다. -상대에 대한 관계를, 속성 「호위대상」으로 획득한다. 【심도】는 1이 된다. -클리어조건:결과 페이즈까지 상대를 생존시킨다. -어째서 아군이 됐는지, 어째서 아군으로 삼았는지, 상대에게 말해주면 기뻐할지도 모른다. -보수:【시청률】10%증가、700【소울】 -rand:1/6 -============================ -input: -JusticeSPT -output: -KillDeathBusiness : 서브플롯표「정의」(6):『사이드킥』 -회수인으로부터 한 명을 골라, 상대가 「의장」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대는 자신의 파트너로써 악을 쓰러트리기에 최적인 인물이라 확신한다. 사이드킥이다. -상대에 대한 관계를, 속성 「동료」으로 획득한다. 【심도】는 1이 된다. -클리어조건:자신이 등장하고 있는 신에서, 상대가 누군가를 쓰러트리고, 그 후 당신이 죽지 않고 전투가 종료된다. -상대를 칭찬해서, 동료에 어울리는 인물이라고 선언하자. -보수:【시청률】10%증가、300【소울】 -rand:6/6 -============================ -input: -JSPT -output: -KillDeathBusiness : 서브플롯표「정의」(1):『죽일 수 없는 표적』 -표적이 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대가 당신의 정의에 비추어 볼 때 허물없는 인물이란 것을 알 수 있다(어쩌면, 실은 대단히 선량한 인물이었단 것을 안다). 이 사람을 죽일 수는 없다. -상대에 대한 관계를, 속성 「호위대상」으로 획득한다. 【심도】는 1이 된다. -클리어조건:결과 페이즈까지 상대를 생존시킨다. -어째서 아군이 됐는지, 어째서 아군으로 삼았는지, 상대에게 말해주면 기뻐할지도 모른다. -보수:【시청률】10%증가、700【소울】 -rand:1/6 -============================ -input: -TrainingSPT -output: -KillDeathBusiness : 서브플롯표「수행」(1):『전투광』 -회수인으로부터 한 명을 골라, 상대가 「동작」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 주변에 있는 강해보이는 사람들에 대해 대항심이 끓어오른다. 결국, 남는 것은 한 사람 뿐이니까, 지금부터 때려눕히는 게 좋다. -상대에 대한 관계를, 속성 「적」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대를 포함해 세 명의 캐릭터를 한 번 이상 사망시킨다. -그러면, 당신의 전투열은 가라앉는다. 이제부터 사이가 좋아질지는 미묘할지도 모른다. -보수:【시청률】10%증가、600【소울】 -rand:1/6 -============================ -input: -TrainingSPT -output: -KillDeathBusiness : 서브플롯표「수행」(6):『특훈』 -캐릭터로부터 한 명을 골라, 상대가 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 상대는 자신과 마찬가지로 수행부족을 통감하고 있다고 확신한다. 함께 트레이닝이다. -상대에 대한 관계를, 속성 「특훈동료」로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다. -그러면, 당신과 상대는 어떠한 성과를 느끼고, 특훈은 끝난다. -이 타이밍에서 킬러트릭의 이름을 바꾸거나 해도 된다. -보수:【시청률】10%증가、200【소울】 -rand:6/6 -============================ -input: -TSPT -output: -KillDeathBusiness : 서브플롯표「수행」(1):『전투광』 -회수인으로부터 한 명을 골라, 상대가 「동작」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 주변에 있는 강해보이는 사람들에 대해 대항심이 끓어오른다. 결국, 남는 것은 한 사람 뿐이니까, 지금부터 때려눕히는 게 좋다. -상대에 대한 관계를, 속성 「적」으로 획득한다. 【심도】는 1이 된다. -클리어조건:상대를 포함해 세 명의 캐릭터를 한 번 이상 사망시킨다. -그러면, 당신의 전투열은 가라앉는다. 이제부터 사이가 좋아질지는 미묘할지도 모른다. -보수:【시청률】10%증가、600【소울】 -rand:1/6 -============================ -input: -BeamSPT -output: -KillDeathBusiness : 서브플롯표「웃음」(1):『대 서비스』 -캐릭터로부터 한 명을 골라, 상대가 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 이 살벌한 방송을 온화하게 할 수 있는 것은, 자신과 상대 밖에 없다고 확신한다. -상대에 대한 관계를, 속성 「파트너」로 획득한다. 【심도】는 1이 된다. -클리어조건:상대와 함께, 「서비스」신의 판정에 2번 성공한다. -그러면, 어쩐지 방송이 즐거워진 것 같은 느낌도 드나……변하지 않은 것 같은 기분도 든다. 당신의 싸움은 아직 계속된다. -보수:【시청률】10%증가、당신과 상대 모두 【소울】 -rand:1/6 -============================ -input: -BeamSPT -output: -KillDeathBusiness : 서브플롯표「웃음」(6):『친구』 -캐릭터로부터 한 명을 골라, 상대가 「소도구」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 그 소도구에 대한 대화를 계기로, 상대에 대한 흥미가 싹튼다. 어쩌면 친구가 될지도 모른다. -상대에 대한 관계를, 속성 「친구」로 획득한다. 【심도】는 1이 된다. -클리어조건:상대에 대한 관계의 【심도】를 2이상으로 한다. -그러면, 당신과 상대는 우정과 같은 것으로 묶일지도 모르고, 역시 무리였다고, 당신이 포기할지도 모른다. -보수:【시청률】10%증가、200【소울】 -rand:6/6 -============================ -input: -BSPT -output: -KillDeathBusiness : 서브플롯표「웃음」(1):『대 서비스』 -캐릭터로부터 한 명을 골라, 상대가 「정동」으로 습득하고 있는 특기를 지정특기로 판정한다. -판정에 성공하면, 이 살벌한 방송을 온화하게 할 수 있는 것은, 자신과 상대 밖에 없다고 확신한다. -상대에 대한 관계를, 속성 「파트너」로 획득한다. 【심도】는 1이 된다. -클리어조건:상대와 함께, 「서비스」신의 판정에 2번 성공한다. -그러면, 어쩐지 방송이 즐거워진 것 같은 느낌도 드나……변하지 않은 것 같은 기분도 든다. 당신의 싸움은 아직 계속된다. -보수:【시청률】10%증가、당신과 상대 모두 【소울】 -rand:1/6 -============================ -input: -CMT -output: -KillDeathBusiness : CM표(11):당신의 T셔츠 -결정 포즈의 모습이 등에 프린트 된 T셔츠입니다. 그리고 앞면에는 뭣이 그 명대사가! -rand:1/6,1/6 -============================ -input: -CMT -output: -KillDeathBusiness : CM표(66):헬 입욕제 -몸이 끓는다! 신감각으로 화제를 부른 헬 입욕제가 드디어 등장! 사체의 처리에는 사용하지 말아주세요. -rand:6/6,6/6 -============================ -input: -sErviceST -output: -KillDeathBusiness : 서비스 씬 표(11):탈의계 서비스 신표「의장의 문제」을/를 행한다. -rand:1/6,1/6 -============================ -input: -SERVICEST -output: -KillDeathBusiness : 서비스 씬 표(66):다른 장르계 서비스 신표「로보」을/를 행한다. -rand:6/6,6/6 -============================ -input: -EST -output: -KillDeathBusiness : 서비스 씬 표(11):탈의계 서비스 신표「의장의 문제」을/를 행한다. -rand:1/6,1/6 -============================ -input: -SOUL -output: -KillDeathBusiness : 소울방출표(1):100 -rand:1/6 -============================ -input: -SOUL -output: -KillDeathBusiness : 소울방출표(6):300 -rand:6/6 -============================ -input: -STGT -output: -KillDeathBusiness : 범용 연출표(1):크고 알기 쉬운 자막이 나온다. -rand:1/6 -============================ -input: -STGT -output: -KillDeathBusiness : 범용 연출표(6):헬 밴드의 신곡이 BGM으로 흐른다. -rand:6/6 -============================ -input: -HSAT -output: -KillDeathBusiness : 헬 스타일리스트 매도 표(11,11):「마치『 땀범벅이 된 아르마딜로』같아!」 -rand:1/6,1/6,1/6,1/6,1/6,1/6 -============================ -input: -HSAT -output: -KillDeathBusiness : 헬 스타일리스트 매도 표(66,66):「너는『 엽기살인을 취미로 하고 있는 들개』나 다를 바 없어! 」 -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -HSAT1 -output: -KillDeathBusiness : 헬 스타일리스트 매도 표(11): 땀범벅이 된 -rand:1/6,1/6 -============================ -input: -HSAT1 -output: -KillDeathBusiness : 헬 스타일리스트 매도 표(66): 엽기살인을 취미로 하고 있는 -rand:6/6,6/6 -============================ -input: -HSAT2 -output: -KillDeathBusiness : 헬 스타일리스트 매도 표(11): 아르마딜로 -rand:1/6,1/6 -============================ -input: -HSAT2 -output: -KillDeathBusiness : 헬 스타일리스트 매도 표(66): 들개 -rand:6/6,6/6 -============================ -input: -SKLT -output: -KillDeathBusiness : 지정특기 랜덤결정표(1,2):「직업」《무직》 -rand:1/6,1/6,1/6 -============================ -input: -SKLT -output: -KillDeathBusiness : 지정특기 랜덤결정표(6,12):「소원」《생》 -rand:6/6,6/6,6/6 -============================ -input: -2d6>=5 -output: -KillDeathBusiness : (2D6>=5) > 2[1,1] > 2 > 펌블(판정 실패.【시청률】이 20%감소) -rand:1/6,1/6 -============================ -input: -2d6>=5 -output: -KillDeathBusiness : (2D6>=5) > 12[6,6] > 12 > 스페셜(판정 성공.【시청률】이 10%증가) -rand:6/6,6/6 -============================ -input: -2d6>=5 -output: -KillDeathBusiness : (2D6>=5) > 4[1,3] > 4 > 실패 -rand:1/6,3/6 -============================ -input: -2d6>=5 -output: -KillDeathBusiness : (2D6>=5) > 5[1,4] > 5 > 성공 -rand:4/6,1/6 -============================ -input: -SKLJ -output: -KillDeathBusiness : 지정특기분야 랜덤결정표(1):직업 -rand:1/6 -============================ -input: -SKLJ -output: -KillDeathBusiness : 지정특기분야 랜덤결정표(6):소원 -rand:6/6 -============================ -input: -JD5 -output: -KillDeathBusiness : 판정【난이도5、보정0、펌블치2】 > 주사위 눈(3,1) > 달성치4、난이도미만이므로 판정 실패! -rand:3/6,1/6 -============================ -input: -JD5 -output: -KillDeathBusiness : 판정【난이도5、보정0、펌블치2】 > 주사위 눈(4,1) > 달성치5、난이도이상이므로 판정 성공! -rand:4/6,1/6 -============================ -input: -JD6+1 -output: -KillDeathBusiness : 판정【난이도6、보정1、펌블치2】 > 주사위 눈(3,1) > 달성치5、난이도미만이므로 판정 실패! -rand:3/6,1/6 -============================ -input: -JD6+1 -output: -KillDeathBusiness : 판정【난이도6、보정1、펌블치2】 > 주사위 눈(4,1) > 달성치6、난이도이상이므로 판정 성공! -rand:4/6,1/6 -============================ -input: -JD6-1 -output: -KillDeathBusiness : 판정【난이도6、보정-1、펌블치2】 > 주사위 눈(5,1) > 달성치5、난이도미만이므로 판정 실패! -rand:5/6,1/6 -============================ -input: -JD6-1 -output: -KillDeathBusiness : 판정【난이도6、보정-1、펌블치2】 > 주사위 눈(6,1) > 달성치6、난이도이상이므로 판정 성공! -rand:6/6,1/6 -============================ -input: -JD5,4 -output: -KillDeathBusiness : 판정【난이도5、보정0、펌블치4】 > 주사위 눈(4,1) > 달성치5、난이도이상이므로 판정 성공! -rand:4/6,1/6 -============================ -input: -JD6,5 -output: -KillDeathBusiness : 판정【난이도6、보정0、펌블치5】 > 주사위 눈(4,1) > 주사위 눈이 펌블율 이하이므로 펌블!(판정 실패.【시청률】이 20%감소) -rand:4/6,1/6 -============================ -input: -JD5,5 -output: -KillDeathBusiness : 판정【난이도5、보정0、펌블치5】 > 주사위 눈(4,1) > 주사위 눈이 펌블율 이하이므로 펌블!(판정 실패.【시청률】이 20%감소) -rand:4/6,1/6 -============================ -input: -JD6,5 -output: -KillDeathBusiness : 판정【난이도6、보정0、펌블치5】 > 주사위 눈(4,1) > 주사위 눈이 펌블율 이하이므로 펌블!(판정 실패.【시청률】이 20%감소) -rand:4/6,1/6 -============================ -input: -JD5-1,4 -output: -KillDeathBusiness : 판정【난이도5、보정-1、펌블치4】 > 주사위 눈(4,1) > 달성치4、난이도미만이므로 판정 실패! -rand:4/6,1/6 -============================ -input: -JD5-1,5 -output: -KillDeathBusiness : 판정【난이도5、보정-1、펌블치5】 > 주사위 눈(4,1) > 주사위 눈이 펌블율 이하이므로 펌블!(판정 실패.【시청률】이 20%감소) -rand:4/6,1/6 -============================ -input: -JD5+1,3 -output: -KillDeathBusiness : 판정【난이도5、보정1、펌블치3】 > 주사위 눈(3,1) > 달성치5、난이도이상이므로 판정 성공! -rand:3/6,1/6 -============================ -input: -JD5+1,4 -output: -KillDeathBusiness : 판정【난이도5、보정1、펌블치4】 > 주사위 눈(3,1) > 주사위 눈이 펌블율 이하이므로 펌블!(판정 실패.【시청률】이 20%감소) -rand:3/6,1/6 -============================ -input: -JD12,4 -output: -KillDeathBusiness : 판정【난이도12、보정0、펌블치4】 > 주사위 눈(3,1) > 주사위 눈이 펌블율 이하이므로 펌블!(판정 실패.【시청률】이 20%감소) -rand:3/6,1/6 -============================ -input: -JD12,4 -output: -KillDeathBusiness : 판정【난이도12、보정0、펌블치4】 > 주사위 눈(6,6) > 주사위 눈이 12이므로 스페셜!(판정 성공.【시청률】이 10%증가) -rand:6/6,6/6 -============================ -input: -JD13,2 -output: -KillDeathBusiness : 판정【JD13,2】 > 난이도가 12이상은 스페셜만 성공. -【난이도12、보정0、펌블치2】 > 주사위 눈(6,1) > 달성치7、난이도미만이므로 판정 실패! -rand:6/6,1/6 -============================ -input: -JD4,2 -output: -KillDeathBusiness : 판정【JD4,2】 > 난이도의 최저치는 5. -【난이도5、보정0、펌블치2】 > 주사위 눈(6,1) > 달성치7、난이도이상이므로 판정 성공! -rand:6/6,1/6 -============================ -input: -JD12,12 -output: -KillDeathBusiness : 판정【JD12,12】 > 스페셜을 내면 반드시 성공이므로, 펌블치은 11으로 한다. -【난이도12、보정0、펌블치11】 > 주사위 눈(7,1) > 주사위 눈이 펌블율 이하이므로 펌블!(판정 실패.【시청률】이 20%감소) -rand:7/6,1/6 -============================ -input: -JD13,13 -output: -KillDeathBusiness : 판정【JD13,13】 > 난이도가 12이상은 스페셜만 성공. -【JD13,13】 > 스페셜을 내면 반드시 성공이므로, 펌블치은 11으로 한다. -【난이도12、보정0、펌블치11】 > 주사위 눈(7,1) > 주사위 눈이 펌블율 이하이므로 펌블!(판정 실패.【시청률】이 20%감소) -rand:7/6,1/6 -============================ -input: -ERT -output: -KillDeathBusiness : 소생부작용표(11):늙다리같은 냄새가 나기 시작한다 -rand:1/6,1/6 -============================ -input: -ERT -output: -KillDeathBusiness : 소생부작용표(66):훌륭한 뿔이 이마에 났다 -rand:6/6,6/6 -============================ -input: -WKT -output: -KillDeathBusiness : 일주일간표(11):집에서 쫓겨난 헬P가 묶으러 왔다 -rand:1/6,1/6 -============================ -input: -WKT -output: -KillDeathBusiness : 일주일간표(66):묘하게 기부를 모집하는 영업전화가 걸려오는 주였다 -rand:6/6,6/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -KillDeathBusiness : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/KurayamiCrying.txt b/src/src_bcdice/test/data/KurayamiCrying.txt deleted file mode 100644 index 6054aaeb9..000000000 --- a/src/src_bcdice/test/data/KurayamiCrying.txt +++ /dev/null @@ -1,18 +0,0 @@ -input: -ACT -output: -KurayamiCrying : アクシデント表(1[1]) > 頭の中が黒く染まってゆく、怖い、苦しい。気持ち悪い!でも…なんだか少しだけ、すがすがしい。あなたは「発狂」する。すでに「発狂」している場合、「理性」を2点失う。 -rand:1/10 -============================ -input: -ACT -output: -KurayamiCrying : アクシデント表(10[10]) > まるで自分を支える何かが失われたように、あなたはその場に立ち尽くす。諦めと絶望が心を支配する。ああ、そうか。これが、「心が折れる」ということか……。あなたは「理性」を4点失う。 -rand:10/10 -============================ -input: -ACT3 -output: -KurayamiCrying : 不意を突かれたあなたは、とっさに化物を攻撃する!……確かに化物に見えたのだ。しかし、あなたが手にかけたのは見知った顔だった。あなたが正の「ツナガリ」を結んでいる主人公をランダムに1人選び、2点のダメージを与える。正の「ツナガリ」を結んでいる主人公がいない場合、ダイスを振り直し、再度「アクシデント表」に当てはめる。 -rand: -============================ diff --git a/src/src_bcdice/test/data/LiveraDoll.txt b/src/src_bcdice/test/data/LiveraDoll.txt deleted file mode 100644 index 6b3af790a..000000000 --- a/src/src_bcdice/test/data/LiveraDoll.txt +++ /dev/null @@ -1,150 +0,0 @@ -input: -ATK1 -output: -LiveraDoll : 1D6(Block:1) > 1 > × > 成功数:0 -rand:1/6 -============================ -input: -ATK1 -output: -LiveraDoll : 1D6(Block:1) > 6 > 6 > 成功数:1 -rand:6/6 -============================ -input: -3ATK1 -output: -LiveraDoll : 3D6(Block:1) > 1,1,1 > ×,×,× > 成功数:0 -rand:1/6,1/6,1/6 -============================ -input: -3ATK1 -output: -LiveraDoll : 3D6(Block:1) > 1,2,3 > ×,2,3 > 成功数:2 -rand:1/6,2/6,3/6 -============================ -input: -3ATK123 -output: -LiveraDoll : 3D6(Block:1,2,3) > 1,2,3 > ×,×,× > 成功数:0 -rand:1/6,2/6,3/6 -============================ -input: -3ATK231 -output: -LiveraDoll : 3D6(Block:1,2,3) > 2,3,4 > ×,×,4 > 成功数:1 -rand:2/6,3/6,4/6 -============================ -input: -6ATK156 -output: -LiveraDoll : 6D6(Block:1,5,6) > 1,2,3,4,5,6 > ×,2,3,4,×,× > 成功数:3 -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -CL1 -output: -LiveraDoll : 『ストライク』 対象に【アタック:1《OD》】を行い、可能ならば追加で【エクストルード】を行う(可能な状況であれば行わなければならない)。 -rand: -============================ -input: -CD2 -output: -LiveraDoll : 『迷子の貴女へ(きめられないのなら、そのままどうぞ)』 全ての色(無色を含む)のAsレベルが3であるかのようにオーナーズネイルを使用することが出来る。 -rand: -============================ -input: -KL1 -output: -LiveraDoll : 『黒爪の掻きむしり(デザイア・スクラッチ)』 対象に【アタック:黒Asレベル《OD》+1】を行う。 -rand: -============================ -input: -KD2 -output: -LiveraDoll : 『第二夜の黒(クレセントブラック・ドレス)』 自身がドロゥを行う時、自身に【アタック:1】を行うことで、ドロゥ数を+2しても良い。 -rand: -============================ -input: -KO3 -output: -LiveraDoll : 『漆黒の願い(ブラック・ウィッシュ)』 このラウンドの終了時まで、自身の黒のコスト上限を3増加する。(例えば、現在の黒のAsレベルが2である場合、このラウンドの間のみAsレベルが5であるかのようにオーナーズネイルを使用することが出来る。ただし、実際にAsレベルが上昇しているわけではないことに注意すること) -rand: -============================ -input: -wl11 -output: -LiveraDoll : 『白の語り部(ホワイトテラー)』 ダイスロールで使用されたダイス全ての出目を6に変更する。 -rand: -============================ -input: -wd5 -output: -LiveraDoll : 『皇帝の白(ホワイトエンペラー)』 自身の「シールドレス」が破壊される度に、1d6のダイスロールを行う。この時1か2の出目が出た場合「シールドレス」を1枚回復する。 -rand: -============================ -input: -wo17 -output: -LiveraDoll : 『混色もまた物語:緑(ロア:グリーン)』 プレイヤー1人を対象とする。対象の「シールドレス」を1枚回復する。 -rand: -============================ -input: -Rl1 -output: -LiveraDoll : 『焼きつくせ炎の爪(ファイアクロウ)』 対象に【アタック:赤Asレベル《OD》+2】を行う。 -rand: -============================ -input: -Rd1 -output: -LiveraDoll : 『灯散らす赤き花輪(フローラルリング)』 リヴラフェイズ開始時に、任意のユニット1体を対象とし【アタック:1】を行ってもよい。 -rand: -============================ -input: -Ro1 -output: -LiveraDoll : 『走れ雷電(ライトニング・ボルト)』 ユニット1体を対象とし、【アタック:2】を行う。全てのプレイヤーは、このオーナイズネイルに対し、リアクトネイルを使用することが出来ない。 -rand: -============================ -input: -bL2 -output: -LiveraDoll : 『蒼天の剣靴(ストラトスフィア・ブレイドブーツ)』 対象に【アタック:1】を行う。対象が自身よりも低い「高度」に存在する場合、代わりに【アタック:4《OD》】を行い、対象の存在するセルへ移動する。 -rand: -============================ -input: -bD2 -output: -LiveraDoll : 『碧海を舞い(ブルー・アルペジオ)』 自身が「高度:0」にいる間、ドロゥ数を2増加する。 -rand: -============================ -input: -bO2 -output: -LiveraDoll : 『入念な思考(これとこれは、いらないかな)』 【ドロゥ:1】を行い、セットダイスから任意のひとつを取り除く。 -rand: -============================ -input: -GL3 -output: -LiveraDoll : 『巨腕の操者(ストレングス・アーム)』 対象に【アタック:5】を行い、【アタック:2】を行い、続けて【エクストルード】を行う。 -rand: -============================ -input: -GD3 -output: -LiveraDoll : 『昇華の階段(スパイラル・アセンション)』 スタンバイフェイズ毎に、ダイスを2個振り、セルをひとつ指定して良い。そうした場合、そのセルの高度はダイスので目の合計値に変更される。 -rand: -============================ -input: -GO3 -output: -LiveraDoll : 『自然の叡智(ネイチャーズ・ウィズダム)』 アタックネイル、リアクトネイルのいずれか一方を指定する。全てのプレイヤーはこのラウンド終了時まで、選択されたネイルを使用することが出来ない。 -rand: -============================ -input: -ED4 -output: -LiveraDoll : 『青の翼龍(ヴァイエル)』 1.このユニットが使用するアタックネイルの対象を1増加しても良い。 2.このユニットが「高度:9」以上に存在する限り、ブロックナンバーに4を追加する。 -rand: -============================ diff --git a/src/src_bcdice/test/data/LogHorizon.txt b/src/src_bcdice/test/data/LogHorizon.txt deleted file mode 100644 index e2515ad48..000000000 --- a/src/src_bcdice/test/data/LogHorizon.txt +++ /dev/null @@ -1,2461 +0,0 @@ -input: -3LH -output: -LogHorizon : (3LH) > 8[6,1,1] > 8 -rand:6/6,1/6,1/6 -============================ -input: -3LH+3>=10 -output: -LogHorizon : (3LH+3>=10) > 7[5,1,1]+3 > 10 > 成功 -rand:5/6,1/6,1/6 -============================ -input: -3LH-2>=5 -output: -LogHorizon : (3LH-2>=5) > 6[4,1,1]-2 > 4 > 失敗 -rand:4/6,1/6,1/6 -============================ -input: -3LH+3>=10 -output: -LogHorizon : (3LH+3>=10) > 3[1,1,1]+3 > 6 > ファンブル! -rand:1/6,1/6,1/6 -============================ -input: -3LH+3>=10 -output: -LogHorizon : (3LH+3>=10) > 13[6,1,6]+3 > 16 > クリティカル! -rand:6/6,1/6,6/6 -============================ -input: -PCT11 -output: -LogHorizon : 体力消耗表(1[1]):[疲労:25]を受ける -rand:1/6 -============================ -input: -PCT11-1 -output: -LogHorizon : 体力消耗表(0[1]):消耗なし -rand:1/6 -============================ -input: -PCT11-2 -output: -LogHorizon : 体力消耗表(-1[1]):消耗なし -rand:1/6 -============================ -input: -PCT11 -output: -LogHorizon : 体力消耗表(6[6]):[疲労:65]を受け、【因果力】を1点失う -rand:6/6 -============================ -input: -PCT11+1 -output: -LogHorizon : 体力消耗表(7[6]):[疲労:65]を受け、【因果力】を2点失う -rand:6/6 -============================ -input: -PCT11+2 -output: -LogHorizon : 体力消耗表(8[6]):[疲労:65]を受け、【因果力】を2点失う -rand:6/6 -============================ -input: -PCT14 -output: -LogHorizon : 体力消耗表(6[6]):[疲労:65]を受け、【因果力】を1点失う -rand:6/6 -============================ -input: -PCT15 -output: -LogHorizon : 体力消耗表(6[6]):[疲労:65]を受け、【因果力】を1点失う -rand:6/6 -============================ -input: -PCT16 -output: -LogHorizon : 体力消耗表(6[6]):[疲労:90]を受け、【因果力】を2点失う -rand:6/6 -============================ -input: -PCT20 -output: -LogHorizon : 体力消耗表(6[6]):[疲労:90]を受け、【因果力】を2点失う -rand:6/6 -============================ -input: -PCT21 -output: -LogHorizon : 体力消耗表(1[1]):[疲労:60]を受ける -rand:1/6 -============================ -input: -PCT21-1 -output: -LogHorizon : 体力消耗表(0[1]):消耗なし -rand:1/6 -============================ -input: -PCT21-2 -output: -LogHorizon : 体力消耗表(-1[1]):消耗なし -rand:1/6 -============================ -input: -PCT21 -output: -LogHorizon : 体力消耗表(6[6]):[疲労:100]を受け、【因果力】を2点失う -rand:6/6 -============================ -input: -PCT21+1 -output: -LogHorizon : 体力消耗表(7[6]):[疲労:100]を受け、【因果力】を3点失う -rand:6/6 -============================ -input: -PCT21+2 -output: -LogHorizon : 体力消耗表(8[6]):[疲労:100]を受け、【因果力】を3点失う -rand:6/6 -============================ -input: -PCT24 -output: -LogHorizon : 体力消耗表(6[6]):[疲労:100]を受け、【因果力】を2点失う -rand:6/6 -============================ -input: -PCT25 -output: -LogHorizon : 体力消耗表(6[6]):[疲労:100]を受け、【因果力】を2点失う -rand:6/6 -============================ -input: -PCT26 -output: -LogHorizon : 体力消耗表(6[6]):[疲労:120]を受け、【因果力】を2点失う -rand:6/6 -============================ -input: -PCT30 -output: -LogHorizon : 体力消耗表(6[6]):[疲労:120]を受け、【因果力】を2点失う -rand:6/6 -============================ -input: -PCT31 -output: -LogHorizon : 体力消耗表(6[6]):[疲労:120]を受け、【因果力】を2点失う -rand:6/6 -============================ -input: -PCT30$7 -output: -LogHorizon : 体力消耗表(7[7]):[疲労:120]を受け、【因果力】を3点失う -rand: -============================ -input: -PCT30+1$7 -output: -LogHorizon : 体力消耗表(8[7]):[疲労:120]を受け、【因果力】を3点失う -rand: -============================ -input: -ECT11 -output: -LogHorizon : 気力消耗表(1[1]):【因果力】を1点失う -rand:1/6 -============================ -input: -ECT11-1 -output: -LogHorizon : 気力消耗表(0[1]):消耗なし -rand:1/6 -============================ -input: -ECT11-2 -output: -LogHorizon : 気力消耗表(-1[1]):消耗なし -rand:1/6 -============================ -input: -ECT11 -output: -LogHorizon : 気力消耗表(6[6]):【因果力】を3点失う -rand:6/6 -============================ -input: -ECT11+1 -output: -LogHorizon : 気力消耗表(7[6]):【因果力】を4点失う -rand:6/6 -============================ -input: -ECT11+2 -output: -LogHorizon : 気力消耗表(8[6]):【因果力】を4点失う -rand:6/6 -============================ -input: -ECT14 -output: -LogHorizon : 気力消耗表(6[6]):【因果力】を3点失う -rand:6/6 -============================ -input: -ECT15 -output: -LogHorizon : 気力消耗表(6[6]):【因果力】を3点失う -rand:6/6 -============================ -input: -ECT16 -output: -LogHorizon : 気力消耗表(6[6]):【因果力】を1点失い、特技喪失する -rand:6/6 -============================ -input: -ECT20 -output: -LogHorizon : 気力消耗表(6[6]):【因果力】を1点失い、特技喪失する -rand:6/6 -============================ -input: -ECT21 -output: -LogHorizon : 気力消耗表(1[1]):【因果力】を1点失う -rand:1/6 -============================ -input: -ECT21-1 -output: -LogHorizon : 気力消耗表(0[1]):消耗なし -rand:1/6 -============================ -input: -ECT21-2 -output: -LogHorizon : 気力消耗表(-1[1]):消耗なし -rand:1/6 -============================ -input: -ECT21 -output: -LogHorizon : 気力消耗表(6[6]):【因果力】を2点失い、特技喪失する -rand:6/6 -============================ -input: -ECT21+1 -output: -LogHorizon : 気力消耗表(7[6]):【因果力】を3点失い、特技喪失する -rand:6/6 -============================ -input: -ECT21+2 -output: -LogHorizon : 気力消耗表(8[6]):【因果力】を3点失い、特技喪失する -rand:6/6 -============================ -input: -ECT24 -output: -LogHorizon : 気力消耗表(6[6]):【因果力】を2点失い、特技喪失する -rand:6/6 -============================ -input: -ECT25 -output: -LogHorizon : 気力消耗表(6[6]):【因果力】を2点失い、特技喪失する -rand:6/6 -============================ -input: -ECT26 -output: -LogHorizon : 気力消耗表(6[6]):【因果力】を2点失い、特技喪失する -rand:6/6 -============================ -input: -ECT30 -output: -LogHorizon : 気力消耗表(6[6]):【因果力】を2点失い、特技喪失する -rand:6/6 -============================ -input: -ECT31 -output: -LogHorizon : 気力消耗表(6[6]):【因果力】を2点失い、特技喪失する -rand:6/6 -============================ -input: -ECT30$7 -output: -LogHorizon : 気力消耗表(7[7]):【因果力】を3点失い、特技喪失する -rand: -============================ -input: -ECT30+1$7 -output: -LogHorizon : 気力消耗表(8[7]):【因果力】を3点失い、特技喪失する -rand: -============================ -input: -GCT11 -output: -LogHorizon : 物品消耗表(1[1]):[消耗品]アイテムを1個失う -rand:1/6 -============================ -input: -GCT11-1 -output: -LogHorizon : 物品消耗表(0[1]):消耗なし -rand:1/6 -============================ -input: -GCT11-2 -output: -LogHorizon : 物品消耗表(-1[1]):消耗なし -rand:1/6 -============================ -input: -GCT11 -output: -LogHorizon : 物品消耗表(6[6]):[消耗品]アイテムを3個失い、[圧迫:1]を受ける -rand:6/6 -============================ -input: -GCT11+1 -output: -LogHorizon : 物品消耗表(7[6]):[消耗品]アイテムを3個失い、[圧迫:2]を受ける -rand:6/6 -============================ -input: -GCT11+2 -output: -LogHorizon : 物品消耗表(8[6]):[消耗品]アイテムを3個失い、[圧迫:2]を受ける -rand:6/6 -============================ -input: -GCT14 -output: -LogHorizon : 物品消耗表(6[6]):[消耗品]アイテムを3個失い、[圧迫:1]を受ける -rand:6/6 -============================ -input: -GCT15 -output: -LogHorizon : 物品消耗表(6[6]):[消耗品]アイテムを3個失い、[圧迫:1]を受ける -rand:6/6 -============================ -input: -GCT16 -output: -LogHorizon : 物品消耗表(6[6]):[消耗品]アイテムを4個失う -rand:6/6 -============================ -input: -GCT20 -output: -LogHorizon : 物品消耗表(6[6]):[消耗品]アイテムを4個失う -rand:6/6 -============================ -input: -GCT21 -output: -LogHorizon : 物品消耗表(1[1]):[消耗品]アイテムを2個失う -rand:1/6 -============================ -input: -GCT21-1 -output: -LogHorizon : 物品消耗表(0[1]):消耗なし -rand:1/6 -============================ -input: -GCT21-2 -output: -LogHorizon : 物品消耗表(-1[1]):消耗なし -rand:1/6 -============================ -input: -GCT21 -output: -LogHorizon : 物品消耗表(6[6]):[消耗品]アイテムを4個失い、[圧迫:1]を受ける -rand:6/6 -============================ -input: -GCT21+1 -output: -LogHorizon : 物品消耗表(7[6]):[消耗品]アイテムを4個失い、[圧迫:2]を受ける -rand:6/6 -============================ -input: -GCT21+2 -output: -LogHorizon : 物品消耗表(8[6]):[消耗品]アイテムを4個失い、[圧迫:2]を受ける -rand:6/6 -============================ -input: -GCT24 -output: -LogHorizon : 物品消耗表(6[6]):[消耗品]アイテムを4個失い、[圧迫:1]を受ける -rand:6/6 -============================ -input: -GCT25 -output: -LogHorizon : 物品消耗表(6[6]):[消耗品]アイテムを4個失い、[圧迫:1]を受ける -rand:6/6 -============================ -input: -GCT26 -output: -LogHorizon : 物品消耗表(6[6]):[消耗品]アイテムを4個失い、[圧迫:2]を受ける -rand:6/6 -============================ -input: -GCT30 -output: -LogHorizon : 物品消耗表(6[6]):[消耗品]アイテムを4個失い、[圧迫:2]を受ける -rand:6/6 -============================ -input: -GCT31 -output: -LogHorizon : 物品消耗表(6[6]):[消耗品]アイテムを4個失い、[圧迫:2]を受ける -rand:6/6 -============================ -input: -GCT30$7 -output: -LogHorizon : 物品消耗表(7[7]):[消耗品]アイテムを4個失い、[圧迫:3]を受ける -rand: -============================ -input: -GCT30+1$7 -output: -LogHorizon : 物品消耗表(8[7]):[消耗品]アイテムを4個失い、[圧迫:3]を受ける -rand: -============================ -input: -CCT11 -output: -LogHorizon : 金銭消耗表(1[1]):所持金を50G失う -rand:1/6 -============================ -input: -CCT11-1 -output: -LogHorizon : 金銭消耗表(0[1]):消耗なし -rand:1/6 -============================ -input: -CCT11-2 -output: -LogHorizon : 金銭消耗表(-1[1]):消耗なし -rand:1/6 -============================ -input: -CCT11 -output: -LogHorizon : 金銭消耗表(6[6]):所持金を190G失う -rand:6/6 -============================ -input: -CCT11+1 -output: -LogHorizon : 金銭消耗表(7[6]):所持金を220G失う -rand:6/6 -============================ -input: -CCT11+2 -output: -LogHorizon : 金銭消耗表(8[6]):所持金を220G失う -rand:6/6 -============================ -input: -CCT14 -output: -LogHorizon : 金銭消耗表(6[6]):所持金を190G失う -rand:6/6 -============================ -input: -CCT15 -output: -LogHorizon : 金銭消耗表(6[6]):所持金を190G失う -rand:6/6 -============================ -input: -CCT16 -output: -LogHorizon : 金銭消耗表(6[6]):所持金を350G失う -rand:6/6 -============================ -input: -CCT20 -output: -LogHorizon : 金銭消耗表(6[6]):所持金を350G失う -rand:6/6 -============================ -input: -CCT21 -output: -LogHorizon : 金銭消耗表(1[1]):所持金を160G失う -rand:1/6 -============================ -input: -CCT21-1 -output: -LogHorizon : 金銭消耗表(0[1]):消耗なし -rand:1/6 -============================ -input: -CCT21-2 -output: -LogHorizon : 金銭消耗表(-1[1]):消耗なし -rand:1/6 -============================ -input: -CCT21 -output: -LogHorizon : 金銭消耗表(6[6]):所持金を560G失う -rand:6/6 -============================ -input: -CCT21+1 -output: -LogHorizon : 金銭消耗表(7[6]):所持金を640G失う -rand:6/6 -============================ -input: -CCT21+2 -output: -LogHorizon : 金銭消耗表(8[6]):所持金を640G失う -rand:6/6 -============================ -input: -CCT24 -output: -LogHorizon : 金銭消耗表(6[6]):所持金を560G失う -rand:6/6 -============================ -input: -CCT25 -output: -LogHorizon : 金銭消耗表(6[6]):所持金を560G失う -rand:6/6 -============================ -input: -CCT26 -output: -LogHorizon : 金銭消耗表(6[6]):所持金を760G失う -rand:6/6 -============================ -input: -CCT30 -output: -LogHorizon : 金銭消耗表(6[6]):所持金を760G失う -rand:6/6 -============================ -input: -CCT31 -output: -LogHorizon : 金銭消耗表(6[6]):所持金を760G失う -rand:6/6 -============================ -input: -CCT30$7 -output: -LogHorizon : 金銭消耗表(7[7]):所持金を870G失う -rand: -============================ -input: -CCT30+1$7 -output: -LogHorizon : 金銭消耗表(8[7]):所持金を870G失う -rand: -============================ -input: -CTRS1 -output: -LogHorizon : 金銭財宝表(7[1,1]):35G -rand:1/6,1/6 -============================ -input: -CTRS1 -output: -LogHorizon : 金銭財宝表(17[6,6]):55G -rand:6/6,6/6 -============================ -input: -CTRS1-1 -output: -LogHorizon : 金銭財宝表(7[1,1]):35G -rand:1/6,1/6 -============================ -input: -CTRS1+1 -output: -LogHorizon : 金銭財宝表(8[1,1]):40G -rand:1/6,1/6 -============================ -input: -CTRS6 -output: -LogHorizon : 金銭財宝表(32[1,1]):100G -rand:1/6,1/6 -============================ -input: -CTRS6 -output: -LogHorizon : 金銭財宝表(42[6,6]):150G -rand:6/6,6/6 -============================ -input: -CTRS10 -output: -LogHorizon : 金銭財宝表(52[1,1]):205G -rand:1/6,1/6 -============================ -input: -CTRS10 -output: -LogHorizon : 金銭財宝表(62[6,6]):275G -rand:6/6,6/6 -============================ -input: -CTRS11 -output: -LogHorizon : 金銭財宝表(57[1,1]):240G -rand:1/6,1/6 -============================ -input: -CTRS11 -output: -LogHorizon : 金銭財宝表(67[6,6]):310G -rand:6/6,6/6 -============================ -input: -CTRS16 -output: -LogHorizon : 金銭財宝表(82[1,1]):450G -rand:1/6,1/6 -============================ -input: -CTRS16 -output: -LogHorizon : 金銭財宝表(92[6,6]):550G -rand:6/6,6/6 -============================ -input: -CTRS21 -output: -LogHorizon : 金銭財宝表(107[1,1]):730G -rand:1/6,1/6 -============================ -input: -CTRS21 -output: -LogHorizon : 金銭財宝表(117[6,6]):860G -rand:6/6,6/6 -============================ -input: -CTRS26 -output: -LogHorizon : 金銭財宝表(132[1,1]):1080G -rand:1/6,1/6 -============================ -input: -CTRS26 -output: -LogHorizon : 金銭財宝表(142[6,6]):1240G -rand:6/6,6/6 -============================ -input: -CTRS30 -output: -LogHorizon : 金銭財宝表(152[1,1]):1410G -rand:1/6,1/6 -============================ -input: -CTRS30 -output: -LogHorizon : 金銭財宝表(162[6,6]):1600G -rand:6/6,6/6 -============================ -input: -CTRS30+1 -output: -LogHorizon : 金銭財宝表(163[6,6]):1430G&200G -rand:6/6,6/6 -============================ -input: -CTRS30+10 -output: -LogHorizon : 金銭財宝表(172[6,6]):1600G&200G -rand:6/6,6/6 -============================ -input: -CTRS30+11 -output: -LogHorizon : 金銭財宝表(173[6,6]):1430G&400G -rand:6/6,6/6 -============================ -input: -CTRS30+20 -output: -LogHorizon : 金銭財宝表(182[6,6]):1600G&400G -rand:6/6,6/6 -============================ -input: -CTRS30+21 -output: -LogHorizon : 金銭財宝表(183[6,6]):1430G&600G -rand:6/6,6/6 -============================ -input: -CTRS30+25 -output: -LogHorizon : 金銭財宝表(187[6,6]):1500G&600G -rand:6/6,6/6 -============================ -input: -CTRS30+26 -output: -LogHorizon : 金銭財宝表(187[6,6]):1500G&600G -rand:6/6,6/6 -============================ -input: -CTRS30$ -output: -LogHorizon : 金銭財宝表(157[7]):1500G -rand: -============================ -input: -CTRS30+1$ -output: -LogHorizon : 金銭財宝表(158[7]):1520G -rand: -============================ -input: -CTRS+157 -output: -LogHorizon : 金銭財宝表(157):1500G -rand: -============================ -input: -CTRS -output: -LogHorizon : CTRS -rand: -============================ -input: -MTRS1 -output: -LogHorizon : 魔法素材財宝表(7[1,1]):魔触媒2[魔触媒2](20G)&魔触媒1[魔触媒1](15G) -rand:1/6,1/6 -============================ -input: -MTRS1 -output: -LogHorizon : 魔法素材財宝表(12[3,4]):滑らかな被膜[コア素材](30G) -rand:3/6,4/6 -============================ -input: -MTRS1 -output: -LogHorizon : 魔法素材財宝表(17[6,6]):魔触媒3[魔触媒3](25G)&魔触媒2[魔触媒2](20G) -rand:6/6,6/6 -============================ -input: -MTRS1-1 -output: -LogHorizon : 魔法素材財宝表(7[1,1]):魔触媒2[魔触媒2](20G)&魔触媒1[魔触媒1](15G) -rand:1/6,1/6 -============================ -input: -MTRS1+1 -output: -LogHorizon : 魔法素材財宝表(8[1,1]):新緑の若芽[コア素材](30G) -rand:1/6,1/6 -============================ -input: -MTRS6 -output: -LogHorizon : 魔法素材財宝表(32[1,1]):雄々しい角[コア素材](80G) -rand:1/6,1/6 -============================ -input: -MTRS6 -output: -LogHorizon : 魔法素材財宝表(37[3,4]):魔触媒7[魔触媒7](60G)&魔触媒6[魔触媒6](50G) -rand:3/6,4/6 -============================ -input: -MTRS6 -output: -LogHorizon : 魔法素材財宝表(42[6,6]):動力ケーブル[コア素材](120G) -rand:6/6,6/6 -============================ -input: -MTRS10 -output: -LogHorizon : 魔法素材財宝表(52[1,1]):魔導錠[コア素材](180G) -rand:1/6,1/6 -============================ -input: -MTRS10 -output: -LogHorizon : 魔法素材財宝表(57[3,4]):魔触媒11[魔触媒11](120G)&魔触媒10[魔触媒10](110G) -rand:3/6,4/6 -============================ -input: -MTRS10 -output: -LogHorizon : 魔法素材財宝表(62[6,6]):呪紋水晶[コア素材](240G) -rand:6/6,6/6 -============================ -input: -MTRS11 -output: -LogHorizon : 魔法素材財宝表(57[1,1]):魔触媒11[魔触媒11](120G)&魔触媒10[魔触媒10](110G) -rand:1/6,1/6 -============================ -input: -MTRS11 -output: -LogHorizon : 魔法素材財宝表(62[3,4]):呪紋水晶[コア素材](240G) -rand:3/6,4/6 -============================ -input: -MTRS11 -output: -LogHorizon : 魔法素材財宝表(67[6,6]):魔触媒12[魔触媒12](150G)x2 -rand:6/6,6/6 -============================ -input: -MTRS16 -output: -LogHorizon : 魔法素材財宝表(82[1,1]):雪桃の実[コア素材](440G) -rand:1/6,1/6 -============================ -input: -MTRS16 -output: -LogHorizon : 魔法素材財宝表(87[3,4]):魔触媒16[魔触媒16](250G)&魔触媒15[魔触媒15](220G) -rand:3/6,4/6 -============================ -input: -MTRS16 -output: -LogHorizon : 魔法素材財宝表(92[6,6]):千年王樹の種子[コア素材](560G) -rand:6/6,6/6 -============================ -input: -MTRS21 -output: -LogHorizon : 魔法素材財宝表(107[1,1]):魔触媒20[魔触媒20](370G)&魔触媒19[魔触媒19](340G) -rand:1/6,1/6 -============================ -input: -MTRS21 -output: -LogHorizon : 魔法素材財宝表(112[3,4]):清掃用女中人形九号[コア素材](820G) -rand:3/6,4/6 -============================ -input: -MTRS21 -output: -LogHorizon : 魔法素材財宝表(117[6,6]):魔触媒22[魔触媒22](450G)&魔触媒21[魔触媒21](410G) -rand:6/6,6/6 -============================ -input: -MTRS26 -output: -LogHorizon : 魔法素材財宝表(132[1,1]):火炎巨人の尺骨[コア素材](1160G) -rand:1/6,1/6 -============================ -input: -MTRS26 -output: -LogHorizon : 魔法素材財宝表(137[3,4]):魔触媒25[魔触媒25](580G)x2 -rand:3/6,4/6 -============================ -input: -MTRS26 -output: -LogHorizon : 魔法素材財宝表(142[6,6]):コアトルの毒腺[コア素材](1340G) -rand:6/6,6/6 -============================ -input: -MTRS30 -output: -LogHorizon : 魔法素材財宝表(152[1,1]):衝撃竜の牙[コア素材](1540G) -rand:1/6,1/6 -============================ -input: -MTRS30 -output: -LogHorizon : 魔法素材財宝表(157[3,4]):魔触媒30[魔触媒30](820G)&輝くメガネ[換金](680G) -rand:3/6,4/6 -============================ -input: -MTRS30 -output: -LogHorizon : 魔法素材財宝表(162[6,6]):陽喰い鳥の嘴[コア素材](1640G) -rand:6/6,6/6 -============================ -input: -MTRS30+1 -output: -LogHorizon : 魔法素材財宝表(163[6,6]):魔触媒29[魔触媒29](770G)&茨を模したティアラ[換金](650G)&200G -rand:6/6,6/6 -============================ -input: -MTRS30+10 -output: -LogHorizon : 魔法素材財宝表(172[6,6]):陽喰い鳥の嘴[コア素材](1640G)&200G -rand:6/6,6/6 -============================ -input: -MTRS30+11 -output: -LogHorizon : 魔法素材財宝表(173[6,6]):魔触媒29[魔触媒29](770G)&茨を模したティアラ[換金](650G)&400G -rand:6/6,6/6 -============================ -input: -MTRS30+20 -output: -LogHorizon : 魔法素材財宝表(182[6,6]):陽喰い鳥の嘴[コア素材](1640G)&400G -rand:6/6,6/6 -============================ -input: -MTRS30+21 -output: -LogHorizon : 魔法素材財宝表(183[6,6]):魔触媒29[魔触媒29](770G)&茨を模したティアラ[換金](650G)&600G -rand:6/6,6/6 -============================ -input: -MTRS30+25 -output: -LogHorizon : 魔法素材財宝表(187[6,6]):魔触媒30[魔触媒30](820G)&輝くメガネ[換金](680G)&600G -rand:6/6,6/6 -============================ -input: -MTRS30+26 -output: -LogHorizon : 魔法素材財宝表(187[6,6]):魔触媒30[魔触媒30](820G)&輝くメガネ[換金](680G)&600G -rand:6/6,6/6 -============================ -input: -MTRS30$ -output: -LogHorizon : 魔法素材財宝表(157[7]):魔触媒30[魔触媒30](820G)&輝くメガネ[換金](680G) -rand: -============================ -input: -MTRS30+1$ -output: -LogHorizon : 魔法素材財宝表(158[7]):翡翠甲虫の刃翅[コア素材](1640G) -rand: -============================ -input: -MTRS+157 -output: -LogHorizon : 魔法素材財宝表(157):魔触媒30[魔触媒30](820G)&輝くメガネ[換金](680G) -rand: -============================ -input: -MTRS -output: -LogHorizon : MTRS -rand: -============================ -input: -ITRS1 -output: -LogHorizon : 換金アイテム財宝表(7[1,1]):破れた書籍[換金](30G) -rand:1/6,1/6 -============================ -input: -ITRS1 -output: -LogHorizon : 換金アイテム財宝表(12[3,4]):犬のぬいぐるみ[換金](40G) -rand:3/6,4/6 -============================ -input: -ITRS1 -output: -LogHorizon : 換金アイテム財宝表(17[6,6]):毛糸の帽子[換金](50G) -rand:6/6,6/6 -============================ -input: -ITRS1-1 -output: -LogHorizon : 換金アイテム財宝表(7[1,1]):破れた書籍[換金](30G) -rand:1/6,1/6 -============================ -input: -ITRS1+1 -output: -LogHorizon : 換金アイテム財宝表(8[1,1]):古ぼけたぬいぐるみ[換金](40G) -rand:1/6,1/6 -============================ -input: -ITRS6 -output: -LogHorizon : 換金アイテム財宝表(32[1,1]):銀の食器[換金](100G) -rand:1/6,1/6 -============================ -input: -ITRS6 -output: -LogHorizon : 換金アイテム財宝表(37[3,4]):枝分かれした角[換金](120G) -rand:3/6,4/6 -============================ -input: -ITRS6 -output: -LogHorizon : 換金アイテム財宝表(42[6,6]):幻獣の牙[換金](150G) -rand:6/6,6/6 -============================ -input: -ITRS10 -output: -LogHorizon : 換金アイテム財宝表(52[1,1]):ねず耳カチューシャ[換金](200G) -rand:1/6,1/6 -============================ -input: -ITRS10 -output: -LogHorizon : 換金アイテム財宝表(57[3,4]):舞踏会の仮面[換金](240G) -rand:3/6,4/6 -============================ -input: -ITRS10 -output: -LogHorizon : 換金アイテム財宝表(62[6,6]):魔法のドレス[換金](270G) -rand:6/6,6/6 -============================ -input: -ITRS11 -output: -LogHorizon : 換金アイテム財宝表(57[1,1]):舞踏会の仮面[換金](240G) -rand:1/6,1/6 -============================ -input: -ITRS11 -output: -LogHorizon : 換金アイテム財宝表(62[3,4]):魔法のドレス[換金](270G) -rand:3/6,4/6 -============================ -input: -ITRS11 -output: -LogHorizon : 換金アイテム財宝表(67[6,6]):籐製の椅子[換金](310G) -rand:6/6,6/6 -============================ -input: -ITRS16 -output: -LogHorizon : 換金アイテム財宝表(82[1,1]):古風な紳士服[換金](450G) -rand:1/6,1/6 -============================ -input: -ITRS16 -output: -LogHorizon : 換金アイテム財宝表(87[3,4]):楓の書棚[換金](500G) -rand:3/6,4/6 -============================ -input: -ITRS16 -output: -LogHorizon : 換金アイテム財宝表(92[6,6]):大きな宝石箱[換金](550G) -rand:6/6,6/6 -============================ -input: -ITRS21 -output: -LogHorizon : 換金アイテム財宝表(107[1,1]):木製の貨幣[換金](730G) -rand:1/6,1/6 -============================ -input: -ITRS21 -output: -LogHorizon : 換金アイテム財宝表(112[3,4]):真鍮製のゲーム盤[換金](790G) -rand:3/6,4/6 -============================ -input: -ITRS21 -output: -LogHorizon : 換金アイテム財宝表(117[6,6]):鍵のかかった宝石箱[換金](860G) -rand:6/6,6/6 -============================ -input: -ITRS26 -output: -LogHorizon : 換金アイテム財宝表(132[1,1]):透明な文箱[換金](1080G) -rand:1/6,1/6 -============================ -input: -ITRS26 -output: -LogHorizon : 換金アイテム財宝表(137[3,4]):香辛料のセット[換金](1160G) -rand:3/6,4/6 -============================ -input: -ITRS26 -output: -LogHorizon : 換金アイテム財宝表(142[6,6]):魔法銀の塊[換金](1240G) -rand:6/6,6/6 -============================ -input: -ITRS30 -output: -LogHorizon : 換金アイテム財宝表(152[1,1]):漆黒の呪具[換金](1410G) -rand:1/6,1/6 -============================ -input: -ITRS30 -output: -LogHorizon : 換金アイテム財宝表(157[3,4]):しゃべる姿見[換金](1500G) -rand:3/6,4/6 -============================ -input: -ITRS30 -output: -LogHorizon : 換金アイテム財宝表(162[6,6]):藍玉の腕輪[換金](1600G) -rand:6/6,6/6 -============================ -input: -ITRS30+1 -output: -LogHorizon : 換金アイテム財宝表(163[6,6]):精巧な馬具[換金](1430G)&200G -rand:6/6,6/6 -============================ -input: -ITRS30+10 -output: -LogHorizon : 換金アイテム財宝表(172[6,6]):藍玉の腕輪[換金](1600G)&200G -rand:6/6,6/6 -============================ -input: -ITRS30+11 -output: -LogHorizon : 換金アイテム財宝表(173[6,6]):精巧な馬具[換金](1430G)&400G -rand:6/6,6/6 -============================ -input: -ITRS30+20 -output: -LogHorizon : 換金アイテム財宝表(182[6,6]):藍玉の腕輪[換金](1600G)&400G -rand:6/6,6/6 -============================ -input: -ITRS30+21 -output: -LogHorizon : 換金アイテム財宝表(183[6,6]):精巧な馬具[換金](1430G)&600G -rand:6/6,6/6 -============================ -input: -ITRS30+25 -output: -LogHorizon : 換金アイテム財宝表(187[6,6]):しゃべる姿見[換金](1500G)&600G -rand:6/6,6/6 -============================ -input: -ITRS30+26 -output: -LogHorizon : 換金アイテム財宝表(187[6,6]):しゃべる姿見[換金](1500G)&600G -rand:6/6,6/6 -============================ -input: -ITRS30$ -output: -LogHorizon : 換金アイテム財宝表(157[7]):しゃべる姿見[換金](1500G) -rand: -============================ -input: -ITRS30+1$ -output: -LogHorizon : 換金アイテム財宝表(158[7]):精巧なゲーム盤[換金](1520G) -rand: -============================ -input: -ITRS+157 -output: -LogHorizon : 換金アイテム財宝表(157):しゃべる姿見[換金](1500G) -rand: -============================ -input: -ITRS -output: -LogHorizon : ITRS -rand: -============================ -input: -OTRS1 -output: -LogHorizon : そのほか財宝表(7[1,1]):百科事典(40G) -rand:1/6,1/6 -============================ -input: -OTRS1 -output: -LogHorizon : そのほか財宝表(12[3,4]):モンスター図鑑(初級)(40G)&お好みサンドイッチ(10G) -rand:3/6,4/6 -============================ -input: -OTRS1 -output: -LogHorizon : そのほか財宝表(17[6,6]):マーシャルアーツドレス[破損](60G) -rand:6/6,6/6 -============================ -input: -OTRS1-1 -output: -LogHorizon : そのほか財宝表(7[1,1]):百科事典(40G) -rand:1/6,1/6 -============================ -input: -OTRS1+1 -output: -LogHorizon : そのほか財宝表(8[1,1]):ライトメイス(40G) -rand:1/6,1/6 -============================ -input: -OTRS6 -output: -LogHorizon : そのほか財宝表(32[1,1]):野太刀[破損](110G) -rand:1/6,1/6 -============================ -input: -OTRS6 -output: -LogHorizon : そのほか財宝表(37[3,4]):とんすとんの焼き串盛り合わせ(120G) -rand:3/6,4/6 -============================ -input: -OTRS6 -output: -LogHorizon : そのほか財宝表(42[6,6]):範囲隠密の巻物(初級)(150G) -rand:6/6,6/6 -============================ -input: -OTRS11 -output: -LogHorizon : そのほか財宝表(57[1,1]):ポーションホルダー(中級)(240G) -rand:1/6,1/6 -============================ -input: -OTRS11 -output: -LogHorizon : そのほか財宝表(62[3,4]):異次元バッグ(中級)(280G) -rand:3/6,4/6 -============================ -input: -OTRS11 -output: -LogHorizon : そのほか財宝表(67[6,6]):収納シールド(320G) -rand:6/6,6/6 -============================ -input: -OTRS16 -output: -LogHorizon : そのほか財宝表(82[1,1]):鉄身のブーツ(400G) -rand:1/6,1/6 -============================ -input: -OTRS16 -output: -LogHorizon : そのほか財宝表(87[3,4]):ポーションホルダー(上級)(540G) -rand:3/6,4/6 -============================ -input: -OTRS16 -output: -LogHorizon : そのほか財宝表(92[6,6]):からすの手提げ袋(600G) -rand:6/6,6/6 -============================ -input: -OTRS21 -output: -LogHorizon : そのほか財宝表(107[1,1]):識別の巻物(上級)(690G) -rand:1/6,1/6 -============================ -input: -OTRS21 -output: -LogHorizon : そのほか財宝表(112[3,4]):再生薬(上級)(790G) -rand:3/6,4/6 -============================ -input: -OTRS21 -output: -LogHorizon : そのほか財宝表(117[6,6]):鉄壁符(上級)(820G) -rand:6/6,6/6 -============================ -input: -OTRS26 -output: -LogHorizon : そのほか財宝表(132[1,1]):マジカルカード(上級)(1000G) -rand:1/6,1/6 -============================ -input: -OTRS26 -output: -LogHorizon : そのほか財宝表(137[3,4]):範囲飛行の巻物(上級)(1100G) -rand:3/6,4/6 -============================ -input: -OTRS26 -output: -LogHorizon : そのほか財宝表(142[6,6]):ジャマダハル[破損](1300G) -rand:6/6,6/6 -============================ -input: -OTRS30 -output: -LogHorizon : そのほか財宝表(152[1,1]):紫の指輪[破損](1300G) -rand:1/6,1/6 -============================ -input: -OTRS30 -output: -LogHorizon : そのほか財宝表(157[3,4]):竜手甲[破損](1650G) -rand:3/6,4/6 -============================ -input: -OTRS30 -output: -LogHorizon : そのほか財宝表(162[6,6]):ウルミン(1900G) -rand:6/6,6/6 -============================ -input: -OTRS30+1 -output: -LogHorizon : そのほか財宝表(163[6,6]):異次元バッグ(特急)(1600G)&200G -rand:6/6,6/6 -============================ -input: -OTRS30+10 -output: -LogHorizon : そのほか財宝表(172[6,6]):ウルミン(1900G)&200G -rand:6/6,6/6 -============================ -input: -OTRS30+11 -output: -LogHorizon : そのほか財宝表(173[6,6]):異次元バッグ(特急)(1600G)&400G -rand:6/6,6/6 -============================ -input: -OTRS30+20 -output: -LogHorizon : そのほか財宝表(182[6,6]):ウルミン(1900G)&400G -rand:6/6,6/6 -============================ -input: -OTRS30+21 -output: -LogHorizon : そのほか財宝表(183[6,6]):異次元バッグ(特急)(1600G)&600G -rand:6/6,6/6 -============================ -input: -OTRS30+25 -output: -LogHorizon : そのほか財宝表(187[6,6]):竜手甲[破損](1650G)&600G -rand:6/6,6/6 -============================ -input: -OTRS30+26 -output: -LogHorizon : そのほか財宝表(187[6,6]):竜手甲[破損](1650G)&600G -rand:6/6,6/6 -============================ -input: -OTRS30$ -output: -LogHorizon : そのほか財宝表(157[7]):竜手甲[破損](1650G) -rand: -============================ -input: -OTRS30+1$ -output: -LogHorizon : そのほか財宝表(158[7]):ポロニアのワンド[破損](1700G) -rand: -============================ -input: -OTRS+157 -output: -LogHorizon : そのほか財宝表(157):竜手甲[破損](1650G) -rand: -============================ -input: -OTRS -output: -LogHorizon : OTRS -rand: -============================ -input: -HTRS1 -output: -LogHorizon : ヒロイン財宝表(7[1,1]):行き倒れのみすぼらしいやせっぽちの幼女 -rand:1/6,1/6 -============================ -input: -HTRS4+6 -output: -LogHorizon : ヒロイン財宝表(33[3,4]):FXで有り金を全部とかしたうつろな先輩 -rand:3/6,4/6 -============================ -input: -HTRS9 -output: -LogHorizon : ヒロイン財宝表(52[3,4]):彼女はあなたの初恋の人に似ている -rand:3/6,4/6 -============================ -input: -HTRS10 -output: -LogHorizon : ヒロイン財宝表(57[3,4]):※ 53以降は未定義です ※ -rand:3/6,4/6 -============================ -input: -HTRS8 -output: -LogHorizon : ヒロイン財宝表(52[6,6]):彼女はあなたの初恋の人に似ている -rand:6/6,6/6 -============================ -input: -HTRS+57 -output: -LogHorizon : ヒロイン財宝表(57):※ 53以降は未定義です ※ -rand: -============================ -input: -HTRS+52 -output: -LogHorizon : ヒロイン財宝表(52):彼女はあなたの初恋の人に似ている -rand: -============================ -input: -HTRS5+8$ -output: -LogHorizon : ヒロイン財宝表(40[7]):戦闘の度に大食いしてしまう悩める弓術少女 -rand: -============================ -input: -HTRS7$ -output: -LogHorizon : ヒロイン財宝表(42[7]):一緒に帰るのが恥ずかしいピンク髪幼馴染 -rand: -============================ -input: -HTRS -output: -LogHorizon : HTRS -rand: -============================ -input: -HTRS+7 -output: -LogHorizon : ヒロイン財宝表(7):行き倒れのみすぼらしいやせっぽちの幼女 -rand: -============================ -input: -GTRS1 -output: -LogHorizon : ゴブリン財宝表(7[1,1]):ライトメイス(40G) -rand:1/6, 1/6 -============================ -input: -GTRS1 -output: -LogHorizon : ゴブリン財宝表(12[3,4]):46G -rand:3/6, 4/6 -============================ -input: -GTRS1 -output: -LogHorizon : ゴブリン財宝表(17[6,6]):歪んだ金皿[換金](60G) -rand:6/6,6/6 -============================ -input: -GTRS1-1 -output: -LogHorizon : ゴブリン財宝表(7[1,1]):ライトメイス(40G) -rand:1/6,1/6 -============================ -input: -GTRS1+1 -output: -LogHorizon : ゴブリン財宝表(8[1,1]):百科事典(40G) -rand:1/6,1/6 -============================ -input: -GTRS6 -output: -LogHorizon : ゴブリン財宝表(32[1,1]):ウッデンラウンド(100G) -rand:1/6,1/6 -============================ -input: -GTRS6 -output: -LogHorizon : ゴブリン財宝表(37[3,4]):高級桧材[換金](125G) -rand:3/6,4/6 -============================ -input: -GTRS6 -output: -LogHorizon : ゴブリン財宝表(42[6,6]):怪しい丸薬[コア素材](30G)x2&100G -rand:6/6,6/6 -============================ -input: -GTRS10 -output: -LogHorizon : ゴブリン財宝表(52[1,1]):白の指輪(210G) -rand:1/6,1/6 -============================ -input: -GTRS10 -output: -LogHorizon : ゴブリン財宝表(57[3,4]):汚れた青磁の壺[換金](240G) -rand:3/6,4/6 -============================ -input: -GTRS10 -output: -LogHorizon : ゴブリン財宝表(62[6,6]):白狼の毛皮[換金](280G) -rand:6/6,6/6 -============================ -input: -GTRS10+1 -output: -LogHorizon : ゴブリン財宝表(63[6,6]):ヒスイの首飾り[換金](210G)&80G -rand:6/6,6/6 -============================ -input: -GTRS10+10 -output: -LogHorizon : ゴブリン財宝表(72[6,6]):白狼の毛皮[換金](280G)&80G -rand:6/6,6/6 -============================ -input: -GTRS10+11 -output: -LogHorizon : ゴブリン財宝表(73[6,6]):ヒスイの首飾り[換金](210G)&160G -rand:6/6,6/6 -============================ -input: -GTRS10+20 -output: -LogHorizon : ゴブリン財宝表(82[6,6]):白狼の毛皮[換金](280G)&160G -rand:6/6,6/6 -============================ -input: -GTRS10+21 -output: -LogHorizon : ゴブリン財宝表(83[6,6]):ヒスイの首飾り[換金](210G)&260G -rand:6/6,6/6 -============================ -input: -GTRS10+25 -output: -LogHorizon : ゴブリン財宝表(87[6,6]):汚れた青磁の壺[換金](240G)&260G -rand:6/6,6/6 -============================ -input: -GTRS10+26 -output: -LogHorizon : ゴブリン財宝表(87[6,6]):汚れた青磁の壺[換金](240G)&260G -rand:6/6,6/6 -============================ -input: -GTRS10$ -output: -LogHorizon : ゴブリン財宝表(57[7]):汚れた青磁の壺[換金](240G) -rand: -============================ -input: -GTRS10+1$ -output: -LogHorizon : ゴブリン財宝表(58[7]):とんすとんの焼き串盛り合わせ(120G)x2 -rand: -============================ -input: -GTRS+57 -output: -LogHorizon : ゴブリン財宝表(57):汚れた青磁の壺[換金](240G) -rand: -============================ -input: -GTRS -output: -LogHorizon : GTRS -rand: -============================ -input: -PTAG -output: -LogHorizon : パーソナリティタグ表(11):[おませさん] -rand:1/6,1/6 -============================ -input: -PTAG -output: -LogHorizon : パーソナリティタグ表(66):[ミステリアス] -rand:6/6,6/6 -============================ -input: -KOYU -output: -LogHorizon : 交友表([11]) > 交友対象への庇護 -あなたは、交友対象を庇護したいと思っている。守ってあげられる強さがあなたにはある。 -rand:1/6, 1/6 -============================ -input: -KOYU -output: -LogHorizon : 交友表([32]) > 交友対象のライバル -あなたは、交友対象をライバルだと思っている。それは一方的なものかもしれないし、切磋琢磨する間柄かもしれない。 -rand:3/6, 2/6 -============================ -input: -KOYU -output: -LogHorizon : 交友表([66]) > 交友対象の家族 -あなたは交友対象と一緒に暮らしている。同じ家に誰かがいると寂しくはないだろう。 -rand:6/6, 6/6 -============================ -input: -MGR1 -output: -LogHorizon : プレフィックスドアイテム効果表(マジックグレード1)([11]) > 接頭語:気合の 対応タグ:すべての武器 -アイテム効果:この武器の【攻撃力】に+1する。 -rand:1/6, 1/6 -============================ -input: -MGR1 -output: -LogHorizon : プレフィックスドアイテム効果表(マジックグレード1)([32]) > 接頭語:鉄身の 対応タグ:[盾][重鎧][中鎧] -アイテム効果:あなたはシーン開始時に[軽減(至近距離からの攻撃):3]を得る。 -rand:3/6, 2/6 -============================ -input: -MGR1 -output: -LogHorizon : プレフィックスドアイテム効果表(マジックグレード1)([66]) > 接頭語:早変わりの 対応タグ:[鞄] -アイテム効果:〔起動:インスタント〕あなたは即座に《装備の変更》を行う。シーン1回使用可能。 -rand:6/6, 6/6 -============================ -input: -MGR2 -output: -LogHorizon : プレフィックスドアイテム効果表(マジックグレード2)([11]) > 接頭語:怒りの 対応タグ:[両手]武器 -アイテム効果:〔起動:ダメージロール〕この武器による[武器攻撃]のダメージロールに+[あなたの【ヘイト】]する。シーン1回使用可能。 -rand:1/6, 1/6 -============================ -input: -MGR2 -output: -LogHorizon : プレフィックスドアイテム効果表(マジックグレード2)([32]) > 接頭語:堅守の 対応タグ:[重鎧][中鎧][軽鎧] -アイテム効果:この防具の【物理防御力】に+4する。 -rand:3/6, 2/6 -============================ -input: -MGR2 -output: -LogHorizon : プレフィックスドアイテム効果表(マジックグレード2)([66]) > 接頭語:旅人の 対応タグ:[鞄] -アイテム効果:このアイテムに[所持品スロット]4個を追加する。 -rand:6/6, 6/6 -============================ -input: -MGR3 -output: -LogHorizon : プレフィックスドアイテム効果表(マジックグレード3)([11]) > 接頭語:気迫の 対応タグ:すべての武器 -アイテム効果:この武器の【攻撃力】に+3する。 -rand:1/6, 1/6 -============================ -input: -MGR3 -output: -LogHorizon : プレフィックスドアイテム効果表(マジックグレード3)([32]) > 接頭語:矢弾きの 対応タグ:[盾][中鎧][軽鎧] -アイテム効果:あなたはシーン開始時に[軽減(至近以外からの攻撃):10]を得る。 -rand:3/6, 2/6 -============================ -input: -MGR3 -output: -LogHorizon : プレフィックスドアイテム効果表(マジックグレード3)([66]) > 接頭語:罠避けの 対応タグ:[補助装備][鞄][楽器] -アイテム効果:〔起動:ダメージ適用直前〕あなたに適用される予定のプロップおよび[ギミック]によるダメージを無効にする。シナリオ1回使用可能。 -rand:6/6, 6/6 -============================ -input: -HLOC -output: -LogHorizon : 攻撃命中箇所(11):額 -rand:1/6,1/6 -============================ -input: -HLOC -output: -LogHorizon : 攻撃命中箇所(66):眼鏡 -rand:6/6,6/6 -============================ -input: -PCNM -output: -LogHorizon : PC名(11):Kuraudo -rand:1/6,1/6 -============================ -input: -PCNM -output: -LogHorizon : PC名(66):フジキド -rand:6/6,6/6 -============================ -input: -IAT -output: -LogHorizon : ロデ研の新発明([1,1,1,1]):光って回って音が鳴る 中毒性のある 美しい 武器 -rand:1/6,1/6,1/6,1/6 -============================ -input: -IATALT -output: -LogHorizon : ロデ研の新発明([6,5,3]):よい手触り 名状しがたき アクセサリ -rand:6/6,5/6,3/6 -============================ -input: -IATABBLT -output: -LogHorizon : ロデ研の新発明([1,2,3,4,5]):光って回って音が鳴る 凄まじく重い ひどい臭いの 斬新な 薬品 -rand:1/6,2/6,3/6,4/6,5/6 -============================ -input: -IATA -output: -LogHorizon : ロデ研の新発明([1]):特徴A(メリット):光って回って音が鳴る -rand:1/6 -============================ -input: -IATB -output: -LogHorizon : ロデ研の新発明([6]):特徴B(デメリット):捨てても戻ってくる -rand:6/6 -============================ -input: -IATL -output: -LogHorizon : ロデ研の新発明([3]):見た目:風流な -rand:3/6 -============================ -input: -IATT -output: -LogHorizon : ロデ研の新発明([2]):発明品の種類:防具 -rand:2/6 -============================ -input: -TIAS -output: -LogHorizon : アキバの街で遭遇するトラブル([1,1,1,1]):〈記録の地平線〉が ギルド会館で 理不尽な 喧嘩 -rand:1/6,1/6,1/6,1/6 -============================ -input: -TIAS -output: -LogHorizon : アキバの街で遭遇するトラブル([2,3,4,5]):〈三日月同盟〉が 街の真ん中で 不自然な 事故 -rand:2/6,3/6,4/6,5/6 -============================ -input: -TIAS -output: -LogHorizon : アキバの街で遭遇するトラブル([6,6,6,6]):〈ロデリック商会〉が 下水道で 頭の悪い 落し物 -rand:6/6,6/6,6/6,6/6 -============================ -input: -ABDC -output: -LogHorizon : 廃棄児([1,1,1,1,1,1]):名前:花の名前 住居:廃ビル 特技:探し物 体型:痩せている 好きな食べ物:果物 一人称:ぼく/わたし -rand:1/6,1/6,1/6,1/6,1/6,1/6 -============================ -input: -ABDC -output: -LogHorizon : 廃棄児([5,4,3,2,3,4]):名前:動物の名前 住居:木の上 特技:歌 体型:ちびっこ 好きな食べ物:お野菜 一人称:拙者/わらわ -rand:5/6,4/6,3/6,2/6,3/6,4/6 -============================ -input: -ABDC -output: -LogHorizon : 廃棄児([6,6,6,6,6,6]):名前:番号 住居:下水道 特技:あざといポーズ 体型:ガチムチ 好きな食べ物:虫 一人称:ミー -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -MII -output: -LogHorizon : 楽器種別表(1):打楽器1(1):カスタネット -rand:1/6, 1/6 -============================ -input: -MII -output: -LogHorizon : 楽器種別表(3):弦楽器1(2):リュート -rand:3/6, 2/6 -============================ -input: -MII -output: -LogHorizon : 楽器種別表(6):管楽器2(6):尺八 -rand:6/6, 6/6 -============================ -input: -MII1 -output: -LogHorizon : 楽器種別表:打楽器1(5):太鼓 -rand:5/6 -============================ -input: -MII3 -output: -LogHorizon : 楽器種別表:弦楽器1(4):バイオリン -rand:4/6 -============================ -input: -ESCT -output: -LogHorizon : 特殊消耗表:ロデ研は爆発だ!(1[1]):キミの頭髪が爆発した! 見事なアフロヘアーだ:シナリオ終了まで[頭部]タグのついた装備不可。 -rand:1/6 -============================ -input: -ESCT+3 -output: -LogHorizon : 特殊消耗表:ロデ研は爆発だ!(4[1]):山羊スライムが爆発的に増殖する:[所持品]スロットを全て山羊スライム([取引不可]、価格50)で埋める。 -rand:1/6 -============================ -input: -ESCT+2$3 -output: -LogHorizon : 特殊消耗表:ロデ研は爆発だ!(5[3]):キミのリアルが爆発する:コネクションを1つ、シナリオ終了時まで失う。 -rand: -============================ -input: -ESCT-2 -output: -LogHorizon : 特殊消耗表:ロデ研は爆発だ!(0[2]):……しかし特に何も起こらない!:効果なし。 -rand:2/6 -============================ -input: -ESCT-2$0 -output: -LogHorizon : 特殊消耗表:ロデ研は爆発だ!(-2[0]):……しかし特に何も起こらない!:効果なし。 -rand: -============================ -input: -ESCT+3 -output: -LogHorizon : 特殊消耗表:ロデ研は爆発だ!(7[4]):ボスエネミーが爆発する:シナリオはクライマックスを迎えることなく終了する。お疲れ様でした。 -rand:4/6 -============================ -input: -ESCT+4$5 -output: -LogHorizon : 特殊消耗表:ロデ研は爆発だ!(9[5]):ボスエネミーが爆発する:シナリオはクライマックスを迎えることなく終了する。お疲れ様でした。 -rand: -============================ -input: -ESCT3 -output: -LogHorizon : 特殊消耗表:ロデ研は爆発だ!(1[1]):キミの頭髪が爆発した! 見事なアフロヘアーだ:シナリオ終了まで[頭部]タグのついた装備不可。 -rand:1/6 -============================ -input: -ESCT5+3 -output: -LogHorizon : 特殊消耗表:ロデ研は爆発だ!(4[1]):山羊スライムが爆発的に増殖する:[所持品]スロットを全て山羊スライム([取引不可]、価格50)で埋める。 -rand:1/6 -============================ -input: -ESCT7+2$3 -output: -LogHorizon : 特殊消耗表:ロデ研は爆発だ!(5[3]):キミのリアルが爆発する:コネクションを1つ、シナリオ終了時まで失う。 -rand: -============================ -input: -ESCT3-2 -output: -LogHorizon : 特殊消耗表:ロデ研は爆発だ!(0[2]):……しかし特に何も起こらない!:効果なし。 -rand:2/6 -============================ -input: -ESCT6-2$0 -output: -LogHorizon : 特殊消耗表:ロデ研は爆発だ!(-2[0]):……しかし特に何も起こらない!:効果なし。 -rand: -============================ -input: -ESCT11+3 -output: -LogHorizon : 特殊消耗表:ロデ研は爆発だ!(7[4]):ボスエネミーが爆発する:シナリオはクライマックスを迎えることなく終了する。お疲れ様でした。 -rand:4/6 -============================ -input: -ESCT0+4$5 -output: -LogHorizon : 特殊消耗表:ロデ研は爆発だ!(9[5]):ボスエネミーが爆発する:シナリオはクライマックスを迎えることなく終了する。お疲れ様でした。 -rand: -============================ -input: -CSCT -output: -LogHorizon : 特殊消耗表:アルヴの呪いじゃ!(1[1]):空腹の呪い:すぐさま食料アイテムひとつを食べる。空腹のせいでとてもおいしい! -rand:1/6 -============================ -input: -CSCT+3 -output: -LogHorizon : 特殊消耗表:アルヴの呪いじゃ!(4[1]):バリアフリーの呪い:[軽減][障壁]状態になることができなくなる。 -rand:1/6 -============================ -input: -CSCT+2$3 -output: -LogHorizon : 特殊消耗表:アルヴの呪いじゃ!(5[3]):集中力を乱す囁きの呪い:フォームが崩れて[構え]タグを持つ特技が使用不能になる。 -rand: -============================ -input: -CSCT-2 -output: -LogHorizon : 特殊消耗表:アルヴの呪いじゃ!(0[2]):「祝ってやる!」祝われる:あなたの【因果力】+1。 -rand:2/6 -============================ -input: -CSCT-2$0 -output: -LogHorizon : 特殊消耗表:アルヴの呪いじゃ!(-2[0]):「祝ってやる!」祝われる:あなたの【因果力】+1。 -rand: -============================ -input: -CSCT+3 -output: -LogHorizon : 特殊消耗表:アルヴの呪いじゃ!(7[4]):やる気が萎える呪い:あーもーまじやる気しねえ、何もやる気しねえ。【因果力】使用不可。 -rand:4/6 -============================ -input: -CSCT+4$5 -output: -LogHorizon : 特殊消耗表:アルヴの呪いじゃ!(9[5]):やる気が萎える呪い:あーもーまじやる気しねえ、何もやる気しねえ。【因果力】使用不可。 -rand: -============================ -input: -CSCT3 -output: -LogHorizon : 特殊消耗表:アルヴの呪いじゃ!(1[1]):空腹の呪い:すぐさま食料アイテムひとつを食べる。空腹のせいでとてもおいしい! -rand:1/6 -============================ -input: -CSCT4+3 -output: -LogHorizon : 特殊消耗表:アルヴの呪いじゃ!(4[1]):バリアフリーの呪い:[軽減][障壁]状態になることができなくなる。 -rand:1/6 -============================ -input: -CSCT14+2$3 -output: -LogHorizon : 特殊消耗表:アルヴの呪いじゃ!(5[3]):集中力を乱す囁きの呪い:フォームが崩れて[構え]タグを持つ特技が使用不能になる。 -rand: -============================ -input: -CSCT4-2 -output: -LogHorizon : 特殊消耗表:アルヴの呪いじゃ!(0[2]):「祝ってやる!」祝われる:あなたの【因果力】+1。 -rand:2/6 -============================ -input: -CSCT1-2$0 -output: -LogHorizon : 特殊消耗表:アルヴの呪いじゃ!(-2[0]):「祝ってやる!」祝われる:あなたの【因果力】+1。 -rand: -============================ -input: -CSCT20+3 -output: -LogHorizon : 特殊消耗表:アルヴの呪いじゃ!(7[4]):やる気が萎える呪い:あーもーまじやる気しねえ、何もやる気しねえ。【因果力】使用不可。 -rand:4/6 -============================ -input: -CSCT1+4$5 -output: -LogHorizon : 特殊消耗表:アルヴの呪いじゃ!(9[5]):やる気が萎える呪い:あーもーまじやる気しねえ、何もやる気しねえ。【因果力】使用不可。 -rand: -============================ -input: -ESTL1 -output: -LogHorizon : イースタル探索表(7[1,1]) -香りに誘われて: - 小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。 - 奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。 - 追われていた理由はこれだったらしい。 -rand:1/6, 1/6 -============================ -input: -ESTL1 -output: -LogHorizon : イースタル探索表(12[3,4]) -思わぬ報酬: - 畑を開墾していた〈大地人〉農夫が、切り株を掘り起こせずに途方に暮れていた。 - 手助けするならPCは全員[疲労:10]を受ける。 - みんなで力を合わせて切り株を掘り起こすと、そこにはなんと「鉄の陣笠[コア素材](30G)」が埋まっていた! - キミたちは「鉄の陣笠」とお礼にもらった「お好みサンドイッチ(『LHZB1』P218)」2個を受け取る。 -rand:3/6, 4/6 -============================ -input: -ESTL1 -output: -LogHorizon : イースタル探索表(17[6,6]) -花畑にご用心: - 花畑を渡る街道で〈暗殺蜜蜂〉の群れに出くわした。 - 追い払いながら縄張りから撤退する。 - PCは全員[疲労:10]を受けるが、彼らが落とした「黒いローヤルゼリー[換金](70G)」1つを得る。 -rand:6/6, 6/6 -============================ -input: -ESTL1-1 -output: -LogHorizon : イースタル探索表(7[1,1]) -香りに誘われて: - 小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。 - 奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。 - 追われていた理由はこれだったらしい。 -rand:1/6, 1/6 -============================ -input: -ESTL1+1 -output: -LogHorizon : イースタル探索表(8[1,1]) -不幸な出会い: - 街道を歩いていると、横合いの茂みから〈小牙竜鬼〉の一団が飛び出してきた。 - 突然のことでとても驚いたけど、向こうも〈冒険者〉がいるとは思っていなかったらしい。 - 一瞬の気まずい沈黙を経て、なし崩し的に乱戦が始まった。 - PCは全員[疲労:10]を受ける。 -rand:1/6, 1/6 -============================ -input: -ESTL1+1 -output: -LogHorizon : イースタル探索表(18[6,6]) -おとりはまかせろ!: - キミたちは〈緑小鬼〉に襲われていた〈大地人〉の荷馬車を逃がすため、おとりと護衛に分かれて行動を開始した。 - おとりをかって出るPCを1人、相談して決めること。 - そのPCは[疲労:20]を受け【因果力】1点を失うが、他のPCたちと荷馬車は安全に撤退することができる。 -rand:6/6, 6/6 -============================ -input: -ESTL1-1 -output: -LogHorizon : イースタル探索表(16[6,6]) -キャラバンクルーズ: - 林の木陰で休憩している〈第8商店街〉の商隊と出会った。 - ギルドマスターのカラシン(『LHZB1』P351)みたいだ。 - PCのうち希望者は気さくな彼とコネクションを取得することができる。 - 関係は「友情」または「雇用関係」となる(PCが選択)。 - このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。 -rand:6/6, 6/6 -============================ -input: -ESTL1$2 -output: -LogHorizon : イースタル探索表(7[2]) -香りに誘われて: - 小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。 - 奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。 - 追われていた理由はこれだったらしい。 -rand: -============================ -input: -ESTL1+1$2 -output: -LogHorizon : イースタル探索表(8[2]) -不幸な出会い: - 街道を歩いていると、横合いの茂みから〈小牙竜鬼〉の一団が飛び出してきた。 - 突然のことでとても驚いたけど、向こうも〈冒険者〉がいるとは思っていなかったらしい。 - 一瞬の気まずい沈黙を経て、なし崩し的に乱戦が始まった。 - PCは全員[疲労:10]を受ける。 -rand: -============================ -input: -ESTL1-1$2 -output: -LogHorizon : イースタル探索表(7[2]) -香りに誘われて: - 小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。 - 奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。 - 追われていた理由はこれだったらしい。 -rand: -============================ -input: -ESTL1$12 -output: -LogHorizon : イースタル探索表(17[12]) -花畑にご用心: - 花畑を渡る街道で〈暗殺蜜蜂〉の群れに出くわした。 - 追い払いながら縄張りから撤退する。 - PCは全員[疲労:10]を受けるが、彼らが落とした「黒いローヤルゼリー[換金](70G)」1つを得る。 -rand: -============================ -input: -ESTL1+1$12 -output: -LogHorizon : イースタル探索表(18[12]) -おとりはまかせろ!: - キミたちは〈緑小鬼〉に襲われていた〈大地人〉の荷馬車を逃がすため、おとりと護衛に分かれて行動を開始した。 - おとりをかって出るPCを1人、相談して決めること。 - そのPCは[疲労:20]を受け【因果力】1点を失うが、他のPCたちと荷馬車は安全に撤退することができる。 -rand: -============================ -input: -ESTL1-1$12 -output: -LogHorizon : イースタル探索表(16[12]) -キャラバンクルーズ: - 林の木陰で休憩している〈第8商店街〉の商隊と出会った。 - ギルドマスターのカラシン(『LHZB1』P351)みたいだ。 - PCのうち希望者は気さくな彼とコネクションを取得することができる。 - 関係は「友情」または「雇用関係」となる(PCが選択)。 - このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。 -rand: -============================ -input: -ESTL1$1 -output: -LogHorizon : イースタル探索表(7[1]) -香りに誘われて: - 小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。 - 奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。 - 追われていた理由はこれだったらしい。 -rand: -============================ -input: -ESTL1+1$1 -output: -LogHorizon : イースタル探索表(7[1]) -香りに誘われて: - 小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。 - 奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。 - 追われていた理由はこれだったらしい。 -rand: -============================ -input: -ESTL1-1$1 -output: -LogHorizon : イースタル探索表(7[1]) -香りに誘われて: - 小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。 - 奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。 - 追われていた理由はこれだったらしい。 -rand: -============================ -input: -ESTL1$13 -output: -LogHorizon : イースタル探索表(18[13]) -おとりはまかせろ!: - キミたちは〈緑小鬼〉に襲われていた〈大地人〉の荷馬車を逃がすため、おとりと護衛に分かれて行動を開始した。 - おとりをかって出るPCを1人、相談して決めること。 - そのPCは[疲労:20]を受け【因果力】1点を失うが、他のPCたちと荷馬車は安全に撤退することができる。 -rand: -============================ -input: -ESTL1+1$13 -output: -LogHorizon : イースタル探索表(19[13]) -住処にお宝?: - 〈フクロウ熊〉を撃退したキミたちは全員[疲労:10]を受ける。 - もしかしたら近くに巣があるかもしれない。 - 代表者1名は「難易度:11」の[知覚判定]を行なう。 - この判定は[偵察]タグがついているように扱う。 - 〔判定成功〕 -  「壊れた武具[換金](90G)」を見つけた。 - 〔判定失敗〕 -  何も得られない。 - 〔サブ職:狩人、辺境巡視〕 -  判定に+2。 -rand: -============================ -input: -ESTL1-1$13 -output: -LogHorizon : イースタル探索表(17[13]) -花畑にご用心: - 花畑を渡る街道で〈暗殺蜜蜂〉の群れに出くわした。 - 追い払いながら縄張りから撤退する。 - PCは全員[疲労:10]を受けるが、彼らが落とした「黒いローヤルゼリー[換金](70G)」1つを得る。 -rand: -============================ -input: -ESTL -output: -LogHorizon : ESTL -rand: -============================ -input: -ESTL+7 -output: -LogHorizon : イースタル探索表(7) -香りに誘われて: - 小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。 - 奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。 - 追われていた理由はこれだったらしい。 -rand: -============================ -input: -ESTL+7+1 -output: -LogHorizon : イースタル探索表(8) -不幸な出会い: - 街道を歩いていると、横合いの茂みから〈小牙竜鬼〉の一団が飛び出してきた。 - 突然のことでとても驚いたけど、向こうも〈冒険者〉がいるとは思っていなかったらしい。 - 一瞬の気まずい沈黙を経て、なし崩し的に乱戦が始まった。 - PCは全員[疲労:10]を受ける。 -rand: -============================ -input: -ESTL+7-1 -output: -LogHorizon : イースタル探索表(7) -香りに誘われて: - 小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。 - 奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。 - 追われていた理由はこれだったらしい。 -rand: -============================ -input: -ESTL+17 -output: -LogHorizon : イースタル探索表(17) -花畑にご用心: - 花畑を渡る街道で〈暗殺蜜蜂〉の群れに出くわした。 - 追い払いながら縄張りから撤退する。 - PCは全員[疲労:10]を受けるが、彼らが落とした「黒いローヤルゼリー[換金](70G)」1つを得る。 -rand: -============================ -input: -ESTL+17+1 -output: -LogHorizon : イースタル探索表(18) -おとりはまかせろ!: - キミたちは〈緑小鬼〉に襲われていた〈大地人〉の荷馬車を逃がすため、おとりと護衛に分かれて行動を開始した。 - おとりをかって出るPCを1人、相談して決めること。 - そのPCは[疲労:20]を受け【因果力】1点を失うが、他のPCたちと荷馬車は安全に撤退することができる。 -rand: -============================ -input: -ESTL+17-1 -output: -LogHorizon : イースタル探索表(16) -キャラバンクルーズ: - 林の木陰で休憩している〈第8商店街〉の商隊と出会った。 - ギルドマスターのカラシン(『LHZB1』P351)みたいだ。 - PCのうち希望者は気さくな彼とコネクションを取得することができる。 - 関係は「友情」または「雇用関係」となる(PCが選択)。 - このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。 -rand: -============================ -input: -ESTL$7 -output: -LogHorizon : イースタル探索表(7[7]) -香りに誘われて: - 小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。 - 奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。 - 追われていた理由はこれだったらしい。 -rand: -============================ -input: -ESTL+1$7 -output: -LogHorizon : イースタル探索表(8[7]) -不幸な出会い: - 街道を歩いていると、横合いの茂みから〈小牙竜鬼〉の一団が飛び出してきた。 - 突然のことでとても驚いたけど、向こうも〈冒険者〉がいるとは思っていなかったらしい。 - 一瞬の気まずい沈黙を経て、なし崩し的に乱戦が始まった。 - PCは全員[疲労:10]を受ける。 -rand: -============================ -input: -ESTL-1$7 -output: -LogHorizon : イースタル探索表(7[7]) -香りに誘われて: - 小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。 - 奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。 - 追われていた理由はこれだったらしい。 -rand: -============================ -input: -ESTL$17 -output: -LogHorizon : イースタル探索表(17[17]) -花畑にご用心: - 花畑を渡る街道で〈暗殺蜜蜂〉の群れに出くわした。 - 追い払いながら縄張りから撤退する。 - PCは全員[疲労:10]を受けるが、彼らが落とした「黒いローヤルゼリー[換金](70G)」1つを得る。 -rand: -============================ -input: -ESTL+1$17 -output: -LogHorizon : イースタル探索表(18[17]) -おとりはまかせろ!: - キミたちは〈緑小鬼〉に襲われていた〈大地人〉の荷馬車を逃がすため、おとりと護衛に分かれて行動を開始した。 - おとりをかって出るPCを1人、相談して決めること。 - そのPCは[疲労:20]を受け【因果力】1点を失うが、他のPCたちと荷馬車は安全に撤退することができる。 -rand: -============================ -input: -ESTL-1$17 -output: -LogHorizon : イースタル探索表(16[17]) -キャラバンクルーズ: - 林の木陰で休憩している〈第8商店街〉の商隊と出会った。 - ギルドマスターのカラシン(『LHZB1』P351)みたいだ。 - PCのうち希望者は気さくな彼とコネクションを取得することができる。 - 関係は「友情」または「雇用関係」となる(PCが選択)。 - このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。 -rand: -============================ -input: -ESTL$6 -output: -LogHorizon : イースタル探索表(7[6]) -香りに誘われて: - 小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。 - 奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。 - 追われていた理由はこれだったらしい。 -rand: -============================ -input: -ESTL+1$6 -output: -LogHorizon : イースタル探索表(7[6]) -香りに誘われて: - 小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。 - 奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。 - 追われていた理由はこれだったらしい。 -rand: -============================ -input: -ESTL-1$6 -output: -LogHorizon : イースタル探索表(7[6]) -香りに誘われて: - 小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。 - 奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。 - 追われていた理由はこれだったらしい。 -rand: -============================ -input: -ESTL$18 -output: -LogHorizon : イースタル探索表(18[18]) -おとりはまかせろ!: - キミたちは〈緑小鬼〉に襲われていた〈大地人〉の荷馬車を逃がすため、おとりと護衛に分かれて行動を開始した。 - おとりをかって出るPCを1人、相談して決めること。 - そのPCは[疲労:20]を受け【因果力】1点を失うが、他のPCたちと荷馬車は安全に撤退することができる。 -rand: -============================ -input: -ESTL+1$18 -output: -LogHorizon : イースタル探索表(19[18]) -住処にお宝?: - 〈フクロウ熊〉を撃退したキミたちは全員[疲労:10]を受ける。 - もしかしたら近くに巣があるかもしれない。 - 代表者1名は「難易度:11」の[知覚判定]を行なう。 - この判定は[偵察]タグがついているように扱う。 - 〔判定成功〕 -  「壊れた武具[換金](90G)」を見つけた。 - 〔判定失敗〕 -  何も得られない。 - 〔サブ職:狩人、辺境巡視〕 -  判定に+2。 -rand: -============================ -input: -ESTL-1$18 -output: -LogHorizon : イースタル探索表(17[18]) -花畑にご用心: - 花畑を渡る街道で〈暗殺蜜蜂〉の群れに出くわした。 - 追い払いながら縄張りから撤退する。 - PCは全員[疲労:10]を受けるが、彼らが落とした「黒いローヤルゼリー[換金](70G)」1つを得る。 -rand: -============================ -input: -ESTL30+1 -output: -LogHorizon : イースタル探索表(162[6,6]) -火竜との戦い: - 火炎をまとい大空を支配する恐ろしい火竜との遭遇戦となった。 - PCは全員1Dを振る。 - 自発的に特技喪失をしてもよく、その場合追加で+1Dしてもよい。 - ダイスの合計値が(PC人数*4+2)以上ならば勝利して「赤色魔力ダイオード[コア素材](1640G)」を得る。 - 未満であった場合はPCは全員【因果力】1点を失い[疲労:50]を受ける。 -rand:6/6,6/6 -============================ -input: -ESTL30+1$12 -output: -LogHorizon : イースタル探索表(162[12]) -火竜との戦い: - 火炎をまとい大空を支配する恐ろしい火竜との遭遇戦となった。 - PCは全員1Dを振る。 - 自発的に特技喪失をしてもよく、その場合追加で+1Dしてもよい。 - ダイスの合計値が(PC人数*4+2)以上ならば勝利して「赤色魔力ダイオード[コア素材](1640G)」を得る。 - 未満であった場合はPCは全員【因果力】1点を失い[疲労:50]を受ける。 -rand: -============================ -input: -ESTL+150+1+12 -output: -LogHorizon : イースタル探索表(162) -火竜との戦い: - 火炎をまとい大空を支配する恐ろしい火竜との遭遇戦となった。 - PCは全員1Dを振る。 - 自発的に特技喪失をしてもよく、その場合追加で+1Dしてもよい。 - ダイスの合計値が(PC人数*4+2)以上ならば勝利して「赤色魔力ダイオード[コア素材](1640G)」を得る。 - 未満であった場合はPCは全員【因果力】1点を失い[疲労:50]を受ける。 -rand: -============================ -input: -ESTL+150+1$12 -output: -LogHorizon : イースタル探索表(162[12]) -火竜との戦い: - 火炎をまとい大空を支配する恐ろしい火竜との遭遇戦となった。 - PCは全員1Dを振る。 - 自発的に特技喪失をしてもよく、その場合追加で+1Dしてもよい。 - ダイスの合計値が(PC人数*4+2)以上ならば勝利して「赤色魔力ダイオード[コア素材](1640G)」を得る。 - 未満であった場合はPCは全員【因果力】1点を失い[疲労:50]を受ける。 -rand: -============================ -input: -ESTL$163 -output: -LogHorizon : イースタル探索表(162[163]) -火竜との戦い: - 火炎をまとい大空を支配する恐ろしい火竜との遭遇戦となった。 - PCは全員1Dを振る。 - 自発的に特技喪失をしてもよく、その場合追加で+1Dしてもよい。 - ダイスの合計値が(PC人数*4+2)以上ならば勝利して「赤色魔力ダイオード[コア素材](1640G)」を得る。 - 未満であった場合はPCは全員【因果力】1点を失い[疲労:50]を受ける。 -rand: -============================ diff --git a/src/src_bcdice/test/data/LogHorizon_Korean.txt b/src/src_bcdice/test/data/LogHorizon_Korean.txt deleted file mode 100644 index 14842d270..000000000 --- a/src/src_bcdice/test/data/LogHorizon_Korean.txt +++ /dev/null @@ -1,799 +0,0 @@ -input: -3LH -output: -LogHorizon : (3LH) > 8[6,1,1] > 8 -rand:6/6,1/6,1/6 -============================ -input: -3LH+3>=10 -output: -LogHorizon : (3LH+3>=10) > 7[5,1,1]+3 > 10 > 성공 -rand:5/6,1/6,1/6 -============================ -input: -3LH-2>=5 -output: -LogHorizon : (3LH-2>=5) > 6[4,1,1]-2 > 4 > 실패 -rand:4/6,1/6,1/6 -============================ -input: -3LH+3>=10 -output: -LogHorizon : (3LH+3>=10) > 3[1,1,1]+3 > 6 > 펌블! -rand:1/6,1/6,1/6 -============================ -input: -3LH+3>=10 -output: -LogHorizon : (3LH+3>=10) > 13[6,1,6]+3 > 16 > 크리티컬! -rand:6/6,1/6,6/6 -============================ -input: -PCT1 -output: -LogHorizon : 체력 소모표(1[1]):[피로:5]를 받는다 -rand:1/6 -============================ -input: -PCT1-1 -output: -LogHorizon : 체력 소모표(0[1]):소모없음 -rand:1/6 -============================ -input: -PCT1-2 -output: -LogHorizon : 체력 소모표(-1[1]):소모없음 -rand:1/6 -============================ -input: -PCT1 -output: -LogHorizon : 체력 소모표(6[6]):[피로:18]을 받는다 -rand:6/6 -============================ -input: -PCT1+1 -output: -LogHorizon : 체력 소모표(7[6]):[피로:20]을 받는다 -rand:6/6 -============================ -input: -PCT1+2 -output: -LogHorizon : 체력 소모표(8[6]):[피로:20]을 받는다 -rand:6/6 -============================ -input: -PCT4 -output: -LogHorizon : 체력 소모표(6[6]):[피로:18]을 받는다 -rand:6/6 -============================ -input: -PCT5 -output: -LogHorizon : 체력 소모표(6[6]):[피로:18]을 받는다 -rand:6/6 -============================ -input: -PCT6 -output: - LogHorizon : 체력 소모표(6[6]):[피로:35]를 받는다 -rand:6/6 -============================ -input: -PCT10 -output: -LogHorizon : 체력 소모표(6[6]):[피로:35]를 받는다 -rand:6/6 -============================ -input: -PCT11 -output: -LogHorizon : 체력 소모표(6[6]):[피로:35]를 받는다 -rand:6/6 -============================ -input: -ECT1 -output: -LogHorizon : 기력 소모표(1[1]):【인과력】을 1점 잃는다 -rand:1/6 -============================ -input: -GCT1 -output: -LogHorizon : 물품 소모표(1[1]):[소모품] 아이템을 1개 잃는다. -rand:1/6 -============================ -input: -CCT1 -output: -LogHorizon : 금전 소모표(1[1]):소지금 10G 잃는다. -rand:1/6 -============================ -input: -CCT6 -output: -LogHorizon : 금전 소모표(1[1]):소지금 25G 잃는다. -rand:1/6 -============================ -input: -PCT1$7 -output: -LogHorizon : 체력 소모표(7[7]):[피로:20]을 받는다 -rand: -============================ -input: -PCT6$7 -output: -LogHorizon : 체력 소모표(7[7]):[피로:40]을 받는다 -rand: -============================ -input: -PCT1+1$7 -output: -LogHorizon : 체력 소모표(8[7]):[피로:20]을 받는다 -rand: -============================ -input: -CTRS1 -output: -LogHorizon : 금전 재보표(7[1,1]):39G -rand:1/6,1/6 -============================ -input: -CTRS1 -output: -LogHorizon : 금전 재보표(17[6,6]):57G -rand:6/6,6/6 -============================ -input: -CTRS1-1 -output: -LogHorizon : 금전 재보표(7[1,1]):39G -rand:1/6,1/6 -============================ -input: -CTRS1+1 -output: -LogHorizon : 금전 재보표(8[1,1]):40G -rand:1/6,1/6 -============================ -input: -CTRS10 -output: -LogHorizon : 금전 재보표(62[6,6]):277G -rand:6/6,6/6 -============================ -input: -CTRS10+1 -output: -LogHorizon : 금전 재보표(63[6,6]):214G&80G -rand:6/6,6/6 -============================ -input: -CTRS10+10 -output: -LogHorizon : 금전 재보표(72[6,6]):277G&80G -rand:6/6,6/6 -============================ -input: -CTRS10+11 -output: -LogHorizon : 금전 재보표(73[6,6]):214G&160G -rand:6/6,6/6 -============================ -input: -CTRS10+20 -output: -LogHorizon : 금전 재보표(82[6,6]):277G&160G -rand:6/6,6/6 -============================ -input: -CTRS10+21 -output: -LogHorizon : 금전 재보표(83[6,6]):214G&260G -rand:6/6,6/6 -============================ -input: -CTRS10+25 -output: -LogHorizon : 금전 재보표(87[6,6]):241G&260G -rand:6/6,6/6 -============================ -input: -CTRS10+26 -output: -LogHorizon : 금전 재보표(87[6,6]):241G&260G -rand:6/6,6/6 -============================ -input: -MTRS10 -output: -LogHorizon : 마법소재 재물표(62[6,6]):마촉매10[마촉매10](110G)&마촉매9[마촉매9](90G)x2 -rand:6/6,6/6 -============================ -input: -MTRS1 -output: -LogHorizon : 마법소재 재물표(17[6,6]):오래된 해골[코어소재](40G)&검은 시집[환전](15G) -rand:6/6,6/6 -============================ -input: -MTRS10 -output: -LogHorizon : 마법소재 재물표(62[6,6]):마촉매10[마촉매10](110G)&마촉매9[마촉매9](90G)x2 -rand:6/6,6/6 -============================ -input: -ITRS1 -output: -LogHorizon : 환전아이템 재물표(17[6,6]):도자기 수반[환전](60G) -rand:6/6,6/6 -============================ -input: -ITRS10 -output: -LogHorizon : 환전아이템 재물표(62[6,6]):오래된 역사서[환전](280G) -rand:6/6,6/6 -============================ -input: -PTAG -output: -LogHorizon : 퍼스널리티 태그(11):[조숙] -rand:1/6,1/6 -============================ -input: -PTAG -output: -LogHorizon : 퍼스널리티 태그(66):[미스테리어스] -rand:6/6,6/6 -============================ -input: -KOYU -output: -LogHorizon : 교우표([11]) > 교우대상에 대한 보호 -당신은 교우대상을 보호하고 싶다. 당신에게는 지켜줄수 있는 강함이 있다. -rand:1/6, 1/6 -============================ -input: -KOYU -output: -LogHorizon : 교우표([32]) > 교우대상의 라이벌 -당신은 교우대상을 라이벌이라고 생각한다. 이는 일반적인 감정일 수도 있고, 서로 절차탁마 하는 관계일 수도 있다. -rand:3/6, 2/6 -============================ -input: -KOYU -output: -LogHorizon : 교우표([66]) > 교우대상의 가족 -당신은 교우대상과 함께 살고 있다. 같은집에 누군가 있으면 쓸쓸하지 않을 것이다. -rand:6/6, 6/6 -============================ -input: -MGR1 -output: -LogHorizon : 프리픽스드 아이템 효과표(매직 그레이드1)([11]) > 접두어:기합의 해당태그:모든 무기 -아이템 효과:이 무기의【공격력】에 +1한다. -rand:1/6, 1/6 -============================ -input: -MGR1 -output: -LogHorizon : 프리픽스드 아이템 효과표(매직 그레이드1)([32]) > 접두어:철신의 해당태그:[방패][중갑][경갑] -아이템 효과:당신은 장면이 시작될 때[경감(지근거리부터의 공격) :3]을 얻는다. -rand:3/6, 2/6 -============================ -input: -MGR1 -output: -LogHorizon : 프리픽스드 아이템 효과표(매직 그레이드1)([66]) > 접두어:돌변의 해당태그:[가방] -아이템 효과:〔기동:인스턴트〕당신은 곧바로《장비 변경》을 한다. 시나리오당 1회 사용가능. -rand:6/6, 6/6 -============================ -input: -MGR2 -output: -LogHorizon : 프리픽스드 아이템 효과표(매직 그레이드2)([11]) > 접두어:분노의 해당태그:[양손]무기 -아이템 효과:〔기동:대미지굴림〕이 무기에 의한 [무기공격]의 대미지 굴림에+[당신의【헤이트】]. 장면에 1회 사용가능. -rand:1/6, 1/6 -============================ -input: -MGR2 -output: -LogHorizon : 프리픽스드 아이템 효과표(매직 그레이드2)([32]) > 접두어:견고한 해당태그:[중갑][경갑][연갑] -아이템 효과:이 방어구의 【물리방어력】에 +4 -rand:3/6, 2/6 -============================ -input: -MGR2 -output: -LogHorizon : 프리픽스드 아이템 효과표(매직 그레이드2)([66]) > 접두어:여행자의 해당태그:[가방] -아이템 효과:이 아이템에 [소지품 슬롯] 4개를 추가한다. -rand:6/6, 6/6 -============================ -input: -MGR3 -output: -LogHorizon : 프리픽스드 아이템 효과표(매직그레이드3)([11]) > 접두어:기백의 해당태그:모든 무기 -아이템 효과:이 무기의【공격력】에 +3한다. -rand:1/6, 1/6 -============================ -input: -MGR3 -output: -LogHorizon : 프리픽스드 아이템 효과표(매직그레이드3)([32]) > 접두어:화살반사 해당태그:[방패][경갑][연갑] -아이템 효과:당신은 장면이 시작 될 때 [경감(지근거리 이외로부터의 공격) :10]을 얻는다. -rand:3/6, 2/6 -============================ -input: -MGR3 -output: -LogHorizon : 프리픽스드 아이템 효과표(매직그레이드3)([66]) > 접두어:함정회피의 해당태그:[보조장비][악기][가방] -아이템 효과:〔기동:데미지 적용 직전〕당신에게 적용될 예정인 프롭 및[기믹]에 의한 데미지를 무효로 할 수 있다. 시나리오당1회 사용할 수 있다. -rand:6/6, 6/6 -============================ -input: -CTRS+57 -output: -LogHorizon : 금전 재보표(57):241G -rand: -============================ -input: -CTRS10$ -output: -LogHorizon : 금전 재보표(57[7]):241G -rand: -============================ -input: -ITRS+27 -output: -LogHorizon : 환전아이템 재물표(27):떡갈나무 의자[환전](90G) -rand: -============================ -input: -CTRS3+15$ -output: -LogHorizon : 금전 재보표(37[7]):126G -rand: -============================ -input: -HTRS1 -output: -LogHorizon : 히로인 재보표(7[1,1]):쓰러져 있는 초라한 말라깽이의 유녀 -rand:1/6,1/6 -============================ -input: -HTRS4+6 -output: -LogHorizon : 히로인 재보표(33[3,4]):외환거래에 가진 돈을 전부 잃어 공허한 선배 -rand:3/6,4/6 -============================ -input: -HTRS9 -output: -LogHorizon : 히로인 재보표(52[3,4]):당신의 첫사랑과 닮은 그녀 -rand:3/6,4/6 -============================ -input: -HTRS10 -output: -LogHorizon : 히로인 재보표(57[3,4]):※ 53이후는 미정입니다 ※ -rand:3/6,4/6 -============================ -input: -HTRS8 -output: -LogHorizon : 히로인 재보표(52[6,6]):당신의 첫사랑과 닮은 그녀 -rand:6/6,6/6 -============================ -input: -HTRS+57 -output: -LogHorizon : 히로인 재보표(57):※ 53이후는 미정입니다 ※ -rand: -============================ -input: -HTRS+52 -output: -LogHorizon : 히로인 재보표(52):당신의 첫사랑과 닮은 그녀 -rand: -============================ -input: -HTRS5+8$ -output: -LogHorizon : 히로인 재보표(40[7]):전투 때마다 많이 먹어지게 되는게 고민인 궁술소녀 -rand: -============================ -input: -HTRS7$ -output: -LogHorizon : 히로인 재보표(42[7]):함께 돌아가는 것을 부끄럽게 생각하는 핑크머리 소꿉친구 -rand: -============================ -input: -HTRS -output: -LogHorizon : HTRS -rand: -============================ -input: -HTRS+7 -output: -LogHorizon : 히로인 재보표(7):쓰러져 있는 초라한 말라깽이의 유녀 -rand: -============================ -input: -HLOC -output: -LogHorizon : 공격명중장소(11):이마 -rand:1/6,1/6 -============================ -input: -HLOC -output: -LogHorizon : 공격명중장소(66):안경 -rand:6/6,6/6 -============================ -input: -PCNM -output: -LogHorizon : PC名(11):Kuraudo -rand:1/6,1/6 -============================ -input: -PCNM -output: -LogHorizon : PC名(66):후지키도 -rand:6/6,6/6 -============================ -input: -IAT -output: -LogHorizon : 로데릭 연구소의 새로운 발명([1,1,1,1]):빛나고 돌며 소리가 울리는 중독성 있는 아름다운 무기 -rand:1/6,1/6,1/6,1/6 -============================ -input: -IATALT -output: -LogHorizon : 로데릭 연구소의 새로운 발명([6,5,3]):좋은 감촉의 형언할 수 없는 악세사리 -rand:6/6,5/6,3/6 -============================ -input: -IATABBLT -output: -LogHorizon : 로데릭 연구소의 새로운 발명([1,2,3,4,5]):빛나고 돌며 소리가 울리는 굉장히 무거운 굉장히 냄새나는 참신한 약품 -rand:1/6,2/6,3/6,4/6,5/6 -============================ -input: -IATA -output: -LogHorizon : 로데릭 연구소의 새로운 발명([1]):특징A(장점):빛나고 돌며 소리가 울리는 -rand:1/6 -============================ -input: -IATB -output: -LogHorizon : 로데릭 연구소의 새로운 발명([6]):특징B(단점):버려도 버려도 되돌아오는 -rand:6/6 -============================ -input: -IATL -output: -LogHorizon : 로데릭 연구소의 새로운 발명([3]):형용:풍류있는 -rand:3/6 -============================ -input: -IATT -output: -LogHorizon : 로데릭 연구소의 새로운 발명([2]):발명품의 종류:방어구 -rand:2/6 -============================ -input: -TIAS -output: -LogHorizon : 아키바 거리에서 발생하는 문제([1,1,1,1]):〈로그 호라이즌〉이 길드 회관에서 불합리한 싸움 -rand:1/6,1/6,1/6,1/6 -============================ -input: -TIAS -output: -LogHorizon : 아키바 거리에서 발생하는 문제([2,3,4,5]):〈초승달 동맹〉이 거리 한가운데에서 부자연스러운 사고 -rand:2/6,3/6,4/6,5/6 -============================ -input: -TIAS -output: -LogHorizon : 아키바 거리에서 발생하는 문제([6,6,6,6]):〈로데릭 상회〉가 하수구에서 머리 나쁜 분실물 -rand:6/6,6/6,6/6,6/6 -============================ -input: -ABDC -output: -LogHorizon : 버림받은 아이([1,1,1,1,1,1]):이름:꽃의 이름 주거:폐 건물 특기:무언가를 찾기 체형:깡마른 좋아하는 음식:과일 말투:말이 서툰 -rand:1/6,1/6,1/6,1/6,1/6,1/6 -============================ -input: -ABDC -output: -LogHorizon : 버림받은 아이([5,4,3,2,3,4]):이름:동물 이름 주거:나무 위 특기:노래 체형:키작은 좋아하는 음식:신선한 야채 말투:사극체 -rand:5/6,4/6,3/6,2/6,3/6,4/6 -============================ -input: -ABDC -output: -LogHorizon : 버림받은 아이([6,6,6,6,6,6]):이름:번호 주거:하수도 특기:약삭빠른 행동 체형:근육질의 좋아하는 음식:벌레 말투:귀국자녀 -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -MII -output: -LogHorizon : 악기 종류 표(1):타악기1(1):캐스터네츠 -rand:1/6, 1/6 -============================ -input: -MII -output: -LogHorizon : 악기 종류 표(3):현악기1(2):류트 -rand:3/6, 2/6 -============================ -input: -MII -output: -LogHorizon : 악기 종류 표(6):관악기2(6):퉁소 -rand:6/6, 6/6 -============================ -input: -MII1 -output: -LogHorizon : 악기 종류 표:타악기1(5):북 -rand:5/6 -============================ -input: -MII3 -output: -LogHorizon : 악기 종류 표:현악기1(4):바이올린 -rand:4/6 -============================ -input: -ESCT -output: -LogHorizon : 특수 소모표 : 로데릭 연구소는 폭발했다!(1[1]):당신의 머리카락이 폭발했다! 멋진 아프로 헤어다: 시나리오가 끝날 때까지 [머리] 태그를 가진 장비는 장비 불가 -rand:1/6 -============================ -input: -ESCT+3 -output: -LogHorizon : 특수 소모표 : 로데릭 연구소는 폭발했다!(4[1]):산양 슬라임이 폭발적으로 증식한다: [소지품] 슬롯을 모두 산양 슬라임([거래 불가], 가격50)으로 채운다. -rand:1/6 -============================ -input: -ESCT+2$3 -output: -LogHorizon : 특수 소모표 : 로데릭 연구소는 폭발했다!(5[3]):당신의 리얼이 폭발한다: 커넥션 하나를 시나리오가 끝날 때까지 잃는다. -rand: -============================ -input: -ESCT-2 -output: -LogHorizon : 특수 소모표 : 로데릭 연구소는 폭발했다!(0[2]):……하지만 아무 일도 일어나지 않았다!: 효과 없음 -rand:2/6 -============================ -input: -ESCT-2$0 -output: -LogHorizon : 특수 소모표 : 로데릭 연구소는 폭발했다!(-2[0]):……하지만 아무 일도 일어나지 않았다!: 효과 없음 -rand: -============================ -input: -ESCT+3 -output: -LogHorizon : 특수 소모표 : 로데릭 연구소는 폭발했다!(7[4]):보스 에너미가 폭발한다: 시나리오는 클라이맥스를 맞이하지 않고 종료된다. 수고하셨습니다. -rand:4/6 -============================ -input: -ESCT+4$5 -output: -LogHorizon : 특수 소모표 : 로데릭 연구소는 폭발했다!(9[5]):보스 에너미가 폭발한다: 시나리오는 클라이맥스를 맞이하지 않고 종료된다. 수고하셨습니다. -rand: -============================ -input: -ESCT3 -output: -LogHorizon : 특수 소모표 : 로데릭 연구소는 폭발했다!(1[1]):당신의 머리카락이 폭발했다! 멋진 아프로 헤어다: 시나리오가 끝날 때까지 [머리] 태그를 가진 장비는 장비 불가 -rand:1/6 -============================ -input: -ESCT5+3 -output: -LogHorizon : 특수 소모표 : 로데릭 연구소는 폭발했다!(4[1]):산양 슬라임이 폭발적으로 증식한다: [소지품] 슬롯을 모두 산양 슬라임([거래 불가], 가격50)으로 채운다. -rand:1/6 -============================ -input: -ESCT7+2$3 -output: -LogHorizon : 특수 소모표 : 로데릭 연구소는 폭발했다!(5[3]):당신의 리얼이 폭발한다: 커넥션 하나를 시나리오가 끝날 때까지 잃는다. -rand: -============================ -input: -ESCT3-2 -output: -LogHorizon : 특수 소모표 : 로데릭 연구소는 폭발했다!(0[2]):……하지만 아무 일도 일어나지 않았다!: 효과 없음 -rand:2/6 -============================ -input: -ESCT6-2$0 -output: -LogHorizon : 특수 소모표 : 로데릭 연구소는 폭발했다!(-2[0]):……하지만 아무 일도 일어나지 않았다!: 효과 없음 -rand: -============================ -input: -ESCT11+3 -output: -LogHorizon : 특수 소모표 : 로데릭 연구소는 폭발했다!(7[4]):보스 에너미가 폭발한다: 시나리오는 클라이맥스를 맞이하지 않고 종료된다. 수고하셨습니다. -rand:4/6 -============================ -input: -ESCT0+4$5 -output: -LogHorizon : 특수 소모표 : 로데릭 연구소는 폭발했다!(9[5]):보스 에너미가 폭발한다: 시나리오는 클라이맥스를 맞이하지 않고 종료된다. 수고하셨습니다. -rand: -============================ -input: -CSCT -output: -LogHorizon : 특수 소모표: 알브의 저주다!(1[1]):공복의 저주: 즉시 식량 아이템 하나를 먹는다. 배가 고프니 엄청 맛있어! -rand:1/6 -============================ -input: -CSCT+3 -output: -LogHorizon : 특수 소모표: 알브의 저주다!(4[1]):배리어 프리의 저주: [경감], [장벽]상태가 될 수 없게 된다. -rand:1/6 -============================ -input: -CSCT+2$3 -output: -LogHorizon : 특수 소모표: 알브의 저주다!(5[3]):집중력을 흐트리는 속삭임의 저주:자세가 무너져 [태세] 태그를 가진 특기를 사용할 수 없게 된다. -rand: -============================ -input: -CSCT-2 -output: -LogHorizon : 특수 소모표: 알브의 저주다!(0[2]):「축복해주지!」 축복을 받는다: 당신의 【인과력】+1 -rand:2/6 -============================ -input: -CSCT-2$0 -output: -LogHorizon : 특수 소모표: 알브의 저주다!(-2[0]):「축복해주지!」 축복을 받는다: 당신의 【인과력】+1 -rand: -============================ -input: -CSCT+3 -output: -LogHorizon : 특수 소모표: 알브의 저주다!(7[4]):의욕이 사라지는 저주: 아~ 진짜 의욕이 안 나네. 아무 것도 하기 싫어.【인과력】 사용 불가. -rand:4/6 -============================ -input: -CSCT+4$5 -output: -LogHorizon : 특수 소모표: 알브의 저주다!(9[5]):의욕이 사라지는 저주: 아~ 진짜 의욕이 안 나네. 아무 것도 하기 싫어.【인과력】 사용 불가. -rand: -============================ -input: -CSCT3 -output: -LogHorizon : 특수 소모표: 알브의 저주다!(1[1]):공복의 저주: 즉시 식량 아이템 하나를 먹는다. 배가 고프니 엄청 맛있어! -rand:1/6 -============================ -input: -CSCT4+3 -output: -LogHorizon : 특수 소모표: 알브의 저주다!(4[1]):배리어 프리의 저주: [경감], [장벽]상태가 될 수 없게 된다. -rand:1/6 -============================ -input: -CSCT14+2$3 -output: -LogHorizon : 특수 소모표: 알브의 저주다!(5[3]):집중력을 흐트리는 속삭임의 저주:자세가 무너져 [태세] 태그를 가진 특기를 사용할 수 없게 된다. -rand: -============================ -input: -CSCT4-2 -output: -LogHorizon : 특수 소모표: 알브의 저주다!(0[2]):「축복해주지!」 축복을 받는다: 당신의 【인과력】+1 -rand:2/6 -============================ -input: -CSCT1-2$0 -output: -LogHorizon : 특수 소모표: 알브의 저주다!(-2[0]):「축복해주지!」 축복을 받는다: 당신의 【인과력】+1 -rand: -============================ -input: -CSCT20+3 -output: -LogHorizon : 특수 소모표: 알브의 저주다!(7[4]):의욕이 사라지는 저주: 아~ 진짜 의욕이 안 나네. 아무 것도 하기 싫어.【인과력】 사용 불가. -rand:4/6 -============================ -input: -CSCT1+4$5 -output: -LogHorizon : 특수 소모표: 알브의 저주다!(9[5]):의욕이 사라지는 저주: 아~ 진짜 의욕이 안 나네. 아무 것도 하기 싫어.【인과력】 사용 불가. -rand: -============================ -input: -ESTL1 -output: -LogHorizon : 이스탈 탐색표CR1(7[1,1]) -숲 베리 따기: 여러분은 베리가 열린 수풀을 발견한다. 탐색을 하는 PC는 난이도 8의 [지각판정]을 한다(한 명당 1회만). 성공한 사람은 「숲 베리 (맘대로 샌드위치에 상당)」를 하나 입수한다. -rand:1/6, 1/6 -============================ -input: -ESTL2 -output: -LogHorizon : 이스탈 탐색표CR2(22[6,6]) -정보교환: 여러분은 모험자 집단과 만났다. 대표자는 목표 10의 [교섭판정]을 한다(적절한 서브 직업이 있다면 +2의 보너스를 얻을 수도 있다). 성공하면 부근의 정보를 들을 수 있다. 여러분 중 하나는 다음에 하는 [정찰] 행동에 +2를 얻는다. -rand:6/6, 6/6 -============================ -input: -ESTL3 -output: -LogHorizon : 이스탈 탐색표CR3(27[6,6]) -미끄러져 굴러서: 가도를 걷고 있는데 갑자기 거대한 와일드 보어가 튀어나온다. 피하던 찰나에 넘어져서 여러분 전원은 [소모품] 아이템을 하나 잃는다. [소모품]아이템을 가지고 있지 않다면 【인과력】 1점을 잃는다. -rand:6/6, 6/6 -============================ -input: -ESTL3 -output: -LogHorizon : 이스탈 탐색표CR3(25[5,5]) -코볼트를 물리쳐라!: 여러분은 코볼트 순찰대를 물리쳤다. 전원 [피로: (1D6+5)]를 입는 대신, 전리품으로 1인당 20G를 입수한다. -rand:5/6, 5/6 -============================ -input: -ESTL4 -output: -LogHorizon : 이스탈 탐색표CR4(27[5,2]) -미끄러져 굴러서: 가도를 걷고 있는데 갑자기 거대한 와일드 보어가 튀어나온다. 피하던 찰나에 넘어져서 여러분 전원은 [소모품] 아이템을 하나 잃는다. [소모품]아이템을 가지고 있지 않다면 【인과력】 1점을 잃는다. -rand:5/6, 2/6 -============================ -input: -ESTL4 -output: -LogHorizon : 이스탈 탐색표CR4(27[2,5]) -미끄러져 굴러서: 가도를 걷고 있는데 갑자기 거대한 와일드 보어가 튀어나온다. 피하던 찰나에 넘어져서 여러분 전원은 [소모품] 아이템을 하나 잃는다. [소모품]아이템을 가지고 있지 않다면 【인과력】 1점을 잃는다. -rand:2/6, 5/6 -============================ -input: -ESTL10 -output: -LogHorizon : 이스탈 탐색표CR10(62[6,6]) -줄곧 이어지는 생활: 산비탈의 한 면 전체에 밭들이 계단처럼 펼쳐져 있다. 이 정도의 논밭을 일구는 데 도대체 얼마나 많은 시간이 들었을까? 근처에는 틀림없이 〈대지인〉의 마을이 있을 것이다. -rand:6/6, 6/6 -============================ -input: -GTRS1 -output: -LogHorizon : 고블린 재물표(11[3,3]):가속의 두루마리(초급) -rand:3/6, 3/6 -============================ -input: -GTRS3+2 -output: -LogHorizon : 고블린 재물표(22[3,2]):흠집투성이의 상아상[환전](70G) -rand:3/6, 2/6 -============================ -input: -GTRS5$ -output: -LogHorizon : 고블린 재물표(32[7]):우든 라운드 -rand: -============================ -input: -GTRS -output: -LogHorizon : GTRS -rand: -============================ diff --git a/src/src_bcdice/test/data/LostRecord.txt b/src/src_bcdice/test/data/LostRecord.txt deleted file mode 100644 index 30922f576..000000000 --- a/src/src_bcdice/test/data/LostRecord.txt +++ /dev/null @@ -1,11 +0,0 @@ -input: -D66 -output: -LostRecord : (D66) > 35 -rand:3/6,5/6 -============================ -input: -D66 -output: -LostRecord : (D66) > 35 -rand:5/6,3/6 diff --git a/src/src_bcdice/test/data/LostRoyal.txt b/src/src_bcdice/test/data/LostRoyal.txt deleted file mode 100644 index 0e05c2210..000000000 --- a/src/src_bcdice/test/data/LostRoyal.txt +++ /dev/null @@ -1,306 +0,0 @@ -input: -D66 -output: -LostRoyal : (D66) > 35 -rand:3/6,5/6 -============================ -input: -LR[1,3,2,0,1,3] -output: -LostRoyal : 3D6 => [1,3,5] => (1+2+1) => 4 -rand:1/6,3/6,5/6 -============================ -input: -LR[1,3,2,0,1,3] -output: -LostRoyal : 3D6 => [1,5,5] => (1+1+1) => 3 -rand:1/6,5/6,5/6 -============================ -input: -LR[1,3,2,0,1,3] -output: -LostRoyal : 3D6 => [1,2,4] => (1+3+0) => 4 | 2 chain! (1,2) => 6 -rand:1/6,2/6,4/6 -============================ -input: -LR[1,3,2,0,1,3] -output: -LostRoyal : 3D6 => [1,2,2] => (1+3+3) => 7 | 2 chain! (1,2) => 10 [ファンブル] -rand:1/6,2/6,2/6 -============================ -input: -LR[1,3,2,0,1,3] -output: -LostRoyal : 3D6 => [2,5,6] => (3+1+3) => 7 | 2 chain! (5,6) => 9 -rand:2/6,5/6,6/6 -============================ -input: -LR[1,3,2,0,1,3] -output: -LostRoyal : 3D6 => [5,5,6] => (1+1+3) => 5 | 2 chain! (5,6) => 8 [ファンブル] -rand:5/6,5/6,6/6 -============================ -input: -LR[1,3,2,0,1,3] -output: -LostRoyal : 3D6 => [1,3,6] => (1+2+3) => 6 | 2 chain! (6,1) => 8 -rand:1/6,3/6,6/6 -============================ -input: -LR[1,3,2,0,1,3] -output: -LostRoyal : 3D6 => [6,1,3] => (3+1+2) => 6 | 2 chain! (6,1) => 8 -rand:6/6,1/6,3/6 -============================ -input: -LR[1,3,2,0,1,3] -output: -LostRoyal : 3D6 => [6,1,1] => (3+1+1) => 5 | 2 chain! (6,1) => 8 [ファンブル] -rand:6/6,1/6,1/6 -============================ -input: -LR[1,3,2,0,1,3] -output: -LostRoyal : 3D6 => [1,2,3] => (1+3+2) => 6 | 3 chain! (1,2,3) => 9 [スペシャル] -rand:1/6,2/6,3/6 -============================ -input: -LR[1,3,2,0,1,3] -output: -LostRoyal : 3D6 => [2,3,4] => (3+2+0) => 5 | 3 chain! (2,3,4) => 8 [スペシャル] -rand:2/6,3/6,4/6 -============================ -input: -LR[1,3,2,0,1,3] -output: -LostRoyal : 3D6 => [1,5,6] => (1+1+3) => 5 | 3 chain! (5,6,1) => 8 [スペシャル] -rand:1/6,5/6,6/6 -============================ -input: -LR[1,3,2,0,1,3] -output: -LostRoyal : 3D6 => [1,2,6] => (1+3+3) => 7 | 3 chain! (6,1,2) => 10 [スペシャル] -rand:1/6,2/6,6/6 -============================ -input: -LR[1,3,2,0,1,3] -output: -LostRoyal : 3D6 => [6,2,1] => (3+3+1) => 7 | 3 chain! (6,1,2) => 10 [スペシャル] -rand:6/6,2/6,1/6 -============================ -input: -FC -output: -LostRoyal : 1D6 => [1] 何かの問題で言い争い、主君に無礼を働いてしまう。あなたは主君の名誉点を1点失うか、【時間】を1点消費して和解の話し合いを持つか選べる。 -rand:1/6 -============================ -input: -FC -output: -LostRoyal : 1D6 => [2] 見過ごせば人々を不幸にする危険に遭遇する。あなたは逃げ出して冒険の名誉点を1点失うか、これに立ち向かい【命数】を2点減らすかを選べる。 -rand:2/6 -============================ -input: -FC -output: -LostRoyal : 1D6 => [3] あなたが惹かれたのは好意に付け込む人だった。あなたはその場を去って恋慕の名誉点を1点失うか【正義】を1点減らして礼を尽くすかを選べる。 -rand:3/6 -============================ -input: -FC -output: -LostRoyal : 1D6 => [4] 金銭的な問題で、生命と魂の苦しみを背負う人に出会う。あなたは庇護の名誉点を1点失うか出費を3点増やすかを選べる。 -rand:4/6 -============================ -input: -FC -output: -LostRoyal : 1D6 => [5] 襲撃を受ける。苦もなく叩き伏せると、卑屈な態度で命乞いをしてきた。容赦なく命を奪い寛容の名誉点を1点失うか、密告によって【血路】が1D6点増えるかを選ぶことができる。 -rand:5/6 -============================ -input: -FC -output: -LostRoyal : 1D6 => [6] 風聞により、友が悪に身を貶めたと知る。共に並んだ戦場が色褪せる想いだ。戦友の名誉点を1点減らすか、【酒と歌】すべてを失うかを選べる。 -rand:6/6 -============================ -input: -WPC -output: -LostRoyal : 1D6[6] 強い風(龍を幻視、儀式点プラス2) [合計:儀式点 +2 ] -rand:6/6 -============================ -input: -WPC -output: -LostRoyal : 1D6[5] やや強い風(儀式点プラス1) [合計:儀式点 +1 ] -rand:5/6 -============================ -input: -WPC -output: -LostRoyal : 1D6[4] ゆるやかな風 [合計:儀式点 +0 ] -rand:4/6 -============================ -input: -WPC -output: -LostRoyal : 1D6[3] ゆるやかな風 [合計:儀式点 +0 ] -rand:3/6 -============================ -input: -WPC -output: -LostRoyal : 1D6[2] 弱い風(振り足し) => 1D6[1]+2 ゆるやかな風 [合計:儀式点 +0 ] -rand:2/6,1/6 -============================ -input: -WPC -output: -LostRoyal : 1D6[2] 弱い風(振り足し) => 1D6[2]+2 ゆるやかな風 [合計:儀式点 +0 ] -rand:2/6,2/6 -============================ -input: -WPC -output: -LostRoyal : 1D6[2] 弱い風(振り足し) => 1D6[3]+2 やや強い風(儀式点プラス1) [合計:儀式点 +1 ] -rand:2/6,3/6 -============================ -input: -WPC -output: -LostRoyal : 1D6[2] 弱い風(振り足し) => 1D6[4]+2 強い風(龍を幻視、儀式点プラス2) [合計:儀式点 +2 ] -rand:2/6,4/6 -============================ -input: -WPC -output: -LostRoyal : 1D6[2] 弱い風(振り足し) => 1D6[5]+2 体が揺らぐほどの風(龍を幻視、儀式点プラス3) [合計:儀式点 +3 ] -rand:2/6,5/6 -============================ -input: -WPC -output: -LostRoyal : 1D6[2] 弱い風(振り足し) => 1D6[6]+2 体が揺らぐほどの風(龍を幻視、儀式点プラス3) [合計:儀式点 +3 ] -rand:2/6,6/6 -============================ -input: -WPC -output: -LostRoyal : 1D6[1] ほぼ凪(振り足し) => 1D6[2]+1 ゆるやかな風 [合計:儀式点 +0 ] -rand:1/6,2/6 -============================ -input: -WPC -output: -LostRoyal : 1D6[1] ほぼ凪(振り足し) => 1D6[1]+1 弱い風(振り足し) => 1D6[3]+2 やや強い風(儀式点プラス1) [合計:儀式点 +1 ] -rand:1/6,1/6,3/6 -============================ -input: -WPC -output: -LostRoyal : 1D6[1] ほぼ凪(振り足し) => 1D6[1]+1 弱い風(振り足し) => 1D6[1]+2 ゆるやかな風 [合計:儀式点 +0 ] -rand:1/6,1/6,1/6 -============================ -input: -EC -output: -LostRoyal : 1D6 => [1] 愛情/殺意 -rand:1/6 -============================ -input: -EC -output: -LostRoyal : 1D6 => [2] 友情/負目 -rand:2/6 -============================ -input: -EC -output: -LostRoyal : 1D6 => [3] 崇拝/嫌悪 -rand:3/6 -============================ -input: -EC -output: -LostRoyal : 1D6 => [4] 興味/侮蔑 -rand:4/6 -============================ -input: -EC -output: -LostRoyal : 1D6 => [5] 信頼/嫉妬 -rand:5/6 -============================ -input: -EC -output: -LostRoyal : 1D6 => [6] 守護/欲情 -rand:6/6 -============================ -input: -HR1 -output: -LostRoyal : 1D6[6] => 合計 6 -rand:6/6 -============================ -input: -HR1 -output: -LostRoyal : 1D6[5] => 合計 5 -rand:5/6 -============================ -input: -HR1 -output: -LostRoyal : 1D6[4] => 合計 4 -rand:4/6 -============================ -input: -HR1 -output: -LostRoyal : 1D6[3] => 合計 3 -rand:3/6 -============================ -input: -HR1 -output: -LostRoyal : 1D6[2] (振り足し) => 1D6[5] => 合計 7 -rand:2/6,5/6 -============================ -input: -HR1 -output: -LostRoyal : 1D6[2] (振り足し) => 1D6[1] (振り足し) => 1D6[2] (振り足し) => 1D6[3] => 合計 8 -rand:2/6,1/6,2/6,3/6 -============================ -input: -HR2 -output: -LostRoyal : 2D6[6,6] => 合計 12 -rand:6/6,6/6 -============================ -input: -HR2 -output: -LostRoyal : 2D6[4,5] => 合計 9 -rand:4/6,5/6 -============================ -input: -HR2 -output: -LostRoyal : 2D6[5,4] => 合計 9 -rand:5/6,4/6 -============================ -input: -HR2 -output: -LostRoyal : 2D6[2,6] (振り足し) => 2D6[3,4] => 合計 15 -rand:2/6,6/6,3/6,4/6 -============================ -input: -HR2 -output: -LostRoyal : 2D6[2,6] (振り足し) => 2D6[3,1] (振り足し) => 2D6[1,1] (振り足し) => 2D6[2,6] (振り足し) => 2D6[5,4] => 合計 31 -rand:2/6,6/6,3/6,1/6,1/6,1/6,2/6,6/6,5/6,4/6 -============================ \ No newline at end of file diff --git a/src/src_bcdice/test/data/MagicaLogia.txt b/src/src_bcdice/test/data/MagicaLogia.txt deleted file mode 100644 index 455841557..000000000 --- a/src/src_bcdice/test/data/MagicaLogia.txt +++ /dev/null @@ -1,1272 +0,0 @@ -input: -2d6>=4 -output: -MagicaLogia : (2D6>=4) > 6[2,4] > 6 > 成功 -rand:2/6,4/6 -============================ -input: -2d6>=4 -output: -MagicaLogia : (2D6>=4) > 4[2,2] > 4 > 成功 > 獣の魔素2が発生 -rand:2/6,2/6 -============================ -input: -2d6>=4 -output: -MagicaLogia : (2D6>=4) > 5[2,3] > 5 > 成功 -rand:3/6,2/6 -============================ -input: -2d6>=4 -output: -MagicaLogia : (2D6>=4) > 7[2,5] > 7 > 成功 -rand:2/6,5/6 -============================ -input: -2d6>=4 -output: -MagicaLogia : (2D6>=4) > 5[2,3] > 5 > 成功 -rand:2/6,3/6 -============================ -input: -2d6>=4 -output: -MagicaLogia : (2D6>=4) > 8[2,6] > 8 > 成功 -rand:2/6,6/6 -============================ -input: -2d6>=4 -output: -MagicaLogia : (2D6>=4) > 8[3,5] > 8 > 成功 -rand:5/6,3/6 -============================ -input: -2d6>=4 -output: -MagicaLogia : (2D6>=4) > 9[3,6] > 9 > 成功 -rand:3/6,6/6 -============================ -input: -2d6>=4 -output: -MagicaLogia : (2D6>=4) > 3[1,2] > 3 > 失敗 -rand:2/6,1/6 -============================ -input: -2d6>=4 -output: -MagicaLogia : (2D6>=4) > 11[5,6] > 11 > 成功 -rand:5/6,6/6 -============================ -input: -2d6>=9 -output: -MagicaLogia : (2D6>=9) > 4[2,2] > 4 > 失敗 > 獣の魔素2が発生 -rand:2/6,2/6 -============================ -input: -2d6>=9 -output: -MagicaLogia : (2D6>=9) > 4[2,2] > 4 > 失敗 > 獣の魔素2が発生 -rand:2/6,2/6 -============================ -input: -2d6>=9 -output: -MagicaLogia : (2D6>=9) > 6[3,3] > 6 > 失敗 > 力の魔素2が発生 -rand:3/6,3/6 -============================ -input: -2d6>=9 -output: -MagicaLogia : (2D6>=9) > 7[2,5] > 7 > 失敗 -rand:2/6,5/6 -============================ -input: -2d6>=9 -output: -MagicaLogia : (2D6>=9) > 10[5,5] > 10 > 成功 > 夢の魔素2が発生 -rand:5/6,5/6 -============================ -input: -2d6>=9 -output: -MagicaLogia : (2D6>=9) > 6[1,5] > 6 > 失敗 -rand:1/6,5/6 -============================ -input: -2d6>=9 -output: -MagicaLogia : (2D6>=9) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2d6>=9 -output: -MagicaLogia : (2D6>=9) > 6[3,3] > 6 > 失敗 > 力の魔素2が発生 -rand:3/6,3/6 -============================ -input: -2d6>=9 -output: -MagicaLogia : (2D6>=9) > 5[1,4] > 5 > 失敗 -rand:4/6,1/6 -============================ -input: -2d6>=9 -output: -MagicaLogia : (2D6>=9) > 7[2,5] > 7 > 失敗 -rand:5/6,2/6 -============================ -input: -2d6>=7 -output: -MagicaLogia : (2D6>=7) > 8[3,5] > 8 > 成功 -rand:3/6,5/6 -============================ -input: -2d6>=7 -output: -MagicaLogia : (2D6>=7) > 5[1,4] > 5 > 失敗 -rand:4/6,1/6 -============================ -input: -2d6>=7 -output: -MagicaLogia : (2D6>=7) > 3[1,2] > 3 > 失敗 -rand:2/6,1/6 -============================ -input: -2d6>=7 -output: -MagicaLogia : (2D6>=7) > 8[3,5] > 8 > 成功 -rand:3/6,5/6 -============================ -input: -2d6>=7 -output: -MagicaLogia : (2D6>=7) > 5[1,4] > 5 > 失敗 -rand:4/6,1/6 -============================ -input: -2d6>=7 -output: -MagicaLogia : (2D6>=7) > 9[3,6] > 9 > 成功 -rand:6/6,3/6 -============================ -input: -2d6>=7 -output: -MagicaLogia : (2D6>=7) > 6[1,5] > 6 > 失敗 -rand:5/6,1/6 -============================ -input: -2d6>=7 -output: -MagicaLogia : (2D6>=7) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2d6>=7 -output: -MagicaLogia : (2D6>=7) > 10[4,6] > 10 > 成功 -rand:6/6,4/6 -============================ -input: -2d6>=7 -output: -MagicaLogia : (2D6>=7) > 9[3,6] > 9 > 成功 -rand:3/6,6/6 -============================ -input: -WT -output: -MagicaLogia : 変調表(6) > 『不運』「星」≪黄金≫のチェック欄をチェックする。その特技が使用不能になり、その分野の特技が指定特技になった判定を行うとき、マイナス1の修正が付く。 -rand:6/6,1/6,1/6,1/6 -============================ -input: -WT -output: -MagicaLogia : 変調表(6) > 『不運』「闇」≪死≫のチェック欄をチェックする。その特技が使用不能になり、その分野の特技が指定特技になった判定を行うとき、マイナス1の修正が付く。 -rand:6/6,6/6,6/6,6/6 -============================ -input: -WT -output: -MagicaLogia : 変調表(1) > 『封印』自分の魔法(習得タイプが装備以外)からランダムに一つ選ぶ。選んだ魔法のチェック欄をチェックする。その魔法を使用するには【魔力】を2点消費しなくてはいけない。 -rand:1/6 -============================ -input: -WT -output: -MagicaLogia : 変調表(1) > 『封印』自分の魔法(習得タイプが装備以外)からランダムに一つ選ぶ。選んだ魔法のチェック欄をチェックする。その魔法を使用するには【魔力】を2点消費しなくてはいけない。 -rand:1/6 -============================ -input: -WT -output: -MagicaLogia : 変調表(1) > 『封印』自分の魔法(習得タイプが装備以外)からランダムに一つ選ぶ。選んだ魔法のチェック欄をチェックする。その魔法を使用するには【魔力】を2点消費しなくてはいけない。 -rand:1/6 -============================ -input: -WT -output: -MagicaLogia : 変調表(5) > 『遮蔽』【根源力】が1点減少する -rand:5/6 -============================ -input: -WT -output: -MagicaLogia : 変調表(2) > 『綻び』魔法戦の間、各ラウンドの終了時に自分の【魔力】が1点減少する。 -rand:2/6 -============================ -input: -WT -output: -MagicaLogia : 変調表(2) > 『綻び』魔法戦の間、各ラウンドの終了時に自分の【魔力】が1点減少する。 -rand:2/6 -============================ -input: -WT -output: -MagicaLogia : 変調表(5) > 『遮蔽』【根源力】が1点減少する -rand:5/6 -============================ -input: -WT -output: -MagicaLogia : 変調表(2) > 『綻び』魔法戦の間、各ラウンドの終了時に自分の【魔力】が1点減少する。 -rand:2/6 -============================ -input: -FCT -output: -MagicaLogia : 運命変転表(2) > 『別離』そのキャラクターにとって大切な人――親友や恋人、親や兄弟などを失う。 -rand:2/6 -============================ -input: -FCT -output: -MagicaLogia : 運命変転表(3) > 『大病』そのキャラクターは、不治の病を負う。 -rand:3/6 -============================ -input: -FCT -output: -MagicaLogia : 運命変転表(6) > 『事故』そのキャラクターは交通事故にあい、取り返しのつかない怪我を負う。 -rand:6/6 -============================ -input: -FCT -output: -MagicaLogia : 運命変転表(4) > 『借金』そのキャラクターは、悪人に利用され多額の借金を負う。 -rand:4/6 -============================ -input: -FCT -output: -MagicaLogia : 運命変転表(1) > 『挫折』そのキャラクターは、自分にとって大切だった夢を諦める。 -rand:1/6 -============================ -input: -FCT -output: -MagicaLogia : 運命変転表(2) > 『別離』そのキャラクターにとって大切な人――親友や恋人、親や兄弟などを失う。 -rand:2/6 -============================ -input: -FCT -output: -MagicaLogia : 運命変転表(1) > 『挫折』そのキャラクターは、自分にとって大切だった夢を諦める。 -rand:1/6 -============================ -input: -FCT -output: -MagicaLogia : 運命変転表(3) > 『大病』そのキャラクターは、不治の病を負う。 -rand:3/6 -============================ -input: -FCT -output: -MagicaLogia : 運命変転表(6) > 『事故』そのキャラクターは交通事故にあい、取り返しのつかない怪我を負う。 -rand:6/6 -============================ -input: -FCT -output: -MagicaLogia : 運命変転表(5) > 『不和』そのキャラクターは、人間関係に失敗し深い心の傷を負う。 -rand:5/6 -============================ -input: -ST -output: -MagicaLogia : シーン表(7) > 周囲で〈断章〉が引き起こした魔法災厄が発生する。「星」≪黄金≫の判定を行うこと。成功すると、好きな魔素が一個発生する。失敗すると「運命変転表」を使用する。 -rand:2/6,5/6,1/6,1/6,1/6 -============================ -input: -ST -output: -MagicaLogia : シーン表(6) > 無人の路地裏。ここならば、邪魔が入ることもないだろう。 -rand:1/6,5/6 -============================ -input: -ST -output: -MagicaLogia : シーン表(9) > 読んでいた本を閉じる。そこには、あなたが知りたがっていたことが書かれていた。なるほど、そういうことか。 -rand:3/6,6/6 -============================ -input: -ST -output: -MagicaLogia : シーン表(7) > 周囲で〈断章〉が引き起こした魔法災厄が発生する。「闇」≪死≫の判定を行うこと。成功すると、好きな魔素が一個発生する。失敗すると「運命変転表」を使用する。 -rand:6/6,1/6,6/6,6/6,6/6 -============================ -input: -ST -output: -MagicaLogia : シーン表(12) > 未来の予感。このままだと起きるかもしれない出来事の幻が現れる。 -rand:6/6,6/6 -============================ -input: -ST -output: -MagicaLogia : シーン表(8) > 夜の街を歩く。暖かな家々の明かりが、遠く見える。 -rand:6/6,2/6 -============================ -input: -ST -output: -MagicaLogia : シーン表(2) > 魔法で作り出した次元の狭間。ここは時間や空間から切り離された、どこでもあり、どこでもない場所だ。 -rand:1/6,1/6 -============================ -input: -ST -output: -MagicaLogia : シーン表(8) > 夜の街を歩く。暖かな家々の明かりが、遠く見える。 -rand:2/6,6/6 -============================ -input: -ST -output: -MagicaLogia : シーン表(7) > 周囲で〈断章〉が引き起こした魔法災厄が発生する。「獣」≪花≫の判定を行うこと。成功すると、好きな魔素が一個発生する。失敗すると「運命変転表」を使用する。 -rand:3/6,4/6,2/6,2/6,2/6 -============================ -input: -ST -output: -MagicaLogia : シーン表(7) > 周囲で〈断章〉が引き起こした魔法災厄が発生する。「力」≪波≫の判定を行うこと。成功すると、好きな魔素が一個発生する。失敗すると「運命変転表」を使用する。 -rand:5/6,2/6,3/6,3/6,3/6 -============================ -input: -FT -output: -MagicaLogia : ファンブル表(2) > 魔法災厄が、あなたの魔素を奪い取る。チャージしている魔素の中から、好きな組み合わせで2点減少する。 -rand:2/6 -============================ -input: -FT -output: -MagicaLogia : ファンブル表(1) > 魔法災厄が、あなたのアンカーに降りかかる。「運命変転」が発生する。 -rand:1/6 -============================ -input: -FT -output: -MagicaLogia : ファンブル表(3) > 魔法の制御に失敗してしまう。【魔力】が1点減少する。 -rand:3/6 -============================ -input: -FT -output: -MagicaLogia : ファンブル表(1) > 魔法災厄が、あなたのアンカーに降りかかる。「運命変転」が発生する。 -rand:1/6 -============================ -input: -FT -output: -MagicaLogia : ファンブル表(1) > 魔法災厄が、あなたのアンカーに降りかかる。「運命変転」が発生する。 -rand:1/6 -============================ -input: -FT -output: -MagicaLogia : ファンブル表(4) > 魔法災厄になり、そのサイクルが終了するまで、行為判定にマイナス1の修正が付く。 -rand:4/6 -============================ -input: -FT -output: -MagicaLogia : ファンブル表(3) > 魔法の制御に失敗してしまう。【魔力】が1点減少する。 -rand:3/6 -============================ -input: -FT -output: -MagicaLogia : ファンブル表(6) > ふぅ、危なかった。特に何も起こらない。 -rand:6/6 -============================ -input: -FT -output: -MagicaLogia : ファンブル表(6) > ふぅ、危なかった。特に何も起こらない。 -rand:6/6 -============================ -input: -FT -output: -MagicaLogia : ファンブル表(4) > 魔法災厄になり、そのサイクルが終了するまで、行為判定にマイナス1の修正が付く。 -rand:4/6 -============================ -input: -AT -output: -MagicaLogia : 事件表(2) > 不意のプレゼント、素晴らしいアイデア、悪魔的な取引……あなたは好きな魔素を1つ獲得するか【魔力】を1D6点回復できる。どちらかを選んだ場合、その人物に対する【運命】が1点上昇する。【運命】の属性は、ゲームマスターが自由に決定できる。 -rand:1/6,1/6 -============================ -input: -AT -output: -MagicaLogia : 事件表(9) > 魂のひらめき、愛の告白、怪しい抱擁……その人物に対する【運命】が1点上昇する。【運命】の属性は「恋愛」になる。 -rand:5/6,4/6 -============================ -input: -AT -output: -MagicaLogia : 事件表(8) > 道路の曲がり角、コンビニ、空から落ちてくる……偶然出会う。その人物に対する【運命】が1点上昇する。【運命】の属性は「興味」になる。 -rand:3/6,5/6 -============================ -input: -AT -output: -MagicaLogia : 事件表(6) > 意図せぬ感謝、窮地からの救済、一生のお願いを叶える……その人物に対する【運命】が1点上昇する。【運命】の属性は「支配」になる。 -rand:1/6,5/6 -============================ -input: -AT -output: -MagicaLogia : 事件表(6) > 意図せぬ感謝、窮地からの救済、一生のお願いを叶える……その人物に対する【運命】が1点上昇する。【運命】の属性は「支配」になる。 -rand:5/6,1/6 -============================ -input: -AT -output: -MagicaLogia : 事件表(8) > 道路の曲がり角、コンビニ、空から落ちてくる……偶然出会う。その人物に対する【運命】が1点上昇する。【運命】の属性は「興味」になる。 -rand:6/6,2/6 -============================ -input: -AT -output: -MagicaLogia : 事件表(9) > 魂のひらめき、愛の告白、怪しい抱擁……その人物に対する【運命】が1点上昇する。【運命】の属性は「恋愛」になる。 -rand:5/6,4/6 -============================ -input: -AT -output: -MagicaLogia : 事件表(4) > 軽い口論、殴り合いの喧嘩、魔法戦……互いに1D6を振り、低い目を振った方が、高い目を振った方に対して【運命】が1点上昇する。【運命】の属性は高い目を振った方が、自由に決定できる。 -rand:1/6,3/6 -============================ -input: -AT -output: -MagicaLogia : 事件表(8) > 道路の曲がり角、コンビニ、空から落ちてくる……偶然出会う。その人物に対する【運命】が1点上昇する。【運命】の属性は「興味」になる。 -rand:4/6,4/6 -============================ -input: -AT -output: -MagicaLogia : 事件表(7) > 生ける屍の群れ、地獄の業火、迷宮化……魔法災厄に襲われる。「力」≪波≫の判定を行う。成功すると好きな魔素が1点発生する。失敗すると、その人物に対し「運命変転表」を使用する。 -rand:3/6,4/6,3/6,3/6,3/6 -============================ -input: -BGT -output: -MagicaLogia : 経歴表(2) > 司書/ライブラリアン -rand:2/6 -============================ -input: -BGT -output: -MagicaLogia : 経歴表(2) > 司書/ライブラリアン -rand:2/6 -============================ -input: -BGT -output: -MagicaLogia : 経歴表(5) > 異端者/アウトサイダー -rand:5/6 -============================ -input: -BGT -output: -MagicaLogia : 経歴表(5) > 異端者/アウトサイダー -rand:5/6 -============================ -input: -BGT -output: -MagicaLogia : 経歴表(3) > 書工/アルチザン -rand:3/6 -============================ -input: -BGT -output: -MagicaLogia : 経歴表(3) > 書工/アルチザン -rand:3/6 -============================ -input: -BGT -output: -MagicaLogia : 経歴表(6) > 外典/アポクリファ -rand:6/6 -============================ -input: -BGT -output: -MagicaLogia : 経歴表(3) > 書工/アルチザン -rand:3/6 -============================ -input: -BGT -output: -MagicaLogia : 経歴表(3) > 書工/アルチザン -rand:3/6 -============================ -input: -BGT -output: -MagicaLogia : 経歴表(1) > 書警/ブックウォッチ -rand:1/6 -============================ -input: -DAT -output: -MagicaLogia : 初期アンカー表(8) > 『同輩』あなたはそのアンカーと仕事場、もしくは学校が同じである。 -rand:6/6,2/6 -============================ -input: -DAT -output: -MagicaLogia : 初期アンカー表(9) > 『文通』あなたは、手紙やメール越しにそのアンカーと意見を交換している。 -rand:6/6,3/6 -============================ -input: -DAT -output: -MagicaLogia : 初期アンカー表(4) > 『酒友』あなたとアンカーは、酒飲み友達である。 -rand:3/6,1/6 -============================ -input: -DAT -output: -MagicaLogia : 初期アンカー表(8) > 『同輩』あなたはそのアンカーと仕事場、もしくは学校が同じである。 -rand:3/6,5/6 -============================ -input: -DAT -output: -MagicaLogia : 初期アンカー表(8) > 『同輩』あなたはそのアンカーと仕事場、もしくは学校が同じである。 -rand:5/6,3/6 -============================ -input: -DAT -output: -MagicaLogia : 初期アンカー表(6) > 『同人』あなたは、そのアンカーと同じ趣味を楽しむ同好の士である。 -rand:3/6,3/6 -============================ -input: -DAT -output: -MagicaLogia : 初期アンカー表(8) > 『同輩』あなたはそのアンカーと仕事場、もしくは学校が同じである。 -rand:3/6,5/6 -============================ -input: -DAT -output: -MagicaLogia : 初期アンカー表(7) > 『隣人』あなたは、そのアンカーの近所に住んでいる。 -rand:4/6,3/6 -============================ -input: -DAT -output: -MagicaLogia : 初期アンカー表(7) > 『隣人』あなたは、そのアンカーの近所に住んでいる。 -rand:3/6,4/6 -============================ -input: -DAT -output: -MagicaLogia : 初期アンカー表(4) > 『酒友』あなたとアンカーは、酒飲み友達である。 -rand:1/6,3/6 -============================ -input: -FAT -output: -MagicaLogia : 運命属性表(6) > 『尊敬』その才能や思想、姿勢に対し畏敬や尊敬を抱く人物。 -rand:6/6 -============================ -input: -FAT -output: -MagicaLogia : 運命属性表(2) > 『支配』あなたの部下になることが運命づけられた相手。 -rand:2/6 -============================ -input: -FAT -output: -MagicaLogia : 運命属性表(3) > 『宿敵』何らかの方法で戦いあい、競い合う不倶戴天の敵。 -rand:3/6 -============================ -input: -FAT -output: -MagicaLogia : 運命属性表(2) > 『支配』あなたの部下になることが運命づけられた相手。 -rand:2/6 -============================ -input: -FAT -output: -MagicaLogia : 運命属性表(2) > 『支配』あなたの部下になることが運命づけられた相手。 -rand:2/6 -============================ -input: -FAT -output: -MagicaLogia : 運命属性表(4) > 『恋愛』心を奪われ、相手に強い感情を抱いている存在。 -rand:4/6 -============================ -input: -FAT -output: -MagicaLogia : 運命属性表(4) > 『恋愛』心を奪われ、相手に強い感情を抱いている存在。 -rand:4/6 -============================ -input: -FAT -output: -MagicaLogia : 運命属性表(1) > 『血縁』自分や、自分が愛した者の親類や家族。 -rand:1/6 -============================ -input: -FAT -output: -MagicaLogia : 運命属性表(5) > 『興味』とても稀少だったり、不可解だったりして研究や観察をしたくなる対象。 -rand:5/6 -============================ -input: -FAT -output: -MagicaLogia : 運命属性表(1) > 『血縁』自分や、自分が愛した者の親類や家族。 -rand:1/6 -============================ -input: -WIT -output: -MagicaLogia : 願い表(2) > 自分の大切な人や憧れの人に会わせて欲しい。 -rand:2/6 -============================ -input: -WIT -output: -MagicaLogia : 願い表(1) > 自分以外の特定の誰かを助けてあげて欲しい。 -rand:1/6 -============================ -input: -WIT -output: -MagicaLogia : 願い表(1) > 自分以外の特定の誰かを助けてあげて欲しい。 -rand:1/6 -============================ -input: -WIT -output: -MagicaLogia : 願い表(5) > 特定の誰かを罰して欲しい。 -rand:5/6 -============================ -input: -WIT -output: -MagicaLogia : 願い表(1) > 自分以外の特定の誰かを助けてあげて欲しい。 -rand:1/6 -============================ -input: -WIT -output: -MagicaLogia : 願い表(1) > 自分以外の特定の誰かを助けてあげて欲しい。 -rand:1/6 -============================ -input: -WIT -output: -MagicaLogia : 願い表(2) > 自分の大切な人や憧れの人に会わせて欲しい。 -rand:2/6 -============================ -input: -WIT -output: -MagicaLogia : 願い表(5) > 特定の誰かを罰して欲しい。 -rand:5/6 -============================ -input: -WIT -output: -MagicaLogia : 願い表(2) > 自分の大切な人や憧れの人に会わせて欲しい。 -rand:2/6 -============================ -input: -WIT -output: -MagicaLogia : 願い表(1) > 自分以外の特定の誰かを助けてあげて欲しい。 -rand:1/6 -============================ -input: -RTT -output: -MagicaLogia : ランダム特技決定表(5,9) > 「夢」≪狂気≫ -rand:5/6,5/6,4/6 -============================ -input: -RTT -output: -MagicaLogia : ランダム特技決定表(1,6) > 「星」≪海≫ -rand:1/6,4/6,2/6 -============================ -input: -RTT -output: -MagicaLogia : ランダム特技決定表(3,11) > 「力」≪光≫ -rand:3/6,6/6,5/6 -============================ -input: -RTT -output: -MagicaLogia : ランダム特技決定表(1,6) > 「星」≪海≫ -rand:1/6,4/6,2/6 -============================ -input: -RTT -output: -MagicaLogia : ランダム特技決定表(3,10) > 「力」≪炎≫ -rand:3/6,5/6,5/6 -============================ -input: -RTT -output: -MagicaLogia : ランダム特技決定表(6,12) > 「闇」≪死≫ -rand:6/6,6/6,6/6 -============================ -input: -RTT -output: -MagicaLogia : ランダム特技決定表(1,10) > 「星」≪太陽≫ -rand:1/6,5/6,5/6 -============================ -input: -RTT -output: -MagicaLogia : ランダム特技決定表(6,6) > 「闇」≪怠惰≫ -rand:6/6,5/6,1/6 -============================ -input: -RTT -output: -MagicaLogia : ランダム特技決定表(6,8) > 「闇」≪不幸≫ -rand:6/6,5/6,3/6 -============================ -input: -RTT -output: -MagicaLogia : ランダム特技決定表(3,10) > 「力」≪炎≫ -rand:3/6,4/6,6/6 -============================ -input: -STB -output: -MagicaLogia : 大判シーン表(7) > 周囲で〈断章〉が引き起こした魔法災厄が発生する。「星」≪黄金≫の判定を行うこと。成功すると、そのシーンに好きな魔素が1点発生する。失敗すると、「運命変転表」を使用する。 -rand:2/6,5/6,1/6,1/6,1/6 -============================ -input: -STB -output: -MagicaLogia : 大判シーン表(6) > 無人の路地裏。ここならば、邪魔が入ることもないだろう。 -rand:1/6,5/6 -============================ -input: -STB -output: -MagicaLogia : 大判シーン表(9) > 読んでいた本を閉じる。そこには、あなたが知りたかったことが書かれていた。なるほど、そういうことか。 -rand:3/6,6/6 -============================ -input: -STB -output: -MagicaLogia : 大判シーン表(7) > 周囲で〈断章〉が引き起こした魔法災厄が発生する。「闇」≪死≫の判定を行うこと。成功すると、そのシーンに好きな魔素が1点発生する。失敗すると、「運命変転表」を使用する。 -rand:6/6,1/6,6/6,6/6,6/6 -============================ -input: -STB -output: -MagicaLogia : 大判シーン表(12) > 悲劇の予感。家族の不幸、友の絶望、仲間の死......このままだと起きてしまうかもしれない出来事の幻が見える。そのシーンに闇の魔素が1点発生する。 -rand:6/6,6/6 -============================ -input: -STB -output: -MagicaLogia : 大判シーン表(8) > なんの変哲もないおだやかな風景。しかし、その日常の背後で魔法災厄の影を感じる。 -rand:6/6,2/6 -============================ -input: -STB -output: -MagicaLogia : 大判シーン表(2) > ここではないどこか。魔法の力が満ちた異境の一つへ、一瞬だけ旅をする。そのシーンに星の魔素が1点発生する。 -rand:1/6,1/6 -============================ -input: -STB -output: -MagicaLogia : 大判シーン表(8) > なんの変哲もないおだやかな風景。しかし、その日常の背後で魔法災厄の影を感じる。 -rand:2/6,6/6 -============================ -input: -STB -output: -MagicaLogia : 大判シーン表(7) > 周囲で〈断章〉が引き起こした魔法災厄が発生する。「獣」≪花≫の判定を行うこと。成功すると、そのシーンに好きな魔素が1点発生する。失敗すると、「運命変転表」を使用する。 -rand:3/6,4/6,2/6,2/6,2/6 -============================ -input: -STB -output: -MagicaLogia : 大判シーン表(7) > 周囲で〈断章〉が引き起こした魔法災厄が発生する。「力」≪波≫の判定を行うこと。成功すると、そのシーンに好きな魔素が1点発生する。失敗すると、「運命変転表」を使用する。 -rand:5/6,2/6,3/6,3/6,3/6 -============================ -input: -RTS -output: -MagicaLogia : 指定特技(星)(7) > 静寂 -rand:5/6,2/6 -============================ -input: -RTS -output: -MagicaLogia : 指定特技(星)(2) > 黄金 -rand:1/6,1/6 -============================ -input: -RTS -output: -MagicaLogia : 指定特技(星)(12) > 異界 -rand:6/6,6/6 -============================ -input: -RTS -output: -MagicaLogia : 指定特技(星)(4) > 森 -rand:1/6,3/6 -============================ -input: -RTS -output: -MagicaLogia : 指定特技(星)(7) > 静寂 -rand:3/6,4/6 -============================ -input: -RTB -output: -MagicaLogia : 指定特技(獣)(7) > 混沌 -rand:5/6,2/6 -============================ -input: -RTB -output: -MagicaLogia : 指定特技(獣)(2) > 肉 -rand:1/6,1/6 -============================ -input: -RTB -output: -MagicaLogia : 指定特技(獣)(12) > エロス -rand:6/6,6/6 -============================ -input: -RTB -output: -MagicaLogia : 指定特技(獣)(7) > 混沌 -rand:3/6,4/6 -============================ -input: -RTF -output: -MagicaLogia : 指定特技(力)(7) > 自由 -rand:5/6,2/6 -============================ -input: -RTF -output: -MagicaLogia : 指定特技(力)(2) > 重力 -rand:1/6,1/6 -============================ -input: -RTF -output: -MagicaLogia : 指定特技(力)(12) > 円環 -rand:6/6,6/6 -============================ -input: -RTF -output: -MagicaLogia : 指定特技(力)(7) > 自由 -rand:3/6,4/6 -============================ -input: -RTP -output: -MagicaLogia : 指定特技(歌)(7) > 想い -rand:5/6,2/6 -============================ -input: -RTP -output: -MagicaLogia : 指定特技(歌)(2) > 物語 -rand:1/6,1/6 -============================ -input: -RTP -output: -MagicaLogia : 指定特技(歌)(12) > 時 -rand:6/6,6/6 -============================ -input: -RTP -output: -MagicaLogia : 指定特技(歌)(7) > 想い -rand:3/6,4/6 - -============================ -input: -RTD -output: -MagicaLogia : 指定特技(夢)(7) > 偶然 -rand:5/6,2/6 -============================ -input: -RTD -output: -MagicaLogia : 指定特技(夢)(2) > 追憶 -rand:1/6,1/6 -============================ -input: -RTD -output: -MagicaLogia : 指定特技(夢)(12) > 未来 -rand:6/6,6/6 -============================ -input: -RTD -output: -MagicaLogia : 指定特技(夢)(7) > 偶然 -rand:3/6,4/6 -============================ - -input: -RTN -output: -MagicaLogia : 指定特技(闇)(7) > 歪み -rand:5/6,2/6 -============================ -input: -RTN -output: -MagicaLogia : 指定特技(闇)(2) > 深淵 -rand:1/6,1/6 -============================ -input: -RTN -output: -MagicaLogia : 指定特技(闇)(12) > 死 -rand:6/6,6/6 -============================ -input: -RTN -output: -MagicaLogia : 指定特技(闇)(7) > 歪み -rand:3/6,4/6 -============================ -input: -MGCT -output: -MagicaLogia : 運命変転「魔法使いの災厄」(1) > 嫌悪。〈愚者〉たちを嫌悪し、〈大法典〉のやり方に疑問を覚えるようになる。この不幸が二度発生すると、その魔法使いは死亡しないで〈書籍卿〉になり、NPCとなる。この不幸が〈書籍卿〉に降り注いだ場合、不幸は無効化される。 -rand:1/6 -============================ -input: -MGCT -output: -MagicaLogia : 運命変転「魔法使いの災厄」(6) > 消耗。【魔力】が1点減少する。この不幸が二度発生しても死亡しない。 -rand:6/6 -============================ - -input: -MBST -output: -MagicaLogia : 魔法書架シーン表(2) > 〈禁書〉の保管庫へ入ることを許可された。幾重にも張り巡らされた決壊や、鋭い目つきの書警たちが目に付く。その隙をついて、〈禁書〉が襲い掛かってきた!このシーンに登場したPCは一人だけ《流れ》の判定を行う。失敗すると、【魔力】が3点減少する。成功すると、【一時的魔力】を3点得る。誰かが判定すると、成否にかかわらず、この効果はなくなる。 -rand:1/6,1/6,2/6,2/6 -============================ -input: -MBST -output: -MagicaLogia : 魔法書架シーン表(2) > 〈禁書〉の保管庫へ入ることを許可された。幾重にも張り巡らされた決壊や、鋭い目つきの書警たちが目に付く。その隙をついて、〈禁書〉が襲い掛かってきた!このシーンに登場したPCは一人だけ《衝撃》の判定を行う。失敗すると、【魔力】が3点減少する。成功すると、【一時的魔力】を3点得る。誰かが判定すると、成否にかかわらず、この効果はなくなる。 -rand:1/6,1/6,2/6,6/6 -============================ -input: -MBST -output: -MagicaLogia : 魔法書架シーン表(4) > 町の図書館。いつのまにか、人界に戻ってきてしまったようだ。このシーンに登場しているPCのうち一人は、好きなキャラクターを1人選び、事件表を一回振って、その効果を適用する。 -rand:1/6,3/6 -============================ -input: -MBST -output: -MagicaLogia : 魔法書架シーン表(7) > 荒れ果てた部屋。倒れた空っぽの本棚が、目に付く。これは〈大破壊〉の影響なのだろうか…。このシーンに登場するPCは、「星」≪異界≫の判定を行う。失敗すると、時空を超えてアンカーに影響が現れる。「運命変転」が発生する。 -rand:1/6,6/6,1/6,6/6,6/6 -============================ -input: -MBST -output: -MagicaLogia : 魔法書架シーン表(12) > 本棚と本棚の間に、唐突に扉が浮かんでいる。この扉は、異界につながる戸口だ。一体どこにつながっているのだろう。異界シーン表の中からランダムに一つを選んで、その効果を適用する。 -rand:6/6,6/6 -============================ - -input: -MAST -output: -MagicaLogia : 魔法学院シーン表(2) > 目の前に美しい黒龍が現れた。学院の長、ザナルパトスだ。彼は、何を告げようとしているのだろうか。 -rand:1/6,1/6 -============================ -input: -MAST -output: -MagicaLogia : 魔法学院シーン表(3) > 突然何かが襲い掛かってきた!生徒が元型の召喚に失敗したようだ。このシーンに登場しているPCのうち一人は、≪流れ≫の判定を行う。失敗すると、【魔力】が3点減少する。成功すると、【一時的魔力】を3点得る。誰かが判定すると、成否にかかわらず、この効果はなくなる。 -rand:1/6,2/6,1/6,3/6 -============================ -input: -MAST -output: -MagicaLogia : 魔法学院シーン表(4) > ここは女子寮?このシーンに男性のPCが登場した場合、その男性PCは≪鱗≫の判定を行う。失敗すると、「封印」の変調を受ける。 -rand:2/6,2/6,1/6,5/6 -============================ - -input: -MAST -output: -MagicaLogia : 魔法学院シーン表(7) > 扉を開けて現れたのは、よく知る相手だった。なぜか、学院に迷い込んでしまったようだ。「力」≪水≫で判定を行う。失敗すると、「運命変転」が発生する。 -rand:2/6,5/6,3/6,2/6,3/6 -============================ -input: -MAST -output: -MagicaLogia : 魔法学院シーン表(10) > 授業を行っている教室。講師が呼び出した元型がこちらに向かって飛んでくる。このシーンに登場しているPCは一人だけ「闇」≪死≫で判定を行う。失敗すると【魔力】が1点減少する。成功すると、その特技の精霊が召喚できる。誰かが判定すると、成否にかかわらず、この効果はなくなる。 -rand:4/6,6/6,6/6,6/6,6/6 -============================ - -input: -MAST -output: -MagicaLogia : 魔法学院シーン表(11) > 生徒に何か魔法を見せて欲しいと乞われる。このシーンに登場しているPCは一人だけ、≪追憶≫の判定を行う。失敗すると、「不運」の変調を受ける。成功すると、「夢」の魔素をを2点獲得する。誰かが判定すると、成否にかかわらず、この効果はなくなる。 -rand:5/6,6/6,1/6,1/6 -============================ - -input: -MAST -output: -MagicaLogia : 魔法学院シーン表(12) > 自習室。生徒たちが必死に魔導書を理解しようとしている。このシーンに登場しているPCは一人だけ、≪天空≫の判定を行う。成功すると、好きな魔素をを2点獲得する。誰かが判定すると、成否にかかわらず、この効果はなくなる。 -rand:6/6,6/6,5/6,6/6 -============================ - -input: -TCST -output: -MagicaLogia : クレドの塔シーン表(3) > 突然何かが襲い掛かってきた!未熟な魔法使いが元型の召喚に失敗したようだ。このシーンに登場しているPCは一人だけ、≪炎≫の判定を行う。失敗すると、【魔力】が3点減少する。成功すると、【一時的魔力】を3点得る。誰かが判定すると、成否にかかわらず、この効果はなくなる。 -rand:1/6,2/6,6/6,4/6 -============================ -input: -TCST -output: -MagicaLogia : クレドの塔シーン表(7) > こんな場所にいる筈のない人が君の前にあらわれる。眠り姫の眠りの中に迷い込んでしまったらしい。「力」≪水≫で判定を行う。失敗すると、「運命変転」が発生する。 -rand:2/6,5/6,3/6,2/6,3/6 -============================ -input: -TCST -output: -MagicaLogia : クレドの塔シーン表(4) > 話しかけてきた天涯預言者が、不幸な未来を予言する。このシーンに登場しているPCは一人だけ、≪眠り≫の判定を行う。失敗すると、【魔力】が1点減少する。成功すると、「夢」の魔素をを1点獲得する。誰かが判定すると、成否にかかわらず、この効果はなくなる。 -rand:1/6,3/6,1/6,5/6 -============================ -input: -PWST -output: -MagicaLogia : 並行世界シーン表(3) > 賑やかな通り。向こうから、あなたにそっくりな人物が歩いてくる。あれはこの世界の、あなた自身だろうか。このシーンに登場しているPCの一人は、「獣」≪花≫の判定を行う。成功すると、好きな魔素をを2点獲得する。失敗すると、「病魔」の変調を受ける。誰かが判定すると、成否にかかわらず、この効果はなくなる。 -rand:1/6,2/6,2/6,1/6,3/6 -============================ -input: -PWST -output: -MagicaLogia : 並行世界シーン表(7) > 縁のある人の家の前。玄関から、見知らぬ人が現れ、こちらを不審げに眺めている。この人はもしかして…?「夢」≪追憶≫で判定を行う。失敗すると、「運命変転」が発生する。 -rand:2/6,5/6,5/6,1/6,1/6 -============================ -input: -PWST -output: -MagicaLogia : 並行世界シーン表(11) > 小学校の前を通る。音楽室の窓から、見知らぬ音楽家の肖像が見える。≪微笑み≫の判定を行う。失敗すると、「封印」の変調を受ける。 -rand:6/6,5/6,1/6,5/6 -============================ -input: -PAST -output: -MagicaLogia : 終末シーン表(2) > 夜。雨宿りのために足を踏み入れた寺院に危険は気配はなく、ゆっくり休めそうだ。静に時が流れていく。 -rand:1/6,1/6 -============================ -input: -PAST -output: -MagicaLogia : 終末シーン表(5) > 夜。もはや廃墟と化した埃っぽい都市。〈愚者〉が虚憑に襲われている。このシーンに登場しているPCの一人は、「星」≪静寂≫の判定することができる。成功すれば救出でき、助け出した〈愚者〉に対し、好きな属性で運命を1点獲得する。失敗すると【魔力】を3点失う。 -rand:2/6,3/6,1/6,4/6,3/6 -============================ -input: -PAST -output: -MagicaLogia : 終末シーン表(11) > 昼。崩壊した農村のかたわらで、美味しそうな果実を発見する。≪大地≫の判定に成功すると【魔力】が2点回復する。 -rand:6/6,5/6 -============================ -input: -GBST -output: -MagicaLogia : 異世界酒場シーン表(2) > マスターの雷神に絡まれる。このシーンに登場しているPCのうち一人は、雷神相手に「事件表」を振る。 -rand:1/6,1/6 -============================ -input: -GBST -output: -MagicaLogia : 異世界酒場シーン表(7) > 客の一人に、無理矢理酒を飲まされる。なんて強い酒だろう。「星」≪静寂≫で判定を行う。失敗すると、「運命変転」が発生する。 -rand:2/6,5/6,1/6,4/6,3/6 -============================ -input: -GBST -output: -MagicaLogia : 異世界酒場シーン表(12) > 美しい女神が、鏡をのぞき込んでいる。どうやら、運命が映る鏡だと言うのだが。このシーンに登場しているPCのうち一人は、≪未来≫で判定を行っても良い。成功すると好きなアンカーとの【運命】が1点上昇する。成否にかかわらず、この効果は一度だけ発生する。 -rand:6/6,6/6 -============================ -input: -SLST -output: -MagicaLogia : ほしかげシーン表(2) > あなたの持つ「切符」は無効であると車掌に告げられる。他の乗客の視線を感じる。このシーンに登場しているPCのうち一人は、もう一度「切符」を調達しなければならない。魂の特技の判定を、成功するまで繰り返すこと。 -rand:1/6,1/6 -============================ -input: -SLST -output: -MagicaLogia : ほしかげシーン表(10) > 「この席、よろしいかな?」あなたの隣に〈書籍卿〉が座る。「獣」≪牙≫の判定に成功すると公開されているハンドアウトの中から、好きなものを選び、その【秘密】を公開することができる。誰かが判定すると、成否にかかわらず、この効果はなくなる。 -rand:5/6,5/6,2/6,5/6,3/6 -============================ -input: -SLST -output: -MagicaLogia : ほしかげシーン表(12) > 隣の車輛から誰かが移ってきた。なんと、あなたのアンカーである。このシーンに登場しているPCをランダムに一人選び、そのPCのアンカーの中から、この異境に存在しない〈愚者〉のアンカーをランダムで一人選ぶこと。そのアンカーが、元の世界へ無事戻ることができたら、ゲーム終了時に功績点を1点獲得する。 -rand:6/6,6/6 -============================ -input: -WLAT -output: -MagicaLogia : 世界法則追加表(2) > 世界法則「夜祭」。星の明かりや提灯を頼りに、終わらないお祭りが続いている。このシーンに登場しているキャラクターは、「刻印百景」の特技で判定に成功すると、【手当】の俗呪を使用したとき、消費した魔素1点につき、【魔力】を2点回復できるようになる。 -rand:2/6 -============================ -input: -WLAT -output: -MagicaLogia : 世界法則追加表(5) > この「停車駅」の周辺は死んだ〈愚者〉たちの終着点でもある。もしここで降りる〈愚者〉がいれば、その人物は死んでいたことになる。このシーンに登場しているキャラクターがその〈愚者〉をアンカーとしている場合、「刻印百景」の特技で判定に成功すると、「疵」になることなく運命欄から消去できる。 -rand:5/6 -============================ - -input: -WMT -output: -MagicaLogia : さまよう怪物表(1) > トロールに率いられたオークとゴブリンの大軍団に遭遇する。数百という怪物たちが野蛮な叫び声をあげながら、魔法使いたちに襲い掛かってくる。≪静寂≫の判定を行う。全員の判定が終わったら、失敗したPCは1d6点のダメージを受ける。このとき、判定に成功したPCの数だけそのダメージの値を軽減できる。 -rand:1/6,3/6,4/6 -============================ -input: -WMT -output: -MagicaLogia : さまよう怪物表(4) > 白銀の鎧に身を包んだ騎士が現れる。騎士は一対一の勝負を挑んできた。シーンに登場しているPCの中から代表を1人選ぶ。代表は≪恋≫の判定を行う。失敗すると代表は5点のダメージを受ける。 -rand:4/6,5/6,4/6 -============================ - -input: -FFT -output: -MagicaLogia : 落花表(2) > 精神が壊れる。その唇から、〈永遠〉が抱く夢や願望だけが小さく小さく、壊れた楽器のように吐き出され、季節が変わる頃に、死ぬ。〈永遠〉をアンカーにしているものは、それが疵になる。 -rand:2/6 -============================ - -input: -FFT -output: -MagicaLogia : 落花表(3) > その生命力が暴走し、死と再生が繰り返される。助けてくれと懇願する声すら出せない。1d6ヶ月後、死ぬ。〈永遠〉をアンカーにしているものは、それが疵になる。 -rand:3/6 -============================ - -input: -OLST -output: -MagicaLogia : 旧図書館シーン表(2) > 曲がり角。唐突に〈禁書〉が現れ、襲いかかってきた!このシーンに登場するPCは、「星」≪黄金≫で判定を行う。失敗すると、【魔力】を3点失う。 -rand:1/6,1/6,1/6,1/6,1/6 -============================ -input: -OLST -output: -MagicaLogia : 旧図書館シーン表(7) > 破壊された魔導書が、山のように積み重なる場所。本の山に隠れていた〈断章〉が襲い掛かってくる。このシーンに登場するPCは、「力」≪自由≫で判定を行う。成功すると、〈断章〉を倒し、好きな魔素を一個手に入れる。失敗すると、時空を超えてアンカーに影響が現れる。「運命変転」が発生する。 -rand:2/6,5/6,3/6,1/6,6/6 -============================ -input: -OLST -output: -MagicaLogia : 旧図書館シーン表(11) > どこからか湧き出した水が、床の上に泉を作っている場所。泉の上に何者かの呼び出した元型が浮かんでいる。「獣」≪叫び≫で判定を行う。成功すると、【一時的魔力】を1点手に入れる。失敗すると、攻撃され、【魔力】が1点減少する。誰かが判定すると、成否にかかわらず、この効果はなくなる。 -rand:5/6,6/6,2/6,4/6,5/6 -============================ -input: -FLT -output: -MagicaLogia : その後表(1,1) > 成就者は、邪悪な魔法の力にひかれるようになる。成就者が、そのセッションで〈断章〉に憑依されていたり、魔法災厄の犠牲になったりしていた場合、【堕落値】が1点上昇し、堕落チェックを行う。堕落チェックに失敗した場合、成就者は命を落とし、そのPCの疵となる。 -rand:1/6,1/6 -============================ -input: -FLT -output: -MagicaLogia : その後表(3,6) > 成就者は、自分の願いを叶えたのがPCだと気付く。成就者の【堕落値】が、そのPCの成就者との【運命】の値と同じ値になる。もし、この効果によって【堕落値】が以前より増えていた場合、堕落チェックを行う。堕落チェックに失敗した場合、成就者は〈愚者〉ではなくなり、魔法使いとなる。 -rand:3/6,6/6 -============================ -input: -FLT -output: -MagicaLogia : その後表(6,3) > 成就者は、叶えて貰った願いを失うことになる。堕落チェックを行う。堕落チェックに成功すると、【堕落値】が1点減少する。 -rand:6/6,3/6 - -============================ -input: -TPTB -output: -MagicaLogia : 大判時の流れ表(3) > 瞑想していたのか。それとも何か封印されていたのか。長い眠りから目を覚ます。もうそんな時間か。おかげで十分に休息できた。ランダムに魔素を三個獲得するか、自分が「魔力のリセット」を行うか、自分の受けている変調をすべて回復する。 -rand:3/6 -============================ -input: -TPTB -output: -MagicaLogia : 大判時の流れ表(1) > 波乱万丈の人生を送る。この時代に起きた有名な事件の背後では、多くの魔法的存在が暗躍していた。あなたも、その事件に関わり、〈禁書〉や〈書籍卿〉たちと戦いを繰り広げる。「獣」≪叫び≫の判定を行う。成功するとセッション終了時に追加で功績点を1点獲得する。失敗すると、自分に「運命変転」が発生する。 -rand:1/6,2/6,4/6,5/6 -============================ -input: -TPTB -output: -MagicaLogia : 大判時の流れ表(2) > 冒険の日々の途中、大きな幸せがおとずれる。「闇」≪死≫の判定を行う。成功すると、自分のアンカーが負っている不幸か、自分が負っている疵一つを無効化する。 -rand:2/6,6/6,6/6,6/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -MagicaLogia : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/MeikyuDays.txt b/src/src_bcdice/test/data/MeikyuDays.txt deleted file mode 100644 index df12041ae..000000000 --- a/src/src_bcdice/test/data/MeikyuDays.txt +++ /dev/null @@ -1,1505 +0,0 @@ -input: -2d6>=4 -output: -MeikyuDays : (2D6>=4) > 7[2,5] > 7 > 成功 -rand:5/6,2/6 -============================ -input: -2d6>=4 -output: -MeikyuDays : (2D6>=4) > 2[1,1] > 2 > 絶対失敗 -rand:1/6,1/6 -============================ -input: -2d6>=4 -output: -MeikyuDays : (2D6>=4) > 9[3,6] > 9 > 成功 -rand:3/6,6/6 -============================ -input: -2d6>=4 -output: -MeikyuDays : (2D6>=4) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2d6>=4 -output: -MeikyuDays : (2D6>=4) > 6[1,5] > 6 > 成功 -rand:1/6,5/6 -============================ -input: -2d6>=4 -output: -MeikyuDays : (2D6>=4) > 7[2,5] > 7 > 成功 -rand:2/6,5/6 -============================ -input: -2d6>=4 -output: -MeikyuDays : (2D6>=4) > 12[6,6] > 12 > 絶対成功 -rand:6/6,6/6 -============================ -input: -2d6>=4 -output: -MeikyuDays : (2D6>=4) > 4[1,3] > 4 > 成功 -rand:3/6,1/6 -============================ -input: -2d6>=4 -output: -MeikyuDays : (2D6>=4) > 9[4,5] > 9 > 成功 -rand:5/6,4/6 -============================ -input: -2d6>=4 -output: -MeikyuDays : (2D6>=4) > 5[1,4] > 5 > 成功 -rand:1/6,4/6 -============================ -input: -2d6>=9 -output: -MeikyuDays : (2D6>=9) > 9[4,5] > 9 > 成功 -rand:4/6,5/6 -============================ -input: -2d6>=9 -output: -MeikyuDays : (2D6>=9) > 8[3,5] > 8 > 失敗 -rand:5/6,3/6 -============================ -input: -2d6>=9 -output: -MeikyuDays : (2D6>=9) > 3[1,2] > 3 > 失敗 -rand:2/6,1/6 -============================ -input: -2d6>=9 -output: -MeikyuDays : (2D6>=9) > 5[2,3] > 5 > 失敗 -rand:3/6,2/6 -============================ -input: -2d6>=9 -output: -MeikyuDays : (2D6>=9) > 8[3,5] > 8 > 失敗 -rand:3/6,5/6 -============================ -input: -2d6>=9 -output: -MeikyuDays : (2D6>=9) > 6[3,3] > 6 > 失敗 -rand:3/6,3/6 -============================ -input: -2d6>=9 -output: -MeikyuDays : (2D6>=9) > 4[1,3] > 4 > 失敗 -rand:3/6,1/6 -============================ -input: -2d6>=9 -output: -MeikyuDays : (2D6>=9) > 8[2,6] > 8 > 失敗 -rand:6/6,2/6 -============================ -input: -2d6>=9 -output: -MeikyuDays : (2D6>=9) > 9[4,5] > 9 > 成功 -rand:4/6,5/6 -============================ -input: -2d6>=9 -output: -MeikyuDays : (2D6>=9) > 8[2,6] > 8 > 失敗 -rand:2/6,6/6 -============================ -input: -2d6>=7 -output: -MeikyuDays : (2D6>=7) > 12[6,6] > 12 > 絶対成功 -rand:6/6,6/6 -============================ -input: -2d6>=7 -output: -MeikyuDays : (2D6>=7) > 6[1,5] > 6 > 失敗 -rand:5/6,1/6 -============================ -input: -2d6>=7 -output: -MeikyuDays : (2D6>=7) > 8[3,5] > 8 > 成功 -rand:5/6,3/6 -============================ -input: -2d6>=7 -output: -MeikyuDays : (2D6>=7) > 6[1,5] > 6 > 失敗 -rand:5/6,1/6 -============================ -input: -2d6>=7 -output: -MeikyuDays : (2D6>=7) > 7[1,6] > 7 > 成功 -rand:6/6,1/6 -============================ -input: -2d6>=7 -output: -MeikyuDays : (2D6>=7) > 9[3,6] > 9 > 成功 -rand:3/6,6/6 -============================ -input: -2d6>=7 -output: -MeikyuDays : (2D6>=7) > 2[1,1] > 2 > 絶対失敗 -rand:1/6,1/6 -============================ -input: -2d6>=7 -output: -MeikyuDays : (2D6>=7) > 5[2,3] > 5 > 失敗 -rand:2/6,3/6 -============================ -input: -2d6>=7 -output: -MeikyuDays : (2D6>=7) > 9[3,6] > 9 > 成功 -rand:3/6,6/6 -============================ -input: -2d6>=7 -output: -MeikyuDays : (2D6>=7) > 4[1,3] > 4 > 失敗 -rand:1/6,3/6 -============================ -input: -1MD -output: -MeikyuDays : (1R6) > 6 -rand:3/6 -============================ -input: -1MD -output: -MeikyuDays : (1R6) > 10 -rand:5/6 -============================ -input: -1MD -output: -MeikyuDays : (1R6) > 6 -rand:3/6 -============================ -input: -1MD -output: -MeikyuDays : (1R6) > 12 -rand:6/6 -============================ -input: -1MD -output: -MeikyuDays : (1R6) > 10 -rand:5/6 -============================ -input: -1MD -output: -MeikyuDays : (1R6) > 10 -rand:5/6 -============================ -input: -1MD -output: -MeikyuDays : (1R6) > 10 -rand:5/6 -============================ -input: -1MD -output: -MeikyuDays : (1R6) > 12 -rand:6/6 -============================ -input: -1MD -output: -MeikyuDays : (1R6) > 4 -rand:2/6 -============================ -input: -1MD -output: -MeikyuDays : (1R6) > 8 -rand:4/6 -============================ -input: -1MD+1 -output: -MeikyuDays : (1R6+1) > 6[3]+1 > 7 -rand:3/6 -============================ -input: -1MD+1 -output: -MeikyuDays : (1R6+1) > 10[5]+1 > 11 -rand:5/6 -============================ -input: -1MD+1 -output: -MeikyuDays : (1R6+1) > 4[2]+1 > 5 -rand:2/6 -============================ -input: -1MD+1 -output: -MeikyuDays : (1R6+1) > 4[2]+1 > 5 -rand:2/6 -============================ -input: -1MD+1 -output: -MeikyuDays : (1R6+1) > 12[6]+1 > 13 -rand:6/6 -============================ -input: -1MD+1 -output: -MeikyuDays : (1R6+1) > 2[1]+1 > 3 -rand:1/6 -============================ -input: -1MD+1 -output: -MeikyuDays : (1R6+1) > 4[2]+1 > 5 -rand:2/6 -============================ -input: -1MD+1 -output: -MeikyuDays : (1R6+1) > 10[5]+1 > 11 -rand:5/6 -============================ -input: -1MD+1 -output: -MeikyuDays : (1R6+1) > 4[2]+1 > 5 -rand:2/6 -============================ -input: -1MD+1 -output: -MeikyuDays : (1R6+1) > 12[6]+1 > 13 -rand:6/6 -============================ -input: -4MD+1 -output: -MeikyuDays : (4R6+1) > 8[3,4,4,4]+1 > 9 -rand:4/6,4/6,4/6,3/6 -============================ -input: -4MD+1 -output: -MeikyuDays : (4R6+1) > 6[1,2,2,4]+1 > 7 -rand:2/6,4/6,2/6,1/6 -============================ -input: -4MD+1 -output: -MeikyuDays : (4R6+1) > 11[2,4,5,6]+1 > 12 -rand:6/6,4/6,2/6,5/6 -============================ -input: -4MD+1 -output: -MeikyuDays : (4R6+1) > 10[2,3,4,6]+1 > 11 -rand:6/6,2/6,4/6,3/6 -============================ -input: -4MD+1 -output: -MeikyuDays : (4R6+1) > 6[1,1,2,4]+1 > 7 -rand:2/6,4/6,1/6,1/6 -============================ -input: -4MD+1 -output: -MeikyuDays : (4R6+1) > 11[1,2,5,6]+1 > 12 -rand:2/6,1/6,6/6,5/6 -============================ -input: -4MD+1 -output: -MeikyuDays : (4R6+1) > 9[1,4,4,5]+1 > 10 -rand:5/6,1/6,4/6,4/6 -============================ -input: -4MD+1 -output: -MeikyuDays : (4R6+1) > 9[1,2,4,5]+1 > 10 -rand:4/6,5/6,1/6,2/6 -============================ -input: -4MD+1 -output: -MeikyuDays : (4R6+1) > 5[1,1,2,3]+1 > 6 -rand:1/6,1/6,2/6,3/6 -============================ -input: -4MD+1 -output: -MeikyuDays : (4R6+1) > 12[3,4,6,6]+1 > 13 -rand:4/6,6/6,3/6,6/6 -============================ -input: -4MD+1>=8 -output: -MeikyuDays : (4R6+1>=8) > 11[1,1,5,6]+1 > 12 > 成功 -rand:1/6,5/6,1/6,6/6 -============================ -input: -4MD+1>=8 -output: -MeikyuDays : (4R6+1>=8) > 11[4,5,5,6]+1 > 12 > 成功 -rand:5/6,6/6,5/6,4/6 -============================ -input: -4MD+1>=8 -output: -MeikyuDays : (4R6+1>=8) > 7[1,1,2,5]+1 > 8 > 成功 -rand:2/6,5/6,1/6,1/6 -============================ -input: -4MD+1>=8 -output: -MeikyuDays : (4R6+1>=8) > 10[1,2,5,5]+1 > 11 > 成功 -rand:5/6,1/6,2/6,5/6 -============================ -input: -4MD+1>=8 -output: -MeikyuDays : (4R6+1>=8) > 11[2,3,5,6]+1 > 12 > 成功 -rand:5/6,3/6,6/6,2/6 -============================ -input: -4MD+1>=8 -output: -MeikyuDays : (4R6+1>=8) > 8[1,2,3,5]+1 > 9 > 成功 -rand:5/6,3/6,1/6,2/6 -============================ -input: -4MD+1>=8 -output: -MeikyuDays : (4R6+1>=8) > 9[1,2,3,6]+1 > 10 > 成功 -rand:3/6,6/6,2/6,1/6 -============================ -input: -4MD+1>=8 -output: -MeikyuDays : (4R6+1>=8) > 10[4,5,5,5]+1 > 11 > 成功 -rand:5/6,5/6,5/6,4/6 -============================ -input: -4MD+1>=8 -output: -MeikyuDays : (4R6+1>=8) > 9[1,2,4,5]+1 > 10 > 成功 -rand:5/6,2/6,1/6,4/6 -============================ -input: -4MD+1>=8 -output: -MeikyuDays : (4R6+1>=8) > 10[2,3,4,6]+1 > 11 > 成功 -rand:2/6,6/6,3/6,4/6 -============================ -input: -DRT -output: -MeikyuDays : 散策表(7) > 近所からおすそ分けをもらう。【回復薬】を6個手に入れる。 -rand:1/6,6/6 -============================ -input: -DRT -output: -MeikyuDays : 散策表(6) > メディアの取材を受ける。《民の声》を2点得る。 -rand:5/6,1/6 -============================ -input: -DRT -output: -MeikyuDays : 散策表(7) > 近所からおすそ分けをもらう。【回復薬】を6個手に入れる。 -rand:5/6,2/6 -============================ -input: -DRT -output: -MeikyuDays : 散策表(11) > 他の迷宮屋と喧嘩になる。パーティの中からランダムに1人を選び、お互いの《敵意》を1点上昇させる。 -rand:5/6,6/6 -============================ -input: -DRT -output: -MeikyuDays : 散策表(7) > 近所からおすそ分けをもらう。【回復薬】を6個手に入れる。 -rand:4/6,3/6 -============================ -input: -DRT -output: -MeikyuDays : 散策表(6) > メディアの取材を受ける。《民の声》を2点得る。 -rand:3/6,3/6 -============================ -input: -DRT -output: -MeikyuDays : 散策表(4) > 他の迷宮屋の評判を耳にする。パーティから好きなキャラクター1人を選び、そのキャラクターに対する《好意》が1点上昇する。 -rand:1/6,3/6 -============================ -input: -DRT -output: -MeikyuDays : 散策表(11) > 他の迷宮屋と喧嘩になる。パーティの中からランダムに1人を選び、お互いの《敵意》を1点上昇させる。 -rand:6/6,5/6 -============================ -input: -DRT -output: -MeikyuDays : 散策表(9) > 似たような迷宮に挑んだことがある迷宮屋から話を聞いた。迷宮フェイズでの情報収集の難易度が2下がる。 -rand:6/6,3/6 -============================ -input: -DRT -output: -MeikyuDays : 散策表(10) > 武具の安売りを見つける。ランダムな武具アイテム1つを半分の値段で購入することができる。 -rand:6/6,4/6 -============================ -input: -DNT -output: -MeikyuDays : 交渉表(12) > 運命の出会い。一目見た瞬間に打ち解けあい、友好的になる。 -rand:6/6,6/6 -============================ -input: -DNT -output: -MeikyuDays : 交渉表(9) > 「何かいいもんよこせ」モンスターの中で最もレベルの高いもののレベル以上の価格のアイテムを消費すれば友好的になる。そうでない場合、戦闘を開始すること。 -rand:5/6,4/6 -============================ -input: -DNT -output: -MeikyuDays : 交渉表(9) > 「何かいいもんよこせ」モンスターの中で最もレベルの高いもののレベル以上の価格のアイテムを消費すれば友好的になる。そうでない場合、戦闘を開始すること。 -rand:4/6,5/6 -============================ -input: -DNT -output: -MeikyuDays : 交渉表(10) > 「面白い話を聞かせろよ」プレイヤーたちは面白い話をすること。GMは面白いと思えばモンスターは友好的になる。面白くなかった場合は戦闘を開始する。 -rand:5/6,5/6 -============================ -input: -DNT -output: -MeikyuDays : 交渉表(8) > 怪物たちは値踏みするようにこちらを見ている。現金で1d6MC支払えば友好的になる。そうでない場合、戦闘を開始すること。 -rand:3/6,5/6 -============================ -input: -DNT -output: -MeikyuDays : 交渉表(9) > 「何かいいもんよこせ」モンスターの中で最もレベルの高いもののレベル以上の価格のアイテムを消費すれば友好的になる。そうでない場合、戦闘を開始すること。 -rand:5/6,4/6 -============================ -input: -DNT -output: -MeikyuDays : 交渉表(4) > 交渉は決裂! 戦闘を行うこと。 -rand:2/6,2/6 -============================ -input: -DNT -output: -MeikyuDays : 交渉表(7) > 怪物たちは物欲しそうにこちらを見ている。「肉」の素材をモンスターの数だけ消費するか、【お弁当】【フルコース】1個を消費すれば友好的になる。消費しなければ、戦闘を開始すること。 -rand:2/6,5/6 -============================ -input: -DNT -output: -MeikyuDays : 交渉表(3) > 交渉は決裂! 戦闘を行うこと。 -rand:1/6,2/6 -============================ -input: -DNT -output: -MeikyuDays : 交渉表(10) > 「面白い話を聞かせろよ」プレイヤーたちは面白い話をすること。GMは面白いと思えばモンスターは友好的になる。面白くなかった場合は戦闘を開始する。 -rand:5/6,5/6 -============================ -input: -DBT -output: -MeikyuDays : 休憩表(9) > チームワークの確認。各プレイヤーは打ち合わせをせずに、一斉にじゃんけんを行う。いちばん出した人が多かった手を出したプレイヤーのPCは、《気力》を2点得る。 -rand:5/6,4/6 -============================ -input: -DBT -output: -MeikyuDays : 休憩表(6) > 窓の外から報道のヘリコプターがこちらを撮影しているのが見える。格好よく見せるために、各キャラクターは〔魅力〕で難易度13の判定を行う。誰かが成功するたびに《民の声》が1点増加する。 -rand:4/6,2/6 -============================ -input: -DBT -output: -MeikyuDays : 休憩表(8) > 通路の片隅で素材が山を作っているのを見つけた。各キャラクターは〔探索〕で難易度11の判定を行う。誰かが成功するたびに、好きな素材を1種類選び、それを1d6個手に入れる。 -rand:3/6,5/6 -============================ -input: -DBT -output: -MeikyuDays : 休憩表(4) > 好きな単語表からランダムに単語を1つ選ぶ。その部屋にはそれに関係したものがたくさん置いてあるため、出た単語が「好きなもの」に入っているキャラクターは、《気力》を2点得る。 -rand:1/6,3/6 -============================ -input: -DBT -output: -MeikyuDays : 休憩表(7) > 雑談や休息など、思い思いに時間を過ごす。各キャラクターは、好きなキャラクター1体への《好意》を1点上昇させる。 -rand:3/6,4/6 -============================ -input: -DBT -output: -MeikyuDays : 休憩表(7) > 雑談や休息など、思い思いに時間を過ごす。各キャラクターは、好きなキャラクター1体への《好意》を1点上昇させる。 -rand:4/6,3/6 -============================ -input: -DBT -output: -MeikyuDays : 休憩表(12) > 各キャラクターは1d6を振る。出た目の上位2名が唐突に恋に落ちる。同じ目が出て2名をうまく割り出せない場合は、GMの左隣に近い方を優先する。恋に落ちた2人、相手以外に対する《好意》を合計し、その値に対する《好意》に加える。その後、相手以外に対する《好意》をすべて0にする。 -rand:6/6,6/6 -============================ -input: -DBT -output: -MeikyuDays : 休憩表(8) > 通路の片隅で素材が山を作っているのを見つけた。各キャラクターは〔探索〕で難易度11の判定を行う。誰かが成功するたびに、好きな素材を1種類選び、それを1d6個手に入れる。 -rand:6/6,2/6 -============================ -input: -DBT -output: -MeikyuDays : 休憩表(8) > 通路の片隅で素材が山を作っているのを見つけた。各キャラクターは〔探索〕で難易度11の判定を行う。誰かが成功するたびに、好きな素材を1種類選び、それを1d6個手に入れる。 -rand:3/6,5/6 -============================ -input: -DBT -output: -MeikyuDays : 休憩表(9) > チームワークの確認。各プレイヤーは打ち合わせをせずに、一斉にじゃんけんを行う。いちばん出した人が多かった手を出したプレイヤーのPCは、《気力》を2点得る。 -rand:4/6,5/6 -============================ -input: -DHT -output: -MeikyuDays : ハプニング表(7) > 事故だか故意だかで、仲間を殴ってしまう。ランダムに選んだパーティメンバー1名の《HP》を自分の〔武勇〕と同じ値だけ減少させる。 -rand:5/6,2/6 -============================ -input: -DHT -output: -MeikyuDays : ハプニング表(7) > 事故だか故意だかで、仲間を殴ってしまう。ランダムに選んだパーティメンバー1名の《HP》を自分の〔武勇〕と同じ値だけ減少させる。 -rand:1/6,6/6 -============================ -input: -DHT -output: -MeikyuDays : ハプニング表(5) > 無残な失敗に愛想を尽かした配下が2d6人ほど去って行ってしまう。 -rand:2/6,3/6 -============================ -input: -DHT -output: -MeikyuDays : ハプニング表(8) > 期待が大きければ失望も大きい。あなたに対して《好意》を持っているキャラクター全員は、あなたに対する《好意》を1点減らす。 -rand:5/6,3/6 -============================ -input: -DHT -output: -MeikyuDays : ハプニング表(4) > 気がついたら太っていた。「肥満」のバッドステータスを受ける。 -rand:1/6,3/6 -============================ -input: -DHT -output: -MeikyuDays : ハプニング表(8) > 期待が大きければ失望も大きい。あなたに対して《好意》を持っているキャラクター全員は、あなたに対する《好意》を1点減らす。 -rand:3/6,5/6 -============================ -input: -DHT -output: -MeikyuDays : ハプニング表(12) > 自分の失敗が許せない。このゲームの間、《器》が1点減少したものとして扱う。 -rand:6/6,6/6 -============================ -input: -DHT -output: -MeikyuDays : ハプニング表(5) > 無残な失敗に愛想を尽かした配下が2d6人ほど去って行ってしまう。 -rand:2/6,3/6 -============================ -input: -DHT -output: -MeikyuDays : ハプニング表(8) > 期待が大きければ失望も大きい。あなたに対して《好意》を持っているキャラクター全員は、あなたに対する《好意》を1点減らす。 -rand:3/6,5/6 -============================ -input: -DHT -output: -MeikyuDays : ハプニング表(5) > 無残な失敗に愛想を尽かした配下が2d6人ほど去って行ってしまう。 -rand:4/6,1/6 -============================ -input: -KST -output: -MeikyuDays : カーネル停止表(7) > 激しい迷宮化に曝され、1d6点のダメージを受ける。〔探索〕で難易度11の判定を行う。成功すれば、怪我を負いながらもカーネルを停止させることに成功する。 -rand:5/6,2/6 -============================ -input: -KST -output: -MeikyuDays : カーネル停止表(6) > 心象が迷宮化していく。〔魅力〕で難易度9の判定を行う。失敗すると人間関係が迷宮化を起こし、持っている感情値がすべて1点減少する。カーネルは停止しない。 -rand:1/6,5/6 -============================ -input: -KST -output: -MeikyuDays : カーネル停止表(4) > 迷宮化エネルギーが装備を直撃。素早く避けるため〔武勇〕で難易度9の判定を行う。失敗した場合、持っているアイテムからランダムに1つを選ぶ。そのアイテムは激しい迷宮化を起こし破壊される。カーネルは停止しない。 -rand:3/6,1/6 -============================ -input: -KST -output: -MeikyuDays : カーネル停止表(4) > 迷宮化エネルギーが装備を直撃。素早く避けるため〔武勇〕で難易度9の判定を行う。失敗した場合、持っているアイテムからランダムに1つを選ぶ。そのアイテムは激しい迷宮化を起こし破壊される。カーネルは停止しない。 -rand:2/6,2/6 -============================ -input: -KST -output: -MeikyuDays : カーネル停止表(11) > カーネルは停止した。そして持っているアイテムの中からランダムに1つを選ぶ。そのアイテムにレベルがあれば、いつのまにかレベルが1上昇している。 -rand:6/6,5/6 -============================ -input: -KST -output: -MeikyuDays : カーネル停止表(7) > 激しい迷宮化に曝され、1d6点のダメージを受ける。〔探索〕で難易度11の判定を行う。成功すれば、怪我を負いながらもカーネルを停止させることに成功する。 -rand:4/6,3/6 -============================ -input: -KST -output: -MeikyuDays : カーネル停止表(6) > 心象が迷宮化していく。〔魅力〕で難易度9の判定を行う。失敗すると人間関係が迷宮化を起こし、持っている感情値がすべて1点減少する。カーネルは停止しない。 -rand:1/6,5/6 -============================ -input: -KST -output: -MeikyuDays : カーネル停止表(6) > 心象が迷宮化していく。〔魅力〕で難易度9の判定を行う。失敗すると人間関係が迷宮化を起こし、持っている感情値がすべて1点減少する。カーネルは停止しない。 -rand:5/6,1/6 -============================ -input: -KST -output: -MeikyuDays : カーネル停止表(6) > 心象が迷宮化していく。〔魅力〕で難易度9の判定を行う。失敗すると人間関係が迷宮化を起こし、持っている感情値がすべて1点減少する。カーネルは停止しない。 -rand:5/6,1/6 -============================ -input: -KST -output: -MeikyuDays : カーネル停止表(3) > 〔才覚〕で難易度9の判定を行う。失敗すると記憶が迷宮化を起こし、銀行口座の暗証番号を忘れてしまう。口座に入っているMCはすべて失われる。カーネルは停止しない。 -rand:1/6,2/6 -============================ -input: -CAT -output: -MeikyuDays : 痛打表(8) > 敵の動きを封じた。攻撃目標の《回避値》を戦闘終了まで2下げる。この効果は累積する。 -rand:5/6,3/6 -============================ -input: -CAT -output: -MeikyuDays : 痛打表(4) > 攻撃が終わった後、攻撃の勢いを利用して、自分を好きなエリアに移動させることができる。 -rand:1/6,3/6 -============================ -input: -CAT -output: -MeikyuDays : 痛打表(3) > 偶然ながら敵の弱点をつく。敵の《HP》を現在の半分の値にする。 -rand:2/6,1/6 -============================ -input: -CAT -output: -MeikyuDays : 痛打表(8) > 敵の動きを封じた。攻撃目標の《回避値》を戦闘終了まで2下げる。この効果は累積する。 -rand:6/6,2/6 -============================ -input: -CAT -output: -MeikyuDays : 痛打表(7) > クリーンヒット。攻撃の威力が2d6点上昇する。 -rand:1/6,6/6 -============================ -input: -CAT -output: -MeikyuDays : 痛打表(8) > 敵の動きを封じた。攻撃目標の《回避値》を戦闘終了まで2下げる。この効果は累積する。 -rand:3/6,5/6 -============================ -input: -CAT -output: -MeikyuDays : 痛打表(8) > 敵の動きを封じた。攻撃目標の《回避値》を戦闘終了まで2下げる。この効果は累積する。 -rand:4/6,4/6 -============================ -input: -CAT -output: -MeikyuDays : 痛打表(7) > クリーンヒット。攻撃の威力が2d6点上昇する。 -rand:4/6,3/6 -============================ -input: -CAT -output: -MeikyuDays : 痛打表(11) > 敵の急所をとらえ致命傷を与える。攻撃目標の《HP》を0にする。 -rand:5/6,6/6 -============================ -input: -CAT -output: -MeikyuDays : 痛打表(7) > クリーンヒット。攻撃の威力が2d6点上昇する。 -rand:5/6,2/6 -============================ -input: -CFT -output: -MeikyuDays : 戦闘ファンブル表(8) > 仲間に攻撃が命中! 使用した武器の射程内の味方から、ランダムに1人を選ぶ。そのキャラクターに武器のダメージを与える。 -rand:6/6,2/6 -============================ -input: -CFT -output: -MeikyuDays : 戦闘ファンブル表(7) > なんというか、やる気をなくす。《気力》を1点失う。モンスターの場合、1d6ダメージを受ける。 -rand:4/6,3/6 -============================ -input: -CFT -output: -MeikyuDays : 戦闘ファンブル表(12) > ピンチがチャンスに! 《HP》が現在値の半分になり、《気力》が最大値まで貯まる。 -rand:6/6,6/6 -============================ -input: -CFT -output: -MeikyuDays : 戦闘ファンブル表(11) > 位置取りに失敗してとんでもない場所に。敵陣営プレイヤーまたはGMが、ファンブルしたキャラクターを好きな位置に移す。 -rand:6/6,5/6 -============================ -input: -CFT -output: -MeikyuDays : 戦闘ファンブル表(12) > ピンチがチャンスに! 《HP》が現在値の半分になり、《気力》が最大値まで貯まる。 -rand:6/6,6/6 -============================ -input: -CFT -output: -MeikyuDays : 戦闘ファンブル表(6) > 自分に攻撃が命中! 使用した武器のダメージを自分に与える。 -rand:1/6,5/6 -============================ -input: -CFT -output: -MeikyuDays : 戦闘ファンブル表(4) > アイテムが壊れた! 自分が持っているアイテムの中からランダムに1つを選び、そのアイテムが失われる。モンスターの場合、1d6ダメージを受ける。 -rand:2/6,2/6 -============================ -input: -CFT -output: -MeikyuDays : 戦闘ファンブル表(9) > 仲間の邪魔をしてしまう。未行動の自軍キャラクター1体を選び、行動済みにする。 -rand:5/6,4/6 -============================ -input: -CFT -output: -MeikyuDays : 戦闘ファンブル表(9) > 仲間の邪魔をしてしまう。未行動の自軍キャラクター1体を選び、行動済みにする。 -rand:5/6,4/6 -============================ -input: -CFT -output: -MeikyuDays : 戦闘ファンブル表(10) > スキルを忘れてしまった! 習得しているスキルからランダムに1種類を選ぶ。そのスキルは戦闘が終了するまで使用できない。 -rand:6/6,4/6 -============================ -input: -FWT -output: -MeikyuDays : 致命傷表(9) > 最後の一撃を見切ることができるかもしれない。〔才覚〕で難易度[9-現在の《HP》]の判定を行う。成功すると《HP》が1になる。失敗すると行動不能になる。 -rand:4/6,5/6 -============================ -input: -FWT -output: -MeikyuDays : 致命傷表(10) > まだここで死ぬ運命ではないのかもしれない。〔魅力〕で難易度[9-現在の《HP》]の判定を行う。成功すると《HP》が1になる。失敗すると行動不能になる。 -rand:4/6,6/6 -============================ -input: -FWT -output: -MeikyuDays : 致命傷表(7) > 攻撃で負った傷により意識を失う。行動不能になる。 -rand:5/6,2/6 -============================ -input: -FWT -output: -MeikyuDays : 致命傷表(8) > 緊急回避! 〔探索〕で難易度[7-現在の《HP》]の判定を行う。成功すると、ランダムなバッドステータス1つを受けたうえで攻撃が無効になる。失敗すると、ランダムなバッドステータス1つを受けたうえで行動不能になる。 -rand:2/6,6/6 -============================ -input: -FWT -output: -MeikyuDays : 致命傷表(10) > まだここで死ぬ運命ではないのかもしれない。〔魅力〕で難易度[9-現在の《HP》]の判定を行う。成功すると《HP》が1になる。失敗すると行動不能になる。 -rand:6/6,4/6 -============================ -input: -FWT -output: -MeikyuDays : 致命傷表(3) > 傍目にも分かる致命傷。キャラクターは次の自分の行動処理が終わった時点で死亡する。《HP》の回復でこの死亡を防ぐことはできない。 -rand:1/6,2/6 -============================ -input: -FWT -output: -MeikyuDays : 致命傷表(4) > 全身に強い衝撃をうける。〔武勇〕で難易度[5+受けたダメージ]の判定に成功すると、行動不能になる。判定に失敗すると死亡する。 -rand:1/6,3/6 -============================ -input: -FWT -output: -MeikyuDays : 致命傷表(4) > 全身に強い衝撃をうける。〔武勇〕で難易度[5+受けたダメージ]の判定に成功すると、行動不能になる。判定に失敗すると死亡する。 -rand:2/6,2/6 -============================ -input: -FWT -output: -MeikyuDays : 致命傷表(5) > 出血多量で意識不明。行動不能になる。この戦闘が終了するまでに《HP》を1以上にしないと、キャラクターは死亡する。 -rand:4/6,1/6 -============================ -input: -FWT -output: -MeikyuDays : 致命傷表(9) > 最後の一撃を見切ることができるかもしれない。〔才覚〕で難易度[9-現在の《HP》]の判定を行う。成功すると《HP》が1になる。失敗すると行動不能になる。 -rand:4/6,5/6 -============================ -input: -T1T -output: -MeikyuDays : お宝1表(5) > そのモンスターの素材欄の中から、好きな素材を3個。 -rand:5/6 -============================ -input: -T1T -output: -MeikyuDays : お宝1表(4) > そのモンスターの素材欄の中から、好きな素材を2個。 -rand:4/6 -============================ -input: -T1T -output: -MeikyuDays : お宝1表(6) > 【お弁当】1個。 -rand:6/6 -============================ -input: -T1T -output: -MeikyuDays : お宝1表(4) > そのモンスターの素材欄の中から、好きな素材を2個。 -rand:4/6 -============================ -input: -T1T -output: -MeikyuDays : お宝1表(6) > 【お弁当】1個。 -rand:6/6 -============================ -input: -T1T -output: -MeikyuDays : お宝1表(4) > そのモンスターの素材欄の中から、好きな素材を2個。 -rand:4/6 -============================ -input: -T1T -output: -MeikyuDays : お宝1表(3) > そのモンスターの素材欄の中から、好きな素材を1個。 -rand:3/6 -============================ -input: -T1T -output: -MeikyuDays : お宝1表(3) > そのモンスターの素材欄の中から、好きな素材を1個。 -rand:3/6 -============================ -input: -T1T -output: -MeikyuDays : お宝1表(4) > そのモンスターの素材欄の中から、好きな素材を2個。 -rand:4/6 -============================ -input: -T1T -output: -MeikyuDays : お宝1表(6) > 【お弁当】1個。 -rand:6/6 -============================ -input: -T2T -output: -MeikyuDays : お宝2表(6) > ランダムなレアアイテム1個。 -rand:6/6 -============================ -input: -T2T -output: -MeikyuDays : お宝2表(2) > そのモンスターの素材欄の中から、好きな素材を4個。 -rand:2/6 -============================ -input: -T2T -output: -MeikyuDays : お宝2表(3) > そのモンスターの素材欄の中から、好きな素材を5個。 -rand:3/6 -============================ -input: -T2T -output: -MeikyuDays : お宝2表(4) > ランダムな回復アイテム1個。 -rand:4/6 -============================ -input: -T2T -output: -MeikyuDays : お宝2表(2) > そのモンスターの素材欄の中から、好きな素材を4個。 -rand:2/6 -============================ -input: -T2T -output: -MeikyuDays : お宝2表(6) > ランダムなレアアイテム1個。 -rand:6/6 -============================ -input: -T2T -output: -MeikyuDays : お宝2表(2) > そのモンスターの素材欄の中から、好きな素材を4個。 -rand:2/6 -============================ -input: -T2T -output: -MeikyuDays : お宝2表(1) > そのモンスターの素材欄の中から、好きな素材を3個。 -rand:1/6 -============================ -input: -T2T -output: -MeikyuDays : お宝2表(4) > ランダムな回復アイテム1個。 -rand:4/6 -============================ -input: -T2T -output: -MeikyuDays : お宝2表(4) > ランダムな回復アイテム1個。 -rand:4/6 -============================ -input: -T3T -output: -MeikyuDays : お宝3表(3) > そのモンスターの素材欄の中から、好きな素材を10個。 -rand:3/6 -============================ -input: -T3T -output: -MeikyuDays : お宝3表(2) > そのモンスターの素材欄の中から、好きな素材を7個。 -rand:2/6 -============================ -input: -T3T -output: -MeikyuDays : お宝3表(5) > ランダムなレアアイテム1個 -rand:5/6 -============================ -input: -T3T -output: -MeikyuDays : お宝3表(1) > そのモンスターの素材欄の中から、好きな素材を5個。 -rand:1/6 -============================ -input: -T3T -output: -MeikyuDays : お宝3表(3) > そのモンスターの素材欄の中から、好きな素材を10個。 -rand:3/6 -============================ -input: -T3T -output: -MeikyuDays : お宝3表(3) > そのモンスターの素材欄の中から、好きな素材を10個。 -rand:3/6 -============================ -input: -T3T -output: -MeikyuDays : お宝3表(6) > ランダムなレアアイテム1個。そのアイテムにレベルがあれば、レベル1のアイテムとなる。 -rand:6/6 -============================ -input: -T3T -output: -MeikyuDays : お宝3表(5) > ランダムなレアアイテム1個 -rand:5/6 -============================ -input: -T3T -output: -MeikyuDays : お宝3表(2) > そのモンスターの素材欄の中から、好きな素材を7個。 -rand:2/6 -============================ -input: -T3T -output: -MeikyuDays : お宝3表(3) > そのモンスターの素材欄の中から、好きな素材を10個。 -rand:3/6 -============================ -input: -T4T -output: -MeikyuDays : お宝4表(2) > そのモンスターの素材欄の中から、好きな素材を10個。 -rand:2/6 -============================ -input: -T4T -output: -MeikyuDays : お宝4表(6) > ランダムなレアアイテム1個。そのアイテムにレベルがあれば、レベル2のアイテムとなる。 -rand:6/6 -============================ -input: -T4T -output: -MeikyuDays : お宝4表(4) > 好きなコモンアイテムのカテゴリ1種を選ぶ。そのカテゴリの中からランダムなアイテム1個。そのアイテムにレベルがあれば、レベル3のアイテムとなる。 -rand:4/6 -============================ -input: -T4T -output: -MeikyuDays : お宝4表(1) > そのモンスターの素材欄の中から、好きな素材を5個。 -rand:1/6 -============================ -input: -T4T -output: -MeikyuDays : お宝4表(2) > そのモンスターの素材欄の中から、好きな素材を10個。 -rand:2/6 -============================ -input: -T4T -output: -MeikyuDays : お宝4表(3) > 好きなコモンアイテムのカテゴリ1種を選ぶ。そのカテゴリの中からランダムなアイテム1個。そのアイテムにレベルがあれば、レベル2のアイテムとなる。 -rand:3/6 -============================ -input: -T4T -output: -MeikyuDays : お宝4表(4) > 好きなコモンアイテムのカテゴリ1種を選ぶ。そのカテゴリの中からランダムなアイテム1個。そのアイテムにレベルがあれば、レベル3のアイテムとなる。 -rand:4/6 -============================ -input: -T4T -output: -MeikyuDays : お宝4表(6) > ランダムなレアアイテム1個。そのアイテムにレベルがあれば、レベル2のアイテムとなる。 -rand:6/6 -============================ -input: -T4T -output: -MeikyuDays : お宝4表(4) > 好きなコモンアイテムのカテゴリ1種を選ぶ。そのカテゴリの中からランダムなアイテム1個。そのアイテムにレベルがあれば、レベル3のアイテムとなる。 -rand:4/6 -============================ -input: -T4T -output: -MeikyuDays : お宝4表(6) > ランダムなレアアイテム1個。そのアイテムにレベルがあれば、レベル2のアイテムとなる。 -rand:6/6 -============================ -input: -MPT -output: -MeikyuDays : 相場表(9) > 木 -rand:5/6,4/6 -============================ -input: -MPT -output: -MeikyuDays : 相場表(5) > 鉄 -rand:2/6,3/6 -============================ -input: -MPT -output: -MeikyuDays : 相場表(11) > 情報 -rand:6/6,5/6 -============================ -input: -MPT -output: -MeikyuDays : 相場表(2) > なし -rand:1/6,1/6 -============================ -input: -MPT -output: -MeikyuDays : 相場表(8) > 衣料 -rand:5/6,3/6 -============================ -input: -MPT -output: -MeikyuDays : 相場表(6) > 魔素 -rand:5/6,1/6 -============================ -input: -MPT -output: -MeikyuDays : 相場表(7) > 機械 -rand:6/6,1/6 -============================ -input: -MPT -output: -MeikyuDays : 相場表(6) > 魔素 -rand:5/6,1/6 -============================ -input: -MPT -output: -MeikyuDays : 相場表(9) > 木 -rand:5/6,4/6 -============================ -input: -MPT -output: -MeikyuDays : 相場表(10) > 火薬 -rand:6/6,4/6 -============================ -input: -APT -output: -MeikyuDays : 登場表(4) > おっと鉢合わせ! バトルフィールドの敵軍の本陣に、そのキャラクターを配置すること。 -rand:2/6,2/6 -============================ -input: -APT -output: -MeikyuDays : 登場表(6) > あいつらはこの先に行ったはず! GMはそのキャラクターをバトルフィールドの好きなエリアに配置する。 -rand:3/6,3/6 -============================ -input: -APT -output: -MeikyuDays : 登場表(4) > おっと鉢合わせ! バトルフィールドの敵軍の本陣に、そのキャラクターを配置すること。 -rand:2/6,2/6 -============================ -input: -APT -output: -MeikyuDays : 登場表(7) > あの聞き覚えのある音は……! そのキャラクターが【乗騎】を装備していれば、GMはそのキャラクターをバトルフィールドの好きなエリアに配置する。 -rand:5/6,2/6 -============================ -input: -APT -output: -MeikyuDays : 登場表(12) > ……いや、しかしそれどころではない! そのキャラクターは、この戦闘に登場することはできない。 -rand:6/6,6/6 -============================ -input: -APT -output: -MeikyuDays : 登場表(7) > あの聞き覚えのある音は……! そのキャラクターが【乗騎】を装備していれば、GMはそのキャラクターをバトルフィールドの好きなエリアに配置する。 -rand:5/6,2/6 -============================ -input: -APT -output: -MeikyuDays : 登場表(8) > ……間に合ったみたいだな。バトルフィールドの中に、そのキャラクターに対する《好意》が1点以上あるキャラクターがいれば、同じエリアにそのキャラクターを配置することができる。 -rand:3/6,5/6 -============================ -input: -APT -output: -MeikyuDays : 登場表(2) > 「ここから先に行かせるわけにはいかん」急ぐ途中に敵が立ちふさがる。〔武勇〕で難易度11の判定を行う。成功すればバトルフィールドの好きなエリアにそのキャラクターを配置することができる。失敗した場合、《HP》を1にした状態でバトルフィールドの好きなエリアにそのキャラクターを配置することができる。 -rand:1/6,1/6 -============================ -input: -APT -output: -MeikyuDays : 登場表(4) > おっと鉢合わせ! バトルフィールドの敵軍の本陣に、そのキャラクターを配置すること。 -rand:3/6,1/6 -============================ -input: -APT -output: -MeikyuDays : 登場表(3) > 「待たせたな!」バトルフィールドの好きなエリアにそのキャラクターを配置することができる。 -rand:1/6,2/6 -============================ -input: -DCT -output: -MeikyuDays : 因縁表(4) > 対象は、過去にあなたと戦い、あなたの体に古傷を残している。今でもときどき傷は代償を求めて疼く。対象への《敵意》が1点上昇する。 -rand:3/6,1/6 -============================ -input: -DCT -output: -MeikyuDays : 因縁表(5) > あなたは対象に憧れているが、全く相手にされていない。たとえ敵としてでも対象に認めてもらうことがあなたの願いだ。彼または彼女への《敵意》が1点上昇し、「ライバル」の人間関係を結ぶことが出来れば経験点を10得られるようになる。 -rand:4/6,1/6 -============================ -input: -DCT -output: -MeikyuDays : 因縁表(4) > 対象は、過去にあなたと戦い、あなたの体に古傷を残している。今でもときどき傷は代償を求めて疼く。対象への《敵意》が1点上昇する。 -rand:3/6,1/6 -============================ -input: -DCT -output: -MeikyuDays : 因縁表(10) > 対象とあなたは、前世があなたの妻/夫であった。幸せな生涯の記憶が蘇る。対象への《好意》が1点上昇する。 -rand:5/6,5/6 -============================ -input: -DCT -output: -MeikyuDays : 因縁表(5) > あなたは対象に憧れているが、全く相手にされていない。たとえ敵としてでも対象に認めてもらうことがあなたの願いだ。彼または彼女への《敵意》が1点上昇し、「ライバル」の人間関係を結ぶことが出来れば経験点を10得られるようになる。 -rand:2/6,3/6 -============================ -input: -DCT -output: -MeikyuDays : 因縁表(8) > 対象はあなたの親族を殺した。あなたはいつか訪れる復讐の日を信じて、鍛錬を続けてきた。対象への《敵意》が1点上昇する。 -rand:2/6,6/6 -============================ -input: -DCT -output: -MeikyuDays : 因縁表(5) > あなたは対象に憧れているが、全く相手にされていない。たとえ敵としてでも対象に認めてもらうことがあなたの願いだ。彼または彼女への《敵意》が1点上昇し、「ライバル」の人間関係を結ぶことが出来れば経験点を10得られるようになる。 -rand:2/6,3/6 -============================ -input: -DCT -output: -MeikyuDays : 因縁表(7) > あなたは対象に手酷く敗北したことがある。あなたは屈辱を晴らすためにできる限りのことをする気でいる。対象への《敵意》が1点上昇する。 -rand:3/6,4/6 -============================ -input: -DCT -output: -MeikyuDays : 因縁表(8) > 対象はあなたの親族を殺した。あなたはいつか訪れる復讐の日を信じて、鍛錬を続けてきた。対象への《敵意》が1点上昇する。 -rand:2/6,6/6 -============================ -input: -DCT -output: -MeikyuDays : 因縁表(4) > 対象は、過去にあなたと戦い、あなたの体に古傷を残している。今でもときどき傷は代償を求めて疼く。対象への《敵意》が1点上昇する。 -rand:3/6,1/6 -============================ -input: -MCT -output: -MeikyuDays : 怪物因縁表(11) > 対象はあなたが昔飼っていた生き物や持っていたものが変化したものである。対象への《好意》と《敵意》が1点ずつ上昇する。交渉によって対象との戦闘を終わらせた場合、経験点10点を得る。 -rand:5/6,6/6 -============================ -input: -MCT -output: -MeikyuDays : 怪物因縁表(7) > 対象はなんとなくあなたが嫌いな特徴をそなえている。嫌いなものに関連した特徴を設定すること。対象への《敵意》が1点上昇する。 -rand:6/6,1/6 -============================ -input: -MCT -output: -MeikyuDays : 怪物因縁表(11) > 対象はあなたが昔飼っていた生き物や持っていたものが変化したものである。対象への《好意》と《敵意》が1点ずつ上昇する。交渉によって対象との戦闘を終わらせた場合、経験点10点を得る。 -rand:6/6,5/6 -============================ -input: -MCT -output: -MeikyuDays : 怪物因縁表(8) > あなたは過去に対象と戦い、完敗を喫している。対象への《敵意》が1点上昇する。対象との戦闘に勝利した場合、経験点10点を得る。 -rand:2/6,6/6 -============================ -input: -MCT -output: -MeikyuDays : 怪物因縁表(9) > 対象はあなたの好きなものを穢したり貶めたことがある。好きなものにちなんだ出来事を設定すること。対象への《敵意》が1点上昇する。 -rand:3/6,6/6 -============================ -input: -MCT -output: -MeikyuDays : 怪物因縁表(8) > あなたは過去に対象と戦い、完敗を喫している。対象への《敵意》が1点上昇する。対象との戦闘に勝利した場合、経験点10点を得る。 -rand:6/6,2/6 -============================ -input: -MCT -output: -MeikyuDays : 怪物因縁表(9) > 対象はあなたの好きなものを穢したり貶めたことがある。好きなものにちなんだ出来事を設定すること。対象への《敵意》が1点上昇する。 -rand:6/6,3/6 -============================ -input: -MCT -output: -MeikyuDays : 怪物因縁表(6) > 何年も前に死んだ、あなたの親しい人は、ちょうど対象の攻撃手段と同じ方法で殺されている。対象への《敵意》が1点上昇する。 -rand:1/6,5/6 -============================ -input: -MCT -output: -MeikyuDays : 怪物因縁表(4) > あなたはかつて対象の同族を絶滅させた。しかし、奴らは死んではいなかったのだ。対象への《敵意》が1点上昇する。 -rand:3/6,1/6 -============================ -input: -MCT -output: -MeikyuDays : 怪物因縁表(9) > 対象はあなたの好きなものを穢したり貶めたことがある。好きなものにちなんだ出来事を設定すること。対象への《敵意》が1点上昇する。 -rand:6/6,3/6 -============================ -input: -PCT -output: -MeikyuDays : PC因縁表(6) > あなたは何らかの種類の迷宮屋ランキングで対象に負けている。対象への《敵意》が1点上昇する。終了フェイズで対象に(何でもいいので)負けを認めさせれば、経験点を1点獲得する。 -rand:3/6,3/6 -============================ -input: -PCT -output: -MeikyuDays : PC因縁表(10) > 対象は実は幼馴染だったことが明らかになる。容姿の変化などで気付かなかったのだ。対象への《好意》が1点上昇する。 -rand:4/6,6/6 -============================ -input: -PCT -output: -MeikyuDays : PC因縁表(4) > 対象と共通の知人がいることが発覚する。好きなものにちなんだ知人を設定すること。対象への《好意》が1点上昇する。 -rand:3/6,1/6 -============================ -input: -PCT -output: -MeikyuDays : PC因縁表(8) > 対象は何らかの媒体で、あなたに対して好意的でないコメントを出したことがあるような気がする。コメントの詳細はあなたが決定すること。対象への《敵意》が1点上昇する。 -rand:2/6,6/6 -============================ -input: -PCT -output: -MeikyuDays : PC因縁表(6) > あなたは何らかの種類の迷宮屋ランキングで対象に負けている。対象への《敵意》が1点上昇する。終了フェイズで対象に(何でもいいので)負けを認めさせれば、経験点を1点獲得する。 -rand:3/6,3/6 -============================ -input: -PCT -output: -MeikyuDays : PC因縁表(7) > 対象は、なんとなくあなたの好きな特徴を備えているような気がする。好きなものにちなんだ特徴を1つ設定し、対象のプレイヤーの了解をとること。チャンスは1回だ。OKなら対象への《好意》が1点上昇する。 -rand:5/6,2/6 -============================ -input: -PCT -output: -MeikyuDays : PC因縁表(8) > 対象は何らかの媒体で、あなたに対して好意的でないコメントを出したことがあるような気がする。コメントの詳細はあなたが決定すること。対象への《敵意》が1点上昇する。 -rand:5/6,3/6 -============================ -input: -PCT -output: -MeikyuDays : PC因縁表(8) > 対象は何らかの媒体で、あなたに対して好意的でないコメントを出したことがあるような気がする。コメントの詳細はあなたが決定すること。対象への《敵意》が1点上昇する。 -rand:2/6,6/6 -============================ -input: -PCT -output: -MeikyuDays : PC因縁表(6) > あなたは何らかの種類の迷宮屋ランキングで対象に負けている。対象への《敵意》が1点上昇する。終了フェイズで対象に(何でもいいので)負けを認めさせれば、経験点を1点獲得する。 -rand:2/6,4/6 -============================ -input: -PCT -output: -MeikyuDays : PC因縁表(5) > 対象と同じ場所に住んでいたり、通っていたことが分かる。対象への《好意》が1点上昇する。 -rand:3/6,2/6 -============================ -input: -LCT -output: -MeikyuDays : ラブ因縁表(7) > あなたは対象と過去につきあっていたことがある。現在はどうだか分からないが、あのころは本気だった。対象への《好意》が1点上昇する。 -rand:1/6,6/6 -============================ -input: -LCT -output: -MeikyuDays : ラブ因縁表(5) > 対象は、あなたの好きなものによく似ている。好きなものから1つを選んで、どう似ているか説明できたら、対象への《好意》が1点上昇する。 -rand:4/6,1/6 -============================ -input: -LCT -output: -MeikyuDays : ラブ因縁表(8) > 対象は、むかしあなたが好きだった人と印象がよく似ている。対象への《好意》が1点上昇する。 -rand:3/6,5/6 -============================ -input: -LCT -output: -MeikyuDays : ラブ因縁表(6) > 対象をよく見たらけっこう可愛いような気がしてきた。対象への《好意》が1点上昇し、対象への《好意》をすべて愛情に変換する。 -rand:2/6,4/6 -============================ -input: -LCT -output: -MeikyuDays : ラブ因縁表(11) > あなたは昔から、対象を独占したいと思っていた。対象があなた以外と関わるたびに怒りを募らせていたのだ。対象への《好意》と《敵意》が2点ずつ上昇する。 -rand:6/6,5/6 -============================ -input: -LCT -output: -MeikyuDays : ラブ因縁表(7) > あなたは対象と過去につきあっていたことがある。現在はどうだか分からないが、あのころは本気だった。対象への《好意》が1点上昇する。 -rand:2/6,5/6 -============================ -input: -LCT -output: -MeikyuDays : ラブ因縁表(4) > あなたはかつて親友であった対象に恋人を奪われたことがある。対象への《敵意》が1点上昇する。 -rand:3/6,1/6 -============================ -input: -LCT -output: -MeikyuDays : ラブ因縁表(4) > あなたはかつて親友であった対象に恋人を奪われたことがある。対象への《敵意》が1点上昇する。 -rand:3/6,1/6 -============================ -input: -LCT -output: -MeikyuDays : ラブ因縁表(4) > あなたはかつて親友であった対象に恋人を奪われたことがある。対象への《敵意》が1点上昇する。 -rand:2/6,2/6 -============================ -input: -LCT -output: -MeikyuDays : ラブ因縁表(9) > あなたは対象に助けられたり、命を救われたことがある。1分以内に設定を作り上げられれば、対象への《好意》が1点上昇する。 -rand:4/6,5/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -MeikyuDays : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/MeikyuKingdom.txt b/src/src_bcdice/test/data/MeikyuKingdom.txt deleted file mode 100644 index b47e79142..000000000 --- a/src/src_bcdice/test/data/MeikyuKingdom.txt +++ /dev/null @@ -1,3799 +0,0 @@ -input: -2d6>=4 -output: -MeikyuKingdom : (2D6>=4) > 4[1,3] > 4 > 成功 -rand:3/6,1/6 -============================ -input: -2d6>=4 -output: -MeikyuKingdom : (2D6>=4) > 3[1,2] > 3 > 失敗 -rand:2/6,1/6 -============================ -input: -2d6>=4 -output: -MeikyuKingdom : (2D6>=4) > 4[2,2] > 4 > 成功 -rand:2/6,2/6 -============================ -input: -2d6>=4 -output: -MeikyuKingdom : (2D6>=4) > 8[2,6] > 8 > 成功 (もしくは) 2 > 失敗 & 《気力》1点獲得 -rand:6/6,2/6 -============================ -input: -2d6>=4 -output: -MeikyuKingdom : (2D6>=4) > 8[3,5] > 8 > 成功 -rand:3/6,5/6 -============================ -input: -2d6>=4 -output: -MeikyuKingdom : (2D6>=4) > 9[3,6] > 9 > 成功 (もしくは) 3 > 失敗 & 《気力》1点獲得 -rand:3/6,6/6 -============================ -input: -2d6>=4 -output: -MeikyuKingdom : (2D6>=4) > 5[2,3] > 5 > 成功 -rand:2/6,3/6 -============================ -input: -2d6>=4 -output: -MeikyuKingdom : (2D6>=4) > 5[1,4] > 5 > 成功 -rand:1/6,4/6 -============================ -input: -2d6>=4 -output: -MeikyuKingdom : (2D6>=4) > 9[4,5] > 9 > 成功 -rand:5/6,4/6 -============================ -input: -2d6>=4 -output: -MeikyuKingdom : (2D6>=4) > 4[2,2] > 4 > 成功 -rand:2/6,2/6 -============================ -input: -2d6>=9 -output: -MeikyuKingdom : (2D6>=9) > 10[4,6] > 10 > 成功 (もしくは) 4 > 失敗 & 《気力》1点獲得 -rand:4/6,6/6 -============================ -input: -2d6>=9 -output: -MeikyuKingdom : (2D6>=9) > 8[2,6] > 8 > 失敗 (もしくは) 2 > 失敗 & 《気力》1点獲得 -rand:6/6,2/6 -============================ -input: -2d6>=9 -output: -MeikyuKingdom : (2D6>=9) > 7[1,6] > 7 > 失敗 (もしくは) 1 > 失敗 & 《気力》1点獲得 -rand:6/6,1/6 -============================ -input: -2d6>=9 -output: -MeikyuKingdom : (2D6>=9) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2d6>=9 -output: -MeikyuKingdom : (2D6>=9) > 12[6,6] > 12 > 絶対成功 & 《気力》2点獲得 -rand:6/6,6/6 -============================ -input: -2d6>=9 -output: -MeikyuKingdom : (2D6>=9) > 5[2,3] > 5 > 失敗 -rand:2/6,3/6 -============================ -input: -2d6>=9 -output: -MeikyuKingdom : (2D6>=9) > 6[2,4] > 6 > 失敗 -rand:4/6,2/6 -============================ -input: -2d6>=9 -output: -MeikyuKingdom : (2D6>=9) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2d6>=9 -output: -MeikyuKingdom : (2D6>=9) > 11[5,6] > 11 > 成功 (もしくは) 5 > 失敗 & 《気力》1点獲得 -rand:6/6,5/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdom : (2D6>=7) > 5[2,3] > 5 > 失敗 -rand:3/6,2/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdom : (2D6>=7) > 8[4,4] > 8 > 成功 -rand:4/6,4/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdom : (2D6>=7) > 9[4,5] > 9 > 成功 -rand:4/6,5/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdom : (2D6>=7) > 9[4,5] > 9 > 成功 -rand:4/6,5/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdom : (2D6>=7) > 6[1,5] > 6 > 失敗 -rand:5/6,1/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdom : (2D6>=7) > 8[2,6] > 8 > 成功 (もしくは) 2 > 失敗 & 《気力》1点獲得 -rand:6/6,2/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdom : (2D6>=7) > 4[1,3] > 4 > 失敗 -rand:3/6,1/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdom : (2D6>=7) > 6[1,5] > 6 > 失敗 -rand:5/6,1/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdom : (2D6>=7) > 4[1,3] > 4 > 失敗 -rand:1/6,3/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdom : (2D6>=7) > 10[5,5] > 10 > 成功 -rand:5/6,5/6 -============================ -input: -1MK -output: -MeikyuKingdom : (1R6) > 1 -rand:1/6 -============================ -input: -1MK -output: -MeikyuKingdom : (1R6) > 6 -rand:6/6 -============================ -input: -1MK>=2 -output: -MeikyuKingdom : (1R6>=2) > 6 > 成功 (もしくは) 0 > 失敗 & 《気力》1点獲得 -rand:6/6 -============================ -input: -1MK+1>=2 -output: -MeikyuKingdom : (1R6+1>=2) > 6[6]+1 > 7 > 成功 (もしくは) 1 > 失敗 & 《気力》1点獲得 -rand:6/6 -============================ -input: -1MK+2>=2 -output: -MeikyuKingdom : (1R6+2>=2) > 6[6]+2 > 8 > 成功 (もしくは) 2 > 成功 & 《気力》1点獲得 -rand:6/6 -============================ -input: -3MK+4>=10 -output: -MeikyuKingdom : (3R6+4>=10) > 9[1,3,6]+4 > 13 > 成功 (もしくは) 8 > 失敗 & 《気力》1点獲得 -rand:1/6,3/6,6/6 -============================ -input: -4MK+1>=8 -output: -MeikyuKingdom : (4R6+1>=8) > 12[6,6,6,6]+1 > 13 > 絶対成功 & 《気力》4点獲得 -rand:6/6,6/6,6/6,6/6 -============================ -input: -4MK+1>=8 -output: -MeikyuKingdom : (4R6+1>=8) > 12[1,6,6,6]+1 > 13 > 絶対成功 & 《気力》3点獲得 -rand:1/6,6/6,6/6,6/6 -============================ -input: -4MK+1>=8 -output: -MeikyuKingdom : (4R6+1>=8) > 12[1,1,6,6]+1 > 13 > 絶対成功 & 《気力》2点獲得 -rand:1/6,1/6,6/6,6/6 -============================ -input: -4MK+1>=8 -output: -MeikyuKingdom : (4R6+1>=8) > 11[1,1,5,6]+1 > 12 > 成功 (もしくは) 7 > 失敗 & 《気力》1点獲得 -rand:1/6,1/6,5/6,6/6 -============================ -input: -4MK+1>=8 -output: -MeikyuKingdom : (4R6+1>=8) > 7[1,1,1,6]+1 > 8 > 成功 (もしくは) 3 > 失敗 & 《気力》1点獲得 -rand:1/6,1/6,1/6,6/6 -============================ -input: -2MK -output: -MeikyuKingdom : (2R6) > 8[3,5] > 8 -rand:3/6,5/6 -============================ -input: -2MK -output: -MeikyuKingdom : (2R6) > 8[3,5] > 8 -rand:3/6,5/6 -============================ -input: -2MK -output: -MeikyuKingdom : (2R6) > 3[1,2] > 3 -rand:2/6,1/6 -============================ -input: -2MK -output: -MeikyuKingdom : (2R6) > 10[5,5] > 10 -rand:5/6,5/6 -============================ -input: -2MK -output: -MeikyuKingdom : (2R6) > 7[1,6] > 7 -rand:1/6,6/6 -============================ -input: -2MK -output: -MeikyuKingdom : (2R6) > 8[3,5] > 8 -rand:3/6,5/6 -============================ -input: -2MK -output: -MeikyuKingdom : (2R6) > 10[5,5] > 10 -rand:5/6,5/6 -============================ -input: -2MK -output: -MeikyuKingdom : (2R6) > 9[3,6] > 9 -rand:6/6,3/6 -============================ -input: -2MK -output: -MeikyuKingdom : (2R6) > 6[1,5] > 6 -rand:1/6,5/6 -============================ -input: -2MK -output: -MeikyuKingdom : (2R6) > 8[2,6] > 8 -rand:6/6,2/6 -============================ -input: -2MK+3 -output: -MeikyuKingdom : (2R6+3) > 9[4,5]+3 > 12 -rand:4/6,5/6 -============================ -input: -2MK+3 -output: -MeikyuKingdom : (2R6+3) > 7[1,6]+3 > 10 -rand:1/6,6/6 -============================ -input: -2MK+3 -output: -MeikyuKingdom : (2R6+3) > 11[5,6]+3 > 14 -rand:6/6,5/6 -============================ -input: -2MK+3 -output: -MeikyuKingdom : (2R6+3) > 2[1,1]+3 > 5 -rand:1/6,1/6 -============================ -input: -2MK+3 -output: -MeikyuKingdom : (2R6+3) > 4[2,2]+3 > 7 -rand:2/6,2/6 -============================ -input: -2MK+3 -output: -MeikyuKingdom : (2R6+3) > 6[1,5]+3 > 9 -rand:5/6,1/6 -============================ -input: -2MK+3 -output: -MeikyuKingdom : (2R6+3) > 12[6,6]+3 > 15 -rand:6/6,6/6 -============================ -input: -2MK+3 -output: -MeikyuKingdom : (2R6+3) > 3[1,2]+3 > 6 -rand:2/6,1/6 -============================ -input: -2MK+3 -output: -MeikyuKingdom : (2R6+3) > 5[2,3]+3 > 8 -rand:3/6,2/6 -============================ -input: -2MK+3 -output: -MeikyuKingdom : (2R6+3) > 4[2,2]+3 > 7 -rand:2/6,2/6 -============================ -input: -2MK+3>=10 -output: -MeikyuKingdom : (2R6+3>=10) > 12[6,6]+3 > 15 > 絶対成功 & 《気力》2点獲得 -rand:6/6,6/6 -============================ -input: -4MK+3>=10 -output: -MeikyuKingdom : (4R6+3>=10) > 12[1,6,6,6]+3 > 15 > 絶対成功 & 《気力》3点獲得 -rand:6/6,6/6,6/6,1/6 -============================ -input: -10MK -output: -MeikyuKingdom : (10R6) > 10[1,1,1,2,2,3,4,5,5,5] > 10 -rand:2/6,3/6,4/6,5/6,1/6,2/6,5/6,5/6,1/6,1/6 -============================ -input: -10MK -output: -MeikyuKingdom : (10R6) > 11[1,1,1,3,3,3,3,4,5,6] > 11 -rand:3/6,6/6,1/6,3/6,1/6,1/6,3/6,5/6,4/6,3/6 -============================ -input: -10MK -output: -MeikyuKingdom : (10R6) > 12[1,3,3,4,4,5,5,5,6,6] > 12 -rand:5/6,6/6,4/6,3/6,5/6,1/6,3/6,5/6,6/6,4/6 -============================ -input: -10MK -output: -MeikyuKingdom : (10R6) > 12[1,1,2,2,3,4,4,6,6,6] > 12 -rand:6/6,2/6,4/6,4/6,1/6,3/6,6/6,1/6,6/6,2/6 -============================ -input: -10MK -output: -MeikyuKingdom : (10R6) > 12[1,1,2,2,3,3,4,6,6,6] > 12 -rand:1/6,4/6,6/6,2/6,6/6,2/6,3/6,3/6,1/6,6/6 -============================ -input: -10MK -output: -MeikyuKingdom : (10R6) > 12[3,3,3,4,4,5,5,6,6,6] > 12 -rand:3/6,6/6,5/6,4/6,3/6,6/6,5/6,6/6,4/6,3/6 -============================ -input: -10MK -output: -MeikyuKingdom : (10R6) > 12[1,2,2,3,3,5,5,5,6,6] > 12 -rand:3/6,5/6,1/6,2/6,5/6,5/6,6/6,6/6,3/6,2/6 -============================ -input: -10MK -output: -MeikyuKingdom : (10R6) > 11[2,2,2,3,3,4,4,4,5,6] > 11 -rand:6/6,3/6,2/6,2/6,4/6,5/6,4/6,3/6,2/6,4/6 -============================ -input: -10MK -output: -MeikyuKingdom : (10R6) > 12[1,2,4,4,4,5,5,5,6,6] > 12 -rand:5/6,2/6,1/6,5/6,6/6,4/6,5/6,4/6,4/6,6/6 -============================ -input: -10MK -output: -MeikyuKingdom : (10R6) > 11[2,2,2,2,3,4,4,5,5,6] > 11 -rand:3/6,2/6,4/6,2/6,4/6,5/6,5/6,2/6,2/6,6/6 -============================ -input: -10MK+10 -output: -MeikyuKingdom : (10R6+10) > 9[1,1,2,2,2,3,3,4,4,5]+10 > 19 -rand:5/6,3/6,2/6,4/6,4/6,1/6,3/6,1/6,2/6,2/6 -============================ -input: -10MK+10 -output: -MeikyuKingdom : (10R6+10) > 12[1,1,2,2,2,3,4,5,6,6]+10 > 22 -rand:1/6,2/6,3/6,5/6,1/6,4/6,2/6,2/6,6/6,6/6 -============================ -input: -10MK+10 -output: -MeikyuKingdom : (10R6+10) > 11[1,2,3,3,3,4,4,5,5,6]+10 > 21 -rand:3/6,3/6,3/6,6/6,4/6,2/6,5/6,5/6,1/6,4/6 -============================ -input: -10MK+10 -output: -MeikyuKingdom : (10R6+10) > 12[2,2,3,3,4,4,5,6,6,6]+10 > 22 -rand:6/6,2/6,4/6,2/6,5/6,6/6,3/6,4/6,6/6,3/6 -============================ -input: -10MK+10 -output: -MeikyuKingdom : (10R6+10) > 12[1,2,2,3,4,4,6,6,6,6]+10 > 22 -rand:6/6,2/6,3/6,6/6,4/6,2/6,1/6,6/6,6/6,4/6 -============================ -input: -10MK+10 -output: -MeikyuKingdom : (10R6+10) > 11[1,2,2,3,4,4,4,5,5,6]+10 > 21 -rand:2/6,3/6,4/6,1/6,2/6,4/6,6/6,5/6,4/6,5/6 -============================ -input: -10MK+10 -output: -MeikyuKingdom : (10R6+10) > 10[1,1,1,2,2,3,4,4,4,6]+10 > 20 -rand:4/6,2/6,6/6,3/6,4/6,2/6,1/6,4/6,1/6,1/6 -============================ -input: -10MK+10 -output: -MeikyuKingdom : (10R6+10) > 11[2,2,3,3,3,4,4,5,5,6]+10 > 21 -rand:5/6,6/6,2/6,2/6,3/6,5/6,4/6,4/6,3/6,3/6 -============================ -input: -10MK+10 -output: -MeikyuKingdom : (10R6+10) > 11[1,1,2,2,3,3,3,4,5,6]+10 > 21 -rand:2/6,2/6,3/6,3/6,6/6,5/6,4/6,3/6,1/6,1/6 -============================ -input: -10MK+10 -output: -MeikyuKingdom : (10R6+10) > 12[1,2,2,3,3,4,4,5,6,6]+10 > 22 -rand:4/6,3/6,1/6,2/6,3/6,2/6,6/6,4/6,6/6,5/6 -============================ -input: -LRT -output: -MeikyuKingdom : 生活散策表(7) > 食料に対する不安を漏らす民の姿を見かける。ゲーム中に「肉」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「肉」を獲得出来ないと、維持費+1MG -rand:6/6,1/6 -============================ -input: -LRT -output: -MeikyuKingdom : 生活散策表(9) > お腹の大きくなった女性が、無事戻ったら赤子の名付け親になって欲しいと言う。このゲームのシナリオの目的を果たしたら、終了フェイズに《民》+(2d6)人 -rand:4/6,5/6 -============================ -input: -LRT -output: -MeikyuKingdom : 生活散策表(2) > ハグルマ資本主義神聖共和国から使者が現れる。受け入れる場合[生活レベル/9]に成功すると(1d6)MG獲得。この判定の難易度は、ハグルマとの関係が険悪なら+2、敵対なら+4される。使者を受け入れない場合、ハグルマとの関係が1段階悪化する。すでに関係が敵対なら、領土1つを失う -rand:1/6,1/6 -============================ -input: -LRT -output: -MeikyuKingdom : 生活散策表(7) > 食料に対する不安を漏らす民の姿を見かける。ゲーム中に「肉」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「肉」を獲得出来ないと、維持費+1MG -rand:5/6,2/6 -============================ -input: -LRT -output: -MeikyuKingdom : 生活散策表(9) > お腹の大きくなった女性が、無事戻ったら赤子の名付け親になって欲しいと言う。このゲームのシナリオの目的を果たしたら、終了フェイズに《民》+(2d6)人 -rand:3/6,6/6 -============================ -input: -LRT -output: -MeikyuKingdom : 生活散策表(10) > 王国内で民とともに汗を流す。[生活レベル/9]の判定に成功すると、(生産施設の数×1)MGを獲得する -rand:5/6,5/6 -============================ -input: -LRT -output: -MeikyuKingdom : 生活散策表(5) > 旅の商人に出会い、昨今の相場を聞く。(2d6)を振り、メモしておく。終了フェイズの収支報告のタイミングに、2d6を振る代わりにその目が出たことにして相場を決定する -rand:2/6,3/6 -============================ -input: -LRT -output: -MeikyuKingdom : 生活散策表(6) > 主婦たちの井戸端会議によると、生活用品が不足しているらしい。ゲーム中に「革」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「革」を獲得出来ないと、維持費+1MG -rand:5/6,1/6 -============================ -input: -LRT -output: -MeikyuKingdom : 生活散策表(4) > この国の評判を聞いて、旅人がやってくる。このゲームのシナリオの目的を果たしたら、終了フェイズに《民》+(2d6)人 -rand:1/6,3/6 -============================ -input: -LRT -output: -MeikyuKingdom : 生活散策表(6) > 主婦たちの井戸端会議によると、生活用品が不足しているらしい。ゲーム中に「革」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「革」を獲得出来ないと、維持費+1MG -rand:2/6,4/6 -============================ -input: -ORT -output: -MeikyuKingdom : 治安散策表(11) > 「迷宮のごかごがありますように……」 [治安レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の探索アイテム1個を1Lvで獲得できる -rand:6/6,5/6 -============================ -input: -ORT -output: -MeikyuKingdom : 治安散策表(7) > 王国周辺の迷宮化が進んでいる。対迷宮化結界を強化せねば…。ゲーム中に「魔素」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「魔素」を獲得出来ないと、維持費+1MG -rand:5/6,2/6 -============================ -input: -ORT -output: -MeikyuKingdom : 治安散策表(9) > 周辺諸国の噂を聞く。王国シートの既知の土地欄の中から、関係が同盟・良好・中立の他国があれば、ランダムに国1つを選ぶ、相場表でランダムに素材1種類を選ぶ。その国の相場はその素材となる -rand:6/6,3/6 -============================ -input: -ORT -output: -MeikyuKingdom : 治安散策表(10) > 王国の平和な光景を見て、手応えを感じる。[治安レベル/9」の判定に成功すると、[公共施設の数×1]MGを獲得する -rand:4/6,6/6 -============================ -input: -ORT -output: -MeikyuKingdom : 治安散策表(3) > 「つまらないものですが、これを冒険に役立ててください……」相場表でランダムに素材1種を選び、それを(1d6)個獲得する -rand:1/6,2/6 -============================ -input: -ORT -output: -MeikyuKingdom : 治安散策表(4) > 民たちが自分らで、王国を守る相談をしている。この気0無のシナリオの目的を果たしたら、好きなレベルのある施設1軒を選び、その隣の部屋に同じ施設1軒を建設する -rand:1/6,3/6 -============================ -input: -ORT -output: -MeikyuKingdom : 治安散策表(9) > 周辺諸国の噂を聞く。王国シートの既知の土地欄の中から、関係が同盟・良好・中立の他国があれば、ランダムに国1つを選ぶ、相場表でランダムに素材1種類を選ぶ。その国の相場はその素材となる -rand:6/6,3/6 -============================ -input: -ORT -output: -MeikyuKingdom : 治安散策表(4) > 民たちが自分らで、王国を守る相談をしている。この気0無のシナリオの目的を果たしたら、好きなレベルのある施設1軒を選び、その隣の部屋に同じ施設1軒を建設する -rand:2/6,2/6 -============================ -input: -ORT -output: -MeikyuKingdom : 治安散策表(8) > 王国内の施設の稼働率が下がっている。整備が必要そうだ。ゲーム中に「機械」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「機械」を獲得出来ないと、維持費+1MG -rand:4/6,4/6 -============================ -input: -ORT -output: -MeikyuKingdom : 治安散策表(6) > 王国の民たちが、ランドメイカーの留守を守る人間が少ないことを心配している。ゲーム中に逸材1人を獲得するたびに《民の声》+1。終了フェイズまでに1人も逸材を獲得出来ないと、維持費+1MG -rand:1/6,5/6 -============================ -input: -CRT -output: -MeikyuKingdom : 文化散策表(6) > 若者たちの有志が、街を発展させるため諸外国のことを勉強したいと言い出した。ゲーム中に「情報」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「情報」を獲得出来ないと、維持費+1MG -rand:2/6,4/6 -============================ -input: -CRT -output: -MeikyuKingdom : 文化散策表(7) > 若い娘たちが、流行の衣装について楽しそうに話している。ゲーム中に「衣料」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「衣料」を獲得出来ないと、維持費+1MG -rand:5/6,2/6 -============================ -input: -CRT -output: -MeikyuKingdom : 文化散策表(5) > 他のランドおメイカーの噂を聞く。宮廷から好きなキャラクター1人を選び、そのキャラクターに対する《好意》+1 -rand:4/6,1/6 -============================ -input: -CRT -output: -MeikyuKingdom : 文化散策表(11) > 「ご無事をお祈りしております……」 [文化レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の回復アイテム1個を1Lvで獲得できる -rand:6/6,5/6 -============================ -input: -CRT -output: -MeikyuKingdom : 文化散策表(10) > 王国内を訪れる旅人たちを見かける。[文化レベル/9]の判定に成功すると、[憩いの施設の数×1]MGを獲得する -rand:4/6,6/6 -============================ -input: -CRT -output: -MeikyuKingdom : 文化散策表(7) > 若い娘たちが、流行の衣装について楽しそうに話している。ゲーム中に「衣料」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「衣料」を獲得出来ないと、維持費+1MG -rand:6/6,1/6 -============================ -input: -CRT -output: -MeikyuKingdom : 文化散策表(2) > 千年王朝から使者が現れる。受け入れる場合、[文化レベル/9]に成功すると《民の声》+(1d6)、失敗するとすると《民の声》-(1d6)。この判定の難易度は、千年王朝との関係が険悪なら+2、敵対なら+4される。使者を受け入れない場合、千年王朝との関係が1段階悪化する。すでに関係が敵対なら、領土1つを失う -rand:1/6,1/6 -============================ -input: -CRT -output: -MeikyuKingdom : 文化散策表(9) > あなたに熱い視線が注がれているのを感じる。宮廷から好きなキャラクター1人を選び、そのキャラクターの自分に対する《好意》+1 -rand:5/6,4/6 -============================ -input: -CRT -output: -MeikyuKingdom : 文化散策表(4) > 都会に出て行った幼馴染から手紙がくる。王国の様子を知りたがっているようだ。シナリオの目的を果たしたら、終了フェイズにランダムなジョブの逸材1人を獲得する -rand:3/6,1/6 -============================ -input: -CRT -output: -MeikyuKingdom : 文化散策表(3) > 民が祭りの準備を進めている。シナリオの目的を果たしていれば、収支報告の時に[収支報告時の《民の声》-ゲーム開始時の《民の声》]MGを獲得できる。ただし、数値がマイナスになった場合は、その分維持費が上昇する -rand:2/6,1/6 -============================ -input: -ART -output: -MeikyuKingdom : 軍事散策表(7) > 旅人から隣国が軍備を拡張していると言う噂を聞く。ゲーム中に「鉄」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「鉄」を獲得出来ないと、維持費+1MG -rand:4/6,3/6 -============================ -input: -ART -output: -MeikyuKingdom : 軍事散策表(3) > 長老から迷宮の昔話を聞く。このゲーム中、自分のレベル以下のモンスターを倒すと、そのモンスターをモンスターの《民》にすることができる。この効果は、そのゲーム中に1度だけ使用できる -rand:2/6,1/6 -============================ -input: -ART -output: -MeikyuKingdom : 軍事散策表(3) > 長老から迷宮の昔話を聞く。このゲーム中、自分のレベル以下のモンスターを倒すと、そのモンスターをモンスターの《民》にすることができる。この効果は、そのゲーム中に1度だけ使用できる -rand:2/6,1/6 -============================ -input: -ART -output: -MeikyuKingdom : 軍事散策表(8) > 近隣で凶悪なモンスターたちが大量発生していると言う。ゲーム中に「火薬」5個を獲得するたびに《民の声》+1。終了フェイズの収支報告までに1個も「火薬」を獲得出来ないと、維持費+1MG -rand:2/6,6/6 -============================ -input: -ART -output: -MeikyuKingdom : 軍事散策表(11) > 「こんなものを用意してみました」 [軍事レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の武具アイテム1個を1Lvで獲得できる -rand:5/6,6/6 -============================ -input: -ART -output: -MeikyuKingdom : 軍事散策表(11) > 「こんなものを用意してみました」 [軍事レベル/11]の判定に成功すると、価格が自国の[生活レベル]以下の武具アイテム1個を1Lvで獲得できる -rand:5/6,6/6 -============================ -input: -ART -output: -MeikyuKingdom : 軍事散策表(5) > くだらないことで口論になる。宮廷の中から1人を選び、互いに対する《敵意》+1 -rand:4/6,1/6 -============================ -input: -ART -output: -MeikyuKingdom : 軍事散策表(3) > 長老から迷宮の昔話を聞く。このゲーム中、自分のレベル以下のモンスターを倒すと、そのモンスターをモンスターの《民》にすることができる。この効果は、そのゲーム中に1度だけ使用できる -rand:1/6,2/6 -============================ -input: -ART -output: -MeikyuKingdom : 軍事散策表(10) > 隣国からの貢物が届く。[軍事レベル/11]の判定に成功すると、収支報告の時に価格の()内の数字が[領土の数×1]以下のレアアイテム1個を獲得する -rand:6/6,4/6 -============================ -input: -ART -output: -MeikyuKingdom : 軍事散策表(5) > くだらないことで口論になる。宮廷の中から1人を選び、互いに対する《敵意》+1 -rand:2/6,3/6 -============================ -input: -FRT -output: -MeikyuKingdom : お祭り表(10) > 鬼祭り。お正月に旧年の悪を正す修正会、豆をまいて福を呼び込む追儺の儀式、怪物に仮装した子供たちが夜の王国をねり歩くハロウィーンなど、悪魔や悪霊を払うお祭り。モンスター除けに行われる。このゲームの間、ランダムエンカウントの戦闘後に使用するお宝表が1段階、高いレベルのものを使用する -rand:5/6,5/6 -============================ -input: -FRT -output: -MeikyuKingdom : お祭り表(8) > 冠婚葬祭。国の重要人物の元服(成人)、婚礼、葬儀、祖先の慰霊などの儀式。格式の高い王国では、もっとも重要な祭礼である。このゲームの間、国力を使った判定の達成値を1上昇させる -rand:2/6,6/6 -============================ -input: -FRT -output: -MeikyuKingdom : お祭り表(10) > 鬼祭り。お正月に旧年の悪を正す修正会、豆をまいて福を呼び込む追儺の儀式、怪物に仮装した子供たちが夜の王国をねり歩くハロウィーンなど、悪魔や悪霊を払うお祭り。モンスター除けに行われる。このゲームの間、ランダムエンカウントの戦闘後に使用するお宝表が1段階、高いレベルのものを使用する -rand:4/6,6/6 -============================ -input: -FRT -output: -MeikyuKingdom : お祭り表(8) > 冠婚葬祭。国の重要人物の元服(成人)、婚礼、葬儀、祖先の慰霊などの儀式。格式の高い王国では、もっとも重要な祭礼である。このゲームの間、国力を使った判定の達成値を1上昇させる -rand:2/6,6/6 -============================ -input: -FRT -output: -MeikyuKingdom : お祭り表(6) > 民衆の宴。民が自発的に開くお祭り、イベント。アキハバラ電気祭りに餃子祭り、コミックマーケットなど、文化や地域の活性化と結びつくものが多い。このゲームの間、好きな施設1つを選んで、その施設の施設レベルを1上げる -rand:5/6,1/6 -============================ -input: -FRT -output: -MeikyuKingdom : お祭り表(9) > 感謝祭。豊漁や豊作などがあったときに自然(迷宮)や精霊、信仰対象など、偉大なるものへの感謝を捧げるお祭り。獲物の毛の一部を切りとって迷宮に感謝する毛祭りや瀬祭り、豊饒を祝う新嘗祭などがある。終了フェイズに「木」や「革」、「肉」のいずれかを1つ消費すると、王国変動表の結果を±1の範囲でずらすことができる -rand:6/6,3/6 -============================ -input: -FRT -output: -MeikyuKingdom : お祭り表(7) > 誕生日。ランドメイカーや逸材、国の重要人物の誕生日。聖誕祭や花祭りなど、国教の聖人などを祝う国も多い。現王の誕生日を「父の日」、后の誕生日を「母の日」とする国も多い。そのゲームの間、ケーキやおにぎり、缶ジュースなど、1人分が明確な食べ物を食べきったとき、自分のPCが《気力》1点を獲得する -rand:3/6,4/6 -============================ -input: -FRT -output: -MeikyuKingdom : お祭り表(4) > 記念日。建国記念日や領土獲得などの記念日のお祝い。簡単につくることができるが、気がつくと記念日だらけで、何の記念だったかを忘れてしまう。ほどほどに。このゲームの間、行為判定の目で3でも絶対失敗、11でも絶対成功になる(「呪い」のバッドステータスを受けたものは4でも絶対失敗、【必殺】を使った命中判定なら10でも絶対成功) -rand:3/6,1/6 -============================ -input: -FRT -output: -MeikyuKingdom : お祭り表(2) > 祈願祭。国や重要人物の無病息災を祈ったり、戦いの勝利などを祈る祭り。災害や飢饉、流行り病が起こった付近で行われる。シナリオの目的をクリアしていれば、《民》が1D6人上昇する -rand:1/6,1/6 -============================ -input: -FRT -output: -MeikyuKingdom : お祭り表(5) > 星祭。季節のお祭り。冬至や夏至などの祭りや、七夕、お花見、雪祭りなどが含まれる。季節感の少ない迷宮では、殊更にその風情を楽しもうとやたら盛り上がる。宮廷全員、好きなキャラクター1人を選び、そのキャラクターに対する《好意》を1点上げる -rand:4/6,1/6 -============================ -input: -TBT -output: -MeikyuKingdom : 才覚休憩表(8) > 今後の冒険について口角泡を飛ばして議論する。好きな宮廷内のキャラクター1人を選び、そのキャラの自分に対する《敵意》を好きなだけ上昇させる。上昇した《敵意》と等しい値だけ《民の声》が回復する -rand:4/6,4/6 -============================ -input: -TBT -output: -MeikyuKingdom : 才覚休憩表(4) > 好きなものの夢を見る。シチュエーションを表現し、幸せそうだと感じるプレイヤーが居たら《気力》+2 -rand:2/6,2/6 -============================ -input: -TBT -output: -MeikyuKingdom : 才覚休憩表(12) > この迷宮は一筋縄ではいかないようだ。今こそ、用意していたアレが役に立つだろう。自分の習得しているスキル1種を未修得にし、同じスキルグループのスキル1種を修得してもよい。この効果は永続する。 -rand:6/6,6/6 -============================ -input: -TBT -output: -MeikyuKingdom : 才覚休憩表(7) > 休憩中も休み無く働いていると、配下がお茶を入れてくれる。《民の声》+1 -rand:2/6,5/6 -============================ -input: -TBT -output: -MeikyuKingdom : 才覚休憩表(7) > 休憩中も休み無く働いていると、配下がお茶を入れてくれる。《民の声》+1 -rand:4/6,3/6 -============================ -input: -TBT -output: -MeikyuKingdom : 才覚休憩表(10) > 年若い配下に冒険譚をせがまれる。[才覚/現在の《民の声》の値+3]の判定に成功すると、《民の声》+(1d6)。失敗すると次の1クォーター行動できない -rand:4/6,6/6 -============================ -input: -TBT -output: -MeikyuKingdom : 才覚休憩表(4) > 好きなものの夢を見る。シチュエーションを表現し、幸せそうだと感じるプレイヤーが居たら《気力》+2 -rand:3/6,1/6 -============================ -input: -TBT -output: -MeikyuKingdom : 才覚休憩表(6) > あらん限りの声を力を込めて檄を飛ばす。[才覚/9]の判定に成功すると、宮廷全員のあなたに対する《好意》の合計だけ、《民の声》が回復する -rand:2/6,4/6 -============================ -input: -TBT -output: -MeikyuKingdom : 才覚休憩表(6) > あらん限りの声を力を込めて檄を飛ばす。[才覚/9]の判定に成功すると、宮廷全員のあなたに対する《好意》の合計だけ、《民の声》が回復する -rand:4/6,2/6 -============================ -input: -TBT -output: -MeikyuKingdom : 才覚休憩表(4) > 好きなものの夢を見る。シチュエーションを表現し、幸せそうだと感じるプレイヤーが居たら《気力》+2 -rand:2/6,2/6 -============================ -input: -CBT -output: -MeikyuKingdom : 魅力休憩表(8) > うたた寝をしていると誰かが毛布を掛けてくれた。ランダムにキャラを選び、自分のそのキャラへの《好意》+1 -rand:5/6,3/6 -============================ -input: -CBT -output: -MeikyuKingdom : 魅力休憩表(10) > 着替えを覗かれる。宮廷内からランダムに1体選び、(1d6)を振る。奇数なら大声をだしてしまい宮廷全員のそのキャラに対する《敵意》+1、偶数ならそのキャラとあなたの互いの《好意》+1 -rand:4/6,6/6 -============================ -input: -CBT -output: -MeikyuKingdom : 魅力休憩表(8) > うたた寝をしていると誰かが毛布を掛けてくれた。ランダムにキャラを選び、自分のそのキャラへの《好意》+1 -rand:6/6,2/6 -============================ -input: -CBT -output: -MeikyuKingdom : 魅力休憩表(7) > あいつと目が合う。[魅力/9]の判定に成功したら、宮廷内からランダムに1体選び、そのキャラから自分への《好意》か、または自分のそのキャラへの《好意》いづれかが+1される -rand:2/6,5/6 -============================ -input: -CBT -output: -MeikyuKingdom : 魅力休憩表(7) > あいつと目が合う。[魅力/9]の判定に成功したら、宮廷内からランダムに1体選び、そのキャラから自分への《好意》か、または自分のそのキャラへの《好意》いづれかが+1される -rand:2/6,5/6 -============================ -input: -CBT -output: -MeikyuKingdom : 魅力休憩表(3) > 休憩中、意外な寝言を言ってしまう。自分を除く宮廷全員は自分に対する《好意》と《敵意》を入れ替えることが出来る。また、その属性を自由に変更することができる -rand:2/6,1/6 -============================ -input: -CBT -output: -MeikyuKingdom : 魅力休憩表(10) > 着替えを覗かれる。宮廷内からランダムに1体選び、(1d6)を振る。奇数なら大声をだしてしまい宮廷全員のそのキャラに対する《敵意》+1、偶数ならそのキャラとあなたの互いの《好意》+1 -rand:5/6,5/6 -============================ -input: -CBT -output: -MeikyuKingdom : 魅力休憩表(5) > こっそり二人で抜け出して良い雰囲気に。その部屋の中に、好きなものが同じキャラが居ればそのキャラ1体を選び、互いに対する《好意》+1 -rand:4/6,1/6 -============================ -input: -CBT -output: -MeikyuKingdom : 魅力休憩表(9) > たき火を囲みながら会話を楽しむ。GMの左隣にいるプレイヤーから順番に、自分のPCが《好意》を持っているキャラ1体を選ぶ。選ばれたキャラは《気力》+1。誰からも選ばれなかったキャラは《気力》-1、ランダムに選んだ宮廷内のキャラへの《敵意》+1 -rand:3/6,6/6 -============================ -input: -CBT -output: -MeikyuKingdom : 魅力休憩表(3) > 休憩中、意外な寝言を言ってしまう。自分を除く宮廷全員は自分に対する《好意》と《敵意》を入れ替えることが出来る。また、その属性を自由に変更することができる -rand:1/6,2/6 -============================ -input: -SBT -output: -MeikyuKingdom : 探索休憩表(6) > 一休みしようと持ったら、モンスターの墓場を発見した。好きな素材を1種類えらび、宮廷全員のあなたにたいする《好意》の合計に等しい個数だけその素材を入手する -rand:4/6,2/6 -============================ -input: -SBT -output: -MeikyuKingdom : 探索休憩表(7) > この部屋はなぜか落ち着く。もしもその部屋の中にあなたの好きなものがあれば《気力》を(1d6)点回復することができる -rand:3/6,4/6 -============================ -input: -SBT -output: -MeikyuKingdom : 探索休憩表(7) > この部屋はなぜか落ち着く。もしもその部屋の中にあなたの好きなものがあれば《気力》を(1d6)点回復することができる -rand:3/6,4/6 -============================ -input: -SBT -output: -MeikyuKingdom : 探索休憩表(7) > この部屋はなぜか落ち着く。もしもその部屋の中にあなたの好きなものがあれば《気力》を(1d6)点回復することができる -rand:5/6,2/6 -============================ -input: -SBT -output: -MeikyuKingdom : 探索休憩表(7) > この部屋はなぜか落ち着く。もしもその部屋の中にあなたの好きなものがあれば《気力》を(1d6)点回復することができる -rand:6/6,1/6 -============================ -input: -SBT -output: -MeikyuKingdom : 探索休憩表(9) > 白骨化した先客の死体が見つかる。使えそうな装備はありがたく頂戴しておこう。[探索/11]の判定に成功したら、コモンアイテムのカテゴリの中から好きなものを1つ選び、そのカテゴリのアイテムをランダムで1個手に入れる -rand:4/6,5/6 -============================ -input: -SBT -output: -MeikyuKingdom : 探索休憩表(3) > 寝床を探していたらアルコープの奥の宝箱を見つける。[探索/11]の判定に成功したら好きな素材1種類を(1d6)個手に入れる -rand:1/6,2/6 -============================ -input: -SBT -output: -MeikyuKingdom : 探索休憩表(10) > 星の灯りで地図を眺める…部屋の構造からして、この辺りに何かありそうだ。[探索/10]の判定に成功すると、この部屋に仕掛けられたイベント型のトラップを全て発見する -rand:4/6,6/6 -============================ -input: -SBT -output: -MeikyuKingdom : 探索休憩表(4) > 一眠りしたら夢の中で…。[探索/11]の判定に成功したら、好きな部屋のモンスターの名前とトラップの数をGMから教えてもらえる -rand:3/6,1/6 -============================ -input: -SBT -output: -MeikyuKingdom : 探索休憩表(11) > 休んでいる間にトイレにいきたくなった。[探索/11]の判定に成功すると、迷宮のほころびを見つける。このゲームの間、この部屋から迷宮の外へ帰還することができる -rand:5/6,6/6 -============================ -input: -VBT -output: -MeikyuKingdom : 武勇休憩表(5) > 部屋の隅に隠れていた怪物が襲いかかってきた。[武勇/10]の判定に成功すると怪物を追い払い《民の声》+1。失敗すると自分の《配下》-(1d6)、《民の声》-1 -rand:4/6,1/6 -============================ -input: -VBT -output: -MeikyuKingdom : 武勇休憩表(11) > 怪物のいた痕跡を発見する。[武勇/11]の判定を行い、成功するとGMからこのゲームで遭遇する予定の、まだ種類の分かっていないモンスターを1種類教えてもらえる -rand:5/6,6/6 -============================ -input: -VBT -output: -MeikyuKingdom : 武勇休憩表(7) > 実力を付けてきたアイツへとドス黒い気持ちがわき上がる。好きなキャラ1体を選び、そのキャラへの《敵意》+1 -rand:5/6,2/6 -============================ -input: -VBT -output: -MeikyuKingdom : 武勇休憩表(12) > 殺気に反応し飛び起きた!ランダムエンカウント表でモンスターを決定し戦闘を行う。そのモンスターを倒した後、ランダムにレアアイテム1個を手に入れる -rand:6/6,6/6 -============================ -input: -VBT -output: -MeikyuKingdom : 武勇休憩表(3) > もっと敵と戦いたい、血に飢えた自分を発見する。[武勇/11]の判定に成功すると《気力》が1点、《HP》が(1d6)点回復する -rand:2/6,1/6 -============================ -input: -VBT -output: -MeikyuKingdom : 武勇休憩表(6) > あいつの短剣がきみの横をかすめて毒蛇を追い払う。好きなキャラ1体を選び、そのキャラに対する《敵意》の分だけ《好意》を上昇させ、その後《敵意》を0にする -rand:3/6,3/6 -============================ -input: -VBT -output: -MeikyuKingdom : 武勇休憩表(7) > 実力を付けてきたアイツへとドス黒い気持ちがわき上がる。好きなキャラ1体を選び、そのキャラへの《敵意》+1 -rand:1/6,6/6 -============================ -input: -VBT -output: -MeikyuKingdom : 武勇休憩表(8) > ちょっとした行き違いから軽い口論になる。宮廷内からランダムにキャラ1体を選び、そのキャラとあなたの互いへの《敵意》+1 -rand:3/6,5/6 -============================ -input: -VBT -output: -MeikyuKingdom : 武勇休憩表(5) > 部屋の隅に隠れていた怪物が襲いかかってきた。[武勇/10]の判定に成功すると怪物を追い払い《民の声》+1。失敗すると自分の《配下》-(1d6)、《民の声》-1 -rand:4/6,1/6 -============================ -input: -VBT -output: -MeikyuKingdom : 武勇休憩表(5) > 部屋の隅に隠れていた怪物が襲いかかってきた。[武勇/10]の判定に成功すると怪物を追い払い《民の声》+1。失敗すると自分の《配下》-(1d6)、《民の声》-1 -rand:4/6,1/6 -============================ -input: -FBT -output: -MeikyuKingdom : お祭り休憩表(5) > あー。早く帰って、お祭りを楽しみたーい! この時点でキャンプを終了し、すぐに次の部屋へ移動すれば、このクォーターは、時間の経過が起こらない -rand:1/6,4/6 -============================ -input: -FBT -output: -MeikyuKingdom : お祭り休憩表(5) > あー。早く帰って、お祭りを楽しみたーい! この時点でキャンプを終了し、すぐに次の部屋へ移動すれば、このクォーターは、時間の経過が起こらない -rand:1/6,4/6 -============================ -input: -FBT -output: -MeikyuKingdom : お祭り休憩表(5) > あー。早く帰って、お祭りを楽しみたーい! この時点でキャンプを終了し、すぐに次の部屋へ移動すれば、このクォーターは、時間の経過が起こらない -rand:1/6,4/6 -============================ -input: -FBT -output: -MeikyuKingdom : お祭り休憩表(2) > お祭りに向かう旅人たちとすれ違う。1D6MGが手に入る【宿屋】か【夜店】があれば、さらにもう1D6MGが手に入る -rand:1/6,1/6 -============================ -input: -FBT -output: -MeikyuKingdom : お祭り休憩表(7) > 雰囲気がいつもと違うせいかな。なんかあの人がステキに見える。好きなキャラクター1人を選ぶ。そのキャラクターへの《好意》を1点上げる -rand:6/6,1/6 -============================ -input: -FBT -output: -MeikyuKingdom : お祭り休憩表(10) > せっかくお祭りなんだし、肩肘はってないで、ノリノリでGO!! このゲーム中は食事をするたびに《民の声》が1点回復する -rand:5/6,5/6 -============================ -input: -FBT -output: -MeikyuKingdom : お祭り休憩表(5) > あー。早く帰って、お祭りを楽しみたーい! この時点でキャンプを終了し、すぐに次の部屋へ移動すれば、このクォーターは、時間の経過が起こらない -rand:4/6,1/6 -============================ -input: -FBT -output: -MeikyuKingdom : お祭り休憩表(2) > お祭りに向かう旅人たちとすれ違う。1D6MGが手に入る【宿屋】か【夜店】があれば、さらにもう1D6MGが手に入る -rand:1/6,1/6 -============================ -input: -FBT -output: -MeikyuKingdom : お祭り休憩表(12) > みんなのワクワクがアイテムに乗り移った? ランダムに自分のアイテムスロット1つを選ぶ。そこにレベルのあるアイテムがあった場合、そのレベルが1上がる -rand:6/6,6/6 -============================ -input: -FBT -output: -MeikyuKingdom : お祭り休憩表(4) > 「そういえば、国のみんなが何かいってたなぁ……」回想シーン。好きな散策表を1つ選び、2D6を振る。表に照らし合わせた結果を処理する -rand:3/6,1/6 -============================ -input: -THT -output: -MeikyuKingdom : 才覚ハプニング表(3) > 国王の威信が問われる。(2d6)を振り、その値が[《民の声》+宮廷全員の国王に対する《好意》の合計]以上の場合、《民の声》-(1d6)し、さらに才覚ハプニング表を振る -rand:1/6,2/6 -============================ -input: -THT -output: -MeikyuKingdom : 才覚ハプニング表(9) > 王国の経済に破綻の危機が。[生活レベル/9+現在の経過ターン数]の判定に失敗すると維持費+(1d6)MG -rand:6/6,3/6 -============================ -input: -THT -output: -MeikyuKingdom : 才覚ハプニング表(4) > 思考に霧の帳が降りる。「散漫」のバッドステータスを受ける -rand:3/6,1/6 -============================ -input: -THT -output: -MeikyuKingdom : 才覚ハプニング表(4) > 思考に霧の帳が降りる。「散漫」のバッドステータスを受ける -rand:1/6,3/6 -============================ -input: -THT -output: -MeikyuKingdom : 才覚ハプニング表(3) > 国王の威信が問われる。(2d6)を振り、その値が[《民の声》+宮廷全員の国王に対する《好意》の合計]以上の場合、《民の声》-(1d6)し、さらに才覚ハプニング表を振る -rand:1/6,2/6 -============================ -input: -THT -output: -MeikyuKingdom : 才覚ハプニング表(4) > 思考に霧の帳が降りる。「散漫」のバッドステータスを受ける -rand:3/6,1/6 -============================ -input: -THT -output: -MeikyuKingdom : 才覚ハプニング表(10) > この区画一体の迷宮化が激しくなる。1クォーターが経過する -rand:4/6,6/6 -============================ -input: -THT -output: -MeikyuKingdom : 才覚ハプニング表(10) > この区画一体の迷宮化が激しくなる。1クォーターが経過する -rand:6/6,4/6 -============================ -input: -THT -output: -MeikyuKingdom : 才覚ハプニング表(8) > あなたの失策が噂になる。近隣の国の中からランダムで1つ選ぶ。その国との関係が1段階悪化する -rand:6/6,2/6 -============================ -input: -THT -output: -MeikyuKingdom : 才覚ハプニング表(6) > この人についていっていいのだろうか…?宮廷全員のあなたに対する《好意》-1(最低0)。その結果、誰かの《好意》が0になると《民の声》-1 -rand:2/6,4/6 -============================ -input: -CHT -output: -MeikyuKingdom : 魅力ハプニング表(3) > 何気ない一言が不和の種に…。好きなキャラ1人を選び、宮廷全員のそのキャラに対する《敵意》+1 -rand:2/6,1/6 -============================ -input: -CHT -output: -MeikyuKingdom : 魅力ハプニング表(4) > あなたの美しさに嫉妬した迷宮が、あなたの姿を変える。「呪い」のバッドステータスを受ける -rand:3/6,1/6 -============================ -input: -CHT -output: -MeikyuKingdom : 魅力ハプニング表(5) > かわいさ余って憎さ百倍。あなたに対する《好意》が最も高いキャラを1人選ぶ。そのキャラに対する《好意》の分だけそのキャラへの《敵意》を上昇させ、その後《好意》を0にする -rand:3/6,2/6 -============================ -input: -CHT -output: -MeikyuKingdom : 魅力ハプニング表(3) > 何気ない一言が不和の種に…。好きなキャラ1人を選び、宮廷全員のそのキャラに対する《敵意》+1 -rand:2/6,1/6 -============================ -input: -CHT -output: -MeikyuKingdom : 魅力ハプニング表(5) > かわいさ余って憎さ百倍。あなたに対する《好意》が最も高いキャラを1人選ぶ。そのキャラに対する《好意》の分だけそのキャラへの《敵意》を上昇させ、その後《好意》を0にする -rand:1/6,4/6 -============================ -input: -CHT -output: -MeikyuKingdom : 魅力ハプニング表(4) > あなたの美しさに嫉妬した迷宮が、あなたの姿を変える。「呪い」のバッドステータスを受ける -rand:2/6,2/6 -============================ -input: -CHT -output: -MeikyuKingdom : 魅力ハプニング表(11) > あなたの恋人だという異性が現れる。宮廷全員のあなたに対する《好意》を比べ、最も高いキャラ1人を選ぶ。あなたはそのキャラの[武勇]と同じだけ《HP》を減少させる -rand:5/6,6/6 -============================ -input: -CHT -output: -MeikyuKingdom : 魅力ハプニング表(8) > 宮廷に嫉妬の嵐が巻き起こる。宮廷の中で、あなたに対して愛情を持つキャラクターの数を数える。このゲームの間、行為判定を行うとき、ダイス目の合計がこの値以下なら絶対失敗となる(最低2) -rand:2/6,6/6 -============================ -input: -CHT -output: -MeikyuKingdom : 魅力ハプニング表(5) > かわいさ余って憎さ百倍。あなたに対する《好意》が最も高いキャラを1人選ぶ。そのキャラに対する《好意》の分だけそのキャラへの《敵意》を上昇させ、その後《好意》を0にする -rand:3/6,2/6 -============================ -input: -CHT -output: -MeikyuKingdom : 魅力ハプニング表(5) > かわいさ余って憎さ百倍。あなたに対する《好意》が最も高いキャラを1人選ぶ。そのキャラに対する《好意》の分だけそのキャラへの《敵意》を上昇させ、その後《好意》を0にする -rand:4/6,1/6 -============================ -input: -SHT -output: -MeikyuKingdom : 探索ハプニング表(3) > 流れ星に直撃。《HP》-(1d6) -rand:2/6,1/6 -============================ -input: -SHT -output: -MeikyuKingdom : 探索ハプニング表(7) > カーネルが活性化しトラップが強化される。このゲームの間、トラップを解除するための難易度+1 -rand:4/6,3/6 -============================ -input: -SHT -output: -MeikyuKingdom : 探索ハプニング表(9) > 敵の迷宮化攻撃!宮廷全員は[探索/11]を行い、失敗したキャラは(2d6)点のダメージを受ける -rand:3/6,6/6 -============================ -input: -SHT -output: -MeikyuKingdom : 探索ハプニング表(10) > つい出来心から国費に手を出してしまう。GMは好きなコモンアイテム1つを選ぶ。あなたはそのアイテムを手に入れるが、維持費+(1d6)MG、《民の声》-1。同じ部屋のPCは《希望》1点を消費して[探索/9]の判定に成功すれば、それを止めることができる -rand:6/6,4/6 -============================ -input: -SHT -output: -MeikyuKingdom : 探索ハプニング表(7) > カーネルが活性化しトラップが強化される。このゲームの間、トラップを解除するための難易度+1 -rand:5/6,2/6 -============================ -input: -SHT -output: -MeikyuKingdom : 探索ハプニング表(10) > つい出来心から国費に手を出してしまう。GMは好きなコモンアイテム1つを選ぶ。あなたはそのアイテムを手に入れるが、維持費+(1d6)MG、《民の声》-1。同じ部屋のPCは《希望》1点を消費して[探索/9]の判定に成功すれば、それを止めることができる -rand:5/6,5/6 -============================ -input: -SHT -output: -MeikyuKingdom : 探索ハプニング表(4) > 敵の過去を知り、同情してしまう。あなたのこのマップの支配者に対する《好意》+1。このゲームの間、《好意》を持ったキャラに対して攻撃を行い、絶対失敗した場合そのキャラへの《好意》と同じだけ《気力》が減少する -rand:1/6,3/6 -============================ -input: -SHT -output: -MeikyuKingdom : 探索ハプニング表(8) > 友情にヒビが!宮廷全員のあなたに対する《好意》-1(最低0)、《敵意》+1 -rand:3/6,5/6 -============================ -input: -SHT -output: -MeikyuKingdom : 探索ハプニング表(4) > 敵の過去を知り、同情してしまう。あなたのこのマップの支配者に対する《好意》+1。このゲームの間、《好意》を持ったキャラに対して攻撃を行い、絶対失敗した場合そのキャラへの《好意》と同じだけ《気力》が減少する -rand:1/6,3/6 -============================ -input: -SHT -output: -MeikyuKingdom : 探索ハプニング表(4) > 敵の過去を知り、同情してしまう。あなたのこのマップの支配者に対する《好意》+1。このゲームの間、《好意》を持ったキャラに対して攻撃を行い、絶対失敗した場合そのキャラへの《好意》と同じだけ《気力》が減少する -rand:2/6,2/6 -============================ -input: -VHT -output: -MeikyuKingdom : 武勇ハプニング表(3) > 不意打ちを食らう。ランダムエンカウントが発生し、奇襲扱いで戦闘を行う -rand:1/6,2/6 -============================ -input: -VHT -output: -MeikyuKingdom : 武勇ハプニング表(10) > 不意に絶望と虚無感が襲い、心が折れる。宮廷全員の《気力》-1 -rand:4/6,6/6 -============================ -input: -VHT -output: -MeikyuKingdom : 武勇ハプニング表(4) > 配下の期待が、あなたの重荷となる。[現在の《民の声》-(1d6)]だけ《気力》が減少する -rand:2/6,2/6 -============================ -input: -VHT -output: -MeikyuKingdom : 武勇ハプニング表(9) > 古傷が痛み出す。このゲームの間、戦闘で、あなたに対する敵の攻撃が成功すると、常に余分に1点ダメージを受ける -rand:3/6,6/6 -============================ -input: -VHT -output: -MeikyuKingdom : 武勇ハプニング表(3) > 不意打ちを食らう。ランダムエンカウントが発生し、奇襲扱いで戦闘を行う -rand:1/6,2/6 -============================ -input: -VHT -output: -MeikyuKingdom : 武勇ハプニング表(4) > 配下の期待が、あなたの重荷となる。[現在の《民の声》-(1d6)]だけ《気力》が減少する -rand:2/6,2/6 -============================ -input: -VHT -output: -MeikyuKingdom : 武勇ハプニング表(6) > ムカついたので思わず殴る。自分の《敵意》が最も高いキャラからランダムに1体選び、そのキャラの《HP》が自分の[武勇]と同じだけ減少する -rand:5/6,1/6 -============================ -input: -VHT -output: -MeikyuKingdom : 武勇ハプニング表(8) > 豚どもめ…。宮廷全員に対する《敵意》+1 -rand:5/6,3/6 -============================ -input: -VHT -output: -MeikyuKingdom : 武勇ハプニング表(6) > ムカついたので思わず殴る。自分の《敵意》が最も高いキャラからランダムに1体選び、そのキャラの《HP》が自分の[武勇]と同じだけ減少する -rand:5/6,1/6 -============================ -input: -VHT -output: -MeikyuKingdom : 武勇ハプニング表(8) > 豚どもめ…。宮廷全員に対する《敵意》+1 -rand:6/6,2/6 -============================ -input: -KDT -output: -MeikyuKingdom : 王国災厄表(6) > 敵国のテロが横行する。[治安レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、ランダムに施設を1軒失う -rand:1/6,5/6 -============================ -input: -KDT -output: -MeikyuKingdom : 王国災厄表(5) > 自国の迷宮化が進行する。自国の領土のマップ数と等しい値だけ維持費が上昇する -rand:4/6,1/6 -============================ -input: -KDT -output: -MeikyuKingdom : 王国災厄表(8) > 敵国の陰謀。[文化レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、ランダムに逸材を1人失う -rand:6/6,2/6 -============================ -input: -KDT -output: -MeikyuKingdom : 王国災厄表(5) > 自国の迷宮化が進行する。自国の領土のマップ数と等しい値だけ維持費が上昇する -rand:1/6,4/6 -============================ -input: -KDT -output: -MeikyuKingdom : 王国災厄表(8) > 敵国の陰謀。[文化レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、ランダムに逸材を1人失う -rand:4/6,4/6 -============================ -input: -KDT -output: -MeikyuKingdom : 王国災厄表(12) > 敵国の勢力が強大化する。GMは、関係が敵対の国全てについて、その国の領土に接する土地を1つ選び、その土地をその国の領土にする -rand:6/6,6/6 -============================ -input: -KDT -output: -MeikyuKingdom : 王国災厄表(6) > 敵国のテロが横行する。[治安レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、ランダムに施設を1軒失う -rand:4/6,2/6 -============================ -input: -KDT -output: -MeikyuKingdom : 王国災厄表(11) > 局地的な迷宮津波が発生。ランダムに自国の領土1つを選び、既知の土地の中からランダムに選んだ場所と場所を入れ替える -rand:6/6,5/6 -============================ -input: -KDT -output: -MeikyuKingdom : 王国災厄表(2) > 王国の悪い噂が蔓延する。既知の土地にある他国との関係が全て1段階悪化する -rand:1/6,1/6 -============================ -input: -KDT -output: -MeikyuKingdom : 王国災厄表(9) > 食糧危機。《民》-(2d6)。王国にある「肉」の素材を1個消費する度に、《民》の減少を1人抑えることができる -rand:3/6,6/6 -============================ -input: -KCT -output: -MeikyuKingdom : 王国変動表(9) > 街の機能に異変が!?[治安レベル/敵対国数×2+険悪国数+9]の判定に成功すると、自国の好きな施設1軒を選び、その施設の隣でかつ通路がつながっている部屋に同じ種類の施設がもう1軒できる。失敗したら、自国のタイプ:部屋の施設を1軒選び、破壊する -rand:4/6,5/6 -============================ -input: -KCT -output: -MeikyuKingdom : 王国変動表(9) > 街の機能に異変が!?[治安レベル/敵対国数×2+険悪国数+9]の判定に成功すると、自国の好きな施設1軒を選び、その施設の隣でかつ通路がつながっている部屋に同じ種類の施設がもう1軒できる。失敗したら、自国のタイプ:部屋の施設を1軒選び、破壊する -rand:6/6,3/6 -============================ -input: -KCT -output: -MeikyuKingdom : 王国変動表(5) > 民の労働の結果が明らかに。[生活レベル/敵対国数×2+険悪国数+9]の判定に成功すると《予算》が自国の領土のマップ数と同じだけ増える。失敗したら《予算》が同じだけ減る -rand:4/6,1/6 -============================ -input: -KCT -output: -MeikyuKingdom : 王国変動表(5) > 民の労働の結果が明らかに。[生活レベル/敵対国数×2+険悪国数+9]の判定に成功すると《予算》が自国の領土のマップ数と同じだけ増える。失敗したら《予算》が同じだけ減る -rand:1/6,4/6 -============================ -input: -KCT -output: -MeikyuKingdom : 王国変動表(3) > 冒険の成功を祝う民たちが出迎えてくれる。《民の声》+2。この結果を出したプレイヤー(以下、当PL)以外の全員は、今回の冒険を振り返り当PLのPCが《好意》を得るとしたら誰が一番ふさわしいかを協議する。決定したキャラへの当PLのPCの《好意》+1 -rand:1/6,2/6 -============================ -input: -KCT -output: -MeikyuKingdom : 王国変動表(6) > 民は領土を渇望していた。5MGを支払えば、隣接する未知の土地1つを領土にできる。(1d6)を振り、その数だけ通路を引くことができる。通路でつながっていない部屋は自国の領土として扱わない -rand:2/6,4/6 -============================ -input: -KCT -output: -MeikyuKingdom : 王国変動表(8) > あなたの活躍を耳にした者たちがやってくる。シナリオの目的を満たしている場合、関係が良好・同盟の国の数だけ(1d6)を振り、[合計値+治安レベル]人だけ《民》が増える -rand:5/6,3/6 -============================ -input: -KCT -output: -MeikyuKingdom : 王国変動表(5) > 民の労働の結果が明らかに。[生活レベル/敵対国数×2+険悪国数+9]の判定に成功すると《予算》が自国の領土のマップ数と同じだけ増える。失敗したら《予算》が同じだけ減る -rand:3/6,2/6 -============================ -input: -KCT -output: -MeikyuKingdom : 王国変動表(6) > 民は領土を渇望していた。5MGを支払えば、隣接する未知の土地1つを領土にできる。(1d6)を振り、その数だけ通路を引くことができる。通路でつながっていない部屋は自国の領土として扱わない -rand:4/6,2/6 -============================ -input: -KCT -output: -MeikyuKingdom : 王国変動表(2) > 列強のプロパガンダが現れる。(1d6)を振り、その目が現在の《民の声》以下で、現在列強の属国になっていたら属国から抜けることができる。上回っていたら、ランダムに列強を1つ選びその属国になる -rand:1/6,1/6 -============================ -input: -KMT -output: -MeikyuKingdom : 王国変動失敗表(10) > 王国同士の交流が行われた。[文化レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、自国の逸材1人を選んで失い、ランダムに決めた国1つとの関係が1段階悪化する -rand:4/6,6/6 -============================ -input: -KMT -output: -MeikyuKingdom : 王国変動失敗表(6) > 他国の使者がやってくる。基地の土地欄の中からランダムに自国以外の国を1つ選ぶ。その国の領土のマップ数を等しい《予算》を消費するとその国との関係が1段階よくなる。消費しないと1段階悪くなる -rand:3/6,3/6 -============================ -input: -KMT -output: -MeikyuKingdom : 王国変動失敗表(12) > 民の意識が大きく揺れる。(1d6)を振り、その目が現在の《民の声》を上回っていたら、好きな国力が1点減少する -rand:6/6,6/6 -============================ -input: -KMT -output: -MeikyuKingdom : 王国変動失敗表(8) > 過ぎゆく時が王政を帰る。基地の土地欄の中から、経過したターン数と等しい数までランダムに他国を選ぶ。GMは、その国に面する未知の土地1つを選び、それをその国の新たな領土とする。(周囲に未知の土地がない場合は増やせない) -rand:2/6,6/6 -============================ -input: -KMT -output: -MeikyuKingdom : 王国変動失敗表(11) > ただ、無為に時が過ぎていたわけではない。迷宮フェイズで過ごした1ターンにつき《予算》が1MG増える -rand:6/6,5/6 -============================ -input: -KMT -output: -MeikyuKingdom : 王国変動失敗表(8) > 過ぎゆく時が王政を帰る。基地の土地欄の中から、経過したターン数と等しい数までランダムに他国を選ぶ。GMは、その国に面する未知の土地1つを選び、それをその国の新たな領土とする。(周囲に未知の土地がない場合は増やせない) -rand:5/6,3/6 -============================ -input: -KMT -output: -MeikyuKingdom : 王国変動失敗表(6) > 他国の使者がやってくる。基地の土地欄の中からランダムに自国以外の国を1つ選ぶ。その国の領土のマップ数を等しい《予算》を消費するとその国との関係が1段階よくなる。消費しないと1段階悪くなる -rand:4/6,2/6 -============================ -input: -KMT -output: -MeikyuKingdom : 王国変動失敗表(10) > 王国同士の交流が行われた。[文化レベル/敵対国数×2+険悪国数+9]の判定に失敗すると、自国の逸材1人を選んで失い、ランダムに決めた国1つとの関係が1段階悪化する -rand:4/6,6/6 -============================ -input: -KMT -output: -MeikyuKingdom : 王国変動失敗表(2) > 列強のプロパガンダが現れる。(1d6)を振り、その目が現在の《民の声》を上回っていたら、ランダムに列強1つを選びその属国になる -rand:1/6,1/6 -============================ -input: -KMT -output: -MeikyuKingdom : 王国変動失敗表(9) > 街の機能に異変が!?[治安レベル/敵対国数×2+険悪国数+9]の判定に失敗したら、自国のタイプ:部屋の施設を1軒選び、破壊する -rand:4/6,5/6 -============================ -input: -CAT -output: -MeikyuKingdom : 痛打表(5) > 乾坤一擲!攻撃の威力が2倍になる -rand:2/6,3/6 -============================ -input: -CAT -output: -MeikyuKingdom : 痛打表(9) > あと1歩まで追いつめる。ダメージを与える代わりに、攻撃目標の残り《HP》を(1d6)点にすることができる -rand:5/6,4/6 -============================ -input: -CAT -output: -MeikyuKingdom : 痛打表(8) > 相手の勢いを利用した一撃。攻撃の威力が攻撃目標のレベルと同じだけ上昇する -rand:5/6,3/6 -============================ -input: -CAT -output: -MeikyuKingdom : 痛打表(7) > 会心の一撃!攻撃の威力+(1d6) -rand:3/6,4/6 -============================ -input: -CAT -output: -MeikyuKingdom : 痛打表(8) > 相手の勢いを利用した一撃。攻撃の威力が攻撃目標のレベルと同じだけ上昇する -rand:2/6,6/6 -============================ -input: -CAT -output: -MeikyuKingdom : 痛打表(11) > 怒りの一撃!攻撃の威力+(2d6) -rand:6/6,5/6 -============================ -input: -CAT -output: -MeikyuKingdom : 痛打表(7) > 会心の一撃!攻撃の威力+(1d6) -rand:2/6,5/6 -============================ -input: -CAT -output: -MeikyuKingdom : 痛打表(8) > 相手の勢いを利用した一撃。攻撃の威力が攻撃目標のレベルと同じだけ上昇する -rand:4/6,4/6 -============================ -input: -CAT -output: -MeikyuKingdom : 痛打表(3) > 電光石火の一撃。攻撃の処理が終了したあと、もう一度行動できる -rand:2/6,1/6 -============================ -input: -CAT -output: -MeikyuKingdom : 痛打表(7) > 会心の一撃!攻撃の威力+(1d6) -rand:2/6,5/6 -============================ -input: -FWT -output: -MeikyuKingdom : 致命傷表(8) > 偶然アイテムに身を守られる。ランダムにアイテムを選び、そのアイテムを破壊してダメージを無効化する。破壊できるアイテムを1個も装備していない場合、行動不能になる -rand:5/6,3/6 -============================ -input: -FWT -output: -MeikyuKingdom : 致命傷表(11) > 精神力だけで耐える。[武勇/9-現在の《HP》]の判定に成功すると《HP》が1になる。失敗すると行動不能になる -rand:5/6,6/6 -============================ -input: -FWT -output: -MeikyuKingdom : 致命傷表(10) > 根性で跳ね返す。[探索/9-現在の《HP》]の判定に成功すると《HP》が1になる。失敗すると行動不能になる -rand:6/6,4/6 -============================ -input: -FWT -output: -MeikyuKingdom : 致命傷表(11) > 精神力だけで耐える。[武勇/9-現在の《HP》]の判定に成功すると《HP》が1になる。失敗すると行動不能になる -rand:6/6,5/6 -============================ -input: -FWT -output: -MeikyuKingdom : 致命傷表(7) > 意識を失う。行動不能になる -rand:4/6,3/6 -============================ -input: -FWT -output: -MeikyuKingdom : 致命傷表(4) > 出血多量で昏睡する。行動不能になる。この戦闘が終了するまでに《HP》を1以上にしないと死亡する -rand:2/6,2/6 -============================ -input: -FWT -output: -MeikyuKingdom : 致命傷表(6) > 重傷を負い昏睡する。行動不能になる。(1d6)クォーターが経過するまでに《HP》を1以上にしないと死亡する -rand:1/6,5/6 -============================ -input: -FWT -output: -MeikyuKingdom : 致命傷表(6) > 重傷を負い昏睡する。行動不能になる。(1d6)クォーターが経過するまでに《HP》を1以上にしないと死亡する -rand:4/6,2/6 -============================ -input: -FWT -output: -MeikyuKingdom : 致命傷表(7) > 意識を失う。行動不能になる -rand:3/6,4/6 -============================ -input: -FWT -output: -MeikyuKingdom : 致命傷表(8) > 偶然アイテムに身を守られる。ランダムにアイテムを選び、そのアイテムを破壊してダメージを無効化する。破壊できるアイテムを1個も装備していない場合、行動不能になる -rand:2/6,6/6 -============================ -input: -CFT -output: -MeikyuKingdom : 戦闘ファンブル表(5) > つい仲間と口論になる。自軍の未行動キャラの中からランダムに1体選び、行動済みにする -rand:4/6,1/6 -============================ -input: -CFT -output: -MeikyuKingdom : 戦闘ファンブル表(4) > 勢い余って仲間を攻撃!自分の居るエリアからランダムに自軍のキャラを1体選び、そのキャラに使用している武器と同じ威力のダメージを与える -rand:2/6,2/6 -============================ -input: -CFT -output: -MeikyuKingdom : 戦闘ファンブル表(11) > 空を切った攻撃に絶望する。自分と、自分に対して1点以上《好意》を持ったキャラ全員の《気力》-1。モンスター側の場合、自分に(1d6)ダメージ -rand:6/6,5/6 -============================ -input: -CFT -output: -MeikyuKingdom : 戦闘ファンブル表(9) > アイテムを落とした。自分が装備しているアイテムからランダムに1個選び、破壊する。モンスター側の場合、自分に(1d6)ダメージ -rand:4/6,5/6 -============================ -input: -CFT -output: -MeikyuKingdom : 戦闘ファンブル表(4) > 勢い余って仲間を攻撃!自分の居るエリアからランダムに自軍のキャラを1体選び、そのキャラに使用している武器と同じ威力のダメージを与える -rand:3/6,1/6 -============================ -input: -CFT -output: -MeikyuKingdom : 戦闘ファンブル表(9) > アイテムを落とした。自分が装備しているアイテムからランダムに1個選び、破壊する。モンスター側の場合、自分に(1d6)ダメージ -rand:6/6,3/6 -============================ -input: -CFT -output: -MeikyuKingdom : 戦闘ファンブル表(11) > 空を切った攻撃に絶望する。自分と、自分に対して1点以上《好意》を持ったキャラ全員の《気力》-1。モンスター側の場合、自分に(1d6)ダメージ -rand:5/6,6/6 -============================ -input: -CFT -output: -MeikyuKingdom : 戦闘ファンブル表(7) > 自分を傷つけてしまう。自分に(1d6)ダメージ -rand:1/6,6/6 -============================ -input: -CFT -output: -MeikyuKingdom : 戦闘ファンブル表(8) > 攻撃の勢いを逆に利用される。自分の《HP》を現在値の半分にする -rand:5/6,3/6 -============================ -input: -CFT -output: -MeikyuKingdom : 戦闘ファンブル表(8) > 攻撃の勢いを逆に利用される。自分の《HP》を現在値の半分にする -rand:5/6,3/6 -============================ -input: -TT -output: -MeikyuKingdom : 道中表(8) > モンスターの襲撃を受けた。全員[武勇/9]の判定を行い、失敗したキャラは《HP》が(1d6)点減少する -rand:2/6,6/6 -============================ -input: -TT -output: -MeikyuKingdom : 道中表(8) > モンスターの襲撃を受けた。全員[武勇/9]の判定を行い、失敗したキャラは《HP》が(1d6)点減少する -rand:2/6,6/6 -============================ -input: -TT -output: -MeikyuKingdom : 道中表(4) > 辺りが闇に包まれる。宮廷の中からランダムにキャラを選ぶ。そのキャラが【星の欠片】を持っていたら、それが1個破壊される -rand:1/6,3/6 -============================ -input: -TT -output: -MeikyuKingdom : 道中表(5) > 道に迷いそうになる。全員[才覚/9]の判定を行い、(1d6-成功したキャラ数)クォーター(最低0)、時間が経過する -rand:1/6,4/6 -============================ -input: -TT -output: -MeikyuKingdom : 道中表(10) > 周辺の迷宮化が進む。宮廷全員は、既知の土地の中からランダムに選んだ土地へ移動する -rand:5/6,5/6 -============================ -input: -TT -output: -MeikyuKingdom : 道中表(2) > 道中の時間が愛を育む。全員、好きなキャラ1体を選びそのキャラに対する《好意》+1 -rand:1/6,1/6 -============================ -input: -TT -output: -MeikyuKingdom : 道中表(8) > モンスターの襲撃を受けた。全員[武勇/9]の判定を行い、失敗したキャラは《HP》が(1d6)点減少する -rand:2/6,6/6 -============================ -input: -TT -output: -MeikyuKingdom : 道中表(8) > モンスターの襲撃を受けた。全員[武勇/9]の判定を行い、失敗したキャラは《HP》が(1d6)点減少する -rand:4/6,4/6 -============================ -input: -TT -output: -MeikyuKingdom : 道中表(4) > 辺りが闇に包まれる。宮廷の中からランダムにキャラを選ぶ。そのキャラが【星の欠片】を持っていたら、それが1個破壊される -rand:3/6,1/6 -============================ -input: -TT -output: -MeikyuKingdom : 道中表(9) > 恐ろしげな咆哮が響き渡る。全員[魅力/9]の判定を行い、失敗したキャラは《配下》が(1d6)人逃走し、自国へ帰る -rand:4/6,5/6 -============================ -input: -NT -output: -MeikyuKingdom : 交渉表(8) > 値踏みするようにこちらを見ている。維持費を(1d6)MG上昇させれば友好的になる。させなければ戦闘を行う -rand:2/6,6/6 -============================ -input: -NT -output: -MeikyuKingdom : 交渉表(2) > 中立的な態度は偽装だった。不意を打たれ、奇襲扱いで戦闘を行う -rand:1/6,1/6 -============================ -input: -NT -output: -MeikyuKingdom : 交渉表(6) > 趣味を聞かれた。好きな単語表1つを選びD66を振る。宮廷の中に、その項目を好きなものに指定しているキャラがいれば友好的になる。居なければ戦闘を行う -rand:3/6,3/6 -============================ -input: -NT -output: -MeikyuKingdom : 交渉表(11) > 一騎打ちを申し込んできた。宮廷の中から代表を1名選び、モンスターの中で最もレベルの高いものと1対1で戦闘を行う(配置は互いに前列)。勝利すれば友好的になる。敗北すれば、再び交渉するか戦闘するかを決断する。この一騎打ちに外野がスキルやアイテムで干渉すると全員で戦闘になる -rand:6/6,5/6 -============================ -input: -NT -output: -MeikyuKingdom : 交渉表(9) > 「何かいいもの」を要求された。モンスターの中で最もレベルが高いもののレベル以上の価格のアイテムを消費すれば友好的になる。レアアイテムは価格を+10して扱う。しなければ戦闘を行う -rand:3/6,6/6 -============================ -input: -NT -output: -MeikyuKingdom : 交渉表(7) > 物欲しそうにこちらを見ている。「肉」の素材(1d6)個か、【お弁当】または【フルコース】1個を消費すれば友好的になる。しなければ戦闘を行う -rand:2/6,5/6 -============================ -input: -NT -output: -MeikyuKingdom : 交渉表(9) > 「何かいいもの」を要求された。モンスターの中で最もレベルが高いもののレベル以上の価格のアイテムを消費すれば友好的になる。レアアイテムは価格を+10して扱う。しなければ戦闘を行う -rand:5/6,4/6 -============================ -input: -NT -output: -MeikyuKingdom : 交渉表(9) > 「何かいいもの」を要求された。モンスターの中で最もレベルが高いもののレベル以上の価格のアイテムを消費すれば友好的になる。レアアイテムは価格を+10して扱う。しなければ戦闘を行う -rand:4/6,5/6 -============================ -input: -NT -output: -MeikyuKingdom : 交渉表(11) > 一騎打ちを申し込んできた。宮廷の中から代表を1名選び、モンスターの中で最もレベルの高いものと1対1で戦闘を行う(配置は互いに前列)。勝利すれば友好的になる。敗北すれば、再び交渉するか戦闘するかを決断する。この一騎打ちに外野がスキルやアイテムで干渉すると全員で戦闘になる -rand:5/6,6/6 -============================ -input: -NT -output: -MeikyuKingdom : 交渉表(2) > 中立的な態度は偽装だった。不意を打たれ、奇襲扱いで戦闘を行う -rand:1/6,1/6 -============================ -input: -ET -output: -MeikyuKingdom : 感情表(1) > 忠誠/怒り -rand:1/6 -============================ -input: -ET -output: -MeikyuKingdom : 感情表(1) > 忠誠/怒り -rand:1/6 -============================ -input: -ET -output: -MeikyuKingdom : 感情表(5) > 愛情/侮蔑 -rand:5/6 -============================ -input: -ET -output: -MeikyuKingdom : 感情表(6) > 愛情/侮蔑 -rand:6/6 -============================ -input: -ET -output: -MeikyuKingdom : 感情表(3) > 友情/不信 -rand:3/6 -============================ -input: -ET -output: -MeikyuKingdom : 感情表(1) > 忠誠/怒り -rand:1/6 -============================ -input: -ET -output: -MeikyuKingdom : 感情表(5) > 愛情/侮蔑 -rand:5/6 -============================ -input: -ET -output: -MeikyuKingdom : 感情表(2) > 忠誠/怒り -rand:2/6 -============================ -input: -ET -output: -MeikyuKingdom : 感情表(4) > 友情/不信 -rand:4/6 -============================ -input: -ET -output: -MeikyuKingdom : 感情表(1) > 忠誠/怒り -rand:1/6 -============================ -input: -MPT -output: -MeikyuKingdom : 相場表(7) > 機械 -rand:5/6,2/6 -============================ -input: -MPT -output: -MeikyuKingdom : 相場表(7) > 機械 -rand:2/6,5/6 -============================ -input: -MPT -output: -MeikyuKingdom : 相場表(7) > 機械 -rand:4/6,3/6 -============================ -input: -MPT -output: -MeikyuKingdom : 相場表(8) > 衣料 -rand:5/6,3/6 -============================ -input: -MPT -output: -MeikyuKingdom : 相場表(4) > 牙 -rand:2/6,2/6 -============================ -input: -MPT -output: -MeikyuKingdom : 相場表(5) > 鉄 -rand:3/6,2/6 -============================ -input: -MPT -output: -MeikyuKingdom : 相場表(12) > 革 -rand:6/6,6/6 -============================ -input: -MPT -output: -MeikyuKingdom : 相場表(11) > 情報 -rand:6/6,5/6 -============================ -input: -MPT -output: -MeikyuKingdom : 相場表(6) > 魔素 -rand:3/6,3/6 -============================ -input: -MPT -output: -MeikyuKingdom : 相場表(12) > 革 -rand:6/6,6/6 -============================ -input: -T1T -output: -MeikyuKingdom : お宝1表(6) > 【お弁当】1個 -rand:6/6 -============================ -input: -T1T -output: -MeikyuKingdom : お宝1表(5) > そのモンスターの素材欄の中から、好きな素材3個 -rand:5/6 -============================ -input: -T1T -output: -MeikyuKingdom : お宝1表(6) > 【お弁当】1個 -rand:6/6 -============================ -input: -T1T -output: -MeikyuKingdom : お宝1表(3) > そのモンスターの素材欄の中から、好きな素材1個 -rand:3/6 -============================ -input: -T1T -output: -MeikyuKingdom : お宝1表(4) > そのモンスターの素材欄の中から、好きな素材2個 -rand:4/6 -============================ -input: -T1T -output: -MeikyuKingdom : お宝1表(5) > そのモンスターの素材欄の中から、好きな素材3個 -rand:5/6 -============================ -input: -T1T -output: -MeikyuKingdom : お宝1表(2) > 何も無し -rand:2/6 -============================ -input: -T1T -output: -MeikyuKingdom : お宝1表(2) > 何も無し -rand:2/6 -============================ -input: -T1T -output: -MeikyuKingdom : お宝1表(2) > 何も無し -rand:2/6 -============================ -input: -T1T -output: -MeikyuKingdom : お宝1表(3) > そのモンスターの素材欄の中から、好きな素材1個 -rand:3/6 -============================ -input: -T2T -output: -MeikyuKingdom : お宝2表(5) > ランダムに武具アイテム1個。レベルがあるアイテムなら1レベルのものが手に入る -rand:5/6 -============================ -input: -T2T -output: -MeikyuKingdom : お宝2表(1) > そのモンスターの素材欄の中から、好きな素材3個 -rand:1/6 -============================ -input: -T2T -output: -MeikyuKingdom : お宝2表(2) > そのモンスターの素材欄の中から、好きな素材4個 -rand:2/6 -============================ -input: -T2T -output: -MeikyuKingdom : お宝2表(2) > そのモンスターの素材欄の中から、好きな素材4個 -rand:2/6 -============================ -input: -T2T -output: -MeikyuKingdom : お宝2表(3) > そのモンスターの素材欄の中から、好きな素材5個 -rand:3/6 -============================ -input: -T2T -output: -MeikyuKingdom : お宝2表(4) > ランダムに回復アイテム1個 -rand:4/6 -============================ -input: -T2T -output: -MeikyuKingdom : お宝2表(4) > ランダムに回復アイテム1個 -rand:4/6 -============================ -input: -T2T -output: -MeikyuKingdom : お宝2表(4) > ランダムに回復アイテム1個 -rand:4/6 -============================ -input: -T2T -output: -MeikyuKingdom : お宝2表(4) > ランダムに回復アイテム1個 -rand:4/6 -============================ -input: -T2T -output: -MeikyuKingdom : お宝2表(2) > そのモンスターの素材欄の中から、好きな素材4個 -rand:2/6 -============================ -input: -T3T -output: -MeikyuKingdom : お宝3表(1) > そのモンスターの素材欄の中から、好きな素材5個 -rand:1/6 -============================ -input: -T3T -output: -MeikyuKingdom : お宝3表(6) > ランダムにレア武具アイテム1個 -rand:6/6 -============================ -input: -T3T -output: -MeikyuKingdom : お宝3表(1) > そのモンスターの素材欄の中から、好きな素材5個 -rand:1/6 -============================ -input: -T3T -output: -MeikyuKingdom : お宝3表(5) > ランダムにレア一般アイテム1個。レベルがあるアイテムなら1レベルのものが手に入る -rand:5/6 -============================ -input: -T3T -output: -MeikyuKingdom : お宝3表(2) > そのモンスターの素材欄の中から、好きな素材7個 -rand:2/6 -============================ -input: -T3T -output: -MeikyuKingdom : お宝3表(3) > そのモンスターの素材欄の中から、好きな素材10個 -rand:3/6 -============================ -input: -T3T -output: -MeikyuKingdom : お宝3表(6) > ランダムにレア武具アイテム1個 -rand:6/6 -============================ -input: -T3T -output: -MeikyuKingdom : お宝3表(2) > そのモンスターの素材欄の中から、好きな素材7個 -rand:2/6 -============================ -input: -T3T -output: -MeikyuKingdom : お宝3表(1) > そのモンスターの素材欄の中から、好きな素材5個 -rand:1/6 -============================ -input: -T3T -output: -MeikyuKingdom : お宝3表(5) > ランダムにレア一般アイテム1個。レベルがあるアイテムなら1レベルのものが手に入る -rand:5/6 -============================ -input: -T4T -output: -MeikyuKingdom : お宝4表(1) > そのモンスターの素材欄の中から、好きな素材5個 -rand:1/6 -============================ -input: -T4T -output: -MeikyuKingdom : お宝4表(1) > そのモンスターの素材欄の中から、好きな素材5個 -rand:1/6 -============================ -input: -T4T -output: -MeikyuKingdom : お宝4表(5) > ランダムにレア一般アイテム1個。レベルのあるアイテムなら2レベルのものが手に入る -rand:5/6 -============================ -input: -T4T -output: -MeikyuKingdom : お宝4表(6) > ランダムにレア武具アイテム1個。レベルのあるアイテムなら1レベルのものが手に入る -rand:6/6 -============================ -input: -T4T -output: -MeikyuKingdom : お宝4表(5) > ランダムにレア一般アイテム1個。レベルのあるアイテムなら2レベルのものが手に入る -rand:5/6 -============================ -input: -T4T -output: -MeikyuKingdom : お宝4表(3) > 好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個。レベルがあるアイテムなら2レベルのものが手に入る -rand:3/6 -============================ -input: -T4T -output: -MeikyuKingdom : お宝4表(2) > そのモンスターの素材欄の中から、好きな素材10個 -rand:2/6 -============================ -input: -T4T -output: -MeikyuKingdom : お宝4表(3) > 好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個。レベルがあるアイテムなら2レベルのものが手に入る -rand:3/6 -============================ -input: -T4T -output: -MeikyuKingdom : お宝4表(3) > 好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個。レベルがあるアイテムなら2レベルのものが手に入る -rand:3/6 -============================ -input: -T4T -output: -MeikyuKingdom : お宝4表(5) > ランダムにレア一般アイテム1個。レベルのあるアイテムなら2レベルのものが手に入る -rand:5/6 -============================ -input: -T5T -output: -MeikyuKingdom : お宝5表(1) > そのモンスターの素材欄の中から、好きな素材10個 -rand:1/6 -============================ -input: -T5T -output: -MeikyuKingdom : お宝5表(1) > そのモンスターの素材欄の中から、好きな素材10個 -rand:1/6 -============================ -input: -T5T -output: -MeikyuKingdom : お宝5表(4) > ランダムにレア一般アイテム1個。レベルのあるアイテムなら3レベルのものが手に入る -rand:4/6 -============================ -input: -T5T -output: -MeikyuKingdom : お宝5表(6) > 好きなレアアイテム1個 -rand:6/6 -============================ -input: -T5T -output: -MeikyuKingdom : お宝5表(1) > そのモンスターの素材欄の中から、好きな素材10個 -rand:1/6 -============================ -input: -T5T -output: -MeikyuKingdom : お宝5表(2) > そのモンスターの素材欄の中から、好きな素材15個 -rand:2/6 -============================ -input: -T5T -output: -MeikyuKingdom : お宝5表(2) > そのモンスターの素材欄の中から、好きな素材15個 -rand:2/6 -============================ -input: -T5T -output: -MeikyuKingdom : お宝5表(5) > ランダムにレア武具アイテム1個。レベルのあるアイテムなら2レベルのものが手に入る -rand:5/6 -============================ -input: -T5T -output: -MeikyuKingdom : お宝5表(5) > ランダムにレア武具アイテム1個。レベルのあるアイテムなら2レベルのものが手に入る -rand:5/6 -============================ -input: -T5T -output: -MeikyuKingdom : お宝5表(2) > そのモンスターの素材欄の中から、好きな素材15個 -rand:2/6 -============================ -input: -NAME -output: -MeikyuKingdom : 名前表(1) > [4,34,33]“かゆいところに手が届く”カノン/ファゴット -rand:4/6,4/6,3/6,3/6,3/6 -============================ -input: -NAME -output: -MeikyuKingdom : 名前表(1) > [6,35,15]“機会攻撃を誘発する”アンナタール/フォルトゥナ -rand:6/6,5/6,3/6,1/6,5/6 -============================ -input: -NAME -output: -MeikyuKingdom : 名前表(1) > [5,22,46]“噂をすれば”グレイ/スカーレット -rand:5/6,2/6,2/6,4/6,6/6 -============================ -input: -NAME -output: -MeikyuKingdom : 名前表(1) > [2,13,23]“据え膳食わぬは男の恥の”タスク/マニャーナ -rand:2/6,3/6,1/6,3/6,2/6 -============================ -input: -NAME -output: -MeikyuKingdom : 名前表(1) > [5,56,16]“佳人薄命”ルーブル/コットン -rand:5/6,6/6,5/6,1/6,6/6 -============================ -input: -NAME -output: -MeikyuKingdom : 名前表(1) > [1,55,26]“目に入れても痛くない”フラスコ/クリップ -rand:1/6,5/6,5/6,2/6,6/6 -============================ -input: -NAME -output: -MeikyuKingdom : 名前表(1) > [3,13,23]“据え膳食わぬは男の恥の”カンフー/インヤン -rand:3/6,3/6,1/6,2/6,3/6 -============================ -input: -NAME -output: -MeikyuKingdom : 名前表(1) > [6,13,25]“果報は寝て待つ”オズ/アリス -rand:6/6,1/6,3/6,5/6,2/6 -============================ -input: -NAME -output: -MeikyuKingdom : 名前表(1) > [3,46,33]“とかく浮世は色と酒の”好きな鉱物の名前(ルビィ,ヒスイ) -rand:3/6,6/6,4/6,3/6,3/6 -============================ -input: -NAME -output: -MeikyuKingdom : 名前表(1) > [1,14,45]“花も恥じらう”ダフニ/キノコ -rand:1/6,4/6,1/6,5/6,4/6 -============================ -input: -NAME2 -output: -MeikyuKingdom : 名前表(2) > [3,45,26]“目に入れても痛くない”好きな動物の名前(イタチ,パグ) [4,45,22]“すねに傷持つ”ウイロウ/カシュカシュ -rand:3/6,5/6,4/6,6/6,2/6,4/6,4/6,5/6,2/6,2/6 -============================ -input: -NAME2 -output: -MeikyuKingdom : 名前表(2) > [2,35,22]“喉から手が出る”スピーチカ/オレンジペコー [1,13,15]“石橋を叩いて渡る”クローバー/ダチュラ -rand:2/6,5/6,3/6,2/6,2/6,1/6,3/6,1/6,5/6,1/6 -============================ -input: -NAME2 -output: -MeikyuKingdom : 名前表(2) > [1,45,36]“天上天下唯我独尊”ウイロウ/カシュカシュ [4,13,25]“果報は寝て待つ”クローバー/ダチュラ -rand:1/6,5/6,4/6,3/6,6/6,4/6,3/6,1/6,2/6,5/6 -============================ -input: -NAME2 -output: -MeikyuKingdom : 名前表(2) > [2,22,26]“目に入れても痛くない”グレイ/スカーレット [2,22,35]“泣く子も黙る”グレイ/スカーレット -rand:2/6,2/6,2/6,6/6,2/6,2/6,2/6,2/6,3/6,5/6 -============================ -input: -NAME2 -output: -MeikyuKingdom : 名前表(2) > [1,23,56]“(ゲーム会場の地名)でも一、二を争う”バンブー/オリーブ [3,13,34]“当たるも八卦、当たらぬも八卦の”カンフー/インヤン -rand:1/6,2/6,3/6,5/6,6/6,3/6,1/6,3/6,3/6,4/6 -============================ -input: -NAME2 -output: -MeikyuKingdom : 名前表(2) > [5,66,22]“すねに傷持つ”シリング/シルク [6,13,56]“(好きな名前表)の子”オズ/アリス -rand:5/6,6/6,6/6,2/6,2/6,6/6,1/6,3/6,5/6,6/6 -============================ -input: -NAME2 -output: -MeikyuKingdom : 名前表(2) > [1,23,33]“とかく浮世は色と酒の”バンブー/オリーブ [2,23,55]“両手に花の”シュバルツ/モエギ -rand:1/6,3/6,2/6,3/6,3/6,2/6,3/6,2/6,5/6,5/6 -============================ -input: -NAME2 -output: -MeikyuKingdom : 名前表(2) > [4,34,16]“佳人薄命”カノン/ファゴット [2,23,13]“冗談にも程がある”シュバルツ/モエギ -rand:4/6,3/6,4/6,6/6,1/6,2/6,2/6,3/6,3/6,1/6 -============================ -input: -NAME2 -output: -MeikyuKingdom : 名前表(2) > [4,12,46]“噂をすれば”ホオズキ/アサガオ [3,46,25]“風に柳の”好きな鉱物の名前(ルビィ,ヒスイ) -rand:4/6,2/6,1/6,6/6,4/6,3/6,4/6,6/6,2/6,5/6 -============================ -input: -NAME2 -output: -MeikyuKingdom : 名前表(2) > [5,14,12]“七人の敵がいる”ウィンター/ジュノー [5,45,25]“果報は寝て待つ”デカスロン/ラクロス -rand:5/6,1/6,4/6,2/6,1/6,5/6,5/6,4/6,2/6,5/6 -============================ -input: -NAME10 -output: -MeikyuKingdom : 名前表(10) > [2,34,16]“一を聴いて十を知る”シーガロ/ココア [4,12,14]“われらが”ホオズキ/アサガオ [4,13,35]“蛇の道は蛇の”クローバー/ダチュラ [3,16,25]“風に柳の”ウパニシャッド/ゾルゲ [1,36,13]“冗談にも程がある”チューバ/オルガノ [2,46,66]カバディ/ピンポン6世 [4,23,13]“ドラゴンも裸足で逃げ出す”バンブー/オリーブ [5,13,56]“(好きな名前表)の子”タスク/マニャーナ [1,14,45]“花も恥じらう”ダフニ/キノコ [4,12,46]“噂をすれば”ホオズキ/アサガオ -rand:2/6,4/6,3/6,1/6,6/6,4/6,2/6,1/6,1/6,4/6,4/6,1/6,3/6,3/6,5/6,3/6,6/6,1/6,5/6,2/6,1/6,6/6,3/6,3/6,1/6,2/6,4/6,6/6,6/6,6/6,6/6,4/6,2/6,3/6,1/6,3/6,5/6,1/6,3/6,5/6,6/6,1/6,1/6,4/6,5/6,4/6,4/6,1/6,2/6,6/6,4/6 -============================ -input: -NAME10 -output: -MeikyuKingdom : 名前表(10) > [4,56,46]“噂をすれば”クラパドーラ/クレヨン [1,23,46]“触らぬ神に祟り無しの”バンブー/オリーブ [2,16,24]“天につば吐く”ウォルナット/ルージュ [1,26,33]“とかく浮世は色と酒の”アヴァランチ/エクレール [3,15,46]“触らぬ神に祟り無しの”チャンピオン/バービー [2,25,16]“一を聴いて十を知る”ジョーカー/ダイス [4,15,46]“噂をすれば”グラナーダ/プリムローズ [4,56,35]“蛇の道は蛇の”クラパドーラ/クレヨン [5,36,45]“死人に口なしの”ジッポ/ショコラ [3,36,46]“触らぬ神に祟り無しの”好きな星の名前(スピカ,オリオン) -rand:4/6,5/6,6/6,6/6,4/6,1/6,3/6,2/6,6/6,4/6,2/6,1/6,6/6,2/6,4/6,1/6,6/6,2/6,3/6,3/6,3/6,5/6,1/6,6/6,4/6,2/6,2/6,5/6,1/6,6/6,4/6,5/6,1/6,6/6,4/6,4/6,5/6,6/6,3/6,5/6,5/6,6/6,3/6,4/6,5/6,3/6,3/6,6/6,4/6,6/6 -============================ -input: -NAME10 -output: -MeikyuKingdom : 名前表(10) > [5,36,14]“われらが”ジッポ/ショコラ [6,25,36]“口から先に生まれた”オルフェウス/ヴィーナス [4,46,55]“ミスター/ミス”スコーン/クスクス [5,11,26]“清濁併せ呑む”エイジ/ウェンズデイ [2,34,36]“天上天下唯我独尊”シーガロ/ココア [4,45,12]“七人の敵がいる”ウイロウ/カシュカシュ [3,24,36]“天上天下唯我独尊”ゾンビ/オニャンコポン [1,45,25]“風に柳の”ウイロウ/カシュカシュ [3,24,44]“虫も殺さぬ”ゾンビ/オニャンコポン [6,16,36]“口から先に生まれた”エルリック/グローリアーナ -rand:5/6,3/6,6/6,1/6,4/6,6/6,5/6,2/6,3/6,6/6,4/6,6/6,4/6,5/6,5/6,5/6,1/6,1/6,6/6,2/6,2/6,3/6,4/6,3/6,6/6,4/6,4/6,5/6,1/6,2/6,3/6,2/6,4/6,3/6,6/6,1/6,4/6,5/6,2/6,5/6,3/6,4/6,2/6,4/6,4/6,6/6,1/6,6/6,6/6,3/6 -============================ -input: -NAME10 -output: -MeikyuKingdom : 名前表(10) > [4,33,16]“佳人薄命”ビバシータ/メトロノーム [2,33,23]“据え膳食わぬは男の恥の”バックギャモン/マーブル [6,36,56]“(好きな名前表)の子”ザナドゥ/ヨミ [3,26,56]“(ゲーム会場の地名)でも一、二を争う”オーバーキル/サシミ [1,24,26]“目に入れても痛くない”クラウド/クリマ [2,36,46]“触らぬ神に祟り無しの”ジッポ/ショコラ [5,16,23]“湯上りは親でも惚れる”ウォルナット/ルージュ [5,12,55]“ミスター/ミス”ジョルノ/ノエル [4,56,11]“身も蓋もない”クラパドーラ/クレヨン [1,16,16]“一を聴いて十を知る”ラディッシュ/マリーゴールド -rand:4/6,3/6,3/6,1/6,6/6,2/6,3/6,3/6,3/6,2/6,6/6,6/6,3/6,5/6,6/6,3/6,2/6,6/6,5/6,6/6,1/6,4/6,2/6,6/6,2/6,2/6,3/6,6/6,4/6,6/6,5/6,6/6,1/6,2/6,3/6,5/6,2/6,1/6,5/6,5/6,4/6,6/6,5/6,1/6,1/6,1/6,1/6,6/6,1/6,6/6 -============================ -input: -NAME10 -output: -MeikyuKingdom : 名前表(10) > [2,46,56]“(ゲーム会場の地名)でも一、二を争う”カバディ/ピンポン [2,34,55]“両手に花の”シーガロ/ココア [6,13,12]“七人の敵がいる”オズ/アリス [1,56,16]“一を聴いて十を知る”クラパドーラ/クレヨン [6,35,14]“われらが”アンナタール/フォルトゥナ [1,56,46]“触らぬ神に祟り無しの”クラパドーラ/クレヨン [4,35,66]“(好きな単語表)の父/母”オーボエ/アルモニカ [3,13,26]“目に入れても痛くない”カンフー/インヤン [3,14,55]“両手に花の”ブシドー/ミヤコ [4,46,11]“身も蓋もない”スコーン/クスクス -rand:2/6,4/6,6/6,6/6,5/6,2/6,4/6,3/6,5/6,5/6,6/6,3/6,1/6,1/6,2/6,1/6,5/6,6/6,1/6,6/6,6/6,5/6,3/6,1/6,4/6,1/6,6/6,5/6,6/6,4/6,4/6,5/6,3/6,6/6,6/6,3/6,1/6,3/6,6/6,2/6,3/6,1/6,4/6,5/6,5/6,4/6,4/6,6/6,1/6,1/6 -============================ -input: -NAME10 -output: -MeikyuKingdom : 名前表(10) > [3,36,25]“風に柳の”好きな星の名前(スピカ,オリオン) [4,14,23]“湯上りは親でも惚れる”ダフニ/キノコ [3,12,36]“天上天下唯我独尊”チュパカブラ/ムベンベ [2,22,15]“石橋を叩いて渡る”グレイ/スカーレット [5,26,16]“佳人薄命”ジグソウ/ドミノ [5,55,26]“清濁併せ呑む”ポンド/ヴェルベット [2,22,36]“天上天下唯我独尊”グレイ/スカーレット [6,45,35]“蛇の道は蛇の”ゼンダ/ゴーメンガースト [2,33,13]“冗談にも程がある”バックギャモン/マーブル [5,24,12]“七人の敵がいる”スロット/キリエ -rand:3/6,6/6,3/6,5/6,2/6,4/6,1/6,4/6,3/6,2/6,3/6,2/6,1/6,3/6,6/6,2/6,2/6,2/6,5/6,1/6,5/6,2/6,6/6,6/6,1/6,5/6,5/6,5/6,2/6,6/6,2/6,2/6,2/6,6/6,3/6,6/6,4/6,5/6,3/6,5/6,2/6,3/6,3/6,3/6,1/6,5/6,2/6,4/6,1/6,2/6 -============================ -input: -NAME10 -output: -MeikyuKingdom : 名前表(10) > [4,44,45]“死人に口なしの”ナン/クッキー [5,16,46]“噂をすれば”ウォルナット/ルージュ [2,15,36]“天上天下唯我独尊”ハイラン/ブランカ [6,13,35]“蛇の道は蛇の”オズ/アリス [6,45,56]“(好きな名前表)の子”ゼンダ/ゴーメンガースト [2,25,15]“石橋を叩いて渡る”ジョーカー/ダイス [1,25,24]“天につば吐く”タオ/スノウ [2,36,36]“天上天下唯我独尊”ジッポ/ショコラ [2,46,26]“目に入れても痛くない”カバディ/ピンポン [3,13,15]“石橋を叩いて渡る”カンフー/インヤン -rand:4/6,4/6,4/6,5/6,4/6,5/6,6/6,1/6,4/6,6/6,2/6,1/6,5/6,3/6,6/6,6/6,1/6,3/6,3/6,5/6,6/6,4/6,5/6,5/6,6/6,2/6,2/6,5/6,5/6,1/6,1/6,5/6,2/6,2/6,4/6,2/6,6/6,3/6,6/6,3/6,2/6,4/6,6/6,6/6,2/6,3/6,3/6,1/6,5/6,1/6 -============================ -input: -NAME10 -output: -MeikyuKingdom : 名前表(10) > [3,26,46]“触らぬ神に祟り無しの”オーバーキル/サシミ [1,66,24]“天につば吐く”ソープ/ブルーム [5,66,13]“ドラゴンも裸足で逃げ出す”シリング/シルク [6,23,13]“ドラゴンも裸足で逃げ出す”マハラジャ/クリシュナ [1,12,56]“(ゲーム会場の地名)でも一、二を争う”ホオズキ/アサガオ [4,35,23]“湯上りは親でも惚れる”オーボエ/アルモニカ [6,46,35]“蛇の道は蛇の”インスマウス/イース [3,36,35]“泣く子も黙る”好きな星の名前(スピカ,オリオン) [1,34,16]“一を聴いて十を知る”カノン/ファゴット [6,44,23]“湯上りは親でも惚れる”アルビオン/ラピュタ -rand:3/6,6/6,2/6,6/6,4/6,1/6,6/6,6/6,4/6,2/6,5/6,6/6,6/6,3/6,1/6,6/6,3/6,2/6,1/6,3/6,1/6,2/6,1/6,6/6,5/6,4/6,3/6,5/6,2/6,3/6,6/6,4/6,6/6,3/6,5/6,3/6,3/6,6/6,5/6,3/6,1/6,3/6,4/6,6/6,1/6,6/6,4/6,4/6,2/6,3/6 -============================ -input: -NAME10 -output: -MeikyuKingdom : 名前表(10) > [2,23,15]“石橋を叩いて渡る”シュバルツ/モエギ [6,13,44]“柔よく剛を制す”オズ/アリス [2,15,14]“虎の尾を踏む”ハイラン/ブランカ [4,23,33]“かゆいところに手が届く”バンブー/オリーブ [1,56,26]“目に入れても痛くない”クラパドーラ/クレヨン [5,66,14]“われらが”シリング/シルク [4,15,36]“口から先に生まれた”グラナーダ/プリムローズ [2,26,35]“泣く子も黙る”ジグソウ/ドミノ [5,16,35]“蛇の道は蛇の”ウォルナット/ルージュ [5,24,36]“口から先に生まれた”スロット/キリエ -rand:2/6,3/6,2/6,5/6,1/6,6/6,1/6,3/6,4/6,4/6,2/6,1/6,5/6,4/6,1/6,4/6,2/6,3/6,3/6,3/6,1/6,6/6,5/6,2/6,6/6,5/6,6/6,6/6,1/6,4/6,4/6,1/6,5/6,3/6,6/6,2/6,6/6,2/6,5/6,3/6,5/6,6/6,1/6,3/6,5/6,5/6,2/6,4/6,3/6,6/6 -============================ -input: -NAME10 -output: -MeikyuKingdom : 名前表(10) > [1,16,26]“目に入れても痛くない”ラディッシュ/マリーゴールド [6,36,16]“佳人薄命”ザナドゥ/ヨミ [4,36,26]“清濁併せ呑む”チューバ/オルガノ [5,35,45]“死人に口なしの”スピーチカ/オレンジペコー [4,34,46]“噂をすれば”カノン/ファゴット [3,46,16]“一を聴いて十を知る”好きな鉱物の名前(ルビィ,ヒスイ) [6,26,34]“酒池肉林の”ソロモン/サロメ [2,13,35]“泣く子も黙る”タスク/マニャーナ [3,46,25]“風に柳の”好きな鉱物の名前(ルビィ,ヒスイ) [4,26,22]“すねに傷持つ”アヴァランチ/エクレール -rand:1/6,6/6,1/6,2/6,6/6,6/6,3/6,6/6,1/6,6/6,4/6,3/6,6/6,6/6,2/6,5/6,3/6,5/6,4/6,5/6,4/6,3/6,4/6,6/6,4/6,3/6,6/6,4/6,1/6,6/6,6/6,6/6,2/6,4/6,3/6,2/6,1/6,3/6,3/6,5/6,3/6,6/6,4/6,2/6,5/6,4/6,6/6,2/6,2/6,2/6 -============================ -input: -DFT -output: -MeikyuKingdom : デバイスファクトリー表(1) > 衛星帯 / 特性[8]:「[7]一般スキル」の呪紋を持つ。 -rand:6/6,6/6,3/6,2/6,6/6,2/6,5/6 -============================ -input: -DFT -output: -MeikyuKingdom : デバイスファクトリー表(1) > 盾 / 特性[3]:寿命を持つ。寿命の値を決定する。 -さらに、特性[4]:境界障壁を持つ。《HP》の値を決定する。 -rand:1/6,5/6,1/6,1/6,2/6,2/6,2/6,3/6,1/6 -============================ -input: -DFT -output: -MeikyuKingdom : デバイスファクトリー表(1) > 鉄砲 / 特性[9]:「[1]「呪い」のバッドステータス」の呪禍を持つ。 -さらに、特性[11]:「条件:[3]女性」の適性を持つ。 -さらに、特性[2]:「[6]〈回避値〉」の神力を宿す -rand:1/6,5/6,3/6,3/6,6/6,5/6,6/6,1/6,1/6,1/6,3/6,6/6,2/6,6/6,6/6 -============================ -input: -DFT -output: -MeikyuKingdom : デバイスファクトリー表(1) > 爆弾 / 特性[5]:銘を持つ。銘を決定する。 -rand:1/6,3/6,4/6,3/6,2/6,5/6,4/6 -============================ -input: -DFT -output: -MeikyuKingdom : デバイスファクトリー表(1) > パワーリスト / 特性[7]:そのアイテムにレベルがあれば、レベルを1点上昇する。 -レベルが設定されていなければ、特性[8]:「[11]神官のクラススキル」の呪紋を持つ。 -rand:4/6,6/6,1/6,2/6,5/6,3/6,5/6,5/6,6/6 -============================ -input: -DFT -output: -MeikyuKingdom : デバイスファクトリー表(1) > テント / 特性[10]:高価だ。価格を設定する。 -rand:4/6,2/6,3/6,6/6,4/6,1/6,4/6 -============================ -input: -DFT -output: -MeikyuKingdom : デバイスファクトリー表(1) > 籠手(だんびら) / 特性[7]:そのアイテムにレベルがあれば、レベルを1点上昇する。 -レベルが設定されていなければ、特性[8]:「[9]科学スキル」の呪紋を持つ。 -rand:1/6,2/6,2/6,2/6,5/6,3/6,5/6,6/6,3/6 -============================ -input: -DFT -output: -MeikyuKingdom : デバイスファクトリー表(1) > 操りロープ / 特性[3]:寿命を持つ。寿命の値を決定する。 -さらに、特性[5]:銘を持つ。銘を決定する。 -rand:6/6,4/6,2/6,2/6,1/6,1/6,4/6,4/6,6/6 -============================ -input: -DFT -output: -MeikyuKingdom : デバイスファクトリー表(1) > 蒸気甲冑 / 特性[9]:「[6]〈器〉が1点減少する」の呪禍を持つ。 -さらに、特性[10]:高価だ。価格を設定する。 -rand:5/6,6/6,5/6,6/6,3/6,4/6,6/6,6/6,3/6,3/6 -============================ -input: -DFT -output: -MeikyuKingdom : デバイスファクトリー表(1) > 楽器 / 特性[7]:そのアイテムにレベルがあれば、レベルを1点上昇する。 -レベルが設定されていなければ、特性[5]:銘を持つ。銘を決定する。 -rand:4/6,2/6,4/6,6/6,1/6,1/6,4/6,3/6,4/6 -============================ -input: -IDT -output: -MeikyuKingdom : アイテムカテゴリ決定表(1) > 大剣 -rand:1/6,6/6,3/6 -============================ -input: -IDT -output: -MeikyuKingdom : アイテムカテゴリ決定表(5) > 小鬼の襟巻 -rand:5/6,1/6,3/6 -============================ -input: -IDT -output: -MeikyuKingdom : アイテムカテゴリ決定表(2) > 山吹色のお菓子 -rand:2/6,3/6,6/6 -============================ -input: -IDT -output: -MeikyuKingdom : アイテムカテゴリ決定表(4) > 星の欠片 -rand:4/6,6/6,6/6 -============================ -input: -IDT -output: -MeikyuKingdom : アイテムカテゴリ決定表(6) > 操りロープ -rand:6/6,4/6,2/6 -============================ -input: -IDT -output: -MeikyuKingdom : アイテムカテゴリ決定表(6) > ブルーリボン -rand:6/6,1/6,1/6 -============================ -input: -IDT -output: -MeikyuKingdom : アイテムカテゴリ決定表(3) > お弁当 -rand:3/6,1/6,1/6 -============================ -input: -IDT -output: -MeikyuKingdom : アイテムカテゴリ決定表(2) > 携帯電話 -rand:2/6,2/6,6/6 -============================ -input: -IDT -output: -MeikyuKingdom : アイテムカテゴリ決定表(1) > ホウキ -rand:1/6,4/6,5/6 -============================ -input: -IDT -output: -MeikyuKingdom : アイテムカテゴリ決定表(3) > お弁当 -rand:3/6,4/6,4/6 -============================ -input: -WIT -output: -MeikyuKingdom : 武具アイテム表(13) > ダガー -rand:1/6,3/6 -============================ -input: -WIT -output: -MeikyuKingdom : 武具アイテム表(56) > 大砲 -rand:6/6,5/6 -============================ -input: -WIT -output: -MeikyuKingdom : 武具アイテム表(44) > 拳銃(だんびら) -rand:4/6,4/6 -============================ -input: -WIT -output: -MeikyuKingdom : 武具アイテム表(46) > 徹甲弾 -rand:6/6,4/6 -============================ -input: -WIT -output: -MeikyuKingdom : 武具アイテム表(23) > 手裏剣 -rand:3/6,2/6 -============================ -input: -WIT -output: -MeikyuKingdom : 武具アイテム表(36) > 大剣 -rand:3/6,6/6 -============================ -input: -WIT -output: -MeikyuKingdom : 武具アイテム表(35) > 鉄砲 -rand:3/6,5/6 -============================ -input: -WIT -output: -MeikyuKingdom : 武具アイテム表(45) > ホウキ -rand:5/6,4/6 -============================ -input: -WIT -output: -MeikyuKingdom : 武具アイテム表(26) > 戦鎚 -rand:6/6,2/6 -============================ -input: -WIT -output: -MeikyuKingdom : 武具アイテム表(11) > だんびら -rand:1/6,1/6 -============================ -input: -LIT -output: -MeikyuKingdom : 生活アイテム表(44) > バックパック -rand:4/6,4/6 -============================ -input: -LIT -output: -MeikyuKingdom : 生活アイテム表(55) > バックパック -rand:5/6,5/6 -============================ -input: -LIT -output: -MeikyuKingdom : 生活アイテム表(55) > バックパック -rand:5/6,5/6 -============================ -input: -LIT -output: -MeikyuKingdom : 生活アイテム表(25) > 住民台帳 -rand:2/6,5/6 -============================ -input: -LIT -output: -MeikyuKingdom : 生活アイテム表(13) > 鍋 -rand:3/6,1/6 -============================ -input: -LIT -output: -MeikyuKingdom : 生活アイテム表(45) > 眼鏡 -rand:5/6,4/6 -============================ -input: -LIT -output: -MeikyuKingdom : 生活アイテム表(34) > 肖像画 -rand:3/6,4/6 -============================ -input: -LIT -output: -MeikyuKingdom : 生活アイテム表(26) > 携帯電話 -rand:6/6,2/6 -============================ -input: -LIT -output: -MeikyuKingdom : 生活アイテム表(46) > クレジットカード -rand:4/6,6/6 -============================ -input: -LIT -output: -MeikyuKingdom : 生活アイテム表(26) > 携帯電話 -rand:2/6,6/6 -============================ -input: -RIT -output: -MeikyuKingdom : 回復アイテム表(33) > お弁当 -rand:3/6,3/6 -============================ -input: -RIT -output: -MeikyuKingdom : 回復アイテム表(23) > チョコレート -rand:2/6,3/6 -============================ -input: -RIT -output: -MeikyuKingdom : 回復アイテム表(36) > 迷宮保険 -rand:3/6,6/6 -============================ -input: -RIT -output: -MeikyuKingdom : 回復アイテム表(14) > 保存食 -rand:1/6,4/6 -============================ -input: -RIT -output: -MeikyuKingdom : 回復アイテム表(46) > 惚れ薬 -rand:6/6,4/6 -============================ -input: -RIT -output: -MeikyuKingdom : 回復アイテム表(46) > 惚れ薬 -rand:4/6,6/6 -============================ -input: -RIT -output: -MeikyuKingdom : 回復アイテム表(16) > 珈琲 -rand:1/6,6/6 -============================ -input: -RIT -output: -MeikyuKingdom : 回復アイテム表(45) > 科学調味料 -rand:4/6,5/6 -============================ -input: -RIT -output: -MeikyuKingdom : 回復アイテム表(24) > お酒 -rand:4/6,2/6 -============================ -input: -RIT -output: -MeikyuKingdom : 回復アイテム表(16) > 珈琲 -rand:6/6,1/6 -============================ -input: -SIT -output: -MeikyuKingdom : 探索アイテム表(36) > 地図 -rand:6/6,3/6 -============================ -input: -SIT -output: -MeikyuKingdom : 探索アイテム表(16) > パワーリスト -rand:6/6,1/6 -============================ -input: -SIT -output: -MeikyuKingdom : 探索アイテム表(35) > 迷宮防護服 -rand:5/6,3/6 -============================ -input: -SIT -output: -MeikyuKingdom : 探索アイテム表(46) > もぐら棒 -rand:4/6,6/6 -============================ -input: -SIT -output: -MeikyuKingdom : 探索アイテム表(44) > 星の欠片 -rand:4/6,4/6 -============================ -input: -SIT -output: -MeikyuKingdom : 探索アイテム表(24) > 楽器 -rand:4/6,2/6 -============================ -input: -SIT -output: -MeikyuKingdom : 探索アイテム表(45) > 時計 -rand:5/6,4/6 -============================ -input: -SIT -output: -MeikyuKingdom : 探索アイテム表(35) > 迷宮防護服 -rand:5/6,3/6 -============================ -input: -SIT -output: -MeikyuKingdom : 探索アイテム表(16) > パワーリスト -rand:6/6,1/6 -============================ -input: -SIT -output: -MeikyuKingdom : 探索アイテム表(55) > 星の欠片 -rand:5/6,5/6 -============================ -input: -RWIT -output: -MeikyuKingdom : レア武具アイテム表(21) > まわし -rand:2/6,1/6 -============================ -input: -RWIT -output: -MeikyuKingdom : レア武具アイテム表(61) > 刈り取る者 -rand:6/6,1/6 -============================ -input: -RWIT -output: -MeikyuKingdom : レア武具アイテム表(23) > しゃべる剣 -rand:2/6,3/6 -============================ -input: -RWIT -output: -MeikyuKingdom : レア武具アイテム表(14) > 喇叭銃 -rand:1/6,4/6 -============================ -input: -RWIT -output: -MeikyuKingdom : レア武具アイテム表(26) > 服従の鞭 -rand:2/6,6/6 -============================ -input: -RWIT -output: -MeikyuKingdom : レア武具アイテム表(26) > 服従の鞭 -rand:2/6,6/6 -============================ -input: -RWIT -output: -MeikyuKingdom : レア武具アイテム表(11) > 虚弾 -rand:1/6,1/6 -============================ -input: -RWIT -output: -MeikyuKingdom : レア武具アイテム表(45) > 徒手空拳 -rand:4/6,5/6 -============================ -input: -RWIT -output: -MeikyuKingdom : レア武具アイテム表(66) > 王剣 -rand:6/6,6/6 -============================ -input: -RWIT -output: -MeikyuKingdom : レア武具アイテム表(56) > 破城槌 -rand:5/6,6/6 -============================ -input: -RUIT -output: -MeikyuKingdom : レア一般アイテム表(25) > 藁人形 -rand:2/6,5/6 -============================ -input: -RUIT -output: -MeikyuKingdom : レア一般アイテム表(31) > 王妃の鏡 -rand:3/6,1/6 -============================ -input: -RUIT -output: -MeikyuKingdom : レア一般アイテム表(65) > 聖杯 -rand:6/6,5/6 -============================ -input: -RUIT -output: -MeikyuKingdom : レア一般アイテム表(42) > 操りロープ -rand:4/6,2/6 -============================ -input: -RUIT -output: -MeikyuKingdom : レア一般アイテム表(33) > 無限の心臓(名刺) -rand:3/6,3/6 -============================ -input: -RUIT -output: -MeikyuKingdom : レア一般アイテム表(46) > カメラ -rand:4/6,6/6 -============================ -input: -RUIT -output: -MeikyuKingdom : レア一般アイテム表(12) > 聖痕 -rand:1/6,2/6 -============================ -input: -RUIT -output: -MeikyuKingdom : レア一般アイテム表(23) > 煙玉 -rand:2/6,3/6 -============================ -input: -RUIT -output: -MeikyuKingdom : レア一般アイテム表(42) > 操りロープ -rand:4/6,2/6 -============================ -input: -RUIT -output: -MeikyuKingdom : レア一般アイテム表(12) > 聖痕 -rand:1/6,2/6 -============================ -input: -IFT -output: -MeikyuKingdom : アイテム特性表(5) > 特性[5]:銘を持つ。銘を決定する。 -rand:3/6,2/6,2/6,3/6 -============================ -input: -IFT -output: -MeikyuKingdom : アイテム特性表(7) > 特性[7]:そのアイテムにレベルがあれば、レベルを1点上昇する。 -レベルが設定されていなければ、特性[6]:合成具である。もう1つの機能は「手裏剣」である。 -rand:2/6,5/6,1/6,5/6,5/6,6/6,1/6,3/6,2/6 -============================ -input: -IFT -output: -MeikyuKingdom : アイテム特性表(6) > 特性[6]:合成具である。もう1つの機能は「クレジットカード」である。 -rand:4/6,2/6,6/6,4/6,2/6,6/6,4/6 -============================ -input: -IFT -output: -MeikyuKingdom : アイテム特性表(3) > 特性[3]:寿命を持つ。寿命の値を決定する。 -さらに、特性[10]:高価だ。価格を設定する。 -rand:2/6,1/6,5/6,5/6,3/6,6/6 -============================ -input: -IFT -output: -MeikyuKingdom : アイテム特性表(6) > 特性[6]:合成具である。もう1つの機能は「お弁当」である。 -rand:1/6,5/6,6/6,1/6,3/6,1/6,2/6 -============================ -input: -IFT -output: -MeikyuKingdom : アイテム特性表(9) > 特性[9]:「[4]サイクルの終了時に《HP》が1点減少する」の呪禍を持つ。 -さらに、特性[3]:寿命を持つ。寿命の値を決定する。 -さらに、特性[7]:そのアイテムにレベルがあれば、レベルを1点上昇する。 -レベルが設定されていなければ、特性[4]:境界障壁を持つ。《HP》の値を決定する。 -rand:5/6,4/6,1/6,2/6,4/6,2/6,5/6,3/6,1/6,6/6,6/6 -============================ -input: -IFT -output: -MeikyuKingdom : アイテム特性表(12) > 特性[12]:「[6]災厄の力」の属性を持つ。 -rand:6/6,6/6,2/6,6/6,6/6 -============================ -input: -IFT -output: -MeikyuKingdom : アイテム特性表(9) > 特性[9]:「[5]条件を満たしても誰とも人間関係を結べない」の呪禍を持つ。 -さらに、特性[10]:高価だ。価格を設定する。 -rand:5/6,4/6,4/6,6/6,5/6,3/6,4/6 -============================ -input: -IFT -output: -MeikyuKingdom : アイテム特性表(6) > 特性[6]:合成具である。もう1つの機能は「クラッカー」である。 -rand:4/6,2/6,6/6,2/6,2/6,4/6,1/6 -============================ -input: -IFT -output: -MeikyuKingdom : アイテム特性表(6) > 特性[6]:合成具である。もう1つの機能は「衣装」である。 -rand:5/6,1/6,2/6,4/6,2/6,3/6,5/6 -============================ -input: -1RET -output: -MeikyuKingdom : 1Lvランダムエンカウント表(5) > 『【かばう】で延命しつつ【鉄の勇気】』 前衛:キンギョ×宮廷の人数、本陣:イカロス×宮廷の人数の半分 -rand:5/6 -============================ -input: -1RET -output: -MeikyuKingdom : 1Lvランダムエンカウント表(4) > 『何かやってくれるかも……』 前衛:兵隊エルフ×宮廷の人数 -rand:4/6 -============================ -input: -1RET -output: -MeikyuKingdom : 1Lvランダムエンカウント表(2) > 『じわじわ削る、カボチャの舞』 前衛:焔虫×宮廷の人数、本陣:カボチャ頭×宮廷の人数の半分 -rand:2/6 -============================ -input: -1RET -output: -MeikyuKingdom : 1Lvランダムエンカウント表(4) > 『何かやってくれるかも……』 前衛:兵隊エルフ×宮廷の人数 -rand:4/6 -============================ -input: -1RET -output: -MeikyuKingdom : 1Lvランダムエンカウント表(5) > 『【かばう】で延命しつつ【鉄の勇気】』 前衛:キンギョ×宮廷の人数、本陣:イカロス×宮廷の人数の半分 -rand:5/6 -============================ -input: -1RET -output: -MeikyuKingdom : 1Lvランダムエンカウント表(4) > 『何かやってくれるかも……』 前衛:兵隊エルフ×宮廷の人数 -rand:4/6 -============================ -input: -1RET -output: -MeikyuKingdom : 1Lvランダムエンカウント表(2) > 『じわじわ削る、カボチャの舞』 前衛:焔虫×宮廷の人数、本陣:カボチャ頭×宮廷の人数の半分 -rand:2/6 -============================ -input: -1RET -output: -MeikyuKingdom : 1Lvランダムエンカウント表(5) > 『【かばう】で延命しつつ【鉄の勇気】』 前衛:キンギョ×宮廷の人数、本陣:イカロス×宮廷の人数の半分 -rand:5/6 -============================ -input: -1RET -output: -MeikyuKingdom : 1Lvランダムエンカウント表(2) > 『じわじわ削る、カボチャの舞』 前衛:焔虫×宮廷の人数、本陣:カボチャ頭×宮廷の人数の半分 -rand:2/6 -============================ -input: -1RET -output: -MeikyuKingdom : 1Lvランダムエンカウント表(2) > 『じわじわ削る、カボチャの舞』 前衛:焔虫×宮廷の人数、本陣:カボチャ頭×宮廷の人数の半分 -rand:2/6 -============================ -input: -2RET -output: -MeikyuKingdom : 2Lvランダムエンカウント表(6) > 『回避を減らしてみみずの範囲攻撃』 前衛:みみず×宮廷の人数、本陣:大喰らい×宮廷の人数の半分 -rand:6/6 -============================ -input: -2RET -output: -MeikyuKingdom : 2Lvランダムエンカウント表(4) > 『クピドは野放しにできないが、ハルキュオネは殺せない。このジレンマが……』 前衛:ハルキュオネ×宮廷の人数、後衛:ハルキュオネ×宮廷の人数、本陣:クピド×宮廷の人数の半分 -rand:4/6 -============================ -input: -2RET -output: -MeikyuKingdom : 2Lvランダムエンカウント表(2) > 『吸い殺せ! ドレインしまくれ!』 後衛:塚人×宮廷の人数の半分 -rand:2/6 -============================ -input: -2RET -output: -MeikyuKingdom : 2Lvランダムエンカウント表(5) > 『眠りコンボ』 前衛:グレムリン×宮廷の人数、本陣:眠りの精×1 -rand:5/6 -============================ -input: -2RET -output: -MeikyuKingdom : 2Lvランダムエンカウント表(3) > 『ゴールデンコンビ結成。指揮と【鉄腕】+【範囲攻撃】で大暴れ』 前衛:牛頭×宮廷の人数の半分、後衛:山羊頭×宮廷の人数の半分 -rand:3/6 -============================ -input: -2RET -output: -MeikyuKingdom : 2Lvランダムエンカウント表(1) > 『作戦判定に負けてもOK、そして強い』 前衛:ガーゴイル×宮廷の人数 -rand:1/6 -============================ -input: -2RET -output: -MeikyuKingdom : 2Lvランダムエンカウント表(3) > 『ゴールデンコンビ結成。指揮と【鉄腕】+【範囲攻撃】で大暴れ』 前衛:牛頭×宮廷の人数の半分、後衛:山羊頭×宮廷の人数の半分 -rand:3/6 -============================ -input: -2RET -output: -MeikyuKingdom : 2Lvランダムエンカウント表(1) > 『作戦判定に負けてもOK、そして強い』 前衛:ガーゴイル×宮廷の人数 -rand:1/6 -============================ -input: -2RET -output: -MeikyuKingdom : 2Lvランダムエンカウント表(4) > 『クピドは野放しにできないが、ハルキュオネは殺せない。このジレンマが……』 前衛:ハルキュオネ×宮廷の人数、後衛:ハルキュオネ×宮廷の人数、本陣:クピド×宮廷の人数の半分 -rand:4/6 -============================ -input: -2RET -output: -MeikyuKingdom : 2Lvランダムエンカウント表(6) > 『回避を減らしてみみずの範囲攻撃』 前衛:みみず×宮廷の人数、本陣:大喰らい×宮廷の人数の半分 -rand:6/6 -============================ -input: -3RET -output: -MeikyuKingdom : 3Lvランダムエンカウント表(2) > 『素早く【多勢に無勢】をしかけ……たい』 前衛:階賊×宮廷の人数、本陣:抜け忍×1 -rand:2/6 -============================ -input: -3RET -output: -MeikyuKingdom : 3Lvランダムエンカウント表(2) > 『素早く【多勢に無勢】をしかけ……たい』 前衛:階賊×宮廷の人数、本陣:抜け忍×1 -rand:2/6 -============================ -input: -3RET -output: -MeikyuKingdom : 3Lvランダムエンカウント表(4) > 『位置を調整して【抱擁】してみよう』 後衛:霧妾×宮廷の人数、本陣:お化けシーツ×宮廷の人数 -rand:4/6 -============================ -input: -3RET -output: -MeikyuKingdom : 3Lvランダムエンカウント表(4) > 『位置を調整して【抱擁】してみよう』 後衛:霧妾×宮廷の人数、本陣:お化けシーツ×宮廷の人数 -rand:4/6 -============================ -input: -3RET -output: -MeikyuKingdom : 3Lvランダムエンカウント表(6) > 『なんとか特攻したい(願望)』 前衛:穴人×宮廷の人数、ゴーレム×1 -rand:6/6 -============================ -input: -3RET -output: -MeikyuKingdom : 3Lvランダムエンカウント表(4) > 『位置を調整して【抱擁】してみよう』 後衛:霧妾×宮廷の人数、本陣:お化けシーツ×宮廷の人数 -rand:4/6 -============================ -input: -3RET -output: -MeikyuKingdom : 3Lvランダムエンカウント表(6) > 『なんとか特攻したい(願望)』 前衛:穴人×宮廷の人数、ゴーレム×1 -rand:6/6 -============================ -input: -3RET -output: -MeikyuKingdom : 3Lvランダムエンカウント表(3) > 『倒しても嬉しくない人柱をどうぞ』 前衛:人柱×宮廷の人数、本陣:恋のぼり×宮廷の人数の半分 -rand:3/6 -============================ -input: -3RET -output: -MeikyuKingdom : 3Lvランダムエンカウント表(4) > 『位置を調整して【抱擁】してみよう』 後衛:霧妾×宮廷の人数、本陣:お化けシーツ×宮廷の人数 -rand:4/6 -============================ -input: -3RET -output: -MeikyuKingdom : 3Lvランダムエンカウント表(3) > 『倒しても嬉しくない人柱をどうぞ』 前衛:人柱×宮廷の人数、本陣:恋のぼり×宮廷の人数の半分 -rand:3/6 -============================ -input: -4RET -output: -MeikyuKingdom : 4Lvランダムエンカウント表(4) > 『さりげなく先攻を取りつつ《民》をバイドバイパー作戦』 前衛:大目玉×宮廷の人数、本陣:笛吹き男×宮廷の人数の半分 -rand:4/6 -============================ -input: -4RET -output: -MeikyuKingdom : 4Lvランダムエンカウント表(2) > 『カリスマ的存在+平和の使者→エセNGOみたいな?』 前衛:ワリアヒラ×宮廷の人数、後衛:妖精騎士×1 -rand:2/6 -============================ -input: -4RET -output: -MeikyuKingdom : 4Lvランダムエンカウント表(4) > 『さりげなく先攻を取りつつ《民》をバイドバイパー作戦』 前衛:大目玉×宮廷の人数、本陣:笛吹き男×宮廷の人数の半分 -rand:4/6 -============================ -input: -4RET -output: -MeikyuKingdom : 4Lvランダムエンカウント表(3) > 『【星戦】→攻撃、【星界】→【ベアハッグ】』 前衛:洞窟熊×宮廷の人数、本陣:星人×宮廷の人数の半分 -rand:3/6 -============================ -input: -4RET -output: -MeikyuKingdom : 4Lvランダムエンカウント表(1) > 『増やして治す。ド外道タッグが嵐を呼ぶぜ』 前衛:闇双子×1、本陣:坊主子牛×宮廷の人数の半分 -rand:1/6 -============================ -input: -4RET -output: -MeikyuKingdom : 4Lvランダムエンカウント表(5) > 『アンデッドチーム、がんばれ!』 前衛:墓暴き×宮廷の人数、本陣:吸血鬼×1 -rand:5/6 -============================ -input: -4RET -output: -MeikyuKingdom : 4Lvランダムエンカウント表(3) > 『【星戦】→攻撃、【星界】→【ベアハッグ】』 前衛:洞窟熊×宮廷の人数、本陣:星人×宮廷の人数の半分 -rand:3/6 -============================ -input: -4RET -output: -MeikyuKingdom : 4Lvランダムエンカウント表(2) > 『カリスマ的存在+平和の使者→エセNGOみたいな?』 前衛:ワリアヒラ×宮廷の人数、後衛:妖精騎士×1 -rand:2/6 -============================ -input: -4RET -output: -MeikyuKingdom : 4Lvランダムエンカウント表(1) > 『増やして治す。ド外道タッグが嵐を呼ぶぜ』 前衛:闇双子×1、本陣:坊主子牛×宮廷の人数の半分 -rand:1/6 -============================ -input: -4RET -output: -MeikyuKingdom : 4Lvランダムエンカウント表(5) > 『アンデッドチーム、がんばれ!』 前衛:墓暴き×宮廷の人数、本陣:吸血鬼×1 -rand:5/6 -============================ -input: -5RET -output: -MeikyuKingdom : 5Lvランダムエンカウント表(1) > 『「死ぬが良い」最終鬼畜兵器岸降臨』 前衛:暗黒騎士×1 -rand:1/6 -============================ -input: -5RET -output: -MeikyuKingdom : 5Lvランダムエンカウント表(4) > 『不意打ちされたらデンジャー。ひそかにワイヴァーンで先手を取る』 前衛:睨み毒蛇×宮廷の人数の半分、後衛:ワイヴァーン×1 -rand:4/6 -============================ -input: -5RET -output: -MeikyuKingdom : 5Lvランダムエンカウント表(5) > 『ゾンビスペシャル……で、がんばりたい』 前衛:死にぞこない×宮廷の人数の半分、後衛:死にぞこない×宮廷の人数の半分、本陣:屍術師×1 -rand:5/6 -============================ -input: -5RET -output: -MeikyuKingdom : 5Lvランダムエンカウント表(2) > 『割と痛い。さりげなく魔王が分裂する』 前衛:カミツキ魔王×宮廷の人数の半分、本陣:雷鳥×1 -rand:2/6 -============================ -input: -5RET -output: -MeikyuKingdom : 5Lvランダムエンカウント表(1) > 『「死ぬが良い」最終鬼畜兵器岸降臨』 前衛:暗黒騎士×1 -rand:1/6 -============================ -input: -5RET -output: -MeikyuKingdom : 5Lvランダムエンカウント表(4) > 『不意打ちされたらデンジャー。ひそかにワイヴァーンで先手を取る』 前衛:睨み毒蛇×宮廷の人数の半分、後衛:ワイヴァーン×1 -rand:4/6 -============================ -input: -5RET -output: -MeikyuKingdom : 5Lvランダムエンカウント表(1) > 『「死ぬが良い」最終鬼畜兵器岸降臨』 前衛:暗黒騎士×1 -rand:1/6 -============================ -input: -5RET -output: -MeikyuKingdom : 5Lvランダムエンカウント表(2) > 『割と痛い。さりげなく魔王が分裂する』 前衛:カミツキ魔王×宮廷の人数の半分、本陣:雷鳥×1 -rand:2/6 -============================ -input: -5RET -output: -MeikyuKingdom : 5Lvランダムエンカウント表(1) > 『「死ぬが良い」最終鬼畜兵器岸降臨』 前衛:暗黒騎士×1 -rand:1/6 -============================ -input: -5RET -output: -MeikyuKingdom : 5Lvランダムエンカウント表(2) > 『割と痛い。さりげなく魔王が分裂する』 前衛:カミツキ魔王×宮廷の人数の半分、本陣:雷鳥×1 -rand:2/6 -============================ -input: -6RET -output: -MeikyuKingdom : 6Lvランダムエンカウント表(1) > 『死んでください。【外皮】か【甲冑】がないと相当ヤバい』 本陣:死告天使×宮廷の人数 -rand:1/6 -============================ -input: -6RET -output: -MeikyuKingdom : 6Lvランダムエンカウント表(5) > 『真の狙いは【蜘蛛の群れ】』 前衛:アラクネ×宮廷の人数、本陣:蜘蛛の王×1 -rand:5/6 -============================ -input: -6RET -output: -MeikyuKingdom : 6Lvランダムエンカウント表(1) > 『死んでください。【外皮】か【甲冑】がないと相当ヤバい』 本陣:死告天使×宮廷の人数 -rand:1/6 -============================ -input: -6RET -output: -MeikyuKingdom : 6Lvランダムエンカウント表(2) > 『ド迫力。ブレス連発。3体出ちゃったらカーニバル』 本陣:ドラゴン×宮廷の人数の半分 -rand:2/6 -============================ -input: -6RET -output: -MeikyuKingdom : 6Lvランダムエンカウント表(6) > 『お約束。まあこいつは出るだろうみたいな』 前衛:魔蟹×1、帳魚×1 -rand:6/6 -============================ -input: -6RET -output: -MeikyuKingdom : 6Lvランダムエンカウント表(5) > 『真の狙いは【蜘蛛の群れ】』 前衛:アラクネ×宮廷の人数、本陣:蜘蛛の王×1 -rand:5/6 -============================ -input: -6RET -output: -MeikyuKingdom : 6Lvランダムエンカウント表(3) > 『死霊のボス。スキル次第でヤバい。GMの悪意が閃くときだ』 本陣:骨龍×1、推奨スキル【不滅の炎】、【困惑】、【ヤバチョンガー】など -rand:3/6 -============================ -input: -6RET -output: -MeikyuKingdom : 6Lvランダムエンカウント表(6) > 『お約束。まあこいつは出るだろうみたいな』 前衛:魔蟹×1、帳魚×1 -rand:6/6 -============================ -input: -6RET -output: -MeikyuKingdom : 6Lvランダムエンカウント表(5) > 『真の狙いは【蜘蛛の群れ】』 前衛:アラクネ×宮廷の人数、本陣:蜘蛛の王×1 -rand:5/6 -============================ -input: -6RET -output: -MeikyuKingdom : 6Lvランダムエンカウント表(3) > 『死霊のボス。スキル次第でヤバい。GMの悪意が閃くときだ』 本陣:骨龍×1、推奨スキル【不滅の炎】、【困惑】、【ヤバチョンガー】など -rand:3/6 -============================ -input: -PNT -output: -MeikyuKingdom : 地名表(1) > 「好きな数字の組み合わせ堀(モート)」 -rand:5/6,1/6,6/6,6/6,6/6,3/6 -============================ -input: -PNT -output: -MeikyuKingdom : 地名表(1) > 「銀鱗(ぎんりん)迷宮(メイズ)」 -rand:1/6,1/6,2/6,6/6,3/6,2/6 -============================ -input: -PNT -output: -MeikyuKingdom : 地名表(1) > 「ドッキリ塔(タワー)」 -rand:5/6,5/6,6/6,3/6,3/6,4/6 -============================ -input: -PNT -output: -MeikyuKingdom : 地名表(1) > 「ドッキリ柱廊(ストア)」 -rand:5/6,1/6,3/6,6/6,6/6,6/6 -============================ -input: -PNT -output: -MeikyuKingdom : 地名表(1) > 「鉤爪(かぎづめ)浴室(バス)」 -rand:4/6,6/6,2/6,5/6,2/6,2/6 -============================ -input: -PNT -output: -MeikyuKingdom : 地名表(1) > 「三日月(みかづき)山脈(マウンテンズ)」 -rand:1/6,4/6,1/6,6/6,2/6,4/6 -============================ -input: -PNT -output: -MeikyuKingdom : 地名表(1) > 「欲望(よくぼう)城(キャッスル)」 -rand:1/6,6/6,1/6,1/6,1/6,1/6 -============================ -input: -PNT -output: -MeikyuKingdom : 地名表(1) > 「絶望(ぜつぼう)砦(フォート)」 -rand:4/6,6/6,6/6,4/6,1/6,3/6 -============================ -input: -PNT -output: -MeikyuKingdom : 地名表(1) > 「霧雨(きりさめ)柱廊(ストア)」 -rand:1/6,1/6,6/6,5/6,6/6,6/6 -============================ -input: -PNT -output: -MeikyuKingdom : 地名表(1) > 「流星(りゅうせい)ヶ原(ランド)」 -rand:2/6,4/6,3/6,2/6,2/6,6/6 -============================ -input: -PNT1 -output: -MeikyuKingdom : 地名表(1) > 「地獄(じごく)坑道(トンネル)」 -rand:4/6,1/6,3/6,5/6,2/6,4/6 -============================ -input: -PNT1 -output: -MeikyuKingdom : 地名表(1) > 「ボヨヨン城(キャッスル)」 -rand:6/6,5/6,1/6,4/6,1/6,1/6 -============================ -input: -PNT1 -output: -MeikyuKingdom : 地名表(1) > 「犬狼(けんろう)湿原(ウェットランド)」 -rand:4/6,4/6,6/6,2/6,4/6,5/6 -============================ -input: -PNT1 -output: -MeikyuKingdom : 地名表(1) > 「棘々(とげとげ)街道(ロード)」 -rand:2/6,1/6,4/6,2/6,6/6,1/6 -============================ -input: -PNT1 -output: -MeikyuKingdom : 地名表(1) > 「流星(りゅうせい)座(コンスティレィション)」 -rand:1/6,5/6,2/6,3/6,5/6,2/6 -============================ -input: -PNT1 -output: -MeikyuKingdom : 地名表(1) > 「マヌエル連峰(ピークス)」 -rand:6/6,4/6,1/6,6/6,3/6,6/6 -============================ -input: -PNT1 -output: -MeikyuKingdom : 地名表(1) > 「銀鱗(ぎんりん)壁(ウォール)」 -rand:1/6,6/6,6/6,2/6,2/6,1/6 -============================ -input: -PNT1 -output: -MeikyuKingdom : 地名表(1) > 「串刺し(くしざし)洞(ケイヴ)」 -rand:3/6,6/6,1/6,2/6,3/6,6/6 -============================ -input: -PNT1 -output: -MeikyuKingdom : 地名表(1) > 「絡繰り(からくり)海(オーシャン)」 -rand:2/6,3/6,2/6,2/6,1/6,3/6 -============================ -input: -PNT1 -output: -MeikyuKingdom : 地名表(1) > 「土竜(もぐら)書院(スタディ)」 -rand:3/6,6/6,4/6,5/6,4/6,6/6 -============================ -input: -PNT10 -output: -MeikyuKingdom : 地名表(10) > 「ブラック砂漠(デザート)」「好きなトラップの名前星雲(ネビュラ)」「ドラゴン山脈(マウンテンズ)」「ドッキリ湖(レイク)」「バロック海岸(コースト)」「ダイナマイト星雲(ネビュラ)」「ブラック荒野(ヒース)」「ブラック沼(ポンド)」「マヌエル山脈(マウンテンズ)」「ダイナマイト山脈(マウンテンズ)」 -rand:5/6,3/6,4/6,4/6,1/6,1/6,4/6,6/6,4/6,6/6,3/6,1/6,4/6,2/6,6/6,3/6,2/6,3/6,4/6,3/6,1/6,6/6,2/6,1/6,6/6,4/6,4/6,4/6,3/6,3/6,4/6,4/6,5/6,1/6,1/6,6/6,4/6,2/6,2/6,1/6,4/6,2/6 -============================ -input: -PNT10 -output: -MeikyuKingdom : 地名表(10) > 「漂流(ひょうりゅう)野(フィールド)」「忘却(ぼうきゃく)房(クラスター)」「殉教(じゅんきょう)畑(ファーム)」「黄金(おうごん)堂(バジリカ)」「災厄(さいやく)館(ハウス)」「水晶(すいしょう)書院(スタディ)」「火達磨(ひだるま)房(クラスター)」「棘々(とげとげ)砦(フォート)」「棘々(とげとげ)浴室(バス)」「螺旋(らせん)洞(ケイヴ)」 -rand:2/6,6/6,2/6,1/6,5/6,4/6,4/6,5/6,5/6,6/6,3/6,5/6,3/6,2/6,3/6,1/6,4/6,4/6,5/6,1/6,4/6,2/6,3/6,6/6,4/6,6/6,1/6,4/6,6/6,5/6,4/6,2/6,3/6,1/6,2/6,4/6,2/6,2/6,3/6,3/6,6/6,3/6 -============================ -input: -PNT10 -output: -MeikyuKingdom : 地名表(10) > 「エップカプ大路(アベニュー)」「ウクレレ街道(ロード)」「カンパネルラ水路(チャネル)」「ボヨヨン河(ストリーム)」「好きなトラップの名前峠(パス)」「ブラック河(ストリーム)」「ドッキリ柱廊(ストア)」「ボヨヨン小路(アレイ)」「好きなトラップの名前運河(カナル)」「ボヨヨン大路(アベニュー)」 -rand:6/6,2/6,2/6,5/6,5/6,1/6,2/6,4/6,1/6,6/6,2/6,6/6,4/6,3/6,1/6,4/6,3/6,5/6,6/6,4/6,2/6,6/6,4/6,4/6,3/6,5/6,3/6,6/6,6/6,6/6,1/6,4/6,4/6,1/6,6/6,4/6,3/6,3/6,4/6,1/6,1/6,5/6 -============================ -input: -PNT10 -output: -MeikyuKingdom : 地名表(10) > 「流星(りゅうせい)の間(チャンバー)」「七色(なないろ)城(キャッスル)」「棘々(とげとげ)室(ルーム)」「妖精(ようせい)書院(スタディ)」「流星(りゅうせい)室(ルーム)」「銀鱗(ぎんりん)ヶ浜(ビーチ)」「霧雨(きりさめ)塔(タワー)」「漂流(ひょうりゅう)遺跡(ルイン)」「螺旋(らせん)腐海(ケイオスシー)」「幸福(こうふく)壁(ウォール)」 -rand:1/6,5/6,3/6,2/6,1/6,6/6,3/6,4/6,1/6,1/6,2/6,4/6,1/6,5/6,5/6,5/6,4/6,6/6,3/6,2/6,5/6,1/6,6/6,2/6,3/6,3/6,6/6,5/6,4/6,3/6,2/6,1/6,6/6,2/6,3/6,3/6,6/6,6/6,6/6,4/6,2/6,1/6 -============================ -input: -PNT10 -output: -MeikyuKingdom : 地名表(10) > 「殉教(じゅんきょう)運河(カナル)」「幸福(こうふく)階段(ステア)」「流星(りゅうせい)河(ストリーム)」「氷結(ひょうけつ)回廊(コリドー)」「欲望(よくぼう)坑道(トンネル)」「七色(なないろ)通り(ストリート)」「鏡(かがみ)坂(スロープ)」「夕暮れ(ゆうぐれ)街道(ロード)」「水晶(すいしょう)橋(ブリッジ)」「三日月(みかづき)大路(アベニュー)」 -rand:1/6,1/6,5/6,3/6,3/6,3/6,4/6,6/6,4/6,5/6,3/6,2/6,3/6,5/6,4/6,4/6,2/6,1/6,1/6,1/6,4/6,2/6,3/6,4/6,1/6,3/6,5/6,2/6,2/6,5/6,6/6,6/6,6/6,1/6,3/6,6/6,5/6,5/6,6/6,1/6,1/6,5/6 -============================ -input: -PNT10 -output: -MeikyuKingdom : 地名表(10) > 「ドラゴン辻(トレイル)」「バロック大路(アベニュー)」「マヌエル迷宮(メイズ)」「好きな名前決定表で峠(パス)」「バロック辻(トレイル)」「ボヨヨン坑道(トンネル)」「ロマン堀(モート)」「カンパネルラ堀(モート)」「ダイス階段(ステア)」「ウクレレ坂(スロープ)」 -rand:6/6,1/6,3/6,1/6,4/6,6/6,4/6,3/6,5/6,1/6,6/6,1/6,2/6,3/6,6/6,5/6,6/6,2/6,4/6,3/6,6/6,4/6,4/6,1/6,4/6,2/6,3/6,2/6,3/6,6/6,2/6,6/6,6/6,3/6,2/6,2/6,5/6,4/6,4/6,2/6,2/6,5/6 -============================ -input: -PNT10 -output: -MeikyuKingdom : 地名表(10) > 「鏡(かがみ)山脈(マウンテンズ)」「棘々(とげとげ)森(フォレスト)」「殉教(じゅんきょう)沼(ポンド)」「黄金(おうごん)砂漠(デザート)」「夕暮れ(ゆうぐれ)島(アイランド)」「鏡(かがみ)荒野(ヒース)」「棘々(とげとげ)平原(プレイン)」「鏡(かがみ)渓谷(ヴァレー)」「棘々(とげとげ)ヶ淵(プール)」「鏡(かがみ)密林(ジャングル)」 -rand:1/6,4/6,5/6,2/6,4/6,2/6,2/6,4/6,4/6,1/6,5/6,3/6,1/6,5/6,3/6,1/6,1/6,1/6,6/6,6/6,5/6,3/6,5/6,2/6,3/6,3/6,2/6,4/6,5/6,2/6,2/6,5/6,3/6,4/6,2/6,4/6,6/6,5/6,2/6,5/6,2/6,2/6 -============================ -input: -PNT10 -output: -MeikyuKingdom : 地名表(10) > 「ウクレレ通り(ストリート)」「バロック峠(パス)」「ブラック辻(トレイル)」「好きなモンスターの名前河(ストリーム)」「好きなトラップの名前通り(ストリート)」「カンパネルラ坑道(トンネル)」「ミサイル坑道(トンネル)」「ウクレレ穴(ホール)」「モケモケ鉄道(ライン)」「好きなトラップの名前階段(ステア)」 -rand:6/6,1/6,4/6,2/6,1/6,3/6,4/6,3/6,6/6,2/6,4/6,4/6,6/6,4/6,5/6,4/6,5/6,3/6,4/6,6/6,1/6,3/6,2/6,6/6,2/6,4/6,3/6,5/6,4/6,2/6,4/6,2/6,5/6,6/6,1/6,5/6,2/6,2/6,4/6,6/6,5/6,4/6 -============================ -input: -PNT10 -output: -MeikyuKingdom : 地名表(10) > 「七色(なないろ)坑道(トンネル)」「漂流(ひょうりゅう)階段(ステア)」「幸福(こうふく)小路(アレイ)」「棘々(とげとげ)峠(パス)」「三日月(みかづき)小路(アレイ)」「災厄(さいやく)坑道(トンネル)」「螺旋(らせん)坑道(トンネル)」「欲望(よくぼう)河(ストリーム)」「七色(なないろ)坂(スロープ)」「災厄(さいやく)小路(アレイ)」 -rand:2/6,2/6,4/6,3/6,4/6,2/6,2/6,1/6,5/6,4/6,4/6,6/6,1/6,4/6,4/6,2/6,6/6,2/6,6/6,1/6,4/6,1/6,5/6,1/6,4/6,2/6,3/6,3/6,2/6,4/6,1/6,1/6,3/6,5/6,4/6,3/6,5/6,2/6,5/6,1/6,1/6,4/6 -============================ -input: -PNT10 -output: -MeikyuKingdom : 地名表(10) > 「どん底(どんぞこ)星(スター)」「鉤爪(かぎづめ)ヶ原(ランド)」「串刺し(くしざし)沼(ポンド)」「奈落(ならく)連峰(ピークス)」「鬼蜘蛛(おにぐも)渓谷(ヴァレー)」「土竜(もぐら)湖(レイク)」「夜泣き(よなき)ヶ原(ランド)」「血溜まり(ちだまり)ヶ淵(プール)」「土竜(もぐら)平原(プレイン)」「絶望(ぜつぼう)星(スター)」 -rand:4/6,3/6,6/6,6/6,5/6,5/6,2/6,5/6,6/6,2/6,2/6,1/6,5/6,1/6,3/6,3/6,6/6,3/6,3/6,1/6,4/6,3/6,4/6,5/6,2/6,3/6,5/6,5/6,2/6,6/6,2/6,2/6,5/6,6/6,4/6,5/6,5/6,2/6,6/6,4/6,5/6,5/6 -============================ -input: -MLT -output: -MeikyuKingdom : 地名表(1) > 「巨大な縦穴にぶら下がる縄ばしごや鎖」 -rand:5/6,1/6,6/6 -============================ -input: -MLT -output: -MeikyuKingdom : 地名表(1) > 「岩だらけで見通しのきかない空洞」 -rand:2/6,1/6,5/6 -============================ -input: -MLT -output: -MeikyuKingdom : 地名表(1) > 「一面、鏡でできた部屋」 -rand:5/6,5/6,5/6 -============================ -input: -MLT -output: -MeikyuKingdom : 地名表(1) > 「石組みの部屋」 -rand:1/6,1/6,1/6 -============================ -input: -MLT -output: -MeikyuKingdom : 地名表(1) > 「壁がうごめく蟲でおおわれた洞穴」 -rand:2/6,4/6,5/6 -============================ -input: -MLT -output: -MeikyuKingdom : 地名表(1) > 「メトロ汗国の線路」 -rand:1/6,4/6,5/6 -============================ -input: -MLT -output: -MeikyuKingdom : 地名表(1) > 「澄んだ水が流れる噴水と水飲み場」 -rand:4/6,1/6,4/6 -============================ -input: -MLT -output: -MeikyuKingdom : 地名表(1) > 「がらくたが散らばっているゴミ捨て場」 -rand:1/6,3/6,5/6 -============================ -input: -MLT -output: -MeikyuKingdom : 地名表(1) > 「空洞に広がる沼地」 -rand:4/6,2/6,4/6 -============================ -input: -MLT -output: -MeikyuKingdom : 地名表(1) > 「無重量でふわふわ浮く部屋」 -rand:5/6,2/6,5/6 -============================ -input: -MLT1 -output: -MeikyuKingdom : 地名表(1) > 「時折稲妻の走る部屋」 -rand:5/6,4/6,4/6 -============================ -input: -MLT1 -output: -MeikyuKingdom : 地名表(1) > 「色とりどりの珊瑚の中」 -rand:4/6,1/6,2/6 -============================ -input: -MLT1 -output: -MeikyuKingdom : 地名表(1) > 「静まりかえった劇場」 -rand:1/6,3/6,4/6 -============================ -input: -MLT1 -output: -MeikyuKingdom : 地名表(1) > 「地面が干潟化した部屋」 -rand:4/6,6/6,1/6 -============================ -input: -MLT1 -output: -MeikyuKingdom : 地名表(1) > 「折り重なって繁茂する森林」 -rand:3/6,2/6,2/6 -============================ -input: -MLT1 -output: -MeikyuKingdom : 地名表(1) > 「天井に巨大な人の顔がある部屋」 -rand:6/6,6/6,5/6 -============================ -input: -MLT1 -output: -MeikyuKingdom : 地名表(1) > 「切り出し途中で放棄された巨大な石像」 -rand:1/6,3/6,6/6 -============================ -input: -MLT1 -output: -MeikyuKingdom : 地名表(1) > 「時の止まった街」 -rand:6/6,3/6,1/6 -============================ -input: -MLT1 -output: -MeikyuKingdom : 地名表(1) > 「静まりかえった教室」 -rand:6/6,5/6,5/6 -============================ -input: -MLT1 -output: -MeikyuKingdom : 地名表(1) > 「雲の上。なぜか、その上を歩くことができる」 -rand:5/6,3/6,2/6 -============================ -input: -MLT10 -output: -MeikyuKingdom : 地名表(10) > 「オーロラがゆらめく空洞」「澄んだ水が流れる噴水と水飲み場」「空洞中に広がるアザラシの営巣地」「生物が掘った、つるつるした洞穴」「石組みの部屋」「轟々と音を立てる巨大排気孔」「真ん中に大木が一本そびえ立っている空洞」「流砂が流れる洞穴」「底に遺跡が見える水没した空洞」「埋まりかけで天井すれすれの洞穴」 -rand:5/6,5/6,6/6,4/6,4/6,1/6,3/6,2/6,4/6,2/6,2/6,5/6,1/6,1/6,1/6,5/6,3/6,6/6,3/6,4/6,3/6,2/6,2/6,4/6,4/6,3/6,4/6,2/6,3/6,6/6 -============================ -input: -MLT10 -output: -MeikyuKingdom : 地名表(10) > 「巨大な縦穴に刻まれた螺旋階段」「静まりかえった教室」「垂直の空洞にえんえんと伸びる大木の幹」「鳥の羽毛が舞い落ちる部屋」「鳥の羽毛が舞い落ちる部屋」「毛が生えている部屋」「奇怪な彫刻が施された古井戸」「切り出し途中で放棄された巨大な石像」「古びた、素朴な祭壇」「コウモリや羽蟲が飛び交う洞穴」 -rand:1/6,1/6,2/6,6/6,5/6,5/6,3/6,2/6,3/6,5/6,4/6,5/6,5/6,5/6,4/6,6/6,5/6,1/6,4/6,6/6,5/6,1/6,3/6,6/6,1/6,4/6,1/6,2/6,2/6,1/6 -============================ -input: -MLT10 -output: -MeikyuKingdom : 地名表(10) > 「流砂が流れる洞穴」「樽や鎖が放置されている船の中」「雪がしんしんと降り積もる部屋」「真ん中に大木が一本そびえ立っている空洞」「メトロ汗国の線路」「無限に連なる真っ白な洗濯物」「壁から木の根が突き出している部屋」「壁に貝やフジツボがはりついた部屋」「巨大な空洞にかけられた自然の橋」「腰高まで水に浸かった部屋」 -rand:2/6,2/6,4/6,4/6,5/6,2/6,5/6,6/6,2/6,3/6,3/6,4/6,1/6,5/6,4/6,5/6,4/6,1/6,3/6,1/6,5/6,4/6,6/6,6/6,2/6,3/6,5/6,4/6,1/6,3/6 -============================ -input: -MLT10 -output: -MeikyuKingdom : 地名表(10) > 「青空が壁面いっぱいに描かれた空洞」「切り出し途中で放棄された巨大な石像」「巨大な岩の隙間」「人骨で組まれている部屋」「濃霧に覆われた空洞」「サボテンが点在する部屋」「底に遺跡が見える水没した空洞」「天空に向かって伸びる豆の木」「生物の粘液したたる体内」「動物や狩を描いた素朴な壁画が続く洞穴」 -rand:5/6,4/6,6/6,1/6,3/6,6/6,2/6,3/6,3/6,6/6,6/6,2/6,5/6,4/6,2/6,3/6,2/6,6/6,4/6,4/6,3/6,5/6,5/6,1/6,6/6,2/6,2/6,2/6,3/6,4/6 -============================ -input: -MLT10 -output: -MeikyuKingdom : 地名表(10) > 「澄んだ水が流れる噴水と水飲み場」「天井に巨大な人の顔がある部屋」「生物が掘った、つるつるした洞穴」「腰高まで水に浸かった部屋」「高い天井の厨房」「誰かのキャンプ跡」「錆びついた扉が残る巨大な門」「ブランコやすべり台のある小公園」「人骨で組まれている部屋」「常に揺れている部屋」 -rand:4/6,1/6,4/6,6/6,5/6,6/6,2/6,2/6,5/6,4/6,1/6,3/6,1/6,6/6,2/6,2/6,1/6,4/6,1/6,5/6,6/6,6/6,2/6,3/6,6/6,6/6,2/6,6/6,6/6,6/6 -============================ -input: -MLT10 -output: -MeikyuKingdom : 地名表(10) > 「天空に向かって伸びる豆の木」「流砂が流れる洞穴」「オーロラがゆらめく空洞」「冷えきった氷の洞穴」「巨大な空洞にかけられた自然の橋」「ラブホテルの一室」「雪がしんしんと降り積もる部屋」「澄んだ水が流れる噴水と水飲み場」「樽や鎖が放置されている船の中」「絵画や彫刻が展示してあるギャラリー」 -rand:5/6,1/6,5/6,2/6,2/6,4/6,5/6,6/6,5/6,2/6,6/6,2/6,2/6,5/6,3/6,6/6,5/6,3/6,5/6,2/6,6/6,4/6,1/6,4/6,4/6,2/6,5/6,1/6,4/6,6/6 -============================ -input: -MLT10 -output: -MeikyuKingdom : 地名表(10) > 「桟橋と船着き場」「かつて建設された上水道の中」「強風の吹き荒れる部屋」「真ん中に大木が一本そびえ立っている空洞」「動物の声が響き渡る密林」「放置された坑道」「ペンギンの右往左往する氷結した湖」「静まりかえった劇場」「生い茂る竹林」「静まりかえった教室」 -rand:4/6,5/6,3/6,4/6,5/6,4/6,5/6,2/6,2/6,3/6,3/6,4/6,3/6,2/6,1/6,2/6,3/6,1/6,4/6,6/6,4/6,1/6,4/6,3/6,3/6,5/6,4/6,6/6,5/6,5/6 -============================ -input: -MLT10 -output: -MeikyuKingdom : 地名表(10) > 「無限に連なる真っ白な洗濯物」「壁から木の根が突き出している部屋」「沸騰する湖」「巨大キノコの群生地」「かつて建設された上水道の中」「せせこましいカラオケボックス」「生物が掘った、つるつるした洞穴」「静まりかえった劇場」「植え込みで作られた迷宮庭園」「静まりかえった教室」 -rand:5/6,1/6,4/6,3/6,5/6,1/6,4/6,5/6,1/6,3/6,3/6,3/6,4/6,5/6,4/6,6/6,1/6,2/6,2/6,5/6,2/6,1/6,3/6,4/6,3/6,4/6,4/6,6/6,5/6,5/6 -============================ -input: -MLT10 -output: -MeikyuKingdom : 地名表(10) > 「古びた六畳間」「空洞に広がる耕作地」「がらくたが散らばっているゴミ捨て場」「埋まりかけで天井すれすれの洞穴」「空洞に広がる耕作地」「石組みのトイレ」「コウモリや羽蟲が飛び交う洞穴」「重力方向がばらばらの部屋」「濃霧に覆われた空洞」「水槽が並ぶ水族館」 -rand:6/6,1/6,1/6,3/6,6/6,1/6,1/6,3/6,5/6,2/6,6/6,3/6,3/6,6/6,1/6,1/6,2/6,5/6,2/6,2/6,1/6,5/6,6/6,6/6,5/6,4/6,2/6,4/6,6/6,2/6 -============================ -input: -MLT10 -output: -MeikyuKingdom : 地名表(10) > 「空洞に広がる耕作地」「地面が干潟化した部屋」「落ち葉がうずたかく積もった部屋」「筏やハシケが浮かぶ湖」「青空が壁面いっぱいに描かれた空洞」「鳥の羽毛が舞い落ちる部屋」「雪がしんしんと降り積もる部屋」「巨大な縦穴に刻まれた螺旋階段」「石組みの巨大な階段」「流砂が流れる洞穴」 -rand:3/6,6/6,1/6,4/6,1/6,6/6,3/6,6/6,3/6,4/6,3/6,6/6,5/6,6/6,4/6,5/6,5/6,4/6,5/6,2/6,6/6,1/6,2/6,1/6,1/6,1/6,6/6,2/6,4/6,2/6 -============================ -input: -KNT1 -output: -MeikyuKingdom : 王国名表(11) > 暗黒 -rand:1/6,1/6 -============================ -input: -KNT1 -output: -MeikyuKingdom : 王国名表(66) > 立憲 -rand:6/6,6/6 -============================ -input: -KNT2 -output: -MeikyuKingdom : 王国名表(66) > (国王の名前。後で決定) -rand:6/6,6/6 -============================ -input: -KNT3 -output: -MeikyuKingdom : 王国名表(66) > 連邦 -rand:6/6,6/6 -============================ -input: -WORD1 -output: -MeikyuKingdom : 単語表(66) > バカ -rand:6/6,6/6 -============================ -input: -WORD2 -output: -MeikyuKingdom : 単語表(66) > ホラ話 -rand:6/6,6/6 -============================ -input: -WORD3 -output: -MeikyuKingdom : 単語表(66) > ねこみみ -rand:6/6,6/6 -============================ -input: -WORD4 -output: -MeikyuKingdom : 単語表(66) > 虫 -rand:6/6,6/6 -============================ -input: -NAMEA -output: -MeikyuKingdom : 名前A表(66) > ソープ/ブルーム -rand:6/6,6/6 -============================ -input: -NAMEB -output: -MeikyuKingdom : 名前B表(66) > シリング/シルク -rand:6/6,6/6 -============================ -input: -NAMEEX -output: -MeikyuKingdom : エキゾチック名前表(66) > プレイヤーと同じ名前 -rand:6/6,6/6 -============================ -input: -NAMEFA -output: -MeikyuKingdom : ファンタジック名前表(66) > カレワラ/イーハトーブ -rand:6/6,6/6 -============================ -input: -ABT -output: -MeikyuKingdom : 捜索後休憩表(2) > 「おつとめ、ご苦労様です」同行する民たちが感謝の言葉をかける。《民の声》が1点回復する。 -rand:1/6,1/6 -============================ -input: -ABT -output: -MeikyuKingdom : 捜索後休憩表(12) > 「へぇ、こんなヤツだったのか」仲間の意外な一面を見つける。宮廷の中から好きなキャラクター1人を選ぶ。自分のそのキャラクターに対する《好意》か《敵意》を1点上昇させ、その属性を好きなものに変更できる。 -rand:6/6,6/6 -============================ -input: -WBT -output: -MeikyuKingdom : 全体休憩表(2) > 部屋の中から使えそうな装備をみつくろう。宮廷全員は、それぞれ好きなコモンアイテムのカテゴリを選び、そのランダムにコモンアイテムを1つ獲得する。そのアイテムにレベルがあれば、それは1レベルのものとなる。 -rand:1/6,1/6 -============================ -input: -WBT -output: -MeikyuKingdom : 全体休憩表(12) > 宮廷の前に光り輝くアイテムが降臨する。レア武具アイテムかレア一般アイテムのどちらかを選ぶ。ランダムにそのアイテムを1つ選び、それを獲得する。 -rand:6/6,6/6 -============================ -input: -LBT -output: -MeikyuKingdom : カップル休憩表(11) > 「あーもう、最悪!」仲良く休憩するつもりが、ひどい喧嘩になってしまう。この表の使用者のお互いに対する《好意》が0になり、その値の分だけお互いに対する《敵意》が上昇する。 -rand:1/6,1/6 -============================ -input: -LBT -output: -MeikyuKingdom : カップル休憩表(66) > 「…………」気がつくとお互い、目をそらせなくなってしまう。そのまま顔を寄せ合い……。この表の使用者のお互いに対する《好意》が2点上昇し、その属性を「愛情」にする。 -rand:6/6,6/6 -============================ -input: -3D6>=? 目標値?でバグらない -output: -MeikyuKingdom : (3D6>=?) > 9[3,3,3] > 9 > 失敗 -rand:3/6,3/6,3/6 diff --git a/src/src_bcdice/test/data/MeikyuKingdomBasic.txt b/src/src_bcdice/test/data/MeikyuKingdomBasic.txt deleted file mode 100644 index 4cefeb39e..000000000 --- a/src/src_bcdice/test/data/MeikyuKingdomBasic.txt +++ /dev/null @@ -1,1109 +0,0 @@ -input: -2d6>=9 -output: -MeikyuKingdomBasic : (2D6>=9) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2d6>=4 -output: -MeikyuKingdomBasic : (2D6>=4) > 8[2,6] > 8 > 成功 & 《気力》1点獲得 -rand:6/6,2/6 -============================ -input: -2d6>=9 -output: -MeikyuKingdomBasic : (2D6>=9) > 7[1,6] > 7 > 失敗 & 《気力》1点獲得 -rand:6/6,1/6 -============================ -input: -2d6>=9 -output: -MeikyuKingdomBasic : (2D6>=9) > 12[6,6] > 12 > 絶対成功 & 《気力》2点獲得 -rand:6/6,6/6 -============================ -input: -2d6>=9 -output: -MeikyuKingdomBasic : (2D6>=9) > 12[6,6] > 12 > 絶対成功 & 《気力》2点獲得 -rand:6/6,6/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdomBasic : (2D6>=7) > 5[2,3] > 5 > 失敗 -rand:3/6,2/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdomBasic : (2D6>=7) > 8[4,4] > 8 > 成功 -rand:4/6,4/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdomBasic : (2D6>=7) > 9[4,5] > 9 > 成功 -rand:4/6,5/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdomBasic : (2D6>=7) > 9[4,5] > 9 > 成功 -rand:4/6,5/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdomBasic : (2D6>=7) > 6[1,5] > 6 > 失敗 -rand:5/6,1/6 -============================ -input: -2d6>=7 -output: -MeikyuKingdomBasic : (2D6>=7) > 8[2,6] > 8 > 成功 & 《気力》1点獲得 -rand:6/6,2/6 -============================ -input: -1MK -output: -MeikyuKingdomBasic : (1R6) > 1 -rand:1/6 -============================ -input: -1MK -output: -MeikyuKingdomBasic : (1R6) > 6 -rand:6/6 -============================ -input: -2MK -output: -MeikyuKingdomBasic : (2R6) > 8[2,6] > 8 -rand:6/6,2/6 -============================ -input: -2MK+3 -output: -MeikyuKingdomBasic : (2R6+3) > 9[4,5]+3 > 12 -rand:4/6,5/6 -============================ -input: -10MK -output: -MeikyuKingdomBasic : (10R6) > 11[2,2,2,2,3,4,4,5,5,6] > 11 -rand:3/6,2/6,4/6,2/6,4/6,5/6,5/6,2/6,2/6,6/6 -============================ -input: -10MK+10 -output: -MeikyuKingdomBasic : (10R6+10) > 9[1,1,2,2,2,3,3,4,4,5]+10 > 19 -rand:5/6,3/6,2/6,4/6,4/6,1/6,3/6,1/6,2/6,2/6 -============================ -input: -10MK+10 -output: -MeikyuKingdomBasic : (10R6+10) > 12[1,1,2,2,2,3,4,5,6,6]+10 > 22 -rand:1/6,2/6,3/6,5/6,1/6,4/6,2/6,2/6,6/6,6/6 -============================ -input: -1MK>=2 -output: -MeikyuKingdomBasic : (1R6>=2) > 6 > 成功 & 《気力》1点獲得 -rand:6/6 -============================ -input: -1MK+2>=2 -output: -MeikyuKingdomBasic : (1R6+2>=2) > 6[6]+2 > 8 > 成功 & 《気力》1点獲得 -rand:6/6 -============================ -input: -3MK+4>=10 -output: -MeikyuKingdomBasic : (3R6+4>=10) > 9[1,3,6]+4 > 13 > 成功 & 《気力》1点獲得 -rand:1/6,3/6,6/6 -============================ -input: -4MK+1>=8 -output: -MeikyuKingdomBasic : (4R6+1>=8) > 12[6,6,6,6]+1 > 13 > 絶対成功 & 《気力》4点獲得 -rand:6/6,6/6,6/6,6/6 -============================ -input: -4MK+1>=8 -output: -MeikyuKingdomBasic : (4R6+1>=8) > 12[1,6,6,6]+1 > 13 > 絶対成功 & 《気力》3点獲得 -rand:1/6,6/6,6/6,6/6 -============================ -input: -4MK+1>=8 -output: -MeikyuKingdomBasic : (4R6+1>=8) > 12[1,1,6,6]+1 > 13 > 絶対成功 & 《気力》2点獲得 -rand:1/6,1/6,6/6,6/6 -============================ -input: -RT -output: -MeikyuKingdomBasic : 視察表(2) > 神託が下る。苦難がPCを襲うが、それは救いのための試練である。このセッションの間、PCが10点以上のダメージをモンスターから受けるたび《民の声》+1。 -rand:1/6,1/6 -============================ -input: -RT -output: -MeikyuKingdomBasic : 視察表(8) > 民たちは新しい施設の建設を望んでいる。このセッションの間、自国に「木」を5個輸送するたび《民の声》+1。 -rand:5/6,3/6 -============================ -input: -RT -output: -MeikyuKingdomBasic : 視察表(12) > 民たちはワクワクするような冒険譚を求めている! このセッションのシナリオの目的を達成していたら、終了フェイズの円卓会議の開始時に、(1D6)MGが手に入る。 -rand:6/6,6/6 -============================ -input: -TBT -output: -MeikyuKingdomBasic : 才覚休憩表(2) > 寝付けないので、民と噂話に花を咲かせる。すると、経費削減のアイデアが……。[才覚/9]の判定を行う。成功すると、このセッションの《維持費》を(1D6)MG減少できる。 -rand:1/6,1/6 -============================ -input: -TBT -output: -MeikyuKingdomBasic : 才覚休憩表(8) > 地図を前にして、今後の冒険について口角泡を飛ばす。意見の対立はあったが、あなたの意見が通った。我々に必要なのは英雄的死亡ではなく、卑劣な生存なのだ。 宮廷の好きなキャラクター1体を選ぶ。そのキャラクターの自分に対する《敵意》を好きなだけ上昇させ、上昇した値だけ《民の声》を回復する。 -rand:5/6,3/6 -============================ -input: -TBT -output: -MeikyuKingdomBasic : 才覚休憩表(12) > 「やはりな……」迷宮は予想通り、一筋縄ではいかないようだ。こんなときこそ、準備しておいたアレが役に立つ。自分の修得しているスキル1種を選ぶ。そのスキルを喪失して、そのスキルと同じスキルグループのスキル1種を修得してもよい。この効果は永続する。 -rand:6/6,6/6 -============================ -input: -CBT -output: -MeikyuKingdomBasic : 魅力休憩表(2) > 妖精のワイン蔵を発見、酒盛りが始まる。宮廷全員の《気力》+1。[魅カ/9]の判定に失敗すると、酔っ払ったあなたは服を脱ぎはじめる。(1D6)を振る。自分を除く宮廷全員のあなたに対する《感情値》+1、奇数ならその属性が《好意》、偶数なら《敵意》になる。 -rand:1/6,1/6 -============================ -input: -CBT -output: -MeikyuKingdomBasic : 魅力休憩表(8) > 見張りの途中にうたた寝。目を覚ますと、誰かが毛布をかけてくれていた。ランダムにキャラクターを選ぶ。自分のそのキャラクターに対する《好意》+1。 -rand:5/6,3/6 -============================ -input: -CBT -output: -MeikyuKingdomBasic : 魅力休憩表(12) > ふとした拍子に唇が触れあう★ 好きなキャラクター1体を選ぶ。そのキャラクターの自分以外に対する《好意》を合計し、その値を自分に対する《好意》に加える。その後、そのキャラクターの自分以外に対する《好意》をすべて0にする。 -rand:6/6,6/6 -============================ -input: -SBT -output: -MeikyuKingdomBasic : 探索休憩表(2) > 一休みする前に道具の手入れ。使い慣れた道具ほど手になじむ。ランダムに自分の装備しているアイテム1つを選ぶ。そのアイテムのレベルが1上昇する。 -rand:1/6,1/6 -============================ -input: -SBT -output: -MeikyuKingdomBasic : 探索休憩表(8) > 壁に描かれた奇妙な壁画が、あなたを見つめているような気がする……。[探索/9]の判定を行う。成功すると、【エレベータ】を発見する。 -rand:5/6,3/6 -============================ -input: -SBT -output: -MeikyuKingdomBasic : 探索休憩表(12) > こ、これは秘密の扉!? [探索/11]の判定を行う。成功すると、この部屋に隣接する好きな部屋に通路を伸ばすことができる。 -rand:6/6,6/6 -============================ -input: -VBT -output: -MeikyuKingdomBasic : 武勇休憩表(2) > 時が満ちるにつれ、闘志が高まる。現在の経過ターン数と等しい値だけ、《気力》が回復する。 -rand:1/6,1/6 -============================ -input: -VBT -output: -MeikyuKingdomBasic : 武勇休憩表(8) > ちょっとした行き違いから、軽い口論になってしまう。宮廷の中からランダムにキャラクターを1体選ぶ。そのキャラクターとあなたの互いに対する《敵意》+1。 -rand:5/6,3/6 -============================ -input: -VBT -output: -MeikyuKingdomBasic : 武勇休憩表(12) > ……殺気! あなたは、毛布をはねのけ、戦闘態勢を整えるよう指示した。「特殊遭遇表」を1回使用し、その後、好きな素材を(1D6)個獲得する。さらに、ランダムにレアアイテム1種を選び、それを手に入れる。 -rand:6/6,6/6 -============================ -input: -THT -output: -MeikyuKingdomBasic : 才覚ハプニング表(2) > 自分に王国を導くことなど可能なのだろうか……。【お酒】を1個消費することができなければ、このセッションの間、[才覚]-1。 -rand:1/6,1/6 -============================ -input: -THT -output: -MeikyuKingdomBasic : 才覚ハプニング表(8) > あなたの失策が近隣で噂になる。近隣の国からランダムに国を1つ選ぶ。その国との関係が1段階悪化する。 -rand:5/6,3/6 -============================ -input: -THT -output: -MeikyuKingdomBasic : 才覚ハプニング表(12) > 今の自分に自信が持てなくなる。生まれ表からランダムにジョブを1つ選び、現在のジョブをそのジョブに変更する。 -rand:6/6,6/6 -============================ -input: -CHT -output: -MeikyuKingdomBasic : 魅力ハプニング表(2) > 民同士のいさかいに心を痛め、頭髪にダメージが! 【お酒】を1個消費することができなければ、このセッションの間、[魅力]-1。 -rand:1/6,1/6 -============================ -input: -CHT -output: -MeikyuKingdomBasic : 魅力ハプニング表(8) > 宮廷に嫉妬の嵐が巻き起こる。宮廷の中で、あなたに対して《好意》を持つキャラクターの数を数える。このセッションの間、行為判定を行うとき、サイコロの目の合計がこの数以下だった場合、絶対失敗となる(2未満にはならない)。 -rand:5/6,3/6 -============================ -input: -CHT -output: -MeikyuKingdomBasic : 魅力ハプニング表(12) > 他人が信用できなくなる。このセッションの間、協調行動を行えなくなる。 -rand:6/6,6/6 -============================ -input: -SHT -output: -MeikyuKingdomBasic : 探索ハプニング表(2) > 指の震えが止まらない……。【お酒】を1個消費することができなければ、このセッション中、[探索]-1。 -rand:1/6,1/6 -============================ -input: -SHT -output: -MeikyuKingdomBasic : 探索ハプニング表(8) > 友情にヒビが! 宮廷全員のあなたに対する《敵意》+1。 -rand:5/6,3/6 -============================ -input: -SHT -output: -MeikyuKingdomBasic : 探索ハプニング表(12) > あなたを憎む迷宮支配者が、あなたの首に賞金をかけた。このセッションの間、モンスターの攻撃やトラップの目標をランダムに決める場合、その目標は必ずあなたになる(この効果を2人以上が受けた場合、この効果を受けた者の中でランダムに決定する)。 -rand:6/6,6/6 -============================ -input: -VHT -output: -MeikyuKingdomBasic : 武勇ハプニング表(2) > つい幼児退行を起こしそうになる。【お酒】を1個消費することができなければ、このセッション中、[武勇]-1。 -rand:1/6,1/6 -============================ -input: -VHT -output: -MeikyuKingdomBasic : 武勇ハプニング表(8) > 豚どもめ……。宮廷全員に対する《敵意》+1。 -rand:5/6,3/6 -============================ -input: -VHT -output: -MeikyuKingdomBasic : 武勇ハプニング表(12) > 自分の失敗が許せない。このセッションの間、《器》が1点減少したものとして扱う。 -rand:6/6,6/6 -============================ -input: -KDT -output: -MeikyuKingdomBasic : 王国災厄表(2) > 王国の悪い噂が蔓延する。既知の土地にある他国との関係が、すべて1段階悪化する。 -rand:1/6,1/6 -============================ -input: -KDT -output: -MeikyuKingdomBasic : 王国災厄表(8) > 敵国が陰謀を仕掛けてくる。[文化レベル/9]の判定を行う。失敗すると、ランダムに選んだ逸材1人を失う。 -rand:5/6,3/6 -============================ -input: -KDT -output: -MeikyuKingdomBasic : 王国災厄表(12) > 敵国の勢力が強大化する。GMは、関係が敵対の国すべてについて、その国の領土に接する好きな土地1つを選ぶ。その土地をその国の領土にする。 -rand:6/6,6/6 -============================ -input: -KCT -output: -MeikyuKingdomBasic : 王国変動表(9) > 街の機能に異変が!? [治安レベル/9]の判定に成功すると、自国の好きな施設1軒を選び、その施設のレベルを1点上昇する。失敗したら、自国のタイプ:部屋の施設をランダムに1軒選び、破壊する。 -rand:4/6,5/6 -============================ -input: -KCT -output: -MeikyuKingdomBasic : 王国変動表(9) > 街の機能に異変が!? [治安レベル/9]の判定に成功すると、自国の好きな施設1軒を選び、その施設のレベルを1点上昇する。失敗したら、自国のタイプ:部屋の施設をランダムに1軒選び、破壊する。 -rand:6/6,3/6 -============================ -input: -KCT -output: -MeikyuKingdomBasic : 王国変動表(5) > 民の労働の結果が明らかに。[生活レベル/9]の判定に成功すると《予算》が自国の領土のマップ数と同じだけ増える。失敗したら《予算》が同じだけ減る。 -rand:4/6,1/6 -============================ -input: -KCT -output: -MeikyuKingdomBasic : 王国変動表(5) > 民の労働の結果が明らかに。[生活レベル/9]の判定に成功すると《予算》が自国の領土のマップ数と同じだけ増える。失敗したら《予算》が同じだけ減る。 -rand:1/6,4/6 -============================ -input: -KCT -output: -MeikyuKingdomBasic : 王国変動表(3) > 冒険の成功を祝う民たちが出迎えてくれる。《民の声》+2。この結果を出したプレイヤー以外の全員は、今回の冒険を振り返り当プレイヤーのPCが《好意》を得るとしたら誰が一番ふさわしいかを協議する。決定したキャラへのPCの《好意》+1 -rand:1/6,2/6 -============================ -input: -KCT -output: -MeikyuKingdomBasic : 王国変動表(8) > 民は領土を渇望していた。5MGを支払えば、隣接する未知の土地1つを領土にできる。(1D6)を振り、その数だけ通路を引くことができる。通路でつながっていない部屋は自国の領土として扱わない。 -rand:4/6,4/6 -============================ -input: -KCT -output: -MeikyuKingdomBasic : 王国変動表(6) > あなたの活躍を耳にした者たちがやってくる。シナリオの目的を満たしている場合、関係が良好・同盟の国の数だけ(1D6)を振り、[合計値+治安レベル]人だけ《民》が増える。 -rand:4/6,2/6 -============================ -input: -KCT -output: -MeikyuKingdomBasic : 王国変動表(5) > 民の労働の結果が明らかに。[生活レベル/9]の判定に成功すると《予算》が自国の領土のマップ数と同じだけ増える。失敗したら《予算》が同じだけ減る。 -rand:3/6,2/6 -============================ -input: -KCT -output: -MeikyuKingdomBasic : 王国変動表(8) > 民は領土を渇望していた。5MGを支払えば、隣接する未知の土地1つを領土にできる。(1D6)を振り、その数だけ通路を引くことができる。通路でつながっていない部屋は自国の領土として扱わない。 -rand:6/6,2/6 -============================ -input: -KCT -output: -MeikyuKingdomBasic : 王国変動表(2) > 列強のプロパガンダが現れる。(1D6)を振り、その目が現在の《民の声》以下で、現在列強の属国になっていたら属国から抜けることができる。上回っていたら、ランダムに列強を1つ選びその属国になる。 -rand:1/6,1/6 -============================ -input: -CAT -output: -MeikyuKingdomBasic : 痛打表(2) > あなたの攻撃の手応えが、武器に刻まれる。その攻撃に使用した武具アイテムのレベルが1点上昇する。 -rand:1/6,1/6 -============================ -input: -CAT -output: -MeikyuKingdomBasic : 痛打表(8) > 敵の勢いを利用し、大ダメージ! ダメージが攻撃目標のレベルと同じ値だけ上昇する。 -rand:5/6,3/6 -============================ -input: -CAT -output: -MeikyuKingdomBasic : 痛打表(12) > 敵の急所をとらえ、一撃のもとに斬り伏せる。攻撃目標の《HP》を0点にする。 -rand:6/6,6/6 -============================ -input: -FWT -output: -MeikyuKingdomBasic : 致命傷表(2) > 圧倒的な攻撃が、急所を貫く。死亡する。 -rand:1/6,1/6 -============================ -input: -FWT -output: -MeikyuKingdomBasic : 致命傷表(8) > 偶然、アイテムが衝撃からキミを護る。装備しているアイテムから、ランダムに1つを選ぶ。そのアイテムを破壊し、ダメージを無効にする。もし、破壊できるアイテムを1つも装備していないと行動不能になる。 -rand:5/6,3/6 -============================ -input: -FWT -output: -MeikyuKingdomBasic : 致命傷表(12) > 幸運なことに、ダメージは避けられる。しかし、ランダムに変調1つを選び、それを受ける。数値がある場合、3になる。 -rand:6/6,6/6 -============================ -input: -CFT -output: -MeikyuKingdomBasic : 戦闘ファンブル表(2) > 敵に援軍が現れる! 敵軍の中でもっともレベルの低いモンスターが(1D6)体増える。モンスターがこの結果になった場合、好きなPCの《配下》が(1D6)体上昇する。 -rand:1/6,1/6 -============================ -input: -CFT -output: -MeikyuKingdomBasic : 戦闘ファンブル表(8) > 自分の攻撃の勢いを利用され、相手の反撃を受ける。自分の《HP》を現在の値の半分にする。 -rand:5/6,3/6 -============================ -input: -CFT -output: -MeikyuKingdomBasic : 戦闘ファンブル表(12) > あっ! 武器がすっぽぬけた。攻撃に使用していたアイテムが破壊される。モンスターの場合、自分に(1D6)点ダメージ。さらに、戦場シートにいるキャラクターの中からランダムにキャラクター1体を選ぶ。そのキャラクターの《HP》が1点になる。 -rand:6/6,6/6 -============================ -input: -TT -output: -MeikyuKingdomBasic : 道中表(2) > 道中の時間が、人間関係に変化をもたらす。全員、好きなキャラクター1人を選ぶ。そのキャラクターに対する《感情値》が1点上昇する。 -rand:1/6,1/6 -============================ -input: -TT -output: -MeikyuKingdomBasic : 道中表(8) > モンスターの襲撃を受ける。全員、[武勇/9]の判定を行う。失敗したPCは、《HP》を(1D6)点減少する。 -rand:5/6,3/6 -============================ -input: -TT -output: -MeikyuKingdomBasic : 道中表(12) > ラッキー♪ 1MGを拾った。 -rand:6/6,6/6 -============================ -input: -NT -output: -MeikyuKingdomBasic : 交渉表(2) > 中立的な態度は偽装だった。彼らは油断をついて不意打ちを行う。奇襲扱いで戦闘を行うこと。 -rand:1/6,1/6 -============================ -input: -NT -output: -MeikyuKingdomBasic : 交渉表(8) > 怪物たちは、値踏みするようにこちらを見ている。維持費を(1D6)MG上昇させれば、モンスターたちは友好的になる。上昇させなければ、戦闘を行うこと。 -rand:5/6,3/6 -============================ -input: -NT -output: -MeikyuKingdomBasic : 交渉表(12) > 運命の出会い。一目見た瞬間、うち解け合った。モンスターたちの宮廷の代表に対する《好意》+1、さらにモンスターたちは友好的になる。 -rand:6/6,6/6 -============================ -input: -SE -output: -MeikyuKingdomBasic : 特殊遭遇表(1) > 宙を舞う【グレムリン】が、宮廷の方を物欲しそうに眺めている。宮廷の中で、素材欄に「機械」が含まれているアイテムを持っているPC全員は、[才覚/7+装備している素材欄に「機械」が含まれるアイテムの数]の判定を行う。失敗したPCは、そのアイテムをすべて破壊し、[装備している素材欄に「機械」が含まれるアイテムの数]D6点のダメージを受ける。 -rand:1/6 -============================ -input: -SE -output: -MeikyuKingdomBasic : 特殊遭遇表(6) > 災厄教の巡礼者の一団に出会う。彼らは、迷宮災厄こそおごり高ぶった人類への罰であり、悔い改めよとその教えを説いた。《配下》を1人以上連れているキャラクターは、[魅力/自分の《配下》の数+5]の判定を行う。失敗したPC1人につき、《民の声》-1。 -rand:6/6 -============================ -input: -IG -output: -MeikyuKingdomBasic : 情報収集表(2) > 調査隊は、伝説の財宝の噂を聞きつける。《配下》を(1D6)人消費すると、迷宮マップの中からランダムに部屋を1つ目標に選ぶことができる。冒険フェイズに目標の捜索に成功すると、ランダムに選んだレアアイテム1個を獲得する。 -rand:1/6,1/6 -============================ -input: -IG -output: -MeikyuKingdomBasic : 情報収集表(8) > 調査隊は不慮の事故に巻き込まれる。《配下》を1人消費すると、迷宮マップの中から好きな部屋を1つ目標に選ぶことができる。目標の脅威情報と通路情報をGMに教えてもらう。 -rand:5/6,3/6 -============================ -input: -IG -output: -MeikyuKingdomBasic : 情報収集表(12) > 調査隊の素晴らしい活躍! 迷宮マップの中から好きな部屋を1つ目標に選ぶ。目標の脅威情報と通路情報をGMに教えてもらう。さらに、「情報収集表」をもう1回使用できる。 -rand:6/6,6/6 -============================ -input: -BDT -output: -MeikyuKingdomBasic : 生まれ決定表(4) > 武勇系生まれ表で決定 -rand:4/6 -============================ -input: -TBO -output: -MeikyuKingdomBasic : 才覚系生まれ表(1) > 魔導師 -rand:1/6 -============================ -input: -CBO -output: -MeikyuKingdomBasic : 魅力系生まれ表(6) > 語り部 -rand:6/6 -============================ -input: -SBO -output: -MeikyuKingdomBasic : 探索系生まれ表(1) > 迷宮職人 -rand:1/6 -============================ -input: -VBO -output: -MeikyuKingdomBasic : 武勇系生まれ表(4) > 冒険者 -rand:4/6 -============================ -input: -ET -output: -MeikyuKingdomBasic : 感情表(4) > 怒り -rand:4/6 -============================ -input: -ET -output: -MeikyuKingdomBasic : 感情表(1) > 忠誠 -rand:1/6 -============================ -input: -FET -output: -MeikyuKingdomBasic : 好意表(5) > 愛情 -rand:5/6 -============================ -input: -HET -output: -MeikyuKingdomBasic : 敵意表(6) > 侮蔑 -rand:6/6 -============================ -input: -MPT -output: -MeikyuKingdomBasic : 相場表(9) > 木 -rand:3/6,6/6 -============================ -input: -WORD1 -output: -MeikyuKingdomBasic : 単語表(12) > おめかし -rand:2/6,1/6 -============================ -input: -WORD2 -output: -MeikyuKingdomBasic : 単語表(16) > 仕事 -rand:6/6,1/6 -============================ -input: -WORD3 -output: -MeikyuKingdomBasic : 単語表(23) > 酒盛り -rand:3/6,2/6 -============================ -input: -WORD4 -output: -MeikyuKingdomBasic : 単語表(56) > 星 -rand:5/6,6/6 -============================ -input: -NAMEA -output: -MeikyuKingdomBasic : 名前A表(26) > アヴァランチ/エクレール -rand:6/6,2/6 -============================ -input: -NAMEB -output: -MeikyuKingdomBasic : 名前B表(23) > シュバルツ/モエギ -rand:2/6,3/6 -============================ -input: -NAMEEX -output: -MeikyuKingdomBasic : エキゾチック名前表(45) > 好きな動物の名前(イタチ,パグ) -rand:5/6,4/6 -============================ -input: -NAMEFA -output: -MeikyuKingdomBasic : ファンタジック名前表(33) > ワタリガラス/ディードリット -rand:3/6,3/6 -============================ -input: -RT -output: -MeikyuKingdomBasic : 視察表(8) > 民たちは新しい施設の建設を望んでいる。このセッションの間、自国に「木」を5個輸送するたび《民の声》+1。 -rand:6/6,2/6 -============================ -input: -T1T -output: -MeikyuKingdomBasic : お宝1表(4) > そのモンスターの素材欄の中から、好きな素材2個 -rand:4/6 -============================ -input: -T2T -output: -MeikyuKingdomBasic : お宝2表(5) > ランダムに武具アイテム1個を選ぶ。そのアイテムにレベルがあれば、1レベルのものが手に入る -rand:5/6 -============================ -input: -T3T -output: -MeikyuKingdomBasic : お宝3表(4) > 好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個を選ぶ。そのアイテムにレベルがあれば、アイテムなら1レベルのものが手に入る -rand:4/6 -============================ -input: -T4T -output: -MeikyuKingdomBasic : お宝4表(3) > 好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個を選ぶ。そのアイテムにレベルがあれば、2レベルのものが手に入る -rand:3/6 -============================ -input: -T5T -output: -MeikyuKingdomBasic : お宝5表(3) > 好きなコモンアイテムのカテゴリ1種を選び、そのカテゴリからランダムにアイテム1個を選ぶ。そのアイテムにレベルがあれば、4レベルのものが手に入る -rand:3/6 -============================ -input: -CIR -output: -MeikyuKingdomBasic : コモンアイテムランダム決定表(1) > 棘(だんびら) -rand:1/4,2/6,2/6 -============================ -input: -CIR -output: -MeikyuKingdomBasic : コモンアイテムランダム決定表(2) > 山吹色のお菓子 -rand:2/4,6/6,3/6 -============================ -input: -CIR -output: -MeikyuKingdomBasic : コモンアイテムランダム決定表(3) > チョコレート(お弁当) -rand:3/4,1/6,1/6 -============================ -input: -CIR -output: -MeikyuKingdomBasic : コモンアイテムランダム決定表(4) > 迷宮迷彩(星の欠片) -rand:4/4,3/6,3/6 -============================ -input: -RUIR -output: -MeikyuKingdomBasic : レア一般アイテムランダム決定表(2) > 転ばぬ先の杖 -rand:2/6,2/6,2/6 -============================ -input: -RUIR -output: -MeikyuKingdomBasic : レア一般アイテムランダム決定表(6) > 不死鳥の羽飾り -rand:6/6,3/6,5/6 -============================ -input: -RWIR -output: -MeikyuKingdomBasic : レア武具アイテムランダム決定表(1) > バカには見えない鎧 -rand:1/6,2/6,5/6 -============================ -input: -RWIR -output: -MeikyuKingdomBasic : レア武具アイテムランダム決定表(5) > 黄金の鶴嘴 -rand:5/6,6/6,3/6 -============================ -input: -WIT -output: -MeikyuKingdomBasic : 武具アイテム表(44) > 大弓(だんびら) -rand:4/6,4/6 -============================ -input: -LIT -output: -MeikyuKingdomBasic : 生活アイテム表(46) > クレジットカード -rand:4/6,6/6 -============================ -input: -RIT -output: -MeikyuKingdomBasic : 回復アイテム表(33) > 魔素水(お弁当) -rand:3/6,3/6 -============================ -input: -SIT -output: -MeikyuKingdomBasic : 探索アイテム表(12) > ロープ(星の欠片) -rand:2/6,1/6 -============================ -input: -NRUT -output: -MeikyuKingdomBasic : 基本レア一般アイテム表(13) > 煙玉 -rand:1/6,3/6 -============================ -input: -NRWT -output: -MeikyuKingdomBasic : 基本レア武具アイテム表(51) > チェインソード -rand:5/6,1/6 -============================ -input: -ARUT -output: -MeikyuKingdomBasic : 上級レア一般アイテム表(64) > 召魔鏡 -rand:6/6,4/6 -============================ -input: -ARWT -output: -MeikyuKingdomBasic : 上級レア武具アイテム表(64) > ムラサマ -rand:6/6,4/6 -============================ -input: -RMS -output: -MeikyuKingdomBasic : ランダムマップ選択表(43) > B-2 -rand:4/6,3/6 -============================ -input: -KNT1 -output: -MeikyuKingdomBasic : 王国名決定表(14) > 共和制、立憲、公立、私立 -rand:4/6,1/6 -============================ -input: -KNT2 -output: -MeikyuKingdomBasic : 王国名決定表(46) > ローマ、中華、エジプト、アステカ -rand:4/6,6/6 -============================ -input: -KNT3 -output: -MeikyuKingdomBasic : 王国名決定表(36) > 首長国、土侯国 -rand:3/6,6/6 -============================ -input: -KET -output: -MeikyuKingdomBasic : 王国環境表(4) > あなたの国は、歓楽国家として知られ、他国からの客もよく出入りしている。娯楽系施設の中からランダムに1種を選ぶ。自国にその施設を1件建設する。 -rand:4/6,5/6 -============================ -input: -KET -output: -MeikyuKingdomBasic : 王国環境表(6) > あなたの国は、偉大なる古龍が迷宮と化した場所であり、その尊い血を引いているといわれる。その国のキャラクターは新たにスキルを修得するとき、魔獣カテゴリの自分のレベル以下のモンスターが修得しているモンスタースキルの中から、修得するスキルを選ぶことができるようになる。 -rand:6/6,3/6 -============================ -input: -TET -output: -MeikyuKingdomBasic : 技術決定表(1) > あなたの国は、魔法の研究、開発に力をそそぐ魔道国家である。その国のキャラクターは、星術、召喚、科学スキルの判定を行うとき、その達成値が1点上昇する(最大3点まで上昇する。4回目以降は振り直すこと)。 -rand:1/6 -============================ -input: -NST -output: -MeikyuKingdomBasic : 国風決定表(2) > あなたの国は、広い国土と高い天井に恵まれている。居住系施設を建設するための価格が1MG軽減される(最大2MGまで軽減される。3回目以降は振り直すこと)。 -rand:2/6 -============================ -input: -RET -output: -MeikyuKingdomBasic : 資源決定表(6) > あなたの国には、隠し扉があった。「自国の地理」を決定したあと、追加で通路を2本引くことができる。通路でつながっている部屋は領土として扱う。 -rand:6/6 -============================ -input: -HRT -output: -MeikyuKingdomBasic : 人材決定表(1) > あなたの国には、高い見識を持つ知識人がいる。「才覚系生まれ表」でランダムにジョブ1種を選ぶ。そのジョブの逸材を1人獲得する。逸材の名前を決定すること。 -rand:1/6 -============================ -input: -FAT -output: -MeikyuKingdomBasic : 施設決定表(3) > あなたの国は、職人気質のものが多く、物作りがさかんだ。生産系施設の中からランダムに1種を選ぶ。自国にその施設を1件建設する。 -rand:3/6 -============================ -input: -BLT -output: -MeikyuKingdomBasic : 血族決定表(2) > あなたの国は、古代に迷宮から姿を消した妖精女王の末裔といわれている。その国のキャラクターは新たにスキルを修得するとき、妖精カテゴリの自分のレベル以下のモンスターが修得しているモンスタースキルの中から、修得するスキルを選ぶことができるようになる。 -rand:2/6 -============================ -input: -NMAR -output: -MeikyuKingdomBasic : 芸術系名前表(26) > トルバドール/リリカ -rand:6/6,2/6 -============================ -input: -NMFO -output: -MeikyuKingdomBasic : 食べ物系名前表(13) > グラス/テキーラ -rand:1/6,3/6 -============================ -input: -NMDN -output: -MeikyuKingdomBasic : 日用品系名前表(56) > カウチ/クリップ -rand:5/6,6/6 -============================ -input: -NMPL -output: -MeikyuKingdomBasic : 地名系名前表(15) > アラド/モルダヴィア -rand:5/6,1/6 -============================ -input: -NMMA -output: -MeikyuKingdomBasic : 機械系名前表(44) > ナルキ/プランタ -rand:4/6,4/6 -============================ -input: -NMGO -output: -MeikyuKingdomBasic : 神様系名前表(46) > エンキ/イナンナ -rand:6/6,4/6 -============================ -input: -SDT -output: -MeikyuKingdomBasic : スキル決定表(3) > 基本スキル表で決定 -rand:3/6 -============================ -input: -BUS -output: -MeikyuKingdomBasic : 基本肉弾スキル表(1) > 投げる -rand:1/6 -============================ -input: -SHS -output: -MeikyuKingdomBasic : 基本射撃スキル表(4) > 援護射撃 -rand:4/6 -============================ -input: -ASS -output: -MeikyuKingdomBasic : 基本星術スキル表(3) > 星占い -rand:3/6 -============================ -input: -SUS -output: -MeikyuKingdomBasic : 基本召喚スキル表(3) > 送還 -rand:3/6 -============================ -input: -SCS -output: -MeikyuKingdomBasic : 基本科学スキル表(6) > 理力の一撃 -rand:6/6 -============================ -input: -LAS -output: -MeikyuKingdomBasic : 基本迷宮スキル表(3) > 足止め -rand:3/6 -============================ -input: -NES -output: -MeikyuKingdomBasic : 基本交渉スキル表(5) > 右腕 -rand:5/6 -============================ -input: -COS -output: -MeikyuKingdomBasic : 基本便利スキル表(5) > デート -rand:5/6 -============================ -input: -ENS -output: -MeikyuKingdomBasic : 基本芸能スキル表(3) > 武楽 -rand:3/6 -============================ -input: -TOS -output: -MeikyuKingdomBasic : 基本道具スキル表(1) > 大かばん -rand:1/6 -============================ -input: -SDT -output: -MeikyuKingdomBasic : スキル決定表(5) > 上級スキル表で決定 -rand:5/6 -============================ -input: -ABUS -output: -MeikyuKingdomBasic : 上級肉弾スキル表(6) > 即席武器 -rand:6/6 -============================ -input: -ASHS -output: -MeikyuKingdomBasic : 上級射撃スキル表(6) > ブルズアイ -rand:6/6 -============================ -input: -AASS -output: -MeikyuKingdomBasic : 上級星術スキル表(1) > 星に願いを -rand:1/6 -============================ -input: -ASUS -output: -MeikyuKingdomBasic : 上級召喚スキル表(1) > 式神 -rand:1/6 -============================ -input: -ASCS -output: -MeikyuKingdomBasic : 上級科学スキル表(4) > 強化術式 -rand:4/6 -============================ -input: -ALAS -output: -MeikyuKingdomBasic : 上級迷宮スキル表(3) > 迷核解析 -rand:3/6 -============================ -input: -ANES -output: -MeikyuKingdomBasic : 上級交渉スキル表(1) > 色気 -rand:1/6 -============================ -input: -ACOS -output: -MeikyuKingdomBasic : 上級便利スキル表(2) > 心眼 -rand:2/6 -============================ -input: -AENS -output: -MeikyuKingdomBasic : 上級芸能スキル表(4) > 国歌 -rand:4/6 -============================ -input: -ATOS -output: -MeikyuKingdomBasic : 上級道具スキル表(5) > 相棒 -rand:5/6 -============================ -input: -IEQ -output: -MeikyuKingdomBasic : 初期装備表(12) > 魔導書 -rand:6/6,6/6 -============================ -input: -FBT -output: -MeikyuKingdomBasic : お祭り休憩表(10) > せっかくお祭りなんだし、肩肘はってないでノリノリでGO!! このゲーム中は食事をするたびに、《民の声》+1。この効果は累積しない。 -rand:5/6,5/6 -============================ -input: -FRT -output: -MeikyuKingdomBasic : お祭り表(5) > 星祭。季節のお祭り。冬至や夏至などの祭りや、七夕、お花見、雪祭りなどが含まれる。季節感の少ない迷宮では、殊更にその風情を楽しもうとやたら盛り上がる。宮廷全員、好きなキャラクター1人を選び、そのキャラクターに対する《好意》+1。 -rand:4/6,1/6 -============================ -input: -EBT -output: -MeikyuKingdomBasic : 空振り休憩表(4) > 大量大量! 色々な素材が見つかる。肉、牙、鉄、魔素、機械の素材(キャラクターシートの上の段の素材)を1個ずつ獲得する。 -rand:1/6,3/6 -============================ -input: -WBT -output: -MeikyuKingdomBasic : 全体休憩表(9) > 配下たちに見張りを任せ、体を休める。宮廷全員の《HP》を最大値まで回復する。 -rand:3/6,6/6 -============================ -input: -LBT -output: -MeikyuKingdomBasic : カップル休憩表(11) > 「あーもう、最悪!」仲良く休憩するつもりが、ひどい喧嘩になってしまう。「カップル休憩表」使用者のお互いに対する《敵意》+2。 -rand:1/6,1/6 -============================ -input: -ARN -output: -MeikyuKingdomBasic : 人工部屋特殊遭遇表(3) > ラストエグザイルという修行の旅をしている【ラストサムライ】の一団に出会う。PC1人が素材欄に「鉄」を含むアイテム1個を消費すると、彼らは喜んで旅の噂話を教えてくれる。1クォーターが経過し、宮廷の代表は「情報」の素材を(1D6)個獲得する。各PCは、望むなら食事アイテムを1個ずつ使用できる。アイテムを消費しない場合、彼らは襲いかかってくる。宮廷全員は[武勇/宮廷の人数+5]の判定を行う。失敗した者は、ランダムにアイテムスロット1つを選び、そのスロットに装備・収納されているアイテムをすべて破壊し、(1D6)+1点のダメージを受ける。 -rand:3/6 -============================ -input: -WEN -output: -MeikyuKingdomBasic : 水域部屋特殊遭遇表(5) > 「ヨーホー! 金目のものをよこしやがれ!」【階賊】の集団に襲われる! 宮廷全員は[武勇/13-宮廷の人数]の判定を行う。失敗した者は、ランダムに自分のアイテムスロット1つを選び、そのスロットに装備・収納されたものをすべて消費し、(1D6)点のダメージを受ける。 -rand:5/6 -============================ -input: -NEN -output: -MeikyuKingdomBasic : 自然部屋特殊遭遇表(6) > その部屋の奥には、茸の森が広がっていた。その中心にたたずむ巨大な【オバケ茸】を【茸人】たちが囲んで、何か祈りを捧げている。……ここなら、もしかすると【百年茸】があるかも。【百年茸】を探すなら、宮廷の中から望む者は[探索/9+この判定に挑戦した回数(初回は1回と数える)]の判定を行う。成功した者は、レア一般アイテムの 【百年茸】を1個獲得する。誰か1人でも失敗すると、【茸人】に見つかり、PC全員は「毒2」の変調を受ける。【百年茸】を探さないなら、安全にその場を離れ、何も起こらない。 -rand:6/6 -============================ -input: -CEN -output: -MeikyuKingdomBasic : 洞窟部屋特殊遭遇表(5) > 【ドラゴン】が現れた! 流暢な「ひとつの言葉」を使って、その巨大な生き物は「うるさくて眠れない」と苦情を言ってきた。宮廷の代表は[魅力/宮廷の人数+7]の判定を行う。成功すると丁重にお帰りいただくことができる。失敗すると、宮廷全員は15点のダメージを受ける。 -rand:5/6 -============================ -input: -SEN -output: -MeikyuKingdomBasic : 天空部屋特殊遭遇表(2) > 【羽根兜の乙女】が立ち塞がり、「勇者よ! きさまの魂をもらい受ける!」と決闘を挑んでくる。決闘を受けるなら、宮廷の代表は[武勇/14]の判定を行う。成功すると、【羽根兜の乙女】は、「次は絶対勝つ!」と、泣きながら逃げていく。判定に成功したPCが装備可能なら【愛】を1個獲得する。失敗した者は(1D6)+8点のダメージを受け、【羽根兜の乙女】から「腰抜けが。とんだ見込み違いだ」と罵倒される。決闘を拒否するなら、【羽根兜の乙女】の怒りを買い、PC全員は(2D6)点のダメージを受ける。 -rand:2/6 -============================ -input: -OEN -output: -MeikyuKingdomBasic : 異界部屋特殊遭遇表(5) > 遠くの方から何かが転がってくる。ゴロゴロと音が大きくなり、気がつくと【悪意の骰子】が眼前に迫っていた! 宮廷全員は[探索/9]の判定を行う。失敗した者は「呪い4」の変調を受け、奇妙な姿に変えられる。 -rand:5/6 -============================ -input: -DFT1 -output: -MeikyuKingdomBasic : デヴァイス・ファクトリー表(1) > ベースアイテム:聴診器(星の欠片) (もしくは任意のアイテム) -特性[8]:そのアイテムは「[8]召喚スキルから好きなスキル1種」の呪紋を持つ。 -rand:4/6,4/6,4/6,4/6,4/6,3/6,5/6 -============================ -input: -DFT2 -output: -MeikyuKingdomBasic : デヴァイス・ファクトリー表(2) > ベースアイテム:迷宮保険 (もしくは任意のアイテム) -特性[5]:そのアイテムは銘を持つ。銘を決定する。 -特性[7]:そのアイテムにレベルがあれば、レベルを1点上昇する。 -レベルが設定されていなければ、特性[7]:そのアイテムにレベルがあれば、レベルを1点上昇する。 -レベルが設定されていなければ、特性[9]:そのアイテムは「[4]このアイテムを装備している限り「毒2」の変調を受ける」の呪禍を持つ。 -さらに、特性[7]:そのアイテムにレベルがあれば、レベルを1点上昇する。 -レベルが設定されていなければ、特性[8]:そのアイテムは「[9]科学スキルから好きなスキル1種」の呪紋を持つ。 -rand:3/6,3/6,6/6,2/6,3/6,3/6,4/6,5/6,2/6,5/6,2/6,4/6,5/6,2/6,5/6,4/6,5/6,3/6,3/6,6/6 -============================ -input: -DFT1 -output: -MeikyuKingdomBasic : デヴァイス・ファクトリー表(1) > ベースアイテム:大剣 (もしくは任意のアイテム) -特性[11]:そのアイテムは「条件:[3]性別が男であること」の適正を持つ。 -さらに、特性[11]:そのアイテムは「条件:[3]性別が女であること」の適正を持つ。 -さらに、特性[3]:そのアイテムは寿命を持つ。寿命の値を決定する。 -さらに、特性[11]:そのアイテムは「条件:[4]上級ジョブであること」の適正を持つ。 -さらに、特性[5]:そのアイテムは銘を持つ。銘を決定する。 -rand:1/6,3/6,6/6,5/6,6/6,5/6,6/6,3/6,3/6,1/6,2/6,3/6,4/6,5/6,6/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -DFT1 -output: -MeikyuKingdomBasic : デヴァイス・ファクトリー表(1) > ベースアイテム:山吹色のお菓子 (もしくは任意のアイテム) -特性[11]:そのアイテムは「条件:[3]性別が男であること」の適正を持つ。 -さらに、特性[11]:そのアイテムは「条件:[2]生まれ表でランダムに選んだジョブであること」の適正を持つ。 -さらに、特性[4]:そのアイテムは境界障壁を持つ。《HP》の値を決定する。 -rand:2/6,3/6,6/6,5/6,6/6,5/6,6/6,3/6,3/6,1/6,3/6,2/6,5/6,1/6 -============================ -input: -NAME -output:MeikyuKingdomBasic : 名前表(1) > [2,36,14]“虎の尾を踏む”ジッポ/ショコラ -rand:2/6,6/6,3/6,1/6,4/6 -============================ -input: -NNAME -output:MeikyuKingdomBasic : 新名前表(1) > [4,5,36,24]“やめられない止まらない”ドライラート/コーチェ -rand:4/6,5/6,3/6,6/6,2/6,4/6 -============================ -input: -NNAME2 -output:MeikyuKingdomBasic : 新名前表(2) > [1,2,15,56]“三階に家なき”ココ/プラム [2,4,25,45]“(王国名)2D6(兄弟/姉妹)”トリノ/シチリア -rand:1/6,2/6,1/6,5/6,5/6,6/6,2/6,4/6,2/6,5/6,4/6,5/6 diff --git a/src/src_bcdice/test/data/MetalHead.txt b/src/src_bcdice/test/data/MetalHead.txt deleted file mode 100644 index a0ea76642..000000000 --- a/src/src_bcdice/test/data/MetalHead.txt +++ /dev/null @@ -1,239 +0,0 @@ -input: -2D6>=7 成功 -output: -MetalHead : (2D6>=7) > 7[4,3] > 7 > 成功 -rand:4/6,3/6 -============================ -input: -2D6>=7 失敗 -output: -MetalHead : (2D6>=7) > 6[2,4] > 6 > 失敗 -rand:2/6,4/6 -============================ -input: -1D100<=50 成功 -output: -MetalHead : (1D100<=50) > 50 > 成功 -rand:50/100 -============================ -input: -1D100<=94 失敗 -output: -MetalHead : (1D100<=94) > 95 > 失敗 -rand:95/100 -============================ -input: -1D100<=6 成功 -output: -MetalHead : (1D100<=6) > 6 > 成功 -rand:6/100 -============================ -input: -1D100<=1 絶対成功(SR) -output: -MetalHead : (1D100<=1) > 5 > 絶対成功 -rand:5/100 -============================ -input: -1D100<=100 絶対失敗(SR) -output: -MetalHead : (1D100<=100) > 96 > 絶対失敗 -rand:96/100 -============================ -input: -S1D100<=70 -output: -MetalHead : (1D100<=70) > 1 > 絶対成功###secret dice### -rand:1/100 -============================ -input: -AR>=18 絶対成功 -output: -MetalHead : (2D6>=18) > 12[6,6] > 12 > 絶対成功 -rand:6/6,6/6 -============================ -input: -AR>=2 絶対失敗 -output: -MetalHead : (2D6>=2) > 2[1,1] > 2 > 絶対失敗 -rand:1/6,1/6 -============================ -input: -SR<=1 絶対成功 -output: -MetalHead : (1D100<=1) > 5 > 絶対成功 -rand:5/100 -============================ -input: -SR<=99 絶対失敗 -output: -MetalHead : (1D100<=99) > 96 > 絶対失敗 -rand:96/100 -============================ -input: -HR<=50 成功 -output: -MetalHead : (1D100<=50) > 49 > 成功 -rand:49/100 -============================ -input: -HR<=(59-10) 成功 -output: -MetalHead : (1D100<=49) > 49 > 成功 -rand:49/100 -============================ -input: -HR<=50 失敗 -output: -MetalHead : (1D100<=50) > 51 > 失敗 -rand:51/100 -============================ -input: -HR<=(59-10) 失敗 -output: -MetalHead : (1D100<=49) > 50 > 失敗 -rand:50/100 -============================ -input: -HR<=50 成功+クリティカル -output: -MetalHead : (1D100<=50) > 41 > 成功(クリティカル) -rand:41/100 -============================ -input: -HR<=50 アクシデント -output: -MetalHead : (1D100<=50) > 50 > 失敗(アクシデント) -rand:50/100 -============================ -input: -HR<=50 -output: -MetalHead : (1D100<=50) > 1 > 成功(クリティカル) -rand:1/100 -============================ -input: -HR<=50 -output: -MetalHead : (1D100<=50) > 100 > 失敗 -rand:100/100 -============================ -input: -SHR<=50 -output: -MetalHead : (1D100<=50) > 48 > 成功###secret dice### -rand:48/100 -============================ -input: -CC クリティカルチャート(1) -output: -MetalHead : クリティカルチャート > 1 > 相手は知覚系に多大なダメージを受けた。PERを1にして頭部にHWのダメージ、および心理チェック。 -rand:1/10 -============================ -input: -CC クリティカルチャート(5) -output: -MetalHead : クリティカルチャート > 5 > 相手の急所に命中。激痛のため気絶した上、胴にHWダメージ。 -rand:5/10 -============================ -input: -CC クリティカルチャート(8) -output: -MetalHead : クリティカルチャート > 8 > 君の一撃は相手の中枢を完全に破壊した。即死である。 -rand:8/10 -============================ -input: -ACL アクシデントチャート射撃(2) -output: -MetalHead : アクシデントチャート(射撃・投擲) > 2 > ささいなミス。特にペナルティーはない。 -rand:2/10 -============================ -input: -ACL アクシデントチャート射撃(7) -output: -MetalHead : アクシデントチャート(射撃・投擲) > 7 > ささいなミス。特にペナルティーはない。 -rand:7/10 -============================ -input: -ACL アクシデントチャート射撃(9) -output: -MetalHead : アクシデントチャート(射撃・投擲) > 9 > ささいな故障。可能なら次のターンから個別武器のスキルロールで修理を行える。 -rand:9/10 -============================ -input: -ACS アクシデントチャート格闘(3) -output: -MetalHead : アクシデントチャート(格闘) > 3 > 足を滑らせて転倒し、起き上がるまで相手に+20の命中修正を与える。 -rand:3/10 -============================ -input: -ACS アクシデントチャート格闘(4) -output: -MetalHead : アクシデントチャート(格闘) > 4 > 手を滑らせて、武器を落とす。素手の時は関係ない。 -rand:4/10 -============================ -input: -ACS アクシデントチャート格闘(10) -output: -MetalHead : アクシデントチャート(格闘) > 10 > 手を滑らせ、不幸にも武器は飛んでいき、5m以内に人がいれば誰かに刺さるか、または打撃を与えるかもしれない。ランダムに決定し、普通どおり判定を続ける。素手のときは関係ない。 -rand:10/10 -============================ -input: -CRCS110 戦闘結果チャート(SUV=S) -output: -MetalHead : 戦闘結果チャート > 110 > 109 > 耐久レベル(SUV)[S] > 部位[頭部] : 損傷種別[MO] -rand: -============================ -input: -CRCA80 戦闘結果チャート(SUV=A) -output: -MetalHead : 戦闘結果チャート > 80 > 79 > 耐久レベル(SUV)[A] > 部位[頭部] : 損傷種別[HW] -rand: -============================ -input: -CRCC51 戦闘結果チャート(SUV=C) -output: -MetalHead : 戦闘結果チャート > 51 > 52 > 耐久レベル(SUV)[C] > 部位[腕部] : 損傷種別[MW] -rand: -============================ -input: -CRCE8 戦闘結果チャート(SUV=E) -output: -MetalHead : 戦闘結果チャート > 8 > 耐久レベル(SUV)[E] > 部位[胴部] : 損傷種別[LW] -rand: -============================ -input: -CRCG5 戦闘結果チャート(SUV=G) -output: -MetalHead : 戦闘結果チャート > 5 > 耐久レベル(SUV)[G] > 部位[脚部] : 損傷種別[LW] -rand: -============================ -input: -CRCM99 戦闘結果チャート(対物) -output: -MetalHead : 戦闘結果チャート > 99 > 耐物 > HP[5] -rand: -============================ -input: -CRCQ10 戦闘結果チャート(無効1) -output: -MetalHead : 戦闘結果チャート > 10 > 耐久レベル(SUV)[Q] > 耐久レベル(SUV)の値が不正です -rand: -============================ -input: -CRCA0 戦闘結果チャート(無効2) -output: -MetalHead : 戦闘結果チャート > 0 > 数値が不正です -rand: -============================ -input: -2D6>=? 目標値?でバグらない -output: -MetalHead : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 -============================ -input: -1D100>=? 目標値?でバグらない -output: -MetalHead : (1D100>=?) > 42 > 失敗 -rand:42/100 diff --git a/src/src_bcdice/test/data/MetalHeadExtream.txt b/src/src_bcdice/test/data/MetalHeadExtream.txt deleted file mode 100644 index 7a7f6fd93..000000000 --- a/src/src_bcdice/test/data/MetalHeadExtream.txt +++ /dev/null @@ -1,636 +0,0 @@ -input: -AR50 -output: -MetalHeadExtream : AR1(ACC:96):1D100<=50 > [30] 成功 達成値:30 -rand:30/100 -============================ -input: -aR50 -output: -MetalHeadExtream : AR1(ACC:96):1D100<=50 > [60] 失敗 達成値:0 -rand:60/100 -============================ -input: -Ar50 -output: -MetalHeadExtream : AR1(ACC:96):1D100<=50 > [1] 成功(クリティカル) 達成値:1 -rand:1/100 -============================ -input: -ar50 -output: -MetalHeadExtream : AR1(ACC:96):1D100<=50 > [96] 失敗(アクシデント) 達成値:0 -rand:96/100 -============================ -input: -SR20 -output: -MetalHeadExtream : SR1(ACC:96):1D100<=20 > [30] 失敗 達成値:0 -rand:30/100 -============================ -input: -sR150 -output: -MetalHeadExtream : SR1(ACC:96):1D100<=150 > [60] 成功 達成値:60 -rand:60/100 -============================ -input: -Sr30 -output: -MetalHeadExtream : SR1(ACC:96):1D100<=30 > [31] 失敗 達成値:0 -rand:31/100 -============================ -input: -sr50 -output: -MetalHeadExtream : SR1(ACC:96):1D100<=50 > [100] 失敗(アクシデント) 達成値:0 -rand:100/100 -============================ -input: -AR50*2 -output: -MetalHeadExtream : AR2(ACC:96):1D100<=100[50*2] > [30] 成功 達成値:30 -rand:30/100 -============================ -input: -SR50*4 -output: -MetalHeadExtream : SR4(ACC:96):1D100<=200[50*4] > [30] 成功 達成値:30 -rand:30/100 -============================ -input: -SR50/2 -output: -MetalHeadExtream : SR1/2(ACC:96):1D100<=25[50/2] > [30] 失敗 達成値:0 -rand:30/100 -============================ -input: -AR50/4 -output: -MetalHeadExtream : AR1/4(ACC:96):1D100<=12[50/4] > [30] 失敗 達成値:0 -rand:30/100 -============================ -input: -AR50*2*2*2 -output: -MetalHeadExtream : AR8(ACC:96):1D100<=400[50*8] > [30] 成功 達成値:30 -rand:30/100 -============================ -input: -AR50*2*2/2 -output: -MetalHeadExtream : AR2(ACC:96):1D100<=100[50*2] > [30] 成功 達成値:30 -rand:30/100 -============================ -input: -AR50/2*2 -output: -MetalHeadExtream : AR1(ACC:96):1D100<=50 > [30] 成功 達成値:30 -rand:30/100 -============================ -input: -AR50*2/2/2 -output: -MetalHeadExtream : AR1/2(ACC:96):1D100<=25[50/2] > [30] 失敗 達成値:0 -rand:30/100 -============================ -input: -AR100@90 -output: -MetalHeadExtream : AR1(ACC:90):1D100<=100 > [30] 成功 達成値:30 -rand:30/100 -============================ -input: -AR100@90 -output: -MetalHeadExtream : AR1(ACC:90):1D100<=100 > [61] 成功(クリティカル) 達成値:61 -rand:61/100 -============================ -input: -AR100@90 -output: -MetalHeadExtream : AR1(ACC:90):1D100<=100 > [92] 失敗(アクシデント) 達成値:0 -rand:92/100 -============================ -input: -AR80A2 -output: -MetalHeadExtream : AR1(ACC:96, ADV:*2):1D100<=40[80/2] > [30] 成功 達成値:60 -rand:30/100 -============================ -input: -AR80a4 -output: -MetalHeadExtream : AR1(ACC:96, ADV:*4):1D100<=20[80/4] > [30] 失敗 達成値:0 -rand:30/100 -============================ -input: -AR80A8 -output: -MetalHeadExtream : AR1(ACC:96, ADV:*8):1D100<=10[80/8] > [10] 成功 達成値:80 -rand:10/100 -============================ -input: -AR80a6 -output: -MetalHeadExtream : AR1(ACC:96):1D100<=80 > [30] 成功 達成値:30 -rand:30/100 -============================ -input: -AR20L1 -output: -MetalHeadExtream : AR1(ACC:96, LUC:1):1D100<=40[20*2] > [50] 失敗 達成値:0 -rand:50/100 -============================ -input: -AR20l2 -output: -MetalHeadExtream : AR1(ACC:96, LUC:2):1D100<=80[20*4] > [50] 成功 達成値:50 -rand:50/100 -============================ -input: -AR20L3 -output: -MetalHeadExtream : AR1(ACC:96, LUC:3):1D100<=160[20*8] > [50] 成功 達成値:50 -rand:50/100 -============================ -input: -AR80/2@95A2L2 -output: -MetalHeadExtream : AR1/2(ACC:95, ADV:*2, LUC:2):1D100<=80[80/2/2*4] > [50] 成功 達成値:100 -rand:50/100 -============================ -input: -AR80/2L2@95A2 -output: -MetalHeadExtream : AR1/2(ACC:95, ADV:*2, LUC:2):1D100<=80[80/2/2*4] > [50] 成功 達成値:100 -rand:50/100 -============================ -input: -AR80/2A2L2@95 -output: -MetalHeadExtream : AR1/2(ACC:95, ADV:*2, LUC:2):1D100<=80[80/2/2*4] > [50] 成功 達成値:100 -rand:50/100 -============================ -input: -AR80/2A2A1A4 -output: -MetalHeadExtream : AR1/2(ACC:96, ADV:*4):1D100<=10[80/2/4] > [50] 失敗 達成値:0 -rand:50/100 -============================ -input: -AR80/2L2L1L4 -output: -MetalHeadExtream : AR1/2(ACC:96, LUC:4):1D100<=640[80/2*16] > [50] 成功 達成値:50 -rand:50/100 -============================ -input: -AR80/2@90@80@98 -output: -MetalHeadExtream : AR1/2(ACC:98):1D100<=40[80/2] > [50] 失敗 達成値:0 -rand:50/100 -============================ -input: -AR50!M -output: -MetalHeadExtream : AR1(ACC:96):1D100<=50 > [30] 成功(クリティカル) 達成値:30 《ミューズ》 -rand:30/100 -============================ -input: -AR50!m -output: -MetalHeadExtream : AR1(ACC:96):1D100<=50 > [31] 成功(クリティカル) 達成値:31 《ミューズ》 -rand:31/100 -============================ -input: -AR50!M -output: -MetalHeadExtream : AR1(ACC:96):1D100<=50 > [32] 成功 達成値:32 《ミューズ》 -rand:32/100 -============================ -input: -SR80/2@95A2L2!M -output: -MetalHeadExtream : SR1/2(ACC:95, ADV:*2, LUC:2):1D100<=80[80/2/2*4] > [50] 成功(クリティカル) 達成値:100 《ミューズ》 -rand:50/100 -============================ -input: -HUHIT -output: -MetalHeadExtream : 命中部位表:人間(5) > 胴部 -rand:5/10 -============================ -input: -HUHIT -output: -MetalHeadExtream : 命中部位表:人間(1) > 胴部(クリティカル) -rand:1/10 -============================ -input: -HUHIT -output: -MetalHeadExtream : 命中部位表:人間(10) > 脚部 -rand:10/10 -============================ -input: -HUHIT1 -output: -MetalHeadExtream : 命中部位表:人間(1) > 胴部(クリティカル) -rand: -============================ -input: -HUHIT10 -output: -MetalHeadExtream : 命中部位表:人間(10) > 脚部 -rand: -============================ -input: -HUHIT20 -output: -MetalHeadExtream : 命中部位表:人間(10) > 脚部 -rand: -============================ -input: -BKHIT -output: -MetalHeadExtream : 命中部位表:バイク(1) > 本体(クリティカル) -rand:1/10 -============================ -input: -WAHIT -output: -MetalHeadExtream : 命中部位表:ワゴン(2) > 本体 -rand:2/10 -============================ -input: -SCHIT -output: -MetalHeadExtream : 命中部位表:シェルキャリア(3) > 本体 -rand:3/10 -============================ -input: -BGHIT -output: -MetalHeadExtream : 命中部位表:バギー(4) > 本体 -rand:4/10 -============================ -input: -INHIT -output: -MetalHeadExtream : 命中部位表:インセクター(5) > 本体 -rand:5/10 -============================ -input: -PTHIT -output: -MetalHeadExtream : 命中部位表:ポケットタンク(6) > パワープラント -rand:6/10 -============================ -input: -HTHIT -output: -MetalHeadExtream : 命中部位表:ホバータンク(7) > パワープラント -rand:7/10 -============================ -input: -TAHIT -output: -MetalHeadExtream : 命中部位表:戦車(8) > ドライブ -rand:8/10 -============================ -input: -ACHIT -output: -MetalHeadExtream : 命中部位表:装甲車(9) > 兵装・貨物 -rand:9/10 -============================ -input: -HEHIT -output: -MetalHeadExtream : 命中部位表:ヘリ(10) > 乗員 -rand:10/10 -============================ -input: -TRHIT0 -output: -MetalHeadExtream : 命中部位表:トレーラー(5) > パワープラント -rand:5/10 -============================ -input: -VTHIT1 -output: -MetalHeadExtream : 命中部位表:VTOL(1) > 本体(クリティカル) -rand: -============================ -input: -BOHIT2 -output: -MetalHeadExtream : 命中部位表:ボート(2) > 本体 -rand: -============================ -input: -CSHIT3 -output: -MetalHeadExtream : 命中部位表:通常・格闘型コンバットシェル(3) > 本体 -rand: -============================ -input: -THHIT4 -output: -MetalHeadExtream : 命中部位表:可変・重コンバットシェル(4) > 本体 -rand: -============================ -input: -AMHIT5 -output: -MetalHeadExtream : 命中部位表:オートモビル(5) > 本体 -rand: -============================ -input: -GDHIT6 -output: -MetalHeadExtream : 命中部位表:ガンドック(6) > パワープラント -rand: -============================ -input: -HCHIT7 -output: -MetalHeadExtream : 命中部位表:ホバークラフト(7) > ドライブ -rand: -============================ -input: -BIHIT8 -output: -MetalHeadExtream : 命中部位表:自転車(8) > 兵装・貨物 -rand: -============================ -input: -BTHIT9 -output: -MetalHeadExtream : 命中部位表:バトルトレーラー(9) > 兵装・貨物 -rand: -============================ -input: -AIHIT10 -output: -MetalHeadExtream : 命中部位表:エアクラフト(10) > 乗員 -rand: -============================ -input: -SUVA1 -output: -MetalHeadExtream : 戦闘結果表(A):1 > LW(軽傷) -rand: -============================ -input: -SUVA50 -output: -MetalHeadExtream : 戦闘結果表(A):50 > KL(死亡) -rand: -============================ -input: -SUVD1 -output: -MetalHeadExtream : 戦闘結果表(D):1 > 無傷 -rand: -============================ -input: -SUVF75 -output: -MetalHeadExtream : 戦闘結果表(F):75 > HW(重傷) -rand: -============================ -input: -SUVK100 -output: -MetalHeadExtream : 戦闘結果表(K):100 > MW(中傷) -rand: -============================ -input: -SUVP125 -output: -MetalHeadExtream : 戦闘結果表(P):125 > LW(軽傷) -rand: -============================ -input: -SUVU150 -output: -MetalHeadExtream : 戦闘結果表(U):150 > 無傷 -rand: -============================ -input: -SUVZ300 -output: -MetalHeadExtream : 戦闘結果表(Z):300 > MW(中傷) -rand: -============================ -input: -HDMGL -output: -MetalHeadExtream : 対人損傷効果表:頭部(LW) > ダメージ修正+10。 -rand: -============================ -input: -TDMGM -output: -MetalHeadExtream : 対人損傷効果表:胴部(MW) > ダメージ修正+10。【DEX】のAR、【DEX】がベースアビリティのスキルのSRにSR1/2のロール修正。 -rand: -============================ -input: -ADMGH -output: -MetalHeadExtream : 対人損傷効果表:腕部(HW) > ダメージ修正+20。損傷した腕を使用する、また両腕を使用する行動にSR1/4のロール修正。 -rand: -============================ -input: -LDMGO -output: -MetalHeadExtream : 対人損傷効果表:脚部(MO) > ダメージ修正+30。[戦闘不能]。 -rand: -============================ -input: -MDMGL -output: -MetalHeadExtream : 心理損傷効果表(LW) > ダメージ修正+10。焦り。効果は特になし。シーン終了で自然回復。 -rand: -============================ -input: -EDMGM -output: -MetalHeadExtream : 電子損傷効果表(MW) > ダメージ修正+20。ノイズ。1シーン、キャラクターならすべてのロールが、アイテムならそれを使用したロールが1/2となる。 -rand: -============================ -input: -BDMGH -output: -MetalHeadExtream : メカニック損傷効果表:本体(HW) > ダメージ修正シフト2。修理費がフレーム価格の1/2かかる。 -rand: -============================ -input: -PDMGO -output: -MetalHeadExtream : メカニック損傷効果表:パワープラント(MO) > ダメージ修正+30。移動不能。修理費がパワープラント価格と同じだけかかる。走行中なら事故表を振ること。 -rand: -============================ -input: -DDMGL -output: -MetalHeadExtream : メカニック損傷効果表:ドライブ(LW) > ダメージ修正+10。 -rand: -============================ -input: -CRT -output: -MetalHeadExtream : クリティカル表(1) > 特に追加被害は発生しない。 -rand:1/10 -============================ -input: -CRT -output: -MetalHeadExtream : クリティカル表(10) > 中枢を破壊。対象の装甲値を無視し、【SUV】を3ランク低いものとしてダメージを算出する。 -rand:10/10 -============================ -input: -CRT0 -output: -MetalHeadExtream : クリティカル表(5) > 多大なダメージ。最終火力に+20してダメージを算出すること。 -rand:5/10 -============================ -input: -CRT3 -output: -MetalHeadExtream : クリティカル表(3) > 対象に隙を作る。クリンナッププロセスまで、対象はリアクションにSR1/2のロール修正を受ける。 -rand: -============================ -input: -CRT15 -output: -MetalHeadExtream : クリティカル表(10) > 中枢を破壊。対象の装甲値を無視し、【SUV】を3ランク低いものとしてダメージを算出する。 -rand: -============================ -input: -GAC -output: -MetalHeadExtream : 格闘アクシデント表(1) > 体勢を崩す。その攻撃は失敗する。 -rand:1/10 -============================ -input: -SAC -output: -MetalHeadExtream : 射撃/投擲アクシデント表(5) > 射撃武器はジャム。投擲武器ならば武器が取り出せないなど、マイナーアクションを消費しなければその武器を使用できない。 -rand:5/10 -============================ -input: -MAC0 -output: -MetalHeadExtream : 心理攻撃アクシデント表(10) > トラウマの再現。装甲値無視、固定火力100の心理ダメージを受ける。 -rand:10/10 -============================ -input: -EAC6 -output: -MetalHeadExtream : 電子攻撃アクシデント表(6) > ノイズ発生。クリンナップまで電子攻撃のリアクションにSR1/2。 -rand: -============================ -input: -AMA -output: -MetalHeadExtream : 空中メカニック事故表(1) > 兵装/貨物。メカニックが装備している一番ENCの大きい武器ひとつが戦闘終了時まで使用不能になる。武器がない場合はメカニックオプションが使用不能になり、それもない場合は一番ENCの重い貨物(乗客をのぞく)が失われる。 -rand:1/10 -============================ -input: -AMA -output: -MetalHeadExtream : 空中メカニック事故表(10) > 爆発。メカニックが爆発し、完全に破壊される。すべての乗員は、爆発と落下によって胴体に〈熱〉205の固定ダメージを受ける。このダメージは機動回避可能だが、SRに1/4の修正がある。 -rand:10/10 -============================ -input: -SMA0 -output: -MetalHeadExtream : 水上/水中メカニック事故表(5) > 兵装/貨物。メカニックが装備している一番ENCの大きい武器ひとつが戦闘終了時まで使用不能になる。武器がない場合はメカニックオプションが使用不能になり、それもない場合は一番ENCの重い貨物(乗客をのぞく)が失われる。 -rand:5/10 -============================ -input: -SMA6 -output: -MetalHeadExtream : 水上/水中メカニック事故表(6) > 兵装/貨物。メカニックが装備している一番ENCの大きい武器ひとつが戦闘終了時まで使用不能になる。武器がない場合はメカニックオプションが使用不能になり、それもない場合は一番ENCの重い貨物(乗客をのぞく)が失われる。 -rand: -============================ -input: -LMA+3 -output: -MetalHeadExtream : 地上メカニック事故表(4[1+3]) > 兵装/貨物。メカニックが装備している一番ENCの大きい武器ひとつが戦闘終了時まで使用不能になる。武器がない場合はメカニックオプションが使用不能になり、それもない場合は一番ENCの重い貨物(乗客をのぞく)が失われる。 -rand:1/10 -============================ -input: -LMA8+3 -output: -MetalHeadExtream : 地上メカニック事故表(10[8+3]) > 爆発。メカニックが爆発し、完全に破壊される。すべての乗員は、爆発によって胴体に〈熱〉155の固定ダメージを受ける。このダメージは機動回避可能だが、SRに1/4の修正がある。 -rand: -============================ -input: -SEC -output: -MetalHeadExtream : ストラテジーイベントチャート(1) > 特に何事もなかった。 -rand:1/100 -============================ -input: -SEC -output: -MetalHeadExtream : ストラテジーイベントチャート(70) > 敵陣崩壊。敵ユニットの中で士気がもっとも低いユニットが戦場から撤退する。複数いた場合、すべて撤退。PC、ゲストには効果なし。 -rand:70/100 -============================ -input: -NAC -output: -MetalHeadExtream : NPC攻撃処理チャート(1) > 戦力の低い側だけが一方的に除去される。 -rand:1/10 -============================ -input: -NAC -output: -MetalHeadExtream : NPC攻撃処理チャート(6) > 双方、一番戦力の少ないユニットひとつを除去する。 -rand:6/10 -============================ -input: -LDC -output: -MetalHeadExtream : 敗者運命チャート(5) > 外見に影響するような傷を負う。治療するなら$3000。 -rand:5/10 -============================ -input: -LDC -output: -MetalHeadExtream : 敗者運命チャート(10) > 残念ながら、君は死んでしまった。 -rand:10/10 -============================ -input: -WENC -output: -MetalHeadExtream : 荒野ランダムエンカウント表(1) > 特に遭遇は発生しなかった -rand:1/100 -============================ -input: -WENC -output: -MetalHeadExtream : 荒野ランダムエンカウント表(80) > 特に遭遇は発生しなかった -rand:80/100 -============================ -input: -WENC -output: -MetalHeadExtream : 荒野ランダムエンカウント表(81) > 1d10名のバンデッド -rand:81/100 -============================ -input: -WENC50 -output: -MetalHeadExtream : 荒野ランダムエンカウント表(50) > 特に遭遇は発生しなかった -rand: -============================ -input: -WENC -output: -MetalHeadExtream : 荒野ランダムエンカウント表(100) > 1d10÷3体(最低1)のサンドワーム -rand:100/100 -============================ diff --git a/src/src_bcdice/test/data/MetallicGuardian.txt b/src/src_bcdice/test/data/MetallicGuardian.txt deleted file mode 100644 index 93bd5b626..000000000 --- a/src/src_bcdice/test/data/MetallicGuardian.txt +++ /dev/null @@ -1,89 +0,0 @@ -input: -MG>=7 -output: -MetallicGuardian : (2D6>=7[12,2]) > 7[2,5] > 7 > 成功 -rand:5/6,2/6 -============================ -input: -MG-3>=8 -output: -MetallicGuardian : (2D6-3>=8[12,2]) > 11[5,6]-3 > 8 > 成功 -rand:5/6,6/6 -============================ -input: -SMG+1>=5[11,3] -output: -MetallicGuardian : (2D6+1>=5[11,3]) > 11[5,6]+1 > 12 > 自動成功###secret dice### -rand:5/6,6/6 -============================ -input: -MG1>=7 -output: - -rand: -============================ -input: -MGA>=7 -output: - -rand: -============================ -input: -D66 -output: -MetallicGuardian : (D66) > 65 -rand:6/6,5/6 -============================ -input: -MG -output: -MetallicGuardian : (2D6[12,2]) > 12[6,6] > 12 > 自動成功 -rand:6/6,6/6 -============================ -input: -MG -output: -MetallicGuardian : (2D6[12,2]) > 2[1,1] > 2 > 自動失敗 -rand:1/6,1/6 -============================ -input: -MG1 -output: - -rand: -============================ -input: -MGA -output: - -rand: -============================ -input: -MG+1 -output: -MetallicGuardian : (2D6+1[12,2]) > 11[5,6]+1 > 12 -rand:5/6,6/6 -============================ -input: -MG-1 -output: -MetallicGuardian : (2D6-1[12,2]) > 3[1,2]-1 > 2 -rand:2/6,1/6 -============================ -input: -MG+1[11,3] -output: -MetallicGuardian : (2D6+1[11,3]) > 6[2,4]+1 > 7 -rand:4/6,2/6 -============================ -input: -MG+1[11,3] -output: -MetallicGuardian : (2D6+1[11,3]) > 11[5,6]+1 > 12 > 自動成功 -rand:6/6,5/6 -============================ -input: -MG+1[11,3] -output: -MetallicGuardian : (2D6+1[11,3]) > 3[1,2]+1 > 4 > 自動失敗 -rand:2/6,1/6 diff --git a/src/src_bcdice/test/data/Misonzai.txt b/src/src_bcdice/test/data/Misonzai.txt deleted file mode 100644 index 69302b1b2..000000000 --- a/src/src_bcdice/test/data/Misonzai.txt +++ /dev/null @@ -1,5 +0,0 @@ -input: -2d6>=4 -output: -DiceBot : (2D6>=4) > 9[6,3] > 9 > 成功 -rand:6/6,3/6 diff --git a/src/src_bcdice/test/data/MonotoneMuseum.txt b/src/src_bcdice/test/data/MonotoneMuseum.txt deleted file mode 100644 index c905d8874..000000000 --- a/src/src_bcdice/test/data/MonotoneMuseum.txt +++ /dev/null @@ -1,188 +0,0 @@ -input: -2D6>=7 -output: -MonotoneMuseum : (2D6>=7) > 7[2,5] > 7 > 成功 -rand:5/6,2/6 -============================ -input: -2D6>=7 -output: -MonotoneMuseum : (2D6>=7) > 12[6,6] > 12 > 自動成功 -rand:6/6,6/6 -============================ -input: -2D6>=7 -output: -MonotoneMuseum : (2D6>=7) > 2[1,1] > 2 > 自動失敗 -rand:1/6,1/6 -============================ -input: -2D6+1>=5[11,3] -output: -MonotoneMuseum : (2D6+1>=5[11,3]) > 6[2,4]+1 > 7 > 成功 -rand:2/6,4/6 -============================ -input: -2D6+1>=5[11,3] -output: -MonotoneMuseum : (2D6+1>=5[11,3]) > 11[5,6]+1 > 12 > 自動成功 -rand:5/6,6/6 -============================ -input: -2D6+1>=5[11,3] -output: -MonotoneMuseum : (2D6+1>=5[11,3]) > 3[1,2]+1 > 4 > 自動失敗 -rand:1/6,2/6 -============================ -input: -2D6+1>=5[11] -output: -MonotoneMuseum : (2D6+1>=5[11]) > 11[5,6]+1 > 12 > 自動成功 -rand:5/6,6/6 -============================ -input: -2D6+1>=5[,3] -output: -MonotoneMuseum : (2D6+1>=5[,3]) > 3[1,2]+1 > 4 > 自動失敗 -rand:1/6,2/6 -============================ -input: -2D6+1>=5[,3] -output: -MonotoneMuseum : (2D6+1>=5[,3]) > 12[6,6]+1 > 13 > 自動成功 -rand:6/6,6/6 -============================ -input: -2D6+1>=5[7,7] ファンブル値優先 -output: -MonotoneMuseum : (2D6+1>=5[7,7]) > 7[2,5]+1 > 8 > 自動失敗 -rand:5/6,2/6 -============================ -input: -3D6+1>=7 -output: -MonotoneMuseum : (3D6+1>=7) > 12[2,4,6]+1 > 13 > 自動成功 -rand:2/6,6/6,4/6 -============================ -input: -1D6>=2 -output: -MonotoneMuseum : (1D6>=2) > 2[2] > 2 > 自動失敗 -rand:2/6 -============================ -input: -OT -output: -MonotoneMuseum : 兆候表(6) > 【重圧】 -あなたはバッドステータスの[重圧]を受ける。 -rand:3/6,3/6 -============================ -input: -DT -output: -MonotoneMuseum : 歪み表(2) > 【世界消失】 -演目の舞台がすべて失われる。舞台に残っているのはキミたちと異形、伽藍だけだ。クライマックスフェイズへ。 -rand:1/6,1/6 -============================ -input: -WDT -output: -MonotoneMuseum : 世界歪曲表(2) > 【消失】 -世界からボスキャラクターが消去され、消滅する。エンディングフェイズへ。 -rand:1/6,1/6 -============================ -input: -ET -output: -MonotoneMuseum : 感情表(22) > 【脅威(きょうい)】 -rand:2/6,2/6 -============================ -input: -ET -output: -MonotoneMuseum : 感情表(11) > 【信頼(しんらい)】 -rand:1/6,1/6 -============================ -input: -ET2 -output: -MonotoneMuseum : 感情表2.0(32) > 【貸し(かし)】 -rand:3/6,2/6 -============================ -input: -ET2 -output: -MonotoneMuseum : 感情表2.0(12) > 【同一視(どういつし)】 -rand:1/6,2/6 -============================ -input: -DT2 -output: -MonotoneMuseum : 歪み表ver2.0(66) > 【地域消滅】 -演目の舞台となっている地域そのものが消えてなくなる。影響下にあるすべてのキャラクター(伽藍を含む)は【縫製】難易度10の判定に成功すれば脱出できる。失敗した場合即座に死亡する。エキストラは無条件で死亡する。 -rand:6/6,6/6 -============================ -input: -DT2 -output: -MonotoneMuseum : 歪み表ver2.0(32) > 【時間加速】 -シーン内に存在するあらゆる無生物と生物は、2D6年ぶん時間が加速する。生物なら老化する。紡ぎ手は【縫製】難易度8の判定に成功すれば、この影響を受けない。 -rand:3/6,2/6 -============================ -input: -WDT2 -output: -MonotoneMuseum : 世界歪曲表ver2.0(32) > 【豪雨】 -すさまじい雨が降る。雨は全ての人の心を凍らせる。このシーンの間、「種別:銃」である武器を用いた攻撃のファンブル値を+6する。また、別エンゲージへの物理攻撃の達成値を-2する。 -rand:3/6,2/6 -============================ -input: -OT2 -output: -MonotoneMuseum : 兆候表ver2.0(63) > 【剥離の伝播】 -世界の歪みは広がり、拡散し、誰も逃れられない。あなたの剥離値が、シーンに登場しているPCで最も剥離値の高いPCと同じになる。あなたが最も高いなら、最も低いPCの剥離値があなたと同じになる(複数登場している場合はランダムに選ぶこと)。 -rand:6/6,3/6 -============================ -input: -DTO -output: -MonotoneMuseum : 歪み表(野外)(63) > 【汚染世界】 -水は毒を含み、大気は有毒の霧に包まれる。登場している全てのキャラクターは【体力】難易度10の判定を行い、失敗すると邪毒5を受ける。エキストラがどうなるかはGMが決定するが、治療されなければ早晩死亡するだろう。 -rand:6/6,3/6 -============================ -input: -DTS -output: -MonotoneMuseum : 歪み表(海)(56) > 【酒の海】 -海の水が酒になる。水を飲んだすべての者は酔っ払い理性を失う。その様はまるで暗黒期に滅亡した“怠惰の古都”を彷彿とさせる。 -rand:5/6,6/6 -============================ -input: -EDT -output: -MonotoneMuseum : 永劫消失表(2) > 【無慈悲な現実】 -願いも希望も叶いはしない。伽藍を倒すことができた、それが精一杯の、あなたたちに許された幸福だったのだ。意識が、虚無へと呑まれ消えていく……。 -> ダイスの後振りは行なえず、伽藍となる -rand:1/6,1/6 -============================ -input: -EDT -output: -MonotoneMuseum : 永劫消失表(12) > 【一念の奇跡】 -奇跡は起きた。想いが神へと届いたか、それとも紡ぎ手の一念か、その身のなにを失うこともなく、あなたはこの戦いを終えることを許されたのだ。 -> 代償は発生しない -rand:6/6,6/6 -============================ -input: -DTM -output: -MonotoneMuseum : 歪み表(館・城)(12) > 【ほつれ】 -世界がひび割れ、ほつれが現出する。ほつれに触れたものは虚無に飲み込まれ、帰ってくることはない。 -rand:1/6,2/6 -============================ -input: -DTM -output: -MonotoneMuseum : 歪み表(館・城)(65) > 【炎上】 -館が炎上をはじめる。ここに留まっていれば、問答無用で死ぬことになるだろう。 -rand:6/6,5/6 diff --git a/src/src_bcdice/test/data/MonotoneMuseum_Korean.txt b/src/src_bcdice/test/data/MonotoneMuseum_Korean.txt deleted file mode 100644 index afeab075d..000000000 --- a/src/src_bcdice/test/data/MonotoneMuseum_Korean.txt +++ /dev/null @@ -1,94 +0,0 @@ -input: -2D6>=7 -output: -MonotoneMuseum : (2D6>=7) > 7[2,5]+0 → 7 > 성공 -rand:5/6,2/6 -============================ -input: -2D6>=7 -output: -MonotoneMuseum : (2D6>=7) > 12[6,6]+0 → 12 > 자동 성공 -rand:6/6,6/6 -============================ -input: -2D6>=7 -output: -MonotoneMuseum : (2D6>=7) > 2[1,1]+0 → 2 > 자동 실패 -rand:1/6,1/6 -============================ -input: -2D6+1>=5[11,3] -output: -MonotoneMuseum : (2D6+1>=5[11,3]) > 6[2,4]+1 → 7 > 성공 -rand:2/6,4/6 -============================ -input: -2D6+1>=5[11,3] -output: -MonotoneMuseum : (2D6+1>=5[11,3]) > 11[5,6]+1 → 12 > 자동 성공 -rand:5/6,6/6 -============================ -input: -2D6+1>=5[11,3] -output: -MonotoneMuseum : (2D6+1>=5[11,3]) > 3[1,2]+1 → 4 > 자동 실패 -rand:1/6,2/6 -============================ -input: -OT -output: -MonotoneMuseum : 징조표(6) > 【중압】 -배드 스테이터스[중압]을 받는다. -rand:3/6,3/6 -============================ -input: -DT -output: -MonotoneMuseum : 징조표(2) > 【세계소실】 -연극의 무대가 모두 없어진다. 무대에 남아있는 것은 너희들과 이형, 가람뿐이다. 클라이맥스 페이즈로. -rand:1/6,1/6 -============================ -input: -WDT -output: -MonotoneMuseum : 세계왜곡표(2) > 【소실】 -세계로부터 보스 캐릭터가 소거되어 소멸한다. 엔딩 페이즈로 직행. -rand:1/6,1/6 -============================ -input: -ET -output: -MonotoneMuseum : 감정표(22) > 【위협(脅威)】 -rand:2/6,2/6 -============================ -input: -ET -output: -MonotoneMuseum : 감정표(11) > 【신뢰(信頼)】 -rand:1/6,1/6 -============================ -input: -ET2 -output: -MonotoneMuseum : 감정표2.0(32) > 【대여(貸し)】 -rand:3/6,2/6 -============================ -input: -ET2 -output: -MonotoneMuseum : 감정표2.0(12) > 【동일시(同一視)】 -rand:1/6,2/6 -============================ -input: -DT2 -output: -MonotoneMuseum : 일그러짐표ver2.0(66) > 【지역소멸】 -연극의 무대가 되는 지역 그 자체가 사라져서 없어진다. 영향 아래에 있는 모든 캐릭터(가람을 포함한다)는 【봉제】 난이도 10의 판정에 성공하면 탈출할 수 있다. 실패했을 경우 그 즉시 사망한다. 엑스트라는 무조건 사망한다. -rand:6/6,6/6 -============================ -input: -DT2 -output: -MonotoneMuseum : 일그러짐표ver2.0(32) > 【시간가속】 -씬 내에 존재하는 모든 무생물과 생물은 2D6년만큼 시간이 가속한다. 생물이라면 노화한다. 방적공은 【봉제】 난이도 8의 판정에 성공하면 이 영향을 받지 않는다. -rand:3/6,2/6 diff --git a/src/src_bcdice/test/data/Nechronica.txt b/src/src_bcdice/test/data/Nechronica.txt deleted file mode 100644 index 7c6305275..000000000 --- a/src/src_bcdice/test/data/Nechronica.txt +++ /dev/null @@ -1,941 +0,0 @@ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 2 > 成功 -rand:2/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 8 > 成功 -rand:8/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 3 > 成功 -rand:3/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 6 > 成功 -rand:6/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 9 > 成功 -rand:9/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 5 > 成功 -rand:5/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 2 > 成功 -rand:2/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 10 > 成功 -rand:10/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 5 > 成功 -rand:5/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 6 > 成功 -rand:6/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 56[3,4,4,4,5,6,6,7,8,9] > 56 > 大成功 -rand:5/10,4/10,7/10,4/10,9/10,4/10,8/10,6/10,6/10,3/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 60[1,2,4,6,6,6,8,8,9,10] > 60 > 大成功 -rand:10/10,6/10,9/10,2/10,8/10,1/10,8/10,6/10,6/10,4/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 56[1,2,4,4,5,7,8,8,8,9] > 56 > 大成功 -rand:9/10,5/10,1/10,7/10,2/10,8/10,8/10,4/10,4/10,8/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 48[1,1,3,3,4,5,6,7,9,9] > 48 > 大成功 -rand:7/10,9/10,5/10,9/10,1/10,1/10,4/10,3/10,3/10,6/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 62[1,2,3,4,5,8,9,10,10,10] > 62 > 大成功 -rand:10/10,1/10,2/10,8/10,4/10,3/10,10/10,10/10,5/10,9/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 57[2,2,3,4,7,7,7,7,9,9] > 57 > 大成功 -rand:2/10,7/10,9/10,7/10,2/10,3/10,9/10,4/10,7/10,7/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 44[1,1,2,2,2,3,5,8,10,10] > 44 > 大成功 -rand:5/10,1/10,1/10,8/10,10/10,3/10,2/10,10/10,2/10,2/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 61[2,3,3,5,6,7,7,8,10,10] > 61 > 大成功 -rand:10/10,8/10,3/10,7/10,6/10,10/10,7/10,5/10,3/10,2/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 52[2,2,3,3,4,5,6,7,10,10] > 52 > 大成功 -rand:6/10,3/10,7/10,10/10,2/10,5/10,10/10,2/10,4/10,3/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 63[2,3,4,6,6,7,8,8,9,10] > 63 > 大成功 -rand:10/10,8/10,9/10,6/10,4/10,7/10,8/10,3/10,6/10,2/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 29[2,5,6,6,10] > 29 > 大成功 -rand:6/10,2/10,5/10,10/10,6/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 25[2,2,4,7,10] > 25 > 大成功 -rand:7/10,10/10,2/10,2/10,4/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 22[2,4,4,4,8] > 22 > 大成功 -rand:8/10,2/10,4/10,4/10,4/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 28[2,4,6,6,10] > 28 > 大成功 -rand:6/10,10/10,2/10,6/10,4/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 23[1,3,4,6,9] > 23 > 大成功 -rand:4/10,6/10,9/10,1/10,3/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 28[3,4,6,7,8] > 28 > 大成功 -rand:8/10,6/10,7/10,4/10,3/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 26[1,2,5,9,9] > 26 > 大成功 -rand:5/10,9/10,2/10,9/10,1/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 24[1,3,5,6,9] > 24 > 大成功 -rand:9/10,3/10,5/10,1/10,6/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 29[2,5,6,6,10] > 29 > 大成功 -rand:6/10,2/10,5/10,10/10,6/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 33[2,7,7,8,9] > 33 > 大成功 -rand:8/10,7/10,7/10,2/10,9/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [5] > 5[5] > 失敗 -rand:5/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [9] > 9[9] > 成功 -rand:9/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [5] > 5[5] > 失敗 -rand:5/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [3] > 3[3] > 失敗 -rand:3/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [5] > 5[5] > 失敗 -rand:5/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [5] > 5[5] > 失敗 -rand:5/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [5] > 5[5] > 失敗 -rand:5/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [7] > 7[7] > 成功 -rand:7/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [1] > 1[1] > 大失敗 -rand:1/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [10] > 10[10] > 成功 -rand:10/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [2,10]+1 > 11[3,11] > 大成功 -rand:10/10,2/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [2,6]+1 > 7[3,7] > 成功 -rand:2/10,6/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [6,6]+1 > 7[7,7] > 成功 -rand:6/10,6/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [4,6]+1 > 7[5,7] > 成功 -rand:4/10,6/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [7,7]+1 > 8[8,8] > 成功 -rand:7/10,7/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [5,5]+1 > 6[6,6] > 成功 -rand:5/10,5/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [5,9]+1 > 10[6,10] > 成功 -rand:9/10,5/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [2,6]+1 > 7[3,7] > 成功 -rand:2/10,6/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [2,8]+1 > 9[3,9] > 成功 -rand:8/10,2/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [1,8]+1 > 9[2,9] > 成功 -rand:8/10,1/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [2,10]-1 > 9[1,9] > 成功 -rand:2/10,10/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [4,5]-1 > 4[3,4] > 失敗 -rand:5/10,4/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [4,6]-1 > 5[3,5] > 失敗 -rand:6/10,4/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [2,9]-1 > 8[1,8] > 成功 -rand:9/10,2/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [4,8]-1 > 7[3,7] > 成功 -rand:4/10,8/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [2,7]-1 > 6[1,6] > 成功 -rand:7/10,2/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [6,6]-1 > 5[5,5] > 失敗 -rand:6/10,6/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [1,8]-1 > 7[0,7] > 成功 -rand:8/10,1/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [6,10]-1 > 9[5,9] > 成功 -rand:6/10,10/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [5,5]-1 > 4[4,4] > 失敗 -rand:5/10,5/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [6,6,9]+5 > 14[11,11,14] > 大成功 -rand:6/10,9/10,6/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [7,9,10]+5 > 15[12,14,15] > 大成功 -rand:9/10,10/10,7/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [2,6,7]+5 > 12[7,11,12] > 大成功 -rand:7/10,6/10,2/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [4,7,7]+5 > 12[9,12,12] > 大成功 -rand:4/10,7/10,7/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [3,4,8]+5 > 13[8,9,13] > 大成功 -rand:3/10,4/10,8/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [1,5,5]+5 > 10[6,10,10] > 成功 -rand:5/10,5/10,1/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [1,4,9]+5 > 14[6,9,14] > 大成功 -rand:1/10,4/10,9/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [1,6,10]+5 > 15[6,11,15] > 大成功 -rand:10/10,6/10,1/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [2,5,5]+5 > 10[7,10,10] > 成功 -rand:5/10,2/10,5/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [3,4,5]+5 > 10[8,9,10] > 成功 -rand:5/10,4/10,3/10 -============================ -input: -[1...5]NC -output: -Nechronica : (5R10[0]) > [3,6,8,8,9] > 9[3,6,8,8,9] > 成功 -rand:5/5,3/10,8/10,8/10,9/10,6/10 -============================ -input: -[1...5]NC -output: -Nechronica : (1R10[0]) > [5] > 5[5] > 失敗 -rand:1/5,5/10 -============================ -input: -[1...5]NC -output: -Nechronica : (4R10[0]) > [1,5,6,7] > 7[1,5,6,7] > 成功 -rand:4/5,6/10,7/10,1/10,5/10 -============================ -input: -[1...5]NC -output: -Nechronica : (4R10[0]) > [1,2,4,8] > 8[1,2,4,8] > 成功 -rand:4/5,1/10,8/10,2/10,4/10 -============================ -input: -[1...5]NC -output: -Nechronica : (3R10[0]) > [4,8,9] > 9[4,8,9] > 成功 -rand:3/5,4/10,8/10,9/10 -============================ -input: -[1...5]NC -output: -Nechronica : (3R10[0]) > [6,9,9] > 9[6,9,9] > 成功 -rand:3/5,9/10,6/10,9/10 -============================ -input: -[1...5]NC -output: -Nechronica : (5R10[0]) > [1,2,4,8,9] > 9[1,2,4,8,9] > 成功 -rand:5/5,8/10,1/10,2/10,9/10,4/10 -============================ -input: -[1...5]NC -output: -Nechronica : (2R10[0]) > [2,7] > 7[2,7] > 成功 -rand:2/5,7/10,2/10 -============================ -input: -[1...5]NC -output: -Nechronica : (5R10[0]) > [3,5,7,8,10] > 10[3,5,7,8,10] > 成功 -rand:5/5,8/10,10/10,5/10,3/10,7/10 -============================ -input: -[1...5]NC -output: -Nechronica : (4R10[0]) > [1,6,6,10] > 10[1,6,6,10] > 成功 -rand:4/5,6/10,10/10,1/10,6/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (2R10+1[0]) > [2,5]+1 > 6[3,6] > 成功 -rand:2/5,1/5,5/10,2/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (4R10+3[0]) > [5,6,6,10]+3 > 13[8,9,9,13] > 大成功 -rand:4/5,3/5,10/10,6/10,5/10,6/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (3R10+5[0]) > [2,5,9]+5 > 14[7,10,14] > 大成功 -rand:3/5,5/5,9/10,2/10,5/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (4R10+3[0]) > [2,2,6,8]+3 > 11[5,5,9,11] > 大成功 -rand:4/5,3/5,6/10,2/10,2/10,8/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (5R10+2[0]) > [1,3,6,7,8]+2 > 10[3,5,8,9,10] > 成功 -rand:5/5,2/5,8/10,6/10,7/10,3/10,1/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (2R10+5[0]) > [2,3]+5 > 8[7,8] > 成功 -rand:2/5,5/5,3/10,2/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (1R10+5[0]) > [4]+5 > 9[9] > 成功 -rand:1/5,5/5,4/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (4R10+5[0]) > [1,3,8,9]+5 > 14[6,8,13,14] > 大成功 -rand:4/5,5/5,9/10,1/10,8/10,3/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (4R10+4[0]) > [2,5,6,8]+4 > 12[6,9,10,12] > 大成功 -rand:4/5,4/5,8/10,6/10,2/10,5/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (1R10+5[0]) > [7]+5 > 12[12] > 大成功 -rand:1/5,5/5,7/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [10] > 10[10] > 成功 > 頭(なければ攻撃側任意) -rand:10/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [1] > 1[1] > 大失敗 -rand:1/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [1] > 1[1] > 大失敗 -rand:1/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [6] > 6[6] > 成功 > 防御側任意 -rand:6/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [7] > 7[7] > 成功 > 脚(なければ攻撃側任意) -rand:7/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [7] > 7[7] > 成功 > 脚(なければ攻撃側任意) -rand:7/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [1] > 1[1] > 大失敗 -rand:1/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [3] > 3[3] > 失敗 -rand:3/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [8] > 8[8] > 成功 > 胴(なければ攻撃側任意) -rand:8/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [5] > 5[5] > 失敗 -rand:5/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [3,9]+1 > 10[4,10] > 成功 > 頭(なければ攻撃側任意) -rand:3/10,9/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [6,8]+1 > 9[7,9] > 成功 > 腕(なければ攻撃側任意) -rand:8/10,6/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [1,6]+1 > 7[2,7] > 成功 > 脚(なければ攻撃側任意) -rand:1/10,6/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [6,6]+1 > 7[7,7] > 成功 > 脚(なければ攻撃側任意) -rand:6/10,6/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [2,3]+1 > 4[3,4] > 失敗 -rand:2/10,3/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [9,9]+1 > 10[10,10] > 成功 > 頭(なければ攻撃側任意) -rand:9/10,9/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [2,9]+1 > 10[3,10] > 成功 > 頭(なければ攻撃側任意) -rand:9/10,2/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [5,5]+1 > 6[6,6] > 成功 > 防御側任意 -rand:5/10,5/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [4,7]+1 > 8[5,8] > 成功 > 胴(なければ攻撃側任意) -rand:4/10,7/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [6,8]+1 > 9[7,9] > 成功 > 腕(なければ攻撃側任意) -rand:8/10,6/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [1,4]-1 > 3[0,3] > 大失敗 > 使用パーツ全損 -rand:4/10,1/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [4,9]-1 > 8[3,8] > 成功 > 胴(なければ攻撃側任意) -rand:9/10,4/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [3,6]-1 > 5[2,5] > 失敗 -rand:3/10,6/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [9,9]-1 > 8[8,8] > 成功 > 胴(なければ攻撃側任意) -rand:9/10,9/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [7,9]-1 > 8[6,8] > 成功 > 胴(なければ攻撃側任意) -rand:7/10,9/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [6,6]-1 > 5[5,5] > 失敗 -rand:6/10,6/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [3,7]-1 > 6[2,6] > 成功 > 防御側任意 -rand:3/10,7/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [2,2]-1 > 1[1,1] > 大失敗 > 使用パーツ全損 -rand:2/10,2/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [6,7]-1 > 6[5,6] > 成功 > 防御側任意 -rand:7/10,6/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [4,5]-1 > 4[3,4] > 失敗 -rand:5/10,4/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [3,7,8]+5 > 13[8,12,13] > 大成功 > 攻撃側任意(追加ダメージ3) -rand:7/10,3/10,8/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [8,9,9]+5 > 14[13,14,14] > 大成功 > 攻撃側任意(追加ダメージ4) -rand:8/10,9/10,9/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [4,6,9]+5 > 14[9,11,14] > 大成功 > 攻撃側任意(追加ダメージ4) -rand:6/10,4/10,9/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [5,6,10]+5 > 15[10,11,15] > 大成功 > 攻撃側任意(追加ダメージ5) -rand:5/10,10/10,6/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [4,9,9]+5 > 14[9,14,14] > 大成功 > 攻撃側任意(追加ダメージ4) -rand:9/10,9/10,4/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [2,8,8]+5 > 13[7,13,13] > 大成功 > 攻撃側任意(追加ダメージ3) -rand:8/10,2/10,8/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [5,10,10]+5 > 15[10,15,15] > 大成功 > 攻撃側任意(追加ダメージ5) -rand:10/10,10/10,5/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [6,7,10]+5 > 15[11,12,15] > 大成功 > 攻撃側任意(追加ダメージ5) -rand:10/10,7/10,6/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [1,2,4]+5 > 9[6,7,9] > 成功 > 腕(なければ攻撃側任意) -rand:4/10,1/10,2/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [1,2,5]+5 > 10[6,7,10] > 成功 > 頭(なければ攻撃側任意) -rand:5/10,2/10,1/10 -============================ -input: -[1...5]NA -output: -Nechronica : (4R10[1]) > [1,1,2,10] > 10[1,1,2,10] > 成功 > 頭(なければ攻撃側任意) -rand:4/5,1/10,10/10,1/10,2/10 -============================ -input: -[1...5]NA -output: -Nechronica : (3R10[1]) > [4,10,10] > 10[4,10,10] > 成功 > 頭(なければ攻撃側任意) -rand:3/5,4/10,10/10,10/10 -============================ -input: -[1...5]NA -output: -Nechronica : (4R10[1]) > [5,6,7,9] > 9[5,6,7,9] > 成功 > 腕(なければ攻撃側任意) -rand:4/5,6/10,7/10,5/10,9/10 -============================ -input: -[1...5]NA -output: -Nechronica : (1R10[1]) > [3] > 3[3] > 失敗 -rand:1/5,3/10 -============================ -input: -[1...5]NA -output: -Nechronica : (2R10[1]) > [1,3] > 3[1,3] > 大失敗 > 使用パーツ全損 -rand:2/5,1/10,3/10 -============================ -input: -[1...5]NA -output: -Nechronica : (5R10[1]) > [4,5,5,6,7] > 7[4,5,5,6,7] > 成功 > 脚(なければ攻撃側任意) -rand:5/5,7/10,4/10,5/10,5/10,6/10 -============================ -input: -[1...5]NA -output: -Nechronica : (4R10[1]) > [1,1,2,5] > 5[1,1,2,5] > 大失敗 > 使用パーツ全損 -rand:4/5,2/10,1/10,1/10,5/10 -============================ -input: -[1...5]NA -output: -Nechronica : (1R10[1]) > [9] > 9[9] > 成功 > 腕(なければ攻撃側任意) -rand:1/5,9/10 -============================ -input: -[1...5]NA -output: -Nechronica : (3R10[1]) > [1,5,8] > 8[1,5,8] > 成功 > 胴(なければ攻撃側任意) -rand:3/5,8/10,5/10,1/10 -============================ -input: -[1...5]NA -output: -Nechronica : (2R10[1]) > [5,6] > 6[5,6] > 成功 > 防御側任意 -rand:2/5,5/10,6/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (1R10+4[1]) > [8]+4 > 12[12] > 大成功 > 攻撃側任意(追加ダメージ2) -rand:1/5,4/5,8/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (3R10+5[1]) > [5,6,8]+5 > 13[10,11,13] > 大成功 > 攻撃側任意(追加ダメージ3) -rand:3/5,5/5,8/10,5/10,6/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (2R10+1[1]) > [4,7]+1 > 8[5,8] > 成功 > 胴(なければ攻撃側任意) -rand:2/5,1/5,4/10,7/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (5R10+4[1]) > [1,4,8,9,9]+4 > 13[5,8,12,13,13] > 大成功 > 攻撃側任意(追加ダメージ3) -rand:5/5,4/5,4/10,9/10,8/10,9/10,1/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (2R10+4[1]) > [3,3]+4 > 7[7,7] > 成功 > 脚(なければ攻撃側任意) -rand:2/5,4/5,3/10,3/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (1R10+1[1]) > [1]+1 > 2[2] > 失敗 -rand:1/5,1/5,1/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (2R10+1[1]) > [4,5]+1 > 6[5,6] > 成功 > 防御側任意 -rand:2/5,1/5,4/10,5/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (2R10+4[1]) > [1,7]+4 > 11[5,11] > 大成功 > 攻撃側任意(追加ダメージ1) -rand:2/5,4/5,7/10,1/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (1R10+4[1]) > [6]+4 > 10[10] > 成功 > 頭(なければ攻撃側任意) -rand:1/5,4/5,6/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (1R10+5[1]) > [3]+5 > 8[8] > 成功 > 胴(なければ攻撃側任意) -rand:1/5,5/5,3/10 -============================ -input: -nm -output: -Nechronica : 姉妹への未練表(1) > 【嫌悪】[発狂:敵対認識]敵に命中しなかった攻撃は全て、射程内にいるなら嫌悪の対象に命中する。(防御側任意) -rand:1/10 -============================ -input: -nm -output: -Nechronica : 姉妹への未練表(10) > 【信頼】[発狂:疑心暗鬼]あなた以外の全ての姉妹の最大行動値が減少する(-1) -rand:10/10 -============================ -input: -nmn -output: -Nechronica : 中立者への未練表(1) > 【忌避】[発狂:隔絶意識]あなたは未練の対象ないしサヴァントと同じエリアにいる間、「移動以外の効果を持つマニューバ」を宣言できない。また、「自身と未練の対象ないしサヴァント」以外を移動マニューバの対象にできない。 -rand:1/10 -============================ -input: -nmn -output: -Nechronica : 中立者への未練表(10) > 【信頼】[発狂:疑心暗鬼]あなた以外の全ての姉妹の最大行動値が減少する(-1) -rand:10/10 -============================ -input: -nme -output: -Nechronica : 敵への未練表(1) > 【恐怖】[発狂:認識拒否]あなたは、行動判定・狂気判定の出目に修正-1を受ける。 -rand:1/10 -============================ -input: -nme -output: -Nechronica : 敵への未練表(10) > 【憎悪】[発狂:痕跡破壊]この未練を発狂した際、あなた以外の姉妹から1人選ぶ。その姉妹は任意のパーツを2つ損傷する。 -rand:10/10 -============================ -input: -2D10>=? 目標値?でバグらない -output: -Nechronica : (2D10>=?) > 10[5,5] > 10 > 失敗 -rand:5/10,5/10 diff --git a/src/src_bcdice/test/data/Nechronica_Korean.txt b/src/src_bcdice/test/data/Nechronica_Korean.txt deleted file mode 100644 index fa6735b49..000000000 --- a/src/src_bcdice/test/data/Nechronica_Korean.txt +++ /dev/null @@ -1,905 +0,0 @@ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 2 > 성공 -rand:2/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 8 > 성공 -rand:8/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 3 > 성공 -rand:3/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 6 > 성공 -rand:6/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 9 > 성공 -rand:9/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 5 > 성공 -rand:5/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 2 > 성공 -rand:2/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 10 > 성공 -rand:10/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 5 > 성공 -rand:5/10 -============================ -input: -1D10>=1 -output: -Nechronica : (1D10>=1) > 6 > 성공 -rand:6/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 56[3,4,4,4,5,6,6,7,8,9] > 56 > 대성공 -rand:5/10,4/10,7/10,4/10,9/10,4/10,8/10,6/10,6/10,3/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 60[1,2,4,6,6,6,8,8,9,10] > 60 > 대성공 -rand:10/10,6/10,9/10,2/10,8/10,1/10,8/10,6/10,6/10,4/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 56[1,2,4,4,5,7,8,8,8,9] > 56 > 대성공 -rand:9/10,5/10,1/10,7/10,2/10,8/10,8/10,4/10,4/10,8/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 48[1,1,3,3,4,5,6,7,9,9] > 48 > 대성공 -rand:7/10,9/10,5/10,9/10,1/10,1/10,4/10,3/10,3/10,6/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 62[1,2,3,4,5,8,9,10,10,10] > 62 > 대성공 -rand:10/10,1/10,2/10,8/10,4/10,3/10,10/10,10/10,5/10,9/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 57[2,2,3,4,7,7,7,7,9,9] > 57 > 대성공 -rand:2/10,7/10,9/10,7/10,2/10,3/10,9/10,4/10,7/10,7/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 44[1,1,2,2,2,3,5,8,10,10] > 44 > 대성공 -rand:5/10,1/10,1/10,8/10,10/10,3/10,2/10,10/10,2/10,2/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 61[2,3,3,5,6,7,7,8,10,10] > 61 > 대성공 -rand:10/10,8/10,3/10,7/10,6/10,10/10,7/10,5/10,3/10,2/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 52[2,2,3,3,4,5,6,7,10,10] > 52 > 대성공 -rand:6/10,3/10,7/10,10/10,2/10,5/10,10/10,2/10,4/10,3/10 -============================ -input: -10D10>=50 -output: -Nechronica : (10D10>=50) > 63[2,3,4,6,6,7,8,8,9,10] > 63 > 대성공 -rand:10/10,8/10,9/10,6/10,4/10,7/10,8/10,3/10,6/10,2/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 29[2,5,6,6,10] > 29 > 대성공 -rand:6/10,2/10,5/10,10/10,6/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 25[2,2,4,7,10] > 25 > 대성공 -rand:7/10,10/10,2/10,2/10,4/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 22[2,4,4,4,8] > 22 > 대성공 -rand:8/10,2/10,4/10,4/10,4/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 28[2,4,6,6,10] > 28 > 대성공 -rand:6/10,10/10,2/10,6/10,4/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 23[1,3,4,6,9] > 23 > 대성공 -rand:4/10,6/10,9/10,1/10,3/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 28[3,4,6,7,8] > 28 > 대성공 -rand:8/10,6/10,7/10,4/10,3/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 26[1,2,5,9,9] > 26 > 대성공 -rand:5/10,9/10,2/10,9/10,1/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 24[1,3,5,6,9] > 24 > 대성공 -rand:9/10,3/10,5/10,1/10,6/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 29[2,5,6,6,10] > 29 > 대성공 -rand:6/10,2/10,5/10,10/10,6/10 -============================ -input: -5D10>=25 -output: -Nechronica : (5D10>=25) > 33[2,7,7,8,9] > 33 > 대성공 -rand:8/10,7/10,7/10,2/10,9/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [5] > 5[5] > 실패 -rand:5/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [9] > 9[9] > 성공 -rand:9/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [5] > 5[5] > 실패 -rand:5/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [3] > 3[3] > 실패 -rand:3/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [5] > 5[5] > 실패 -rand:5/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [5] > 5[5] > 실패 -rand:5/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [5] > 5[5] > 실패 -rand:5/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [7] > 7[7] > 성공 -rand:7/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [1] > 1[1] > 대실패 -rand:1/10 -============================ -input: -1NC -output: -Nechronica : (1R10[0]) > [10] > 10[10] > 성공 -rand:10/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [2,10]+1 > 11[3,11] > 대성공 -rand:10/10,2/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [2,6]+1 > 7[3,7] > 성공 -rand:2/10,6/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [6,6]+1 > 7[7,7] > 성공 -rand:6/10,6/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [4,6]+1 > 7[5,7] > 성공 -rand:4/10,6/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [7,7]+1 > 8[8,8] > 성공 -rand:7/10,7/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [5,5]+1 > 6[6,6] > 성공 -rand:5/10,5/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [5,9]+1 > 10[6,10] > 성공 -rand:9/10,5/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [2,6]+1 > 7[3,7] > 성공 -rand:2/10,6/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [2,8]+1 > 9[3,9] > 성공 -rand:8/10,2/10 -============================ -input: -2NC+1 -output: -Nechronica : (2R10+1[0]) > [1,8]+1 > 9[2,9] > 성공 -rand:8/10,1/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [2,10]-1 > 9[1,9] > 성공 -rand:2/10,10/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [4,5]-1 > 4[3,4] > 실패 -rand:5/10,4/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [4,6]-1 > 5[3,5] > 실패 -rand:6/10,4/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [2,9]-1 > 8[1,8] > 성공 -rand:9/10,2/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [4,8]-1 > 7[3,7] > 성공 -rand:4/10,8/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [2,7]-1 > 6[1,6] > 성공 -rand:7/10,2/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [6,6]-1 > 5[5,5] > 실패 -rand:6/10,6/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [1,8]-1 > 7[0,7] > 성공 -rand:8/10,1/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [6,10]-1 > 9[5,9] > 성공 -rand:6/10,10/10 -============================ -input: -2NC-1 -output: -Nechronica : (2R10-1[0]) > [5,5]-1 > 4[4,4] > 실패 -rand:5/10,5/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [6,6,9]+5 > 14[11,11,14] > 대성공 -rand:6/10,9/10,6/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [7,9,10]+5 > 15[12,14,15] > 대성공 -rand:9/10,10/10,7/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [2,6,7]+5 > 12[7,11,12] > 대성공 -rand:7/10,6/10,2/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [4,7,7]+5 > 12[9,12,12] > 대성공 -rand:4/10,7/10,7/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [3,4,8]+5 > 13[8,9,13] > 대성공 -rand:3/10,4/10,8/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [1,5,5]+5 > 10[6,10,10] > 성공 -rand:5/10,5/10,1/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [1,4,9]+5 > 14[6,9,14] > 대성공 -rand:1/10,4/10,9/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [1,6,10]+5 > 15[6,11,15] > 대성공 -rand:10/10,6/10,1/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [2,5,5]+5 > 10[7,10,10] > 성공 -rand:5/10,2/10,5/10 -============================ -input: -3NC+5 -output: -Nechronica : (3R10+5[0]) > [3,4,5]+5 > 10[8,9,10] > 성공 -rand:5/10,4/10,3/10 -============================ -input: -[1...5]NC -output: -Nechronica : (5R10[0]) > [3,6,8,8,9] > 9[3,6,8,8,9] > 성공 -rand:5/5,3/10,8/10,8/10,9/10,6/10 -============================ -input: -[1...5]NC -output: -Nechronica : (1R10[0]) > [5] > 5[5] > 실패 -rand:1/5,5/10 -============================ -input: -[1...5]NC -output: -Nechronica : (4R10[0]) > [1,5,6,7] > 7[1,5,6,7] > 성공 -rand:4/5,6/10,7/10,1/10,5/10 -============================ -input: -[1...5]NC -output: -Nechronica : (4R10[0]) > [1,2,4,8] > 8[1,2,4,8] > 성공 -rand:4/5,1/10,8/10,2/10,4/10 -============================ -input: -[1...5]NC -output: -Nechronica : (3R10[0]) > [4,8,9] > 9[4,8,9] > 성공 -rand:3/5,4/10,8/10,9/10 -============================ -input: -[1...5]NC -output: -Nechronica : (3R10[0]) > [6,9,9] > 9[6,9,9] > 성공 -rand:3/5,9/10,6/10,9/10 -============================ -input: -[1...5]NC -output: -Nechronica : (5R10[0]) > [1,2,4,8,9] > 9[1,2,4,8,9] > 성공 -rand:5/5,8/10,1/10,2/10,9/10,4/10 -============================ -input: -[1...5]NC -output: -Nechronica : (2R10[0]) > [2,7] > 7[2,7] > 성공 -rand:2/5,7/10,2/10 -============================ -input: -[1...5]NC -output: -Nechronica : (5R10[0]) > [3,5,7,8,10] > 10[3,5,7,8,10] > 성공 -rand:5/5,8/10,10/10,5/10,3/10,7/10 -============================ -input: -[1...5]NC -output: -Nechronica : (4R10[0]) > [1,6,6,10] > 10[1,6,6,10] > 성공 -rand:4/5,6/10,10/10,1/10,6/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (2R10+1[0]) > [2,5]+1 > 6[3,6] > 성공 -rand:2/5,1/5,5/10,2/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (4R10+3[0]) > [5,6,6,10]+3 > 13[8,9,9,13] > 대성공 -rand:4/5,3/5,10/10,6/10,5/10,6/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (3R10+5[0]) > [2,5,9]+5 > 14[7,10,14] > 대성공 -rand:3/5,5/5,9/10,2/10,5/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (4R10+3[0]) > [2,2,6,8]+3 > 11[5,5,9,11] > 대성공 -rand:4/5,3/5,6/10,2/10,2/10,8/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (5R10+2[0]) > [1,3,6,7,8]+2 > 10[3,5,8,9,10] > 성공 -rand:5/5,2/5,8/10,6/10,7/10,3/10,1/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (2R10+5[0]) > [2,3]+5 > 8[7,8] > 성공 -rand:2/5,5/5,3/10,2/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (1R10+5[0]) > [4]+5 > 9[9] > 성공 -rand:1/5,5/5,4/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (4R10+5[0]) > [1,3,8,9]+5 > 14[6,8,13,14] > 대성공 -rand:4/5,5/5,9/10,1/10,8/10,3/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (4R10+4[0]) > [2,5,6,8]+4 > 12[6,9,10,12] > 대성공 -rand:4/5,4/5,8/10,6/10,2/10,5/10 -============================ -input: -[1...5]NC+[1...5] -output: -Nechronica : (1R10+5[0]) > [7]+5 > 12[12] > 대성공 -rand:1/5,5/5,7/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [10] > 10[10] > 성공 > 머리(없으면 공격측 임의) -rand:10/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [1] > 1[1] > 대실패 -rand:1/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [1] > 1[1] > 대실패 -rand:1/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [6] > 6[6] > 성공 > 방어측 임의 -rand:6/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [7] > 7[7] > 성공 > 다리(없으면 공격측 임의) -rand:7/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [7] > 7[7] > 성공 > 다리(없으면 공격측 임의) -rand:7/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [1] > 1[1] > 대실패 -rand:1/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [3] > 3[3] > 실패 -rand:3/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [8] > 8[8] > 성공 > 몸통(없으면 공격측 임의) -rand:8/10 -============================ -input: -1NA -output: -Nechronica : (1R10[1]) > [5] > 5[5] > 실패 -rand:5/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [3,9]+1 > 10[4,10] > 성공 > 머리(없으면 공격측 임의) -rand:3/10,9/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [6,8]+1 > 9[7,9] > 성공 > 팔(없으면 공격측 임의) -rand:8/10,6/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [1,6]+1 > 7[2,7] > 성공 > 다리(없으면 공격측 임의) -rand:1/10,6/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [6,6]+1 > 7[7,7] > 성공 > 다리(없으면 공격측 임의) -rand:6/10,6/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [2,3]+1 > 4[3,4] > 실패 -rand:2/10,3/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [9,9]+1 > 10[10,10] > 성공 > 머리(없으면 공격측 임의) -rand:9/10,9/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [2,9]+1 > 10[3,10] > 성공 > 머리(없으면 공격측 임의) -rand:9/10,2/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [5,5]+1 > 6[6,6] > 성공 > 방어측 임의 -rand:5/10,5/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [4,7]+1 > 8[5,8] > 성공 > 몸통(없으면 공격측 임의) -rand:4/10,7/10 -============================ -input: -2NA+1 -output: -Nechronica : (2R10+1[1]) > [6,8]+1 > 9[7,9] > 성공 > 팔(없으면 공격측 임의) -rand:8/10,6/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [1,4]-1 > 3[0,3] > 대실패 > 사용파츠 전부 손실 -rand:4/10,1/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [4,9]-1 > 8[3,8] > 성공 > 몸통(없으면 공격측 임의) -rand:9/10,4/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [3,6]-1 > 5[2,5] > 실패 -rand:3/10,6/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [9,9]-1 > 8[8,8] > 성공 > 몸통(없으면 공격측 임의) -rand:9/10,9/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [7,9]-1 > 8[6,8] > 성공 > 몸통(없으면 공격측 임의) -rand:7/10,9/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [6,6]-1 > 5[5,5] > 실패 -rand:6/10,6/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [3,7]-1 > 6[2,6] > 성공 > 방어측 임의 -rand:3/10,7/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [2,2]-1 > 1[1,1] > 대실패 > 사용파츠 전부 손실 -rand:2/10,2/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [6,7]-1 > 6[5,6] > 성공 > 방어측 임의 -rand:7/10,6/10 -============================ -input: -2NA-1 -output: -Nechronica : (2R10-1[1]) > [4,5]-1 > 4[3,4] > 실패 -rand:5/10,4/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [3,7,8]+5 > 13[8,12,13] > 대성공 > 공격측 임의(추가 데미지3) -rand:7/10,3/10,8/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [8,9,9]+5 > 14[13,14,14] > 대성공 > 공격측 임의(추가 데미지4) -rand:8/10,9/10,9/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [4,6,9]+5 > 14[9,11,14] > 대성공 > 공격측 임의(추가 데미지4) -rand:6/10,4/10,9/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [5,6,10]+5 > 15[10,11,15] > 대성공 > 공격측 임의(추가 데미지5) -rand:5/10,10/10,6/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [4,9,9]+5 > 14[9,14,14] > 대성공 > 공격측 임의(추가 데미지4) -rand:9/10,9/10,4/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [2,8,8]+5 > 13[7,13,13] > 대성공 > 공격측 임의(추가 데미지3) -rand:8/10,2/10,8/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [5,10,10]+5 > 15[10,15,15] > 대성공 > 공격측 임의(추가 데미지5) -rand:10/10,10/10,5/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [6,7,10]+5 > 15[11,12,15] > 대성공 > 공격측 임의(추가 데미지5) -rand:10/10,7/10,6/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [1,2,4]+5 > 9[6,7,9] > 성공 > 팔(없으면 공격측 임의) -rand:4/10,1/10,2/10 -============================ -input: -3NA+5 -output: -Nechronica : (3R10+5[1]) > [1,2,5]+5 > 10[6,7,10] > 성공 > 머리(없으면 공격측 임의) -rand:5/10,2/10,1/10 -============================ -input: -[1...5]NA -output: -Nechronica : (4R10[1]) > [1,1,2,10] > 10[1,1,2,10] > 성공 > 머리(없으면 공격측 임의) -rand:4/5,1/10,10/10,1/10,2/10 -============================ -input: -[1...5]NA -output: -Nechronica : (3R10[1]) > [4,10,10] > 10[4,10,10] > 성공 > 머리(없으면 공격측 임의) -rand:3/5,4/10,10/10,10/10 -============================ -input: -[1...5]NA -output: -Nechronica : (4R10[1]) > [5,6,7,9] > 9[5,6,7,9] > 성공 > 팔(없으면 공격측 임의) -rand:4/5,6/10,7/10,5/10,9/10 -============================ -input: -[1...5]NA -output: -Nechronica : (1R10[1]) > [3] > 3[3] > 실패 -rand:1/5,3/10 -============================ -input: -[1...5]NA -output: -Nechronica : (2R10[1]) > [1,3] > 3[1,3] > 대실패 > 사용파츠 전부 손실 -rand:2/5,1/10,3/10 -============================ -input: -[1...5]NA -output: -Nechronica : (5R10[1]) > [4,5,5,6,7] > 7[4,5,5,6,7] > 성공 > 다리(없으면 공격측 임의) -rand:5/5,7/10,4/10,5/10,5/10,6/10 -============================ -input: -[1...5]NA -output: -Nechronica : (4R10[1]) > [1,1,2,5] > 5[1,1,2,5] > 대실패 > 사용파츠 전부 손실 -rand:4/5,2/10,1/10,1/10,5/10 -============================ -input: -[1...5]NA -output: -Nechronica : (1R10[1]) > [9] > 9[9] > 성공 > 팔(없으면 공격측 임의) -rand:1/5,9/10 -============================ -input: -[1...5]NA -output: -Nechronica : (3R10[1]) > [1,5,8] > 8[1,5,8] > 성공 > 몸통(없으면 공격측 임의) -rand:3/5,8/10,5/10,1/10 -============================ -input: -[1...5]NA -output: -Nechronica : (2R10[1]) > [5,6] > 6[5,6] > 성공 > 방어측 임의 -rand:2/5,5/10,6/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (1R10+4[1]) > [8]+4 > 12[12] > 대성공 > 공격측 임의(추가 데미지2) -rand:1/5,4/5,8/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (3R10+5[1]) > [5,6,8]+5 > 13[10,11,13] > 대성공 > 공격측 임의(추가 데미지3) -rand:3/5,5/5,8/10,5/10,6/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (2R10+1[1]) > [4,7]+1 > 8[5,8] > 성공 > 몸통(없으면 공격측 임의) -rand:2/5,1/5,4/10,7/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (5R10+4[1]) > [1,4,8,9,9]+4 > 13[5,8,12,13,13] > 대성공 > 공격측 임의(추가 데미지3) -rand:5/5,4/5,4/10,9/10,8/10,9/10,1/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (2R10+4[1]) > [3,3]+4 > 7[7,7] > 성공 > 다리(없으면 공격측 임의) -rand:2/5,4/5,3/10,3/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (1R10+1[1]) > [1]+1 > 2[2] > 실패 -rand:1/5,1/5,1/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (2R10+1[1]) > [4,5]+1 > 6[5,6] > 성공 > 방어측 임의 -rand:2/5,1/5,4/10,5/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (2R10+4[1]) > [1,7]+4 > 11[5,11] > 대성공 > 공격측 임의(추가 데미지1) -rand:2/5,4/5,7/10,1/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (1R10+4[1]) > [6]+4 > 10[10] > 성공 > 머리(없으면 공격측 임의) -rand:1/5,4/5,6/10 -============================ -input: -[1...5]NA+[1...5] -output: -Nechronica : (1R10+5[1]) > [3]+5 > 8[8] > 성공 > 몸통(없으면 공격측 임의) -rand:1/5,5/5,3/10 -============================ -input: -2D10>=? 目標値?でバグらない -output: -Nechronica : (2D10>=?) > 10[5,5] > 10 > 失敗 -rand:5/10,5/10 diff --git a/src/src_bcdice/test/data/NeverCloud.txt b/src/src_bcdice/test/data/NeverCloud.txt deleted file mode 100644 index fc98a5a51..000000000 --- a/src/src_bcdice/test/data/NeverCloud.txt +++ /dev/null @@ -1,659 +0,0 @@ -input: -2D6 -output: -NeverCloud : (2D6) > 3[1,2] > 3 -rand:1/6,2/6 -============================ -input: -2D6 -output: -NeverCloud : (2D6) > 2[1,1] > 2 -rand:1/6,1/6 -============================ -input: -2D6 -output: -NeverCloud : (2D6) > 7[3,4] > 7 -rand:3/6,4/6 -============================ -input: -2D6 -output: -NeverCloud : (2D6) > 12[6,6] > 12 -rand:6/6,6/6 -============================ -input: -2D6+2 -output: -NeverCloud : (2D6+2) > 3[1,2]+2 > 5 -rand:1/6,2/6 -============================ -input: -2D6+2 -output: -NeverCloud : (2D6+2) > 2[1,1]+2 > 4 -rand:1/6,1/6 -============================ -input: -2D6+2 -output: -NeverCloud : (2D6+2) > 7[3,4]+2 > 9 -rand:3/6,4/6 -============================ -input: -2D6+2 -output: -NeverCloud : (2D6+2) > 12[6,6]+2 > 14 -rand:6/6,6/6 -============================ -input: -2D6>=5 -output: -NeverCloud : (2D6>=5) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2D6>=5 -output: -NeverCloud : (2D6>=5) > 2[1,1] > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2D6>=5 -output: -NeverCloud : (2D6>=5) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2D6>=5 -output: -NeverCloud : (2D6>=5) > 12[6,6] > 12 > クリティカル -rand:6/6,6/6 -============================ -input: -2D6+0>=5 -output: -NeverCloud : (2D6>=5) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2D6+0>=5 -output: -NeverCloud : (2D6>=5) > 2[1,1] > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2D6+0>=5 -output: -NeverCloud : (2D6>=5) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2D6+0>=5 -output: -NeverCloud : (2D6>=5) > 12[6,6] > 12 > クリティカル -rand:6/6,6/6 -============================ -input: -2D6+2>=5 -output: -NeverCloud : (2D6+2>=5) > 3[1,2]+2 > 5 > 成功 -rand:1/6,2/6 -============================ -input: -2D6+2>=5 -output: -NeverCloud : (2D6+2>=5) > 2[1,1]+2 > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2D6+2>=5 -output: -NeverCloud : (2D6+2>=5) > 7[3,4]+2 > 9 > 成功 -rand:3/6,4/6 -============================ -input: -2D6+2>=5 -output: -NeverCloud : (2D6+2>=5) > 10[6,4]+2 > 12 > 成功 -rand:6/6,4/6 -============================ -input: -2D6+2>=5 -output: -NeverCloud : (2D6+2>=5) > 12[6,6]+2 > 14 > クリティカル -rand:6/6,6/6 -============================ -input: -2D6+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 3[1,2]+2+1 > 6 > 成功 -rand:1/6,2/6 -============================ -input: -2D6+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 2[1,1]+2+1 > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2D6+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 7[3,4]+2+1 > 10 > 成功 -rand:3/6,4/6 -============================ -input: -2D6+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 10[6,4]+2+1 > 13 > 成功 -rand:6/6,4/6 -============================ -input: -2D6+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 12[6,6]+2+1 > 15 > クリティカル -rand:6/6,6/6 -============================ -input: -2D6-2>=5 -output: -NeverCloud : (2D6-2>=5) > 3[1,2]-2 > 1 > 失敗 -rand:1/6,2/6 -============================ -input: -2D6-2>=5 -output: -NeverCloud : (2D6-2>=5) > 6[2,4]-2 > 4 > 失敗 -rand:2/6,4/6 -============================ -input: -2D6-2>=5 -output: -NeverCloud : (2D6-2>=5) > 2[1,1]-2 > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2D6-2>=5 -output: -NeverCloud : (2D6-2>=5) > 7[3,4]-2 > 5 > 成功 -rand:3/6,4/6 -============================ -input: -2D6-2>=5 -output: -NeverCloud : (2D6-2>=5) > 12[6,6]-2 > 10 > クリティカル -rand:6/6,6/6 -============================ -input: -2D>=5 -output: -NeverCloud : (2D6>=5) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2D>=5 -output: -NeverCloud : (2D6>=5) > 2[1,1] > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2D>=5 -output: -NeverCloud : (2D6>=5) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2D>=5 -output: -NeverCloud : (2D6>=5) > 12[6,6] > 12 > クリティカル -rand:6/6,6/6 -============================ -input: -2D -output: -NeverCloud : (2D6) > 3[1,2] > 3 -rand:1/6,2/6 -============================ -input: -2D -output: -NeverCloud : (2D6) > 2[1,1] > 2 -rand:1/6,1/6 -============================ -input: -2D -output: -NeverCloud : (2D6) > 7[3,4] > 7 -rand:3/6,4/6 -============================ -input: -2D -output: -NeverCloud : (2D6) > 12[6,6] > 12 -rand:6/6,6/6 -============================ -input: -2D+2 -output: -NeverCloud : (2D6+2) > 3[1,2]+2 > 5 -rand:1/6,2/6 -============================ -input: -2D+2 -output: -NeverCloud : (2D6+2) > 2[1,1]+2 > 4 -rand:1/6,1/6 -============================ -input: -2D+2 -output: -NeverCloud : (2D6+2) > 7[3,4]+2 > 9 -rand:3/6,4/6 -============================ -input: -2D+2 -output: -NeverCloud : (2D6+2) > 12[6,6]+2 > 14 -rand:6/6,6/6 -============================ -input: -2D+0>=5 -output: -NeverCloud : (2D6>=5) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2D+0>=5 -output: -NeverCloud : (2D6>=5) > 2[1,1] > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2D+0>=5 -output: -NeverCloud : (2D6>=5) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2D+0>=5 -output: -NeverCloud : (2D6>=5) > 12[6,6] > 12 > クリティカル -rand:6/6,6/6 -============================ -input: -2D+2>=5 -output: -NeverCloud : (2D6+2>=5) > 3[1,2]+2 > 5 > 成功 -rand:1/6,2/6 -============================ -input: -2D+2>=5 -output: -NeverCloud : (2D6+2>=5) > 2[1,1]+2 > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2D+2>=5 -output: -NeverCloud : (2D6+2>=5) > 7[3,4]+2 > 9 > 成功 -rand:3/6,4/6 -============================ -input: -2D+2>=5 -output: -NeverCloud : (2D6+2>=5) > 10[6,4]+2 > 12 > 成功 -rand:6/6,4/6 -============================ -input: -2D+2>=5 -output: -NeverCloud : (2D6+2>=5) > 12[6,6]+2 > 14 > クリティカル -rand:6/6,6/6 -============================ -input: -2D+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 3[1,2]+2+1 > 6 > 成功 -rand:1/6,2/6 -============================ -input: -2D+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 2[1,1]+2+1 > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2D+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 7[3,4]+2+1 > 10 > 成功 -rand:3/6,4/6 -============================ -input: -2D+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 10[6,4]+2+1 > 13 > 成功 -rand:6/6,4/6 -============================ -input: -2D+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 12[6,6]+2+1 > 15 > クリティカル -rand:6/6,6/6 -============================ -input: -2D-2>=5 -output: -NeverCloud : (2D6-2>=5) > 3[1,2]-2 > 1 > 失敗 -rand:1/6,2/6 -============================ -input: -2D-2>=5 -output: -NeverCloud : (2D6-2>=5) > 6[2,4]-2 > 4 > 失敗 -rand:2/6,4/6 -============================ -input: -2D-2>=5 -output: -NeverCloud : (2D6-2>=5) > 2[1,1]-2 > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2D-2>=5 -output: -NeverCloud : (2D6-2>=5) > 7[3,4]-2 > 5 > 成功 -rand:3/6,4/6 -============================ -input: -2D-2>=5 -output: -NeverCloud : (2D6-2>=5) > 12[6,6]-2 > 10 > クリティカル -rand:6/6,6/6 -============================ -input: -2NC -output: -NeverCloud : (2D6) > 3[1,2] > 3 -rand:1/6,2/6 -============================ -input: -2NC -output: -NeverCloud : (2D6) > 2[1,1] > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2NC -output: -NeverCloud : (2D6) > 7[3,4] > 7 -rand:3/6,4/6 -============================ -input: -2NC -output: -NeverCloud : (2D6) > 12[6,6] > 12 > クリティカル -rand:6/6,6/6 -============================ -input: -2NC+2 -output: -NeverCloud : (2D6+2) > 3[1,2]+2 > 5 -rand:1/6,2/6 -============================ -input: -2NC+2 -output: -NeverCloud : (2D6+2) > 2[1,1]+2 > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2NC+2 -output: -NeverCloud : (2D6+2) > 7[3,4]+2 > 9 -rand:3/6,4/6 -============================ -input: -2NC+2 -output: -NeverCloud : (2D6+2) > 12[6,6]+2 > 14 > クリティカル -rand:6/6,6/6 -============================ -input: -2NC+2+1 -output: -NeverCloud : (2D6+2+1) > 3[1,2]+2+1 > 6 -rand:1/6,2/6 -============================ -input: -2NC+2+1 -output: -NeverCloud : (2D6+2+1) > 2[1,1]+2+1 > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2NC+2+1 -output: -NeverCloud : (2D6+2+1) > 7[3,4]+2+1 > 10 -rand:3/6,4/6 -============================ -input: -2NC+2+1 -output: -NeverCloud : (2D6+2+1) > 12[6,6]+2+1 > 15 > クリティカル -rand:6/6,6/6 -============================ -input: -2NC>=5 -output: -NeverCloud : (2D6>=5) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2NC>=5 -output: -NeverCloud : (2D6>=5) > 2[1,1] > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2NC>=5 -output: -NeverCloud : (2D6>=5) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2NC>=5 -output: -NeverCloud : (2D6>=5) > 12[6,6] > 12 > クリティカル -rand:6/6,6/6 -============================ -input: -2NC+0>=5 -output: -NeverCloud : (2D6>=5) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2NC+0>=5 -output: -NeverCloud : (2D6>=5) > 2[1,1] > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2NC+0>=5 -output: -NeverCloud : (2D6>=5) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2NC+0>=5 -output: -NeverCloud : (2D6>=5) > 12[6,6] > 12 > クリティカル -rand:6/6,6/6 -============================ -input: -2NC+2>=5 -output: -NeverCloud : (2D6+2>=5) > 3[1,2]+2 > 5 > 成功 -rand:1/6,2/6 -============================ -input: -2NC+2>=5 -output: -NeverCloud : (2D6+2>=5) > 2[1,1]+2 > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2NC+2>=5 -output: -NeverCloud : (2D6+2>=5) > 7[3,4]+2 > 9 > 成功 -rand:3/6,4/6 -============================ -input: -2NC+2>=5 -output: -NeverCloud : (2D6+2>=5) > 10[6,4]+2 > 12 > 成功 -rand:6/6,4/6 -============================ -input: -2NC+2>=5 -output: -NeverCloud : (2D6+2>=5) > 12[6,6]+2 > 14 > クリティカル -rand:6/6,6/6 -============================ -input: -2NC+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 3[1,2]+2+1 > 6 > 成功 -rand:1/6,2/6 -============================ -input: -2NC+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 2[1,1]+2+1 > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2NC+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 7[3,4]+2+1 > 10 > 成功 -rand:3/6,4/6 -============================ -input: -2NC+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 10[6,4]+2+1 > 13 > 成功 -rand:6/6,4/6 -============================ -input: -2NC+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 12[6,6]+2+1 > 15 > クリティカル -rand:6/6,6/6 -============================ -input: -2NC-2>=5 -output: -NeverCloud : (2D6-2>=5) > 3[1,2]-2 > 1 > 失敗 -rand:1/6,2/6 -============================ -input: -2NC-2>=5 -output: -NeverCloud : (2D6-2>=5) > 6[2,4]-2 > 4 > 失敗 -rand:2/6,4/6 -============================ -input: -2NC-2>=5 -output: -NeverCloud : (2D6-2>=5) > 2[1,1]-2 > 0 > ファンブル -rand:1/6,1/6 -============================ -input: -2NC-2>=5 -output: -NeverCloud : (2D6-2>=5) > 7[3,4]-2 > 5 > 成功 -rand:3/6,4/6 -============================ -input: -2NC-2>=5 -output: -NeverCloud : (2D6-2>=5) > 12[6,6]-2 > 10 > クリティカル -rand:6/6,6/6 -============================ -input: -1NC>=5 -output: -NeverCloud : (1D6>=5) > 2[2] > 2 > 失敗 -rand:2/6 -============================ -input: -1NC>=5 -output: -NeverCloud : (1D6>=5) > 1[1] > 0 > ファンブル -rand:1/6 -============================ -input: -1NC>=5 -output: -NeverCloud : (1D6>=5) > 5[5] > 5 > 成功 -rand:5/6 -============================ -input: -1NC>=5 -output: -NeverCloud : (1D6>=5) > 6[6] > 6 > 成功 -rand:6/6 -============================ -input: -1NC+2>=5 -output: -NeverCloud : (1D6+2>=5) > 2[2]+2 > 4 > 失敗 -rand:2/6 -============================ -input: -1NC+2>=5 -output: -NeverCloud : (1D6+2>=5) > 1[1]+2 > 0 > ファンブル -rand:1/6 -============================ -input: -1NC+2>=5 -output: -NeverCloud : (1D6+2>=5) > 5[5]+2 > 7 > 成功 -rand:5/6 -============================ -input: -1NC+2>=5 -output: -NeverCloud : (1D6+2>=5) > 6[6]+2 > 8 > 成功 -rand:6/6 -============================ -input: -S2D6>=5 -output: -NeverCloud : (2D6>=5) > 7[3,4] > 7 > 成功###secret dice### -rand:3/6,4/6 -============================ -input: -S2NC+2+1>=5 -output: -NeverCloud : (2D6+2+1>=5) > 12[6,6]+2+1 > 15 > クリティカル###secret dice### -rand:6/6,6/6 -============================ -input: -2nc+0>=5 -output: -NeverCloud : (2D6>=5) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2Nc+0>=5 -output: -NeverCloud : (2D6>=5) > 4[2,2] > 4 > 失敗 -rand:2/6,2/6 -============================ -input: -2nC+0>=5 -output: -NeverCloud : (2D6>=5) > 5[3,2] > 5 > 成功 -rand:3/6,2/6 \ No newline at end of file diff --git a/src/src_bcdice/test/data/NightWizard.txt b/src/src_bcdice/test/data/NightWizard.txt deleted file mode 100644 index 8602eeb6b..000000000 --- a/src/src_bcdice/test/data/NightWizard.txt +++ /dev/null @@ -1,612 +0,0 @@ -input: -12NW-5@7#2 -output: -NightWizard : (12NW-5@7#2) > 7-10[1,1] > ファンブル > -3 -rand:1/6,1/6 -============================ -input: -12NW-5@7#2 -output: -NightWizard : (12NW-5@7#2) > 7+6[5,1] > 13 -rand:5/6,1/6 -============================ -input: -12NW-5@7#2 -output: -NightWizard : (12NW-5@7#2) > 7+8[2,6] > 15 -rand:2/6,6/6 -============================ -input: -12NW-5@7#2 -output: -NightWizard : (12NW-5@7#2) > 7+10[5,2]+10[5,5] > クリティカル > 27 -rand:5/6,2/6,5/6,5/6 -============================ -input: -12NW-5@7#2 -output: -NightWizard : (12NW-5@7#2) > 7+3[1,2] > 10 -rand:1/6,2/6 -============================ -input: -12NW-5@7#2 -output: -NightWizard : (12NW-5@7#2) > 7+5[3,2] > 12 -rand:3/6,2/6 -============================ -input: -12NW-5@7#2 -output: -NightWizard : (12NW-5@7#2) > 7+10[4,6] > 17 -rand:4/6,6/6 -============================ -input: -12NW-5@7#2 -output: -NightWizard : (12NW-5@7#2) > 7+8[6,2] > 15 -rand:6/6,2/6 -============================ -input: -1NW -output: -NightWizard : (1NW@10#5) > 1+8[2,6] > 9 -rand:2/6,6/6 -============================ -input: -1NW -output: -NightWizard : (1NW@10#5) > 1+10[5,5]+3[1,2] > クリティカル > 14 -rand:5/6,5/6,1/6,2/6 -============================ -input: -1NW -output: -NightWizard : (1NW@10#5) > 1+9[4,5] > 10 -rand:4/6,5/6 -============================ -input: -1NW -output: -NightWizard : (1NW@10#5) > 1+8[6,2] > 9 -rand:6/6,2/6 -============================ -input: -1NW -output: -NightWizard : (1NW@10#5) > 1+10[5,5]+3[2,1] > クリティカル > 14 -rand:5/6,5/6,2/6,1/6 -============================ -input: -1NW -output: -NightWizard : (1NW@10#5) > 1+8[3,5] > 9 -rand:3/6,5/6 -============================ -input: -1NW -output: -NightWizard : (1NW@10#5) > 1+3[2,1] > 4 -rand:2/6,1/6 -============================ -input: -1NW -output: -NightWizard : (1NW@10#5) > 1+11[5,6] > 12 -rand:5/6,6/6 -============================ -input: -1NW -output: -NightWizard : (1NW@10#5) > 1+7[6,1] > 8 -rand:6/6,1/6 -============================ -input: -50nw+5@7,10#2,5 -output: -NightWizard : (50NW+5@7,10#2,5) > 55-10[3,2] > ファンブル > 45 -rand:3/6,2/6 -============================ -input: -50nw+5@7,10#2,5 -output: -NightWizard : (50NW+5@7,10#2,5) > 55+11[5,6] > 66 -rand:5/6,6/6 -============================ -input: -50nw+5@7,10#2,5 -output: -NightWizard : (50NW+5@7,10#2,5) > 55+6[1,5] > 61 -rand:1/6,5/6 -============================ -input: -50nw+5@7,10#2,5 -output: -NightWizard : (50NW+5@7,10#2,5) > 55+9[5,4] > 64 -rand:5/6,4/6 -============================ -input: -50nw+5@7,10#2,5 -output: -NightWizard : (50NW+5@7,10#2,5) > 55+9[6,3] > 64 -rand:6/6,3/6 -============================ -input: -50nw+5@7,10#2,5 -output: -NightWizard : (50NW+5@7,10#2,5) > 55-10[1,1] > ファンブル > 45 -rand:1/6,1/6 -============================ -input: -50nw+5@7,10#2,5 -output: -NightWizard : (50NW+5@7,10#2,5) > 55-10[1,4] > ファンブル > 45 -rand:1/6,4/6 -============================ -input: -50nw+5@7,10#2,5 -output: -NightWizard : (50NW+5@7,10#2,5) > 55+12[6,6] > 67 -rand:6/6,6/6 -============================ -input: -50nw+5@7,10#2,5 -output: -NightWizard : (50NW+5@7,10#2,5) > 55+6[4,2] > 61 -rand:4/6,2/6 -============================ -input: -50nw+5@7,10#2,5 -output: -NightWizard : (50NW+5@7,10#2,5) > 55+8[5,3] > 63 -rand:5/6,3/6 -============================ -input: -10NW+1@7#10 -output: -NightWizard : (10NW+1@7#10) > 11+8[6,2] > 19 -rand:6/6,2/6 -============================ -input: -10NW+1@7#10 -output: -NightWizard : (10NW+1@7#10) > 11+3[1,2] > 14 -rand:1/6,2/6 -============================ -input: -10NW+1@7#10 -output: -NightWizard : (10NW+1@7#10) > 11+9[5,4] > 20 -rand:5/6,4/6 -============================ -input: -10NW+1@7#10 -output: -NightWizard : (10NW+1@7#10) > 11+10[1,6]+6[4,2] > クリティカル > 27 -rand:1/6,6/6,4/6,2/6 -============================ -input: -10NW+1@7#10 -output: -NightWizard : (10NW+1@7#10) > 11+5[4,1] > 16 -rand:4/6,1/6 -============================ -input: -10NW+1@7#10 -output: -NightWizard : (10NW+1@7#10) > 11+6[5,1] > 17 -rand:5/6,1/6 -============================ -input: -10NW+1@7#10 -output: -NightWizard : (10NW+1@7#10) > 11+12[6,6] > 23 -rand:6/6,6/6 -============================ -input: -10NW+1@7#10 -output: -NightWizard : (10NW+1@7#10) > 11+10[3,4]+6[3,3] > クリティカル > 27 -rand:3/6,4/6,3/6,3/6 -============================ -input: -10NW+1@7#10 -output: -NightWizard : (10NW+1@7#10) > 11+11[6,5] > 22 -rand:6/6,5/6 -============================ -input: -10NW+1@7#10 -output: -NightWizard : (10NW+1@7#10) > 11+4[2,2] > 15 -rand:2/6,2/6 -============================ -input: --3NW+1@7#10 -output: -NightWizard : (-3NW+1@7#10) > -2+4[2,2] > 2 -rand:2/6,2/6 -============================ -input: -50nw+5@10,11,12#5 -output: -NightWizard : (50NW+5@10,11,12#5) > 55+8[5,3] > 63 -rand:5/6,3/6 -============================ -input: -50nw+5@10,11,12#5 -output: -NightWizard : (50NW+5@10,11,12#5) > 55+10[5,5]+10[5,6]+10[6,6]+6[3,3] > クリティカル > 91 -rand:5/6,5/6,5/6,6/6,6/6,6/6,3/6,3/6 -============================ -input: --3NW+1@7#10+10+12 -output: -NightWizard : (-3NW+1@7#10+22) > 20+4[2,2] > 24 -rand:2/6,2/6 -============================ -input: --3NW+1+10+12 -output: -NightWizard : (-3NW+23@10#5) > 20+4[2,2] > 24 -rand:2/6,2/6 -============================ -input: -10NW@7#10+10 -output: -NightWizard : (10NW@7#10+10) > 20+11[6,5] > 31 -rand:6/6,5/6 -============================ -input: -10NW+10+12@7#10-10 -output: -NightWizard : (10NW+22@7#10-10) > 22+11[6,5] > 33 -rand:6/6,5/6 -============================ -input: -NW -output: -NightWizard : (NW@10#5) > 0+11[6,5] > 11 -rand:6/6,5/6 -============================ -input: -0nw+5@8#6+3 -output: -NightWizard : (NW+5@8#6+3) > 5-10[5,1] > ファンブル > -5 -rand:5/6,1/6 -============================ -input: -0nw+5@8#6+3 -output: -NightWizard : (NW+5@8#6+3) > 8+7[5,2] > 15 -rand:5/6,2/6 -============================ -input: -0nw+5@8#6+3 -output: -NightWizard : (NW+5@8#6+3) > 8+10[5,3]+7[5,2] > クリティカル > 25 -rand:5/6,3/6,5/6,2/6 -============================ -input: -50nw+5@7,10#2,5>=66 -output: -NightWizard : (50NW+5@7,10#2,5>=66) > 55-10[3,2] > ファンブル > 45 > 失敗 -rand:3/6,2/6 -============================ -input: -50nw+5@7,10#2,5>=66 -output: -NightWizard : (50NW+5@7,10#2,5>=66) > 55+11[5,6] > 66 > 成功 -rand:5/6,6/6 -============================ -input: -12NW-5@7#2$3 プラーナ補正 通常時 -output: -NightWizard : (12NW-5@7#2$3) > 7+6[5,1]+6[1,2,3] > 19 -rand:5/6,1/6,1/6,2/6,3/6 -============================ -input: -12NW-5@7#2$3 プラーナ補正 ファンブル時 -output: -NightWizard : (12NW-5@7#2$3) > 7-10[1,1] > ファンブル > -3 -rand:1/6,1/6 -============================ -input: -12NW-5@7#2$3 プラーナ補正 クリティカル時 -output: -NightWizard : (12NW-5@7#2$3) > 7+10[5,2]+10[5,5]+6[1,2,3] > クリティカル > 33 -rand:5/6,2/6,5/6,5/6,1/6,2/6,3/6 -============================ -input: -2R6M[12-5]C[7]F[2] -output: -NightWizard : (2R6M[7,0]C[7]F[2]) > 7-10[1,1] > ファンブル > -3 -rand:1/6,1/6 -============================ -input: -2R6M[12-5]C[7]F[2] -output: -NightWizard : (2R6M[7,0]C[7]F[2]) > 7+6[5,1] > 13 -rand:5/6,1/6 -============================ -input: -2R6M[12-5]C[7]F[2] -output: -NightWizard : (2R6M[7,0]C[7]F[2]) > 7+8[2,6] > 15 -rand:2/6,6/6 -============================ -input: -2R6M[12-5]C[7]F[2] -output: -NightWizard : (2R6M[7,0]C[7]F[2]) > 7+10[5,2]+10[5,5] > クリティカル > 27 -rand:5/6,2/6,5/6,5/6 -============================ -input: -2R6M[12-5]C[7]F[2] -output: -NightWizard : (2R6M[7,0]C[7]F[2]) > 7+3[1,2] > 10 -rand:1/6,2/6 -============================ -input: -2R6M[12-5]C[7]F[2] -output: -NightWizard : (2R6M[7,0]C[7]F[2]) > 7+5[3,2] > 12 -rand:3/6,2/6 -============================ -input: -2R6M[12-5]C[7]F[2] -output: -NightWizard : (2R6M[7,0]C[7]F[2]) > 7+10[4,6] > 17 -rand:4/6,6/6 -============================ -input: -2R6M[12-5]C[7]F[2] -output: -NightWizard : (2R6M[7,0]C[7]F[2]) > 7+8[6,2] > 15 -rand:6/6,2/6 -============================ -input: -2R6M[1] -output: -NightWizard : (2R6M[1,0]C[10]F[5]) > 1+8[2,6] > 9 -rand:2/6,6/6 -============================ -input: -2R6M[1] -output: -NightWizard : (2R6M[1,0]C[10]F[5]) > 1+10[5,5]+3[1,2] > クリティカル > 14 -rand:5/6,5/6,1/6,2/6 -============================ -input: -2R6M[1] -output: -NightWizard : (2R6M[1,0]C[10]F[5]) > 1+9[4,5] > 10 -rand:4/6,5/6 -============================ -input: -2R6M[1] -output: -NightWizard : (2R6M[1,0]C[10]F[5]) > 1+8[6,2] > 9 -rand:6/6,2/6 -============================ -input: -2R6M[1] -output: -NightWizard : (2R6M[1,0]C[10]F[5]) > 1+10[5,5]+3[2,1] > クリティカル > 14 -rand:5/6,5/6,2/6,1/6 -============================ -input: -2R6M[1] -output: -NightWizard : (2R6M[1,0]C[10]F[5]) > 1+8[3,5] > 9 -rand:3/6,5/6 -============================ -input: -2R6M[1] -output: -NightWizard : (2R6M[1,0]C[10]F[5]) > 1+3[2,1] > 4 -rand:2/6,1/6 -============================ -input: -2R6M[1] -output: -NightWizard : (2R6M[1,0]C[10]F[5]) > 1+11[5,6] > 12 -rand:5/6,6/6 -============================ -input: -2R6M[1] -output: -NightWizard : (2R6M[1,0]C[10]F[5]) > 1+7[6,1] > 8 -rand:6/6,1/6 -============================ -input: -2R6M[50+5]C[7,10]F[2,5] -output: -NightWizard : (2R6M[55,0]C[7,10]F[2,5]) > 55-10[3,2] > ファンブル > 45 -rand:3/6,2/6 -============================ -input: -2R6M[50+5]C[7,10]F[2,5] -output: -NightWizard : (2R6M[55,0]C[7,10]F[2,5]) > 55+11[5,6] > 66 -rand:5/6,6/6 -============================ -input: -2R6M[50+5]C[7,10]F[2,5] -output: -NightWizard : (2R6M[55,0]C[7,10]F[2,5]) > 55+6[1,5] > 61 -rand:1/6,5/6 -============================ -input: -2R6M[50+5]C[7,10]F[2,5] -output: -NightWizard : (2R6M[55,0]C[7,10]F[2,5]) > 55+9[5,4] > 64 -rand:5/6,4/6 -============================ -input: -2R6M[50+5]C[7,10]F[2,5] -output: -NightWizard : (2R6M[55,0]C[7,10]F[2,5]) > 55+9[6,3] > 64 -rand:6/6,3/6 -============================ -input: -2R6M[50+5]C[7,10]F[2,5] -output: -NightWizard : (2R6M[55,0]C[7,10]F[2,5]) > 55-10[1,1] > ファンブル > 45 -rand:1/6,1/6 -============================ -input: -2R6M[50+5]C[7,10]F[2,5] -output: -NightWizard : (2R6M[55,0]C[7,10]F[2,5]) > 55-10[1,4] > ファンブル > 45 -rand:1/6,4/6 -============================ -input: -2R6M[50+5]C[7,10]F[2,5] -output: -NightWizard : (2R6M[55,0]C[7,10]F[2,5]) > 55+12[6,6] > 67 -rand:6/6,6/6 -============================ -input: -2R6M[50+5]C[7,10]F[2,5] -output: -NightWizard : (2R6M[55,0]C[7,10]F[2,5]) > 55+6[4,2] > 61 -rand:4/6,2/6 -============================ -input: -2R6M[50+5]C[7,10]F[2,5] -output: -NightWizard : (2R6M[55,0]C[7,10]F[2,5]) > 55+8[5,3] > 63 -rand:5/6,3/6 -============================ -input: -2R6M[10+1]C[7]F[10] -output: -NightWizard : (2R6M[11,0]C[7]F[10]) > 11+8[6,2] > 19 -rand:6/6,2/6 -============================ -input: -2R6M[10+1]C[7]F[10] -output: -NightWizard : (2R6M[11,0]C[7]F[10]) > 11+3[1,2] > 14 -rand:1/6,2/6 -============================ -input: -2R6M[10+1]C[7]F[10] -output: -NightWizard : (2R6M[11,0]C[7]F[10]) > 11+9[5,4] > 20 -rand:5/6,4/6 -============================ -input: -2R6M[10+1]C[7]F[10] -output: -NightWizard : (2R6M[11,0]C[7]F[10]) > 11+10[1,6]+6[4,2] > クリティカル > 27 -rand:1/6,6/6,4/6,2/6 -============================ -input: -2R6M[10+1]C[7]F[10] -output: -NightWizard : (2R6M[11,0]C[7]F[10]) > 11+5[4,1] > 16 -rand:4/6,1/6 -============================ -input: -2R6M[10+1]C[7]F[10] -output: -NightWizard : (2R6M[11,0]C[7]F[10]) > 11+6[5,1] > 17 -rand:5/6,1/6 -============================ -input: -2R6M[10+1]C[7]F[10] -output: -NightWizard : (2R6M[11,0]C[7]F[10]) > 11+12[6,6] > 23 -rand:6/6,6/6 -============================ -input: -2R6M[10+1]C[7]F[10] -output: -NightWizard : (2R6M[11,0]C[7]F[10]) > 11+10[3,4]+6[3,3] > クリティカル > 27 -rand:3/6,4/6,3/6,3/6 -============================ -input: -2R6M[10+1]C[7]F[10] -output: -NightWizard : (2R6M[11,0]C[7]F[10]) > 11+11[6,5] > 22 -rand:6/6,5/6 -============================ -input: -2R6M[10+1]C[7]F[10] -output: -NightWizard : (2R6M[11,0]C[7]F[10]) > 11+4[2,2] > 15 -rand:2/6,2/6 -============================ -input: -2R6M[-3+1]C[7]F[10] -output: -NightWizard : (2R6M[-2,0]C[7]F[10]) > -2+4[2,2] > 2 -rand:2/6,2/6 -============================ -input: -2R6M[50+5]C[10,11,12]F[5] -output: -NightWizard : (2R6M[55,0]C[10,11,12]F[5]) > 55+8[5,3] > 63 -rand:5/6,3/6 -============================ -input: -2R6M[50+5]C[10,11,12]F[5] -output: -NightWizard : (2R6M[55,0]C[10,11,12]F[5]) > 55+10[5,5]+10[5,6]+10[6,6]+6[3,3] > クリティカル > 91 -rand:5/6,5/6,5/6,6/6,6/6,6/6,3/6,3/6 -============================ -input: -2R6M[-3+1,+10+12]C[7]F[10] -output: -NightWizard : (2R6M[-2,22]C[7]F[10]) > 20+4[2,2] > 24 -rand:2/6,2/6 -============================ -input: -2R6M[-3+1+10+12] -output: -NightWizard : (2R6M[20,0]C[10]F[5]) > 20+4[2,2] > 24 -rand:2/6,2/6 -============================ -input: -2R6M[10,+10]C[7]F[10] -output: -NightWizard : (2R6M[10,10]C[7]F[10]) > 20+11[6,5] > 31 -rand:6/6,5/6 -============================ -input: -2R6M[10+10+12,-10]C[7]F[10] -output: -NightWizard : (2R6M[32,-10]C[7]F[10]) > 22+11[6,5] > 33 -rand:6/6,5/6 -============================ -input: -2R6M[0+5,+3]C[8]F[6] -output: -NightWizard : (2R6M[5,3]C[8]F[6]) > 5-10[5,1] > ファンブル > -5 -rand:5/6,1/6 -============================ -input: -2R6M[0+5,+3]C[8]F[6] -output: -NightWizard : (2R6M[5,3]C[8]F[6]) > 8+7[5,2] > 15 -rand:5/6,2/6 -============================ -input: -2R6M[0+5,+3]C[8]F[6] -output: -NightWizard : (2R6M[5,3]C[8]F[6]) > 8+10[5,3]+7[5,2] > クリティカル > 25 -rand:5/6,3/6,5/6,2/6 -============================ -input: -2R6M[50+5]C[7,10]F[2,5]>=66 -output: -NightWizard : (2R6M[55,0]C[7,10]F[2,5]>=66) > 55-10[3,2] > ファンブル > 45 > 失敗 -rand:3/6,2/6 -============================ -input: -2R6M[50+5]C[7,10]F[2,5]>=66 -output: -NightWizard : (2R6M[55,0]C[7,10]F[2,5]>=66) > 55+11[5,6] > 66 > 成功 -rand:5/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/NightWizard3rd.txt b/src/src_bcdice/test/data/NightWizard3rd.txt deleted file mode 100644 index 2fb6b4ae6..000000000 --- a/src/src_bcdice/test/data/NightWizard3rd.txt +++ /dev/null @@ -1,17 +0,0 @@ -input: -0nw+5@8#6+3 -output: -NightWizard3rd : (NW+5@8#6+3) > 8-10[5,1] > ファンブル > -2 -rand:5/6,1/6 -============================ -input: -0nw+5@8#6+3 -output: -NightWizard3rd : (NW+5@8#6+3) > 8+7[5,2] > 15 -rand:5/6,2/6 -============================ -input: -0nw+5@8#6+3 -output: -NightWizard3rd : (NW+5@8#6+3) > 8+10[5,3]+7[5,2] > クリティカル > 25 -rand:5/6,3/6,5/6,2/6 diff --git a/src/src_bcdice/test/data/NightmareHunterDeep.txt b/src/src_bcdice/test/data/NightmareHunterDeep.txt deleted file mode 100644 index a61a2f029..000000000 --- a/src/src_bcdice/test/data/NightmareHunterDeep.txt +++ /dev/null @@ -1,305 +0,0 @@ -input: -1D6>=3 -output: -NightmareHunterDeep : (1D6>=3) > 3 > 成功 -rand:3/6 -============================ -input: -1D6>=3 -output: -NightmareHunterDeep : (1D6>=3) > 1 > 失敗 > 宿命獲得 -rand:1/6 -============================ -input: -1D6>=3 -output: -NightmareHunterDeep : (1D6>=3) > 3 > 成功 -rand:3/6 -============================ -input: -1D6>=3 -output: -NightmareHunterDeep : (1D6>=3) > 6+1*4 > 10 > 成功 -rand:6/6 -============================ -input: -1D6>=3 -output: -NightmareHunterDeep : (1D6>=3) > 2 > 失敗 -rand:2/6 -============================ -input: -1D6>=3 -output: -NightmareHunterDeep : (1D6>=3) > 6+1*4 > 10 > 成功 -rand:6/6 -============================ -input: -1D6>=3 -output: -NightmareHunterDeep : (1D6>=3) > 3 > 成功 -rand:3/6 -============================ -input: -1D6>=3 -output: -NightmareHunterDeep : (1D6>=3) > 2 > 失敗 -rand:2/6 -============================ -input: -1D6>=3 -output: -NightmareHunterDeep : (1D6>=3) > 2 > 失敗 -rand:2/6 -============================ -input: -1D6>=3 -output: -NightmareHunterDeep : (1D6>=3) > 4 > 成功 -rand:4/6 -============================ -input: -10D6>=35 -output: -NightmareHunterDeep : (10D6>=35) > 31[1,1,1,2,3,3,3,5,6,6] > 31+2*4 > 39 > 成功 > 宿命獲得 -rand:5/6,1/6,1/6,3/6,6/6,1/6,2/6,3/6,6/6,3/6 -============================ -input: -10D6>=35 -output: -NightmareHunterDeep : (10D6>=35) > 37[1,2,2,3,3,4,5,5,6,6] > 37+2*4 > 45 > 成功 > 宿命獲得 -rand:6/6,2/6,2/6,5/6,3/6,6/6,4/6,3/6,1/6,5/6 -============================ -input: -10D6>=35 -output: -NightmareHunterDeep : (10D6>=35) > 27[1,1,1,2,2,3,3,3,5,6] > 27+1*4 > 31 > 失敗 > 宿命獲得 -rand:1/6,1/6,6/6,5/6,3/6,3/6,2/6,1/6,3/6,2/6 -============================ -input: -10D6>=35 -output: -NightmareHunterDeep : (10D6>=35) > 41[1,2,3,3,4,5,5,6,6,6] > 41+3*4 > 53 > 成功 > 宿命獲得 -rand:1/6,6/6,6/6,3/6,3/6,2/6,6/6,5/6,5/6,4/6 -============================ -input: -10D6>=35 -output: -NightmareHunterDeep : (10D6>=35) > 30[1,1,2,2,2,3,3,5,5,6] > 30+1*4 > 34 > 失敗 > 宿命獲得 -rand:3/6,5/6,2/6,2/6,6/6,1/6,2/6,3/6,1/6,5/6 -============================ -input: -10D6>=35 -output: -NightmareHunterDeep : (10D6>=35) > 38[2,2,2,3,3,4,5,5,6,6] > 38+2*4 > 46 > 成功 -rand:6/6,3/6,2/6,5/6,2/6,3/6,5/6,4/6,6/6,2/6 -============================ -input: -10D6>=35 -output: -NightmareHunterDeep : (10D6>=35) > 33[1,1,2,2,3,4,4,4,6,6] > 33+2*4 > 41 > 成功 > 宿命獲得 -rand:1/6,2/6,2/6,3/6,6/6,4/6,4/6,6/6,4/6,1/6 -============================ -input: -10D6>=35 -output: -NightmareHunterDeep : (10D6>=35) > 45[1,3,3,4,5,5,6,6,6,6] > 45+4*4 > 61 > 成功 > 宿命獲得 -rand:6/6,6/6,1/6,3/6,6/6,3/6,5/6,6/6,5/6,4/6 -============================ -input: -10D6>=35 -output: -NightmareHunterDeep : (10D6>=35) > 38[1,2,3,4,4,4,5,5,5,5] > 38 > 成功 > 宿命獲得 -rand:5/6,4/6,5/6,5/6,3/6,4/6,1/6,2/6,4/6,5/6 -============================ -input: -10D6>=35 -output: -NightmareHunterDeep : (10D6>=35) > 37[1,2,2,2,3,5,5,5,6,6] > 37+2*4 > 45 > 成功 > 宿命獲得 -rand:5/6,3/6,5/6,2/6,5/6,2/6,6/6,1/6,2/6,6/6 -============================ -input: -3D6>=10 -output: -NightmareHunterDeep : (3D6>=10) > 13[3,4,6] > 13+1*4 > 17 > 成功 -rand:3/6,6/6,4/6 -============================ -input: -3D6>=10 -output: -NightmareHunterDeep : (3D6>=10) > 5[1,1,3] > 5 > 失敗 > 宿命獲得 -rand:1/6,1/6,3/6 -============================ -input: -3D6>=10 -output: -NightmareHunterDeep : (3D6>=10) > 14[4,4,6] > 14+1*4 > 18 > 成功 -rand:6/6,4/6,4/6 -============================ -input: -3D6>=10 -output: -NightmareHunterDeep : (3D6>=10) > 7[2,2,3] > 7 > 失敗 -rand:2/6,3/6,2/6 -============================ -input: -3D6>=10 -output: -NightmareHunterDeep : (3D6>=10) > 11[3,4,4] > 11 > 成功 -rand:4/6,4/6,3/6 -============================ -input: -3D6>=10 -output: -NightmareHunterDeep : (3D6>=10) > 11[2,4,5] > 11 > 成功 -rand:2/6,4/6,5/6 -============================ -input: -3D6>=10 -output: -NightmareHunterDeep : (3D6>=10) > 13[3,4,6] > 13+1*4 > 17 > 成功 -rand:3/6,4/6,6/6 -============================ -input: -3D6>=10 -output: -NightmareHunterDeep : (3D6>=10) > 10[1,3,6] > 10+1*4 > 14 > 成功 > 宿命獲得 -rand:1/6,3/6,6/6 -============================ -input: -3D6>=10 -output: -NightmareHunterDeep : (3D6>=10) > 11[3,3,5] > 11 > 成功 -rand:5/6,3/6,3/6 -============================ -input: -3D6>=10 -output: -NightmareHunterDeep : (3D6>=10) > 10[1,4,5] > 10 > 成功 > 宿命獲得 -rand:4/6,1/6,5/6 -============================ -input: -4D6>=Lv3 -output: -NightmareHunterDeep : (4D6>=14) > 20[4,5,5,6] > 20+1*4 > 24 > 成功 -rand:5/6,4/6,6/6,5/6 -============================ -input: -4D6>=Lv3 -output: -NightmareHunterDeep : (4D6>=14) > 14[1,3,4,6] > 14+1*4 > 18 > 成功 > 宿命獲得 -rand:4/6,3/6,1/6,6/6 -============================ -input: -4D6>=Lv3 -output: -NightmareHunterDeep : (4D6>=14) > 11[2,2,3,4] > 11 > 失敗 -rand:2/6,3/6,2/6,4/6 -============================ -input: -4D6>=Lv3 -output: -NightmareHunterDeep : (4D6>=14) > 10[1,2,3,4] > 10 > 失敗 > 宿命獲得 -rand:1/6,2/6,3/6,4/6 -============================ -input: -4D6>=Lv3 -output: -NightmareHunterDeep : (4D6>=14) > 16[1,4,5,6] > 16+1*4 > 20 > 成功 > 宿命獲得 -rand:6/6,1/6,4/6,5/6 -============================ -input: -4D6>=Lv3 -output: -NightmareHunterDeep : (4D6>=14) > 14[2,3,4,5] > 14 > 成功 -rand:2/6,5/6,4/6,3/6 -============================ -input: -4D6>=Lv3 -output: -NightmareHunterDeep : (4D6>=14) > 13[1,2,4,6] > 13+1*4 > 17 > 成功 > 宿命獲得 -rand:6/6,1/6,4/6,2/6 -============================ -input: -4D6>=Lv3 -output: -NightmareHunterDeep : (4D6>=14) > 9[1,1,3,4] > 9 > 失敗 > 宿命獲得 -rand:1/6,4/6,3/6,1/6 -============================ -input: -4D6>=Lv3 -output: -NightmareHunterDeep : (4D6>=14) > 11[1,2,2,6] > 11+1*4 > 15 > 成功 > 宿命獲得 -rand:6/6,2/6,1/6,2/6 -============================ -input: -4D6>=Lv3 -output: -NightmareHunterDeep : (4D6>=14) > 15[2,3,5,5] > 15 > 成功 -rand:3/6,5/6,5/6,2/6 -============================ -input: -4D6>=NL2 -output: -NightmareHunterDeep : (4D6>=15) > 14[2,3,3,6] > 14+1*4 > 18 > 成功 -rand:3/6,6/6,3/6,2/6 -============================ -input: -4D6>=NL2 -output: -NightmareHunterDeep : (4D6>=15) > 12[1,2,4,5] > 12 > 失敗 > 宿命獲得 -rand:2/6,5/6,1/6,4/6 -============================ -input: -4D6>=NL2 -output: -NightmareHunterDeep : (4D6>=15) > 14[1,3,4,6] > 14+1*4 > 18 > 成功 > 宿命獲得 -rand:1/6,6/6,3/6,4/6 -============================ -input: -4D6>=NL2 -output: -NightmareHunterDeep : (4D6>=15) > 10[1,1,4,4] > 10 > 失敗 > 宿命獲得 -rand:1/6,4/6,1/6,4/6 -============================ -input: -4D6>=NL2 -output: -NightmareHunterDeep : (4D6>=15) > 10[1,2,3,4] > 10 > 失敗 > 宿命獲得 -rand:3/6,2/6,1/6,4/6 -============================ -input: -4D6>=NL2 -output: -NightmareHunterDeep : (4D6>=15) > 14[2,3,4,5] > 14 > 失敗 -rand:3/6,4/6,5/6,2/6 -============================ -input: -4D6>=NL2 -output: -NightmareHunterDeep : (4D6>=15) > 17[3,4,5,5] > 17 > 成功 -rand:4/6,5/6,5/6,3/6 -============================ -input: -4D6>=NL2 -output: -NightmareHunterDeep : (4D6>=15) > 11[1,1,4,5] > 11 > 失敗 > 宿命獲得 -rand:1/6,1/6,5/6,4/6 -============================ -input: -4D6>=NL2 -output: -NightmareHunterDeep : (4D6>=15) > 17[3,4,4,6] > 17+1*4 > 21 > 成功 -rand:3/6,6/6,4/6,4/6 -============================ -input: -4D6>=NL2 -output: -NightmareHunterDeep : (4D6>=15) > 17[2,5,5,5] > 17 > 成功 -rand:2/6,5/6,5/6,5/6 -============================ -input: -3D6>=? 目標値?でバグらない -output: -NightmareHunterDeep : (3D6>=?) > 9[3,3,3] > 9 > Lv2/NL0成功 -rand:3/6,3/6,3/6 diff --git a/src/src_bcdice/test/data/NinjaSlayer.txt b/src/src_bcdice/test/data/NinjaSlayer.txt deleted file mode 100644 index 1492409ee..000000000 --- a/src/src_bcdice/test/data/NinjaSlayer.txt +++ /dev/null @@ -1,305 +0,0 @@ -input: -NJ4[N] -output: -NinjaSlayer : (4B6>=4) > 2,3,6,4 > 成功数2 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4[N] -output: -NinjaSlayer : (4B6>=4) > 2,3,2,1 > 成功数0 -rand:2/6,3/6,2/6,1/6 -============================ -input: -NJ4[n] -output: -NinjaSlayer : (4B6>=4) > 2,3,6,4 > 成功数2 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4[4] -output: -NinjaSlayer : (4B6>=4) > 2,3,6,4 > 成功数2 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4 -output: -NinjaSlayer : (4B6>=4) > 2,3,6,4 > 成功数2 -rand:2/6,3/6,6/6,4/6 -============================ -input: -SNJ4 -output: -NinjaSlayer : (4B6>=4) > 2,3,6,4 > 成功数2###secret dice### -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4@N -output: -NinjaSlayer : (4B6>=4) > 2,3,6,4 > 成功数2 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4@n -output: -NinjaSlayer : (4B6>=4) > 2,3,6,4 > 成功数2 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4@4 -output: -NinjaSlayer : (4B6>=4) > 2,3,6,4 > 成功数2 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4[H] -output: -NinjaSlayer : (4B6>=5) > 2,3,6,4 > 成功数1 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4[H] -output: -NinjaSlayer : (4B6>=5) > 2,3,3,4 > 成功数0 -rand:2/6,3/6,3/6,4/6 -============================ -input: -NJ4[UH] -output: -NinjaSlayer : (4B6>=6) > 2,3,6,4 > 成功数1 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4[UH] -output: -NinjaSlayer : (4B6>=6) > 2,3,5,4 > 成功数0 -rand:2/6,3/6,5/6,4/6 -============================ -input: -NJ4[K] -output: -NinjaSlayer : (4B6>=2) > 2,3,6,4 > 成功数4 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4[k] -output: -NinjaSlayer : (4B6>=2) > 2,3,6,4 > 成功数4 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4@K -output: -NinjaSlayer : (4B6>=2) > 2,3,6,4 > 成功数4 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4[2] -output: -NinjaSlayer : (4B6>=2) > 2,3,6,4 > 成功数4 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4@2 -output: -NinjaSlayer : (4B6>=2) > 2,3,6,4 > 成功数4 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4[E] -output: -NinjaSlayer : (4B6>=3) > 2,3,6,4 > 成功数3 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4[e] -output: -NinjaSlayer : (4B6>=3) > 2,3,6,4 > 成功数3 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4@E -output: -NinjaSlayer : (4B6>=3) > 2,3,6,4 > 成功数3 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4[3] -output: -NinjaSlayer : (4B6>=3) > 2,3,6,4 > 成功数3 -rand:2/6,3/6,6/6,4/6 -============================ -input: -NJ4@3 -output: -NinjaSlayer : (4B6>=3) > 2,3,6,4 > 成功数3 -rand:2/6,3/6,6/6,4/6 -============================ -input: -EV4[N]/2 -output: -NinjaSlayer : (4B6>=4) > 2,5,6,4 > 成功数3 > カウンターカラテ!! -rand:2/6,5/6,6/6,4/6 -============================ -input: -EV4[N]/2 -output: -NinjaSlayer : (4B6>=4) > 2,5,3,1 > 成功数1 -rand:2/6,5/6,3/6,1/6 -============================ -input: -EV4[n]/2 -output: -NinjaSlayer : (4B6>=4) > 2,5,6,4 > 成功数3 > カウンターカラテ!! -rand:2/6,5/6,6/6,4/6 -============================ -input: -EV4[4]/2 -output: -NinjaSlayer : (4B6>=4) > 2,5,6,4 > 成功数3 > カウンターカラテ!! -rand:2/6,5/6,6/6,4/6 -============================ -input: -EV4@N/2 -output: -NinjaSlayer : (4B6>=4) > 2,5,6,4 > 成功数3 > カウンターカラテ!! -rand:2/6,5/6,6/6,4/6 -============================ -input: -EV4[H]/2 -output: -NinjaSlayer : (4B6>=5) > 2,5,6,4 > 成功数2 -rand:2/6,5/6,6/6,4/6 -============================ -input: -EV4[UH]/2 -output: -NinjaSlayer : (4B6>=6) > 6,5,6,4 > 成功数2 -rand:6/6,5/6,6/6,4/6 -============================ -input: -EV4[K]/2 -output: -NinjaSlayer : (4B6>=2) > 2,5,6,4 > 成功数4 > カウンターカラテ!! -rand:2/6,5/6,6/6,4/6 -============================ -input: -EV4[N] -output: -NinjaSlayer : (4B6>=4) > 2,5,6,4 > 成功数3 -rand:2/6,5/6,6/6,4/6 -============================ -input: -EV4 -output: -NinjaSlayer : (4B6>=4) > 2,5,6,4 > 成功数3 -rand:2/6,5/6,6/6,4/6 -============================ -input: -AT4[N] -output: -NinjaSlayer : (4B6>=4) > 2,2,6,6 > 成功数2 > サツバツ!! -rand:2/6,2/6,6/6,6/6 -============================ -input: -AT4 -output: -NinjaSlayer : (4B6>=4) > 2,2,6,6 > 成功数2 > サツバツ!! -rand:2/6,2/6,6/6,6/6 -============================ -input: -AT4[n] -output: -NinjaSlayer : (4B6>=4) > 2,2,6,6 > 成功数2 > サツバツ!! -rand:2/6,2/6,6/6,6/6 -============================ -input: -AT4[4] -output: -NinjaSlayer : (4B6>=4) > 2,2,6,6 > 成功数2 > サツバツ!! -rand:2/6,2/6,6/6,6/6 -============================ -input: -AT4@N -output: -NinjaSlayer : (4B6>=4) > 2,2,6,6 > 成功数2 > サツバツ!! -rand:2/6,2/6,6/6,6/6 -============================ -input: -AT4[K] -output: -NinjaSlayer : (4B6>=2) > 2,1,3,2 > 成功数3 -rand:2/6,1/6,3/6,2/6 -============================ -input: -AT4[H] -output: -NinjaSlayer : (4B6>=5) > 2,2,6,6 > 成功数2 > サツバツ!! -rand:2/6,2/6,6/6,6/6 -============================ -input: -AT4[UH] -output: -NinjaSlayer : (4B6>=6) > 2,2,6,6 > 成功数2 > サツバツ!! -rand:2/6,2/6,6/6,6/6 -============================ -input: -EL4[N] -output: -NinjaSlayer : (4B6>=4) > 2,2,6,6 > 成功数2 + 2 > 4 -rand:2/6,2/6,6/6,6/6 -============================ -input: -EL4 -output: -NinjaSlayer : (4B6>=4) > 2,2,2,6 > 成功数1 + 1 > 2 -rand:2/6,2/6,2/6,6/6 -============================ -input: -EL4[n] -output: -NinjaSlayer : (4B6>=4) > 2,2,2,2 > 成功数0 -rand:2/6,2/6,2/6,2/6 -============================ -input: -EL4[4] -output: -NinjaSlayer : (4B6>=4) > 2,6,6,6 > 成功数3 + 3 > 6 -rand:2/6,6/6,6/6,6/6 -============================ -input: -EL4@N -output: -NinjaSlayer : (4B6>=4) > 6,6,6,6 > 成功数4 + 4 > 8 -rand:6/6,6/6,6/6,6/6 -============================ -input: -EL4[K] -output: -NinjaSlayer : (4B6>=2) > 2,1,3,2 > 成功数3 -rand:2/6,1/6,3/6,2/6 -============================ -input: -EL4[H] -output: -NinjaSlayer : (4B6>=5) > 2,2,6,6 > 成功数2 + 2 > 4 -rand:2/6,2/6,6/6,6/6 -============================ -input: -EL4[UH] -output: -NinjaSlayer : (4B6>=6) > 2,2,6,6 > 成功数2 + 2 > 4 -rand:2/6,2/6,6/6,6/6 -============================ -input: -SB -output: -NinjaSlayer : サツバツ表(1) > 「死ねーッ!」腹部に強烈な一撃! 敵はくの字に折れ曲がり、ワイヤーアクションめいて吹っ飛んだ!:本来のダメージ+1ダメージを与える。敵は後方の壁または障害物に向かって、何マスでもまっすぐ弾き飛ばされる(他のキャラのいるマスは通過する)。壁または障害物に接触した時点で、敵はさらに1ダメージを受ける。敵はこの激突ダメージに対して改めて『回避判定』を行っても良い。 -rand:1/6 -============================ -input: -SB -output: -NinjaSlayer : サツバツ表(6) > 「イイイヤアアアアーーーーッ!」ヤリめいたチョップが敵の胸を貫通! さらに心臓を掴み取り、握りつぶした! ナムアミダブツ!:敵は残り【体力】に関係なく即死する。残虐ボーナスにより【万札】がD6発生。この攻撃を【カルマ:善】のキャラに対して行ってしまった場合、【DKK】がD6上昇する。 -rand:6/6 diff --git a/src/src_bcdice/test/data/NjslyrBattle.txt b/src/src_bcdice/test/data/NjslyrBattle.txt deleted file mode 100644 index d116c6431..000000000 --- a/src/src_bcdice/test/data/NjslyrBattle.txt +++ /dev/null @@ -1,53 +0,0 @@ -input: -2D6<=5 -output: -NJSLYRBATTLE : (2D6<=5) > 5[2,3] > 5 > 成功 -rand:2/6,3/6 -============================ -input: -2D6<=5 -output: -NJSLYRBATTLE : (2D6<=5) > 6[2,4] > 6 > 失敗 -rand:2/6,4/6 -============================ -input: -2D6<=5 -output: -NJSLYRBATTLE : (2D6<=5) > 4[2,2] > 4 > 成功 重点 1 溜まる -rand:2/6,2/6 -============================ -input: -2D6<=5 -output: -NJSLYRBATTLE : (2D6<=5) > 3[1,2] > 3 > 成功 重点 1 溜まる -rand:1/6,2/6 -============================ -input: -2D6<=5 -output: -NJSLYRBATTLE : (2D6<=5) > 8[2,6] > 8 > 失敗 重点 1 溜まる -rand:2/6,6/6 -============================ -input: -2D6<=5 -output: -NJSLYRBATTLE : (2D6<=5) > 7[1,6] > 7 > 失敗 重点 2 溜まる -rand:1/6,6/6 -============================ -input: -2D6<=5 -output: -NJSLYRBATTLE : (2D6<=5) > 2[1,1] > 2 > 成功 重点 3 溜まる -rand:1/6,1/6 -============================ -input: -2D6<=5 -output: -NJSLYRBATTLE : (2D6<=5) > 12[6,6] > 12 > 失敗 重点 3 溜まる -rand:6/6,6/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -NJSLYRBATTLE : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/None.txt b/src/src_bcdice/test/data/None.txt deleted file mode 100644 index 31f571a0d..000000000 --- a/src/src_bcdice/test/data/None.txt +++ /dev/null @@ -1,1106 +0,0 @@ -input: -1D6 -output: -DiceBot : (1D6) > 5 -rand:5/6 -============================ -input: -2D6 -output: -DiceBot : (2D6) > 8[5,3] > 8 -rand:5/6,3/6 -============================ -input: -2D4 -output: -DiceBot : (2D4) > 3[1,2] > 3 -rand:1/4,2/4 -============================ -input: -2D66 -output: -DiceBot : (2D66) > 120[66,54] > 120 -rand:6/6,6/6,5/6,4/6 -============================ -input: -1D6+1 -output: -DiceBot : (1D6+1) > 4[4]+1 > 5 -rand:4/6 -============================ -input: -2D6+1 -output: -DiceBot : (2D6+1) > 8[2,6]+1 > 9 -rand:2/6,6/6 -============================ -input: -1+2D6 -output: -DiceBot : (1+2D6) > 1+7[4,3] > 8 -rand:4/6,3/6 -============================ -input: -2d6+1-1-2-3-4 -output: -DiceBot : (2D6+1-1-2-3-4) > 5[4,1]+1-1-2-3-4 > -4 -rand:4/6,1/6 -============================ -input: -2d10--3-4 -output: -DiceBot : (2D10+3-4) > 8[3,5]+3-4 > 7 -rand:3/10,5/10 -============================ -input: -2D6+4D10 -output: -DiceBot : (2D6+4D10) > 9[5,4]+21[1,9,7,4] > 30 -rand:5/6,4/6,1/10,9/10,7/10,4/10 -============================ -input: -2d6*3 -output: -DiceBot : (2D6*3) > 6[2,4]*3 > 18 -rand:2/6,4/6 -============================ -input: -2d10+3-4 -output: -DiceBot : (2D10+3-4) > 8[3,5]+3-4 > 7 -rand:3/10,5/10 -============================ -input: -2d10-4+3 -output: -DiceBot : (2D10-4+3) > 8[3,5]-4+3 > 7 -rand:3/10,5/10 -============================ -input: -2d10+3*4 -output: -DiceBot : (2D10+3*4) > 8[3,5]+3*4 > 20 -rand:3/10,5/10 -============================ -input: -2d6*3-1d6+1 -output: -DiceBot : (2D6*3-1D6+1) > 8[6,2]*3-3[3]+1 > 22 -rand:6/6,2/6,3/6 -============================ -input: -(2+3)d6-1+3d6+2 -output: -DiceBot : (5D6-1+3D6+2) > 17[2,3,1,5,6]-1+13[5,4,4]+2 > 31 -rand:2/6,3/6,1/6,5/6,6/6,5/6,4/6,4/6 -============================ -input: -(2*3-4)d6-1d4+1 -output: -DiceBot : (2D6-1D4+1) > 11[6,5]-2[2]+1 > 10 -rand:6/6,5/6,2/4 -============================ -input: -((2+3)*4/3)d6*2+5 -output: -DiceBot : (6D6*2+5) > 24[6,5,6,2,1,4]*2+5 > 53 -rand:6/6,5/6,6/6,2/6,1/6,4/6 -============================ -input: -1D6/2 -output: -DiceBot : (1D6/2) > 1[1]/2 > 0 -rand:1/6 -============================ -input: -3D6/2 -output: -DiceBot : (3D6/2) > 7[1,2,4]/2 > 3 -rand:1/6,2/6,4/6 -============================ -input: -3D6/2+1D6 -output: -DiceBot : (3D6/2+1D6) > 7[1,2,4]/2+5[5] > 8 -rand:1/6,2/6,4/6,5/6 -============================ -input: -3D6+1D6/2 -output: -DiceBot : (3D6+1D6/2) > 7[1,2,4]+5[5]/2 > 9 -rand:1/6,2/6,4/6,5/6 -============================ -input: -3D6+1D6/2U -output: -DiceBot : (3D6+1D6/2U) > 7[1,2,4]+5[5]/2U > 10 -rand:1/6,2/6,4/6,5/6 -============================ -input: -5D6/10 -output: -DiceBot : (5D6/10) > 29[6,6,6,6,5]/10 > 2 -rand:6/6,6/6,6/6,6/6,5/6 -============================ -input: -3D6/2U -output: -DiceBot : (3D6/2U) > 7[1,2,4]/2U > 4 -rand:1/6,2/6,4/6 -============================ -input: -5D6/10u -output: -DiceBot : (5D6/10U) > 21[6,6,6,2,1]/10U > 3 -rand:6/6,6/6,6/6,2/6,1/6 -============================ -input: -1D100/10R -output: -DiceBot : (1D100/10R) > 55[55]/10R > 6 -rand:55/100 -============================ -input: -1D100/10r -output: -DiceBot : (1D100/10R) > 54[54]/10R > 5 -rand:54/100 -============================ -input: -1d6/-3 -output: -DiceBot : (1D6/-3) > 4[4]/-3 > -2 -rand:4/6 -============================ -input: -1d6/-3u -output: -DiceBot : (1D6/-3U) > 4[4]/-3U > -1 -rand:4/6 -============================ -input: -1d6/-3r -output: -DiceBot : (1D6/-3R) > 4[4]/-3R > -1 -rand:4/6 -============================ -input: -1d6/2*3 -output: -DiceBot : (1D6/2*3) > 6[6]/2*3 > 9 -rand:6/6 -============================ -input: -1d6/-3r -output: -DiceBot : (1D6/-3R) > 5[5]/-3R > -2 -rand:5/6 -============================ -input: -[1...5]D6 -output: -DiceBot : (4D6) > 15[5,3,4,3] > 15 -rand:4/5,5/6,3/6,4/6,3/6 -============================ -input: -([2...4]+2)D10 -output: -DiceBot : (6D10) > 29[8,7,2,1,6,5] > 29 -rand:3/3,8/10,7/10,2/10,1/10,6/10,5/10 -============================ -input: -2d[1...5] -output: -DiceBot : (2D2) > 3[1,2] > 3 -rand:2/5,1/2,2/2 -============================ -input: -2d([2...4]+2) -output: -DiceBot : (2D5) > 7[4,3] > 7 -rand:2/3,4/5,3/5 -============================ -input: -([1...4]+1)d([2...4]+2)-1 -output: -DiceBot : (3D6-1) > 14[5,5,4]-1 > 13 -rand:2/4,3/3,5/6,5/6,4/6 -============================ -input: -1D6+[1D6] -output: -DiceBot : (1D6+2) > 3[3]+2 > 5 -rand:2/6,3/6 -============================ -input: -1d6+[1d6] -output: -DiceBot : (1D6+2) > 3[3]+2 > 5 -rand:2/6,3/6 -============================ -input: -1D6/0 -output: -DiceBot : (1D6/0) > 1[1]/0 > 1 -rand:1/6 -============================ -input: -1D6/3x -output: -rand: -============================ -input: -S2d6 -output: -DiceBot : (2D6) > 5[4,1] > 5###secret dice### -rand:4/6,1/6 -============================ -input: -S1+2D6 -output: -DiceBot : (1+2D6) > 1+5[4,1] > 6###secret dice### -rand:4/6,1/6 -============================ -input: -2D6=7 -output: -DiceBot : (2D6=7) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2D6=7 -output: -DiceBot : (2D6=7) > 6[3,3] > 6 > 失敗 -rand:3/6,3/6 -============================ -input: -2D6=7 -output: -DiceBot : (2D6=7) > 6[3,3] > 6 > 失敗 -rand:3/6,3/6 -============================ -input: -2D6<>7 -output: -DiceBot : (2D6<>7) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 -============================ -input: -2D6<>7 -output: -DiceBot : (2D6<>7) > 6[3,3] > 6 > 成功 -rand:3/6,3/6 -============================ -input: -2D6<>7 -output: -DiceBot : (2D6<>7) > 8[3,5] > 8 > 成功 -rand:3/6,5/6 -============================ -input: -2D6<7 -output: -DiceBot : (2D6<7) > 6[3,3] > 6 > 成功 -rand:3/6,3/6 -============================ -input: -2D6<7 -output: -DiceBot : (2D6<7) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 -============================ -input: -2D6>7 -output: -DiceBot : (2D6>7) > 8[3,5] > 8 > 成功 -rand:3/6,5/6 -============================ -input: -2D6>7 -output: -DiceBot : (2D6>7) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 -============================ -input: -2D6<=7 -output: -DiceBot : (2D6<=7) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2D6<=7 -output: -DiceBot : (2D6<=7) > 8[3,5] > 8 > 失敗 -rand:3/6,5/6 -============================ -input: -2D6>=7 -output: -DiceBot : (2D6>=7) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2D6>=7 -output: -DiceBot : (2D6>=7) > 6[3,3] > 6 > 失敗 -rand:3/6,3/6 -============================ -input: --2D6<-7 -output: -DiceBot : (-2D6<-7) > -8[3,5] > -8 > 成功 -rand:3/6,5/6 -============================ -input: --2D6<-7 -output: -DiceBot : (-2D6<-7) > -7[3,4] > -7 > 失敗 -rand:3/6,4/6 -============================ -input: --2D6>-7 -output: -DiceBot : (-2D6>-7) > -6[3,3] > -6 > 成功 -rand:3/6,3/6 -============================ -input: --2D6>-7 -output: -DiceBot : (-2D6>-7) > -7[3,4] > -7 > 失敗 -rand:3/6,4/6 -============================ -input: --2D6<=-7 -output: -DiceBot : (-2D6<=-7) > -7[3,4] > -7 > 成功 -rand:3/6,4/6 -============================ -input: --2D6<=-7 -output: -DiceBot : (-2D6<=-7) > -6[3,3] > -6 > 失敗 -rand:3/6,3/6 -============================ -input: --2D6>=-7 -output: -DiceBot : (-2D6>=-7) > -7[3,4] > -7 > 成功 -rand:3/6,4/6 -============================ -input: --2D6>=-7 -output: -DiceBot : (-2D6>=-7) > -8[3,5] > -8 > 失敗 -rand:3/6,5/6 -============================ -input: -1d6>=1+2 -output: -DiceBot : (1D6>=3) > 3 > 成功 -rand:3/6 -============================ -input: -1d6-(1-2)>=3+2 -output: -DiceBot : (1D6+1>=5) > 3[3]+1 > 4 > 失敗 -rand:3/6 -============================ -input: -2b6 -output: -DiceBot : (2B6) > 3,4 -rand:3/6,4/6 -============================ -input: -2b6 -output: -DiceBot : (2B6) > 6,1 -rand:6/6,1/6 -============================ -input: -[1...3]b6 -output: -DiceBot : (1B6) > 5 -rand:1/3,5/6 -============================ -input: -[1...3]b6 -output: -DiceBot : (3B6) > 2,4,6 -rand:3/3,2/6,4/6,6/6 -============================ -input: -2b[4...6] -output: -DiceBot : (2B4) > 3,4 -rand:1/3,3/4,4/4 -============================ -input: -2b[4...6] -output: -DiceBot : (2B5) > 5,1 -rand:2/3,5/5,1/5 -============================ -input: -[1...3]b[4...6] -output: -DiceBot : (3B6) > 6,4,3 -rand:3/3,3/3,6/6,4/6,3/6 -============================ -input: -(1*2)b6 -output: -DiceBot : (2B6) > 3,4 -rand:3/6,4/6 -============================ -input: -([1...3]+1)b6 -output: -DiceBot : (3B6) > 2,4,3 -rand:2/3,2/6,4/6,3/6 -============================ -input: -2b(2+4) -output: -DiceBot : (2B6) > 3,4 -rand:3/6,4/6 -============================ -input: -2b([3...5]+1) -output: -DiceBot : (2B5) > 1,3 -rand:2/3,1/5,3/5 -============================ -input: -[1...5]b(2*3) -output: -DiceBot : (5B6) > 3,5,1,5,6 -rand:5/5,3/6,5/6,1/6,5/6,6/6 -============================ -input: -(1+1)b[1...5] -output: -DiceBot : (2B4) > 3,4 -rand:4/5,3/4,4/4 -============================ -input: -(1*2)b(2+4) -output: -DiceBot : (2B6) > 4,3 -rand:4/6,3/6 -============================ -input: -2b6+4b10 -output: -DiceBot : (2B6+4B10) > 1,3,1,10,3,1 -rand:1/6,3/6,1/10,10/10,3/10,1/10 -============================ -input: -2b6+4b10 -output: -DiceBot : (2B6+4B10) > 3,2,5,7,1,3 -rand:3/6,2/6,5/10,7/10,1/10,3/10 -============================ -input: -2b6+3b8+5b12 -output: -DiceBot : (2B6+3B8+5B12) > 3,4,7,1,5,11,3,4,10,9 -rand:3/6,4/6,7/8,1/8,5/8,11/12,3/12,4/12,10/12,9/12 -============================ -input: -2b6=3 -output: -DiceBot : (2B6=3) > 3,4 > 成功数1 -rand:3/6,4/6 -============================ -input: -2b6=3 -output: -DiceBot : (2B6=3) > 2,1 > 成功数0 -rand:2/6,1/6 -============================ -input: -2b6<>3 -output: -DiceBot : (2B6<>3) > 3,4 > 成功数1 -rand:3/6,4/6 -============================ -input: -2b6<>3 -output: -DiceBot : (2B6<>3) > 2,1 > 成功数2 -rand:2/6,1/6 -============================ -input: -2b6>3 -output: -DiceBot : (2B6>3) > 3,4 > 成功数1 -rand:3/6,4/6 -============================ -input: -2b6>3 -output: -DiceBot : (2B6>3) > 2,1 > 成功数0 -rand:2/6,1/6 -============================ -input: -2b6<3 -output: -DiceBot : (2B6<3) > 3,4 > 成功数0 -rand:3/6,4/6 -============================ -input: -2b6<3 -output: -DiceBot : (2B6<3) > 2,1 > 成功数2 -rand:2/6,1/6 -============================ -input: -2b6>=3 -output: -DiceBot : (2B6>=3) > 3,4 > 成功数2 -rand:3/6,4/6 -============================ -input: -2b6>=3 -output: -DiceBot : (2B6>=3) > 2,1 > 成功数0 -rand:2/6,1/6 -============================ -input: -2b6<=3 -output: -DiceBot : (2B6<=3) > 3,4 > 成功数1 -rand:3/6,4/6 -============================ -input: -2b6<=3 -output: -DiceBot : (2B6<=3) > 2,1 > 成功数2 -rand:2/6,1/6 -============================ -input: -2b6+4b10>3 -output: -DiceBot : (2B6+4B10>3) > 3,4,9,7,1,5 > 成功数4 -rand:3/6,4/6,9/10,7/10,1/10,5/10 -============================ -input: -2b6+4b10>3 -output: -DiceBot : (2B6+4B10>3) > 3,2,5,7,1,3 > 成功数2 -rand:3/6,2/6,5/10,7/10,1/10,3/10 -============================ -input: -2b6+3b8+5b12<5 -output: -DiceBot : (2B6+3B8+5B12<5) > 5,2,7,3,4,11,9,8,12,6 > 成功数3 -rand:5/6,2/6,7/8,3/8,4/8,11/12,9/12,8/12,12/12,6/12 -============================ -input: -2b6+3b8+5b12<5 -output: -DiceBot : (2B6+3B8+5B12<5) > 3,4,7,1,5,11,3,4,10,9 > 成功数5 -rand:3/6,4/6,7/8,1/8,5/8,11/12,3/12,4/12,10/12,9/12 -============================ -input: -[1...3]b6>3 -output: -DiceBot : (1B6>3) > 5 > 成功数1 -rand:1/3,5/6 -============================ -input: -[1...3]b6>3 -output: -DiceBot : (3B6>3) > 2,4,6 > 成功数2 -rand:3/3,2/6,4/6,6/6 -============================ -input: -2b[4...6]>3 -output: -DiceBot : (2B4>3) > 3,4 > 成功数1 -rand:1/3,3/4,4/4 -============================ -input: -2b[4...6]>3 -output: -DiceBot : (2B5>3) > 5,1 > 成功数1 -rand:2/3,5/5,1/5 -============================ -input: -[1...3]b[4...6]>3 -output: -DiceBot : (3B6>3) > 6,4,3 > 成功数2 -rand:3/3,3/3,6/6,4/6,3/6 -============================ -input: -(1*2)b6>3 -output: -DiceBot : (2B6>3) > 3,4 > 成功数1 -rand:3/6,4/6 -============================ -input: -([1...3]+1)b6>3 -output: -DiceBot : (3B6>3) > 2,4,3 > 成功数1 -rand:2/3,2/6,4/6,3/6 -============================ -input: -2b(2+4)>3 -output: -DiceBot : (2B6>3) > 3,4 > 成功数1 -rand:3/6,4/6 -============================ -input: -2b([3...5]+1)>3 -output: -DiceBot : (2B5>3) > 1,3 > 成功数0 -rand:2/3,1/5,3/5 -============================ -input: -(1*2)b(2+4)>3 -output: -DiceBot : (2B6>3) > 4,3 > 成功数1 -rand:4/6,3/6 -============================ -input: -2R6>=3 -output: -DiceBot : (2R6[3]>=3) > 3,1 + 2 > 成功数1 -rand:3/6,1/6,2/6 -============================ -input: -2r6>=3 -output: -DiceBot : (2R6[3]>=3) > 3,1 + 2 > 成功数1 -rand:3/6,1/6,2/6 -============================ -input: -S2r6>=3 -output: -DiceBot : (2R6[3]>=3) > 3,1 + 2 > 成功数1###secret dice### -rand:3/6,1/6,2/6 -============================ -input: -2R6>=3 -output: -DiceBot : (2R6[3]>=3) > 6,1 + 3 + 1 > 成功数2 -rand:6/6,1/6,3/6,1/6 -============================ -input: -2R6>3 -output: -DiceBot : (2R6[3]>3) > 6,1 + 3 > 成功数1 -rand:6/6,1/6,3/6 -============================ -input: -12R6>=6 -output: -DiceBot : (12R6[6]>=6) > 4,1,5,4,3,2,5,1,6,3,2,5 + 5 > 成功数1 -rand:4/6,1/6,5/6,4/6,3/6,2/6,5/6,1/6,6/6,3/6,2/6,5/6,5/6 -============================ -input: -12R6>=6 -output: -DiceBot : (12R6[6]>=6) > 6,1,2,2,2,1,5,5,1,5,2,6 + 4,5 > 成功数2 -rand:6/6,1/6,2/6,2/6,2/6,1/6,5/6,5/6,1/6,5/6,2/6,6/6,4/6,5/6 -============================ -input: -12R6>=6 -output: -DiceBot : (12R6[6]>=6) > 2,4,4,5,4,1,2,6,6,6,1,4 + 6,4,6 + 3,4 > 成功数5 -rand:2/6,4/6,4/6,5/6,4/6,1/6,2/6,6/6,6/6,6/6,1/6,4/6,6/6,4/6,6/6,3/6,4/6 -============================ -input: -12R6>=6 -output: -DiceBot : (12R6[6]>=6) > 2,5,4,5,3,1,3,4,2,2,4,5 > 成功数0 -rand:2/6,5/6,4/6,5/6,3/6,1/6,3/6,4/6,2/6,2/6,4/6,5/6 -============================ -input: -12R6>=6 -output: -DiceBot : (12R6[6]>=6) > 5,3,5,3,1,1,6,3,2,2,5,5 + 6 + 4 > 成功数2 -rand:5/6,3/6,5/6,3/6,1/6,1/6,6/6,3/6,2/6,2/6,5/6,5/6,6/6,4/6 -============================ -input: -12R6>=6 -output: -DiceBot : (12R6[6]>=6) > 4,4,2,1,5,6,5,1,1,4,4,6 + 3,6 + 2 > 成功数3 -rand:4/6,4/6,2/6,1/6,5/6,6/6,5/6,1/6,1/6,4/6,4/6,6/6,3/6,6/6,2/6 -============================ -input: -12R6>=6 -output: -DiceBot : (12R6[6]>=6) > 2,1,2,5,2,3,1,3,4,4,4,5 > 成功数0 -rand:2/6,1/6,2/6,5/6,2/6,3/6,1/6,3/6,4/6,4/6,4/6,5/6 -============================ -input: -12R6>=6 -output: -DiceBot : (12R6[6]>=6) > 1,2,3,4,1,1,2,3,6,4,1,4 + 2 > 成功数1 -rand:1/6,2/6,3/6,4/6,1/6,1/6,2/6,3/6,6/6,4/6,1/6,4/6,2/6 -============================ -input: -12R6>=6 -output: -DiceBot : (12R6[6]>=6) > 4,3,6,2,2,1,3,5,1,3,2,1 + 6 + 2 > 成功数2 -rand:4/6,3/6,6/6,2/6,2/6,1/6,3/6,5/6,1/6,3/6,2/6,1/6,6/6,2/6 -============================ -input: -12R6>=6 -output: -DiceBot : (12R6[6]>=6) > 6,6,3,1,4,2,4,5,4,3,6,6 + 4,4,3,4 > 成功数4 -rand:6/6,6/6,3/6,1/6,4/6,2/6,4/6,5/6,4/6,3/6,6/6,6/6,4/6,4/6,3/6,4/6 -============================ -input: -2R4+2R6>=4 -output: -DiceBot : (2R4+2R6[4]>=4) > 4,3 + 3,5 + 1 + 2 > 成功数2 -rand:4/4,3/4,3/6,5/6,1/4,2/6 -============================ -input: -2R4+2R6[>4]>=4 -output: -DiceBot : (2R4+2R6[>4]>=4) > 4,3 + 3,5 + 2 > 成功数2 -rand:4/4,3/4,3/6,5/6,2/6 -============================ -input: -2R4+2R6>=4@>4 -output: -DiceBot : (2R4+2R6[>4]>=4) > 4,3 + 3,5 + 2 > 成功数2 -rand:4/4,3/4,3/6,5/6,2/6 -============================ -input: -2R4+2R6[<=2]>=4 -output: -DiceBot : (2R4+2R6[<=2]>=4) > 4,2 + 3,5 + 2 + 4 > 成功数3 -rand:4/4,2/4,3/6,5/6,2/4,4/4 -============================ -input: -2R4+2R6>=4@<=2 -output: -DiceBot : (2R4+2R6[<=2]>=4) > 4,2 + 3,5 + 2 + 4 > 成功数3 -rand:4/4,2/4,3/6,5/6,2/4,4/4 -============================ -input: -2R4+2R6[<>4]>=4 -output: -DiceBot : (2R4+2R6[<>4]>=4) > 4,2 + 3,5 + 4 + 4,4 > 成功数5 -rand:4/4,2/4,3/6,5/6,4/4,4/6,4/6 -============================ -input: -134 数値だけには反応しない -output: -rand: -============================ -input: -1+2*3/4 数式だけには反応しない -output: -rand: -============================ -input: -C(1+2) -output: -DiceBot : 計算結果 > 3 -rand: -============================ -input: -C(2-1) -output: -DiceBot : 計算結果 > 1 -rand: -============================ -input: -C(1-2) -output: -DiceBot : 計算結果 > -1 -rand: -============================ -input: -C(2*3) -output: -DiceBot : 計算結果 > 6 -rand: -============================ -input: -C(6/2) -output: -DiceBot : 計算結果 > 3 -rand: -============================ -input: -C(2/3) -output: -DiceBot : 計算結果 > 0 -rand: -============================ -input: -C(12/3-2*6) -output: -DiceBot : 計算結果 > -8 -rand: -============================ -input: -C(99/21*11-23+57/3*7+13-17) -output: -DiceBot : 計算結果 > 150 -rand: -============================ -input: -C(20+10) -output: -DiceBot : 計算結果 > 30 -rand: -============================ -input: -C(10*5) -output: -DiceBot : 計算結果 > 50 -rand: -============================ -input: -c(30-10/2) -output: -DiceBot : 計算結果 > 25 -rand: -============================ -input: -c((10+10)*9) -output: -DiceBot : 計算結果 > 180 -rand: -============================ -input: -C(10+5) mokekeke -output: -DiceBot : 計算結果 > 15 -rand: -============================ -input: -C(10/2+(5*2)-(3+1)) -output: -DiceBot : 計算結果 > 11 -rand: -============================ -input: -C(5-(1-2)) -output: -DiceBot : 計算結果 > 6 -rand: -============================ -input: -3B6 -output: -DiceBot : (3B6) > 5,2,4 -rand:5/6,2/6,4/6 -============================ -input: -3B6>=4 -output: -DiceBot : (3B6>=4) > 5,2,4 > 成功数2 -rand:5/6,2/6,4/6 -============================ -input: -S3B6>=4 -output: -DiceBot : (3B6>=4) > 5,2,4 > 成功数2###secret dice### -rand:5/6,2/6,4/6 -============================ -input: -choice[abc,def] -output: -DiceBot : (CHOICE[ABC,DEF]) > ABC -rand:1/2 -============================ -input: -Schoice[abc2,def3] -output: -DiceBot : (SCHOICE[ABC2,DEF3]) > DEF3###secret dice### -rand:2/2 -============================ -input: -C(10/2) -output: -DiceBot : 計算結果 > 5 -rand: -============================ -input: -C(-1-1) -output: -DiceBot : 計算結果 > -2 -rand: -============================ -input: -C(-1--1) -output: -DiceBot : 計算結果 > 0 -rand: -============================ -input: -C(-1---1) -output: -DiceBot : 計算結果 > -2 -rand: -============================ -input: -C(-1----1) -output: -DiceBot : 計算結果 > 0 -rand: -============================ -input: -C(-1) -output: -DiceBot : 計算結果 > -1 -rand: -============================ -input: -C((-1)*(-1)) -output: -DiceBot : 計算結果 > 1 -rand: -============================ -input: -C(-1*-1) -output: -DiceBot : 計算結果 > 1 -rand: -============================ -input: -C(5/-1) -output: -DiceBot : 計算結果 > -5 -rand: -============================ -input: -C(10/2) -output: -DiceBot : 計算結果 > 5 -rand: -============================ -input: -C(1+(128/2)/2) -output: -DiceBot : 計算結果 > 33 -rand: -============================ -input: -C(-1+-1) -output: -DiceBot : 計算結果 > -2 -rand: -============================ -input: -C(-1+-1*2-32/8) -output: -DiceBot : 計算結果 > -7 -rand: -============================ -input: -C(-20/-10) -output: -DiceBot : 計算結果 > 2 -rand: -============================ -input: -C(-20/5) -output: -DiceBot : 計算結果 > -4 -rand: -============================ -input: -C(20/-4) -output: -DiceBot : 計算結果 > -5 -rand: -============================ -input: -C(1+2-3*4/5) -output: -DiceBot : 計算結果 > 1 -rand: -============================ -input: -C(1/0) 0で割る -output: -DiceBot : 計算結果 > 0 -rand: -============================ -input: -C(1+(2-3*4/(5/6))-7) 遠回しに0で割る -output: -DiceBot : 計算結果 > 0 -rand: -============================ -input: -2R6 -output: -DiceBot : 2R6 > 条件が間違っています。2R6>=5 あるいは 2R6[5] のように振り足し目標値を指定してください。 -rand: -============================ -input: -2R6<=7 無限に振り足ししてしまう -output: -DiceBot : 2R6<=7 > 条件が間違っています。2R6>=5 あるいは 2R6[5] のように振り足し目標値を指定してください。 -rand: -============================ -input: -2R6[3] -output: -DiceBot : (2R6[>=3]) > 3,2 + 1 > 成功数0 -rand:3/6,2/6,1/6 -============================ -input: -S2R6[3] -output: -DiceBot : (2R6[>=3]) > 3,2 + 1 > 成功数0###secret dice### -rand:3/6,2/6,1/6 -============================ -input: -5D10KH3 大きな出目から3個取った後の和 -output: -DiceBot : (5D10KH3) > 21[2,3,5,8,8] > 21 -rand:8/10,3/10,2/10,5/10,8/10 -============================ -input: -5D10KL3 小さな出目から3個取った後の和 -output: -DiceBot : (5D10KL3) > 10[2,3,5,8,8] > 10 -rand:8/10,3/10,2/10,5/10,8/10 -============================ -input: -5D10DH3 大きな出目から3個除いた後の和 -output: -DiceBot : (5D10DH3) > 5[2,3,5,8,8] > 5 -rand:8/10,3/10,2/10,5/10,8/10 -============================ -input: -5D10DL3 小さな出目から3個除いた後の和 -output: -DiceBot : (5D10DL3) > 16[2,3,5,8,8] > 16 -rand:8/10,3/10,2/10,5/10,8/10 -============================ -input: -5D10KH0 取る数が0の場合でも動く -output: -DiceBot : (5D10KH0) > 0[2,3,5,8,8] > 0 -rand:8/10,3/10,2/10,5/10,8/10 -============================ -input: -5D10KH7 取る数が多すぎても動く -output: -DiceBot : (5D10KH7) > 26[2,3,5,8,8] > 26 -rand:8/10,3/10,2/10,5/10,8/10 -============================ -input: -2D20KH1+1 キープ機能修正値付き -output: -DiceBot : (2D20KH1+1) > 20[1,20]+1 > 21 -rand:1/20,20/20 -============================ -input: -2D20DH1+1 ドロップ機能修正値付き -output: -DiceBot : (2D20DH1+1) > 1[1,20]+1 > 2 -rand:1/20,20/20 diff --git a/src/src_bcdice/test/data/Nuekagami.txt b/src/src_bcdice/test/data/Nuekagami.txt deleted file mode 100644 index 2a58b32c3..000000000 --- a/src/src_bcdice/test/data/Nuekagami.txt +++ /dev/null @@ -1,60 +0,0 @@ -input: -LR -output: -Nuekagami : 喪失取戻表(1) > 鬼化。妄執かくして鬼と結実す。欠けたるところすでになし。あやかし、己の欠けたるを足せり。すなわちその身、人ならず。 -rand:1/20 -============================ -input: -LR -output: -Nuekagami : 喪失取戻表(20) > 望月。欠けたる月が満ちるが如く。欠けたるは突然に戻れり。いかなる誠、いかなる印か、知るものはあらず。 -rand:20/20 -============================ -input: -BL -output: -Nuekagami : 血脈の喪失表(20) > 己の体。今は他人の体を借りている。 -rand:20/20 -============================ -input: -LL -output: -Nuekagami : 生様の喪失表(20) > 自由。脅され縛られ、誰かの命令を聞くしかできない。 -rand:20/20 -============================ -input: -SL -output: -Nuekagami : 魂魄の喪失表(20) > 己の意志。あなたは誰かの人形。道具に過ぎない。 -rand:20/20 -============================ -input: -FL -output: -Nuekagami : 因縁表(20) > 主君。心の主君。身命を賭して守り仕える。 -rand:20/20 -============================ -input: -HG -output: -Nuekagami : 地獄門通過描写表(20) > 心中にて、かそけき希望の糸見へり。慎重にたぐりて登らむとす。 -rand:20/20 -============================ -input: -RG -output: -Nuekagami : 羅生門通過描写表(20) > 神仏の似姿、幻視す。されば、いかな身にも信心のいくばくか起これり。 -rand:20/20 -============================ -input: -VG -output: -Nuekagami : 朱雀門通過描写表(20) > 頭上より何者かの楽の音、饗けり。その身、祝はるる心地せり。 -rand:20/20 -============================ -input: -OG -output: -Nuekagami : 応天門通過描写表(20) > 都の暗雲、晴れたる日も稀にあり。なんぞ魂魄晴るる日なしや。 -rand:20/20 -============================ diff --git a/src/src_bcdice/test/data/OneWayHeroics.txt b/src/src_bcdice/test/data/OneWayHeroics.txt deleted file mode 100644 index dbc29b080..000000000 --- a/src/src_bcdice/test/data/OneWayHeroics.txt +++ /dev/null @@ -1,501 +0,0 @@ -input: -JD2+1,8 能力値2、修正+1、目標値8 -output: -OneWayHeroics : JD2+1,8 > 2D6[3,1]+2+1 > 7 > 失敗 -rand:3/6,1/6 -============================ -input: -JD2+,8 能力値2、修正+1、目標値8 -output: -OneWayHeroics : JD2+,8 > 2D6[3,2]+2+1 > 8 > 成功 -rand:3/6,2/6 -============================ -input: -JD3,10 能力値3、修正なし、目標値10 -output: -OneWayHeroics : JD3,10 > 2D6[1,5]+3 > 9 > 失敗 -rand:1/6,5/6 -============================ -input: -JD10+,21 能力値21、修正+、目標値21 -output: -OneWayHeroics : JD10+,21 > 2D6[5,5]+10+1 > 21 > 成功 -rand:5/6,5/6 -============================ -input: -JD10+11,31 能力値21、修正+、目標値21 -output: -OneWayHeroics : JD10+11,31 > 2D6[5,5]+10+11 > 31 > 成功 -rand:5/6,5/6 -============================ -input: -JD3,99 -output: -OneWayHeroics : JD3,99 > 2D6[6,6]+3 > 15 > スペシャル -rand:6/6,6/6 -============================ -input: -JD9+1,5 -output: -OneWayHeroics : JD9+1,5 > 2D6[1,1]+9+1 > 12 > ファンブル -rand:1/6,1/6 -============================ -input: -3JD3+,11 -output: -OneWayHeroics : 3JD3+,11 > 3D6[3,2,4→4,3]+3+1 > 11 > 成功 -rand:3/6,2/6,4/6 -============================ -input: -3JD3+,11 -output: -OneWayHeroics : 3JD3+,11 > 3D6[1,1,6→6,1]+3+1 > 11 > 成功 -rand:1/6,1/6,6/6 -============================ -input: -3JD3+,4 -output: -OneWayHeroics : 3JD3+,4 > 3D6[1,1,1→1,1]+3+1 > 6 > ファンブル -rand:1/6,1/6,1/6 -============================ -input: -3JD3+,4 -output: -OneWayHeroics : 3JD3+,4 > 3D6[6,3,6→6,6]+3+1 > 16 > スペシャル -rand:6/6,3/6,6/6 -============================ -input: -3JD4+ ダイス3個から2個選択、能力値4、修正なし、目標値なし -output: -OneWayHeroics : 3JD4+ > 3D6[1,2,3→3,2]+4+1 > 10 -rand:1/6,2/6,3/6 -============================ -input: -3JD4+ ダイス3個から2個選択、能力値4、修正なし、目標値なし -output: -OneWayHeroics : 3JD4+ > 3D6[1,1,1→1,1]+4+1 > 7 > ファンブル -rand:1/6,1/6,1/6 -============================ -input: -JD0 -output: -OneWayHeroics : JD0 > 2D6[6,1]+0 > 7 -rand:6/6,1/6 -============================ -input: -1JD0 -output: - -rand: -============================ -input: -4JD0 -output: -OneWayHeroics : 4JD0 > 4D6[6,1,3,1→6,3]+0 > 9 -rand:6/6,1/6,3/6,1/6 -============================ -input: -FT -output: -OneWayHeroics : ファンブル表(1) > 装備以外のアイテムのうちプレイヤー指定の1つを失う -rand:1/6 -============================ -input: -FT -output: -OneWayHeroics : ファンブル表(3) > 1D6に100を掛け、それだけの【所持金】を失う > 1D6[1]×100 > 【所持金】 100 を失う -rand:3/6,1/6 -============================ -input: -FT -output: -OneWayHeroics : ファンブル表(4) > 1D6に100を掛け、それだけの【所持金】を拾う > 1D6[6]×100 > 【所持金】 600 を拾う -rand:4/6,6/6 -============================ -input: -FT -output: -OneWayHeroics : ファンブル表(6) > 【経験値】4を獲得する -rand:6/6 -============================ -input: -DC -output: -OneWayHeroics : 魔王追撃表(1) > 装備以外のアイテムのうちGM指定の1つを失う -rand:1/6 -============================ -input: -DC -output: -OneWayHeroics : 魔王追撃表(3) > 2D6に100を掛け、それだけの【所持金】を失う > 2D6[4,3]×100 > 【所持金】 700 を失う -rand:3/6,4/6,3/6 -============================ -input: -DC -output: -OneWayHeroics : 魔王追撃表(4) > 【LIFE】が1D6減少する > 1D6[4] > 【LIFE】が 4 減少する -rand:4/6,4/6 -============================ -input: -DC -output: -OneWayHeroics : 魔王追撃表(5) > 【ST】が1D6減少する > 1D6[4] > 【ST】が 4 減少する -rand:5/6,4/6 -============================ -input: -DC -output: -OneWayHeroics : 魔王追撃表(6) > 【LIFE】が2D6減少する > 2D6[4,3] > 【LIFE】が 7 減少する -rand:6/6,4/6,3/6 -============================ -input: -PR -output: -OneWayHeroics : 進行ルート表(1) > 少し荒れた地形が続く。【日数】から【筋力】を引いただけ【ST】が減少する(最低0)。 -rand:1/6 -============================ -input: -PR -output: -OneWayHeroics : 進行ルート表(6) > 広い川を船で渡る。【日数】に2を足して【魅力】を引いただけ【ST】が減少する(最低0)。「水泳」 -rand:6/6 -============================ -input: -TT -output: -OneWayHeroics : 会話テーマ表(1) > 身体の悩みごとについて話す。【筋力】で判定。 -rand:1/6 -============================ -input: -TT -output: -OneWayHeroics : 会話テーマ表(6) > 恋の悩みごとを話す。【魅力】で判定。 -rand:6/6 -============================ -input: -EC -output: -OneWayHeroics : 逃走判定表(1) > 崖を登れば逃げられそうだ。【筋力】を使用する。 -rand:1/6 -============================ -input: -EC -output: -OneWayHeroics : 逃走判定表(6) > もう人徳しか頼れない。【魅力】を使用する。 -rand:6/6 -============================ -input: -D66 -output: -OneWayHeroics : (D66) > 16 -rand:1/6,6/6 -============================ -input: -D66 -output: -OneWayHeroics : (D66) > 16 -rand:6/6,1/6 -============================ -input: -RET3 -output: -OneWayHeroics : ランダムイベント表(1) > さらに1D6を振る。現在PCがいるエリアの【日数】以下なら「施設表(FCLT)」へ移動。【日数】を超えていれば「ダンジョン表(DNGN3)」(153ページ)へ移動。 > - 1D6[3] > 日数[3]以下 > - FCLT > 施設表(2) > 聖なる神殿(152ページ)。 -rand:1/6,3/6,1/6,1/6 -============================ -input: -RET3 -output: -OneWayHeroics : ランダムイベント表(1) > さらに1D6を振る。現在PCがいるエリアの【日数】以下なら「施設表(FCLT)」へ移動。【日数】を超えていれば「ダンジョン表(DNGN3)」(153ページ)へ移動。 > - 1D6[4] > 日数[3]を超えている > - DNGN3 > ダンジョン表(1) > 犬小屋(155ページ)。 -rand:1/6,4/6,1/6 -============================ -input: -RET3 -output: -OneWayHeroics : ランダムイベント表(2) > さらに1D6を振る。現在PCがいるエリアの【日数】以下なら「世界の旅表」(157ページ)へ移動。【日数】を超えていれば「野外遭遇表(OUTENC)」(155ページ)へ移動。 > - 1D6[3] > 日数[3]以下 > 「世界の旅表」(157ページ)へ。 -rand:2/6,3/6 -============================ -input: -RET3 -output: -OneWayHeroics : ランダムイベント表(2) > さらに1D6を振る。現在PCがいるエリアの【日数】以下なら「世界の旅表」(157ページ)へ移動。【日数】を超えていれば「野外遭遇表(OUTENC)」(155ページ)へ移動。 > - 1D6[4] > 日数[3]を超えている > - OUTENC > 野外遭遇表(1) > エリアの地形ごとの野外モンスター表へ移動。モンスターのうち1体にランダムな特徴がつく。モンスター特徴表(156ページ)を使用する。 > - MONFT > モンスター特徴表(11) > 【エッチな】 -rand:2/6,4/6,1/6,1/6,1/6 -============================ -input: -RET1 -output: -OneWayHeroics : ランダムイベント表(3) > 「施設表」へ移動。 > - FCLT > 施設表(2) > 聖なる神殿(152ページ)。 -rand:3/6,1/6,1/6 -============================ -input: -RET2 -output: -OneWayHeroics : ランダムイベント表(5) > 「野外遭遇表」(155ページ)へ移動。 > - OUTENC > 野外遭遇表(1) > エリアの地形ごとの野外モンスター表へ移動。モンスターのうち1体にランダムな特徴がつく。モンスター特徴表(156ページ)を使用する。 > - MONFT > モンスター特徴表(11) > 【エッチな】 -rand:5/6,1/6,1/6,1/6 -============================ -input: -RET3 -output: -OneWayHeroics : ランダムイベント表(5) > 「野外遭遇表」(155ページ)へ移動。 > - OUTENC > 野外遭遇表(1) > エリアの地形ごとの野外モンスター表へ移動。モンスターのうち1体にランダムな特徴がつく。モンスター特徴表(156ページ)を使用する。 > - MONFT > モンスター特徴表(66) > 【最強の】 -rand:5/6,1/6,6/6,6/6 -============================ -input: -RET3 -output: -OneWayHeroics : ランダムイベント表(5) > 「野外遭遇表」(155ページ)へ移動。 > - OUTENC > 野外遭遇表(6) > 希少動物表(156ページ)へ移動。 > - RANI > 希少動物表(4) > 地形によって異なる希少動物が1体出現する。雪原なら【雪ウサギ】、山岳なら【山岳ゴート】、遺跡なら【遺跡白馬】、草原なら【草原カワウソ】、砂漠と荒野は【砂漠キツネ】。それ以外は【緑の森団員】となる。戦闘を挑んでもいいし、見送ってもいい。 -rand:5/6,6/6,6/6 -============================ -input: -RET3 -output: -OneWayHeroics : ランダムイベント表(6) > 「ダンジョン表」(152ページ)へ移動。 > - DNGN3 > ダンジョン表(6) > 「ダンジョン遭遇表」(153ページ)へ移動。ここは大型ダンジョンなので、モンスターが出現した場合、数が2体増加する。さらにイベントの経験値が2増加する。 -rand:6/6,6/6 -============================ -input: -RET4 -output: -OneWayHeroics : ランダムイベント表(6) > 「ダンジョン表」(152ページ)へ移動。 > - DNGN4 > ダンジョン表(7) > 牢獄遭遇表へ移動(154ページ)。牢獄つきダンジョン。 -rand:6/6,6/6 -============================ -input: -RET -output: -rand: -============================ -input: -DNGN4 -output: -OneWayHeroics : ダンジョン表(7) > 牢獄遭遇表へ移動(154ページ)。牢獄つきダンジョン。 -rand:6/6 -============================ -input: -DNGN -output: -rand: -============================ -input: -RNPC -output: -OneWayHeroics : ランダムNPC特徴表(2) > 【物持ちの】 -rand:1/6,1/6 -============================ -input: -RNPC -output: -OneWayHeroics : ランダムNPC特徴表(12) > 【すばやい】 -rand:6/6,6/6 -============================ -input: -SCT -output: -OneWayHeroics : 偵察表(1) > 山に突き当たる。「登山」判定:【筋力】 ジャッジ:山を登る描写。 -rand:1/6 -============================ -input: -SCT -output: -OneWayHeroics : 偵察表(6) > 任意のNPCに会って情報を聞く。判定:【魅力】 ジャッジ:相手を立てる会話。 -rand:6/6 -============================ -input: -DROP -output: -OneWayHeroics : ドロップアイテム表(1) > 武器ドロップ表へ移動 > - DROPWP > 武器ドロップ表(11) > 【さびた小剣】 -rand:1/6,1/6,1/6 -============================ -input: -DROP -output: -OneWayHeroics : ドロップアイテム表(3) > 防具ドロップ表へ移動 > - DROPAR > 防具ドロップ表(16) > 【騎士のコート】 -rand:3/6,6/6,1/6 -============================ -input: -DROP -output: -OneWayHeroics : ドロップアイテム表(4) > 食品ドロップ表へ移動 > - DROPFD > 食品ドロップ表(26) > 【スタミナのアンプル】 -rand:4/6,6/6,2/6 -============================ -input: -DROP -output: -OneWayHeroics : ドロップアイテム表(5) > 巻物ドロップ表へ移動 > - DROPSC > 巻物ドロップ表(34) > 【応急修理の巻物】 -rand:5/6,4/6,3/6 -============================ -input: -DROP -output: -OneWayHeroics : ドロップアイテム表(6) > その他ドロップ表へ移動 > - DROPOT > その他ドロップ表(66) > 【闇ギルド会員証】 -rand:6/6,6/6,6/6 -============================ -input: -RETP4 -output: -OneWayHeroics : ランダムイベント表プラス(1) > さらに1D6を振る。現在PCがいるエリアの【日数】以下なら施設表プラス(022ページ)へ移動。【経過日数】を超えていればダンジョン表プラス(025ページ)へ移動 > - 1D6[1] > 日数[4]以下 > - FCLTP > 施設表プラス(11) > 聖なる神殿(基本152ページ) -rand:1/6,1/6,1/6,1/6 -============================ -input: -RETP4 -output: -OneWayHeroics : ランダムイベント表プラス(1) > さらに1D6を振る。現在PCがいるエリアの【日数】以下なら施設表プラス(022ページ)へ移動。【経過日数】を超えていればダンジョン表プラス(025ページ)へ移動 > - 1D6[1] > 日数[4]以下 > - FCLTP > 施設表プラス(66) > 人魚の集落(024ページ) -rand:1/6,1/6,6/6,6/6 -============================ -input: -RETP4 -output: -OneWayHeroics : ランダムイベント表プラス(5) > 施設表プラスへ移動(022ページ) > - FCLTP > 施設表プラス(16) > エリアの地形が雪原なら雪国の小屋(基本152ページ)エリアの地形が山岳なら山小屋(基本152ページ)それ以外の地形なら石の小屋、村遭遇表へ移動(基本151ページ) -rand:5/6,1/6,6/6 -============================ -input: -RETP3 -output: -OneWayHeroics : ランダムイベント表プラス(6) > ダンジョン表プラスへ移動(025ページ) > - DNGNP3 > ダンジョン表プラス(2) > 犬小屋(基本155ページ) -rand:6/6,1/6,1/6 -============================ -input: -RETP3 -output: -OneWayHeroics : ランダムイベント表プラス(6) > ダンジョン表プラスへ移動(025ページ) > - DNGNP3 > ダンジョン表プラス(5) > 犬小屋(基本155ページ) -rand:6/6,1/6,4/6 -============================ -input: -RETP4 -output: -OneWayHeroics : ランダムイベント表プラス(6) > ダンジョン表プラスへ移動(025ページ) > - DNGNP4 > ダンジョン表プラス(7) > 「ダンジョン遭遇表」(基本153ページ)へ移動。小型ダンジョンだ。 -rand:6/6,1/6,4/6 -============================ -input: -RETP3 -output: -OneWayHeroics : ランダムイベント表プラス(6) > ダンジョン表プラスへ移動(025ページ) > - DNGNP3 > ダンジョン表プラス(12) > 水路に囲まれた水上遺跡だ。なかに入るなら【ST】を4消費(「水泳」)してから「ダンジョン遭遇表」(基本153ページ)へ移動。イベントの判定に成功すると追加で【豪華な宝箱】が1つ出現し、戦闘か開錠を試みられる。 -rand:6/6,6/6,6/6 -============================ -input: -RETP4 -output: -OneWayHeroics : ランダムイベント表プラス(6) > ダンジョン表プラスへ移動(025ページ) > - DNGNP4 > ダンジョン表プラス(14) > 砂の遺跡にたどりつき、「牢獄遭遇表」(基本154ページ)へ移動。モンスターが出現した場合、数が2体増加する。またイベントの【経験値】が2増加する。イベントの判定に成功すると追加で【珍しい箱】が1つ出現し、戦闘か開錠を試みられる。 -rand:6/6,6/6,6/6 -============================ -input: -RETP4 -output: -OneWayHeroics : ランダムイベント表プラス(3) > さらに1D6を振る。現在PCがいるエリアの【日数】以下なら世界の旅表2(028ページ)へ移動。【経過日数】を超えていれば野外遭遇表プラス(025ページ)へ移動 > - 1D6[5] > 日数[4]を超えている > - OUTENCP > 野外遭遇表プラス(6) > 希少動物表(基本156ページ)へ移動 > - RANI > 希少動物表(4) > 地形によって異なる希少動物が1体出現する。雪原なら【雪ウサギ】、山岳なら【山岳ゴート】、遺跡なら【遺跡白馬】、草原なら【草原カワウソ】、砂漠と荒野は【砂漠キツネ】。それ以外は【緑の森団員】となる。戦闘を挑んでもいいし、見送ってもいい。 -rand:3/6,5/6,6/6,6/6 -============================ -input: -OUTENCP -output: -OneWayHeroics : 野外遭遇表プラス(1) > エリアの地形ごとの野外モンスター表プラスへ移動。モンスターのうち1体にランダムな特徴がつく。モンスター特徴表プラス(027ページ)を使用する。 > - MONFTP > モンスター特徴表プラス(56) > 【臭い】( 0 4 7ページ) -rand:1/6,6/6,5/6 -============================ -input: -DROPP -output: -OneWayHeroics : ドロップアイテム表プラス(11) > 武器ドロップ表 > - DROPWP > 武器ドロップ表(11) > 【さびた小剣】 -rand:1/6,1/6,1/6,1/6 -============================ -input: -DROPP -output: -OneWayHeroics : ドロップアイテム表プラス(13) > 武器ドロップ表2 > - DROPWP2 > 武器ドロップ表2(11) > 【さびた巨大斧】 -rand:1/6,3/6,1/6,1/6 -============================ -input: -DROPP -output: -OneWayHeroics : ドロップアイテム表プラス(16) > 防具ドロップ表 > - DROPAR > 防具ドロップ表(11) > 【旅人の服】 -rand:1/6,6/6,1/6,1/6 -============================ -input: -DROPP -output: -OneWayHeroics : ドロップアイテム表プラス(22) > 防具ドロップ表2 > - DROPAR2 > 防具ドロップ表2(11) > 【ボロボロの服】 -rand:2/6,2/6,1/6,1/6 -============================ -input: -DROPP -output: -OneWayHeroics : ドロップアイテム表プラス(24) > 食品ドロップ表 > - DROPFD > 食品ドロップ表(11) > 【枯れた草】 -rand:2/6,4/6,1/6,1/6 -============================ -input: -DROPP -output: -OneWayHeroics : ドロップアイテム表プラス(26) > 食品ドロップ表2 > - DROPFD2 > 食品ドロップ表2(1) > 【解毒の草】、地形が火 山なら【こげた草】、地 形が海岸なら【おいし い海藻】 -rand:2/6,6/6,1/6 -============================ -input: -DROPP -output: -OneWayHeroics : ドロップアイテム表プラス(34) > 薬品ドロップ表プラス > - DROPDRP > 薬品ドロップ表プラス(11) > 【燃料油のビン】 -rand:3/6,4/6,1/6,1/6 -============================ -input: -DROPP -output: -OneWayHeroics : ドロップアイテム表プラス(36) > 巻物ドロップ表 > - DROPSC > 巻物ドロップ表(11) > 【石壁の巻物】 -rand:3/6,6/6,1/6,1/6 -============================ -input: -DROPP -output: -OneWayHeroics : ドロップアイテム表プラス(45) > 巻物ドロップ表2 > - DROPSC2 > 巻物ドロップ表2(11) > 【火炎波の巻物】 -rand:4/6,5/6,1/6,1/6 -============================ -input: -DROPP -output: -OneWayHeroics : ドロップアイテム表プラス(56) > その他ドロップ表 > - DROPOT > その他ドロップ表(66) > 【闇ギルド会員証】 -rand:5/6,6/6,6/6,6/6 -============================ -input: -DROPP -output: -OneWayHeroics : ドロップアイテム表プラス(66) > その他ドロップ表2 > - DROPOT2 > その他 ドロップ表2(12) > 【五連の矢】 -rand:6/6,6/6,6/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/OracleEngine.txt b/src/src_bcdice/test/data/OracleEngine.txt deleted file mode 100644 index 0d460cd75..000000000 --- a/src/src_bcdice/test/data/OracleEngine.txt +++ /dev/null @@ -1,696 +0,0 @@ -input: -2CL 通常 -output: -OracleEngine : (2CL) > [1, 3] > シフト3 -rand:3/6,1/6 -============================ -input: -2cl6 -output: -OracleEngine : (2CL) > [1, 3] > シフト3 -rand:3/6,1/6 -============================ -input: -2cL7 -output: -OracleEngine : (2CL7) > [1, 3] > シフト3 -rand:3/6,1/6 -============================ -input: -10Cl -output: -OracleEngine : (10CL) > [2, 2, 4, 4, 5, 5, 6, 6, 6, 6] > シフト6 -rand:6/6,5/6,6/6,4/6,2/6,6/6,2/6,5/6,4/6,6/6 -============================ -input: -10Cl6 -output: -OracleEngine : (10CL) > [2, 2, 4, 4, 5, 5, 6, 6, 6, 6] > シフト6 -rand:6/6,5/6,6/6,4/6,2/6,6/6,2/6,5/6,4/6,6/6 -============================ -input: -10Cl7 -output: -OracleEngine : (10CL7) > [2, 2, 4, 4, 5, 5, 6, 6, 6, 6] > シフト6 -rand:6/6,5/6,6/6,4/6,2/6,6/6,2/6,5/6,4/6,6/6 -============================ -input: -1CL+1 足し算 -output: -OracleEngine : (1CL+1) > [2] > シフト2 -rand:1/6 -============================ -input: -1CL+1 -output: -OracleEngine : (1CL+1) > [6] > シフト6 -rand:6/6 -============================ -input: -1CL6+1 -output: -OracleEngine : (1CL+1) > [6] > シフト6 -rand:6/6 -============================ -input: -1CL7+1 -output: -OracleEngine : (1CL7+1) > [7] > シフト7 -rand:6/6 -============================ -input: -1CL7+1 -output: -OracleEngine : (1CL7+1) > [3] > シフト3 -rand:2/6 -============================ -input: -1CL7+1+2+0 -output: -OracleEngine : (1CL7+3) > [5] > シフト5 -rand:2/6 -============================ -input: -1CL7+0 -output: -OracleEngine : (1CL7) > [4] > シフト4 -rand:4/6 -============================ -input: -3cl-1 引き算 -output: -OracleEngine : (3CL-1) > [1, 1, 2] > シフト2 -rand:1/6,2/6,3/6 -============================ -input: -3cl-1 -output: -OracleEngine : (3CL-1) > [1, 2, 4] > シフト4 -rand:5/6,2/6,3/6 -============================ -input: -3Cl6-1 -output: -OracleEngine : (3CL-1) > [1, 1, 1] > シフト1 -rand:1/6,1/6,1/6 -============================ -input: -3CL-1-2-0 -output: -OracleEngine : (3CL-3) > [1, 1, 3] > シフト3 -rand:6/6,2/6,4/6 -============================ -input: -3CL-0 -output: -OracleEngine : (3CL) > [2, 4, 5] > シフト5 -rand:5/6,2/6,4/6 -============================ -input: -4cl-1+1 足し引き 最終的に0か1項にまとめられる -output: -OracleEngine : (4CL) > [1, 2, 4, 5] > シフト5 -rand:2/6,4/6,1/6,5/6 -============================ -input: -4cl7-1+2 -output: -OracleEngine : (4CL7+1) > [2, 3, 5, 7] > シフト7 -rand:2/6,4/6,1/6,6/6 -============================ -input: -4cl6-2+1 -output: -OracleEngine : (4CL-1) > [1, 1, 3, 5] > シフト5 -rand:2/6,4/6,1/6,6/6 -============================ -input: -6Cl+11-9 -output: -OracleEngine : (6CL+2) > [3, 6, 6, 6, 6, 6] > シフト6 -rand:4/6,5/6,6/6,6/6,1/6,6/6 -============================ -input: -6Cl7+11-9 -output: -OracleEngine : (6CL7+2) > [3, 6, 7, 7, 7, 7] > シフト7 -rand:4/6,5/6,6/6,6/6,1/6,6/6 -============================ -input: -8cL-12+10 -output: -OracleEngine : (8CL-2) > [1, 1, 1, 2, 2, 3, 4, 4] > シフト4 -rand:3/6,6/6,4/6,5/6,1/6,6/6,1/6,4/6 -============================ -input: -4cl6+0-0 -output: -OracleEngine : (4CL) > [1, 2, 4, 6] > シフト6 -rand:2/6,4/6,1/6,6/6 -============================ -input: -4CL6>=6 目標値付き 通常 -output: -OracleEngine : (4CL>=6) > [2, 3, 5, 6] > 成功 シフト6 -rand:3/6,2/6,6/6,5/6 -============================ -input: -4cL>=6 -output: -OracleEngine : (4CL>=6) > [1, 4, 5, 5] > 失敗 シフト4 -rand:5/6,1/6,4/6,5/6 -============================ -input: -4cL7>=6 -output: -OracleEngine : (4CL7>=6) > [1, 4, 5, 5] > 失敗 シフト4 -rand:5/6,1/6,4/6,5/6 -============================ -input: -4cL6>=7 1~6(7)に丸められる -output: -OracleEngine : (4CL>=6) > [1, 4, 5, 5] > 失敗 シフト4 -rand:5/6,1/6,4/6,5/6 -============================ -input: -4cL7>=7 -output: -OracleEngine : (4CL7>=7) > [1, 4, 5, 5] > 失敗 シフト4 -rand:5/6,1/6,4/6,5/6 -============================ -input: -4cL>=0 -output: -OracleEngine : (4CL>=1) > [1, 4, 5, 5] > 成功 シフト1 -rand:5/6,1/6,4/6,5/6 -============================ -input: -4cL6>=0 -output: -OracleEngine : (4CL>=1) > [1, 4, 5, 5] > 成功 シフト1 -rand:5/6,1/6,4/6,5/6 -============================ -input: -4cL7>=0 -output: -OracleEngine : (4CL7>=1) > [1, 4, 5, 5] > 成功 シフト1 -rand:5/6,1/6,4/6,5/6 -============================ -input: -2CL+1>=4 目標値付き 足し算 -output: -OracleEngine : (2CL+1>=4) > [3, 4] > 成功 シフト4 -rand:3/6,2/6 -============================ -input: -2CL7+1>=4 成功でシフト=>目標値 -output: -OracleEngine : (2CL7+1>=4) > [3, 4] > 成功 シフト4 -rand:3/6,2/6 -============================ -input: -2CL6+1>=4 -output: -OracleEngine : (2CL+1>=4) > [3, 4] > 成功 シフト4 -rand:3/6,2/6 -============================ -input: -2CL+1>=4 失敗でシフト=>最大ダイス値-1 -output: -OracleEngine : (2CL+1>=4) > [2, 3] > 失敗 シフト2 -rand:2/6,1/6 -============================ -input: -2CL6+1>=4 -output: -OracleEngine : (2CL+1>=4) > [2, 3] > 失敗 シフト2 -rand:2/6,1/6 -============================ -input: -2CL7+1=>4 不等号は入れ替えヨシ -output: -OracleEngine : (2CL7+1>=4) > [2, 3] > 失敗 シフト2 -rand:2/6,1/6 -============================ -input: -2CL+1>=12 -output: -OracleEngine : (2CL+1>=6) > [5, 6] > 成功 シフト6 -rand:4/6,6/6 -============================ -input: -2CL6+1>=12 -output: -OracleEngine : (2CL+1>=6) > [5, 6] > 成功 シフト6 -rand:4/6,6/6 -============================ -input: -2CL7+1>=12 -output: -OracleEngine : (2CL7+1>=7) > [5, 7] > 成功 シフト7 -rand:4/6,6/6 -============================ -input: -2CL7+1+2+0>=12 -output: -OracleEngine : (2CL7+3>=7) > [7, 7] > 成功 シフト7 -rand:4/6,6/6 -============================ -input: -2CL+0>=5 -output: -OracleEngine : (2CL>=5) > [4, 6] > 成功 シフト5 -rand:4/6,6/6 -============================ -input: -3CL-1>=5 目標値付き 引き算 -output: -OracleEngine : (3CL-1>=5) > [2, 3, 5] > 成功 シフト5 -rand:4/6,6/6,3/6 -============================ -input: -3CL6-1>=5 -output: -OracleEngine : (3CL-1>=5) > [2, 3, 3] > 失敗 シフト2 -rand:4/6,4/6,3/6 -============================ -input: -3CL6-1>=5 -output: -OracleEngine : (3CL-1>=5) > [1, 1, 1] > 失敗 シフト1 -rand:1/6,1/6,1/6 -============================ -input: -3CL6-0>=5 -output: -OracleEngine : (3CL>=5) > [1, 3, 5] > 成功 シフト5 -rand:5/6,1/6,3/6 -============================ -input: -4CL-1+1>=4 目標値付き 足し引き -output: -OracleEngine : (4CL>=4) > [1, 3, 4, 6] > 成功 シフト4 -rand:4/6,6/6,3/6,1/6 -============================ -input: -4CL-1+1>=6 -output: -OracleEngine : (4CL>=6) > [1, 3, 4, 5] > 失敗 シフト4 -rand:4/6,5/6,3/6,1/6 -============================ -input: -4CL+1-2>=4 -output: -OracleEngine : (4CL-1>=4) > [1, 2, 3, 4] > 成功 シフト4 -rand:4/6,5/6,3/6,1/6 -============================ -input: -4CL-2+1>=4 -output: -OracleEngine : (4CL-1>=4) > [1, 2, 3, 4] > 成功 シフト4 -rand:4/6,5/6,3/6,1/6 -============================ -input: -4CL-1+2>=6 -output: -OracleEngine : (4CL+1>=6) > [2, 4, 5, 6] > 成功 シフト6 -rand:4/6,5/6,3/6,1/6 -============================ -input: -4CL+2-1>=6 -output: -OracleEngine : (4CL+1>=6) > [2, 4, 5, 6] > 成功 シフト6 -rand:4/6,5/6,3/6,1/6 -============================ -input: -4CL6-2+1>=4 -output: -OracleEngine : (4CL-1>=4) > [1, 2, 3, 4] > 成功 シフト4 -rand:4/6,5/6,3/6,1/6 -============================ -input: -4CL7-1+2>=6 -output: -OracleEngine : (4CL7+1>=6) > [2, 4, 5, 7] > 成功 シフト6 -rand:4/6,6/6,3/6,1/6 -============================ -input: -2R6 クリティカル -output: -OracleEngine : (2R6) > 12[6, 6] > クリティカル! -rand:6/6,6/6 -============================ -input: -2R6 ファンブル -output: -OracleEngine : (2R6) > 2[1, 1] > ファンブル! -rand:1/6,1/6 -============================ -input: -2R6 通常 -output: -OracleEngine : (2R6) > 6[2, 4] > 6 -rand:2/6,4/6 -============================ -input: -2R6 通常 -output: -OracleEngine : (2R6) > 6[2, 4] > 6 -rand:2/6,4/6 -============================ -input: -4r6 ダイス増加,大きい2つで達成値を出す -output: -OracleEngine : (4R6) > 9[1, 2, 4, 5] > 9 -rand:1/6,2/6,5/6,4/6 -============================ -input: -4R6 クリティカル,達成値がC値以上でクリティカル -output: -OracleEngine : (4R6) > 12[2, 4, 6, 6] > クリティカル! -rand:2/6,4/6,6/6,6/6 -============================ -input: -4r6 ファンブル,達成値がF値以下でファンブル -output: -OracleEngine : (4R6) > 2[1, 1, 1, 1] > ファンブル! -rand:1/6,1/6,1/6,1/6 -============================ -input: -8r6 更にダイス増加,大きい2つで達成値を出す -output: -OracleEngine : (8R6) > 11[1, 1, 2, 2, 3, 4, 5, 6] > 11 -rand:2/6,1/6,6/6,1/6,2/6,4/6,5/6,3/6 -============================ -input: -8R6 クリティカル,達成値がC値以上でクリティカル -output: -OracleEngine : (8R6) > 12[2, 2, 3, 4, 4, 5, 6, 6] > クリティカル! -rand:6/6,6/6,4/6,3/6,2/6,4/6,2/6,5/6 -============================ -input: -8r6 ファンブル,達成値がF値以下でファンブル -output: -OracleEngine : (8R6) > 2[1, 1, 1, 1, 1, 1, 1, 1] > ファンブル! -rand:1/6,1/6,1/6,1/6,1/6,1/6,1/6,1/6 -============================ -input: -4r6+1 修正付き -output: -OracleEngine : (4R6+1) > 9[1, 2, 4, 5]+1 > 10 -rand:1/6,2/6,5/6,4/6 -============================ -input: -4r6-2 修正付き -output: -OracleEngine : (4R6-2) > 9[1, 2, 3, 6]-2 > 7 -rand:1/6,2/6,6/6,3/6 -============================ -input: -4r6+1 修正付き クリティカルはダイスのみで判断する -output: -OracleEngine : (4R6+1) > 11[1, 3, 5, 6]+1 > 12 -rand:3/6,1/6,5/6,6/6 -============================ -input: -4r6-2 修正付き ファンブルはダイスのみで判断する -output: -OracleEngine : (4R6-2) > 3[1, 1, 1, 2]-2 > 1 -rand:1/6,1/6,1/6,2/6 -============================ -input: -4r6+1-2+3-4+5-6+2 修正いっぱい付き 一つにまとまる -output: -OracleEngine : (4R6-1) > 10[1, 3, 4, 6]-1 > 9 -rand:3/6,4/6,6/6,1/6 -============================ -input: -4r6+16-12+28 大きい修正付き -output: -OracleEngine : (4R6+32) > 10[3, 4, 4, 6]+32 > 42 -rand:4/6,3/6,6/6,4/6 -============================ -input: -4r6+1-1 修正付き 0なら消える -output: -OracleEngine : (4R6) > 11[3, 5, 5, 6] > 11 -rand:6/6,3/6,5/6,5/6 -============================ -input: -4r6+0 修正付き もとから0でも消える -output: -OracleEngine : (4R6) > 8[1, 2, 3, 5] > 8 -rand:3/6,1/6,5/6,2/6 -============================ -input: -4r6+1 修正付き クリティカルだと達成値関係ない -output: -OracleEngine : (4R6+1) > 12[4, 5, 6, 6]+1 > クリティカル! -rand:5/6,4/6,6/6,6/6 -============================ -input: -4r6+1 修正付き ファンブルでも達成値関係ない -output: -OracleEngine : (4R6+1) > 2[1, 1, 1, 1]+1 > ファンブル! -rand:1/6,1/6,1/6,1/6 -============================ -input: -4r6@10 C値付き -output: -OracleEngine : (4R6c[10]) > 8[1, 3, 3, 5] > 8 -rand:3/6,1/6,3/6,5/6 -============================ -input: -4r6@10 C値付き C値以上のダイス合計でクリティカル -output: -OracleEngine : (4R6c[10]) > 10[1, 3, 4, 6] > クリティカル! -rand:3/6,1/6,4/6,6/6 -============================ -input: -4r6@+1 C値付き @+nで12+nになる(13以上でクリティカルしなくなる) -output: -OracleEngine : (4R6c[13]) > 12[3, 6, 6, 6] > 12 -rand:6/6,3/6,6/6,6/6 -============================ -input: -4r6@-2 C値付き @-nで12-nになる(下限2) -output: -OracleEngine : (4R6c[10]) > 10[1, 4, 4, 6] > クリティカル! -rand:1/6,6/6,4/6,4/6 -============================ -input: -4r6@-99 C値付き @-nで12-nになる(下限2) -output: -OracleEngine : (4R6c[2]) > 3[1, 1, 1, 2] > クリティカル! -rand:1/6,1/6,1/6,2/6 -============================ -input: -4r6@1 C値付き @-nで12-nになる(下限2) -output: -OracleEngine : (4R6c[2]) > 3[1, 1, 1, 2] > クリティカル! -rand:1/6,1/6,1/6,2/6 -============================ -input: -4r6#4 F値付き -output: -OracleEngine : (4R6f[4]) > 7[1, 1, 2, 5] > 7 -rand:1/6,2/6,1/6,5/6 -============================ -input: -4r6#4 修正付き F値以下のダイス合計でファンブル -output: -OracleEngine : (4R6f[4]) > 4[1, 2, 2, 2] > ファンブル! -rand:2/6,2/6,1/6,2/6 -============================ -input: -4r6#+2 F値付き #+nで2+nになる(上限12) -output: -OracleEngine : (4R6f[4]) > 4[1, 1, 1, 3] > ファンブル! -rand:1/6,3/6,1/6,1/6 -============================ -input: -4r6#+99 F値付き #+nで2+nになる(上限12) -output: -OracleEngine : (4R6f[12]) > 10[2, 4, 4, 6] > ファンブル! -rand:4/6,4/6,6/6,2/6 -============================ -input: -4r6#13 F値付き #+nで2+nになる(上限12) -output: -OracleEngine : (4R6f[12]) > 12[4, 4, 6, 6] > ファンブル! -rand:4/6,4/6,6/6,6/6 -============================ -input: -4r6#-1 F値付き #-nで2-nになる(下限0) -output: -OracleEngine : (4R6f[1]) > 2[1, 1, 1, 1] > 2 -rand:1/6,1/6,1/6,1/6 -============================ -input: -4r6#-99 F値付き #-nで2-nになる(下限0) -output: -OracleEngine : (4R6f[0]) > 2[1, 1, 1, 1] > 2 -rand:1/6,1/6,1/6,1/6 -============================ -input: -4r6#-3 F値付き #-nで2-nになる(下限0) -output: -OracleEngine : (4R6f[0]) > 2[1, 1, 1, 1] > 2 -rand:1/6,1/6,1/6,1/6 -============================ -input: -4r6@7#10 C値F値付き C値以上F値以下でファンブル -output: -OracleEngine : (4R6c[7]f[10]) > 9[1, 3, 4, 5] > ファンブル! -rand:4/6,1/6,3/6,5/6 -============================ -input: -4r6$1 ダイスブレイク付き(大きいダイスを取り除く) -output: -OracleEngine : (4R6b[1]) > 8[1, 3, 5]×[6] > 8 -rand:6/6,5/6,3/6,1/6 -============================ -input: -4r6$3 ダイスブレイク付き 残るダイスが2個未満になることも -output: -OracleEngine : (4R6b[3]) > 3[3]×[5, 5, 6] > 3 -rand:6/6,3/6,5/6,5/6 -============================ -input: -4r6$3 ダイスブレイク付き ダイスの合計がファンブル値以下ならファンブルになる -output: -OracleEngine : (4R6b[3]) > 1[1]×[3, 5, 5] > ファンブル! -rand:5/6,1/6,5/6,3/6 -============================ -input: -4r6$4 ダイスブレイク付き 残るダイスがないときも = 絶対にファンブル -output: -OracleEngine : (4R6b[4]) > 0[]×[2, 4, 4, 5] > ファンブル! -rand:4/6,4/6,2/6,5/6 -============================ -input: -4r6$6 ダイスブレイク付き -output: -OracleEngine : (4R6b[6]) > 0[]×[2, 5, 6, 6] > ファンブル! -rand:6/6,2/6,6/6,5/6 -============================ -input: -4r6$-2 ダイスブレイク付き 符号は無視される -output: -OracleEngine : (4R6b[2]) > 4[2, 2]×[3, 6] > 4 -rand:2/6,3/6,2/6,6/6 -============================ -input: -4r6$+2 ダイスブレイク付き 符号は無視される -output: -OracleEngine : (4R6b[2]) > 5[1, 4]×[5, 6] > 5 -rand:4/6,1/6,6/6,5/6 -============================ -input: -4r6$0 ダイスブレイク付き 0個の時 -output: -OracleEngine : (4R6) > 11[4, 5, 5, 6] > 11 -rand:6/6,4/6,5/6,5/6 -============================ -input: -4R6>=9 不等号付き -output: -OracleEngine : (4R6>=9) > 11[2, 4, 5, 6] > 11 成功 -rand:4/6,5/6,6/6,2/6 -============================ -input: -4R6=>9 不等号付き 逆でもよい -output: -OracleEngine : (4R6>=9) > 7[1, 1, 2, 5] > 7 失敗 -rand:2/6,5/6,1/6,1/6 -============================ -input: -4R6>=9 不等号付き クリティカル、ファンブルでは関係なし -output: -OracleEngine : (4R6>=9) > 12[2, 4, 6, 6] > クリティカル! -rand:4/6,6/6,2/6,6/6 -============================ -input: -4R6>=9 不等号付き クリティカル、ファンブルでは関係なし -output: -OracleEngine : (4R6>=9) > 2[1, 1, 1, 1] > ファンブル! -rand:1/6,1/6,1/6,1/6 -============================ -input: -6r6+4@9#4$2>=9 全部乗せ -output: -OracleEngine : (6R6+4c[9]f[4]b[2]>=9) > 8[3, 3, 4, 4]×[5, 6]+4 > 12 成功 -rand:6/6,3/6,3/6,4/6,5/6,4/6 -============================ -input: -10R6+1@-2#3$4>=11 全部乗せ -output: -OracleEngine : (10R6+1c[10]f[3]b[4]>=11) > 9[1, 2, 3, 4, 4, 5]×[6, 6, 6, 6]+1 > 10 失敗 -rand:5/6,6/6,4/6,6/6,2/6,1/6,6/6,4/6,6/6,3/6 -============================ -input: -4D6+5$1 ダメージロール ダイスブレイク付き -output: -OracleEngine : (4D6+5b[1]) > 6[1, 2, 3]×[4]+5 > 11 -rand:3/6,1/6,4/6,2/6 -============================ -input: -4D6$1 ダメージロール ダイスブレイク付き(必須) ボーナスは無くてもよい -output: -OracleEngine : (4D6b[1]) > 13[3, 4, 6]×[6] > 13 -rand:4/6,6/6,3/6,6/6 -============================ -input: -4D6+0$1 0指定でも消える -output: -OracleEngine : (4D6b[1]) > 9[1, 3, 5]×[6] > 9 -rand:5/6,3/6,6/6,1/6 -============================ -input: -4D6+5$6 ダイス数<=ダイスブレイク で修正のみ -output: -OracleEngine : (4D6+5b[6]) > 0[]×[2, 4, 6, 6]+5 > 5 -rand:6/6,2/6,6/6,4/6 -============================ -input: -4D6+5+2+3+1-4$1 修正いっぱい=>ひとまとめ -output: -OracleEngine : (4D6+7b[1]) > 6[2, 2, 2]×[5]+7 > 13 -rand:2/6,2/6,5/6,2/6 -============================ -input: -4D6+5-2-3$1 修正ぴったり0で消える -output: -OracleEngine : (4D6b[1]) > 9[1, 3, 5]×[6] > 9 -rand:5/6,3/6,1/6,6/6 -============================ -input: -1D6-3$2 ダイス数<=ダイスブレイク で修正のみ -output: -OracleEngine : (1D6-3b[2]) > 0[]×[6]-3 > 0 -rand:6/6 -============================ -input: -1D6$2 -output: -OracleEngine : (1D6b[2]) > 0[]×[6] > 0 -rand:6/6 -============================ -input: -1D6$0 -output: -OracleEngine : (1D6) > 6[6] > 6 -rand:6/6 -============================ -input: -5d6+3$+2 ダイスブレイク 符号は無視される -output: -OracleEngine : (5D6+3b[2]) > 9[2, 3, 4]×[5, 5]+3 > 12 -rand:5/6,2/6,3/6,5/6,4/6 -============================ -input: -5d6+3$-2 ダイスブレイク 符号は無視される -output: -OracleEngine : (5D6+3b[2]) > 8[2, 3, 3]×[4, 4]+3 > 11 -rand:2/6,4/6,3/6,4/6,3/6 -============================ \ No newline at end of file diff --git a/src/src_bcdice/test/data/OrgaRain.txt b/src/src_bcdice/test/data/OrgaRain.txt deleted file mode 100644 index 1bb7eb2e4..000000000 --- a/src/src_bcdice/test/data/OrgaRain.txt +++ /dev/null @@ -1,42 +0,0 @@ -input: -OR1234 -output: -OrgaRain : 1D10(命数:1,2,3,4) > 1 > 1(x1) > 成功数:1 -rand:1/10 -============================ -input: -OR1234 -output: -OrgaRain : 1D10(命数:1,2,3,4) > 5 > × > 成功数:0 -rand:5/10 -============================ -input: -OR09876 -output: -OrgaRain : 1D10(命数:0,6,7,8,9) > 10 > 0(x1) > 成功数:1 -rand:10/10 -============================ -input: -5OR11122 -output: -OrgaRain : 5D10(命数:1,1,1,2,2) > 1,2,3,4,5 > 1(x3),2(x2),×,×,× > 成功数:5 -rand:1/10,2/10,3/10,4/10,5/10 -============================ -input: -5OR11122 -output: -OrgaRain : 5D10(命数:1,1,1,2,2) > 1,1,1,1,1 > 1(x3),1(x3),1(x3),1(x3),1(x3) > 成功数:15 -rand:1/10,1/10,1/10,1/10,1/10 -============================ -input: -5OR11122 -output: -OrgaRain : 5D10(命数:1,1,1,2,2) > 5,6,7,8,9 > ×,×,×,×,× > 成功数:0 -rand:5/10,6/10,7/10,8/10,9/10 -============================ -input: -9or012012 -output: -OrgaRain : 9D10(命数:0,0,1,1,2,2) > 1,2,3,4,5,6,7,8,9 > 1(x2),2(x2),×,×,×,×,×,×,× > 成功数:4 -rand:1/10,2/10,3/10,4/10,5/10,6/10,7/10,8/10,9/10 -============================ diff --git a/src/src_bcdice/test/data/Oukahoushin3rd.txt b/src/src_bcdice/test/data/Oukahoushin3rd.txt deleted file mode 100644 index fabcde657..000000000 --- a/src/src_bcdice/test/data/Oukahoushin3rd.txt +++ /dev/null @@ -1,89 +0,0 @@ -input: -BKT -output: -Oukahoushin3rd : 武器攻撃裏成功表(2[1,1]) > 1ポイント清徳値が低下。連続攻撃が行える。この場合の連続攻撃においては、命中判定のサイコロは常にひっくり返して用いるが、2撃目以降はこの表は使わない。 -rand:1/6,1/6 -============================ -input: -BKT -output: -Oukahoushin3rd : 武器攻撃裏成功表(12[6,6]) > 1ポイント清徳値が低下。体力または機敏(攻撃を行った者が選択する)が1ポイント上昇。 -rand:6/6,6/6 -============================ -input: -KKT -output: -Oukahoushin3rd : 狂気表(2[1,1]) > 心神喪失、生ける屍。 -rand:1/6,1/6 -============================ -input: -KKT -output: -Oukahoushin3rd : 狂気表(12[6,6]) > 錯乱。行動はゲームマスターが「なるべくでたらめになるように」決定する。 -rand:6/6,6/6 -============================ -input: -NHT -output: -Oukahoushin3rd : 能力値判定裏成功表(2[1,1]) > 1ポイント清徳値が低下。変な癖が身についてしまう。 -rand:1/6,1/6 -============================ -input: -NHT -output: -Oukahoushin3rd : 能力値判定裏成功表(12[6,6]) > 1ポイント清徳値が低下。使用した能力値が1ポイント上昇。 -rand:6/6,6/6 -============================ -input: -NHT -output: -Oukahoushin3rd : 能力値判定裏成功表(7[6,1]) > ふつうの成功。 -rand:6/6,1/6 -============================ -input: -SDT -output: -Oukahoushin3rd : 精神値ダメージ悪影響表(1[1]) > 一瞬の放心。直後の判定は自動的に失敗。精神値を1D6(=>1)×最大値の10%回復。 -rand:1/6,1/6 -============================ -input: -SDT -output: -Oukahoushin3rd : 精神値ダメージ悪影響表(6[6]) > 精神異常(具体的内容は狂気表(KKT)で決定)。期間は1D6(=>1)を振って決定(1~3:1日、4~5:99日間、6:永遠)。精神値を最大値まで回復。 -rand:6/6,1/6 -============================ -input: -SKT -output: -Oukahoushin3rd : 仙術行使裏成功表(2[1,1]) > 1ポイント清徳値が低下。1ポイント仙骨が上昇。 -rand:1/6,1/6 -============================ -input: -SKT -output: -Oukahoushin3rd : 仙術行使裏成功表(12[6,6]) > 1D6(=>6)ポイント清徳値が低下。仙骨以外のいずれかの能力値(術者選択)が1ポイント上昇。 -rand:6/6,6/6,6/6 -============================ -input: -STT -output: -Oukahoushin3rd : 仙術抵抗裏成功表(2[1,1]) > 1ポイント清徳値が低下。 -rand:1/6,1/6 -============================ -input: -STT -output: -Oukahoushin3rd : 仙術抵抗裏成功表(12[6,6]) > 1ポイント清徳値が低下。仙骨または知覚(仙術に抵抗した者が選択する)が1ポイント上昇。 -rand:6/6,6/6 -============================ -input: -UKT -output: -Oukahoushin3rd : 受け・回避裏成功表(2[1,1]) > 1ポイント清徳値が低下。 -rand:1/6,1/6 -============================ -input: -UKT -output: -Oukahoushin3rd : 受け・回避裏成功表(12[6,6]) > 1ポイント清徳値が低下。機敏または知覚(攻撃を防御した者が選択する)が1ポイント上昇。 -rand:6/6,6/6 diff --git a/src/src_bcdice/test/data/Paradiso.txt b/src/src_bcdice/test/data/Paradiso.txt deleted file mode 100644 index ca3215cc1..000000000 --- a/src/src_bcdice/test/data/Paradiso.txt +++ /dev/null @@ -1,85 +0,0 @@ -input: -CP13 -output: -Paradiso : (1D20 目標値13) > (5) > 成功 -rand:5/20 -============================ -input: -4D20<=16[19]@14 -output: -Paradiso : (4D20 目標値16) > (11,7,16,17) > 成功 -rand:11/20,7/20,16/20,17/20 -============================ -input: -2CP@9 -output: -Paradiso : (2D20 目標値14) > (16,17) > 失敗 -rand:16/20,17/20 -============================ -input: -4CP(14+1)[18,19]@9 -output: -Paradiso : (4D20 目標値15) > (20,10,11,17) > ファンブル -rand:20/20,10/20,11/20,17/20 -============================ -input: -3CP[19] -output: -Paradiso : (3D20 目標値14) > (19,13,3) > ファンブル -rand:19/20,13/20,3/20 -============================ -input: -4CP12[19]@10 -output: -Paradiso : (4D20 目標値12) > (13,20,10,19) > クリティカル -rand:13/20,20/20,10/20,19/20 -============================ -input: -3D20<=13@16 -output: -Paradiso : (3D20 目標値13) > (1,11,8) > クリティカル -rand:1/20,11/20,8/20 -============================ -input: -RMT -output: -Paradiso : ラジオマリエッタ表(2):「今日はまたずいぶんと湿気てるねぇ……。古傷がある人は要注意だよ」 -天候が悪い。この一日中、「●移動」のアクションで移動できるマス数は常に1マス低くなる。 -rand:2/20 -============================ -input: -SUT -output: -Paradiso : 補給表(6):「一稼ぎと言ったらこれだろ?」と声をかけてくる悪友たち。「カジノ」(『基本ルールブック』P.55)のスポット効果を即座に適用する。ただしこの処理では判定の失敗により「刑務所」のスポット効果を持つスポットに移動する効果は発生せず、代わりに「酒場」のスポット効果を持つスポットに移動した上で、自身が持つ全ての【キズナ】の「支援チェック」にチェックを入れる。その後、次のセグメントが終了するまでの間アクションは行えない。 -rand:6/20 -============================ -input: -DC4 -output: -Paradiso : 攻撃力4ダメージチェック > (13,8,7,13) > -00000 -01100 -00200 -00000 -rand:13/20,8/20,7/20,13/20 -============================ -input: -DC5[30,20,20] -output: -Paradiso : 攻撃力5ダメージチェック > (18【30mm】,18【20mm】,15【20mm】,9,10) > -00000 -00011 -00002 -00500 -rand:18/20,18/20,15/20,9/20,10/20 -============================ -input: -DC6[30,30,20,30,20,20] -output: -Paradiso : 攻撃力6ダメージチェック > (7【30mm】,6【30mm】,2【30mm】,7【20mm】,12【20mm】,3【20mm】) > -03200 -35000 -02000 -00000 -rand:7/20,6/20,2/20,7/20,12/20,3/20 -============================ diff --git a/src/src_bcdice/test/data/Paranoia.txt b/src/src_bcdice/test/data/Paranoia.txt deleted file mode 100644 index 96f146bb0..000000000 --- a/src/src_bcdice/test/data/Paranoia.txt +++ /dev/null @@ -1,53 +0,0 @@ -input: -1d20 -output: -Paranoia : (1D20) > 1 -rand:1/20 -============================ -input: -2d20 -output: -Paranoia : (2D20) > 2[1,1] > 2 -rand:1/20,1/20 -============================ -input: -1d20<=15 -output: -Paranoia : (1D20<=15) > 14 > 成功 -rand:14/20 -============================ -input: -1d20<15 -output: -Paranoia : (1D20<15) > 15 > 失敗 -rand:15/20 -============================ -input: -1d20<=15 -output: -Paranoia : (1D20<=15) > 16 > 失敗 -rand:16/20 -============================ -input: -S1d20<=15 -output: -Paranoia : (1D20<=15) > 16 > 失敗###secret dice### -rand:16/20 -============================ -input: -1d20<=15 -output: -Paranoia : (1D20<=15) > 20 > 失敗 -rand:20/20 -============================ -input: -geta [1] -output: -Paranoia : geta > 幸福ですか? > 幸福です -rand:1/2 -============================ -input: -geta [2] -output: -Paranoia : geta > 幸福ですか? > 幸福ではありません -rand:2/2 diff --git a/src/src_bcdice/test/data/ParanoiaRebooted.txt b/src/src_bcdice/test/data/ParanoiaRebooted.txt deleted file mode 100644 index 2f98b1c04..000000000 --- a/src/src_bcdice/test/data/ParanoiaRebooted.txt +++ /dev/null @@ -1,78 +0,0 @@ -input: -ND2 -output: -ParanoiaRebooted : (ND2) > [1, 1, 1] > 成功度0 -rand:1/6,1/6,1/6 -============================ -input: -ND-2 -output: -ParanoiaRebooted : (ND-2) > [1, 1, 1] > 成功度-3 -rand:1/6,1/6,1/6 -============================ -input: -nd3 -output: -ParanoiaRebooted : (ND3) > [6, 2, 4, 5] > 成功度2 -rand:6/6,2/6,4/6,5/6 -============================ -input: -nd3 -output: -ParanoiaRebooted : (ND3) > [6, 5, 5, C] > 成功度4(Computer) -rand:6/6,5/6,5/6,6/6 -============================ -input: -ND-3 -output: -ParanoiaRebooted : (ND-3) > [6, 2, 5, C] > 成功度2(Computer) -rand:6/6,2/6,5/6,6/6 -============================ -input: -ND-3 -output: -ParanoiaRebooted : (ND-3) > [6, 6, 5, C] > 成功度4(Computer) -rand:6/6,6/6,5/6,6/6 -============================ -input: -ND0 -output: -ParanoiaRebooted : (ND0) > [C] > 成功度1(Computer) -rand:6/6 -============================ -input: -ND0 -output: -ParanoiaRebooted : (ND0) > [5] > 成功度1 -rand:5/6 -============================ -input: -ND0 -output: -ParanoiaRebooted : (ND0) > [4] > 成功度0 -rand:4/6 -============================ -input: -MP2 -output: -ParanoiaRebooted : (MP2) > [1, 1, 1] > 失敗(3) -rand:1/6,1/6,1/6 -============================ -input: -MP2 -output: -ParanoiaRebooted : (MP2) > [2, 6, 4] > 成功 -rand:2/6,6/6,4/6 -============================ -input: -MP2 -output: -ParanoiaRebooted : (MP2) > [2, 1, C] > 失敗(1)(Computer) -rand:2/6,1/6,6/6 -============================ -input: -MP2 -output: -ParanoiaRebooted : (MP2) > [2, 6, C] > 成功(Computer) -rand:2/6,6/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/ParasiteBlood.txt b/src/src_bcdice/test/data/ParasiteBlood.txt deleted file mode 100644 index 8f2eb3436..000000000 --- a/src/src_bcdice/test/data/ParasiteBlood.txt +++ /dev/null @@ -1,899 +0,0 @@ -input: -1D6 -output: -ParasiteBlood : (1D6) > 5 -rand:5/6 -============================ -input: -1D6 -output: -ParasiteBlood : (1D6) > 5 -rand:5/6 -============================ -input: -1D6 -output: -ParasiteBlood : (1D6) > 3 -rand:3/6 -============================ -input: -1D6 -output: -ParasiteBlood : (1D6) > 6 -rand:6/6 -============================ -input: -1D6 -output: -ParasiteBlood : (1D6) > 4 -rand:4/6 -============================ -input: -1D6 -output: -ParasiteBlood : (1D6) > 1 -rand:1/6 -============================ -input: -1D6 -output: -ParasiteBlood : (1D6) > 1 -rand:1/6 -============================ -input: -1D6 -output: -ParasiteBlood : (1D6) > 5 -rand:5/6 -============================ -input: -1D6 -output: -ParasiteBlood : (1D6) > 6 -rand:6/6 -============================ -input: -1D6 -output: -ParasiteBlood : (1D6) > 1 -rand:1/6 -============================ -input: -2D6 -output: -ParasiteBlood : (2D6) > 7[1,6] > 7 -rand:1/6,6/6 -============================ -input: -2D6 -output: -ParasiteBlood : (2D6) > 10[5,5] > 10 -rand:5/6,5/6 -============================ -input: -2D6 -output: -ParasiteBlood : (2D6) > 7[2,5] > 7 -rand:5/6,2/6 -============================ -input: -2D6 -output: -ParasiteBlood : (2D6) > 10[4,6] > 10 -rand:6/6,4/6 -============================ -input: -2D6 -output: -ParasiteBlood : (2D6) > 8[3,5] > 8 -rand:3/6,5/6 -============================ -input: -2D6 -output: -ParasiteBlood : (2D6) > 7[1,6] > 7 -rand:6/6,1/6 -============================ -input: -2D6 -output: -ParasiteBlood : (2D6) > 10[5,5] > 10 -rand:5/6,5/6 -============================ -input: -2D6 -output: -ParasiteBlood : (2D6) > 11[5,6] > 11 -rand:5/6,6/6 -============================ -input: -2D6 -output: -ParasiteBlood : (2D6) > 5[1,4] > 5 -rand:4/6,1/6 -============================ -input: -2D6 -output: -ParasiteBlood : (2D6) > 4[1,3] > 4 -rand:3/6,1/6 -============================ -input: -3D6 -output: -ParasiteBlood : (3D6) > 11[1,4,6] > 11 -rand:6/6,1/6,4/6 -============================ -input: -3D6 -output: -ParasiteBlood : (3D6) > 11[1,5,5] > 11 -rand:5/6,5/6,1/6 -============================ -input: -3D6 -output: -ParasiteBlood : (3D6) > 8[1,2,5] > 8 -rand:1/6,5/6,2/6 -============================ -input: -3D6 -output: -ParasiteBlood : (3D6) > 9[2,2,5] > 9 -rand:5/6,2/6,2/6 -============================ -input: -3D6 -output: -ParasiteBlood : (3D6) > 10[2,3,5] > 10 -rand:5/6,3/6,2/6 -============================ -input: -3D6 -output: -ParasiteBlood : (3D6) > 10[1,3,6] > 10 -rand:1/6,6/6,3/6 -============================ -input: -3D6 -output: -ParasiteBlood : (3D6) > 11[2,4,5] > 11 -rand:4/6,2/6,5/6 -============================ -input: -3D6 -output: -ParasiteBlood : (3D6) > 10[1,3,6] > 10 -rand:1/6,3/6,6/6 -============================ -input: -3D6 -output: -ParasiteBlood : (3D6) > 11[1,4,6] > 11 -rand:6/6,4/6,1/6 -============================ -input: -3D6 -output: -ParasiteBlood : (3D6) > 11[1,5,5] > 11 -rand:1/6,5/6,5/6 -============================ -input: -5D6 -output: -ParasiteBlood : (5D6) > 19[2,4,4,4,5] > 19 -rand:4/6,4/6,5/6,2/6,4/6 -============================ -input: -5D6 -output: -ParasiteBlood : (5D6) > 12[1,2,2,2,5] > 12 -rand:2/6,1/6,2/6,5/6,2/6 -============================ -input: -5D6 -output: -ParasiteBlood : (5D6) > 9[1,1,1,2,4] > 9 -rand:1/6,1/6,1/6,4/6,2/6 -============================ -input: -5D6 -output: -ParasiteBlood : (5D6) > 12[1,1,1,3,6] > 12 -rand:3/6,1/6,1/6,1/6,6/6 -============================ -input: -5D6 -output: -ParasiteBlood : (5D6) > 14[1,1,3,4,5] > 14 -rand:3/6,5/6,1/6,4/6,1/6 -============================ -input: -5D6 -output: -ParasiteBlood : (5D6) > 24[3,4,5,6,6] > 24 -rand:6/6,5/6,3/6,6/6,4/6 -============================ -input: -5D6 -output: -ParasiteBlood : (5D6) > 16[1,2,2,5,6] > 16 -rand:1/6,6/6,5/6,2/6,2/6 -============================ -input: -5D6 -output: -ParasiteBlood : (5D6) > 11[1,1,1,2,6] > 11 -rand:6/6,1/6,1/6,1/6,2/6 -============================ -input: -5D6 -output: -ParasiteBlood : (5D6) > 17[2,3,3,4,5] > 17 -rand:2/6,4/6,3/6,3/6,5/6 -============================ -input: -5D6 -output: -ParasiteBlood : (5D6) > 14[2,2,2,3,5] > 14 -rand:2/6,5/6,2/6,2/6,3/6 -============================ -input: -10D6 -output: -ParasiteBlood : (10D6) > 29[1,1,1,2,2,3,4,4,5,6] > 29 -rand:1/6,2/6,4/6,2/6,3/6,1/6,5/6,1/6,6/6,4/6 -============================ -input: -10D6 -output: -ParasiteBlood : (10D6) > 37[2,2,3,3,3,4,4,5,5,6] > 37 -rand:6/6,4/6,3/6,2/6,5/6,4/6,3/6,3/6,5/6,2/6 -============================ -input: -10D6 -output: -ParasiteBlood : (10D6) > 35[2,2,2,2,3,4,4,4,6,6] > 35 -rand:6/6,4/6,2/6,2/6,4/6,4/6,3/6,2/6,2/6,6/6 -============================ -input: -10D6 -output: -ParasiteBlood : (10D6) > 35[1,1,2,3,4,4,4,4,6,6] > 35 -rand:1/6,4/6,1/6,6/6,4/6,2/6,3/6,6/6,4/6,4/6 -============================ -input: -10D6 -output: -ParasiteBlood : (10D6) > 36[1,2,2,2,4,4,5,5,5,6] > 36 -rand:4/6,5/6,4/6,2/6,5/6,5/6,2/6,6/6,2/6,1/6 -============================ -input: -10D6 -output: -ParasiteBlood : (10D6) > 44[2,2,3,4,5,5,5,6,6,6] > 44 -rand:6/6,5/6,5/6,2/6,6/6,4/6,3/6,2/6,5/6,6/6 -============================ -input: -10D6 -output: -ParasiteBlood : (10D6) > 36[1,2,3,3,3,3,4,5,6,6] > 36 -rand:3/6,3/6,1/6,4/6,5/6,6/6,3/6,2/6,6/6,3/6 -============================ -input: -10D6 -output: -ParasiteBlood : (10D6) > 38[1,2,3,3,4,4,4,5,6,6] > 38 -rand:3/6,4/6,2/6,1/6,6/6,4/6,6/6,5/6,4/6,3/6 -============================ -input: -10D6 -output: -ParasiteBlood : (10D6) > 25[1,1,1,1,2,3,3,3,5,5] > 25 -rand:5/6,1/6,5/6,3/6,1/6,2/6,3/6,1/6,1/6,3/6 -============================ -input: -10D6 -output: -ParasiteBlood : (10D6) > 32[1,1,1,2,2,4,5,5,5,6] > 32 -rand:1/6,1/6,1/6,2/6,5/6,5/6,5/6,4/6,2/6,6/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-9:『前兆/10』悪魔的特徴が1ターン(10秒)目立つ。〈悪魔化〉時は影響なし。 -rand:4/6,5/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-6:『鈍感/ 0』衝動に気が付かない。影響なし。 -rand:4/6,2/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-11:『拒絶/10』〈悪魔化〉が解除される。通常時は影響なし。 -rand:6/6,5/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-9:『前兆/10』悪魔的特徴が1ターン(10秒)目立つ。〈悪魔化〉時は影響なし。 -rand:4/6,5/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-7:『抑制/ 0』衝動を抑制した。影響なし。 -rand:4/6,3/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-5:『微笑/10』可笑しくてしょうがない。笑いが止まらず、そのターンの終了まで[行動不能]となる。 -rand:4/6,1/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-12:『定着/20』通常時であれば、即座に〈悪魔化〉する。肉体が〈悪魔化〉に馴染み、24時間通常時に戻れない。 -rand:6/6,6/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-10:『変化/10』利き腕や前脚のみ、2ターン(20秒)かけて〈悪魔化〉する。〈悪魔化〉時は影響なし。 -rand:6/6,4/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-7:『抑制/ 0』衝動を抑制した。影響なし。 -rand:5/6,2/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-3:『暗闇/20』視神経に悪影響が出て、24時間[暗闇]になる。 -rand:1/6,2/6 -============================ -input: -urge5 -output: -ParasiteBlood : 衝動表5-5:『顕現/20』利き腕や前脚がさらに外骨格化し、肉体に強い負荷がかかる。【衝動】を3蓄積 -rand:2/6,3/6 -============================ -input: -urge5 -output: -ParasiteBlood : 衝動表5-6:『好機/20』チャンスに本能が素早く反応。即座に[タイミング:攻撃]の行動を1回だけ行える。 -rand:4/6,2/6 -============================ -input: -urge5 -output: -ParasiteBlood : 衝動表5-6:『好機/20』チャンスに本能が素早く反応。即座に[タイミング:攻撃]の行動を1回だけ行える。 -rand:1/6,5/6 -============================ -input: -urge5 -output: -ParasiteBlood : 衝動表5-12:『絶望/30』全身が絶望に満たされ、全てを破壊したくなる。次のターンの終了まで、ダメージに+15。 -rand:6/6,6/6 -============================ -input: -urge5 -output: -ParasiteBlood : 衝動表5-5:『顕現/20』利き腕や前脚がさらに外骨格化し、肉体に強い負荷がかかる。【衝動】を3蓄積 -rand:4/6,1/6 -============================ -input: -urge5 -output: -ParasiteBlood : 衝動表5-9:『暴君/20』自分が最強に思えてしょうがない。60ターン(10分)の間、【行動値】とダメージに+5。 -rand:5/6,4/6 -============================ -input: -urge5 -output: -ParasiteBlood : 衝動表5-5:『顕現/20』利き腕や前脚がさらに外骨格化し、肉体に強い負荷がかかる。【衝動】を3蓄積 -rand:1/6,4/6 -============================ -input: -urge5 -output: -ParasiteBlood : 衝動表5-9:『暴君/20』自分が最強に思えてしょうがない。60ターン(10分)の間、【行動値】とダメージに+5。 -rand:4/6,5/6 -============================ -input: -urge5 -output: -ParasiteBlood : 衝動表5-5:『顕現/20』利き腕や前脚がさらに外骨格化し、肉体に強い負荷がかかる。【衝動】を3蓄積 -rand:4/6,1/6 -============================ -input: -urge5 -output: -ParasiteBlood : 衝動表5-12:『絶望/30』全身が絶望に満たされ、全てを破壊したくなる。次のターンの終了まで、ダメージに+15。 -rand:6/6,6/6 -============================ -input: -Surge2 -output: -ParasiteBlood : 衝動表2-6:『限界/10』溢れる力が限界を超え、全身の血管が破裂。【エナジー】を5消費。###secret dice### -rand:4/6,2/6 -============================ -input: -Surge2 -output: -ParasiteBlood : 衝動表2-10:『我慢/ 0』衝動を我慢した。影響なし。###secret dice### -rand:5/6,5/6 -============================ -input: -Surge2 -output: -ParasiteBlood : 衝動表2-5:『落涙/10』過去の悲しい想い出が去来し、涙が溢れる。そのターンの終了まで[タイミング:準備]を行えない。###secret dice### -rand:2/6,3/6 -============================ -input: -Surge2 -output: -ParasiteBlood : 衝動表2-7:『辛抱/10』突如全身が〈悪魔化〉しようとしたが、意思の力で抑制。【エナジー】を5消費。〈悪魔化〉時は影響なし。###secret dice### -rand:6/6,1/6 -============================ -input: -Surge2 -output: -ParasiteBlood : 衝動表2-11:『嫉妬/10』最も近くの対象に猛烈な嫉妬を感じ、[距離:移動10m/対象:1体]に通常肉弾攻撃を行う。###secret dice### -rand:6/6,5/6 -============================ -input: -Surge2 -output: -ParasiteBlood : 衝動表2-6:『限界/10』溢れる力が限界を超え、全身の血管が破裂。【エナジー】を5消費。###secret dice### -rand:3/6,3/6 -============================ -input: -Surge2 -output: -ParasiteBlood : 衝動表2-8:『忍耐/ 0』衝動に耐えた。影響なし。###secret dice### -rand:6/6,2/6 -============================ -input: -Surge2 -output: -ParasiteBlood : 衝動表2-8:『忍耐/ 0』衝動に耐えた。影響なし。###secret dice### -rand:5/6,3/6 -============================ -input: -Surge2 -output: -ParasiteBlood : 衝動表2-4:『苦痛/20』"悪魔寄生体"が体内で暴れる。苦痛を感じ、【エナジー】を10消費。###secret dice### -rand:1/6,3/6 -============================ -input: -Surge2 -output: -ParasiteBlood : 衝動表2-10:『我慢/ 0』衝動を我慢した。影響なし。###secret dice### -rand:4/6,6/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-10:『変化/10』利き腕や前脚のみ、2ターン(20秒)かけて〈悪魔化〉する。〈悪魔化〉時は影響なし。 -rand:6/6,4/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-7:『抑制/ 0』衝動を抑制した。影響なし。 -rand:5/6,2/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-9:『前兆/10』悪魔的特徴が1ターン(10秒)目立つ。〈悪魔化〉時は影響なし。 -rand:4/6,5/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-10:『変化/10』利き腕や前脚のみ、2ターン(20秒)かけて〈悪魔化〉する。〈悪魔化〉時は影響なし。 -rand:6/6,4/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-5:『微笑/10』可笑しくてしょうがない。笑いが止まらず、そのターンの終了まで[行動不能]となる。 -rand:3/6,2/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-10:『変化/10』利き腕や前脚のみ、2ターン(20秒)かけて〈悪魔化〉する。〈悪魔化〉時は影響なし。 -rand:6/6,4/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-5:『微笑/10』可笑しくてしょうがない。笑いが止まらず、そのターンの終了まで[行動不能]となる。 -rand:2/6,3/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-9:『前兆/10』悪魔的特徴が1ターン(10秒)目立つ。〈悪魔化〉時は影響なし。 -rand:5/6,4/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-7:『抑制/ 0』衝動を抑制した。影響なし。 -rand:6/6,1/6 -============================ -input: -URGE1 -output: -ParasiteBlood : 衝動表1-7:『抑制/ 0』衝動を抑制した。影響なし。 -rand:5/6,2/6 -============================ -input: -NURGE1 -output: -ParasiteBlood : 衝動表1-4:『悲哀/10』突然の悲みに動きが止まる。そのターンの終了まで[行動不能]となる。 -rand:2/6,2/6 -============================ -input: -NURGE1 -output: -ParasiteBlood : 衝動表1-3:『暗闇/20』視神経に悪影響が出て、24時間[暗闇]になる。 -rand:1/6,2/6 -============================ -input: -NURGE1 -output: -ParasiteBlood : 衝動表1-5:『微笑/10』可笑しくてしょうがない。笑いが止まらず、そのターンの終了まで[行動不能]となる。 -rand:4/6,1/6 -============================ -input: -NURGE1 -output: -ParasiteBlood : 衝動表1-7:『抑制/ 0』衝動を抑制した。影響なし。 -rand:1/6,6/6 -============================ -input: -NURGE1 -output: -ParasiteBlood : 衝動表1-9:『前兆/10』悪魔的特徴が1ターン(10秒)目立つ。〈悪魔化〉時は影響なし。 -rand:3/6,6/6 -============================ -input: -NURGE1 -output: -ParasiteBlood : 衝動表1-7:『抑制/ 0』衝動を抑制した。影響なし。 -rand:4/6,3/6 -============================ -input: -NURGE1 -output: -ParasiteBlood : 衝動表1-5:『微笑/10』可笑しくてしょうがない。笑いが止まらず、そのターンの終了まで[行動不能]となる。 -rand:1/6,4/6 -============================ -input: -NURGE1 -output: -ParasiteBlood : 衝動表1-4:『悲哀/10』突然の悲みに動きが止まる。そのターンの終了まで[行動不能]となる。 -rand:3/6,1/6 -============================ -input: -NURGE1 -output: -ParasiteBlood : 衝動表1-8:『我慢/ 0』衝動を我慢した。影響なし。 -rand:4/6,4/6 -============================ -input: -NURGE1 -output: -ParasiteBlood : 衝動表1-6:『鈍感/ 0』衝動に気が付かない。影響なし。 -rand:2/6,4/6 -============================ -input: -AURGE1 -output: -ParasiteBlood : 誤作動表1-3:『動作不調/10』駆動系に異常発生。このターンのターン終了まで[行動不能]となる。 -rand:1/6,2/6 -============================ -input: -AURGE1 -output: -ParasiteBlood : 誤作動表1-7:『機能安定/0』機能がむしろ安定した。影響なし。 -rand:3/6,4/6 -============================ -input: -AURGE1 -output: -ParasiteBlood : 誤作動表1-3:『動作不調/10』駆動系に異常発生。このターンのターン終了まで[行動不能]となる。 -rand:2/6,1/6 -============================ -input: -AURGE1 -output: -ParasiteBlood : 誤作動表1-10:『離脱機能/10』異常発生。即座に[戦闘移動]を行い、最も近い敵から遠ざかるように移動する。 -rand:6/6,4/6 -============================ -input: -AURGE1 -output: -ParasiteBlood : 誤作動表1-7:『機能安定/0』機能がむしろ安定した。影響なし。 -rand:1/6,6/6 -============================ -input: -AURGE1 -output: -ParasiteBlood : 誤作動表1-2:『緊急停止/20』機能異常の警報と共に、機能が緊急停止。次のターンのターン終了時まで[行動不能]となる。 -rand:1/6,1/6 -============================ -input: -AURGE1 -output: -ParasiteBlood : 誤作動表1-9:『機能暴発/10』兵装の調子が悪化。次のターンのターン終了まで、[タイミング:準備]の《兵装》が使用できない。 -rand:6/6,3/6 -============================ -input: -AURGE1 -output: -ParasiteBlood : 誤作動表1-8:『不良調整/0』機能に違和感を覚えるが誤差の範囲内。影響なし。 -rand:6/6,2/6 -============================ -input: -AURGE1 -output: -ParasiteBlood : 誤作動表1-9:『機能暴発/10』兵装の調子が悪化。次のターンのターン終了まで、[タイミング:準備]の《兵装》が使用できない。 -rand:6/6,3/6 -============================ -input: -AURGE1 -output: -ParasiteBlood : 誤作動表1-9:『機能暴発/10』兵装の調子が悪化。次のターンのターン終了まで、[タイミング:準備]の《兵装》が使用できない。 -rand:3/6,6/6 -============================ -input: -AURGE2 -output: -ParasiteBlood : 誤作動表2-6:『視界不良/10』視覚機能に異常発生。60ターン(10分)の間、【幸運】判定の達成値に-2。 -rand:4/6,2/6 -============================ -input: -AURGE2 -output: -ParasiteBlood : 誤作動表2-5:『感覚異常/10』感覚機能に異常発生。60ターン(10分)の間、【感覚】判定の達成値に-2。 -rand:3/6,2/6 -============================ -input: -AURGE2 -output: -ParasiteBlood : 誤作動表2-9:『援護不通/10』援護ソフトが誤作動。60ターン(10分)の間、【知力】判定の達成値に-2。 -rand:3/6,6/6 -============================ -input: -AURGE2 -output: -ParasiteBlood : 誤作動表2-2:『安全機能/20』セーフティが誤動作。このターンのターン終了まで判定の達成値に-5。 -rand:1/6,1/6 -============================ -input: -AURGE2 -output: -ParasiteBlood : 誤作動表2-5:『感覚異常/10』感覚機能に異常発生。60ターン(10分)の間、【感覚】判定の達成値に-2。 -rand:3/6,2/6 -============================ -input: -AURGE2 -output: -ParasiteBlood : 誤作動表2-10:『発声不調/20』通話機能に異常。60ターン(10分)の間、声を出しても雑音だらけになって意味が通じず、さらに【精神】判定の達成値に-2。 -rand:5/6,5/6 -============================ -input: -AURGE2 -output: -ParasiteBlood : 誤作動表2-6:『視界不良/10』視覚機能に異常発生。60ターン(10分)の間、【幸運】判定の達成値に-2。 -rand:3/6,3/6 -============================ -input: -AURGE2 -output: -ParasiteBlood : 誤作動表2-9:『援護不通/10』援護ソフトが誤作動。60ターン(10分)の間、【知力】判定の達成値に-2。 -rand:4/6,5/6 -============================ -input: -AURGE2 -output: -ParasiteBlood : 誤作動表2-8:『不良調整/0』機能に違和感を覚えるが誤差の範囲内。影響なし。 -rand:5/6,3/6 -============================ -input: -AURGE2 -output: -ParasiteBlood : 誤作動表2-6:『視界不良/10』視覚機能に異常発生。60ターン(10分)の間、【幸運】判定の達成値に-2。 -rand:2/6,4/6 -============================ -input: -AURGE3 -output: -ParasiteBlood : 誤作動表3-5:『出力向上/20』突然出力が上昇する。次のターンのターン終了まで、特殊ダメージに+1d。 -rand:4/6,1/6 -============================ -input: -AURGE3 -output: -ParasiteBlood : 誤作動表3-7:『障壁減衰/10』電力が減衰する。【電力】を5消費する。 -rand:2/6,5/6 -============================ -input: -AURGE3 -output: -ParasiteBlood : 誤作動表3-6:『機能制動/10』一瞬違和感を覚えるが、以後正常に動作。影響なし。 -rand:3/6,3/6 -============================ -input: -AURGE3 -output: -ParasiteBlood : 誤作動表3-12:『電子賦活/20』電磁障壁が突如復帰。【電力】が10回復する。 -rand:6/6,6/6 -============================ -input: -AURGE3 -output: -ParasiteBlood : 誤作動表3-4:『足下転倒/20』バランサーに異常発生。[転倒]状態となる。 -rand:3/6,1/6 -============================ -input: -AURGE3 -output: -ParasiteBlood : 誤作動表3-9:『精度向上/20』火器管制機能が向上。次のターンのターン終了まで、射撃ダメージに+1d。 -rand:3/6,6/6 -============================ -input: -AURGE3 -output: -ParasiteBlood : 誤作動表3-10:『反射鋭化/20』反応速度が加速した。次のターンのターン終了まで、【行動値】に+5。 -rand:5/6,5/6 -============================ -input: -AURGE3 -output: -ParasiteBlood : 誤作動表3-4:『足下転倒/20』バランサーに異常発生。[転倒]状態となる。 -rand:1/6,3/6 -============================ -input: -AURGE3 -output: -ParasiteBlood : 誤作動表3-7:『障壁減衰/10』電力が減衰する。【電力】を5消費する。 -rand:1/6,6/6 -============================ -input: -AURGE3 -output: -ParasiteBlood : 誤作動表3-6:『機能制動/10』一瞬違和感を覚えるが、以後正常に動作。影響なし。 -rand:1/6,5/6 -============================ -input: -AURGE4 -output: -ParasiteBlood : 誤作動表4-7:『電流加速/10』突然電磁障壁が効率的に流れる。【電力】が10回復。 -rand:1/6,6/6 -============================ -input: -AURGE4 -output: -ParasiteBlood : 誤作動表4-7:『電流加速/10』突然電磁障壁が効率的に流れる。【電力】が10回復。 -rand:2/6,5/6 -============================ -input: -AURGE4 -output: -ParasiteBlood : 誤作動表4-6:『音声遮断/10』聴覚機能に異常発生。次のターンのターン終了まで一切の物音が聞こえず、回避判定の達成値に-5。 -rand:2/6,4/6 -============================ -input: -AURGE4 -output: -ParasiteBlood : 誤作動表4-8:『精密射撃/20』照準機能が向上。60ターン(10分間)の間、ダメージに+5。 -rand:2/6,6/6 -============================ -input: -AURGE4 -output: -ParasiteBlood : 誤作動表4-6:『音声遮断/10』聴覚機能に異常発生。次のターンのターン終了まで一切の物音が聞こえず、回避判定の達成値に-5。 -rand:2/6,4/6 -============================ -input: -AURGE4 -output: -ParasiteBlood : 誤作動表4-6:『音声遮断/10』聴覚機能に異常発生。次のターンのターン終了まで一切の物音が聞こえず、回避判定の達成値に-5。 -rand:4/6,2/6 -============================ -input: -AURGE4 -output: -ParasiteBlood : 誤作動表4-5:『自動援護/20』援護機能が自動的に作動する。即座に[タイミング:準備]を1回行う。 -rand:4/6,1/6 -============================ -input: -AURGE4 -output: -ParasiteBlood : 誤作動表4-6:『音声遮断/10』聴覚機能に異常発生。次のターンのターン終了まで一切の物音が聞こえず、回避判定の達成値に-5。 -rand:2/6,4/6 -============================ -input: -AURGE4 -output: -ParasiteBlood : 誤作動表4-7:『電流加速/10』突然電磁障壁が効率的に流れる。【電力】が10回復。 -rand:3/6,4/6 -============================ -input: -AURGE4 -output: -ParasiteBlood : 誤作動表4-4:『機内窒息/20』呼吸機能に異常。次のターンのターン終了まで[窒息]状態となる。 -rand:2/6,2/6 -============================ -input: -AURGE5 -output: -ParasiteBlood : 誤作動表5-5:『急速修復/20』電磁障壁と生命維持装置が高速処理を始める。【HP】が20回復。 -rand:3/6,2/6 -============================ -input: -AURGE5 -output: -ParasiteBlood : 誤作動表5-5:『急速修復/20』電磁障壁と生命維持装置が高速処理を始める。【HP】が20回復。 -rand:4/6,1/6 -============================ -input: -AURGE5 -output: -ParasiteBlood : 誤作動表5-9:『排毒噴出/20』排気機構が誤作動。[対象:半径5m全て]が次のターンのターン終了まで[猛毒]状態となる。 -rand:3/6,6/6 -============================ -input: -AURGE5 -output: -ParasiteBlood : 誤作動表5-8:『機体減速/20』運動機能が暴走。次のターンのターン終了まで【行動値】に-10(最低1)。 -rand:4/6,4/6 -============================ -input: -AURGE5 -output: -ParasiteBlood : 誤作動表5-6:『駆動不調/20』駆動系に動作不良。次のターンのターン終了まで、判定の達成値に-5。 -rand:2/6,4/6 -============================ -input: -AURGE5 -output: -ParasiteBlood : 誤作動表5-9:『排毒噴出/20』排気機構が誤作動。[対象:半径5m全て]が次のターンのターン終了まで[猛毒]状態となる。 -rand:3/6,6/6 -============================ -input: -AURGE5 -output: -ParasiteBlood : 誤作動表5-7:『機体清冽/20』機能が初期化され、異常から復帰。[気絶・死亡・戦闘不能]以外の状態変化がすべて解除される。 -rand:6/6,1/6 -============================ -input: -AURGE5 -output: -ParasiteBlood : 誤作動表5-4:『電力低下/20』出力が上がらない。【電力】が20減少する。 -rand:1/6,3/6 -============================ -input: -AURGE5 -output: -ParasiteBlood : 誤作動表5-4:『電力低下/20』出力が上がらない。【電力】が20減少する。 -rand:1/6,3/6 -============================ -input: -AURGE5 -output: -ParasiteBlood : 誤作動表5-7:『機体清冽/20』機能が初期化され、異常から復帰。[気絶・死亡・戦闘不能]以外の状態変化がすべて解除される。 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/Pathfinder.txt b/src/src_bcdice/test/data/Pathfinder.txt deleted file mode 100644 index d5f0e4f50..000000000 --- a/src/src_bcdice/test/data/Pathfinder.txt +++ /dev/null @@ -1,47 +0,0 @@ -input: -1D4>=3 -output: -Pathfinder : (1D4>=3) > 3 > 成功 -rand:3/4 -============================ -input: -1D6>=5 -output: -Pathfinder : (1D6>=5) > 5 > 成功 -rand:5/6 -============================ -input: -1D8>=7 -output: -Pathfinder : (1D8>=7) > 7 > 成功 -rand:7/8 -============================ -input: -1D10>=9 -output: -Pathfinder : (1D10>=9) > 9 > 成功 -rand:9/10 -============================ -input: -1D12>=11 -output: -Pathfinder : (1D12>=11) > 11 > 成功 -rand:11/12 -============================ -input: -1D20>=19 -output: -Pathfinder : (1D20>=19) > 19 > 成功 -rand:19/20 -============================ -input: -(1+2)D10+3>=12 -output: -Pathfinder : (3D10+3>=12) > 12[3,4,5]+3 > 15 > 成功 -rand:3/10,4/10,5/10 -============================ -input: -S1D10>=10 -output: -Pathfinder : (1D10>=10) > 9 > 失敗###secret dice### -rand:9/10 diff --git a/src/src_bcdice/test/data/Peekaboo.txt b/src/src_bcdice/test/data/Peekaboo.txt deleted file mode 100644 index 3a9267c21..000000000 --- a/src/src_bcdice/test/data/Peekaboo.txt +++ /dev/null @@ -1,629 +0,0 @@ -input: -2d6>=4 -output: -Peekaboo : (2D6>=4) > 6[2,4] > 6 > 成功 -rand:2/6,4/6 -============================ -input: -2d6>=4 -output: -Peekaboo : (2D6>=4) > 3[1,2] > 3 > 失敗 -rand:2/6,1/6 -============================ -input: -2d6>=4 -output: -Peekaboo : (2D6>=4) > 6[2,4] > 6 > 成功 -rand:2/6,4/6 -============================ -input: -2d6>=4 -output: -Peekaboo : (2D6>=4) > 6[3,3] > 6 > 成功 -rand:3/6,3/6 -============================ -input: -2d6>=4 -output: -Peekaboo : (2D6>=4) > 7[2,5] > 7 > 成功 -rand:5/6,2/6 -============================ -input: -2d6>=4 -output: -Peekaboo : (2D6>=4) > 11[5,6] > 11 > 成功 -rand:6/6,5/6 -============================ -input: -2d6>=4 -output: -Peekaboo : (2D6>=4) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2d6>=4 -output: -Peekaboo : (2D6>=4) > 8[2,6] > 8 > 成功 -rand:2/6,6/6 -============================ -input: -2d6>=4 -output: -Peekaboo : (2D6>=4) > 6[2,4] > 6 > 成功 -rand:4/6,2/6 -============================ -input: -2d6>=4 -output: -Peekaboo : (2D6>=4) > 8[3,5] > 8 > 成功 -rand:5/6,3/6 -============================ -input: -2d6>=9 -output: -Peekaboo : (2D6>=9) > 10[4,6] > 10 > 成功 -rand:4/6,6/6 -============================ -input: -2d6>=9 -output: -Peekaboo : (2D6>=9) > 5[1,4] > 5 > 失敗 -rand:1/6,4/6 -============================ -input: -2d6>=9 -output: -Peekaboo : (2D6>=9) > 4[1,3] > 4 > 失敗 -rand:3/6,1/6 -============================ -input: -2d6>=9 -output: -Peekaboo : (2D6>=9) > 7[2,5] > 7 > 失敗 -rand:2/6,5/6 -============================ -input: -2d6>=9 -output: -Peekaboo : (2D6>=9) > 6[2,4] > 6 > 失敗 -rand:2/6,4/6 -============================ -input: -2d6>=9 -output: -Peekaboo : (2D6>=9) > 3[1,2] > 3 > 失敗 -rand:2/6,1/6 -============================ -input: -2d6>=9 -output: -Peekaboo : (2D6>=9) > 11[5,6] > 11 > 成功 -rand:6/6,5/6 -============================ -input: -2d6>=9 -output: -Peekaboo : (2D6>=9) > 6[1,5] > 6 > 失敗 -rand:5/6,1/6 -============================ -input: -2d6>=9 -output: -Peekaboo : (2D6>=9) > 5[2,3] > 5 > 失敗 -rand:2/6,3/6 -============================ -input: -2d6>=9 -output: -Peekaboo : (2D6>=9) > 10[4,6] > 10 > 成功 -rand:6/6,4/6 -============================ -input: -2d6>=7 -output: -Peekaboo : (2D6>=7) > 10[5,5] > 10 > 成功 -rand:5/6,5/6 -============================ -input: -2d6>=7 -output: -Peekaboo : (2D6>=7) > 8[2,6] > 8 > 成功 -rand:6/6,2/6 -============================ -input: -2d6>=7 -output: -Peekaboo : (2D6>=7) > 9[3,6] > 9 > 成功 -rand:6/6,3/6 -============================ -input: -2d6>=7 -output: -Peekaboo : (2D6>=7) > 3[1,2] > 3 > 失敗 -rand:2/6,1/6 -============================ -input: -2d6>=7 -output: -Peekaboo : (2D6>=7) > 9[3,6] > 9 > 成功 -rand:6/6,3/6 -============================ -input: -2d6>=7 -output: -Peekaboo : (2D6>=7) > 5[2,3] > 5 > 失敗 -rand:3/6,2/6 -============================ -input: -2d6>=7 -output: -Peekaboo : (2D6>=7) > 6[2,4] > 6 > 失敗 -rand:4/6,2/6 -============================ -input: -2d6>=7 -output: -Peekaboo : (2D6>=7) > 5[1,4] > 5 > 失敗 -rand:4/6,1/6 -============================ -input: -2d6>=7 -output: -Peekaboo : (2D6>=7) > 4[2,2] > 4 > 失敗 -rand:2/6,2/6 -============================ -input: -2d6>=7 -output: -Peekaboo : (2D6>=7) > 5[1,4] > 5 > 失敗 -rand:1/6,4/6 -============================ -input: -SET -output: -Peekaboo : 学校イベント表(11[6,5]) > 体操服や水着、宿題に提出物などなど、今日は学校に持ってこないといけないものがあったはず!《計画性/大人7》で判定を行う。失敗すると、先生に怒られてしょんぼり。【眠気】が1d6点増える。 -rand:6/6,5/6 -============================ -input: -SET -output: -Peekaboo : 学校イベント表(5[1,4]) > 明日までの宿題を出される。イノセント全員は、明日までに宿題を終わらせないといけない。宿題を終わらせるためには、各サイクルの終わりに、《宿題/勉強7》の判定を行い、それに成功しなければいけない。宿題を次の日の学校フェイズまでに終わらせることができなかった場合は、居残り勉強させられる。その日の放課後フェイズの最初のサイクルは、1回休み。 -rand:1/6,4/6 -============================ -input: -SET -output: -Peekaboo : 学校イベント表(7[2,5]) > 特に変わったこともなく、おだやかな一日だった。イノセント全員は、【眠気】が1点増える。 -rand:2/6,5/6 -============================ -input: -SET -output: -Peekaboo : 学校イベント表(8[6,2]) > 今日の体育の時間はハードだった! GMは、「運動」の分野の中からランダムに特技1つを選ぶ。イノセント全員は、その判定を行う。失敗したキャラクターは、【眠気】が1d6点増える。 -rand:6/6,2/6 -============================ -input: -SET -output: -Peekaboo : 学校イベント表(6[5,1]) > 今日も今日とて楽しい授業。GMは、「勉強」の分野の中からランダムに特技1つを選ぶ。イノセント全員は、その判定を行う。失敗したキャラクターは【眠気】が1d6点増える。 -rand:5/6,1/6 -============================ -input: -SET -output: -Peekaboo : 学校イベント表(6[4,2]) > 今日も今日とて楽しい授業。GMは、「勉強」の分野の中からランダムに特技1つを選ぶ。イノセント全員は、その判定を行う。失敗したキャラクターは【眠気】が1d6点増える。 -rand:4/6,2/6 -============================ -input: -SET -output: -Peekaboo : 学校イベント表(6[2,4]) > 今日も今日とて楽しい授業。GMは、「勉強」の分野の中からランダムに特技1つを選ぶ。イノセント全員は、その判定を行う。失敗したキャラクターは【眠気】が1d6点増える。 -rand:2/6,4/6 -============================ -input: -SET -output: -Peekaboo : 学校イベント表(4[3,1]) > とても退屈な授業が始まった。イノセント全員は、《いねむり/不良3》の判定を行う。失敗したキャラクターは、【眠気】が1d6+1点増える。 -rand:3/6,1/6 -============================ -input: -SET -output: -Peekaboo : 学校イベント表(11[5,6]) > 体操服や水着、宿題に提出物などなど、今日は学校に持ってこないといけないものがあったはず!《計画性/大人7》で判定を行う。失敗すると、先生に怒られてしょんぼり。【眠気】が1d6点増える。 -rand:5/6,6/6 -============================ -input: -SET -output: -Peekaboo : 学校イベント表(3[1,2]) > クラスで流行っている遊びに誘われる。GMは、「遊び」の分野の中からランダムに特技一つを選ぶ。イノセント全員は、その判定を行う。失敗したキャラクターは、【眠気】が1d6点増える。 -rand:1/6,2/6 -============================ -input: -SET -output: -Peekaboo : 学校イベント表(6[4,2]) > 今日も今日とて楽しい授業。GMは、「勉強」の分野の中からランダムに特技1つを選ぶ。イノセント全員は、その判定を行う。失敗したキャラクターは【眠気】が1d6点増える。 -rand:4/6,2/6 -============================ -input: -PSET -output: -Peekaboo : 個別学校イベント表(6[1,5]) > 今日はクラブ活動があった。次のサイクルは行動できなくなる。その代わり、好きな特技1つを選ぶ。このセッションの間、その特技の判定を行うとき+1の修正がつく。 -rand:1/6,5/6 -============================ -input: -PSET -output: -Peekaboo : 個別学校イベント表(6[1,5]) > 今日はクラブ活動があった。次のサイクルは行動できなくなる。その代わり、好きな特技1つを選ぶ。このセッションの間、その特技の判定を行うとき+1の修正がつく。 -rand:1/6,5/6 -============================ -input: -PSET -output: -Peekaboo : 個別学校イベント表(7[5,2]) > 授業中、先生がとても難しい問題を出してくる。GMは、「勉強」の分野からランダムに特技を1つ選ぶ。その判定を行うこと。成功すると、経験値を1点獲得する。 -rand:5/6,2/6 -============================ -input: -PSET -output: -Peekaboo : 個別学校イベント表(5[3,2]) > 友達から遊ぼうと誘われる。その日の放課後フェイズに、クラスメイト1d6人と「みんなで遊ぶ」ことができる。これを断る場合は、《優しさ/友達4》で判定を行うこと。失敗するとこれ以降、「みんなで遊ぶ」を行うとき、友達を誘うことが出来なくなる。 -rand:3/6,2/6 -============================ -input: -PSET -output: -Peekaboo : 個別学校イベント表(7[1,6]) > 授業中、先生がとても難しい問題を出してくる。GMは、「勉強」の分野からランダムに特技を1つ選ぶ。その判定を行うこと。成功すると、経験値を1点獲得する。 -rand:1/6,6/6 -============================ -input: -PSET -output: -Peekaboo : 個別学校イベント表(9[6,3]) > 校庭や体育館など、自分達の遊び場が他のグループに占拠されている。《けんか/不良12》で判定を行うこと。成功すると、それ以降「友達」の分野の判定に+1の修正を受ける。失敗すると遊び場を失ってしまう。1ダメージを受け、それ以降、「友達と遊ぶ」ことができなくなってしまう。 -rand:6/6,3/6 -============================ -input: -PSET -output: -Peekaboo : 個別学校イベント表(10[6,4]) > いじめの現場に出くわす! 《勇気/友達10》の判定に成功すると、いじめっこを撃退することができる。いじめられていた子が、お礼にお菓子を1個くれる。失敗すると1点のダメージを受ける。 -rand:6/6,4/6 -============================ -input: -PSET -output: -Peekaboo : 個別学校イベント表(6[1,5]) > 今日はクラブ活動があった。次のサイクルは行動できなくなる。その代わり、好きな特技1つを選ぶ。このセッションの間、その特技の判定を行うとき+1の修正がつく。 -rand:1/6,5/6 -============================ -input: -PSET -output: -Peekaboo : 個別学校イベント表(4[1,3]) > 今日の給食には、どうしても苦手な食べ物が出てきた。《勇気/友達9》で判定を行うこと。成功すると、苦手な食べ物を克服し、気分爽快!【眠気】を1d6点回復するか、【元気】を1点回復することができる。 -rand:1/6,3/6 -============================ -input: -PSET -output: -Peekaboo : 個別学校イベント表(7[2,5]) > 授業中、先生がとても難しい問題を出してくる。GMは、「勉強」の分野からランダムに特技を1つ選ぶ。その判定を行うこと。成功すると、経験値を1点獲得する。 -rand:2/6,5/6 -============================ -input: -OET -output: -Peekaboo : お化け屋敷イベント表(8[2,6]) > 通路が途中で途切れて崖のようになっている。誰かが飛ぶことが出来れば、向こう岸にあるはしごを断崖にかけられそうだけど……。未行動のキャラクターは、《とぶ/運動6》の判定を行うことができる。判定したキャラクターは行動済みになる。誰かが成功すれば、イベントはクリアできる。 -rand:2/6,6/6 -============================ -input: -OET -output: -Peekaboo : お化け屋敷イベント表(5[2,3]) > 行き止まりだ。先に進む方法が分からない。未行動のキャラクターは、《推理/大人6》の判定を行うことができる。判定したキャラクターは行動済みになる。誰かが成功したら、イベントはクリアできる。 -rand:2/6,3/6 -============================ -input: -OET -output: -Peekaboo : お化け屋敷イベント表(7[3,4]) > ジメジメした通路だ。特に何もしなくても、イベントはクリアだ。誰かがのぞむなら、自由行動を1回行うことができるぞ。 -rand:3/6,4/6 -============================ -input: -OET -output: -Peekaboo : お化け屋敷イベント表(11[6,5]) > シャドウが見回りをしている。未行動のキャラクターのうち1人が、《隠れる/不良9》の判定を行う。成功すれば、イベントはクリアできる。失敗すると、プレイヤーと同じ人数のシャドウと戦闘を行うこと。勝利すればイベントはクリアできる。 -rand:6/6,5/6 -============================ -input: -OET -output: -Peekaboo : お化け屋敷イベント表(3[1,2]) > 天井から血の雨が降ってくる! この雨に触れると火傷しちゃうみたいだ!【防御力】が0のスプーキーとイノセントは、《かけっこ/運動7》の判定を行う。失敗すると、イノセントは1ダメージ、スプーキーは1d6ダメージを受ける。成功・失敗にかかわらず、イベントはクリアできる。 -rand:1/6,2/6 -============================ -input: -OET -output: -Peekaboo : お化け屋敷イベント表(6[1,5]) > まっくらで、何も見えない部屋だ。一行は不安におちいる。未行動のキャラクターは、《仕切る/友達11》の判定を行うことができる。判定したキャラクターは行動済みになる。誰かが成功すれば、イベントはクリアできる。 -rand:1/6,5/6 -============================ -input: -OET -output: -Peekaboo : お化け屋敷イベント表(9[4,5]) > まぼろしの部屋だ。各キャラクターの大好物のまぼろしがつぎつぎ現れる。未行動のキャラクターは、《がまん/友達5》の判定を行うことができる。判定したキャラクターは行動済みになる。誰かが成功したら、イベントはクリアできる。 -rand:4/6,5/6 -============================ -input: -OET -output: -Peekaboo : お化け屋敷イベント表(7[3,4]) > ジメジメした通路だ。特に何もしなくても、イベントはクリアだ。誰かがのぞむなら、自由行動を1回行うことができるぞ。 -rand:3/6,4/6 -============================ -input: -OET -output: -Peekaboo : お化け屋敷イベント表(7[5,2]) > ジメジメした通路だ。特に何もしなくても、イベントはクリアだ。誰かがのぞむなら、自由行動を1回行うことができるぞ。 -rand:5/6,2/6 -============================ -input: -IBT -output: -Peekaboo : イノセント用バタンキュー!表(1[1]) > 悲しい別れ。病院につれていくことができれば、1d6日入院したあとに目覚めます。その間は、行動不能です。目覚めたときに【眠気】も【元気】もすべて回復しますが、スプーキーを見ることができなくなっています。そのキャラクターはスプーキーと一緒に冒険を続けることはできません……。 -rand:1/6 -============================ -input: -IBT -output: -Peekaboo : イノセント用バタンキュー!表(4[4]) > 体が動かない! 何かを見たり、話したりといった簡単な行動ならできますが、自由行動や戦闘行動といった通常の行動は行えません。1d6サイクル後に【元気】が1点回復し、通常通り行動できるようになります。 -rand:4/6 -============================ -input: -IBT -output: -Peekaboo : イノセント用バタンキュー!表(3[3]) > 気絶しちゃった! 1d6サイクル後に目覚めます。気絶している間は、行動不能です。目覚めたときに【眠気】が1d6点、【元気】が1点回復します。 -rand:3/6 -============================ -input: -IBT -output: -Peekaboo : イノセント用バタンキュー!表(3[3]) > 気絶しちゃった! 1d6サイクル後に目覚めます。気絶している間は、行動不能です。目覚めたときに【眠気】が1d6点、【元気】が1点回復します。 -rand:3/6 -============================ -input: -IBT -output: -Peekaboo : イノセント用バタンキュー!表(4[4]) > 体が動かない! 何かを見たり、話したりといった簡単な行動ならできますが、自由行動や戦闘行動といった通常の行動は行えません。1d6サイクル後に【元気】が1点回復し、通常通り行動できるようになります。 -rand:4/6 -============================ -input: -IBT -output: -Peekaboo : イノセント用バタンキュー!表(2[2]) > 大けがをして昏睡状態。病院につれていくことができれば、1d6日入院したあとに目覚めます。その間は、行動不能です。目覚めたときに【眠気】はすべて回復し、【元気】が3点回復します。 -rand:2/6 -============================ -input: -IBT -output: -Peekaboo : イノセント用バタンキュー!表(4[4]) > 体が動かない! 何かを見たり、話したりといった簡単な行動ならできますが、自由行動や戦闘行動といった通常の行動は行えません。1d6サイクル後に【元気】が1点回復し、通常通り行動できるようになります。 -rand:4/6 -============================ -input: -IBT -output: -Peekaboo : イノセント用バタンキュー!表(3[3]) > 気絶しちゃった! 1d6サイクル後に目覚めます。気絶している間は、行動不能です。目覚めたときに【眠気】が1d6点、【元気】が1点回復します。 -rand:3/6 -============================ -input: -IBT -output: -Peekaboo : イノセント用バタンキュー!表(4[4]) > 体が動かない! 何かを見たり、話したりといった簡単な行動ならできますが、自由行動や戦闘行動といった通常の行動は行えません。1d6サイクル後に【元気】が1点回復し、通常通り行動できるようになります。 -rand:4/6 -============================ -input: -SBT -output: -Peekaboo : スプーキー用バタンキュー!表(3[3]) > コバケ状態! 体は小さく縮んてしまい、重戦闘も戦闘行動も行うことはできません。【魔力】が1点以上になると、通常通り行動できるようになります。 -rand:3/6 -============================ -input: -SBT -output: -Peekaboo : スプーキー用バタンキュー!表(2[2]) > 休眠状態! オバケは休眠状態になります。1d6日が経過すると目覚めます。その間は、行動不能です。目覚めたときに【魔力】はすべて回復しています。 -rand:2/6 -============================ -input: -SBT -output: -Peekaboo : スプーキー用バタンキュー!表(1[1]) > 封印状態! オバケは封印されてしまいます。1d6*1年後になれば、そのオバケは復活します。それまでは、イノセントと一緒に冒険することはできません。できたとしても、そのときイノセントはあなたを見ることができなくなっているかもしれませんが……。 -rand:1/6 -============================ -input: -SBT -output: -Peekaboo : スプーキー用バタンキュー!表(2[2]) > 休眠状態! オバケは休眠状態になります。1d6日が経過すると目覚めます。その間は、行動不能です。目覚めたときに【魔力】はすべて回復しています。 -rand:2/6 -============================ -input: -SBT -output: -Peekaboo : スプーキー用バタンキュー!表(6[6]) > 魔法暴発! 自分の持っている魔法をランダムに1つ選んで、その効果が発動します。魔法の対象が選べる場合は、スプーキーのプレイヤーが選んで構いません。そして、1d6サイクルの間、行動不能になります。その後、【魔力】が1d6点回復して通常通り行動できるようになります。 -rand:6/6 -============================ -input: -SBT -output: -Peekaboo : スプーキー用バタンキュー!表(4[4]) > 混沌変化! 自分のリングのからだリストを使って、ランダムにからだを1つ選びます。自分のからだが、それに変化します。1d6サイクルの間、行動不能になります。その後、【魔力】が1d6点回復して通常通り行動できるようになります。 -rand:4/6 -============================ -input: -SBT -output: -Peekaboo : スプーキー用バタンキュー!表(2[2]) > 休眠状態! オバケは休眠状態になります。1d6日が経過すると目覚めます。その間は、行動不能です。目覚めたときに【魔力】はすべて回復しています。 -rand:2/6 -============================ -input: -SBT -output: -Peekaboo : スプーキー用バタンキュー!表(1[1]) > 封印状態! オバケは封印されてしまいます。1d6*1年後になれば、そのオバケは復活します。それまでは、イノセントと一緒に冒険することはできません。できたとしても、そのときイノセントはあなたを見ることができなくなっているかもしれませんが……。 -rand:1/6 -============================ -input: -NET -output: -Peekaboo : 日中ブラブラ表(2[1,1]) > 相棒のスプーキーと喧嘩する。1d6サイクルの間、自分の相棒のスプーキーは、自分に対して【お助け力】を使用することができなくなる。 -rand:1/6,1/6 -============================ -input: -NET -output: -Peekaboo : 日中ブラブラ表(12[6,6]) > 相棒のスプーキーと、素敵な時間を過ごす。そのセッションの間だけ、「武装契約」「守護契約」「強化契約」「同調契約」のいずれか一つを結ぶことができる。 -rand:6/6,6/6 -============================ -input: -SAT -output: -Peekaboo : オバケ行動表(2[1,1]) > 「えー。お前なんか嫌いだ!」スプーキーは、イノセントとけんかしてしまいます。そのサイクルは行動せず、【魔力】も回復しません。 -rand:1/6,1/6 -============================ -input: -SAT -output: -Peekaboo : オバケ行動表(5[1,4]) > 「やっぱ定番はこうでしょう」スプーキーは、戦闘フェイズなら「攻撃」を行います。それ以外なら「調査」を行います。 -rand:1/6,4/6 -============================ -input: -SAT -output: -Peekaboo : オバケ行動表(12[6,6]) > 「こうなりゃ本気モードだ!」スプーキーは自分の契約しているイノセントのいうことをききます。また、そのサイクルの間、そのスプーキーは魔力の消費なしで、魔法を使用することができます。 -rand:6/6,6/6 -============================ -input: -STT -output: -Peekaboo : オバケぶらり旅表(2[1,1]) > オバケ狩りに遭遇してしまいますオバケ判定を行ってください。失敗すると2d6点のダメージを受けます。 -rand:1/6,1/6 -============================ -input: -STT -output: -Peekaboo : オバケぶらり旅表(8[5,3]) > 人間について学習します。オバケ判定を行って下さい。成功すると、ランダムに好きな特技を1つ選びます。そのゲームの間、その特技を習得しているものとして、行為判定を行うことができるようになります。 -rand:5/6,3/6 -============================ -input: -STT -output: -Peekaboo : オバケぶらり旅表(12[6,6]) > オバケ狩りから身を隠すために変装します。自分の衣装1つを未取得にします。そして、共用か自分のリングの衣装から、ランダムに衣装を1つ選び、新たに修得します。 -rand:6/6,6/6 -============================ -input: -NST -output: -Peekaboo : 仲間効果表(1[1]) > 用心棒。この仲間の効果は、誰かがダメージを受けた時に使用できる。そのダメージを無効化する。 -rand:1/6 -============================ -input: -NST -output: -Peekaboo : 仲間効果表(4[4]) > 師匠。この仲間の効果は、好きな時に使用できる。そのNPCが人間の場合、ランダムに選んだ才能を一つ獲得する。この効果は、その日の終りまで持続する。そのNPCがオバケの場合、そのオバケが修得している好きな魔法を一つ使用する。 -rand:4/6 -============================ -input: -NST -output: -Peekaboo : 仲間効果表(6[6]) > 乱入行動。自分が攻撃に成功した時に使用できる。そのダメージを1d6点上昇してくれる。 -rand:6/6 -============================ -input: -RTT -output: -Peekaboo : ランダム指定特技表(1,2) > 《夜更かし/不良2》 -rand:1/6,1/6,1/6 -============================ -input: -RTT -output: -Peekaboo : ランダム指定特技表(5,6) > 《計算/勉強6》 -rand:5/6,2/6,4/6 -============================ -input: -RTT -output: -Peekaboo : ランダム指定特技表(6,9) > 《お買い物/大人9》 -rand:6/6,3/6,6/6 -============================ -input: -RTT -output: -Peekaboo : ランダム指定特技表(6,12) > 《道楽/大人12》 -rand:6/6,6/6,6/6 -============================ -input: -TNT -output: -Peekaboo : 指定特技(不良)表(2[1,1]) > 《夜更かし/不良2》 -rand:1/6,1/6 -============================ -input: -TNT -output: -Peekaboo : 指定特技(不良)表(12[6,6]) > 《けんか/不良12》 -rand:6/6,6/6 -============================ -input: -TET -output: -Peekaboo : 指定特技(運動)表(2[1,1]) > 《泳ぐ/運動2》 -rand:1/6,1/6 -============================ -input: -TET -output: -Peekaboo : 指定特技(運動)表(12[6,6]) > 《力持ち/運動12》 -rand:6/6,6/6 -============================ -input: -TFT -output: -Peekaboo : 指定特技(友達)表(2[1,1]) > 《ネット/友達2》 -rand:1/6,1/6 -============================ -input: -TFT -output: -Peekaboo : 指定特技(友達)表(12[6,6]) > 《秘密基地/友達12》 -rand:6/6,6/6 -============================ -input: -TPT -output: -Peekaboo : 指定特技(遊び)表(2[1,1]) > 《パソコン/遊び2》 -rand:1/6,1/6 -============================ -input: -TPT -output: -Peekaboo : 指定特技(遊び)表(12[6,6]) > 《占い/遊び12》 -rand:6/6,6/6 -============================ -input: -TST -output: -Peekaboo : 指定特技(勉強)表(2[1,1]) > 《実験/勉強2》 -rand:1/6,1/6 -============================ -input: -TST -output: -Peekaboo : 指定特技(勉強)表(12[6,6]) > 《外国語/勉強12》 -rand:6/6,6/6 -============================ -input: -TAT -output: -Peekaboo : 指定特技(大人)表(2[1,1]) > 《法律/大人2》 -rand:1/6,1/6 -============================ -input: -TAT -output: -Peekaboo : 指定特技(大人)表(12[6,6]) > 《道楽/大人12》 -rand:6/6,6/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -Peekaboo : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/Pendragon.txt b/src/src_bcdice/test/data/Pendragon.txt deleted file mode 100644 index 90cef96ee..000000000 --- a/src/src_bcdice/test/data/Pendragon.txt +++ /dev/null @@ -1,185 +0,0 @@ -input: -1D20<=2 -output: -Pendragon : (1D20<=2) > 19 > 失敗 -rand:19/20 -============================ -input: -1D20<=2 -output: -Pendragon : (1D20<=2) > 9 > 失敗 -rand:9/20 -============================ -input: -1D20<=2 -output: -Pendragon : (1D20<=2) > 12 > 失敗 -rand:12/20 -============================ -input: -1D20<=2 -output: -Pendragon : (1D20<=2) > 8 > 失敗 -rand:8/20 -============================ -input: -1D20<=2 -output: -Pendragon : (1D20<=2) > 16 > 失敗 -rand:16/20 -============================ -input: -1D20<=2 -output: -Pendragon : (1D20<=2) > 17 > 失敗 -rand:17/20 -============================ -input: -1D20<=2 -output: -Pendragon : (1D20<=2) > 18 > 失敗 -rand:18/20 -============================ -input: -1D20<=2 -output: -Pendragon : (1D20<=2) > 15 > 失敗 -rand:15/20 -============================ -input: -1D20<=2 -output: -Pendragon : (1D20<=2) > 17 > 失敗 -rand:17/20 -============================ -input: -1D20<=2 -output: -Pendragon : (1D20<=2) > 1 > 成功 -rand:1/20 -============================ -input: -1D20<=19 -output: -Pendragon : (1D20<=19) > 13 > 成功 -rand:13/20 -============================ -input: -1D20<=19 -output: -Pendragon : (1D20<=19) > 6 > 成功 -rand:6/20 -============================ -input: -1D20<=19 -output: -Pendragon : (1D20<=19) > 13 > 成功 -rand:13/20 -============================ -input: -1D20<=19 -output: -Pendragon : (1D20<=19) > 1 > 成功 -rand:1/20 -============================ -input: -1D20<=19 -output: -Pendragon : (1D20<=19) > 3 > 成功 -rand:3/20 -============================ -input: -1D20<=19 -output: -Pendragon : (1D20<=19) > 6 > 成功 -rand:6/20 -============================ -input: -1D20<=19 -output: -Pendragon : (1D20<=19) > 13 > 成功 -rand:13/20 -============================ -input: -1D20<=19 -output: -Pendragon : (1D20<=19) > 5 > 成功 -rand:5/20 -============================ -input: -1D20<=19 -output: -Pendragon : (1D20<=19) > 13 > 成功 -rand:13/20 -============================ -input: -1D20<=19 -output: -Pendragon : (1D20<=19) > 9 > 成功 -rand:9/20 -============================ -input: -1D20<=10 -output: -Pendragon : (1D20<=10) > 7 > 成功 -rand:7/20 -============================ -input: -1D20<=10 -output: -Pendragon : (1D20<=10) > 9 > 成功 -rand:9/20 -============================ -input: -1D20<=10 -output: -Pendragon : (1D20<=10) > 19 > 失敗 -rand:19/20 -============================ -input: -1D20<=10 -output: -Pendragon : (1D20<=10) > 12 > 失敗 -rand:12/20 -============================ -input: -1D20<=10 -output: -Pendragon : (1D20<=10) > 1 > 成功 -rand:1/20 -============================ -input: -1D20<=10 -output: -Pendragon : (1D20<=10) > 9 > 成功 -rand:9/20 -============================ -input: -1D20<=10 -output: -Pendragon : (1D20<=10) > 11 > 失敗 -rand:11/20 -============================ -input: -1D20<=10 -output: -Pendragon : (1D20<=10) > 7 > 成功 -rand:7/20 -============================ -input: -1D20<=10 -output: -Pendragon : (1D20<=10) > 20 > ファンブル -rand:20/20 -============================ -input: -1D20<=10 -output: -Pendragon : (1D20<=10) > 6 > 成功 -rand:6/20 -============================ -input: -1D20>=? 目標値?でバグらない -output: -Pendragon : (1D20>=?) > 10 > 失敗 -rand:10/20 diff --git a/src/src_bcdice/test/data/PhantasmAdventure.txt b/src/src_bcdice/test/data/PhantasmAdventure.txt deleted file mode 100644 index 1458ed24a..000000000 --- a/src/src_bcdice/test/data/PhantasmAdventure.txt +++ /dev/null @@ -1,185 +0,0 @@ -input: -1D20<=2 -output: -PhantasmAdventure : (1D20<=2) > 13 > 失敗 -rand:13/20,5/20 -============================ -input: -1D20<=2 -output: -PhantasmAdventure : (1D20<=2) > 3 > 失敗 -rand:3/20,18/20 -============================ -input: -1D20<=2 -output: -PhantasmAdventure : (1D20<=2) > 17 > 失敗 -rand:17/20,8/20 -============================ -input: -1D20<=2 -output: -PhantasmAdventure : (1D20<=2) > 11 > 失敗 -rand:11/20,11/20 -============================ -input: -1D20<=2 -output: -PhantasmAdventure : (1D20<=2) > 19 > 失敗 -rand:19/20,5/20 -============================ -input: -1D20<=2 -output: -PhantasmAdventure : (1D20<=2) > 15 > 失敗 -rand:15/20,13/20 -============================ -input: -1D20<=2 -output: -PhantasmAdventure : (1D20<=2) > 20 > 致命的失敗(19-0=19) -rand:20/20,19/20 -============================ -input: -1D20<=2 -output: -PhantasmAdventure : (1D20<=2) > 19 > 失敗 -rand:19/20,3/20 -============================ -input: -1D20<=2 -output: -PhantasmAdventure : (1D20<=2) > 2 > 成功 -rand:2/20,19/20 -============================ -input: -1D20<=2 -output: -PhantasmAdventure : (1D20<=2) > 3 > 失敗 -rand:3/20,10/20 -============================ -input: -1D20<=19 -output: -PhantasmAdventure : (1D20<=19) > 3 > 成功 -rand:3/20,20/20 -============================ -input: -1D20<=19 -output: -PhantasmAdventure : (1D20<=19) > 13 > 成功 -rand:13/20,2/20 -============================ -input: -1D20<=19 -output: -PhantasmAdventure : (1D20<=19) > 8 > 成功 -rand:8/20,20/20 -============================ -input: -1D20<=19 -output: -PhantasmAdventure : (1D20<=19) > 16 > 成功 -rand:16/20,5/20 -============================ -input: -1D20<=19 -output: -PhantasmAdventure : (1D20<=19) > 10 > 成功 -rand:10/20,10/20 -============================ -input: -1D20<=19 -output: -PhantasmAdventure : (1D20<=19) > 18 > 成功 -rand:18/20,11/20 -============================ -input: -1D20<=19 -output: -PhantasmAdventure : (1D20<=19) > 12 > 成功 -rand:12/20,9/20 -============================ -input: -1D20<=19 -output: -PhantasmAdventure : (1D20<=19) > 17 > 成功 -rand:17/20,1/20 -============================ -input: -1D20<=19 -output: -PhantasmAdventure : (1D20<=19) > 13 > 成功 -rand:13/20,8/20 -============================ -input: -1D20<=19 -output: -PhantasmAdventure : (1D20<=19) > 11 > 成功 -rand:11/20,6/20 -============================ -input: -1D20<=10 -output: -PhantasmAdventure : (1D20<=10) > 13 > 失敗 -rand:13/20,1/20 -============================ -input: -1D20<=10 -output: -PhantasmAdventure : (1D20<=10) > 10 > 成功 -rand:10/20,12/20 -============================ -input: -1D20<=10 -output: -PhantasmAdventure : (1D20<=10) > 2 > 成功 -rand:2/20,2/20 -============================ -input: -1D20<=10 -output: -PhantasmAdventure : (1D20<=10) > 14 > 失敗 -rand:14/20,4/20 -============================ -input: -1D20<=10 -output: -PhantasmAdventure : (1D20<=10) > 9 > 成功 -rand:9/20,15/20 -============================ -input: -1D20<=10 -output: -PhantasmAdventure : (1D20<=10) > 14 > 失敗 -rand:14/20,1/20 -============================ -input: -1D20<=10 -output: -PhantasmAdventure : (1D20<=10) > 15 > 失敗 -rand:15/20,16/20 -============================ -input: -1D20<=10 -output: -PhantasmAdventure : (1D20<=10) > 17 > 失敗 -rand:17/20,19/20 -============================ -input: -1D20<=10 -output: -PhantasmAdventure : (1D20<=10) > 16 > 失敗 -rand:16/20,2/20 -============================ -input: -1D20<=10 -output: -PhantasmAdventure : (1D20<=10) > 14 > 失敗 -rand:14/20,8/20 -============================ -input: -1D20>=? 目標値?でバグらない -output: -PhantasmAdventure : (1D20>=?) > 10 > 失敗 -rand:10/20 diff --git a/src/src_bcdice/test/data/PlotTest.txt b/src/src_bcdice/test/data/PlotTest.txt deleted file mode 100644 index fad64e6d9..000000000 --- a/src/src_bcdice/test/data/PlotTest.txt +++ /dev/null @@ -1,15 +0,0 @@ -input: -S2d6 -Open Dice! -output: -DiceBot : (2D6) > 3[1,2] > 3###secret dice### -DiceBot : (2D6) > 3[1,2] > 3###secret dice### -rand:1/6,2/6 -============================ -input: -S2d6 -OPEN DICE! -output: -DiceBot : (2D6) > 3[1,2] > 3###secret dice### -DiceBot : (2D6) > 3[1,2] > 3###secret dice### -rand:1/6,2/6 diff --git a/src/src_bcdice/test/data/Postman.txt b/src/src_bcdice/test/data/Postman.txt deleted file mode 100644 index 294bdd1e4..000000000 --- a/src/src_bcdice/test/data/Postman.txt +++ /dev/null @@ -1,186 +0,0 @@ -input: -PO -output: -Postman : 2D6(3,4) > 7(3,4) = 達成値:7 -rand:3/6,4/6 -============================ -input: -po -output: -Postman : 2D6(1,1) > 2(1,1) = 達成値:2 【失敗】(ファンブル) -rand:1/6,1/6 -============================ -input: -Po -output: -Postman : 2D6(6,6) > 12(6,6) = 達成値:12 【成功】(クリティカル) -rand:6/6,6/6 -============================ -input: -1pO -output: -Postman : 2D6(3,4) > 7(3,4) = 達成値:7 -rand:3/6,4/6 -============================ -input: -3PO -output: -Postman : 3D6(3,4,5) > 9(4,5) = 達成値:9 -rand:3/6,4/6,5/6 -============================ -input: -4PO -output: -Postman : 4D6(2,3,4,5) > 9(4,5) = 達成値:9 -rand:2/6,3/6,4/6,5/6 -============================ -input: -4PO -output: -Postman : 4D6(1,1,1,6) > 7(1,6) = 達成値:7 -rand:1/6,1/6,1/6,6/6 -============================ -input: -4PO -output: -Postman : 4D6(1,1,1,1) > 2(1,1) = 達成値:2 【失敗】(ファンブル) -rand:1/6,1/6,1/6,1/6 -============================ -input: -4PO -output: -Postman : 4D6(1,1,6,6) > 12(6,6) = 達成値:12 【成功】(クリティカル) -rand:1/6,1/6,6/6,6/6 -============================ -input: -PO1 -output: -Postman : 2D6(3,4)+1 > 7(3,4)+1 = 達成値:8 -rand:3/6,4/6 -============================ -input: -PO+1 -output: -Postman : 2D6(3,4)+1 > 7(3,4)+1 = 達成値:8 -rand:3/6,4/6 -============================ -input: -PO-1 -output: -Postman : 2D6(3,4)-1 > 7(3,4)-1 = 達成値:6 -rand:3/6,4/6 -============================ -input: -PO1+2-1 -output: -Postman : 2D6(3,4)+2 > 7(3,4)+2 = 達成値:9 -rand:3/6,4/6 -============================ -input: -PO@7 -output: -Postman : 2D6(3,4) > 7(3,4) = 達成値:7>=7 【成功】 -rand:3/6,4/6 -============================ -input: -PO>=7 -output: -Postman : 2D6(3,4) > 7(3,4) = 達成値:7>=7 【成功】 -rand:3/6,4/6 -============================ -input: -PO>7 -output: -Postman : 2D6(3,4) > 7(3,4) = 達成値:7>7 【失敗】 -rand:3/6,4/6 -============================ -input: -PO@7 -output: -Postman : 2D6(1,2) > 3(1,2) = 達成値:3>=7 【失敗】 -rand:1/6,2/6 -============================ -input: -PO@9 -output: -Postman : 2D6(3,4) > 7(3,4) = 達成値:7>=9 【失敗】 -rand:3/6,4/6 -============================ -input: -PO@7+1+1 -output: -Postman : 2D6(3,4) > 7(3,4) = 達成値:7>=9 【失敗】 -rand:3/6,4/6 -============================ -input: -PO@2 -output: -Postman : 2D6(1,1) > 2(1,1) = 達成値:2>=2 【失敗】(ファンブル) -rand:1/6,1/6 -============================ -input: -PO@13 -output: -Postman : 2D6(6,6) > 12(6,6) = 達成値:12>=13 【成功】(クリティカル) -rand:6/6,6/6 -============================ -input: -PO+1@9 -output: -Postman : 2D6(3,4)+1 > 7(3,4)+1 = 達成値:8>=9 【失敗】 -rand:3/6,4/6 -============================ -input: -3PO@9 -output: -Postman : 3D6(3,4,5) > 9(4,5) = 達成値:9>=9 【成功】 -rand:3/6,4/6,5/6 -============================ -input: -3PO-1@9 -output: -Postman : 3D6(3,4,5)-1 > 9(4,5)-1 = 達成値:8>=9 【失敗】 -rand:3/6,4/6,5/6 -============================ -input: -3PO-1@9 -output: -Postman : 3D6(3,4,5)-1 > 9(4,5)-1 = 達成値:8>=9 【失敗】 -rand:3/6,4/6,5/6 -============================ -input: -4PO-2+1>7+2 -output: -Postman : 4D6(1,2,5,6)-1 > 11(5,6)-1 = 達成値:10>9 【成功】 -rand:1/6,2/6,5/6,6/6 -============================ -input: -WEA -output: -Postman : 天候チェック(3,4) > 7:晴れ。特になし。 -rand:3/6,4/6 -============================ -input: -wea -output: -Postman : 天候チェック(4,5) > 9:小雨が降る。探索判定の難易度に+1。 -rand:4/6,5/6 -============================ -input: -WEA13 -output: -Postman : 天候チェック(Choice:12) > 12:風が強い1日になりそう。探索判定の難易度に+2。 -rand: -============================ -input: -FRE -output: -Postman : 自由行動シチュエーション表(1,1) > 2:何をするでもなく、霞がかったような夜空を見上げる。ふと隣に目を向ければ、彼/彼女が居た。彼/彼女は、こうなる前の夜空を知っているのだろうか。 -rand:1/6,1/6 -============================ -input: -fre -output: -Postman : 自由行動シチュエーション表(6,6) > 12:テントを設営し、落ち着いた頃にふと気づく。 ……身体が熱い。少し、だるさもあるような気もする。大したことはないと思うが、彼/彼女に相談しておいた方がいいだろうか。 -rand:6/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/PulpCthulhu.txt b/src/src_bcdice/test/data/PulpCthulhu.txt deleted file mode 100644 index 6facda422..000000000 --- a/src/src_bcdice/test/data/PulpCthulhu.txt +++ /dev/null @@ -1,135 +0,0 @@ -input: -BMS -output: -PulpCthulhu : 狂気の発作(サマリー)(7) > 収容:ヒーローは高セキュリティの精神病院または警察の監獄で目を覚ます。彼らはそこで自分が犯した出来事をゆっくりと思い出すかもしれない。(1D10>7時間) -rand:7/10,7/10 -============================ -input: -BMS -output: -PulpCthulhu : 狂気の発作(サマリー)(1) > 健忘症:ヒーローは自分が誰であるかの記憶を失い、パルプのタレントを失い、自分のいる場所に大きな違和感を覚える。彼らの記憶は時間の経過と共にゆっくりと戻る。彼らのパルプのタレントは危機的な状況でのみ戻る。この場合、危機的状況とは誰かの命が晒されているなどの場合と定義する。誰かの命が脅かされるとヒーローは〈幸運〉ロールをう。成功すればタレントは戻る。失敗すれば1D10ラウンド後にもう一度行うことができる。(1D10>2時間) -rand:1/10,2/10 -============================ -input: -BMS -output: -PulpCthulhu : 狂気の発作(サマリー)(10) > マニア:ヒーローは新たなマニアを獲得する。マニア表(MAコマンド)をロールするか、キーパーがどれか1つ選ぶ。この狂気の発作の間、探索者はこの新たなマニアに完全に溺れているだろう。これがほかの人々に気づかれるかどうかは、キーパーとプレイヤーに委ねられる。(1D10>10時間) -rand:10/10,10/10 -============================ -input: -BMR -output: -PulpCthulhu : 狂気の発作(リアルタイム)(5) > リラックス:ヒーローが目の前の驚異が気にするほどの物でないと思い1D10ラウンドの間その場に座り込む。彼は葉巻を吸ったり、スキットルで乾杯するのに時間を使うかもしれない。(1D10>3ラウンド) -rand:5/10,3/10 -============================ -input: -BMR -output: -PulpCthulhu : 狂気の発作(リアルタイム)(1) > 健忘症:ヒーローは自分自身がヒーローである考えをやめ、1D10ラウンドの間パルプのタレントを失う。(1D10>1ラウンド) -rand:1/10,1/10 -============================ -input: -BMR -output: -PulpCthulhu : 狂気の発作(リアルタイム)(10) > マニア:ヒーローは新しいマニアに陥る。マニア表(MAコマンド)をロールするか、キーパーがマニアを1つ選ぶ。その探索者は次の1D10ラウンドの間、自分の新しいマニアに没頭しようとする。(1D10>9ラウンド) -rand:10/10,9/10 -============================ -input: -IT -output: -PulpCthulhu : 狂気のタレント表(18) > 狂気的獰猛さ:「お前を粉みじんに叩き切ってみせるぜ!」ヒーローは全ての近接攻撃のダメージロールを2回行い、最良の結果を得る。欠点としては、いったん命中すると彼らは止められないことだ!彼らは最後の一撃を与えるまで、攻撃し続ける。これを止めるための方法は2つしかない。彼らが意識不明になるか、誰かが困難難易度の言いくるめか、魅惑か、威圧ロールを彼らに成功させた場合がそうだ(1戦闘ラウンドで、1人の人物のみがこれらの状態のヒーローの1人に試みることができる)。 -rand:18/20 -============================ -input: -IT -output: -PulpCthulhu : 狂気のタレント表(1) > 狂気的筋力:「私は無尽蔵の内なる力の蓄えを引き出す!」1つのSTRロールにボーナス・ダイスを1つ得る。ロールが失敗した場合、何かがうまくいかない。キーパーは、ヒーローが負傷した(1D3+ヒーローのDBのダメージを筋断裂等により受ける)か、働きかけたものが壊れるかを選ぶ。 -rand:1/20 -============================ -input: -IT -output: -PulpCthulhu : 狂気のタレント表(20) > 狂気的技能増強:「あんたは私が狂ってると思うのか?だがあんたに教えることができるぞ!」狂気の副作用として、ヒーローはクトゥルフ神話のいくつかの側面を伴う、彼らの技能の1つ(プレイヤーが選び、キーパーが許可を与えたもの)を強化することができる。これはその技能で達成できることの範囲に影響する。ハーバート・ウェストとクロフォード・ティリンギャーストの両方が、これがどのようにその人物に影響を与えるかについての事前研究の良い候補者となる。 -rand:20/20 -============================ -input: -PH -output: -PulpCthulhu : 恐怖症表(1) > 入浴恐怖症:体、手、顔を洗うのが怖い。 -rand:1/100 -============================ -input: -PH -output: -PulpCthulhu : 恐怖症表(36) > ピン恐怖症:針やピンが怖い。 -rand:36/100 -============================ -input: -PH -output: -PulpCthulhu : 恐怖症表(100) > 動物恐怖症:動物が怖い。 -rand:100/100 -============================ -input: -MA -output: -PulpCthulhu : マニア表(1) > 洗浄マニア:自分の体を洗わずにはいられない。 -rand:1/100 -============================ -input: -MA -output: -PulpCthulhu : マニア表(30) > ピエロマニア:ピエロへの執着。 -rand:30/100 -============================ -input: -MA -output: -PulpCthulhu : マニア表(100) > 動物マニア:動物への正気でない溺愛。 -rand:100/100 -============================ -input: -FCE -output: -PulpCthulhu : キャスティング・ロール失敗表(1) > 叙事詩的な雷と稲光。 -rand:1/20 -============================ -input: -FCE -output: -PulpCthulhu : キャスティング・ロール失敗表(11) > 大地が震え、壁に亀裂が入って崩れる。 -rand:11/20 -============================ -input: -FCE -output: -PulpCthulhu : キャスティング・ロール失敗表(20) > クトゥルフ神話の神格が偶然招来される。 -rand:20/20 -============================ -input: -CBR(70,30) -output: -PulpCthulhu : (1d100<=70,30) > 30[ハード成功,レギュラー成功] > 成功 -rand:30/100 -============================ -input: -CC(1)<=53 -output: -PulpCthulhu : (1D100<=53) ボーナス・ペナルティダイス[1] > 92, 52 > 52 > レギュラー成功 -rand:9/10,5/10,2/10 -============================ -input: -FAR(20,50,99,-2,r,4) 2020/07/11追加機能テスト5 -output: -PulpCthulhu : ボーナス・ペナルティダイス[-2] -1回目: > 67, 87, 87 > 失敗 (0発が命中、0発が貫通) -【指定の難易度となったので、処理を終了します。】 -> 0発が通常命中、0発が貫通、残弾16発 -rand:6/10,8/10,8/10,7/10 -============================ -input: -cc -output: -PulpCthulhu : 1D100 > 19 -rand:19/100 -============================ diff --git a/src/src_bcdice/test/data/Raisondetre.txt b/src/src_bcdice/test/data/Raisondetre.txt deleted file mode 100644 index 79b766600..000000000 --- a/src/src_bcdice/test/data/Raisondetre.txt +++ /dev/null @@ -1,150 +0,0 @@ -input: -RD -output: -Raisondetre : 1D10 > [1] > [1] > 達成値:0 (Funble) -rand:1/10 -============================ -input: -RD -output: -Raisondetre : 1D10 > [5] > [5] > 5[5]=達成値:5 -rand:5/10 -============================ -input: -RD -output: -Raisondetre : 1D10 > [10] > [0] > 達成値:0 (Funble) -rand:10/10 -============================ -input: -0RD -output: -Raisondetre : 1D10-1 > [1] > [0] > 達成値:0 (Funble) -rand:1/10 -============================ -input: -0RD -output: -Raisondetre : 1D10-1 > [2] > [1] > 達成値:0 (Funble) -rand:2/10 -============================ -input: -0RD -output: -Raisondetre : 1D10-1 > [3] > [2] > 2[2]=達成値:2 -rand:3/10 -============================ -input: -0RD -output: -Raisondetre : 1D10-1 > [10] > [-1] > 達成値:0 (Funble) -rand:10/10 -============================ -input: --3RD -output: -Raisondetre : 1D10-4 > [1] > [-3] > 達成値:0 (Funble) -rand:1/10 -============================ -input: --3RD -output: -Raisondetre : 1D10-4 > [9] > [5] > 5[5]=達成値:5 -rand:9/10 -============================ -input: -5RD3 -output: -Raisondetre : 5D10 > [1,1,1,1,1] > [1,1,1,1,1] > 達成値:0 (Funble) -rand:1/10,1/10,1/10,1/10,1/10 -============================ -input: -5RD3 -output: -Raisondetre : 5D10 > [1,1,1,10,10] > [0,0,1,1,1] > 達成値:0 (Funble) -rand:1/10,1/10,1/10,10/10,10/10 -============================ -input: -5RD3 -output: -Raisondetre : 5D10 > [1,2,3,4,5] > [1,2,3,4,5] > 12[5,4,3]=達成値:12 -rand:1/10,2/10,3/10,4/10,5/10 -============================ -input: -5RD3 -output: -Raisondetre : 5D10 > [1,2,3,4,10] > [0,1,2,3,4] > 9[4,3,2]+10=達成値:19 (1Critical) -rand:1/10,2/10,3/10,4/10,10/10 -============================ -input: -5RD3@15 -output: -Raisondetre : 5D10 > [1,1,1,1,1] > [1,1,1,1,1] > 達成値:0 (Funble)>=15 【失敗】 -rand:1/10,1/10,1/10,1/10,1/10 -============================ -input: -5RD3@15 -output: -Raisondetre : 5D10 > [1,2,3,4,5] > [1,2,3,4,5] > 12[5,4,3]=達成値:12>=15 【失敗】 -rand:1/10,2/10,3/10,4/10,5/10 -============================ -input: -5RD3@10 -output: -Raisondetre : 5D10 > [1,2,3,4,5] > [1,2,3,4,5] > 12[5,4,3]=達成値:12>=10 【成功】 -rand:1/10,2/10,3/10,4/10,5/10 -============================ -input: -5RD3@15 -output: -Raisondetre : 5D10 > [1,2,3,4,10] > [0,1,2,3,4] > 9[4,3,2]+10=達成値:19 (1Critical)>=15 【成功】 -rand:1/10,2/10,3/10,4/10,10/10 -============================ -input: -5RD3@30 -output: -Raisondetre : 5D10 > [1,2,3,4,10] > [0,1,2,3,4] > 9[4,3,2]+10=達成値:19 (1Critical)>=30 【失敗】 -rand:1/10,2/10,3/10,4/10,10/10 -============================ -input: --1RD@5 -output: -Raisondetre : 1D10-2 > [1] > [-1] > 達成値:0 (Funble)>=5 【失敗】 -rand:1/10 -============================ -input: --1RD@5 -output: -Raisondetre : 1D10-2 > [9] > [7] > 7[7]=達成値:7>=5 【成功】 -rand:9/10 -============================ -input: -5DD2 -output: -Raisondetre : 5D10 > [1,2,3,4,10] > [0,1,2,3,4] > [×,×,2,3,4]>=2 有効数:3 0=1個 -rand:1/10,2/10,3/10,4/10,10/10 -============================ -input: -5DD3 -output: -Raisondetre : 5D10 > [1,2,3,4,10] > [0,1,2,3,4] > [×,×,×,3,4]>=3 有効数:2 0=1個 -rand:1/10,2/10,3/10,4/10,10/10 -============================ -input: -5DD3 -output: -Raisondetre : 5D10 > [1,1,2,2,3] > [1,1,2,2,3] > [×,×,×,×,3]>=3 有効数:1 0=0個 -rand:1/10,1/10,2/10,2/10,3/10 -============================ -input: -5DD -output: -Raisondetre : 5D10 > [1,1,2,2,3] > [1,1,2,2,3] 0=0個 -rand:1/10,1/10,2/10,2/10,3/10 -============================ -input: -5DD -output: -Raisondetre : 5D10 > [1,1,2,10,10] > [0,0,1,1,2] 0=2個 -rand:1/10,1/10,2/10,10/10,10/10 -============================ diff --git a/src/src_bcdice/test/data/RecordOfLodossWar.txt b/src/src_bcdice/test/data/RecordOfLodossWar.txt deleted file mode 100644 index 8b680ef34..000000000 --- a/src/src_bcdice/test/data/RecordOfLodossWar.txt +++ /dev/null @@ -1,54 +0,0 @@ -input: -LW<=68 -output: -RecordOfLodossWar : (1D100<=68) > 100 > 自動失敗(91) -rand:100/100 -============================ -input: -LW<=68 -output: -RecordOfLodossWar : (1D100<=68) > 1 > 大成功(7) -rand:1/100 -============================ -input: -LW -output: -RecordOfLodossWar : (1D100) > 10 > 自動成功 -rand:10/100 -============================ -input: -LW -output: -RecordOfLodossWar : (1D100) > 90 -rand:90/100 -============================ -input: -LW -output: -RecordOfLodossWar : (1D100) > 91 > 自動失敗(91) -rand:91/100 -============================ -input: -LWD -output: -RecordOfLodossWar : (1D100) > 50 -rand:50/100 -============================ -input: -LWD -output: -RecordOfLodossWar : (1D100) > 51 > 自動失敗(51) -rand:51/100 -============================ -input: -LW<=51 MurMurChantPrayInvoke!! -output: -RecordOfLodossWar : (1D100<=51) > 25 > 成功 -rand:25/100 -============================ -input: -LW<=75 ささやきえいしょういのいねんじよ! -output: -RecordOfLodossWar : (1D100<=75) > 81 > 失敗 -rand:81/100 -============================ \ No newline at end of file diff --git a/src/src_bcdice/test/data/RecordOfSteam.txt b/src/src_bcdice/test/data/RecordOfSteam.txt deleted file mode 100644 index d5189e93b..000000000 --- a/src/src_bcdice/test/data/RecordOfSteam.txt +++ /dev/null @@ -1,47 +0,0 @@ -input: -2S2@1 -output: -RecordOfSteam : (2S2@1) > 1,2,3,4 > 1回転 > 成功数2 -rand:1/6,2/6,3/6,4/6 -============================ -input: -4S3@2 -output: -RecordOfSteam : (4S3@2) > 2,1,2,4,4,4,2,3,4,5,6,6 > 4回転 > 成功数5 -rand:2/6,1/6,2/6,4/6,4/6,4/6,2/6,3/6,4/6,5/6,6/6,6/6 -============================ -input: -4S3@2 -output: -RecordOfSteam : (4S3@2) > 6,6,6,6 > 失敗 > ファンブル -rand:6/6,6/6,6/6,6/6 -============================ -input: -1S3@2 -output: -RecordOfSteam : (1S3@2) > 6 > 失敗 > ファンブル -rand:6/6 -============================ -input: -3S2@1 -output: -RecordOfSteam : (3S2@1) > 5,3,2 > 成功数1 -rand:5/6,3/6,2/6 -============================ -input: -3S2@1 -output: -RecordOfSteam : (3S2@1) > 4,1,1,1,5,3,2,4,2 > 3回転 > 成功数5 -rand:4/6,1/6,1/6,1/6,5/6,3/6,2/6,4/6,2/6 -============================ -input: -3S2@1 -output: -RecordOfSteam : (3S2@1) > 1,1,1 > スペシャル > 成功数9 -rand:1/6,1/6,1/6 -============================ -input: -3S2@1 -output: -RecordOfSteam : (3S2@1) > 6,6,6 > 失敗 > ファンブル -rand:6/6,6/6,6/6 diff --git a/src/src_bcdice/test/data/RokumonSekai2.txt b/src/src_bcdice/test/data/RokumonSekai2.txt deleted file mode 100644 index 8f067afb1..000000000 --- a/src/src_bcdice/test/data/RokumonSekai2.txt +++ /dev/null @@ -1,299 +0,0 @@ -input: -3RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[3]) > 7[2,2,3,4] > 5 > 評価S(+5d6) -rand:2/6,2/6,4/6,3/6 -============================ -input: -3RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[3]) > 8[2,2,4,5] > 4 > 評価A(+4d6) -rand:2/6,5/6,2/6,4/6 -============================ -input: -3RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[3]) > 5[1,2,2,4] > 5 > 評価S(+5d6) -rand:4/6,1/6,2/6,2/6 -============================ -input: -3RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[3]) > 13[4,4,5,6] > 0 > 評価E -rand:4/6,6/6,5/6,4/6 -============================ -input: -3RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[3]) > 13[3,4,6,6] > 1 > 評価D(+1d6) -rand:4/6,3/6,6/6,6/6 -============================ -input: -3RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[3]) > 7[2,2,3,3] > 5 > 評価S(+5d6) -rand:3/6,2/6,2/6,3/6 -============================ -input: -3RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[3]) > 7[2,2,3,5] > 5 > 評価S(+5d6) -rand:3/6,5/6,2/6,2/6 -============================ -input: -3RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[3]) > 9[2,3,4,6] > 3 > 評価B(+3d6) -rand:3/6,2/6,6/6,4/6 -============================ -input: -3RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[3]) > 14[4,5,5,6] > 0 > 評価E -rand:5/6,6/6,5/6,4/6 -============================ -input: -3RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[3]) > 8[1,2,5,6] > 4 > 評価A(+4d6) -rand:2/6,6/6,1/6,5/6 -============================ -input: -3R6+1<=9[3] -output: -RokumonSekai2 : (3R6+1<=9[3]) > 6[1,2,3,6] > 5 > 評価S(+5d6) -rand:1/6,2/6,6/6,3/6 -============================ -input: -3R6+1<=9[3] -output: -RokumonSekai2 : (3R6+1<=9[3]) > 7[1,1,5,6] > 4 > 評価A(+4d6) -rand:1/6,1/6,5/6,6/6 -============================ -input: -3R6+1<=9[3] -output: -RokumonSekai2 : (3R6+1<=9[3]) > 11[2,4,5,6] > 1 > 評価D(+1d6) -rand:5/6,2/6,4/6,6/6 -============================ -input: -3R6+1<=9[3] -output: -RokumonSekai2 : (3R6+1<=9[3]) > 7[2,2,3,6] > 5 > 評価S(+5d6) -rand:6/6,2/6,2/6,3/6 -============================ -input: -3R6+1<=9[3] -output: -RokumonSekai2 : (3R6+1<=9[3]) > 6[1,2,3,6] > 5 > 評価S(+5d6) -rand:1/6,2/6,6/6,3/6 -============================ -input: -3R6+1<=9[3] -output: -RokumonSekai2 : (3R6+1<=9[3]) > 12[2,5,5,5] > 1 > 評価D(+1d6) -rand:5/6,5/6,2/6,5/6 -============================ -input: -3R6+1<=9[3] -output: -RokumonSekai2 : (3R6+1<=9[3]) > 4[1,1,2,3] > 5 > 評価S(+5d6) -rand:2/6,1/6,3/6,1/6 -============================ -input: -3R6+1<=9[3] -output: -RokumonSekai2 : (3R6+1<=9[3]) > 11[3,4,4,4] > 1 > 評価D(+1d6) -rand:4/6,4/6,4/6,3/6 -============================ -input: -3R6+1<=9[3] -output: -RokumonSekai2 : (3R6+1<=9[3]) > 7[1,2,4,5] > 4 > 評価A(+4d6) -rand:2/6,1/6,4/6,5/6 -============================ -input: -3R6+1<=9[3] -output: -RokumonSekai2 : (3R6+1<=9[3]) > 7[1,3,3,6] > 5 > 評価S(+5d6) -rand:6/6,3/6,1/6,3/6 -============================ -input: -1RS<=8 -output: -RokumonSekai2 : (3R6<=8[1]) > 15[4,5,6] > 0 > 評価E -rand:5/6,6/6,4/6 -============================ -input: -1RS<=8 -output: -RokumonSekai2 : (3R6<=8[1]) > 10[1,4,5] > 1 > 評価D(+1d6) -rand:4/6,1/6,5/6 -============================ -input: -1RS<=8 -output: -RokumonSekai2 : (3R6<=8[1]) > 10[3,3,4] > 0 > 評価E -rand:3/6,3/6,4/6 -============================ -input: -1RS<=8 -output: -RokumonSekai2 : (3R6<=8[1]) > 9[2,3,4] > 0 > 評価E -rand:2/6,3/6,4/6 -============================ -input: -1RS<=8 -output: -RokumonSekai2 : (3R6<=8[1]) > 18[6,6,6] > 0 > 評価E -rand:6/6,6/6,6/6 -============================ -input: -1RS<=8 -output: -RokumonSekai2 : (3R6<=8[1]) > 9[2,3,4] > 0 > 評価E -rand:4/6,3/6,2/6 -============================ -input: -1RS<=8 -output: -RokumonSekai2 : (3R6<=8[1]) > 13[3,5,5] > 0 > 評価E -rand:3/6,5/6,5/6 -============================ -input: -1RS<=8 -output: -RokumonSekai2 : (3R6<=8[1]) > 9[2,3,4] > 0 > 評価E -rand:2/6,3/6,4/6 -============================ -input: -1RS<=8 -output: -RokumonSekai2 : (3R6<=8[1]) > 13[2,5,6] > 0 > 評価E -rand:6/6,2/6,5/6 -============================ -input: -1RS<=8 -output: -RokumonSekai2 : (3R6<=8[1]) > 8[1,2,5] > 2 > 評価C(+2d6) -rand:1/6,5/6,2/6 -============================ -input: -1RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[1]) > 6[1,1,4,6] > 4 > 評価A(+4d6) -rand:4/6,1/6,1/6,6/6 -============================ -input: -1RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[1]) > 12[3,4,5,6] > 0 > 評価E -rand:6/6,5/6,4/6,3/6 -============================ -input: -1RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[1]) > 7[2,2,3,3] > 2 > 評価C(+2d6) -rand:3/6,3/6,2/6,2/6 -============================ -input: -1RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[1]) > 12[3,4,5,5] > 0 > 評価E -rand:3/6,5/6,4/6,5/6 -============================ -input: -1RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[1]) > 8[1,1,6,6] > 4 > 評価A(+4d6) -rand:1/6,6/6,6/6,1/6 -============================ -input: -1RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[1]) > 6[1,2,3,6] > 3 > 評価B(+3d6) -rand:1/6,3/6,2/6,6/6 -============================ -input: -1RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[1]) > 9[1,3,5,6] > 2 > 評価C(+2d6) -rand:3/6,1/6,6/6,5/6 -============================ -input: -1RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[1]) > 4[1,1,2,3] > 5 > 評価S(+5d6) -rand:1/6,1/6,2/6,3/6 -============================ -input: -1RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[1]) > 9[2,2,5,5] > 1 > 評価D(+1d6) -rand:5/6,5/6,2/6,2/6 -============================ -input: -1RS+1<=9 -output: -RokumonSekai2 : (3R6+1<=9[1]) > 6[1,1,4,6] > 4 > 評価A(+4d6) -rand:6/6,1/6,4/6,1/6 -============================ -input: -10RS+10<=20 -output: -RokumonSekai2 : (3R6+10<=20[10]) > 7[1,3,3,4,4,4,5,5,5,5,6,6,6] > 5 > 評価S(+5d6) -rand:6/6,5/6,5/6,5/6,5/6,1/6,6/6,4/6,4/6,6/6,3/6,3/6,4/6 -============================ -input: -10RS+10<=20 -output: -RokumonSekai2 : (3R6+10<=20[10]) > 4[1,1,2,2,2,2,3,4,4,4,5,6,6] > 5 > 評価S(+5d6) -rand:5/6,4/6,3/6,2/6,2/6,4/6,2/6,1/6,2/6,6/6,4/6,6/6,1/6 -============================ -input: -10RS+10<=20 -output: -RokumonSekai2 : (3R6+10<=20[10]) > 6[1,2,3,3,4,4,4,4,4,5,5,5,6] > 5 > 評価S(+5d6) -rand:3/6,5/6,4/6,1/6,6/6,4/6,4/6,4/6,5/6,5/6,2/6,3/6,4/6 -============================ -input: -10RS+10<=20 -output: -RokumonSekai2 : (3R6+10<=20[10]) > 3[1,1,1,1,2,2,3,3,3,4,5,5,6] > 5 > 評価S(+5d6) -rand:3/6,3/6,2/6,5/6,4/6,1/6,1/6,1/6,5/6,2/6,6/6,3/6,1/6 -============================ -input: -10RS+10<=20 -output: -RokumonSekai2 : (3R6+10<=20[10]) > 3[1,1,1,2,3,3,4,4,4,5,6,6,6] > 5 > 評価S(+5d6) -rand:3/6,4/6,6/6,6/6,5/6,1/6,3/6,4/6,4/6,2/6,6/6,1/6,1/6 -============================ -input: -10RS+10<=20 -output: -RokumonSekai2 : (3R6+10<=20[10]) > 3[1,1,1,2,2,2,3,3,4,4,5,5,6] > 5 > 評価S(+5d6) -rand:6/6,3/6,5/6,4/6,2/6,1/6,1/6,3/6,2/6,2/6,4/6,1/6,5/6 -============================ -input: -10RS+10<=20 -output: -RokumonSekai2 : (3R6+10<=20[10]) > 4[1,1,2,2,3,3,4,5,5,6,6,6,6] > 5 > 評価S(+5d6) -rand:2/6,6/6,6/6,6/6,5/6,5/6,6/6,1/6,1/6,4/6,3/6,2/6,3/6 -============================ -input: -10RS+10<=20 -output: -RokumonSekai2 : (3R6+10<=20[10]) > 7[1,3,3,3,3,3,4,4,4,5,5,6,6] > 5 > 評価S(+5d6) -rand:3/6,1/6,3/6,4/6,3/6,3/6,5/6,4/6,4/6,6/6,6/6,5/6,3/6 -============================ -input: -10RS+10<=20 -output: -RokumonSekai2 : (3R6+10<=20[10]) > 3[1,1,1,2,2,3,3,3,3,4,5,5,5] > 5 > 評価S(+5d6) -rand:3/6,2/6,1/6,1/6,1/6,3/6,5/6,4/6,5/6,3/6,2/6,5/6,3/6 -============================ -input: -10RS+10<=20 -output: -RokumonSekai2 : (3R6+10<=20[10]) > 3[1,1,1,2,3,3,3,3,4,5,5,5,6] > 5 > 評価S(+5d6) -rand:5/6,5/6,1/6,1/6,1/6,5/6,4/6,3/6,3/6,6/6,3/6,2/6,3/6 diff --git a/src/src_bcdice/test/data/RoleMaster.txt b/src/src_bcdice/test/data/RoleMaster.txt deleted file mode 100644 index 413c04708..000000000 --- a/src/src_bcdice/test/data/RoleMaster.txt +++ /dev/null @@ -1,719 +0,0 @@ -input: -1d100>=10 -output: -RoleMaster : (1D100>=10) > 65 > 成功 -rand:65/100 -============================ -input: -1d100>=10 -output: -RoleMaster : (1D100>=10) > 56 > 成功 -rand:56/100 -============================ -input: -1d100>=10 -output: -RoleMaster : (1D100>=10) > 45 > 成功 -rand:45/100 -============================ -input: -1d100>=10 -output: -RoleMaster : (1D100>=10) > 18 > 成功 -rand:18/100 -============================ -input: -1d100>=10 -output: -RoleMaster : (1D100>=10) > 45 > 成功 -rand:45/100 -============================ -input: -1d100>=10 -output: -RoleMaster : (1D100>=10) > 78 > 成功 -rand:78/100 -============================ -input: -1d100>=10 -output: -RoleMaster : (1D100>=10) > 37 > 成功 -rand:37/100 -============================ -input: -1d100>=10 -output: -RoleMaster : (1D100>=10) > 48 > 成功 -rand:48/100 -============================ -input: -1d100>=10 -output: -RoleMaster : (1D100>=10) > 25 > 成功 -rand:25/100 -============================ -input: -1d100>=10 -output: -RoleMaster : (1D100>=10) > 90 > 成功 -rand:90/100 -============================ -input: -1d100>=50 -output: -RoleMaster : (1D100>=50) > 80 > 成功 -rand:80/100 -============================ -input: -1d100>=50 -output: -RoleMaster : (1D100>=50) > 86 > 成功 -rand:86/100 -============================ -input: -1d100>=50 -output: -RoleMaster : (1D100>=50) > 6 > 失敗 -rand:6/100 -============================ -input: -1d100>=50 -output: -RoleMaster : (1D100>=50) > 68 > 成功 -rand:68/100 -============================ -input: -1d100>=50 -output: -RoleMaster : (1D100>=50) > 55 > 成功 -rand:55/100 -============================ -input: -1d100>=50 -output: -RoleMaster : (1D100>=50) > 7 > 失敗 -rand:7/100 -============================ -input: -1d100>=50 -output: -RoleMaster : (1D100>=50) > 64 > 成功 -rand:64/100 -============================ -input: -1d100>=50 -output: -RoleMaster : (1D100>=50) > 44 > 失敗 -rand:44/100 -============================ -input: -1d100>=50 -output: -RoleMaster : (1D100>=50) > 46 > 失敗 -rand:46/100 -============================ -input: -1d100>=50 -output: -RoleMaster : (1D100>=50) > 91 > 成功 -rand:91/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 25 > 失敗 -rand:25/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 87 > 失敗 -rand:87/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 40 > 失敗 -rand:40/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 23 > 失敗 -rand:23/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 32 > 失敗 -rand:32/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 24 > 失敗 -rand:24/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 46 > 失敗 -rand:46/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 62 > 失敗 -rand:62/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 3 > 失敗 -rand:3/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 75 > 失敗 -rand:75/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 48 > 失敗 -rand:48/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 92 > 失敗 -rand:92/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 33 > 失敗 -rand:33/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 46 > 失敗 -rand:46/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 72 > 失敗 -rand:72/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 26 > 失敗 -rand:26/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 55 > 失敗 -rand:55/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 86 > 失敗 -rand:86/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 3 > 失敗 -rand:3/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 74 > 失敗 -rand:74/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 90 > 失敗 -rand:90/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 23 > 失敗 -rand:23/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 23 > 失敗 -rand:23/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 43 > 失敗 -rand:43/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 14 > 失敗 -rand:14/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 91 > 失敗 -rand:91/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 99 > 失敗 -rand:99/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 84 > 失敗 -rand:84/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 78 > 失敗 -rand:78/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 77 > 失敗 -rand:77/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 97 > 失敗 -rand:97/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 51 > 失敗 -rand:51/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 91 > 失敗 -rand:91/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 85 > 失敗 -rand:85/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 64 > 失敗 -rand:64/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 91 > 失敗 -rand:91/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 19 > 失敗 -rand:19/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 52 > 失敗 -rand:52/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 32 > 失敗 -rand:32/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 23 > 失敗 -rand:23/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 1 > 失敗 -rand:1/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 12 > 失敗 -rand:12/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 93 > 失敗 -rand:93/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 34 > 失敗 -rand:34/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 38 > 失敗 -rand:38/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 45 > 失敗 -rand:45/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 16 > 失敗 -rand:16/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 41 > 失敗 -rand:41/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 53 > 失敗 -rand:53/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 2 > 失敗 -rand:2/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 33 > 失敗 -rand:33/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 50 > 失敗 -rand:50/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 82 > 失敗 -rand:82/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 50 > 失敗 -rand:50/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 66 > 失敗 -rand:66/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 73 > 失敗 -rand:73/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 96 > 失敗 -rand:96/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 20 > 失敗 -rand:20/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 42 > 失敗 -rand:42/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 10 > 失敗 -rand:10/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 1 > 失敗 -rand:1/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 12 > 失敗 -rand:12/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 53 > 失敗 -rand:53/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 76 > 失敗 -rand:76/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 36 > 失敗 -rand:36/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 28 > 失敗 -rand:28/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 1 > 失敗 -rand:1/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 75 > 失敗 -rand:75/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 95 > 失敗 -rand:95/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 95 > 失敗 -rand:95/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 7 > 失敗 -rand:7/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 99 > 失敗 -rand:99/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 11 > 失敗 -rand:11/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 55 > 失敗 -rand:55/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 97 > 失敗 -rand:97/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 58 > 失敗 -rand:58/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 17 > 失敗 -rand:17/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 63 > 失敗 -rand:63/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 73 > 失敗 -rand:73/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 8 > 失敗 -rand:8/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 25 > 失敗 -rand:25/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 89 > 失敗 -rand:89/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 59 > 失敗 -rand:59/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 2 > 失敗 -rand:2/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 43 > 失敗 -rand:43/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 67 > 失敗 -rand:67/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 35 > 失敗 -rand:35/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 15 > 失敗 -rand:15/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 54 > 失敗 -rand:54/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 70 > 失敗 -rand:70/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 64 > 失敗 -rand:64/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 69 > 失敗 -rand:69/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 6 > 失敗 -rand:6/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 61 > 失敗 -rand:61/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 100 > 失敗 -rand:100/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 24 > 失敗 -rand:24/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 5 > 失敗 -rand:5/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 7 > 失敗 -rand:7/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 4 > 失敗 -rand:4/100 -============================ -input: -1d100>=101 -output: -RoleMaster : (1D100>=101) > 41 > 失敗 -rand:41/100 diff --git a/src/src_bcdice/test/data/RuneQuest.txt b/src/src_bcdice/test/data/RuneQuest.txt deleted file mode 100644 index cbad0a886..000000000 --- a/src/src_bcdice/test/data/RuneQuest.txt +++ /dev/null @@ -1,257 +0,0 @@ -input: -1D100<=10 -output: -RuneQuest : (1D100<=10) > 82 > 失敗 -rand:82/100 -============================ -input: -1D100<=10 -output: -RuneQuest : (1D100<=10) > 28 > 失敗 -rand:28/100 -============================ -input: -1D100<=10 -output: -RuneQuest : (1D100<=10) > 31 > 失敗 -rand:31/100 -============================ -input: -1D100<=10 -output: -RuneQuest : (1D100<=10) > 47 > 失敗 -rand:47/100 -============================ -input: -1D100<=10 -output: -RuneQuest : (1D100<=10) > 34 > 失敗 -rand:34/100 -============================ -input: -1D100<=10 -output: -RuneQuest : (1D100<=10) > 87 > 失敗 -rand:87/100 -============================ -input: -1D100<=10 -output: -RuneQuest : (1D100<=10) > 91 > 失敗 -rand:91/100 -============================ -input: -1D100<=10 -output: -RuneQuest : (1D100<=10) > 36 > 失敗 -rand:36/100 -============================ -input: -1D100<=10 -output: -RuneQuest : (1D100<=10) > 39 > 失敗 -rand:39/100 -============================ -input: -1D100<=10 -output: -RuneQuest : (1D100<=10) > 24 > 失敗 -rand:24/100 -============================ -input: -1D100<=90 -output: -RuneQuest : (1D100<=90) > 8 > 効果的成功 -rand:8/100 -============================ -input: -1D100<=90 -output: -RuneQuest : (1D100<=90) > 22 > 成功 -rand:22/100 -============================ -input: -1D100<=90 -output: -RuneQuest : (1D100<=90) > 90 > 成功 -rand:90/100 -============================ -input: -1D100<=90 -output: -RuneQuest : (1D100<=90) > 94 > 失敗 -rand:94/100 -============================ -input: -1D100<=90 -output: -RuneQuest : (1D100<=90) > 90 > 成功 -rand:90/100 -============================ -input: -1D100<=90 -output: -RuneQuest : (1D100<=90) > 37 > 成功 -rand:37/100 -============================ -input: -1D100<=90 -output: -RuneQuest : (1D100<=90) > 69 > 成功 -rand:69/100 -============================ -input: -1D100<=90 -output: -RuneQuest : (1D100<=90) > 61 > 成功 -rand:61/100 -============================ -input: -1D100<=90 -output: -RuneQuest : (1D100<=90) > 45 > 成功 -rand:45/100 -============================ -input: -1D100<=90 -output: -RuneQuest : (1D100<=90) > 82 > 成功 -rand:82/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 53 > 失敗 -rand:53/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 10 > 効果的成功 -rand:10/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 42 > 成功 -rand:42/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 54 > 失敗 -rand:54/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 94 > 失敗 -rand:94/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 100 > 致命的失敗 -rand:100/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 83 > 失敗 -rand:83/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 34 > 成功 -rand:34/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 15 > 成功 -rand:15/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 11 > 成功 -rand:11/100 -============================ -input: -1d100>=68+12 -output: -RuneQuest : (1D100>=80) > 11 > 失敗 -rand:11/100 -============================ -input: -1d100>=(68+12) -output: -RuneQuest : (1D100>=80) > 11 > 失敗 -rand:11/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 1 > 決定的成功 -rand:1/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 3 > 決定的成功 -rand:3/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 4 > 効果的成功 -rand:4/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 10 > 効果的成功 -rand:10/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 11 > 成功 -rand:11/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 50 > 成功 -rand:50/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 51 > 失敗 -rand:51/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 97 > 失敗 -rand:97/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 98 > 致命的失敗 -rand:98/100 -============================ -input: -1D100<=50 -output: -RuneQuest : (1D100<=50) > 100 > 致命的失敗 -rand:100/100 -============================ -input: -1D100>=? 目標値?でバグらない -output: -RuneQuest : (1D100>=?) > 42 > 失敗 -rand:42/100 diff --git a/src/src_bcdice/test/data/RyuTuber.txt b/src/src_bcdice/test/data/RyuTuber.txt deleted file mode 100644 index 06786fcd5..000000000 --- a/src/src_bcdice/test/data/RyuTuber.txt +++ /dev/null @@ -1,144 +0,0 @@ -input: -RTB -output: -RyuTuber : 判定ルール表示 -①枠主が判定内容を宣言、判定参加者が行動宣言 -②サイコロは竜の巫女なら6個、技能レベルか指定魅力の値個、奇跡の演目を1つ以上クリアで+6個、スパの消費数個 -③振ったサイコロの「1の目」の数が目標値以上なら華麗に成功、目標値未満ならちょっと残念な結果 -rand: -============================ -input: -JT -output: -RyuTuber : 職業表(4) > 事務・サービス職表へ -rand:4/6 -============================ -input: -JST -output: -RyuTuber : 学生表(1) > 中学生 (ゲーム 運動する) -rand:1/6 -============================ -input: -JTPT -output: -RyuTuber : 技術・専門職表(10) > プログラマー (プログラム 設計する) -rand:4/6,6/6 -============================ -input: -JOST -output: -RyuTuber : 事務・サービス職表(5) > 運転手、配達員 (運転する 地元知識) -rand:2/6,3/6 -============================ -input: -JET -output: -RyuTuber : エンタメ職表(6) > イラストレーター (絵を描く 見た目を整える) -rand:2/6,4/6 -============================ -input: -HT -output: -RyuTuber : 趣味表(3) > 一人でできるインドア趣味表Aへ -rand:3/6 -============================ -input: -HGT -output: -RyuTuber : 多人数でできる趣味表(6) > バンド (音楽 見た目を整える) -rand:6/6 -============================ -input: -HIAT -output: -RyuTuber : 一人でできるインドア趣味表A(4) > プラモ (ものづくり 見た目を整える) -rand:4/6 -============================ -input: -HIBT -output: -RyuTuber : 一人でできるインドア趣味表B(4) > 料理 (料理する 設計する) -rand:4/6 -============================ -input: -HOAT -output: -RyuTuber : 一人でできるアウトドア趣味表A(3) > 旅行/鉄道 (移動する 外国語) -rand:3/6 -============================ -input: -HOBT -output: -RyuTuber : 一人でできるアウトドア趣味表B(1) > スキー・スノーボード (運動する 自然の知識) -rand:1/6 -============================ -input: -MPW -output: -RyuTuber : 幸運の風が吹いている -奇跡 以降ゲーム終了まで、サイコロ+1 -①健気に頑張る姿を見せる。 -②報われることはなく、さらに最悪の展開に。 -③それでも健気なところを見せる。 -rand: -============================ -input: -MPT -output: -RyuTuber : 困った時はお互い様 -奇跡 そのプレイヤーの判定サイコロを1回振り直しできる -①けちな様子を見せる。 -②困っている人に施しをする姿を見られる。 -③窮地に陥る。 -rand: -============================ -input: -MPF -output: -RyuTuber : 悪い予感は的中する -奇跡 1判定だけ、サイコロ+3 -①犠牲者が悪い噂を耳にする。 -②犠牲者が悪い冗談を言う。 -③犠牲者が悪い予感に心さざめき、誰かに悪い予感を話す。 -rand: -============================ -input: -MPL -output: -RyuTuber : ついていい嘘もある -奇跡 ついた(ささやかな)嘘が本当になる 枠主判断でいつか発動する。 -①嘘を言う。 -②嘘によって窮地に立つ。 -③嘘を嘘にしないためにあがく。 -rand: -============================ -input: -MPS -output: -RyuTuber : 私には星が見えている -奇跡 指定したキャラクターの次の行動がわかる -①少し先のことを言い当てる。 -②気味が悪いと噂になる。 -③言い当てる力を人間観察に用いる。 -rand: -============================ -input: -MPD -output: -RyuTuber : 心は竜と共にあり -奇跡 起こりうる不幸を阻止する -①心清いひとに助けられる。 -②自分の性根悪さを悲しむ。 -③自分なりのやり方で心清い行いをする。 -rand: -============================ -input: -MPH -output: -RyuTuber : 人は石垣、人は城 -奇跡 感化された周りの人が手伝うようになる -①人々の不幸を見て、親切にしてしまう。 -②けなげに頑張る姿を見られる。 -③見ていた人々が集まってくる。 -rand: \ No newline at end of file diff --git a/src/src_bcdice/test/data/Ryutama.txt b/src/src_bcdice/test/data/Ryutama.txt deleted file mode 100644 index 6408bb14e..000000000 --- a/src/src_bcdice/test/data/Ryutama.txt +++ /dev/null @@ -1,274 +0,0 @@ -input: -R6,6>=7 -output: -Ryutama : (R6,6>=7) > 2(6)+5(6) > 7 > 成功 -rand:2/6,5/6 -============================ -input: -R6,6>=7 -output: -Ryutama : (R6,6>=7) > 5(6)+2(6) > 7 > 成功 -rand:5/6,2/6 -============================ -input: -R6,6>=9 -output: -Ryutama : (R6,6>=9) > 6(6)+3(6) > 9 > 成功 -rand:6/6,3/6 -============================ -input: -R6,6>=9 -output: -Ryutama : (R6,6>=9) > 6(6)+6(6) > 12 > クリティカル成功 -rand:6/6,6/6 -============================ -input: -R8,6>=13 -output: -Ryutama : (R8,6>=13) > 6(8)+6(6) > 12 > クリティカル成功 -rand:6/8,6/6 -============================ -input: -R8,6>=9 -output: -Ryutama : (R8,6>=9) > 6(8)+6(6) > 12 > クリティカル成功 -rand:6/8,6/6 -============================ -input: -R8,6>=9 -output: -Ryutama : (R8,6>=9) > 8(8)+6(6) > 14 > クリティカル成功 -rand:8/8,6/6 -============================ -input: -R8,6>=9 -output: -Ryutama : (R8,6>=9) > 6(8)+6(6) > 12 > クリティカル成功 -rand:6/8,6/6 -============================ -input: -R8,8>=9 -output: -Ryutama : (R8,8>=9) > 8(8)+8(8) > 16 > クリティカル成功 -rand:8/8,8/8 -============================ -input: -R8,8>=9 -output: -Ryutama : (R8,8>=9) > 6(8)+8(8) > 14 > 成功 -rand:6/8,8/8 -============================ -input: -R12,12>=9 -output: -Ryutama : (R12,12>=9) > 12(12)+12(12) > 24 > クリティカル成功 -rand:12/12,12/12 -============================ -input: -R12,12>=9 -output: -Ryutama : (R12,12>=9) > 6(12)+12(12) > 18 > 成功 -rand:6/12,12/12 -============================ -input: -R12,12>=9 -output: -Ryutama : (R12,12>=9) > 12(12)+6(12) > 18 > 成功 -rand:12/12,6/12 -============================ -input: -R12,12>=9 -output: -Ryutama : (R12,12>=9) > 6(12)+6(12) > 12 > クリティカル成功 -rand:6/12,6/12 -============================ -input: -R4,4>=9 -output: -Ryutama : (R4,4>=9) > 4(4)+4(4) > 8 > クリティカル成功 -rand:4/4,4/4 -============================ -input: -R4,12>=9 -output: -Ryutama : (R4,12>=9) > 3(4)+2(12) > 5 > 失敗 -rand:3/4,2/12 -============================ -input: -R4,12>=9 -output: -Ryutama : (R4,12>=9) > 4(4)+2(12) > 6 > 失敗 -rand:4/4,2/12 -============================ -input: -R4,12>=12 -output: -Ryutama : (R4,12>=12) > 4(4)+6(12) > 10 > 失敗 -rand:4/4,6/12 -============================ -input: -R4,6>=12 -output: -Ryutama : (R4,6>=12) > 4(4)+6(6) > 10 > クリティカル成功 -rand:4/4,6/6 -============================ -input: -R4,6>=2 -output: -Ryutama : (R4,6>=2) > 1(4)+1(6) > 2 > 1ゾロ【1ゾロポイント+1】 -rand:1/4,1/6 -============================ -input: -R4>=3 -output: -Ryutama : (R4>=3) > 3(4) > 3 > 成功 -rand:3/4 -============================ -input: -R4>=3 -output: -Ryutama : (R4>=3) > 2(4) > 2 > 失敗 -rand:2/4 -============================ -input: -R6>=7 -output: -Ryutama : (R6>=7) > 1(6) > 1 > 失敗 -rand:1/6 -============================ -input: -R6>=7 -output: -Ryutama : (R6>=7) > 6(6) > 6 > 失敗 -rand:6/6 -============================ -input: -R6,8 -output: -Ryutama : (R6,8) > 1(6)+2(8) > 3 -rand:1/6,2/8 -============================ -input: -R6,8 -output: -Ryutama : (R6,8) > 6(6)+6(8) > 12 > クリティカル成功 -rand:6/6,6/8 -============================ -input: -R6,8 -output: -Ryutama : (R6,8) > 1(6)+1(8) > 2 > 1ゾロ【1ゾロポイント+1】 -rand:1/6,1/8 -============================ -input: -R6 -output: -Ryutama : (R6) > 6(6) > 6 -rand:6/6 -============================ -input: -R206 -output: -Ryutama : (R20,6) > 2(20)+3(6) > 5 -rand:2/20,3/6 -============================ -input: -R26 -output: -Ryutama : (R2,6) > 2(2)+3(6) > 5 -rand:2/2,3/6 -============================ -input: -R122 -output: -Ryutama : (R12,2) > 3(12)+2(2) > 5 -rand:3/12,2/2 -============================ -input: -R2020 -output: -Ryutama : (R20,20) > 19(20)+19(20) > 38 -rand:19/20,19/20 -============================ -input: -R810 -output: -Ryutama : (R8,10) > 2(8)+3(10) > 5 -rand:2/8,3/10 -============================ -input: -R124>=10 -output: -Ryutama : (R12,4>=10) > 2(12)+3(4) > 5 > 失敗 -rand:2/12,3/4 -============================ -input: -R44 -output: -Ryutama : (R4,4) > 1(4)+2(4) > 3 -rand:1/4,2/4 -============================ -input: -R1212 -output: -Ryutama : (R12,12) > 1(12)+2(12) > 3 -rand:1/12,2/12 -============================ -input: -R801 -output: -rand: -============================ -input: -R810+1 -output: -Ryutama : (R8,10+1) > 2(8)+3(10)+1 > 6 -rand:2/8,3/10 -============================ -input: -R810+1>=5 -output: -Ryutama : (R8,10+1>=5) > 2(8)+3(10)+1 > 6 > 成功 -rand:2/8,3/10 -============================ -input: -R86-2 -output: -Ryutama : (R8,6-2) > 2(8)+3(6)-2 > 3 -rand:2/8,3/6 -============================ -input: -R86-2>=5 -output: -Ryutama : (R8,6-2>=5) > 2(8)+3(6)-2 > 3 > 失敗 -rand:2/8,3/6 -============================ -input: -R86-10>=5 -output: -Ryutama : (R8,6-10>=5) > 2(8)+3(6)-10 > -5 > 失敗 -rand:2/8,3/6 -============================ -input: -R86+1+2>=5 -output: -Ryutama : (R8,6+3>=5) > 2(8)+3(6)+3 > 8 > 成功 -rand:2/8,3/6 -============================ -input: -R86+1+2-1+3>=5 -output: -Ryutama : (R8,6+5>=5) > 2(8)+3(6)+5 > 10 > 成功 -rand:2/8,3/6 -============================ -input: -R86+1+2-4>=5 -output: -Ryutama : (R8,6-1>=5) > 2(8)+3(6)-1 > 4 > 失敗 -rand:2/8,3/6 -============================ -input: -1D6 -output: -Ryutama : (1D6) > 5 -rand:5/6 diff --git a/src/src_bcdice/test/data/SRS.txt b/src/src_bcdice/test/data/SRS.txt deleted file mode 100644 index 6dc7feec7..000000000 --- a/src/src_bcdice/test/data/SRS.txt +++ /dev/null @@ -1,257 +0,0 @@ -input: -2D6>=7 -output: -SRS : (2D6>=7[12,2]) > 7[2,5] > 7 > 成功 -rand:5/6,2/6 -============================ -input: -2D6>=7 -output: -SRS : (2D6>=7[12,2]) > 11[5,6] > 11 > 成功 -rand:6/6,5/6 -============================ -input: -2D6>=7 -output: -SRS : (2D6>=7[12,2]) > 6[2,4] > 6 > 失敗 -rand:4/6,2/6 -============================ -input: -2D6>=7 -output: -SRS : (2D6>=7[12,2]) > 3[1,2] > 3 > 失敗 -rand:2/6,1/6 -============================ -input: -2D6>=13 -output: -SRS : (2D6>=13[12,2]) > 12[6,6] > 12 > 自動成功 -rand:6/6,6/6 -============================ -input: -2D6>=2 -output: -SRS : (2D6>=2[12,2]) > 2[1,1] > 2 > 自動失敗 -rand:1/6,1/6 -============================ -input: -2D6+1>=8 -output: -SRS : (2D6+1>=8[12,2]) > 7[2,5]+1 > 8 > 成功 -rand:5/6,2/6 -============================ -input: -2D6+1>=8 -output: -SRS : (2D6+1>=8[12,2]) > 11[5,6]+1 > 12 > 成功 -rand:6/6,5/6 -============================ -input: -2D6+1>=8 -output: -SRS : (2D6+1>=8[12,2]) > 6[2,4]+1 > 7 > 失敗 -rand:4/6,2/6 -============================ -input: -2D6+1>=8 -output: -SRS : (2D6+1>=8[12,2]) > 3[1,2]+1 > 4 > 失敗 -rand:2/6,1/6 -============================ -input: -2D6-1>=12 -output: -SRS : (2D6-1>=12[12,2]) > 12[6,6]-1 > 11 > 自動成功 -rand:6/6,6/6 -============================ -input: -2D6+1>=3 -output: -SRS : (2D6+1>=3[12,2]) > 2[1,1]+1 > 3 > 自動失敗 -rand:1/6,1/6 -============================ -input: -2D6+1-2+3-4>=8 -output: -SRS : (2D6-2>=8[12,2]) > 7[2,5]-2 > 5 > 失敗 -rand:5/6,2/6 -============================ -input: -2D6+1>=8[11,3] -output: -SRS : (2D6+1>=8[11,3]) > 10[4,6]+1 > 11 > 成功 -rand:6/6,4/6 -============================ -input: -2D6+1>=8[11,3] -output: -SRS : (2D6+1>=8[11,3]) > 4[1,3]+1 > 5 > 失敗 -rand:3/6,1/6 -============================ -input: -2D6-1>=12[11,3] -output: -SRS : (2D6-1>=12[11,3]) > 11[5,6]-1 > 10 > 自動成功 -rand:5/6,6/6 -============================ -input: -2D6+1>=3[11,3] -output: -SRS : (2D6+1>=3[11,3]) > 3[1,2]+1 > 4 > 自動失敗 -rand:1/6,2/6 -============================ -input: -2D6+1>=8[11] -output: -SRS : (2D6+1>=8[11,2]) > 10[4,6]+1 > 11 > 成功 -rand:6/6,4/6 -============================ -input: -2D6+1>=8[11] -output: -SRS : (2D6+1>=8[11,2]) > 3[1,2]+1 > 4 > 失敗 -rand:2/6,1/6 -============================ -input: -2D6-1>=12[11] -output: -SRS : (2D6-1>=12[11,2]) > 11[5,6]-1 > 10 > 自動成功 -rand:5/6,6/6 -============================ -input: -2D6+1>=3[11] -output: -SRS : (2D6+1>=3[11,2]) > 2[1,1]+1 > 3 > 自動失敗 -rand:1/6,1/6 -============================ -input: -2D6[] -output: -SRS : (2D6[12,2]) > 11[5,6] > 11 -rand:6/6,5/6 -============================ -input: -2D6[] -output: -SRS : (2D6[12,2]) > 3[1,2] > 3 -rand:2/6,1/6 -============================ -input: -2D6[] -output: -SRS : (2D6[12,2]) > 12[6,6] > 12 > 自動成功 -rand:6/6,6/6 -============================ -input: -2D6[] -output: -SRS : (2D6[12,2]) > 2[1,1] > 2 > 自動失敗 -rand:1/6,1/6 -============================ -input: -2D6[11,3] -output: -SRS : (2D6[11,3]) > 10[4,6] > 10 -rand:6/6,4/6 -============================ -input: -2D6[11,3] -output: -SRS : (2D6[11,3]) > 4[1,3] > 4 -rand:3/6,1/6 -============================ -input: -2D6[11,3] -output: -SRS : (2D6[11,3]) > 11[5,6] > 11 > 自動成功 -rand:6/6,5/6 -============================ -input: -2D6[11,3] -output: -SRS : (2D6[11,3]) > 3[1,2] > 3 > 自動失敗 -rand:2/6,1/6 -============================ -input: -2D6[11,3] -output: -SRS : (2D6[11,3]) > 10[4,6] > 10 -rand:6/6,4/6 -============================ -input: -2D6+1[11,3] -output: -SRS : (2D6+1[11,3]) > 4[1,3]+1 > 5 -rand:3/6,1/6 -============================ -input: -2D6+1[11,3] -output: -SRS : (2D6+1[11,3]) > 11[5,6]+1 > 12 > 自動成功 -rand:6/6,5/6 -============================ -input: -2D6+1[11,3] -output: -SRS : (2D6+1[11,3]) > 3[1,2]+1 > 4 > 自動失敗 -rand:2/6,1/6 -============================ -input: -2D6+1-1[11,3] -output: -SRS : (2D6[11,3]) > 6[2,4] > 6 -rand:4/6,2/6 -============================ -input: -2D6[11] -output: -SRS : (2D6[11,2]) > 10[4,6] > 10 -rand:6/6,4/6 -============================ -input: -2D6[11] -output: -SRS : (2D6[11,2]) > 3[1,2] > 3 -rand:2/6,1/6 -============================ -input: -2D6[11] -output: -SRS : (2D6[11,2]) > 11[5,6] > 11 > 自動成功 -rand:6/6,5/6 -============================ -input: -2D6+1[11] -output: -SRS : (2D6+1[11,2]) > 10[4,6]+1 > 11 -rand:6/6,4/6 -============================ -input: -2D6+1[11] -output: -SRS : (2D6+1[11,2]) > 3[1,2]+1 > 4 -rand:2/6,1/6 -============================ -input: -2D6+1[11] -output: -SRS : (2D6+1[11,2]) > 11[5,6]+1 > 12 > 自動成功 -rand:6/6,5/6 -============================ -input: -2D6+1[11] -output: -SRS : (2D6+1[11,2]) > 2[1,1]+1 > 3 > 自動失敗 -rand:1/6,1/6 -============================ -input: -2D6 -output: -SRS : (2D6) > 12[6,6] > 12 -rand:6/6,6/6 -============================ -input: -2D6 -output: -SRS : (2D6) > 2[1,1] > 2 -rand:1/6,1/6 diff --git a/src/src_bcdice/test/data/SamsaraBallad.txt b/src/src_bcdice/test/data/SamsaraBallad.txt deleted file mode 100644 index 95dd94e17..000000000 --- a/src/src_bcdice/test/data/SamsaraBallad.txt +++ /dev/null @@ -1,329 +0,0 @@ -input: -1D100<=90 roll 90 -output: -SamsaraBallad : (1D100<=90) > 99 > 失敗 -rand:99/100 -============================ -input: -SB roll -output: -SamsaraBallad : (D100) > 75 -rand:75/100 -============================ -input: -SB#2@8 roll -output: -SamsaraBallad : (D100) > 80 > ファンブル -rand:80/100 -============================ -input: -SB#2@8 roll -output: -SamsaraBallad : (D100) > 83 -rand:83/100 -============================ -input: -SB#2@8 roll -output: -SamsaraBallad : (D100) > 89 > クリティカル -rand:89/100 -============================ -input: -SBS roll -output: -SamsaraBallad : (D100) > 7,5 > 57 -rand:7/10,5/10 -============================ -input: -SBS roll -output: -SamsaraBallad : (D100) > 7,10 > 7 -rand:7/10,10/10 -============================ -input: -SBS roll -output: -SamsaraBallad : (D100) > 10,10 > 100 -rand:10/10,10/10 -============================ -input: -SB<=90 roll 90 -output: -SamsaraBallad : (D100<=90) > 75 > 成功 -rand:75/100 -============================ -input: -SB<90 roll 90 -output: -SamsaraBallad : (D100<90) > 75 > 成功 -rand:75/100 -============================ -input: -SB<=80 roll 80 -output: -SamsaraBallad : (D100<=80) > 80 > 成功 -rand:80/100 -============================ -input: -SB<80 roll 80 -output: -SamsaraBallad : (D100<80) > 80 > 失敗 -rand:80/100 -============================ -input: -SB<=80 roll 79 -output: -SamsaraBallad : (D100<=80) > 79 > 成功 -rand:79/100 -============================ -input: -SB<80 roll 79 -output: -SamsaraBallad : (D100<80) > 79 > 成功 -rand:79/100 -============================ -input: -SB<=80 roll 80 -output: -SamsaraBallad : (D100<=80) > 81 > 失敗 -rand:81/100 -============================ -input: -SB<=90 roll 90 -output: -SamsaraBallad : (D100<=90) > 100 > 失敗 -rand:100/100 -============================ -input: -SBS<=80 roll 80 swap -output: -SamsaraBallad : (D100<=80) > 8,9 > 89 > 失敗 -rand:8/10,9/10 -============================ -input: -SBS<=80 roll 80 swap -output: -SamsaraBallad : (D100<=80) > 8,1 > 18 > 成功 -rand:8/10,1/10 -============================ -input: -SBS<=80 roll 80 swap -output: -SamsaraBallad : (D100<=80) > 7,9 > 79 > 成功 -rand:7/10,9/10 -============================ -input: -SBS<35 roll 35 swap -output: -SamsaraBallad : (D100<35) > 5,3 > 35 > 失敗 -rand:5/10,3/10 -============================ -input: -SBS<=35 roll 35 swap -output: -SamsaraBallad : (D100<=35) > 5,3 > 35 > 成功 -rand:5/10,3/10 -============================ -input: -SBS<=90 roll 90 swap -output: -SamsaraBallad : (D100<=90) > 10,10 > 100 > 失敗 -rand:10/10,10/10 -============================ -input: -SB#2@8<=90 roll 90 -output: -SamsaraBallad : (D100<=90) > 54 > 成功 -rand:54/100 -============================ -input: -SB#2@8<=90 roll 90 -output: -SamsaraBallad : (D100<=90) > 58 > クリティカル -rand:58/100 -============================ -input: -SB#5@8<=45 roll 45 -output: -SamsaraBallad : (D100<=45) > 55 > 失敗 -rand:55/100 -============================ -input: -SB#2@8<90 roll 90 -output: -SamsaraBallad : (D100<90) > 58 > クリティカル -rand:58/100 -============================ -input: -SB#2@8<=90 roll 90 -output: -SamsaraBallad : (D100<=90) > 59 > クリティカル -rand:59/100 -============================ -input: -SB#2@8<=90 roll 90 -output: -SamsaraBallad : (D100<=90) > 57 > 成功 -rand:57/100 -============================ -input: -SB#2@8<90 roll 90 -output: -SamsaraBallad : (D100<90) > 57 > 成功 -rand:57/100 -============================ -input: -SB#0@9<=80 roll 80 -output: -SamsaraBallad : (D100<=80) > 81 > 失敗 -rand:81/100 -============================ -input: -SB#0@9<81 roll 81 -output: -SamsaraBallad : (D100<81) > 81 > 失敗 -rand:81/100 -============================ -input: -SB#2@8<=90 roll 90 -output: -SamsaraBallad : (D100<=90) > 52 > ファンブル -rand:52/100 -============================ -input: -SB#0@8<=90 roll 90 -output: -SamsaraBallad : (D100<=90) > 80 > ファンブル -rand:80/100 -============================ -input: -SB#0@8<80 roll 80 -output: -SamsaraBallad : (D100<80) > 80 > 失敗 -rand:80/100 -============================ -input: -SB#2@8<=90 roll 90 -output: -SamsaraBallad : (D100<=90) > 51 > ファンブル -rand:51/100 -============================ -input: -SB#0@5<=35 roll 35 -output: -SamsaraBallad : (D100<=35) > 35 > クリティカル -rand:35/100 -============================ -input: -SB#0@5<35 roll 35 -output: -SamsaraBallad : (D100<35) > 35 > 失敗 -rand:35/100 -============================ -input: -SBS#2@8<=80 roll 80 -output: -SamsaraBallad : (D100<=80) > 8,1 > 18 > クリティカル -rand:8/10,1/10 -============================ -input: -SBS#2@8<=80 roll 80 -output: -SamsaraBallad : (D100<=80) > 9,7 > 79 > クリティカル -rand:9/10,7/10 -============================ -input: -SBS#2@8<=80 roll 80 -output: -SamsaraBallad : (D100<=80) > 7,5 > 57 > 成功 -rand:7/10,5/10 -============================ -input: -SBS#2@8<=80 roll 80 -output: -SamsaraBallad : (D100<=80) > 5,7 > 57 > 成功 -rand:5/10,7/10 -============================ -input: -SBS#2@8<80 roll 80 -output: -SamsaraBallad : (D100<80) > 7,5 > 57 > 成功 -rand:7/10,5/10 -============================ -input: -SBS#2@8<=80 roll 80 -output: -SamsaraBallad : (D100<=80) > 8,9 > 89 > 失敗 -rand:8/10,9/10 -============================ -input: -SBS#2@8<80 roll 80 -output: -SamsaraBallad : (D100<80) > 8,9 > 89 > 失敗 -rand:8/10,9/10 -============================ -input: -SBS#2@8<=15 roll 15 -output: -SamsaraBallad : (D100<=15) > 1,5 > 15 > 成功 -rand:1/10,5/10 -============================ -input: -SBS#2@8<15 roll 15 -output: -SamsaraBallad : (D100<15) > 1,5 > 15 > 失敗 -rand:1/10,5/10 -============================ -input: -SBS#2@8<=80 roll 80 -output: -SamsaraBallad : (D100<=80) > 2,1 > 12 > ファンブル -rand:2/10,1/10 -============================ -input: -SBS#2@8<80 roll 80 -output: -SamsaraBallad : (D100<80) > 2,1 > 12 > ファンブル -rand:2/10,1/10 -============================ -input: -SBS#2@8<=90 roll 90 -output: -SamsaraBallad : (D100<=90) > 1,3 > 13 > 成功 -rand:1/10,3/10 -============================ -input: -SBS#2@8<=90 roll 90 -output: -SamsaraBallad : (D100<=90) > 1,1 > 11 > ファンブル -rand:1/10,1/10 -============================ -input: -SB#5@3<=90 roll 90 -output: -SamsaraBallad : (D100<=90) > 24 > ファンブル -rand:24/100 -============================ -input: -SBS#0@5<=35 roll 35 -output: -SamsaraBallad : (D100<=35) > 5,3 > 35 > クリティカル -rand:5/10,3/10 -============================ -input: -SBS#0@5<35 roll 35 -output: -SamsaraBallad : (D100<35) > 5,3 > 35 > 失敗 -rand:5/10,3/10 -============================ -input: -SBS#3@8<=23 roll 23 -output: -SamsaraBallad : (D100<=23) > 2,3 > 23 > ファンブル -rand:2/10,3/10 -============================ -input: -SBS#3@8<23 roll 23 -output: -SamsaraBallad : (D100<23) > 2,3 > 23 > 失敗 -rand:2/10,3/10 diff --git a/src/src_bcdice/test/data/Satasupe.txt b/src/src_bcdice/test/data/Satasupe.txt deleted file mode 100644 index 4750d4426..000000000 --- a/src/src_bcdice/test/data/Satasupe.txt +++ /dev/null @@ -1,2093 +0,0 @@ -input: -10r>=7 -output: -Satasupe : 【難易度7、ファンブル率1、必殺なし】 > 0[2,1]+1[1,6]+1[6,6]+0[1,3]+0[4,1]+0[2,2]+1[1,6]+1[5,2]+0[3,3]+0[1,4] > 成功度4 -rand:2/6,1/6,1/6,6/6,6/6,6/6,1/6,3/6,4/6,1/6,2/6,2/6,1/6,6/6,5/6,2/6,3/6,3/6,1/6,4/6 -============================ -input: -10r>=7 -output: -Satasupe : 【難易度7、ファンブル率1、必殺なし】 > 1[4,4]+1[4,4]+0[4,2]+1[5,3]+0[2,4]+1[5,3]+1[6,4]+1[1,6]+0[1,1] > 成功度6 > ファンブル -rand:4/6,4/6,4/6,4/6,4/6,2/6,5/6,3/6,2/6,4/6,5/6,3/6,6/6,4/6,1/6,6/6,1/6,1/6 -============================ -input: -10r>=7 -output: -Satasupe : 【難易度7、ファンブル率1、必殺なし】 > 1[5,5]+1[3,4]+1[5,4]+0[1,4]+0[2,3]+1[4,6]+0[1,2]+1[5,6]+1[6,3]+0[2,1] > 成功度6 -rand:5/6,5/6,3/6,4/6,5/6,4/6,1/6,4/6,2/6,3/6,4/6,6/6,1/6,2/6,5/6,6/6,6/6,3/6,2/6,1/6 -============================ -input: -10r>=7 -output: -Satasupe : 【難易度7、ファンブル率1、必殺なし】 > 1[5,6]+0[3,3]+0[3,2]+0[3,3]+1[6,3]+0[5,1]+1[4,4]+1[6,2]+0[1,5]+1[5,2] > 成功度5 -rand:5/6,6/6,3/6,3/6,3/6,2/6,3/6,3/6,6/6,3/6,5/6,1/6,4/6,4/6,6/6,2/6,1/6,5/6,5/6,2/6 -============================ -input: -10r>=7 -output: -Satasupe : 【難易度7、ファンブル率1、必殺なし】 > 1[1,6]+1[5,4]+0[2,4]+1[4,3]+1[2,5]+0[3,2]+1[4,6]+1[3,4]+1[4,5]+1[3,5] > 成功度8 -rand:1/6,6/6,5/6,4/6,2/6,4/6,4/6,3/6,2/6,5/6,3/6,2/6,4/6,6/6,3/6,4/6,4/6,5/6,3/6,5/6 -============================ -input: -10r>=7 -output: -Satasupe : 【難易度7、ファンブル率1、必殺なし】 > 1[1,6]+1[4,3]+1[3,6]+1[6,3]+1[4,3]+1[6,6]+0[3,2]+0[2,1]+0[1,1] > 成功度6 > ファンブル -rand:1/6,6/6,4/6,3/6,3/6,6/6,6/6,3/6,4/6,3/6,6/6,6/6,3/6,2/6,2/6,1/6,1/6,1/6 -============================ -input: -10r>=7 -output: -Satasupe : 【難易度7、ファンブル率1、必殺なし】 > 1[3,5]+1[2,5]+0[3,2]+1[5,3]+1[2,6]+1[3,6]+0[1,2]+1[5,2]+1[2,6]+0[3,2] > 成功度7 -rand:3/6,5/6,2/6,5/6,3/6,2/6,5/6,3/6,2/6,6/6,3/6,6/6,1/6,2/6,5/6,2/6,2/6,6/6,3/6,2/6 -============================ -input: -10r>=7 -output: -Satasupe : 【難易度7、ファンブル率1、必殺なし】 > 1[4,4]+0[2,3]+1[4,5]+0[1,4]+1[4,5]+1[4,5]+0[4,2]+1[5,5]+0[4,2]+1[6,6] > 成功度6 -rand:4/6,4/6,2/6,3/6,4/6,5/6,1/6,4/6,4/6,5/6,4/6,5/6,4/6,2/6,5/6,5/6,4/6,2/6,6/6,6/6 -============================ -input: -10r>=7 -output: -Satasupe : 【難易度7、ファンブル率1、必殺なし】 > 1[5,3]+0[2,1]+1[4,3]+0[3,3]+1[5,3]+0[2,2]+1[6,6]+0[2,4]+0[4,2]+1[6,6] > 成功度5 -rand:5/6,3/6,2/6,1/6,4/6,3/6,3/6,3/6,5/6,3/6,2/6,2/6,6/6,6/6,2/6,4/6,4/6,2/6,6/6,6/6 -============================ -input: -10r>=7 -output: -Satasupe : 【難易度7、ファンブル率1、必殺なし】 > 0[5,1]+0[2,1]+1[4,4]+0[3,3]+1[4,6]+0[4,2]+0[2,2]+1[6,1]+1[3,5]+1[5,6] > 成功度5 -rand:5/6,1/6,2/6,1/6,4/6,4/6,3/6,3/6,4/6,6/6,4/6,2/6,2/6,2/6,6/6,1/6,3/6,5/6,5/6,6/6 -============================ -input: -8R>=7[3,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 1[1,6]+1[6,6]+0[3,1]+1[4,4] > 成功度3 -rand:1/6,6/6,6/6,6/6,3/6,1/6,4/6,4/6 -============================ -input: -8R>=7[3,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 0[2,4]+0[5,1]+1[6,6]+1[5,2]+0[1,3]+0[2,3]+1[6,3] > 成功度3 -rand:2/6,4/6,5/6,1/6,6/6,6/6,5/6,2/6,1/6,3/6,2/6,3/6,6/6,3/6 -============================ -input: -8R>=7[3,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 0[2,2] > 成功度0 > ファンブル -rand:2/6,2/6 -============================ -input: -8R>=7[3,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 1[6,4]+0[3,3] > 成功度1 > ファンブル -rand:6/6,4/6,3/6,3/6 -============================ -input: -8R>=7[3,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 1[4,6]+1[3,4]+1[3,5] > 成功度3 -rand:4/6,6/6,3/6,4/6,3/6,5/6 -============================ -input: -8R>=7[3,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 1[5,2]+1[3,4]+1[6,5] > 成功度3 -rand:5/6,2/6,3/6,4/6,6/6,5/6 -============================ -input: -8R>=7[3,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 1[6,2]+0[1,4]+1[4,4]+1[5,2] > 成功度3 -rand:6/6,2/6,1/6,4/6,4/6,4/6,5/6,2/6 -============================ -input: -8R>=7[3,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 1[5,2]+1[2,6]+1[4,4] > 成功度3 -rand:5/6,2/6,2/6,6/6,4/6,4/6 -============================ -input: -8R>=7[3,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 0[2,1]+0[2,2] > 成功度0 > ファンブル -rand:2/6,1/6,2/6,2/6 -============================ -input: -8R>=7[3,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 1[4,5]+0[1,2]+0[4,1]+0[2,3]+0[4,2]+1[6,5]+0[2,1]+0[2,4] > 成功度2 -rand:4/6,5/6,1/6,2/6,4/6,1/6,2/6,3/6,4/6,2/6,6/6,5/6,2/6,1/6,2/6,4/6 -============================ -input: -10r>=5[5] -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[4,5]+1[6,6]+0[2,2]+1[3,5]+0[1,2]+1[3,3]+1[5,3] > 成功度5 -rand:4/6,5/6,6/6,6/6,2/6,2/6,3/6,5/6,1/6,2/6,3/6,3/6,5/6,3/6 -============================ -input: -10r>=5[5] -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[6,6]+1[2,3]+1[4,5]+1[5,5]+0[1,3]+1[5,2] > 成功度5 -rand:6/6,6/6,2/6,3/6,4/6,5/6,5/6,5/6,1/6,3/6,5/6,2/6 -============================ -input: -10r>=5[5] -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 0[3,1]+1[1,6]+1[6,1]+1[5,6]+1[5,3]+1[5,4] > 成功度5 -rand:3/6,1/6,1/6,6/6,6/6,1/6,5/6,6/6,5/6,3/6,5/6,4/6 -============================ -input: -10r>=5[5] -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[4,5]+1[3,4]+1[5,1]+1[6,2]+1[4,2] > 成功度5 -rand:4/6,5/6,3/6,4/6,5/6,1/6,6/6,2/6,4/6,2/6 -============================ -input: -10r>=5[5] -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[5,1]+1[1,6]+0[1,2]+1[3,6]+1[6,5]+0[1,1] > 成功度4 > ファンブル -rand:5/6,1/6,1/6,6/6,1/6,2/6,3/6,6/6,6/6,5/6,1/6,1/6 -============================ -input: -10r>=5[5] -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[2,4]+1[4,1]+1[5,5]+1[4,5]+1[4,6] > 成功度5 -rand:2/6,4/6,4/6,1/6,5/6,5/6,4/6,5/6,4/6,6/6 -============================ -input: -10r>=5[5] -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[2,5]+1[6,2]+1[5,4]+1[5,3]+1[1,5] > 成功度5 -rand:2/6,5/6,6/6,2/6,5/6,4/6,5/6,3/6,1/6,5/6 -============================ -input: -10r>=5[5] -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[2,6]+1[4,2]+1[6,2]+1[2,6]+1[6,5] > 成功度5 -rand:2/6,6/6,4/6,2/6,6/6,2/6,2/6,6/6,6/6,5/6 -============================ -input: -10r>=5[5] -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[6,4]+1[6,5]+0[2,1]+1[1,6]+1[5,4]+1[4,1] > 成功度5 -rand:6/6,4/6,6/6,5/6,2/6,1/6,1/6,6/6,5/6,4/6,4/6,1/6 -============================ -input: -10r>=5[5] -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[5,5]+1[6,6]+1[1,6]+1[2,3]+1[5,4] > 成功度5 -rand:5/6,5/6,6/6,6/6,1/6,6/6,2/6,3/6,5/6,4/6 -============================ -input: -8R>=7[,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 0[4,2]+1[3,6]+1[1,6]+0[4,2]+0[2,2] > 成功度2 > ファンブル -rand:4/6,2/6,3/6,6/6,1/6,6/6,4/6,2/6,2/6,2/6 -============================ -input: -8R>=7[,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 0[3,1]+1[6,4]+1[3,6]+0[4,1]+1[6,6]+1[5,4]+1[5,2]+1[2,6] > 成功度6 -rand:3/6,1/6,6/6,4/6,3/6,6/6,4/6,1/6,6/6,6/6,5/6,4/6,5/6,2/6,2/6,6/6 -============================ -input: -8R>=7[,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 0[1,2]+1[2,6]+1[5,2]+1[4,3]+1[6,2]+1[4,4]+0[4,1]+0[1,5] > 成功度5 -rand:1/6,2/6,2/6,6/6,5/6,2/6,4/6,3/6,6/6,2/6,4/6,4/6,4/6,1/6,1/6,5/6 -============================ -input: -8R>=7[,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 1[6,1]+0[2,3]+1[6,4]+1[6,4]+1[4,3]+0[2,4]+0[1,3]+1[4,3] > 成功度5 -rand:6/6,1/6,2/6,3/6,6/6,4/6,6/6,4/6,4/6,3/6,2/6,4/6,1/6,3/6,4/6,3/6 -============================ -input: -8R>=7[,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 1[5,6]+1[4,5]+1[3,5]+1[3,6]+1[6,2]+1[3,6]+1[3,4]+1[2,6] > 成功度8 -rand:5/6,6/6,4/6,5/6,3/6,5/6,3/6,6/6,6/6,2/6,3/6,6/6,3/6,4/6,2/6,6/6 -============================ -input: -8R>=7[,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 0[1,3]+1[2,5]+1[5,2]+0[3,1]+0[1,5]+0[5,1]+1[4,4]+0[5,1] > 成功度3 -rand:1/6,3/6,2/6,5/6,5/6,2/6,3/6,1/6,1/6,5/6,5/6,1/6,4/6,4/6,5/6,1/6 -============================ -input: -8R>=7[,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 1[6,5]+1[6,3]+1[2,5]+0[2,2] > 成功度3 > ファンブル -rand:6/6,5/6,6/6,3/6,2/6,5/6,2/6,2/6 -============================ -input: -8R>=7[,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 1[5,6]+1[2,5]+1[5,4]+1[5,6]+1[3,5]+1[6,4]+0[1,1] > 成功度6 > ファンブル -rand:5/6,6/6,2/6,5/6,5/6,4/6,5/6,6/6,3/6,5/6,6/6,4/6,1/6,1/6 -============================ -input: -8R>=7[,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 1[3,4]+0[1,5]+0[1,1] > 成功度1 > ファンブル -rand:3/6,4/6,1/6,5/6,1/6,1/6 -============================ -input: -8R>=7[,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 0[2,2] > 成功度0 > ファンブル -rand:2/6,2/6 -============================ -input: -8R>=7[3,3] -output: -Satasupe : 【難易度7、ファンブル率3、必殺なし】 > 0[3,3] > 成功度0 > ファンブル -rand:3/6,3/6 -============================ -input: -5R>=3 -output: -Satasupe : 【5R>=3】 > あらゆる難易度は5未満にはならないため、難易度は5になる! -【難易度5、ファンブル率1、必殺なし】 > 1[3,4]+1[5,3]+1[5,2]+1[6,3]+0[1,2] > 成功度4 -rand:3/6,4/6,5/6,3/6,5/6,2/6,6/6,3/6,1/6,2/6 -============================ -input: -5R>=13 -output: -Satasupe : 【5R>=13】 > 難易度が12を超えたため、超過分、ファンブル率が上昇! -【難易度12、ファンブル率2、必殺なし】 > 0[3,4]+0[5,3]+0[5,2]+0[6,3]+0[1,2] > 成功度0 -rand:3/6,4/6,5/6,3/6,5/6,2/6,6/6,3/6,1/6,2/6 -============================ -input: -5R>=12 -output: -Satasupe : 【難易度12、ファンブル率1、必殺なし】 > 0[3,4]+0[5,3]+0[5,2]+0[6,3]+0[1,2] > 成功度0 -rand:3/6,4/6,5/6,3/6,5/6,2/6,6/6,3/6,1/6,2/6 -============================ -input: -5R>=5 -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[3,4]+1[5,3]+1[5,2]+1[6,3]+0[1,2] > 成功度4 -rand:3/6,4/6,5/6,3/6,5/6,2/6,6/6,3/6,1/6,2/6 -============================ -input: -5R>=5 -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[5,5]+1[5,3]+1[6,4]+1[3,5]+1[2,6] > 成功度5 -rand:5/6,5/6,5/6,3/6,6/6,4/6,3/6,5/6,2/6,6/6 -============================ -input: -5R>=5 -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[3,6]+1[6,1]+1[3,5]+1[1,4]+1[5,6] > 成功度5 -rand:3/6,6/6,6/6,1/6,3/6,5/6,1/6,4/6,5/6,6/6 -============================ -input: -5R>=5 -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[2,5]+1[6,3]+1[3,6]+1[5,1]+1[4,2] > 成功度5 -rand:2/6,5/6,6/6,3/6,3/6,6/6,5/6,1/6,4/6,2/6 -============================ -input: -5R>=5 -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[1,4]+1[3,6]+1[4,2]+1[6,3]+1[5,2] > 成功度5 -rand:1/6,4/6,3/6,6/6,4/6,2/6,6/6,3/6,5/6,2/6 -============================ -input: -5R>=5 -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[2,3]+1[5,2]+1[1,4]+1[4,6]+1[1,6] > 成功度5 -rand:2/6,3/6,5/6,2/6,1/6,4/6,4/6,6/6,1/6,6/6 -============================ -input: -5R>=5 -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 0[2,2]+1[1,4]+1[6,5]+1[3,3]+1[6,1] > 成功度4 -rand:2/6,2/6,1/6,4/6,6/6,5/6,3/6,3/6,6/6,1/6 -============================ -input: -5R>=5 -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[6,5]+1[6,3]+0[3,1]+0[2,2]+1[5,4] > 成功度3 -rand:6/6,5/6,6/6,3/6,3/6,1/6,2/6,2/6,5/6,4/6 -============================ -input: -5R>=5 -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[6,1]+0[1,3]+1[4,2]+1[6,5]+1[6,2] > 成功度4 -rand:6/6,1/6,1/6,3/6,4/6,2/6,6/6,5/6,6/6,2/6 -============================ -input: -5R>=5 -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[6,5]+1[2,6]+0[1,1] > 成功度2 > ファンブル -rand:6/6,5/6,2/6,6/6,1/6,1/6 -============================ -input: -5R>=5[10,2] -output: -Satasupe : 【難易度5、ファンブル率2、必殺なし】 > 1[4,3]+1[2,4]+1[6,3]+0[2,2] > 成功度3 > ファンブル -rand:4/6,3/6,2/6,4/6,6/6,3/6,2/6,2/6 -============================ -input: -5R>=5[10,2] -output: -Satasupe : 【難易度5、ファンブル率2、必殺なし】 > 1[5,5]+1[5,3]+0[1,2]+0[2,1]+1[6,3] > 成功度3 -rand:5/6,5/6,5/6,3/6,1/6,2/6,2/6,1/6,6/6,3/6 -============================ -input: -5R>=5[10,2] -output: -Satasupe : 【難易度5、ファンブル率2、必殺なし】 > 1[5,3]+1[4,6]+1[3,5]+1[4,5]+0[1,1] > 成功度4 > ファンブル -rand:5/6,3/6,4/6,6/6,3/6,5/6,4/6,5/6,1/6,1/6 -============================ -input: -5R>=5[10,2] -output: -Satasupe : 【難易度5、ファンブル率2、必殺なし】 > 1[5,3]+1[6,5]+1[3,3]+1[4,4]+1[6,5] > 成功度5 -rand:5/6,3/6,6/6,5/6,3/6,3/6,4/6,4/6,6/6,5/6 -============================ -input: -5R>=5[10,2] -output: -Satasupe : 【難易度5、ファンブル率2、必殺なし】 > 1[6,2]+1[6,3]+1[1,5]+1[2,5]+1[6,3] > 成功度5 -rand:6/6,2/6,6/6,3/6,1/6,5/6,2/6,5/6,6/6,3/6 -============================ -input: -5R>=5[10,2] -output: -Satasupe : 【難易度5、ファンブル率2、必殺なし】 > 1[4,5]+1[6,3]+1[5,5]+1[1,6]+1[3,6] > 成功度5 -rand:4/6,5/6,6/6,3/6,5/6,5/6,1/6,6/6,3/6,6/6 -============================ -input: -5R>=5[10,2] -output: -Satasupe : 【難易度5、ファンブル率2、必殺なし】 > 1[4,5]+1[3,5]+1[3,3]+0[1,2]+1[3,4] > 成功度4 -rand:4/6,5/6,3/6,5/6,3/6,3/6,1/6,2/6,3/6,4/6 -============================ -input: -5R>=5[10,2] -output: -Satasupe : 【難易度5、ファンブル率2、必殺なし】 > 1[5,2]+1[3,4]+1[4,1]+0[1,2]+1[2,3] > 成功度4 -rand:5/6,2/6,3/6,4/6,4/6,1/6,1/6,2/6,2/6,3/6 -============================ -input: -5R>=5[10,2] -output: -Satasupe : 【難易度5、ファンブル率2、必殺なし】 > 1[6,5]+1[6,4]+1[3,3]+0[3,1]+1[3,4] > 成功度4 -rand:6/6,5/6,6/6,4/6,3/6,3/6,3/6,1/6,3/6,4/6 -============================ -input: -5R>=5[10,2] -output: -Satasupe : 【難易度5、ファンブル率2、必殺なし】 > 1[1,4]+1[2,6]+0[2,1]+1[5,2]+0[1,1] > 成功度3 > ファンブル -rand:1/6,4/6,2/6,6/6,2/6,1/6,5/6,2/6,1/6,1/6 -============================ -input: -5R>=5[10,2,7] -output: -Satasupe : 【難易度5、ファンブル率2、必殺7】 > 1[6,5]『必殺!』+1[6,4]『必殺!』+1[3,3]+0[3,1]+1[3,4]『必殺!』 > 成功度4 > 必殺発動可能! -rand:6/6,5/6,6/6,4/6,3/6,3/6,3/6,1/6,3/6,4/6 -============================ -input: -5R>=5[10,2,7] -output: -Satasupe : 【難易度5、ファンブル率2、必殺7】 > 1[1,4]+1[2,6]『必殺!』+0[2,1]+1[5,2]『必殺!』+0[1,1] > 成功度3 > ファンブル -rand:1/6,4/6,2/6,6/6,2/6,1/6,5/6,2/6,1/6,1/6 -============================ -input: -5R>=5[10,6,7] -output: -Satasupe : 【難易度5、ファンブル率6、必殺7】 > ファンブル率が6を超えたため自動失敗! -rand: -============================ -input: -5R>=5[10,6] -output: -Satasupe : 【難易度5、ファンブル率6、必殺なし】 > ファンブル率が6を超えたため自動失敗! -rand: -============================ -input: -5R>=5[10,2,7S] -output: -Satasupe : 【難易度5、ファンブル率2、必殺7】 > 1[6,5]『必殺!』 > 成功度1 > 必殺発動可能! -rand:6/6,5/6 -============================ -input: -5R>=5[10,2,7s] -output: -Satasupe : 【難易度5、ファンブル率2、必殺7】 > 1[6,5]『必殺!』 > 成功度1 > 必殺発動可能! -rand:6/6,5/6 -============================ -input: -5R>=5[10,2,7S] -output: -Satasupe : 【難易度5、ファンブル率2、必殺7】 > 1[1,4]+1[2,6]『必殺!』 > 成功度2 > 必殺発動可能! -rand:1/6,4/6,2/6,6/6 -============================ -input: -5R>=5[10,6,7S] -output: -Satasupe : 【難易度5、ファンブル率6、必殺7】 > ファンブル率が6を超えたため自動失敗! -rand: -============================ -input: -5R>=5[10,2,7S] mokeke -output: -Satasupe : 【難易度5、ファンブル率2、必殺7】 > 1[1,4]+1[2,6]『必殺!』 > 成功度2 > 必殺発動可能! -rand:1/6,4/6,2/6,6/6 -============================ -input: -5R>=5 MOKEKE -output: -Satasupe : 【難易度5、ファンブル率1、必殺なし】 > 1[3,6]+1[6,1]+1[3,5]+1[1,4]+1[5,6] > 成功度5 -rand:3/6,6/6,6/6,1/6,3/6,5/6,1/6,4/6,5/6,6/6 -============================ -input: -TAGT -output: -Satasupe : タグ決定表:53:ヒマツブシ(イ) -rand:5/6,3/6 -============================ -input: -TAGT -output: -Satasupe : タグ決定表:53:ヒマツブシ(イ) -rand:5/6,3/6 -============================ -input: -TAGT -output: -Satasupe : タグ決定表:46:旅行(休) -rand:4/6,6/6 -============================ -input: -TAGT -output: -Satasupe : タグ決定表:66:情報ハプニング -rand:6/6,6/6 -============================ -input: -TAGT -output: -Satasupe : タグ決定表:63:ギャンブル(風) -rand:6/6,3/6 -============================ -input: -TAGT -output: -Satasupe : タグ決定表:61:アダルト(風) -rand:6/6,1/6 -============================ -input: -TAGT -output: -Satasupe : タグ決定表:25:パフォーマンス(ア) -rand:2/6,5/6 -============================ -input: -TAGT -output: -Satasupe : タグ決定表:15:マニア(サ) -rand:1/6,5/6 -============================ -input: -TAGT -output: -Satasupe : タグ決定表:35:ガリ勉(マ) -rand:3/6,5/6 -============================ -input: -TAGT -output: -Satasupe : タグ決定表:26:美術(ア) -rand:2/6,6/6 -============================ -input: -CrimeIET -output: -Satasupe : 情報イベント表/〔犯罪〕:2:謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! -rand:1/6,1/6 -============================ -input: -CrimeIET -output: -Satasupe : 情報イベント表/〔犯罪〕:12:「三下(p.125)」が1D6人現れる。血戦を行え。倒した数だけ、好きなタグの上位リンクを手に入れる -rand:6/6,6/6 -============================ -input: -CrimeIET -output: -Satasupe : 情報イベント表/〔犯罪〕:4:謎のメモを発見……このターゲットについて調べている間、このトピックのタグをチーム全員が所有しているものとして扱う -rand:2/6,2/6 -============================ -input: -CrimeIET -output: -Satasupe : 情報イベント表/〔犯罪〕:9:捜査は足だね。〔肉体点〕を好きなだけ消費する。その値と同じ数の好きなタグの上位リンクを得る -rand:4/6,5/6 -============================ -input: -CrimeIET -output: -Satasupe : 情報イベント表/〔犯罪〕:8:その道の権威を紹介される。現在と同じタグの上位リンクを2つ得る -rand:4/6,4/6 -============================ -input: -CrimeIET -output: -Satasupe : 情報イベント表/〔犯罪〕:7:あまりに適切な諜報活動。コストを消費せず、上位リンクを3つ得る -rand:4/6,3/6 -============================ -input: -CrimeIET -output: -Satasupe : 情報イベント表/〔犯罪〕:6:偶然、他の亜侠の仕事現場に出くわす。口止め料の代わりに好きなタグの上位リンクを1つ得る -rand:4/6,2/6 -============================ -input: -CrimeIET -output: -Satasupe : 情報イベント表/〔犯罪〕:10:近所のコンビニで立ち読み。思わぬ情報が手に入る。上位リンクを3つ得る -rand:4/6,6/6 -============================ -input: -CrimeIET -output: -Satasupe : 情報イベント表/〔犯罪〕:9:捜査は足だね。〔肉体点〕を好きなだけ消費する。その値と同じ数の好きなタグの上位リンクを得る -rand:6/6,3/6 -============================ -input: -CrimeIET -output: -Satasupe : 情報イベント表/〔犯罪〕:8:その道の権威を紹介される。現在と同じタグの上位リンクを2つ得る -rand:4/6,4/6 -============================ -input: -CrimeIET -output: -Satasupe : 情報イベント表/〔犯罪〕:4:謎のメモを発見……このターゲットについて調べている間、このトピックのタグをチーム全員が所有しているものとして扱う -rand:1/6,3/6 -============================ -input: -LifeIET -output: -Satasupe : 情報イベント表/〔生活〕:2:謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! -rand:1/6,1/6 -============================ -input: -LifeIET -output: -Satasupe : 情報イベント表/〔生活〕:12:ターゲットとは関係ないが、ドデかい情報を掘り当てる。その情報を売って〔サイフ〕が全快する -rand:6/6,6/6 -============================ -input: -LifeIET -output: -Satasupe : 情報イベント表/〔生活〕:6:器用に手に入れた情報を転売する。《札巻》を1個手に入れ、上位リンクを3つ得る -rand:3/6,3/6 -============================ -input: -LifeIET -output: -Satasupe : 情報イベント表/〔生活〕:8:街の有力者からの突然の電話。そのエリアの盟約の幹部NPCの誰かと【コネ】を結ぶことができる -rand:3/6,5/6 -============================ -input: -LifeIET -output: -Satasupe : 情報イベント表/〔生活〕:10:〔表の顔〕の同僚が思いがけないアドバイスをくれる。上位リンクを1D6つ得る -rand:5/6,5/6 -============================ -input: -LifeIET -output: -Satasupe : 情報イベント表/〔生活〕:8:街の有力者からの突然の電話。そのエリアの盟約の幹部NPCの誰かと【コネ】を結ぶことができる -rand:2/6,6/6 -============================ -input: -LifeIET -output: -Satasupe : 情報イベント表/〔生活〕:5:息抜きにテレビを見ていたら、たまたまその情報が。好きなタグの上位リンクを1つ得る -rand:4/6,1/6 -============================ -input: -LifeIET -output: -Satasupe : 情報イベント表/〔生活〕:8:街の有力者からの突然の電話。そのエリアの盟約の幹部NPCの誰かと【コネ】を結ぶことができる -rand:4/6,4/6 -============================ -input: -LifeIET -output: -Satasupe : 情報イベント表/〔生活〕:3:隣の奥さんと世間話。上位リンクを4つ得る -rand:2/6,1/6 -============================ -input: -LifeIET -output: -Satasupe : 情報イベント表/〔生活〕:12:ターゲットとは関係ないが、ドデかい情報を掘り当てる。その情報を売って〔サイフ〕が全快する -rand:6/6,6/6 -============================ -input: -LifeIET -output: -Satasupe : 情報イベント表/〔生活〕:7:情報を得るついでに軽い営業。〔サイフ〕を1回復させ、上位リンクを3つ得る -rand:6/6,1/6 -============================ -input: -LoveIET -output: -Satasupe : 情報イベント表/〔恋愛〕:2:謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! -rand:1/6,1/6 -============================ -input: -LoveIET -output: -Satasupe : 情報イベント表/〔恋愛〕:12:愛する人の死。自分に恋人がいれば、1人選んで、そのキャラクターを死亡させる。その代わり情報ゲット! -rand:6/6,6/6 -============================ -input: -LoveIET -output: -Satasupe : 情報イベント表/〔恋愛〕:9:持つべきものは愛の奴隷。自分のトリコの数だけ好きなタグの上位リンクを得る -rand:4/6,5/6 -============================ -input: -LoveIET -output: -Satasupe : 情報イベント表/〔恋愛〕:6:昔の恋人がそれに詳しかったはず。その日の深夜・早朝に行動しなければ、好きなタグの上位リンク(SL+2)を1つ得る -rand:3/6,3/6 -============================ -input: -LoveIET -output: -Satasupe : 情報イベント表/〔恋愛〕:11:有力者からの突然のご指名。チームの仲間を1人、ランダムに決定する。差し出すなら、そのキャラクターは次の1ターン行動できない代わり、その後にそのキャラクターの〔恋愛〕と同じ数の上位リンクを得る -rand:5/6,6/6 -============================ -input: -LoveIET -output: -Satasupe : 情報イベント表/〔恋愛〕:5:敵対する亜侠と第一種接近遭遇。キスのあとの濡れた唇から、上位リンクを3つ得る -rand:1/6,4/6 -============================ -input: -LoveIET -output: -Satasupe : 情報イベント表/〔恋愛〕:8:関係者とすてきな時間を過ごす。好きなタグの上位リンクを1つ得る。ただし、次の1ターンは行動できない -rand:3/6,5/6 -============================ -input: -LoveIET -output: -Satasupe : 情報イベント表/〔恋愛〕:9:持つべきものは愛の奴隷。自分のトリコの数だけ好きなタグの上位リンクを得る -rand:3/6,6/6 -============================ -input: -LoveIET -output: -Satasupe : 情報イベント表/〔恋愛〕:6:昔の恋人がそれに詳しかったはず。その日の深夜・早朝に行動しなければ、好きなタグの上位リンク(SL+2)を1つ得る -rand:1/6,5/6 -============================ -input: -LoveIET -output: -Satasupe : 情報イベント表/〔恋愛〕:4:とびきり美形の情報提供者と遭遇。〔性業値〕判定で律になると、好きなタグの上位リンクを1つ得る -rand:2/6,2/6 -============================ -input: -LoveIET -output: -Satasupe : 情報イベント表/〔恋愛〕:10:自分よりも10歳年上のイヤなやつに身体を売る。現在と同じタグの上位リンクを1つ得る -rand:4/6,6/6 -============================ -input: -LoveIET -output: -Satasupe : 情報イベント表/〔恋愛〕:7:情報はともかくトリコをゲット。データは「女子高生(p.122)」を使用する -rand:2/6,5/6 -============================ -input: -CultureIET -output: -Satasupe : 情報イベント表/〔教養〕:2:謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! -rand:1/6,1/6 -============================ -input: -CultureIET -output: -Satasupe : 情報イベント表/〔教養〕:12:アジトに謎の手紙が届く。自分のアジトに戻れば、情報ゲット! -rand:6/6,6/6 -============================ -input: -CultureIET -output: -Satasupe : 情報イベント表/〔教養〕:9:クールな推理がさえ渡る。〔精神点〕を好きなだけ消費する。その値と同じ数だけ好きなタグの上位リンクを得る -rand:6/6,3/6 -============================ -input: -CultureIET -output: -Satasupe : 情報イベント表/〔教養〕:7:検索エンジンにかけたらすぐヒット。コストを消費せず、上位リンクを4つ得る -rand:6/6,1/6 -============================ -input: -CultureIET -output: -Satasupe : 情報イベント表/〔教養〕:9:クールな推理がさえ渡る。〔精神点〕を好きなだけ消費する。その値と同じ数だけ好きなタグの上位リンクを得る -rand:5/6,4/6 -============================ -input: -CultureIET -output: -Satasupe : 情報イベント表/〔教養〕:8:警察無線を傍受。興味深い。好きなタグの上位リンクを2つ得る -rand:5/6,3/6 -============================ -input: -CultureIET -output: -Satasupe : 情報イベント表/〔教養〕:3:ネットで幻のリンクサイトを発見。すべての種類のタグに上位リンクがはられる -rand:2/6,1/6 -============================ -input: -CultureIET -output: -Satasupe : 情報イベント表/〔教養〕:11:図書館で幻の書物を発見。上位リンクを8つ得る。キャラクターシートのメモ欄に<クトゥルフ神話知識>、SANと記入し、それぞれ後ろに+5、-5の数値を書き加える -rand:5/6,6/6 -============================ -input: -CultureIET -output: -Satasupe : 情報イベント表/〔教養〕:10:図書館ロールが貫通。好きなタグの上位リンク(SL+3)を1つ得る -rand:6/6,4/6 -============================ -input: -CultureIET -output: -Satasupe : 情報イベント表/〔教養〕:8:警察無線を傍受。興味深い。好きなタグの上位リンクを2つ得る -rand:2/6,6/6 -============================ -input: -CombatIET -output: -Satasupe : 情報イベント表/〔戦闘〕:2:謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! -rand:1/6,1/6 -============================ -input: -CombatIET -output: -Satasupe : 情報イベント表/〔戦闘〕:12:お前の宿敵(データはブラックアドレス)が1D6体現れる。血戦によって相手を倒せば、情報ゲット。 -rand:6/6,6/6 -============================ -input: -CombatIET -output: -Satasupe : 情報イベント表/〔戦闘〕:2:謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! -rand:1/6,1/6 -============================ -input: -CombatIET -output: -Satasupe : 情報イベント表/〔戦闘〕:6:クスリ漬けの流氓を拳で『説得』。流氓はゲロと一緒に情報を吐き出した。2点のダメージ(セーブ不可)を受け、好きなタグの上位リンクを1つ得る。 -rand:1/6,5/6 -============================ -input: -CombatIET -output: -Satasupe : 情報イベント表/〔戦闘〕:6:クスリ漬けの流氓を拳で『説得』。流氓はゲロと一緒に情報を吐き出した。2点のダメージ(セーブ不可)を受け、好きなタグの上位リンクを1つ得る。 -rand:2/6,4/6 -============================ -input: -CombatIET -output: -Satasupe : 情報イベント表/〔戦闘〕:8:自称『善良な一市民』からの情報リークを受ける。オマエの持っている異能の数だけ上位リンクを得る。……罠か!? -rand:5/6,3/6 -============================ -input: -CombatIET -output: -Satasupe : 情報イベント表/〔戦闘〕:11:お前達を狙う刺客が冥土の土産に教えてくれる。お前自身かチームの仲間、お前の恋人のいずれかの〔肉体点〕を0点にすれば、情報をゲットできる。 -rand:6/6,5/6 -============================ -input: -CombatIET -output: -Satasupe : 情報イベント表/〔戦闘〕:9:サウナ風呂でくつろぐヤクザから情報収集。ヤクザは歯の折れた口から、弱々しい呻きと共に情報を吐き出した。好きなだけダメージを受ける(セーブ不可)。好きなタグの受けたダメージと同じ値のSLへリンクを1つ得る。 -rand:4/6,5/6 -============================ -input: -CombatIET -output: -Satasupe : 情報イベント表/〔戦闘〕:8:自称『善良な一市民』からの情報リークを受ける。オマエの持っている異能の数だけ上位リンクを得る。……罠か!? -rand:4/6,4/6 -============================ -input: -CombatIET -output: -Satasupe : 情報イベント表/〔戦闘〕:8:自称『善良な一市民』からの情報リークを受ける。オマエの持っている異能の数だけ上位リンクを得る。……罠か!? -rand:3/6,5/6 -============================ -input: -CrimeIHT -output: -Satasupe : 情報ハプニング表/〔犯罪〕:2:謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! -rand:1/6,1/6 -============================ -input: -CrimeIHT -output: -Satasupe : 情報ハプニング表/〔犯罪〕:12:頼れる協力者のもとへ行くと、彼(彼女)の無惨な姿が……自分の持っている現在のセッションに参加していないキャラクター1体を選び、〔肉体点〕を0にする。そして、致命傷表(p.61)を振ること -rand:6/6,6/6 -============================ -input: -CrimeIHT -output: -Satasupe : 情報ハプニング表/〔犯罪〕:3:警官からの職務質問。一晩拘留される。臭い飯表(p.70)を1回振ること -rand:1/6,2/6 -============================ -input: -CrimeIHT -output: -Satasupe : 情報ハプニング表/〔犯罪〕:9:敵対する盟約のいざこざに巻き込まれる。〔肉体点〕に1D6点のセーブ不可なダメージを受ける -rand:5/6,4/6 -============================ -input: -CrimeIHT -output: -Satasupe : 情報ハプニング表/〔犯罪〕:7:そのトピックを取りしきる盟約に目をつけられる。このトピックと同じタグのトピックからはリンクをはれなくなる -rand:2/6,5/6 -============================ -input: -CrimeIHT -output: -Satasupe : 情報ハプニング表/〔犯罪〕:9:敵対する盟約のいざこざに巻き込まれる。〔肉体点〕に1D6点のセーブ不可なダメージを受ける -rand:3/6,6/6 -============================ -input: -CrimeIHT -output: -Satasupe : 情報ハプニング表/〔犯罪〕:6:超えてはならない一線を越える。トラウマを1点受ける -rand:5/6,1/6 -============================ -input: -CrimeIHT -output: -Satasupe : 情報ハプニング表/〔犯罪〕:8:過去の亡霊がきみを襲う。自分の修得している異能の中から好きな1つを選ぶ。このセッションでは、その異能が使用不可になる -rand:5/6,3/6 -============================ -input: -CrimeIHT -output: -Satasupe : 情報ハプニング表/〔犯罪〕:4:だますつもりがだまされる。〔サイフ〕を1点消費 -rand:2/6,2/6 -============================ -input: -CrimeIHT -output: -Satasupe : 情報ハプニング表/〔犯罪〕:3:警官からの職務質問。一晩拘留される。臭い飯表(p.70)を1回振ること -rand:2/6,1/6 -============================ -input: -LifeIHT -output: -Satasupe : 情報ハプニング表/〔生活〕:2:謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! -rand:1/6,1/6 -============================ -input: -LifeIHT -output: -Satasupe : 情報ハプニング表/〔生活〕:12:覚えのない借金の返済を迫られる。〔サイフ〕を1D6点減らす。〔サイフ〕が足りない場合、そのセッション終了時までに不足分を支払わないと【借金大王】(p.119)の代償を得る -rand:6/6,6/6 -============================ -input: -LifeIHT -output: -Satasupe : 情報ハプニング表/〔生活〕:10:留守の間にアジトが火事に! 〔アジト装備〕がすべて無くなる。明日からどうしよう? -rand:5/6,5/6 -============================ -input: -LifeIHT -output: -Satasupe : 情報ハプニング表/〔生活〕:7:「押し売り(p.124)」が【追跡】を開始 -rand:2/6,5/6 -============================ -input: -LifeIHT -output: -Satasupe : 情報ハプニング表/〔生活〕:6:留守の間に空き巣が! 〔アジト装備〕からランダムにアイテムが1個無くなる -rand:4/6,2/6 -============================ -input: -LifeIHT -output: -Satasupe : 情報ハプニング表/〔生活〕:9:貧乏ひまなし。[1D6-自分の〔生活〕]ターンの間、行動できなくなる -rand:6/6,3/6 -============================ -input: -LifeIHT -output: -Satasupe : 情報ハプニング表/〔生活〕:7:「押し売り(p.124)」が【追跡】を開始 -rand:6/6,1/6 -============================ -input: -LifeIHT -output: -Satasupe : 情報ハプニング表/〔生活〕:4:壮大なる無駄使い。〔サイフ〕を1点消費 -rand:2/6,2/6 -============================ -input: -LifeIHT -output: -Satasupe : 情報ハプニング表/〔生活〕:4:壮大なる無駄使い。〔サイフ〕を1点消費 -rand:2/6,2/6 -============================ -input: -LifeIHT -output: -Satasupe : 情報ハプニング表/〔生活〕:7:「押し売り(p.124)」が【追跡】を開始 -rand:6/6,1/6 -============================ -input: -LoveIHT -output: -Satasupe : 情報ハプニング表/〔恋愛〕:2:謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! -rand:1/6,1/6 -============================ -input: -LoveIHT -output: -Satasupe : 情報ハプニング表/〔恋愛〕:12:生命の誕生。子供ができる -rand:6/6,6/6 -============================ -input: -LoveIHT -output: -Satasupe : 情報ハプニング表/〔恋愛〕:10:乱れた性生活に疲れる。〔肉体点〕と〔精神点〕がともに2点減少する -rand:6/6,4/6 -============================ -input: -LoveIHT -output: -Satasupe : 情報ハプニング表/〔恋愛〕:5:一晩を楽しむが相手は年齢を10偽っていた。ロマンス判定のファンブル表を振ること -rand:4/6,1/6 -============================ -input: -LoveIHT -output: -Satasupe : 情報ハプニング表/〔恋愛〕:7:「痴漢・痴女(p.124)」が【追跡】を開始 -rand:5/6,2/6 -============================ -input: -LoveIHT -output: -Satasupe : 情報ハプニング表/〔恋愛〕:5:一晩を楽しむが相手は年齢を10偽っていた。ロマンス判定のファンブル表を振ること -rand:3/6,2/6 -============================ -input: -LoveIHT -output: -Satasupe : 情報ハプニング表/〔恋愛〕:7:「痴漢・痴女(p.124)」が【追跡】を開始 -rand:1/6,6/6 -============================ -input: -LoveIHT -output: -Satasupe : 情報ハプニング表/〔恋愛〕:11:性病が伝染る。1日以内に病院に行き、治療(価格4)を行わないと、鼻がもげる。鼻がもげると〔恋愛〕が1点減少する -rand:6/6,5/6 -============================ -input: -LoveIHT -output: -Satasupe : 情報ハプニング表/〔恋愛〕:7:「痴漢・痴女(p.124)」が【追跡】を開始 -rand:5/6,2/6 -============================ -input: -LoveIHT -output: -Satasupe : 情報ハプニング表/〔恋愛〕:9:突然の別れ。トリコ欄からランダムに1体を選び、その名前を消す -rand:3/6,6/6 -============================ -input: -CultureIHT -output: -Satasupe : 情報ハプニング表/〔教養〕:2:謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! -rand:1/6,1/6 -============================ -input: -CultureIHT -output: -Satasupe : 情報ハプニング表/〔教養〕:12:ネットサーフィンにハマってしまい、ついつい時間が過ぎる。毎ターンのはじめに〔性業値〕判定を行い、律にならないとそのターンは行動できない。この効果は1日続く -rand:6/6,6/6 -============================ -input: -CultureIHT -output: -Satasupe : 情報ハプニング表/〔教養〕:5:唐突に睡魔が。次から2ターンの間、睡眠しなくてはならない -rand:1/6,4/6 -============================ -input: -CultureIHT -output: -Satasupe : 情報ハプニング表/〔教養〕:10:ボケる。〔教養〕が1点減少する -rand:4/6,6/6 -============================ -input: -CultureIHT -output: -Satasupe : 情報ハプニング表/〔教養〕:5:唐突に睡魔が。次から2ターンの間、睡眠しなくてはならない -rand:1/6,4/6 -============================ -input: -CultureIHT -output: -Satasupe : 情報ハプニング表/〔教養〕:12:ネットサーフィンにハマってしまい、ついつい時間が過ぎる。毎ターンのはじめに〔性業値〕判定を行い、律にならないとそのターンは行動できない。この効果は1日続く -rand:6/6,6/6 -============================ -input: -CultureIHT -output: -Satasupe : 情報ハプニング表/〔教養〕:7:「勧誘員(p.124)」が【追跡】を開始 -rand:5/6,2/6 -============================ -input: -CultureIHT -output: -Satasupe : 情報ハプニング表/〔教養〕:11:クラッキングに遭う。いままで調べていたトピックとリンクをすべて失う -rand:5/6,6/6 -============================ -input: -CultureIHT -output: -Satasupe : 情報ハプニング表/〔教養〕:7:「勧誘員(p.124)」が【追跡】を開始 -rand:1/6,6/6 -============================ -input: -CultureIHT -output: -Satasupe : 情報ハプニング表/〔教養〕:5:唐突に睡魔が。次から2ターンの間、睡眠しなくてはならない -rand:2/6,3/6 -============================ -input: -CombatIHT -output: -Satasupe : 情報ハプニング表/〔戦闘〕:2:謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット! -rand:1/6,1/6 -============================ -input: -CombatIHT -output: -Satasupe : 情報ハプニング表/〔戦闘〕:12:流氓の男の卑劣な罠にかかり、肥え喰らいの巣に落ちる!! 「掃き溜めの悪魔」1D6体と血戦を行う。戦いに勝たない限り、生きて帰ることはできないだろう……。もちろん血戦に勝ったところで情報は得られない。 -rand:6/6,6/6 -============================ -input: -CombatIHT -output: -Satasupe : 情報ハプニング表/〔戦闘〕:5:「俺にはもっと別の人生があったんじゃないだろうか……!?」突如、空しさがこみ上げて来る……その日は各ターンの始めに〔性業値〕判定を行う。失敗すると、酒に溺れ、そのターンは行動済みになる。 -rand:1/6,4/6 -============================ -input: -CombatIHT -output: -Satasupe : 情報ハプニング表/〔戦闘〕:11:宿敵によって深い疵を受ける。自分の修得している異能の中から、1つ選ぶこと。このセッションのあいだ、その異能を使用することができなくなる。 -rand:5/6,6/6 -============================ -input: -CombatIHT -output: -Satasupe : 情報ハプニング表/〔戦闘〕:6:クライムファイター仲間からスパイの容疑を受ける……1点のトラウマを追う。 -rand:5/6,1/6 -============================ -input: -CombatIHT -output: -Satasupe : 情報ハプニング表/〔戦闘〕:10:「お前はやり過ぎた」の書きおきと共に、友人の死体が発見される〔戦闘〕で難易度9の判定を行う。失敗すると、ランダムに選んだチームの仲間1人が死亡する。 -rand:5/6,5/6 -============================ -input: -CombatIHT -output: -Satasupe : 情報ハプニング表/〔戦闘〕:4:自宅に帰ると、無惨に破壊された君のおたからが転がっていた。「この件から手を引け」という書き置きと共に……。この情報フェイズでは、リンク判定を行ったトピックのタグの〔趣味〕を修得していた場合、それを未修得にする。また、おたからを持っていたなら、このセッション中、そのおたからは利用できなくなる。 -rand:3/6,1/6 -============================ -input: -CombatIHT -output: -Satasupe : 情報ハプニング表/〔戦闘〕:7:自宅の扉にメモが……!! 「今ならまだ間に合う」奴等はどこまで知っているんだ!? このトピックからは、これ以上リンクを伸ばせなくなる。 -rand:4/6,3/6 -============================ -input: -CombatIHT -output: -Satasupe : 情報ハプニング表/〔戦闘〕:7:自宅の扉にメモが……!! 「今ならまだ間に合う」奴等はどこまで知っているんだ!? このトピックからは、これ以上リンクを伸ばせなくなる。 -rand:6/6,1/6 -============================ -input: -CombatIHT -output: -Satasupe : 情報ハプニング表/〔戦闘〕:7:自宅の扉にメモが……!! 「今ならまだ間に合う」奴等はどこまで知っているんだ!? このトピックからは、これ以上リンクを伸ばせなくなる。 -rand:1/6,6/6 -============================ -input: -FumbleT -output: -Satasupe : 命中判定ファンブル表:2:自分の持ち物がすっぽぬけ、偶然敵を直撃! 持っているアイテムを1つ消し、ジオラマ上にいるキャラクター1人をランダムに選ぶ。そのキャラクターの〔肉体点〕を1D6ラウンドの間0点にし、行動不能にさせる(致命傷表は使用しない)。1D6ラウンドが経過し、行動不能から回復すると、そのキャラクターの〔肉体点〕は、行動不能になる直前の値にまで回復する -rand:1/6,1/6 -============================ -input: -FumbleT -output: -Satasupe : 命中判定ファンブル表:12:最悪の事態。〔肉体点〕を0にして、そのキャラクターは行動不能に(致命傷表は使用しない) -rand:6/6,6/6 -============================ -input: -FumbleT -output: -Satasupe : 命中判定ファンブル表:7:急に命が惜しくなる。性業値判定をすること。「激」なら戦闘を続行。「律」なら次のラウンドから全力移動を行い、ジオラマから逃走を試みる。「迷」なら次のラウンドは移動・攻撃フェイズに行動できない -rand:3/6,4/6 -============================ -input: -FumbleT -output: -Satasupe : 命中判定ファンブル表:8:誤って別の目標を攻撃。目標以外であなたに一番近いキャラクターに4ダメージ(セーブ不可)! -rand:4/6,4/6 -============================ -input: -FumbleT -output: -Satasupe : 命中判定ファンブル表:10:今使っている武器が壊れる。アイテム欄から使用中の武器を消すこと。銃器を使っていた場合、暴発して自分に6ダメージ! 武器なしの場合、体を傷つけ3ダメージ(共にセーブ不可)! -rand:6/6,4/6 -============================ -input: -FumbleT -output: -Satasupe : 命中判定ファンブル表:9:誤って自分を攻撃。3ダメージ(セーブ不可)! -rand:3/6,6/6 -============================ -input: -FumbleT -output: -Satasupe : 命中判定ファンブル表:2:自分の持ち物がすっぽぬけ、偶然敵を直撃! 持っているアイテムを1つ消し、ジオラマ上にいるキャラクター1人をランダムに選ぶ。そのキャラクターの〔肉体点〕を1D6ラウンドの間0点にし、行動不能にさせる(致命傷表は使用しない)。1D6ラウンドが経過し、行動不能から回復すると、そのキャラクターの〔肉体点〕は、行動不能になる直前の値にまで回復する -rand:1/6,1/6 -============================ -input: -FumbleT -output: -Satasupe : 命中判定ファンブル表:10:今使っている武器が壊れる。アイテム欄から使用中の武器を消すこと。銃器を使っていた場合、暴発して自分に6ダメージ! 武器なしの場合、体を傷つけ3ダメージ(共にセーブ不可)! -rand:6/6,4/6 -============================ -input: -FumbleT -output: -Satasupe : 命中判定ファンブル表:7:急に命が惜しくなる。性業値判定をすること。「激」なら戦闘を続行。「律」なら次のラウンドから全力移動を行い、ジオラマから逃走を試みる。「迷」なら次のラウンドは移動・攻撃フェイズに行動できない -rand:1/6,6/6 -============================ -input: -FumbleT -output: -Satasupe : 命中判定ファンブル表:7:急に命が惜しくなる。性業値判定をすること。「激」なら戦闘を続行。「律」なら次のラウンドから全力移動を行い、ジオラマから逃走を試みる。「迷」なら次のラウンドは移動・攻撃フェイズに行動できない -rand:3/6,4/6 -============================ -input: -FatalT -output: -Satasupe : 致命傷表:2:死亡。 -rand:1/6,1/6 -============================ -input: -FatalT -output: -Satasupe : 致命傷表:12:奇跡的に無傷。さきほどのダメージを無効に。 -rand:6/6,6/6 -============================ -input: -FatalT -output: -Satasupe : 致命傷表:5:昏睡して行動不能。1D6ターン以内に治療し、〔肉体点〕を1以上にしないと死亡。 -rand:4/6,1/6 -============================ -input: -FatalT -output: -Satasupe : 致命傷表:6:大怪我で行動不能。体の部位のどこかを欠損してしまう。任意の〔能力値〕1つが1点減少。 -rand:5/6,1/6 -============================ -input: -FatalT -output: -Satasupe : 致命傷表:6:大怪我で行動不能。体の部位のどこかを欠損してしまう。任意の〔能力値〕1つが1点減少。 -rand:4/6,2/6 -============================ -input: -FatalT -output: -Satasupe : 致命傷表:9:気絶して行動不能。1ターン後、〔肉体点〕が1になる。 -rand:4/6,5/6 -============================ -input: -FatalT -output: -Satasupe : 致命傷表:4:昏睡して行動不能。1D6ラウンド以内に治療し、〔肉体点〕を1以上にしないと死亡。 -rand:1/6,3/6 -============================ -input: -FatalT -output: -Satasupe : 致命傷表:5:昏睡して行動不能。1D6ターン以内に治療し、〔肉体点〕を1以上にしないと死亡。 -rand:3/6,2/6 -============================ -input: -FatalT -output: -Satasupe : 致命傷表:10:気絶して行動不能。1D6ラウンド後、〔肉体点〕が1になる。 -rand:4/6,6/6 -============================ -input: -FatalT -output: -Satasupe : 致命傷表:2:死亡。 -rand:1/6,1/6 -============================ -input: -AccidentT -output: -Satasupe : アクシデント表:2:ゴミか何かが降ってきて、視界を塞ぐ。以降のケチャップに関する判定に修正が+1つく。あなたが追う側なら逃げる側のコマを2マス進める(逃げる側なら自分を2マス戻す) -rand:1/6,1/6 -============================ -input: -AccidentT -output: -Satasupe : アクシデント表:12:信号を無視しちまったら後ろで事故が起きた。警察のサイレンが鳴り響いてくる。DDはケチャップの最後尾に警察の乗物を加えろ。データは「制服警官(p.129)」のものを使用 -rand:6/6,6/6 -============================ -input: -AccidentT -output: -Satasupe : アクシデント表:10:うっかり落し物。〔通常装備〕欄からアイテムを1個選んで消す -rand:5/6,5/6 -============================ -input: -AccidentT -output: -Satasupe : アクシデント表:9:軽い故障が起きちまった。以降のケチャップに関する行為判定に修正が+1つく -rand:4/6,5/6 -============================ -input: -AccidentT -output: -Satasupe : アクシデント表:7:何かの障害物に衝突する。運転手は難易度7の〔精神〕の判定を行うこと。失敗したら、乗物と乗組員全員は2D6ダメージを受けた上に、ケチャップから脱落。成功しても、あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す) -rand:3/6,4/6 -============================ -input: -AccidentT -output: -Satasupe : アクシデント表:11:あやうく人にぶつかりそうになる。運転手は難易度9の〔精神〕の判定を行う。失敗したら、その一般人を殺してしまう。あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す) -rand:6/6,5/6 -============================ -input: -AccidentT -output: -Satasupe : アクシデント表:7:何かの障害物に衝突する。運転手は難易度7の〔精神〕の判定を行うこと。失敗したら、乗物と乗組員全員は2D6ダメージを受けた上に、ケチャップから脱落。成功しても、あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す) -rand:5/6,2/6 -============================ -input: -AccidentT -output: -Satasupe : アクシデント表:9:軽い故障が起きちまった。以降のケチャップに関する行為判定に修正が+1つく -rand:4/6,5/6 -============================ -input: -AccidentT -output: -Satasupe : アクシデント表:7:何かの障害物に衝突する。運転手は難易度7の〔精神〕の判定を行うこと。失敗したら、乗物と乗組員全員は2D6ダメージを受けた上に、ケチャップから脱落。成功しても、あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す) -rand:3/6,4/6 -============================ -input: -AccidentT -output: -Satasupe : アクシデント表:8:走ってる途中に〔趣味〕に関する何かが目に映る。性業値判定を行うこと。「激」になると思わず見とれてしまう。あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す) -rand:2/6,6/6 -============================ -input: -GeneralAT -output: -Satasupe : 汎用アクシデント表:2:痛恨のミス。激しく状況が悪化する。以降のケチャップに関する行為判定の難易度に+1の修正がつき、あなたが追う側なら逃げる側のコマを2マス進める(逃げる側なら自分を2マス戻す) -rand:1/6,1/6 -============================ -input: -GeneralAT -output: -Satasupe : 汎用アクシデント表:12:頭の中が真っ白になる。〔精神点〕を1D6減少する。 -rand:6/6,6/6 -============================ -input: -GeneralAT -output: -Satasupe : 汎用アクシデント表:10:うっかり持ち物を見失う。〔通常装備〕欄からアイテムを1個選んで消す -rand:5/6,5/6 -============================ -input: -GeneralAT -output: -Satasupe : 汎用アクシデント表:7:スランプ! 思わず足踏みしてしまう。ムーブ判定を行った者は、ムーブ判定に使用した能力値を使って難易度7の判定を行うこと。失敗したら、ムーブ判定を行ったキャラクターは、ケチャップから脱落。成功しても、あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す) -rand:5/6,2/6 -============================ -input: -GeneralAT -output: -Satasupe : 汎用アクシデント表:7:スランプ! 思わず足踏みしてしまう。ムーブ判定を行った者は、ムーブ判定に使用した能力値を使って難易度7の判定を行うこと。失敗したら、ムーブ判定を行ったキャラクターは、ケチャップから脱落。成功しても、あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す) -rand:4/6,3/6 -============================ -input: -GeneralAT -output: -Satasupe : 汎用アクシデント表:4:もうダメだ……。絶望感が襲いかかってくる。後3ラウンド以内にケリをつけないと、あなたが追う側なら自動的に逃げる側が勝利する(逃げる側なら追う側が勝利する) -rand:2/6,2/6 -============================ -input: -GeneralAT -output: -Satasupe : 汎用アクシデント表:10:うっかり持ち物を見失う。〔通常装備〕欄からアイテムを1個選んで消す -rand:4/6,6/6 -============================ -input: -GeneralAT -output: -Satasupe : 汎用アクシデント表:7:スランプ! 思わず足踏みしてしまう。ムーブ判定を行った者は、ムーブ判定に使用した能力値を使って難易度7の判定を行うこと。失敗したら、ムーブ判定を行ったキャラクターは、ケチャップから脱落。成功しても、あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す) -rand:4/6,3/6 -============================ -input: -GeneralAT -output: -Satasupe : 汎用アクシデント表:7:スランプ! 思わず足踏みしてしまう。ムーブ判定を行った者は、ムーブ判定に使用した能力値を使って難易度7の判定を行うこと。失敗したら、ムーブ判定を行ったキャラクターは、ケチャップから脱落。成功しても、あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す) -rand:1/6,6/6 -============================ -input: -GeneralAT -output: -Satasupe : 汎用アクシデント表:7:スランプ! 思わず足踏みしてしまう。ムーブ判定を行った者は、ムーブ判定に使用した能力値を使って難易度7の判定を行うこと。失敗したら、ムーブ判定を行ったキャラクターは、ケチャップから脱落。成功しても、あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す) -rand:2/6,5/6 -============================ -input: -AfterT -output: -Satasupe : その後表:2:ここらが潮時かもしれない。2D6を振り、その目が自分の修得している代償未満であれば、そのキャラクターは引退し、二度と使用できない -rand:1/6,1/6 -============================ -input: -AfterT -output: -Satasupe : その後表:12:〔性業値〕が1以下、もしくは13以上だった場合、そのキャラクターは大阪の闇に消える。そのキャラクターは引退し、二度と使用できない -rand:6/6,6/6 -============================ -input: -AfterT -output: -Satasupe : その後表:6:思わず意気投合。今回登場したNPC1人を選び、そのキャラクターとの【コネ】(p.95)を修得する -rand:2/6,4/6 -============================ -input: -AfterT -output: -Satasupe : その後表:7:今回の事件で様々な教訓を得る。自分の修得しているアドバンスドカルマの中から、汎用以外のものを好きなだけ選ぶ。そのカルマの異能と代償を、別な異能と代償に変更することができる -rand:2/6,5/6 -============================ -input: -AfterT -output: -Satasupe : その後表:9:色々な運命を感じる。今回のセッションでトリコができていた場合、経験点の消費なしにそのトリコを常備化することができる。また、自分が誰かのトリコになっていた場合、その人物への【トリコ】(p.95)の代償を得る -rand:4/6,5/6 -============================ -input: -AfterT -output: -Satasupe : その後表:11:くそっ! ここから出せ!! 今回のセッションで逮捕されていたら、【前科】(p.95)の代償を得る -rand:5/6,6/6 -============================ -input: -AfterT -output: -Satasupe : その後表:7:今回の事件で様々な教訓を得る。自分の修得しているアドバンスドカルマの中から、汎用以外のものを好きなだけ選ぶ。そのカルマの異能と代償を、別な異能と代償に変更することができる -rand:3/6,4/6 -============================ -input: -AfterT -output: -Satasupe : その後表:10:やっぱり亜侠も楽じゃないかも。今回のセッションで何かツラい目にあっていた場合、【日常】(p.95)を取得する -rand:6/6,4/6 -============================ -input: -AfterT -output: -Satasupe : その後表:6:思わず意気投合。今回登場したNPC1人を選び、そのキャラクターとの【コネ】(p.95)を修得する -rand:2/6,4/6 -============================ -input: -AfterT -output: -Satasupe : その後表:7:今回の事件で様々な教訓を得る。自分の修得しているアドバンスドカルマの中から、汎用以外のものを好きなだけ選ぶ。そのカルマの異能と代償を、別な異能と代償に変更することができる -rand:1/6,6/6 -============================ -input: -RomanceFT -output: -Satasupe : ロマンスファンブル表:2:みんなあいそをつかす。自分のトリコ欄のキャラクターの名前をすべて消すこと -rand:1/6,1/6 -============================ -input: -RomanceFT -output: -Satasupe : ロマンスファンブル表:12:トリコからの監視! このセッションの間、ロマンス判定のファンブル率が自分のトリコの所持数と同じだけ上昇する -rand:6/6,6/6 -============================ -input: -RomanceFT -output: -Satasupe : ロマンスファンブル表:8:平手うち! 自分の〔肉体点〕が1D6点減少する -rand:2/6,6/6 -============================ -input: -RomanceFT -output: -Satasupe : ロマンスファンブル表:10:無礼な失言をしてしまう。対象はあなたに対し「憎悪(p.120参照)」の反応を抱き、あなたはその対象の名前を書き込んだ【仇敵】の代償を得る -rand:4/6,6/6 -============================ -input: -RomanceFT -output: -Satasupe : ロマンスファンブル表:9:浮気がばれる。恋人関係にあるトリコがいれば、そのキャラクターの名前をあなたのトリコ欄から消す -rand:6/6,3/6 -============================ -input: -RomanceFT -output: -Satasupe : ロマンスファンブル表:5:修羅場! 対象とは別にトリコを所有していれば、そのキャラクターが現れ、あなたと対象に血戦をしかけてくる -rand:3/6,2/6 -============================ -input: -RomanceFT -output: -Satasupe : ロマンスファンブル表:8:平手うち! 自分の〔肉体点〕が1D6点減少する -rand:3/6,5/6 -============================ -input: -RomanceFT -output: -Satasupe : ロマンスファンブル表:8:平手うち! 自分の〔肉体点〕が1D6点減少する -rand:6/6,2/6 -============================ -input: -RomanceFT -output: -Satasupe : ロマンスファンブル表:8:平手うち! 自分の〔肉体点〕が1D6点減少する -rand:2/6,6/6 -============================ -input: -RomanceFT -output: -Satasupe : ロマンスファンブル表:11:ショックな一言。トラウマを1点受ける -rand:5/6,6/6 -============================ -input: -NPCT -output: -Satasupe : NPC表:青年(26歳):ワイルドな同い年が好き。 -rand:3/6,4/6,6/6,1/6,5/6,2/3 -============================ -input: -NPCT -output: -Satasupe : NPC表:中年(39歳):お金持ちな年下が好き。 -rand:4/6,1/6,5/6,2/6,6/6,2/6,1/3 -============================ -input: -NPCT -output: -Satasupe : NPC表:中年(34歳):知的な年下が好き。 -rand:4/6,2/6,1/6,4/6,2/6,4/6,1/3 -============================ -input: -NPCT -output: -Satasupe : NPC表:中年(46歳):知的な同い年が好き。 -rand:4/6,6/6,3/6,6/6,6/6,4/6,2/3 -============================ -input: -NPCT -output: -Satasupe : NPC表:幼年(16歳):ワイルドな同い年が好き。 -rand:1/6,5/6,5/6,5/6,2/3 -============================ -input: -NPCT -output: -Satasupe : NPC表:幼年(12歳):お金持ちな年下が好き。 -rand:1/6,4/6,2/6,2/6,1/3 -============================ -input: -NPCT -output: -Satasupe : NPC表:壮年(65歳):ダークな年下が好き。 -rand:5/6,6/6,4/6,6/6,3/6,6/6,1/6,1/3 -============================ -input: -NPCT -output: -Satasupe : NPC表:青年(24歳):お金持ちな同い年が好き。 -rand:3/6,1/6,3/6,5/6,2/6,2/3 -============================ -input: -NPCT -output: -Satasupe : NPC表:少年(12歳):バランスがとれてる年下が好き。 -rand:2/6,1/6,1/6,6/6,1/3 -============================ -input: -NPCT -output: -Satasupe : NPC表:少年(16歳):知的な同い年が好き。 -rand:2/6,4/6,2/6,4/6,2/3 -============================ -input: -KusaiMT -output: -Satasupe : 臭い飯表:2:やあ署長、ご苦労さん。いつでも好きなときに留置所を出ることができる。 -rand:1/6,1/6 -============================ -input: -KusaiMT -output: -Satasupe : 臭い飯表:12:起訴されて有罪に。海上刑務所行き。終身刑。そのキャラクターは引退する。 -rand:6/6,6/6 -============================ -input: -EnterT -output: -Satasupe : 登場表:2:「こっから先にはいかせないぜ」 【仇敵】がいれば現われ、血戦が始まる。現在の血戦、もしくはケチャップが終了したら、処理を行うこと。 -rand:1/6,1/6 -============================ -input: -EnterT -output: -Satasupe : 登場表:12:くあー。完全に道に迷っちまった。この実行フェイズには登場できない。 -rand:6/6,6/6 -============================ -input: -BudTT -output: -Satasupe : バッドトリップ表:2:自分の身の周りにいる人たちが異様な何か(悪魔、宇宙人、ゾンビ、お前と同じ顔をした誰か…)に変貌し襲い掛かってくる。お前はNPCとなって、同じ場所にいる誰かに血戦をしかける。血戦が終了すれば(そして生きていれば)、視界は元に戻っている。 -rand:1/6,1/6 -============================ -input: -BudTT -output: -Satasupe : バッドトリップ表:12:神々しい声が聞こえてくる。1D6ターンの間、自分の好きな能力値を1点上昇することができる。 -rand:6/6,6/6 -============================ -input: -BudTT -output: -Satasupe : バッドトリップ表:5:誰かが自分を殺そうと企んでいるような錯覚を覚える。1D6ターンの間、ペテン師の代償【疑心暗鬼】を修得する。 -rand:4/6,1/6 -============================ -input: -BudTT -output: -Satasupe : バッドトリップ表:7:目の前にいる人物が非常にいとおしく思えてくる。同じ場所にいるキャラクターの中からランダムに1人選ぶ。1D6ターンの間、そのキャラクターのトリコになる。 -rand:6/6,1/6 -============================ -input: -BudTT -output: -Satasupe : バッドトリップ表:8:魅力的な裸の異性が、あなたの目の前で誘惑する幻覚を見る。〔性業値〕判定を行う。「激」になると服を脱ぎだす。もしも外にいればそのエリアの〔治安〕の難易度の〔犯罪〕判定を行う。失敗すると「臭い飯」表を振る。 -rand:6/6,2/6 -============================ -input: -BudTT -output: -Satasupe : バッドトリップ表:9:お前は痛みを感じなくなる。1D6ターンの間、〔肉体点〕の重症のペナルティが無効化される。 -rand:6/6,3/6 -============================ -input: -GetgT -output: -Satasupe : 報酬・ガラクタ表:2:持ち主の〔生活〕と等しい個数の《食事》(基本80p、小道具・日用品) -rand:1/6,1/6 -============================ -input: -GetgT -output: -Satasupe : 報酬・ガラクタ表:12:持ち主の〔趣味〕からランダムに1種類選ぶ。その趣味おたからを1個ランダムに選ぶ。 -rand:6/6,6/6 -============================ -input: -GetzT -output: -Satasupe : 報酬・実用品表:2:持ち主と同じタイプの汎用おたから(基本82p、汎用おたから) -rand:1/6,1/6 -============================ -input: -GetzT -output: -Satasupe : 報酬・実用品表:12:《札束》(基本78p、小道具・お金) -rand:6/6,6/6 -============================ -input: -GetnT -output: -Satasupe : 報酬・値打ち物表:2:社会的身分。【日常】の異能を手に入れる。 -rand:1/6,1/6 -============================ -input: -GetnT -output: -Satasupe : 報酬・値打ち物表:12:《宝箱》(基本78p、小道具・お金) -rand:6/6,6/6 -============================ -input: -GetkT -output: -Satasupe : 報酬・奇天烈表:2:好きな盟約おたから1個(プレイヤー全員で相談して決定) -rand:1/6,1/6 -============================ -input: -GetkT+1 -output: -Satasupe : 報酬・奇天烈表:3:《気球》(基本76p、乗物) -rand:1/6,1/6 -============================ -input: -GetkT=2 -output: -Satasupe : 報酬・奇天烈表:2:好きな盟約おたから1個(プレイヤー全員で相談して決定) -rand: -============================ -input: -GetkT-1 -output: -Satasupe : 報酬・奇天烈表:2:好きな盟約おたから1個(プレイヤー全員で相談して決定) -rand:2/6,1/6 -============================ -input: -GetkT-1 -output: -Satasupe : 報酬・奇天烈表:2:好きな盟約おたから1個(プレイヤー全員で相談して決定) -rand:1/6,1/6 -============================ -input: -GetkT2 -output: -Satasupe : 報酬・奇天烈表:12:「先にイッてるぜ」そのキャラクター1体を倒した者に経験点が1点与えられる。 -報酬・奇天烈表:7:何もなかった(涙)。残念でした。 -rand:6/6,6/6,1/6,6/6 -============================ -input: -GetkT2+1 -output: -Satasupe : 報酬・奇天烈表:3:《気球》(基本76p、乗物) -報酬・奇天烈表:7:何もなかった(涙)。残念でした。 -rand:1/6,1/6,1/6,5/6 -============================ -input: -GetkT2-1 -output: -Satasupe : 報酬・奇天烈表:2:好きな盟約おたから1個(プレイヤー全員で相談して決定) -報酬・奇天烈表:7:何もなかった(涙)。残念でした。 -rand:2/6,1/6,3/6,5/6 -============================ -input: -SR6 -output: -Satasupe : 〔性業値〕6、「修正値」0 > ダイス結果:(5) > 5+(0)=5 > 「律」 -rand:3/6,2/6 -============================ -input: -SR6 -output: -Satasupe : 〔性業値〕6、「修正値」0 > ダイス結果:(7) > 7+(0)=7 > 「激」 -rand:4/6,3/6 -============================ -input: -SR6-1 -output: -Satasupe : 〔性業値〕6、「修正値」-1 > ダイス結果:(6) > 6+(-1)=5 > 「律」 -rand:3/6,3/6 -============================ -input: -SR6-1 -output: -Satasupe : 〔性業値〕6、「修正値」-1 > ダイス結果:(6) > 6+(-1)=5 > 「律」 -rand:4/6,2/6 -============================ -input: -SR6+1 -output: -Satasupe : 〔性業値〕6、「修正値」1 > ダイス結果:(4) > 4+(1)=5 > 「律」 -rand:3/6,1/6 -============================ -input: -SR6+1 -output: -Satasupe : 〔性業値〕6、「修正値」1 > ダイス結果:(5) > 5+(1)=6 > 「迷」 -rand:4/6,1/6 -============================ -input: -SR7 -output: -Satasupe : 〔性業値〕7、「修正値」0 > ダイス結果:(7) > 7+(0)=7 > 「迷」 -rand:4/6,3/6 -============================ -input: -SR7 -output: -Satasupe : 〔性業値〕7、「修正値」0 > ダイス結果:(2) > 2+(0)=2 > 「律」 > 1ゾロのため〔性業値〕が1点上昇! -rand:1/6,1/6 -============================ -input: -SR7 -output: -Satasupe : 〔性業値〕7、「修正値」0 > ダイス結果:(12) > 12+(0)=12 > 「激」 > 6ゾロのため〔性業値〕が1点減少! -rand:6/6,6/6 -============================ -input: -GETSST -output: -Satasupe : サタスペ作成:ベース部品:「大型の金属製の筒」 アクセサリ部品:「ガスボンベや殺虫剤」 -部品効果:「命中:8、ダメージ:5、耐久度3、両手」「爆発3」 -完成品:サタスペ (ダメージ+5・命中8・射撃、「両手」「爆発3」「サタスペ1」「耐久度3」) -rand:6/6,6/6,6/6 -============================ -input: -GETSST -output: -Satasupe : サタスペ作成:ベース部品:「紙製の筒」 アクセサリ部品:「パチンコ玉」 -部品効果:「命中:10、ダメージ:3、耐久度1」「武器破壊」 -完成品:サタスペ (ダメージ+3・命中10・射撃、「武器破壊」「サタスペ1」「耐久度1」) -rand:1/6,1/6,1/6 -============================ -input: -GETSST -output: -Satasupe : サタスペ作成:ベース部品:「紙製の筒」 アクセサリ部品:「歯や牙、骨」 -部品効果:「命中:10、ダメージ:3、耐久度1」「(判定前宣言)1D6回、ダメージ+2」 -完成品:サタスペ (ダメージ+3・命中10・射撃、「(判定前宣言)6回だけ、ダメージ+2」「サタスペ1」「耐久度1」) -rand:1/6,2/6,5/6,6/6 -============================ -input: -GETSST2 -output: -Satasupe : サタスペ作成:ベース部品:「紙製の筒」 アクセサリ部品:「パチンコ玉」「パチンコ玉」 -部品効果:「命中:10、ダメージ:3、耐久度1」「武器破壊」「武器破壊」 -完成品:サタスペ (ダメージ+3・命中10・射撃、「武器破壊」「サタスペ2」「耐久度1」) -rand:1/6,1/6,1/6,1/6,1/6 -============================ -input: -GETSST2 -output: -Satasupe : サタスペ作成:ベース部品:「紙製の筒」 アクセサリ部品:「パチンコ玉」「ガスボンベや殺虫剤」 -部品効果:「命中:10、ダメージ:3、耐久度1」「武器破壊」「爆発3」 -完成品:サタスペ (ダメージ+3・命中10・射撃、「武器破壊」「爆発3」「サタスペ2」「耐久度1」) -rand:1/6,1/6,1/6,6/6,6/6 -============================ -input: -GETSST2 -output: -Satasupe : サタスペ作成:ベース部品:「紙製の筒」 アクセサリ部品:「パチンコ玉」「ガスボンベや殺虫剤」 -部品効果:「命中:10、ダメージ:3、耐久度1」「武器破壊」「爆発3」 -完成品:サタスペ (ダメージ+3・命中10・射撃、「武器破壊」「爆発3」「サタスペ2」「耐久度1」) -rand:1/6,1/6,1/6,6/6,6/6 -============================ -input: -CrimeIET+1  -output: -Satasupe : 情報イベント表/〔犯罪〕:8:その道の権威を紹介される。現在と同じタグの上位リンクを2つ得る -rand:3/6,4/6 -============================ -input: -CrimeIET-1 -output: -Satasupe : 情報イベント表/〔犯罪〕:6:偶然、他の亜侠の仕事現場に出くわす。口止め料の代わりに好きなタグの上位リンクを1つ得る -rand:3/6,4/6 -============================ -input: -CrimeIET=7 -output: -Satasupe : 情報イベント表/〔犯罪〕:7:あまりに適切な諜報活動。コストを消費せず、上位リンクを3つ得る -rand: -============================ -input: -2d6 -output: -Satasupe : (2D6) > 2[1,1] > 2 -rand:1/6,1/6 -============================ -input: -MinamiRET -output: -Satasupe : ミナミ遭遇表:2:(場所)大変だ、阪神が勝った。4000人のトラキチが、一緒に道頓堀に飛び込もうと迫る。飛び込むなら水中には「下水ワニ」(基本132p)が待っている。拒否するならトラキチたちは「ベンガル虎」(基本133p)を亜侠にけしかける。 -rand:1/6,1/6 -============================ -input: -MinamiRET -output: -Satasupe : ミナミ遭遇表:12:(一人)「円盤」(基本138p)に襲われ、さらわれる。1ターン経って戻ってくると、頭からアンテナが生えている。キャラクターイラストにアンテナを書き加えろ。それが嫌なら戦うこと。 -rand:6/6,6/6 -============================ -input: -MinamiRET -output: -Satasupe : ミナミ遭遇表:6:(一人)うっかり入った店が暴力喫茶だった! 「押し売り」(基本124p)相当。 -rand:3/6,3/6 -============================ -input: -ChinatownRET -output: -Satasupe : 中華街遭遇表:2:(一人)好みの恋愛対象に襲われて目くるめく一時を過ごす。だが1ターン経って目が覚めると、房中術で性転換させられている。 -rand:1/6,1/6 -============================ -input: -ChinatownRET -output: -Satasupe : 中華街遭遇表:12:(場所)「狂人」とその一党が現れた! キャラクターシートの「好きな映画」が空欄だった亜侠は、頭に火をつけられる。キャラクターのイラストから髪を取り除け。シートに顔を描いていなかった場合、キャラクターシートを燃やすか、自分の頭を燃やすか、〔肉体点〕を1減らすこと。「狂人」を倒すことはできない。彼は永遠だ。 -rand:6/6,6/6 -============================ -input: -ChinatownRET -output: -Satasupe : 中華街遭遇表:6:(場所)化石を売りつけようとする「押し売り」(基本124p)に遭遇。品物は1D6を振って決める。1:ゴモラの全身骨格、2:マチカネワニの涙、3:明石原人の糞石、4:生きた北京原人、5:豊臣秀吉15歳のしゃれこうべ、6:三葉虫ボトルキャップ -rand:3/6,3/6 -============================ -input: -WarshipLandRET -output: -Satasupe : 軍艦島遭遇表:2:(場所)蟹の押し売りに遭う。しかもただの押し売りではない、食い詰めた「超人兵士」(基本134p)だ! 蟹(価格3の「食事」(基本79p))を買うか、そうでなければ戦うこと。 -rand:1/6,1/6 -============================ -input: -WarshipLandRET -output: -Satasupe : 軍艦島遭遇表:12:(一人)「タイラー・ダーデン」に遭遇し、啓蒙される。これがお前の人生だ。お前はいつか必ず死ぬ。それを認識しない限り、お前は糞のままだ。〔肉体点〕と〔精神点〕に1ダメージ。〔性業値〕が2下がる。更にこのセッション中は「迷」が出ても「激」として扱う。 -rand:6/6,6/6 -============================ -input: -WarshipLandRET -output: -Satasupe : 軍艦島遭遇表:6:(場所)季節はずれの雪が降っている。青く光ってなんだかとても美しい。とりあえず〔肉体点〕と〔精神点〕に1ダメージ。 -rand:3/6,3/6 -============================ -input: -CivicCenterRET -output: -Satasupe : 官庁街遭遇表:2:(場所)大規模なデモにぶつかって身動きが取れなくなった。まずいと思う間もなく、列強の鎮圧部隊が容赦なく群集に向かって発砲する。阿鼻叫喚の中で全員〔肉体点〕に1D6のダメージ。 -rand:1/6,1/6 -============================ -input: -CivicCenterRET -output: -Satasupe : 官庁街遭遇表:12:(一人)閉鎖されているはずの地下鉄の入り口が開いている……。性業値判定で「激」が出るとふらふらと入ってしまい、1ターン経った後戻る。奇天烈の宝物表(基本140p)を1回振れる。トラウマを1点受け、中で起こったことは何も憶えていない。入り口は固く閉ざされ、もう開かない。……今のところは。 -rand:6/6,6/6 -============================ -input: -CivicCenterRET -output: -Satasupe : 官庁街遭遇表:6:(場所)観光客に写真を撮られる。このセッション中、亜侠に対する逮捕判定の難易度は-1される。 -rand:3/6,3/6 -============================ -input: -DowntownRET -output: -Satasupe : 十三遭遇表:2:(場所)地震だ! 亜侠自身には被害はないが、家が大変なことに。帰宅すると、アジト装備がランダムに1個壊れている。アジト装備がなかった場合、家が壊れている。 -rand:1/6,1/6 -============================ -input: -DowntownRET -output: -Satasupe : 十三遭遇表:12:(一人)好みの恋愛対象に誘われて夢のような時間を過ごし、気が付くと肥溜めに肩まで漬かっていることに気付く。おばけに化かされた!1ターン消費する。風呂に入って着替えるまで、あらゆる交渉は自動的に成功度が-1される。この効果は一緒に行動する仲間の判定にも影響する。 -rand:6/6,6/6 -============================ -input: -DowntownRET -output: -Satasupe : 十三遭遇表:6:(一人)地獄湯の「勝負師」(基本126p)に賭けを挑まれ、ざわざわする。 -rand:3/6,3/6 -============================ -input: -ShaokinRET -output: -Satasupe : 沙京遭遇表:2:(一人)いつのまにか、少女/少年が1人ついてきている。奴隷のようだが、亜侠を主人だと思っているらしく離れようとしない。何に相当するか1D6を振れ。1:【守るべき者】(基本103p)、2:愛人(基本80p)、3:使用人(基本80p)、4:居候(基本80p)、5:落とし穴(基本78p)、6:食事(基本79p)。性別はプレイヤーが決めてよい。 -rand:1/6,1/6 -============================ -input: -ShaokinRET -output: -Satasupe : 沙京遭遇表:12:(場所)祝祭だ! 巨大なジャガーノート(山車)が通りを突き進んでくる。これに轢かれると幸せな来世が保証されるのだ。性業値判定を3回振れ。全部「激」を出した亜侠は、思わず車輪の下に飛び込んで〔肉体点〕に10のダメージを受ける。この亜侠が死んだら、次に作るキャラクターに異能と代償を一つずつ受け継がせること。これがカルマだ。 -rand:6/6,6/6 -============================ -input: -ShaokinRET -output: -Satasupe : 沙京遭遇表:6:(場所)インド人が死んでいる……。死体を漁るなら1D6。1:カレー味の《視肉》(基本85p)、2:サファイア(札束(基本78p)相当)、3:《あわてるなタオル》(基本93p)、4:RPG-7(基本74p)、5:死体じゃなくて「ゾンビ」(137p)だった、6:「はきだめの悪魔」だった -rand:3/6,3/6 -============================ -input: -LoveLoveRET -output: -Satasupe : らぶらぶ遭遇表:2:(場所)お互いに運命を感じる。この後のロマンス判定で成功して、トリコを獲得した場合、セッション終了時にそのトリコを経験点消費なしに常備化できる。ただし、このトリコと別れたり、このトリコが死亡したりすると、経験点が1点減少する。 -rand:1/6,1/6 -============================ -input: -LoveLoveRET -output: -Satasupe : らぶらぶ遭遇表:12:(場所)「んー付き合っちゃおうか」デートに参加したキャラクターは、この後のロマンス判定が自動的に成功する。 -rand:6/6,6/6 -============================ -input: -LoveLoveRET -output: -Satasupe : らぶらぶ遭遇表:6:(一人)「…………」互いに遠慮して気まずい感じ。〔恋愛〕で難易度9の判定を行う。成功すると、この後のロマンス判定の難易度が1点減少する。失敗すると、この後のロマンス判定の難易度が2点上昇する。 -rand:3/6,3/6 -============================ -input: -AjitoRET -output: -Satasupe : アジト遭遇表:2:(一人)「強盗殺人の容疑で逮捕する! お前には黙秘権があり、供述は、法廷で不利な証拠として……」どやどやと踏み込んでくる警官たち。「制服警官」がお前を対象にして【逮捕】の異能を使ってくる。「制服警官」の判定が失敗すると、それ以降、このセッション中では、「臭い飯」表を振るとき、その2D6の目からマイナス3することができる。 -rand:1/6,1/6 -============================ -input: -AjitoRET -output: -Satasupe : アジト遭遇表:12:(一人)謎の贈り物が届く……。趣味おたからの中からランダムに1つを選び、それを獲得する。その後、1D6を振る。その目が、このイベントで趣味おたからを獲得した回数以下だった場合、贈り主の呪いによって2D6点のダメージを受ける(セーブ不可)。 -rand:6/6,6/6 -============================ -input: -AjitoRET -output: -Satasupe : アジト遭遇表:6:(一人)「よう、元気にしてるか?」家族や友人からの突然の連絡。懐かしい気持ちに高揚しつつも、優しい気持ちになる。〔性業値〕を1点上昇、もしくは1点減少することができる。 -rand:3/6,3/6 -============================ -input: -JigokuSpaRET -output: -Satasupe : 地獄湯遭遇表:2:(一人)なぜかあなたはローマ時代にタイムスリップする! 今後、このシナリオのあらゆる判定の難易度が1減少する(累積不可)。 -rand:1/6,1/6 -============================ -input: -JigokuSpaRET -output: -Satasupe : 地獄湯遭遇表:12:(一人)価格3の買い物を行うと、マッサージをしてもらえる。〔肉体点〕を1点、〔精神点〕を1D6点回復できる。 -rand:6/6,6/6 -============================ -input: -JigokuSpaRET -output: -Satasupe : 地獄湯遭遇表:6:(一人)あああ、なんか面白そうだなぁ。性業値判定を行う。「激」ならついついギャンブルゾーンに行ってしまう。「迷」なら行動済みになってしまう。「ギャンブル」の〔趣味〕の持ち主は、サイコロの目に2を加えること。 -rand:3/6,3/6 -============================ -input: -JailHouseRET -output: -Satasupe : JAILHOUSE遭遇表:2:「あちらのお客様からです」と渡されたグラス。その中には爆発寸前の《手榴弾》が入っていた。手榴弾はそのPCに命中したものとして扱う。 -rand:1/6,1/6 -============================ -input: -JailHouseRET -output: -Satasupe : JAILHOUSE遭遇表:12:「エルヴィス」があらわれ、店で奇跡的なまでに楽しいパーティーが行われる。チーム全員が気付くと1日が経過していた。 -rand:6/6,6/6 -============================ -input: -JailHouseRET -output: -Satasupe : JAILHOUSE遭遇表:6:誰かと荷物を間違えてしまう! 自分の装備からランダムに1個のアイテムを失う。その後、自分の〔生活〕と等しい報酬表を振ってアイテムを1つ手に入れる。 -rand:3/6,3/6 -============================ -input: -TreatmentIT -output: -Satasupe : 治療イベント表:2:不治の病だったことが分かる。1D6セッション後に死亡するが、今回以降のセッションで得られる経験値はすべて2倍になる。 -rand:1/6,1/6 -============================ -input: -TreatmentIT -output: -Satasupe : 治療イベント表:12:奇跡的な治療のワザ! 治療判定の結果に関わらず〔肉体点〕が全快する。 -rand:6/6,6/6 -============================ -input: -TreatmentIT -output: -Satasupe : 治療イベント表:6:急患が大量に運ばれてくる。これ以降、このセッション終了時まで、乃木クリニックの治療の価格が、すべて1上昇する。 -rand:3/6,3/6 -============================ -input: -CollegeIT -output: -Satasupe : 大学イベント表:2:運動家に勧誘される。〔精神点〕を2点減少する。 -rand:1/6,1/6 -============================ -input: -CollegeIT -output: -Satasupe : 大学イベント表:12:恋愛フラグが起動。チームの異性のキャラクターをランダムに1人選び、その人のトリコになる。また、選ばれた異性のキャラクターもランダムに異性キャラクターを1人選び、その人のトリコになる。 -rand:6/6,6/6 -============================ -input: -CollegeIT -output: -Satasupe : 大学イベント表:6:授業にもぐりこむ。すやすやと心地よい時間が過ぎ、〔精神点〕を6点回復する。 -rand:3/6,3/6 -============================ -input: -FatalVT -output: -Satasupe : 乗物致命傷表:2:乗物は破壊。乗物に乗車していたキャラクターは、性業値判定を行う。「激」か「迷」だった者は、大破に巻き込まれ、2D6点のダメージを受ける(セーブ不可)。 -rand:1/6,1/6 -============================ -input: -FatalVT -output: -Satasupe : 乗物致命傷表:12:「まだ走れるよ!」奇跡のような走り! さきほどのダメージを無効に。 -rand:6/6,6/6 -============================ -input: -FatalVT -output: -Satasupe : 乗物致命傷表:6:コロコロコロコロ……車輪が転がる。ダメだ。もう一歩も動かない。乗物が破壊される。 -rand:3/6,3/6 -============================ -input: -TimeUT -output: -Satasupe : 時間切れ表:2:は! 夢か。今までのことは夢だった。すべて世はこともなし。 -rand:1/6,1/6 -============================ -input: -TimeUT -output: -Satasupe : 時間切れ表:12:たらら、たらら、たらららら、たらららら♪ 大阪湾に怪獣王が現れる。大阪市は大混乱に! 全員、爆発4の効果を適用される。 -rand:6/6,6/6 -============================ -input: -TimeUT -output: -Satasupe : 時間切れ表:6:突如、みんなが歌い踊り出す。全員、〔教養〕で難易度9の判定を行う。失敗したキャラクターは、リズムを外して、トラウマを1点受ける。 -rand:3/6,3/6 -============================ -input: -PayT -output: -Satasupe : 落とし前表:2:闇のゲーム。ロシアンルーレットや地下闘技場への出場といった、致死率の高い理不尽な労働に従事させられる。この落とし前を1回受けるたびに、1D6を振る。1の出目が出ると、そのキャラクターは死亡する。 -rand:1/6,1/6 -============================ -input: -PayT -output: -Satasupe : 落とし前表:12:去勢。性的な機能を破壊される。この落とし前を受けると、「無言で押し倒す」ことができなくなる。この落とし前を二回以上受けると、そのキャラクターは死亡する。 -rand:6/6,6/6 -============================ -input: -PayT -output: -Satasupe : 落とし前表:6:部位破壊。指や手首を切り落とされたり、臓器を摘出されたりする。この落とし前を1回受けるたびに、「致命傷表」の6番の効果を受ける。 -rand:3/6,3/6 -============================ \ No newline at end of file diff --git a/src/src_bcdice/test/data/ScreamHighSchool.txt b/src/src_bcdice/test/data/ScreamHighSchool.txt deleted file mode 100644 index 8e579757e..000000000 --- a/src/src_bcdice/test/data/ScreamHighSchool.txt +++ /dev/null @@ -1,354 +0,0 @@ -input: -SH50 -output: -ScreamHighSchool : D100<=50@10 > 50 > 成功 -rand:50/100 -============================ -input: -SH50 -output: -ScreamHighSchool : D100<=50@10 > 51 > 失敗 -rand:51/100 -============================ -input: -SH50 -output: -ScreamHighSchool : D100<=50@10 > 95 > 失敗 -rand:95/100 -============================ -input: -SH50 -output: -ScreamHighSchool : D100<=50@10 > 96 > ファンブル -rand:96/100 -============================ -input: -SH96 -output: -ScreamHighSchool : D100<=96@19 > 96 > ファンブル -rand:96/100 -============================ -input: -SH99 -output: -ScreamHighSchool : D100<=99@19 > 96 > ファンブル -rand:96/100 -============================ -input: -SH100 -output: -ScreamHighSchool : D100<=100@20 > 96 > 成功 -rand:96/100 -============================ -input: -SH100 -output: -ScreamHighSchool : D100<=100@20 > 98 > 成功 -rand:98/100 -============================ -input: -SH100 -output: -ScreamHighSchool : D100<=100@20 > 99 > ファンブル -rand:99/100 -============================ -input: -SH50 -output: -ScreamHighSchool : D100<=50@10 > 11 > 成功 -rand:11/100 -============================ -input: -SH50 -output: -ScreamHighSchool : D100<=50@10 > 10 > クリティカル -rand:10/100 -============================ -input: -SH500 -output: -ScreamHighSchool : D100<=500@100 > 100 > クリティカル -rand:100/100 -============================ -input: -SH0 -output: -ScreamHighSchool : D100<=0@1 > 2 > 失敗 -rand:2/100 -============================ -input: -SH0 -output: -ScreamHighSchool : D100<=0@1 > 1 > クリティカル -rand:1/100 -============================ -input: -SH50 -output: -ScreamHighSchool : D100<=50@10 > 11 > 成功 -rand:11/100 -============================ -input: -SH50@11 -output: -ScreamHighSchool : D100<=50@11 > 11 > クリティカル -rand:11/100 -============================ -input: -SH50@11 -output: -ScreamHighSchool : D100<=50@11 > 12 > 成功 -rand:12/100 -============================ -input: -SH100/2 -output: -ScreamHighSchool : D100<=50@20 > 50 > 成功 -rand:50/100 -============================ -input: -SH100/2 -output: -ScreamHighSchool : D100<=50@20 > 51 > 失敗 -rand:51/100 -============================ -input: -SH100/2 -output: -ScreamHighSchool : D100<=50@20 > 96 > ファンブル -rand:96/100 -============================ -input: -SH100/2 -output: -ScreamHighSchool : D100<=50@20 > 21 > 成功 -rand:21/100 -============================ -input: -SH100/2 -output: -ScreamHighSchool : D100<=50@20 > 20 > クリティカル -rand:20/100 -============================ -input: -SH150/2 -output: -ScreamHighSchool : D100<=75@30 > 51 > 成功 -rand:51/100 -============================ -input: -SH150/2 -output: -ScreamHighSchool : D100<=75@30 > 30 > クリティカル -rand:30/100 -============================ -input: -SH150/3 -output: -ScreamHighSchool : D100<=50@30 > 51 > 失敗 -rand:51/100 -============================ -input: -SH153/3 -output: -ScreamHighSchool : D100<=51@30 > 51 > 成功 -rand:51/100 -============================ -input: -SH155/3 -output: -ScreamHighSchool : D100<=51@31 > 51 > 成功 -rand:51/100 -============================ -input: -SH152/3@44 -output: -ScreamHighSchool : D100<=50@44 > 51 > 失敗 -rand:51/100 -============================ -input: -SH152/3@51 -output: -ScreamHighSchool : D100<=50@51 > 51 > クリティカル -rand:51/100 -============================ -input: -SHS100 -output: -ScreamHighSchool : D100<=100@20 > 97 > 成功 -rand:97/100 -============================ -input: -SSH100 -output: -ScreamHighSchool : D100<=100@20 > 96 > 成功###secret dice### -rand:96/100 -============================ -input: -SSHS100 -output: -ScreamHighSchool : D100<=100@20 > 97 > 成功###secret dice### -rand:97/100 -============================ -input: -dcSL1 -output: -ScreamHighSchool : 負傷表:切断[1] > 軽傷1 | 切り傷 … 皮膚が切り裂かれる。 -rand: -============================ -input: -dcSL2 -output: -ScreamHighSchool : 負傷表:切断[2] > 軽傷1 | 切り傷 … 皮膚が切り裂かれる。 -rand: -============================ -input: -dcSL5 -output: -ScreamHighSchool : 負傷表:切断[5] > 軽傷1 | 切り傷 … 皮膚が切り裂かれる。 -rand: -============================ -input: -dcSL6 -output: -ScreamHighSchool : 負傷表:切断[6] > 軽傷2/マヒ | 脚部負傷 … 足が切り裂かれ、思わずひざまずく。 -rand: -============================ -input: -dcBL1 -output: -ScreamHighSchool : 負傷表:銃弾[1] > 軽傷2 | 腕部損傷 … 銃弾が腕をかすめた。 -rand: -============================ -input: -dcIM1 -output: -ScreamHighSchool : 負傷表:衝撃[1] > 軽傷1 | 打撲 … 攻撃を受けた箇所がどす黒く腫れ上がる。 -rand: -============================ -input: -dcBR1 -output: -ScreamHighSchool : 負傷表:灼熱[1] > 軽傷1 | 火傷 … 皮膚に小さな火傷を負う。 -rand: -============================ -input: -dcRF1 -output: -ScreamHighSchool : 負傷表:冷却[1] > 軽傷1 | 冷気 … 軽い凍傷を受ける。 -rand: -============================ -input: -dcEL1 -output: -ScreamHighSchool : 負傷表:電撃[1] > 疲労3 | 静電気 … 全身の毛が逆立つ。 -rand: -============================ -input: -EM50 -output: -ScreamHighSchool : 感情判定 D100<=50@10 > 51 > 失敗(次に行う判定の成功率に-20%、呪縛+1点) -rand:51/100 -============================ -input: -EM50 -output: -ScreamHighSchool : 感情判定 D100<=50@10 > 50 > 成功(次に行う判定の成功率に+30%) -rand:50/100 -============================ -input: -EM50 -output: -ScreamHighSchool : 感情判定 D100<=50@10 > 96 > ファンブル(次に行う判定の成功率に-50%、呪縛+1D5点) -rand:96/100 -============================ -input: -EM50@15 -output: -ScreamHighSchool : 感情判定 D100<=50@15 > 14 > クリティカル(次に行う判定の成功率に+50%) -rand:14/100 -============================ -input: -TR60 -output: -ScreamHighSchool : 性格傾向判定 D100<=60@12 > 61 > 失敗(反対側の性格傾向で再判定する。あるいは、もしこれがその再判定の結果であればプレイヤーが性格傾向を選択する) -rand:61/100 -============================ -input: -TR60 -output: -ScreamHighSchool : 性格傾向判定 D100<=60@12 > 60 > 成功(判定した性格傾向に従う) -rand:60/100 -============================ -input: -TR60 -output: -ScreamHighSchool : 性格傾向判定 D100<=60@12 > 97 > ファンブル(反対側の性格傾向に従い、呪縛+1D5点する。あるいは、もしこれが失敗後の再判定の結果だった場合、PCは混乱し行動を放棄するか逃げ出す。呪縛+2点) -rand:97/100 -============================ -input: -TR60@18 -output: -ScreamHighSchool : 性格傾向判定 D100<=60@18 > 17 > クリティカル(判定した性格傾向に従う) -rand:17/100 -============================ -input: -FE70 -output: -ScreamHighSchool : 恐怖判定 D100<=70@14 > 71 > 失敗(ショックを受けた。恐怖判定効果表の失敗側の値分、呪縛が上昇する) -rand:71/100 -============================ -input: -FE70 -output: -ScreamHighSchool : 恐怖判定 D100<=70@14 > 70 > 成功(ショックを受け流した。恐怖判定効果表の成功側の値分、呪縛が上昇する) -rand:70/100 -============================ -input: -FE70 -output: -ScreamHighSchool : 恐怖判定 D100<=70@14 > 98 > ファンブル(深いショックを受けた。恐怖判定効果表の失敗側の値分に加え、さらに1D5点分、呪縛が上昇する) -rand:98/100 -============================ -input: -FE70@19 -output: -ScreamHighSchool : 恐怖判定 D100<=70@19 > 19 > クリティカル(何もショックを受けなかった) -rand:19/100 -============================ -input: -SH(50+30) -output: -ScreamHighSchool : D100<=80@16 > 70 > 成功 -rand:70/100 -============================ -input: -SH(50+50) -output: -ScreamHighSchool : D100<=100@20 > 20 > クリティカル -rand:20/100 -============================ -input: -SH(50-20) -output: -ScreamHighSchool : D100<=30@6 > 50 > 失敗 -rand:50/100 -============================ -input: -SH(20-20) -output: -ScreamHighSchool : D100<=0@1 > 1 > クリティカル -rand:1/100 -============================ -input: -SH(20-50) -output: -ScreamHighSchool : D100<=0@1 > 1 > クリティカル -rand:1/100 -============================ -input: -FE(10-50)@3 -output: -ScreamHighSchool : 恐怖判定 D100<=0@3 > 3 > クリティカル(何もショックを受けなかった) -rand:3/100 -============================ diff --git a/src/src_bcdice/test/data/SevenFortressMobius.txt b/src/src_bcdice/test/data/SevenFortressMobius.txt deleted file mode 100644 index 064e5f9b3..000000000 --- a/src/src_bcdice/test/data/SevenFortressMobius.txt +++ /dev/null @@ -1,23 +0,0 @@ -input: -SFM -output: -SevenFortressMobius : (SFM@10#5) > 0+11[6,5] > 11 -rand:6/6,5/6 -============================ -input: -0SFM+5@8#6+3 -output: -SevenFortressMobius : (SFM+5@8#6+3) > 5-10[5,1] > ファンブル > -5 -rand:5/6,1/6 -============================ -input: -0SFM+5@8#6+3 -output: -SevenFortressMobius : (SFM+5@8#6+3) > 8+7[5,2] > 15 -rand:5/6,2/6 -============================ -input: -0SFM+5@8#6+3 -output: -SevenFortressMobius : (SFM+5@8#6+3) > 8+10[5,3]+7[5,2] > クリティカル > 25 -rand:5/6,3/6,5/6,2/6 diff --git a/src/src_bcdice/test/data/ShadowRun.txt b/src/src_bcdice/test/data/ShadowRun.txt deleted file mode 100644 index 9e10f6127..000000000 --- a/src/src_bcdice/test/data/ShadowRun.txt +++ /dev/null @@ -1,173 +0,0 @@ -input: -5U6>=7 -output: -ShadowRun : (5U6[6]>=7) > 3,3,7[6,1],7[6,1],9[6,3] > 成功数3 -rand:6/6,1/6,3/6,6/6,3/6,6/6,1/6,3/6 -============================ -input: -5U6>=7 -output: -ShadowRun : (5U6[6]>=7) > 1,1,2,5,5 > 成功数0 -rand:5/6,1/6,2/6,1/6,5/6 -============================ -input: -5U6>=7 -output: -ShadowRun : (5U6[6]>=7) > 3,4,4,5,5 > 成功数0 -rand:4/6,4/6,3/6,5/6,5/6 -============================ -input: -5U6>=7 -output: -ShadowRun : (5U6[6]>=7) > 1,1,3,4,8[6,2] > 成功数1 -rand:4/6,3/6,1/6,1/6,6/6,2/6 -============================ -input: -5U6>=7 -output: -ShadowRun : (5U6[6]>=7) > 2,2,3,4,10[6,4] > 成功数1 -rand:2/6,3/6,2/6,6/6,4/6,4/6 -============================ -input: -5U6>=7 -output: -ShadowRun : (5U6[6]>=7) > 1,3,3,4,5 > 成功数0 -rand:4/6,3/6,5/6,3/6,1/6 -============================ -input: -5U6>=7 -output: -ShadowRun : (5U6[6]>=7) > 2,2,2,3,5 > 成功数0 -rand:3/6,2/6,5/6,2/6,2/6 -============================ -input: -5U6>=7 -output: -ShadowRun : (5U6[6]>=7) > 1,2,2,3,5 > 成功数0 -rand:5/6,1/6,3/6,2/6,2/6 -============================ -input: -5U6>=7 -output: -ShadowRun : (5U6[6]>=7) > 3,3,5,8[6,2],9[6,3] > 成功数2 -rand:6/6,3/6,3/6,5/6,6/6,2/6,3/6 -============================ -input: -5U6>=7 -output: -ShadowRun : (5U6[6]>=7) > 2,4,5,5,10[6,4] > 成功数1 -rand:6/6,4/6,5/6,2/6,5/6,4/6 -============================ -input: -30U6>=7 -output: -ShadowRun : (30U6[6]>=7) > 1,1,1,2,3,3,3,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5,5,7[6,1],8[6,2],8[6,2],10[6,4],13[6,6,1] > 成功数5 -rand:5/6,5/6,5/6,1/6,2/6,5/6,3/6,3/6,4/6,6/6,6/6,1/6,5/6,3/6,4/6,6/6,1/6,1/6,6/6,2/6,4/6,5/6,3/6,1/6,3/6,3/6,4/6,6/6,2/6,5/6,6/6,4/6,3/6,3/6,3/6,4/6 -============================ -input: -30U6>=7 -output: -ShadowRun : (30U6[6]>=7) > 1,1,1,1,2,2,2,2,3,3,3,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5,7[6,1],8[6,2] > 成功数2 -rand:3/6,5/6,5/6,6/6,2/6,4/6,1/6,2/6,2/6,1/6,3/6,4/6,3/6,1/6,3/6,6/6,1/6,5/6,2/6,3/6,2/6,1/6,5/6,3/6,5/6,5/6,3/6,3/6,4/6,3/6,4/6,4/6 -============================ -input: -30U6>=7 -output: -ShadowRun : (30U6[6]>=7) > 1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,9[6,3] > 成功数1 -rand:3/6,1/6,6/6,3/6,4/6,3/6,4/6,3/6,1/6,1/6,4/6,3/6,2/6,2/6,3/6,4/6,2/6,4/6,4/6,1/6,2/6,1/6,2/6,5/6,2/6,1/6,1/6,4/6,4/6,1/6,5/6 -============================ -input: -30U6>=7 -output: -ShadowRun : (30U6[6]>=7) > 1,1,1,1,1,1,1,1,2,2,2,2,3,3,4,4,4,4,4,5,5,5,5,5,7[6,1],8[6,2],9[6,3],9[6,3],10[6,4],11[6,5] > 成功数6 -rand:3/6,6/6,1/6,2/6,4/6,6/6,5/6,2/6,1/6,3/6,1/6,4/6,5/6,6/6,4/6,5/6,1/6,5/6,2/6,6/6,2/6,2/6,4/6,6/6,3/6,5/6,1/6,4/6,1/6,6/6,3/6,1/6,1/6,5/6,4/6,1/6 -============================ -input: -30U6>=7 -output: -ShadowRun : (30U6[6]>=7) > 1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,5,5,5,7[6,1],8[6,2],8[6,2],9[6,3] > 成功数4 -rand:1/6,2/6,4/6,6/6,2/6,4/6,3/6,3/6,6/6,3/6,3/6,1/6,3/6,1/6,4/6,2/6,2/6,5/6,5/6,6/6,2/6,1/6,3/6,2/6,4/6,4/6,6/6,1/6,3/6,2/6,2/6,1/6,4/6,5/6 -============================ -input: -30U6>=7 -output: -ShadowRun : (30U6[6]>=7) > 1,1,1,1,1,2,2,2,3,3,3,3,3,4,4,4,4,4,4,4,5,5,5,7[6,1],7[6,1],8[6,2],10[6,4],10[6,4],15[6,6,3],15[6,6,3] > 成功数7 -rand:5/6,1/6,6/6,4/6,3/6,4/6,2/6,1/6,5/6,6/6,6/6,3/6,6/6,2/6,1/6,4/6,4/6,4/6,3/6,3/6,6/6,1/6,3/6,1/6,5/6,4/6,4/6,2/6,3/6,6/6,1/6,2/6,4/6,6/6,6/6,3/6,6/6,4/6,1/6 -============================ -input: -30U6>=7 -output: -ShadowRun : (30U6[6]>=7) > 1,1,1,1,1,1,1,1,2,2,2,2,2,3,3,4,4,4,5,5,5,5,5,5,8[6,2],8[6,2],9[6,3],9[6,3],11[6,5],15[6,6,3] > 成功数6 -rand:1/6,2/6,2/6,5/6,1/6,5/6,2/6,2/6,6/6,6/6,3/6,2/6,5/6,4/6,4/6,5/6,1/6,6/6,3/6,1/6,6/6,3/6,4/6,1/6,6/6,5/6,1/6,6/6,2/6,5/6,1/6,1/6,3/6,3/6,5/6,6/6,2/6 -============================ -input: -30U6>=7 -output: -ShadowRun : (30U6[6]>=7) > 1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,5,5,5,5,5,5,5,5,5,5,7[6,1],8[6,2],8[6,2],13[6,6,1],15[6,6,3] > 成功数5 -rand:1/6,2/6,5/6,2/6,5/6,6/6,6/6,3/6,1/6,1/6,2/6,5/6,5/6,3/6,2/6,6/6,6/6,1/6,4/6,3/6,6/6,1/6,3/6,3/6,4/6,6/6,2/6,5/6,5/6,5/6,1/6,4/6,5/6,6/6,2/6,5/6,5/6 -============================ -input: -30U6>=7 -output: -ShadowRun : (30U6[6]>=7) > 1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,4,4,4,4,4,4,5,5,5,5,7[6,1],7[6,1],7[6,1],10[6,4],11[6,5] > 成功数5 -rand:6/6,4/6,4/6,4/6,4/6,2/6,5/6,6/6,1/6,6/6,1/6,1/6,5/6,2/6,2/6,3/6,6/6,1/6,2/6,3/6,2/6,4/6,2/6,1/6,1/6,6/6,5/6,3/6,4/6,1/6,3/6,5/6,2/6,4/6,5/6 -============================ -input: -30U6>=7 -output: -ShadowRun : (30U6[6]>=7) > 1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,9[6,3],10[6,4],11[6,5] > 成功数3 -rand:5/6,3/6,2/6,1/6,4/6,3/6,1/6,1/6,1/6,4/6,2/6,3/6,4/6,3/6,6/6,5/6,5/6,1/6,2/6,2/6,4/6,5/6,2/6,6/6,4/6,6/6,3/6,5/6,5/6,1/6,1/6,1/6,2/6 -============================ -input: -100U6>=13 -output: -ShadowRun : (100U6[6]>=13) > 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,7[6,1],7[6,1],7[6,1],7[6,1],10[6,4],10[6,4],10[6,4],10[6,4],11[6,5],11[6,5],13[6,6,1],13[6,6,1],14[6,6,2],16[6,6,4],17[6,6,5],19[6,6,6,1] > 成功数6 -rand:4/6,6/6,6/6,2/6,5/6,1/6,6/6,1/6,1/6,2/6,4/6,1/6,5/6,2/6,4/6,3/6,3/6,2/6,3/6,4/6,5/6,1/6,6/6,1/6,6/6,5/6,2/6,1/6,3/6,1/6,4/6,5/6,1/6,5/6,4/6,4/6,1/6,4/6,1/6,5/6,6/6,4/6,4/6,1/6,2/6,6/6,1/6,4/6,1/6,2/6,6/6,1/6,4/6,1/6,6/6,6/6,6/6,1/6,3/6,4/6,3/6,2/6,2/6,1/6,2/6,1/6,1/6,1/6,2/6,1/6,3/6,3/6,4/6,4/6,4/6,2/6,4/6,1/6,3/6,6/6,6/6,4/6,4/6,2/6,4/6,2/6,4/6,6/6,6/6,5/6,4/6,2/6,6/6,4/6,6/6,6/6,1/6,4/6,6/6,4/6,6/6,6/6,1/6,5/6,3/6,6/6,4/6,2/6,4/6,2/6,5/6,2/6,3/6,3/6,5/6,4/6,1/6,2/6,5/6,6/6,5/6,1/6,3/6 -============================ -input: -100U6>=13 -output: -ShadowRun : (100U6[6]>=13) > 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7[6,1],7[6,1],7[6,1],7[6,1],8[6,2],8[6,2],10[6,4],10[6,4],10[6,4],11[6,5],11[6,5],11[6,5],11[6,5],15[6,6,3],15[6,6,3] > 成功数2 -rand:1/6,1/6,3/6,4/6,1/6,3/6,2/6,3/6,6/6,1/6,2/6,1/6,3/6,1/6,6/6,6/6,3/6,3/6,6/6,2/6,1/6,4/6,4/6,1/6,5/6,5/6,5/6,2/6,4/6,2/6,2/6,6/6,5/6,2/6,2/6,6/6,1/6,5/6,2/6,1/6,5/6,2/6,1/6,4/6,3/6,3/6,5/6,2/6,5/6,5/6,3/6,1/6,2/6,4/6,5/6,1/6,2/6,5/6,4/6,6/6,5/6,6/6,1/6,1/6,1/6,2/6,6/6,1/6,6/6,4/6,1/6,4/6,2/6,2/6,1/6,5/6,4/6,1/6,3/6,6/6,4/6,6/6,4/6,4/6,4/6,3/6,1/6,3/6,6/6,5/6,4/6,2/6,3/6,5/6,5/6,1/6,1/6,4/6,6/6,2/6,6/6,5/6,4/6,1/6,1/6,2/6,4/6,4/6,5/6,4/6,5/6,1/6,6/6,6/6,3/6,4/6,4/6 -============================ -input: -100U6>=13 -output: -ShadowRun : (100U6[6]>=13) > 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7[6,1],8[6,2],8[6,2],8[6,2],8[6,2],9[6,3],9[6,3],9[6,3],9[6,3],10[6,4],13[6,6,1] > 成功数1 -rand:2/6,2/6,2/6,1/6,3/6,1/6,4/6,4/6,1/6,2/6,3/6,5/6,5/6,2/6,2/6,3/6,3/6,6/6,2/6,3/6,1/6,1/6,3/6,5/6,3/6,1/6,2/6,1/6,1/6,3/6,4/6,2/6,5/6,5/6,4/6,6/6,3/6,6/6,3/6,6/6,3/6,3/6,2/6,5/6,6/6,6/6,1/6,4/6,5/6,2/6,3/6,1/6,4/6,3/6,2/6,5/6,2/6,5/6,5/6,1/6,4/6,1/6,5/6,3/6,4/6,4/6,4/6,6/6,3/6,3/6,2/6,3/6,6/6,2/6,4/6,4/6,3/6,5/6,5/6,6/6,2/6,3/6,5/6,2/6,3/6,4/6,1/6,4/6,6/6,1/6,5/6,3/6,6/6,2/6,5/6,5/6,4/6,1/6,5/6,6/6,4/6,2/6,2/6,2/6,1/6,2/6,2/6,5/6,3/6,3/6,1/6,5/6 -============================ -input: -100U6>=13 -output: -ShadowRun : (100U6[6]>=13) > 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7[6,1],7[6,1],8[6,2],9[6,3],9[6,3],10[6,4],10[6,4],10[6,4],10[6,4],10[6,4],10[6,4],11[6,5],11[6,5],11[6,5],13[6,6,1],16[6,6,4],17[6,6,5] > 成功数3 -rand:6/6,1/6,1/6,4/6,3/6,2/6,1/6,3/6,1/6,4/6,5/6,1/6,3/6,2/6,1/6,3/6,2/6,6/6,4/6,3/6,4/6,4/6,1/6,3/6,1/6,3/6,6/6,4/6,1/6,6/6,1/6,4/6,4/6,5/6,4/6,4/6,6/6,4/6,3/6,1/6,4/6,2/6,2/6,6/6,4/6,3/6,5/6,1/6,1/6,5/6,6/6,5/6,1/6,1/6,1/6,5/6,6/6,4/6,6/6,2/6,1/6,4/6,6/6,5/6,3/6,5/6,4/6,1/6,4/6,6/6,6/6,5/6,4/6,2/6,6/6,6/6,1/6,3/6,5/6,6/6,3/6,5/6,4/6,4/6,6/6,5/6,3/6,4/6,3/6,1/6,4/6,5/6,4/6,3/6,1/6,5/6,2/6,6/6,4/6,4/6,3/6,1/6,5/6,3/6,6/6,6/6,4/6,4/6,4/6,5/6,3/6,6/6,3/6,3/6,3/6,5/6,4/6,2/6,5/6,1/6 -============================ -input: -100U6>=13 -output: -ShadowRun : (100U6[6]>=13) > 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,7[6,1],7[6,1],7[6,1],7[6,1],8[6,2],9[6,3],9[6,3],10[6,4],11[6,5],11[6,5],15[6,6,3],16[6,6,4],17[6,6,5] > 成功数3 -rand:5/6,4/6,3/6,2/6,1/6,5/6,6/6,6/6,4/6,2/6,6/6,4/6,6/6,1/6,1/6,4/6,3/6,1/6,3/6,1/6,5/6,1/6,5/6,6/6,3/6,3/6,6/6,1/6,3/6,2/6,3/6,2/6,3/6,6/6,5/6,1/6,4/6,2/6,2/6,2/6,2/6,1/6,6/6,1/6,1/6,1/6,4/6,6/6,6/6,5/6,4/6,2/6,3/6,3/6,4/6,1/6,4/6,4/6,2/6,6/6,6/6,3/6,4/6,2/6,2/6,2/6,4/6,2/6,3/6,1/6,4/6,5/6,5/6,6/6,5/6,4/6,2/6,4/6,4/6,1/6,6/6,3/6,2/6,3/6,3/6,4/6,2/6,3/6,5/6,2/6,1/6,5/6,3/6,4/6,5/6,2/6,6/6,1/6,5/6,1/6,3/6,3/6,2/6,3/6,3/6,5/6,2/6,5/6,1/6,5/6,2/6,6/6,2/6,2/6,1/6,1/6 -============================ -input: -100U6>=13 -output: -ShadowRun : (100U6[6]>=13) > 1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7[6,1],7[6,1],7[6,1],7[6,1],7[6,1],7[6,1],7[6,1],8[6,2],8[6,2],8[6,2],9[6,3],9[6,3],9[6,3],9[6,3],10[6,4],11[6,5],11[6,5],11[6,5],11[6,5],11[6,5],11[6,5],13[6,6,1],14[6,6,2],15[6,6,3],16[6,6,4],17[6,6,5] > 成功数5 -rand:5/6,4/6,5/6,2/6,5/6,1/6,6/6,1/6,6/6,6/6,2/6,5/6,5/6,1/6,3/6,6/6,3/6,5/6,6/6,5/6,5/6,5/6,6/6,5/6,5/6,2/6,6/6,6/6,1/6,4/6,5/6,5/6,4/6,6/6,6/6,3/6,5/6,5/6,4/6,4/6,3/6,2/6,2/6,6/6,3/6,2/6,4/6,1/6,2/6,6/6,3/6,3/6,1/6,3/6,6/6,1/6,5/6,5/6,2/6,3/6,6/6,2/6,6/6,1/6,4/6,3/6,6/6,3/6,1/6,2/6,6/6,5/6,2/6,6/6,2/6,6/6,1/6,6/6,6/6,5/6,6/6,1/6,5/6,1/6,3/6,3/6,1/6,6/6,1/6,6/6,6/6,4/6,1/6,5/6,4/6,5/6,2/6,5/6,6/6,1/6,4/6,1/6,3/6,2/6,1/6,2/6,4/6,2/6,6/6,5/6,5/6,4/6,4/6,4/6,5/6,3/6,6/6,5/6,5/6,5/6,6/6,4/6,5/6,5/6,5/6,5/6,6/6,2/6,6/6,5/6,4/6 -============================ -input: -100U6>=13 -output: -ShadowRun : (100U6[6]>=13) > 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7[6,1],7[6,1],8[6,2],8[6,2],9[6,3],9[6,3],10[6,4],10[6,4],10[6,4],10[6,4],11[6,5],11[6,5],15[6,6,3],15[6,6,3],16[6,6,4] > 成功数3 -rand:1/6,5/6,6/6,1/6,4/6,5/6,4/6,1/6,2/6,1/6,3/6,5/6,4/6,2/6,2/6,1/6,3/6,4/6,5/6,2/6,5/6,2/6,1/6,1/6,4/6,5/6,3/6,2/6,2/6,5/6,3/6,1/6,3/6,1/6,5/6,3/6,4/6,6/6,4/6,5/6,2/6,5/6,6/6,1/6,5/6,6/6,4/6,4/6,4/6,2/6,1/6,6/6,4/6,1/6,6/6,4/6,1/6,3/6,6/6,5/6,4/6,6/6,6/6,4/6,3/6,5/6,4/6,6/6,6/6,3/6,6/6,3/6,5/6,5/6,1/6,3/6,6/6,2/6,3/6,3/6,6/6,5/6,3/6,5/6,5/6,1/6,5/6,2/6,1/6,3/6,5/6,3/6,6/6,2/6,1/6,5/6,3/6,2/6,1/6,4/6,3/6,2/6,1/6,2/6,2/6,6/6,3/6,1/6,1/6,2/6,4/6,5/6,2/6,6/6,6/6,3/6,5/6,2/6 -============================ -input: -100U6>=13 -output: -ShadowRun : (100U6[6]>=13) > 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7[6,1],7[6,1],7[6,1],7[6,1],8[6,2],8[6,2],8[6,2],9[6,3],9[6,3],9[6,3],10[6,4],10[6,4],10[6,4],10[6,4],11[6,5],11[6,5],11[6,5],17[6,6,5],22[6,6,6,4] > 成功数2 -rand:6/6,6/6,6/6,4/6,6/6,4/6,6/6,1/6,5/6,4/6,5/6,3/6,1/6,1/6,4/6,4/6,2/6,6/6,1/6,1/6,5/6,2/6,4/6,2/6,4/6,6/6,2/6,1/6,1/6,6/6,6/6,5/6,4/6,5/6,1/6,5/6,2/6,3/6,4/6,1/6,1/6,3/6,1/6,4/6,3/6,5/6,4/6,1/6,3/6,3/6,1/6,6/6,3/6,5/6,1/6,1/6,6/6,4/6,1/6,6/6,5/6,2/6,1/6,4/6,4/6,3/6,1/6,4/6,3/6,6/6,5/6,6/6,4/6,4/6,3/6,5/6,4/6,3/6,6/6,3/6,4/6,5/6,4/6,6/6,1/6,5/6,6/6,1/6,3/6,2/6,5/6,5/6,4/6,6/6,4/6,5/6,4/6,5/6,4/6,3/6,6/6,2/6,6/6,2/6,1/6,3/6,4/6,3/6,2/6,5/6,6/6,3/6,1/6,3/6,1/6,4/6,3/6,3/6,6/6,5/6,2/6,1/6 -============================ -input: -100U6>=13 -output: -ShadowRun : (100U6[6]>=13) > 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7[6,1],7[6,1],8[6,2],8[6,2],8[6,2],9[6,3],9[6,3],10[6,4],11[6,5],11[6,5],15[6,6,3],21[6,6,6,3] > 成功数2 -rand:6/6,1/6,2/6,2/6,3/6,1/6,1/6,1/6,1/6,4/6,6/6,6/6,3/6,6/6,2/6,6/6,5/6,5/6,2/6,2/6,6/6,3/6,2/6,5/6,3/6,2/6,5/6,4/6,5/6,2/6,5/6,4/6,5/6,1/6,6/6,6/6,6/6,3/6,2/6,4/6,3/6,5/6,3/6,2/6,6/6,2/6,6/6,4/6,5/6,3/6,5/6,4/6,2/6,1/6,2/6,4/6,2/6,3/6,1/6,2/6,1/6,5/6,5/6,3/6,2/6,5/6,4/6,5/6,6/6,2/6,1/6,5/6,6/6,1/6,1/6,1/6,4/6,4/6,2/6,5/6,6/6,5/6,2/6,4/6,4/6,4/6,1/6,2/6,1/6,6/6,3/6,5/6,4/6,3/6,1/6,4/6,4/6,3/6,2/6,4/6,1/6,3/6,3/6,1/6,5/6,3/6,5/6,1/6,1/6,1/6,3/6,1/6,5/6,3/6,4/6 diff --git a/src/src_bcdice/test/data/ShadowRun4.txt b/src/src_bcdice/test/data/ShadowRun4.txt deleted file mode 100644 index 1c817f16a..000000000 --- a/src/src_bcdice/test/data/ShadowRun4.txt +++ /dev/null @@ -1,215 +0,0 @@ -input: -1B6>=5 -output: -ShadowRun4 : (1B6>=5) > 1 > 成功数0 > クリティカルグリッチ -rand:1/6 -============================ -input: -1B6>=5 -output: -ShadowRun4 : (1B6>=5) > 2 > 成功数0 -rand:2/6 -============================ -input: -1B6>=5 -output: -ShadowRun4 : (1B6>=5) > 3 > 成功数0 -rand:3/6 -============================ -input: -1B6>=5 -output: -ShadowRun4 : (1B6>=5) > 4 > 成功数0 -rand:4/6 -============================ -input: -1B6>=5 -output: -ShadowRun4 : (1B6>=5) > 5 > 成功数1 -rand:5/6 -============================ -input: -1B6>=5 -output: -ShadowRun4 : (1B6>=5) > 6 > 成功数1 -rand:6/6 -============================ -input: -2B6 -output: -ShadowRun4 : (2B6>=5) > 2,6 > 成功数1 -rand:6/6,2/6 -============================ -input: -2B6 -output: -ShadowRun4 : (2B6>=5) > 3,4 > 成功数0 -rand:3/6,4/6 -============================ -input: -2B6 -output: -ShadowRun4 : (2B6>=5) > 1,2 > 成功数0 > クリティカルグリッチ -rand:2/6,1/6 -============================ -input: -2B6 -output: -ShadowRun4 : (2B6>=5) > 1,5 > 成功数1 > グリッチ -rand:1/6,5/6 -============================ -input: -1R6 -output: -ShadowRun4 : (1R6[6]>=5) > 1 > 成功数0 > クリティカルグリッチ -rand:1/6 -============================ -input: -1R6 -output: -ShadowRun4 : (1R6[6]>=5) > 2 > 成功数0 -rand:2/6 -============================ -input: -1R6 -output: -ShadowRun4 : (1R6[6]>=5) > 3 > 成功数0 -rand:3/6 -============================ -input: -1R6 -output: -ShadowRun4 : (1R6[6]>=5) > 4 > 成功数0 -rand:4/6 -============================ -input: -1R6 -output: -ShadowRun4 : (1R6[6]>=5) > 5 > 成功数1 -rand:5/6 -============================ -input: -1R6 -output: -ShadowRun4 : (1R6[6]>=5) > 6 + 1 > 成功数1 -rand:6/6,1/6 -============================ -input: -2R6 -output: -ShadowRun4 : (2R6[6]>=5) > 3,6 + 5 > 成功数2 -rand:3/6,6/6,5/6 -============================ -input: -2R6 -output: -ShadowRun4 : (2R6[6]>=5) > 2,6 + 3 > 成功数1 -rand:2/6,6/6,3/6 -============================ -input: -2R6 -output: -ShadowRun4 : (2R6[6]>=5) > 5,6 + 6 + 4 > 成功数3 -rand:6/6,5/6,6/6,4/6 -============================ -input: -2R6 -output: -ShadowRun4 : (2R6[6]>=5) > 2,3 > 成功数0 -rand:3/6,2/6 -============================ -input: -2R6 -output: -ShadowRun4 : (2R6[6]>=5) > 1,5 > 成功数1 > グリッチ -rand:5/6,1/6 -============================ -input: -2R6 -output: -ShadowRun4 : (2R6[6]>=5) > 3,6 + 4 > 成功数1 -rand:6/6,3/6,4/6 -============================ -input: -2R6 -output: -ShadowRun4 : (2R6[6]>=5) > 3,4 > 成功数0 -rand:3/6,4/6 -============================ -input: -2R6 -output: -ShadowRun4 : (2R6[6]>=5) > 5,6 + 2 > 成功数2 -rand:5/6,6/6,2/6 -============================ -input: -2R6 -output: -ShadowRun4 : (2R6[6]>=5) > 1,1 > 成功数0 > クリティカルグリッチ -rand:1/6,1/6 -============================ -input: -2R6 -output: -ShadowRun4 : (2R6[6]>=5) > 2,4 > 成功数0 -rand:2/6,4/6 -============================ -input: -12R6 -output: -ShadowRun4 : (12R6[6]>=5) > 2,2,4,4,4,4,5,5,6,6,6,6 + 1,2,3,4 > 成功数6 -rand:6/6,6/6,5/6,2/6,6/6,6/6,4/6,5/6,4/6,2/6,4/6,4/6,4/6,2/6,1/6,3/6 -============================ -input: -12R6 -output: -ShadowRun4 : (12R6[6]>=5) > 1,1,1,1,2,2,4,5,6,6,6,6 + 1,4,5,6 + 6 + 3 > 成功数8 -rand:1/6,1/6,2/6,6/6,2/6,1/6,6/6,4/6,1/6,6/6,5/6,6/6,1/6,5/6,4/6,6/6,6/6,3/6 -============================ -input: -12R6 -output: -ShadowRun4 : (12R6[6]>=5) > 1,1,1,1,1,2,2,3,3,3,6,6 + 2,3 > 成功数2 -rand:6/6,2/6,6/6,3/6,2/6,1/6,1/6,3/6,1/6,1/6,3/6,1/6,2/6,3/6 -============================ -input: -12R6 -output: -ShadowRun4 : (12R6[6]>=5) > 1,1,1,2,2,3,4,4,4,4,5,5 > 成功数2 -rand:4/6,2/6,3/6,4/6,1/6,5/6,4/6,1/6,1/6,5/6,2/6,4/6 -============================ -input: -12R6 -output: -ShadowRun4 : (12R6[6]>=5) > 1,2,2,2,2,3,4,5,5,5,6,6 + 1,3 > 成功数5 -rand:2/6,4/6,5/6,2/6,2/6,1/6,5/6,2/6,3/6,6/6,5/6,6/6,3/6,1/6 -============================ -input: -12R6 -output: -ShadowRun4 : (12R6[6]>=5) > 1,1,2,2,3,3,3,3,5,5,6,6 + 2,5 > 成功数5 -rand:3/6,2/6,2/6,5/6,6/6,3/6,5/6,1/6,1/6,3/6,6/6,3/6,2/6,5/6 -============================ -input: -12R6 -output: -ShadowRun4 : (12R6[6]>=5) > 1,2,3,3,3,3,4,4,4,4,4,5 > 成功数1 -rand:4/6,4/6,3/6,4/6,3/6,1/6,4/6,2/6,3/6,3/6,4/6,5/6 -============================ -input: -12R6 -output: -ShadowRun4 : (12R6[6]>=5) > 1,1,1,1,3,3,3,5,6,6,6,6 + 1,4,4,5 > 成功数6 -rand:6/6,6/6,6/6,3/6,3/6,6/6,1/6,3/6,1/6,5/6,1/6,1/6,4/6,5/6,4/6,1/6 -============================ -input: -12R6 -output: -ShadowRun4 : (12R6[6]>=5) > 1,1,2,2,2,3,4,4,5,5,6,6 + 6,6 + 3,5 > 成功数7 -rand:2/6,5/6,1/6,1/6,2/6,3/6,4/6,2/6,6/6,5/6,4/6,6/6,6/6,6/6,3/6,5/6 -============================ -input: -12R6 -output: -ShadowRun4 : (12R6[6]>=5) > 1,1,2,2,3,4,5,5,5,5,6,6 + 1,1 > 成功数6 -rand:5/6,2/6,4/6,5/6,5/6,1/6,2/6,5/6,6/6,1/6,6/6,3/6,1/6,1/6 diff --git a/src/src_bcdice/test/data/ShadowRun5.txt b/src/src_bcdice/test/data/ShadowRun5.txt deleted file mode 100644 index bbe45f9db..000000000 --- a/src/src_bcdice/test/data/ShadowRun5.txt +++ /dev/null @@ -1,275 +0,0 @@ -input: -1B6>=5 -output: -ShadowRun5 : (1B6>=5) > 1 > 成功数0 > クリティカルグリッチ -rand:1/6 -============================ -input: -1B6>=5 -output: -ShadowRun5 : (1B6>=5) > 2 > 成功数0 -rand:2/6 -============================ -input: -1B6>=5 -output: -ShadowRun5 : (1B6>=5) > 3 > 成功数0 -rand:3/6 -============================ -input: -1B6>=5 -output: -ShadowRun5 : (1B6>=5) > 4 > 成功数0 -rand:4/6 -============================ -input: -1B6>=5 -output: -ShadowRun5 : (1B6>=5) > 5 > 成功数1 -rand:5/6 -============================ -input: -1B6>=5 -output: -ShadowRun5 : (1B6>=5) > 6 > 成功数1 -rand:6/6 -============================ -input: -2B6 -output: -ShadowRun5 : (2B6>=5) > 2,6 > 成功数1 -rand:6/6,2/6 -============================ -input: -2B6 -output: -ShadowRun5 : (2B6>=5) > 3,4 > 成功数0 -rand:3/6,4/6 -============================ -input: -2B6 -output: -ShadowRun5 : (2B6>=5) > 1,1 > 成功数0 > クリティカルグリッチ -rand:1/6,1/6 -============================ -input: -2B6 -output: -ShadowRun5 : (2B6>=5) > 1,5 > 成功数1 -rand:1/6,5/6 -============================ -input: -3B6 -output: -ShadowRun5 : (3B6>=5) > 1,2,5 > 成功数1 -rand:2/6,5/6,1/6 -============================ -input: -3B6 -output: -ShadowRun5 : (3B6>=5) > 1,2,3 > 成功数0 -rand:2/6,3/6,1/6 -============================ -input: -3B6 -output: -ShadowRun5 : (3B6>=5) > 1,1,2 > 成功数0 > クリティカルグリッチ -rand:2/6,1/6,1/6 -============================ -input: -3B6 -output: -ShadowRun5 : (3B6>=5) > 1,1,5 > 成功数1 > グリッチ -rand:1/6,5/6,1/6 -============================ -input: -1R6 -output: -ShadowRun5 : (1R6[6]>=5) > 1 > 成功数0 > クリティカルグリッチ -rand:1/6 -============================ -input: -1R6 -output: -ShadowRun5 : (1R6[6]>=5) > 2 > 成功数0 -rand:2/6 -============================ -input: -1R6 -output: -ShadowRun5 : (1R6[6]>=5) > 3 > 成功数0 -rand:3/6 -============================ -input: -1R6 -output: -ShadowRun5 : (1R6[6]>=5) > 4 > 成功数0 -rand:4/6 -============================ -input: -1R6 -output: -ShadowRun5 : (1R6[6]>=5) > 5 > 成功数1 -rand:5/6 -============================ -input: -1R6 -output: -ShadowRun5 : (1R6[6]>=5) > 6 + 1 > 成功数1 -rand:6/6,1/6 -============================ -input: -2R6 -output: -ShadowRun5 : (2R6[6]>=5) > 3,6 + 5 > 成功数2 -rand:3/6,6/6,5/6 -============================ -input: -2R6 -output: -ShadowRun5 : (2R6[6]>=5) > 2,6 + 3 > 成功数1 -rand:2/6,6/6,3/6 -============================ -input: -2R6 -output: -ShadowRun5 : (2R6[6]>=5) > 5,6 + 6 + 4 > 成功数3 -rand:6/6,5/6,6/6,4/6 -============================ -input: -2R6 -output: -ShadowRun5 : (2R6[6]>=5) > 2,3 > 成功数0 -rand:3/6,2/6 -============================ -input: -2R6 -output: -ShadowRun5 : (2R6[6]>=5) > 1,5 > 成功数1 -rand:5/6,1/6 -============================ -input: -2R6 -output: -ShadowRun5 : (2R6[6]>=5) > 3,6 + 4 > 成功数1 -rand:6/6,3/6,4/6 -============================ -input: -2R6 -output: -ShadowRun5 : (2R6[6]>=5) > 3,4 > 成功数0 -rand:3/6,4/6 -============================ -input: -2R6 -output: -ShadowRun5 : (2R6[6]>=5) > 5,6 + 2 > 成功数2 -rand:5/6,6/6,2/6 -============================ -input: -2R6 -output: -ShadowRun5 : (2R6[6]>=5) > 1,1 > 成功数0 > クリティカルグリッチ -rand:1/6,1/6 -============================ -input: -2R6 -output: -ShadowRun5 : (2R6[6]>=5) > 2,4 > 成功数0 -rand:2/6,4/6 -============================ -input: -3R6 -output: -ShadowRun5 : (3R6[6]>=5) > 1,1,2 > 成功数0 > クリティカルグリッチ -rand:1/6,1/6,2/6 -============================ -input: -3R6 -output: -ShadowRun5 : (3R6[6]>=5) > 1,1,5 > 成功数1 > グリッチ -rand:1/6,1/6,5/6 -============================ -input: -3R6 -output: -ShadowRun5 : (3R6[6]>=5) > 1,2,2 > 成功数0 -rand:1/6,2/6,2/6 -============================ -input: -3R6 -output: -ShadowRun5 : (3R6[6]>=5) > 1,2,5 > 成功数1 -rand:1/6,2/6,5/6 -============================ -input: -12R6 -output: -ShadowRun5 : (12R6[6]>=5) > 2,2,4,4,4,4,5,5,6,6,6,6 + 1,2,3,4 > 成功数6 -rand:6/6,6/6,5/6,2/6,6/6,6/6,4/6,5/6,4/6,2/6,4/6,4/6,4/6,2/6,1/6,3/6 -============================ -input: -12R6 -output: -ShadowRun5 : (12R6[6]>=5) > 1,1,1,1,2,2,4,5,6,6,6,6 + 1,4,5,6 + 6 + 3 > 成功数8 -rand:1/6,1/6,2/6,6/6,2/6,1/6,6/6,4/6,1/6,6/6,5/6,6/6,1/6,5/6,4/6,6/6,6/6,3/6 -============================ -input: -12R6 -output: -ShadowRun5 : (12R6[6]>=5) > 1,1,1,1,1,2,2,3,3,3,6,6 + 2,3 > 成功数2 -rand:6/6,2/6,6/6,3/6,2/6,1/6,1/6,3/6,1/6,1/6,3/6,1/6,2/6,3/6 -============================ -input: -12R6 -output: -ShadowRun5 : (12R6[6]>=5) > 1,1,1,2,2,3,4,4,4,4,5,5 > 成功数2 -rand:4/6,2/6,3/6,4/6,1/6,5/6,4/6,1/6,1/6,5/6,2/6,4/6 -============================ -input: -12R6 -output: -ShadowRun5 : (12R6[6]>=5) > 1,2,2,2,2,3,4,5,5,5,6,6 + 1,3 > 成功数5 -rand:2/6,4/6,5/6,2/6,2/6,1/6,5/6,2/6,3/6,6/6,5/6,6/6,3/6,1/6 -============================ -input: -12R6 -output: -ShadowRun5 : (12R6[6]>=5) > 1,1,2,2,3,3,3,3,5,5,6,6 + 2,5 > 成功数5 -rand:3/6,2/6,2/6,5/6,6/6,3/6,5/6,1/6,1/6,3/6,6/6,3/6,2/6,5/6 -============================ -input: -12R6 -output: -ShadowRun5 : (12R6[6]>=5) > 1,2,3,3,3,3,4,4,4,4,4,5 > 成功数1 -rand:4/6,4/6,3/6,4/6,3/6,1/6,4/6,2/6,3/6,3/6,4/6,5/6 -============================ -input: -12R6 -output: -ShadowRun5 : (12R6[6]>=5) > 1,1,1,1,3,3,3,5,6,6,6,6 + 1,4,4,5 > 成功数6 -rand:6/6,6/6,6/6,3/6,3/6,6/6,1/6,3/6,1/6,5/6,1/6,1/6,4/6,5/6,4/6,1/6 -============================ -input: -12R6 -output: -ShadowRun5 : (12R6[6]>=5) > 1,1,2,2,2,3,4,4,5,5,6,6 + 6,6 + 3,5 > 成功数7 -rand:2/6,5/6,1/6,1/6,2/6,3/6,4/6,2/6,6/6,5/6,4/6,6/6,6/6,6/6,3/6,5/6 -============================ -input: -12R6 -output: -ShadowRun5 : (12R6[6]>=5) > 1,1,2,2,3,4,5,5,5,5,6,6 + 1,1 > 成功数6 -rand:5/6,2/6,4/6,5/6,5/6,1/6,2/6,5/6,6/6,1/6,6/6,3/6,1/6,1/6 -============================ -input: -12B6@5 -output: -ShadowRun5 : (12B6[6]Limit[5]>=5) > 1,1,2,3,4,5,5,5,5,5,6,6 > 成功数5(リミット超過2) -rand:5/6,2/6,4/6,5/6,5/6,1/6,5/6,5/6,6/6,1/6,6/6,3/6 -============================ -input: -12B6@5 -output: -ShadowRun5 : (12B6[6]Limit[5]>=5) > 1,1,2,3,3,4,4,5,5,5,6,6 > 成功数5 -rand:5/6,2/6,4/6,5/6,5/6,1/6,3/6,4/6,6/6,1/6,6/6,3/6 diff --git a/src/src_bcdice/test/data/SharedFantasia.txt b/src/src_bcdice/test/data/SharedFantasia.txt deleted file mode 100644 index 288ff07d6..000000000 --- a/src/src_bcdice/test/data/SharedFantasia.txt +++ /dev/null @@ -1,94 +0,0 @@ -input: -1d6 -output: -SharedFantasia : (1D6) > 2 -rand:2/6 -============================ -input: -2d6 -output: -SharedFantasia : (2D6) > 2[1,1] > 2 -rand:1/6,1/6 -============================ -input: -2d6>=7 -成功 -output: -SharedFantasia : (2D6>=7) > 7[4,3] > 7 > 成功 -rand:4/6,3/6 -============================ -input: -2d6>=7 -失敗1 -output: -SharedFantasia : (2D6>=7) > 6[3,3] > 6 > 失敗 -rand:3/6,3/6 -============================ -input: -2d6>7 -失敗2 -output: -SharedFantasia : (2D6>7) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 -============================ -input: -2d6>=13 -自動成功 -output: -SharedFantasia : (2D6>=13) > 12[6,6] > 12 > 自動成功 -rand:6/6,6/6 -============================ -input: -2d6+2>=3 -自動失敗 -output: -SharedFantasia : (2D6+2>=3) > 2[1,1]+2 > 4 > 自動失敗 -rand:1/6,1/6 -============================ -input: -2d6+2>=13 -劇的成功 -output: -SharedFantasia : (2D6+2>=13) > 12[6,6]+2 > 14 > 自動成功(劇的成功) -rand:6/6,6/6 -============================ -input: -2d6>=3 -致命失敗 -output: -SharedFantasia : (2D6>=3) > 2[1,1] > 2 > 自動失敗(致命的失敗) -rand:1/6,1/6 -============================ -input: -SF>=7 -SF成功 -output: -SharedFantasia : (2D6>=7) > 8[5,3] > 8 > 成功 -rand:5/6,3/6 -============================ -input: -6+SF>=7 -SF成功 -output: -SharedFantasia : (6+2D6>=7) > 6+8[5,3] > 14 > 成功 -rand:5/6,3/6 -============================ -input: -ST>7 -ST失敗 -output: -SharedFantasia : (2D6>7) > 7[5,2] > 7 > 失敗 -rand:5/6,2/6 -============================ -input: -ST-2>=7 -ST失敗 -output: -SharedFantasia : (2D6-2>=7) > 8[5,3]-2 > 6 > 失敗 -rand:5/6,3/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -SharedFantasia : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/ShinMegamiTenseiKakuseihen.txt b/src/src_bcdice/test/data/ShinMegamiTenseiKakuseihen.txt deleted file mode 100644 index 3120c638a..000000000 --- a/src/src_bcdice/test/data/ShinMegamiTenseiKakuseihen.txt +++ /dev/null @@ -1,71 +0,0 @@ -input: -1D100<=50 -output: -SMTKakuseihen : (1D100<=50) > 12 > スワップ(12)成功/通常(12)成功/逆スワップ(21)成功 -rand:12/100 -============================ -input: -1D100<=50 -output: -SMTKakuseihen : (1D100<=50) > 43 > スワップ(34)成功/通常(43)成功/逆スワップ(43)成功 -rand:43/100 -============================ -input: -1D100<=50 -output: -SMTKakuseihen : (1D100<=50) > 19 > スワップ(19)成功/通常(19)成功/逆スワップ(91)失敗 -rand:19/100 -============================ -input: -1D100<=50 -output: -SMTKakuseihen : (1D100<=50) > 63 > スワップ(36)成功/通常(63)失敗/逆スワップ(63)失敗 -rand:63/100 -============================ -input: -1D100<=50 -output: -SMTKakuseihen : (1D100<=50) > 76 > スワップ(67)失敗/通常(76)失敗/逆スワップ(76)失敗 -rand:76/100 -============================ -input: -1D100<=50 -output: -SMTKakuseihen : (1D100<=50) > 44 > スワップ(44)絶対成功/通常(44)絶対成功/逆スワップ(44)絶対成功 -rand:44/100 -============================ -input: -1D100<=50 -output: -SMTKakuseihen : (1D100<=50) > 66 > スワップ(66)絶対失敗/通常(66)絶対失敗/逆スワップ(66)絶対失敗 -rand:66/100 -============================ -input: -1D100<=50 -output: -SMTKakuseihen : (1D100<=50) > 99 > スワップ(99)絶対失敗/通常(99)絶対失敗/逆スワップ(99)絶対失敗 -rand:99/100 -============================ -input: -1D100<=50 -output: -SMTKakuseihen : (1D100<=50) > 100 > スワップ(00)絶対成功/通常(00)絶対成功/逆スワップ(00)絶対成功 -rand:100/100 -============================ -input: -1D100<=50 -output: -SMTKakuseihen : (1D100<=50) > 1 > スワップ(01)成功/通常(01)成功/逆スワップ(10)成功 -rand:1/100 -============================ -input: -1D100<=50 -output: -SMTKakuseihen : (1D100<=50) > 9 > スワップ(09)成功/通常(09)成功/逆スワップ(90)失敗 -rand:9/100 -============================ -input: -1D100>=? 目標値?でバグらない -output: -SMTKakuseihen : (1D100>=?) > 42 > 失敗 -rand:42/100 diff --git a/src/src_bcdice/test/data/ShinkuuGakuen.txt b/src/src_bcdice/test/data/ShinkuuGakuen.txt deleted file mode 100644 index be2f928ac..000000000 --- a/src/src_bcdice/test/data/ShinkuuGakuen.txt +++ /dev/null @@ -1,269 +0,0 @@ -input: -RL0>=51 -output: -ShinkuuGakuen : (判定:0>=51) > 1D100+0 > 49+0 > 49 > 失敗 -rand:49/100 -============================ -input: -RL0>=51 -output: -ShinkuuGakuen : (判定:0>=51) > 1D100+0 > 117[50,67]+0 > 117 > 成功 -rand:50/100,67/100 -============================ -input: -RL0>=120 -output: -ShinkuuGakuen : (判定:0>=120) > 1D100+0 > 119[50,69]+0 > 119 > 失敗 -rand:50/100,69/100 -============================ -input: -RL0>=201 -output: -ShinkuuGakuen : (判定:0>=201) > 1D100+0 > 201[50,60,90,1]+0 > 201 > 成功 -rand:50/100,60/100,90/100,01/100 -============================ -input: -RL1>=203 -output: -ShinkuuGakuen : (判定:1>=203) > 1D100+1 > 201[50,60,90,1]+1 > 202 > 失敗 -rand:50/100,60/100,90/100,01/100 -============================ -input: -RL2>=203 -output: -ShinkuuGakuen : (判定:2>=203) > 1D100+2 > 201[50,60,90,1]+2 > 203 > 成功 -rand:50/100,60/100,90/100,01/100 -============================ -input: -RL0 -output: -ShinkuuGakuen : (判定:0) > 1D100+0 > 49+0 > 49 -rand:49/100 -============================ -input: -RL0 -output: -ShinkuuGakuen : (判定:0) > 1D100+0 > 201[50,60,90,1]+0 > 201 -rand:50/100,60/100,90/100,01/100 -============================ -input: -RL9>=21 -output: -ShinkuuGakuen : (判定:9>=21) > 1D100+9 > 9+9 > 18 > ファンブル -rand:9/100 -============================ -input: -RL10>=21 -output: -ShinkuuGakuen : (判定:10>=21) > 1D100+10 > 11[10,1]+10 > 21 > 技能なし:ファンブル/技能あり:成功 -rand:10/100,1/100 -============================ -input: -RL10>=22 -output: -ShinkuuGakuen : (判定:10>=22) > 1D100+10 > 11[10,1]+10 > 21 > 技能なし:ファンブル/技能あり:失敗 -rand:10/100,1/100 -============================ -input: -RL9>=20 -output: -ShinkuuGakuen : (判定:9>=20) > 1D100+9 > 11+9 > 20 > 成功 -rand:11/100 -============================ -input: -RL0 -output: -ShinkuuGakuen : (判定:0) > 1D100+0 > 11[10,1]+0 > 11 > 技能なし:ファンブル -rand:10/100,1/100 -============================ -input: -RL0 -output: -ShinkuuGakuen : (判定:0) > 1D100+0 > 11+0 > 11 -rand:11/100 -============================ -input: -SW0 -output: -ShinkuuGakuen : (剣:0) > 1D100+0 > 11+0 > 11 > 「失礼剣」成功度+5 -rand:11/100 -============================ -input: -SW10 -output: -ShinkuuGakuen : (剣:10) > 1D100+10 > 43[10,33]+10 > 53 > 「みじん斬り」攻撃量2倍 -rand:10/100,33/100 -============================ -input: -CSW0 -output: -ShinkuuGakuen : (剣カウンター:0) > 1D100+0 > 11+0 > 11 -rand:11/100 -============================ -input: -CSW0 -output: -ShinkuuGakuen : (剣カウンター:0) > 1D100+0 > 22+0 > 22 -rand:22/100 -============================ -input: -CSW0 -output: -ShinkuuGakuen : (剣カウンター:0) > 1D100+0 > 33+0 > 33 > 「パリィ」攻撃の無効化 -rand:33/100 -============================ -input: -CSW0 -output: -ShinkuuGakuen : (剣カウンター:0) > 1D100+0 > 99+0 > 99 > 「かすみ青眼」カウンター -rand:99/100 -============================ -input: -LS22 -output: -ShinkuuGakuen : (大剣:22) > 1D100+22 > 66+22 > 88 > 「濁流剣」回避不可、カウンター不可、B・D -rand:66/100 -============================ -input: -CLS22 -output: -ShinkuuGakuen : (大剣カウンター:22) > 1D100+22 > 66+22 > 88 > 「双破」クロスカウンター、B・D -rand:66/100 -============================ -input: -SS3 -output: -ShinkuuGakuen : (小剣:3) > 1D100+3 > 177[100,77]+3 > 180 > 「百花繚乱」回避不可、盾受け不可、攻撃量3倍、B・D -rand:100/100,77/100 -============================ -input: -SS3 -output: -ShinkuuGakuen : (小剣:3) > 1D100+3 > 297[100,20,100,77]+3 > 300 > 「百花繚乱」回避不可、盾受け不可、攻撃量3倍、B・D -rand:100/100,20/100,100/100,77/100 -============================ -input: -CSS3 -output: -ShinkuuGakuen : (小剣カウンター:3) > 1D100+3 > 177[100,77]+3 > 180 > 「マリオネット」攻撃の相手を変える -rand:100/100,77/100 -============================ -input: -SP3 -output: -ShinkuuGakuen : (槍:3) > 1D100+3 > 11+3 > 14 > 「チャージ」ダメージ1.5倍、盾受けー30 -rand:11/100 -============================ -input: -CSP3 -output: -ShinkuuGakuen : (槍カウンター:3) > 1D100+3 > 11+3 > 14 -rand:11/100 -============================ -input: -CSP3 -output: -ShinkuuGakuen : (槍カウンター:3) > 1D100+3 > 55+3 > 58 > 「風車」カウンター、ダメージ2倍 -rand:55/100 -============================ -input: -AX99 -output: -ShinkuuGakuen : (斧:99) > 1D100+99 > 99+99 > 198 > 「マキ割りダイナミック」盾受け不可、ダメージ2倍、B・D、ターンの最後に命中 -rand:99/100 -============================ -input: -CAX99 -output: -ShinkuuGakuen : (斧カウンター:99) > 1D100+99 > 99+99 > 198 > 「真っ向唐竹割り」クロスカウンター、B・D -rand:99/100 -============================ -input: -CL9 -output: -ShinkuuGakuen : (棍棒:9) > 1D100+9 > 88+9 > 97 > 「亀甲羅割り」防御力半分、盾受け不可、B・D -rand:88/100 -============================ -input: -CCL9 -output: -ShinkuuGakuen : (棍棒カウンター:9) > 1D100+9 > 88+9 > 97 > 「ジャストミート」飛び道具のみカウンター -rand:88/100 -============================ -input: -BW0 -output: -ShinkuuGakuen : (弓:0) > 1D100+0 > 77+0 > 77 > 「落鳳波」回避不可、B・D -rand:77/100 -============================ -input: -MA1 -output: -ShinkuuGakuen : (体術:1) > 1D100+1 > 66+1 > 67 > 「バベルクランプル」盾受け不可、B・D -rand:66/100 -============================ -input: -CMA1 -output: -ShinkuuGakuen : (体術カウンター:1) > 1D100+1 > 66+1 > 67 > 「ジョルトカウンター」クロスカウンター、B・D -rand:2/10,66/100 -============================ -input: -MA1>=50 -output: -ShinkuuGakuen : (体術:1>=50) > 1D100+1 > 66+1 > 67 > 成功 > 「バベルクランプル」盾受け不可、B・D -rand:66/100 -============================ -input: -CMA1 -output: -ShinkuuGakuen : (体術カウンター:1) > 1D100+1 > 131[100,31]+1 > 132 > 「ガードキャンセル」D10で振った必殺技によるカウンター > (2) > 「コンビネーション」2連続攻撃 -rand:2/10,100/100,31/100 -============================ -input: -BX -output: -ShinkuuGakuen : (ボクシング:0) > 1D100+0 > 66+0 > 66 > 「ショットガンブロー」攻撃量10倍 -rand:66/100 -============================ -input: -CBX -output: -ShinkuuGakuen : (ボクシングカウンター:0) > 1D100+0 > 66+0 > 66 > 「ジョルトカウンター」クロスカウンター、B・D -rand:66/100 -============================ -input: -PR -output: -ShinkuuGakuen : (プロレス:0) > 1D100+0 > 66+0 > 66 > 「バックドロップ」盾受け不可、ダメージ2倍 -rand:66/100 -============================ -input: -CPR -output: -ShinkuuGakuen : (プロレスカウンター:0) > 1D100+0 > 66+0 > 66 > 「アックスボンバー」カウンター、B・D -rand:66/100 -============================ -input: -ST -output: -ShinkuuGakuen : (幽波紋:0) > 1D100+0 > 66+0 > 66 > 「DEATH 13」ダメージ0、全体攻撃、気絶効果「根性」5 -rand:66/100 -============================ -input: -CST -output: -ShinkuuGakuen : (幽波紋カウンター:0) > 1D100+0 > 66+0 > 66 > 「YELLOW TEMPERANE」魔法・飛び道具含めて全ての攻撃を無効化 -rand:66/100 -============================ -input: -ST -output: -ShinkuuGakuen : (幽波紋:0) > 1D100+0 > 31+0 > 31 -rand:31/100 -============================ -input: -2d6>=4 -output: -ShinkuuGakuen : (2D6>=4) > 9[6,3] > 9 > 成功 -rand:6/6,3/6 diff --git a/src/src_bcdice/test/data/ShinobiGami.txt b/src/src_bcdice/test/data/ShinobiGami.txt deleted file mode 100644 index 7a0d071e2..000000000 --- a/src/src_bcdice/test/data/ShinobiGami.txt +++ /dev/null @@ -1,1338 +0,0 @@ -input: -2d6>=4 -output: -ShinobiGami : (2D6>=4) > 6[2,4] > 6 > 成功 -rand:2/6,4/6 -============================ -input: -2d6>=4 -output: -ShinobiGami : (2D6>=4) > 6[2,4] > 6 > 成功 -rand:2/6,4/6 -============================ -input: -2d6>=4 -output: -ShinobiGami : (2D6>=4) > 8[2,6] > 8 > 成功 -rand:6/6,2/6 -============================ -input: -2d6>=4 -output: -ShinobiGami : (2D6>=4) > 8[3,5] > 8 > 成功 -rand:3/6,5/6 -============================ -input: -2d6>=4 -output: -ShinobiGami : (2D6>=4) > 5[2,3] > 5 > 成功 -rand:2/6,3/6 -============================ -input: -2d6>=4 -output: -ShinobiGami : (2D6>=4) > 4[1,3] > 4 > 成功 -rand:3/6,1/6 -============================ -input: -2d6>=4 -output: -ShinobiGami : (2D6>=4) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2d6>=4 -output: -ShinobiGami : (2D6>=4) > 10[4,6] > 10 > 成功 -rand:6/6,4/6 -============================ -input: -2d6>=4 -output: -ShinobiGami : (2D6>=4) > 4[1,3] > 4 > 成功 -rand:3/6,1/6 -============================ -input: -2d6>=4 -output: -ShinobiGami : (2D6>=4) > 6[3,3] > 6 > 成功 -rand:3/6,3/6 -============================ -input: -2d6>=9 -output: -ShinobiGami : (2D6>=9) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2d6>=9 -output: -ShinobiGami : (2D6>=9) > 9[4,5] > 9 > 成功 -rand:5/6,4/6 -============================ -input: -2d6>=9 -output: -ShinobiGami : (2D6>=9) > 5[1,4] > 5 > 失敗 -rand:1/6,4/6 -============================ -input: -2d6>=9 -output: -ShinobiGami : (2D6>=9) > 3[1,2] > 3 > 失敗 -rand:2/6,1/6 -============================ -input: -2d6>=9 -output: -ShinobiGami : (2D6>=9) > 4[1,3] > 4 > 失敗 -rand:1/6,3/6 -============================ -input: -2d6>=9 -output: -ShinobiGami : (2D6>=9) > 7[2,5] > 7 > 失敗 -rand:2/6,5/6 -============================ -input: -2d6>=9 -output: -ShinobiGami : (2D6>=9) > 6[1,5] > 6 > 失敗 -rand:5/6,1/6 -============================ -input: -2d6>=9 -output: -ShinobiGami : (2D6>=9) > 5[2,3] > 5 > 失敗 -rand:3/6,2/6 -============================ -input: -2d6>=9 -output: -ShinobiGami : (2D6>=9) > 7[2,5] > 7 > 失敗 -rand:2/6,5/6 -============================ -input: -2d6>=9 -output: -ShinobiGami : (2D6>=9) > 11[5,6] > 11 > 成功 -rand:6/6,5/6 -============================ -input: -2d6>=7 -output: -ShinobiGami : (2D6>=7) > 6[2,4] > 6 > 失敗 -rand:2/6,4/6 -============================ -input: -2d6>=7 -output: -ShinobiGami : (2D6>=7) > 8[3,5] > 8 > 成功 -rand:3/6,5/6 -============================ -input: -2d6>=7 -output: -ShinobiGami : (2D6>=7) > 8[3,5] > 8 > 成功 -rand:5/6,3/6 -============================ -input: -2d6>=7 -output: -ShinobiGami : (2D6>=7) > 6[3,3] > 6 > 失敗 -rand:3/6,3/6 -============================ -input: -2d6>=7 -output: -ShinobiGami : (2D6>=7) > 7[1,6] > 7 > 成功 -rand:1/6,6/6 -============================ -input: -2d6>=7 -output: -ShinobiGami : (2D6>=7) > 8[2,6] > 8 > 成功 -rand:6/6,2/6 -============================ -input: -2d6>=7 -output: -ShinobiGami : (2D6>=7) > 9[4,5] > 9 > 成功 -rand:4/6,5/6 -============================ -input: -2d6>=7 -output: -ShinobiGami : (2D6>=7) > 10[5,5] > 10 > 成功 -rand:5/6,5/6 -============================ -input: -2d6>=7 -output: -ShinobiGami : (2D6>=7) > 8[3,5] > 8 > 成功 -rand:5/6,3/6 -============================ -input: -2d6>=7 -output: -ShinobiGami : (2D6>=7) > 9[3,6] > 9 > 成功 -rand:3/6,6/6 -============================ -input: -ST -output: -ShinobiGami : シーン表(10) > 大きな風が吹き荒ぶ。髪の毛や衣服が大きく揺れる。何かが起こりそうな予感…… -rand:4/6,6/6 -============================ -input: -ST -output: -ShinobiGami : シーン表(10) > 大きな風が吹き荒ぶ。髪の毛や衣服が大きく揺れる。何かが起こりそうな予感…… -rand:4/6,6/6 -============================ -input: -ST -output: -ShinobiGami : シーン表(8) > 凄まじい人混み。喧噪。影の世界のことを知らない無邪気な人々の手柄話や無駄話が騒がしい。 -rand:5/6,3/6 -============================ -input: -ST -output: -ShinobiGami : シーン表(5) > 世界の終わりのような暗黒。暗闇の中、お前達は密やかに囁く。 -rand:3/6,2/6 -============================ -input: -ST -output: -ShinobiGami : シーン表(4) > 眼下に広がる街並みを眺める。ここからなら街を一望できるが……。 -rand:2/6,2/6 -============================ -input: -ST -output: -ShinobiGami : シーン表(2) > 血の臭いがあたりに充満している。何者かの戦いがあった気配。 いや?まだ戦いは続いているのだろうか? -rand:1/6,1/6 -============================ -input: -ST -output: -ShinobiGami : シーン表(8) > 凄まじい人混み。喧噪。影の世界のことを知らない無邪気な人々の手柄話や無駄話が騒がしい。 -rand:6/6,2/6 -============================ -input: -ST -output: -ShinobiGami : シーン表(7) > 清廉な気配が漂う森の中。鳥の囀りや、そよ風が樹々を通り過ぎる音が聞こえる。 -rand:3/6,4/6 -============================ -input: -ST -output: -ShinobiGami : シーン表(8) > 凄まじい人混み。喧噪。影の世界のことを知らない無邪気な人々の手柄話や無駄話が騒がしい。 -rand:5/6,3/6 -============================ -input: -ST -output: -ShinobiGami : シーン表(5) > 世界の終わりのような暗黒。暗闇の中、お前達は密やかに囁く。 -rand:3/6,2/6 -============================ -input: -CST -output: -ShinobiGami : 都市シーン表(9) > 商店街を歩く。人ごみに混じって、不穏な気配もちらほら感じるが……。 -rand:3/6,6/6 -============================ -input: -CST -output: -ShinobiGami : 都市シーン表(8) > 古びた劇場。照明は落ち、あなたたちのほかに観客の姿は見えないが……。 -rand:4/6,4/6 -============================ -input: -CST -output: -ShinobiGami : 都市シーン表(7) > 無機質な感じのするオフィスビル。それは、まるで都市の墓標のようだ。 -rand:1/6,6/6 -============================ -input: -CST -output: -ShinobiGami : 都市シーン表(2) > シャワーを浴び、浴槽に疲れた身体を沈める。時には、癒しも必要だ。 -rand:1/6,1/6 -============================ -input: -CST -output: -ShinobiGami : 都市シーン表(6) > 至福の一杯。この一杯のために生きている……って、いつも言ってるような気がするなぁ。 -rand:4/6,2/6 -============================ -input: -CST -output: -ShinobiGami : 都市シーン表(5) > 人気のない公園。野良猫が一匹、遠くからあなたを見つめているような気がする。 -rand:4/6,1/6 -============================ -input: -CST -output: -ShinobiGami : 都市シーン表(5) > 人気のない公園。野良猫が一匹、遠くからあなたを見つめているような気がする。 -rand:4/6,1/6 -============================ -input: -CST -output: -ShinobiGami : 都市シーン表(6) > 至福の一杯。この一杯のために生きている……って、いつも言ってるような気がするなぁ。 -rand:4/6,2/6 -============================ -input: -CST -output: -ShinobiGami : 都市シーン表(5) > 人気のない公園。野良猫が一匹、遠くからあなたを見つめているような気がする。 -rand:3/6,2/6 -============================ -input: -CST -output: -ShinobiGami : 都市シーン表(3) > 閑静な住宅街。忍びの世とは関係のない日常が広がっているようにも見えるが……それも錯覚なのかもしれない -rand:1/6,2/6 -============================ -input: -MST -output: -ShinobiGami : 館シーン表(9) > 長い廊下の途中。この屋敷は広すぎて、迷子になってしまいそうだ。 -rand:5/6,4/6 -============================ -input: -MST -output: -ShinobiGami : 館シーン表(2) > どことも知れぬ暗闇の中。忍びの者たちが潜むには、おあつらえ向きの場所である。 -rand:1/6,1/6 -============================ -input: -MST -output: -ShinobiGami : 館シーン表(4) > 美しい庭園。丹精こめて育てられたであろう色とりどりの花。そして、綺麗に刈り込まれた生垣が広がっている。 -rand:2/6,2/6 -============================ -input: -MST -output: -ShinobiGami : 館シーン表(2) > どことも知れぬ暗闇の中。忍びの者たちが潜むには、おあつらえ向きの場所である。 -rand:1/6,1/6 -============================ -input: -MST -output: -ShinobiGami : 館シーン表(4) > 美しい庭園。丹精こめて育てられたであろう色とりどりの花。そして、綺麗に刈り込まれた生垣が広がっている。 -rand:3/6,1/6 -============================ -input: -MST -output: -ShinobiGami : 館シーン表(4) > 美しい庭園。丹精こめて育てられたであろう色とりどりの花。そして、綺麗に刈り込まれた生垣が広がっている。 -rand:1/6,3/6 -============================ -input: -MST -output: -ShinobiGami : 館シーン表(5) > あなたは階段でふと足を止めた。何者かの足音が近づいているようだ。 -rand:4/6,1/6 -============================ -input: -MST -output: -ShinobiGami : 館シーン表(7) > エントランスホール。古い柱時計の時報が響く中、館の主の肖像画が、あなたを見下ろしている。 -rand:6/6,1/6 -============================ -input: -MST -output: -ShinobiGami : 館シーン表(12) > 一族の納骨堂がある。冷気と瘴気に満ちたその場所に、奇妙な叫びが届く。遠くの鳥のさえずりか?それとも死者の恨みの声か……? -rand:6/6,6/6 -============================ -input: -MST -output: -ShinobiGami : 館シーン表(10) > 戯れに遊戯室へ入ってみた。そこには撞球台やダーツの的、何組かのトランプが散らばっているポーカーテーブルがあった。 -rand:5/6,5/6 -============================ -input: -DST -output: -ShinobiGami : 出島シーン表(5) > スラム。かろうじて生き延びている人たちが肩を寄せ合い生きているようだ。ここなら辛うじて安心できるかも……。 -rand:1/6,4/6 -============================ -input: -DST -output: -ShinobiGami : 出島シーン表(8) > 薄汚い路地裏。巨大な黒犬が何かを貪っている。あなたの気配を感じて黒犬は去るが、そこに遺されていたのは……。 -rand:5/6,3/6 -============================ -input: -DST -output: -ShinobiGami : 出島シーン表(8) > 薄汚い路地裏。巨大な黒犬が何かを貪っている。あなたの気配を感じて黒犬は去るが、そこに遺されていたのは……。 -rand:5/6,3/6 -============================ -input: -DST -output: -ShinobiGami : 出島シーン表(7) > 立ち並ぶ廃墟。その影から、人とも怪物ともつかぬ者の影が、あなたの様子をじっとうかがっている。 -rand:4/6,3/6 -============================ -input: -DST -output: -ShinobiGami : 出島シーン表(9) > 昏い酒場。バーテンが無言でグラスを磨き続けている。あなたの他に客の気配はないが……。 -rand:5/6,4/6 -============================ -input: -DST -output: -ShinobiGami : 出島シーン表(3) > 幻影城。訪れた者の過去や未来の風景を見せる場所。このシーンの登場人物は、《意気》の判定を行うことができる。成功すると、自分の持っている【感情】を好きな何かに変更することができる。 -rand:1/6,2/6 -============================ -input: -DST -output: -ShinobiGami : 出島シーン表(8) > 薄汚い路地裏。巨大な黒犬が何かを貪っている。あなたの気配を感じて黒犬は去るが、そこに遺されていたのは……。 -rand:6/6,2/6 -============================ -input: -DST -output: -ShinobiGami : 出島シーン表(6) > 落書きだらけのホテル。その周囲には肌を露出させた女や男たちが、媚態を浮かべながら立ち並んでいる。 -rand:3/6,3/6 -============================ -input: -DST -output: -ShinobiGami : 出島シーン表(4) > 死者たちの行進。無念の死を遂げた者たちが、仲間を求めて彷徨らっている。このシーンの登場人物は《死霊術》で判定を行わなければならない。失敗すると、ランダムに変調を一つを受ける。 -rand:2/6,2/6 -============================ -input: -DST -output: -ShinobiGami : 出島シーン表(7) > 立ち並ぶ廃墟。その影から、人とも怪物ともつかぬ者の影が、あなたの様子をじっとうかがっている。 -rand:5/6,2/6 -============================ -input: -TST -output: -ShinobiGami : トラブルシーン表(6) > 危機一髪! 同行者を死神の魔手から救い出す。……ここも油断できないな。 -rand:5/6,1/6 -============================ -input: -TST -output: -ShinobiGami : トラブルシーン表(12) > 同行者が不意に涙を流す。……一体、どうしたんだろう? -rand:6/6,6/6 -============================ -input: -TST -output: -ShinobiGami : トラブルシーン表(7) > 同行者が行方不明になる。アイツめ、どこへ逃げたッ! -rand:4/6,3/6 -============================ -input: -TST -output: -ShinobiGami : トラブルシーン表(3) > バシャ! 同行者のミスでずぶ濡れになってしまう。……冷たい。 -rand:2/6,1/6 -============================ -input: -TST -output: -ShinobiGami : トラブルシーン表(8) > ずて────ん! あいたたたた……同行者がつまずいたせいで、巻き込まれて転んでしまった。 -rand:3/6,5/6 -============================ -input: -TST -output: -ShinobiGami : トラブルシーン表(7) > 同行者が行方不明になる。アイツめ、どこへ逃げたッ! -rand:2/6,5/6 -============================ -input: -TST -output: -ShinobiGami : トラブルシーン表(10) > 「どこに目つけてんだ、てめぇ!」同行者がチンピラにからまれる。うーん、助けに入るべきか。 -rand:5/6,5/6 -============================ -input: -TST -output: -ShinobiGami : トラブルシーン表(12) > 同行者が不意に涙を流す。……一体、どうしたんだろう? -rand:6/6,6/6 -============================ -input: -TST -output: -ShinobiGami : トラブルシーン表(8) > ずて────ん! あいたたたた……同行者がつまずいたせいで、巻き込まれて転んでしまった。 -rand:5/6,3/6 -============================ -input: -TST -output: -ShinobiGami : トラブルシーン表(7) > 同行者が行方不明になる。アイツめ、どこへ逃げたッ! -rand:1/6,6/6 -============================ -input: -NST -output: -ShinobiGami : 日常シーン表(6) > 買い物帰りの友人と出会う。方向が同じなので、しばらく一緒に歩いていると、思わず会話が盛り上がる。 -rand:1/6,5/6 -============================ -input: -NST -output: -ShinobiGami : 日常シーン表(5) > ふわわわわ、いつの間にか寝ていたようだ。……って、あれ? お前、いつからそこにいたッ!! -rand:1/6,4/6 -============================ -input: -NST -output: -ShinobiGami : 日常シーン表(8) > みんなで食卓を囲むことになる。鍋にしようか? それとも焼き肉? お好み焼きなんかもい〜な〜♪ -rand:4/6,4/6 -============================ -input: -NST -output: -ShinobiGami : 日常シーン表(10) > 野良猫に餌をやる。……猫はのどを鳴らし、すっかりあなたに甘えているようだ。 -rand:5/6,5/6 -============================ -input: -NST -output: -ShinobiGami : 日常シーン表(8) > みんなで食卓を囲むことになる。鍋にしようか? それとも焼き肉? お好み焼きなんかもい〜な〜♪ -rand:3/6,5/6 -============================ -input: -NST -output: -ShinobiGami : 日常シーン表(9) > どこからか楽しそうな歌声が聞こえてくる。……って、あれ? 何でお前がこんなところに? -rand:5/6,4/6 -============================ -input: -NST -output: -ShinobiGami : 日常シーン表(6) > 買い物帰りの友人と出会う。方向が同じなので、しばらく一緒に歩いていると、思わず会話が盛り上がる。 -rand:4/6,2/6 -============================ -input: -NST -output: -ShinobiGami : 日常シーン表(6) > 買い物帰りの友人と出会う。方向が同じなので、しばらく一緒に歩いていると、思わず会話が盛り上がる。 -rand:3/6,3/6 -============================ -input: -KST -output: -ShinobiGami : 回想シーン表(9) > 恐るべき一撃! もう少しで命を落とすところだった……。しかし、あの技はいまだ見切れていない。 -rand:3/6,6/6 -============================ -input: -KST -output: -ShinobiGami : 回想シーン表(6) > アイツとの大切な約束を思い出す。守るべきだった約束。果たせなかった約束。 -rand:4/6,2/6 -============================ -input: -KST -output: -ShinobiGami : 回想シーン表(10) > 幼い頃の記憶。仲の良かったあの子。そういえば、あの子は、どこに行ってしまったのだろう。もしかして……。 -rand:5/6,5/6 -============================ -input: -KST -output: -ShinobiGami : 回想シーン表(10) > 幼い頃の記憶。仲の良かったあの子。そういえば、あの子は、どこに行ってしまったのだろう。もしかして……。 -rand:4/6,6/6 -============================ -input: -KST -output: -ShinobiGami : 回想シーン表(5) > 目の前に横たわる死体。地面に広がっていく。あれは、私のせいだったのだろうか……? -rand:2/6,3/6 -============================ -input: -KST -output: -ShinobiGami : 回想シーン表(11) > 「……ッ!!」激しい口論。ひどい別れ方をしてしまった。あんなことになると分かっていたら……。 -rand:5/6,6/6 -============================ -input: -KST -output: -ShinobiGami : 回想シーン表(12) > 懐の中のお守りを握りしめる。アイツにもらった、大切な思い出の品。「兵糧丸」を1つ獲得する。 -rand:6/6,6/6 -============================ -input: -KST -output: -ShinobiGami : 回想シーン表(7) > 助けを求める右手が、あなたに向かってまっすぐ伸びる。あなたは、必死でその手を掴もうとするが、あと一歩のところで、その手を掴み損ねる……。 -rand:4/6,3/6 -============================ -input: -KST -output: -ShinobiGami : 回想シーン表(7) > 助けを求める右手が、あなたに向かってまっすぐ伸びる。あなたは、必死でその手を掴もうとするが、あと一歩のところで、その手を掴み損ねる……。 -rand:4/6,3/6 -============================ -input: -KST -output: -ShinobiGami : 回想シーン表(10) > 幼い頃の記憶。仲の良かったあの子。そういえば、あの子は、どこに行ってしまったのだろう。もしかして……。 -rand:5/6,5/6 -============================ -input: -TKST -output: -ShinobiGami : 東京シーン表(9) > 新宿都庁。摩天楼が林立するビル街の下、背広姿の人々が行き交う。 -rand:4/6,5/6 -============================ -input: -TKST -output: -ShinobiGami : 東京シーン表(9) > 新宿都庁。摩天楼が林立するビル街の下、背広姿の人々が行き交う。 -rand:6/6,3/6 -============================ -input: -TKST -output: -ShinobiGami : 東京シーン表(6) > 霞が関。この場に集う情報は、忍者にとっても価値が高いものだ。道を行く人々の中にも、役人や警察官が目につく。 -rand:3/6,3/6 -============================ -input: -TKST -output: -ShinobiGami : 東京シーン表(11) > 山谷のドヤ街。日雇い労働者が集う管理宿泊施設の多いこの場所は、身を隠すにはうってつけだ。 -rand:5/6,6/6 -============================ -input: -TKST -output: -ShinobiGami : 東京シーン表(4) > 東京大学の本部キャンパス。正門から伸びる銀杏並木の道を学生や教職員がのんびりと歩いている。道の向こうには安田講堂が見える。 -rand:2/6,2/6 -============================ -input: -TKST -output: -ShinobiGami : 東京シーン表(9) > 新宿都庁。摩天楼が林立するビル街の下、背広姿の人々が行き交う。 -rand:6/6,3/6 -============================ -input: -TKST -output: -ShinobiGami : 東京シーン表(2) > お台場、臨界副都心。デート中のカップルや観光客が溢れている。 -rand:1/6,1/6 -============================ -input: -TKST -output: -ShinobiGami : 東京シーン表(11) > 山谷のドヤ街。日雇い労働者が集う管理宿泊施設の多いこの場所は、身を隠すにはうってつけだ。 -rand:6/6,5/6 -============================ -input: -TKST -output: -ShinobiGami : 東京シーン表(6) > 霞が関。この場に集う情報は、忍者にとっても価値が高いものだ。道を行く人々の中にも、役人や警察官が目につく。 -rand:3/6,3/6 -============================ -input: -TKST -output: -ShinobiGami : 東京シーン表(4) > 東京大学の本部キャンパス。正門から伸びる銀杏並木の道を学生や教職員がのんびりと歩いている。道の向こうには安田講堂が見える。 -rand:2/6,2/6 -============================ -input: -GST -output: -ShinobiGami : 戦国シーン表(8) > 街道沿いの宿場町。戦から逃げてきたらしい町人や、商売の種を探す商人、目つきの鋭い武士などが行き交い、賑わっている。 -rand:5/6,3/6 -============================ -input: -GST -output: -ShinobiGami : 戦国シーン表(11) > 合戦場に設けられた陣内。かがり火がたかれ、武者たちが酒宴を行っている。 -rand:5/6,6/6 -============================ -input: -GST -output: -ShinobiGami : 戦国シーン表(4) > 人気のない山道。ただ鳥の声だけが響いている。通りがかった人を襲うのには、好都合かもしれない。 -rand:2/6,2/6 -============================ -input: -GST -output: -ShinobiGami : 戦国シーン表(6) > 不気味な気配漂う森の中。何か得体のしれぬものが潜んでいそうだ。 -rand:4/6,2/6 -============================ -input: -GST -output: -ShinobiGami : 戦国シーン表(10) > 館の天井裏。この下では今、何が行われているのか……。 -rand:4/6,6/6 -============================ -input: -GST -output: -ShinobiGami : 戦国シーン表(8) > 街道沿いの宿場町。戦から逃げてきたらしい町人や、商売の種を探す商人、目つきの鋭い武士などが行き交い、賑わっている。 -rand:2/6,6/6 -============================ -input: -GST -output: -ShinobiGami : 戦国シーン表(6) > 不気味な気配漂う森の中。何か得体のしれぬものが潜んでいそうだ。 -rand:2/6,4/6 -============================ -input: -GST -output: -ShinobiGami : 戦国シーン表(9) > 城の天守閣のさらに上。強く吹く風が、雲を流していく。 -rand:3/6,6/6 -============================ -input: -GST -output: -ShinobiGami : 戦国シーン表(9) > 城の天守閣のさらに上。強く吹く風が、雲を流していく。 -rand:3/6,6/6 -============================ -input: -GST -output: -ShinobiGami : 戦国シーン表(8) > 街道沿いの宿場町。戦から逃げてきたらしい町人や、商売の種を探す商人、目つきの鋭い武士などが行き交い、賑わっている。 -rand:2/6,6/6 -============================ -input: -GAST -output: -ShinobiGami : 学校シーン表(6) > 校庭。体操服姿の生徒たちが走っている。 -rand:3/6,3/6 -============================ -input: -GAST -output: -ShinobiGami : 学校シーン表(8) > 学食のカフェテリア。生徒たちがまばらに席につき、思い思い談笑している。 -rand:2/6,6/6 -============================ -input: -GAST -output: -ShinobiGami : 学校シーン表(4) > 誰もいない体育館。バスケットボールがころころと転がっている。 -rand:2/6,2/6 -============================ -input: -GAST -output: -ShinobiGami : 学校シーン表(8) > 学食のカフェテリア。生徒たちがまばらに席につき、思い思い談笑している。 -rand:3/6,5/6 -============================ -input: -GAST -output: -ShinobiGami : 学校シーン表(9) > 静かな授業中の風景。しかし、忍術を使って一般生徒に気取られない会話をしている忍者たちもいる。 -rand:5/6,4/6 -============================ -input: -GAST -output: -ShinobiGami : 学校シーン表(4) > 誰もいない体育館。バスケットボールがころころと転がっている。 -rand:3/6,1/6 -============================ -input: -GAST -output: -ShinobiGami : 学校シーン表(5) > 校舎の屋上。一陣の風が吹き、衣服をたなびかせる。 -rand:4/6,1/6 -============================ -input: -GAST -output: -ShinobiGami : 学校シーン表(12) > プール。水面が、ゆらゆら揺れている。 -rand:6/6,6/6 -============================ -input: -GAST -output: -ShinobiGami : 学校シーン表(9) > 静かな授業中の風景。しかし、忍術を使って一般生徒に気取られない会話をしている忍者たちもいる。 -rand:6/6,3/6 -============================ -input: -GAST -output: -ShinobiGami : 学校シーン表(6) > 校庭。体操服姿の生徒たちが走っている。 -rand:2/6,4/6 -============================ -input: -KYST -output: -ShinobiGami : 京都シーン表(6) > 京都はどこにでもおみやげ物屋があるなぁ。さて、あいつに何を買ってやるべきか……? -rand:2/6,4/6 -============================ -input: -KYST -output: -ShinobiGami : 京都シーン表(6) > 京都はどこにでもおみやげ物屋があるなぁ。さて、あいつに何を買ってやるべきか……? -rand:4/6,2/6 -============================ -input: -KYST -output: -ShinobiGami : 京都シーン表(6) > 京都はどこにでもおみやげ物屋があるなぁ。さて、あいつに何を買ってやるべきか……? -rand:3/6,3/6 -============================ -input: -KYST -output: -ShinobiGami : 京都シーン表(9) > 大学が近くにあるのかな? 安い定食屋や古本屋、ゲームセンターなどが軒を連ねる学生街。京都はたくさん大学があるなぁ。 -rand:5/6,4/6 -============================ -input: -KYST -output: -ShinobiGami : 京都シーン表(7) > 「神社仏閣シーン表(JBST)」で決定。 -rand:1/6,6/6 -============================ -input: -KYST -output: -ShinobiGami : 京都シーン表(7) > 「神社仏閣シーン表(JBST)」で決定。 -rand:3/6,4/6 -============================ -input: -KYST -output: -ShinobiGami : 京都シーン表(12) > 一般公開された京都御所の中を歩く。昼間だというのに人通りはあまりなく、何だか少し寂しい気持ち。 -rand:6/6,6/6 -============================ -input: -KYST -output: -ShinobiGami : 京都シーン表(7) > 「神社仏閣シーン表(JBST)」で決定。 -rand:6/6,1/6 -============================ -input: -KYST -output: -ShinobiGami : 京都シーン表(10) > 静かな竹林。凛とした気配が漂う。 -rand:6/6,4/6 -============================ -input: -KYST -output: -ShinobiGami : 京都シーン表(6) > 京都はどこにでもおみやげ物屋があるなぁ。さて、あいつに何を買ってやるべきか……? -rand:4/6,2/6 -============================ -input: -JBST -output: -ShinobiGami : 神社仏閣シーン表(8) > 清水寺。清水坂を越え、仁王門を抜けると、本堂――いわゆる清水の舞台にたどり着く。そこからは、音羽の滝や子安塔が見える。 -rand:6/6,2/6 -============================ -input: -JBST -output: -ShinobiGami : 神社仏閣シーン表(10) > 伏見稲荷。全国約四万社の稲荷神社の総本宮。稲荷山に向かって立ち並ぶ約一万基の鳥居は、まるで異界へと続いているかのようだ……。 -rand:6/6,4/6 -============================ -input: -JBST -output: -ShinobiGami : 神社仏閣シーン表(4) > 平安神宮。大鳥居を白無垢の花嫁行列がくぐり抜けていくのが見える。どうやら結婚式のようだ。 -rand:1/6,3/6 -============================ -input: -JBST -output: -ShinobiGami : 神社仏閣シーン表(9) > 八坂神社。祇園さんの名前で知られるにぎやかな神社。舞妓さんの姿もちらほら。 -rand:4/6,5/6 -============================ -input: -JBST -output: -ShinobiGami : 神社仏閣シーン表(5) > 慈照寺――通称、銀閣寺。室町後期の東山文化を代表する建築である。錦鏡池を囲む庭園には、物思いにふける観光客の姿が……。 -rand:3/6,2/6 -============================ -input: -JBST -output: -ShinobiGami : 神社仏閣シーン表(7) > 三十三間堂。荘厳な本堂に立ち並ぶ千一体の千手観音像は圧巻。 -rand:3/6,4/6 -============================ -input: -JBST -output: -ShinobiGami : 神社仏閣シーン表(6) > 鹿苑寺――通称、金閣寺。室町前期の北山文化を代表する建築である。鏡湖池に映る逆さ金閣には、強力な「魔」を封印していると言うが……? -rand:1/6,5/6 -============================ -input: -JBST -output: -ShinobiGami : 神社仏閣シーン表(8) > 清水寺。清水坂を越え、仁王門を抜けると、本堂――いわゆる清水の舞台にたどり着く。そこからは、音羽の滝や子安塔が見える。 -rand:6/6,2/6 -============================ -input: -JBST -output: -ShinobiGami : 神社仏閣シーン表(9) > 八坂神社。祇園さんの名前で知られるにぎやかな神社。舞妓さんの姿もちらほら。 -rand:5/6,4/6 -============================ -input: -JBST -output: -ShinobiGami : 神社仏閣シーン表(10) > 伏見稲荷。全国約四万社の稲荷神社の総本宮。稲荷山に向かって立ち並ぶ約一万基の鳥居は、まるで異界へと続いているかのようだ……。 -rand:4/6,6/6 -============================ -input: -FT -output: -ShinobiGami : ファンブル表(4) > 油断した! 術の制御に失敗し、好きな【生命力】を1点失う。 -rand:4/6 -============================ -input: -FT -output: -ShinobiGami : ファンブル表(6) > ふう。危ないところだった。特に何も起こらない。 -rand:6/6 -============================ -input: -FT -output: -ShinobiGami : ファンブル表(6) > ふう。危ないところだった。特に何も起こらない。 -rand:6/6 -============================ -input: -FT -output: -ShinobiGami : ファンブル表(3) > 情報が漏れる! このゲームであなたが獲得した【秘密】は、他のキャラクター全員の知るところとなる。 -rand:3/6 -============================ -input: -FT -output: -ShinobiGami : ファンブル表(6) > ふう。危ないところだった。特に何も起こらない。 -rand:6/6 -============================ -input: -FT -output: -ShinobiGami : ファンブル表(1) > 何か調子がおかしい。そのサイクルの間、すべての行為判定にマイナス1の修正がつく。 -rand:1/6 -============================ -input: -FT -output: -ShinobiGami : ファンブル表(4) > 油断した! 術の制御に失敗し、好きな【生命力】を1点失う。 -rand:4/6 -============================ -input: -FT -output: -ShinobiGami : ファンブル表(2) > しまった! 好きな忍具を1つ失ってしまう。 -rand:2/6 -============================ -input: -FT -output: -ShinobiGami : ファンブル表(4) > 油断した! 術の制御に失敗し、好きな【生命力】を1点失う。 -rand:4/6 -============================ -input: -FT -output: -ShinobiGami : ファンブル表(6) > ふう。危ないところだった。特に何も起こらない。 -rand:6/6 -============================ -input: -ET -output: -ShinobiGami : 感情表(1) > 共感(プラス)/不信(マイナス) -rand:1/6 -============================ -input: -ET -output: -ShinobiGami : 感情表(6) > 狂信(プラス)/殺意(マイナス) -rand:6/6 -============================ -input: -ET -output: -ShinobiGami : 感情表(5) > 憧憬(プラス)/劣等感(マイナス) -rand:5/6 -============================ -input: -ET -output: -ShinobiGami : 感情表(1) > 共感(プラス)/不信(マイナス) -rand:1/6 -============================ -input: -ET -output: -ShinobiGami : 感情表(4) > 忠誠(プラス)/侮蔑(マイナス) -rand:4/6 -============================ -input: -ET -output: -ShinobiGami : 感情表(1) > 共感(プラス)/不信(マイナス) -rand:1/6 -============================ -input: -ET -output: -ShinobiGami : 感情表(2) > 友情(プラス)/怒り(マイナス) -rand:2/6 -============================ -input: -ET -output: -ShinobiGami : 感情表(3) > 愛情(プラス)/妬み(マイナス) -rand:3/6 -============================ -input: -ET -output: -ShinobiGami : 感情表(1) > 共感(プラス)/不信(マイナス) -rand:1/6 -============================ -input: -ET -output: -ShinobiGami : 感情表(2) > 友情(プラス)/怒り(マイナス) -rand:2/6 -============================ -input: -WT -output: -ShinobiGami : 変調表(2) > マヒ:修得済み特技がランダムに1つ使用不能になる。1サイクルの終了時に、《身体操術》で成功するとこの効果は無効化される。 -rand:2/6 -============================ -input: -WT -output: -ShinobiGami : 変調表(6) > 呪い:修得済み忍法がランダムに1つ使用不能。1サイクルの終了時に、《呪術》で成功すると無効化される。 -rand:6/6 -============================ -input: -WT -output: -ShinobiGami : 変調表(6) > 呪い:修得済み忍法がランダムに1つ使用不能。1サイクルの終了時に、《呪術》で成功すると無効化される。 -rand:6/6 -============================ -input: -WT -output: -ShinobiGami : 変調表(5) > 忘却:修得済み感情がランダムに1つ使用不能。1サイクルの終了時に、《記憶術》で成功すると無効化される。 -rand:5/6 -============================ -input: -WT -output: -ShinobiGami : 変調表(5) > 忘却:修得済み感情がランダムに1つ使用不能。1サイクルの終了時に、《記憶術》で成功すると無効化される。 -rand:5/6 -============================ -input: -WT -output: -ShinobiGami : 変調表(6) > 呪い:修得済み忍法がランダムに1つ使用不能。1サイクルの終了時に、《呪術》で成功すると無効化される。 -rand:6/6 -============================ -input: -WT -output: -ShinobiGami : 変調表(4) > 行方不明:その戦闘終了後、メインフェイズ中に行動不可。1サイクルの終了時に、《経済力》で成功すると無効化される。 -rand:4/6 -============================ -input: -WT -output: -ShinobiGami : 変調表(1) > 故障:すべての忍具が使用不能。1サイクルの終了時に、《絡繰術》で判定を行い、成功するとこの効果は無効化される。 -rand:1/6 -============================ -input: -WT -output: -ShinobiGami : 変調表(3) > 重傷:次の自分の手番に行動すると、ランダムな特技分野1つの【生命力】に1点ダメージ。1サイクルの終了時に、《生存術》で成功すると無効化される。 -rand:3/6 -============================ -input: -WT -output: -ShinobiGami : 変調表(4) > 行方不明:その戦闘終了後、メインフェイズ中に行動不可。1サイクルの終了時に、《経済力》で成功すると無効化される。 -rand:4/6 -============================ -input: -GWT -output: -ShinobiGami : 戦国変調表(1) > 催眠:戦闘に参加した時、戦闘開始時、もしくはこの変調を受けた時に【生命力】を1点減少しないと、戦闘から脱落する。サイクル終了時に〈意気〉判定し成功すると無効化。 -rand:1/6 -============================ -input: -GWT -output: -ShinobiGami : 戦国変調表(1) > 催眠:戦闘に参加した時、戦闘開始時、もしくはこの変調を受けた時に【生命力】を1点減少しないと、戦闘から脱落する。サイクル終了時に〈意気〉判定し成功すると無効化。 -rand:1/6 -============================ -input: -GWT -output: -ShinobiGami : 戦国変調表(5) > 残刃:回復判定、忍法、背景、忍具の効果による【生命力】回復無効。サイクル終了時に〈拷問術〉判定し成功すると無効化。 -rand:5/6 -============================ -input: -GWT -output: -ShinobiGami : 戦国変調表(1) > 催眠:戦闘に参加した時、戦闘開始時、もしくはこの変調を受けた時に【生命力】を1点減少しないと、戦闘から脱落する。サイクル終了時に〈意気〉判定し成功すると無効化。 -rand:1/6 -============================ -input: -GWT -output: -ShinobiGami : 戦国変調表(2) > 火達磨:ファンブル値が1上昇し、ファンブル時に1点の近接ダメージを受ける。シーン終了時に無効化。 -rand:2/6 -============================ -input: -GWT -output: -ShinobiGami : 戦国変調表(5) > 残刃:回復判定、忍法、背景、忍具の効果による【生命力】回復無効。サイクル終了時に〈拷問術〉判定し成功すると無効化。 -rand:5/6 -============================ -input: -GWT -output: -ShinobiGami : 戦国変調表(3) > 猛毒:戦闘に参加した時、ラウンドの終了時にサイコロを1つ振る(飢餓と共用)。奇数だったら【生命力】を1減少。サイクル終了時に〈毒術〉判定し成功すると無効化。 -rand:3/6 -============================ -input: -GWT -output: -ShinobiGami : 戦国変調表(1) > 催眠:戦闘に参加した時、戦闘開始時、もしくはこの変調を受けた時に【生命力】を1点減少しないと、戦闘から脱落する。サイクル終了時に〈意気〉判定し成功すると無効化。 -rand:1/6 -============================ -input: -GWT -output: -ShinobiGami : 戦国変調表(3) > 猛毒:戦闘に参加した時、ラウンドの終了時にサイコロを1つ振る(飢餓と共用)。奇数だったら【生命力】を1減少。サイクル終了時に〈毒術〉判定し成功すると無効化。 -rand:3/6 -============================ -input: -GWT -output: -ShinobiGami : 戦国変調表(4) > 飢餓:戦闘に参加した時、ラウンドの終了時にサイコロを1つ振る(猛毒と共用)。偶数だったら【生命力】を1減少。サイクル終了時に〈兵糧術〉判定し成功すると無効化。 -rand:4/6 -============================ -input: -BT -output: -ShinobiGami : 戦場表(1) > 平地:特になし。 -rand:1/6 -============================ -input: -BT -output: -ShinobiGami : 戦場表(6) > 極地:宇宙や深海、溶岩、魔界など。ラウンドの終わりにGMが1D6を振り、経過ラウンド以下なら全員1点ダメージ。ここから脱落したものは変調表を適用する。 -rand:6/6 -============================ -input: -BT -output: -ShinobiGami : 戦場表(3) > 高所:ビルの谷間や樹上、断崖絶壁など。この戦場でファンブルすると1点のダメージを受ける。 -rand:3/6 -============================ -input: -BT -output: -ShinobiGami : 戦場表(4) > 悪天候:嵐や吹雪、ミサイルの雨など。この戦場では、すべての攻撃忍法の間合が1上昇する。 -rand:4/6 -============================ -input: -BT -output: -ShinobiGami : 戦場表(2) > 水中:海や川や、プール、血の池地獄など。この戦場では、回避判定に-2の修正がつく。 -rand:2/6 -============================ -input: -BT -output: -ShinobiGami : 戦場表(4) > 悪天候:嵐や吹雪、ミサイルの雨など。この戦場では、すべての攻撃忍法の間合が1上昇する。 -rand:4/6 -============================ -input: -BT -output: -ShinobiGami : 戦場表(5) > 雑踏:人混みや教室、渋滞中の車道など。この戦場では、行為判定のとき、2D6の目がプロット値+1以下だとファンブルする。 -rand:5/6 -============================ -input: -BT -output: -ShinobiGami : 戦場表(3) > 高所:ビルの谷間や樹上、断崖絶壁など。この戦場でファンブルすると1点のダメージを受ける。 -rand:3/6 -============================ -input: -BT -output: -ShinobiGami : 戦場表(4) > 悪天候:嵐や吹雪、ミサイルの雨など。この戦場では、すべての攻撃忍法の間合が1上昇する。 -rand:4/6 -============================ -input: -BT -output: -ShinobiGami : 戦場表(2) > 水中:海や川や、プール、血の池地獄など。この戦場では、回避判定に-2の修正がつく。 -rand:2/6 -============================ -input: -RTT -output: -ShinobiGami : ランダム指定特技表(2,7) > 『体術』歩法 -rand:2/6,4/6,3/6 -============================ -input: -MT -output: -ShinobiGami : 異形表(2) > 1D6を振り、「妖魔忍法表B」で、ランダムに忍法の種類を決定する。妖魔化している間、その妖魔忍法を修得しているものとして扱う。この異形は、違う種類の妖魔忍法である限り、違う異形として扱う。 妖魔忍法表B > 【木魂】(怪p.253) -rand:2/6,4/6 -============================ -input: -PLST -output: -ShinobiGami : 培養プラントシーン表(2) > 巨大なガラス管の中に冒涜的な生物が蠢く実験室。《意気》で判定を行い、失敗すると《マヒ》の変調を受ける。 -rand:2/6 -============================ -input: -HY -output: -ShinobiGami : 夜行列車シーン表(12) > 車輌の果てを確かめるため、延々扉をくぐっているが、いつまでたっても最前列(最後尾?)にたどりつかない。今、いったい何輌目だろうか? -rand:6/6,6/6 -============================ -input: -HC -output: -ShinobiGami : 中忍試験シーン表(12) > 脱落した別のグループの忍者の死体を発見する。こいつらには、もう不要だろう。好きな忍具1つを獲得する。(何を獲得するか宣言すること)。 -rand:6/6,6/6 -============================ -input: -HK -output: -ShinobiGami : 影の街でシーン表(12) > 太陽の微笑みがあなたを包み込む。影の世界の住人には、あまりにまぶしすぎる。 -rand:6/6,6/6 -============================ -input: -HM -output: -ShinobiGami : 密室シーン表(12) > 壁のシミをぼんやりとながめていたら、それがゆっくりと人の顔の形になり、にやりと笑いかけてきた。……幻覚か。 -rand:6/6,6/6 -============================ -input: -HO -output: -ShinobiGami : 病院シーン表(12) > 霊安室。その扉が並ぶ長い廊下には、地下特有の淀んだ空気が漂っている。なぜだか気分が悪い。 -rand:6/6,6/6 -============================ -input: -HR -output: -ShinobiGami : 龍動シーン表(12) > 無残で冒涜的な死体。犠牲者の表情は苦悶に満ちあふれ、四肢には何者かに貪り食われた痕がある。 -rand:6/6,6/6 -============================ -input: -HS -output: -ShinobiGami : 催眠シーン表(6) > あなたは膨大な数の書架が林立する無人の図書館を歩いている。何気なく一冊の本を棚から抜き出すと、その本の向こう側にナビキャラクターの顔がのぞいている。「お前の求めるものは、その本の14ページに書かれている。」その言葉に従い、恐る恐る14ページを開いてみると……。 -rand:6/6 -============================ -input: -HT -output: -ShinobiGami : 滅びの塔シーン表(12) > 太陽の微笑みがあなたを包み込む。影の世界の住人には、あまりにまぶしすぎる。 -rand:6/6,6/6 -============================ -input: -HY -output: -ShinobiGami : 夜行列車シーン表(12) > 車輌の果てを確かめるため、延々扉をくぐっているが、いつまでたっても最前列(最後尾?)にたどりつかない。今、いったい何輌目だろうか? -rand:6/6,6/6 -============================ -input: -D66 -output: -ShinobiGami : (D66) > 66 -rand:6/6,6/6 -============================ -input: -SD66 -output: -ShinobiGami : (D66) > 66###secret dice### -rand:6/6,6/6 -============================ -input: -S1D6 -output: -ShinobiGami : (1D6) > 1###secret dice### -rand:1/6, -============================ -input: -AKST -output: -ShinobiGami : 秋空に雪舞えばシーン表(12) > カツーン、カツーン、誰かが丑の刻参りをしている音が聞こえる。シーンに登場したキャラクターは《呪術》で判定し、成功すると誰かに《呪い》の変調を与えることができる。失敗すると《呪い》の変調を受ける。 -rand:6/6,6/6 -============================ -input: -CLST -output: -ShinobiGami : 災厄シーン表(6) > 力なき者が生き残ることは出来ない。ボスが新たな力を手に入れようとしている。シーンプレイヤーが《怪力》の判定に失敗した場合、ボスに対してエニグマ:『八面六臂』が公開状態で追加される。 -rand:6/6 -============================ -input: -DXST -output: -ShinobiGami : 出島EXシーン表(12) > 目の前に渡来人が現れる。渡来人はあなたに興味を持ち、襲い掛かってくる。このシーンの登場人物は《刀術》で判定を行わなければならない。成功すると、渡来人を倒し、好きな忍具を一つ獲得する。失敗すると、3点の接近戦ダメージを受ける。 -rand:6/6,6/6 -============================ -input: -HLST -output: -ShinobiGami : 斜歯ラボシーン表(12) > 部屋に置かれた実験装置によりマインドコントロールを受けてしまう。このシーンのあなたはGMの指定した行動をとらねばならない。 -rand:6/6,6/6 -============================ -input: -NTST -output: -ShinobiGami : 夏の終わりシーン表(12) > カツーン、カツーン、誰かが丑の刻参りをしている音が聞こえる。シーンに登場したキャラクターは《呪術》で判定し、成功すると誰かに《呪い》の変調を与えることができる。失敗すると《呪い》の変調を受ける。 -rand:6/6,6/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -ShinobiGami : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 -============================ -input: -2d6>=5 -output: -ShinobiGami : (2D6>=5) > 2[1,1] > 2 > ファンブル -rand:1/6,1/6 -============================ -input: -2d6>=5 -output: -ShinobiGami : (2D6>=5) > 12[6,6] > 12 > スペシャル(【生命力】1点か変調一つを回復) -rand:6/6,6/6 -============================ -input: -2d6>=? 目標値?でファンブル -output: -ShinobiGami : (2D6>=?) > 2[1,1] > 2 > ファンブル -rand:1/6,1/6 -============================ -input: -2d6>=? 目標値?でクリティカル -output: -ShinobiGami : (2D6>=?) > 12[6,6] > 12 > スペシャル(【生命力】1点か変調一つを回復) -rand:6/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/ShoujoTenrankai.txt b/src/src_bcdice/test/data/ShoujoTenrankai.txt deleted file mode 100644 index c134cb767..000000000 --- a/src/src_bcdice/test/data/ShoujoTenrankai.txt +++ /dev/null @@ -1,432 +0,0 @@ -input: -SPRING -output: -ShoujoTenrankai : 出来事表:春([1,1]) > 【奇・1】【花びら(純従)】(グッズ)が舞い込んで来ます。蝶だったかもしれません。 -rand:1/6,1/6 -============================ -input: -SPRING -output: -ShoujoTenrankai : 出来事表:春([3,6]) > 【奇・6】軽く汗ばむほどの陽気です。(テンション+3) -rand:3/6,6/6 -============================ -input: -SPRING -output: -ShoujoTenrankai : 出来事表:春([6,1]) > 【偶・1】春霞がぼんやりと景色を包み込んでいます。(カタストロフ+1)(テンション+5) -rand:6/6,1/6 -============================ -input: -SPRING -output: -ShoujoTenrankai : 出来事表:春([6,6]) > 【偶・6】気持ちよさそうにしている生き物(【コンパニオン】から任意)がいます。 -rand:6/6,6/6 -============================ -input: -SUMMER -output: -ShoujoTenrankai : 出来事表:夏([1,1]) > 【奇・1】建物の中に蔓草が入り込んでいます。(カタストロフ+1) -rand:1/6,1/6 -============================ -input: -SUMMER -output: -ShoujoTenrankai : 出来事表:夏([6,6]) > 【偶・6】焼け付く日差しの中、黒々とした影が落ちています。(ルナティック+1) -rand:6/6,6/6 -============================ -input: -AUTUMN -output: -ShoujoTenrankai : 出来事表:秋([1,1]) > 【奇・1】たわわに実った果物があります。 -rand:1/6,1/6 -============================ -input: -AUTUMN -output: -ShoujoTenrankai : 出来事表:秋([6,6]) > 【偶・6】【枯葉(従純)】(グッズ)がさくさく、さらさらと音を立てます。 -rand:6/6,6/6 -============================ -input: -WINTER -output: -ShoujoTenrankai : 出来事表:冬([1,1]) > 【奇・1】太陽(月)に暈がかかっています。 -rand:1/6,1/6 -============================ -input: -WINTER -output: -ShoujoTenrankai : 出来事表:冬([6,6]) > 【偶・6】骸骨のようにそびえる冬の木の枝に、そこだけ青々とヤドリギが茂っています。(カタストロフ+1) -rand:6/6,6/6 -============================ -input: -MORNING -output: -ShoujoTenrankai : 出来事表:朝([1,1]) > 【奇・1】起きたら涙を流していました。 -rand:1/6,1/6 -============================ -input: -MORNING -output: -ShoujoTenrankai : 出来事表:朝([6,6]) > 【偶・6】鳥の声が響いています。 -rand:6/6,6/6 -============================ -input: -NOON -output: -ShoujoTenrankai : 出来事表:昼([1,1]) > 【奇・1】なんだかじっとしていられません。 -rand:1/6,1/6 -============================ -input: -NOON -output: -ShoujoTenrankai : 出来事表:昼([6,6]) > 【偶・6】目に触れるあらゆるものが輝いて見えます。(ハートフル+1) -rand:6/6,6/6 -============================ -input: -AFTERNOON -output: -ShoujoTenrankai : 出来事表:昼下がり([1,1]) > 【奇・1】快い眠気に襲われています。 -rand:1/6,1/6 -============================ -input: -AFTERNOON -output: -ShoujoTenrankai : 出来事表:昼下がり([6,6]) > 【偶・6】視線を感じました。 -rand:6/6,6/6 -============================ -input: -TWILIGHT -output: -ShoujoTenrankai : 出来事表:黄昏([1,1]) > 【奇・1】人影を見たような気がします。(ルナティック+1) -rand:1/6,1/6 -============================ -input: -TWILIGHT -output: -ShoujoTenrankai : 出来事表:黄昏([6,6]) > 【偶・6】ものの境い目があいまいになり、全てが溶けて混ざり合ってしまいそうです。(ロマンティック+1) -rand:6/6,6/6 -============================ -input: -NIGHT -output: -ShoujoTenrankai : 出来事表:夜中([1,1]) > 【奇・1】なかなか眠くなれません。 -rand:1/6,1/6 -============================ -input: -NIGHT -output: -ShoujoTenrankai : 出来事表:夜中([6,6]) > 【偶・6】どこからかとても美味しそうな匂いがただよってきます。 -rand:6/6,6/6 -============================ -input: -MIDNIGHT -output: -ShoujoTenrankai : 出来事表:夜更け([1,1]) > 【奇・1】時計の音がやけに大きく響いています。(カタストロフ+1) -rand:1/6,1/6 -============================ -input: -MIDNIGHT -output: -ShoujoTenrankai : 出来事表:夜更け([6,6]) > 【偶・6】違和感のある香りを感じました。 -rand:6/6,6/6 -============================ -input: -NORBLE -output: -ShoujoTenrankai : 出来事表:貴族趣味([1,1]) > 【奇・1】毛足の長い絨毯に足音を吸い取られてしまいました。 -rand:1/6,1/6 -============================ -input: -NORBLE -output: -ShoujoTenrankai : 出来事表:貴族趣味([6,6]) > 【偶・6】いつか聞いたお話の、お姫様を思い出しました。 -rand:6/6,6/6 -============================ -input: -MARCHEN -output: -ShoujoTenrankai : 出来事表:メルヒェン([1,1]) > 【奇・1】懐かしさを覚える木の香りがします。(カタストロフ+1) -rand:1/6,1/6 -============================ -input: -MARCHEN -output: -ShoujoTenrankai : 出来事表:メルヒェン([6,6]) > 【偶・6】なにかがひとつ、足りない気がします。(ルナティック+1) -rand:6/6,6/6 -============================ -input: -COLONIAL -output: -ShoujoTenrankai : 出来事表:コロニアル([1,1]) > 【奇・1】重厚な調度が征服欲を刺激します。 -rand:1/6,1/6 -============================ -input: -COLONIAL -output: -ShoujoTenrankai : 出来事表:コロニアル([6,6]) > 【偶・6】そこの頑丈そうな机は、なんだか座り心地がよさそうです。 -rand:6/6,6/6 -============================ -input: -SHELF -output: -ShoujoTenrankai : 出来事表:本棚のある場所([1,1]) > 【奇・1】明らかに踏み台に使ったらしく、【大判の本(打押)】(グッズ)が積み上げてあります。(ハートフル+1) -rand:1/6,1/6 -============================ -input: -SHELF -output: -ShoujoTenrankai : 出来事表:本棚のある場所([6,6]) > 【偶・6】【押し花(純察)】(グッズ)が一輪、落ちていました。 -rand:6/6,6/6 -============================ -input: -LITTLE -output: -ShoujoTenrankai : 出来事表:小さな妹の部屋([1,1]) > 【奇・1】つまづいてしまった【玩具(従純)】(グッズ)が、ころりと可愛らしい音を立てました。 -rand:1/6,1/6 -============================ -input: -LITTLE -output: -ShoujoTenrankai : 出来事表:小さな妹の部屋([6,6]) > 【偶・6】ふと、この棲み処の主は、どんな素敵な人になるだろう、と思いました。(カタストロフ+1) -rand:6/6,6/6 -============================ -input: -ELDER -output: -ShoujoTenrankai : 出来事表:素敵なお姉さまの部屋([1,1]) > 【奇・1】床に映った影が、ゆっくりと動いていきます。(カタストロフ+1) -rand:1/6,1/6 -============================ -input: -ELDER -output: -ShoujoTenrankai : 出来事表:素敵なお姉さまの部屋([6,6]) > 【偶・6】【部屋着(従純)】(コーディネート)がハンガーにかけられています。 -rand:6/6,6/6 -============================ -input: -ATERIEL -output: -ShoujoTenrankai : 出来事表:アトリエ([1,1]) > 【奇・1】棚に【道具(打支)】(グッズ)がきちんと整頓されています。 -rand:1/6,1/6 -============================ -input: -ATERIEL -output: -ShoujoTenrankai : 出来事表:アトリエ([6,6]) > 【偶・6】「作業中、入るな!」と書かれた【紐付きのプレート(支押)】(グッズ)が手に取りやすい位置に置いてあります。(ハートフル+1) -rand:6/6,6/6 -============================ -input: -OPEN -output: -ShoujoTenrankai : 出来事表:集まれる場所([1,1]) > 【奇・1】かつての楽しい出来事の余韻が、伝わってくるような気がします。(ハートフル+1) -rand:1/6,1/6 -============================ -input: -OPEN -output: -ShoujoTenrankai : 出来事表:集まれる場所([6,6]) > 【偶・6】壁に【ナイフ(支従)】(グッズ)が突き立っています。(ルナティック+1) -rand:6/6,6/6 -============================ -input: -HAUNTED -output: -ShoujoTenrankai : 出来事表:精神的瑕疵物件([1,1]) > 【奇・1】赤黒い染みを見つけてしまいました。 -rand:1/6,1/6 -============================ -input: -HAUNTED -output: -ShoujoTenrankai : 出来事表:精神的瑕疵物件([6,6]) > 【偶・6】うっすらと手形がついています。 -rand:6/6,6/6 -============================ -input: -SIMPLE -output: -ShoujoTenrankai : 出来事表:侘び住まい([1,1]) > 【奇・1】若干、風通しがよすぎるようです。 -rand:1/6,1/6 -============================ -input: -SIMPLE -output: -ShoujoTenrankai : 出来事表:侘び住まい([6,6]) > 【偶・6】このまま誰かの思い出の中に閉じこめられてしまいそうな気分になりました。(カタストロフ+1) -rand:6/6,6/6 -============================ -input: -LARGE -output: -ShoujoTenrankai : 出来事表:広い場所([1,1]) > 【奇・1】がらんとした広さに、胸を衝かれました。 -rand:1/6,1/6 -============================ -input: -LARGE -output: -ShoujoTenrankai : 出来事表:広い場所([6,6]) > 【偶・6】天井がきしんだような気がします。 -rand:6/6,6/6 -============================ -input: -CORRIDOR -output: -ShoujoTenrankai : 出来事表:廊下([1,1]) > 【奇・1】窓が開け放たれています。(カタストロフ+1) -rand:1/6,1/6 -============================ -input: -CORRIDOR -output: -ShoujoTenrankai : 出来事表:廊下([6,6]) > 【偶・6】空っぽの飾り棚が置かれています。 -rand:6/6,6/6 -============================ -input: -STAIRS -output: -ShoujoTenrankai : 出来事表:階段([1,1]) > 【奇・1】踊り場に大きな姿見が掛けられています。(カタストロフ+1) -rand:1/6,1/6 -============================ -input: -STAIRS -output: -ShoujoTenrankai : 出来事表:階段([6,6]) > 【偶・6】一段踏み外しました。 -rand:6/6,6/6 -============================ -input: -COSY -output: -ShoujoTenrankai : 出来事表:居心地のいい場所([1,1]) > 【奇・1】一瞬、物音が全て途絶えました。 -rand:1/6,1/6 -============================ -input: -COSY -output: -ShoujoTenrankai : 出来事表:居心地のいい場所([6,6]) > 【偶・6】軽い眠気に教われました。 -rand:6/6,6/6 -============================ -input: -TERRACE -output: -ShoujoTenrankai : 出来事表:テラス・ベランダ([1,1]) > 【奇・1】木の枝や木の葉が積もっています。 -rand:1/6,1/6 -============================ -input: -TERRACE -output: -ShoujoTenrankai : 出来事表:テラス・ベランダ([6,6]) > 【偶・6】軒(窓、破風)の飾りが壊れ、【かけら(従察)】(グッズ)が落ちています。 -rand:6/6,6/6 -============================ -input: -GARRET -output: -ShoujoTenrankai : 出来事表:屋根裏([1,1]) > 【奇・1】隙間風が【空っぽの小箱(打支)】(グッズ)を揺らして床に落としました。 -rand:1/6,1/6 -============================ -input: -GARRET -output: -ShoujoTenrankai : 出来事表:屋根裏([6,6]) > 【偶・6】ねずみかなにかが壁の中を駆け抜けていく小さな物音がしました。(ルナティック+1) -rand:6/6,6/6 -============================ -input: -KITCHEN -output: -ShoujoTenrankai : 出来事表:台所([1,1]) > 【奇・1】【よく洗われた食器(従純)】(グッズ)が輝きを放っています。(ハートフル+1) -rand:1/6,1/6 -============================ -input: -KITCHEN -output: -ShoujoTenrankai : 出来事表:台所([6,6]) > 【偶・6】分捕り品に齧り付いている【ねずみ(支従)】(コンパニオン)と目が合ってしまいました。 -rand:6/6,6/6 -============================ -input: -BATH -output: -ShoujoTenrankai : 出来事表:浴室([1,1]) > 【奇・1】盛大に滑って転んでしまいました。(ハートフル+1) -rand:1/6,1/6 -============================ -input: -BATH -output: -ShoujoTenrankai : 出来事表:浴室([6,6]) > 【偶・6】なにかが這い回ったような跡がありました。(ルナティック+1) -rand:6/6,6/6 -============================ -input: -REST -output: -ShoujoTenrankai : 出来事表:化粧室([1,1]) > 【奇・1】鏡の中の自分が別の顔をしていたような気がします。(カタストロフ+1) -rand:1/6,1/6 -============================ -input: -REST -output: -ShoujoTenrankai : 出来事表:化粧室([6,6]) > 【偶・6】換気窓の近くで空気がゆるく蠢いています。 -rand:6/6,6/6 -============================ -input: -CELLER -output: -ShoujoTenrankai : 出来事表:地下倉庫([1,1]) > 【奇・1】なにかべとべとしたものに触ってしまいました。 -rand:1/6,1/6 -============================ -input: -CELLER -output: -ShoujoTenrankai : 出来事表:地下倉庫([6,6]) > 【偶・6】梁の上から、視線を感じました。(ルナティック+1) -rand:6/6,6/6 -============================ -input: -LUMBER -output: -ShoujoTenrankai : 出来事表:物置([1,1]) > 【奇・1】壁の隙間の向こうを何かの影が通り過ぎました。 -rand:1/6,1/6 -============================ -input: -LUMBER -output: -ShoujoTenrankai : 出来事表:物置([6,6]) > 【偶・6】なんの前触れもなく、物置全体が小さくきしみました。(カタストロフ+1) -rand:6/6,6/6 -============================ -input: -GARDEN -output: -ShoujoTenrankai : 出来事表:庭園([1,1]) > 【奇・1】【季節の花(純支)】(グッズ)が美しく咲き乱れています。(ハートフル+1) -rand:1/6,1/6 -============================ -input: -GARDEN -output: -ShoujoTenrankai : 出来事表:庭園([6,6]) > 【偶・6】【花の名前を書いた札(打純)】(グッズ)が打ち棄てられています。 -rand:6/6,6/6 -============================ -input: -WASTED -output: -ShoujoTenrankai : 出来事表:廃園([1,1]) > 【奇・1】伸び放題の草が風にざわざわとざわめいています。 -rand:1/6,1/6 -============================ -input: -WASTED -output: -ShoujoTenrankai : 出来事表:廃園([6,6]) > 【偶・6】虫が素早く、石の下に這いこんでいきました。(ルナティック+1) -rand:6/6,6/6 -============================ -input: -RUIN -output: -ShoujoTenrankai : 出来事表:廃屋([1,1]) > 【奇・1】天井や床が派手に崩壊していて、踏み込めない一角があります。 -rand:1/6,1/6 -============================ -input: -RUIN -output: -ShoujoTenrankai : 出来事表:廃屋([6,6]) > 【偶・6】虫がせっせとなにかを運んでいます。(ハートフル+1) -rand:6/6,6/6 -============================ -input: -SHORE -output: -ShoujoTenrankai : 出来事表:水のほとり([1,1]) > 【奇・1】水面に波紋が広がっていきます。 -rand:1/6,1/6 -============================ -input: -SHORE -output: -ShoujoTenrankai : 出来事表:水のほとり([6,6]) > 【偶・6】水の中で、魚の影が翻りました。 -rand:6/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/Skynauts.txt b/src/src_bcdice/test/data/Skynauts.txt deleted file mode 100644 index d9c5b7bf4..000000000 --- a/src/src_bcdice/test/data/Skynauts.txt +++ /dev/null @@ -1,302 +0,0 @@ -input: -2d6 Skynauts -output: -Skynauts : (2D6) > 2[1,1] > 2 -rand:1/6,1/6 -============================ -input: -2d6 Skynauts -output: -Skynauts : (2D6) > 10[5,5] > 10 -rand:5/6,5/6 -============================ -input: -2d6 Skynauts -output: -Skynauts : (2D6) > 12[6,6] > 12 -rand:6/6,6/6 -============================ -input: -2d6<=7 判定:成功 Skynauts -output: -Skynauts : (2D6<=7) > 6[2,4] > 6 > 成功 -rand:2/6,4/6 -============================ -input: -2D6<=(6+2-1) 判定:成功 Skynauts -output: -Skynauts : (2D6<=7) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2d6<=7 判定:失敗 Skynauts -output: -Skynauts : (2D6<=7) > 8[3,5] > 8 > 失敗 -rand:3/6,5/6 -============================ -input: -2d6<=7 判定:ファンブル Skynauts -output: -Skynauts : (2D6<=7) > 2[1,1] > 2 > ファンブル -rand:1/6,1/6 -============================ -input: -2d6<=2 判定:ファンブル2 Skynauts -output: -Skynauts : (2D6<=2) > 2[1,1] > 2 > ファンブル -rand:1/6,1/6 -============================ -input: -SN 判定:成功 Skynauts -output: -Skynauts : (2D6<=7) > 6[2,4] > 6 > 成功 -rand:2/6,4/6 -============================ -input: -SN7 判定:成功 Skynauts -output: -Skynauts : (2D6<=7) > 6[2,4] > 6 > 成功 -rand:2/6,4/6 -============================ -input: -SN(6+2-1) 判定:成功 Skynauts -output: -Skynauts : (2D6<=7) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -SN 判定:失敗 Skynauts -output: -Skynauts : (2D6<=7) > 8[3,5] > 8 > 失敗 -rand:3/6,5/6 -============================ -input: -SN5 判定:失敗 Skynauts -output: -Skynauts : (2D6<=5) > 8[3,5] > 8 > 失敗 -rand:3/6,5/6 -============================ -input: -SN 判定:ファンブル Skynauts -output: -Skynauts : (2D6<=7) > 2[1,1] > 2 > ファンブル -rand:1/6,1/6 -============================ -input: -SN2 判定:ファンブル2 Skynauts -output: -Skynauts : (2D6<=2) > 2[1,1] > 2 > ファンブル -rand:1/6,1/6 -============================ -input: -SN(3+2) 判定:足し Skynauts -output: -Skynauts : (2D6<=5) > 5[3,2] > 5 > 成功 -rand:3/6,2/6 -============================ -input: -NV 航行チェック Skynauts -output: -Skynauts : 航行チェック(最低1) (1D6/2+0) > 1 /2+0 > 1+0 > 1エリア進む -rand:1/6 -============================ -input: -NV 航行チェック Skynauts -output: -Skynauts : 航行チェック(最低1) (1D6/2+0) > 4 /2+0 > 2+0 > 2エリア進む -rand:4/6 -============================ -input: -NV+1 航行チェック Skynauts -output: -Skynauts : 航行チェック(最低1) (1D6/2+1) > 1 /2+1 > 1+1 > 2エリア進む -rand:1/6 -============================ -input: -NV+1 航行チェック Skynauts -output: -Skynauts : 航行チェック(最低1) (1D6/2+1) > 5 /2+1 > 2+1 > 3エリア進む -rand:5/6 -============================ -input: -D19/2 ダメージチェック Skynauts -output: -Skynauts : D19/2 > [縦3,横7][縦4,横6][縦2,横8],[縦1,横6][縦2,横5]([縦0,横7]) -rand:3/6,3/6,4/6,1/6,2/6,4/6 -============================ -input: -D/4 ダメージチェック Skynauts -output: -Skynauts : D/4 > [縦1,横2],[縦2,横4],[縦3,横6],[縦4,横8] -rand:1/6,1/6,1/6,2/6,2/6,2/6,3/6,3/6,3/6,4/6,4/6,4/6 -============================ -input: -D[火災]/2 ダメージチェック火災 Skynauts -output: -Skynauts : D[火災]/2 > [縦1,横2],[縦2,横4] -rand:1/6,1/6,1/6,2/6,2/6,2/6 -============================ -input: -D[大揺れ]/2 ダメージチェック大揺れ Skynauts -output: -Skynauts : D[大揺れ]/2 > [縦1,横2],[縦2,横4] -rand:1/6,1/6,1/6,2/6,2/6,2/6 -============================ -input: -D[大揺れ][火災]/2 ダメージチェック大揺れ・火災 Skynauts -output: -Skynauts : D[大揺れ][火災]/2 > [縦1,横2],[縦2,横4] -rand:1/6,1/6,1/6,2/6,2/6,2/6 -============================ -input: -D[火災][大揺れ]/2 ダメージチェック火災・大揺れ Skynauts -output: -Skynauts : D[火災][大揺れ]/2 > [縦1,横2],[縦2,横4] -rand:1/6,1/6,1/6,2/6,2/6,2/6 -============================ -input: -D28[火災]/1 ダメージチェック火災 Skynauts -output: -Skynauts : D28[火災]/1 > [縦1,横2][縦2,横2]([縦0,横2]) -rand:1/6,1/6,1/6 -============================ -input: -D28[大揺れ]/1 ダメージチェック大揺れ Skynauts -output: -Skynauts : D28[大揺れ]/1 > [縦1,横2][縦2,横2]([縦0,横2]) -rand:1/6,1/6,1/6 -============================ -input: -D28[大揺れ]/1@8 ダメージチェック大揺れ Skynauts -output: -Skynauts : D28[大揺れ]/1@8 > [縦1,横2][縦2,横2]([縦0,横2]) > 《弾道学》:上 - > ([縦0,横2])[縦1,横2]([縦-1,横2]) -rand:1/6,1/6,1/6 -============================ -input: -D/2@4 ダメージチェック Skynauts -output: -Skynauts : D/2@4 > [縦1,横2],[縦2,横4] > 《弾道学》:左 - > ([縦1,横1]),[縦2,横3] -rand:1/6,1/6,1/6,2/6,2/6,2/6 -============================ -input: -D4/2@6 ダメージチェック Skynauts -output: -Skynauts : D4/2@6 > [縦1,横2]([縦1,横1]),[縦2,横4][縦2,横3] > 《弾道学》:右 - > [縦1,横3][縦1,横2],[縦2,横5][縦2,横4] -rand:1/6,1/6,1/6,2/6,2/6,2/6 -============================ -input: -D/4@8 ダメージチェック Skynauts -output: -Skynauts : D/4@8 > [縦1,横2],[縦2,横4],[縦3,横6],[縦4,横8] > 《弾道学》:上 - > ([縦0,横2]),[縦1,横4],[縦2,横6],[縦3,横8] -rand:1/6,1/6,1/6,2/6,2/6,2/6,3/6,3/6,3/6,4/6,4/6,4/6 -============================ -input: -D19/2@2 ダメージチェック Skynauts -output: -Skynauts : D19/2@2 > [縦3,横7][縦4,横6][縦2,横8],[縦1,横6][縦2,横5]([縦0,横7]) > 《弾道学》:下 - > [縦4,横7][縦5,横6][縦3,横8],[縦2,横6][縦3,横5][縦1,横7] -rand:3/6,3/6,4/6,1/6,2/6,4/6 -============================ -input: -D12346789/2 ダメージチェック Skynauts -output: -Skynauts : D12346789/2 > [縦3,横7][縦4,横6][縦4,横7][縦4,横8][縦3,横6][縦3,横8][縦2,横6][縦2,横7][縦2,横8],[縦1,横6][縦2,横5][縦2,横6][縦2,横7][縦1,横5][縦1,横7]([縦0,横5])([縦0,横6])([縦0,横7]) -rand:3/6,3/6,4/6,1/6,3/6,3/6 -============================ -input: -BOM9/D19/2 砲撃+ダメージチェック Skynauts -output: -Skynauts : BOM9/D19/2 > (2D6<=9) > 6[3,3] > 6 > 成功 - > D19/2 > [縦3,横7][縦4,横6][縦2,横8],[縦1,横6][縦2,横5]([縦0,横7]) -rand:3/6,3/6,3/6,3/6,4/6,1/6,2/6,4/6 -============================ -input: -BOM/D[大揺れ]/1 砲撃+ダメージチェック大揺れ Skynauts -output: -Skynauts : BOM/D[大揺れ]/1 > (2D6<=7) > 6[1,5] > 6 > 成功 - > D[大揺れ]/1 > [縦3,横5] -rand:1/6,5/6,3/6,2/6,3/6 -============================ -input: -BOM/D/4 砲撃+ダメージチェック Skynauts -output: -Skynauts : BOM/D/4 > (2D6<=7) > 12[6,6] > 12 > 失敗 -rand:6/6,6/6 -============================ -input: -BOM10/D/4 砲撃+ダメージチェック Skynauts -output: -Skynauts : BOM10/D/4 > (2D6<=10) > 2[1,1] > 2 > ファンブル -rand:1/6,1/6 -============================ -input: -BOM/D/2@4 砲撃+ダメージチェック Skynauts -output: -Skynauts : BOM/D/2@4 > (2D6<=7) > 6[3,3] > 6 > 成功 - > D/2@4 > [縦1,横2],[縦2,横4] > 《弾道学》:左 - > ([縦1,横1]),[縦2,横3] -rand:3/6,3/6,1/6,1/6,1/6,2/6,2/6,2/6 -============================ -input: -BOM10/D4/2@6 砲撃+ダメージチェック Skynauts -output: -Skynauts : BOM10/D4/2@6 > (2D6<=10) > 6[3,3] > 6 > 成功 - > D4/2@6 > [縦1,横2]([縦1,横1]),[縦2,横4][縦2,横3] > 《弾道学》:右 - > [縦1,横3][縦1,横2],[縦2,横5][縦2,横4] -rand:3/6,3/6,1/6,1/6,1/6,2/6,2/6,2/6 -============================ -input: -AVO@8[縦1,横4],[縦2,横6],[縦3,横8] 回避運動 Skynauts -output: -Skynauts : AVO@8 > 《回避運動》(2D6<=7) > 3[1,2] > 3 > 成功 - > [縦1,横4],[縦2,横6],[縦3,横8] > 《回避運動》:上 - > ([縦0,横4]),[縦1,横6],[縦2,横8] -rand:1/6,2/6 -============================ -input: -AVO9@6[縦1,横4],([縦2,横1]),[縦3,横8],([縦0,横7]) 回避運動 Skynauts -output: -Skynauts : AVO9@6 > 《回避運動》(2D6<=9) > 3[1,2] > 3 > 成功 - > [縦1,横4],([縦2,横1]),[縦3,横8],([縦0,横7]) > 《回避運動》:右 - > [縦1,横5],[縦2,横2],[縦3,横9],([縦0,横8]) -rand:1/6,2/6 -============================ -input: -AVO9@2[縦3,横7][縦4,横6][縦2,横8],[縦1,横6][縦2,横5]([縦0,横7]) 回避運動 Skynauts -output: -Skynauts : AVO9@2 > 《回避運動》(2D6<=9) > 6[3,3] > 6 > 成功 - > [縦3,横7][縦4,横6][縦2,横8],[縦1,横6][縦2,横5]([縦0,横7]) > 《回避運動》:下 - > [縦4,横7][縦5,横6][縦3,横8],[縦2,横6][縦3,横5][縦1,横7] -rand:3/6,3/6 -============================ -input: -AVO9@4[縦3,横7][縦4,横6][縦4,横7][縦4,横8][縦3,横6][縦3,横8][縦2,横6][縦2,横7][縦2,横8],[縦1,横6][縦2,横5][縦2,横6][縦2,横7][縦1,横5][縦1,横7]([縦0,横5])([縦0,横6])([縦0,横7]) 回避運動 Skynauts -output: -Skynauts : AVO9@4 > 《回避運動》(2D6<=9) > 6[3,3] > 6 > 成功 - > [縦3,横7][縦4,横6][縦4,横7][縦4,横8][縦3,横6][縦3,横8][縦2,横6][縦2,横7][縦2,横8],[縦1,横6][縦2,横5][縦2,横6][縦2,横7][縦1,横5][縦1,横7]([縦0,横5])([縦0,横6])([縦0,横7]) > 《回避運動》:左 - > [縦3,横6][縦4,横5][縦4,横6][縦4,横7][縦3,横5][縦3,横7][縦2,横5][縦2,横6][縦2,横7],[縦1,横5][縦2,横4][縦2,横5][縦2,横6][縦1,横4][縦1,横6]([縦0,横4])([縦0,横5])([縦0,横6]) -rand:3/6,3/6 -============================ -input: -AVO(4+2)@6[縦4,横7],[縦2,横4],[縦6,横8],[縦6,横12],[縦3,横11] 回避運動 Skynauts -output: -Skynauts : AVO6@6 > 《回避運動》(2D6<=6) > 3[1,2] > 3 > 成功 - > [縦4,横7],[縦2,横4],[縦6,横8],[縦6,横12],[縦3,横11] > 《回避運動》:右 - > [縦4,横8],[縦2,横5],[縦6,横9],([縦6,横13]),[縦3,横12] -rand:1/6,2/6 -============================ -input: -AVO@8[縦1,横4],[縦2,横6],[縦3,横8] 回避運動 Skynauts -output: -Skynauts : AVO@8 > 《回避運動》(2D6<=7) > 12[6,6] > 12 > 失敗 -rand:6/6,6/6 -============================ -input: -AVO@8[縦1,横4],[縦2,横6],[縦3,横8] 回避運動 Skynauts -output: -Skynauts : AVO@8 > 《回避運動》(2D6<=7) > 2[1,1] > 2 > ファンブル -rand:1/6,1/6 diff --git a/src/src_bcdice/test/data/SteamPunkers.txt b/src/src_bcdice/test/data/SteamPunkers.txt deleted file mode 100644 index b898848e4..000000000 --- a/src/src_bcdice/test/data/SteamPunkers.txt +++ /dev/null @@ -1,408 +0,0 @@ -input: -SP4 -output: - SteamPunkers : (SP4) > [1,1,1,1] > 成功数:0, 失敗数:4 > ファンブル -rand:1/6,1/6,1/6,1/6 -============================ -input: -SP4>=0 -output: - SteamPunkers : (SP4>=0) > [1,1,1,1] > 成功数:0, 失敗数:4 > ファンブル -rand:1/6,1/6,1/6,1/6 -============================ -input: -sp13 -output: - SteamPunkers : (SP13) > [1,2,3,4,5,6,5,4,3,2,1,2,3] > 成功数:4, 失敗数:10 -rand:1/6,2/6,3/6,4/6,5/6,6/6,5/6,4/6,3/6,2/6,1/6,2/6,3/6 -============================ -input: -sp5>=2 -output: - SteamPunkers : (SP5>=2) > [6,6,6,6,6] > 成功数:10, 失敗数:0 > 成功 -rand:6/6,6/6,6/6,6/6,6/6 -============================ -input: -sp4>=3 -output: - SteamPunkers : (SP4>=3) > [3,4,1,6] > 成功数:2, 失敗数:3 > 失敗 -rand:3/6,4/6,1/6,6/6 -============================ -input: -SSP4>=3 -output: - SteamPunkers : (SP4>=3) > [3,4,1,6] > 成功数:2, 失敗数:3 > 失敗###secret dice### -rand:3/6,4/6,1/6,6/6 -============================ -input: -sp3>=3 MurMurChantPrayInvoke!! -output: - SteamPunkers : (SP3>=3) > [1,5,4] > 成功数:1, 失敗数:2 > 失敗 -rand:1/6,5/6,4/6 -============================ -input: -sp8 ささやきえいしょういのいねんじよ! -output: - SteamPunkers : (SP8) > [2,4,3,1,6,6,3,5] > 成功数:5, 失敗数:5 -rand:2/6,4/6,3/6,1/6,6/6,6/6,3/6,5/6 -============================ -input: -PAT -output: - SteamPunkers : 年齢表(11) > 【14~15歳】 まだまだ、子ども扱い。また、過去の内容は父か母のことを指している。 -rand:1/6,1/6 -============================ -input: -PAT -output: - SteamPunkers : 年齢表(66) > 【28~30歳】 蒸気大戦末期をよく知っている。また、過去の内容はあなた自身のことだ。 -rand:6/6,6/6 -============================ -input: -PST -output: - SteamPunkers : 性別表(11) > 【男性】 背が高く、がっしりしている。 -rand:1/6,1/6 -============================ -input: -PST -output: - SteamPunkers : 性別表(66) > 【女性】 スリムな体形をしている。 -rand:6/6,6/6 -============================ -input: -PCT -output: - SteamPunkers : 国籍表(11) > 【日本皇国】 あなたは日本人である。 -rand:1/6,1/6 -============================ -input: -PCT -output: - SteamPunkers : 国籍表(66) > 【ソビエト連邦】 あなたはソビエト人である。 -rand:6/6,6/6 -============================ -input: -NIT -output: - SteamPunkers : 名前表・イギリス(男性名/女性名/名字)(11) > アーロン/アビゲイル/アダム -rand:1/6,1/6 -============================ -input: -NIT -output: - SteamPunkers : 名前表・イギリス(男性名/女性名/名字)(66) > ウィリアム/ローレンシア/ハックワース -rand:6/6,6/6 -============================ -input: -NAT -output: - SteamPunkers : 名前表・アメリカ(男性名/女性名/名字)(11) > ジェラルド/デイジー/キャンベル -rand:1/6,1/6 -============================ -input: -NAT -output: - SteamPunkers : 名前表・アメリカ(男性名/女性名/名字)(66) > ランバート/イヴ/デビットソン -rand:6/6,6/6 -============================ -input: -NFT -output: - SteamPunkers : 名前表・フランス(男性名/女性名/名字)(11) > ベルナール/ベアトリス/バシュラール -rand:1/6,1/6 -============================ -input: -NFT -output: - SteamPunkers : 名前表・フランス(男性名/女性名/名字)(66) > ルイ/リリアーヌ/ドラクランジュ -rand:6/6,6/6 -============================ -input: -NGT -output: - SteamPunkers : 名前表・ドイツ(男性名/女性名/名字)(11) > アルベルト/アデーレ/アッカーマン -rand:1/6,1/6 -============================ -input: -NGT -output: - SteamPunkers : 名前表・ドイツ(男性名/女性名/名字)(66) > ブルクハルト/クロジンデ/ビンデバルト -rand:6/6,6/6 -============================ -input: -NST -output: - SteamPunkers : 名前表・ソビエト(男性名/女性名/名字)(11) > イリイチ/バルバラ/バビチェフ -rand:1/6,1/6 -============================ -input: -NST -output: - SteamPunkers : 名前表・ソビエト(男性名/女性名/名字)(66) > アレクセイ/マルタ/ダンチェンコ -rand:6/6,6/6 -============================ -input: -NJT -output: - SteamPunkers : 名前表・日本(男性名/女性名/名字)(11) > タキジ/タキ/トウドウ -rand:1/6,1/6 -============================ -input: -NJT -output: - SteamPunkers : 名前表・日本(男性名/女性名/名字)(66) > ショウジ/アヤメ/シンドウ -rand:6/6,6/6 -============================ -input: -PTT -output: - SteamPunkers : 過去表『トゥルース』(11) > 【決着】 あなたは怨敵である蒸気事件の犯人を追っている。いつの日か、そいつとは決着をつけるつもりだ。 -rand:1/6,1/6 -============================ -input: -PTT -output: - SteamPunkers : 過去表『トゥルース』(66) > 【喪失】 とある蒸気事件の際、あなたの家族は何者かの手により惨殺された。犯人は今も見つかっていない。 -rand:6/6,6/6 -============================ -input: -PGT -output: - SteamPunkers : 過去表『ガーディアン』(11) > 【後悔】 ある蒸気事件を解決できなかった。結果、あなたは大切な人を失ってしまった。 -rand:1/6,1/6 -============================ -input: -PGT -output: - SteamPunkers : 過去表『ガーディアン』(66) > 【庇護】 現在、あなたには護るべき人、護るべき場所がある。それらの日常を護るべく、あなたは戦ったいる。 -rand:6/6,6/6 -============================ -input: -PNT -output: - SteamPunkers : 過去表『ノーブル』(11) > 【復讐】 あなたの家族は蒸気事件の犠牲となった。ゆえに、あなたは家族の仇を討つべく犯人を捜している。 -rand:1/6,1/6 -============================ -input: -PNT -output: - SteamPunkers : 過去表『ノーブル』(66) > 【慈愛】 あなたは、真の貴族であった両親から他者を慈しむことは当然だと教育された。 -rand:6/6,6/6 -============================ -input: -PDT -output: - SteamPunkers : 過去表『デヴォート』(11) > 【忠義】 あなたは、忠義の大切さを教えられて育ってきた。それゆえ、あなたは主に忠誠をささげるのだ。 -rand:1/6,1/6 -============================ -input: -PDT -output: - SteamPunkers : 過去表『デヴォート』(66) > 【犠牲】 あなたには尊敬に値する主がいた。だが、その主はあなたを庇って、邪悪な陰謀の犠牲となった。 -rand:6/6,6/6 -============================ -input: -PET -output: - SteamPunkers : 過去表『エセティック』(11) > 【研究】 あなたは蒸気犯罪で用いられるスチームギアを撲滅するために、常に研究を続けている。 -rand:1/6,1/6 -============================ -input: -PET -output: - SteamPunkers : 過去表『エセティック』(66) > 【報復】 あなたの恩師は過去に蒸気事件で犠牲となっている。あなたはいつか、その犯人に報復するつもりだ。 -rand:6/6,6/6 -============================ -input: -BGT -output: - SteamPunkers : 経緯表『ギガントアームズ』(11) > 【元近衛兵】 あなたは上層部の警護を任されていた元近衛兵で、スチームギアは大戦時に入手したものである。 -rand:1/6,1/6 -============================ -input: -BGT -output: - SteamPunkers : 経緯表『ギガントアームズ』(66) > 【戦場帰り】 あなたは蒸気大戦に従軍した経験を持つ戦場帰りで、大戦時にスチームギアを入手した。 -rand:6/6,6/6 -============================ -input: -BAT -output: - SteamPunkers : 経緯表『アーマードリム』(11) > 【試験操縦士】 あなたは軍や企業で試験操縦士を務めており、その折に、スチームギアを密かに入手した。 -rand:1/6,1/6 -============================ -input: -BAT -output: - SteamPunkers : 経緯表『アーマードリム』(66) > 【簒奪者】 あなたは蒸気事件に巻き込まれた際、偶然と幸運が重なり、相手のスチームギアを奪取できた。 -rand:6/6,6/6 -============================ -input: -BET -output: - SteamPunkers : 経緯表『エッジモービル』(11) > 【車泥棒】 あなたは元車泥棒だ。このスチームギアは出所不明のものをちょろまかしたものだ。 -rand:1/6,1/6 -============================ -input: -BET -output: - SteamPunkers : 経緯表『エッジモービル』(66) > 【逃亡兵】 あなたは、戦場から逃げ出した逃亡兵だ。スチームギアは戦場に赴く際に支給された試作機である。 -rand:6/6,6/6 -============================ -input: -BCT -output: - SteamPunkers : 経緯表『クロノウェポン』(11) > 【元武器商人】 あなたは蒸気大戦時にスチームギアを販売していた元武器商人、あるいはその護衛だ。 -rand:1/6,1/6 -============================ -input: -BCT -output: - SteamPunkers : 経緯表『クロノウェポン』(66) > 【元英雄】 あなたは蒸気大戦の英雄だ。あなたは戦線に赴く際、上層部から新世代スチームギアを支給されたのだ。 -rand:6/6,6/6 -============================ -input: -BST -output: - SteamPunkers : 経緯表『スパイテック』(11) > 【元刑事】 あなたは、蒸気事件ばかりを追っていた元刑事だ。スチームギアは犯罪者から奪い取ったものである。 -rand:1/6,1/6 -============================ -input: -BST -output: - SteamPunkers : 経緯表『スパイテック』(66) > 【元盗人】 あなたは盗品として流れてきたスチームギアを偶然発見して、入手した。 -rand:6/6,6/6 -============================ -input: -BWT -output: - SteamPunkers : 経緯表『スチームウェア』(11) > 【独自ルート】 あなたは人間の限界を超えるために、独自のルートを使って、自らの意志で肉体を機械化した。 -rand:1/6,1/6 -============================ -input: -BWT -output: - SteamPunkers : 経緯表『スチームウェア』(66) > 【元英雄】 あなたは蒸気大戦の英雄だ。あなたは戦線に赴く際、上層部から新世代スチームギアを支給されたのだ。 -rand:6/6,6/6 -============================ -input: -FST -output: - SteamPunkers : 特徴表S(11) > 【蒸気帽】 あなたは、なんらかの蒸気機械を仕込んだ帽子を愛用している。 -rand:1/6,1/6 -============================ -input: -FST -output: - SteamPunkers : 特徴表S(66) > 【偽造カード】 あなたは、偽造した戸籍情報を点刻したパンチカードを隠し持っている。 -rand:6/6,6/6 -============================ -input: -FPT -output: - SteamPunkers : 特徴表P(11) > 【傷】 顔、あるいは体のどこかに傷がある。 -rand:1/6,1/6 -============================ -input: -FPT -output: - SteamPunkers : 特徴表P(66) > 【瞳】 不思議な瞳の色、あるいは特徴的な眼差しをしている。 -rand:6/6,6/6 -============================ -input: -RST -output: - SteamPunkers : 関係性表S(11) > 【元敵同士】 相手とは、元敵同士の間柄だ。どのように敵対していたかは、プレイヤーと相談して決定せよ。 -rand:1/6,1/6 -============================ -input: -RST -output: - SteamPunkers : 関係性表S(66) > 【裏切り】 相手とは、裏切りあった間柄だ。どちらが裏切ったかについてはプレイヤーと相談して決定せよ。 -rand:6/6,6/6 -============================ -input: -RPT -output: - SteamPunkers : 関係性表P(11) > 【血縁】 相手とは、血縁がある。どの程度の間柄であるかについてはプレイヤーと相談して決定せよ。 -rand:1/6,1/6 -============================ -input: -RPT -output: - SteamPunkers : 関係性表P(66) > 【師弟】 相手は師、あるいは弟子だ。どちらが師で、どちらが弟子かはプレイヤーと相談して決定せよ。 -rand:6/6,6/6 -============================ -input: -EST -output: - SteamPunkers : 感情表S(11) > 【殺意】 相手に殺意を覚えている。どういった経緯で殺意を抱いているかについては自身で決定せよ。 -rand:1/6,1/6 -============================ -input: -EST -output: - SteamPunkers : 感情表S(66) > 【嫌悪】 相手のことを嫌悪している。どの程度の嫌悪であるかについては自身で決定せよ。 -rand:6/6,6/6 -============================ -input: -EPT -output: - SteamPunkers : 感情表P(11) > 【誠意】 相手に対して誠意を感じる。どういった経緯で誠意を感じたかについては自身で決定せよ。 -rand:1/6,1/6 -============================ -input: -EPT -output: - SteamPunkers : 感情表P(66) > 【愛情】 相手に愛情や友愛を抱いている。どういった経緯で愛情を抱くに至ったかについては自身で決定せよ。 -rand:6/6,6/6 -============================ -input: -ODT -output: - SteamPunkers : 災厄表(11) > 【蒸気の不調】 スチームギアが不調になった!おそらくマグナイトが尽きかけてるのだ。ペナルティーを受けたPCは、そのフェイズの終了まで、スチームの抑圧を解放できない。 -rand:1/6,1/6 -============================ -input: -ODT -output: - SteamPunkers : 災厄表(66) > 【絶望感】 突如として心の傷が痛み、信念が揺らいでしまう。ペナルティーを受けたPCは、そのフェイズの終了まで、パンクの抑圧を解放できない。 -rand:6/6,6/6 -============================ -input: -OST -output: - SteamPunkers : 場面表(11) > 【地下鉄】 途中まで、地下鉄を利用することにする。駅のホームは蒸気列車が放出する蒸気のせいで、湿り気と熱気を帯びていた。 -rand:1/6,1/6 -============================ -input: -OST -output: - SteamPunkers : 場面表(66) > 【移動パブ】 途中、移動パブを見かけた。蒸気自動車に機関式サーバーを搭載したもので、周りには若いロンドン子たちが口に泡をつけながら騒いでいる。 -rand:6/6,6/6 -============================ -input: -OIT -output: - SteamPunkers : 交流表(11) > 【過去】 そういえば、相手の過去を知らない気がする…聞けば教えてくれるだろうか? -rand:1/6,1/6 -============================ -input: -OIT -output: - SteamPunkers : 交流表(66) > 【経緯】 相手はどうやってスチームギアを得たのだろう?その経緯の一部でも聞いてみようか? -rand:6/6,6/6 -============================ -input: -OFT -output: - SteamPunkers : 激憤表(11) > 【憤怒】 これほど残虐な蒸気事件が起こったというのに、世界は一向に変わろうとしない。もはや世界への怒りは頂点へと達してしまった。PCはレヴォルトを失い、黒幕となる。 -rand:1/6,1/6 -============================ -input: -OFT -output: - SteamPunkers : 激憤表(66) > 【悪堕ち】 信念に従い、反逆を続けてきた。だが、蒸気事件が尽きる気配はない。反逆など無意味なのか。なら、この手で……PCはレヴォルトを失い、黒幕となる。 -rand:6/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/StellarKnights.txt b/src/src_bcdice/test/data/StellarKnights.txt deleted file mode 100644 index 74b3f9a6d..000000000 --- a/src/src_bcdice/test/data/StellarKnights.txt +++ /dev/null @@ -1,577 +0,0 @@ -input: -4SK -output: -StellarKnights : (4SK) > 1,3,4,5 -rand:5/6,1/6,3/6,4/6 -============================ -input: -5SK3 -output: -StellarKnights : (5SK3) > 2,3,5,6,6 > 成功数: 4 -rand:6/6,5/6,3/6,6/6,2/6 -============================ -input: -3SK,1>6 -output: -StellarKnights : (3SK,1>6) > 1,2,3 > [2,3,6] -rand:2/6,3/6,1/6 -============================ -input: -6SK4,1>6,2>6 -output: -StellarKnights : (6SK4,1>6,2>6) > 1,2,3,4,5,6 > [3,4,5,6,6,6] > 成功数: 5 -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -6SK4,1>6,6>1 -output: -StellarKnights : (6SK4,1>6,6>1) > 1,2,3,4,5,6 > [1,1,2,3,4,5] > 成功数: 2 -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -TT -output: -StellarKnights : お題表(16) > 鏡 -rand:1/6,6/6 -============================ -input: -TT -output: - StellarKnights : お題表(26) > 青空 -rand:2/6,6/6 -============================ -input: -TT -output: -StellarKnights : お題表(36) > 鎖 -rand:3/6,6/6 -============================ -input: -TT -output: -StellarKnights : お題表(46) > 宝石 -rand:4/6,6/6 -============================ -input: -TT -output: -StellarKnights : お題表(56) > 泥 -rand:5/6,6/6 -============================ -input: -TT -output: -StellarKnights : お題表(66) > 小さな傷 -rand:6/6,6/6 -============================ -input: -STA -output: -StellarKnights : シチュエーション表A:時間(1) > 朝、誰もいない -rand:1/6 -============================ -input: -STB -output: -StellarKnights : シチュエーション表B:場所(11) > 教室  小道具:窓、机、筆記用具、チョークと黒板、窓の外から聞こえる部活動の声 -rand:1/6,1/6 -============================ -input: -STB -output: -StellarKnights : シチュエーション表B:場所(16) > 渡り廊下 小道具:空に届きそうな高さ、遠くに別の学園が見える、隣を飛び過ぎて行く鳥 -rand:1/6,6/6 -============================ -input: -STB -output: -StellarKnights : シチュエーション表B:場所(21) > 教室  小道具:窓、机、筆記用具、チョークと黒板、窓の外から聞こえる部活動の声 -rand:2/6,1/6 -============================ -input: -STB -output: -StellarKnights : シチュエーション表B:場所(26) > 渡り廊下 小道具:空に届きそうな高さ、遠くに別の学園が見える、隣を飛び過ぎて行く鳥 -rand:2/6,6/6 -============================ -input: -STB -output: -StellarKnights : シチュエーション表B:場所(31) > 花の咲き誇る温室 小道具:むせ返るような花の香り、咲き誇る花々、ガラス越しの陽光 -rand:3/6,1/6 -============================ -input: -STB -output: -StellarKnights : シチュエーション表B:場所(46) > おしゃれなレストラン 小道具:おいしいごはん、おしゃれな雰囲気、ゆったりと流れる時間 -rand:4/6,6/6 -============================ -input: -STB -output: -StellarKnights : シチュエーション表B:場所(66) > 願いの決闘場 小道具:決闘の場、ステラナイトたちの花章が咲き誇る場所 -rand:6/6,6/6 -============================ -input: -STB2 -output: -StellarKnights : シチュエーション表Bその2:学園編 アーセルトレイ公立大学(6) > 使い古された教室 -シチュエーション表Bその2:学園編 イデアグロリア芸術総合大学(6) > 完璧な調和を感じる温室 -シチュエーション表Bその2:学園編 シトラ女学院(6) > 寮の廊下 -シチュエーション表Bその2:学園編 フィロソフィア大学(6) > 木漏れ日のあたたかな森 -シチュエーション表Bその2:学園編 聖アージェティア学園(6) > 花々の咲き乱れる温室 -シチュエーション表Bその2:学園編 スポーン・オブ・アーセルトレイ(6) > 外周環状道路へ繋がる橋 -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -STB21 -output: -StellarKnights : シチュエーション表Bその2:学園編 アーセルトレイ公立大学(1) > 地下のだだっぴろい学食 -rand:1/6 -============================ -input: -STB22 -output: -StellarKnights : シチュエーション表Bその2:学園編 イデアグロリア芸術総合大学(1) > (美術or音楽)準備室 -rand:1/6 -============================ -input: -STB23 -output: -StellarKnights : シチュエーション表Bその2:学園編 シトラ女学院(1) > 中庭の神殿めいた温室 -rand:1/6 -============================ -input: -STB24 -output: -StellarKnights : シチュエーション表Bその2:学園編 フィロソフィア大学(1) > 遠く聞こえる爆発音 -rand:1/6 -============================ -input: -STB25 -output: -StellarKnights : シチュエーション表Bその2:学園編 聖アージェティア学園(1) > おしゃれなカフェテラス -rand:1/6 -============================ -input: -STB26 -output: -StellarKnights : シチュエーション表Bその2:学園編 スポーン・オブ・アーセルトレイ(1) > 人気のない教室 -rand:1/6 -============================ -input: -STC -output: -StellarKnights : シチュエーション表C:話題(11) > 未来の話:決闘を勝ち抜いたら、あるいは負けてしまったら……未来のふたりはどうなるのだろう。 -rand:1/6,1/6 -============================ -input: -STC -output: -StellarKnights : シチュエーション表C:話題(16) > 次の週末の話:週末、何をしますか? 願いをかけた決闘の合間、日常のひとときも、きっと大切な時間に違いない。 -rand:1/6,6/6 -============================ -input: -STC -output: -StellarKnights : シチュエーション表C:話題(31) > 未来の話:決闘を勝ち抜いたら、あるいは負けてしまったら……未来のふたりはどうなるのだろう。 -rand:3/6,1/6 -============================ -input: -STC -output: -StellarKnights : シチュエーション表C:話題(36) > 次の週末の話:週末、何をしますか? 願いをかけた決闘の合間、日常のひとときも、きっと大切な時間に違いない。 -rand:3/6,6/6 -============================ -input: -STC -output: -StellarKnights : シチュエーション表C:話題(41) > 好きな人の話:……好きな人、いるんですか? これはきっと真剣な話。他の何よりも重要な話だ。 -rand:4/6,1/6 -============================ -input: -STC -output: -StellarKnights : シチュエーション表C:話題(46) > ねぇ、あの子誰?:この前見かけたパートナーと一緒にいた子。あの子誰?だーれー!? むー!! -rand:4/6,6/6 -============================ -input: -STC -output: -StellarKnights : シチュエーション表C:話題(61) > 好きな人の話:……好きな人、いるんですか? これはきっと真剣な話。他の何よりも重要な話だ。 -rand:6/6,1/6 -============================ -input: -STC -output: -StellarKnights : シチュエーション表C:話題(66) > ねぇ、あの子誰?:この前見かけたパートナーと一緒にいた子。あの子誰?だーれー!? むー!! -rand:6/6,6/6 -============================ -input: -ALLS -output: -StellarKnights : シチュエーション表A:時間(6) > 夜明け前の -シチュエーション表B:場所(66) > 願いの決闘場 小道具:決闘の場、ステラナイトたちの花章が咲き誇る場所 -シチュエーション表C:話題(66) > ねぇ、あの子誰?:この前見かけたパートナーと一緒にいた子。あの子誰?だーれー!? むー!! -rand:6/6,6/6,6/6,6/6,6/6 -============================ -input: -GAT -output: -StellarKnights : 所属組織決定(1) > アーセルトレイ公立大学 -rand:1/6 -============================ -input: -GAT -output: -StellarKnights : 所属組織決定(4) > フィロソフィア大学 -rand:4/6 -============================ -input: -GAT -output: -StellarKnights : 所属組織決定(6) > スポーン・オブ・アーセルトレイ -rand:6/6 -============================ -input: -HOT -output: -StellarKnights : 希望表(11) > より良き世界:世界はもっとステキになる。きっと、ずっと、もっと。 -rand:1/6,1/6 -============================ -input: -HOT -output: -StellarKnights : 希望表(51) > 自分を犠牲にしてでも:世界はもっときらきらしているんだよ。それを伝える為に、あなたは自分すら犠牲にする。 -rand:5/6,1/6 -============================ -input: -HOT -output: -StellarKnights : 希望表(66) > 大好きな人のために!:世界は希望に満ちている。あなたをもっと幸せにしたいの! -rand:6/6,6/6 -============================ -input: -DET -output: -StellarKnights : 絶望表(11) > 理不尽なる世界:あなたは世界が如何に理不尽であるか思い知った。 -rand:1/6,1/6 -============================ -input: -DET -output: -StellarKnights : 絶望表(35) > 過去は絶望に満ちている:ずっとずっと、悪いことばかり、辛いことばかりだった。 -rand:3/6,5/6 -============================ -input: -DET -output: -StellarKnights : 絶望表(66) > 偽物だった:あなたは幸せだった。そう思っていた。でもそれは全て作り物で、あなたは騙されていたのだ。 -rand:6/6,6/6 -============================ -input: -YST -output: -StellarKnights : あなたの物語表(11) > 熟練ステラナイト:あなたは既に何度もステラバトルを征してきた熟練者で ある。【勲章:3~7の間の好きな値】【歪みの共鳴:1】 -rand:1/6,1/6 -============================ -input: -YST -output: -StellarKnights : あなたの物語表(34) > パートナー大好き!!!!!!:私はー!! パートナーがー!! 大好きだー!!! -rand:3/6,4/6 -============================ -input: -YST -output: -StellarKnights : あなたの物語表(66) > 誓約生徒会(カヴェナンター):あなたは一度、エクリプスと化し、討伐された者だ。しかし願いを諦めることは出来ない。だから、あなたはこの仮面を受け取り、戦い続けているのだ。【勲章:0~5の間の好きな値】【歪みの共鳴:0~2の間の好きな値】 -rand:6/6,6/6 -============================ -input: -YSTA -output: -StellarKnights : あなたの物語表:異世界(11) > 終わりなき戦場:あなたは果ての見えない戦場の世界からここへ流れ着いた。 -rand:1/6,1/6 -============================ -input: -YSTA -output: -StellarKnights : あなたの物語表:異世界(46) > 怪獣迎撃の世界:巨大な怪獣が存在し、それを迎え撃つ戦いを繰り返していた世界から、あなたはここへ流れ着いた。そして今も、アーセルトレイは異世界からの侵略者、ロアテラに狙われていると、あなたは理解している。 -rand:4/6,6/6 -============================ -input: -YSTA -output: -StellarKnights : あなたの物語表:異世界(66) > 草花の世界:植物と人が融合した世界から、あなたはここへ流れ着いた。あなたの身体は植物そのものかもしれないし、あるいは眼窩から花が咲いているかもしれない。 -rand:6/6,6/6 -============================ -input: -WIT -output: -StellarKnights : 願い事表(11) > 未知の開拓者:誰も知らない世界、誰も知らない宇宙、誰も知らない星に旅立つんだ!【願いの階梯:4】 -rand:1/6,1/6 -============================ -input: -WIT -output: -StellarKnights : 願い事表(44) > 取り戻す:あなたたちは何かを奪われた。それを取り戻すのが、唯一の願いだ。【願いの階梯:4(努力次第でいつか手に届く範囲)】【願いの階梯:6(通常は取り戻せないもの)】 -rand:4/6,4/6 -============================ -input: -WIT -output: -StellarKnights : 願い事表(66) > 契約者:あなたの願いは既に叶えられた。今も戦い続けている理由は、女神との契約があるからだ。【願いの階梯:なし】 -rand:6/6,6/6 -============================ -input: -PET -output: -StellarKnights : 性格表(11,11) > 可憐にして可憐 -rand:1/6,1/6,1/6,1/6 -============================ -input: -PET -output: -StellarKnights : 性格表(36,32) > 謙虚にして頑固 -rand:3/6,6/6,3/6,2/6 -============================ -input: -PET -output: -StellarKnights : 性格表(66,66) > サディストにしてサディスト -rand:6/6,6/6,6/6,6/6 -============================ -input: -YSTM -output: -StellarKnights : あなたの物語表:マルジナリア世界(11) > パブ/カフェー店員:あなたは霧の帝都に無数に存在するパブ、あるいは桜の帝都で増え始めたカフェーの店員です。 -rand:1/6,1/6 -============================ -input: -YSTM -output: -StellarKnights : あなたの物語表:マルジナリア世界(41) > 帝都警察:あなたは帝都警察に所属し、都市の平和を守っています。帝都警察は市民の憧れの職業であり、皆誇りをもって職務に励んでいます。 -rand:4/6,1/6 -============================ -input: -YSTM -output: -StellarKnights : あなたの物語表:マルジナリア世界(66) > バックアップ:あなたはかつて桜の皇帝、霧の女王のバックアップとして作成された人造生命体です。うりふたつの容姿をしていますが、その記憶は厳重に封印されており、あなたを含め、誰もその真実を知る者はいません。 -rand:6/6,6/6 -============================ -input: -STM -output: -StellarKnights : シチュエーション表:マルジナリア世界(11) > 表のお仕事:生きていくにはお金がかかる。霧の女王様や総帥に頼ってばかりじゃいられない! さぁ今日も元気に出勤だ! パートナーと一緒に、どんなお仕事をしているか描写してみよう! -rand:1/6,1/6 -============================ -input: -STM -output: -StellarKnights : シチュエーション表:マルジナリア世界(33) > 路面電車:道路を電車が走るなんて不思議な気分。最新鋭の路面電車をご堪能あれ。さて、今日はどこへ行こうかな? -rand:3/6,3/6 -============================ -input: -STM -output: -StellarKnights : シチュエーション表:マルジナリア世界(66) > 霧の女王からの呼び出し:霧の女王陛下に呼び出され、宮殿へ向かう道中の会話。いったい何の用事なんだろう? 確か先週は、アーセルトレイの話をいっぱいしながら、美味しいお茶をごちそうになったなぁ。 -rand:6/6,6/6 -============================ -input: -YSTL -output: -StellarKnights : あなたの物語表:手紙世界(11) > 旅に出ていた:あなたが旅先にいる時に、世界の滅びはおとずれた。旅にでなければ、あの人と離れ離れにはならなかったのに。 -rand:1/6,1/6 -============================ -input: -YSTL -output: -StellarKnights : あなたの物語表:手紙世界(32) > 生き別れの――:パートナーとは生き別れの兄弟姉妹、親子のような、親密な関係だった。 -rand:3/6,2/6 -============================ -input: -YSTL -output: -StellarKnights : あなたの物語表:手紙世界(66) > 共犯者:ふたりはかつて、何らかの共犯者だった。内容は、自分自身が知っているだろう? -rand:6/6,6/6 -============================ -input: -YSTR -output: -StellarKnights : あなたの物語表:リコレクト・ドール(11) > 大好き:本当は、世界のことなんてどうでもいい。パートナーの方が大切。ずっとずっと大切なんだから。 -rand:1/6,1/6 -============================ -input: -YSTR -output: -StellarKnights : あなたの物語表:リコレクト・ドール(36) > 探検隊:あなたは荒廃したこの世界をどこまでも探検したいと思っている。 -rand:3/6,6/6 -============================ -input: -YSTR -output: -StellarKnights : あなたの物語表:リコレクト・ドール(66) > 漠然とした不安:旅も、戦いも、その先に待つのが終わりの日々なら……。みんなはどうして、不安に思わないの……? -rand:6/6,6/6 -============================ -input: -STBR -output: -StellarKnights : シチュエーション表B:場所(リコレクト・ドール)(11) > 教室:かつて学校の教室だった場所。椅子と机が散乱している。 -rand:1/6,1/6 -============================ -input: -STBR -output: -StellarKnights : シチュエーション表B:場所(リコレクト・ドール)(32) > 劇場:かつて大きな劇場だった場所。天井が崩落し、ステージは瓦礫に埋もれている。 -rand:3/6,2/6 -============================ -input: -STBR -output: -StellarKnights : シチュエーション表B:場所(リコレクト・ドール)(66) > 公園:石化した木々と、朽ちたベンチが点在する公園跡。かつては人々のいこいの場所だった。 -rand:6/6,6/6 -============================ -input: -STCR -output: -StellarKnights : シチュエーション表C:リコレクト(11) > 仲良し:友達なのか、家族なのか。楽しそうによりそう2人の姿。 -rand:1/6,1/6 -============================ -input: -STCR -output: -StellarKnights : シチュエーション表C:リコレクト(36) > おしゃべり:楽しそうにおしゃべりする人々の姿。楽しそう、うぅん、幸せそう、なのかな? -rand:3/6,6/6 -============================ -input: -STCR -output: -StellarKnights : シチュエーション表C:リコレクト(66) > 怪物:身の丈の倍ほどもある竜のような怪物と、逃げ惑う人々の姿。 -rand:6/6,6/6 -============================ -input: -STBS -output: -StellarKnights : シチュエーション表B:シトラセッティング(11) > 長い廊下:お喋りをしながら歩いていると、いつまで経っても目的地につかないながーい廊下。時々遭難者がでるの。 -rand:1/6,1/6 -============================ -input: -STBS -output: -StellarKnights : シチュエーション表B:シトラセッティング(44) > 中庭のさくら:第1階層、シトラ女学院の中庭には、とても美しいさくらが咲いています。これは地球時代からあるものなのだとか……。 -rand:4/6,4/6 -============================ -input: -STBS -output: -StellarKnights : シチュエーション表B:シトラセッティング(66) > 星詠の間:輝紡の塔、最上階の小さな一室。地球があった頃の星空を再現する、星空投影機が設置されています。 -rand:6/6,6/6 -============================ -input: -STE -output: -StellarKnights : シチュエーション表:エクリプス専用(11) > 道行く人々、その全ての視線が、まるで俺達を値踏みしているようだ……。 -rand:1/6,1/6 -============================ -input: -STE -output: -StellarKnights : シチュエーション表:エクリプス専用(42) > ふたりの女神め、お前たちが黒幕だったのか。ステラバトルを終えたら、次はお前たちを殺してやる。 -rand:4/6,2/6 -============================ -input: -STE -output: -StellarKnights : シチュエーション表:エクリプス専用(66) > 世界の全てがモノクロに見える。なんだこれは、ロアテラの力によるものなのか? 早く、早く世界を救わねば……。 -rand:6/6,6/6 -============================ -input: -FT -output: -StellarKnights : フラグメント表(11,11,11,11,11) > 出会い,出会い,出会い,出会い,出会い -rand:1/6,1/6,1/6,1/6,1/6,1/6,1/6,1/6,1/6,1/6 -============================ -input: -FT -output: -StellarKnights : フラグメント表(13,63,24,26,44) > 動物園,聴力,好き,憎悪,毛布 -rand:1/6,3/6,6/6,3/6,2/6,4/6,2/6,6/6,4/6,4/6 -============================ -input: -FT -output: -StellarKnights : フラグメント表(66,66,66,66,66) > 触覚,触覚,触覚,触覚,触覚 -rand:6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -FT2 -output: -StellarKnights : フラグメント表(43,66) > ぬくもり,触覚 -rand:4/6,3/6,6/6,6/6 -============================ -input: -FT3 -output: -StellarKnights : フラグメント表(13,63,24) > 動物園,聴力,好き -rand:1/6,3/6,6/6,3/6,2/6,4/6 -============================ -input: -FT4 -output: -StellarKnights : フラグメント表(63,24,26,44) > 聴力,好き,憎悪,毛布 -rand:6/6,3/6,2/6,4/6,2/6,6/6,4/6,4/6 -============================ -input: -YSTB -output: -StellarKnights : あなたの物語表:ブリンガー(11) > 肉親を失った:ブライトによる事件であなたは肉親を失った。 -rand:1/6,1/6 -============================ -input: -YSTB -output: -StellarKnights : あなたの物語表:ブリンガー(55) > 歴戦のブリンガー:あなたのパートナーはフォージのフラグメントを1~3個失った状態で作成する。 -rand:5/6,5/6 -============================ -input: -YSTB -output: -StellarKnights : あなたの物語表:ブリンガー(66) > 他階層出身:あなたは他の階層から第753層へ来た折に、世界の崩壊に巻き込まれた。 -rand:6/6,6/6 -============================ -input: -YSTF -output: -StellarKnights : あなたの物語表:フォージ(11) > 信頼:あなたはパートナーを信頼している。あなたとなら大丈夫。 -rand:1/6,1/6 -============================ -input: -YSTF -output: -StellarKnights : あなたの物語表:フォージ(35) > 気になる:パートナーが気になる。気になるの。す、好きとかじゃないし。気になるだけ。 -rand:3/6,5/6 -============================ -input: -YSTF -output: -StellarKnights : あなたの物語表:フォージ(66) > 過去の記憶:あなたの元になった魂の輝き、その記憶をあなたは持っている。 -rand:6/6,6/6 -============================ -input: -STAL -output: -StellarKnights : シチュエーション表:オルトリヴート(11) > 張り込み中:パートナーがあんぱんとコーヒーを買ってきた。ひとまず腹ごしらえだ! -rand:1/6,1/6 -============================ -input: -STAL -output: -StellarKnights : シチュエーション表:オルトリヴート(43) > 殺人現場:ブライトの凶行の現場。現場検証に立ち会うことになったが……。 -rand:4/6,3/6 -============================ -input: -STAL -output: -StellarKnights : シチュエーション表:オルトリヴート(66) > 記念日:フォージとの記念日は毎月ある。一周年がないから、毎月なんだ。 -rand:6/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/SterileLife.txt b/src/src_bcdice/test/data/SterileLife.txt deleted file mode 100644 index 6a8dc6b45..000000000 --- a/src/src_bcdice/test/data/SterileLife.txt +++ /dev/null @@ -1,54 +0,0 @@ -input: -4DA[4,8] -output: -SterileLife : (0,5,0,1) > 成功数1 -rand:1/10,6/10,1/10,2/10 -============================ -input: -6DA-1[3,7,9] -output: -SterileLife : (0,7,5,1,9,3) -1 > (-1,6,4,0,8,2) > 成功数5 -rand:1/10,8/10,6/10,2/10,10/10,4/10 -============================ -input: -VPFT -output: -SterileLife : 船名接頭辞表(4) > PSS(民間宇宙船) -rand:5/10 -============================ -input: -VNRT -output: -SterileLife : 船名後半表(31) > オブザーバー -rand:4/10,2/10 -============================ -input: -aaft -output: -SterileLife : アバターアルファベット表①(6) > R -rand:7/10 -============================ -input: -RNST -output: -SterileLife : ランダムNPC艦表(21) > 〈リサイクルフォージ〉 -rand:3/10,2/10 -============================ -input: -RET -output: -SterileLife : ランダムイベント表(81) > 氷火山アステロイド 推進剤300、希少金属1を獲得 -rand:9/10,2/10 -============================ -input: -TRAT -output: -SterileLife : お宝形容表(36) > アバンギャルド -rand:4/10,7/10 -============================ -input: -TET -output: -SterileLife : 超未来の技術(4) > スマートテクスタイル:布やロープが自由自在に動きます。カーボンナノチューブなどの導電性の素材を織り込むことで繊維自体が電子機器として稼働・変形し、ボタンのセンサーと連動して様々な機能を果たします。 -rand:5/10 -============================ \ No newline at end of file diff --git a/src/src_bcdice/test/data/StrangerOfSwordCity.txt b/src/src_bcdice/test/data/StrangerOfSwordCity.txt deleted file mode 100644 index 3bcdd5aa8..000000000 --- a/src/src_bcdice/test/data/StrangerOfSwordCity.txt +++ /dev/null @@ -1,198 +0,0 @@ -input: -1SR>=3 -output: -StrangerOfSwordCity : (1SR>=3) > 2[2] > 2 > 失敗 -rand:2/6 -============================ -input: -1SR>=3 -output: -StrangerOfSwordCity : (1SR>=3) > 5[5] > 5 > 成功 -rand:5/6 -============================ -input: -1SR>=3 -output: -StrangerOfSwordCity : (1SR>=3) > 1[1] > 1 > ファンブル -rand:1/6 -============================ -input: -1SR>=3 -output: -StrangerOfSwordCity : (1SR>=3) > 6[6] > 6 > 成功 -rand:6/6 -============================ -input: -2SR>=7 -output: -StrangerOfSwordCity : (2SR>=7) > 5[2,3] > 5 > 失敗 -rand:2/6,3/6 -============================ -input: -2SR>=7 -output: -StrangerOfSwordCity : (2SR>=7) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2SR>=7 -output: -StrangerOfSwordCity : (2SR>=7) > 2[1,1] > 2 > ファンブル -rand:1/6,1/6 -============================ -input: -2SR>=7 -output: -StrangerOfSwordCity : (2SR>=7) > 12[6,6] > 12 > クリティカル(+2D6) -rand:6/6,6/6 -============================ -input: -3SR>=10 -output: -StrangerOfSwordCity : (3SR>=10) > 4[1,1,2] > 4 > 失敗 -rand:2/6,1/6,1/6 -============================ -input: -3SR>=10 -output: -StrangerOfSwordCity : (3SR>=10) > 12[3,3,6] > 12 > 成功 -rand:3/6,3/6,6/6 -============================ -input: -3SR>=10 -output: -StrangerOfSwordCity : (3SR>=10) > 3[1,1,1] > 3 > ファンブル -rand:1/6,1/6,1/6 -============================ -input: -3SR>=10 -output: -StrangerOfSwordCity : (3SR>=10) > 15[3,6,6] > 15 > クリティカル(+2D6) -rand:6/6,3/6,6/6 -============================ -input: -3SR>=10 -output: -StrangerOfSwordCity : (3SR>=10) > 18[6,6,6] > 18 > クリティカル(+3D6) -rand:6/6,6/6,6/6 -============================ -input: -10SR>=35 -output: -StrangerOfSwordCity : (10SR>=35) > 44[2,2,3,5,5,5,5,5,6,6] > 44 > クリティカル(+2D6) -rand:5/6,5/6,6/6,3/6,5/6,5/6,6/6,5/6,2/6,2/6 -============================ -input: -10SR>=35 -output: -StrangerOfSwordCity : (10SR>=35) > 46[2,2,3,5,5,5,6,6,6,6] > 46 > クリティカル(+4D6) -rand:6/6,6/6,6/6,3/6,5/6,5/6,6/6,5/6,2/6,2/6 -============================ -input: -10SR>=35 -output: -StrangerOfSwordCity : (10SR>=35) > 10[1,1,1,1,1,1,1,1,1,1] > 10 > ファンブル -rand:1/6,1/6,1/6,1/6,1/6,1/6,1/6,1/6,1/6,1/6 -============================ -input: -10SR>=35 -output: -StrangerOfSwordCity : (10SR>=35) > 11[1,1,1,1,1,1,1,1,1,2] > 11 > 失敗 -rand:1/6,2/6,1/6,1/6,1/6,1/6,1/6,1/6,1/6,1/6 -============================ -input: -2SR -output: -StrangerOfSwordCity : (2SR) > 12[6,6] > 12 > クリティカル(+2D6) -rand:6/6,6/6 -============================ -input: -2SR -output: -StrangerOfSwordCity : (2SR) > 2[1,1] > 2 > ファンブル -rand:1/6,1/6 -============================ -input: -2SR3 -output: -StrangerOfSwordCity : (2SR3) > 7[3,4]+3 > 10 -rand:3/6,4/6 -============================ -input: -3SR+5 -output: -StrangerOfSwordCity : (3SR+5) > 9[2,2,5]+5 > 14 -rand:2/6,2/6,5/6 -============================ -input: -3SR3>=9 -output: -StrangerOfSwordCity : (3SR3>=9) > 9[2,3,4]+3 > 12 > 成功 -rand:3/6,4/6,2/6 -============================ -input: -2SR-2>=10 -output: -StrangerOfSwordCity : (2SR-2>=10) > 8[4,4]-2 > 6 > 失敗 -rand:4/6,4/6 -============================ -input: -4SR-3 -output: -StrangerOfSwordCity : (4SR-3) > 18[2,4,6,6]-3 > 15 > クリティカル(+2D6) -rand:6/6,4/6,2/6,6/6 -============================ -input: -D66 -output: -StrangerOfSwordCity : (D66) > 35 -rand:3/6,5/6 -============================ -input: -d66 -output: -StrangerOfSwordCity : (D66) > 51 -rand:5/6,1/6 -============================ -input: -D66 -output: -StrangerOfSwordCity : (D66) > 15 -rand:1/6,5/6 -============================ -input: -D66 -output: -StrangerOfSwordCity : (D66) > 53 -rand:5/6,3/6 -============================ -input: -D66 -output: -StrangerOfSwordCity : (D66) > 53 -rand:5/6,3/6 -============================ -input: -D66 -output: -StrangerOfSwordCity : (D66) > 31 -rand:3/6,1/6 -============================ -input: -D66 -output: -StrangerOfSwordCity : (D66) > 63 -rand:6/6,3/6 -============================ -input: -D66 -output: -StrangerOfSwordCity : (D66) > 42 -rand:4/6,2/6 -============================ -input: -D66 -output: -StrangerOfSwordCity : (D66) > 55 -rand:5/6,5/6 -============================ diff --git a/src/src_bcdice/test/data/StratoShout.txt b/src/src_bcdice/test/data/StratoShout.txt deleted file mode 100644 index a5bd0d167..000000000 --- a/src/src_bcdice/test/data/StratoShout.txt +++ /dev/null @@ -1,119 +0,0 @@ -input: -2d6>=4 -output: -StratoShout : (2D6>=4) > 6[2,4] > 6 > 成功 -rand:2/6,4/6 -============================ -input: -2d6>=9 -output: -StratoShout : (2D6>=9) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2d6>=9 -output: -StratoShout : (2D6>=9) > 2[1,1] > 2 > ファンブル! (ドラマフェイズ: 【ディスコード】+2 / ライブフェイズ: 【コンディション】-2) -rand:1/6,1/6 -============================ -input: -2d6>=9 -output: -StratoShout : (2D6>=9) > 12[6,6] > 12 > スペシャル! (【コンディション】+2) -rand:6/6,6/6 -============================ -input: -VOT -output: -StratoShout : ボーカルトラブル表(P167) > [4] > 音程がズレているけど、なかなか直せない! -rand:4/6 -============================ -input: -GUT -output: -StratoShout : ギタートラブル表(P169) > [6] > ピックが飛んでった! 指で弾くしかない……! -rand:6/6 -============================ -input: -BAT -output: -StratoShout : ベーストラブル表(P171) > [2] > ゲッ、シールド(信号を伝えるコード)が抜けちゃった! 音が出ない! -rand:2/6 -============================ -input: -DRT -output: -StratoShout : ドラムトラブル表(P175) > [5] > テンポが速くなってきているけど、止まらない! -rand:5/6 -============================ -input: -KEYT -output: -StratoShout : キーボードトラブル表(P173) > [1] > 指先の感覚が麻痺してきた。動かない……! -rand:1/6 -============================ -input: -EMO -output: -StratoShout : 感情表(P183) > [6] > 愛情/負い目 -rand:6/6 -============================ -input: -SCENE -output: -StratoShout : シーン表(P199) > [3] > どこからか、言い争っているような声が聞こえてきた。喧嘩だろうか? -rand:1/6,2/6 -============================ -input: -MACHI -output: -StratoShout : 街角シーン表(P199) > [5] > 横断歩道で信号を待っていると、見知った人物の姿を見つけた。 -rand:2/6,3/6 -============================ -input: -GAKKO -output: -StratoShout : 学校シーン表(P199) > [12] > スピーカーから校内放送が聞こえた。誰かを呼んでいるようだが……? -rand:6/6,6/6 -============================ -input: -BAND -output: -StratoShout : バンドシーン表(P199) > [2] > 音楽専門のニュースサイトをチェック。大小様々な記事が投稿されている。 -rand:1/6,1/6 -============================ -input: -TENKAI -output: -StratoShout : シーン展開表(P201) > [22] > 悪心: シーンプレイヤーの心に魔が差し、ステップを不合理に解決しようとします。【ディスコード】+1点。 -rand:2/6,2/6 -============================ -input: -TENKAI -output: -StratoShout : シーン展開表(P201) > [36] > 希望: シーンプレイヤーの中に、ステップに対して前向きに取り組む意思が生まれます。【コンディション】+1点。 -rand:3/6,6/6 -============================ -input: -TENKAI -output: -StratoShout : シーン展開表(P201) > [36] > 希望: シーンプレイヤーの中に、ステップに対して前向きに取り組む意思が生まれます。【コンディション】+1点。 -rand:6/6,3/6 -============================ -input: -AT -output: -StratoShout : 特技リスト > [6,11] > 《恋愛/逆境11》 -rand:6/6,5/6,6/6 -============================ -input: -AT2 -output: -StratoShout : 特技リスト(身体分野) > [8] > 《血/身体8》 -rand:4/6,4/6 -======================================================== -input: -2D6>=? 目標値?でバグらない -output: -StratoShout : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/StratoShout_Korean.txt b/src/src_bcdice/test/data/StratoShout_Korean.txt deleted file mode 100644 index 7bccfd405..000000000 --- a/src/src_bcdice/test/data/StratoShout_Korean.txt +++ /dev/null @@ -1,119 +0,0 @@ -input: -2d6>=4 -output: -StratoShout : (2D6>=4) > 6[2,4] > 6 > 성공 -rand:2/6,4/6 -============================ -input: -2d6>=9 -output: -StratoShout : (2D6>=9) > 3[1,2] > 3 > 실패 -rand:1/6,2/6 -============================ -input: -2d6>=9 -output: -StratoShout : (2D6>=9) > 2[1,1] > 2 > 펌블! (드라마페이즈: 【디스코드】+2 / 라이브페이즈: 【컨디션】-2) -rand:1/6,1/6 -============================ -input: -2d6>=9 -output: -StratoShout : (2D6>=9) > 12[6,6] > 12 > 스페셜! (【컨디션】+2) -rand:6/6,6/6 -============================ -input: -VOT -output: -StratoShout : 보컬 트러블표(P167) > [4] > 음정이 어긋나고 있지만, 쉽게 고칠 수가 없어! -rand:4/6 -============================ -input: -GUT -output: -StratoShout : 기타 트러블표(P169) > [6] > 피크가 날아가버렸다! 손가락으로 칠 수밖에 없어……! -rand:6/6 -============================ -input: -BAT -output: -StratoShout : 베이스 트러블표(P171) > [2] > 겍, 실드(신호를 전달하는 코드)가 뽑혔다! 소리가 안 나와! -rand:2/6 -============================ -input: -DRT -output: -StratoShout : 드럼 트러블표(P175) > [5] > 템포가 점점 빨라지고 있지만, 멈출 수 없어! -rand:5/6 -============================ -input: -KEYT -output: -StratoShout : 키보드 트러블표(P173) > [1] > 손 끝의 감각이 둔해지기 시작했다. 안 움직여……! -rand:1/6 -============================ -input: -EMO -output: -StratoShout : 감정표(P183) > [6] > 애정/부담감 -rand:6/6 -============================ -input: -SCENE -output: -StratoShout : 장면표(P199) > [3] > 어디선가 언쟁하는 듯한 소리가 들려온다. 싸우는 걸까? -rand:1/6,2/6 -============================ -input: -MACHI -output: -StratoShout : 거리 장면표(P199) > [5] > 횡단보도에서 신호를 기다리고 있다보니 낯익은 인물의 모습을 발견했다. -rand:2/6,3/6 -============================ -input: -GAKKO -output: -StratoShout : 학교 장면표(P199) > [12] > 스피커에서 교내방송이 들려온다. 누군가를 부르고 있는 것 같은데……? -rand:6/6,6/6 -============================ -input: -BAND -output: -StratoShout : 밴드 장면표(P199) > [2] > 음악 전문 인터넷 뉴스 사이트를 체크. 크고 작은 기사가 투고되어 있다. -rand:1/6,1/6 -============================ -input: -TENKAI -output: -StratoShout : 장면 전개표(P201) > [22] > 악의 : 장면 플레이어의 마음에 순간적으로 나쁜 마음이 깃들어, 절차를 불합리하게 해결하려 합니다.【디스코드】+1점 -rand:2/6,2/6 -============================ -input: -TENKAI -output: -StratoShout : 장면 전개표(P201) > [36] > 희망 : 장면 플레이어의 마음 속에 절차에 대해 긍정적으로 맞설 의사가 생겨납니다.【컨디션】+1점 -rand:3/6,6/6 -============================ -input: -TENKAI -output: -StratoShout : 장면 전개표(P201) > [36] > 희망 : 장면 플레이어의 마음 속에 절차에 대해 긍정적으로 맞설 의사가 생겨납니다.【컨디션】+1점 -rand:6/6,3/6 -============================ -input: -AT -output: -StratoShout : 특기 리스트 > [6,11] > 《연애/역경11》 -rand:6/6,5/6,6/6 -============================ -input: -AT2 -output: -StratoShout : 특기 리스트(신체분야) > [8] > 《피/신체8》 -rand:4/6,4/6 -============================ -input: -2D6>=? 목표치를 달성하지 못했다 -output: -StratoShout : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 \ No newline at end of file diff --git a/src/src_bcdice/test/data/Strave.txt b/src/src_bcdice/test/data/Strave.txt deleted file mode 100644 index ed078e45a..000000000 --- a/src/src_bcdice/test/data/Strave.txt +++ /dev/null @@ -1,72 +0,0 @@ -input: -MP6 -output: -Strave : (2D10<=6) > 1,1 > 【成功】 -rand:1/10,1/10 -============================ -input: -MP6 -output: -Strave : (2D10<=6) > 1,10 > 【成功】 -rand:1/10,10/10 -============================ -input: -MP6 -output: -Strave : (2D10<=6) > 10,10 > 【失敗】 -rand:10/10,10/10 -============================ -input: -MP0 -output: -Strave : (2D10<=1) > 1,10 > 【成功】 -rand:1/10,10/10 -============================ -input: -MP11 -output: -Strave : (2D10<=10) > 1,10 > 【成功】 -rand:1/10,10/10 -============================ -input: -5ST6*10 -output: -Strave : (5D10<=6) > 1,1,1,1,1 > Hits:5*10 > 50ダメージ -rand:1/10,1/10,1/10,1/10,1/10 -============================ -input: -5ST6*10 -output: -Strave : (5D10<=6) > 7,8,9,10,10 > Hits:0*10 > 0ダメージ -rand:7/10,8/10,9/10,10/10,10/10 -============================ -input: -6ST5x15 -output: -Strave : (6D10<=5) > 1,2,3,4,5,6 > Hits:5*15 > 75ダメージ -rand:1/10,2/10,3/10,4/10,5/10,6/10 -============================ -input: -AFF -output: -Strave : 所属表:基本(1) > アリウス管理委員会:あなたはアリウス管理委員会に所属している。 -rand:1/100 -============================ -input: -AFV -output: -Strave : 所属表:ヴァリアンスネイヴァー(11) > ヴェルクシュタット:あなたはヴェルクシュタットに所属している。 -rand:11/100 -============================ -input: -IDT -output: -Strave : アイデンティティ表:基本(50) > スフィアブレイク:あなたはスフィアブレイクを熱烈に目指している。 -rand:50/100 -============================ -input: -IDV -output: -Strave : アイデンティティ表:ヴァリアンスネイヴァー(100) > 任意:あなたの任意のアイデンティティを設定せよ。 -rand:100/100 -============================ diff --git a/src/src_bcdice/test/data/SwordWorld.txt b/src/src_bcdice/test/data/SwordWorld.txt deleted file mode 100644 index bba39fda6..000000000 --- a/src/src_bcdice/test/data/SwordWorld.txt +++ /dev/null @@ -1,1487 +0,0 @@ -input: -2d6>=4 -output: -SwordWorld : (2D6>=4) > 9[6,3] > 9 > 成功 -rand:6/6,3/6 -============================ -input: -2d6>=4 -output: -SwordWorld : (2D6>=4) > 8[2,6] > 8 > 成功 -rand:2/6,6/6 -============================ -input: -2d6>=4 -output: -SwordWorld : (2D6>=4) > 6[2,4] > 6 > 成功 -rand:2/6,4/6 -============================ -input: -2d6>=4 -output: -SwordWorld : (2D6>=4) > 6[1,5] > 6 > 成功 -rand:1/6,5/6 -============================ -input: -2d6>=4 -output: -SwordWorld : (2D6>=4) > 11[6,5] > 11 > 成功 -rand:6/6,5/6 -============================ -input: -2d6>=4 -output: -SwordWorld : (2D6>=4) > 9[4,5] > 9 > 成功 -rand:4/6,5/6 -============================ -input: -2d6>=4 -output: -SwordWorld : (2D6>=4) > 6[2,4] > 6 > 成功 -rand:2/6,4/6 -============================ -input: -2d6>=4 -output: -SwordWorld : (2D6>=4) > 9[4,5] > 9 > 成功 -rand:4/6,5/6 -============================ -input: -2d6>=4 -output: -SwordWorld : (2D6>=4) > 6[2,4] > 6 > 成功 -rand:2/6,4/6 -============================ -input: -2d6>=4 -output: -SwordWorld : (2D6>=4) > 5[1,4] > 5 > 成功 -rand:1/6,4/6 -============================ -input: -2d6>=9 -output: -SwordWorld : (2D6>=9) > 7[4,3] > 7 > 失敗 -rand:4/6,3/6 -============================ -input: -2d6>=9 -output: -SwordWorld : (2D6>=9) > 6[2,4] > 6 > 失敗 -rand:2/6,4/6 -============================ -input: -2d6>=9 -output: -SwordWorld : (2D6>=9) > 5[2,3] > 5 > 失敗 -rand:2/6,3/6 -============================ -input: -2d6>=9 -output: -SwordWorld : (2D6>=9) > 8[4,4] > 8 > 失敗 -rand:4/6,4/6 -============================ -input: -2d6>=9 -output: -SwordWorld : (2D6>=9) > 3[1,2] > 3 > 失敗 -rand:1/6,2/6 -============================ -input: -2d6>=9 -output: -SwordWorld : (2D6>=9) > 8[5,3] > 8 > 失敗 -rand:5/6,3/6 -============================ -input: -2d6>=9 -output: -SwordWorld : (2D6>=9) > 5[3,2] > 5 > 失敗 -rand:3/6,2/6 -============================ -input: -2d6>=9 -output: -SwordWorld : (2D6>=9) > 8[2,6] > 8 > 失敗 -rand:2/6,6/6 -============================ -input: -2d6>=9 -output: -SwordWorld : (2D6>=9) > 5[1,4] > 5 > 失敗 -rand:1/6,4/6 -============================ -input: -2d6>=9 -output: -SwordWorld : (2D6>=9) > 5[4,1] > 5 > 失敗 -rand:4/6,1/6 -============================ -input: -2d6>=7 -output: -SwordWorld : (2D6>=7) > 8[4,4] > 8 > 成功 -rand:4/6,4/6 -============================ -input: -2d6>=7 -output: -SwordWorld : (2D6>=7) > 8[5,3] > 8 > 成功 -rand:5/6,3/6 -============================ -input: -2d6>=7 -output: -SwordWorld : (2D6>=7) > 7[6,1] > 7 > 成功 -rand:6/6,1/6 -============================ -input: -2d6>=7 -output: -SwordWorld : (2D6>=7) > 8[3,5] > 8 > 成功 -rand:3/6,5/6 -============================ -input: -2d6>=7 -output: -SwordWorld : (2D6>=7) > 11[6,5] > 11 > 成功 -rand:6/6,5/6 -============================ -input: -2d6>=7 -output: -SwordWorld : (2D6>=7) > 7[4,3] > 7 > 成功 -rand:4/6,3/6 -============================ -input: -2d6>=7 -output: -SwordWorld : (2D6>=7) > 6[5,1] > 6 > 失敗 -rand:5/6,1/6 -============================ -input: -2d6>=7 -output: -SwordWorld : (2D6>=7) > 7[3,4] > 7 > 成功 -rand:3/6,4/6 -============================ -input: -2d6>=7 -output: -SwordWorld : (2D6>=7) > 7[4,3] > 7 > 成功 -rand:4/6,3/6 -============================ -input: -2d6>=7 -output: -SwordWorld : (2D6>=7) > 9[3,6] > 9 > 成功 -rand:3/6,6/6 -============================ -input: -K20 -output: -SwordWorld : KeyNo.20c[10] > 2D:[2,1]=3 > 1 -rand:2/6,1/6 -============================ -input: -K20 -output: -SwordWorld : KeyNo.20c[10] > 2D:[5,5 3,6]=10,9 > 8,7 > 1回転 > 15 -rand:5/6,5/6,3/6,6/6 -============================ -input: -K20 -output: -SwordWorld : KeyNo.20c[10] > 2D:[6,3]=9 > 7 -rand:6/6,3/6 -============================ -input: -K20 -output: -SwordWorld : KeyNo.20c[10] > 2D:[2,6]=8 > 6 -rand:2/6,6/6 -============================ -input: -K20 -output: -SwordWorld : KeyNo.20c[10] > 2D:[6,5 3,1]=11,4 > 9,2 > 1回転 > 11 -rand:6/6,5/6,3/6,1/6 -============================ -input: -K20 -output: -SwordWorld : KeyNo.20c[10] > 2D:[6,3]=9 > 7 -rand:6/6,3/6 -============================ -input: -K20 -output: -SwordWorld : KeyNo.20c[10] > 2D:[1,4]=5 > 3 -rand:1/6,4/6 -============================ -input: -K20 -output: -SwordWorld : KeyNo.20c[10] > 2D:[4,2]=6 > 4 -rand:4/6,2/6 -============================ -input: -K20 -output: -SwordWorld : KeyNo.20c[10] > 2D:[5,4]=9 > 7 -rand:5/6,4/6 -============================ -input: -K20 -output: -SwordWorld : KeyNo.20c[10] > 2D:[6,2]=8 > 6 -rand:6/6,2/6 -============================ -input: -K10+5 -output: -SwordWorld : KeyNo.10c[10]+5 > 2D:[3,1]=4 > 1+5 > 6 -rand:3/6,1/6 -============================ -input: -K10+5 -output: -SwordWorld : KeyNo.10c[10]+5 > 2D:[2,5]=7 > 3+5 > 8 -rand:2/6,5/6 -============================ -input: -K10+5 -output: -SwordWorld : KeyNo.10c[10]+5 > 2D:[5,3]=8 > 4+5 > 9 -rand:5/6,3/6 -============================ -input: -K10+5 -output: -SwordWorld : KeyNo.10c[10]+5 > 2D:[2,2]=4 > 1+5 > 6 -rand:2/6,2/6 -============================ -input: -K10+5 -output: -SwordWorld : KeyNo.10c[10]+5 > 2D:[5,2]=7 > 3+5 > 8 -rand:5/6,2/6 -============================ -input: -K10+5 -output: -SwordWorld : KeyNo.10c[10]+5 > 2D:[4,5]=9 > 5+5 > 10 -rand:4/6,5/6 -============================ -input: -K10+5 -output: -SwordWorld : KeyNo.10c[10]+5 > 2D:[5,3]=8 > 4+5 > 9 -rand:5/6,3/6 -============================ -input: -K10+5 -output: -SwordWorld : KeyNo.10c[10]+5 > 2D:[2,4]=6 > 3+5 > 8 -rand:2/6,4/6 -============================ -input: -K10+5 -output: -SwordWorld : KeyNo.10c[10]+5 > 2D:[2,2]=4 > 1+5 > 6 -rand:2/6,2/6 -============================ -input: -K10+5 -output: -SwordWorld : KeyNo.10c[10]+5 > 2D:[5,4]=9 > 5+5 > 10 -rand:5/6,4/6 -============================ -input: -k30 -output: -SwordWorld : KeyNo.30c[10] > 2D:[3,6]=9 > 9 -rand:3/6,6/6 -============================ -input: -k30 -output: -SwordWorld : KeyNo.30c[10] > 2D:[1,1]=2 > ** > 自動的失敗 -rand:1/6,1/6 -============================ -input: -k30 -output: -SwordWorld : KeyNo.30c[10] > 2D:[6,6 3,6]=12,9 > 10,9 > 1回転 > 19 -rand:6/6,6/6,3/6,6/6 -============================ -input: -k30 -output: -SwordWorld : KeyNo.30c[10] > 2D:[6,3]=9 > 9 -rand:6/6,3/6 -============================ -input: -k30 -output: -SwordWorld : KeyNo.30c[10] > 2D:[4,3]=7 > 7 -rand:4/6,3/6 -============================ -input: -k30 -output: -SwordWorld : KeyNo.30c[10] > 2D:[3,6]=9 > 9 -rand:3/6,6/6 -============================ -input: -k30 -output: -SwordWorld : KeyNo.30c[10] > 2D:[4,5]=9 > 9 -rand:4/6,5/6 -============================ -input: -k30 -output: -SwordWorld : KeyNo.30c[10] > 2D:[6,5 2,1]=11,3 > 10,2 > 1回転 > 12 -rand:6/6,5/6,2/6,1/6 -============================ -input: -k30 -output: -SwordWorld : KeyNo.30c[10] > 2D:[5,3]=8 > 8 -rand:5/6,3/6 -============================ -input: -k30 -output: -SwordWorld : KeyNo.30c[10] > 2D:[5,2]=7 > 7 -rand:5/6,2/6 -============================ -input: -k10+10 -output: -SwordWorld : KeyNo.10c[10]+10 > 2D:[5,3]=8 > 4+10 > 14 -rand:5/6,3/6 -============================ -input: -k10+10 -output: -SwordWorld : KeyNo.10c[10]+10 > 2D:[1,3]=4 > 1+10 > 11 -rand:1/6,3/6 -============================ -input: -k10+10 -output: -SwordWorld : KeyNo.10c[10]+10 > 2D:[3,5]=8 > 4+10 > 14 -rand:3/6,5/6 -============================ -input: -k10+10 -output: -SwordWorld : KeyNo.10c[10]+10 > 2D:[2,1]=3 > 1+10 > 11 -rand:2/6,1/6 -============================ -input: -k10+10 -output: -SwordWorld : KeyNo.10c[10]+10 > 2D:[6,4 1,3]=10,4 > 5,1+10 > 1回転 > 16 -rand:6/6,4/6,1/6,3/6 -============================ -input: -k10+10 -output: -SwordWorld : KeyNo.10c[10]+10 > 2D:[3,1]=4 > 1+10 > 11 -rand:3/6,1/6 -============================ -input: -k10+10 -output: -SwordWorld : KeyNo.10c[10]+10 > 2D:[3,6]=9 > 5+10 > 15 -rand:3/6,6/6 -============================ -input: -k10+10 -output: -SwordWorld : KeyNo.10c[10]+10 > 2D:[1,1]=2 > ** > 自動的失敗 -rand:1/6,1/6 -============================ -input: -k10+10 -output: -SwordWorld : KeyNo.10c[10]+10 > 2D:[2,3]=5 > 2+10 > 12 -rand:2/6,3/6 -============================ -input: -k10+10 -output: -SwordWorld : KeyNo.10c[10]+10 > 2D:[5,5 1,5]=10,6 > 5,3+10 > 1回転 > 18 -rand:5/6,5/6,1/6,5/6 -============================ -input: -Sk10-1 -output: -SwordWorld : KeyNo.10c[10]-1 > 2D:[2,6]=8 > 4-1 > 3###secret dice### -rand:2/6,6/6 -============================ -input: -Sk10-1 -output: -SwordWorld : KeyNo.10c[10]-1 > 2D:[3,2]=5 > 2-1 > 1###secret dice### -rand:3/6,2/6 -============================ -input: -Sk10-1 -output: -SwordWorld : KeyNo.10c[10]-1 > 2D:[3,5]=8 > 4-1 > 3###secret dice### -rand:3/6,5/6 -============================ -input: -Sk10-1 -output: -SwordWorld : KeyNo.10c[10]-1 > 2D:[4,5]=9 > 5-1 > 4###secret dice### -rand:4/6,5/6 -============================ -input: -Sk10-1 -output: -SwordWorld : KeyNo.10c[10]-1 > 2D:[1,3]=4 > 1-1 > 0###secret dice### -rand:1/6,3/6 -============================ -input: -Sk10-1 -output: -SwordWorld : KeyNo.10c[10]-1 > 2D:[6,5 4,4]=11,8 > 6,4-1 > 1回転 > 9###secret dice### -rand:6/6,5/6,4/6,4/6 -============================ -input: -Sk10-1 -output: -SwordWorld : KeyNo.10c[10]-1 > 2D:[4,5]=9 > 5-1 > 4###secret dice### -rand:4/6,5/6 -============================ -input: -Sk10-1 -output: -SwordWorld : KeyNo.10c[10]-1 > 2D:[1,3]=4 > 1-1 > 0###secret dice### -rand:1/6,3/6 -============================ -input: -Sk10-1 -output: -SwordWorld : KeyNo.10c[10]-1 > 2D:[3,3]=6 > 3-1 > 2###secret dice### -rand:3/6,3/6 -============================ -input: -Sk10-1 -output: -SwordWorld : KeyNo.10c[10]-1 > 2D:[4,6 5,3]=10,8 > 5,4-1 > 1回転 > 8###secret dice### -rand:4/6,6/6,5/6,3/6 -============================ -input: -k10+5+2 -output: -SwordWorld : KeyNo.10c[10]+7 > 2D:[6,3]=9 > 5+7 > 12 -rand:6/6,3/6 -============================ -input: -k10+5+2 -output: -SwordWorld : KeyNo.10c[10]+7 > 2D:[3,3]=6 > 3+7 > 10 -rand:3/6,3/6 -============================ -input: -k10+5+2 -output: -SwordWorld : KeyNo.10c[10]+7 > 2D:[1,1]=2 > ** > 自動的失敗 -rand:1/6,1/6 -============================ -input: -k10+5+2 -output: -SwordWorld : KeyNo.10c[10]+7 > 2D:[4,6 2,4]=10,6 > 5,3+7 > 1回転 > 15 -rand:4/6,6/6,2/6,4/6 -============================ -input: -k10+5+2 -output: -SwordWorld : KeyNo.10c[10]+7 > 2D:[6,3]=9 > 5+7 > 12 -rand:6/6,3/6 -============================ -input: -k10+5+2 -output: -SwordWorld : KeyNo.10c[10]+7 > 2D:[5,3]=8 > 4+7 > 11 -rand:5/6,3/6 -============================ -input: -k10+5+2 -output: -SwordWorld : KeyNo.10c[10]+7 > 2D:[2,2]=4 > 1+7 > 8 -rand:2/6,2/6 -============================ -input: -k10+5+2 -output: -SwordWorld : KeyNo.10c[10]+7 > 2D:[4,5]=9 > 5+7 > 12 -rand:4/6,5/6 -============================ -input: -k10+5+2 -output: -SwordWorld : KeyNo.10c[10]+7 > 2D:[4,6 4,3]=10,7 > 5,3+7 > 1回転 > 15 -rand:4/6,6/6,4/6,3/6 -============================ -input: -k10+5+2 -output: -SwordWorld : KeyNo.10c[10]+7 > 2D:[5,5 4,2]=10,6 > 5,3+7 > 1回転 > 15 -rand:5/6,5/6,4/6,2/6 -============================ -input: -K20[10] -output: -SwordWorld : KeyNo.20c[10] > 2D:[6,4 4,4]=10,8 > 8,6 > 1回転 > 14 -rand:6/6,4/6,4/6,4/6 -============================ -input: -K20[10] -output: -SwordWorld : KeyNo.20c[10] > 2D:[6,2]=8 > 6 -rand:6/6,2/6 -============================ -input: -K20[10] -output: -SwordWorld : KeyNo.20c[10] > 2D:[4,2]=6 > 4 -rand:4/6,2/6 -============================ -input: -K20[10] -output: -SwordWorld : KeyNo.20c[10] > 2D:[2,3]=5 > 3 -rand:2/6,3/6 -============================ -input: -K20[10] -output: -SwordWorld : KeyNo.20c[10] > 2D:[6,2]=8 > 6 -rand:6/6,2/6 -============================ -input: -K20[10] -output: -SwordWorld : KeyNo.20c[10] > 2D:[4,5]=9 > 7 -rand:4/6,5/6 -============================ -input: -K20[10] -output: -SwordWorld : KeyNo.20c[10] > 2D:[3,5]=8 > 6 -rand:3/6,5/6 -============================ -input: -K20[10] -output: -SwordWorld : KeyNo.20c[10] > 2D:[1,6]=7 > 5 -rand:1/6,6/6 -============================ -input: -K20[10] -output: -SwordWorld : KeyNo.20c[10] > 2D:[5,1]=6 > 4 -rand:5/6,1/6 -============================ -input: -K20[10] -output: -SwordWorld : KeyNo.20c[10] > 2D:[1,1]=2 > ** > 自動的失敗 -rand:1/6,1/6 -============================ -input: -K10+5[9] -output: -SwordWorld : KeyNo.10c[9]+5 > 2D:[2,2]=4 > 1+5 > 6 -rand:2/6,2/6 -============================ -input: -K10+5[9] -output: -SwordWorld : KeyNo.10c[9]+5 > 2D:[4,3]=7 > 3+5 > 8 -rand:4/6,3/6 -============================ -input: -K10+5[9] -output: -SwordWorld : KeyNo.10c[9]+5 > 2D:[4,4]=8 > 4+5 > 9 -rand:4/6,4/6 -============================ -input: -K10+5[9] -output: -SwordWorld : KeyNo.10c[9]+5 > 2D:[1,6]=7 > 3+5 > 8 -rand:1/6,6/6 -============================ -input: -K10+5[9] -output: -SwordWorld : KeyNo.10c[9]+5 > 2D:[6,2]=8 > 4+5 > 9 -rand:6/6,2/6 -============================ -input: -K10+5[9] -output: -SwordWorld : KeyNo.10c[9]+5 > 2D:[6,1]=7 > 3+5 > 8 -rand:6/6,1/6 -============================ -input: -K10+5[9] -output: -SwordWorld : KeyNo.10c[9]+5 > 2D:[5,1]=6 > 3+5 > 8 -rand:5/6,1/6 -============================ -input: -K10+5[9] -output: -SwordWorld : KeyNo.10c[9]+5 > 2D:[4,2]=6 > 3+5 > 8 -rand:4/6,2/6 -============================ -input: -K10+5[9] -output: -SwordWorld : KeyNo.10c[9]+5 > 2D:[5,3]=8 > 4+5 > 9 -rand:5/6,3/6 -============================ -input: -K10+5[9] -output: -SwordWorld : KeyNo.10c[9]+5 > 2D:[3,6 3,5]=9,8 > 5,4+5 > 1回転 > 14 -rand:3/6,6/6,3/6,5/6 -============================ -input: -k30[10] -output: -SwordWorld : KeyNo.30c[10] > 2D:[4,2]=6 > 6 -rand:4/6,2/6 -============================ -input: -k30[10] -output: -SwordWorld : KeyNo.30c[10] > 2D:[3,1]=4 > 4 -rand:3/6,1/6 -============================ -input: -k30[10] -output: -SwordWorld : KeyNo.30c[10] > 2D:[1,3]=4 > 4 -rand:1/6,3/6 -============================ -input: -k30[10] -output: -SwordWorld : KeyNo.30c[10] > 2D:[5,6 1,5]=11,6 > 10,6 > 1回転 > 16 -rand:5/6,6/6,1/6,5/6 -============================ -input: -k30[10] -output: -SwordWorld : KeyNo.30c[10] > 2D:[2,2]=4 > 4 -rand:2/6,2/6 -============================ -input: -k30[10] -output: -SwordWorld : KeyNo.30c[10] > 2D:[4,2]=6 > 6 -rand:4/6,2/6 -============================ -input: -k30[10] -output: -SwordWorld : KeyNo.30c[10] > 2D:[4,4]=8 > 8 -rand:4/6,4/6 -============================ -input: -k30[10] -output: -SwordWorld : KeyNo.30c[10] > 2D:[2,1]=3 > 2 -rand:2/6,1/6 -============================ -input: -k30[10] -output: -SwordWorld : KeyNo.30c[10] > 2D:[1,3]=4 > 4 -rand:1/6,3/6 -============================ -input: -k30[10] -output: -SwordWorld : KeyNo.30c[10] > 2D:[2,4]=6 > 6 -rand:2/6,4/6 -============================ -input: -k10[9]+10 -output: -SwordWorld : KeyNo.10c[9]+10 > 2D:[5,3]=8 > 4+10 > 14 -rand:5/6,3/6 -============================ -input: -k10[9]+10 -output: -SwordWorld : KeyNo.10c[9]+10 > 2D:[2,4]=6 > 3+10 > 13 -rand:2/6,4/6 -============================ -input: -k10[9]+10 -output: -SwordWorld : KeyNo.10c[9]+10 > 2D:[6,4 3,4]=10,7 > 5,3+10 > 1回転 > 18 -rand:6/6,4/6,3/6,4/6 -============================ -input: -k10[9]+10 -output: -SwordWorld : KeyNo.10c[9]+10 > 2D:[3,5]=8 > 4+10 > 14 -rand:3/6,5/6 -============================ -input: -k10[9]+10 -output: -SwordWorld : KeyNo.10c[9]+10 > 2D:[5,4 1,4]=9,5 > 5,2+10 > 1回転 > 17 -rand:5/6,4/6,1/6,4/6 -============================ -input: -k10[9]+10 -output: -SwordWorld : KeyNo.10c[9]+10 > 2D:[3,4]=7 > 3+10 > 13 -rand:3/6,4/6 -============================ -input: -k10[9]+10 -output: -SwordWorld : KeyNo.10c[9]+10 > 2D:[4,2]=6 > 3+10 > 13 -rand:4/6,2/6 -============================ -input: -k10[9]+10 -output: -SwordWorld : KeyNo.10c[9]+10 > 2D:[1,6]=7 > 3+10 > 13 -rand:1/6,6/6 -============================ -input: -k10[9]+10 -output: -SwordWorld : KeyNo.10c[9]+10 > 2D:[5,4 5,3]=9,8 > 5,4+10 > 1回転 > 19 -rand:5/6,4/6,5/6,3/6 -============================ -input: -k10[9]+10 -output: -SwordWorld : KeyNo.10c[9]+10 > 2D:[1,4]=5 > 2+10 > 12 -rand:1/6,4/6 -============================ -input: -k10-5@9 -output: -SwordWorld : KeyNo.10c[9]-5 > 2D:[1,6]=7 > 3-5 > -2 -rand:1/6,6/6 -============================ -input: -k10-5@9 -output: -SwordWorld : KeyNo.10c[9]-5 > 2D:[5,1]=6 > 3-5 > -2 -rand:5/6,1/6 -============================ -input: -k10-5@9 -output: -SwordWorld : KeyNo.10c[9]-5 > 2D:[6,4 5,5 3,4]=10,10,7 > 5,5,3-5 > 2回転 > 8 -rand:6/6,4/6,5/6,5/6,3/6,4/6 -============================ -input: -k10-5@9 -output: -SwordWorld : KeyNo.10c[9]-5 > 2D:[2,5]=7 > 3-5 > -2 -rand:2/6,5/6 -============================ -input: -k10-5@9 -output: -SwordWorld : KeyNo.10c[9]-5 > 2D:[1,4]=5 > 2-5 > -3 -rand:1/6,4/6 -============================ -input: -k10-5@9 -output: -SwordWorld : KeyNo.10c[9]-5 > 2D:[2,2]=4 > 1-5 > -4 -rand:2/6,2/6 -============================ -input: -k10-5@9 -output: -SwordWorld : KeyNo.10c[9]-5 > 2D:[5,6 4,1]=11,5 > 6,2-5 > 1回転 > 3 -rand:5/6,6/6,4/6,1/6 -============================ -input: -k10-5@9 -output: -SwordWorld : KeyNo.10c[9]-5 > 2D:[4,4]=8 > 4-5 > -1 -rand:4/6,4/6 -============================ -input: -k10-5@9 -output: -SwordWorld : KeyNo.10c[9]-5 > 2D:[2,6]=8 > 4-5 > -1 -rand:2/6,6/6 -============================ -input: -k10-5@9 -output: -SwordWorld : KeyNo.10c[9]-5 > 2D:[2,6]=8 > 4-5 > -1 -rand:2/6,6/6 -============================ -input: -K20$+1 -output: -SwordWorld : KeyNo.20c[10]m[+1] > 2D:[2,6]=9 > 7 -rand:2/6,6/6 -============================ -input: -K20$+1 -output: -SwordWorld : KeyNo.20c[10]m[+1] > 2D:[3,4]=8 > 6 -rand:3/6,4/6 -============================ -input: -K20$+1 -output: -SwordWorld : KeyNo.20c[10]m[+1] > 2D:[3,4]=8 > 6 -rand:3/6,4/6 -============================ -input: -K20$+1 -output: -SwordWorld : KeyNo.20c[10]m[+1] > 2D:[3,3]=7 > 5 -rand:3/6,3/6 -============================ -input: -K20$+1 -output: -SwordWorld : KeyNo.20c[10]m[+1] > 2D:[1,2]=4 > 2 -rand:1/6,2/6 -============================ -input: -K20$+1 -output: -SwordWorld : KeyNo.20c[10]m[+1] > 2D:[2,1]=4 > 2 -rand:2/6,1/6 -============================ -input: -K20$+1 -output: -SwordWorld : KeyNo.20c[10]m[+1] > 2D:[6,2]=9 > 7 -rand:6/6,2/6 -============================ -input: -K20$+1 -output: -SwordWorld : KeyNo.20c[10]m[+1] > 2D:[2,2]=5 > 3 -rand:2/6,2/6 -============================ -input: -K20$+1 -output: -SwordWorld : KeyNo.20c[10]m[+1] > 2D:[4,1]=6 > 4 -rand:4/6,1/6 -============================ -input: -K20$+1 -output: -SwordWorld : KeyNo.20c[10]m[+1] > 2D:[5,1]=7 > 5 -rand:5/6,1/6 -============================ -input: -K10$+1 -output: -SwordWorld : KeyNo.10c[10]m[+1] > 2D:[1,1]=2 > ** > 自動的失敗 -rand:1/6,1/6 -============================ -input: -K10+5$9 -output: -SwordWorld : KeyNo.10c[10]m[9]+5 > 2D:[6,2]=9 > 5+5 > 10 -rand:6/6,2/6 -============================ -input: -K10+5$9 -output: -SwordWorld : KeyNo.10c[10]m[9]+5 > 2D:[3,6]=9 > 5+5 > 10 -rand:3/6,6/6 -============================ -input: -K10+5$9 -output: -SwordWorld : KeyNo.10c[10]m[9]+5 > 2D:[2,3]=9 > 5+5 > 10 -rand:2/6,3/6 -============================ -input: -K10+5$9 -output: -SwordWorld : KeyNo.10c[10]m[9]+5 > 2D:[1,6]=9 > 5+5 > 10 -rand:1/6,6/6 -============================ -input: -K10+5$9 -output: -SwordWorld : KeyNo.10c[10]m[9]+5 > 2D:[6,1]=9 > 5+5 > 10 -rand:6/6,1/6 -============================ -input: -K10+5$9 -output: -SwordWorld : KeyNo.10c[10]m[9]+5 > 2D:[1,6]=9 > 5+5 > 10 -rand:1/6,6/6 -============================ -input: -K10+5$9 -output: -SwordWorld : KeyNo.10c[10]m[9]+5 > 2D:[2,4]=9 > 5+5 > 10 -rand:2/6,4/6 -============================ -input: -K10+5$9 -output: -SwordWorld : KeyNo.10c[10]m[9]+5 > 2D:[4,6]=9 > 5+5 > 10 -rand:4/6,6/6 -============================ -input: -K10+5$9 -output: -SwordWorld : KeyNo.10c[10]m[9]+5 > 2D:[3,4]=9 > 5+5 > 10 -rand:3/6,4/6 -============================ -input: -K10+5$9 -output: -SwordWorld : KeyNo.10c[10]m[9]+5 > 2D:[6,6]=9 > 5+5 > 10 -rand:6/6,6/6 -============================ -input: -k10-5@9$+2 -output: -SwordWorld : KeyNo.10c[9]m[+2]-5 > 2D:[4,1]=7 > 3-5 > -2 -rand:4/6,1/6 -============================ -input: -k10-5@9$+2 -output: -SwordWorld : KeyNo.10c[9]m[+2]-5 > 2D:[3,3]=8 > 4-5 > -1 -rand:3/6,3/6 -============================ -input: -k10-5@9$+2 -output: -SwordWorld : KeyNo.10c[9]m[+2]-5 > 2D:[1,6 2,2]=9,4 > 5,1-5 > 1回転 > 1 -rand:1/6,6/6,2/6,2/6 -============================ -input: -k10-5@9$+2 -output: -SwordWorld : KeyNo.10c[9]m[+2]-5 > 2D:[1,1]=2 > ** > 自動的失敗 -rand:1/6,1/6 -============================ -input: -k10-5@9$+2 -output: -SwordWorld : KeyNo.10c[9]m[+2]-5 > 2D:[6,5 3,6 6,6 1,6]=12,9,12,7 > 7,5,7,3-5 > 3回転 > 17 -rand:6/6,5/6,3/6,6/6,6/6,6/6,1/6,6/6 -============================ -input: -k10-5@9$+2 -output: -SwordWorld : KeyNo.10c[9]m[+2]-5 > 2D:[3,6 5,2]=11,7 > 6,3-5 > 1回転 > 4 -rand:3/6,6/6,5/6,2/6 -============================ -input: -k10-5@9$+2 -output: -SwordWorld : KeyNo.10c[9]m[+2]-5 > 2D:[3,6 5,6 5,1]=11,11,6 > 6,6,3-5 > 2回転 > 10 -rand:3/6,6/6,5/6,6/6,5/6,1/6 -============================ -input: -k10-5@9$+2 -output: -SwordWorld : KeyNo.10c[9]m[+2]-5 > 2D:[5,4 6,6 3,6 4,1]=11,12,9,5 > 6,7,5,2-5 > 3回転 > 15 -rand:5/6,4/6,6/6,6/6,3/6,6/6,4/6,1/6 -============================ -input: -k10-5@9$+2 -output: -SwordWorld : KeyNo.10c[9]m[+2]-5 > 2D:[3,2]=7 > 3-5 > -2 -rand:3/6,2/6 -============================ -input: -k10-5@9$+2 -output: -SwordWorld : KeyNo.10c[9]m[+2]-5 > 2D:[2,2]=6 > 3-5 > -2 -rand:2/6,2/6 -============================ -input: -k10[9]+10$9 -output: -SwordWorld : KeyNo.10c[9]m[9]+10 > 2D:[2,1 5,3]=9,8 > 5,4+10 > 1回転 > 19 -rand:2/6,1/6,5/6,3/6 -============================ -input: -k10[9]+10$9 -output: -SwordWorld : KeyNo.10c[9]m[9]+10 > 2D:[5,1 3,6 5,1]=9,9,6 > 5,5,3+10 > 2回転 > 23 -rand:5/6,1/6,3/6,6/6,5/6,1/6 -============================ -input: -k10[9]+10$9 -output: -SwordWorld : KeyNo.10c[9]m[9]+10 > 2D:[4,6 2,2]=9,4 > 5,1+10 > 1回転 > 16 -rand:4/6,6/6,2/6,2/6 -============================ -input: -k10[9]+10$9 -output: -SwordWorld : KeyNo.10c[9]m[9]+10 > 2D:[6,3 4,1]=9,5 > 5,2+10 > 1回転 > 17 -rand:6/6,3/6,4/6,1/6 -============================ -input: -k10[9]+10$9 -output: -SwordWorld : KeyNo.10c[9]m[9]+10 > 2D:[4,6 3,6 2,4]=9,9,6 > 5,5,3+10 > 2回転 > 23 -rand:4/6,6/6,3/6,6/6,2/6,4/6 -============================ -input: -k10[9]+10$9 -output: -SwordWorld : KeyNo.10c[9]m[9]+10 > 2D:[2,6 3,1]=9,4 > 5,1+10 > 1回転 > 16 -rand:2/6,6/6,3/6,1/6 -============================ -input: -k10[9]+10$9 -output: -SwordWorld : KeyNo.10c[9]m[9]+10 > 2D:[6,2 5,4 3,5]=9,9,8 > 5,5,4+10 > 2回転 > 24 -rand:6/6,2/6,5/6,4/6,3/6,5/6 -============================ -input: -k10[9]+10$9 -output: -SwordWorld : KeyNo.10c[9]m[9]+10 > 2D:[3,3 2,6]=9,8 > 5,4+10 > 1回転 > 19 -rand:3/6,3/6,2/6,6/6 -============================ -input: -k10[9]+10$9 -output: -SwordWorld : KeyNo.10c[9]m[9]+10 > 2D:[4,3 6,2]=9,8 > 5,4+10 > 1回転 > 19 -rand:4/6,3/6,6/6,2/6 -============================ -input: -k10[9]+10$9 -output: -SwordWorld : KeyNo.10c[9]m[9]+10 > 2D:[6,5 6,4 6,1]=9,10,7 > 5,5,3+10 > 2回転 > 23 -rand:6/6,5/6,6/6,4/6,6/6,1/6 -============================ -input: -K25+6@3 -output: -SwordWorld : KeyNo.25c[3]+6 > 2D:[5,2 1,6 4,3 6,6 6,3 2,2 3,3 2,2 2,5 1,6 4,5 3,2 3,3 3,2 5,3 1,1]=7,7,7,12,9,4,6,4,7,7,9,5,6,5,8,2 > 6,6,6,10,8,3,5,3,6,6,8,4,5,4,7,**+6 > 15回転 > 93 -rand:5/6,2/6,1/6,6/6,4/6,3/6,6/6,6/6,6/6,3/6,2/6,2/6,3/6,3/6,2/6,2/6,2/6,5/6,1/6,6/6,4/6,5/6,3/6,2/6,3/6,3/6,3/6,2/6,5/6,3/6,1/6,1/6 -============================ -input: -K25+6@3 -output: -SwordWorld : KeyNo.25c[3]+6 > 2D:[4,6 1,1]=10,2 > 8,**+6 > 1回転 > 14 -rand:4/6,6/6,1/6,1/6 -============================ -input: -K25+6@3 -output: -SwordWorld : KeyNo.25c[3]+6 > 2D:[4,4 2,2 2,6 4,2 1,5 6,3 5,3 6,5 6,4 5,4 2,4 3,6 2,6 3,3 2,2 2,5 4,1 4,4 2,3 1,3 6,5 2,3 4,3 4,6 4,5 5,5 3,1 2,2 5,5 3,6 4,6 1,5 4,5 6,5 1,4 3,1 4,4 3,6 1,4 1,5 1,3 3,2 2,5 1,1]=8,4,8,6,6,9,8,11,10,9,6,9,8,6,4,7,5,8,5,4,11,5,7,10,9,10,4,4,10,9,10,6,9,11,5,4,8,9,5,6,4,5,7,2 > 7,3,7,5,5,8,7,9,8,8,5,8,7,5,3,6,4,7,4,3,9,4,6,8,8,8,3,3,8,8,8,5,8,9,4,3,7,8,4,5,3,4,6,**+6 > 43回転 > 264 -rand:4/6,4/6,2/6,2/6,2/6,6/6,4/6,2/6,1/6,5/6,6/6,3/6,5/6,3/6,6/6,5/6,6/6,4/6,5/6,4/6,2/6,4/6,3/6,6/6,2/6,6/6,3/6,3/6,2/6,2/6,2/6,5/6,4/6,1/6,4/6,4/6,2/6,3/6,1/6,3/6,6/6,5/6,2/6,3/6,4/6,3/6,4/6,6/6,4/6,5/6,5/6,5/6,3/6,1/6,2/6,2/6,5/6,5/6,3/6,6/6,4/6,6/6,1/6,5/6,4/6,5/6,6/6,5/6,1/6,4/6,3/6,1/6,4/6,4/6,3/6,6/6,1/6,4/6,1/6,5/6,1/6,3/6,3/6,2/6,2/6,5/6,1/6,1/6 -============================ -input: -K25+6@3 -output: -SwordWorld : KeyNo.25c[3]+6 > 2D:[2,2 1,2 1,6 4,1 6,3 1,1]=4,3,7,5,9,2 > 3,2,6,4,8,**+6 > 5回転 > 29 -rand:2/6,2/6,1/6,2/6,1/6,6/6,4/6,1/6,6/6,3/6,1/6,1/6 -============================ -input: -K25+6@3 -output: -SwordWorld : KeyNo.25c[3]+6 > 2D:[2,5 2,2 3,6 3,1 3,3 1,4 4,5 6,3 2,6 4,3 3,3 4,5 4,1 4,4 6,4 2,1 1,2 4,4 2,1 2,1 2,5 1,4 2,2 5,1 6,1 2,5 4,1 5,4 2,4 5,5 2,3 1,5 4,5 2,4 4,3 5,4 5,6 1,3 5,2 1,6 2,6 5,5 3,5 2,4 2,1 2,4 3,4 1,2 2,5 1,6 1,3 6,1 6,2 6,1 3,6 1,5 5,2 3,4 5,4 2,5 4,1 3,3 4,6 2,5 1,3 3,2 2,5 2,1 5,2 3,5 6,5 6,4 5,6 3,2 4,3 1,2 2,1 6,1 3,2 6,2 3,6 1,5 5,5 3,5 1,6 4,5 1,2 3,4 3,4 3,4 1,4 4,5 3,5 1,6 3,6 2,4 4,3 2,1 6,1 1,6 2,5 4,1 2,6 3,5 2,3 2,6 4,5 6,1 1,6 4,3 5,3 1,1]=7,4,9,4,6,5,9,9,8,7,6,9,5,8,10,3,3,8,3,3,7,5,4,6,7,7,5,9,6,10,5,6,9,6,7,9,11,4,7,7,8,10,8,6,3,6,7,3,7,7,4,7,8,7,9,6,7,7,9,7,5,6,10,7,4,5,7,3,7,8,11,10,11,5,7,3,3,7,5,8,9,6,10,8,7,9,3,7,7,7,5,9,8,7,9,6,7,3,7,7,7,5,8,8,5,8,9,7,7,7,8,2 > 6,3,8,3,5,4,8,8,7,6,5,8,4,7,8,2,2,7,2,2,6,4,3,5,6,6,4,8,5,8,4,5,8,5,6,8,9,3,6,6,7,8,7,5,2,5,6,2,6,6,3,6,7,6,8,5,6,6,8,6,4,5,8,6,3,4,6,2,6,7,9,8,9,4,6,2,2,6,4,7,8,5,8,7,6,8,2,6,6,6,4,8,7,6,8,5,6,2,6,6,6,4,7,7,4,7,8,6,6,6,7,**+6 > 111回転 > 637 -rand:2/6,5/6,2/6,2/6,3/6,6/6,3/6,1/6,3/6,3/6,1/6,4/6,4/6,5/6,6/6,3/6,2/6,6/6,4/6,3/6,3/6,3/6,4/6,5/6,4/6,1/6,4/6,4/6,6/6,4/6,2/6,1/6,1/6,2/6,4/6,4/6,2/6,1/6,2/6,1/6,2/6,5/6,1/6,4/6,2/6,2/6,5/6,1/6,6/6,1/6,2/6,5/6,4/6,1/6,5/6,4/6,2/6,4/6,5/6,5/6,2/6,3/6,1/6,5/6,4/6,5/6,2/6,4/6,4/6,3/6,5/6,4/6,5/6,6/6,1/6,3/6,5/6,2/6,1/6,6/6,2/6,6/6,5/6,5/6,3/6,5/6,2/6,4/6,2/6,1/6,2/6,4/6,3/6,4/6,1/6,2/6,2/6,5/6,1/6,6/6,1/6,3/6,6/6,1/6,6/6,2/6,6/6,1/6,3/6,6/6,1/6,5/6,5/6,2/6,3/6,4/6,5/6,4/6,2/6,5/6,4/6,1/6,3/6,3/6,4/6,6/6,2/6,5/6,1/6,3/6,3/6,2/6,2/6,5/6,2/6,1/6,5/6,2/6,3/6,5/6,6/6,5/6,6/6,4/6,5/6,6/6,3/6,2/6,4/6,3/6,1/6,2/6,2/6,1/6,6/6,1/6,3/6,2/6,6/6,2/6,3/6,6/6,1/6,5/6,5/6,5/6,3/6,5/6,1/6,6/6,4/6,5/6,1/6,2/6,3/6,4/6,3/6,4/6,3/6,4/6,1/6,4/6,4/6,5/6,3/6,5/6,1/6,6/6,3/6,6/6,2/6,4/6,4/6,3/6,2/6,1/6,6/6,1/6,1/6,6/6,2/6,5/6,4/6,1/6,2/6,6/6,3/6,5/6,2/6,3/6,2/6,6/6,4/6,5/6,6/6,1/6,1/6,6/6,4/6,3/6,5/6,3/6,1/6,1/6 -============================ -input: -K25+6@3 -output: -SwordWorld : KeyNo.25c[3]+6 > 2D:[5,5 4,4 4,4 4,4 5,6 5,3 1,6 5,4 4,1 1,5 3,4 5,1 2,5 3,6 1,1]=10,8,8,8,11,8,7,9,5,6,7,6,7,9,2 > 8,7,7,7,9,7,6,8,4,5,6,5,6,8,**+6 > 14回転 > 99 -rand:5/6,5/6,4/6,4/6,4/6,4/6,4/6,4/6,5/6,6/6,5/6,3/6,1/6,6/6,5/6,4/6,4/6,1/6,1/6,5/6,3/6,4/6,5/6,1/6,2/6,5/6,3/6,6/6,1/6,1/6 -============================ -input: -K25+6@3 -output: -SwordWorld : KeyNo.25c[3]+6 > 2D:[2,1 5,2 1,4 3,3 2,5 5,2 5,2 3,1 2,4 1,4 4,3 4,5 2,3 6,2 6,1 6,6 1,5 3,2 6,1 2,5 2,6 2,6 5,2 3,6 2,1 6,6 1,3 2,6 4,4 2,1 1,6 1,5 3,6 3,6 2,5 2,6 6,2 6,4 2,2 6,6 4,5 5,1 1,5 5,5 6,5 6,2 1,5 4,1 4,2 1,2 2,3 6,5 1,4 6,4 2,2 3,5 3,5 5,6 2,5 1,1]=3,7,5,6,7,7,7,4,6,5,7,9,5,8,7,12,6,5,7,7,8,8,7,9,3,12,4,8,8,3,7,6,9,9,7,8,8,10,4,12,9,6,6,10,11,8,6,5,6,3,5,11,5,10,4,8,8,11,7,2 > 2,6,4,5,6,6,6,3,5,4,6,8,4,7,6,10,5,4,6,6,7,7,6,8,2,10,3,7,7,2,6,5,8,8,6,7,7,8,3,10,8,5,5,8,9,7,5,4,5,2,4,9,4,8,3,7,7,9,6,**+6 > 59回転 > 357 -rand:2/6,1/6,5/6,2/6,1/6,4/6,3/6,3/6,2/6,5/6,5/6,2/6,5/6,2/6,3/6,1/6,2/6,4/6,1/6,4/6,4/6,3/6,4/6,5/6,2/6,3/6,6/6,2/6,6/6,1/6,6/6,6/6,1/6,5/6,3/6,2/6,6/6,1/6,2/6,5/6,2/6,6/6,2/6,6/6,5/6,2/6,3/6,6/6,2/6,1/6,6/6,6/6,1/6,3/6,2/6,6/6,4/6,4/6,2/6,1/6,1/6,6/6,1/6,5/6,3/6,6/6,3/6,6/6,2/6,5/6,2/6,6/6,6/6,2/6,6/6,4/6,2/6,2/6,6/6,6/6,4/6,5/6,5/6,1/6,1/6,5/6,5/6,5/6,6/6,5/6,6/6,2/6,1/6,5/6,4/6,1/6,4/6,2/6,1/6,2/6,2/6,3/6,6/6,5/6,1/6,4/6,6/6,4/6,2/6,2/6,3/6,5/6,3/6,5/6,5/6,6/6,2/6,5/6,1/6,1/6 -============================ -input: -K25+6@3 -output: -SwordWorld : KeyNo.25c[3]+6 > 2D:[2,5 3,6 4,6 4,4 1,1]=7,9,10,8,2 > 6,8,8,7,**+6 > 4回転 > 35 -rand:2/6,5/6,3/6,6/6,4/6,6/6,4/6,4/6,1/6,1/6 -============================ -input: -K25+6@3 -output: -SwordWorld : KeyNo.25c[3]+6 > 2D:[3,6 3,2 2,1 6,2 2,5 1,5 1,1]=9,5,3,8,7,6,2 > 8,4,2,7,6,5,**+6 > 6回転 > 38 -rand:3/6,6/6,3/6,2/6,2/6,1/6,6/6,2/6,2/6,5/6,1/6,5/6,1/6,1/6 -============================ -input: -K20+6@4 -output: -SwordWorld : KeyNo.20c[4]+6 > 2D:[1,5 1,3 1,2]=6,4,3 > 4,2,1+6 > 2回転 > 13 -rand:1/6,5/6,1/6,3/6,1/6,2/6 -============================ -input: -K20+6@4 -output: -SwordWorld : KeyNo.20c[4]+6 > 2D:[5,5 6,3 4,4 4,4 6,5 2,2 5,6 2,3 6,3 5,3 1,5 5,5 1,3 6,3 4,3 1,1]=10,9,8,8,11,4,11,5,9,8,6,10,4,9,7,2 > 8,7,6,6,9,2,9,3,7,6,4,8,2,7,5,**+6 > 15回転 > 95 -rand:5/6,5/6,6/6,3/6,4/6,4/6,4/6,4/6,6/6,5/6,2/6,2/6,5/6,6/6,2/6,3/6,6/6,3/6,5/6,3/6,1/6,5/6,5/6,5/6,1/6,3/6,6/6,3/6,4/6,3/6,1/6,1/6 -============================ -input: -K20+6@4 -output: -SwordWorld : KeyNo.20c[4]+6 > 2D:[5,6 2,1]=11,3 > 9,1+6 > 1回転 > 16 -rand:5/6,6/6,2/6,1/6 -============================ -input: -K20+6@4 -output: -SwordWorld : KeyNo.20c[4]+6 > 2D:[1,1]=2 > ** > 自動的失敗 -rand:1/6,1/6 -============================ -input: -K20+6@4 -output: -SwordWorld : KeyNo.20c[4]+6 > 2D:[4,3 2,5 2,6 1,1]=7,7,8,2 > 5,5,6,**+6 > 3回転 > 22 -rand:4/6,3/6,2/6,5/6,2/6,6/6,1/6,1/6 -============================ -input: -K20+6@4 -output: -SwordWorld : KeyNo.20c[4]+6 > 2D:[1,1]=2 > ** > 自動的失敗 -rand:1/6,1/6 -============================ -input: -K20+6@4 -output: -SwordWorld : KeyNo.20c[4]+6 > 2D:[3,1 2,4 3,3 4,4 4,5 5,4 3,4 4,4 5,3 4,2 6,1 1,3 1,1]=4,6,6,8,9,9,7,8,8,6,7,4,2 > 2,4,4,6,7,7,5,6,6,4,5,2,**+6 > 12回転 > 64 -rand:3/6,1/6,2/6,4/6,3/6,3/6,4/6,4/6,4/6,5/6,5/6,4/6,3/6,4/6,4/6,4/6,5/6,3/6,4/6,2/6,6/6,1/6,1/6,3/6,1/6,1/6 -============================ -input: -K20+6@4 -output: -SwordWorld : KeyNo.20c[4]+6 > 2D:[3,6 1,2]=9,3 > 7,1+6 > 1回転 > 14 -rand:3/6,6/6,1/6,2/6 -============================ -input: -K20+6@4 -output: -SwordWorld : KeyNo.20c[4]+6 > 2D:[6,2 4,3 3,2 2,6 6,1 3,4 6,1 6,5 5,2 1,5 5,6 3,2 5,1 5,1 6,3 1,6 1,5 2,1]=8,7,5,8,7,7,7,11,7,6,11,5,6,6,9,7,6,3 > 6,5,3,6,5,5,5,9,5,4,9,3,4,4,7,5,4,1+6 > 17回転 > 96 -rand:6/6,2/6,4/6,3/6,3/6,2/6,2/6,6/6,6/6,1/6,3/6,4/6,6/6,1/6,6/6,5/6,5/6,2/6,1/6,5/6,5/6,6/6,3/6,2/6,5/6,1/6,5/6,1/6,6/6,3/6,1/6,6/6,1/6,5/6,2/6,1/6 -============================ -input: -K20+6@4 -output: -SwordWorld : KeyNo.20c[4]+6 > 2D:[3,2 6,2 2,3 4,1 5,4 1,3 3,2 3,1 2,1]=5,8,5,5,9,4,5,4,3 > 3,6,3,3,7,2,3,2,1+6 > 8回転 > 36 -rand:3/6,2/6,6/6,2/6,2/6,3/6,4/6,1/6,5/6,4/6,1/6,3/6,3/6,2/6,3/6,1/6,2/6,1/6 -============================ -input: -K14@9 -output: -SwordWorld : KeyNo.14c[9] > 2D:[2,2]=4 > 2 -rand:2/6,2/6 -============================ -input: -K14@9 -output: -SwordWorld : KeyNo.14c[9] > 2D:[6,4 3,5]=10,8 > 6,4 > 1回転 > 10 -rand:6/6,4/6,3/6,5/6 -============================ -input: -K14@9 -output: -SwordWorld : KeyNo.14c[9] > 2D:[1,6]=7 > 4 -rand:1/6,6/6 -============================ -input: -K14@9 -output: -SwordWorld : KeyNo.14c[9] > 2D:[1,4]=5 > 3 -rand:1/6,4/6 -============================ -input: -K14@9 -output: -SwordWorld : KeyNo.14c[9] > 2D:[4,1]=5 > 3 -rand:4/6,1/6 -============================ -input: -K14@9 -output: -SwordWorld : KeyNo.14c[9] > 2D:[1,2]=3 > 1 -rand:1/6,2/6 -============================ -input: -K14@9 -output: -SwordWorld : KeyNo.14c[9] > 2D:[3,2]=5 > 3 -rand:3/6,2/6 -============================ -input: -K14@9 -output: -SwordWorld : KeyNo.14c[9] > 2D:[6,2]=8 > 4 -rand:6/6,2/6 -============================ -input: -K14@9 -output: -SwordWorld : KeyNo.14c[9] > 2D:[3,6 3,3]=9,6 > 5,4 > 1回転 > 9 -rand:3/6,6/6,3/6,3/6 -============================ -input: -K14@9 -output: -SwordWorld : KeyNo.14c[9] > 2D:[4,4]=8 > 4 -rand:4/6,4/6 -============================ -input: -K9@3$12 -output: -SwordWorld : KeyNo.9c[3]m[12] > 2D:[4,4 4,4 2,1 6,4 5,6 6,6 6,5 2,2 1,5 5,3 2,2 3,5 6,3 5,1 1,2 2,5 6,1 5,5 4,5 6,1 5,2 6,6 3,4 1,2 1,2 2,1 1,5 2,1 4,4 6,1 1,1]=12,8,3,10,11,12,11,4,6,8,4,8,9,6,3,7,7,10,9,7,7,12,7,3,3,3,6,3,8,7,2 > 7,4,0,5,6,7,6,1,3,4,1,4,4,3,0,3,3,5,4,3,3,7,3,0,0,0,3,0,4,3,** > 30回転 > 96 -rand:4/6,4/6,4/6,4/6,2/6,1/6,6/6,4/6,5/6,6/6,6/6,6/6,6/6,5/6,2/6,2/6,1/6,5/6,5/6,3/6,2/6,2/6,3/6,5/6,6/6,3/6,5/6,1/6,1/6,2/6,2/6,5/6,6/6,1/6,5/6,5/6,4/6,5/6,6/6,1/6,5/6,2/6,6/6,6/6,3/6,4/6,1/6,2/6,1/6,2/6,2/6,1/6,1/6,5/6,2/6,1/6,4/6,4/6,6/6,1/6,1/6,1/6 -============================ -input: -K9@3$12 -output: -SwordWorld : KeyNo.9c[3]m[12] > 2D:[1,4 4,6 6,4 3,1 5,5 1,5 2,2 2,1 6,3 4,3 2,6 5,2 6,6 6,6 6,6 6,5 6,3 4,4 4,6 1,1]=12,10,10,4,10,6,4,3,9,7,8,7,12,12,12,11,9,8,10,2 > 7,5,5,1,5,3,1,0,4,3,4,3,7,7,7,6,4,4,5,** > 19回転 > 81 -rand:1/6,4/6,4/6,6/6,6/6,4/6,3/6,1/6,5/6,5/6,1/6,5/6,2/6,2/6,2/6,1/6,6/6,3/6,4/6,3/6,2/6,6/6,5/6,2/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,5/6,6/6,3/6,4/6,4/6,4/6,6/6,1/6,1/6 -============================ -input: -K9@3$12 -output: -SwordWorld : KeyNo.9c[3]m[12] > 2D:[5,1 5,5 5,5 6,3 4,2 6,1 2,3 4,6 6,4 1,3 4,2 4,4 3,1 6,3 1,2 3,5 1,5 6,6 3,3 5,5 5,5 4,6 1,2 5,5 1,1]=12,10,10,9,6,7,5,10,10,4,6,8,4,9,3,8,6,12,6,10,10,10,3,10,2 > 7,5,5,4,3,3,2,5,5,1,3,4,1,4,0,4,3,7,3,5,5,5,0,5,** > 24回転 > 89 -rand:5/6,1/6,5/6,5/6,5/6,5/6,6/6,3/6,4/6,2/6,6/6,1/6,2/6,3/6,4/6,6/6,6/6,4/6,1/6,3/6,4/6,2/6,4/6,4/6,3/6,1/6,6/6,3/6,1/6,2/6,3/6,5/6,1/6,5/6,6/6,6/6,3/6,3/6,5/6,5/6,5/6,5/6,4/6,6/6,1/6,2/6,5/6,5/6,1/6,1/6 -============================ -input: -K9@3$12 -output: -SwordWorld : KeyNo.9c[3]m[12] > 2D:[3,4 3,4 6,4 4,3 6,1 6,1 4,2 5,4 1,2 2,2 1,3 1,6 4,4 3,4 4,6 1,2 2,3 1,2 2,6 6,5 5,5 3,2 4,2 6,6 4,5 1,5 2,3 3,3 4,6 4,3 2,2 6,6 1,2 6,3 3,6 6,5 6,1 3,1 4,3 2,2 2,4 2,5 5,6 1,5 6,4 6,3 5,2 3,1 5,3 3,6 1,6 1,3 2,5 4,5 3,3 5,4 4,4 4,6 3,4 3,6 3,3 1,2 4,4 4,4 1,2 1,2 5,1 6,4 2,2 4,1 2,5 1,5 6,1 3,6 2,3 6,3 6,3 5,3 6,1 5,5 3,1 4,6 2,5 4,6 2,1 4,1 2,4 6,2 2,6 3,1 1,5 5,5 5,2 4,6 5,3 5,5 4,2 4,1 3,3 2,1 1,1]=12,7,10,7,7,7,6,9,3,4,4,7,8,7,10,3,5,3,8,11,10,5,6,12,9,6,5,6,10,7,4,12,3,9,9,11,7,4,7,4,6,7,11,6,10,9,7,4,8,9,7,4,7,9,6,9,8,10,7,9,6,3,8,8,3,3,6,10,4,5,7,6,7,9,5,9,9,8,7,10,4,10,7,10,3,5,6,8,8,4,6,10,7,10,8,10,6,5,6,3,2 > 7,3,5,3,3,3,3,4,0,1,1,3,4,3,5,0,2,0,4,6,5,2,3,7,4,3,2,3,5,3,1,7,0,4,4,6,3,1,3,1,3,3,6,3,5,4,3,1,4,4,3,1,3,4,3,4,4,5,3,4,3,0,4,4,0,0,3,5,1,2,3,3,3,4,2,4,4,4,3,5,1,5,3,5,0,2,3,4,4,1,3,5,3,5,4,5,3,2,3,0,** > 100回転 > 315 -rand:3/6,4/6,3/6,4/6,6/6,4/6,4/6,3/6,6/6,1/6,6/6,1/6,4/6,2/6,5/6,4/6,1/6,2/6,2/6,2/6,1/6,3/6,1/6,6/6,4/6,4/6,3/6,4/6,4/6,6/6,1/6,2/6,2/6,3/6,1/6,2/6,2/6,6/6,6/6,5/6,5/6,5/6,3/6,2/6,4/6,2/6,6/6,6/6,4/6,5/6,1/6,5/6,2/6,3/6,3/6,3/6,4/6,6/6,4/6,3/6,2/6,2/6,6/6,6/6,1/6,2/6,6/6,3/6,3/6,6/6,6/6,5/6,6/6,1/6,3/6,1/6,4/6,3/6,2/6,2/6,2/6,4/6,2/6,5/6,5/6,6/6,1/6,5/6,6/6,4/6,6/6,3/6,5/6,2/6,3/6,1/6,5/6,3/6,3/6,6/6,1/6,6/6,1/6,3/6,2/6,5/6,4/6,5/6,3/6,3/6,5/6,4/6,4/6,4/6,4/6,6/6,3/6,4/6,3/6,6/6,3/6,3/6,1/6,2/6,4/6,4/6,4/6,4/6,1/6,2/6,1/6,2/6,5/6,1/6,6/6,4/6,2/6,2/6,4/6,1/6,2/6,5/6,1/6,5/6,6/6,1/6,3/6,6/6,2/6,3/6,6/6,3/6,6/6,3/6,5/6,3/6,6/6,1/6,5/6,5/6,3/6,1/6,4/6,6/6,2/6,5/6,4/6,6/6,2/6,1/6,4/6,1/6,2/6,4/6,6/6,2/6,2/6,6/6,3/6,1/6,1/6,5/6,5/6,5/6,5/6,2/6,4/6,6/6,5/6,3/6,5/6,5/6,4/6,2/6,4/6,1/6,3/6,3/6,2/6,1/6,1/6,1/6 -============================ -input: -K9@3$12 -output: -SwordWorld : KeyNo.9c[3]m[12] > 2D:[6,2 1,1]=12,2 > 7,** > 1回転 > 7 -rand:6/6,2/6,1/6,1/6 -============================ -input: -K9@3$12 -output: -SwordWorld : KeyNo.9c[3]m[12] > 2D:[5,4 5,3 4,2 2,1 6,5 4,1 3,4 2,2 6,1 6,1 4,6 2,2 1,1]=12,8,6,3,11,5,7,4,7,7,10,4,2 > 7,4,3,0,6,2,3,1,3,3,5,1,** > 12回転 > 38 -rand:5/6,4/6,5/6,3/6,4/6,2/6,2/6,1/6,6/6,5/6,4/6,1/6,3/6,4/6,2/6,2/6,6/6,1/6,6/6,1/6,4/6,6/6,2/6,2/6,1/6,1/6 -============================ -input: -K9@3$12 -output: -SwordWorld : KeyNo.9c[3]m[12] > 2D:[1,5 6,4 6,3 6,6 1,5 3,5 2,5 5,3 3,3 1,2 5,3 5,1 3,2 5,6 5,6 6,1 5,6 5,4 6,1 6,3 4,1 5,6 2,2 6,2 1,5 3,2 2,5 3,4 2,1 6,6 5,4 6,5 4,2 2,5 4,2 6,4 2,4 6,1 3,1 3,1 5,5 3,1 6,2 2,5 3,1 5,1 2,1 4,6 3,4 5,1 2,3 2,6 5,5 3,6 1,4 6,5 6,4 3,4 6,3 2,2 1,5 6,4 2,4 5,4 1,4 5,5 6,6 4,6 2,5 3,1 4,3 2,4 5,1 2,5 2,3 5,3 1,6 6,2 3,5 2,2 5,2 1,1]=12,10,9,12,6,8,7,8,6,3,8,6,5,11,11,7,11,9,7,9,5,11,4,8,6,5,7,7,3,12,9,11,6,7,6,10,6,7,4,4,10,4,8,7,4,6,3,10,7,6,5,8,10,9,5,11,10,7,9,4,6,10,6,9,5,10,12,10,7,4,7,6,6,7,5,8,7,8,8,4,7,2 > 7,5,4,7,3,4,3,4,3,0,4,3,2,6,6,3,6,4,3,4,2,6,1,4,3,2,3,3,0,7,4,6,3,3,3,5,3,3,1,1,5,1,4,3,1,3,0,5,3,3,2,4,5,4,2,6,5,3,4,1,3,5,3,4,2,5,7,5,3,1,3,3,3,3,2,4,3,4,4,1,3,** > 81回転 > 279 -rand:1/6,5/6,6/6,4/6,6/6,3/6,6/6,6/6,1/6,5/6,3/6,5/6,2/6,5/6,5/6,3/6,3/6,3/6,1/6,2/6,5/6,3/6,5/6,1/6,3/6,2/6,5/6,6/6,5/6,6/6,6/6,1/6,5/6,6/6,5/6,4/6,6/6,1/6,6/6,3/6,4/6,1/6,5/6,6/6,2/6,2/6,6/6,2/6,1/6,5/6,3/6,2/6,2/6,5/6,3/6,4/6,2/6,1/6,6/6,6/6,5/6,4/6,6/6,5/6,4/6,2/6,2/6,5/6,4/6,2/6,6/6,4/6,2/6,4/6,6/6,1/6,3/6,1/6,3/6,1/6,5/6,5/6,3/6,1/6,6/6,2/6,2/6,5/6,3/6,1/6,5/6,1/6,2/6,1/6,4/6,6/6,3/6,4/6,5/6,1/6,2/6,3/6,2/6,6/6,5/6,5/6,3/6,6/6,1/6,4/6,6/6,5/6,6/6,4/6,3/6,4/6,6/6,3/6,2/6,2/6,1/6,5/6,6/6,4/6,2/6,4/6,5/6,4/6,1/6,4/6,5/6,5/6,6/6,6/6,4/6,6/6,2/6,5/6,3/6,1/6,4/6,3/6,2/6,4/6,5/6,1/6,2/6,5/6,2/6,3/6,5/6,3/6,1/6,6/6,6/6,2/6,3/6,5/6,2/6,2/6,5/6,2/6,1/6,1/6 -============================ -input: -K9@3$12 -output: -SwordWorld : KeyNo.9c[3]m[12] > 2D:[1,2 2,5 1,6 3,3 5,1 5,6 2,5 1,6 2,2 1,4 6,6 1,5 6,2 2,4 4,2 3,1 1,5 1,6 4,4 3,3 3,2 1,5 1,2 4,5 5,5 4,5 6,4 1,5 4,4 3,3 5,4 4,3 6,6 5,3 1,2 4,4 3,3 4,2 1,1]=12,7,7,6,6,11,7,7,4,5,12,6,8,6,6,4,6,7,8,6,5,6,3,9,10,9,10,6,8,6,9,7,12,8,3,8,6,6,2 > 7,3,3,3,3,6,3,3,1,2,7,3,4,3,3,1,3,3,4,3,2,3,0,4,5,4,5,3,4,3,4,3,7,4,0,4,3,3,** > 38回転 > 129 -rand:1/6,2/6,2/6,5/6,1/6,6/6,3/6,3/6,5/6,1/6,5/6,6/6,2/6,5/6,1/6,6/6,2/6,2/6,1/6,4/6,6/6,6/6,1/6,5/6,6/6,2/6,2/6,4/6,4/6,2/6,3/6,1/6,1/6,5/6,1/6,6/6,4/6,4/6,3/6,3/6,3/6,2/6,1/6,5/6,1/6,2/6,4/6,5/6,5/6,5/6,4/6,5/6,6/6,4/6,1/6,5/6,4/6,4/6,3/6,3/6,5/6,4/6,4/6,3/6,6/6,6/6,5/6,3/6,1/6,2/6,4/6,4/6,3/6,3/6,4/6,2/6,1/6,1/6 -============================ -input: -K9@3$12 -output: -SwordWorld : KeyNo.9c[3]m[12] > 2D:[5,2 6,6 4,4 6,2 5,2 6,3 6,2 1,2 5,5 1,2 6,3 4,2 4,1 5,2 3,5 4,3 1,4 6,6 2,6 3,1 5,2 1,3 1,3 1,1]=12,12,8,8,7,9,8,3,10,3,9,6,5,7,8,7,5,12,8,4,7,4,4,2 > 7,7,4,4,3,4,4,0,5,0,4,3,2,3,4,3,2,7,4,1,3,1,1,** > 23回転 > 76 -rand:5/6,2/6,6/6,6/6,4/6,4/6,6/6,2/6,5/6,2/6,6/6,3/6,6/6,2/6,1/6,2/6,5/6,5/6,1/6,2/6,6/6,3/6,4/6,2/6,4/6,1/6,5/6,2/6,3/6,5/6,4/6,3/6,1/6,4/6,6/6,6/6,2/6,6/6,3/6,1/6,5/6,2/6,1/6,3/6,1/6,3/6,1/6,1/6 -============================ -input: -K9@3$12 -output: -SwordWorld : KeyNo.9c[3]m[12] > 2D:[3,3 5,4 2,3 4,1 5,4 1,4 6,5 4,2 3,1 5,5 4,5 4,3 4,5 1,2 1,5 4,1 5,4 6,2 2,2 3,2 3,1 3,6 2,3 4,1 6,4 2,4 4,4 2,2 5,1 3,6 1,3 5,2 2,1 2,5 2,5 1,2 4,5 4,2 1,5 2,1 2,2 6,2 1,1]=12,9,5,5,9,5,11,6,4,10,9,7,9,3,6,5,9,8,4,5,4,9,5,5,10,6,8,4,6,9,4,7,3,7,7,3,9,6,6,3,4,8,2 > 7,4,2,2,4,2,6,3,1,5,4,3,4,0,3,2,4,4,1,2,1,4,2,2,5,3,4,1,3,4,1,3,0,3,3,0,4,3,3,0,1,4,** > 42回転 > 117 -rand:3/6,3/6,5/6,4/6,2/6,3/6,4/6,1/6,5/6,4/6,1/6,4/6,6/6,5/6,4/6,2/6,3/6,1/6,5/6,5/6,4/6,5/6,4/6,3/6,4/6,5/6,1/6,2/6,1/6,5/6,4/6,1/6,5/6,4/6,6/6,2/6,2/6,2/6,3/6,2/6,3/6,1/6,3/6,6/6,2/6,3/6,4/6,1/6,6/6,4/6,2/6,4/6,4/6,4/6,2/6,2/6,5/6,1/6,3/6,6/6,1/6,3/6,5/6,2/6,2/6,1/6,2/6,5/6,2/6,5/6,1/6,2/6,4/6,5/6,4/6,2/6,1/6,5/6,2/6,1/6,2/6,2/6,6/6,2/6,1/6,1/6 -============================ -input: -K9@3+1$10 -output: -SwordWorld : KeyNo.9c[3]m[10]+1 > 2D:[6,1 4,5 2,5 5,4 3,5 5,3 4,6 5,3 6,5 3,6 2,1 5,3 1,3 4,2 3,3 5,2 4,2 3,1 2,5 2,1 2,4 3,3 1,4 5,5 2,2 6,6 3,3 6,2 2,5 2,3 6,5 2,1 2,6 4,5 6,6 1,6 3,6 6,1 1,1]=10,9,7,9,8,8,10,8,11,9,3,8,4,6,6,7,6,4,7,3,6,6,5,10,4,12,6,8,7,5,11,3,8,9,12,7,9,7,2 > 5,4,3,4,4,4,5,4,6,4,0,4,1,3,3,3,3,1,3,0,3,3,2,5,1,7,3,4,3,2,6,0,4,4,7,3,4,3,**+1 > 38回転 > 129 -rand:6/6,1/6,4/6,5/6,2/6,5/6,5/6,4/6,3/6,5/6,5/6,3/6,4/6,6/6,5/6,3/6,6/6,5/6,3/6,6/6,2/6,1/6,5/6,3/6,1/6,3/6,4/6,2/6,3/6,3/6,5/6,2/6,4/6,2/6,3/6,1/6,2/6,5/6,2/6,1/6,2/6,4/6,3/6,3/6,1/6,4/6,5/6,5/6,2/6,2/6,6/6,6/6,3/6,3/6,6/6,2/6,2/6,5/6,2/6,3/6,6/6,5/6,2/6,1/6,2/6,6/6,4/6,5/6,6/6,6/6,1/6,6/6,3/6,6/6,6/6,1/6,1/6,1/6 -============================ -input: -K9@3+1$10 -output: -SwordWorld : KeyNo.9c[3]m[10]+1 > 2D:[3,4 6,2 1,1]=10,8,2 > 5,4,**+1 > 2回転 > 10 -rand:3/6,4/6,6/6,2/6,1/6,1/6 -============================ -input: -K9@3+1$10 -output: -SwordWorld : KeyNo.9c[3]m[10]+1 > 2D:[6,1 2,2 5,1 2,2 2,5 3,3 3,4 6,3 4,5 2,1 5,5 4,3 5,3 6,1 5,5 4,3 2,6 3,4 4,2 4,3 5,5 3,5 6,6 4,5 5,3 6,1 1,2 4,3 1,2 1,5 3,6 1,1]=10,4,6,4,7,6,7,9,9,3,10,7,8,7,10,7,8,7,6,7,10,8,12,9,8,7,3,7,3,6,9,2 > 5,1,3,1,3,3,3,4,4,0,5,3,4,3,5,3,4,3,3,3,5,4,7,4,4,3,0,3,0,3,4,**+1 > 31回転 > 101 -rand:6/6,1/6,2/6,2/6,5/6,1/6,2/6,2/6,2/6,5/6,3/6,3/6,3/6,4/6,6/6,3/6,4/6,5/6,2/6,1/6,5/6,5/6,4/6,3/6,5/6,3/6,6/6,1/6,5/6,5/6,4/6,3/6,2/6,6/6,3/6,4/6,4/6,2/6,4/6,3/6,5/6,5/6,3/6,5/6,6/6,6/6,4/6,5/6,5/6,3/6,6/6,1/6,1/6,2/6,4/6,3/6,1/6,2/6,1/6,5/6,3/6,6/6,1/6,1/6 -============================ -input: -K9@3+1$10 -output: -SwordWorld : KeyNo.9c[3]m[10]+1 > 2D:[3,6 6,2 2,2 3,5 1,6 5,3 6,5 3,6 1,5 1,6 6,6 6,4 4,3 5,3 2,6 2,2 3,5 2,5 2,6 3,4 2,3 6,4 2,2 2,1 4,4 5,3 6,5 6,1 1,5 5,5 3,2 5,6 3,4 5,5 2,3 1,4 4,6 6,1 4,3 6,6 1,1]=10,8,4,8,7,8,11,9,6,7,12,10,7,8,8,4,8,7,8,7,5,10,4,3,8,8,11,7,6,10,5,11,7,10,5,5,10,7,7,12,2 > 5,4,1,4,3,4,6,4,3,3,7,5,3,4,4,1,4,3,4,3,2,5,1,0,4,4,6,3,3,5,2,6,3,5,2,2,5,3,3,7,**+1 > 40回転 > 147 -rand:3/6,6/6,6/6,2/6,2/6,2/6,3/6,5/6,1/6,6/6,5/6,3/6,6/6,5/6,3/6,6/6,1/6,5/6,1/6,6/6,6/6,6/6,6/6,4/6,4/6,3/6,5/6,3/6,2/6,6/6,2/6,2/6,3/6,5/6,2/6,5/6,2/6,6/6,3/6,4/6,2/6,3/6,6/6,4/6,2/6,2/6,2/6,1/6,4/6,4/6,5/6,3/6,6/6,5/6,6/6,1/6,1/6,5/6,5/6,5/6,3/6,2/6,5/6,6/6,3/6,4/6,5/6,5/6,2/6,3/6,1/6,4/6,4/6,6/6,6/6,1/6,4/6,3/6,6/6,6/6,1/6,1/6 -============================ -input: -K9@3+1$10 -output: -SwordWorld : KeyNo.9c[3]m[10]+1 > 2D:[2,6 5,6 1,3 5,1 5,3 2,6 5,5 4,3 5,2 1,5 5,1 4,4 5,4 3,6 6,2 6,2 1,2 3,6 6,3 5,2 1,4 3,3 6,3 5,2 2,3 4,6 2,5 3,6 5,3 1,3 5,1 1,6 1,1]=10,11,4,6,8,8,10,7,7,6,6,8,9,9,8,8,3,9,9,7,5,6,9,7,5,10,7,9,8,4,6,7,2 > 5,6,1,3,4,4,5,3,3,3,3,4,4,4,4,4,0,4,4,3,2,3,4,3,2,5,3,4,4,1,3,3,**+1 > 32回転 > 109 -rand:2/6,6/6,5/6,6/6,1/6,3/6,5/6,1/6,5/6,3/6,2/6,6/6,5/6,5/6,4/6,3/6,5/6,2/6,1/6,5/6,5/6,1/6,4/6,4/6,5/6,4/6,3/6,6/6,6/6,2/6,6/6,2/6,1/6,2/6,3/6,6/6,6/6,3/6,5/6,2/6,1/6,4/6,3/6,3/6,6/6,3/6,5/6,2/6,2/6,3/6,4/6,6/6,2/6,5/6,3/6,6/6,5/6,3/6,1/6,3/6,5/6,1/6,1/6,6/6,1/6,1/6 -============================ -input: -K9@3+1$10 -output: -SwordWorld : KeyNo.9c[3]m[10]+1 > 2D:[6,1 4,4 2,3 3,3 4,5 1,1]=10,8,5,6,9,2 > 5,4,2,3,4,**+1 > 5回転 > 19 -rand:6/6,1/6,4/6,4/6,2/6,3/6,3/6,3/6,4/6,5/6,1/6,1/6 -============================ -input: -K9@3+1$10 -output: -SwordWorld : KeyNo.9c[3]m[10]+1 > 2D:[2,1 3,6 1,1]=10,9,2 > 5,4,**+1 > 2回転 > 10 -rand:2/6,1/6,3/6,6/6,1/6,1/6 -============================ -input: -K9@3+1$10 -output: -SwordWorld : KeyNo.9c[3]m[10]+1 > 2D:[3,3 1,2 4,1 5,5 1,1]=10,3,5,10,2 > 5,0,2,5,**+1 > 4回転 > 13 -rand:3/6,3/6,1/6,2/6,4/6,1/6,5/6,5/6,1/6,1/6 -============================ -input: -K9@3+1$10 -output: -SwordWorld : KeyNo.9c[3]m[10]+1 > 2D:[4,3 3,4 2,4 1,4 2,3 2,6 5,5 5,4 1,1]=10,7,6,5,5,8,10,9,2 > 5,3,3,2,2,4,5,4,**+1 > 8回転 > 29 -rand:4/6,3/6,3/6,4/6,2/6,4/6,1/6,4/6,2/6,3/6,2/6,6/6,5/6,5/6,5/6,4/6,1/6,1/6 -============================ -input: -K9@3+1$10 -output: -SwordWorld : KeyNo.9c[3]m[10]+1 > 2D:[2,3 5,3 4,1 1,2 2,3 1,6 6,6 3,5 6,3 3,1 6,5 5,1 4,3 5,3 5,2 1,3 5,2 1,5 1,3 6,2 2,2 2,2 6,2 6,6 4,2 1,5 4,1 2,5 5,5 6,4 1,2 3,1 3,3 5,5 6,5 3,5 3,2 4,6 5,6 5,3 6,1 5,2 2,2 2,1 5,5 4,2 4,3 3,3 1,2 2,2 3,4 6,3 2,4 4,6 1,6 1,1]=10,8,5,3,5,7,12,8,9,4,11,6,7,8,7,4,7,6,4,8,4,4,8,12,6,6,5,7,10,10,3,4,6,10,11,8,5,10,11,8,7,7,4,3,10,6,7,6,3,4,7,9,6,10,7,2 > 5,4,2,0,2,3,7,4,4,1,6,3,3,4,3,1,3,3,1,4,1,1,4,7,3,3,2,3,5,5,0,1,3,5,6,4,2,5,6,4,3,3,1,0,5,3,3,3,0,1,3,4,3,5,3,**+1 > 55回転 > 174 -rand:2/6,3/6,5/6,3/6,4/6,1/6,1/6,2/6,2/6,3/6,1/6,6/6,6/6,6/6,3/6,5/6,6/6,3/6,3/6,1/6,6/6,5/6,5/6,1/6,4/6,3/6,5/6,3/6,5/6,2/6,1/6,3/6,5/6,2/6,1/6,5/6,1/6,3/6,6/6,2/6,2/6,2/6,2/6,2/6,6/6,2/6,6/6,6/6,4/6,2/6,1/6,5/6,4/6,1/6,2/6,5/6,5/6,5/6,6/6,4/6,1/6,2/6,3/6,1/6,3/6,3/6,5/6,5/6,6/6,5/6,3/6,5/6,3/6,2/6,4/6,6/6,5/6,6/6,5/6,3/6,6/6,1/6,5/6,2/6,2/6,2/6,2/6,1/6,5/6,5/6,4/6,2/6,4/6,3/6,3/6,3/6,1/6,2/6,2/6,2/6,3/6,4/6,6/6,3/6,2/6,4/6,4/6,6/6,1/6,6/6,1/6,1/6 -============================ -input: -K9@3-1$12 -output: -SwordWorld : KeyNo.9c[3]m[12]-1 > 2D:[5,2 3,5 4,2 1,3 5,5 2,2 2,4 3,4 3,5 6,5 2,4 6,6 2,4 5,1 3,3 1,3 4,2 1,2 4,1 6,6 4,2 3,1 3,5 6,5 5,1 3,2 5,5 1,6 5,1 5,1 5,2 3,4 6,6 6,5 2,1 4,4 6,1 1,1]=12,8,6,4,10,4,6,7,8,11,6,12,6,6,6,4,6,3,5,12,6,4,8,11,6,5,10,7,6,6,7,7,12,11,3,8,7,2 > 7,4,3,1,5,1,3,3,4,6,3,7,3,3,3,1,3,0,2,7,3,1,4,6,3,2,5,3,3,3,3,3,7,6,0,4,3,**-1 > 37回転 > 127 -rand:5/6,2/6,3/6,5/6,4/6,2/6,1/6,3/6,5/6,5/6,2/6,2/6,2/6,4/6,3/6,4/6,3/6,5/6,6/6,5/6,2/6,4/6,6/6,6/6,2/6,4/6,5/6,1/6,3/6,3/6,1/6,3/6,4/6,2/6,1/6,2/6,4/6,1/6,6/6,6/6,4/6,2/6,3/6,1/6,3/6,5/6,6/6,5/6,5/6,1/6,3/6,2/6,5/6,5/6,1/6,6/6,5/6,1/6,5/6,1/6,5/6,2/6,3/6,4/6,6/6,6/6,6/6,5/6,2/6,1/6,4/6,4/6,6/6,1/6,1/6,1/6 -============================ -input: -K9@3-1$12 -output: -SwordWorld : KeyNo.9c[3]m[12]-1 > 2D:[6,6 1,3 5,6 2,3 2,4 6,5 6,4 4,4 6,2 3,5 6,4 6,2 5,3 1,4 4,3 2,1 1,3 2,4 4,5 5,3 6,4 6,3 1,1]=12,4,11,5,6,11,10,8,8,8,10,8,8,5,7,3,4,6,9,8,10,9,2 > 7,1,6,2,3,6,5,4,4,4,5,4,4,2,3,0,1,3,4,4,5,4,**-1 > 22回転 > 80 -rand:6/6,6/6,1/6,3/6,5/6,6/6,2/6,3/6,2/6,4/6,6/6,5/6,6/6,4/6,4/6,4/6,6/6,2/6,3/6,5/6,6/6,4/6,6/6,2/6,5/6,3/6,1/6,4/6,4/6,3/6,2/6,1/6,1/6,3/6,2/6,4/6,4/6,5/6,5/6,3/6,6/6,4/6,6/6,3/6,1/6,1/6 -============================ -input: -K9@3-1$12 -output: -SwordWorld : KeyNo.9c[3]m[12]-1 > 2D:[1,5 4,4 5,4 2,3 1,2 1,3 5,2 3,3 6,4 3,5 6,5 3,2 2,5 6,5 4,4 2,3 5,1 3,4 4,1 5,3 3,2 5,1 1,5 4,6 3,1 1,5 6,3 3,6 5,3 2,6 4,6 3,5 6,1 6,3 5,5 4,3 3,1 6,2 3,3 5,5 1,5 4,3 6,5 6,2 6,3 6,1 1,2 3,5 6,1 2,3 2,1 6,5 2,3 5,3 6,3 2,2 5,5 5,4 2,3 3,3 5,5 4,3 5,3 1,3 4,3 1,4 6,3 3,6 4,6 2,2 6,1 2,5 6,1 5,3 5,4 6,2 4,2 3,2 2,2 1,5 4,6 3,6 6,3 6,5 2,4 3,3 1,6 6,2 5,3 2,2 6,1 3,4 4,2 3,5 4,5 1,2 6,5 3,5 1,3 2,3 2,5 1,3 6,3 2,4 1,5 3,1 3,2 2,5 2,4 5,4 3,4 4,4 6,6 1,5 1,6 1,2 2,5 1,2 3,4 3,2 2,5 6,5 4,4 2,3 2,3 4,4 4,6 6,5 6,5 4,6 6,5 5,1 6,1 6,2 5,3 1,5 4,3 2,6 3,6 4,2 3,5 2,5 5,4 5,6 1,6 3,3 5,3 5,4 2,1 3,6 5,6 2,2 4,3 1,4 5,4 6,2 4,6 1,5 5,4 6,5 1,6 5,4 1,2 3,2 1,1]=12,8,9,5,3,4,7,6,10,8,11,5,7,11,8,5,6,7,5,8,5,6,6,10,4,6,9,9,8,8,10,8,7,9,10,7,4,8,6,10,6,7,11,8,9,7,3,8,7,5,3,11,5,8,9,4,10,9,5,6,10,7,8,4,7,5,9,9,10,4,7,7,7,8,9,8,6,5,4,6,10,9,9,11,6,6,7,8,8,4,7,7,6,8,9,3,11,8,4,5,7,4,9,6,6,4,5,7,6,9,7,8,12,6,7,3,7,3,7,5,7,11,8,5,5,8,10,11,11,10,11,6,7,8,8,6,7,8,9,6,8,7,9,11,7,6,8,9,3,9,11,4,7,5,9,8,10,6,9,11,7,9,3,5,2 > 7,4,4,2,0,1,3,3,5,4,6,2,3,6,4,2,3,3,2,4,2,3,3,5,1,3,4,4,4,4,5,4,3,4,5,3,1,4,3,5,3,3,6,4,4,3,0,4,3,2,0,6,2,4,4,1,5,4,2,3,5,3,4,1,3,2,4,4,5,1,3,3,3,4,4,4,3,2,1,3,5,4,4,6,3,3,3,4,4,1,3,3,3,4,4,0,6,4,1,2,3,1,4,3,3,1,2,3,3,4,3,4,7,3,3,0,3,0,3,2,3,6,4,2,2,4,5,6,6,5,6,3,3,4,4,3,3,4,4,3,4,3,4,6,3,3,4,4,0,4,6,1,3,2,4,4,5,3,4,6,3,4,0,2,**-1 > 164回転 > 546 -rand:1/6,5/6,4/6,4/6,5/6,4/6,2/6,3/6,1/6,2/6,1/6,3/6,5/6,2/6,3/6,3/6,6/6,4/6,3/6,5/6,6/6,5/6,3/6,2/6,2/6,5/6,6/6,5/6,4/6,4/6,2/6,3/6,5/6,1/6,3/6,4/6,4/6,1/6,5/6,3/6,3/6,2/6,5/6,1/6,1/6,5/6,4/6,6/6,3/6,1/6,1/6,5/6,6/6,3/6,3/6,6/6,5/6,3/6,2/6,6/6,4/6,6/6,3/6,5/6,6/6,1/6,6/6,3/6,5/6,5/6,4/6,3/6,3/6,1/6,6/6,2/6,3/6,3/6,5/6,5/6,1/6,5/6,4/6,3/6,6/6,5/6,6/6,2/6,6/6,3/6,6/6,1/6,1/6,2/6,3/6,5/6,6/6,1/6,2/6,3/6,2/6,1/6,6/6,5/6,2/6,3/6,5/6,3/6,6/6,3/6,2/6,2/6,5/6,5/6,5/6,4/6,2/6,3/6,3/6,3/6,5/6,5/6,4/6,3/6,5/6,3/6,1/6,3/6,4/6,3/6,1/6,4/6,6/6,3/6,3/6,6/6,4/6,6/6,2/6,2/6,6/6,1/6,2/6,5/6,6/6,1/6,5/6,3/6,5/6,4/6,6/6,2/6,4/6,2/6,3/6,2/6,2/6,2/6,1/6,5/6,4/6,6/6,3/6,6/6,6/6,3/6,6/6,5/6,2/6,4/6,3/6,3/6,1/6,6/6,6/6,2/6,5/6,3/6,2/6,2/6,6/6,1/6,3/6,4/6,4/6,2/6,3/6,5/6,4/6,5/6,1/6,2/6,6/6,5/6,3/6,5/6,1/6,3/6,2/6,3/6,2/6,5/6,1/6,3/6,6/6,3/6,2/6,4/6,1/6,5/6,3/6,1/6,3/6,2/6,2/6,5/6,2/6,4/6,5/6,4/6,3/6,4/6,4/6,4/6,6/6,6/6,1/6,5/6,1/6,6/6,1/6,2/6,2/6,5/6,1/6,2/6,3/6,4/6,3/6,2/6,2/6,5/6,6/6,5/6,4/6,4/6,2/6,3/6,2/6,3/6,4/6,4/6,4/6,6/6,6/6,5/6,6/6,5/6,4/6,6/6,6/6,5/6,5/6,1/6,6/6,1/6,6/6,2/6,5/6,3/6,1/6,5/6,4/6,3/6,2/6,6/6,3/6,6/6,4/6,2/6,3/6,5/6,2/6,5/6,5/6,4/6,5/6,6/6,1/6,6/6,3/6,3/6,5/6,3/6,5/6,4/6,2/6,1/6,3/6,6/6,5/6,6/6,2/6,2/6,4/6,3/6,1/6,4/6,5/6,4/6,6/6,2/6,4/6,6/6,1/6,5/6,5/6,4/6,6/6,5/6,1/6,6/6,5/6,4/6,1/6,2/6,3/6,2/6,1/6,1/6 -============================ -input: -K9@3-1$12 -output: -SwordWorld : KeyNo.9c[3]m[12]-1 > 2D:[5,6 6,6 3,4 1,6 5,1 5,3 4,1 1,6 4,1 2,1 4,6 6,6 5,3 6,3 1,3 5,3 4,4 5,5 2,3 6,5 5,3 6,1 3,2 6,2 2,5 6,6 1,5 2,1 3,5 2,2 5,1 3,6 6,1 6,2 2,3 6,1 3,2 2,2 6,4 3,6 4,2 6,4 2,3 3,4 6,2 3,5 4,2 6,5 2,2 6,6 6,5 2,5 5,6 5,5 5,4 4,3 1,4 2,5 5,6 3,1 6,1 6,3 3,3 3,5 3,5 2,2 3,4 3,6 6,5 5,2 1,3 5,5 6,2 1,6 4,5 5,3 3,4 2,1 2,6 2,2 5,1 4,1 6,4 5,3 5,5 4,5 4,2 1,4 4,6 1,2 2,4 6,2 6,4 1,5 6,6 6,1 6,3 2,2 4,5 6,5 3,5 5,5 2,6 3,1 5,1 4,5 4,4 5,5 1,5 3,2 6,3 6,5 5,6 5,2 5,6 5,6 3,3 1,3 2,5 6,5 1,2 5,5 5,5 6,4 3,4 1,3 6,2 1,1]=12,12,7,7,6,8,5,7,5,3,10,12,8,9,4,8,8,10,5,11,8,7,5,8,7,12,6,3,8,4,6,9,7,8,5,7,5,4,10,9,6,10,5,7,8,8,6,11,4,12,11,7,11,10,9,7,5,7,11,4,7,9,6,8,8,4,7,9,11,7,4,10,8,7,9,8,7,3,8,4,6,5,10,8,10,9,6,5,10,3,6,8,10,6,12,7,9,4,9,11,8,10,8,4,6,9,8,10,6,5,9,11,11,7,11,11,6,4,7,11,3,10,10,10,7,4,8,2 > 7,7,3,3,3,4,2,3,2,0,5,7,4,4,1,4,4,5,2,6,4,3,2,4,3,7,3,0,4,1,3,4,3,4,2,3,2,1,5,4,3,5,2,3,4,4,3,6,1,7,6,3,6,5,4,3,2,3,6,1,3,4,3,4,4,1,3,4,6,3,1,5,4,3,4,4,3,0,4,1,3,2,5,4,5,4,3,2,5,0,3,4,5,3,7,3,4,1,4,6,4,5,4,1,3,4,4,5,3,2,4,6,6,3,6,6,3,1,3,6,0,5,5,5,3,1,4,**-1 > 127回転 > 453 -rand:5/6,6/6,6/6,6/6,3/6,4/6,1/6,6/6,5/6,1/6,5/6,3/6,4/6,1/6,1/6,6/6,4/6,1/6,2/6,1/6,4/6,6/6,6/6,6/6,5/6,3/6,6/6,3/6,1/6,3/6,5/6,3/6,4/6,4/6,5/6,5/6,2/6,3/6,6/6,5/6,5/6,3/6,6/6,1/6,3/6,2/6,6/6,2/6,2/6,5/6,6/6,6/6,1/6,5/6,2/6,1/6,3/6,5/6,2/6,2/6,5/6,1/6,3/6,6/6,6/6,1/6,6/6,2/6,2/6,3/6,6/6,1/6,3/6,2/6,2/6,2/6,6/6,4/6,3/6,6/6,4/6,2/6,6/6,4/6,2/6,3/6,3/6,4/6,6/6,2/6,3/6,5/6,4/6,2/6,6/6,5/6,2/6,2/6,6/6,6/6,6/6,5/6,2/6,5/6,5/6,6/6,5/6,5/6,5/6,4/6,4/6,3/6,1/6,4/6,2/6,5/6,5/6,6/6,3/6,1/6,6/6,1/6,6/6,3/6,3/6,3/6,3/6,5/6,3/6,5/6,2/6,2/6,3/6,4/6,3/6,6/6,6/6,5/6,5/6,2/6,1/6,3/6,5/6,5/6,6/6,2/6,1/6,6/6,4/6,5/6,5/6,3/6,3/6,4/6,2/6,1/6,2/6,6/6,2/6,2/6,5/6,1/6,4/6,1/6,6/6,4/6,5/6,3/6,5/6,5/6,4/6,5/6,4/6,2/6,1/6,4/6,4/6,6/6,1/6,2/6,2/6,4/6,6/6,2/6,6/6,4/6,1/6,5/6,6/6,6/6,6/6,1/6,6/6,3/6,2/6,2/6,4/6,5/6,6/6,5/6,3/6,5/6,5/6,5/6,2/6,6/6,3/6,1/6,5/6,1/6,4/6,5/6,4/6,4/6,5/6,5/6,1/6,5/6,3/6,2/6,6/6,3/6,6/6,5/6,5/6,6/6,5/6,2/6,5/6,6/6,5/6,6/6,3/6,3/6,1/6,3/6,2/6,5/6,6/6,5/6,1/6,2/6,5/6,5/6,5/6,5/6,6/6,4/6,3/6,4/6,1/6,3/6,6/6,2/6,1/6,1/6 -============================ -input: -K9@3-1$12 -output: -SwordWorld : KeyNo.9c[3]m[12]-1 > 2D:[1,3 5,6 6,5 1,1]=12,11,11,2 > 7,6,6,**-1 > 3回転 > 18 -rand:1/6,3/6,5/6,6/6,6/6,5/6,1/6,1/6 -============================ -input: -K9@3-1$12 -output: -SwordWorld : KeyNo.9c[3]m[12]-1 > 2D:[6,1 3,4 4,4 2,6 5,5 6,5 3,1 4,1 3,3 4,1 3,6 3,4 4,2 5,1 2,6 1,2 6,5 5,2 3,1 4,3 2,3 4,5 5,1 6,5 2,2 6,2 6,3 6,1 4,1 6,4 2,3 1,1]=12,7,8,8,10,11,4,5,6,5,9,7,6,6,8,3,11,7,4,7,5,9,6,11,4,8,9,7,5,10,5,2 > 7,3,4,4,5,6,1,2,3,2,4,3,3,3,4,0,6,3,1,3,2,4,3,6,1,4,4,3,2,5,2,**-1 > 31回転 > 102 -rand:6/6,1/6,3/6,4/6,4/6,4/6,2/6,6/6,5/6,5/6,6/6,5/6,3/6,1/6,4/6,1/6,3/6,3/6,4/6,1/6,3/6,6/6,3/6,4/6,4/6,2/6,5/6,1/6,2/6,6/6,1/6,2/6,6/6,5/6,5/6,2/6,3/6,1/6,4/6,3/6,2/6,3/6,4/6,5/6,5/6,1/6,6/6,5/6,2/6,2/6,6/6,2/6,6/6,3/6,6/6,1/6,4/6,1/6,6/6,4/6,2/6,3/6,1/6,1/6 -============================ -input: -K9@3-1$12 -output: -SwordWorld : KeyNo.9c[3]m[12]-1 > 2D:[4,4 2,2 1,4 5,2 6,1 6,2 6,2 2,6 2,1 6,6 3,3 6,2 5,6 1,2 5,4 2,3 5,2 2,4 1,4 4,2 5,2 1,5 6,3 6,2 3,2 6,1 3,2 5,2 3,5 3,6 2,6 2,1 1,2 3,3 2,5 6,5 6,2 5,4 1,6 5,3 1,2 1,6 6,6 6,2 5,2 3,5 2,2 6,6 5,5 1,4 1,1]=12,4,5,7,7,8,8,8,3,12,6,8,11,3,9,5,7,6,5,6,7,6,9,8,5,7,5,7,8,9,8,3,3,6,7,11,8,9,7,8,3,7,12,8,7,8,4,12,10,5,2 > 7,1,2,3,3,4,4,4,0,7,3,4,6,0,4,2,3,3,2,3,3,3,4,4,2,3,2,3,4,4,4,0,0,3,3,6,4,4,3,4,0,3,7,4,3,4,1,7,5,2,**-1 > 50回転 > 163 -rand:4/6,4/6,2/6,2/6,1/6,4/6,5/6,2/6,6/6,1/6,6/6,2/6,6/6,2/6,2/6,6/6,2/6,1/6,6/6,6/6,3/6,3/6,6/6,2/6,5/6,6/6,1/6,2/6,5/6,4/6,2/6,3/6,5/6,2/6,2/6,4/6,1/6,4/6,4/6,2/6,5/6,2/6,1/6,5/6,6/6,3/6,6/6,2/6,3/6,2/6,6/6,1/6,3/6,2/6,5/6,2/6,3/6,5/6,3/6,6/6,2/6,6/6,2/6,1/6,1/6,2/6,3/6,3/6,2/6,5/6,6/6,5/6,6/6,2/6,5/6,4/6,1/6,6/6,5/6,3/6,1/6,2/6,1/6,6/6,6/6,6/6,6/6,2/6,5/6,2/6,3/6,5/6,2/6,2/6,6/6,6/6,5/6,5/6,1/6,4/6,1/6,1/6 -============================ -input: -K9@3-1$12 -output: -SwordWorld : KeyNo.9c[3]m[12]-1 > 2D:[1,5 1,2 4,1 2,2 3,6 5,2 2,2 1,4 2,5 6,5 4,3 6,5 1,3 6,1 2,3 1,1]=12,3,5,4,9,7,4,5,7,11,7,11,4,7,5,2 > 7,0,2,1,4,3,1,2,3,6,3,6,1,3,2,**-1 > 15回転 > 43 -rand:1/6,5/6,1/6,2/6,4/6,1/6,2/6,2/6,3/6,6/6,5/6,2/6,2/6,2/6,1/6,4/6,2/6,5/6,6/6,5/6,4/6,3/6,6/6,5/6,1/6,3/6,6/6,1/6,2/6,3/6,1/6,1/6 -============================ -input: -K9@3-1$12 -output: -SwordWorld : KeyNo.9c[3]m[12]-1 > 2D:[2,3 5,6 3,5 1,2 6,3 5,2 3,3 4,5 4,2 1,6 4,2 6,5 5,1 4,5 5,5 3,2 6,5 6,2 3,1 3,5 3,4 2,1 6,3 3,1 6,1 1,3 2,6 2,6 1,3 6,4 6,1 6,3 4,1 6,4 3,5 5,1 2,1 4,1 3,4 3,4 3,4 1,2 2,4 6,3 4,5 3,1 5,3 2,5 1,4 6,6 6,2 6,1 4,5 5,4 2,6 6,4 3,2 4,2 3,3 1,3 3,4 1,2 6,1 5,5 3,5 5,4 2,2 2,4 2,1 4,5 3,4 6,5 3,6 3,3 2,4 3,2 4,3 3,1 5,1 2,2 4,3 3,1 3,2 6,4 5,2 1,3 3,2 3,6 2,5 1,1]=12,11,8,3,9,7,6,9,6,7,6,11,6,9,10,5,11,8,4,8,7,3,9,4,7,4,8,8,4,10,7,9,5,10,8,6,3,5,7,7,7,3,6,9,9,4,8,7,5,12,8,7,9,9,8,10,5,6,6,4,7,3,7,10,8,9,4,6,3,9,7,11,9,6,6,5,7,4,6,4,7,4,5,10,7,4,5,9,7,2 > 7,6,4,0,4,3,3,4,3,3,3,6,3,4,5,2,6,4,1,4,3,0,4,1,3,1,4,4,1,5,3,4,2,5,4,3,0,2,3,3,3,0,3,4,4,1,4,3,2,7,4,3,4,4,4,5,2,3,3,1,3,0,3,5,4,4,1,3,0,4,3,6,4,3,3,2,3,1,3,1,3,1,2,5,3,1,2,4,3,**-1 > 89回転 > 273 -rand:2/6,3/6,5/6,6/6,3/6,5/6,1/6,2/6,6/6,3/6,5/6,2/6,3/6,3/6,4/6,5/6,4/6,2/6,1/6,6/6,4/6,2/6,6/6,5/6,5/6,1/6,4/6,5/6,5/6,5/6,3/6,2/6,6/6,5/6,6/6,2/6,3/6,1/6,3/6,5/6,3/6,4/6,2/6,1/6,6/6,3/6,3/6,1/6,6/6,1/6,1/6,3/6,2/6,6/6,2/6,6/6,1/6,3/6,6/6,4/6,6/6,1/6,6/6,3/6,4/6,1/6,6/6,4/6,3/6,5/6,5/6,1/6,2/6,1/6,4/6,1/6,3/6,4/6,3/6,4/6,3/6,4/6,1/6,2/6,2/6,4/6,6/6,3/6,4/6,5/6,3/6,1/6,5/6,3/6,2/6,5/6,1/6,4/6,6/6,6/6,6/6,2/6,6/6,1/6,4/6,5/6,5/6,4/6,2/6,6/6,6/6,4/6,3/6,2/6,4/6,2/6,3/6,3/6,1/6,3/6,3/6,4/6,1/6,2/6,6/6,1/6,5/6,5/6,3/6,5/6,5/6,4/6,2/6,2/6,2/6,4/6,2/6,1/6,4/6,5/6,3/6,4/6,6/6,5/6,3/6,6/6,3/6,3/6,2/6,4/6,3/6,2/6,4/6,3/6,3/6,1/6,5/6,1/6,2/6,2/6,4/6,3/6,3/6,1/6,3/6,2/6,6/6,4/6,5/6,2/6,1/6,3/6,3/6,2/6,3/6,6/6,2/6,5/6,1/6,1/6 -============================ -input: -K9@3-1$12 -output: -SwordWorld : KeyNo.9c[3]m[12]-1 > 2D:[5,1 6,6 5,6 3,3 3,6 6,1 5,1 5,2 5,6 3,4 2,5 1,2 6,5 1,1]=12,12,11,6,9,7,6,7,11,7,7,3,11,2 > 7,7,6,3,4,3,3,3,6,3,3,0,6,**-1 > 13回転 > 53 -rand:5/6,1/6,6/6,6/6,5/6,6/6,3/6,3/6,3/6,6/6,6/6,1/6,5/6,1/6,5/6,2/6,5/6,6/6,3/6,4/6,2/6,5/6,1/6,2/6,6/6,5/6,1/6,1/6 -============================ -input: -hk10 HKのクリティカル値は13 -output: -SwordWorld : KeyNo.10 > 2D:[6,6]=12 > 7/2 > 4 -rand:6/6,6/6 -============================ -input: -k10h -output: -SwordWorld : KeyNo.10 > 2D:[6,6]=12 > 7/2 > 4 -rand:6/6,6/6 -============================ -input: -hk10h -output: -SwordWorld : KeyNo.10 > 2D:[6,6]=12 > 7/2 > 4 -rand:6/6,6/6 -============================ -input: -hk10[9]+10 -output: -SwordWorld : KeyNo.10c[9]+10 > 2D:[5,3]=8 > (4+10)/2 > 7 -rand:5/6,3/6 -============================ -input: -hk10[9]+10 切り上げ -output: -SwordWorld : KeyNo.10c[9]+10 > 2D:[2,4]=6 > (3+10)/2 > 7 -rand:2/6,4/6 -============================ -input: -HK20+6@4 -output: -SwordWorld : KeyNo.20c[4]+6 > 2D:[4,3 2,5 2,6 1,1]=7,7,8,2 > (5,5,6,**+6)/2 > 3回転 > 11 -rand:4/6,3/6,2/6,5/6,2/6,6/6,1/6,1/6 -============================ -input: -K20+6@4h -output: -SwordWorld : KeyNo.20c[4]+6 > 2D:[4,3 2,5 2,6 1,1]=7,7,8,2 > (5,5,6,**+6)/2 > 3回転 > 11 -rand:4/6,3/6,2/6,5/6,2/6,6/6,1/6,1/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -SwordWorld : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/SwordWorld2_0.txt b/src/src_bcdice/test/data/SwordWorld2_0.txt deleted file mode 100644 index 68821f6fa..000000000 --- a/src/src_bcdice/test/data/SwordWorld2_0.txt +++ /dev/null @@ -1,371 +0,0 @@ -input: -K10r10 -output: -SwordWorld2.0 : KeyNo.10c[10]r[10] > 2D:[5,5 5,5 5,5 5,5 5,5 5,5 5,5 5,5 5,5 5,4]=10,10,10,10,10,10,10,10,10,9 > 5,8,10,11,13,15,18,21,23,22 > 9回転 > 146 -rand:5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,4/6 -============================ -input: -K10r10 -output: -SwordWorld2.0 : KeyNo.10c[10]r[10] > 2D:[6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 5,4]=12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,9 > 7,10,10,13,15,18,19,23,26,30,30,30,30,30,30,30,30,30,30,22 > 19回転 > 463 -rand:6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,5/6,4/6 -============================ -input: -K11r10 -output: -SwordWorld2.0 : KeyNo.11c[10]r[10] > 2D:[6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 5,4]=12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,9 > 7,10,11,13,15,18,20,23,26,30,30,30,30,30,30,30,30,30,30,22 > 19回転 > 465 -rand:6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,5/6,4/6 -============================ -input: -K40+24@8$12r10 -output: -SwordWorld2.0 : KeyNo.40c[8]m[12]r[10]+24 > 2D:[5,3 5,3 5,3 5,3 5,3 5,3 5,2]=12,8,8,8,8,8,7 > 13,12,13,16,18,19,19+24 > 6回転 > 134 -rand:5/6,3/6,5/6,3/6,5/6,3/6,5/6,3/6,5/6,3/6,5/6,3/6,5/6,2/6 -============================ -input: -K10gf -output: -SwordWorld2.0 : KeyNo.10c[10]gf > 2D:[5,5 2,2]=10,4 > 5,1 > 1回転 > 6 -rand:5/6,2/6 -============================ -input: -K10gfh -output: -SwordWorld2.0 : KeyNo.10gf > 2D:[5,5]=10 > 5/2 > 3 -rand:5/6 -============================ -input: -K10hgf -output: -SwordWorld2.0 : KeyNo.10gf > 2D:[5,5]=10 > 5/2 > 3 -rand:5/6 -============================ -input: -K40+24@8$12r10gf -output: -SwordWorld2.0 : KeyNo.40c[8]m[12]r[10]gf+24 > 2D:[4,4 4,4 4,4 4,4 4,4 4,4 3,3]=12,8,8,8,8,8,6 > 13,12,13,16,18,19,18+24 > 6回転 > 133 -rand:4/6,4/6,4/6,4/6,4/6,4/6,3/6 -============================ -input: -K20+5 -output: -SwordWorld2.0 : KeyNo.20c[10]+5 > 2D:[5,2]=7 > 5+5 > 10 -rand:5/6,2/6 -============================ -input: -SK20+5 -output: -SwordWorld2.0 : KeyNo.20c[10]+5 > 2D:[5,2]=7 > 5+5 > 10###secret dice### -rand:5/6,2/6 -============================ -input: -K20@10+5 -output: -SwordWorld2.0 : KeyNo.20c[10]+5 > 2D:[5,2]=7 > 5+5 > 10 -rand:5/6,2/6 -============================ -input: -SK20@10+5 -output: -SwordWorld2.0 : KeyNo.20c[10]+5 > 2D:[5,2]=7 > 5+5 > 10###secret dice### -rand:5/6,2/6 -============================ -input: -hk10 HKのクリティカル値は13 -output: -SwordWorld2.0 : KeyNo.10 > 2D:[6,6]=12 > 7/2 > 4 -rand:6/6,6/6 -============================ -input: -k10h -output: -SwordWorld2.0 : KeyNo.10 > 2D:[6,6]=12 > 7/2 > 4 -rand:6/6,6/6 -============================ -input: -hk10h -output: -SwordWorld2.0 : KeyNo.10 > 2D:[6,6]=12 > 7/2 > 4 -rand:6/6,6/6 -============================ -input: -hk10[9]+10 -output: -SwordWorld2.0 : KeyNo.10c[9]+10 > 2D:[5,3]=8 > (4+10)/2 > 7 -rand:5/6,3/6 -============================ -input: -hk10[9]+10 切り上げ -output: -SwordWorld2.0 : KeyNo.10c[9]+10 > 2D:[2,4]=6 > (3+10)/2 > 7 -rand:2/6,4/6 -============================ -input: -HK20+6@4 -output: -SwordWorld2.0 : KeyNo.20c[4]+6 > 2D:[4,3 2,5 2,6 1,1]=7,7,8,2 > (5,5,6,**+6)/2 > 3回転 > 11 -rand:4/6,3/6,2/6,5/6,2/6,6/6,1/6,1/6 -============================ -input: -K20+6@4h -output: -SwordWorld2.0 : KeyNo.20c[4]+6 > 2D:[4,3 2,5 2,6 1,1]=7,7,8,2 > (5,5,6,**+6)/2 > 3回転 > 11 -rand:4/6,3/6,2/6,5/6,2/6,6/6,1/6,1/6 -============================ -input: -2D6@10+15>=30 -output: -SwordWorld2.0 : (2D6@10+15>=30) > 9[6,3]+15 > 24 > 失敗 -rand:6/6,3/6 -============================ -input: -2D6@10+15>=30 -output: -SwordWorld2.0 : (2D6@10+15>=30) > 15[6,4][3,2]+15 > 30 > 成功 -rand:6/6,4/6,3/6,2/6 -============================ -input: -2D6@10+15>=30 -output: -SwordWorld2.0 : (2D6@10+15>=30) > 25[6,4][5,5][1,4]+15 > 40 > 成功 -rand:6/6,4/6,5/6,5/6,1/6,4/6 -============================ -input: -2D6@10+16>=30 -output: -SwordWorld2.0 : (2D6@10+16>=30) > 25[6,4][5,5][1,4]+16 > 41 > 超成功 -rand:6/6,4/6,5/6,5/6,1/6,4/6 -============================ -input: -2D@10+16>=30 超越判定:面数省略 -output: -SwordWorld2.0 : (2D6@10+16>=30) > 25[6,4][5,5][1,4]+16 > 41 > 超成功 -rand:6/6,4/6,5/6,5/6,1/6,4/6 -============================ -input: -2D6@10+15>=30 -output: -SwordWorld2.0 : (2D6@10+15>=30) > 22[6,4][5,5][1,1]+15 > 37 > 成功 -rand:6/6,4/6,5/6,5/6,1/6,1/6 -============================ -input: -2D6@10+31>=30 -output: -SwordWorld2.0 : (2D6@10+31>=30) > 9[6,3]+31 > 40 > 成功 -rand:6/6,3/6 -============================ -input: -2D6@10+32>=30 -output: -SwordWorld2.0 : (2D6@10+32>=30) > 9[6,3]+32 > 41 > 成功 -rand:6/6,3/6 -============================ -input: -2D6@10+31>=30 -output: -SwordWorld2.0 : (2D6@10+31>=30) > 12[6,4][1,1]+31 > 43 > 超成功 -rand:6/6,4/6,1/6,1/6 -============================ -input: -2D6@10+31>=30 -output: -SwordWorld2.0 : (2D6@10+31>=30) > 12[6,6]+31 > 43 > 自動的成功 -rand:6/6,6/6 -============================ -input: -2D6@10+31>=30 -output: -SwordWorld2.0 : (2D6@10+31>=30) > 2[1,1]+31 > 33 > 自動的失敗 -rand:1/6,1/6 -============================ -input: -2D6@10+39>=30 -output: -SwordWorld2.0 : (2D6@10+39>=30) > 2[1,1]+39 > 41 > 自動的失敗 -rand:1/6,1/6 -============================ -input: -2D6@10 -output: -SwordWorld2.0 : (2D6@10) > 15[6,4][1,4] > 15 -rand:6/6,4/6,1/6,4/6 -============================ -input: -2D6@8 クリティカル値が10以外 -output: -SwordWorld2.0 : (2D6@8) > 13[3,5][1,4] > 13 -rand:3/6,5/6,1/6,4/6 -============================ -input: -2D6@2 クリティカル値が小さすぎる場合 -output: -SwordWorld2.0 : (2D6@2) > クリティカル値が小さすぎます。3以上を指定してください。 -rand: -============================ -input: -2d6@10+11>30 -output: -SwordWorld2.0 : (2D6@10+11>30) > 12[6,6]+11 > 23 > 自動的成功 -rand:6/6,6/6 -============================ -input: -2d6@10+11>30 -output: -SwordWorld2.0 : (2D6@10+11>30) > 38[4,6][5,5][5,5][3,5]+11 > 49 > 超成功 -rand:4/6,6/6,5/6,5/6,5/6,5/6,3/6,5/6, -============================ -input: -2d6@10+11>30 -output: -SwordWorld2.0 : (2D6@10+11>30) > 30[6,5][6,6][6,1]+11 > 41 > 超成功 -rand:6/6,5/6,6/6,6/6,6/6,1/6, -============================ -input: -2d6@10+11>30 -output: -SwordWorld2.0 : (2D6@10+11>30) > 40[6,5][6,6][5,5][6,1]+11 > 51 > 超成功 -rand:6/6,5/6,6/6,6/6,5/6,5/6,6/6,1/6, -============================ -input: -2d6@10+11>30 -output: -SwordWorld2.0 : (2D6@10+11>30) > 52[6,5][6,6][5,5][6,6][6,1]+11 > 63 > 超成功 -rand:6/6,5/6,6/6,6/6,5/6,5/6,6/6,6/6,6/6,1/6, -============================ -input: -2d6@10+11>30 -output: -SwordWorld2.0 : (2D6@10+11>30) > 25[6,5][6,6][1,1]+11 > 36 > 成功 -rand:6/6,5/6,6/6,6/6,1/6,1/6, -============================ -input: -2d6@10+5>30 -output: -SwordWorld2.0 : (2D6@10+5>30) > 25[6,5][6,6][1,1]+5 > 30 > 失敗 -rand:6/6,5/6,6/6,6/6,1/6,1/6, -============================ -input: -2D6 超成功指定なし -output: -SwordWorld2.0 : (2D6) > 9[6,3] > 9 -rand:6/6,3/6 -============================ -input: -2D6>4 超成功指定なし -output: -SwordWorld2.0 : (2D6>4) > 9[6,3] > 9 > 成功 -rand:6/6,3/6 -============================ -input: -gr -output: -SwordWorld2.0 : [1,2]->(器用度 or 敏捷度) -rand:1/6,2/6 -============================ -input: -gr -output: -SwordWorld2.0 : [5,3]->(知力 or 筋力) -rand:5/6,3/6 -============================ -input: -gr -output: -SwordWorld2.0 : [4,6]->(生命力 or 精神力) -rand:4/6,6/6 -============================ -input: -gr -output: -SwordWorld2.0 : [2,2]->(敏捷度) -rand:2/6,2/6 -============================ -input: -gr1 -output: -SwordWorld2.0 : [1,2]->(器用度 or 敏捷度) -rand:1/6,2/6 -============================ -input: -gr3 -output: -SwordWorld2.0 : [1,2]->(器用度 or 敏捷度) | [6,5]->(精神力 or 知力) | [3,4]->(筋力 or 生命力) -rand:1/6,2/6,6/6,5/6,3/6,4/6 -============================ -input: -gr3 -output: -SwordWorld2.0 : [1,2]->(器用度 or 敏捷度) | [5,5]->(知力) | [3,4]->(筋力 or 生命力) -rand:1/6,2/6,5/6,5/6,3/6,4/6 -============================ -input: -ft -output: -SwordWorld2.0 : 防御ファンブル表(1) → この表を2回振り、その両方を適用する。(同じ出目による影響は累積しない)。この自動失敗により得られる経験点は、+50点される -rand:1/6 -============================ -input: -ft -output: -SwordWorld2.0 : 防御ファンブル表(2) → ダメージに、攻撃者を強化している「剣のかけら」の数が追加される -rand:2/6 -============================ -input: -ft -output: -SwordWorld2.0 : 防御ファンブル表(3) → ダメージに、攻撃者の「レベル」が追加される -rand:3/6 -============================ -input: -ft -output: -SwordWorld2.0 : 防御ファンブル表(4) → ダメージ決定を2回行い、より高い方を採用する -rand:4/6 -============================ -input: -ft -output: -SwordWorld2.0 : 防御ファンブル表(5) → 合算ダメージを2倍する -rand:5/6 -============================ -input: -ft -output: -SwordWorld2.0 : 防御ファンブル表(6) → 防護点無効 -rand:6/6 -============================ -input: -tt -output: -SwordWorld2.0 : 絡み効果表(1) → 頭や顔:牙や噛みつきなどにおける命中力判定及び、魔法の行使やブレスに-2のペナルティ修正を受ける -rand:1/6 -============================ -input: -tt -output: -SwordWorld2.0 : 絡み効果表(2) → 武器や盾:武器の使用不可、又は盾の回避力修正及び防護点を無効化する -rand:2/6 -============================ -input: -tt -output: -SwordWorld2.0 : 絡み効果表(3) → 腕や手:武器や爪などにおける命中力判定に-2のペナルティ修正、盾を持つ腕方の腕ならその盾の回避力修正及び防護点を無効化する -rand:3/6 -============================ -input: -tt -output: -SwordWorld2.0 : 絡み効果表(4) → 脚や足:移動不可、更に回避力判定に-2のペナルティ修正を受ける ※両足に絡んでも累積しない -rand:4/6 -============================ -input: -tt -output: -SwordWorld2.0 : 絡み効果表(5) → 胴体:生命・精神抵抗力を基準値に用いる判定を除き、あらゆる行為判定に-1のペナルティ修正を受ける -rand:5/6 -============================ -input: -tt -output: -SwordWorld2.0 : 絡み効果表(6) → 特殊:尻尾や翼などに命中。絡められた部位を使用する判定において-2のペナルティ修正、またはそこが使えていたことによるボーナス修正を失う ※存在しない場合は決め直し -rand:6/6 diff --git a/src/src_bcdice/test/data/SwordWorld2_5.txt b/src/src_bcdice/test/data/SwordWorld2_5.txt deleted file mode 100644 index 9036053c2..000000000 --- a/src/src_bcdice/test/data/SwordWorld2_5.txt +++ /dev/null @@ -1,371 +0,0 @@ -input: -K10r10 -output: -SwordWorld2.5 : KeyNo.10c[10]r[10] > 2D:[5,5 5,5 5,5 5,5 5,5 5,5 5,5 5,5 5,5 5,4]=10,10,10,10,10,10,10,10,10,9 > 5,8,10,11,13,15,18,21,23,22 > 9回転 > 146 -rand:5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,5/6,4/6 -============================ -input: -K10r10 -output: -SwordWorld2.5 : KeyNo.10c[10]r[10] > 2D:[6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 5,4]=12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,9 > 7,10,10,13,15,18,19,23,26,30,30,30,30,30,30,30,30,30,30,22 > 19回転 > 463 -rand:6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,5/6,4/6 -============================ -input: -K11r10 -output: -SwordWorld2.5 : KeyNo.11c[10]r[10] > 2D:[6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 6,6 5,4]=12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,9 > 7,10,11,13,15,18,20,23,26,30,30,30,30,30,30,30,30,30,30,22 > 19回転 > 465 -rand:6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,5/6,4/6 -============================ -input: -K40+24@8$12r10 -output: -SwordWorld2.5 : KeyNo.40c[8]m[12]r[10]+24 > 2D:[5,3 5,3 5,3 5,3 5,3 5,3 5,2]=12,8,8,8,8,8,7 > 13,12,13,16,18,19,19+24 > 6回転 > 134 -rand:5/6,3/6,5/6,3/6,5/6,3/6,5/6,3/6,5/6,3/6,5/6,3/6,5/6,2/6 -============================ -input: -K10gf -output: -SwordWorld2.5 : KeyNo.10c[10]gf > 2D:[5,5 2,2]=10,4 > 5,1 > 1回転 > 6 -rand:5/6,2/6 -============================ -input: -K40+24@8$12r10gf -output: -SwordWorld2.5 : KeyNo.40c[8]m[12]r[10]gf+24 > 2D:[4,4 4,4 4,4 4,4 4,4 4,4 3,3]=12,8,8,8,8,8,6 > 13,12,13,16,18,19,18+24 > 6回転 > 133 -rand:4/6,4/6,4/6,4/6,4/6,4/6,3/6 -============================ -input: -K20+5 -output: -SwordWorld2.5 : KeyNo.20c[10]+5 > 2D:[5,2]=7 > 5+5 > 10 -rand:5/6,2/6 -============================ -input: -SK20+5 -output: -SwordWorld2.5 : KeyNo.20c[10]+5 > 2D:[5,2]=7 > 5+5 > 10###secret dice### -rand:5/6,2/6 -============================ -input: -K20@10+5 -output: -SwordWorld2.5 : KeyNo.20c[10]+5 > 2D:[5,2]=7 > 5+5 > 10 -rand:5/6,2/6 -============================ -input: -SK20@10+5 -output: -SwordWorld2.5 : KeyNo.20c[10]+5 > 2D:[5,2]=7 > 5+5 > 10###secret dice### -rand:5/6,2/6 -============================ -input: -K20+5#1 -output: -SwordWorld2.5 : KeyNo.20c[10]a[+1]+5 > 2D:[5,4 2,2]=10,5 > 8,3+5 > 1回転 > 16 -rand:5/6,4/6,2/6,2/6 -============================ -input: -K20+5#-1 -output: -SwordWorld2.5 : KeyNo.20c[10]a[-1]+5 > 2D:[5,6 2,2]=10,3 > 8,1+5 > 1回転 > 14 -rand:5/6,6/6,2/6,2/6 -============================ -input: -K20+5#+10 -output: -SwordWorld2.5 : KeyNo.20c[10]a[+10]+5 > 2D:[1,1]=2 > ** > 自動的失敗 -rand:1/6,1/6 -============================ -input: -K20+5#10 -output: -SwordWorld2.5 : KeyNo.20c[10]a[+10]+5 > 2D:[2,1 1,1]=12,2 > 10,**+5 > 1回転 > 15 -rand:2/6,1/6,1/6,1/6 -============================ -input: -K20+5#1$+1 -output: -SwordWorld2.5 : KeyNo.20c[10]m[+1]a[+1]+5 > 2D:[5,4 2,2]=11,5 > 9,3+5 > 1回転 > 17 -rand:5/6,4/6,2/6,2/6 -============================ -input: -k10-5@9#2 -output: -SwordWorld2.5 : KeyNo.10c[9]a[+2]-5 > 2D:[5,4 2,2]=11,6 > 6,3-5 > 1回転 > 4 -rand:5/6,4/6,2/6,2/6 -============================ -input: -hk10 HKのクリティカル値は13 -output: -SwordWorld2.5 : KeyNo.10 > 2D:[6,6]=12 > 7/2 > 4 -rand:6/6,6/6 -============================ -input: -k10h -output: -SwordWorld2.5 : KeyNo.10 > 2D:[6,6]=12 > 7/2 > 4 -rand:6/6,6/6 -============================ -input: -hk10h -output: -SwordWorld2.5 : KeyNo.10 > 2D:[6,6]=12 > 7/2 > 4 -rand:6/6,6/6 -============================ -input: -hk10[9]+10 -output: -SwordWorld2.5 : KeyNo.10c[9]+10 > 2D:[5,3]=8 > (4+10)/2 > 7 -rand:5/6,3/6 -============================ -input: -hk10[9]+10 切り上げ -output: -SwordWorld2.5 : KeyNo.10c[9]+10 > 2D:[2,4]=6 > (3+10)/2 > 7 -rand:2/6,4/6 -============================ -input: -HK20+6@4 -output: -SwordWorld2.5 : KeyNo.20c[4]+6 > 2D:[4,3 2,5 2,6 1,1]=7,7,8,2 > (5,5,6,**+6)/2 > 3回転 > 11 -rand:4/6,3/6,2/6,5/6,2/6,6/6,1/6,1/6 -============================ -input: -K20+6@4h -output: -SwordWorld2.5 : KeyNo.20c[4]+6 > 2D:[4,3 2,5 2,6 1,1]=7,7,8,2 > (5,5,6,**+6)/2 > 3回転 > 11 -rand:4/6,3/6,2/6,5/6,2/6,6/6,1/6,1/6 -============================ -input: -2D6@10+15>=30 -output: -SwordWorld2.5 : (2D6@10+15>=30) > 9[6,3]+15 > 24 > 失敗 -rand:6/6,3/6 -============================ -input: -2D6@10+15>=30 -output: -SwordWorld2.5 : (2D6@10+15>=30) > 15[6,4][3,2]+15 > 30 > 成功 -rand:6/6,4/6,3/6,2/6 -============================ -input: -2D6@10+15>=30 -output: -SwordWorld2.5 : (2D6@10+15>=30) > 25[6,4][5,5][1,4]+15 > 40 > 成功 -rand:6/6,4/6,5/6,5/6,1/6,4/6 -============================ -input: -2D6@10+16>=30 -output: -SwordWorld2.5 : (2D6@10+16>=30) > 25[6,4][5,5][1,4]+16 > 41 > 超成功 -rand:6/6,4/6,5/6,5/6,1/6,4/6 -============================ -input: -2D6@10+15>=30 -output: -SwordWorld2.5 : (2D6@10+15>=30) > 22[6,4][5,5][1,1]+15 > 37 > 成功 -rand:6/6,4/6,5/6,5/6,1/6,1/6 -============================ -input: -2D6@10+31>=30 -output: -SwordWorld2.5 : (2D6@10+31>=30) > 9[6,3]+31 > 40 > 成功 -rand:6/6,3/6 -============================ -input: -2D6@10+32>=30 -output: -SwordWorld2.5 : (2D6@10+32>=30) > 9[6,3]+32 > 41 > 成功 -rand:6/6,3/6 -============================ -input: -2D6@10+31>=30 -output: -SwordWorld2.5 : (2D6@10+31>=30) > 12[6,4][1,1]+31 > 43 > 超成功 -rand:6/6,4/6,1/6,1/6 -============================ -input: -2D6@10+31>=30 -output: -SwordWorld2.5 : (2D6@10+31>=30) > 12[6,6]+31 > 43 > 自動的成功 -rand:6/6,6/6 -============================ -input: -2D6@10+31>=30 -output: -SwordWorld2.5 : (2D6@10+31>=30) > 2[1,1]+31 > 33 > 自動的失敗 -rand:1/6,1/6 -============================ -input: -2D6@10+39>=30 -output: -SwordWorld2.5 : (2D6@10+39>=30) > 2[1,1]+39 > 41 > 自動的失敗 -rand:1/6,1/6 -============================ -input: -2D6@10 -output: -SwordWorld2.5 : (2D6@10) > 15[6,4][1,4] > 15 -rand:6/6,4/6,1/6,4/6 -============================ -input: -2D6@8 クリティカル値が10以外 -output: -SwordWorld2.5 : (2D6@8) > 13[3,5][1,4] > 13 -rand:3/6,5/6,1/6,4/6 -============================ -input: -2D6@2 クリティカル値が小さすぎる場合 -output: -SwordWorld2.5 : (2D6@2) > クリティカル値が小さすぎます。3以上を指定してください。 -rand: -============================ -input: -2d6@10+11>30 -output: -SwordWorld2.5 : (2D6@10+11>30) > 12[6,6]+11 > 23 > 自動的成功 -rand:6/6,6/6 -============================ -input: -2d6@10+11>30 -output: -SwordWorld2.5 : (2D6@10+11>30) > 38[4,6][5,5][5,5][3,5]+11 > 49 > 超成功 -rand:4/6,6/6,5/6,5/6,5/6,5/6,3/6,5/6, -============================ -input: -2d6@10+11>30 -output: -SwordWorld2.5 : (2D6@10+11>30) > 30[6,5][6,6][6,1]+11 > 41 > 超成功 -rand:6/6,5/6,6/6,6/6,6/6,1/6, -============================ -input: -2d6@10+11>30 -output: -SwordWorld2.5 : (2D6@10+11>30) > 40[6,5][6,6][5,5][6,1]+11 > 51 > 超成功 -rand:6/6,5/6,6/6,6/6,5/6,5/6,6/6,1/6, -============================ -input: -2d6@10+11>30 -output: -SwordWorld2.5 : (2D6@10+11>30) > 52[6,5][6,6][5,5][6,6][6,1]+11 > 63 > 超成功 -rand:6/6,5/6,6/6,6/6,5/6,5/6,6/6,6/6,6/6,1/6, -============================ -input: -2d6@10+11>30 -output: -SwordWorld2.5 : (2D6@10+11>30) > 25[6,5][6,6][1,1]+11 > 36 > 成功 -rand:6/6,5/6,6/6,6/6,1/6,1/6, -============================ -input: -gr -output: -SwordWorld2.5 : [1,2]->(器用度 or 敏捷度) -rand:1/6,2/6 -============================ -input: -gr -output: -SwordWorld2.5 : [5,3]->(知力 or 筋力) -rand:5/6,3/6 -============================ -input: -gr -output: -SwordWorld2.5 : [4,6]->(生命力 or 精神力) -rand:4/6,6/6 -============================ -input: -gr -output: -SwordWorld2.5 : [2,2]->(敏捷度) -rand:2/6,2/6 -============================ -input: -gr1 -output: -SwordWorld2.5 : [1,2]->(器用度 or 敏捷度) -rand:1/6,2/6 -============================ -input: -gr3 -output: -SwordWorld2.5 : [1,2]->(器用度 or 敏捷度) | [6,5]->(精神力 or 知力) | [3,4]->(筋力 or 生命力) -rand:1/6,2/6,6/6,5/6,3/6,4/6 -============================ -input: -gr3 -output: -SwordWorld2.5 : [1,2]->(器用度 or 敏捷度) | [5,5]->(知力) | [3,4]->(筋力 or 生命力) -rand:1/6,2/6,5/6,5/6,3/6,4/6 -============================ -input: -ft -output: -SwordWorld2.5 : 防御ファンブル表(1) → この表を2回振り、その両方を適用する。(同じ出目による影響は累積しない)。この自動失敗により得られる経験点は、+50点される -rand:1/6 -============================ -input: -ft -output: -SwordWorld2.5 : 防御ファンブル表(2) → ダメージに、攻撃者を強化している「剣のかけら」の数が追加される -rand:2/6 -============================ -input: -ft -output: -SwordWorld2.5 : 防御ファンブル表(3) → ダメージに、攻撃者の「レベル」が追加される -rand:3/6 -============================ -input: -ft -output: -SwordWorld2.5 : 防御ファンブル表(4) → ダメージ決定を2回行い、より高い方を採用する -rand:4/6 -============================ -input: -ft -output: -SwordWorld2.5 : 防御ファンブル表(5) → 合算ダメージを2倍する -rand:5/6 -============================ -input: -ft -output: -SwordWorld2.5 : 防御ファンブル表(6) → 防護点無効 -rand:6/6 -============================ -input: -tt -output: -SwordWorld2.5 : 絡み効果表(1) → 頭や顔:牙や噛みつきなどにおける命中力判定及び、魔法の行使やブレスに-2のペナルティ修正を受ける -rand:1/6 -============================ -input: -tt -output: -SwordWorld2.5 : 絡み効果表(2) → 武器や盾:武器の使用不可、又は盾の回避力修正及び防護点を無効化する -rand:2/6 -============================ -input: -tt -output: -SwordWorld2.5 : 絡み効果表(3) → 腕や手:武器や爪などにおける命中力判定に-2のペナルティ修正、盾を持つ腕方の腕ならその盾の回避力修正及び防護点を無効化する -rand:3/6 -============================ -input: -tt -output: -SwordWorld2.5 : 絡み効果表(4) → 脚や足:移動不可、更に回避力判定に-2のペナルティ修正を受ける ※両足に絡んでも累積しない -rand:4/6 -============================ -input: -tt -output: -SwordWorld2.5 : 絡み効果表(5) → 胴体:生命・精神抵抗力を基準値に用いる判定を除き、あらゆる行為判定に-1のペナルティ修正を受ける -rand:5/6 -============================ -input: -tt -output: -SwordWorld2.5 : 絡み効果表(6) → 特殊:尻尾や翼などに命中。絡められた部位を使用する判定において-2のペナルティ修正、またはそこが使えていたことによるボーナス修正を失う ※存在しない場合は決め直し -rand:6/6 diff --git a/src/src_bcdice/test/data/TestDummy.txt b/src/src_bcdice/test/data/TestDummy.txt deleted file mode 100644 index 69302b1b2..000000000 --- a/src/src_bcdice/test/data/TestDummy.txt +++ /dev/null @@ -1,5 +0,0 @@ -input: -2d6>=4 -output: -DiceBot : (2D6>=4) > 9[6,3] > 9 > 成功 -rand:6/6,3/6 diff --git a/src/src_bcdice/test/data/TherapieSein.txt b/src/src_bcdice/test/data/TherapieSein.txt deleted file mode 100644 index 35897701f..000000000 --- a/src/src_bcdice/test/data/TherapieSein.txt +++ /dev/null @@ -1,72 +0,0 @@ -input: -TS -output: -TherapieSein : (2D6) > 2(1,1) > 2 -rand:1/6,1/6 -============================ -input: -TS -output: -TherapieSein : (2D6) > 12(6,6) > 12 -rand:6/6,6/6 -============================ -input: -TS4 -output: -TherapieSein : (2D6+4) > 7(1,6)+4 > 11 -rand:1/6,6/6 -============================ -input: -TS4-1 -output: -TherapieSein : (2D6+3) > 7(1,6)+3 > 10 -rand:1/6,6/6 -============================ -input: -TS2+1@10 -output: -TherapieSein : (2D6+3>=10) > 2(1,1)+3 > 5>=10 > 【失敗】 -rand:1/6,1/6 -============================ -input: -TS2+1@10 -output: -TherapieSein : (2D6+3>=10) > 12(6,6)+3 > 15>=10 > 【成功】 -rand:6/6,6/6 -============================ -input: -OP -output: -TherapieSein : (2D6) > 2(1,1) > 2 -rand:1/6,1/6 -============================ -input: -OP4+3+1 -output: -TherapieSein : (2D6+8) > 7(1,6)+8 > 15 -rand:1/6,6/6 -============================ -input: -OP3@10 -output: -TherapieSein : (2D6+3>=10) > 2(1,1)+3 > 5>=10 > 【失敗】 -rand:1/6,1/6 -============================ -input: -OP3@10 -output: -TherapieSein : (2D6+3>=10) > 7(1,6)+3 > 10>=10 > 【成功】 -rand:1/6,6/6 -============================ -input: -OP3@10 -output: -TherapieSein : (2D6+3>=10) > 12(6,6)+3 > クリティカル! -rand:6/6,6/6 -============================ -input: -OP3@20 -output: -TherapieSein : (2D6+3>=20) > 12(6,6)+3 > クリティカル! -rand:6/6,6/6 -============================ diff --git a/src/src_bcdice/test/data/TokumeiTenkousei.txt b/src/src_bcdice/test/data/TokumeiTenkousei.txt deleted file mode 100644 index 9750d9800..000000000 --- a/src/src_bcdice/test/data/TokumeiTenkousei.txt +++ /dev/null @@ -1,185 +0,0 @@ -input: -1D6>=3 -output: -TokumeiTenkousei : (1D6>=3) > 2 > 失敗 -rand:2/6 -============================ -input: -1D6>=3 -output: -TokumeiTenkousei : (1D6>=3) > 6 > 成功 -rand:6/6 -============================ -input: -1D6>=3 -output: -TokumeiTenkousei : (1D6>=3) > 5 > 成功 -rand:5/6 -============================ -input: -1D6>=3 -output: -TokumeiTenkousei : (1D6>=3) > 2 > 失敗 -rand:2/6 -============================ -input: -1D6>=3 -output: -TokumeiTenkousei : (1D6>=3) > 6 > 成功 -rand:6/6 -============================ -input: -1D6>=3 -output: -TokumeiTenkousei : (1D6>=3) > 6 > 成功 -rand:6/6 -============================ -input: -1D6>=3 -output: -TokumeiTenkousei : (1D6>=3) > 2 > 失敗 -rand:2/6 -============================ -input: -1D6>=3 -output: -TokumeiTenkousei : (1D6>=3) > 1 > 失敗 > 5EPP獲得 -rand:1/6 -============================ -input: -1D6>=3 -output: -TokumeiTenkousei : (1D6>=3) > 2 > 失敗 -rand:2/6 -============================ -input: -1D6>=3 -output: -TokumeiTenkousei : (1D6>=3) > 5 > 成功 -rand:5/6 -============================ -input: -10D6>=35 -output: -TokumeiTenkousei : (10D6>=35) > 27[1,1,1,2,2,2,3,4,5,6] > 27 > 失敗 > 15EPP獲得 -rand:3/6,2/6,4/6,5/6,1/6,2/6,1/6,1/6,2/6,6/6 -============================ -input: -10D6>=35 -output: -TokumeiTenkousei : (10D6>=35) > 35[1,1,1,3,3,4,5,5,6,6] > 35 > 成功 > 15EPP獲得 -rand:3/6,1/6,1/6,3/6,5/6,5/6,6/6,6/6,4/6,1/6 -============================ -input: -10D6>=35 -output: -TokumeiTenkousei : (10D6>=35) > 41[2,2,3,3,3,5,5,6,6,6] > 41 > 成功 -rand:6/6,6/6,3/6,5/6,6/6,2/6,2/6,5/6,3/6,3/6 -============================ -input: -10D6>=35 -output: -TokumeiTenkousei : (10D6>=35) > 42[1,2,4,4,4,5,5,5,6,6] > 42 > 成功 > 5EPP獲得 -rand:6/6,1/6,2/6,5/6,5/6,5/6,6/6,4/6,4/6,4/6 -============================ -input: -10D6>=35 -output: -TokumeiTenkousei : (10D6>=35) > 39[1,2,2,4,4,4,5,5,6,6] > 39 > 成功 > 5EPP獲得 -rand:2/6,4/6,6/6,5/6,1/6,5/6,6/6,4/6,2/6,4/6 -============================ -input: -10D6>=35 -output: -TokumeiTenkousei : (10D6>=35) > 40[2,2,3,3,4,4,5,5,6,6] > 40 > 成功 -rand:2/6,6/6,6/6,3/6,5/6,2/6,5/6,4/6,3/6,4/6 -============================ -input: -10D6>=35 -output: -TokumeiTenkousei : (10D6>=35) > 33[1,1,2,3,3,4,4,4,5,6] > 33 > 失敗 > 10EPP獲得 -rand:1/6,3/6,4/6,3/6,5/6,4/6,4/6,6/6,1/6,2/6 -============================ -input: -10D6>=35 -output: -TokumeiTenkousei : (10D6>=35) > 33[1,1,2,2,2,4,5,5,5,6] > 33 > 失敗 > 10EPP獲得 -rand:2/6,2/6,1/6,4/6,5/6,6/6,2/6,5/6,5/6,1/6 -============================ -input: -10D6>=35 -output: -TokumeiTenkousei : (10D6>=35) > 47[1,2,3,5,6,6,6,6,6,6] > 47 > 成功 > 5EPP獲得 -rand:6/6,6/6,6/6,5/6,3/6,2/6,6/6,6/6,6/6,1/6 -============================ -input: -10D6>=35 -output: -TokumeiTenkousei : (10D6>=35) > 44[1,1,2,4,6,6,6,6,6,6] > 44 > 成功 > 10EPP獲得 -rand:6/6,1/6,1/6,4/6,6/6,6/6,6/6,2/6,6/6,6/6 -============================ -input: -5D6>=18 -output: -TokumeiTenkousei : (5D6>=18) > 21[1,3,5,6,6] > 21 > 成功 > 5EPP獲得 -rand:6/6,5/6,1/6,6/6,3/6 -============================ -input: -5D6>=18 -output: -TokumeiTenkousei : (5D6>=18) > 21[1,3,5,6,6] > 21 > 成功 > 5EPP獲得 -rand:1/6,6/6,5/6,6/6,3/6 -============================ -input: -5D6>=18 -output: -TokumeiTenkousei : (5D6>=18) > 21[2,3,5,5,6] > 21 > 成功 -rand:3/6,2/6,5/6,6/6,5/6 -============================ -input: -5D6>=18 -output: -TokumeiTenkousei : (5D6>=18) > 12[1,1,1,4,5] > 12 > 失敗 > 15EPP獲得 -rand:5/6,1/6,1/6,1/6,4/6 -============================ -input: -5D6>=18 -output: -TokumeiTenkousei : (5D6>=18) > 12[1,1,2,4,4] > 12 > 失敗 > 10EPP獲得 -rand:1/6,4/6,4/6,1/6,2/6 -============================ -input: -5D6>=18 -output: -TokumeiTenkousei : (5D6>=18) > 19[2,2,4,5,6] > 19 > 成功 -rand:4/6,2/6,5/6,2/6,6/6 -============================ -input: -5D6>=18 -output: -TokumeiTenkousei : (5D6>=18) > 22[1,4,5,6,6] > 22 > 成功 > 5EPP獲得 -rand:4/6,5/6,6/6,1/6,6/6 -============================ -input: -5D6>=18 -output: -TokumeiTenkousei : (5D6>=18) > 17[2,2,3,4,6] > 17 > 失敗 -rand:4/6,2/6,2/6,3/6,6/6 -============================ -input: -5D6>=18 -output: -TokumeiTenkousei : (5D6>=18) > 24[3,4,5,6,6] > 24 > 成功 -rand:4/6,3/6,6/6,6/6,5/6 -============================ -input: -5D6>=18 -output: -TokumeiTenkousei : (5D6>=18) > 19[1,2,5,5,6] > 19 > 成功 > 5EPP獲得 -rand:6/6,1/6,5/6,2/6,5/6 -============================ -input: -3D6>=? 目標値?でバグらない -output: -TokumeiTenkousei : (3D6>=?) > 6[1,2,3] > 6 > 失敗 > 5EPP獲得 -rand:1/6,2/6,3/6 diff --git a/src/src_bcdice/test/data/TokyoGhostResearch.txt b/src/src_bcdice/test/data/TokyoGhostResearch.txt deleted file mode 100644 index f646e167b..000000000 --- a/src/src_bcdice/test/data/TokyoGhostResearch.txt +++ /dev/null @@ -1,166 +0,0 @@ -############################# -導入:OP -タスク判定:TK -トラブル:TB -############################# -input: -OP -output: -TokyoGhostResearch : 導入表(1) > 【病休中断】体調不良または怪我で療養中だったが強制召喚された。 -rand:1/10 -============================ -input: -OP -output: -TokyoGhostResearch : 導入表(2) > 【忙殺中】別の業務で忙殺中であった。 -rand:2/10 -============================ -input: -OP -output: -TokyoGhostResearch : 導入表(3) > 【出張帰り】遠方での仕事から戻ったばかり。 -rand:3/10 -============================ -input: -OP -output: -TokyoGhostResearch : 導入表(4) > 【休暇取り消し】休暇中だったが呼び戻された。 -rand:4/10 -============================ -input: -OP -output: -TokyoGhostResearch : 導入表(5) > 【平常運転】いつもどおりの仕事中だった。 -rand:5/10 -============================ -input: -OP -output: -TokyoGhostResearch : 導入表(6) > 【休暇明け】十分に休養をとったあとで、心身ともに充実している。 -rand:6/10 -============================ -input: -OP -output: -TokyoGhostResearch : 導入表(7) > 【人生の岐路】人生の岐路にまさに差し掛かったところであった。 -rand:7/10 -============================ -input: -OP -output: -TokyoGhostResearch : 導入表(8) > 【同窓会】かつての同級生に会い、差を実感したばかりだった。 -rand:8/10 -============================ -input: -OP -output: -TokyoGhostResearch : 導入表(9) > 【転職活動中】転職を考えて求人サイトを見ているところだった。 -rand:9/10 -============================ -input: -OP -output: -TokyoGhostResearch : 導入表(10) > 【サボリ中】仕事をサボっているところに呼び出しがあった。 -rand:10/10 -============================ -input: -TB -output: -TokyoGhostResearch : 一般トラブル表(1) > トラブルが生じたが、間一髪、危機を脱した。【ダメージなし】 -rand:1/10 -============================ -input: -TB -output: -TokyoGhostResearch : 一般トラブル表(2) > どうにかタスクを処理したが、非常に疲労してしまった。【肉体ダメージ1点】 -rand:2/10 -============================ -input: -TB -output: -TokyoGhostResearch : 一般トラブル表(3) > タスク処理の過程で負傷してしまった。【肉体ダメージ1点】 -rand:3/10 -============================ -input: -TB -output: -TokyoGhostResearch : 一般トラブル表(4) > 恐怖や混乱、ストレスなどで精神の均衡を崩してしまった。【精神ダメージ1点】 -rand:4/10 -============================ -input: -TB -output: -TokyoGhostResearch : 一般トラブル表(5) > 過去のトラウマなどを思い出し、気分が沈んでしまった。【精神ダメージ1点】 -rand:5/10 -============================ -input: -TB -output: -TokyoGhostResearch : 一般トラブル表(6) > 自身の信用をキズつけたり、汚名を背負ってしまった。【環境ダメージ1点】 -rand:6/10 -============================ -input: -TB -output: -TokyoGhostResearch : 一般トラブル表(7) > 会社や上司の不興を買ってしまった。【環境ダメージ1点】 -rand:7/10 -============================ -input: -TB -output: -TokyoGhostResearch : 一般トラブル表(8) > 疲労困憊で動くこともままならない。【肉体ダメージ1点+精神ダメージ1点】 -rand:8/10 -============================ -input: -TB -output: -TokyoGhostResearch : 一般トラブル表(9) > 負傷したうえ、会社に損害を与えてしまった。【肉体ダメージ1点+環境ダメージ1点】 -rand:9/10 -============================ -input: -TB -output: -TokyoGhostResearch : 一般トラブル表(10) > 上司から厳しく叱責され、まずい立場になった。【精神ダメージ1点+環境ダメージ1点】 -rand:10/10 -============================ -input: -1d10>=2 -output: -TokyoGhostResearch : (1D10>=2) > 2 > 成功 -rand:2/10 -============================ -input: -1d10>=2 -output: -TokyoGhostResearch : (1D10>=2) > 1 > 失敗 -rand:1/10 -============================ -input: -1d10>=10 -output: -TokyoGhostResearch : (1D10>=10) > 9 > 失敗 -rand:9/10 -============================ -input: -1d10>=10 -output: -TokyoGhostResearch : (1D10>=10) > 10 > 成功 -rand:10/10 -============================ -input: -1d10>=5 -output: -TokyoGhostResearch : (1D10>=5) > 5 > 成功 -rand:5/10 -============================ -input: -1d10>=5 -output: -TokyoGhostResearch : (1D10>=5) > 4 > 失敗 -rand:4/10 -============================ -input: -1d10>=5 -output: -TokyoGhostResearch : (1D10>=5) > 6 > 成功 -rand:6/10 diff --git a/src/src_bcdice/test/data/TokyoNova.txt b/src/src_bcdice/test/data/TokyoNova.txt deleted file mode 100644 index 34fa6e892..000000000 --- a/src/src_bcdice/test/data/TokyoNova.txt +++ /dev/null @@ -1,47 +0,0 @@ -input: -1D4>=3 -output: -TokyoNova : (1D4>=3) > 3 > 成功 -rand:3/4 -============================ -input: -1D6>=5 -output: -TokyoNova : (1D6>=5) > 5 > 成功 -rand:5/6 -============================ -input: -1D8>=7 -output: -TokyoNova : (1D8>=7) > 7 > 成功 -rand:7/8 -============================ -input: -1D10>=9 -output: -TokyoNova : (1D10>=9) > 9 > 成功 -rand:9/10 -============================ -input: -1D12>=11 -output: -TokyoNova : (1D12>=11) > 11 > 成功 -rand:11/12 -============================ -input: -1D20>=19 -output: -TokyoNova : (1D20>=19) > 19 > 成功 -rand:19/20 -============================ -input: -(1+2)D10+3>=12 -output: -TokyoNova : (3D10+3>=12) > 12[3,4,5]+3 > 15 > 成功 -rand:3/10,4/10,5/10 -============================ -input: -S1D10>=10 -output: -TokyoNova : (1D10>=10) > 9 > 失敗###secret dice### -rand:9/10 diff --git a/src/src_bcdice/test/data/Torg.txt b/src/src_bcdice/test/data/Torg.txt deleted file mode 100644 index 4f7c2616f..000000000 --- a/src/src_bcdice/test/data/Torg.txt +++ /dev/null @@ -1,695 +0,0 @@ -input: -TG14 -output: -TORG : (1R20+14) > -5[6]+14 > 9 -rand:6/20 -============================ -input: -TG14 -output: -TORG : (1R20+14) > -12[1]+14 > 2 -rand:1/20 -============================ -input: -TG14 -output: -TORG : (1R20+14) > 2[15]+14 > 16 -rand:15/20 -============================ -input: -TG14 -output: -TORG : (1R20+14) > 8[20,2]+14 > 22(技能無21) -rand:20/20,2/20 -============================ -input: -TG14 -output: -TORG : (1R20+14) > 1[14]+14 > 15 -rand:14/20 -============================ -input: -TG14 -output: -TORG : (1R20+14) > -8[3]+14 > 6 -rand:3/20 -============================ -input: -TG14 -output: -TORG : (1R20+14) > 5[18]+14 > 19 -rand:18/20 -============================ -input: -TG14 -output: -TORG : (1R20+14) > 0[12]+14 > 14 -rand:12/20 -============================ -input: -TG14 -output: -TORG : (1R20+14) > -1[9]+14 > 13 -rand:9/20 -============================ -input: -TG14 -output: -TORG : (1R20+14) > -5[5]+14 > 9 -rand:5/20 -============================ -input: -TG12+5 -output: -TORG : (1R20+12+5) > 6[19]+5 > 11 -rand:19/20 -============================ -input: -TG12+5 -output: -TORG : (1R20+12+5) > -5[5]+5 > 0 -rand:5/20 -============================ -input: -TG12+5 -output: -TORG : (1R20+12+5) > -8[4]+5 > -3 -rand:4/20 -============================ -input: -TG12+5 -output: -TORG : (1R20+12+5) > -5[5]+5 > 0 -rand:5/20 -============================ -input: -TG12+5 -output: -TORG : (1R20+12+5) > -8[4]+5 > -3 -rand:4/20 -============================ -input: -TG12+5 -output: -TORG : (1R20+12+5) > 10[20,13]+5 > 15(技能無12) -rand:20/20,13/20 -============================ -input: -TG12+5 -output: -TORG : (1R20+12+5) > 10[20,13]+5 > 15(技能無12) -rand:20/20,13/20 -============================ -input: -TG12+5 -output: -TORG : (1R20+12+5) > -10[2]+5 > -5 -rand:2/20 -============================ -input: -TG12+5 -output: -TORG : (1R20+12+5) > 3[16]+5 > 8 -rand:16/20 -============================ -input: -TG12+5 -output: -TORG : (1R20+12+5) > -2[8]+5 > 3 -rand:8/20 -============================ -input: -RT[1...20] -output: -TORG : 一般結果表[13] > すごい -rand:13/20 -============================ -input: -RT[1...20] -output: -TORG : 一般結果表[6] > まあよい -rand:6/20 -============================ -input: -RT[1...20] -output: -TORG : 一般結果表[3] > まあよい -rand:3/20 -============================ -input: -RT[1...20] -output: -TORG : 一般結果表[4] > まあよい -rand:4/20 -============================ -input: -RT[1...20] -output: -TORG : 一般結果表[3] > まあよい -rand:3/20 -============================ -input: -RT[1...20] -output: -TORG : 一般結果表[11] > かなりよい -rand:11/20 -============================ -input: -RT[1...20] -output: -TORG : 一般結果表[15] > すごい -rand:15/20 -============================ -input: -RT[1...20] -output: -TORG : 一般結果表[4] > まあよい -rand:4/20 -============================ -input: -RT[1...20] -output: -TORG : 一般結果表[11] > かなりよい -rand:11/20 -============================ -input: -RT[1...20] -output: -TORG : 一般結果表[16] > すごい -rand:16/20 -============================ -input: -IT[1...20] -output: -TORG : 威圧/威嚇表[16] > モラル崩壊 -rand:16/20 -============================ -input: -IT[1...20] -output: -TORG : 威圧/威嚇表[17] > プレイヤーズコール -rand:17/20 -============================ -input: -IT[1...20] -output: -TORG : 威圧/威嚇表[14] > 逆転負け -rand:14/20 -============================ -input: -IT[1...20] -output: -TORG : 威圧/威嚇表[2] > 技能なし -rand:2/20 -============================ -input: -IT[1...20] -output: -TORG : 威圧/威嚇表[17] > プレイヤーズコール -rand:17/20 -============================ -input: -IT[1...20] -output: -TORG : 威圧/威嚇表[8] > 萎縮 -rand:8/20 -============================ -input: -IT[1...20] -output: -TORG : 威圧/威嚇表[4] > 技能なし -rand:4/20 -============================ -input: -IT[1...20] -output: -TORG : 威圧/威嚇表[19] > プレイヤーズコール -rand:19/20 -============================ -input: -IT[1...20] -output: -TORG : 威圧/威嚇表[1] > 技能なし -rand:1/20 -============================ -input: -IT[1...20] -output: -TORG : 威圧/威嚇表[5] > 萎縮 -rand:5/20 -============================ -input: -TT[1...20] -output: -TORG : 挑発/トリック表[6] > 萎縮 -rand:6/20 -============================ -input: -TT[1...20] -output: -TORG : 挑発/トリック表[1] > 技能なし -rand:1/20 -============================ -input: -TT[1...20] -output: -TORG : 挑発/トリック表[13] > 逆転負け -rand:13/20 -============================ -input: -TT[1...20] -output: -TORG : 挑発/トリック表[6] > 萎縮 -rand:6/20 -============================ -input: -TT[1...20] -output: -TORG : 挑発/トリック表[17] > プレイヤーズコール -rand:17/20 -============================ -input: -TT[1...20] -output: -TORG : 挑発/トリック表[5] > 萎縮 -rand:5/20 -============================ -input: -TT[1...20] -output: -TORG : 挑発/トリック表[6] > 萎縮 -rand:6/20 -============================ -input: -TT[1...20] -output: -TORG : 挑発/トリック表[3] > 技能なし -rand:3/20 -============================ -input: -TT[1...20] -output: -TORG : 挑発/トリック表[9] > 萎縮 -rand:9/20 -============================ -input: -TT[1...20] -output: -TORG : 挑発/トリック表[15] > 高揚/逆転負け -rand:15/20 -============================ -input: -MT[1...20] -output: -TORG : 間合い表[3] > 技能なし -rand:3/20 -============================ -input: -MT[1...20] -output: -TORG : 間合い表[12] > 萎縮/疲労 -rand:12/20 -============================ -input: -MT[1...20] -output: -TORG : 間合い表[4] > 技能なし -rand:4/20 -============================ -input: -MT[1...20] -output: -TORG : 間合い表[5] > 疲労 -rand:5/20 -============================ -input: -MT[1...20] -output: -TORG : 間合い表[5] > 疲労 -rand:5/20 -============================ -input: -MT[1...20] -output: -TORG : 間合い表[6] > 疲労 -rand:6/20 -============================ -input: -MT[1...20] -output: -TORG : 間合い表[14] > 萎縮/疲労 -rand:14/20 -============================ -input: -MT[1...20] -output: -TORG : 間合い表[13] > 萎縮/疲労 -rand:13/20 -============================ -input: -MT[1...20] -output: -TORG : 間合い表[19] > プレイヤーズコール -rand:19/20 -============================ -input: -MT[1...20] -output: -TORG : 間合い表[20] > プレイヤーズコール -rand:20/20 -============================ -input: -ODT[1...20] -output: -TORG : オーズダメージ表[13] > 3レベル負傷 KO13 -rand:13/20 -============================ -input: -ODT[1...20] -output: -TORG : オーズダメージ表[7] > 転倒 K/O5 -rand:7/20 -============================ -input: -ODT[1...20] -output: -TORG : オーズダメージ表[11] > 2レベル負傷 K/O11 -rand:11/20 -============================ -input: -ODT[1...20] -output: -TORG : オーズダメージ表[19] > 6レベル負傷 KO15 -rand:19/20 -============================ -input: -ODT[1...20] -output: -TORG : オーズダメージ表[2] > K1 -rand:2/20 -============================ -input: -ODT[1...20] -output: -TORG : オーズダメージ表[14] > 3レベル負傷 KO14 -rand:14/20 -============================ -input: -ODT[1...20] -output: -TORG : オーズダメージ表[18] > 5レベル負傷 KO15 -rand:18/20 -============================ -input: -ODT[1...20] -output: -TORG : オーズダメージ表[6] > 転倒 K/O4 -rand:6/20 -============================ -input: -ODT[1...20] -output: -TORG : オーズダメージ表[18] > 5レベル負傷 KO15 -rand:18/20 -============================ -input: -ODT[1...20] -output: -TORG : オーズダメージ表[9] > 1レベル負傷 K/O9 -rand:9/20 -============================ -input: -DT[1...20] -output: -TORG : ポシビリティ能力者ダメージ表[6] > 転倒 O2 -rand:6/20 -============================ -input: -DT[1...20] -output: -TORG : ポシビリティ能力者ダメージ表[17] > 4レベル負傷 KO5 -rand:17/20 -============================ -input: -DT[1...20] -output: -TORG : ポシビリティ能力者ダメージ表[17] > 4レベル負傷 KO5 -rand:17/20 -============================ -input: -DT[1...20] -output: -TORG : ポシビリティ能力者ダメージ表[1] > 1 -rand:1/20 -============================ -input: -DT[1...20] -output: -TORG : ポシビリティ能力者ダメージ表[3] > K2 -rand:3/20 -============================ -input: -DT[1...20] -output: -TORG : ポシビリティ能力者ダメージ表[4] > 2 -rand:4/20 -============================ -input: -DT[1...20] -output: -TORG : ポシビリティ能力者ダメージ表[10] > 1レベル負傷 K4 -rand:10/20 -============================ -input: -DT[1...20] -output: -TORG : ポシビリティ能力者ダメージ表[14] > 2レベル負傷 KO5 -rand:14/20 -============================ -input: -DT[1...20] -output: -TORG : ポシビリティ能力者ダメージ表[1] > 1 -rand:1/20 -============================ -input: -DT[1...20] -output: -TORG : ポシビリティ能力者ダメージ表[16] > 3レベル負傷 KO5 -rand:16/20 -============================ -input: -BT[1...80] -output: -TORG : ボーナス表[53] > 14 -rand:53/80 -============================ -input: -BT[1...80] -output: -TORG : ボーナス表[27] > 9 -rand:27/80 -============================ -input: -BT[1...80] -output: -TORG : ボーナス表[44] > 12 -rand:44/80 -============================ -input: -BT[1...80] -output: -TORG : ボーナス表[58] > 15 -rand:58/80 -============================ -input: -BT[1...80] -output: -TORG : ボーナス表[50] > 13 -rand:50/80 -============================ -input: -BT[1...80] -output: -TORG : ボーナス表[34] > 10 -rand:34/80 -============================ -input: -BT[1...80] -output: -TORG : ボーナス表[48] > 13 -rand:48/80 -============================ -input: -BT[1...80] -output: -TORG : ボーナス表[54] > 14 -rand:54/80 -============================ -input: -BT[1...80] -output: -TORG : ボーナス表[20] > 7 -rand:20/80 -============================ -input: -BT[1...80] -output: -TORG : ボーナス表[71] > 18 -rand:71/80 -============================ -input: -BT[1...80]+1 -output: -TORG : ボーナス表[4+1] > -8[4]+1 > -7 -rand:4/80 -============================ -input: -BT[1...80]+1 -output: -TORG : ボーナス表[21+1] > 8[21]+1 > 9 -rand:21/80 -============================ -input: -BT[1...80]+1 -output: -TORG : ボーナス表[13+1] > 1[13]+1 > 2 -rand:13/80 -============================ -input: -BT[1...80]+1 -output: -TORG : ボーナス表[39+1] > 11[39]+1 > 12 -rand:39/80 -============================ -input: -BT[1...80]+1 -output: -TORG : ボーナス表[13+1] > 1[13]+1 > 2 -rand:13/80 -============================ -input: -BT[1...80]+1 -output: -TORG : ボーナス表[56+1] > 15[56]+1 > 16 -rand:56/80 -============================ -input: -BT[1...80]+1 -output: -TORG : ボーナス表[40+1] > 11[40]+1 > 12 -rand:40/80 -============================ -input: -BT[1...80]+1 -output: -TORG : ボーナス表[12+1] > 0[12]+1 > 1 -rand:12/80 -============================ -input: -BT[1...80]+1 -output: -TORG : ボーナス表[44+1] > 12[44]+1 > 13 -rand:44/80 -============================ -input: -BT[1...80]+1 -output: -TORG : ボーナス表[17+1] > 4[17]+1 > 5 -rand:17/80 -============================ -input: -BT19 -output: -TORG : ボーナス表[19] > 6 -rand: -============================ -input: -BT20 -output: -TORG : ボーナス表[20] > 7 -rand: -============================ -input: -BT21 -output: -TORG : ボーナス表[21] > 8 -rand: -============================ -input: -BT25 -output: -TORG : ボーナス表[25] > 8 -rand: -============================ -input: -BT26 -output: -TORG : ボーナス表[26] > 9 -rand: -============================ -input: -BT60 -output: -TORG : ボーナス表[60] > 15 -rand: -============================ -input: -BT61 -output: -TORG : ボーナス表[61] > 16 -rand: -============================ -input: -BT100 -output: -TORG : ボーナス表[100] > 23 -rand: -============================ -input: -BT101 -output: -TORG : ボーナス表[101] > 24 -rand: -============================ -input: -BT20 -output: -TORG : ボーナス表[20] > 7 -rand: -============================ -input: -BT21 -output: -TORG : ボーナス表[21] > 8 -rand: -============================ -input: -BT24 -output: -TORG : ボーナス表[24] > 8 -rand: -============================ -input: -BT25 -output: -TORG : ボーナス表[25] > 8 -rand: -============================ -input: -BT26 -output: -TORG : ボーナス表[26] > 9 -rand: -============================ -input: -BT30 -output: -TORG : ボーナス表[30] > 9 -rand: -============================ -input: -BT31 -output: -TORG : ボーナス表[31] > 10 -rand: diff --git a/src/src_bcdice/test/data/Torg1_5.txt b/src/src_bcdice/test/data/Torg1_5.txt deleted file mode 100644 index 0cb2fe828..000000000 --- a/src/src_bcdice/test/data/Torg1_5.txt +++ /dev/null @@ -1,95 +0,0 @@ -input: -ODT15 -output: -TORG1.5 : オーズダメージ表[15] > 4レベル負傷 KO8 -rand: -============================ -input: -ODT16 -output: -TORG1.5 : オーズダメージ表[16] > 4レベル負傷 KO8 -rand: -============================ -input: -ODT17 -output: -TORG1.5 : オーズダメージ表[17] > 5レベル負傷 KO9 -rand: -============================ -input: -ODT18 -output: -TORG1.5 : オーズダメージ表[18] > 5レベル負傷 KO9 -rand: -============================ -input: -ODT19 -output: -TORG1.5 : オーズダメージ表[19] > 6レベル負傷 KO10 -rand: -============================ -input: -DT15 -output: -TORG1.5 : ポシビリティ能力者ダメージ表[15] > 3レベル負傷 KO5 -rand: -============================ -input: -DT16 -output: -TORG1.5 : ポシビリティ能力者ダメージ表[16] > 3レベル負傷 KO5 -rand: -============================ -input: -DT17 -output: -TORG1.5 : ポシビリティ能力者ダメージ表[17] > 4レベル負傷 KO6 -rand: -============================ -input: -DT18 -output: -TORG1.5 : ポシビリティ能力者ダメージ表[18] > 4レベル負傷 KO6 -rand: -============================ -input: -MT0 -output: -TORG1.5 : 間合い表[0] > 疲労 -rand: -============================ -input: -MT4 -output: -TORG1.5 : 間合い表[4] > 疲労 -rand: -============================ -input: -MT5 -output: -TORG1.5 : 間合い表[5] > 萎縮 -rand: -============================ -input: -IT4 -output: -TORG1.5 : 威圧/威嚇表[4] > 萎縮 -rand: -============================ -input: -IT5 -output: -TORG1.5 : 威圧/威嚇表[5] > 技能なし -rand: -============================ -input: -TT4 -output: -TORG1.5 : 挑発/トリック表[4] > 萎縮 -rand: -============================ -input: -TT5 -output: -TORG1.5 : 挑発/トリック表[5] > 技能なし -rand: diff --git a/src/src_bcdice/test/data/TorgEternity.txt b/src/src_bcdice/test/data/TorgEternity.txt deleted file mode 100644 index f04ee3db1..000000000 --- a/src/src_bcdice/test/data/TorgEternity.txt +++ /dev/null @@ -1,588 +0,0 @@ -input: -TG14 -output: -TorgEternity : (1R20+14) > -10[1]+14 > 4 -rand:1/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > -8[2]+14 > 6 -rand:2/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > -6[3]+14 > 8 -rand:3/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > -6[4]+14 > 8 -rand:4/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > -4[5]+14 > 10 -rand:5/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > -4[6]+14 > 10 -rand:6/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > -2[7]+14 > 12 -rand:7/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > -2[8]+14 > 12 -rand:8/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > -1[9]+14 > 13 -rand:9/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > 0[11]+14 > 14 -rand:11/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > 0[12]+14 > 14 -rand:12/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > 1[13]+14 > 15 -rand:13/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > 1[14]+14 > 15 -rand:14/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > 2[15]+14 > 16 -rand:15/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > 3[16]+14 > 17 -rand:16/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > 4[17]+14 > 18 -rand:17/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > 5[18]+14 > 19 -rand:18/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > 6[19]+14 > 20 -rand:19/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > 0[10,2]+14 > 14 -rand:10/20,2/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > 10[10,10,15]+14 > 24 -rand:10/20,10/20,15/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > 11[10,20,6]+14 > 25(技能無23) -rand:10/20,20/20,6/20 -============================ -input: -TG14 -output: -TorgEternity : (1R20+14) > 12[20,10,11]+14 > 26(技能無21) -rand:20/20,10/20,11/20 -============================ -input: -TG12+5 -output: -TorgEternity : (1R20+12+5) > -4[5]+17 > 13 -rand:5/20 -============================ -input: -TG+12+5 -output: -TorgEternity : (1R20+12+5) > -4[5]+17 > 13 -rand:5/20 -============================ -input: -TG -output: -TorgEternity : (1R20) > 15[20,20,10,9]0 > 15(技能無7) -rand:20/20,20/20,10/20,9/20 -============================ -input: -RT0 -output: -TorgEternity : 成功レベル表[0] > Success - Standard. -rand: -============================ -input: -Result4 -output: -TorgEternity : 成功レベル表[4] > Success - Standard. -rand: -============================ -input: -Result5 -output: -TorgEternity : 成功レベル表[5] > Success - Good! -rand: -============================ -input: -RT9 -output: -TorgEternity : 成功レベル表[9] > Success - Good! -rand: -============================ -input: -RT10 -output: -TorgEternity : 成功レベル表[10] > Success - Outstanding!! -rand: -============================ -input: -Result1-2 -output: -TorgEternity : 成功レベル表[-1] > Failure. -rand: -============================ -input: -Result-5 -output: -TorgEternity : 成功レベル表[-5] > Failure. -rand: -============================ -input: -RT9-2+4 -output: -TorgEternity : 成功レベル表[11] > Success - Outstanding!! -rand: -============================ -input: -DT2-8 -output: -TorgEternity : ダメージ結果表[-6] > ノーダメージ -rand: -============================ -input: -Damage-5 -output: -TorgEternity : ダメージ結果表[-5] > 1ショック -rand: -============================ -input: -Damage7-8 -output: -TorgEternity : ダメージ結果表[-1] > 1ショック -rand: -============================ -input: -DT8-8 -output: -TorgEternity : ダメージ結果表[0] > 2ショック -rand: -============================ -input: -Damage4 -output: -TorgEternity : ダメージ結果表[4] > 2ショック -rand: -============================ -input: -Damage5 -output: -TorgEternity : ダメージ結果表[5] > 1レベル負傷 + 2ショック -rand: -============================ -input: -Damage9 -output: -TorgEternity : ダメージ結果表[9] > 1レベル負傷 + 2ショック -rand: -============================ -input: -DT10 -output: -TorgEternity : ダメージ結果表[10] > 2レベル負傷 + 4ショック -rand: -============================ -input: -DT14 -output: -TorgEternity : ダメージ結果表[14] > 2レベル負傷 + 4ショック -rand: -============================ -input: -Damage15 -output: -TorgEternity : ダメージ結果表[15] > 3レベル負傷 + 6ショック -rand: -============================ -input: -Damage19 -output: -TorgEternity : ダメージ結果表[19] > 3レベル負傷 + 6ショック -rand: -============================ -input: -DT20 -output: -TorgEternity : ダメージ結果表[20] > 4レベル負傷 + 8ショック -rand: -============================ -input: -DT24 -output: -TorgEternity : ダメージ結果表[24] > 4レベル負傷 + 8ショック -rand: -============================ -input: -Damage25 -output: -TorgEternity : ダメージ結果表[25] > 5レベル負傷 + 10ショック -rand: -============================ -input: -Damage29 -output: -TorgEternity : ダメージ結果表[29] > 5レベル負傷 + 10ショック -rand: -============================ -input: -DT30 -output: -TorgEternity : ダメージ結果表[30] > 6レベル負傷 + 12ショック -rand: -============================ -input: -DT34 -output: -TorgEternity : ダメージ結果表[34] > 6レベル負傷 + 12ショック -rand: -============================ -input: -Damage35 -output: -TorgEternity : ダメージ結果表[35] > 7レベル負傷 + 14ショック -rand: -============================ -input: -Damage39 -output: -TorgEternity : ダメージ結果表[39] > 7レベル負傷 + 14ショック -rand: -============================ -input: -DT40 -output: -TorgEternity : ダメージ結果表[40] > 8レベル負傷 + 16ショック -rand: -============================ -input: -DT44 -output: -TorgEternity : ダメージ結果表[44] > 8レベル負傷 + 16ショック -rand: -============================ -input: -Damage45 -output: -TorgEternity : ダメージ結果表[45] > 9レベル負傷 + 18ショック -rand: -============================ -input: -Damage49 -output: -TorgEternity : ダメージ結果表[49] > 9レベル負傷 + 18ショック -rand: -============================ -input: -DT50 -output: -TorgEternity : ダメージ結果表[50] > 10レベル負傷 + 20ショック -rand: -============================ -input: -BT1 -output: -TorgEternity : ロールボーナス表[1] > Mishap!! -rand: -============================ -input: -Bonus62 -output: -TorgEternity : ロールボーナス表[62] > 16 -rand: -============================ -input: -Bonus1+2-4 -output: -TorgEternity : ロールボーナス表[1] > Mishap!! -rand: -============================ -input: -BT21+2-4 -output: -TorgEternity : ロールボーナス表[21]-2 > 8[21]-2 > 6 -rand: -============================ -input: -3BD+10 -output: -TorgEternity : ボーナスダメージロール(3BD+10) > 19[5,1,5∞,5∞,3]+10 > 29ダメージ -rand:5/6, 1/6, 6/6, 6/6, 3/6 -============================ -input: -3BD+2-4 -output: -TorgEternity : ボーナスダメージロール(3BD-2) > 9[2,3,4]-2 > 7ダメージ -rand:2/6, 3/6, 4/6 -============================ -input: -3BD -output: -TorgEternity : ボーナスダメージロール(3BD) > 19[5,1,5∞,5∞,3] > 19ダメージ -rand:5/6, 1/6, 6/6, 6/6, 3/6 -============================ -input: -3BD -output: -TorgEternity : ボーナスダメージロール(3BD) > 9[2,3,4] > 9ダメージ -rand:2/6, 3/6, 4/6 -============================ -input: -0BD -output: -TorgEternity : エラーです。xBD (x≧1) として下さい -rand: -============================ -input: --5BD -output: - -rand: -============================ -input: -TE -output: -TorgEternity : d20ロール(通常) > 1d20[1] > Mishap! 絶対失敗! -rand:1/20 -============================ -input: -TE -output: -TorgEternity : d20ロール(通常) > 1d20[15] > +2[15] -rand:15/20 -============================ -input: -TE -output: -TorgEternity : d20ロール(通常) > 1d20[10,20,11] > +12[41](技能有) / +9[30](技能無) -rand:10/20,20/20,11/20 -============================ -input: -TE -output: -TorgEternity : d20ロール(通常) > 1d20[10,1] > +0[11] -rand:10/20,1/20 -============================ -input: -TE -output: -TorgEternity : d20ロール(通常) > 1d20[10,8] > +5[18] -rand:10/20,8/20 -============================ -input: -TE -output: -TorgEternity : d20ロール(通常) > 1d20[10,10,1] > +8[21] -rand:10/20,10/20,1/20 -============================ -input: -TE -output: -TorgEternity : d20ロール(通常) > 1d20[10,20,5] > +10[35](技能有) / +9[30](技能無) -rand:10/20,20/20,5/20 -============================ -input: -TE -output: -TorgEternity : d20ロール(通常) > 1d20[20,1] > +8[21](技能有) / +7[20](技能無) -rand:20/20,1/20 -============================ -input: -TE -output: -TorgEternity : d20ロール(通常) > 1d20[20,11] > +10[31](技能有) / +7[20](技能無) -rand:20/20,11/20 -============================ -input: -TE -output: -TorgEternity : d20ロール(通常) > 1d20[20,10,1] > +10[31](技能有) / +7[20](技能無) -rand:20/20,10/20,1/20 -============================ - input: -TE -output: -TorgEternity : d20ロール(通常) > 1d20[20,20,20,1] > +16[61](技能有) / +7[20](技能無) -rand:20/20,20/20,20/20,1/20 -============================ -input: -TE1+2+3 -output: - -rand: -============================ -input: -UP -output: -TorgEternity : d20ロール(高揚) > 1d20[1] > Mishap! 絶対失敗! -rand:1/20 -============================ -input: -UP -output: -TorgEternity : d20ロール(高揚) > 1d20[5] + 1d20[10,20,11] > +13[46](技能有) / +10[35](技能無) -rand:5/20,10/20,20/20,11/20 -============================ -input: -UP -output: -TorgEternity : d20ロール(高揚) > 1d20[5] + 1d20[20,1] > +9[26](技能有) / +8[25](技能無) -rand:5/20,20/20,1/20 -============================ -input: -UP -output: -TorgEternity : d20ロール(高揚) > 1d20[17] + 1d20[1] > +5[18] -rand:17/20,1/20 -============================ -input: -UP1+2+3 -output: - -rand: -============================ -input: -POS0 -output: -TorgEternity : d20ロール(ポシビリティ) > 0+1d20[1→10] > -1[10] -rand:1/20 -============================ -input: -POS8 -output: -TorgEternity : d20ロール(ポシビリティ) > 8+1d20[5→10] > +5[18] -rand:5/20 -============================ -input: -POS12 -output: -TorgEternity : d20ロール(ポシビリティ) > 12+1d20[15] > +9[27] -rand:15/20 -============================ -input: -POS11 -output: -TorgEternity : d20ロール(ポシビリティ) > 11+1d20[10,1] > +8[22] -rand:10/20,1/20 -============================ -input: -POS6 -output: -TorgEternity : d20ロール(ポシビリティ) > 6+1d20[10,15] > +10[31] -rand:10/20,15/20 -============================ -input: -POS13 -output: -TorgEternity : d20ロール(ポシビリティ) > 13+1d20[10,10,13] > +13[46] -rand:10/20,10/20,13/20 -============================ -input: -POS3 -output: -TorgEternity : d20ロール(ポシビリティ) > 3+1d20[10,20,3] > +11[36](技能有) / +10[33](技能無) -rand:10/20,20/20,3/20 -============================ -input: -POS5 -output: -TorgEternity : d20ロール(ポシビリティ) > 5+1d20[20,1] > +9[26](技能有) / +8[25](技能無) -rand:20/20,1/20 -============================ -input: -POS4 -output: -TorgEternity : d20ロール(ポシビリティ) > 4+1d20[20,18] > +12[42](技能有) / +8[24](技能無) -rand:20/20,18/20 -============================ -input: -POS15 -output: -TorgEternity : d20ロール(ポシビリティ) > 15+1d20[20,10,1] > +13[46](技能有) / +10[35](技能無) -rand:20/20,10/20,1/20 -============================ -input: -POS2 -output: -TorgEternity : d20ロール(ポシビリティ) > 2+1d20[20,20,10,11] > +16[63](技能有) / +8[22](技能無) -rand:20/20,20/20,10/20,11/20 -============================ -input: -POS6+12 -output: -TorgEternity : d20ロール(ポシビリティ) > 18+1d20[5→10] > +9[28] -rand:5/20 -============================ -input: -POS -output: - -rand: -============================ -input: -POS12-2 -output: - -rand: -============================ diff --git a/src/src_bcdice/test/data/TrinitySeven.txt b/src/src_bcdice/test/data/TrinitySeven.txt deleted file mode 100644 index bda09d41f..000000000 --- a/src/src_bcdice/test/data/TrinitySeven.txt +++ /dev/null @@ -1,349 +0,0 @@ -input: -1DM1+1 -output: -TrinitySeven : (1DM1+1) [1]→[7]+1 > 8 -rand: -1/6 -============================ -input: -1DM1-1 -output: -TrinitySeven : (1DM1-1) [1]→[7]-1 > 6 -rand: -1/6 -============================ -input: -1DM1 -output: -TrinitySeven : (1DM1) [1]→[7] > 7 -rand: -1/6 -============================ -input: -1DM -output: -TrinitySeven : (1DM) [1] > 1 -rand: -1/6 -============================ -input: -1DM<+1 -output: - -rand: -============================ -input: -1DM-1 -output: -TrinitySeven : (1DM-1) [1]-1 > 0 -rand: -1/6 -============================ -input: -2DM1-1 -output: -rand: -1/6 -============================ -input: -2DM1+1 -output: -TrinitySeven : (2DM1+1) [1,6]→[6,7]+1 > 43 -rand: -1/6,6/6 -============================ -input: -2DM1 -output: -TrinitySeven : (2DM1) [1,6]→[6,7] > 42 -rand: -1/6,6/6 -============================ -input: -2DM2 -output: -TrinitySeven : (2DM2) [1,6]→[7,7] > 49 -rand: -1/6,6/6 -============================ -input: -2DM1-1 -output: -TrinitySeven : (2DM1-1) [1,6]→[6,7]-1 > 41 -rand: -1/6,6/6 -============================ -input: -2DM1+1 -output: -TrinitySeven : (2DM1+1) [1,6]→[6,7]+1 > 43 -rand: -1/6,6/6 -============================ -input: -2DM -output: -TrinitySeven : (2DM) [1,6] > 7 -rand: -1/6,6/6 -============================ -input: -2DM+1 -output: -TrinitySeven : (2DM+1) [1,6]+1 > 8 -rand: -1/6,6/6 -============================ -input: -2DM-1 -output: -TrinitySeven : (2DM-1) [1,6]-1 > 6 -rand: -1/6,6/6 -============================ -input: -3DM1-1 -output: -TrinitySeven : (3DM1-1) [1,6,3]→[3,6,7]-1 > 44 -rand: -1/6,6/6,3/6 -============================ -input: -3DM1+1 -output: -TrinitySeven : (3DM1+1) [1,6,3]→[3,6,7]+1 > 46 -rand: -1/6,6/6,3/6 -============================ -input: -3DM1 -output: -TrinitySeven : (3DM1) [1,6,3]→[3,6,7] > 45 -rand: -1/6,6/6,3/6 -============================ -input: -3DM2 -output: -TrinitySeven : (3DM2) [1,6,3]→[6,7,7] > 294 -rand: -1/6,6/6,3/6 -============================ -input: -3DM3 -output: -TrinitySeven : (3DM3) [1,6,3]→[7,7,7] > 343 -rand: -1/6,6/6,3/6 -============================ -input: -4DM2 -output: -TrinitySeven : (4DM2) [1,2,3,4]→[3,4,7,7] > 199 -rand: -1/6,2/6,3/6,4/6 -============================ -input: -4DM4 -output: -TrinitySeven : (4DM4) [1,2,3,4]→[7,7,7,7] > 2401 -rand: -1/6,2/6,3/6,4/6 -============================ -input: -3DM1-1 -output: -TrinitySeven : (3DM1-1) [1,6,3]→[3,6,7]-1 > 44 -rand: -1/6,6/6,3/6 -============================ -input: -3DM1+1 -output: -TrinitySeven : (3DM1+1) [1,6,3]→[3,6,7]+1 > 46 -rand: -1/6,6/6,3/6 -============================ -input: -3DM -output: -TrinitySeven : (3DM) [1,6,3] > 10 -rand: -1/6,6/6,3/6 -============================ -input: -3DM+1 -output: -TrinitySeven : (3DM+1) [1,6,3]+1 > 11 -rand: -1/6,6/6,3/6 -============================ -input: -3DM-1 -output: -TrinitySeven : (3DM-1) [1,6,3]-1 > 9 -rand: -1/6,6/6,3/6 -============================ -input: -TR-1<=50+20 -output:TrinitySeven : (TR-1<=50+20) > 1[1] > クリティカル -rand:1/100 -============================ -input: -TR-1<=50+20 -output:TrinitySeven : (TR-1<=50+20) > 100[100] > ファンブル -rand:100/100 -============================ -input: -TR-1<=50+20 -output: -rand:100/20 -============================ -input: -TR-1<=50+20 -output: -rand:100/90 -============================ -input: -TR+1<=50-20 -output:TrinitySeven : (TR+1<=50-20) > 1[1] > クリティカル -rand:1/100 -============================ -input: -TR+1<=50-20 -output:TrinitySeven : (TR+1<=50-20) > 100[100] > ファンブル -rand:100/100 -============================ -input: -TR+1<=50-20 -output: -rand:100/20 -============================ -input: -TR+1<=50-20 -output: -rand:100/90 - -============================ -input: -TR+1<=50 -output:TrinitySeven : (TR+1<=50) > 1[1] > クリティカル -rand:1/100 -============================ -input: -TR-1<=50 -output:TrinitySeven : (TR-1<=50) > 100[100] > ファンブル -rand:100/100 -============================ -input: -TR-1<=50 -output: -rand:100/20 -============================ -input: -TR-1<=50 -output: -rand:100/90 - -============================ -input: -TR<=50+20 -output:TrinitySeven : (TR<=50+20) > 1[1] > クリティカル -rand:1/100 -============================ -input: -TR<=50+20 -output:TrinitySeven : (TR<=50+20) > 100[100] > ファンブル -rand:100/100 -============================ -input: -TR<=50+20 -output: -rand:100/20 -============================ -input: -TR<=50+20 -output: -rand:100/90 -============================ -input: -TR<=50 -output:TrinitySeven : (TR<=50) > 1[1] > クリティカル -rand:1/100 -============================ -input: -TR<=50 -output:TrinitySeven : (TR<=50) > 100[100] > ファンブル -rand:100/100 -============================ -input: -TR<=50 -output: -rand:100/20 -============================ -input: -TR<=50 -output: -rand:100/90 -============================ -input: -TRNAME -output: -rand: -============================ -input: -TRNAME -output:TrinitySeven : 春日 , アラタ/聖 -rand:1/100,1/100 -============================ -input: -TRNAME -output:TrinitySeven : 魔王 , 目についた物の名前(シャーペン、メガネなど) -rand:100/100,100/100 -============================ -input: -TRNAME -output:TrinitySeven : サンクチュアリ , ミフユ/サリエル -rand:70/100,70/100 -============================ -input: -TRNAME -output:TrinitySeven : 北千住 , スカー/綾瀬 -rand:30/100,30/100 -============================ -input: -1D100<=50 -output:TrinitySeven : (1D100<=50) > 1 > クリティカル -rand:1/100 -============================ -input: -1D100<=50 -output:TrinitySeven : (1D100<=50) > 99 > ファンブル -rand:99/100 -============================ -input: -1D100<=50 -output:TrinitySeven : (1D100<=50) > 100 > ファンブル -rand:100/100 -============================ -input: -1D100<=50 -output:TrinitySeven : (1D100<=50) > 49 > 成功 -rand:49/100 -============================ -input: -1D100<=50 -output:TrinitySeven : (1D100<=50) > 50 > 成功 -rand:50/100 -============================ -input: -1D100<=50 -output:TrinitySeven : (1D100<=50) > 51 > 失敗 -rand:51/100 -============================ -input: -1D100>=? 目標値?でバグらない -output: -TrinitySeven : (1D100>=?) > 42 > 失敗 -rand:42/100 diff --git a/src/src_bcdice/test/data/TunnelsAndTrolls.txt b/src/src_bcdice/test/data/TunnelsAndTrolls.txt deleted file mode 100644 index 38faa7726..000000000 --- a/src/src_bcdice/test/data/TunnelsAndTrolls.txt +++ /dev/null @@ -1,839 +0,0 @@ -input: -2d6>=2 -output: -TunnelsAndTrolls : (2D6>=2) > 19[5,5][4,5] > 19 > 成功 -rand:5/6,5/6,5/6,4/6 -============================ -input: -2d6>=2 -output: -TunnelsAndTrolls : (2D6>=2) > 7[1,6] > 7 > 成功 > 経験値-18.2 > 悪意1 -rand:1/6,6/6 -============================ -input: -2d6>=2 -output: -TunnelsAndTrolls : (2D6>=2) > 5[1,4] > 5 > 成功 > 経験値-13 -rand:1/6,4/6 -============================ -input: -2d6>=2 -output: -TunnelsAndTrolls : (2D6>=2) > 5[2,3] > 5 > 成功 > 経験値-13 -rand:2/6,3/6 -============================ -input: -2d6>=2 -output: -TunnelsAndTrolls : (2D6>=2) > 8[3,5] > 8 > 成功 > 経験値-20.8 -rand:5/6,3/6 -============================ -input: -2d6>=2 -output: -TunnelsAndTrolls : (2D6>=2) > 13[4,4][2,3] > 13 > 成功 -rand:4/6,4/6,3/6,2/6 -============================ -input: -2d6>=2 -output: -TunnelsAndTrolls : (2D6>=2) > 8[3,5] > 8 > 成功 > 経験値-20.8 -rand:3/6,5/6 -============================ -input: -2d6>=2 -output: -TunnelsAndTrolls : (2D6>=2) > 6[1,5] > 6 > 成功 > 経験値-15.6 -rand:5/6,1/6 -============================ -input: -2d6>=2 -output: -TunnelsAndTrolls : (2D6>=2) > 10[4,6] > 10 > 成功 > 経験値-26 > 悪意1 -rand:6/6,4/6 -============================ -input: -2d6>=2 -output: -TunnelsAndTrolls : (2D6>=2) > 6[2,4] > 6 > 成功 > 経験値-15.6 -rand:4/6,2/6 -============================ -input: -2d6>=10 -output: -TunnelsAndTrolls : (2D6>=10) > 6[2,4] > 6 > 失敗 -rand:4/6,2/6 -============================ -input: -2d6>=10 -output: -TunnelsAndTrolls : (2D6>=10) > 6[2,4] > 6 > 失敗 -rand:4/6,2/6 -============================ -input: -2d6>=10 -output: -TunnelsAndTrolls : (2D6>=10) > 11[1,1][4,5] > 11 > 成功 -rand:1/6,1/6,5/6,4/6 -============================ -input: -2d6>=10 -output: -TunnelsAndTrolls : (2D6>=10) > 13[1,1][5,6] > 13 > 成功 > 悪意1 -rand:1/6,1/6,6/6,5/6 -============================ -input: -2d6>=10 -output: -TunnelsAndTrolls : (2D6>=10) > 6[1,5] > 6 > 失敗 -rand:5/6,1/6 -============================ -input: -2d6>=10 -output: -TunnelsAndTrolls : (2D6>=10) > 4[1,3] > 4 > 失敗 -rand:3/6,1/6 -============================ -input: -2d6>=10 -output: -TunnelsAndTrolls : (2D6>=10) > 8[3,5] > 8 > 失敗 -rand:3/6,5/6 -============================ -input: -2d6>=10 -output: -TunnelsAndTrolls : (2D6>=10) > 10[4,6] > 10 > 成功 > 経験値-10 > 悪意1 -rand:4/6,6/6 -============================ -input: -2d6>=10 -output: -TunnelsAndTrolls : (2D6>=10) > 5[2,3] > 5 > 失敗 -rand:3/6,2/6 -============================ -input: -2d6>=10 -output: -TunnelsAndTrolls : (2D6>=10) > 4[1,3] > 4 > 失敗 -rand:1/6,3/6 -============================ -input: -2d6>=7 -output: -TunnelsAndTrolls : (2D6>=7) > 10[4,6] > 10 > 成功 > 経験値-16 > 悪意1 -rand:6/6,4/6 -============================ -input: -2d6>=7 -output: -TunnelsAndTrolls : (2D6>=7) > 4[1,3] > 4 > 失敗 -rand:3/6,1/6 -============================ -input: -2d6>=7 -output: -TunnelsAndTrolls : (2D6>=7) > 9[4,5] > 9 > 成功 > 経験値-14.4 -rand:5/6,4/6 -============================ -input: -2d6>=7 -output: -TunnelsAndTrolls : (2D6>=7) > 17[4,4][3,3][1,2] > 17 > 成功 -rand:4/6,4/6,3/6,3/6,2/6,1/6 -============================ -input: -2d6>=7 -output: -TunnelsAndTrolls : (2D6>=7) > 6[1,5] > 6 > 失敗 -rand:1/6,5/6 -============================ -input: -2d6>=7 -output: -TunnelsAndTrolls : (2D6>=7) > 6[2,4] > 6 > 失敗 -rand:2/6,4/6 -============================ -input: -2d6>=7 -output: -TunnelsAndTrolls : (2D6>=7) > 5[1,4] > 5 > 失敗 -rand:4/6,1/6 -============================ -input: -2d6>=7 -output: -TunnelsAndTrolls : (2D6>=7) > 7[1,6] > 7 > 成功 > 経験値-11.2 > 悪意1 -rand:1/6,6/6 -============================ -input: -2d6>=7 -output: -TunnelsAndTrolls : (2D6>=7) > 6[1,5] > 6 > 失敗 -rand:1/6,5/6 -============================ -input: -2d6>=7 -output: -TunnelsAndTrolls : (2D6>=7) > 9[3,6] > 9 > 成功 > 経験値-14.4 > 悪意1 -rand:3/6,6/6 -============================ -input: -2D6>=1Lv -output: -TunnelsAndTrolls : (2D6>=20) > 4[1,3] > 4 > 失敗 -rand:1/6,3/6 -============================ -input: -2D6>=1Lv -output: -TunnelsAndTrolls : (2D6>=20) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 -============================ -input: -2D6>=1Lv -output: -TunnelsAndTrolls : (2D6>=20) > 5[2,3] > 5 > 失敗 -rand:2/6,3/6 -============================ -input: -2D6>=1Lv -output: -TunnelsAndTrolls : (2D6>=20) > 10[4,6] > 10 > 失敗 > 悪意1 -rand:6/6,4/6 -============================ -input: -2D6>=1Lv -output: -TunnelsAndTrolls : (2D6>=20) > 9[4,5] > 9 > 失敗 -rand:5/6,4/6 -============================ -input: -2D6>=1Lv -output: -TunnelsAndTrolls : (2D6>=20) > 10[4,6] > 10 > 失敗 > 悪意1 -rand:4/6,6/6 -============================ -input: -2D6>=1Lv -output: -TunnelsAndTrolls : (2D6>=20) > 7[3,4] > 7 > 失敗 -rand:4/6,3/6 -============================ -input: -2D6>=1Lv -output: -TunnelsAndTrolls : (2D6>=20) > 3[1,2] > 3 > 自動失敗 -rand:2/6,1/6 -============================ -input: -2D6>=1Lv -output: -TunnelsAndTrolls : (2D6>=20) > 23[3,3][5,5][3,4] > 23 > 成功 -rand:3/6,3/6,5/6,5/6,4/6,3/6 -============================ -input: -2D6>=1Lv -output: -TunnelsAndTrolls : (2D6>=20) > 10[4,6] > 10 > 失敗 > 悪意1 -rand:6/6,4/6 -============================ -input: -2D6>=10Lv -output: -TunnelsAndTrolls : (2D6>=65) > 6[2,4] > 6 > 失敗 -rand:2/6,4/6 -============================ -input: -2D6>=10Lv -output: -TunnelsAndTrolls : (2D6>=65) > 7[3,4] > 7 > 失敗 -rand:4/6,3/6 -============================ -input: -2D6>=10Lv -output: -TunnelsAndTrolls : (2D6>=65) > 8[3,5] > 8 > 失敗 -rand:3/6,5/6 -============================ -input: -2D6>=10Lv -output: -TunnelsAndTrolls : (2D6>=65) > 21[4,4][3,3][3,4] > 21 > 失敗 -rand:4/6,4/6,3/6,3/6,4/6,3/6 -============================ -input: -2D6>=10Lv -output: -TunnelsAndTrolls : (2D6>=65) > 5[2,3] > 5 > 失敗 -rand:3/6,2/6 -============================ -input: -2D6>=10Lv -output: -TunnelsAndTrolls : (2D6>=65) > 6[1,5] > 6 > 失敗 -rand:5/6,1/6 -============================ -input: -2D6>=10Lv -output: -TunnelsAndTrolls : (2D6>=65) > 9[3,6] > 9 > 失敗 > 悪意1 -rand:3/6,6/6 -============================ -input: -2D6>=10Lv -output: -TunnelsAndTrolls : (2D6>=65) > 6[2,4] > 6 > 失敗 -rand:4/6,2/6 -============================ -input: -2D6>=10Lv -output: -TunnelsAndTrolls : (2D6>=65) > 8[3,5] > 8 > 失敗 -rand:5/6,3/6 -============================ -input: -2D6>=10Lv -output: -TunnelsAndTrolls : (2D6>=65) > 6[1,5] > 6 > 失敗 -rand:5/6,1/6 -============================ -input: -2D6+1>=1Lv -output: -TunnelsAndTrolls : (2D6+1>=20) > 10[4,6]+1 > 11 > 失敗 > 悪意1 -rand:4/6,6/6 -============================ -input: -2D6+1>=1Lv -output: -TunnelsAndTrolls : (2D6+1>=20) > 8[2,6]+1 > 9 > 失敗 > 悪意1 -rand:6/6,2/6 -============================ -input: -2D6+1>=1Lv -output: -TunnelsAndTrolls : (2D6+1>=20) > 9[3,6]+1 > 10 > 失敗 > 悪意1 -rand:3/6,6/6 -============================ -input: -2D6+1>=1Lv -output: -TunnelsAndTrolls : (2D6+1>=20) > 11[5,6]+1 > 12 > 失敗 > 悪意1 -rand:6/6,5/6 -============================ -input: -2D6+1>=1Lv -output: -TunnelsAndTrolls : (2D6+1>=20) > 5[1,4]+1 > 6 > 失敗 -rand:4/6,1/6 -============================ -input: -2D6+1>=1Lv -output: -TunnelsAndTrolls : (2D6+1>=20) > 7[2,5]+1 > 8 > 失敗 -rand:2/6,5/6 -============================ -input: -2D6+1>=1Lv -output: -TunnelsAndTrolls : (2D6+1>=20) > 9[4,5]+1 > 10 > 失敗 -rand:4/6,5/6 -============================ -input: -2D6+1>=1Lv -output: -TunnelsAndTrolls : (2D6+1>=20) > 33[4,4][6,6][5,5][1,2]+1 > 34 > 成功 > 悪意2 -rand:4/6,4/6,6/6,6/6,5/6,5/6,1/6,2/6 -============================ -input: -2D6+1>=1Lv -output: -TunnelsAndTrolls : (2D6+1>=20) > 5[2,3]+1 > 6 > 失敗 -rand:3/6,2/6 -============================ -input: -2D6+1>=1Lv -output: -TunnelsAndTrolls : (2D6+1>=20) > 7[3,4]+1 > 8 > 失敗 -rand:4/6,3/6 -============================ -input: -2D6+10>=10Lv -output: -TunnelsAndTrolls : (2D6+10>=65) > 17[6,6][1,4]+10 > 27 > 失敗 > 悪意2 -rand:6/6,6/6,1/6,4/6 -============================ -input: -2D6+10>=10Lv -output: -TunnelsAndTrolls : (2D6+10>=65) > 5[2,3]+10 > 15 > 失敗 -rand:2/6,3/6 -============================ -input: -2D6+10>=10Lv -output: -TunnelsAndTrolls : (2D6+10>=65) > 8[2,6]+10 > 18 > 失敗 > 悪意1 -rand:2/6,6/6 -============================ -input: -2D6+10>=10Lv -output: -TunnelsAndTrolls : (2D6+10>=65) > 9[4,5]+10 > 19 > 失敗 -rand:5/6,4/6 -============================ -input: -2D6+10>=10Lv -output: -TunnelsAndTrolls : (2D6+10>=65) > 10[4,6]+10 > 20 > 失敗 > 悪意1 -rand:4/6,6/6 -============================ -input: -2D6+10>=10Lv -output: -TunnelsAndTrolls : (2D6+10>=65) > 6[1,5]+10 > 16 > 失敗 -rand:1/6,5/6 -============================ -input: -2D6+10>=10Lv -output: -TunnelsAndTrolls : (2D6+10>=65) > 9[4,5]+10 > 19 > 失敗 -rand:5/6,4/6 -============================ -input: -2D6+10>=10Lv -output: -TunnelsAndTrolls : (2D6+10>=65) > 6[2,4]+10 > 16 > 失敗 -rand:4/6,2/6 -============================ -input: -2D6+10>=10Lv -output: -TunnelsAndTrolls : (2D6+10>=65) > 12[2,2][3,5]+10 > 22 > 失敗 -rand:2/6,2/6,5/6,3/6 -============================ -input: -2D6+10>=10Lv -output: -TunnelsAndTrolls : (2D6+10>=65) > 8[2,6]+10 > 18 > 失敗 > 悪意1 -rand:6/6,2/6 -============================ -input: -2d6>=? -output: -TunnelsAndTrolls : (2D6>=?) > 15[6,6][1,2] > 15 > 失敗 > 悪意2 -rand:6/6,6/6,1/6,2/6 -============================ -input: -2d6>=? -output: -TunnelsAndTrolls : (2D6>=?) > 10[4,6] > 10 > 失敗 > 経験値10 > 悪意1 -rand:6/6,4/6 -============================ -input: -2d6>=? -output: -TunnelsAndTrolls : (2D6>=?) > 21[6,6][3,6] > 21 > 失敗 > 悪意3 -rand:6/6,6/6,3/6,6/6 -============================ -input: -2d6>=? -output: -TunnelsAndTrolls : (2D6>=?) > 14[2,2][4,6] > 14 > 失敗 > 悪意1 -rand:2/6,2/6,4/6,6/6 -============================ -input: -2d6>=? -output: -TunnelsAndTrolls : (2D6>=?) > 4[1,3] > 4 > 失敗 > 経験値4 -rand:3/6,1/6 -============================ -input: -2d6>=? -output: -TunnelsAndTrolls : (2D6>=?) > 11[5,6] > 11 > 失敗 > 経験値11 > 悪意1 -rand:5/6,6/6 -============================ -input: -2d6>=? -output: -TunnelsAndTrolls : (2D6>=?) > 11[5,6] > 11 > 失敗 > 経験値11 > 悪意1 -rand:5/6,6/6 -============================ -input: -2d6>=? -output: -TunnelsAndTrolls : (2D6>=?) > 7[1,6] > 7 > 失敗 > 経験値7 > 悪意1 -rand:6/6,1/6 -============================ -input: -2d6>=? -output: -TunnelsAndTrolls : (2D6>=?) > 13[3,3][1,6] > 13 > 失敗 > 悪意1 -rand:3/6,3/6,1/6,6/6 -============================ -input: -2d6>=? -output: -TunnelsAndTrolls : (2D6>=?) > 7[2,5] > 7 > 失敗 > 経験値7 -rand:2/6,5/6 -============================ -input: -2d6+1>=? -output: -TunnelsAndTrolls : (2D6+1>=?) > 8[2,6]+1 > 9 > 失敗 > 経験値8 > 悪意1 -rand:6/6,2/6 -============================ -input: -2d6+1>=? -output: -TunnelsAndTrolls : (2D6+1>=?) > 9[3,6]+1 > 10 > 失敗 > 経験値9 > 悪意1 -rand:6/6,3/6 -============================ -input: -2d6+1>=? -output: -TunnelsAndTrolls : (2D6+1>=?) > 6[2,4]+1 > 7 > 失敗 > 経験値6 -rand:2/6,4/6 -============================ -input: -2d6+1>=? -output: -TunnelsAndTrolls : (2D6+1>=?) > 6[1,5]+1 > 7 > 失敗 > 経験値6 -rand:1/6,5/6 -============================ -input: -2d6+1>=? -output: -TunnelsAndTrolls : (2D6+1>=?) > 3[1,2]+1 > 4 > 自動失敗 -rand:1/6,2/6 -============================ -input: -2d6+1>=? -output: -TunnelsAndTrolls : (2D6+1>=?) > 10[1,1][2,6]+1 > 11 > 失敗 > 悪意1 -rand:1/6,1/6,6/6,2/6 -============================ -input: -2d6+1>=? -output: -TunnelsAndTrolls : (2D6+1>=?) > 8[2,6]+1 > 9 > 失敗 > 経験値8 > 悪意1 -rand:2/6,6/6 -============================ -input: -2d6+1>=? -output: -TunnelsAndTrolls : (2D6+1>=?) > 6[2,4]+1 > 7 > 失敗 > 経験値6 -rand:4/6,2/6 -============================ -input: -2d6+1>=? -output: -TunnelsAndTrolls : (2D6+1>=?) > 14[3,3][3,5]+1 > 15 > 失敗 -rand:3/6,3/6,3/6,5/6 -============================ -input: -2d6+1>=? -output: -TunnelsAndTrolls : (2D6+1>=?) > 21[5,5][5,6]+1 > 22 > 失敗 > 悪意1 -rand:5/6,5/6,6/6,5/6 -============================ -input: -2d6+10>=? -output: -TunnelsAndTrolls : (2D6+10>=?) > 11[5,6]+10 > 21 > 1Lv成功 > 経験値11 > 悪意1 -rand:5/6,6/6 -============================ -input: -2d6+10>=? -output: -TunnelsAndTrolls : (2D6+10>=?) > 9[3,6]+10 > 19 > 失敗 > 経験値9 > 悪意1 -rand:6/6,3/6 -============================ -input: -2d6+10>=? -output: -TunnelsAndTrolls : (2D6+10>=?) > 7[2,5]+10 > 17 > 失敗 > 経験値7 -rand:2/6,5/6 -============================ -input: -2d6+10>=? -output: -TunnelsAndTrolls : (2D6+10>=?) > 7[1,6]+10 > 17 > 失敗 > 経験値7 > 悪意1 -rand:1/6,6/6 -============================ -input: -2d6+10>=? -output: -TunnelsAndTrolls : (2D6+10>=?) > 8[2,6]+10 > 18 > 失敗 > 経験値8 > 悪意1 -rand:2/6,6/6 -============================ -input: -2d6+10>=? -output: -TunnelsAndTrolls : (2D6+10>=?) > 3[1,2]+10 > 13 > 自動失敗 -rand:1/6,2/6 -============================ -input: -2d6+10>=? -output: -TunnelsAndTrolls : (2D6+10>=?) > 12[2,2][3,5]+10 > 22 > 失敗 -rand:2/6,2/6,3/6,5/6 -============================ -input: -2d6+10>=? -output: -TunnelsAndTrolls : (2D6+10>=?) > 9[3,6]+10 > 19 > 失敗 > 経験値9 > 悪意1 -rand:3/6,6/6 -============================ -input: -2d6+10>=? -output: -TunnelsAndTrolls : (2D6+10>=?) > 7[1,6]+10 > 17 > 失敗 > 経験値7 > 悪意1 -rand:6/6,1/6 -============================ -input: -2d6+10>=? -output: -TunnelsAndTrolls : (2D6+10>=?) > 11[5,6]+10 > 21 > 1Lv成功 > 経験値11 > 悪意1 -rand:5/6,6/6 -============================ -input: -5BS -output: -TunnelsAndTrolls : (5R6) > 30[1,2,5,5,5][3,4,5] > 30 -rand:5/6,5/6,1/6,2/6,5/6,3/6,5/6,4/6 -============================ -input: -5BS -output: -TunnelsAndTrolls : (5R6) > 33[1,1,4,4,4][1,2][3,4,4][1,4] > 33 -rand:1/6,4/6,4/6,4/6,1/6,1/6,2/6,3/6,4/6,4/6,4/6,1/6 -============================ -input: -5BS -output: -TunnelsAndTrolls : (5R6) > 22[1,2,2,4,6][3,4] > 22 > 悪意1 -rand:4/6,6/6,2/6,2/6,1/6,4/6,3/6 -============================ -input: -5BS -output: -TunnelsAndTrolls : (5R6) > 20[1,3,3,4,5][1,3] > 20 -rand:3/6,1/6,5/6,3/6,4/6,1/6,3/6 -============================ -input: -5BS -output: -TunnelsAndTrolls : (5R6) > 25[2,3,4,5,6][1,4]-1 > 24 > 悪意1 -rand:2/6,3/6,6/6,4/6,5/6,1/6,4/6 -============================ -input: -5BS -output: -TunnelsAndTrolls : (5R6) > 22[1,2,2,5,6][1,5] > 22 > 悪意1 -rand:2/6,1/6,5/6,2/6,6/6,5/6,1/6 -============================ -input: -5BS -output: -TunnelsAndTrolls : (5R6) > 26[2,2,3,4,5][3,3][1,3] > 26 -rand:2/6,5/6,2/6,3/6,4/6,3/6,3/6,1/6,3/6 -============================ -input: -5BS -output: -TunnelsAndTrolls : (5R6) > 41[1,1,2,4,4][2,5][6,6][4,6] > 41 > 悪意3 -rand:4/6,1/6,4/6,2/6,1/6,2/6,5/6,6/6,6/6,4/6,6/6 -============================ -input: -5BS -output: -TunnelsAndTrolls : (5R6) > 27[1,3,3,3,6][2,3,6] > 27 > 悪意2 -rand:3/6,3/6,3/6,1/6,6/6,3/6,6/6,2/6 -============================ -input: -5BS -output: -TunnelsAndTrolls : (5R6) > 35[1,2,3,5,5][5,5][4,5] > 35 -rand:1/6,3/6,2/6,5/6,5/6,5/6,5/6,4/6,5/6 -============================ -input: -5BS+5 -output: -TunnelsAndTrolls : (5R6+5) > 26[1,1,3,3,5][2,4][3,4]+5 > 31 -rand:1/6,3/6,5/6,1/6,3/6,4/6,2/6,4/6,3/6 -============================ -input: -5BS+5 -output: -TunnelsAndTrolls : (5R6+5) > 27[1,2,5,5,6][3,5]+5 > 32 > 悪意1 -rand:2/6,1/6,5/6,5/6,6/6,3/6,5/6 -============================ -input: -5BS+5 -output: -TunnelsAndTrolls : (5R6+5) > 24[1,1,4,5,6][3,4]+5 > 29 > 悪意1 -rand:4/6,1/6,1/6,5/6,6/6,4/6,3/6 -============================ -input: -5BS+5 -output: -TunnelsAndTrolls : (5R6+5) > 27[1,3,4,6,6][2,5]+5 > 32 > 悪意2 -rand:6/6,1/6,6/6,3/6,4/6,2/6,5/6 -============================ -input: -5BS+5 -output: -TunnelsAndTrolls : (5R6+5) > 27[1,2,4,4,6][4,6]+5 > 32 > 悪意2 -rand:6/6,2/6,1/6,4/6,4/6,6/6,4/6 -============================ -input: -5BS+5 -output: -TunnelsAndTrolls : (5R6+5) > 28[1,2,4,5,6][4,6]-1+5 > 32 > 悪意2 -rand:5/6,1/6,4/6,6/6,2/6,6/6,4/6 -============================ -input: -5BS+5 -output: -TunnelsAndTrolls : (5R6+5) > 19[1,2,3,3,4][1,5]+5 > 24 -rand:4/6,2/6,1/6,3/6,3/6,5/6,1/6 -============================ -input: -5BS+5 -output: -TunnelsAndTrolls : (5R6+5) > 37[2,2,5,6,6][3,4][1,1][1,6]+5 > 42 > 悪意3 -rand:2/6,2/6,6/6,6/6,5/6,4/6,3/6,1/6,1/6,1/6,6/6 -============================ -input: -5BS+5 -output: -TunnelsAndTrolls : (5R6+5) > 21[1,2,3,3,6][1,5]+5 > 26 > 悪意1 -rand:2/6,3/6,1/6,6/6,3/6,1/6,5/6 -============================ -input: -5BS+5 -output: -TunnelsAndTrolls : (5R6+5) > 28[1,3,3,6,6][2,4][1,2]+5 > 33 > 悪意2 -rand:3/6,6/6,6/6,3/6,1/6,4/6,2/6,2/6,1/6 -============================ -input: -10HBS -output: -TunnelsAndTrolls : (10R6[H]) > 81[1,1,1,1,3,3,4,4,4,6][1,4,5,6,6][2,4,5][1,2,3,4][1,3,6] > 81 > 悪意4 -rand:1/6,3/6,6/6,3/6,1/6,4/6,4/6,1/6,1/6,4/6,5/6,6/6,4/6,6/6,1/6,5/6,4/6,2/6,4/6,3/6,2/6,1/6,6/6,3/6,1/6 -============================ -input: -10HBS -output: -TunnelsAndTrolls : (10R6[H]) > 179[1,2,2,3,3,3,5,5,6,6][1,4,5][1,2,2,2][2,4,5][2,4,6][2,2,2,3][4,6,6,6][2,3,3,6][5,5,5][1,5,5,5][1,2,6,6][3,4,5] > 179 > 悪意9 -rand:5/6,2/6,1/6,3/6,3/6,6/6,5/6,2/6,3/6,6/6,1/6,5/6,4/6,2/6,2/6,2/6,1/6,5/6,2/6,4/6,2/6,4/6,6/6,2/6,2/6,3/6,2/6,6/6,4/6,6/6,6/6,3/6,2/6,3/6,6/6,5/6,5/6,5/6,5/6,5/6,1/6,5/6,2/6,1/6,6/6,6/6,5/6,3/6,4/6 -============================ -input: -10HBS -output: -TunnelsAndTrolls : (10R6[H]) > 105[2,2,2,3,3,4,4,4,5,5][1,3,3,4][2,5,6][1,3,5,6][1,3,3][3,5,6][2,4,5] > 105 > 悪意3 -rand:3/6,5/6,5/6,2/6,4/6,2/6,4/6,2/6,3/6,4/6,3/6,4/6,1/6,3/6,6/6,2/6,5/6,5/6,3/6,1/6,6/6,3/6,3/6,1/6,3/6,6/6,5/6,5/6,2/6,4/6 -============================ -input: -10HBS -output: -TunnelsAndTrolls : (10R6[H]) > 94[1,2,2,2,3,3,3,4,5,6][4,5,6,6][2,2,3,5][4,5,5][1,3,4][1,2,5] > 94 > 悪意3 -rand:1/6,2/6,2/6,2/6,4/6,6/6,5/6,3/6,3/6,3/6,6/6,5/6,6/6,4/6,5/6,2/6,3/6,2/6,5/6,5/6,4/6,4/6,1/6,3/6,1/6,2/6,5/6 -============================ -input: -10HBS -output: -TunnelsAndTrolls : (10R6[H]) > 91[1,2,2,3,3,4,4,4,5,6][1,4,4][5,6,6][1,2,3,6][2,3,5][1,2,6] > 91 > 悪意5 -rand:2/6,3/6,4/6,3/6,1/6,4/6,2/6,4/6,6/6,5/6,4/6,4/6,1/6,6/6,5/6,6/6,6/6,3/6,1/6,2/6,2/6,3/6,5/6,2/6,6/6,1/6 -============================ -input: -10HBS -output: -TunnelsAndTrolls : (10R6[H]) > 109[1,1,1,2,2,3,4,5,6,6][3,3,3,4][3,5,6][1,5,5][1,1,2,2][3,4,6][1,4,6][2,3,5] > 109 > 悪意5 -rand:1/6,6/6,1/6,1/6,6/6,5/6,4/6,3/6,2/6,2/6,4/6,3/6,3/6,3/6,5/6,3/6,6/6,5/6,1/6,5/6,2/6,1/6,2/6,1/6,6/6,3/6,4/6,4/6,6/6,1/6,3/6,5/6,2/6 -============================ -input: -10HBS -output: -TunnelsAndTrolls : (10R6[H]) > 128[1,1,2,2,2,3,4,4,5,5][1,1,2][1,2,2,5][3,3,6][1,2,5][1,2,6][4,4,4][1,3,3][2,4,5,5][1,2,2][1,2,4][1,3,5] > 128 > 悪意2 -rand:1/6,2/6,4/6,4/6,5/6,2/6,2/6,5/6,1/6,3/6,1/6,2/6,1/6,2/6,5/6,1/6,2/6,3/6,6/6,3/6,5/6,1/6,2/6,1/6,6/6,2/6,4/6,4/6,4/6,3/6,3/6,1/6,5/6,2/6,4/6,5/6,1/6,2/6,2/6,1/6,2/6,4/6,3/6,1/6,5/6 -============================ -input: -10HBS -output: -TunnelsAndTrolls : (10R6[H]) > 116[1,1,1,1,4,5,5,5,5,6][2,4,4,5,6][1,2,3,4,6][5,5,6][3,3,5][1,1,3][1,1,3][1,3,4] > 116 > 悪意4 -rand:1/6,1/6,6/6,1/6,5/6,1/6,5/6,5/6,5/6,4/6,2/6,6/6,4/6,4/6,5/6,4/6,2/6,3/6,1/6,6/6,5/6,5/6,6/6,3/6,3/6,5/6,1/6,3/6,1/6,1/6,1/6,3/6,1/6,4/6,3/6 -============================ -input: -10HBS -output: -TunnelsAndTrolls : (10R6[H]) > 86[1,2,3,3,3,4,5,5,6,6][1,1,2,5][1,5,6][1,2,3][3,4,4][1,4,5] > 86 > 悪意3 -rand:3/6,5/6,5/6,3/6,6/6,4/6,6/6,1/6,2/6,3/6,2/6,5/6,1/6,1/6,5/6,6/6,1/6,3/6,1/6,2/6,3/6,4/6,4/6,4/6,1/6,5/6 -============================ -input: -10HBS -output: -TunnelsAndTrolls : (10R6[H]) > 86[1,1,1,3,3,3,3,4,6,6][1,2,2,3][1,2,3,4,6][2,3,3][1,1,2][2,4,5][1,2,5] > 86 > 悪意3 -rand:3/6,1/6,3/6,1/6,1/6,6/6,4/6,6/6,3/6,3/6,2/6,1/6,2/6,3/6,3/6,1/6,4/6,6/6,2/6,2/6,3/6,3/6,2/6,1/6,1/6,2/6,5/6,4/6,1/6,5/6,2/6 -============================ -input: -10HBS+3 -output: -TunnelsAndTrolls : (10R6+3[H]) > 106[1,2,3,3,3,4,5,6,6,6][1,4,5,6][5,5,5,5][1,3,5,6,6][2,3,5]+3 > 109 > 悪意6 -rand:3/6,6/6,6/6,1/6,4/6,3/6,6/6,2/6,5/6,3/6,5/6,1/6,4/6,6/6,5/6,5/6,5/6,5/6,3/6,1/6,5/6,6/6,6/6,3/6,2/6,5/6 -============================ -input: -10HBS+3 -output: -TunnelsAndTrolls : (10R6+3[H]) > 104[1,1,1,2,5,5,5,6,6,6][1,3,4,4][3,3,4,5][3,4,5,6][4,5,6][1,2,3]+3 > 107 > 悪意5 -rand:6/6,5/6,5/6,1/6,5/6,6/6,2/6,1/6,6/6,1/6,4/6,4/6,3/6,1/6,3/6,3/6,4/6,5/6,4/6,5/6,3/6,6/6,5/6,4/6,6/6,1/6,2/6,3/6 -============================ -input: -10HBS+3 -output: -TunnelsAndTrolls : (10R6+3[H]) > 108[1,2,2,3,3,3,4,4,5,5][1,1,3][1,3,6,6][2,4,5][3,3,4][2,3,4][1,3,3][1,2,5][2,3,5]+3 > 111 > 悪意2 -rand:5/6,2/6,5/6,2/6,4/6,3/6,3/6,3/6,4/6,1/6,1/6,1/6,3/6,6/6,6/6,1/6,3/6,5/6,4/6,2/6,3/6,4/6,3/6,2/6,3/6,4/6,1/6,3/6,3/6,5/6,1/6,2/6,5/6,3/6,2/6 -============================ -input: -10HBS+3 -output: -TunnelsAndTrolls : (10R6+3[H]) > 83[1,1,1,2,2,3,3,4,6,6][2,3,5,6][2,3,6][3,4,6][3,5,6]+3 > 86 > 悪意6 -rand:2/6,3/6,2/6,1/6,6/6,1/6,3/6,1/6,6/6,4/6,6/6,3/6,5/6,2/6,2/6,6/6,3/6,3/6,4/6,6/6,3/6,6/6,5/6 -============================ -input: -10HBS+3 -output: -TunnelsAndTrolls : (10R6+3[H]) > 115[1,1,2,3,3,4,5,6,6,6][3,3,3][1,1,3][1,2,3,5][1,6,6,6][3,4,5][1,1,2,5][2,5,6]+3 > 118 > 悪意7 -rand:3/6,6/6,1/6,6/6,4/6,3/6,1/6,2/6,6/6,5/6,3/6,3/6,3/6,1/6,3/6,1/6,2/6,5/6,1/6,3/6,1/6,6/6,6/6,6/6,5/6,3/6,4/6,1/6,2/6,5/6,1/6,2/6,5/6,6/6 -============================ -input: -10HBS+3 -output: -TunnelsAndTrolls : (10R6+3[H]) > 138[1,1,1,2,2,3,4,6,6,6][2,4,5,6][4,4,5][1,1,2,5][5,6,6][2,2,4][4,5,6][4,6,6][1,4,6]+3 > 141 > 悪意10 -rand:2/6,2/6,1/6,6/6,1/6,6/6,1/6,3/6,4/6,6/6,6/6,4/6,2/6,5/6,4/6,5/6,4/6,2/6,5/6,1/6,1/6,6/6,6/6,5/6,2/6,4/6,2/6,6/6,5/6,4/6,4/6,6/6,6/6,6/6,1/6,4/6 -============================ -input: -10HBS+3 -output: -TunnelsAndTrolls : (10R6+3[H]) > 92[1,1,2,2,3,3,3,5,6,6][2,3,3][2,3,3][1,2,4,6][1,2,5][1,5,6][2,4,5]+3 > 95 > 悪意4 -rand:3/6,5/6,6/6,6/6,2/6,1/6,2/6,1/6,3/6,3/6,2/6,3/6,3/6,2/6,3/6,3/6,2/6,4/6,1/6,6/6,1/6,5/6,2/6,1/6,5/6,6/6,2/6,5/6,4/6 -============================ -input: -10HBS+3 -output: -TunnelsAndTrolls : (10R6+3[H]) > 132[1,2,2,2,4,5,5,5,6,6][4,4,5,6][2,3,5,6][3,5,5][3,3,6][2,2,6][3,4,5][2,4,6]+3 > 135 > 悪意7 -rand:6/6,2/6,1/6,5/6,2/6,2/6,6/6,5/6,4/6,5/6,4/6,6/6,5/6,4/6,6/6,5/6,3/6,2/6,3/6,5/6,5/6,3/6,6/6,3/6,2/6,2/6,6/6,4/6,5/6,3/6,4/6,2/6,6/6 -============================ -input: -10HBS+3 -output: -TunnelsAndTrolls : (10R6+3[H]) > 86[1,1,2,3,3,3,5,5,5,6][1,1,4][1,3,4,6][1,1,3,4][1,1,2][2,3,5][1,2,6]+3 > 89 > 悪意3 -rand:5/6,1/6,3/6,2/6,1/6,5/6,3/6,6/6,3/6,5/6,1/6,1/6,4/6,3/6,4/6,6/6,1/6,1/6,4/6,1/6,3/6,1/6,1/6,2/6,5/6,2/6,3/6,6/6,2/6,1/6 -============================ -input: -10HBS+3 -output: -TunnelsAndTrolls : (10R6+3[H]) > 102[1,2,3,4,4,4,4,6,6,6][4,4,4,5,6][1,1,5,6][1,3,4,6][2,4,6]+3 > 105 > 悪意7 -rand:6/6,6/6,4/6,4/6,6/6,3/6,2/6,4/6,1/6,4/6,5/6,4/6,6/6,4/6,4/6,1/6,5/6,6/6,1/6,3/6,6/6,4/6,1/6,2/6,6/6,4/6 diff --git a/src/src_bcdice/test/data/TwilightGunsmoke.txt b/src/src_bcdice/test/data/TwilightGunsmoke.txt deleted file mode 100644 index e59d47a1c..000000000 --- a/src/src_bcdice/test/data/TwilightGunsmoke.txt +++ /dev/null @@ -1,185 +0,0 @@ -input: -2D6>=7 -output: -TwilightGunsmoke : (2D6>=7) > 7[2,5] > 7 > 成功 -rand:5/6,2/6 -============================ -input: -2D6>=7 -output: -TwilightGunsmoke : (2D6>=7) > 6[2,4] > 6 > 失敗 -rand:4/6,2/6 -============================ -input: -2D6>=7 -output: -TwilightGunsmoke : (2D6>=7) > 12[6,6] > 12 > 自動成功 -rand:6/6,6/6 -============================ -input: -2D6>=7 -output: -TwilightGunsmoke : (2D6>=7) > 2[1,1] > 2 > 自動失敗 -rand:1/6,1/6 -============================ -input: -2D6+1>=5[11,3] -output: -TwilightGunsmoke : (2D6+1>=5[11,3]) > 6[2,4]+1 > 7 > 成功 -rand:2/6,4/6 -============================ -input: -2D6+1>=5[11,3] -output: -TwilightGunsmoke : (2D6+1>=5[11,3]) > 11[5,6]+1 > 12 > 自動成功 -rand:5/6,6/6 -============================ -input: -2D6+1>=5[11,3] -output: -TwilightGunsmoke : (2D6+1>=5[11,3]) > 3[1,2]+1 > 4 > 自動失敗 -rand:1/6,2/6 -============================ -input: -CT -output: -TwilightGunsmoke : 邂逅表(22) > 【関係:忠誠】 -rand:2/6,2/6 -============================ -input: -OPR -output: -TwilightGunsmoke : オープニングチャート:リアリスティック(12) > おまえはめったにない休暇をエンジョイしていた。映画、デート、エステ、ドラッグ、やり方はお前の好きにしろ。 -rand:1/6,2/6 -============================ -input: -OPC -output: -TwilightGunsmoke : オープニングチャート:シネマティック(32) > おまえは今まさに、暴走したバイオモンスターに喰われそうになっている。こんな時に依頼というのはどんなバカだ。おまえはこのピンチをどう切り抜けたか自由に演出できる。 -rand:3/6,2/6 -============================ -input: -EDR -output: -TwilightGunsmoke : エンディングチャート:リアリスティック(66) > おまえは家族と過ごしている。家族と呼べる相手がいないなら、近所の野良猫でも行きつけのバーのマスターでもいいだろう。 -rand:6/6,6/6 -============================ -input: -EDC -output: -TwilightGunsmoke : エンディングチャート:シネマティック(31) > おまえは悪の黒幕(このシナリオの黒幕とは限らない)拳/拳銃/カタナの一撃で倒し、立ち去っていく。背後で大爆発。悪は滅んだ。 -rand:3/6,1/6 -============================ -input: -RWL -output: -TwilightGunsmoke : 情報収集チャート:荒野(65) > 墜落したUFOを発見する。おまえは見なかったことにしてもよいし、雑誌社に売りつけてもよい。売りつけるなら、1D66×100$を得る。 -rand:6/6,5/6 -============================ -input: -RWB -output: -TwilightGunsmoke : 情報収集チャート:ウェブ(33) > 目当ての情報に近いファイルを見つけた……。だが、それには悪質な電脳ドラッグの“お試し”データが仕込まれていた。【意志】難易度12の判定を行ない、失敗した場合、次のシーンの開始時、お前は狼狽・放心を受ける。 -rand:3/6,3/6 -============================ -input: -RST -output: -TwilightGunsmoke : 情報収集チャート:ストリート(46) > 情報収集の過程で、まったく無関係な賞金首に襲われて返り討ちに。1D×500$を得るが、時間を取られたので、情報収集の達成値-1。 -rand:4/6,6/6 -============================ -input: -RUP -output: -TwilightGunsmoke : 情報収集チャート:上流(55) > 知らないうちに流行が変わっていた。最新モードの服を急いで仕立てるなら、1D×$1,000。仕立てないなら、【幸運】難易度12の判定を行ない、失敗すればおまえの威信点を-1Dすること。 -rand:5/6,5/6 -============================ -input: -DCP -output: -TwilightGunsmoke : ドロップチャート:コーポレイト(2) > 特になし -rand:1/6,1/6 -============================ -input: -DBD -output: -TwilightGunsmoke : ドロップチャート:バンデッド(7) > .45口径SMG -rand:1/6,6/6 -============================ -input: -DCR -output: -TwilightGunsmoke : ドロップチャート:クリミナル(4) > 特になし -rand:2/6,2/6 -============================ -input: -DNJ -output: -TwilightGunsmoke : ドロップチャート:ニンジャ(8) > シュリケン -rand:5/6,3/6 -============================ -input: -DRB -output: -TwilightGunsmoke : ドロップチャート:ロボ(12) > ヴォルトコーラ -rand:6/6,6/6 -============================ -input: -DBS -output: -TwilightGunsmoke : ドロップチャート:武装車輛(5) > 特になし -rand:1/6,4/6 -============================ -input: -DTR -output: -TwilightGunsmoke : ドロップチャート:ターレット(10) > 廃棄部品($30)×2 -rand:5/6,5/6 -============================ -input: -DMK -output: -TwilightGunsmoke : ドロップチャート:メルカバ(6) > 特になし -rand:3/6,3/6 -============================ -input: -DHL -output: -TwilightGunsmoke : ドロップチャート:ヘリ(7) > レアメタル($100)×1D -rand:3/6,4/6 -============================ -input: -DML -output: -TwilightGunsmoke : ドロップチャート:マシンライフ(9) > 未知の金属($1,000) -rand:6/6,3/6 -============================ -input: -DZB -output: -TwilightGunsmoke : ドロップチャート:ゾンビ(8) > ぬいぐるみ($10) -rand:4/6,4/6 -============================ -input: -DMT -output: -TwilightGunsmoke : ドロップチャート:ミュータント(5) > 特になし -rand:4/6,1/6 -============================ -input: -DHR -output: -TwilightGunsmoke : ドロップチャート:BM/飛竜科(11) > 飛竜の羽根($2,000) -rand:5/6,6/6 -============================ -input: -DKS -output: -TwilightGunsmoke : ドロップチャート:BM/巨爪科(7) > 現金$200×1D -rand:2/6,5/6 -============================ -input: -DFD -output: -TwilightGunsmoke : ドロップチャート:フィーンド(12) > 異次元の結晶($12,000) -rand:6/6,6/6 diff --git a/src/src_bcdice/test/data/UpperDice.txt b/src/src_bcdice/test/data/UpperDice.txt deleted file mode 100644 index ec48ccd8e..000000000 --- a/src/src_bcdice/test/data/UpperDice.txt +++ /dev/null @@ -1,102 +0,0 @@ -input: -4U6[6] -output: -DiceBot : (4U6[6]) > 5,2,11[6,5],23[6,6,6,5] > 23/41(最大/合計) -rand:5/6,2/6,6/6,5/6,6/6,6/6,6/6,5/6 -============================ -input: -4U6[6]>=10 -output: -DiceBot : (4U6[6]>=10) > 5,2,11[6,5],23[6,6,6,5] > 成功数2 -rand:5/6,2/6,6/6,5/6,6/6,6/6,6/6,5/6 -============================ -input: -4U6>=10@6 末尾の@でも指定できる -output: -DiceBot : (4U6[6]>=10) > 5,2,11[6,5],23[6,6,6,5] > 成功数2 -rand:5/6,2/6,6/6,5/6,6/6,6/6,6/6,5/6 -============================ -input: -4U6[6]+11 -output: -DiceBot : (4U6[6]+11) > 5,2,11[6,5],23[6,6,6,5]+11 > 34/52(最大/合計) -rand:5/6,2/6,6/6,5/6,6/6,6/6,6/6,5/6 -============================ -input: -4U6[6]+11>=21 -output: -DiceBot : (4U6[6]+11>=21) > 5,2,11[6,5],23[6,6,6,5]+11 > 成功数2 -rand:5/6,2/6,6/6,5/6,6/6,6/6,6/6,5/6 -============================ -input: -4U6+11>=21@6 -output: -DiceBot : (4U6[6]+11>=21) > 5,2,11[6,5],23[6,6,6,5]+11 > 成功数2 -rand:5/6,2/6,6/6,5/6,6/6,6/6,6/6,5/6 -============================ -input: -4U6[6]+11>=21@4 角カッコが優先 -output: -DiceBot : (4U6[6]+11>=21) > 5,2,11[6,5],23[6,6,6,5]+11 > 成功数2 -rand:5/6,2/6,6/6,5/6,6/6,6/6,6/6,5/6 -============================ -input: -4U6[6]+1+2+10 -output: -DiceBot : (4U6[6]+13) > 5,2,11[6,5],23[6,6,6,5]+13 > 36/54(最大/合計) -rand:5/6,2/6,6/6,5/6,6/6,6/6,6/6,5/6 -============================ -input: -2U6+2U4[4]+6 複数種類 -output: -DiceBot : (2U6+2U4[4]+6) > 1,13[5,5,3],2,15[4,4,4,3]+6 > 21/37(最大/合計) -rand:1/6,5/6,5/6,3/6,2/4,4/4,4/4,4/4,3/4 -============================ -input: -2U6+2U4[4]+6>=8 複数種類 -output: -DiceBot : (2U6+2U4[4]+6>=8) > 1,13[5,5,3],2,15[4,4,4,3]+6 > 成功数3 -rand:1/6,5/6,5/6,3/6,2/4,4/4,4/4,4/4,3/4 -============================ -input: -4U6+2U4+11>=21 条件未指定 -output: -DiceBot : (4U6+2U4[0]+11>=21) > 無限ロールの条件がまちがっています -rand: -============================ -input: -4U6+2U4[1]+14-3>=21 条件指定ミス -output: -DiceBot : (4U6+2U4[1]+11>=21) > 無限ロールの条件がまちがっています -rand: -============================ -input: -4U6+2U4+11>=21@1 条件指定ミス -output: -DiceBot : (4U6+2U4[1]+11>=21) > 無限ロールの条件がまちがっています -rand: -============================ -input: -4U6==21 比較演算子の確認 -output: -DiceBot : (4U6[0]=21) > 無限ロールの条件がまちがっています -rand: -============================ -input: -4U6<>21 比較演算子の確認 -output: -DiceBot : (4U6[0]<>21) > 無限ロールの条件がまちがっています -rand: -============================ -input: -2U6+2U4[4]<>13 否定 -output: -DiceBot : (2U6+2U4[4]<>13) > 1,13[5,5,3],2,15[4,4,4,3] > 成功数3 -rand:1/6,5/6,5/6,3/6,2/4,4/4,4/4,4/4,3/4 -============================ -input: -S1U6[3] -output: -DiceBot : (1U6[3]) > 5[3,2] > 5/5(最大/合計)###secret dice### -rand:3/6,2/6 -============================ \ No newline at end of file diff --git a/src/src_bcdice/test/data/Utakaze.txt b/src/src_bcdice/test/data/Utakaze.txt deleted file mode 100644 index 6118866d7..000000000 --- a/src/src_bcdice/test/data/Utakaze.txt +++ /dev/null @@ -1,233 +0,0 @@ -input: -6D6 -output: -Utakaze : (6D6) > 21[1,2,3,4,5,6] > 21 -rand:1/6,2/6,3/6,4/6,5/6,6/6 -============================ -input: -6UK -output: -Utakaze : 6UK > (6d6) > [1,2,3,3,3,3] > 成功レベル:4 (1セット) -rand:3/6,3/6,3/6,3/6,2/6,1/6 -============================ -input: -6UK -output: -Utakaze : 6UK > (6d6) > [1,2,3,4,5,6] > 失敗 -rand:6/6,5/6,4/6,3/6,2/6,1/6 -============================ -input: -6UK -output: -Utakaze : 6UK > (6d6) > [2,2,2,3,3,3] > 成功レベル:3 (2セット) -rand:3/6,3/6,3/6,2/6,2/6,2/6 -============================ -input: -6UK -output: -Utakaze : 6UK > (6d6) > [1,1,2,2,3,3] > 成功レベル:2 (3セット) -rand:3/6,3/6,2/6,2/6,1/6,1/6 -============================ -input: -6UK -output: -Utakaze : 6UK > (6d6) > [1,2,2,3,3,3] > 成功レベル:3 (2セット) -rand:3/6,3/6,3/6,2/6,2/6,1/6 -============================ -input: -10UK -output: -Utakaze : 10UK > (10d6) > [1,2,3,4,5,6,6,6,6,6] > 成功レベル:5 (1セット) -rand:6/6,6/6,6/6,6/6,6/6,5/6,4/6,3/6,2/6,1/6 -============================ -input: -UK -output: -Utakaze : UK > (2d6) > [4,4] > 成功レベル:2 (1セット) -rand:4/6,4/6 -============================ -input: -UK -output: -Utakaze : UK > (2d6) > [2,4] > 失敗 -rand:4/6,2/6 -============================ -input: -1UK -output: -Utakaze : 1UK > (1d6) > [6] > 失敗 -rand:6/6 -============================ -input: -5UK@1 -output: -Utakaze : 5UK@1 > (5d6) > [1,1,1,3,4] > 龍のダイス「風」(1)を使用 > 成功レベル:6 (1セット) -rand:1/6,1/6,1/6,4/6,3/6 -============================ -input: -5UK@3 -output: -Utakaze : 5UK@3 > (5d6) > [2,2,3,3,3] > 龍のダイス「雲」(3)を使用 > 成功レベル:6 (1セット) -rand:3/6,3/6,3/6,2/6,2/6 -============================ -input: -5UK@5 -output: -Utakaze : 5UK@5 > (5d6) > [3,3,3,3,5] > 龍のダイス「月」(5)を使用 > 成功レベル:2 (1セット) -rand:5/6,3/6,3/6,3/6,3/6 -============================ -input: -5UK@6 -output: -Utakaze : 5UK@6 > (5d6) > [1,2,3,4,5] > 龍のダイス「歌」(6)を使用 > 失敗 -rand:5/6,4/6,3/6,2/6,1/6 -============================ -input: -5UK2 -output: -Utakaze : 5UK2 > (5d6) > [2,2,2,4,4] > 龍のダイス「雨」(2)を使用 > 成功レベル:6 (1セット) -rand:2/6,2/6,2/6,4/6,4/6 -============================ -input: -5UK4 -output: -Utakaze : 5UK4 > (5d6) > [2,2,2,4,4] > 龍のダイス「影」(4)を使用 > 成功レベル:4 (1セット) -rand:2/6,2/6,2/6,4/6,4/6 -============================ -input: -UK@6 -output: -Utakaze : UK@6 > (2d6) > [6,6] > 龍のダイス「歌」(6)を使用 > 成功レベル:4 (1セット) -rand:6/6,6/6 -============================ -input: -UK6 -output: -Utakaze : UK6 > (2d6) > [1,6] > 龍のダイス「歌」(6)を使用 > 成功レベル:2 (1セット) -rand:6/6,1/6 -============================ -input: -3UK -output: -Utakaze : 3UK > (3d6) > [1,1,1] > 成功レベル:3 (1セット) -rand:1/6,1/6,1/6 -============================ -input: -3UK -output: -Utakaze : 3UK > (3d6) > [1,2,3] > 失敗 -rand:3/6,2/6,1/6 -============================ -input: -3UK -output: -Utakaze : 3UK > (3d6) > [4,4,5] > 成功レベル:2 (1セット) -rand:4/6,4/6,5/6 -============================ -input: -3UK -output: -Utakaze : 3UK > (3d6) > [6,6,6] > 成功レベル:3 (1セット) -rand:6/6,6/6,6/6 -============================ -input: -4UK -output: -Utakaze : 4UK > (4d6) > [2,2,6,6] > 成功レベル:2 (2セット) -rand:6/6,6/6,2/6,2/6 -============================ -input: -5UK -output: -Utakaze : 5UK > (5d6) > [1,2,2,6,6] > 成功レベル:2 (2セット) -rand:6/6,1/6,6/6,2/6,2/6 -============================ -input: -6UK -output: -Utakaze : 6UK > (6d6) > [1,1,2,2,6,6] > 成功レベル:2 (3セット) -rand:6/6,1/6,6/6,2/6,2/6,1/6 -============================ -input: -6UK -output: -Utakaze : 6UK > (6d6) > [1,2,2,6,6,6] > 成功レベル:3 (2セット) -rand:6/6,6/6,6/6,2/6,2/6,1/6 -============================ -input: -UK -output: -Utakaze : UK > (2d6) > [1,1] > 成功レベル:2 (1セット) -rand:1/6,1/6 -============================ -input: -UK -output: -Utakaze : UK > (2d6) > [3,4] > 失敗 -rand:4/6,3/6 -============================ -input: -UK -output: -Utakaze : UK > (2d6) > [6,6] > 成功レベル:2 (1セット) -rand:6/6,6/6 -============================ -input: -UK@1 -output: -Utakaze : UK@1 > (2d6) > [1,6] > 龍のダイス「風」(1)を使用 > 成功レベル:2 (1セット) -rand:1/6,6/6 -============================ -input: -UK1 -output: -Utakaze : UK1 > (2d6) > [1,6] > 龍のダイス「風」(1)を使用 > 成功レベル:2 (1セット) -rand:1/6,6/6 -============================ -input: -4UK@5 -output: -Utakaze : 4UK@5 > (4d6) > [2,3,4,6] > 龍のダイス「月」(5)を使用 > 失敗 -rand:6/6,2/6,4/6,3/6 -============================ -input: -4UK@5 -output: -Utakaze : 4UK@5 > (4d6) > [3,4,5,5] > 龍のダイス「月」(5)を使用 > 成功レベル:4 (1セット) -rand:5/6,5/6,4/6,3/6 -============================ -input: -4UK@5 -output: -Utakaze : 4UK@5 > (4d6) > [1,2,4,6] > 龍のダイス「月」(5)を使用 > 失敗 -rand:6/6,1/6,4/6,2/6 -============================ -input: -6UK@1 -output: -Utakaze : 6UK@1 > (6d6) > [1,1,2,2,2,2] > 龍のダイス「風」(1)を使用 > 成功レベル:4 (1セット) -rand:2/6,1/6,1/6,2/6,2/6,2/6 -============================ -input: -6UK@1 -output: -Utakaze : 6UK@1 > (6d6) > [1,2,2,2,2,2] > 龍のダイス「風」(1)を使用 > 成功レベル:2 (1セット) -rand:2/6,2/6,1/6,2/6,2/6,2/6 -============================ -input: -4UK5 -output: -Utakaze : 4UK5 > (4d6) > [2,3,4,6] > 龍のダイス「月」(5)を使用 > 失敗 -rand:6/6,2/6,4/6,3/6 -============================ -input: -6UK@1>=2 -output: -Utakaze : 6UK@1>=2 > (6d6) > [1,2,2,2,2,2] > 龍のダイス「風」(1)を使用 > 成功レベル:2 (1セット) > 成功 -rand:2/6,2/6,1/6,2/6,2/6,2/6 -============================ -input: -6UK@1>=3 -output: -Utakaze : 6UK@1>=3 > (6d6) > [1,2,2,2,2,2] > 龍のダイス「風」(1)を使用 > 成功レベル:2 (1セット) > 失敗 -rand:2/6,2/6,1/6,2/6,2/6,2/6 diff --git a/src/src_bcdice/test/data/VampireTheMasquerade5th.txt b/src/src_bcdice/test/data/VampireTheMasquerade5th.txt deleted file mode 100644 index d9d415110..000000000 --- a/src/src_bcdice/test/data/VampireTheMasquerade5th.txt +++ /dev/null @@ -1,287 +0,0 @@ -input: -3VMF3 -output: -VampireTheMasquerade5th : (3D10) > [1,2,5] 成功数=0 難易度=3:判定失敗! -rand:1/10,2/10,5/10 -============================ -input: -3VMF3 -output: -VampireTheMasquerade5th : (3D10) > [2,6,10] 成功数=2 難易度=3:判定失敗! -rand:2/10,6/10,10/10 -============================ -input: -3VMF3 -output: -VampireTheMasquerade5th : (3D10) > [7,9,6] 成功数=3 難易度=3:判定成功! -rand:7/10,9/10,6/10 -============================ -input: -3VMF3 -output: -VampireTheMasquerade5th : (3D10) > [2,10,10] 成功数=4 難易度=3:判定成功! [Critical Win] -rand:2/10,10/10,10/10 -============================ -input: -3VMF5 -output: -VampireTheMasquerade5th : (5D10) > [10,10,10,10,10] 成功数=9 難易度=3:判定成功! [Critical Win] -rand:10/10,10/10,10/10,10/10,10/10 -============================ -input: -3VMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [2,5,9]+[2,6] 成功数=2 難易度=3:判定失敗! -rand:2/10,5/10,9/10,2/10,6/10 -============================ -input: -3VMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [2,5,9]+[1,2] 成功数=1 難易度=3:判定失敗! [Bestial Failure] -rand:2/10,5/10,9/10,1/10,2/10 -============================ -input: -3VMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [8,2,6]+[1,7] 成功数=3 難易度=3:判定成功! -rand:8/10,2/10,6/10, 1/10, 7/10 -============================ -input: -3VMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [10,10,10]+[4,7] 成功数=6 難易度=3:判定成功! [Critical Win] -rand:10/10,10/10,10/10,4/10,7/10 -============================ -input: -3VMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [10,10,6]+[1,10] 成功数=6 難易度=3:判定成功! [Messy Critical] -rand:10/10,10/10,6/10,1/10,10/10 -============================ -input: -VMF3 -output: -VampireTheMasquerade5th : (3D10) > [2,5,1] 成功数=0:判定失敗! -rand:2/10,5/10,1/10 -============================ -input: -VMF3 -output: -VampireTheMasquerade5th : (3D10) > [2,6,1] 成功数=1 -rand:2/10,6/10,1/10 -============================ -input: -VMF3 -output: -VampireTheMasquerade5th : (3D10) > [10,10,4] 成功数=4 -rand:10/10,10/10,4/10 -============================ -input: -VMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [2,5,1]+[4,3] 成功数=0:判定失敗! -rand:2/10,5/10,1/10,4/10,3/10 -============================ -input: -VMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [2,5,1]+[4,1] 成功数=0:判定失敗! [Bestial Failure] -rand:2/10,5/10,1/10,4/10,1/10 -============================ -input: -VMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [2,5,8]+[1,6] 成功数=2 -rand:2/10,5/10,8/10,1/10,6/10 -============================ -input: -VMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [2,10,10]+[1,6] 成功数=5 -rand:2/10,10/10,10/10,1/10,6/10 -============================ -input: -VMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [2,10,10]+[10,1] 成功数=5 -rand:2/10,10/10,10/10,10/10,1/10 -============================ -input: -0VMF3 -output: -VampireTheMasquerade5th : (3D10) > [5,4,3] 成功数=0 -rand:5/10,4/10,3/10 -============================ -input: -0VMF3 -output: -VampireTheMasquerade5th : (3D10) > [6,4,8] 成功数=2 -rand:6/10,4/10,8/10 -============================ -input: -0VMF3+3 -output: -VampireTheMasquerade5th : (3D10+3D10) > [1,4,2]+[5,1,3] 成功数=0 -rand:1/10,4/10,2/10,5/10,1/10,3/10 -============================ -input: -0VMF3+3 -output: -VampireTheMasquerade5th : (3D10+3D10) > [1,8,2]+[5,1,6] 成功数=2 -rand:1/10,8/10,2/10,5/10,1/10,6/10 -============================ -input: -0VMF3+3 -output: -VampireTheMasquerade5th : (3D10+3D10) > [1,10,10]+[2,1,7] 成功数=5 -rand:1/10,10/10,10/10,2/10,1/10,7/10 -============================ -input: -0VMF3+3 -output: -VampireTheMasquerade5th : (3D10+3D10) > [4,10,10]+[10,3,10] 成功数=8 -rand:4/10,10/10,10/10,10/10,3/10,10/10 -============================ -input: -S3VMF3 -output: -VampireTheMasquerade5th : (3D10) > [1,2,5] 成功数=0 難易度=3:判定失敗!###secret dice### -rand:1/10,2/10,5/10 -============================ -input: -S3VMF3 -output: -VampireTheMasquerade5th : (3D10) > [2,6,10] 成功数=2 難易度=3:判定失敗!###secret dice### -rand:2/10,6/10,10/10 -============================ -input: -S3VMF3 -output: -VampireTheMasquerade5th : (3D10) > [7,9,6] 成功数=3 難易度=3:判定成功!###secret dice### -rand:7/10,9/10,6/10 -============================ -input: -S3VMF3 -output: -VampireTheMasquerade5th : (3D10) > [2,10,10] 成功数=4 難易度=3:判定成功! [Critical Win]###secret dice### -rand:2/10,10/10,10/10 -============================ -input: -S3VMF5 -output: -VampireTheMasquerade5th : (5D10) > [10,10,10,10,10] 成功数=9 難易度=3:判定成功! [Critical Win]###secret dice### -rand:10/10,10/10,10/10,10/10,10/10 -============================ -input: -S3VMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [2,5,9]+[2,6] 成功数=2 難易度=3:判定失敗!###secret dice### -rand:2/10,5/10,9/10,2/10,6/10 -============================ -input: -S3VMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [2,5,9]+[1,2] 成功数=1 難易度=3:判定失敗! [Bestial Failure]###secret dice### -rand:2/10,5/10,9/10,1/10,2/10 -============================ -input: -S3VMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [8,2,6]+[1,7] 成功数=3 難易度=3:判定成功!###secret dice### -rand:8/10,2/10,6/10, 1/10, 7/10 -============================ -input: -S3VMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [10,10,10]+[4,7] 成功数=6 難易度=3:判定成功! [Critical Win]###secret dice### -rand:10/10,10/10,10/10,4/10,7/10 -============================ -input: -S3VMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [10,10,6]+[1,10] 成功数=6 難易度=3:判定成功! [Messy Critical]###secret dice### -rand:10/10,10/10,6/10,1/10,10/10 -============================ -input: -SVMF3 -output: -VampireTheMasquerade5th : (3D10) > [2,5,1] 成功数=0:判定失敗!###secret dice### -rand:2/10,5/10,1/10 -============================ -input: -SVMF3 -output: -VampireTheMasquerade5th : (3D10) > [2,6,1] 成功数=1###secret dice### -rand:2/10,6/10,1/10 -============================ -input: -SVMF3 -output: -VampireTheMasquerade5th : (3D10) > [10,10,4] 成功数=4###secret dice### -rand:10/10,10/10,4/10 -============================ -input: -SVMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [2,5,1]+[4,3] 成功数=0:判定失敗!###secret dice### -rand:2/10,5/10,1/10,4/10,3/10 -============================ -input: -SVMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [2,5,1]+[4,1] 成功数=0:判定失敗! [Bestial Failure]###secret dice### -rand:2/10,5/10,1/10,4/10,1/10 -============================ -input: -SVMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [2,5,8]+[1,6] 成功数=2###secret dice### -rand:2/10,5/10,8/10,1/10,6/10 -============================ -input: -SVMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [2,10,10]+[1,6] 成功数=5###secret dice### -rand:2/10,10/10,10/10,1/10,6/10 -============================ -input: -SVMF3+2 -output: -VampireTheMasquerade5th : (3D10+2D10) > [2,10,10]+[10,1] 成功数=5###secret dice### -rand:2/10,10/10,10/10,10/10,1/10 -============================ -input: -S0VMF3 -output: -VampireTheMasquerade5th : (3D10) > [5,4,3] 成功数=0###secret dice### -rand:5/10,4/10,3/10 -============================ -input: -S0VMF3 -output: -VampireTheMasquerade5th : (3D10) > [6,4,8] 成功数=2###secret dice### -rand:6/10,4/10,8/10 -============================ -input: -S0VMF3+3 -output: -VampireTheMasquerade5th : (3D10+3D10) > [1,4,2]+[5,1,3] 成功数=0###secret dice### -rand:1/10,4/10,2/10,5/10,1/10,3/10 -============================ -input: -S0VMF3+3 -output: -VampireTheMasquerade5th : (3D10+3D10) > [1,8,2]+[5,1,6] 成功数=2###secret dice### -rand:1/10,8/10,2/10,5/10,1/10,6/10 -============================ -input: -S0VMF3+3 -output: -VampireTheMasquerade5th : (3D10+3D10) > [1,10,10]+[2,1,7] 成功数=5###secret dice### -rand:1/10,10/10,10/10,2/10,1/10,7/10 -============================ -input: -S0VMF3+3 -output: -VampireTheMasquerade5th : (3D10+3D10) > [4,10,10]+[10,3,10] 成功数=8###secret dice### -rand:4/10,10/10,10/10,10/10,3/10,10/10 \ No newline at end of file diff --git a/src/src_bcdice/test/data/Villaciel.txt b/src/src_bcdice/test/data/Villaciel.txt deleted file mode 100644 index 3ce8d9a7d..000000000 --- a/src/src_bcdice/test/data/Villaciel.txt +++ /dev/null @@ -1,302 +0,0 @@ -input: -6VBS -output: -Villaciel : (6VBS) > [1,5,2,4,3,6] > 達成数: 4 -rand:1/6,5/6,2/6,4/6,3/6,6/6 -============================ -input: -6VBS -output: -Villaciel : (6VBS) > [6,6,6,6,6,6] > 達成数: 12 -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -6VBS -output: -Villaciel : (6VBS) > [3,1,2,1,3,2] > 達成数: 0 -rand:3/6,1/6,2/6,1/6,3/6,2/6 -============================ -input: -6VBS>=3 -output: -Villaciel : (6VBS>=3) > [1,5,2,4,3,6] > 達成数: 4 > 成功 -rand:1/6,5/6,2/6,4/6,3/6,6/6 -============================ -input: -6VBS>=3 -output: -Villaciel : (6VBS>=3) > [6,6,6,6,6,6] > 達成数: 12 > 成功 -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -6VBS>=3 -output: -Villaciel : (6VBS>=3) > [3,1,2,1,3,2] > 達成数: 0 > 失敗 -rand:3/6,1/6,2/6,1/6,3/6,2/6 -============================ -input: -6VF -output: -Villaciel : (6VF) > [5,3,2,1,6,5] > 達成数: 4 > 右に1マス、下に1マス動かす -rand:5/6,3/6,2/6,1/6,6/6,5/6 -============================ -input: -6VF -output: -Villaciel : (6VF) > [6,4,5,6,2,2] > 達成数: 6 > 好きな方向に最大で3マス動かしてもよい(1マスでも良い) -rand:6/6,4/6,5/6,6/6,2/6,2/6 -============================ -input: -6VF -output: -Villaciel : (6VF) > [3,2,6,1,3,1] > 達成数: 2 > 右か下に1マス動かしてもよい -rand:3/6,2/6,6/6,1/6,3/6,1/6 -============================ -input: -6VM -output: -Villaciel : (6VM) > [3,6,2,4,5,5] > 成功 > (1D6) > [1] > アイテムを1個獲得 -rand:3/6,6/6,2/6,4/6,5/6,5/6,1/6 -============================ -input: -6VM -output: -Villaciel : (6VM) > [4,1,1,1,3,4] > 失敗 -rand:4/6,1/6,1/6,1/6,3/6,4/6 -============================ -input: -6VG -output: -Villaciel : (6VG) > [6,2,3,2,3,1] > 成功 -rand:6/6,2/6,3/6,2/6,3/6,1/6 -============================ -input: -6VG -output: -Villaciel : (6VG) > [2,5,4,3,3,1] > 失敗 -rand:2/6,5/6,4/6,3/6,3/6,1/6 -============================ -input: -PJ -output: -Villaciel : 前職表(ヴィラシエル) > [6,5] > 荒くれ者: 武力+2 穴掘り/1Lv -rand:6/6,5/6 -============================ -input: -PJV -output: -Villaciel : 前職表(ヴィラシエル) > [2,5] > 牧場主: 仲良し+2 開拓/1Lv -rand:2/6,5/6 -============================ -input: -PJA -output: -Villaciel : 前職表(アルメサール) > [6,3] > 細工師: 器用さ+2 採掘/1Lv or 調合・細工/1Lv -rand:6/6,3/6 -============================ -input: -PQ -output: -Villaciel : ぷちクエスト表(ヴィラシエル) > [4,3] > 金属がたりない!: 【目的:金属を1個納品】【報酬:各自2プサイ】いい武器にはいい金属を。今回必要なのは……。 -rand:4/6,3/6 -============================ -input: -PQV -output: -Villaciel : ぷちクエスト表(ヴィラシエル) > [5,5] > と、ともだちにあげるの!: 【目的:石材の装飾品を1個納品】【報酬:各自3プサイ】えっと、お、おきにいりのともだちがいるんだ。そ、そのこのたんじょうびだから、プレゼントしたくって。 -rand:5/6,5/6 -============================ -input: -PQA -output: -Villaciel : ぷちクエスト表(アルメサール) > [1,5] > 材料がたりない!: 【目的:???の粗皮を1個納品】【報酬:各自3プサイ】革細工師を目指してるんだけど、皮が足りないんだ。種類は問わないから、早めに頼むよ。 -rand:1/6,5/6 -============================ -input: -AC -output: -Villaciel : アクシデント表 > [4] > トビウオ流星群: きらきら光る流れ星……いや待て! あれはトビウオの群れだー!?(「蒼天のヴィラシエル」P.49) -rand:4/6 -============================ -input: -MMI -output: -Villaciel : もふもふ表・昆虫 > [5,4] > 下5マス、右4マス > チッチハチ -rand:5/6,4/6 -============================ -input: -MMA -output: -Villaciel : もふもふ表・動物 > [2,2] > 下2マス、右2マス > ブタ -rand:2/6,2/6 -============================ -input: -MMV -output: -Villaciel : もふもふ表・ヴィラシエル種(ヴィラシエル) > [4,4] > 下偶数、右4マス > オワン -rand:4/6,4/6 -============================ -input: -MMVV -output: -Villaciel : もふもふ表・ヴィラシエル種(ヴィラシエル) > [3,5] > 下奇数、右5マス > オボン -rand:3/6,5/6 -============================ -input: -MMVA -output: -Villaciel : もふもふ表・ヴィラシエル種(アルメサール) > [4,2] > 下4マス、右2マス > オオトリサン -rand:4/6,2/6 -============================ -input: -MMD -output: -Villaciel : もふもふ表・鋼龍種 > [3,6] > 下3マス、右6マス > コディ -rand:3/6,6/6 -============================ -input: -FL -output: -Villaciel : 釣り・湖表 > [6,1] > 下6マス、右1マス > シコウチャ -rand:6/6,1/6 -============================ -input: -FR -output: -Villaciel : 釣り・河表 > [5,4] > 下5マス、右4マス > アメイロ -rand:5/6,4/6 -============================ -input: -FW -output: -Villaciel : 釣り・白雲表 > [1,6] > 下1マス、右6マス > ユルシ -rand:1/6,6/6 -============================ -input: -FG -output: -Villaciel : 釣り・灰雲表 > [6,2] > 下6マス、右2マス > リンドウ -rand:6/6,2/6 -============================ -input: -FB -output: -Villaciel : 釣り・黒雲表 > [3,2] > 下3マス、右2マス > テツコン -rand:3/6,2/6 -============================ -input: -FB -output: -Villaciel : 釣り・黒雲表 > [6,5] > 下6マス、右5マス > 共通(FC) -rand:6/6,5/6 -============================ -input: -FC -output: -Villaciel : 釣り・共通表 > [1,6] > 下1マス、右6マス > オオサンショウウオ -rand:1/6,6/6 -============================ -input: -FS -output: -Villaciel : 釣り・塩湖表 > [1,4] > 下1マス、右4マス > ゲッパク -rand:1/6,4/6 -============================ -input: -IP -output: -Villaciel : 不食植物表(ヴィラシエル) > [2,5] > 下2マス、右5マス > トトイト -rand:2/6,5/6 -============================ -input: -IPV -output: -Villaciel : 不食植物表(ヴィラシエル) > [4,6] > 下4マス、右6マス > ルタタ -rand:4/6,6/6 -============================ -input: -IPA -output: -Villaciel : 不食植物表(アルメサール) > [1,3] > 下1マス、右3マス > 蜜蝋 -rand:1/6,3/6 -============================ -input: -EP -output: -Villaciel : (1D6) > [6] > 好きな表を選んでおっけー! -rand:6/6 -============================ -input: -EPV -output: -Villaciel : (1D6) > [3] > 可食植物表3(ヴィラシエル) > [3,2] > 下3マス、右2マス > マッシュルーム -rand:3/6,3/6,2/6 -============================ -input: -EPA -output: -Villaciel : (1D6) > [2] > 可食植物表1(アルメサール) > [3,4] > 下3マス、右4マス > ニクニク -rand:2/6,3/6,4/6 -============================ -input: -EP2 -output: -Villaciel : 可食植物表2(ヴィラシエル) > [4,5] > 下4マス、右5マス > まいたけ -rand:4/6,5/6 -============================ -input: -EPV5 -output: -Villaciel : 可食植物表5(ヴィラシエル) > [4,4] > 下4マス、右4マス > えのきたけ -rand:4/6,4/6 -============================ -input: -EPA1 -output: -Villaciel : 可食植物表1(アルメサール) > [1,4] > 下1マス、右4マス > サトウモロ -rand:1/6,4/6 -============================ -input: -EP0 -output: -rand: -============================ -input: -EPV6 -output: -rand: -============================ -input: -EPA0 -output: -rand: -============================ -input: -EPA3 -output: -rand: -============================ -input: -IPV -output: -Villaciel : 不食植物表(ヴィラシエル) > [5,6] > 下5マス、右6マス > 変異植物(MP) -rand:5/6,6/6 -============================ -input: -MP -output: -Villaciel : 変異植物表 > [3,3] > 下3マス、右3マス > マメノキ -rand:3/6,3/6 -============================ -input: -EPV4 -output: -Villaciel : 可食植物表4(ヴィラシエル) > [6,6] > 下6マス、右6マス > 改良種(IS) -rand:6/6,6/6 -============================ -input: -IS -output: -Villaciel : 改良種表 > [6,4] > 下6マス、右4マス > オオカサゲ -rand:6/6,4/6 -============================ diff --git a/src/src_bcdice/test/data/WARPS.txt b/src/src_bcdice/test/data/WARPS.txt deleted file mode 100644 index 736f98731..000000000 --- a/src/src_bcdice/test/data/WARPS.txt +++ /dev/null @@ -1,185 +0,0 @@ -input: -2d6<=2 -output: -WARPS : (2D6<=2) > 8[2,6] > 8 > 失敗 -rand:2/6,6/6 -============================ -input: -2d6<=2 -output: -WARPS : (2D6<=2) > 7[5,2] > 7 > 失敗 -rand:5/6,2/6 -============================ -input: -2d6<=2 -output: -WARPS : (2D6<=2) > 5[3,2] > 5 > 失敗 -rand:3/6,2/6 -============================ -input: -2d6<=2 -output: -WARPS : (2D6<=2) > 7[2,5] > 7 > 失敗 -rand:2/6,5/6 -============================ -input: -2d6<=2 -output: -WARPS : (2D6<=2) > 8[5,3] > 8 > 失敗 -rand:5/6,3/6 -============================ -input: -2d6<=2 -output: -WARPS : (2D6<=2) > 8[4,4] > 8 > 失敗 -rand:4/6,4/6 -============================ -input: -2d6<=2 -output: -WARPS : (2D6<=2) > 4[1,3] > 4 > 失敗 -rand:1/6,3/6 -============================ -input: -2d6<=2 -output: -WARPS : (2D6<=2) > 8[4,4] > 8 > 失敗 -rand:4/6,4/6 -============================ -input: -2d6<=2 -output: -WARPS : (2D6<=2) > 4[2,2] > 4 > 失敗 -rand:2/6,2/6 -============================ -input: -2d6<=2 -output: -WARPS : (2D6<=2) > 6[2,4] > 6 > 失敗 -rand:2/6,4/6 -============================ -input: -2d6<=10 -output: -WARPS : (2D6<=10) > 6[4,2] > 6 > 4成功 -rand:4/6,2/6 -============================ -input: -2d6<=10 -output: -WARPS : (2D6<=10) > 2[1,1] > 2 > クリティカル -rand:1/6,1/6 -============================ -input: -2d6<=10 -output: -WARPS : (2D6<=10) > 7[5,2] > 7 > 3成功 -rand:5/6,2/6 -============================ -input: -2d6<=10 -output: -WARPS : (2D6<=10) > 6[3,3] > 6 > 4成功 -rand:3/6,3/6 -============================ -input: -2d6<=10 -output: -WARPS : (2D6<=10) > 9[4,5] > 9 > 1成功 -rand:4/6,5/6 -============================ -input: -2d6<=10 -output: -WARPS : (2D6<=10) > 9[3,6] > 9 > 1成功 -rand:3/6,6/6 -============================ -input: -2d6<=10 -output: -WARPS : (2D6<=10) > 8[4,4] > 8 > 2成功 -rand:4/6,4/6 -============================ -input: -2d6<=10 -output: -WARPS : (2D6<=10) > 5[3,2] > 5 > 5成功 -rand:3/6,2/6 -============================ -input: -2d6<=10 -output: -WARPS : (2D6<=10) > 5[1,4] > 5 > 5成功 -rand:1/6,4/6 -============================ -input: -2d6<=10 -output: -WARPS : (2D6<=10) > 12[6,6] > 12 > ファンブル -rand:6/6,6/6 -============================ -input: -2d6<=7 -output: -WARPS : (2D6<=7) > 12[6,6] > 12 > ファンブル -rand:6/6,6/6 -============================ -input: -2d6<=7 -output: -WARPS : (2D6<=7) > 10[5,5] > 10 > 失敗 -rand:5/6,5/6 -============================ -input: -2d6<=7 -output: -WARPS : (2D6<=7) > 5[4,1] > 5 > 2成功 -rand:4/6,1/6 -============================ -input: -2d6<=7 -output: -WARPS : (2D6<=7) > 5[1,4] > 5 > 2成功 -rand:1/6,4/6 -============================ -input: -2d6<=7 -output: -WARPS : (2D6<=7) > 7[1,6] > 7 > 0成功 -rand:1/6,6/6 -============================ -input: -2d6<=7 -output: -WARPS : (2D6<=7) > 6[1,5] > 6 > 1成功 -rand:1/6,5/6 -============================ -input: -2d6<=7 -output: -WARPS : (2D6<=7) > 9[5,4] > 9 > 失敗 -rand:5/6,4/6 -============================ -input: -2d6<=7 -output: -WARPS : (2D6<=7) > 7[4,3] > 7 > 0成功 -rand:4/6,3/6 -============================ -input: -2d6<=7 -output: -WARPS : (2D6<=7) > 3[2,1] > 3 > 4成功 -rand:2/6,1/6 -============================ -input: -2d6<=7 -output: -WARPS : (2D6<=7) > 7[4,3] > 7 > 0成功 -rand:4/6,3/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -WARPS : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/WaresBlade.txt b/src/src_bcdice/test/data/WaresBlade.txt deleted file mode 100644 index 2266a78ca..000000000 --- a/src/src_bcdice/test/data/WaresBlade.txt +++ /dev/null @@ -1,77 +0,0 @@ -input: -1D4>=3 -output: -WaresBlade : (1D4>=3) > 3 > 成功 -rand:3/4 -============================ -input: -1D6>=5 -output: -WaresBlade : (1D6>=5) > 5 > 成功 -rand:5/6 -============================ -input: -1D8>=7 -output: -WaresBlade : (1D8>=7) > 7 > 成功 -rand:7/8 -============================ -input: -1D10>=9 -output: -WaresBlade : (1D10>=9) > 9 > 成功 -rand:9/10 -============================ -input: -1D12>=11 -output: -WaresBlade : (1D12>=11) > 11 > 成功 -rand:11/12 -============================ -input: -1D20>=19 -output: -WaresBlade : (1D20>=19) > 19 > 成功 -rand:19/20 -============================ -input: -(1+2)D10+3>=12 -output: -WaresBlade : (3D10+3>=12) > 12[3,4,5]+3 > 15 > 成功 -rand:3/10,4/10,5/10 -============================ -input: -S1D10>=10 -output: -WaresBlade : (1D10>=10) > 9 > 失敗###secret dice### -rand:9/10 -============================ -input: -1D10+2>=13 完全成功 -output: -WaresBlade : (1D10+2>=13) > 10[10]+2 > 12 > 完全成功 -rand:10/10 -============================ -input: -1D10+2>=3 絶対失敗 -output: -WaresBlade : (1D10+2>=3) > 1[1]+2 > 3 > 絶対失敗 -rand:1/10 -============================ -input: -(1+1)D10+1>=30 複数dice完全成功 -output: -WaresBlade : (2D10+1>=30) > 20[10,10]+1 > 21 > 完全成功 -rand:10/10,10/10 -============================ -input: -(1+2)D10+2>=3 複数dice絶対失敗 -output: -WaresBlade : (3D10+2>=3) > 3[1,1,1]+2 > 5 > 絶対失敗 -rand:1/10,1/10,1/10 -============================ -input: -2D10>=? 目標値?でバグらない -output: -WaresBlade : (2D10>=?) > 10[5,5] > 10 > 失敗 -rand:5/10,5/10 diff --git a/src/src_bcdice/test/data/Warhammer.txt b/src/src_bcdice/test/data/Warhammer.txt deleted file mode 100644 index f35dc6a23..000000000 --- a/src/src_bcdice/test/data/Warhammer.txt +++ /dev/null @@ -1,1445 +0,0 @@ -input: -1D100<=10 -output: -Warhammer : (1D100<=10) > 74 > 失敗(失敗度6) -rand:74/100 -============================ -input: -1D100<=10 -output: -Warhammer : (1D100<=10) > 59 > 失敗(失敗度4) -rand:59/100 -============================ -input: -1D100<=10 -output: -Warhammer : (1D100<=10) > 22 > 失敗(失敗度1) -rand:22/100 -============================ -input: -1D100<=10 -output: -Warhammer : (1D100<=10) > 13 > 失敗(失敗度0) -rand:13/100 -============================ -input: -1D100<=10 -output: -Warhammer : (1D100<=10) > 56 > 失敗(失敗度4) -rand:56/100 -============================ -input: -1D100<=10 -output: -Warhammer : (1D100<=10) > 68 > 失敗(失敗度5) -rand:68/100 -============================ -input: -1D100<=10 -output: -Warhammer : (1D100<=10) > 89 > 失敗(失敗度7) -rand:89/100 -============================ -input: -1D100<=10 -output: -Warhammer : (1D100<=10) > 67 > 失敗(失敗度5) -rand:67/100 -============================ -input: -1D100<=10 -output: -Warhammer : (1D100<=10) > 36 > 失敗(失敗度2) -rand:36/100 -============================ -input: -1D100<=10 -output: -Warhammer : (1D100<=10) > 76 > 失敗(失敗度6) -rand:76/100 -============================ -input: -1D100<=90 -output: -Warhammer : (1D100<=90) > 97 > 失敗(失敗度0) -rand:97/100 -============================ -input: -1D100<=90 -output: -Warhammer : (1D100<=90) > 31 > 成功(成功度5) -rand:31/100 -============================ -input: -1D100<=90 -output: -Warhammer : (1D100<=90) > 28 > 成功(成功度6) -rand:28/100 -============================ -input: -1D100<=90 -output: -Warhammer : (1D100<=90) > 99 > 失敗(失敗度0) -rand:99/100 -============================ -input: -1D100<=90 -output: -Warhammer : (1D100<=90) > 66 > 成功(成功度2) -rand:66/100 -============================ -input: -1D100<=90 -output: -Warhammer : (1D100<=90) > 98 > 失敗(失敗度0) -rand:98/100 -============================ -input: -1D100<=90 -output: -Warhammer : (1D100<=90) > 47 > 成功(成功度4) -rand:47/100 -============================ -input: -1D100<=90 -output: -Warhammer : (1D100<=90) > 67 > 成功(成功度2) -rand:67/100 -============================ -input: -1D100<=90 -output: -Warhammer : (1D100<=90) > 40 > 成功(成功度5) -rand:40/100 -============================ -input: -1D100<=90 -output: -Warhammer : (1D100<=90) > 77 > 成功(成功度1) -rand:77/100 -============================ -input: -1D100<=50 -output: -Warhammer : (1D100<=50) > 83 > 失敗(失敗度3) -rand:83/100 -============================ -input: -1D100<=50 -output: -Warhammer : (1D100<=50) > 4 > 成功(成功度4) -rand:4/100 -============================ -input: -1D100<=50 -output: -Warhammer : (1D100<=50) > 17 > 成功(成功度3) -rand:17/100 -============================ -input: -1D100<=50 -output: -Warhammer : (1D100<=50) > 27 > 成功(成功度2) -rand:27/100 -============================ -input: -1D100<=50 -output: -Warhammer : (1D100<=50) > 65 > 失敗(失敗度1) -rand:65/100 -============================ -input: -1D100<=50 -output: -Warhammer : (1D100<=50) > 50 > 成功(成功度0) -rand:50/100 -============================ -input: -1D100<=50 -output: -Warhammer : (1D100<=50) > 37 > 成功(成功度1) -rand:37/100 -============================ -input: -1D100<=50 -output: -Warhammer : (1D100<=50) > 85 > 失敗(失敗度3) -rand:85/100 -============================ -input: -1D100<=50 -output: -Warhammer : (1D100<=50) > 39 > 成功(成功度1) -rand:39/100 -============================ -input: -1D100<=50 -output: -Warhammer : (1D100<=50) > 43 > 成功(成功度0) -rand:43/100 -============================ -input: -whH10 -output: -Warhammer : 頭部CT表(7+10) > 10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。サドンデス× -rand:7/100 -============================ -input: -whH10 -output: -Warhammer : 頭部CT表(32+10) > 10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。サドンデス× -rand:32/100 -============================ -input: -whH10 -output: -Warhammer : 頭部CT表(38+10) > 10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。サドンデス× -rand:38/100 -============================ -input: -whH10 -output: -Warhammer : 頭部CT表(27+10) > 10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。サドンデス× -rand:27/100 -============================ -input: -whH10 -output: -Warhammer : 頭部CT表(31+10) > 10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。サドンデス× -rand:31/100 -============================ -input: -whH10 -output: -Warhammer : 頭部CT表(81+10) > 09:凄まじい打撃により頭蓋骨が粉砕される。死は瞬時に訪れる。サドンデス× -rand:81/100 -============================ -input: -whH10 -output: -Warhammer : 頭部CT表(64+10) > 10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。サドンデス× -rand:64/100 -============================ -input: -whH10 -output: -Warhammer : 頭部CT表(100+10) > 08:顔がずたずたになって倒れ、以後無防備状態。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると片方の視力を失う。サドンデス× -rand:100/100 -============================ -input: -whH10 -output: -Warhammer : 頭部CT表(38+10) > 10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。サドンデス× -rand:38/100 -============================ -input: -whH10 -output: -Warhammer : 頭部CT表(40+10) > 10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。サドンデス× -rand:40/100 -============================ -input: -whA5 -output: -Warhammer : 腕部CT表(81+5) > 06:腕が砕かれる。手で握っていたもの(盾を除く)は落ちる。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。サドンデス× -rand:81/100 -============================ -input: -whA5 -output: -Warhammer : 腕部CT表(68+5) > 07:手首から先が血まみれの残骸と化す。手で握っていたもの(盾を除く)は落ちる。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑健】テストに失敗すると手の機能を失う。サドンデス× -rand:68/100 -============================ -input: -whA5 -output: -Warhammer : 腕部CT表(73+5) > 07:手首から先が血まみれの残骸と化す。手で握っていたもの(盾を除く)は落ちる。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑健】テストに失敗すると手の機能を失う。サドンデス× -rand:73/100 -============================ -input: -whA5 -output: -Warhammer : 腕部CT表(26+5) > 09:大動脈に傷が及んだ。コンマ数秒の内に損傷した肩から血を噴出して倒れる。ショックと失血により、ほぼ即死する。サドンデス× -rand:26/100 -============================ -input: -whA5 -output: -Warhammer : 腕部CT表(23+5) > 09:大動脈に傷が及んだ。コンマ数秒の内に損傷した肩から血を噴出して倒れる。ショックと失血により、ほぼ即死する。サドンデス× -rand:23/100 -============================ -input: -whA5 -output: -Warhammer : 腕部CT表(23+5) > 09:大動脈に傷が及んだ。コンマ数秒の内に損傷した肩から血を噴出して倒れる。ショックと失血により、ほぼ即死する。サドンデス× -rand:23/100 -============================ -input: -whA5 -output: -Warhammer : 腕部CT表(33+5) > 09:大動脈に傷が及んだ。コンマ数秒の内に損傷した肩から血を噴出して倒れる。ショックと失血により、ほぼ即死する。サドンデス× -rand:33/100 -============================ -input: -whA5 -output: -Warhammer : 腕部CT表(83+5) > 06:腕が砕かれる。手で握っていたもの(盾を除く)は落ちる。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。サドンデス× -rand:83/100 -============================ -input: -whA5 -output: -Warhammer : 腕部CT表(9+5) > 10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。サドンデス× -rand:9/100 -============================ -input: -whA5 -output: -Warhammer : 腕部CT表(6+5) > 10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。サドンデス× -rand:6/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(36+4) > 08:脚は血まみれの肉塊がぶらさがっている状態。以後無防備状態。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると膝から下を失う。サドンデス× -rand:36/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(82+4) > 06:脚が砕かれ、無防備状態。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。サドンデス× -rand:82/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(95+4) > 05:転んで倒れ、頭がくらくらする。1Rに渡ってあらゆるテストに-30の修正、立ち上がるには起立アクションが必要。サドンデス× -rand:95/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(77+4) > 06:脚が砕かれ、無防備状態。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。サドンデス× -rand:77/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(77+4) > 06:脚が砕かれ、無防備状態。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。サドンデス× -rand:77/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(63+4) > 07:脚は血まみれの残骸と化し、無防備状態になる。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると足首から先を失う。サドンデス× -rand:63/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(31+4) > 08:脚は血まみれの肉塊がぶらさがっている状態。以後無防備状態。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると膝から下を失う。サドンデス× -rand:31/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(48+4) > 08:脚は血まみれの肉塊がぶらさがっている状態。以後無防備状態。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると膝から下を失う。サドンデス× -rand:48/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(87+4) > 06:脚が砕かれ、無防備状態。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。サドンデス× -rand:87/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(83+4) > 06:脚が砕かれ、無防備状態。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。サドンデス× -rand:83/100 -============================ -input: -wh60 -output: -Warhammer : (WH60) > 56 > 成功(成功度0) 二足:胴体 -rand:56/100 -============================ -input: -wh60 -output: -Warhammer : (WH60) > 8 > 成功(成功度5) 二足:胴体 -rand:8/100 -============================ -input: -wh60 -output: -Warhammer : (WH60) > 26 > 成功(成功度3) 二足:胴体 -rand:26/100 -============================ -input: -wh60 -output: -Warhammer : (WH60) > 37 > 成功(成功度2) 二足:胴体 -rand:37/100 -============================ -input: -wh60 -output: -Warhammer : (WH60) > 15 > 成功(成功度4) 二足:左腕 -rand:15/100 -============================ -input: -wh60 -output: -Warhammer : (WH60) > 92 > 失敗(失敗度3) -rand:92/100 -============================ -input: -wh60 -output: -Warhammer : (WH60) > 32 > 成功(成功度2) 二足:右腕 -rand:32/100 -============================ -input: -wh60 -output: -Warhammer : (WH60) > 22 > 成功(成功度3) 二足:右腕 -rand:22/100 -============================ -input: -wh60 -output: -Warhammer : (WH60) > 15 > 成功(成功度4) 二足:左腕 -rand:15/100 -============================ -input: -wh60 -output: -Warhammer : (WH60) > 20 > 成功(成功度4) 二足:頭部 -rand:20/100 -============================ -input: -wh43@4W -output: -Warhammer : (WH43) > 74 > 失敗(失敗度3) -rand:74/100 -============================ -input: -wh43@4W -output: -Warhammer : (WH43) > 3 > 成功(成功度4) 有翼四足:左翼 -rand:3/100 -============================ -input: -wh43@4W -output: -Warhammer : (WH43) > 8 > 成功(成功度3) 有翼四足:左前脚 -rand:8/100 -============================ -input: -wh43@4W -output: -Warhammer : (WH43) > 63 > 失敗(失敗度2) -rand:63/100 -============================ -input: -wh43@4W -output: -Warhammer : (WH43) > 7 > 成功(成功度3) 有翼四足:右前脚 -rand:7/100 -============================ -input: -wh43@4W -output: -Warhammer : (WH43) > 51 > 失敗(失敗度0) -rand:51/100 -============================ -input: -wh43@4W -output: -Warhammer : (WH43) > 20 > 成功(成功度2) 有翼四足:頭部 -rand:20/100 -============================ -input: -wh43@4W -output: -Warhammer : (WH43) > 62 > 失敗(失敗度1) -rand:62/100 -============================ -input: -wh43@4W -output: -Warhammer : (WH43) > 88 > 失敗(失敗度4) -rand:88/100 -============================ -input: -wh43@4W -output: -Warhammer : (WH43) > 12 > 成功(成功度3) 有翼四足:左翼 -rand:12/100 -============================ -input: -WH65@ -output: -Warhammer : (WH65) > 18 > 成功(成功度4) 二足:右脚 有翼二足:右脚 四足:右後脚 半人四足:右後脚 有翼四足:右後脚 鳥:右脚 -rand:18/100 -============================ -input: -WH65@ -output: -Warhammer : (WH65) > 55 > 成功(成功度1) 二足:左腕 有翼二足:左翼 四足:胴体 半人四足:胴体 有翼四足:胴体 鳥:左翼 -rand:55/100 -============================ -input: -WH65@ -output: -Warhammer : (WH65) > 50 > 成功(成功度1) 二足:頭部 有翼二足:頭部 四足:頭部 半人四足:頭部 有翼四足:頭部 鳥:頭部 -rand:50/100 -============================ -input: -WH65@ -output: -Warhammer : (WH65) > 90 > 失敗(失敗度2) -rand:90/100 -============================ -input: -WH65@ -output: -Warhammer : (WH65) > 23 > 成功(成功度4) 二足:右腕 有翼二足:左腕 四足:胴体 半人四足:胴体 有翼四足:胴体 鳥:右翼 -rand:23/100 -============================ -input: -WH65@ -output: -Warhammer : (WH65) > 34 > 成功(成功度3) 二足:左腕 有翼二足:右翼 四足:胴体 半人四足:胴体 有翼四足:胴体 鳥:左翼 -rand:34/100 -============================ -input: -WH65@ -output: -Warhammer : (WH65) > 98 > 失敗(失敗度3) -rand:98/100 -============================ -input: -WH65@ -output: -Warhammer : (WH65) > 80 > 失敗(失敗度1) -rand:80/100 -============================ -input: -WH65@ -output: -Warhammer : (WH65) > 67 > 失敗(失敗度0) -rand:67/100 -============================ -input: -WH65@ -output: -Warhammer : (WH65) > 96 > 失敗(失敗度3) -rand:96/100 -============================ -input: -WHH1 -output: -Warhammer : 頭部CT表(18+1) > 05:転んで倒れ、頭がくらくらする。1Rに渡ってあらゆるテストに-30で、立ち上がるには起立アクションが必要。サドンデス× -rand:18/100 -============================ -input: -WHH1 -output: -Warhammer : 頭部CT表(54+1) > 03:打撃が頭皮を酷く傷つけた。【武器技術度】に-10%。治療を受けるまで継続。サドンデス○ -rand:54/100 -============================ -input: -WHH1 -output: -Warhammer : 頭部CT表(9+1) > 05:転んで倒れ、頭がくらくらする。1Rに渡ってあらゆるテストに-30で、立ち上がるには起立アクションが必要。サドンデス× -rand:9/100 -============================ -input: -WHH1 -output: -Warhammer : 頭部CT表(1+1) > 05:転んで倒れ、頭がくらくらする。1Rに渡ってあらゆるテストに-30で、立ち上がるには起立アクションが必要。サドンデス× -rand:1/100 -============================ -input: -WHH1 -output: -Warhammer : 頭部CT表(57+1) > 03:打撃が頭皮を酷く傷つけた。【武器技術度】に-10%。治療を受けるまで継続。サドンデス○ -rand:57/100 -============================ -input: -WHH1 -output: -Warhammer : 頭部CT表(22+1) > 04:鎧が損傷し当該部位のAP-1。修理するには(職能:鎧鍛冶)テスト。鎧を着けていないなら1Rの間アクションを行なえない。サドンデス○ -rand:22/100 -============================ -input: -WHH1 -output: -Warhammer : 頭部CT表(96+1) > 01:打撃で状況が把握出来なくなる。次ターンは1回の半アクションしか行なえない。サドンデス○ -rand:96/100 -============================ -input: -WHH1 -output: -Warhammer : 頭部CT表(11+1) > 05:転んで倒れ、頭がくらくらする。1Rに渡ってあらゆるテストに-30で、立ち上がるには起立アクションが必要。サドンデス× -rand:11/100 -============================ -input: -WHH1 -output: -Warhammer : 頭部CT表(82+1) > 01:打撃で状況が把握出来なくなる。次ターンは1回の半アクションしか行なえない。サドンデス○ -rand:82/100 -============================ -input: -WHH1 -output: -Warhammer : 頭部CT表(85+1) > 01:打撃で状況が把握出来なくなる。次ターンは1回の半アクションしか行なえない。サドンデス○ -rand:85/100 -============================ -input: -WHA2 -output: -Warhammer : 腕部CT表(88+2) > 03:手の機能が失われ、治療を受けるまで回復できない。手で握っていたもの(盾を除く)は落ちる。サドンデス○ -rand:88/100 -============================ -input: -WHA2 -output: -Warhammer : 腕部CT表(15+2) > 06:腕が砕かれる。手で握っていたもの(盾を除く)は落ちる。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。サドンデス× -rand:15/100 -============================ -input: -WHA2 -output: -Warhammer : 腕部CT表(60+2) > 04:鎧が損傷する。当該部位のAP-1。修理するには(職能:鎧鍛冶)テスト。鎧を着けていないなら腕が痺れ、1Rの間使えなくなる。サドンデス○ -rand:60/100 -============================ -input: -WHA2 -output: -Warhammer : 腕部CT表(90+2) > 03:手の機能が失われ、治療を受けるまで回復できない。手で握っていたもの(盾を除く)は落ちる。サドンデス○ -rand:90/100 -============================ -input: -WHA2 -output: -Warhammer : 腕部CT表(40+2) > 05:腕の機能が失われ、治療を受けるまで回復できない。手で握っていたもの(盾を除く)は落ちる。サドンデス× -rand:40/100 -============================ -input: -WHA2 -output: -Warhammer : 腕部CT表(10+2) > 07:手首から先が血まみれの残骸と化す。手で握っていたもの(盾を除く)は落ちる。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑健】テストに失敗すると手の機能を失う。サドンデス× -rand:10/100 -============================ -input: -WHA2 -output: -Warhammer : 腕部CT表(74+2) > 03:手の機能が失われ、治療を受けるまで回復できない。手で握っていたもの(盾を除く)は落ちる。サドンデス○ -rand:74/100 -============================ -input: -WHA2 -output: -Warhammer : 腕部CT表(5+2) > 07:手首から先が血まみれの残骸と化す。手で握っていたもの(盾を除く)は落ちる。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑健】テストに失敗すると手の機能を失う。サドンデス× -rand:5/100 -============================ -input: -WHA2 -output: -Warhammer : 腕部CT表(47+2) > 05:腕の機能が失われ、治療を受けるまで回復できない。手で握っていたもの(盾を除く)は落ちる。サドンデス× -rand:47/100 -============================ -input: -WHA2 -output: -Warhammer : 腕部CT表(60+2) > 04:鎧が損傷する。当該部位のAP-1。修理するには(職能:鎧鍛冶)テスト。鎧を着けていないなら腕が痺れ、1Rの間使えなくなる。サドンデス○ -rand:60/100 -============================ -input: -WHB3 -output: -Warhammer : 胴体CT表(22+3) > 08:脊髄が粉砕されて倒れ、以後治療を受けるまで無防備状態。以後CTはサドンデスを適用。【頑強】テストに失敗すると腰から下が不随になる。サドンデス× -rand:22/100 -============================ -input: -WHB3 -output: -Warhammer : 胴体CT表(34+3) > 07:ひどい内出血が起こり、無防備状態。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。サドンデス× -rand:34/100 -============================ -input: -WHB3 -output: -Warhammer : 胴体CT表(59+3) > 06:1d10R気絶。サドンデス× -rand:59/100 -============================ -input: -WHB3 -output: -Warhammer : 胴体CT表(83+3) > 05:転んで倒れ、息が詰まって悶絶する。1Rに渡ってあらゆるテストに-30の修正、立ち上がるには起立アクションが必要。サドンデス× -rand:83/100 -============================ -input: -WHB3 -output: -Warhammer : 胴体CT表(99+3) > 04:鎧が損傷する。当該部位のAP-1。修理するには(職能:鎧鍛冶)テスト。鎧を着けていないなら股間への一撃、1Rに渡って一切のアクションを行なえない。サドンデス○ -rand:99/100 -============================ -input: -WHB3 -output: -Warhammer : 胴体CT表(76+3) > 05:転んで倒れ、息が詰まって悶絶する。1Rに渡ってあらゆるテストに-30の修正、立ち上がるには起立アクションが必要。サドンデス× -rand:76/100 -============================ -input: -WHB3 -output: -Warhammer : 胴体CT表(65+3) > 06:1d10R気絶。サドンデス× -rand:65/100 -============================ -input: -WHB3 -output: -Warhammer : 胴体CT表(2+3) > 09:凄まじい打撃により複数の臓器が破裂し、死は数秒のうちに訪れる。サドンデス× -rand:2/100 -============================ -input: -WHB3 -output: -Warhammer : 胴体CT表(25+3) > 08:脊髄が粉砕されて倒れ、以後治療を受けるまで無防備状態。以後CTはサドンデスを適用。【頑強】テストに失敗すると腰から下が不随になる。サドンデス× -rand:25/100 -============================ -input: -WHB3 -output: -Warhammer : 胴体CT表(64+3) > 06:1d10R気絶。サドンデス× -rand:64/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(43+4) > 08:脚は血まみれの肉塊がぶらさがっている状態。以後無防備状態。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると膝から下を失う。サドンデス× -rand:43/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(7+4) > 10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。サドンデス× -rand:7/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(12+4) > 09:大動脈に傷が及ぶ。コンマ数秒の内に脚の残骸から血を噴出して倒れ、ショックと出血で死は瞬時に訪れる。サドンデス× -rand:12/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(73+4) > 06:脚が砕かれ、無防備状態。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。サドンデス× -rand:73/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(96+4) > 05:転んで倒れ、頭がくらくらする。1Rに渡ってあらゆるテストに-30の修正、立ち上がるには起立アクションが必要。サドンデス× -rand:96/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(54+4) > 07:脚は血まみれの残骸と化し、無防備状態になる。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると足首から先を失う。サドンデス× -rand:54/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(27+4) > 09:大動脈に傷が及ぶ。コンマ数秒の内に脚の残骸から血を噴出して倒れ、ショックと出血で死は瞬時に訪れる。サドンデス× -rand:27/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(36+4) > 08:脚は血まみれの肉塊がぶらさがっている状態。以後無防備状態。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると膝から下を失う。サドンデス× -rand:36/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(61+4) > 07:脚は血まみれの残骸と化し、無防備状態になる。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると足首から先を失う。サドンデス× -rand:61/100 -============================ -input: -WHL4 -output: -Warhammer : 脚部CT表(66+4) > 07:脚は血まみれの残骸と化し、無防備状態になる。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると足首から先を失う。サドンデス× -rand:66/100 -============================ -input: -WH1@ -output: -Warhammer : (WH1) > 57 > 失敗(失敗度5) -rand:57/100 -============================ -input: -WH1@ -output: -Warhammer : (WH1) > 70 > 失敗(失敗度6) -rand:70/100 -============================ -input: -WH1@ -output: -Warhammer : (WH1) > 4 > 失敗(失敗度0) -rand:4/100 -============================ -input: -WH1@ -output: -Warhammer : (WH1) > 50 > 失敗(失敗度4) -rand:50/100 -============================ -input: -WH1@ -output: -Warhammer : (WH1) > 26 > 失敗(失敗度2) -rand:26/100 -============================ -input: -WH1@ -output: -Warhammer : (WH1) > 37 > 失敗(失敗度3) -rand:37/100 -============================ -input: -WH1@ -output: -Warhammer : (WH1) > 93 > 失敗(失敗度9) -rand:93/100 -============================ -input: -WH1@ -output: -Warhammer : (WH1) > 89 > 失敗(失敗度8) -rand:89/100 -============================ -input: -WH1@ -output: -Warhammer : (WH1) > 64 > 失敗(失敗度6) -rand:64/100 -============================ -input: -WH1@ -output: -Warhammer : (WH1) > 41 > 失敗(失敗度4) -rand:41/100 -============================ -input: -WH50 -output: -Warhammer : (WH50) > 71 > 失敗(失敗度2) -rand:71/100 -============================ -input: -WH50 -output: -Warhammer : (WH50) > 39 > 成功(成功度1) 二足:左脚 -rand:39/100 -============================ -input: -WH50 -output: -Warhammer : (WH50) > 94 > 失敗(失敗度4) -rand:94/100 -============================ -input: -WH50 -output: -Warhammer : (WH50) > 97 > 失敗(失敗度4) -rand:97/100 -============================ -input: -WH50 -output: -Warhammer : (WH50) > 9 > 成功(成功度4) 二足:右脚 -rand:9/100 -============================ -input: -WH50 -output: -Warhammer : (WH50) > 88 > 失敗(失敗度3) -rand:88/100 -============================ -input: -WH50 -output: -Warhammer : (WH50) > 16 > 成功(成功度3) 二足:胴体 -rand:16/100 -============================ -input: -WH50 -output: -Warhammer : (WH50) > 68 > 失敗(失敗度1) -rand:68/100 -============================ -input: -WH50 -output: -Warhammer : (WH50) > 62 > 失敗(失敗度1) -rand:62/100 -============================ -input: -WH50 -output: -Warhammer : (WH50) > 84 > 失敗(失敗度3) -rand:84/100 -============================ -input: -WH50@ -output: -Warhammer : (WH50) > 72 > 失敗(失敗度2) -rand:72/100 -============================ -input: -WH50@ -output: -Warhammer : (WH50) > 3 > 成功(成功度4) 二足:右腕 有翼二足:左腕 四足:胴体 半人四足:左腕 有翼四足:左翼 鳥:右翼 -rand:3/100 -============================ -input: -WH50@ -output: -Warhammer : (WH50) > 19 > 成功(成功度3) 二足:左脚 有翼二足:左脚 四足:左後脚 半人四足:左後脚 有翼四足:左後脚 鳥:左脚 -rand:19/100 -============================ -input: -WH50@ -output: -Warhammer : (WH50) > 23 > 成功(成功度2) 二足:右腕 有翼二足:左腕 四足:胴体 半人四足:胴体 有翼四足:胴体 鳥:右翼 -rand:23/100 -============================ -input: -WH50@ -output: -Warhammer : (WH50) > 69 > 失敗(失敗度1) -rand:69/100 -============================ -input: -WH50@ -output: -Warhammer : (WH50) > 70 > 失敗(失敗度2) -rand:70/100 -============================ -input: -WH50@ -output: -Warhammer : (WH50) > 53 > 失敗(失敗度0) -rand:53/100 -============================ -input: -WH50@ -output: -Warhammer : (WH50) > 78 > 失敗(失敗度2) -rand:78/100 -============================ -input: -WH50@ -output: -Warhammer : (WH50) > 26 > 成功(成功度2) 二足:胴体 有翼二足:胴体 四足:右前脚 半人四足:右前脚 有翼四足:右前脚 鳥:胴体 -rand:26/100 -============================ -input: -WH50@ -output: -Warhammer : (WH50) > 30 > 成功(成功度2) 二足:頭部 有翼二足:頭部 四足:頭部 半人四足:頭部 有翼四足:頭部 鳥:頭部 -rand:30/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 80 > 失敗(失敗度3) -rand:80/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 70 > 失敗(失敗度2) -rand:70/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 46 > 成功(成功度0) 鳥:胴体 -rand:46/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 33 > 成功(成功度1) 鳥:右翼 -rand:33/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 22 > 成功(成功度2) 鳥:右翼 -rand:22/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 68 > 失敗(失敗度1) -rand:68/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 66 > 失敗(失敗度1) -rand:66/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 84 > 失敗(失敗度3) -rand:84/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 74 > 失敗(失敗度2) -rand:74/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 4 > 成功(成功度4) 鳥:左翼 -rand:4/100 -============================ -input: -WH50@H -output: -Warhammer : (WH50) > 85 > 失敗(失敗度3) -rand:85/100 -============================ -input: -WH50@H -output: -Warhammer : (WH50) > 64 > 失敗(失敗度1) -rand:64/100 -============================ -input: -WH50@H -output: -Warhammer : (WH50) > 1 > 成功(成功度4) 二足:頭部 有翼二足:頭部 四足:頭部 半人四足:頭部 有翼四足:頭部 鳥:頭部 -rand:1/100 -============================ -input: -WH50@H -output: -Warhammer : (WH50) > 100 > 失敗(失敗度5) -rand:100/100 -============================ -input: -WH50@H -output: -Warhammer : (WH50) > 28 > 成功(成功度2) 二足:右脚 有翼二足:右脚 四足:右後脚 半人四足:右後脚 有翼四足:右後脚 鳥:右脚 -rand:28/100 -============================ -input: -WH50@H -output: -Warhammer : (WH50) > 55 > 失敗(失敗度0) -rand:55/100 -============================ -input: -WH50@H -output: -Warhammer : (WH50) > 33 > 成功(成功度1) 二足:右腕 有翼二足:左腕 四足:胴体 半人四足:胴体 有翼四足:胴体 鳥:右翼 -rand:33/100 -============================ -input: -WH50@H -output: -Warhammer : (WH50) > 94 > 失敗(失敗度4) -rand:94/100 -============================ -input: -WH50@H -output: -Warhammer : (WH50) > 48 > 成功(成功度0) 二足:右脚 有翼二足:右脚 四足:右後脚 半人四足:右後脚 有翼四足:右後脚 鳥:右脚 -rand:48/100 -============================ -input: -WH50@H -output: -Warhammer : (WH50) > 48 > 成功(成功度0) 二足:右脚 有翼二足:右脚 四足:右後脚 半人四足:右後脚 有翼四足:右後脚 鳥:右脚 -rand:48/100 -============================ -input: -WH50@2H -output: -Warhammer : (WH50) > 95 > 失敗(失敗度4) -rand:95/100 -============================ -input: -WH50@2H -output: -Warhammer : (WH50) > 63 > 失敗(失敗度1) -rand:63/100 -============================ -input: -WH50@2H -output: -Warhammer : (WH50) > 15 > 成功(成功度3) 二足:左腕 -rand:15/100 -============================ -input: -WH50@2H -output: -Warhammer : (WH50) > 87 > 失敗(失敗度3) -rand:87/100 -============================ -input: -WH50@2H -output: -Warhammer : (WH50) > 47 > 成功(成功度0) 二足:胴体 -rand:47/100 -============================ -input: -WH50@2H -output: -Warhammer : (WH50) > 15 > 成功(成功度3) 二足:左腕 -rand:15/100 -============================ -input: -WH50@2H -output: -Warhammer : (WH50) > 2 > 成功(成功度4) 二足:右腕 -rand:2/100 -============================ -input: -WH50@2H -output: -Warhammer : (WH50) > 27 > 成功(成功度2) 二足:胴体 -rand:27/100 -============================ -input: -WH50@2H -output: -Warhammer : (WH50) > 61 > 失敗(失敗度1) -rand:61/100 -============================ -input: -WH50@2H -output: -Warhammer : (WH50) > 63 > 失敗(失敗度1) -rand:63/100 -============================ -input: -WH50@2W -output: -Warhammer : (WH50) > 11 > 成功(成功度3) 有翼二足:頭部 -rand:11/100 -============================ -input: -WH50@2W -output: -Warhammer : (WH50) > 59 > 失敗(失敗度0) -rand:59/100 -============================ -input: -WH50@2W -output: -Warhammer : (WH50) > 17 > 成功(成功度3) 有翼二足:胴体 -rand:17/100 -============================ -input: -WH50@2W -output: -Warhammer : (WH50) > 62 > 失敗(失敗度1) -rand:62/100 -============================ -input: -WH50@2W -output: -Warhammer : (WH50) > 56 > 失敗(失敗度0) -rand:56/100 -============================ -input: -WH50@2W -output: -Warhammer : (WH50) > 82 > 失敗(失敗度3) -rand:82/100 -============================ -input: -WH50@2W -output: -Warhammer : (WH50) > 44 > 成功(成功度0) 有翼二足:右翼 -rand:44/100 -============================ -input: -WH50@2W -output: -Warhammer : (WH50) > 92 > 失敗(失敗度4) -rand:92/100 -============================ -input: -WH50@2W -output: -Warhammer : (WH50) > 42 > 成功(成功度0) 有翼二足:右腕 -rand:42/100 -============================ -input: -WH50@2W -output: -Warhammer : (WH50) > 73 > 失敗(失敗度2) -rand:73/100 -============================ -input: -WH50@4 -output: -Warhammer : (WH50) > 79 > 失敗(失敗度2) -rand:79/100 -============================ -input: -WH50@4 -output: -Warhammer : (WH50) > 90 > 失敗(失敗度4) -rand:90/100 -============================ -input: -WH50@4 -output: -Warhammer : (WH50) > 57 > 失敗(失敗度0) -rand:57/100 -============================ -input: -WH50@4 -output: -Warhammer : (WH50) > 33 > 成功(成功度1) 四足:胴体 -rand:33/100 -============================ -input: -WH50@4 -output: -Warhammer : (WH50) > 85 > 失敗(失敗度3) -rand:85/100 -============================ -input: -WH50@4 -output: -Warhammer : (WH50) > 20 > 成功(成功度3) 四足:頭部 -rand:20/100 -============================ -input: -WH50@4 -output: -Warhammer : (WH50) > 13 > 成功(成功度3) 四足:胴体 -rand:13/100 -============================ -input: -WH50@4 -output: -Warhammer : (WH50) > 63 > 失敗(失敗度1) -rand:63/100 -============================ -input: -WH50@4 -output: -Warhammer : (WH50) > 89 > 失敗(失敗度3) -rand:89/100 -============================ -input: -WH50@4 -output: -Warhammer : (WH50) > 57 > 失敗(失敗度0) -rand:57/100 -============================ -input: -WH50@4H -output: -Warhammer : (WH50) > 59 > 失敗(失敗度0) -rand:59/100 -============================ -input: -WH50@4H -output: -Warhammer : (WH50) > 50 > 成功(成功度0) 半人四足:頭部 -rand:50/100 -============================ -input: -WH50@4H -output: -Warhammer : (WH50) > 85 > 失敗(失敗度3) -rand:85/100 -============================ -input: -WH50@4H -output: -Warhammer : (WH50) > 100 > 失敗(失敗度5) -rand:100/100 -============================ -input: -WH50@4H -output: -Warhammer : (WH50) > 100 > 失敗(失敗度5) -rand:100/100 -============================ -input: -WH50@4H -output: -Warhammer : (WH50) > 12 > 成功(成功度3) 半人四足:左腕 -rand:12/100 -============================ -input: -WH50@4H -output: -Warhammer : (WH50) > 70 > 失敗(失敗度2) -rand:70/100 -============================ -input: -WH50@4H -output: -Warhammer : (WH50) > 80 > 失敗(失敗度3) -rand:80/100 -============================ -input: -WH50@4H -output: -Warhammer : (WH50) > 42 > 成功(成功度0) 半人四足:左腕 -rand:42/100 -============================ -input: -WH50@4H -output: -Warhammer : (WH50) > 80 > 失敗(失敗度3) -rand:80/100 -============================ -input: -WH50@4W -output: -Warhammer : (WH50) > 37 > 成功(成功度1) 有翼四足:左前脚 -rand:37/100 -============================ -input: -WH50@4W -output: -Warhammer : (WH50) > 77 > 失敗(失敗度2) -rand:77/100 -============================ -input: -WH50@4W -output: -Warhammer : (WH50) > 5 > 成功(成功度4) 有翼四足:胴体 -rand:5/100 -============================ -input: -WH50@4W -output: -Warhammer : (WH50) > 80 > 失敗(失敗度3) -rand:80/100 -============================ -input: -WH50@4W -output: -Warhammer : (WH50) > 23 > 成功(成功度2) 有翼四足:胴体 -rand:23/100 -============================ -input: -WH50@4W -output: -Warhammer : (WH50) > 10 > 成功(成功度4) 有翼四足:頭部 -rand:10/100 -============================ -input: -WH50@4W -output: -Warhammer : (WH50) > 7 > 成功(成功度4) 有翼四足:右前脚 -rand:7/100 -============================ -input: -WH50@4W -output: -Warhammer : (WH50) > 78 > 失敗(失敗度2) -rand:78/100 -============================ -input: -WH50@4W -output: -Warhammer : (WH50) > 11 > 成功(成功度3) 有翼四足:右翼 -rand:11/100 -============================ -input: -WH50@4W -output: -Warhammer : (WH50) > 20 > 成功(成功度3) 有翼四足:頭部 -rand:20/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 81 > 失敗(失敗度3) -rand:81/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 50 > 成功(成功度0) 鳥:頭部 -rand:50/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 96 > 失敗(失敗度4) -rand:96/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 10 > 成功(成功度4) 鳥:頭部 -rand:10/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 20 > 成功(成功度3) 鳥:頭部 -rand:20/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 60 > 失敗(失敗度1) -rand:60/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 12 > 成功(成功度3) 鳥:右翼 -rand:12/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 57 > 失敗(失敗度0) -rand:57/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 6 > 成功(成功度4) 鳥:胴体 -rand:6/100 -============================ -input: -WH50@W -output: -Warhammer : (WH50) > 80 > 失敗(失敗度3) -rand:80/100 -============================ -input: -1D100>=? 目標値?でバグらない -output: -Warhammer : (1D100>=?) > 42 > 失敗 -rand:42/100 diff --git a/src/src_bcdice/test/data/WitchQuest.txt b/src/src_bcdice/test/data/WitchQuest.txt deleted file mode 100644 index 650b372ca..000000000 --- a/src/src_bcdice/test/data/WitchQuest.txt +++ /dev/null @@ -1,46 +0,0 @@ -input: -WQ -output: -rand: -============================ -input: -WQ1 -output: -WitchQuest : (1,2) > 失敗 -rand:1/6,2/6 -============================ -input: -WQ2 -output: -WitchQuest : (1,1 / 2,1) > 1レベル成功(成功) -rand:1/6,1/6,2/6,1/6 -============================ -input: -WQ5 -output: -WitchQuest : (1,1 / 2,2 / 2,2 / 2,2 / 2,2) > 5レベル成功(伝説的大成功) -rand:1/6,1/6,2/6,2/6,2/6,2/6,2/6,2/6,2/6,2/6 -============================ -input: -WQ6 -output: -WitchQuest : (1,1 / 2,2 / 2,2 / 2,2 / 2,2 / 2,2) > 6レベル成功(神話的大成功) -rand:1/6,1/6,2/6,2/6,2/6,2/6,2/6,2/6,2/6,2/6,2/6,2/6 -============================ -input: -WQ7 -output: -WitchQuest : (1,1 / 2,2 / 2,2 / 2,2 / 2,2 / 2,2 / 2,2) > 6レベル成功(神話的大成功) -rand:1/6,1/6,2/6,2/6,2/6,2/6,2/6,2/6,2/6,2/6,2/6,2/6,2/6,2/6 -============================ -input: -SET1 -output: -WitchQuest : SET1 > 1:船から降りてきた > 11:おじさん -rand:1/6,1/6,1/6 -============================ -input: -SET48 -output: -WitchQuest : SET48 > 6:墓守をしている > 56:表2へ > 56:表3へ > 66:表4へ > 66:宇宙人 -rand:6/6,6/6,5/6,6/6,5/6,6/6,6/6,6/6,6/6 diff --git a/src/src_bcdice/test/data/WorldOfDarkness.txt b/src/src_bcdice/test/data/WorldOfDarkness.txt deleted file mode 100644 index c7e3286e6..000000000 --- a/src/src_bcdice/test/data/WorldOfDarkness.txt +++ /dev/null @@ -1,329 +0,0 @@ -input: -1ST テキスト -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=0 > 1 > 大失敗 -rand:1/10 -============================ -input: -1ST -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=0 > 5 > 失敗 -rand:5/10 -============================ -input: -1ST -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=0 > 6 > 成功数1 -rand:6/10 -============================ -input: -1ST -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=0 > 10 > 成功数1 -rand:10/10 -============================ -input: -1ST1 -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=0 > 6 > 成功数1 -rand:6/10 -============================ -input: -1ST7 -output: -WorldOfDarkness : DicePool=1, Difficulty=7, AutomaticSuccess=0 > 6 > 失敗 -rand:6/10 -============================ -input: -1ST7 -output: -WorldOfDarkness : DicePool=1, Difficulty=7, AutomaticSuccess=0 > 7 > 成功数1 -rand:7/10 -============================ -input: -10ST11 -output: -WorldOfDarkness : DicePool=10, Difficulty=11, AutomaticSuccess=0 > 2,2,3,4,5,6,7,8,9,10 > 成功数1 -rand:10/10,9/10,8/10,7/10,6/10,5/10,4/10,3/10,2/10,2/10 -============================ -input: -1ST7+1 -output: -WorldOfDarkness : DicePool=1, Difficulty=7, AutomaticSuccess=1 > 6 > 成功数1 -rand:6/10 -============================ -input: -1ST7+1 -output: -WorldOfDarkness : DicePool=1, Difficulty=7, AutomaticSuccess=1 > 7 > 成功数2 -rand:7/10 -============================ -input: -1ST+1 -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=1 > 6 > 成功数2 -rand:6/10 -============================ -input: -5ST -output: -WorldOfDarkness : DicePool=5, Difficulty=6, AutomaticSuccess=0 > 1,5,6,7,10 > 成功数2 -rand:1/10,5/10,6/10,7/10,10/10 -============================ -input: -5ST -output: -WorldOfDarkness : DicePool=5, Difficulty=6, AutomaticSuccess=0 > 1,2,5,5,5 > 大失敗 -rand:1/10,5/10,5/10,2/10,5/10 -============================ -input: -5ST -output: -WorldOfDarkness : DicePool=5, Difficulty=6, AutomaticSuccess=0 > 1,1,5,6,10 > 失敗 -rand:1/10,5/10,6/10,1/10,10/10 -============================ -input: -5ST -output: -WorldOfDarkness : DicePool=5, Difficulty=6, AutomaticSuccess=0 > 2,3,4,5,5 > 失敗 -rand:3/10,2/10,5/10,4/10,5/10 -============================ -input: -5ST7 -output: -WorldOfDarkness : DicePool=5, Difficulty=7, AutomaticSuccess=0 > 1,5,6,7,10 > 成功数1 -rand:1/10,5/10,6/10,7/10,10/10 -============================ -input: -5ST7+1 -output: -WorldOfDarkness : DicePool=5, Difficulty=7, AutomaticSuccess=1 > 1,5,6,7,10 > 成功数2 -rand:1/10,5/10,6/10,7/10,10/10 -============================ -input: -5ST+1 -output: -WorldOfDarkness : DicePool=5, Difficulty=6, AutomaticSuccess=1 > 2,5,6,7,9 > 成功数4 -rand:2/10,5/10,6/10,7/10,9/10 -============================ -input: -1STS テキスト -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=0 > 1 > 大失敗 -rand:1/10 -============================ -input: -1STS -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=0 > 5 > 失敗 -rand:5/10 -============================ -input: -1STS -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=0 > 6 > 成功数1 -rand:6/10 -============================ -input: -1STS -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=0 > 10 > 6 > 成功数2 -rand:10/10,6/10 -============================ -input: -1STS1 -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=0 > 6 > 成功数1 -rand:6/10 -============================ -input: -1STS7 -output: -WorldOfDarkness : DicePool=1, Difficulty=7, AutomaticSuccess=0 > 6 > 失敗 -rand:6/10 -============================ -input: -1STS7 -output: -WorldOfDarkness : DicePool=1, Difficulty=7, AutomaticSuccess=0 > 7 > 成功数1 -rand:7/10 -============================ -input: -10STS11 -output: -WorldOfDarkness : DicePool=10, Difficulty=11, AutomaticSuccess=0 > 2,2,3,4,5,6,7,8,9,10 > 2 > 成功数1 -rand:10/10,9/10,8/10,7/10,6/10,5/10,4/10,3/10,2/10,2/10,2/10 -============================ -input: -1STS7+1 -output: -WorldOfDarkness : DicePool=1, Difficulty=7, AutomaticSuccess=1 > 6 > 成功数1 -rand:6/10 -============================ -input: -1STS7+1 -output: -WorldOfDarkness : DicePool=1, Difficulty=7, AutomaticSuccess=1 > 7 > 成功数2 -rand:7/10 -============================ -input: -1STS+1 -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=1 > 6 > 成功数2 -rand:6/10 -============================ -input: -5STS -output: -WorldOfDarkness : DicePool=5, Difficulty=6, AutomaticSuccess=0 > 1,5,6,7,10 > 10 > 6 > 成功数4 -rand:1/10,5/10,6/10,7/10,10/10,10/10,6/10 -============================ -input: -5STS -output: -WorldOfDarkness : DicePool=5, Difficulty=6, AutomaticSuccess=0 > 1,5,6,7,10 > 10 > 1 > 成功数3 -rand:1/10,5/10,6/10,7/10,10/10,10/10,1/10 -============================ -input: -5STS -output: -WorldOfDarkness : DicePool=5, Difficulty=6, AutomaticSuccess=0 > 1,1,5,6,10 > 10 > 1 > 成功数1 -rand:1/10,5/10,6/10,1/10,10/10,10/10,1/10 -============================ -input: -5STS -output: -WorldOfDarkness : DicePool=5, Difficulty=6, AutomaticSuccess=0 > 2,3,4,5,5 > 失敗 -rand:3/10,2/10,5/10,4/10,5/10 -============================ -input: -5STS7 -output: -WorldOfDarkness : DicePool=5, Difficulty=7, AutomaticSuccess=0 > 1,5,6,10,10 > 4,5 > 成功数1 -rand:1/10,5/10,6/10,10/10,10/10,5/10,4/10 -============================ -input: -5STS7+1 -output: -WorldOfDarkness : DicePool=5, Difficulty=7, AutomaticSuccess=1 > 1,5,6,10,10 > 7,10 > 1 > 成功数4 -rand:1/10,5/10,6/10,10/10,10/10,10/10,7/10,1/10 -============================ -input: -5STS+1 -output: -WorldOfDarkness : DicePool=5, Difficulty=6, AutomaticSuccess=1 > 2,5,6,7,9 > 成功数4 -rand:2/10,5/10,6/10,7/10,9/10 -============================ -input: -1STA テキスト -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=0 > 1 > 大失敗 -rand:1/10 -============================ -input: -1STA -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=0 > 5 > 失敗 -rand:5/10 -============================ -input: -1STA -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=0 > 6 > 成功数1 -rand:6/10 -============================ -input: -1STA -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=0 > 10 > 成功数2 -rand:10/10 -============================ -input: -1STA1 -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=0 > 6 > 成功数1 -rand:6/10 -============================ -input: -1STA7 -output: -WorldOfDarkness : DicePool=1, Difficulty=7, AutomaticSuccess=0 > 6 > 失敗 -rand:6/10 -============================ -input: -1STA7 -output: -WorldOfDarkness : DicePool=1, Difficulty=7, AutomaticSuccess=0 > 7 > 成功数1 -rand:7/10 -============================ -input: -10STA11 -output: -WorldOfDarkness : DicePool=10, Difficulty=11, AutomaticSuccess=0 > 2,2,3,4,5,6,7,8,9,10 > 成功数2 -rand:10/10,9/10,8/10,7/10,6/10,5/10,4/10,3/10,2/10,2/10 -============================ -input: -1STA7+1 -output: -WorldOfDarkness : DicePool=1, Difficulty=7, AutomaticSuccess=1 > 6 > 成功数1 -rand:6/10 -============================ -input: -1STA7+1 -output: -WorldOfDarkness : DicePool=1, Difficulty=7, AutomaticSuccess=1 > 7 > 成功数2 -rand:7/10 -============================ -input: -1STA+1 -output: -WorldOfDarkness : DicePool=1, Difficulty=6, AutomaticSuccess=1 > 6 > 成功数2 -rand:6/10 -============================ -input: -5STA -output: -WorldOfDarkness : DicePool=5, Difficulty=6, AutomaticSuccess=0 > 1,5,6,7,10 > 成功数3 -rand:1/10,5/10,6/10,7/10,10/10 -============================ -input: -5STA -output: -WorldOfDarkness : DicePool=5, Difficulty=6, AutomaticSuccess=0 > 1,1,5,6,10 > 成功数1 -rand:1/10,5/10,6/10,1/10,10/10 -============================ -input: -5STA -output: -WorldOfDarkness : DicePool=5, Difficulty=6, AutomaticSuccess=0 > 2,3,4,5,5 > 失敗 -rand:3/10,2/10,5/10,4/10,5/10 -============================ -input: -5STA7 -output: -WorldOfDarkness : DicePool=5, Difficulty=7, AutomaticSuccess=0 > 1,5,6,10,10 > 成功数3 -rand:1/10,5/10,6/10,10/10,10/10 -============================ -input: -5STA7+1 -output: -WorldOfDarkness : DicePool=5, Difficulty=7, AutomaticSuccess=1 > 1,5,6,10,10 > 成功数4 -rand:1/10,5/10,6/10,10/10,10/10 -============================ -input: -5STA+1 -output: -WorldOfDarkness : DicePool=5, Difficulty=6, AutomaticSuccess=1 > 2,5,6,7,9 > 成功数4 -rand:2/10,5/10,6/10,7/10,9/10 -============================ -input: -5STA -output: -WorldOfDarkness : DicePool=5, Difficulty=6, AutomaticSuccess=0 > 1,1,5,6,10 > 成功数1 -rand:1/10,5/10,6/10,10/10,1/10 -============================ -input: -5STA7 -output: -WorldOfDarkness : DicePool=5, Difficulty=7, AutomaticSuccess=0 > 1,1,5,6,10 > 失敗 -rand:1/10,5/10,6/10,10/10,1/10 diff --git a/src/src_bcdice/test/data/YankeeYogSothoth.txt b/src/src_bcdice/test/data/YankeeYogSothoth.txt deleted file mode 100644 index 676094415..000000000 --- a/src/src_bcdice/test/data/YankeeYogSothoth.txt +++ /dev/null @@ -1,299 +0,0 @@ -input: -2D6>=7 -output: -YankeeYogSothoth : (2D6>=7) > 2[1,1] > 2 > ファンブル(判定失敗。ファンブル表(FT)を振ること) -rand:1/6,1/6 -============================ -input: -2D6>=7 -output: -YankeeYogSothoth : (2D6>=7) > 12[6,6] > 12 > スペシャル(判定成功。【テンション】が1段階上昇) -rand:6/6,6/6 -============================ -input: -2D6>=7 -output: -YankeeYogSothoth : (2D6>=7) > 7[1,6] > 7 > 成功 -rand:1/6,6/6 -============================ -input: -2D6>=7 -output: -YankeeYogSothoth : (2D6>=7) > 6[1,5] > 6 > 失敗 -rand:1/6,5/6 -============================ -input: -FT -output: -YankeeYogSothoth : ファンブル表(1) > やっちまった……。テンションが1段階減少する。 -rand:1/6 -============================ -input: -FT -output: -YankeeYogSothoth : ファンブル表(6) > 逆境に燃える。テンションが1段階上昇する。 -rand:6/6 -============================ -input: -WT -output: -YankeeYogSothoth : 変調表(1) > 毒:サイクル終了時もしくはラウンド終了時に、2D6点のダメージを受ける。 -rand:1/6 -============================ -input: -WT -output: -YankeeYogSothoth : 変調表(6) > 目つぶし:判定の達成値が2点減少する。 -rand:6/6 -============================ -input: -RTT -output: -YankeeYogSothoth : ランダム指定特技表(1,2) > 『苦手』大人 -rand:1/6,1/6,1/6 -============================ -input: -RTT -output: -YankeeYogSothoth : ランダム指定特技表(6,12) > 『好み』静寂 -rand:6/6,6/6,6/6 -============================ -input: -KKT -output: -YankeeYogSothoth : 関係表(1) > 「家族/気に食わない」 -rand:1/6 -============================ -input: -KKT -output: -YankeeYogSothoth : 関係表(6) > 「利用できる/ヘタレ」 -rand:6/6 -============================ -input: -DBRT -output: -YankeeYogSothoth : 他愛のない会話表(11) > 「政治の話」 -rand:1/6,1/6, -============================ -input: -DBRT -output: -YankeeYogSothoth : 他愛のない会話表(16) > 「嫌いなものの話」 -rand:6/6,1/6 -============================ -input: -DBRT -output: -YankeeYogSothoth : 他愛のない会話表(66) > 「ダブりの話」 -rand:6/6,6/6 -============================ -input: -TKT -output: -YankeeYogSothoth : 戦う理由表(11) > 「なんとなく」 -rand:1/6,1/6, -============================ -input: -TKT -output: -YankeeYogSothoth : 戦う理由表(16) > 「妖精たちのいたずらがほほえましかった」 -rand:6/6,1/6 -============================ -input: -TKT -output: -YankeeYogSothoth : 戦う理由表(66) > 「ただ暴れたかった」 -rand:6/6,6/6 -============================ -input: -BUDT -output: -YankeeYogSothoth : 武勇伝表(11) > バッドヤンキーのチームに自分が所属する学校を破壊されたが、最後まで戦った。/テンションが1段階上昇 -rand:1/6,1/6, -============================ -input: -BUDT -output: -YankeeYogSothoth : 武勇伝表(16) > バッドヤンキーに支配されていた店を救った。/【攻撃力】+1 -rand:6/6,1/6 -============================ -input: -BUDT -output: -YankeeYogSothoth : 武勇伝表(66) > 隣のプレイヤーのPCと一緒に、大きな悪の組織を潰した。/右隣のプレイヤーのPCに対する【友情度】が1点上昇 -rand:6/6,6/6 -============================ -input: -GUDT -output: -YankeeYogSothoth : ガイヤンキー武勇伝表(11) > アザトースが突然接触してきたので、殴って追い返した。/テンションが1段階上昇 -rand:1/6,1/6, -============================ -input: -GUDT -output: -YankeeYogSothoth : ガイヤンキー武勇伝表(16) > 一晩飲み明かした相手がナイアーラトテップだった。/【攻撃力】+1 -rand:6/6,1/6 -============================ -input: -GUDT -output: -YankeeYogSothoth : ガイヤンキー武勇伝表(66) > 次に会うヤンキーのために、うまいものを用意した。/右隣のプレイヤーのPCに対する【友情度】が1点上昇 -rand:6/6,6/6 -============================ -input: -DAIT -output: -YankeeYogSothoth : 第一印象表(1) > 「ヤベエ」 -rand:1/6 -============================ -input: -DAIT -output: -YankeeYogSothoth : 第一印象表(6) > 「アウトオブ眼中」 -rand:6/6 -============================ -input: -TKKT -output: -YankeeYogSothoth : ツレ関係表(1) > 「すごそう」 -rand:1/6 -============================ -input: -TKKT -output: -YankeeYogSothoth : ツレ関係表(6) > 「利用できる」 -rand:6/6 -============================ -input: -GSST -output: -YankeeYogSothoth : 現実世界生活表(11) > 喧嘩に明け暮れた -rand:1/6,1/6, -============================ -input: -GSST -output: -YankeeYogSothoth : 現実世界生活表(16) > バイトに専念した -rand:6/6,1/6 -============================ -input: -GSST -output: -YankeeYogSothoth : 現実世界生活表(66) > 汚い大人の罠にはめられたが、なんとかした -rand:6/6,6/6 -============================ -input: -GYST -output: -YankeeYogSothoth : ガイヤンキー生活表(11) > ツレと生活をした -rand:1/6,1/6, -============================ -input: -GYST -output: -YankeeYogSothoth : ガイヤンキー生活表(16) > この世界の遺跡を回った -rand:6/6,1/6 -============================ -input: -GYST -output: -YankeeYogSothoth : ガイヤンキー生活表(66) > 農作業をした -rand:6/6,6/6 -============================ -input: -HPST -output: -YankeeYogSothoth : 病院生活表(11) > 治療に専念した -rand:1/6,1/6 -============================ -input: -HPST -output: -YankeeYogSothoth : 病院生活表(16) > 看護師と仲良くなった -rand:6/6,1/6, -============================ -input: -HPST -output: -YankeeYogSothoth : 病院生活表(66) > 売店で売っているお菓子をコンプリートした -rand:6/6,6/6, -============================ -input: -FTNT -output: -YankeeYogSothoth : 二つ名決定表(1,11) > 「愛死天流(あいしてる)」 -rand:1/6,1/6,1/6 -============================ -input: -FTNT -output: -YankeeYogSothoth : 二つ名決定表(2,16) > 「威風堂々(いふうどうどう)」 -rand:2/6,6/6,1/6 -============================ -input: -FTNT -output: -YankeeYogSothoth : 二つ名決定表(2,66) > 「時給千円(じきゅうせんえん)」 -rand:2/6,6/6,6/6 -============================ -input: -FTNT -output: -YankeeYogSothoth : 二つ名決定表(3,11) > 「みんなの」 -rand:3/6,1/6,1/6 -============================ -input: -FTNT -output: -YankeeYogSothoth : 二つ名決定表(3,16) > 「熱血番長の」 -rand:3/6,1/6,6/6 -============================ -input: -FTNT -output: -YankeeYogSothoth : 二つ名決定表(4,66) > 「悪そうなやつはだいたい友達」 -rand:4/6,6/6,6/6 -============================ -input: -FTNT -output: -YankeeYogSothoth : 二つ名決定表(5,11) > 「ファッションヤンキー」 -rand:5/6,1/6,1/6 -============================ -input: -FTNT -output: -YankeeYogSothoth : 二つ名決定表(5,16) > 「イカれたやつ」 -rand:5/6,6/6,1/6 -============================ -input: -FTNT -output: -YankeeYogSothoth : 二つ名決定表(5,66) > 「おやじ狩り狩り」 -rand:5/6,6/6,6/6 -============================ -input: -FTNT -output: -YankeeYogSothoth : 二つ名決定表(6,11) > 「国産」 -rand:6/6,1/6,1/6 -============================ -input: -FTNT -output: -YankeeYogSothoth : 二つ名決定表(6,16) > 「ミステリー」 -rand:6/6,1/6,6/6 -============================ -input: -FTNT -output: -YankeeYogSothoth : 二つ名決定表(6,66) > 「名古屋」 -rand:6/6,6/6,6/6 -============================ -input: -2D6>=? 目標値?でバグらない -output: -YankeeYogSothoth : (2D6>=?) > 7[3,4] > 7 > 失敗 -rand:3/6,4/6 diff --git a/src/src_bcdice/test/data/YearZeroEngine.txt b/src/src_bcdice/test/data/YearZeroEngine.txt deleted file mode 100644 index 923002bbc..000000000 --- a/src/src_bcdice/test/data/YearZeroEngine.txt +++ /dev/null @@ -1,422 +0,0 @@ -input: -YZE3 -output: -YearZeroEngine : (3D6) > [2,5,3] 成功数:0 -rand:2/6,5/6,3/6 -============================ -input: -YZE3 -output: -YearZeroEngine : (3D6) > [2,6,1] 成功数:1 -rand:2/6,6/6,1/6 -============================ -input: -YZE3 -output: -YearZeroEngine : (3D6) > [6,6,6] 成功数:3 -rand:6/6,6/6,6/6 -============================ -input: -YZE3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [2,5,3]+[1,4,1] 成功数:0 -rand:2/6,5/6,3/6,1/6,4/6,1/6 -============================ -input: -YZE3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [2,6,3]+[1,6,1] 成功数:2 -rand:2/6,6/6,3/6,1/6,6/6,1/6 -============================ -input: -YZE3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [6,6,6]+[6,6,6] 成功数:6 -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -YZE3+3+3 -output: -YearZeroEngine : (3D6)+(3D6)+(3D6) > [2,5,3]+[1,4,1]+[3,1,4] 成功数:0 -rand:2/6,5/6,3/6,1/6,4/6,1/6,3/6,1/6,4/6 -============================ -input: -YZE3+3+3 -output: -YearZeroEngine : (3D6)+(3D6)+(3D6) > [2,5,6]+[1,4,6]+[3,1,6] 成功数:3 -rand:2/6,5/6,6/6,1/6,4/6,6/6,3/6,1/6,6/6 -============================ -input: -YZE3+3+3 -output: -YearZeroEngine : (3D6)+(3D6)+(3D6) > [6,6,6]+[6,6,6]+[6,6,6] 成功数:9 -rand:6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -YZE3+2+1 -output: -YearZeroEngine : (3D6)+(2D6)+(1D6) > [2,5,3]+[1,4]+[3] 成功数:0 -rand:2/6,5/6,3/6,1/6,4/6,3/6 -============================ -input: -YZE3+2+1 -output: -YearZeroEngine : (3D6)+(2D6)+(1D6) > [2,5,6]+[4,6]+[6] 成功数:3 -rand:2/6,5/6,6/6,4/6,6/6,6/6 -============================ -input: -YZE3+2+1 -output: -YearZeroEngine : (3D6)+(2D6)+(1D6) > [6,6,6]+[6,6]+[6] 成功数:6 -rand:6/6,6/6,6/6,6/6,6/6,6/6, -============================ -input: -YZE1+2+3 -output: -YearZeroEngine : (1D6)+(2D6)+(3D6) > [2]+[4,6]+[6,1,5] 成功数:2 -rand:2/6,4/6,6/6,6/6,1/6,5/6 -============================ -input: -SYZE3 -output: -YearZeroEngine : (3D6) > [2,5,3] 成功数:0###secret dice### -rand:2/6,5/6,3/6 -============================ -input: -SYZE3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [2,5,3]+[1,4,1] 成功数:0###secret dice### -rand:2/6,5/6,3/6,1/6,4/6,1/6 -============================ -input: -SYZE1+2+3 -output: -YearZeroEngine : (1D6)+(2D6)+(3D6) > [2]+[4,6]+[6,1,5] 成功数:2###secret dice### -rand:2/6,4/6,6/6,6/6,1/6,5/6 -============================ -input: -2YZE3 -output: -YearZeroEngine : (3D6) > [2,5,3] 成功数:0 難易度=2:判定失敗! -rand:2/6,5/6,3/6 -============================ -input: -2YZE3 -output: -YearZeroEngine : (3D6) > [2,6,1] 成功数:1 難易度=2:判定失敗! -rand:2/6,6/6,1/6 -============================ -input: -2YZE3 -output: -YearZeroEngine : (3D6) > [6,6,6] 成功数:3 難易度=2:判定成功! -rand:6/6,6/6,6/6 -============================ -input: -2YZE3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [2,5,3]+[1,4,1] 成功数:0 難易度=2:判定失敗! -rand:2/6,5/6,3/6,1/6,4/6,1/6 -============================ -input: -2YZE3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [2,6,3]+[1,6,1] 成功数:2 難易度=2:判定成功! -rand:2/6,6/6,3/6,1/6,6/6,1/6 -============================ -input: -2YZE3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [6,6,6]+[6,6,6] 成功数:6 難易度=2:判定成功! -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -2YZE3+3+3 -output: -YearZeroEngine : (3D6)+(3D6)+(3D6) > [2,5,3]+[1,4,1]+[3,1,4] 成功数:0 難易度=2:判定失敗! -rand:2/6,5/6,3/6,1/6,4/6,1/6,3/6,1/6,4/6 -============================ -input: -2YZE3+3+3 -output: -YearZeroEngine : (3D6)+(3D6)+(3D6) > [2,5,6]+[1,4,6]+[3,1,6] 成功数:3 難易度=2:判定成功! -rand:2/6,5/6,6/6,1/6,4/6,6/6,3/6,1/6,6/6 -============================ -input: -2YZE3+3+3 -output: -YearZeroEngine : (3D6)+(3D6)+(3D6) > [6,6,6]+[6,6,6]+[6,6,6] 成功数:9 難易度=2:判定成功! -rand:6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -2YZE3+2+1 -output: -YearZeroEngine : (3D6)+(2D6)+(1D6) > [2,5,3]+[1,4]+[3] 成功数:0 難易度=2:判定失敗! -rand:2/6,5/6,3/6,1/6,4/6,3/6 -============================ -input: -2YZE3+2+1 -output: -YearZeroEngine : (3D6)+(2D6)+(1D6) > [2,5,6]+[4,6]+[6] 成功数:3 難易度=2:判定成功! -rand:2/6,5/6,6/6,4/6,6/6,6/6 -============================ -input: -2YZE3+2+1 -output: -YearZeroEngine : (3D6)+(2D6)+(1D6) > [6,6,6]+[6,6]+[6] 成功数:6 難易度=2:判定成功! -rand:6/6,6/6,6/6,6/6,6/6,6/6, -============================ -input: -2YZE1+2+3 -output: -YearZeroEngine : (1D6)+(2D6)+(3D6) > [2]+[4,6]+[6,1,5] 成功数:2 難易度=2:判定成功! -rand:2/6,4/6,6/6,6/6,1/6,5/6 -============================ -input: -S2YZE3 -output: -YearZeroEngine : (3D6) > [2,5,3] 成功数:0 難易度=2:判定失敗!###secret dice### -rand:2/6,5/6,3/6 -============================ -input: -S2YZE3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [2,5,3]+[1,4,1] 成功数:0 難易度=2:判定失敗!###secret dice### -rand:2/6,5/6,3/6,1/6,4/6,1/6 -============================ -input: -S2YZE1+2+3 -output: -YearZeroEngine : (1D6)+(2D6)+(3D6) > [2]+[4,6]+[6,1,5] 成功数:2 難易度=2:判定成功!###secret dice### -rand:2/6,4/6,6/6,6/6,1/6,5/6 -============================ -input: -MYZ3 -output: -YearZeroEngine : (3D6) > [2,5,3] 成功数:0 -出目1:[能力:0,技能:0,アイテム:0) プッシュ可能=3ダイス -rand:2/6,5/6,3/6 -============================ -input: -MYZ3 -output: -YearZeroEngine : (3D6) > [2,6,1] 成功数:1 -出目1:[能力:1,技能:0,アイテム:0) プッシュ可能=1ダイス -rand:2/6,6/6,1/6 -============================ -input: -MYZ3 -output: -YearZeroEngine : (3D6) > [6,6,6] 成功数:3 -出目1:[能力:0,技能:0,アイテム:0) プッシュ可能=0ダイス -rand:6/6,6/6,6/6 -============================ -input: -MYZ3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [2,5,3]+[1,4,1] 成功数:0 -出目1:[能力:0,技能:2,アイテム:0) プッシュ可能=6ダイス -rand:2/6,5/6,3/6,1/6,4/6,1/6 -============================ -input: -MYZ3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [2,6,3]+[1,6,1] 成功数:2 -出目1:[能力:0,技能:2,アイテム:0) プッシュ可能=4ダイス -rand:2/6,6/6,3/6,1/6,6/6,1/6 -============================ -input: -MYZ3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [6,6,6]+[6,6,6] 成功数:6 -出目1:[能力:0,技能:0,アイテム:0) プッシュ可能=0ダイス -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -MYZ3+3+3 -output: -YearZeroEngine : (3D6)+(3D6)+(3D6) > [2,5,3]+[1,4,1]+[3,1,4] 成功数:0 -出目1:[能力:0,技能:2,アイテム:1) プッシュ可能=8ダイス -rand:2/6,5/6,3/6,1/6,4/6,1/6,3/6,1/6,4/6 -============================ -input: -MYZ3+3+3 -output: -YearZeroEngine : (3D6)+(3D6)+(3D6) > [2,5,6]+[1,4,6]+[3,1,6] 成功数:3 -出目1:[能力:0,技能:1,アイテム:1) プッシュ可能=5ダイス -rand:2/6,5/6,6/6,1/6,4/6,6/6,3/6,1/6,6/6 -============================ -input: -MYZ3+3+3 -output: -YearZeroEngine : (3D6)+(3D6)+(3D6) > [6,6,6]+[6,6,6]+[6,6,6] 成功数:9 -出目1:[能力:0,技能:0,アイテム:0) プッシュ可能=0ダイス -rand:6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -MYZ3+2+1 -output: -YearZeroEngine : (3D6)+(2D6)+(1D6) > [2,5,3]+[1,4]+[3] 成功数:0 -出目1:[能力:0,技能:1,アイテム:0) プッシュ可能=6ダイス -rand:2/6,5/6,3/6,1/6,4/6,3/6 -============================ -input: -MYZ3+2+1 -output: -YearZeroEngine : (3D6)+(2D6)+(1D6) > [2,5,6]+[4,6]+[6] 成功数:3 -出目1:[能力:0,技能:0,アイテム:0) プッシュ可能=3ダイス -rand:2/6,5/6,6/6,4/6,6/6,6/6 -============================ -input: -MYZ3+2+1 -output: -YearZeroEngine : (3D6)+(2D6)+(1D6) > [6,6,6]+[6,6]+[6] 成功数:6 -出目1:[能力:0,技能:0,アイテム:0) プッシュ可能=0ダイス -rand:6/6,6/6,6/6,6/6,6/6,6/6, -============================ -input: -MYZ1+2+3 -output: -YearZeroEngine : (1D6)+(2D6)+(3D6) > [2]+[4,6]+[6,1,5] 成功数:2 -出目1:[能力:0,技能:0,アイテム:1) プッシュ可能=3ダイス -rand:2/6,4/6,6/6,6/6,1/6,5/6 -============================ -input: -SMYZ3 -output: -YearZeroEngine : (3D6) > [2,5,3] 成功数:0 -出目1:[能力:0,技能:0,アイテム:0) プッシュ可能=3ダイス###secret dice### -rand:2/6,5/6,3/6 -============================ -input: -SMYZ3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [2,5,3]+[1,4,1] 成功数:0 -出目1:[能力:0,技能:2,アイテム:0) プッシュ可能=6ダイス###secret dice### -rand:2/6,5/6,3/6,1/6,4/6,1/6 -============================ -input: -SMYZ1+2+3 -output: -YearZeroEngine : (1D6)+(2D6)+(3D6) > [2]+[4,6]+[6,1,5] 成功数:2 -出目1:[能力:0,技能:0,アイテム:1) プッシュ可能=3ダイス###secret dice### -rand:2/6,4/6,6/6,6/6,1/6,5/6 -============================ -input: -2MYZ3 -output: -YearZeroEngine : (3D6) > [2,5,3] 成功数:0 難易度=2:判定失敗! -出目1:[能力:0,技能:0,アイテム:0) プッシュ可能=3ダイス -rand:2/6,5/6,3/6 -============================ -input: -2MYZ3 -output: -YearZeroEngine : (3D6) > [2,6,1] 成功数:1 難易度=2:判定失敗! -出目1:[能力:1,技能:0,アイテム:0) プッシュ可能=1ダイス -rand:2/6,6/6,1/6 -============================ -input: -2MYZ3 -output: -YearZeroEngine : (3D6) > [6,6,6] 成功数:3 難易度=2:判定成功! -出目1:[能力:0,技能:0,アイテム:0) プッシュ可能=0ダイス -rand:6/6,6/6,6/6 -============================ -input: -2MYZ3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [2,5,3]+[1,4,1] 成功数:0 難易度=2:判定失敗! -出目1:[能力:0,技能:2,アイテム:0) プッシュ可能=6ダイス -rand:2/6,5/6,3/6,1/6,4/6,1/6 -============================ -input: -2MYZ3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [2,6,3]+[1,6,1] 成功数:2 難易度=2:判定成功! -出目1:[能力:0,技能:2,アイテム:0) プッシュ可能=4ダイス -rand:2/6,6/6,3/6,1/6,6/6,1/6 -============================ -input: -2MYZ3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [6,6,6]+[6,6,6] 成功数:6 難易度=2:判定成功! -出目1:[能力:0,技能:0,アイテム:0) プッシュ可能=0ダイス -rand:6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -2MYZ3+3+3 -output: -YearZeroEngine : (3D6)+(3D6)+(3D6) > [2,5,3]+[1,4,1]+[3,1,4] 成功数:0 難易度=2:判定失敗! -出目1:[能力:0,技能:2,アイテム:1) プッシュ可能=8ダイス -rand:2/6,5/6,3/6,1/6,4/6,1/6,3/6,1/6,4/6 -============================ -input: -2MYZ3+3+3 -output: -YearZeroEngine : (3D6)+(3D6)+(3D6) > [2,5,6]+[1,4,6]+[3,1,6] 成功数:3 難易度=2:判定成功! -出目1:[能力:0,技能:1,アイテム:1) プッシュ可能=5ダイス -rand:2/6,5/6,6/6,1/6,4/6,6/6,3/6,1/6,6/6 -============================ -input: -2MYZ3+3+3 -output: -YearZeroEngine : (3D6)+(3D6)+(3D6) > [6,6,6]+[6,6,6]+[6,6,6] 成功数:9 難易度=2:判定成功! -出目1:[能力:0,技能:0,アイテム:0) プッシュ可能=0ダイス -rand:6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6,6/6 -============================ -input: -2MYZ3+2+1 -output: -YearZeroEngine : (3D6)+(2D6)+(1D6) > [2,5,3]+[1,4]+[3] 成功数:0 難易度=2:判定失敗! -出目1:[能力:0,技能:1,アイテム:0) プッシュ可能=6ダイス -rand:2/6,5/6,3/6,1/6,4/6,3/6 -============================ -input: -2MYZ3+2+1 -output: -YearZeroEngine : (3D6)+(2D6)+(1D6) > [2,5,6]+[4,6]+[6] 成功数:3 難易度=2:判定成功! -出目1:[能力:0,技能:0,アイテム:0) プッシュ可能=3ダイス -rand:2/6,5/6,6/6,4/6,6/6,6/6 -============================ -input: -2MYZ3+2+1 -output: -YearZeroEngine : (3D6)+(2D6)+(1D6) > [6,6,6]+[6,6]+[6] 成功数:6 難易度=2:判定成功! -出目1:[能力:0,技能:0,アイテム:0) プッシュ可能=0ダイス -rand:6/6,6/6,6/6,6/6,6/6,6/6, -============================ -input: -2MYZ1+2+3 -output: -YearZeroEngine : (1D6)+(2D6)+(3D6) > [2]+[4,6]+[6,1,5] 成功数:2 難易度=2:判定成功! -出目1:[能力:0,技能:0,アイテム:1) プッシュ可能=3ダイス -rand:2/6,4/6,6/6,6/6,1/6,5/6 -============================ -input: -S2MYZ3 -output: -YearZeroEngine : (3D6) > [2,5,3] 成功数:0 難易度=2:判定失敗! -出目1:[能力:0,技能:0,アイテム:0) プッシュ可能=3ダイス###secret dice### -rand:2/6,5/6,3/6 -============================ -input: -S2MYZ3+3 -output: -YearZeroEngine : (3D6)+(3D6) > [2,5,3]+[1,4,1] 成功数:0 難易度=2:判定失敗! -出目1:[能力:0,技能:2,アイテム:0) プッシュ可能=6ダイス###secret dice### -rand:2/6,5/6,3/6,1/6,4/6,1/6 -============================ -input: -S2MYZ1+2+3 -output: -YearZeroEngine : (1D6)+(2D6)+(3D6) > [2]+[4,6]+[6,1,5] 成功数:2 難易度=2:判定成功! -出目1:[能力:0,技能:0,アイテム:1) プッシュ可能=3ダイス###secret dice### -rand:2/6,4/6,6/6,6/6,1/6,5/6 -============================ -input: -2MYZ3+3+3 -output: -YearZeroEngine : (3D6)+(3D6)+(3D6) > [1,6,3]+[1,4,1]+[3,1,4] 成功数:1 難易度=2:判定失敗! -出目1:[能力:1,技能:2,アイテム:1) プッシュ可能=6ダイス -rand:1/6,6/6,3/6,1/6,4/6,1/6,3/6,1/6,4/6 \ No newline at end of file diff --git a/src/src_bcdice/test/data/ZettaiReido.txt b/src/src_bcdice/test/data/ZettaiReido.txt deleted file mode 100644 index 98475ba5b..000000000 --- a/src/src_bcdice/test/data/ZettaiReido.txt +++ /dev/null @@ -1,89 +0,0 @@ -input: -12-2DR-1>=10 -output: -ZettaiReido : (12-2DR-1>=10) > 12-0[0,0]-1 > 11 > クリティカル > 4DP -rand:6/6,6/6 -============================ -input: -10-2DR+1>=99 -output: -ZettaiReido : (10-2DR+1>=99) > 10-0[0,0]+1 > 11 > クリティカル > 4DP -rand:6/6,6/6 -============================ -input: -10-2DR+1>=10 -output: -ZettaiReido : (10-2DR+1>=10) > 10-1[1,0]+1 > 10 > 0 成功 > 1DP -rand:1/6,6/6 -============================ -input: -8-2DR>=6 -output: -ZettaiReido : (8-2DR>=6) > 8-2[1,1] > 6 > 0 成功 -rand:1/6,1/6 -============================ -input: -8-2DR-1>=4 -output: -ZettaiReido : (8-2DR-1>=4) > 8-2[1,1]-1 > 5 > 1 成功 -rand:1/6,1/6 -============================ -input: -30-2DR-10>=19 -output: -ZettaiReido : (30-2DR-10>=19) > 30-1[0,1]-10 > 19 > 0 成功 > 1DP -rand:6/6,1/6 -============================ -input: -8-2DR>=7 -output: -ZettaiReido : (8-2DR>=7) > 8-2[1,1] > 6 > 失敗 -rand:1/6,1/6 -============================ -input: -30-2DR-10>=20 -output: -ZettaiReido : (30-2DR-10>=20) > 30-1[0,1]-10 > 19 > 失敗 > 1DP -rand:6/6,1/6 -============================ -input: -9-2DR>=7 -output: -ZettaiReido : (9-2DR>=7) > 9-10[5,5] > -1 > ファンブル -rand:5/6,5/6 -============================ -input: -20-2DR>=7 -output: -ZettaiReido : (20-2DR>=7) > 20-10[5,5] > 10 > ファンブル -rand:5/6,5/6 -============================ -input: -6-2DR -output: -ZettaiReido : (6-2DR) > 6-5[2,3] > 1 > 1 成功 -rand:2/6,3/6 -============================ -input: -6-2DR -output: -ZettaiReido : (6-2DR) > 6-6[3,3] > 0 > 0 成功 -rand:3/6,3/6 -============================ -input: -6-2DR -output: -ZettaiReido : (6-2DR) > 6-0[0,0] > 6 > クリティカル > 4DP -rand:6/6,6/6 -============================ -input: -6-2DR -output: -ZettaiReido : (6-2DR) > 6-7[4,3] > -1 > 失敗 -rand:4/6,3/6 -============================ -input: -6-2DR -output: -ZettaiReido : (6-2DR) > 6-10[5,5] > -4 > ファンブル -rand:5/6,5/6 diff --git a/src/src_bcdice/test/data/dummyBot.txt b/src/src_bcdice/test/data/dummyBot.txt deleted file mode 100644 index 08414a8d9..000000000 --- a/src/src_bcdice/test/data/dummyBot.txt +++ /dev/null @@ -1,113 +0,0 @@ -input: -2d6もけけ -output: -rand: -============================ -input: -1D20+1 -output: -DiceBot : (1D20+1) > 1[1]+1 > 2 -rand:1/20 -============================ -input: -1D20+0 -output: -DiceBot : (1D20+0) > 1[1]+0 > 1 -rand:1/20 -============================ -input: -500d6 -output: -DiceBot : (500D6) > 0 -rand: -============================ -input: -2D6*2*3 -output: -DiceBot : (2D6*2*3) > 5[2,3]*2*3 > 30 -rand:2/6,3/6 -============================ -input: -2D6*2*3-1 -output: -DiceBot : (2D6*2*3-1) > 5[2,3]*2*3-1 > 29 -rand:2/6,3/6 -============================ -input: -1D6*1D6+2 -output: -DiceBot : (1D6*1D6+2) > 2[2]*3[3]+2 > 8 -rand:2/6,3/6 -============================ -input: -201D -output: -DiceBot : (201D6) > 0 -rand: -============================ -input: -2D10/10 -output: -DiceBot : (2D10/10) > 9[1,8]/10 > 0 -rand:1/10,8/10 -============================ -input: -2D10/10 -output: -DiceBot : (2D10/10) > 10[1,9]/10 > 1 -rand:1/10,9/10 -============================ -input: -2D10/10 -output: -DiceBot : (2D10/10) > 11[1,10]/10 > 1 -rand:1/10,10/10 -============================ -input: -2D10/10R -output: -DiceBot : (2D10/10R) > 4[1,3]/10R > 0 -rand:1/10,3/10 -============================ -input: -2D10/10R -output: -DiceBot : (2D10/10R) > 5[1,4]/10R > 1 -rand:1/10,4/10 -============================ -input: -2D10/10R -output: -DiceBot : (2D10/10R) > 14[10,4]/10R > 1 -rand:10/10,4/10 -============================ -input: -2D10/10R -output: -DiceBot : (2D10/10R) > 15[10,5]/10R > 2 -rand:10/10,5/10 -============================ -input: -2D10/10U -output: -DiceBot : (2D10/10U) > 2[1,1]/10U > 1 -rand:1/10,1/10 -============================ -input: -2D10/10U -output: -DiceBot : (2D10/10U) > 9[1,8]/10U > 1 -rand:1/10,8/10 -============================ -input: -2D10/10U -output: -DiceBot : (2D10/10U) > 10[1,9]/10U > 1 -rand:1/10,9/10 -============================ -input: -2D10/10U -output: -DiceBot : (2D10/10U) > 11[1,10]/10U > 2 -rand:1/10,10/10 -============================ diff --git a/src/src_bcdice/test/data/test.rb b/src/src_bcdice/test/data/test.rb deleted file mode 100644 index fbc614b05..000000000 --- a/src/src_bcdice/test/data/test.rb +++ /dev/null @@ -1 +0,0 @@ -load(File.expand_path('../../test.rb', File.dirname(__FILE__))) diff --git a/src/src_bcdice/test/others/README.txt b/src/src_bcdice/test/others/README.txt deleted file mode 100644 index 2b9721ef0..000000000 --- a/src/src_bcdice/test/others/README.txt +++ /dev/null @@ -1,3 +0,0 @@ -̃fBNgɂt@CB&C2.xṕu_CX{bgȊOṽeXgXNvgłB -ŏȍ~̓eiXĂȂ߂ɔĂ܂B -ɋCɂȂĂOKłB diff --git a/src/src_bcdice/test/others/testCard.rb b/src/src_bcdice/test/others/testCard.rb deleted file mode 100644 index 98f902828..000000000 --- a/src/src_bcdice/test/others/testCard.rb +++ /dev/null @@ -1,484 +0,0 @@ -# -*- coding: utf-8 -*- - -$:.push(File.dirname(__FILE__) + "/..") -require 'test/unit' -require 'CardTrader' -require 'log' -require 'BCDice_forTest' - -$isDebug = false - -class TestCardTrader < Test::Unit::TestCase - def setup - $isDebug = false - - maker = BCDiceMaker_forTest.new - @bcdice = maker.newBcDice() - @cardTrader = @bcdice.cardTrader - - setDefaultNick - end - - def setDefaultNick - @cardTrader.setNick("test_nick") - end - - def _test_printCardHelp() - @cardTrader.printCardHelp() - assert(@bcdice.getResult().length > 100) - end - - def test_invalidCommand() - @cardTrader.executeCard("aaaa", "channel") - assert_equal("", @bcdice.getResult()) - end - - def test_invalidCommand2() - @cardTrader.executeCard("c-invalidCommand", "channel") - assert_equal("", @bcdice.getResult()) - end - - def test_shuffleCards() - @cardTrader.executeCard("c-shuffle", "channel") - assert_equal("sendMessage\nto:channel\nシャッフルしました\n", @bcdice.getResult()) - end - - def test_shuffleCards_min() - @cardTrader.executeCard("c-sh", "channel") - assert_equal("sendMessage\nto:channel\nシャッフルしました\n", @bcdice.getResult()) - end - - def test_draw - @bcdice.setRandomValues([[53, 53]]) - @cardTrader.executeCard("c-draw", "channel") - assert_equal("sendMessageToOnlySender\nto:\nJ1\nsendMessage\nto:channel\ntest_nick: 1枚引きました\n", @bcdice.getResult()) - - @bcdice.setRandomValues([[52, 52]]) - @cardTrader.executeCard("c-draw", "channel") - assert_equal("sendMessageToOnlySender\nto:\nC13\nsendMessage\nto:channel\ntest_nick: 1枚引きました\n", @bcdice.getResult()) - - @bcdice.setRandomValues([[1, 51]]) - @cardTrader.executeCard("c-draw", "channel") - assert_equal("sendMessageToOnlySender\nto:\nS1\nsendMessage\nto:channel\ntest_nick: 1枚引きました\n", @bcdice.getResult()) - end - - def test_draw_3 - @bcdice.setRandomValues([[1, 53], [1, 52], [51, 51]]) - @cardTrader.executeCard("c-draw[3]", "channel") - assert_equal("sendMessageToOnlySender\nto:\nJ1,S1,S2\nsendMessage\nto:channel\ntest_nick: 3枚引きました\n", @bcdice.getResult()) - end - - def test_draw_full - rands = [] - cardCount = 53 - cardCount.times do |i| - max = cardCount - i - rands << [1, max] - end - - @bcdice.setRandomValues(rands) - @cardTrader.executeCard("c-draw[53]", "channel") - assert_equal("sendMessageToOnlySender\nto:\nC1,C10,C11,C12,C13,C2,C3,C4,C5,C6,C7,C8,C9,D1,D10,D11,D12,D13,D2,D3,D4,D5,D6,D7,D8,D9,H1,H10,H11,H12,H13,H2,H3,H4,H5,H6,H7,H8,H9,J1,S1,S10,S11,S12,S13,S2,S3,S4,S5,S6,S7,S8,S9\nsendMessage\nto:channel\ntest_nick: 53枚引きました\n", @bcdice.getResult()) - - @bcdice.setRandomValues([[1, 0]]) - @cardTrader.executeCard("c-draw[1]", "channel") - assert_equal("sendMessage\nto:channel\nカードが残っていません\n", @bcdice.getResult()) - end - - def test_odraw_3 - @bcdice.setRandomValues([[1, 53], [1, 52], [51, 51]]) - @cardTrader.executeCard("c-odraw[3]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: J1,S1,S2を引きました\n", @bcdice.getResult()) - end - - def test_odraw_full - drawCards(53, 53) - - @bcdice.setRandomValues([[1, 0]]) - @cardTrader.executeCard("c-odraw[1]", "channel") - assert_equal("sendMessage\nto:channel\nカードが残っていません\n", @bcdice.getResult()) - end - - def test_hand - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\nカードを持っていません 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - - @bcdice.setRandomValues([[1, 53], [1, 52], [51, 51]]) - @cardTrader.executeCard("c-odraw[3]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: J1,S1,S2を引きました\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ J1,S1,S2 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - end - - def test_vhand - @bcdice.setRandomValues([[1, 53], [1, 52], [51, 51]]) - @cardTrader.executeCard("c-odraw[3]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: J1,S1,S2を引きました\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-vhand test_nick", "channel") - assert_equal("sendMessageToOnlySender\nto:\ntest_nick の手札は[ J1,S1,S2 ] 場札:[ ] タップした場札:[ ]です\n", @bcdice.getResult()) - end - - def test_play - @bcdice.setRandomValues([[1, 53], [1, 52], [51, 51]]) - @cardTrader.executeCard("c-odraw[3]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: J1,S1,S2を引きました\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-play[S1]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 1枚出しました\nsendMessageToOnlySender\nto:\n[ J1,S2 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-play[J1,S2]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 2枚出しました\nsendMessageToOnlySender\nto:\n[ ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-play[C1]", "channel") - assert_equal("sendMessage\nto:channel\n[C1]は持っていません\nsendMessageToOnlySender\nto:\n[ ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - end - - def test_play_toPlace - @bcdice.setRandomValues([[1, 53], [1, 52], [51, 51]]) - @cardTrader.executeCard("c-draw[3]", "channel") - assert_equal("sendMessageToOnlySender\nto:\nJ1,S1,S2\nsendMessage\nto:channel\ntest_nick: 3枚引きました\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-play1[S1]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 1枚出しました\nsendMessageToOnlySender\nto:\n[ J1,S2 ] 場札:[ S1 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-play1[J1,S2]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 2枚出しました\nsendMessageToOnlySender\nto:\n[ ] 場札:[ J1,S1,S2 ] タップした場札:[ ]\n", @bcdice.getResult()) - end - - def test_rshuffle - @bcdice.setRandomValues([[1, 53], [1, 52], [51, 51]]) - @cardTrader.executeCard("c-odraw[3]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: J1,S1,S2を引きました\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-play[S1,J1]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 2枚出しました\nsendMessageToOnlySender\nto:\n[ S2 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-rshuffle", "channel") - assert_equal("sendMessage\nto:channel\n捨て札を山に戻しました\n", @bcdice.getResult()) - - @bcdice.setRandomValues([[52, 52]]) - @cardTrader.executeCard("c-odraw[1]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: J1を引きました\n", @bcdice.getResult()) - end - - def test_clean - @bcdice.setRandomValues([[1, 53], [1, 52], [1, 51], [50, 50]]) - @cardTrader.executeCard("c-odraw[4]", "channel") - @cardTrader.executeCard("c-play[S1]", "channel") - @cardTrader.executeCard("c-play1[S2,S3]", "channel") - debug(@bcdice.getResult()) - - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ J1 ] 場札:[ S2,S3 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-clean", "channel") - assert_equal("sendMessage\nto:channel\n場のカードを捨てました\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ J1 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - - @bcdice.setRandomValues([[49, 49]]) - @cardTrader.executeCard("c-draw", "channel") - assert_equal("sendMessageToOnlySender\nto:\nC13\nsendMessage\nto:channel\ntest_nick: 1枚引きました\n", @bcdice.getResult()) - end - - def test_review - @cardTrader.executeCard("c-review", "channel") - assert_equal("sendMessageToOnlySender\nto:\nS1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,H1,H2,H3,H4,H5,H6,H7,H8,H9,H10,H11,H12,H13,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D13,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,J1\n", @bcdice.getResult()) - - @bcdice.setRandomValues([[1, 53], [1, 52], [1, 51], [50, 50]]) - @cardTrader.executeCard("c-odraw[4]", "channel") - debug(@bcdice.getResult()) - - @cardTrader.executeCard("c-review", "channel") - assert_equal("sendMessageToOnlySender\nto:\nS4,S5,S6,S7,S8,S9,S10,S11,S12,S13,H1,H2,H3,H4,H5,H6,H7,H8,H9,H10,H11,H12,H13,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D13,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13\n", @bcdice.getResult()) - end - - def test_pass - @bcdice.setRandomValues([[1, 53], [1, 52], [1, 51], [50, 50]]) - @cardTrader.executeCard("c-odraw[4]", "channel") - @cardTrader.executeCard("c-play1[S3]", "channel") - debug(@bcdice.getResult()) - - @cardTrader.setNick('john') - @bcdice.setRandomValues([[49, 49]]) - @cardTrader.executeCard("c-odraw[1]", "channel") - assert_equal("sendMessage\nto:channel\njohn: C13を引きました\n", @bcdice.getResult()) - setDefaultNick - - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ J1,S1,S2 ] 場札:[ S3 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-pass[S1]john", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 1枚渡しました\nsendMessage\nto:john\n[ C13,S1 ] 場札:[ ] タップした場札:[ ]\nsendMessageToOnlySender\nto:\n[ J1,S2 ] 場札:[ S3 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-pass1[S3]john", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 1枚渡しました\nsendMessage\nto:john\n[ C13,S1,S3 ] 場札:[ ] タップした場札:[ ]\nsendMessageToOnlySender\nto:\n[ J1,S2 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ J1,S2 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - - @bcdice.setRandomValues([[2, 2]]) - @cardTrader.executeCard("c-pass john", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 1枚渡しました\nsendMessage\nto:john\n[ C13,J1,S1,S3 ] 場札:[ ] タップした場札:[ ]\nsendMessageToOnlySender\nto:\n[ S2 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ S2 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - end - - def test_pick - @cardTrader.executeCard("c-pick[S1]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 1枚選んで引きました\nsendMessageToOnlySender\nto:\n[ S1 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - - drawCards(49, 52) - - @cardTrader.executeCard("c-review", "channel") - assert_equal("sendMessageToOnlySender\nto:\nC12,C13,J1\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-pick[J1,C13,C12]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 3枚選んで引きました\nsendMessageToOnlySender\nto:\n[ C1,C10,C11,C12,C13,C2,C3,C4,C5,C6,C7,C8,C9,D1,D10,D11,D12,D13,D2,D3,D4,D5,D6,D7,D8,D9,H1,H10,H11,H12,H13,H2,H3,H4,H5,H6,H7,H8,H9,J1,S1,S10,S11,S12,S13,S2,S3,S4,S5,S6,S7,S8,S9 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-pick[J1]", "channel") - assert_equal("sendMessage\nto:channel\n[山札]がありません\nsendMessageToOnlySender\nto:\n[ C1,C10,C11,C12,C13,C2,C3,C4,C5,C6,C7,C8,C9,D1,D10,D11,D12,D13,D2,D3,D4,D5,D6,D7,D8,D9,H1,H10,H11,H12,H13,H2,H3,H4,H5,H6,H7,H8,H9,J1,S1,S10,S11,S12,S13,S2,S3,S4,S5,S6,S7,S8,S9 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - end - - def drawCards(count, total) - rands = [] - cardCount = count - cardCount.times do |i| - max = total - i - rands << [1, max] - end - - debug('drawCards srands', rands) - - @bcdice.setRandomValues(rands) - @cardTrader.executeCard("c-draw[#{count}]", "channel") - @bcdice.getResult() - # debug('drawCards, getResult@bcdice.getResult()', @bcdice.getResult()) - end - - def test_back - @bcdice.setRandomValues([[1, 53], [1, 52], [1, 51], [1, 50], [49, 49]]) - @cardTrader.executeCard("c-odraw[5]", "channel") - @cardTrader.executeCard("c-play1[J1]", "channel") - @cardTrader.executeCard("c-play[S1,S2,S3,S4]", "channel") - debug(@bcdice.getResult()) - - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ ] 場札:[ J1 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-back[S1]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 1枚戻しました\nsendMessageToOnlySender\nto:\n[ S1 ] 場札:[ J1 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-back[S2,S3,S4]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 3枚戻しました\nsendMessageToOnlySender\nto:\n[ S1,S2,S3,S4 ] 場札:[ J1 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-back[J1]", "channel") - assert_equal("sendMessage\nto:channel\n[捨て札]がありません\n", @bcdice.getResult()) - end - - def test_deal - @bcdice.setRandomValues([[1, 53], [1, 52], [1, 51], [50, 50]]) - - @cardTrader.executeCard("c-deal[4] john", "channel") - assert_equal("sendMessage\nto:john\nJ1,S1,S2,S3\nsendMessage\nto:channel\ntest_nick: johnに[4]枚配りました\n", @bcdice.getResult()) - - @cardTrader.setNick('john') - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ J1,S1,S2,S3 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - end - - def test_vdeal - @bcdice.setRandomValues([[1, 53], [1, 52], [1, 51], [50, 50]]) - @cardTrader.executeCard("c-vdeal[4] john", "channel") - assert_equal("sendMessage\nto:john\nJ1,S1,S2,S3\nsendMessage\nto:test_nick\njohn に J1,S1,S2,S3 を配りました\nsendMessage\nto:channel\ntest_nick: johnに[4]枚配りました\n", @bcdice.getResult()) - - @cardTrader.setNick('john') - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ J1,S1,S2,S3 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - end - - def test_discard - @bcdice.setRandomValues([[1, 53], [1, 52], [1, 51], [50, 50]]) - @cardTrader.executeCard("c-odraw[4]", "channel") - @cardTrader.executeCard("c-play1[S1,S2,S3]", "channel") - debug(@bcdice.getResult()) - - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ J1 ] 場札:[ S1,S2,S3 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-discard[J1]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 1枚捨てました\nsendMessageToOnlySender\nto:\n[ ] 場札:[ S1,S2,S3 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-discard1[S1,S2,S3]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 3枚捨てました\nsendMessageToOnlySender\nto:\n[ ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - end - - def test_place - @cardTrader.setNick('john') - @bcdice.setRandomValues([[1, 53]]) - @cardTrader.executeCard("c-odraw[1]", "channel") - assert_equal("sendMessage\nto:channel\njohn: S1を引きました\n", @bcdice.getResult()) - setDefaultNick - - @bcdice.setRandomValues([[1, 52], [1, 51], [1, 50], [49, 49]]) - @cardTrader.executeCard("c-odraw[4]", "channel") - @cardTrader.executeCard("c-play1[S2]", "channel") - debug(@bcdice.getResult()) - - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ J1,S3,S4 ] 場札:[ S2 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-place[S3]john", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ J1,S4 ] 場札:[ S2 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.setNick('john') - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ S1 ] 場札:[ S3 ] タップした場札:[ ]\n", @bcdice.getResult()) - setDefaultNick - - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ J1,S4 ] 場札:[ S2 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-place1[S2]john", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ J1,S4 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ J1,S4 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.setNick('john') - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ S1 ] 場札:[ S2,S3 ] タップした場札:[ ]\n", @bcdice.getResult()) - setDefaultNick - - @cardTrader.executeCard("c-place[J1,S4]john", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - end - - def test_tap_untap - @bcdice.setRandomValues([[1, 53], [1, 52], [1, 51], [50, 50]]) - @cardTrader.executeCard("c-odraw[4] john", "channel") - @cardTrader.executeCard("c-play1[J1,S1,S2,S3]", "channel") - debug(@bcdice.getResult()) - - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ ] 場札:[ J1,S1,S2,S3 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-tap1[S1]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 1枚タップしました\nsendMessageToOnlySender\nto:\n[ ] 場札:[ J1,S2,S3 ] タップした場札:[ S1 ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-tap1[J1,S2,S3]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 3枚タップしました\nsendMessageToOnlySender\nto:\n[ ] 場札:[ ] タップした場札:[ J1,S1,S2,S3 ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-untap1[S1]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 1枚アンタップしました\nsendMessageToOnlySender\nto:\n[ ] 場札:[ S1 ] タップした場札:[ J1,S2,S3 ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-untap1[J1,S2,S3]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 3枚アンタップしました\nsendMessageToOnlySender\nto:\n[ ] 場札:[ J1,S1,S2,S3 ] タップした場札:[ ]\n", @bcdice.getResult()) - end - - def test_milstone - @bcdice.setRandomValues([[1, 53], [1, 52], [1, 51], [50, 50]]) - @cardTrader.executeCard("c-milstone", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: S1が出ました\n", @bcdice.getResult()) - end - - def test_getSpell - cardCount = 53 - rands = getRandsForDrawFullCard(cardCount) - - @bcdice.setRandomValues(rands) - @cardTrader.executeCard("c-draw[52]", "channel") - assert_equal("sendMessageToOnlySender\nto:\nC1,C10,C11,C12,C13,C2,C3,C4,C5,C6,C7,C8,C9,D1,D10,D11,D12,D13,D2,D3,D4,D5,D6,D7,D8,D9,H1,H10,H11,H12,H13,H2,H3,H4,H5,H6,H7,H8,H9,S1,S10,S11,S12,S13,S2,S3,S4,S5,S6,S7,S8,S9\nsendMessage\nto:channel\ntest_nick: 52枚引きました\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-play1[S1]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 1枚出しました\nsendMessageToOnlySender\nto:\n[ C1,C10,C11,C12,C13,C2,C3,C4,C5,C6,C7,C8,C9,D1,D10,D11,D12,D13,D2,D3,D4,D5,D6,D7,D8,D9,H1,H10,H11,H12,H13,H2,H3,H4,H5,H6,H7,H8,H9,S10,S11,S12,S13,S2,S3,S4,S5,S6,S7,S8,S9 ] 場札:[ S1 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-play[C2]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 1枚出しました\nsendMessageToOnlySender\nto:\n[ C1,C10,C11,C12,C13,C3,C4,C5,C6,C7,C8,C9,D1,D10,D11,D12,D13,D2,D3,D4,D5,D6,D7,D8,D9,H1,H10,H11,H12,H13,H2,H3,H4,H5,H6,H7,H8,H9,S10,S11,S12,S13,S2,S3,S4,S5,S6,S7,S8,S9 ] 場札:[ S1 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ C1,C10,C11,C12,C13,C3,C4,C5,C6,C7,C8,C9,D1,D10,D11,D12,D13,D2,D3,D4,D5,D6,D7,D8,D9,H1,H10,H11,H12,H13,H2,H3,H4,H5,H6,H7,H8,H9,S10,S11,S12,S13,S2,S3,S4,S5,S6,S7,S8,S9 ] 場札:[ S1 ] タップした場札:[ ]\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-spell", "channel") - assert_equal("sendMessage\nto:channel\n復活の呪文 > [1TEST_NICK,TEST_NICK,card_played,BC39DC11A]\n", @bcdice.getResult()) - end - - def getRandsForDrawFullCard(cardCount) - rands = [] - - cardCount.times do |i| - break if i == cardCount - - max = cardCount - i - rands << [1, max] - end - - return rands - end - - def test_castSpell - @cardTrader.executeCard("c-spell[1TEST_NICK,TEST_NICK,card_played,BC39DC11A]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: カード配置を復活しました\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ C1,C10,C11,C12,C13,C3,C4,C5,C6,C7,C8,C9,D1,D10,D11,D12,D13,D2,D3,D4,D5,D6,D7,D8,D9,H1,H10,H11,H12,H13,H2,H3,H4,H5,H6,H7,H8,H9,S10,S11,S12,S13,S2,S3,S4,S5,S6,S7,S8,S9 ] 場札:[ S1 ] タップした場札:[ ]\n", @bcdice.getResult()) - end - - def test_getSpellLong - @cardTrader.set2Deck2Jorker - - cardCount = 108 - rands = getRandsForDrawFullCard(cardCount) - - @bcdice.setRandomValues(rands) - - @cardTrader.executeCard("c-draw[5]", "channel") - assert_equal("sendMessageToOnlySender\nto:\nS1,S2,S3,S4,S5\nsendMessage\nto:channel\ntest_nick: 5枚引きました\n", @bcdice.getResult()) - @cardTrader.executeCard("c-play[S1]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 1枚出しました\nsendMessageToOnlySender\nto:\n[ S2,S3,S4,S5 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - @cardTrader.executeCard("c-play1[S2,S3]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 2枚出しました\nsendMessageToOnlySender\nto:\n[ S4,S5 ] 場札:[ S2,S3 ] タップした場札:[ ]\n", @bcdice.getResult()) - @cardTrader.executeCard("c-tap1[S3]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: 1枚タップしました\nsendMessageToOnlySender\nto:\n[ S4,S5 ] 場札:[ S2 ] タップした場札:[ S3 ]\n", @bcdice.getResult()) - - @cardTrader.setNick('john') - @cardTrader.executeCard("c-draw[5]", "channel") - assert_equal("sendMessageToOnlySender\nto:\nS10,S6,S7,S8,S9\nsendMessage\nto:channel\njohn: 5枚引きました\n", @bcdice.getResult()) - @cardTrader.executeCard("c-play[S10]", "channel") - assert_equal("sendMessage\nto:channel\njohn: 1枚出しました\nsendMessageToOnlySender\nto:\n[ S6,S7,S8,S9 ] 場札:[ ] タップした場札:[ ]\n", @bcdice.getResult()) - @cardTrader.executeCard("c-play1[S7,S8]", "channel") - assert_equal("sendMessage\nto:channel\njohn: 2枚出しました\nsendMessageToOnlySender\nto:\n[ S6,S9 ] 場札:[ S7,S8 ] タップした場札:[ ]\n", @bcdice.getResult()) - @cardTrader.executeCard("c-tap1[S8]", "channel") - assert_equal("sendMessage\nto:channel\njohn: 1枚タップしました\nsendMessageToOnlySender\nto:\n[ S6,S9 ] 場札:[ S7 ] タップした場札:[ S8 ]\n", @bcdice.getResult()) - setDefaultNick - - @cardTrader.executeCard("c-spell", "channel") - assert_equal("sendMessage\nto:channel\n復活の呪文 > [1JOHN,1TEST_NICK,2JOHN,2TEST_NICK,JOHN,TEST_NICK,card_played,HCEG2FBDFHA98]\n", @bcdice.getResult()) - end - - def test_castSpellLong - @cardTrader.executeCard("c-spell[1JOHN,1TEST_NICK,2JOHN,2TEST_NICK,JOHN,TEST_NICK,card_played,HCEG2FBDFHA98]", "channel") - assert_equal("sendMessage\nto:channel\ntest_nick: カード配置を復活しました\n", @bcdice.getResult()) - - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ S4,S5 ] 場札:[ S2 ] タップした場札:[ S3 ]\n", @bcdice.getResult()) - - @cardTrader.setNick('john') - @cardTrader.executeCard("c-hand", "channel") - assert_equal("sendMessageToOnlySender\nto:\n[ S6,S9 ] 場札:[ S7 ] タップした場札:[ S8 ]\n", @bcdice.getResult()) - setDefaultNick - end - - def _test_ - @cardTrader.executeCard("c-", "channel") - assert_equal("", @bcdice.getResult()) - end - - def trace - $isDebug = true - end -end diff --git a/src/src_bcdice/test/others/testPointer.rb b/src/src_bcdice/test/others/testPointer.rb deleted file mode 100644 index 211a829a5..000000000 --- a/src/src_bcdice/test/others/testPointer.rb +++ /dev/null @@ -1,125 +0,0 @@ -# -*- coding: utf-8 -*- - -$:.push(File.dirname(__FILE__) + "/..") -require 'test/unit' -require 'log' -require 'BCDice_forTest' - -$isDebug = false - -class TestPointer < Test::Unit::TestCase - def setup - $isDebug = false - - @nick = "test_nick" - @channel = "test_channel" - - maker = BCDiceMaker_forTest.new - @bcdice = maker.newBcDice() - end - - def trace - $isDebug = true - end - - def execute(text, channel = nil, nick = nil) - @bcdice.setMessage(text) - - channel ||= @channel - @bcdice.setChannel(channel) - - nick ||= @nick - @bcdice.recievePublicMessage(nick) - end - - def test_setPoinChangePoinAndOpen - execute("#HP12") - assert_equal("sendMessage\nto:test_channel\ntest_nick: (HP) 12\n", @bcdice.getResult()) - - execute("#OPEN!HP") - assert_equal("sendMessage\nto:test_channel\nHP: TEST_NICK(12)\n", @bcdice.getResult()) - - execute("#HP9", nil, "nick2") - assert_equal("sendMessage\nto:test_channel\nnick2: (HP) 9\n", @bcdice.getResult()) - - execute("#OPEN!HP") - assert_equal("sendMessage\nto:test_channel\nHP: NICK2(9) TEST_NICK(12)\n", @bcdice.getResult()) - - execute("#OPEN!HP") - assert_equal("sendMessage\nto:test_channel\nHP: NICK2(9) TEST_NICK(12)\n", @bcdice.getResult()) - - execute("#HP-5") - assert_equal("sendMessage\nto:test_channel\ntest_nick: (HP) 12 -> 7\n", @bcdice.getResult()) - - execute("#OPEN!HP") - assert_equal("sendMessage\nto:test_channel\nHP: NICK2(9) TEST_NICK(7)\n", @bcdice.getResult()) - end - - def test_any - execute("#テスト:test1 まずは最大値なし") - assert_equal("test_nick: テスト(TEST) 1", getResultCutHeaderSendMessageToTestChannel) - - execute("#テスト:test1/1 続けて最大値つき") - assert_equal("test_nick: テスト(TEST) 1/1", getResultCutHeaderSendMessageToTestChannel) - - execute("#OPEN!test この状態でのタグ情報") - assert_equal("TEST: テスト(1/1)", getResultCutHeaderSendMessageToTestChannel) - - execute("#testx1 現在値のみを別のタグで登録した場合(最大値なし)") - assert_equal("test_nick: (TESTX) 1", getResultCutHeaderSendMessageToTestChannel) - - execute("#OPEN!testx") - assert_equal("TESTX: TEST_NICK(1)", getResultCutHeaderSendMessageToTestChannel) - - execute("#testx1/1 現在値のみを別のタグで登録した場合(最大値つき)") - assert_equal("test_nick: (TESTX) 1/1", getResultCutHeaderSendMessageToTestChannel) - - execute("#OPEN!testx") - assert_equal("TESTX: TEST_NICK(1/1)", getResultCutHeaderSendMessageToTestChannel) - - execute("#テスト:test-1 ポイントの変化") - assert_equal("test_nick: テスト(TEST) 1/1 -> 0/1", getResultCutHeaderSendMessageToTestChannel) - - execute("#OPEN!test") - assert_equal("TEST: テスト(0/1)", getResultCutHeaderSendMessageToTestChannel) - - execute("#テスト:test+1 ポイントの変化") - assert_equal("test_nick: テスト(TEST) 0/1 -> 1/1", getResultCutHeaderSendMessageToTestChannel) - - execute("#OPEN!test") - assert_equal("TEST: テスト(1/1)", getResultCutHeaderSendMessageToTestChannel) - - execute("#testx-1") - assert_equal("test_nick: (TESTX) 1/1 -> 0/1", getResultCutHeaderSendMessageToTestChannel) - - execute("#OPEN!testx") - assert_equal("TESTX: TEST_NICK(0/1)", getResultCutHeaderSendMessageToTestChannel) - - execute("#testx+1") - assert_equal("test_nick: (TESTX) 0/1 -> 1/1", getResultCutHeaderSendMessageToTestChannel) - - # タグ全体を開くOPEN!コマンドは受け付けるけど - # 発言者が管理しているキャラクターのタグを表示するOPEN!コマンドは受け付けない? - execute("#OPEN!") - assert_equal("TEST_NICK(1/1) テスト(1/1)", getResultCutHeaderSendMessageToTestChannel) - - execute("#RENAME!テスト->テストb") - assert_equal("test_nick: テスト->テストB", getResultCutHeaderSendMessageToTestChannel) - - execute("#OPEN!test") - assert_equal("TEST: テストB(1/1)", getResultCutHeaderSendMessageToTestChannel) - end - - def getResultCutHeaderSendMessageToTestChannel - text = @bcdice.getResult() - text = text.toutf8 - text = text.sub(/^sendMessage\nto:test_channel\n/, '') - text = text.sub(/\n\Z/, '') - return text - end - - def _test_XXXXXXXX - execute(text) - assert_equal("", @bcdice.getResult()) - end -end diff --git a/src/src_bcdice/test/others/testSecretDice.rb b/src/src_bcdice/test/others/testSecretDice.rb deleted file mode 100644 index bda2d1705..000000000 --- a/src/src_bcdice/test/others/testSecretDice.rb +++ /dev/null @@ -1,81 +0,0 @@ -# -*- coding: utf-8 -*- - -$:.push(File.dirname(__FILE__) + "/..") -require 'test/unit' -require 'log' -require 'BCDice_forTest' - -$isDebug = false - -class TestSecretDice < Test::Unit::TestCase - def setup - $isDebug = false - - @nick = "test_nick" - @channel = "test_channel" - - maker = BCDiceMaker_forTest.new - @bcdice = maker.newBcDice() - end - - def execute(text, channel = nil, nick = nil) - @bcdice.setMessage(text) - - channel ||= @channel - @bcdice.setChannel(channel) - - nick ||= @nick - @bcdice.recievePublicMessage(nick) - end - - def test_rollSecretAndOpen - @bcdice.setRandomValues([[1, 6], [1, 6], [1, 6]]) - execute("S3d6") - assert_equal("sendMessage\nto:test_nick\ntest_nick: (3D6) > 3[1,1,1] > 3\n", @bcdice.getResult()) - - execute("Open Dice!") - assert_equal("sendMessage\nto:test_channel\ntest_nick: (3D6) > 3[1,1,1] > 3\n", @bcdice.getResult()) - end - - def test_rollSecretAndOpen_at2Channel - @bcdice.setRandomValues([[1, 6], [1, 6], [1, 6]]) - execute("S3d6") - assert_equal("sendMessage\nto:test_nick\ntest_nick: (3D6) > 3[1,1,1] > 3\n", @bcdice.getResult()) - - @bcdice.setRandomValues([[1, 6]]) - execute("S1d6", "anotherChannel") - assert_equal("sendMessage\nto:test_nick\ntest_nick: (1D6) > 1\n", @bcdice.getResult()) - - execute("Open Dice!", "anotherChannel") - assert_equal("sendMessage\nto:anotherChannel\ntest_nick: (1D6) > 1\n", @bcdice.getResult()) - - execute("Open Dice!") - assert_equal("sendMessage\nto:test_channel\ntest_nick: (3D6) > 3[1,1,1] > 3\n", @bcdice.getResult()) - end - - def test_2rollSecretAnd2Open - @bcdice.setRandomValues([[1, 6], [1, 6], [1, 6]]) - execute("S3d6") - assert_equal("sendMessage\nto:test_nick\ntest_nick: (3D6) > 3[1,1,1] > 3\n", @bcdice.getResult()) - - @bcdice.setRandomValues([[6, 6], [6, 6], [6, 6]]) - execute("S3d6") - assert_equal("sendMessage\nto:test_nick\ntest_nick: (3D6) > 18[6,6,6] > 18\n", @bcdice.getResult()) - - execute("Open Dice!") - assert_equal("sendMessage\nto:test_channel\ntest_nick: (3D6) > 18[6,6,6] > 18\n", @bcdice.getResult()) - - # 履歴は1件しか残らないので何も表示されない - execute("Open Dice!") - assert_equal("", @bcdice.getResult()) - end - - def _test_XXXXXXXX - execute(text) - assert_equal("", @bcdice.getResult()) - end - - def trace - $isDebug = true - end -end diff --git a/src/src_bcdice/test/range_table_test.rb b/src/src_bcdice/test/range_table_test.rb deleted file mode 100644 index a99cb99fd..000000000 --- a/src/src_bcdice/test/range_table_test.rb +++ /dev/null @@ -1,156 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -bcdice_root = File.expand_path('..', File.dirname(__FILE__)) -$:.unshift(bcdice_root) unless $:.include?(bcdice_root) - -require 'test/unit' -require 'utils/range_table' - -class TestRangeTable < Test::Unit::TestCase - # ダイスロール方法の書式が正しい場合、受理される - def test_valid_dice_roll_method_should_be_accepted_1 - assert_nothing_raised do - RangeTable.new( - 'Table', - '2D6', - [ - [2..7, 'A'], - [8..12, 'B'], - ] - ) - end - end - - # ダイスロール方法の書式が正しい場合、受理される - def test_valid_dice_roll_method_should_be_accepted_2 - assert_nothing_raised do - RangeTable.new( - 'Table', - '1D100', - [ - [1..25, 'A'], - [26..50, 'B'], - [51..75, 'C'], - [76..100, 'D'], - ] - ) - end - end - - # ダイスロール方法の書式が正しい場合、受理される - def test_valid_dice_roll_method_should_be_accepted_3 - assert_nothing_raised do - RangeTable.new( - 'Table', - '2D6', - [ - [2..6, 'A'], - [7, 'B'], - [8..11, 'C'], - [12, 'D'], - ] - ) - end - end - - # ダイスロール方法の書式が正しい場合、受理される - def test_valid_dice_roll_method_should_be_accepted_4 - assert_nothing_raised do - RangeTable.new( - 'Table', - '2D6', - [ - [2...8, 'A'], - [8...13, 'B'], - ] - ) - end - end - - # ダイスロール方法の書式が正しくない場合、拒絶される - def test_invalid_dice_roll_method_should_be_denied_1 - assert_raise(ArgumentError) do - RangeTable.new( - 'Table', - 'D6', - [ - [1..3, 'A'], - [4..6, 'B'], - ] - ) - end - end - - # ダイスロール方法の書式が正しくない場合、拒絶される - def test_invalid_dice_roll_method_should_be_denied_2 - assert_raise(ArgumentError) do - RangeTable.new( - 'Table', - '2B6', - [ - [2..7, 'A'], - [8..12, 'B'], - ] - ) - end - end - - # 範囲の型が正しくなかった場合、拒絶される - def test_invalid_typed_range_should_be_denied - assert_raise(TypeError) do - RangeTable.new( - 'Table', - '2D6', - [ - [2.0..3, 'A'], - [4..6.0, 'B'], - [7.0, 'C'], - [8..12, 'D'], - ] - ) - end - end - - # カバーしきれていない出目の合計値の範囲がある場合、拒絶される - def test_range_gap_should_be_denied_1 - assert_raise(RangeError) do - RangeTable.new( - 'Table', - '2D6', - [ - [2..7, 'A'], - [9..12, 'B'], - ] - ) - end - end - - # カバーしきれていない出目の合計値の範囲がある場合、拒絶される - def test_range_gap_should_be_denied_2 - assert_raise(RangeError) do - RangeTable.new( - 'Table', - '2D6', - [ - [2...7, 'A'], - [8..12, 'B'], - ] - ) - end - end - - # 出目の合計値の範囲が重なっている場合、拒絶される - def test_range_overlap_should_be_denied - assert_raise(RangeError) do - RangeTable.new( - 'Table', - '2D6', - [ - [2..7, 'A'], - [7..12, 'B'], - ] - ) - end - end -end diff --git a/src/src_bcdice/test/setup.rb b/src/src_bcdice/test/setup.rb deleted file mode 100644 index 383d6af4a..000000000 --- a/src/src_bcdice/test/setup.rb +++ /dev/null @@ -1,19 +0,0 @@ -if RUBY_VERSION > '1.8.x' - require 'simplecov' - - if ENV['CI'] == 'true' && ENV['CHECK_COVERAGE'] == 'true' - require 'codecov' - SimpleCov.formatter = SimpleCov::Formatter::Codecov - else - SimpleCov.formatter = SimpleCov::Formatter::SimpleFormatter - end - - SimpleCov.use_merging true - - SimpleCov.at_exit do - SimpleCov.command_name "fork-#{$$}" - SimpleCov.result.format! - end - - SimpleCov.start -end diff --git a/src/src_bcdice/test/testDiceBotLoaders.rb b/src/src_bcdice/test/testDiceBotLoaders.rb deleted file mode 100644 index e874bddfa..000000000 --- a/src/src_bcdice/test/testDiceBotLoaders.rb +++ /dev/null @@ -1,861 +0,0 @@ -# -*- coding: utf-8 -*- - -dodontof_root = File.expand_path('..', File.dirname(__FILE__)) -unless $:.include?(dodontof_root) - $:.unshift(dodontof_root) -end - -require 'test/unit' -require 'bcdiceCore' -require 'diceBot/DiceBotLoader' -require 'diceBot/DiceBotLoaderList' - -# ダイスボット読み込みのテスト -# -# 1. ゲームシステムの識別子が有効かを調べるテストケース -# 2. 特定の名前のダイスボットの読み込み禁止を確認するテストケース -# 3. 複数の名前で読み込めるダイスボットの読み込みを確認するテストケース -# 4. ダイスボットファイルを置いただけで読み込めることを確認するテストケース -class TestDiceBotLoaders < Test::Unit::TestCase - # ダイスボットのディレクトリ - DICE_BOT_DIR = File.expand_path('../diceBot', File.dirname(__FILE__)) - - def setup - $isDebug = false - - @bcDice = BCDiceMaker.new.newBcDice - end - - #-- - # 1. ゲームシステムの識別子が有効かを調べるテストケース - #++ - - # 「Cthulhu」という識別子は有効 - def test_id_Cthulhu_should_be_valid - assert(DiceBotLoader.validGameType?('Cthulhu')) - end - - # 「Cthulhu7th」という識別子は有効 - def test_id_Cthulhu7th_should_be_valid - assert(DiceBotLoader.validGameType?('Cthulhu7th')) - end - - # 「Cthulhu7th_Korean」という識別子は有効 - def test_id_Cthulhu7th_Korean_should_be_valid - assert(DiceBotLoader.validGameType?('Cthulhu7th_Korean')) - end - - # 「_Template」という識別子は無効 - def test_id_Template_should_be_invalid - assert(!DiceBotLoader.validGameType?('_Template')) - end - - # 「test」という識別子は無効 - def test_id_test_should_be_invalid - assert(!DiceBotLoader.validGameType?('test')) - end - - #-- - # 2. 特定の名前のダイスボットの読み込み禁止を確認するテストケース - #++ - - # 存在しないダイスボットを読み込まない - def test_shouldNotLoadDiceBotNotFound - assertDiceBotNotFound('NotFound') - end - - # 「DiceBot」という名前のダイスボットを読み込まない - def test_shouldNotLoadDiceBotNamedDiceBot - assertDiceBotIgnored('DiceBot') - end - - # 「DiceBotLoader」という名前のダイスボットを読み込まない - def test_shouldNotLoadDiceBotNamedDiceBotLoader - assertDiceBotIgnored('DiceBotLoader') - end - - # 「DiceBotLoaderList」という名前のダイスボットを読み込まない - def test_shouldNotLoadDiceBotNamedDiceBotLoaderList - assertDiceBotIgnored('DiceBotLoaderList') - end - - # 「_Template」という名前のダイスボットを読み込まない - def test_shouldNotLoadDiceBotNamed_Template - assertDiceBotIgnored('_Template') - end - - #-- - # 3. 複数の名前で読み込めるダイスボットの読み込みを確認するテストケース - #++ - - def test_None - assertDiceBotWithLoader('DiceBot', 'None') - end - - def test_Cthulhu - assertDiceBotWithLoader('Cthulhu', 'Cthulhu') - assertDiceBotWithLoader('Cthulhu', 'COC') - end - - def test_Hieizan - assertDiceBotWithLoader('Hieizan', 'Hieizan') - assertDiceBotWithLoader('Hieizan', 'COCH') - end - - def test_Elric - assertDiceBotWithLoader('Elric', 'Elric') - assertDiceBotWithLoader('Elric', 'EL') - end - - def test_RuneQuest - assertDiceBotWithLoader('RuneQuest', 'RuneQuest') - assertDiceBotWithLoader('RuneQuest', 'RQ') - end - - def test_Chill - assertDiceBotWithLoader('Chill', 'Chill') - assertDiceBotWithLoader('Chill', 'CH') - end - - def test_RoleMaster - assertDiceBotWithLoader('RoleMaster', 'RoleMaster') - assertDiceBotWithLoader('RoleMaster', 'RM') - end - - def test_ShadowRun - assertDiceBotWithLoader('ShadowRun', 'ShadowRun') - assertDiceBotWithLoader('ShadowRun', 'SR') - end - - def test_ShadowRun4 - assertDiceBotWithLoader('ShadowRun4', 'ShadowRun4') - assertDiceBotWithLoader('ShadowRun4', 'SR4') - end - - def test_Pendragon - assertDiceBotWithLoader('Pendragon', 'Pendragon') - assertDiceBotWithLoader('Pendragon', 'PD') - end - - def test_SwordWorld2_0 - assertDiceBotWithLoader('SwordWorld2.0', 'SwordWorld 2.0') - assertDiceBotWithLoader('SwordWorld2.0', 'SwordWorld2.0') - assertDiceBotWithLoader('SwordWorld2.0', 'SW 2.0') - assertDiceBotWithLoader('SwordWorld2.0', 'SW2.0') - end - - def test_SwordWorld - assertDiceBotWithLoader('SwordWorld', 'SwordWorld') - assertDiceBotWithLoader('SwordWorld', 'SW') - end - - def test_Arianrhod - assertDiceBotWithLoader('Arianrhod', 'Arianrhod') - assertDiceBotWithLoader('Arianrhod', 'AR') - end - - def test_InfiniteFantasia - assertDiceBotWithLoader('InfiniteFantasia', 'Infinite Fantasia') - assertDiceBotWithLoader('InfiniteFantasia', 'InfiniteFantasia') - assertDiceBotWithLoader('InfiniteFantasia', 'IF') - end - - def test_WARPS - assertDiceBotWithLoader('WARPS', 'WARPS') - end - - def test_DemonParasite - assertDiceBotWithLoader('DemonParasite', 'Demon Parasite') - assertDiceBotWithLoader('DemonParasite', 'DemonParasite') - assertDiceBotWithLoader('DemonParasite', 'DP') - end - - def test_ParasiteBlood - assertDiceBotWithLoader('ParasiteBlood', 'Parasite Blood') - assertDiceBotWithLoader('ParasiteBlood', 'ParasiteBlood') - assertDiceBotWithLoader('ParasiteBlood', 'PB') - end - - def test_Gundog - assertDiceBotWithLoader('Gundog', 'Gun Dog') - assertDiceBotWithLoader('Gundog', 'GunDog') - assertDiceBotWithLoader('Gundog', 'GD') - end - - def test_GundogZero - assertDiceBotWithLoader('GundogZero', 'Gun Dog Zero') - assertDiceBotWithLoader('GundogZero', 'Gun DogZero') - assertDiceBotWithLoader('GundogZero', 'GunDog Zero') - assertDiceBotWithLoader('GundogZero', 'GunDogZero') - assertDiceBotWithLoader('GundogZero', 'GDZ') - end - - def test_TunnelsAndTrolls - assertDiceBotWithLoader('TunnelsAndTrolls', 'Tunnels & Trolls') - assertDiceBotWithLoader('TunnelsAndTrolls', 'Tunnels &Trolls') - assertDiceBotWithLoader('TunnelsAndTrolls', 'Tunnels& Trolls') - assertDiceBotWithLoader('TunnelsAndTrolls', 'Tunnels&Trolls') - assertDiceBotWithLoader('TunnelsAndTrolls', 'TuT') - end - - def test_NightmareHunterDeep - assertDiceBotWithLoader('NightmareHunterDeep', 'Nightmare Hunter=Deep') - assertDiceBotWithLoader('NightmareHunterDeep', 'Nightmare Hunter Deep') - assertDiceBotWithLoader('NightmareHunterDeep', 'Nightmare HunterDeep') - assertDiceBotWithLoader('NightmareHunterDeep', 'NightmareHunter=Deep') - assertDiceBotWithLoader('NightmareHunterDeep', 'NightmareHunter Deep') - assertDiceBotWithLoader('NightmareHunterDeep', 'NightmareHunterDeep') - assertDiceBotWithLoader('NightmareHunterDeep', 'NHD') - end - - def test_Warhammer - assertDiceBotWithLoader('Warhammer', 'War HammerFRP') - assertDiceBotWithLoader('Warhammer', 'War Hammer') - assertDiceBotWithLoader('Warhammer', 'WarHammerFRP') - assertDiceBotWithLoader('Warhammer', 'WarHammer') - assertDiceBotWithLoader('Warhammer', 'WH') - end - - def test_PhantasmAdventure - assertDiceBotWithLoader('PhantasmAdventure', 'Phantasm Adventure') - assertDiceBotWithLoader('PhantasmAdventure', 'PhantasmAdventure') - assertDiceBotWithLoader('PhantasmAdventure', 'PA') - end - - def test_ChaosFlare - assertDiceBotWithLoader('ChaosFlare', 'ChaosFlare') - assertDiceBotWithLoader('ChaosFlare', 'ChaosFlare') - assertDiceBotWithLoader('ChaosFlare', 'CF') - end - - def test_ChaosFlare_cards - assertDiceBotWithLoader('ChaosFlare', 'ChaosFlare') - - cardTrader = @bcDice.cardTrader - assert_equal(2, cardTrader.numOfDecks) - assert_equal(2, cardTrader.numOfJokers) - assert_equal(0, cardTrader.card_place) - assert_equal(false, cardTrader.canTapCard) - end - - def test_CthulhuTech - assertDiceBotWithLoader('CthulhuTech', 'Cthulhu Tech') - assertDiceBotWithLoader('CthulhuTech', 'CthulhuTech') - assertDiceBotWithLoader('CthulhuTech', 'CT') - end - - def test_TokumeiTenkousei - assertDiceBotWithLoader('TokumeiTenkousei', 'Tokumei Tenkousei') - assertDiceBotWithLoader('TokumeiTenkousei', 'TokumeiTenkousei') - assertDiceBotWithLoader('TokumeiTenkousei', 'ToT') - end - - def test_ShinobiGami - assertDiceBotWithLoader('ShinobiGami', 'Shinobi Gami') - assertDiceBotWithLoader('ShinobiGami', 'ShinobiGami') - assertDiceBotWithLoader('ShinobiGami', 'SG') - end - - def test_DoubleCross - assertDiceBotWithLoader('DoubleCross', 'Double Cross') - assertDiceBotWithLoader('DoubleCross', 'DoubleCross') - assertDiceBotWithLoader('DoubleCross', 'DX') - end - - def test_Satasupe - assertDiceBotWithLoader('Satasupe', 'Sata Supe') - assertDiceBotWithLoader('Satasupe', 'SataSupe') - assertDiceBotWithLoader('Satasupe', 'SS') - end - - def test_ArsMagica - assertDiceBotWithLoader('ArsMagica', 'Ars Magica') - assertDiceBotWithLoader('ArsMagica', 'ArsMagica') - assertDiceBotWithLoader('ArsMagica', 'AM') - end - - def test_DarkBlaze - assertDiceBotWithLoader('DarkBlaze', 'Dark Blaze') - assertDiceBotWithLoader('DarkBlaze', 'DarkBlaze') - assertDiceBotWithLoader('DarkBlaze', 'DB') - end - - def test_NightWizard - assertDiceBotWithLoader('NightWizard', 'Night Wizard') - assertDiceBotWithLoader('NightWizard', 'NightWizard') - assertDiceBotWithLoader('NightWizard', 'NW') - end - - def test_Torg - assertDiceBotWithLoader('TORG', 'TORG') - end - - def test_Torg1_5 - assertDiceBotWithLoader('TORG1.5', 'TORG1.5') - end - - def test_HuntersMoon - assertDiceBotWithLoader('HuntersMoon', 'Hunters Moon') - assertDiceBotWithLoader('HuntersMoon', 'HuntersMoon') - assertDiceBotWithLoader('HuntersMoon', 'HM') - end - - def test_BloodCrusade - assertDiceBotWithLoader('BloodCrusade', 'Blood Crusade') - assertDiceBotWithLoader('BloodCrusade', 'BloodCrusade') - assertDiceBotWithLoader('BloodCrusade', 'BC') - end - - def test_MeikyuKingdom - assertDiceBotWithLoader('MeikyuKingdom', 'Meikyu Kingdom') - assertDiceBotWithLoader('MeikyuKingdom', 'MeikyuKingdom') - assertDiceBotWithLoader('MeikyuKingdom', 'MK') - end - - def test_EarthDawn - assertDiceBotWithLoader('EarthDawn', 'Earth Dawn') - assertDiceBotWithLoader('EarthDawn', 'EarthDawn') - assertDiceBotWithLoader('EarthDawn', 'ED') - end - - def test_EarthDawn3 - assertDiceBotWithLoader('EarthDawn3', 'Earth Dawn3') - assertDiceBotWithLoader('EarthDawn3', 'EarthDawn3') - assertDiceBotWithLoader('EarthDawn3', 'ED3') - end - - def test_EarthDawn4 - assertDiceBotWithLoader('EarthDawn4', 'Earth Dawn4') - assertDiceBotWithLoader('EarthDawn4', 'EarthDawn4') - assertDiceBotWithLoader('EarthDawn4', 'ED4') - end - - def test_EmbryoMachine - assertDiceBotWithLoader('EmbryoMachine', 'Embryo Machine') - assertDiceBotWithLoader('EmbryoMachine', 'EmbryoMachine') - assertDiceBotWithLoader('EmbryoMachine', 'EM') - end - - def test_GehennaAn - assertDiceBotWithLoader('GehennaAn', 'Gehenna An') - assertDiceBotWithLoader('GehennaAn', 'GehennaAn') - assertDiceBotWithLoader('GehennaAn', 'GA') - end - - def test_MagicaLogia - assertDiceBotWithLoader('MagicaLogia', 'Magica Logia') - assertDiceBotWithLoader('MagicaLogia', 'MagicaLogia') - assertDiceBotWithLoader('MagicaLogia', 'ML') - end - - def test_Nechronica - assertDiceBotWithLoader('Nechronica', 'Nechronica') - assertDiceBotWithLoader('Nechronica', 'NC') - end - - def test_MeikyuDays - assertDiceBotWithLoader('MeikyuDays', 'Meikyu Days') - assertDiceBotWithLoader('MeikyuDays', 'MeikyuDays') - assertDiceBotWithLoader('MeikyuDays', 'MD') - end - - def test_Peekaboo - assertDiceBotWithLoader('Peekaboo', 'Peekaboo') - assertDiceBotWithLoader('Peekaboo', 'PK') - end - - def test_BarnaKronika - assertDiceBotWithLoader('BarnaKronika', 'Barna Kronika') - assertDiceBotWithLoader('BarnaKronika', 'BarnaKronika') - assertDiceBotWithLoader('BarnaKronika', 'BK') - end - - def test_BarnaKronika_cards - assertDiceBotWithLoader('BarnaKronika', 'Barna Kronika') - - cardTrader = @bcDice.cardTrader - assert_equal(1, cardTrader.numOfDecks) - assert_equal(2, cardTrader.numOfJokers) - assert_equal(0, cardTrader.card_place) - assert_equal(false, cardTrader.canTapCard) - end - - def test_RokumonSekai2 - assertDiceBotWithLoader('RokumonSekai2', 'RokumonSekai2') - assertDiceBotWithLoader('RokumonSekai2', 'RS2') - end - - def test_MonotoneMuseum - assertDiceBotWithLoader('MonotoneMuseum', 'Monotone Museum') - assertDiceBotWithLoader('MonotoneMuseum', 'MonotoneMuseum') - assertDiceBotWithLoader('MonotoneMuseum', 'MM') - end - - def test_ZettaiReido - assertDiceBotWithLoader('ZettaiReido', 'Zettai Reido') - assertDiceBotWithLoader('ZettaiReido', 'ZettaiReido') - end - - def test_EclipsePhase - assertDiceBotWithLoader('EclipsePhase', 'EclipsePhase') - end - - def test_NjslyrBattle - assertDiceBotWithLoader('NJSLYRBATTLE', 'NJSLYRBATTLE') - end - - def test_ShinMegamiTenseiKakuseihen - assertDiceBotWithLoader('SMTKakuseihen', 'ShinMegamiTenseiKakuseihen') - assertDiceBotWithLoader('SMTKakuseihen', 'SMTKakuseihen') - end - - def test_Ryutama - assertDiceBotWithLoader('Ryutama', 'Ryutama') - end - - def test_CardRanker - assertDiceBotWithLoader('CardRanker', 'CardRanker') - end - - def test_ShinkuuGakuen - assertDiceBotWithLoader('ShinkuuGakuen', 'ShinkuuGakuen') - end - - def test_CrashWorld - assertDiceBotWithLoader('CrashWorld', 'CrashWorld') - end - - def test_WitchQuest - assertDiceBotWithLoader('WitchQuest', 'WitchQuest') - end - - def test_BattleTech - assertDiceBotWithLoader('BattleTech', 'BattleTech') - end - - def test_Elysion - assertDiceBotWithLoader('Elysion', 'Elysion') - end - - def test_GeishaGirlwithKatana - assertDiceBotWithLoader('GeishaGirlwithKatana', 'GeishaGirlwithKatana') - end - - def test_Gurps - assertDiceBotWithLoader('GURPS', 'GURPS') - end - - def test_GurpsFW - assertDiceBotWithLoader('GurpsFW', 'GurpsFW') - end - - def test_FilledWith - assertDiceBotWithLoader('FilledWith', 'FilledWith') - end - - def test_HarnMaster - assertDiceBotWithLoader('HarnMaster', 'HarnMaster') - end - - def test_Insane - assertDiceBotWithLoader('Insane', 'Insane') - end - - def test_KillDeathBusiness - assertDiceBotWithLoader('KillDeathBusiness', 'KillDeathBusiness') - end - - def test_Kamigakari - assertDiceBotWithLoader('Kamigakari', 'Kamigakari') - end - - def test_RecordOfSteam - assertDiceBotWithLoader('RecordOfSteam', 'RecordOfSteam') - end - - def test_Oukahoushin3rd - assertDiceBotWithLoader('Oukahoushin3rd', 'Oukahoushin3rd') - end - - def test_BeastBindTrinity - assertDiceBotWithLoader('BeastBindTrinity', 'BeastBindTrinity') - end - - def test_BloodMoon - assertDiceBotWithLoader('BloodMoon', 'BloodMoon') - end - - def test_Utakaze - assertDiceBotWithLoader('Utakaze', 'Utakaze') - end - - def test_EndBreaker - assertDiceBotWithLoader('EndBreaker', 'EndBreaker') - end - - def test_KanColle - assertDiceBotWithLoader('KanColle', 'KanColle') - end - - def test_GranCrest - assertDiceBotWithLoader('GranCrest', 'GranCrest') - end - - def test_HouraiGakuen - assertDiceBotWithLoader('HouraiGakuen', 'HouraiGakuen') - end - - def test_TwilightGunsmoke - assertDiceBotWithLoader('TwilightGunsmoke', 'TwilightGunsmoke') - end - - def test_Garako - assertDiceBotWithLoader('Garako', 'Garako') - end - - def test_ShoujoTenrankai - assertDiceBotWithLoader('ShoujoTenrankai', 'ShoujoTenrankai') - end - - def test_GardenOrder - assertDiceBotWithLoader('GardenOrder', 'GardenOrder') - end - - def test_DarkSouls - assertDiceBotWithLoader('DarkSouls', 'DarkSouls') - end - - #-- - # 4. ダイスボットファイルを置いただけで読み込めることを確認するテストケース - #++ - - def test_AceKillerGene - assertDiceBotWithoutLoader('AceKillerGene') - end - - def test_Airgetlamh - assertDiceBotWithoutLoader('Airgetlamh') - end - - def test_Alsetto - assertDiceBotWithoutLoader('Alsetto') - end - - def test_Alshard - assertDiceBotWithoutLoader('Alshard') - end - - def test_Amadeus - assertDiceBotWithoutLoader('Amadeus') - end - - def test_Amadeus_Korean - assertDiceBotWithoutLoader('Amadeus:Korean', 'Amadeus_Korean') - end - - def test_Avandner - assertDiceBotWithoutLoader('Avandner') - end - - def test_BadLife - assertDiceBotWithoutLoader('BadLife') - end - - def test_BeginningIdol - assertDiceBotWithoutLoader('BeginningIdol') - end - - def test_BeginningIdol_Korean - assertDiceBotWithoutLoader('BeginningIdol:Korean', - 'BeginningIdol_Korean') - end - - def test_BladeOfArcana - assertDiceBotWithoutLoader('BladeOfArcana') - end - - def test_BlindMythos - assertDiceBotWithoutLoader('BlindMythos') - end - - def test_Chill3 - assertDiceBotWithoutLoader('Chill3') - end - - def test_CodeLayerd - assertDiceBotWithoutLoader('CodeLayerd') - end - - def test_ColossalHunter - assertDiceBotWithoutLoader('ColossalHunter') - end - - def test_Cthulhu7th - assertDiceBotWithoutLoader('Cthulhu7th') - end - - def test_Cthulhu7th_ChineseTraditional - assertDiceBotWithoutLoader('Cthulhu7th:ChineseTraditional', - 'Cthulhu7th_ChineseTraditional') - end - - def test_Cthulhu7th_Korean - assertDiceBotWithoutLoader('Cthulhu7th:Korean', 'Cthulhu7th_Korean') - end - - def test_Cthulhu_ChineseTraditional - assertDiceBotWithoutLoader('Cthulhu:ChineseTraditional', - 'Cthulhu_ChineseTraditional') - end - - def test_Cthulhu_Korean - assertDiceBotWithoutLoader('Cthulhu:Korean', 'Cthulhu_Korean') - end - - def test_DarkDaysDrive - assertDiceBotWithoutLoader('DarkDaysDrive') - end - - def test_DeadlineHeroes - assertDiceBotWithoutLoader('DeadlineHeroes') - end - - def test_DetatokoSaga - assertDiceBotWithoutLoader('DetatokoSaga') - end - - def test_DetatokoSaga_Korean - assertDiceBotWithoutLoader('DetatokoSaga:Korean', 'DetatokoSaga_Korean') - end - - def test_DiceOfTheDead - assertDiceBotWithoutLoader('DiceOfTheDead') - end - - def test_Dracurouge - assertDiceBotWithoutLoader('Dracurouge') - end - - def test_Dracurouge_Korean - assertDiceBotWithoutLoader('Dracurouge:Korean', 'Dracurouge_Korean') - end - - def test_DungeonsAndDragons - assertDiceBotWithoutLoader('DungeonsAndDragons') - end - - def test_EtrianOdysseySRS - assertDiceBotWithoutLoader('EtrianOdysseySRS') - end - - def test_FullMetalPanic - assertDiceBotWithoutLoader('FullMetalPanic') - end - - def test_GoldenSkyStories - assertDiceBotWithoutLoader('GoldenSkyStories') - end - - def test_Gorilla - assertDiceBotWithoutLoader('Gorilla') - end - - def test_GundogRevised - assertDiceBotWithoutLoader('GundogRevised') - end - - def test_HatsuneMiku - assertDiceBotWithoutLoader('HatsuneMiku') - end - - def test_Insane_Korean - assertDiceBotWithoutLoader('Insane:Korean', 'Insane_Korean') - end - - def test_IthaWenUa - assertDiceBotWithoutLoader('IthaWenUa') - end - - def test_JamesBond - assertDiceBotWithoutLoader('JamesBond') - end - - def test_Kamigakari_Korean - assertDiceBotWithoutLoader('Kamigakari:Korean', 'Kamigakari_Korean') - end - - def test_KemonoNoMori - assertDiceBotWithoutLoader('KemonoNoMori') - end - - def test_KillDeathBusiness_Korean - assertDiceBotWithoutLoader('KillDeathBusiness:Korean', - 'KillDeathBusiness_Korean') - end - - def test_LiveraDoll - assertDiceBotWithoutLoader('LiveraDoll') - end - - def test_LogHorizon - assertDiceBotWithoutLoader('LogHorizon') - end - - def test_LogHorizon_Korean - assertDiceBotWithoutLoader('LogHorizon:Korean', 'LogHorizon_Korean') - end - - def test_LostRoyal - assertDiceBotWithoutLoader('LostRoyal') - end - - def test_MetalHead - assertDiceBotWithoutLoader('MetalHead') - end - - def test_MetalHeadExtream - assertDiceBotWithoutLoader('MetalHeadExtream') - end - - def test_MetallicGuardian - assertDiceBotWithoutLoader('MetallicGuardian') - end - - def test_MonotoneMuseum_Korean - assertDiceBotWithoutLoader('MonotoneMuseum:Korean', - 'MonotoneMuseum_Korean') - end - - def test_Nechronica_Korean - assertDiceBotWithoutLoader('Nechronica:Korean', 'Nechronica_Korean') - end - - def test_NightWizard3rd - assertDiceBotWithoutLoader('NightWizard3rd') - end - - def test_Nuekagami - assertDiceBotWithoutLoader('Nuekagami') - end - - def test_OneWayHeroics - assertDiceBotWithoutLoader('OneWayHeroics') - end - - def test_Paranoia - assertDiceBotWithoutLoader('Paranoia') - end - - def test_Pathfinder - assertDiceBotWithoutLoader('Pathfinder') - end - - def test_SRS - assertDiceBotWithoutLoader('SRS') - end - - def test_ScreamHighSchool - assertDiceBotWithoutLoader('ScreamHighSchool') - end - - def test_SevenFortressMobius - assertDiceBotWithoutLoader('SevenFortressMobius') - end - - def test_SharedFantasia - assertDiceBotWithoutLoader('SharedFantasia') - end - - def test_Skynauts - assertDiceBotWithoutLoader('Skynauts') - end - - def test_StrangerOfSwordCity - assertDiceBotWithoutLoader('StrangerOfSwordCity') - end - - def test_Strave - assertDiceBotWithoutLoader('Strave') - end - - def test_TherapieSein - assertDiceBotWithoutLoader('TherapieSein') - end - - def test_TokyoNova - assertDiceBotWithoutLoader('TokyoNova') - end - - def test_WaresBlade - assertDiceBotWithoutLoader('WaresBlade') - end - - def test_YankeeYogSothoth - assertDiceBotWithoutLoader('YankeeYogSothoth') - end - - private - - # ダイスボットが存在しないことを表明する - # @param [String] id ゲームシステムの識別子 - # @return [void] - def assertDiceBotNotFound(id) - fileName = File.join(DICE_BOT_DIR, "#{id}.rb") - assert(!File.exist?(fileName), 'ファイルが存在しない') - - assert_nil(DiceBotLoaderList.find(id), - '読み込み処理が存在しない') - assert_nil(DiceBotLoader.loadUnknownGame(id), - 'loadUnknownGameで読み込まれない') - end - - # ダイスボットを読み込もうとしても無視されることを表明する - # @param [String] id ゲームシステムの識別子 - # @return [void] - def assertDiceBotIgnored(id) - fileName = File.join(DICE_BOT_DIR, "#{id}.rb") - assert(File.exist?(fileName), 'ファイルが存在する') - - assert_nil(DiceBotLoaderList.find(id), - '読み込み処理が存在しない') - assert_nil(DiceBotLoader.loadUnknownGame(id), - 'loadUnknownGameで読み込まれない') - end - - # DiceBotLoaderを通じて正しいダイスボットが読み込まれることを表明する - # @param [String] id ゲームシステムの識別子 - # @param [String] pattern 読み込む際に指定する名前 - # @return [void] - def assertDiceBotWithLoader(id, pattern) - loader = DiceBotLoaderList.find(pattern) - assert(loader, '読み込み処理が見つかる') - - loaderDowncase = DiceBotLoaderList.find(pattern.downcase) - assert_same(loader, loaderDowncase, - '小文字指定で読み込み処理が見つかる') - - diceBot = loader.loadDiceBot - assert_equal(id, diceBot.id, - 'loaderで読み込んだダイスボットのゲームシステム識別子が等しい') - - @bcDice.setGameByTitle(pattern) - assert_equal(id, @bcDice.getGameType, - 'setGameByTitle後のダイスボットのゲームシステム識別子が等しい') - - @bcDice.setGameByTitle(pattern.downcase) - assert_equal(id, @bcDice.getGameType, - '小文字を指定したsetGameByTitle後のダイスボットのゲームシステム識別子が等しい') - end - - # DiceBotLoaderなしでも正しいダイスボットが読み込まれることを表明する - # @param [String] id ゲームシステムの識別子 - # @param [String] pattern 読み込む際に指定する名前 - # @return [void] - def assertDiceBotWithoutLoader(id, pattern = id) - assert_nil(DiceBotLoaderList.find(pattern), '読み込み処理が存在しない') - - @bcDice.setGameByTitle(pattern) - assert_equal(id, @bcDice.getGameType, - 'setGameByTitle後のダイスボットのゲームシステム識別子が等しい') - end -end diff --git a/src/src_bcdice/test/testDiceBotPrefixesCompatibility.rb b/src/src_bcdice/test/testDiceBotPrefixesCompatibility.rb deleted file mode 100644 index 97844c574..000000000 --- a/src/src_bcdice/test/testDiceBotPrefixesCompatibility.rb +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- - -dodontof_root = File.expand_path('..', File.dirname(__FILE__)) -unless $:.include?(dodontof_root) - $:.unshift(dodontof_root) -end - -require 'test/unit' -require 'diceBot/DiceBot' - -class TestDiceBotPrefixesCompatibility < Test::Unit::TestCase - def test_prefixesCompatibility - kariDiceClass = Class.new(DiceBot) do |_| - def id - 'KariDice' - end - - def name - '仮ダイス' - end - - # 従来の方法で接頭辞を設定する - def prefixs - ['KD\d+>=\d+'] - end - end - - # 一回インスタンスを生成し、従来の方法で接頭辞が設定されているか - # 判定されるようにする - _ = kariDiceClass.new - - assert_equal(['KD\d+>=\d+'], kariDiceClass.prefixes, - 'クラス側に接頭辞が設定されている') - assert_not_equal(DiceBot::EMPTY_PREFIXES_PATTERN, - kariDiceClass.prefixesPattern, - 'クラス側に接頭辞の正規表現が設定されている') - end -end diff --git a/src/src_bcdice/test/testDiceBots.rb b/src/src_bcdice/test/testDiceBots.rb deleted file mode 100644 index bee196056..000000000 --- a/src/src_bcdice/test/testDiceBots.rb +++ /dev/null @@ -1,7 +0,0 @@ -if RUBY_VERSION < '1.9' - $KCODE = 'u' -end - -require 'DiceBotTest' -result = DiceBotTest.new(nil, nil).execute -abort unless result diff --git a/src/src_bcdice/test/test_command_parser.rb b/src/src_bcdice/test/test_command_parser.rb deleted file mode 100644 index 776029426..000000000 --- a/src/src_bcdice/test/test_command_parser.rb +++ /dev/null @@ -1,150 +0,0 @@ -# -*- coding: utf-8 -*- - -require 'test/unit' -require 'bcdiceCore' -require 'utils/command_parser' - -class TestCommandParser < Test::Unit::TestCase - def setup - @parser = CommandParser.new("LL", "SA") - end - - def test_parse_full - parsed = @parser.parse("LL@1#2$9+4<=5") - - assert_not_nil(parsed) - assert_equal("LL", parsed.command) - assert_equal(1, parsed.critical) - assert_equal(2, parsed.fumble) - assert_equal(9, parsed.dollar) - assert_equal(4, parsed.modify_number) - assert_equal(:<=, parsed.cmp_op) - assert_equal(5, parsed.target_number) - end - - def test_command_only - parsed = @parser.parse("LL") - - assert_not_nil(parsed) - assert_equal("LL", parsed.command) - assert_equal(nil, parsed.critical) - assert_equal(nil, parsed.fumble) - assert_equal(nil, parsed.dollar) - assert_equal(0, parsed.modify_number) - assert_equal(nil, parsed.cmp_op) - assert_equal(nil, parsed.target_number) - end - - def test_not_match - parsed = @parser.parse("RR@1#2+4<=5") - - assert_equal(nil, parsed) - end - - def test_negative_suffix - parsed = @parser.parse("LL@-1#-2$-5") - - assert_not_nil(parsed) - assert_equal("LL", parsed.command) - assert_equal(-1, parsed.critical) - assert_equal(-2, parsed.fumble) - assert_equal(-5, parsed.dollar) - end - - def test_suffix_after_modify_number - parsed = @parser.parse("LL+4@1#2$9<=5") - - assert_not_nil(parsed) - assert_equal("LL", parsed.command) - assert_equal(1, parsed.critical) - assert_equal(2, parsed.fumble) - assert_equal(9, parsed.dollar) - assert_equal(4, parsed.modify_number) - assert_equal(:<=, parsed.cmp_op) - assert_equal(5, parsed.target_number) - end - - def test_expr - parsed = @parser.parse("LL@1#2-4*3+6/2<=-10/5+2*6") - - assert_not_nil(parsed) - assert_equal("LL", parsed.command) - assert_equal(1, parsed.critical) - assert_equal(2, parsed.fumble) - assert_equal(-9, parsed.modify_number) - assert_equal(:<=, parsed.cmp_op) - assert_equal(10, parsed.target_number) - end - - def test_reverse_critical - parsed = @parser.parse("LL#1@2+4<=5") - - assert_not_nil(parsed) - assert_equal("LL", parsed.command) - assert_equal(2, parsed.critical) - assert_equal(1, parsed.fumble) - assert_equal(4, parsed.modify_number) - assert_equal(:<=, parsed.cmp_op) - assert_equal(5, parsed.target_number) - end - - def test_critical_only - parsed = @parser.parse("LL@23") - - assert_not_nil(parsed) - assert_equal("LL", parsed.command) - assert_equal(23, parsed.critical) - assert_equal(nil, parsed.fumble) - assert_equal(nil, parsed.dollar) - end - - def test_fumble_only - parsed = @parser.parse("LL#23") - - assert_not_nil(parsed) - assert_equal("LL", parsed.command) - assert_equal(nil, parsed.critical) - assert_equal(23, parsed.fumble) - assert_equal(nil, parsed.dollar) - end - - def test_dollar_only - parsed = @parser.parse("LL$23") - - assert_not_nil(parsed) - assert_equal("LL", parsed.command) - assert_equal(nil, parsed.critical) - assert_equal(nil, parsed.fumble) - assert_equal(23, parsed.dollar) - end - - def test_duplicate_critical - parsed = @parser.parse("LL@2@5") - - assert_equal(nil, parsed) - end - - def test_duplicate_fumble - parsed = @parser.parse("LL#2#5") - - assert_equal(nil, parsed) - end - - def test_duplicate_dollar - parsed = @parser.parse("LL$2$5") - - assert_equal(nil, parsed) - end - - def test_no_suffix - parsed = @parser.parse("LL+10>30") - - assert_equal("LL", parsed.command) - assert_equal(nil, parsed.critical) - assert_equal(nil, parsed.fumble) - assert_equal(nil, parsed.dollar) - assert_equal(10, parsed.modify_number) - assert_equal(:>, parsed.cmp_op) - assert_equal(30, parsed.target_number) - end -end diff --git a/src/src_bcdice/test/test_d66_table.rb b/src/src_bcdice/test/test_d66_table.rb deleted file mode 100644 index f71c854f7..000000000 --- a/src/src_bcdice/test/test_d66_table.rb +++ /dev/null @@ -1,147 +0,0 @@ -# -*- coding: utf-8 -*- - -require 'test/unit' -require 'bcdiceCore' -require 'utils/d66_table' - -class TestD66Table < Test::Unit::TestCase - def setup - @bcdice = BCDiceMaker.new.newBcDice - - @asc_items = { - 11 => "あ", - 12 => "い", - 13 => "う", - 14 => "え", - 15 => "お", - 16 => "か", - 22 => "き", - 23 => "く", - 24 => "け", - 25 => "こ", - 26 => "さ", - 33 => "し", - 34 => "す", - 35 => "せ", - 36 => "そ", - 44 => "た", - 45 => "ち", - 46 => "つ", - 55 => "て", - 56 => "と", - 66 => "な", - } - - @desc_items = { - 11 => "に", - 21 => "ぬ", - 22 => "ね", - 31 => "の", - 32 => "は", - 33 => "ひ", - 41 => "ふ", - 42 => "へ", - 43 => "ほ", - 44 => "ま", - 51 => "み", - 52 => "む", - 53 => "め", - 54 => "も", - 55 => "や", - 61 => "ゆ", - 62 => "よ", - 63 => "ら", - 64 => "り", - 65 => "る", - 66 => "れ", - } - end - - def test_asc - table = D66Table.new( - "テスト", - :asc, - @asc_items - ) - - @bcdice.setRandomValues([[1, 6], [6, 6]]) - assert_equal("テスト(16) > か", table.roll(@bcdice)) - end - - def test_asc_swap - table = D66Table.new( - "テスト", - :asc, - @asc_items - ) - - @bcdice.setRandomValues([[6, 6], [1, 6]]) - assert_equal("テスト(16) > か", table.roll(@bcdice)) - end - - def test_asc_11 - table = D66Table.new( - "テスト", - :asc, - @asc_items - ) - - @bcdice.setRandomValues([[1, 6], [1, 6]]) - assert_equal("テスト(11) > あ", table.roll(@bcdice)) - end - - def test_asc_66 - table = D66Table.new( - "テスト", - :asc, - @asc_items - ) - - @bcdice.setRandomValues([[6, 6], [6, 6]]) - assert_equal("テスト(66) > な", table.roll(@bcdice)) - end - - def test_desc - table = D66Table.new( - "テスト", - :desc, - @desc_items - ) - - @bcdice.setRandomValues([[6, 6], [1, 6]]) - assert_equal("テスト(61) > ゆ", table.roll(@bcdice)) - end - - def test_desc_swap - table = D66Table.new( - "テスト", - :desc, - @desc_items - ) - - @bcdice.setRandomValues([[1, 6], [6, 6]]) - assert_equal("テスト(61) > ゆ", table.roll(@bcdice)) - end - - def test_desc_11 - table = D66Table.new( - "テスト", - :desc, - @desc_items - ) - - @bcdice.setRandomValues([[1, 6], [1, 6]]) - assert_equal("テスト(11) > に", table.roll(@bcdice)) - end - - def test_desc_66 - table = D66Table.new( - "テスト", - :desc, - @desc_items - ) - - @bcdice.setRandomValues([[6, 6], [6, 6]]) - assert_equal("テスト(66) > れ", table.roll(@bcdice)) - end -end diff --git a/src/src_bcdice/test/test_data_encoding.rb b/src/src_bcdice/test/test_data_encoding.rb deleted file mode 100644 index 9dccbb2b8..000000000 --- a/src/src_bcdice/test/test_data_encoding.rb +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- - -require 'test/unit' -require 'nkf' - -class TestDataEncoding < Test::Unit::TestCase - data do - data_set = {} - pattern = File.join(File.dirname(__FILE__), 'data/*.txt') - files = Dir.glob(pattern) - - files.each do |f| - data_set[File.basename(f)] = f - end - - data_set - end - def test_encoding(path) - str = File.read(path) - assert_equal(NKF::UTF8, NKF.guess(str), "文字コードはUTF-8にしてください") - assert_false(str.include?("\r"), "改行コードはLFにしてください") - end -end diff --git a/src/src_bcdice/test/test_detailed_rand_results.rb b/src/src_bcdice/test/test_detailed_rand_results.rb deleted file mode 100644 index 42d107bf1..000000000 --- a/src/src_bcdice/test/test_detailed_rand_results.rb +++ /dev/null @@ -1,99 +0,0 @@ -# -*- coding: utf-8 -*- - -require 'test/unit' -require 'bcdiceCore' - -# ダイスロール結果詳細のテストケース -# 10の位用にダイスロールした場合などの確認 -class TestDetailedRandResults < Test::Unit::TestCase - def setup - @bcdice = BCDiceMaker.new.newBcDice - @bcdice.setCollectRandResult(true) - end - - def test_rand - @bcdice.setRandomValues([[49, 100]]) - - value = @bcdice.rand(100) - - assert_equal(49 - 1, value) - - assert_equal(1, @bcdice.detailed_rand_results.size) - assert_equal(:normal, @bcdice.detailed_rand_results[0].kind) - assert_equal(100, @bcdice.detailed_rand_results[0].sides) - assert_equal(49, @bcdice.detailed_rand_results[0].value) - - assert_equal(1, @bcdice.getRandResults.size) - assert_equal(100, @bcdice.getRandResults[0][1]) - assert_equal(49, @bcdice.getRandResults[0][0]) - end - - def test_tens_d10 - @bcdice.setRandomValues([[3, 10]]) - value = @bcdice.roll_tens_d10() - - assert_equal(30, value) - - assert_equal(1, @bcdice.detailed_rand_results.size) - assert_equal(:tens_d10, @bcdice.detailed_rand_results[0].kind) - assert_equal(10, @bcdice.detailed_rand_results[0].sides) - assert_equal(30, @bcdice.detailed_rand_results[0].value) - - assert_equal(1, @bcdice.getRandResults.size) - assert_equal(10, @bcdice.getRandResults[0][1]) - assert_equal(3, @bcdice.getRandResults[0][0]) - end - - def test_tens_d10_zero - @bcdice.setRandomValues([[10, 10]]) - value = @bcdice.roll_tens_d10() - - assert_equal(0, value) - assert_equal(0, @bcdice.detailed_rand_results[0].value) - assert_equal(10, @bcdice.getRandResults[0][0]) - end - - def test_d9 - @bcdice.setRandomValues([[3, 10]]) - value = @bcdice.roll_d9() - - assert_equal(2, value) - - assert_equal(1, @bcdice.detailed_rand_results.size) - assert_equal(:d9, @bcdice.detailed_rand_results[0].kind) - assert_equal(10, @bcdice.detailed_rand_results[0].sides) - assert_equal(2, @bcdice.detailed_rand_results[0].value) - - assert_equal(1, @bcdice.getRandResults.size) - assert_equal(10, @bcdice.getRandResults[0][1]) - assert_equal(3, @bcdice.getRandResults[0][0]) - end - - def test_coc7th - dicebot = DiceBotLoader.loadUnknownGame("Cthulhu7th") - @bcdice.setDiceBot(dicebot) - @bcdice.setRandomValues([[5, 10], [6, 10], [7, 10], [4, 10]]) - - @bcdice.setMessage("CC(2)") - @bcdice.dice_command - - details = @bcdice.detailed_rand_results - assert_equal(4, details.size) - - assert_equal(:tens_d10, details[0].kind) - assert_equal(10, details[0].sides) - assert_equal(50, details[0].value) - - assert_equal(:tens_d10, details[1].kind) - assert_equal(10, details[1].sides) - assert_equal(60, details[1].value) - - assert_equal(:tens_d10, details[2].kind) - assert_equal(10, details[2].sides) - assert_equal(70, details[2].value) - - assert_equal(:normal, details[3].kind) - assert_equal(10, details[3].sides) - assert_equal(4, details[3].value) - end -end diff --git a/src/src_bcdice/test/test_dicebot_info_is_defined.rb b/src/src_bcdice/test/test_dicebot_info_is_defined.rb deleted file mode 100644 index e4828e0a6..000000000 --- a/src/src_bcdice/test/test_dicebot_info_is_defined.rb +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -# 新しいtest/unitが対応しているRubyバージョンのみでテストケースを定義する -if RUBY_VERSION >= '2.0' - bcdice_root = File.expand_path('..', File.dirname(__FILE__)) - $:.unshift(bcdice_root) unless $:.include?(bcdice_root) - - require 'test/unit' - require 'diceBot/DiceBot' - require 'diceBot/DiceBotLoader' - - class TestDiceBotInfoIsDefined < Test::Unit::TestCase - # 一般的なダイスボット - DEFAULT_DICEBOT = DiceBot.new - - # ダイスボットの配列 - dicebots = DiceBotLoader.collectDiceBots - - # テストデータを宣言する - define_data = lambda { |bot| data(bot.id, [bot, bot.class.superclass]) } - - dicebots.each(&define_data) - # ゲームシステムの識別子が定義されているか確認する - # @param [DiceBot] bot 確認するダイスボット - def test_dicebot_id_is_defined(data) - bot, super_class = data - assert_not_equal(super_class.new.id, bot.id, - "#{bot.class}: ゲームシステムの識別子が定義されている") - end - - dicebots.each(&define_data) - # ゲームシステム名が定義されているか確認する - # @param [DiceBot] bot 確認するダイスボット - def test_dicebot_name_is_defined(data) - bot, super_class = data - assert_not_equal(super_class.new.name, bot.name, - "#{bot.class}: ゲームシステム名が定義されている") - end - - dicebots.each(&define_data) - # ゲームシステム名の読みがなが定義されているか確認する - # @param [DiceBot] bot 確認するダイスボット - def test_dicebot_sort_key_is_defined(data) - bot, super_class = data - assert_not_equal(super_class.new.sort_key, bot.sort_key, - "#{bot.class}: ゲームシステム名の読みがなが定義されている") - end - - dicebots.each(&define_data) - # ダイスボットの使い方の説明文が定義されているか確認する - # @param [DiceBot] bot 確認するダイスボット - def test_dicebot_help_message_is_defined(data) - bot, = data - - # ダイスボットの使い方の説明文については、基底クラスのものと同じでもよい - assert_not_equal(DEFAULT_DICEBOT.help_message, bot.help_message, - "#{bot.class}: ダイスボットの使い方の説明文が定義されている") - end - end -end diff --git a/src/src_bcdice/test/test_srs_help_messages.rb b/src/src_bcdice/test/test_srs_help_messages.rb deleted file mode 100644 index 90bb86c50..000000000 --- a/src/src_bcdice/test/test_srs_help_messages.rb +++ /dev/null @@ -1,89 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -bcdice_root = File.expand_path('..', File.dirname(__FILE__)) -$:.unshift(bcdice_root) unless $:.include?(bcdice_root) - -require 'test/unit' -require 'diceBot/SRS' -require 'diceBot/EtrianOdysseySRS' - -# Standard RPG System(SRS)系のダイスボットの説明文のテスト -# -# SRS系のダイスボットでは、各ゲームシステム用の成功判定エイリアスコマンドに -# 合わせてダイスボットの説明文を自動生成する。 -# 以下のテストケースで、説明文が正しく生成されるか確認する。 -class TestSRSHelpMessages < Test::Unit::TestCase - # Standard RPG Systemの説明文をテストする - def test_SRS_help_message - dice_bot = SRS.new - - expected = <=t[c,f] -  修正値m、目標値t、クリティカル値c、ファンブル値fで判定ロールを行います。 -  修正値、クリティカル値、ファンブル値は省略可能です([]ごと省略可)。 -  クリティカル値、ファンブル値の既定値は、それぞれ12、2です。 -  自動成功、自動失敗、成功、失敗を自動表示します。 - -  例) 2d6>=10     修正値0、目標値10で判定 -  例) 2d6+2>=10    修正値+2、目標値10で判定 -  例) 2d6+2>=10[11]  ↑をクリティカル値11で判定 -  例) 2d6+2>=10[12,4] ↑をクリティカル値12、ファンブル値4で判定 - - ・クリティカルおよびファンブルのみの判定:2D6+m[c,f] -  目標値を指定せず、修正値m、クリティカル値c、ファンブル値fで判定ロールを行います。 -  修正値、クリティカル値、ファンブル値は省略可能です([]は省略不可)。 -  自動成功、自動失敗を自動表示します。 - -  例) 2d6[]    修正値0、クリティカル値12、ファンブル値2で判定 -  例) 2d6+2[11]  修正値+2、クリティカル値11、ファンブル値2で判定 -  例) 2d6+2[12,4] 修正値+2、クリティカル値12、ファンブル値4で判定 - -・D66ダイスあり(入れ替えなし) -HELP_MESSAGE - - assert_equal(expected, dice_bot.help_message) - end - - # 世界樹の迷宮SRSの説明文をテストする - # - # 世界樹の迷宮SRSのダイスボットには、複数のエイリアスコマンドが存在する。 - # すべてのエイリアスコマンドについての説明が含まれているか、確認する。 - def test_EtrianOdysseySRS_help_message - dice_bot = EtrianOdysseySRS.new - - expected = <=t[c,f] -  修正値m、目標値t、クリティカル値c、ファンブル値fで判定ロールを行います。 -  修正値、クリティカル値、ファンブル値は省略可能です([]ごと省略可)。 -  クリティカル値、ファンブル値の既定値は、それぞれ12、2です。 -  自動成功、自動失敗、成功、失敗を自動表示します。 - -  例) 2d6>=10     修正値0、目標値10で判定 -  例) 2d6+2>=10    修正値+2、目標値10で判定 -  例) 2d6+2>=10[11]  ↑をクリティカル値11で判定 -  例) 2d6+2>=10[12,4] ↑をクリティカル値12、ファンブル値4で判定 -  例) EO+2>=10     2d6+2>=10と同じ(EOが2D6のショートカットコマンド) -  例) SQ+2>=10     2d6+2>=10と同じ(SQが2D6のショートカットコマンド) - - ・クリティカルおよびファンブルのみの判定:2D6+m[c,f] -  目標値を指定せず、修正値m、クリティカル値c、ファンブル値fで判定ロールを行います。 -  修正値、クリティカル値、ファンブル値は省略可能です([]は省略不可)。 -  自動成功、自動失敗を自動表示します。 - -  例) 2d6[]    修正値0、クリティカル値12、ファンブル値2で判定 -  例) 2d6+2[11]  修正値+2、クリティカル値11、ファンブル値2で判定 -  例) 2d6+2[12,4] 修正値+2、クリティカル値12、ファンブル値4で判定 -  例) EO      2d6[]と同じ(EOが2D6のショートカットコマンド) -  例) EO+2[12,4]  2d6+2[12,4]と同じ(EOが2D6のショートカットコマンド) -  例) SQ      2d6[]と同じ(SQが2D6のショートカットコマンド) -  例) SQ+2[12,4]  2d6+2[12,4]と同じ(SQが2D6のショートカットコマンド) - -・D66ダイスあり(入れ替えなし) -HELP_MESSAGE - - assert_equal(expected, dice_bot.help_message) - end -end diff --git a/src/src_bcdice/utils/ArithmeticEvaluator.rb b/src/src_bcdice/utils/ArithmeticEvaluator.rb deleted file mode 100644 index 3a7b29f7b..000000000 --- a/src/src_bcdice/utils/ArithmeticEvaluator.rb +++ /dev/null @@ -1,132 +0,0 @@ -# -# 四則演算を評価するクラス -# -class ArithmeticEvaluator - # 四則演算を評価する - # @param [String] expr 評価する式 - # @param [Symbol] round_type 端数処理の設定 :omit 切り捨て, :roundUp 切り上げ, :roundOff 四捨五入 - # @return [Integer] - def eval(expr, round_type = :omit) - @tokens = tokenize(expr) - @idx = 0 - @error = false - @round_type = round_type - - ret = expr() - if @error - return 0 - else - return ret - end - end - - private - - def tokenize(expr) - expr.gsub(%r{[\(\)\+\-\*/]}) { |e| " #{e} " }.split(' ') - end - - def add - ret = mul() - - loop do - if consume("+") - ret += mul() - elsif consume("-") - ret -= mul() - else - break - end - end - - return ret - end - alias expr add - - def mul - ret = unary() - - loop do - if consume("*") - ret *= unary() - elsif consume("/") - ret = div(ret, unary()) - else - break - end - end - - return ret - end - - def div(left, right) - if right.zero? - @error = true - return 0 - end - - case @round_type - when :roundUp - return (left.to_f / right).ceil - when :roundOff - return (left.to_f / right).round - else - return (left / right).floor # TKfix Rubyでは常に整数が返るが、JSだと実数になる可能性がある - end - end - - def unary - if consume("+") - unary() - elsif consume("-") - -unary() - else - term() - end - end - - def term - if consume("(") - ret = expr() - expect(")") - return ret - else - return expect_number() - end - end - - def consume(str) - if @tokens[@idx] != str - return false - end - - @idx += 1 - return true - end - - def expect(str) - if @tokens[@idx] != str - @error = true - end - - @idx += 1 - end - - def expect_number() - unless integer?(@tokens[@idx]) - @error = true - @idx += 1 - return 0 - end - - ret = @tokens[@idx].to_i - @idx += 1 - return ret - end - - def integer?(str) - # Ruby 1.9 以降では Kernel.#Integer を使うべき - # Ruby 1.8 にもあるが、基数を指定できない問題がある - !/^\d+$/.match(str).nil? - end -end diff --git a/src/src_bcdice/utils/command_parser.rb b/src/src_bcdice/utils/command_parser.rb deleted file mode 100644 index 84ac1a847..000000000 --- a/src/src_bcdice/utils/command_parser.rb +++ /dev/null @@ -1,159 +0,0 @@ -require "utils/ArithmeticEvaluator" -require "utils/normalize" -require "utils/modifier_formatter" - -class CommandParser < ArithmeticEvaluator - def initialize(*literals) - @literals = literals - @round_type = :omit - end - - # @!attribute [rw] command - # @return [String] - # @!attribute [rw] critical - # @return [Integer, nil] - # @!attribute [rw] fumble - # @return [Integer, nil] - # @!attribute [rw] dollar - # @return [Integer, nil] - # @!attribute [rw] modify_number - # @return [Integer] - # @!attribute [rw] cmp_op - # @return [Symbol, nil] - # @!attribute [rw] target_number - # @return [Integer, nil] - class Parsed - attr_accessor :command, :critical, :fumble, :dollar, :modify_number, :cmp_op, :target_number - - include ModifierFormatter - - def initialize - @critical = nil - @fumble = nil - @dollar = nil - end - - def to_s(suffix_position = :after_command) - c = @critical ? "@#{@critical}" : nil - f = @fumble ? "##{@fumble}" : nil - d = @dollar ? "$#{@dollar}" : nil - m = format_modifier(@modify_number) - - case suffix_position - when :after_command - [@command, c, f, d, m, @cmp_op, @target_number].join() - when :after_modify_number - [@command, m, c, f, d, @cmp_op, @target_number].join() - when :after_target_number - [@command, m, @cmp_op, @target_number, c, f, d].join() - end - end - end - - # @param expr [String] - # @param rount_type [Symbol] - # @return [CommandParser::Parsed] - # @return [nil] - def parse(expr, round_type = :omit) - @tokens = tokenize(expr) - @idx = 0 - @error = false - @round_type = round_type - - @parsed = Parsed.new() - - lhs() - if @error - return nil - end - - @parsed.cmp_op = take_cmp_op() - @parsed.target_number = @parsed.cmp_op ? expr() : nil - - if @idx < @tokens.size || @error - return nil - end - - return @parsed - end - - private - - # @return [Array] - def tokenize(expr) - expr.gsub(%r{[\(\)\+\-*/@#\$]|[<>!=]+}) { |e| " #{e} " }.split(' ') - end - - def lhs - command = take() - unless literal?(command) - @error = true - return - end - - command_suffix() - - ret = 0 - loop do - if consume("+") - ret += mul() - elsif consume("-") - ret -= mul() - else - break - end - end - - command_suffix() - - @parsed.command = command - @parsed.modify_number = ret - end - - def command_suffix - loop do - if consume("@") - if @parsed.critical - @error = true - end - @parsed.critical = unary() - elsif consume("#") - if @parsed.fumble - @error = true - end - @parsed.fumble = unary() - elsif consume("$") - if @parsed.dollar - @error = true - end - @parsed.dollar = unary() - else - break - end - end - end - - def literal?(command) - @literals.each do |lit| - case lit - when String - return true if command == lit - when Regexp - return true if command =~ lit - end - end - - return false - end - - def take - ret = @tokens[@idx] - @idx += 1 - - return ret - end - - def take_cmp_op - Normalize.comparison_operator(take()) - end -end diff --git a/src/src_bcdice/utils/d66_grid_table.rb b/src/src_bcdice/utils/d66_grid_table.rb deleted file mode 100644 index 7a8fc8784..000000000 --- a/src/src_bcdice/utils/d66_grid_table.rb +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- - -# D66を振って6x6マスの表を参照する -class D66GridTable - # @param [String] name 表の名前 - # @param [Array>] items 表の項目の配列 - def initialize(name, items) - @name = name - @items = items.freeze - end - - # 表を振る - # @param [BCDice] bcdice ランダマイザ - # @return [String] 結果 - def roll(bcdice) - dice1, = bcdice.roll(1, 6) - dice2, = bcdice.roll(1, 6) - - index1 = dice1 - 1 - index2 = dice2 - 1 - return "#{@name}(#{dice1}#{dice2}) > #{@items[index1][index2]}" - end -end diff --git a/src/src_bcdice/utils/d66_range_table.rb b/src/src_bcdice/utils/d66_range_table.rb deleted file mode 100644 index 2d7d6183c..000000000 --- a/src/src_bcdice/utils/d66_range_table.rb +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- - -# 項目をRangeを用いて参照するD66表 -class D66RangeTable - # @param name [String] 表の名前 - # @param items [Array<(Range, String)>] 表の項目の配列 - def initialize(name, items) - @name = name - @items = items.freeze - end - - # 表を振る - # @param bcdice [BCDice] ランダマイザ - # @return [String] 結果 - def roll(bcdice) - dice1, = bcdice.roll(1, 6) - dice2, = bcdice.roll(1, 6) - - key = dice1 * 10 + dice2 - - chosen = @items.find { |row| row[0].include?(key) } - return "#{@name}(#{key}) > #{chosen[1]}" - end -end diff --git a/src/src_bcdice/utils/d66_table.rb b/src/src_bcdice/utils/d66_table.rb deleted file mode 100644 index d04da7972..000000000 --- a/src/src_bcdice/utils/d66_table.rb +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- - -# D66を振って出目を昇順/降順にして表を参照する -class D66Table - # @param [String] name 表の名前 - # @param [Symbol] sort_type 出目入れ替えの方式 :asc or :desc - # @param [Hash] items 表の項目 Key は数値 - def initialize(name, sort_type, items) - @name = name - @sort_type = sort_type - @items = items.freeze - end - - # 表を振る - # @param [BCDice] bcdice ランダマイザ - # @return [String] 結果 - def roll(bcdice) - dice = Array.new(2) do - val, = bcdice.roll(1, 6) - val - end - - dice.sort! - if @sort_type == :desc - dice.reverse! - end - - key = dice[0] * 10 + dice[1] - return "#{@name}(#{key}) > #{@items[key]}" - end -end diff --git a/src/src_bcdice/utils/format.rb b/src/src_bcdice/utils/format.rb deleted file mode 100644 index 2e000dcf4..000000000 --- a/src/src_bcdice/utils/format.rb +++ /dev/null @@ -1,32 +0,0 @@ -module Format - module_function - - # 比較演算子を文字列表記にする - # - # @param op [Symbol] - # @return [String, nil] - def comparison_operator(op) - case op - when :== - '=' - when :'!=' - '<>' - when Symbol - op.to_s - end - end - - # 修正値を文字列表記にする - # - # @param number [Integer] - # @return [String] - def modifier(number) - if number == 0 - '' - elsif number > 0 - "+#{number}" - else - number.to_s - end - end -end diff --git a/src/src_bcdice/utils/modifier_formatter.rb b/src/src_bcdice/utils/modifier_formatter.rb deleted file mode 100644 index 9f2a58d3e..000000000 --- a/src/src_bcdice/utils/modifier_formatter.rb +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -# 修正値を整形する機能を提供するモジュール -module ModifierFormatter - # 修正値を整形する - # @param [Numeric] modifier 修正値 - # @return [String] 整形された修正値の文字列 - # - # 引数modifierの符号によって返り値が以下のように変わる。 - # - # * modifierが0の場合:空文字列 - # * modifierが正の場合:符号 "+" を数値の前に付ける(例:1 -> "+1") - # * modifierが負の場合:数値をそのまま文字列化して返す(例:-1 -> "-1") - def format_modifier(modifier) - if modifier == 0 - '' - elsif modifier > 0 - "+#{modifier}" - else - modifier.to_s - end - end -end diff --git a/src/src_bcdice/utils/normalize.rb b/src/src_bcdice/utils/normalize.rb deleted file mode 100644 index ed6de5d44..000000000 --- a/src/src_bcdice/utils/normalize.rb +++ /dev/null @@ -1,36 +0,0 @@ -module Normalize - module_function - - # 比較演算子をシンボルに正規化する - # - # @param op [String] - # @return [Symbol, nil] - def comparison_operator(op) - case op - when /<=|==|=>/ - :>= - when /<>|!=|=!/ - :'!=' - when // - :> - when /\=/ - :== - end - end - - # 目標値を正規化する - # - # @param val [String] - # @return [Integer, String] 整数か'?' - def target_number(val) - if val == '?' - val - else - val.to_i - end - end -end diff --git a/src/src_bcdice/utils/range_table.rb b/src/src_bcdice/utils/range_table.rb deleted file mode 100644 index 3ac94c6da..000000000 --- a/src/src_bcdice/utils/range_table.rb +++ /dev/null @@ -1,266 +0,0 @@ -# -*- coding: utf-8 -*- -# frozen_string_literal: true - -# 各項目について、Rangeを用いて出目の合計の範囲を指定する、表のクラス。 -# -# このクラスを使うと、表の定義を短く書ける。 -# このクラスを使って表を定義するときは、各項目を以下の形で書く。 -# -# [出目の合計の範囲, 内容] -# -# 「出目の合計の範囲」には、Integerを要素とするRangeか、Integerを置ける。 -# -# roll メソッドで表を振ると、出目の合計値と対応する項目が選ばれる。 -# -# @example 表の定義(バトルテックの致命的命中表) -# CRITICAL_TABLE = RangeTable.new( -# '致命的命中表', -# '2D6', -# [ -# [2..7, '致命的命中はなかった'], -# [8..9, '1箇所の致命的命中'], -# [10..11, '2箇所の致命的命中'], -# [12, 'その部位が吹き飛ぶ(腕、脚、頭)または3箇所の致命的命中(胴)'] -# ] -# ) -# -# @example 表を振った結果 -# CRITICAL_TABLE.roll(bcdice).formatted -# # 出目の合計が7の場合 :"致命的命中表(7) > 致命的命中はなかった" -# # 出目の合計が8の場合 :"致命的命中表(8) > 1箇所の致命的命中" -# # 出目の合計が9の場合 :"致命的命中表(9) > 1箇所の致命的命中" -# # 出目の合計が10の場合:"致命的命中表(10) > 2箇所の致命的命中" -class RangeTable - # 表を振った結果を表す構造体 - # @!attribute [rw] sum - # @return [Integer] 出目の合計 - # @!attribute [rw] values - # @return [Array] 出目の配列 - # @!attribute [rw] content - # @return [Object] 選ばれた項目の内容 - # @!attribute [rw] formatted - # @return [String] 整形された結果 - RollResult = Struct.new(:sum, :values, :content, :formatted) do - alias_method :to_s, :formatted - end - - # 表の項目を表す構造体 - # @!attribute [rw] range - # @return [Range] 出目の合計の範囲 - # @!attribute [rw] content - # @return [Object] 内容 - Item = Struct.new(:range, :content) - - # 項目を選ぶときのダイスロールの方法を表す正規表現 - DICE_ROLL_METHOD_RE = /\A(\d+)D(\d+)\z/i.freeze - - # 表を振った結果の整形処理(既定の処理) - DEFAULT_FORMATTER = lambda do |table, result| - "#{table.name}(#{result.sum}) > #{result.content}" - end - - # @return [String] 表の名前 - attr_reader :name - # @return [Integer] 振るダイスの個数 - attr_reader :num_of_dice - # @return [Integer] 振るダイスの面数 - attr_reader :num_of_sides - - # 表を初期化する - # - # ブロックを与えると、独自の結果整形処理を指定できる。 - # ブロックは振った表(+table+)と振った結果(+result+)を引数として受け取る。 - # - # @param [String] name 表の名前 - # @param [String] dice_roll_method - # 項目を選ぶときのダイスロールの方法(+'1D6'+ など) - # @param [Array<(Range, Object)>, Array<(Integer, Object)>] items - # 表の項目の配列。[出目の合計の範囲, 内容] - # @yieldparam [RangeTable] table 振った表 - # @yieldparam [RollResult] result 表を振った結果 - # @raise [ArgumentError] ダイスロール方法が正しい書式で指定されていなかった場合 - # @raise [TypeError] 範囲の型が正しくなかった場合 - # @raise [RangeError] 出目の合計の最小値がカバーされていなかった場合 - # @raise [RangeError] 出目の合計の最大値がカバーされていなかった場合 - # @raise [RangeError] 出目の合計の範囲にずれや重なりがあった場合 - # - # @example 表の定義(バトルテックの致命的命中表) - # CRITICAL_TABLE = RangeTable.new( - # '致命的命中表', - # '2D6', - # [ - # [2..7, '致命的命中はなかった'], - # [8..9, '1箇所の致命的命中'], - # [10..11, '2箇所の致命的命中'], - # [12, 'その部位が吹き飛ぶ(腕、脚、頭)または3箇所の致命的命中(胴)'] - # ] - # ) - # - # @example 独自の結果整形処理を指定する場合 - # CRITICAL_TABLE_WITH_FORMATTER = RangeTable.new( - # '致命的命中表', - # '2D6', - # [ - # [2..7, '致命的命中はなかった'], - # [8..9, '1箇所の致命的命中'], - # [10..11, '2箇所の致命的命中'], - # [12, 'その部位が吹き飛ぶ(腕、脚、頭)または3箇所の致命的命中(胴)'] - # ] - # ) do |table, result| - # "致命的命中発生? > #{result.sum}[#{result.values}] > #{result.content}" - # end - # - # CRITICAL_TABLE_WITH_FORMATTER.roll(bcdice).formatted - # #=> "致命的命中発生? > 11[5,6] > 2箇所の致命的命中" - def initialize(name, dice_roll_method, items, &formatter) - @name = name.freeze - @formatter = formatter || DEFAULT_FORMATTER - - m = DICE_ROLL_METHOD_RE.match(dice_roll_method) - unless m - raise( - ArgumentError, - "#{@name}: invalid dice roll method: #{dice_roll_method}" - ) - end - - @num_of_dice = m[1].to_i - @num_of_sides = m[2].to_i - - store(items) - end - - # 指定された値に対応する項目を返す - # @param [Integer] value 値(出目の合計) - # @return [Item] 指定された値に対応する項目 - # @raise [RangeError] 範囲外の値が指定された場合 - def fetch(value) - item = @items.find { |i| i.range.include?(value) } - unless item - raise RangeError, "#{@name}: value is out of range: #{value}" - end - - return item - end - - # 表を振る - # @param [BCDice] bcdice BCDice本体 - # @return [RollResult] 表を振った結果 - def roll(bcdice) - sum, values_str, = bcdice.roll(@num_of_dice, @num_of_sides) - - # TODO: BCDice#roll から直接、整数の配列として出目を受け取りたい - values = values_str.split(',').map(&:to_i) - - result = RollResult.new(sum, values, fetch(sum).content) - result.formatted = @formatter[self, result] - - return result - end - - private - - # 表の項目を格納する - # @param [Array<(Range, Object)>, Array<(Integer, Object)>] items - # 表の項目の配列。[出目の合計の範囲, 内容] - # @return [self] - # @raise [TypeError] 範囲の型が正しくなかった場合 - # @raise [RangeError] 出目の合計の最小値がカバーされていなかった場合 - # @raise [RangeError] 出目の合計の最大値がカバーされていなかった場合 - # @raise [RangeError] 出目の合計の範囲にずれや重なりがあった場合 - def store(items) - items_with_range = items.map { |r, c| [coerce_to_int_range(r), c] } - sorted_items = items_with_range.sort_by { |r, _| r.min } - - assert_min_sum_is_covered(sorted_items) - assert_max_sum_is_covered(sorted_items) - assert_no_gap_or_overlap_in_ranges(sorted_items) - - @items = sorted_items. - map { |range, content| Item.new(range, content.freeze).freeze }. - freeze - - self - end - - # 引数を強制的に整数を要素とするRangeに変換する - # @param [Range, Integer] x 変換対象 - # @return [Range] 整数を要素とするRange - # @raise [TypeError] xの型に対応していなかった場合 - def coerce_to_int_range(x) - case x - when Integer - return Range.new(x, x) - when Range - if x.begin.is_a?(Integer) && x.end.is_a?(Integer) - return x - end - end - - raise( - TypeError, - "#{@name}: #{x} (#{x.class}) must be an Integer or a Range with Integers " - ) - end - - # 出目の合計の最小値がカバーされていることを確認する - # @param [Array<(Range, Object)>] sorted_items - # ソートされた、項目の配列 - # @return [self] - # @raise [RangeError] 出目の合計の最小値がカバーされていなかった場合 - def assert_min_sum_is_covered(sorted_items) - min_sum = @num_of_dice - range = sorted_items.first[0] - unless range.include?(min_sum) - raise( - RangeError, - "#{@name}: min value (#{min_sum}) is not covered: #{range}" - ) - end - - self - end - - # 出目の合計の最大値がカバーされていることを確認する - # @param [Array<(Range, Object)>] sorted_items - # ソートされた、項目の配列 - # @return [self] - # @raise [RangeError] 出目の合計の最大値がカバーされていなかった場合 - def assert_max_sum_is_covered(sorted_items) - max_sum = @num_of_dice * @num_of_sides - range = sorted_items.last[0] - unless range.include?(max_sum) - raise( - RangeError, - "#{@name}: max value (#{max_sum}) is not covered: #{range}" - ) - end - - self - end - - # 出目の合計の範囲にずれや重なりがないことを確認する - # @param [Array<(Range, Object)>] sorted_items - # ソートされた、項目の配列 - # @return [self] - # @raise [RangeError] 出目の合計の範囲にずれや重なりがあった場合 - def assert_no_gap_or_overlap_in_ranges(sorted_items) - sorted_items.each_cons(2) do |i1, i2| - r1 = i1[0] - r2 = i2[0] - - max1 = r1.max - next_of_max1 = max1 + 1 - - if r2.include?(max1) - raise RangeError, "#{@name}: Range overlap: #{r1} and #{r2}" - end - - unless r2.include?(next_of_max1) - raise RangeError, "#{@name}: Range gap: #{r1} and #{r2}" - end - end - - self - end -end diff --git a/src/src_bcdice/utils/table.rb b/src/src_bcdice/utils/table.rb deleted file mode 100644 index 34d839ca0..000000000 --- a/src/src_bcdice/utils/table.rb +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- - -# 表を表すクラス -class Table - # @param [String] name 表の名前 - # @param [String] type 項目を選ぶときのダイスロールの方法 '1D6'など - # @param [Array] items 表の項目の配列 - def initialize(name, type, items) - @name = name - @items = items.freeze - - m = /(\d+)D(\d+)/i.match(type) - unless m - raise ArgumentError, "Unexpected table type: #{type}" - end - - @times = m[1].to_i - @sides = m[2].to_i - end - - # 表を振る - # @param [BCDice] bcdice ランダマイザ - # @return [String] 結果 - def roll(bcdice) - value, = bcdice.roll(@times, @sides) - index = value - @times - - return "#{@name}(#{value}) > #{@items[index]}" - end -end From 348a4b76ee4a8fb42a70f58315ae962564660e1e Mon Sep 17 00:00:00 2001 From: Hideyo Mikisato Date: Thu, 18 Feb 2021 01:47:07 +0900 Subject: [PATCH 022/161] =?UTF-8?q?bcdice-js=20v3=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- angular.json | 3 +- package-lock.json | 17662 +++++++++++++++- package.json | 2 +- src/app/class/dice-bot.ts | 104 +- .../chat-input/chat-input.component.html | 2 +- .../chat-input/chat-input.component.ts | 4 +- 6 files changed, 17700 insertions(+), 77 deletions(-) diff --git a/angular.json b/angular.json index 0f7fdf10d..e14918317 100644 --- a/angular.json +++ b/angular.json @@ -28,6 +28,7 @@ ], "scripts": [], "allowedCommonJsDependencies": [ + "bcdice", "hammerjs", "crypto-js/sha256", "crypto-js/lib-typedarrays", @@ -129,4 +130,4 @@ } }}, "defaultProject": "udonarium" -} \ No newline at end of file +} diff --git a/package-lock.json b/package-lock.json index ddfb33fe9..a57bf573d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,17638 @@ { "name": "udonarium", "version": "1.13.2", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "1.13.2", + "license": "MIT", + "dependencies": { + "@angular/animations": "^11.2.3", + "@angular/common": "^11.2.3", + "@angular/compiler": "^11.2.3", + "@angular/core": "^11.2.3", + "@angular/forms": "^11.2.3", + "@angular/platform-browser": "^11.2.3", + "@angular/platform-browser-dynamic": "^11.2.3", + "@angular/router": "^11.2.3", + "bcdice": "^3.0.0", + "crypto-js": "^3.3.0", + "file-saver": "^2.0.5", + "hammerjs": "^2.0.8", + "js-yaml": "^4.0.0", + "jszip": "~3.1.5", + "lzbase62": "^2.0.0", + "msgpack-lite": "^0.1.26", + "pako": "^2.0.0", + "rxjs": "^6.6.6", + "tslib": "^2.0.0", + "vkbeautify": "^0.99.3", + "zone.js": "~0.10.3" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~0.1102.2", + "@angular/cli": "^11.2.2", + "@angular/compiler-cli": "^11.2.3", + "@angular/language-service": "^11.2.3", + "@types/crypto-js": "^4.0.1", + "@types/file-saver": "^2.0.1", + "@types/hammerjs": "^2.0.39", + "@types/jasmine": "^3.5.0", + "@types/jasminewd2": "^2.0.8", + "@types/js-yaml": "^4.0.0", + "@types/jszip": "^3.1.7", + "@types/msgpack-lite": "^0.1.7", + "@types/node": "^12.11.1", + "@types/pako": "^1.0.1", + "@types/vkbeautify": "^0.99.2", + "codelyzer": "^6.0.0", + "jasmine-core": "~3.6.0", + "jasmine-spec-reporter": "~5.0.0", + "karma": "~6.1.1", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage": "~2.0.3", + "karma-jasmine": "~4.0.0", + "karma-jasmine-html-reporter": "^1.5.0", + "protractor": "~7.0.0", + "ts-node": "~8.3.0", + "tslint": "~6.1.0", + "typescript": "~4.0.5" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.1102.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.2.tgz", + "integrity": "sha512-FE7DeT13elqDlELF23QqvEFnT2BkxeC5t31/QW85IN/OR5Tf/q7XEpj7giJXyzKFQ60M3ZzbznZyRz0EqtfaBQ==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "11.2.2", + "rxjs": "6.6.3" + }, + "engines": { + "node": ">= 10.13.0", + "npm": "^6.11.0 || ^7.5.6", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/architect/node_modules/rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/architect/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/build-angular": { + "version": "0.1102.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1102.2.tgz", + "integrity": "sha512-AjnvHrzkYTzDGzp0r5RmGoP9fyZXtaVFo0598PRusi1oWp1sW6B5FKPWw896iREOlotRXw3dsjqrGwbMcz0qyg==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1102.2", + "@angular-devkit/build-optimizer": "0.1102.2", + "@angular-devkit/build-webpack": "0.1102.2", + "@angular-devkit/core": "11.2.2", + "@babel/core": "7.12.10", + "@babel/generator": "7.12.11", + "@babel/plugin-transform-async-to-generator": "7.12.1", + "@babel/plugin-transform-runtime": "7.12.10", + "@babel/preset-env": "7.12.11", + "@babel/runtime": "7.12.5", + "@babel/template": "7.12.7", + "@jsdevtools/coverage-istanbul-loader": "3.0.5", + "@ngtools/webpack": "11.2.2", + "ansi-colors": "4.1.1", + "autoprefixer": "10.2.4", + "babel-loader": "8.2.2", + "browserslist": "^4.9.1", + "cacache": "15.0.5", + "caniuse-lite": "^1.0.30001032", + "circular-dependency-plugin": "5.2.2", + "copy-webpack-plugin": "6.3.2", + "core-js": "3.8.3", + "critters": "0.0.7", + "css-loader": "5.0.1", + "cssnano": "4.1.10", + "file-loader": "6.2.0", + "find-cache-dir": "3.3.1", + "glob": "7.1.6", + "https-proxy-agent": "5.0.0", + "inquirer": "7.3.3", + "jest-worker": "26.6.2", + "karma-source-map-support": "1.4.0", + "less": "4.1.1", + "less-loader": "7.3.0", + "license-webpack-plugin": "2.3.11", + "loader-utils": "2.0.0", + "mini-css-extract-plugin": "1.3.5", + "minimatch": "3.0.4", + "open": "7.4.0", + "ora": "5.3.0", + "parse5-html-rewriting-stream": "6.0.1", + "pnp-webpack-plugin": "1.6.4", + "postcss": "8.2.4", + "postcss-import": "14.0.0", + "postcss-loader": "4.2.0", + "raw-loader": "4.0.2", + "regenerator-runtime": "0.13.7", + "resolve-url-loader": "3.1.2", + "rimraf": "3.0.2", + "rollup": "2.38.4", + "rxjs": "6.6.3", + "sass": "1.32.6", + "sass-loader": "10.1.1", + "semver": "7.3.4", + "source-map": "0.7.3", + "source-map-loader": "1.1.3", + "source-map-support": "0.5.19", + "speed-measure-webpack-plugin": "1.4.2", + "style-loader": "2.0.0", + "stylus": "0.54.8", + "stylus-loader": "4.3.3", + "terser": "5.5.1", + "terser-webpack-plugin": "4.2.3", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "webpack": "4.44.2", + "webpack-dev-middleware": "3.7.2", + "webpack-dev-server": "3.11.2", + "webpack-merge": "5.7.3", + "webpack-sources": "2.2.0", + "webpack-subresource-integrity": "1.5.2", + "worker-plugin": "5.0.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": "^6.11.0 || ^7.5.6", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/core-js": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz", + "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==", + "dev": true + }, + "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/build-optimizer": { + "version": "0.1102.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1102.2.tgz", + "integrity": "sha512-TCWWqAe+pWZzLp/g2gG8Z5NC8JSgDNfyEuMBWxEUfo1Sm3BluXoz0BbmnietuhXJZ+fPAp9rLLzEGZlHvOlmOA==", + "dev": true, + "dependencies": { + "loader-utils": "2.0.0", + "source-map": "0.7.3", + "tslib": "2.1.0", + "typescript": "4.1.3", + "webpack-sources": "2.2.0" + }, + "bin": { + "build-optimizer": "src/build-optimizer/cli.js" + }, + "engines": { + "node": ">= 10.13.0", + "npm": "^6.11.0 || ^7.5.6", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/build-optimizer/node_modules/typescript": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", + "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1102.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1102.2.tgz", + "integrity": "sha512-59CBbwbdN8lI5/whuNeAZHRJxPlOmDc5ux8aJJNwWI9w54fz0ut/MLT3iuPk+WZuKlGdpS1sGkObfZwWen5kIQ==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1102.2", + "@angular-devkit/core": "11.2.2", + "rxjs": "6.6.3" + }, + "engines": { + "node": ">= 10.13.0", + "npm": "^6.11.0 || ^7.5.6", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/core": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.2.tgz", + "integrity": "sha512-LUDO1AdIjereiMh0j5p9xJcdr9ifhbWCPxlZqfu5wHzUfhCx9gO2Lvjp6rZXQ3OedXg5IZUnyxHlzkszQOsgiw==", + "dev": true, + "dependencies": { + "ajv": "6.12.6", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.3", + "source-map": "0.7.3" + }, + "engines": { + "node": ">= 10.13.0", + "npm": "^6.11.0 || ^7.5.6", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/core/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/schematics": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.2.2.tgz", + "integrity": "sha512-6bIxMwafz/+lwdtcshwOuFfhxTMU4RLma1uxBS34DXupMauPGl0IIXAy5cK9dXPlHLxuGsjeBiOM6eq033RLgw==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "11.2.2", + "ora": "5.3.0", + "rxjs": "6.6.3" + }, + "engines": { + "node": ">= 10.13.0", + "npm": "^6.11.0 || ^7.5.6", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular/animations": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-11.2.3.tgz", + "integrity": "sha512-Z6sHIeTeeZrRAW83NI7FO7THF50cPCFkkuvVah3qmCqopY6FuoHKUBEENyGzQGH69LbGFYhEppY8KM/6JtVF6Q==", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/@angular/cli": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-11.2.2.tgz", + "integrity": "sha512-rOVBzDzrMuOgJY43O46/7yYbncx0egGfr+DMJDQdazePGH1H3INN/eA9gkVcVK53ztCYb9X1sbZKOs9TUhF6nw==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1102.2", + "@angular-devkit/core": "11.2.2", + "@angular-devkit/schematics": "11.2.2", + "@schematics/angular": "11.2.2", + "@schematics/update": "0.1102.2", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.1", + "debug": "4.3.1", + "ini": "2.0.0", + "inquirer": "7.3.3", + "jsonc-parser": "3.0.0", + "npm-package-arg": "8.1.0", + "npm-pick-manifest": "6.1.0", + "open": "7.4.0", + "ora": "5.3.0", + "pacote": "11.2.4", + "resolve": "1.19.0", + "rimraf": "3.0.2", + "semver": "7.3.4", + "symbol-observable": "3.0.0", + "universal-analytics": "0.4.23", + "uuid": "8.3.2" + }, + "bin": { + "ng": "bin/ng" + }, + "engines": { + "node": ">= 10.13.0", + "npm": "^6.11.0 || ^7.5.6", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/cli/node_modules/resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "dependencies": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/@angular/cli/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@angular/common": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-11.2.3.tgz", + "integrity": "sha512-51gVmr942SZtAFmhVfp7/3fcTQ+Tia7UxWjv6iUtYF3oCvTWbo/J1zki2VNSfmMNKJV8MaMq6XUw8UWbHA0sgQ==", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/@angular/compiler": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-11.2.3.tgz", + "integrity": "sha512-De8BwtSwPVYGdvQa6CDq2C1SLmB78YjS0t/KNlvfp85cl4Gb3BdjTDsKMkJXkm/3ubnIXi1BaRIsFNVTCCF70Q==", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/@angular/compiler-cli": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-11.2.3.tgz", + "integrity": "sha512-ObQVI6q2c0VTWbsDnWJDdUZv2Jz/u1jiQNcrdtu/rjtJARaldEno9dMakN838Q6Nw4FzKUO6uYZXmnvKCUjfxQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.8.6", + "@babel/types": "^7.8.6", + "canonical-path": "1.0.0", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "fs-extra": "4.0.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "semver": "^6.3.0", + "source-map": "^0.6.1", + "sourcemap-codec": "^1.4.8", + "tslib": "^2.0.0", + "yargs": "^16.1.1" + }, + "bin": { + "ivy-ngcc": "ngcc/main-ivy-ngcc.js", + "ng-xi18n": "src/extract_i18n.js", + "ngc": "src/main.js", + "ngcc": "ngcc/main-ngcc.js" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@angular/compiler-cli/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@angular/compiler-cli/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular/compiler-cli/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/compiler-cli/node_modules/y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/compiler-cli/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/compiler-cli/node_modules/yargs-parser": { + "version": "20.2.6", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz", + "integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/core": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-11.2.3.tgz", + "integrity": "sha512-+G7rZj21Mcmf6nWjQ79EwomwEOVQ1WLqw6YvCXWzgJ9ZlVjLi/Sti0/jIzUpgK0E0Fn86yuXw/vgYq5kjGeOcQ==", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/@angular/forms": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-11.2.3.tgz", + "integrity": "sha512-VfyKV8IxHTclcHQmt5gjGFmKC1kGz7sdNLYsEM+M0y88Bsufh3VIhK4kspfO4nhJxVfh6HFOt1JVQ5bvo6PDlQ==", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/@angular/language-service": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-11.2.3.tgz", + "integrity": "sha512-6PDInFDTQ2oP1mzD2W4fR5/pPFqbHRikXsNbIKnejeAxzcyoPQ9zxIKl7mmrS4N+8evtZUYLzR5AtHukvjYSpA==", + "dev": true + }, + "node_modules/@angular/platform-browser": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.2.3.tgz", + "integrity": "sha512-S0IP/kGinIH18+gfnX0gLFLbP0Euw1RBceDt/WipYhUeFZZryQHvot/6KFLFtO+8rVunfrg+UyBiaK65/TT9Og==", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.2.3.tgz", + "integrity": "sha512-QUPCvack7De6u5AqWcW8O6FzczwqoL858R1NlnqojnNbcnN/dCtXtKvvETEEgp/9VMwLfcuLd1BWdBJSah7f6A==", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/@angular/router": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-11.2.3.tgz", + "integrity": "sha512-lRuEIlNj2BcBZ17mt5SZY7v80PsvlS4J6EbKSOFeSYhALM/AQnaaCdrrMlQ1WyEa5bBUabxGT9/zvahBosy2yA==", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.8.tgz", + "integrity": "sha512-EaI33z19T4qN3xLXsGf48M2cDqa6ei9tPZlfLdb2HC+e/cFtREiRd8hdSqDbwdLB0/+gLwqJmCYASH0z2bUdog==", + "dev": true + }, + "node_modules/@babel/core": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz", + "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.10", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/core/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", + "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.11", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.8.tgz", + "integrity": "sha512-pBljUGC1y3xKLn1nrx2eAhurLMA8OqBtBP/JwG4U8skN7kf8/aqwwxpV1N6T0e7r6+7uNitIa/fUxPFagSXp3A==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.8", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.8.tgz", + "integrity": "sha512-qioaRrKHQbn4hkRKDHbnuQ6kAxmmOF+kzKGnIfxPK4j2rckSJCpKzr/SSTlohSCiE3uAQpNDJ9FIh4baeE8W+w==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", + "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-function-name/node_modules/@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", + "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz", + "integrity": "sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", + "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz", + "integrity": "sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "dev": true + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", + "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz", + "integrity": "sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", + "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "dev": true + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", + "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helpers": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.0.tgz", + "integrity": "sha512-aan1MeFPxFacZeSz6Ld7YZo5aPuqnKlD7+HZY75xQsueczFccP9A7V05+oe0XpLwHK3oLorPe9eaAUljL7WEaQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/highlight": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", + "integrity": "sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.13.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.4.tgz", + "integrity": "sha512-uvoOulWHhI+0+1f9L4BoozY7U5cIkZ9PgJqvb041d6vypgUmtVPG4vmGm4pSggjl8BELzvHyUeJSUyEMY6b+qA==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", + "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", + "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", + "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", + "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", + "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", + "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", + "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.8", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", + "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz", + "integrity": "sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", + "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", + "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", + "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", + "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13", + "globals": "^11.1.0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", + "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", + "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", + "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", + "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", + "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", + "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", + "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", + "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", + "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.14.2" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz", + "integrity": "sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "semver": "^5.5.1" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", + "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", + "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", + "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.12.7", + "@babel/helper-compilation-targets": "^7.12.5", + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.11", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.7", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.11", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.7", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.10", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.11", + "core-js-compat": "^3.8.0", + "semver": "^5.5.0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "node_modules/@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@babel/template": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", + "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" + } + }, + "node_modules/@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.0.tgz", + "integrity": "sha512-zBZfgvBB/ywjx0Rgc2+BwoH/3H+lDtlgD4hBOpEv5LxRnYsm/753iRuLepqnYlynpjC3AdQxtxsoeHJoEEwOAw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/traverse/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/types": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", + "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jsdevtools/coverage-istanbul-loader": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz", + "integrity": "sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA==", + "dev": true, + "dependencies": { + "convert-source-map": "^1.7.0", + "istanbul-lib-instrument": "^4.0.3", + "loader-utils": "^2.0.0", + "merge-source-map": "^1.1.0", + "schema-utils": "^2.7.0" + } + }, + "node_modules/@ngtools/webpack": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.2.2.tgz", + "integrity": "sha512-X1M/Xs0kLi9FrOIU6yJ74q3pCzhgwPQowO1XjJ68KLOoMbj/DM6Qm0Hi9N0Ay8h0s7BIdjKEu/C3pCdGu1Q54w==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "11.2.2", + "enhanced-resolve": "5.7.0", + "webpack-sources": "2.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": "^6.11.0 || ^7.5.6", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/ci-detect": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz", + "integrity": "sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q==", + "dev": true + }, + "node_modules/@npmcli/git": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.0.6.tgz", + "integrity": "sha512-a1MnTfeRPBaKbFY07fd+6HugY1WAkKJzdiJvlRub/9o5xz2F/JtPacZZapx5zRJUQFIzSL677vmTSxEcDMrDbg==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^1.1.0", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.3", + "npm-pick-manifest": "^6.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.2", + "unique-filename": "^1.1.1", + "which": "^2.0.2" + } + }, + "node_modules/@npmcli/git/node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz", + "integrity": "sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg==", + "dev": true + }, + "node_modules/@npmcli/promise-spawn": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "dev": true, + "dependencies": { + "infer-owner": "^1.0.4" + } + }, + "node_modules/@npmcli/run-script": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.3.tgz", + "integrity": "sha512-ELPGWAVU/xyU+A+H3pEPj0QOvYwLTX71RArXcClFzeiyJ/b/McsZ+d0QxpznvfFtZzxGN/gz/1cvlqICR4/suQ==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "infer-owner": "^1.0.4", + "node-gyp": "^7.1.0", + "puka": "^1.0.1", + "read-package-json-fast": "^2.0.1" + } + }, + "node_modules/@npmcli/run-script/node_modules/read-package-json-fast": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.2.tgz", + "integrity": "sha512-5fyFUyO9B799foVk4n6ylcoAktG/FbE3jwRKxvwaeSrIunaoMc0u81dzXxjeAFKOce7O5KncdfwpGvvs6r5PsQ==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@schematics/angular": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-11.2.2.tgz", + "integrity": "sha512-TcxPy58adUnkirGXyZVVSMuKkA0eIz2PWSQWEgB9l7kO+5LvDOn+RMoc6AVx0s/bU9nH+eozBUJ1XAD/E8QnYQ==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "11.2.2", + "@angular-devkit/schematics": "11.2.2", + "jsonc-parser": "3.0.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": "^6.11.0 || ^7.5.6", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@schematics/update": { + "version": "0.1102.2", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1102.2.tgz", + "integrity": "sha512-Nz8kjeixzDnOw00bnZznq3qrbIv8yWEWNb9eDkRBqgOUXQwlhKJY/sYBK58JF2D+conaRVuEqMsBlX08GlFtIA==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "11.2.2", + "@angular-devkit/schematics": "11.2.2", + "@yarnpkg/lockfile": "1.1.0", + "ini": "2.0.0", + "npm-package-arg": "^8.0.0", + "pacote": "11.2.4", + "semver": "7.3.4", + "semver-intersect": "1.4.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": "^6.11.0 || ^7.5.6", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/component-emitter": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", + "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==", + "dev": true + }, + "node_modules/@types/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", + "dev": true + }, + "node_modules/@types/crypto-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.0.1.tgz", + "integrity": "sha512-6+OPzqhKX/cx5xh+yO8Cqg3u3alrkhoxhE5ZOdSEv0DOzJ13lwJ6laqGU0Kv6+XDMFmlnGId04LtY22PsFLQUw==", + "dev": true + }, + "node_modules/@types/file-saver": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.1.tgz", + "integrity": "sha512-g1QUuhYVVAamfCifK7oB7G3aIl4BbOyzDOqVyUfEr4tfBKrXfeH+M+Tg7HKCXSrbzxYdhyCP7z9WbKo0R2hBCw==", + "dev": true + }, + "node_modules/@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/hammerjs": { + "version": "2.0.39", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.39.tgz", + "integrity": "sha512-lYR2Y/tV2ujpk/WyUc7S0VLI0a9hrtVIN9EwnrNo5oSEJI2cK2/XrgwOQmXLL3eTulOESvh9qP6si9+DWM9cOA==", + "dev": true + }, + "node_modules/@types/jasmine": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.4.tgz", + "integrity": "sha512-CTdMERA4iGNcxeqzD7pavb4WLIFq6bGnx6nIJD+1D4Knx24GE6QBPrWVhO8UlIy7gf7rbIt3ZD7iIzryRD2TgA==", + "dev": true + }, + "node_modules/@types/jasminewd2": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.8.tgz", + "integrity": "sha512-d9p31r7Nxk0ZH0U39PTH0hiDlJ+qNVGjlt1ucOoTUptxb2v+Y5VMnsxfwN+i3hK4yQnqBi3FMmoMFcd1JHDxdg==", + "dev": true, + "dependencies": { + "@types/jasmine": "*" + } + }, + "node_modules/@types/js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-4vlpCM5KPCL5CfGmTbpjwVKbISRYhduEJvvUWsH5EB7QInhEj94XPZ3ts/9FPiLZFqYO0xoW4ZL8z2AabTGgJA==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "dev": true + }, + "node_modules/@types/jszip": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@types/jszip/-/jszip-3.4.1.tgz", + "integrity": "sha512-TezXjmf3lj+zQ651r6hPqvSScqBLvyPI9FxdXBqpEwBijNGQ2NXpaFW/7joGzveYkKQUil7iiDHLo6LV71Pc0A==", + "dev": true, + "dependencies": { + "jszip": "*" + } + }, + "node_modules/@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "node_modules/@types/msgpack-lite": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@types/msgpack-lite/-/msgpack-lite-0.1.7.tgz", + "integrity": "sha512-OYPf2ExHl0TKuDn7M/356RDyCiqOQEs8f+SfePpbfHJJ7C8mqgp4ShgeUTuE8W7Tui2txbyVPiRiDPeK3D9PPA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "12.20.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.4.tgz", + "integrity": "sha512-xRCgeE0Q4pT5UZ189TJ3SpYuX/QGl6QIAOAIeDSbAVAd2gX1NxSZup4jNVK7cxIeP8KDSbJgcckun495isP1jQ==", + "dev": true + }, + "node_modules/@types/pako": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.1.tgz", + "integrity": "sha512-GdZbRSJ3Cv5fiwT6I0SQ3ckeN2PWNqxd26W9Z2fCK1tGrrasGy4puvNFtnddqH9UJFMQYXxEuuB7B8UK+LLwSg==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "dev": true + }, + "node_modules/@types/selenium-webdriver": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", + "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==", + "dev": true + }, + "node_modules/@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "node_modules/@types/vkbeautify": { + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@types/vkbeautify/-/vkbeautify-0.99.2.tgz", + "integrity": "sha512-zbBKJTu2GRURMTj0vFSYRTnOB7Fz7uDZEFKLEkF1tbALUWHSPE84/VwCeJtM1YFOavtbp6xylFkLt6OxT6IG9A==", + "dev": true + }, + "node_modules/@types/webpack-sources": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.8.tgz", + "integrity": "sha512-JHB2/xZlXOjzjBB6fMOpH1eQAfsrpqVVIbneE0Rok16WXwFaznaI5vfg75U5WgGJm7V9W1c4xeRQDjX/zwvghA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.6.1" + } + }, + "node_modules/@types/webpack-sources/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz", + "integrity": "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true, + "engines": { + "node": ">=0.3.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz", + "integrity": "sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "node_modules/alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "dependencies": { + "type-fest": "^0.11.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/app-root-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", + "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "dependencies": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "node_modules/arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=", + "dev": true + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.4.tgz", + "integrity": "sha512-DCCdUQiMD+P/as8m3XkeTUkUKuuRqLGcwD0nll7wevhqoJfMRpJlkFd1+MQh1pvupjiQuip42lc/VFvfUTMSKw==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.1", + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "fraction.js": "^4.0.13", + "normalize-range": "^0.1.2", + "postcss-value-parser": "^4.1.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "node_modules/axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "dependencies": { + "ast-types-flow": "0.0.7" + } + }, + "node_modules/babel-loader": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + } + }, + "node_modules/babel-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/bcdice": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.0.0.tgz", + "integrity": "sha512-OLMp8yXRLbmq/M1DA1IFxt+uu5NdfImzKzp9ehChF4qV/z8kPqGUIhj1KFAcT6RrnVmh2a5YJViiQKVzvbKOnQ==", + "dependencies": { + "lodash": "^4.17.20", + "source-map-support": "^0.5.19" + } + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bl/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/bl/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "blocking-proxy": "built/lib/bin.js" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/browserify-sign/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserify-zlib/node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/browserstack": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.1.tgz", + "integrity": "sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==", + "dev": true, + "dependencies": { + "https-proxy-agent": "^2.2.1" + } + }, + "node_modules/browserstack/node_modules/agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/browserstack/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/browserstack/node_modules/https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", + "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", + "dev": true, + "dependencies": { + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001192", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001192.tgz", + "integrity": "sha512-63OrUnwJj5T1rUmoyqYTdRWBqFFxZFlyZnRRjDR8NSUQFB6A+j/uBORU/SyJ5WzDLg4SPiZH40hQCBNdZ/jmAw==", + "dev": true + }, + "node_modules/canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "dev": true + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/chrome-trace-event/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/circular-dependency-plugin": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", + "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/codelyzer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.1.tgz", + "integrity": "sha512-cOyGQgMdhnRYtW2xrJUNrNYDjEgwQ+BrE2y93Bwz3h4DJ6vJRLfupemU5N3pbYsUlBHJf0u1j1UGk+NLW4d97g==", + "dev": true, + "dependencies": { + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", + "app-root-path": "^3.0.0", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "rxjs": "^6.5.3", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2", + "tslib": "^1.10.0", + "zone.js": "~0.10.3" + } + }, + "node_modules/codelyzer/node_modules/@angular/compiler": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", + "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", + "dev": true + }, + "node_modules/codelyzer/node_modules/@angular/core": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", + "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", + "dev": true + }, + "node_modules/codelyzer/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/codelyzer/node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + }, + "node_modules/codelyzer/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/color-string": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "dev": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", + "dev": true, + "dependencies": { + "arity-n": "^1.0.4" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/copy-anything": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz", + "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==", + "dev": true, + "dependencies": { + "is-what": "^3.12.0" + } + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "dependencies": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "node_modules/copy-concurrently/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/copy-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.3.2.tgz", + "integrity": "sha512-MgJ1uouLIbDg4ST1GzqrGQyKoXY5iPqi6fghFqarijam7FQcBa/r6Rg0VkoIuzx75Xq8iAMghyOueMkWUQ5OaA==", + "dev": true, + "dependencies": { + "cacache": "^15.0.5", + "fast-glob": "^3.2.4", + "find-cache-dir": "^3.3.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.1", + "loader-utils": "^2.0.0", + "normalize-path": "^3.0.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "webpack-sources": "^1.4.3" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/core-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", + "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=" + }, + "node_modules/core-js-compat": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.0.tgz", + "integrity": "sha512-YK6fwFjCOKWwGnjFUR3c544YsnA/7DoLL0ysncuOJ4pwbriAtOpvM2bygdlcXbvQCQZ7bBU9CL4t7tGl7ETRpQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.3", + "semver": "7.0.0" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/critters": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.7.tgz", + "integrity": "sha512-qUF2SaAWFYjNPdCcPpu68p2DnHiosia84yx5mPTlUMQjkjChR+n6sO1/I7yn2U2qNDgSPTd2SoaTIDQcUL+EwQ==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "css": "^3.0.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "pretty-bytes": "^5.3.0" + } + }, + "node_modules/critters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/critters/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/critters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/critters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/critters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/critters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/crypto-js": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz", + "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==" + }, + "node_modules/css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "node_modules/css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "engines": { + "node": ">4" + } + }, + "node_modules/css-declaration-sorter/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/css-declaration-sorter/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-declaration-sorter/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/css-loader": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.0.1.tgz", + "integrity": "sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw==", + "dev": true, + "dependencies": { + "camelcase": "^6.2.0", + "cssesc": "^3.0.0", + "icss-utils": "^5.0.0", + "loader-utils": "^2.0.0", + "postcss": "^8.1.4", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/css-loader/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/css-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "dev": true, + "dependencies": { + "css": "^2.0.0" + } + }, + "node_modules/css-parse/node_modules/css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "node_modules/css-parse/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-parse/node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "node_modules/css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "dependencies": { + "through": "X.X.X" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "dependencies": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-preset-default/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/cssnano-preset-default/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssnano-preset-default/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-raw-cache/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/cssnano-util-raw-cache/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssnano-util-raw-cache/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/cssnano/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssnano/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", + "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/csso/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "node_modules/cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==", + "dev": true + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/date-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", + "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "node_modules/default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "dependencies": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/del/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/del/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "node_modules/detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "node_modules/dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", + "dev": true + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.3.675", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.675.tgz", + "integrity": "sha512-GEQw+6dNWjueXGkGfjgm7dAMtXfEqrfDG3uWcZdeaD4cZ3dKYdPRQVruVXQRXtPLtOr5GNVVlNLRMChOZ611pQ==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", + "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.0", + "ws": "~7.4.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", + "dev": true, + "dependencies": { + "base64-arraybuffer": "0.1.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/ws": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz", + "integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==", + "dev": true, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "node_modules/env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.18.0-next.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", + "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.1", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.3", + "string.prototype.trimstart": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-promise": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", + "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/es6-promisify/node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-lite": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/event-lite/-/event-lite-0.1.2.tgz", + "integrity": "sha512-HnSYx1BsJ87/p6swwzv+2v6B4X+uxUteoDfRxsAb1S1BePzQqOLevVmkdA15GHJVd9A9Ok6wygUR18Hu0YeV9g==" + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "dependencies": { + "original": "^1.0.0" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "dependencies": { + "type": "^2.0.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.3.0.tgz", + "integrity": "sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg==", + "dev": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/flush-write-stream/node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/flush-write-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/flush-write-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", + "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.0.13.tgz", + "integrity": "sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/fs-extra": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", + "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "node_modules/hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/hash-base/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "node_modules/hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "node_modules/html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "node_modules/html-entities": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "dependencies": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "node_modules/iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, + "node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/int64-buffer": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-0.1.10.tgz", + "integrity": "sha1-J3siiofZWtd30HwTgyAiQGpHNCM=" + }, + "node_modules/internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "dependencies": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "dependencies": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "node_modules/is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, + "node_modules/is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "dependencies": { + "html-comment-regex": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/isbinaryfile": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", + "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dev": true, + "dependencies": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "bin": { + "jasmine": "bin/jasmine.js" + } + }, + "node_modules/jasmine-core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz", + "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", + "dev": true + }, + "node_modules/jasmine-spec-reporter": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.2.tgz", + "integrity": "sha512-6gP1LbVgJ+d7PKksQBc2H0oDGNRQI3gKUsWlswKaQ2fif9X5gzhQcgM5+kiJGCQVurOG09jqNhk7payggyp5+g==", + "dev": true, + "dependencies": { + "colors": "1.4.0" + } + }, + "node_modules/jasmine/node_modules/jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "dev": true + }, + "node_modules/jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true, + "engines": { + "node": ">= 6.9.x" + } + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "node_modules/json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/jszip": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", + "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", + "dependencies": { + "core-js": "~2.3.0", + "es6-promise": "~3.0.2", + "lie": "~3.1.0", + "pako": "~1.0.2", + "readable-stream": "~2.0.6" + } + }, + "node_modules/jszip/node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/karma": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.1.1.tgz", + "integrity": "sha512-vVDFxFGAsclgmFjZA/qGw5xqWdZIWxVD7xLyCukYUYd5xs/uGzYbXGOT5zOruVBQleKEmXIr4H2hzGCTn+M9Cg==", + "dev": true, + "dependencies": { + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.4.2", + "colors": "^1.4.0", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.6", + "lodash": "^4.17.19", + "log4js": "^6.2.1", + "mime": "^2.4.5", + "minimatch": "^3.0.4", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^3.1.0", + "source-map": "^0.6.1", + "tmp": "0.2.1", + "ua-parser-js": "^0.7.23", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "dev": true, + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.0.3.tgz", + "integrity": "sha512-atDvLQqvPcLxhED0cmXYdsPMCQuh6Asa9FMZW1bhNqlVEhJoB9qyZ2BY1gu7D/rr5GLGb5QzYO4siQskxaWP/g==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.1", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.0", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/karma-jasmine": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", + "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", + "dev": true, + "dependencies": { + "jasmine-core": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz", + "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", + "dev": true + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "dependencies": { + "source-map-support": "^0.5.5" + } + }, + "node_modules/karma/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/karma/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/karma/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/karma/node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/karma/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/karma/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/karma/node_modules/y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/karma/node_modules/yargs-parser": { + "version": "20.2.6", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz", + "integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/less": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz", + "integrity": "sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "mime": "^1.4.1", + "parse-node-version": "^1.0.1", + "tslib": "^1.10.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "needle": "^2.5.2", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", + "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/less-loader/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/less/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/license-webpack-plugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.11.tgz", + "integrity": "sha512-0iVGoX5vx0WDy8dmwTTpOOMYiGqILyUbDeVMFH52AjgBlS58lHwOlFMSoqg5nY8Kxl6+FRKyUZY/UdlQaOyqDw==", + "dev": true, + "dependencies": { + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + } + }, + "node_modules/license-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/license-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log4js": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", + "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "dev": true, + "dependencies": { + "date-format": "^3.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.1", + "rfdc": "^1.1.4", + "streamroller": "^2.2.4" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/loglevel": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lzbase62": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lzbase62/-/lzbase62-2.0.0.tgz", + "integrity": "sha512-hq7ZI8T42YVgSxCFHzg/Gt3GUKGZdQXKejvubdLjzxjiF5Tn9xKoWvZLZSY1u0+Orct+bxQMmb8XIcbXzR+2tg==", + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/make-fetch-happen": { + "version": "8.0.14", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", + "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.0.5", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^5.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/make-fetch-happen/node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/merge-source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "dev": true, + "dependencies": { + "mime-db": "1.46.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.5.tgz", + "integrity": "sha512-tvmzcwqJJXau4OQE5vT72pRT18o2zF+tQJp8CWchqvfQnTlflkzS+dANYcRdyPRWUWRkfmeNTKltx0NZI/b5dQ==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "webpack-sources": "^1.1.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.3.3.tgz", + "integrity": "sha512-akCrLDWfbdAWkMLBxJEeWTdNsjML+dt5YgOI4gJ53vuO0vrmYQkUPxa6j6V65s9CcePIr2SSWqjT2EcrNseryQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "dependencies": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "node_modules/move-concurrently/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/move-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/msgpack-lite": { + "version": "0.1.26", + "resolved": "https://registry.npmjs.org/msgpack-lite/-/msgpack-lite-0.1.26.tgz", + "integrity": "sha1-3TxQsm8FnyXn7e42REGDWOKprYk=", + "dependencies": { + "event-lite": "^0.1.1", + "ieee754": "^1.1.8", + "int64-buffer": "^0.1.9", + "isarray": "^1.0.0" + }, + "bin": { + "msgpack": "bin/msgpack" + } + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/needle": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", + "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/node-gyp": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/node-libs-browser/node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/node-libs-browser/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/node-libs-browser/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/node-libs-browser/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/node-releases": { + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "dev": true + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "node_modules/npm-package-arg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.0.tgz", + "integrity": "sha512-/ep6QDxBkm9HvOhOg0heitSd7JHA1U7y1qhhlRlteYYAi9Pdb/ZV7FW5aHpkrpM8+P+4p/jjR8zCyKPBMBjSig==", + "dev": true, + "dependencies": { + "hosted-git-info": "^3.0.6", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-packlist": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.1.4.tgz", + "integrity": "sha512-Qzg2pvXC9U4I4fLnUrBmcIT4x0woLtUgxUi9eC+Zrcv1Xx5eamytGAfbDWQ67j7xOcQ2VW1I3su9smVTIdu7Hw==", + "dev": true, + "dependencies": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-pick-manifest": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz", + "integrity": "sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw==", + "dev": true, + "dependencies": { + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.0.0", + "semver": "^7.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", + "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", + "dev": true, + "dependencies": { + "@npmcli/ci-detect": "^1.0.0", + "lru-cache": "^6.0.0", + "make-fetch-happen": "^8.0.9", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/open": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.0.tgz", + "integrity": "sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/opn/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "dependencies": { + "url-parse": "^1.4.3" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "dependencies": { + "retry": "^0.12.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pacote": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.2.4.tgz", + "integrity": "sha512-GfTeVQGJ6WyBQbQD4t3ocHbyOmTQLmWjkCKSZPmKiGFKYKNUaM5U2gbLzUW8WG1XmS9yQFnsTFA0k3o1+q4klQ==", + "dev": true, + "dependencies": { + "@npmcli/git": "^2.0.1", + "@npmcli/installed-package-contents": "^1.0.5", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.3.0", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^9.0.0", + "promise-retry": "^1.1.1", + "read-package-json-fast": "^1.1.3", + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.1.0" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pako": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.3.tgz", + "integrity": "sha512-WjR1hOeg+kki3ZIOjaf4b5WVcay1jaliKSYiEaB1XzwhMQZJxRdQRv0V31EKBYlxb4T7SK3hjfc/jxyU64BoSw==" + }, + "node_modules/parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "dependencies": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/parallel-transform/node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/parallel-transform/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/parallel-transform/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module/node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parse5-html-rewriting-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", + "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1", + "parse5-sax-parser": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-sax-parser": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", + "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dev": true, + "dependencies": { + "ts-pnp": "^1.1.6" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.4.tgz", + "integrity": "sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg==", + "dev": true, + "dependencies": { + "colorette": "^1.2.1", + "nanoid": "^3.1.20", + "source-map": "^0.6.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/postcss-calc/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-calc/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-calc/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-colormin/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-colormin/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-colormin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-colormin/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-convert-values/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-convert-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-convert-values/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-convert-values/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-comments/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-discard-comments/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-discard-comments/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-empty/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-discard-empty/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-discard-empty/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-overridden/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-discard-overridden/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-discard-overridden/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-import": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.0.tgz", + "integrity": "sha512-gFDDzXhqr9ELmnLHgCC3TbGfA6Dm/YMb/UN8/f7Uuq4fL7VTk2vOIj6hwINEwbokEmp123bLD7a5m+E+KIetRg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/postcss-loader": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.2.0.tgz", + "integrity": "sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/postcss-loader/node_modules/cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-loader/node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-loader/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-loader/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-loader/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "dependencies": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-longhand/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-merge-longhand/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-merge-longhand/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-merge-rules/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-font-values/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-minify-font-values/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-minify-font-values/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-gradients/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-minify-gradients/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-minify-gradients/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-params/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-minify-params/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-minify-params/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-minify-selectors/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-charset/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-charset/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-charset/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-display-values/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-positions/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-positions/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-positions/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-repeat-style/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "dependencies": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-string/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-string/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-string/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-timing-functions/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-unicode/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "dependencies": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-url/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-url/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-url/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-whitespace/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-ordered-values/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-ordered-values/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-ordered-values/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-initial/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-reduce-initial/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-reduce-initial/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-reduce-transforms/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "dependencies": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-svgo/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-svgo/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-svgo/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-svgo/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-unique-selectors/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-unique-selectors/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-unique-selectors/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "node_modules/postcss/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "node_modules/promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "dependencies": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/promise-retry/node_modules/err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, + "node_modules/promise-retry/node_modules/retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/protractor": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", + "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", + "dev": true, + "dependencies": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.1.7", + "yargs": "^15.3.1" + }, + "bin": { + "protractor": "bin/protractor", + "webdriver-manager": "bin/webdriver-manager" + }, + "engines": { + "node": ">=10.13.x" + } + }, + "node_modules/protractor/node_modules/@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "node_modules/protractor/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/protractor/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/protractor/node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/protractor/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/protractor/node_modules/del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "dependencies": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/protractor/node_modules/is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "dependencies": { + "is-path-inside": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "dependencies": { + "path-is-inside": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/protractor/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/protractor/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/protractor/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "dependencies": { + "source-map": "^0.5.6" + } + }, + "node_modules/protractor/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/protractor/node_modules/webdriver-manager": { + "version": "12.1.8", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz", + "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==", + "dev": true, + "dependencies": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + }, + "bin": { + "webdriver-manager": "bin/webdriver-manager" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/protractor/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "dependencies": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/puka": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/puka/-/puka-1.0.1.tgz", + "integrity": "sha512-ssjRZxBd7BT3dte1RR3VoeT2cT/ODH8x+h0rUF1rMqB0srHYf48stSDWfiYakTp5UBZMxroZhB2+ExLDHm7W3g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true, + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", + "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/raw-loader/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-1.2.2.tgz", + "integrity": "sha512-39DbPJjkltEzfXJXB6D8/Ir3GFOU2YbSKa2HaB/Y3nKrc/zY+0XrALpID6/13ezWyzqvOHrBbR4t4cjQuTdBVQ==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", + "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "node_modules/resolve-url-loader": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz", + "integrity": "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "3.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.21", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/resolve-url-loader/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/resolve-url-loader/node_modules/emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-url-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/resolve-url-loader/node_modules/postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-url-loader/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "dev": true, + "dependencies": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + } + }, + "node_modules/rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=", + "dev": true + }, + "node_modules/rework/node_modules/convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", + "dev": true + }, + "node_modules/rework/node_modules/css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "node_modules/rework/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rework/node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/rfdc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.2.0.tgz", + "integrity": "sha512-ijLyszTMmUrXvjSooucVQwimGUk84eRcmCuLV8Xghe3UO85mjUtRAHRyoMM6XtyqbECaXuBWx18La3523sXINA==", + "dev": true + }, + "node_modules/rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "node_modules/rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rollup": { + "version": "2.38.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.38.4.tgz", + "integrity": "sha512-B0LcJhjiwKkTl79aGVF/u5KdzsH8IylVfV56Ut6c9ouWLJcUK17T83aZBetNYSnZtXf2OHD4+2PbmRW+Fp5ulg==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "dependencies": { + "aproba": "^1.1.1" + } + }, + "node_modules/rxjs": { + "version": "6.6.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", + "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sass": { + "version": "1.32.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.6.tgz", + "integrity": "sha512-1bcDHDcSqeFtMr0JXI3xc/CXX6c4p0wHHivJdru8W7waM7a1WjKMm4m/Z5sY7CbVw4Whi2Chpcw6DFfSWwGLzQ==", + "dev": true, + "dependencies": { + "chokidar": ">=2.0.0 <4.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/sass-loader": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz", + "integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/sass-loader/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "dev": true, + "dependencies": { + "https-proxy-agent": "^2.2.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/saucelabs/node_modules/agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/saucelabs/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/saucelabs/node_modules/https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "dev": true, + "dependencies": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "engines": { + "node": ">= 6.9.0" + } + }, + "node_modules/selenium-webdriver/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/selenium-webdriver/node_modules/tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.1" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/selfsigned": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "dev": true, + "dependencies": { + "node-forge": "^0.10.0" + } + }, + "node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "dependencies": { + "semver": "^5.3.0" + } + }, + "node_modules/semver-dsl/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-intersect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "dev": true, + "dependencies": { + "semver": "^5.0.0" + } + }, + "node_modules/semver-intersect/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/socket.io": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", + "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.8", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.1", + "engine.io": "~4.1.0", + "socket.io-adapter": "~2.1.0", + "socket.io-parser": "~4.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", + "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", + "dev": true + }, + "node_modules/socket.io-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "dev": true, + "dependencies": { + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sockjs-client": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", + "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.4.7" + } + }, + "node_modules/sockjs-client/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/socks": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.5.1.tgz", + "integrity": "sha512-oZCsJJxapULAYJaEYBSzMcz8m3jqgGrHaGhkmU/o/PQfFWYWxkAaA0UMGImb6s6tEXfKi959X6VJjMMQ3P6TTQ==", + "dev": true, + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz", + "integrity": "sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4", + "socks": "^2.3.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-loader": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.3.tgz", + "integrity": "sha512-6YHeF+XzDOrT/ycFJNI53cgEsp/tHTMl37hi7uVyqFAlTXW109JazaQCkbc+jjoL2637qkH1amLi+JzrIpt5lA==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.2", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "source-map": "^0.6.1", + "whatwg-mimetype": "^2.3.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/source-map-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/spdy-transport/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/spdy-transport/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/speed-measure-webpack-plugin": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.4.2.tgz", + "integrity": "sha512-AtVzD0bnIy2/B0fWqJpJgmhcrfWFhBlduzSo0uwplr/QvB33ZNZj2NEth3NONgdnZJqicK0W0mSxnLSbsVCDbw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/speed-measure-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/speed-measure-webpack-plugin/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/speed-measure-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/speed-measure-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/speed-measure-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/speed-measure-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-http/node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-http/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "node_modules/streamroller": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", + "dev": true, + "dependencies": { + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/streamroller/node_modules/date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/streamroller/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "node_modules/string-width": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.1.tgz", + "integrity": "sha512-LL0OLyN6AnfV9xqGQpDBwedT2Rt63737LxvsRxbcwpa2aIeynBApG2Sm//F3TaLHIR1aJBN52DWklc06b94o5Q==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/style-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", + "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/style-loader/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/stylehacks/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/stylehacks/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylehacks/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stylehacks/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stylus": { + "version": "0.54.8", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", + "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", + "dev": true, + "dependencies": { + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.6", + "mkdirp": "~1.0.4", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.3.0", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + } + }, + "node_modules/stylus-loader": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-4.3.3.tgz", + "integrity": "sha512-PpWB5PnCXUzW4WMYhCvNzAHJBjIBPMXwsdfkkKuA9W7k8OQFMl/19/AQvaWsxz2IptxUlCseyJ6TY/eEKJ4+UQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.4", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "normalize-path": "^3.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/stylus-loader/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/stylus/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/stylus/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/stylus/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/svgo/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/svgo/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/svgo/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/symbol-observable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-3.0.0.tgz", + "integrity": "sha512-6tDOXSHiVjuCaasQSWTmHUWn4PuG7qa3+1WT031yTc/swT7+rLiw3GOrFxaH1E3lLP09dH3bVuVDf2gK5rxG3Q==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/terser": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", + "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", + "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", + "dev": true, + "dependencies": { + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.5.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.3.4", + "webpack-sources": "^1.4.3" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2/node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-node": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz", + "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==", + "dev": true, + "dependencies": { + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.6", + "yn": "^3.0.0" + }, + "bin": { + "ts-node": "dist/bin.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + }, + "node_modules/tslint": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + } + }, + "node_modules/tslint/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/tslint/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/tslint/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/tslint/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/tslint/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "node_modules/type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "node_modules/typescript": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.7.tgz", + "integrity": "sha512-yi7M4y74SWvYbnazbn8/bmJmX4Zlej39ZOqwG/8dut/MYoSQ119GY9ZFbbGsD4PFZYWxqik/XsP3vk3+W5H3og==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.24", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.24.tgz", + "integrity": "sha512-yo+miGzQx5gakzVK3QFfN0/L9uVhosXBBO7qmnk7c2iw1IhL212wfA3zbnI54B0obGwC/5NWub/iT9sReMx+Fw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "node_modules/uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/universal-analytics": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.23.tgz", + "integrity": "sha512-lgMIH7XBI6OgYn1woDEmxhGdj8yDefMKg7GkWdeATAlQZFrMrNyxSkpDzY57iY0/6fdlzTbBV03OawvvzG+q7A==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "request": "^2.88.2", + "uuid": "^3.0.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", + "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "node_modules/util.promisify/node_modules/es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/vkbeautify": { + "version": "0.99.3", + "resolved": "https://registry.npmjs.org/vkbeautify/-/vkbeautify-0.99.3.tgz", + "integrity": "sha512-2ozZEFfmVvQcHWoHLNuiKlUfDKlhh4KGsy54U0UrlLMR1SO+XKAIDqBxtBwHgNrekurlJwE8A9K6L49T78ZQ9Q==" + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "dependencies": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "optional": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/watchpack-chokidar2/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webdriver-js-extender": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", + "dev": true, + "dependencies": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/webpack": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", + "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "dependencies": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/webpack-dev-server": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", + "dev": true, + "dependencies": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 6.11.5" + } + }, + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/webpack-dev-server/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/webpack-dev-server/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-server/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack-dev-server/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "dependencies": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-log/node_modules/ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-merge": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-sources/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-subresource-integrity": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.2.tgz", + "integrity": "sha512-GBWYBoyalbo5YClwWop9qe6Zclp8CIXYGIz12OPclJhIrSplDxs1Ls1JDMH8xBPPrg1T6ISaTW9Y6zOrwEiAzw==", + "dev": true, + "dependencies": { + "webpack-sources": "^1.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-subresource-integrity/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-subresource-integrity/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/webpack/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/webpack/node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack/node_modules/enhanced-resolve/node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/webpack/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/webpack/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/webpack/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/webpack/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/webpack/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/webpack/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/webpack/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/webpack/node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + } + }, + "node_modules/webpack/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/wide-align/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "dependencies": { + "errno": "~0.1.7" + } + }, + "node_modules/worker-plugin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-5.0.0.tgz", + "integrity": "sha512-AXMUstURCxDD6yGam2r4E34aJg6kW85IiaeX72hi+I1cxyaMUtrvVY6sbfpGKAj5e7f68Acl62BjQF5aOOx2IQ==", + "dev": true, + "dependencies": { + "loader-utils": "^1.1.0" + } + }, + "node_modules/worker-plugin/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/worker-plugin/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/yargs/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/zone.js": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==" + } + }, "dependencies": { "@angular-devkit/architect": { "version": "0.1102.2", @@ -2644,9 +20274,13 @@ "dev": true }, "bcdice": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-1.4.0.tgz", - "integrity": "sha512-4mJaAxbrP5iofgXNAd5bmZwbDJ5Mydzdq66PlwlpR/agXI49jcrbDHK8KdbJZmSogEoiTkqo9VhrcRrawXY2xA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.0.0.tgz", + "integrity": "sha512-OLMp8yXRLbmq/M1DA1IFxt+uu5NdfImzKzp9ehChF4qV/z8kPqGUIhj1KFAcT6RrnVmh2a5YJViiQKVzvbKOnQ==", + "requires": { + "lodash": "^4.17.20", + "source-map-support": "^0.5.19" + } }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -2989,8 +20623,7 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "buffer-indexof": { "version": "1.1.1", @@ -7562,8 +25195,7 @@ "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash.memoize": { "version": "4.1.2", @@ -12259,7 +29891,6 @@ "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -12268,8 +29899,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -12575,6 +30205,11 @@ } } }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "string-width": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.1.tgz", @@ -12606,11 +30241,6 @@ "define-properties": "^1.1.3" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", diff --git a/package.json b/package.json index b2e3c73d7..fe0d2c07a 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@angular/platform-browser": "^11.2.3", "@angular/platform-browser-dynamic": "^11.2.3", "@angular/router": "^11.2.3", - "bcdice": "^1.4.0", + "bcdice": "^3.0.0", "crypto-js": "^3.3.0", "file-saver": "^2.0.5", "hammerjs": "^2.0.8", diff --git a/src/app/class/dice-bot.ts b/src/app/class/dice-bot.ts index 1738b4259..d93143a27 100644 --- a/src/app/class/dice-bot.ts +++ b/src/app/class/dice-bot.ts @@ -1,4 +1,5 @@ -import BCDice, { Info } from 'bcdice'; +import Loader from 'bcdice/lib/loader/loader'; +import { GameSystemInfo } from 'bcdice/lib/bcdice/game_system_list.json'; import { ChatMessage, ChatMessageContext } from './chat-message'; import { ChatTab } from './chat-tab'; @@ -14,12 +15,35 @@ interface DiceRollResult { isSecret: boolean; } +// bcdice-js custom loader class +class WebpackLoader extends Loader { + async dynamicImport(className: string): Promise { + await import( + /* webpackChunkName: "[request]" */ + /* webpackInclude: /\.js$/ */ + `bcdice/lib/bcdice/game_system/${className}` + ); + } +} + @SyncObject('dice-bot') export class DiceBot extends GameObject { - private static loadedDiceBots: { [gameType: string]: boolean } = {}; + private static loader: WebpackLoader = new WebpackLoader(); private static queue: PromiseQueue = new PromiseQueue('DiceBotQueue'); - public static diceBotInfos: Info[] = BCDice.infoList; + static diceBotInfos: GameSystemInfo[] = DiceBot.loader.listAvailableGameSystems().sort( + (a, b) => { + let aKey: string = a.sortKey; + let bKey: string = b.sortKey; + if (aKey < bKey) { + return -1; + } + if (aKey > bKey) { + return 1; + } + return 0 + } + ); // GameObject Lifecycle onStoreAdded() { @@ -36,17 +60,15 @@ export class DiceBot extends GameObject { let regArray = /^((\d+)?\s+)?([^\s]*)?/ig.exec(text); let repeat: number = (regArray[2] != null) ? Number(regArray[2]) : 1; let rollText: string = (regArray[3] != null) ? regArray[3] : text; - - let finalResult: DiceRollResult = { result: '', isSecret: false }; - for (let i = 0; i < repeat && i < 32; i++) { - let rollResult = await DiceBot.diceRollAsync(rollText, gameType); - if (rollResult.result.length < 1) break; - - finalResult.result += rollResult.result; - finalResult.isSecret = finalResult.isSecret || rollResult.isSecret; - if (1 < repeat) finalResult.result += ` #${i + 1}`; + if (!rollText || repeat < 1) return; + // 繰り返しコマンドに変換 + if (repeat > 1) { + rollText = `x${repeat} ${rollText}` } - this.sendResultMessage(finalResult, chatMessage); + + let rollResult = await DiceBot.diceRollAsync(rollText, gameType); + if (!rollResult.result) return; + this.sendResultMessage(rollResult, chatMessage); } catch (e) { console.error(e); } @@ -91,62 +113,32 @@ export class DiceBot extends GameObject { } static diceRollAsync(message: string, gameType: string): Promise { - DiceBot.queue.add(DiceBot.loadDiceBotAsync(gameType)); - return DiceBot.queue.add(() => { + return DiceBot.queue.add((async () => { try { - const bcdice = new BCDice(); - const result = bcdice.roll(message, gameType); - console.log('diceRoll!!!', result); - console.log('isSecret!!!', bcdice.cgiDiceBot.isSecret); - return { result: result[0], isSecret: bcdice.cgiDiceBot.isSecret }; + const bcdice = await DiceBot.loader.dynamicLoad(gameType); + const result = bcdice.eval(message); + if (result) { + console.log('diceRoll!!!', result.text); + console.log('isSecret!!!', result.secret); + return { result: result.text, isSecret: result.secret }; + } } catch (e) { console.error(e); } return { result: '', isSecret: false }; - }); + })()); } static getHelpMessage(gameType: string): Promise { - DiceBot.queue.add(DiceBot.loadDiceBotAsync(gameType)); - return DiceBot.queue.add(() => { + return DiceBot.queue.add((async () => { let help = ''; try { - const dicebotInfo = BCDice.infoList.find( - (info) => info.gameType === gameType - ); - if (dicebotInfo) { - help = dicebotInfo.info; - } + const bcdice = await DiceBot.loader.dynamicLoad(gameType); + help = bcdice.HELP_MESSAGE; } catch (e) { console.error(e); } return help; - }); - } - - static loadDiceBotAsync(gameType: string): Promise { - return new Promise((resolve, reject) => { - console.log('loadDiceBotAsync'); - - if ((!gameType && gameType.length < 1) || DiceBot.loadedDiceBots[gameType]) { - console.log(gameType + ' is loaded'); - resolve(); - return; - } - - if (!BCDice.infoList.some((info) => info.gameType === gameType)) { - console.warn(gameType + ' is unsupported'); - DiceBot.loadedDiceBots[gameType] = true; - resolve(); - return; - } - - DiceBot.loadedDiceBots[gameType] = false; - - import(`bcdice/lib/diceBot/${gameType}`).then(() => { - DiceBot.loadedDiceBots[gameType] = true; - resolve(); - }); - }); + })()); } } diff --git a/src/app/component/chat-input/chat-input.component.html b/src/app/component/chat-input/chat-input.component.html index d58c9193c..c35922e2c 100644 --- a/src/app/component/chat-input/chat-input.component.html +++ b/src/app/component/chat-input/chat-input.component.html @@ -17,7 +17,7 @@ diff --git a/src/app/component/chat-input/chat-input.component.ts b/src/app/component/chat-input/chat-input.component.ts index 16685f36d..d763d4952 100644 --- a/src/app/component/chat-input/chat-input.component.ts +++ b/src/app/component/chat-input/chat-input.component.ts @@ -205,8 +205,8 @@ export class ChatInputComponent implements OnInit, OnDestroy { let gameName: string = 'ダイスボット'; for (let diceBotInfo of DiceBot.diceBotInfos) { - if (diceBotInfo.gameType === this.gameType) { - gameName = 'ダイスボット<' + diceBotInfo.gameName + '>' + if (diceBotInfo.id === this.gameType) { + gameName = 'ダイスボット<' + diceBotInfo.name + '>' } } gameName += 'の説明'; From 141443f552e86971bc5ee080a5386c1587f7439e Mon Sep 17 00:00:00 2001 From: entyu Date: Sat, 27 Feb 2021 23:39:02 +0900 Subject: [PATCH 023/161] =?UTF-8?q?=E7=A9=BA=E7=99=BD=E3=81=82=E3=82=8A?= =?UTF-8?q?=E3=82=B3=E3=83=9E=E3=83=B3=E3=83=89=E3=81=B8=E3=81=AE=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C=20blhsrwznrghfzpr=E3=81=95=E3=82=93=E6=8C=87=E6=91=98?= =?UTF-8?q?=E3=81=AB=E3=82=88=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/dice-bot.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/class/dice-bot.ts b/src/app/class/dice-bot.ts index d93143a27..385f0589c 100644 --- a/src/app/class/dice-bot.ts +++ b/src/app/class/dice-bot.ts @@ -57,7 +57,7 @@ export class DiceBot extends GameObject { let gameType: string = chatMessage.tag; try { - let regArray = /^((\d+)?\s+)?([^\s]*)?/ig.exec(text); + let regArray = /^((\d+)?\s+)?(.*)?/ig.exec(text); let repeat: number = (regArray[2] != null) ? Number(regArray[2]) : 1; let rollText: string = (regArray[3] != null) ? regArray[3] : text; if (!rollText || repeat < 1) return; From 5ad9af0f7abdf3ede56e6c6e175d5b3db29a56c2 Mon Sep 17 00:00:00 2001 From: blhsrwznrghfzpr Date: Tue, 9 Mar 2021 09:37:10 +0900 Subject: [PATCH 024/161] =?UTF-8?q?docs:=20=E3=83=80=E3=82=A4=E3=82=B9?= =?UTF-8?q?=E3=83=9C=E3=83=83=E3=83=88=E3=81=AE=E8=AA=AC=E6=98=8E=E3=82=92?= =?UTF-8?q?BCDice=203.0.0=E3=81=AB=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/component/chat-input/chat-input.component.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/app/component/chat-input/chat-input.component.ts b/src/app/component/chat-input/chat-input.component.ts index d763d4952..b99bd0411 100644 --- a/src/app/component/chat-input/chat-input.component.ts +++ b/src/app/component/chat-input/chat-input.component.ts @@ -227,14 +227,16 @@ export class ChatInputComponent implements OnInit, OnDestroy { + ' 3U6[5] :3d6のダイス目が5以上の場合に振り足しして合計する(上方無限)\n' + ' 3B6 :3d6のダイス目をバラバラのまま出力する(合計しない)\n' + ' 10B6>=4 :10d6を振り4以上のダイス目の個数を数える\n' + + ' 2R6[>3]>=5 :2D6のダイス目が3より大きい場合に振り足して、5以上のダイス目の個数を数える\n' + ' (8/2)D(4+6)<=(5*3):個数・ダイス・達成値には四則演算も使用可能\n' - + ' C(10-4*3/2+2):C(計算式)で計算だけの実行も可能\n' + + ' c(10-4*3/2+2):c(計算式)で計算だけの実行も可能\n' + ' choice[a,b,c]:列挙した要素から一つを選択表示。ランダム攻撃対象決定などに\n' + ' S3d6 : 各コマンドの先頭に「S」を付けると他人結果の見えないシークレットロール\n' - + ' 3d6/2 : ダイス出目を割り算(切り捨て)。切り上げは /2U、四捨五入は /2R。\n' - + ' 4D6KH3 : 大きな出目から3個取った後の和。大きな出目を取る KH、小さな出目を取る KL。\n' - + ' 2D20DL1+1 : 小さな出目から1個除いた後の和+1。大きな出目を除く DH、小さな出目を除く DL。\n' - + ' D66 : D66ダイス。順序はゲームに依存。D66N:そのまま、D66S:昇順。\n' + + ' 3d6/2 : ダイス出目を割り算(端数処理はゲームシステム依存)。切り上げは /2C、四捨五入は /2R、切り捨ては /2F\n' + + ' D66 : D66ダイス。順序はゲームに依存。D66N:そのまま、D66A:昇順、D66D:降順\n' + + '\n' + + '詳細は下記URLのコマンドガイドを参照\n' + + 'https://docs.bcdice.org/\n' + '===================================\n' + this.gameHelp; }); From cc14043a1c08759a96af331bcd74333288434848 Mon Sep 17 00:00:00 2001 From: blhsrwznrghfzpr Date: Tue, 9 Mar 2021 19:05:10 +0900 Subject: [PATCH 025/161] =?UTF-8?q?bug:=20bcdice-js=20=E5=B0=8E=E5=85=A5?= =?UTF-8?q?=E5=89=8D=E3=81=A8=E3=83=AD=E3=83=BC=E3=83=AB=E7=B5=90=E6=9E=9C?= =?UTF-8?q?=E3=81=AE=E6=9B=B8=E5=BC=8F=E3=82=92=E6=8F=83=E3=81=88=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/dice-bot.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/app/class/dice-bot.ts b/src/app/class/dice-bot.ts index 385f0589c..bce3c891c 100644 --- a/src/app/class/dice-bot.ts +++ b/src/app/class/dice-bot.ts @@ -120,7 +120,10 @@ export class DiceBot extends GameObject { if (result) { console.log('diceRoll!!!', result.text); console.log('isSecret!!!', result.secret); - return { result: result.text, isSecret: result.secret }; + return { + result: `${gameType} : ${result.text}`, + isSecret: result.secret, + }; } } catch (e) { console.error(e); From dc378f62514199bdacd76bcef7822501e73f177b Mon Sep 17 00:00:00 2001 From: Hideyo Mikisato Date: Sat, 20 Mar 2021 21:21:22 +0900 Subject: [PATCH 026/161] =?UTF-8?q?bcdice-js=E3=81=AE=E5=8F=82=E7=85=A7?= =?UTF-8?q?=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3=E3=82=923.1.0?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4=E3=80=81=E3=81=93=E3=82=8C=E3=81=AB?= =?UTF-8?q?=E3=82=88=E3=82=8A=E5=B7=A8=E5=A4=A7=E3=83=81=E3=83=A3=E3=83=B3?= =?UTF-8?q?=E3=82=AF=E3=81=AE=E5=95=8F=E9=A1=8C=E3=81=AF=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index a57bf573d..8f0467b33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@angular/platform-browser": "^11.2.3", "@angular/platform-browser-dynamic": "^11.2.3", "@angular/router": "^11.2.3", - "bcdice": "^3.0.0", + "bcdice": "^3.1.0", "crypto-js": "^3.3.0", "file-saver": "^2.0.5", "hammerjs": "^2.0.8", @@ -2956,9 +2956,9 @@ "dev": true }, "node_modules/bcdice": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.0.0.tgz", - "integrity": "sha512-OLMp8yXRLbmq/M1DA1IFxt+uu5NdfImzKzp9ehChF4qV/z8kPqGUIhj1KFAcT6RrnVmh2a5YJViiQKVzvbKOnQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.1.0.tgz", + "integrity": "sha512-YrkUozMnsMjOfMAEJSh2c9pqSL6poN9qmxN/rC7JuYMlfd/0dbHGU4LNuaeYBn3gRGSxNmi701UKhqqfBPXtsw==", "dependencies": { "lodash": "^4.17.20", "source-map-support": "^0.5.19" @@ -20274,9 +20274,9 @@ "dev": true }, "bcdice": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.0.0.tgz", - "integrity": "sha512-OLMp8yXRLbmq/M1DA1IFxt+uu5NdfImzKzp9ehChF4qV/z8kPqGUIhj1KFAcT6RrnVmh2a5YJViiQKVzvbKOnQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.1.0.tgz", + "integrity": "sha512-YrkUozMnsMjOfMAEJSh2c9pqSL6poN9qmxN/rC7JuYMlfd/0dbHGU4LNuaeYBn3gRGSxNmi701UKhqqfBPXtsw==", "requires": { "lodash": "^4.17.20", "source-map-support": "^0.5.19" diff --git a/package.json b/package.json index fe0d2c07a..fc8cc243a 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@angular/platform-browser": "^11.2.3", "@angular/platform-browser-dynamic": "^11.2.3", "@angular/router": "^11.2.3", - "bcdice": "^3.0.0", + "bcdice": "^3.1.0", "crypto-js": "^3.3.0", "file-saver": "^2.0.5", "hammerjs": "^2.0.8", From 06bea3f2667b97188342798e0acb3141e678214c Mon Sep 17 00:00:00 2001 From: Hideyo Mikisato Date: Thu, 1 Apr 2021 01:48:31 +0900 Subject: [PATCH 027/161] =?UTF-8?q?3.1.1=E3=81=AB=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f0467b33..b252a1e47 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2956,9 +2956,9 @@ "dev": true }, "node_modules/bcdice": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.1.0.tgz", - "integrity": "sha512-YrkUozMnsMjOfMAEJSh2c9pqSL6poN9qmxN/rC7JuYMlfd/0dbHGU4LNuaeYBn3gRGSxNmi701UKhqqfBPXtsw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.1.1.tgz", + "integrity": "sha512-yfb2+Toijav7T1aEggUjxFAqqiKQRSJf9WFcevkgl2I5dFMh6nP45ArgK3z9iZmD3o9GLFWvMbQHi+pbmawwUQ==", "dependencies": { "lodash": "^4.17.20", "source-map-support": "^0.5.19" @@ -20274,9 +20274,9 @@ "dev": true }, "bcdice": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.1.0.tgz", - "integrity": "sha512-YrkUozMnsMjOfMAEJSh2c9pqSL6poN9qmxN/rC7JuYMlfd/0dbHGU4LNuaeYBn3gRGSxNmi701UKhqqfBPXtsw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.1.1.tgz", + "integrity": "sha512-yfb2+Toijav7T1aEggUjxFAqqiKQRSJf9WFcevkgl2I5dFMh6nP45ArgK3z9iZmD3o9GLFWvMbQHi+pbmawwUQ==", "requires": { "lodash": "^4.17.20", "source-map-support": "^0.5.19" From 8196b9afc35159c69f285281b025b9a890f3faaa Mon Sep 17 00:00:00 2001 From: blhsrwznrghfzpr Date: Sat, 3 Apr 2021 19:09:00 +0900 Subject: [PATCH 028/161] =?UTF-8?q?feat:=20=E3=83=80=E3=82=A4=E3=82=B9?= =?UTF-8?q?=E3=83=9C=E3=83=83=E3=83=88=E3=83=AA=E3=82=B9=E3=83=88=E3=81=AB?= =?UTF-8?q?=E7=84=A1=E3=81=84=E5=A0=B4=E5=90=88=E3=81=AFDiceBot=E3=82=92?= =?UTF-8?q?=E8=AA=AD=E3=81=BF=E8=BE=BC=E3=82=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/dice-bot.ts | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/app/class/dice-bot.ts b/src/app/class/dice-bot.ts index bce3c891c..016953498 100644 --- a/src/app/class/dice-bot.ts +++ b/src/app/class/dice-bot.ts @@ -1,4 +1,5 @@ import Loader from 'bcdice/lib/loader/loader'; +import GameSystemClass from 'bcdice/lib/game_system'; import { GameSystemInfo } from 'bcdice/lib/bcdice/game_system_list.json'; import { ChatMessage, ChatMessageContext } from './chat-message'; @@ -115,7 +116,7 @@ export class DiceBot extends GameObject { static diceRollAsync(message: string, gameType: string): Promise { return DiceBot.queue.add((async () => { try { - const bcdice = await DiceBot.loader.dynamicLoad(gameType); + const bcdice = await DiceBot.loadGameSystemAsync(gameType); const result = bcdice.eval(message); if (result) { console.log('diceRoll!!!', result.text); @@ -133,15 +134,23 @@ export class DiceBot extends GameObject { } static getHelpMessage(gameType: string): Promise { - return DiceBot.queue.add((async () => { + return DiceBot.queue.add(async (resolve, reject) => { let help = ''; try { - const bcdice = await DiceBot.loader.dynamicLoad(gameType); - help = bcdice.HELP_MESSAGE; + const gameSystem = await DiceBot.loadGameSystemAsync(gameType); + help = gameSystem.HELP_MESSAGE; } catch (e) { console.error(e); } - return help; - })()); + resolve(help); + return; + }); + } + + static loadGameSystemAsync(gameType: string): Promise { + const id = this.diceBotInfos.some((info) => info.id === gameType) + ? gameType + : 'DiceBot'; + return DiceBot.loader.dynamicLoad(id); } } From 6353311573e398f6bcf64a1033170eb8d470ea3d Mon Sep 17 00:00:00 2001 From: blhsrwznrghfzpr Date: Sat, 3 Apr 2021 19:20:19 +0900 Subject: [PATCH 029/161] =?UTF-8?q?fix:=20=E3=82=B3=E3=83=9E=E3=83=B3?= =?UTF-8?q?=E3=83=89=E3=81=98=E3=82=83=E3=81=AA=E3=81=84=E5=A0=B4=E5=90=88?= =?UTF-8?q?=E3=81=AFbcdice=E3=81=AB=E5=87=A6=E7=90=86=E3=82=92=E6=8A=95?= =?UTF-8?q?=E3=81=92=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `数字 コマンドではないテキスト` が繰り返しコマンドとして処理されてしまうのを抑制する --- src/app/class/dice-bot.ts | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/app/class/dice-bot.ts b/src/app/class/dice-bot.ts index 016953498..d97f698e8 100644 --- a/src/app/class/dice-bot.ts +++ b/src/app/class/dice-bot.ts @@ -61,13 +61,14 @@ export class DiceBot extends GameObject { let regArray = /^((\d+)?\s+)?(.*)?/ig.exec(text); let repeat: number = (regArray[2] != null) ? Number(regArray[2]) : 1; let rollText: string = (regArray[3] != null) ? regArray[3] : text; - if (!rollText || repeat < 1) return; + const gameSystem = await DiceBot.loadGameSystemAsync(gameType); + if (!rollText || repeat < 1 || !gameSystem.COMMAND_PATTERN.test(rollText)) return; // 繰り返しコマンドに変換 if (repeat > 1) { rollText = `x${repeat} ${rollText}` } - let rollResult = await DiceBot.diceRollAsync(rollText, gameType); + let rollResult = await DiceBot.diceRollAsync(rollText, gameSystem); if (!rollResult.result) return; this.sendResultMessage(rollResult, chatMessage); } catch (e) { @@ -113,24 +114,32 @@ export class DiceBot extends GameObject { if (chatTab) chatTab.addMessage(diceBotMessage); } - static diceRollAsync(message: string, gameType: string): Promise { - return DiceBot.queue.add((async () => { + static diceRollAsync(message: string, gameType: string): Promise + static diceRollAsync(message: string, gameSystem: GameSystemClass): Promise + static diceRollAsync(message: string, arg: any): Promise { + return DiceBot.queue.add(async (resolve, reject) => { try { - const bcdice = await DiceBot.loadGameSystemAsync(gameType); - const result = bcdice.eval(message); + let gameSystem: GameSystemClass; + if (typeof arg === 'string') { + gameSystem = await DiceBot.loadGameSystemAsync(arg); + } else { + gameSystem = arg; + } + const result = gameSystem.eval(message); if (result) { console.log('diceRoll!!!', result.text); console.log('isSecret!!!', result.secret); - return { - result: `${gameType} : ${result.text}`, + resolve({ + result: `${gameSystem.ID} : ${result.text}`, isSecret: result.secret, - }; + }); + return; } } catch (e) { console.error(e); } - return { result: '', isSecret: false }; - })()); + resolve({ result: '', isSecret: false }); + }); } static getHelpMessage(gameType: string): Promise { From 46823fe66aa5d36d7e6e1d9f4da353ee231d891f Mon Sep 17 00:00:00 2001 From: Hideyo Mikisato Date: Sat, 17 Apr 2021 11:59:46 +0900 Subject: [PATCH 030/161] =?UTF-8?q?bcdice-js=20v3.1.2=E3=81=AB=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=EF=BC=88=E3=82=BB=E3=82=AD=E3=83=A5=E3=83=AA=E3=83=86?= =?UTF-8?q?=E3=82=A3=E5=AF=BE=E5=BF=9C=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index b252a1e47..d420afb1c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@angular/platform-browser": "^11.2.3", "@angular/platform-browser-dynamic": "^11.2.3", "@angular/router": "^11.2.3", - "bcdice": "^3.1.0", + "bcdice": "^3.1.2", "crypto-js": "^3.3.0", "file-saver": "^2.0.5", "hammerjs": "^2.0.8", @@ -2956,9 +2956,9 @@ "dev": true }, "node_modules/bcdice": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.1.1.tgz", - "integrity": "sha512-yfb2+Toijav7T1aEggUjxFAqqiKQRSJf9WFcevkgl2I5dFMh6nP45ArgK3z9iZmD3o9GLFWvMbQHi+pbmawwUQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.1.2.tgz", + "integrity": "sha512-UwCKf60MfAzUxIWb3cuc3ZMqVhBzDO8aFMjM58TKDK8ZzsvhnN+RLN0F5UFGlviblQ0fwpuwSSCLIA7hI+LQRw==", "dependencies": { "lodash": "^4.17.20", "source-map-support": "^0.5.19" @@ -20274,9 +20274,9 @@ "dev": true }, "bcdice": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.1.1.tgz", - "integrity": "sha512-yfb2+Toijav7T1aEggUjxFAqqiKQRSJf9WFcevkgl2I5dFMh6nP45ArgK3z9iZmD3o9GLFWvMbQHi+pbmawwUQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.1.2.tgz", + "integrity": "sha512-UwCKf60MfAzUxIWb3cuc3ZMqVhBzDO8aFMjM58TKDK8ZzsvhnN+RLN0F5UFGlviblQ0fwpuwSSCLIA7hI+LQRw==", "requires": { "lodash": "^4.17.20", "source-map-support": "^0.5.19" diff --git a/package.json b/package.json index fc8cc243a..d72e88a38 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@angular/platform-browser": "^11.2.3", "@angular/platform-browser-dynamic": "^11.2.3", "@angular/router": "^11.2.3", - "bcdice": "^3.1.0", + "bcdice": "^3.1.2", "crypto-js": "^3.3.0", "file-saver": "^2.0.5", "hammerjs": "^2.0.8", From 71f9eb8da0efb87bd81802893f954d461b5b8ca2 Mon Sep 17 00:00:00 2001 From: blhsrwznrghfzpr Date: Sat, 24 Apr 2021 23:15:45 +0900 Subject: [PATCH 031/161] =?UTF-8?q?fix:=20diceRollAsync=20=E3=81=AE?= =?UTF-8?q?=E5=BC=95=E6=95=B0=E3=81=AE=E5=9E=8B=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/dice-bot.ts | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/app/class/dice-bot.ts b/src/app/class/dice-bot.ts index d97f698e8..790614bc2 100644 --- a/src/app/class/dice-bot.ts +++ b/src/app/class/dice-bot.ts @@ -114,31 +114,22 @@ export class DiceBot extends GameObject { if (chatTab) chatTab.addMessage(diceBotMessage); } - static diceRollAsync(message: string, gameType: string): Promise - static diceRollAsync(message: string, gameSystem: GameSystemClass): Promise - static diceRollAsync(message: string, arg: any): Promise { - return DiceBot.queue.add(async (resolve, reject) => { + static diceRollAsync(message: string, gameSystem: GameSystemClass): Promise { + return DiceBot.queue.add(() => { try { - let gameSystem: GameSystemClass; - if (typeof arg === 'string') { - gameSystem = await DiceBot.loadGameSystemAsync(arg); - } else { - gameSystem = arg; - } const result = gameSystem.eval(message); if (result) { console.log('diceRoll!!!', result.text); console.log('isSecret!!!', result.secret); - resolve({ + return { result: `${gameSystem.ID} : ${result.text}`, isSecret: result.secret, - }); - return; + }; } } catch (e) { console.error(e); } - resolve({ result: '', isSecret: false }); + return { result: '', isSecret: false }; }); } From e561cb13e612c453f2bf85b697b8ea18b04d613c Mon Sep 17 00:00:00 2001 From: TK11235 Date: Wed, 12 May 2021 22:54:24 +0900 Subject: [PATCH 032/161] =?UTF-8?q?refactor:=20=E5=86=97=E9=95=B7=E3=81=AA?= =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=82=92=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/file-storage/image-file.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/app/class/core/file-storage/image-file.ts b/src/app/class/core/file-storage/image-file.ts index 079f39a90..3a8ae4979 100644 --- a/src/app/class/core/file-storage/image-file.ts +++ b/src/app/class/core/file-storage/image-file.ts @@ -158,17 +158,16 @@ export class ImageFile { private static createThumbnailAsync(context: ImageContext): Promise { return new Promise((resolve, reject) => { - let canvas: HTMLCanvasElement = document.createElement('canvas'); - let render: CanvasRenderingContext2D = canvas.getContext('2d'); let image: HTMLImageElement = new Image(); image.onload = (event) => { - let scale: number = 128 / (image.width < image.height ? image.height : image.width); - scale = scale < 1 ? scale : 1.0; - var dstWidth = image.width * scale; - var dstHeight = image.height * scale; - canvas.width = image.width;//dstWidth; - canvas.height = image.height;//dstHeight; - //render.drawImage(image, 0, 0, image.width, image.height, 0, 0, dstWidth, dstHeight); + let scale: number = Math.min(128 / Math.max(image.width, image.height), 1.0); + let dstWidth = image.width * scale; + let dstHeight = image.height * scale; + + let canvas: HTMLCanvasElement = document.createElement('canvas'); + let render: CanvasRenderingContext2D = canvas.getContext('2d'); + canvas.width = image.width; + canvas.height = image.height; render.drawImage(image, 0, 0); CanvasUtil.resize(canvas, dstWidth, dstHeight, true); From 3861d832d38ddd1913c6771298cd1ecc6c1158f8 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 13 May 2021 01:08:52 +0900 Subject: [PATCH 033/161] =?UTF-8?q?build:=20angular=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 3274 +++++++++++++++++---------------------------- package.json | 24 +- 2 files changed, 1229 insertions(+), 2069 deletions(-) diff --git a/package-lock.json b/package-lock.json index 192f055b6..4639d22bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,12 +5,12 @@ "requires": true, "dependencies": { "@angular-devkit/architect": { - "version": "0.1102.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.2.tgz", - "integrity": "sha512-FE7DeT13elqDlELF23QqvEFnT2BkxeC5t31/QW85IN/OR5Tf/q7XEpj7giJXyzKFQ60M3ZzbznZyRz0EqtfaBQ==", + "version": "0.1102.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.12.tgz", + "integrity": "sha512-6qnI3NXpHzSlNG6jSLNdQazx7SILSpE3YD9l9n0tjHF3yeFnzPuVVWbQSjI9Us5EQi86lVGT3mTJbivRRRUYUQ==", "dev": true, "requires": { - "@angular-devkit/core": "11.2.2", + "@angular-devkit/core": "11.2.12", "rxjs": "6.6.3" }, "dependencies": { @@ -32,15 +32,15 @@ } }, "@angular-devkit/build-angular": { - "version": "0.1102.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1102.2.tgz", - "integrity": "sha512-AjnvHrzkYTzDGzp0r5RmGoP9fyZXtaVFo0598PRusi1oWp1sW6B5FKPWw896iREOlotRXw3dsjqrGwbMcz0qyg==", + "version": "0.1102.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1102.12.tgz", + "integrity": "sha512-mX8UqIR+Ev6p37zXLtZghdCNta3Pi5bG6o0PCXUGcDRY63kp2jiWH0RgvoBjJBlAt358tIO9GEkR8kuqZt8x4w==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1102.2", - "@angular-devkit/build-optimizer": "0.1102.2", - "@angular-devkit/build-webpack": "0.1102.2", - "@angular-devkit/core": "11.2.2", + "@angular-devkit/architect": "0.1102.12", + "@angular-devkit/build-optimizer": "0.1102.12", + "@angular-devkit/build-webpack": "0.1102.12", + "@angular-devkit/core": "11.2.12", "@babel/core": "7.12.10", "@babel/generator": "7.12.11", "@babel/plugin-transform-async-to-generator": "7.12.1", @@ -48,8 +48,9 @@ "@babel/preset-env": "7.12.11", "@babel/runtime": "7.12.5", "@babel/template": "7.12.7", + "@discoveryjs/json-ext": "0.5.2", "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@ngtools/webpack": "11.2.2", + "@ngtools/webpack": "11.2.12", "ansi-colors": "4.1.1", "autoprefixer": "10.2.4", "babel-loader": "8.2.2", @@ -61,7 +62,7 @@ "core-js": "3.8.3", "critters": "0.0.7", "css-loader": "5.0.1", - "cssnano": "4.1.10", + "cssnano": "5.0.1", "file-loader": "6.2.0", "find-cache-dir": "3.3.1", "glob": "7.1.6", @@ -79,7 +80,7 @@ "ora": "5.3.0", "parse5-html-rewriting-stream": "6.0.1", "pnp-webpack-plugin": "1.6.4", - "postcss": "8.2.4", + "postcss": "8.2.13", "postcss-import": "14.0.0", "postcss-loader": "4.2.0", "raw-loader": "4.0.2", @@ -135,34 +136,34 @@ } }, "@angular-devkit/build-optimizer": { - "version": "0.1102.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1102.2.tgz", - "integrity": "sha512-TCWWqAe+pWZzLp/g2gG8Z5NC8JSgDNfyEuMBWxEUfo1Sm3BluXoz0BbmnietuhXJZ+fPAp9rLLzEGZlHvOlmOA==", + "version": "0.1102.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1102.12.tgz", + "integrity": "sha512-4aQ4t7iDagrsNrF5JDS3bZw+uIn4z0llyau7GQQwZm1OmpRcl33hXOIHSFUJoRPP6pI5liNVuffF3lrAoC6sZA==", "dev": true, "requires": { "loader-utils": "2.0.0", "source-map": "0.7.3", "tslib": "2.1.0", - "typescript": "4.1.3", + "typescript": "4.1.5", "webpack-sources": "2.2.0" }, "dependencies": { "typescript": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", - "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz", + "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==", "dev": true } } }, "@angular-devkit/build-webpack": { - "version": "0.1102.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1102.2.tgz", - "integrity": "sha512-59CBbwbdN8lI5/whuNeAZHRJxPlOmDc5ux8aJJNwWI9w54fz0ut/MLT3iuPk+WZuKlGdpS1sGkObfZwWen5kIQ==", + "version": "0.1102.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1102.12.tgz", + "integrity": "sha512-AoqnveSLhkQznI3SBX7/uoOEs93EOi8/u1sdOU8QBicM53n/IcUPIjilwHL+CY8J0YKcxg4ESsN3LAFQCzYT6g==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1102.2", - "@angular-devkit/core": "11.2.2", + "@angular-devkit/architect": "0.1102.12", + "@angular-devkit/core": "11.2.12", "rxjs": "6.6.3" }, "dependencies": { @@ -184,9 +185,9 @@ } }, "@angular-devkit/core": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.2.tgz", - "integrity": "sha512-LUDO1AdIjereiMh0j5p9xJcdr9ifhbWCPxlZqfu5wHzUfhCx9gO2Lvjp6rZXQ3OedXg5IZUnyxHlzkszQOsgiw==", + "version": "11.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.12.tgz", + "integrity": "sha512-VMRMmRj6ZX32cWpuA6vD4KSmji17yC4EtbXsiqrHZ8zAho4ifu8xImCC5PugTQnHa+RlIadOXwXX89aujUEwRw==", "dev": true, "requires": { "ajv": "6.12.6", @@ -214,12 +215,12 @@ } }, "@angular-devkit/schematics": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.2.2.tgz", - "integrity": "sha512-6bIxMwafz/+lwdtcshwOuFfhxTMU4RLma1uxBS34DXupMauPGl0IIXAy5cK9dXPlHLxuGsjeBiOM6eq033RLgw==", + "version": "11.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.2.12.tgz", + "integrity": "sha512-d1fxxkLPtP87iwAFZ0iUNWMlqULm05bbnRc5g5vrFxdtpwwybC15+NS64d3gzX0vAvnCa+cDQkjeD92bJJNjLw==", "dev": true, "requires": { - "@angular-devkit/core": "11.2.2", + "@angular-devkit/core": "11.2.12", "ora": "5.3.0", "rxjs": "6.6.3" }, @@ -242,24 +243,24 @@ } }, "@angular/animations": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-11.2.3.tgz", - "integrity": "sha512-Z6sHIeTeeZrRAW83NI7FO7THF50cPCFkkuvVah3qmCqopY6FuoHKUBEENyGzQGH69LbGFYhEppY8KM/6JtVF6Q==", + "version": "11.2.13", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-11.2.13.tgz", + "integrity": "sha512-+TcJbMmKZI4kbSLp7TCJzOYkm90qe54OLWcNH6bi2NC9S0QsXaPo73yRP8sERjg/DjRj+wBf3LY63FvHZmqcTA==", "requires": { "tslib": "^2.0.0" } }, "@angular/cli": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-11.2.2.tgz", - "integrity": "sha512-rOVBzDzrMuOgJY43O46/7yYbncx0egGfr+DMJDQdazePGH1H3INN/eA9gkVcVK53ztCYb9X1sbZKOs9TUhF6nw==", + "version": "11.2.12", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-11.2.12.tgz", + "integrity": "sha512-4VkHfHO4QuTkGFw5Tx7khZxsNHp60VKk8JzmPF6KIjkrDUVWVNwKOFOnJtbz9cXvayiUNNSEWqo9Oq3513zz4g==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1102.2", - "@angular-devkit/core": "11.2.2", - "@angular-devkit/schematics": "11.2.2", - "@schematics/angular": "11.2.2", - "@schematics/update": "0.1102.2", + "@angular-devkit/architect": "0.1102.12", + "@angular-devkit/core": "11.2.12", + "@angular-devkit/schematics": "11.2.12", + "@schematics/angular": "11.2.12", + "@schematics/update": "0.1102.12", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.1", @@ -298,25 +299,25 @@ } }, "@angular/common": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-11.2.3.tgz", - "integrity": "sha512-51gVmr942SZtAFmhVfp7/3fcTQ+Tia7UxWjv6iUtYF3oCvTWbo/J1zki2VNSfmMNKJV8MaMq6XUw8UWbHA0sgQ==", + "version": "11.2.13", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-11.2.13.tgz", + "integrity": "sha512-96iZ4wlZado78yG6eY/ZmY6+H2X2hJi2XsK7iXKzc5h3oeILEkt+ulfBNkCNjMm8xPYBmLrSBueG96/T4/Bi5w==", "requires": { "tslib": "^2.0.0" } }, "@angular/compiler": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-11.2.3.tgz", - "integrity": "sha512-De8BwtSwPVYGdvQa6CDq2C1SLmB78YjS0t/KNlvfp85cl4Gb3BdjTDsKMkJXkm/3ubnIXi1BaRIsFNVTCCF70Q==", + "version": "11.2.13", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-11.2.13.tgz", + "integrity": "sha512-HI7gfVozFW/rQoab0zVyYpU8PRHNWMk+pLc+q3ukVuByCmnBZ6kTAEQX2jnXVY8QGMmdptBgrsW/OsFaws98Zw==", "requires": { "tslib": "^2.0.0" } }, "@angular/compiler-cli": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-11.2.3.tgz", - "integrity": "sha512-ObQVI6q2c0VTWbsDnWJDdUZv2Jz/u1jiQNcrdtu/rjtJARaldEno9dMakN838Q6Nw4FzKUO6uYZXmnvKCUjfxQ==", + "version": "11.2.13", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-11.2.13.tgz", + "integrity": "sha512-AaIip0gdeNTcXAhxsGAudybdmaSwQ0BoxsdPIZRb9jokHAP4pCKx9aFJFbvTHB99kbKV7zEmGMCbsoRkRhxnJw==", "dev": true, "requires": { "@babel/core": "^7.8.6", @@ -333,7 +334,7 @@ "source-map": "^0.6.1", "sourcemap-codec": "^1.4.8", "tslib": "^2.0.0", - "yargs": "^16.1.1" + "yargs": "^16.2.0" }, "dependencies": { "ansi-styles": { @@ -395,9 +396,9 @@ } }, "y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yargs": { @@ -416,55 +417,55 @@ } }, "yargs-parser": { - "version": "20.2.6", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz", - "integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==", + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", "dev": true } } }, "@angular/core": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-11.2.3.tgz", - "integrity": "sha512-+G7rZj21Mcmf6nWjQ79EwomwEOVQ1WLqw6YvCXWzgJ9ZlVjLi/Sti0/jIzUpgK0E0Fn86yuXw/vgYq5kjGeOcQ==", + "version": "11.2.13", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-11.2.13.tgz", + "integrity": "sha512-xMKskq/Sbf8dkX/vx4WCwXMpDTJJ77rGlP8fVTB8az8QeOa14i6AdpmSXaJ8sl68R3v8Y1Pa9yBQytbKuxShqQ==", "requires": { "tslib": "^2.0.0" } }, "@angular/forms": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-11.2.3.tgz", - "integrity": "sha512-VfyKV8IxHTclcHQmt5gjGFmKC1kGz7sdNLYsEM+M0y88Bsufh3VIhK4kspfO4nhJxVfh6HFOt1JVQ5bvo6PDlQ==", + "version": "11.2.13", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-11.2.13.tgz", + "integrity": "sha512-Q5vNHycS+II2xYOE/HJB4NoYg/Ngg6hPF+0KXdCA7L4kfrwx5Fsi4oZ6gRRnSpzSGedISpSU4VE5wPiq7zJ3+A==", "requires": { "tslib": "^2.0.0" } }, "@angular/language-service": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-11.2.3.tgz", - "integrity": "sha512-6PDInFDTQ2oP1mzD2W4fR5/pPFqbHRikXsNbIKnejeAxzcyoPQ9zxIKl7mmrS4N+8evtZUYLzR5AtHukvjYSpA==", + "version": "11.2.13", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-11.2.13.tgz", + "integrity": "sha512-nOqFJEsdmA0qHmINT0aLXrP5wjnDuOYCjLtBTv7qvvJX2mO3/9RK2uKZuMXyLPjBBQ20k7vPOAfs3vk+V05RKg==", "dev": true }, "@angular/platform-browser": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.2.3.tgz", - "integrity": "sha512-S0IP/kGinIH18+gfnX0gLFLbP0Euw1RBceDt/WipYhUeFZZryQHvot/6KFLFtO+8rVunfrg+UyBiaK65/TT9Og==", + "version": "11.2.13", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.2.13.tgz", + "integrity": "sha512-V70Pf3jJPbeXsiy9mtVMctVBIIoqiDhsoI+6lCehf/LaJR33oUizj+RS1wlpgOECIj9oD5EqzdvxEukR0PpnoQ==", "requires": { "tslib": "^2.0.0" } }, "@angular/platform-browser-dynamic": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.2.3.tgz", - "integrity": "sha512-QUPCvack7De6u5AqWcW8O6FzczwqoL858R1NlnqojnNbcnN/dCtXtKvvETEEgp/9VMwLfcuLd1BWdBJSah7f6A==", + "version": "11.2.13", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.2.13.tgz", + "integrity": "sha512-EHCG8fhnurhHUq+XKyKL3bYEcQThRYyzIJTJig28ulgvQd4TAKAbw8osL9rpjNUnCM1HjDXOqnCcPnsQIPIzMg==", "requires": { "tslib": "^2.0.0" } }, "@angular/router": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-11.2.3.tgz", - "integrity": "sha512-lRuEIlNj2BcBZ17mt5SZY7v80PsvlS4J6EbKSOFeSYhALM/AQnaaCdrrMlQ1WyEa5bBUabxGT9/zvahBosy2yA==", + "version": "11.2.13", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-11.2.13.tgz", + "integrity": "sha512-Fae/ViC4Ho2rGF5wQLrnJcucuhVGx29QqZs2K0C6sj4UUNRUzYWZknnGWqRj3Z9ft7XIi38Q2yCkSc76iS1aqQ==", "requires": { "tslib": "^2.0.0" } @@ -479,9 +480,9 @@ } }, "@babel/compat-data": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.8.tgz", - "integrity": "sha512-EaI33z19T4qN3xLXsGf48M2cDqa6ei9tPZlfLdb2HC+e/cFtREiRd8hdSqDbwdLB0/+gLwqJmCYASH0z2bUdog==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", + "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", "dev": true }, "@babel/core": { @@ -560,12 +561,12 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.8.tgz", - "integrity": "sha512-pBljUGC1y3xKLn1nrx2eAhurLMA8OqBtBP/JwG4U8skN7kf8/aqwwxpV1N6T0e7r6+7uNitIa/fUxPFagSXp3A==", + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", + "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", + "@babel/compat-data": "^7.13.15", "@babel/helper-validator-option": "^7.12.17", "browserslist": "^4.14.5", "semver": "^6.3.0" @@ -580,16 +581,56 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.8.tgz", - "integrity": "sha512-qioaRrKHQbn4hkRKDHbnuQ6kAxmmOF+kzKGnIfxPK4j2rckSJCpKzr/SSTlohSCiE3uAQpNDJ9FIh4baeE8W+w==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.1.tgz", + "integrity": "sha512-r8rsUahG4ywm0QpGcCrLaUSOuNAISR3IZCg4Fx05Ozq31aCUrQsTLH6KPxy0N5ULoQ4Sn9qjNdGNtbPWAC6hYg==", "dev": true, "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-member-expression-to-functions": "^7.13.12", "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.12", "@babel/helper-split-export-declaration": "^7.12.13" + }, + "dependencies": { + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "@babel/types": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", + "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-create-regexp-features-plugin": { @@ -645,13 +686,70 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz", + "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.16" + }, + "dependencies": { + "@babel/generator": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", + "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.1", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "@babel/parser": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", + "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", + "dev": true + }, + "@babel/traverse": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", + "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.14.0", + "@babel/types": "^7.14.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", + "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/helper-member-expression-to-functions": { @@ -846,9 +944,9 @@ "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", + "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.13.0", @@ -950,9 +1048,9 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz", - "integrity": "sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", + "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.13.0", @@ -1118,12 +1216,12 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz", + "integrity": "sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-classes": { @@ -1151,9 +1249,9 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.13.17", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", + "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.13.0" @@ -1226,26 +1324,272 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz", + "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-module-transforms": "^7.14.0", "@babel/helper-plugin-utils": "^7.13.0", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/generator": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", + "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.1", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", + "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "@babel/parser": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", + "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", + "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.14.0", + "@babel/types": "^7.14.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", + "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", + "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-module-transforms": "^7.14.0", "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-simple-access": "^7.13.12", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/generator": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", + "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.1", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", + "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "@babel/parser": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", + "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", + "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.14.0", + "@babel/types": "^7.14.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", + "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/plugin-transform-modules-systemjs": { @@ -1262,13 +1606,136 @@ } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", + "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-module-transforms": "^7.14.0", "@babel/helper-plugin-utils": "^7.13.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", + "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.1", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", + "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "@babel/parser": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", + "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", + "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.14.0", + "@babel/types": "^7.14.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", + "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/plugin-transform-named-capturing-groups-regex": { @@ -1318,9 +1785,9 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", + "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" @@ -1581,6 +2048,12 @@ "to-fast-properties": "^2.0.0" } }, + "@discoveryjs/json-ext": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", + "dev": true + }, "@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -1601,12 +2074,12 @@ } }, "@ngtools/webpack": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.2.2.tgz", - "integrity": "sha512-X1M/Xs0kLi9FrOIU6yJ74q3pCzhgwPQowO1XjJ68KLOoMbj/DM6Qm0Hi9N0Ay8h0s7BIdjKEu/C3pCdGu1Q54w==", + "version": "11.2.12", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.2.12.tgz", + "integrity": "sha512-YgzgJ72oGLvYVQH1c+pqJQRO5OE8axPt8HwPdueL/1g3rEwJgbeUrnIqw/eri7iTgFZflQRcePAA7dIz2uHwcw==", "dev": true, "requires": { - "@angular-devkit/core": "11.2.2", + "@angular-devkit/core": "11.2.12", "enhanced-resolve": "5.7.0", "webpack-sources": "2.2.0" } @@ -1644,22 +2117,53 @@ "dev": true }, "@npmcli/git": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.0.6.tgz", - "integrity": "sha512-a1MnTfeRPBaKbFY07fd+6HugY1WAkKJzdiJvlRub/9o5xz2F/JtPacZZapx5zRJUQFIzSL677vmTSxEcDMrDbg==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.0.9.tgz", + "integrity": "sha512-hTMbMryvOqGLwnmMBKs5usbPsJtyEsMsgXwJbmNrsEuQQh1LAIMDU77IoOrwkCg+NgQWl+ySlarJASwM3SutCA==", "dev": true, "requires": { - "@npmcli/promise-spawn": "^1.1.0", + "@npmcli/promise-spawn": "^1.3.2", "lru-cache": "^6.0.0", - "mkdirp": "^1.0.3", - "npm-pick-manifest": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", - "semver": "^7.3.2", - "unique-filename": "^1.1.1", + "semver": "^7.3.5", "which": "^2.0.2" }, "dependencies": { + "hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "npm-package-arg": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.2.tgz", + "integrity": "sha512-6Eem455JsSMJY6Kpd3EyWE+n5hC+g9bSyHr9K9U2zqZb7+02+hObQ2c0+8iDk/mNF+8r1MhY44WypKJAkySIYA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-pick-manifest": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", + "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", + "dev": true, + "requires": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, "promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", @@ -1670,6 +2174,15 @@ "retry": "^0.12.0" } }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -1717,16 +2230,15 @@ } }, "@npmcli/run-script": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.3.tgz", - "integrity": "sha512-ELPGWAVU/xyU+A+H3pEPj0QOvYwLTX71RArXcClFzeiyJ/b/McsZ+d0QxpznvfFtZzxGN/gz/1cvlqICR4/suQ==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.5.tgz", + "integrity": "sha512-NQspusBCpTjNwNRFMtz2C5MxoxyzlbuJ4YEhxAKrIonTiirKDtatsZictx9RgamQIx6+QuHMNmPl0wQdoESs9A==", "dev": true, "requires": { "@npmcli/node-gyp": "^1.0.2", "@npmcli/promise-spawn": "^1.3.2", "infer-owner": "^1.0.4", "node-gyp": "^7.1.0", - "puka": "^1.0.1", "read-package-json-fast": "^2.0.1" }, "dependencies": { @@ -1743,24 +2255,24 @@ } }, "@schematics/angular": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-11.2.2.tgz", - "integrity": "sha512-TcxPy58adUnkirGXyZVVSMuKkA0eIz2PWSQWEgB9l7kO+5LvDOn+RMoc6AVx0s/bU9nH+eozBUJ1XAD/E8QnYQ==", + "version": "11.2.12", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-11.2.12.tgz", + "integrity": "sha512-QCFdJhJtHrytl2L9VAdKYzSS1+R5LpjQ+pw3f/10YeEEoUHk7QyuYXmMnreCYBWSKrloO+3Q+vhdnVWUQZSRng==", "dev": true, "requires": { - "@angular-devkit/core": "11.2.2", - "@angular-devkit/schematics": "11.2.2", + "@angular-devkit/core": "11.2.12", + "@angular-devkit/schematics": "11.2.12", "jsonc-parser": "3.0.0" } }, "@schematics/update": { - "version": "0.1102.2", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1102.2.tgz", - "integrity": "sha512-Nz8kjeixzDnOw00bnZznq3qrbIv8yWEWNb9eDkRBqgOUXQwlhKJY/sYBK58JF2D+conaRVuEqMsBlX08GlFtIA==", + "version": "0.1102.12", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1102.12.tgz", + "integrity": "sha512-3Gm/0izWhfHqXCKENkVVqFJVkJN4+mebevSlXqlQjwLMwJNY5Yt3FMyDSxYx6s2d9MC2stODOjwjsLhd6SdafQ==", "dev": true, "requires": { - "@angular-devkit/core": "11.2.2", - "@angular-devkit/schematics": "11.2.2", + "@angular-devkit/core": "11.2.12", + "@angular-devkit/schematics": "11.2.12", "@yarnpkg/lockfile": "1.1.0", "ini": "2.0.0", "npm-package-arg": "^8.0.0", @@ -1775,6 +2287,12 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, + "@trysound/sax": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.1.1.tgz", + "integrity": "sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow==", + "dev": true + }, "@types/component-emitter": { "version": "1.2.10", "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", @@ -1858,9 +2376,9 @@ } }, "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", "dev": true }, "@types/msgpack-lite": { @@ -1890,12 +2408,6 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, - "@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", - "dev": true - }, "@types/selenium-webdriver": { "version": "3.0.17", "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", @@ -2237,12 +2749,12 @@ "dev": true }, "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "requires": { - "type-fest": "^0.11.0" + "type-fest": "^0.21.3" } }, "ansi-html": { @@ -2920,16 +3432,16 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^1.1.71" } }, "browserstack": { @@ -3075,28 +3587,10 @@ "get-intrinsic": "^1.0.2" } }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { @@ -3118,9 +3612,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001192", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001192.tgz", - "integrity": "sha512-63OrUnwJj5T1rUmoyqYTdRWBqFFxZFlyZnRRjDR8NSUQFB6A+j/uBORU/SyJ5WzDLg4SPiZH40hQCBNdZ/jmAw==", + "version": "1.0.30001228", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", + "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", "dev": true }, "canonical-path": { @@ -3175,21 +3669,10 @@ "dev": true }, "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true }, "cipher-base": { "version": "1.0.4", @@ -3246,9 +3729,9 @@ } }, "cli-spinners": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", - "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", + "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", "dev": true }, "cli-width": { @@ -3325,17 +3808,6 @@ "shallow-clone": "^3.0.0" } }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -3432,9 +3904,9 @@ "dev": true }, "color-string": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", - "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", "dev": true, "requires": { "color-name": "^1.0.0", @@ -3781,12 +4253,12 @@ "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=" }, "core-js-compat": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.0.tgz", - "integrity": "sha512-YK6fwFjCOKWwGnjFUR3c544YsnA/7DoLL0ysncuOJ4pwbriAtOpvM2bygdlcXbvQCQZ7bBU9CL4t7tGl7ETRpQ==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.12.1.tgz", + "integrity": "sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ==", "dev": true, "requires": { - "browserslist": "^4.16.3", + "browserslist": "^4.16.6", "semver": "7.0.0" }, "dependencies": { @@ -3814,36 +4286,16 @@ } }, "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", "dev": true, "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" } }, "create-ecdh": { @@ -3914,9 +4366,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -4020,47 +4472,18 @@ } }, "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", + "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", "dev": true }, "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.0.0.tgz", + "integrity": "sha512-S0TE4E0ha5+tBHdLWPc5n+S8E4dFBS5xScPvgHkLNZwWvX4ISoFGhGeerLC9uS1cKA/sC+K2wHq6qEbcagT/fg==", "dev": true, "requires": { - "postcss": "^7.0.1", "timsort": "^0.3.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "css-loader": { @@ -4139,23 +4562,18 @@ } }, "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-3.1.2.tgz", + "integrity": "sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" + "css-what": "^4.0.0", + "domhandler": "^4.0.0", + "domutils": "^2.4.3", + "nth-check": "^2.0.0" } }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, "css-selector-tokenizer": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", @@ -4167,12 +4585,12 @@ } }, "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dev": true, "requires": { - "mdn-data": "2.0.4", + "mdn-data": "2.0.14", "source-map": "^0.6.1" }, "dependencies": { @@ -4185,9 +4603,9 @@ } }, "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-4.0.0.tgz", + "integrity": "sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==", "dev": true }, "cssauron": { @@ -4206,164 +4624,57 @@ "dev": true }, "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.1.tgz", + "integrity": "sha512-5WubEmKcK2cqw43DUAayRBiIlTdX7iX3ZowrWDVxSVcW3hyohVnbJ4K4mbnWtJp5rfJnUwHg5H4mDAGzmuCM3g==", "dev": true, "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "cosmiconfig": "^7.0.0", + "cssnano-preset-default": "^5.0.0", + "is-resolvable": "^1.1.0" } }, "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.0.1.tgz", + "integrity": "sha512-cfmfThYODGqhpQKDq9H0MTAqkMvZ3dGbOUTBKw0xWZiIycMqHid22LsJXJl4r1qX4qzDeKxcSyQ/Xb5Mu3Z//Q==", + "dev": true, + "requires": { + "css-declaration-sorter": "6.0.0", + "cssnano-utils": "^2.0.0", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.0.0", + "postcss-convert-values": "^5.0.0", + "postcss-discard-comments": "^5.0.0", + "postcss-discard-duplicates": "^5.0.0", + "postcss-discard-empty": "^5.0.0", + "postcss-discard-overridden": "^5.0.0", + "postcss-merge-longhand": "^5.0.1", + "postcss-merge-rules": "^5.0.0", + "postcss-minify-font-values": "^5.0.0", + "postcss-minify-gradients": "^5.0.0", + "postcss-minify-params": "^5.0.0", + "postcss-minify-selectors": "^5.0.0", + "postcss-normalize-charset": "^5.0.0", + "postcss-normalize-display-values": "^5.0.0", + "postcss-normalize-positions": "^5.0.0", + "postcss-normalize-repeat-style": "^5.0.0", + "postcss-normalize-string": "^5.0.0", + "postcss-normalize-timing-functions": "^5.0.0", + "postcss-normalize-unicode": "^5.0.0", + "postcss-normalize-url": "^5.0.0", + "postcss-normalize-whitespace": "^5.0.0", + "postcss-ordered-values": "^5.0.0", + "postcss-reduce-initial": "^5.0.0", + "postcss-reduce-transforms": "^5.0.0", + "postcss-svgo": "^5.0.0", + "postcss-unique-selectors": "^5.0.0" + } + }, + "cssnano-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.0.tgz", + "integrity": "sha512-xvxmTszdrvSyTACdPe8VU5J6p4sm3egpgw54dILvNqt5eBUv6TFjACLhSxtRuEsxYrgy8uDy269YjScO5aKbGA==", "dev": true }, "csso": { @@ -4373,30 +4684,6 @@ "dev": true, "requires": { "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", - "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "custom-event": { @@ -4649,9 +4936,9 @@ "dev": true }, "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz", + "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==", "dev": true }, "di": { @@ -4732,21 +5019,14 @@ } }, "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.1.tgz", + "integrity": "sha512-Pv2ZluG5ife96udGgEDovOOOA5UELkltfJpnIExPrAk1LTvecolUGn6lIaoLh86d83GiB86CjzciMd9BuRB71Q==", "dev": true, "requires": { "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", - "dev": true - } } }, "domain-browser": { @@ -4756,19 +5036,29 @@ "dev": true }, "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "dev": true }, + "domhandler": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz", + "integrity": "sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" } }, "dot-prop": { @@ -4809,9 +5099,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.675", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.675.tgz", - "integrity": "sha512-GEQw+6dNWjueXGkGfjgm7dAMtXfEqrfDG3uWcZdeaD4cZ3dKYdPRQVruVXQRXtPLtOr5GNVVlNLRMChOZ611pQ==", + "version": "1.3.727", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz", + "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg==", "dev": true }, "elliptic": { @@ -4947,9 +5237,9 @@ "dev": true }, "env-paths": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", - "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true }, "err-code": { @@ -4976,39 +5266,6 @@ "is-arrayish": "^0.2.1" } }, - "es-abstract": { - "version": "1.18.0-next.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", - "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.1", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.3", - "string.prototype.trimstart": "^1.0.3" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "es5-ext": { "version": "0.10.53", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", @@ -5144,15 +5401,15 @@ "dev": true }, "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", "dev": true, "requires": { "original": "^1.0.0" @@ -5310,9 +5567,9 @@ }, "dependencies": { "type": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.3.0.tgz", - "integrity": "sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", "dev": true } } @@ -5876,9 +6133,9 @@ "dev": true }, "globby": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -6117,12 +6374,6 @@ "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", "dev": true }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", - "dev": true - }, "html-entities": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", @@ -6382,9 +6633,9 @@ "dev": true }, "ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", "dev": true, "requires": { "minimatch": "^3.0.4" @@ -6403,13 +6654,13 @@ "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, "import-local": { @@ -6543,9 +6794,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -6618,9 +6869,9 @@ "dev": true }, "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", "dev": true }, "is-accessor-descriptor": { @@ -6673,12 +6924,6 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true - }, "is-color-stop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", @@ -6691,6 +6936,14 @@ "hsla-regex": "^1.0.0", "rgb-regex": "^1.0.1", "rgba-regex": "^1.0.0" + }, + "dependencies": { + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + } } }, "is-core-module": { @@ -6723,9 +6976,9 @@ } }, "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", "dev": true }, "is-descriptor": { @@ -6747,16 +7000,10 @@ } } }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, "is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true }, "is-extendable": { @@ -6798,12 +7045,6 @@ "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", "dev": true }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -6850,13 +7091,13 @@ } }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" } }, "is-resolvable": { @@ -6871,30 +7112,18 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, "is-what": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", @@ -7573,12 +7802,13 @@ "dev": true }, "log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "requires": { - "chalk": "^4.0.0" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "dependencies": { "ansi-styles": { @@ -7591,9 +7821,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -7759,9 +7989,9 @@ } }, "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, "media-typer": { @@ -7822,13 +8052,21 @@ "dev": true }, "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "requires": { "braces": "^3.0.1", - "picomatch": "^2.0.5" + "picomatch": "^2.2.3" + }, + "dependencies": { + "picomatch": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", + "dev": true + } } }, "miller-rabin": { @@ -8139,9 +8377,9 @@ "dev": true }, "nanoid": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", - "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", "dev": true }, "nanomatch": { @@ -8373,15 +8611,15 @@ "dev": true }, "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", "dev": true }, "npm-bundled": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, "requires": { "npm-normalize-package-bin": "^1.0.1" @@ -8414,9 +8652,9 @@ } }, "npm-packlist": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.1.4.tgz", - "integrity": "sha512-Qzg2pvXC9U4I4fLnUrBmcIT4x0woLtUgxUi9eC+Zrcv1Xx5eamytGAfbDWQ67j7xOcQ2VW1I3su9smVTIdu7Hw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", + "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", "dev": true, "requires": { "glob": "^7.1.6", @@ -8474,12 +8712,12 @@ } }, "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", "dev": true, "requires": { - "boolbase": "~1.0.0" + "boolbase": "^1.0.0" } }, "number-is-nan": { @@ -8531,12 +8769,6 @@ } } }, - "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true - }, "object-is": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", @@ -8574,17 +8806,6 @@ "object-keys": "^1.1.1" } }, - "object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - } - }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -8594,18 +8815,6 @@ "isobject": "^3.0.1" } }, - "object.values": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", - "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" - } - }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -8698,9 +8907,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -8890,14 +9099,6 @@ "dev": true, "requires": { "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - } } }, "parse-asn1": { @@ -8914,13 +9115,15 @@ } }, "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { + "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" } }, "parse-node-version": { @@ -9030,9 +9233,9 @@ "dev": true }, "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -9131,13 +9334,13 @@ "dev": true }, "postcss": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.4.tgz", - "integrity": "sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg==", + "version": "8.2.13", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.13.tgz", + "integrity": "sha512-FCE5xLH+hjbzRdpbRb1IMCvPv9yZx2QnDarBEYSN0N0HYk+TcXsEhwdFcFb+SRWOKzKGErhIEbBK2ogyLdTtfQ==", "dev": true, "requires": { - "colorette": "^1.2.1", - "nanoid": "^3.1.20", + "colorette": "^1.2.2", + "nanoid": "^3.1.22", "source-map": "^0.6.1" }, "dependencies": { @@ -9150,432 +9353,163 @@ } }, "postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", "dev": true, "requires": { - "postcss": "^7.0.27", "postcss-selector-parser": "^6.0.2", "postcss-value-parser": "^4.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.0.0.tgz", + "integrity": "sha512-Yt84+5V6CgS/AhK7d7MA58vG8dSZ7+ytlRtWLaQhag3HXOncTfmYpuUOX4cDoXjvLfw1sHRCHMiBjYhc35CymQ==", "dev": true, "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "browserslist": "^4.16.0", + "color": "^3.1.1", + "postcss-value-parser": "^4.1.0" } }, "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.0.tgz", + "integrity": "sha512-V5kmYm4xoBAjNs+eHY/6XzXJkkGeg4kwNf2ocfqhLb1WBPEa4oaSmoi1fnVO7Dkblqvus9h+AenDvhCKUCK7uQ==", "dev": true, "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "postcss-value-parser": "^4.1.0" } }, "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.0.tgz", + "integrity": "sha512-Umig6Gxs8m20RihiXY6QkePd6mp4FxkA1Dg+f/Kd6uw0gEMfKRjDeQOyFkLibexbJJGHpE3lrN/Q0R9SMrUMbQ==", + "dev": true + }, + "postcss-discard-duplicates": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.0.tgz", + "integrity": "sha512-vEJJ+Y3pFUnO1FyCBA6PSisGjHtnphL3V6GsNvkASq/VkP3OX5/No5RYXXLxHa2QegStNzg6HYrYdo71uR4caQ==", + "dev": true + }, + "postcss-discard-empty": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.0.tgz", + "integrity": "sha512-+wigy099Y1xZxG36WG5L1f2zeH1oicntkJEW4TDIqKKDO2g9XVB3OhoiHTu08rDEjLnbcab4rw0BAccwi2VjiQ==", + "dev": true + }, + "postcss-discard-overridden": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.0.tgz", + "integrity": "sha512-hybnScTaZM2iEA6kzVQ6Spozy7kVdLw+lGw8hftLlBEzt93uzXoltkYp9u0tI8xbfhxDLTOOzHsHQCkYdmzRUg==", + "dev": true + }, + "postcss-import": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.0.tgz", + "integrity": "sha512-gFDDzXhqr9ELmnLHgCC3TbGfA6Dm/YMb/UN8/f7Uuq4fL7VTk2vOIj6hwINEwbokEmp123bLD7a5m+E+KIetRg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-loader": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.2.0.tgz", + "integrity": "sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==", "dev": true, "requires": { - "postcss": "^7.0.0" + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.4" }, "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } } } }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "postcss-merge-longhand": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.1.tgz", + "integrity": "sha512-H1RO8le5deFGumQzuhJjuL0bIXPRysa+w7xtk5KrHe38oiaSS9ksPXDo24+IOS3SETPhip0J5+1uCOW+ALs3Yw==", "dev": true, "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.0" } }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "postcss-merge-rules": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.0.tgz", + "integrity": "sha512-TfsXbKjNYCGfUPEXGIGPySnMiJbdS+3gcVeV8gwmJP4RajyKZHW8E0FYDL1WmggTj3hi+m+WUCAvqRpX2ut4Kg==", "dev": true, "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.0", + "postcss-selector-parser": "^6.0.4", + "vendors": "^1.0.3" } }, - "postcss-import": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.0.tgz", - "integrity": "sha512-gFDDzXhqr9ELmnLHgCC3TbGfA6Dm/YMb/UN8/f7Uuq4fL7VTk2vOIj6hwINEwbokEmp123bLD7a5m+E+KIetRg==", + "postcss-minify-font-values": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.0.tgz", + "integrity": "sha512-zi2JhFaMOcIaNxhndX5uhsqSY1rexKDp23wV8EOmC9XERqzLbHsoRye3aYF716Zm+hkcR4loqKDt8LZlmihwAg==", "dev": true, "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" + "postcss-value-parser": "^4.1.0" } }, - "postcss-loader": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.2.0.tgz", - "integrity": "sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==", + "postcss-minify-gradients": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.0.tgz", + "integrity": "sha512-/jPtNgs6JySMwgsE5dPOq8a2xEopWTW3RyqoB9fLqxgR+mDUNLSi7joKd+N1z7FXWgVkc4l/dEBMXHgNAaUbvg==", "dev": true, "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.4" - }, - "dependencies": { - "cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } + "cssnano-utils": "^2.0.0", + "is-color-stop": "^1.1.0", + "postcss-value-parser": "^4.1.0" } }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "postcss-minify-params": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.0.tgz", + "integrity": "sha512-KvZYIxTPBVKjdd+XgObq9A+Sfv8lMkXTpbZTsjhr42XbfWIeLaTItMlygsDWfjArEc3muUfDaUFgNSeDiJ5jug==", "dev": true, "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.0", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" } }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "postcss-minify-selectors": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.0.0.tgz", + "integrity": "sha512-cEM0O0eWwFIvmo6nfB0lH0vO/XFwgqIvymODbfPXZ1gTA3i76FKnb7TGUrEpiTxaXH6tgYQ6DcTHwRiRS+YQLQ==", "dev": true, "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^3.1.2" }, "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -9586,228 +9520,24 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", "dev": true, "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" } }, "postcss-modules-scope": { @@ -9829,630 +9559,148 @@ } }, "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.0.tgz", + "integrity": "sha512-pqsCkgo9KmQP0ew6DqSA+uP9YN6EfsW20pQ3JU5JoQge09Z6Too4qU0TNDsTNWuEaP8SWsMp+19l15210MsDZQ==", + "dev": true }, "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.0.tgz", + "integrity": "sha512-t4f2d//gH1f7Ns0Jq3eNdnWuPT7TeLuISZ6RQx4j8gpl5XrhkdshdNcOnlrEK48YU6Tcb6jqK7dorME3N4oOGA==", "dev": true, "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "cssnano-utils": "^2.0.0", + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.0.tgz", + "integrity": "sha512-0o6/qU5ky74X/eWYj/tv4iiKCm3YqJnrhmVADpIMNXxzFZywsSQxl8F7cKs8jQEtF3VrJBgcDHTexZy1zgDoYg==", "dev": true, "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.0.tgz", + "integrity": "sha512-KRT14JbrXKcFMYuc4q7lh8lvv8u22wLyMrq+UpHKLtbx2H/LOjvWXYdoDxmNrrrJzomAWL+ViEXr48/IhSUJnQ==", "dev": true, "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "cssnano-utils": "^2.0.0", + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.0.tgz", + "integrity": "sha512-wSO4pf7GNcDZpmelREWYADF1+XZWrAcbFLQCOqoE92ZwYgaP/RLumkUTaamEzdT2YKRZAH8eLLKGWotU/7FNPw==", "dev": true, "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.0.tgz", + "integrity": "sha512-TwPaDX+wl9wO3MUm23lzGmOzGCGKnpk+rSDgzB2INpakD5dgWR3L6bJq1P1LQYzBAvz8fRIj2NWdnZdV4EV98Q==", "dev": true, "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "cssnano-utils": "^2.0.0", + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.0.tgz", + "integrity": "sha512-2CpVoz/67rXU5s9tsPZDxG1YGS9OFHwoY9gsLAzrURrCxTAb0H7Vp87/62LvVPgRWTa5ZmvgmqTp2rL8tlm72A==", "dev": true, "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.0.tgz", + "integrity": "sha512-ICDaGFBqLgA3dlrCIRuhblLl80D13YtgEV9NJPTYJtgR72vu61KgxAHv+z/lKMs1EbwfSQa3ALjOFLSmXiE34A==", "dev": true, "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "is-absolute-url": "^3.0.3", + "normalize-url": "^4.5.0", + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.0.tgz", + "integrity": "sha512-KRnxQvQAVkJfaeXSz7JlnD9nBN9sFZF9lrk9452Q2uRoqrRSkinqifF8Iex7wZGei2DZVG/qpmDFDmRvbNAOGA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-ordered-values": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.0.tgz", + "integrity": "sha512-dPr+SRObiHueCIc4IUaG0aOGQmYkuNu50wQvdXTGKy+rzi2mjmPsbeDsheLk5WPb9Zyf2tp8E+I+h40cnivm6g==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.0", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-reduce-initial": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.0.tgz", + "integrity": "sha512-wR6pXUaFbSMG1oCKx8pKVA+rnSXCHlca5jMrlmkmif+uig0HNUTV9oGN5kjKsM3mATQAldv2PF9Tbl2vqLFjnA==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" } }, "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.0.tgz", + "integrity": "sha512-iHdGODW4YzM3WjVecBhPQt6fpJC4lGQZxJKjkBNHpp2b8dzmvj0ogKThqya+IRodQEFzjfXgYeESkf172FH5Lw==", "dev": true, "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "cssnano-utils": "^2.0.0", + "postcss-value-parser": "^4.1.0" } }, "postcss-selector-parser": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", - "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", "dev": true, "requires": { "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1", "util-deprecate": "^1.0.2" } }, "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.0.tgz", + "integrity": "sha512-M3/VS4sFI1Yp9g0bPL+xzzCNz5iLdRUztoFaugMit5a8sMfkVzzhwqbsOlD8IFFymCdJDmXmh31waYHWw1K4BA==", "dev": true, "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "postcss-value-parser": "^4.1.0", + "svgo": "^2.3.0" } }, "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.0.tgz", + "integrity": "sha512-o9l4pF8SRn7aCMTmzb/kNv/kjV7wPZpZ8Nlb1Gq8v/Qvw969K1wanz1RVA0ehHzWe9+wHXaC2DvZlak/gdMJ5w==", "dev": true, "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.2", "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-value-parser": { @@ -10867,12 +10115,6 @@ } } }, - "puka": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/puka/-/puka-1.0.1.tgz", - "integrity": "sha512-ssjRZxBd7BT3dte1RR3VoeT2cT/ODH8x+h0rUF1rMqB0srHYf48stSDWfiYakTp5UBZMxroZhB2+ExLDHm7W3g==", - "dev": true - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -10912,12 +10154,6 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, "qjobs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", @@ -10949,9 +10185,9 @@ "dev": true }, "queue-microtask": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", - "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, "randombytes": { @@ -11154,9 +10390,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", - "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -11177,9 +10413,9 @@ "dev": true }, "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", "dev": true }, "repeat-string": { @@ -11259,12 +10495,20 @@ "dev": true, "requires": { "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } } }, "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "resolve-url": { @@ -11670,9 +10914,9 @@ } }, "selfsigned": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", - "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", "dev": true, "requires": { "node-forge": "^0.10.0" @@ -12141,9 +11385,9 @@ } }, "sockjs-client": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", - "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", "dev": true, "requires": { "debug": "^3.2.6", @@ -12151,7 +11395,7 @@ "faye-websocket": "^0.11.3", "inherits": "^2.0.4", "json3": "^3.3.3", - "url-parse": "^1.4.7" + "url-parse": "^1.5.1" }, "dependencies": { "debug": { @@ -12166,9 +11410,9 @@ } }, "socks": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.5.1.tgz", - "integrity": "sha512-oZCsJJxapULAYJaEYBSzMcz8m3jqgGrHaGhkmU/o/PQfFWYWxkAaA0UMGImb6s6tEXfKi959X6VJjMMQ3P6TTQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", + "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", "dev": true, "requires": { "ip": "^1.1.5", @@ -12354,9 +11598,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -12581,26 +11825,6 @@ "strip-ansi": "^6.0.0" } }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", @@ -12645,53 +11869,13 @@ } }, "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.0.tgz", + "integrity": "sha512-QOWm6XivDLb+fqffTZP8jrmPmPITVChl2KCY2R05nsCWwLi3VGhCdVc3IVGNwd1zzTt1jPd67zIKjpQfxzQZeA==", "dev": true, "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" } }, "stylus": { @@ -12769,52 +11953,73 @@ } }, "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.3.0.tgz", + "integrity": "sha512-fz4IKjNO6HDPgIQxu4IxwtubtbSfGEAJUq/IXyTPIkGhWck/faiiwfkvsB8LnBkKLvSoyNNIY6d13lZprJMc9Q==", "dev": true, "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" + "@trysound/sax": "0.1.1", + "chalk": "^4.1.0", + "commander": "^7.1.0", + "css-select": "^3.1.2", + "css-tree": "^1.1.2", + "csso": "^4.2.0", + "stable": "^0.1.8" }, "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "color-convert": "^2.0.1" } }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "minimist": "^1.2.5" + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } @@ -13202,9 +12407,9 @@ "dev": true }, "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, "type-is": { @@ -13328,12 +12533,6 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -13451,39 +12650,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -14137,9 +13303,9 @@ "dev": true }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "requires": { "figgy-pudding": "^3.5.1" @@ -14411,12 +13577,6 @@ } } }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -14825,9 +13985,9 @@ "dev": true }, "yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true }, "yargs": { diff --git a/package.json b/package.json index 46d718e50..92ca3c89f 100644 --- a/package.json +++ b/package.json @@ -12,14 +12,14 @@ }, "private": true, "dependencies": { - "@angular/animations": "^11.2.3", - "@angular/common": "^11.2.3", - "@angular/compiler": "^11.2.3", - "@angular/core": "^11.2.3", - "@angular/forms": "^11.2.3", - "@angular/platform-browser": "^11.2.3", - "@angular/platform-browser-dynamic": "^11.2.3", - "@angular/router": "^11.2.3", + "@angular/animations": "^11.2.13", + "@angular/common": "^11.2.13", + "@angular/compiler": "^11.2.13", + "@angular/core": "^11.2.13", + "@angular/forms": "^11.2.13", + "@angular/platform-browser": "^11.2.13", + "@angular/platform-browser-dynamic": "^11.2.13", + "@angular/router": "^11.2.13", "crypto-js": "^3.3.0", "file-saver": "^2.0.5", "hammerjs": "^2.0.8", @@ -34,10 +34,10 @@ "zone.js": "~0.10.3" }, "devDependencies": { - "@angular-devkit/build-angular": "~0.1102.2", - "@angular/cli": "^11.2.2", - "@angular/compiler-cli": "^11.2.3", - "@angular/language-service": "^11.2.3", + "@angular-devkit/build-angular": "~0.1102.12", + "@angular/cli": "^11.2.12", + "@angular/compiler-cli": "^11.2.13", + "@angular/language-service": "^11.2.13", "@types/crypto-js": "^4.0.1", "@types/file-saver": "^2.0.1", "@types/hammerjs": "^2.0.39", From 1b0d0a226605f06241f3f273c3b7de3fc699d1d6 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 3 Jun 2021 00:09:15 +0900 Subject: [PATCH 034/161] =?UTF-8?q?fix:=20=E3=82=88=E3=82=8A=E8=A9=B3?= =?UTF-8?q?=E7=B4=B0=E3=81=AA=E3=82=A8=E3=83=A9=E3=83=BC=E3=83=A1=E3=83=83?= =?UTF-8?q?=E3=82=BB=E3=83=BC=E3=82=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/system/network/skyway-connection.ts | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index e58ca396c..96157fae2 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -373,22 +373,25 @@ export class SkyWayConnection implements Connection { private getSkyWayErrorMessage(errType: string): string { switch (errType) { - case 'peer-unavailable': - return 'そのPeer IDは利用できません。' - case 'invalid-id': - return 'Peer IDが不正です。' - case 'invalid-key': - return 'SkyWay APIキーが無効です。'; - case 'list-error': - return 'SkyWay APIキーのREST APIが許可されてません。'; - case 'server-error': - return 'SkyWayのシグナリングサーバからPeer一覧を取得できませんでした。'; - case 'disconnected': - return 'SkyWayのシグナリングサーバに接続されていません。'; - case 'socket-error': - return 'SkyWayのシグナリングサーバとの接続が失われました。'; - default: - return 'SkyWayに関する不明なエラーが発生しました(' + errType + ')'; + case 'room-error': return 'SkyWay Room API に問題が発生しました。'; + case 'permission': return '該当の SkyWay Room の利用が許可されてません。'; + case 'list-error': return 'SkyWay listAllPeers API が Disabled です。'; + case 'disconnected': return 'SkyWay のシグナリングサーバに接続されていません。'; + case 'socket-error': return 'SkyWay のシグナリングサーバとの通信で問題が発生しました。'; + case 'invalid-id': return 'Peer ID が不正です。'; + case 'unavailable-id': return 'その Peer ID すでに使用されています。'; + case 'peer-unavailable': return 'その Peer ID は利用できません。'; + case 'invalid-key': return 'SkyWay API キーが無効です。'; + case 'invalid-domain': return 'SkyWay API キーには現在のドメインは登録されていません。'; + case 'authentication': return '認証エラーです。'; + case 'server-error': return 'SkyWay のシグナリングサーバとの接続中に問題がありました。 少し待って、リトライしてください。'; + case 'sfu-client-not-supported': return 'このクライアントは SFU の使用をサポートしていません。最新の Google Chrome を使用してください'; + case 'peer-unavailable': return 'Peer へデータを送信できませんでした。Peer ID が正しいことを確認してください。'; + case 'signaling-limited': return 'シグナリング回数が無償利用枠を超過しているため、全ての機能が利用できません。(SkyWay Community Edition のみ)'; + case 'sfu-limited': return 'SFU サーバの利用量が無償利用枠を超過しているため、SFU の機能が利用できません。(SkyWay Community Edition のみ)'; + case 'turn-limited': return 'TURN サーバの利用量が無償利用枠を超過しているため、TURN の機能が利用できません。(SkyWay Community Edition のみ)\nこの状態では、一部のユーザの接続に問題が発生する可能性があります。'; + case 'peer-unavailable': return 'そのPeer IDは利用できません。'; + default: return 'SkyWayに関する不明なエラーが発生しました。'; } } } From c40f7a7e5037cc27a42262a37c5a822f1347d542 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 8 Jul 2021 22:57:12 +0900 Subject: [PATCH 035/161] =?UTF-8?q?fix:=20SkyWay=E3=81=AE=E3=82=A8?= =?UTF-8?q?=E3=83=A9=E3=83=BC=E3=81=AE=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB?= =?UTF-8?q?=E3=83=88=E5=8B=95=E4=BD=9C=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 明示的な切断が必要なエラー以外では何もしない --- .../class/core/system/network/skyway-connection.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index 96157fae2..56771a425 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -199,18 +199,20 @@ export class SkyWayConnection implements Connection { errorMessage += ': ' + err.message; switch (err.type) { case 'peer-unavailable': - case 'invalid-id': - case 'invalid-key': - case 'list-error': - case 'server-error': + let peerId = /"(.+)"/.exec(err.message)[1]; + this.disconnect(peerId); break; case 'disconnected': case 'socket-error': - default: + case 'unavailable-id': + case 'authentication': + case 'server-error': if (this.peerContext && this.peerContext.isOpen) { if (this.callback.onClose) this.callback.onClose(this.peerId); } break; + default: + break; } if (this.callback.onError) this.callback.onError(this.peerId, errorMessage); }); From 440963befe989a5fd1985f2effc551fb44ebabb5 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 8 Jul 2021 22:59:06 +0900 Subject: [PATCH 036/161] =?UTF-8?q?fix:=20=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=82=92=E8=87=AA=E5=8B=95=E3=81=A7=E5=9B=9E=E5=BE=A9=E3=81=A7?= =?UTF-8?q?=E3=81=8D=E3=81=AA=E3=81=84=E5=A0=B4=E5=90=88=E3=81=AFclose()?= =?UTF-8?q?=E3=82=92=E5=AE=9F=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/system/network/skyway-connection.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index 56771a425..1ca5dd097 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -208,6 +208,7 @@ export class SkyWayConnection implements Connection { case 'authentication': case 'server-error': if (this.peerContext && this.peerContext.isOpen) { + this.close(); if (this.callback.onClose) this.callback.onClose(this.peerId); } break; From 9b3dbdf25d87be33c1be67a14dbaa04a839df95b Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 8 Jul 2021 23:04:23 +0900 Subject: [PATCH 037/161] =?UTF-8?q?fix:=20=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/system/network/skyway-connection.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index 1ca5dd097..f220312cd 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -195,8 +195,7 @@ export class SkyWayConnection implements Connection { peer.on('error', err => { console.error('<' + this.peerId + '> ' + err.type + ' => ' + err.message); - let errorMessage = this.getSkyWayErrorMessage(err.type); - errorMessage += ': ' + err.message; + let errorMessage = `${this.getSkyWayErrorMessage(err.type)}\n\n${err.type}: ${err.message}`; switch (err.type) { case 'peer-unavailable': let peerId = /"(.+)"/.exec(err.message)[1]; From 40c61e9cfa959cd062d1c744e7b9b9b2d882c296 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 8 Jul 2021 23:17:06 +0900 Subject: [PATCH 038/161] =?UTF-8?q?fix:=20SkyWayDataConnection=E3=81=AE?= =?UTF-8?q?=E3=82=A8=E3=83=A9=E3=83=BC=E3=81=A7=E3=81=AF=E3=82=A8=E3=83=A9?= =?UTF-8?q?=E3=83=BC=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88=E3=82=92=E4=BC=9D?= =?UTF-8?q?=E6=90=AC=E3=81=95=E3=81=9B=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/system/network/skyway-connection.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index f220312cd..5fedbfeaf 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -240,9 +240,8 @@ export class SkyWayConnection implements Connection { this.closeDataConnection(conn); if (this.callback.onDisconnect) this.callback.onDisconnect(conn.remoteId); }); - conn.on('error', err => { + conn.on('error', () => { this.closeDataConnection(conn); - if (this.callback.onError) this.callback.onError(conn.remoteId, err); }); } From 3d74511dd4d7664716711c868921fc928e54728e Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 8 Jul 2021 23:33:39 +0900 Subject: [PATCH 039/161] =?UTF-8?q?feat:=20onError=E3=81=AE=E5=BC=95?= =?UTF-8?q?=E6=95=B0=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/system/event/event-system.ts | 4 ++-- src/app/class/core/system/network/connection.ts | 2 +- src/app/class/core/system/network/network.ts | 2 +- src/app/class/core/system/network/skyway-connection.ts | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/app/class/core/system/event/event-system.ts b/src/app/class/core/system/event/event-system.ts index cb6522c1b..0edd3ce0b 100644 --- a/src/app/class/core/system/event/event-system.ts +++ b/src/app/class/core/system/event/event-system.ts @@ -140,8 +140,8 @@ export class EventSystem implements Subject { } } - callback.onError = (peerId, err) => { - this.sendSystemMessage('<' + peerId + '> ' + err); + callback.onError = (peerId, errorType, errorMessage, errorObject) => { + this.sendSystemMessage('<' + peerId + '> ' + errorMessage); } } diff --git a/src/app/class/core/system/network/connection.ts b/src/app/class/core/system/network/connection.ts index f4430863d..e43b62659 100644 --- a/src/app/class/core/system/network/connection.ts +++ b/src/app/class/core/system/network/connection.ts @@ -6,7 +6,7 @@ export class ConnectionCallback { onConnect: (peerId: string) => void; onDisconnect: (peerId: string) => void; onData: (peerId: string, data: any) => void; - onError: (peerId: string, err: any) => void; + onError: (peerId: string, errorType: string, errorMessage: string, errorObject: any) => void; } export interface Connection { diff --git a/src/app/class/core/system/network/network.ts b/src/app/class/core/system/network/network.ts index add32c661..487cbd48f 100644 --- a/src/app/class/core/system/network/network.ts +++ b/src/app/class/core/system/network/network.ts @@ -136,7 +136,7 @@ export class Network { store.callback.onConnect = (peerId) => { if (this.callback.onConnect) this.callback.onConnect(peerId); } store.callback.onDisconnect = (peerId) => { if (this.callback.onDisconnect) this.callback.onDisconnect(peerId); } store.callback.onData = (peerId, data: any[]) => { if (this.callback.onData) this.callback.onData(peerId, data); } - store.callback.onError = (peerId, err) => { if (this.callback.onError) this.callback.onError(peerId, err); } + store.callback.onError = (peerId, errorType, errorMessage, errorObject) => { if (this.callback.onError) this.callback.onError(peerId, errorType, errorMessage, errorObject); } if (0 < this.queue.size && this.sendInterval === null) this.sendInterval = setZeroTimeout(this.sendCallback); diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index 5fedbfeaf..d9fd01461 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -214,7 +214,7 @@ export class SkyWayConnection implements Connection { default: break; } - if (this.callback.onError) this.callback.onError(this.peerId, errorMessage); + if (this.callback.onError) this.callback.onError(this.peerId, err.type, errorMessage, err); }); this.peer = peer; } From 88374855d32e354fa20def9553e11303bc69d767 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 8 Jul 2021 23:46:23 +0900 Subject: [PATCH 040/161] =?UTF-8?q?fix:=20=E3=83=8D=E3=83=83=E3=83=88?= =?UTF-8?q?=E3=83=AF=E3=83=BC=E3=82=AF=E3=82=A8=E3=83=A9=E3=83=BC=E3=82=92?= =?UTF-8?q?NETWORK=5FERROR=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88=E3=81=A7?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/app.component.ts | 23 ++++++++++++------- .../class/core/system/event/event-system.ts | 1 + src/app/class/core/system/event/observer.ts | 1 + 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 7c6a2c9b4..3967626af 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -153,15 +153,22 @@ export class AppComponent implements AfterViewInit, OnDestroy { PeerCursor.myCursor.peerId = Network.peerContext.peerId; PeerCursor.myCursor.userId = Network.peerContext.userId; }) - .on('CLOSE_NETWORK', event => { - console.log('CLOSE_NETWORK', event.data.peerId); + .on('NETWORK_ERROR', event => { + console.log('NETWORK_ERROR', event.data.peerId); + let errorType: string = event.data.errorType; + let errorMessage: string = event.data.errorMessage; + this.ngZone.run(async () => { - if (1 < Network.peerIds.length) { - await this.modalService.open(TextViewComponent, { title: 'ネットワークエラー', text: 'ネットワーク接続に何らかの異常が発生しました。\nこの表示以後、接続が不安定であれば、ページリロードと再接続を試みてください。' }); - } else { - await this.modalService.open(TextViewComponent, { title: 'ネットワークエラー', text: '接続情報が破棄されました。\nこのウィンドウを閉じると再接続を試みます。' }); - Network.open(); - } + //SKyWayエラーハンドリング + let quietErrorTypes = ['peer-unavailable']; + let reconnectErrorTypes = ['disconnected', 'socket-error', 'unavailable-id', 'authentication', 'server-error']; + + if (quietErrorTypes.includes(errorType)) return; + await this.modalService.open(TextViewComponent, { title: 'ネットワークエラー', text: errorMessage }); + + if (!reconnectErrorTypes.includes(errorType)) return; + await this.modalService.open(TextViewComponent, { title: 'ネットワークエラー', text: 'このウィンドウを閉じると再接続を試みます。' }); + Network.open(); }); }) .on('CONNECT_PEER', event => { diff --git a/src/app/class/core/system/event/event-system.ts b/src/app/class/core/system/event/event-system.ts index 0edd3ce0b..2a69f9231 100644 --- a/src/app/class/core/system/event/event-system.ts +++ b/src/app/class/core/system/event/event-system.ts @@ -142,6 +142,7 @@ export class EventSystem implements Subject { callback.onError = (peerId, errorType, errorMessage, errorObject) => { this.sendSystemMessage('<' + peerId + '> ' + errorMessage); + this.trigger('NETWORK_ERROR', { peerId: peerId, errorType: errorType, errorMessage: errorMessage, errorObject: errorObject }); } } diff --git a/src/app/class/core/system/event/observer.ts b/src/app/class/core/system/event/observer.ts index 7caeb6c24..edacb8534 100644 --- a/src/app/class/core/system/event/observer.ts +++ b/src/app/class/core/system/event/observer.ts @@ -6,6 +6,7 @@ export type Callback = (event: Event, listener?: Observer) => void; export interface EventMap { 'OPEN_NETWORK': { peerId: string }; 'CLOSE_NETWORK': { peerId: string }; + 'NETWORK_ERROR': { peerId: string, errorType: string, errorMessage: string, errorObject: any }; 'CONNECT_PEER': { peerId: string }; 'DISCONNECT_PEER': { peerId: string }; 'UPDATE_GAME_OBJECT': { From 2ce021f947c805b873a2f5469c96fe34507f1352 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 8 Jul 2021 23:47:20 +0900 Subject: [PATCH 041/161] =?UTF-8?q?fix:=20CSS=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/component/text-view/text-view.component.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/app/component/text-view/text-view.component.css b/src/app/component/text-view/text-view.component.css index a16fa81f6..0dbbeb977 100644 --- a/src/app/component/text-view/text-view.component.css +++ b/src/app/component/text-view/text-view.component.css @@ -1,4 +1,8 @@ .text { font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Verdana, Meiryo, sans-serif; font-size: 12px; + white-space: pre-wrap; + word-wrap: break-word; + overflow-wrap: anywhere; + word-break: break-word; } \ No newline at end of file From 66b15516eb649154ce4cdf222cbcb0a305906943 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 8 Jul 2021 23:51:33 +0900 Subject: [PATCH 042/161] =?UTF-8?q?fix:=20Peer=E3=81=AE=E3=82=A4=E3=83=99?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=83=8F=E3=83=B3=E3=83=89=E3=83=AA=E3=83=B3?= =?UTF-8?q?=E3=82=B0=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CLOSE_NETWORKイベントはcloseに連動して発火させる --- src/app/class/core/system/network/skyway-connection.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index d9fd01461..6678f5a90 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -189,6 +189,14 @@ export class SkyWayConnection implements Connection { if (this.callback.onOpen) this.callback.onOpen(this.peerId); }); + peer.on('close', () => { + console.log('Peer close'); + if (this.peerContext && this.peerContext.isOpen) { + this.peerContext.isOpen = false; + if (this.callback.onClose) this.callback.onClose(this.peerId); + } + }); + peer.on('connection', conn => { this.openDataConnection(new SkyWayDataConnection(conn)); }); From e109171883ef47960c5929a3d287811c27fab24f Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 9 Jul 2021 00:00:37 +0900 Subject: [PATCH 043/161] =?UTF-8?q?feat:=20=E6=8E=A5=E7=B6=9A=E3=83=9C?= =?UTF-8?q?=E3=82=BF=E3=83=B3=E3=82=92=E6=8A=BC=E3=81=97=E3=81=9F=E3=81=A8?= =?UTF-8?q?=E3=81=8D=E3=81=AB=E5=85=A5=E5=8A=9B=E3=82=92=E3=83=AA=E3=82=BB?= =?UTF-8?q?=E3=83=83=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/component/peer-menu/peer-menu.component.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/app/component/peer-menu/peer-menu.component.ts b/src/app/component/peer-menu/peer-menu.component.ts index b8748ecd7..ea712b330 100644 --- a/src/app/component/peer-menu/peer-menu.component.ts +++ b/src/app/component/peer-menu/peer-menu.component.ts @@ -62,8 +62,10 @@ export class PeerMenuComponent implements OnInit, OnDestroy, AfterViewInit { } connectPeer() { + let targetUserId = this.targetUserId; + this.targetUserId = ''; this.help = ''; - let context = PeerContext.create(this.targetUserId); + let context = PeerContext.create(targetUserId); if (context.isRoom) return; ObjectStore.instance.clearDeleteHistory(); Network.connect(context.peerId); From 9091b117451b35454a03a61f54eb8608b609489e Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 9 Jul 2021 00:02:07 +0900 Subject: [PATCH 044/161] =?UTF-8?q?fix:=200=E6=96=87=E5=AD=97=E3=81=AE?= =?UTF-8?q?=E5=85=A5=E5=8A=9B=E3=82=92=E7=84=A1=E8=A6=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/component/peer-menu/peer-menu.component.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/component/peer-menu/peer-menu.component.ts b/src/app/component/peer-menu/peer-menu.component.ts index ea712b330..b0095ab51 100644 --- a/src/app/component/peer-menu/peer-menu.component.ts +++ b/src/app/component/peer-menu/peer-menu.component.ts @@ -64,6 +64,7 @@ export class PeerMenuComponent implements OnInit, OnDestroy, AfterViewInit { connectPeer() { let targetUserId = this.targetUserId; this.targetUserId = ''; + if (targetUserId.length < 1) return; this.help = ''; let context = PeerContext.create(targetUserId); if (context.isRoom) return; From 9c54aac9ea7f91599cc4f57e45291da379363e43 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 12 Aug 2021 00:01:56 +0900 Subject: [PATCH 045/161] =?UTF-8?q?refactor:=20TableSelecter=E3=82=AA?= =?UTF-8?q?=E3=83=96=E3=82=B8=E3=82=A7=E3=82=AF=E3=83=88=E3=81=B8=E3=81=AE?= =?UTF-8?q?=E3=82=A2=E3=82=AF=E3=82=BB=E3=82=B9=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/app.component.ts | 2 ++ src/app/class/table-selecter.ts | 9 +++++++++ .../game-character-generator.component.ts | 2 +- .../game-table-setting/game-table-setting.component.ts | 2 +- src/app/directive/movable.directive.ts | 6 +----- src/app/service/tabletop-action.service.ts | 9 ++------- src/app/service/tabletop.service.ts | 2 +- 7 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 3967626af..c62c2a50c 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -18,6 +18,7 @@ import { DiceBot } from '@udonarium/dice-bot'; import { Jukebox } from '@udonarium/Jukebox'; import { PeerCursor } from '@udonarium/peer-cursor'; import { PresetSound, SoundEffect } from '@udonarium/sound-effect'; +import { TableSelecter } from '@udonarium/table-selecter'; import { ChatWindowComponent } from 'component/chat-window/chat-window.component'; import { ContextMenuComponent } from 'component/context-menu/context-menu.component'; @@ -79,6 +80,7 @@ export class AppComponent implements AfterViewInit, OnDestroy { this.appConfigService.initialize(); this.pointerDeviceService.initialize(); + TableSelecter.instance.initialize(); ChatTabList.instance.initialize(); DataSummarySetting.instance.initialize(); diff --git a/src/app/class/table-selecter.ts b/src/app/class/table-selecter.ts index c3ab2e4ad..1e409339f 100644 --- a/src/app/class/table-selecter.ts +++ b/src/app/class/table-selecter.ts @@ -6,6 +6,15 @@ import { GameTable } from './game-table'; @SyncObject('TableSelecter') export class TableSelecter extends GameObject { + private static _instance: TableSelecter; + static get instance(): TableSelecter { + if (!TableSelecter._instance) { + TableSelecter._instance = new TableSelecter('TableSelecter'); + TableSelecter._instance.initialize(); + } + return TableSelecter._instance; + } + @SyncVar() viewTableIdentifier: string = ''; gridShow: boolean = false; // true=常時グリッド表示 gridSnap: boolean = true; diff --git a/src/app/component/game-character-generator/game-character-generator.component.ts b/src/app/component/game-character-generator/game-character-generator.component.ts index 268d6bb3d..0738b938b 100644 --- a/src/app/component/game-character-generator/game-character-generator.component.ts +++ b/src/app/component/game-character-generator/game-character-generator.component.ts @@ -59,7 +59,7 @@ export class GameCharacterGeneratorComponent implements OnInit, OnDestroy, After GameCharacter.create(this.name, this.size, this.tableBackgroundImage.identifier); } createGameTableMask() { - let viewTable = ObjectStore.instance.get('tableSelecter').viewTable; + let viewTable = TableSelecter.instance.viewTable; if (!viewTable) return; let tableMask = GameTableMask.create('マップマスク', 5, 5, 100); viewTable.appendChild(tableMask); diff --git a/src/app/component/game-table-setting/game-table-setting.component.ts b/src/app/component/game-table-setting/game-table-setting.component.ts index 301ad63ac..be19a6625 100644 --- a/src/app/component/game-table-setting/game-table-setting.component.ts +++ b/src/app/component/game-table-setting/game-table-setting.component.ts @@ -58,7 +58,7 @@ export class GameTableSettingComponent implements OnInit, OnDestroy, AfterViewIn get tableDistanceviewFilter(): FilterType { return this.selectedTable.backgroundFilterType; } set tableDistanceviewFilter(filterType: FilterType) { if (this.isEditable) this.selectedTable.backgroundFilterType = filterType; } - get tableSelecter(): TableSelecter { return ObjectStore.instance.get('tableSelecter'); } + get tableSelecter(): TableSelecter { return TableSelecter.instance; } selectedTable: GameTable = null; selectedTableXml: string = ''; diff --git a/src/app/directive/movable.directive.ts b/src/app/directive/movable.directive.ts index 2560cad05..0a6a415d5 100644 --- a/src/app/directive/movable.directive.ts +++ b/src/app/directive/movable.directive.ts @@ -1,5 +1,4 @@ import { AfterViewInit, Directive, ElementRef, EventEmitter, Input, NgZone, OnDestroy, Output } from '@angular/core'; -import { ObjectStore } from '@udonarium/core/synchronize-object/object-store'; import { EventSystem } from '@udonarium/core/system'; import { TableSelecter } from '@udonarium/table-selecter'; import { TabletopObject } from '@udonarium/tabletop-object'; @@ -64,10 +63,7 @@ export class MovableDirective implements AfterViewInit, OnDestroy { private collidableElements: HTMLElement[] = []; private input: InputHandler = null; - private get isGridSnap(): boolean { - let tableSelecter = ObjectStore.instance.get('tableSelecter'); - return tableSelecter ? tableSelecter.gridSnap : false; - } + private get isGridSnap(): boolean { return TableSelecter.instance.gridSnap; } constructor( private ngZone: NgZone, diff --git a/src/app/service/tabletop-action.service.ts b/src/app/service/tabletop-action.service.ts index 9ae066535..0f9909735 100644 --- a/src/app/service/tabletop-action.service.ts +++ b/src/app/service/tabletop-action.service.ts @@ -3,7 +3,6 @@ import { Card } from '@udonarium/card'; import { CardStack } from '@udonarium/card-stack'; import { ImageContext, ImageFile } from '@udonarium/core/file-storage/image-file'; import { ImageStorage } from '@udonarium/core/file-storage/image-storage'; -import { ObjectStore } from '@udonarium/core/synchronize-object/object-store'; import { EventSystem } from '@udonarium/core/system'; import { DiceSymbol, DiceType } from '@udonarium/dice-symbol'; import { GameCharacter } from '@udonarium/game-character'; @@ -122,9 +121,6 @@ export class TabletopActionService { } makeDefaultTable() { - let tableSelecter = new TableSelecter('tableSelecter'); - tableSelecter.initialize(); - let gameTable = new GameTable('gameTable'); let testBgFile: ImageFile = null; let bgFileContext = ImageFile.createEmpty('testTableBackgroundImage_image').toContext(); @@ -136,7 +132,7 @@ export class TabletopActionService { gameTable.height = 15; gameTable.initialize(); - tableSelecter.viewTableIdentifier = gameTable.identifier; + TableSelecter.instance.viewTableIdentifier = gameTable.identifier; } makeDefaultTabletopObjects() { @@ -277,7 +273,6 @@ export class TabletopActionService { } private getViewTable(): GameTable { - let tableSelecter = ObjectStore.instance.get('tableSelecter'); - return tableSelecter ? tableSelecter.viewTable : null; + return TableSelecter.instance.viewTable; } } diff --git a/src/app/service/tabletop.service.ts b/src/app/service/tabletop.service.ts index 0e1e6f7b6..2716c8531 100644 --- a/src/app/service/tabletop.service.ts +++ b/src/app/service/tabletop.service.ts @@ -25,7 +25,7 @@ type LocationName = string; @Injectable() export class TabletopService { private _emptyTable: GameTable = new GameTable(''); - get tableSelecter(): TableSelecter { return ObjectStore.instance.get('tableSelecter'); } + get tableSelecter(): TableSelecter { return TableSelecter.instance; } get currentTable(): GameTable { let table = this.tableSelecter.viewTable; return table ? table : this._emptyTable; From ec874d8c7f747ea48fc060d0bf9262ec9493e4ef Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 12 Aug 2021 00:06:40 +0900 Subject: [PATCH 046/161] =?UTF-8?q?fix:=20selectedTable=E3=81=8Cnull?= =?UTF-8?q?=E3=81=AE=E9=9A=9B=E3=81=AE=E3=82=A8=E3=83=A9=E3=83=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../game-table-setting/game-table-setting.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/component/game-table-setting/game-table-setting.component.html b/src/app/component/game-table-setting/game-table-setting.component.html index 87ece4963..e6ab5a661 100644 --- a/src/app/component/game-table-setting/game-table-setting.component.html +++ b/src/app/component/game-table-setting/game-table-setting.component.html @@ -8,7 +8,7 @@
- +
画像 From 916f80040e652f4375719a66e733a4e5ba0e4e7e Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 12 Aug 2021 00:08:23 +0900 Subject: [PATCH 047/161] =?UTF-8?q?refactor:=20=E5=86=97=E9=95=B7=E3=81=AA?= =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../game-table-setting.component.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/app/component/game-table-setting/game-table-setting.component.html b/src/app/component/game-table-setting/game-table-setting.component.html index e6ab5a661..22ea2f65b 100644 --- a/src/app/component/game-table-setting/game-table-setting.component.html +++ b/src/app/component/game-table-setting/game-table-setting.component.html @@ -27,35 +27,35 @@
Name : - +
- Width : - +
- Height : - +
グリッド: - 色: -
背景フィルタ - @@ -76,7 +76,7 @@
{{progresPercent}}%
- +
From fae2f003cd4f3d8416101717be89432851cfef66 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 12 Aug 2021 00:11:21 +0900 Subject: [PATCH 048/161] =?UTF-8?q?fix:=20=E5=89=8A=E9=99=A4=E6=B8=88?= =?UTF-8?q?=E3=81=BF=E3=83=86=E3=83=BC=E3=83=96=E3=83=AB=E3=81=AE=E3=83=9C?= =?UTF-8?q?=E3=82=BF=E3=83=B3=E6=93=8D=E4=BD=9C=E3=82=92disabled=E3=81=AB?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../game-table-setting/game-table-setting.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/component/game-table-setting/game-table-setting.component.html b/src/app/component/game-table-setting/game-table-setting.component.html index 22ea2f65b..bced5337a 100644 --- a/src/app/component/game-table-setting/game-table-setting.component.html +++ b/src/app/component/game-table-setting/game-table-setting.component.html @@ -19,7 +19,7 @@
背景
- +
From 9ecb3d1340a54e17e62b8ccb403e5c2e49eeb107 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 12 Aug 2021 00:11:54 +0900 Subject: [PATCH 049/161] =?UTF-8?q?fix:=20=E7=94=BB=E5=83=8F=E6=9C=AA?= =?UTF-8?q?=E8=A8=AD=E5=AE=9A=E6=99=82=E3=81=AE=E3=83=9C=E3=82=BF=E3=83=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../game-table-setting/game-table-setting.component.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/app/component/game-table-setting/game-table-setting.component.html b/src/app/component/game-table-setting/game-table-setting.component.html index bced5337a..57bee3438 100644 --- a/src/app/component/game-table-setting/game-table-setting.component.html +++ b/src/app/component/game-table-setting/game-table-setting.component.html @@ -12,7 +12,10 @@
画像 -
+
+ +
+
From f7b1015f50f9cd51764f6a6592ad2174c067a920 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 21 Aug 2021 01:56:33 +0900 Subject: [PATCH 050/161] =?UTF-8?q?fix:=20=E3=83=87=E3=83=95=E3=82=A9?= =?UTF-8?q?=E3=83=AB=E3=83=88=E3=81=A7=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=82=8B=E3=82=AD=E3=83=A3=E3=83=A9=E3=82=AF=E3=82=BF=E3=83=BC?= =?UTF-8?q?=E3=81=AE=E5=88=9D=E6=9C=9F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UPDATE_GAME_OBJECTイベントを正しく発火させるために、initialize()を呼ぶ前に初期パラメータを与える --- src/app/service/tabletop-action.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/service/tabletop-action.service.ts b/src/app/service/tabletop-action.service.ts index 0f9909735..2a80d5b17 100644 --- a/src/app/service/tabletop-action.service.ts +++ b/src/app/service/tabletop-action.service.ts @@ -186,9 +186,9 @@ export class TabletopActionService { fileContext = ImageFile.createEmpty('testCharacter_6_image').toContext(); fileContext.url = './assets/images/mon_135.gif'; testFile = ImageStorage.instance.add(fileContext); - testCharacter.initialize(); testCharacter.location.x = 5 * 50; testCharacter.location.y = 13 * 50; + testCharacter.initialize(); testCharacter.createTestGameDataElement('キャラクターC', 1, testFile.identifier); } From 0f91e93d004a7a035489628863f7bf4ccf6f45c3 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Wed, 9 Feb 2022 02:21:23 +0900 Subject: [PATCH 051/161] =?UTF-8?q?build:=20angular=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- angular.json | 79 +- package-lock.json | 26880 +++++++++++++++++++++++++++----------------- package.json | 51 +- src/polyfills.ts | 2 +- src/test.ts | 2 +- 5 files changed, 16357 insertions(+), 10657 deletions(-) diff --git a/angular.json b/angular.json index 0f7fdf10d..9d4888a8f 100644 --- a/angular.json +++ b/angular.json @@ -18,7 +18,6 @@ "main": "src/main.ts", "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.app.json", - "aot": true, "assets": [ "src/favicon.ico", "src/assets" @@ -39,44 +38,48 @@ }, "configurations": { "production": { - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ], - "optimization": true, - "outputHashing": "all", - "sourceMap": false, - "namedChunks": false, - "extractLicenses": true, - "vendorChunk": false, - "buildOptimizer": true, "budgets": [ { "type": "initial", - "maximumWarning": "2mb", - "maximumError": "5mb" + "maximumWarning": "500kb", + "maximumError": "1mb" }, { "type": "anyComponentStyle", - "maximumWarning": "6kb", - "maximumError": "10kb" + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" } - ] + ], + "outputHashing": "all" + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true } - } + }, + "defaultConfiguration": "production" }, "serve": { "builder": "@angular-devkit/build-angular:dev-server", - "options": { - "browserTarget": "udonarium:build" - }, "configurations": { "production": { "browserTarget": "udonarium:build:production" + }, + "development": { + "browserTarget": "udonarium:build:development" } - } + }, + "defaultConfiguration": "development" }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n", @@ -100,33 +103,9 @@ ], "scripts": [] } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": [ - "tsconfig.app.json", - "tsconfig.spec.json", - "e2e/tsconfig.json" - ], - "exclude": [ - "**/node_modules/**" - ] - } - }, - "e2e": { - "builder": "@angular-devkit/build-angular:protractor", - "options": { - "protractorConfig": "e2e/protractor.conf.js", - "devServerTarget": "udonarium:serve" - }, - "configurations": { - "production": { - "devServerTarget": "udonarium:serve:production" - } - } } } - }}, + } + }, "defaultProject": "udonarium" } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4639d22bd..0905a7380 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,2127 +1,2353 @@ { "name": "udonarium", "version": "1.13.2", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1102.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.12.tgz", - "integrity": "sha512-6qnI3NXpHzSlNG6jSLNdQazx7SILSpE3YD9l9n0tjHF3yeFnzPuVVWbQSjI9Us5EQi86lVGT3mTJbivRRRUYUQ==", + "packages": { + "": { + "name": "udonarium", + "version": "1.13.2", + "license": "MIT", + "dependencies": { + "@angular/animations": "^13.2.1", + "@angular/common": "^13.2.1", + "@angular/compiler": "^13.2.1", + "@angular/core": "^13.2.1", + "@angular/forms": "^13.2.1", + "@angular/platform-browser": "^13.2.1", + "@angular/platform-browser-dynamic": "^13.2.1", + "@angular/router": "^13.2.1", + "crypto-js": "^3.3.0", + "file-saver": "^2.0.5", + "hammerjs": "^2.0.8", + "js-yaml": "^4.0.0", + "jszip": "~3.1.5", + "lzbase62": "^2.0.0", + "msgpack-lite": "^0.1.26", + "pako": "^2.0.0", + "rxjs": "~7.5.0", + "tslib": "^2.3.0", + "vkbeautify": "^0.99.3", + "zone.js": "~0.11.4" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~13.2.2", + "@angular/cli": "^13.2.2", + "@angular/compiler-cli": "^13.2.1", + "@types/crypto-js": "^4.0.1", + "@types/file-saver": "^2.0.1", + "@types/hammerjs": "^2.0.39", + "@types/jasmine": "~3.10.0", + "@types/jasminewd2": "^2.0.8", + "@types/js-yaml": "^4.0.0", + "@types/jszip": "^3.1.7", + "@types/msgpack-lite": "^0.1.7", + "@types/node": "^12.11.1", + "@types/pako": "^1.0.1", + "@types/vkbeautify": "^0.99.2", + "jasmine-core": "~4.0.0", + "karma": "~6.3.0", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage": "~2.1.0", + "karma-jasmine": "~4.0.0", + "karma-jasmine-html-reporter": "~1.7.0", + "typescript": "~4.5.5" + } + }, + "node_modules/@ampproject/remapping": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-1.1.1.tgz", + "integrity": "sha512-YVAcA4DKLOj296CF5SrQ8cYiMRiUGc2sqFpLxsDGWE34suHqhGP/5yMsDHKsrh8hs8I5TiRVXNwKPWQpX3iGjw==", "dev": true, - "requires": { - "@angular-devkit/core": "11.2.12", - "rxjs": "6.6.3" + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "sourcemap-codec": "1.4.8" }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.1302.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.2.tgz", + "integrity": "sha512-kkydqB0PA6ZvaUgHCePoqUAzLzx+x62xOGx5z4FtIlYO9zCYHbv9q4V1jtM0ufj9PZmHCM9HNafp68hx2dcCpg==", + "dev": true, "dependencies": { - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } + "@angular-devkit/core": "13.2.2", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "@angular-devkit/build-angular": { - "version": "0.1102.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1102.12.tgz", - "integrity": "sha512-mX8UqIR+Ev6p37zXLtZghdCNta3Pi5bG6o0PCXUGcDRY63kp2jiWH0RgvoBjJBlAt358tIO9GEkR8kuqZt8x4w==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1102.12", - "@angular-devkit/build-optimizer": "0.1102.12", - "@angular-devkit/build-webpack": "0.1102.12", - "@angular-devkit/core": "11.2.12", - "@babel/core": "7.12.10", - "@babel/generator": "7.12.11", - "@babel/plugin-transform-async-to-generator": "7.12.1", - "@babel/plugin-transform-runtime": "7.12.10", - "@babel/preset-env": "7.12.11", - "@babel/runtime": "7.12.5", - "@babel/template": "7.12.7", - "@discoveryjs/json-ext": "0.5.2", - "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@ngtools/webpack": "11.2.12", + "node_modules/@angular-devkit/architect/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/architect/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/build-angular": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.2.2.tgz", + "integrity": "sha512-ExSaNi/TlMlqX4kk8D6Ok+cALsd5EGqwqDkLaw1B69497LNJQQPI5koeHXQNOHMjxf9pgAezQWWqlWOuKeSKsA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "1.1.1", + "@angular-devkit/architect": "0.1302.2", + "@angular-devkit/build-webpack": "0.1302.2", + "@angular-devkit/core": "13.2.2", + "@babel/core": "7.16.12", + "@babel/generator": "7.16.8", + "@babel/helper-annotate-as-pure": "7.16.7", + "@babel/plugin-proposal-async-generator-functions": "7.16.8", + "@babel/plugin-transform-async-to-generator": "7.16.8", + "@babel/plugin-transform-runtime": "7.16.10", + "@babel/preset-env": "7.16.11", + "@babel/runtime": "7.16.7", + "@babel/template": "7.16.7", + "@discoveryjs/json-ext": "0.5.6", + "@ngtools/webpack": "13.2.2", "ansi-colors": "4.1.1", - "autoprefixer": "10.2.4", - "babel-loader": "8.2.2", + "babel-loader": "8.2.3", + "babel-plugin-istanbul": "6.1.1", "browserslist": "^4.9.1", - "cacache": "15.0.5", - "caniuse-lite": "^1.0.30001032", + "cacache": "15.3.0", "circular-dependency-plugin": "5.2.2", - "copy-webpack-plugin": "6.3.2", - "core-js": "3.8.3", - "critters": "0.0.7", - "css-loader": "5.0.1", - "cssnano": "5.0.1", - "file-loader": "6.2.0", - "find-cache-dir": "3.3.1", - "glob": "7.1.6", + "copy-webpack-plugin": "10.2.1", + "core-js": "3.20.3", + "critters": "0.0.16", + "css-loader": "6.5.1", + "esbuild-wasm": "0.14.14", + "glob": "7.2.0", "https-proxy-agent": "5.0.0", - "inquirer": "7.3.3", - "jest-worker": "26.6.2", + "inquirer": "8.2.0", + "jsonc-parser": "3.0.0", "karma-source-map-support": "1.4.0", - "less": "4.1.1", - "less-loader": "7.3.0", - "license-webpack-plugin": "2.3.11", - "loader-utils": "2.0.0", - "mini-css-extract-plugin": "1.3.5", + "less": "4.1.2", + "less-loader": "10.2.0", + "license-webpack-plugin": "4.0.1", + "loader-utils": "3.2.0", + "mini-css-extract-plugin": "2.5.3", "minimatch": "3.0.4", - "open": "7.4.0", - "ora": "5.3.0", + "open": "8.4.0", + "ora": "5.4.1", "parse5-html-rewriting-stream": "6.0.1", - "pnp-webpack-plugin": "1.6.4", - "postcss": "8.2.13", - "postcss-import": "14.0.0", - "postcss-loader": "4.2.0", - "raw-loader": "4.0.2", - "regenerator-runtime": "0.13.7", - "resolve-url-loader": "3.1.2", - "rimraf": "3.0.2", - "rollup": "2.38.4", - "rxjs": "6.6.3", - "sass": "1.32.6", - "sass-loader": "10.1.1", - "semver": "7.3.4", - "source-map": "0.7.3", - "source-map-loader": "1.1.3", - "source-map-support": "0.5.19", - "speed-measure-webpack-plugin": "1.4.2", - "style-loader": "2.0.0", - "stylus": "0.54.8", - "stylus-loader": "4.3.3", - "terser": "5.5.1", - "terser-webpack-plugin": "4.2.3", + "piscina": "3.2.0", + "postcss": "8.4.5", + "postcss-import": "14.0.2", + "postcss-loader": "6.2.1", + "postcss-preset-env": "7.2.3", + "regenerator-runtime": "0.13.9", + "resolve-url-loader": "5.0.0", + "rxjs": "6.6.7", + "sass": "1.49.0", + "sass-loader": "12.4.0", + "semver": "7.3.5", + "source-map-loader": "3.0.1", + "source-map-support": "0.5.21", + "stylus": "0.56.0", + "stylus-loader": "6.2.0", + "terser": "5.10.0", "text-table": "0.2.0", "tree-kill": "1.2.2", - "webpack": "4.44.2", - "webpack-dev-middleware": "3.7.2", - "webpack-dev-server": "3.11.2", - "webpack-merge": "5.7.3", - "webpack-sources": "2.2.0", - "webpack-subresource-integrity": "1.5.2", - "worker-plugin": "5.0.0" + "tslib": "2.3.1", + "webpack": "5.67.0", + "webpack-dev-middleware": "5.3.0", + "webpack-dev-server": "4.7.3", + "webpack-merge": "5.8.0", + "webpack-subresource-integrity": "5.1.0" }, - "dependencies": { - "core-js": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz", - "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==", - "dev": true + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "esbuild": "0.14.14" + }, + "peerDependencies": { + "@angular/compiler-cli": "^13.0.0", + "@angular/localize": "^13.0.0", + "@angular/service-worker": "^13.0.0", + "karma": "^6.3.0", + "ng-packagr": "^13.0.0", + "protractor": "^7.0.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=4.4.3 <4.6" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true }, - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "@angular/service-worker": { + "optional": true }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "karma": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "protractor": { + "optional": true + }, + "tailwindcss": { + "optional": true } } }, - "@angular-devkit/build-optimizer": { - "version": "0.1102.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1102.12.tgz", - "integrity": "sha512-4aQ4t7iDagrsNrF5JDS3bZw+uIn4z0llyau7GQQwZm1OmpRcl33hXOIHSFUJoRPP6pI5liNVuffF3lrAoC6sZA==", + "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, - "requires": { - "loader-utils": "2.0.0", - "source-map": "0.7.3", - "tslib": "2.1.0", - "typescript": "4.1.5", - "webpack-sources": "2.2.0" - }, "dependencies": { - "typescript": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz", - "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==", - "dev": true - } + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" } }, - "@angular-devkit/build-webpack": { - "version": "0.1102.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1102.12.tgz", - "integrity": "sha512-AoqnveSLhkQznI3SBX7/uoOEs93EOi8/u1sdOU8QBicM53n/IcUPIjilwHL+CY8J0YKcxg4ESsN3LAFQCzYT6g==", + "node_modules/@angular-devkit/build-angular/node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1302.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1302.2.tgz", + "integrity": "sha512-QgeJSJt52ZYigw67i3MChuSyp1FUO1LbrzeMoQLdScAPPjnivODz4TTz5bNMrhnP6NoPUpzy6QKOWR1j/TFOHw==", "dev": true, - "requires": { - "@angular-devkit/architect": "0.1102.12", - "@angular-devkit/core": "11.2.12", - "rxjs": "6.6.3" + "dependencies": { + "@angular-devkit/architect": "0.1302.2", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^4.0.0" + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, "dependencies": { - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" } }, - "@angular-devkit/core": { - "version": "11.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.12.tgz", - "integrity": "sha512-VMRMmRj6ZX32cWpuA6vD4KSmji17yC4EtbXsiqrHZ8zAho4ifu8xImCC5PugTQnHa+RlIadOXwXX89aujUEwRw==", + "node_modules/@angular-devkit/build-webpack/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/core": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.2.2.tgz", + "integrity": "sha512-qH0Vu8qwGD5uhmE8PtePA1lm7xL3JtbBCcrQICmLqD6njLDVb2N5pbdDXeiXDlWGUoIRHUhu6Uw4AsY8zXP/FA==", "dev": true, - "requires": { - "ajv": "6.12.6", + "dependencies": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", "fast-json-stable-stringify": "2.1.0", "magic-string": "0.25.7", - "rxjs": "6.6.3", + "rxjs": "6.6.7", "source-map": "0.7.3" }, - "dependencies": { - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true } } }, - "@angular-devkit/schematics": { - "version": "11.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.2.12.tgz", - "integrity": "sha512-d1fxxkLPtP87iwAFZ0iUNWMlqULm05bbnRc5g5vrFxdtpwwybC15+NS64d3gzX0vAvnCa+cDQkjeD92bJJNjLw==", + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, - "requires": { - "@angular-devkit/core": "11.2.12", - "ora": "5.3.0", - "rxjs": "6.6.3" + "dependencies": { + "tslib": "^1.9.0" }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/core/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/schematics": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.2.2.tgz", + "integrity": "sha512-kXPLTkSzRCeBX+SYUkC6MIrWCkH90Y8hVegR9R5n2YqhCJyE+dZlcx4d/8d3VHtZlzAs0LL8BU+liC3wMIagjA==", + "dev": true, "dependencies": { - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } + "@angular-devkit/core": "13.2.2", + "jsonc-parser": "3.0.0", + "magic-string": "0.25.7", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "@angular/animations": { - "version": "11.2.13", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-11.2.13.tgz", - "integrity": "sha512-+TcJbMmKZI4kbSLp7TCJzOYkm90qe54OLWcNH6bi2NC9S0QsXaPo73yRP8sERjg/DjRj+wBf3LY63FvHZmqcTA==", - "requires": { - "tslib": "^2.0.0" + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" } }, - "@angular/cli": { - "version": "11.2.12", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-11.2.12.tgz", - "integrity": "sha512-4VkHfHO4QuTkGFw5Tx7khZxsNHp60VKk8JzmPF6KIjkrDUVWVNwKOFOnJtbz9cXvayiUNNSEWqo9Oq3513zz4g==", + "node_modules/@angular-devkit/schematics/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular/animations": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.2.1.tgz", + "integrity": "sha512-Wvuu5OU0T5BlavE0IQohuXWiQUHHmrrkhZSxqatsSno2v1au5u/SJGSGo4RojBKsSm627Z/grLjOT6YA21CObA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/core": "13.2.1" + } + }, + "node_modules/@angular/cli": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.2.2.tgz", + "integrity": "sha512-i9pBm5bVWnabwrsw1Ut84BqGu75+Nol6sReh8NTs7zUdCKNC00kqFBZg/1nGGw0IwL3Q+W7rJMgZ9q0qAtFTXg==", "dev": true, - "requires": { - "@angular-devkit/architect": "0.1102.12", - "@angular-devkit/core": "11.2.12", - "@angular-devkit/schematics": "11.2.12", - "@schematics/angular": "11.2.12", - "@schematics/update": "0.1102.12", + "hasInstallScript": true, + "dependencies": { + "@angular-devkit/architect": "0.1302.2", + "@angular-devkit/core": "13.2.2", + "@angular-devkit/schematics": "13.2.2", + "@schematics/angular": "13.2.2", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", - "debug": "4.3.1", + "debug": "4.3.3", "ini": "2.0.0", - "inquirer": "7.3.3", + "inquirer": "8.2.0", "jsonc-parser": "3.0.0", - "npm-package-arg": "8.1.0", - "npm-pick-manifest": "6.1.0", - "open": "7.4.0", - "ora": "5.3.0", - "pacote": "11.2.4", - "resolve": "1.19.0", - "rimraf": "3.0.2", - "semver": "7.3.4", - "symbol-observable": "3.0.0", - "universal-analytics": "0.4.23", + "npm-package-arg": "8.1.5", + "npm-pick-manifest": "6.1.1", + "open": "8.4.0", + "ora": "5.4.1", + "pacote": "12.0.3", + "resolve": "1.22.0", + "semver": "7.3.5", + "symbol-observable": "4.0.0", "uuid": "8.3.2" }, - "dependencies": { - "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "requires": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "@angular/common": { - "version": "11.2.13", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-11.2.13.tgz", - "integrity": "sha512-96iZ4wlZado78yG6eY/ZmY6+H2X2hJi2XsK7iXKzc5h3oeILEkt+ulfBNkCNjMm8xPYBmLrSBueG96/T4/Bi5w==", - "requires": { - "tslib": "^2.0.0" + "node_modules/@angular/common": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.2.1.tgz", + "integrity": "sha512-LQgN4thG0NGPG+orKg7/2JiYCKjtZ1T2NKFwRt3dHYbNiHdwNCxkwZPqW1BMSpN6la/QB6aLTkuMV52t2S8FmA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/core": "13.2.1", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "@angular/compiler": { - "version": "11.2.13", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-11.2.13.tgz", - "integrity": "sha512-HI7gfVozFW/rQoab0zVyYpU8PRHNWMk+pLc+q3ukVuByCmnBZ6kTAEQX2jnXVY8QGMmdptBgrsW/OsFaws98Zw==", - "requires": { - "tslib": "^2.0.0" + "node_modules/@angular/compiler": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.2.1.tgz", + "integrity": "sha512-CI3EFP8GwpTe+MFoEntWG4LQbq7rfCjP9ZVkKF1F5enA+CPZjYFGQ5qog3D5hnntMeQBU2iw7ZHNVlVfsmfTIQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" } }, - "@angular/compiler-cli": { - "version": "11.2.13", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-11.2.13.tgz", - "integrity": "sha512-AaIip0gdeNTcXAhxsGAudybdmaSwQ0BoxsdPIZRb9jokHAP4pCKx9aFJFbvTHB99kbKV7zEmGMCbsoRkRhxnJw==", + "node_modules/@angular/compiler-cli": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.2.1.tgz", + "integrity": "sha512-sUJVdHxX1JtUu5qsM2g+l8xtVlfTPcQiIgD3UU5iYT6Twzhs3g5iuqD+C0x5US/x45eXiL87fvs8XW/kNSDfwQ==", "dev": true, - "requires": { + "dependencies": { "@babel/core": "^7.8.6", - "@babel/types": "^7.8.6", - "canonical-path": "1.0.0", "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", - "dependency-graph": "^0.7.2", - "fs-extra": "4.0.2", + "dependency-graph": "^0.11.0", "magic-string": "^0.25.0", - "minimist": "^1.2.0", "reflect-metadata": "^0.1.2", - "semver": "^6.3.0", - "source-map": "^0.6.1", + "semver": "^7.0.0", "sourcemap-codec": "^1.4.8", - "tslib": "^2.0.0", - "yargs": "^16.2.0" + "tslib": "^2.3.0", + "yargs": "^17.2.1" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", - "dev": true - } + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/main-ngcc.js" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/compiler": "13.2.1", + "typescript": ">=4.4.2 <4.6" } }, - "@angular/core": { - "version": "11.2.13", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-11.2.13.tgz", - "integrity": "sha512-xMKskq/Sbf8dkX/vx4WCwXMpDTJJ77rGlP8fVTB8az8QeOa14i6AdpmSXaJ8sl68R3v8Y1Pa9yBQytbKuxShqQ==", - "requires": { - "tslib": "^2.0.0" + "node_modules/@angular/core": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.2.1.tgz", + "integrity": "sha512-+V/ZUuMqXDXM5Moo9wWbkM9O55POqAyP0oECoYvVStCDLDXGfWGOSysJIbsp07dsoEx8/kmKWV7Q7ZdHMTVvJg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.11.4" } }, - "@angular/forms": { - "version": "11.2.13", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-11.2.13.tgz", - "integrity": "sha512-Q5vNHycS+II2xYOE/HJB4NoYg/Ngg6hPF+0KXdCA7L4kfrwx5Fsi4oZ6gRRnSpzSGedISpSU4VE5wPiq7zJ3+A==", - "requires": { - "tslib": "^2.0.0" + "node_modules/@angular/forms": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.2.1.tgz", + "integrity": "sha512-3bTxNRmamN6+0eNdd+kYk2XDfPxXYeAIvRlm8MFM9/buP/tlcCusAvnkHABUJ9wX/2kezOXMOkWtO9LfyyNLIg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/common": "13.2.1", + "@angular/core": "13.2.1", + "@angular/platform-browser": "13.2.1", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "@angular/language-service": { - "version": "11.2.13", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-11.2.13.tgz", - "integrity": "sha512-nOqFJEsdmA0qHmINT0aLXrP5wjnDuOYCjLtBTv7qvvJX2mO3/9RK2uKZuMXyLPjBBQ20k7vPOAfs3vk+V05RKg==", - "dev": true - }, - "@angular/platform-browser": { - "version": "11.2.13", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.2.13.tgz", - "integrity": "sha512-V70Pf3jJPbeXsiy9mtVMctVBIIoqiDhsoI+6lCehf/LaJR33oUizj+RS1wlpgOECIj9oD5EqzdvxEukR0PpnoQ==", - "requires": { - "tslib": "^2.0.0" + "node_modules/@angular/platform-browser": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.2.1.tgz", + "integrity": "sha512-9idmGsWqLMhslMnG6+GojNO7L2IRM0DOeUlTo/x28zTedg6f7j2wRJ+ZxfTVRhf75Y3NXOjJ0bfKnLkHOzA+Aw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/animations": "13.2.1", + "@angular/common": "13.2.1", + "@angular/core": "13.2.1" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } } }, - "@angular/platform-browser-dynamic": { - "version": "11.2.13", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.2.13.tgz", - "integrity": "sha512-EHCG8fhnurhHUq+XKyKL3bYEcQThRYyzIJTJig28ulgvQd4TAKAbw8osL9rpjNUnCM1HjDXOqnCcPnsQIPIzMg==", - "requires": { - "tslib": "^2.0.0" + "node_modules/@angular/platform-browser-dynamic": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.2.1.tgz", + "integrity": "sha512-1kCm3TQXY2jWnyrQo3yPb+lZOSzAOtLYvDo0GJ5CggkCCYoVUMj3Iie2K60qcJ8RUd11JNHAed2yvrtwgIm+jA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/common": "13.2.1", + "@angular/compiler": "13.2.1", + "@angular/core": "13.2.1", + "@angular/platform-browser": "13.2.1" } }, - "@angular/router": { - "version": "11.2.13", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-11.2.13.tgz", - "integrity": "sha512-Fae/ViC4Ho2rGF5wQLrnJcucuhVGx29QqZs2K0C6sj4UUNRUzYWZknnGWqRj3Z9ft7XIi38Q2yCkSc76iS1aqQ==", - "requires": { - "tslib": "^2.0.0" + "node_modules/@angular/router": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.2.1.tgz", + "integrity": "sha512-+UkzW1ODV8GgL2ft6eMmJKYl4rqw6iwh3y5IEenF52X8zmnjjR0/ts/86FmaCfnpaE5S6hwnsopin9LBYVbVTQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/common": "13.2.1", + "@angular/core": "13.2.1", + "@angular/platform-browser": "13.2.1", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "node_modules/@assemblyscript/loader": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, - "requires": { - "@babel/highlight": "^7.12.13" + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/compat-data": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", - "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", - "dev": true + "node_modules/@babel/compat-data": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", + "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/core": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz", - "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.10", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.10", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.10", - "@babel/types": "^7.12.10", + "node_modules/@babel/core": { + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", + "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "lodash": "^4.17.19", - "semver": "^5.4.1", + "semver": "^6.3.0", "source-map": "^0.5.0" }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "@babel/generator": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", - "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "requires": { - "@babel/types": "^7.12.11", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/core/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.8", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true, - "requires": { - "@babel/types": "^7.12.13" + "engines": { + "node": ">=0.10.0" } }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-compilation-targets": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", - "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", "dev": true, - "requires": { - "@babel/compat-data": "^7.13.15", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", - "semver": "^6.3.0" - }, "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-create-class-features-plugin": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.1.tgz", - "integrity": "sha512-r8rsUahG4ywm0QpGcCrLaUSOuNAISR3IZCg4Fx05Ozq31aCUrQsTLH6KPxy0N5ULoQ4Sn9qjNdGNtbPWAC6hYg==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13" - }, "dependencies": { - "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true - }, - "@babel/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", - "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.0", - "to-fast-properties": "^2.0.0" - } - } + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "regexpu-core": "^4.7.1" + "bin": { + "semver": "bin/semver.js" } }, - "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz", + "integrity": "sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ==", "dev": true, - "requires": { - "@babel/types": "^7.13.0" + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + }, + "engines": { + "node": ">=6.9.0" }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, "dependencies": { - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - } + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" } }, - "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "requires": { - "@babel/types": "^7.12.13" + "bin": { + "semver": "bin/semver.js" } }, - "@babel/helper-hoist-variables": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz", - "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==", + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", "dev": true, - "requires": { - "@babel/traverse": "^7.13.15", - "@babel/types": "^7.13.16" - }, "dependencies": { - "@babel/generator": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", - "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", - "dev": true, - "requires": { - "@babel/types": "^7.14.1", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true - }, - "@babel/parser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", - "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", - "dev": true - }, - "@babel/traverse": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", - "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.14.0", - "@babel/types": "^7.14.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", - "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.0", - "to-fast-properties": "^2.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz", - "integrity": "sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==", + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", "dev": true, - "requires": { - "@babel/types": "^7.13.0" + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-module-imports": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", - "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", + "node_modules/@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, - "requires": { - "@babel/types": "^7.12.13" + "dependencies": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-module-transforms": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz", - "integrity": "sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==", + "node_modules/@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", - "lodash": "^4.17.19" - }, "dependencies": { - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - } + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, - "requires": { - "@babel/types": "^7.12.13" + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-replace-supers": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz", - "integrity": "sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==", + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-simple-access": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", - "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", + "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", "dev": true, - "requires": { - "@babel/types": "^7.12.13" + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", "dev": true, - "requires": { - "@babel/types": "^7.12.1" + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", "dev": true, - "requires": { - "@babel/types": "^7.12.13" + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", "dev": true, - "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - }, "dependencies": { - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - } + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helpers": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.0.tgz", - "integrity": "sha512-aan1MeFPxFacZeSz6Ld7YZo5aPuqnKlD7+HZY75xQsueczFccP9A7V05+oe0XpLwHK3oLorPe9eaAUljL7WEaQ==", + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", "dev": true, - "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - }, "dependencies": { - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - } + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/highlight": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", - "integrity": "sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw==", + "node_modules/@babel/helper-simple-access": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/parser": { - "version": "7.13.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.4.tgz", - "integrity": "sha512-uvoOulWHhI+0+1f9L4BoozY7U5cIkZ9PgJqvb041d6vypgUmtVPG4vmGm4pSggjl8BELzvHyUeJSUyEMY6b+qA==", - "dev": true - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", - "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", + "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", + "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", + "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", + "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", "dev": true, - "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-async-generators": { + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-class-properties": { + "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-dynamic-import": { + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-export-namespace-from": { + "node_modules/@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-json-strings": { + "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-logical-assignment-operators": { + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-nullish-coalescing-operator": { + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-numeric-separator": { + "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-object-rest-spread": { + "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-optional-catch-binding": { + "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-optional-chaining": { + "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", - "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-block-scoping": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz", - "integrity": "sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", - "globals": "^11.1.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "node_modules/@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-destructuring": { - "version": "7.13.17", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", - "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", + "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", "dev": true, - "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "node_modules/@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-amd": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz", - "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, "dependencies": { - "@babel/generator": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", - "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", - "dev": true, - "requires": { - "@babel/types": "^7.14.1", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-module-transforms": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", - "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" - } - }, - "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true - }, - "@babel/parser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", - "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", - "dev": true - }, - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/traverse": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", - "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.14.0", - "@babel/types": "^7.14.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", - "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.0", - "to-fast-properties": "^2.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", - "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.13.12", + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, - "dependencies": { - "@babel/generator": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", - "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", - "dev": true, - "requires": { - "@babel/types": "^7.14.1", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-module-transforms": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", - "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" - } - }, - "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true - }, - "@babel/parser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", - "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", - "dev": true - }, - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/traverse": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", - "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.14.0", - "@babel/types": "^7.14.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", - "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.0", - "to-fast-properties": "^2.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", + "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-umd": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", - "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", + "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "dev": true, "dependencies": { - "@babel/generator": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", - "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", - "dev": true, - "requires": { - "@babel/types": "^7.14.1", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-module-transforms": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", - "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" - } - }, - "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true - }, - "@babel/parser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", - "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", - "dev": true - }, - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/traverse": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", - "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.14.0", - "@babel/types": "^7.14.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", - "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.0", - "to-fast-properties": "^2.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-regenerator": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", - "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", + "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", "dev": true, - "requires": { + "dependencies": { "regenerator-transform": "^0.14.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-runtime": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz", - "integrity": "sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA==", + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.10.tgz", + "integrity": "sha512-9nwTiqETv2G7xI4RvXHNfpGdr8pAA+Q/YtN3yLK7OoK7n9OibVm/xymJ838a9A6E/IciOLPj82lZk0fW6O4O7w==", "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.12.5", - "@babel/helper-plugin-utils": "^7.10.4", - "semver": "^5.5.1" - }, "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "bin": { + "semver": "bin/semver.js" } }, - "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/preset-env": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", - "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.12.7", - "@babel/helper-compilation-targets": "^7.12.5", - "@babel/helper-module-imports": "^7.12.5", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-option": "^7.12.11", - "@babel/plugin-proposal-async-generator-functions": "^7.12.1", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-dynamic-import": "^7.12.1", - "@babel/plugin-proposal-export-namespace-from": "^7.12.1", - "@babel/plugin-proposal-json-strings": "^7.12.1", - "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", - "@babel/plugin-proposal-numeric-separator": "^7.12.7", - "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.7", - "@babel/plugin-proposal-private-methods": "^7.12.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.12.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.12.1", - "@babel/plugin-transform-arrow-functions": "^7.12.1", - "@babel/plugin-transform-async-to-generator": "^7.12.1", - "@babel/plugin-transform-block-scoped-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.11", - "@babel/plugin-transform-classes": "^7.12.1", - "@babel/plugin-transform-computed-properties": "^7.12.1", - "@babel/plugin-transform-destructuring": "^7.12.1", - "@babel/plugin-transform-dotall-regex": "^7.12.1", - "@babel/plugin-transform-duplicate-keys": "^7.12.1", - "@babel/plugin-transform-exponentiation-operator": "^7.12.1", - "@babel/plugin-transform-for-of": "^7.12.1", - "@babel/plugin-transform-function-name": "^7.12.1", - "@babel/plugin-transform-literals": "^7.12.1", - "@babel/plugin-transform-member-expression-literals": "^7.12.1", - "@babel/plugin-transform-modules-amd": "^7.12.1", - "@babel/plugin-transform-modules-commonjs": "^7.12.1", - "@babel/plugin-transform-modules-systemjs": "^7.12.1", - "@babel/plugin-transform-modules-umd": "^7.12.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", - "@babel/plugin-transform-new-target": "^7.12.1", - "@babel/plugin-transform-object-super": "^7.12.1", - "@babel/plugin-transform-parameters": "^7.12.1", - "@babel/plugin-transform-property-literals": "^7.12.1", - "@babel/plugin-transform-regenerator": "^7.12.1", - "@babel/plugin-transform-reserved-words": "^7.12.1", - "@babel/plugin-transform-shorthand-properties": "^7.12.1", - "@babel/plugin-transform-spread": "^7.12.1", - "@babel/plugin-transform-sticky-regex": "^7.12.7", - "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/plugin-transform-typeof-symbol": "^7.12.10", - "@babel/plugin-transform-unicode-escapes": "^7.12.1", - "@babel/plugin-transform-unicode-regex": "^7.12.1", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.12.11", - "core-js-compat": "^3.8.0", - "semver": "^5.5.0" + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.8", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.20.2", + "semver": "^6.3.0" }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "requires": { + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "node_modules/@babel/runtime": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", + "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", "dev": true, - "requires": { + "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/template": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", - "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.12.7", - "@babel/types": "^7.12.7" + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "node_modules/@babel/traverse": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", + "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.0", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.0", + "@babel/types": "^7.17.0", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "globals": "^11.1.0" }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", + "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", + "dev": true, "dependencies": { - "@babel/generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.0.tgz", - "integrity": "sha512-zBZfgvBB/ywjx0Rgc2+BwoH/3H+lDtlgD4hBOpEv5LxRnYsm/753iRuLepqnYlynpjC3AdQxtxsoeHJoEEwOAw==", - "dev": true, - "requires": { - "@babel/types": "^7.13.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "node_modules/@babel/traverse/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@discoveryjs/json-ext": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", - "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", + "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", + "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", "dev": true }, - "@istanbuljs/schema": { + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "@jsdevtools/coverage-istanbul-loader": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz", - "integrity": "sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz", + "integrity": "sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==", "dev": true, - "requires": { - "convert-source-map": "^1.7.0", - "istanbul-lib-instrument": "^4.0.3", - "loader-utils": "^2.0.0", - "merge-source-map": "^1.1.0", - "schema-utils": "^2.7.0" + "engines": { + "node": ">=6.0.0" } }, - "@ngtools/webpack": { - "version": "11.2.12", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.2.12.tgz", - "integrity": "sha512-YgzgJ72oGLvYVQH1c+pqJQRO5OE8axPt8HwPdueL/1g3rEwJgbeUrnIqw/eri7iTgFZflQRcePAA7dIz2uHwcw==", + "node_modules/@ngtools/webpack": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.2.2.tgz", + "integrity": "sha512-BkykqIIJgSllNT6f+8IoZtJaI8uKdq62LteoWMMtvAxXErqRLN6CcDxPWjP8tfeEKeCYZ41ueZwNK5V05SsCIg==", "dev": true, - "requires": { - "@angular-devkit/core": "11.2.12", - "enhanced-resolve": "5.7.0", - "webpack-sources": "2.2.0" + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^13.0.0", + "typescript": ">=4.4.3 <4.6", + "webpack": "^5.30.0" } }, - "@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.4", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", - "dev": true + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } }, - "@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.4", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "@npmcli/ci-detect": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz", - "integrity": "sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q==", - "dev": true + "node_modules/@npmcli/fs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.0.tgz", + "integrity": "sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } }, - "@npmcli/git": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.0.9.tgz", - "integrity": "sha512-hTMbMryvOqGLwnmMBKs5usbPsJtyEsMsgXwJbmNrsEuQQh1LAIMDU77IoOrwkCg+NgQWl+ySlarJASwM3SutCA==", + "node_modules/@npmcli/git": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", + "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", "dev": true, - "requires": { + "dependencies": { "@npmcli/promise-spawn": "^1.3.2", "lru-cache": "^6.0.0", "mkdirp": "^1.0.4", @@ -2130,1159 +2356,1173 @@ "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^2.0.2" - }, + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "dependencies": { - "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "npm-package-arg": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.2.tgz", - "integrity": "sha512-6Eem455JsSMJY6Kpd3EyWE+n5hC+g9bSyHr9K9U2zqZb7+02+hObQ2c0+8iDk/mNF+8r1MhY44WypKJAkySIYA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" - } - }, - "npm-pick-manifest": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", - "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", - "dev": true, - "requires": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "^7.3.4" - } - }, - "promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "@npmcli/installed-package-contents": { + "node_modules/@npmcli/installed-package-contents": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", "dev": true, - "requires": { + "dependencies": { "npm-bundled": "^1.1.1", "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" } }, - "@npmcli/move-file": { + "node_modules/@npmcli/move-file": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", "dev": true, - "requires": { + "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" } }, - "@npmcli/node-gyp": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz", - "integrity": "sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg==", + "node_modules/@npmcli/node-gyp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", "dev": true }, - "@npmcli/promise-spawn": { + "node_modules/@npmcli/promise-spawn": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", "dev": true, - "requires": { + "dependencies": { "infer-owner": "^1.0.4" } }, - "@npmcli/run-script": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.5.tgz", - "integrity": "sha512-NQspusBCpTjNwNRFMtz2C5MxoxyzlbuJ4YEhxAKrIonTiirKDtatsZictx9RgamQIx6+QuHMNmPl0wQdoESs9A==", + "node_modules/@npmcli/run-script": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-2.0.0.tgz", + "integrity": "sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig==", "dev": true, - "requires": { + "dependencies": { "@npmcli/node-gyp": "^1.0.2", "@npmcli/promise-spawn": "^1.3.2", - "infer-owner": "^1.0.4", - "node-gyp": "^7.1.0", + "node-gyp": "^8.2.0", "read-package-json-fast": "^2.0.1" - }, - "dependencies": { - "read-package-json-fast": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.2.tgz", - "integrity": "sha512-5fyFUyO9B799foVk4n6ylcoAktG/FbE3jwRKxvwaeSrIunaoMc0u81dzXxjeAFKOce7O5KncdfwpGvvs6r5PsQ==", - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - } } }, - "@schematics/angular": { - "version": "11.2.12", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-11.2.12.tgz", - "integrity": "sha512-QCFdJhJtHrytl2L9VAdKYzSS1+R5LpjQ+pw3f/10YeEEoUHk7QyuYXmMnreCYBWSKrloO+3Q+vhdnVWUQZSRng==", + "node_modules/@schematics/angular": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.2.2.tgz", + "integrity": "sha512-LfTtu82I7K+BoSzSXV8gA5+ARhtOtOi/qY0uj2782/xzpe+zCbbftgc6MHiSx/a3KO7IStDwf7G6mjqas0v+4g==", "dev": true, - "requires": { - "@angular-devkit/core": "11.2.12", - "@angular-devkit/schematics": "11.2.12", + "dependencies": { + "@angular-devkit/core": "13.2.2", + "@angular-devkit/schematics": "13.2.2", "jsonc-parser": "3.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "@schematics/update": { - "version": "0.1102.12", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1102.12.tgz", - "integrity": "sha512-3Gm/0izWhfHqXCKENkVVqFJVkJN4+mebevSlXqlQjwLMwJNY5Yt3FMyDSxYx6s2d9MC2stODOjwjsLhd6SdafQ==", + "node_modules/@socket.io/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", "dev": true, - "requires": { - "@angular-devkit/core": "11.2.12", - "@angular-devkit/schematics": "11.2.12", - "@yarnpkg/lockfile": "1.1.0", - "ini": "2.0.0", - "npm-package-arg": "^8.0.0", - "pacote": "11.2.4", - "semver": "7.3.4", - "semver-intersect": "1.4.0" + "engines": { + "node": ">= 0.6.0" } }, - "@tootallnate/once": { + "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true + "dev": true, + "engines": { + "node": ">= 6" + } }, - "@trysound/sax": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.1.1.tgz", - "integrity": "sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow==", - "dev": true + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } }, - "@types/component-emitter": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", - "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==", + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/component-emitter": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", + "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", "dev": true }, - "@types/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==", + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", "dev": true }, - "@types/cors": { - "version": "2.8.10", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", - "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", + "node_modules/@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", "dev": true }, - "@types/crypto-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.0.1.tgz", - "integrity": "sha512-6+OPzqhKX/cx5xh+yO8Cqg3u3alrkhoxhE5ZOdSEv0DOzJ13lwJ6laqGU0Kv6+XDMFmlnGId04LtY22PsFLQUw==", + "node_modules/@types/crypto-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.0.tgz", + "integrity": "sha512-DCFfy/vh2lG6qHSGezQ+Sn2Ulf/1Mx51dqOdmOKyW5nMK3maLlxeS3onC7r212OnBM2pBR95HkAmAjjF08YkxQ==", "dev": true }, - "@types/file-saver": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.1.tgz", - "integrity": "sha512-g1QUuhYVVAamfCifK7oB7G3aIl4BbOyzDOqVyUfEr4tfBKrXfeH+M+Tg7HKCXSrbzxYdhyCP7z9WbKo0R2hBCw==", + "node_modules/@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", "dev": true }, - "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "@types/hammerjs": { - "version": "2.0.39", - "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.39.tgz", - "integrity": "sha512-lYR2Y/tV2ujpk/WyUc7S0VLI0a9hrtVIN9EwnrNo5oSEJI2cK2/XrgwOQmXLL3eTulOESvh9qP6si9+DWM9cOA==", + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-zv9kNf3keYegP5oThGLaPk8E081DFDuwfqjtiTzm6PoxChdJ1raSuADf2YGCVIyrSynLrgc8JWv296s7Q7pQSQ==", "dev": true }, - "@types/jasmine": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.4.tgz", - "integrity": "sha512-CTdMERA4iGNcxeqzD7pavb4WLIFq6bGnx6nIJD+1D4Knx24GE6QBPrWVhO8UlIy7gf7rbIt3ZD7iIzryRD2TgA==", + "node_modules/@types/hammerjs": { + "version": "2.0.41", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", + "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==", "dev": true }, - "@types/jasminewd2": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.8.tgz", - "integrity": "sha512-d9p31r7Nxk0ZH0U39PTH0hiDlJ+qNVGjlt1ucOoTUptxb2v+Y5VMnsxfwN+i3hK4yQnqBi3FMmoMFcd1JHDxdg==", + "node_modules/@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", "dev": true, - "requires": { + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/jasmine": { + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.3.tgz", + "integrity": "sha512-SWyMrjgdAUHNQmutvDcKablrJhkDLy4wunTme8oYLjKp41GnHGxMRXr2MQMvy/qy8H3LdzwQk9gH4hZ6T++H8g==", + "dev": true + }, + "node_modules/@types/jasminewd2": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.10.tgz", + "integrity": "sha512-J7mDz7ovjwjc+Y9rR9rY53hFWKATcIkrr9DwQWmOas4/pnIPJTXawnzjwpHm3RSxz/e3ZVUvQ7cRbd5UQLo10g==", + "dev": true, + "dependencies": { "@types/jasmine": "*" } }, - "@types/js-yaml": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.0.tgz", - "integrity": "sha512-4vlpCM5KPCL5CfGmTbpjwVKbISRYhduEJvvUWsH5EB7QInhEj94XPZ3ts/9FPiLZFqYO0xoW4ZL8z2AabTGgJA==", + "node_modules/@types/js-yaml": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", "dev": true }, - "@types/json-schema": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", - "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "node_modules/@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, - "@types/jszip": { + "node_modules/@types/jszip": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/@types/jszip/-/jszip-3.4.1.tgz", "integrity": "sha512-TezXjmf3lj+zQ651r6hPqvSScqBLvyPI9FxdXBqpEwBijNGQ2NXpaFW/7joGzveYkKQUil7iiDHLo6LV71Pc0A==", + "deprecated": "This is a stub types definition. jszip provides its own type definitions, so you do not need this installed.", "dev": true, - "requires": { + "dependencies": { "jszip": "*" } }, - "@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", "dev": true }, - "@types/msgpack-lite": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@types/msgpack-lite/-/msgpack-lite-0.1.7.tgz", - "integrity": "sha512-OYPf2ExHl0TKuDn7M/356RDyCiqOQEs8f+SfePpbfHJJ7C8mqgp4ShgeUTuE8W7Tui2txbyVPiRiDPeK3D9PPA==", + "node_modules/@types/msgpack-lite": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@types/msgpack-lite/-/msgpack-lite-0.1.8.tgz", + "integrity": "sha512-3qIhe8MH1kGcXnB5YuY6W0lLb9LEcWrhanDYfw0zKdXAv+CNKG0+6To1X8dqVyrxKb3FeAgJBJS5RdFwBQteVg==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*" } }, - "@types/node": { - "version": "12.20.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.4.tgz", - "integrity": "sha512-xRCgeE0Q4pT5UZ189TJ3SpYuX/QGl6QIAOAIeDSbAVAd2gX1NxSZup4jNVK7cxIeP8KDSbJgcckun495isP1jQ==", + "node_modules/@types/node": { + "version": "12.20.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.43.tgz", + "integrity": "sha512-HCfJdaYqJX3BCzeihgZrD7b85Cu05OC/GVJ4kEYIflwUs4jbnUlLLWoq7hw1LBcdvUyehO+gr6P5JQ895/2ZfA==", "dev": true }, - "@types/pako": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.1.tgz", - "integrity": "sha512-GdZbRSJ3Cv5fiwT6I0SQ3ckeN2PWNqxd26W9Z2fCK1tGrrasGy4puvNFtnddqH9UJFMQYXxEuuB7B8UK+LLwSg==", + "node_modules/@types/pako": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.3.tgz", + "integrity": "sha512-EDxOsHAD5dqjbjEUM1xwa7rpKPFb8ECBE5irONTQU7/OsO3thI5YrNEWSPNMvYmvFM0l/OLQJ6Mgw7PEdXSjhg==", "dev": true }, - "@types/parse-json": { + "node_modules/@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, - "@types/selenium-webdriver": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", - "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==", + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", "dev": true }, - "@types/source-list-map": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", - "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", "dev": true }, - "@types/vkbeautify": { - "version": "0.99.2", - "resolved": "https://registry.npmjs.org/@types/vkbeautify/-/vkbeautify-0.99.2.tgz", - "integrity": "sha512-zbBKJTu2GRURMTj0vFSYRTnOB7Fz7uDZEFKLEkF1tbALUWHSPE84/VwCeJtM1YFOavtbp6xylFkLt6OxT6IG9A==", + "node_modules/@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", "dev": true }, - "@types/webpack-sources": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.8.tgz", - "integrity": "sha512-JHB2/xZlXOjzjBB6fMOpH1eQAfsrpqVVIbneE0Rok16WXwFaznaI5vfg75U5WgGJm7V9W1c4xeRQDjX/zwvghA==", + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", "dev": true, - "requires": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.6.1" - }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "@types/express": "*" } }, - "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" } }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "dev": true + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } }, - "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "node_modules/@types/vkbeautify": { + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@types/vkbeautify/-/vkbeautify-0.99.2.tgz", + "integrity": "sha512-zbBKJTu2GRURMTj0vFSYRTnOB7Fz7uDZEFKLEkF1tbALUWHSPE84/VwCeJtM1YFOavtbp6xylFkLt6OxT6IG9A==", "dev": true }, - "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true + "node_modules/@types/ws": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", + "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" } }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0" + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" } }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" } }, - "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, - "requires": { + "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, - "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, - "requires": { + "dependencies": { "@xtuc/long": "4.2.2" } }, - "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true }, - "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" } }, - "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, - "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" } }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" } }, - "@xtuc/ieee754": { + "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true }, - "@xtuc/long": { + "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, - "@yarnpkg/lockfile": { + "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true }, - "abab": { + "node_modules/abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", "dev": true }, - "abbrev": { + "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" } }, - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true + "node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, - "adjust-sourcemap-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz", - "integrity": "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==", + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", "dev": true, - "requires": { + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "dependencies": { "loader-utils": "^2.0.0", "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" } }, - "adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } }, - "agent-base": { + "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, - "requires": { + "dependencies": { "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" } }, - "agentkeepalive": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz", - "integrity": "sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==", + "node_modules/agentkeepalive": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.0.tgz", + "integrity": "sha512-0PhAp58jZNw13UJv7NVdTGb0ZcghHUb3DrZ046JiiJY/BOaTTpbwdHq2VObPCBV8M2GPh7sgrJ3AQ8Ey468LJw==", "dev": true, - "requires": { + "dependencies": { "debug": "^4.1.0", "depd": "^1.1.2", "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" } }, - "aggregate-error": { + "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "requires": { + "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", "dev": true, - "requires": { + "dependencies": { "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } }, - "ansi-colors": { + "node_modules/ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "ansi-escapes": { + "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "requires": { + "dependencies": { "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "ansi-styles": { + "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "requires": { + "dependencies": { "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, - "requires": { + "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "app-root-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", - "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", - "dev": true - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "dev": true }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", "dev": true, - "requires": { + "dependencies": { "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" } }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, - "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "arity-n": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", - "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=", - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "node_modules/are-we-there-yet/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "node_modules/are-we-there-yet/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "array-flatten": { + "node_modules/array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "node_modules/array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" + "engines": { + "node": ">=12" }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", - "dev": true - }, - "async": { + "node_modules/async": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "dev": true, - "requires": { + "dependencies": { "lodash": "^4.17.14" } }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { + "node_modules/atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "autoprefixer": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.4.tgz", - "integrity": "sha512-DCCdUQiMD+P/as8m3XkeTUkUKuuRqLGcwD0nll7wevhqoJfMRpJlkFd1+MQh1pvupjiQuip42lc/VFvfUTMSKw==", "dev": true, - "requires": { - "browserslist": "^4.16.1", - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "fraction.js": "^4.0.13", - "normalize-range": "^0.1.2", - "postcss-value-parser": "^4.1.0" + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" } }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "axobject-query": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", - "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "node_modules/autoprefixer": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", + "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==", "dev": true, - "requires": { - "ast-types-flow": "0.0.7" + "dependencies": { + "browserslist": "^4.19.1", + "caniuse-lite": "^1.0.30001297", + "fraction.js": "^4.1.2", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "babel-loader": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", - "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "node_modules/babel-loader": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", + "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", "dev": true, - "requires": { + "dependencies": { "find-cache-dir": "^3.3.1", "loader-utils": "^1.4.0", "make-dir": "^3.1.0", "schema-utils": "^2.6.5" }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, - "babel-plugin-dynamic-import-node": { + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, - "requires": { + "dependencies": { "object.assign": "^4.1.0" } }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "base64-js": { + "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "base64id": { + "node_modules/base64id": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } }, - "batch": { + "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big.js": { + "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "binary-extensions": { + "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "bl": { + "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "requires": { + "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" - }, + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bl/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } + { + "type": "consulting", + "url": "https://feross.org/support" } - } + ] }, - "blocking-proxy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", - "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "node_modules/bl/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, - "requires": { - "minimist": "^1.2.0" + "dependencies": { + "safe-buffer": "~5.2.0" } }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "node_modules/body-parser": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", + "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", "dev": true, - "requires": { - "bytes": "3.1.0", + "dependencies": { + "bytes": "3.1.1", "content-type": "~1.0.4", "debug": "2.6.9", "depd": "~1.1.2", - "http-errors": "1.7.2", + "http-errors": "1.8.1", "iconv-lite": "0.4.24", "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "qs": "6.9.6", + "raw-body": "2.4.2", + "type-is": "~1.6.18" }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "ms": "2.0.0" } }, - "bonjour": { + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/bonjour": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", "dev": true, - "requires": { + "dependencies": { "array-flatten": "^2.1.0", "deep-equal": "^1.0.1", "dns-equal": "^1.0.0", @@ -3291,256 +3531,115 @@ "multicast-dns-service-types": "^1.1.0" } }, - "boolbase": { + "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, - "brace-expansion": { + "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "requires": { + "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "braces": { + "node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "requires": { + "dependencies": { "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } + "engines": { + "node": ">=8" } }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "node_modules/browserslist": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", "dev": true, - "requires": { - "pako": "~1.0.5" - }, "dependencies": { - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - } - } - }, - "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", "escalade": "^3.1.1", - "node-releases": "^1.1.71" - } - }, - "browserstack": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.1.tgz", - "integrity": "sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==", - "dev": true, - "requires": { - "https-proxy-agent": "^2.2.1" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, - "dependencies": { - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - } - } + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" } }, - "buffer": { + "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, - "requires": { + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "buffer-indexof": { + "node_modules/buffer-indexof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "builtins": { + "node_modules/builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", "dev": true }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true + "node_modules/bytes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "cacache": { - "version": "15.0.5", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", - "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, - "requires": { + "dependencies": { + "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -3555,427 +3654,283 @@ "p-map": "^4.0.0", "promise-inflight": "^1.0.1", "rimraf": "^3.0.2", - "ssri": "^8.0.0", + "ssri": "^8.0.1", "tar": "^6.0.2", "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" } }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-bind": { + "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, - "requires": { + "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "callsites": { + "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" + "engines": { + "node": ">=6" } }, - "caniuse-lite": { - "version": "1.0.30001228", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", - "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", - "dev": true - }, - "canonical-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", - "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", - "dev": true + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true + "node_modules/caniuse-lite": { + "version": "1.0.30001309", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001309.tgz", + "integrity": "sha512-Pl8vfigmBXXq+/yUz1jUwULeq9xhMJznzdc/xwl4WclDAuebcTHVefpz8lE/bMI+UN7TOkSSe7B7RnZd6+dzjA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, - "chalk": { + "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "chardet": { + "node_modules/chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, - "requires": { - "anymatch": "~3.1.1", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", + "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "chownr": { + "node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "chrome-trace-event": { + "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "engines": { + "node": ">=6.0" } }, - "circular-dependency-plugin": { + "node_modules/circular-dependency-plugin": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "engines": { + "node": ">=6.0.0" }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "peerDependencies": { + "webpack": ">=4.0.1" } }, - "clean-stack": { + "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "cli-cursor": { + "node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, - "requires": { + "dependencies": { "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" } }, - "cli-spinners": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", - "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", - "dev": true + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "cli-width": { + "node_modules/cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true + "dev": true, + "engines": { + "node": ">= 10" + } }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "clone": { + "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8" + } }, - "clone-deep": { + "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, - "requires": { + "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "codelyzer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.1.tgz", - "integrity": "sha512-cOyGQgMdhnRYtW2xrJUNrNYDjEgwQ+BrE2y93Bwz3h4DJ6vJRLfupemU5N3pbYsUlBHJf0u1j1UGk+NLW4d97g==", - "dev": true, - "requires": { - "@angular/compiler": "9.0.0", - "@angular/core": "9.0.0", - "app-root-path": "^3.0.0", - "aria-query": "^3.0.0", - "axobject-query": "2.0.2", - "css-selector-tokenizer": "^0.7.1", - "cssauron": "^1.4.0", - "damerau-levenshtein": "^1.0.4", - "rxjs": "^6.5.3", - "semver-dsl": "^1.0.1", - "source-map": "^0.5.7", - "sprintf-js": "^1.1.2", - "tslib": "^1.10.0", - "zone.js": "~0.10.3" - }, - "dependencies": { - "@angular/compiler": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", - "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", - "dev": true - }, - "@angular/core": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", - "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", - "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", - "dev": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.4" - } - }, - "color-convert": { + "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "requires": { + "dependencies": { "color-name": "1.1.3" } }, - "color-name": { + "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "color-string": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", - "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "bin": { + "color-support": "bin.js" } }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "colors": { + "node_modules/colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, - "requires": { - "delayed-stream": "~1.0.0" + "engines": { + "node": ">=0.1.90" } }, - "commander": { + "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "commondir": { + "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "component-emitter": { + "node_modules/component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, - "compose-function": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", - "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", - "dev": true, - "requires": { - "arity-n": "^1.0.4" - } - }, - "compressible": { + "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, - "requires": { + "dependencies": { "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" } }, - "compression": { + "node_modules/compression": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, - "requires": { + "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", "compressible": "~2.0.16", @@ -3984,1530 +3939,1456 @@ "safe-buffer": "5.1.2", "vary": "~1.1.2" }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "ms": "2.0.0" } }, - "concat-map": { + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "connect": { + "node_modules/connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, - "requires": { + "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.2", "parseurl": "~1.3.3", "utils-merge": "1.0.1" }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "engines": { + "node": ">= 0.10.0" } }, - "connect-history-api-fallback": { + "node_modules/connect-history-api-fallback": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8" + } }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "console-control-strings": { + "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, - "requires": { - "safe-buffer": "5.1.2" + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" } }, - "content-type": { + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, - "requires": { + "dependencies": { "safe-buffer": "~5.1.1" } }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "cookie-signature": { + "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, - "copy-anything": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz", - "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==", + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, - "requires": { - "is-what": "^3.12.0" + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" } }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "node_modules/copy-webpack-plugin": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.1.tgz", + "integrity": "sha512-nr81NhCAIpAWXGCK5thrKmfCQ6GDY0L5RN0U+BnIn/7Us55+UCex5ANNsNKmIVtDRnk0Ecf+/kzp9SUVrrBMLg==", "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^12.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" }, + "engines": { + "node": ">= 12.20.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" } }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } }, - "copy-webpack-plugin": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.3.2.tgz", - "integrity": "sha512-MgJ1uouLIbDg4ST1GzqrGQyKoXY5iPqi6fghFqarijam7FQcBa/r6Rg0VkoIuzx75Xq8iAMghyOueMkWUQ5OaA==", + "node_modules/core-js": { + "version": "3.20.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz", + "integrity": "sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag==", "dev": true, - "requires": { - "cacache": "^15.0.5", - "fast-glob": "^3.2.4", - "find-cache-dir": "^3.3.1", - "glob-parent": "^5.1.1", - "globby": "^11.0.1", - "loader-utils": "^2.0.0", - "normalize-path": "^3.0.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "webpack-sources": "^1.4.3" - }, - "dependencies": { - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "core-js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", - "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=" - }, - "core-js-compat": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.12.1.tgz", - "integrity": "sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ==", + "node_modules/core-js-compat": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.0.tgz", + "integrity": "sha512-OSXseNPSK2OPJa6GdtkMz/XxeXx8/CJvfhQWTqd6neuUraujcL4jVsjkLQz1OWnax8xVQJnRPe0V2jqNWORA+A==", "dev": true, - "requires": { - "browserslist": "^4.16.6", + "dependencies": { + "browserslist": "^4.19.1", "semver": "7.0.0" }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, - "cors": { + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, - "requires": { + "dependencies": { "object-assign": "^4", "vary": "^1" + }, + "engines": { + "node": ">= 0.10" } }, - "cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, - "requires": { + "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" } }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "node_modules/critters": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", + "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } + "chalk": "^4.1.0", + "css-select": "^4.2.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "postcss": "^8.3.7", + "pretty-bytes": "^5.3.0" } }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "node_modules/critters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "node_modules/critters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "critters": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.7.tgz", - "integrity": "sha512-qUF2SaAWFYjNPdCcPpu68p2DnHiosia84yx5mPTlUMQjkjChR+n6sO1/I7yn2U2qNDgSPTd2SoaTIDQcUL+EwQ==", + "node_modules/critters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { - "chalk": "^4.1.0", - "css": "^3.0.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "pretty-bytes": "^5.3.0" - }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/critters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/critters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "engines": { + "node": ">=8" + } + }, + "node_modules/critters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "crypto-js": { + "node_modules/crypto-js": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz", "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==" }, - "css": { + "node_modules/css": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", "dev": true, - "requires": { + "dependencies": { "inherits": "^2.0.4", "source-map": "^0.6.1", "source-map-resolve": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, - "css-color-names": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", - "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", - "dev": true + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } }, - "css-declaration-sorter": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.0.0.tgz", - "integrity": "sha512-S0TE4E0ha5+tBHdLWPc5n+S8E4dFBS5xScPvgHkLNZwWvX4ISoFGhGeerLC9uS1cKA/sC+K2wHq6qEbcagT/fg==", + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", "dev": true, - "requires": { - "timsort": "^0.3.0" + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-has-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "css-loader": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.0.1.tgz", - "integrity": "sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw==", + "node_modules/css-loader": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.1.tgz", + "integrity": "sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==", "dev": true, - "requires": { - "camelcase": "^6.2.0", - "cssesc": "^3.0.0", - "icss-utils": "^5.0.0", - "loader-utils": "^2.0.0", - "postcss": "^8.1.4", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.2.15", "postcss-modules-extract-imports": "^3.0.0", "postcss-modules-local-by-default": "^4.0.0", "postcss-modules-scope": "^3.0.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.1.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.2" + "semver": "^7.3.5" }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" } }, - "css-parse": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", - "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", "dev": true, - "requires": { - "css": "^2.0.0" + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" }, - "dependencies": { - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - } + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "css-select": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-3.1.2.tgz", - "integrity": "sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA==", + "node_modules/css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", "dev": true, - "requires": { + "dependencies": { "boolbase": "^1.0.0", - "css-what": "^4.0.0", - "domhandler": "^4.0.0", - "domutils": "^2.4.3", - "nth-check": "^2.0.0" + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "css-selector-tokenizer": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", - "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "node_modules/css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "dev": true, - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "node_modules/css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "engines": { + "node": ">=0.10.0" } }, - "css-what": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-4.0.0.tgz", - "integrity": "sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==", + "node_modules/cssdb": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-5.1.0.tgz", + "integrity": "sha512-/vqjXhv1x9eGkE/zO6o8ZOI7dgdZbLVLUGyVRbPgk6YipXbW87YzUCcO+Jrmi5bwJlAH6oD+MNeZyRgXea1GZw==", "dev": true }, - "cssauron": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", - "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", - "dev": true, - "requires": { - "through": "X.X.X" - } - }, - "cssesc": { + "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.1.tgz", - "integrity": "sha512-5WubEmKcK2cqw43DUAayRBiIlTdX7iX3ZowrWDVxSVcW3hyohVnbJ4K4mbnWtJp5rfJnUwHg5H4mDAGzmuCM3g==", - "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "cssnano-preset-default": "^5.0.0", - "is-resolvable": "^1.1.0" - } - }, - "cssnano-preset-default": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.0.1.tgz", - "integrity": "sha512-cfmfThYODGqhpQKDq9H0MTAqkMvZ3dGbOUTBKw0xWZiIycMqHid22LsJXJl4r1qX4qzDeKxcSyQ/Xb5Mu3Z//Q==", - "dev": true, - "requires": { - "css-declaration-sorter": "6.0.0", - "cssnano-utils": "^2.0.0", - "postcss-calc": "^8.0.0", - "postcss-colormin": "^5.0.0", - "postcss-convert-values": "^5.0.0", - "postcss-discard-comments": "^5.0.0", - "postcss-discard-duplicates": "^5.0.0", - "postcss-discard-empty": "^5.0.0", - "postcss-discard-overridden": "^5.0.0", - "postcss-merge-longhand": "^5.0.1", - "postcss-merge-rules": "^5.0.0", - "postcss-minify-font-values": "^5.0.0", - "postcss-minify-gradients": "^5.0.0", - "postcss-minify-params": "^5.0.0", - "postcss-minify-selectors": "^5.0.0", - "postcss-normalize-charset": "^5.0.0", - "postcss-normalize-display-values": "^5.0.0", - "postcss-normalize-positions": "^5.0.0", - "postcss-normalize-repeat-style": "^5.0.0", - "postcss-normalize-string": "^5.0.0", - "postcss-normalize-timing-functions": "^5.0.0", - "postcss-normalize-unicode": "^5.0.0", - "postcss-normalize-url": "^5.0.0", - "postcss-normalize-whitespace": "^5.0.0", - "postcss-ordered-values": "^5.0.0", - "postcss-reduce-initial": "^5.0.0", - "postcss-reduce-transforms": "^5.0.0", - "postcss-svgo": "^5.0.0", - "postcss-unique-selectors": "^5.0.0" - } - }, - "cssnano-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.0.tgz", - "integrity": "sha512-xvxmTszdrvSyTACdPe8VU5J6p4sm3egpgw54dILvNqt5eBUv6TFjACLhSxtRuEsxYrgy8uDy269YjScO5aKbGA==", - "dev": true - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "dev": true, - "requires": { - "css-tree": "^1.1.2" + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" } }, - "custom-event": { + "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", "dev": true }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "damerau-levenshtein": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", - "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "node_modules/date-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.3.tgz", + "integrity": "sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ==", "dev": true, - "requires": { - "assert-plus": "^1.0.0" + "engines": { + "node": ">=4.0" } }, - "date-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", - "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", - "dev": true - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, - "requires": { + "dependencies": { "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { + "node_modules/decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10" + } }, - "deep-equal": { + "node_modules/deep-equal": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", "dev": true, - "requires": { + "dependencies": { "is-arguments": "^1.0.4", "is-date-object": "^1.0.1", "is-regex": "^1.0.4", "object-is": "^1.0.1", "object-keys": "^1.1.1", "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, - "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" } }, - "defaults": { + "node_modules/defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "dev": true, - "requires": { + "dependencies": { "clone": "^1.0.2" } }, - "define-properties": { + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, - "requires": { + "dependencies": { "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "node_modules/del/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/del/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, "dependencies": { - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "node_modules/del/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "delegates": { + "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true }, - "depd": { + "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "dependency-graph": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", - "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "engines": { + "node": ">= 0.6.0" } }, - "destroy": { + "node_modules/destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, - "detect-node": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz", - "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==", + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, - "di": { + "node_modules/di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", "dev": true }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "dir-glob": { + "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "requires": { + "dependencies": { "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "dns-equal": { + "node_modules/dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", "dev": true }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "node_modules/dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", "dev": true, - "requires": { + "dependencies": { "ip": "^1.1.0", "safe-buffer": "^5.0.1" } }, - "dns-txt": { + "node_modules/dns-txt": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", "dev": true, - "requires": { + "dependencies": { "buffer-indexof": "^1.0.0" } }, - "dom-serialize": { + "node_modules/dom-serialize": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", "dev": true, - "requires": { + "dependencies": { "custom-event": "~1.0.0", "ent": "~2.2.0", "extend": "^3.0.0", "void-elements": "^2.0.0" } }, - "dom-serializer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.1.tgz", - "integrity": "sha512-Pv2ZluG5ife96udGgEDovOOOA5UELkltfJpnIExPrAk1LTvecolUGn6lIaoLh86d83GiB86CjzciMd9BuRB71Q==", + "node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", "dev": true, - "requires": { + "dependencies": { "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", + "domhandler": "^4.2.0", "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { + "node_modules/domelementtype": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] }, - "domhandler": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", - "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "node_modules/domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", "dev": true, - "requires": { + "dependencies": { "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "domutils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz", - "integrity": "sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==", + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, - "requires": { + "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { + "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, - "electron-to-chromium": { - "version": "1.3.727", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz", - "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg==", + "node_modules/electron-to-chromium": { + "version": "1.4.66", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.66.tgz", + "integrity": "sha512-f1RXFMsvwufWLwYUxTiP7HmjprKXrqEWHiQkjAYa9DJeVIlZk5v8gBGcaV+FhtXLly6C1OTVzQY+2UQrACiLlg==", "dev": true }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "emoji-regex": { + "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "emojis-list": { + "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">= 4" + } }, - "encodeurl": { + "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "encoding": { + "node_modules/encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - }, "dependencies": { - "iconv-lite": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", - "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } + "iconv-lite": "^0.6.2" } }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "requires": { - "once": "^1.4.0" + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "engine.io": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", - "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", + "node_modules/engine.io": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.2.tgz", + "integrity": "sha512-v/7eGHxPvO2AWsksyx2PUsQvBafuvqs0jJJQ0FdmJG1b9qIvgSbqDRGwNhfk2XHaTTbTXiC4quRE8Q9nRjsrQQ==", "dev": true, - "requires": { + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~4.0.0", - "ws": "~7.4.2" + "engine.io-parser": "~5.0.0", + "ws": "~8.2.3" }, - "dependencies": { - "cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "dev": true - }, - "ws": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz", - "integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==", - "dev": true - } + "engines": { + "node": ">=10.0.0" } }, - "engine.io-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", - "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", + "node_modules/engine.io-parser": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", + "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", "dev": true, - "requires": { - "base64-arraybuffer": "0.1.4" + "dependencies": { + "@socket.io/base64-arraybuffer": "~1.0.2" + }, + "engines": { + "node": ">=10.0.0" } }, - "enhanced-resolve": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", - "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", + "node_modules/enhanced-resolve": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz", + "integrity": "sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA==", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" } }, - "ent": { + "node_modules/ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", "dev": true }, - "entities": { + "node_modules/entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, - "env-paths": { + "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "err-code": { + "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true }, - "errno": { + "node_modules/errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, - "requires": { + "optional": true, + "dependencies": { "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" } }, - "error-ex": { + "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "requires": { + "dependencies": { "is-arrayish": "^0.2.1" } }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true }, - "es6-promise": { + "node_modules/es6-promise": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=" }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "node_modules/esbuild": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.14.tgz", + "integrity": "sha512-aiK4ddv+uui0k52OqSHu4xxu+SzOim7Rlz4i25pMEiC8rlnGU0HJ9r+ZMfdWL5bzifg+nhnn7x4NSWTeehYblg==", "dev": true, - "requires": { - "es6-promise": "^4.0.3" + "hasInstallScript": true, + "optional": true, + "bin": { + "esbuild": "bin/esbuild" }, - "dependencies": { - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - } - } + "optionalDependencies": { + "esbuild-android-arm64": "0.14.14", + "esbuild-darwin-64": "0.14.14", + "esbuild-darwin-arm64": "0.14.14", + "esbuild-freebsd-64": "0.14.14", + "esbuild-freebsd-arm64": "0.14.14", + "esbuild-linux-32": "0.14.14", + "esbuild-linux-64": "0.14.14", + "esbuild-linux-arm": "0.14.14", + "esbuild-linux-arm64": "0.14.14", + "esbuild-linux-mips64le": "0.14.14", + "esbuild-linux-ppc64le": "0.14.14", + "esbuild-linux-s390x": "0.14.14", + "esbuild-netbsd-64": "0.14.14", + "esbuild-openbsd-64": "0.14.14", + "esbuild-sunos-64": "0.14.14", + "esbuild-windows-32": "0.14.14", + "esbuild-windows-64": "0.14.14", + "esbuild-windows-arm64": "0.14.14" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.14.tgz", + "integrity": "sha512-be/Uw6DdpQiPfula1J4bdmA+wtZ6T3BRCZsDMFB5X+k0Gp8TIh9UvmAcqvKNnbRAafSaXG3jPCeXxDKqnc8hFQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.14.tgz", + "integrity": "sha512-BEexYmjWafcISK8cT6O98E3TfcLuZL8DKuubry6G54n2+bD4GkoRD6HYUOnCkfl2p7jodA+s4369IjSFSWjtHg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.14.tgz", + "integrity": "sha512-tnBKm41pDOB1GtZ8q/w26gZlLLRzVmP8fdsduYjvM+yFD7E2DLG4KbPAqFMWm4Md9B+DitBglP57FY7AznxbTg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.14.tgz", + "integrity": "sha512-Q9Rx6sgArOHalQtNwAaIzJ6dnQ8A+I7f/RsQsdkS3JrdzmnlFo8JEVofTmwVQLoIop7OKUqIVOGP4PoQcwfVMA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.14.tgz", + "integrity": "sha512-TJvq0OpLM7BkTczlyPIphcvnwrQwQDG1HqxzoYePWn26SMUAlt6wrLnEvxdbXAvNvDLVzG83kA+JimjK7aRNBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.14.tgz", + "integrity": "sha512-h/CrK9Baimt5VRbu8gqibWV7e1P9l+mkanQgyOgv0Ng3jHT1NVFC9e6rb1zbDdaJVmuhWX5xVliUA5bDDCcJeg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.14.tgz", + "integrity": "sha512-IC+wAiIg/egp5OhQp4W44D9PcBOH1b621iRn1OXmlLzij9a/6BGr9NMIL4CRwz4j2kp3WNZu5sT473tYdynOuQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.14.tgz", + "integrity": "sha512-gxpOaHOPwp7zSmcKYsHrtxabScMqaTzfSQioAMUaB047YiMuDBzqVcKBG8OuESrYkGrL9DDljXr/mQNg7pbdaQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.14.tgz", + "integrity": "sha512-6QVul3RI4M5/VxVIRF/I5F+7BaxzR3DfNGoqEVSCZqUbgzHExPn+LXr5ly1C7af2Kw4AHpo+wDqx8A4ziP9avw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.14.tgz", + "integrity": "sha512-4Jl5/+xoINKbA4cesH3f4R+q0vltAztZ6Jm8YycS8lNhN1pgZJBDxWfI6HUMIAdkKlIpR1PIkA9aXQgZ8sxFAg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.14.tgz", + "integrity": "sha512-BitW37GxeebKxqYNl4SVuSdnIJAzH830Lr6Mkq3pBHXtzQay0vK+IeOR/Ele1GtNVJ+/f8wYM53tcThkv5SC5w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.14.tgz", + "integrity": "sha512-vLj6p76HOZG3wfuTr5MyO3qW5iu8YdhUNxuY+tx846rPo7GcKtYSPMusQjeVEfZlJpSYoR+yrNBBxq+qVF9zrw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.14.tgz", + "integrity": "sha512-fn8looXPQhpVqUyCBWUuPjesH+yGIyfbIQrLKG05rr1Kgm3rZD/gaYrd3Wpmf5syVZx70pKZPvdHp8OTA+y7cQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ] + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.14.tgz", + "integrity": "sha512-HdAnJ399pPff3SKbd8g+P4o5znseni5u5n5rJ6Z7ouqOdgbOwHe2ofZbMow17WMdNtz1IyOZk2Wo9Ve6/lZ4Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.14.tgz", + "integrity": "sha512-bmDHa99ulsGnYlh/xjBEfxoGuC8CEG5OWvlgD+pF7bKKiVTbtxqVCvOGEZeoDXB+ja6AvHIbPxrEE32J+m5nqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ] }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "node_modules/esbuild-wasm": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.14.tgz", + "integrity": "sha512-qTjK4MWnYtQHCMGg2qDUqeFYXfVvYq5qJkQTIsOV4VZCknoYePVaDTG9ygEB9Ct0kc0DWs7IrS6Ja+GjY62Kzw==", "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=8" } }, - "escalade": { + "node_modules/esbuild-windows-32": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.14.tgz", + "integrity": "sha512-6tVooQcxJCNenPp5GHZBs/RLu31q4B+BuF4MEoRxswT+Eq2JGF0ZWDRQwNKB8QVIo3t6Svc5wNGez+CwKNQjBg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.14.tgz", + "integrity": "sha512-kl3BdPXh0/RD/dad41dtzj2itMUR4C6nQbXQCyYHHo4zoUoeIXhpCrSl7BAW1nv5EFL8stT1V+TQVXGZca5A2A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.14.tgz", + "integrity": "sha512-dCm1wTOm6HIisLanmybvRKvaXZZo4yEVrHh1dY0v582GThXJOzuXGja1HIQgV09RpSHYRL3m4KoUBL00l6SWEg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "escape-html": { + "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", "dev": true }, - "escape-string-regexp": { + "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "requires": { - "esrecurse": "^4.1.0", + "dependencies": { + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" } }, - "esprima": { + "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, - "esrecurse": { + "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "requires": { + "dependencies": { "estraverse": "^5.2.0" }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } + "engines": { + "node": ">=4.0" } }, - "estraverse": { + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0" + } }, - "esutils": { + "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "etag": { + "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "event-lite": { + "node_modules/event-lite": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/event-lite/-/event-lite-0.1.2.tgz", "integrity": "sha512-HnSYx1BsJ87/p6swwzv+2v6B4X+uxUteoDfRxsAb1S1BePzQqOLevVmkdA15GHJVd9A9Ok6wygUR18Hu0YeV9g==" }, - "eventemitter3": { + "node_modules/eventemitter-asyncresource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true + }, + "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, - "events": { + "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "eventsource": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", - "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", - "dev": true, - "requires": { - "original": "^1.0.0" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "engines": { + "node": ">=0.8.x" } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "node_modules/express": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", + "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", "dev": true, - "requires": { + "dependencies": { "accepts": "~1.3.7", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.19.1", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.4.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", @@ -5521,276 +5402,179 @@ "on-finished": "~2.3.0", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.9.6", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", "statuses": "~1.5.0", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "engines": { + "node": ">= 0.10.0" } }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/express/node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "requires": { - "type": "^2.0.0" - }, "dependencies": { - "type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", - "dev": true - } + "ms": "2.0.0" } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } - } + ] }, - "external-editor": { + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, - "requires": { + "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "engines": { + "node": ">=4" } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { + "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, - "requires": { + "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" } }, - "fast-json-stable-stringify": { + "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, - "fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, - "requires": { + "dependencies": { "reusify": "^1.0.4" } }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, - "requires": { + "dependencies": { "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" } }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, - "figures": { + "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, - "requires": { + "dependencies": { "escape-string-regexp": "^1.0.5" - } - }, - "file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "file-saver": { + "node_modules/file-saver": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" }, - "fill-range": { + "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "requires": { + "dependencies": { "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "finalhandler": { + "node_modules/finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, - "requires": { + "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -5799,2142 +5583,1905 @@ "statuses": "~1.5.0", "unpipe": "~1.0.0" }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "ms": "2.0.0" } }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "requires": { + "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "find-up": { + "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "requires": { + "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "node_modules/follow-redirects": { + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } + "peerDependenciesMeta": { + "debug": { + "optional": true } } }, - "follow-redirects": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", - "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "engines": { + "node": ">= 0.6" } }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fraction.js": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.0.13.tgz", - "integrity": "sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA==", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "node_modules/fraction.js": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.3.tgz", + "integrity": "sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==", "dev": true, - "requires": { - "map-cache": "^0.2.2" + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" } }, - "fresh": { + "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "engines": { + "node": ">= 0.6" } }, - "fs-extra": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", - "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", + "node_modules/fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" } }, - "fs-minipass": { + "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, - "requires": { + "dependencies": { "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true }, - "fs.realpath": { + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "fsevents": { + "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "optional": true + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "function-bind": { + "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "node_modules/gauge": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz", + "integrity": "sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw==", "dev": true, - "requires": { - "aproba": "^1.0.3", + "dependencies": { + "ansi-regex": "^5.0.1", + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", + "has-unicode": "^2.0.1", "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "gensync": { + "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "get-caller-file": { + "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "get-intrinsic": { + "node_modules/get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, - "requires": { + "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, - "requires": { - "pump": "^3.0.0" + "engines": { + "node": ">=8.0.0" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "requires": { - "assert-plus": "^1.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, - "requires": { + "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "requires": { + "dependencies": { "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "globals": { + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "globby": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", - "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "node_modules/globby": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", "dev": true, - "requires": { - "array-union": "^2.1.0", + "dependencies": { + "array-union": "^3.0.1", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "node_modules/graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, - "hammerjs": { + "node_modules/hammerjs": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=", + "engines": { + "node": ">=0.8.0" + } }, - "handle-thing": { + "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { + "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, - "requires": { + "dependencies": { "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } + "engines": { + "node": ">= 0.4.0" } }, - "has-flag": { + "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "has-symbols": { + "node_modules/has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "has-values": { + "node_modules/has-tostringtag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "has-symbols": "^1.0.2" }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "node_modules/hdr-histogram-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "dependencies": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" } }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "node_modules/hdr-histogram-js/node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } + "node_modules/hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", + "dev": true }, - "hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "requires": { + "dependencies": { "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" } }, - "hpack.js": { + "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "dev": true, - "requires": { + "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", "readable-stream": "^2.0.1", "wbuf": "^1.1.0" } }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "node_modules/html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", "dev": true }, - "html-escaper": { + "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "http-cache-semantics": { + "node_modules/http-cache-semantics": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", "dev": true }, - "http-deceiver": { + "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", "dev": true }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, - "requires": { + "dependencies": { "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "toidentifier": "1.0.1" }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } + "engines": { + "node": ">= 0.6" } }, - "http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "node_modules/http-parser-js": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", + "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", "dev": true }, - "http-proxy": { + "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, - "requires": { + "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" } }, - "http-proxy-agent": { + "node_modules/http-proxy-agent": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, - "requires": { + "dependencies": { "@tootallnate/once": "1", "agent-base": "6", "debug": "4" + }, + "engines": { + "node": ">= 6" } }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "node_modules/http-proxy-middleware": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz", + "integrity": "sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA==", "dev": true, - "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true } } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "https-proxy-agent": { + "node_modules/https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dev": true, - "requires": { + "dependencies": { "agent-base": "6", "debug": "4" + }, + "engines": { + "node": ">= 6" } }, - "humanize-ms": { + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", "dev": true, - "requires": { + "dependencies": { "ms": "^2.0.0" } }, - "iconv-lite": { + "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, - "requires": { + "dependencies": { "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, - "icss-utils": { + "node_modules/icss-utils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } }, - "ieee754": { + "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } }, - "ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "node_modules/ignore-walk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz", + "integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==", "dev": true, - "requires": { + "dependencies": { "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" } }, - "image-size": { + "node_modules/image-size": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", "dev": true, - "optional": true + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } }, - "immediate": { + "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "node_modules/immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "requires": { + "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } + "engines": { + "node": ">=4" } }, - "imurmurhash": { + "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.19" + } }, - "indent-string": { + "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "infer-owner": { + "node_modules/infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "dev": true }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, - "requires": { + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "ini": { + "node_modules/ini": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "node_modules/inquirer": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz", + "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", "dev": true, - "requires": { + "dependencies": { "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", + "chalk": "^4.1.1", "cli-cursor": "^3.1.0", "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", - "lodash": "^4.17.19", + "lodash": "^4.17.21", "mute-stream": "0.0.8", + "ora": "^5.4.1", "run-async": "^2.4.0", - "rxjs": "^6.6.0", + "rxjs": "^7.2.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "int64-buffer": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-0.1.10.tgz", - "integrity": "sha1-J3siiofZWtd30HwTgyAiQGpHNCM=" + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "node_modules/int64-buffer": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-0.1.10.tgz", + "integrity": "sha1-J3siiofZWtd30HwTgyAiQGpHNCM=" + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "engines": { + "node": ">= 10" } }, - "is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, - "requires": { - "call-bind": "^1.0.0" + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-arrayish": { + "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "is-binary-path": { + "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "requires": { + "dependencies": { "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" }, - "dependencies": { - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - } + "engines": { + "node": ">=8" } }, - "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", "dev": true, - "requires": { + "dependencies": { "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-docker": { + "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "is-extglob": { + "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-fullwidth-code-point": { + "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "requires": { + "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-interactive": { + "node_modules/is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "is-lambda": { + "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", "dev": true }, - "is-number": { + "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.12.0" + } }, - "is-path-cwd": { + "node_modules/is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", "dev": true, - "requires": { - "is-path-inside": "^2.1.0" + "engines": { + "node": ">=6" } }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "requires": { - "path-is-inside": "^1.0.2" + "engines": { + "node": ">=8" } }, - "is-plain-object": { + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "requires": { + "dependencies": { "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "is-unicode-supported": { + "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "is-what": { + "node_modules/is-what": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "dev": true }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { + "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, - "requires": { + "dependencies": { "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "isarray": { + "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, - "isbinaryfile": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", - "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", - "dev": true + "node_modules/isbinaryfile": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", + "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } }, - "isexe": { + "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isobject": { + "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", - "dev": true + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "node_modules/istanbul-lib-instrument": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", "dev": true, - "requires": { - "@babel/core": "^7.7.5", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "engines": { + "node": ">=8" } }, - "istanbul-lib-report": { + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, - "requires": { + "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", "supports-color": "^7.1.0" }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">=8" } }, - "istanbul-lib-source-maps": { + "node_modules/istanbul-lib-report/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", "source-map": "^0.6.1" }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "engines": { + "node": ">=10" } }, - "istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "engines": { + "node": ">=0.10.0" } }, - "jasmine": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", - "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "node_modules/istanbul-reports": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", "dev": true, - "requires": { - "exit": "^0.1.2", - "glob": "^7.0.6", - "jasmine-core": "~2.8.0" - }, "dependencies": { - "jasmine-core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", - "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", - "dev": true - } + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "jasmine-core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz", - "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", + "node_modules/jasmine-core": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.0.0.tgz", + "integrity": "sha512-tq24OCqHElgU9KDpb/8O21r1IfotgjIzalfW9eCmRR40LZpvwXT68iariIyayMwi0m98RDt16aljdbwK0sBMmQ==", "dev": true }, - "jasmine-spec-reporter": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.2.tgz", - "integrity": "sha512-6gP1LbVgJ+d7PKksQBc2H0oDGNRQI3gKUsWlswKaQ2fif9X5gzhQcgM5+kiJGCQVurOG09jqNhk7payggyp5+g==", + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, - "requires": { - "colors": "1.4.0" + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, - "jasminewd2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", - "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", - "dev": true + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "js-tokens": { + "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "js-yaml": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", - "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", - "requires": { + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsesc": { + "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } }, - "json-parse-better-errors": { + "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "json-parse-even-better-errors": { + "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "json5": { + "node_modules/json5": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, - "requires": { + "dependencies": { "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, - "jsonc-parser": { + "node_modules/jsonc-parser": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", "dev": true }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "requires": { + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { "graceful-fs": "^4.1.6" } }, - "jsonparse": { + "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } + "engines": [ + "node >= 0.2.0" + ] }, - "jszip": { + "node_modules/jszip": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", - "requires": { + "dependencies": { "core-js": "~2.3.0", "es6-promise": "~3.0.2", "lie": "~3.1.0", "pako": "~1.0.2", "readable-stream": "~2.0.6" - }, - "dependencies": { - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - } } }, - "karma": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.1.1.tgz", - "integrity": "sha512-vVDFxFGAsclgmFjZA/qGw5xqWdZIWxVD7xLyCukYUYd5xs/uGzYbXGOT5zOruVBQleKEmXIr4H2hzGCTn+M9Cg==", + "node_modules/jszip/node_modules/core-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", + "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=", + "deprecated": "core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js." + }, + "node_modules/jszip/node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/karma": { + "version": "6.3.15", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.15.tgz", + "integrity": "sha512-4O5X6zVFdmwo/fgjRN84fPG3IvaiOxOjIeZBwBrQYz4nIyGqlF8Wm7C1Hr7idQ9NHgnvJM+LSjZwS1C+qALMGw==", "dev": true, - "requires": { + "dependencies": { "body-parser": "^1.19.0", "braces": "^3.0.2", - "chokidar": "^3.4.2", - "colors": "^1.4.0", + "chokidar": "^3.5.1", + "colors": "1.4.0", "connect": "^3.7.0", "di": "^0.0.1", "dom-serialize": "^2.2.1", - "glob": "^7.1.6", - "graceful-fs": "^4.2.4", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", "http-proxy": "^1.18.1", - "isbinaryfile": "^4.0.6", - "lodash": "^4.17.19", - "log4js": "^6.2.1", - "mime": "^2.4.5", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", "qjobs": "^1.2.0", "range-parser": "^1.2.1", "rimraf": "^3.0.2", - "socket.io": "^3.1.0", + "socket.io": "^4.2.0", "source-map": "^0.6.1", - "tmp": "0.2.1", - "ua-parser-js": "^0.7.23", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", "yargs": "^16.1.1" }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "dev": true, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.6", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz", - "integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==", - "dev": true - } + "which": "^1.2.1" } }, - "karma-chrome-launcher": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", - "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "node_modules/karma-coverage": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.1.1.tgz", + "integrity": "sha512-oxeOSBVK/jdZsiX03LhHQkO4eISSQb5GbHi6Nsw3Mw7G4u6yUgacBAftnO7q+emPBLMsrNbz1pGIrj+Jb3z17A==", "dev": true, - "requires": { - "which": "^1.2.1" + "dependencies": { + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.0.5", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.0.0" } }, - "karma-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.0.3.tgz", - "integrity": "sha512-atDvLQqvPcLxhED0cmXYdsPMCQuh6Asa9FMZW1bhNqlVEhJoB9qyZ2BY1gu7D/rr5GLGb5QzYO4siQskxaWP/g==", + "node_modules/karma-coverage/node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, - "requires": { + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.1", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.0", - "minimatch": "^3.0.4" + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, - "karma-jasmine": { + "node_modules/karma-coverage/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/karma-jasmine": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", "dev": true, - "requires": { + "dependencies": { "jasmine-core": "^3.6.0" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "karma": "*" } }, - "karma-jasmine-html-reporter": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz", - "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", + "node_modules/karma-jasmine-html-reporter": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", + "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", + "dev": true, + "peerDependencies": { + "jasmine-core": ">=3.8", + "karma": ">=0.9", + "karma-jasmine": ">=1.1" + } + }, + "node_modules/karma-jasmine/node_modules/jasmine-core": { + "version": "3.99.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.0.tgz", + "integrity": "sha512-+ZDaJlEfRopINQqgE+hvzRyDIQDeKfqqTvF8RzXsvU1yE3pBDRud2+Qfh9WvGgRpuzqxyQJVI6Amy5XQ11r/3w==", "dev": true }, - "karma-source-map-support": { + "node_modules/karma-source-map-support": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", "dev": true, - "requires": { + "dependencies": { "source-map-support": "^0.5.5" } }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true + "node_modules/karma/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } }, - "kind-of": { + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/karma/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/karma/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "klona": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", - "dev": true + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } }, - "less": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz", - "integrity": "sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw==", + "node_modules/less": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz", + "integrity": "sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==", "dev": true, - "requires": { + "dependencies": { "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { "errno": "^0.1.1", "graceful-fs": "^4.1.2", "image-size": "~0.5.0", "make-dir": "^2.1.0", "mime": "^1.4.1", "needle": "^2.5.2", - "parse-node-version": "^1.0.1", - "source-map": "~0.6.0", - "tslib": "^1.10.0" - }, - "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } + "source-map": "~0.6.0" } }, - "less-loader": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", - "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", + "node_modules/less-loader": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.2.0.tgz", + "integrity": "sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==", "dev": true, - "requires": { - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" + "dependencies": { + "klona": "^2.0.4" }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" } }, - "license-webpack-plugin": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.11.tgz", - "integrity": "sha512-0iVGoX5vx0WDy8dmwTTpOOMYiGqILyUbDeVMFH52AjgBlS58lHwOlFMSoqg5nY8Kxl6+FRKyUZY/UdlQaOyqDw==", + "node_modules/less/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "requires": { - "@types/webpack-sources": "^0.1.5", - "webpack-sources": "^1.2.0" + "optional": true, + "bin": { + "mime": "cli.js" }, + "engines": { + "node": ">=4" + } + }, + "node_modules/less/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.1.tgz", + "integrity": "sha512-SQum9mg3BgnY5BK+2KYl4W7pk9b26Q8tW2lTsO6tidD0/Ds9ksdXvp3ip2s9LqDjj5gtBMyWRfOPZptWj4PfCg==", + "dev": true, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true }, "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } + "optional": true } } }, - "lie": { + "node_modules/lie": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", - "requires": { + "dependencies": { "immediate": "~3.0.5" } }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "engines": { + "node": ">=6.11.5" } }, - "locate-path": { + "node_modules/loader-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "requires": { + "dependencies": { "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "lodash": { + "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, - "log-symbols": { + "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "requires": { + "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "log4js": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", - "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "date-format": "^3.0.0", - "debug": "^4.1.1", - "flatted": "^2.0.1", - "rfdc": "^1.1.4", - "streamroller": "^2.2.4" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "lru-cache": { + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log4js": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.1.tgz", + "integrity": "sha512-iUiYnXqAmNKiIZ1XSAitQ4TmNs8CdZYTAWINARF3LjnsLN8tY5m0vRwd6uuWj/yNY0YHxeZodnbmxKFUOM2rMg==", + "dev": true, + "dependencies": { + "date-format": "^4.0.3", + "debug": "^4.3.3", + "flatted": "^3.2.4", + "rfdc": "^1.3.0", + "streamroller": "^3.0.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "requires": { + "dependencies": { "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "lzbase62": { + "node_modules/lzbase62": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lzbase62/-/lzbase62-2.0.0.tgz", - "integrity": "sha512-hq7ZI8T42YVgSxCFHzg/Gt3GUKGZdQXKejvubdLjzxjiF5Tn9xKoWvZLZSY1u0+Orct+bxQMmb8XIcbXzR+2tg==" + "integrity": "sha512-hq7ZI8T42YVgSxCFHzg/Gt3GUKGZdQXKejvubdLjzxjiF5Tn9xKoWvZLZSY1u0+Orct+bxQMmb8XIcbXzR+2tg==", + "engines": { + "node": ">=8.10.0" + } }, - "magic-string": { + "node_modules/magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, - "requires": { + "dependencies": { "sourcemap-codec": "^1.4.4" } }, - "make-dir": { + "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "requires": { + "dependencies": { "semver": "^6.0.0" }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, - "make-fetch-happen": { - "version": "8.0.14", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", - "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", "dev": true, - "requires": { + "dependencies": { "agentkeepalive": "^4.1.3", - "cacache": "^15.0.5", + "cacache": "^15.2.0", "http-cache-semantics": "^4.1.0", "http-proxy-agent": "^4.0.1", "https-proxy-agent": "^5.0.0", @@ -7945,1088 +7492,998 @@ "minipass-fetch": "^1.3.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^5.0.0", + "socks-proxy-agent": "^6.0.0", "ssri": "^8.0.0" }, - "dependencies": { - "promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - } - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "engines": { + "node": ">= 10" } }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "media-typer": { + "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "node_modules/memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "dependencies": { + "fs-monkey": "1.0.3" + }, + "engines": { + "node": ">= 4.0.0" } }, - "merge-descriptors": { + "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "merge-stream": { + "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "merge2": { + "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 8" + } }, - "methods": { + "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "micromatch": { + "node_modules/micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, - "requires": { + "dependencies": { "braces": "^3.0.1", "picomatch": "^2.2.3" }, - "dependencies": { - "picomatch": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", - "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", - "dev": true - } + "engines": { + "node": ">=8.6" } }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "bin": { + "mime": "cli.js" }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } + "engines": { + "node": ">=4.0.0" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", - "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", - "dev": true + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "mime-types": { - "version": "2.1.29", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", - "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "dev": true, - "requires": { - "mime-db": "1.46.0" + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" } }, - "mimic-fn": { + "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "mini-css-extract-plugin": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.5.tgz", - "integrity": "sha512-tvmzcwqJJXau4OQE5vT72pRT18o2zF+tQJp8CWchqvfQnTlflkzS+dANYcRdyPRWUWRkfmeNTKltx0NZI/b5dQ==", + "node_modules/mini-css-extract-plugin": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz", + "integrity": "sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw==", "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "minimalistic-assert": { + "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { + "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, - "requires": { + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "minimist": { + "node_modules/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, - "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "dev": true, - "requires": { + "dependencies": { "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "minipass-collect": { + "node_modules/minipass-collect": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "requires": { + "dependencies": { "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, - "minipass-fetch": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.3.3.tgz", - "integrity": "sha512-akCrLDWfbdAWkMLBxJEeWTdNsjML+dt5YgOI4gJ53vuO0vrmYQkUPxa6j6V65s9CcePIr2SSWqjT2EcrNseryQ==", + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", "dev": true, - "requires": { - "encoding": "^0.1.12", + "dependencies": { "minipass": "^3.1.0", "minipass-sized": "^1.0.3", "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" } }, - "minipass-flush": { + "node_modules/minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, - "requires": { + "dependencies": { "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, - "minipass-json-stream": { + "node_modules/minipass-json-stream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "dev": true, - "requires": { + "dependencies": { "jsonparse": "^1.3.1", "minipass": "^3.0.0" } }, - "minipass-pipeline": { + "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, - "requires": { + "dependencies": { "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "minipass-sized": { + "node_modules/minipass-sized": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, - "requires": { + "dependencies": { "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "minizlib": { + "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, - "requires": { + "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" - } - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } + "engines": { + "node": ">= 8" } }, - "mkdirp": { + "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" + "bin": { + "mkdirp": "bin/cmd.js" }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "engines": { + "node": ">=10" } }, - "ms": { + "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "msgpack-lite": { + "node_modules/msgpack-lite": { "version": "0.1.26", "resolved": "https://registry.npmjs.org/msgpack-lite/-/msgpack-lite-0.1.26.tgz", "integrity": "sha1-3TxQsm8FnyXn7e42REGDWOKprYk=", - "requires": { + "dependencies": { "event-lite": "^0.1.1", "ieee754": "^1.1.8", "int64-buffer": "^0.1.9", "isarray": "^1.0.0" + }, + "bin": { + "msgpack": "bin/msgpack" } }, - "multicast-dns": { + "node_modules/multicast-dns": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", "dev": true, - "requires": { + "dependencies": { "dns-packet": "^1.3.1", "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" } }, - "multicast-dns-service-types": { + "node_modules/multicast-dns-service-types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", "dev": true }, - "mute-stream": { + "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "nanoid": { - "version": "3.1.23", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", - "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "node_modules/nanoid": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "needle": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", - "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", + "node_modules/needle": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", + "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", "dev": true, "optional": true, - "requires": { + "dependencies": { "debug": "^3.2.6", "iconv-lite": "^0.4.4", "sax": "^1.2.4" }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - } + "ms": "^2.1.1" } }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "neo-async": { + "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true + "node_modules/nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true + "node_modules/node-forge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", + "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } }, - "node-gyp": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", - "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", "dev": true, - "requires": { + "dependencies": { "env-paths": "^2.2.0", "glob": "^7.1.4", - "graceful-fs": "^4.2.3", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", + "npmlog": "^6.0.0", "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", "which": "^2.0.2" }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" } }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - } + "node_modules/node-gyp-build": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "dev": true, + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" } }, - "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", "dev": true }, - "nopt": { + "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, - "requires": { + "dependencies": { "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" } }, - "normalize-path": { + "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "normalize-range": { + "node_modules/normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "npm-bundled": { + "node_modules/npm-bundled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, - "requires": { + "dependencies": { "npm-normalize-package-bin": "^1.0.1" } }, - "npm-install-checks": { + "node_modules/npm-install-checks": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", "dev": true, - "requires": { + "dependencies": { "semver": "^7.1.1" + }, + "engines": { + "node": ">=10" } }, - "npm-normalize-package-bin": { + "node_modules/npm-normalize-package-bin": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", "dev": true }, - "npm-package-arg": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.0.tgz", - "integrity": "sha512-/ep6QDxBkm9HvOhOg0heitSd7JHA1U7y1qhhlRlteYYAi9Pdb/ZV7FW5aHpkrpM8+P+4p/jjR8zCyKPBMBjSig==", + "node_modules/npm-package-arg": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", "dev": true, - "requires": { - "hosted-git-info": "^3.0.6", - "semver": "^7.0.0", + "dependencies": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" } }, - "npm-packlist": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", - "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", + "node_modules/npm-packlist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-3.0.0.tgz", + "integrity": "sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==", "dev": true, - "requires": { + "dependencies": { "glob": "^7.1.6", - "ignore-walk": "^3.0.3", + "ignore-walk": "^4.0.1", "npm-bundled": "^1.1.1", "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": ">=10" } }, - "npm-pick-manifest": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz", - "integrity": "sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw==", + "node_modules/npm-pick-manifest": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", + "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", "dev": true, - "requires": { + "dependencies": { "npm-install-checks": "^4.0.0", - "npm-package-arg": "^8.0.0", - "semver": "^7.0.0" + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" } }, - "npm-registry-fetch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", - "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", + "node_modules/npm-registry-fetch": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.1.tgz", + "integrity": "sha512-ricy4ezH3Uv0d4am6RSwHjCYTWJI74NJjurIigWMAG7Vs3PFyd0TUlkrez5L0AgaPzDLRsEzqb5cOZ/Ue01bmA==", "dev": true, - "requires": { - "@npmcli/ci-detect": "^1.0.0", - "lru-cache": "^6.0.0", - "make-fetch-happen": "^8.0.9", + "dependencies": { + "make-fetch-happen": "^10.0.0", "minipass": "^3.1.3", "minipass-fetch": "^1.3.0", "minipass-json-stream": "^1.0.1", "minizlib": "^2.0.0", "npm-package-arg": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "node_modules/npm-registry-fetch/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, - "requires": { - "path-key": "^2.0.0" + "engines": { + "node": ">= 10" } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "node_modules/npm-registry-fetch/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" } }, - "nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.0.tgz", + "integrity": "sha512-CREcDkbKZZ64g5MN1FT+u58mDHX9FQFFtFyio5HonX44BdQdytqPZBXUz+6ibi2w/6ncji59f2phyXGSMGpgzA==", "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } }, - "object-assign": { + "node_modules/npmlog": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.0.tgz", + "integrity": "sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "engines": { + "node": ">=0.10.0" } }, - "object-is": { + "node_modules/object-is": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "object-keys": { + "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, - "requires": { - "isobject": "^3.0.0" + "engines": { + "node": ">= 0.4" } }, - "object.assign": { + "node_modules/object.assign": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", "has-symbols": "^1.0.1", "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "obuf": { + "node_modules/obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true }, - "on-finished": { + "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "dev": true, - "requires": { + "dependencies": { "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "on-headers": { + "node_modules/on-headers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, - "requires": { + "dependencies": { "wrappy": "1" } }, - "onetime": { + "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "requires": { + "dependencies": { "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "open": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.0.tgz", - "integrity": "sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA==", - "dev": true, - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - } - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, - "requires": { - "is-wsl": "^1.1.0" - }, "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - } + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "ora": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", - "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, - "requires": { - "bl": "^4.0.3", + "dependencies": { + "bl": "^4.1.0", "chalk": "^4.1.0", "cli-cursor": "^3.1.0", "cli-spinners": "^2.5.0", "is-interactive": "^1.0.0", - "log-symbols": "^4.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "url-parse": "^1.4.3" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "os-tmpdir": { + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "p-limit": { + "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "requires": { + "dependencies": { "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-locate": { + "node_modules/p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "requires": { + "dependencies": { "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "p-map": { + "node_modules/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, - "requires": { + "dependencies": { "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "node_modules/p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", "dev": true, - "requires": { - "retry": "^0.12.0" + "dependencies": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" } }, - "p-try": { + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "pacote": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.2.4.tgz", - "integrity": "sha512-GfTeVQGJ6WyBQbQD4t3ocHbyOmTQLmWjkCKSZPmKiGFKYKNUaM5U2gbLzUW8WG1XmS9yQFnsTFA0k3o1+q4klQ==", + "node_modules/pacote": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-12.0.3.tgz", + "integrity": "sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow==", "dev": true, - "requires": { - "@npmcli/git": "^2.0.1", - "@npmcli/installed-package-contents": "^1.0.5", + "dependencies": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^1.3.0", + "@npmcli/run-script": "^2.0.0", "cacache": "^15.0.5", "chownr": "^2.0.0", "fs-minipass": "^2.1.0", @@ -9034,1262 +8491,947 @@ "minipass": "^3.1.3", "mkdirp": "^1.0.3", "npm-package-arg": "^8.0.1", - "npm-packlist": "^2.1.4", + "npm-packlist": "^3.0.0", "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^9.0.0", - "promise-retry": "^1.1.1", - "read-package-json-fast": "^1.1.3", + "npm-registry-fetch": "^12.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", "rimraf": "^3.0.2", - "ssri": "^8.0.0", + "ssri": "^8.0.1", "tar": "^6.1.0" - } - }, - "pako": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.3.tgz", - "integrity": "sha512-WjR1hOeg+kki3ZIOjaf4b5WVcay1jaliKSYiEaB1XzwhMQZJxRdQRv0V31EKBYlxb4T7SK3hjfc/jxyU64BoSw==" - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "parent-module": { + "node_modules/pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" + }, + "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "requires": { + "dependencies": { "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { + "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "parse-node-version": { + "node_modules/parse-node-version": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.10" + } }, - "parse5": { + "node_modules/parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, - "parse5-html-rewriting-stream": { + "node_modules/parse5-html-rewriting-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", "dev": true, - "requires": { + "dependencies": { "parse5": "^6.0.1", "parse5-sax-parser": "^6.0.1" } }, - "parse5-htmlparser2-tree-adapter": { + "node_modules/parse5-htmlparser2-tree-adapter": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, - "requires": { + "dependencies": { "parse5": "^6.0.1" } }, - "parse5-sax-parser": { + "node_modules/parse5-sax-parser": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", "dev": true, - "requires": { + "dependencies": { "parse5": "^6.0.1" } }, - "parseurl": { + "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "path-exists": { + "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "path-to-regexp": { + "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, - "path-type": { + "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "engines": { + "node": ">=8" } }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "node_modules/piscina": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", + "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", "dev": true, - "requires": { - "pinkie": "^2.0.0" + "dependencies": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0" + }, + "optionalDependencies": { + "nice-napi": "^1.0.2" } }, - "pkg-dir": { + "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "requires": { + "dependencies": { "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "pnp-webpack-plugin": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", - "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", - "dev": true, - "requires": { - "ts-pnp": "^1.1.6" - } - }, - "portfinder": { + "node_modules/portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", "dev": true, - "requires": { + "dependencies": { "async": "^2.6.2", "debug": "^3.1.1", "mkdirp": "^0.5.5" }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } + "engines": { + "node": ">= 0.12.0" } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "8.2.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.13.tgz", - "integrity": "sha512-FCE5xLH+hjbzRdpbRb1IMCvPv9yZx2QnDarBEYSN0N0HYk+TcXsEhwdFcFb+SRWOKzKGErhIEbBK2ogyLdTtfQ==", + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "requires": { - "colorette": "^1.2.2", - "nanoid": "^3.1.22", - "source-map": "^0.6.1" - }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "ms": "^2.1.1" } }, - "postcss-calc": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", - "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "postcss-colormin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.0.0.tgz", - "integrity": "sha512-Yt84+5V6CgS/AhK7d7MA58vG8dSZ7+ytlRtWLaQhag3HXOncTfmYpuUOX4cDoXjvLfw1sHRCHMiBjYhc35CymQ==", + "node_modules/postcss": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", + "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", "dev": true, - "requires": { - "browserslist": "^4.16.0", - "color": "^3.1.1", - "postcss-value-parser": "^4.1.0" + "dependencies": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "postcss-convert-values": { + "node_modules/postcss-attribute-case-insensitive": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.0.tgz", - "integrity": "sha512-V5kmYm4xoBAjNs+eHY/6XzXJkkGeg4kwNf2ocfqhLb1WBPEa4oaSmoi1fnVO7Dkblqvus9h+AenDvhCKUCK7uQ==", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.0.tgz", + "integrity": "sha512-b4g9eagFGq9T5SWX4+USfVyjIb3liPnjhHHRMP7FMB2kFVpYyfEscV0wP3eaXhKlcHKUut8lt5BGoeylWA/dBQ==", "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" + "dependencies": { + "postcss-selector-parser": "^6.0.2" + }, + "peerDependencies": { + "postcss": "^8.0.2" } }, - "postcss-discard-comments": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.0.tgz", - "integrity": "sha512-Umig6Gxs8m20RihiXY6QkePd6mp4FxkA1Dg+f/Kd6uw0gEMfKRjDeQOyFkLibexbJJGHpE3lrN/Q0R9SMrUMbQ==", - "dev": true - }, - "postcss-discard-duplicates": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.0.tgz", - "integrity": "sha512-vEJJ+Y3pFUnO1FyCBA6PSisGjHtnphL3V6GsNvkASq/VkP3OX5/No5RYXXLxHa2QegStNzg6HYrYdo71uR4caQ==", - "dev": true - }, - "postcss-discard-empty": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.0.tgz", - "integrity": "sha512-+wigy099Y1xZxG36WG5L1f2zeH1oicntkJEW4TDIqKKDO2g9XVB3OhoiHTu08rDEjLnbcab4rw0BAccwi2VjiQ==", - "dev": true - }, - "postcss-discard-overridden": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.0.tgz", - "integrity": "sha512-hybnScTaZM2iEA6kzVQ6Spozy7kVdLw+lGw8hftLlBEzt93uzXoltkYp9u0tI8xbfhxDLTOOzHsHQCkYdmzRUg==", - "dev": true - }, - "postcss-import": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.0.tgz", - "integrity": "sha512-gFDDzXhqr9ELmnLHgCC3TbGfA6Dm/YMb/UN8/f7Uuq4fL7VTk2vOIj6hwINEwbokEmp123bLD7a5m+E+KIetRg==", + "node_modules/postcss-color-functional-notation": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.2.tgz", + "integrity": "sha512-DXVtwUhIk4f49KK5EGuEdgx4Gnyj6+t2jBSEmxvpIK9QI40tWrpS2Pua8Q7iIZWBrki2QOaeUdEaLPPa91K0RQ==", "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "postcss-loader": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.2.0.tgz", - "integrity": "sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==", + "node_modules/postcss-color-hex-alpha": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.3.tgz", + "integrity": "sha512-fESawWJCrBV035DcbKRPAVmy21LpoyiXdPTuHUfWJ14ZRjY7Y7PA6P4g8z6LQGYhU1WAxkTxjIjurXzoe68Glw==", "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.4" - }, "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "postcss-merge-longhand": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.1.tgz", - "integrity": "sha512-H1RO8le5deFGumQzuhJjuL0bIXPRysa+w7xtk5KrHe38oiaSS9ksPXDo24+IOS3SETPhip0J5+1uCOW+ALs3Yw==", + "node_modules/postcss-color-rebeccapurple": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.0.2.tgz", + "integrity": "sha512-SFc3MaocHaQ6k3oZaFwH8io6MdypkUtEy/eXzXEB1vEQlO3S3oDc/FSZA8AsS04Z25RirQhlDlHLh3dn7XewWw==", "dev": true, - "requires": { - "css-color-names": "^1.0.1", - "postcss-value-parser": "^4.1.0", - "stylehacks": "^5.0.0" + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" } }, - "postcss-merge-rules": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.0.tgz", - "integrity": "sha512-TfsXbKjNYCGfUPEXGIGPySnMiJbdS+3gcVeV8gwmJP4RajyKZHW8E0FYDL1WmggTj3hi+m+WUCAvqRpX2ut4Kg==", + "node_modules/postcss-custom-media": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz", + "integrity": "sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g==", "dev": true, - "requires": { - "browserslist": "^4.16.0", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^2.0.0", - "postcss-selector-parser": "^6.0.4", - "vendors": "^1.0.3" + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "postcss-minify-font-values": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.0.tgz", - "integrity": "sha512-zi2JhFaMOcIaNxhndX5uhsqSY1rexKDp23wV8EOmC9XERqzLbHsoRye3aYF716Zm+hkcR4loqKDt8LZlmihwAg==", + "node_modules/postcss-custom-properties": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.4.tgz", + "integrity": "sha512-i6AytuTCoDLJkWN/MtAIGriJz3j7UX6bV7Z5t+KgFz+dwZS15/mlTJY1S0kRizlk6ba0V8u8hN50Fz5Nm7tdZw==", "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "postcss-minify-gradients": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.0.tgz", - "integrity": "sha512-/jPtNgs6JySMwgsE5dPOq8a2xEopWTW3RyqoB9fLqxgR+mDUNLSi7joKd+N1z7FXWgVkc4l/dEBMXHgNAaUbvg==", + "node_modules/postcss-custom-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.0.tgz", + "integrity": "sha512-/1iyBhz/W8jUepjGyu7V1OPcGbc636snN1yXEQCinb6Bwt7KxsiU7/bLQlp8GwAXzCh7cobBU5odNn/2zQWR8Q==", "dev": true, - "requires": { - "cssnano-utils": "^2.0.0", - "is-color-stop": "^1.1.0", - "postcss-value-parser": "^4.1.0" + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.2" } }, - "postcss-minify-params": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.0.tgz", - "integrity": "sha512-KvZYIxTPBVKjdd+XgObq9A+Sfv8lMkXTpbZTsjhr42XbfWIeLaTItMlygsDWfjArEc3muUfDaUFgNSeDiJ5jug==", + "node_modules/postcss-dir-pseudo-class": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz", + "integrity": "sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw==", "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "browserslist": "^4.16.0", - "cssnano-utils": "^2.0.0", - "postcss-value-parser": "^4.1.0", - "uniqs": "^2.0.0" + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "postcss-minify-selectors": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.0.0.tgz", - "integrity": "sha512-cEM0O0eWwFIvmo6nfB0lH0vO/XFwgqIvymODbfPXZ1gTA3i76FKnb7TGUrEpiTxaXH6tgYQ6DcTHwRiRS+YQLQ==", + "node_modules/postcss-double-position-gradients": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.0.5.tgz", + "integrity": "sha512-XiZzvdxLOWZwtt/1GgHJYGoD9scog/DD/yI5dcvPrXNdNDEv7T53/6tL7ikl+EM3jcerII5/XIQzd1UHOdTi2w==", "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^3.1.2" - }, "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "node_modules/postcss-env-function": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.5.tgz", + "integrity": "sha512-gPUJc71ji9XKyl0WSzAalBeEA/89kU+XpffpPxSaaaZ1c48OL36r1Ep5R6+9XAPkIiDlSvVAwP4io12q/vTcvA==", "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "node_modules/postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "node_modules/postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", "dev": true, - "requires": { - "icss-utils": "^5.0.0" + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "postcss-normalize-charset": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.0.tgz", - "integrity": "sha512-pqsCkgo9KmQP0ew6DqSA+uP9YN6EfsW20pQ3JU5JoQge09Z6Too4qU0TNDsTNWuEaP8SWsMp+19l15210MsDZQ==", - "dev": true - }, - "postcss-normalize-display-values": { + "node_modules/postcss-font-variant": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.0.tgz", - "integrity": "sha512-t4f2d//gH1f7Ns0Jq3eNdnWuPT7TeLuISZ6RQx4j8gpl5XrhkdshdNcOnlrEK48YU6Tcb6jqK7dorME3N4oOGA==", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", "dev": true, - "requires": { - "cssnano-utils": "^2.0.0", - "postcss-value-parser": "^4.1.0" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "postcss-normalize-positions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.0.tgz", - "integrity": "sha512-0o6/qU5ky74X/eWYj/tv4iiKCm3YqJnrhmVADpIMNXxzFZywsSQxl8F7cKs8jQEtF3VrJBgcDHTexZy1zgDoYg==", + "node_modules/postcss-gap-properties": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz", + "integrity": "sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ==", "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "postcss-normalize-repeat-style": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.0.tgz", - "integrity": "sha512-KRT14JbrXKcFMYuc4q7lh8lvv8u22wLyMrq+UpHKLtbx2H/LOjvWXYdoDxmNrrrJzomAWL+ViEXr48/IhSUJnQ==", + "node_modules/postcss-image-set-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz", + "integrity": "sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A==", "dev": true, - "requires": { - "cssnano-utils": "^2.0.0", - "postcss-value-parser": "^4.1.0" + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "postcss-normalize-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.0.tgz", - "integrity": "sha512-wSO4pf7GNcDZpmelREWYADF1+XZWrAcbFLQCOqoE92ZwYgaP/RLumkUTaamEzdT2YKRZAH8eLLKGWotU/7FNPw==", + "node_modules/postcss-import": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz", + "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==", "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" } }, - "postcss-normalize-timing-functions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.0.tgz", - "integrity": "sha512-TwPaDX+wl9wO3MUm23lzGmOzGCGKnpk+rSDgzB2INpakD5dgWR3L6bJq1P1LQYzBAvz8fRIj2NWdnZdV4EV98Q==", + "node_modules/postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", "dev": true, - "requires": { - "cssnano-utils": "^2.0.0", - "postcss-value-parser": "^4.1.0" + "peerDependencies": { + "postcss": "^8.0.0" } }, - "postcss-normalize-unicode": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.0.tgz", - "integrity": "sha512-2CpVoz/67rXU5s9tsPZDxG1YGS9OFHwoY9gsLAzrURrCxTAb0H7Vp87/62LvVPgRWTa5ZmvgmqTp2rL8tlm72A==", + "node_modules/postcss-lab-function": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.0.4.tgz", + "integrity": "sha512-TAEW8X/ahMYV33mvLFQARtBPAy1VVJsiR9VVx3Pcbu+zlqQj0EIyJ/Ie1/EwxwIt530CWtEDzzTXBDzfdb+qIQ==", "dev": true, - "requires": { - "browserslist": "^4.16.0", - "postcss-value-parser": "^4.1.0" + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "postcss-normalize-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.0.tgz", - "integrity": "sha512-ICDaGFBqLgA3dlrCIRuhblLl80D13YtgEV9NJPTYJtgR72vu61KgxAHv+z/lKMs1EbwfSQa3ALjOFLSmXiE34A==", + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", "dev": true, - "requires": { - "is-absolute-url": "^3.0.3", - "normalize-url": "^4.5.0", - "postcss-value-parser": "^4.1.0" + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" } }, - "postcss-normalize-whitespace": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.0.tgz", - "integrity": "sha512-KRnxQvQAVkJfaeXSz7JlnD9nBN9sFZF9lrk9452Q2uRoqrRSkinqifF8Iex7wZGei2DZVG/qpmDFDmRvbNAOGA==", + "node_modules/postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "postcss-ordered-values": { + "node_modules/postcss-media-minmax": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.0.tgz", - "integrity": "sha512-dPr+SRObiHueCIc4IUaG0aOGQmYkuNu50wQvdXTGKy+rzi2mjmPsbeDsheLk5WPb9Zyf2tp8E+I+h40cnivm6g==", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", "dev": true, - "requires": { - "cssnano-utils": "^2.0.0", - "postcss-value-parser": "^4.1.0" + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "postcss-reduce-initial": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.0.tgz", - "integrity": "sha512-wR6pXUaFbSMG1oCKx8pKVA+rnSXCHlca5jMrlmkmif+uig0HNUTV9oGN5kjKsM3mATQAldv2PF9Tbl2vqLFjnA==", + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", "dev": true, - "requires": { - "browserslist": "^4.16.0", - "caniuse-api": "^3.0.0" + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "postcss-reduce-transforms": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.0.tgz", - "integrity": "sha512-iHdGODW4YzM3WjVecBhPQt6fpJC4lGQZxJKjkBNHpp2b8dzmvj0ogKThqya+IRodQEFzjfXgYeESkf172FH5Lw==", + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", "dev": true, - "requires": { - "cssnano-utils": "^2.0.0", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "postcss-svgo": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.0.tgz", - "integrity": "sha512-M3/VS4sFI1Yp9g0bPL+xzzCNz5iLdRUztoFaugMit5a8sMfkVzzhwqbsOlD8IFFymCdJDmXmh31waYHWw1K4BA==", + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0", - "svgo": "^2.3.0" + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nesting": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.2.tgz", + "integrity": "sha512-dJGmgmsvpzKoVMtDMQQG/T6FSqs6kDtUDirIfl4KnjMCiY9/ETX8jdKyCd20swSRAbUYkaBKV20pxkzxoOXLqQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.8" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz", + "integrity": "sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "dev": true, + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.4.tgz", + "integrity": "sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-preset-env": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.2.3.tgz", + "integrity": "sha512-Ok0DhLfwrcNGrBn8sNdy1uZqWRk/9FId0GiQ39W4ILop5GHtjJs8bu1MY9isPwHInpVEPWjb4CEcEaSbBLpfwA==", + "dev": true, + "dependencies": { + "autoprefixer": "^10.4.2", + "browserslist": "^4.19.1", + "caniuse-lite": "^1.0.30001299", + "css-blank-pseudo": "^3.0.2", + "css-has-pseudo": "^3.0.3", + "css-prefers-color-scheme": "^6.0.2", + "cssdb": "^5.0.0", + "postcss-attribute-case-insensitive": "^5.0.0", + "postcss-color-functional-notation": "^4.2.1", + "postcss-color-hex-alpha": "^8.0.2", + "postcss-color-rebeccapurple": "^7.0.2", + "postcss-custom-media": "^8.0.0", + "postcss-custom-properties": "^12.1.2", + "postcss-custom-selectors": "^6.0.0", + "postcss-dir-pseudo-class": "^6.0.3", + "postcss-double-position-gradients": "^3.0.4", + "postcss-env-function": "^4.0.4", + "postcss-focus-visible": "^6.0.3", + "postcss-focus-within": "^5.0.3", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.2", + "postcss-image-set-function": "^4.0.4", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.0.3", + "postcss-logical": "^5.0.3", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.1.2", + "postcss-overflow-shorthand": "^3.0.2", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.3", + "postcss-pseudo-class-any-link": "^7.0.2", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^5.0.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.1.tgz", + "integrity": "sha512-JRoLFvPEX/1YTPxRxp1JO4WxBVXJYrSY7NHeak5LImwJ+VobFMwYDQHvfTXEpcn+7fYIeGkC29zYFhFWIZD8fg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "postcss-unique-selectors": { + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "dev": true, + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.0.tgz", - "integrity": "sha512-o9l4pF8SRn7aCMTmzb/kNv/kjV7wPZpZ8Nlb1Gq8v/Qvw969K1wanz1RVA0ehHzWe9+wHXaC2DvZlak/gdMJ5w==", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz", + "integrity": "sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==", "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.2", - "uniqs": "^2.0.0" + "dependencies": { + "balanced-match": "^1.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "node_modules/postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, - "pretty-bytes": { + "node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "process-nextick-args": { + "node_modules/process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" }, - "promise-inflight": { + "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, - "promise-retry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", - "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, - "requires": { - "err-code": "^1.0.0", - "retry": "^0.10.0" + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, "dependencies": { - "err-code": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", - "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", - "dev": true - }, - "retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", - "dev": true - } + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" } }, - "protractor": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", - "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", - "dev": true, - "requires": { - "@types/q": "^0.0.32", - "@types/selenium-webdriver": "^3.0.0", - "blocking-proxy": "^1.0.0", - "browserstack": "^1.5.1", - "chalk": "^1.1.3", - "glob": "^7.0.3", - "jasmine": "2.8.0", - "jasminewd2": "^2.1.0", - "q": "1.4.1", - "saucelabs": "^1.5.0", - "selenium-webdriver": "3.6.0", - "source-map-support": "~0.4.0", - "webdriver-js-extender": "2.1.0", - "webdriver-manager": "^12.1.7", - "yargs": "^15.3.1" - }, - "dependencies": { - "@types/q": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", - "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" - } - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true, + "optional": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true, + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "dev": true, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "q": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "webdriver-manager": { - "version": "12.1.8", - "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz", - "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==", - "dev": true, - "requires": { - "adm-zip": "^0.4.9", - "chalk": "^1.1.1", - "del": "^2.2.0", - "glob": "^7.0.3", - "ini": "^1.3.4", - "minimist": "^1.2.0", - "q": "^1.4.1", - "request": "^2.87.0", - "rimraf": "^2.5.2", - "semver": "^5.3.0", - "xml2js": "^0.4.17" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + { + "type": "consulting", + "url": "https://feross.org/support" } - } - }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "dev": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true + ] }, - "randombytes": { + "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", + "dependencies": { "safe-buffer": "^5.1.0" } }, - "range-parser": { + "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "dev": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - } + "engines": { + "node": ">= 0.6" } }, - "raw-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", - "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", + "node_modules/raw-body": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } + "bytes": "3.1.1", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "read-cache": { + "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", "dev": true, - "requires": { - "pify": "^2.3.0" - }, "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } + "pify": "^2.3.0" } }, - "read-package-json-fast": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-1.2.2.tgz", - "integrity": "sha512-39DbPJjkltEzfXJXB6D8/Ir3GFOU2YbSKa2HaB/Y3nKrc/zY+0XrALpID6/13ezWyzqvOHrBbR4t4cjQuTdBVQ==", + "node_modules/read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, - "requires": { + "dependencies": { "json-parse-even-better-errors": "^2.3.0", "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" } }, - "readable-stream": { + "node_modules/readable-stream": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "requires": { + "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", "isarray": "~1.0.0", @@ -10298,679 +9440,462 @@ "util-deprecate": "~1.0.1" } }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "requires": { + "dependencies": { "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "reflect-metadata": { + "node_modules/reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", "dev": true }, - "regenerate": { + "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "node_modules/regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", "dev": true, - "requires": { - "regenerate": "^1.4.0" + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" } }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, - "regenerator-transform": { + "node_modules/regenerator-transform": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, - "requires": { + "dependencies": { "@babel/runtime": "^7.8.4" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regex-parser": { + "node_modules/regex-parser": { "version": "2.2.11", "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", "dev": true }, - "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "node_modules/regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "node_modules/regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "node_modules/regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", "dev": true }, - "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "node_modules/regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", "dev": true, - "requires": { + "dependencies": { "jsesc": "~0.5.0" }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } + "bin": { + "regjsparser": "bin/parser" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - } + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" } }, - "require-directory": { + "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "requires-port": { + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "requires": { - "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } + "engines": { + "node": ">=8" } }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "resolve-url-loader": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz", - "integrity": "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==", - "dev": true, - "requires": { - "adjust-sourcemap-loader": "3.0.0", - "camelcase": "5.3.1", - "compose-function": "3.0.3", - "convert-source-map": "1.7.0", - "es6-iterator": "2.0.3", - "loader-utils": "1.2.3", - "postcss": "7.0.21", - "rework": "1.0.1", - "rework-visit": "1.0.0", + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", "source-map": "0.6.1" }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } - }, - "postcss": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", - "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" } }, - "restore-cursor": { + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, - "requires": { + "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "retry": { + "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true + "dev": true, + "engines": { + "node": ">= 4" + } }, - "reusify": { + "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rework": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", - "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", "dev": true, - "requires": { - "convert-source-map": "^0.3.3", - "css": "^2.0.0" - }, - "dependencies": { - "convert-source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", - "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", - "dev": true - }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - } + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "rework-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", - "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=", - "dev": true - }, - "rfdc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.2.0.tgz", - "integrity": "sha512-ijLyszTMmUrXvjSooucVQwimGUk84eRcmCuLV8Xghe3UO85mjUtRAHRyoMM6XtyqbECaXuBWx18La3523sXINA==", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, - "rimraf": { + "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "requires": { + "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rollup": { - "version": "2.38.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.38.4.tgz", - "integrity": "sha512-B0LcJhjiwKkTl79aGVF/u5KdzsH8IylVfV56Ut6c9ouWLJcUK17T83aZBetNYSnZtXf2OHD4+2PbmRW+Fp5ulg==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "run-async": { + "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.12.0" + } }, - "run-parallel": { + "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "requires": { + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { "queue-microtask": "^1.2.2" } }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "6.6.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", - "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", - "requires": { - "tslib": "^1.9.0" - }, + "node_modules/rxjs": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.3.tgz", + "integrity": "sha512-6162iC/N7L7K8q3UvdOMWix1ju+esADGrDaPrTu5XJmCv69YNdYoUaop/iatN8GHK+YHOdszPP+qygA0yi04zQ==", "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "tslib": "^2.1.0" } }, - "safe-buffer": { + "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { + "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "sass": { - "version": "1.32.6", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.6.tgz", - "integrity": "sha512-1bcDHDcSqeFtMr0JXI3xc/CXX6c4p0wHHivJdru8W7waM7a1WjKMm4m/Z5sY7CbVw4Whi2Chpcw6DFfSWwGLzQ==", + "node_modules/sass": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.0.tgz", + "integrity": "sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==", "dev": true, - "requires": { - "chokidar": ">=2.0.0 <4.0.0" + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=8.9.0" } }, - "sass-loader": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz", - "integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==", + "node_modules/sass-loader": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.4.0.tgz", + "integrity": "sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg==", "dev": true, - "requires": { + "dependencies": { "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "neo-async": "^2.6.2", - "schema-utils": "^3.0.0", - "semver": "^7.3.2" + "neo-async": "^2.6.2" }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "saucelabs": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", - "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", - "dev": true, - "requires": { - "https-proxy-agent": "^2.2.1" + "engines": { + "node": ">= 12.13.0" }, - "dependencies": { - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "node-sass": { + "optional": true }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - } + "sass": { + "optional": true } } }, - "sax": { + "node_modules/sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, - "schema-utils": { + "node_modules/schema-utils": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, - "requires": { + "dependencies": { "@types/json-schema": "^7.0.5", "ajv": "^6.12.4", "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "select-hose": { + "node_modules/schema-utils/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", "dev": true }, - "selenium-webdriver": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", - "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "node_modules/selfsigned": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", + "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", "dev": true, - "requires": { - "jszip": "^3.1.3", - "rimraf": "^2.5.4", - "tmp": "0.0.30", - "xml2js": "^0.4.17" + "dependencies": { + "node-forge": "^1.2.0" }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "tmp": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", - "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.1" - } - } - } - }, - "selfsigned": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", - "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", - "dev": true, - "requires": { - "node-forge": "^0.10.0" - } - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { "lru-cache": "^6.0.0" - } - }, - "semver-dsl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", - "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", - "dev": true, - "requires": { - "semver": "^5.3.0" }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "semver-intersect": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", - "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", - "dev": true, - "requires": { - "semver": "^5.0.0" + "bin": { + "semver": "bin/semver.js" }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "engines": { + "node": ">=10" } }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", "dev": true, - "requires": { + "dependencies": { "debug": "2.6.9", "depd": "~1.1.2", "destroy": "~1.0.4", @@ -10978,54 +9903,65 @@ "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "1.8.1", "mime": "1.6.0", - "ms": "2.1.1", + "ms": "2.1.3", "on-finished": "~2.3.0", "range-parser": "~1.2.1", "statuses": "~1.5.0" }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } + "ms": "2.0.0" } }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "requires": { + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { "randombytes": "^2.1.0" } }, - "serve-index": { + "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, - "requires": { + "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", "debug": "2.6.9", @@ -11034,2679 +9970,9722 @@ "mime-types": "~2.1.17", "parseurl": "~1.3.2" }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } + "ms": "2.0.0" } }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, - "requires": { + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dev": true, + "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "set-blocking": { + "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "dependencies": { + "kind-of": "^6.0.2" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, - "requires": { - "kind-of": "^6.0.2" + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" } }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "node_modules/socket.io": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", + "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", "dev": true, - "requires": { - "shebang-regex": "^1.0.0" + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.1.0", + "socket.io-adapter": "~2.3.3", + "socket.io-parser": "~4.0.4" + }, + "engines": { + "node": ">=10.0.0" } }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "node_modules/socket.io-adapter": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", + "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==", "dev": true }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true + "node_modules/socket.io-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "dev": true, + "dependencies": { + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, - "requires": { - "is-arrayish": "^0.3.1" + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dev": true, + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "dev": true, "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" } }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true + "node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } }, - "smart-buffer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", - "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", - "dev": true + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "node_modules/source-map-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz", + "integrity": "sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==", "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": ">= 12.13.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "socket.io": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", - "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", - "dev": true, - "requires": { - "@types/cookie": "^0.4.0", - "@types/cors": "^2.8.8", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.1", - "engine.io": "~4.1.0", - "socket.io-adapter": "~2.1.0", - "socket.io-parser": "~4.0.3" - } - }, - "socket.io-adapter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", - "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", - "dev": true - }, - "socket.io-parser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", - "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", - "dev": true, - "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", - "debug": "~4.3.1" - } - }, - "sockjs": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", - "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", - "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", - "websocket-driver": "^0.7.4" - } - }, - "sockjs-client": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", - "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", - "dev": true, - "requires": { - "debug": "^3.2.6", - "eventsource": "^1.0.7", - "faye-websocket": "^0.11.3", - "inherits": "^2.0.4", - "json3": "^3.3.3", - "url-parse": "^1.5.1" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "socks": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", - "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.1.0" - } - }, - "socks-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz", - "integrity": "sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4", - "socks": "^2.3.3" - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "source-map-loader": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.3.tgz", - "integrity": "sha512-6YHeF+XzDOrT/ycFJNI53cgEsp/tHTMl37hi7uVyqFAlTXW109JazaQCkbc+jjoL2637qkH1amLi+JzrIpt5lA==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.2", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "source-map": "^0.6.1", - "whatwg-mimetype": "^2.3.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, - "dependencies": { - "iconv-lite": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", - "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "engines": { + "node": ">=0.10.0" } }, - "source-map-resolve": { + "node_modules/source-map-resolve": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", "dev": true, - "requires": { + "dependencies": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0" } }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "requires": { + "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "sourcemap-codec": { + "node_modules/sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, - "spdy": { + "node_modules/spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, - "requires": { + "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", "http-deceiver": "^1.2.7", "select-hose": "^2.0.0", "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" } }, - "spdy-transport": { + "node_modules/spdy-transport": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, - "requires": { + "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", "hpack.js": "^2.1.6", "obuf": "^1.1.2", "readable-stream": "^3.0.6", "wbuf": "^1.7.3" - }, + } + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/spdy-transport/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } + { + "type": "consulting", + "url": "https://feross.org/support" } + ] + }, + "node_modules/spdy-transport/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" } }, - "speed-measure-webpack-plugin": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.4.2.tgz", - "integrity": "sha512-AtVzD0bnIy2/B0fWqJpJgmhcrfWFhBlduzSo0uwplr/QvB33ZNZj2NEth3NONgdnZJqicK0W0mSxnLSbsVCDbw==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, - "requires": { - "chalk": "^4.1.0" - }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { "minipass": "^3.1.1" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "engines": { + "node": ">= 8" } }, - "statuses": { + "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" + "engines": { + "node": ">= 0.6" } }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "node_modules/streamroller": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.2.tgz", + "integrity": "sha512-ur6y5S5dopOaRXBuRIZ1u6GC5bcEXHRZKgfBjfCglMhmIf+roVCECjvkEYzNQOXIN2/JPnkMPW/8B3CZoKaEPA==", "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - }, "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "streamroller": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", - "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", - "dev": true, - "requires": { - "date-format": "^2.1.0", + "date-format": "^4.0.3", "debug": "^4.1.1", - "fs-extra": "^8.1.0" + "fs-extra": "^10.0.0" }, - "dependencies": { - "date-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", - "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "string-width": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.1.tgz", - "integrity": "sha512-LL0OLyN6AnfV9xqGQpDBwedT2Rt63737LxvsRxbcwpa2aIeynBApG2Sm//F3TaLHIR1aJBN52DWklc06b94o5Q==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "engines": { + "node": ">=8.0" } }, - "string_decoder": { + "node_modules/string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "requires": { - "ansi-regex": "^5.0.0" + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "style-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", - "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "stylehacks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.0.tgz", - "integrity": "sha512-QOWm6XivDLb+fqffTZP8jrmPmPITVChl2KCY2R05nsCWwLi3VGhCdVc3IVGNwd1zzTt1jPd67zIKjpQfxzQZeA==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "requires": { - "browserslist": "^4.16.0", - "postcss-selector-parser": "^6.0.4" + "engines": { + "node": ">=6" } }, - "stylus": { - "version": "0.54.8", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", - "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", + "node_modules/stylus": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.56.0.tgz", + "integrity": "sha512-Ev3fOb4bUElwWu4F9P9WjnnaSpc8XB9OFHSFZSKMFL1CE1oM+oFXWEgAqPmmZIyhBihuqIQlFsVTypiiS9RxeA==", "dev": true, - "requires": { - "css-parse": "~2.0.0", - "debug": "~3.1.0", + "dependencies": { + "css": "^3.0.0", + "debug": "^4.3.2", "glob": "^7.1.6", - "mkdirp": "~1.0.4", "safer-buffer": "^2.1.2", "sax": "~1.2.4", - "semver": "^6.3.0", "source-map": "^0.7.3" }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" } }, - "stylus-loader": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-4.3.3.tgz", - "integrity": "sha512-PpWB5PnCXUzW4WMYhCvNzAHJBjIBPMXwsdfkkKuA9W7k8OQFMl/19/AQvaWsxz2IptxUlCseyJ6TY/eEKJ4+UQ==", + "node_modules/stylus-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.2.0.tgz", + "integrity": "sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg==", "dev": true, - "requires": { - "fast-glob": "^3.2.4", + "dependencies": { + "fast-glob": "^3.2.7", "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "normalize-path": "^3.0.0", - "schema-utils": "^3.0.0" + "normalize-path": "^3.0.0" }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "stylus": ">=0.52.4", + "webpack": "^5.0.0" } }, - "supports-color": { + "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "requires": { + "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "svgo": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.3.0.tgz", - "integrity": "sha512-fz4IKjNO6HDPgIQxu4IxwtubtbSfGEAJUq/IXyTPIkGhWck/faiiwfkvsB8LnBkKLvSoyNNIY6d13lZprJMc9Q==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "requires": { - "@trysound/sax": "0.1.1", - "chalk": "^4.1.0", - "commander": "^7.1.0", - "css-select": "^3.1.2", - "css-tree": "^1.1.2", - "csso": "^4.2.0", - "stable": "^0.1.8" + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/terser": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", + "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "acorn": "^8.5.0" + }, + "peerDependenciesMeta": { + "acorn": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "esbuild": { + "optional": true }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } + "uglify-js": { + "optional": true } } }, - "symbol-observable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-3.0.0.tgz", - "integrity": "sha512-6tDOXSHiVjuCaasQSWTmHUWn4PuG7qa3+1WT031yTc/swT7+rLiw3GOrFxaH1E3lLP09dH3bVuVDf2gK5rxG3Q==", - "dev": true + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } }, - "tapable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", - "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "terser": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", - "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" + "engines": { + "node": ">=0.10.0" } }, - "terser-webpack-plugin": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", - "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, - "requires": { - "cacache": "^15.0.5", - "find-cache-dir": "^3.3.1", - "jest-worker": "^26.5.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "source-map": "^0.6.1", - "terser": "^5.3.4", - "webpack-sources": "^1.4.3" - }, "dependencies": { - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" } }, - "text-table": { + "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "through": { + "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "thunky": { + "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "tmp": { + "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, - "requires": { + "dependencies": { "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" } }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { + "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "engines": { + "node": ">=4" } }, - "to-regex-range": { + "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "requires": { + "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "engines": { + "node": ">=0.6" } }, - "tree-kill": { + "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "ts-node": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz", - "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==", "dev": true, - "requires": { - "arg": "^4.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.6", - "yn": "^3.0.0" + "bin": { + "tree-kill": "cli.js" } }, - "ts-pnp": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", - "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", - "dev": true - }, - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, - "tslint": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", - "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.3", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.13.0", - "tsutils": "^2.29.0" + "engines": { + "node": ">=10" }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, - "requires": { - "tslib": "^1.8.1" - }, "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" } }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "node_modules/typed-assert": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.8.tgz", + "integrity": "sha512-5NkbXZUlmCE73Fs7gvkp1XXJWHYetPkg60QnQ2NXQmBYNFxbBr2zA8GCtaH4K2s2WhOmSlgiSTmrjrcm5tnM5g==", "dev": true }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "node_modules/typescript": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", "dev": true, - "requires": { - "safe-buffer": "^5.0.1" + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" } }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "node_modules/ua-parser-js": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typescript": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.7.tgz", - "integrity": "sha512-yi7M4y74SWvYbnazbn8/bmJmX4Zlej39ZOqwG/8dut/MYoSQ119GY9ZFbbGsD4PFZYWxqik/XsP3vk3+W5H3og==", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.24", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.24.tgz", - "integrity": "sha512-yo+miGzQx5gakzVK3QFfN0/L9uVhosXBBO7qmnk7c2iw1IhL212wfA3zbnI54B0obGwC/5NWub/iT9sReMx+Fw==", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "engines": { + "node": ">=4" } }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "uniqs": { + "node_modules/unicode-property-aliases-ecmascript": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "unique-filename": { + "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, - "requires": { + "dependencies": { "unique-slug": "^2.0.0" } }, - "unique-slug": { + "node_modules/unique-slug": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, - "requires": { + "dependencies": { "imurmurhash": "^0.1.4" } }, - "universal-analytics": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.23.tgz", - "integrity": "sha512-lgMIH7XBI6OgYn1woDEmxhGdj8yDefMKg7GkWdeATAlQZFrMrNyxSkpDzY57iY0/6fdlzTbBV03OawvvzG+q7A==", + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "requires": { - "debug": "^4.1.1", - "request": "^2.88.2", - "uuid": "^3.0.0" + "engines": { + "node": ">= 10.0.0" } }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { + "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } + "engines": { + "node": ">= 0.8" } }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "uri-js": { + "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } + "punycode": "^2.1.0" } }, - "util-deprecate": { + "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "utils-merge": { + "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4.0" + } }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } }, - "validate-npm-package-name": { + "node_modules/validate-npm-package-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", "dev": true, - "requires": { + "dependencies": { "builtins": "^1.0.3" } }, - "vary": { + "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "engines": { + "node": ">= 0.8" } }, - "vkbeautify": { + "node_modules/vkbeautify": { "version": "0.99.3", "resolved": "https://registry.npmjs.org/vkbeautify/-/vkbeautify-0.99.3.tgz", "integrity": "sha512-2ozZEFfmVvQcHWoHLNuiKlUfDKlhh4KGsy54U0UrlLMR1SO+XKAIDqBxtBwHgNrekurlJwE8A9K6L49T78ZQ9Q==" }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "void-elements": { + "node_modules/void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true - }, - "watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, - "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" + "engines": { + "node": ">=0.10.0" } }, - "watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", "dev": true, - "optional": true, - "requires": { - "chokidar": "^2.1.8" - }, "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "optional": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" } }, - "wbuf": { + "node_modules/wbuf": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, - "requires": { + "dependencies": { "minimalistic-assert": "^1.0.0" } }, - "wcwidth": { + "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", "dev": true, - "requires": { + "dependencies": { "defaults": "^1.0.3" } }, - "webdriver-js-extender": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", - "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", + "node_modules/webpack": { + "version": "5.67.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", + "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", "dev": true, - "requires": { - "@types/selenium-webdriver": "^3.0.0", - "selenium-webdriver": "^3.0.1" - } - }, - "webpack": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", - "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.3.0", - "eslint-scope": "^4.0.3", + "dependencies": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } - }, - "terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", - "dev": true, - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true } } }, - "webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", - "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "node_modules/webpack-dev-middleware": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz", + "integrity": "sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg==", "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.2.2", + "mime-types": "^2.1.31", "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" + "schema-utils": "^4.0.0" }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, "dependencies": { - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "dev": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "webpack-dev-server": { - "version": "3.11.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", - "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", + "node_modules/webpack-dev-server": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz", + "integrity": "sha512-mlxq2AsIw2ag016nixkzUkdyOE8ST2GTy34uKSABp1c4nhjZvH90D5ZRR+UOLSsG4Z3TFahAi72a3ymRtfRm+Q==", "dev": true, - "requires": { - "ansi-html": "0.0.7", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", "bonjour": "^3.5.0", - "chokidar": "^2.1.8", + "chokidar": "^3.5.2", + "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", + "default-gateway": "^6.0.3", + "del": "^6.0.0", "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", "serve-index": "^1.9.1", "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.0", + "ws": "^8.1.0" }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { "optional": true - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + } + } + }, + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", + "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/zone.js": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.4.tgz", + "integrity": "sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw==", + "dependencies": { + "tslib": "^2.0.0" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-1.1.1.tgz", + "integrity": "sha512-YVAcA4DKLOj296CF5SrQ8cYiMRiUGc2sqFpLxsDGWE34suHqhGP/5yMsDHKsrh8hs8I5TiRVXNwKPWQpX3iGjw==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "sourcemap-codec": "1.4.8" + } + }, + "@angular-devkit/architect": { + "version": "0.1302.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.2.tgz", + "integrity": "sha512-kkydqB0PA6ZvaUgHCePoqUAzLzx+x62xOGx5z4FtIlYO9zCYHbv9q4V1jtM0ufj9PZmHCM9HNafp68hx2dcCpg==", + "dev": true, + "requires": { + "@angular-devkit/core": "13.2.2", + "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/build-angular": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.2.2.tgz", + "integrity": "sha512-ExSaNi/TlMlqX4kk8D6Ok+cALsd5EGqwqDkLaw1B69497LNJQQPI5koeHXQNOHMjxf9pgAezQWWqlWOuKeSKsA==", + "dev": true, + "requires": { + "@ampproject/remapping": "1.1.1", + "@angular-devkit/architect": "0.1302.2", + "@angular-devkit/build-webpack": "0.1302.2", + "@angular-devkit/core": "13.2.2", + "@babel/core": "7.16.12", + "@babel/generator": "7.16.8", + "@babel/helper-annotate-as-pure": "7.16.7", + "@babel/plugin-proposal-async-generator-functions": "7.16.8", + "@babel/plugin-transform-async-to-generator": "7.16.8", + "@babel/plugin-transform-runtime": "7.16.10", + "@babel/preset-env": "7.16.11", + "@babel/runtime": "7.16.7", + "@babel/template": "7.16.7", + "@discoveryjs/json-ext": "0.5.6", + "@ngtools/webpack": "13.2.2", + "ansi-colors": "4.1.1", + "babel-loader": "8.2.3", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.9.1", + "cacache": "15.3.0", + "circular-dependency-plugin": "5.2.2", + "copy-webpack-plugin": "10.2.1", + "core-js": "3.20.3", + "critters": "0.0.16", + "css-loader": "6.5.1", + "esbuild": "0.14.14", + "esbuild-wasm": "0.14.14", + "glob": "7.2.0", + "https-proxy-agent": "5.0.0", + "inquirer": "8.2.0", + "jsonc-parser": "3.0.0", + "karma-source-map-support": "1.4.0", + "less": "4.1.2", + "less-loader": "10.2.0", + "license-webpack-plugin": "4.0.1", + "loader-utils": "3.2.0", + "mini-css-extract-plugin": "2.5.3", + "minimatch": "3.0.4", + "open": "8.4.0", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "6.0.1", + "piscina": "3.2.0", + "postcss": "8.4.5", + "postcss-import": "14.0.2", + "postcss-loader": "6.2.1", + "postcss-preset-env": "7.2.3", + "regenerator-runtime": "0.13.9", + "resolve-url-loader": "5.0.0", + "rxjs": "6.6.7", + "sass": "1.49.0", + "sass-loader": "12.4.0", + "semver": "7.3.5", + "source-map-loader": "3.0.1", + "source-map-support": "0.5.21", + "stylus": "0.56.0", + "stylus-loader": "6.2.0", + "terser": "5.10.0", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.3.1", + "webpack": "5.67.0", + "webpack-dev-middleware": "5.3.0", + "webpack-dev-server": "4.7.3", + "webpack-merge": "5.8.0", + "webpack-subresource-integrity": "5.1.0" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.1302.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1302.2.tgz", + "integrity": "sha512-QgeJSJt52ZYigw67i3MChuSyp1FUO1LbrzeMoQLdScAPPjnivODz4TTz5bNMrhnP6NoPUpzy6QKOWR1j/TFOHw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1302.2", + "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/core": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.2.2.tgz", + "integrity": "sha512-qH0Vu8qwGD5uhmE8PtePA1lm7xL3JtbBCcrQICmLqD6njLDVb2N5pbdDXeiXDlWGUoIRHUhu6Uw4AsY8zXP/FA==", + "dev": true, + "requires": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/schematics": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.2.2.tgz", + "integrity": "sha512-kXPLTkSzRCeBX+SYUkC6MIrWCkH90Y8hVegR9R5n2YqhCJyE+dZlcx4d/8d3VHtZlzAs0LL8BU+liC3wMIagjA==", + "dev": true, + "requires": { + "@angular-devkit/core": "13.2.2", + "jsonc-parser": "3.0.0", + "magic-string": "0.25.7", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular/animations": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.2.1.tgz", + "integrity": "sha512-Wvuu5OU0T5BlavE0IQohuXWiQUHHmrrkhZSxqatsSno2v1au5u/SJGSGo4RojBKsSm627Z/grLjOT6YA21CObA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/cli": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.2.2.tgz", + "integrity": "sha512-i9pBm5bVWnabwrsw1Ut84BqGu75+Nol6sReh8NTs7zUdCKNC00kqFBZg/1nGGw0IwL3Q+W7rJMgZ9q0qAtFTXg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1302.2", + "@angular-devkit/core": "13.2.2", + "@angular-devkit/schematics": "13.2.2", + "@schematics/angular": "13.2.2", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.1", + "debug": "4.3.3", + "ini": "2.0.0", + "inquirer": "8.2.0", + "jsonc-parser": "3.0.0", + "npm-package-arg": "8.1.5", + "npm-pick-manifest": "6.1.1", + "open": "8.4.0", + "ora": "5.4.1", + "pacote": "12.0.3", + "resolve": "1.22.0", + "semver": "7.3.5", + "symbol-observable": "4.0.0", + "uuid": "8.3.2" + } + }, + "@angular/common": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.2.1.tgz", + "integrity": "sha512-LQgN4thG0NGPG+orKg7/2JiYCKjtZ1T2NKFwRt3dHYbNiHdwNCxkwZPqW1BMSpN6la/QB6aLTkuMV52t2S8FmA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/compiler": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.2.1.tgz", + "integrity": "sha512-CI3EFP8GwpTe+MFoEntWG4LQbq7rfCjP9ZVkKF1F5enA+CPZjYFGQ5qog3D5hnntMeQBU2iw7ZHNVlVfsmfTIQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/compiler-cli": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.2.1.tgz", + "integrity": "sha512-sUJVdHxX1JtUu5qsM2g+l8xtVlfTPcQiIgD3UU5iYT6Twzhs3g5iuqD+C0x5US/x45eXiL87fvs8XW/kNSDfwQ==", + "dev": true, + "requires": { + "@babel/core": "^7.8.6", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.11.0", + "magic-string": "^0.25.0", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "sourcemap-codec": "^1.4.8", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + } + }, + "@angular/core": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.2.1.tgz", + "integrity": "sha512-+V/ZUuMqXDXM5Moo9wWbkM9O55POqAyP0oECoYvVStCDLDXGfWGOSysJIbsp07dsoEx8/kmKWV7Q7ZdHMTVvJg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/forms": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.2.1.tgz", + "integrity": "sha512-3bTxNRmamN6+0eNdd+kYk2XDfPxXYeAIvRlm8MFM9/buP/tlcCusAvnkHABUJ9wX/2kezOXMOkWtO9LfyyNLIg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/platform-browser": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.2.1.tgz", + "integrity": "sha512-9idmGsWqLMhslMnG6+GojNO7L2IRM0DOeUlTo/x28zTedg6f7j2wRJ+ZxfTVRhf75Y3NXOjJ0bfKnLkHOzA+Aw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.2.1.tgz", + "integrity": "sha512-1kCm3TQXY2jWnyrQo3yPb+lZOSzAOtLYvDo0GJ5CggkCCYoVUMj3Iie2K60qcJ8RUd11JNHAed2yvrtwgIm+jA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/router": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.2.1.tgz", + "integrity": "sha512-+UkzW1ODV8GgL2ft6eMmJKYl4rqw6iwh3y5IEenF52X8zmnjjR0/ts/86FmaCfnpaE5S6hwnsopin9LBYVbVTQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@assemblyscript/loader": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", + "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "dev": true + }, + "@babel/core": { + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.8", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz", + "integrity": "sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", + "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helpers": { + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", + "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0" + } + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", + "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", + "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", + "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", + "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", + "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", + "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", + "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.10.tgz", + "integrity": "sha512-9nwTiqETv2G7xI4RvXHNfpGdr8pAA+Q/YtN3yLK7OoK7n9OibVm/xymJ838a9A6E/IciOLPj82lZk0fW6O4O7w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/preset-env": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.8", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.20.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", + "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", + "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.0", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.0", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", + "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", + "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "dev": true + }, + "@gar/promisify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", + "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jridgewell/resolve-uri": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz", + "integrity": "sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==", + "dev": true + }, + "@ngtools/webpack": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.2.2.tgz", + "integrity": "sha512-BkykqIIJgSllNT6f+8IoZtJaI8uKdq62LteoWMMtvAxXErqRLN6CcDxPWjP8tfeEKeCYZ41ueZwNK5V05SsCIg==", + "dev": true, + "requires": {} + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/fs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.0.tgz", + "integrity": "sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA==", + "dev": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", + "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/node-gyp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", + "dev": true + }, + "@npmcli/promise-spawn": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-2.0.0.tgz", + "integrity": "sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^8.2.0", + "read-package-json-fast": "^2.0.1" + } + }, + "@schematics/angular": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.2.2.tgz", + "integrity": "sha512-LfTtu82I7K+BoSzSXV8gA5+ARhtOtOi/qY0uj2782/xzpe+zCbbftgc6MHiSx/a3KO7IStDwf7G6mjqas0v+4g==", + "dev": true, + "requires": { + "@angular-devkit/core": "13.2.2", + "@angular-devkit/schematics": "13.2.2", + "jsonc-parser": "3.0.0" + } + }, + "@socket.io/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", + "dev": true + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/component-emitter": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", + "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", + "dev": true + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", + "dev": true + }, + "@types/crypto-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.0.tgz", + "integrity": "sha512-DCFfy/vh2lG6qHSGezQ+Sn2Ulf/1Mx51dqOdmOKyW5nMK3maLlxeS3onC7r212OnBM2pBR95HkAmAjjF08YkxQ==", + "dev": true + }, + "@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-zv9kNf3keYegP5oThGLaPk8E081DFDuwfqjtiTzm6PoxChdJ1raSuADf2YGCVIyrSynLrgc8JWv296s7Q7pQSQ==", + "dev": true + }, + "@types/hammerjs": { + "version": "2.0.41", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", + "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/jasmine": { + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.3.tgz", + "integrity": "sha512-SWyMrjgdAUHNQmutvDcKablrJhkDLy4wunTme8oYLjKp41GnHGxMRXr2MQMvy/qy8H3LdzwQk9gH4hZ6T++H8g==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.10.tgz", + "integrity": "sha512-J7mDz7ovjwjc+Y9rR9rY53hFWKATcIkrr9DwQWmOas4/pnIPJTXawnzjwpHm3RSxz/e3ZVUvQ7cRbd5UQLo10g==", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/js-yaml": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "@types/jszip": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@types/jszip/-/jszip-3.4.1.tgz", + "integrity": "sha512-TezXjmf3lj+zQ651r6hPqvSScqBLvyPI9FxdXBqpEwBijNGQ2NXpaFW/7joGzveYkKQUil7iiDHLo6LV71Pc0A==", + "dev": true, + "requires": { + "jszip": "*" + } + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "@types/msgpack-lite": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@types/msgpack-lite/-/msgpack-lite-0.1.8.tgz", + "integrity": "sha512-3qIhe8MH1kGcXnB5YuY6W0lLb9LEcWrhanDYfw0zKdXAv+CNKG0+6To1X8dqVyrxKb3FeAgJBJS5RdFwBQteVg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "12.20.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.43.tgz", + "integrity": "sha512-HCfJdaYqJX3BCzeihgZrD7b85Cu05OC/GVJ4kEYIflwUs4jbnUlLLWoq7hw1LBcdvUyehO+gr6P5JQ895/2ZfA==", + "dev": true + }, + "@types/pako": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.3.tgz", + "integrity": "sha512-EDxOsHAD5dqjbjEUM1xwa7rpKPFb8ECBE5irONTQU7/OsO3thI5YrNEWSPNMvYmvFM0l/OLQJ6Mgw7PEdXSjhg==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/vkbeautify": { + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@types/vkbeautify/-/vkbeautify-0.99.2.tgz", + "integrity": "sha512-zbBKJTu2GRURMTj0vFSYRTnOB7Fz7uDZEFKLEkF1tbALUWHSPE84/VwCeJtM1YFOavtbp6xylFkLt6OxT6IG9A==", + "dev": true + }, + "@types/ws": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", + "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "requires": {} + }, + "adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.0.tgz", + "integrity": "sha512-0PhAp58jZNw13UJv7NVdTGb0ZcghHUb3DrZ046JiiJY/BOaTTpbwdHq2VObPCBV8M2GPh7sgrJ3AQ8Ey468LJw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", + "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==", + "dev": true, + "requires": { + "browserslist": "^4.19.1", + "caniuse-lite": "^1.0.30001297", + "fraction.js": "^4.1.2", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "babel-loader": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", + "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "body-parser": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", + "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", + "dev": true, + "requires": { + "bytes": "3.1.1", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.6", + "raw-body": "2.4.2", + "type-is": "~1.6.18" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "dev": true + }, + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001309", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001309.tgz", + "integrity": "sha512-Pl8vfigmBXXq+/yUz1jUwULeq9xhMJznzdc/xwl4WclDAuebcTHVefpz8lE/bMI+UN7TOkSSe7B7RnZd6+dzjA==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "circular-dependency-plugin": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", + "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", + "dev": true, + "requires": {} + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, + "copy-webpack-plugin": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.1.tgz", + "integrity": "sha512-nr81NhCAIpAWXGCK5thrKmfCQ6GDY0L5RN0U+BnIn/7Us55+UCex5ANNsNKmIVtDRnk0Ecf+/kzp9SUVrrBMLg==", + "dev": true, + "requires": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^12.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "core-js": { + "version": "3.20.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz", + "integrity": "sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag==", + "dev": true + }, + "core-js-compat": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.0.tgz", + "integrity": "sha512-OSXseNPSK2OPJa6GdtkMz/XxeXx8/CJvfhQWTqd6neuUraujcL4jVsjkLQz1OWnax8xVQJnRPe0V2jqNWORA+A==", + "dev": true, + "requires": { + "browserslist": "^4.19.1", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "critters": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", + "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "css-select": "^4.2.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "postcss": "^8.3.7", + "pretty-bytes": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "crypto-js": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz", + "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==" + }, + "css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-loader": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.1.tgz", + "integrity": "sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "semver": "^7.3.5" + } + }, + "css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "dev": true, + "requires": {} + }, + "css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true + }, + "cssdb": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-5.1.0.tgz", + "integrity": "sha512-/vqjXhv1x9eGkE/zO6o8ZOI7dgdZbLVLUGyVRbPgk6YipXbW87YzUCcO+Jrmi5bwJlAH6oD+MNeZyRgXea1GZw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "date-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.3.tgz", + "integrity": "sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ==", + "dev": true + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "dev": true, + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "dependencies": { + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } + } + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.66", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.66.tgz", + "integrity": "sha512-f1RXFMsvwufWLwYUxTiP7HmjprKXrqEWHiQkjAYa9DJeVIlZk5v8gBGcaV+FhtXLly6C1OTVzQY+2UQrACiLlg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "engine.io": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.2.tgz", + "integrity": "sha512-v/7eGHxPvO2AWsksyx2PUsQvBafuvqs0jJJQ0FdmJG1b9qIvgSbqDRGwNhfk2XHaTTbTXiC4quRE8Q9nRjsrQQ==", + "dev": true, + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.0", + "ws": "~8.2.3" + } + }, + "engine.io-parser": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", + "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", + "dev": true, + "requires": { + "@socket.io/base64-arraybuffer": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz", + "integrity": "sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "es6-promise": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", + "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=" + }, + "esbuild": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.14.tgz", + "integrity": "sha512-aiK4ddv+uui0k52OqSHu4xxu+SzOim7Rlz4i25pMEiC8rlnGU0HJ9r+ZMfdWL5bzifg+nhnn7x4NSWTeehYblg==", + "dev": true, + "optional": true, + "requires": { + "esbuild-android-arm64": "0.14.14", + "esbuild-darwin-64": "0.14.14", + "esbuild-darwin-arm64": "0.14.14", + "esbuild-freebsd-64": "0.14.14", + "esbuild-freebsd-arm64": "0.14.14", + "esbuild-linux-32": "0.14.14", + "esbuild-linux-64": "0.14.14", + "esbuild-linux-arm": "0.14.14", + "esbuild-linux-arm64": "0.14.14", + "esbuild-linux-mips64le": "0.14.14", + "esbuild-linux-ppc64le": "0.14.14", + "esbuild-linux-s390x": "0.14.14", + "esbuild-netbsd-64": "0.14.14", + "esbuild-openbsd-64": "0.14.14", + "esbuild-sunos-64": "0.14.14", + "esbuild-windows-32": "0.14.14", + "esbuild-windows-64": "0.14.14", + "esbuild-windows-arm64": "0.14.14" + } + }, + "esbuild-android-arm64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.14.tgz", + "integrity": "sha512-be/Uw6DdpQiPfula1J4bdmA+wtZ6T3BRCZsDMFB5X+k0Gp8TIh9UvmAcqvKNnbRAafSaXG3jPCeXxDKqnc8hFQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.14.tgz", + "integrity": "sha512-BEexYmjWafcISK8cT6O98E3TfcLuZL8DKuubry6G54n2+bD4GkoRD6HYUOnCkfl2p7jodA+s4369IjSFSWjtHg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.14.tgz", + "integrity": "sha512-tnBKm41pDOB1GtZ8q/w26gZlLLRzVmP8fdsduYjvM+yFD7E2DLG4KbPAqFMWm4Md9B+DitBglP57FY7AznxbTg==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.14.tgz", + "integrity": "sha512-Q9Rx6sgArOHalQtNwAaIzJ6dnQ8A+I7f/RsQsdkS3JrdzmnlFo8JEVofTmwVQLoIop7OKUqIVOGP4PoQcwfVMA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.14.tgz", + "integrity": "sha512-TJvq0OpLM7BkTczlyPIphcvnwrQwQDG1HqxzoYePWn26SMUAlt6wrLnEvxdbXAvNvDLVzG83kA+JimjK7aRNBA==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.14.tgz", + "integrity": "sha512-h/CrK9Baimt5VRbu8gqibWV7e1P9l+mkanQgyOgv0Ng3jHT1NVFC9e6rb1zbDdaJVmuhWX5xVliUA5bDDCcJeg==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.14.tgz", + "integrity": "sha512-IC+wAiIg/egp5OhQp4W44D9PcBOH1b621iRn1OXmlLzij9a/6BGr9NMIL4CRwz4j2kp3WNZu5sT473tYdynOuQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.14.tgz", + "integrity": "sha512-gxpOaHOPwp7zSmcKYsHrtxabScMqaTzfSQioAMUaB047YiMuDBzqVcKBG8OuESrYkGrL9DDljXr/mQNg7pbdaQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.14.tgz", + "integrity": "sha512-6QVul3RI4M5/VxVIRF/I5F+7BaxzR3DfNGoqEVSCZqUbgzHExPn+LXr5ly1C7af2Kw4AHpo+wDqx8A4ziP9avw==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.14.tgz", + "integrity": "sha512-4Jl5/+xoINKbA4cesH3f4R+q0vltAztZ6Jm8YycS8lNhN1pgZJBDxWfI6HUMIAdkKlIpR1PIkA9aXQgZ8sxFAg==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.14.tgz", + "integrity": "sha512-BitW37GxeebKxqYNl4SVuSdnIJAzH830Lr6Mkq3pBHXtzQay0vK+IeOR/Ele1GtNVJ+/f8wYM53tcThkv5SC5w==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.14.tgz", + "integrity": "sha512-vLj6p76HOZG3wfuTr5MyO3qW5iu8YdhUNxuY+tx846rPo7GcKtYSPMusQjeVEfZlJpSYoR+yrNBBxq+qVF9zrw==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.14.tgz", + "integrity": "sha512-fn8looXPQhpVqUyCBWUuPjesH+yGIyfbIQrLKG05rr1Kgm3rZD/gaYrd3Wpmf5syVZx70pKZPvdHp8OTA+y7cQ==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.14.tgz", + "integrity": "sha512-HdAnJ399pPff3SKbd8g+P4o5znseni5u5n5rJ6Z7ouqOdgbOwHe2ofZbMow17WMdNtz1IyOZk2Wo9Ve6/lZ4Rg==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.14.tgz", + "integrity": "sha512-bmDHa99ulsGnYlh/xjBEfxoGuC8CEG5OWvlgD+pF7bKKiVTbtxqVCvOGEZeoDXB+ja6AvHIbPxrEE32J+m5nqQ==", + "dev": true, + "optional": true + }, + "esbuild-wasm": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.14.tgz", + "integrity": "sha512-qTjK4MWnYtQHCMGg2qDUqeFYXfVvYq5qJkQTIsOV4VZCknoYePVaDTG9ygEB9Ct0kc0DWs7IrS6Ja+GjY62Kzw==", + "dev": true + }, + "esbuild-windows-32": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.14.tgz", + "integrity": "sha512-6tVooQcxJCNenPp5GHZBs/RLu31q4B+BuF4MEoRxswT+Eq2JGF0ZWDRQwNKB8QVIo3t6Svc5wNGez+CwKNQjBg==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.14.tgz", + "integrity": "sha512-kl3BdPXh0/RD/dad41dtzj2itMUR4C6nQbXQCyYHHo4zoUoeIXhpCrSl7BAW1nv5EFL8stT1V+TQVXGZca5A2A==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.14", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.14.tgz", + "integrity": "sha512-dCm1wTOm6HIisLanmybvRKvaXZZo4yEVrHh1dY0v582GThXJOzuXGja1HIQgV09RpSHYRL3m4KoUBL00l6SWEg==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-lite": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/event-lite/-/event-lite-0.1.2.tgz", + "integrity": "sha512-HnSYx1BsJ87/p6swwzv+2v6B4X+uxUteoDfRxsAb1S1BePzQqOLevVmkdA15GHJVd9A9Ok6wygUR18Hu0YeV9g==" + }, + "eventemitter-asyncresource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "express": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", + "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.6", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "follow-redirects": { + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", + "dev": true + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fraction.js": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.3.tgz", + "integrity": "sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz", + "integrity": "sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", + "dev": true, + "requires": { + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "dev": true + }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "hdr-histogram-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", + "dev": true, + "requires": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + }, + "dependencies": { + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + } + } + }, + "hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", + "dev": true + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", + "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz", + "integrity": "sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "ignore-walk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz", + "integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, + "immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + }, + "inquirer": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz", + "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.2.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "int64-buffer": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-0.1.10.tgz", + "integrity": "sha1-J3siiofZWtd30HwTgyAiQGpHNCM=" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isbinaryfile": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", + "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jasmine-core": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.0.0.tgz", + "integrity": "sha512-tq24OCqHElgU9KDpb/8O21r1IfotgjIzalfW9eCmRR40LZpvwXT68iariIyayMwi0m98RDt16aljdbwK0sBMmQ==", + "dev": true + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jszip": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", + "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", + "requires": { + "core-js": "~2.3.0", + "es6-promise": "~3.0.2", + "lie": "~3.1.0", + "pako": "~1.0.2", + "readable-stream": "~2.0.6" + }, + "dependencies": { + "core-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", + "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + } + } + }, + "karma": { + "version": "6.3.15", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.15.tgz", + "integrity": "sha512-4O5X6zVFdmwo/fgjRN84fPG3IvaiOxOjIeZBwBrQYz4nIyGqlF8Wm7C1Hr7idQ9NHgnvJM+LSjZwS1C+qALMGw==", + "dev": true, + "requires": { + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "colors": "1.4.0", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.2.0", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, + "karma-chrome-launcher": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "dev": true, + "requires": { + "which": "^1.2.1" + } + }, + "karma-coverage": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.1.1.tgz", + "integrity": "sha512-oxeOSBVK/jdZsiX03LhHQkO4eISSQb5GbHi6Nsw3Mw7G4u6yUgacBAftnO7q+emPBLMsrNbz1pGIrj+Jb3z17A==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.0.5", + "minimatch": "^3.0.4" + }, + "dependencies": { + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "karma-jasmine": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", + "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", + "dev": true, + "requires": { + "jasmine-core": "^3.6.0" + }, + "dependencies": { + "jasmine-core": { + "version": "3.99.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.0.tgz", + "integrity": "sha512-+ZDaJlEfRopINQqgE+hvzRyDIQDeKfqqTvF8RzXsvU1yE3pBDRud2+Qfh9WvGgRpuzqxyQJVI6Amy5XQ11r/3w==", + "dev": true + } + } + }, + "karma-jasmine-html-reporter": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", + "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", + "dev": true, + "requires": {} + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, + "less": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz", + "integrity": "sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^2.5.2", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^2.3.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.2.0.tgz", + "integrity": "sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==", + "dev": true, + "requires": { + "klona": "^2.0.4" + } + }, + "license-webpack-plugin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.1.tgz", + "integrity": "sha512-SQum9mg3BgnY5BK+2KYl4W7pk9b26Q8tW2lTsO6tidD0/Ds9ksdXvp3ip2s9LqDjj5gtBMyWRfOPZptWj4PfCg==", + "dev": true, + "requires": { + "webpack-sources": "^3.0.0" + } + }, + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "requires": { + "immediate": "~3.0.5" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true + }, + "loader-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log4js": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.1.tgz", + "integrity": "sha512-iUiYnXqAmNKiIZ1XSAitQ4TmNs8CdZYTAWINARF3LjnsLN8tY5m0vRwd6uuWj/yNY0YHxeZodnbmxKFUOM2rMg==", + "dev": true, + "requires": { + "date-format": "^4.0.3", + "debug": "^4.3.3", + "flatted": "^3.2.4", + "rfdc": "^1.3.0", + "streamroller": "^3.0.2" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "lzbase62": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lzbase62/-/lzbase62-2.0.0.tgz", + "integrity": "sha512-hq7ZI8T42YVgSxCFHzg/Gt3GUKGZdQXKejvubdLjzxjiF5Tn9xKoWvZLZSY1u0+Orct+bxQMmb8XIcbXzR+2tg==" + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "requires": { + "mime-db": "1.51.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz", + "integrity": "sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "msgpack-lite": { + "version": "0.1.26", + "resolved": "https://registry.npmjs.org/msgpack-lite/-/msgpack-lite-0.1.26.tgz", + "integrity": "sha1-3TxQsm8FnyXn7e42REGDWOKprYk=", + "requires": { + "event-lite": "^0.1.1", + "ieee754": "^1.1.8", + "int64-buffer": "^0.1.9", + "isarray": "^1.0.0" + } + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nanoid": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "dev": true + }, + "needle": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", + "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "optional": true, + "requires": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, + "node-forge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", + "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "dev": true + }, + "node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "node-gyp-build": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "dev": true, + "optional": true + }, + "node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "dev": true + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-3.0.0.tgz", + "integrity": "sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==", + "dev": true, + "requires": { + "glob": "^7.1.6", + "ignore-walk": "^4.0.1", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", + "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", + "dev": true, + "requires": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "npm-registry-fetch": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.1.tgz", + "integrity": "sha512-ricy4ezH3Uv0d4am6RSwHjCYTWJI74NJjurIigWMAG7Vs3PFyd0TUlkrez5L0AgaPzDLRsEzqb5cOZ/Ue01bmA==", + "dev": true, + "requires": { + "make-fetch-happen": "^10.0.0", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "dependencies": { + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "make-fetch-happen": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.0.tgz", + "integrity": "sha512-CREcDkbKZZ64g5MN1FT+u58mDHX9FQFFtFyio5HonX44BdQdytqPZBXUz+6ibi2w/6ncji59f2phyXGSMGpgzA==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + } + } + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "npmlog": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.0.tgz", + "integrity": "sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q==", + "dev": true, + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.0", + "set-blocking": "^2.0.0" + } + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "dependencies": { + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pacote": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-12.0.3.tgz", + "integrity": "sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow==", + "dev": true, + "requires": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^2.0.0", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^3.0.0", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^12.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + } + }, + "pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "parse5-html-rewriting-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", + "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", + "dev": true, + "requires": { + "parse5": "^6.0.1", + "parse5-sax-parser": "^6.0.1" + } + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + } + }, + "parse5-sax-parser": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", + "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "piscina": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", + "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", + "dev": true, + "requires": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0", + "nice-napi": "^1.0.2" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "postcss": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", + "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "dev": true, + "requires": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" + } + }, + "postcss-attribute-case-insensitive": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.0.tgz", + "integrity": "sha512-b4g9eagFGq9T5SWX4+USfVyjIb3liPnjhHHRMP7FMB2kFVpYyfEscV0wP3eaXhKlcHKUut8lt5BGoeylWA/dBQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.2" + } + }, + "postcss-color-functional-notation": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.2.tgz", + "integrity": "sha512-DXVtwUhIk4f49KK5EGuEdgx4Gnyj6+t2jBSEmxvpIK9QI40tWrpS2Pua8Q7iIZWBrki2QOaeUdEaLPPa91K0RQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-hex-alpha": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.3.tgz", + "integrity": "sha512-fESawWJCrBV035DcbKRPAVmy21LpoyiXdPTuHUfWJ14ZRjY7Y7PA6P4g8z6LQGYhU1WAxkTxjIjurXzoe68Glw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-rebeccapurple": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.0.2.tgz", + "integrity": "sha512-SFc3MaocHaQ6k3oZaFwH8io6MdypkUtEy/eXzXEB1vEQlO3S3oDc/FSZA8AsS04Z25RirQhlDlHLh3dn7XewWw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-media": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz", + "integrity": "sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g==", + "dev": true, + "requires": {} + }, + "postcss-custom-properties": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.4.tgz", + "integrity": "sha512-i6AytuTCoDLJkWN/MtAIGriJz3j7UX6bV7Z5t+KgFz+dwZS15/mlTJY1S0kRizlk6ba0V8u8hN50Fz5Nm7tdZw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.0.tgz", + "integrity": "sha512-/1iyBhz/W8jUepjGyu7V1OPcGbc636snN1yXEQCinb6Bwt7KxsiU7/bLQlp8GwAXzCh7cobBU5odNn/2zQWR8Q==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-dir-pseudo-class": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz", + "integrity": "sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-double-position-gradients": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.0.5.tgz", + "integrity": "sha512-XiZzvdxLOWZwtt/1GgHJYGoD9scog/DD/yI5dcvPrXNdNDEv7T53/6tL7ikl+EM3jcerII5/XIQzd1UHOdTi2w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-env-function": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.5.tgz", + "integrity": "sha512-gPUJc71ji9XKyl0WSzAalBeEA/89kU+XpffpPxSaaaZ1c48OL36r1Ep5R6+9XAPkIiDlSvVAwP4io12q/vTcvA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "dev": true, + "requires": {} + }, + "postcss-gap-properties": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz", + "integrity": "sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ==", + "dev": true, + "requires": {} + }, + "postcss-image-set-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz", + "integrity": "sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-import": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz", + "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "dev": true, + "requires": {} + }, + "postcss-lab-function": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.0.4.tgz", + "integrity": "sha512-TAEW8X/ahMYV33mvLFQARtBPAy1VVJsiR9VVx3Pcbu+zlqQj0EIyJ/Ie1/EwxwIt530CWtEDzzTXBDzfdb+qIQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + } + }, + "postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "dev": true, + "requires": {} + }, + "postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "dev": true, + "requires": {} + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-nesting": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.2.tgz", + "integrity": "sha512-dJGmgmsvpzKoVMtDMQQG/T6FSqs6kDtUDirIfl4KnjMCiY9/ETX8jdKyCd20swSRAbUYkaBKV20pxkzxoOXLqQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.8" + } + }, + "postcss-overflow-shorthand": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz", + "integrity": "sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==", + "dev": true, + "requires": {} + }, + "postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "dev": true, + "requires": {} + }, + "postcss-place": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.4.tgz", + "integrity": "sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-preset-env": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.2.3.tgz", + "integrity": "sha512-Ok0DhLfwrcNGrBn8sNdy1uZqWRk/9FId0GiQ39W4ILop5GHtjJs8bu1MY9isPwHInpVEPWjb4CEcEaSbBLpfwA==", + "dev": true, + "requires": { + "autoprefixer": "^10.4.2", + "browserslist": "^4.19.1", + "caniuse-lite": "^1.0.30001299", + "css-blank-pseudo": "^3.0.2", + "css-has-pseudo": "^3.0.3", + "css-prefers-color-scheme": "^6.0.2", + "cssdb": "^5.0.0", + "postcss-attribute-case-insensitive": "^5.0.0", + "postcss-color-functional-notation": "^4.2.1", + "postcss-color-hex-alpha": "^8.0.2", + "postcss-color-rebeccapurple": "^7.0.2", + "postcss-custom-media": "^8.0.0", + "postcss-custom-properties": "^12.1.2", + "postcss-custom-selectors": "^6.0.0", + "postcss-dir-pseudo-class": "^6.0.3", + "postcss-double-position-gradients": "^3.0.4", + "postcss-env-function": "^4.0.4", + "postcss-focus-visible": "^6.0.3", + "postcss-focus-within": "^5.0.3", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.2", + "postcss-image-set-function": "^4.0.4", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.0.3", + "postcss-logical": "^5.0.3", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.1.2", + "postcss-overflow-shorthand": "^3.0.2", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.3", + "postcss-pseudo-class-any-link": "^7.0.2", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^5.0.0" + } + }, + "postcss-pseudo-class-any-link": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.1.tgz", + "integrity": "sha512-JRoLFvPEX/1YTPxRxp1JO4WxBVXJYrSY7NHeak5LImwJ+VobFMwYDQHvfTXEpcn+7fYIeGkC29zYFhFWIZD8fg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "dev": true, + "requires": {} + }, + "postcss-selector-not": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz", + "integrity": "sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true, + "optional": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "dev": true, + "requires": { + "bytes": "3.1.1", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + } + }, + "read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.3.tgz", + "integrity": "sha512-6162iC/N7L7K8q3UvdOMWix1ju+esADGrDaPrTu5XJmCv69YNdYoUaop/iatN8GHK+YHOdszPP+qygA0yi04zQ==", + "requires": { + "tslib": "^2.1.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.0.tgz", + "integrity": "sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.4.0.tgz", + "integrity": "sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", + "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "dev": true, + "requires": { + "node-forge": "^1.2.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "socket.io": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", + "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.1.0", + "socket.io-adapter": "~2.3.3", + "socket.io-parser": "~4.0.4" + } + }, + "socket.io-adapter": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", + "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==", + "dev": true + }, + "socket.io-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "dev": true, + "requires": { + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" + } + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz", + "integrity": "sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "streamroller": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.2.tgz", + "integrity": "sha512-ur6y5S5dopOaRXBuRIZ1u6GC5bcEXHRZKgfBjfCglMhmIf+roVCECjvkEYzNQOXIN2/JPnkMPW/8B3CZoKaEPA==", + "dev": true, + "requires": { + "date-format": "^4.0.3", + "debug": "^4.1.1", + "fs-extra": "^10.0.0" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "stylus": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.56.0.tgz", + "integrity": "sha512-Ev3fOb4bUElwWu4F9P9WjnnaSpc8XB9OFHSFZSKMFL1CE1oM+oFXWEgAqPmmZIyhBihuqIQlFsVTypiiS9RxeA==", + "dev": true, + "requires": { + "css": "^3.0.0", + "debug": "^4.3.2", + "glob": "^7.1.6", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "source-map": "^0.7.3" + } + }, + "stylus-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.2.0.tgz", + "integrity": "sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg==", + "dev": true, + "requires": { + "fast-glob": "^3.2.7", + "klona": "^2.0.4", + "normalize-path": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "terser": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", + "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + } + }, + "terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "requires": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-assert": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.8.tgz", + "integrity": "sha512-5NkbXZUlmCE73Fs7gvkp1XXJWHYetPkg60QnQ2NXQmBYNFxbBr2zA8GCtaH4K2s2WhOmSlgiSTmrjrcm5tnM5g==", + "dev": true + }, + "typescript": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vkbeautify": { + "version": "0.99.3", + "resolved": "https://registry.npmjs.org/vkbeautify/-/vkbeautify-0.99.3.tgz", + "integrity": "sha512-2ozZEFfmVvQcHWoHLNuiKlUfDKlhh4KGsy54U0UrlLMR1SO+XKAIDqBxtBwHgNrekurlJwE8A9K6L49T78ZQ9Q==" + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webpack": { + "version": "5.67.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", + "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "binary-extensions": "^1.0.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "requires": {} }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } - }, + } + } + }, + "webpack-dev-middleware": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz", + "integrity": "sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.2.2", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + } + } + }, + "webpack-dev-server": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz", + "integrity": "sha512-mlxq2AsIw2ag016nixkzUkdyOE8ST2GTy34uKSABp1c4nhjZvH90D5ZRR+UOLSsG4Z3TFahAi72a3ymRtfRm+Q==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.2", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.0", + "ws": "^8.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" } }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "ansi-regex": "^6.0.1" } } } }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true - } - } - }, "webpack-merge": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", - "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -13714,48 +19693,18 @@ } }, "webpack-sources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", - "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", - "dev": true, - "requires": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true }, "webpack-subresource-integrity": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.2.tgz", - "integrity": "sha512-GBWYBoyalbo5YClwWop9qe6Zclp8CIXYGIz12OPclJhIrSplDxs1Ls1JDMH8xBPPrg1T6ISaTW9Y6zOrwEiAzw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", "dev": true, "requires": { - "webpack-sources": "^1.3.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } + "typed-assert": "^1.0.8" } }, "websocket-driver": { @@ -13775,12 +19724,6 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -13790,52 +19733,13 @@ "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, "requires": { - "string-width": "^1.0.2 || 2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "string-width": "^1.0.2 || 2 || 3 || 4" } }, "wildcard": { @@ -13844,94 +19748,40 @@ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "worker-plugin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-5.0.0.tgz", - "integrity": "sha512-AXMUstURCxDD6yGam2r4E34aJg6kW85IiaeX72hi+I1cxyaMUtrvVY6sbfpGKAj5e7f68Acl62BjQF5aOOx2IQ==", + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "loader-utils": "^1.1.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "minimist": "^1.2.0" + "color-convert": "^2.0.1" } }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "color-name": "~1.1.4" } - } - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, @@ -13942,40 +19792,16 @@ "dev": true }, "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", "dev": true, - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - } - }, - "xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "requires": {} }, "y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yallist": { @@ -13991,131 +19817,33 @@ "dev": true }, "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", + "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } - } - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", "dev": true }, "zone.js": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", - "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==" + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.4.tgz", + "integrity": "sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw==", + "requires": { + "tslib": "^2.0.0" + } } } } diff --git a/package.json b/package.json index 92ca3c89f..2bacb5b87 100644 --- a/package.json +++ b/package.json @@ -6,20 +6,19 @@ "ng": "ng", "start": "ng serve", "build": "ng build", - "test": "ng test", - "lint": "ng lint", - "e2e": "ng e2e" + "watch": "ng build --watch --configuration development", + "test": "ng test" }, "private": true, "dependencies": { - "@angular/animations": "^11.2.13", - "@angular/common": "^11.2.13", - "@angular/compiler": "^11.2.13", - "@angular/core": "^11.2.13", - "@angular/forms": "^11.2.13", - "@angular/platform-browser": "^11.2.13", - "@angular/platform-browser-dynamic": "^11.2.13", - "@angular/router": "^11.2.13", + "@angular/animations": "^13.2.1", + "@angular/common": "^13.2.1", + "@angular/compiler": "^13.2.1", + "@angular/core": "^13.2.1", + "@angular/forms": "^13.2.1", + "@angular/platform-browser": "^13.2.1", + "@angular/platform-browser-dynamic": "^13.2.1", + "@angular/router": "^13.2.1", "crypto-js": "^3.3.0", "file-saver": "^2.0.5", "hammerjs": "^2.0.8", @@ -28,20 +27,19 @@ "lzbase62": "^2.0.0", "msgpack-lite": "^0.1.26", "pako": "^2.0.0", - "rxjs": "^6.6.6", - "tslib": "^2.0.0", + "rxjs": "~7.5.0", + "tslib": "^2.3.0", "vkbeautify": "^0.99.3", - "zone.js": "~0.10.3" + "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "~0.1102.12", - "@angular/cli": "^11.2.12", - "@angular/compiler-cli": "^11.2.13", - "@angular/language-service": "^11.2.13", + "@angular-devkit/build-angular": "~13.2.2", + "@angular/cli": "^13.2.2", + "@angular/compiler-cli": "^13.2.1", "@types/crypto-js": "^4.0.1", "@types/file-saver": "^2.0.1", "@types/hammerjs": "^2.0.39", - "@types/jasmine": "^3.5.0", + "@types/jasmine": "~3.10.0", "@types/jasminewd2": "^2.0.8", "@types/js-yaml": "^4.0.0", "@types/jszip": "^3.1.7", @@ -49,17 +47,12 @@ "@types/node": "^12.11.1", "@types/pako": "^1.0.1", "@types/vkbeautify": "^0.99.2", - "codelyzer": "^6.0.0", - "jasmine-core": "~3.6.0", - "jasmine-spec-reporter": "~5.0.0", - "karma": "~6.1.1", + "jasmine-core": "~4.0.0", + "karma": "~6.3.0", "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.0.3", + "karma-coverage": "~2.1.0", "karma-jasmine": "~4.0.0", - "karma-jasmine-html-reporter": "^1.5.0", - "protractor": "~7.0.0", - "ts-node": "~8.3.0", - "tslint": "~6.1.0", - "typescript": "~4.0.5" + "karma-jasmine-html-reporter": "~1.7.0", + "typescript": "~4.5.5" } } diff --git a/src/polyfills.ts b/src/polyfills.ts index 9b8f300ef..785ab74a8 100644 --- a/src/polyfills.ts +++ b/src/polyfills.ts @@ -55,7 +55,7 @@ /*************************************************************************************************** * Zone JS is required by default for Angular itself. */ -import 'zone.js/dist/zone'; // Included with Angular CLI. +import 'zone.js'; // Included with Angular CLI. /*************************************************************************************************** diff --git a/src/test.ts b/src/test.ts index 50193eb0f..204235640 100644 --- a/src/test.ts +++ b/src/test.ts @@ -1,6 +1,6 @@ // This file is required by karma.conf.js and loads recursively all the .spec and framework files -import 'zone.js/dist/zone-testing'; +import 'zone.js/testing'; import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule, From 2ac472702890bc4508da8ab4d6ec7a65869f286f Mon Sep 17 00:00:00 2001 From: TK11235 Date: Wed, 9 Feb 2022 02:26:14 +0900 Subject: [PATCH 052/161] =?UTF-8?q?build:=20Jasmine=20+=20Karma=E3=81=AE?= =?UTF-8?q?=E8=A8=AD=E5=AE=9A=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `ng new`で生成される新規プロジェクトの形式に合わせる --- karma.conf.js | 11 ++++++++++- src/test.ts | 5 +++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/karma.conf.js b/karma.conf.js index 563cbd634..84bf716ca 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -13,15 +13,24 @@ module.exports = function (config) { require('@angular-devkit/build-angular/plugins/karma') ], client: { + jasmine: { + // you can add configuration options for Jasmine here + // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html + // for example, you can disable the random execution with `random: false` + // or set a specific seed with `seed: 4321` + }, clearContext: false // leave Jasmine Spec Runner output visible in browser }, + jasmineHtmlReporter: { + suppressAll: true // removes the duplicated traces + }, coverageReporter: { dir: require('path').join(__dirname, './coverage/udonarium'), subdir: '.', reporters: [ { type: 'html' }, { type: 'text-summary' } - ], + ] }, reporters: ['progress', 'kjhtml'], port: 9876, diff --git a/src/test.ts b/src/test.ts index 204235640..00025daf1 100644 --- a/src/test.ts +++ b/src/test.ts @@ -9,16 +9,17 @@ import { declare const require: { context(path: string, deep?: boolean, filter?: RegExp): { - keys(): string[]; (id: string): T; + keys(): string[]; }; }; // First, initialize the Angular testing environment. getTestBed().initTestEnvironment( BrowserDynamicTestingModule, - platformBrowserDynamicTesting() + platformBrowserDynamicTesting(), ); + // Then we find all the tests. const context = require.context('./', true, /\.spec\.ts$/); // And load the modules. From c708c75af8ba919fc72aba4cd75532f678728cde Mon Sep 17 00:00:00 2001 From: TK11235 Date: Wed, 9 Feb 2022 02:26:47 +0900 Subject: [PATCH 053/161] =?UTF-8?q?build:=20tslint=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tslint.json | 152 ---------------------------------------------------- 1 file changed, 152 deletions(-) delete mode 100644 tslint.json diff --git a/tslint.json b/tslint.json deleted file mode 100644 index 277c8eba0..000000000 --- a/tslint.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "extends": "tslint:recommended", - "rulesDirectory": [ - "codelyzer" - ], - "rules": { - "align": { - "options": [ - "parameters", - "statements" - ] - }, - "array-type": false, - "arrow-return-shorthand": true, - "curly": true, - "deprecation": { - "severity": "warning" - }, - "eofline": true, - "import-blacklist": [ - true, - "rxjs/Rx" - ], - "import-spacing": true, - "indent": { - "options": [ - "spaces" - ] - }, - "max-classes-per-file": false, - "max-line-length": [ - true, - 140 - ], - "member-ordering": [ - true, - { - "order": [ - "static-field", - "instance-field", - "static-method", - "instance-method" - ] - } - ], - "no-console": [ - true, - "debug", - "info", - "time", - "timeEnd", - "trace" - ], - "no-empty": false, - "no-inferrable-types": [ - true, - "ignore-params" - ], - "no-non-null-assertion": true, - "no-redundant-jsdoc": true, - "no-switch-case-fall-through": true, - "no-var-requires": false, - "object-literal-key-quotes": [ - true, - "as-needed" - ], - "quotemark": [ - true, - "single" - ], - "semicolon": { - "options": [ - "always" - ] - }, - "space-before-function-paren": { - "options": { - "anonymous": "never", - "asyncArrow": "always", - "constructor": "never", - "method": "never", - "named": "never" - } - }, - "typedef": [ - true, - "call-signature" - ], - "typedef-whitespace": { - "options": [ - { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - }, - { - "call-signature": "onespace", - "index-signature": "onespace", - "parameter": "onespace", - "property-declaration": "onespace", - "variable-declaration": "onespace" - } - ] - }, - "variable-name": { - "options": [ - "ban-keywords", - "check-format", - "allow-pascal-case" - ] - }, - "whitespace": { - "options": [ - "check-branch", - "check-decl", - "check-operator", - "check-separator", - "check-type", - "check-typecast" - ] - }, - "component-class-suffix": true, - "contextual-lifecycle": true, - "directive-class-suffix": true, - "no-conflicting-lifecycle": true, - "no-host-metadata-property": true, - "no-input-rename": true, - "no-inputs-metadata-property": true, - "no-output-native": true, - "no-output-on-prefix": true, - "no-output-rename": true, - "no-outputs-metadata-property": true, - "template-banana-in-box": true, - "template-no-negated-async": true, - "use-lifecycle-interface": true, - "use-pipe-transform-interface": true, - "directive-selector": [ - true, - "attribute", - "app", - "camelCase" - ], - "component-selector": [ - true, - "element", - "app", - "kebab-case" - ] - } -} From 6cddf755b127e7603df24d62a2d5ba902fd7d1bc Mon Sep 17 00:00:00 2001 From: TK11235 Date: Wed, 9 Feb 2022 02:31:44 +0900 Subject: [PATCH 054/161] =?UTF-8?q?build:=20=E6=A7=8B=E6=88=90=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `ng new`で生成される新規プロジェクトの形式に合わせる --- e2e/protractor.conf.js | 37 --------------------------------- e2e/src/app.e2e-spec.ts | 23 -------------------- e2e/src/app.po.ts | 11 ---------- e2e/tsconfig.json | 13 ------------ src/environments/environment.ts | 4 ++-- src/polyfills.ts | 14 ++----------- 6 files changed, 4 insertions(+), 98 deletions(-) delete mode 100644 e2e/protractor.conf.js delete mode 100644 e2e/src/app.e2e-spec.ts delete mode 100644 e2e/src/app.po.ts delete mode 100644 e2e/tsconfig.json diff --git a/e2e/protractor.conf.js b/e2e/protractor.conf.js deleted file mode 100644 index 361e7f0cd..000000000 --- a/e2e/protractor.conf.js +++ /dev/null @@ -1,37 +0,0 @@ -// @ts-check -// Protractor configuration file, see link for more information -// https://github.com/angular/protractor/blob/master/lib/config.ts - -const { SpecReporter, StacktraceOption } = require('jasmine-spec-reporter'); - -/** - * @type { import("protractor").Config } - */ -exports.config = { - allScriptsTimeout: 11000, - specs: [ - './src/**/*.e2e-spec.ts' - ], - capabilities: { - browserName: 'chrome' - }, - directConnect: true, - SELENIUM_PROMISE_MANAGER: false, - baseUrl: 'http://localhost:4200/', - framework: 'jasmine', - jasmineNodeOpts: { - showColors: true, - defaultTimeoutInterval: 30000, - print: function() {} - }, - onPrepare() { - require('ts-node').register({ - project: require('path').join(__dirname, './tsconfig.json') - }); - jasmine.getEnv().addReporter(new SpecReporter({ - spec: { - displayStacktrace: StacktraceOption.PRETTY - } - })); - } -}; \ No newline at end of file diff --git a/e2e/src/app.e2e-spec.ts b/e2e/src/app.e2e-spec.ts deleted file mode 100644 index f7134aec7..000000000 --- a/e2e/src/app.e2e-spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { AppPage } from './app.po'; -import { browser, logging } from 'protractor'; - -describe('workspace-project App', () => { - let page: AppPage; - - beforeEach(() => { - page = new AppPage(); - }); - - it('should display welcome message', async () => { - await page.navigateTo(); - expect(await page.getTitleText()).toEqual('udonarium app is running!'); - }); - - afterEach(async () => { - // Assert that there are no errors emitted from the browser - const logs = await browser.manage().logs().get(logging.Type.BROWSER); - expect(logs).not.toContain(jasmine.objectContaining({ - level: logging.Level.SEVERE, - } as logging.Entry)); - }); -}); diff --git a/e2e/src/app.po.ts b/e2e/src/app.po.ts deleted file mode 100644 index c9c85ab9a..000000000 --- a/e2e/src/app.po.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { browser, by, element } from 'protractor'; - -export class AppPage { - async navigateTo(): Promise { - return browser.get(browser.baseUrl); - } - - async getTitleText(): Promise { - return element(by.css('app-root .content span')).getText(); - } -} diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json deleted file mode 100644 index 0782539c0..000000000 --- a/e2e/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "outDir": "../out-tsc/e2e", - "module": "commonjs", - "target": "es2018", - "types": [ - "jasmine", - "node" - ] - } -} diff --git a/src/environments/environment.ts b/src/environments/environment.ts index 7b4f817ad..f56ff4702 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -1,5 +1,5 @@ // This file can be replaced during build by using the `fileReplacements` array. -// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. +// `ng build` replaces `environment.ts` with `environment.prod.ts`. // The list of file replacements can be found in `angular.json`. export const environment = { @@ -13,4 +13,4 @@ export const environment = { * This import should be commented out in production mode because it will have a negative impact * on performance if an error is thrown. */ -// import 'zone.js/dist/zone-error'; // Included with Angular CLI. +// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/src/polyfills.ts b/src/polyfills.ts index 785ab74a8..429bb9ef2 100644 --- a/src/polyfills.ts +++ b/src/polyfills.ts @@ -8,8 +8,8 @@ * file. * * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), - * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * automatically update themselves. This includes recent versions of Safari, Chrome (including + * Opera), Edge on the desktop, and iOS and Chrome on mobile. * * Learn more in https://angular.io/guide/browser-support */ @@ -18,16 +18,6 @@ * BROWSER POLYFILLS */ -/** IE11 requires the following for NgClass support on SVG elements */ -// import 'classlist.js'; // Run `npm install --save classlist.js`. - -/** - * Web Animations `@angular/platform-browser/animations` - * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. - * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). - */ -// import 'web-animations-js'; // Run `npm install --save web-animations-js`. - /** * By default, zone.js will patch all possible macroTask and DomEvents * user can disable parts of macroTask/DomEvents patch by setting following flags From 348b0144ac8fde3802909a44cf242af0068baa33 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Wed, 9 Feb 2022 02:33:28 +0900 Subject: [PATCH 055/161] =?UTF-8?q?perf:=20IE11=E3=81=AE=E3=82=B5=E3=83=9D?= =?UTF-8?q?=E3=83=BC=E3=83=88=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `ng new`で生成される新規プロジェクトの形式に合わせる --- .browserslistrc | 1 - tsconfig.json | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.browserslistrc b/.browserslistrc index 427441dc9..4f9ac2698 100644 --- a/.browserslistrc +++ b/.browserslistrc @@ -14,4 +14,3 @@ last 2 Edge major versions last 2 Safari major versions last 2 iOS major versions Firefox ESR -not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. diff --git a/tsconfig.json b/tsconfig.json index ac3784d64..5c2bd36fb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,10 +10,10 @@ "experimentalDecorators": true, "moduleResolution": "node", "importHelpers": true, - "target": "es5", + "target": "es2017", "module": "es2020", "lib": [ - "es2018", + "es2020", "dom" ], "paths": { From e7be610ff2b04d2eb7e96baa5aded4778e2badb7 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Wed, 9 Feb 2022 02:34:19 +0900 Subject: [PATCH 056/161] =?UTF-8?q?build:=20.gitignore=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `ng new`で生成される新規プロジェクトの形式に合わせる --- .gitignore | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 86d943a9b..0711527ef 100644 --- a/.gitignore +++ b/.gitignore @@ -1,21 +1,18 @@ # See http://help.github.com/ignore-files/ for more about ignoring files. -# compiled output +# Compiled output /dist /tmp /out-tsc -# Only exists if Bazel was run /bazel-out -# dependencies +# Node /node_modules - -# profiling files -chrome-profiler-events*.json -speed-measure-plugin*.json +npm-debug.log +yarn-error.log # IDEs and editors -/.idea +.idea/ .project .classpath .c9/ @@ -23,7 +20,7 @@ speed-measure-plugin*.json .settings/ *.sublime-workspace -# IDE - VSCode +# Visual Studio Code .vscode/* !.vscode/settings.json !.vscode/tasks.json @@ -31,16 +28,15 @@ speed-measure-plugin*.json !.vscode/extensions.json .history/* -# misc -/.sass-cache +# Miscellaneous +/.angular/cache +.sass-cache/ /connect.lock /coverage /libpeerconnection.log -npm-debug.log -yarn-error.log testem.log /typings -# System Files +# System files .DS_Store Thumbs.db From f35396a28e28497f269a070f05ddfe707dcec2ca Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 11 Feb 2022 21:40:10 +0900 Subject: [PATCH 057/161] =?UTF-8?q?fix:=20=E8=A4=87=E6=95=B0=E5=9B=9E?= =?UTF-8?q?=E3=83=80=E3=82=A4=E3=82=B9=E3=83=AD=E3=83=BC=E3=83=AB=E8=A8=98?= =?UTF-8?q?=E6=B3=95=E3=81=8C=E6=94=B9=E8=A1=8C=E3=81=95=E3=82=8C=E3=81=9F?= =?UTF-8?q?=E3=83=86=E3=82=AD=E3=82=B9=E3=83=88=E3=81=A7=E3=82=82=E5=AE=9F?= =?UTF-8?q?=E8=A1=8C=E3=81=95=E3=82=8C=E3=82=8B=E5=95=8F=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/dice-bot.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/class/dice-bot.ts b/src/app/class/dice-bot.ts index 6ee391306..a31813069 100644 --- a/src/app/class/dice-bot.ts +++ b/src/app/class/dice-bot.ts @@ -335,7 +335,7 @@ export class DiceBot extends GameObject { let gameType: string = chatMessage.tag; try { - let regArray = /^((\d+)?\s+)?([^\s]*)?/ig.exec(text); + let regArray = /^((\d+)?[^\S\n]+)?([\S]*)?/ig.exec(text); let repeat: number = (regArray[2] != null) ? Number(regArray[2]) : 1; let rollText: string = (regArray[3] != null) ? regArray[3] : text; From 7cc05ef313b68d02858abd112e65ef66e149d82f Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 11 Feb 2022 23:17:47 +0900 Subject: [PATCH 058/161] =?UTF-8?q?fix:=20Chrome=E3=81=AB=E3=81=8A?= =?UTF-8?q?=E3=81=91=E3=82=8B3D=E8=A6=81=E7=B4=A0=E3=81=AE=E3=83=AC?= =?UTF-8?q?=E3=83=B3=E3=83=80=E3=83=AA=E3=83=B3=E3=82=B0=E9=80=9F=E5=BA=A6?= =?UTF-8?q?=E3=82=92=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `entyu/udonarium_lily`の修正を参考. `will-change`を指定した要素のComposited Layer生成を強制する(はず). これにより、いつ頃からか発生していたChromeでのレンダリング速度悪化を改善できる. Transform3Dに対する現状のChromeの挙動が意図された仕様かどうかは不明. 将来のアップデートでレンダリング速度が改善された場合は`will-change`の削除を検討. --- .../game-table/game-table.component.css | 9 +++++++++ .../game-table/game-table.component.html | 16 ++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/app/component/game-table/game-table.component.css b/src/app/component/game-table/game-table.component.css index cecceaaab..f6f324586 100644 --- a/src/app/component/game-table/game-table.component.css +++ b/src/app/component/game-table/game-table.component.css @@ -26,6 +26,15 @@ position: absolute; } +.will-change-transform { + /* + * デスクトップChromeにおけるレンダリング速度改善のための定義. + * will-changeの使用は可能な限り避けるべきであり、将来的なアップデートでレンダリング速度が改善された場合は削除を検討. + */ + will-change: transform; + backface-visibility: visible; +} + .is-pointer-events-none { pointer-events: none; } diff --git a/src/app/component/game-table/game-table.component.html b/src/app/component/game-table/game-table.component.html index 9e5ac58a7..cc616356f 100644 --- a/src/app/component/game-table/game-table.component.html +++ b/src/app/component/game-table/game-table.component.html @@ -4,14 +4,14 @@
- - - - - - - - + + + + + + + +
From f7b33af048bad8e3e025aa5cac52d9f7cd3d7211 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 11 Feb 2022 23:24:10 +0900 Subject: [PATCH 059/161] =?UTF-8?q?fix:=20=E5=9B=9E=E8=BB=A2=E3=82=A2?= =?UTF-8?q?=E3=82=A4=E3=82=B3=E3=83=B3=E3=82=92=E6=93=8D=E4=BD=9C=E3=81=A7?= =?UTF-8?q?=E3=81=8D=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../game-character/game-character.component.html | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/app/component/game-character/game-character.component.html b/src/app/component/game-character/game-character.component.html index f195e50f4..3af4ae2d4 100644 --- a/src/app/component/game-character/game-character.component.html +++ b/src/app/component/game-character/game-character.component.html @@ -22,15 +22,13 @@
{{name}}
-
-
- autorenew -
-
- autorenew -
+
+ autorenew +
+
+ autorenew
From e06319ca0a0d009f9212c553524bad51cbb637fc Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 11 Feb 2022 23:25:24 +0900 Subject: [PATCH 060/161] =?UTF-8?q?fix:=20=E8=A8=88=E7=AE=97=E5=BC=8F?= =?UTF-8?q?=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/transform/transform.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/class/transform/transform.ts b/src/app/class/transform/transform.ts index 6eede06c6..5c718613c 100644 --- a/src/app/class/transform/transform.ts +++ b/src/app/class/transform/transform.ts @@ -164,8 +164,8 @@ export class Transform { private fromBorderBox(point: IPoint3D): void { point.x += this.paddingLeft; point.y += this.paddingTop; - point.x += this.marginLeft; - point.y += this.marginTop; + point.x -= this.marginLeft; + point.y -= this.marginTop; point.x -= this.borderLeft; point.y -= this.borderTop; } @@ -173,8 +173,8 @@ export class Transform { private toBorderBox(point: IPoint3D): void { point.x -= this.paddingLeft; point.y -= this.paddingTop; - point.x -= this.marginLeft; - point.y -= this.marginTop; + point.x += this.marginLeft; + point.y += this.marginTop; point.x += this.borderLeft; point.y += this.borderTop; } From 4eed3de1ec1ecd4e6b450ec8f8195afc45070a31 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 11 Feb 2022 23:32:47 +0900 Subject: [PATCH 061/161] =?UTF-8?q?feat:=20=E3=82=B3=E3=83=9E=E3=82=92?= =?UTF-8?q?=E3=83=89=E3=83=A9=E3=83=83=E3=82=B0=E7=A7=BB=E5=8B=95=E3=81=95?= =?UTF-8?q?=E3=81=9B=E3=82=8B=E9=9A=9B=E3=81=AE=E5=BA=A7=E6=A8=99=E8=A8=88?= =?UTF-8?q?=E7=AE=97=E3=81=AE=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 高低差のある地形の上で移動させた時のコマとカーソルの位置のズレを少なくする --- src/app/directive/movable.directive.ts | 90 +++++++++++++------------- 1 file changed, 46 insertions(+), 44 deletions(-) diff --git a/src/app/directive/movable.directive.ts b/src/app/directive/movable.directive.ts index 0a6a415d5..4b4249560 100644 --- a/src/app/directive/movable.directive.ts +++ b/src/app/directive/movable.directive.ts @@ -50,10 +50,10 @@ export class MovableDirective implements AfterViewInit, OnDestroy { get posZ(): number { return this._posZ; } set posZ(posZ: number) { this._posZ = posZ; this.setUpdateTimer(); } - private pointer3d: PointerCoordinate = { x: 0, y: 0, z: 0 }; - private pointerOffset3d: PointerCoordinate = { x: 0, y: 0, z: 0 }; + private pointerOffset2d: PointerCoordinate = { x: 0, y: 0, z: 0 }; private pointerStart3d: PointerCoordinate = { x: 0, y: 0, z: 0 }; - private pointerPrev3d: PointerCoordinate = { x: 0, y: 0, z: 0 }; + + private targetStartRect: DOMRect; private height: number = 0; private width: number = 0; @@ -127,25 +127,29 @@ export class MovableDirective implements AfterViewInit, OnDestroy { this.setAnimatedTransition(false); this.setCollidableLayer(true); - let target = document.elementFromPoint(this.input.pointer.x, this.input.pointer.y) as HTMLElement; - this.pointer3d = this.coordinateService.calcTabletopLocalCoordinate(this.input.pointer, target); + this.width = this.input.target.clientWidth; + this.height = this.input.target.clientHeight; + + let target3d = { + x: this.posX + (this.width / 2), + y: this.posY + (this.height / 2), + z: this.posZ, + }; + let target2d = this.coordinateService.convertToGlobal(target3d, this.coordinateService.tabletopOriginElement); + this.setPointerEvents(true); - this.pointerOffset3d.x = this.posX - this.pointer3d.x; - this.pointerOffset3d.y = this.posY - this.pointer3d.y; - this.pointerOffset3d.z = this.posZ - this.pointer3d.z; + this.pointerOffset2d.x = target2d.x - this.input.pointer.x; + this.pointerOffset2d.y = target2d.y - this.input.pointer.y; + this.pointerOffset2d.z = target2d.z - this.input.pointer.z; - this.pointerStart3d.x = this.pointerPrev3d.x = this.pointer3d.x; - this.pointerStart3d.y = this.pointerPrev3d.y = this.pointer3d.y; - this.pointerStart3d.z = this.pointerPrev3d.z = this.pointer3d.z; + this.pointerStart3d.x = target3d.x; + this.pointerStart3d.y = target3d.y; + this.pointerStart3d.z = target3d.z; - this.ratio = 1.0; - if (this.pointer3d.z !== this.posZ) { - this.ratio /= Math.abs(this.pointer3d.z - this.posZ) / 2; - } + this.targetStartRect = this.input.target.getBoundingClientRect(); - this.width = this.input.target.clientWidth; - this.height = this.input.target.clientHeight; + this.ratio = 1.0; } onInputMove(e: MouseEvent | TouchEvent) { @@ -156,25 +160,37 @@ export class MovableDirective implements AfterViewInit, OnDestroy { if (e.cancelable) e.preventDefault(); if (!this.input.isDragging) this.setPointerEvents(false); - let target = document.elementFromPoint(this.input.pointer.x, this.input.pointer.y) as HTMLElement; - if (target == null) return; - this.pointer3d = this.coordinateService.calcTabletopLocalCoordinate(this.input.pointer, target); - if (this.pointerPrev3d.x === this.pointer3d.x && this.pointerPrev3d.y === this.pointer3d.y && this.pointerPrev3d.z === this.pointer3d.z) return; + let pointer2d = { + x: this.input.pointer.x + (this.pointerOffset2d.x * this.ratio), + y: this.input.pointer.y + (this.pointerOffset2d.y * this.ratio), + z: 0, + }; + + pointer2d.x = Math.min(window.innerWidth - 0.1, Math.max(pointer2d.x, 0.1)); + pointer2d.y = Math.min(window.innerHeight - 0.1, Math.max(pointer2d.y, 0.1)); + + let element = document.elementFromPoint(pointer2d.x, pointer2d.y) as HTMLElement; + if (element == null) return; + + let pointer3d = this.coordinateService.calcTabletopLocalCoordinate(pointer2d, element); + pointer3d.x -= this.width / 2; + pointer3d.y -= this.height / 2; + + if (this.posX === pointer3d.x && this.posY === pointer3d.y && this.posZ === pointer3d.z) return; if (!this.input.isDragging) this.ondragstart.emit(e as PointerEvent); this.ondrag.emit(e as PointerEvent); - let ratio = this.calcDistanceRatio(this.pointerStart3d, this.pointer3d); - if (ratio < this.ratio) this.ratio = ratio; - - this.pointerPrev3d.x = this.pointer3d.x; - this.pointerPrev3d.y = this.pointer3d.y; - this.pointerPrev3d.z = this.pointer3d.z; + let targetRect = this.input.target.getBoundingClientRect(); + let ratio = targetRect.width / this.targetStartRect.width; + if (ratio < this.ratio) { + this.ratio += (ratio - this.ratio) * 0.1; + } - this.posX = this.pointer3d.x + (this.pointerOffset3d.x * this.ratio) + (-(this.width / 2) * (1.0 - this.ratio)); - this.posY = this.pointer3d.y + (this.pointerOffset3d.y * this.ratio) + (-(this.height / 2) * (1.0 - this.ratio)); - this.posZ = this.pointer3d.z; + this.posX = pointer3d.x; + this.posY = pointer3d.y; + this.posZ = pointer3d.z; } onInputEnd(e: MouseEvent | TouchEvent) { @@ -207,20 +223,6 @@ export class MovableDirective implements AfterViewInit, OnDestroy { EventSystem.trigger('SELECT_TABLETOP_OBJECT', { identifier: this.tabletopObject.identifier, className: this.tabletopObject.aliasName }); } - private calcDistanceRatio(start: PointerCoordinate, now: PointerCoordinate): number { - let width = this.collidableElements[0].clientWidth; - let height = this.collidableElements[0].clientHeight; - let ratio: number = Math.sqrt(width * width + height * height); - ratio = ratio < 1 ? 1 : ratio * 3; - - let distanceY = start.y - now.y; - let distanceX = start.x - now.x; - let distanceZ = (start.z - now.z) * 100; - let distance = Math.sqrt(distanceY ** 2 + distanceX ** 2 + distanceZ ** 2); - - return ratio / (distance + ratio); - } - snapToGrid(gridSize: number = 25) { this.posX = this.calcSnapNum(this.posX, gridSize); this.posY = this.calcSnapNum(this.posY, gridSize); From 1db63cbfd0b7eab51cbfc6f5b014c4df6a1c3b14 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 11 Feb 2022 23:36:36 +0900 Subject: [PATCH 062/161] =?UTF-8?q?refactor:=20=E5=9E=8B=E5=AE=9A=E7=BE=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/synchronize-object/decorator-core.ts | 8 ++++---- src/app/class/core/synchronize-object/object-factory.ts | 2 +- src/app/class/core/system/network/skyway-connection.ts | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/app/class/core/synchronize-object/decorator-core.ts b/src/app/class/core/synchronize-object/decorator-core.ts index a1b0daafb..f806caadf 100644 --- a/src/app/class/core/synchronize-object/decorator-core.ts +++ b/src/app/class/core/synchronize-object/decorator-core.ts @@ -10,11 +10,11 @@ export function defineSyncObject(alias: string) { export function defineSyncVariable() { return (target: T, key: string | symbol) => { - function getter() { + function getter(this: any) { return this.context.syncData[key]; } - function setter(value: any) { + function setter(this: any, value: any) { this.context.syncData[key] = value; this.update(); } @@ -30,11 +30,11 @@ export function defineSyncVariable() { export function defineSyncAttribute() { return (target: T, key: string | symbol) => { - function getter() { + function getter(this: any) { return this.getAttribute(key); } - function setter(value: any) { + function setter(this: any, value: any) { this.setAttribute(key, value); } diff --git a/src/app/class/core/synchronize-object/object-factory.ts b/src/app/class/core/synchronize-object/object-factory.ts index e5a451706..84517a531 100644 --- a/src/app/class/core/synchronize-object/object-factory.ts +++ b/src/app/class/core/synchronize-object/object-factory.ts @@ -32,7 +32,7 @@ export class ObjectFactory { this.aliasMap.set(constructor, alias); } - create(alias: string, identifer?: string): T { + create(alias: string, identifer?: string): T | null { let classConstructor = this.constructorMap.get(alias); if (!classConstructor) { console.error(alias + 'という名のGameObjectクラスは定義されていません'); diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index 6678f5a90..3f0441bb7 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -119,7 +119,7 @@ export class SkyWayConnection implements Connection { let byteLength = container.data.byteLength; this.bandwidthUsage += byteLength; - this.queue = this.queue.then(() => new Promise((resolve, reject) => { + this.queue = this.queue.then(() => new Promise((resolve, reject) => { setZeroTimeout(async () => { if (1 * 1024 < container.data.byteLength) { let compressed = await compressAsync(container.data); @@ -306,7 +306,7 @@ export class SkyWayConnection implements Connection { if (this.callback.onData) { let byteLength = container.data.byteLength; this.bandwidthUsage += byteLength; - this.queue = this.queue.then(() => new Promise((resolve, reject) => { + this.queue = this.queue.then(() => new Promise((resolve, reject) => { setZeroTimeout(async () => { let data = container.isCompressed ? await decompressAsync(container.data) : container.data; this.callback.onData(conn.remoteId, MessagePack.decode(data)); From f19e531095eef8a2983bb3390580a2a5f6c19d9c Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 11 Feb 2022 23:38:09 +0900 Subject: [PATCH 063/161] =?UTF-8?q?refactor:=20null=E3=83=81=E3=82=A7?= =?UTF-8?q?=E3=83=83=E3=82=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/synchronize-object/object-factory.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/class/core/synchronize-object/object-factory.ts b/src/app/class/core/synchronize-object/object-factory.ts index 84517a531..416972e7b 100644 --- a/src/app/class/core/synchronize-object/object-factory.ts +++ b/src/app/class/core/synchronize-object/object-factory.ts @@ -18,7 +18,7 @@ export class ObjectFactory { private constructor() { console.log('ObjectFactory ready...'); }; register(constructor: Type, alias?: string) { - if (!alias) alias = constructor.name || constructor.toString().match(/function\s*([^(]*)\(/)[1]; + if (!alias) alias = constructor.name ?? (constructor.toString().match(/function\s*([^(]*)\(/)?.[1] ?? ''); if (this.constructorMap.has(alias)) { console.error('その alias<' + alias + '> はすでに割り当て済みじゃねー?'); return; @@ -43,6 +43,6 @@ export class ObjectFactory { } getAlias(constructor: Type): string { - return this.aliasMap.get(constructor); + return this.aliasMap.get(constructor) ?? ''; } } From 4f2e2b7ce7011131e6ef1b29bb6b8d2a50ccf7e7 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 14 Feb 2022 01:30:11 +0900 Subject: [PATCH 064/161] =?UTF-8?q?refactor:=20deprecated=E3=81=AB?= =?UTF-8?q?=E3=81=AA=E3=81=A3=E3=81=9F=E5=9E=8B=E3=81=AE=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/component/chat-tab/chat-tab.component.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/app/component/chat-tab/chat-tab.component.ts b/src/app/component/chat-tab/chat-tab.component.ts index 646eefbd2..036f6871c 100644 --- a/src/app/component/chat-tab/chat-tab.component.ts +++ b/src/app/component/chat-tab/chat-tab.component.ts @@ -55,8 +55,8 @@ export class ChatTabComponent implements OnInit, AfterViewInit, OnDestroy, OnCha private topElm: HTMLElement = null; private bottomElm: HTMLElement = null; - private topElmBox: ClientRect = null; - private bottomElmBox: ClientRect = null; + private topElmBox: DOMRect = null; + private bottomElmBox: DOMRect = null; private topIndex = 0; private bottomIndex = 0; @@ -255,8 +255,8 @@ export class ChatTabComponent implements OnInit, AfterViewInit, OnDestroy, OnCha if (!hasTopElm && !hasBotomElm) return { hasTopBlank, hasBotomBlank }; let elm: HTMLElement = null; - let prevBox: ClientRect = null; - let currentBox: ClientRect = null; + let prevBox: DOMRect = null; + let currentBox: DOMRect = null; let diff: number = 0; if (hasBotomElm) { elm = this.bottomElm; @@ -271,8 +271,8 @@ export class ChatTabComponent implements OnInit, AfterViewInit, OnDestroy, OnCha this.panelService.scrollablePanel.scrollTop -= diff; } - let logBox: ClientRect = this.logContainerRef.nativeElement.getBoundingClientRect(); - let messageBox: ClientRect = this.messageContainerRef.nativeElement.getBoundingClientRect(); + let logBox: DOMRect = this.logContainerRef.nativeElement.getBoundingClientRect(); + let messageBox: DOMRect = this.messageContainerRef.nativeElement.getBoundingClientRect(); let messageBoxTop = messageBox.top - logBox.top; let messageBoxBottom = messageBoxTop + messageBox.height; From 91ef0eb522dfaea300cb6f533b449bfb5968012e Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 14 Feb 2022 01:57:55 +0900 Subject: [PATCH 065/161] =?UTF-8?q?refactor:=20nativeElement=E3=81=AE?= =?UTF-8?q?=E5=8F=82=E7=85=A7=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/directive/movable.directive.ts | 26 +++++++++++++------------- src/app/directive/rotable.directive.ts | 22 +++++++++++----------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/app/directive/movable.directive.ts b/src/app/directive/movable.directive.ts index 4b4249560..1954e0552 100644 --- a/src/app/directive/movable.directive.ts +++ b/src/app/directive/movable.directive.ts @@ -39,6 +39,8 @@ export class MovableDirective implements AfterViewInit, OnDestroy { @Output('movable.ondragend') ondragend: EventEmitter = new EventEmitter(); @Output('movable.onend') onend: EventEmitter = new EventEmitter(); + private get nativeElement(): HTMLElement { return this.elementRef.nativeElement; } + private _posX: number = 0; private _posY: number = 0; private _posZ: number = 0; @@ -127,8 +129,8 @@ export class MovableDirective implements AfterViewInit, OnDestroy { this.setAnimatedTransition(false); this.setCollidableLayer(true); - this.width = this.input.target.clientWidth; - this.height = this.input.target.clientHeight; + this.width = this.nativeElement.clientWidth; + this.height = this.nativeElement.clientHeight; let target3d = { x: this.posX + (this.width / 2), @@ -147,7 +149,7 @@ export class MovableDirective implements AfterViewInit, OnDestroy { this.pointerStart3d.y = target3d.y; this.pointerStart3d.z = target3d.z; - this.targetStartRect = this.input.target.getBoundingClientRect(); + this.targetStartRect = this.nativeElement.getBoundingClientRect(); this.ratio = 1.0; } @@ -182,7 +184,7 @@ export class MovableDirective implements AfterViewInit, OnDestroy { if (!this.input.isDragging) this.ondragstart.emit(e as PointerEvent); this.ondrag.emit(e as PointerEvent); - let targetRect = this.input.target.getBoundingClientRect(); + let targetRect = this.nativeElement.getBoundingClientRect(); let ratio = targetRect.width / this.targetStartRect.width; if (ratio < this.ratio) { this.ratio += (ratio - this.ratio) * 0.1; @@ -214,7 +216,7 @@ export class MovableDirective implements AfterViewInit, OnDestroy { // ロングプレスによるタッチ操作でコンテキストメニューを開く場合、イベントを適切なDOMに伝搬させる e.stopPropagation(); let ev = new MouseEvent(e.type, e); - this.ngZone.run(() => this.input.target.dispatchEvent(ev)); + this.ngZone.run(() => this.nativeElement.dispatchEvent(ev)); } } @@ -255,11 +257,11 @@ export class MovableDirective implements AfterViewInit, OnDestroy { private findCollidableElements() { this.collidableElements = []; - if (getComputedStyle(this.input.target).pointerEvents !== 'none') { - this.collidableElements = [this.input.target]; + if (getComputedStyle(this.nativeElement).pointerEvents !== 'none') { + this.collidableElements = [this.nativeElement]; return; } - this.findNestedCollidableElements(this.input.target); + this.findNestedCollidableElements(this.nativeElement); } private findNestedCollidableElements(element: HTMLElement) { @@ -287,8 +289,7 @@ export class MovableDirective implements AfterViewInit, OnDestroy { } private setAnimatedTransition(isEnable: boolean) { - if (!this.input) return; - this.input.target.style.transition = isEnable ? 'transform 132ms linear' : ''; + this.nativeElement.style.transition = isEnable ? 'transform 132ms linear' : ''; } private shouldTransition(object: TabletopObject): boolean { @@ -296,13 +297,12 @@ export class MovableDirective implements AfterViewInit, OnDestroy { } private stopTransition() { - this.input.target.style.transform = window.getComputedStyle(this.input.target).transform; + this.nativeElement.style.transform = window.getComputedStyle(this.nativeElement).transform; } private updateTransformCss() { - if (!this.input) return; let css = this.transformCssOffset + ' translateX(' + this.posX + 'px) translateY(' + this.posY + 'px) translateZ(' + this.posZ + 'px)'; - this.input.target.style.transform = css; + this.nativeElement.style.transform = css; } private setCollidableLayer(isCollidable: boolean) { diff --git a/src/app/directive/rotable.directive.ts b/src/app/directive/rotable.directive.ts index 7324d5abf..b17e844bf 100644 --- a/src/app/directive/rotable.directive.ts +++ b/src/app/directive/rotable.directive.ts @@ -37,6 +37,8 @@ export class RotableDirective implements AfterViewInit, OnDestroy { @Output('rotable.ondragend') ondragend: EventEmitter = new EventEmitter(); @Output('rotable.onend') onend: EventEmitter = new EventEmitter(); + private get nativeElement(): HTMLElement { return this.elementRef.nativeElement; } + private _rotate: number = 0; get rotate(): number { return this._rotate; } set rotate(rotate: number) { this._rotate = rotate; this.setUpdateTimer(); } @@ -44,9 +46,9 @@ export class RotableDirective implements AfterViewInit, OnDestroy { @Output('rotable.valueChange') valueChange: EventEmitter = new EventEmitter(); private get isAllowedToRotate(): boolean { - if (!this.grabbingElement || !this.input.target) return false; + if (!this.grabbingElement || !this.nativeElement) return false; if (this.grabbingSelecter.length < 1) return true; - let elements = this.input.target.querySelectorAll(this.grabbingSelecter); + let elements = this.nativeElement.querySelectorAll(this.grabbingSelecter); let macth = false; for (let i = 0; i < elements.length; i++) { macth = elements[i].contains(this.grabbingElement); @@ -116,7 +118,7 @@ export class RotableDirective implements AfterViewInit, OnDestroy { e.stopPropagation(); this.onstart.emit(e as PointerEvent); - let pointer = this.coordinateService.convertLocalToLocal(this.input.pointer, this.grabbingElement, this.input.target.parentElement); + let pointer = this.coordinateService.convertLocalToLocal(this.input.pointer, this.grabbingElement, this.nativeElement.parentElement); this.rotateOffset = this.calcRotate(pointer, this.rotate); this.setAnimatedTransition(false); } @@ -129,7 +131,7 @@ export class RotableDirective implements AfterViewInit, OnDestroy { if (e.cancelable) e.preventDefault(); e.stopPropagation(); - let pointer3d = this.coordinateService.convertLocalToLocal(this.input.pointer, this.grabbingElement, this.input.target.parentElement); + let pointer3d = this.coordinateService.convertLocalToLocal(this.input.pointer, this.grabbingElement, this.nativeElement.parentElement); let angle = this.calcRotate(pointer3d, this.rotateOffset); if (!this.input.isDragging) this.ondragstart.emit(e as PointerEvent); @@ -154,8 +156,8 @@ export class RotableDirective implements AfterViewInit, OnDestroy { } private calcRotate(pointer: PointerCoordinate, rotateOffset: number): number { - let centerX = this.input.target.clientWidth / 2; - let centerY = this.input.target.clientHeight / 2; + let centerX = this.nativeElement.clientWidth / 2; + let centerY = this.nativeElement.clientHeight / 2; let x = pointer.x - centerX; let y = pointer.y - centerY; let rad = Math.atan2(y, x); @@ -185,8 +187,7 @@ export class RotableDirective implements AfterViewInit, OnDestroy { } private setAnimatedTransition(isEnable: boolean) { - if (!this.input) return; - this.input.target.style.transition = isEnable ? 'transform 132ms linear' : ''; + this.nativeElement.style.transition = isEnable ? 'transform 132ms linear' : ''; } private shouldTransition(object: RotableTabletopObject): boolean { @@ -194,12 +195,11 @@ export class RotableDirective implements AfterViewInit, OnDestroy { } private stopTransition() { - this.input.target.style.transform = window.getComputedStyle(this.input.target).transform; + this.nativeElement.style.transform = window.getComputedStyle(this.nativeElement).transform; } private updateTransformCss() { - if (!this.input) return; let css = this.transformCssOffset + ' rotateZ(' + this.rotate + 'deg)'; - this.input.target.style.transform = css; + this.nativeElement.style.transform = css; } } From 087aca94223ab1f25aec9786ec62c0ade336f0f6 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 14 Feb 2022 22:35:27 +0900 Subject: [PATCH 066/161] =?UTF-8?q?fix:=20=E3=83=90=E3=83=83=E3=83=81?= =?UTF-8?q?=E5=87=A6=E7=90=86=E3=81=AE=E5=8B=95=E4=BD=9C=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 最初に予約されたバッチ処理を孤立させず、さらにバッチ全体をZoneの外で実行することを保証する. --- src/app/service/batch.service.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/app/service/batch.service.ts b/src/app/service/batch.service.ts index 9cf06c062..1c111815d 100644 --- a/src/app/service/batch.service.ts +++ b/src/app/service/batch.service.ts @@ -1,4 +1,5 @@ -import { Injectable } from '@angular/core'; +import { Injectable, NgZone } from '@angular/core'; +import { setZeroTimeout } from '@udonarium/core/system/util/zero-timeout'; type BatchTask = () => void; @@ -9,12 +10,18 @@ export class BatchService { private batchTask: Map = new Map(); private batchTaskTimer: NodeJS.Timer = null; - constructor() { } + constructor( + private ngZone: NgZone, + ) { } add(task: BatchTask, key: any = {}) { this.batchTask.set(key, task); if (this.batchTaskTimer != null) return; - this.execBatch(); + setZeroTimeout(() => this.execBatch()); + this.ngZone.runOutsideAngular(() => this.startTimer()); + } + + private startTimer() { this.batchTaskTimer = setInterval(() => { if (0 < this.batchTask.size) { this.execBatch(); From cbef286a5b19cbaf0b8509628304fad15220e4e3 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Wed, 16 Feb 2022 02:27:23 +0900 Subject: [PATCH 067/161] =?UTF-8?q?refactor:=20=E3=83=A1=E3=82=BD=E3=83=83?= =?UTF-8?q?=E3=83=89=E5=AE=9A=E7=BE=A9=E3=81=AE=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/service/batch.service.ts | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/app/service/batch.service.ts b/src/app/service/batch.service.ts index 1c111815d..c6f3e180a 100644 --- a/src/app/service/batch.service.ts +++ b/src/app/service/batch.service.ts @@ -16,26 +16,28 @@ export class BatchService { add(task: BatchTask, key: any = {}) { this.batchTask.set(key, task); - if (this.batchTaskTimer != null) return; - setZeroTimeout(() => this.execBatch()); - this.ngZone.runOutsideAngular(() => this.startTimer()); - } - - private startTimer() { - this.batchTaskTimer = setInterval(() => { - if (0 < this.batchTask.size) { - this.execBatch(); - } else { - clearInterval(this.batchTaskTimer); - this.batchTaskTimer = null; - } - }, 66); + this.startTimer(); } remove(key: any = {}) { this.batchTask.delete(key); } + private startTimer() { + if (this.batchTaskTimer != null) return; + this.ngZone.runOutsideAngular(() => { + setZeroTimeout(() => this.execBatch()); + this.batchTaskTimer = setInterval(() => { + if (0 < this.batchTask.size) { + this.execBatch(); + } else { + clearInterval(this.batchTaskTimer); + this.batchTaskTimer = null; + } + }, 66); + }); + } + private execBatch() { this.batchTask.forEach(task => task()); this.batchTask.clear(); From e43a70a6e388ff570aa5f606253cd731e7f65c0b Mon Sep 17 00:00:00 2001 From: TK11235 Date: Wed, 16 Feb 2022 02:29:34 +0900 Subject: [PATCH 068/161] =?UTF-8?q?feat:=20=E3=83=90=E3=83=83=E3=83=81?= =?UTF-8?q?=E5=87=A6=E7=90=86=E5=AE=8C=E4=BA=86=E6=99=82=E3=81=ABChangeDet?= =?UTF-8?q?ection=E3=82=92=E5=AE=9F=E8=A1=8C=E3=81=99=E3=82=8B=E3=82=AA?= =?UTF-8?q?=E3=83=97=E3=82=B7=E3=83=A7=E3=83=B3=E6=A9=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/service/batch.service.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/app/service/batch.service.ts b/src/app/service/batch.service.ts index c6f3e180a..6c6ff3991 100644 --- a/src/app/service/batch.service.ts +++ b/src/app/service/batch.service.ts @@ -9,6 +9,7 @@ type BatchTask = () => void; export class BatchService { private batchTask: Map = new Map(); private batchTaskTimer: NodeJS.Timer = null; + private needsChangeDetection: boolean = false; constructor( private ngZone: NgZone, @@ -23,6 +24,11 @@ export class BatchService { this.batchTask.delete(key); } + requireChangeDetection() { + this.needsChangeDetection = true; + this.startTimer(); + } + private startTimer() { if (this.batchTaskTimer != null) return; this.ngZone.runOutsideAngular(() => { @@ -41,5 +47,9 @@ export class BatchService { private execBatch() { this.batchTask.forEach(task => task()); this.batchTask.clear(); + if (this.needsChangeDetection) { + this.needsChangeDetection = false; + this.ngZone.run(() => { }); + } } } From 67c963bc002da76d71dd00d728f17ebac3228811 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Wed, 16 Feb 2022 02:32:28 +0900 Subject: [PATCH 069/161] fix: Cannot find namespace 'NodeJS' --- tsconfig.app.json | 4 +++- tsconfig.spec.json | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/tsconfig.app.json b/tsconfig.app.json index 82d91dc4a..226adb49d 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -3,7 +3,9 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/app", - "types": [] + "types": [ + "node" + ] }, "files": [ "src/main.ts", diff --git a/tsconfig.spec.json b/tsconfig.spec.json index 092345b02..8af9a5739 100644 --- a/tsconfig.spec.json +++ b/tsconfig.spec.json @@ -4,6 +4,7 @@ "compilerOptions": { "outDir": "./out-tsc/spec", "types": [ + "node", "jasmine" ] }, From 9479915540f938e414d03cdf1a9bb735b0b70ebd Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 17 Feb 2022 03:05:45 +0900 Subject: [PATCH 070/161] =?UTF-8?q?perf:=20ChangeDetection=E3=81=8C?= =?UTF-8?q?=E8=A6=81=E6=B1=82=E3=81=95=E3=82=8C=E3=82=8B=E5=9B=9E=E6=95=B0?= =?UTF-8?q?=E3=82=92=E6=9C=80=E9=81=A9=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/component/chat-input/chat-input.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/component/chat-input/chat-input.component.ts b/src/app/component/chat-input/chat-input.component.ts index f995c0453..1f940bd22 100644 --- a/src/app/component/chat-input/chat-input.component.ts +++ b/src/app/component/chat-input/chat-input.component.ts @@ -133,7 +133,7 @@ export class ChatInputComponent implements OnInit, OnDestroy { } this.writingPeers.get(event.sendFrom).reset(); this.updateWritingPeerNames(); - this.batchService.add(() => this.ngZone.run(() => { }), this); + this.batchService.requireChangeDetection(); }); } From 58dcb1f4db58416a1b10aedd85fa6488b7c1ac56 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 17 Feb 2022 20:59:41 +0900 Subject: [PATCH 071/161] =?UTF-8?q?perf:=20InputHandler=E3=81=AE=E5=88=9D?= =?UTF-8?q?=E6=9C=9F=E5=8C=96=E3=82=92DOM=E3=83=84=E3=83=AA=E3=83=BC?= =?UTF-8?q?=E7=A2=BA=E5=AE=9A=E3=81=BE=E3=81=A7=E9=81=85=E5=BB=B6=E3=81=95?= =?UTF-8?q?=E3=81=9B=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/directive/movable.directive.ts | 12 ++++++++---- src/app/directive/rotable.directive.ts | 16 ++++++++++++---- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/app/directive/movable.directive.ts b/src/app/directive/movable.directive.ts index 1954e0552..c5ca0da96 100644 --- a/src/app/directive/movable.directive.ts +++ b/src/app/directive/movable.directive.ts @@ -75,10 +75,8 @@ export class MovableDirective implements AfterViewInit, OnDestroy { private coordinateService: CoordinateService, ) { } - ngAfterViewInit() { - this.ngZone.runOutsideAngular(() => { - this.input = new InputHandler(this.elementRef.nativeElement); - }); + initialize() { + this.input = new InputHandler(this.nativeElement); this.input.onStart = this.onInputStart.bind(this); this.input.onMove = this.onInputMove.bind(this); this.input.onEnd = this.onInputEnd.bind(this); @@ -103,12 +101,18 @@ export class MovableDirective implements AfterViewInit, OnDestroy { this.setPosition(this.tabletopObject); } + ngAfterViewInit() { + this.batchService.add(() => this.initialize(), this.elementRef); + this.setPosition(this.tabletopObject); + } + ngOnDestroy() { this.cancel(); this.input.destroy(); this.unregister(); EventSystem.unregister(this); this.batchService.remove(this); + this.batchService.remove(this.elementRef); } cancel() { diff --git a/src/app/directive/rotable.directive.ts b/src/app/directive/rotable.directive.ts index b17e844bf..5edc84d11 100644 --- a/src/app/directive/rotable.directive.ts +++ b/src/app/directive/rotable.directive.ts @@ -70,10 +70,8 @@ export class RotableDirective implements AfterViewInit, OnDestroy { private coordinateService: CoordinateService, ) { } - ngAfterViewInit() { - this.ngZone.runOutsideAngular(() => { - this.input = new InputHandler(this.elementRef.nativeElement); - }); + initialize() { + this.input = new InputHandler(this.nativeElement); this.input.onStart = this.onInputStart.bind(this); this.input.onMove = this.onInputMove.bind(this); this.input.onEnd = this.onInputEnd.bind(this); @@ -99,11 +97,21 @@ export class RotableDirective implements AfterViewInit, OnDestroy { } } + ngAfterViewInit() { + this.batchService.add(() => this.initialize(), this.elementRef); + if (this.tabletopObject) { + this.setRotate(this.tabletopObject); + } else { + this.updateTransformCss(); + } + } + ngOnDestroy() { this.cancel(); this.input.destroy(); EventSystem.unregister(this); this.batchService.remove(this); + this.batchService.remove(this.elementRef); } cancel() { From eb4c41e8890fa073a3355508685d66b8f5fd3fa7 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 17 Feb 2022 21:02:06 +0900 Subject: [PATCH 072/161] =?UTF-8?q?style:=20=E3=83=A1=E3=82=BD=E3=83=83?= =?UTF-8?q?=E3=83=89=E3=81=AE=E5=AE=9A=E7=BE=A9=E9=A0=86=E3=82=92=E6=95=B4?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/directive/movable.directive.ts | 28 ++++++++++----------- src/app/directive/rotable.directive.ts | 34 +++++++++++++------------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/app/directive/movable.directive.ts b/src/app/directive/movable.directive.ts index c5ca0da96..8cb4e22ec 100644 --- a/src/app/directive/movable.directive.ts +++ b/src/app/directive/movable.directive.ts @@ -75,6 +75,20 @@ export class MovableDirective implements AfterViewInit, OnDestroy { private coordinateService: CoordinateService, ) { } + ngAfterViewInit() { + this.batchService.add(() => this.initialize(), this.elementRef); + this.setPosition(this.tabletopObject); + } + + ngOnDestroy() { + this.cancel(); + this.input.destroy(); + this.unregister(); + EventSystem.unregister(this); + this.batchService.remove(this); + this.batchService.remove(this.elementRef); + } + initialize() { this.input = new InputHandler(this.nativeElement); this.input.onStart = this.onInputStart.bind(this); @@ -101,20 +115,6 @@ export class MovableDirective implements AfterViewInit, OnDestroy { this.setPosition(this.tabletopObject); } - ngAfterViewInit() { - this.batchService.add(() => this.initialize(), this.elementRef); - this.setPosition(this.tabletopObject); - } - - ngOnDestroy() { - this.cancel(); - this.input.destroy(); - this.unregister(); - EventSystem.unregister(this); - this.batchService.remove(this); - this.batchService.remove(this.elementRef); - } - cancel() { this.input.cancel(); this.setPointerEvents(true); diff --git a/src/app/directive/rotable.directive.ts b/src/app/directive/rotable.directive.ts index 5edc84d11..ec648c712 100644 --- a/src/app/directive/rotable.directive.ts +++ b/src/app/directive/rotable.directive.ts @@ -70,6 +70,23 @@ export class RotableDirective implements AfterViewInit, OnDestroy { private coordinateService: CoordinateService, ) { } + ngAfterViewInit() { + this.batchService.add(() => this.initialize(), this.elementRef); + if (this.tabletopObject) { + this.setRotate(this.tabletopObject); + } else { + this.updateTransformCss(); + } + } + + ngOnDestroy() { + this.cancel(); + this.input.destroy(); + EventSystem.unregister(this); + this.batchService.remove(this); + this.batchService.remove(this.elementRef); + } + initialize() { this.input = new InputHandler(this.nativeElement); this.input.onStart = this.onInputStart.bind(this); @@ -97,23 +114,6 @@ export class RotableDirective implements AfterViewInit, OnDestroy { } } - ngAfterViewInit() { - this.batchService.add(() => this.initialize(), this.elementRef); - if (this.tabletopObject) { - this.setRotate(this.tabletopObject); - } else { - this.updateTransformCss(); - } - } - - ngOnDestroy() { - this.cancel(); - this.input.destroy(); - EventSystem.unregister(this); - this.batchService.remove(this); - this.batchService.remove(this.elementRef); - } - cancel() { this.input.cancel(); this.grabbingElement = null; From 7c0585e7d495da60a1b2a651ba39766d747c1d09 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 17 Feb 2022 21:02:29 +0900 Subject: [PATCH 073/161] =?UTF-8?q?refactor:=20=E4=B8=8D=E8=A6=81=E3=81=AA?= =?UTF-8?q?=E5=AE=9A=E7=BE=A9=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/directive/rotable.directive.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/directive/rotable.directive.ts b/src/app/directive/rotable.directive.ts index ec648c712..8b1ab08f9 100644 --- a/src/app/directive/rotable.directive.ts +++ b/src/app/directive/rotable.directive.ts @@ -1,4 +1,4 @@ -import { AfterViewInit, Directive, ElementRef, EventEmitter, Input, NgZone, OnDestroy, Output } from '@angular/core'; +import { AfterViewInit, Directive, ElementRef, EventEmitter, Input, OnDestroy, Output } from '@angular/core'; import { EventSystem } from '@udonarium/core/system'; import { TabletopObject } from '@udonarium/tabletop-object'; import { BatchService } from 'service/batch.service'; @@ -63,7 +63,6 @@ export class RotableDirective implements AfterViewInit, OnDestroy { private input: InputHandler = null; constructor( - private ngZone: NgZone, private elementRef: ElementRef, private batchService: BatchService, private pointerDeviceService: PointerDeviceService, From eb6399d37a06f441579e7945d9473ca241620e56 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 17 Feb 2022 21:09:35 +0900 Subject: [PATCH 074/161] =?UTF-8?q?fix:=20MessagePack=E3=81=AE=E4=BE=9D?= =?UTF-8?q?=E5=AD=98=E9=96=A2=E4=BF=82=E3=82=92=E9=96=A2=E6=95=B0=E3=81=AB?= =?UTF-8?q?=E5=88=86=E9=9B=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit encode/decodeのエラー対応も同時に実施 --- .../core/file-storage/buffer-sharing-task.ts | 5 ++--- .../core/system/network/skyway-connection.ts | 3 +-- .../system/network/skyway-data-connection.ts | 4 ++-- .../class/core/system/util/message-pack.ts | 21 +++++++++++++++++++ 4 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 src/app/class/core/system/util/message-pack.ts diff --git a/src/app/class/core/file-storage/buffer-sharing-task.ts b/src/app/class/core/file-storage/buffer-sharing-task.ts index 8159558a1..dbf548cdc 100644 --- a/src/app/class/core/file-storage/buffer-sharing-task.ts +++ b/src/app/class/core/file-storage/buffer-sharing-task.ts @@ -1,6 +1,5 @@ -import * as MessagePack from 'msgpack-lite'; - import { EventSystem } from '../system'; +import { MessagePack } from '../system/util/message-pack'; import { ResettableTimeout } from '../system/util/resettable-timeout'; import { clearZeroTimeout, setZeroTimeout } from '../system/util/zero-timeout'; @@ -201,7 +200,7 @@ export class BufferSharingTask { pos += chank.byteLength; } - this.data = MessagePack.decode(uint8Array); + this.data = MessagePack.decode(uint8Array) as T; this.finish(); } diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index 3f0441bb7..56c730c1d 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -1,6 +1,5 @@ -import * as MessagePack from 'msgpack-lite'; - import { compressAsync, decompressAsync } from '../util/compress'; +import { MessagePack } from '../util/message-pack'; import { setZeroTimeout } from '../util/zero-timeout'; import { Connection, ConnectionCallback } from './connection'; import { PeerContext } from './peer-context'; diff --git a/src/app/class/core/system/network/skyway-data-connection.ts b/src/app/class/core/system/network/skyway-data-connection.ts index a5f394502..5563c9a49 100644 --- a/src/app/class/core/system/network/skyway-data-connection.ts +++ b/src/app/class/core/system/network/skyway-data-connection.ts @@ -1,6 +1,6 @@ import { EventEmitter } from 'events'; -import * as MessagePack from 'msgpack-lite'; +import { MessagePack } from '../util/message-pack'; import { UUID } from '../util/uuid'; import { setZeroTimeout } from '../util/zero-timeout'; @@ -79,7 +79,7 @@ export class SkyWayDataConnection extends EventEmitter { } private onData(data: ArrayBuffer) { - let chank: DataChank = MessagePack.decode(new Uint8Array(data)); + let chank: DataChank = MessagePack.decode(new Uint8Array(data)) as DataChank; if (chank.id == null) { this.emit('data', chank); diff --git a/src/app/class/core/system/util/message-pack.ts b/src/app/class/core/system/util/message-pack.ts new file mode 100644 index 000000000..1c7204e88 --- /dev/null +++ b/src/app/class/core/system/util/message-pack.ts @@ -0,0 +1,21 @@ +import * as msgpacklite from 'msgpack-lite'; + +export namespace MessagePack { + export function encode(object: unknown): Uint8Array { + try { + return msgpacklite.encode(object); + } catch (error) { + console.error(error, object); + } + return null; + } + + export function decode(buffer: Uint8Array): unknown { + try { + return msgpacklite.decode(buffer); + } catch (error) { + console.error(error, buffer); + } + return null; + } +} From d7674a94f7c148ee0e46c2098464a57acf6cee8c Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 19 Feb 2022 00:18:23 +0900 Subject: [PATCH 075/161] =?UTF-8?q?refactor:=20=E4=BD=BF=E7=94=A8=E3=81=97?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=81=AA=E3=81=84=E3=82=B3=E3=83=BC=E3=83=89?= =?UTF-8?q?=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../peer-menu/peer-menu.component.ts | 59 ------------------- src/app/service/app-config.service.ts | 49 +-------------- 2 files changed, 1 insertion(+), 107 deletions(-) diff --git a/src/app/component/peer-menu/peer-menu.component.ts b/src/app/component/peer-menu/peer-menu.component.ts index b0095ab51..2f39687da 100644 --- a/src/app/component/peer-menu/peer-menu.component.ts +++ b/src/app/component/peer-menu/peer-menu.component.ts @@ -54,13 +54,6 @@ export class PeerMenuComponent implements OnInit, OnDestroy, AfterViewInit { }); } - private resetPeerIfNeeded() { - if (Network.peerContexts.length < 1) { - Network.open(); - PeerCursor.myCursor.peerId = Network.peerId; - } - } - connectPeer() { let targetUserId = this.targetUserId; this.targetUserId = ''; @@ -72,58 +65,6 @@ export class PeerMenuComponent implements OnInit, OnDestroy, AfterViewInit { Network.connect(context.peerId); } - async connectPeerHistory() { - this.help = ''; - let conectPeers: PeerContext[] = []; - let roomId: string = ''; - - for (let peerId of this.appConfigService.peerHistory) { - let context = PeerContext.parse(peerId); - if (context.isRoom) { - if (roomId !== context.roomId) conectPeers = []; - roomId = context.roomId; - conectPeers.push(context); - } else { - if (roomId !== context.roomId) conectPeers = []; - conectPeers.push(context); - } - } - - if (roomId.length) { - console.warn('connectPeerRoom <' + roomId + '>'); - let conectPeers: PeerContext[] = []; - let peerIds = await Network.listAllPeers(); - for (let peerId of peerIds) { - console.log(peerId); - let context = PeerContext.parse(peerId); - if (context.roomId === roomId) { - conectPeers.push(context); - } - } - if (conectPeers.length < 1) { - this.help = '前回接続していたルームが見つかりませんでした。既に解散しているかもしれません。'; - console.warn('Room is already closed...'); - return; - } - Network.open(PeerContext.generateId(), conectPeers[0].roomId, conectPeers[0].roomName, conectPeers[0].password); - } else { - console.warn('connectPeers ' + conectPeers.length); - Network.open(); - } - - PeerCursor.myCursor.peerId = Network.peerId; - - let listener = EventSystem.register(this); - listener.on('OPEN_NETWORK', event => { - console.log('OPEN_NETWORK', event.data.peerId); - EventSystem.unregisterListener(listener); - ObjectStore.instance.clearDeleteHistory(); - for (let context of conectPeers) { - Network.connect(context.peerId); - } - }); - } - showLobby() { this.modalService.open(LobbyComponent, { width: 700, height: 400, left: 0, top: 400 }); } diff --git a/src/app/service/app-config.service.ts b/src/app/service/app-config.service.ts index 73c35d956..ebca75fa9 100644 --- a/src/app/service/app-config.service.ts +++ b/src/app/service/app-config.service.ts @@ -1,7 +1,6 @@ import { Injectable } from '@angular/core'; -import { EventSystem, Network } from '@udonarium/core/system'; -import { Database } from '@udonarium/database/database'; +import { EventSystem } from '@udonarium/core/system'; import * as yaml from 'js-yaml'; @@ -42,52 +41,6 @@ export class AppConfigService { initialize() { this.initAppConfig(); - this.initDatabase(); - } - - private async initDatabase() { - console.log('initDatabase...'); - if (!window.indexedDB) { - console.warn('このブラウザは安定板の IndexedDB をサポートしていません。IndexedDB の機能は利用できません。'); - return; - } - - let db = new Database(); - - let history = await db.getPeerHistory(); - history.sort((a, b) => { - if (a.timestamp < b.timestamp) return 1; - if (a.timestamp > b.timestamp) return -1; - return 0; - }); - - for (let i = 1; i < history.length; i++) { - db.deletePeerHistory(history[i].peerId); - } - - console.log('履歴: ', history); - - this.peerHistory = []; - if (history.length) { - for (let historyId of history[0].history) { - if (historyId !== history[0].peerId) { - this.peerHistory.push(historyId); - } - } - } - console.log('最終履歴: ', this.peerHistory); - - EventSystem.register(this) - .on('CONNECT_PEER', -1000, () => { - console.log('AppConfigService CONNECT_PEER', Network.peerIds); - if (!this.isOpen) { - this.isOpen = true; - } - db.addPeerHistory(Network.peerId, Network.peerIds); - }) - .on('DISCONNECT_PEER', -1000, () => { - console.log('AppConfigService DISCONNECT_PEER', Network.peerIds); - }); } private async initAppConfig() { From 3cabf0a71e03f76db310a6bb5998b61e46a54335 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 19 Feb 2022 01:49:48 +0900 Subject: [PATCH 076/161] =?UTF-8?q?feat:=20Database=E3=82=AF=E3=83=A9?= =?UTF-8?q?=E3=82=B9=E3=82=92=E6=B1=8E=E7=94=A8=E7=9A=84=E3=81=AAKey-Value?= =?UTF-8?q?=E3=82=B9=E3=83=88=E3=82=A2=E3=81=A8=E3=81=97=E3=81=A6=E5=88=A9?= =?UTF-8?q?=E7=94=A8=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E6=94=B9=E4=BF=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/database/database.ts | 275 ++++++++++++++--------------- 1 file changed, 131 insertions(+), 144 deletions(-) diff --git a/src/app/class/database/database.ts b/src/app/class/database/database.ts index ad204a23d..32d6e840a 100644 --- a/src/app/class/database/database.ts +++ b/src/app/class/database/database.ts @@ -1,173 +1,160 @@ -import { PromiseQueue } from '../core/system/util/promise-queue'; - -interface PeerHistory { - peerId: string, - timestamp: number, - history: string[] -} - // 試験実装中 -export class Database { - private static DB_NAME: string = 'UdonariumDataBase'; - private static VERSION: number = 1; +export class Database { + readonly version: number = 1; + readonly databaseName: string; + readonly storeName: string; - private queue: PromiseQueue = new PromiseQueue('DatabaseQueue'); - private db: IDBDatabase; + private openDBPromise: Promise; - constructor() { - this.openDB(Database.DB_NAME, Database.VERSION); + constructor(name: string) { + this.databaseName = `Udonarium-IDB-${name}`; + this.storeName = 'ObjectStore'; + this.open(); } - private openDB(dbName: string, version: number): Promise { - return this.queue.add((resolve, reject) => { - console.log('openDB'); - let request = indexedDB.open(dbName, version); - request.onerror = (event) => { - console.error(request.error, event); - if (request.error.name === 'VersionError') { - indexedDB.deleteDatabase(dbName); - this.openDB(dbName, version); - } - // request.errorCode に対して行うこと! - resolve(); - }; - request.onblocked = (event) => { - console.warn('openDB onblocked'); + async open(): Promise { + if (this.openDBPromise) return this.openDBPromise; + + let openFunc = async () => { + let request = indexedDB.open(this.databaseName, this.version); + request.onblocked = event => { + console.warn('request.onblocked'); // 他のタブがデータベースを読み込んでいる場合は、処理を進める前に // それらを閉じなければなりません。 - alert('このサイトを開いている他のタブをすべて閉じてください!'); - }; - request.onupgradeneeded = (event) => { - console.log('openDB onupgradeneeded'); - this.initializeDB(request.result); - this.createStores(); + //alert('このサイトを開いている他のタブをすべて閉じてください!'); }; - request.onsuccess = (event) => { - console.log('openDB onsuccess'); - this.initializeDB(request.result); - resolve(); + request.onupgradeneeded = event => { + console.log('request.onupgradeneeded'); + this.createObjectStore(request.result); }; - }); - } - private createStores() { - console.log('createStores'); - if (this.db.objectStoreNames.contains('PeerHistory')) { - this.db.deleteObjectStore('PeerHistory'); - } - let objectStore = this.db.createObjectStore('PeerHistory', { keyPath: 'peerId' }); - objectStore.createIndex('timestamp', 'timestamp', { unique: false }); - // データを追加する前に objectStore の作成を完了させるため、 - // transaction oncomplete を使用します。 - objectStore.transaction.oncomplete = (event) => { - console.log('createStores oncomplete'); - // 新たに作成した objectStore に値を保存します。 - /* - var customerObjectStore = db.transaction("customers", "readwrite").objectStore("customers"); - for (var i in customerData) { - customerObjectStore.add(customerData[i]); + try { + let database = await this.waitFor(request); + return this.initializeDB(database); + } catch (e) { + console.error(e); + if (request.error.name === 'VersionError') { + console.log(`recreate <${this.databaseName}>`); + try { + await this.waitFor(indexedDB.deleteDatabase(this.databaseName)); + } catch (e) { + console.warn(e); + } + return await openFunc(); + } + throw e; } - */ }; + this.openDBPromise = openFunc(); + return this.openDBPromise; } - private initializeDB(db: IDBDatabase) { - console.log('initializeDB'); + async close() { + if (!this.openDBPromise) return; + try { + let database = await this.open(); + database.close(); + this.openDBPromise = null; + } catch (e) { + console.error(e); + } + } + + private async createObjectStore(database: IDBDatabase) { + if (database.objectStoreNames.contains(this.storeName)) { + database.deleteObjectStore(this.storeName); + } + database.createObjectStore(this.storeName); + } + + private initializeDB(database: IDBDatabase): IDBDatabase { // 別のページがバージョン変更を求めた場合に、通知されるようにするためのハンドラを追加するようにしてください。 // データベースを閉じなければなりません。データベースを閉じると、別のページがデータベースをアップグレードできます。 // これを行わなければ、ユーザがタブを閉じるまでデータベースはアップグレードされません。 - db.onversionchange = (event) => { - console.warn('db.onversionchange.'); - db.close(); - alert('新しいバージョンのページが使用可能になりました。再読み込みしてください!'); + database.onversionchange = event => { + console.warn('database.onversionchange.'); + database.close(); + this.openDBPromise = null; + //alert('新しいバージョンのページが使用可能になりました。再読み込みしてください!'); }; - db.onabort = (event) => { - console.error(event); - }; - db.onerror = (event) => { - console.error(event); - }; - this.db = db; - // データベースを使用する処理 + database.onabort = database.onerror = event => console.error(event); + return database; } - addPeerHistory(myPeerId: string, otherPeerIds: string[]) { - this.queue.add((resolve, reject) => { - console.log('addPeerHistory'); - let transaction = this.db.transaction(['PeerHistory'], 'readwrite'); - let store = transaction.objectStore('PeerHistory'); - - transaction.oncomplete = (event) => { - console.log('addPeerHistory done.', 'readwrite'); - resolve(); - }; - - transaction.onerror = (event) => { - console.error(event); - resolve(); - }; - - let history: PeerHistory = { - peerId: myPeerId, - timestamp: Date.now(), - history: otherPeerIds - } - - store.put(history); - }); + async getObjectStore(mode: IDBTransactionMode = 'readonly'): Promise { + let database = await this.open(); + let transaction = database.transaction(this.storeName, mode); + return transaction.objectStore(this.storeName); } - deletePeerHistory(peerId: string) { - this.queue.add((resolve, reject) => { - let transaction = this.db.transaction(['PeerHistory'], 'readwrite'); - let store = transaction.objectStore('PeerHistory'); - transaction.oncomplete = (event) => { - console.log('addPeerHistory done.', 'readwrite'); - resolve(); - }; - - transaction.onerror = (event) => { - console.error(event); - resolve(); - }; - - store.delete(peerId); - }); + async get(key: IDBValidKey): Promise { + try { + let store = await this.getObjectStore('readonly'); + let request = store.get(key); + return await this.waitFor(request); + } catch (e) { + console.error(e); + return null; + } } - getPeerHistory(): Promise { - return this.queue.add((resolve, reject) => { - console.log('getPeerHistory'); - let transaction = this.db.transaction(['PeerHistory'], 'readonly'); - let store = transaction.objectStore('PeerHistory'); - let request = store.openCursor(); - let history: PeerHistory[] = []; + async put(key: IDBValidKey, value: T): Promise { + try { + let store = await this.getObjectStore('readwrite'); + let request = store.put(value, key); + return await this.waitFor(request); + } catch (e) { + console.error(e); + return null; + } + } - transaction.oncomplete = (event) => { - console.log('getPeerHistory done.'); - resolve(history); - }; + async delete(key: IDBValidKey): Promise { + try { + let store = await this.getObjectStore('readwrite'); + let request = store.delete(key); + return await this.waitFor(request); + } catch (e) { + console.error(e); + return null; + } + } - transaction.onerror = (event) => { - console.error(event); - resolve(history); - }; + async getAll(): Promise { + try { + let store = await this.getObjectStore('readonly'); + let request = store.getAll(); + return await this.waitFor(request); + } catch (e) { + console.error(e); + return null; + } + } - request.onerror = (event) => { - console.error(event); - resolve(history); - }; + async getAllKeys(): Promise { + try { + let store = await this.getObjectStore('readonly'); + let request = store.getAllKeys(); + return await this.waitFor(request); + } catch (e) { + console.error(e); + return null; + } + } - request.onsuccess = (event) => { - let cursor: IDBCursorWithValue = request.result; - if (cursor) { - console.log('id:' + cursor.key + ' value:', cursor.value); - history.push(cursor.value); - cursor.continue(); - } else { - console.log('Entries all displayed.'); - } - }; - }); + private waitFor(transaction: IDBTransaction): Promise + private waitFor(request: IDBRequest): Promise + private waitFor(arg: IDBTransaction | IDBRequest): Promise { + if (arg instanceof IDBTransaction) { + return new Promise((resolve, reject) => { + arg.oncomplete = event => resolve(null); + arg.onerror = arg.onabort = event => reject(arg.error); + }); + } else { + return new Promise((resolve, reject) => { + arg.onsuccess = event => resolve(arg.result); + arg.onerror = event => reject(arg.error); + }); + } } -} \ No newline at end of file +} From ea554ca88ef1aa7eabda4b06ece1b1a19fed8569 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 19 Feb 2022 15:44:36 +0900 Subject: [PATCH 077/161] =?UTF-8?q?fix:=20=E6=99=82=E5=88=BB=E5=8F=96?= =?UTF-8?q?=E5=BE=97API=E3=82=92NICT=E3=81=8B=E3=82=89WorldTimeAPI?= =?UTF-8?q?=E3=81=AB=E7=A7=BB=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit NICTのhttp/httpsによるAPIは2022/3/31で提供終了 --- src/app/service/chat-message.service.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/app/service/chat-message.service.ts b/src/app/service/chat-message.service.ts index 26a24c52b..b61dc0421 100644 --- a/src/app/service/chat-message.service.ts +++ b/src/app/service/chat-message.service.ts @@ -17,8 +17,7 @@ export class ChatMessageService { private performanceOffset: number = performance.now(); private ntpApiUrls: string[] = [ - 'https://ntp-a1.nict.go.jp/cgi-bin/json', - 'https://ntp-b1.nict.go.jp/cgi-bin/json', + 'https://worldtimeapi.org/api/ip', ]; gameType: string = ''; @@ -46,7 +45,7 @@ export class ChatMessageService { let endTime = performance.now(); let latency = (endTime - sendTime) / 2; let timeobj = jsonObj; - let st: number = timeobj.st * 1000; + let st: number = new Date(timeobj.utc_datetime).getTime(); let fixedTime = st + latency; this.timeOffset = fixedTime; this.performanceOffset = endTime; From 4f282467bfefe470999e8a579fb049bb440d5da4 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 19 Feb 2022 16:31:21 +0900 Subject: [PATCH 078/161] =?UTF-8?q?refactor:=20=E5=A4=89=E6=95=B0=E3=81=AE?= =?UTF-8?q?=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/system/network/skyway-data-connection.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/app/class/core/system/network/skyway-data-connection.ts b/src/app/class/core/system/network/skyway-data-connection.ts index 5563c9a49..cd2a23cda 100644 --- a/src/app/class/core/system/network/skyway-data-connection.ts +++ b/src/app/class/core/system/network/skyway-data-connection.ts @@ -109,9 +109,8 @@ export class SkyWayDataConnection extends EventEmitter { pos += c.byteLength; } - let decodedData = MessagePack.decode(uint8Array); - - this.emit('data', decodedData); + let decodedChank = MessagePack.decode(uint8Array); + this.emit('data', decodedChank); } private setTimeoutTimer() { From 5ba9d27c7049142e9b19e8f270878ac684e28f77 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 19 Feb 2022 17:49:49 +0900 Subject: [PATCH 079/161] =?UTF-8?q?refactor:=20fetch()=E3=82=92=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/service/app-config.service.ts | 49 +++++++-------------------- 1 file changed, 13 insertions(+), 36 deletions(-) diff --git a/src/app/service/app-config.service.ts b/src/app/service/app-config.service.ts index ebca75fa9..e7545895c 100644 --- a/src/app/service/app-config.service.ts +++ b/src/app/service/app-config.service.ts @@ -55,45 +55,22 @@ export class AppConfigService { EventSystem.trigger('LOAD_CONFIG', AppConfigService.appConfig); } - private loadYaml(): Promise { - return new Promise((resolve, reject) => { - let config = document.querySelector('script[type$="yaml"]'); - if (!config) { - console.warn('loadYaml element not found.'); - resolve(''); - return; - } + private async loadYaml(): Promise { + let config = document.querySelector('script[type$="yaml"]'); + if (!config) { + console.warn('loadYaml element not found.'); + return ''; + } - let configString = config.textContent; - let url = config.getAttribute('src'); + let url = config.getAttribute('src'); - if (url == null) { - console.warn('loadYaml url undefined.'); - resolve(configString); - return; - } + if (url == null) { + console.warn('loadYaml url undefined.'); + return config.textContent; + } - let http = new XMLHttpRequest(); - http.open('get', url, true); - http.onerror = (event) => { - console.error(event); - resolve(configString); - }; - http.onreadystatechange = (event) => { - if (http.readyState !== 4) { - return; - } - if (http.status === 200) { - console.log('loadYaml success!'); - configString = http.responseText; - } else { - console.warn('loadYaml fail...? status:' + http.status); - } - resolve(configString); - }; - console.log('loadYaml start'); - http.send(null); - }); + let response = await fetch(url); + return response.text(); } private static applyConfig(config: Object, root: Object = AppConfigService.appConfig): Object { From e2b6521d8cc21eb50ec7cb8dd47d74fabb6c3d23 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 21 Feb 2022 01:41:45 +0900 Subject: [PATCH 080/161] =?UTF-8?q?fix:=20Optional=20Chaining=E3=81=AB?= =?UTF-8?q?=E3=82=88=E3=82=8Bnull=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/service/game-object-inventory.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/service/game-object-inventory.service.ts b/src/app/service/game-object-inventory.service.ts index 8848496fc..0581fd0ac 100644 --- a/src/app/service/game-object-inventory.service.ts +++ b/src/app/service/game-object-inventory.service.ts @@ -228,8 +228,8 @@ class ObjectInventory { if (sortTag.length < 1) return objects; objects.sort((a, b) => { - let aElm = a.rootDataElement.getFirstElementByName(sortTag); - let bElm = b.rootDataElement.getFirstElementByName(sortTag); + let aElm = a.rootDataElement?.getFirstElementByName(sortTag); + let bElm = b.rootDataElement?.getFirstElementByName(sortTag); if (!aElm && !bElm) return 0; if (!bElm) return -1; if (!aElm) return 1; From 93b968e6abb720b9fe8db33da1772563df086d94 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 21 Feb 2022 01:47:13 +0900 Subject: [PATCH 081/161] =?UTF-8?q?fix:=20PeerCursor=E3=81=8C=E8=AA=A4?= =?UTF-8?q?=E3=81=A3=E3=81=A6remove()=E3=81=95=E3=82=8C=E3=82=8B=E5=95=8F?= =?UTF-8?q?=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重複して生成された接続(SkyWayDataConnection)が一本化される際、破棄された方の接続から発火するDISCONNECT_PEERイベントに反応する形で、PeerCursorが意図せずにremove()されることがある. 接続が一本化されるまで仮の待ち時間を設け、本当にremove()するべきかどうか時間差で判定する. --- src/app/class/peer-cursor.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/app/class/peer-cursor.ts b/src/app/class/peer-cursor.ts index 0f6dddc3b..f7da8985c 100644 --- a/src/app/class/peer-cursor.ts +++ b/src/app/class/peer-cursor.ts @@ -30,9 +30,12 @@ export class PeerCursor extends GameObject { EventSystem.register(this) .on('DISCONNECT_PEER', -1000, event => { if (event.data.peerId !== this.peerId) return; - PeerCursor.userIdMap.delete(this.userId); - PeerCursor.peerIdMap.delete(this.peerId); - ObjectStore.instance.remove(this); + setTimeout(() => { + if (Network.peerIds.includes(this.peerId)) return; + PeerCursor.userIdMap.delete(this.userId); + PeerCursor.peerIdMap.delete(this.peerId); + ObjectStore.instance.remove(this); + }, 30000); }); } } From dde175247132892c9097b0b65e2cef8c6cafbcf6 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sun, 6 Mar 2022 02:42:25 +0900 Subject: [PATCH 082/161] =?UTF-8?q?feat:=20Peer=E9=96=93=E3=81=AE=E9=80=9A?= =?UTF-8?q?=E4=BF=A1=E5=93=81=E8=B3=AA=E3=82=92=E8=A9=95=E4=BE=A1=E3=81=99?= =?UTF-8?q?=E3=82=8B=E6=A9=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 定期的に以下の処理を実行し、取得した値に基づく通信品質の評価を各PeerContextのPeerSessionStateに記録する. - ping計測 - WebRTCの統計情報を取得 --- .../class/core/system/network/peer-context.ts | 3 + .../core/system/network/peer-session-state.ts | 37 +++++++++ .../core/system/network/skyway-connection.ts | 29 +++++++ .../system/network/skyway-data-connection.ts | 72 +++++++++++++++++- .../system/network/skyway-stats-monitor.ts | 47 ++++++++++++ .../class/core/system/network/webrtc-stats.ts | 75 +++++++++++++++++++ 6 files changed, 261 insertions(+), 2 deletions(-) create mode 100644 src/app/class/core/system/network/peer-session-state.ts create mode 100644 src/app/class/core/system/network/skyway-stats-monitor.ts create mode 100644 src/app/class/core/system/network/webrtc-stats.ts diff --git a/src/app/class/core/system/network/peer-context.ts b/src/app/class/core/system/network/peer-context.ts index dfd7b1b46..fbaf2c94f 100644 --- a/src/app/class/core/system/network/peer-context.ts +++ b/src/app/class/core/system/network/peer-context.ts @@ -2,6 +2,7 @@ import * as lzbase62 from 'lzbase62'; import * as SHA256 from 'crypto-js/sha256'; import { base } from '../util/base-x'; +import { MutablePeerSessionState, PeerSessionGrade, PeerSessionState } from './peer-session-state'; const Base62 = base('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'); const roomIdPattern = /^(\w{6})(\w{3})(\w*)-(\w*)/i; @@ -17,6 +18,7 @@ export interface IPeerContext { readonly isOpen: boolean; readonly isRoom: boolean; readonly hasPassword: boolean; + readonly session: PeerSessionState; } export class PeerContext implements IPeerContext { @@ -28,6 +30,7 @@ export class PeerContext implements IPeerContext { digestUserId: string = ''; digestPassword: string = ''; isOpen: boolean = false; + session: MutablePeerSessionState = { grade: PeerSessionGrade.UNSPECIFIED, ping: 0, health: 0, speed: 0, description: '' }; get isRoom(): boolean { return 0 < this.roomId.length; } get hasPassword(): boolean { return 0 < this.password.length + this.digestPassword.length; } diff --git a/src/app/class/core/system/network/peer-session-state.ts b/src/app/class/core/system/network/peer-session-state.ts new file mode 100644 index 000000000..1f26d6fd1 --- /dev/null +++ b/src/app/class/core/system/network/peer-session-state.ts @@ -0,0 +1,37 @@ +export enum PeerSessionGrade { + UNSPECIFIED, + LOW, + MIDDLE, + HIGH, +} + +export interface PeerSessionState { + /** + * 接続方法の評価. `PeerSessionGrade.LOW`よりも`PeerSessionGrade.HIGH`の方がより望ましい方法で通信している事を示す. + */ + readonly grade: PeerSessionGrade; + /** + * データ送信に対する宛先からの応答時間(Round-Trip Time). 単位はms. + */ + readonly ping: number; + /** + * 接続の健康度を`[0.0, 1.0]`の区間で表現した値. 値が1.0より低い場合、通信が切断している可能性がある. + */ + readonly health: number; + /** + * 通信速度の評価を`[0.0, 1.0]`の区間で表現した値. 値が高いほど通信速度が速い. + */ + readonly speed: number; + /** + * 接続についての任意の説明. + */ + readonly description: string; +} + +export interface MutablePeerSessionState extends PeerSessionState { + grade: PeerSessionGrade; + ping: number; + health: number; + speed: number; + description: string; +} diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index 56c730c1d..4c8760a6e 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -3,7 +3,9 @@ import { MessagePack } from '../util/message-pack'; import { setZeroTimeout } from '../util/zero-timeout'; import { Connection, ConnectionCallback } from './connection'; import { PeerContext } from './peer-context'; +import { PeerSessionGrade } from './peer-session-state'; import { SkyWayDataConnection } from './skyway-data-connection'; +import { CandidateType } from './webrtc-stats'; // @types/skywayを使用すると@types/webrtcが定義エラーになるので代替定義 declare var Peer; @@ -250,6 +252,33 @@ export class SkyWayConnection implements Connection { conn.on('error', () => { this.closeDataConnection(conn); }); + conn.on('stats', () => { + let deltaTime = performance.now() - conn.timestamp; + let healthRate = deltaTime <= 10000 ? 1 : 5000 / ((deltaTime - 10000) + 5000); + let ping = healthRate < 1 ? deltaTime : conn.ping; + let pingRate = 500 / (ping + 500); + + context.session.health = healthRate; + context.session.ping = ping; + context.session.speed = pingRate * healthRate; + + switch (conn.candidateType) { + case CandidateType.HOST: + context.session.grade = PeerSessionGrade.HIGH; + break; + case CandidateType.SRFLX: + case CandidateType.PRFLX: + context.session.grade = PeerSessionGrade.MIDDLE; + break; + case CandidateType.RELAY: + context.session.grade = PeerSessionGrade.LOW; + break; + default: + context.session.grade = PeerSessionGrade.UNSPECIFIED; + break; + } + context.session.description = conn.candidateType; + }); } private closeDataConnection(conn: SkyWayDataConnection) { diff --git a/src/app/class/core/system/network/skyway-data-connection.ts b/src/app/class/core/system/network/skyway-data-connection.ts index cd2a23cda..741cd9afa 100644 --- a/src/app/class/core/system/network/skyway-data-connection.ts +++ b/src/app/class/core/system/network/skyway-data-connection.ts @@ -3,6 +3,8 @@ import { EventEmitter } from 'events'; import { MessagePack } from '../util/message-pack'; import { UUID } from '../util/uuid'; import { setZeroTimeout } from '../util/zero-timeout'; +import { SkyWayStatsMonitor } from './skyway-stats-monitor'; +import { CandidateType, WebRTCStats } from './webrtc-stats'; // @types/skywayを使用すると@types/webrtcが定義エラーになるので代替定義 declare module PeerJs { @@ -10,6 +12,11 @@ declare module PeerJs { export type DataConnection = any; } +interface Ping { + from: string; + ping: number; +}; + interface DataChank { id: string; data: Uint8Array; @@ -33,13 +40,29 @@ export class SkyWayDataConnection extends EventEmitter { get remoteId(): string { return this.conn.remoteId; } get metadata(): any { return this.conn.metadata; } + private stats: WebRTCStats; + + private _timestamp: number = performance.now(); + get timestamp(): number { return this._timestamp; } + private set timestamp(timestamp: number) { this._timestamp = timestamp }; + + private _ping: number = 0; + get ping(): number { return this._ping; } + private set ping(ping: number) { this._ping = ping }; + + private _candidateType: CandidateType = CandidateType.UNKNOWN; + get candidateType(): CandidateType { return this._candidateType; } + private set candidateType(candidateType: CandidateType) { this._candidateType = candidateType }; + constructor(private conn: PeerJs.DataConnection) { super(); conn.on('data', data => this.onData(data)); conn.on('open', () => { + this.stats = new WebRTCStats(this.getPeerConnection()); this.clearTimeoutTimer(); exchangeSkyWayImplementation(conn); this.emit('open'); + this.startMonitoring(); }); conn.on('close', () => { this.clearTimeoutTimer(); @@ -55,6 +78,7 @@ export class SkyWayDataConnection extends EventEmitter { close() { this.clearTimeoutTimer(); + this.stopMonitoring(); this.conn.close(); } @@ -78,11 +102,55 @@ export class SkyWayDataConnection extends EventEmitter { } } + getPeerConnection(): RTCPeerConnection { + return this.conn.getPeerConnection(); + } + + private startMonitoring() { + SkyWayStatsMonitor.add(this); + } + + private stopMonitoring() { + SkyWayStatsMonitor.remove(this); + } + + async updateStatsAsync() { + if (this.stats == null) return; + this.sendPing(); + await this.stats.updateAsync(); + this.candidateType = this.stats.candidateType; + this.emit('stats', this.stats); + } + + sendPing() { + let encodedData: Uint8Array = MessagePack.encode({ from: this.remoteId, ping: performance.now() }); + this.conn.send(encodedData); + } + + private receivePing(ping: Ping) { + if (ping.from === this.remoteId) { + let now = performance.now(); + let rtt = now - ping.ping; + this.ping = rtt <= this.ping ? (this.ping * 0.5) + (rtt * 0.5) : rtt; + } else { + let encodedData = MessagePack.encode(ping); + this.conn.send(encodedData); + } + } + private onData(data: ArrayBuffer) { - let chank: DataChank = MessagePack.decode(new Uint8Array(data)) as DataChank; + this.timestamp = performance.now(); + let decoded: unknown = MessagePack.decode(new Uint8Array(data)); + + let ping: Ping = decoded as Ping; + if (ping.ping != null) { + this.receivePing(ping); + return; + } + let chank: DataChank = decoded as DataChank; if (chank.id == null) { - this.emit('data', chank); + this.emit('data', decoded); return; } diff --git a/src/app/class/core/system/network/skyway-stats-monitor.ts b/src/app/class/core/system/network/skyway-stats-monitor.ts new file mode 100644 index 000000000..e1e4570f5 --- /dev/null +++ b/src/app/class/core/system/network/skyway-stats-monitor.ts @@ -0,0 +1,47 @@ +import { ResettableTimeout } from '../util/resettable-timeout'; +import { SkyWayDataConnection } from './skyway-data-connection'; + +export class SkyWayStatsMonitor { + private static updateWebRTCStatsTimer: ResettableTimeout = null; + private static monitoringConnections: Set = new Set(); + + private constructor() { } + + static add(connection: SkyWayDataConnection) { + this.monitoringConnections.add(connection); + connection.updateStatsAsync(); + this.restart(); + } + + static remove(connection: SkyWayDataConnection) { + this.monitoringConnections.delete(connection); + } + + private static restart() { + if (this.updateWebRTCStatsTimer == null) { + this.updateWebRTCStatsTimer = new ResettableTimeout(() => this.doMonitoringAsync(), this.calcIntervalTime()); + } else if (!this.updateWebRTCStatsTimer.isActive) { + this.updateWebRTCStatsTimer.reset(this.calcIntervalTime()); + } + } + + private static calcIntervalTime(): number { + let ms = 2000 + 1000 * this.monitoringConnections.size; + return Math.min(ms, 10000); + } + + private static async doMonitoringAsync() { + for (let connection of this.monitoringConnections) { + if (connection.open) { + await connection.updateStatsAsync(); + } else { + this.remove(connection); + } + } + if (this.monitoringConnections.size < 1) { + this.updateWebRTCStatsTimer = null; + return; + } + this.restart(); + } +} diff --git a/src/app/class/core/system/network/webrtc-stats.ts b/src/app/class/core/system/network/webrtc-stats.ts new file mode 100644 index 000000000..bcecb1f8e --- /dev/null +++ b/src/app/class/core/system/network/webrtc-stats.ts @@ -0,0 +1,75 @@ +export enum CandidateType { + UNKNOWN = 'unknown', + RELAY = 'relay', + PRFLX = 'prflx', + SRFLX = 'srflx', + HOST = 'host', +} + +export class WebRTCStats { + candidateType: CandidateType = CandidateType.UNKNOWN; + + constructor(private peerConnection: RTCPeerConnection) { } + + async updateAsync() { + let stats: RTCStatsReport = null; + try { + stats = await this.peerConnection.getStats(); + } catch (error) { + console.warn(error); + } + + if (stats == null) { + this.candidateType = CandidateType.UNKNOWN; + return; + } + + let candidatePairs = []; + let localCandidates = []; + let remoteCandidates = []; + + let succeededLocalCandidateIds = []; + let succeededRemoteCandidateIds = []; + let usedLocalCandidates = []; + let usedRemoteCandidates = []; + + stats.forEach(stat => { + if (0 <= stat.type.indexOf('candidate-pair')) { + candidatePairs.push(stat); + } + if (0 <= stat.type.indexOf('local-candidate')) { + localCandidates.push(stat); + } + if (0 <= stat.type.indexOf('remote-candidate')) { + remoteCandidates.push(stat); + } + }); + + candidatePairs.forEach(candidatePair => { + if (candidatePair.state === 'succeeded') { + succeededLocalCandidateIds.push(candidatePair.localCandidateId); + succeededRemoteCandidateIds.push(candidatePair.remoteCandidateId); + } + }); + + localCandidates.forEach(candidate => { + if (succeededLocalCandidateIds.includes(candidate.id)) { + usedLocalCandidates.push(candidate); + } + }); + + remoteCandidates.forEach(candidate => { + if (succeededRemoteCandidateIds.includes(candidate.id)) { + usedRemoteCandidates.push(candidate); + } + }); + + let candidateType = CandidateType.UNKNOWN; + let types: CandidateType[] = Object.values(CandidateType); + usedLocalCandidates.concat(usedRemoteCandidates).forEach(candidate => { + let index = types.indexOf(candidate.candidateType); + if (types.indexOf(candidateType) < index) candidateType = types[index]; + }); + this.candidateType = candidateType; + } +} From e39ab1fd268576d7683437d54ba5f19a08b05efc Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 19 Mar 2022 01:03:07 +0900 Subject: [PATCH 083/161] =?UTF-8?q?build:=20=E4=BE=9D=E5=AD=98=E3=83=91?= =?UTF-8?q?=E3=83=83=E3=82=B1=E3=83=BC=E3=82=B8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 2163 ++++++++++++++++++++++++++------------------- 1 file changed, 1273 insertions(+), 890 deletions(-) diff --git a/package-lock.json b/package-lock.json index a001f4ef4..3106bed1b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -69,12 +69,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1302.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.2.tgz", - "integrity": "sha512-kkydqB0PA6ZvaUgHCePoqUAzLzx+x62xOGx5z4FtIlYO9zCYHbv9q4V1jtM0ufj9PZmHCM9HNafp68hx2dcCpg==", + "version": "0.1302.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.6.tgz", + "integrity": "sha512-NztzorUMfwJeRaT7SY00Y8WSqc2lQYuF11yNoyEm7Dae3V7VZ28rW2Z9RwibP27rYQL0RjSMaz2wKITHX2vOAw==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.2.2", + "@angular-devkit/core": "13.2.6", "rxjs": "6.6.7" }, "engines": { @@ -102,15 +102,15 @@ "dev": true }, "node_modules/@angular-devkit/build-angular": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.2.2.tgz", - "integrity": "sha512-ExSaNi/TlMlqX4kk8D6Ok+cALsd5EGqwqDkLaw1B69497LNJQQPI5koeHXQNOHMjxf9pgAezQWWqlWOuKeSKsA==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.2.6.tgz", + "integrity": "sha512-Y2ojy6xbZ0kwScppcutLHBP8eW0qNOjburTISSBU/L5l/9FOeZ1E7yAreKuVu/qibZiLbSJfAhk+SLwhRHFSSQ==", "dev": true, "dependencies": { "@ampproject/remapping": "1.1.1", - "@angular-devkit/architect": "0.1302.2", - "@angular-devkit/build-webpack": "0.1302.2", - "@angular-devkit/core": "13.2.2", + "@angular-devkit/architect": "0.1302.6", + "@angular-devkit/build-webpack": "0.1302.6", + "@angular-devkit/core": "13.2.6", "@babel/core": "7.16.12", "@babel/generator": "7.16.8", "@babel/helper-annotate-as-pure": "7.16.7", @@ -121,7 +121,7 @@ "@babel/runtime": "7.16.7", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.6", - "@ngtools/webpack": "13.2.2", + "@ngtools/webpack": "13.2.6", "ansi-colors": "4.1.1", "babel-loader": "8.2.3", "babel-plugin-istanbul": "6.1.1", @@ -132,7 +132,7 @@ "core-js": "3.20.3", "critters": "0.0.16", "css-loader": "6.5.1", - "esbuild-wasm": "0.14.14", + "esbuild-wasm": "0.14.22", "glob": "7.2.0", "https-proxy-agent": "5.0.0", "inquirer": "8.2.0", @@ -140,7 +140,7 @@ "karma-source-map-support": "1.4.0", "less": "4.1.2", "less-loader": "10.2.0", - "license-webpack-plugin": "4.0.1", + "license-webpack-plugin": "4.0.2", "loader-utils": "3.2.0", "mini-css-extract-plugin": "2.5.3", "minimatch": "3.0.4", @@ -162,7 +162,7 @@ "source-map-support": "0.5.21", "stylus": "0.56.0", "stylus-loader": "6.2.0", - "terser": "5.10.0", + "terser": "5.11.0", "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.3.1", @@ -178,7 +178,7 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.14.14" + "esbuild": "0.14.22" }, "peerDependencies": { "@angular/compiler-cli": "^13.0.0", @@ -230,12 +230,12 @@ "dev": true }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1302.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1302.2.tgz", - "integrity": "sha512-QgeJSJt52ZYigw67i3MChuSyp1FUO1LbrzeMoQLdScAPPjnivODz4TTz5bNMrhnP6NoPUpzy6QKOWR1j/TFOHw==", + "version": "0.1302.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1302.6.tgz", + "integrity": "sha512-TYEh2n9tPe932rEIgdiSpojOqtDppW2jzb/empVqCkLF7WUZsXKvTanttZC34L6R2VD6SAGWhb6JDg75ghUVYA==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1302.2", + "@angular-devkit/architect": "0.1302.6", "rxjs": "6.6.7" }, "engines": { @@ -267,9 +267,9 @@ "dev": true }, "node_modules/@angular-devkit/core": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.2.2.tgz", - "integrity": "sha512-qH0Vu8qwGD5uhmE8PtePA1lm7xL3JtbBCcrQICmLqD6njLDVb2N5pbdDXeiXDlWGUoIRHUhu6Uw4AsY8zXP/FA==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.2.6.tgz", + "integrity": "sha512-8h2mWdBTN/dYwZuzKMg2IODlOWMdbJcpQG4XVrkk9ejCPP+3aX5Aa3glCe/voN6eBNiRfs8YDM0jxmpN2aWVtg==", "dev": true, "dependencies": { "ajv": "8.9.0", @@ -312,12 +312,12 @@ "dev": true }, "node_modules/@angular-devkit/schematics": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.2.2.tgz", - "integrity": "sha512-kXPLTkSzRCeBX+SYUkC6MIrWCkH90Y8hVegR9R5n2YqhCJyE+dZlcx4d/8d3VHtZlzAs0LL8BU+liC3wMIagjA==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.2.6.tgz", + "integrity": "sha512-mPgSqdnZRuPSMeUA+T+mwVCrq2yhXpcYm1/Rjbhy09CyHs4wSrFv21WHCrE6shlvXpcmwr0n+I0DIeagAPmjUA==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.2.2", + "@angular-devkit/core": "13.2.6", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -348,9 +348,9 @@ "dev": true }, "node_modules/@angular/animations": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.2.1.tgz", - "integrity": "sha512-Wvuu5OU0T5BlavE0IQohuXWiQUHHmrrkhZSxqatsSno2v1au5u/SJGSGo4RojBKsSm627Z/grLjOT6YA21CObA==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.2.6.tgz", + "integrity": "sha512-DrjpKo68uR3lSLQQXosoTCbjKQS6IKRCpR14E2t8fo0AX8i2hkB8je4SrhdCyB7FgFN7l2kgUYo4Qa8+BOB+aA==", "dependencies": { "tslib": "^2.3.0" }, @@ -358,20 +358,20 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "13.2.1" + "@angular/core": "13.2.6" } }, "node_modules/@angular/cli": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.2.2.tgz", - "integrity": "sha512-i9pBm5bVWnabwrsw1Ut84BqGu75+Nol6sReh8NTs7zUdCKNC00kqFBZg/1nGGw0IwL3Q+W7rJMgZ9q0qAtFTXg==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.2.6.tgz", + "integrity": "sha512-xIjEaQI5sWemXXc7GXLm4u9UL5sjtrQL/y1PJvvk/Jsa8+kIT+MutOfZfC7zcdAh9fqHd8mokH3guFV8BJdFxA==", "dev": true, "hasInstallScript": true, "dependencies": { - "@angular-devkit/architect": "0.1302.2", - "@angular-devkit/core": "13.2.2", - "@angular-devkit/schematics": "13.2.2", - "@schematics/angular": "13.2.2", + "@angular-devkit/architect": "0.1302.6", + "@angular-devkit/core": "13.2.6", + "@angular-devkit/schematics": "13.2.6", + "@schematics/angular": "13.2.6", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.3", @@ -398,9 +398,9 @@ } }, "node_modules/@angular/common": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.2.1.tgz", - "integrity": "sha512-LQgN4thG0NGPG+orKg7/2JiYCKjtZ1T2NKFwRt3dHYbNiHdwNCxkwZPqW1BMSpN6la/QB6aLTkuMV52t2S8FmA==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.2.6.tgz", + "integrity": "sha512-t4XRb9db4UeRcPs5aHNtGuXRKSvGBlTEr0zzSeoKzHD9TCaO4dSDISh9obS9hThaPuBmPKRUHN5KE1HFmqnSHg==", "dependencies": { "tslib": "^2.3.0" }, @@ -408,14 +408,14 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "13.2.1", + "@angular/core": "13.2.6", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.2.1.tgz", - "integrity": "sha512-CI3EFP8GwpTe+MFoEntWG4LQbq7rfCjP9ZVkKF1F5enA+CPZjYFGQ5qog3D5hnntMeQBU2iw7ZHNVlVfsmfTIQ==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.2.6.tgz", + "integrity": "sha512-LHU29J2/c/03WHkwtzUSElTBsXbzkKdYARodnNfsFdLPsWhyvzO3cqlcZYteFJxEy3dVH+ZrYDjqQ9Sp17aIgA==", "dependencies": { "tslib": "^2.3.0" }, @@ -424,16 +424,16 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.2.1.tgz", - "integrity": "sha512-sUJVdHxX1JtUu5qsM2g+l8xtVlfTPcQiIgD3UU5iYT6Twzhs3g5iuqD+C0x5US/x45eXiL87fvs8XW/kNSDfwQ==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.2.6.tgz", + "integrity": "sha512-QtlLKj3m6a2nkewFxhg+a3tQ2gEIBzMfI2c1laWUfAfJJ56phj79k8Z/kf2HQxypphWixyTK+ugpTlMdvvOquA==", "dev": true, "dependencies": { - "@babel/core": "^7.8.6", + "@babel/core": "^7.17.2", "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", "dependency-graph": "^0.11.0", - "magic-string": "^0.25.0", + "magic-string": "^0.26.0", "reflect-metadata": "^0.1.2", "semver": "^7.0.0", "sourcemap-codec": "^1.4.8", @@ -449,14 +449,100 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "13.2.1", + "@angular/compiler": "13.2.6", "typescript": ">=4.4.2 <4.6" } }, + "node_modules/@angular/compiler-cli/node_modules/@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.7.tgz", + "integrity": "sha512-djHlEfFHnSnTAcPb7dATbiM5HxGOP98+3JLBZtjRb5I7RXrw7kFRoG2dXM8cm3H+o11A8IFH/uprmJpwFynRNQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.7", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.7", + "@babel/parser": "^7.17.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/magic-string": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", + "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular/compiler-cli/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@angular/core": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.2.1.tgz", - "integrity": "sha512-+V/ZUuMqXDXM5Moo9wWbkM9O55POqAyP0oECoYvVStCDLDXGfWGOSysJIbsp07dsoEx8/kmKWV7Q7ZdHMTVvJg==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.2.6.tgz", + "integrity": "sha512-ctWsxuaSO3d3afLW+wkJSyiEIA2uhaTKNps9x5wz/oZJDaUDYVa4PM4x7/UHn2bXzBjXjN9LSW8h9F31iwmcTg==", "dependencies": { "tslib": "^2.3.0" }, @@ -469,9 +555,9 @@ } }, "node_modules/@angular/forms": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.2.1.tgz", - "integrity": "sha512-3bTxNRmamN6+0eNdd+kYk2XDfPxXYeAIvRlm8MFM9/buP/tlcCusAvnkHABUJ9wX/2kezOXMOkWtO9LfyyNLIg==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.2.6.tgz", + "integrity": "sha512-3IikvNtO0RBiGb2AWl8aYcE3ivXHPIJz+JOn9Wz9XXSkYx75D3GjuJlz+fVIgz+7Q7tJuS6Q2E5qat/ldeDmoA==", "dependencies": { "tslib": "^2.3.0" }, @@ -479,16 +565,16 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.2.1", - "@angular/core": "13.2.1", - "@angular/platform-browser": "13.2.1", + "@angular/common": "13.2.6", + "@angular/core": "13.2.6", + "@angular/platform-browser": "13.2.6", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/platform-browser": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.2.1.tgz", - "integrity": "sha512-9idmGsWqLMhslMnG6+GojNO7L2IRM0DOeUlTo/x28zTedg6f7j2wRJ+ZxfTVRhf75Y3NXOjJ0bfKnLkHOzA+Aw==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.2.6.tgz", + "integrity": "sha512-Gc/1TqysW+P+K3NeQihmHWs4KF1mjJT20s06r+YcETnPP11uPk+UxQl7gJNsDV587DYO/wT3oISXVpRw4UJhdQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -496,9 +582,9 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "13.2.1", - "@angular/common": "13.2.1", - "@angular/core": "13.2.1" + "@angular/animations": "13.2.6", + "@angular/common": "13.2.6", + "@angular/core": "13.2.6" }, "peerDependenciesMeta": { "@angular/animations": { @@ -507,9 +593,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.2.1.tgz", - "integrity": "sha512-1kCm3TQXY2jWnyrQo3yPb+lZOSzAOtLYvDo0GJ5CggkCCYoVUMj3Iie2K60qcJ8RUd11JNHAed2yvrtwgIm+jA==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.2.6.tgz", + "integrity": "sha512-m77+pzwZw+4kiRhxzrj1kE3N1K82I8Xt+vEBKSL2Xv42hCX0T37erC6KlztFEDj4A68s5+/0C5vfwhEiDcr/Cw==", "dependencies": { "tslib": "^2.3.0" }, @@ -517,16 +603,16 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.2.1", - "@angular/compiler": "13.2.1", - "@angular/core": "13.2.1", - "@angular/platform-browser": "13.2.1" + "@angular/common": "13.2.6", + "@angular/compiler": "13.2.6", + "@angular/core": "13.2.6", + "@angular/platform-browser": "13.2.6" } }, "node_modules/@angular/router": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.2.1.tgz", - "integrity": "sha512-+UkzW1ODV8GgL2ft6eMmJKYl4rqw6iwh3y5IEenF52X8zmnjjR0/ts/86FmaCfnpaE5S6hwnsopin9LBYVbVTQ==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.2.6.tgz", + "integrity": "sha512-dA9vL4mPLp+iNegzuvm9FaEWirFI2ZK3WQgbdoxoIpneym+BxRTkNDzPcvEaqfUf7eDGRBqlWakFDrd+H2QEbg==", "dependencies": { "tslib": "^2.3.0" }, @@ -534,9 +620,9 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.2.1", - "@angular/core": "13.2.1", - "@angular/platform-browser": "13.2.1", + "@angular/common": "13.2.6", + "@angular/core": "13.2.6", + "@angular/platform-browser": "13.2.6", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -559,9 +645,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -664,12 +750,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.7", "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" @@ -691,9 +777,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.17.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz", - "integrity": "sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ==", + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", + "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", @@ -818,12 +904,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", - "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -842,19 +928,19 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -912,12 +998,12 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -981,13 +1067,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", - "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.7.tgz", + "integrity": "sha512-TKsj9NkjJfTBxM7Phfy7kv6yYc4ZcOo+AaWGqQOKTPDOmcGkIFb5xNA746eKisQkm4yavUYh4InYM9S+VnO01w==", "dev": true, "dependencies": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", + "@babel/traverse": "^7.17.3", "@babel/types": "^7.17.0" }, "engines": { @@ -1009,9 +1095,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", - "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.7.tgz", + "integrity": "sha512-bm3AQf45vR4gKggRfvJdYJ0gFLoCbsPxiFLSH6hTVYABptNHY6l9NrhnucVjQ/X+SPtLANT9lc0fFhikj+VBRA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1086,12 +1172,12 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", - "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.6", "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, @@ -1199,12 +1285,12 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", - "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.0", "@babel/helper-compilation-targets": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", @@ -1577,9 +1663,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", - "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" @@ -1718,14 +1804,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", - "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz", + "integrity": "sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -2152,18 +2238,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", - "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", + "@babel/generator": "^7.17.3", "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-function-name": "^7.16.7", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.0", + "@babel/parser": "^7.17.3", "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" @@ -2173,9 +2259,9 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", - "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", "dev": true, "dependencies": { "@babel/types": "^7.17.0", @@ -2208,6 +2294,30 @@ "node": ">=6.9.0" } }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", @@ -2218,9 +2328,9 @@ } }, "node_modules/@gar/promisify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", - "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { @@ -2271,18 +2381,34 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz", - "integrity": "sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", "dev": true, "engines": { "node": ">=6.0.0" } }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@ngtools/webpack": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.2.2.tgz", - "integrity": "sha512-BkykqIIJgSllNT6f+8IoZtJaI8uKdq62LteoWMMtvAxXErqRLN6CcDxPWjP8tfeEKeCYZ41ueZwNK5V05SsCIg==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.2.6.tgz", + "integrity": "sha512-N8SvRV91+/57TcAfbghc0k0tKCukw/7KqbDaLPAQTGFekJ4xMGT3elMzOyBXTH3Hvp5HL8/hiBt2tG04qiMf+w==", "dev": true, "engines": { "node": "^12.20.0 || ^14.15.0 || >=16.10.0", @@ -2331,16 +2457,13 @@ } }, "node_modules/@npmcli/fs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.0.tgz", - "integrity": "sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", "dev": true, "dependencies": { "@gar/promisify": "^1.0.1", "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" } }, "node_modules/@npmcli/git": { @@ -2431,13 +2554,13 @@ } }, "node_modules/@schematics/angular": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.2.2.tgz", - "integrity": "sha512-LfTtu82I7K+BoSzSXV8gA5+ARhtOtOi/qY0uj2782/xzpe+zCbbftgc6MHiSx/a3KO7IStDwf7G6mjqas0v+4g==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.2.6.tgz", + "integrity": "sha512-8NzHMX9+FSgaB0lJYxlTJv9OcBuolwZJqo9M/yX3RPSqSHghA33jWwgVbV551hBJOpbVEePerG1DQkIC99DXKA==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.2.2", - "@angular-devkit/schematics": "13.2.2", + "@angular-devkit/core": "13.2.6", + "@angular-devkit/schematics": "13.2.6", "jsonc-parser": "3.0.0" }, "engines": { @@ -2521,9 +2644,9 @@ "dev": true }, "node_modules/@types/crypto-js": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.0.tgz", - "integrity": "sha512-DCFfy/vh2lG6qHSGezQ+Sn2Ulf/1Mx51dqOdmOKyW5nMK3maLlxeS3onC7r212OnBM2pBR95HkAmAjjF08YkxQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA==", "dev": true }, "node_modules/@types/eslint": { @@ -2597,9 +2720,9 @@ } }, "node_modules/@types/jasmine": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.3.tgz", - "integrity": "sha512-SWyMrjgdAUHNQmutvDcKablrJhkDLy4wunTme8oYLjKp41GnHGxMRXr2MQMvy/qy8H3LdzwQk9gH4hZ6T++H8g==", + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.4.tgz", + "integrity": "sha512-7UAoOBYJpaZKmpJ8esMUIMl6pSdReliPQjviOOikWdQ7eVr4Hq8YbpeXyfXFKflZv8ymDFhYdTjVabbP2s4K4Q==", "dev": true }, "node_modules/@types/jasminewd2": { @@ -2618,9 +2741,9 @@ "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz", + "integrity": "sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A==", "dev": true }, "node_modules/@types/jszip": { @@ -2649,9 +2772,9 @@ } }, "node_modules/@types/node": { - "version": "12.20.43", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.43.tgz", - "integrity": "sha512-HCfJdaYqJX3BCzeihgZrD7b85Cu05OC/GVJ4kEYIflwUs4jbnUlLLWoq7hw1LBcdvUyehO+gr6P5JQ895/2ZfA==", + "version": "12.20.47", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.47.tgz", + "integrity": "sha512-BzcaRsnFuznzOItW1WpQrDHM7plAa7GIDMZ6b5pnMbkqEtM/6WCOhvZar39oeMQP79gwvFUWjjptE7/KGcNqFg==", "dev": true }, "node_modules/@types/pako": { @@ -2719,9 +2842,9 @@ "dev": true }, "node_modules/@types/ws": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", - "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", "dev": true, "dependencies": { "@types/node": "*" @@ -2977,9 +3100,9 @@ } }, "node_modules/agentkeepalive": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.0.tgz", - "integrity": "sha512-0PhAp58jZNw13UJv7NVdTGb0ZcghHUb3DrZ046JiiJY/BOaTTpbwdHq2VObPCBV8M2GPh7sgrJ3AQ8Ey468LJw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dev": true, "dependencies": { "debug": "^4.1.0", @@ -3125,16 +3248,16 @@ "dev": true }, "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", "dev": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16" } }, "node_modules/are-we-there-yet/node_modules/readable-stream": { @@ -3225,14 +3348,24 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", - "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==", + "version": "10.4.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", + "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], "dependencies": { - "browserslist": "^4.19.1", - "caniuse-lite": "^1.0.30001297", - "fraction.js": "^4.1.2", + "browserslist": "^4.20.2", + "caniuse-lite": "^1.0.30001317", + "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" @@ -3243,10 +3376,6 @@ "engines": { "node": "^10 || ^12 || >=14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": "^8.1.0" } @@ -3411,9 +3540,9 @@ "dev": true }, "node_modules/bcdice": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.5.0.tgz", - "integrity": "sha512-GTYaB5767Li2FjV1ubGityv2KZSkKJ0phM6M1/+Gr1GHMEZSB/Iy+kV2qe1unXVyHqBb73iLaCirIpFtpiyUdQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.5.1.tgz", + "integrity": "sha512-HJ8kndQmCezJHB2Lgqqg0h7q/KTk/IxizCSmu6sRvikwadtCvVFKIJTNIOfLk/kBr8i4aF1f3M2iVogTjKqTRA==", "dependencies": { "lodash": "^4.17.20", "source-map-support": "^0.5.19" @@ -3492,20 +3621,20 @@ } }, "node_modules/body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", "dev": true, "dependencies": { - "bytes": "3.1.1", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", "depd": "~1.1.2", "http-errors": "1.8.1", "iconv-lite": "0.4.24", "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", + "qs": "6.9.7", + "raw-body": "2.4.3", "type-is": "~1.6.18" }, "engines": { @@ -3570,15 +3699,25 @@ } }, "node_modules/browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", "escalade": "^3.1.1", - "node-releases": "^2.0.1", + "node-releases": "^2.0.2", "picocolors": "^1.0.0" }, "bin": { @@ -3586,10 +3725,6 @@ }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/buffer": { @@ -3634,9 +3769,9 @@ "dev": true }, "node_modules/bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "engines": { "node": ">= 0.8" @@ -3703,9 +3838,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001309", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001309.tgz", - "integrity": "sha512-Pl8vfigmBXXq+/yUz1jUwULeq9xhMJznzdc/xwl4WclDAuebcTHVefpz8lE/bMI+UN7TOkSSe7B7RnZd6+dzjA==", + "version": "1.0.30001317", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001317.tgz", + "integrity": "sha512-xIZLh8gBm4dqNX0gkzrBeyI86J2eCjWzYAs40q88smG844YIrN4tVQl/RhquHvKEKImWWFIVh1Lxe5n1G/N+GQ==", "dev": true, "funding": { "type": "opencollective", @@ -3895,15 +4030,6 @@ "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -4171,9 +4297,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.0.tgz", - "integrity": "sha512-OSXseNPSK2OPJa6GdtkMz/XxeXx8/CJvfhQWTqd6neuUraujcL4jVsjkLQz1OWnax8xVQJnRPe0V2jqNWORA+A==", + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", + "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", "dev": true, "dependencies": { "browserslist": "^4.19.1", @@ -4495,9 +4621,9 @@ "dev": true }, "node_modules/date-format": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.3.tgz", - "integrity": "sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.5.tgz", + "integrity": "sha512-zBhRiN/M0gDxUoM2xRtzTjJzSg0XEi1ofYpF84PfXeS3hN2PsGxmc7jw3DNQtFlimRbMmob5FC3G0cJq6jQQpw==", "dev": true, "engines": { "node": ">=4.0" @@ -4801,9 +4927,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.66", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.66.tgz", - "integrity": "sha512-f1RXFMsvwufWLwYUxTiP7HmjprKXrqEWHiQkjAYa9DJeVIlZk5v8gBGcaV+FhtXLly6C1OTVzQY+2UQrACiLlg==", + "version": "1.4.85", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.85.tgz", + "integrity": "sha512-K9AsQ41WS2bjZUFpRWfvaS4RjEcRCamEkBJN1Z1TQILBfP1H8QnJ9ti0wiLiMv0sRjX3EHKzgs9jDnmGFx2jXg==", "dev": true }, "node_modules/emoji-regex": { @@ -4854,9 +4980,9 @@ } }, "node_modules/engine.io": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.2.tgz", - "integrity": "sha512-v/7eGHxPvO2AWsksyx2PUsQvBafuvqs0jJJQ0FdmJG1b9qIvgSbqDRGwNhfk2XHaTTbTXiC4quRE8Q9nRjsrQQ==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz", + "integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -4867,7 +4993,7 @@ "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.0.0", + "engine.io-parser": "~5.0.3", "ws": "~8.2.3" }, "engines": { @@ -4887,9 +5013,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz", - "integrity": "sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -4963,40 +5089,44 @@ "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=" }, "node_modules/esbuild": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.14.tgz", - "integrity": "sha512-aiK4ddv+uui0k52OqSHu4xxu+SzOim7Rlz4i25pMEiC8rlnGU0HJ9r+ZMfdWL5bzifg+nhnn7x4NSWTeehYblg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.22.tgz", + "integrity": "sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA==", "dev": true, "hasInstallScript": true, "optional": true, "bin": { "esbuild": "bin/esbuild" }, + "engines": { + "node": ">=12" + }, "optionalDependencies": { - "esbuild-android-arm64": "0.14.14", - "esbuild-darwin-64": "0.14.14", - "esbuild-darwin-arm64": "0.14.14", - "esbuild-freebsd-64": "0.14.14", - "esbuild-freebsd-arm64": "0.14.14", - "esbuild-linux-32": "0.14.14", - "esbuild-linux-64": "0.14.14", - "esbuild-linux-arm": "0.14.14", - "esbuild-linux-arm64": "0.14.14", - "esbuild-linux-mips64le": "0.14.14", - "esbuild-linux-ppc64le": "0.14.14", - "esbuild-linux-s390x": "0.14.14", - "esbuild-netbsd-64": "0.14.14", - "esbuild-openbsd-64": "0.14.14", - "esbuild-sunos-64": "0.14.14", - "esbuild-windows-32": "0.14.14", - "esbuild-windows-64": "0.14.14", - "esbuild-windows-arm64": "0.14.14" + "esbuild-android-arm64": "0.14.22", + "esbuild-darwin-64": "0.14.22", + "esbuild-darwin-arm64": "0.14.22", + "esbuild-freebsd-64": "0.14.22", + "esbuild-freebsd-arm64": "0.14.22", + "esbuild-linux-32": "0.14.22", + "esbuild-linux-64": "0.14.22", + "esbuild-linux-arm": "0.14.22", + "esbuild-linux-arm64": "0.14.22", + "esbuild-linux-mips64le": "0.14.22", + "esbuild-linux-ppc64le": "0.14.22", + "esbuild-linux-riscv64": "0.14.22", + "esbuild-linux-s390x": "0.14.22", + "esbuild-netbsd-64": "0.14.22", + "esbuild-openbsd-64": "0.14.22", + "esbuild-sunos-64": "0.14.22", + "esbuild-windows-32": "0.14.22", + "esbuild-windows-64": "0.14.22", + "esbuild-windows-arm64": "0.14.22" } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.14.tgz", - "integrity": "sha512-be/Uw6DdpQiPfula1J4bdmA+wtZ6T3BRCZsDMFB5X+k0Gp8TIh9UvmAcqvKNnbRAafSaXG3jPCeXxDKqnc8hFQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz", + "integrity": "sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ==", "cpu": [ "arm64" ], @@ -5004,12 +5134,15 @@ "optional": true, "os": [ "android" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.14.tgz", - "integrity": "sha512-BEexYmjWafcISK8cT6O98E3TfcLuZL8DKuubry6G54n2+bD4GkoRD6HYUOnCkfl2p7jodA+s4369IjSFSWjtHg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.22.tgz", + "integrity": "sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw==", "cpu": [ "x64" ], @@ -5017,12 +5150,15 @@ "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.14.tgz", - "integrity": "sha512-tnBKm41pDOB1GtZ8q/w26gZlLLRzVmP8fdsduYjvM+yFD7E2DLG4KbPAqFMWm4Md9B+DitBglP57FY7AznxbTg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.22.tgz", + "integrity": "sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw==", "cpu": [ "arm64" ], @@ -5030,12 +5166,15 @@ "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.14.tgz", - "integrity": "sha512-Q9Rx6sgArOHalQtNwAaIzJ6dnQ8A+I7f/RsQsdkS3JrdzmnlFo8JEVofTmwVQLoIop7OKUqIVOGP4PoQcwfVMA==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.22.tgz", + "integrity": "sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A==", "cpu": [ "x64" ], @@ -5043,12 +5182,15 @@ "optional": true, "os": [ "freebsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.14.tgz", - "integrity": "sha512-TJvq0OpLM7BkTczlyPIphcvnwrQwQDG1HqxzoYePWn26SMUAlt6wrLnEvxdbXAvNvDLVzG83kA+JimjK7aRNBA==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.22.tgz", + "integrity": "sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ==", "cpu": [ "arm64" ], @@ -5056,12 +5198,15 @@ "optional": true, "os": [ "freebsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-32": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.14.tgz", - "integrity": "sha512-h/CrK9Baimt5VRbu8gqibWV7e1P9l+mkanQgyOgv0Ng3jHT1NVFC9e6rb1zbDdaJVmuhWX5xVliUA5bDDCcJeg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.22.tgz", + "integrity": "sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg==", "cpu": [ "ia32" ], @@ -5069,12 +5214,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.14.tgz", - "integrity": "sha512-IC+wAiIg/egp5OhQp4W44D9PcBOH1b621iRn1OXmlLzij9a/6BGr9NMIL4CRwz4j2kp3WNZu5sT473tYdynOuQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.22.tgz", + "integrity": "sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg==", "cpu": [ "x64" ], @@ -5082,12 +5230,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.14.tgz", - "integrity": "sha512-gxpOaHOPwp7zSmcKYsHrtxabScMqaTzfSQioAMUaB047YiMuDBzqVcKBG8OuESrYkGrL9DDljXr/mQNg7pbdaQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.22.tgz", + "integrity": "sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g==", "cpu": [ "arm" ], @@ -5095,12 +5246,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.14.tgz", - "integrity": "sha512-6QVul3RI4M5/VxVIRF/I5F+7BaxzR3DfNGoqEVSCZqUbgzHExPn+LXr5ly1C7af2Kw4AHpo+wDqx8A4ziP9avw==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.22.tgz", + "integrity": "sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A==", "cpu": [ "arm64" ], @@ -5108,12 +5262,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.14.tgz", - "integrity": "sha512-4Jl5/+xoINKbA4cesH3f4R+q0vltAztZ6Jm8YycS8lNhN1pgZJBDxWfI6HUMIAdkKlIpR1PIkA9aXQgZ8sxFAg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.22.tgz", + "integrity": "sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ==", "cpu": [ "mips64el" ], @@ -5121,12 +5278,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.14.tgz", - "integrity": "sha512-BitW37GxeebKxqYNl4SVuSdnIJAzH830Lr6Mkq3pBHXtzQay0vK+IeOR/Ele1GtNVJ+/f8wYM53tcThkv5SC5w==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.22.tgz", + "integrity": "sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng==", "cpu": [ "ppc64" ], @@ -5134,12 +5294,31 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.22.tgz", + "integrity": "sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.14.tgz", - "integrity": "sha512-vLj6p76HOZG3wfuTr5MyO3qW5iu8YdhUNxuY+tx846rPo7GcKtYSPMusQjeVEfZlJpSYoR+yrNBBxq+qVF9zrw==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.22.tgz", + "integrity": "sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw==", "cpu": [ "s390x" ], @@ -5147,12 +5326,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.14.tgz", - "integrity": "sha512-fn8looXPQhpVqUyCBWUuPjesH+yGIyfbIQrLKG05rr1Kgm3rZD/gaYrd3Wpmf5syVZx70pKZPvdHp8OTA+y7cQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.22.tgz", + "integrity": "sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA==", "cpu": [ "x64" ], @@ -5160,12 +5342,15 @@ "optional": true, "os": [ "netbsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.14.tgz", - "integrity": "sha512-HdAnJ399pPff3SKbd8g+P4o5znseni5u5n5rJ6Z7ouqOdgbOwHe2ofZbMow17WMdNtz1IyOZk2Wo9Ve6/lZ4Rg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.22.tgz", + "integrity": "sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA==", "cpu": [ "x64" ], @@ -5173,12 +5358,15 @@ "optional": true, "os": [ "openbsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.14.tgz", - "integrity": "sha512-bmDHa99ulsGnYlh/xjBEfxoGuC8CEG5OWvlgD+pF7bKKiVTbtxqVCvOGEZeoDXB+ja6AvHIbPxrEE32J+m5nqQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.22.tgz", + "integrity": "sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g==", "cpu": [ "x64" ], @@ -5186,24 +5374,27 @@ "optional": true, "os": [ "sunos" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-wasm": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.14.tgz", - "integrity": "sha512-qTjK4MWnYtQHCMGg2qDUqeFYXfVvYq5qJkQTIsOV4VZCknoYePVaDTG9ygEB9Ct0kc0DWs7IrS6Ja+GjY62Kzw==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.22.tgz", + "integrity": "sha512-FOSAM29GN1fWusw0oLMv6JYhoheDIh5+atC72TkJKfIUMID6yISlicoQSd9gsNSFsNBvABvtE2jR4JB1j4FkFw==", "dev": true, "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/esbuild-windows-32": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.14.tgz", - "integrity": "sha512-6tVooQcxJCNenPp5GHZBs/RLu31q4B+BuF4MEoRxswT+Eq2JGF0ZWDRQwNKB8QVIo3t6Svc5wNGez+CwKNQjBg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.22.tgz", + "integrity": "sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg==", "cpu": [ "ia32" ], @@ -5211,12 +5402,15 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-windows-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.14.tgz", - "integrity": "sha512-kl3BdPXh0/RD/dad41dtzj2itMUR4C6nQbXQCyYHHo4zoUoeIXhpCrSl7BAW1nv5EFL8stT1V+TQVXGZca5A2A==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.22.tgz", + "integrity": "sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw==", "cpu": [ "x64" ], @@ -5224,12 +5418,15 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.14.tgz", - "integrity": "sha512-dCm1wTOm6HIisLanmybvRKvaXZZo4yEVrHh1dY0v582GThXJOzuXGja1HIQgV09RpSHYRL3m4KoUBL00l6SWEg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.22.tgz", + "integrity": "sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg==", "cpu": [ "arm64" ], @@ -5237,7 +5434,10 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/escalade": { "version": "3.1.1", @@ -5387,17 +5587,17 @@ } }, "node_modules/express": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", - "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", "dev": true, "dependencies": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.1", + "body-parser": "1.19.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.1", + "cookie": "0.4.2", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", @@ -5412,7 +5612,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.6", + "qs": "6.9.7", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.17.2", @@ -5433,15 +5633,6 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, - "node_modules/express/node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -5648,9 +5839,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", "dev": true, "funding": [ { @@ -5677,9 +5868,9 @@ } }, "node_modules/fraction.js": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.3.tgz", - "integrity": "sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", "dev": true, "engines": { "node": "*" @@ -5699,9 +5890,9 @@ } }, "node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -5757,20 +5948,19 @@ "dev": true }, "node_modules/gauge": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz", - "integrity": "sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.3.tgz", + "integrity": "sha512-ICw1DhAwMtb22rYFwEHgJcx1JCwJGv3x6G0OQUq56Nge+H4Q8JEwr8iveS0XFlsUNSI67F5ffMGK25bK4Pmskw==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", "has-unicode": "^2.0.1", - "signal-exit": "^3.0.0", + "signal-exit": "^3.0.7", "string-width": "^4.2.3", "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" + "wide-align": "^1.1.5" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16" @@ -5938,9 +6128,9 @@ } }, "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, "engines": { "node": ">= 0.4" @@ -6058,9 +6248,9 @@ } }, "node_modules/http-parser-js": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", - "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", "dev": true }, "node_modules/http-proxy": { @@ -6092,9 +6282,9 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz", - "integrity": "sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz", + "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==", "dev": true, "dependencies": { "@types/http-proxy": "^1.17.8", @@ -6790,9 +6980,9 @@ } }, "node_modules/jasmine-core": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.0.0.tgz", - "integrity": "sha512-tq24OCqHElgU9KDpb/8O21r1IfotgjIzalfW9eCmRR40LZpvwXT68iariIyayMwi0m98RDt16aljdbwK0sBMmQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.0.1.tgz", + "integrity": "sha512-w+JDABxQCkxbGGxg+a2hUVZyqUS2JKngvIyLGu/xiw2ZwgsoSB0iiecLQsQORSeaKQ6iGrCyWG86RfNDuoA7Lg==", "dev": true }, "node_modules/jest-worker": { @@ -6946,15 +7136,15 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "node_modules/karma": { - "version": "6.3.15", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.15.tgz", - "integrity": "sha512-4O5X6zVFdmwo/fgjRN84fPG3IvaiOxOjIeZBwBrQYz4nIyGqlF8Wm7C1Hr7idQ9NHgnvJM+LSjZwS1C+qALMGw==", + "version": "6.3.17", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.17.tgz", + "integrity": "sha512-2TfjHwrRExC8yHoWlPBULyaLwAFmXmxQrcuFImt/JsAsSZu1uOWTZ1ZsWjqQtWpHLiatJOHL5jFjXSJIgCd01g==", "dev": true, "dependencies": { + "@colors/colors": "1.5.0", "body-parser": "^1.19.0", "braces": "^3.0.2", "chokidar": "^3.5.1", - "colors": "1.4.0", "connect": "^3.7.0", "di": "^0.0.1", "dom-serialize": "^2.2.1", @@ -6984,9 +7174,9 @@ } }, "node_modules/karma-chrome-launcher": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", - "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", "dev": true, "dependencies": { "which": "^1.2.1" @@ -7060,9 +7250,9 @@ } }, "node_modules/karma-jasmine/node_modules/jasmine-core": { - "version": "3.99.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.0.tgz", - "integrity": "sha512-+ZDaJlEfRopINQqgE+hvzRyDIQDeKfqqTvF8RzXsvU1yE3pBDRud2+Qfh9WvGgRpuzqxyQJVI6Amy5XQ11r/3w==", + "version": "3.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz", + "integrity": "sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==", "dev": true }, "node_modules/karma-source-map-support": { @@ -7256,9 +7446,9 @@ } }, "node_modules/license-webpack-plugin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.1.tgz", - "integrity": "sha512-SQum9mg3BgnY5BK+2KYl4W7pk9b26Q8tW2lTsO6tidD0/Ds9ksdXvp3ip2s9LqDjj5gtBMyWRfOPZptWj4PfCg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", "dev": true, "dependencies": { "webpack-sources": "^3.0.0" @@ -7414,16 +7604,16 @@ } }, "node_modules/log4js": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.1.tgz", - "integrity": "sha512-iUiYnXqAmNKiIZ1XSAitQ4TmNs8CdZYTAWINARF3LjnsLN8tY5m0vRwd6uuWj/yNY0YHxeZodnbmxKFUOM2rMg==", + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.3.tgz", + "integrity": "sha512-H/oQKcCVIhQ8zCtUh5aftdp9eRpGyVB1M5sKzAJ0i10q5jS+YXk133vtLgzT1RIoWMbIn7QD1LUto8a1hqh6gA==", "dev": true, "dependencies": { - "date-format": "^4.0.3", + "date-format": "^4.0.5", "debug": "^4.3.3", - "flatted": "^3.2.4", + "flatted": "^3.2.5", "rfdc": "^1.3.0", - "streamroller": "^3.0.2" + "streamroller": "^3.0.5" }, "engines": { "node": ">=8.0" @@ -7586,21 +7776,21 @@ } }, "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -7835,9 +8025,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", - "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -8082,17 +8272,17 @@ } }, "node_modules/npm-registry-fetch": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.1.tgz", - "integrity": "sha512-ricy4ezH3Uv0d4am6RSwHjCYTWJI74NJjurIigWMAG7Vs3PFyd0TUlkrez5L0AgaPzDLRsEzqb5cOZ/Ue01bmA==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz", + "integrity": "sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA==", "dev": true, "dependencies": { - "make-fetch-happen": "^10.0.0", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", + "make-fetch-happen": "^10.0.1", + "minipass": "^3.1.6", + "minipass-fetch": "^1.4.1", "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" + "minizlib": "^2.1.2", + "npm-package-arg": "^8.1.5" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16" @@ -8107,6 +8297,35 @@ "node": ">= 10" } }, + "node_modules/npm-registry-fetch/node_modules/cacache": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.1.tgz", + "integrity": "sha512-tHPtfdZDqQpZ15eaEZeLspIqS5mK5fOBDZi6AjuqaIi53QNVXH3dQv6uKT3YuUu6uxV/8pjU9in0CoJ8fgaHqw==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.1.2", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^7.2.0", + "infer-owner": "^1.0.4", + "lru-cache": "^7.5.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.11", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, "node_modules/npm-registry-fetch/node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -8121,33 +8340,59 @@ "node": ">= 6" } }, + "node_modules/npm-registry-fetch/node_modules/lru-cache": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.5.1.tgz", + "integrity": "sha512-q1TS8IqKvcg3aScamKCHpepSrHF537Ww7nHahBOxhDu9D2YoBXAsj/7uFdZFj1xJr9LmyeJ62AdyofCHafUbIA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.0.tgz", - "integrity": "sha512-CREcDkbKZZ64g5MN1FT+u58mDHX9FQFFtFyio5HonX44BdQdytqPZBXUz+6ibi2w/6ncji59f2phyXGSMGpgzA==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.6.tgz", + "integrity": "sha512-4Gfh6lV3TLXmj7qz79hBFuvVqjYSMW6v2+sxtdX4LFQU0rK3V/txRjE0DoZb7X0IF3t9f8NO3CxPSWlvdckhVA==", "dev": true, "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", + "agentkeepalive": "^4.2.1", + "cacache": "^16.0.0", "http-cache-semantics": "^4.1.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", + "lru-cache": "^7.5.1", + "minipass": "^3.1.6", "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", + "minipass-fetch": "^2.0.3", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" + "socks-proxy-agent": "^6.1.1", + "ssri": "^8.0.1" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16" } }, + "node_modules/npm-registry-fetch/node_modules/make-fetch-happen/node_modules/minipass-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.0.3.tgz", + "integrity": "sha512-VA+eiiUtaIvpQJXISwE3OiMvQwAWrgKb97F0aXlCS1Ahikr8fEQq8m3Hf7Kv9KT3nokuHigJKsDMB6atU04olQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -8161,12 +8406,12 @@ } }, "node_modules/npmlog": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.0.tgz", - "integrity": "sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", + "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", "dev": true, "dependencies": { - "are-we-there-yet": "^2.0.0", + "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", "gauge": "^4.0.0", "set-blocking": "^2.0.0" @@ -8871,11 +9116,12 @@ } }, "node_modules/postcss-double-position-gradients": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.0.5.tgz", - "integrity": "sha512-XiZzvdxLOWZwtt/1GgHJYGoD9scog/DD/yI5dcvPrXNdNDEv7T53/6tL7ikl+EM3jcerII5/XIQzd1UHOdTi2w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz", + "integrity": "sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ==", "dev": true, "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -8993,11 +9239,12 @@ } }, "node_modules/postcss-lab-function": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.0.4.tgz", - "integrity": "sha512-TAEW8X/ahMYV33mvLFQARtBPAy1VVJsiR9VVx3Pcbu+zlqQj0EIyJ/Ie1/EwxwIt530CWtEDzzTXBDzfdb+qIQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.1.2.tgz", + "integrity": "sha512-isudf5ldhg4fk16M8viAwAbg6Gv14lVO35N3Z/49NhbwPQ2xbiEoHgrRgpgQojosF4vF7jY653ktB6dDrUOR8Q==", "dev": true, "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -9113,18 +9360,18 @@ } }, "node_modules/postcss-nesting": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.2.tgz", - "integrity": "sha512-dJGmgmsvpzKoVMtDMQQG/T6FSqs6kDtUDirIfl4KnjMCiY9/ETX8jdKyCd20swSRAbUYkaBKV20pxkzxoOXLqQ==", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.3.tgz", + "integrity": "sha512-wUC+/YCik4wH3StsbC5fBG1s2Z3ZV74vjGqBFYtmYKlVxoio5TYGM06AiaKkQPPlkXWn72HKfS7Cw5PYxnoXSw==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.8" + "postcss-selector-parser": "^6.0.9" }, "engines": { "node": "^12 || ^14 || >=16" }, "peerDependencies": { - "postcss": "^8.3" + "postcss": "^8.4" } }, "node_modules/postcss-overflow-shorthand": { @@ -9349,9 +9596,9 @@ } }, "node_modules/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", "dev": true, "engines": { "node": ">=0.6" @@ -9399,12 +9646,12 @@ } }, "node_modules/raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", "dev": true, "dependencies": { - "bytes": "3.1.1", + "bytes": "3.1.2", "http-errors": "1.8.1", "iconv-lite": "0.4.24", "unpipe": "1.0.0" @@ -9740,9 +9987,9 @@ } }, "node_modules/rxjs": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.3.tgz", - "integrity": "sha512-6162iC/N7L7K8q3UvdOMWix1ju+esADGrDaPrTu5XJmCv69YNdYoUaop/iatN8GHK+YHOdszPP+qygA0yi04zQ==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", "dependencies": { "tslib": "^2.1.0" } @@ -10374,14 +10621,14 @@ } }, "node_modules/streamroller": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.2.tgz", - "integrity": "sha512-ur6y5S5dopOaRXBuRIZ1u6GC5bcEXHRZKgfBjfCglMhmIf+roVCECjvkEYzNQOXIN2/JPnkMPW/8B3CZoKaEPA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.5.tgz", + "integrity": "sha512-5uzTEUIi4OB5zy/H30kbUN/zpDNJsFUA+Z47ZL8EfrP93lcZvRLEqdbhdunEPa7CouuAzXXsHpCJ9dg90Umw7g==", "dev": true, "dependencies": { - "date-format": "^4.0.3", - "debug": "^4.1.1", - "fs-extra": "^10.0.0" + "date-format": "^4.0.5", + "debug": "^4.3.3", + "fs-extra": "^10.0.1" }, "engines": { "node": ">=8.0" @@ -10529,11 +10776,12 @@ } }, "node_modules/terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.11.0.tgz", + "integrity": "sha512-uCA9DLanzzWSsN1UirKwylhhRz3aKPInlfmpGfw8VN6jHsAtu8HJtIpeeHHK23rxnE/cDc+yvmq5wqkIC6Kn0A==", "dev": true, "dependencies": { + "acorn": "^8.5.0", "commander": "^2.20.0", "source-map": "~0.7.2", "source-map-support": "~0.5.20" @@ -10543,14 +10791,6 @@ }, "engines": { "node": ">=10" - }, - "peerDependencies": { - "acorn": "^8.5.0" - }, - "peerDependenciesMeta": { - "acorn": { - "optional": true - } } }, "node_modules/terser-webpack-plugin": { @@ -10759,9 +10999,9 @@ } }, "node_modules/typed-assert": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.8.tgz", - "integrity": "sha512-5NkbXZUlmCE73Fs7gvkp1XXJWHYetPkg60QnQ2NXQmBYNFxbBr2zA8GCtaH4K2s2WhOmSlgiSTmrjrcm5tnM5g==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", "dev": true }, "node_modules/typescript": { @@ -11415,20 +11655,20 @@ } }, "node_modules/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "dev": true, "engines": { "node": ">=12" } }, "node_modules/zone.js": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.4.tgz", - "integrity": "sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw==", + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.5.tgz", + "integrity": "sha512-D1/7VxEuQ7xk6z/kAROe4SUbd9CzxY4zOwVGnGHerd/SgLIVU5f4esDzQUsOCeArn933BZfWMKydH7l7dPEp0g==", "dependencies": { - "tslib": "^2.0.0" + "tslib": "^2.3.0" } } }, @@ -11444,12 +11684,12 @@ } }, "@angular-devkit/architect": { - "version": "0.1302.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.2.tgz", - "integrity": "sha512-kkydqB0PA6ZvaUgHCePoqUAzLzx+x62xOGx5z4FtIlYO9zCYHbv9q4V1jtM0ufj9PZmHCM9HNafp68hx2dcCpg==", + "version": "0.1302.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.6.tgz", + "integrity": "sha512-NztzorUMfwJeRaT7SY00Y8WSqc2lQYuF11yNoyEm7Dae3V7VZ28rW2Z9RwibP27rYQL0RjSMaz2wKITHX2vOAw==", "dev": true, "requires": { - "@angular-devkit/core": "13.2.2", + "@angular-devkit/core": "13.2.6", "rxjs": "6.6.7" }, "dependencies": { @@ -11471,15 +11711,15 @@ } }, "@angular-devkit/build-angular": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.2.2.tgz", - "integrity": "sha512-ExSaNi/TlMlqX4kk8D6Ok+cALsd5EGqwqDkLaw1B69497LNJQQPI5koeHXQNOHMjxf9pgAezQWWqlWOuKeSKsA==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.2.6.tgz", + "integrity": "sha512-Y2ojy6xbZ0kwScppcutLHBP8eW0qNOjburTISSBU/L5l/9FOeZ1E7yAreKuVu/qibZiLbSJfAhk+SLwhRHFSSQ==", "dev": true, "requires": { "@ampproject/remapping": "1.1.1", - "@angular-devkit/architect": "0.1302.2", - "@angular-devkit/build-webpack": "0.1302.2", - "@angular-devkit/core": "13.2.2", + "@angular-devkit/architect": "0.1302.6", + "@angular-devkit/build-webpack": "0.1302.6", + "@angular-devkit/core": "13.2.6", "@babel/core": "7.16.12", "@babel/generator": "7.16.8", "@babel/helper-annotate-as-pure": "7.16.7", @@ -11490,7 +11730,7 @@ "@babel/runtime": "7.16.7", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.6", - "@ngtools/webpack": "13.2.2", + "@ngtools/webpack": "13.2.6", "ansi-colors": "4.1.1", "babel-loader": "8.2.3", "babel-plugin-istanbul": "6.1.1", @@ -11501,8 +11741,8 @@ "core-js": "3.20.3", "critters": "0.0.16", "css-loader": "6.5.1", - "esbuild": "0.14.14", - "esbuild-wasm": "0.14.14", + "esbuild": "0.14.22", + "esbuild-wasm": "0.14.22", "glob": "7.2.0", "https-proxy-agent": "5.0.0", "inquirer": "8.2.0", @@ -11510,7 +11750,7 @@ "karma-source-map-support": "1.4.0", "less": "4.1.2", "less-loader": "10.2.0", - "license-webpack-plugin": "4.0.1", + "license-webpack-plugin": "4.0.2", "loader-utils": "3.2.0", "mini-css-extract-plugin": "2.5.3", "minimatch": "3.0.4", @@ -11532,7 +11772,7 @@ "source-map-support": "0.5.21", "stylus": "0.56.0", "stylus-loader": "6.2.0", - "terser": "5.10.0", + "terser": "5.11.0", "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.3.1", @@ -11563,12 +11803,12 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.1302.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1302.2.tgz", - "integrity": "sha512-QgeJSJt52ZYigw67i3MChuSyp1FUO1LbrzeMoQLdScAPPjnivODz4TTz5bNMrhnP6NoPUpzy6QKOWR1j/TFOHw==", + "version": "0.1302.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1302.6.tgz", + "integrity": "sha512-TYEh2n9tPe932rEIgdiSpojOqtDppW2jzb/empVqCkLF7WUZsXKvTanttZC34L6R2VD6SAGWhb6JDg75ghUVYA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1302.2", + "@angular-devkit/architect": "0.1302.6", "rxjs": "6.6.7" }, "dependencies": { @@ -11590,9 +11830,9 @@ } }, "@angular-devkit/core": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.2.2.tgz", - "integrity": "sha512-qH0Vu8qwGD5uhmE8PtePA1lm7xL3JtbBCcrQICmLqD6njLDVb2N5pbdDXeiXDlWGUoIRHUhu6Uw4AsY8zXP/FA==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.2.6.tgz", + "integrity": "sha512-8h2mWdBTN/dYwZuzKMg2IODlOWMdbJcpQG4XVrkk9ejCPP+3aX5Aa3glCe/voN6eBNiRfs8YDM0jxmpN2aWVtg==", "dev": true, "requires": { "ajv": "8.9.0", @@ -11621,12 +11861,12 @@ } }, "@angular-devkit/schematics": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.2.2.tgz", - "integrity": "sha512-kXPLTkSzRCeBX+SYUkC6MIrWCkH90Y8hVegR9R5n2YqhCJyE+dZlcx4d/8d3VHtZlzAs0LL8BU+liC3wMIagjA==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.2.6.tgz", + "integrity": "sha512-mPgSqdnZRuPSMeUA+T+mwVCrq2yhXpcYm1/Rjbhy09CyHs4wSrFv21WHCrE6shlvXpcmwr0n+I0DIeagAPmjUA==", "dev": true, "requires": { - "@angular-devkit/core": "13.2.2", + "@angular-devkit/core": "13.2.6", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -11651,23 +11891,23 @@ } }, "@angular/animations": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.2.1.tgz", - "integrity": "sha512-Wvuu5OU0T5BlavE0IQohuXWiQUHHmrrkhZSxqatsSno2v1au5u/SJGSGo4RojBKsSm627Z/grLjOT6YA21CObA==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.2.6.tgz", + "integrity": "sha512-DrjpKo68uR3lSLQQXosoTCbjKQS6IKRCpR14E2t8fo0AX8i2hkB8je4SrhdCyB7FgFN7l2kgUYo4Qa8+BOB+aA==", "requires": { "tslib": "^2.3.0" } }, "@angular/cli": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.2.2.tgz", - "integrity": "sha512-i9pBm5bVWnabwrsw1Ut84BqGu75+Nol6sReh8NTs7zUdCKNC00kqFBZg/1nGGw0IwL3Q+W7rJMgZ9q0qAtFTXg==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.2.6.tgz", + "integrity": "sha512-xIjEaQI5sWemXXc7GXLm4u9UL5sjtrQL/y1PJvvk/Jsa8+kIT+MutOfZfC7zcdAh9fqHd8mokH3guFV8BJdFxA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1302.2", - "@angular-devkit/core": "13.2.2", - "@angular-devkit/schematics": "13.2.2", - "@schematics/angular": "13.2.2", + "@angular-devkit/architect": "0.1302.6", + "@angular-devkit/core": "13.2.6", + "@angular-devkit/schematics": "13.2.6", + "@schematics/angular": "13.2.6", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.3", @@ -11686,75 +11926,143 @@ } }, "@angular/common": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.2.1.tgz", - "integrity": "sha512-LQgN4thG0NGPG+orKg7/2JiYCKjtZ1T2NKFwRt3dHYbNiHdwNCxkwZPqW1BMSpN6la/QB6aLTkuMV52t2S8FmA==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.2.6.tgz", + "integrity": "sha512-t4XRb9db4UeRcPs5aHNtGuXRKSvGBlTEr0zzSeoKzHD9TCaO4dSDISh9obS9hThaPuBmPKRUHN5KE1HFmqnSHg==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.2.1.tgz", - "integrity": "sha512-CI3EFP8GwpTe+MFoEntWG4LQbq7rfCjP9ZVkKF1F5enA+CPZjYFGQ5qog3D5hnntMeQBU2iw7ZHNVlVfsmfTIQ==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.2.6.tgz", + "integrity": "sha512-LHU29J2/c/03WHkwtzUSElTBsXbzkKdYARodnNfsFdLPsWhyvzO3cqlcZYteFJxEy3dVH+ZrYDjqQ9Sp17aIgA==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler-cli": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.2.1.tgz", - "integrity": "sha512-sUJVdHxX1JtUu5qsM2g+l8xtVlfTPcQiIgD3UU5iYT6Twzhs3g5iuqD+C0x5US/x45eXiL87fvs8XW/kNSDfwQ==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.2.6.tgz", + "integrity": "sha512-QtlLKj3m6a2nkewFxhg+a3tQ2gEIBzMfI2c1laWUfAfJJ56phj79k8Z/kf2HQxypphWixyTK+ugpTlMdvvOquA==", "dev": true, "requires": { - "@babel/core": "^7.8.6", + "@babel/core": "^7.17.2", "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", "dependency-graph": "^0.11.0", - "magic-string": "^0.25.0", + "magic-string": "^0.26.0", "reflect-metadata": "^0.1.2", "semver": "^7.0.0", "sourcemap-codec": "^1.4.8", "tslib": "^2.3.0", "yargs": "^17.2.1" + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" + } + }, + "@babel/core": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.7.tgz", + "integrity": "sha512-djHlEfFHnSnTAcPb7dATbiM5HxGOP98+3JLBZtjRb5I7RXrw7kFRoG2dXM8cm3H+o11A8IFH/uprmJpwFynRNQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.7", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.7", + "@babel/parser": "^7.17.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "magic-string": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", + "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@angular/core": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.2.1.tgz", - "integrity": "sha512-+V/ZUuMqXDXM5Moo9wWbkM9O55POqAyP0oECoYvVStCDLDXGfWGOSysJIbsp07dsoEx8/kmKWV7Q7ZdHMTVvJg==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.2.6.tgz", + "integrity": "sha512-ctWsxuaSO3d3afLW+wkJSyiEIA2uhaTKNps9x5wz/oZJDaUDYVa4PM4x7/UHn2bXzBjXjN9LSW8h9F31iwmcTg==", "requires": { "tslib": "^2.3.0" } }, "@angular/forms": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.2.1.tgz", - "integrity": "sha512-3bTxNRmamN6+0eNdd+kYk2XDfPxXYeAIvRlm8MFM9/buP/tlcCusAvnkHABUJ9wX/2kezOXMOkWtO9LfyyNLIg==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.2.6.tgz", + "integrity": "sha512-3IikvNtO0RBiGb2AWl8aYcE3ivXHPIJz+JOn9Wz9XXSkYx75D3GjuJlz+fVIgz+7Q7tJuS6Q2E5qat/ldeDmoA==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.2.1.tgz", - "integrity": "sha512-9idmGsWqLMhslMnG6+GojNO7L2IRM0DOeUlTo/x28zTedg6f7j2wRJ+ZxfTVRhf75Y3NXOjJ0bfKnLkHOzA+Aw==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.2.6.tgz", + "integrity": "sha512-Gc/1TqysW+P+K3NeQihmHWs4KF1mjJT20s06r+YcETnPP11uPk+UxQl7gJNsDV587DYO/wT3oISXVpRw4UJhdQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser-dynamic": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.2.1.tgz", - "integrity": "sha512-1kCm3TQXY2jWnyrQo3yPb+lZOSzAOtLYvDo0GJ5CggkCCYoVUMj3Iie2K60qcJ8RUd11JNHAed2yvrtwgIm+jA==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.2.6.tgz", + "integrity": "sha512-m77+pzwZw+4kiRhxzrj1kE3N1K82I8Xt+vEBKSL2Xv42hCX0T37erC6KlztFEDj4A68s5+/0C5vfwhEiDcr/Cw==", "requires": { "tslib": "^2.3.0" } }, "@angular/router": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.2.1.tgz", - "integrity": "sha512-+UkzW1ODV8GgL2ft6eMmJKYl4rqw6iwh3y5IEenF52X8zmnjjR0/ts/86FmaCfnpaE5S6hwnsopin9LBYVbVTQ==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.2.6.tgz", + "integrity": "sha512-dA9vL4mPLp+iNegzuvm9FaEWirFI2ZK3WQgbdoxoIpneym+BxRTkNDzPcvEaqfUf7eDGRBqlWakFDrd+H2QEbg==", "requires": { "tslib": "^2.3.0" } @@ -11775,9 +12083,9 @@ } }, "@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", "dev": true }, "@babel/core": { @@ -11856,12 +12164,12 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.7", "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" @@ -11876,9 +12184,9 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.17.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz", - "integrity": "sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ==", + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", + "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", @@ -11972,12 +12280,12 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", - "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-module-imports": { @@ -11990,19 +12298,19 @@ } }, "@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" } }, "@babel/helper-optimise-call-expression": { @@ -12045,12 +12353,12 @@ } }, "@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -12096,13 +12404,13 @@ } }, "@babel/helpers": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", - "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.7.tgz", + "integrity": "sha512-TKsj9NkjJfTBxM7Phfy7kv6yYc4ZcOo+AaWGqQOKTPDOmcGkIFb5xNA746eKisQkm4yavUYh4InYM9S+VnO01w==", "dev": true, "requires": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", + "@babel/traverse": "^7.17.3", "@babel/types": "^7.17.0" } }, @@ -12118,9 +12426,9 @@ } }, "@babel/parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", - "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.7.tgz", + "integrity": "sha512-bm3AQf45vR4gKggRfvJdYJ0gFLoCbsPxiFLSH6hTVYABptNHY6l9NrhnucVjQ/X+SPtLANT9lc0fFhikj+VBRA==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -12165,12 +12473,12 @@ } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", - "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.6", "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" } @@ -12236,12 +12544,12 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", - "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.0", "@babel/helper-compilation-targets": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", @@ -12491,9 +12799,9 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", - "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" @@ -12578,14 +12886,14 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", - "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz", + "integrity": "sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, @@ -12887,27 +13195,27 @@ } }, "@babel/traverse": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", - "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", "dev": true, "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", + "@babel/generator": "^7.17.3", "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-function-name": "^7.16.7", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.0", + "@babel/parser": "^7.17.3", "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" }, "dependencies": { "@babel/generator": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", - "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", "dev": true, "requires": { "@babel/types": "^7.17.0", @@ -12933,6 +13241,21 @@ "to-fast-properties": "^2.0.0" } }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true + }, + "@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, "@discoveryjs/json-ext": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", @@ -12940,9 +13263,9 @@ "dev": true }, "@gar/promisify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", - "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true }, "@istanbuljs/load-nyc-config": { @@ -12986,15 +13309,31 @@ "dev": true }, "@jridgewell/resolve-uri": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz", - "integrity": "sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", "dev": true }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@ngtools/webpack": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.2.2.tgz", - "integrity": "sha512-BkykqIIJgSllNT6f+8IoZtJaI8uKdq62LteoWMMtvAxXErqRLN6CcDxPWjP8tfeEKeCYZ41ueZwNK5V05SsCIg==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.2.6.tgz", + "integrity": "sha512-N8SvRV91+/57TcAfbghc0k0tKCukw/7KqbDaLPAQTGFekJ4xMGT3elMzOyBXTH3Hvp5HL8/hiBt2tG04qiMf+w==", "dev": true, "requires": {} }, @@ -13025,9 +13364,9 @@ } }, "@npmcli/fs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.0.tgz", - "integrity": "sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", "dev": true, "requires": { "@gar/promisify": "^1.0.1", @@ -13109,13 +13448,13 @@ } }, "@schematics/angular": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.2.2.tgz", - "integrity": "sha512-LfTtu82I7K+BoSzSXV8gA5+ARhtOtOi/qY0uj2782/xzpe+zCbbftgc6MHiSx/a3KO7IStDwf7G6mjqas0v+4g==", + "version": "13.2.6", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.2.6.tgz", + "integrity": "sha512-8NzHMX9+FSgaB0lJYxlTJv9OcBuolwZJqo9M/yX3RPSqSHghA33jWwgVbV551hBJOpbVEePerG1DQkIC99DXKA==", "dev": true, "requires": { - "@angular-devkit/core": "13.2.2", - "@angular-devkit/schematics": "13.2.2", + "@angular-devkit/core": "13.2.6", + "@angular-devkit/schematics": "13.2.6", "jsonc-parser": "3.0.0" } }, @@ -13188,9 +13527,9 @@ "dev": true }, "@types/crypto-js": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.0.tgz", - "integrity": "sha512-DCFfy/vh2lG6qHSGezQ+Sn2Ulf/1Mx51dqOdmOKyW5nMK3maLlxeS3onC7r212OnBM2pBR95HkAmAjjF08YkxQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA==", "dev": true }, "@types/eslint": { @@ -13264,9 +13603,9 @@ } }, "@types/jasmine": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.3.tgz", - "integrity": "sha512-SWyMrjgdAUHNQmutvDcKablrJhkDLy4wunTme8oYLjKp41GnHGxMRXr2MQMvy/qy8H3LdzwQk9gH4hZ6T++H8g==", + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.4.tgz", + "integrity": "sha512-7UAoOBYJpaZKmpJ8esMUIMl6pSdReliPQjviOOikWdQ7eVr4Hq8YbpeXyfXFKflZv8ymDFhYdTjVabbP2s4K4Q==", "dev": true }, "@types/jasminewd2": { @@ -13285,9 +13624,9 @@ "dev": true }, "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz", + "integrity": "sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A==", "dev": true }, "@types/jszip": { @@ -13315,9 +13654,9 @@ } }, "@types/node": { - "version": "12.20.43", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.43.tgz", - "integrity": "sha512-HCfJdaYqJX3BCzeihgZrD7b85Cu05OC/GVJ4kEYIflwUs4jbnUlLLWoq7hw1LBcdvUyehO+gr6P5JQ895/2ZfA==", + "version": "12.20.47", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.47.tgz", + "integrity": "sha512-BzcaRsnFuznzOItW1WpQrDHM7plAa7GIDMZ6b5pnMbkqEtM/6WCOhvZar39oeMQP79gwvFUWjjptE7/KGcNqFg==", "dev": true }, "@types/pako": { @@ -13385,9 +13724,9 @@ "dev": true }, "@types/ws": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", - "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", "dev": true, "requires": { "@types/node": "*" @@ -13625,9 +13964,9 @@ } }, "agentkeepalive": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.0.tgz", - "integrity": "sha512-0PhAp58jZNw13UJv7NVdTGb0ZcghHUb3DrZ046JiiJY/BOaTTpbwdHq2VObPCBV8M2GPh7sgrJ3AQ8Ey468LJw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dev": true, "requires": { "debug": "^4.1.0", @@ -13728,9 +14067,9 @@ "dev": true }, "are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", "dev": true, "requires": { "delegates": "^1.0.0", @@ -13798,14 +14137,14 @@ "dev": true }, "autoprefixer": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", - "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==", + "version": "10.4.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", + "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", "dev": true, "requires": { - "browserslist": "^4.19.1", - "caniuse-lite": "^1.0.30001297", - "fraction.js": "^4.1.2", + "browserslist": "^4.20.2", + "caniuse-lite": "^1.0.30001317", + "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" @@ -13930,9 +14269,9 @@ "dev": true }, "bcdice": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.5.0.tgz", - "integrity": "sha512-GTYaB5767Li2FjV1ubGityv2KZSkKJ0phM6M1/+Gr1GHMEZSB/Iy+kV2qe1unXVyHqBb73iLaCirIpFtpiyUdQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.5.1.tgz", + "integrity": "sha512-HJ8kndQmCezJHB2Lgqqg0h7q/KTk/IxizCSmu6sRvikwadtCvVFKIJTNIOfLk/kBr8i4aF1f3M2iVogTjKqTRA==", "requires": { "lodash": "^4.17.20", "source-map-support": "^0.5.19" @@ -13990,20 +14329,20 @@ } }, "body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", "dev": true, "requires": { - "bytes": "3.1.1", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", "depd": "~1.1.2", "http-errors": "1.8.1", "iconv-lite": "0.4.24", "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", + "qs": "6.9.7", + "raw-body": "2.4.3", "type-is": "~1.6.18" }, "dependencies": { @@ -14064,15 +14403,15 @@ } }, "browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", "escalade": "^3.1.1", - "node-releases": "^2.0.1", + "node-releases": "^2.0.2", "picocolors": "^1.0.0" } }, @@ -14104,9 +14443,9 @@ "dev": true }, "bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true }, "cacache": { @@ -14158,9 +14497,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001309", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001309.tgz", - "integrity": "sha512-Pl8vfigmBXXq+/yUz1jUwULeq9xhMJznzdc/xwl4WclDAuebcTHVefpz8lE/bMI+UN7TOkSSe7B7RnZd6+dzjA==", + "version": "1.0.30001317", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001317.tgz", + "integrity": "sha512-xIZLh8gBm4dqNX0gkzrBeyI86J2eCjWzYAs40q88smG844YIrN4tVQl/RhquHvKEKImWWFIVh1Lxe5n1G/N+GQ==", "dev": true }, "chalk": { @@ -14297,12 +14636,6 @@ "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true - }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -14512,9 +14845,9 @@ "dev": true }, "core-js-compat": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.0.tgz", - "integrity": "sha512-OSXseNPSK2OPJa6GdtkMz/XxeXx8/CJvfhQWTqd6neuUraujcL4jVsjkLQz1OWnax8xVQJnRPe0V2jqNWORA+A==", + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", + "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", "dev": true, "requires": { "browserslist": "^4.19.1", @@ -14747,9 +15080,9 @@ "dev": true }, "date-format": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.3.tgz", - "integrity": "sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.5.tgz", + "integrity": "sha512-zBhRiN/M0gDxUoM2xRtzTjJzSg0XEi1ofYpF84PfXeS3hN2PsGxmc7jw3DNQtFlimRbMmob5FC3G0cJq6jQQpw==", "dev": true }, "debug": { @@ -14984,9 +15317,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.66", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.66.tgz", - "integrity": "sha512-f1RXFMsvwufWLwYUxTiP7HmjprKXrqEWHiQkjAYa9DJeVIlZk5v8gBGcaV+FhtXLly6C1OTVzQY+2UQrACiLlg==", + "version": "1.4.85", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.85.tgz", + "integrity": "sha512-K9AsQ41WS2bjZUFpRWfvaS4RjEcRCamEkBJN1Z1TQILBfP1H8QnJ9ti0wiLiMv0sRjX3EHKzgs9jDnmGFx2jXg==", "dev": true }, "emoji-regex": { @@ -15030,9 +15363,9 @@ } }, "engine.io": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.2.tgz", - "integrity": "sha512-v/7eGHxPvO2AWsksyx2PUsQvBafuvqs0jJJQ0FdmJG1b9qIvgSbqDRGwNhfk2XHaTTbTXiC4quRE8Q9nRjsrQQ==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz", + "integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==", "dev": true, "requires": { "@types/cookie": "^0.4.1", @@ -15043,7 +15376,7 @@ "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.0.0", + "engine.io-parser": "~5.0.3", "ws": "~8.2.3" } }, @@ -15057,9 +15390,9 @@ } }, "enhanced-resolve": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz", - "integrity": "sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -15121,161 +15454,169 @@ "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=" }, "esbuild": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.14.tgz", - "integrity": "sha512-aiK4ddv+uui0k52OqSHu4xxu+SzOim7Rlz4i25pMEiC8rlnGU0HJ9r+ZMfdWL5bzifg+nhnn7x4NSWTeehYblg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.22.tgz", + "integrity": "sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA==", "dev": true, "optional": true, "requires": { - "esbuild-android-arm64": "0.14.14", - "esbuild-darwin-64": "0.14.14", - "esbuild-darwin-arm64": "0.14.14", - "esbuild-freebsd-64": "0.14.14", - "esbuild-freebsd-arm64": "0.14.14", - "esbuild-linux-32": "0.14.14", - "esbuild-linux-64": "0.14.14", - "esbuild-linux-arm": "0.14.14", - "esbuild-linux-arm64": "0.14.14", - "esbuild-linux-mips64le": "0.14.14", - "esbuild-linux-ppc64le": "0.14.14", - "esbuild-linux-s390x": "0.14.14", - "esbuild-netbsd-64": "0.14.14", - "esbuild-openbsd-64": "0.14.14", - "esbuild-sunos-64": "0.14.14", - "esbuild-windows-32": "0.14.14", - "esbuild-windows-64": "0.14.14", - "esbuild-windows-arm64": "0.14.14" + "esbuild-android-arm64": "0.14.22", + "esbuild-darwin-64": "0.14.22", + "esbuild-darwin-arm64": "0.14.22", + "esbuild-freebsd-64": "0.14.22", + "esbuild-freebsd-arm64": "0.14.22", + "esbuild-linux-32": "0.14.22", + "esbuild-linux-64": "0.14.22", + "esbuild-linux-arm": "0.14.22", + "esbuild-linux-arm64": "0.14.22", + "esbuild-linux-mips64le": "0.14.22", + "esbuild-linux-ppc64le": "0.14.22", + "esbuild-linux-riscv64": "0.14.22", + "esbuild-linux-s390x": "0.14.22", + "esbuild-netbsd-64": "0.14.22", + "esbuild-openbsd-64": "0.14.22", + "esbuild-sunos-64": "0.14.22", + "esbuild-windows-32": "0.14.22", + "esbuild-windows-64": "0.14.22", + "esbuild-windows-arm64": "0.14.22" } }, "esbuild-android-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.14.tgz", - "integrity": "sha512-be/Uw6DdpQiPfula1J4bdmA+wtZ6T3BRCZsDMFB5X+k0Gp8TIh9UvmAcqvKNnbRAafSaXG3jPCeXxDKqnc8hFQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz", + "integrity": "sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.14.tgz", - "integrity": "sha512-BEexYmjWafcISK8cT6O98E3TfcLuZL8DKuubry6G54n2+bD4GkoRD6HYUOnCkfl2p7jodA+s4369IjSFSWjtHg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.22.tgz", + "integrity": "sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.14.tgz", - "integrity": "sha512-tnBKm41pDOB1GtZ8q/w26gZlLLRzVmP8fdsduYjvM+yFD7E2DLG4KbPAqFMWm4Md9B+DitBglP57FY7AznxbTg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.22.tgz", + "integrity": "sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.14.tgz", - "integrity": "sha512-Q9Rx6sgArOHalQtNwAaIzJ6dnQ8A+I7f/RsQsdkS3JrdzmnlFo8JEVofTmwVQLoIop7OKUqIVOGP4PoQcwfVMA==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.22.tgz", + "integrity": "sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.14.tgz", - "integrity": "sha512-TJvq0OpLM7BkTczlyPIphcvnwrQwQDG1HqxzoYePWn26SMUAlt6wrLnEvxdbXAvNvDLVzG83kA+JimjK7aRNBA==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.22.tgz", + "integrity": "sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.14.tgz", - "integrity": "sha512-h/CrK9Baimt5VRbu8gqibWV7e1P9l+mkanQgyOgv0Ng3jHT1NVFC9e6rb1zbDdaJVmuhWX5xVliUA5bDDCcJeg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.22.tgz", + "integrity": "sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.14.tgz", - "integrity": "sha512-IC+wAiIg/egp5OhQp4W44D9PcBOH1b621iRn1OXmlLzij9a/6BGr9NMIL4CRwz4j2kp3WNZu5sT473tYdynOuQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.22.tgz", + "integrity": "sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.14.tgz", - "integrity": "sha512-gxpOaHOPwp7zSmcKYsHrtxabScMqaTzfSQioAMUaB047YiMuDBzqVcKBG8OuESrYkGrL9DDljXr/mQNg7pbdaQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.22.tgz", + "integrity": "sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.14.tgz", - "integrity": "sha512-6QVul3RI4M5/VxVIRF/I5F+7BaxzR3DfNGoqEVSCZqUbgzHExPn+LXr5ly1C7af2Kw4AHpo+wDqx8A4ziP9avw==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.22.tgz", + "integrity": "sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.14.tgz", - "integrity": "sha512-4Jl5/+xoINKbA4cesH3f4R+q0vltAztZ6Jm8YycS8lNhN1pgZJBDxWfI6HUMIAdkKlIpR1PIkA9aXQgZ8sxFAg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.22.tgz", + "integrity": "sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.14.tgz", - "integrity": "sha512-BitW37GxeebKxqYNl4SVuSdnIJAzH830Lr6Mkq3pBHXtzQay0vK+IeOR/Ele1GtNVJ+/f8wYM53tcThkv5SC5w==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.22.tgz", + "integrity": "sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.22.tgz", + "integrity": "sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ==", "dev": true, "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.14.tgz", - "integrity": "sha512-vLj6p76HOZG3wfuTr5MyO3qW5iu8YdhUNxuY+tx846rPo7GcKtYSPMusQjeVEfZlJpSYoR+yrNBBxq+qVF9zrw==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.22.tgz", + "integrity": "sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.14.tgz", - "integrity": "sha512-fn8looXPQhpVqUyCBWUuPjesH+yGIyfbIQrLKG05rr1Kgm3rZD/gaYrd3Wpmf5syVZx70pKZPvdHp8OTA+y7cQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.22.tgz", + "integrity": "sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.14.tgz", - "integrity": "sha512-HdAnJ399pPff3SKbd8g+P4o5znseni5u5n5rJ6Z7ouqOdgbOwHe2ofZbMow17WMdNtz1IyOZk2Wo9Ve6/lZ4Rg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.22.tgz", + "integrity": "sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.14.tgz", - "integrity": "sha512-bmDHa99ulsGnYlh/xjBEfxoGuC8CEG5OWvlgD+pF7bKKiVTbtxqVCvOGEZeoDXB+ja6AvHIbPxrEE32J+m5nqQ==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.22.tgz", + "integrity": "sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g==", "dev": true, "optional": true }, "esbuild-wasm": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.14.tgz", - "integrity": "sha512-qTjK4MWnYtQHCMGg2qDUqeFYXfVvYq5qJkQTIsOV4VZCknoYePVaDTG9ygEB9Ct0kc0DWs7IrS6Ja+GjY62Kzw==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.22.tgz", + "integrity": "sha512-FOSAM29GN1fWusw0oLMv6JYhoheDIh5+atC72TkJKfIUMID6yISlicoQSd9gsNSFsNBvABvtE2jR4JB1j4FkFw==", "dev": true }, "esbuild-windows-32": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.14.tgz", - "integrity": "sha512-6tVooQcxJCNenPp5GHZBs/RLu31q4B+BuF4MEoRxswT+Eq2JGF0ZWDRQwNKB8QVIo3t6Svc5wNGez+CwKNQjBg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.22.tgz", + "integrity": "sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.14.tgz", - "integrity": "sha512-kl3BdPXh0/RD/dad41dtzj2itMUR4C6nQbXQCyYHHo4zoUoeIXhpCrSl7BAW1nv5EFL8stT1V+TQVXGZca5A2A==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.22.tgz", + "integrity": "sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.14", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.14.tgz", - "integrity": "sha512-dCm1wTOm6HIisLanmybvRKvaXZZo4yEVrHh1dY0v582GThXJOzuXGja1HIQgV09RpSHYRL3m4KoUBL00l6SWEg==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.22.tgz", + "integrity": "sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg==", "dev": true, "optional": true }, @@ -15389,17 +15730,17 @@ } }, "express": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", - "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", "dev": true, "requires": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.1", + "body-parser": "1.19.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.1", + "cookie": "0.4.2", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", @@ -15414,7 +15755,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.6", + "qs": "6.9.7", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.17.2", @@ -15432,12 +15773,6 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, - "cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "dev": true - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -15604,9 +15939,9 @@ "dev": true }, "follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", "dev": true }, "forwarded": { @@ -15616,9 +15951,9 @@ "dev": true }, "fraction.js": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.3.tgz", - "integrity": "sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", "dev": true }, "fresh": { @@ -15628,9 +15963,9 @@ "dev": true }, "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -15673,20 +16008,19 @@ "dev": true }, "gauge": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz", - "integrity": "sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.3.tgz", + "integrity": "sha512-ICw1DhAwMtb22rYFwEHgJcx1JCwJGv3x6G0OQUq56Nge+H4Q8JEwr8iveS0XFlsUNSI67F5ffMGK25bK4Pmskw==", "dev": true, "requires": { - "ansi-regex": "^5.0.1", "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", "has-unicode": "^2.0.1", - "signal-exit": "^3.0.0", + "signal-exit": "^3.0.7", "string-width": "^4.2.3", "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" + "wide-align": "^1.1.5" } }, "gensync": { @@ -15806,9 +16140,9 @@ "dev": true }, "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, "has-tostringtag": { @@ -15910,9 +16244,9 @@ } }, "http-parser-js": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", - "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", "dev": true }, "http-proxy": { @@ -15938,9 +16272,9 @@ } }, "http-proxy-middleware": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz", - "integrity": "sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz", + "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==", "dev": true, "requires": { "@types/http-proxy": "^1.17.8", @@ -16436,9 +16770,9 @@ } }, "jasmine-core": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.0.0.tgz", - "integrity": "sha512-tq24OCqHElgU9KDpb/8O21r1IfotgjIzalfW9eCmRR40LZpvwXT68iariIyayMwi0m98RDt16aljdbwK0sBMmQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.0.1.tgz", + "integrity": "sha512-w+JDABxQCkxbGGxg+a2hUVZyqUS2JKngvIyLGu/xiw2ZwgsoSB0iiecLQsQORSeaKQ6iGrCyWG86RfNDuoA7Lg==", "dev": true }, "jest-worker": { @@ -16563,15 +16897,15 @@ } }, "karma": { - "version": "6.3.15", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.15.tgz", - "integrity": "sha512-4O5X6zVFdmwo/fgjRN84fPG3IvaiOxOjIeZBwBrQYz4nIyGqlF8Wm7C1Hr7idQ9NHgnvJM+LSjZwS1C+qALMGw==", + "version": "6.3.17", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.17.tgz", + "integrity": "sha512-2TfjHwrRExC8yHoWlPBULyaLwAFmXmxQrcuFImt/JsAsSZu1uOWTZ1ZsWjqQtWpHLiatJOHL5jFjXSJIgCd01g==", "dev": true, "requires": { + "@colors/colors": "1.5.0", "body-parser": "^1.19.0", "braces": "^3.0.2", "chokidar": "^3.5.1", - "colors": "1.4.0", "connect": "^3.7.0", "di": "^0.0.1", "dom-serialize": "^2.2.1", @@ -16642,9 +16976,9 @@ } }, "karma-chrome-launcher": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", - "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", "dev": true, "requires": { "which": "^1.2.1" @@ -16694,9 +17028,9 @@ }, "dependencies": { "jasmine-core": { - "version": "3.99.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.0.tgz", - "integrity": "sha512-+ZDaJlEfRopINQqgE+hvzRyDIQDeKfqqTvF8RzXsvU1yE3pBDRud2+Qfh9WvGgRpuzqxyQJVI6Amy5XQ11r/3w==", + "version": "3.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz", + "integrity": "sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==", "dev": true } } @@ -16798,9 +17132,9 @@ } }, "license-webpack-plugin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.1.tgz", - "integrity": "sha512-SQum9mg3BgnY5BK+2KYl4W7pk9b26Q8tW2lTsO6tidD0/Ds9ksdXvp3ip2s9LqDjj5gtBMyWRfOPZptWj4PfCg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", "dev": true, "requires": { "webpack-sources": "^3.0.0" @@ -16914,16 +17248,16 @@ } }, "log4js": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.1.tgz", - "integrity": "sha512-iUiYnXqAmNKiIZ1XSAitQ4TmNs8CdZYTAWINARF3LjnsLN8tY5m0vRwd6uuWj/yNY0YHxeZodnbmxKFUOM2rMg==", + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.3.tgz", + "integrity": "sha512-H/oQKcCVIhQ8zCtUh5aftdp9eRpGyVB1M5sKzAJ0i10q5jS+YXk133vtLgzT1RIoWMbIn7QD1LUto8a1hqh6gA==", "dev": true, "requires": { - "date-format": "^4.0.3", + "date-format": "^4.0.5", "debug": "^4.3.3", - "flatted": "^3.2.4", + "flatted": "^3.2.5", "rfdc": "^1.3.0", - "streamroller": "^3.0.2" + "streamroller": "^3.0.5" } }, "lru-cache": { @@ -17046,18 +17380,18 @@ "dev": true }, "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true }, "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "requires": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" } }, "mimic-fn": { @@ -17233,9 +17567,9 @@ "dev": true }, "nanoid": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", - "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true }, "needle": { @@ -17421,17 +17755,17 @@ } }, "npm-registry-fetch": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.1.tgz", - "integrity": "sha512-ricy4ezH3Uv0d4am6RSwHjCYTWJI74NJjurIigWMAG7Vs3PFyd0TUlkrez5L0AgaPzDLRsEzqb5cOZ/Ue01bmA==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz", + "integrity": "sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA==", "dev": true, "requires": { - "make-fetch-happen": "^10.0.0", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", + "make-fetch-happen": "^10.0.1", + "minipass": "^3.1.6", + "minipass-fetch": "^1.4.1", "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" + "minizlib": "^2.1.2", + "npm-package-arg": "^8.1.5" }, "dependencies": { "@tootallnate/once": { @@ -17440,6 +17774,32 @@ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, + "cacache": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.1.tgz", + "integrity": "sha512-tHPtfdZDqQpZ15eaEZeLspIqS5mK5fOBDZi6AjuqaIi53QNVXH3dQv6uKT3YuUu6uxV/8pjU9in0CoJ8fgaHqw==", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.1.2", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^7.2.0", + "infer-owner": "^1.0.4", + "lru-cache": "^7.5.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.11", + "unique-filename": "^1.1.1" + } + }, "http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -17451,28 +17811,48 @@ "debug": "4" } }, + "lru-cache": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.5.1.tgz", + "integrity": "sha512-q1TS8IqKvcg3aScamKCHpepSrHF537Ww7nHahBOxhDu9D2YoBXAsj/7uFdZFj1xJr9LmyeJ62AdyofCHafUbIA==", + "dev": true + }, "make-fetch-happen": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.0.tgz", - "integrity": "sha512-CREcDkbKZZ64g5MN1FT+u58mDHX9FQFFtFyio5HonX44BdQdytqPZBXUz+6ibi2w/6ncji59f2phyXGSMGpgzA==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.6.tgz", + "integrity": "sha512-4Gfh6lV3TLXmj7qz79hBFuvVqjYSMW6v2+sxtdX4LFQU0rK3V/txRjE0DoZb7X0IF3t9f8NO3CxPSWlvdckhVA==", "dev": true, "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", + "agentkeepalive": "^4.2.1", + "cacache": "^16.0.0", "http-cache-semantics": "^4.1.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", + "lru-cache": "^7.5.1", + "minipass": "^3.1.6", "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", + "minipass-fetch": "^2.0.3", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" + "socks-proxy-agent": "^6.1.1", + "ssri": "^8.0.1" + }, + "dependencies": { + "minipass-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.0.3.tgz", + "integrity": "sha512-VA+eiiUtaIvpQJXISwE3OiMvQwAWrgKb97F0aXlCS1Ahikr8fEQq8m3Hf7Kv9KT3nokuHigJKsDMB6atU04olQ==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + } } } } @@ -17487,12 +17867,12 @@ } }, "npmlog": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.0.tgz", - "integrity": "sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", + "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", "dev": true, "requires": { - "are-we-there-yet": "^2.0.0", + "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", "gauge": "^4.0.0", "set-blocking": "^2.0.0" @@ -18003,11 +18383,12 @@ } }, "postcss-double-position-gradients": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.0.5.tgz", - "integrity": "sha512-XiZzvdxLOWZwtt/1GgHJYGoD9scog/DD/yI5dcvPrXNdNDEv7T53/6tL7ikl+EM3jcerII5/XIQzd1UHOdTi2w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz", + "integrity": "sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ==", "dev": true, "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" } }, @@ -18080,11 +18461,12 @@ "requires": {} }, "postcss-lab-function": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.0.4.tgz", - "integrity": "sha512-TAEW8X/ahMYV33mvLFQARtBPAy1VVJsiR9VVx3Pcbu+zlqQj0EIyJ/Ie1/EwxwIt530CWtEDzzTXBDzfdb+qIQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.1.2.tgz", + "integrity": "sha512-isudf5ldhg4fk16M8viAwAbg6Gv14lVO35N3Z/49NhbwPQ2xbiEoHgrRgpgQojosF4vF7jY653ktB6dDrUOR8Q==", "dev": true, "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" } }, @@ -18150,12 +18532,12 @@ } }, "postcss-nesting": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.2.tgz", - "integrity": "sha512-dJGmgmsvpzKoVMtDMQQG/T6FSqs6kDtUDirIfl4KnjMCiY9/ETX8jdKyCd20swSRAbUYkaBKV20pxkzxoOXLqQ==", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.3.tgz", + "integrity": "sha512-wUC+/YCik4wH3StsbC5fBG1s2Z3ZV74vjGqBFYtmYKlVxoio5TYGM06AiaKkQPPlkXWn72HKfS7Cw5PYxnoXSw==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.8" + "postcss-selector-parser": "^6.0.9" } }, "postcss-overflow-shorthand": { @@ -18328,9 +18710,9 @@ "dev": true }, "qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", "dev": true }, "queue-microtask": { @@ -18355,12 +18737,12 @@ "dev": true }, "raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", "dev": true, "requires": { - "bytes": "3.1.1", + "bytes": "3.1.2", "http-errors": "1.8.1", "iconv-lite": "0.4.24", "unpipe": "1.0.0" @@ -18616,9 +18998,9 @@ } }, "rxjs": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.3.tgz", - "integrity": "sha512-6162iC/N7L7K8q3UvdOMWix1ju+esADGrDaPrTu5XJmCv69YNdYoUaop/iatN8GHK+YHOdszPP+qygA0yi04zQ==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", "requires": { "tslib": "^2.1.0" } @@ -19113,14 +19495,14 @@ "dev": true }, "streamroller": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.2.tgz", - "integrity": "sha512-ur6y5S5dopOaRXBuRIZ1u6GC5bcEXHRZKgfBjfCglMhmIf+roVCECjvkEYzNQOXIN2/JPnkMPW/8B3CZoKaEPA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.5.tgz", + "integrity": "sha512-5uzTEUIi4OB5zy/H30kbUN/zpDNJsFUA+Z47ZL8EfrP93lcZvRLEqdbhdunEPa7CouuAzXXsHpCJ9dg90Umw7g==", "dev": true, "requires": { - "date-format": "^4.0.3", - "debug": "^4.1.1", - "fs-extra": "^10.0.0" + "date-format": "^4.0.5", + "debug": "^4.3.3", + "fs-extra": "^10.0.1" } }, "string_decoder": { @@ -19221,11 +19603,12 @@ } }, "terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.11.0.tgz", + "integrity": "sha512-uCA9DLanzzWSsN1UirKwylhhRz3aKPInlfmpGfw8VN6jHsAtu8HJtIpeeHHK23rxnE/cDc+yvmq5wqkIC6Kn0A==", "dev": true, "requires": { + "acorn": "^8.5.0", "commander": "^2.20.0", "source-map": "~0.7.2", "source-map-support": "~0.5.20" @@ -19375,9 +19758,9 @@ } }, "typed-assert": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.8.tgz", - "integrity": "sha512-5NkbXZUlmCE73Fs7gvkp1XXJWHYetPkg60QnQ2NXQmBYNFxbBr2zA8GCtaH4K2s2WhOmSlgiSTmrjrcm5tnM5g==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", "dev": true }, "typescript": { @@ -19843,17 +20226,17 @@ } }, "yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "dev": true }, "zone.js": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.4.tgz", - "integrity": "sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw==", + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.5.tgz", + "integrity": "sha512-D1/7VxEuQ7xk6z/kAROe4SUbd9CzxY4zOwVGnGHerd/SgLIVU5f4esDzQUsOCeArn933BZfWMKydH7l7dPEp0g==", "requires": { - "tslib": "^2.0.0" + "tslib": "^2.3.0" } } } From 1b7a7b18097675ff31cf26d34ff4a171ea966abb Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 19 Mar 2022 01:21:25 +0900 Subject: [PATCH 084/161] =?UTF-8?q?perf:=20bcdice=E3=82=92Dynamic=20Import?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bcdiceのコードをChunkに分離して初期ロードされるJSのサイズを改善する --- src/app/class/bcdice/bcdice-loader.ts | 13 +++++++ src/app/class/dice-bot.ts | 52 ++++++++++++--------------- 2 files changed, 36 insertions(+), 29 deletions(-) create mode 100644 src/app/class/bcdice/bcdice-loader.ts diff --git a/src/app/class/bcdice/bcdice-loader.ts b/src/app/class/bcdice/bcdice-loader.ts new file mode 100644 index 000000000..ae0b2ff7c --- /dev/null +++ b/src/app/class/bcdice/bcdice-loader.ts @@ -0,0 +1,13 @@ +import Loader from 'bcdice/lib/loader/loader'; + +// bcdice-js custom loader class +export default class BCDiceLoader extends Loader { + async dynamicImport(className: string): Promise { + await import( + /* webpackChunkName: "lib/bcdice/game_system/[request]" */ + /* webpackInclude: /\.js$/ */ + /* webpackExclude: /index.js$/ */ + `bcdice/lib/bcdice/game_system/${className}` + ); + } +} diff --git a/src/app/class/dice-bot.ts b/src/app/class/dice-bot.ts index ec9de523a..23ccf9823 100644 --- a/src/app/class/dice-bot.ts +++ b/src/app/class/dice-bot.ts @@ -1,7 +1,7 @@ -import Loader from 'bcdice/lib/loader/loader'; -import GameSystemClass from 'bcdice/lib/game_system'; import { GameSystemInfo } from 'bcdice/lib/bcdice/game_system_list.json'; +import GameSystemClass from 'bcdice/lib/game_system'; +import BCDiceLoader from './bcdice/bcdice-loader'; import { ChatMessage, ChatMessageContext } from './chat-message'; import { ChatTab } from './chat-tab'; import { SyncObject } from './core/synchronize-object/decorator'; @@ -16,35 +16,12 @@ interface DiceRollResult { isSecret: boolean; } -// bcdice-js custom loader class -class WebpackLoader extends Loader { - async dynamicImport(className: string): Promise { - await import( - /* webpackChunkName: "[request]" */ - /* webpackInclude: /\.js$/ */ - `bcdice/lib/bcdice/game_system/${className}` - ); - } -} - @SyncObject('dice-bot') export class DiceBot extends GameObject { - private static loader: WebpackLoader = new WebpackLoader(); - private static queue: PromiseQueue = new PromiseQueue('DiceBotQueue'); - - static diceBotInfos: GameSystemInfo[] = DiceBot.loader.listAvailableGameSystems().sort( - (a, b) => { - let aKey: string = a.sortKey; - let bKey: string = b.sortKey; - if (aKey < bKey) { - return -1; - } - if (aKey > bKey) { - return 1; - } - return 0 - } - ); + private static loader: BCDiceLoader; + private static queue: PromiseQueue = DiceBot.initializeDiceBotQueue(); + + static diceBotInfos: GameSystemInfo[] = []; // GameObject Lifecycle onStoreAdded() { @@ -153,4 +130,21 @@ export class DiceBot extends GameObject { : 'DiceBot'; return DiceBot.loader.dynamicLoad(id); } + + private static initializeDiceBotQueue(): PromiseQueue { + let queue = new PromiseQueue('DiceBotQueue'); + queue.add(async () => { + DiceBot.loader = new (await import( + /* webpackChunkName: "lib/bcdice/bcdice-loader" */ + './bcdice/bcdice-loader') + ).default(); + DiceBot.diceBotInfos = DiceBot.loader.listAvailableGameSystems() + .sort((a, b) => { + if (a.sortKey < b.sortKey) return -1; + if (a.sortKey > b.sortKey) return 1; + return 0; + }); + }); + return queue; + } } From 94d973607a0eff15ad1079c474e5d7e2f0c8554e Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 19 Mar 2022 01:44:45 +0900 Subject: [PATCH 085/161] =?UTF-8?q?fix:=20queue=E3=81=AE=E3=83=87=E3=83=83?= =?UTF-8?q?=E3=83=89=E3=83=AD=E3=83=83=E3=82=AF=E3=82=84loader=E3=81=AE?= =?UTF-8?q?=E5=88=9D=E6=9C=9F=E5=8C=96=E5=89=8D=E5=8F=82=E7=85=A7=E3=82=92?= =?UTF-8?q?=E9=98=B2=E6=AD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 処理順序に制約のあるコードは常にPromiseQueueで制御する --- src/app/class/dice-bot.ts | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/app/class/dice-bot.ts b/src/app/class/dice-bot.ts index 23ccf9823..07d11d52e 100644 --- a/src/app/class/dice-bot.ts +++ b/src/app/class/dice-bot.ts @@ -110,25 +110,23 @@ export class DiceBot extends GameObject { }); } - static getHelpMessage(gameType: string): Promise { - return DiceBot.queue.add(async (resolve, reject) => { - let help = ''; - try { - const gameSystem = await DiceBot.loadGameSystemAsync(gameType); - help = gameSystem.HELP_MESSAGE; - } catch (e) { - console.error(e); - } - resolve(help); - return; - }); + static async getHelpMessage(gameType: string): Promise { + try { + const gameSystem = await DiceBot.loadGameSystemAsync(gameType); + return gameSystem.HELP_MESSAGE; + } catch (e) { + console.error(e); + } + return ''; } - static loadGameSystemAsync(gameType: string): Promise { - const id = this.diceBotInfos.some((info) => info.id === gameType) - ? gameType - : 'DiceBot'; - return DiceBot.loader.dynamicLoad(id); + static async loadGameSystemAsync(gameType: string): Promise { + return await DiceBot.queue.add(() => { + const id = this.diceBotInfos.some((info) => info.id === gameType) + ? gameType + : 'DiceBot'; + return DiceBot.loader.dynamicLoad(id); + }); } private static initializeDiceBotQueue(): PromiseQueue { From 0428c75bd109e3c5a984a945f926e4f761b4e952 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 19 Mar 2022 01:54:53 +0900 Subject: [PATCH 086/161] =?UTF-8?q?fix:=20diceRollAsync()=E3=81=AE?= =?UTF-8?q?=E5=BC=95=E6=95=B0=E3=82=92=E5=85=83=E3=81=AB=E6=88=BB=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit このメソッド単体で他のクラスから実行されてもよい実装にする --- src/app/class/dice-bot.ts | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/src/app/class/dice-bot.ts b/src/app/class/dice-bot.ts index 07d11d52e..1488856fc 100644 --- a/src/app/class/dice-bot.ts +++ b/src/app/class/dice-bot.ts @@ -38,14 +38,13 @@ export class DiceBot extends GameObject { let regArray = /^((\d+)?[^\S\n]+)?([\S]*)?/ig.exec(text); let repeat: number = (regArray[2] != null) ? Number(regArray[2]) : 1; let rollText: string = (regArray[3] != null) ? regArray[3] : text; - const gameSystem = await DiceBot.loadGameSystemAsync(gameType); - if (!rollText || repeat < 1 || !gameSystem.COMMAND_PATTERN.test(rollText)) return; + if (!rollText || repeat < 1) return; // 繰り返しコマンドに変換 if (repeat > 1) { rollText = `x${repeat} ${rollText}` } - let rollResult = await DiceBot.diceRollAsync(rollText, gameSystem); + let rollResult = await DiceBot.diceRollAsync(rollText, gameType); if (!rollResult.result) return; this.sendResultMessage(rollResult, chatMessage); } catch (e) { @@ -91,23 +90,25 @@ export class DiceBot extends GameObject { if (chatTab) chatTab.addMessage(diceBotMessage); } - static diceRollAsync(message: string, gameSystem: GameSystemClass): Promise { - return DiceBot.queue.add(() => { - try { - const result = gameSystem.eval(message); - if (result) { - console.log('diceRoll!!!', result.text); - console.log('isSecret!!!', result.secret); - return { - result: `${gameSystem.ID} : ${result.text}`, - isSecret: result.secret, - }; - } - } catch (e) { - console.error(e); + static async diceRollAsync(message: string, gameType: string): Promise { + const empty: DiceRollResult = { result: '', isSecret: false }; + try { + const gameSystem = await DiceBot.loadGameSystemAsync(gameType); + if (!gameSystem?.COMMAND_PATTERN.test(message)) return empty; + + const result = gameSystem.eval(message); + if (result) { + console.log('diceRoll!!!', result.text); + console.log('isSecret!!!', result.secret); + return { + result: `${gameSystem.ID} : ${result.text}`, + isSecret: result.secret, + }; } - return { result: '', isSecret: false }; - }); + } catch (e) { + console.error(e); + } + return empty; } static async getHelpMessage(gameType: string): Promise { From 3d9f7a8cc85361017ec27e1699ede7abc8c2bf8a Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 19 Mar 2022 02:18:54 +0900 Subject: [PATCH 087/161] =?UTF-8?q?fix:=20DiceBot=E3=81=AE=E5=88=9D?= =?UTF-8?q?=E6=9C=9F=E5=8C=96=E3=81=8C=E5=AE=8C=E4=BA=86=E3=81=97=E3=81=9F?= =?UTF-8?q?=E3=82=BF=E3=82=A4=E3=83=9F=E3=83=B3=E3=82=B0=E3=81=A7ChangeDet?= =?UTF-8?q?ection=E3=82=92=E5=AE=9F=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/app.component.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index c62c2a50c..29329ac24 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -86,6 +86,7 @@ export class AppComponent implements AfterViewInit, OnDestroy { let diceBot: DiceBot = new DiceBot('DiceBot'); diceBot.initialize(); + DiceBot.getHelpMessage('').then(() => this.lazyNgZoneUpdate(true)); let jukebox: Jukebox = new Jukebox('Jukebox'); jukebox.initialize(); From 661d4e9b22b8db8eae88ff52cb491369fd6e811e Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 19 Mar 2022 02:21:34 +0900 Subject: [PATCH 088/161] =?UTF-8?q?fix:=20=E3=83=80=E3=82=A4=E3=82=B9?= =?UTF-8?q?=E3=83=9C=E3=83=83=E3=83=88=E4=B8=80=E8=A6=A7=E3=81=AE=E5=88=9D?= =?UTF-8?q?=E6=9C=9F=E5=8C=96=E3=81=8C=E5=AE=8C=E4=BA=86=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=81=BE=E3=81=A7=E3=83=80=E3=82=A4=E3=82=B9=E3=83=9C=E3=83=83?= =?UTF-8?q?=E3=83=88=E3=82=92=E9=81=B8=E6=8A=9E=E4=B8=8D=E5=8F=AF=E3=81=AB?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chat-input/chat-input.component.html | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/app/component/chat-input/chat-input.component.html b/src/app/component/chat-input/chat-input.component.html index c35922e2c..85df63fda 100644 --- a/src/app/component/chat-input/chat-input.component.html +++ b/src/app/component/chat-input/chat-input.component.html @@ -15,11 +15,18 @@ (あなた) - - + + + + + + +
From 2fe708cacab0a46869a979aeb407f324df811995 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 19 Mar 2022 02:30:47 +0900 Subject: [PATCH 089/161] =?UTF-8?q?fix:=20=E3=83=80=E3=82=A4=E3=82=B9?= =?UTF-8?q?=E3=83=9C=E3=83=83=E3=83=88=E9=81=B8=E6=8A=9E=E3=81=AE=E3=83=87?= =?UTF-8?q?=E3=83=95=E3=82=A9=E3=83=AB=E3=83=88=E3=81=AF=E7=A9=BA=E6=96=87?= =?UTF-8?q?=E5=AD=97=E3=81=A8=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 過去のセーブデータとの(ささやかな)互換性維持 - bcdice-jsの更新の影響を受け辛くする --- src/app/class/chat-palette.ts | 2 +- src/app/component/chat-palette/chat-palette.component.ts | 2 +- src/app/component/chat-window/chat-window.component.ts | 2 +- src/app/service/chat-message.service.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/class/chat-palette.ts b/src/app/class/chat-palette.ts index fe5479c09..1eb7fcea1 100644 --- a/src/app/class/chat-palette.ts +++ b/src/app/class/chat-palette.ts @@ -15,7 +15,7 @@ export interface PaletteVariable { @SyncObject('chat-palette') export class ChatPalette extends ObjectNode { - @SyncVar() dicebot: string = 'DiceBot'; + @SyncVar() dicebot: string = ''; //TODO: キャラシ項目のコピー get paletteLines(): PaletteLine[] { diff --git a/src/app/component/chat-palette/chat-palette.component.ts b/src/app/component/chat-palette/chat-palette.component.ts index 9fd4f4de5..ce6b9bf2f 100644 --- a/src/app/component/chat-palette/chat-palette.component.ts +++ b/src/app/component/chat-palette/chat-palette.component.ts @@ -23,7 +23,7 @@ export class ChatPaletteComponent implements OnInit, OnDestroy { get palette(): ChatPalette { return this.character.chatPalette; } private _gameType: string = ''; - get gameType(): string { return this._gameType }; + get gameType(): string { return !this._gameType ? 'DiceBot' : this._gameType; }; set gameType(gameType: string) { this._gameType = gameType; if (this.character.chatPalette) this.character.chatPalette.dicebot = gameType; diff --git a/src/app/component/chat-window/chat-window.component.ts b/src/app/component/chat-window/chat-window.component.ts index 67653607a..9dbddef1a 100644 --- a/src/app/component/chat-window/chat-window.component.ts +++ b/src/app/component/chat-window/chat-window.component.ts @@ -17,7 +17,7 @@ import { PointerDeviceService } from 'service/pointer-device.service'; export class ChatWindowComponent implements OnInit, OnDestroy, AfterViewInit { sendFrom: string = 'Guest'; - get gameType(): string { return this.chatMessageService.gameType; } + get gameType(): string { return !this.chatMessageService.gameType ? 'DiceBot' : this.chatMessageService.gameType; } set gameType(gameType: string) { this.chatMessageService.gameType = gameType; } private _chatTabidentifier: string = ''; diff --git a/src/app/service/chat-message.service.ts b/src/app/service/chat-message.service.ts index 9da031be9..b61dc0421 100644 --- a/src/app/service/chat-message.service.ts +++ b/src/app/service/chat-message.service.ts @@ -20,7 +20,7 @@ export class ChatMessageService { 'https://worldtimeapi.org/api/ip', ]; - gameType: string = 'DiceBot'; + gameType: string = ''; constructor() { } From 42a6dc52f30bca6d07ce27567036e2ce77ec7907 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 19 Mar 2022 03:11:50 +0900 Subject: [PATCH 090/161] =?UTF-8?q?fix:=20=E3=83=80=E3=82=A4=E3=82=B9?= =?UTF-8?q?=E3=83=9C=E3=83=83=E3=83=88=E3=81=AE=E3=83=A1=E3=83=83=E3=82=BB?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E5=87=BA=E5=8A=9B=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BCDiceのメッセージ形式を尊重する --- src/app/class/dice-bot.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/app/class/dice-bot.ts b/src/app/class/dice-bot.ts index 1488856fc..8d001fa36 100644 --- a/src/app/class/dice-bot.ts +++ b/src/app/class/dice-bot.ts @@ -12,6 +12,7 @@ import { PromiseQueue } from './core/system/util/promise-queue'; import { StringUtil } from './core/system/util/string-util'; interface DiceRollResult { + id: string; result: string; isSecret: boolean; } @@ -61,13 +62,12 @@ export class DiceBot extends GameObject { } private sendResultMessage(rollResult: DiceRollResult, originalMessage: ChatMessage) { + let id: string = rollResult.id.split(':')[0]; let result: string = rollResult.result; let isSecret: boolean = rollResult.isSecret; if (result.length < 1) return; - result = result.replace(/[>]/g, s => '→').trim(); - let diceBotMessage: ChatMessageContext = { identifier: '', tabIdentifier: originalMessage.tabIdentifier, @@ -75,8 +75,8 @@ export class DiceBot extends GameObject { from: 'System-BCDice', timestamp: originalMessage.timestamp + 1, imageIdentifier: '', - tag: isSecret ? 'system secret' : 'system', - name: isSecret ? '' : '', + tag: `system dicebot${isSecret ? ' secret' : ''}`, + name: `${id} : ${originalMessage.name}${isSecret ? ' (Secret)' : ''}`, text: result }; @@ -91,7 +91,7 @@ export class DiceBot extends GameObject { } static async diceRollAsync(message: string, gameType: string): Promise { - const empty: DiceRollResult = { result: '', isSecret: false }; + const empty: DiceRollResult = { id: gameType, result: '', isSecret: false }; try { const gameSystem = await DiceBot.loadGameSystemAsync(gameType); if (!gameSystem?.COMMAND_PATTERN.test(message)) return empty; @@ -101,7 +101,8 @@ export class DiceBot extends GameObject { console.log('diceRoll!!!', result.text); console.log('isSecret!!!', result.secret); return { - result: `${gameSystem.ID} : ${result.text}`, + id: gameSystem.ID, + result: result.text, isSecret: result.secret, }; } From f900a77f5f902ed8c0ddcf5b0f99302f97446728 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 19 Mar 2022 03:13:34 +0900 Subject: [PATCH 091/161] =?UTF-8?q?fix:=20"DiceBot"=E3=81=AF"=E3=83=80?= =?UTF-8?q?=E3=82=A4=E3=82=B9=E3=83=9C=E3=83=83=E3=83=88=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E3=81=AA=E3=81=97"=E3=81=A8=E3=81=97=E3=81=A6=E8=A1=A8?= =?UTF-8?q?=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/component/chat-input/chat-input.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/component/chat-input/chat-input.component.html b/src/app/component/chat-input/chat-input.component.html index 85df63fda..558a9acd3 100644 --- a/src/app/component/chat-input/chat-input.component.html +++ b/src/app/component/chat-input/chat-input.component.html @@ -18,7 +18,7 @@ From 9a3beffce77371419e2aabceccdb700d6ee697aa Mon Sep 17 00:00:00 2001 From: TK11235 Date: Wed, 30 Mar 2022 02:24:03 +0900 Subject: [PATCH 092/161] =?UTF-8?q?build:=20maximumError=E3=81=AE=E5=80=A4?= =?UTF-8?q?=E3=82=92v1.13.2=E6=99=82=E7=82=B9=E3=81=AE=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E5=80=A4=E3=81=AB=E6=88=BB=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ビルドエラーを回避する為の一時的な設定変更. 将来的にはソースコードの改善でmaximumError由来のビルドエラーを解消するべき. --- angular.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/angular.json b/angular.json index 5893eb9ef..ec9bd0ebb 100644 --- a/angular.json +++ b/angular.json @@ -43,12 +43,12 @@ { "type": "initial", "maximumWarning": "500kb", - "maximumError": "1mb" + "maximumError": "5mb" }, { "type": "anyComponentStyle", "maximumWarning": "2kb", - "maximumError": "4kb" + "maximumError": "10kb" } ], "fileReplacements": [ From 028b5d8f732fd6bb13dc7223b42881d3c82703d9 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 2 Apr 2022 14:50:07 +0900 Subject: [PATCH 093/161] =?UTF-8?q?docs:=20=E3=83=90=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E6=83=85=E5=A0=B1=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 2 +- package.json | 2 +- src/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3106bed1b..d97fb9cb7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "udonarium", - "version": "1.13.2", + "version": "1.14.0", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 50bb6daa3..9bb2bf9fd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "udonarium", - "version": "1.13.2", + "version": "1.14.0", "license": "MIT", "scripts": { "ng": "ng", diff --git a/src/index.html b/src/index.html index f0fb28fcf..82aa13898 100644 --- a/src/index.html +++ b/src/index.html @@ -3,7 +3,7 @@ - Udonarium 1.13.2 + Udonarium 1.14.0 From 51ab1e01abb48f68614cc62618d78c78debaa07e Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 4 Apr 2022 23:19:17 +0900 Subject: [PATCH 094/161] =?UTF-8?q?fix:=20=E5=85=B1=E6=9C=89=E3=83=A1?= =?UTF-8?q?=E3=83=A2=E3=82=92=E7=A7=BB=E5=8B=95=E3=81=95=E3=81=9B=E3=82=8B?= =?UTF-8?q?=E9=9A=9B=E3=81=AE=E5=BA=A7=E6=A8=99=E8=A8=88=E7=AE=97=E3=81=8C?= =?UTF-8?q?=E6=AD=A3=E3=81=97=E3=81=8F=E8=A1=8C=E3=82=8F=E3=82=8C=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DOMRectのwidthが0になってしまうとドラッグ移動する際の距離補正を正しく計算できない為、応急処置として1pxのwidthを設定しておく. --- src/app/component/text-note/text-note.component.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/component/text-note/text-note.component.css b/src/app/component/text-note/text-note.component.css index a206af08d..78caff370 100644 --- a/src/app/component/text-note/text-note.component.css +++ b/src/app/component/text-note/text-note.component.css @@ -38,7 +38,7 @@ -moz-user-drag: none; -webkit-user-drag: none; - width: 0; + width: 1px; height:0; } From df6c3eca47084fe328f8703b331a6ca8c9d04003 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 4 Apr 2022 23:19:52 +0900 Subject: [PATCH 095/161] =?UTF-8?q?refactor:=20=E4=B8=8D=E8=A6=81=E3=81=AA?= =?UTF-8?q?CSS=E5=AE=9A=E7=BE=A9=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/styles.css | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/src/assets/styles.css b/src/assets/styles.css index 2334a0d59..97716ac53 100644 --- a/src/assets/styles.css +++ b/src/assets/styles.css @@ -1,24 +1,9 @@ body { font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Verdana, Meiryo, "M+ 1p", sans-serif; } - -h2 { - color: #444; - /*font-family: Arial, Helvetica, sans-serif;*/ - font-weight: lighter; -} -body { - margin: 2em; -} -body, input[text], button { - color: #888; - /*font-family: Cambria, Georgia; */ -} button { - /*font-family: Arial;*/ background-color: #eee; color: #444; - /*border: none;*/ border: solid 1px #CCC; padding: 0.35em 0.7em; margin: 0 2px; @@ -52,11 +37,6 @@ button.danger:disabled { color: #eee; } /* everywhere else */ -/* -* { - font-family: Arial, Helvetica, sans-serif; -} -*/ html, body { width: 100%; From a3ccb65dd67753a78d37c050ed5f692b8affb55d Mon Sep 17 00:00:00 2001 From: TK11235 Date: Tue, 5 Apr 2022 00:25:41 +0900 Subject: [PATCH 096/161] =?UTF-8?q?build:=20=E4=BE=9D=E5=AD=98=E3=83=91?= =?UTF-8?q?=E3=83=83=E3=82=B1=E3=83=BC=E3=82=B8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 1528 +++++++++++++++++++++++++++++---------------- package.json | 26 +- 2 files changed, 998 insertions(+), 556 deletions(-) diff --git a/package-lock.json b/package-lock.json index d97fb9cb7..5e1753631 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,22 +6,22 @@ "packages": { "": { "name": "udonarium", - "version": "1.13.2", + "version": "1.14.0", "license": "MIT", "dependencies": { - "@angular/animations": "^13.2.1", - "@angular/common": "^13.2.1", - "@angular/compiler": "^13.2.1", - "@angular/core": "^13.2.1", - "@angular/forms": "^13.2.1", - "@angular/platform-browser": "^13.2.1", - "@angular/platform-browser-dynamic": "^13.2.1", - "@angular/router": "^13.2.1", - "bcdice": "^3.5.0", + "@angular/animations": "^13.3.1", + "@angular/common": "^13.3.1", + "@angular/compiler": "^13.3.1", + "@angular/core": "^13.3.1", + "@angular/forms": "^13.3.1", + "@angular/platform-browser": "^13.3.1", + "@angular/platform-browser-dynamic": "^13.3.1", + "@angular/router": "^13.3.1", + "bcdice": "^3.5.1", "crypto-js": "^3.3.0", "file-saver": "^2.0.5", "hammerjs": "^2.0.8", - "js-yaml": "^4.0.0", + "js-yaml": "^4.1.0", "jszip": "~3.1.5", "lzbase62": "^2.0.0", "msgpack-lite": "^0.1.26", @@ -32,9 +32,9 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "~13.2.2", - "@angular/cli": "^13.2.2", - "@angular/compiler-cli": "^13.2.1", + "@angular-devkit/build-angular": "~13.3.1", + "@angular/cli": "^13.3.1", + "@angular/compiler-cli": "^13.3.1", "@types/crypto-js": "^4.0.1", "@types/file-saver": "^2.0.1", "@types/hammerjs": "^2.0.39", @@ -69,12 +69,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1302.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.6.tgz", - "integrity": "sha512-NztzorUMfwJeRaT7SY00Y8WSqc2lQYuF11yNoyEm7Dae3V7VZ28rW2Z9RwibP27rYQL0RjSMaz2wKITHX2vOAw==", + "version": "0.1303.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.1.tgz", + "integrity": "sha512-ppaLzNZPrqrI96ddgm1RuEALVpWZsmHbIPLDd0GBwhF6aOkwF0LpZHd5XyS4ktGFZPReiFIjWSVtqV5vaBdRsw==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.2.6", + "@angular-devkit/core": "13.3.1", "rxjs": "6.6.7" }, "engines": { @@ -102,15 +102,15 @@ "dev": true }, "node_modules/@angular-devkit/build-angular": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.2.6.tgz", - "integrity": "sha512-Y2ojy6xbZ0kwScppcutLHBP8eW0qNOjburTISSBU/L5l/9FOeZ1E7yAreKuVu/qibZiLbSJfAhk+SLwhRHFSSQ==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.1.tgz", + "integrity": "sha512-xxBW4zZZM+lewW0nEpk9SXw6BMYhxe8WI/FjyEroOV8G2IuOrjZ4112QOpk6jCgmPHSOEldbltEdwoVLAnu09Q==", "dev": true, "dependencies": { "@ampproject/remapping": "1.1.1", - "@angular-devkit/architect": "0.1302.6", - "@angular-devkit/build-webpack": "0.1302.6", - "@angular-devkit/core": "13.2.6", + "@angular-devkit/architect": "0.1303.1", + "@angular-devkit/build-webpack": "0.1303.1", + "@angular-devkit/core": "13.3.1", "@babel/core": "7.16.12", "@babel/generator": "7.16.8", "@babel/helper-annotate-as-pure": "7.16.7", @@ -121,7 +121,7 @@ "@babel/runtime": "7.16.7", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.6", - "@ngtools/webpack": "13.2.6", + "@ngtools/webpack": "13.3.1", "ansi-colors": "4.1.1", "babel-loader": "8.2.3", "babel-plugin-istanbul": "6.1.1", @@ -155,7 +155,7 @@ "regenerator-runtime": "0.13.9", "resolve-url-loader": "5.0.0", "rxjs": "6.6.7", - "sass": "1.49.0", + "sass": "1.49.9", "sass-loader": "12.4.0", "semver": "7.3.5", "source-map-loader": "3.0.1", @@ -166,7 +166,7 @@ "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.3.1", - "webpack": "5.67.0", + "webpack": "5.70.0", "webpack-dev-middleware": "5.3.0", "webpack-dev-server": "4.7.3", "webpack-merge": "5.8.0", @@ -181,14 +181,14 @@ "esbuild": "0.14.22" }, "peerDependencies": { - "@angular/compiler-cli": "^13.0.0", - "@angular/localize": "^13.0.0", - "@angular/service-worker": "^13.0.0", + "@angular/compiler-cli": "^13.0.0 || ^13.3.0-rc.0", + "@angular/localize": "^13.0.0 || ^13.3.0-rc.0", + "@angular/service-worker": "^13.0.0 || ^13.3.0-rc.0", "karma": "^6.3.0", "ng-packagr": "^13.0.0", "protractor": "^7.0.0", "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=4.4.3 <4.6" + "typescript": ">=4.4.3 <4.7" }, "peerDependenciesMeta": { "@angular/localize": { @@ -230,12 +230,12 @@ "dev": true }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1302.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1302.6.tgz", - "integrity": "sha512-TYEh2n9tPe932rEIgdiSpojOqtDppW2jzb/empVqCkLF7WUZsXKvTanttZC34L6R2VD6SAGWhb6JDg75ghUVYA==", + "version": "0.1303.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.1.tgz", + "integrity": "sha512-KSnR3y2q5hxh7t7ZSi0Emv/Kh9+D105JaEeyEqjqRjLdZSd2m6eAxbSUMNOAsbqnJTMCfzU5AG7jhbujuge0dQ==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1302.6", + "@angular-devkit/architect": "0.1303.1", "rxjs": "6.6.7" }, "engines": { @@ -267,9 +267,9 @@ "dev": true }, "node_modules/@angular-devkit/core": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.2.6.tgz", - "integrity": "sha512-8h2mWdBTN/dYwZuzKMg2IODlOWMdbJcpQG4XVrkk9ejCPP+3aX5Aa3glCe/voN6eBNiRfs8YDM0jxmpN2aWVtg==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.1.tgz", + "integrity": "sha512-eXAcQaP1mn6rnQb+5bv5NsamY6b34UYM7G+S154Hnma6CTTSGBtcmoNAJs8cekuFqWlw7YgpB/e15jR5OLPkDA==", "dev": true, "dependencies": { "ajv": "8.9.0", @@ -312,12 +312,12 @@ "dev": true }, "node_modules/@angular-devkit/schematics": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.2.6.tgz", - "integrity": "sha512-mPgSqdnZRuPSMeUA+T+mwVCrq2yhXpcYm1/Rjbhy09CyHs4wSrFv21WHCrE6shlvXpcmwr0n+I0DIeagAPmjUA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.1.tgz", + "integrity": "sha512-DxXMjlq/sALcHuONZRMTBX5k30XPfN4b6Ue4k7Xl8JKZqyHhEzfXaZzgD9u2cwb7wybKEeF/BZ5eJd8JG525og==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.2.6", + "@angular-devkit/core": "13.3.1", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -348,9 +348,9 @@ "dev": true }, "node_modules/@angular/animations": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.2.6.tgz", - "integrity": "sha512-DrjpKo68uR3lSLQQXosoTCbjKQS6IKRCpR14E2t8fo0AX8i2hkB8je4SrhdCyB7FgFN7l2kgUYo4Qa8+BOB+aA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.1.tgz", + "integrity": "sha512-O6DVOk++Bz8Bcz2AAnd1wz1OFzsy3XjmA4o1Mx+DNLRwrLvWHuq33rTVs0Pur7psiKz1lym9kMrY9YwE3s0SJA==", "dependencies": { "tslib": "^2.3.0" }, @@ -358,20 +358,20 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "13.2.6" + "@angular/core": "13.3.1" } }, "node_modules/@angular/cli": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.2.6.tgz", - "integrity": "sha512-xIjEaQI5sWemXXc7GXLm4u9UL5sjtrQL/y1PJvvk/Jsa8+kIT+MutOfZfC7zcdAh9fqHd8mokH3guFV8BJdFxA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.1.tgz", + "integrity": "sha512-0uwU8v3V/2s95X4cZT582J6upReT/ZNw/VAf4p4q51JN+BBvdCEb251xTF+TcOojyToFyJYvg8T28XSrsNsmTQ==", "dev": true, "hasInstallScript": true, "dependencies": { - "@angular-devkit/architect": "0.1302.6", - "@angular-devkit/core": "13.2.6", - "@angular-devkit/schematics": "13.2.6", - "@schematics/angular": "13.2.6", + "@angular-devkit/architect": "0.1303.1", + "@angular-devkit/core": "13.3.1", + "@angular-devkit/schematics": "13.3.1", + "@schematics/angular": "13.3.1", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.3", @@ -398,9 +398,9 @@ } }, "node_modules/@angular/common": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.2.6.tgz", - "integrity": "sha512-t4XRb9db4UeRcPs5aHNtGuXRKSvGBlTEr0zzSeoKzHD9TCaO4dSDISh9obS9hThaPuBmPKRUHN5KE1HFmqnSHg==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.1.tgz", + "integrity": "sha512-Var5ChoX8kZl9cbIWbW7Reb3Xz3t1c1XHwq1k+oK2fgrPdEfypY9n/6DxyXOtSEGb9aV7ZCaxcv2c5JUKR3OPg==", "dependencies": { "tslib": "^2.3.0" }, @@ -408,14 +408,14 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "13.2.6", + "@angular/core": "13.3.1", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.2.6.tgz", - "integrity": "sha512-LHU29J2/c/03WHkwtzUSElTBsXbzkKdYARodnNfsFdLPsWhyvzO3cqlcZYteFJxEy3dVH+ZrYDjqQ9Sp17aIgA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.1.tgz", + "integrity": "sha512-ppJURRRDPZB6UaZctH6yBsznZXB7wZdCpfy5yo4lFE4k8rygfV80TmnrbJBZXNNq057VK48Bap1tsehFwckjog==", "dependencies": { "tslib": "^2.3.0" }, @@ -424,9 +424,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.2.6.tgz", - "integrity": "sha512-QtlLKj3m6a2nkewFxhg+a3tQ2gEIBzMfI2c1laWUfAfJJ56phj79k8Z/kf2HQxypphWixyTK+ugpTlMdvvOquA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.1.tgz", + "integrity": "sha512-dImxLUITNwODlXaLcEACw10bxTiajWEQz3sLwhT/936UH+MNtM/RyLJ0M7xDvILDqq77W3psK5/M6F3M1mUpew==", "dev": true, "dependencies": { "@babel/core": "^7.17.2", @@ -449,8 +449,8 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "13.2.6", - "typescript": ">=4.4.2 <4.6" + "@angular/compiler": "13.3.1", + "typescript": ">=4.4.2 <4.7" } }, "node_modules/@angular/compiler-cli/node_modules/@ampproject/remapping": { @@ -466,9 +466,9 @@ } }, "node_modules/@angular/compiler-cli/node_modules/@babel/core": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.7.tgz", - "integrity": "sha512-djHlEfFHnSnTAcPb7dATbiM5HxGOP98+3JLBZtjRb5I7RXrw7kFRoG2dXM8cm3H+o11A8IFH/uprmJpwFynRNQ==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.8.tgz", + "integrity": "sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", @@ -476,8 +476,8 @@ "@babel/generator": "^7.17.7", "@babel/helper-compilation-targets": "^7.17.7", "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.7", - "@babel/parser": "^7.17.7", + "@babel/helpers": "^7.17.8", + "@babel/parser": "^7.17.8", "@babel/template": "^7.16.7", "@babel/traverse": "^7.17.3", "@babel/types": "^7.17.0", @@ -540,9 +540,9 @@ } }, "node_modules/@angular/core": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.2.6.tgz", - "integrity": "sha512-ctWsxuaSO3d3afLW+wkJSyiEIA2uhaTKNps9x5wz/oZJDaUDYVa4PM4x7/UHn2bXzBjXjN9LSW8h9F31iwmcTg==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.1.tgz", + "integrity": "sha512-ZU/B9jEiZ0jadRkRL9Sb2btzqgQ0ylx380PfRQaojVIsij/EO6+jOSHIo5upMIGu/OvkggfweShJGlylCOrOXA==", "dependencies": { "tslib": "^2.3.0" }, @@ -555,9 +555,9 @@ } }, "node_modules/@angular/forms": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.2.6.tgz", - "integrity": "sha512-3IikvNtO0RBiGb2AWl8aYcE3ivXHPIJz+JOn9Wz9XXSkYx75D3GjuJlz+fVIgz+7Q7tJuS6Q2E5qat/ldeDmoA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.1.tgz", + "integrity": "sha512-S6a/CEq1ht0vw2epuESiO551dsyLQTb/HuwceIBlsX2JqRRccynYlyx92gsDAo4hD2F0q+EeqZEPuq3oQIK43A==", "dependencies": { "tslib": "^2.3.0" }, @@ -565,16 +565,16 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.2.6", - "@angular/core": "13.2.6", - "@angular/platform-browser": "13.2.6", + "@angular/common": "13.3.1", + "@angular/core": "13.3.1", + "@angular/platform-browser": "13.3.1", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/platform-browser": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.2.6.tgz", - "integrity": "sha512-Gc/1TqysW+P+K3NeQihmHWs4KF1mjJT20s06r+YcETnPP11uPk+UxQl7gJNsDV587DYO/wT3oISXVpRw4UJhdQ==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.1.tgz", + "integrity": "sha512-WtyrkK0pLYj6w7pz3xk8zlhWL1NwGCWT+k7YxEjBOONCIXlZvCqWVzWo4nNQn9Xqxd+z1FVI0dssDwZm2TD+Eg==", "dependencies": { "tslib": "^2.3.0" }, @@ -582,9 +582,9 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "13.2.6", - "@angular/common": "13.2.6", - "@angular/core": "13.2.6" + "@angular/animations": "13.3.1", + "@angular/common": "13.3.1", + "@angular/core": "13.3.1" }, "peerDependenciesMeta": { "@angular/animations": { @@ -593,9 +593,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.2.6.tgz", - "integrity": "sha512-m77+pzwZw+4kiRhxzrj1kE3N1K82I8Xt+vEBKSL2Xv42hCX0T37erC6KlztFEDj4A68s5+/0C5vfwhEiDcr/Cw==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.1.tgz", + "integrity": "sha512-TKV63SSyjrv5EsD03PloCbo8ZrJq5owkJ38E2FO/VvJAV3xu3Ey0SnoikNZMd8o3rh7+ocuT5K9Xcr4YuKVgEA==", "dependencies": { "tslib": "^2.3.0" }, @@ -603,16 +603,16 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.2.6", - "@angular/compiler": "13.2.6", - "@angular/core": "13.2.6", - "@angular/platform-browser": "13.2.6" + "@angular/common": "13.3.1", + "@angular/compiler": "13.3.1", + "@angular/core": "13.3.1", + "@angular/platform-browser": "13.3.1" } }, "node_modules/@angular/router": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.2.6.tgz", - "integrity": "sha512-dA9vL4mPLp+iNegzuvm9FaEWirFI2ZK3WQgbdoxoIpneym+BxRTkNDzPcvEaqfUf7eDGRBqlWakFDrd+H2QEbg==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.1.tgz", + "integrity": "sha512-YpZLjI4UI9KK6x8yn41XMrBWZgVb5JyJR7KNhQXB7WiX8bVH5SZzFRkjR3qUxTGaxe6I7KFvzySwm4JTYNj+xw==", "dependencies": { "tslib": "^2.3.0" }, @@ -620,9 +620,9 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.2.6", - "@angular/core": "13.2.6", - "@angular/platform-browser": "13.2.6", + "@angular/common": "13.3.1", + "@angular/core": "13.3.1", + "@angular/platform-browser": "13.3.1", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -1067,9 +1067,9 @@ } }, "node_modules/@babel/helpers": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.7.tgz", - "integrity": "sha512-TKsj9NkjJfTBxM7Phfy7kv6yYc4ZcOo+AaWGqQOKTPDOmcGkIFb5xNA746eKisQkm4yavUYh4InYM9S+VnO01w==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz", + "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==", "dev": true, "dependencies": { "@babel/template": "^7.16.7", @@ -1095,9 +1095,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.7.tgz", - "integrity": "sha512-bm3AQf45vR4gKggRfvJdYJ0gFLoCbsPxiFLSH6hTVYABptNHY6l9NrhnucVjQ/X+SPtLANT9lc0fFhikj+VBRA==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1822,13 +1822,13 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", - "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" @@ -2406,9 +2406,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.2.6.tgz", - "integrity": "sha512-N8SvRV91+/57TcAfbghc0k0tKCukw/7KqbDaLPAQTGFekJ4xMGT3elMzOyBXTH3Hvp5HL8/hiBt2tG04qiMf+w==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.1.tgz", + "integrity": "sha512-40iEqAA/l882MPbGuG5EYxzsPWJ37fT4fF22SkPLX2eBgNhJ4K8XMt0gqcFhkHUsSe63frg1qjQ1Pd31msu0bQ==", "dev": true, "engines": { "node": "^12.20.0 || ^14.15.0 || >=16.10.0", @@ -2417,7 +2417,7 @@ }, "peerDependencies": { "@angular/compiler-cli": "^13.0.0", - "typescript": ">=4.4.3 <4.6", + "typescript": ">=4.4.3 <4.7", "webpack": "^5.30.0" } }, @@ -2554,13 +2554,13 @@ } }, "node_modules/@schematics/angular": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.2.6.tgz", - "integrity": "sha512-8NzHMX9+FSgaB0lJYxlTJv9OcBuolwZJqo9M/yX3RPSqSHghA33jWwgVbV551hBJOpbVEePerG1DQkIC99DXKA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.1.tgz", + "integrity": "sha512-+lrK/d1eJsAK6d6E9TDeg3Vc71bDy1KsE8M+lEINdX9Wax22mAz4pw20X9RSCw5RHgn+XcNUuMsgRJAwVhDNpg==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.2.6", - "@angular-devkit/schematics": "13.2.6", + "@angular-devkit/core": "13.3.1", + "@angular-devkit/schematics": "13.3.1", "jsonc-parser": "3.0.0" }, "engines": { @@ -2670,9 +2670,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, "node_modules/@types/express": { @@ -2720,9 +2720,9 @@ } }, "node_modules/@types/jasmine": { - "version": "3.10.4", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.4.tgz", - "integrity": "sha512-7UAoOBYJpaZKmpJ8esMUIMl6pSdReliPQjviOOikWdQ7eVr4Hq8YbpeXyfXFKflZv8ymDFhYdTjVabbP2s4K4Q==", + "version": "3.10.5", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.5.tgz", + "integrity": "sha512-RYxEJkk/RK1S6W0nMOx9Mxm5v2bKwAVjzTHiBcHkQskwKDqHKHjSU46jx/q9IffyuctNl8ebaAjb5/461faKqQ==", "dev": true }, "node_modules/@types/jasminewd2": { @@ -2741,9 +2741,9 @@ "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz", - "integrity": "sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "node_modules/@types/jszip": { @@ -3113,6 +3113,15 @@ "node": ">= 8.0.0" } }, + "node_modules/agentkeepalive/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -3621,24 +3630,27 @@ } }, "node_modules/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "dev": true, "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/body-parser/node_modules/debug": { @@ -3838,14 +3850,20 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001317", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001317.tgz", - "integrity": "sha512-xIZLh8gBm4dqNX0gkzrBeyI86J2eCjWzYAs40q88smG844YIrN4tVQl/RhquHvKEKImWWFIVh1Lxe5n1G/N+GQ==", + "version": "1.0.30001325", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001325.tgz", + "integrity": "sha512-sB1bZHjseSjDtijV1Hb7PB2Zd58Kyx+n/9EotvZ4Qcz2K3d0lWB8dB4nb8wN/TsOGFq3UuAm0zQZNQ4SoR7TrQ==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, "node_modules/chalk": { "version": "2.4.2", @@ -4560,14 +4578,14 @@ } }, "node_modules/css-select": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", - "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "dependencies": { "boolbase": "^1.0.0", - "css-what": "^5.1.0", - "domhandler": "^4.3.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", "domutils": "^2.8.0", "nth-check": "^2.0.1" }, @@ -4576,9 +4594,9 @@ } }, "node_modules/css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, "engines": { "node": ">= 6" @@ -4621,9 +4639,9 @@ "dev": true }, "node_modules/date-format": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.5.tgz", - "integrity": "sha512-zBhRiN/M0gDxUoM2xRtzTjJzSg0XEi1ofYpF84PfXeS3hN2PsGxmc7jw3DNQtFlimRbMmob5FC3G0cJq6jQQpw==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.6.tgz", + "integrity": "sha512-B9vvg5rHuQ8cbUXE/RMWMyX2YA5TecT3jKF5fLtGNlzPlU7zblSPmAm2OImDbWL+LDOQ6pUm+4LOFz+ywS41Zw==", "dev": true, "engines": { "node": ">=4.0" @@ -4781,12 +4799,12 @@ "dev": true }, "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/dependency-graph": { @@ -4799,10 +4817,14 @@ } }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, "node_modules/detect-node": { "version": "2.1.0", @@ -4892,9 +4914,9 @@ ] }, "node_modules/domhandler": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", - "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "dependencies": { "domelementtype": "^2.2.0" @@ -4927,9 +4949,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.85", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.85.tgz", - "integrity": "sha512-K9AsQ41WS2bjZUFpRWfvaS4RjEcRCamEkBJN1Z1TQILBfP1H8QnJ9ti0wiLiMv0sRjX3EHKzgs9jDnmGFx2jXg==", + "version": "1.4.103", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.103.tgz", + "integrity": "sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==", "dev": true }, "node_modules/emoji-regex": { @@ -5633,6 +5655,27 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, + "node_modules/express/node_modules/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -5642,12 +5685,76 @@ "ms": "2.0.0" } }, + "node_modules/express/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/express/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -5802,6 +5909,18 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -5948,9 +6067,9 @@ "dev": true }, "node_modules/gauge": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.3.tgz", - "integrity": "sha512-ICw1DhAwMtb22rYFwEHgJcx1JCwJGv3x6G0OQUq56Nge+H4Q8JEwr8iveS0XFlsUNSI67F5ffMGK25bK4Pmskw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, "dependencies": { "aproba": "^1.0.3 || ^2.0.0", @@ -5963,7 +6082,7 @@ "wide-align": "^1.1.5" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/gensync": { @@ -6208,9 +6327,9 @@ } }, "node_modules/html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", "dev": true }, "node_modules/html-escaper": { @@ -6232,19 +6351,28 @@ "dev": true }, "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "dependencies": { - "depd": "~1.1.2", + "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", + "statuses": "2.0.1", "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" } }, "node_modules/http-parser-js": { @@ -6848,9 +6976,9 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "node_modules/isbinaryfile": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", - "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true, "engines": { "node": ">= 8.0.0" @@ -7071,13 +7199,10 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "json5": "lib/cli.js" }, @@ -7224,9 +7349,9 @@ } }, "node_modules/karma-jasmine": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", - "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.2.tgz", + "integrity": "sha512-ggi84RMNQffSDmWSyyt4zxzh2CQGwsxvYYsprgyR1j8ikzIduEdOlcLvXjZGwXG/0j41KUXOWsUCBfbEHPWP9g==", "dev": true, "dependencies": { "jasmine-core": "^3.6.0" @@ -7265,12 +7390,12 @@ } }, "node_modules/karma/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "dependencies": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" @@ -7604,21 +7729,38 @@ } }, "node_modules/log4js": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.3.tgz", - "integrity": "sha512-H/oQKcCVIhQ8zCtUh5aftdp9eRpGyVB1M5sKzAJ0i10q5jS+YXk133vtLgzT1RIoWMbIn7QD1LUto8a1hqh6gA==", + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.4.tgz", + "integrity": "sha512-ncaWPsuw9Vl1CKA406hVnJLGQKy1OHx6buk8J4rE2lVW+NW5Y82G5/DIloO7NkqLOUtNPEANaWC1kZYVjXssPw==", "dev": true, "dependencies": { - "date-format": "^4.0.5", - "debug": "^4.3.3", + "date-format": "^4.0.6", + "debug": "^4.3.4", "flatted": "^3.2.5", "rfdc": "^1.3.0", - "streamroller": "^3.0.5" + "streamroller": "^3.0.6" }, "engines": { "node": ">=8.0" } }, + "node_modules/log4js/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -7751,13 +7893,13 @@ } }, "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" @@ -7862,9 +8004,9 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "node_modules/minipass": { @@ -8025,9 +8167,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", + "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -8102,9 +8244,9 @@ "optional": true }, "node_modules/node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, "engines": { "node": ">= 6.13.0" @@ -8135,9 +8277,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", "dev": true, "optional": true, "bin": { @@ -8288,6 +8430,19 @@ "node": "^12.13.0 || ^14.15.0 || >=16" } }, + "node_modules/npm-registry-fetch/node_modules/@npmcli/fs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", + "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/npm-registry-fetch/node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -8298,18 +8453,18 @@ } }, "node_modules/npm-registry-fetch/node_modules/cacache": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.1.tgz", - "integrity": "sha512-tHPtfdZDqQpZ15eaEZeLspIqS5mK5fOBDZi6AjuqaIi53QNVXH3dQv6uKT3YuUu6uxV/8pjU9in0CoJ8fgaHqw==", + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.3.tgz", + "integrity": "sha512-eC7wYodNCVb97kuHGk5P+xZsvUJHkhSEOyNwkenqQPAsOtrTjvWOE5vSPNBpz9d8X3acIf6w2Ub5s4rvOCTs4g==", "dev": true, "dependencies": { - "@npmcli/fs": "^1.0.0", + "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^1.1.2", "chownr": "^2.0.0", "fs-minipass": "^2.1.0", "glob": "^7.2.0", "infer-owner": "^1.0.4", - "lru-cache": "^7.5.1", + "lru-cache": "^7.7.1", "minipass": "^3.1.6", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", @@ -8323,7 +8478,7 @@ "unique-filename": "^1.1.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/npm-registry-fetch/node_modules/http-proxy-agent": { @@ -8341,27 +8496,27 @@ } }, "node_modules/npm-registry-fetch/node_modules/lru-cache": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.5.1.tgz", - "integrity": "sha512-q1TS8IqKvcg3aScamKCHpepSrHF537Ww7nHahBOxhDu9D2YoBXAsj/7uFdZFj1xJr9LmyeJ62AdyofCHafUbIA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", + "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", "dev": true, "engines": { "node": ">=12" } }, "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.6.tgz", - "integrity": "sha512-4Gfh6lV3TLXmj7qz79hBFuvVqjYSMW6v2+sxtdX4LFQU0rK3V/txRjE0DoZb7X0IF3t9f8NO3CxPSWlvdckhVA==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.1.tgz", + "integrity": "sha512-3/mCljDQNjmrP7kl0vhS5WVlV+TvSKoZaFhdiYV7MOijEnrhrjaVnqbp/EY/7S+fhUB2KpH7j8c1iRsIOs+kjw==", "dev": true, "dependencies": { "agentkeepalive": "^4.2.1", - "cacache": "^16.0.0", + "cacache": "^16.0.2", "http-cache-semantics": "^4.1.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", - "lru-cache": "^7.5.1", + "lru-cache": "^7.7.1", "minipass": "^3.1.6", "minipass-collect": "^1.0.2", "minipass-fetch": "^2.0.3", @@ -8373,13 +8528,13 @@ "ssri": "^8.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/npm-registry-fetch/node_modules/make-fetch-happen/node_modules/minipass-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.0.3.tgz", - "integrity": "sha512-VA+eiiUtaIvpQJXISwE3OiMvQwAWrgKb97F0aXlCS1Ahikr8fEQq8m3Hf7Kv9KT3nokuHigJKsDMB6atU04olQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", + "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", "dev": true, "dependencies": { "minipass": "^3.1.6", @@ -8387,7 +8542,7 @@ "minizlib": "^2.1.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" }, "optionalDependencies": { "encoding": "^0.1.13" @@ -8441,6 +8596,15 @@ "node": ">=0.10.0" } }, + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-is": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", @@ -8491,9 +8655,9 @@ "dev": true }, "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "dependencies": { "ee-first": "1.1.1" @@ -8972,12 +9136,12 @@ } }, "node_modules/portfinder/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "dependencies": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" @@ -9071,9 +9235,9 @@ } }, "node_modules/postcss-custom-properties": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.4.tgz", - "integrity": "sha512-i6AytuTCoDLJkWN/MtAIGriJz3j7UX6bV7Z5t+KgFz+dwZS15/mlTJY1S0kRizlk6ba0V8u8hN50Fz5Nm7tdZw==", + "version": "12.1.5", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.5.tgz", + "integrity": "sha512-FHbbB/hRo/7cxLGkc2NS7cDRIDN1oFqQnUKBiyh4b/gwk8DD8udvmRDpUhEK836kB8ggUCieHVOvZDnF9XhI3g==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9132,9 +9296,9 @@ } }, "node_modules/postcss-env-function": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.5.tgz", - "integrity": "sha512-gPUJc71ji9XKyl0WSzAalBeEA/89kU+XpffpPxSaaaZ1c48OL36r1Ep5R6+9XAPkIiDlSvVAwP4io12q/vTcvA==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9239,9 +9403,9 @@ } }, "node_modules/postcss-lab-function": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.1.2.tgz", - "integrity": "sha512-isudf5ldhg4fk16M8viAwAbg6Gv14lVO35N3Z/49NhbwPQ2xbiEoHgrRgpgQojosF4vF7jY653ktB6dDrUOR8Q==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.0.tgz", + "integrity": "sha512-Zb1EO9DGYfa3CP8LhINHCcTTCTLI+R3t7AX2mKsDzdgVQ/GkCpHOTgOr6HBHslP7XDdVbqgHW5vvRPMdVANQ8w==", "dev": true, "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -9250,6 +9414,10 @@ "engines": { "node": "^12 || ^14 || >=16" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, "peerDependencies": { "postcss": "^8.4" } @@ -9360,16 +9528,20 @@ } }, "node_modules/postcss-nesting": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.3.tgz", - "integrity": "sha512-wUC+/YCik4wH3StsbC5fBG1s2Z3ZV74vjGqBFYtmYKlVxoio5TYGM06AiaKkQPPlkXWn72HKfS7Cw5PYxnoXSw==", + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.4.tgz", + "integrity": "sha512-2ixdQ59ik/Gt1+oPHiI1kHdwEI8lLKEmui9B1nl6163ANLC+GewQn7fXMxJF2JSb4i2MKL96GU8fIiQztK4TTA==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.9" + "postcss-selector-parser": "^6.0.10" }, "engines": { "node": "^12 || ^14 || >=16" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, "peerDependencies": { "postcss": "^8.4" } @@ -9458,16 +9630,20 @@ } }, "node_modules/postcss-pseudo-class-any-link": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.1.tgz", - "integrity": "sha512-JRoLFvPEX/1YTPxRxp1JO4WxBVXJYrSY7NHeak5LImwJ+VobFMwYDQHvfTXEpcn+7fYIeGkC29zYFhFWIZD8fg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.2.tgz", + "integrity": "sha512-76XzEQv3g+Vgnz3tmqh3pqQyRojkcJ+pjaePsyhcyf164p9aZsu3t+NWxkZYbcHLK1ju5Qmalti2jPI5IWCe5w==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.9" + "postcss-selector-parser": "^6.0.10" }, "engines": { "node": "^12 || ^14 || >=16" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, "peerDependencies": { "postcss": "^8.4" } @@ -9494,9 +9670,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", - "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -9596,10 +9772,13 @@ } }, "node_modules/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" }, @@ -9646,13 +9825,13 @@ } }, "node_modules/raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "dependencies": { "bytes": "3.1.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -10007,9 +10186,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.0.tgz", - "integrity": "sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==", + "version": "1.49.9", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz", + "integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -10020,7 +10199,7 @@ "sass": "sass.js" }, "engines": { - "node": ">=8.9.0" + "node": ">=12.0.0" } }, "node_modules/sass-loader": { @@ -10119,12 +10298,12 @@ "dev": true }, "node_modules/selfsigned": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", - "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "dependencies": { - "node-forge": "^1.2.0" + "node-forge": "^1" }, "engines": { "node": ">=10" @@ -10184,6 +10363,37 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/send/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "node_modules/send/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/send/node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -10202,6 +10412,18 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/send/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -10238,6 +10460,15 @@ "ms": "2.0.0" } }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/serve-index/node_modules/http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", @@ -10331,6 +10562,20 @@ "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -10621,19 +10866,36 @@ } }, "node_modules/streamroller": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.5.tgz", - "integrity": "sha512-5uzTEUIi4OB5zy/H30kbUN/zpDNJsFUA+Z47ZL8EfrP93lcZvRLEqdbhdunEPa7CouuAzXXsHpCJ9dg90Umw7g==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.6.tgz", + "integrity": "sha512-Qz32plKq/MZywYyhEatxyYc8vs994Gz0Hu2MSYXXLD233UyPeIeRBZARIIGwFer4Mdb8r3Y2UqKkgyDghM6QCg==", "dev": true, "dependencies": { - "date-format": "^4.0.5", - "debug": "^4.3.3", + "date-format": "^4.0.6", + "debug": "^4.3.4", "fs-extra": "^10.0.1" }, "engines": { "node": ">=8.0" } }, + "node_modules/streamroller/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", @@ -11208,13 +11470,13 @@ } }, "node_modules/webpack": { - "version": "5.67.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", - "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", "dev": true, "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", @@ -11222,7 +11484,7 @@ "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", + "enhanced-resolve": "^5.9.2", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -11637,9 +11899,9 @@ } }, "node_modules/yargs": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", - "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz", + "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==", "dev": true, "dependencies": { "cliui": "^7.0.2", @@ -11684,12 +11946,12 @@ } }, "@angular-devkit/architect": { - "version": "0.1302.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.6.tgz", - "integrity": "sha512-NztzorUMfwJeRaT7SY00Y8WSqc2lQYuF11yNoyEm7Dae3V7VZ28rW2Z9RwibP27rYQL0RjSMaz2wKITHX2vOAw==", + "version": "0.1303.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.1.tgz", + "integrity": "sha512-ppaLzNZPrqrI96ddgm1RuEALVpWZsmHbIPLDd0GBwhF6aOkwF0LpZHd5XyS4ktGFZPReiFIjWSVtqV5vaBdRsw==", "dev": true, "requires": { - "@angular-devkit/core": "13.2.6", + "@angular-devkit/core": "13.3.1", "rxjs": "6.6.7" }, "dependencies": { @@ -11711,15 +11973,15 @@ } }, "@angular-devkit/build-angular": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.2.6.tgz", - "integrity": "sha512-Y2ojy6xbZ0kwScppcutLHBP8eW0qNOjburTISSBU/L5l/9FOeZ1E7yAreKuVu/qibZiLbSJfAhk+SLwhRHFSSQ==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.1.tgz", + "integrity": "sha512-xxBW4zZZM+lewW0nEpk9SXw6BMYhxe8WI/FjyEroOV8G2IuOrjZ4112QOpk6jCgmPHSOEldbltEdwoVLAnu09Q==", "dev": true, "requires": { "@ampproject/remapping": "1.1.1", - "@angular-devkit/architect": "0.1302.6", - "@angular-devkit/build-webpack": "0.1302.6", - "@angular-devkit/core": "13.2.6", + "@angular-devkit/architect": "0.1303.1", + "@angular-devkit/build-webpack": "0.1303.1", + "@angular-devkit/core": "13.3.1", "@babel/core": "7.16.12", "@babel/generator": "7.16.8", "@babel/helper-annotate-as-pure": "7.16.7", @@ -11730,7 +11992,7 @@ "@babel/runtime": "7.16.7", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.6", - "@ngtools/webpack": "13.2.6", + "@ngtools/webpack": "13.3.1", "ansi-colors": "4.1.1", "babel-loader": "8.2.3", "babel-plugin-istanbul": "6.1.1", @@ -11765,7 +12027,7 @@ "regenerator-runtime": "0.13.9", "resolve-url-loader": "5.0.0", "rxjs": "6.6.7", - "sass": "1.49.0", + "sass": "1.49.9", "sass-loader": "12.4.0", "semver": "7.3.5", "source-map-loader": "3.0.1", @@ -11776,7 +12038,7 @@ "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.3.1", - "webpack": "5.67.0", + "webpack": "5.70.0", "webpack-dev-middleware": "5.3.0", "webpack-dev-server": "4.7.3", "webpack-merge": "5.8.0", @@ -11803,12 +12065,12 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.1302.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1302.6.tgz", - "integrity": "sha512-TYEh2n9tPe932rEIgdiSpojOqtDppW2jzb/empVqCkLF7WUZsXKvTanttZC34L6R2VD6SAGWhb6JDg75ghUVYA==", + "version": "0.1303.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.1.tgz", + "integrity": "sha512-KSnR3y2q5hxh7t7ZSi0Emv/Kh9+D105JaEeyEqjqRjLdZSd2m6eAxbSUMNOAsbqnJTMCfzU5AG7jhbujuge0dQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1302.6", + "@angular-devkit/architect": "0.1303.1", "rxjs": "6.6.7" }, "dependencies": { @@ -11830,9 +12092,9 @@ } }, "@angular-devkit/core": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.2.6.tgz", - "integrity": "sha512-8h2mWdBTN/dYwZuzKMg2IODlOWMdbJcpQG4XVrkk9ejCPP+3aX5Aa3glCe/voN6eBNiRfs8YDM0jxmpN2aWVtg==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.1.tgz", + "integrity": "sha512-eXAcQaP1mn6rnQb+5bv5NsamY6b34UYM7G+S154Hnma6CTTSGBtcmoNAJs8cekuFqWlw7YgpB/e15jR5OLPkDA==", "dev": true, "requires": { "ajv": "8.9.0", @@ -11861,12 +12123,12 @@ } }, "@angular-devkit/schematics": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.2.6.tgz", - "integrity": "sha512-mPgSqdnZRuPSMeUA+T+mwVCrq2yhXpcYm1/Rjbhy09CyHs4wSrFv21WHCrE6shlvXpcmwr0n+I0DIeagAPmjUA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.1.tgz", + "integrity": "sha512-DxXMjlq/sALcHuONZRMTBX5k30XPfN4b6Ue4k7Xl8JKZqyHhEzfXaZzgD9u2cwb7wybKEeF/BZ5eJd8JG525og==", "dev": true, "requires": { - "@angular-devkit/core": "13.2.6", + "@angular-devkit/core": "13.3.1", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -11891,23 +12153,23 @@ } }, "@angular/animations": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.2.6.tgz", - "integrity": "sha512-DrjpKo68uR3lSLQQXosoTCbjKQS6IKRCpR14E2t8fo0AX8i2hkB8je4SrhdCyB7FgFN7l2kgUYo4Qa8+BOB+aA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.1.tgz", + "integrity": "sha512-O6DVOk++Bz8Bcz2AAnd1wz1OFzsy3XjmA4o1Mx+DNLRwrLvWHuq33rTVs0Pur7psiKz1lym9kMrY9YwE3s0SJA==", "requires": { "tslib": "^2.3.0" } }, "@angular/cli": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.2.6.tgz", - "integrity": "sha512-xIjEaQI5sWemXXc7GXLm4u9UL5sjtrQL/y1PJvvk/Jsa8+kIT+MutOfZfC7zcdAh9fqHd8mokH3guFV8BJdFxA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.1.tgz", + "integrity": "sha512-0uwU8v3V/2s95X4cZT582J6upReT/ZNw/VAf4p4q51JN+BBvdCEb251xTF+TcOojyToFyJYvg8T28XSrsNsmTQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1302.6", - "@angular-devkit/core": "13.2.6", - "@angular-devkit/schematics": "13.2.6", - "@schematics/angular": "13.2.6", + "@angular-devkit/architect": "0.1303.1", + "@angular-devkit/core": "13.3.1", + "@angular-devkit/schematics": "13.3.1", + "@schematics/angular": "13.3.1", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.3", @@ -11926,25 +12188,25 @@ } }, "@angular/common": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.2.6.tgz", - "integrity": "sha512-t4XRb9db4UeRcPs5aHNtGuXRKSvGBlTEr0zzSeoKzHD9TCaO4dSDISh9obS9hThaPuBmPKRUHN5KE1HFmqnSHg==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.1.tgz", + "integrity": "sha512-Var5ChoX8kZl9cbIWbW7Reb3Xz3t1c1XHwq1k+oK2fgrPdEfypY9n/6DxyXOtSEGb9aV7ZCaxcv2c5JUKR3OPg==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.2.6.tgz", - "integrity": "sha512-LHU29J2/c/03WHkwtzUSElTBsXbzkKdYARodnNfsFdLPsWhyvzO3cqlcZYteFJxEy3dVH+ZrYDjqQ9Sp17aIgA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.1.tgz", + "integrity": "sha512-ppJURRRDPZB6UaZctH6yBsznZXB7wZdCpfy5yo4lFE4k8rygfV80TmnrbJBZXNNq057VK48Bap1tsehFwckjog==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler-cli": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.2.6.tgz", - "integrity": "sha512-QtlLKj3m6a2nkewFxhg+a3tQ2gEIBzMfI2c1laWUfAfJJ56phj79k8Z/kf2HQxypphWixyTK+ugpTlMdvvOquA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.1.tgz", + "integrity": "sha512-dImxLUITNwODlXaLcEACw10bxTiajWEQz3sLwhT/936UH+MNtM/RyLJ0M7xDvILDqq77W3psK5/M6F3M1mUpew==", "dev": true, "requires": { "@babel/core": "^7.17.2", @@ -11969,9 +12231,9 @@ } }, "@babel/core": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.7.tgz", - "integrity": "sha512-djHlEfFHnSnTAcPb7dATbiM5HxGOP98+3JLBZtjRb5I7RXrw7kFRoG2dXM8cm3H+o11A8IFH/uprmJpwFynRNQ==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.8.tgz", + "integrity": "sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", @@ -11979,8 +12241,8 @@ "@babel/generator": "^7.17.7", "@babel/helper-compilation-targets": "^7.17.7", "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.7", - "@babel/parser": "^7.17.7", + "@babel/helpers": "^7.17.8", + "@babel/parser": "^7.17.8", "@babel/template": "^7.16.7", "@babel/traverse": "^7.17.3", "@babel/types": "^7.17.0", @@ -12028,41 +12290,41 @@ } }, "@angular/core": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.2.6.tgz", - "integrity": "sha512-ctWsxuaSO3d3afLW+wkJSyiEIA2uhaTKNps9x5wz/oZJDaUDYVa4PM4x7/UHn2bXzBjXjN9LSW8h9F31iwmcTg==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.1.tgz", + "integrity": "sha512-ZU/B9jEiZ0jadRkRL9Sb2btzqgQ0ylx380PfRQaojVIsij/EO6+jOSHIo5upMIGu/OvkggfweShJGlylCOrOXA==", "requires": { "tslib": "^2.3.0" } }, "@angular/forms": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.2.6.tgz", - "integrity": "sha512-3IikvNtO0RBiGb2AWl8aYcE3ivXHPIJz+JOn9Wz9XXSkYx75D3GjuJlz+fVIgz+7Q7tJuS6Q2E5qat/ldeDmoA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.1.tgz", + "integrity": "sha512-S6a/CEq1ht0vw2epuESiO551dsyLQTb/HuwceIBlsX2JqRRccynYlyx92gsDAo4hD2F0q+EeqZEPuq3oQIK43A==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.2.6.tgz", - "integrity": "sha512-Gc/1TqysW+P+K3NeQihmHWs4KF1mjJT20s06r+YcETnPP11uPk+UxQl7gJNsDV587DYO/wT3oISXVpRw4UJhdQ==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.1.tgz", + "integrity": "sha512-WtyrkK0pLYj6w7pz3xk8zlhWL1NwGCWT+k7YxEjBOONCIXlZvCqWVzWo4nNQn9Xqxd+z1FVI0dssDwZm2TD+Eg==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser-dynamic": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.2.6.tgz", - "integrity": "sha512-m77+pzwZw+4kiRhxzrj1kE3N1K82I8Xt+vEBKSL2Xv42hCX0T37erC6KlztFEDj4A68s5+/0C5vfwhEiDcr/Cw==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.1.tgz", + "integrity": "sha512-TKV63SSyjrv5EsD03PloCbo8ZrJq5owkJ38E2FO/VvJAV3xu3Ey0SnoikNZMd8o3rh7+ocuT5K9Xcr4YuKVgEA==", "requires": { "tslib": "^2.3.0" } }, "@angular/router": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.2.6.tgz", - "integrity": "sha512-dA9vL4mPLp+iNegzuvm9FaEWirFI2ZK3WQgbdoxoIpneym+BxRTkNDzPcvEaqfUf7eDGRBqlWakFDrd+H2QEbg==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.1.tgz", + "integrity": "sha512-YpZLjI4UI9KK6x8yn41XMrBWZgVb5JyJR7KNhQXB7WiX8bVH5SZzFRkjR3qUxTGaxe6I7KFvzySwm4JTYNj+xw==", "requires": { "tslib": "^2.3.0" } @@ -12404,9 +12666,9 @@ } }, "@babel/helpers": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.7.tgz", - "integrity": "sha512-TKsj9NkjJfTBxM7Phfy7kv6yYc4ZcOo+AaWGqQOKTPDOmcGkIFb5xNA746eKisQkm4yavUYh4InYM9S+VnO01w==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz", + "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==", "dev": true, "requires": { "@babel/template": "^7.16.7", @@ -12426,9 +12688,9 @@ } }, "@babel/parser": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.7.tgz", - "integrity": "sha512-bm3AQf45vR4gKggRfvJdYJ0gFLoCbsPxiFLSH6hTVYABptNHY6l9NrhnucVjQ/X+SPtLANT9lc0fFhikj+VBRA==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -12898,13 +13160,13 @@ } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", - "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" @@ -13331,9 +13593,9 @@ } }, "@ngtools/webpack": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.2.6.tgz", - "integrity": "sha512-N8SvRV91+/57TcAfbghc0k0tKCukw/7KqbDaLPAQTGFekJ4xMGT3elMzOyBXTH3Hvp5HL8/hiBt2tG04qiMf+w==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.1.tgz", + "integrity": "sha512-40iEqAA/l882MPbGuG5EYxzsPWJ37fT4fF22SkPLX2eBgNhJ4K8XMt0gqcFhkHUsSe63frg1qjQ1Pd31msu0bQ==", "dev": true, "requires": {} }, @@ -13448,13 +13710,13 @@ } }, "@schematics/angular": { - "version": "13.2.6", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.2.6.tgz", - "integrity": "sha512-8NzHMX9+FSgaB0lJYxlTJv9OcBuolwZJqo9M/yX3RPSqSHghA33jWwgVbV551hBJOpbVEePerG1DQkIC99DXKA==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.1.tgz", + "integrity": "sha512-+lrK/d1eJsAK6d6E9TDeg3Vc71bDy1KsE8M+lEINdX9Wax22mAz4pw20X9RSCw5RHgn+XcNUuMsgRJAwVhDNpg==", "dev": true, "requires": { - "@angular-devkit/core": "13.2.6", - "@angular-devkit/schematics": "13.2.6", + "@angular-devkit/core": "13.3.1", + "@angular-devkit/schematics": "13.3.1", "jsonc-parser": "3.0.0" } }, @@ -13553,9 +13815,9 @@ } }, "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, "@types/express": { @@ -13603,9 +13865,9 @@ } }, "@types/jasmine": { - "version": "3.10.4", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.4.tgz", - "integrity": "sha512-7UAoOBYJpaZKmpJ8esMUIMl6pSdReliPQjviOOikWdQ7eVr4Hq8YbpeXyfXFKflZv8ymDFhYdTjVabbP2s4K4Q==", + "version": "3.10.5", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.5.tgz", + "integrity": "sha512-RYxEJkk/RK1S6W0nMOx9Mxm5v2bKwAVjzTHiBcHkQskwKDqHKHjSU46jx/q9IffyuctNl8ebaAjb5/461faKqQ==", "dev": true }, "@types/jasminewd2": { @@ -13624,9 +13886,9 @@ "dev": true }, "@types/json-schema": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz", - "integrity": "sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "@types/jszip": { @@ -13972,6 +14234,14 @@ "debug": "^4.1.0", "depd": "^1.1.2", "humanize-ms": "^1.2.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + } } }, "aggregate-error": { @@ -14329,21 +14599,23 @@ } }, "body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "dev": true, "requires": { "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "dependencies": { "debug": { @@ -14497,9 +14769,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001317", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001317.tgz", - "integrity": "sha512-xIZLh8gBm4dqNX0gkzrBeyI86J2eCjWzYAs40q88smG844YIrN4tVQl/RhquHvKEKImWWFIVh1Lxe5n1G/N+GQ==", + "version": "1.0.30001325", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001325.tgz", + "integrity": "sha512-sB1bZHjseSjDtijV1Hb7PB2Zd58Kyx+n/9EotvZ4Qcz2K3d0lWB8dB4nb8wN/TsOGFq3UuAm0zQZNQ4SoR7TrQ==", "dev": true }, "chalk": { @@ -15043,22 +15315,22 @@ "requires": {} }, "css-select": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", - "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^5.1.0", - "domhandler": "^4.3.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", "domutils": "^2.8.0", "nth-check": "^2.0.1" } }, "css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true }, "cssdb": { @@ -15080,9 +15352,9 @@ "dev": true }, "date-format": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.5.tgz", - "integrity": "sha512-zBhRiN/M0gDxUoM2xRtzTjJzSg0XEi1ofYpF84PfXeS3hN2PsGxmc7jw3DNQtFlimRbMmob5FC3G0cJq6jQQpw==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.6.tgz", + "integrity": "sha512-B9vvg5rHuQ8cbUXE/RMWMyX2YA5TecT3jKF5fLtGNlzPlU7zblSPmAm2OImDbWL+LDOQ6pUm+4LOFz+ywS41Zw==", "dev": true }, "debug": { @@ -15198,9 +15470,9 @@ "dev": true }, "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, "dependency-graph": { @@ -15210,9 +15482,9 @@ "dev": true }, "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true }, "detect-node": { @@ -15291,9 +15563,9 @@ "dev": true }, "domhandler": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", - "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "requires": { "domelementtype": "^2.2.0" @@ -15317,9 +15589,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.85", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.85.tgz", - "integrity": "sha512-K9AsQ41WS2bjZUFpRWfvaS4RjEcRCamEkBJN1Z1TQILBfP1H8QnJ9ti0wiLiMv0sRjX3EHKzgs9jDnmGFx2jXg==", + "version": "1.4.103", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.103.tgz", + "integrity": "sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==", "dev": true }, "emoji-regex": { @@ -15773,6 +16045,24 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, + "body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -15782,12 +16072,58 @@ "ms": "2.0.0" } }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true + }, + "raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -15908,6 +16244,15 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } } } }, @@ -16008,9 +16353,9 @@ "dev": true }, "gauge": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.3.tgz", - "integrity": "sha512-ICw1DhAwMtb22rYFwEHgJcx1JCwJGv3x6G0OQUq56Nge+H4Q8JEwr8iveS0XFlsUNSI67F5ffMGK25bK4Pmskw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, "requires": { "aproba": "^1.0.3 || ^2.0.0", @@ -16207,9 +16552,9 @@ } }, "html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", "dev": true }, "html-escaper": { @@ -16231,16 +16576,24 @@ "dev": true }, "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "requires": { - "depd": "~1.1.2", + "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", + "statuses": "2.0.1", "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } } }, "http-parser-js": { @@ -16668,9 +17021,9 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isbinaryfile": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", - "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true }, "isexe": { @@ -16842,13 +17195,10 @@ "dev": true }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true }, "jsonc-parser": { "version": "3.0.0", @@ -16929,12 +17279,12 @@ }, "dependencies": { "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" } }, "source-map": { @@ -17019,9 +17369,9 @@ } }, "karma-jasmine": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", - "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.2.tgz", + "integrity": "sha512-ggi84RMNQffSDmWSyyt4zxzh2CQGwsxvYYsprgyR1j8ikzIduEdOlcLvXjZGwXG/0j41KUXOWsUCBfbEHPWP9g==", "dev": true, "requires": { "jasmine-core": "^3.6.0" @@ -17248,16 +17598,27 @@ } }, "log4js": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.3.tgz", - "integrity": "sha512-H/oQKcCVIhQ8zCtUh5aftdp9eRpGyVB1M5sKzAJ0i10q5jS+YXk133vtLgzT1RIoWMbIn7QD1LUto8a1hqh6gA==", + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.4.tgz", + "integrity": "sha512-ncaWPsuw9Vl1CKA406hVnJLGQKy1OHx6buk8J4rE2lVW+NW5Y82G5/DIloO7NkqLOUtNPEANaWC1kZYVjXssPw==", "dev": true, "requires": { - "date-format": "^4.0.5", - "debug": "^4.3.3", + "date-format": "^4.0.6", + "debug": "^4.3.4", "flatted": "^3.2.5", "rfdc": "^1.3.0", - "streamroller": "^3.0.5" + "streamroller": "^3.0.6" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } } }, "lru-cache": { @@ -17364,13 +17725,13 @@ "dev": true }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "mime": { @@ -17439,9 +17800,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "minipass": { @@ -17567,9 +17928,9 @@ "dev": true }, "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", + "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", "dev": true }, "needle": { @@ -17627,9 +17988,9 @@ "optional": true }, "node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true }, "node-gyp": { @@ -17662,9 +18023,9 @@ } }, "node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", "dev": true, "optional": true }, @@ -17768,6 +18129,16 @@ "npm-package-arg": "^8.1.5" }, "dependencies": { + "@npmcli/fs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", + "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + } + }, "@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -17775,18 +18146,18 @@ "dev": true }, "cacache": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.1.tgz", - "integrity": "sha512-tHPtfdZDqQpZ15eaEZeLspIqS5mK5fOBDZi6AjuqaIi53QNVXH3dQv6uKT3YuUu6uxV/8pjU9in0CoJ8fgaHqw==", + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.3.tgz", + "integrity": "sha512-eC7wYodNCVb97kuHGk5P+xZsvUJHkhSEOyNwkenqQPAsOtrTjvWOE5vSPNBpz9d8X3acIf6w2Ub5s4rvOCTs4g==", "dev": true, "requires": { - "@npmcli/fs": "^1.0.0", + "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^1.1.2", "chownr": "^2.0.0", "fs-minipass": "^2.1.0", "glob": "^7.2.0", "infer-owner": "^1.0.4", - "lru-cache": "^7.5.1", + "lru-cache": "^7.7.1", "minipass": "^3.1.6", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", @@ -17812,24 +18183,24 @@ } }, "lru-cache": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.5.1.tgz", - "integrity": "sha512-q1TS8IqKvcg3aScamKCHpepSrHF537Ww7nHahBOxhDu9D2YoBXAsj/7uFdZFj1xJr9LmyeJ62AdyofCHafUbIA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", + "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", "dev": true }, "make-fetch-happen": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.6.tgz", - "integrity": "sha512-4Gfh6lV3TLXmj7qz79hBFuvVqjYSMW6v2+sxtdX4LFQU0rK3V/txRjE0DoZb7X0IF3t9f8NO3CxPSWlvdckhVA==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.1.tgz", + "integrity": "sha512-3/mCljDQNjmrP7kl0vhS5WVlV+TvSKoZaFhdiYV7MOijEnrhrjaVnqbp/EY/7S+fhUB2KpH7j8c1iRsIOs+kjw==", "dev": true, "requires": { "agentkeepalive": "^4.2.1", - "cacache": "^16.0.0", + "cacache": "^16.0.2", "http-cache-semantics": "^4.1.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", - "lru-cache": "^7.5.1", + "lru-cache": "^7.7.1", "minipass": "^3.1.6", "minipass-collect": "^1.0.2", "minipass-fetch": "^2.0.3", @@ -17842,9 +18213,9 @@ }, "dependencies": { "minipass-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.0.3.tgz", - "integrity": "sha512-VA+eiiUtaIvpQJXISwE3OiMvQwAWrgKb97F0aXlCS1Ahikr8fEQq8m3Hf7Kv9KT3nokuHigJKsDMB6atU04olQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", + "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", "dev": true, "requires": { "encoding": "^0.1.13", @@ -17893,6 +18264,12 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true + }, "object-is": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", @@ -17928,9 +18305,9 @@ "dev": true }, "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "requires": { "ee-first": "1.1.1" @@ -18291,12 +18668,12 @@ } }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" } } } @@ -18356,9 +18733,9 @@ "requires": {} }, "postcss-custom-properties": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.4.tgz", - "integrity": "sha512-i6AytuTCoDLJkWN/MtAIGriJz3j7UX6bV7Z5t+KgFz+dwZS15/mlTJY1S0kRizlk6ba0V8u8hN50Fz5Nm7tdZw==", + "version": "12.1.5", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.5.tgz", + "integrity": "sha512-FHbbB/hRo/7cxLGkc2NS7cDRIDN1oFqQnUKBiyh4b/gwk8DD8udvmRDpUhEK836kB8ggUCieHVOvZDnF9XhI3g==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -18393,9 +18770,9 @@ } }, "postcss-env-function": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.5.tgz", - "integrity": "sha512-gPUJc71ji9XKyl0WSzAalBeEA/89kU+XpffpPxSaaaZ1c48OL36r1Ep5R6+9XAPkIiDlSvVAwP4io12q/vTcvA==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -18461,9 +18838,9 @@ "requires": {} }, "postcss-lab-function": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.1.2.tgz", - "integrity": "sha512-isudf5ldhg4fk16M8viAwAbg6Gv14lVO35N3Z/49NhbwPQ2xbiEoHgrRgpgQojosF4vF7jY653ktB6dDrUOR8Q==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.0.tgz", + "integrity": "sha512-Zb1EO9DGYfa3CP8LhINHCcTTCTLI+R3t7AX2mKsDzdgVQ/GkCpHOTgOr6HBHslP7XDdVbqgHW5vvRPMdVANQ8w==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -18532,12 +18909,12 @@ } }, "postcss-nesting": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.3.tgz", - "integrity": "sha512-wUC+/YCik4wH3StsbC5fBG1s2Z3ZV74vjGqBFYtmYKlVxoio5TYGM06AiaKkQPPlkXWn72HKfS7Cw5PYxnoXSw==", + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.4.tgz", + "integrity": "sha512-2ixdQ59ik/Gt1+oPHiI1kHdwEI8lLKEmui9B1nl6163ANLC+GewQn7fXMxJF2JSb4i2MKL96GU8fIiQztK4TTA==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.9" + "postcss-selector-parser": "^6.0.10" } }, "postcss-overflow-shorthand": { @@ -18605,12 +18982,12 @@ } }, "postcss-pseudo-class-any-link": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.1.tgz", - "integrity": "sha512-JRoLFvPEX/1YTPxRxp1JO4WxBVXJYrSY7NHeak5LImwJ+VobFMwYDQHvfTXEpcn+7fYIeGkC29zYFhFWIZD8fg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.2.tgz", + "integrity": "sha512-76XzEQv3g+Vgnz3tmqh3pqQyRojkcJ+pjaePsyhcyf164p9aZsu3t+NWxkZYbcHLK1ju5Qmalti2jPI5IWCe5w==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.9" + "postcss-selector-parser": "^6.0.10" } }, "postcss-replace-overflow-wrap": { @@ -18630,9 +19007,9 @@ } }, "postcss-selector-parser": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", - "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -18710,10 +19087,13 @@ "dev": true }, "qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", - "dev": true + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } }, "queue-microtask": { "version": "1.2.3", @@ -18737,13 +19117,13 @@ "dev": true }, "raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "requires": { "bytes": "3.1.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } @@ -19018,9 +19398,9 @@ "dev": true }, "sass": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.0.tgz", - "integrity": "sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==", + "version": "1.49.9", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz", + "integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -19089,12 +19469,12 @@ "dev": true }, "selfsigned": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", - "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "requires": { - "node-forge": "^1.2.0" + "node-forge": "^1" } }, "semver": { @@ -19144,6 +19524,31 @@ } } }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -19155,6 +19560,15 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } } } }, @@ -19191,6 +19605,12 @@ "ms": "2.0.0" } }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", @@ -19271,6 +19691,17 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -19495,14 +19926,25 @@ "dev": true }, "streamroller": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.5.tgz", - "integrity": "sha512-5uzTEUIi4OB5zy/H30kbUN/zpDNJsFUA+Z47ZL8EfrP93lcZvRLEqdbhdunEPa7CouuAzXXsHpCJ9dg90Umw7g==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.6.tgz", + "integrity": "sha512-Qz32plKq/MZywYyhEatxyYc8vs994Gz0Hu2MSYXXLD233UyPeIeRBZARIIGwFer4Mdb8r3Y2UqKkgyDghM6QCg==", "dev": true, "requires": { - "date-format": "^4.0.5", - "debug": "^4.3.3", + "date-format": "^4.0.6", + "debug": "^4.3.4", "fs-extra": "^10.0.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } } }, "string_decoder": { @@ -19914,13 +20356,13 @@ } }, "webpack": { - "version": "5.67.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", - "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", "dev": true, "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", @@ -19928,7 +20370,7 @@ "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", + "enhanced-resolve": "^5.9.2", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -20211,9 +20653,9 @@ "dev": true }, "yargs": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", - "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz", + "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==", "dev": true, "requires": { "cliui": "^7.0.2", diff --git a/package.json b/package.json index 9bb2bf9fd..0f5c8e641 100644 --- a/package.json +++ b/package.json @@ -11,19 +11,19 @@ }, "private": true, "dependencies": { - "@angular/animations": "^13.2.1", - "@angular/common": "^13.2.1", - "@angular/compiler": "^13.2.1", - "@angular/core": "^13.2.1", - "@angular/forms": "^13.2.1", - "@angular/platform-browser": "^13.2.1", - "@angular/platform-browser-dynamic": "^13.2.1", - "@angular/router": "^13.2.1", - "bcdice": "^3.5.0", + "@angular/animations": "^13.3.1", + "@angular/common": "^13.3.1", + "@angular/compiler": "^13.3.1", + "@angular/core": "^13.3.1", + "@angular/forms": "^13.3.1", + "@angular/platform-browser": "^13.3.1", + "@angular/platform-browser-dynamic": "^13.3.1", + "@angular/router": "^13.3.1", + "bcdice": "^3.5.1", "crypto-js": "^3.3.0", "file-saver": "^2.0.5", "hammerjs": "^2.0.8", - "js-yaml": "^4.0.0", + "js-yaml": "^4.1.0", "jszip": "~3.1.5", "lzbase62": "^2.0.0", "msgpack-lite": "^0.1.26", @@ -34,9 +34,9 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "~13.2.2", - "@angular/cli": "^13.2.2", - "@angular/compiler-cli": "^13.2.1", + "@angular-devkit/build-angular": "~13.3.1", + "@angular/cli": "^13.3.1", + "@angular/compiler-cli": "^13.3.1", "@types/crypto-js": "^4.0.1", "@types/file-saver": "^2.0.1", "@types/hammerjs": "^2.0.39", From 37ff3c6622d06a87afd507090d778099959a5d19 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 22 Apr 2022 00:54:24 +0900 Subject: [PATCH 097/161] =?UTF-8?q?refactor:=20=E3=82=B0=E3=83=AD=E3=83=BC?= =?UTF-8?q?=E3=83=90=E3=83=AB=E3=81=AACSS=E3=81=AE=E5=AE=9A=E7=BE=A9?= =?UTF-8?q?=E5=A0=B4=E6=89=80=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/styles.css | 172 +--------------------------------------- src/styles.css | 179 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 180 insertions(+), 171 deletions(-) diff --git a/src/assets/styles.css b/src/assets/styles.css index 97716ac53..0f6ea722c 100644 --- a/src/assets/styles.css +++ b/src/assets/styles.css @@ -1,171 +1 @@ -body { - font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Verdana, Meiryo, "M+ 1p", sans-serif; -} -button { - background-color: #eee; - color: #444; - border: solid 1px #CCC; - padding: 0.35em 0.7em; - margin: 0 2px; - border-radius: 4px; - cursor: pointer; - cursor: hand; -} -button:hover { - background-color: #cfd8dc; -} -button:disabled { - background-color: #eee; - color: #aaa; - cursor: auto; -} - -button.danger { - background-color: rgb(207, 82, 82); - color: #eee; - border: solid 1px rgb(184, 59, 59); -} - -button.danger:hover { - background-color: rgb(160, 32, 32); - color: #f5f5f5; -} - -button.danger:disabled { - background-color: rgb(224, 131, 131); - border: solid 1px rgb(187, 55, 55); - color: #eee; -} -/* everywhere else */ - html, - body { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - overflow: hidden; - background-color: hsl(0, 0%, 97%); - touch-action: manipulation; - } - - body { - position: relative; - } - - .sk-cube-grid { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - width: 100px; - height: 100px; - margin: auto; - } - - .sk-cube-grid .sk-cube { - width: 33%; - height: 33%; - background-color: #666; - float: left; - -webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; - animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; - } - .sk-cube-grid .sk-title { - width: 100%; - text-align: center; - float: left; - } - - .sk-cube-grid .sk-cube1 { - -webkit-animation-delay: 0.2s; - animation-delay: 0.2s; - } - - .sk-cube-grid .sk-cube2 { - -webkit-animation-delay: 0.3s; - animation-delay: 0.3s; - } - - .sk-cube-grid .sk-cube3 { - -webkit-animation-delay: 0.4s; - animation-delay: 0.4s; - } - - .sk-cube-grid .sk-cube4 { - -webkit-animation-delay: 0.1s; - animation-delay: 0.1s; - } - - .sk-cube-grid .sk-cube5 { - -webkit-animation-delay: 0.2s; - animation-delay: 0.2s; - } - - .sk-cube-grid .sk-cube6 { - -webkit-animation-delay: 0.3s; - animation-delay: 0.3s; - } - - .sk-cube-grid .sk-cube7 { - -webkit-animation-delay: 0s; - animation-delay: 0s; - } - - .sk-cube-grid .sk-cube8 { - -webkit-animation-delay: 0.1s; - animation-delay: 0.1s; - } - - .sk-cube-grid .sk-cube9 { - -webkit-animation-delay: 0.2s; - animation-delay: 0.2s; - } - - @-webkit-keyframes sk-cubeGridScaleDelay { - 0%, - 70%, - 100% { - -webkit-transform: scale(1, 1); - transform: scale(1, 1); - } - 35% { - -webkit-transform: scale(0, 0); - transform: scale(0, 0); - } - } - - @-webkit-keyframes anime1 { - 0% { - -webkit-transform: rotateZ(0deg); - transform: rotateZ(0deg); - } - 100% { - -webkit-transform: rotateZ(180deg); - transform: rotateZ(180deg); - } - } - - @keyframes anime1 { - 0% { - -webkit-transform: rotateZ(0deg); - transform: rotateZ(0deg); - } - 100% { - -webkit-transform: rotateZ(180deg); - transform: rotateZ(180deg); - } - } - - @keyframes sk-cubeGridScaleDelay { - 0%, - 70%, - 100% { - -webkit-transform: scale(1, 1); - transform: scale(1, 1); - } - 35% { - -webkit-transform: scale(0, 0); - transform: scale(0, 0); - } - } +/* global styles */ diff --git a/src/styles.css b/src/styles.css index 90d4ee007..5bcdd1462 100644 --- a/src/styles.css +++ b/src/styles.css @@ -1 +1,180 @@ /* You can add global styles to this file, and also import other style files */ +button { + background-color: #eee; + color: #444; + border: solid 1px #CCC; + padding: 0.35em 0.7em; + margin: 0 2px; + border-radius: 4px; + cursor: pointer; + cursor: hand; +} + +button:hover { + background-color: #cfd8dc; +} + +button:disabled { + background-color: #eee; + color: #aaa; + cursor: auto; +} + +button.danger { + background-color: rgb(207, 82, 82); + color: #eee; + border: solid 1px rgb(184, 59, 59); +} + +button.danger:hover { + background-color: rgb(160, 32, 32); + color: #f5f5f5; +} + +button.danger:disabled { + background-color: rgb(224, 131, 131); + border: solid 1px rgb(187, 55, 55); + color: #eee; +} + +html, +body { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + overflow: hidden; + background-color: hsl(0, 0%, 97%); + touch-action: manipulation; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Verdana, + Meiryo, "M+ 1p", sans-serif; + position: relative; +} + +.sk-cube-grid { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 100px; + height: 100px; + margin: auto; +} + +.sk-cube-grid .sk-cube { + width: 33%; + height: 33%; + background-color: #666; + float: left; + -webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; + animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; +} + +.sk-cube-grid .sk-title { + width: 100%; + text-align: center; + float: left; +} + +.sk-cube-grid .sk-cube1 { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.sk-cube-grid .sk-cube2 { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.sk-cube-grid .sk-cube3 { + -webkit-animation-delay: 0.4s; + animation-delay: 0.4s; +} + +.sk-cube-grid .sk-cube4 { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.sk-cube-grid .sk-cube5 { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.sk-cube-grid .sk-cube6 { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.sk-cube-grid .sk-cube7 { + -webkit-animation-delay: 0s; + animation-delay: 0s; +} + +.sk-cube-grid .sk-cube8 { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.sk-cube-grid .sk-cube9 { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +@-webkit-keyframes sk-cubeGridScaleDelay { + + 0%, + 70%, + 100% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } + + 35% { + -webkit-transform: scale(0, 0); + transform: scale(0, 0); + } +} + +@-webkit-keyframes anime1 { + 0% { + -webkit-transform: rotateZ(0deg); + transform: rotateZ(0deg); + } + + 100% { + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg); + } +} + +@keyframes anime1 { + 0% { + -webkit-transform: rotateZ(0deg); + transform: rotateZ(0deg); + } + + 100% { + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg); + } +} + +@keyframes sk-cubeGridScaleDelay { + + 0%, + 70%, + 100% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } + + 35% { + -webkit-transform: scale(0, 0); + transform: scale(0, 0); + } +} \ No newline at end of file From 8eecf217f345c344763567f8e630fdfe20b5a471 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 23 Apr 2022 12:11:38 +0900 Subject: [PATCH 098/161] =?UTF-8?q?fix:=20Chrome=E3=81=AECSS=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E5=B4=A9=E3=82=8C=E3=81=AB=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/component/overview-panel/overview-panel.component.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/component/overview-panel/overview-panel.component.css b/src/app/component/overview-panel/overview-panel.component.css index 20e124673..13c33df8c 100644 --- a/src/app/component/overview-panel/overview-panel.component.css +++ b/src/app/component/overview-panel/overview-panel.component.css @@ -145,7 +145,7 @@ .text-note-container { width: 100%; max-height: 400px; - padding: 0.5em 1.5em; + padding: 0.6em 1.2em; box-sizing: border-box; overflow: hidden auto; line-height: 1.8; From 8fc4984c2b2d552c6e33d66adb1254425c7aa054 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 23 Apr 2022 12:12:18 +0900 Subject: [PATCH 099/161] =?UTF-8?q?docs:=20=E3=83=90=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E6=83=85=E5=A0=B1=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 4 ++-- package.json | 2 +- src/index.html | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e1753631..d605190cd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "udonarium", - "version": "1.14.0", + "version": "1.14.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "udonarium", - "version": "1.14.0", + "version": "1.14.1", "license": "MIT", "dependencies": { "@angular/animations": "^13.3.1", diff --git a/package.json b/package.json index 0f5c8e641..fb1efe512 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "udonarium", - "version": "1.14.0", + "version": "1.14.1", "license": "MIT", "scripts": { "ng": "ng", diff --git a/src/index.html b/src/index.html index 82aa13898..d7a90ad2a 100644 --- a/src/index.html +++ b/src/index.html @@ -3,7 +3,7 @@ - Udonarium 1.14.0 + Udonarium 1.14.1 From 6b14171fdb8bff3a95493d7645c736e3ccfb8566 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 1 Jul 2022 00:00:36 +0900 Subject: [PATCH 100/161] =?UTF-8?q?fix:=203D=E8=A6=81=E7=B4=A0=E3=81=AECSS?= =?UTF-8?q?=E5=BA=A7=E6=A8=99=E8=A8=AD=E5=AE=9A=E3=81=AE=E6=9C=89=E5=8A=B9?= =?UTF-8?q?=E6=A1=81=E6=95=B0=E3=82=92=E5=88=B6=E9=99=90=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `Mafty-Hs/Udonite`の検証を参考. 極端に小さな数値はCSSの見た目に反映されない. --- src/app/component/game-table/game-table.component.ts | 2 +- src/app/component/peer-cursor/peer-cursor.component.ts | 2 +- src/app/directive/movable.directive.ts | 2 +- src/app/directive/rotable.directive.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/component/game-table/game-table.component.ts b/src/app/component/game-table/game-table.component.ts index eaa0f249b..40c0ba296 100644 --- a/src/app/component/game-table/game-table.component.ts +++ b/src/app/component/game-table/game-table.component.ts @@ -245,7 +245,7 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { this.viewPotisonY += transformY; this.viewPotisonZ += transformZ; - this.gameTable.nativeElement.style.transform = 'translateZ(' + this.viewPotisonZ + 'px) translateY(' + this.viewPotisonY + 'px) translateX(' + this.viewPotisonX + 'px) rotateY(' + this.viewRotateY + 'deg) rotateX(' + this.viewRotateX + 'deg) rotateZ(' + this.viewRotateZ + 'deg) '; + this.gameTable.nativeElement.style.transform = `translateZ(${this.viewPotisonZ.toFixed(4)}px) translateY(${this.viewPotisonY.toFixed(4)}px) translateX(${this.viewPotisonX.toFixed(4)}px) rotateY(${this.viewRotateY.toFixed(4)}deg) rotateX(${this.viewRotateX.toFixed(4) + 'deg) rotateZ(' + this.viewRotateZ.toFixed(4)}deg)`; } private setGameTableGrid(width: number, height: number, gridSize: number = 50, gridType: GridType = GridType.SQUARE, gridColor: string = '#000000e6') { diff --git a/src/app/component/peer-cursor/peer-cursor.component.ts b/src/app/component/peer-cursor/peer-cursor.component.ts index cd81f1ce5..e323fcf85 100644 --- a/src/app/component/peer-cursor/peer-cursor.component.ts +++ b/src/app/component/peer-cursor/peer-cursor.component.ts @@ -126,6 +126,6 @@ export class PeerCursorComponent implements OnInit, AfterViewInit, OnDestroy { } private setPosition(x: number, y: number, z: number) { - this.cursorElement.style.transform = 'translateX(' + x + 'px) translateY(' + y + 'px) translateZ(' + z + 'px)'; + this.cursorElement.style.transform = `translateX(${x.toFixed(4)}px) translateY(${y.toFixed(4)}px) translateZ(${z.toFixed(4)}px)`; } } diff --git a/src/app/directive/movable.directive.ts b/src/app/directive/movable.directive.ts index 8cb4e22ec..3e6ff4a5c 100644 --- a/src/app/directive/movable.directive.ts +++ b/src/app/directive/movable.directive.ts @@ -305,7 +305,7 @@ export class MovableDirective implements AfterViewInit, OnDestroy { } private updateTransformCss() { - let css = this.transformCssOffset + ' translateX(' + this.posX + 'px) translateY(' + this.posY + 'px) translateZ(' + this.posZ + 'px)'; + let css = `${this.transformCssOffset} translate3d(${this.posX.toFixed(4)}px, ${this.posY.toFixed(4)}px, ${this.posZ.toFixed(4)}px)`; this.nativeElement.style.transform = css; } diff --git a/src/app/directive/rotable.directive.ts b/src/app/directive/rotable.directive.ts index 8b1ab08f9..8bb239240 100644 --- a/src/app/directive/rotable.directive.ts +++ b/src/app/directive/rotable.directive.ts @@ -206,7 +206,7 @@ export class RotableDirective implements AfterViewInit, OnDestroy { } private updateTransformCss() { - let css = this.transformCssOffset + ' rotateZ(' + this.rotate + 'deg)'; + let css = `${this.transformCssOffset} rotateZ(${this.rotate.toFixed(4)}deg)`; this.nativeElement.style.transform = css; } } From 8fbdff2edd4ac446c0f5b28cc83ecf3d967171ae Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 1 Jul 2022 00:56:23 +0900 Subject: [PATCH 101/161] =?UTF-8?q?fix:=20Chrome=E3=81=AB=E3=81=8A?= =?UTF-8?q?=E3=81=91=E3=82=8B3D=E8=A6=81=E7=B4=A0=E3=81=AE=E3=83=AC?= =?UTF-8?q?=E3=83=B3=E3=83=80=E3=83=AA=E3=83=B3=E3=82=B0=E9=80=9F=E5=BA=A6?= =?UTF-8?q?=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Chrome 102で発生したレンダリング速度悪化への対応. `entyu/udonarium_lily`の修正内容を参考. 詳細な原理は不明だが、余分なdiv要素を組み込むと再レンダリングの処理が高速になる様子. 将来のアップデートでこのトリックが不要になれば削除を検討するべき. --- .../component/card-stack/card-stack.component.html | 1 + src/app/component/card/card.component.html | 1 + .../dice-symbol/dice-symbol.component.html | 1 + .../game-character/game-character.component.html | 1 + .../game-table-mask/game-table-mask.component.html | 1 + .../peer-cursor/peer-cursor.component.html | 1 + .../component/peer-cursor/peer-cursor.component.ts | 7 ++++++- src/app/component/terrain/terrain.component.html | 1 + .../component/text-note/text-note.component.html | 1 + src/app/directive/movable.directive.ts | 5 +++++ src/styles.css | 13 +++++++++++++ 11 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/app/component/card-stack/card-stack.component.html b/src/app/component/card-stack/card-stack.component.html index 044725c0d..3e9438737 100644 --- a/src/app/component/card-stack/card-stack.component.html +++ b/src/app/component/card-stack/card-stack.component.html @@ -1,3 +1,4 @@ +
diff --git a/src/app/component/card/card.component.html b/src/app/component/card/card.component.html index e779715b9..4d902e376 100644 --- a/src/app/component/card/card.component.html +++ b/src/app/component/card/card.component.html @@ -1,3 +1,4 @@ +
diff --git a/src/app/component/game-character/game-character.component.html b/src/app/component/game-character/game-character.component.html index 3af4ae2d4..3fa461936 100644 --- a/src/app/component/game-character/game-character.component.html +++ b/src/app/component/game-character/game-character.component.html @@ -1,3 +1,4 @@ +
diff --git a/src/app/component/game-table-mask/game-table-mask.component.html b/src/app/component/game-table-mask/game-table-mask.component.html index 7b31d9083..3c90c0048 100644 --- a/src/app/component/game-table-mask/game-table-mask.component.html +++ b/src/app/component/game-table-mask/game-table-mask.component.html @@ -1,3 +1,4 @@ +
diff --git a/src/app/component/peer-cursor/peer-cursor.component.html b/src/app/component/peer-cursor/peer-cursor.component.html index 9d0ac3d11..005c8487f 100644 --- a/src/app/component/peer-cursor/peer-cursor.component.html +++ b/src/app/component/peer-cursor/peer-cursor.component.html @@ -1,3 +1,4 @@ +
diff --git a/src/app/component/peer-cursor/peer-cursor.component.ts b/src/app/component/peer-cursor/peer-cursor.component.ts index e323fcf85..0128277a1 100644 --- a/src/app/component/peer-cursor/peer-cursor.component.ts +++ b/src/app/component/peer-cursor/peer-cursor.component.ts @@ -14,7 +14,7 @@ import { PointerCoordinate } from 'service/pointer-device.service'; styleUrls: ['./peer-cursor.component.css'] }) export class PeerCursorComponent implements OnInit, AfterViewInit, OnDestroy { - + @ViewChild('chromeTrick') chromeTrickElementRef: ElementRef; // デスクトップWindows版Chrome 102-103対策 @ViewChild('cursor') cursorElementRef: ElementRef; @ViewChild('opacity') opacityElementRef: ElementRef; @Input() cursor: PeerCursor = PeerCursor.myCursor; @@ -23,6 +23,7 @@ export class PeerCursorComponent implements OnInit, AfterViewInit, OnDestroy { get name(): string { return this.cursor.name } get isMine(): boolean { return this.cursor.isMine; } + private chromeTrickElement: HTMLElement = null; private cursorElement: HTMLElement = null; private opacityElement: HTMLElement = null; private fadeOutTimer: ResettableTimeout = null; @@ -67,6 +68,7 @@ export class PeerCursorComponent implements OnInit, AfterViewInit, OnDestroy { document.body.addEventListener('touchmove', this.callcack); }); } else { + this.chromeTrickElement = this.chromeTrickElementRef.nativeElement; this.cursorElement = this.cursorElementRef.nativeElement; this.opacityElement = this.opacityElementRef.nativeElement; this.setAnimatedTransition(); @@ -119,13 +121,16 @@ export class PeerCursorComponent implements OnInit, AfterViewInit, OnDestroy { private stopTransition() { this.cursorElement.style.transform = window.getComputedStyle(this.cursorElement).transform; + this.chromeTrickElement.style.transform = this.cursorElement.style.transform; } private setAnimatedTransition() { this.cursorElement.style.transition = `transform ${this.delayMs + 33}ms linear, opacity 0.5s ease-out`; + this.chromeTrickElement.style.transform = this.cursorElement.style.transform; } private setPosition(x: number, y: number, z: number) { this.cursorElement.style.transform = `translateX(${x.toFixed(4)}px) translateY(${y.toFixed(4)}px) translateZ(${z.toFixed(4)}px)`; + this.chromeTrickElement.style.transform = this.cursorElement.style.transform; } } diff --git a/src/app/component/terrain/terrain.component.html b/src/app/component/terrain/terrain.component.html index caa02d81a..05f60feee 100644 --- a/src/app/component/terrain/terrain.component.html +++ b/src/app/component/terrain/terrain.component.html @@ -1,3 +1,4 @@ +
diff --git a/src/app/component/text-note/text-note.component.html b/src/app/component/text-note/text-note.component.html index c1667ddbb..da1959285 100644 --- a/src/app/component/text-note/text-note.component.html +++ b/src/app/component/text-note/text-note.component.html @@ -1,3 +1,4 @@ +
diff --git a/src/app/directive/movable.directive.ts b/src/app/directive/movable.directive.ts index 3e6ff4a5c..842928c44 100644 --- a/src/app/directive/movable.directive.ts +++ b/src/app/directive/movable.directive.ts @@ -40,6 +40,7 @@ export class MovableDirective implements AfterViewInit, OnDestroy { @Output('movable.onend') onend: EventEmitter = new EventEmitter(); private get nativeElement(): HTMLElement { return this.elementRef.nativeElement; } + private chromeTrickElement: HTMLElement; // デスクトップWindows版Chrome 102-103対策 private _posX: number = 0; private _posY: number = 0; @@ -76,6 +77,8 @@ export class MovableDirective implements AfterViewInit, OnDestroy { ) { } ngAfterViewInit() { + this.chromeTrickElement = this.nativeElement.parentElement.querySelector('.chrome-3d-transform-trick'); + this.batchService.add(() => this.initialize(), this.elementRef); this.setPosition(this.tabletopObject); } @@ -302,11 +305,13 @@ export class MovableDirective implements AfterViewInit, OnDestroy { private stopTransition() { this.nativeElement.style.transform = window.getComputedStyle(this.nativeElement).transform; + if (this.chromeTrickElement) this.chromeTrickElement.style.transform = this.nativeElement.style.transform; } private updateTransformCss() { let css = `${this.transformCssOffset} translate3d(${this.posX.toFixed(4)}px, ${this.posY.toFixed(4)}px, ${this.posZ.toFixed(4)}px)`; this.nativeElement.style.transform = css; + if (this.chromeTrickElement) this.chromeTrickElement.style.transform = this.nativeElement.style.transform; } private setCollidableLayer(isCollidable: boolean) { diff --git a/src/styles.css b/src/styles.css index 5bcdd1462..954dba5be 100644 --- a/src/styles.css +++ b/src/styles.css @@ -177,4 +177,17 @@ body { -webkit-transform: scale(0, 0); transform: scale(0, 0); } +} + +/* + * デスクトップWindows版Chrome 102-103におけるレンダリング速度改善のための定義. + * このCSSクラスを付与した要素をTabletopObject要素とセットで移動させると再レンダリング処理時間が改善する. + * GPUによるハードウェアアクセラレーションの改善というより、DOM構造に関するCPU処理時間の改善のように見えるが詳細不明. + * 将来的なChromeのアップデートでレンダリング速度が改善された場合は削除を検討. + */ +.chrome-3d-transform-trick { + position: absolute; + height: 1px; + width: 1px; + pointer-events: none; } \ No newline at end of file From 0610ef4dd929453cfc5695d19339903836c41fd0 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 1 Jul 2022 01:29:27 +0900 Subject: [PATCH 102/161] =?UTF-8?q?fix:=203D=E7=94=BB=E5=83=8F=E8=A6=81?= =?UTF-8?q?=E7=B4=A0=E3=81=AE=E6=8F=8F=E7=94=BB=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Chrome 102で発生したレンダリング問題への対応. 将来のアップデートでこのトリックが不要になれば削除を検討するべき. --- src/app/component/card-stack/card-stack.component.html | 10 +++++----- src/app/component/card/card.component.html | 6 +++--- .../component/dice-symbol/dice-symbol.component.html | 2 +- .../game-character/game-character.component.html | 2 +- src/styles.css | 9 +++++++++ 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/app/component/card-stack/card-stack.component.html b/src/app/component/card-stack/card-stack.component.html index 3e9438737..532c67e40 100644 --- a/src/app/component/card-stack/card-stack.component.html +++ b/src/app/component/card-stack/card-stack.component.html @@ -2,12 +2,12 @@
-
-
- -
+
autorenew diff --git a/src/app/component/card/card.component.html b/src/app/component/card/card.component.html index 4d902e376..f65a75dbd 100644 --- a/src/app/component/card/card.component.html +++ b/src/app/component/card/card.component.html @@ -1,13 +1,13 @@
-
- +
{{ownerName}}
- +
autorenew diff --git a/src/app/component/dice-symbol/dice-symbol.component.html b/src/app/component/dice-symbol/dice-symbol.component.html index 52fc3b24a..fd0b883bd 100644 --- a/src/app/component/dice-symbol/dice-symbol.component.html +++ b/src/app/component/dice-symbol/dice-symbol.component.html @@ -26,7 +26,7 @@
{{ownerName}}
{{ownerName}}
- +
diff --git a/src/app/component/game-character/game-character.component.html b/src/app/component/game-character/game-character.component.html index 3fa461936..9fd04c89e 100644 --- a/src/app/component/game-character/game-character.component.html +++ b/src/app/component/game-character/game-character.component.html @@ -22,7 +22,7 @@
{{name}}
{{name}}
- +
autorenew diff --git a/src/styles.css b/src/styles.css index 954dba5be..69df16a97 100644 --- a/src/styles.css +++ b/src/styles.css @@ -190,4 +190,13 @@ body { height: 1px; width: 1px; pointer-events: none; +} + +/* + * デスクトップWindows版Chrome 102-103におけるレンダリング改善のための定義. + * 3D表示している画像にこのCSSクラスを付与すると至近距離で表示した時の解像度が鮮明になる. + * 将来的なChromeのアップデートでレンダリング速度が改善された場合は削除を検討. + */ +.chrome-smooth-image-trick { + transform-style: inherit; } \ No newline at end of file From 5ee16f084b1abece5cf3a2a8b646ac42e9d891f9 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 4 Jul 2022 20:07:47 +0900 Subject: [PATCH 103/161] =?UTF-8?q?fix:=203D=E3=83=86=E3=82=AD=E3=82=B9?= =?UTF-8?q?=E3=83=88=E8=A6=81=E7=B4=A0=E3=81=AE=E3=83=AC=E3=83=B3=E3=83=80?= =?UTF-8?q?=E3=83=AA=E3=83=B3=E3=82=B0=E9=80=9F=E5=BA=A6=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Chrome 102で発生したレンダリング問題への対応. --- .../dice-symbol/dice-symbol.component.css | 10 ---------- .../dice-symbol/dice-symbol.component.html | 20 +++++++++++-------- .../game-character.component.css | 10 ---------- .../game-character.component.html | 12 ++++++----- .../peer-cursor/peer-cursor.component.css | 17 +++++++++++++++- .../peer-cursor/peer-cursor.component.html | 18 ++++++++++------- .../text-note/text-note.component.css | 9 +++++++++ .../text-note/text-note.component.html | 4 +++- 8 files changed, 58 insertions(+), 42 deletions(-) diff --git a/src/app/component/dice-symbol/dice-symbol.component.css b/src/app/component/dice-symbol/dice-symbol.component.css index aca62fdd6..1fd98dc84 100644 --- a/src/app/component/dice-symbol/dice-symbol.component.css +++ b/src/app/component/dice-symbol/dice-symbol.component.css @@ -173,17 +173,7 @@ .is-black-background { color: #CCC; background-color: rgba(30, 30, 30, 0.8); -} - -.fornt-tag { - backface-visibility: hidden; -} - -.back-tag { - position: absolute; - top: 3px; backface-visibility: hidden; - transform: rotateY(-180deg); } .has-length-limit { diff --git a/src/app/component/dice-symbol/dice-symbol.component.html b/src/app/component/dice-symbol/dice-symbol.component.html index fd0b883bd..98c2b9ade 100644 --- a/src/app/component/dice-symbol/dice-symbol.component.html +++ b/src/app/component/dice-symbol/dice-symbol.component.html @@ -18,14 +18,18 @@
-
-
{{name}}:{{face}}???
-
{{name}}:{{face}}???
-
-
-
{{ownerName}}
-
{{ownerName}}
-
+ +
+
{{name}}:{{face}}???
+
+
+
{{ownerName}}
+
+
diff --git a/src/app/component/game-character/game-character.component.css b/src/app/component/game-character/game-character.component.css index 4daebb8ea..3acc9a438 100644 --- a/src/app/component/game-character/game-character.component.css +++ b/src/app/component/game-character/game-character.component.css @@ -152,17 +152,7 @@ .is-black-background { color: #CCC; background-color: rgba(30, 30, 30, 0.8); -} - -.fornt-tag { - backface-visibility: hidden; -} - -.back-tag { - position: absolute; - top: 3px; backface-visibility: hidden; - transform: rotateY(-180deg); } .has-length-limit { diff --git a/src/app/component/game-character/game-character.component.html b/src/app/component/game-character/game-character.component.html index 9fd04c89e..c2233d359 100644 --- a/src/app/component/game-character/game-character.component.html +++ b/src/app/component/game-character/game-character.component.html @@ -17,11 +17,13 @@
-
-
{{name}}
-
{{name}}
-
+ +
+
{{name}}
+
+
diff --git a/src/app/component/peer-cursor/peer-cursor.component.css b/src/app/component/peer-cursor/peer-cursor.component.css index b03a7d071..167dca210 100644 --- a/src/app/component/peer-cursor/peer-cursor.component.css +++ b/src/app/component/peer-cursor/peer-cursor.component.css @@ -12,6 +12,13 @@ transition: transform 133ms linear, opacity 0.5s ease-out; } +.upright-transform { + position: absolute; + bottom: 0; + left: 0; + right: 0; +} + .peer-cursor { height: 45px; width: 45px; @@ -23,7 +30,15 @@ border-radius: 50% 50% 5% 50%; background-color: rgba(240, 218, 189, 0.9); transform-origin: 100% 100%; - transform: translateX(-100%) translateY(-100%) rotateX(-90deg) rotateZ(45deg); + backface-visibility: hidden; +} + +.is-front { + transform: translateX(-100%) translateY(-100%) rotateX(-90deg) rotateZ(45deg); +} + +.is-back { + transform: translateX(-100%) translateY(-100%) rotateX(-90deg) rotateY(180deg) rotateZ(45deg); } .icon { diff --git a/src/app/component/peer-cursor/peer-cursor.component.html b/src/app/component/peer-cursor/peer-cursor.component.html index 005c8487f..eac7d0b83 100644 --- a/src/app/component/peer-cursor/peer-cursor.component.html +++ b/src/app/component/peer-cursor/peer-cursor.component.html @@ -1,10 +1,14 @@ -
-
-
-
-
- {{name}} + +
+
+
+
+
+
+ {{name}} +
+
-
\ No newline at end of file + \ No newline at end of file diff --git a/src/app/component/text-note/text-note.component.css b/src/app/component/text-note/text-note.component.css index 78caff370..05420d864 100644 --- a/src/app/component/text-note/text-note.component.css +++ b/src/app/component/text-note/text-note.component.css @@ -53,10 +53,19 @@ bottom: 0; left: 0; right: 0; + backface-visibility: hidden; +} + +.is-front { transform-origin: 50% 100%; transform: rotateX(-90deg); } +.is-back { + transform-origin: 50% 100%; + transform: rotateX(-90deg) rotateY(180deg); +} + .is-bg-texture { background-repeat: no-repeat; background-size: 100% 100%; diff --git a/src/app/component/text-note/text-note.component.html b/src/app/component/text-note/text-note.component.html index da1959285..224805191 100644 --- a/src/app/component/text-note/text-note.component.html +++ b/src/app/component/text-note/text-note.component.html @@ -4,12 +4,14 @@
-
{{title}}
+
autorenew
From 00fe82e583b56ac19a64a48b710c4d2acabb543f Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 4 Jul 2022 20:11:13 +0900 Subject: [PATCH 104/161] =?UTF-8?q?refactor:=20=E4=B8=8D=E8=A6=81=E3=81=AB?= =?UTF-8?q?=E3=81=AA=E3=81=A3=E3=81=9FCSS=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Chrome 102-103ではレンダリング速度に影響していない様子のため削除 --- .../game-table/game-table.component.css | 9 --------- .../game-table/game-table.component.html | 16 ++++++++-------- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/src/app/component/game-table/game-table.component.css b/src/app/component/game-table/game-table.component.css index f6f324586..cecceaaab 100644 --- a/src/app/component/game-table/game-table.component.css +++ b/src/app/component/game-table/game-table.component.css @@ -26,15 +26,6 @@ position: absolute; } -.will-change-transform { - /* - * デスクトップChromeにおけるレンダリング速度改善のための定義. - * will-changeの使用は可能な限り避けるべきであり、将来的なアップデートでレンダリング速度が改善された場合は削除を検討. - */ - will-change: transform; - backface-visibility: visible; -} - .is-pointer-events-none { pointer-events: none; } diff --git a/src/app/component/game-table/game-table.component.html b/src/app/component/game-table/game-table.component.html index cc616356f..9e5ac58a7 100644 --- a/src/app/component/game-table/game-table.component.html +++ b/src/app/component/game-table/game-table.component.html @@ -4,14 +4,14 @@
- - - - - - - - + + + + + + + +
From eee224aa6830968ed6de7e9fbf4545bd8257764c Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 4 Jul 2022 20:13:07 +0900 Subject: [PATCH 105/161] =?UTF-8?q?feat:=20MIME=20Type=E5=AE=9A=E7=BE=A9?= =?UTF-8?q?=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/file-storage/mime-type.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/app/class/core/file-storage/mime-type.ts b/src/app/class/core/file-storage/mime-type.ts index fd58d65f6..116b45a26 100644 --- a/src/app/class/core/file-storage/mime-type.ts +++ b/src/app/class/core/file-storage/mime-type.ts @@ -1,9 +1,13 @@ export namespace MimeType { const types = { + avif: 'image/avif', gif: 'image/gif', jpg: 'image/jpeg', jpeg: 'image/jpeg', jpe: 'image/jpeg', + jfif: 'image/jpeg', + pjpeg: 'image/jpeg', + pjp: 'image/jpeg', png: 'image/png', apng: 'image/apng', webp: 'image/webp', From ccba4825a34a60064e9141372ec445566cb0d2d2 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 4 Jul 2022 22:20:08 +0900 Subject: [PATCH 106/161] =?UTF-8?q?build:=20=E4=BE=9D=E5=AD=98=E3=83=91?= =?UTF-8?q?=E3=83=83=E3=82=B1=E3=83=BC=E3=82=B8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 4540 ++++++++++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 2448 insertions(+), 2094 deletions(-) diff --git a/package-lock.json b/package-lock.json index d605190cd..cf6d608cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^13.3.1", "@angular/platform-browser-dynamic": "^13.3.1", "@angular/router": "^13.3.1", - "bcdice": "^3.5.1", + "bcdice": "^3.6.0", "crypto-js": "^3.3.0", "file-saver": "^2.0.5", "hammerjs": "^2.0.8", @@ -56,25 +56,25 @@ } }, "node_modules/@ampproject/remapping": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-1.1.1.tgz", - "integrity": "sha512-YVAcA4DKLOj296CF5SrQ8cYiMRiUGc2sqFpLxsDGWE34suHqhGP/5yMsDHKsrh8hs8I5TiRVXNwKPWQpX3iGjw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "sourcemap-codec": "1.4.8" + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@angular-devkit/architect": { - "version": "0.1303.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.1.tgz", - "integrity": "sha512-ppaLzNZPrqrI96ddgm1RuEALVpWZsmHbIPLDd0GBwhF6aOkwF0LpZHd5XyS4ktGFZPReiFIjWSVtqV5vaBdRsw==", + "version": "0.1303.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.8.tgz", + "integrity": "sha512-2zaNejnfZbq+fFOVgkmWkh+2UmK/CBDbWTq7VJHopJLtUuf7pFNvRk73s9xayuJ3Lt2/sY17Mykku2LziBF89A==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.3.1", + "@angular-devkit/core": "13.3.8", "rxjs": "6.6.7" }, "engines": { @@ -102,15 +102,15 @@ "dev": true }, "node_modules/@angular-devkit/build-angular": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.1.tgz", - "integrity": "sha512-xxBW4zZZM+lewW0nEpk9SXw6BMYhxe8WI/FjyEroOV8G2IuOrjZ4112QOpk6jCgmPHSOEldbltEdwoVLAnu09Q==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.8.tgz", + "integrity": "sha512-5nWqb58oLcWoBoAECqHiUlOV23/J/4W1a9aqaFQcN6bThRzoy54S69zUuQREnBE36elDrSxhn2Y34poqYe8iKQ==", "dev": true, "dependencies": { - "@ampproject/remapping": "1.1.1", - "@angular-devkit/architect": "0.1303.1", - "@angular-devkit/build-webpack": "0.1303.1", - "@angular-devkit/core": "13.3.1", + "@ampproject/remapping": "2.2.0", + "@angular-devkit/architect": "0.1303.8", + "@angular-devkit/build-webpack": "0.1303.8", + "@angular-devkit/core": "13.3.8", "@babel/core": "7.16.12", "@babel/generator": "7.16.8", "@babel/helper-annotate-as-pure": "7.16.7", @@ -121,9 +121,9 @@ "@babel/runtime": "7.16.7", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.6", - "@ngtools/webpack": "13.3.1", + "@ngtools/webpack": "13.3.8", "ansi-colors": "4.1.1", - "babel-loader": "8.2.3", + "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", "browserslist": "^4.9.1", "cacache": "15.3.0", @@ -143,7 +143,7 @@ "license-webpack-plugin": "4.0.2", "loader-utils": "3.2.0", "mini-css-extract-plugin": "2.5.3", - "minimatch": "3.0.4", + "minimatch": "3.0.5", "open": "8.4.0", "ora": "5.4.1", "parse5-html-rewriting-stream": "6.0.1", @@ -229,13 +229,19 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1303.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.1.tgz", - "integrity": "sha512-KSnR3y2q5hxh7t7ZSi0Emv/Kh9+D105JaEeyEqjqRjLdZSd2m6eAxbSUMNOAsbqnJTMCfzU5AG7jhbujuge0dQ==", + "version": "0.1303.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.8.tgz", + "integrity": "sha512-N3DehEQ4uARricbYTuASBCnHdrtKFIMZpl6A4GB5DKQILF7KctsaAz0QvAiA8y4ojhSIRvXK5XVWklX3QVlJIw==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1303.1", + "@angular-devkit/architect": "0.1303.8", "rxjs": "6.6.7" }, "engines": { @@ -267,9 +273,9 @@ "dev": true }, "node_modules/@angular-devkit/core": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.1.tgz", - "integrity": "sha512-eXAcQaP1mn6rnQb+5bv5NsamY6b34UYM7G+S154Hnma6CTTSGBtcmoNAJs8cekuFqWlw7YgpB/e15jR5OLPkDA==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.8.tgz", + "integrity": "sha512-PCmfMkErpnH429l1cANak4PnCpAscqAubS6Dw83++cS34ht0/bgKRb2zSyBuB2Ka6kw7wAZ3fCyTcVvyfxVFEg==", "dev": true, "dependencies": { "ajv": "8.9.0", @@ -312,12 +318,12 @@ "dev": true }, "node_modules/@angular-devkit/schematics": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.1.tgz", - "integrity": "sha512-DxXMjlq/sALcHuONZRMTBX5k30XPfN4b6Ue4k7Xl8JKZqyHhEzfXaZzgD9u2cwb7wybKEeF/BZ5eJd8JG525og==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.8.tgz", + "integrity": "sha512-7mTlxZhS9uHxtmOiZeSMkKdIE5r5FmQ/1IBhRBfD5XDQdipQkUJyOtclPO/+t/AJIG0+LYt9+7X5hHUr7W3kZA==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.3.1", + "@angular-devkit/core": "13.3.8", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -348,9 +354,9 @@ "dev": true }, "node_modules/@angular/animations": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.1.tgz", - "integrity": "sha512-O6DVOk++Bz8Bcz2AAnd1wz1OFzsy3XjmA4o1Mx+DNLRwrLvWHuq33rTVs0Pur7psiKz1lym9kMrY9YwE3s0SJA==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.11.tgz", + "integrity": "sha512-KE/3RuvixHIk9YTSwaUsezsUm9Ig9Y8rZMpHOT/8bRtzPiJ5ld2GnDHjrJgyZn7TdoP4wz4YCta5eC4ycu+KCw==", "dependencies": { "tslib": "^2.3.0" }, @@ -358,20 +364,20 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "13.3.1" + "@angular/core": "13.3.11" } }, "node_modules/@angular/cli": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.1.tgz", - "integrity": "sha512-0uwU8v3V/2s95X4cZT582J6upReT/ZNw/VAf4p4q51JN+BBvdCEb251xTF+TcOojyToFyJYvg8T28XSrsNsmTQ==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.8.tgz", + "integrity": "sha512-dsvum8oGnbgX5mLh9CDzP1ip2UGDZdppPD6np2XXhqX75DfJxRlgl4u3NxBSnDmeyhIGTsGV0HKAxoB5EOoHcw==", "dev": true, "hasInstallScript": true, "dependencies": { - "@angular-devkit/architect": "0.1303.1", - "@angular-devkit/core": "13.3.1", - "@angular-devkit/schematics": "13.3.1", - "@schematics/angular": "13.3.1", + "@angular-devkit/architect": "0.1303.8", + "@angular-devkit/core": "13.3.8", + "@angular-devkit/schematics": "13.3.8", + "@schematics/angular": "13.3.8", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.3", @@ -398,9 +404,9 @@ } }, "node_modules/@angular/common": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.1.tgz", - "integrity": "sha512-Var5ChoX8kZl9cbIWbW7Reb3Xz3t1c1XHwq1k+oK2fgrPdEfypY9n/6DxyXOtSEGb9aV7ZCaxcv2c5JUKR3OPg==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.11.tgz", + "integrity": "sha512-gPMwDYIAag1izXm2tRQ6EOIx9FVEUqLdr+qYtRVoQtoBmfkoTSLGcpeBXqqlPVxVPbA6Li1WZZT5wxLLlLAN+Q==", "dependencies": { "tslib": "^2.3.0" }, @@ -408,14 +414,14 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "13.3.1", + "@angular/core": "13.3.11", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.1.tgz", - "integrity": "sha512-ppJURRRDPZB6UaZctH6yBsznZXB7wZdCpfy5yo4lFE4k8rygfV80TmnrbJBZXNNq057VK48Bap1tsehFwckjog==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.11.tgz", + "integrity": "sha512-EV6JCBbXdHDHbPShWmymvuoxFYG0KVc8sDJpYp47WLHCY2zgZaXhvWs//Hrls3fmi+TGTekgRa2jOBBNce/Ggg==", "dependencies": { "tslib": "^2.3.0" }, @@ -424,9 +430,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.1.tgz", - "integrity": "sha512-dImxLUITNwODlXaLcEACw10bxTiajWEQz3sLwhT/936UH+MNtM/RyLJ0M7xDvILDqq77W3psK5/M6F3M1mUpew==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.11.tgz", + "integrity": "sha512-cl+3Wzxt8NRi2WY+RdsxuQ3yQRUp8pSlfSlJJnfaKE1BEqap6uem2DovuhnIbmrLhxZ5xt7o+I1szyO6sn6+ag==", "dev": true, "dependencies": { "@babel/core": "^7.17.2", @@ -449,42 +455,30 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "13.3.1", + "@angular/compiler": "13.3.11", "typescript": ">=4.4.2 <4.7" } }, - "node_modules/@angular/compiler-cli/node_modules/@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@angular/compiler-cli/node_modules/@babel/core": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.8.tgz", - "integrity": "sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", + "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.7", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.8", - "@babel/parser": "^7.17.8", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.6", + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helpers": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", + "json5": "^2.2.1", "semver": "^6.3.0" }, "engines": { @@ -505,44 +499,63 @@ } }, "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "version": "7.18.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", + "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.18.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@angular/compiler-cli/node_modules/magic-string": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", - "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", + "node_modules/@angular/compiler-cli/node_modules/@babel/template": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", "dev": true, "dependencies": { - "sourcemap-codec": "^1.4.8" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@angular/compiler-cli/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "node_modules/@angular/compiler-cli/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/magic-string": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" } }, "node_modules/@angular/core": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.1.tgz", - "integrity": "sha512-ZU/B9jEiZ0jadRkRL9Sb2btzqgQ0ylx380PfRQaojVIsij/EO6+jOSHIo5upMIGu/OvkggfweShJGlylCOrOXA==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.11.tgz", + "integrity": "sha512-9BmE2CxyV0g+AkBeuc8IwjSOiJ8Y+kptXnqD/J8EAFT3B0/fLGVnjFdZC6Sev9L0SNZb6qdzebpfIOLqbUjReQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -555,9 +568,9 @@ } }, "node_modules/@angular/forms": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.1.tgz", - "integrity": "sha512-S6a/CEq1ht0vw2epuESiO551dsyLQTb/HuwceIBlsX2JqRRccynYlyx92gsDAo4hD2F0q+EeqZEPuq3oQIK43A==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.11.tgz", + "integrity": "sha512-iMgTNB+Qc3TsfAZSk1FnUE6MVoddPzxhG9AKCfSlvpjFh8VmXkIjxPL3dun7J8OjayT3X+B8f7LZ9AkKNXtBKw==", "dependencies": { "tslib": "^2.3.0" }, @@ -565,16 +578,16 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.3.1", - "@angular/core": "13.3.1", - "@angular/platform-browser": "13.3.1", + "@angular/common": "13.3.11", + "@angular/core": "13.3.11", + "@angular/platform-browser": "13.3.11", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/platform-browser": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.1.tgz", - "integrity": "sha512-WtyrkK0pLYj6w7pz3xk8zlhWL1NwGCWT+k7YxEjBOONCIXlZvCqWVzWo4nNQn9Xqxd+z1FVI0dssDwZm2TD+Eg==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.11.tgz", + "integrity": "sha512-PG3chCErARb6wNzkOed2NsZmgvTmbumRx/6sMXqGkDKXYQm0JULnl4X42Rn+JCgJ9DLJi5/jrd1dbcBCrKk9Vg==", "dependencies": { "tslib": "^2.3.0" }, @@ -582,9 +595,9 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "13.3.1", - "@angular/common": "13.3.1", - "@angular/core": "13.3.1" + "@angular/animations": "13.3.11", + "@angular/common": "13.3.11", + "@angular/core": "13.3.11" }, "peerDependenciesMeta": { "@angular/animations": { @@ -593,9 +606,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.1.tgz", - "integrity": "sha512-TKV63SSyjrv5EsD03PloCbo8ZrJq5owkJ38E2FO/VvJAV3xu3Ey0SnoikNZMd8o3rh7+ocuT5K9Xcr4YuKVgEA==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.11.tgz", + "integrity": "sha512-xM0VRC1Nw//SHO3gkghUHyjCaaQbk1UYMq4vIu3iKVq9KLqOSZgccv0NcOKHzXXN3S5RgX2auuyOUOCD6ny1Pg==", "dependencies": { "tslib": "^2.3.0" }, @@ -603,16 +616,16 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.3.1", - "@angular/compiler": "13.3.1", - "@angular/core": "13.3.1", - "@angular/platform-browser": "13.3.1" + "@angular/common": "13.3.11", + "@angular/compiler": "13.3.11", + "@angular/core": "13.3.11", + "@angular/platform-browser": "13.3.11" } }, "node_modules/@angular/router": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.1.tgz", - "integrity": "sha512-YpZLjI4UI9KK6x8yn41XMrBWZgVb5JyJR7KNhQXB7WiX8bVH5SZzFRkjR3qUxTGaxe6I7KFvzySwm4JTYNj+xw==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.11.tgz", + "integrity": "sha512-bJTcxDYKEyoqtsi1kJcDJWLmEN+dXpwhU07SsqUwfyN4V5fYF1ApDhpJ4c17hNdjEqe106srT9tiHXhmWayhmQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -620,9 +633,9 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.3.1", - "@angular/core": "13.3.1", - "@angular/platform-browser": "13.3.1", + "@angular/common": "13.3.11", + "@angular/core": "13.3.11", + "@angular/platform-browser": "13.3.11", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -633,21 +646,21 @@ "dev": true }, "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz", + "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -695,7 +708,7 @@ "node_modules/@babel/core/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -718,7 +731,7 @@ "node_modules/@babel/generator/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -737,27 +750,27 @@ } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz", + "integrity": "sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", + "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "engines": { @@ -777,18 +790,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", - "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", + "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -797,14 +810,26 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", - "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", + "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" }, "engines": { "node": ">=6.9.0" @@ -813,6 +838,18 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-define-polyfill-provider": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", @@ -842,251 +879,307 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", + "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", + "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "node_modules/@babel/helper-function-name/node_modules/@babel/template": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", + "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", + "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", + "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz", + "integrity": "sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-wrap-function": "^7.18.6", + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", + "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz", + "integrity": "sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz", + "integrity": "sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-function-name": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz", - "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", + "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", "dev": true, "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -1095,9 +1188,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", - "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", + "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1107,12 +1200,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1122,14 +1215,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz", + "integrity": "sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1156,13 +1249,13 @@ } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1172,13 +1265,13 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", - "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.17.6", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1189,12 +1282,12 @@ } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1205,12 +1298,12 @@ } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz", + "integrity": "sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1221,12 +1314,12 @@ } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1237,12 +1330,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz", + "integrity": "sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1253,12 +1346,12 @@ } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1269,12 +1362,12 @@ } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1285,16 +1378,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", - "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz", + "integrity": "sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/compat-data": "^7.18.6", + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" + "@babel/plugin-transform-parameters": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1304,12 +1397,12 @@ } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1320,13 +1413,13 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz", + "integrity": "sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1337,13 +1430,13 @@ } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1353,14 +1446,14 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1370,14 +1463,26 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-private-property-in-object/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=4" @@ -1564,12 +1669,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1596,12 +1701,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1611,12 +1716,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz", + "integrity": "sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1626,18 +1731,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz", + "integrity": "sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, "engines": { @@ -1647,13 +1752,25 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz", + "integrity": "sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1663,12 +1780,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", - "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz", + "integrity": "sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1678,13 +1795,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1694,12 +1811,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz", + "integrity": "sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1709,13 +1826,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1725,12 +1842,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz", + "integrity": "sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1740,14 +1857,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz", + "integrity": "sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1757,12 +1874,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz", + "integrity": "sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1772,12 +1889,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1787,13 +1904,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", + "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1804,14 +1921,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz", - "integrity": "sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", + "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1822,15 +1939,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", - "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz", + "integrity": "sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1841,13 +1958,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1857,12 +1974,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", + "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1872,12 +1990,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1887,13 +2005,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1903,12 +2021,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz", + "integrity": "sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1918,12 +2036,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1933,12 +2051,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", - "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", "dev": true, "dependencies": { - "regenerator-transform": "^0.14.2" + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" }, "engines": { "node": ">=6.9.0" @@ -1948,12 +2067,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1992,12 +2111,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2007,13 +2126,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz", + "integrity": "sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2023,12 +2142,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2038,12 +2157,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz", + "integrity": "sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2053,12 +2172,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz", + "integrity": "sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2068,12 +2187,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", + "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2083,13 +2202,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2238,19 +2357,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", + "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2259,35 +2378,40 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "version": "7.18.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", + "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.18.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, "node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", + "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2318,6 +2442,23 @@ "postcss": "^8.3" } }, + "node_modules/@csstools/selector-specificity": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz", + "integrity": "sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3", + "postcss-selector-parser": "^6.0.10" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", @@ -2380,25 +2521,47 @@ "node": ">=8" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz", + "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -2406,9 +2569,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.1.tgz", - "integrity": "sha512-40iEqAA/l882MPbGuG5EYxzsPWJ37fT4fF22SkPLX2eBgNhJ4K8XMt0gqcFhkHUsSe63frg1qjQ1Pd31msu0bQ==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.8.tgz", + "integrity": "sha512-meuXHb1zQ5lz7Uj7kGYTgjd9Tknsi/0jJxs+12nz06h0tifIyIoGU01YA3mUj4/bntIjfWif35KGYP+23bbAVw==", "dev": true, "engines": { "node": "^12.20.0 || ^14.15.0 || >=16.10.0", @@ -2554,13 +2717,13 @@ } }, "node_modules/@schematics/angular": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.1.tgz", - "integrity": "sha512-+lrK/d1eJsAK6d6E9TDeg3Vc71bDy1KsE8M+lEINdX9Wax22mAz4pw20X9RSCw5RHgn+XcNUuMsgRJAwVhDNpg==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.8.tgz", + "integrity": "sha512-VKRTTNYX5OsaJ6sWlCIuU71qihV3ysNNJ49wqLedOlWm1v0GMwoyGMCTJk9OZab1rpo/tYfLTcUlYqP3l6GVDQ==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.3.1", - "@angular-devkit/schematics": "13.3.1", + "@angular-devkit/core": "13.3.8", + "@angular-devkit/schematics": "13.3.8", "jsonc-parser": "3.0.0" }, "engines": { @@ -2569,15 +2732,6 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@socket.io/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -2650,9 +2804,9 @@ "dev": true }, "node_modules/@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", + "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", "dev": true, "dependencies": { "@types/estree": "*", @@ -2660,9 +2814,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "dependencies": { "@types/eslint": "*", @@ -2688,9 +2842,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "version": "4.17.29", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", + "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", "dev": true, "dependencies": { "@types/node": "*", @@ -2711,18 +2865,18 @@ "dev": true }, "node_modules/@types/http-proxy": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", - "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/jasmine": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.5.tgz", - "integrity": "sha512-RYxEJkk/RK1S6W0nMOx9Mxm5v2bKwAVjzTHiBcHkQskwKDqHKHjSU46jx/q9IffyuctNl8ebaAjb5/461faKqQ==", + "version": "3.10.6", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.6.tgz", + "integrity": "sha512-twY9adK/vz72oWxCWxzXaxoDtF9TpfEEsxvbc1ibjF3gMD/RThSuSud/GKUTR3aJnfbivAbC/vLqhY+gdWCHfA==", "dev": true }, "node_modules/@types/jasminewd2": { @@ -2772,15 +2926,15 @@ } }, "node_modules/@types/node": { - "version": "12.20.47", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.47.tgz", - "integrity": "sha512-BzcaRsnFuznzOItW1WpQrDHM7plAa7GIDMZ6b5pnMbkqEtM/6WCOhvZar39oeMQP79gwvFUWjjptE7/KGcNqFg==", + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", "dev": true }, "node_modules/@types/pako": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.3.tgz", - "integrity": "sha512-EDxOsHAD5dqjbjEUM1xwa7rpKPFb8ECBE5irONTQU7/OsO3thI5YrNEWSPNMvYmvFM0l/OLQJ6Mgw7PEdXSjhg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.4.tgz", + "integrity": "sha512-Z+5bJSm28EXBSUJEgx29ioWeEEHUh6TiMkZHDhLwjc9wVFH+ressbkmX6waUZc5R3Gobn4Qu5llGxaoflZ+yhA==", "dev": true }, "node_modules/@types/parse-json": { @@ -2802,9 +2956,9 @@ "dev": true }, "node_modules/@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, "node_modules/@types/serve-index": { @@ -3015,9 +3169,9 @@ "dev": true }, "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "dev": true }, "node_modules/abbrev": { @@ -3040,9 +3194,9 @@ } }, "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -3116,7 +3270,7 @@ "node_modules/agentkeepalive/node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, "engines": { "node": ">= 0.6" @@ -3336,9 +3490,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -3357,9 +3511,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", - "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", "dev": true, "funding": [ { @@ -3372,8 +3526,8 @@ } ], "dependencies": { - "browserslist": "^4.20.2", - "caniuse-lite": "^1.0.30001317", + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -3390,48 +3544,36 @@ } }, "node_modules/babel-loader": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", - "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", "dev": true, "dependencies": { "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", + "loader-utils": "^2.0.0", "make-dir": "^3.1.0", "schema-utils": "^2.6.5" }, "engines": { "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-loader/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" } }, "node_modules/babel-loader/node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dev": true, "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "json5": "^2.1.2" }, "engines": { - "node": ">=4.0.0" + "node": ">=8.9.0" } }, "node_modules/babel-plugin-dynamic-import-node": { @@ -3545,13 +3687,13 @@ "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, "node_modules/bcdice": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.5.1.tgz", - "integrity": "sha512-HJ8kndQmCezJHB2Lgqqg0h7q/KTk/IxizCSmu6sRvikwadtCvVFKIJTNIOfLk/kBr8i4aF1f3M2iVogTjKqTRA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.6.0.tgz", + "integrity": "sha512-4vfkRk5QcbEzqw/4pTh2fDC81uY6achvaGs8lky1C00JTyvPovvBCKhONtj+E/1grZrdEGS9kCyPQH41v4hOWg==", "dependencies": { "lodash": "^4.17.20", "source-map-support": "^0.5.19" @@ -3665,13 +3807,13 @@ "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/bonjour": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", "dev": true, "dependencies": { "array-flatten": "^2.1.0", @@ -3685,7 +3827,7 @@ "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "node_modules/brace-expansion": { @@ -3711,9 +3853,9 @@ } }, "node_modules/browserslist": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", - "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz", + "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==", "dev": true, "funding": [ { @@ -3726,11 +3868,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001317", - "electron-to-chromium": "^1.4.84", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001359", + "electron-to-chromium": "^1.4.172", + "node-releases": "^2.0.5", + "update-browserslist-db": "^1.0.4" }, "bin": { "browserslist": "cli.js" @@ -3777,7 +3918,7 @@ "node_modules/builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", "dev": true }, "node_modules/bytes": { @@ -3850,9 +3991,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001325", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001325.tgz", - "integrity": "sha512-sB1bZHjseSjDtijV1Hb7PB2Zd58Kyx+n/9EotvZ4Qcz2K3d0lWB8dB4nb8wN/TsOGFq3UuAm0zQZNQ4SoR7TrQ==", + "version": "1.0.30001363", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz", + "integrity": "sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg==", "dev": true, "funding": [ { @@ -3998,7 +4139,7 @@ "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, "engines": { "node": ">=0.8" @@ -4030,7 +4171,7 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "node_modules/color-support": { @@ -4043,9 +4184,9 @@ } }, "node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, "node_modules/commander": { @@ -4057,7 +4198,7 @@ "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "node_modules/component-emitter": { @@ -4099,7 +4240,7 @@ "node_modules/compression/node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, "engines": { "node": ">= 0.8" @@ -4117,13 +4258,13 @@ "node_modules/compression/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "node_modules/connect": { @@ -4162,13 +4303,13 @@ "node_modules/connect/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true }, "node_modules/content-disposition": { @@ -4233,7 +4374,7 @@ "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, "node_modules/copy-anything": { @@ -4307,6 +4448,7 @@ "version": "3.20.3", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz", "integrity": "sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", "dev": true, "hasInstallScript": true, "funding": { @@ -4315,12 +4457,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", - "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", + "version": "3.23.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.3.tgz", + "integrity": "sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw==", "dev": true, "dependencies": { - "browserslist": "^4.19.1", + "browserslist": "^4.21.0", "semver": "7.0.0" }, "funding": { @@ -4635,13 +4777,13 @@ "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", "dev": true }, "node_modules/date-format": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.6.tgz", - "integrity": "sha512-B9vvg5rHuQ8cbUXE/RMWMyX2YA5TecT3jKF5fLtGNlzPlU7zblSPmAm2OImDbWL+LDOQ6pUm+4LOFz+ywS41Zw==", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.11.tgz", + "integrity": "sha512-VS20KRyorrbMCQmpdl2hg5KaOUsda1RbnsJg461FfrcyCUg+pkd0b40BSW4niQyTheww4DBXQnS7HwSrKkipLw==", "dev": true, "engines": { "node": ">=4.0" @@ -4667,7 +4809,7 @@ "node_modules/decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", "dev": true, "engines": { "node": ">=0.10" @@ -4705,7 +4847,7 @@ "node_modules/defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", "dev": true, "dependencies": { "clone": "^1.0.2" @@ -4721,21 +4863,25 @@ } }, "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, "dependencies": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", "dev": true, "dependencies": { "globby": "^11.0.1", @@ -4795,7 +4941,7 @@ "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true }, "node_modules/depd": { @@ -4835,7 +4981,7 @@ "node_modules/di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", "dev": true }, "node_modules/dir-glob": { @@ -4853,7 +4999,7 @@ "node_modules/dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", "dev": true }, "node_modules/dns-packet": { @@ -4869,7 +5015,7 @@ "node_modules/dns-txt": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", "dev": true, "dependencies": { "buffer-indexof": "^1.0.0" @@ -4878,7 +5024,7 @@ "node_modules/dom-serialize": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", "dev": true, "dependencies": { "custom-event": "~1.0.0", @@ -4888,9 +5034,9 @@ } }, "node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, "dependencies": { "domelementtype": "^2.0.1", @@ -4902,9 +5048,9 @@ } }, "node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, "funding": [ { @@ -4945,13 +5091,13 @@ "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.103", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.103.tgz", - "integrity": "sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==", + "version": "1.4.177", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.177.tgz", + "integrity": "sha512-FYPir3NSBEGexSZUEeht81oVhHfLFl6mhUKSkjHN/iB/TwEIt/WHQrqVGfTLN5gQxwJCQkIJBe05eOXjI7omgg==", "dev": true }, "node_modules/emoji-regex": { @@ -4972,7 +5118,7 @@ "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, "engines": { "node": ">= 0.8" @@ -5002,9 +5148,9 @@ } }, "node_modules/engine.io": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz", - "integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -5023,21 +5169,18 @@ } }, "node_modules/engine.io-parser": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", - "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", "dev": true, - "dependencies": { - "@socket.io/base64-arraybuffer": "~1.0.2" - }, "engines": { "node": ">=10.0.0" } }, "node_modules/enhanced-resolve": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", - "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -5050,7 +5193,7 @@ "node_modules/ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", "dev": true }, "node_modules/entities": { @@ -5108,7 +5251,7 @@ "node_modules/es6-promise": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", - "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=" + "integrity": "sha512-CUD62/uqeE0L+EJeypOKuFfM56CFaH4vo+++J76bff0NkeQ2bBmWVCTNxL2hj9HeCYPkof6Gqea0BSeK17gBzA==" }, "node_modules/esbuild": { "version": "0.14.22", @@ -5473,13 +5616,13 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { "node": ">=0.8.0" @@ -5553,7 +5696,7 @@ "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, "engines": { "node": ">= 0.6" @@ -5609,38 +5752,39 @@ } }, "node_modules/express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.2", + "body-parser": "1.20.0", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.2", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.7", + "qs": "6.10.3", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", + "send": "0.18.0", + "serve-static": "1.15.0", "setprototypeof": "1.2.0", - "statuses": "~1.5.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -5652,28 +5796,16 @@ "node_modules/express/node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, - "node_modules/express/node_modules/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "node_modules/express/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" - }, "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, "node_modules/express/node_modules/debug": { @@ -5685,76 +5817,30 @@ "ms": "2.0.0" } }, - "node_modules/express/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "node_modules/express/node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/express/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", - "dev": true, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/express/node_modules/raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/express/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -5775,6 +5861,15 @@ } ] }, + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -5906,13 +6001,13 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/finalhandler/node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, "dependencies": { "ee-first": "1.1.1" @@ -5952,15 +6047,15 @@ } }, "node_modules/flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", + "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", "dev": true }, "node_modules/follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", "dev": true, "funding": [ { @@ -6002,16 +6097,16 @@ "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -6043,7 +6138,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "node_modules/fsevents": { @@ -6066,6 +6161,15 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gauge": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", @@ -6104,14 +6208,14 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6206,15 +6310,15 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "node_modules/hammerjs": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=", + "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==", "engines": { "node": ">=0.8.0" } @@ -6240,12 +6344,24 @@ "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -6276,7 +6392,7 @@ "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, "node_modules/hdr-histogram-js": { @@ -6317,7 +6433,7 @@ "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, "dependencies": { "inherits": "^2.0.1", @@ -6347,7 +6463,7 @@ "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", "dev": true }, "node_modules/http-errors": { @@ -6376,9 +6492,9 @@ } }, "node_modules/http-parser-js": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", - "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, "node_modules/http-proxy": { @@ -6410,9 +6526,9 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz", - "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, "dependencies": { "@types/http-proxy": "^1.17.8", @@ -6458,7 +6574,7 @@ "node_modules/humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, "dependencies": { "ms": "^2.0.0" @@ -6531,7 +6647,7 @@ "node_modules/image-size": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, "optional": true, "bin": { @@ -6544,12 +6660,12 @@ "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, "node_modules/immutable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", - "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", "dev": true }, "node_modules/import-fresh": { @@ -6580,7 +6696,7 @@ "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { "node": ">=0.8.19" @@ -6604,7 +6720,7 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { "once": "^1.3.0", @@ -6723,12 +6839,12 @@ "node_modules/int64-buffer": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-0.1.10.tgz", - "integrity": "sha1-J3siiofZWtd30HwTgyAiQGpHNCM=" + "integrity": "sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==" }, "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "dev": true }, "node_modules/ipaddr.js": { @@ -6759,7 +6875,7 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "node_modules/is-binary-path": { @@ -6775,9 +6891,9 @@ } }, "node_modules/is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -6819,7 +6935,7 @@ "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -6858,7 +6974,7 @@ "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "dev": true }, "node_modules/is-number": { @@ -6973,7 +7089,7 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/isbinaryfile": { "version": "4.0.10", @@ -6990,13 +7106,13 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -7012,9 +7128,9 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", "dev": true, "dependencies": { "@babel/core": "^7.12.3", @@ -7231,7 +7347,7 @@ "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, "engines": [ "node >= 0.2.0" @@ -7252,8 +7368,8 @@ "node_modules/jszip/node_modules/core-js": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", - "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=", - "deprecated": "core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js." + "integrity": "sha512-N41UFUZNqoTSGUSyL7kiStAkH31Hxq197A4Gp9MxTZfAd52pXod7VM7kWiRP0J0YpQDeaE4SLsb+2OGgtgvUEw==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js." }, "node_modules/jszip/node_modules/pako": { "version": "1.0.11", @@ -7261,9 +7377,9 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "node_modules/karma": { - "version": "6.3.17", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.17.tgz", - "integrity": "sha512-2TfjHwrRExC8yHoWlPBULyaLwAFmXmxQrcuFImt/JsAsSZu1uOWTZ1ZsWjqQtWpHLiatJOHL5jFjXSJIgCd01g==", + "version": "6.3.20", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.20.tgz", + "integrity": "sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw==", "dev": true, "dependencies": { "@colors/colors": "1.5.0", @@ -7285,7 +7401,7 @@ "qjobs": "^1.2.0", "range-parser": "^1.2.1", "rimraf": "^3.0.2", - "socket.io": "^4.2.0", + "socket.io": "^4.4.1", "source-map": "^0.6.1", "tmp": "^0.2.1", "ua-parser-js": "^0.7.30", @@ -7590,7 +7706,7 @@ "node_modules/lie": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", "dependencies": { "immediate": "~3.0.5" } @@ -7602,9 +7718,9 @@ "dev": true }, "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, "engines": { "node": ">=6.11.5" @@ -7639,7 +7755,7 @@ "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, "node_modules/log-symbols": { @@ -7729,16 +7845,16 @@ } }, "node_modules/log4js": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.4.tgz", - "integrity": "sha512-ncaWPsuw9Vl1CKA406hVnJLGQKy1OHx6buk8J4rE2lVW+NW5Y82G5/DIloO7NkqLOUtNPEANaWC1kZYVjXssPw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.5.2.tgz", + "integrity": "sha512-DXtpNtt+KDOMT7RHUDIur/WsSA3rntlUh9Zg4XCdV42wUuMmbFkl38+LZ92Z5QvQA7mD5kAVkLiBSEH/tvUB8A==", "dev": true, "dependencies": { - "date-format": "^4.0.6", + "date-format": "^4.0.10", "debug": "^4.3.4", "flatted": "^3.2.5", "rfdc": "^1.3.0", - "streamroller": "^3.0.6" + "streamroller": "^3.1.1" }, "engines": { "node": ">=8.0" @@ -7844,19 +7960,19 @@ "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/memfs": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", - "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", + "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", "dev": true, "dependencies": { - "fs-monkey": "1.0.3" + "fs-monkey": "^1.0.3" }, "engines": { "node": ">= 4.0.0" @@ -7865,7 +7981,7 @@ "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "dev": true }, "node_modules/merge-stream": { @@ -7886,7 +8002,7 @@ "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, "engines": { "node": ">= 0.6" @@ -7992,9 +8108,9 @@ "dev": true }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -8010,9 +8126,9 @@ "dev": true }, "node_modules/minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", "dev": true, "dependencies": { "yallist": "^4.0.0" @@ -8130,7 +8246,7 @@ "node_modules/msgpack-lite": { "version": "0.1.26", "resolved": "https://registry.npmjs.org/msgpack-lite/-/msgpack-lite-0.1.26.tgz", - "integrity": "sha1-3TxQsm8FnyXn7e42REGDWOKprYk=", + "integrity": "sha512-SZ2IxeqZ1oRFGo0xFGbvBJWMp3yLIY9rlIJyxy8CGrwZn1f0ZK4r6jV/AM1r0FZMDUkWkglOk/eeKIL9g77Nxw==", "dependencies": { "event-lite": "^0.1.1", "ieee754": "^1.1.8", @@ -8157,7 +8273,7 @@ "node_modules/multicast-dns-service-types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", "dev": true }, "node_modules/mute-stream": { @@ -8167,9 +8283,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", - "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -8277,9 +8393,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", "dev": true, "optional": true, "bin": { @@ -8304,9 +8420,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", "dev": true }, "node_modules/nopt": { @@ -8336,7 +8452,7 @@ "node_modules/normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -8443,6 +8559,19 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-registry-fetch/node_modules/@npmcli/move-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", + "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/npm-registry-fetch/node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -8452,17 +8581,26 @@ "node": ">= 10" } }, + "node_modules/npm-registry-fetch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/npm-registry-fetch/node_modules/cacache": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.3.tgz", - "integrity": "sha512-eC7wYodNCVb97kuHGk5P+xZsvUJHkhSEOyNwkenqQPAsOtrTjvWOE5vSPNBpz9d8X3acIf6w2Ub5s4rvOCTs4g==", + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", + "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", "dev": true, "dependencies": { "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^1.1.2", + "@npmcli/move-file": "^2.0.0", "chownr": "^2.0.0", "fs-minipass": "^2.1.0", - "glob": "^7.2.0", + "glob": "^8.0.1", "infer-owner": "^1.0.4", "lru-cache": "^7.7.1", "minipass": "^3.1.6", @@ -8473,7 +8611,7 @@ "p-map": "^4.0.0", "promise-inflight": "^1.0.1", "rimraf": "^3.0.2", - "ssri": "^8.0.1", + "ssri": "^9.0.0", "tar": "^6.1.11", "unique-filename": "^1.1.1" }, @@ -8481,6 +8619,25 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-registry-fetch/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/npm-registry-fetch/node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -8496,22 +8653,22 @@ } }, "node_modules/npm-registry-fetch/node_modules/lru-cache": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", - "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz", + "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==", "dev": true, "engines": { "node": ">=12" } }, "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.1.tgz", - "integrity": "sha512-3/mCljDQNjmrP7kl0vhS5WVlV+TvSKoZaFhdiYV7MOijEnrhrjaVnqbp/EY/7S+fhUB2KpH7j8c1iRsIOs+kjw==", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", + "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", "dev": true, "dependencies": { "agentkeepalive": "^4.2.1", - "cacache": "^16.0.2", + "cacache": "^16.1.0", "http-cache-semantics": "^4.1.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", @@ -8524,8 +8681,8 @@ "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.1.1", - "ssri": "^8.0.1" + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" @@ -8548,6 +8705,44 @@ "encoding": "^0.1.13" } }, + "node_modules/npm-registry-fetch/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-registry-fetch/node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm-registry-fetch/node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -8561,24 +8756,24 @@ } }, "node_modules/npmlog": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", - "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, "dependencies": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", + "gauge": "^4.0.3", "set-blocking": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "dependencies": { "boolbase": "^1.0.0" @@ -8590,16 +8785,16 @@ "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8678,7 +8873,7 @@ "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { "wrappy": "1" @@ -8812,7 +9007,7 @@ "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, "engines": { "node": ">=0.10.0" @@ -8861,12 +9056,12 @@ } }, "node_modules/p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, "dependencies": { - "@types/retry": "^0.12.0", + "@types/retry": "0.12.0", "retry": "^0.13.1" }, "engines": { @@ -9023,7 +9218,7 @@ "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -9047,7 +9242,7 @@ "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, "node_modules/path-type": { @@ -9080,7 +9275,7 @@ "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "engines": { "node": ">=0.10.0" @@ -9166,21 +9361,28 @@ } }, "node_modules/postcss-attribute-case-insensitive": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.0.tgz", - "integrity": "sha512-b4g9eagFGq9T5SWX4+USfVyjIb3liPnjhHHRMP7FMB2kFVpYyfEscV0wP3eaXhKlcHKUut8lt5BGoeylWA/dBQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.1.tgz", + "integrity": "sha512-wrt2VndqSLJpyBRNz9OmJcgnhI9MaongeWgapdBuUMu2a/KNJ8SENesG4SdiTnQwGO9b1VKbTWYAfCPeokLqZQ==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.2" + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.0.2" + "postcss": "^8.3" } }, "node_modules/postcss-color-functional-notation": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.2.tgz", - "integrity": "sha512-DXVtwUhIk4f49KK5EGuEdgx4Gnyj6+t2jBSEmxvpIK9QI40tWrpS2Pua8Q7iIZWBrki2QOaeUdEaLPPa91K0RQ==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.3.tgz", + "integrity": "sha512-5fbr6FzFzjwHXKsVnkmEYrJYG8VNNzvD1tAXaPPWR97S6rhKI5uh2yOfV5TAzhDkZoq4h+chxEplFDc8GeyFtw==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9188,14 +9390,18 @@ "engines": { "node": "^12 || ^14 || >=16" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/postcss-color-hex-alpha": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.3.tgz", - "integrity": "sha512-fESawWJCrBV035DcbKRPAVmy21LpoyiXdPTuHUfWJ14ZRjY7Y7PA6P4g8z6LQGYhU1WAxkTxjIjurXzoe68Glw==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9203,14 +9409,18 @@ "engines": { "node": "^12 || ^14 || >=16" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/postcss-color-rebeccapurple": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.0.2.tgz", - "integrity": "sha512-SFc3MaocHaQ6k3oZaFwH8io6MdypkUtEy/eXzXEB1vEQlO3S3oDc/FSZA8AsS04Z25RirQhlDlHLh3dn7XewWw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.0.tgz", + "integrity": "sha512-1jtE5AKnZcKq4pjOrltFHcbEM2/IvtbD1OdhZ/wqds18//bh0UmQkffcCkzDJU+/vGodfIsVQeKn+45CJvX9Bw==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9218,26 +9428,37 @@ "engines": { "node": "^12 || ^14 || >=16" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, "peerDependencies": { "postcss": "^8.3" } }, "node_modules/postcss-custom-media": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz", - "integrity": "sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=10.0.0" + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.1.0" + "postcss": "^8.3" } }, "node_modules/postcss-custom-properties": { - "version": "12.1.5", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.5.tgz", - "integrity": "sha512-FHbbB/hRo/7cxLGkc2NS7cDRIDN1oFqQnUKBiyh4b/gwk8DD8udvmRDpUhEK836kB8ggUCieHVOvZDnF9XhI3g==", + "version": "12.1.8", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.8.tgz", + "integrity": "sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9245,23 +9466,31 @@ "engines": { "node": "^12 || ^14 || >=16" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/postcss-custom-selectors": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.0.tgz", - "integrity": "sha512-/1iyBhz/W8jUepjGyu7V1OPcGbc636snN1yXEQCinb6Bwt7KxsiU7/bLQlp8GwAXzCh7cobBU5odNn/2zQWR8Q==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.4" }, "engines": { - "node": ">=10.0.0" + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.1.2" + "postcss": "^8.3" } }, "node_modules/postcss-dir-pseudo-class": { @@ -9528,11 +9757,12 @@ } }, "node_modules/postcss-nesting": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.4.tgz", - "integrity": "sha512-2ixdQ59ik/Gt1+oPHiI1kHdwEI8lLKEmui9B1nl6163ANLC+GewQn7fXMxJF2JSb4i2MKL96GU8fIiQztK4TTA==", + "version": "10.1.10", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.10.tgz", + "integrity": "sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w==", "dev": true, "dependencies": { + "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" }, "engines": { @@ -9543,7 +9773,7 @@ "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.4" + "postcss": "^8.2" } }, "node_modules/postcss-overflow-shorthand": { @@ -9630,9 +9860,9 @@ } }, "node_modules/postcss-pseudo-class-any-link": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.2.tgz", - "integrity": "sha512-76XzEQv3g+Vgnz3tmqh3pqQyRojkcJ+pjaePsyhcyf164p9aZsu3t+NWxkZYbcHLK1ju5Qmalti2jPI5IWCe5w==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.5.tgz", + "integrity": "sha512-nSGKGScwFTaaV8Cyi27W9FegX3l3b7tmNxujxmykI/j3++cBAiq8fTUAU3ZK0s2aneN2T8cTUvKdNedzp3JIEA==", "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.10" @@ -9645,7 +9875,7 @@ "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.4" + "postcss": "^8.2" } }, "node_modules/postcss-replace-overflow-wrap": { @@ -9703,12 +9933,12 @@ "node_modules/process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==" }, "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, "node_modules/promise-retry": { @@ -9749,7 +9979,7 @@ "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, "optional": true }, @@ -9842,7 +10072,7 @@ "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, "dependencies": { "pify": "^2.3.0" @@ -9864,7 +10094,7 @@ "node_modules/readable-stream": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -9917,9 +10147,9 @@ "dev": true }, "node_modules/regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" @@ -9932,13 +10162,14 @@ "dev": true }, "node_modules/regexp.prototype.flags": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", - "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" }, "engines": { "node": ">= 0.4" @@ -9948,9 +10179,9 @@ } }, "node_modules/regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", + "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", "dev": true, "dependencies": { "regenerate": "^1.4.2", @@ -9985,7 +10216,7 @@ "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -9994,7 +10225,7 @@ "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -10012,7 +10243,7 @@ "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "node_modules/resolve": { @@ -10096,7 +10327,7 @@ "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, "engines": { "node": ">= 4" @@ -10294,7 +10525,7 @@ "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true }, "node_modules/selfsigned": { @@ -10325,24 +10556,24 @@ } }, "node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" @@ -10360,40 +10591,9 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/send/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/send/node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/send/node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -10412,14 +10612,11 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/send/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, "engines": { "node": ">= 0.8" } @@ -10436,7 +10633,7 @@ "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "dependencies": { "accepts": "~1.3.4", @@ -10463,7 +10660,7 @@ "node_modules/serve-index/node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, "engines": { "node": ">= 0.6" @@ -10472,7 +10669,7 @@ "node_modules/serve-index/node_modules/http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "dependencies": { "depd": "~1.1.2", @@ -10487,13 +10684,13 @@ "node_modules/serve-index/node_modules/inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/serve-index/node_modules/setprototypeof": { @@ -10503,15 +10700,15 @@ "dev": true }, "node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.2" + "send": "0.18.0" }, "engines": { "node": ">= 0.8.0" @@ -10520,7 +10717,7 @@ "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "node_modules/setprototypeof": { @@ -10605,16 +10802,16 @@ } }, "node_modules/socket.io": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", - "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz", + "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==", "dev": true, "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.1.0", - "socket.io-adapter": "~2.3.3", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", "socket.io-parser": "~4.0.4" }, "engines": { @@ -10622,15 +10819,15 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", - "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", "dev": true }, "node_modules/socket.io-parser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", - "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", + "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", "dev": true, "dependencies": { "@types/component-emitter": "^1.2.10", @@ -10667,14 +10864,14 @@ } }, "node_modules/socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", "dev": true, "dependencies": { "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "debug": "^4.3.3", + "socks": "^2.6.2" }, "engines": { "node": ">= 10" @@ -10841,7 +11038,7 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "node_modules/ssri": { @@ -10859,21 +11056,21 @@ "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/streamroller": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.6.tgz", - "integrity": "sha512-Qz32plKq/MZywYyhEatxyYc8vs994Gz0Hu2MSYXXLD233UyPeIeRBZARIIGwFer4Mdb8r3Y2UqKkgyDghM6QCg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.1.tgz", + "integrity": "sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ==", "dev": true, "dependencies": { - "date-format": "^4.0.6", + "date-format": "^4.0.10", "debug": "^4.3.4", - "fs-extra": "^10.0.1" + "fs-extra": "^10.1.0" }, "engines": { "node": ">=8.0" @@ -10899,7 +11096,7 @@ "node_modules/string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" }, "node_modules/string-width": { "version": "4.2.3", @@ -11056,15 +11253,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.7", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", "terser": "^5.7.2" }, "engines": { @@ -11138,15 +11335,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -11164,13 +11352,13 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "node_modules/thunky": { @@ -11194,7 +11382,7 @@ "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, "engines": { "node": ">=4" @@ -11231,9 +11419,9 @@ } }, "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/type-fest": { "version": "0.21.3", @@ -11368,12 +11556,38 @@ "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, "engines": { "node": ">= 0.8" } }, + "node_modules/update-browserslist-db": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", + "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -11386,12 +11600,12 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, "engines": { "node": ">= 0.4.0" @@ -11409,7 +11623,7 @@ "node_modules/validate-npm-package-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", "dev": true, "dependencies": { "builtins": "^1.0.3" @@ -11418,7 +11632,7 @@ "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, "engines": { "node": ">= 0.8" @@ -11432,16 +11646,16 @@ "node_modules/void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -11463,7 +11677,7 @@ "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "dependencies": { "defaults": "^1.0.3" @@ -11850,7 +12064,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "node_modules/ws": { @@ -11899,9 +12113,9 @@ } }, "node_modules/yargs": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz", - "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", "dev": true, "dependencies": { "cliui": "^7.0.2", @@ -11926,9 +12140,9 @@ } }, "node_modules/zone.js": { - "version": "0.11.5", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.5.tgz", - "integrity": "sha512-D1/7VxEuQ7xk6z/kAROe4SUbd9CzxY4zOwVGnGHerd/SgLIVU5f4esDzQUsOCeArn933BZfWMKydH7l7dPEp0g==", + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.6.tgz", + "integrity": "sha512-umJqFtKyZlPli669gB1gOrRE9hxUUGkZr7mo878z+NEBJZZixJkKeVYfnoLa7g25SseUDc92OZrMKKHySyJrFg==", "dependencies": { "tslib": "^2.3.0" } @@ -11936,22 +12150,22 @@ }, "dependencies": { "@ampproject/remapping": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-1.1.1.tgz", - "integrity": "sha512-YVAcA4DKLOj296CF5SrQ8cYiMRiUGc2sqFpLxsDGWE34suHqhGP/5yMsDHKsrh8hs8I5TiRVXNwKPWQpX3iGjw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "sourcemap-codec": "1.4.8" + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, "@angular-devkit/architect": { - "version": "0.1303.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.1.tgz", - "integrity": "sha512-ppaLzNZPrqrI96ddgm1RuEALVpWZsmHbIPLDd0GBwhF6aOkwF0LpZHd5XyS4ktGFZPReiFIjWSVtqV5vaBdRsw==", + "version": "0.1303.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.8.tgz", + "integrity": "sha512-2zaNejnfZbq+fFOVgkmWkh+2UmK/CBDbWTq7VJHopJLtUuf7pFNvRk73s9xayuJ3Lt2/sY17Mykku2LziBF89A==", "dev": true, "requires": { - "@angular-devkit/core": "13.3.1", + "@angular-devkit/core": "13.3.8", "rxjs": "6.6.7" }, "dependencies": { @@ -11973,15 +12187,15 @@ } }, "@angular-devkit/build-angular": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.1.tgz", - "integrity": "sha512-xxBW4zZZM+lewW0nEpk9SXw6BMYhxe8WI/FjyEroOV8G2IuOrjZ4112QOpk6jCgmPHSOEldbltEdwoVLAnu09Q==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.8.tgz", + "integrity": "sha512-5nWqb58oLcWoBoAECqHiUlOV23/J/4W1a9aqaFQcN6bThRzoy54S69zUuQREnBE36elDrSxhn2Y34poqYe8iKQ==", "dev": true, "requires": { - "@ampproject/remapping": "1.1.1", - "@angular-devkit/architect": "0.1303.1", - "@angular-devkit/build-webpack": "0.1303.1", - "@angular-devkit/core": "13.3.1", + "@ampproject/remapping": "2.2.0", + "@angular-devkit/architect": "0.1303.8", + "@angular-devkit/build-webpack": "0.1303.8", + "@angular-devkit/core": "13.3.8", "@babel/core": "7.16.12", "@babel/generator": "7.16.8", "@babel/helper-annotate-as-pure": "7.16.7", @@ -11992,9 +12206,9 @@ "@babel/runtime": "7.16.7", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.6", - "@ngtools/webpack": "13.3.1", + "@ngtools/webpack": "13.3.8", "ansi-colors": "4.1.1", - "babel-loader": "8.2.3", + "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", "browserslist": "^4.9.1", "cacache": "15.3.0", @@ -12015,7 +12229,7 @@ "license-webpack-plugin": "4.0.2", "loader-utils": "3.2.0", "mini-css-extract-plugin": "2.5.3", - "minimatch": "3.0.4", + "minimatch": "3.0.5", "open": "8.4.0", "ora": "5.4.1", "parse5-html-rewriting-stream": "6.0.1", @@ -12061,16 +12275,22 @@ "dev": true } } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true } } }, "@angular-devkit/build-webpack": { - "version": "0.1303.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.1.tgz", - "integrity": "sha512-KSnR3y2q5hxh7t7ZSi0Emv/Kh9+D105JaEeyEqjqRjLdZSd2m6eAxbSUMNOAsbqnJTMCfzU5AG7jhbujuge0dQ==", + "version": "0.1303.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.8.tgz", + "integrity": "sha512-N3DehEQ4uARricbYTuASBCnHdrtKFIMZpl6A4GB5DKQILF7KctsaAz0QvAiA8y4ojhSIRvXK5XVWklX3QVlJIw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1303.1", + "@angular-devkit/architect": "0.1303.8", "rxjs": "6.6.7" }, "dependencies": { @@ -12092,9 +12312,9 @@ } }, "@angular-devkit/core": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.1.tgz", - "integrity": "sha512-eXAcQaP1mn6rnQb+5bv5NsamY6b34UYM7G+S154Hnma6CTTSGBtcmoNAJs8cekuFqWlw7YgpB/e15jR5OLPkDA==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.8.tgz", + "integrity": "sha512-PCmfMkErpnH429l1cANak4PnCpAscqAubS6Dw83++cS34ht0/bgKRb2zSyBuB2Ka6kw7wAZ3fCyTcVvyfxVFEg==", "dev": true, "requires": { "ajv": "8.9.0", @@ -12123,12 +12343,12 @@ } }, "@angular-devkit/schematics": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.1.tgz", - "integrity": "sha512-DxXMjlq/sALcHuONZRMTBX5k30XPfN4b6Ue4k7Xl8JKZqyHhEzfXaZzgD9u2cwb7wybKEeF/BZ5eJd8JG525og==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.8.tgz", + "integrity": "sha512-7mTlxZhS9uHxtmOiZeSMkKdIE5r5FmQ/1IBhRBfD5XDQdipQkUJyOtclPO/+t/AJIG0+LYt9+7X5hHUr7W3kZA==", "dev": true, "requires": { - "@angular-devkit/core": "13.3.1", + "@angular-devkit/core": "13.3.8", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -12153,23 +12373,23 @@ } }, "@angular/animations": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.1.tgz", - "integrity": "sha512-O6DVOk++Bz8Bcz2AAnd1wz1OFzsy3XjmA4o1Mx+DNLRwrLvWHuq33rTVs0Pur7psiKz1lym9kMrY9YwE3s0SJA==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.11.tgz", + "integrity": "sha512-KE/3RuvixHIk9YTSwaUsezsUm9Ig9Y8rZMpHOT/8bRtzPiJ5ld2GnDHjrJgyZn7TdoP4wz4YCta5eC4ycu+KCw==", "requires": { "tslib": "^2.3.0" } }, "@angular/cli": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.1.tgz", - "integrity": "sha512-0uwU8v3V/2s95X4cZT582J6upReT/ZNw/VAf4p4q51JN+BBvdCEb251xTF+TcOojyToFyJYvg8T28XSrsNsmTQ==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.8.tgz", + "integrity": "sha512-dsvum8oGnbgX5mLh9CDzP1ip2UGDZdppPD6np2XXhqX75DfJxRlgl4u3NxBSnDmeyhIGTsGV0HKAxoB5EOoHcw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1303.1", - "@angular-devkit/core": "13.3.1", - "@angular-devkit/schematics": "13.3.1", - "@schematics/angular": "13.3.1", + "@angular-devkit/architect": "0.1303.8", + "@angular-devkit/core": "13.3.8", + "@angular-devkit/schematics": "13.3.8", + "@schematics/angular": "13.3.8", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.3", @@ -12188,25 +12408,25 @@ } }, "@angular/common": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.1.tgz", - "integrity": "sha512-Var5ChoX8kZl9cbIWbW7Reb3Xz3t1c1XHwq1k+oK2fgrPdEfypY9n/6DxyXOtSEGb9aV7ZCaxcv2c5JUKR3OPg==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.11.tgz", + "integrity": "sha512-gPMwDYIAag1izXm2tRQ6EOIx9FVEUqLdr+qYtRVoQtoBmfkoTSLGcpeBXqqlPVxVPbA6Li1WZZT5wxLLlLAN+Q==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.1.tgz", - "integrity": "sha512-ppJURRRDPZB6UaZctH6yBsznZXB7wZdCpfy5yo4lFE4k8rygfV80TmnrbJBZXNNq057VK48Bap1tsehFwckjog==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.11.tgz", + "integrity": "sha512-EV6JCBbXdHDHbPShWmymvuoxFYG0KVc8sDJpYp47WLHCY2zgZaXhvWs//Hrls3fmi+TGTekgRa2jOBBNce/Ggg==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler-cli": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.1.tgz", - "integrity": "sha512-dImxLUITNwODlXaLcEACw10bxTiajWEQz3sLwhT/936UH+MNtM/RyLJ0M7xDvILDqq77W3psK5/M6F3M1mUpew==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.11.tgz", + "integrity": "sha512-cl+3Wzxt8NRi2WY+RdsxuQ3yQRUp8pSlfSlJJnfaKE1BEqap6uem2DovuhnIbmrLhxZ5xt7o+I1szyO6sn6+ag==", "dev": true, "requires": { "@babel/core": "^7.17.2", @@ -12221,35 +12441,26 @@ "yargs": "^17.2.1" }, "dependencies": { - "@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.0" - } - }, "@babel/core": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.8.tgz", - "integrity": "sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", + "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.7", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.8", - "@babel/parser": "^7.17.8", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.6", + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helpers": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", + "json5": "^2.2.1", "semver": "^6.3.0" }, "dependencies": { @@ -12262,69 +12473,85 @@ } }, "@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "version": "7.18.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", + "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", "dev": true, "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.18.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + } + }, + "@babel/template": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" } }, "magic-string": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", - "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", "dev": true, "requires": { "sourcemap-codec": "^1.4.8" } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, "@angular/core": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.1.tgz", - "integrity": "sha512-ZU/B9jEiZ0jadRkRL9Sb2btzqgQ0ylx380PfRQaojVIsij/EO6+jOSHIo5upMIGu/OvkggfweShJGlylCOrOXA==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.11.tgz", + "integrity": "sha512-9BmE2CxyV0g+AkBeuc8IwjSOiJ8Y+kptXnqD/J8EAFT3B0/fLGVnjFdZC6Sev9L0SNZb6qdzebpfIOLqbUjReQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/forms": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.1.tgz", - "integrity": "sha512-S6a/CEq1ht0vw2epuESiO551dsyLQTb/HuwceIBlsX2JqRRccynYlyx92gsDAo4hD2F0q+EeqZEPuq3oQIK43A==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.11.tgz", + "integrity": "sha512-iMgTNB+Qc3TsfAZSk1FnUE6MVoddPzxhG9AKCfSlvpjFh8VmXkIjxPL3dun7J8OjayT3X+B8f7LZ9AkKNXtBKw==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.1.tgz", - "integrity": "sha512-WtyrkK0pLYj6w7pz3xk8zlhWL1NwGCWT+k7YxEjBOONCIXlZvCqWVzWo4nNQn9Xqxd+z1FVI0dssDwZm2TD+Eg==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.11.tgz", + "integrity": "sha512-PG3chCErARb6wNzkOed2NsZmgvTmbumRx/6sMXqGkDKXYQm0JULnl4X42Rn+JCgJ9DLJi5/jrd1dbcBCrKk9Vg==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser-dynamic": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.1.tgz", - "integrity": "sha512-TKV63SSyjrv5EsD03PloCbo8ZrJq5owkJ38E2FO/VvJAV3xu3Ey0SnoikNZMd8o3rh7+ocuT5K9Xcr4YuKVgEA==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.11.tgz", + "integrity": "sha512-xM0VRC1Nw//SHO3gkghUHyjCaaQbk1UYMq4vIu3iKVq9KLqOSZgccv0NcOKHzXXN3S5RgX2auuyOUOCD6ny1Pg==", "requires": { "tslib": "^2.3.0" } }, "@angular/router": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.1.tgz", - "integrity": "sha512-YpZLjI4UI9KK6x8yn41XMrBWZgVb5JyJR7KNhQXB7WiX8bVH5SZzFRkjR3qUxTGaxe6I7KFvzySwm4JTYNj+xw==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.11.tgz", + "integrity": "sha512-bJTcxDYKEyoqtsi1kJcDJWLmEN+dXpwhU07SsqUwfyN4V5fYF1ApDhpJ4c17hNdjEqe106srT9tiHXhmWayhmQ==", "requires": { "tslib": "^2.3.0" } @@ -12336,18 +12563,18 @@ "dev": true }, "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, "requires": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" } }, "@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz", + "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==", "dev": true }, "@babel/core": { @@ -12382,7 +12609,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true } } @@ -12401,7 +12628,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true } } @@ -12416,24 +12643,24 @@ } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz", + "integrity": "sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.6" } }, "@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", + "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "dependencies": { @@ -12446,28 +12673,50 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", - "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", + "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + } } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", - "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", + "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + } } }, "@babel/helper-define-polyfill-provider": { @@ -12495,222 +12744,273 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", + "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", + "dev": true }, "@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", + "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.6" + }, + "dependencies": { + "@babel/template": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" + } + } } }, "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", + "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", "dev": true, "requires": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", + "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" + }, + "dependencies": { + "@babel/template": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" + } + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", + "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz", + "integrity": "sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-wrap-function": "^7.18.6", + "@babel/types": "^7.18.6" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + } } }, "@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", + "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" } }, "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", "dev": true, "requires": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.6" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz", + "integrity": "sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.18.6" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz", + "integrity": "sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-function-name": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" + }, + "dependencies": { + "@babel/template": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" + } + } } }, "@babel/helpers": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz", - "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", + "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", "dev": true, "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" + }, + "dependencies": { + "@babel/template": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" + } + } } }, "@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", - "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", + "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz", + "integrity": "sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.6" } }, "@babel/plugin-proposal-async-generator-functions": { @@ -12725,150 +13025,161 @@ } }, "@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", - "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.17.6", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz", + "integrity": "sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz", + "integrity": "sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", - "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz", + "integrity": "sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/compat-data": "^7.18.6", + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" + "@babel/plugin-transform-parameters": "^7.18.6" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz", + "integrity": "sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + } } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-syntax-async-generators": { @@ -12998,12 +13309,12 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-async-to-generator": { @@ -13018,232 +13329,245 @@ } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz", + "integrity": "sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz", + "integrity": "sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + } } }, "@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz", + "integrity": "sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-destructuring": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", - "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz", + "integrity": "sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz", + "integrity": "sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz", + "integrity": "sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz", + "integrity": "sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz", + "integrity": "sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", + "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz", - "integrity": "sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", + "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", - "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz", + "integrity": "sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", + "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" } }, "@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz", + "integrity": "sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-regenerator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", - "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", "dev": true, "requires": { - "regenerator-transform": "^0.14.2" + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-runtime": { @@ -13269,68 +13593,68 @@ } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz", + "integrity": "sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz", + "integrity": "sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz", + "integrity": "sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", + "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/preset-env": { @@ -13457,49 +13781,54 @@ } }, "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", + "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6", "debug": "^4.1.0", "globals": "^11.1.0" }, "dependencies": { "@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "version": "7.18.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", + "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", "dev": true, "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.18.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } } } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", + "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" } }, @@ -13518,6 +13847,13 @@ "postcss-value-parser": "^4.2.0" } }, + "@csstools/selector-specificity": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz", + "integrity": "sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA==", + "dev": true, + "requires": {} + }, "@discoveryjs/json-ext": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", @@ -13570,22 +13906,38 @@ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz", + "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true }, "@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", @@ -13593,9 +13945,9 @@ } }, "@ngtools/webpack": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.1.tgz", - "integrity": "sha512-40iEqAA/l882MPbGuG5EYxzsPWJ37fT4fF22SkPLX2eBgNhJ4K8XMt0gqcFhkHUsSe63frg1qjQ1Pd31msu0bQ==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.8.tgz", + "integrity": "sha512-meuXHb1zQ5lz7Uj7kGYTgjd9Tknsi/0jJxs+12nz06h0tifIyIoGU01YA3mUj4/bntIjfWif35KGYP+23bbAVw==", "dev": true, "requires": {} }, @@ -13710,22 +14062,16 @@ } }, "@schematics/angular": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.1.tgz", - "integrity": "sha512-+lrK/d1eJsAK6d6E9TDeg3Vc71bDy1KsE8M+lEINdX9Wax22mAz4pw20X9RSCw5RHgn+XcNUuMsgRJAwVhDNpg==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.8.tgz", + "integrity": "sha512-VKRTTNYX5OsaJ6sWlCIuU71qihV3ysNNJ49wqLedOlWm1v0GMwoyGMCTJk9OZab1rpo/tYfLTcUlYqP3l6GVDQ==", "dev": true, "requires": { - "@angular-devkit/core": "13.3.1", - "@angular-devkit/schematics": "13.3.1", + "@angular-devkit/core": "13.3.8", + "@angular-devkit/schematics": "13.3.8", "jsonc-parser": "3.0.0" } }, - "@socket.io/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", - "dev": true - }, "@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -13795,9 +14141,9 @@ "dev": true }, "@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", + "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", "dev": true, "requires": { "@types/estree": "*", @@ -13805,9 +14151,9 @@ } }, "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "requires": { "@types/eslint": "*", @@ -13833,9 +14179,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "version": "4.17.29", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", + "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", "dev": true, "requires": { "@types/node": "*", @@ -13856,18 +14202,18 @@ "dev": true }, "@types/http-proxy": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", - "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", "dev": true, "requires": { "@types/node": "*" } }, "@types/jasmine": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.5.tgz", - "integrity": "sha512-RYxEJkk/RK1S6W0nMOx9Mxm5v2bKwAVjzTHiBcHkQskwKDqHKHjSU46jx/q9IffyuctNl8ebaAjb5/461faKqQ==", + "version": "3.10.6", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.6.tgz", + "integrity": "sha512-twY9adK/vz72oWxCWxzXaxoDtF9TpfEEsxvbc1ibjF3gMD/RThSuSud/GKUTR3aJnfbivAbC/vLqhY+gdWCHfA==", "dev": true }, "@types/jasminewd2": { @@ -13916,15 +14262,15 @@ } }, "@types/node": { - "version": "12.20.47", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.47.tgz", - "integrity": "sha512-BzcaRsnFuznzOItW1WpQrDHM7plAa7GIDMZ6b5pnMbkqEtM/6WCOhvZar39oeMQP79gwvFUWjjptE7/KGcNqFg==", + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", "dev": true }, "@types/pako": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.3.tgz", - "integrity": "sha512-EDxOsHAD5dqjbjEUM1xwa7rpKPFb8ECBE5irONTQU7/OsO3thI5YrNEWSPNMvYmvFM0l/OLQJ6Mgw7PEdXSjhg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.4.tgz", + "integrity": "sha512-Z+5bJSm28EXBSUJEgx29ioWeEEHUh6TiMkZHDhLwjc9wVFH+ressbkmX6waUZc5R3Gobn4Qu5llGxaoflZ+yhA==", "dev": true }, "@types/parse-json": { @@ -13946,9 +14292,9 @@ "dev": true }, "@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, "@types/serve-index": { @@ -14159,9 +14505,9 @@ "dev": true }, "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "dev": true }, "abbrev": { @@ -14181,9 +14527,9 @@ } }, "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true }, "acorn-import-assertions": { @@ -14239,7 +14585,7 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true } } @@ -14392,9 +14738,9 @@ "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" @@ -14407,13 +14753,13 @@ "dev": true }, "autoprefixer": { - "version": "10.4.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", - "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", "dev": true, "requires": { - "browserslist": "^4.20.2", - "caniuse-lite": "^1.0.30001317", + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -14421,35 +14767,26 @@ } }, "babel-loader": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", - "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", "dev": true, "requires": { "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", + "loader-utils": "^2.0.0", "make-dir": "^3.1.0", "schema-utils": "^2.6.5" }, "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dev": true, "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "json5": "^2.1.2" } } } @@ -14535,13 +14872,13 @@ "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, "bcdice": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.5.1.tgz", - "integrity": "sha512-HJ8kndQmCezJHB2Lgqqg0h7q/KTk/IxizCSmu6sRvikwadtCvVFKIJTNIOfLk/kBr8i4aF1f3M2iVogTjKqTRA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/bcdice/-/bcdice-3.6.0.tgz", + "integrity": "sha512-4vfkRk5QcbEzqw/4pTh2fDC81uY6achvaGs8lky1C00JTyvPovvBCKhONtj+E/1grZrdEGS9kCyPQH41v4hOWg==", "requires": { "lodash": "^4.17.20", "source-map-support": "^0.5.19" @@ -14630,7 +14967,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -14638,7 +14975,7 @@ "bonjour": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", "dev": true, "requires": { "array-flatten": "^2.1.0", @@ -14652,7 +14989,7 @@ "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "brace-expansion": { @@ -14675,16 +15012,15 @@ } }, "browserslist": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", - "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz", + "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001317", - "electron-to-chromium": "^1.4.84", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001359", + "electron-to-chromium": "^1.4.172", + "node-releases": "^2.0.5", + "update-browserslist-db": "^1.0.4" } }, "buffer": { @@ -14711,7 +15047,7 @@ "builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", "dev": true }, "bytes": { @@ -14769,9 +15105,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001325", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001325.tgz", - "integrity": "sha512-sB1bZHjseSjDtijV1Hb7PB2Zd58Kyx+n/9EotvZ4Qcz2K3d0lWB8dB4nb8wN/TsOGFq3UuAm0zQZNQ4SoR7TrQ==", + "version": "1.0.30001363", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz", + "integrity": "sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg==", "dev": true }, "chalk": { @@ -14867,7 +15203,7 @@ "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true }, "clone-deep": { @@ -14893,7 +15229,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "color-support": { @@ -14903,9 +15239,9 @@ "dev": true }, "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, "commander": { @@ -14917,7 +15253,7 @@ "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "component-emitter": { @@ -14953,7 +15289,7 @@ "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true }, "debug": { @@ -14968,7 +15304,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -14976,7 +15312,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "connect": { @@ -15003,7 +15339,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -15017,7 +15353,7 @@ "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true }, "content-disposition": { @@ -15061,7 +15397,7 @@ "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, "copy-anything": { @@ -15117,12 +15453,12 @@ "dev": true }, "core-js-compat": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", - "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", + "version": "3.23.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.3.tgz", + "integrity": "sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw==", "dev": true, "requires": { - "browserslist": "^4.19.1", + "browserslist": "^4.21.0", "semver": "7.0.0" }, "dependencies": { @@ -15348,13 +15684,13 @@ "custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", "dev": true }, "date-format": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.6.tgz", - "integrity": "sha512-B9vvg5rHuQ8cbUXE/RMWMyX2YA5TecT3jKF5fLtGNlzPlU7zblSPmAm2OImDbWL+LDOQ6pUm+4LOFz+ywS41Zw==", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.11.tgz", + "integrity": "sha512-VS20KRyorrbMCQmpdl2hg5KaOUsda1RbnsJg461FfrcyCUg+pkd0b40BSW4niQyTheww4DBXQnS7HwSrKkipLw==", "dev": true }, "debug": { @@ -15369,7 +15705,7 @@ "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", "dev": true }, "deep-equal": { @@ -15398,7 +15734,7 @@ "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", "dev": true, "requires": { "clone": "^1.0.2" @@ -15411,18 +15747,19 @@ "dev": true }, "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, "requires": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", "dev": true, "requires": { "globby": "^11.0.1", @@ -15466,7 +15803,7 @@ "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true }, "depd": { @@ -15496,7 +15833,7 @@ "di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", "dev": true }, "dir-glob": { @@ -15511,7 +15848,7 @@ "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", "dev": true }, "dns-packet": { @@ -15527,7 +15864,7 @@ "dns-txt": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", "dev": true, "requires": { "buffer-indexof": "^1.0.0" @@ -15536,7 +15873,7 @@ "dom-serialize": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", "dev": true, "requires": { "custom-event": "~1.0.0", @@ -15546,9 +15883,9 @@ } }, "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, "requires": { "domelementtype": "^2.0.1", @@ -15557,9 +15894,9 @@ } }, "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true }, "domhandler": { @@ -15585,13 +15922,13 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, "electron-to-chromium": { - "version": "1.4.103", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.103.tgz", - "integrity": "sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==", + "version": "1.4.177", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.177.tgz", + "integrity": "sha512-FYPir3NSBEGexSZUEeht81oVhHfLFl6mhUKSkjHN/iB/TwEIt/WHQrqVGfTLN5gQxwJCQkIJBe05eOXjI7omgg==", "dev": true }, "emoji-regex": { @@ -15609,7 +15946,7 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true }, "encoding": { @@ -15635,9 +15972,9 @@ } }, "engine.io": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz", - "integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", "dev": true, "requires": { "@types/cookie": "^0.4.1", @@ -15653,18 +15990,15 @@ } }, "engine.io-parser": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", - "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", - "dev": true, - "requires": { - "@socket.io/base64-arraybuffer": "~1.0.2" - } + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "dev": true }, "enhanced-resolve": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", - "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -15674,7 +16008,7 @@ "ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", "dev": true }, "entities": { @@ -15723,7 +16057,7 @@ "es6-promise": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", - "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=" + "integrity": "sha512-CUD62/uqeE0L+EJeypOKuFfM56CFaH4vo+++J76bff0NkeQ2bBmWVCTNxL2hj9HeCYPkof6Gqea0BSeK17gBzA==" }, "esbuild": { "version": "0.14.22", @@ -15901,13 +16235,13 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "eslint-scope": { @@ -15958,7 +16292,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, "event-lite": { @@ -16002,38 +16336,39 @@ } }, "express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.2", + "body-parser": "1.20.0", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.2", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.7", + "qs": "6.10.3", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", + "send": "0.18.0", + "serve-static": "1.15.0", "setprototypeof": "1.2.0", - "statuses": "~1.5.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -16042,26 +16377,14 @@ "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, - "body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" - } + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true }, "debug": { "version": "2.6.9", @@ -16072,63 +16395,38 @@ "ms": "2.0.0" } }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" } }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true } } }, @@ -16242,13 +16540,13 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, "requires": { "ee-first": "1.1.1" @@ -16278,15 +16576,15 @@ } }, "flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", + "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", "dev": true }, "follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", "dev": true }, "forwarded": { @@ -16304,13 +16602,13 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -16336,7 +16634,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "fsevents": { @@ -16352,6 +16650,12 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, "gauge": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", @@ -16381,14 +16685,14 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" } }, "get-package-type": { @@ -16453,15 +16757,15 @@ } }, "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "hammerjs": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==" }, "handle-thing": { "version": "2.0.1", @@ -16481,9 +16785,18 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -16502,7 +16815,7 @@ "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, "hdr-histogram-js": { @@ -16542,7 +16855,7 @@ "hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -16572,7 +16885,7 @@ "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", "dev": true }, "http-errors": { @@ -16597,9 +16910,9 @@ } }, "http-parser-js": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", - "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, "http-proxy": { @@ -16625,9 +16938,9 @@ } }, "http-proxy-middleware": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz", - "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, "requires": { "@types/http-proxy": "^1.17.8", @@ -16656,7 +16969,7 @@ "humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, "requires": { "ms": "^2.0.0" @@ -16701,19 +17014,19 @@ "image-size": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, "optional": true }, "immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, "immutable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", - "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", "dev": true }, "import-fresh": { @@ -16737,7 +17050,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, "indent-string": { @@ -16755,7 +17068,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -16849,12 +17162,12 @@ "int64-buffer": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-0.1.10.tgz", - "integrity": "sha1-J3siiofZWtd30HwTgyAiQGpHNCM=" + "integrity": "sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==" }, "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "dev": true }, "ipaddr.js": { @@ -16876,7 +17189,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "is-binary-path": { @@ -16889,9 +17202,9 @@ } }, "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "requires": { "has": "^1.0.3" @@ -16915,7 +17228,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-fullwidth-code-point": { @@ -16942,7 +17255,7 @@ "is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "dev": true }, "is-number": { @@ -17018,7 +17331,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "isbinaryfile": { "version": "4.0.10", @@ -17029,13 +17342,13 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true }, "istanbul-lib-coverage": { @@ -17045,9 +17358,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", "dev": true, "requires": { "@babel/core": "^7.12.3", @@ -17219,7 +17532,7 @@ "jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true }, "jszip": { @@ -17237,7 +17550,7 @@ "core-js": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", - "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=" + "integrity": "sha512-N41UFUZNqoTSGUSyL7kiStAkH31Hxq197A4Gp9MxTZfAd52pXod7VM7kWiRP0J0YpQDeaE4SLsb+2OGgtgvUEw==" }, "pako": { "version": "1.0.11", @@ -17247,9 +17560,9 @@ } }, "karma": { - "version": "6.3.17", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.17.tgz", - "integrity": "sha512-2TfjHwrRExC8yHoWlPBULyaLwAFmXmxQrcuFImt/JsAsSZu1uOWTZ1ZsWjqQtWpHLiatJOHL5jFjXSJIgCd01g==", + "version": "6.3.20", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.20.tgz", + "integrity": "sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw==", "dev": true, "requires": { "@colors/colors": "1.5.0", @@ -17271,7 +17584,7 @@ "qjobs": "^1.2.0", "range-parser": "^1.2.1", "rimraf": "^3.0.2", - "socket.io": "^4.2.0", + "socket.io": "^4.4.1", "source-map": "^0.6.1", "tmp": "^0.2.1", "ua-parser-js": "^0.7.30", @@ -17493,7 +17806,7 @@ "lie": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", "requires": { "immediate": "~3.0.5" } @@ -17505,9 +17818,9 @@ "dev": true }, "loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true }, "loader-utils": { @@ -17533,7 +17846,7 @@ "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, "log-symbols": { @@ -17598,16 +17911,16 @@ } }, "log4js": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.4.tgz", - "integrity": "sha512-ncaWPsuw9Vl1CKA406hVnJLGQKy1OHx6buk8J4rE2lVW+NW5Y82G5/DIloO7NkqLOUtNPEANaWC1kZYVjXssPw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.5.2.tgz", + "integrity": "sha512-DXtpNtt+KDOMT7RHUDIur/WsSA3rntlUh9Zg4XCdV42wUuMmbFkl38+LZ92Z5QvQA7mD5kAVkLiBSEH/tvUB8A==", "dev": true, "requires": { - "date-format": "^4.0.6", + "date-format": "^4.0.10", "debug": "^4.3.4", "flatted": "^3.2.5", "rfdc": "^1.3.0", - "streamroller": "^3.0.6" + "streamroller": "^3.1.1" }, "dependencies": { "debug": { @@ -17688,22 +18001,22 @@ "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true }, "memfs": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", - "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", + "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", "dev": true, "requires": { - "fs-monkey": "1.0.3" + "fs-monkey": "^1.0.3" } }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "dev": true }, "merge-stream": { @@ -17721,7 +18034,7 @@ "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true }, "micromatch": { @@ -17791,9 +18104,9 @@ "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -17806,9 +18119,9 @@ "dev": true }, "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -17897,7 +18210,7 @@ "msgpack-lite": { "version": "0.1.26", "resolved": "https://registry.npmjs.org/msgpack-lite/-/msgpack-lite-0.1.26.tgz", - "integrity": "sha1-3TxQsm8FnyXn7e42REGDWOKprYk=", + "integrity": "sha512-SZ2IxeqZ1oRFGo0xFGbvBJWMp3yLIY9rlIJyxy8CGrwZn1f0ZK4r6jV/AM1r0FZMDUkWkglOk/eeKIL9g77Nxw==", "requires": { "event-lite": "^0.1.1", "ieee754": "^1.1.8", @@ -17918,7 +18231,7 @@ "multicast-dns-service-types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", "dev": true }, "mute-stream": { @@ -17928,9 +18241,9 @@ "dev": true }, "nanoid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", - "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true }, "needle": { @@ -18023,16 +18336,16 @@ } }, "node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", "dev": true, "optional": true }, "node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", "dev": true }, "nopt": { @@ -18053,7 +18366,7 @@ "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true }, "npm-bundled": { @@ -18139,23 +18452,42 @@ "semver": "^7.3.5" } }, + "@npmcli/move-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", + "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, "@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, "cacache": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.3.tgz", - "integrity": "sha512-eC7wYodNCVb97kuHGk5P+xZsvUJHkhSEOyNwkenqQPAsOtrTjvWOE5vSPNBpz9d8X3acIf6w2Ub5s4rvOCTs4g==", + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", + "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", "dev": true, "requires": { "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^1.1.2", + "@npmcli/move-file": "^2.0.0", "chownr": "^2.0.0", "fs-minipass": "^2.1.0", - "glob": "^7.2.0", + "glob": "^8.0.1", "infer-owner": "^1.0.4", "lru-cache": "^7.7.1", "minipass": "^3.1.6", @@ -18166,11 +18498,24 @@ "p-map": "^4.0.0", "promise-inflight": "^1.0.1", "rimraf": "^3.0.2", - "ssri": "^8.0.1", + "ssri": "^9.0.0", "tar": "^6.1.11", "unique-filename": "^1.1.1" } }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, "http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -18183,19 +18528,19 @@ } }, "lru-cache": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", - "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz", + "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==", "dev": true }, "make-fetch-happen": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.1.tgz", - "integrity": "sha512-3/mCljDQNjmrP7kl0vhS5WVlV+TvSKoZaFhdiYV7MOijEnrhrjaVnqbp/EY/7S+fhUB2KpH7j8c1iRsIOs+kjw==", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", + "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", "dev": true, "requires": { "agentkeepalive": "^4.2.1", - "cacache": "^16.0.2", + "cacache": "^16.1.0", "http-cache-semantics": "^4.1.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", @@ -18208,8 +18553,8 @@ "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.1.1", - "ssri": "^8.0.1" + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" }, "dependencies": { "minipass-fetch": { @@ -18225,6 +18570,35 @@ } } } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } } } }, @@ -18238,21 +18612,21 @@ } }, "npmlog": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", - "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, "requires": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", + "gauge": "^4.0.3", "set-blocking": "^2.0.0" } }, "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "requires": { "boolbase": "^1.0.0" @@ -18261,13 +18635,13 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true }, "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true }, "object-is": { @@ -18322,7 +18696,7 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" @@ -18419,7 +18793,7 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, "p-limit": { @@ -18450,12 +18824,12 @@ } }, "p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, "requires": { - "@types/retry": "^0.12.0", + "@types/retry": "0.12.0", "retry": "^0.13.1" }, "dependencies": { @@ -18581,7 +18955,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-key": { @@ -18599,7 +18973,7 @@ "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, "path-type": { @@ -18623,7 +18997,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, "piscina": { @@ -18690,61 +19064,63 @@ } }, "postcss-attribute-case-insensitive": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.0.tgz", - "integrity": "sha512-b4g9eagFGq9T5SWX4+USfVyjIb3liPnjhHHRMP7FMB2kFVpYyfEscV0wP3eaXhKlcHKUut8lt5BGoeylWA/dBQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.1.tgz", + "integrity": "sha512-wrt2VndqSLJpyBRNz9OmJcgnhI9MaongeWgapdBuUMu2a/KNJ8SENesG4SdiTnQwGO9b1VKbTWYAfCPeokLqZQ==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.2" + "postcss-selector-parser": "^6.0.10" } }, "postcss-color-functional-notation": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.2.tgz", - "integrity": "sha512-DXVtwUhIk4f49KK5EGuEdgx4Gnyj6+t2jBSEmxvpIK9QI40tWrpS2Pua8Q7iIZWBrki2QOaeUdEaLPPa91K0RQ==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.3.tgz", + "integrity": "sha512-5fbr6FzFzjwHXKsVnkmEYrJYG8VNNzvD1tAXaPPWR97S6rhKI5uh2yOfV5TAzhDkZoq4h+chxEplFDc8GeyFtw==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-color-hex-alpha": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.3.tgz", - "integrity": "sha512-fESawWJCrBV035DcbKRPAVmy21LpoyiXdPTuHUfWJ14ZRjY7Y7PA6P4g8z6LQGYhU1WAxkTxjIjurXzoe68Glw==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-color-rebeccapurple": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.0.2.tgz", - "integrity": "sha512-SFc3MaocHaQ6k3oZaFwH8io6MdypkUtEy/eXzXEB1vEQlO3S3oDc/FSZA8AsS04Z25RirQhlDlHLh3dn7XewWw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.0.tgz", + "integrity": "sha512-1jtE5AKnZcKq4pjOrltFHcbEM2/IvtbD1OdhZ/wqds18//bh0UmQkffcCkzDJU+/vGodfIsVQeKn+45CJvX9Bw==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-custom-media": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz", - "integrity": "sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", "dev": true, - "requires": {} + "requires": { + "postcss-value-parser": "^4.2.0" + } }, "postcss-custom-properties": { - "version": "12.1.5", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.5.tgz", - "integrity": "sha512-FHbbB/hRo/7cxLGkc2NS7cDRIDN1oFqQnUKBiyh4b/gwk8DD8udvmRDpUhEK836kB8ggUCieHVOvZDnF9XhI3g==", + "version": "12.1.8", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.8.tgz", + "integrity": "sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-custom-selectors": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.0.tgz", - "integrity": "sha512-/1iyBhz/W8jUepjGyu7V1OPcGbc636snN1yXEQCinb6Bwt7KxsiU7/bLQlp8GwAXzCh7cobBU5odNn/2zQWR8Q==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.4" @@ -18909,11 +19285,12 @@ } }, "postcss-nesting": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.4.tgz", - "integrity": "sha512-2ixdQ59ik/Gt1+oPHiI1kHdwEI8lLKEmui9B1nl6163ANLC+GewQn7fXMxJF2JSb4i2MKL96GU8fIiQztK4TTA==", + "version": "10.1.10", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.10.tgz", + "integrity": "sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w==", "dev": true, "requires": { + "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" } }, @@ -18982,9 +19359,9 @@ } }, "postcss-pseudo-class-any-link": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.2.tgz", - "integrity": "sha512-76XzEQv3g+Vgnz3tmqh3pqQyRojkcJ+pjaePsyhcyf164p9aZsu3t+NWxkZYbcHLK1ju5Qmalti2jPI5IWCe5w==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.5.tgz", + "integrity": "sha512-nSGKGScwFTaaV8Cyi27W9FegX3l3b7tmNxujxmykI/j3++cBAiq8fTUAU3ZK0s2aneN2T8cTUvKdNedzp3JIEA==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" @@ -19031,12 +19408,12 @@ "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==" }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, "promise-retry": { @@ -19070,7 +19447,7 @@ "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, "optional": true }, @@ -19131,7 +19508,7 @@ "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, "requires": { "pify": "^2.3.0" @@ -19150,7 +19527,7 @@ "readable-stream": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -19197,9 +19574,9 @@ "dev": true }, "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" @@ -19212,19 +19589,20 @@ "dev": true }, "regexp.prototype.flags": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", - "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" } }, "regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", + "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", "dev": true, "requires": { "regenerate": "^1.4.2", @@ -19253,7 +19631,7 @@ "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true } } @@ -19261,7 +19639,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-from-string": { @@ -19273,7 +19651,7 @@ "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "resolve": { @@ -19338,7 +19716,7 @@ "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true }, "reusify": { @@ -19465,7 +19843,7 @@ "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true }, "selfsigned": { @@ -19487,24 +19865,24 @@ } }, "send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "dependencies": { "debug": { @@ -19519,36 +19897,11 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - } - }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -19561,14 +19914,11 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true } } }, @@ -19584,7 +19934,7 @@ "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -19608,13 +19958,13 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "requires": { "depd": "~1.1.2", @@ -19626,13 +19976,13 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "setprototypeof": { @@ -19644,21 +19994,21 @@ } }, "serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.2" + "send": "0.18.0" } }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "setprototypeof": { @@ -19721,29 +20071,29 @@ "dev": true }, "socket.io": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", - "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz", + "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==", "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.1.0", - "socket.io-adapter": "~2.3.3", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", "socket.io-parser": "~4.0.4" } }, "socket.io-adapter": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", - "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", "dev": true }, "socket.io-parser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", - "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", + "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", "dev": true, "requires": { "@types/component-emitter": "^1.2.10", @@ -19773,14 +20123,14 @@ } }, "socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", "dev": true, "requires": { "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "debug": "^4.3.3", + "socks": "^2.6.2" } }, "source-map": { @@ -19907,7 +20257,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "ssri": { @@ -19922,18 +20272,18 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true }, "streamroller": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.6.tgz", - "integrity": "sha512-Qz32plKq/MZywYyhEatxyYc8vs994Gz0Hu2MSYXXLD233UyPeIeRBZARIIGwFer4Mdb8r3Y2UqKkgyDghM6QCg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.1.tgz", + "integrity": "sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ==", "dev": true, "requires": { - "date-format": "^4.0.6", + "date-format": "^4.0.10", "debug": "^4.3.4", - "fs-extra": "^10.0.1" + "fs-extra": "^10.1.0" }, "dependencies": { "debug": { @@ -19950,7 +20300,7 @@ "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" }, "string-width": { "version": "4.2.3", @@ -20057,15 +20407,15 @@ } }, "terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.7", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", "terser": "^5.7.2" }, "dependencies": { @@ -20104,12 +20454,6 @@ "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, @@ -20127,13 +20471,13 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "thunky": { @@ -20154,7 +20498,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, "to-regex-range": { @@ -20179,9 +20523,9 @@ "dev": true }, "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "type-fest": { "version": "0.21.3", @@ -20272,9 +20616,19 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, + "update-browserslist-db": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", + "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -20287,12 +20641,12 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true }, "uuid": { @@ -20304,7 +20658,7 @@ "validate-npm-package-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", "dev": true, "requires": { "builtins": "^1.0.3" @@ -20313,7 +20667,7 @@ "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true }, "vkbeautify": { @@ -20324,13 +20678,13 @@ "void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", "dev": true }, "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -20349,7 +20703,7 @@ "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "requires": { "defaults": "^1.0.3" @@ -20624,7 +20978,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "ws": { @@ -20653,9 +21007,9 @@ "dev": true }, "yargs": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz", - "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -20674,9 +21028,9 @@ "dev": true }, "zone.js": { - "version": "0.11.5", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.5.tgz", - "integrity": "sha512-D1/7VxEuQ7xk6z/kAROe4SUbd9CzxY4zOwVGnGHerd/SgLIVU5f4esDzQUsOCeArn933BZfWMKydH7l7dPEp0g==", + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.6.tgz", + "integrity": "sha512-umJqFtKyZlPli669gB1gOrRE9hxUUGkZr7mo878z+NEBJZZixJkKeVYfnoLa7g25SseUDc92OZrMKKHySyJrFg==", "requires": { "tslib": "^2.3.0" } diff --git a/package.json b/package.json index fb1efe512..bb696ee3b 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "@angular/platform-browser": "^13.3.1", "@angular/platform-browser-dynamic": "^13.3.1", "@angular/router": "^13.3.1", - "bcdice": "^3.5.1", + "bcdice": "^3.6.0", "crypto-js": "^3.3.0", "file-saver": "^2.0.5", "hammerjs": "^2.0.8", From 18196462ad5768306e20bd34bb41b13b759c3641 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 4 Jul 2022 22:21:35 +0900 Subject: [PATCH 107/161] =?UTF-8?q?docs:=20=E3=83=90=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E6=83=85=E5=A0=B1=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 4 ++-- package.json | 2 +- src/index.html | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index cf6d608cc..1cb7ef538 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "udonarium", - "version": "1.14.1", + "version": "1.14.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "udonarium", - "version": "1.14.1", + "version": "1.14.2", "license": "MIT", "dependencies": { "@angular/animations": "^13.3.1", diff --git a/package.json b/package.json index bb696ee3b..5e1ae0dd6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "udonarium", - "version": "1.14.1", + "version": "1.14.2", "license": "MIT", "scripts": { "ng": "ng", diff --git a/src/index.html b/src/index.html index d7a90ad2a..8d8d3c4f0 100644 --- a/src/index.html +++ b/src/index.html @@ -3,7 +3,7 @@ - Udonarium 1.14.1 + Udonarium 1.14.2 From 7d5464275e823e2909105bdb93c518c3a65427e6 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Tue, 20 Sep 2022 21:48:12 +0900 Subject: [PATCH 108/161] =?UTF-8?q?fix:=20=E8=87=AA=E5=88=86=E3=81=AEPeerC?= =?UTF-8?q?ontext=E3=81=8Cnull=E3=81=AB=E3=81=AA=E3=82=89=E3=81=AA?= =?UTF-8?q?=E3=81=84=E3=82=88=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/system/network/skyway-connection.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index 4c8760a6e..7ca1c013c 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -27,7 +27,7 @@ export class SkyWayConnection implements Connection { private _peerIds: string[] = []; get peerIds(): string[] { return this._peerIds } - peerContext: PeerContext; + peerContext: PeerContext = PeerContext.parse('???'); readonly peerContexts: PeerContext[] = []; readonly callback: ConnectionCallback = new ConnectionCallback(); bandwidthUsage: number = 0; @@ -62,7 +62,7 @@ export class SkyWayConnection implements Connection { if (this.peer) this.peer.destroy(); this.disconnectAll(); this.peer = null; - this.peerContext = null; + this.peerContext = PeerContext.parse('???'); } connect(peerId: string): boolean { From e8f98c94d153cc2a32c38995320d2d0ffad7cd2e Mon Sep 17 00:00:00 2001 From: TK11235 Date: Tue, 20 Sep 2022 22:51:53 +0900 Subject: [PATCH 109/161] =?UTF-8?q?refactor:=20=E3=82=88=E3=82=8A=E5=8E=B3?= =?UTF-8?q?=E6=A0=BC=E3=81=AA=E5=9E=8B=E6=8E=A8=E8=AB=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/system/event/event-system.ts | 8 +++++--- src/app/class/core/system/event/subject.ts | 10 ++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/app/class/core/system/event/event-system.ts b/src/app/class/core/system/event/event-system.ts index 2a69f9231..711a89ea6 100644 --- a/src/app/class/core/system/event/event-system.ts +++ b/src/app/class/core/system/event/event-system.ts @@ -1,7 +1,7 @@ import { Network } from '../network/network'; import { Event, EventContext } from './event'; import { Listener } from './listener'; -import { Callback } from './observer'; +import { Callback, EventMap } from './observer'; import { Subject } from './subject'; type EventName = string; @@ -74,7 +74,8 @@ export class EventSystem implements Subject { return listener; } - call(eventName: string, data: T, sendTo?: string): void + call(eventName: K, data: EventMap[K], sendTo?: string): void + call(eventName: Exclude, data: T, sendTo?: string): void call(event: Event, sendTo?: string): void call(...args: any[]): void { if (typeof args[0] === 'string') { @@ -89,7 +90,8 @@ export class EventSystem implements Subject { Network.instance.send(context, sendTo); } - trigger(eventName: string, data: T): Event + trigger(eventName: K, data: EventMap[K]): Event + trigger(eventName: Exclude, data: T): Event trigger(event: Event): Event trigger(event: EventContext): Event trigger(...args: any[]): Event { diff --git a/src/app/class/core/system/event/subject.ts b/src/app/class/core/system/event/subject.ts index 322f88a4f..884063b05 100644 --- a/src/app/class/core/system/event/subject.ts +++ b/src/app/class/core/system/event/subject.ts @@ -1,5 +1,5 @@ import { Event, EventContext } from './event'; -import { Callback, Observer } from './observer'; +import { Callback, EventMap, Observer } from './observer'; export interface Subject { register(key: any): Observer; @@ -9,9 +9,11 @@ export interface Subject { unregister(key: any, eventName: string, callback: Callback): void; registerListener(listener: Observer): Observer; unregisterListener(listener: Observer): Observer; - call(eventName: string, data: T, sendTo?: string); - call(event: Event, sendTo?: string); - trigger(eventName: string, data: T): Event; + call(eventName: K, data: EventMap[K], sendTo?: string): void; + call(eventName: Exclude, data: T, sendTo?: string): void; + call(event: Event, sendTo?: string): void; + trigger(eventName: K, data: EventMap[K]): Event; + trigger(eventName: Exclude, data: T): Event; trigger(event: Event): Event; trigger(event: EventContext): Event; } From b662f82da467c16e606d016d13be782f83e247de Mon Sep 17 00:00:00 2001 From: TK11235 Date: Wed, 21 Sep 2022 00:59:44 +0900 Subject: [PATCH 110/161] =?UTF-8?q?fix:=20EventSystem=E3=81=AB=E7=99=BB?= =?UTF-8?q?=E9=8C=B2=E3=81=99=E3=82=8B=E3=82=B3=E3=83=BC=E3=83=AB=E3=83=90?= =?UTF-8?q?=E3=83=83=E3=82=AF=E3=81=AEpriority=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 一般的なコールバック処理でpriority指定を省略できるようにする. 修正後のpriorityの目安は以下の通り. 1000: 優先度の高いシステム処理タイミング. 0: 一般的な処理タイミング. defaultのpriority. -1000: 他のコールバック処理後のタイミング. --- src/app/class/Jukebox.ts | 2 +- src/app/class/core/file-storage/audio-sharing-system.ts | 2 +- src/app/class/core/file-storage/image-sharing-system.ts | 2 +- .../class/core/synchronize-object/object-synchronizer.ts | 4 ++-- src/app/class/peer-cursor.ts | 2 +- .../component/card-stack-list/card-stack-list.component.ts | 4 ++-- src/app/component/card-stack/card-stack.component.ts | 6 +++--- src/app/component/card/card.component.ts | 4 ++-- src/app/component/chat-input/chat-input.component.ts | 2 +- src/app/component/chat-palette/chat-palette.component.ts | 2 +- .../chat-tab-setting/chat-tab-setting.component.ts | 2 +- src/app/component/dice-symbol/dice-symbol.component.ts | 6 +++--- .../game-character-sheet/game-character-sheet.component.ts | 2 +- .../component/game-character/game-character.component.ts | 4 ++-- .../game-data-element/game-data-element.component.ts | 4 ++-- .../game-object-inventory.component.ts | 2 +- .../component/game-table-mask/game-table-mask.component.ts | 4 ++-- .../game-table-setting/game-table-setting.component.ts | 2 +- src/app/component/game-table/game-table.component.ts | 2 +- .../component/overview-panel/overview-panel.component.ts | 4 ++-- src/app/component/terrain/terrain.component.ts | 4 ++-- src/app/component/text-note/text-note.component.ts | 4 ++-- src/app/directive/movable.directive.ts | 2 +- src/app/directive/rotable.directive.ts | 2 +- src/app/directive/tooltip.directive.ts | 2 +- src/app/service/game-object-inventory.service.ts | 4 ++-- src/app/service/tabletop.service.ts | 4 ++-- 27 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/app/class/Jukebox.ts b/src/app/class/Jukebox.ts index 29f704671..74205c6ae 100644 --- a/src/app/class/Jukebox.ts +++ b/src/app/class/Jukebox.ts @@ -60,7 +60,7 @@ export class Jukebox extends GameObject { private playAfterFileUpdate() { EventSystem.register(this) - .on('UPDATE_AUDIO_RESOURE', -100, event => { + .on('UPDATE_AUDIO_RESOURE', event => { this._play(); }); } diff --git a/src/app/class/core/file-storage/audio-sharing-system.ts b/src/app/class/core/file-storage/audio-sharing-system.ts index c7ea8f1ca..021138b47 100644 --- a/src/app/class/core/file-storage/audio-sharing-system.ts +++ b/src/app/class/core/file-storage/audio-sharing-system.ts @@ -89,7 +89,7 @@ export class AudioSharingSystem { console.log('REQUEST_FILE_RESOURE AudioStorageService あぶれた...' + event.data.receiver, randomRequest.length); } }) - .on('UPDATE_AUDIO_RESOURE', event => { + .on('UPDATE_AUDIO_RESOURE', 1000, event => { let updateAudios: AudioFileContext[] = event.data; console.log('UPDATE_AUDIO_RESOURE AudioStorageService ' + event.sendFrom + ' -> ', updateAudios); for (let context of updateAudios) { diff --git a/src/app/class/core/file-storage/image-sharing-system.ts b/src/app/class/core/file-storage/image-sharing-system.ts index 29e29504f..651a0670e 100644 --- a/src/app/class/core/file-storage/image-sharing-system.ts +++ b/src/app/class/core/file-storage/image-sharing-system.ts @@ -91,7 +91,7 @@ export class ImageSharingSystem { console.log('REQUEST_FILE_RESOURE ImageStorageService あぶれた...' + event.data.receiver, randomRequest.length); } }) - .on('UPDATE_FILE_RESOURE', event => { + .on('UPDATE_FILE_RESOURE', 1000, event => { let updateImages: ImageContext[] = event.data.updateImages; console.log('UPDATE_FILE_RESOURE ImageStorageService ' + event.sendFrom + ' -> ', updateImages); for (let context of updateImages) { diff --git a/src/app/class/core/synchronize-object/object-synchronizer.ts b/src/app/class/core/synchronize-object/object-synchronizer.ts index 17f94126f..72b751fa2 100644 --- a/src/app/class/core/synchronize-object/object-synchronizer.ts +++ b/src/app/class/core/synchronize-object/object-synchronizer.ts @@ -54,7 +54,7 @@ export class ObjectSynchronizer { if (object) EventSystem.call('UPDATE_GAME_OBJECT', object.toContext(), event.sendFrom); } }) - .on('UPDATE_GAME_OBJECT', event => { + .on('UPDATE_GAME_OBJECT', 1000, event => { let context: ObjectContext = event.data; let object: GameObject = ObjectStore.instance.get(context.identifier); if (object) { @@ -65,7 +65,7 @@ export class ObjectSynchronizer { this.createObject(context); } }) - .on('DELETE_GAME_OBJECT', event => { + .on('DELETE_GAME_OBJECT', 1000, event => { let context: ObjectContext = event.data; ObjectStore.instance.delete(context.identifier, false); }); diff --git a/src/app/class/peer-cursor.ts b/src/app/class/peer-cursor.ts index f7da8985c..e7ea692c0 100644 --- a/src/app/class/peer-cursor.ts +++ b/src/app/class/peer-cursor.ts @@ -28,7 +28,7 @@ export class PeerCursor extends GameObject { super.onStoreAdded(); if (!this.isMine) { EventSystem.register(this) - .on('DISCONNECT_PEER', -1000, event => { + .on('DISCONNECT_PEER', event => { if (event.data.peerId !== this.peerId) return; setTimeout(() => { if (Network.peerIds.includes(this.peerId)) return; diff --git a/src/app/component/card-stack-list/card-stack-list.component.ts b/src/app/component/card-stack-list/card-stack-list.component.ts index 0e8bc0e2d..6a426c276 100644 --- a/src/app/component/card-stack-list/card-stack-list.component.ts +++ b/src/app/component/card-stack-list/card-stack-list.component.ts @@ -30,7 +30,7 @@ export class CardStackListComponent implements OnInit, OnDestroy { ngOnInit() { Promise.resolve().then(() => this.panelService.title = this.cardStack.name + ' のカード一覧'); EventSystem.register(this) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { let object = ObjectStore.instance.get(event.data.identifier); if (!this.cardStack || !object) return; if ((this.cardStack === object) @@ -41,7 +41,7 @@ export class CardStackListComponent implements OnInit, OnDestroy { this.panelService.close(); } }) - .on('DELETE_GAME_OBJECT', -1000, event => { + .on('DELETE_GAME_OBJECT', event => { if (this.cardStack && this.cardStack.identifier === event.data.identifier) { this.panelService.close(); } diff --git a/src/app/component/card-stack/card-stack.component.ts b/src/app/component/card-stack/card-stack.component.ts index 9d3141dee..d07c7285a 100644 --- a/src/app/component/card-stack/card-stack.component.ts +++ b/src/app/component/card-stack/card-stack.component.ts @@ -98,13 +98,13 @@ export class CardStackComponent implements OnInit, AfterViewInit, OnDestroy { ngOnInit() { EventSystem.register(this) - .on('SHUFFLE_CARD_STACK', -1000, event => { + .on('SHUFFLE_CARD_STACK', event => { if (event.data.identifier === this.cardStack.identifier) { this.animeState = 'active'; this.changeDetector.markForCheck(); } }) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { let object = ObjectStore.instance.get(event.data.identifier); if (!this.cardStack || !object) return; if ((this.cardStack === object) @@ -119,7 +119,7 @@ export class CardStackComponent implements OnInit, AfterViewInit, OnDestroy { .on('SYNCHRONIZE_FILE_LIST', event => { this.changeDetector.markForCheck(); }) - .on('UPDATE_FILE_RESOURE', -1000, event => { + .on('UPDATE_FILE_RESOURE', event => { this.changeDetector.markForCheck(); }) .on('DISCONNECT_PEER', event => { diff --git a/src/app/component/card/card.component.ts b/src/app/component/card/card.component.ts index 2a56edf48..3ac36873d 100644 --- a/src/app/component/card/card.component.ts +++ b/src/app/component/card/card.component.ts @@ -84,7 +84,7 @@ export class CardComponent implements OnInit, OnDestroy, AfterViewInit { ngOnInit() { EventSystem.register(this) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { let object = ObjectStore.instance.get(event.data.identifier); if (!this.card || !object) return; if ((this.card === object) @@ -96,7 +96,7 @@ export class CardComponent implements OnInit, OnDestroy, AfterViewInit { .on('SYNCHRONIZE_FILE_LIST', event => { this.changeDetector.markForCheck(); }) - .on('UPDATE_FILE_RESOURE', -1000, event => { + .on('UPDATE_FILE_RESOURE', event => { this.changeDetector.markForCheck(); }) .on('DISCONNECT_PEER', event => { diff --git a/src/app/component/chat-input/chat-input.component.ts b/src/app/component/chat-input/chat-input.component.ts index e325947f0..834d9a7a1 100644 --- a/src/app/component/chat-input/chat-input.component.ts +++ b/src/app/component/chat-input/chat-input.component.ts @@ -103,7 +103,7 @@ export class ChatInputComponent implements OnInit, OnDestroy { this.updateWritingPeerNames(); } }) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { if (event.data.aliasName !== GameCharacter.aliasName) return; this.shouldUpdateCharacterList = true; if (event.data.identifier !== this.sendFrom) return; diff --git a/src/app/component/chat-palette/chat-palette.component.ts b/src/app/component/chat-palette/chat-palette.component.ts index ce6b9bf2f..270d1ae98 100644 --- a/src/app/component/chat-palette/chat-palette.component.ts +++ b/src/app/component/chat-palette/chat-palette.component.ts @@ -59,7 +59,7 @@ export class ChatPaletteComponent implements OnInit, OnDestroy { this.chatTabidentifier = this.chatMessageService.chatTabs ? this.chatMessageService.chatTabs[0].identifier : ''; this.gameType = this.character.chatPalette ? this.character.chatPalette.dicebot : ''; EventSystem.register(this) - .on('DELETE_GAME_OBJECT', -1000, event => { + .on('DELETE_GAME_OBJECT', event => { if (this.character && this.character.identifier === event.data.identifier) { this.panelService.close(); } diff --git a/src/app/component/chat-tab-setting/chat-tab-setting.component.ts b/src/app/component/chat-tab-setting/chat-tab-setting.component.ts index acb8ea0bb..c96b6d51b 100644 --- a/src/app/component/chat-tab-setting/chat-tab-setting.component.ts +++ b/src/app/component/chat-tab-setting/chat-tab-setting.component.ts @@ -41,7 +41,7 @@ export class ChatTabSettingComponent implements OnInit, OnDestroy { ngOnInit() { Promise.resolve().then(() => this.modalService.title = this.panelService.title = 'チャットタブ設定'); EventSystem.register(this) - .on('DELETE_GAME_OBJECT', 1000, event => { + .on('DELETE_GAME_OBJECT', 2000, event => { if (!this.selectedTab || event.data.identifier !== this.selectedTab.identifier) return; let object = ObjectStore.instance.get(event.data.identifier); if (object !== null) { diff --git a/src/app/component/dice-symbol/dice-symbol.component.ts b/src/app/component/dice-symbol/dice-symbol.component.ts index 4c0576d4a..f721d4bd0 100644 --- a/src/app/component/dice-symbol/dice-symbol.component.ts +++ b/src/app/component/dice-symbol/dice-symbol.component.ts @@ -111,7 +111,7 @@ export class DiceSymbolComponent implements OnInit, AfterViewInit, OnDestroy { ngOnInit() { EventSystem.register(this) - .on('ROLL_DICE_SYNBOL', -1000, event => { + .on('ROLL_DICE_SYNBOL', event => { if (event.data.identifier === this.diceSymbol.identifier) { this.ngZone.run(() => { this.animeState = 'inactive'; @@ -120,7 +120,7 @@ export class DiceSymbolComponent implements OnInit, AfterViewInit, OnDestroy { }); } }) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { let object = ObjectStore.instance.get(event.data.identifier); if (!this.diceSymbol || !object) return; if ((this.diceSymbol === object) @@ -132,7 +132,7 @@ export class DiceSymbolComponent implements OnInit, AfterViewInit, OnDestroy { .on('SYNCHRONIZE_FILE_LIST', event => { this.changeDetector.markForCheck(); }) - .on('UPDATE_FILE_RESOURE', -1000, event => { + .on('UPDATE_FILE_RESOURE', event => { this.changeDetector.markForCheck(); }) .on('DISCONNECT_PEER', event => { diff --git a/src/app/component/game-character-sheet/game-character-sheet.component.ts b/src/app/component/game-character-sheet/game-character-sheet.component.ts index 0ebb9f657..2353b8da0 100644 --- a/src/app/component/game-character-sheet/game-character-sheet.component.ts +++ b/src/app/component/game-character-sheet/game-character-sheet.component.ts @@ -33,7 +33,7 @@ export class GameCharacterSheetComponent implements OnInit, OnDestroy, AfterView ngOnInit() { EventSystem.register(this) - .on('DELETE_GAME_OBJECT', -1000, event => { + .on('DELETE_GAME_OBJECT', event => { if (this.tabletopObject && this.tabletopObject.identifier === event.data.identifier) { this.panelService.close(); } diff --git a/src/app/component/game-character/game-character.component.ts b/src/app/component/game-character/game-character.component.ts index b0664a8d2..46061566a 100644 --- a/src/app/component/game-character/game-character.component.ts +++ b/src/app/component/game-character/game-character.component.ts @@ -71,7 +71,7 @@ export class GameCharacterComponent implements OnInit, OnDestroy, AfterViewInit ngOnInit() { EventSystem.register(this) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { let object = ObjectStore.instance.get(event.data.identifier); if (!this.gameCharacter || !object) return; if (this.gameCharacter === object || (object instanceof ObjectNode && this.gameCharacter.contains(object))) { @@ -81,7 +81,7 @@ export class GameCharacterComponent implements OnInit, OnDestroy, AfterViewInit .on('SYNCHRONIZE_FILE_LIST', event => { this.changeDetector.markForCheck(); }) - .on('UPDATE_FILE_RESOURE', -1000, event => { + .on('UPDATE_FILE_RESOURE', event => { this.changeDetector.markForCheck(); }); this.movableOption = { diff --git a/src/app/component/game-data-element/game-data-element.component.ts b/src/app/component/game-data-element/game-data-element.component.ts index 65ed8446d..a4b85b236 100644 --- a/src/app/component/game-data-element/game-data-element.component.ts +++ b/src/app/component/game-data-element/game-data-element.component.ts @@ -44,13 +44,13 @@ export class GameDataElementComponent implements OnInit, OnDestroy, AfterViewIni if (this.gameDataElement) this.setValues(this.gameDataElement); EventSystem.register(this) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { if (this.gameDataElement && event.data.identifier === this.gameDataElement.identifier) { this.setValues(this.gameDataElement); this.changeDetector.markForCheck(); } }) - .on('DELETE_GAME_OBJECT', -1000, event => { + .on('DELETE_GAME_OBJECT', event => { if (this.gameDataElement && this.gameDataElement.identifier === event.data.identifier) { this.changeDetector.markForCheck(); } diff --git a/src/app/component/game-object-inventory/game-object-inventory.component.ts b/src/app/component/game-object-inventory/game-object-inventory.component.ts index 746c63627..6e545bd36 100644 --- a/src/app/component/game-object-inventory/game-object-inventory.component.ts +++ b/src/app/component/game-object-inventory/game-object-inventory.component.ts @@ -53,7 +53,7 @@ export class GameObjectInventoryComponent implements OnInit, AfterViewInit, OnDe ngOnInit() { Promise.resolve().then(() => this.panelService.title = 'インベントリ'); EventSystem.register(this) - .on('SELECT_TABLETOP_OBJECT', -1000, event => { + .on('SELECT_TABLETOP_OBJECT', event => { if (ObjectStore.instance.get(event.data.identifier) instanceof TabletopObject) { this.selectedIdentifier = event.data.identifier; this.changeDetector.markForCheck(); diff --git a/src/app/component/game-table-mask/game-table-mask.component.ts b/src/app/component/game-table-mask/game-table-mask.component.ts index aa63d698c..ada112c66 100644 --- a/src/app/component/game-table-mask/game-table-mask.component.ts +++ b/src/app/component/game-table-mask/game-table-mask.component.ts @@ -62,7 +62,7 @@ export class GameTableMaskComponent implements OnInit, OnDestroy, AfterViewInit ngOnInit() { EventSystem.register(this) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { let object = ObjectStore.instance.get(event.data.identifier); if (!this.gameTableMask || !object) return; if (this.gameTableMask === object || (object instanceof ObjectNode && this.gameTableMask.contains(object))) { @@ -72,7 +72,7 @@ export class GameTableMaskComponent implements OnInit, OnDestroy, AfterViewInit .on('SYNCHRONIZE_FILE_LIST', event => { this.changeDetector.markForCheck(); }) - .on('UPDATE_FILE_RESOURE', -1000, event => { + .on('UPDATE_FILE_RESOURE', event => { this.changeDetector.markForCheck(); }); this.movableOption = { diff --git a/src/app/component/game-table-setting/game-table-setting.component.ts b/src/app/component/game-table-setting/game-table-setting.component.ts index be19a6625..115fdd977 100644 --- a/src/app/component/game-table-setting/game-table-setting.component.ts +++ b/src/app/component/game-table-setting/game-table-setting.component.ts @@ -86,7 +86,7 @@ export class GameTableSettingComponent implements OnInit, OnDestroy, AfterViewIn Promise.resolve().then(() => this.modalService.title = this.panelService.title = 'テーブル設定'); this.selectedTable = this.tableSelecter.viewTable; EventSystem.register(this) - .on('DELETE_GAME_OBJECT', 1000, event => { + .on('DELETE_GAME_OBJECT', 2000, event => { if (!this.selectedTable || event.data.identifier !== this.selectedTable.identifier) return; let object = ObjectStore.instance.get(event.data.identifier); if (object !== null) { diff --git a/src/app/component/game-table/game-table.component.ts b/src/app/component/game-table/game-table.component.ts index 40c0ba296..fba18a17a 100644 --- a/src/app/component/game-table/game-table.component.ts +++ b/src/app/component/game-table/game-table.component.ts @@ -90,7 +90,7 @@ export class GameTableComponent implements OnInit, OnDestroy, AfterViewInit { ngOnInit() { EventSystem.register(this) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { if (event.data.identifier !== this.currentTable.identifier && event.data.identifier !== this.tableSelecter.identifier) return; console.log('UPDATE_GAME_OBJECT GameTableComponent ' + this.currentTable.identifier); diff --git a/src/app/component/overview-panel/overview-panel.component.ts b/src/app/component/overview-panel/overview-panel.component.ts index a1d10270a..588798c80 100644 --- a/src/app/component/overview-panel/overview-panel.component.ts +++ b/src/app/component/overview-panel/overview-panel.component.ts @@ -72,7 +72,7 @@ export class OverviewPanelComponent implements AfterViewInit, OnDestroy { this.adjustPositionRoot(); }, 16); EventSystem.register(this) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { let object = ObjectStore.instance.get(event.data.identifier); if (!this.tabletopObject || !object || !(object instanceof ObjectNode)) return; if (this.tabletopObject === object || this.tabletopObject.contains(object)) { @@ -82,7 +82,7 @@ export class OverviewPanelComponent implements AfterViewInit, OnDestroy { .on('SYNCHRONIZE_FILE_LIST', event => { this.changeDetector.markForCheck(); }) - .on('UPDATE_FILE_RESOURE', -1000, event => { + .on('UPDATE_FILE_RESOURE', event => { this.changeDetector.markForCheck(); }); } diff --git a/src/app/component/terrain/terrain.component.ts b/src/app/component/terrain/terrain.component.ts index 5caaa5753..aba33abcf 100644 --- a/src/app/component/terrain/terrain.component.ts +++ b/src/app/component/terrain/terrain.component.ts @@ -78,7 +78,7 @@ export class TerrainComponent implements OnInit, OnDestroy, AfterViewInit { ngOnInit() { EventSystem.register(this) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { let object = ObjectStore.instance.get(event.data.identifier); if (!this.terrain || !object) return; if (this.terrain === object || (object instanceof ObjectNode && this.terrain.contains(object))) { @@ -88,7 +88,7 @@ export class TerrainComponent implements OnInit, OnDestroy, AfterViewInit { .on('SYNCHRONIZE_FILE_LIST', event => { this.changeDetector.markForCheck(); }) - .on('UPDATE_FILE_RESOURE', -1000, event => { + .on('UPDATE_FILE_RESOURE', event => { this.changeDetector.markForCheck(); }); this.movableOption = { diff --git a/src/app/component/text-note/text-note.component.ts b/src/app/component/text-note/text-note.component.ts index 85ee42d14..8e2018789 100644 --- a/src/app/component/text-note/text-note.component.ts +++ b/src/app/component/text-note/text-note.component.ts @@ -55,7 +55,7 @@ export class TextNoteComponent implements OnInit, OnDestroy, AfterViewInit { ngOnInit() { EventSystem.register(this) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { let object = ObjectStore.instance.get(event.data.identifier); if (!this.textNote || !object) return; if (this.textNote === object || (object instanceof ObjectNode && this.textNote.contains(object))) { @@ -65,7 +65,7 @@ export class TextNoteComponent implements OnInit, OnDestroy, AfterViewInit { .on('SYNCHRONIZE_FILE_LIST', event => { this.changeDetector.markForCheck(); }) - .on('UPDATE_FILE_RESOURE', -1000, event => { + .on('UPDATE_FILE_RESOURE', event => { this.changeDetector.markForCheck(); }); this.movableOption = { diff --git a/src/app/directive/movable.directive.ts b/src/app/directive/movable.directive.ts index 842928c44..6f92da362 100644 --- a/src/app/directive/movable.directive.ts +++ b/src/app/directive/movable.directive.ts @@ -100,7 +100,7 @@ export class MovableDirective implements AfterViewInit, OnDestroy { this.input.onContextMenu = this.onContextMenu.bind(this); EventSystem.register(this) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { if ((event.isSendFromSelf && this.input.isGrabbing) || event.data.identifier !== this.tabletopObject.identifier || !this.shouldTransition(this.tabletopObject)) return; this.batchService.add(() => { if (this.input.isGrabbing) { diff --git a/src/app/directive/rotable.directive.ts b/src/app/directive/rotable.directive.ts index 8bb239240..bc569a497 100644 --- a/src/app/directive/rotable.directive.ts +++ b/src/app/directive/rotable.directive.ts @@ -95,7 +95,7 @@ export class RotableDirective implements AfterViewInit, OnDestroy { if (this.tabletopObject) { EventSystem.register(this) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { if ((event.isSendFromSelf && this.input.isGrabbing) || event.data.identifier !== this.tabletopObject.identifier || !this.shouldTransition(this.tabletopObject)) return; this.batchService.add(() => { if (this.input.isGrabbing) { diff --git a/src/app/directive/tooltip.directive.ts b/src/app/directive/tooltip.directive.ts index ed4f72cf5..9079616f7 100644 --- a/src/app/directive/tooltip.directive.ts +++ b/src/app/directive/tooltip.directive.ts @@ -123,7 +123,7 @@ export class TooltipDirective implements OnInit, AfterViewInit, OnDestroy { }); EventSystem.register(this) - .on('DELETE_GAME_OBJECT', -1000, event => { + .on('DELETE_GAME_OBJECT', event => { if (this.tabletopObject && this.tabletopObject.identifier === event.data.identifier) this.closeAll(); }); diff --git a/src/app/service/game-object-inventory.service.ts b/src/app/service/game-object-inventory.service.ts index 0581fd0ac..2394f4d01 100644 --- a/src/app/service/game-object-inventory.service.ts +++ b/src/app/service/game-object-inventory.service.ts @@ -45,7 +45,7 @@ export class GameObjectInventoryService { .on('OPEN_NETWORK', event => { this.refresh(); }) .on('CONNECT_PEER', event => { this.refresh(); }) .on('DISCONNECT_PEER', event => { this.refresh(); }) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { let object = ObjectStore.instance.get(event.data.identifier); if (!object) return; @@ -77,7 +77,7 @@ export class GameObjectInventoryService { this.callInventoryUpdate(); } }) - .on('DELETE_GAME_OBJECT', 1000, event => { + .on('DELETE_GAME_OBJECT', event => { this.locationMap.delete(event.data.identifier); this.tagNameMap.delete(event.data.identifier); this.refresh(); diff --git a/src/app/service/tabletop.service.ts b/src/app/service/tabletop.service.ts index 2716c8531..eff2a5b8f 100644 --- a/src/app/service/tabletop.service.ts +++ b/src/app/service/tabletop.service.ts @@ -65,7 +65,7 @@ export class TabletopService { private initialize() { this.refreshCacheAll(); EventSystem.register(this) - .on('UPDATE_GAME_OBJECT', -1000, event => { + .on('UPDATE_GAME_OBJECT', event => { if (event.data.identifier === this.currentTable.identifier || event.data.identifier === this.tableSelecter.identifier) { this.refreshCache(GameTableMask.aliasName); this.refreshCache(Terrain.aliasName); @@ -80,7 +80,7 @@ export class TabletopService { this.updateMap(object); } }) - .on('DELETE_GAME_OBJECT', -1000, event => { + .on('DELETE_GAME_OBJECT', event => { let garbage = ObjectStore.instance.get(event.data.identifier); if (garbage == null || garbage.aliasName.length < 1) { this.refreshCacheAll(); From e1993231f4370c3a6f79d8ae8ffd1b8b75621f01 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Wed, 21 Sep 2022 01:10:39 +0900 Subject: [PATCH 111/161] =?UTF-8?q?feat:=20DELETE=5FGAME=5FOBJECT=E3=82=A4?= =?UTF-8?q?=E3=83=99=E3=83=B3=E3=83=88=E3=81=ABaliasName=E3=81=AE=E6=83=85?= =?UTF-8?q?=E5=A0=B1=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ただし、今回の実装だと状況によってはaliasNameを取得できないことに注意. 取得できない場合のaliasNameは空文字として処理する. --- src/app/class/core/synchronize-object/object-store.ts | 2 +- .../core/synchronize-object/object-synchronizer.ts | 10 +++++----- src/app/class/core/system/event/observer.ts | 4 ++++ src/app/service/tabletop.service.ts | 6 +++--- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/app/class/core/synchronize-object/object-store.ts b/src/app/class/core/synchronize-object/object-store.ts index 5749accba..7280625f7 100644 --- a/src/app/class/core/synchronize-object/object-store.ts +++ b/src/app/class/core/synchronize-object/object-store.ts @@ -65,7 +65,7 @@ export class ObjectStore { private _delete(object: GameObject, shouldBroadcast: boolean): GameObject { if (this.remove(object) === null) return null; - if (shouldBroadcast) EventSystem.call('DELETE_GAME_OBJECT', { identifier: object.identifier }); + if (shouldBroadcast) EventSystem.call('DELETE_GAME_OBJECT', { aliasName: object.aliasName, identifier: object.identifier }); return object; } diff --git a/src/app/class/core/synchronize-object/object-synchronizer.ts b/src/app/class/core/synchronize-object/object-synchronizer.ts index 72b751fa2..80795f9da 100644 --- a/src/app/class/core/synchronize-object/object-synchronizer.ts +++ b/src/app/class/core/synchronize-object/object-synchronizer.ts @@ -38,7 +38,7 @@ export class ObjectSynchronizer { let catalog: CatalogItem[] = event.data; for (let item of catalog) { if (ObjectStore.instance.isDeleted(item.identifier)) { - EventSystem.call('DELETE_GAME_OBJECT', { identifier: item.identifier }, event.sendFrom); + EventSystem.call('DELETE_GAME_OBJECT', { aliasName: '', identifier: item.identifier }, event.sendFrom); } else { this.addRequestMap(item, event.sendFrom); } @@ -48,7 +48,7 @@ export class ObjectSynchronizer { .on('REQUEST_GAME_OBJECT', event => { if (event.isSendFromSelf) return; if (ObjectStore.instance.isDeleted(event.data)) { - EventSystem.call('DELETE_GAME_OBJECT', { identifier: event.data }, event.sendFrom); + EventSystem.call('DELETE_GAME_OBJECT', { aliasName: '', identifier: event.data }, event.sendFrom); } else { let object: GameObject = ObjectStore.instance.get(event.data); if (object) EventSystem.call('UPDATE_GAME_OBJECT', object.toContext(), event.sendFrom); @@ -60,14 +60,14 @@ export class ObjectSynchronizer { if (object) { if (!event.isSendFromSelf) this.updateObject(object, context); } else if (ObjectStore.instance.isDeleted(context.identifier)) { - EventSystem.call('DELETE_GAME_OBJECT', { identifier: context.identifier }, event.sendFrom); + EventSystem.call('DELETE_GAME_OBJECT', { aliasName: context.aliasName, identifier: context.identifier }, event.sendFrom); } else { this.createObject(context); } }) .on('DELETE_GAME_OBJECT', 1000, event => { - let context: ObjectContext = event.data; - ObjectStore.instance.delete(context.identifier, false); + let identifier: ObjectIdentifier = event.data.identifier; + ObjectStore.instance.delete(identifier, false); }); } diff --git a/src/app/class/core/system/event/observer.ts b/src/app/class/core/system/event/observer.ts index edacb8534..e107ffa37 100644 --- a/src/app/class/core/system/event/observer.ts +++ b/src/app/class/core/system/event/observer.ts @@ -16,6 +16,10 @@ export interface EventMap { minorVersion: number; syncData: Object; }; + 'DELETE_GAME_OBJECT': { + aliasName: string; + identifier: string; + }; } export interface Observer { diff --git a/src/app/service/tabletop.service.ts b/src/app/service/tabletop.service.ts index eff2a5b8f..6af2ee473 100644 --- a/src/app/service/tabletop.service.ts +++ b/src/app/service/tabletop.service.ts @@ -81,11 +81,11 @@ export class TabletopService { } }) .on('DELETE_GAME_OBJECT', event => { - let garbage = ObjectStore.instance.get(event.data.identifier); - if (garbage == null || garbage.aliasName.length < 1) { + let aliasName = event.data.aliasName; + if (!aliasName) { this.refreshCacheAll(); } else { - this.refreshCache(garbage.aliasName); + this.refreshCache(aliasName); } }) .on('XML_LOADED', event => { From 805f684ea1fe605012e1c5c8138723945dba671e Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 26 Sep 2022 00:00:25 +0900 Subject: [PATCH 112/161] =?UTF-8?q?feat:=20RTCDataChannel.bufferedAmount?= =?UTF-8?q?=E3=81=AB=E3=82=A2=E3=82=AF=E3=82=BB=E3=82=B9=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=83=97=E3=83=AD=E3=83=91=E3=83=86=E3=82=A3=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/system/network/skyway-data-connection.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/class/core/system/network/skyway-data-connection.ts b/src/app/class/core/system/network/skyway-data-connection.ts index 741cd9afa..c88115b1b 100644 --- a/src/app/class/core/system/network/skyway-data-connection.ts +++ b/src/app/class/core/system/network/skyway-data-connection.ts @@ -39,6 +39,7 @@ export class SkyWayDataConnection extends EventEmitter { get open(): boolean { return this.conn.open; } get remoteId(): string { return this.conn.remoteId; } get metadata(): any { return this.conn.metadata; } + get bufferedAmount(): number { return this.conn._dc?.bufferedAmount ?? 0; } private stats: WebRTCStats; From 8e27478a941d4863b6a122e55479fffb22fe071a Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 26 Sep 2022 00:41:04 +0900 Subject: [PATCH 113/161] =?UTF-8?q?fix:=20=E9=80=81=E4=BF=A1=E3=81=A8?= =?UTF-8?q?=E5=8F=97=E4=BF=A1=E3=81=AE=E3=83=87=E3=83=BC=E3=82=BF=E3=82=92?= =?UTF-8?q?=E3=81=9D=E3=82=8C=E3=81=9E=E3=82=8C=E7=8B=AC=E7=AB=8B=E3=81=97?= =?UTF-8?q?=E3=81=9F=E3=82=AD=E3=83=A5=E3=83=BC=E3=81=A7=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/system/network/skyway-connection.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index 7ca1c013c..9b441a327 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -39,7 +39,8 @@ export class SkyWayConnection implements Connection { private listAllPeersCache: string[] = []; private httpRequestInterval: number = performance.now() + 500; - private queue: Promise = Promise.resolve(); + private outboundQueue: Promise = Promise.resolve(); + private inboundQueue: Promise = Promise.resolve(); private relayingPeerIds: Map = new Map(); private maybeUnavailablePeerIds: Set = new Set(); @@ -120,7 +121,7 @@ export class SkyWayConnection implements Connection { let byteLength = container.data.byteLength; this.bandwidthUsage += byteLength; - this.queue = this.queue.then(() => new Promise((resolve, reject) => { + this.outboundQueue = this.outboundQueue.then(() => new Promise((resolve, reject) => { setZeroTimeout(async () => { if (1 * 1024 < container.data.byteLength) { let compressed = await compressAsync(container.data); @@ -334,7 +335,7 @@ export class SkyWayConnection implements Connection { if (this.callback.onData) { let byteLength = container.data.byteLength; this.bandwidthUsage += byteLength; - this.queue = this.queue.then(() => new Promise((resolve, reject) => { + this.inboundQueue = this.inboundQueue.then(() => new Promise((resolve, reject) => { setZeroTimeout(async () => { let data = container.isCompressed ? await decompressAsync(container.data) : container.data; this.callback.onData(conn.remoteId, MessagePack.decode(data)); From 0bad114b6e52fa32f762bab4abc612ed8f52a446 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 26 Sep 2022 00:49:43 +0900 Subject: [PATCH 114/161] =?UTF-8?q?fix:=20Peer=E5=88=87=E6=96=AD=E6=99=82?= =?UTF-8?q?=E3=81=ABonDisconnect=E3=82=B3=E3=83=BC=E3=83=AB=E3=83=90?= =?UTF-8?q?=E3=83=83=E3=82=AF=E3=82=92=E5=BF=85=E3=81=9A=E5=AE=9F=E8=A1=8C?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/system/network/skyway-connection.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index 9b441a327..214b19e63 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -248,7 +248,6 @@ export class SkyWayConnection implements Connection { }); conn.on('close', () => { this.closeDataConnection(conn); - if (this.callback.onDisconnect) this.callback.onDisconnect(conn.remoteId); }); conn.on('error', () => { this.closeDataConnection(conn); @@ -297,6 +296,8 @@ export class SkyWayConnection implements Connection { }); console.log(' Peer:' + conn.remoteId + ' length:' + this.connections.length + ':' + this.peerContexts.length); this.updatePeerList(); + + if (0 <= index && this.callback.onDisconnect) this.callback.onDisconnect(conn.remoteId); } private addDataConnection(conn: SkyWayDataConnection): boolean { From 50494196a99a12d2a483cafab08075e254b411d5 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 7 Oct 2022 23:09:55 +0900 Subject: [PATCH 115/161] =?UTF-8?q?fix:=20ping=E3=81=AB=E5=8F=8D=E5=BF=9C?= =?UTF-8?q?=E3=81=97=E3=81=AA=E3=81=8F=E3=81=AA=E3=81=A3=E3=81=9FPeer?= =?UTF-8?q?=E3=81=AF=E5=BC=B7=E5=88=B6=E7=9A=84=E3=81=AB=E5=88=87=E6=96=AD?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WindowsデスクトップChromeにおいて、接続が失われても自動的な切断イベントが発火しないパターンがある. そのような場合、接続がゾンビ化してしまうため強制的に切断する. --- src/app/class/core/system/network/skyway-connection.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index 214b19e63..d6c41101c 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -278,6 +278,10 @@ export class SkyWayConnection implements Connection { break; } context.session.description = conn.candidateType; + + if (context.session.health < 0.2) { + this.closeDataConnection(conn); + } }); } From 5362019694d94b17d4b77bbbbd59ed9d854c2b6d Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 8 Oct 2022 00:23:46 +0900 Subject: [PATCH 116/161] =?UTF-8?q?refactor:=20=E5=9B=BA=E5=AE=9A=E5=80=A4?= =?UTF-8?q?=E3=81=AE=E3=83=91=E3=83=A9=E3=83=A1=E3=83=BC=E3=82=BF=E3=82=92?= =?UTF-8?q?=E3=83=97=E3=83=AD=E3=83=91=E3=83=86=E3=82=A3=E3=81=A8=E3=81=97?= =?UTF-8?q?=E3=81=A6=E5=AE=9A=E7=BE=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/file-storage/buffer-sharing-task.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/class/core/file-storage/buffer-sharing-task.ts b/src/app/class/core/file-storage/buffer-sharing-task.ts index dbf548cdc..bff0f1e6c 100644 --- a/src/app/class/core/file-storage/buffer-sharing-task.ts +++ b/src/app/class/core/file-storage/buffer-sharing-task.ts @@ -21,6 +21,7 @@ export class BufferSharingTask { private sendChankTimer: number; private sentChankIndex = 0; + private bufferingChankRange: number = 4; private completedChankIndex = 0; private startTime = 0; @@ -142,7 +143,7 @@ export class BufferSharingTask { if (this.chanks.length <= index + 1) { console.log('バッファ送信完了', this.identifier); setZeroTimeout(() => this.finish()); - } else if (this.completedChankIndex + 4 <= index) { + } else if (this.completedChankIndex + this.bufferingChankRange <= index) { this.resetTimeout(); } else { this.sendChankTimer = setZeroTimeout(() => { this.sendChank(this.sentChankIndex + 1); }); From 763a36e0656a8a6c021a2e60a3cf85c2a2ba9f18 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 8 Oct 2022 01:14:02 +0900 Subject: [PATCH 117/161] =?UTF-8?q?refactor:=20console=E8=A1=A8=E7=A4=BA?= =?UTF-8?q?=E3=82=92=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E3=81=AB=E5=88=86?= =?UTF-8?q?=E9=9B=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/file-storage/buffer-sharing-task.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/app/class/core/file-storage/buffer-sharing-task.ts b/src/app/class/core/file-storage/buffer-sharing-task.ts index bff0f1e6c..6a04d73bc 100644 --- a/src/app/class/core/file-storage/buffer-sharing-task.ts +++ b/src/app/class/core/file-storage/buffer-sharing-task.ts @@ -116,10 +116,10 @@ export class BufferSharingTask { .on('FILE_MORE_CHANK_' + this.identifier, event => { if (this.sendTo !== event.sendFrom) return; this.completedChankIndex = event.data; - if (this.sendChankTimer == null) { - this.resetTimeout(); + if (this.sendChankTimer == null && this.sentChankIndex + 1 < this.chanks.length) { this.sendChank(this.sentChankIndex + 1); } + this.resetTimeout(); }) .on('DISCONNECT_PEER', event => { if (event.data.peerId !== this.sendTo) return; @@ -131,6 +131,7 @@ export class BufferSharingTask { this._cancel(); }); this.sentChankIndex = this.completedChankIndex = 0; + this.startTime = performance.now(); setZeroTimeout(() => this.sendChank(0)); } @@ -142,6 +143,7 @@ export class BufferSharingTask { this.sendChankTimer = null; if (this.chanks.length <= index + 1) { console.log('バッファ送信完了', this.identifier); + this.outputTransferRate(this.uint8Array.byteLength); setZeroTimeout(() => this.finish()); } else if (this.completedChankIndex + this.bufferingChankRange <= index) { this.resetTimeout(); @@ -189,10 +191,7 @@ export class BufferSharingTask { let sumLength = 0; for (let chank of this.chanks) { sumLength += chank.byteLength; } - let time = performance.now() - this.startTime; - let rate = (sumLength / 1024 / 1024) / (time / 1000); - console.log(`${(sumLength / 1024).toFixed(2)}KB ${(time / 1000).toFixed(2)}秒 転送速度: ${rate.toFixed(2)}MB/s`); - + this.outputTransferRate(sumLength); let uint8Array = new Uint8Array(sumLength); let pos = 0; @@ -206,7 +205,13 @@ export class BufferSharingTask { } private resetTimeout() { - if (this.timeoutTimer == null) this.timeoutTimer = new ResettableTimeout(() => this.timeout(), 30 * 1000); + if (this.timeoutTimer == null) this.timeoutTimer = new ResettableTimeout(() => this.timeout(), 10 * 1000); this.timeoutTimer.reset(); } + + private outputTransferRate(byteLength: number) { + let time = performance.now() - this.startTime; + let rate = (byteLength / 1024 / 1024) / (time / 1000); + console.log(`${(byteLength / 1024).toFixed(2)}KB ${(time / 1000).toFixed(2)}秒 転送速度: ${rate.toFixed(2)}MB/s`); + } } From 126359ebd87e76fcf84fda1e7bbc683c7462f84d Mon Sep 17 00:00:00 2001 From: TK11235 Date: Sat, 8 Oct 2022 01:31:28 +0900 Subject: [PATCH 118/161] =?UTF-8?q?perf:=20=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E9=80=81=E4=BF=A1=E6=99=82=E3=81=AE=E5=9C=A7=E7=B8=AE=E5=88=A4?= =?UTF-8?q?=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 同時送信するデータが1つだけの場合、圧縮の効果が殆ど期待できないため圧縮しない. この変更は、特にファイル送信時における無意味な圧縮試行の回避として機能する. --- src/app/class/core/system/network/skyway-connection.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/class/core/system/network/skyway-connection.ts b/src/app/class/core/system/network/skyway-connection.ts index d6c41101c..bedf44e0d 100644 --- a/src/app/class/core/system/network/skyway-connection.ts +++ b/src/app/class/core/system/network/skyway-connection.ts @@ -123,7 +123,7 @@ export class SkyWayConnection implements Connection { this.bandwidthUsage += byteLength; this.outboundQueue = this.outboundQueue.then(() => new Promise((resolve, reject) => { setZeroTimeout(async () => { - if (1 * 1024 < container.data.byteLength) { + if (1 * 1024 < container.data.byteLength && Array.isArray(data) && 1 < data.length) { let compressed = await compressAsync(container.data); if (compressed.byteLength < container.data.byteLength) { container.data = compressed; From 98bf5186df97c74269e6729f2f71e8da787a858a Mon Sep 17 00:00:00 2001 From: TK11235 Date: Thu, 13 Oct 2022 01:24:52 +0900 Subject: [PATCH 119/161] =?UTF-8?q?fix:=20typo=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/component/dice-symbol/dice-symbol.component.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/component/dice-symbol/dice-symbol.component.ts b/src/app/component/dice-symbol/dice-symbol.component.ts index f721d4bd0..33b4a325d 100644 --- a/src/app/component/dice-symbol/dice-symbol.component.ts +++ b/src/app/component/dice-symbol/dice-symbol.component.ts @@ -111,7 +111,7 @@ export class DiceSymbolComponent implements OnInit, AfterViewInit, OnDestroy { ngOnInit() { EventSystem.register(this) - .on('ROLL_DICE_SYNBOL', event => { + .on('ROLL_DICE_SYMBOL', event => { if (event.data.identifier === this.diceSymbol.identifier) { this.ngZone.run(() => { this.animeState = 'inactive'; @@ -284,7 +284,7 @@ export class DiceSymbolComponent implements OnInit, AfterViewInit, OnDestroy { } diceRoll(): string { - EventSystem.call('ROLL_DICE_SYNBOL', { identifier: this.diceSymbol.identifier }); + EventSystem.call('ROLL_DICE_SYMBOL', { identifier: this.diceSymbol.identifier }); SoundEffect.play(PresetSound.diceRoll1); return this.diceSymbol.diceRoll(); } From ca3d1f8bf1bdc126d387e6672b61b99e125c00e1 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 14 Oct 2022 01:54:32 +0900 Subject: [PATCH 120/161] =?UTF-8?q?build:=20=E4=BE=9D=E5=AD=98=E3=83=91?= =?UTF-8?q?=E3=83=83=E3=82=B1=E3=83=BC=E3=82=B8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 2831 ++++++++++++++++++++++----------------------- package.json | 20 +- 2 files changed, 1420 insertions(+), 1431 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1cb7ef538..fbc2ca1e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,14 +18,14 @@ "@angular/platform-browser-dynamic": "^13.3.1", "@angular/router": "^13.3.1", "bcdice": "^3.6.0", - "crypto-js": "^3.3.0", + "crypto-js": "^4.1.1", "file-saver": "^2.0.5", "hammerjs": "^2.0.8", "js-yaml": "^4.1.0", - "jszip": "~3.1.5", + "jszip": "^3.10.1", "lzbase62": "^2.0.0", "msgpack-lite": "^0.1.26", - "pako": "^2.0.0", + "pako": "^2.0.4", "rxjs": "~7.5.0", "tslib": "^2.3.0", "vkbeautify": "^0.99.3", @@ -35,16 +35,16 @@ "@angular-devkit/build-angular": "~13.3.1", "@angular/cli": "^13.3.1", "@angular/compiler-cli": "^13.3.1", - "@types/crypto-js": "^4.0.1", - "@types/file-saver": "^2.0.1", - "@types/hammerjs": "^2.0.39", + "@types/crypto-js": "^4.1.1", + "@types/file-saver": "^2.0.5", + "@types/hammerjs": "^2.0.41", "@types/jasmine": "~3.10.0", "@types/jasminewd2": "^2.0.8", - "@types/js-yaml": "^4.0.0", - "@types/jszip": "^3.1.7", - "@types/msgpack-lite": "^0.1.7", + "@types/js-yaml": "^4.0.5", + "@types/lzbase62": "^2.0.0", + "@types/msgpack-lite": "^0.1.8", "@types/node": "^12.11.1", - "@types/pako": "^1.0.1", + "@types/pako": "^2.0.0", "@types/vkbeautify": "^0.99.2", "jasmine-core": "~4.0.0", "karma": "~6.3.0", @@ -69,12 +69,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1303.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.8.tgz", - "integrity": "sha512-2zaNejnfZbq+fFOVgkmWkh+2UmK/CBDbWTq7VJHopJLtUuf7pFNvRk73s9xayuJ3Lt2/sY17Mykku2LziBF89A==", + "version": "0.1303.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.9.tgz", + "integrity": "sha512-RMHqCGDxbLqT+250A0a8vagsoTdqGjAxjhrvTeq7PJmClI7uJ/uA1Fs18+t85toIqVKn2hovdY9sNf42nBDD2Q==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.3.8", + "@angular-devkit/core": "13.3.9", "rxjs": "6.6.7" }, "engines": { @@ -102,15 +102,15 @@ "dev": true }, "node_modules/@angular-devkit/build-angular": { - "version": "13.3.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.8.tgz", - "integrity": "sha512-5nWqb58oLcWoBoAECqHiUlOV23/J/4W1a9aqaFQcN6bThRzoy54S69zUuQREnBE36elDrSxhn2Y34poqYe8iKQ==", + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.9.tgz", + "integrity": "sha512-1LqcMizeabx3yOkx3tptCSAoEhG6nO6hPgI/B3EJ07G/ZcoxunMWSeN3P3zT10dZMEHhcxl+8cSStSXaXj9hfA==", "dev": true, "dependencies": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1303.8", - "@angular-devkit/build-webpack": "0.1303.8", - "@angular-devkit/core": "13.3.8", + "@angular-devkit/architect": "0.1303.9", + "@angular-devkit/build-webpack": "0.1303.9", + "@angular-devkit/core": "13.3.9", "@babel/core": "7.16.12", "@babel/generator": "7.16.8", "@babel/helper-annotate-as-pure": "7.16.7", @@ -121,7 +121,7 @@ "@babel/runtime": "7.16.7", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.6", - "@ngtools/webpack": "13.3.8", + "@ngtools/webpack": "13.3.9", "ansi-colors": "4.1.1", "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", @@ -162,7 +162,7 @@ "source-map-support": "0.5.21", "stylus": "0.56.0", "stylus-loader": "6.2.0", - "terser": "5.11.0", + "terser": "5.14.2", "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.3.1", @@ -236,12 +236,12 @@ "dev": true }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1303.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.8.tgz", - "integrity": "sha512-N3DehEQ4uARricbYTuASBCnHdrtKFIMZpl6A4GB5DKQILF7KctsaAz0QvAiA8y4ojhSIRvXK5XVWklX3QVlJIw==", + "version": "0.1303.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.9.tgz", + "integrity": "sha512-CdYXvAN1xAik8FyfdF1B8Nt1B/1aBvkZr65AUVFOmP6wuVzcdn78BMZmZD42srYbV2449sWi5Vyo/j0a/lfJww==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1303.8", + "@angular-devkit/architect": "0.1303.9", "rxjs": "6.6.7" }, "engines": { @@ -273,9 +273,9 @@ "dev": true }, "node_modules/@angular-devkit/core": { - "version": "13.3.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.8.tgz", - "integrity": "sha512-PCmfMkErpnH429l1cANak4PnCpAscqAubS6Dw83++cS34ht0/bgKRb2zSyBuB2Ka6kw7wAZ3fCyTcVvyfxVFEg==", + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.9.tgz", + "integrity": "sha512-XqCuIWyoqIsLABjV3GQL/+EiBCt3xVPPtNp3Mg4gjBsDLW7PEnvbb81yGkiZQmIsq4EIyQC/6fQa3VdjsCshGg==", "dev": true, "dependencies": { "ajv": "8.9.0", @@ -318,12 +318,12 @@ "dev": true }, "node_modules/@angular-devkit/schematics": { - "version": "13.3.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.8.tgz", - "integrity": "sha512-7mTlxZhS9uHxtmOiZeSMkKdIE5r5FmQ/1IBhRBfD5XDQdipQkUJyOtclPO/+t/AJIG0+LYt9+7X5hHUr7W3kZA==", + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.9.tgz", + "integrity": "sha512-oNHLNtwbtEJ0dYPPXy1NpfRdSiFsYBl7+ozJklLgNV/AEOxlSi2qlVx6DoxNVjz5XgQ7Z+eoVDMw7ewGPnGSyA==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.3.8", + "@angular-devkit/core": "13.3.9", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -368,16 +368,16 @@ } }, "node_modules/@angular/cli": { - "version": "13.3.8", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.8.tgz", - "integrity": "sha512-dsvum8oGnbgX5mLh9CDzP1ip2UGDZdppPD6np2XXhqX75DfJxRlgl4u3NxBSnDmeyhIGTsGV0HKAxoB5EOoHcw==", + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.9.tgz", + "integrity": "sha512-b64mfB7A8vw5QmopEnkCVhGH8zDX5FrQVKKCRlK1dO3GEtAdfhFJb5J7TBbCOwp1XfYJ5jl+biNQy4HoX5HQPw==", "dev": true, "hasInstallScript": true, "dependencies": { - "@angular-devkit/architect": "0.1303.8", - "@angular-devkit/core": "13.3.8", - "@angular-devkit/schematics": "13.3.8", - "@schematics/angular": "13.3.8", + "@angular-devkit/architect": "0.1303.9", + "@angular-devkit/core": "13.3.9", + "@angular-devkit/schematics": "13.3.9", + "@schematics/angular": "13.3.9", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.3", @@ -460,21 +460,21 @@ } }, "node_modules/@angular/compiler-cli/node_modules/@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", + "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/generator": "^7.19.3", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helpers": "^7.19.0", + "@babel/parser": "^7.19.3", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.3", + "@babel/types": "^7.19.3", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -499,12 +499,12 @@ } }, "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.19.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz", + "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.19.4", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -513,14 +513,14 @@ } }, "node_modules/@angular/compiler-cli/node_modules/@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" @@ -541,9 +541,9 @@ } }, "node_modules/@angular/compiler-cli/node_modules/magic-string": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", - "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", "dev": true, "dependencies": { "sourcemap-codec": "^1.4.8" @@ -658,9 +658,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz", - "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", + "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -750,27 +750,27 @@ } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz", - "integrity": "sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "dev": true, "dependencies": { "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", - "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", + "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.6", + "@babel/compat-data": "^7.19.3", "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", + "browserslist": "^4.21.3", "semver": "^6.3.0" }, "engines": { @@ -790,17 +790,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", - "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", + "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { @@ -823,9 +823,9 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -851,15 +851,13 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", @@ -879,9 +877,9 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", - "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -900,27 +898,27 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", - "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name/node_modules/@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" @@ -939,12 +937,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", - "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -963,33 +961,33 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", - "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", + "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", "@babel/helper-simple-access": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" @@ -1008,24 +1006,24 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", - "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz", - "integrity": "sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-wrap-function": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1047,40 +1045,40 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", - "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", + "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.19.4" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz", - "integrity": "sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1098,10 +1096,19 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true, "engines": { "node": ">=6.9.0" @@ -1117,57 +1124,57 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz", - "integrity": "sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", - "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz", + "integrity": "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==", "dev": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.4", + "@babel/types": "^7.19.4" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers/node_modules/@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" @@ -1188,9 +1195,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", - "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz", + "integrity": "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1215,14 +1222,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz", - "integrity": "sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1298,12 +1305,12 @@ } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz", - "integrity": "sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1330,12 +1337,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz", - "integrity": "sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1378,16 +1385,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz", - "integrity": "sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", + "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/compat-data": "^7.19.4", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.6" + "@babel/plugin-transform-parameters": "^7.18.8" }, "engines": { "node": ">=6.9.0" @@ -1413,13 +1420,13 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz", - "integrity": "sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1716,12 +1723,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz", - "integrity": "sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", + "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1731,17 +1738,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz", - "integrity": "sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", + "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, @@ -1765,12 +1773,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz", - "integrity": "sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1780,12 +1788,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz", - "integrity": "sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", + "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1811,12 +1819,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz", - "integrity": "sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1842,9 +1850,9 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz", - "integrity": "sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" @@ -1857,14 +1865,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz", - "integrity": "sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1874,12 +1882,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz", - "integrity": "sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1939,14 +1947,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz", - "integrity": "sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", + "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, @@ -1974,13 +1982,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -2021,9 +2029,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz", - "integrity": "sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" @@ -2126,13 +2134,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz", - "integrity": "sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2157,12 +2165,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz", - "integrity": "sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2172,12 +2180,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz", - "integrity": "sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2187,12 +2195,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", - "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2357,19 +2365,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", - "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz", + "integrity": "sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/generator": "^7.19.4", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/parser": "^7.19.4", + "@babel/types": "^7.19.4", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2378,12 +2386,12 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.19.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz", + "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.19.4", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -2406,12 +2414,13 @@ } }, "node_modules/@babel/types": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", - "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", + "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2443,9 +2452,9 @@ } }, "node_modules/@csstools/selector-specificity": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz", - "integrity": "sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", + "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", "dev": true, "engines": { "node": "^12 || ^14 || >=16" @@ -2455,7 +2464,7 @@ "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.3", + "postcss": "^8.2", "postcss-selector-parser": "^6.0.10" } }, @@ -2535,9 +2544,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz", - "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "dev": true, "engines": { "node": ">=6.0.0" @@ -2552,6 +2561,30 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", @@ -2559,19 +2592,19 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.16", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.16.tgz", + "integrity": "sha512-LCQ+NeThyJ4k1W2d+vIKdxuSt9R3pQSZ4P92m7EakaYuXcVWbHuT5bjNcqLd4Rdgi6xYWYDvBJZJLZSLanjDcA==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@ngtools/webpack": { - "version": "13.3.8", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.8.tgz", - "integrity": "sha512-meuXHb1zQ5lz7Uj7kGYTgjd9Tknsi/0jJxs+12nz06h0tifIyIoGU01YA3mUj4/bntIjfWif35KGYP+23bbAVw==", + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.9.tgz", + "integrity": "sha512-wmgOI5sogAuilwBZJqCHVMjm2uhDxjdSmNLFx7eznwGDa6LjvjuATqCv2dVlftq0Y/5oZFVrg5NpyHt5kfZ8Cg==", "dev": true, "engines": { "node": "^12.20.0 || ^14.15.0 || >=16.10.0", @@ -2717,13 +2750,13 @@ } }, "node_modules/@schematics/angular": { - "version": "13.3.8", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.8.tgz", - "integrity": "sha512-VKRTTNYX5OsaJ6sWlCIuU71qihV3ysNNJ49wqLedOlWm1v0GMwoyGMCTJk9OZab1rpo/tYfLTcUlYqP3l6GVDQ==", + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.9.tgz", + "integrity": "sha512-tm5wst7+Z8cOgOJ/4JVlYKOFCCOVnqKYFtYf0BIWq6RFBXcw6QqbGW1wXH8ASmuev4QZXKgqc7YKALPpYAKCeQ==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.3.8", - "@angular-devkit/schematics": "13.3.8", + "@angular-devkit/core": "13.3.9", + "@angular-devkit/schematics": "13.3.9", "jsonc-parser": "3.0.0" }, "engines": { @@ -2732,6 +2765,12 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -2760,12 +2799,6 @@ "@types/node": "*" } }, - "node_modules/@types/component-emitter": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", - "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", - "dev": true - }, "node_modules/@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -2804,9 +2837,9 @@ "dev": true }, "node_modules/@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", + "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", "dev": true, "dependencies": { "@types/estree": "*", @@ -2830,9 +2863,9 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", "dev": true, "dependencies": { "@types/body-parser": "*", @@ -2842,9 +2875,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", "dev": true, "dependencies": { "@types/node": "*", @@ -2900,20 +2933,16 @@ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, - "node_modules/@types/jszip": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@types/jszip/-/jszip-3.4.1.tgz", - "integrity": "sha512-TezXjmf3lj+zQ651r6hPqvSScqBLvyPI9FxdXBqpEwBijNGQ2NXpaFW/7joGzveYkKQUil7iiDHLo6LV71Pc0A==", - "deprecated": "This is a stub types definition. jszip provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "jszip": "*" - } + "node_modules/@types/lzbase62": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/lzbase62/-/lzbase62-2.0.0.tgz", + "integrity": "sha512-u7nEkpDDQJl64NOoxowG6LCrfnkWI5ocmKeVTppO2mp+IUDMhKfJLtHCINBqA9+KvXstxEEbG8uxK/qNJ/D7Bg==", + "dev": true }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, "node_modules/@types/msgpack-lite": { @@ -2932,9 +2961,9 @@ "dev": true }, "node_modules/@types/pako": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.4.tgz", - "integrity": "sha512-Z+5bJSm28EXBSUJEgx29ioWeEEHUh6TiMkZHDhLwjc9wVFH+ressbkmX6waUZc5R3Gobn4Qu5llGxaoflZ+yhA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.0.tgz", + "integrity": "sha512-10+iaz93qR5WYxTo+PMifD5TSxiOtdRaxBf7INGGXMQgTCu8Z/7GYWYFUOS3q/G0nE5boj1r4FEB+WSy7s5gbA==", "dev": true }, "node_modules/@types/parse-json": { @@ -2971,12 +3000,12 @@ } }, "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, "dependencies": { - "@types/mime": "^1", + "@types/mime": "*", "@types/node": "*" } }, @@ -3194,9 +3223,9 @@ } }, "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -3411,16 +3440,16 @@ "dev": true }, "node_modules/are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/are-we-there-yet/node_modules/readable-stream": { @@ -3437,35 +3466,6 @@ "node": ">= 6" } }, - "node_modules/are-we-there-yet/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/are-we-there-yet/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -3511,9 +3511,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", - "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "version": "10.4.12", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", + "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", "dev": true, "funding": [ { @@ -3526,8 +3526,8 @@ } ], "dependencies": { - "browserslist": "^4.20.3", - "caniuse-lite": "^1.0.30001335", + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001407", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -3602,13 +3602,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", "semver": "^6.1.1" }, "peerDependencies": { @@ -3625,12 +3625,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/helper-define-polyfill-provider": "^0.3.2", "core-js-compat": "^3.21.0" }, "peerDependencies": { @@ -3742,39 +3742,10 @@ "node": ">= 6" } }, - "node_modules/bl/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bl/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -3785,7 +3756,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.10.3", + "qs": "6.11.0", "raw-body": "2.5.1", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -3853,9 +3824,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz", - "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "funding": [ { @@ -3868,10 +3839,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001359", - "electron-to-chromium": "^1.4.172", - "node-releases": "^2.0.5", - "update-browserslist-db": "^1.0.4" + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" }, "bin": { "browserslist": "cli.js" @@ -3991,9 +3962,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001363", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz", - "integrity": "sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg==", + "version": "1.0.30001419", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001419.tgz", + "integrity": "sha512-aFO1r+g6R7TW+PNQxKzjITwLOyDhVRLjW0LcwS/HCZGUUKTGNp9+IwLC4xyDSZBygVL/mxaFR3HIV6wEKQuSzw==", "dev": true, "funding": [ { @@ -4105,9 +4076,9 @@ } }, "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", "dev": true, "engines": { "node": ">=6" @@ -4126,14 +4097,17 @@ } }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/clone": { @@ -4201,12 +4175,6 @@ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -4354,13 +4322,10 @@ } }, "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "node_modules/cookie": { "version": "0.4.2", @@ -4457,28 +4422,18 @@ } }, "node_modules/core-js-compat": { - "version": "3.23.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.3.tgz", - "integrity": "sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw==", + "version": "3.25.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", + "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", "dev": true, "dependencies": { - "browserslist": "^4.21.0", - "semver": "7.0.0" + "browserslist": "^4.21.4" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -4627,9 +4582,9 @@ } }, "node_modules/crypto-js": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz", - "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" }, "node_modules/css": { "version": "3.0.0", @@ -4781,9 +4736,9 @@ "dev": true }, "node_modules/date-format": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.11.tgz", - "integrity": "sha512-VS20KRyorrbMCQmpdl2hg5KaOUsda1RbnsJg461FfrcyCUg+pkd0b40BSW4niQyTheww4DBXQnS7HwSrKkipLw==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, "engines": { "node": ">=4.0" @@ -4845,12 +4800,15 @@ } }, "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "dependencies": { "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/define-lazy-prop": { @@ -5012,6 +4970,12 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/dns-packet/node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, "node_modules/dns-txt": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", @@ -5095,9 +5059,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.177", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.177.tgz", - "integrity": "sha512-FYPir3NSBEGexSZUEeht81oVhHfLFl6mhUKSkjHN/iB/TwEIt/WHQrqVGfTLN5gQxwJCQkIJBe05eOXjI7omgg==", + "version": "1.4.281", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.281.tgz", + "integrity": "sha512-yer0w5wCYdFoZytfmbNhwiGI/3cW06+RV7E23ln4490DVMxs7PvYpbsrSmAiBn/V6gode8wvJlST2YfWgvzWIg==", "dev": true }, "node_modules/emoji-regex": { @@ -5248,11 +5212,6 @@ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "dev": true }, - "node_modules/es6-promise": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", - "integrity": "sha512-CUD62/uqeE0L+EJeypOKuFfM56CFaH4vo+++J76bff0NkeQ2bBmWVCTNxL2hj9HeCYPkof6Gqea0BSeK17gBzA==" - }, "node_modules/esbuild": { "version": "0.14.22", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.22.tgz", @@ -5752,14 +5711,14 @@ } }, "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", + "body-parser": "1.20.1", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", @@ -5778,7 +5737,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", @@ -5897,9 +5856,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -6047,15 +6006,15 @@ } }, "node_modules/flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true, "funding": [ { @@ -6104,17 +6063,17 @@ } }, "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=12" + "node": ">=6 <7 || >=8" } }, "node_modules/fs-minipass": { @@ -6208,9 +6167,9 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "dependencies": { "function-bind": "^1.1.1", @@ -6842,9 +6801,9 @@ "integrity": "sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==" }, "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", "dev": true }, "node_modules/ipaddr.js": { @@ -6891,9 +6850,9 @@ } }, "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -7128,9 +7087,9 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { "@babel/core": "^7.12.3", @@ -7211,9 +7170,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -7333,13 +7292,10 @@ "dev": true }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -7354,23 +7310,16 @@ ] }, "node_modules/jszip": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", - "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dependencies": { - "core-js": "~2.3.0", - "es6-promise": "~3.0.2", - "lie": "~3.1.0", + "lie": "~3.3.0", "pako": "~1.0.2", - "readable-stream": "~2.0.6" + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" } }, - "node_modules/jszip/node_modules/core-js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", - "integrity": "sha512-N41UFUZNqoTSGUSyL7kiStAkH31Hxq197A4Gp9MxTZfAd52pXod7VM7kWiRP0J0YpQDeaE4SLsb+2OGgtgvUEw==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js." - }, "node_modules/jszip/node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -7505,6 +7454,17 @@ "source-map-support": "^0.5.5" } }, + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/karma/node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -7704,9 +7664,9 @@ } }, "node_modules/lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "dependencies": { "immediate": "~3.0.5" } @@ -7845,16 +7805,16 @@ } }, "node_modules/log4js": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.5.2.tgz", - "integrity": "sha512-DXtpNtt+KDOMT7RHUDIur/WsSA3rntlUh9Zg4XCdV42wUuMmbFkl38+LZ92Z5QvQA7mD5kAVkLiBSEH/tvUB8A==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", + "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", "dev": true, "dependencies": { - "date-format": "^4.0.10", + "date-format": "^4.0.14", "debug": "^4.3.4", - "flatted": "^3.2.5", + "flatted": "^3.2.7", "rfdc": "^1.3.0", - "streamroller": "^3.1.1" + "streamroller": "^3.1.3" }, "engines": { "node": ">=8.0" @@ -8120,10 +8080,13 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/minipass": { "version": "3.3.4", @@ -8420,9 +8383,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, "node_modules/nopt": { @@ -8547,9 +8510,9 @@ } }, "node_modules/npm-registry-fetch/node_modules/@npmcli/fs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", - "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, "dependencies": { "@gar/promisify": "^1.1.3", @@ -8560,9 +8523,9 @@ } }, "node_modules/npm-registry-fetch/node_modules/@npmcli/move-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", - "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", "dev": true, "dependencies": { "mkdirp": "^1.0.4", @@ -8591,9 +8554,9 @@ } }, "node_modules/npm-registry-fetch/node_modules/cacache": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", - "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dev": true, "dependencies": { "@npmcli/fs": "^2.1.0", @@ -8613,7 +8576,7 @@ "rimraf": "^3.0.2", "ssri": "^9.0.0", "tar": "^6.1.11", - "unique-filename": "^1.1.1" + "unique-filename": "^2.0.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" @@ -8653,18 +8616,18 @@ } }, "node_modules/npm-registry-fetch/node_modules/lru-cache": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz", - "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", "dev": true, "engines": { "node": ">=12" } }, "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", - "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, "dependencies": { "agentkeepalive": "^4.2.1", @@ -8689,9 +8652,9 @@ } }, "node_modules/npm-registry-fetch/node_modules/make-fetch-happen/node_modules/minipass-fetch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "dependencies": { "minipass": "^3.1.6", @@ -8743,6 +8706,30 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-registry-fetch/node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -8826,14 +8813,14 @@ } }, "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, "engines": { @@ -9308,14 +9295,14 @@ } }, "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", "dev": true, "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" }, "engines": { "node": ">= 0.12.0" @@ -9361,9 +9348,9 @@ } }, "node_modules/postcss-attribute-case-insensitive": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.1.tgz", - "integrity": "sha512-wrt2VndqSLJpyBRNz9OmJcgnhI9MaongeWgapdBuUMu2a/KNJ8SENesG4SdiTnQwGO9b1VKbTWYAfCPeokLqZQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.10" @@ -9376,13 +9363,13 @@ "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.3" + "postcss": "^8.2" } }, "node_modules/postcss-color-functional-notation": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.3.tgz", - "integrity": "sha512-5fbr6FzFzjwHXKsVnkmEYrJYG8VNNzvD1tAXaPPWR97S6rhKI5uh2yOfV5TAzhDkZoq4h+chxEplFDc8GeyFtw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9395,7 +9382,7 @@ "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.4" + "postcss": "^8.2" } }, "node_modules/postcss-color-hex-alpha": { @@ -9418,9 +9405,9 @@ } }, "node_modules/postcss-color-rebeccapurple": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.0.tgz", - "integrity": "sha512-1jtE5AKnZcKq4pjOrltFHcbEM2/IvtbD1OdhZ/wqds18//bh0UmQkffcCkzDJU+/vGodfIsVQeKn+45CJvX9Bw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9433,7 +9420,7 @@ "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.3" + "postcss": "^8.2" } }, "node_modules/postcss-custom-media": { @@ -9456,9 +9443,9 @@ } }, "node_modules/postcss-custom-properties": { - "version": "12.1.8", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.8.tgz", - "integrity": "sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA==", + "version": "12.1.9", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.9.tgz", + "integrity": "sha512-/E7PRvK8DAVljBbeWrcEQJPG72jaImxF3vvCNFwv9cC8CzigVoNIpeyfnJzphnN3Fd8/auBf5wvkw6W9MfmTyg==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9471,7 +9458,7 @@ "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.4" + "postcss": "^8.2" } }, "node_modules/postcss-custom-selectors": { @@ -9494,24 +9481,28 @@ } }, "node_modules/postcss-dir-pseudo-class": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz", - "integrity": "sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.9" + "postcss-selector-parser": "^6.0.10" }, "engines": { "node": "^12 || ^14 || >=16" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, "peerDependencies": { - "postcss": "^8.4" + "postcss": "^8.2" } }, "node_modules/postcss-double-position-gradients": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz", - "integrity": "sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", "dev": true, "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -9520,8 +9511,12 @@ "engines": { "node": "^12 || ^14 || >=16" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, "peerDependencies": { - "postcss": "^8.4" + "postcss": "^8.2" } }, "node_modules/postcss-env-function": { @@ -9579,21 +9574,25 @@ } }, "node_modules/postcss-gap-properties": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz", - "integrity": "sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", "dev": true, "engines": { "node": "^12 || ^14 || >=16" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, "peerDependencies": { - "postcss": "^8.4" + "postcss": "^8.2" } }, "node_modules/postcss-image-set-function": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz", - "integrity": "sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9601,8 +9600,12 @@ "engines": { "node": "^12 || ^14 || >=16" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, "peerDependencies": { - "postcss": "^8.4" + "postcss": "^8.2" } }, "node_modules/postcss-import": { @@ -9632,9 +9635,9 @@ } }, "node_modules/postcss-lab-function": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.0.tgz", - "integrity": "sha512-Zb1EO9DGYfa3CP8LhINHCcTTCTLI+R3t7AX2mKsDzdgVQ/GkCpHOTgOr6HBHslP7XDdVbqgHW5vvRPMdVANQ8w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", "dev": true, "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -9648,7 +9651,7 @@ "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.4" + "postcss": "^8.2" } }, "node_modules/postcss-loader": { @@ -9757,9 +9760,9 @@ } }, "node_modules/postcss-nesting": { - "version": "10.1.10", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.10.tgz", - "integrity": "sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", "dev": true, "dependencies": { "@csstools/selector-specificity": "^2.0.0", @@ -9777,15 +9780,22 @@ } }, "node_modules/postcss-overflow-shorthand": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz", - "integrity": "sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { "node": "^12 || ^14 || >=16" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, "peerDependencies": { - "postcss": "^8.4" + "postcss": "^8.2" } }, "node_modules/postcss-page-break": { @@ -9798,9 +9808,9 @@ } }, "node_modules/postcss-place": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.4.tgz", - "integrity": "sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -9808,8 +9818,12 @@ "engines": { "node": "^12 || ^14 || >=16" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, "peerDependencies": { - "postcss": "^8.4" + "postcss": "^8.2" } }, "node_modules/postcss-preset-env": { @@ -9860,9 +9874,9 @@ } }, "node_modules/postcss-pseudo-class-any-link": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.5.tgz", - "integrity": "sha512-nSGKGScwFTaaV8Cyi27W9FegX3l3b7tmNxujxmykI/j3++cBAiq8fTUAU3ZK0s2aneN2T8cTUvKdNedzp3JIEA==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.10" @@ -9931,9 +9945,9 @@ } }, "node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/promise-inflight": { "version": "1.0.1", @@ -10002,9 +10016,9 @@ } }, "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "dependencies": { "side-channel": "^1.0.4" @@ -10092,15 +10106,16 @@ } }, "node_modules/readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dependencies": { "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -10129,9 +10144,9 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, "dependencies": { "regenerate": "^1.4.2" @@ -10179,15 +10194,15 @@ } }, "node_modules/regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", + "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", "dev": true, "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.0.0" }, @@ -10196,15 +10211,15 @@ } }, "node_modules/regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", "dev": true }, "node_modules/regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -10397,9 +10412,9 @@ } }, "node_modules/rxjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", "dependencies": { "tslib": "^2.1.0" } @@ -10407,8 +10422,7 @@ "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/safer-buffer": { "version": "2.1.2", @@ -10529,9 +10543,9 @@ "dev": true }, "node_modules/selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "dependencies": { "node-forge": "^1" @@ -10720,6 +10734,11 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -10802,9 +10821,9 @@ } }, "node_modules/socket.io": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz", - "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", + "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", "dev": true, "dependencies": { "accepts": "~1.3.4", @@ -10812,7 +10831,7 @@ "debug": "~4.3.2", "engine.io": "~6.2.0", "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.0.4" + "socket.io-parser": "~4.2.0" }, "engines": { "node": ">=10.0.0" @@ -10825,13 +10844,12 @@ "dev": true }, "node_modules/socket.io-parser": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", - "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", "dev": true, "dependencies": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" }, "engines": { @@ -10850,12 +10868,12 @@ } }, "node_modules/socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, "dependencies": { - "ip": "^1.1.5", + "ip": "^2.0.0", "smart-buffer": "^4.2.0" }, "engines": { @@ -11006,35 +11024,6 @@ "node": ">= 6" } }, - "node_modules/spdy-transport/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/spdy-transport/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -11063,14 +11052,14 @@ } }, "node_modules/streamroller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.1.tgz", - "integrity": "sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", + "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", "dev": true, "dependencies": { - "date-format": "^4.0.10", + "date-format": "^4.0.14", "debug": "^4.3.4", - "fs-extra": "^10.1.0" + "fs-extra": "^8.1.0" }, "engines": { "node": ">=8.0" @@ -11094,9 +11083,12 @@ } }, "node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } }, "node_modules/string-width": { "version": "4.2.3", @@ -11235,14 +11227,14 @@ } }, "node_modules/terser": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.11.0.tgz", - "integrity": "sha512-uCA9DLanzzWSsN1UirKwylhhRz3aKPInlfmpGfw8VN6jHsAtu8HJtIpeeHHK23rxnE/cDc+yvmq5wqkIC6Kn0A==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "dependencies": { + "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", "source-map-support": "~0.5.20" }, "bin": { @@ -11253,16 +11245,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "terser": "^5.14.1" }, "engines": { "node": ">= 10.13.0" @@ -11518,9 +11510,9 @@ } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, "engines": { "node": ">=4" @@ -11545,12 +11537,12 @@ } }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "engines": { - "node": ">= 10.0.0" + "node": ">= 4.0.0" } }, "node_modules/unpipe": { @@ -11563,9 +11555,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", - "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, "funding": [ { @@ -12113,12 +12105,12 @@ } }, "node_modules/yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", + "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", "dev": true, "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", @@ -12131,18 +12123,18 @@ } }, "node_modules/yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "engines": { "node": ">=12" } }, "node_modules/zone.js": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.6.tgz", - "integrity": "sha512-umJqFtKyZlPli669gB1gOrRE9hxUUGkZr7mo878z+NEBJZZixJkKeVYfnoLa7g25SseUDc92OZrMKKHySyJrFg==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", + "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", "dependencies": { "tslib": "^2.3.0" } @@ -12160,12 +12152,12 @@ } }, "@angular-devkit/architect": { - "version": "0.1303.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.8.tgz", - "integrity": "sha512-2zaNejnfZbq+fFOVgkmWkh+2UmK/CBDbWTq7VJHopJLtUuf7pFNvRk73s9xayuJ3Lt2/sY17Mykku2LziBF89A==", + "version": "0.1303.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.9.tgz", + "integrity": "sha512-RMHqCGDxbLqT+250A0a8vagsoTdqGjAxjhrvTeq7PJmClI7uJ/uA1Fs18+t85toIqVKn2hovdY9sNf42nBDD2Q==", "dev": true, "requires": { - "@angular-devkit/core": "13.3.8", + "@angular-devkit/core": "13.3.9", "rxjs": "6.6.7" }, "dependencies": { @@ -12187,15 +12179,15 @@ } }, "@angular-devkit/build-angular": { - "version": "13.3.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.8.tgz", - "integrity": "sha512-5nWqb58oLcWoBoAECqHiUlOV23/J/4W1a9aqaFQcN6bThRzoy54S69zUuQREnBE36elDrSxhn2Y34poqYe8iKQ==", + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.9.tgz", + "integrity": "sha512-1LqcMizeabx3yOkx3tptCSAoEhG6nO6hPgI/B3EJ07G/ZcoxunMWSeN3P3zT10dZMEHhcxl+8cSStSXaXj9hfA==", "dev": true, "requires": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1303.8", - "@angular-devkit/build-webpack": "0.1303.8", - "@angular-devkit/core": "13.3.8", + "@angular-devkit/architect": "0.1303.9", + "@angular-devkit/build-webpack": "0.1303.9", + "@angular-devkit/core": "13.3.9", "@babel/core": "7.16.12", "@babel/generator": "7.16.8", "@babel/helper-annotate-as-pure": "7.16.7", @@ -12206,7 +12198,7 @@ "@babel/runtime": "7.16.7", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.6", - "@ngtools/webpack": "13.3.8", + "@ngtools/webpack": "13.3.9", "ansi-colors": "4.1.1", "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", @@ -12248,7 +12240,7 @@ "source-map-support": "0.5.21", "stylus": "0.56.0", "stylus-loader": "6.2.0", - "terser": "5.11.0", + "terser": "5.14.2", "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.3.1", @@ -12285,12 +12277,12 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.1303.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.8.tgz", - "integrity": "sha512-N3DehEQ4uARricbYTuASBCnHdrtKFIMZpl6A4GB5DKQILF7KctsaAz0QvAiA8y4ojhSIRvXK5XVWklX3QVlJIw==", + "version": "0.1303.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.9.tgz", + "integrity": "sha512-CdYXvAN1xAik8FyfdF1B8Nt1B/1aBvkZr65AUVFOmP6wuVzcdn78BMZmZD42srYbV2449sWi5Vyo/j0a/lfJww==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1303.8", + "@angular-devkit/architect": "0.1303.9", "rxjs": "6.6.7" }, "dependencies": { @@ -12312,9 +12304,9 @@ } }, "@angular-devkit/core": { - "version": "13.3.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.8.tgz", - "integrity": "sha512-PCmfMkErpnH429l1cANak4PnCpAscqAubS6Dw83++cS34ht0/bgKRb2zSyBuB2Ka6kw7wAZ3fCyTcVvyfxVFEg==", + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.9.tgz", + "integrity": "sha512-XqCuIWyoqIsLABjV3GQL/+EiBCt3xVPPtNp3Mg4gjBsDLW7PEnvbb81yGkiZQmIsq4EIyQC/6fQa3VdjsCshGg==", "dev": true, "requires": { "ajv": "8.9.0", @@ -12343,12 +12335,12 @@ } }, "@angular-devkit/schematics": { - "version": "13.3.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.8.tgz", - "integrity": "sha512-7mTlxZhS9uHxtmOiZeSMkKdIE5r5FmQ/1IBhRBfD5XDQdipQkUJyOtclPO/+t/AJIG0+LYt9+7X5hHUr7W3kZA==", + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.9.tgz", + "integrity": "sha512-oNHLNtwbtEJ0dYPPXy1NpfRdSiFsYBl7+ozJklLgNV/AEOxlSi2qlVx6DoxNVjz5XgQ7Z+eoVDMw7ewGPnGSyA==", "dev": true, "requires": { - "@angular-devkit/core": "13.3.8", + "@angular-devkit/core": "13.3.9", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -12381,15 +12373,15 @@ } }, "@angular/cli": { - "version": "13.3.8", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.8.tgz", - "integrity": "sha512-dsvum8oGnbgX5mLh9CDzP1ip2UGDZdppPD6np2XXhqX75DfJxRlgl4u3NxBSnDmeyhIGTsGV0HKAxoB5EOoHcw==", + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.9.tgz", + "integrity": "sha512-b64mfB7A8vw5QmopEnkCVhGH8zDX5FrQVKKCRlK1dO3GEtAdfhFJb5J7TBbCOwp1XfYJ5jl+biNQy4HoX5HQPw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1303.8", - "@angular-devkit/core": "13.3.8", - "@angular-devkit/schematics": "13.3.8", - "@schematics/angular": "13.3.8", + "@angular-devkit/architect": "0.1303.9", + "@angular-devkit/core": "13.3.9", + "@angular-devkit/schematics": "13.3.9", + "@schematics/angular": "13.3.9", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.3", @@ -12442,21 +12434,21 @@ }, "dependencies": { "@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", + "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/generator": "^7.19.3", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helpers": "^7.19.0", + "@babel/parser": "^7.19.3", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.3", + "@babel/types": "^7.19.3", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -12473,25 +12465,25 @@ } }, "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.19.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz", + "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", "dev": true, "requires": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.19.4", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" } }, "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } }, "@jridgewell/gen-mapping": { @@ -12506,9 +12498,9 @@ } }, "magic-string": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", - "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", "dev": true, "requires": { "sourcemap-codec": "^1.4.8" @@ -12572,9 +12564,9 @@ } }, "@babel/compat-data": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz", - "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", + "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", "dev": true }, "@babel/core": { @@ -12643,24 +12635,24 @@ } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz", - "integrity": "sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "dev": true, "requires": { "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" } }, "@babel/helper-compilation-targets": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", - "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", + "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.6", + "@babel/compat-data": "^7.19.3", "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", + "browserslist": "^4.21.3", "semver": "^6.3.0" }, "dependencies": { @@ -12673,17 +12665,17 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", - "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", + "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6" }, "dependencies": { @@ -12699,9 +12691,9 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -12720,15 +12712,13 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", @@ -12744,9 +12734,9 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", - "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true }, "@babel/helper-explode-assignable-expression": { @@ -12759,24 +12749,24 @@ } }, "@babel/helper-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", - "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" }, "dependencies": { "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } } } @@ -12791,12 +12781,12 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", - "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" } }, "@babel/helper-module-imports": { @@ -12809,30 +12799,30 @@ } }, "@babel/helper-module-transforms": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", - "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", + "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", "@babel/helper-simple-access": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" }, "dependencies": { "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } } } @@ -12847,21 +12837,21 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", - "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz", - "integrity": "sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-wrap-function": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" }, "dependencies": { "@babel/helper-annotate-as-pure": { @@ -12876,34 +12866,34 @@ } }, "@babel/helper-replace-supers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", - "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" } }, "@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", + "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.19.4" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz", - "integrity": "sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" } }, "@babel/helper-split-export-declaration": { @@ -12915,10 +12905,16 @@ "@babel/types": "^7.18.6" } }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true }, "@babel/helper-validator-option": { @@ -12928,50 +12924,50 @@ "dev": true }, "@babel/helper-wrap-function": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz", - "integrity": "sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" }, "dependencies": { "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } } } }, "@babel/helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", - "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz", + "integrity": "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==", "dev": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.4", + "@babel/types": "^7.19.4" }, "dependencies": { "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } } } @@ -12988,9 +12984,9 @@ } }, "@babel/parser": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", - "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz", + "integrity": "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -13003,14 +12999,14 @@ } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz", - "integrity": "sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" } }, "@babel/plugin-proposal-async-generator-functions": { @@ -13056,12 +13052,12 @@ } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz", - "integrity": "sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, @@ -13076,12 +13072,12 @@ } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz", - "integrity": "sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, @@ -13106,16 +13102,16 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz", - "integrity": "sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", + "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/compat-data": "^7.19.4", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.6" + "@babel/plugin-transform-parameters": "^7.18.8" } }, "@babel/plugin-proposal-optional-catch-binding": { @@ -13129,13 +13125,13 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz", - "integrity": "sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, @@ -13338,26 +13334,27 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz", - "integrity": "sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", + "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-classes": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz", - "integrity": "sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", + "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, @@ -13374,21 +13371,21 @@ } }, "@babel/plugin-transform-computed-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz", - "integrity": "sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-destructuring": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz", - "integrity": "sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", + "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-dotall-regex": { @@ -13402,12 +13399,12 @@ } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz", - "integrity": "sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-exponentiation-operator": { @@ -13421,32 +13418,32 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz", - "integrity": "sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz", - "integrity": "sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz", - "integrity": "sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-member-expression-literals": { @@ -13482,14 +13479,14 @@ } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz", - "integrity": "sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", + "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } @@ -13505,13 +13502,13 @@ } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-new-target": { @@ -13534,9 +13531,9 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz", - "integrity": "sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -13602,13 +13599,13 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz", - "integrity": "sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" } }, "@babel/plugin-transform-sticky-regex": { @@ -13621,30 +13618,30 @@ } }, "@babel/plugin-transform-template-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz", - "integrity": "sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz", - "integrity": "sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", - "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-unicode-regex": { @@ -13781,30 +13778,30 @@ } }, "@babel/traverse": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", - "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz", + "integrity": "sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/generator": "^7.19.4", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/parser": "^7.19.4", + "@babel/types": "^7.19.4", "debug": "^4.1.0", "globals": "^11.1.0" }, "dependencies": { "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.19.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz", + "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", "dev": true, "requires": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.19.4", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" } @@ -13823,12 +13820,13 @@ } }, "@babel/types": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", - "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", + "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } }, @@ -13848,9 +13846,9 @@ } }, "@csstools/selector-specificity": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz", - "integrity": "sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", + "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", "dev": true, "requires": {} }, @@ -13917,9 +13915,9 @@ } }, "@jridgewell/resolve-uri": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz", - "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "dev": true }, "@jridgewell/set-array": { @@ -13928,6 +13926,29 @@ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, "@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", @@ -13935,19 +13956,19 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.16", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.16.tgz", + "integrity": "sha512-LCQ+NeThyJ4k1W2d+vIKdxuSt9R3pQSZ4P92m7EakaYuXcVWbHuT5bjNcqLd4Rdgi6xYWYDvBJZJLZSLanjDcA==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "@ngtools/webpack": { - "version": "13.3.8", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.8.tgz", - "integrity": "sha512-meuXHb1zQ5lz7Uj7kGYTgjd9Tknsi/0jJxs+12nz06h0tifIyIoGU01YA3mUj4/bntIjfWif35KGYP+23bbAVw==", + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.9.tgz", + "integrity": "sha512-wmgOI5sogAuilwBZJqCHVMjm2uhDxjdSmNLFx7eznwGDa6LjvjuATqCv2dVlftq0Y/5oZFVrg5NpyHt5kfZ8Cg==", "dev": true, "requires": {} }, @@ -14062,16 +14083,22 @@ } }, "@schematics/angular": { - "version": "13.3.8", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.8.tgz", - "integrity": "sha512-VKRTTNYX5OsaJ6sWlCIuU71qihV3ysNNJ49wqLedOlWm1v0GMwoyGMCTJk9OZab1rpo/tYfLTcUlYqP3l6GVDQ==", + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.9.tgz", + "integrity": "sha512-tm5wst7+Z8cOgOJ/4JVlYKOFCCOVnqKYFtYf0BIWq6RFBXcw6QqbGW1wXH8ASmuev4QZXKgqc7YKALPpYAKCeQ==", "dev": true, "requires": { - "@angular-devkit/core": "13.3.8", - "@angular-devkit/schematics": "13.3.8", + "@angular-devkit/core": "13.3.9", + "@angular-devkit/schematics": "13.3.9", "jsonc-parser": "3.0.0" } }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, "@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -14097,12 +14124,6 @@ "@types/node": "*" } }, - "@types/component-emitter": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", - "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", - "dev": true - }, "@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -14141,9 +14162,9 @@ "dev": true }, "@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", + "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", "dev": true, "requires": { "@types/estree": "*", @@ -14167,9 +14188,9 @@ "dev": true }, "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", "dev": true, "requires": { "@types/body-parser": "*", @@ -14179,9 +14200,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", "dev": true, "requires": { "@types/node": "*", @@ -14237,19 +14258,16 @@ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, - "@types/jszip": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@types/jszip/-/jszip-3.4.1.tgz", - "integrity": "sha512-TezXjmf3lj+zQ651r6hPqvSScqBLvyPI9FxdXBqpEwBijNGQ2NXpaFW/7joGzveYkKQUil7iiDHLo6LV71Pc0A==", - "dev": true, - "requires": { - "jszip": "*" - } + "@types/lzbase62": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/lzbase62/-/lzbase62-2.0.0.tgz", + "integrity": "sha512-u7nEkpDDQJl64NOoxowG6LCrfnkWI5ocmKeVTppO2mp+IUDMhKfJLtHCINBqA9+KvXstxEEbG8uxK/qNJ/D7Bg==", + "dev": true }, "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, "@types/msgpack-lite": { @@ -14268,9 +14286,9 @@ "dev": true }, "@types/pako": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.4.tgz", - "integrity": "sha512-Z+5bJSm28EXBSUJEgx29ioWeEEHUh6TiMkZHDhLwjc9wVFH+ressbkmX6waUZc5R3Gobn4Qu5llGxaoflZ+yhA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.0.tgz", + "integrity": "sha512-10+iaz93qR5WYxTo+PMifD5TSxiOtdRaxBf7INGGXMQgTCu8Z/7GYWYFUOS3q/G0nE5boj1r4FEB+WSy7s5gbA==", "dev": true }, "@types/parse-json": { @@ -14307,12 +14325,12 @@ } }, "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, "requires": { - "@types/mime": "^1", + "@types/mime": "*", "@types/node": "*" } }, @@ -14527,9 +14545,9 @@ } }, "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true }, "acorn-import-assertions": { @@ -14683,9 +14701,9 @@ "dev": true }, "are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, "requires": { "delegates": "^1.0.0", @@ -14702,21 +14720,6 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } } } }, @@ -14753,13 +14756,13 @@ "dev": true }, "autoprefixer": { - "version": "10.4.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", - "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "version": "10.4.12", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", + "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", "dev": true, "requires": { - "browserslist": "^4.20.3", - "caniuse-lite": "^1.0.30001335", + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001407", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -14814,13 +14817,13 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", "semver": "^6.1.1" }, "dependencies": { @@ -14833,12 +14836,12 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/helper-define-polyfill-provider": "^0.3.2", "core-js-compat": "^3.21.0" } }, @@ -14917,28 +14920,13 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } } } }, "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "requires": { "bytes": "3.1.2", @@ -14949,7 +14937,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.10.3", + "qs": "6.11.0", "raw-body": "2.5.1", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -15012,15 +15000,15 @@ } }, "browserslist": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz", - "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001359", - "electron-to-chromium": "^1.4.172", - "node-releases": "^2.0.5", - "update-browserslist-db": "^1.0.4" + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" } }, "buffer": { @@ -15105,9 +15093,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001363", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz", - "integrity": "sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg==", + "version": "1.0.30001419", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001419.tgz", + "integrity": "sha512-aFO1r+g6R7TW+PNQxKzjITwLOyDhVRLjW0LcwS/HCZGUUKTGNp9+IwLC4xyDSZBygVL/mxaFR3HIV6wEKQuSzw==", "dev": true }, "chalk": { @@ -15178,9 +15166,9 @@ } }, "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", "dev": true }, "cli-width": { @@ -15190,13 +15178,13 @@ "dev": true }, "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "requires": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, @@ -15256,12 +15244,6 @@ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -15380,13 +15362,10 @@ "dev": true }, "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "cookie": { "version": "0.4.2", @@ -15453,21 +15432,12 @@ "dev": true }, "core-js-compat": { - "version": "3.23.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.3.tgz", - "integrity": "sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw==", + "version": "3.25.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", + "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", "dev": true, "requires": { - "browserslist": "^4.21.0", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } + "browserslist": "^4.21.4" } }, "core-util-is": { @@ -15586,9 +15556,9 @@ } }, "crypto-js": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz", - "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" }, "css": { "version": "3.0.0", @@ -15688,9 +15658,9 @@ "dev": true }, "date-format": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.11.tgz", - "integrity": "sha512-VS20KRyorrbMCQmpdl2hg5KaOUsda1RbnsJg461FfrcyCUg+pkd0b40BSW4niQyTheww4DBXQnS7HwSrKkipLw==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true }, "debug": { @@ -15732,9 +15702,9 @@ } }, "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "requires": { "clone": "^1.0.2" @@ -15859,6 +15829,14 @@ "requires": { "ip": "^1.1.0", "safe-buffer": "^5.0.1" + }, + "dependencies": { + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + } } }, "dns-txt": { @@ -15926,9 +15904,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.177", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.177.tgz", - "integrity": "sha512-FYPir3NSBEGexSZUEeht81oVhHfLFl6mhUKSkjHN/iB/TwEIt/WHQrqVGfTLN5gQxwJCQkIJBe05eOXjI7omgg==", + "version": "1.4.281", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.281.tgz", + "integrity": "sha512-yer0w5wCYdFoZytfmbNhwiGI/3cW06+RV7E23ln4490DVMxs7PvYpbsrSmAiBn/V6gode8wvJlST2YfWgvzWIg==", "dev": true }, "emoji-regex": { @@ -16054,11 +16032,6 @@ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "dev": true }, - "es6-promise": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", - "integrity": "sha512-CUD62/uqeE0L+EJeypOKuFfM56CFaH4vo+++J76bff0NkeQ2bBmWVCTNxL2hj9HeCYPkof6Gqea0BSeK17gBzA==" - }, "esbuild": { "version": "0.14.22", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.22.tgz", @@ -16336,14 +16309,14 @@ } }, "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", + "body-parser": "1.20.1", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", @@ -16362,7 +16335,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", @@ -16454,9 +16427,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -16576,15 +16549,15 @@ } }, "flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, "forwarded": { @@ -16606,14 +16579,14 @@ "dev": true }, "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "fs-minipass": { @@ -16685,9 +16658,9 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -17165,9 +17138,9 @@ "integrity": "sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==" }, "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", "dev": true }, "ipaddr.js": { @@ -17202,9 +17175,9 @@ } }, "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "dev": true, "requires": { "has": "^1.0.3" @@ -17358,9 +17331,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "requires": { "@babel/core": "^7.12.3", @@ -17426,9 +17399,9 @@ } }, "istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -17520,13 +17493,12 @@ "dev": true }, "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" + "graceful-fs": "^4.1.6" } }, "jsonparse": { @@ -17536,22 +17508,16 @@ "dev": true }, "jszip": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", - "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "requires": { - "core-js": "~2.3.0", - "es6-promise": "~3.0.2", - "lie": "~3.1.0", + "lie": "~3.3.0", "pako": "~1.0.2", - "readable-stream": "~2.0.6" + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" }, "dependencies": { - "core-js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", - "integrity": "sha512-N41UFUZNqoTSGUSyL7kiStAkH31Hxq197A4Gp9MxTZfAd52pXod7VM7kWiRP0J0YpQDeaE4SLsb+2OGgtgvUEw==" - }, "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -17591,6 +17557,17 @@ "yargs": "^16.1.1" }, "dependencies": { + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -17804,9 +17781,9 @@ } }, "lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "requires": { "immediate": "~3.0.5" } @@ -17911,16 +17888,16 @@ } }, "log4js": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.5.2.tgz", - "integrity": "sha512-DXtpNtt+KDOMT7RHUDIur/WsSA3rntlUh9Zg4XCdV42wUuMmbFkl38+LZ92Z5QvQA7mD5kAVkLiBSEH/tvUB8A==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", + "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", "dev": true, "requires": { - "date-format": "^4.0.10", + "date-format": "^4.0.14", "debug": "^4.3.4", - "flatted": "^3.2.5", + "flatted": "^3.2.7", "rfdc": "^1.3.0", - "streamroller": "^3.1.1" + "streamroller": "^3.1.3" }, "dependencies": { "debug": { @@ -18113,9 +18090,9 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, "minipass": { @@ -18343,9 +18320,9 @@ "optional": true }, "node-releases": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, "nopt": { @@ -18443,9 +18420,9 @@ }, "dependencies": { "@npmcli/fs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", - "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, "requires": { "@gar/promisify": "^1.1.3", @@ -18453,9 +18430,9 @@ } }, "@npmcli/move-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", - "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", "dev": true, "requires": { "mkdirp": "^1.0.4", @@ -18478,9 +18455,9 @@ } }, "cacache": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", - "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dev": true, "requires": { "@npmcli/fs": "^2.1.0", @@ -18500,7 +18477,7 @@ "rimraf": "^3.0.2", "ssri": "^9.0.0", "tar": "^6.1.11", - "unique-filename": "^1.1.1" + "unique-filename": "^2.0.0" } }, "glob": { @@ -18528,15 +18505,15 @@ } }, "lru-cache": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz", - "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", "dev": true }, "make-fetch-happen": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", - "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, "requires": { "agentkeepalive": "^4.2.1", @@ -18558,9 +18535,9 @@ }, "dependencies": { "minipass-fetch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "requires": { "encoding": "^0.1.13", @@ -18599,6 +18576,24 @@ "requires": { "minipass": "^3.1.1" } + }, + "unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "requires": { + "unique-slug": "^3.0.0" + } + }, + "unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } } } }, @@ -18661,14 +18656,14 @@ "dev": true }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, @@ -19022,14 +19017,14 @@ } }, "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", "dev": true, "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" }, "dependencies": { "debug": { @@ -19064,18 +19059,18 @@ } }, "postcss-attribute-case-insensitive": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.1.tgz", - "integrity": "sha512-wrt2VndqSLJpyBRNz9OmJcgnhI9MaongeWgapdBuUMu2a/KNJ8SENesG4SdiTnQwGO9b1VKbTWYAfCPeokLqZQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" } }, "postcss-color-functional-notation": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.3.tgz", - "integrity": "sha512-5fbr6FzFzjwHXKsVnkmEYrJYG8VNNzvD1tAXaPPWR97S6rhKI5uh2yOfV5TAzhDkZoq4h+chxEplFDc8GeyFtw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -19091,9 +19086,9 @@ } }, "postcss-color-rebeccapurple": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.0.tgz", - "integrity": "sha512-1jtE5AKnZcKq4pjOrltFHcbEM2/IvtbD1OdhZ/wqds18//bh0UmQkffcCkzDJU+/vGodfIsVQeKn+45CJvX9Bw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -19109,9 +19104,9 @@ } }, "postcss-custom-properties": { - "version": "12.1.8", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.8.tgz", - "integrity": "sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA==", + "version": "12.1.9", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.9.tgz", + "integrity": "sha512-/E7PRvK8DAVljBbeWrcEQJPG72jaImxF3vvCNFwv9cC8CzigVoNIpeyfnJzphnN3Fd8/auBf5wvkw6W9MfmTyg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -19127,18 +19122,18 @@ } }, "postcss-dir-pseudo-class": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz", - "integrity": "sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.9" + "postcss-selector-parser": "^6.0.10" } }, "postcss-double-position-gradients": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz", - "integrity": "sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -19180,16 +19175,16 @@ "requires": {} }, "postcss-gap-properties": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz", - "integrity": "sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", "dev": true, "requires": {} }, "postcss-image-set-function": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz", - "integrity": "sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -19214,9 +19209,9 @@ "requires": {} }, "postcss-lab-function": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.0.tgz", - "integrity": "sha512-Zb1EO9DGYfa3CP8LhINHCcTTCTLI+R3t7AX2mKsDzdgVQ/GkCpHOTgOr6HBHslP7XDdVbqgHW5vvRPMdVANQ8w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -19285,9 +19280,9 @@ } }, "postcss-nesting": { - "version": "10.1.10", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.10.tgz", - "integrity": "sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", "dev": true, "requires": { "@csstools/selector-specificity": "^2.0.0", @@ -19295,11 +19290,13 @@ } }, "postcss-overflow-shorthand": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz", - "integrity": "sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", "dev": true, - "requires": {} + "requires": { + "postcss-value-parser": "^4.2.0" + } }, "postcss-page-break": { "version": "3.0.4", @@ -19309,9 +19306,9 @@ "requires": {} }, "postcss-place": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.4.tgz", - "integrity": "sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -19359,9 +19356,9 @@ } }, "postcss-pseudo-class-any-link": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.5.tgz", - "integrity": "sha512-nSGKGScwFTaaV8Cyi27W9FegX3l3b7tmNxujxmykI/j3++cBAiq8fTUAU3ZK0s2aneN2T8cTUvKdNedzp3JIEA==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" @@ -19406,9 +19403,9 @@ "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "promise-inflight": { "version": "1.0.1", @@ -19464,9 +19461,9 @@ "dev": true }, "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "requires": { "side-channel": "^1.0.4" @@ -19525,15 +19522,16 @@ } }, "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -19559,9 +19557,9 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, "requires": { "regenerate": "^1.4.2" @@ -19600,29 +19598,29 @@ } }, "regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", + "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", "dev": true, "requires": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", "dev": true }, "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -19756,9 +19754,9 @@ } }, "rxjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", "requires": { "tslib": "^2.1.0" } @@ -19766,8 +19764,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safer-buffer": { "version": "2.1.2", @@ -19847,9 +19844,9 @@ "dev": true }, "selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "requires": { "node-forge": "^1" @@ -20011,6 +20008,11 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -20071,9 +20073,9 @@ "dev": true }, "socket.io": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz", - "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", + "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -20081,7 +20083,7 @@ "debug": "~4.3.2", "engine.io": "~6.2.0", "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.0.4" + "socket.io-parser": "~4.2.0" } }, "socket.io-adapter": { @@ -20091,13 +20093,12 @@ "dev": true }, "socket.io-parser": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", - "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", "dev": true, "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" } }, @@ -20113,12 +20114,12 @@ } }, "socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, "requires": { - "ip": "^1.1.5", + "ip": "^2.0.0", "smart-buffer": "^4.2.0" } }, @@ -20236,21 +20237,6 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } } } }, @@ -20276,14 +20262,14 @@ "dev": true }, "streamroller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.1.tgz", - "integrity": "sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", + "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", "dev": true, "requires": { - "date-format": "^4.0.10", + "date-format": "^4.0.14", "debug": "^4.3.4", - "fs-extra": "^10.1.0" + "fs-extra": "^8.1.0" }, "dependencies": { "debug": { @@ -20298,9 +20284,12 @@ } }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } }, "string-width": { "version": "4.2.3", @@ -20395,28 +20384,28 @@ } }, "terser": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.11.0.tgz", - "integrity": "sha512-uCA9DLanzzWSsN1UirKwylhhRz3aKPInlfmpGfw8VN6jHsAtu8HJtIpeeHHK23rxnE/cDc+yvmq5wqkIC6Kn0A==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "requires": { + "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", "source-map-support": "~0.5.20" } }, "terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "terser": "^5.14.1" }, "dependencies": { "ajv": { @@ -20584,9 +20573,9 @@ "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true }, "unique-filename": { @@ -20608,9 +20597,9 @@ } }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, "unpipe": { @@ -20620,9 +20609,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", - "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -21007,12 +20996,12 @@ "dev": true }, "yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", + "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", "dev": true, "requires": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", @@ -21022,15 +21011,15 @@ } }, "yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true }, "zone.js": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.6.tgz", - "integrity": "sha512-umJqFtKyZlPli669gB1gOrRE9hxUUGkZr7mo878z+NEBJZZixJkKeVYfnoLa7g25SseUDc92OZrMKKHySyJrFg==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", + "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", "requires": { "tslib": "^2.3.0" } diff --git a/package.json b/package.json index 5e1ae0dd6..4e7edcad4 100644 --- a/package.json +++ b/package.json @@ -20,14 +20,14 @@ "@angular/platform-browser-dynamic": "^13.3.1", "@angular/router": "^13.3.1", "bcdice": "^3.6.0", - "crypto-js": "^3.3.0", + "crypto-js": "^4.1.1", "file-saver": "^2.0.5", "hammerjs": "^2.0.8", "js-yaml": "^4.1.0", - "jszip": "~3.1.5", + "jszip": "^3.10.1", "lzbase62": "^2.0.0", "msgpack-lite": "^0.1.26", - "pako": "^2.0.0", + "pako": "^2.0.4", "rxjs": "~7.5.0", "tslib": "^2.3.0", "vkbeautify": "^0.99.3", @@ -37,16 +37,16 @@ "@angular-devkit/build-angular": "~13.3.1", "@angular/cli": "^13.3.1", "@angular/compiler-cli": "^13.3.1", - "@types/crypto-js": "^4.0.1", - "@types/file-saver": "^2.0.1", - "@types/hammerjs": "^2.0.39", + "@types/crypto-js": "^4.1.1", + "@types/file-saver": "^2.0.5", + "@types/hammerjs": "^2.0.41", "@types/jasmine": "~3.10.0", "@types/jasminewd2": "^2.0.8", - "@types/js-yaml": "^4.0.0", - "@types/jszip": "^3.1.7", - "@types/msgpack-lite": "^0.1.7", + "@types/js-yaml": "^4.0.5", + "@types/lzbase62": "^2.0.0", + "@types/msgpack-lite": "^0.1.8", "@types/node": "^12.11.1", - "@types/pako": "^1.0.1", + "@types/pako": "^2.0.0", "@types/vkbeautify": "^0.99.2", "jasmine-core": "~4.0.0", "karma": "~6.3.0", From a66659df96e67eab79d35869a9965e5add48d16d Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 17 Oct 2022 00:53:32 +0900 Subject: [PATCH 121/161] =?UTF-8?q?refactor:=20import=E5=AE=9A=E7=BE=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/core/file-storage/file-archiver.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/class/core/file-storage/file-archiver.ts b/src/app/class/core/file-storage/file-archiver.ts index a4dee9ebd..80ccd75cc 100644 --- a/src/app/class/core/file-storage/file-archiver.ts +++ b/src/app/class/core/file-storage/file-archiver.ts @@ -1,5 +1,5 @@ import { saveAs } from 'file-saver'; -import * as JSZip from 'jszip/dist/jszip.min.js'; +import * as JSZip from 'jszip'; import { EventSystem } from '../system'; import { XmlUtil } from '../system/util/xml-util'; From c32d6bef08bcbbecec80631f5329ebb657d2fe75 Mon Sep 17 00:00:00 2001 From: TK11235 Date: Fri, 21 Oct 2022 00:58:07 +0900 Subject: [PATCH 122/161] =?UTF-8?q?refactor:=20=E3=83=80=E3=82=A4=E3=82=B9?= =?UTF-8?q?=E3=83=9C=E3=83=83=E3=83=88=E3=81=AE=E5=8B=95=E7=9A=84=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=83=9D=E3=83=BC=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/dice-bot.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/app/class/dice-bot.ts b/src/app/class/dice-bot.ts index 8d001fa36..d8f49b746 100644 --- a/src/app/class/dice-bot.ts +++ b/src/app/class/dice-bot.ts @@ -124,10 +124,12 @@ export class DiceBot extends GameObject { static async loadGameSystemAsync(gameType: string): Promise { return await DiceBot.queue.add(() => { - const id = this.diceBotInfos.some((info) => info.id === gameType) - ? gameType - : 'DiceBot'; - return DiceBot.loader.dynamicLoad(id); + const id = this.diceBotInfos.some(info => info.id === gameType) ? gameType : 'DiceBot'; + try { + return DiceBot.loader.getGameSystemClass(id); + } catch { + return DiceBot.loader.dynamicLoad(id); + } }); } From 6ea2cd7f6b50529cccc3b0e3929e3d4614c95bf3 Mon Sep 17 00:00:00 2001 From: zeteticl Date: Mon, 24 Oct 2022 14:55:23 +0900 Subject: [PATCH 123/161] =?UTF-8?q?fix:=20=E3=83=A1=E3=83=8B=E3=83=A5?= =?UTF-8?q?=E3=83=BC=E3=83=91=E3=83=8D=E3=83=AB=E3=81=AE=E4=B8=8D=E8=A6=81?= =?UTF-8?q?=E3=81=AA=E3=83=9C=E3=82=BF=E3=83=B3=E3=82=92=E9=9D=9E=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E3=81=AB=E3=81=99=E3=82=8B=20#104?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/component/ui-panel/ui-panel.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/component/ui-panel/ui-panel.component.html b/src/app/component/ui-panel/ui-panel.component.html index 80e6077c0..a9630570a 100644 --- a/src/app/component/ui-panel/ui-panel.component.html +++ b/src/app/component/ui-panel/ui-panel.component.html @@ -2,7 +2,7 @@ [style.left.px]="left" [style.top.px]="top" [style.width.px]="width" [style.height.px]="height" [draggable.stack]="'.draggable-panel'" appDraggable appResizable #draggablePanel>
-
+
From 42c7c3a07a70e3f7ba15b6f78f16078d5b20584a Mon Sep 17 00:00:00 2001 From: TK11235 Date: Mon, 24 Oct 2022 22:57:30 +0900 Subject: [PATCH 124/161] =?UTF-8?q?feat:=20=E3=83=91=E3=83=8D=E3=83=ABUI?= =?UTF-8?q?=E3=81=AE=E3=83=9C=E3=82=BF=E3=83=B3=E8=A1=A8=E7=A4=BA=E3=82=92?= =?UTF-8?q?=E3=83=97=E3=83=AD=E3=83=91=E3=83=86=E3=82=A3=E3=81=A7=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/app.component.html | 2 +- src/app/component/ui-panel/ui-panel.component.html | 2 +- src/app/component/ui-panel/ui-panel.component.ts | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/app/app.component.html b/src/app/app.component.html index d66bfd47f..366294fc8 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,7 +1,7 @@
- +